PHP Classes
Icontem

File: plugins/tbs_plugin_bypage.php


  Search   All class groups All class groups   Latest entries Latest entries   Top 10 charts Top 10 charts   Newsletter Newsletter   Blog Blog   Forums Forums   Help FAQ Help FAQ  
  Login   Register  
Recommend this page to a friend! ReTweet ReTweet Stumble It! Stumble It! Bookmark in del.icio.us Bookmark in del.icio.us
  Classes of Skrol29  >  TinyButStrong template engine  >  plugins/tbs_plugin_bypage.php  
File: plugins/tbs_plugin_bypage.php
Role: Auxiliary script
Content type: text/plain
Description: Plugin ByPage
Class: TinyButStrong template engine
Template Engine for Pro and Beginners
 

Contents

Class file image Download
<?php

/*
********************************************************
TinyButStrong plug-in: ByPage (requires TBS >= 3.1.0)
Version 1.0.5, on 2006-10-26, by Skrol29
********************************************************
*/

define('TBS_BYPAGE','tbsByPage');

class 
tbsByPage {

    function 
OnInstall() {
        
$this->Version '1.0.5';
        
$this->PageSize 0;
        return array(
'OnCommand','BeforeMergeBlock','AfterMergeBlock');
    }

    function 
OnCommand($PageSize,$PageNum=0,$RecKnown=0) {
        
// Activate ByPage Mode
        
$this->PageSize $PageSize;
        
$this->PageNum $PageNum;
        
$this->RecKnown $RecKnown;
        
$this->RecNbr 0;
    }

    function 
BeforeMergeBlock(&$TplSource,&$BlockBeg,&$BlockEnd,$PrmLst,&$Src) {

        if (
$this->PageSize<=0) return;   // ByPage Mode not actived
        
if (isset($Src->ByPage)) return;  // ByPage Mode already processed for the current Data source
        
if ($Src->RecSet===false) return; // No data available

        
if ($Src->RecSaved) {
            
// Data is an array

            
$this->RecNbr count($Src->RecSet);
            if (
$this->PageNum==-1) { // Last record
                
$Reminder $this->RecNbr $this->PageSize;
                if (
$Reminder==0$Reminder $this->PageSize;
                
$Src->RecNumInit $this->RecNbr $Reminder;
            } else {
                
$Src->RecNumInit = ($this->PageNum-1) * $this->PageSize;
            }

            
$Src->RecSet array_slice($Src->RecSet$Src->RecNumInit$this->PageSize);
            
$Src->RecNbr $Src->RecNumInit count($Src->RecSet);

        } else {

            
// Data is not an array => read records, saving the last page in $this->RecBuffer

            
if ($this->PageNum==-1) {
                
$RecStop = -1;
            } else {
                
$RecStop $this->PageNum $this->PageSize;
            }

            
// Init internal buffer
            
unset($Src->RecBuffer);
            
$Src->RecSaving true;

            
// Read records
             
$Src->RecBuffer = array();
            
$RecNum 0;
            
$Modulo 0;
            
$ModuloStop $this->PageSize 1;
            while ((
$Src->CurrRec!==false) and ($RecNum!==$RecStop)) {
                
$Src->DataFetch(); // Updates $Src->RecBuffer
                
if ($Src->CurrRec!==false) {
                    
$Modulo++;
                    
$RecNum++;
                    if (
$Modulo===$ModuloStop) {
                        
$Src->RecBuffer = array($Src->RecKey => $Src->CurrRec);
                        
$Src->RecNumInit += $this->PageSize;
                        
$Modulo 1;
                    }
                }
            }

            
// Retreiveing the number of records
            
$this->RecNbr $RecNum;
            if (
$this->RecKnown==-1) {
                
$Src->RecSaving false;
                while (
$Src->CurrRec!==false) {
                    
$Src->DataFetch();
                    if (
$Src->CurrRec!==false$this->RecNbr++;
                }
                
$Src->RecSaving true;
            }
            
            
$Src->DataClose(); // Close the real recordset source

        
}

        
$x '';
        
$Src->DataOpen($x); // Read first record, like it is done by TBS before calling this method

        // Deactivate ByPage Mode
        
$this->PageSize 0;
        
$Src->ByPage true;

    }

    function 
AfterMergeBlock(&$Buffer,&$Src) {
        if (!isset(
$Src->ByPage)) return;
        if (
$this->RecKnown==-1$Src->RecNum $this->RecNbr;
    }    

}

?>

 
  Advertise on this site Advertise on this site   Site map Site map   Statistics Statistics   Site tips Site tips   Privacy policy Privacy policy   Contact Contact  

For more information send a message to :
info at phpclasses dot org.
Copyright (c) Icontem 1999-2009 PHP Classes - PHP Class Scripts
  PHP Book Reviews - Reviews of books and other products