File indexing completed on 2024-12-15 05:21:36
0001 <?php 0002 /** 0003 * ocs-apiserver 0004 * 0005 * Copyright 2016 by pling GmbH. 0006 * 0007 * This file is part of ocs-apiserver. 0008 * 0009 * This program is free software: you can redistribute it and/or modify 0010 * it under the terms of the GNU Affero General Public License as 0011 * published by the Free Software Foundation, either version 3 of the 0012 * License, or (at your option) any later version. 0013 * 0014 * This program is distributed in the hope that it will be useful, 0015 * but WITHOUT ANY WARRANTY; without even the implied warranty of 0016 * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the 0017 * GNU Affero General Public License for more details. 0018 * 0019 * You should have received a copy of the GNU Affero General Public License 0020 * along with this program. If not, see <http://www.gnu.org/licenses/>. 0021 **/ 0022 class Application_Model_DbTable_ConfigStoreCategory extends Local_Model_Table 0023 { 0024 0025 protected $_keyColumnsForRow = array('store_category_id'); 0026 protected $_key = 'store_category_id'; 0027 protected $_name = "config_store_category"; 0028 0029 /** 0030 * @param int $dataId 0031 */ 0032 public function deleteId($dataId) 0033 { 0034 $sql = "DELETE FROM {$this->_name} WHERE {$this->_key} = ?"; 0035 $this->_db->query($sql,$dataId)->execute(); 0036 } 0037 0038 /** 0039 * @param int $storeId 0040 * @return array 0041 */ 0042 public function fetchAllCategoriesForStore($storeId) 0043 { 0044 $active = Application_Model_DbTable_ProjectCategory::CATEGORY_ACTIVE; 0045 $notDeleted = Application_Model_DbTable_ProjectCategory::CATEGORY_NOT_DELETED; 0046 $sql = " 0047 SELECT pc2.project_category_id 0048 FROM project_category AS pc, project_category AS pc2 0049 WHERE pc.project_category_id IN (SELECT DISTINCT csc.project_category_id 0050 FROM config_store_category AS csc 0051 JOIN project_category AS pc ON csc.project_category_id = pc.project_category_id AND pc.is_active = 1 0052 WHERE csc.store_id = :storeId) 0053 AND pc2.lft BETWEEN pc.lft AND pc.rgt 0054 AND pc2.is_active = {$active} AND pc2.is_deleted = {$notDeleted} 0055 ORDER BY pc2.lft; 0056 "; 0057 $results = $this->_db->fetchAll($sql, array('storeId' => $storeId)); 0058 $values = array_map(function($row) { return $row['project_category_id']; }, $results); 0059 return $values; 0060 } 0061 0062 /** 0063 * @param int|array $listCatId 0064 * @return array 0065 */ 0066 public function fetchStoresForCatdId($listCatId) 0067 { 0068 $inQuery = '?'; 0069 if (is_array($listCatId)) { 0070 $inQuery = implode(',', array_fill(0, count($listCatId), '?')); 0071 } 0072 0073 $sql = ' 0074 SELECT cs.store_id, cs.config_id_name 0075 FROM config_store_category as csc 0076 join config_store as cs on cs.store_id = csc.store_id 0077 where csc.project_category_id in ('.$inQuery.') 0078 '; 0079 0080 $result = $this->_db->query($sql, $listCatId)->fetchAll(); 0081 0082 if (count($result) > 0) { 0083 return $result; 0084 } else { 0085 return array(); 0086 } 0087 } 0088 0089 public function fetchCatIdsForStore($store_id) 0090 { 0091 $sql = " 0092 SELECT csc.project_category_id 0093 FROM config_store_category AS csc 0094 JOIN project_category AS pc ON pc.project_category_id = csc.project_category_id 0095 WHERE csc.store_id = :store_id 0096 AND csc.deleted_at IS NULL 0097 ORDER BY csc.`order`, pc.title 0098 "; 0099 $results = $this->_db->fetchAll($sql, array('store_id' => $store_id)); 0100 $values = array_map(function($row) { return $row['project_category_id']; }, $results); 0101 return $values; 0102 } 0103 0104 }