Skip to content

HTTPS clone URL

Subversion checkout URL

You can clone with
or
.
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.