예제 #1
0
<?php

// Function to scan the event queue and execute any functions required.
require_once 'base.php';
require_once W2P_BASE_DIR . '/includes/config.php';
require_once W2P_BASE_DIR . '/includes/main_functions.php';
require_once W2P_BASE_DIR . '/includes/db_adodb.php';
require_once W2P_BASE_DIR . '/classes/ui.class.php';
require_once W2P_BASE_DIR . '/classes/event_queue.class.php';
require_once W2P_BASE_DIR . '/classes/query.class.php';
$AppUI = new CAppUI();
$AppUI->setUserLocale();
$queue = new EventQueue();
$queue->scan();
/*
 This is the first piece of a simple hook system to allow for regularly 
 scheduled maintenance tasks to occur.  This could be data validation and 
 cleanup, sending email notifications, or workflow related tasks.
 
 The model for this functionality was based on Drupal's methods for laying 
 out and interacting with hooks.  It should not be considered complete at 
 this time.
*/
$moduleList = $AppUI->getLoadableModuleList();
foreach ($moduleList as $module) {
    $object = new $module['mod_main_class']();
    if (is_callable(array($object, 'hook_cron'))) {
        $object->hook_cron();
    }
}
function dPsessionGC($maxlifetime)
{
    global $dPconfig;
    global $AppUI;
    dprint(__FILE__, __LINE__, 11, "Session Garbage collection running");
    $now = time();
    $max = dPsessionConvertTime('max_lifetime');
    $idle = dPsessionConvertTime('idle_time');
    // Find all the session
    $q = new DBQuery();
    $q->setDelete('sessions');
    $q->addWhere("UNIX_TIMESTAMP() - UNIX_TIMESTAMP(session_updated) > {$idle} OR UNIX_TIMESTAMP() - UNIX_TIMESTAMP(session_created) > {$max}");
    $q->exec();
    $q->clear();
    if (isset($dPconfig['session_gc_scan_queue']) && $dPconfig['session_gc_scan_queue']) {
        // We need to scan the event queue.  If $AppUI isn't created yet
        // And it isn't likely that it will be, we create it and run the
        // queue scanner.
        if (!isset($AppUI)) {
            $AppUI = new CAppUI();
            $queue = new EventQueue();
            $queue->scan();
        }
    }
    return true;
}
예제 #3
0
function dPsessionGC($maxlifetime)
{
    global $AppUI;
    dprint(__FILE__, __LINE__, 11, 'Session Garbage collection running');
    $now = time();
    $max = dPsessionConvertTime('max_lifetime');
    $idle = dPsessionConvertTime('idle_time');
    // First pass is to kill any users that are logged in at the time of the session.
    $where = 'UNIX_TIMESTAMP() - UNIX_TIMESTAMP(session_updated) > ' . $idle . ' OR UNIX_TIMESTAMP() - UNIX_TIMESTAMP(session_created) > ' . $max;
    $q = new DBQuery();
    $q->addTable('sessions');
    $q->addQuery('session_user');
    $q->addWhere($where);
    $sql2 = $q->prepare(true);
    $q->addTable('user_access_log');
    $q->addUpdate('date_time_out', date('Y-m-d H:i:s'));
    $q->addWhere('user_access_log_id IN (' . $sql2 . ')');
    $q->exec();
    $q->clear();
    // Now we simply delete the expired sessions.
    $q->setDelete('sessions');
    $q->addWhere($where);
    $q->exec();
    $q->clear();
    if (dPgetConfig('session_gc_scan_queue')) {
        // We need to scan the event queue.  If $AppUI isn't created yet
        // And it isn't likely that it will be, we create it and run the
        // queue scanner.
        if (!isset($AppUI)) {
            $AppUI = new CAppUI();
            $queue = new EventQueue();
            $queue->scan();
        }
    }
    return true;
}