getPendingChats() public static method

Gets pending chats
public static getPendingChats ( $limit = 50, $offset, $filterAdditional = [], $filterAdditionalMainAttr = [], $limitationDepartment = [] )
    $ReturnMessages['closed_chats'] = array('list' => array_values($chats));
}
if ($pendingTabEnabled == true) {
    $additionalFilter = array('ignore_fields' => erLhcoreClassChat::$chatListIgnoreField);
    if ($showAllPending == 0) {
        $additionalFilter['filter']['user_id'] = $currentUser->getUserID();
    }
    if (is_array($Params['user_parameters_unordered']['pendingd']) && !empty($Params['user_parameters_unordered']['pendingd'])) {
        erLhcoreClassChat::validateFilterIn($Params['user_parameters_unordered']['pendingd']);
        $additionalFilter['filterin']['dep_id'] = $Params['user_parameters_unordered']['pendingd'];
    }
    $limitList = is_numeric($Params['user_parameters_unordered']['limitp']) ? (int) $Params['user_parameters_unordered']['limitp'] : 10;
    /**
     * Pending chats
     * */
    $pendingChats = erLhcoreClassChat::getPendingChats($limitList, 0, $additionalFilter);
    /**
     * Get last pending chat
     * */
    $lastPendingChatID = 0;
    $lastChatNick = erTranslationClassLhTranslation::getInstance()->getTranslation('chat/startchat', 'Visitor');
    $lastMessage = erTranslationClassLhTranslation::getInstance()->getTranslation('pagelayout/pagelayout', 'New chat request');
    if (!empty($pendingChats)) {
        $lastPendingChatID = max(array_keys($pendingChats));
        $chatRecent = reset($pendingChats);
        $lastChatNick = $chatRecent->nick . ' | ' . $chatRecent->department;
        $lastMessage = erLhcoreClassChat::getGetLastChatMessagePending($chatRecent->id);
    }
    erLhcoreClassChat::prefillGetAttributes($pendingChats, array('time_created_front', 'department_name', 'wait_time_pending', 'wait_time_seconds', 'plain_user_name'), array('department', 'time', 'status', 'user_id', 'user'));
    $ReturnMessages['pending_chats'] = array('list' => array_values($pendingChats), 'nick' => $lastChatNick, 'msg' => $lastMessage, 'last_id_identifier' => 'pending_chat', 'last_id' => $lastPendingChatID);
}
Beispiel #2
0
<?php

$currentUser = erLhcoreClassUser::instance();
if (!$currentUser->isLogged() && !$currentUser->authenticate($_POST['username'], $_POST['password'])) {
    exit;
}
$activeChats = erLhcoreClassChat::getActiveChats(10);
$closedChats = erLhcoreClassChat::getClosedChats(10);
$pendingChats = erLhcoreClassChat::getPendingChats(10);
$transferedChats = erLhcoreClassTransfer::getTransferChats();
$unreadChats = erLhcoreClassChat::getUnreadMessagesChats(10, 0);
erLhcoreClassChat::prefillGetAttributes($activeChats, array('department_name'), array('updateIgnoreColumns', 'department'));
erLhcoreClassChat::prefillGetAttributes($closedChats, array('department_name'), array('updateIgnoreColumns', 'department'));
erLhcoreClassChat::prefillGetAttributes($pendingChats, array('department_name'), array('updateIgnoreColumns', 'department'));
erLhcoreClassChat::prefillGetAttributes($unreadChats, array('department_name'), array('updateIgnoreColumns', 'department'));
$onlineUsers = array();
if ($currentUser->hasAccessTo('lhchat', 'use_onlineusers')) {
    $filter = array('offset' => 0, 'limit' => 50, 'sort' => 'last_visit DESC', 'filtergt' => array('last_visit' => time() - 3600));
    $departmentParams = array();
    $userDepartments = erLhcoreClassUserDep::parseUserDepartmetnsForFilter($currentUser->getUserID());
    if ($userDepartments !== true) {
        $departmentParams['filterin']['id'] = $userDepartments;
        if (!$currentUser->hasAccessTo('lhchat', 'sees_all_online_visitors')) {
            $filter['filterin']['dep_id'] = $userDepartments;
        }
    }
    $onlineUsers = erLhcoreClassModelChatOnlineUser::getList($filter);
}
$columnsToHide = array('user_closed_ts', 'tslasign', 'reinform_timeout', 'unread_messages_informed', 'wait_timeout', 'wait_timeout_send', 'status_sub', 'timeout_message', 'nc_cb_executed', 'fbst', 'user_id', 'transfer_timeout_ts', 'operator_typing_id', 'transfer_timeout_ac', 'transfer_if_na', 'na_cb_executed', 'status', 'remarks', 'operation', 'operation_admin', 'screenshot_id', 'mail_send', 'online_user_id', 'dep_id', 'last_msg_id', 'hash', 'user_status', 'support_informed', 'support_informed', 'country_code', 'user_typing', 'user_typing_txt', 'lat', 'lon', 'chat_initiator', 'chat_variables', 'chat_duration', 'operator_typing', 'has_unread_messages', 'last_user_msg_time', 'additional_data');
$columnsName = array('id' => 'ID', 'user_tz_identifier' => 'User time zone', 'department_name' => 'Department', 'nick' => 'Nick', 'time' => 'Time', 'referrer' => 'Referrer', 'session_referrer' => 'Original referrer', 'ip' => 'IP', 'country_name' => 'Country', 'email' => 'E-mail', 'priority' => 'Priority', 'name' => 'Department', 'phone' => 'Phone', 'city' => 'City', 'wait_time' => 'Waited');
$onlineuserscolumnsToHide = array('requires_phone', 'lat_check_time', 'dep_id', 'requires_email', 'requires_username', 'invitation_seen_count', 'screenshot_id', 'operation', 'reopen_chat', 'vid', 'user_country_code', 'invitation_assigned', 'current_page', 'chat_id', 'operator_user_id', 'message_seen', 'operator_user_proactive', 'message_seen_ts', 'lat', 'lon', 'invitation_id', 'time_on_site', 'tt_time_on_site', 'invitation_count', 'store_chat');
    /**
     * Closed chats
     * */
    $chats = erLhcoreClassChat::getClosedChats(10, 0, array('ignore_fields' => erLhcoreClassChat::$chatListIgnoreField));
    erLhcoreClassChat::prefillGetAttributes($chats, array('time_created_front', 'department_name'), array('department', 'time', 'status', 'dep_id', 'user_id'));
    $ReturnMessages['closed_chats'] = array('list' => array_values($chats));
}
if ($pendingTabEnabled == true) {
    $additionalFilter = array('ignore_fields' => erLhcoreClassChat::$chatListIgnoreField);
    if ($showAllPending == 0) {
        $additionalFilter['filter']['user_id'] = $currentUser->getUserID();
    }
    /**
     * Pending chats
     * */
    $pendingChats = erLhcoreClassChat::getPendingChats(10, 0, $additionalFilter);
    /**
     * Get last pending chat
     * */
    $lastPendingChatID = 0;
    $lastChatNick = erTranslationClassLhTranslation::getInstance()->getTranslation('chat/startchat', 'Visitor');
    $lastMessage = erTranslationClassLhTranslation::getInstance()->getTranslation('pagelayout/pagelayout', 'New chat request');
    if (!empty($pendingChats)) {
        $lastPendingChatID = max(array_keys($pendingChats));
        $chatRecent = reset($pendingChats);
        $lastChatNick = $chatRecent->nick . ' | ' . $chatRecent->department;
        $lastMessage = erLhcoreClassChat::getGetLastChatMessagePending($chatRecent->id);
    }
    erLhcoreClassChat::prefillGetAttributes($pendingChats, array('time_created_front', 'department_name', 'user_name'), array('department', 'time', 'status', 'dep_id', 'user_id', 'user'));
    $ReturnMessages['pending_chats'] = array('list' => array_values($pendingChats), 'nick' => $lastChatNick, 'msg' => $lastMessage, 'last_id_identifier' => 'pending_chat', 'last_id' => $lastPendingChatID);
}
    $tpl = erLhcoreClassTemplate::getInstance('lhchat/printchats.tpl.php');
    $items = erLhcoreClassChat::getPendingChats(10000, 0, $filterParams['filter']);
    $tpl->set('items', $items);
    $Result['content'] = $tpl->fetch();
    $Result['pagelayout'] = 'popup';
    return;
}
if (in_array($Params['user_parameters_unordered']['xls'], array(1, 2))) {
    erLhcoreClassChatExport::chatListExportXLS(erLhcoreClassChat::getPendingChats(10000, 0, $filterParams['filter']), array('type' => (int) $Params['user_parameters_unordered']['xls']));
    exit;
}
$append = erLhcoreClassSearchHandler::getURLAppendFromInput($filterParams['input_form']);
$pages = new lhPaginator();
$pages->items_total = erLhcoreClassChat::getPendingChatsCount($filterParams['filter']);
$pages->translationContext = 'chat/pendingchats';
$pages->serverURL = erLhcoreClassDesign::baseurl('chat/pendingchats') . $append;
$pages->paginate();
$tpl->set('pages', $pages);
if ($pages->items_total > 0) {
    $items = erLhcoreClassChat::getPendingChats($pages->items_per_page, $pages->low, $filterParams['filter']);
    $tpl->set('items', $items);
}
$filterParams['input_form']->form_action = erLhcoreClassDesign::baseurl('chat/pendingchats');
$tpl->set('input', $filterParams['input_form']);
$tpl->set('inputAppend', $append);
$tpl->set('can_delete_global', $currentUser->hasAccessTo('lhchat', 'deleteglobalchat'));
$tpl->set('can_delete_general', $currentUser->hasAccessTo('lhchat', 'deletechat'));
$tpl->set('current_user_id', $currentUser->getUserID());
$Result['content'] = $tpl->fetch();
$Result['path'] = array(array('url' => erLhcoreClassDesign::baseurl('chat/lists'), 'title' => erTranslationClassLhTranslation::getInstance()->getTranslation('chat/pendingchats', 'Chats list')), array('title' => erTranslationClassLhTranslation::getInstance()->getTranslation('chat/pendingchats', 'Pending chats')));
erLhcoreClassChatEventDispatcher::getInstance()->dispatch('chat.pendingchats_path', array('result' => &$Result));
     erLhcoreClassChat::validateFilterIn($Params['user_parameters_unordered']['pendingd']);
     $additionalFilter['filterin']['dep_id'] = $Params['user_parameters_unordered']['pendingd'];
 }
 if (is_array($Params['user_parameters_unordered']['pendingdprod']) && !empty($Params['user_parameters_unordered']['pendingdprod'])) {
     erLhcoreClassChat::validateFilterIn($Params['user_parameters_unordered']['pendingdprod']);
     $additionalFilter['filterin']['product_id'] = $Params['user_parameters_unordered']['pendingdprod'];
 }
 $limitList = is_numeric($Params['user_parameters_unordered']['limitp']) ? (int) $Params['user_parameters_unordered']['limitp'] : 10;
 $filterAdditionalMainAttr = array();
 if ($Params['user_parameters_unordered']['psort'] == 'asc') {
     $filterAdditionalMainAttr['sort'] = 'priority DESC, id ASC';
 }
 /**
  * Pending chats
  * */
 $pendingChats = erLhcoreClassChat::getPendingChats($limitList, 0, $additionalFilter, $filterAdditionalMainAttr);
 /**
  * Get last pending chat
  * */
 $lastPendingChatID = 0;
 $lastChatNick = erTranslationClassLhTranslation::getInstance()->getTranslation('chat/startchat', 'Visitor');
 $lastMessage = erTranslationClassLhTranslation::getInstance()->getTranslation('pagelayout/pagelayout', 'New chat request');
 if (!empty($pendingChats)) {
     $lastPendingChatID = max(array_keys($pendingChats));
     $chatRecent = reset($pendingChats);
     $lastChatNick = $chatRecent->nick . ' | ' . $chatRecent->department;
     $lastMessage = erLhcoreClassChat::getGetLastChatMessagePending($chatRecent->id);
 }
 erLhcoreClassChat::prefillGetAttributes($pendingChats, array('time_created_front', 'product_name', 'department_name', 'wait_time_pending', 'wait_time_seconds', 'plain_user_name'), array('product_id', 'product', 'department', 'time', 'status', 'user_id', 'user'));
 $ReturnMessages['pending_chats'] = array('list' => array_values($pendingChats), 'nick' => $lastChatNick, 'msg' => $lastMessage, 'last_id_identifier' => 'pending_chat', 'last_id' => $lastPendingChatID);
 $chatsList[] =& $ReturnMessages['pending_chats']['list'];
<?php

$data = json_decode(file_get_contents("php://input"));
?>
<script>
               
        <?php 
$re = erLhcoreClassChat::getPendingChats();
?>
        <?php 
$endre = end($re);
?>
        var Id=   <?php 
echo $data->data;
?>
;
        angular.element(document.getElementById('cont')).scope().lhc.startChat( Id,'Visitor');
</script>