MINI
C:
/
php5.2.9
/
PEAR
/
symfony
/
lib
/
plugins
/
sfPropelPlugin
/
lib
/
addon
/
Upload File:
files >> C:/php5.2.9/PEAR/symfony/lib/plugins/sfPropelPlugin/lib/addon/sfPropelPager.class.php
<?php /* * This file is part of the symfony package. * (c) 2004-2006 Fabien Potencier <fabien.potencier@symfony-project.com> * * For the full copyright and license information, please view the LICENSE * file that was distributed with this source code. */ /** * This class is the Propel implementation of sfPager. It interacts with the propel record set and * manages criteria. * * @package symfony * @subpackage propel * @author Fabien Potencier <fabien.potencier@symfony-project.com> * @version SVN: $Id: sfPropelPager.class.php 11340 2008-09-06 07:37:02Z fabien $ */ class sfPropelPager extends sfPager { var $class = null; protected $criteria = null, $peer_method_name = 'doSelect', $peer_count_method_name = 'doCount'; public function __construct($class, $maxPerPage = 10) { parent::__construct($class, $maxPerPage); $this->setCriteria(new Criteria()); //$this->tableName = constant($this->getClassPeer().'::TABLE_NAME'); $this->tableName = constant($class.'Peer::TABLE_NAME'); } public function init() { $hasMaxRecordLimit = ($this->getMaxRecordLimit() !== false); $maxRecordLimit = $this->getMaxRecordLimit(); $cForCount = clone $this->getCriteria(); $cForCount->setOffset(0); $cForCount->setLimit(0); $cForCount->clearGroupByColumns(); $count = call_user_func(array($this->getClassPeer(), $this->getPeerCountMethod()), $cForCount); $this->setNbResults($hasMaxRecordLimit ? min($count, $maxRecordLimit) : $count); $c = $this->getCriteria(); $c->setOffset(0); $c->setLimit(0); if (($this->getPage() == 0 || $this->getMaxPerPage() == 0)) { $this->setLastPage(0); } else { $this->setLastPage(ceil($this->getNbResults() / $this->getMaxPerPage())); $offset = ($this->getPage() - 1) * $this->getMaxPerPage(); $c->setOffset($offset); if ($hasMaxRecordLimit) { $maxRecordLimit = $maxRecordLimit - $offset; if ($maxRecordLimit > $this->getMaxPerPage()) { $c->setLimit($this->getMaxPerPage()); } else { $c->setLimit($maxRecordLimit); } } else { $c->setLimit($this->getMaxPerPage()); } } } protected function retrieveObject($offset) { $cForRetrieve = clone $this->getCriteria(); $cForRetrieve->setOffset($offset - 1); $cForRetrieve->setLimit(1); $results = call_user_func(array($this->getClassPeer(), $this->getPeerMethod()), $cForRetrieve); return is_array($results) && isset($results[0]) ? $results[0] : null; } public function getResults() { $c = $this->getCriteria(); return call_user_func(array($this->getClassPeer(), $this->getPeerMethod()), $c); } public function getPeerMethod() { return $this->peer_method_name; } public function setPeerMethod($peer_method_name) { $this->peer_method_name = $peer_method_name; } public function getPeerCountMethod() { return $this->peer_count_method_name; } public function setPeerCountMethod($peer_count_method_name) { $this->peer_count_method_name = $peer_count_method_name; } public function getClassPeer() { return constant($this->class.'::PEER'); } public function getCriteria() { return $this->criteria; } public function setCriteria($c) { $this->criteria = $c; } }
Copyright ©2021 || Defacer Indonesia