ConLite/cms/includes/concache.php

170 Zeilen
5.0 KiB
PHP

<?php
/**
* Project:
* Contenido Content Management System
*
* Description:
* File with configuration of concache
*
* Requirements:
* @con_php_req 5
*
* @package Frontend
* @subpackage Cache
* @author Murat Purc <murat@purc.de>
* @copyright four for business AG <www.4fb.de>
* @license http://www.contenido.org/license/LIZENZ.txt
* @link http://www.4fb.de
* @link http://www.contenido.org
*
*
* @class cConCache
* @file concache.php
* @version 0.9
* @date 2006-07-07
*
* {@internal
* created 2006-07-07
* modified 2008-07-03, bilal arslan, added security fix
*
* $Id: concache.php 450 2016-07-20 11:11:12Z oldperl $:
* }}
*
*/
if(!defined('CON_FRAMEWORK')) {
die('Illegal call');
}
// uncomment following line 4 debugging any occured errors and warnings
#error_reporting(E_ALL);
/**
* configuration array of frontend caching
* @var array $cfgConCache
*/
global $cfgConCache;
global $auth;
/**
* don't cache output, if we have a contenido variable, e. g. on calling frontend preview from backend
* @var bool $cfgConCache['excludecontenido']
*/
$cfgConCache['excludecontenido'] = true;
/**
* activate caching of frontend output
* @var bool $cfgConCache['enable']
*/
$cfgConCache['enable'] = true;
/**
* compose debuginfo (hit/miss and execution time of caching)
* @var bool $cfgConCache['debug']
*/
$cfgConCache['debug'] = false;
/**
* debug information template
* @var string $cfgConCache['infotemplate']
*/
$cfgConCache['infotemplate'] = '<div id="debug">%s</div>';
/**
* add a html comment including several debug messages to output
* @var bool $cfgConCache['htmlcomment']
*/
$cfgConCache['htmlcomment'] = true;
/**
* lifetime in seconds 2 cache output
* @var int $cfgConCache['lifetime']
*/
$cfgConCache['lifetime'] = 3600;
/**
* directory where cached content is 2 store.
* @var string $cfgConCache['cachedir']
*/
$cfgConCache['cachedir'] = $cfgClient[$client]['path']['frontend'].'cache/';
/**
* cache group, will be a subdirectory inside cachedir
* @var string $cfgConCache['cachegroup']
*/
$cfgConCache['cachegroup'] = 'content';
/**
* add prefix 2 stored filenames
* @var string $cfgConCache['cacheprefix']
*/
$cfgConCache['cacheprefix'] = 'cache_';
/**
* array of several variables 2 create a unique id, if the output depends on them.
* default variables are $_SERVER['REQUEST_URI'], $_POST and $_GET. its also possible to add the
* auth object, if output differs on authentificated user.
* @var array $cfgConCache['idoptions']
*/
$cfgConCache['idoptions'] = array(
'uri' => &$_SERVER['REQUEST_URI'],
'post' => &$_POST,
'get' => &$_GET,
'auth' => &$auth->auth['perm']
);
/**
* array of eventhandler, beeing raised on some events.
* we have actually two events:
* - 'beforeoutput': code to execute before doing the output
* - 'afteroutput' code to execute after output
* you can define any php-code beeing 2 excute on raising a event.
* be aware to define a correct php-code block including finishing semicolon ';'
* example:
* [code]
* $cfgConCache['raiseonevent']['beforeoutput'] = array(
* 'functionCall_One();',
* 'functionCall_Two();',
* 'functionCall_Three();'
* [/code]
* on raising a beforeoutput event the code 'functionCall_One();',
* 'functionCall_Two();' and 'functionCall_Three();' will be executes
* one after another.
*
* [code]
* $cfgConCache['raiseonevent'] = array(
* 'beforeoutput' => array('echo("<pre>beforeoutput</pre>");'),
* 'afteroutput' => array('echo("<pre>afteroutput</pre>");')
* );
* [/code]
* another example with output
*/
// define code 2 update contenido statistics
// this will be excuted on 'afteroutput' event of cache object
// set Security fix
$sStatCode = '
$sql = \'SELECT idcatart FROM \'.$GLOBALS[\'cfg\'][\'tab\'][\'stat\'].\' WHERE idcatart="\'.Contenido_Security::toInteger($GLOBALS[\'idcatart\']).\'" AND idlang="\'.Contenido_Security::toInteger($GLOBALS[\'lang\']).\'"\';
$GLOBALS[\'db\']->query($sql);
if ($GLOBALS[\'db\']->next_record()) {
$sql = \'UPDATE \'.$GLOBALS[\'cfg\'][\'tab\'][\'stat\'].\' SET visited=visited + 1 WHERE idcatart="\'.Contenido_Security::toInteger($GLOBALS[\'idcatart\']).\'" AND idclient="\'.Contenido_Security::toInteger($GLOBALS[\'client\']).\'" AND idlang="\'.Contenido_Security::toInteger($GLOBALS[\'lang\']).\'"\';
} else {
$next = $GLOBALS[\'db\']->nextid($GLOBALS[\'cfg\'][\'tab\'][\'stat\']); $next = Contenido_Security::escapeDB($next, $db);
$sql = \'INSERT INTO \'.$GLOBALS[\'cfg\'][\'tab\'][\'stat\'].\' (visited, idcatart, idlang, idstat, idclient) VALUES (1, "\'.Contenido_Security::toInteger($GLOBALS[\'idcatart\']).\'", "\'. Contenido_Security::toInteger($GLOBALS[\'lang\']).\'", "\'.$next.\'", "\'. Contenido_Security::toInteger($GLOBALS[\'client\']).\'")\';
}
$GLOBALS[\'db\']->query($sql);
';
$cfgConCache['raiseonevent'] = array(
'beforeoutput' => array('/* some code here */'),
'afteroutput' => array($sStatCode, 'page_close();')
);
// include concache file
cInclude('frontend', 'includes/class.concache.php');
?>