File indexing completed on 2024-05-12 05:58:33

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_Model_ClientFileConfig
0024 {
0025 
0026     /** @var string */
0027     protected $_clientName;
0028     /** @var  array */
0029     protected $_clientConfigData;
0030     protected $defaultConfigLoaded;
0031 
0032     /**
0033      * PHP 5 allows developers to declare constructor methods for classes.
0034      * Classes which have a constructor method call this method on each newly-created object,
0035      * so it is suitable for any initialization that the object may need before it is used.
0036      *
0037      * Note: Parent constructors are not called implicitly if the child class defines a constructor.
0038      * In order to run a parent constructor, a call to parent::__construct() within the child constructor is required.
0039      *
0040      * param [ mixed $args [, $... ]]
0041      * @link http://php.net/manual/en/language.oop5.decon.php
0042      * @param string $clientName
0043      */
0044     function __construct($clientName)
0045     {
0046         $this->_clientName = $clientName;
0047     }
0048 
0049     public function loadClientConfig()
0050     {
0051         $this->_clientConfigData = Default_Model_StoreTemplate::getStoreTemplate($this->_clientName);
0052     }
0053 
0054     /**
0055      * @return null|array
0056      */
0057     public function getConfig()
0058     {
0059         return $this->_clientConfigData;
0060     }
0061 
0062     /**
0063      * @return null|string
0064      */
0065     public function getClientName()
0066     {
0067         return $this->_clientName;
0068     }
0069 
0070     /**
0071      * @return Zend_Form
0072      * @throws Zend_Form_Exception
0073      */
0074     public function getForm()
0075     {
0076         $form = new Backend_Form_Other_Config();
0077         $form->addElementPrefixPath('Backend_Form_Element', APPLICATION_PATH . '/backend/forms/elements');
0078         $form->addElement('hidden', 'client-name');
0079         $form->getElement('client-name')->setValue($this->_clientName);
0080         foreach ($this->_clientConfigData as $key => $value) {
0081             $form = $this->generateSubForm($key, $value, $form);
0082         }
0083 
0084         return $form;
0085     }
0086 
0087     /**
0088      * @param string    $key
0089      * @param mixed     $value
0090      * @param Zend_Form $form
0091      * @return mixed
0092      * @throws Zend_Form_Exception
0093      */
0094     private function generateSubForm($key, $value, $form)
0095     {
0096         if (false === is_object($form->getSubForm($key))) {
0097             $newSubForm = new Backend_Form_Other_SubFormConfig();
0098             $form->addSubForm($newSubForm, $key);
0099             $form->getSubForm($key)->setLegend($key);
0100         }
0101 
0102         if (false === is_array($value)) {
0103             $form->addElement('text', $key);
0104             $form->$key->setValue($value);
0105             $form->$key->setLabel($key);
0106 
0107             return $form;
0108         }
0109 
0110         foreach ($value as $itemKey => $itemValue) {
0111             if (false === is_array($itemValue)) {
0112                 $element = new Backend_Form_Element_Config($itemKey);
0113                 $form->getSubForm($key)->addElement($element, $itemKey);
0114                 $form->getSubForm($key)->$itemKey->setValue($itemValue);
0115                 $form->getSubForm($key)->$itemKey->setLabel($itemKey);
0116                 continue;
0117             }
0118             $subForm = $this->generateSubForm($itemKey, $itemValue, $form->getSubForm($key));
0119             $form->addSubForm($subForm, $key);
0120         }
0121 
0122         return $form;
0123     }
0124 
0125     public function saveClientConfig($getAllParams, $clientName = null)
0126     {
0127         $clientFileId = '';
0128         if (false == empty($clientName)) {
0129             $clientFileId = '_' . $clientName;
0130         }
0131         $clientConfigPath = Zend_Registry::get('config')->settings->store->template->path;
0132         $clientConfigFileName = "client{$clientFileId}.ini.php";
0133 
0134         file_put_contents($clientConfigPath . $clientConfigFileName, '<?php
0135 
0136 return ' . var_export($getAllParams, true) . ';'
0137         );
0138     }
0139 
0140     /**
0141      * @return array
0142      */
0143     public function getClientConfigData()
0144     {
0145         return $this->_clientConfigData;
0146     }
0147 
0148     /**
0149      * @return mixed
0150      */
0151     public function getDefaultConfigLoaded()
0152     {
0153         return $this->defaultConfigLoaded;
0154     }
0155 
0156 }