Exemplo n.º 1
0
 /**
  * @param string $hook
  * @param bool $sort
  *
  * @return array
  */
 private function discoverImplementations($hook, $sort)
 {
     # StaticCallLog::addCall();
     // The hook is not cached, so ensure that whether or not it has
     // implementations, that the cache is updated at the end of the request.
     $this->writeCache = TRUE;
     $hook_info = $this->moduleHookInfo();
     $implementations = array();
     $list = $this->moduleList->moduleList(FALSE, FALSE, $sort);
     if ('modules_enabled' === $hook) {
         # HackyLog::logx($list);
     }
     foreach ($list as $module) {
         $include_file = isset($hook_info[$hook]['group']) && module_load_include('inc', $module, $module . '.' . $hook_info[$hook]['group']);
         // Since module_hook() may needlessly try to load the include file again,
         // function_exists() is used directly here.
         if (function_exists($module . '_' . $hook)) {
             $implementations[$module] = $include_file ? $hook_info[$hook]['group'] : FALSE;
         }
     }
     // Allow modules to change the weight of specific implementations but avoid
     // an infinite loop.
     if ($hook != 'module_implements_alter') {
         $this->hookSystem->drupalAlter('module_implements', $implementations, $hook);
     }
     return $implementations;
 }
Exemplo n.º 2
0
 /**
  * @see bootstrap_invoke_all()
  *
  * @param string $hook
  */
 private function bootstrapInvokeAll($hook)
 {
     // Bootstrap modules should have been loaded when this function is called, so
     // we don't need to tell module_list() to reset its internal list (and we
     // therefore leave the first parameter at its default value of FALSE). We
     // still pass in TRUE for the second parameter, though; in case this is the
     // first time during the bootstrap that module_list() is called, we want to
     // make sure that its internal cache is primed with the bootstrap modules
     // only.
     foreach ($this->moduleList->moduleList(FALSE, TRUE) as $module) {
         $this->drupalLoad->drupalLoad('module', $module);
         PureFunctions::moduleInvoke($module, $hook);
     }
 }
Exemplo n.º 3
0
 /**
  * @param string $extension
  * @param bool $install
  *
  * @see module_enable()
  */
 private function enableModule($extension, $install)
 {
     $filename = $this->drupalGetFilename->drupalGetFilename('module', $extension);
     // Include module files.
     require_once $filename;
     if (file_exists($install_file = dirname($filename) . '/' . $extension . '.install')) {
         require_once $install_file;
     }
     // Update status in system table
     $this->systemTable->moduleSetEnabled($extension);
     // Clear various caches, especially hook_module_implements()
     $this->systemListReset->systemListReset();
     $this->moduleList->moduleList(TRUE);
     $this->hookSystem->moduleImplementsReset();
     $this->systemUpdateBootstrapStatus->systemUpdateBootstrapStatus();
     // Update the registry to include it.
     # registry_update();
     // Refresh the schema to include it.
     # drupal_get_schema(NULL, TRUE);
     // Update the theme registry to include it.
     # drupal_theme_rebuild();
     // Clear entity cache.
     # entity_info_cache_clear();
     if ($install) {
         PureFunctions::moduleInvoke($extension, 'schema');
         $this->systemTable->moduleSetSchemaVersion($extension, 7000);
         PureFunctions::moduleInvoke($extension, 'update_last_removed');
         // Optional hook_install()..
         PureFunctions::moduleInvoke($extension, 'install');
         // Optional watchdog()
         $this->hookSystem->moduleInvokeAll('watchdog');
     }
     // hook_enable()
     PureFunctions::moduleInvoke($extension, 'enable');
     // watchdog()
     $this->hookSystem->moduleInvokeAll('watchdog');
 }