コード例 #1
0
 /**
  * Reloads extensions and changes siteaccess globally
  * If you only want changes on a instance of ini, use {@link eZSiteAccess::getIni()}
  *
  * - clears all in-memory caches used by the INI system
  * - re-builds the list of paths where INI files are searched for
  * - runs {@link eZSiteAccess::change()}
  * - re-searches module paths {@link eZModule::setGlobalPathList()}
  *
  * @since 4.4
  * @param array $access An associative array with 'name' (string), 'type' (int) and 'uri_part' (array).
  *                      See {@link eZSiteAccess::match()} for array structure definition
  * @param eZINI|null $siteINI Optional parameter to be able to only do change on specific instance of site.ini
  *                            If set, then global siteacceess will not be changed as well.
  * @return array The $access parameter
  */
 static function load(array $access, eZINI $siteINI = null)
 {
     $currentSiteAccess = $GLOBALS['eZCurrentAccess'];
     unset($GLOBALS['eZCurrentAccess']);
     // Clear all ini override dirs
     if ($siteINI instanceof eZINI) {
         $siteINI->resetOverrideDirs();
     } else {
         eZINI::resetAllGlobals();
         eZExtension::clearActiveExtensionsMemoryCache();
         eZTemplateDesignResource::clearInMemoryCache();
     }
     // Reload extensions, siteaccess and access extensions
     eZExtension::activateExtensions('default', $siteINI);
     $access = self::change($access, $siteINI);
     eZExtension::activateExtensions('access', $siteINI);
     // Restore current (old) siteacces if changes where only to be applied to locale instance of site.ini
     if ($siteINI instanceof eZINI) {
         $GLOBALS['eZCurrentAccess'] = $currentSiteAccess;
     } else {
         $moduleRepositories = eZModule::activeModuleRepositories();
         eZModule::setGlobalPathList($moduleRepositories);
     }
     return $access;
 }