<?php
/**
* EXHIBIT A. Common Public Attribution License Version 1.0
* The contents of this file are subject to the Common Public Attribution License Version 1.0 (the “License”);
* you may not use this file except in compliance with the License. You may obtain a copy of the License at
* http://www.oxwall.org/license. The License is based on the Mozilla Public License Version 1.1
* but Sections 14 and 15 have been added to cover use of software over a computer network and provide for
* limited attribution for the Original Developer. In addition, Exhibit A has been modified to be consistent
* with Exhibit B. Software distributed under the License is distributed on an “AS IS” basis,
* WITHOUT WARRANTY OF ANY KIND, either express or implied. See the License for the specific language
* governing rights and limitations under the License. The Original Code is Oxwall software.
* The Initial Developer of the Original Code is Oxwall Foundation (http://www.oxwall.org/foundation).
* All portions of the code written by Oxwall Foundation are Copyright (c) 2011. All Rights Reserved.
* EXHIBIT B. Attribution Information
* Attribution Copyright Notice: Copyright 2011 Oxwall Foundation. All rights reserved.
* Attribution Phrase (not exceeding 10 words): Powered by Oxwall community software
* Attribution URL: http://www.oxwall.org/
* Graphic Image as provided in the Covered Code.
* Display of Attribution Information is required in Larger Works which are defined in the CPAL as a work
* which combines Covered Code or portions thereof with code not governed by the terms of the CPAL.
*/
class BASE_Cron extends OW_Cron
{
const EMAIL_VARIFY_CODE_REMOVE_TIMEOUT = 432000; // 5 days
const BILLING_SALES_EXPIRE_JOB_RUN_INTERVAL = 30;
// minutes
public function __construct()
{
parent::__construct();
$this->addJob('dbCacheProcess', 1);
$this->addJob('mailQueueProcess', 5);
$this->addJob('deleteExpiredOnlineUserProcess', 1);
//$this->addJob('expireUnverifiedSalesProcess', self::BILLING_SALES_EXPIRE_JOB_RUN_INTERVAL);
$this->addJob('deleteExpiredOnlineUserProcess', 1);
$this->addJob('checkPluginUpdates', 60 * 24);
$this->addJob('deleteExpiredPasswordResetCodes', 10);
$this->addJob('resetCronFlag', 1);
$this->addJob('rmTempAttachments', 60 * 24);
$this->addJob('rmTempAvatars', 60 * 24);
$this->addJob('deleteExpiredCache', 60 * 24);
$this->addJob('dropLogFile', 60 * 24);
$this->addJob('clearMySqlSearchIndex', 60 * 24);
$this->addJob('expireSearchResultList', 1);
$this->addJob('generateSitemap', 1);
$this->addJob('checkRealCron');
}
/**
* Generate sitemap
*/
public function generateSitemap()
{
$service = BOL_SeoService::getInstance();
$inProgress = (int) OW::getConfig()->getValue('base', 'seo_sitemap_in_progress');
$inProgressTime = (int) OW::getConfig()->getValue('base', 'seo_sitemap_in_progress_time');
// is it possible to start sitemap generating?
if ( (!$inProgress || time() - $inProgressTime >= 3600) && $service->isSitemapReadyForNextBuild() )
{
OW::getConfig()->saveConfig('base', 'seo_sitemap_in_progress', 1);
OW::getConfig()->saveConfig('base', 'seo_sitemap_in_progress_time', time());
$service->generateSitemap();
OW::getConfig()->saveConfig('base', 'seo_sitemap_in_progress', 0);
}
}
public function run()
{
//clean email varify code table
BOL_EmailVerifyService::getInstance()->deleteByCreatedStamp(time() - self::EMAIL_VARIFY_CODE_REMOVE_TIMEOUT);
BOL_UserService::getInstance()->cronSendWellcomeLetter();
}
public function dbCacheProcess()
{
// Delete expired db cache entry
BOL_DbCacheService::getInstance()->deleteExpiredList();
}
public function mailQueueProcess()
{
// Send mails from mail queue
BOL_MailService::getInstance()->processQueue();
}
public function deleteExpiredOnlineUserProcess()
{
BOL_UserService::getInstance()->deleteExpiredOnlineUsers();
}
public function expireUnverifiedSalesProcess()
{
BOL_BillingService::getInstance()->deleteExpiredSales();
}
public function expireSearchResultList()
{
BOL_SearchService::getInstance()->deleteExpireSearchResult();
}
public function clearMySqlSearchIndex()
{
$mysqlSearchStorage = new BASE_CLASS_MysqlSearchStorage();
$mysqlSearchStorage->realDeleteEntities();
}
public function checkPluginUpdates()
{
BOL_StorageService::getInstance()->checkUpdates();
}
public function deleteExpiredPasswordResetCodes()
{
BOL_UserService::getInstance()->deleteExpiredResetPasswordCodes();
}
public function resetCronFlag()
{
if ( OW::getConfig()->configExists('base', 'cron_is_active') && (int) OW::getConfig()->getValue('base', 'cron_is_active') === 0 )
{
OW::getConfig()->saveConfig('base', 'cron_is_active', 1);
}
}
public function rmTempAttachments()
{
BOL_AttachmentService::getInstance()->deleteExpiredTempImages();
}
public function rmTempAvatars()
{
BOL_AvatarService::getInstance()->deleteTempAvatars();
}
public function deleteExpiredCache()
{
OW::getCacheManager()->clean(array(), OW_CacheManager::CLEAN_OLD);
}
public function dropLogFile()
{
$logFilePath = OW_DIR_LOG . 'error.log';
if ( file_exists($logFilePath) )
{
$logFileSize = filesize($logFilePath);
if ( $logFileSize !== false && $logFileSize / 1024 / 1024 >= (int) OW::getConfig()->getValue('base', 'log_file_max_size_mb') )
{
unlink($logFilePath);
}
}
}
public function checkRealCron()
{
if ( !isset($_GET['ow-light-cron']) )
{
if ( OW::getConfig()->configExists('base', 'cron_is_configured') )
{
OW::getConfig()->saveConfig('base', 'cron_is_configured', 1);
}
else
{
OW::getConfig()->addConfig('base', 'cron_is_configured', 1);
}
}
}
}