- Модуль: tasks
- Путь к файлу: ~/bitrix/modules/tasks/classes/general/taskfilterctrl.php
- Класс: CTaskFilterCtrl
- Вызов: CTaskFilterCtrl::addOrReplacePreset
private function addOrReplacePreset($arPresetData, $presetId = null)
{
global $DB, $CACHE_MANAGER;
if ( ! (
isset($arPresetData['Name'])
&& (mb_strlen($arPresetData['Name']) <= 100)
&& isset($arPresetData['Parent'])
&& isset($arPresetData['Condition'])
&& is_array($arPresetData['Condition'])
&& ($arPresetData['Parent'] === self::ROOT_PRESET)
) )
{
throw new MainArgumentException('Invalid preset data');
}
// Remove CHECK_PERMISSIONS keys from arFilter, because CTasks::GetList() eat it
$arSafeCondition = self::removeArrayKeyRecursively($arPresetData['Condition'], 'CHECK_PERMISSIONS');
$arFields = array(
'NAME' => $arPresetData['Name'],
'PARENT' => (int) $arPresetData['Parent'],
'SERIALIZED_FILTER' => serialize($arSafeCondition)
);
$arBinds = array('SERIALIZED_FILTER');
// Replace existing preset?
if ($presetId !== null)
{
CTaskAssert::assertLaxIntegers($presetId);
CTaskAssert::assert($presetId > 0);
$strUpdate = $DB->PrepareUpdate('b_tasks_filters', $arFields, 'tasks');
$strSql = "UPDATE b_tasks_filters SET " . $strUpdate
. " WHERE ID=" . (int) $presetId . " AND USER_ID=" . (int) $this->userId;
$DB->QueryBind($strSql, $arBinds, true);
$rc = $presetId;
}
else
{
$arFields['USER_ID'] = (int) $this->userId;
$rc = $DB->Add('b_tasks_filters', $arFields, $arBinds, 'tasks');
}
$this->reloadPresetsCache();
$CACHE_MANAGER->ClearByTag('tasks_filters_presets_' . $this->userId);
return ($rc);
}