public function handleStatusBindOperation($event, $nodeFrom, $nodeTo) { if (isset($event["guid"])) { $userId = \Bitrix\Replica\Client\User::getId($event["guid"]); if ($userId > 0) { \Bitrix\Replica\Mapper::getInstance()->add("b_im_status.USER_ID", $userId, $nodeFrom, $event["guid"]); $res = \Bitrix\Im\StatusTable::getById($userId); if ($res->fetch()) { //Insert operation \Bitrix\Replica\Db\Operation::writeInsert("b_im_status", $this->getPrimary(), array("USER_ID" => $userId)); } } } }
/** * Registers b_im_status record in the replication map * and sends the record back as an insert operation. * * @param array $event Event made by onStartUserReplication method. * @param string $nodeFrom Source database. * @param string $nodeTo Target database. * * @return void * @see \Bitrix\Im\Replica\StatusHandler::onStartUserReplication */ public function handleStatusBindOperation($event, $nodeFrom, $nodeTo) { if (!isset($event["guid"])) { return; } list($userGuid, ) = explode('@', $event["guid"]); if (!$userGuid) { return; } $userId = \Bitrix\Replica\Client\User::getLocalUserId($userGuid); if (!$userId) { return; } $mapper = \Bitrix\Replica\Mapper::getInstance(); $mapper->add("b_im_status.USER_ID", $userId, $nodeFrom, $event["guid"]); $res = \Bitrix\Im\StatusTable::getById($userId); if ($res->fetch()) { //Insert operation \Bitrix\Replica\Db\Operation::writeInsert("b_im_status", $this->getPrimary(), array("USER_ID" => $userId)); } }