vendor/pimcore/pimcore/models/Asset/Listing/Dao.php line 36

Open in your IDE?
  1. <?php
  2. /**
  3.  * Pimcore
  4.  *
  5.  * This source file is available under two different licenses:
  6.  * - GNU General Public License version 3 (GPLv3)
  7.  * - Pimcore Commercial License (PCL)
  8.  * Full copyright and license information is available in
  9.  * LICENSE.md which is distributed with this source code.
  10.  *
  11.  *  @copyright  Copyright (c) Pimcore GmbH (http://www.pimcore.org)
  12.  *  @license    http://www.pimcore.org/license     GPLv3 and PCL
  13.  */
  14. namespace Pimcore\Model\Asset\Listing;
  15. use Doctrine\DBAL\Query\QueryBuilder as DoctrineQueryBuilder;
  16. use Pimcore\Model;
  17. use Pimcore\Model\Listing\Dao\QueryBuilderHelperTrait;
  18. /**
  19.  * @internal
  20.  *
  21.  * @property \Pimcore\Model\Asset\Listing $model
  22.  */
  23. class Dao extends Model\Listing\Dao\AbstractDao
  24. {
  25.     use QueryBuilderHelperTrait;
  26.     /**
  27.      * Get the assets from database
  28.      *
  29.      * @return array
  30.      */
  31.     public function load()
  32.     {
  33.         $assets = [];
  34.         $queryBuilder $this->getQueryBuilder(['assets.id''assets.type']);
  35.         $assetsData $this->db->fetchAllAssociative((string) $queryBuilder$this->model->getConditionVariables(), $this->model->getConditionVariableTypes());
  36.         foreach ($assetsData as $assetData) {
  37.             if ($assetData['type']) {
  38.                 if ($asset Model\Asset::getById($assetData['id'])) {
  39.                     $assets[] = $asset;
  40.                 }
  41.             }
  42.         }
  43.         $this->model->setAssets($assets);
  44.         return $assets;
  45.     }
  46.     /**
  47.      * @param string|string[]|null $columns
  48.      *
  49.      * @return DoctrineQueryBuilder
  50.      */
  51.     public function getQueryBuilder(...$columns): DoctrineQueryBuilder
  52.     {
  53.         $queryBuilder $this->db->createQueryBuilder();
  54.         $queryBuilder->select(...$columns)->from('assets');
  55.         $this->applyListingParametersToQueryBuilder($queryBuilder);
  56.         return $queryBuilder;
  57.     }
  58.     /**
  59.      * Loads a list of document IDs for the specified parameters, returns an array of ids
  60.      *
  61.      * @return int[]
  62.      */
  63.     public function loadIdList()
  64.     {
  65.         $queryBuilder $this->getQueryBuilder(['assets.id']);
  66.         $assetIds $this->db->fetchFirstColumn((string) $queryBuilder$this->model->getConditionVariables(), $this->model->getConditionVariableTypes());
  67.         return array_map('intval'$assetIds);
  68.     }
  69.     /**
  70.      * @return int
  71.      */
  72.     public function getCount()
  73.     {
  74.         if ($this->model->isLoaded()) {
  75.             return count($this->model->getAssets());
  76.         } else {
  77.             $idList $this->loadIdList();
  78.             return count($idList);
  79.         }
  80.     }
  81.     /**
  82.      * @return int
  83.      */
  84.     public function getTotalCount()
  85.     {
  86.         $queryBuilder $this->getQueryBuilder();
  87.         $this->prepareQueryBuilderForTotalCount($queryBuilder'assets.id');
  88.         $amount = (int) $this->db->fetchOne((string) $queryBuilder$this->model->getConditionVariables(), $this->model->getConditionVariableTypes());
  89.         return $amount;
  90.     }
  91. }