/** * Expire a sitepage-variation * @param integer ID of the sitepage to expire * @param integer ID of the level that will be expired * @param integer ID of the variation to expire */ function expireSitepage($spid, $level, $variation) { global $db, $c; $spidTrans = translateState($spid, $level, $false); // update sitepage_names. $sql = "UPDATE sitepage_names SET DELETED=1 WHERE SPID = $spidTrans AND VARIATION_ID = $variation"; $query = new query($db, $sql); // get CLID $sql = " SELECT cv.CLID FROM cluster_variations cv, sitepage sp WHERE sp.CLNID = cv.CLNID AND sp.SPID = $spidTrans AND cv.VARIATION_ID = $variation"; $query = new query($db, $sql); $query->getrow(); $clid = $query->field("CLID"); $sql = "UPDATE state_translation SET EXPIRED=1 WHERE OUT_ID = $clid"; $query = new query($db, $sql); // count rest of variations of spid. $sql = "SELECT COUNT(VARIATION_ID) AS ANZ FROM sitepage_names WHERE SPID = $spidTrans AND DELETED = 0"; $query = new query($db, $sql); $query->getrow(); $amount = $query->field("ANZ"); // if last variation was expired, expire also menu and sitepage. if ($amount == 0) { $sql = "UPDATE state_translation SET EXPIRED=1 WHERE IN_ID = $spid"; $query = new query($db, $sql); $sql = "SELECT MENU_ID FROM sitepage WHERE SPID = $spid"; $query = new query($db, $sql); $query->getrow(); $menu = $query->field("MENU_ID"); $sql = "UPDATE state_translation SET EXPIRED = 1 WHERE IN_ID = $menu"; $query = new query($db, $sql); $query->free(); } flushSitePage($spidTrans, $variation); // clear direct path $sql = "SELECT DIRECT_URL FROM sitepage_names WHERE SPID = $spid AND VARIATION_ID = $variation"; $query = new query($db, $sql); $query->getrow(); $short = $query->field("DIRECT_URL"); $query->free(); if ($short != "") clearShortURL ($short); if (!$c["classicurls"]) clearURLPage($spidTrans, $variation); global $JPCACHE_ON; //cc on launch $menu = getDBCell("sitepage", "MENU_ID", "SPID = $spid"); $cconlaunch = getDBCell("sitemap", "CC_ON_LAUNCH", "MENU_ID = " . $menu); $ccarray = explode(",", $cconlaunch); $mparray = createDBCArray("sitepage", "SPID", "MENU_ID = " . $menu); for ($i = 0; $i < count($ccarray); $i++) { $spidTrans = translateState($ccarray[$i], $level, false); if ($spidTrans != "" && isCached($ccarray[$i], $variation)) { renderSitePage($spidTrans, $variation); if ($JPCACHE_ON) { @unlink($c["dyncachepath"]."dyncache-".jpcacheFilename($spidTrans, $variation)); } } } for ($i = 0; $i < count($mparray); $i++) { $spidTrans = translateState($mparray[$i], $level, false); if ($spidTrans != "" && isCached($mparray[$i], $variation)) { // old html caching // renderSitePage($spidTrans, $variation); if ($JPCACHE_ON && !$c["renderstatichtml"]) { @unlink($c["dyncachepath"]."dyncache-".jpcacheFilename($spidTrans, $variation)); } else { @unlink($c["cachepath"]."static/dyncache-".jpcacheFilename($spidTrans, $variation)); } } } }
/** * rebuilds the complete cache of the whole website. * */ function rebuildCache() { global $c, $db; if ($c["renderstatichtml"]) { $maxtime = ini_get("max_execution_time"); ini_set("max_execution_time", $c["timeout"]); $sp_sql = "SELECT SPID FROM sitepage WHERE DELETED=0 AND VERSION=10"; $sp_query = new query($db, $sp_sql); $clist_id = 0; while ($sp_query->getrow()) { $my_spid = $sp_query->field("SPID"); $sv_sql = "SELECT VARIATION_ID FROM variations"; $sv_query = new query($db, $sv_sql); while ($sv_query->getrow()) { $my_variation = $sv_query->field("VARIATION_ID"); if (isCached($my_spid, $my_variation)) { if (SPVarExists($my_spid, $my_variation)) { renderSitePage($my_spid, $my_variation); } } } } ini_set("max_execution_time", $maxtime); } }