function GetFilter($arFilter, $arParams)
{
if (!is_array($arFilter))
$arFilter = Array();
$arSqlSearch = Array();
foreach ($arFilter as $key => $val)
{
$res = CTasks::MkOperationFilter($key);
$key = $res["FIELD"];
$cOperationType = $res["OPERATION"];
$key = mb_strtoupper($key);
switch ($key)
{
case "CREATED_BY":
case "TASK_ID":
case "GROUP_ID":
case "TPARAM_TYPE":
case "ID":
$arSqlSearch[] = CTasks::FilterCreate("TT.".$key, $val, "number", $bFullJoin, $cOperationType);
break;
case "RESPONSIBLE":
$arSqlSearch[] = CTasks::FilterCreate("TT.RESPONSIBLE_ID", $val, "number", $bFullJoin, $cOperationType);
break;
case "TAGS":
$val = '%i:%;s:%:"'.$val.'";%';
$arSqlSearch[] = CTasks::FilterCreate("TT.".$key, $val, "string", $bFullJoin, $cOperationType);
break;
case "TITLE":
case "ZOMBIE":
case "XML_ID":
$arSqlSearch[] = CTasks::FilterCreate("TT.".$key, $val, "string", $bFullJoin, $cOperationType);
break;
case "REPLICATE":
case "PRIORITY":
$arSqlSearch[] = CTasks::FilterCreate("TT.".$key, $val, "string_equal", $bFullJoin, $cOperationType);
break;
case 'SEARCH_INDEX':
$fieldsToLike = array(
"TT.TITLE",
"TT.DESCRIPTION",
"CONCAT_WS(' ', CU.NAME, CU.LAST_NAME, CU.SECOND_NAME, CU.LOGIN, RU.NAME, RU.LAST_NAME, RU.SECOND_NAME, RU.LOGIN)"
);
$filter = '(';
$filter .= CTasks::FilterCreate("TT.ID", (int)$val, "number", $bFullJoin, $cOperationType);
foreach ($fieldsToLike as $field)
{
$filter .= " OR ".CTasks::FilterCreate($field, $val, "string", $bFullJoin, "S");
}
$filter .= ')';
$arSqlSearch[] = $filter;
break;
/*
case "TEMPLATE_CHILDREN_COUNT":
$arSqlSearch[] = CTasks::FilterCreate($key, $val, "number", $bFullJoin, $cOperationType);
break;
*/
case "BASE_TEMPLATE_ID":
$parentColumnName = TemplateDependencyTable::getPARENTIDColumnName();
$columnName = TemplateDependencyTable::getIDColumnName();
$cOperationType = 'I'; // force to "identical" for this field, in any case
$val = (string) $val;
if($val === '' || $val === '0')
$val = false;
//$includeSubtree = $arParams['INCLUDE_TEMPLATE_SUBTREE'] === true || $arParams['INCLUDE_TEMPLATE_SUBTREE'] === 'Y';
$excludeSubtree = $arParams['EXCLUDE_TEMPLATE_SUBTREE'] === true || $arParams['EXCLUDE_TEMPLATE_SUBTREE'] === 'Y';
if($excludeSubtree)
{
$arSqlSearch[] = "TT.ID NOT IN (SELECT ".$columnName." FROM ".TemplateDependencyTable::getTableName()." WHERE ".$parentColumnName." = '".intval($val)."')";
}
else
{
$arSqlSearch[] = '('.($val ? "TD.".$parentColumnName." = '".intval($val)."'" : "TD.".$parentColumnName." = '0' OR TD.".$parentColumnName." IS NULL").')';
//$arSqlSearch[] = CTasks::FilterCreate("TD.".TemplateDependencyTable::getPARENTIDColumnName(), $val, "number", $bFullJoin, $cOperationType);
}
break;
}
}
return $arSqlSearch;
}