File indexing completed on 2024-12-22 05:33:25
0001 <?php 0002 0003 /** 0004 * ocs-webserver 0005 * 0006 * Copyright 2016 by pling GmbH. 0007 * 0008 * This file is part of ocs-webserver. 0009 * 0010 * This program is free software: you can redistribute it and/or modify 0011 * it under the terms of the GNU Affero General Public License as 0012 * published by the Free Software Foundation, either version 3 of the 0013 * License, or (at your option) any later version. 0014 * 0015 * This program is distributed in the hope that it will be useful, 0016 * but WITHOUT ANY WARRANTY; without even the implied warranty of 0017 * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the 0018 * GNU Affero General Public License for more details. 0019 * 0020 * You should have received a copy of the GNU Affero General Public License 0021 * along with this program. If not, see <http://www.gnu.org/licenses/>. 0022 **/ 0023 class Backend_CategoriesController extends Local_Controller_Action_Backend 0024 { 0025 const RESULT_OK = "OK"; 0026 const RESULT_ERROR = "ERROR"; 0027 0028 /** @var Default_Model_DbTable_ProjectCategory */ 0029 protected $_model; 0030 0031 protected $_authMember; 0032 0033 protected $_modelName = 'Default_Model_DbTable_ProjectCategory'; 0034 0035 public function init() 0036 { 0037 parent::init(); 0038 0039 $this->_model = new $this->_modelName(); 0040 0041 $this->view->pageTitle = 'Manage Product Categories'; 0042 $this->view->author = $this->_authMember->username; 0043 } 0044 0045 public function indexAction() 0046 { 0047 0048 } 0049 0050 public function createAction() 0051 { 0052 $jTableResult = array(); 0053 try { 0054 $params = $this->getAllParams(); 0055 if (empty($params['rgt'])) { 0056 $root = $this->_model->fetchRoot(); 0057 $params['rgt'] = $root->rgt - 1; 0058 } 0059 $resultRow = $this->_model->addNewElement($params)->toArray(); 0060 0061 if (false === empty($params['parent'])) { 0062 $this->_model->moveToParent($resultRow['project_category_id'], (int)$params['parent'], 'bottom'); 0063 $resultRow = $this->_model->fetchElement($resultRow['project_category_id']); 0064 } 0065 0066 $jTableResult['Result'] = self::RESULT_OK; 0067 $jTableResult['Record'] = $resultRow; 0068 } catch (Exception $e) { 0069 Zend_Registry::get('logger')->err(__METHOD__ . ' - ' . print_r($e, true)); 0070 $translate = Zend_Registry::get('Zend_Translate'); 0071 $jTableResult['Result'] = self::RESULT_ERROR; 0072 $jTableResult['Message'] = $translate->_('Error while processing data.'); 0073 } 0074 0075 $this->_helper->json($jTableResult); 0076 } 0077 0078 public function updateAction() 0079 { 0080 $jTableResult = array(); 0081 try { 0082 $this->_model->moveToParent((int)$this->getParam('project_category_id', null), (int)$this->getParam('parent', null)); 0083 $record = $this->_model->save($this->getAllParams()); 0084 0085 $jTableResult = array(); 0086 $jTableResult['Result'] = self::RESULT_OK; 0087 $jTableResult['Record'] = $record->toArray(); 0088 } catch (Exception $e) { 0089 Zend_Registry::get('logger')->err(__METHOD__ . ' - ' . print_r($e, true)); 0090 $translate = Zend_Registry::get('Zend_Translate'); 0091 $jTableResult['Result'] = self::RESULT_ERROR; 0092 $jTableResult['Message'] = $translate->_('Error while processing data.'); 0093 } 0094 0095 $this->_helper->json($jTableResult); 0096 } 0097 0098 public function deleteAction() 0099 { 0100 $identifier = (int)$this->getParam('project_category_id', null); 0101 0102 $this->_model->setCategoryDeleted($identifier); 0103 0104 $jTableResult = array(); 0105 $jTableResult['Result'] = self::RESULT_OK; 0106 0107 $this->_helper->json($jTableResult); 0108 } 0109 0110 public function listAction() 0111 { 0112 $startIndex = (int)$this->getParam('jtStartIndex'); 0113 $pageSize = (int)$this->getParam('jtPageSize'); 0114 $sorting = $this->getParam('jtSorting'); 0115 $filter_deleted = (int)$this->getParam('filter_deleted', 1); 0116 0117 $records = $this->_model->fetchTreeWithParentId($filter_deleted, null); 0118 0119 $pagination = Zend_Paginator::factory($records); 0120 $pagination->setItemCountPerPage($pageSize); 0121 $pagination->setCurrentPageNumber(($startIndex / $pageSize) + 1); 0122 0123 $jTableResult = array(); 0124 $jTableResult['Result'] = self::RESULT_OK; 0125 $jTableResult['Records'] = (array)$pagination->getCurrentItems(); 0126 $jTableResult['TotalRecordCount'] = count($records); 0127 0128 $this->_helper->json($jTableResult); 0129 } 0130 0131 public function moveelementAction() 0132 { 0133 $params = $this->getAllParams(); 0134 $newPosition = $params['record']['lft']; 0135 0136 switch ($params['direction']) { 0137 case 'up': 0138 $sibling = $this->_model->findPreviousSibling($params['record']); 0139 if (null == $sibling) { 0140 $newPosition = $params['record']['lft']; 0141 } else { 0142 $newPosition = (int)$sibling['lft']; 0143 } 0144 break; 0145 case 'down': 0146 $sibling = $this->_model->findNextSibling($params['record']); 0147 if (null == $sibling) { 0148 $newPosition = $params['record']['lft']; 0149 } else { 0150 $newPosition = (int)$sibling['rgt'] + 1; 0151 } 0152 break; 0153 default: 0154 ; 0155 } 0156 0157 $jTableResult = array(); 0158 if (count($sibling) == 0) { 0159 $jTableResult['Result'] = self::RESULT_ERROR; 0160 $this->_helper->json($jTableResult); 0161 } 0162 0163 $element = $this->_model->fetchRow('lft = ' . $params['record']['lft']); 0164 0165 $result = $this->_model->moveTo($element->toArray(), $newPosition); 0166 0167 $jTableResult['Result'] = $result == true ? self::RESULT_OK : self::RESULT_ERROR; 0168 $jTableResult['Record'] = $element->toArray(); 0169 0170 $this->_helper->json($jTableResult); 0171 } 0172 0173 public function dragdropAction() 0174 { 0175 $params = $this->getAllParams(); 0176 0177 if ($params['data']['lft'] <= $params['newPosition'] And $params['data']['rgt'] >= $params['newPosition']) { 0178 $result = false; 0179 } else { 0180 $result = $this->_model->moveTo($params['data'], $params['newPosition']); 0181 } 0182 0183 $jTableResult = array(); 0184 $jTableResult['Result'] = ($result == true) ? self::RESULT_OK : self::RESULT_ERROR; 0185 0186 $this->_helper->json($jTableResult); 0187 } 0188 0189 public function treeAction() 0190 { 0191 $result = true; 0192 $cat_id = (int)$this->getParam('c'); 0193 0194 try { 0195 $records = $this->_model->fetchTreeForJTableStores($cat_id); 0196 } catch (Exception $e) { 0197 Zend_Registry::get('logger')->err(__METHOD__ . ' - ' . print_r($e, true)); 0198 $result = false; 0199 $records = array(); 0200 } 0201 0202 $jTableResult = array(); 0203 $jTableResult['Result'] = ($result == true) ? self::RESULT_OK : self::RESULT_ERROR; 0204 $jTableResult['Options'] = $records; 0205 0206 $this->_helper->json($jTableResult); 0207 } 0208 0209 public function createaboutAction() 0210 { 0211 $cat_id = (int)$this->getParam('c'); 0212 $config = Zend_Registry::get('config'); 0213 $static_config = $config->settings->static; 0214 $include_path = $static_config->include_path . 'category_about/'; 0215 try { 0216 if (touch($include_path . '/' . $cat_id . '.phtml')) { 0217 $result = true; 0218 } else { 0219 $result = false; 0220 } 0221 } catch (Exception $e) { 0222 Zend_Registry::get('logger')->err(__METHOD__ . ' - ' . print_r($e, true)); 0223 $result = false; 0224 } 0225 0226 $jTableResult = array(); 0227 $jTableResult['Result'] = ($result == true) ? self::RESULT_OK : self::RESULT_ERROR; 0228 0229 $this->_helper->json($jTableResult); 0230 } 0231 0232 public function fetchtagratinggroupsAction() 0233 { 0234 $result = true; 0235 0236 $tagmodel = new Default_Model_Tags(); 0237 try { 0238 $resultRows = $tagmodel->getAllTagGroupsForStoreFilter(); 0239 $resultForSelect = array(); 0240 $resultForSelect[] = array('DisplayText' => '', 'Value' => null); 0241 foreach ($resultRows as $row) { 0242 $resultForSelect[] = array('DisplayText' => $row['group_name'], 'Value' => $row['group_id']); 0243 } 0244 0245 } catch (Exception $e) { 0246 Zend_Registry::get('logger')->err(__METHOD__ . ' - ' . print_r($e, true)); 0247 $result = false; 0248 $records = array(); 0249 } 0250 0251 $jTableResult = array(); 0252 $jTableResult['Result'] = ($result == true) ? self::RESULT_OK : self::RESULT_ERROR; 0253 $jTableResult['Options'] = $resultForSelect; 0254 0255 $this->_helper->json($jTableResult); 0256 } 0257 0258 public function readaboutAction() 0259 { 0260 $cat_id = (int)$this->getParam('c'); 0261 $config = Zend_Registry::get('config'); 0262 $static_config = $config->settings->static; 0263 $include_path = $static_config->include_path . 'category_about/'; 0264 $filecontent = ''; 0265 $result = true; 0266 0267 try { 0268 if (file_exists($include_path . '/' . $cat_id . '.phtml')) { 0269 $filecontent = file_get_contents($include_path . '/' . $cat_id . '.phtml'); 0270 } 0271 } catch (Exception $e) { 0272 Zend_Registry::get('logger')->err(__METHOD__ . ' - ' . print_r($e, true)); 0273 $result = false; 0274 } 0275 0276 $jTableResult = array(); 0277 $jTableResult['Result'] = ($result == true) ? self::RESULT_OK : self::RESULT_ERROR; 0278 $jTableResult['c'] = $cat_id; 0279 $jTableResult['CatAbout'] = $filecontent; 0280 0281 $this->_helper->json($jTableResult); 0282 } 0283 0284 public function saveaboutAction() 0285 { 0286 $cat_id = (int)$this->getParam('c'); 0287 $cat_about = $this->getParam('ca'); 0288 0289 $config = Zend_Registry::get('config'); 0290 $static_config = $config->settings->static; 0291 $include_path = $static_config->include_path . 'category_about/'; 0292 0293 try { 0294 file_put_contents($include_path . '/' . $cat_id . '.phtml', $cat_about); 0295 $result = true; 0296 } catch (Exception $e) { 0297 Zend_Registry::get('logger')->err(__METHOD__ . ' - ' . print_r($e, true)); 0298 $result = false; 0299 } 0300 0301 $jTableResult = array(); 0302 $jTableResult['Result'] = ($result == true) ? self::RESULT_OK : self::RESULT_ERROR; 0303 0304 $this->_helper->json($jTableResult); 0305 } 0306 0307 }