root / drupal7 / sites / all / modules / variable / variable.api.php @ 6ae446a4
1 |
<?php
|
---|---|
2 |
|
3 |
/**
|
4 |
* @file
|
5 |
* Hooks provided by the Variable module.
|
6 |
*/
|
7 |
|
8 |
/**
|
9 |
* @defgroup variable_api_hooks Variable API Hooks
|
10 |
* @{
|
11 |
* Functions to define and modify information about variables.
|
12 |
*
|
13 |
* These hooks and all the related callbacks may be defined in a separate file
|
14 |
* named module.variable.inc
|
15 |
*
|
16 |
* @}
|
17 |
*/
|
18 |
|
19 |
/**
|
20 |
* Define variables used by a module.
|
21 |
*
|
22 |
* Provides meta-information for each variable that includes at the very least some human readable title.
|
23 |
* This information may be used by other modules to select variables from a list for translating, exporting, etc.
|
24 |
*
|
25 |
* Though not required we can also provide some more information to be able to handle the variable in an effective
|
26 |
* way, like which type of data and form element it uses, default value, etc.. There are multiple predefined
|
27 |
* variable types ('type' attribute) that will add a predefined set of properties. Some of them are:
|
28 |
*
|
29 |
* - "string": Simple plain string variable. The form element will be a text field and it will be localizable.
|
30 |
* - "number": Simple numeric value. The form element will be a text field.
|
31 |
* - "boolean": Simple TRUE/FALSE value. It will be a checkbox.
|
32 |
* - "enable": Enabled / Disabled selector. It will display as two radio buttons.
|
33 |
* - "select": Selectable list of options. Depending on the number of options, the element will be a list of
|
34 |
* radios or a drop down.
|
35 |
* - "options": List of options with multiple choices. It will be a list of checkboxes.
|
36 |
* ...
|
37 |
*
|
38 |
* More variable types can be defined by modules using hook_variable_type_info().
|
39 |
*
|
40 |
* For the case of variable names that depend on some other parameter (like variables per content-type),
|
41 |
* there's some special type of variables: Multiple variables. These can be defined like this:
|
42 |
*
|
43 |
* @code
|
44 |
* $variables['node_options_[node_type]'] = array(
|
45 |
* 'type' => 'multiple',
|
46 |
* 'title' => t('Default options', array(), $options),
|
47 |
* 'repeat' => array(
|
48 |
* 'type' => 'options',
|
49 |
* 'default' => array('status', 'promote'),
|
50 |
* 'options callback' => 'node_variable_option_list',
|
51 |
* ),
|
52 |
* );
|
53 |
* @endcode
|
54 |
*
|
55 |
* This multiple variable will spawn into one variable for each node type. Note the variable name that includes
|
56 |
* the property [node_type]. Values for [node_type] will be defined on hook_variable_type_info().
|
57 |
*
|
58 |
* The 'repeat' property defines the properties of children variables. In this case the 'type' property is optional
|
59 |
* and will default to 'multiple'.
|
60 |
*
|
61 |
* @param $options
|
62 |
* Array of options to build variable properties. Since variable properties are cached per language
|
63 |
* these options should be used at the very least for string translations, so titles and defaults are
|
64 |
* localized. Possible options:
|
65 |
* - "language" => Language object for which strings and defaults must be returned. This one will be always defined.
|
66 |
*
|
67 |
* @return
|
68 |
* An array of information defining the module's variables. The array
|
69 |
* contains a sub-array for each node variable, with the variable name
|
70 |
* as the key. Possible attributes:
|
71 |
* - "title": The human readable name of the variable, will be used in auto generated forms.
|
72 |
* - "type": Variable type, should be one of the defined on hook_variable_type_info().
|
73 |
* - "group": Group key, should be one of the defined on hook_variable_group_info().
|
74 |
* - "description": Variable description, will be used in auto generated forms.
|
75 |
* - "options": Array of selectable options, or option name as defined on hook_variable_option_info().
|
76 |
* - "options callback": Function to invoke to get the list of options.
|
77 |
* - "default": Default value.
|
78 |
* - "default callback": Function to invoke to get the default value.
|
79 |
* - "multiple": Array of multiple children variables to be created from this one.
|
80 |
* - "multiple callback": Function to invoke to get children variables.
|
81 |
* - "element": Form element properties to override the default ones for this variable type.
|
82 |
* - "element callback": Function to invoke to get a form element for this variable.
|
83 |
* - "module": Module to which this variable belongs. This property will be added automatically.
|
84 |
* - "repeat": Array of variable properties for children variables.
|
85 |
* - "localize": Boolean value, TRUE for variables that should be localized. This may be used by other modules.
|
86 |
* - "validate callback": Callback to validate the variable value, it will be added to form element #validate.
|
87 |
*
|
88 |
* @see hook_variable_info_alter()
|
89 |
*/
|
90 |
function hook_variable_info($options) { |
91 |
$variables['site_name'] = array( |
92 |
'type' => 'string', |
93 |
'title' => t('Name', array(), $options), |
94 |
'default' => 'Drupal', |
95 |
'description' => t('The name of this website.', array(), $options), |
96 |
'required' => TRUE, |
97 |
); |
98 |
$variables['site_403'] = array( |
99 |
'type' => 'drupal_path', |
100 |
'title' => t('Default 403 (access denied) page', array(), $options), |
101 |
'default' => '', |
102 |
'description' => t('This page is displayed when the requested document is denied to the current user. Leave blank to display a generic "access denied" page.', array(), $options), |
103 |
); |
104 |
return $variables; |
105 |
} |
106 |
|
107 |
/**
|
108 |
* Alter the variable definitions.
|
109 |
*
|
110 |
* @param $info
|
111 |
* The variable info array, keyed by variable name.
|
112 |
*
|
113 |
* @see hook_variable_info()
|
114 |
*/
|
115 |
function hook_variable_info_alter(&$info) { |
116 |
} |
117 |
|
118 |
/**
|
119 |
* Define types of variables or list of values used by a module.
|
120 |
*
|
121 |
* These subtypes can be used to provide defaults for all properties of variables of this type
|
122 |
* or to provide a list of options either for variable options (selectable values) or for children
|
123 |
* variables in the case of multiple variables.
|
124 |
*
|
125 |
* Example, three usages of variable type:
|
126 |
* @code
|
127 |
* // Use variable type 'weekday' to provide a selector for a day of the week
|
128 |
* $variables['date_first_day'] = array(
|
129 |
* 'type' => 'weekday',
|
130 |
* 'title' => t('First day of week'),
|
131 |
* 'default' => 0,
|
132 |
* );
|
133 |
*
|
134 |
* // Use 'options' with value 'weekday' for any other variable that needs to provide a selectable
|
135 |
* // list of days of the week. In this example you can select one or more days.
|
136 |
* $variables['working_days'] = array(
|
137 |
* 'type' => 'options',
|
138 |
* 'options' => 'weekday',
|
139 |
* 'title' => t('Select working days from the list.'),
|
140 |
* );
|
141 |
*
|
142 |
* // Use 'multiple' with value 'weekday' to create a subset of variables, one for each day of the week.
|
143 |
* // In fact, using '[weekday]' in the variable name will set these properties ('type' and 'multiple') automatically.
|
144 |
* $variables['daily_greeting_[weekday]'] = array(
|
145 |
* 'type' => 'multiple',
|
146 |
* 'multiple' => 'weekday',
|
147 |
* 'repeat' => array('type' => 'string'),
|
148 |
* 'title' => t('Greeting to display each day of the week'),
|
149 |
* );
|
150 |
* @endcode
|
151 |
*
|
152 |
* @return
|
153 |
* An array of information defining variable types. The array contains
|
154 |
* a sub-array for each variable type, with the variable type as the key.
|
155 |
*
|
156 |
* The possible attributes are the same as for hook_variable_info(), with the
|
157 |
* type attributes being added on top of the variable attributes.
|
158 |
*
|
159 |
* A special attribute:
|
160 |
* - "type": Variable subtype, the properties for the subtype will be added to these ones.
|
161 |
*
|
162 |
* @see hook_variable_type_info_alter()
|
163 |
*/
|
164 |
function hook_variable_type_info() { |
165 |
$type['mail_address'] = array( |
166 |
'title' => t('E-mail address'), |
167 |
'element' => array('#type' => 'textfield'), |
168 |
'token' => TRUE, |
169 |
); |
170 |
$type['mail_text'] = array( |
171 |
'title' => t('Mail text'), |
172 |
'multiple' => array('subject' => t('Subject'), 'body' => t('Body')), |
173 |
'build callback' => 'variable_build_mail_text', |
174 |
'localize' => TRUE, |
175 |
'type' => 'multiple', |
176 |
); |
177 |
return $type; |
178 |
} |
179 |
|
180 |
/**
|
181 |
* Alter the variable type definitions.
|
182 |
*
|
183 |
* @param $info
|
184 |
* The variable type info array, keyed by variable type name.
|
185 |
*
|
186 |
* @see hook_variable_type_info()
|
187 |
*/
|
188 |
function hook_variable_type_info_alter(&$info) { |
189 |
} |
190 |
|
191 |
/**
|
192 |
* Define groups of variables used by a module.
|
193 |
*
|
194 |
* Variable groups are used for presentation only, to display and edit the variables
|
195 |
* on manageable groups. Groups can define a subset of a module's variables and can
|
196 |
* be reused accross modules to group related variables.
|
197 |
*
|
198 |
* A form to edit all variables in a group can be generated with:
|
199 |
*
|
200 |
* drupal_get_form('variable_group_form', group_name);
|
201 |
*
|
202 |
* @return
|
203 |
* An array of information defining variable types. The array contains
|
204 |
* a sub-array for each variable group, with the group as the key.
|
205 |
* Possible attributes:
|
206 |
* - "title": The human readable name of the group. Must be localized.
|
207 |
* - "description": The human readable description of the group. Must be localized.
|
208 |
* - "access": Permission required to edit group's variables. Will default to 'administer site configuration'.
|
209 |
* - "path": Array of administration paths where these variables can be accessed.
|
210 |
*
|
211 |
* @see hook_variable_group_info_alter()
|
212 |
*/
|
213 |
function hook_variable_group_info() { |
214 |
$groups['system_site_information'] = array( |
215 |
'title' => t('Site information'), |
216 |
'description' => t('Site information and maintenance mode'), |
217 |
'access' => 'administer site configuration', |
218 |
'path' => array('admin/config/system/site-information', 'admin/config/development/maintenance'), |
219 |
); |
220 |
$groups['system_feed_settings'] = array( |
221 |
'title' => t('Feed settings'), |
222 |
'description' => t('Feed settings'), |
223 |
'access' => 'administer site configuration', |
224 |
); |
225 |
return $groups; |
226 |
} |
227 |
|
228 |
/**
|
229 |
* Alter the variable group definitions.
|
230 |
*
|
231 |
* @param $info
|
232 |
* The variable type info array, keyed by variable group name.
|
233 |
*
|
234 |
* @see hook_variable_group_info()
|
235 |
*/
|
236 |
function hook_variable_group_info_alter(&$info) { |
237 |
} |
238 |
|
239 |
/**
|
240 |
* Alter system settings forms.
|
241 |
*
|
242 |
* This is a special version of hook_form_alter() that is triggered only for
|
243 |
* system settings forms, and only after any other module has added/removed
|
244 |
* variables using hook_form_alter().
|
245 |
*
|
246 |
* It is used to mark / replace special realm variables that are contained in the form.
|
247 |
*
|
248 |
* @see hook_form_alter()
|
249 |
* @see variable_module_implements_alter()
|
250 |
*/
|
251 |
function hook_variable_settings_form_alter(&$form, &$form_state, $form_id) { |
252 |
} |