- Модуль: tasks
- Путь к файлу: ~/bitrix/modules/tasks/classes/general/tasks_report_helper.php
- Класс: CTasksReportHelper
- Вызов: CTasksReportHelper::beforeViewDataQuery
static function beforeViewDataQuery(&$select, &$filter, &$group, &$order, &$limit, &$options, &$runtime = null)
{
parent::beforeViewDataQuery($select, $filter, $group, $order, $limit, $options);
// unset($select['TAGS']);
self::rewriteTagsFilter($filter, $runtime);
self::rewriteMoneyFilter($filter, $runtime);
global $DB;
$permFilter = array(
'LOGIC' => 'OR'
);
$userId = BitrixTasksUtilUser::getId();
// owner permission
if (isset($_GET['select_my_tasks']) ||
(!isset($_GET['select_my_tasks']) && !isset($_GET['select_depts_tasks']) && !isset($_GET['select_group_tasks']))
)
{
$runtime['IS_TASK_COWORKER'] = array(
'data_type' => 'integer',
'expression' => array("(CASE WHEN EXISTS("
."SELECT 'x' FROM b_tasks_member TM "
."WHERE TM.TASK_ID = ".$DB->escL.("tasks_task").$DB->escR.".ID AND TM.USER_ID = ".$userId." AND TM.TYPE = 'A'"
.") THEN 1 ELSE 0 END)")
);
$permFilter[] = array(
'LOGIC' => 'OR',
'=RESPONSIBLE_ID' => $userId,
'=IS_TASK_COWORKER' => 1
);
}
// own departments permission
if (isset($_GET['select_depts_tasks']))
{
$permFilterDepts = array(
'LOGIC' => 'OR',
'=CREATED_BY' => $userId
);
$deptsPermSql = self::getSubordinateSql();
if(!empty($deptsPermSql))
{
$runtime['IS_SUBORDINATED_TASK'] = [
'data_type' => 'integer',
'expression' => [$deptsPermSql],
];
$permFilterDepts[] = [
'!RESPONSIBLE_ID' => $userId,
'=IS_SUBORDINATED_TASK' => 1,
];
}
$permFilter[] = $permFilterDepts;
}
// group permission
if (isset($_GET['select_group_tasks']))
{
$allowedGroups = BitrixTasksIntegrationSocialNetworkGroup::getIdsByAllowedAction('view_all', true, BitrixTasksUtilUser::getId());
$permFilter[] = array('=GROUP_ID' => $allowedGroups);
}
// concat permissions with common filter
$filter[] = $permFilter;
}