/** * 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; }