/** * Returns the results to a given keyword. To get the results is the * job of this routine and it does not even need to come from a database. * The results should be an array in the form * array ( * array($key, $name), * array($key, $name), * ... * ) * where $key is an identifier like user_id and $name is a displayed text * that should appear to represent that ID. * @param keyword: string * @param array $contextual_data an associative array with more variables * @param int $limit maximum number of results (default: all) * @param int $offset return results starting from this row (default: 0) * @return array */ public function getResults($keyword, $contextual_data = array(), $limit = PHP_INT_MAX, $offset = 0) { $search_helper = new StudipSemSearchHelper(); $search_helper->setParams(array('quick_search' => $keyword, 'qs_choose' => $contextual_data['search_sem_qs_choose'] ? $contextual_data['search_sem_qs_choose'] : 'all', 'sem' => isset($contextual_data['search_sem_sem']) ? $contextual_data['search_sem_sem'] : 'all', 'category' => $contextual_data['search_sem_category'], 'scope_choose' => $contextual_data['search_sem_scope_choose'], 'range_choose' => $contextual_data['search_sem_range_choose']), !(is_object($GLOBALS['perm']) && $GLOBALS['perm']->have_perm(Config::Get()->SEM_VISIBILITY_PERM))); $search_helper->doSearch(); $result = $search_helper->getSearchResultAsArray(); if (empty($result)) { return array(); } $style = $this->styles[$this->resultstyle] ?: $this->styles['name']; $query = "SELECT s.Seminar_id, {$style}, Name\n FROM seminare AS s\n LEFT JOIN seminar_user AS su ON (su.Seminar_id = s.Seminar_id AND su.status='dozent')\n LEFT JOIN auth_user_md5 USING (user_id)\n WHERE s.Seminar_id IN (?)\n GROUP BY s.Seminar_id"; if (Config::get()->IMPORTANT_SEMNUMBER) { $query .= " ORDER BY s.VeranstaltungsNummer, s.Name"; } else { $query .= " ORDER BY s.Name"; } $statement = DBManager::get()->prepare($query); $statement->execute(array(array_slice($result, $offset, $limit) ?: '')); return $statement->fetchAll(PDO::FETCH_NUM); }
function getContentSimpleSearch() { $select_qs = '<select name="ext_templatesembrowse[qs_choose]" id="ext_templatesembrowse_qs_choose">'; foreach (StudipSemSearchHelper::GetQuickSearchFields() as $key => $value) { if ($this->sem_browse_data['qs_choose'] == $key) { $select_qs .= "<option value=\"{$key}\" selected=\"selected\">{$value}</option>"; } else { $select_qs .= "<option value=\"{$key}\">{$value}</option>"; } } $select_qs .= '</select>'; $content['SEARCH_FORM'] = array('SELECT_FIELD' => $select_qs, 'SELECT_SEMESTER' => $this->getSelectSem(), 'INPUT_SEARCH_TERM' => '<input type="text" name="ext_templatesembrowse[quick_search]" id="ext_templatesembrowse_quick_search" value="' . ExternModule::ExtHtmlReady($this->sem_browse_data['quick_search'] ? $this->sem_browse_data['quick_search'] : '') . '" size="' . $this->config->getValue('Main', 'sizeinput') . '" maxlength="50">', 'SEARCHFORM_ACTION' => $this->getLinkToSelf(array('start_item_id' => $this->sem_browse_data['start_item_id'], 'do_search' => '1'), true, 'LinkInternSearchForm'), 'SEARCHFORM_ACTION_SELECT_SEM' => $this->getLinkToSelf(array('start_item_id' => $this->sem_browse_data['start_item_id'], 'do_search' => '0', 'show_result' => '1'), true, 'LinkInternSearchForm'), 'HREF_RESET_SEARCH' => $this->getLinkToSelf(array('start_item_id' => $this->getRootStartItemId()))); return $content; }
function doSearch() { $search_helper = new StudipSemSearchHelper($this->form, $this->visible_only); $this->found_rows = $search_helper->doSearch(); $this->search_result = $search_helper->getSearchResultAsSnapshot(); return $this->found_rows; }