diff --git a/core/lib/Thelia/Core/Thelia.php b/core/lib/Thelia/Core/Thelia.php
index 53c8b7352..f0512ad11 100644
--- a/core/lib/Thelia/Core/Thelia.php
+++ b/core/lib/Thelia/Core/Thelia.php
@@ -35,6 +35,9 @@ namespace Thelia\Core;
use Symfony\Component\HttpKernel\Kernel;
use Symfony\Component\Config\Loader\LoaderInterface;
use Symfony\Component\Config\Definition\Processor;
+use Symfony\Component\Config\ConfigCache;
+use Symfony\Component\Config\Resource\FileResource;
+use Symfony\Component\Config\Util\XmlUtils;
use Symfony\Component\Yaml\Yaml;
@@ -42,12 +45,15 @@ use Thelia\Core\Bundle;
use Thelia\Log\Tlog;
use Thelia\Config\DatabaseConfiguration;
use Thelia\Config\DefinePropel;
+use Thelia\Config\Dumper\TpexConfigDumper;
use Propel;
use PropelConfiguration;
class Thelia extends Kernel
{
+
+ protected $tpexConfig;
public function init()
{
@@ -114,33 +120,97 @@ class Thelia extends Kernel
* manage Tpex configuration here
*/
- $config =\Symfony\Component\Config\Util\XmlUtils::loadFile(THELIA_PLUGIN_DIR . "/Test/Config/config.xml");
- var_dump(\Symfony\Component\Config\Util\XmlUtils::convertDomElementToArray($config->documentElement));
+ $file = $this->getCacheDir() . "/TpexConfig.php";
+ $configCache = new ConfigCache($file, $this->debug);
- $this->getLoopConfig();
+ if (!$configCache->isFresh()) {
+ $this->generateTpexConfigCache($configCache);
+ }
- $container->set("loop", array(
- "foo" => "Test\Loop\Foo",
- "doobitch" => "Test\Loop\Doobitch"
- ));
+ require_once $configCache;
- $container->set("filter", array());
+ $this->tpexConfig = new \TpexConfig();
- $container->set("baseParam", array());
+ $container->set("loop", $this->tpexConfig->getLoopConfig());
- $container->set("testLoop", array(
- "equal" => "Test\TestLoop\Equal"
- ));
+ $container->set("filter", $this->tpexConfig->getFilterConfig());
+ $container->set("baseParam", $this->tpexConfig->getBaseParamConfig());
+ $container->set("testLoop", $this->tpexConfig->getLoopTestConfig());
}
- protected function getLoopConfig()
+ protected function generateTpexConfigCache(ConfigCache $cache)
{
+ $loopConfig = array();
+ $filterConfig = array();
+ $baseParamConfig = array();
+ $loopTestConfig = array();
+ $resources = array();
+
+ //load master config, can be overload using modules
+
+ $masterConfigFile = THELIA_ROOT . "/core/lib/Thelia/config.xml";
+
+ if (file_exists($masterConfigFile)) {
+ $resources[] = new FileResource($masterConfigFile);
+
+ $dom = XmlUtils::loadFile($masterConfigFile);
+
+ $loopConfig = $this->processConfig($dom->getElementsByTagName("loop"));
+
+ $filterConfig = $this->processConfig($dom->getElementsByTagName("filter"));
+
+ $baseParamConfig = $this->processConfig($dom->getElementsByTagName("baseParam"));
+
+ $loopTestConfig = $this->processConfig($dom->getElementsByTagName("testLoop"));
+ }
+
+
$modules = \Thelia\Model\ModuleQuery::getActivated();
- var_dump($modules);
+ foreach ($modules as $module) {
+ $configFile = THELIA_PLUGIN_DIR . "/" . ucfirst($module->getCode()) . "/Config/config.xml";
+ if (file_exists($configFile)) {
+ $resources[] = new FileResource($configFile);
+ $dom = XmlUtils::loadFile($configFile);
+
+ $loopConfig = array_merge($loopConfig, $this->processConfig($dom->getElementsByTagName("loop")));
+
+ $filterConfig = array_merge($filterConfig, $this->processConfig($dom->getElementsByTagName("filter")));
+
+ $baseParamConfig = array_merge(
+ $baseParamConfig,
+ $this->processConfig($dom->getElementsByTagName("baseParam"))
+ );
+
+ $loopTestConfig = array_merge(
+ $loopTestConfig,
+ $this->processConfig($dom->getElementsByTagName("testLoop"))
+ );
+
+ }
+ }
+
+ $tpexConfig = new TpexConfigDumper(
+ $loopConfig,
+ $filterConfig,
+ $baseParamConfig,
+ $loopTestConfig
+ );
+
+ $cache->write($tpexConfig->dump(), $resources);
+ }
+
+ protected function processConfig(\DOMNodeList $elements)
+ {
+ $result = array();
+ for ($i = 0; $i < $elements->length; $i ++) {
+ $element = XmlUtils::convertDomElementToArray($elements->item($i));
+ $result[$element["name"]] = $element["class"];
+ }
+ return $result;
}
/**
@@ -152,7 +222,7 @@ class Thelia extends Kernel
* @param \Symfony\Component\HttpFoundation\Request $request
*/
-
+
/**
*
* boot parent kernel and after current kernel
@@ -160,9 +230,6 @@ class Thelia extends Kernel
*/
public function boot()
{
-
-
-
parent::boot();
$this->loadConfiguration();
diff --git a/core/lib/Thelia/Model/ModuleQuery.php b/core/lib/Thelia/Model/ModuleQuery.php
index 40ec784f9..8ae02eed2 100644
--- a/core/lib/Thelia/Model/ModuleQuery.php
+++ b/core/lib/Thelia/Model/ModuleQuery.php
@@ -18,10 +18,14 @@ use Thelia\Model\om\BaseModuleQuery;
*/
class ModuleQuery extends BaseModuleQuery
{
+ /**
+ * @return array|mixed|\PropelObjectCollection
+ */
public static function getActivated()
{
return self::create()
- ->findByActivate(1)
- ->find();
+ ->filterByActivate(1)
+ ->find()
+ ;
}
}
diff --git a/core/lib/Thelia/Model/map/ModuleTableMap.php b/core/lib/Thelia/Model/map/ModuleTableMap.php
index 2c5dd3461..5588f4af6 100644
--- a/core/lib/Thelia/Model/map/ModuleTableMap.php
+++ b/core/lib/Thelia/Model/map/ModuleTableMap.php
@@ -40,7 +40,7 @@ class ModuleTableMap extends TableMap
$this->setPhpName('Module');
$this->setClassname('Thelia\\Model\\Module');
$this->setPackage('Thelia.Model');
- $this->setUseIdGenerator(false);
+ $this->setUseIdGenerator(true);
// columns
$this->addPrimaryKey('id', 'Id', 'INTEGER', true, null, null);
$this->addColumn('code', 'Code', 'VARCHAR', true, 55, null);
diff --git a/core/lib/Thelia/Model/om/BaseModule.php b/core/lib/Thelia/Model/om/BaseModule.php
index 8882fe594..e7d46a890 100644
--- a/core/lib/Thelia/Model/om/BaseModule.php
+++ b/core/lib/Thelia/Model/om/BaseModule.php
@@ -735,6 +735,10 @@ abstract class BaseModule extends BaseObject implements Persistent
$modifiedColumns = array();
$index = 0;
+ $this->modifiedColumns[] = ModulePeer::ID;
+ if (null !== $this->id) {
+ throw new PropelException('Cannot insert a value for auto-increment primary key (' . ModulePeer::ID . ')');
+ }
// check the columns in natural order for more readable SQL queries
if ($this->isColumnModified(ModulePeer::ID)) {
@@ -798,6 +802,13 @@ abstract class BaseModule extends BaseObject implements Persistent
throw new PropelException(sprintf('Unable to execute INSERT statement [%s]', $sql), $e);
}
+ try {
+ $pk = $con->lastInsertId();
+ } catch (Exception $e) {
+ throw new PropelException('Unable to get autoincrement id.', $e);
+ }
+ $this->setId($pk);
+
$this->setNew(false);
}
diff --git a/core/lib/Thelia/Model/om/BaseModulePeer.php b/core/lib/Thelia/Model/om/BaseModulePeer.php
index 806ad5bb3..35a71fb9f 100644
--- a/core/lib/Thelia/Model/om/BaseModulePeer.php
+++ b/core/lib/Thelia/Model/om/BaseModulePeer.php
@@ -565,6 +565,10 @@ abstract class BaseModulePeer
$criteria = $values->buildCriteria(); // build Criteria from Module object
}
+ if ($criteria->containsKey(ModulePeer::ID) && $criteria->keyContainsValue(ModulePeer::ID) ) {
+ throw new PropelException('Cannot insert a value for auto-increment primary key ('.ModulePeer::ID.')');
+ }
+
// Set the correct dbName
$criteria->setDbName(ModulePeer::DATABASE_NAME);
diff --git a/core/lib/Thelia/Tests/bootstrap.php b/core/lib/Thelia/Tests/bootstrap.php
index 9f912b1e4..4bc8dcffb 100644
--- a/core/lib/Thelia/Tests/bootstrap.php
+++ b/core/lib/Thelia/Tests/bootstrap.php
@@ -8,4 +8,6 @@
$env = "test";
require_once __DIR__ . '/../../../bootstrap.php';
-\Propel::init(THELIA_ROOT . "/local/config/config_thelia.php");
+
+
+\Propel::init(THELIA_ROOT . "/core/lib/Thelia/Tests/Db/thelia-conf.php");
diff --git a/install/thelia.sql b/install/thelia.sql
index 3cdab0b06..98bab447d 100644
--- a/install/thelia.sql
+++ b/install/thelia.sql
@@ -901,9 +901,9 @@ DROP TABLE IF EXISTS `module`;
CREATE TABLE `module`
(
- `id` INTEGER NOT NULL,
+ `id` INTEGER NOT NULL AUTO_INCREMENT,
`code` VARCHAR(55) NOT NULL,
- ` type` TINYINT NOT NULL,
+ `type` TINYINT NOT NULL,
`activate` TINYINT,
`position` INTEGER,
`created_at` DATETIME,
@@ -1305,7 +1305,7 @@ DROP TABLE IF EXISTS `category_i18n`;
CREATE TABLE `category_i18n`
(
`id` INTEGER NOT NULL,
- `locale` VARCHAR(5) DEFAULT 'en_EN' NOT NULL,
+ `locale` VARCHAR(5) DEFAULT 'en_US' NOT NULL,
`title` VARCHAR(255),
`description` LONGTEXT,
`chapo` TEXT,
@@ -1326,7 +1326,7 @@ DROP TABLE IF EXISTS `product_i18n`;
CREATE TABLE `product_i18n`
(
`id` INTEGER NOT NULL,
- `locale` VARCHAR(5) DEFAULT 'en_EN' NOT NULL,
+ `locale` VARCHAR(5) DEFAULT 'en_US' NOT NULL,
`title` VARCHAR(255),
`description` LONGTEXT,
`chapo` TEXT,
@@ -1347,7 +1347,7 @@ DROP TABLE IF EXISTS `country_i18n`;
CREATE TABLE `country_i18n`
(
`id` INTEGER NOT NULL,
- `locale` VARCHAR(5) DEFAULT 'en_EN' NOT NULL,
+ `locale` VARCHAR(5) DEFAULT 'en_US' NOT NULL,
`title` VARCHAR(255),
`description` LONGTEXT,
`chapo` TEXT,
@@ -1368,7 +1368,7 @@ DROP TABLE IF EXISTS `tax_i18n`;
CREATE TABLE `tax_i18n`
(
`id` INTEGER NOT NULL,
- `locale` VARCHAR(5) DEFAULT 'en_EN' NOT NULL,
+ `locale` VARCHAR(5) DEFAULT 'en_US' NOT NULL,
`title` VARCHAR(255),
`description` TEXT,
PRIMARY KEY (`id`,`locale`),
@@ -1387,7 +1387,7 @@ DROP TABLE IF EXISTS `tax_rule_i18n`;
CREATE TABLE `tax_rule_i18n`
(
`id` INTEGER NOT NULL,
- `locale` VARCHAR(5) DEFAULT 'en_EN' NOT NULL,
+ `locale` VARCHAR(5) DEFAULT 'en_US' NOT NULL,
PRIMARY KEY (`id`,`locale`),
CONSTRAINT `tax_rule_i18n_FK_1`
FOREIGN KEY (`id`)
@@ -1404,7 +1404,7 @@ DROP TABLE IF EXISTS `feature_i18n`;
CREATE TABLE `feature_i18n`
(
`id` INTEGER NOT NULL,
- `locale` VARCHAR(5) DEFAULT 'en_EN' NOT NULL,
+ `locale` VARCHAR(5) DEFAULT 'en_US' NOT NULL,
`title` VARCHAR(255),
`description` LONGTEXT,
`chapo` TEXT,
@@ -1425,7 +1425,7 @@ DROP TABLE IF EXISTS `feature_av_i18n`;
CREATE TABLE `feature_av_i18n`
(
`id` INTEGER NOT NULL,
- `locale` VARCHAR(5) DEFAULT 'en_EN' NOT NULL,
+ `locale` VARCHAR(5) DEFAULT 'en_US' NOT NULL,
`title` VARCHAR(255),
`description` LONGTEXT,
`chapo` TEXT,
@@ -1446,7 +1446,7 @@ DROP TABLE IF EXISTS `attribute_i18n`;
CREATE TABLE `attribute_i18n`
(
`id` INTEGER NOT NULL,
- `locale` VARCHAR(5) DEFAULT 'en_EN' NOT NULL,
+ `locale` VARCHAR(5) DEFAULT 'en_US' NOT NULL,
`title` VARCHAR(255),
`description` LONGTEXT,
`chapo` TEXT,
@@ -1467,7 +1467,7 @@ DROP TABLE IF EXISTS `attribute_av_i18n`;
CREATE TABLE `attribute_av_i18n`
(
`id` INTEGER NOT NULL,
- `locale` VARCHAR(5) DEFAULT 'en_EN' NOT NULL,
+ `locale` VARCHAR(5) DEFAULT 'en_US' NOT NULL,
`title` VARCHAR(255),
`description` LONGTEXT,
`chapo` TEXT,
@@ -1488,7 +1488,7 @@ DROP TABLE IF EXISTS `config_i18n`;
CREATE TABLE `config_i18n`
(
`id` INTEGER NOT NULL,
- `locale` VARCHAR(5) DEFAULT 'en_EN' NOT NULL,
+ `locale` VARCHAR(5) DEFAULT 'en_US' NOT NULL,
`title` VARCHAR(255),
`description` LONGTEXT,
`chapo` TEXT,
@@ -1509,7 +1509,7 @@ DROP TABLE IF EXISTS `customer_title_i18n`;
CREATE TABLE `customer_title_i18n`
(
`id` INTEGER NOT NULL,
- `locale` VARCHAR(5) DEFAULT 'en_EN' NOT NULL,
+ `locale` VARCHAR(5) DEFAULT 'en_US' NOT NULL,
`short` VARCHAR(10),
`long` VARCHAR(45),
PRIMARY KEY (`id`,`locale`),
@@ -1528,7 +1528,7 @@ DROP TABLE IF EXISTS `folder_i18n`;
CREATE TABLE `folder_i18n`
(
`id` INTEGER NOT NULL,
- `locale` VARCHAR(5) DEFAULT 'en_EN' NOT NULL,
+ `locale` VARCHAR(5) DEFAULT 'en_US' NOT NULL,
`title` VARCHAR(255),
`description` LONGTEXT,
`chapo` TEXT,
@@ -1549,7 +1549,7 @@ DROP TABLE IF EXISTS `content_i18n`;
CREATE TABLE `content_i18n`
(
`id` INTEGER NOT NULL,
- `locale` VARCHAR(5) DEFAULT 'en_EN' NOT NULL,
+ `locale` VARCHAR(5) DEFAULT 'en_US' NOT NULL,
`title` VARCHAR(255),
`description` LONGTEXT,
`chapo` TEXT,
@@ -1570,7 +1570,7 @@ DROP TABLE IF EXISTS `image_i18n`;
CREATE TABLE `image_i18n`
(
`id` INTEGER NOT NULL,
- `locale` VARCHAR(5) DEFAULT 'en_EN' NOT NULL,
+ `locale` VARCHAR(5) DEFAULT 'en_US' NOT NULL,
`title` VARCHAR(255),
`description` LONGTEXT,
`chapo` TEXT,
@@ -1591,7 +1591,7 @@ DROP TABLE IF EXISTS `document_i18n`;
CREATE TABLE `document_i18n`
(
`id` INTEGER NOT NULL,
- `locale` VARCHAR(5) DEFAULT 'en_EN' NOT NULL,
+ `locale` VARCHAR(5) DEFAULT 'en_US' NOT NULL,
`title` VARCHAR(255),
`description` LONGTEXT,
`chapo` TEXT,
@@ -1612,7 +1612,7 @@ DROP TABLE IF EXISTS `order_status_i18n`;
CREATE TABLE `order_status_i18n`
(
`id` INTEGER NOT NULL,
- `locale` VARCHAR(5) DEFAULT 'en_EN' NOT NULL,
+ `locale` VARCHAR(5) DEFAULT 'en_US' NOT NULL,
`title` VARCHAR(255),
`description` LONGTEXT,
`chapo` TEXT,
@@ -1633,7 +1633,7 @@ DROP TABLE IF EXISTS `module_i18n`;
CREATE TABLE `module_i18n`
(
`id` INTEGER NOT NULL,
- `locale` VARCHAR(5) DEFAULT 'en_EN' NOT NULL,
+ `locale` VARCHAR(5) DEFAULT 'en_US' NOT NULL,
`title` VARCHAR(255),
`description` LONGTEXT,
`chapo` TEXT,
@@ -1654,7 +1654,7 @@ DROP TABLE IF EXISTS `group_i18n`;
CREATE TABLE `group_i18n`
(
`id` INTEGER NOT NULL,
- `locale` VARCHAR(5) DEFAULT 'en_EN' NOT NULL,
+ `locale` VARCHAR(5) DEFAULT 'en_US' NOT NULL,
`title` VARCHAR(255),
`description` LONGTEXT,
`chapo` TEXT,
@@ -1675,7 +1675,7 @@ DROP TABLE IF EXISTS `resource_i18n`;
CREATE TABLE `resource_i18n`
(
`id` INTEGER NOT NULL,
- `locale` VARCHAR(5) DEFAULT 'en_EN' NOT NULL,
+ `locale` VARCHAR(5) DEFAULT 'en_US' NOT NULL,
`title` VARCHAR(255),
`description` LONGTEXT,
`chapo` TEXT,
@@ -1696,7 +1696,7 @@ DROP TABLE IF EXISTS `message_i18n`;
CREATE TABLE `message_i18n`
(
`id` INTEGER NOT NULL,
- `locale` VARCHAR(5) DEFAULT 'en_EN' NOT NULL,
+ `locale` VARCHAR(5) DEFAULT 'en_US' NOT NULL,
`title` TEXT,
`description` LONGTEXT,
`description_html` LONGTEXT,
diff --git a/local/config/schema.xml b/local/config/schema.xml
index 1ad231287..fa2784ee4 100644
--- a/local/config/schema.xml
+++ b/local/config/schema.xml
@@ -671,7 +671,7 @@