Procházet zdrojové kódy

Ticket #2911 - PerPage limit for v. 11

AntonLV před 6 roky
rodič
revize
f13b27ecf2

+ 6 - 2
inc/classes/BxDolFavoriteQuery.php

@@ -30,9 +30,13 @@ class BxDolFavoriteQuery extends BxDolObjectQuery
         return (int)$this->getOne($sQuery) > 0;
     }
 
-	public function getPerformedBy($iObjectId)
+    public function getPerformedBy($iObjectId, $iStart = 0, $iPerPage = 0)
     {
-        $sQuery = $this->prepare("SELECT `author_id` FROM `{$this->_sTableTrack}` WHERE `object_id`=? ORDER BY `date` DESC", $iObjectId);
+        $sLimitClause = "";
+        if(!empty($iPerPage))
+            $sLimitClause = $this->prepareAsString(" LIMIT ?, ?", $iStart, $iPerPage);
+
+        $sQuery = $this->prepare("SELECT `author_id` FROM `{$this->_sTableTrack}` WHERE `object_id`=? ORDER BY `date` DESC" . $sLimitClause, $iObjectId);
         return $this->getAll($sQuery);
     }
 

+ 1 - 1
inc/classes/BxDolFeatureQuery.php

@@ -29,7 +29,7 @@ class BxDolFeatureQuery extends BxDolObjectQuery
         return (int)$this->getObjectFlag($iObjectId) > 0;
     }
 
-    public function getPerformedBy($iObjectId)
+    public function getPerformedBy($iObjectId, $iStart = 0, $iPerPage = 0)
     {
         return array();
     }

+ 6 - 2
inc/classes/BxDolObjectQuery.php

@@ -91,9 +91,13 @@ class BxDolObjectQuery extends BxDolDb
         return (int)$this->getOne($sQuery) != 0;
     }
 
-    public function getPerformedBy($iObjectId)
+    public function getPerformedBy($iObjectId, $iStart = 0, $iPerPage = 0)
     {
-        $sQuery = $this->prepare("SELECT `author_id` FROM `{$this->_sTableTrack}` WHERE `object_id` = ?", $iObjectId);
+        $sLimitClause = "";
+        if(!empty($iPerPage))
+            $sLimitClause = $this->prepareAsString(" LIMIT ?, ?", $iStart, $iPerPage);
+
+        $sQuery = $this->prepare("SELECT `author_id` FROM `{$this->_sTableTrack}` WHERE `object_id` = ?" . $sLimitClause, $iObjectId);
         return $this->getColumn($sQuery);
     }
     

+ 8 - 4
inc/classes/BxDolReportQuery.php

@@ -29,7 +29,7 @@ class BxDolReportQuery extends BxDolObjectQuery
         return $aResult;
     }
 
-	public function isPerformed($iObjectId, $iAuthorId)
+    public function isPerformed($iObjectId, $iAuthorId)
     {
     	/*
     	 * 'false' is returned everytime to allow multiple reports for everybody.
@@ -37,13 +37,17 @@ class BxDolReportQuery extends BxDolObjectQuery
         return false;
     }
 
-	public function getPerformedBy($iObjectId)
+    public function getPerformedBy($iObjectId, $iStart = 0, $iPerPage = 0)
     {
-        $sQuery = $this->prepare("SELECT `author_id`, `type`, `text` FROM `{$this->_sTableTrack}` WHERE `object_id`=? ORDER BY `date` DESC", $iObjectId);
+        $sLimitClause = "";
+        if(!empty($iPerPage))
+            $sLimitClause = $this->prepareAsString(" LIMIT ?, ?", $iStart, $iPerPage);
+
+        $sQuery = $this->prepare("SELECT `author_id`, `type`, `text` FROM `{$this->_sTableTrack}` WHERE `object_id`=? ORDER BY `date` DESC" . $sLimitClause, $iObjectId);
         return $this->getAll($sQuery);
     }
 
-	public function getReport($iObjectId)
+    public function getReport($iObjectId)
     {
         $sQuery = $this->prepare("SELECT `count` as `count` FROM {$this->_sTable} WHERE `object_id` = ? LIMIT 1", $iObjectId);
 

+ 11 - 7
inc/classes/BxDolScoreQuery.php

@@ -12,9 +12,9 @@
  */
 class BxDolScoreQuery extends BxDolObjectQuery
 {
-	protected $_sTriggerFieldScore;
-	protected $_sTriggerFieldCup;
-	protected $_sTriggerFieldCdown;
+    protected $_sTriggerFieldScore;
+    protected $_sTriggerFieldCup;
+    protected $_sTriggerFieldCdown;
 
     protected $_iPostTimeout;
 
@@ -32,17 +32,21 @@ class BxDolScoreQuery extends BxDolObjectQuery
         $this->_sMethodGetEntry = 'getScore';
     }
 
-    public function getPerformedBy($iObjectId)
+    public function getPerformedBy($iObjectId, $iStart = 0, $iPerPage = 0)
     {
+        $sLimitClause = "";
+        if(!empty($iPerPage))
+            $sLimitClause = $this->prepareAsString(" LIMIT ?, ?", $iStart, $iPerPage);
+
         $sQuery = "SELECT 
             	`author_id` AS `id`, 
             	`type` AS `vote_type`, 
             	`date` AS `vote_date` 
-			FROM `{$this->_sTableTrack}` 
-			WHERE `object_id`=:object_id";
+            FROM `{$this->_sTableTrack}` 
+            WHERE `object_id`=:object_id" . $sLimitClause;
 
         return $this->getAll($sQuery, array(
-        	'object_id' => $iObjectId
+            'object_id' => $iObjectId
         ));
     }
 

+ 12 - 3
inc/classes/BxDolViewQuery.php

@@ -13,6 +13,7 @@
 class BxDolViewQuery extends BxDolObjectQuery
 {
     protected $_iPeriod;
+    protected $_iPerPageDefault;
 
     public function __construct(&$oModule)
     {
@@ -22,6 +23,8 @@ class BxDolViewQuery extends BxDolObjectQuery
 
         $aSystem = $this->_oModule->getSystemInfo();
         $this->_iPeriod = (int)$aSystem['period'];
+
+        $this->_iPerPageDefault = 30;
     }
 
     public function isPerformed($iObjectId, $iAuthorId)
@@ -30,13 +33,19 @@ class BxDolViewQuery extends BxDolObjectQuery
         return (int)$this->getOne($sQuery) > 0;
     }
 
-	public function getPerformedBy($iObjectId)
+    public function getPerformedBy($iObjectId, $iStart = 0, $iPerPage = 0)
     {
-        $sQuery = $this->prepare("SELECT `viewer_id` AS `id`, COUNT(`viewer_id`) AS `count` FROM `{$this->_sTableTrack}` WHERE `object_id`=? GROUP BY `viewer_id` ORDER BY `date` DESC", $iObjectId);
+        $sLimitClause = "";
+        if(empty($iPerPage))
+            $iPerPage = $this->_iPerPageDefault;
+        if(!empty($iPerPage))
+            $sLimitClause = $this->prepareAsString(" LIMIT ?, ?", $iStart, $iPerPage);
+
+        $sQuery = $this->prepare("SELECT `viewer_id` AS `id`, COUNT(`viewer_id`) AS `count` FROM `{$this->_sTableTrack}` WHERE `object_id`=? GROUP BY `viewer_id` ORDER BY `date` DESC" . $sLimitClause, $iObjectId);
         return $this->getAll($sQuery);
     }
 
-	public function getView($iObjectId)
+    public function getView($iObjectId)
     {
         return array('count' => $this->getObjectCount($iObjectId));
     }