<?php
function module_test_permission() {
return array(
'module_test perm' => t('example perm for module_test module'),
);
}
function module_test_system_info_alter(&$info, $file, $type) {
if (Drupal::state()
->get('module_test.dependency') == 'missing dependency') {
if ($file->name == 'forum') {
$info['dependencies'][] = 'ban';
}
elseif ($file->name == 'ban') {
$info['dependencies'][] = 'foo';
}
}
elseif (Drupal::state()
->get('module_test.dependency') == 'dependency') {
if ($file->name == 'forum') {
$info['dependencies'][] = 'ban';
}
elseif ($file->name == 'ban') {
$info['dependencies'][] = 'php';
}
}
elseif (Drupal::state()
->get('module_test.dependency') == 'version dependency') {
if ($file->name == 'forum') {
$info['dependencies'][] = 'ban';
}
elseif ($file->name == 'ban') {
$info['dependencies'][] = 'php (1.x)';
}
elseif ($file->name == 'php') {
$info['version'] = '8.x-1.0';
}
}
if ($file->name == 'seven' && $type == 'theme') {
$info['regions']['test_region'] = t('Test region');
}
}
function module_test_hook_info() {
$hooks['test_hook'] = array(
'group' => 'file',
);
return $hooks;
}
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',
),
);
$items['module-test/hook-dynamic-loading-invoke-all-during-load/%module_test'] = array(
'title' => 'Test hook dynamic loading (menu item load)',
'page callback' => 'module_test_hook_dynamic_loading_invoke_all_during_load',
'page arguments' => array(
2,
),
'access arguments' => array(
'access content',
),
);
$items['module-test/class-loading'] = array(
'title' => 'Test loading a class from another module',
'page callback' => 'module_test_class_loading',
'access callback' => TRUE,
);
return $items;
}
function module_test_hook_dynamic_loading_invoke() {
$result = module_invoke('module_test', 'test_hook');
return $result['module_test'];
}
function module_test_hook_dynamic_loading_invoke_all() {
$result = module_invoke_all('test_hook');
return $result['module_test'];
}
function module_test_hook_dynamic_loading_invoke_all_during_load($param) {
return $param;
}
function module_test_load($param) {
$result = module_invoke_all('test_hook');
return $result[$param];
}
function module_test_class_loading() {
if (class_exists('Drupal\\module_autoload_test\\SomeClass')) {
$obj = new Drupal\module_autoload_test\SomeClass();
return $obj
->testMethod();
}
}
function module_test_modules_enabled($modules) {
Drupal::state()
->set('system_test.module_enable_order', $modules);
}
function module_test_modules_disabled($modules) {
Drupal::state()
->set('module_test.disable_order', $modules);
}
function module_test_modules_uninstalled($modules) {
Drupal::state()
->set('module_test.uninstall_order', $modules);
}