forked from DBC-as/Vopros-install
-
Notifications
You must be signed in to change notification settings - Fork 3
/
vopros.profile
74 lines (67 loc) · 2.18 KB
/
vopros.profile
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
<?php
/**
* @file
*
* Vopros install profile. Uses Profiler.
*/
/**
* Implements hook_form_FORM_ID_alter().
*
* Allows the profile to alter the site configuration form.
*/
function vopros_form_install_configure_form_alter(&$form, $form_state) {
$form['site_information']['site_name']['#default_value'] = 'Vopros';
}
/**
* Implements hook_install_tasks().
*
* Collects install tasks from all modules implementing
* hook_vopros_install_tasks.
*
* As this function is called early and often, we have to maintain a cache or
* else the task specifying a form may not be available on form submit.
*/
function vopros_install_tasks($install_state) {
$tasks = module_invoke_all('vopros_install_tasks') + variable_get('vopros_install_tasks', array());
if ($tasks && !$install_state['installation_finished']) {
variable_set('vopros_install_tasks', $tasks);
}
// Allow task callbacks to be located in an include file.
foreach ($tasks as $name => $task) {
if (isset($task['file'])) {
require_once DRUPAL_ROOT . '/' . $task['file'];
}
}
// Clean up if were finished.
if ($install_state['installation_finished']) {
variable_del('vopros_install_tasks');
}
/**
* We need at least one task to ensure that the rest of the tasks is
* run. Without it, install_run_tasks() can manage to run through the tasks
* up to 'install_bootstrap_full', and if there's no following tasks (when
* 'install_configure_form' has been completed), it will think it's done
* before we have a chance to read the variable and tell it otherwise.
*
* Luckily, we need to flush some caches anyway.
*/
$ret = array(
'vopros_flush_all_caches' => array(
'display' => FALSE,
'run' => INSTALL_TASK_RUN_IF_REACHED,
),
) + $tasks;
return $ret;
}
/**
* Install task that flushes caches. Ensures that the profile modules hook
* implementations are available so we can invoke hook_vopros_install_tasks and
* get all the module provided tasks for the next round.
*/
function vopros_flush_all_caches() {
// Only flush cache if we haven't picked up any install tasks yet.
if (!variable_get('vopros_install_tasks', NULL)){
drupal_flush_all_caches();
}
return;
}