/** * Clears view caches of nodes, parent nodes and relating nodes * of content objects with ids contained in $objectIDList. * It will use 'viewcache.ini' to determine additional nodes. * * @see clearObjectViewCache * * @param array $objectIDList List of object ID */ public static function clearObjectViewCacheArray(array $objectIDList) { eZDebug::accumulatorStart('node_cleanup_list', '', 'Node cleanup list'); $nodeList = array(); foreach ($objectIDList as $objectID) { $tempNodeList = self::nodeList($objectID, true); if ($tempNodeList !== false) { $nodeList = array_merge($nodeList, $tempNodeList); } } $nodeList = array_unique($nodeList); eZDebug::accumulatorStop('node_cleanup_list'); eZDebugSetting::writeDebug('kernel-content-edit', count($nodeList), "count in nodeList"); if (eZINI::instance()->variable('ContentSettings', 'StaticCache') === 'enabled') { $staticCacheHandler = eZExtension::getHandlerClass(new ezpExtensionOptions(array('iniFile' => 'site.ini', 'iniSection' => 'ContentSettings', 'iniVariable' => 'StaticCacheHandler'))); $staticCacheHandler->generateAlwaysUpdatedCache(); $staticCacheHandler->generateNodeListCache($nodeList); } eZDebug::accumulatorStart('node_cleanup', '', 'Node cleanup'); $nodeList = ezpEvent::getInstance()->filter('content/cache', $nodeList); eZContentObject::expireComplexViewModeCache(); $cleanupValue = eZContentCache::calculateCleanupValue(count($nodeList)); if (eZContentCache::inCleanupThresholdRange($cleanupValue)) { eZContentCache::cleanup($nodeList); } else { eZDebug::writeDebug("Expiring all view cache since list of nodes({$cleanupValue}) exceeds site.ini\\[ContentSettings]\\CacheThreshold", __METHOD__); eZContentObject::expireAllViewCache(); } eZDebug::accumulatorStop('node_cleanup'); return true; }
if (strlen($urlAlias) == 0) { if ($indexPage[0] == '/') { $indexPage = substr($indexPage, 1); } $urlAlias = $indexPage; } $destinationURLArray = explode('/', $urlAlias); // do we need to clear ViewCache ? // content/view/<viewmode>/<nodeID> if (isset($destinationURLArray[3])) { $nodeID = $destinationURLArray[3]; // 0 => false // 1 => true or top level node // you do not want that if (is_numeric($nodeID) and $nodeID > 1) { eZContentCache::cleanup(array($nodeID)); eZDebug::writeNotice('Clearing ViewCache for object ' . $nodeID, 'eZSIBlockFunction::process'); } } } $cli->output('Calling ' . $cli->stylize('emphasize', $pageURL) . ' : ', false); $updatedPageList[] = $pageURL; // regenerating si blocks by calling the page // storing the results is useless if (!callPage($pageURL)) { $cli->output($cli->stylize('red', 'FAILED')); removeFileIfNeeded($expiredBlock, $db); } else { $sql = "SELECT mtime FROM ezsi_files WHERE namehash = '" . $expiredBlock['namehash'] . "'"; $rows = $db->arrayQuery($sql); if ($rows[0]['mtime'] > $expiredBlock['mtime']) {
static function clearObjectViewCache($objectID, $versionNum = true, $additionalNodeList = false) { eZDebug::accumulatorStart('node_cleanup_list', '', 'Node cleanup list'); $nodeList = eZContentCacheManager::nodeList($objectID, $versionNum); if ($nodeList === false and !is_array($additionalNodeList)) { return false; } if ($nodeList === false) { $nodeList = array(); } if (is_array($additionalNodeList)) { array_splice($nodeList, count($nodeList), 0, $additionalNodeList); } if (count($nodeList) == 0) { return false; } $nodeList = array_unique($nodeList); eZDebug::accumulatorStop('node_cleanup_list'); eZDebugSetting::writeDebug('kernel-content-edit', count($nodeList), "count in nodeList"); $ini = eZINI::instance(); if ($ini->variable('ContentSettings', 'StaticCache') == 'enabled') { $optionArray = array('iniFile' => 'site.ini', 'iniSection' => 'ContentSettings', 'iniVariable' => 'StaticCacheHandler'); $options = new ezpExtensionOptions($optionArray); $staticCacheHandler = eZExtension::getHandlerClass($options); $staticCacheHandler->generateAlwaysUpdatedCache(); $staticCacheHandler->generateNodeListCache($nodeList); } eZDebug::accumulatorStart('node_cleanup', '', 'Node cleanup'); $nodeList = ezpEvent::getInstance()->filter('content/cache', $nodeList); eZContentObject::expireComplexViewModeCache(); $cleanupValue = eZContentCache::calculateCleanupValue(count($nodeList)); if (eZContentCache::inCleanupThresholdRange($cleanupValue)) { eZContentCache::cleanup($nodeList); } else { eZDebug::writeDebug("Expiring all view cache since list of nodes({$cleanupValue}) related to object({$objectID}) exeeds site.ini\\[ContentSettings]\\CacheThreshold", __METHOD__); eZContentObject::expireAllViewCache(); } eZDebug::accumulatorStop('node_cleanup'); return true; }
static function clearObjectViewCache( $objectIDList, $versionNum = true, $additionalNodeList = false ) { eZDebug::accumulatorStart( 'node_cleanup_list', '', 'Node cleanup list' ); $nodeList = array(); foreach ($objectIDList as $objectID) { $tmp = eZContentCacheManager::nodeList( $objectID, $versionNum ); if (is_array($tmp) ) { $nodeList = array_merge($nodeList, $tmp); } } if ( $nodeList === false and !is_array( $additionalNodeList ) ) { return false; } if ( $nodeList === false ) { $nodeList = array(); } if ( is_array( $additionalNodeList ) ) { array_splice( $nodeList, count( $nodeList ), 0, $additionalNodeList ); } if ( count( $nodeList ) == 0 ) { return false; } $nodeList = array_unique( $nodeList ); eZDebug::accumulatorStop( 'node_cleanup_list' ); eZDebugSetting::writeDebug( 'kernel-content-edit', count( $nodeList ), "count in nodeList" ); $ini = eZINI::instance(); if ( $ini->variable( 'ContentSettings', 'StaticCache' ) == 'enabled' ) { $staticCache = new eZStaticCache(); $staticCache->generateAlwaysUpdatedCache(); $staticCache->generateNodeListCache( $nodeList ); } eZDebug::accumulatorStart( 'node_cleanup', '', 'Node cleanup' ); eZContentObject::expireComplexViewModeCache(); $cleanupValue = eZContentCache::calculateCleanupValue( count( $nodeList ) ); if ( eZContentCache::inCleanupThresholdRange( $cleanupValue ) ) { eZContentCache::cleanup( $nodeList ); } else { eZContentObject::expireAllViewCache(); } eZDebug::accumulatorStop( 'node_cleanup' ); return true; }