protected function applyQueryFilterOptions($tableName, $tableAlias, array $options, array $sqlParts) { if (CWebUser::getType() != USER_TYPE_SUPER_ADMIN) { // if services with specific trigger IDs were requested, return only the ones accessible to the current user. if ($options['filter']['triggerid']) { $accessibleTriggers = API::Trigger()->get(array('output' => array('triggerid'), 'triggerids' => $options['filter']['triggerid'])); $options['filter']['triggerid'] = zbx_objectValues($accessibleTriggers, 'triggerid'); } else { $sqlParts = $this->addPermissionFilter($sqlParts); } } $sqlParts = parent::applyQueryFilterOptions($tableName, $tableAlias, $options, $sqlParts); // parentids if ($options['parentids'] !== null) { $sqlParts['from'][] = 'services_links slp'; $sqlParts['where'][] = $this->fieldId('serviceid') . '=slp.servicedownid AND slp.soft=0'; $sqlParts['where'][] = dbConditionInt('slp.serviceupid', (array) $options['parentids']); } // childids if ($options['childids'] !== null) { $sqlParts['from'][] = 'services_links slc'; $sqlParts['where'][] = $this->fieldId('serviceid') . '=slc.serviceupid AND slc.soft=0'; $sqlParts['where'][] = dbConditionInt('slc.servicedownid', (array) $options['childids']); } return $sqlParts; }
protected function applyQueryFilterOptions($tableName, $tableAlias, array $options, array $sqlParts) { $sqlParts = parent::applyQueryFilterOptions($tableName, $tableAlias, $options, $sqlParts); // screen ids if ($options['screenids'] !== null) { zbx_value2array($options['screenids']); $sqlParts = $this->addQuerySelect($this->fieldId('screenid'), $sqlParts); $sqlParts['where'][] = dbConditionInt($this->fieldId('screenid'), $options['screenids']); } return $sqlParts; }