e107_plugins/pm/e_cron.php
<?php
/*
* e107 website system
*
* Copyright (C) 2001-2009 e107 Inc (e107.org)
* Released under the terms and conditions of the
* GNU General Public License (http://www.gnu.org/licenses/gpl.txt)
*
* Plugin configuration module - gsitemap
*
* $Source: /cvs_backup/e107_0.8/e107_plugins/pm/e_cron.php,v $
* $Revision$
* $Date$
* $Author$
*
*/
/**
* e107 Private Messenger plugin
*
* @package e107_plugins
* @subpackage pm
* @version $Id$;
*/
if (!defined('e107_INIT')) { exit; }
e107::includeLan(e_PLUGIN.'/pm/languages/English_mailer.php');
class pm_cron // include plugin-folder in the name.
{
private $logRequirement = 0; // Flag to determine logging level
private $debugLevel = 0; // Used for internal debugging
private $logHandle = NULL;
private $pmClass; // Calendar library routines
private $e107;
private $mailManager;
private $ourDB; // Used for some things
public function __construct()
{
$this->e107 = e107::getInstance();
$this->ourDB = new db;
//$this->debugLevel = 2;
}
/**
* Cron configuration
*
* Defines one or more cron tasks to be performed
*
* @return array of task arrays
*/
public function config()
{
$cron = array();
$cron[] = array(
'name' => LAN_EC_PM_04,
'category' => 'plugin',
'function' => 'processPM',
'description' => LAN_EC_PM_05
);
return $cron;
}
/**
* Logging routine - writes lines to a text file
*
* Auto-opens log file (if necessary) on first call
*
* @param string $logText - body of text to write
* @param boolean $closeAfter - if TRUE, log file closed before exit; otherwise left open
*
* @return none
*/
function logLine($logText, $closeAfter = FALSE, $addTimeDate = FALSE)
{
if ($this->logRequirement == 0) return;
$logFilename = e_LOG.'pm_bulk.txt';
if ($this->logHandle == NULL)
{
if (!($this->logHandle = fopen($logFilename, "a")))
{ // Problem creating file?
echo "File open failed!<br />";
$this->logRequirement = 0;
return;
}
}
if (fwrite($this->logHandle,($addTimeDate ? date('D j M Y G:i:s').': ' : '').$logText."\r\n") == FALSE)
{
$this->logRequirement = 0;
echo 'File write failed!<br />';
}
if ($closeAfter)
{
fclose($this->logHandle);
$this->logHandle = NULL;
}
}
/**
* Called to process outstanding PMs (which are always bulk lists)
*
* Emails are added to the queue.
* Various events are logged in a text file
*
* @return none
*/
public function processPM()
{
global $pref;
require_once(e_PLUGIN.'pm/pm_class.php');
$this->startTime = mktime(0, 0, 0, date('n'), date('d'), date('Y')); // Date for start processing
$this->logRequirement = varset($pref['eventpost_emaillog'], 0);
if ($this->debugLevel >= 2) $this->logRequirement = 2; // Force full logging if debug
// Start of the 'real' code
if ($this->ourDB->select('generic', '*', "`gen_type` = 'pm_bulk' LIMIT 1"))
{
$pmRow = $this->ourDB->fetch();
$this->logLine("\r\n\r\n".str_replace('[y]',$pmRow['gen_intdata'],LAN_EC_PM_06).date('D j M Y G:i:s'));
$this->ourDB->delete('generic', "`gen_type` = 'pm_bulk' AND `gen_id` = ".$pmRow['gen_id']);
$pmData = e107::unserialize($pmRow['gen_chardata']);
unset($pmRow);
$this->pmClass = new private_message;
$this->pmClass->add($pmData);
$this->logLine(' .. Run completed',TRUE, TRUE);
}
return TRUE;
}
private function checkMailManager()
{
if ($this->mailManager == NULL)
{
require_once(e_HANDLER .'mail_manager_class.php');
$this->mailManager = new e107MailManager();
}
}
}