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().

This commit is contained in:
paul 2006-11-21 16:30:27 +00:00
parent d362f0c3c9
commit b61b24945a
1 changed files with 64 additions and 83 deletions

View File

@ -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' => '&nbsp;&nbsp;&nbsp;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;