3namespace Bitrix\Im\V2\Link\Url;
5use Bitrix\Im\Model\LinkUrlTable;
6use Bitrix\Im\V2\Common\ContextCustomer;
7use Bitrix\Im\V2\Link\Push;
8use Bitrix\Im\V2\Message;
9use Bitrix\Im\V2\MessageCollection;
10use Bitrix\Im\V2\Result;
11use Bitrix\Main\Application;
12use Bitrix\Main\ORM\Query\Query;
21 private bool $isBackgroundMode =
true;
22 private int $quotaOfFetchMetadata = 5;
24 public function getCount(
int $chatId, ?
int $startId =
null): int
26 $filter = Query::filter()->where(
'CHAT_ID', $chatId);
28 if (isset($startId) && $startId > 0)
30 $filter->where(
'MESSAGE_ID',
'>=', $startId);
33 return LinkUrlTable::getCount(
$filter);
42 if ($this->isBackgroundMode)
62 if (!$deleteResult->isSuccess())
64 return $result->addErrors($deleteResult->getErrors());
69 if (!$saveResult->isSuccess())
71 return $result->addErrors($saveResult->getErrors());
83 if (
count($urls) === 0)
97 if (
count($urls) === 0)
107 $deleteResult = $urls->delete();
109 if (!$deleteResult->isSuccess())
111 return $deleteResult;
114 foreach ($urls as
$url)
117 ->setContext($this->context)
122 return $deleteResult;
127 $this->isBackgroundMode = $isBackgroundMode;
134 $this->quotaOfFetchMetadata = $quota;
144 if ($urlCollection->hasUnsaved())
146 $saveResult = $this->
saveUrls($urlCollection);
147 if ($saveResult->isSuccess())
153 $result->addErrors($saveResult->getErrors());
162 return $urls->
save();
167 $urlEntities = LinkUrlTable::query()
169 ->where(
'MESSAGE_ID',
$message->getMessageId())
177 $urlEntities = LinkUrlTable::query()
179 ->whereIn(
'MESSAGE_ID',
$messages->getIds())
187 $urlCollection = new \Bitrix\Im\V2\Entity\Url\UrlCollection();
188 $countUrlsWithMetadata = 0;
190 foreach ($urls as
$url)
192 $withFetchMetadata = $countUrlsWithMetadata < $this->quotaOfFetchMetadata;
193 $urlCollection[] = new \Bitrix\Im\V2\Entity\Url\UrlItem(
$url, $withFetchMetadata);
194 $countUrlsWithMetadata++;
197 return UrlCollection::linkEntityToMessage($urlCollection,
$message);
202 foreach ($urls as
$url)
204 $recipient =
$url->getEntity()->getRichData()->getAllowedUsers();
205 if ($recipient ===
null)
208 ->setContext($this->context)
209 ->sendFull(
$url, self::ADD_URL_EVENT, [
'CHAT_ID' =>
$url->getChatId()])
215 ->setContext($this->context)
216 ->sendFull(
$url, self::ADD_URL_EVENT, [
'RECIPIENT' => $recipient])
static getUrlsFromText(?string $text)
save(bool $isGroupSave=false)
fillMetadata(bool $withHtml=true)
initUrlsByMessage(Message $message)
deleteUrls(UrlCollection $urls)
saveUrlsFromMessage(Message $message)
getUrlsByMessages(MessageCollection $messages)
setBackgroundMode(bool $isBackgroundMode)
sendAddPush(UrlCollection $urls)
saveUrls(UrlCollection $urls)
saveUrlsFromMessageInternal(Message $message)
getCount(int $chatId, ?int $startId=null)
deleteUrlsByMessages(MessageCollection $messages)
getUrlsByMessage(Message $message)
deleteUrlsByMessage(Message $message)
setQuotaOfFetchMetadata(int $quota)
updateUrlsFromMessage(Message $message)
</p ></td >< td valign=top style='border-top:none;border-left:none;border-bottom:solid windowtext 1.0pt;border-right:solid windowtext 1.0pt;padding:0cm 2.0pt 0cm 2.0pt;height:9.0pt'>< p class=Normal align=center style='margin:0cm;margin-bottom:.0001pt;text-align:center;line-height:normal'>< a name=ТекстовоеПоле54 ></a ><?=($taxRate > count( $arTaxList) > 0) ? $taxRate."%"