Здравствуйте! Я недавно начала изучать язык, так как это необходимо для решения поставленных задач. Изучала документацию по D7 и rest api, внедрила php код в бизнес процесс - проверила работу на тестовом портале, всё корректно работает. Мне нужно этот бизнес-процесс запустить массово в универсальном списке (более 1000 элементов) - с помощью php кода получаю все ID элементов нужного списка, далее используя итератор и в нем запускаю другой БП. На тестовом портале массовый запуск тоже проверила, отработал без ошибок, но там не так много элементов. Страшно запускать на рабочем
Хотелось чтобы вы посмотрели мой код - оценили его на безопасность (функционал проверять не нужно, работает корректно) с учетом массового запуска на 1300 элементов.
1) Получаю все ID
Код |
---|
$rootActivity = $this->GetRootActivity();
use Bitrix\Iblock\ElementTable;
$res = ElementTable::getList([
'sel ect' => [
'ID'
],
'filter' => [
'IBLOCK_ID' => 47
]
]);
$elements = array();
while($ar = $res->Fetch())
{
$elements[] = $ar['ID'];
}
$rootActivity->SetVariable('Variable1', $elements);
|
2) Записываю в переменные имя раздела/подраздела и ИД родительского раздела (если есть)
Код |
---|
$rootActivity = $this->GetRootActivity();
use Bitrix\Iblock\ElementTable;
use Bitrix\Iblock\SectionTable;
$id = '{=Variable:Variable2}';
$db_old_groups = CIBlockElement::GetElementGroups($id, false);
$grs_name;
$grs_id;
while($ar_group = $db_old_groups->Fetch()) {
$grs_name = $ar_group["NAME"];
$grs_id = $ar_group["IBLOCK_SECTION_ID"];
}
$rootActivity->SetVariable('Variable1', $grs_name);
$rootActivity->SetVariable('Variable5', $grs_id);
|
3) В этом коде есть sql запрос, правильно ли он составлен с учетом безопасности?
Код |
---|
global $DB;
$rootActivity = $this->GetRootActivity();
use Bitrix\Disk;
$fileNAME = $DB->ForSql('{=Variable:Variable1}');
$folderID = '{=Variable:Variable4}';
settype($folderID, "integer");
$sql = "select ID fr om b_disk_object where PARENT_ID=$folderID AND NAME='$fileNAME'";
$arFile = $DB->Query($sql)->Fetch();
if ($arFile['ID'] > 0)
{
$rootActivity->SetVariable('Variable3', $arFile['ID']);
}
|