's.id', 'source_name' => 's.source_name', 'provider_class' => 's.provider_class', 'import_state' => 's.import_state', 'last_error_message' => 's.last_error_message', 'description' => 'CASE WHEN s.description IS NULL THEN s.source_name' . " ELSE s.source_name || ': ' || s.description END", ); } protected function getActionUrl($row) { return $this->url('director/importsource', array('id' => $row->id)); } public function getTitles() { $view = $this->view(); return array( 'description' => $view->translate('Source name'), ); } protected function listTableClasses() { return array_merge(array('syncstate'), parent::listTableClasses()); } protected function getRowClasses($row) { if ($row->import_state === 'failing' && $row->last_error_message) { $row->source_name .= ' (' . $row->last_error_message . ')'; } return $row->import_state; } public function getBaseQuery() { return $this->db()->select()->from( array('s' => 'import_source'), array() )->order('source_name ASC'); } }