src/Kiwi/EshopBundle/Service/EshopProducersHandle.php line 76

Open in your IDE?
  1. <?php
  2. namespace Kiwi\EshopBundle\Service;
  3. use Kiwi\EshopBundle\Entity\Producers;
  4. class EshopProducersHandle {
  5.     protected $em;
  6.     protected $languages;
  7.     /**
  8.      * @var \Kiwi\EshopBundle\Service\EshopProductsHandle
  9.      */
  10.     private $eshopProductsHandle;
  11.     /**
  12.      * @var \Kiwi\EshopBundle\Service\EshopCategoriesHandle
  13.      */
  14.     private $eshopCategoriesHandle;
  15.     var $controller null;
  16.     var $repo 'Kiwi\EshopBundle\Entity\Producers';
  17.     public function __construct(\Doctrine\ORM\EntityManager $em,
  18.                                 \Kiwi\LanguagesBundle\Service\LanguagesHandle $languages,
  19.                                 \Kiwi\EshopBundle\Service\EshopProductsHandle $eshopProductsHandle,
  20.                                 \Kiwi\EshopBundle\Service\EshopCategoriesHandle $eshopCategoriesHandle) {
  21.         $this->em $em;
  22.         $this->languages $languages;
  23.         $this->eshopProductsHandle $eshopProductsHandle;
  24.         $this->eshopCategoriesHandle $eshopCategoriesHandle;
  25.     }
  26.     public function setController($controller) {
  27.         $this->controller $controller;
  28.         return $this;
  29.     }
  30.     public function producerAddArticle(Producers $customParams){
  31.         $article $this->controller->get('article_handle')->createBlankArticle();
  32.         $customParams->setArticle($article);
  33.         $this->em->persist($customParams);
  34.         $this->em->flush();
  35.         return $article;
  36.     }
  37.     public function getProducerByCode($code) {
  38.         return $this->em->getRepository($this->repo)->findOneBy(array('code' => addslashes($code)));
  39.     }
  40.     public function getProducer(int $producer_id) {
  41.         return $this->em->getRepository($this->repo)->find((int)$producer_id);
  42.     }
  43.     public function getProducers(Producers $direct_producer null$include_products false$include_categories false$lang 'cz') {
  44.         if($direct_producer) {
  45.             $producers = array($direct_producer);
  46.         } else {
  47.             $producers $this->em->getRepository($this->repo)->findAll();
  48.         }
  49.         //inject producers products
  50.         if($include_products or $include_categories) {
  51.             $producers_ids = [];
  52.             foreach ($producers as $producer) {
  53.                 $producers_ids[] = $producer->getId();
  54.                 $producer->products = [];
  55.                 $producer->categories = [];
  56.                 $producer->full_link $this->getProducerLink($producer$lang);
  57.             }
  58.             $products = ($direct_producer) ? $this->getProducerProducts($producers_ids) : array('filtered' => []);
  59.             foreach ($producers as $producer) {
  60.                 $producers_ids[] = $producer->getId();
  61.                 foreach ($products['filtered'] as $product) {
  62.                     if($product['producer']) {
  63.                         if($product['producer']['id'] == $producer->getId()) {
  64.                             $producer->products[] = $product;
  65.                         }
  66.                     }
  67.                 }
  68.             }
  69.         }
  70.         //inject producers categories
  71.         if($include_categories) {
  72.             foreach ($producers as $producer) {
  73.                 if(count($producer->products) >= 1) {
  74.                     $categories = [];
  75.                     foreach ($producer->products as $product) {
  76.                         $categories array_merge_recursive($categories$product['categories']);
  77.                     }
  78.                     foreach (array_unique($categories) as $a_category_id) {
  79.                         $category_obj $this->eshopCategoriesHandle->getCategory($a_category_id);
  80.                         $category_obj->full_link $this->eshopCategoriesHandle->getCategoryLink($category_obj$lang);
  81.                         $producer->categories[] = $category_obj;
  82.                     }
  83.                 }
  84.             }
  85.         }
  86.         if($direct_producer) {
  87.             if(isset($producers[0])) {
  88.                 return $producers[0];
  89.             } else {
  90.                 return false;
  91.             }
  92.         }
  93.         return $producers;
  94.     }
  95.     public function getProducerProducts(array $producers_ids$lang 'cz') {
  96.         return $this->eshopProductsHandle->findProducts($lang, array('producer' => $producers_ids'results_per_page' => 9999));
  97.         /*
  98.         return $this->em->getRepository($phObj->repo_categories)->findBy(array(
  99.             'category_id' => (int)$category_id,
  100.             'is_deleted' => false
  101.         ));
  102.         */
  103.     }
  104.     public function getProducerLink(\Kiwi\EshopBundle\Entity\Producers $producer$lang 'cz') {
  105.         $data $this->controller->get('page_twig_extension')->kpathFunction(21$lang);
  106.         //$data .= $this->pageExtensions->webalizeFunction($kategorieTree->getName());
  107.         $data .= $producer->getCode();
  108.         return $data;
  109.     }
  110. }