Overview

Namespaces

  • Thelia
    • Action
    • Config
    • Controller
    • Core
      • Bundle
      • DependencyInjection
        • Compiler
        • Loader
      • Event
      • EventListener
      • Template
        • BaseParam
    • Exception
    • Log
      • Destination
    • Model
      • map
      • om
    • Routing
      • Matcher
    • Tools
    • Tpex
      • BaseParam
      • Element
        • Loop
        • TestLoop
      • Event
      • Exception
      • Filter
      • Tokenizer

Classes

  • Thelia
  • TheliaContainerBuilder
  • TheliaHttpKernel
  • Overview
  • Namespace
  • Class
  • Tree
  1: <?php
  2: /*************************************************************************************/
  3: /*                                                                                   */
  4: /*      Thelia                                                                       */
  5: /*                                                                                   */
  6: /*      Copyright (c) OpenStudio                                                     */
  7: /*  email : info@thelia.net                                                      */
  8: /*      web : http://www.thelia.net                                                  */
  9: /*                                                                                   */
 10: /*      This program is free software; you can redistribute it and/or modify         */
 11: /*      it under the terms of the GNU General Public License as published by         */
 12: /*      the Free Software Foundation; either version 3 of the License                */
 13: /*                                                                                   */
 14: /*      This program is distributed in the hope that it will be useful,              */
 15: /*      but WITHOUT ANY WARRANTY; without even the implied warranty of               */
 16: /*      MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the                */
 17: /*      GNU General Public License for more details.                                 */
 18: /*                                                                                   */
 19: /*      You should have received a copy of the GNU General Public License            */
 20: /*      along with this program. If not, see <http://www.gnu.org/licenses/>.     */
 21: /*                                                                                   */
 22: /*************************************************************************************/
 23: 
 24: namespace Thelia\Core;
 25: 
 26: /**
 27:  * Root class of Thelia
 28:  *
 29:  * It extends Symfony\Component\HttpKernel\Kernel for changing some fonctionnality
 30:  *
 31:  *
 32:  * @author Manuel Raynaud <mraynaud@openstudio.fr>
 33:  */
 34: 
 35: use Symfony\Component\DependencyInjection\ContainerBuilder;
 36: use Symfony\Component\HttpKernel\Kernel;
 37: use Symfony\Component\Config\Loader\LoaderInterface;
 38: use Symfony\Component\Config\Definition\Processor;
 39: use Symfony\Component\Config\ConfigCache;
 40: use Symfony\Component\Config\Resource\FileResource;
 41: use Symfony\Component\Config\Util\XmlUtils;
 42: use Symfony\Component\Yaml\Yaml;
 43: use Symfony\Component\DependencyInjection\ParameterBag\ParameterBag;
 44: 
 45: 
 46: use Thelia\Core\Bundle;
 47: use Thelia\Log\Tlog;
 48: use Thelia\Config\DatabaseConfiguration;
 49: use Thelia\Config\DefinePropel;
 50: use Thelia\Core\TheliaContainerBuilder;
 51: use Thelia\Core\DependencyInjection\Loader\XmlFileLoader;
 52: use Symfony\Component\Config\FileLocator;
 53: 
 54: use Propel;
 55: use PropelConfiguration;
 56: 
 57: class Thelia extends Kernel
 58: {
 59: 
 60:     protected $tpexConfig;
 61:     
 62:     public function init()
 63:     {
 64:         parent::init();
 65:         if($this->debug) {
 66:             ini_set('display_errors', 1);
 67:         }
 68:         $this->initPropel();
 69:     }
 70:     
 71:     protected function initPropel()
 72:     {
 73:         if (file_exists(THELIA_ROOT . '/local/config/database.yml') === false) {
 74:             return ;
 75:         }
 76: 
 77:         if(! Propel::isInit()) {
 78: 
 79:             $definePropel = new DefinePropel(new DatabaseConfiguration(),
 80:                 Yaml::parse(THELIA_ROOT . '/local/config/database.yml'));
 81: 
 82:             Propel::setConfiguration($definePropel->getConfig());
 83: 
 84:             if ($this->isDebug()) {
 85:                 Propel::setLogger(Tlog::getInstance());
 86:                 $config = Propel::getConfiguration(PropelConfiguration::TYPE_OBJECT);
 87:                 $config->setParameter('debugpdo.logging.details.method.enabled', true);
 88:                 $config->setParameter('debugpdo.logging.details.time.enabled', true);
 89:                 $config->setParameter('debugpdo.logging.details.mem.enabled', true);
 90: 
 91:                 $con = Propel::getConnection("thelia");
 92:                 $con->useDebug(true);
 93:             }
 94: 
 95:             Propel::initialize();
 96:         }
 97:     }
 98: 
 99:     /**
100:      * 
101:      * Load some configuration 
102:      * Initialize all plugins
103:      * 
104:      */
105:     protected function loadConfiguration(ContainerBuilder $container)
106:     {
107: 
108:         $loader = new XmlFileLoader($container, new FileLocator(THELIA_ROOT . "/core/lib/Thelia"));
109:         $loader->load("config.xml");
110: 
111:         $modules = \Thelia\Model\ModuleQuery::getActivated();
112: 
113:         foreach ($modules as $module) {
114: 
115:             try {
116:                 $loader = new XmlFileLoader($container, new FileLocator(THELIA_PLUGIN_DIR . "/" . ucfirst($module->getCode()) . "/Config"));
117:                 $loader->load("config.xml");
118:             } catch(\InvalidArgumentException $e) {
119: 
120:             }
121:         }
122:     }
123:     
124:     /**
125:      * 
126:      * initialize session in Request object
127:      * 
128:      * All param must be change in Config table
129:      * 
130:      * @param \Symfony\Component\HttpFoundation\Request $request
131:      */
132: 
133:     /**
134:      * Gets a new ContainerBuilder instance used to build the service container.
135:      *
136:      * @return ContainerBuilder
137:      */
138:     protected function getContainerBuilder()
139:     {
140:         return new TheliaContainerBuilder(new ParameterBag($this->getKernelParameters()));
141:     }
142: 
143:     /**
144:      * Builds the service container.
145:      *
146:      * @return ContainerBuilder The compiled service container
147:      *
148:      * @throws \RuntimeException
149:      */
150:     protected function buildContainer()
151:     {
152:         $container = parent::buildContainer();
153: 
154:         $this->loadConfiguration($container);
155:         $container->customCompile();
156: 
157:         return $container;
158:     }
159: 
160:     /**
161:      * Gets the cache directory.
162:      *
163:      * @return string The cache directory
164:      *
165:      * @api
166:      */
167:     public function getCacheDir()
168:     {
169:         if (defined('THELIA_ROOT')) {
170:             return THELIA_ROOT.'cache/'.$this->environment;
171:         } else {
172:             return parent::getCacheDir();
173:         }
174: 
175:     }
176: 
177:     /**
178:      * Gets the log directory.
179:      *
180:      * @return string The log directory
181:      *
182:      * @api
183:      */
184:     public function getLogDir()
185:     {
186:         if (defined('THELIA_ROOT')) {
187:             return THELIA_ROOT.'log/';
188:         } else {
189:             return parent::getLogDir();
190:         }
191:     }
192: 
193:     /**
194:      * return available bundle
195:      *
196:      * Part of Symfony\Component\HttpKernel\KernelInterface
197:      *
198:      * @return array An array of bundle instances.
199:      *
200:      */
201:     public function registerBundles()
202:     {
203:         $bundles = array(
204:             /* TheliaBundle contain all the dependency injection description */
205:             new Bundle\TheliaBundle()
206:         );
207: 
208:         /**
209:          * OTHER CORE BUNDLE CAN BE DECLARE HERE AND INITIALIZE WITH SPECIFIC CONFIGURATION
210:          *
211:          * HOW TO DECLARE OTHER BUNDLE ? ETC
212:          */
213: 
214:         return $bundles;
215: 
216:     }
217: 
218:     /**
219:      * Loads the container configuration
220:      *
221:      * part of Symfony\Component\HttpKernel\KernelInterface
222:      *
223:      * @param LoaderInterface $loader A LoaderInterface instance
224:      *
225:      * @api
226:      */
227:     public function registerContainerConfiguration(LoaderInterface $loader)
228:     {
229:         //Nothing is load here but it's possible to load container configuration here.
230:         //exemple in sf2 : $loader->load(__DIR__.'/config/config_'.$this->getEnvironment().'.yml');
231:     }
232: 
233: }
234: 
thelia API documentation generated by ApiGen 2.8.0