's.id', 'service' => 's.object_name', 'object_type' => 's.object_type', 'check_command_id' => 's.check_command_id', ); } protected function listTableClasses() { return array_merge(array('assignment-table'), parent::listTableClasses()); } protected function getActionUrl($row) { // TODO: Remove once we got a separate apply table if ($row->object_type === 'apply') { $params['id'] = $row->id; } else { $params = array('name' => $row->service); } return $this->url('director/service', $params); } protected function renderRow($row) { $v = $this->view(); $extra = $this->appliedOnes($row->id); $htm = " getRowClassesString($row) . ">\n"; $htm .= '' . $v->qlink($row->service, $this->getActionUrl($row)); if (empty($extra)) { if ($row->check_command_id) { $htm .= ' ' . $v->qlink( 'Create apply-rule', 'director/service/apply', array('template' => $row->service), array('class' => 'icon-plus') ); } } else { $htm .= '. Related apply rules: '; $htm .= $v->qlink( 'Add more', 'director/service/apply', array('template' => $row->service), array('class' => 'icon-plus') ); } $htm .= ''; return $htm . " \n"; } public function getTitles() { $view = $this->view(); return array( 'service' => $view->translate('Servicename'), ); } public function getUnfilteredQuery() { $db = $this->connection()->getConnection(); $query = $db->select()->from( array('s' => 'icinga_service'), array() ); return $query; } protected function appliedOnes($id) { $db = $this->connection()->getConnection(); $query = $db->select()->from( array('s' => 'icinga_service'), array( 'id' => 's.id', 'objectname' => 's.object_name', ) )->join( array('i' => 'icinga_service_inheritance'), 'i.service_id = s.id', array() )->where('i.parent_service_id = ?', $id) ->where('s.object_type = ?', 'apply'); return $db->fetchPairs($query); } public function getBaseQuery() { return $this->getUnfilteredQuery()->where( 's.object_type IN (?)', array('template') )->order('CASE WHEN s.check_command_id IS NULL THEN 1 ELSE 0 END') ->order('s.object_name'); } }