root / drupal7 / sites / all / modules / commerce / commerce.api.php @ 3aa14731
1 |
<?php
|
---|---|
2 |
|
3 |
/**
|
4 |
* @file
|
5 |
* This file contains no working PHP code; it exists to provide additional
|
6 |
* documentation for doxygen as well as to document hooks in the standard
|
7 |
* Drupal manner.
|
8 |
*/
|
9 |
|
10 |
/**
|
11 |
* Defines currencies available to the Commerce currency formatting and price APIs.
|
12 |
*
|
13 |
* By default Drupal Commerce defines all actively traded currencies according
|
14 |
* to ISO 4217. Additional currencies may be added by modules that depend on
|
15 |
* alternate or pseudo-currency definitions.
|
16 |
*
|
17 |
* @return
|
18 |
* An array of currency data arrays keyed by three character currency codes.
|
19 |
* Currency data arrays should include:
|
20 |
* - code: The uppercase alphabetic currency code. For example USD.
|
21 |
* - numeric_code: The numeric currency code. According to ISO4217 this code
|
22 |
* consists of three digits and first digit can be a zero.
|
23 |
* - symbol: The currency symbol. For example $.
|
24 |
* - name: The name of the currency. Translatable.
|
25 |
* - symbol_placement: Defines where the currency symbol has to be placed for
|
26 |
* display. Allowed values: before, after, hidden.
|
27 |
* - symbol_spacer: The spacer to put between the price amount and a currency
|
28 |
* symbol that appears after the amount; defaults to ' '.
|
29 |
* - code_placement: Defines where the currency code has to be placed for
|
30 |
* display. Allowed values: before, after, hidden.
|
31 |
* - code_spacer: The spacer to put between the price amount and currency code
|
32 |
* whether the code is displayed before or after the amount; defaults to ' '.
|
33 |
* - minor_unit: Name of the minor unit of the currency. For example Cent.
|
34 |
* Translatable
|
35 |
* - major_unit: Name of the major unit of the currency. For example Dollar.
|
36 |
* Translatable
|
37 |
* - rounding_step: Defines which stepping has to is used for price rounding.
|
38 |
* For example Swiss Francs use a rounding_step of 0.05. This means a
|
39 |
* price like 10.93 is converted to 10.95. Currently only the steps
|
40 |
* 0.5,0.05... and 0.2, 0.02 ... are supported. This value has to be
|
41 |
* defined as string, otherwise the rounding results can be unpredictable.
|
42 |
* Default: 0 (no special rounding)
|
43 |
* - decimals: The number of decimals to display.
|
44 |
* Default: 2
|
45 |
* - thousands_separator: The char to split the value in groups of thousand.
|
46 |
* Default: ,
|
47 |
* - decimal_separator: The char to split the integer from the decimal part.
|
48 |
* Default: .
|
49 |
* - format_callback: Custom callback function to format a price value.
|
50 |
* - conversion_callback: Custom callback function to convert a price amount
|
51 |
* from one currency into another.
|
52 |
* - conversion_rate: The conversion rate of this currency calculated against
|
53 |
* the base currency, expressed as a decimal value denoting the value of
|
54 |
* one major unit of this currency when converted to the base currency.
|
55 |
* Default: 1
|
56 |
*
|
57 |
* @see hook_commerce_currency_info_alter()
|
58 |
*/
|
59 |
function hook_commerce_currency_info() { |
60 |
return array ( |
61 |
'CHF' => array( |
62 |
'code' => 'CHF', |
63 |
'numeric_code' => '756', |
64 |
'symbol' => 'Fr.', |
65 |
'name' => t('Swiss Franc'), |
66 |
'symbol_placement' => 'before', |
67 |
'code_placement' => 'before', |
68 |
'minor_unit' => t('Rappen'), |
69 |
'major_unit' => t('Franc'), |
70 |
'rounding_step' => '0.05', |
71 |
), |
72 |
); |
73 |
} |
74 |
|
75 |
/**
|
76 |
* Allows modules to alter Commerce currency definitions.
|
77 |
*
|
78 |
* By default Commerce provides all active currencies according to ISO 4217.
|
79 |
* This hook allows you to change the formatting properties of existing
|
80 |
* definitions.
|
81 |
*
|
82 |
* Additionally, because every currency's default conversion rate is 1, this
|
83 |
* hook can be used to populate currency conversion rates with meaningful
|
84 |
* values. Conversion rates can be calculated using any currency as the base
|
85 |
* currency as long as the same base currency is used for every rate.
|
86 |
*
|
87 |
* @see hook_commerce_currency_info()
|
88 |
*/
|
89 |
function hook_commerce_currency_info_alter(&$currencies, $langcode) { |
90 |
$currencies['CHF']['code_placement'] = 'after'; |
91 |
} |
92 |
|
93 |
/**
|
94 |
* Allows modules to deny or provide access for a user to perform a non-view
|
95 |
* operation on an entity before any other access check occurs.
|
96 |
*
|
97 |
* Modules implementing this hook can return FALSE to provide a blanket
|
98 |
* prevention for the user to perform the requested operation on the specified
|
99 |
* entity. If no modules implementing this hook return FALSE but at least one
|
100 |
* returns TRUE, then the operation will be allowed, even for a user without
|
101 |
* role based permission to perform the operation.
|
102 |
*
|
103 |
* If no modules return FALSE but none return TRUE either, normal permission
|
104 |
* based checking will apply.
|
105 |
*
|
106 |
* @param $op
|
107 |
* The request operation: update, create, or delete.
|
108 |
* @param $entity
|
109 |
* The entity to perform the operation on.
|
110 |
* @param $account
|
111 |
* The user account whose access should be determined.
|
112 |
* @param $entity_type
|
113 |
* The machine-name of the entity type of the given $entity.
|
114 |
*
|
115 |
* @return
|
116 |
* TRUE or FALSE indicating an explicit denial of permission or a grant in the
|
117 |
* presence of no other denials; NULL to not affect the access check at all.
|
118 |
*/
|
119 |
function hook_commerce_entity_access($op, $entity, $account, $entity_type) { |
120 |
// No example.
|
121 |
} |
122 |
|
123 |
/**
|
124 |
* Allows modules to alter the conditions used on the query to grant view access
|
125 |
* to a Commerce entity of the specified ENTITY TYPE.
|
126 |
*
|
127 |
* The Commerce module defines a generic implementation of hook_query_alter() to
|
128 |
* determine view access for its entities, commerce_entity_access_query_alter().
|
129 |
* This function is called by modules defining Commerce entities from their
|
130 |
* view access altering functions to apply a standard set of permission based
|
131 |
* conditions for determining a user's access to view the given entity.
|
132 |
*
|
133 |
* @param $conditions
|
134 |
* The OR conditions group used for the view access query.
|
135 |
* @param $context
|
136 |
* An array of contextual information including:
|
137 |
* - account: the account whose access to view the entity is being checked
|
138 |
* - entity_type: the type of entity in the query
|
139 |
* - base_table: the name of the table for the entity type
|
140 |
*
|
141 |
* @see commerce_entity_access_query_alter()
|
142 |
* @see commerce_cart_commerce_entity_access_condition_commerce_order_alter()
|
143 |
*/
|
144 |
function hook_commerce_entity_access_condition_ENTITY_TYPE_alter() { |
145 |
// See the Cart implementation of the hook for an example, as the Cart module
|
146 |
// alters the view query to grant view access of orders to anonymous users who
|
147 |
// own them based on the order IDs stored in the anonymous session.
|
148 |
} |
149 |
|
150 |
/**
|
151 |
* Allows modules to alter the conditions used on the query to grant view access
|
152 |
* to a Commerce entity.
|
153 |
*
|
154 |
* This hook uses the same parameters as the entity type specific hook but is
|
155 |
* invoked after it.
|
156 |
*
|
157 |
* @see hook_commerce_entity_access_condition_ENTITY_TYPE_alter()
|
158 |
*/
|
159 |
function hook_commerce_entity_access_condition_alter() { |
160 |
// No example.
|
161 |
} |
162 |
|
163 |
/**
|
164 |
* Allows modules to alter newly created Commerce entities.
|
165 |
*
|
166 |
* Commerce's default entity controller, DrupalCommerceEntityController, invokes
|
167 |
* this hook after creating a new entity object using either a class specified
|
168 |
* by the entity type info or a stdClass. Using this hook, you can alter the
|
169 |
* entity before it is returned to any of our entity "new" API functions such
|
170 |
* as commerce_product_new().
|
171 |
*
|
172 |
* @param $entity_type
|
173 |
* The machine-name type of the entity.
|
174 |
* @param $entity
|
175 |
* The entity object that was just created.
|
176 |
*/
|
177 |
function hook_commerce_entity_create_alter($entity_type, $entity) { |
178 |
// No example.
|
179 |
} |
180 |
|
181 |
/**
|
182 |
* Allows modules to alter the default currency.
|
183 |
*
|
184 |
* @param $currency_code
|
185 |
* The default currency code.
|
186 |
*
|
187 |
* @see commerce_default_currency()
|
188 |
*/
|
189 |
function hook_commerce_default_currency_alter(&$currency_code) { |
190 |
global $language; |
191 |
if (isset($language->language) && $language->language == 'en-US') { |
192 |
$currency_code = 'USD'; |
193 |
} |
194 |
} |