automaticChatPurge() public static méthode

public static automaticChatPurge ( )
 *
 * */
echo "Starting chat/workflow\n";
if (erLhcoreClassModelChatConfig::fetch('run_departments_workflow')->current_value == 1) {
    echo "Starting departments workflow\n";
    $ts = time();
    foreach (erLhcoreClassChat::getList(array('limit' => 500, 'customfilter' => array('transfer_timeout_ts < (' . $ts . '-transfer_timeout_ac)'), 'filter' => array('status' => erLhcoreClassModelChat::STATUS_PENDING_CHAT, 'transfer_if_na' => 1))) as $chat) {
        $canExecuteWorkflow = true;
        if (erLhcoreClassModelChatConfig::fetch('pro_active_limitation')->current_value >= 0) {
            if ($chat->department !== false && $chat->department->department_transfer_id > 0) {
                $canExecuteWorkflow = erLhcoreClassChat::getPendingChatsCountPublic($chat->department->department_transfer_id) <= erLhcoreClassModelChatConfig::fetch('pro_active_limitation')->current_value;
            }
        }
        if ($canExecuteWorkflow == true) {
            erLhcoreClassChatWorkflow::transferWorkflow($chat);
            echo "executing department transfer workflow for - ", $chat->id, "\n";
        } else {
            echo "Skipping transfer because dedicated department queue is full\n";
        }
    }
    echo "Ended departments workflow\n";
}
// Unanswered chats callback
echo erLhcoreClassChatWorkflow::mainUnansweredChatWorkflow();
echo "Closed chats - ", erLhcoreClassChatWorkflow::automaticChatClosing(), "\n";
echo "Purged chats - ", erLhcoreClassChatWorkflow::automaticChatPurge(), "\n";
foreach (erLhcoreClassChat::getList(array('limit' => 500, 'filter' => array('status' => erLhcoreClassModelChat::STATUS_PENDING_CHAT))) as $chat) {
    erLhcoreClassChatWorkflow::autoAssign($chat, $chat->department);
    erLhcoreClassChatEventDispatcher::getInstance()->dispatch('chat.pending_process_workflow', array('chat' => &$chat));
}
echo "Ended chat/workflow\n";
Exemple #2
0
<?php

$tpl = erLhcoreClassTemplate::getInstance('lhchat/maintenance.tpl.php');
if ($Params['user_parameters_unordered']['action'] == 'closechats' || $Params['user_parameters_unordered']['action'] == 'purgechats' || $Params['user_parameters_unordered']['action'] == 'updateduration') {
    $currentUser = erLhcoreClassUser::instance();
    if (!$currentUser->validateCSFRToken($Params['user_parameters_unordered']['csfr'])) {
        die('Invalid CSRF Token');
        exit;
    }
    if ($Params['user_parameters_unordered']['action'] == 'closechats') {
        $tpl->set('closedchats', erLhcoreClassChatWorkflow::automaticChatClosing());
    }
    if ($Params['user_parameters_unordered']['action'] == 'purgechats') {
        $tpl->set('purgedchats', erLhcoreClassChatWorkflow::automaticChatPurge());
    }
    if ($Params['user_parameters_unordered']['action'] == 'updateduration') {
        $db = ezcDbInstance::get();
        $db->query('UPDATE lh_chat SET chat_duration = (SELECT MAX(lh_msg.time) FROM lh_msg WHERE lh_msg.chat_id = lh_chat.id AND lh_msg.user_id = 0)-(lh_chat.time+lh_chat.wait_time)');
        $db->query('UPDATE lh_chat SET chat_duration = 0 WHERE chat_duration < 0');
        $tpl->set('updatedduration', true);
    }
}
$Result['content'] = $tpl->fetch();
$Result['path'] = array(array('url' => erLhcoreClassDesign::baseurl('system/configuration'), 'title' => erTranslationClassLhTranslation::getInstance()->getTranslation('department/departments', 'System configuration')), array('title' => erTranslationClassLhTranslation::getInstance()->getTranslation('chat/maintenance', 'Maintenance')));
erLhcoreClassChatEventDispatcher::getInstance()->dispatch('chat.maintenance_path', array('result' => &$Result));