src-empire/Empire/Core/PageCategory.php line 48

Open in your IDE?
  1. <?php
  2. namespace Empire\Core;
  3. use Empire\Legacy\db;
  4. class PageCategory extends AbstractEntity implements EntityNamed {
  5.     const PRIMARY_FIELD "PACA_ID";
  6.     const TABLE "PAGE_CATEGORY";
  7.     public $name;
  8.     public $url;
  9.     public $order;
  10.     public $secure;
  11.     protected $PACA_ID;
  12.     protected $PACA_ORDER;
  13.     protected $PACA_NAME;
  14.     protected $PACA_DIRECT;
  15.     protected $PACA_SECURE;
  16.     private $subcategories;
  17.     private $pages;
  18.     function getPrimaryField() {
  19.         return self::PRIMARY_FIELD;
  20.     }
  21.     function getTable() {
  22.         return self::TABLE;
  23.     }
  24.     function initialize() {
  25.         $this->id $this->PACA_ID;
  26.         $this->name $this->PACA_NAME;
  27.         $this->url $this->PACA_DIRECT;
  28.         $this->secure $this->PACA_SECURE truefalse;
  29.         $this->subcategories = [];
  30.     }
  31.     /**
  32.      * @param int $type
  33.      * @return PageCategory[]
  34.      * @throws \Exception
  35.      */
  36.     static function loadAll($type Page::PAGE_TYPE_ALL) {
  37.         if($type == Page::PAGE_TYPE_ALL) {
  38.             $stmt db::prepare("SELECT * FROM !! ORDER BY PACA_ORDER ASC"self::TABLE);
  39.         } else {
  40.             $stmt db::prepare("SELECT * FROM !! WHERE PACA_SECURE = !! ORDER BY PACA_ORDER ASC"self::TABLE$type);
  41.         }
  42.         return db::fetchArrayOfObjects($stmtself::class);
  43.     }
  44.     function getName() {
  45.         return $this->name;
  46.     }
  47.     static function getByUrl($url) {
  48.         $res db::prepare("SELECT * FROM SECUREPAGE WHERE SEPA_PAGE = ?"$url);
  49.         return db::fetchObject($resself::class);
  50.     }
  51.     /**
  52.      * @return PageSubCategory[]
  53.      */
  54.     function subCategories() {
  55.         if(count($this->subcategories) < 1) {
  56.             $stmt db::prepare("SELECT * FROM !! WHERE PACA_ID = ? ORDER BY SCAT_ORDER"PageSubCategory::TABLE$this->id);
  57.             $this->subcategories db::fetchArrayOfObjects($stmtPageSubCategory::class);
  58.         }
  59.         return $this->subcategories;
  60.     }
  61.     /**
  62.      * @return Page[]
  63.      */
  64.     function pages() {
  65.         if (count($this->pages) < 1) {
  66.             $stmt db::prepare("SELECT * FROM !! WHERE PACA_ID = ? ORDER BY SEPA_PAGE ASC"Page::TABLE$this->id);
  67.             $this->pages db::fetchArrayOfObjects($stmtPage::class);
  68.         }
  69.         return $this->pages;
  70.     }
  71.     /**
  72.      * @param string $name
  73.      * @return PageCategory $this
  74.      */
  75.     function setName($name) {
  76.         $name trim($name);
  77.         $this->name $name;
  78.         $this->PACA_NAME $name;
  79.         $this->updateFields(['PACA_NAME' => $name]);
  80.         return $this;
  81.     }
  82.     function delete() {
  83.         foreach ($this->subCategories() as $page) {
  84.             $page->delete();
  85.         }
  86.         return parent::delete();
  87.     }
  88.     /**
  89.      * @param $name
  90.      * @param bool $secure
  91.      * @param string $url
  92.      * @return int
  93.      * @throws \Exception
  94.      */
  95.     static function addPageCategory($namebool $secure$url "") {
  96.         $name trim($name);
  97.         return db::insert(self::TABLE, [
  98.            'PACA_ORDER' => 0,
  99.            'PACA_NAME' => $name,
  100.            'PACA_DIRECT' => $url,
  101.            'PACA_SECURE' => $secure
  102.         ]);
  103.     }
  104.     /**
  105.      * @param $array
  106.      * @return bool
  107.      * @throws \Exception
  108.      */
  109.     public static function saveOrder($array) {
  110.         $i $k $paca 0;
  111.         foreach ($array as $e) {
  112.             if(!isset($e['scat']) || !isset($e['paca'])) continue;
  113.             if($e['paca'] != $paca) {
  114.                 $paca $e['paca'];
  115.                 (PageCategory::load([$paca]))->updateFields(['PACA_ORDER' => $k]);
  116.                 $k++;
  117.                 $i 0;
  118.             }
  119.             /** @var PageSubCategory $pscat */
  120.             if(($pscat PageSubCategory::load([$e['scat']])) !== null) {
  121.                 $pscat->updateFields(['SCAT_ORDER' => $i]);
  122.             }
  123.             $i++;
  124.             if(isset($e['pages'])) {
  125.                 $stmt db::prepare("SELECT * FROM SECUREPAGE WHERE SEPA_ID IN ? ORDER BY FIELD(SEPA_ID, !! )"$e['pages'], implode(', '$e['pages']));
  126.                 /** @var Page[] $pages */
  127.                 $pages db::fetchArrayOfObjects($stmtPage::class);
  128.                 $j 0;
  129.                 foreach ($pages as $page) {
  130.                     $page->updateFields(['PACA_ID' => $e['paca'], 'SCAT_ID' => $e['scat'], 'SEPA_ORDER' => $j]);
  131.                     $j++;
  132.                 }
  133.             }
  134.         }
  135.         return true;
  136.     }
  137. }