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 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103 104 105 106 107 108 109 110 111 112 113 114 115 116 117 118 119 120 121 122 123 124 125 126 127 128 129 130 131
|
<?php
/**
* Implements hook_permission().
*/
function module_test_permission() {
return array(
'module_test perm' => t('example perm for module_test module'),
);
}
/**
* Implements hook_system_info_alter().
*
* Manipulate module dependencies to test dependency chains.
*/
function module_test_system_info_alter(&$info, $file, $type) {
if (variable_get('dependency_test', FALSE) == 'missing dependency') {
if ($file->name == 'forum') {
// Make forum module depend on poll.
$info['dependencies'][] = 'poll';
}
elseif ($file->name == 'poll') {
// Make poll depend on a made-up module.
$info['dependencies'][] = 'foo';
}
}
elseif (variable_get('dependency_test', FALSE) == 'dependency') {
if ($file->name == 'forum') {
// Make the forum module depend on poll.
$info['dependencies'][] = 'poll';
}
elseif ($file->name == 'poll') {
// Make poll depend on php module.
$info['dependencies'][] = 'php';
}
}
elseif (variable_get('dependency_test', FALSE) == 'version dependency') {
if ($file->name == 'forum') {
// Make the forum module depend on poll.
$info['dependencies'][] = 'poll';
}
elseif ($file->name == 'poll') {
// Make poll depend on a specific version of php module.
$info['dependencies'][] = 'php (1.x)';
}
elseif ($file->name == 'php') {
// Set php module to a version compatible with the above.
$info['version'] = '7.x-1.0';
}
}
if ($file->name == 'seven' && $type == 'theme') {
$info['regions']['test_region'] = t('Test region');
}
}
/**
* Implements hook_hook_info().
*/
function module_test_hook_info() {
$hooks['test_hook'] = array(
'group' => 'file',
);
return $hooks;
}
/**
* Implements hook_menu().
*/
function module_test_menu() {
$items['module-test/hook-dynamic-loading-invoke'] = array(
'title' => 'Test hook dynamic loading (invoke)',
'page callback' => 'module_test_hook_dynamic_loading_invoke',
'access arguments' => array('access content'),
);
$items['module-test/hook-dynamic-loading-invoke-all'] = array(
'title' => 'Test hook dynamic loading (invoke_all)',
'page callback' => 'module_test_hook_dynamic_loading_invoke_all',
'access arguments' => array('access content'),
);
return $items;
}
/**
* Page callback for 'hook dynamic loading' test.
*
* If the hook is dynamically loaded correctly, the menu callback should
* return 'success!'.
*/
function module_test_hook_dynamic_loading_invoke() {
$result = module_invoke('module_test', 'test_hook');
return $result['module_test'];
}
/**
* Page callback for 'hook dynamic loading' test.
*
* If the hook is dynamically loaded correctly, the menu callback should
* return 'success!'.
*/
function module_test_hook_dynamic_loading_invoke_all() {
$result = module_invoke_all('test_hook');
return $result['module_test'];
}
/**
* Implements hook_modules_enabled().
*/
function module_test_modules_enabled($modules) {
// Record the ordered list of modules that were passed in to this hook so we
// can check that the modules were enabled in the correct sequence.
variable_set('test_module_enable_order', $modules);
}
/**
* Implements hook_modules_disabled().
*/
function module_test_modules_disabled($modules) {
// Record the ordered list of modules that were passed in to this hook so we
// can check that the modules were disabled in the correct sequence.
variable_set('test_module_disable_order', $modules);
}
/**
* Implements hook_modules_uninstalled().
*/
function module_test_modules_uninstalled($modules) {
// Record the ordered list of modules that were passed in to this hook so we
// can check that the modules were uninstalled in the correct sequence.
variable_set('test_module_uninstall_order', $modules);
}
|