3namespace Bitrix\Im\V2\Common;
5use Bitrix\Main\Application;
6use Bitrix\Main\ORM\Data\DataManager;
7use Bitrix\Main\ORM\Data\Internal\DeleteByFilterTrait;
8use Bitrix\Main\ORM\Query\Filter\Helper;
9use Bitrix\Main\ORM\Query\Query;
10use Bitrix\Main\Search\Content;
15 use DeleteByFilterTrait;
17 private static bool $isAlreadyPlanned =
false;
19 public static function indexInBackground():
void
21 if (self::$isAlreadyPlanned)
26 self::$isAlreadyPlanned =
true;
31 public static function prepareSearchString(
string $searchString):
string
33 $searchString = Content::prepareStringToken($searchString);
34 $searchString = Helper::matchAgainstWildcard($searchString);
39 public static function deleteByParentFilter(
array $filter):
void
41 $baseTablePrimary = static::getBaseDataClass()::getEntity()->getPrimary();
42 $indexTablePrimary = static::getEntity()->getPrimary();
43 $rows = static::getBaseDataClass()::getList([
'select' => [$baseTablePrimary],
'filter' =>
$filter])->fetchAll();
46 foreach (
$rows as $row)
48 $primaries[] = (int)$row[$baseTablePrimary];
51 if (empty($primaries))
58 static::deleteByFilter([
"={$indexTablePrimary}" => $primaries]);
61 public static function updateIndexStatus(
array $ids,
bool $status =
true):
void
70 $baseTable = $sqlHelper->quote(static::getBaseDataClass()::getTableName());
71 $baseTablePrimary = $sqlHelper->quote(static::getBaseDataClass()::getEntity()->getPrimary());
72 $implodeIds = implode(
',', $ids);
73 $statusString =
$status ?
'Y' :
'N';
77 SET IS_INDEXED = '{$statusString}'
78 WHERE {$baseTablePrimary} IN ({$implodeIds});
84 private static function runIndex():
void
87 self::$isAlreadyPlanned =
false;
93 abstract protected static function getBaseDataClass(): string;
95 abstract public static function index(): void;
</td ></tr ></table ></td ></tr >< tr >< td class="bx-popup-label bx-width30"><?=GetMessage("PAGE_NEW_TAGS")?> array( $site)
trait MultiplyInsertTrait