6 * Copyright 2004 (c) Dominik Haas, GForge Team
12 require_once $gfwww.'include/pre.php';
13 require_once $gfwww.'search/include/renderers/HtmlGroupSearchRenderer.class.php';
14 require_once $gfwww.'search/include/renderers/ForumsHtmlSearchRenderer.class.php';
15 require_once $gfwww.'search/include/renderers/TrackersHtmlSearchRenderer.class.php';
16 require_once $gfwww.'search/include/renderers/TasksHtmlSearchRenderer.class.php';
17 require_once $gfwww.'search/include/renderers/DocsHtmlSearchRenderer.class.php';
18 require_once $gfwww.'search/include/renderers/FrsHtmlSearchRenderer.class.php';
19 require_once $gfwww.'search/include/renderers/NewsHtmlSearchRenderer.class.php';
21 class FullProjectHtmlSearchRenderer extends HtmlGroupSearchRenderer {
31 * the words to search for
38 * flag to define whether the result must contain all words or only one of them
40 * @var boolean $isExact
47 * @param string $words words we are searching for
48 * @param int $offset offset
49 * @param boolean $isExact if we want to search for all the words or if only one matching the query is sufficient
50 * @param int $groupId group id
53 function FullProjectHtmlSearchRenderer($words, $offset, $isExact, $groupId) {
54 $this->groupId = $groupId;
55 $this->words = $words;
56 $this->isExact = $isExact;
57 $searchQuery =& $this->searchQuery;
59 $this->HtmlGroupSearchRenderer(SEARCH__TYPE_IS_ADVANCED, $words, $isExact, $searchQuery, $groupId);
63 * flush - overwrites the flush method from htmlrenderer
71 * writeBody - write the Body of the output
73 function writeBody() {
74 site_project_header(array('title' => _('Advanced project search'), 'group' => $this->groupId, 'toptab'=>'none'));
75 echo $this->getResult();
79 * getResult - returns the Body of the output
81 * @return string result of all selected searches
83 function getResult() {
86 $Group =& group_get_object($this->groupId);
88 if ($Group->usesForum()) {
89 $forumsRenderer = new ForumsHtmlSearchRenderer($this->words, $this->offset, $this->isExact, $this->groupId);
91 if ($Group->usesTracker()) {
92 $trackersRenderer = new TrackersHtmlSearchRenderer($this->words, $this->offset, $this->isExact, $this->groupId);
94 if ($Group->usesPM()) {
95 $tasksRenderer = new TasksHtmlSearchRenderer($this->words, $this->offset, $this->isExact, $this->groupId);
97 if ($Group->usesDocman()) {
98 $docsRenderer = new DocsHtmlSearchRenderer($this->words, $this->offset, $this->isExact, $this->groupId);
100 if ($Group->usesFRS()) {
101 $frsRenderer = new FrsHtmlSearchRenderer($this->words, $this->offset, $this->isExact, $this->groupId);
103 if ($Group->usesNews()) {
104 $newsRenderer = new NewsHtmlSearchRenderer($this->words, $this->offset, $this->isExact, $this->groupId);
107 $validLength = (strlen($this->words) >= 3);
109 if (isset($trackersRenderer) && ($validLength || (is_numeric($this->words) && $trackersRenderer->searchQuery->implementsSearchById()))) {
110 $html .= $this->getPartResult($trackersRenderer, 'short_tracker', _('Tracker Search Results'));
113 if (isset($forumsRenderer) && ($validLength || (is_numeric($this->words) && $forumsRenderer->searchQuery->implementsSearchById()))) {
114 $html .= $this->getPartResult($forumsRenderer, 'short_forum', _('Forum Search Results'));
117 if (isset($tasksRenderer) && ($validLength || (is_numeric($this->words) && $tasksRenderer->searchQuery->implementsSearchById()))) {
118 $html .= $this->getPartResult($tasksRenderer, 'short_pm', _('Task Search Results'));
121 if (isset($docsRenderer) && ($validLength || (is_numeric($this->words) && $docsRenderer->searchQuery->implementsSearchById()))) {
122 $html .= $this->getPartResult($docsRenderer, 'short_docman', _('Documentation Search Results'));
125 if (isset($frsRenderer) && ($validLength || (is_numeric($this->words) && $frsRenderer->searchQuery->implementsSearchById()))) {
126 $html .= $this->getPartResult($frsRenderer, 'short_files', _('Files Search Results'));
129 if (isset($newsRenderer) && ($validLength || (is_numeric($this->words) && $newsRenderer->searchQuery->implementsSearchById()))) {
130 $html .= $this->getPartResult($newsRenderer, 'short_news', _('News Search Results'));
134 $renderer = new ForumsHtmlSearchRenderer($this->words, $this->offset, $this->isExact, $this->groupId);
135 $html .= $this->getPartResult($renderer, 'short_forum', _('Forum Search Results'));
137 $renderer = new TrackersHtmlSearchRenderer($this->words, $this->offset, $this->isExact, $this->groupId);
138 $html .= $this->getPartResult($renderer, 'short_tracker', _('Tracker Search Results'));
140 $renderer = new TasksHtmlSearchRenderer($this->words, $this->offset, $this->isExact, $this->groupId);
141 $html .= $this->getPartResult($renderer, 'short_pm', _('Task Search Results'));
143 $renderer = new DocsHtmlSearchRenderer($this->words, $this->offset, $this->isExact, $this->groupId);
144 $html .= $this->getPartResult($renderer, 'short_docman', _('Documentation Search Results'));
146 $renderer = new FrsHtmlSearchRenderer($this->words, $this->offset, $this->isExact, $this->groupId);
147 $html .= $this->getPartResult($renderer, 'short_files', _('Files Search Results'));
149 $renderer = new NewsHtmlSearchRenderer($this->words, $this->offset, $this->isExact, $this->groupId);
150 $html .= $this->getPartResult($renderer, 'short_news', _('News Search Results'));
153 return $html.'<br />';
157 * getPartResult - returns the result of the given renderer
159 * @return string result of the renderer
161 function getPartResult($renderer, $section, $title='') {
163 $renderer->searchQuery->executeQuery();
169 $result .= '<h3><a name="'.$section.'"></a>'.$title.'</h3>';
171 if ($renderer->searchQuery->getRowsCount() > 0) {
172 $result .= $GLOBALS['HTML']->listTabletop($renderer->tableHeaders);
173 $result .= $renderer->getRows();
174 $result .= $GLOBALS['HTML']->listTableBottom();
175 } elseif(method_exists($renderer, 'getSections') && (count($renderer->getSections($this->groupId)) == 0)) {
176 $result .= '<p>'.sprintf(_('No matches found - No sections available (check your permissions)'), htmlspecialchars($query['words'])).'</p>';
178 $result .= '<p>'.sprintf(_('No matches found'), htmlspecialchars($query['words'])).'</p>';
187 // c-file-style: "bsd"