Skip to content

HTTPS clone URL

Subversion checkout URL

You can clone with HTTPS or Subversion.

Download ZIP
Browse files

API CHANGE Removed AdvancedSearchForm, extend SearchForm for custom a…

…dvanced search functionality instead.
  • Loading branch information...
commit 55bbda3a39a12ea58cee161e8fa01f2d17efa981 1 parent 4524d1c
@halkyon halkyon authored
Showing with 0 additions and 136 deletions.
  1. +0 −136 code/search/AdvancedSearchForm.php
View
136 code/search/AdvancedSearchForm.php
@@ -1,136 +0,0 @@
-<?php
-/**
- * More advanced search form
- * @package cms
- * @subpackage search
- */
-class AdvancedSearchForm extends SearchForm {
-
- /**
- * the constructor of a Simple/basic SearchForm
- */
- function __construct($controller, $name, $fields = null, $actions = null) {
- if(!$fields) {
- $fields = new FieldList(
- $searchBy = new CompositeField(
- new HeaderField('SearchByHeader',_t('AdvancedSearchForm.SEARCHBY', 'SEARCH BY')),
- new TextField("+", _t('AdvancedSearchForm.ALLWORDS', 'All Words')),
- new TextField("quote", _t('AdvancedSearchForm.EXACT', 'Exact Phrase')),
- new TextField("any", _t('AdvancedSearchForm.ATLEAST', 'At Least One Of the Words')),
- new TextField("-", _t('AdvancedSearchForm.WITHOUT', 'Without the Words'))
- ),
- $sortBy = new CompositeField(
- new HeaderField('SortByHeader',_t('AdvancedSearchForm.SORTBY', 'SORT RESULTS BY')),
- new OptionsetField("sortby", "",
- array(
- 'Relevance' => _t('AdvancedSearchForm.RELEVANCE', 'Relevance'),
- 'LastUpdated' => _t('AdvancedSearchForm.LASTUPDATED', 'Last Updated'),
- 'PageTitle' => _t('AdvancedSearchForm.PAGETITLE', 'Page Title'),
- ),
- 'Relevance'
- )
- ),
- $chooseDate = new CompositeField(
- new HeaderField('LastUpdatedHeader',_t('AdvancedSearchForm.LASTUPDATEDHEADER', 'LAST UPDATED')),
- new DateField("From", _t('AdvancedSearchForm.FROM', 'From')),
- new DateField("To", _t('AdvancedSearchForm.TO', 'To'))
- )
- );
-
- $searchBy->ID = "AdvancedSearchForm_SearchBy";
- $searchOnly->ID = "AdvancedSearchForm_SearchOnly";
- $sortBy->ID = "AdvancedSearchForm_SortBy";
- $chooseDate->ID = "AdvancedSearchForm_ChooseDate";
- }
-
- if(!$actions) {
- $actions = new FieldList(
- new FormAction("results", _t('AdvancedSearchForm.GO', 'Go'))
- );
- }
- parent::__construct($controller, $name, $fields, $actions);
- }
-
- public function forTemplate(){
- return $this->renderWith(array("AdvancedSearchForm","Form"));
- }
-
- /* Return dataObjectSet of the results, using the form data.
- */
- public function getResults($numPerPage = 10) {
- $data = $this->getData();
-
- if($data['+']) $keywords .= " +" . ereg_replace(" +", " +", trim($data['+']));
- if($data['quote']) $keywords .= ' "' . $data['quote'] . '"';
- if($data['any']) $keywords .= ' ' . $data['any'];
- if($data['-']) $keywords .= " -" . ereg_replace(" +", " -", trim($data['-']));
- $keywords = trim($keywords);
-
- // This means that they want to just find pages where there's *no* match
-
- if($keywords[0] == '-') {
- $keywords = $data['-'];
- $invertedMatch = true;
- }
-
-
- // Limit search to various sections
- if($_REQUEST['OnlyShow']) {
- $pageList = array();
-
- // Find the associated pages
- foreach($_REQUEST['OnlyShow'] as $section => $checked) {
- $items = explode(",", $section);
- foreach($items as $item) {
- $page = DataObject::get_one('SiteTree', "\"URLSegment\" = '" . Convert::raw2sql($item) . "'");
- $pageList[] = $page->ID;
- if(!$page) user_error("Can't find a page called '$item'", E_USER_WARNING);
- $page->loadDescendantIDListInto($pageList);
- }
- }
- $contentFilter = "\"ID\" IN (" . implode(",", $pageList) . ")";
-
- // Find the files associated with those pages
- $fileList = DB::query("SELECT \"FileID\" FROM \"Page_ImageTracking\" WHERE \"PageID\" IN (" . implode(",", $pageList) . ")")->column();
- if($fileList) $fileFilter = "\"ID\" IN (" . implode(",", $fileList) . ")";
- else $fileFilter = " 1 = 2 ";
- }
-
- if($data['From']) {
- $filter .= ($filter?" AND":"") . " \"LastEdited\" >= '$data[From]'";
- }
- if($data['To']) {
- $filter .= ($filter?" AND":"") . " \"LastEdited\" <= '$data[To]'";
- }
-
- if($filter) {
- $contentFilter .= ($contentFilter?" AND":"") . $filter;
- $fileFilter .= ($fileFilter?" AND":"") . $filter;
- }
-
- if($data['sortby']) {
- $sorts = array(
- 'LastUpdated' => '"LastEdited" DESC',
- 'PageTitle' => '"Title" ASC',
- 'Relevance' => '"Relevance" DESC',
- );
- $sortBy = $sorts[$data['sortby']] ? $sorts[$data['sortby']] : $sorts['Relevance'];
- }
-
- $keywords = $this->addStarsToKeywords($keywords);
-
- return $this->searchEngine($keywords, $numPerPage, $sortBy, $contentFilter, true, $fileFilter, $invertedMatch);
- }
-
- function getSearchQuery() {
- $data = $_REQUEST;
- if($data['+']) $keywords .= " +" . ereg_replace(" +", " +", trim($data['+']));
- if($data['quote']) $keywords .= ' "' . $data['quote'] . '"';
- if($data['any']) $keywords .= ' ' . $data['any'];
- if($data['-']) $keywords .= " -" . ereg_replace(" +", " -", trim($data['-']));
-
- return trim($keywords);
- }
-
-}
-
Please sign in to comment.
Something went wrong with that request. Please try again.