403Webshell
Server IP : 85.158.181.41  /  Your IP : 216.73.217.12
Web Server : Apache
System : Linux cloud9-vm129 6.1.178+1-ph #ph SMP PREEMPT_DYNAMIC Wed Jul 29 09:00:54 UTC 2026 x86_64
User : moncbefd ( 1024)
PHP Version : 7.3.33
Disable Function : NONE
MySQL : OFF  |  cURL : ON  |  WGET : ON  |  Perl : ON  |  Python : ON  |  Sudo : OFF  |  Pkexec : OFF
Directory :  /home/moncbefd/www.moneta.at/GXMainComponents/Services/Core/Product/

Upload File :
current_dir [ Writeable ] document_root [ Writeable ]

 

Command :


[ Back ]     

Current File : /home/moncbefd/www.moneta.at/GXMainComponents/Services/Core/Product/ProductReadService.inc.php
<?php
/* --------------------------------------------------------------
   ProductReadService.inc.php 2018-07-03
   Gambio GmbH
   http://www.gambio.de
   Copyright (c) 2018 Gambio GmbH
   Released under the GNU General Public License (Version 2)
   [http://www.gnu.org/licenses/gpl-2.0.html]
   --------------------------------------------------------------
*/

/**
 * Class ProductReadService
 *
 * @category   System
 * @package    Product
 */
class ProductReadService implements ProductReadServiceInterface
{
    /**
     * @var ProductRepositoryInterface
     */
    protected $productRepo;
    
    /**
     * @var ProductListProviderFactoryInterface
     */
    protected $listProviderFactory;
    
    /**
     * The product category linker.
     *
     * @var ProductCategoryLinkerInterface
     */
    protected $productLinker;
    
    /**
     * The url rewrite storage.
     *
     * @var UrlRewriteStorage
     */
    protected $urlRewriteStorage;
    
    
    /**
     * ProductReadService constructor.
     *
     * @param ProductRepositoryInterface          $productRepo
     * @param ProductListProviderFactoryInterface $listProviderFactory
     * @param ProductCategoryLinkerInterface      $productLinker
     * @param UrlRewriteStorage                   $urlRewriteStorage
     */
    public function __construct(
        ProductRepositoryInterface $productRepo,
        ProductListProviderFactoryInterface $listProviderFactory,
        ProductCategoryLinkerInterface $productLinker,
        UrlRewriteStorage $urlRewriteStorage
    ) {
        $this->productRepo         = $productRepo;
        $this->listProviderFactory = $listProviderFactory;
        $this->productLinker       = $productLinker;
        $this->urlRewriteStorage   = $urlRewriteStorage;
    }
    
    
    /**
     * Get Product by ID
     *
     * Returns a specific product, depending on the provided ID.
     *
     * @param IdType $productId The ID of the product to return.
     *
     * @return StoredProductInterface The stored product.
     */
    public function getProductById(IdType $productId)
    {
        return $this->productRepo->getProductById($productId);
    }
    
    
    /**
     * Get Product List
     *
     * Returns a specific product list.
     *
     * @param LanguageCode $languageCode        The language code.
     * @param IdType|null  $categoryId          The category ID of the product list.
     * @param IdType|null  $customerStatusLimit The customers status limit.
     *
     * @return ProductListItemCollection
     */
    public function getProductList(
        LanguageCode $languageCode,
        IdType $categoryId = null,
        IdType $customerStatusLimit = null
    ) {
        $conditions = [];
        
        if ($customerStatusLimit !== null) {
            $conditions = ['group_permission_' . $customerStatusLimit->asInt() => '1'];
        }
        
        $productListProvider = $this->listProviderFactory->createProductListProvider($languageCode, $conditions);
        
        if ($categoryId !== null) {
            $collection = $productListProvider->getByCategoryId($categoryId);
        } else {
            $collection = $productListProvider->getAll();
        }
        
        return $collection;
    }
    
    
    /**
     * Returns a paged product list.
     *
     * @param \LanguageCode $languageCode Language of location specific data.
     * @param \Pager|null   $pager        (Optional) Pager object with pagination information
     * @param array         $sorters      (Optional) array of Sorter objects with data sorting information
     *
     * @return \ProductListItemCollection
     */
    public function getPagedList(LanguageCode $languageCode, \Pager $pager = null, array $sorters = [])
    {
        $provider = $this->listProviderFactory->createProductListProvider($languageCode);
        
        return $provider->getAllPaged($pager, $sorters);
    }
    
    
    /**
     * Returns the count of all product entries.
     *
     * @return int
     */
    public function getProductsCount()
    {
        return $this->productRepo->getProductsCount();
    }
    
    
    /**
     * Get Active Product List
     *
     * Returns an active products list.
     *
     * @param LanguageCode $languageCode        The language code.
     * @param IdType|null  $categoryId          The category ID of the product list.
     * @param IdType|null  $customerStatusLimit The customers status limit.
     *
     * @return ProductListItemCollection
     */
    public function getActiveProductList(
        LanguageCode $languageCode,
        IdType $categoryId = null,
        IdType $customerStatusLimit = null
    ) {
        $conditions = [
            'products_status' => '1'
        ];
        
        if ($customerStatusLimit !== null) {
            $conditions['group_permission_' . $customerStatusLimit->asInt()] = '1';
        }
        
        $productListProvider = $this->listProviderFactory->createProductListProvider($languageCode, $conditions);
        
        if ($categoryId !== null) {
            $collection = $productListProvider->getByCategoryId($categoryId);
        } else {
            $collection = $productListProvider->getAll();
        }
        
        return $collection;
    }
    
    
    /**
     * Returns the category Ids which are linked with given product id.
     *
     * @param IdType $productId
     *
     * @return IdCollection
     */
    public function getProductLinks(IdType $productId)
    {
        return $this->productLinker->getProductLinks($productId);
    }
    
    
    /**
     * Returns an UrlRewriteCollection with UrlRewrite instances for the provided content ID.
     *
     * @param IdType $productId
     *
     * @return UrlRewriteCollection
     */
    public function getRewriteUrls(IdType $productId)
    {
        return $this->urlRewriteStorage->get($productId);
    }
    
    
    /**
     * Returns a single UrlRewrite instance for the provided content ID and language ID or NULL if no entry was found.
     *
     * @param IdType $productId
     * @param IdType $languageId
     *
     * @return null|UrlRewrite
     */
    public function findRewriteUrl(IdType $productId, IdType $languageId)
    {
        return $this->urlRewriteStorage->findByContentIdAndLanguageId($productId, $languageId);
    }
    
    
    /**
     * Returns an UrlRewriteCollection with UrlRewrite instances for the provided rewrite url.
     *
     * @param NonEmptyStringType $rewriteUrl
     *
     * @return UrlRewriteCollection
     */
    public function findUrlRewritesByRewriteUrl(NonEmptyStringType $rewriteUrl)
    {
        return $this->urlRewriteStorage->findByRewriteUrl($rewriteUrl);
    }
    
    
    /**
     * Filters products records by a given ProductSearchCondition object and returns an array with results.
     *
     * @param \LanguageCode           $languageCode Language code which should be used for products descriptions etc.
     * @param \ProductSearchCondition $condition    Conditions object for search.
     * @param \Pager|null             $pager        (Optional) Pager object with pagination information
     * @param array                   $sorters      (Optional) array of Sorter objects with data sorting information
     *
     * @return \ProductListItemCollection
     */
    public function searchProducts(
        LanguageCode $languageCode,
        ProductSearchCondition $condition,
        Pager $pager = null,
        array $sorters = []
    ) {
        $provider = $this->listProviderFactory->createProductListProvider($languageCode);
        
        return $provider->searchProducts($condition, $pager, $sorters);
    }
    
    
    /**
     * Count the total of filtered products.
     *
     * @param \LanguageCode           $languageCode Language code which should be used for products descriptions etc.
     * @param \ProductSearchCondition $condition    Conditions object for search.
     *
     * @return IntType
     */
    public function searchProductsCount(LanguageCode $languageCode, ProductSearchCondition $condition)
    {
        $provider = $this->listProviderFactory->createProductListProvider($languageCode);
        
        return $provider->searchProductsCount($condition);
    }
}

Youez - 2016 - github.com/yon3zu
LinuXploit