98 Zeilen
3.5 KiB
PHP
98 Zeilen
3.5 KiB
PHP
<?php
|
|
/**
|
|
* Project:
|
|
* Contenido Content Management System
|
|
*
|
|
* Description:
|
|
* Enables regeneration of con_cache for specific article when article content changes.
|
|
* To enable this chain function you need to set a system-, client- or userproperty
|
|
*
|
|
* save_article | clear_cache | [true|false]
|
|
*
|
|
* so you may set it to true for only one power user or something like that.
|
|
*
|
|
* 2011-08-09
|
|
* Now you can add additional articles to set its cache-flag so they will be updated with next call.
|
|
* Therefore we have added a new property where you can add a comma-separated list of articles which
|
|
* have to be updated.
|
|
*
|
|
* save_article | clear_cache_add_idart | [comma-separated list of idart]
|
|
*
|
|
* Installation:
|
|
* Install this chain by putting this file into contenido/plugins/chains/includes and
|
|
* edit/create a 'config.local.php' file in folder contenido/includes
|
|
* with the following code:
|
|
*
|
|
* # add custom chains
|
|
* cInclude("plugins", "chains/includes/include.chain.content.set_clear_cache.php");
|
|
* $_cecRegistry->addChainFunction("Contenido.Content.SaveContentEntry", "cecContentSetClearCache");
|
|
*
|
|
*
|
|
* @package Contenido Backend
|
|
* @subpackage Contenido Chain
|
|
* @version $Id: include.chain.content.set_clear_cache.php 17 2011-08-09 10:49:01Z oldperl $
|
|
* @since 2011-07-14
|
|
* @author Ortwin Pinke
|
|
* @copyright DCEonline <www.dceonline.de>
|
|
* @license http://www.contenido.org/license/LIZENZ.txt
|
|
* @link http://www.contenido.org
|
|
* @link http://www.ortwinpinke.de
|
|
* @link http://forum.contenido.org/viewtopic.php?f=66&t=31432
|
|
*
|
|
*/
|
|
|
|
if(!defined('CON_FRAMEWORK')) {
|
|
die('Illegal call');
|
|
}
|
|
|
|
/**
|
|
*
|
|
* @param int $idartlang
|
|
* @param int $type
|
|
* @param int $typeid
|
|
* @param string $value
|
|
* @return bool
|
|
*/
|
|
function cecContentSetClearCache($idartlang, $type, $typeid, $value) {
|
|
|
|
$aArticle2Clear = array($idartlang);
|
|
|
|
$bClearCache = getEffectiveSetting('save_article', 'clear_cache', false);
|
|
$sAdditionalArticles = getEffectiveSetting('save_article', 'clear_cache_add_idart', null);
|
|
$iLimitAdditionalArticles = (int) getEffectiveSetting('save_article', 'clear_cache_limit_add_idart', 10);
|
|
$iLimitAdditionalArticles = ($iLimitAdditionalArticles < 10)?10:$iLimitAdditionalArticles;
|
|
|
|
if(!is_null($sAdditionalArticles)) {
|
|
$aAdditionalArticles = array_map('trim',explode(",", $sAdditionalArticles, $iLimitAdditionalArticles +1));
|
|
$iCountElements = count($aAdditionalArticles);
|
|
if($iCountElements > 0) {
|
|
if($iCountElements > 1 && $iCountElements > $iLimitAdditionalArticles) {
|
|
array_pop ($aAdditionalArticles);
|
|
}
|
|
array_splice($aArticle2Clear, count($aArticle2Clear), 0, $aAdditionalArticles);
|
|
}
|
|
}
|
|
|
|
if($bClearCache) {
|
|
cInclude("classes", "contenido/class.articlelanguage.php");
|
|
cInclude("classes", "contenido/class.categoryarticle.php");
|
|
|
|
foreach($aArticle2Clear as $iIdArt) {
|
|
$oArtLang = new cApiArticleLanguage();
|
|
if($oArtLang->loadByPrimaryKey($iIdArt)) {
|
|
$oArtCat = new cApiCategoryArticle();
|
|
if($oArtCat->loadBy('idart', $oArtLang->get('idart'))) {
|
|
$bCreateCode = !$oArtCat->get('createcode');
|
|
if($bCreateCode) {
|
|
$oArtCat->set('createcode', 1);
|
|
$oArtCat->store();
|
|
}
|
|
}
|
|
unset($oArtCat);
|
|
}
|
|
unset($oArtLang);
|
|
}
|
|
}
|
|
return $value;
|
|
}
|
|
?>
|