end updating module list
This commit is contained in:
@@ -0,0 +1,18 @@
|
|||||||
|
<?xml version="1.0" encoding="UTF-8"?>
|
||||||
|
<module>
|
||||||
|
<fullnamespace></fullnamespace>
|
||||||
|
<descriptive locale="en_US">
|
||||||
|
<title></title>
|
||||||
|
</descriptive>
|
||||||
|
<descriptive locale="fr_FR">
|
||||||
|
<title></title>
|
||||||
|
</descriptive>
|
||||||
|
<version></version>
|
||||||
|
<author>
|
||||||
|
<name></name>
|
||||||
|
<email></email>
|
||||||
|
</author>
|
||||||
|
<type></type>
|
||||||
|
<thelia></thelia>
|
||||||
|
<stability></stability>
|
||||||
|
</module>
|
||||||
|
|||||||
@@ -187,7 +187,7 @@ abstract class BaseModule extends ContainerAware
|
|||||||
$this->reflected = new \ReflectionObject($this);
|
$this->reflected = new \ReflectionObject($this);
|
||||||
}
|
}
|
||||||
|
|
||||||
return dirname($this->reflected->getFileName());
|
return basename(dirname($this->reflected->getFileName()));
|
||||||
}
|
}
|
||||||
|
|
||||||
abstract public function install();
|
abstract public function install();
|
||||||
|
|||||||
@@ -22,7 +22,15 @@
|
|||||||
/*************************************************************************************/
|
/*************************************************************************************/
|
||||||
|
|
||||||
namespace Thelia\Module;
|
namespace Thelia\Module;
|
||||||
|
|
||||||
|
use Propel\Runtime\Connection\ConnectionInterface;
|
||||||
|
use Propel\Runtime\Exception\PropelException;
|
||||||
|
use Propel\Runtime\Propel;
|
||||||
use Symfony\Component\Finder\Finder;
|
use Symfony\Component\Finder\Finder;
|
||||||
|
use Thelia\Model\Map\ModuleTableMap;
|
||||||
|
use Thelia\Model\Module;
|
||||||
|
use Thelia\Model\ModuleI18n;
|
||||||
|
use Thelia\Model\ModuleQuery;
|
||||||
|
|
||||||
|
|
||||||
/**
|
/**
|
||||||
@@ -33,6 +41,7 @@ use Symfony\Component\Finder\Finder;
|
|||||||
class ModuleManagement
|
class ModuleManagement
|
||||||
{
|
{
|
||||||
protected $baseModuleDir;
|
protected $baseModuleDir;
|
||||||
|
protected $reflected;
|
||||||
|
|
||||||
public function __construct()
|
public function __construct()
|
||||||
{
|
{
|
||||||
@@ -50,8 +59,63 @@ class ModuleManagement
|
|||||||
$descriptorValidator = new ModuleDescriptorValidator();
|
$descriptorValidator = new ModuleDescriptorValidator();
|
||||||
foreach ($finder as $file) {
|
foreach ($finder as $file) {
|
||||||
$content = $descriptorValidator->getDescriptor($file->getRealPath());
|
$content = $descriptorValidator->getDescriptor($file->getRealPath());
|
||||||
var_dump($content); exit;
|
$reflected = new \ReflectionClass((string)$content->fullnamespace);
|
||||||
|
$code = basename(dirname($reflected->getFileName()));
|
||||||
|
if(null === ModuleQuery::create()->filterByCode($code)->findOne()) {
|
||||||
|
$module = new Module();
|
||||||
|
$con = Propel::getWriteConnection(ModuleTableMap::DATABASE_NAME);
|
||||||
|
$con->beginTransaction();
|
||||||
|
try {
|
||||||
|
$module
|
||||||
|
->setCode($code)
|
||||||
|
->setFullNamespace((string)$content->fullnamespace)
|
||||||
|
->setType($this->getModuleType($reflected))
|
||||||
|
->setActivate(0)
|
||||||
|
->save($con);
|
||||||
|
|
||||||
|
$this->saveDescription($module, $content, $con);
|
||||||
|
|
||||||
|
$con->commit();
|
||||||
|
} catch(PropelException $e) {
|
||||||
|
$con->rollBack();
|
||||||
|
throw $e;
|
||||||
|
}
|
||||||
|
|
||||||
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
private function saveDescription(Module $module,\SimpleXMLElement $content, ConnectionInterface $con)
|
||||||
|
{
|
||||||
|
|
||||||
|
foreach($content->descriptive as $description)
|
||||||
|
{
|
||||||
|
$locale = $description->attributes()->locale;
|
||||||
|
|
||||||
|
$moduleI18n = new ModuleI18n();
|
||||||
|
|
||||||
|
$moduleI18n
|
||||||
|
->setLocale($locale)
|
||||||
|
->setModule($module)
|
||||||
|
->setTitle($description->title)
|
||||||
|
->setDescription(isset($description->description)?$description->description:null)
|
||||||
|
->setPostscriptum(isset($description->postscriptum)?$description->postscriptum:null)
|
||||||
|
->setChapo(isset($description->subtitle)?$description->subtitle:null)
|
||||||
|
->save($con);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
private function getModuleType(\ReflectionClass $reflected)
|
||||||
|
{
|
||||||
|
if($reflected->implementsInterface('Thelia\Module\DeliveryModuleInterface')) {
|
||||||
|
return BaseModule::DELIVERY_MODULE_TYPE;
|
||||||
|
} else if($reflected->implementsInterface('Thelia\Module\PaymentModuleInterface')) {
|
||||||
|
return BaseModule::PAYMENT_MODULE_TYPE;
|
||||||
|
} else {
|
||||||
|
return BaseModule::CLASSIC_MODULE_TYPE;
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
}
|
||||||
|
|
||||||
}
|
}
|
||||||
@@ -3,7 +3,7 @@
|
|||||||
<xs:element name="module">
|
<xs:element name="module">
|
||||||
<xs:complexType>
|
<xs:complexType>
|
||||||
<xs:sequence>
|
<xs:sequence>
|
||||||
<xs:element type="xs:string" minOccurs="1" name="full-namespace">
|
<xs:element type="xs:string" minOccurs="1" name="fullnamespace">
|
||||||
<xs:annotation>
|
<xs:annotation>
|
||||||
<xs:documentation>The full namespace for the main class module (for example MyModule\MyModule)</xs:documentation>
|
<xs:documentation>The full namespace for the main class module (for example MyModule\MyModule)</xs:documentation>
|
||||||
</xs:annotation>
|
</xs:annotation>
|
||||||
|
|||||||
@@ -1,9 +1,12 @@
|
|||||||
<?xml version="1.0" encoding="UTF-8"?>
|
<?xml version="1.0" encoding="UTF-8"?>
|
||||||
<module>
|
<module>
|
||||||
<full-namespace>Cheque\\Cheque</full-namespace>
|
<fullnamespace>Cheque\Cheque</fullnamespace>
|
||||||
<descriptive locale="en_US">
|
<descriptive locale="en_US">
|
||||||
<title>Cheque</title>
|
<title>Cheque</title>
|
||||||
</descriptive>
|
</descriptive>
|
||||||
|
<descriptive locale="fr_FR">
|
||||||
|
<title>Cheque</title>
|
||||||
|
</descriptive>
|
||||||
<version>1.1</version>
|
<version>1.1</version>
|
||||||
<author>
|
<author>
|
||||||
<name>Manuel Raynaud</name>
|
<name>Manuel Raynaud</name>
|
||||||
|
|||||||
18
local/modules/Colissimo/Config/module.xml
Executable file → Normal file
18
local/modules/Colissimo/Config/module.xml
Executable file → Normal file
@@ -0,0 +1,18 @@
|
|||||||
|
<?xml version="1.0" encoding="UTF-8"?>
|
||||||
|
<module>
|
||||||
|
<fullnamespace>Colissimo\Colissimo</fullnamespace>
|
||||||
|
<descriptive locale="en_US">
|
||||||
|
<title>colisimo</title>
|
||||||
|
</descriptive>
|
||||||
|
<descriptive locale="fr_FR">
|
||||||
|
<title>colisimo</title>
|
||||||
|
</descriptive>
|
||||||
|
<version>1.0</version>
|
||||||
|
<author>
|
||||||
|
<name>Manuel Raynaud</name>
|
||||||
|
<email>mraynaud@openstudio.fr</email>
|
||||||
|
</author>
|
||||||
|
<type>delivery</type>
|
||||||
|
<thelia>2.0.0</thelia>
|
||||||
|
<stability>alpha</stability>
|
||||||
|
</module>
|
||||||
|
|||||||
18
local/modules/FakeCB/Config/module.xml
Executable file → Normal file
18
local/modules/FakeCB/Config/module.xml
Executable file → Normal file
@@ -0,0 +1,18 @@
|
|||||||
|
<?xml version="1.0" encoding="UTF-8"?>
|
||||||
|
<module>
|
||||||
|
<fullnamespace>FakeCB\FakeCB</fullnamespace>
|
||||||
|
<descriptive locale="en_US">
|
||||||
|
<title>fake cb</title>
|
||||||
|
</descriptive>
|
||||||
|
<descriptive locale="fr_FR">
|
||||||
|
<title>simulation cb</title>
|
||||||
|
</descriptive>
|
||||||
|
<version>1.0</version>
|
||||||
|
<author>
|
||||||
|
<name>Manuel Raynaud</name>
|
||||||
|
<email>mraynaud@openstudio.fr</email>
|
||||||
|
</author>
|
||||||
|
<type>payment</type>
|
||||||
|
<thelia>2.0.0</thelia>
|
||||||
|
<stability>alpha</stability>
|
||||||
|
</module>
|
||||||
|
|||||||
18
local/modules/TheliaDebugBar/Config/module.xml
Executable file → Normal file
18
local/modules/TheliaDebugBar/Config/module.xml
Executable file → Normal file
@@ -0,0 +1,18 @@
|
|||||||
|
<?xml version="1.0" encoding="UTF-8"?>
|
||||||
|
<module>
|
||||||
|
<fullnamespace>TheliaDebugBar\TheliaDebugBar</fullnamespace>
|
||||||
|
<descriptive locale="en_US">
|
||||||
|
<title>debugbar for thelia</title>
|
||||||
|
</descriptive>
|
||||||
|
<descriptive locale="fr_FR">
|
||||||
|
<title>debugbar pour thelia</title>
|
||||||
|
</descriptive>
|
||||||
|
<version>1.0</version>
|
||||||
|
<author>
|
||||||
|
<name>Manuel Raynaud</name>
|
||||||
|
<email>mraynaud@openstudio.fr</email>
|
||||||
|
</author>
|
||||||
|
<type>classic</type>
|
||||||
|
<thelia>2.0.0</thelia>
|
||||||
|
<stability>alpha</stability>
|
||||||
|
</module>
|
||||||
|
|||||||
Reference in New Issue
Block a user