- Модуль: tasks
- Путь к файлу: ~/bitrix/modules/tasks/lib/update/tasksfilterconverter.php
- Класс: BitrixTasksUpdateTasksFilterConverter
- Вызов: TasksFilterConverter::execute
public function execute(array &$result)
{
global $DB;
if (!Loader::includeModule("tasks") || Option::get('tasks', 'tasksFilterNeedConvert', 'Y') == 'N')
{
return false;
}
$return = false;
$params = Option::get("tasks", "tasksfilterconvert", "");
$params = ($params !== "" ? @unserialize($params, ['allowed_classes' => false]) : array());
$params = (is_array($params) ? $params : array());
if (empty($params))
{
$filterRes = $DB->Query('SELECT COUNT(*) as CNT FROM b_tasks_filters');
if (!$filterRes)
{
$count = 0;
}
else
{
$filter = $filterRes->Fetch();
$count = $filter['CNT'];
}
$params = array(
"lastId" => 0,
"number" => 0,
"count" => $count
);
}
if ($params["count"] > 0)
{
$found = false;
$res = $DB->Query(
"
SELECT ID, NAME, PARENT, SERIALIZED_FILTER, USER_ID
FROM b_tasks_filters
WHERE ID > ".(int)$params["lastId"]."
LIMIT {$this->countAtHit}"
);
$userFilters = array();
while ($arData = $res->Fetch())
{
$serializedFilter = unserialize($arData['SERIALIZED_FILTER'], ['allowed_classes' => false]);
if(!is_array($serializedFilter))
{
$serializedFilter = array();
}
$fields = BitrixTasksUiFilterConvertFilter::prepareFilter($serializedFilter);
if ($fields)
{
$userFilters[$arData['USER_ID']]['exported_filter_'.microtime(true).'_'.$arData['ID']] = array(
'name' => $arData['NAME'],
'fields' => $fields,
'sort'=> 100,
'filter_rows' => join(',', array_keys($fields))
);
}
$params["lastId"] = $arData['ID'];
$params["number"]++;
$found = true;
}
foreach(array_keys($userFilters) as $userId)
{
$filters = CUserOptions::getOption("main.ui.filter", 'TASKS_GRID_ROLE_ID_4096_0_ADVANCED_N', array(), $userId);
if(!$filters)
{
$filters = array();
$filters["use_pin_preset"] = true;
$filters["default_presets"] = BitrixTasksHelperFilter::getPresets();
$filters["default"] = BitrixMainUIFilterOptions::findDefaultPresetId(
$filters["default_presets"]
);
$filters["filter"] = $filters["default"];
$filters["filters"] = $filters["default_presets"];
}
$filters['filters'] = array_merge((array)$filters['filters'], $userFilters[$userId]);
CUserOptions::SetOption(
'main.ui.filter',
'TASKS_GRID_ROLE_ID_4096_0_ADVANCED_N',
$filters,
false,
$userId
);
}
$result["steps"] = $params["number"];
$result["count"] = $params["count"];
if ($found)
{
Option::set("tasks", "tasksfilterconvert", serialize($params));
$return = true;
}
else
{
Option::delete("tasks", array("name" => "tasksfilterconvert"));
Option::set('tasks', 'tasksFilterNeedConvert', 'N');
}
}
return $return;
}