diff options
Diffstat (limited to 'framework/DataAccess/adodb/adodb-pager.inc.php')
-rw-r--r-- | framework/DataAccess/adodb/adodb-pager.inc.php | 290 |
1 files changed, 0 insertions, 290 deletions
diff --git a/framework/DataAccess/adodb/adodb-pager.inc.php b/framework/DataAccess/adodb/adodb-pager.inc.php deleted file mode 100644 index 04bea98e..00000000 --- a/framework/DataAccess/adodb/adodb-pager.inc.php +++ /dev/null @@ -1,290 +0,0 @@ -<?php - -/* - V4.72 21 Feb 2006 (c) 2000-2006 John Lim (jlim@natsoft.com.my). All rights reserved. - Released under both BSD license and Lesser GPL library license. - Whenever there is any discrepancy between the two licenses, - the BSD license will take precedence. - Set tabs to 4 for best viewing. - - This class provides recordset pagination with - First/Prev/Next/Last links. - - Feel free to modify this class for your own use as - it is very basic. To learn how to use it, see the - example in adodb/tests/testpaging.php. - - "Pablo Costa" <pablo@cbsp.com.br> implemented Render_PageLinks(). - - Please note, this class is entirely unsupported, - and no free support requests except for bug reports - will be entertained by the author. - -*/ -class ADODB_Pager { - var $id; // unique id for pager (defaults to 'adodb') - var $db; // ADODB connection object - var $sql; // sql used - var $rs; // recordset generated - var $curr_page; // current page number before Render() called, calculated in constructor - var $rows; // number of rows per page - var $linksPerPage=10; // number of links per page in navigation bar - var $showPageLinks; - - var $gridAttributes = 'width=100% border=1 bgcolor=white'; - - // Localize text strings here - var $first = '<code>|<</code>'; - var $prev = '<code><<</code>'; - var $next = '<code>>></code>'; - var $last = '<code>>|</code>'; - var $moreLinks = '...'; - var $startLinks = '...'; - var $gridHeader = false; - var $htmlSpecialChars = true; - var $page = 'Page'; - var $linkSelectedColor = 'red'; - var $cache = 0; #secs to cache with CachePageExecute() - - //---------------------------------------------- - // constructor - // - // $db adodb connection object - // $sql sql statement - // $id optional id to identify which pager, - // if you have multiple on 1 page. - // $id should be only be [a-z0-9]* - // - function ADODB_Pager(&$db,$sql,$id = 'adodb', $showPageLinks = false) - { - global $PHP_SELF; - - $curr_page = $id.'_curr_page'; - if (empty($PHP_SELF)) $PHP_SELF = htmlspecialchars($_SERVER['PHP_SELF']); // htmlspecialchars() to prevent XSS attacks - - $this->sql = $sql; - $this->id = $id; - $this->db = $db; - $this->showPageLinks = $showPageLinks; - - $next_page = $id.'_next_page'; - - if (isset($_GET[$next_page])) { - $_SESSION[$curr_page] = (integer) $_GET[$next_page]; - } - if (empty($_SESSION[$curr_page])) $_SESSION[$curr_page] = 1; ## at first page - - $this->curr_page = $_SESSION[$curr_page]; - - } - - //--------------------------- - // Display link to first page - function Render_First($anchor=true) - { - global $PHP_SELF; - if ($anchor) { - ?> - <a href="<?php echo $PHP_SELF,'?',$this->id;?>_next_page=1"><?php echo $this->first;?></a> - <?php - } else { - print "$this->first "; - } - } - - //-------------------------- - // Display link to next page - function render_next($anchor=true) - { - global $PHP_SELF; - - if ($anchor) { - ?> - <a href="<?php echo $PHP_SELF,'?',$this->id,'_next_page=',$this->rs->AbsolutePage() + 1 ?>"><?php echo $this->next;?></a> - <?php - } else { - print "$this->next "; - } - } - - //------------------ - // Link to last page - // - // for better performance with large recordsets, you can set - // $this->db->pageExecuteCountRows = false, which disables - // last page counting. - function render_last($anchor=true) - { - global $PHP_SELF; - - if (!$this->db->pageExecuteCountRows) return; - - if ($anchor) { - ?> - <a href="<?php echo $PHP_SELF,'?',$this->id,'_next_page=',$this->rs->LastPageNo() ?>"><?php echo $this->last;?></a> - <?php - } else { - print "$this->last "; - } - } - - //--------------------------------------------------- - // original code by "Pablo Costa" <pablo@cbsp.com.br> - function render_pagelinks() - { - global $PHP_SELF; - $pages = $this->rs->LastPageNo(); - $linksperpage = $this->linksPerPage ? $this->linksPerPage : $pages; - for($i=1; $i <= $pages; $i+=$linksperpage) - { - if($this->rs->AbsolutePage() >= $i) - { - $start = $i; - } - } - $numbers = ''; - $end = $start+$linksperpage-1; - $link = $this->id . "_next_page"; - if($end > $pages) $end = $pages; - - - if ($this->startLinks && $start > 1) { - $pos = $start - 1; - $numbers .= "<a href=$PHP_SELF?$link=$pos>$this->startLinks</a> "; - } - - for($i=$start; $i <= $end; $i++) { - if ($this->rs->AbsolutePage() == $i) - $numbers .= "<font color=$this->linkSelectedColor><b>$i</b></font> "; - else - $numbers .= "<a href=$PHP_SELF?$link=$i>$i</a> "; - - } - if ($this->moreLinks && $end < $pages) - $numbers .= "<a href=$PHP_SELF?$link=$i>$this->moreLinks</a> "; - print $numbers . ' '; - } - // Link to previous page - function render_prev($anchor=true) - { - global $PHP_SELF; - if ($anchor) { - ?> - <a href="<?php echo $PHP_SELF,'?',$this->id,'_next_page=',$this->rs->AbsolutePage() - 1 ?>"><?php echo $this->prev;?></a> - <?php - } else { - print "$this->prev "; - } - } - - //-------------------------------------------------------- - // Simply rendering of grid. You should override this for - // better control over the format of the grid - // - // We use output buffering to keep code clean and readable. - function RenderGrid() - { - global $gSQLBlockRows; // used by rs2html to indicate how many rows to display - include_once(ADODB_DIR.'/tohtml.inc.php'); - ob_start(); - $gSQLBlockRows = $this->rows; - rs2html($this->rs,$this->gridAttributes,$this->gridHeader,$this->htmlSpecialChars); - $s = ob_get_contents(); - ob_end_clean(); - return $s; - } - - //------------------------------------------------------- - // Navigation bar - // - // we use output buffering to keep the code easy to read. - function RenderNav() - { - ob_start(); - if (!$this->rs->AtFirstPage()) { - $this->Render_First(); - $this->Render_Prev(); - } else { - $this->Render_First(false); - $this->Render_Prev(false); - } - if ($this->showPageLinks){ - $this->Render_PageLinks(); - } - if (!$this->rs->AtLastPage()) { - $this->Render_Next(); - $this->Render_Last(); - } else { - $this->Render_Next(false); - $this->Render_Last(false); - } - $s = ob_get_contents(); - ob_end_clean(); - return $s; - } - - //------------------- - // This is the footer - function RenderPageCount() - { - if (!$this->db->pageExecuteCountRows) return ''; - $lastPage = $this->rs->LastPageNo(); - if ($lastPage == -1) $lastPage = 1; // check for empty rs. - if ($this->curr_page > $lastPage) $this->curr_page = 1; - return "<font size=-1>$this->page ".$this->curr_page."/".$lastPage."</font>"; - } - - //----------------------------------- - // Call this class to draw everything. - function Render($rows=10) - { - global $ADODB_COUNTRECS; - - $this->rows = $rows; - - if ($this->db->dataProvider == 'informix') $this->db->cursorType = IFX_SCROLL; - - $savec = $ADODB_COUNTRECS; - if ($this->db->pageExecuteCountRows) $ADODB_COUNTRECS = true; - if ($this->cache) - $rs = &$this->db->CachePageExecute($this->cache,$this->sql,$rows,$this->curr_page); - else - $rs = &$this->db->PageExecute($this->sql,$rows,$this->curr_page); - $ADODB_COUNTRECS = $savec; - - $this->rs = &$rs; - if (!$rs) { - print "<h3>Query failed: $this->sql</h3>"; - return; - } - - if (!$rs->EOF && (!$rs->AtFirstPage() || !$rs->AtLastPage())) - $header = $this->RenderNav(); - else - $header = " "; - - $grid = $this->RenderGrid(); - $footer = $this->RenderPageCount(); - - $this->RenderLayout($header,$grid,$footer); - - $rs->Close(); - $this->rs = false; - } - - //------------------------------------------------------ - // override this to control overall layout and formating - function RenderLayout($header,$grid,$footer,$attributes='border=1 bgcolor=beige') - { - echo "<table ".$attributes."><tr><td>", - $header, - "</td></tr><tr><td>", - $grid, - "</td></tr><tr><td>", - $footer, - "</td></tr></table>"; - } -} - - -?>
\ No newline at end of file |