From b61b24945ae3f1dd51a10fe589a970907d293d90 Mon Sep 17 00:00:00 2001 From: paul Date: Tue, 21 Nov 2006 16:30:27 +0000 Subject: [PATCH] Fixed whitespace for coding conventions. Optimized function searchDB() - it doesnt do everything twice now, just once. Completely redid the pagination() function so that it works properly. Renamed reOrder() to reorder(). --- .../modules/htmlUI/var/ui_search.class.php | 147 ++++++++---------- 1 file changed, 64 insertions(+), 83 deletions(-) diff --git a/campcaster/src/modules/htmlUI/var/ui_search.class.php b/campcaster/src/modules/htmlUI/var/ui_search.class.php index ab85fa6b4..fa2060e1d 100644 --- a/campcaster/src/modules/htmlUI/var/ui_search.class.php +++ b/campcaster/src/modules/htmlUI/var/ui_search.class.php @@ -117,19 +117,19 @@ class uiSearch function newSearch(&$formdata) { #print_r($formdata); - $this->results = NULL; - $this->criteria['conditions'] = NULL; - $this->criteria['offset'] = NULL; - $this->criteria['form'] = NULL; - $this->criteria['operator'] = $formdata['operator']; - $this->criteria['filetype'] = $formdata['filetype']; - $this->criteria['limit'] = $formdata['limit']; - $this->criteria['counter'] = 0; + $this->results = NULL; + $this->criteria['conditions'] = NULL; + $this->criteria['offset'] = NULL; + $this->criteria['form'] = NULL; + $this->criteria['operator'] = $formdata['operator']; + $this->criteria['filetype'] = $formdata['filetype']; + $this->criteria['limit'] = $formdata['limit']; + $this->criteria['counter'] = 0; // $criteria['form'] is used for retransfer to form $this->criteria['form']['operator'] = $formdata['operator']; $this->criteria['form']['filetype'] = $formdata['filetype']; - $this->criteria['form']['limit'] = $formdata['limit']; + $this->criteria['form']['limit'] = $formdata['limit']; foreach ($formdata as $key=>$val) { if (is_array($val) && $val['active']) { @@ -163,25 +163,25 @@ class uiSearch function simpleSearch($formdata) { - $this->results = NULL; - $this->criteria['conditions'] = NULL; - $this->criteria['offset'] = NULL; - $this->criteria['operator'] = UI_SIMPLESEARCH_OPERATOR; - $this->criteria['filetype'] = UI_SIMPLESEARCH_FILETYPE; - $this->criteria['limit'] = UI_SIMPLESEARCH_LIMIT; - $this->criteria['counter'] = UI_SIMPLESEARCH_ROWS; + $this->results = NULL; + $this->criteria['conditions'] = NULL; + $this->criteria['offset'] = NULL; + $this->criteria['operator'] = UI_SIMPLESEARCH_OPERATOR; + $this->criteria['filetype'] = UI_SIMPLESEARCH_FILETYPE; + $this->criteria['limit'] = UI_SIMPLESEARCH_LIMIT; + $this->criteria['counter'] = UI_SIMPLESEARCH_ROWS; $this->criteria['form']['operator'] = 'OR'; ## $criteria['form'] is used for retransfer to form ## $this->criteria['form']['filetype'] = UI_SIMPLESEARCH_FILETYPE; - $this->criteria['form']['limit'] = UI_SIMPLESEARCH_LIMIT; + $this->criteria['form']['limit'] = UI_SIMPLESEARCH_LIMIT; for ($n = 1; $n <= UI_SIMPLESEARCH_ROWS; $n++) { - $this->criteria['conditions'][$n] = array('cat' => constant('UI_SIMPLESEARCH_CAT'.$n), - 'op' => constant('UI_SIMPLESEARCH_OP'.$n), - 'val' => stripslashes($formdata['criterium']) + $this->criteria['conditions'][$n] = array('cat' => constant('UI_SIMPLESEARCH_CAT'.$n), + 'op' => constant('UI_SIMPLESEARCH_OP'.$n), + 'val' => stripslashes($formdata['criterium']) ); - $this->criteria['form']['row_'.$n]= array(0 => uiBase::formElementEncode(constant('UI_SIMPLESEARCH_CAT'.$n)), - 1 => constant('UI_SIMPLESEARCH_OP'.$n), - 2 => stripslashes($formdata['criterium']) + $this->criteria['form']['row_'.$n]= array(0 => uiBase::formElementEncode(constant('UI_SIMPLESEARCH_CAT'.$n)), + 1 => constant('UI_SIMPLESEARCH_OP'.$n), + 2 => stripslashes($formdata['criterium']) ); } $this->Base->redirUrl = UI_BROWSER.'?act='.$this->prefix; @@ -189,96 +189,77 @@ class uiSearch } + /** + * Run the search query. Use getResult() to get the results. + * + * @return boolean + */ function searchDB() { if (count($this->criteria) === 0) { return FALSE; } - $offset = (isset($this->criteria['offset'])) ? $this->criteria['offset'] : 0; $this->results = array('page' => $offset / $this->criteria['limit']); - - //print_r($this->criteria); $results = $this->Base->gb->localSearch($this->criteria, $this->Base->sessid); - if (PEAR::isError($results)) { - //print_r($results); - return FALSE; - } - foreach ($results['results'] as $rec) { - $tmpId = $this->Base->gb->_idFromGunid($rec["gunid"]); - $this->results['items'][] = $this->Base->getMetaInfo($tmpId); - } + $this->results['items'] = $results["results"]; $this->results['cnt'] = $results['cnt']; - - /* - ## test - for ($n=0; $n<=$this->criteria['limit']; $n++) { - $this->results['items'][] = Array - ( - 'id' => 24, - 'gunid' => '1cc472228d0cb2ac', - 'title' => 'Item '.$n, - 'creator' => 'Sebastian', - 'duration' => '   10:00', - 'type' => 'webstream' - ); - } - $results['cnt'] = 500; - $this->results['cnt'] = $results['cnt']; - ## end test - */ - - //print_r($this->results); - $this->pagination($results); - + $this->pagination(); return TRUE; } - function pagination($results) + function pagination() { if (sizeof($this->results['items']) == 0) { return FALSE; } $offset = isset($this->criteria['offset']) ? $this->criteria['offset'] : 0; - $currp = ($offset / $this->criteria['limit']) + 1; // current page - $maxp = ceil($results['cnt'] / $this->criteria['limit']); // maximum page - - /* - for ($n = 1; $n <= $maxp; $n = $n+$width) { - $width = pow(10, floor(($n)/10)); - $this->results['pagination'][$n] = $n; - } - */ - + $currentPage = ($offset / $this->criteria['limit']) + 1; + $maxPage = ceil($this->results['cnt'] / $this->criteria['limit']); $deltaLower = UI_SEARCHRESULTS_DELTA; $deltaUpper = UI_SEARCHRESULTS_DELTA; - $start = $currp; + $maxNumPaginationButtons = $deltaLower + $deltaUpper + 1; - if ($start + $maxp > 0) { - $deltaLower += $start - $maxp; // correct lower boarder if page is near end + $start = 1; + $end = $maxPage; + + // If there are enough pages to warrant "next" and "previous" + // buttons... + if ($maxPage > $maxNumPaginationButtons) { + // When currentPage goes past deltaLower + if ($currentPage <= $deltaLower) { + $end = min($deltaLower + $deltaUpper + 1, $maxPage); + } + // When currentpage is near the end of the results. + elseif ($currentPage >= ($maxPage - $deltaUpper)) { + $start = max($maxPage - $deltaLower - $deltaUpper + 1, 1); + } + // somewhere in the middle + else { + $start = max($currentPage - $deltaLower, 1); + $end = min($currentPage + $deltaUpper, $maxPage); + } } - for ($n = $start-$deltaLower; $n <= $start+$deltaUpper; $n++) { - if ($n <= 0) { - $deltaUpper++; // correct upper boarder if page is near zero - } elseif ($n <= $maxp) { - $this->results['pagination'][$n] = $n; - } + for ($n = $start; $n <= $end; $n++) { + $this->results['pagination'][$n] = $n; } - #array_pop($this->results['pagination']); - $this->results['pagination'][1] ? NULL : $this->results['pagination'][1] = '|<<'; - $this->results['pagination'][$maxp] ? NULL : $this->results['pagination'][$maxp] = '>>|'; - $this->results['next'] = ($results['cnt'] > $offset + $this->criteria['limit']) ? TRUE : FALSE; - $this->results['prev'] = ($offset > 0) ? TRUE : FALSE; + if (!isset($this->results['pagination'][1])) { + $this->results['pagination'][1] = '|<<'; + } + if (!isset($this->results['pagination'][$maxPage])) { + $this->results['pagination'][$maxPage] = '>>|'; + } + $this->results['next'] = ($this->results['cnt'] > $offset + $this->criteria['limit']) ? TRUE : FALSE; + $this->results['prev'] = ($offset > 0) ? TRUE : FALSE; ksort($this->results['pagination']); - return TRUE; } - function reOrder($by) + function reorder($by) { $this->criteria['offset'] = NULL;