/htroot/assets/snippets/ajaxSearch/classes/ajaxSearchCtrl.class.inc.php
https://github.com/gunf/novo-isaak.local · PHP · 197 lines · 157 code · 16 blank · 24 comment · 61 complexity · fba7ea0b549c0296a7bc6f15153782ba MD5 · raw file
- <?php
- /* -----------------------------------------------------------------------------
- * Snippet: AjaxSearch
- * -----------------------------------------------------------------------------
- * @package AjaxSearchCtrl
- *
- * @author Coroico - www.modx.wangba.fr
- * @version 1.9.2
- * @date 05/12/2010
- *
- * Purpose:
- * The AjaxSearchCtrl class contains the logic and synchronisation between model and views
- *
- */
- class AjaxSearchCtrl {
- // public variables
- var $asCfg = null;
- var $asInput = null;
- var $asResults = null;
- var $asOutput = null;
- var $asUtil = null;
- var $asLog = null;
- var $dbg = false;
- var $dbgTpl = false;
- var $dbgRes = false;
- var $log = false;
- var $forThisAs;
- var $searchString;
- var $advSearch;
- var $subSearch;
- var $pagination;
- var $offset;
- var $asf;
- var $output;
- var $fClause;
- var $fParams = array();
- function AjaxSearchCtrl() {
- }
- function init(&$asCfg, &$asInput, &$asResults, &$asOutput, &$asUtil, &$asLog){
- // initialize the controler instance
- $this->asCfg =& $asCfg;
- $this->asInput =& $asInput;
- $this->asResults =& $asResults;
- $this->asOutput =& $asOutput;
- $this->asUtil =& $asUtil;
- $this->dbg = $asUtil->dbg;
- $this->dbgTpl = $asUtil->dbgTpl;
- $this->dbgRes = $asUtil->dbgRes;
- $this->asLog =& $asLog;
- $asLog_array = explode(':', $asCfg->cfg['asLog']);
- $this->log = ($asLog_array[0]) ? true : false;
- $this->asInput->init($asCfg, $this, $asUtil);
- $this->asResults->init($asCfg, $this, $asOutput, $asUtil);
- $this->asOutput->init($asCfg, $this, $asInput, $asResults, $asUtil, $asLog, $this->log);
- }
- /*
- * run : run the search
- */
- function run() {
- $this->setforThisAs();
- $this->getEvents(); // get $_POST and _GET variables
- $valid = $this->asInput->display($msg);
- if ($valid) {
- $valid2 = $this->asResults->getSearchResults($msg);
- if (!$valid2) return $msg;
- }
- $this->asOutput->setAjaxSearchHeader();
- if (!$this->pagination) $output = $this->asOutput->display($valid, $msg);
- else $output = $this->asOutput->paginate($valid, $msg);
- return $output;
- }
- /*
- * setforThisAs : Check if this instance is concerned
- */
- function setforThisAs() {
- if ($this->asCfg->isAjax) $this->forThisAs = true;
- else {
- $id = '';
- if (isset($_POST['asid']) || isset($_GET['asid'])) {
- if (isset($_POST['asid'])) $id = strip_tags($_POST['asid']);
- else $id = strip_tags(urldecode($_GET['asid']));
- }
- $this->forThisAs = ($this->asCfg->cfg['asId'] != $id) ? false : true;
- }
- }
- function getEvents() {
- $this->getSearchString();
- $this->subSearch = $this->asCfg->cfg['subSearch'];
- if (isset($_POST['subsearch']) || isset($_GET['subsearch'])) {
- if (isset($_POST['subsearch'])) {
- $ssc = isset($_POST['ssc']) ? ':' : ',';
- if (is_array($_POST['subsearch'])) {
- foreach($_POST['subsearch'] as $key => $value) $_POST['subsearch'][$key] = strip_tags($value);
- $this->subSearch = implode($ssc,$_POST['subsearch']);
- }
- else $this->subSearch = strip_tags($_POST['subsearch']);
- }
- else {
- $ssc = isset($_GET['ssc']) ? ':' : ',';
- if (is_array($_GET['subsearch'])) {
- foreach($_GET['subsearch'] as $key => $value) $_GET['subsearch'][$key] = strip_tags($value);
- $this->subSearch = implode($ssc,$_GET['subsearch']);
- }
- else $this->subSearch = strip_tags($_GET['subsearch']);
- }
- }
- if ($this->dbg) $this->asUtil->dbgRecord($this->subSearch , "getEvents - subsearch");
- $asfConfig = 'asfConfig';
- if ((isset($_POST['asf']) || isset($_GET['asf'])) && function_exists($asfConfig)) {
- $this->asf = isset($_POST['asf']) ? strip_tags($_POST['asf']) : strip_tags(urldecode($_GET['asf']));
- $this->fClause = $asfConfig($this->asf, $this->fParams);
- if ($this->dbg) $this->asUtil->dbgRecord($this->fParams , "getEvents - fParams");
- if ($this->dbg) $this->asUtil->dbgRecord($this->fClause , "getEvents - fClause");
- }
- else $this->asf = '';
- if ($this->dbg) $this->asUtil->dbgRecord($this->asf , "getEvents - asf");
- $this->offset = (isset($_GET['aso'])) ? strip_tags(urldecode($_GET['aso'])) : '0,0';
- if ($this->dbg) $this->asUtil->dbgRecord($this->offset , "getEvents - offset");
- $this->pagination = (isset($_POST['pgn'])) ? strip_tags($_POST['pgn']) : '';
- if ($this->dbg) $this->asUtil->dbgRecord($this->pagination , "getEvents - pgn");
- }
- function getSearchString() {
- $this->searchString = '';
- $this->advSearch = $this->asCfg->cfg['advSearch'];
- if ($this->forThisAs) {
- if (!$this->asCfg->isAjax) {
- if (isset($_POST['search']) || (isset($_GET['search']) && (!$this->asCfg->cfg['ajaxSearch']))) {
- if (isset($_POST['search'])) {
- if (is_array($_POST['search'])) {
- foreach($_POST['search'] as $key => $value) $_POST['search'][$key] = strip_tags($value);
- $this->searchString = implode(' ', $_POST['search']);
- }
- else $this->searchString = strip_tags($_POST['search']);
- } else {
- $this->searchString = strip_tags(urldecode($_GET['search']));
- }
- if (isset($_POST['advsearch'])) $this->advSearch = strip_tags($_POST['advsearch']);
- else if (isset($_GET['advsearch'])) $this->advSearch = strip_tags(urldecode($_GET['advsearch']));
- }
- }
- else {
- if (isset($_POST['search'])) {
- if (is_array($_POST['search'])) {
- foreach($_POST['search'] as $key => $value) $_POST['search'][$key] = strip_tags($value);
- $this->searchString = implode(' ', $_POST['search']);
- }
- else $this->searchString = strip_tags($_POST['search']);
- if (($this->asCfg->pgCharset != 'UTF-8') && (ini_get('mbstring.encoding_translation') == '' || strtolower(ini_get('mbstring.http_input')) == 'pass')) {
- $this->searchString = mb_convert_encoding($this->searchString, $this->asCfg->pgCharset, "UTF-8");
- $this->asOutput->setNeedsConvert(true);
- } else {
- $this->asOutput->setNeedsConvert(false);
- }
- if (isset($_POST['advsearch'])) $this->advSearch = strip_tags($_POST['advsearch']);
- }
- }
- }
- if ($this->dbg) $this->asUtil->dbgRecord($this->searchString, "getSearchString - searchString");
- if ($this->dbg) $this->asUtil->dbgRecord($this->advSearch, "getSearchString - advSearch");
- }
- /*
- * getSearchWords : depending advSearch, get the search words
- */
- function getSearchWords($search, $advSearch) {
- $searchList = array();
- if (($advSearch == NOWORDS) || (!$search)) return $searchList;
- if ($advSearch == EXACTPHRASE) $searchList[] = $search;
- else $searchList = explode(' ', $search);
- return $searchList;
- }
- function setSearchString($searchString) {
- $this->searchString = $searchString;
- }
- function setAdvSearch($advSearch) {
- $this->advSearch = $advSearch;
- }
- function setSubSearch($subSearch) {
- $this->subSearch = $subSearch;
- }
- }
- ?>