core/lib/Thelia/Core/Template/Element/LoopResult.php line 138
<?php/** This file is part of the Thelia package.* http://www.thelia.net** (c) OpenStudio <info@thelia.net>** For the full copyright and license information, please view the LICENSE* file that was distributed with this source code.*/namespace Thelia\Core\Template\Element;use Propel\Runtime\Collection\ObjectCollection;use Propel\Runtime\Util\PropelModelPager;class LoopResult implements \Iterator, \JsonSerializable{private $position;protected $collection = [];public $resultsCollection;protected $versioned = false;protected $timestamped = false;protected $countable = false;public function __construct($resultsCollection){$this->position = 0;$this->resultsCollection = $resultsCollection;}/*** @param bool $countable*/public function setCountable($countable = true): void{$this->countable = true === $countable;}/*** @param bool $timestamped*/public function setTimestamped($timestamped = true): void{$this->timestamped = true === $timestamped;}/*** @param bool $versioned*/public function setVersioned($versioned = true): void{$this->versioned = true === $versioned;}public function isEmpty(){return \count($this->collection) == 0;}public function addRow(LoopResultRow $row): void{if (true === $this->versioned) {foreach ($this->getVersionOutputs() as $output) {$row->set($output[0], $row->model->{$output[1]}());}}if (true === $this->timestamped) {foreach ($this->getTimestampOutputs() as $output) {$row->set($output[0], $row->model->{$output[1]}());}}if (true === $this->countable) {$row->set('LOOP_COUNT', 1 + $this->getCount());$row->set('LOOP_TOTAL', $this->getResultDataCollectionCount());}$this->collection[] = $row;}/*** @param int $key*/public function remove($key): void{if (isset($this->collection[$key])) {unset($this->collection[$key]);}}/*** Adjust the collection once all results have been added.*/public function finalizeRows(): void{// Fix rows LOOP_TOTAL if parseResults() did not added all resultsCollection items to the collection array// see https://github.com/thelia/thelia/issues/2337if (true === $this->countable && $this->getResultDataCollectionCount() !== $realCount = $this->getCount()) {foreach ($this->collection as &$item) {$item->set('LOOP_TOTAL', $realCount);}}}public function getCount(){return \count($this->collection);}public function getResultDataCollectionCount(){if ($this->resultsCollection instanceof ObjectCollection || $this->resultsCollection instanceof PropelModelPager) {return $this->resultsCollection->count();}if (\is_array($this->resultsCollection)) {return \count($this->resultsCollection);}return 0;}public function getResultDataCollection(){return $this->resultsCollection;}/*** (PHP 5 >= 5.0.0)<br/>* Return the current element.** @see http://php.net/manual/en/iterator.current.php** @return \Thelia\Core\Template\Element\LoopResultRow*/public function current(){return $this->collection[$this->position];}/*** (PHP 5 >= 5.0.0)<br/>* Move forward to next element.** @see http://php.net/manual/en/iterator.next.php** @return void any returned value is ignored*/public function next(): void{++$this->position;}/*** (PHP 5 >= 5.0.0)<br/>* Return the key of the current element.** @see http://php.net/manual/en/iterator.key.php** @return mixed scalar on success, or null on failure*/public function key(){return $this->position;}/*** (PHP 5 >= 5.0.0)<br/>* Checks if current position is valid.** @see http://php.net/manual/en/iterator.valid.php** @return bool The return value will be casted to boolean and then evaluated.* Returns true on success or false on failure.*/public function valid(): bool{return isset($this->collection[$this->position]);}/*** (PHP 5 >= 5.0.0)<br/>* Rewind the Iterator to the first element.** @see http://php.net/manual/en/iterator.rewind.php** @return void any returned value is ignored*/public function rewind(): void{$this->position = 0;}protected function getTimestampOutputs(){return [['CREATE_DATE', 'getCreatedAt'],['UPDATE_DATE', 'getUpdatedAt'],];}protected function getVersionOutputs(){return [['VERSION', 'getVersion'],['VERSION_DATE', 'getVersionCreatedAt'],['VERSION_AUTHOR', 'getVersionCreatedBy'],];}/*** {@inheritdoc}*/public function jsonSerialize(){$return = [];foreach ($this->collection as $collection) {$return[] = $collection->getVarVal();}return $return;}}