25 use SidebarFilterProcessorTrait;
26 use MigrationStatusCheckerTrait;
32 return FileItem::class;
35 public static function find(
44 $fileOrder = [
'ID' =>
'DESC'];
48 $fileOrder[
'ID'] =
$order[
'ID'];
51 $query = LinkFileTable::query();
52 static::addRightsCheckToQuery(
$query,
$context->getUserId(), [
'FILE.ID',
'FILE.CREATED_BY']);
54 ->setSelect([
'ID',
'DISK_FILE_ID',
'SUBTYPE',
'AUTHOR_ID',
'MESSAGE_ID',
'CHAT_ID',
'DATE_CREATE'])
55 ->setOrder($fileOrder)
62 $collection =
new static(
$query->fetchCollection());
63 $collection->fillFiles();
70 $entity = LinkFileTable::query()
71 ->setSelect([
'ID',
'MESSAGE_ID',
'CHAT_ID',
'SUBTYPE',
'DISK_FILE_ID',
'DATE_CREATE',
'AUTHOR_ID'])
72 ->where(
'DISK_FILE_ID', $diskFileId)
76 return (
new static(
$entity))->fillFiles();
81 $messageIds = array_map(
'intval', $messageIds);
83 if (empty($messageIds))
88 $entities = LinkFileTable::query()
89 ->setSelect([
'ID',
'MESSAGE_ID',
'CHAT_ID',
'SUBTYPE',
'DISK_FILE_ID',
'DATE_CREATE',
'AUTHOR_ID'])
90 ->whereIn(
'MESSAGE_ID', $messageIds)
94 return new self($entities);
103 foreach ($this as $file)
105 if ($entities->getById($file->getEntityId()) !==
null)
107 $file->setEntity($entities->getById($file->getEntityId()));
118 return parent::getPopupData($excludedList)->merge(
$data);
123 if (!static::isMigrationFinished())
128 return parent::save($isGroupSave);
135 if (isset(
$filter[
'SEARCH_FILE_NAME']))
137 $query->whereLike(
'FILE.NAME',
"{$filter['SEARCH_FILE_NAME']}%");
144 $subtypes = Subtype::getSubtypeFilter(
$filter[
'SUBTYPE']);
148 $subtypes = SubtypeGroup::getSubtypeFilter(
$filter[
'GROUP']);
151 if (
count($subtypes) > 1)
153 $query->whereIn(
'SUBTYPE', $subtypes);
157 $query->where(
'SUBTYPE', array_values($subtypes)[0]);
163 $securityContext = new \Bitrix\Disk\Security\DiskSecurityContext(
$userId);
165 $parameters = \Bitrix\Disk\Driver::getInstance()
167 ->addRightsCheck($securityContext, $parameters, $specificColumns)
171 $field = $parameters[
'runtime'][0];
172 $field->configureValueType(
Fields\IntegerField::class);
174 ->registerRuntimeField($field)
175 ->where(
'RIGHTS_CHECK', 1);
if( $daysToExpire >=0 &&$daysToExpire< 60 elseif)( $daysToExpire< 0)