logged_in()) echo $this->name . ": not logged in / no system user configured\n"; elseif ($login->hasAdminPriv(ADMIN_USER)) { $this->archive_disabled_caches(); $this->archive_events(); } else echo $this->name . ": user '".$opt['logic']['systemuser']['user']."' cannot maintain caches\n"; } } function archive_disabled_caches() { // Logging of status changes in cache_status_modified has started on June 1, 2013. // For archiving caches that were disabled earlier, we also check the listing // modification date. $rs = sql("SELECT `caches`.`cache_id` FROM `caches` WHERE `caches`.`status`=2 AND `caches`.`type`<>6 AND IFNULL((SELECT MAX(`date_modified`) FROM `cache_status_modified` `csm` WHERE `csm`.`cache_id`=`caches`.`cache_id`),`caches`.`listing_last_modified`) < NOW() - INTERVAL 366 DAY GROUP BY `caches`.`cache_id` ORDER BY `caches`.`listing_last_modified` LIMIT 1"); // provisional limit for initial archiving while ($rCache = sql_fetch_assoc($rs)) { $this->archive_cache( $rCache['cache_id'], 'This cache has been "temporarily unavailable" for more than one year now; ' . 'therefore it is being archived automatically. The owner may decide to ' . 'maintain the cache and re-enable the listing.'); } sql_free_result($rs); } function archive_events() { // To prevent archiving events that were accidentally published with a wrong // event date - before the owner notices it - we also apply a limit of one month // to the publication date. $rs = sql("SELECT `cache_id` FROM `caches` WHERE `caches`.`type`=6 AND `caches`.`status`=1 AND GREATEST(`date_hidden`,`date_created`) < NOW() - INTERVAL 35 DAY ORDER BY `date_hidden` LIMIT 1"); // provisional limit for initial archiving while ($rCache = sql_fetch_assoc($rs)) { $this->archive_cache( $rCache['cache_id'], 'This event took place more than five weeks ago; therefore it is ' . 'being archived automatically. The owner may re-enable the listing ' . 'if it should stay active for some exceptional reason.'); } sql_free_result($rs); } function archive_cache($cache_id, $comment) { global $opt, $login, $translate; $log = cachelog::createNew($cache_id,$login->userid); if ($log === false) echo $this->name . ": cannot create log for cache $cache_id\n"; else { $cache = new cache($cache_id); if (!$cache->setStatus(3) || !$cache->save()) echo $this->name . ": cannot change status of cache $cache_id\n"; else { // create log $log->setType(cachelog::LOGTYPE_ARCHIVED, true); $log->setOcTeamComment(true); $log->setDate(date('Y-m-d H:i')); // create log text in appropriate language $translated_comment = $translate->t($comment, '','',0,'',1, $cache->getDefaultDescLanguage()); $log->setText('

'.$translated_comment.'

'); $log->setTextHtml(1); if (!$log->save()) echo $this->name . ": could not save archive log for cache $cache_id\n"; } } } } ?>