Version 4.5.0

This commit is contained in:
Neo committed 2025-12-19 05:51:58 -08:00
1 parent 1a0c7fd3c2
commit f79dcf067a
3791 files changed
+248032 -76372

No files matched your search

+24 -10
View File
@@ -11,7 +11,7 @@
namespace IPS\Api;
/* To prevent PHP errors (extending class does not exist) revealing path */
if ( !defined( '\IPS\SUITE_UNIQUE_KEY' ) )
if ( !\defined( '\IPS\SUITE_UNIQUE_KEY' ) )
{
header( ( isset( $_SERVER['SERVER_PROTOCOL'] ) ? $_SERVER['SERVER_PROTOCOL'] : 'HTTP/1.0' ) . ' 403 Forbidden' );
exit;
@@ -28,9 +28,9 @@ class _PaginatedResponse extends Response
public $httpCode;
/**
* @brief Select query
* @brief Iterator (usually a select query)
*/
protected $select;
protected $iterator;
/**
* @brief Current page
@@ -61,7 +61,7 @@ class _PaginatedResponse extends Response
* Constructor
*
* @param int $httpCode HTTP Response code
* @param \IPS\Db\Select $select Select query
* @param \Iterator $iterator Select query or \IPS\Patterns\ActiveRecordIterator instance
* @param int $page Current page
* @param string $activeRecordClass ActiveRecord class
* @param int $count Total Count
@@ -69,11 +69,11 @@ class _PaginatedResponse extends Response
* @param int $perPage Number of results per page
* @return void
*/
public function __construct( $httpCode, $select, $page, $activeRecordClass, $count, \IPS\Member $authorizedMember = NULL, $perPage=NULL )
public function __construct( $httpCode, $iterator, $page, $activeRecordClass, $count, \IPS\Member $authorizedMember = NULL, $perPage=NULL )
{
$this->httpCode = $httpCode;
$this->page = (int) $page;
$this->select = $select;
$this->iterator = $iterator;
$this->activeRecordClass = $activeRecordClass;
$this->count = (int) $count;
$this->resultsPerPage = $perPage ? (int) $perPage : 25;
@@ -88,18 +88,32 @@ class _PaginatedResponse extends Response
public function getOutput()
{
$results = array();
$this->select->query .= \IPS\Db::i()->compileLimitClause( array( ( $this->page - 1 ) * $this->resultsPerPage, $this->resultsPerPage ) );
if( $this->iterator instanceof \IPS\Db\Select )
{
$this->iterator->query .= \IPS\Db::i()->compileLimitClause( array( ( $this->page - 1 ) * $this->resultsPerPage, $this->resultsPerPage ) );
}
if ( $this->activeRecordClass )
{
foreach ( new \IPS\Patterns\ActiveRecordIterator( $this->select, $this->activeRecordClass ) as $result )
if( $this->iterator instanceof \IPS\Patterns\ActiveRecordIterator )
{
$results[] = $result->apiOutput( $this->authorizedMember );
foreach ( $this->iterator as $result )
{
$results[] = $result->apiOutput( $this->authorizedMember );
}
}
else
{
foreach ( new \IPS\Patterns\ActiveRecordIterator( $this->iterator, $this->activeRecordClass ) as $result )
{
$results[] = $result->apiOutput( $this->authorizedMember );
}
}
}
else
{
foreach ( $this->select as $result )
foreach ( $this->iterator as $result )
{
$results[] = $result;
}