public static function beforeViewDataQuery(&$select, &$filter, &$group, &$order, &$limit, &$options, &$runtime) { // Dynamic data setup //Crm\ActivityTable::ProcessQueryOptions($options); if (!isset($select['CRM_ACTIVITY_COMPANY_BY_ID'])) { foreach ($select as $k => $v) { if (strpos($k, 'CRM_ACTIVITY_COMPANY_BY_') === 0) { $select['CRM_ACTIVITY_COMPANY_BY_ID'] = 'COMPANY_BY.ID'; break; } } } // permission $addClause = CCrmActivity::BuildPermSql('crm_activity'); if ($addClause === false) { // access dinied $filter = array($filter, '=ID' => '0'); } elseif (!empty($addClause)) { global $DB; // HACK: add escape chars for ORM $addClause = str_replace('crm_activity.ID', $DB->escL . 'crm_activity' . $DB->escR . '.ID', $addClause); $filter = array($filter, '=IS_ALLOWED' => '1'); $runtime['IS_ALLOWED'] = array('data_type' => 'integer', 'expression' => array('CASE WHEN ' . $addClause . ' THEN 1 ELSE 0 END')); } }