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/cvetdv.ru/bitrix/modules/acrit.cleanmaster/classes/general/ |
Upload File : |
<?php class CCleanIBlock { /** * удалять элементов за шаг */ const IBLOCK_ELEMENTS_PER_STEP = 50; protected $baseFilter = []; /** * @param bool $baseFilter = array("ACTIVE" => "N") */ public function __construct($baseFilter = false) { if ($baseFilter === false || $baseFilter === null) { $this->baseFilter = ["ACTIVE" => "N"]; } } public function GetStepCount() { return self::IBLOCK_ELEMENTS_PER_STEP; } /** * получить кол-во неактивных элементов * * @param array $ibs_test * * @return integer */ public function GetCount($ibs_test) { $f = ["IBLOCK_ID" => $ibs_test]; foreach ($this->baseFilter as $k => $v) { $f[$k] = $v; } $cnt = \CIBlockElement::GetList(["id" => "ASC"], $f, []); return $cnt; } public function GetAllIblock(): array { $iblock_list = []; $res = \CIBlock::GetList(['name' => 'asc'], [], false); while ($ar_res = $res->Fetch()) { $f = ["IBLOCK_ID" => $ar_res['ID']]; foreach ($this->baseFilter as $k => $v) { $f[$k] = $v; } $ibCnt = \CIBlockElement::GetList(['id' => 'asc'], $f, []); $ar_res['INACTIVE_CNT'] = $ibCnt; if ($ibCnt <= 0) { continue; } $iblock_list[] = $ar_res; } return $iblock_list; } /** * Удаление неактивных элементов инфоблока * * @param array $ibs_test * @param bool|int $step * * @return bool */ public function InactiveIBlockDelete($ibs_test, $step = false) { if ((int)$step > 0) { //$navParams = array("iNumPage" => $step, "nPageSize" => self::IBLOCK_ELEMENTS_PER_STEP); $navParams = ["nTopCount" => self::IBLOCK_ELEMENTS_PER_STEP]; } else { $navParams = false; } $f = ["IBLOCK_ID" => $ibs_test]; foreach ($this->baseFilter as $k => $v) { $f[$k] = $v; } $param = true; $iblocks = \CIBlockElement::GetList(["id" => "ASC"], $f, false, $navParams, ['ID']); while ($iblock = $iblocks->Fetch()) { if (!CIBlockElement::Delete($iblock['ID'])) { $param = false; } } return $param; } /** * Получаем данные для диагностики * * @param bool|int $step игнорируется * * @return bool */ public function GetDiagnosticData($step = false) { $_SESSION['cleanmaster']['diagnostic']['ibelement']['iblock'] = []; $iblocks = $this->GetAllIblock(); if (is_array($iblocks)) { foreach ($iblocks as $iblock) { $_SESSION['cleanmaster']['diagnostic']['ibelement']['iblock']["{$iblock['NAME']} [{$iblock['ID']}]"][] = $iblock['INACTIVE_CNT'] . ' ' . GetMessage('ACRIT_CM_PIECES'); } } return false; } }