Server IP : 80.87.202.40 / Your IP : 216.73.216.169 Web Server : Apache System : Linux rospirotorg.ru 5.14.0-539.el9.x86_64 #1 SMP PREEMPT_DYNAMIC Thu Dec 5 22:26:13 UTC 2024 x86_64 User : bitrix ( 600) PHP Version : 8.2.27 Disable Function : NONE MySQL : OFF | cURL : ON | WGET : ON | Perl : ON | Python : OFF | Sudo : ON | Pkexec : ON Directory : /home/bitrix/ext_www/rospirotorg.ru/bitrix/modules/ui/lib/Avatar/Model/ |
Upload File : |
<?php namespace Bitrix\UI\Avatar\Model; use Bitrix\Main; use Bitrix\Main\ORM\Fields\DatetimeField; use Bitrix\Main\ORM\Fields\IntegerField; use Bitrix\Main\ORM\Fields\Relations\Reference; use Bitrix\Main\ORM\Query\Join; use Bitrix\Main\Type\DateTime; use Bitrix\UI\Avatar; class RecentlyUsedTable extends OrmDataManager { public static function getTableName(): string { return 'b_ui_avatar_mask_recently_used'; } public static function getMap(): array { return array( (new IntegerField('ID')) ->configurePrimary() ->configureAutocomplete(), (new IntegerField('ITEM_ID'))->configureRequired(), (new IntegerField('USER_ID', []))->configureRequired(), (new DatetimeField('TIMESTAMP_X')) ->configureDefaultValue(function() { return new DateTime(); }), (new Reference( 'MASK', ItemTable::class, Join::on('this.ITEM_ID', 'ref.ID') ))->configureJoinType(Join::TYPE_INNER), ); } public static function addFromUser($itemId, $userId) { $entity = static::getEntity(); $sqlTableName = static::getTableName(); $sqlHelper = $entity->getConnection()->getSqlHelper(); $filter = ['ITEM_ID' => $itemId, 'USER_ID' => $userId]; $where = Main\ORM\Query\Query::buildFilterSql($entity, $filter); if ($where !== '') { $sql = "DELETE FROM {$sqlHelper->quote($sqlTableName)} WHERE " . $where; $entity->getConnection()->queryExecute($sql); } static::add($filter); //Delete excessive data $counter = 10; $filter = ['=USER_ID' => $userId]; $records = static::getList([ 'select' => ['ID'], 'filter' => $filter, 'limit' => $counter + 1, 'order' => [ 'ID' => 'ASC' ] ])->fetchAll(); if (count($records) > $counter) { $lastRecord = end($records); $filter['<ID'] = $lastRecord['ID']; $where = Main\ORM\Query\Query::buildFilterSql($entity, $filter); if ($where !== '') { $sql = "DELETE FROM {$sqlHelper->quote($sqlTableName)} WHERE " . $where; $entity->getConnection()->queryExecute($sql); } } } }