e107inc/e107

View on GitHub
e107_plugins/pm/e_cron.php

Summary

Maintainability
A
0 mins
Test Coverage
F
4%
<?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();
        }
    }

}