vendor/lm/engine-ec/src/Entity/CategoryExtended.php line 146

Open in your IDE?
  1. <?php
  2. namespace Lm\Engine\EC\Entity;
  3. use Lm\Entity\Category;
  4. use Lm\Entity\Site;
  5. use Lm\Service\Cache\CacheService;
  6. use Lm\Service\Db\SqlService;
  7. class CategoryExtended extends Category
  8. {
  9.     /**
  10.      * @var bool
  11.      */
  12.     protected $isMobile;
  13.     /**
  14.      * @var int
  15.      */
  16.     protected $siteType;
  17.     /**
  18.      * @return bool
  19.      */
  20.     public function isMobile()
  21.     {
  22.         return $this->isMobile;
  23.     }
  24.     /**
  25.      * @return int
  26.      */
  27.     public function getSiteType()
  28.     {
  29.         return (int)$this->siteType;
  30.     }
  31.     /**
  32.      * @return bool
  33.      */
  34.     public function isMainCategory()
  35.     {
  36.         return !empty($this->getMainCategoryId()) && empty($this->getCategoryId());
  37.     }
  38.     /**
  39.      * @return bool
  40.      */
  41.     public function isSubCategory()
  42.     {
  43.         return !empty($this->getMainCategoryId()) && !empty($this->getCategoryId());
  44.     }
  45.     /**
  46.      * @return bool
  47.      */
  48.     public function hasMainCategoryMainCategory()
  49.     {
  50.         return !empty($this->getMainCategoryMainCategory());
  51.     }
  52.     /**
  53.      * @return bool
  54.      */
  55.     public function isShowSmallFooter()
  56.     {
  57.         return $this->isSubCategory() || $this->getMainCategorySmallFooterFlg() === 1;
  58.     }
  59.     /**
  60.      * @return bool
  61.      */
  62.     public function hasMainCategories()
  63.     {
  64.         return $this->getMainCategoryHasMainCategories() === 1;
  65.     }
  66.     /**
  67.      * @return bool
  68.      */
  69.     public function isNoShowDb()
  70.     {
  71.         return (int)$this->data['category_group_noshowdb'] === 1;
  72.     }
  73.     /**
  74.      * @return bool
  75.      */
  76.     public function isOnlyMain()
  77.     {
  78.         return (int)$this->data['category_group_only_main'] === 1;
  79.     }
  80.     /**
  81.      * @return bool
  82.      */
  83.     public function isItemSeries()
  84.     {
  85.         return (int)$this->data['category_group_is_item_series'] === 1;
  86.     }
  87.     public function getCategory($mc$ct null$mcMc null)
  88.     {
  89.         return $this->getCached(function () use ($mc$ct$mcMc) {
  90.             //
  91.             $query = (new SqlService())
  92.                 ->Select('T.*, T1.*, T2.*')
  93.                 ->Table('main_category_table')
  94.             ;
  95.             if (!empty($mcMc)) {
  96.                 $query->Set('T.main_category_main_category_webname'$mcMc);
  97.             }
  98.             if (!empty($mc)) {
  99.                 $query->Set('T.main_category_webname'$mc);
  100.             }
  101.             if (!empty($ct)) {
  102.                 $query
  103.                     ->Join('category_table''T.main_category_id = T1.category_main_category')
  104.                     ->Set('T1.category_webname'$ct)
  105.                 ;
  106.             } else {
  107.                 $query
  108.                     ->Join('category_table''T1.category_id = :ct')
  109.                     ->Param('ct'$ct)
  110.                 ;
  111.             }
  112.             //
  113.             $query->Join('category_group_table''T2.category_group_id = T.main_category_group');
  114.             //
  115.             $result $query->Find();
  116.             //
  117.             return $result;
  118.         });
  119.     }
  120.     /**
  121.      * @param string $mc
  122.      * @param string $ct
  123.      * @param string $mcMc
  124.      * @param bool $isMobile
  125.      * @param int $siteType
  126.      * @throws \Exception
  127.      */
  128.     public function __construct($mc$ct null$mcMc null$isMobile false$siteType Site::TYPE_UT)
  129.     {
  130.         /**
  131.          * implement as LmCacheTrait.
  132.          */
  133.         $this->__constructLmCacheTrait(new CacheService());
  134.         /**
  135.          * implement as Entity;
  136.          */
  137.         //
  138.         $this->isMobile $isMobile;
  139.         //
  140.         if (Site::TYPE_LIST[$siteType] === null) {
  141.             //
  142.             throw new \Exception('指定されたサイトが見つかりません');
  143.         }
  144.         //
  145.         $this->siteType $siteType;
  146.         //
  147.         if ($data $this->getCategory($mc$ct$mcMc)) {
  148.             //
  149.             $this->data $data;
  150.             //
  151.             if (!empty($ct) && $this->getCategoryStatus() !== Category::STATUS_AVAILABLE) {
  152.                 //
  153.                 throw new \Exception('非表示設定のカテゴリページが指定されました');
  154.             } else if (!empty($mc) && $this->getMainCategoryStatus() !== Category::STATUS_AVAILABLE) {
  155.                 //
  156.                 throw new \Exception('非表示設定のカテゴリページが指定されました');
  157.             }
  158.         } else {
  159.             //
  160.             throw new \Exception('指定されたカテゴリページが見つかりません');
  161.         }
  162.     }
  163. }