Пример #1
0
 // Assign default department
 if ($form->hasValidData('DepartamentID') && erLhcoreClassModelDepartament::getCount(array('filter' => array('id' => $form->DepartamentID, 'disabled' => 0))) > 0) {
     $inputData->departament_id = $chat->dep_id = $form->DepartamentID;
 } elseif ($chat->dep_id == 0 || erLhcoreClassModelDepartament::getCount(array('filter' => array('id' => $chat->dep_id, 'disabled' => 0))) == 0) {
     $departments = erLhcoreClassModelDepartament::getList(array('limit' => 1, 'filter' => array('disabled' => 0)));
     if (!empty($departments)) {
         $department = array_shift($departments);
         $chat->dep_id = $department->id;
     } else {
         $Errors[] = erTranslationClassLhTranslation::getInstance()->getTranslation('chat/startchat', 'Could not determine a default department!');
     }
 }
 if (count($Errors) == 0) {
     $chat->time = time();
     $chat->status = 0;
     $chat->setIP();
     $chat->hash = erLhcoreClassChat::generateHash();
     $chat->referrer = isset($_POST['URLRefer']) ? $_POST['URLRefer'] : '';
     $chat->session_referrer = isset($_POST['r']) ? $_POST['r'] : '';
     if ($chat->nick == '') {
         $chat->nick = erTranslationClassLhTranslation::getInstance()->getTranslation('chat/startchat', 'Visitor');
     }
     erLhcoreClassModelChat::detectLocation($chat);
     $chat->priority = is_numeric($Params['user_parameters_unordered']['priority']) ? (int) $Params['user_parameters_unordered']['priority'] : $chat->department->priority;
     $chat->chat_initiator = erLhcoreClassModelChat::CHAT_INITIATOR_PROACTIVE;
     // Store chat
     erLhcoreClassChat::getSession()->save($chat);
     // Mark as user has read message from operator.
     $userInstance->message_seen = 1;
     $userInstance->message_seen_ts = time();
     $userInstance->chat_id = $chat->id;
Пример #2
0
 /**
  * Gets pending chats
  */
 public static function getInstance($identifier = 'default', $chathash = '')
 {
     if ($identifier == '' || $identifier == 'default') {
         $identifier = 'default';
         $items = self::getList(array('filter' => array('identifier' => $identifier)));
         if (empty($items)) {
             $chatboxData = erLhcoreClassModelChatConfig::fetch('chatbox_data');
             $data = (array) $chatboxData->data;
             $chatbox = new erLhcoreClassModelChatbox();
             $chatbox->identifier = $identifier;
             $chatbox->name = $data['chatbox_default_name'];
             $chat = new erLhcoreClassModelChat();
             $chat->status = erLhcoreClassModelChat::STATUS_CHATBOX_CHAT;
             $chat->time = time();
             $chat->setIP();
             $chat->hash = erLhcoreClassChat::generateHash();
             $chat->nick = $data['chatbox_default_opname'];
             $chat->referrer = isset($_GET['URLReferer']) ? $_GET['URLReferer'] : '';
             // Assign default department
             $departments = erLhcoreClassModelDepartament::getList(array('filter' => array('disabled' => 0)));
             $ids = array_keys($departments);
             $id = array_shift($ids);
             $chat->dep_id = $id;
             // Store chat
             erLhcoreClassChat::getSession()->save($chat);
             $chatbox->chat_id = $chat->id;
             $chatbox->saveThis();
             return $chatbox;
         } else {
             return array_shift($items);
         }
     } else {
         $chatboxData = erLhcoreClassModelChatConfig::fetch('chatbox_data');
         $data = (array) $chatboxData->data;
         $canCreate = $data['chatbox_auto_enabled'] == 1 ? true : false;
         if ($canCreate == false) {
             if (sha1($data['chatbox_secret_hash'] . sha1($data['chatbox_secret_hash'] . $identifier)) == $chathash) {
                 $canCreate = true;
             }
         }
         if ($canCreate == true) {
             $items = self::getList(array('filter' => array('identifier' => $identifier)));
             if (empty($items)) {
                 $chatbox = new erLhcoreClassModelChatbox();
                 $chatbox->identifier = $identifier;
                 $chatbox->name = $data['chatbox_default_name'];
                 $chat = new erLhcoreClassModelChat();
                 $chat->status = erLhcoreClassModelChat::STATUS_CHATBOX_CHAT;
                 $chat->time = time();
                 $chat->setIP();
                 $chat->hash = erLhcoreClassChat::generateHash();
                 $chat->nick = $data['chatbox_default_opname'];
                 $chat->referrer = isset($_GET['URLReferer']) ? $_GET['URLReferer'] : '';
                 // Assign default department
                 $departments = erLhcoreClassModelDepartament::getList();
                 $ids = array_keys($departments);
                 $id = array_shift($ids);
                 $chat->dep_id = $id;
                 // Store chat
                 erLhcoreClassChat::getSession()->save($chat);
                 $chatbox->chat_id = $chat->id;
                 $chatbox->saveThis();
                 return $chatbox;
             } else {
                 return array_shift($items);
             }
         } else {
             $items = self::getList(array('filter' => array('identifier' => $identifier)));
             if (!empty($items)) {
                 return array_shift($items);
             }
         }
         return false;
     }
 }