示例#1
0
	public static function AddUser($arParams)
	{
		$arConfig['CHAT_ID'] = intval($arParams['CHAT_ID']);
		if ($arConfig['CHAT_ID'] <= 0)
			return false;

		$arConfig['USERS'] = Array();
		if (is_array($arParams['USERS']))
		{
			foreach ($arParams['USERS'] as $value)
				$arConfig['USERS'][] = intval($value);
		}
		else
		{
			$arConfig['USERS'][] = intval($arParams['USERS']);
		}
		if (empty($arConfig['USERS']))
			return false;

		global $DB;

		$arChat = CIMChat::GetChatData(Array('ID' => $arConfig['CHAT_ID']));
		if (empty($arChat['chat']))
			return false;

		$arConfig['CALL_TYPE'] = intval($arChat['chat'][$arConfig['CHAT_ID']]['call']);
		$arConfig['LAST_CHAT_ID'] = $arConfig['CHAT_ID'];
		if ($arChat['chat'][$arConfig['CHAT_ID']]['type'] == IM_MESSAGE_PRIVATE)
		{
			$strSql = "UPDATE b_im_chat SET CALL_TYPE = ".IM_CALL_NONE." WHERE ID = ".$arConfig['CHAT_ID'];
			$DB->Query($strSql, false, "File: ".__FILE__."<br>Line: ".__LINE__);

			$strSql = "UPDATE b_im_relation SET CALL_STATUS = ".IM_CALL_STATUS_NONE." WHERE CHAT_ID = ".$arConfig['CHAT_ID'];
			$DB->Query($strSql, false, "File: ".__FILE__."<br>Line: ".__LINE__);

			$arUserToConnect = Array();
			$arUser = Array();

			foreach ($arChat['userCallStatus'][$arConfig['CHAT_ID']] as $userId => $callStatus)
			{
				$arUser[] = $userId;
				$arUserToConnect[$userId] = $callStatus;
			}

			$arUser = array_merge($arUser, $arConfig['USERS']);

			$CIMChat = new CIMChat();
			$chatId = $CIMChat->Add('', $arUser);
			if (!$chatId)
				return false;

			$arConfig['CHAT_ID'] = $chatId;

			$strSql = "UPDATE b_im_chat SET CALL_TYPE = ".$arConfig['CALL_TYPE']." WHERE ID = ".$arConfig['CHAT_ID'];
			$DB->Query($strSql, false, "File: ".__FILE__."<br>Line: ".__LINE__);

			$strSql = "UPDATE b_im_relation SET CALL_STATUS = ".IM_CALL_STATUS_WAIT." WHERE CHAT_ID = ".$arConfig['CHAT_ID'];
			$DB->Query($strSql, false, "File: ".__FILE__."<br>Line: ".__LINE__);

			foreach ($arUserToConnect as $userId => $callStatus)
			{
				$strSql = "UPDATE b_im_relation SET CALL_STATUS = ".$callStatus." WHERE CHAT_ID = ".$arConfig['CHAT_ID']." AND USER_ID = ".$userId;
				$DB->Query($strSql, false, "File: ".__FILE__."<br>Line: ".__LINE__);
			}
		}
		else if ($arChat['chat'][$arConfig['CHAT_ID']]['type'] == IM_MESSAGE_GROUP)
		{
			$CIMChat = new CIMChat();
			$result = $CIMChat->AddUser($arConfig['CHAT_ID'], $arConfig['USERS']);
			if (!$result)
				return false;

			$strSql = "UPDATE b_im_relation SET CALL_STATUS = ".IM_CALL_STATUS_WAIT." WHERE CHAT_ID = ".$arConfig['CHAT_ID']." AND USER_ID IN (".implode(',', $arConfig['USERS']).")";
			$DB->Query($strSql, false, "File: ".__FILE__."<br>Line: ".__LINE__);

			$arUserToConnect = Array();
			$arUser = Array();
			foreach ($arChat['userCallStatus'][$arConfig['CHAT_ID']] as $userId => $callStatus)
			{
				$arUser[] = $userId;
				$arUserToConnect[$userId] = $callStatus;
			}
			foreach ($arConfig['USERS'] as $userId)
			{
				$arUserToConnect[$userId] = IM_CALL_STATUS_WAIT;
			}
		}

		$arUserData = CIMContactList::GetUserData(Array('ID' => $arUser, 'DEPARTMENT' => 'N', 'HR_PHOTO' => 'Y'));
		$arConfig['USER_DATA']['USERS'] = $arUserData['users'];
		$arConfig['USER_DATA']['HR_PHOTO'] = $arUserData['hrphoto'];

		$arSend = Array();
		$arSend['users'] = $arUserData['users'];
		$arSend['hrphoto'] = $arUserData['hrphoto'];
		$arSend['lastChatId'] = $arConfig['LAST_CHAT_ID'];
		foreach ($arUserToConnect as $userId => $callStatus)
			self::Command($arConfig['CHAT_ID'], $userId, 'invite_user', $arSend);

		$arSend['video'] = $arConfig['CALL_TYPE'] == IM_CALL_VIDEO? true: false;
		$arSend['callToGroup'] = true;
		foreach ($arConfig['USERS'] as $userId)
			self::Command($arConfig['CHAT_ID'], $userId, 'join', $arSend);

		return $arConfig;
	}
示例#2
0
     }
     echo CUtil::PhpToJsObject(array('NOTIFY_ID' => intval($_POST['NOTIFY_ID']), 'ERROR' => $errorMessage));
 } else {
     if ($_POST['IM_RECENT_HIDE'] == 'Y') {
         if (substr($_POST['USER_ID'], 0, 4) == 'chat') {
             CIMContactList::DeleteRecent(substr($_POST['USER_ID'], 4), true);
         } else {
             CIMContactList::DeleteRecent($_POST['USER_ID']);
         }
         echo CUtil::PhpToJsObject(array('USER_ID' => htmlspecialcharsbx($_POST['USER_ID']), 'ERROR' => ''));
     } else {
         if ($_POST['IM_CHAT_ADD'] == 'Y') {
             $_POST['USERS'] = CUtil::JsObjectToPhp($_POST['USERS']);
             $errorMessage = "";
             $CIMChat = new CIMChat();
             $chatId = $CIMChat->Add('', $_POST['USERS']);
             if (!$chatId) {
                 if ($e = $GLOBALS["APPLICATION"]->GetException()) {
                     $errorMessage = $e->GetString();
                 }
             }
             echo CUtil::PhpToJsObject(array('CHAT_ID' => intval($chatId), 'ERROR' => $errorMessage));
         } else {
             if ($_POST['IM_CHAT_EXTEND'] == 'Y') {
                 $_POST['USERS'] = CUtil::JsObjectToPhp($_POST['USERS']);
                 $errorMessage = "";
                 $CIMChat = new CIMChat();
                 $result = $CIMChat->AddUser($_POST['CHAT_ID'], $_POST['USERS']);
                 if (!$result) {
                     if ($e = $GLOBALS["APPLICATION"]->GetException()) {
                         $errorMessage = $e->GetString();
示例#3
0
		));
	}
	else if ($_POST['IM_CHAT_ADD'] == 'Y')
	{
		$_POST['USERS'] = CUtil::JsObjectToPhp($_POST['USERS']);

		$errorMessage = "";
		$chatId = 0;
		if (!is_array($_POST['USERS']))
		{
			$errorMessage = 'Unknown error';
		}
		else
		{
			$CIMChat = new CIMChat();
			$chatId = $CIMChat->Add(Array('USERS' => $_POST['USERS']));
			if (!$chatId)
			{
				if ($e = $GLOBALS["APPLICATION"]->GetException())
					$errorMessage = $e->GetString();
			}
		}

		echo CUtil::PhpToJsObject(Array(
			'CHAT_ID' => intval($chatId),
			'ERROR' => $errorMessage
		));
	}
	else if ($_POST['IM_CHAT_EXTEND'] == 'Y')
	{
		$_POST['USERS'] = CUtil::JsObjectToPhp($_POST['USERS']);
示例#4
0
 public function GetDialogInfo($phone, $chatTitle = '', $getPhoto = true)
 {
     $phoneNormalize = CVoxImplantPhone::Normalize($phone);
     if (!$phoneNormalize) {
         $phoneNormalize = preg_replace("/[^0-9\\#\\*]/i", "", $phone);
     }
     $phone = $phoneNormalize;
     $hrPhoto = array();
     $openChat = true;
     $result = VI\PhoneTable::getList(array('select' => array('USER_ID', 'PHONE_MNEMONIC'), 'filter' => array('=PHONE_NUMBER' => $phone)));
     $userId = false;
     while ($row = $result->fetch()) {
         if (!$userId && $row['PHONE_MNEMONIC'] != 'WORK_PHONE') {
             $userId = $row['USER_ID'];
             $openChat = false;
         } else {
             if (!$userId && $row['PHONE_MNEMONIC'] == 'WORK_PHONE') {
                 $openChat = true;
             }
         }
     }
     if ($userId == $this->userId) {
         $openChat = true;
     }
     $dialogId = 0;
     if (CModule::IncludeModule('im')) {
         if (CVoxImplantConfig::GetChatAction() == CVoxImplantConfig::INTERFACE_CHAT_NONE) {
         } else {
             if ($openChat) {
                 $entityId = $phone;
                 if (CVoxImplantConfig::GetChatAction() == CVoxImplantConfig::INTERFACE_CHAT_APPEND) {
                     $entityId = 'UNIFY_CALL_CHAT';
                     $chatTitle = GetMessage('VI_CALL_CHAT_UNIFY');
                 }
                 $result = IM\ChatTable::getList(array('select' => array('ID', 'AVATAR'), 'filter' => array('=ENTITY_TYPE' => 'CALL', '=ENTITY_ID' => $entityId, '=AUTHOR_ID' => $this->userId)));
                 if ($row = $result->fetch()) {
                     $dialogId = 'chat' . $row['ID'];
                     $avatarId = $row['AVATAR'];
                 } else {
                     $CIMChat = new CIMChat($this->userId);
                     $chatId = $CIMChat->Add(array('TITLE' => $chatTitle != '' ? $chatTitle : $phone, 'USERS' => false, 'CALL_NUMBER' => $entityId == 'UNIFY_CALL_CHAT' ? '' : $entityId, 'ENTITY_TYPE' => 'CALL', 'ENTITY_ID' => $entityId));
                     if ($chatId) {
                         $dialogId = 'chat' . $chatId;
                         $avatarId = $CIMChat->lastAvatarId;
                     }
                 }
                 if ($getPhoto && intval($avatarId) > 0) {
                     $arPhotoHrTmp = CFile::ResizeImageGet($avatarId, array('width' => 200, 'height' => 200), BX_RESIZE_IMAGE_EXACT, false, false, true);
                     $hrPhoto[$dialogId] = empty($arPhotoHrTmp['src']) ? '/bitrix/js/im/images/hidef-avatar-v2.png' : $arPhotoHrTmp['src'];
                 }
             } else {
                 if ($userId) {
                     if ($getPhoto) {
                         $userData = CIMContactList::GetUserData(array('ID' => $userId, 'DEPARTMENT' => 'N', 'HR_PHOTO' => 'Y'));
                         $hrPhoto = $userData['hrphoto'];
                     }
                     $dialogId = $userId;
                 }
             }
         }
     }
     if (!$dialogId) {
         $this->error = new CVoxImplantError(__METHOD__, 'ERROR_NEW_CHAT', GetMessage('VI_ERROR_NEW_CHAT'));
         return false;
     }
     //foreach(GetModuleEvents("voximplant", "OnGetDialogInfo", true) as $arEvent)
     //	ExecuteModuleEventEx($arEvent, array('USER_ID' => $this->userId, 'DIALOG_ID' => $dialogId));
     return array('DIALOG_ID' => $dialogId, 'HR_PHOTO' => $hrPhoto);
 }
示例#5
0
         CIMContactList::DeleteRecent($chatId, true);
     } else {
         CIMContactList::DeleteRecent($_POST['USER_ID']);
     }
     echo CUtil::PhpToJsObject(array('USER_ID' => htmlspecialcharsbx($_POST['USER_ID']), 'ERROR' => ''));
 } else {
     if ($_POST['IM_CHAT_ADD'] == 'Y') {
         $_POST['USERS'] = CUtil::JsObjectToPhp($_POST['USERS']);
         $errorMessage = "";
         $chatId = 0;
         if ($_POST['USERS'] != 'open' && !is_array($_POST['USERS'])) {
             $errorMessage = GetMessage('IM_UNKNOWN_ERROR');
         } else {
             CUtil::decodeURIComponent($_POST);
             $CIMChat = new CIMChat();
             $chatId = $CIMChat->Add(array('TYPE' => $_POST['TYPE'] == 'open' ? IM_MESSAGE_OPEN : IM_MESSAGE_CHAT, 'USERS' => $_POST['USERS'], 'TITLE' => $_POST['TITLE'], 'MESSAGE' => $_POST['MESSAGE'], 'SEARCH_MARK' => $_POST['SEARCH_MARK']));
             if (!$chatId) {
                 if ($e = $GLOBALS["APPLICATION"]->GetException()) {
                     $errorMessage = $e->GetString();
                 }
             }
         }
         echo CUtil::PhpToJsObject(array('CHAT_ID' => intval($chatId), 'ERROR' => $errorMessage));
     } else {
         if ($_POST['IM_CHAT_EXTEND'] == 'Y') {
             $_POST['USERS'] = CUtil::JsObjectToPhp($_POST['USERS']);
             $errorMessage = "";
             $userId = $USER->GetId();
             if (CIMChat::GetGeneralChatId() == intval($_POST['CHAT_ID'])) {
                 $errorMessage = GetMessage('IM_ACCESS_ERROR');
             } else {
示例#6
0
         }
         CIMContactList::DeleteRecent($chatId, true);
     } else {
         CIMContactList::DeleteRecent($_POST['USER_ID']);
     }
     echo CUtil::PhpToJsObject(array('USER_ID' => htmlspecialcharsbx($_POST['USER_ID']), 'ERROR' => ''));
 } else {
     if ($_POST['IM_CHAT_ADD'] == 'Y') {
         $_POST['USERS'] = CUtil::JsObjectToPhp($_POST['USERS']);
         $errorMessage = "";
         $chatId = 0;
         if (!is_array($_POST['USERS'])) {
             $errorMessage = 'Unknown error';
         } else {
             $CIMChat = new CIMChat();
             $chatId = $CIMChat->Add(array('USERS' => $_POST['USERS'], 'SEARCH_MARK' => $_POST['SEARCH_MARK']));
             if (!$chatId) {
                 if ($e = $GLOBALS["APPLICATION"]->GetException()) {
                     $errorMessage = $e->GetString();
                 }
             }
         }
         echo CUtil::PhpToJsObject(array('CHAT_ID' => intval($chatId), 'ERROR' => $errorMessage));
     } else {
         if ($_POST['IM_CHAT_EXTEND'] == 'Y') {
             $_POST['USERS'] = CUtil::JsObjectToPhp($_POST['USERS']);
             $errorMessage = "";
             $CIMChat = new CIMChat();
             $result = $CIMChat->AddUser($_POST['CHAT_ID'], $_POST['USERS'], array('SEARCH_MARK' => $_POST['SEARCH_MARK']));
             if (!$result) {
                 if ($e = $GLOBALS["APPLICATION"]->GetException()) {