PageRenderTime 45ms CodeModel.GetById 16ms RepoModel.GetById 0ms app.codeStats 1ms

/ojs/ojs-2.0.2-1/pages/search/SearchHandler.inc.php

https://github.com/mcrider/pkpUpgradeTestSuite
PHP | 269 lines | 180 code | 47 blank | 42 comment | 18 complexity | 12552aada561ac6248d6f3d5a13bec42 MD5 | raw file
Possible License(s): GPL-2.0, LGPL-2.1
  1. <?php
  2. /**
  3. * SearchHandler.inc.php
  4. *
  5. * Copyright (c) 2003-2004 The Public Knowledge Project
  6. * Distributed under the GNU GPL v2. For full terms see the file docs/COPYING.
  7. *
  8. * @package pages.search
  9. *
  10. * Handle site index requests.
  11. *
  12. * $Id: SearchHandler.inc.php,v 1.28 2005/08/01 23:03:54 kevin Exp $
  13. */
  14. import('search.ArticleSearch');
  15. class SearchHandler extends Handler {
  16. /**
  17. * Show the advanced form
  18. */
  19. function index() {
  20. parent::validate();
  21. SearchHandler::advanced();
  22. }
  23. /**
  24. * Show the advanced form
  25. */
  26. function search() {
  27. parent::validate();
  28. SearchHandler::advanced();
  29. }
  30. /**
  31. * Show advanced search form.
  32. */
  33. function advanced() {
  34. parent::validate();
  35. SearchHandler::setupTemplate(false);
  36. $templateMgr = &TemplateManager::getManager();
  37. if (Request::getJournal() == null) {
  38. $journalDao = &DAORegistry::getDAO('JournalDAO');
  39. $journals = &$journalDao->getEnabledJournalTitles(); //Enabled added
  40. $templateMgr->assign('siteSearch', true);
  41. $templateMgr->assign('journalOptions', array('' => Locale::Translate('search.allJournals')) + $journals);
  42. $journalPath = Request::getRequestedJournalPath();
  43. }
  44. SearchHandler::assignAdvancedSearchParameters($templateMgr);
  45. $templateMgr->display('search/advancedSearch.tpl');
  46. }
  47. /**
  48. * Show index of published articles by author.
  49. */
  50. function authors($args) {
  51. parent::validate();
  52. SearchHandler::setupTemplate(true);
  53. $journal = Request::getJournal();
  54. $authorDao = &DAORegistry::getDAO('AuthorDAO');
  55. if (isset($args[0]) && $args[0] == 'view') {
  56. // View a specific author
  57. $firstName = Request::getUserVar('firstName');
  58. $middleName = Request::getUserVar('middleName');
  59. $lastName = Request::getUserVar('lastName');
  60. $affiliation = Request::getUserVar('affiliation');
  61. $publishedArticles = $authorDao->getPublishedArticlesForAuthor($firstName, $middleName, $lastName, $affiliation);
  62. // Load information associated with each article.
  63. $issues = array();
  64. $sections = array();
  65. $issuesUnavailable = array();
  66. $issueDao = &DAORegistry::getDAO('IssueDAO');
  67. $sectionDao = &DAORegistry::getDAO('SectionDAO');
  68. foreach ($publishedArticles as $article) {
  69. $issueId = $article->getIssueId();
  70. $sectionId = $article->getSectionId();
  71. if (!isset($issues[$issueId])) {
  72. import('issue.IssueAction');
  73. $issue = &$issueDao->getIssueById($issueId);
  74. $issues[$issueId] = &$issue;
  75. $issuesUnavailable[$issueId] = IssueAction::subscriptionRequired($issue) && (!IssueAction::subscribedUser() && !IssueAction::subscribedDomain());
  76. }
  77. if (!isset($sections[$sectionId])) $sections[$sectionId] = &$sectionDao->getSection($sectionId);
  78. }
  79. if (empty($publishedArticles)) {
  80. Request::redirect(Request::getPageUrl());
  81. return;
  82. }
  83. $templateMgr = &TemplateManager::getManager();
  84. $templateMgr->assign('publishedArticles', $publishedArticles);
  85. $templateMgr->assign('issues', $issues);
  86. $templateMgr->assign('issuesUnavailable', $issuesUnavailable);
  87. $templateMgr->assign('sections', $sections);
  88. $templateMgr->assign('firstName', $firstName);
  89. $templateMgr->assign('middleName', $middleName);
  90. $templateMgr->assign('lastName', $lastName);
  91. $templateMgr->assign('affiliation', $affiliation);
  92. $templateMgr->display('search/authorDetails.tpl');
  93. } else {
  94. // Show the author index
  95. $searchInitial = Request::getUserVar('searchInitial');
  96. $rangeInfo = Handler::getRangeInfo('authors');
  97. $authors = &$authorDao->getAuthorsAlphabetizedByJournal(
  98. isset($journal)?$journal->getJournalId():null,
  99. $searchInitial,
  100. $rangeInfo
  101. );
  102. $templateMgr = &TemplateManager::getManager();
  103. $templateMgr->assign('searchInitial', $searchInitial);
  104. $templateMgr->assign('authors', $authors);
  105. $templateMgr->display('search/authorIndex.tpl');
  106. }
  107. }
  108. /**
  109. * Show index of published articles by title.
  110. */
  111. function titles($args) {
  112. parent::validate();
  113. SearchHandler::setupTemplate(true);
  114. $journal = Request::getJournal();
  115. $publishedArticleDao = &DAORegistry::getDAO('PublishedArticleDAO');
  116. $rangeInfo = Handler::getRangeInfo('search');
  117. $articleIds = &$publishedArticleDao->getPublishedArticleIdsAlphabetizedByJournal(isset($journal)?$journal->getJournalId():null, $rangeInfo);
  118. $totalResults = count($articleIds);
  119. $articleIds = array_slice($articleIds, $rangeInfo->getCount() * ($rangeInfo->getPage()-1), $rangeInfo->getCount());
  120. $results = new VirtualArrayIterator(ArticleSearch::formatResults($articleIds), $totalResults, $rangeInfo->getPage(), $rangeInfo->getCount());
  121. $templateMgr = &TemplateManager::getManager();
  122. $templateMgr->assign_by_ref('results', $results);
  123. $templateMgr->display('search/titleIndex.tpl');
  124. }
  125. /**
  126. * Show basic search results.
  127. */
  128. function results() {
  129. parent::validate();
  130. SearchHandler::setupTemplate(true);
  131. $rangeInfo = Handler::getRangeInfo('search');
  132. $journal = Request::getJournal();
  133. $searchJournal = Request::getUserVar('searchJournal');
  134. if (!empty($searchJournal)) {
  135. $journalDao = &DAORegistry::getDAO('JournalDAO');
  136. $journal = &$journalDao->getJournal($searchJournal);
  137. }
  138. $searchType = Request::getUserVar('searchField');
  139. if (!is_numeric($searchType)) $searchType = null;
  140. // Load the keywords array with submitted values
  141. $keywords = array($searchType => ArticleSearch::parseQuery(Request::getUserVar('query')));
  142. $results = &ArticleSearch::retrieveResults($journal, $keywords, null, null, $rangeInfo);
  143. $templateMgr = &TemplateManager::getManager();
  144. $templateMgr->assign_by_ref('results', $results);
  145. $templateMgr->assign('basicQuery', Request::getUserVar('query'));
  146. $templateMgr->assign('searchField', Request::getUserVar('searchField'));
  147. $templateMgr->display('search/searchResults.tpl');
  148. }
  149. /**
  150. * Show advanced search results.
  151. */
  152. function advancedResults() {
  153. parent::validate();
  154. SearchHandler::setupTemplate(true);
  155. $rangeInfo = Handler::getRangeInfo('search');
  156. $journal = Request::getJournal();
  157. $searchJournal = Request::getUserVar('searchJournal');
  158. if (!empty($searchJournal)) {
  159. $journalDao = &DAORegistry::getDAO('JournalDAO');
  160. $journal = &$journalDao->getJournal($searchJournal);
  161. }
  162. // Load the keywords array with submitted values
  163. $keywords = array(null => ArticleSearch::parseQuery(Request::getUserVar('query')));
  164. $keywords[ARTICLE_SEARCH_AUTHOR] = ArticleSearch::parseQuery(Request::getUserVar('author'));
  165. $keywords[ARTICLE_SEARCH_TITLE] = ArticleSearch::parseQuery(Request::getUserVar('title'));
  166. $keywords[ARTICLE_SEARCH_DISCIPLINE] = ArticleSearch::parseQuery(Request::getUserVar('discipline'));
  167. $keywords[ARTICLE_SEARCH_SUBJECT] = ArticleSearch::parseQuery(Request::getUserVar('subject'));
  168. $keywords[ARTICLE_SEARCH_TYPE] = ArticleSearch::parseQuery(Request::getUserVar('type'));
  169. $keywords[ARTICLE_SEARCH_COVERAGE] = ArticleSearch::parseQuery(Request::getUserVar('coverage'));
  170. $keywords[ARTICLE_SEARCH_GALLEY_FILE] = ArticleSearch::parseQuery(Request::getUserVar('fullText'));
  171. $keywords[ARTICLE_SEARCH_SUPPLEMENTARY_FILE] = ArticleSearch::parseQuery(Request::getUserVar('supplementaryFiles'));
  172. $fromDate = Request::getUserDateVar('dateFrom', 1, 1);
  173. if ($fromDate !== null) $fromDate = date('Y-m-d H:i:s', $fromDate);
  174. $toDate = Request::getUserDateVar('dateTo', 32, 12, null, 23, 59, 59);
  175. if ($toDate !== null) $toDate = date('Y-m-d H:i:s', $toDate);
  176. $results = &ArticleSearch::retrieveResults($journal, $keywords, $fromDate, $toDate, $rangeInfo);
  177. $templateMgr = &TemplateManager::getManager();
  178. $templateMgr->assign_by_ref('results', $results);
  179. SearchHandler::assignAdvancedSearchParameters($templateMgr);
  180. $templateMgr->display('search/searchResults.tpl');
  181. }
  182. /**
  183. * Setup common template variables.
  184. * @param $subclass boolean set to true if caller is below this handler in the hierarchy
  185. */
  186. function setupTemplate($subclass = false) {
  187. parent::validate();
  188. $templateMgr = &TemplateManager::getManager();
  189. $templateMgr->assign('helpTopicId', 'user.searchAndBrowse');
  190. $templateMgr->assign('pageHierarchy',
  191. $subclass ? array(array('search', 'navigation.search'))
  192. : array()
  193. );
  194. }
  195. function assignAdvancedSearchParameters(&$templateMgr) {
  196. $templateMgr->assign('query', Request::getUserVar('query'));
  197. $templateMgr->assign('searchJournal', Request::getUserVar('searchJournal'));
  198. $templateMgr->assign('author', Request::getUserVar('author'));
  199. $templateMgr->assign('title', Request::getUserVar('title'));
  200. $templateMgr->assign('fullText', Request::getUserVar('fullText'));
  201. $templateMgr->assign('supplementaryFiles', Request::getUserVar('supplementaryFiles'));
  202. $templateMgr->assign('discipline', Request::getUserVar('discipline'));
  203. $templateMgr->assign('subject', Request::getUserVar('subject'));
  204. $templateMgr->assign('type', Request::getUserVar('type'));
  205. $templateMgr->assign('coverage', Request::getUserVar('coverage'));
  206. $fromMonth = Request::getUserVar('dateFromMonth');
  207. $fromDay = Request::getUserVar('dateFromDay');
  208. $fromYear = Request::getUserVar('dateFromYear');
  209. $templateMgr->assign('dateFromMonth', $fromMonth);
  210. $templateMgr->assign('dateFromDay', $fromDay);
  211. $templateMgr->assign('dateFromYear', $fromYear);
  212. if (!empty($fromYear)) $templateMgr->assign('dateFrom', date('Y-m-d H:i:s',mktime(0,0,0,$fromMonth==null?12:$fromMonth,$fromDay==null?31:$fromDay,$fromYear)));
  213. $toMonth = Request::getUserVar('dateToMonth');
  214. $toDay = Request::getUserVar('dateToDay');
  215. $toYear = Request::getUserVar('dateToYear');
  216. $templateMgr->assign('dateToMonth', $toMonth);
  217. $templateMgr->assign('dateToDay', $toDay);
  218. $templateMgr->assign('dateToYear', $toYear);
  219. if (!empty($toYear)) $templateMgr->assign('dateTo', date('Y-m-d H:i:s',mktime(0,0,0,$toMonth==null?12:$toMonth,$toDay==null?31:$toDay,$toYear)));
  220. }
  221. }
  222. ?>