Пример #1
0
 public static function UploadFileUnRegister($chatId, $files, $messages)
 {
     if (intval($chatId) <= 0) {
         return false;
     }
     $chatRelation = CIMChat::GetRelationById($chatId);
     if (!$chatRelation[self::GetUserId()]) {
         return false;
     }
     $folderModel = self::GetFolderModel($chatId);
     if (!$folderModel) {
         return false;
     }
     $result['CHAT_ID'] = $chatId;
     $result['FILE_ID'] = array();
     $result['MESSAGE_ID'] = array();
     foreach ($files as $fileTmpId => $fileId) {
         $fileModel = \Bitrix\Disk\File::getById($fileId);
         if (!$fileModel || $fileModel->getParentId() != $folderModel->getId() || $fileModel->getCreatedBy() != self::GetUserId()) {
             continue;
         }
         $fileModel->delete(self::GetUserId());
         $result['FILE_ID'][$fileTmpId] = $fileId;
     }
     foreach ($messages as $fileTmpId => $messageId) {
         if (!isset($result['FILE_ID'][$fileTmpId])) {
             continue;
         }
         $CIMMessage = new CIMMessage();
         $arMessage = $CIMMessage->GetMessage($messageId);
         if ($arMessage['AUTHOR_ID'] != self::GetUserId()) {
             continue;
         }
         CIMMessage::Delete($messageId);
         $result['MESSAGE_ID'][$fileTmpId] = $messageId;
     }
     if (empty($result['FILE_ID']) && empty($result['MESSAGE_ID'])) {
         return false;
     }
     if (CModule::IncludeModule('pull')) {
         $pullMessage = array('module_id' => 'im', 'command' => 'fileUnRegister', 'params' => array('chatId' => $result['CHAT_ID'], 'files' => $result['FILE_ID'], 'messages' => $result['MESSAGE_ID']));
         CPullStack::AddByUsers(array_keys($chatRelation), $pullMessage);
         $orm = \Bitrix\Im\ChatTable::getById($result['CHAT_ID']);
         $chat = $orm->fetch();
         if ($chat['TYPE'] == IM_MESSAGE_OPEN) {
             CPullWatch::AddToStack('IM_PUBLIC_' . $chat['ID'], $pullMessage);
         }
     }
     return $result;
 }
Пример #2
0
	public static function UploadFileUnRegister($chatId, $files, $messages)
	{
		if (intval($chatId) <= 0)
			return false;

		$chatRelation = CIMChat::GetRelationById($chatId);
		if (!$chatRelation[self::GetUserId()])
			return false;

		$folderModel = self::GetFolderModel($chatId);
		if (!$folderModel)
			return false;

		$result['CHAT_ID'] = $chatId;
		$result['FILE_ID'] = Array();
		$result['MESSAGE_ID'] = Array();
		foreach ($files as $fileTmpId => $fileId)
		{
			$fileModel = \Bitrix\Disk\File::getById($fileId);
			if (
				!$fileModel || $fileModel->getParentId() != $folderModel->getId()
				|| $fileModel->getCreatedBy() != self::GetUserId())
			{
				continue;
			}
			$fileModel->delete(self::GetUserId());
			$result['FILE_ID'][$fileTmpId] = $fileId;
		}
		foreach ($messages as $fileTmpId => $messageId)
		{
			if (!isset($result['FILE_ID'][$fileTmpId]))
				continue;

			$CIMMessage = new CIMMessage();
			$arMessage = $CIMMessage->GetMessage($messageId);
			if ($arMessage['AUTHOR_ID'] != self::GetUserId())
			{
				continue;
			}
			CIMMessage::Delete($messageId);
			$result['MESSAGE_ID'][$fileTmpId] = $messageId;
		}
		if (empty($result['FILE_ID']) && empty($result['MESSAGE_ID']))
			return false;

		if (CModule::IncludeModule('pull'))
		{
			foreach ($chatRelation as $relation)
			{
				CPullStack::AddByUser($relation['USER_ID'], Array(
					'module_id' => 'im',
					'command' => 'fileUnRegister',
					'params' => Array(
						'chatId' => $result['CHAT_ID'],
						'files' => $result['FILE_ID'],
						'messages' => $result['MESSAGE_ID'],
					)
				));
			}
		}

		return $result;
	}