// 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;
/** * 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; } }