You are here

function xautoload_module_implements_alter in X Autoload 7.4

Same name and namespace in other branches
  1. 7.5 xautoload.module \xautoload_module_implements_alter()
  2. 7.2 xautoload.module \xautoload_module_implements_alter()
  3. 7.3 xautoload.module \xautoload_module_implements_alter()

Implements hook_module_implements_alter()

Parameters

array &$implementations:

string $hook:

File

./xautoload.module, line 72

Code

function xautoload_module_implements_alter(&$implementations, $hook) {
  static $modules;
  if (!isset($modules)) {
    $modules = module_list();
  }

  // Some crazy stuff (like using l() in hook_enable()) can trigger hook
  // invocation on just-enabled modules, before xautoload has a chance to
  // register their namespaces. The only place to register these modules is
  // here.
  foreach ($implementations as $module => $group) {
    if (empty($modules[$module])) {

      // This module needs to be registered, to avoid a missing class error.
      xautoload()->extensionRegistrationService
        ->registerExtensionsByName(array(
        $module,
      ));
      xautoload()->cacheManager
        ->renewCachePrefix();
      $modules[$module] = $module;
    }
  }

  // Most hook implementations are in dedicated files.
  switch ($hook) {
    case 'init':
    case 'custom_theme':

      // Move xautoload_$hook() to the start.
      $implementations = array(
        'xautoload' => FALSE,
      ) + $implementations;
      break;
    case 'form_system_performance_settings_alter':
      $implementations['xautoload'] = 'ui';
      module_load_include('ui.inc', 'xautoload');
      break;
    case 'modules_installed':
    case 'modules_enabled':
    case 'registry_files_alter':
      $implementations['xautoload'] = 'system';
      module_load_include('system.inc', 'xautoload');
      break;
    default:
      return;
  }
}