%PDF- %PDF-
| Direktori : /home/bitrix/www/bitrix/modules/im/lib/update/ |
| Current File : /home/bitrix/www/bitrix/modules/im/lib/update/chatindex.php |
<?
namespace Bitrix\Im\Update;
use Bitrix\Im\Chat;
use Bitrix\Im\Model\ChatTable;
use Bitrix\Main\Update\Stepper;
use Bitrix\Main\Localization\Loc;
use Bitrix\Main\Loader;
use Bitrix\Main\Config\Option;
Loc::loadMessages(__FILE__);
final class ChatIndex extends Stepper
{
const OPTION_NAME = "im_index_chat";
protected static $moduleId = "im";
/**
* @inheritdoc
*/
public function execute(array &$result)
{
if (!Loader::includeModule(self::$moduleId))
return false;
$return = false;
$params = Option::get(self::$moduleId, self::OPTION_NAME, "");
$params = ($params !== "" ? @unserialize($params) : array());
$params = (is_array($params) ? $params : array());
if (empty($params))
{
$params = array(
"lastId" => 0,
"number" => 0,
"count" => ChatTable::getCount(array(
'=TYPE' => Array(Chat::TYPE_OPEN, Chat::TYPE_GROUP),
)),
);
}
if ($params["count"] > 0)
{
$result["title"] = Loc::getMessage("IM_UPDATE_CHAT_INDEX");
$result["progress"] = 1;
$result["steps"] = "";
$result["count"] = $params["count"];
$cursor = ChatTable::getList(array(
'order' => array('ID' => 'ASC'),
'filter' => array(
'>ID' => $params["lastId"],
'=TYPE' => Array(Chat::TYPE_OPEN, Chat::TYPE_GROUP),
),
'select' => array('ID', 'ENTITY_TYPE'),
'offset' => 0,
'limit' => 500
));
$found = false;
while ($row = $cursor->fetch())
{
if ($row['ENTITY_TYPE'] != 'LIVECHAT')
{
\CIMChat::index($row['ID']);
}
$params["lastId"] = $row['ID'];
$params["number"]++;
$found = true;
}
if ($found)
{
Option::set(self::$moduleId, self::OPTION_NAME, serialize($params));
$return = true;
}
$result["progress"] = intval($params["number"] * 100/ $params["count"]);
$result["steps"] = $params["number"];
if ($found === false)
{
Option::delete(self::$moduleId, array("name" => self::OPTION_NAME));
}
}
return $return;
}
}
?>