public function process() { $list = erLhcoreClassChat::getList(array('limit' => 100, 'filterlt' => array('time' => $this->range_to), 'filtergt' => array('time' => $this->range_from))); self::$archiveTable = "lh_chat_archive_{$this->id}"; self::$archiveMsgTable = "lh_chat_archive_msg_{$this->id}"; $pending_archive = count($list); $messagesArchived = 0; $firstChatID = 0; $lastChatID = 0; foreach ($list as $item) { if ($firstChatID == 0) { $firstChatID = $item->id; } $archive = new erLhcoreClassModelChatArchive(); $archive->setState(get_object_vars($item)); $archive->id = null; $archive->saveThis(); $messages = erLhcoreClassModelmsg::getList(array('limit' => 1000, 'filter' => array('chat_id' => $item->id))); $messagesArchived += count($messages); foreach ($messages as $msg) { $msgArchive = new erLhcoreClassModelChatArchiveMsg(); $msgArchive->setState(get_object_vars($msg)); $msgArchive->id = null; $msgArchive->chat_id = $archive->id; erLhcoreClassChat::getSession()->save($msgArchive); } $lastChatID = $item->id; $item->removeThis(); } return array('error' => 'false', 'fcid' => $firstChatID, 'lcid' => $lastChatID, 'messages_archived' => $messagesArchived, 'chats_archived' => count($list), 'pending_archive' => $pending_archive == 100 ? 'true' : 'false'); }
<?php // Set new chat owner $currentUser = erLhcoreClassUser::instance(); $currentUser->getUserID(); $archive = erLhcoreClassModelChatArchiveRange::fetch($Params['user_parameters']['archive_id']); $archive->setTables(); $chat = erLhcoreClassModelChatArchive::fetch($Params['user_parameters']['chat_id']); // Chat can be closed only by owner if (erLhcoreClassChat::hasAccessToRead($chat)) { $tpl = erLhcoreClassTemplate::getInstance('lhchat/sendmail.tpl.php'); $mailTemplate = erLhAbstractModelEmailTemplate::fetch(1); erLhcoreClassChatMail::prepareSendMail($mailTemplate); $mailTemplate->recipient = $chat->email; if (isset($_POST['SendMail'])) { $Errors = erLhcoreClassChatMail::validateSendMail($mailTemplate, $chat, array('archive_mode' => true)); if (count($Errors) == 0) { erLhcoreClassChatMail::sendMail($mailTemplate, $chat); // Set as mail send only if recipient is the same as chat user if ($chat->email == $mailTemplate->recipient) { $chat->mail_send = 1; $chat->saveThis(); } $tpl->set('message_saved', true); } else { $tpl->set('errors', $Errors); } } $tpl->set('mail_template', $mailTemplate); $tpl->set('chat', $chat); $Result['content'] = $tpl->fetch();