sQuery = $sTmpQuery; $this->iResultsToDisplay = $iTmpResultsToDisplay; $this->aColumns = $aTmpColumns; $this->aColumnHeadings = $aTmpColumnHeaders; $this->aColumnTypes = $aTmpColumnTypes; $this->aLinkURLs = $aTmpLinkURLs; $this->aDBQueryStringColumns = $aTmpDBQueryStringColumns; $this->aQueryStringVariableNames = $aTmpQueryStringVariableNames; $this->sQueryString = ""; $this->aRememberValues = array(); } function setQueryString($sNewQueryString) { $this->sQueryString = $sNewQueryString; } function getQueryString() { return $this->sOrderByColumn; } function setStartIndex($iNewValue) { $this->iStartIndex = $iNewValue; } function setOrderByColumn($sNewValue) { $this->sOrderByColumn = $sNewValue; } function setOrderDirection($sNewValue) { $this->sOrderDirection = $sNewValue; } function setSearchText($sNewValue) { $this->sSearchText = $sNewValue; } function setRememberValues($aRemember) { $this->aRememberValues = $aRemember; } /** * Build the HTML string used to render the object * * @return String of HTML used to render object * * @todo possibly add in image size restraints for link types 2 and 3 */ function & render() { global $default; $sSectionName = $default->siteMap->getSectionName(substr($_SERVER["PHP_SELF"], strlen($default->rootUrl), strlen($_SERVER["PHP_SELF"]))); $sTHBGColour = $default->siteMap->getSectionColour($sSectionName, "th"); // run the query first and get the number of rows $iTotalResults = $this->getResultCount(); // now add the limit and offset stuff for cutting down result set // decrement startIndex because LIMIT starts at zero and startIndex starts at 1 (for display purposes) if (is_array($this->sQuery)) { $sQuery = $this->sQuery[0]; $aParams = $this->sQuery[1]; } else { $sQuery = $this->sQuery; $aParams = array(); } $sQuery = $sQuery . " LIMIT ?, ?"; $aParams[] = $this->iStartIndex - 1; $aParams[] = $this->iResultsToDisplay; $sql = & $default->db; $sql->query(array($sQuery, $aParams)); if ($sql->num_rows() == 0) { //no results $sToRender .= "\n"; $sToRender .= "\n"; $sToRender .= "\n"; $sToRender .= "\n"; $sToRender .= "

No results matched your criteria

\n"; } else { $sToRender .= "\n"; // display the number of results $iEndIndex = $this->iStartIndex+$this->iResultsToDisplay-1 < $iTotalResults ? $this->iStartIndex+$this->iResultsToDisplay-1 : $iTotalResults; $sToRender .= ""; $sToRender .= "\n"; $sToRender .= "\n"; for ($i = 0; $i < count($this->aColumnHeadings); $i++) { if (! (strcmp($this->sOrderByColumn, $this->aColumns[$i]) === false) && (strcmp($this->sOrderByColumn, $this->aColumns[$i]) == 0)) { if (!(strcmp($this->sOrderDirection,"ASC") === false) && (strcmp($this->sOrderDirection,"ASC") == 0)) { $sToRender .= "\n"; } else { $sToRender .= "\n"; } } else { $sToRender .= "\n"; } } $sToRender .= "\n"; $iColour = 0; $iDisplayed = 0; //limit the result set displayed while($sql->next_record()) { $sToRender .= ""; $iColour++; $iDisplayed++; for ($i = 0; $i < count($this->aColumns); $i++) { switch ($this->aColumnTypes[$i]) { case 1: //display text $sToRender .= "\n"; break; case 2: //display a checkbox $sToRender .= "\n"; break; case 3: //display a url $sToRender .= "\n"; break; case 4: //diplay an image URL $sToRender .= "\n"; break; default: break; } } $sToRender .= "\n"; } //if we displayed less results than the number to display //simply pad the table while ($iDisplayed < $this->iResultsToDisplay) { $sToRender .= "\n"; $iDisplayed++; } $sToRender .= "
Searched the KnowledgeTree for '$this->sSearchText'.
Displaying results $this->iStartIndex - $iEndIndex of $iTotalResults
" . $this->aColumnHeadings[$i]. "" . $this->aColumnHeadings[$i]. "" . $this->aColumnHeadings[$i]. "
" . $sql->f($this->aColumns[$i]) . "" . ($sql->f($this->aColumns[$i]) ? "Yes" : "No") . "aLinkURLs[$i]; for ($j = 0; $j < count($this->aDBQueryStringColumns); $j++) { if (strpos($sURLplusQuery, "?") === false) { $sURLplusQuery .= "?" . $this->aQueryStringVariableNames[$j] . "=" . $sql->f($this->aDBQueryStringColumns[$j]); } else { $sURLplusQuery .= "&" . $this->aQueryStringVariableNames[$j] . "=" . $sql->f($this->aDBQueryStringColumns[$j]); } } $sToRender .= $sURLplusQuery; $sToRender .= "\">" . $sql->f($this->aColumns[$i]) . "aLinkURLs[$i]; for ($j = 0; $j < count($this->aDBQueryStringColumns); $j++) { if (strpos($sToRender, "?") === false) { $sToRender .= "?" . $this->aQueryStringVariableNames[$j] . "=" . $sql->f($this->aDBQueryStringColumns[$j]); } else { $sToRender .= "&" . $this->aQueryStringVariableNames[$j] . "=" . $sql->f($this->aDBQueryStringColumns[$j]); } } $sToRender .= "\">f($this->aColumns[$i]) . "\" border=\"0\" />
 
"; $sToRender .= ""; $sToRender .= "\n"; foreach ($this->aRememberValues as $k => $v) { $v = htmlentities(urlencode($v)); $sToRender .= "\n"; } // Display only the next button if (($this->iStartIndex + $this->iResultsToDisplay - 1) < $iTotalResults && $this->iStartIndex == 1) { $sToRender .= ""; $sToRender .= "\n"; } // Display both the next and the previous buttons else if (($this->iStartIndex + $this->iResultsToDisplay - 1) < $iTotalResults && $this->iStartIndex > 1) { $sToRender .= ""; $sToRender .= "\n"; } // Display only the previous button else if ($this->iStartIndex > 1) { $sToRender .= ""; } $sToRender .= "\n"; $sToRender .= "
             "; $sToRender .= ""; $sToRender .= ""; $sToRender .= ""; $sToRender .= ""; $sToRender .= ""; $sToRender .= "\n"; $sToRender .= ""; $sToRender .= "
\n"; } return $sToRender; } function getResultCount() { global $default; $sql = & $default->db; if ($sql->query($this->sQuery)) { return $sql->num_rows(); } else { return 0; } } } ?>