|
1 <?php |
|
2 /** |
|
3 * @file |
|
4 * Install, update and uninstall functions for the standard installation profile. |
|
5 */ |
|
6 |
|
7 /** |
|
8 * Implements hook_install(). |
|
9 * |
|
10 * Perform actions to set up the site for this profile. |
|
11 * |
|
12 * @see system_install() |
|
13 */ |
|
14 function standard_install() { |
|
15 // Add text formats. |
|
16 $filtered_html_format = array( |
|
17 'format' => 'filtered_html', |
|
18 'name' => 'Filtered HTML', |
|
19 'weight' => 0, |
|
20 'filters' => array( |
|
21 // URL filter. |
|
22 'filter_url' => array( |
|
23 'weight' => 0, |
|
24 'status' => 1, |
|
25 ), |
|
26 // HTML filter. |
|
27 'filter_html' => array( |
|
28 'weight' => 1, |
|
29 'status' => 1, |
|
30 ), |
|
31 // Line break filter. |
|
32 'filter_autop' => array( |
|
33 'weight' => 2, |
|
34 'status' => 1, |
|
35 ), |
|
36 // HTML corrector filter. |
|
37 'filter_htmlcorrector' => array( |
|
38 'weight' => 10, |
|
39 'status' => 1, |
|
40 ), |
|
41 ), |
|
42 ); |
|
43 $filtered_html_format = (object) $filtered_html_format; |
|
44 filter_format_save($filtered_html_format); |
|
45 |
|
46 $full_html_format = array( |
|
47 'format' => 'full_html', |
|
48 'name' => 'Full HTML', |
|
49 'weight' => 1, |
|
50 'filters' => array( |
|
51 // URL filter. |
|
52 'filter_url' => array( |
|
53 'weight' => 0, |
|
54 'status' => 1, |
|
55 ), |
|
56 // Line break filter. |
|
57 'filter_autop' => array( |
|
58 'weight' => 1, |
|
59 'status' => 1, |
|
60 ), |
|
61 // HTML corrector filter. |
|
62 'filter_htmlcorrector' => array( |
|
63 'weight' => 10, |
|
64 'status' => 1, |
|
65 ), |
|
66 ), |
|
67 ); |
|
68 $full_html_format = (object) $full_html_format; |
|
69 filter_format_save($full_html_format); |
|
70 |
|
71 // Enable some standard blocks. |
|
72 $default_theme = variable_get('theme_default', 'bartik'); |
|
73 $admin_theme = 'seven'; |
|
74 $blocks = array( |
|
75 array( |
|
76 'module' => 'system', |
|
77 'delta' => 'main', |
|
78 'theme' => $default_theme, |
|
79 'status' => 1, |
|
80 'weight' => 0, |
|
81 'region' => 'content', |
|
82 'pages' => '', |
|
83 'cache' => -1, |
|
84 ), |
|
85 array( |
|
86 'module' => 'search', |
|
87 'delta' => 'form', |
|
88 'theme' => $default_theme, |
|
89 'status' => 1, |
|
90 'weight' => -1, |
|
91 'region' => 'sidebar_first', |
|
92 'pages' => '', |
|
93 'cache' => -1, |
|
94 ), |
|
95 array( |
|
96 'module' => 'node', |
|
97 'delta' => 'recent', |
|
98 'theme' => $admin_theme, |
|
99 'status' => 1, |
|
100 'weight' => 10, |
|
101 'region' => 'dashboard_main', |
|
102 'pages' => '', |
|
103 'cache' => -1, |
|
104 ), |
|
105 array( |
|
106 'module' => 'user', |
|
107 'delta' => 'login', |
|
108 'theme' => $default_theme, |
|
109 'status' => 1, |
|
110 'weight' => 0, |
|
111 'region' => 'sidebar_first', |
|
112 'pages' => '', |
|
113 'cache' => -1, |
|
114 ), |
|
115 array( |
|
116 'module' => 'system', |
|
117 'delta' => 'navigation', |
|
118 'theme' => $default_theme, |
|
119 'status' => 1, |
|
120 'weight' => 0, |
|
121 'region' => 'sidebar_first', |
|
122 'pages' => '', |
|
123 'cache' => -1, |
|
124 ), |
|
125 array( |
|
126 'module' => 'system', |
|
127 'delta' => 'powered-by', |
|
128 'theme' => $default_theme, |
|
129 'status' => 1, |
|
130 'weight' => 10, |
|
131 'region' => 'footer', |
|
132 'pages' => '', |
|
133 'cache' => -1, |
|
134 ), |
|
135 array( |
|
136 'module' => 'system', |
|
137 'delta' => 'help', |
|
138 'theme' => $default_theme, |
|
139 'status' => 1, |
|
140 'weight' => 0, |
|
141 'region' => 'help', |
|
142 'pages' => '', |
|
143 'cache' => -1, |
|
144 ), |
|
145 array( |
|
146 'module' => 'system', |
|
147 'delta' => 'main', |
|
148 'theme' => $admin_theme, |
|
149 'status' => 1, |
|
150 'weight' => 0, |
|
151 'region' => 'content', |
|
152 'pages' => '', |
|
153 'cache' => -1, |
|
154 ), |
|
155 array( |
|
156 'module' => 'system', |
|
157 'delta' => 'help', |
|
158 'theme' => $admin_theme, |
|
159 'status' => 1, |
|
160 'weight' => 0, |
|
161 'region' => 'help', |
|
162 'pages' => '', |
|
163 'cache' => -1, |
|
164 ), |
|
165 array( |
|
166 'module' => 'user', |
|
167 'delta' => 'login', |
|
168 'theme' => $admin_theme, |
|
169 'status' => 1, |
|
170 'weight' => 10, |
|
171 'region' => 'content', |
|
172 'pages' => '', |
|
173 'cache' => -1, |
|
174 ), |
|
175 array( |
|
176 'module' => 'user', |
|
177 'delta' => 'new', |
|
178 'theme' => $admin_theme, |
|
179 'status' => 1, |
|
180 'weight' => 0, |
|
181 'region' => 'dashboard_sidebar', |
|
182 'pages' => '', |
|
183 'cache' => -1, |
|
184 ), |
|
185 array( |
|
186 'module' => 'search', |
|
187 'delta' => 'form', |
|
188 'theme' => $admin_theme, |
|
189 'status' => 1, |
|
190 'weight' => -10, |
|
191 'region' => 'dashboard_sidebar', |
|
192 'pages' => '', |
|
193 'cache' => -1, |
|
194 ), |
|
195 ); |
|
196 $query = db_insert('block')->fields(array('module', 'delta', 'theme', 'status', 'weight', 'region', 'pages', 'cache')); |
|
197 foreach ($blocks as $block) { |
|
198 $query->values($block); |
|
199 } |
|
200 $query->execute(); |
|
201 |
|
202 // Insert default pre-defined node types into the database. For a complete |
|
203 // list of available node type attributes, refer to the node type API |
|
204 // documentation at: http://api.drupal.org/api/HEAD/function/hook_node_info. |
|
205 $types = array( |
|
206 array( |
|
207 'type' => 'page', |
|
208 'name' => st('Basic page'), |
|
209 'base' => 'node_content', |
|
210 'description' => st("Use <em>basic pages</em> for your static content, such as an 'About us' page."), |
|
211 'custom' => 1, |
|
212 'modified' => 1, |
|
213 'locked' => 0, |
|
214 ), |
|
215 array( |
|
216 'type' => 'article', |
|
217 'name' => st('Article'), |
|
218 'base' => 'node_content', |
|
219 'description' => st('Use <em>articles</em> for time-sensitive content like news, press releases or blog posts.'), |
|
220 'custom' => 1, |
|
221 'modified' => 1, |
|
222 'locked' => 0, |
|
223 ), |
|
224 ); |
|
225 |
|
226 foreach ($types as $type) { |
|
227 $type = node_type_set_defaults($type); |
|
228 node_type_save($type); |
|
229 node_add_body_field($type); |
|
230 } |
|
231 |
|
232 // Insert default pre-defined RDF mapping into the database. |
|
233 $rdf_mappings = array( |
|
234 array( |
|
235 'type' => 'node', |
|
236 'bundle' => 'page', |
|
237 'mapping' => array( |
|
238 'rdftype' => array('foaf:Document'), |
|
239 ), |
|
240 ), |
|
241 array( |
|
242 'type' => 'node', |
|
243 'bundle' => 'article', |
|
244 'mapping' => array( |
|
245 'field_image' => array( |
|
246 'predicates' => array('og:image', 'rdfs:seeAlso'), |
|
247 'type' => 'rel', |
|
248 ), |
|
249 'field_tags' => array( |
|
250 'predicates' => array('dc:subject'), |
|
251 'type' => 'rel', |
|
252 ), |
|
253 ), |
|
254 ), |
|
255 ); |
|
256 foreach ($rdf_mappings as $rdf_mapping) { |
|
257 rdf_mapping_save($rdf_mapping); |
|
258 } |
|
259 |
|
260 // Default "Basic page" to not be promoted and have comments disabled. |
|
261 variable_set('node_options_page', array('status')); |
|
262 variable_set('comment_page', COMMENT_NODE_HIDDEN); |
|
263 |
|
264 // Don't display date and author information for "Basic page" nodes by default. |
|
265 variable_set('node_submitted_page', FALSE); |
|
266 |
|
267 // Enable user picture support and set the default to a square thumbnail option. |
|
268 variable_set('user_pictures', '1'); |
|
269 variable_set('user_picture_dimensions', '1024x1024'); |
|
270 variable_set('user_picture_file_size', '800'); |
|
271 variable_set('user_picture_style', 'thumbnail'); |
|
272 |
|
273 // Allow visitor account creation with administrative approval. |
|
274 variable_set('user_register', USER_REGISTER_VISITORS_ADMINISTRATIVE_APPROVAL); |
|
275 |
|
276 // Create a default vocabulary named "Tags", enabled for the 'article' content type. |
|
277 $description = st('Use tags to group articles on similar topics into categories.'); |
|
278 $vocabulary = (object) array( |
|
279 'name' => st('Tags'), |
|
280 'description' => $description, |
|
281 'machine_name' => 'tags', |
|
282 ); |
|
283 taxonomy_vocabulary_save($vocabulary); |
|
284 |
|
285 $field = array( |
|
286 'field_name' => 'field_' . $vocabulary->machine_name, |
|
287 'type' => 'taxonomy_term_reference', |
|
288 // Set cardinality to unlimited for tagging. |
|
289 'cardinality' => FIELD_CARDINALITY_UNLIMITED, |
|
290 'settings' => array( |
|
291 'allowed_values' => array( |
|
292 array( |
|
293 'vocabulary' => $vocabulary->machine_name, |
|
294 'parent' => 0, |
|
295 ), |
|
296 ), |
|
297 ), |
|
298 ); |
|
299 field_create_field($field); |
|
300 |
|
301 $help = st('Enter a comma-separated list of words to describe your content.'); |
|
302 $instance = array( |
|
303 'field_name' => 'field_' . $vocabulary->machine_name, |
|
304 'entity_type' => 'node', |
|
305 'label' => 'Tags', |
|
306 'bundle' => 'article', |
|
307 'description' => $help, |
|
308 'widget' => array( |
|
309 'type' => 'taxonomy_autocomplete', |
|
310 'weight' => -4, |
|
311 ), |
|
312 'display' => array( |
|
313 'default' => array( |
|
314 'type' => 'taxonomy_term_reference_link', |
|
315 'weight' => 10, |
|
316 ), |
|
317 'teaser' => array( |
|
318 'type' => 'taxonomy_term_reference_link', |
|
319 'weight' => 10, |
|
320 ), |
|
321 ), |
|
322 ); |
|
323 field_create_instance($instance); |
|
324 |
|
325 |
|
326 // Create an image field named "Image", enabled for the 'article' content type. |
|
327 // Many of the following values will be defaulted, they're included here as an illustrative examples. |
|
328 // See http://api.drupal.org/api/function/field_create_field/7 |
|
329 |
|
330 $field = array( |
|
331 'field_name' => 'field_image', |
|
332 'type' => 'image', |
|
333 'cardinality' => 1, |
|
334 'locked' => FALSE, |
|
335 'indexes' => array('fid' => array('fid')), |
|
336 'settings' => array( |
|
337 'uri_scheme' => 'public', |
|
338 'default_image' => FALSE, |
|
339 ), |
|
340 'storage' => array( |
|
341 'type' => 'field_sql_storage', |
|
342 'settings' => array(), |
|
343 ), |
|
344 ); |
|
345 field_create_field($field); |
|
346 |
|
347 |
|
348 // Many of the following values will be defaulted, they're included here as an illustrative examples. |
|
349 // See http://api.drupal.org/api/function/field_create_instance/7 |
|
350 $instance = array( |
|
351 'field_name' => 'field_image', |
|
352 'entity_type' => 'node', |
|
353 'label' => 'Image', |
|
354 'bundle' => 'article', |
|
355 'description' => st('Upload an image to go with this article.'), |
|
356 'required' => FALSE, |
|
357 |
|
358 'settings' => array( |
|
359 'file_directory' => 'field/image', |
|
360 'file_extensions' => 'png gif jpg jpeg', |
|
361 'max_filesize' => '', |
|
362 'max_resolution' => '', |
|
363 'min_resolution' => '', |
|
364 'alt_field' => TRUE, |
|
365 'title_field' => '', |
|
366 ), |
|
367 |
|
368 'widget' => array( |
|
369 'type' => 'image_image', |
|
370 'settings' => array( |
|
371 'progress_indicator' => 'throbber', |
|
372 'preview_image_style' => 'thumbnail', |
|
373 ), |
|
374 'weight' => -1, |
|
375 ), |
|
376 |
|
377 'display' => array( |
|
378 'default' => array( |
|
379 'label' => 'hidden', |
|
380 'type' => 'image', |
|
381 'settings' => array('image_style' => 'large', 'image_link' => ''), |
|
382 'weight' => -1, |
|
383 ), |
|
384 'teaser' => array( |
|
385 'label' => 'hidden', |
|
386 'type' => 'image', |
|
387 'settings' => array('image_style' => 'medium', 'image_link' => 'content'), |
|
388 'weight' => -1, |
|
389 ), |
|
390 ), |
|
391 ); |
|
392 field_create_instance($instance); |
|
393 |
|
394 // Enable default permissions for system roles. |
|
395 $filtered_html_permission = filter_permission_name($filtered_html_format); |
|
396 user_role_grant_permissions(DRUPAL_ANONYMOUS_RID, array('access content', 'access comments', $filtered_html_permission)); |
|
397 user_role_grant_permissions(DRUPAL_AUTHENTICATED_RID, array('access content', 'access comments', 'post comments', 'skip comment approval', $filtered_html_permission)); |
|
398 |
|
399 // Create a default role for site administrators, with all available permissions assigned. |
|
400 $admin_role = new stdClass(); |
|
401 $admin_role->name = 'administrator'; |
|
402 $admin_role->weight = 2; |
|
403 user_role_save($admin_role); |
|
404 user_role_grant_permissions($admin_role->rid, array_keys(module_invoke_all('permission'))); |
|
405 // Set this as the administrator role. |
|
406 variable_set('user_admin_role', $admin_role->rid); |
|
407 |
|
408 // Assign user 1 the "administrator" role. |
|
409 db_insert('users_roles') |
|
410 ->fields(array('uid' => 1, 'rid' => $admin_role->rid)) |
|
411 ->execute(); |
|
412 |
|
413 // Create a Home link in the main menu. |
|
414 $item = array( |
|
415 'link_title' => st('Home'), |
|
416 'link_path' => '<front>', |
|
417 'menu_name' => 'main-menu', |
|
418 ); |
|
419 menu_link_save($item); |
|
420 |
|
421 // Update the menu router information. |
|
422 menu_rebuild(); |
|
423 |
|
424 // Enable the admin theme. |
|
425 db_update('system') |
|
426 ->fields(array('status' => 1)) |
|
427 ->condition('type', 'theme') |
|
428 ->condition('name', 'seven') |
|
429 ->execute(); |
|
430 variable_set('admin_theme', 'seven'); |
|
431 variable_set('node_admin_theme', '1'); |
|
432 } |