Revert "Revert "Merge branch 'cleanmaster' into modules""

This reverts commit b3ac365b45.

Conflicts:
	Readme.md
	core/lib/Thelia/Controller/Admin/AbstractCrudController.php
	core/lib/Thelia/Core/Template/Assets/AssetManagerInterface.php
	core/lib/Thelia/Core/Template/Assets/AsseticAssetManager.php
	core/lib/Thelia/Core/Template/Smarty/SmartyParser.php
	core/lib/Thelia/Core/Template/TemplateDefinition.php
	core/lib/Thelia/Model/Base/Coupon.php
	core/lib/Thelia/Model/Base/CouponQuery.php
	core/lib/Thelia/Model/Base/CouponVersion.php
	core/lib/Thelia/Model/Base/CouponVersionQuery.php
	core/lib/Thelia/Model/Base/OrderCouponQuery.php
This commit is contained in:
Etienne Roudeix
2014-01-06 11:25:25 +01:00
parent d4582f467f
commit 99038e688a
327 changed files with 3728 additions and 3732 deletions

View File

@@ -63,6 +63,7 @@ Thelia documentation is available at http://doc.thelia.net
The documentation is also in beta version and some part can be obsolete cause to some refactor. The documentation is also in beta version and some part can be obsolete cause to some refactor.
Contribute Contribute
---------- ----------

View File

@@ -30,7 +30,6 @@ use Thelia\Core\Event\UpdateSeoEvent;
use Thelia\Exception\UrlRewritingException; use Thelia\Exception\UrlRewritingException;
use Thelia\Form\Exception\FormValidationException; use Thelia\Form\Exception\FormValidationException;
use \Thelia\Model\Tools\UrlRewritingTrait;
class BaseAction class BaseAction
{ {
@@ -82,8 +81,8 @@ class BaseAction
/** /**
* Changes SEO Fields for an object. * Changes SEO Fields for an object.
* *
* @param ModelCriteria $query * @param ModelCriteria $query
* @param UpdateSeoEvent $event * @param UpdateSeoEvent $event
* *
* @return mixed * @return mixed
*/ */
@@ -105,7 +104,7 @@ class BaseAction
// Update the rewritten URL, if required // Update the rewritten URL, if required
try { try {
$object->setRewrittenUrl($event->getLocale(), $event->getUrl()); $object->setRewrittenUrl($event->getLocale(), $event->getUrl());
} catch(UrlRewritingException $e) { } catch (UrlRewritingException $e) {
throw new FormValidationException($e->getMessage(), $e->getCode()); throw new FormValidationException($e->getMessage(), $e->getCode());
} }

View File

@@ -28,6 +28,7 @@ use Thelia\Condition\ConditionFactory;
use Thelia\Condition\Implementation\ConditionInterface; use Thelia\Condition\Implementation\ConditionInterface;
use Thelia\Core\Event\Coupon\CouponConsumeEvent; use Thelia\Core\Event\Coupon\CouponConsumeEvent;
use Thelia\Core\Event\Coupon\CouponCreateOrUpdateEvent; use Thelia\Core\Event\Coupon\CouponCreateOrUpdateEvent;
use Thelia\Core\Event\Order\OrderEvent;
use Thelia\Core\Event\TheliaEvents; use Thelia\Core\Event\TheliaEvents;
use Thelia\Core\HttpFoundation\Request; use Thelia\Core\HttpFoundation\Request;
use Thelia\Coupon\CouponFactory; use Thelia\Coupon\CouponFactory;
@@ -36,6 +37,7 @@ use Thelia\Condition\ConditionCollection;
use Thelia\Coupon\Type\CouponInterface; use Thelia\Coupon\Type\CouponInterface;
use Thelia\Model\Coupon as CouponModel; use Thelia\Model\Coupon as CouponModel;
use Thelia\Model\CouponQuery; use Thelia\Model\CouponQuery;
use Thelia\Model\OrderCoupon;
/** /**
* Process Coupon Events * Process Coupon Events
@@ -118,23 +120,20 @@ class Coupon extends BaseAction implements EventSubscriberInterface
$request->getSession()->setConsumedCoupons($consumedCoupons); $request->getSession()->setConsumedCoupons($consumedCoupons);
$totalDiscount = $couponManager->getDiscount(); $totalDiscount = $couponManager->getDiscount();
// @todo insert false product in cart with the name of the coupon and the discount as negative price
// Decrement coupon quantity
// @todo move this part in after order event
$couponQuery = CouponQuery::create();
$couponModel = $couponQuery->findOneByCode($coupon->getCode());
$couponManager->decrementQuantity($couponModel);
$request $request
->getSession() ->getSession()
->getCart() ->getCart()
->setDiscount($totalDiscount) ->setDiscount($totalDiscount)
->save(); ->save();
$request
->getSession()
->getOrder()
->setDiscount($totalDiscount)
->save();
} }
} }
$event->setIsValid($isValid); $event->setIsValid($isValid);
$event->setDiscount($totalDiscount); $event->setDiscount($totalDiscount);
} }
@@ -203,6 +202,68 @@ class Coupon extends BaseAction implements EventSubscriberInterface
$event->setCouponModel($coupon); $event->setCouponModel($coupon);
} }
/**
* @param \Thelia\Core\Event\Order\OrderEvent $event
*/
public function testFreePostage(OrderEvent $event)
{
/** @var CouponManager $couponManager */
$couponManager = $this->container->get('thelia.coupon.manager');
if($couponManager->isCouponRemovingPostage()) {
$order = $event->getOrder();
$order->setPostage(0);
$event->setOrder($order);
$event->stopPropagation();
}
}
/**
* @param \Thelia\Core\Event\Order\OrderEvent $event
*/
public function afterOrder(OrderEvent $event)
{
$request = $this->container->get('request');
/** @var CouponManager $couponManager */
$couponManager = $this->container->get('thelia.coupon.manager');
$consumedCoupons = $request->getSession()->getConsumedCoupons();
if (is_array($consumedCoupons)) {
foreach($consumedCoupons as $couponCode) {
$couponQuery = CouponQuery::create();
$couponModel = $couponQuery->findOneByCode($couponCode);
$couponModel->setLocale($request->getSession()->getLang()->getLocale());
/* decrease coupon quantity */
$couponManager->decrementQuantity($couponModel);
/* memorize coupon */
$orderCoupon = new OrderCoupon();
$orderCoupon->setOrder($event->getOrder())
->setCode($couponModel->getCode())
->setType($couponModel->getType())
->setAmount($couponModel->getAmount())
->setTitle($couponModel->getTitle())
->setShortDescription($couponModel->getShortDescription())
->setDescription($couponModel->getDescription())
->setExpirationDate($couponModel->getExpirationDate())
->setIsCumulative($couponModel->getIsCumulative())
->setIsRemovingPostage($couponModel->getIsRemovingPostage())
->setIsAvailableOnSpecialOffers($couponModel->getIsAvailableOnSpecialOffers())
->setSerializedConditions($couponModel->getSerializedConditions())
;
$orderCoupon->save();
}
}
}
/** /**
* Returns an array of event names this subscriber listens to. * Returns an array of event names this subscriber listens to.
* *
@@ -229,7 +290,9 @@ class Coupon extends BaseAction implements EventSubscriberInterface
TheliaEvents::COUPON_CREATE => array("create", 128), TheliaEvents::COUPON_CREATE => array("create", 128),
TheliaEvents::COUPON_UPDATE => array("update", 128), TheliaEvents::COUPON_UPDATE => array("update", 128),
TheliaEvents::COUPON_CONSUME => array("consume", 128), TheliaEvents::COUPON_CONSUME => array("consume", 128),
TheliaEvents::COUPON_CONDITION_UPDATE => array("updateCondition", 128) TheliaEvents::COUPON_CONDITION_UPDATE => array("updateCondition", 128),
TheliaEvents::ORDER_SET_POSTAGE => array("testFreePostage", 256),
TheliaEvents::ORDER_BEFORE_PAYMENT => array("afterOrder", 128),
); );
} }
} }

View File

@@ -35,7 +35,7 @@ class MailingSystem extends BaseAction implements EventSubscriberInterface
*/ */
public function update(MailingSystemEvent $event) public function update(MailingSystemEvent $event)
{ {
if($event->getEnabled()) { if ($event->getEnabled()) {
ConfigQuery::enableSmtp(); ConfigQuery::enableSmtp();
} else { } else {
ConfigQuery::disableSmtp(); ConfigQuery::disableSmtp();

View File

@@ -30,6 +30,7 @@ use Thelia\Core\Event\Cart\CartEvent;
use Thelia\Core\Event\Order\OrderAddressEvent; use Thelia\Core\Event\Order\OrderAddressEvent;
use Thelia\Core\Event\Order\OrderEvent; use Thelia\Core\Event\Order\OrderEvent;
use Thelia\Core\Event\TheliaEvents; use Thelia\Core\Event\TheliaEvents;
use Thelia\Coupon\CouponManager;
use Thelia\Exception\TheliaProcessException; use Thelia\Exception\TheliaProcessException;
use Thelia\Model\AddressQuery; use Thelia\Model\AddressQuery;
use Thelia\Model\ConfigQuery; use Thelia\Model\ConfigQuery;
@@ -73,6 +74,17 @@ class Order extends BaseAction implements EventSubscriberInterface
$order = $event->getOrder(); $order = $event->getOrder();
$order->setDeliveryModuleId($event->getDeliveryModule()); $order->setDeliveryModuleId($event->getDeliveryModule());
$event->setOrder($order);
}
/**
* @param \Thelia\Core\Event\Order\OrderEvent $event
*/
public function setPostage(OrderEvent $event)
{
$order = $event->getOrder();
$order->setPostage($event->getPostage()); $order->setPostage($event->getPostage());
$event->setOrder($order); $event->setOrder($order);
@@ -178,6 +190,11 @@ class Order extends BaseAction implements EventSubscriberInterface
OrderStatusQuery::create()->findOneByCode(OrderStatus::CODE_NOT_PAID)->getId() OrderStatusQuery::create()->findOneByCode(OrderStatus::CODE_NOT_PAID)->getId()
); );
/* memorize discount */
$placedOrder->setDiscount(
$cart->getDiscount()
);
$placedOrder->save($con); $placedOrder->save($con);
/* fulfill order_products and decrease stock */ /* fulfill order_products and decrease stock */
@@ -262,8 +279,6 @@ class Order extends BaseAction implements EventSubscriberInterface
} }
} }
/* discount @todo */
$con->commit(); $con->commit();
$this->getDispatcher()->dispatch(TheliaEvents::ORDER_BEFORE_PAYMENT, new OrderEvent($placedOrder)); $this->getDispatcher()->dispatch(TheliaEvents::ORDER_BEFORE_PAYMENT, new OrderEvent($placedOrder));
@@ -273,7 +288,7 @@ class Order extends BaseAction implements EventSubscriberInterface
$sessionOrder = new \Thelia\Model\Order(); $sessionOrder = new \Thelia\Model\Order();
$event->setOrder($sessionOrder); $event->setOrder($sessionOrder);
$event->setPlacedOrder($placedOrder); $event->setPlacedOrder($placedOrder);
$this->getSession()->setOrder($sessionOrder); $this->getSession()->setOrder($placedOrder);
/* empty cart */ /* empty cart */
$this->getDispatcher()->dispatch(TheliaEvents::CART_CLEAR, new CartEvent($this->getCart($this->getRequest()))); $this->getDispatcher()->dispatch(TheliaEvents::CART_CLEAR, new CartEvent($this->getCart($this->getRequest())));
@@ -290,7 +305,7 @@ class Order extends BaseAction implements EventSubscriberInterface
{ {
$contact_email = ConfigQuery::read('contact_email'); $contact_email = ConfigQuery::read('contact_email');
if($contact_email) { if ($contact_email) {
$message = MessageQuery::create() $message = MessageQuery::create()
->filterByName('order_confirmation') ->filterByName('order_confirmation')
@@ -412,6 +427,7 @@ class Order extends BaseAction implements EventSubscriberInterface
return array( return array(
TheliaEvents::ORDER_SET_DELIVERY_ADDRESS => array("setDeliveryAddress", 128), TheliaEvents::ORDER_SET_DELIVERY_ADDRESS => array("setDeliveryAddress", 128),
TheliaEvents::ORDER_SET_DELIVERY_MODULE => array("setDeliveryModule", 128), TheliaEvents::ORDER_SET_DELIVERY_MODULE => array("setDeliveryModule", 128),
TheliaEvents::ORDER_SET_POSTAGE => array("setPostage", 128),
TheliaEvents::ORDER_SET_INVOICE_ADDRESS => array("setInvoiceAddress", 128), TheliaEvents::ORDER_SET_INVOICE_ADDRESS => array("setInvoiceAddress", 128),
TheliaEvents::ORDER_SET_PAYMENT_MODULE => array("setPaymentModule", 128), TheliaEvents::ORDER_SET_PAYMENT_MODULE => array("setPaymentModule", 128),
TheliaEvents::ORDER_PAY => array("create", 128), TheliaEvents::ORDER_PAY => array("create", 128),

View File

@@ -131,7 +131,6 @@ class Product extends BaseAction implements EventSubscriberInterface
return $this->genericUpdateSeo(ProductQuery::create(), $event); return $this->genericUpdateSeo(ProductQuery::create(), $event);
} }
/** /**
* Delete a product entry * Delete a product entry
* *

View File

@@ -209,8 +209,7 @@ class ProductSaleElement extends BaseAction implements EventSubscriberInterface
if ($product->countSaleElements() <= 0) { if ($product->countSaleElements() <= 0) {
// If we just deleted the last PSE, create a default one // If we just deleted the last PSE, create a default one
$product->createProductSaleElement($con, 0, 0, 0, $event->getCurrencyId(), true); $product->createProductSaleElement($con, 0, 0, 0, $event->getCurrencyId(), true);
} } elseif ($pse->getIsDefault()) {
elseif ($pse->getIsDefault()) {
// If we deleted the default PSE, make the last created one the default // If we deleted the default PSE, make the last created one the default
$pse = ProductSaleElementsQuery::create() $pse = ProductSaleElementsQuery::create()
@@ -238,8 +237,8 @@ class ProductSaleElement extends BaseAction implements EventSubscriberInterface
* *
* @param ProductCombinationGenerationEvent $event * @param ProductCombinationGenerationEvent $event
*/ */
public function generateCombinations(ProductCombinationGenerationEvent $event) { public function generateCombinations(ProductCombinationGenerationEvent $event)
{
$con = Propel::getWriteConnection(ProductSaleElementsTableMap::DATABASE_NAME); $con = Propel::getWriteConnection(ProductSaleElementsTableMap::DATABASE_NAME);
$con->beginTransaction(); $con->beginTransaction();
@@ -252,7 +251,7 @@ class ProductSaleElement extends BaseAction implements EventSubscriberInterface
$isDefault = true; $isDefault = true;
// Create all combinations // Create all combinations
foreach($event->getCombinations() as $combinationAttributesAvIds) { foreach ($event->getCombinations() as $combinationAttributesAvIds) {
// Create the PSE // Create the PSE
$saleElement = $event->getProduct()->createProductSaleElement( $saleElement = $event->getProduct()->createProductSaleElement(
@@ -276,8 +275,7 @@ class ProductSaleElement extends BaseAction implements EventSubscriberInterface
// Store all the stuff ! // Store all the stuff !
$con->commit(); $con->commit();
} } catch (\Exception $ex) {
catch (\Exception $ex) {
$con->rollback(); $con->rollback();
@@ -288,9 +286,9 @@ class ProductSaleElement extends BaseAction implements EventSubscriberInterface
/** /**
* Create a combination for a given product sale element * Create a combination for a given product sale element
* *
* @param ConnectionInterface $con the Propel connection * @param ConnectionInterface $con the Propel connection
* @param ProductSaleElement $salesElement the product sale element * @param ProductSaleElement $salesElement the product sale element
* @param unknown $combinationAttributes an array oif attributes av IDs * @param unknown $combinationAttributes an array oif attributes av IDs
*/ */
protected function createCombination(ConnectionInterface $con, ProductSaleElements $salesElement, $combinationAttributes) protected function createCombination(ConnectionInterface $con, ProductSaleElements $salesElement, $combinationAttributes)
{ {

View File

@@ -32,7 +32,6 @@ use Thelia\Core\Event\TheliaEvents;
use Thelia\Model\AdminQuery; use Thelia\Model\AdminQuery;
use Thelia\Tools\Password; use Thelia\Tools\Password;
/** /**
* command line for updating admin password * command line for updating admin password
* *
@@ -72,18 +71,15 @@ class AdminUpdatePasswordCommand extends ContainerAwareCommand
{ {
$login = $input->getArgument('login'); $login = $input->getArgument('login');
if (null === $admin = AdminQuery::create()->filterByLogin($login)->findOne()) { if (null === $admin = AdminQuery::create()->filterByLogin($login)->findOne()) {
throw new \RuntimeException(sprintf('Admin with login %s does not exists', $login)); throw new \RuntimeException(sprintf('Admin with login %s does not exists', $login));
} }
$password = $input->getOption('password') ?: Password::generateRandom(); $password = $input->getOption('password') ?: Password::generateRandom();
$event = new AdministratorUpdatePasswordEvent($admin); $event = new AdministratorUpdatePasswordEvent($admin);
$event->setPassword($password); $event->setPassword($password);
$this-> $this->
getContainer() getContainer()
->get('event_dispatcher') ->get('event_dispatcher')
@@ -99,4 +95,3 @@ class AdminUpdatePasswordCommand extends ContainerAwareCommand
} }
} }

View File

@@ -1,14 +1,14 @@
<?php <?php
return array( return array(
'Delivery module' => 'Delivery module', 'Delivery module' => 'Delivery module',
'Quantity' => 'Quantity', 'Quantity' => 'Quantity',
'Product' => 'Product', 'Product' => 'Product',
'Unit. price' => 'Unit. price', 'Unit. price' => 'Unit. price',
'Tax' => 'Tax', 'Tax' => 'Tax',
'Unit taxed price' => 'Unit taxed price', 'Unit taxed price' => 'Unit taxed price',
'Taxed total' => 'Taxed total', 'Taxed total' => 'Taxed total',
'Payment module' => 'Payment module', 'Payment module' => 'Payment module',
'Postage' => 'Postage', 'Postage' => 'Postage',
'Total' => 'Total', 'Total' => 'Total',
); );

View File

@@ -1,36 +1,36 @@
<?php <?php
return array( return array(
'Combination builder' => 'Combination builder', 'Combination builder' => 'Combination builder',
'Title' => 'Title', 'Title' => 'Title',
'City' => 'City', 'City' => 'City',
'Zip code' => 'Zip code', 'Zip code' => 'Zip code',
'Country' => 'Country', 'Country' => 'Country',
'Phone' => 'Phone', 'Phone' => 'Phone',
'Login' => 'Login', 'Login' => 'Login',
'Password' => 'Password', 'Password' => 'Password',
'Profile' => 'Profile', 'Profile' => 'Profile',
'Postage' => 'Postage', 'Postage' => 'Postage',
'Add to all product templates' => 'Add to all product templates', 'Add to all product templates' => 'Add to all product templates',
'Quantity' => 'Quantity', 'Quantity' => 'Quantity',
'Name' => 'Name', 'Name' => 'Name',
'Value' => 'Value', 'Value' => 'Value',
'Subject' => 'Subject', 'Subject' => 'Subject',
'Company' => 'Company', 'Company' => 'Company',
'Description' => 'Description', 'Description' => 'Description',
'Language name' => 'Language name', 'Language name' => 'Language name',
'ISO 639 Code' => 'ISO 639 Code', 'ISO 639 Code' => 'ISO 639 Code',
'If a translation is missing or incomplete :' => 'If a translation is missing or incomplete :', 'If a translation is missing or incomplete :' => 'If a translation is missing or incomplete :',
'Host' => 'Host', 'Host' => 'Host',
'Port' => 'Port', 'Port' => 'Port',
'Encryption' => 'Encryption', 'Encryption' => 'Encryption',
'Username' => 'Username', 'Username' => 'Username',
'Timeout' => 'Timeout', 'Timeout' => 'Timeout',
'Source IP' => 'Source IP', 'Source IP' => 'Source IP',
'Email address' => 'Email address', 'Email address' => 'Email address',
'Firstname' => 'Firstname', 'Firstname' => 'Firstname',
'Lastname' => 'Lastname', 'Lastname' => 'Lastname',
'Additional address' => 'Additional address', 'Additional address' => 'Additional address',
'Reference' => 'Reference', 'Reference' => 'Reference',
'EAN Code' => 'EAN Code', 'EAN Code' => 'EAN Code',
); );

View File

@@ -28,6 +28,7 @@
<loop class="Thelia\Core\Template\Loop\Order" name="order"/> <loop class="Thelia\Core\Template\Loop\Order" name="order"/>
<loop class="Thelia\Core\Template\Loop\OrderAddress" name="order_address"/> <loop class="Thelia\Core\Template\Loop\OrderAddress" name="order_address"/>
<loop class="Thelia\Core\Template\Loop\OrderProduct" name="order_product"/> <loop class="Thelia\Core\Template\Loop\OrderProduct" name="order_product"/>
<loop class="Thelia\Core\Template\Loop\OrderCoupon" name="order_coupon"/>
<loop class="Thelia\Core\Template\Loop\OrderProductAttributeCombination" name="order_product_attribute_combination"/> <loop class="Thelia\Core\Template\Loop\OrderProductAttributeCombination" name="order_product_attribute_combination"/>
<loop class="Thelia\Core\Template\Loop\OrderStatus" name="order-status"/> <loop class="Thelia\Core\Template\Loop\OrderStatus" name="order-status"/>
<loop class="Thelia\Core\Template\Loop\CategoryPath" name="category-path"/> <loop class="Thelia\Core\Template\Loop\CategoryPath" name="category-path"/>

View File

@@ -443,7 +443,6 @@ abstract class AbstractCrudController extends BaseAdminController
$ex $ex
); );
return $this->renderEditionTemplate(); return $this->renderEditionTemplate();
} }

View File

@@ -53,7 +53,7 @@ abstract class AbstractSeoCrudController extends AbstractCrudController
* *
* @param string $visibilityToggleEventIdentifier the dispatched visibility toggle TheliaEvent identifier, or null if the object has no visible options. Example: TheliaEvents::MESSAGE_TOGGLE_VISIBILITY * @param string $visibilityToggleEventIdentifier the dispatched visibility toggle TheliaEvent identifier, or null if the object has no visible options. Example: TheliaEvents::MESSAGE_TOGGLE_VISIBILITY
* @param string $changePositionEventIdentifier the dispatched position change TheliaEvent identifier, or null if the object has no position. Example: TheliaEvents::MESSAGE_UPDATE_POSITION * @param string $changePositionEventIdentifier the dispatched position change TheliaEvent identifier, or null if the object has no position. Example: TheliaEvents::MESSAGE_UPDATE_POSITION
* @param string $updateSeoEventIdentifier the dispatched update SEO change TheliaEvent identifier, or null if the object has no SEO. Example: TheliaEvents::MESSAGE_UPDATE_SEO * @param string $updateSeoEventIdentifier the dispatched update SEO change TheliaEvent identifier, or null if the object has no SEO. Example: TheliaEvents::MESSAGE_UPDATE_SEO
*/ */
public function __construct( public function __construct(
$objectName, $objectName,
@@ -134,7 +134,8 @@ abstract class AbstractSeoCrudController extends AbstractCrudController
* *
* @param unknown $object * @param unknown $object
*/ */
protected function hydrateSeoForm($object){ protected function hydrateSeoForm($object)
{
// The "SEO" tab form // The "SEO" tab form
$locale = $object->getLocale(); $locale = $object->getLocale();
$data = array( $data = array(
@@ -227,8 +228,6 @@ abstract class AbstractSeoCrudController extends AbstractCrudController
$ex $ex
); );
// At this point, the form has errors, and should be redisplayed. // At this point, the form has errors, and should be redisplayed.
return $this->renderEditionTemplate(); return $this->renderEditionTemplate();
} }

View File

@@ -98,7 +98,7 @@ class AddressController extends AbstractCrudController
/** /**
* Fills in the form data array * Fills in the form data array
* *
* @param unknown $object * @param unknown $object
* @return multitype:NULL * @return multitype:NULL
*/ */
protected function createFormDataArray($object) protected function createFormDataArray($object)
@@ -309,7 +309,8 @@ class AddressController extends AbstractCrudController
$this->redirectToEditionTemplate(); $this->redirectToEditionTemplate();
} }
protected function getCustomerId() { protected function getCustomerId()
{
if (null !== $address = $this->getExistingObject()) if (null !== $address = $this->getExistingObject())
return $address->getCustomerId(); return $address->getCustomerId();
else else

View File

@@ -34,7 +34,6 @@ use Thelia\Form\AttributeModificationForm;
use Thelia\Form\AttributeCreationForm; use Thelia\Form\AttributeCreationForm;
use Thelia\Core\Event\UpdatePositionEvent; use Thelia\Core\Event\UpdatePositionEvent;
use Thelia\Model\AttributeAv; use Thelia\Model\AttributeAv;
use Thelia\Model\AttributeAvQuery;
use Thelia\Core\Event\Attribute\AttributeAvUpdateEvent; use Thelia\Core\Event\Attribute\AttributeAvUpdateEvent;
use Thelia\Core\Event\Attribute\AttributeEvent; use Thelia\Core\Event\Attribute\AttributeEvent;

View File

@@ -309,6 +309,7 @@ class BaseAdminController extends BaseController
{ {
// Check if the functionality is activated // Check if the functionality is activated
if(!ConfigQuery::read("one_domain_foreach_lang", false)) if(!ConfigQuery::read("one_domain_foreach_lang", false))
return; return;
// If we don't have a locale value, use the locale value in the session // If we don't have a locale value, use the locale value in the session
@@ -390,8 +391,8 @@ class BaseAdminController extends BaseController
* Render the given template, and returns the result as an Http Response. * Render the given template, and returns the result as an Http Response.
* *
* @param $templateName the complete template name, with extension * @param $templateName the complete template name, with extension
* @param array $args the template arguments * @param array $args the template arguments
* @param int $status http code status * @param int $status http code status
* @return \Thelia\Core\HttpFoundation\Response * @return \Thelia\Core\HttpFoundation\Response
*/ */
protected function render($templateName, $args = array(), $status = 200) protected function render($templateName, $args = array(), $status = 200)

View File

@@ -201,15 +201,12 @@ class CategoryController extends AbstractSeoCrudController
protected function redirectToListTemplateWithId($category_id) protected function redirectToListTemplateWithId($category_id)
{ {
if($category_id > 0) if ($category_id > 0) {
{
$this->redirectToRoute( $this->redirectToRoute(
'admin.categories.default', 'admin.categories.default',
array('category_id' => $category_id) array('category_id' => $category_id)
); );
} } else {
else
{
$this->redirectToRoute( $this->redirectToRoute(
'admin.catalog' 'admin.catalog'
); );

View File

@@ -23,11 +23,9 @@
namespace Thelia\Controller\Admin; namespace Thelia\Controller\Admin;
use Thelia\Core\Security\Resource\AdminResources; use Thelia\Core\Security\Resource\AdminResources;
use Thelia\Core\Security\AccessManager; use Thelia\Core\Security\AccessManager;
use Thelia\Form\ConfigStoreForm; use Thelia\Form\ConfigStoreForm;
use Thelia\Log\Tlog;
use Thelia\Model\ConfigQuery; use Thelia\Model\ConfigQuery;
/** /**
* Class ConfigStoreController * Class ConfigStoreController
@@ -80,7 +78,7 @@ class ConfigStoreController extends BaseAdminController
$data = $form->getData(); $data = $form->getData();
// Update store // Update store
foreach($data as $name => $value) { foreach ($data as $name => $value) {
if(! in_array($name , array('success_url', 'error_message'))) if(! in_array($name , array('success_url', 'error_message')))
ConfigQuery::write($name, $value, false); ConfigQuery::write($name, $value, false);
} }

View File

@@ -23,19 +23,14 @@
namespace Thelia\Controller\Admin; namespace Thelia\Controller\Admin;
use Propel\Runtime\Exception\PropelException;
use Thelia\Core\Security\Resource\AdminResources; use Thelia\Core\Security\Resource\AdminResources;
use Thelia\Core\Event\Customer\CustomerCreateOrUpdateEvent; use Thelia\Core\Event\Customer\CustomerCreateOrUpdateEvent;
use Thelia\Core\Event\Customer\CustomerEvent; use Thelia\Core\Event\Customer\CustomerEvent;
use Thelia\Core\Event\TheliaEvents; use Thelia\Core\Event\TheliaEvents;
use Thelia\Core\Security\AccessManager;
use Thelia\Form\CustomerCreateForm; use Thelia\Form\CustomerCreateForm;
use Thelia\Form\CustomerUpdateForm; use Thelia\Form\CustomerUpdateForm;
use Thelia\Form\Exception\FormValidationException;
use Thelia\Model\CustomerQuery; use Thelia\Model\CustomerQuery;
use Thelia\Core\Translation\Translator;
use Thelia\Tools\Password; use Thelia\Tools\Password;
use Thelia\Model\AddressQuery;
use Thelia\Model\Address; use Thelia\Model\Address;
/** /**

View File

@@ -34,7 +34,6 @@ use Thelia\Form\FeatureModificationForm;
use Thelia\Form\FeatureCreationForm; use Thelia\Form\FeatureCreationForm;
use Thelia\Core\Event\UpdatePositionEvent; use Thelia\Core\Event\UpdatePositionEvent;
use Thelia\Model\FeatureAv; use Thelia\Model\FeatureAv;
use Thelia\Model\FeatureAvQuery;
use Thelia\Core\Event\Feature\FeatureAvUpdateEvent; use Thelia\Core\Event\Feature\FeatureAvUpdateEvent;
use Thelia\Core\Event\Feature\FeatureEvent; use Thelia\Core\Event\Feature\FeatureEvent;

View File

@@ -584,7 +584,7 @@ class FileController extends BaseAdminController
); );
} }
if(null === $message) { if (null === $message) {
$message = $this->getTranslator() $message = $this->getTranslator()
->trans( ->trans(
'Images deleted successfully', 'Images deleted successfully',
@@ -638,7 +638,7 @@ class FileController extends BaseAdminController
) . $e->getMessage(); ) . $e->getMessage();
} }
if(null === $message) { if (null === $message) {
$message = $this->getTranslator() $message = $this->getTranslator()
->trans( ->trans(
'Image position updated', 'Image position updated',
@@ -692,7 +692,7 @@ class FileController extends BaseAdminController
) . $e->getMessage(); ) . $e->getMessage();
} }
if(null === $message) { if (null === $message) {
$message = $this->getTranslator() $message = $this->getTranslator()
->trans( ->trans(
'Document position updated', 'Document position updated',

View File

@@ -88,7 +88,6 @@ class HomeController extends BaseAdminController
array(5) array(5)
); );
$data->series = array( $data->series = array(
$saleSeries, $saleSeries,
$newCustomerSeries, $newCustomerSeries,

View File

@@ -31,7 +31,6 @@ use Thelia\Model\MessageQuery;
use Thelia\Form\MessageModificationForm; use Thelia\Form\MessageModificationForm;
use Thelia\Form\MessageCreationForm; use Thelia\Form\MessageCreationForm;
use Symfony\Component\Finder\Finder; use Symfony\Component\Finder\Finder;
use Thelia\Model\ConfigQuery;
use Thelia\Core\Template\TemplateHelper; use Thelia\Core\Template\TemplateHelper;
/** /**
@@ -164,8 +163,8 @@ class MessageController extends AbstractCrudController
return $this->render('messages'); return $this->render('messages');
} }
protected function listDirectoryContent($requiredExtension) { protected function listDirectoryContent($requiredExtension)
{
$list = array(); $list = array();
$dir = TemplateHelper::getInstance()->getActiveMailTemplate()->getAbsolutePath(); $dir = TemplateHelper::getInstance()->getActiveMailTemplate()->getAbsolutePath();

View File

@@ -149,7 +149,6 @@ class ModuleController extends AbstractCrudController
->findOneById($this->getRequest()->get('module_id')); ->findOneById($this->getRequest()->get('module_id'));
} }
protected function getObjectLabel($object) protected function getObjectLabel($object)
{ {
return $object->getTitle(); return $object->getTitle();
@@ -218,12 +217,11 @@ class ModuleController extends AbstractCrudController
{ {
$module = ModuleQuery::create()->findOneByCode($module_code); $module = ModuleQuery::create()->findOneByCode($module_code);
if(null === $module) { if (null === $module) {
throw new \InvalidArgumentException(sprintf("Module `%s` does not exists", $module_code)); throw new \InvalidArgumentException(sprintf("Module `%s` does not exists", $module_code));
} }
if (null !== $response = $this->checkAuth(array(), $module_code, AccessManager::VIEW)) return $response; if (null !== $response = $this->checkAuth(array(), $module_code, AccessManager::VIEW)) return $response;
return $this->render( return $this->render(
"module-configure", "module-configure",
array( array(

View File

@@ -27,7 +27,6 @@ use Thelia\Core\HttpFoundation\Response;
use Thelia\Core\Security\Resource\AdminResources; use Thelia\Core\Security\Resource\AdminResources;
use Thelia\Core\Event\Order\OrderAddressEvent; use Thelia\Core\Event\Order\OrderAddressEvent;
use Thelia\Core\Event\Order\OrderEvent; use Thelia\Core\Event\Order\OrderEvent;
use Thelia\Core\Event\PdfEvent;
use Thelia\Core\Event\TheliaEvents; use Thelia\Core\Event\TheliaEvents;
use Thelia\Core\Security\AccessManager; use Thelia\Core\Security\AccessManager;
use Thelia\Form\OrderUpdateAddress; use Thelia\Form\OrderUpdateAddress;
@@ -36,7 +35,6 @@ use Thelia\Model\Base\OrderAddressQuery;
use Thelia\Model\OrderQuery; use Thelia\Model\OrderQuery;
use Thelia\Model\OrderStatusQuery; use Thelia\Model\OrderStatusQuery;
use Thelia\Tools\URL; use Thelia\Tools\URL;
use Thelia\Core\Template\TemplateHelper;
/** /**
* Class OrderController * Class OrderController
@@ -203,20 +201,18 @@ class OrderController extends BaseAdminController
public function generateInvoicePdf($order_id) public function generateInvoicePdf($order_id)
{ {
if (null !== $response = $this->checkAuth(AdminResources::ORDER, array(), AccessManager::UPDATE)) return $response; if (null !== $response = $this->checkAuth(AdminResources::ORDER, array(), AccessManager::UPDATE)) return $response;
return $this->generateBackOfficeOrderPdf($order_id, ConfigQuery::read('pdf_invoice_file', 'invoice')); return $this->generateBackOfficeOrderPdf($order_id, ConfigQuery::read('pdf_invoice_file', 'invoice'));
} }
public function generateDeliveryPdf($order_id) public function generateDeliveryPdf($order_id)
{ {
if (null !== $response = $this->checkAuth(AdminResources::ORDER, array(), AccessManager::UPDATE)) return $response; if (null !== $response = $this->checkAuth(AdminResources::ORDER, array(), AccessManager::UPDATE)) return $response;
return $this->generateBackOfficeOrderPdf($order_id, ConfigQuery::read('pdf_delivery_file', 'delivery')); return $this->generateBackOfficeOrderPdf($order_id, ConfigQuery::read('pdf_delivery_file', 'delivery'));
} }
private function generateBackOfficeOrderPdf($order_id, $fileName) private function generateBackOfficeOrderPdf($order_id, $fileName)
{ {
if(null === $response = $this->generateOrderPdf($order_id, $fileName)){ if (null === $response = $this->generateOrderPdf($order_id, $fileName)) {
$this->redirect(URL::getInstance()->absoluteUrl($this->getRoute("admin.order.update.view", array( $this->redirect(URL::getInstance()->absoluteUrl($this->getRoute("admin.order.update.view", array(
'order_id' => $order_id 'order_id' => $order_id
)))); ))));
@@ -225,5 +221,4 @@ class OrderController extends BaseAdminController
return $response; return $response;
} }
} }

View File

@@ -72,7 +72,6 @@ use Thelia\Form\ProductCombinationGenerationForm;
use Thelia\TaxEngine\Calculator; use Thelia\TaxEngine\Calculator;
use Thelia\Tools\NumberFormat; use Thelia\Tools\NumberFormat;
/** /**
* Manages products * Manages products
* *
@@ -1037,17 +1036,18 @@ class ProductController extends AbstractSeoCrudController
} }
// Create combinations // Create combinations
protected function combine($input, &$output, &$tmp) { protected function combine($input, &$output, &$tmp)
{
$current = array_shift($input); $current = array_shift($input);
if (count($input) > 0) { if (count($input) > 0) {
foreach($current as $element) { foreach ($current as $element) {
$tmp[] = $element; $tmp[] = $element;
$this->combine($input, $output, $tmp); $this->combine($input, $output, $tmp);
array_pop($tmp); array_pop($tmp);
} }
} else { } else {
foreach($current as $element) { foreach ($current as $element) {
$tmp[] = $element; $tmp[] = $element;
$output[] = $tmp; $output[] = $tmp;
array_pop($tmp); array_pop($tmp);
@@ -1058,8 +1058,8 @@ class ProductController extends AbstractSeoCrudController
/** /**
* Build combinations from the combination output builder * Build combinations from the combination output builder
*/ */
public function buildCombinationsAction() { public function buildCombinationsAction()
{
// Check current user authorization // Check current user authorization
if (null !== $response = $this->checkAuth($this->resourceCode, array(), AccessManager::UPDATE)) return $response; if (null !== $response = $this->checkAuth($this->resourceCode, array(), AccessManager::UPDATE)) return $response;
@@ -1082,7 +1082,7 @@ class ProductController extends AbstractSeoCrudController
// from the list of attribute_id:attributes_av ID from the form. // from the list of attribute_id:attributes_av ID from the form.
$combinations = $attributes_av_list = array(); $combinations = $attributes_av_list = array();
foreach($data['attribute_av'] as $item) { foreach ($data['attribute_av'] as $item) {
list($attribute_id, $attribute_av_id) = explode(':', $item); list($attribute_id, $attribute_av_id) = explode(':', $item);
if (! isset($attributes_av_list[$attribute_id])) if (! isset($attributes_av_list[$attribute_id]))

View File

@@ -23,7 +23,6 @@
namespace Thelia\Controller\Admin; namespace Thelia\Controller\Admin;
use Thelia\Core\Security\Resource\AdminResources; use Thelia\Core\Security\Resource\AdminResources;
use Thelia\Core\Security\AccessManager; use Thelia\Core\Security\AccessManager;
use Thelia\Form\SystemLogConfigurationForm; use Thelia\Form\SystemLogConfigurationForm;
@@ -43,7 +42,7 @@ class SystemLogController extends BaseAdminController
$destination_directories = Tlog::getInstance()->getDestinationsDirectories(); $destination_directories = Tlog::getInstance()->getDestinationsDirectories();
foreach($destination_directories as $dir) { foreach ($destination_directories as $dir) {
$this->loadDefinedDestinations($dir, $destinations); $this->loadDefinedDestinations($dir, $destinations);
} }
@@ -58,8 +57,8 @@ class SystemLogController extends BaseAdminController
); );
} }
protected function loadDefinedDestinations($directory, &$destinations) { protected function loadDefinedDestinations($directory, &$destinations)
{
try { try {
foreach (new \DirectoryIterator($directory) as $fileInfo) { foreach (new \DirectoryIterator($directory) as $fileInfo) {
@@ -144,7 +143,7 @@ class SystemLogController extends BaseAdminController
$active_destinations = array(); $active_destinations = array();
foreach($destinations as $classname => $destination) { foreach ($destinations as $classname => $destination) {
if (isset($destination['active'])) { if (isset($destination['active'])) {
$active_destinations[] = $destination['classname']; $active_destinations[] = $destination['classname'];
@@ -153,7 +152,7 @@ class SystemLogController extends BaseAdminController
if (isset($configs[$classname])) { if (isset($configs[$classname])) {
// Update destinations configuration // Update destinations configuration
foreach($configs[$classname] as $var => $value) { foreach ($configs[$classname] as $var => $value) {
ConfigQuery::write($var, $value, true, true); ConfigQuery::write($var, $value, true, true);
} }
} }

View File

@@ -23,12 +23,8 @@
namespace Thelia\Controller\Admin; namespace Thelia\Controller\Admin;
use Thelia\Core\Security\Resource\AdminResources; use Thelia\Core\Security\Resource\AdminResources;
use Thelia\Core\Security\AccessManager; use Thelia\Core\Security\AccessManager;
use Thelia\Form\SystemLogConfigurationForm;
use Thelia\Log\Tlog;
use Thelia\Model\ConfigQuery;
use Thelia\Model\ModuleQuery; use Thelia\Model\ModuleQuery;
use Thelia\Core\Template\TemplateHelper; use Thelia\Core\Template\TemplateHelper;
use Thelia\Core\Template\TemplateDefinition; use Thelia\Core\Template\TemplateDefinition;
@@ -67,7 +63,7 @@ class TranslationsController extends BaseAdminController
if (! empty($item_id) || $item_to_translate == 'co') { if (! empty($item_id) || $item_to_translate == 'co') {
switch($item_to_translate) { switch ($item_to_translate) {
case 'mo' : case 'mo' :
if (null !== $module = ModuleQuery::create()->findPk($item_id)) { if (null !== $module = ModuleQuery::create()->findPk($item_id)) {
@@ -149,8 +145,7 @@ class TranslationsController extends BaseAdminController
$templateArguments['max_input_vars_warning'] = true; $templateArguments['max_input_vars_warning'] = true;
$templateArguments['required_max_input_vars'] = $stringsCount; $templateArguments['required_max_input_vars'] = $stringsCount;
$templateArguments['current_max_input_vars'] = ini_get('max_input_vars'); $templateArguments['current_max_input_vars'] = ini_get('max_input_vars');
} } else {
else {
$templateArguments['all_strings'] = $all_strings; $templateArguments['all_strings'] = $all_strings;
} }
} }
@@ -162,14 +157,12 @@ class TranslationsController extends BaseAdminController
public function defaultAction() public function defaultAction()
{ {
if (null !== $response = $this->checkAuth(AdminResources::TRANSLATIONS, array(), AccessManager::VIEW)) return $response; if (null !== $response = $this->checkAuth(AdminResources::TRANSLATIONS, array(), AccessManager::VIEW)) return $response;
return $this->renderTemplate(); return $this->renderTemplate();
} }
public function updateAction() public function updateAction()
{ {
if (null !== $response = $this->checkAuth(AdminResources::LANGUAGE, array(), AccessManager::UPDATE)) return $response; if (null !== $response = $this->checkAuth(AdminResources::LANGUAGE, array(), AccessManager::UPDATE)) return $response;
return $this->renderTemplate(); return $this->renderTemplate();
} }
} }

View File

@@ -61,7 +61,7 @@ abstract class BaseController extends ContainerAware
/** /**
* Return an empty response (after an ajax request, for example) * Return an empty response (after an ajax request, for example)
* @param int $status * @param int $status
* @return \Thelia\Core\HttpFoundation\Response * @return \Thelia\Core\HttpFoundation\Response
*/ */
protected function nullResponse($status = 200) protected function nullResponse($status = 200)
@@ -252,7 +252,6 @@ abstract class BaseController extends ContainerAware
} }
} }
/** /**
@@ -367,8 +366,8 @@ abstract class BaseController extends ContainerAware
* Render the given template, and returns the result as an Http Response. * Render the given template, and returns the result as an Http Response.
* *
* @param $templateName the complete template name, with extension * @param $templateName the complete template name, with extension
* @param array $args the template arguments * @param array $args the template arguments
* @param int $status http code status * @param int $status http code status
* @return \Thelia\Core\HttpFoundation\Response * @return \Thelia\Core\HttpFoundation\Response
*/ */
abstract protected function render($templateName, $args = array(), $status = 200); abstract protected function render($templateName, $args = array(), $status = 200);

View File

@@ -25,10 +25,8 @@ namespace Thelia\Controller\Front;
use Symfony\Component\Routing\Router; use Symfony\Component\Routing\Router;
use Thelia\Controller\BaseController; use Thelia\Controller\BaseController;
use Thelia\Core\HttpFoundation\Response; use Thelia\Core\HttpFoundation\Response;
use Thelia\Core\Security\Exception\AuthenticationException;
use Thelia\Core\Template\TemplateHelper; use Thelia\Core\Template\TemplateHelper;
use Thelia\Model\AddressQuery; use Thelia\Model\AddressQuery;
use Thelia\Model\ConfigQuery;
use Thelia\Model\ModuleQuery; use Thelia\Model\ModuleQuery;
use Thelia\Tools\Redirect; use Thelia\Tools\Redirect;
use Thelia\Tools\URL; use Thelia\Tools\URL;
@@ -106,8 +104,8 @@ class BaseFrontController extends BaseController
* Render the given template, and returns the result as an Http Response. * Render the given template, and returns the result as an Http Response.
* *
* @param $templateName the complete template name, with extension * @param $templateName the complete template name, with extension
* @param array $args the template arguments * @param array $args the template arguments
* @param int $status http code status * @param int $status http code status
* @return \Thelia\Core\HttpFoundation\Response * @return \Thelia\Core\HttpFoundation\Response
*/ */
protected function render($templateName, $args = array(), $status = 200) protected function render($templateName, $args = array(), $status = 200)

View File

@@ -26,7 +26,6 @@ use Symfony\Component\DependencyInjection\Compiler\CompilerPassInterface;
use Symfony\Component\DependencyInjection\ContainerBuilder; use Symfony\Component\DependencyInjection\ContainerBuilder;
use Symfony\Component\DependencyInjection\Reference; use Symfony\Component\DependencyInjection\Reference;
/** /**
* Class TranslatorPass * Class TranslatorPass
* @package Thelia\Core\DependencyInjection\Compiler * @package Thelia\Core\DependencyInjection\Compiler
@@ -50,7 +49,7 @@ class TranslatorPass implements CompilerPassInterface
$translator = $container->getDefinition('thelia.translator'); $translator = $container->getDefinition('thelia.translator');
foreach($container->findTaggedServiceIds('translation.loader') as $id => $attributes) { foreach ($container->findTaggedServiceIds('translation.loader') as $id => $attributes) {
$translator->addMethodCall('addLoader', array($attributes[0]['alias'], new Reference($id))); $translator->addMethodCall('addLoader', array($attributes[0]['alias'], new Reference($id)));
if (isset($attributes[0]['legacy-alias'])) { if (isset($attributes[0]['legacy-alias'])) {
$translator->addMethodCall('addLoader', array($attributes[0]['legacy-alias'], new Reference($id))); $translator->addMethodCall('addLoader', array($attributes[0]['legacy-alias'], new Reference($id)));

View File

@@ -25,7 +25,6 @@ namespace Thelia\Core\Event\Administrator;
use Thelia\Core\Event\ActionEvent; use Thelia\Core\Event\ActionEvent;
use Thelia\Model\Admin; use Thelia\Model\Admin;
/** /**
* Class AdministratorUpdatePasswordEvent * Class AdministratorUpdatePasswordEvent
* @package Thelia\Core\Event\Administrator * @package Thelia\Core\Event\Administrator
@@ -82,4 +81,3 @@ class AdministratorUpdatePasswordEvent extends ActionEvent
} }
} }

View File

@@ -23,7 +23,6 @@
namespace Thelia\Core\Event\Customer; namespace Thelia\Core\Event\Customer;
use Symfony\Component\EventDispatcher\Event; use Symfony\Component\EventDispatcher\Event;
use Thelia\Core\Event\ActionEvent;
use Thelia\Model\Customer; use Thelia\Model\Customer;
/** /**

View File

@@ -23,7 +23,6 @@
namespace Thelia\Core\Event\Customer; namespace Thelia\Core\Event\Customer;
use Thelia\Core\Event\ActionEvent;
use Thelia\Model\Customer; use Thelia\Model\Customer;
class CustomerLoginEvent extends CustomerEvent class CustomerLoginEvent extends CustomerEvent

View File

@@ -65,6 +65,7 @@ class ProductCombinationGenerationEvent extends ProductEvent
public function setReference($reference) public function setReference($reference)
{ {
$this->reference = $reference; $this->reference = $reference;
return $this; return $this;
} }
@@ -76,6 +77,7 @@ class ProductCombinationGenerationEvent extends ProductEvent
public function setPrice($price) public function setPrice($price)
{ {
$this->price = $price; $this->price = $price;
return $this; return $this;
} }
@@ -87,6 +89,7 @@ class ProductCombinationGenerationEvent extends ProductEvent
public function setWeight($weight) public function setWeight($weight)
{ {
$this->weight = $weight; $this->weight = $weight;
return $this; return $this;
} }
@@ -98,6 +101,7 @@ class ProductCombinationGenerationEvent extends ProductEvent
public function setQuantity($quantity) public function setQuantity($quantity)
{ {
$this->quantity = $quantity; $this->quantity = $quantity;
return $this; return $this;
} }
@@ -109,6 +113,7 @@ class ProductCombinationGenerationEvent extends ProductEvent
public function setSalePrice($sale_price) public function setSalePrice($sale_price)
{ {
$this->sale_price = $sale_price; $this->sale_price = $sale_price;
return $this; return $this;
} }
@@ -120,6 +125,7 @@ class ProductCombinationGenerationEvent extends ProductEvent
public function setOnsale($onsale) public function setOnsale($onsale)
{ {
$this->onsale = $onsale; $this->onsale = $onsale;
return $this; return $this;
} }
@@ -131,6 +137,7 @@ class ProductCombinationGenerationEvent extends ProductEvent
public function setIsnew($isnew) public function setIsnew($isnew)
{ {
$this->isnew = $isnew; $this->isnew = $isnew;
return $this; return $this;
} }
@@ -142,6 +149,7 @@ class ProductCombinationGenerationEvent extends ProductEvent
public function setEanCode($ean_code) public function setEanCode($ean_code)
{ {
$this->ean_code = $ean_code; $this->ean_code = $ean_code;
return $this; return $this;
return $this; return $this;
} }
@@ -154,6 +162,7 @@ class ProductCombinationGenerationEvent extends ProductEvent
public function setCombinations($combinations) public function setCombinations($combinations)
{ {
$this->combinations = $combinations; $this->combinations = $combinations;
return $this; return $this;
} }
} }

View File

@@ -22,7 +22,6 @@
/*************************************************************************************/ /*************************************************************************************/
namespace Thelia\Core\Event\ProductSaleElement; namespace Thelia\Core\Event\ProductSaleElement;
use Thelia\Model\Product;
class ProductSaleElementDeleteEvent extends ProductSaleElementEvent class ProductSaleElementDeleteEvent extends ProductSaleElementEvent
{ {

View File

@@ -370,6 +370,7 @@ final class TheliaEvents
*/ */
const ORDER_SET_DELIVERY_ADDRESS = "action.order.setDeliveryAddress"; const ORDER_SET_DELIVERY_ADDRESS = "action.order.setDeliveryAddress";
const ORDER_SET_DELIVERY_MODULE = "action.order.setDeliveryModule"; const ORDER_SET_DELIVERY_MODULE = "action.order.setDeliveryModule";
const ORDER_SET_POSTAGE = "action.order.setPostage";
const ORDER_SET_INVOICE_ADDRESS = "action.order.setInvoiceAddress"; const ORDER_SET_INVOICE_ADDRESS = "action.order.setInvoiceAddress";
const ORDER_SET_PAYMENT_MODULE = "action.order.setPaymentModule"; const ORDER_SET_PAYMENT_MODULE = "action.order.setPaymentModule";
const ORDER_PAY = "action.order.pay"; const ORDER_PAY = "action.order.pay";

View File

@@ -184,5 +184,4 @@ class UpdateSeoEvent extends ActionEvent
return $this->object; return $this->object;
} }
} }

View File

@@ -30,12 +30,10 @@ use Symfony\Component\DependencyInjection\ContainerInterface;
use Symfony\Component\HttpFoundation\Request; use Symfony\Component\HttpFoundation\Request;
use Thelia\Core\HttpFoundation\Response; use Thelia\Core\HttpFoundation\Response;
use Symfony\Component\Routing\Router; use Symfony\Component\Routing\Router;
use Thelia\Core\HttpKernel\Exception\NotFountHttpException;
use Thelia\Core\Template\Exception\ResourceNotFoundException; use Thelia\Core\Template\Exception\ResourceNotFoundException;
use Thelia\Core\Template\ParserInterface; use Thelia\Core\Template\ParserInterface;
use Thelia\Core\Template\TemplateHelper; use Thelia\Core\Template\TemplateHelper;
use Thelia\Exception\OrderException; use Thelia\Exception\OrderException;
use Thelia\Model\ConfigQuery;
use Thelia\Tools\Redirect; use Thelia\Tools\Redirect;
use Thelia\Tools\URL; use Thelia\Tools\URL;
use Thelia\Core\Security\Exception\AuthenticationException; use Thelia\Core\Security\Exception\AuthenticationException;

View File

@@ -39,8 +39,8 @@ class Response extends BaseResponse
* *
* @see \Thelia\Core\HttpFoundation\Response::sendContent() * @see \Thelia\Core\HttpFoundation\Response::sendContent()
*/ */
public function sendContent() { public function sendContent()
{
Tlog::getInstance()->write($this->content); Tlog::getInstance()->write($this->content);
parent::sendContent(); parent::sendContent();

View File

@@ -65,6 +65,7 @@ class HttpCache extends BaseHttpCache implements HttpKernelInterface
$request->getContent() $request->getContent()
); );
} }
return parent::handle($request, $type, $catch); return parent::handle($request, $type, $catch);
} }

View File

@@ -177,7 +177,7 @@ class SecurityContext
continue; continue;
} }
if(!array_key_exists('module', $userPermissions)) { if (!array_key_exists('module', $userPermissions)) {
return false; return false;
} }

View File

@@ -1,7 +1,7 @@
<?php <?php
/*************************************************************************************/ /*************************************************************************************/
/* */ /* */
/* Thelia */ /* Thelia */
/* */ /* */
/* Copyright (c) OpenStudio */ /* Copyright (c) OpenStudio */
/* email : info@thelia.net */ /* email : info@thelia.net */
@@ -17,51 +17,38 @@
/* GNU General Public License for more details. */ /* GNU General Public License for more details. */
/* */ /* */
/* You should have received a copy of the GNU General Public License */ /* You should have received a copy of the GNU General Public License */
/* along with this program. If not, see <http://www.gnu.org/licenses/>. */ /* along with this program. If not, see <http://www.gnu.org/licenses/>. */
/* */ /* */
/*************************************************************************************/ /*************************************************************************************/
namespace Thelia\Core\Template\Assets; namespace Thelia\Core\Template\Assets;
interface AssetManagerInterface { interface AssetManagerInterface
{
/** /**
* Prepare an asset directory by checking that no changes occured in * Prepare an asset directory.
* the source directory. If any change is detected, the whole asset directory
* is copied in the web space.
*
* @param string $sourceAssetsDirectory the full path to the source asstes directory
* @param string $webAssetsDirectoryBase the base directory of the web based asset directory
* @param $webAssetsTemplate
* @param string $webAssetsKey the assets key : module name or 0 for base template
* *
* @param string $source_assets_directory the full path to the source asstes directory
* @param string $web_assets_directory_base the base directory of the web based asset directory
* @throws \RuntimeException if something goes wrong. * @throws \RuntimeException if something goes wrong.
*
* @internal param string $source_assets_directory the full path to the source asstes directory
* @internal param string $web_assets_directory_base the base directory of the web based asset directory
* @internal param string $key the assets key : module name or 0 for base template
*/ */
public function prepareAssets($sourceAssetsDirectory, $webAssetsDirectoryBase, $webAssetsTemplate, $webAssetsKey); public function prepareAssets($source_assets_directory, $web_assets_directory_base);
/** /**
* Generates assets from $asset_path in $output_path, using $filters. * Generates assets from $asset_path in $output_path, using $filters.
* *
* @param $assetSource * @param string $asset_path the full path to the asset file (or file collection, e.g. *.less)
* @param $assetDirectoryBase
* @param string $webAssetsDirectoryBase the full path to the asset file (or file collection, e.g. *.less)
* *
* @param string $webAssetsTemplate the full disk path to the base assets output directory in the web space * @param string $web_assets_directory_base the full disk path to the base assets output directory in the web space
* @param $webAssetsKey * @param string $output_url the URL to the base assets output directory in the web space
* @param string $outputUrl the URL to the base assets output directory in the web space
* *
* @param string $assetType the asset type: css, js, ... The generated files will have this extension. Pass an empty string to use the asset source extension. * @param string $asset_type the asset type: css, js, ... The generated files will have this extension. Pass an empty string to use the asset source extension.
* @param array $filters a list of filters, as defined below (see switch($filter_name) ...) * @param array $filters a list of filters, as defined below (see switch($filter_name) ...)
* *
* @param boolean $debug true / false * @param boolean $debug the debug mode, true or false
* *
* @internal param string $web_assets_directory_base the full disk path to the base assets output directory in the web space * @throws \InvalidArgumentException if an invalid filter name is found
* @internal param string $output_url the URL to the base assets output directory in the web space * @return string The URL to the generated asset file.
*
* @return string The URL to the generated asset file.
*/ */
public function processAsset($assetSource, $assetDirectoryBase, $webAssetsDirectoryBase, $webAssetsTemplate, $webAssetsKey, $outputUrl, $assetType, $filters, $debug); public function processAsset($asset_path, $web_assets_directory_base, $output_url, $asset_type, $filters, $debug);
} }

View File

@@ -1,7 +1,7 @@
<?php <?php
/*************************************************************************************/ /*************************************************************************************/
/* */ /* */
/* Thelia */ /* Thelia */
/* */ /* */
/* Copyright (c) OpenStudio */ /* Copyright (c) OpenStudio */
/* email : info@thelia.net */ /* email : info@thelia.net */
@@ -17,7 +17,7 @@
/* GNU General Public License for more details. */ /* GNU General Public License for more details. */
/* */ /* */
/* You should have received a copy of the GNU General Public License */ /* You should have received a copy of the GNU General Public License */
/* along with this program. If not, see <http://www.gnu.org/licenses/>. */ /* along with this program. If not, see <http://www.gnu.org/licenses/>. */
/* */ /* */
/*************************************************************************************/ /*************************************************************************************/
@@ -31,6 +31,7 @@ use Assetic\AssetWriter;
use Thelia\Model\ConfigQuery; use Thelia\Model\ConfigQuery;
use Thelia\Log\Tlog; use Thelia\Log\Tlog;
use Symfony\Component\Filesystem\Filesystem; use Symfony\Component\Filesystem\Filesystem;
use Symfony\Component\Filesystem\Exception\IOException;
/** /**
* This class is a simple helper for generating assets using Assetic. * This class is a simple helper for generating assets using Assetic.
@@ -51,7 +52,7 @@ class AsseticAssetManager implements AssetManagerInterface
/** /**
* Create a stamp form the modification time of the content of the given directory and all of its subdirectories * Create a stamp form the modification time of the content of the given directory and all of its subdirectories
* *
* @param string $directory ther directory name * @param string $directory ther directory name
* @return string the stamp of this directory * @return string the stamp of this directory
*/ */
protected function getStamp($directory) protected function getStamp($directory)
@@ -59,8 +60,8 @@ class AsseticAssetManager implements AssetManagerInterface
$stamp = ''; $stamp = '';
$iterator = new \RecursiveIteratorIterator( $iterator = new \RecursiveIteratorIterator(
new \RecursiveDirectoryIterator($directory, \RecursiveDirectoryIterator::SKIP_DOTS), new \RecursiveDirectoryIterator($directory, \RecursiveDirectoryIterator::SKIP_DOTS),
\RecursiveIteratorIterator::LEAVES_ONLY); \RecursiveIteratorIterator::LEAVES_ONLY);
foreach ($iterator as $file) { foreach ($iterator as $file) {
$stamp .= $file->getMTime(); $stamp .= $file->getMTime();
@@ -72,21 +73,19 @@ class AsseticAssetManager implements AssetManagerInterface
/** /**
* Check if a file is a source asset file * Check if a file is a source asset file
* *
* @param \SplFileInfo $fileInfo * @param \DirectoryIterator $fileInfo
*
* @return bool
*/ */
protected function isSourceFile(\SplFileInfo $fileInfo) { protected function isSourceFile(\SplFileInfo $fileInfo)
{
return in_array($fileInfo->getExtension(), $this->source_file_extensions); return in_array($fileInfo->getExtension(), $this->source_file_extensions);
} }
/** /**
* Recursively copy assets from the source directory to the destination * Recursively copy assets from the source directory to the destination
* directory in the web space, omitting source files. * directory in the web space, ommiting source files.
* *
* @param Filesystem $fs * @param string $from_directory the source
* @param string $from_directory the source * @param string $to_directory the destination
* @param string $to_directory the destination
* @throws \RuntimeException if a problem occurs. * @throws \RuntimeException if a problem occurs.
*/ */
protected function copyAssets(Filesystem $fs, $from_directory, $to_directory) protected function copyAssets(Filesystem $fs, $from_directory, $to_directory)
@@ -94,8 +93,8 @@ class AsseticAssetManager implements AssetManagerInterface
Tlog::getInstance()->addDebug("Copying assets from $from_directory to $to_directory"); Tlog::getInstance()->addDebug("Copying assets from $from_directory to $to_directory");
$iterator = new \RecursiveIteratorIterator( $iterator = new \RecursiveIteratorIterator(
new \RecursiveDirectoryIterator($from_directory, \RecursiveDirectoryIterator::SKIP_DOTS), new \RecursiveDirectoryIterator($from_directory, \RecursiveDirectoryIterator::SKIP_DOTS),
\RecursiveIteratorIterator::SELF_FIRST); \RecursiveIteratorIterator::SELF_FIRST);
foreach ($iterator as $item) { foreach ($iterator as $item) {
if ($item->isDir()) { if ($item->isDir()) {
@@ -123,21 +122,38 @@ class AsseticAssetManager implements AssetManagerInterface
} }
} }
/**
* Compite the assets path relative to the base template directory
*
* @param string $source_assets_directory the source directory
* @param string $web_assets_directory_base base directory of the web assets
* @return the full path of the destination directory
*/
protected function getRelativeDirectoryPath($source_assets_directory, $web_assets_directory_base)
{
$source_assets_directory = realpath($source_assets_directory);
// Remove base path from asset source path to get a path relative to the template base
// and use it to create the destination path.
return str_replace(
realpath(THELIA_ROOT),
'',
$source_assets_directory
);
}
/** /**
* Compute the destination directory path, from the source directory and the * Compute the destination directory path, from the source directory and the
* base directory of the web assets * base directory of the web assets
* *
* @param string $webAssetsDirectoryBase base directory of the web assets * @param string $source_assets_directory the source directory
* @param $webAssetsTemplate * @param string $web_assets_directory_base base directory of the web assets
* @param string $webAssetsKey the assests key : module name or 0 for base template * @return the full path of the destination directory
*
* @internal param string $source_assets_directory the source directory
* @return the full path of the destination directory
*/ */
protected function getDestinationDirectory($webAssetsDirectoryBase, $webAssetsTemplate, $webAssetsKey) protected function getDestinationDirectory($source_assets_directory, $web_assets_directory_base)
{ {
// Compute the absolute path of the output directory // Compute the absolute path of the output directory
return $webAssetsDirectoryBase . DS . $webAssetsTemplate . DS . $webAssetsKey; return $web_assets_directory_base . $this->getRelativeDirectoryPath($source_assets_directory, $web_assets_directory_base);
} }
/** /**
@@ -145,17 +161,14 @@ class AsseticAssetManager implements AssetManagerInterface
* the source directory. If any change is detected, the whole asset directory * the source directory. If any change is detected, the whole asset directory
* is copied in the web space. * is copied in the web space.
* *
* @param string $sourceAssetsDirectory the full path to the source asstes directory * @param string $source_assets_directory the full path to the source asstes directory
* @param string $webAssetsDirectoryBase the base directory of the web based asset directory * @param string $web_assets_directory_base the base directory of the web based asset directory
* @param $webAssetsTemplate
* @param string $webAssetsKey the assets key : module name or 0 for base template
*
* @throws \RuntimeException if something goes wrong. * @throws \RuntimeException if something goes wrong.
*/ */
public function prepareAssets($sourceAssetsDirectory, $webAssetsDirectoryBase, $webAssetsTemplate, $webAssetsKey) public function prepareAssets($source_assets_directory, $web_assets_directory_base)
{ {
// Compute the absolute path of the output directory // Compute the absolute path of the output directory
$to_directory = $this->getDestinationDirectory($webAssetsDirectoryBase, $webAssetsTemplate, $webAssetsKey); $to_directory = $this->getDestinationDirectory($source_assets_directory, $web_assets_directory_base);
// Get a path to the stamp file // Get a path to the stamp file
$stamp_file_path = $to_directory . DS . '.source-stamp'; $stamp_file_path = $to_directory . DS . '.source-stamp';
@@ -164,65 +177,64 @@ class AsseticAssetManager implements AssetManagerInterface
$prev_stamp = @file_get_contents($stamp_file_path); $prev_stamp = @file_get_contents($stamp_file_path);
// Get the current stamp of the source directory // Get the current stamp of the source directory
$curr_stamp = $this->getStamp($sourceAssetsDirectory); $curr_stamp = $this->getStamp($source_assets_directory);
if ($prev_stamp !== $curr_stamp) { if ($prev_stamp !== $curr_stamp) {
$fs = new Filesystem(); $fs = new Filesystem();
// FIXME: locking or not locking ? // FIXME: locking or not locking ?
/* /*
$lock_file = "$web_assets_directory_base/assets-".md5($source_assets_directory)."-generation-lock.txt"; $lock_file = "$web_assets_directory_base/assets-".md5($source_assets_directory)."-generation-lock.txt";
if (! $fp = fopen($lock_file, "w")) { if (! $fp = fopen($lock_file, "w")) {
throw new IOException(sprintf('Failed to open lock file %s', $lock_file)); throw new IOException(sprintf('Failed to open lock file %s', $lock_file));
}
if (flock($fp, LOCK_EX|LOCK_NB)) { // do an exclusive lock
*/
$tmp_dir = "$to_directory.tmp";
$fs->remove($tmp_dir);
// Copy the whole source dir in a temp directory
$this->copyAssets($fs, $source_assets_directory, $tmp_dir);
// Remove existing directory
if ($fs->exists($to_directory)) $fs->remove($to_directory);
// Put in place the new directory
$fs->rename($tmp_dir, $to_directory);
/*
// Release the lock
flock($fp, LOCK_UN);
// Remove the lock file
@fclose($fp);
$fs->remove($lock_file);
*/
if (false === @file_put_contents($stamp_file_path, $curr_stamp)) {
throw new \RuntimeException(
"Failed to create asset stamp file $stamp_file_path. Please check that your web server has the proper access rights to do that.");
} }
/* } else {
if (flock($fp, LOCK_EX|LOCK_NB)) { // do an exclusive lock @fclose($fp);
*/ }
$tmp_dir = "$to_directory.tmp"; */
$fs->remove($tmp_dir);
// Copy the whole source dir in a temp directory
$this->copyAssets($fs, $sourceAssetsDirectory, $tmp_dir);
// Remove existing directory
if ($fs->exists($to_directory)) $fs->remove($to_directory);
// Put in place the new directory
$fs->rename($tmp_dir, $to_directory);
/*
// Release the lock
flock($fp, LOCK_UN);
// Remove the lock file
@fclose($fp);
$fs->remove($lock_file);
*/
if (false === @file_put_contents($stamp_file_path, $curr_stamp)) {
throw new \RuntimeException(
"Failed to create asset stamp file $stamp_file_path. Please check that your web server has the proper access rights to do that.");
}
/* }
else {
@fclose($fp);
}
*/
} }
} }
/** /**
* Decode the filters names, and initialize the Assetic FilterManager * Decode the filters names, and initialize the Assetic FilterManager
* *
* @param FilterManager $filterManager the Assetic filter manager * @param FilterManager $filterManager the Assetic filter manager
* @param string $filters a comma separated list of filter names * @param string $filters a comma separated list of filter names
* @throws \InvalidArgumentException if a wrong filter is passed * @throws \InvalidArgumentException if a wrong filter is passed
* @return an array of filter names * @return an array of filter names
*/ */
protected function decodeAsseticFilters(FilterManager $filterManager, $filters) { protected function decodeAsseticFilters(FilterManager $filterManager, $filters)
{
if (!empty($filters)) { if (!empty($filters)) {
$filter_list = explode(',', $filters); $filter_list = explode(',', $filters);
@@ -261,8 +273,7 @@ class AsseticAssetManager implements AssetManagerInterface
break; break;
} }
} }
} } else {
else {
$filter_list = array(); $filter_list = array();
} }
@@ -272,73 +283,67 @@ class AsseticAssetManager implements AssetManagerInterface
/** /**
* Generates assets from $asset_path in $output_path, using $filters. * Generates assets from $asset_path in $output_path, using $filters.
* *
* @param $assetSource * @param string $asset_path the full path to the asset file (or file collection, e.g. *.less)
* @param $assetDirectoryBase
* @param string $webAssetsDirectoryBase the full path to the asset file (or file collection, e.g. *.less)
* *
* @param string $webAssetsTemplate the full disk path to the base assets output directory in the web space * @param string $web_assets_directory_base the full disk path to the base assets output directory in the web space
* @param $webAssetsKey * @param string $output_url the URL to the base assets output directory in the web space
* @param string $outputUrl the URL to the base assets output directory in the web space
* *
* @param string $assetType the asset type: css, js, ... The generated files will have this extension. Pass an empty string to use the asset source extension. * @param string $asset_type the asset type: css, js, ... The generated files will have this extension. Pass an empty string to use the asset source extension.
* @param array $filters a list of filters, as defined below (see switch($filter_name) ...) * @param array $filters a list of filters, as defined below (see switch($filter_name) ...)
* *
* @param boolean $debug true / false * @param boolean $debug true / false
* * @throws \InvalidArgumentException if an invalid filter name is found
* @return string The URL to the generated asset file. * @return string The URL to the generated asset file.
*/ */
public function processAsset($assetSource, $assetDirectoryBase, $webAssetsDirectoryBase, $webAssetsTemplate, $webAssetsKey, $outputUrl, $assetType, $filters, $debug) public function processAsset($asset_path, $web_assets_directory_base, $output_url, $asset_type, $filters, $debug)
{ {
$assetName = basename($assetSource); $asset_name = basename($asset_path);
$inputDirectory = realpath(dirname($assetSource)); $input_directory = realpath(dirname($asset_path));
$assetFileDirectoryInAssetDirectory = trim(str_replace(array($assetDirectoryBase, $assetName), '', $assetSource), DS);
$am = new AssetManager(); $am = new AssetManager();
$fm = new FilterManager(); $fm = new FilterManager();
// Get the filter list // Get the filter list
$filterList = $this->decodeAsseticFilters($fm, $filters); $filter_list = $this->decodeAsseticFilters($fm, $filters);
// Factory setup // Factory setup
$factory = new AssetFactory($inputDirectory); $factory = new AssetFactory($input_directory);
$factory->setAssetManager($am); $factory->setAssetManager($am);
$factory->setFilterManager($fm); $factory->setFilterManager($fm);
$factory->setDefaultOutput('*' . (!empty($assetType) ? '.' : '') . $assetType); $factory->setDefaultOutput('*' . (!empty($asset_type) ? '.' : '') . $asset_type);
$factory->setDebug($debug); $factory->setDebug($debug);
$asset = $factory->createAsset($assetName, $filterList); $asset = $factory->createAsset($asset_name, $filter_list);
$outputDirectory = $this->getDestinationDirectory($webAssetsDirectoryBase, $webAssetsTemplate, $webAssetsKey); $input_directory = realpath(dirname($asset_path));
$output_directory = $this->getDestinationDirectory($input_directory, $web_assets_directory_base);
// Get the URL part from the relative path // Get the URL part from the relative path
$outputRelativePath = $webAssetsTemplate . DS . $webAssetsKey; $output_relative_path = $this->getRelativeDirectoryPath($input_directory, $web_assets_directory_base);
$outputRelativeWebPath = rtrim(str_replace('\\', '/', $outputRelativePath), '/') . '/'; $output_relative_web_path = rtrim(str_replace('\\', '/', $output_relative_path), '/') . '/';
$assetTargetFilename = $asset->getTargetPath(); $asset_target_filename = $asset->getTargetPath();
/* // This is the final name of the generated asset
* This is the final name of the generated asset $asset_destination_path = $output_directory . DS . $asset_target_filename;
* We preserve file structure intending to keep - for example - relative css links working
*/
$assetDestinationPath = $outputDirectory . DS . $assetFileDirectoryInAssetDirectory . DS . $assetTargetFilename;
Tlog::getInstance()->addDebug("Asset destination full path: $assetDestinationPath"); Tlog::getInstance()->addDebug("Asset destination full path: $asset_destination_path");
// We generate an asset only if it does not exists, or if the asset processing is forced in development mode // We generate an asset only if it does not exists, or if the asset processing is forced in development mode
if (! file_exists($assetDestinationPath) || ($this->debugMode && ConfigQuery::read('process_assets', true)) ) { if (! file_exists($asset_destination_path) || ($this->debugMode && ConfigQuery::read('process_assets', true)) ) {
$writer = new AssetWriter($outputDirectory . DS . $assetFileDirectoryInAssetDirectory); $writer = new AssetWriter($output_directory);
Tlog::getInstance()->addDebug("Writing asset to $outputDirectory . DS . $assetFileDirectoryInAssetDirectory"); Tlog::getInstance()->addDebug("Writing asset to $output_directory");
$writer->writeAsset($asset); $writer->writeAsset($asset);
} }
return rtrim($outputUrl, '/') . '/' . trim($outputRelativeWebPath, '/') . '/' . trim($assetFileDirectoryInAssetDirectory, '/') . '/' . ltrim($assetTargetFilename, '/'); return rtrim($output_url, '/') . '/' . ltrim($output_relative_web_path, '/') . $asset_target_filename;
} }
} }

View File

@@ -277,7 +277,6 @@ abstract class BaseLoop
} }
} }
protected function searchArray(array $search, &$pagination = null) protected function searchArray(array $search, &$pagination = null)
{ {
if (false === $this->countable) { if (false === $this->countable) {
@@ -286,7 +285,7 @@ abstract class BaseLoop
if ($this->getArgValue('page') !== null) { if ($this->getArgValue('page') !== null) {
$nbPage = ceil(count($search)/$this->getArgValue('limit')); $nbPage = ceil(count($search)/$this->getArgValue('limit'));
if($this->getArgValue('page') > $nbPage || $this->getArgValue('page') <= 0) { if ($this->getArgValue('page') > $nbPage || $this->getArgValue('page') <= 0) {
return array(); return array();
} }
@@ -338,9 +337,9 @@ abstract class BaseLoop
*/ */
public function exec(&$pagination) public function exec(&$pagination)
{ {
if($this instanceof PropelSearchLoopInterface) { if ($this instanceof PropelSearchLoopInterface) {
$searchModelCriteria = $this->buildModelCriteria(); $searchModelCriteria = $this->buildModelCriteria();
if(null === $searchModelCriteria) { if (null === $searchModelCriteria) {
$results = array(); $results = array();
} else { } else {
$results = $this->search( $results = $this->search(
@@ -350,7 +349,7 @@ abstract class BaseLoop
} }
} elseif ($this instanceof ArraySearchLoopInterface) { } elseif ($this instanceof ArraySearchLoopInterface) {
$searchArray = $this->buildArray(); $searchArray = $this->buildArray();
if(null === $searchArray) { if (null === $searchArray) {
$results = array(); $results = array();
} else { } else {
$results = $this->searchArray( $results = $this->searchArray(
@@ -362,13 +361,13 @@ abstract class BaseLoop
$loopResult = new LoopResult($results); $loopResult = new LoopResult($results);
if(true === $this->countable) { if (true === $this->countable) {
$loopResult->setCountable(); $loopResult->setCountable();
} }
if(true === $this->timestampable) { if (true === $this->timestampable) {
$loopResult->setTimestamped(); $loopResult->setTimestamped();
} }
if(true === $this->versionable) { if (true === $this->versionable) {
$loopResult->setVersioned(); $loopResult->setVersioned();
} }
@@ -382,29 +381,29 @@ abstract class BaseLoop
* - ArraySearchLoopInterface * - ArraySearchLoopInterface
*/ */
$searchInterface = false; $searchInterface = false;
if($this instanceof PropelSearchLoopInterface) { if ($this instanceof PropelSearchLoopInterface) {
if(true === $searchInterface) { if (true === $searchInterface) {
throw new LoopException('Loop cannot implements multiple Search Interfaces : `PropelSearchLoopInterface`, `ArraySearchLoopInterface`', LoopException::MULTIPLE_SEARCH_INTERFACE); throw new LoopException('Loop cannot implements multiple Search Interfaces : `PropelSearchLoopInterface`, `ArraySearchLoopInterface`', LoopException::MULTIPLE_SEARCH_INTERFACE);
} }
$searchInterface = true; $searchInterface = true;
} }
if($this instanceof ArraySearchLoopInterface) { if ($this instanceof ArraySearchLoopInterface) {
if(true === $searchInterface) { if (true === $searchInterface) {
throw new LoopException('Loop cannot implements multiple Search Interfaces : `PropelSearchLoopInterface`, `ArraySearchLoopInterface`', LoopException::MULTIPLE_SEARCH_INTERFACE); throw new LoopException('Loop cannot implements multiple Search Interfaces : `PropelSearchLoopInterface`, `ArraySearchLoopInterface`', LoopException::MULTIPLE_SEARCH_INTERFACE);
} }
$searchInterface = true; $searchInterface = true;
} }
if(false === $searchInterface) { if (false === $searchInterface) {
throw new LoopException('Loop must implements one of the following interfaces : `PropelSearchLoopInterface`, `ArraySearchLoopInterface`', LoopException::SEARCH_INTERFACE_NOT_FOUND); throw new LoopException('Loop must implements one of the following interfaces : `PropelSearchLoopInterface`, `ArraySearchLoopInterface`', LoopException::SEARCH_INTERFACE_NOT_FOUND);
} }
/* Only PropelSearch allows timestamp and version */ /* Only PropelSearch allows timestamp and version */
if(!$this instanceof PropelSearchLoopInterface) { if (!$this instanceof PropelSearchLoopInterface) {
if(true === $this->timestampable) { if (true === $this->timestampable) {
throw new LoopException("Loop must implements 'PropelSearchLoopInterface' to be timestampable", LoopException::NOT_TIMESTAMPED); throw new LoopException("Loop must implements 'PropelSearchLoopInterface' to be timestampable", LoopException::NOT_TIMESTAMPED);
} }
if(true === $this->versionable) { if (true === $this->versionable) {
throw new LoopException("Loop must implements 'PropelSearchLoopInterface' to be versionable", LoopException::NOT_VERSIONED); throw new LoopException("Loop must implements 'PropelSearchLoopInterface' to be versionable", LoopException::NOT_VERSIONED);
} }
} }

View File

@@ -33,7 +33,6 @@ use Thelia\Core\Template\Loop\Argument\ArgumentCollection;
use Thelia\Core\Template\Loop\Argument\Argument; use Thelia\Core\Template\Loop\Argument\Argument;
use Thelia\Model\AdminQuery; use Thelia\Model\AdminQuery;
use Thelia\Type;
/** /**
* *

View File

@@ -88,7 +88,7 @@ class Auth extends BaseLoop implements ArraySearchLoopInterface
$module = $this->getModule(); $module = $this->getModule();
$access = $this->getAccess(); $access = $this->getAccess();
if(null !== $module) { if (null !== $module) {
$in = true; $in = true;
} }

View File

@@ -24,7 +24,6 @@
namespace Thelia\Core\Template\Loop; namespace Thelia\Core\Template\Loop;
use Propel\Runtime\ActiveQuery\Criteria; use Propel\Runtime\ActiveQuery\Criteria;
use Thelia\Core\Template\Element\BaseI18nLoop; use Thelia\Core\Template\Element\BaseI18nLoop;
use Thelia\Core\Template\Element\LoopResult;
use Thelia\Core\Template\Element\PropelSearchLoopInterface; use Thelia\Core\Template\Element\PropelSearchLoopInterface;
use Thelia\Core\Template\Loop\Argument\Argument; use Thelia\Core\Template\Loop\Argument\Argument;
use Thelia\Core\Template\Loop\Argument\ArgumentCollection; use Thelia\Core\Template\Loop\Argument\ArgumentCollection;

View File

@@ -58,7 +58,7 @@ class Cart extends BaseLoop implements ArraySearchLoopInterface
{ {
$cart = $this->getCart($this->request); $cart = $this->getCart($this->request);
if(null === $cart) { if (null === $cart) {
return array(); return array();
} }
@@ -81,7 +81,7 @@ class Cart extends BaseLoop implements ArraySearchLoopInterface
{ {
$taxCountry = TaxEngine::getInstance($this->request->getSession())->getDeliveryCountry(); $taxCountry = TaxEngine::getInstance($this->request->getSession())->getDeliveryCountry();
foreach($loopResult->getResultDataCollection() as $cartItem) { foreach ($loopResult->getResultDataCollection() as $cartItem) {
$product = $cartItem->getProduct(); $product = $cartItem->getProduct();
$productSaleElement = $cartItem->getProductSaleElements(); $productSaleElement = $cartItem->getProductSaleElements();

View File

@@ -125,9 +125,9 @@ class CategoryPath extends BaseI18nLoop implements ArraySearchLoopInterface
public function parseResults(LoopResult $loopResult) public function parseResults(LoopResult $loopResult)
{ {
foreach($loopResult->getResultDataCollection() as $result) { foreach ($loopResult->getResultDataCollection() as $result) {
$loopResultRow = new LoopResultRow($result); $loopResultRow = new LoopResultRow($result);
foreach($result as $output => $outputValue) { foreach ($result as $output => $outputValue) {
$loopResultRow->set($output, $outputValue); $loopResultRow->set($output, $outputValue);
} }
$loopResult->addRow($loopResultRow); $loopResult->addRow($loopResultRow);

View File

@@ -99,9 +99,9 @@ class CategoryTree extends BaseI18nLoop implements ArraySearchLoopInterface
public function parseResults(LoopResult $loopResult) public function parseResults(LoopResult $loopResult)
{ {
foreach($loopResult->getResultDataCollection() as $result) { foreach ($loopResult->getResultDataCollection() as $result) {
$loopResultRow = new LoopResultRow($result); $loopResultRow = new LoopResultRow($result);
foreach($result as $output => $outputValue) { foreach ($result as $output => $outputValue) {
$loopResultRow->set($output, $outputValue); $loopResultRow->set($output, $outputValue);
} }
$loopResult->addRow($loopResultRow); $loopResult->addRow($loopResultRow);

View File

@@ -24,7 +24,6 @@
namespace Thelia\Core\Template\Loop; namespace Thelia\Core\Template\Loop;
use Propel\Runtime\ActiveQuery\Criteria; use Propel\Runtime\ActiveQuery\Criteria;
use Propel\Runtime\Util\PropelModelPager;
use Thelia\Condition\ConditionFactory; use Thelia\Condition\ConditionFactory;
use Thelia\Condition\Implementation\ConditionInterface; use Thelia\Condition\Implementation\ConditionInterface;
use Thelia\Core\HttpFoundation\Request; use Thelia\Core\HttpFoundation\Request;

View File

@@ -158,6 +158,7 @@ class Currency extends BaseI18nLoop implements PropelSearchLoopInterface
} }
/* perform search */ /* perform search */
return $search; return $search;
} }

View File

@@ -36,9 +36,6 @@ use Thelia\Core\Template\Loop\Argument\Argument;
use Thelia\Model\CustomerQuery; use Thelia\Model\CustomerQuery;
use Thelia\Type\TypeCollection; use Thelia\Type\TypeCollection;
use Thelia\Type; use Thelia\Type;
use Thelia\Model\OrderQuery;
use Thelia\Model\Map\OrderAddressTableMap;
use Thelia\Model\Map\OrderTableMap;
/** /**
* *
@@ -208,7 +205,6 @@ class Customer extends BaseLoop implements SearchLoopInterface, PropelSearchLoop
$search->orderByCreatedAt(Criteria::DESC); $search->orderByCreatedAt(Criteria::DESC);
break; break;
} }
} }

View File

@@ -74,8 +74,8 @@ class Delivery extends BaseSpecificModule
try { try {
$postage = $moduleInstance->getPostage($country); $postage = $moduleInstance->getPostage($country);
} catch(OrderException $e) { } catch (OrderException $e) {
switch($e->getCode()) { switch ($e->getCode()) {
case OrderException::DELIVERY_MODULE_UNAVAILABLE: case OrderException::DELIVERY_MODULE_UNAVAILABLE:
/* do not show this delivery module */ /* do not show this delivery module */
continue(2); continue(2);

View File

@@ -126,7 +126,6 @@ class Folder extends BaseI18nLoop implements PropelSearchLoopInterface
if ($visible !== BooleanOrBothType::ANY) $search->filterByVisible($visible ? 1 : 0); if ($visible !== BooleanOrBothType::ANY) $search->filterByVisible($visible ? 1 : 0);
$orders = $this->getOrder(); $orders = $this->getOrder();
foreach ($orders as $order) { foreach ($orders as $order) {

View File

@@ -135,9 +135,9 @@ class FolderPath extends BaseI18nLoop implements ArraySearchLoopInterface
public function parseResults(LoopResult $loopResult) public function parseResults(LoopResult $loopResult)
{ {
foreach($loopResult->getResultDataCollection() as $result) { foreach ($loopResult->getResultDataCollection() as $result) {
$loopResultRow = new LoopResultRow($result); $loopResultRow = new LoopResultRow($result);
foreach($result as $output => $outputValue) { foreach ($result as $output => $outputValue) {
$loopResultRow->set($output, $outputValue); $loopResultRow->set($output, $outputValue);
} }
$loopResult->addRow($loopResultRow); $loopResult->addRow($loopResultRow);

View File

@@ -100,9 +100,9 @@ class FolderTree extends BaseI18nLoop implements ArraySearchLoopInterface
public function parseResults(LoopResult $loopResult) public function parseResults(LoopResult $loopResult)
{ {
foreach($loopResult->getResultDataCollection() as $result) { foreach ($loopResult->getResultDataCollection() as $result) {
$loopResultRow = new LoopResultRow($result); $loopResultRow = new LoopResultRow($result);
foreach($result as $output => $outputValue) { foreach ($result as $output => $outputValue) {
$loopResultRow->set($output, $outputValue); $loopResultRow->set($output, $outputValue);
} }
$loopResult->addRow($loopResultRow); $loopResult->addRow($loopResultRow);

View File

@@ -236,7 +236,6 @@ class Image extends BaseI18nLoop implements PropelSearchLoopInterface
$search->filterById($exclude, Criteria::NOT_IN); $search->filterById($exclude, Criteria::NOT_IN);
// echo "sql=".$search->toString(); // echo "sql=".$search->toString();
return $search; return $search;
} }

View File

@@ -196,19 +196,19 @@ class Module extends BaseI18nLoop implements PropelSearchLoopInterface
/* first test if module defines it's own config route */ /* first test if module defines it's own config route */
$routerId = "router." . $module->getBaseDir(); $routerId = "router." . $module->getBaseDir();
if($this->container->has($routerId)) { if ($this->container->has($routerId)) {
try { try {
if($this->container->get($routerId)->match('/admin/module/' . $module->getCode())) { if ($this->container->get($routerId)->match('/admin/module/' . $module->getCode())) {
$hasConfigurationInterface = true; $hasConfigurationInterface = true;
} }
} catch(ResourceNotFoundException $e) { } catch (ResourceNotFoundException $e) {
/* $hasConfigurationInterface stays false */ /* $hasConfigurationInterface stays false */
} }
} }
/* if not ; test if it uses admin inclusion : module_configuration.html */ /* if not ; test if it uses admin inclusion : module_configuration.html */
if(false === $hasConfigurationInterface) { if (false === $hasConfigurationInterface) {
if(file_exists( sprintf("%s/AdminIncludes/%s.html", $module->getAbsoluteBaseDir(), "module_configuration"))) { if (file_exists( sprintf("%s/AdminIncludes/%s.html", $module->getAbsoluteBaseDir(), "module_configuration"))) {
$hasConfigurationInterface = true; $hasConfigurationInterface = true;
} }
} }

View File

@@ -46,7 +46,7 @@ use Thelia\Type;
*/ */
class Order extends BaseLoop implements SearchLoopInterface, PropelSearchLoopInterface class Order extends BaseLoop implements SearchLoopInterface, PropelSearchLoopInterface
{ {
protected $countable = true; protected $countable = true;
protected $timestampable = true; protected $timestampable = true;
protected $versionable = false; protected $versionable = false;
@@ -175,7 +175,6 @@ class Order extends BaseLoop implements SearchLoopInterface, PropelSearchLoopInt
} }
return $search; return $search;
} }
public function parseResults(LoopResult $loopResult) public function parseResults(LoopResult $loopResult)
@@ -202,6 +201,7 @@ class Order extends BaseLoop implements SearchLoopInterface, PropelSearchLoopInt
->set("STATUS", $order->getStatusId()) ->set("STATUS", $order->getStatusId())
->set("LANG", $order->getLangId()) ->set("LANG", $order->getLangId())
->set("POSTAGE", $order->getPostage()) ->set("POSTAGE", $order->getPostage())
->set("DISCOUNT", $order->getDiscount())
->set("TOTAL_TAX", $tax) ->set("TOTAL_TAX", $tax)
->set("TOTAL_AMOUNT", $amount - $tax) ->set("TOTAL_AMOUNT", $amount - $tax)
->set("TOTAL_TAXED_AMOUNT", $amount) ->set("TOTAL_TAXED_AMOUNT", $amount)

View File

@@ -0,0 +1,116 @@
<?php
/**********************************************************************************/
/* */
/* Thelia */
/* */
/* Copyright (c) OpenStudio */
/* email : info@thelia.net */
/* web : http://www.thelia.net */
/* */
/* This program is free software; you can redistribute it and/or modify */
/* it under the terms of the GNU General Public License as published by */
/* the Free Software Foundation; either version 3 of the License */
/* */
/* This program is distributed in the hope that it will be useful, */
/* but WITHOUT ANY WARRANTY; without even the implied warranty of */
/* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the */
/* GNU General Public License for more details. */
/* */
/* You should have received a copy of the GNU General Public License */
/* along with this program. If not, see <http://www.gnu.org/licenses/>. */
/* */
/**********************************************************************************/
namespace Thelia\Core\Template\Loop;
use Propel\Runtime\ActiveQuery\Criteria;
use Thelia\Condition\ConditionFactory;
use Thelia\Condition\Implementation\ConditionInterface;
use Thelia\Core\HttpFoundation\Request;
use Thelia\Core\Template\Element\BaseLoop;
use Thelia\Core\Template\Element\LoopResult;
use Thelia\Core\Template\Element\LoopResultRow;
use Thelia\Core\Template\Element\PropelSearchLoopInterface;
use Thelia\Core\Template\Loop\Argument\Argument;
use Thelia\Core\Template\Loop\Argument\ArgumentCollection;
use Thelia\Model\OrderCouponQuery;
use Thelia\Model\OrderQuery;
use Thelia\Type;
/**
*
* OrderCoupon loop
*
*
* Class OrderCoupon
* @package Thelia\Core\Template\Loop
* @author Etienne Roudeix <eroudeix@openstudio.fr>
*/
class OrderCoupon extends BaseLoop implements PropelSearchLoopInterface
{
/**
* Define all args used in your loop
*
* @return ArgumentCollection
*/
protected function getArgDefinitions()
{
return new ArgumentCollection(
Argument::createIntTypeArgument('order', null, true)
);
}
public function buildModelCriteria()
{
$search = OrderCouponQuery::create();
$order = $this->getOrder();
$search->filterByOrderId($order, Criteria::EQUAL);
$search->orderById(Criteria::ASC);
return $search;
}
public function parseResults(LoopResult $loopResult)
{
$conditionFactory = $this->container->get('thelia.condition.factory');
/** @var OrderCoupon $orderCoupon */
foreach ($loopResult->getResultDataCollection() as $orderCoupon) {
$loopResultRow = new LoopResultRow($orderCoupon);
$conditions = $conditionFactory->unserializeConditionCollection(
$orderCoupon->getSerializedConditions()
);
$now = time();
$datediff = $orderCoupon->getExpirationDate()->getTimestamp() - $now;
$daysLeftBeforeExpiration = floor($datediff/(60*60*24));
$cleanedConditions = array();
foreach ($conditions->getConditions() as $condition) {
$cleanedConditions[] = $condition->getToolTip();
}
$loopResultRow->set("ID", $orderCoupon->getId())
->set("CODE", $orderCoupon->getCode())
->set("TITLE", $orderCoupon->getTitle())
->set("SHORT_DESCRIPTION", $orderCoupon->getShortDescription())
->set("DESCRIPTION", $orderCoupon->getDescription())
->set("EXPIRATION_DATE", $orderCoupon->getExpirationDate( OrderQuery::create()->findPk($this->getOrder())->getLangId() ))
->set("USAGE_LEFT", $orderCoupon->getMaxUsage())
->set("IS_CUMULATIVE", $orderCoupon->getIsCumulative())
->set("IS_REMOVING_POSTAGE", $orderCoupon->getIsRemovingPostage())
->set("IS_AVAILABLE_ON_SPECIAL_OFFERS", $orderCoupon->getIsAvailableOnSpecialOffers())
->set("AMOUNT", $orderCoupon->getAmount())
->set("APPLICATION_CONDITIONS", $cleanedConditions)
->set("DAY_LEFT_BEFORE_EXPIRATION", $daysLeftBeforeExpiration)
;
$loopResult->addRow($loopResultRow);
}
return $loopResult;
}
}

View File

@@ -33,7 +33,6 @@ use Thelia\Core\Template\Loop\Argument\ArgumentCollection;
use Thelia\Core\Template\Loop\Argument\Argument; use Thelia\Core\Template\Loop\Argument\Argument;
use Thelia\Model\ProfileQuery; use Thelia\Model\ProfileQuery;
use Thelia\Type;
/** /**
* *

View File

@@ -23,19 +23,12 @@
namespace Thelia\Core\Template\Loop; namespace Thelia\Core\Template\Loop;
use Propel\Runtime\ActiveQuery\Criteria;
use Thelia\Core\Security\AccessManager;
use Thelia\Core\Template\Element\BaseI18nLoop;
use Thelia\Core\Template\Element\LoopResult; use Thelia\Core\Template\Element\LoopResult;
use Thelia\Core\Template\Element\LoopResultRow; use Thelia\Core\Template\Element\LoopResultRow;
use Thelia\Core\Template\Element\PropelSearchLoopInterface;
use Thelia\Core\Template\Loop\Argument\ArgumentCollection; use Thelia\Core\Template\Loop\Argument\ArgumentCollection;
use Thelia\Core\Template\Loop\Argument\Argument; use Thelia\Core\Template\Loop\Argument\Argument;
use Thelia\Model\ModuleQuery;
use Thelia\Module\BaseModule;
use Thelia\Type; use Thelia\Type;
use Thelia\Core\Template\TemplateHelper; use Thelia\Core\Template\TemplateHelper;
use Thelia\Core\Template\TemplateDefinition; use Thelia\Core\Template\TemplateDefinition;
@@ -72,8 +65,14 @@ class Template extends BaseLoop implements ArraySearchLoopInterface
); );
} }
<<<<<<< HEAD
public function buildArray() { public function buildArray() {
$type = $this->getArg('template-type')->getValue(); $type = $this->getArg('template-type')->getValue();
=======
public function buildArray()
{
$type = $this->getArg(template_type);
>>>>>>> cleanmaster
if ($type == 'front-office') if ($type == 'front-office')
$templateType = TemplateDefinition::FRONT_OFFICE; $templateType = TemplateDefinition::FRONT_OFFICE;

View File

@@ -23,8 +23,11 @@
namespace Thelia\Core\Template\Smarty\Assets; namespace Thelia\Core\Template\Smarty\Assets;
<<<<<<< HEAD
use Thelia\Core\Template\Assets\AsseticHelper; use Thelia\Core\Template\Assets\AsseticHelper;
use Thelia\Core\Template\TemplateDefinition; use Thelia\Core\Template\TemplateDefinition;
=======
>>>>>>> cleanmaster
use Thelia\Tools\URL; use Thelia\Tools\URL;
use Thelia\Core\Template\Assets\AssetManagerInterface; use Thelia\Core\Template\Assets\AssetManagerInterface;
@@ -42,9 +45,9 @@ class SmartyAssetsManager
/** /**
* Creates a new SmartyAssetsManager instance * Creates a new SmartyAssetsManager instance
* *
* @param AssetManagerInterface $assetsManager an asset manager instance * @param AssetManagerInterface $assetsManager an asset manager instance
* @param string $web_root the disk path to the web root (with final /) * @param string $web_root the disk path to the web root (with final /)
* @param string $path_relative_to_web_root the path (relative to web root) where the assets will be generated * @param string $path_relative_to_web_root the path (relative to web root) where the assets will be generated
*/ */
public function __construct(AssetManagerInterface $assetsManager, $web_root, $path_relative_to_web_root) public function __construct(AssetManagerInterface $assetsManager, $web_root, $path_relative_to_web_root)
{ {
@@ -56,6 +59,7 @@ class SmartyAssetsManager
public function prepareAssets($assets_directory, \Smarty_Internal_Template $template) public function prepareAssets($assets_directory, \Smarty_Internal_Template $template)
{ {
<<<<<<< HEAD
self::$assetsDirectory = $assets_directory; self::$assetsDirectory = $assets_directory;
$smartyParser = $template->smarty; $smartyParser = $template->smarty;
@@ -70,6 +74,9 @@ class SmartyAssetsManager
foreach($templateDirectories[$templateDefinition->getName()] as $key => $directory) { foreach($templateDirectories[$templateDefinition->getName()] as $key => $directory) {
$tpl_path = $directory . DS . self::$assetsDirectory; $tpl_path = $directory . DS . self::$assetsDirectory;
=======
$tpl_dir = dirname($template->source->filepath);
>>>>>>> cleanmaster
$asset_dir_absolute_path = realpath($tpl_path); $asset_dir_absolute_path = realpath($tpl_path);

View File

@@ -27,8 +27,6 @@ use Thelia\Core\Template\Smarty\SmartyPluginDescriptor;
use Thelia\Core\Template\Smarty\AbstractSmartyPlugin; use Thelia\Core\Template\Smarty\AbstractSmartyPlugin;
use Thelia\Tools\URL; use Thelia\Tools\URL;
use Thelia\Core\Security\SecurityContext; use Thelia\Core\Security\SecurityContext;
use Thelia\Model\Config;
use Thelia\Model\ConfigQuery;
use Thelia\Core\Template\TemplateHelper; use Thelia\Core\Template\TemplateHelper;
/** /**
@@ -45,8 +43,8 @@ class AdminUtilities extends AbstractSmartyPlugin
$this->securityContext = $securityContext; $this->securityContext = $securityContext;
} }
protected function fetch_snippet($smarty, $templateName, $variablesArray) { protected function fetch_snippet($smarty, $templateName, $variablesArray)
{
$data = ''; $data = '';
$snippet_path = sprintf('%s/%s/%s.html', $snippet_path = sprintf('%s/%s/%s.html',
@@ -99,7 +97,6 @@ class AdminUtilities extends AbstractSmartyPlugin
$module === null ? array() : array($module), $module === null ? array() : array($module),
array($access)) array($access))
) { ) {
return $this->fetch_snippet($smarty, 'includes/admin-utilities-position-block', array( return $this->fetch_snippet($smarty, 'includes/admin-utilities-position-block', array(
'admin_utilities_go_up_url' => URL::getInstance()->absoluteUrl($path, array('mode' => 'up', $url_parameter => $id)), 'admin_utilities_go_up_url' => URL::getInstance()->absoluteUrl($path, array('mode' => 'up', $url_parameter => $id)),
'admin_utilities_in_place_edit_class' => $in_place_edit_class, 'admin_utilities_in_place_edit_class' => $in_place_edit_class,

View File

@@ -56,10 +56,11 @@ class Assets extends AbstractSmartyPlugin
{ {
try { try {
return $this->assetManager->processSmartyPluginCall('js', $params, $content, $template, $repeat); return $this->assetManager->processSmartyPluginCall('js', $params, $content, $template, $repeat);
} catch(\Exception $e) { } catch (\Exception $e) {
$catchException = $this->getNormalizedParam($params, array('catchException')); $catchException = $this->getNormalizedParam($params, array('catchException'));
if($catchException == "true") { if ($catchException == "true") {
$repeat = false; $repeat = false;
return null; return null;
} else { } else {
throw $e; throw $e;

View File

@@ -212,6 +212,8 @@ class DataAccessFunctions extends AbstractSmartyPlugin
switch ($attribute) { switch ($attribute) {
case 'postage': case 'postage':
return $order->getPostage(); return $order->getPostage();
case 'discount':
return $order->getDiscount();
case 'delivery_address': case 'delivery_address':
return $order->chosenDeliveryAddress; return $order->chosenDeliveryAddress;
case 'invoice_address': case 'invoice_address':
@@ -267,69 +269,69 @@ class DataAccessFunctions extends AbstractSmartyPlugin
$includeShipping = true; $includeShipping = true;
} }
if($params['startDate'] == 'today') { if ($params['startDate'] == 'today') {
$startDate = new \DateTime(); $startDate = new \DateTime();
$startDate->setTime(0, 0, 0); $startDate->setTime(0, 0, 0);
} elseif($params['startDate'] == 'yesterday') { } elseif ($params['startDate'] == 'yesterday') {
$startDate = new \DateTime(); $startDate = new \DateTime();
$startDate->setTime(0, 0, 0); $startDate->setTime(0, 0, 0);
$startDate->modify('-1 day'); $startDate->modify('-1 day');
} elseif($params['startDate'] == 'this_month') { } elseif ($params['startDate'] == 'this_month') {
$startDate = new \DateTime(); $startDate = new \DateTime();
$startDate->modify('first day of this month'); $startDate->modify('first day of this month');
$startDate->setTime(0, 0, 0); $startDate->setTime(0, 0, 0);
} elseif($params['startDate'] == 'last_month') { } elseif ($params['startDate'] == 'last_month') {
$startDate = new \DateTime(); $startDate = new \DateTime();
$startDate->modify('first day of last month'); $startDate->modify('first day of last month');
$startDate->setTime(0, 0, 0); $startDate->setTime(0, 0, 0);
} elseif($params['startDate'] == 'this_year') { } elseif ($params['startDate'] == 'this_year') {
$startDate = new \DateTime(); $startDate = new \DateTime();
$startDate->modify('first day of January this year'); $startDate->modify('first day of January this year');
$startDate->setTime(0, 0, 0); $startDate->setTime(0, 0, 0);
} elseif($params['startDate'] == 'last_year') { } elseif ($params['startDate'] == 'last_year') {
$startDate = new \DateTime(); $startDate = new \DateTime();
$startDate->modify('first day of December last year'); $startDate->modify('first day of December last year');
$startDate->setTime(0, 0, 0); $startDate->setTime(0, 0, 0);
} else { } else {
try { try {
$startDate = new \DateTime($params['startDate']); $startDate = new \DateTime($params['startDate']);
} catch(\Exception $e) { } catch (\Exception $e) {
throw new \InvalidArgumentException(sprintf("invalid startDate attribute '%s' in stats access function", $params['startDate'])); throw new \InvalidArgumentException(sprintf("invalid startDate attribute '%s' in stats access function", $params['startDate']));
} }
} }
if($params['endDate'] == 'today') { if ($params['endDate'] == 'today') {
$endDate = new \DateTime(); $endDate = new \DateTime();
$endDate->setTime(0, 0, 0); $endDate->setTime(0, 0, 0);
} elseif($params['endDate'] == 'yesterday') { } elseif ($params['endDate'] == 'yesterday') {
$endDate = new \DateTime(); $endDate = new \DateTime();
$endDate->setTime(0, 0, 0); $endDate->setTime(0, 0, 0);
$endDate->modify('-1 day'); $endDate->modify('-1 day');
} elseif($params['endDate'] == 'this_month') { } elseif ($params['endDate'] == 'this_month') {
$endDate = new \DateTime(); $endDate = new \DateTime();
$endDate->modify('last day of this month'); $endDate->modify('last day of this month');
$endDate->setTime(0, 0, 0); $endDate->setTime(0, 0, 0);
} elseif($params['endDate'] == 'last_month') { } elseif ($params['endDate'] == 'last_month') {
$endDate = new \DateTime(); $endDate = new \DateTime();
$endDate->modify('last day of last month'); $endDate->modify('last day of last month');
$endDate->setTime(0, 0, 0); $endDate->setTime(0, 0, 0);
} elseif($params['endDate'] == 'this_year') { } elseif ($params['endDate'] == 'this_year') {
$endDate = new \DateTime(); $endDate = new \DateTime();
$endDate->modify('last day of December this year'); $endDate->modify('last day of December this year');
$endDate->setTime(0, 0, 0); $endDate->setTime(0, 0, 0);
} elseif($params['endDate'] == 'last_year') { } elseif ($params['endDate'] == 'last_year') {
$endDate = new \DateTime(); $endDate = new \DateTime();
$endDate->modify('last day of January last year'); $endDate->modify('last day of January last year');
$endDate->setTime(0, 0, 0); $endDate->setTime(0, 0, 0);
} else { } else {
try { try {
$endDate = new \DateTime($params['endDate']); $endDate = new \DateTime($params['endDate']);
} catch(\Exception $e) { } catch (\Exception $e) {
throw new \InvalidArgumentException(sprintf("invalid endDate attribute '%s' in stats access function", $params['endDate'])); throw new \InvalidArgumentException(sprintf("invalid endDate attribute '%s' in stats access function", $params['endDate']));
} }
} }
switch( $params['key'] ) { switch ($params['key']) {
case 'sales' : case 'sales' :
return OrderQuery::getSaleStats($startDate, $endDate, $includeShipping); return OrderQuery::getSaleStats($startDate, $endDate, $includeShipping);
case 'orders' : case 'orders' :

View File

@@ -28,7 +28,6 @@ use Thelia\Core\Template\Smarty\AbstractSmartyPlugin;
use Thelia\Core\Template\Smarty\an; use Thelia\Core\Template\Smarty\an;
use Thelia\Core\Template\Smarty\SmartyPluginDescriptor; use Thelia\Core\Template\Smarty\SmartyPluginDescriptor;
/** /**
* Class Esi * Class Esi
* @package Thelia\Core\Template\Smarty\Plugins * @package Thelia\Core\Template\Smarty\Plugins
@@ -53,7 +52,7 @@ class Esi extends AbstractSmartyPlugin
$ignore_errors = $this->getParam($params, 'ignore_errors'); $ignore_errors = $this->getParam($params, 'ignore_errors');
$comment = $this->getParam($params, 'comment'); $comment = $this->getParam($params, 'comment');
if(null === $path) { if (null === $path) {
return; return;
} }

View File

@@ -48,7 +48,7 @@ class Module extends AbstractSmartyPlugin
/** /**
* Process theliaModule template inclusion function * Process theliaModule template inclusion function
* *
* @param unknown $params * @param unknown $params
* @param \Smarty_Internal_Template $template * @param \Smarty_Internal_Template $template
* @internal param \Thelia\Core\Template\Smarty\Plugins\unknown $smarty * @internal param \Thelia\Core\Template\Smarty\Plugins\unknown $smarty
* *
@@ -60,7 +60,7 @@ class Module extends AbstractSmartyPlugin
if (false !== $location = $this->getParam($params, 'location', false)) { if (false !== $location = $this->getParam($params, 'location', false)) {
if($this->debug === true && $this->request->get('SHOW_INCLUDE')) { if ($this->debug === true && $this->request->get('SHOW_INCLUDE')) {
echo sprintf('<div style="background-color: #C82D26; border-color: #000000; border: solid;">%s</div>', $location); echo sprintf('<div style="background-color: #C82D26; border-color: #000000; border: solid;">%s</div>', $location);
} }
@@ -70,7 +70,7 @@ class Module extends AbstractSmartyPlugin
foreach ($modules as $module) { foreach ($modules as $module) {
if(null !== $moduleLimit && $moduleLimit != $module->getCode()) { if (null !== $moduleLimit && $moduleLimit != $module->getCode()) {
continue; continue;
} }

View File

@@ -14,9 +14,6 @@ use Thelia\Core\Template\Smarty\AbstractSmartyPlugin;
use Thelia\Core\Template\Exception\ResourceNotFoundException; use Thelia\Core\Template\Exception\ResourceNotFoundException;
use Thelia\Core\Template\ParserContext; use Thelia\Core\Template\ParserContext;
use Thelia\Core\Template\TemplateDefinition; use Thelia\Core\Template\TemplateDefinition;
use Thelia\Model\ConfigQuery;
use Thelia\Core\Template\TemplateHelper;
use Imagine\Exception\InvalidArgumentException;
use Thelia\Core\Translation\Translator; use Thelia\Core\Translation\Translator;
/** /**
@@ -35,12 +32,7 @@ class SmartyParser extends Smarty implements ParserInterface
protected $backOfficeTemplateDirectories = array(); protected $backOfficeTemplateDirectories = array();
protected $frontOfficeTemplateDirectories = array(); protected $frontOfficeTemplateDirectories = array();
protected $templateDirectories = array(); protected $template = "";
/**
* @var TemplateDefinition
*/
protected $templateDefinition = "";
protected $status = 200; protected $status = 200;
@@ -52,8 +44,8 @@ class SmartyParser extends Smarty implements ParserInterface
* @param bool $debug * @param bool $debug
*/ */
public function __construct( public function __construct(
Request $request, EventDispatcherInterface $dispatcher, ParserContext $parserContext, Request $request, EventDispatcherInterface $dispatcher, ParserContext $parserContext,
$env = "prod", $debug = false) $env = "prod", $debug = false)
{ {
parent::__construct(); parent::__construct();
@@ -72,7 +64,6 @@ class SmartyParser extends Smarty implements ParserInterface
$this->setCompileDir($compile_dir); $this->setCompileDir($compile_dir);
$this->setCacheDir($cache_dir); $this->setCacheDir($cache_dir);
$this->debugging = $debug; $this->debugging = $debug;
// Prevent smarty ErrorException: Notice: Undefined index bla bla bla... // Prevent smarty ErrorException: Notice: Undefined index bla bla bla...
@@ -80,7 +71,7 @@ class SmartyParser extends Smarty implements ParserInterface
// Si on n'est pas en mode debug, activer le cache, avec une lifetime de 15mn, et en vérifiant que les templates sources n'ont pas été modifiés. // Si on n'est pas en mode debug, activer le cache, avec une lifetime de 15mn, et en vérifiant que les templates sources n'ont pas été modifiés.
if($debug) { if ($debug) {
$this->setCaching(Smarty::CACHING_OFF); $this->setCaching(Smarty::CACHING_OFF);
$this->setForceCompile(true); $this->setForceCompile(true);
} else { } else {
@@ -89,7 +80,6 @@ class SmartyParser extends Smarty implements ParserInterface
//$this->enableSecurity(); //$this->enableSecurity();
// The default HTTP status // The default HTTP status
$this->status = 200; $this->status = 200;
@@ -97,46 +87,6 @@ class SmartyParser extends Smarty implements ParserInterface
$this->registerFilter('variable', array(__CLASS__, "theliaEscape")); $this->registerFilter('variable', array(__CLASS__, "theliaEscape"));
} }
/**
* Add a template directory to the current template list
*
* @param unknown $templateType the template type (a TemplateDefinition type constant)
* @param string $templateName the template name
* @param string $templateDirectory path to the template dirtectory
* @param unknown $key ???
* @param string $unshift ??? Etienne ?
*/
public function addTemplateDirectory($templateType, $templateName, $templateDirectory, $key, $unshift = false) {
if(true === $unshift && isset($this->templateDirectories[$templateType][$templateName])) {
$this->templateDirectories[$templateType][$templateName] = array_merge(
array(
$key => $templateDirectory,
),
$this->templateDirectories[$templateType][$templateName]
);
} else {
$this->templateDirectories[$templateType][$templateName][$key] = $templateDirectory;
}
}
/**
* Return the registeted template directories for a givent template type
*
* @param unknown $templateType
* @throws InvalidArgumentException
* @return multitype:
*/
public function getTemplateDirectories($templateType)
{
if (! isset($this->templateDirectories[$templateType])) {
throw new InvalidArgumentException("Failed to get template type %", $templateType);
}
return $this->templateDirectories[$templateType];
}
public function removeBlankLines($tpl_source, \Smarty_Internal_Template $template) public function removeBlankLines($tpl_source, \Smarty_Internal_Template $template)
{ {
return preg_replace("/(^[\r\n]*|[\r\n]+)[\s\t]*[\r\n]+/", "\n", $tpl_source); return preg_replace("/(^[\r\n]*|[\r\n]+)[\s\t]*[\r\n]+/", "\n", $tpl_source);
@@ -151,52 +101,72 @@ class SmartyParser extends Smarty implements ParserInterface
} }
} }
public function addBackOfficeTemplateDirectory($templateName, $templateDirectory, $key)
{
$this->backOfficeTemplateDirectories[$templateName][$key] = $templateDirectory;
}
public function addFrontOfficeTemplateDirectory($templateName, $templateDirectory, $key)
{
$this->frontOfficeTemplateDirectories[$templateName][$key] = $templateDirectory;
}
/** /**
* @param TemplateDefinition $templateDefinition * @param TemplateDefinition $templateDefinition
*/ */
public function setTemplateDefinition(TemplateDefinition $templateDefinition) public function setTemplate(TemplateDefinition $templateDefinition)
{ {
$this->templateDefinition = $templateDefinition; $this->template = $templateDefinition->getPath();
/* init template directories */ /* init template directories */
$this->setTemplateDir(array()); $this->setTemplateDir(array());
/* add main template directory */
$this->addTemplateDir($templateDefinition->getAbsolutePath(), 0);
/* define config directory */ /* define config directory */
$configDirectory = THELIA_TEMPLATE_DIR . $this->getTemplate() . '/configs'; $configDirectory = $templateDefinition->getAbsoluteConfigPath();
$this->setConfigDir($configDirectory); $this->setConfigDir($configDirectory);
/* add modules template directories */ /* add modules template directories */
$this->addTemplateDirectory( switch ($templateDefinition->getType()) {
$templateDefinition->getType(), case TemplateDefinition::FRONT_OFFICE:
$templateDefinition->getName(), /* do not pass array directly to addTemplateDir since we cant control on keys */
THELIA_TEMPLATE_DIR . $this->getTemplate(), if (isset($this->frontOfficeTemplateDirectories[$templateDefinition->getName()])) {
'0', foreach ($this->frontOfficeTemplateDirectories[$templateDefinition->getName()] as $key => $directory) {
true $this->addTemplateDir($directory, $key);
); }
}
break;
/* do not pass array directly to addTemplateDir since we cant control on keys */ case TemplateDefinition::BACK_OFFICE:
if (isset($this->templateDirectories[$templateDefinition->getType()][$templateDefinition->getName()])) { /* do not pass array directly to addTemplateDir since we cant control on keys */
foreach($this->templateDirectories[$templateDefinition->getType()][$templateDefinition->getName()] as $key => $directory) { if (isset($this->backOfficeTemplateDirectories[$templateDefinition->getName()])) {
$this->addTemplateDir($directory, $key); foreach ($this->backOfficeTemplateDirectories[$templateDefinition->getName()] as $key => $directory) {
} $this->addTemplateDir($directory, $key);
}
}
break;
case TemplateDefinition::PDF:
break;
default:
break;
} }
} }
public function getTemplateDefinition()
{
return $this->templateDefinition;
}
public function getTemplate() public function getTemplate()
{ {
return $this->templateDefinition->getPath(); return $this->template;
} }
/** /**
* Return a rendered template, either from file or ftom a string * Return a rendered template, either from file or ftom a string
* *
* @param string $resourceType either 'string' (rendering from a string) or 'file' (rendering a file) * @param string $resourceType either 'string' (rendering from a string) or 'file' (rendering a file)
* @param string $resourceContent the resource content (a text, or a template file name) * @param string $resourceContent the resource content (a text, or a template file name)
* @param array $parameters an associative array of names / value pairs * @param array $parameters an associative array of names / value pairs
* *
* @return string the rendered template text * @return string the rendered template text
*/ */
@@ -215,8 +185,8 @@ class SmartyParser extends Smarty implements ParserInterface
/** /**
* Return a rendered template file * Return a rendered template file
* *
* @param string $realTemplateName the template name (from the template directory) * @param string $realTemplateName the template name (from the template directory)
* @param array $parameters an associative array of names / value pairs * @param array $parameters an associative array of names / value pairs
* @return string the rendered template text * @return string the rendered template text
*/ */
public function render($realTemplateName, array $parameters = array()) public function render($realTemplateName, array $parameters = array())
@@ -231,8 +201,8 @@ class SmartyParser extends Smarty implements ParserInterface
/** /**
* Return a rendered template text * Return a rendered template text
* *
* @param string $templateText the template text * @param string $templateText the template text
* @param array $parameters an associative array of names / value pairs * @param array $parameters an associative array of names / value pairs
* @return string the rendered template text * @return string the rendered template text
*/ */
public function renderString($templateText, array $parameters = array()) public function renderString($templateText, array $parameters = array())
@@ -287,12 +257,12 @@ class SmartyParser extends Smarty implements ParserInterface
foreach ($plugins as $plugin) { foreach ($plugins as $plugin) {
$this->registerPlugin( $this->registerPlugin(
$plugin->getType(), $plugin->getType(),
$plugin->getName(), $plugin->getName(),
array( array(
$plugin->getClass(), $plugin->getClass(),
$plugin->getMethod() $plugin->getMethod()
) )
); );
} }
} }

View File

@@ -1,7 +1,7 @@
<?php <?php
/*************************************************************************************/ /*************************************************************************************/
/* */ /* */
/* Thelia */ /* Thelia */
/* */ /* */
/* Copyright (c) OpenStudio */ /* Copyright (c) OpenStudio */
/* email : info@thelia.net */ /* email : info@thelia.net */
@@ -17,7 +17,7 @@
/* GNU General Public License for more details. */ /* GNU General Public License for more details. */
/* */ /* */
/* You should have received a copy of the GNU General Public License */ /* You should have received a copy of the GNU General Public License */
/* along with this program. If not, see <http://www.gnu.org/licenses/>. */ /* along with this program. If not, see <http://www.gnu.org/licenses/>. */
/* */ /* */
/*************************************************************************************/ /*************************************************************************************/
@@ -35,13 +35,6 @@ class TemplateDefinition
const PDF_SUBDIR = 'pdf/'; const PDF_SUBDIR = 'pdf/';
const EMAIL_SUBDIR = 'email/'; const EMAIL_SUBDIR = 'email/';
protected static $standardTemplatesSubdirs = array(
self::FRONT_OFFICE => self::FRONT_OFFICE_SUBDIR,
self::BACK_OFFICE => self::BACK_OFFICE_SUBDIR,
self::PDF => self::PDF_SUBDIR,
self::EMAIL => self::EMAIL_SUBDIR,
);
/** /**
* @var the template directory name (e.g. 'default') * @var the template directory name (e.g. 'default')
*/ */
@@ -57,13 +50,12 @@ class TemplateDefinition
*/ */
protected $type; protected $type;
public function __construct($name, $type) public function __construct($name, $type)
{ {
$this->name = $name; $this->name = $name;
$this->type = $type; $this->type = $type;
switch($type) { switch ($type) {
case TemplateDefinition::FRONT_OFFICE: case TemplateDefinition::FRONT_OFFICE:
$this->path = self::FRONT_OFFICE_SUBDIR . $name; $this->path = self::FRONT_OFFICE_SUBDIR . $name;
break; break;
@@ -90,14 +82,17 @@ class TemplateDefinition
public function setName($name) public function setName($name)
{ {
$this->name = $name; $this->name = $name;
return $this; return $this;
} }
public function getI18nPath() { public function getI18nPath()
{
return $this->getPath() . DS . 'I18n'; return $this->getPath() . DS . 'I18n';
} }
public function getAbsoluteI18nPath() { public function getAbsoluteI18nPath()
{
return THELIA_TEMPLATE_DIR . $this->getI18nPath(); return THELIA_TEMPLATE_DIR . $this->getI18nPath();
} }
@@ -106,7 +101,8 @@ class TemplateDefinition
return $this->path; return $this->path;
} }
public function getAbsolutePath() { public function getAbsolutePath()
{
return THELIA_TEMPLATE_DIR . $this->getPath(); return THELIA_TEMPLATE_DIR . $this->getPath();
} }
@@ -115,13 +111,15 @@ class TemplateDefinition
return $this->getPath() . DS . 'configs'; return $this->getPath() . DS . 'configs';
} }
public function getAbsoluteConfigPath() { public function getAbsoluteConfigPath()
{
return THELIA_TEMPLATE_DIR . $this->getConfigPath(); return THELIA_TEMPLATE_DIR . $this->getConfigPath();
} }
public function setPath($path) public function setPath($path)
{ {
$this->path = $path; $this->path = $path;
return $this; return $this;
} }
@@ -133,13 +131,7 @@ class TemplateDefinition
public function setType($type) public function setType($type)
{ {
$this->type = $type; $this->type = $type;
return $this; return $this;
} }
/**
* Returns an iterator on the standard templates subdir names
*/
public static function getStandardTemplatesSubdirsIterator() {
return new \ArrayIterator(self::$standardTemplatesSubdirs);
}
} }

View File

@@ -40,16 +40,17 @@ class TemplateHelper
private function __construct() {} private function __construct() {}
public static function getInstance() { public static function getInstance()
{
if (self::$instance == null) self::$instance = new TemplateHelper(); if (self::$instance == null) self::$instance = new TemplateHelper();
return self::$instance; return self::$instance;
} }
/** /**
* @return TemplateDefinition * @return TemplateDefinition
*/ */
public function getActiveMailTemplate() { public function getActiveMailTemplate()
{
return new TemplateDefinition( return new TemplateDefinition(
ConfigQuery::read('active-mail-template', 'default'), ConfigQuery::read('active-mail-template', 'default'),
TemplateDefinition::EMAIL TemplateDefinition::EMAIL
@@ -59,7 +60,8 @@ class TemplateHelper
/** /**
* @return TemplateDefinition * @return TemplateDefinition
*/ */
public function getActivePdfTemplate() { public function getActivePdfTemplate()
{
return new TemplateDefinition( return new TemplateDefinition(
ConfigQuery::read('active-pdf-template', 'default'), ConfigQuery::read('active-pdf-template', 'default'),
TemplateDefinition::PDF TemplateDefinition::PDF
@@ -69,7 +71,8 @@ class TemplateHelper
/** /**
* @return TemplateDefinition * @return TemplateDefinition
*/ */
public function getActiveAdminTemplate() { public function getActiveAdminTemplate()
{
return new TemplateDefinition( return new TemplateDefinition(
ConfigQuery::read('active-admin-template', 'default'), ConfigQuery::read('active-admin-template', 'default'),
TemplateDefinition::BACK_OFFICE TemplateDefinition::BACK_OFFICE
@@ -79,13 +82,15 @@ class TemplateHelper
/** /**
* @return TemplateDefinition * @return TemplateDefinition
*/ */
public function getActiveFrontTemplate() { public function getActiveFrontTemplate()
{
return new TemplateDefinition( return new TemplateDefinition(
ConfigQuery::read('active-front-template', 'default'), ConfigQuery::read('active-front-template', 'default'),
TemplateDefinition::FRONT_OFFICE TemplateDefinition::FRONT_OFFICE
); );
} }
<<<<<<< HEAD
/** /**
* Returns an array which contains all standard template definitions * Returns an array which contains all standard template definitions
*/ */
@@ -109,6 +114,18 @@ class TemplateHelper
$list = $exclude = array(); $list = $exclude = array();
$tplIterator = TemplateDefinition::getStandardTemplatesSubdirsIterator(); $tplIterator = TemplateDefinition::getStandardTemplatesSubdirsIterator();
=======
public function getList($templateType)
{
$list = $exclude = array();
if ($templateType == TemplateDefinition::BACK_OFFICE) {
$baseDir = THELIA_TEMPLATE_DIR.TemplateDefinition::BACK_OFFICE_SUBDIR;
} elseif ($templateType == TemplateDefinition::PDF) {
$baseDir = THELIA_TEMPLATE_DIR.TemplateDefinition::PDF_SUBDIR;
} else {
$baseDir = THELIA_TEMPLATE_DIR.TemplateDefinition::FRONT_OFFICE_SUBDIR;
>>>>>>> cleanmaster
foreach($tplIterator as $type => $subdir) { foreach($tplIterator as $type => $subdir) {
@@ -134,7 +151,6 @@ class TemplateHelper
} }
} }
protected function normalize_path($path) protected function normalize_path($path)
{ {
$path = str_replace( $path = str_replace(
@@ -155,28 +171,27 @@ class TemplateHelper
* 'translation' => the text translation, or an empty string if none available. * 'translation' => the text translation, or an empty string if none available.
* 'dollar' => true if the translatable text contains a $ * 'dollar' => true if the translatable text contains a $
* *
* @param string $directory the path to the directory to examine * @param string $directory the path to the directory to examine
* @param string $walkMode type of file scanning: WALK_MODE_PHP or WALK_MODE_TEMPLATE * @param string $walkMode type of file scanning: WALK_MODE_PHP or WALK_MODE_TEMPLATE
* @param \Thelia\Core\Translation\Translator $translator the current translator * @param \Thelia\Core\Translation\Translator $translator the current translator
* @param string $currentLocale the current locale * @param string $currentLocale the current locale
* @param array $strings the list of strings * @param array $strings the list of strings
* @throws \InvalidArgumentException if $walkMode contains an invalid value * @throws \InvalidArgumentException if $walkMode contains an invalid value
* @return number the total number of translatable texts * @return number the total number of translatable texts
*/ */
public function walkDir($directory, $walkMode, Translator $translator, $currentLocale, &$strings) { public function walkDir($directory, $walkMode, Translator $translator, $currentLocale, &$strings)
{
$num_texts = 0; $num_texts = 0;
if ($walkMode == self::WALK_MODE_PHP) { if ($walkMode == self::WALK_MODE_PHP) {
$prefix = '\-\>[\s]*trans[\s]*\('; $prefix = '\-\>[\s]*trans[\s]*\(';
$allowed_exts = array('php'); $allowed_exts = array('php');
} else if ($walkMode == self::WALK_MODE_TEMPLATE) { } elseif ($walkMode == self::WALK_MODE_TEMPLATE) {
$prefix = '\{intl[\s]l='; $prefix = '\{intl[\s]l=';
$allowed_exts = array('html', 'tpl', 'xml'); $allowed_exts = array('html', 'tpl', 'xml');
} } else {
else {
throw new \InvalidArgumentException( throw new \InvalidArgumentException(
Translator::getInstance()->trans('Invalid value for walkMode parameter: %value', array('%value' => $walkMode)) Translator::getInstance()->trans('Invalid value for walkMode parameter: %value', array('%value' => $walkMode))
); );
@@ -210,18 +225,15 @@ class TemplateHelper
Tlog::getInstance()->debug("Strings found: ", $matches[2]); Tlog::getInstance()->debug("Strings found: ", $matches[2]);
foreach($matches[2] as $match) { foreach ($matches[2] as $match) {
$hash = md5($match); $hash = md5($match);
if (isset($strings[$hash])) if (isset($strings[$hash])) {
{ if (! in_array($short_path, $strings[$hash]['files'])) {
if (! in_array($short_path, $strings[$hash]['files']))
{
$strings[$hash]['files'][] = $short_path; $strings[$hash]['files'][] = $short_path;
} }
} } else {
else {
$num_texts++; $num_texts++;
// remove \' // remove \'
@@ -273,9 +285,7 @@ class TemplateHelper
fwrite($fp, ");\n"); fwrite($fp, ");\n");
@fclose($fp); @fclose($fp);
} } else {
else
{
throw new \RuntimeException( throw new \RuntimeException(
Translator::getInstance()->trans( Translator::getInstance()->trans(
'Failed to open translation file %file. Please be sure that this file is writable by your Web server', 'Failed to open translation file %file. Please be sure that this file is writable by your Web server',

View File

@@ -49,7 +49,6 @@ use Thelia\Config\DefinePropel;
use Thelia\Core\Template\TemplateDefinition; use Thelia\Core\Template\TemplateDefinition;
use Thelia\Core\TheliaContainerBuilder; use Thelia\Core\TheliaContainerBuilder;
use Thelia\Core\DependencyInjection\Loader\XmlFileLoader; use Thelia\Core\DependencyInjection\Loader\XmlFileLoader;
use Thelia\Model\ConfigQuery;
use Symfony\Component\Config\FileLocator; use Symfony\Component\Config\FileLocator;
use Propel\Runtime\Propel; use Propel\Runtime\Propel;
@@ -176,7 +175,7 @@ class Thelia extends Kernel
->depth(0) ->depth(0)
->in(THELIA_ROOT . "/core/lib/Thelia/Config/Resources"); ->in(THELIA_ROOT . "/core/lib/Thelia/Config/Resources");
foreach($finder as $file) { foreach ($finder as $file) {
$loader->load($file->getBaseName()); $loader->load($file->getBaseName());
} }
@@ -198,6 +197,11 @@ class Thelia extends Kernel
$definition $definition
); );
<<<<<<< HEAD
=======
$code = ucfirst($module->getCode());
>>>>>>> cleanmaster
$loader = new XmlFileLoader($container, new FileLocator($module->getAbsoluteConfigPath())); $loader = new XmlFileLoader($container, new FileLocator($module->getAbsoluteConfigPath()));
$loader->load("config.xml"); $loader->load("config.xml");

View File

@@ -215,7 +215,7 @@ class TheliaHttpKernel extends HttpKernel
protected function initSession(Request $request) protected function initSession(Request $request)
{ {
if(null === self::$session) { if (null === self::$session) {
$storage = new Session\Storage\NativeSessionStorage(); $storage = new Session\Storage\NativeSessionStorage();
if (Model\ConfigQuery::read("session_config.default")) { if (Model\ConfigQuery::read("session_config.default")) {

View File

@@ -40,7 +40,7 @@ class Translator extends BaseTranslator
public function getLocale() public function getLocale()
{ {
if($this->container->isScopeActive('request') && $this->container->has('request')) { if ($this->container->isScopeActive('request') && $this->container->has('request')) {
return $this->container->get('request')->getSession()->getLang()->getLocale(); return $this->container->get('request')->getSession()->getLang()->getLocale();
} }

View File

@@ -78,15 +78,8 @@ class CouponManager
if (count($this->coupons) > 0) { if (count($this->coupons) > 0) {
$couponsKept = $this->sortCoupons($this->coupons); $couponsKept = $this->sortCoupons($this->coupons);
$isRemovingPostage = $this->isCouponRemovingPostage($couponsKept);
$discount = $this->getEffect($couponsKept); $discount = $this->getEffect($couponsKept);
if ($isRemovingPostage) {
$postage = $this->facade->getCheckoutPostagePrice();
$discount += $postage;
}
// Just In Case test // Just In Case test
$checkoutTotalPrice = $this->facade->getCartTotalPrice(); $checkoutTotalPrice = $this->facade->getCartTotalPrice();
if ($discount >= $checkoutTotalPrice) { if ($discount >= $checkoutTotalPrice) {
@@ -99,23 +92,24 @@ class CouponManager
/** /**
* Check if there is a Coupon removing Postage * Check if there is a Coupon removing Postage
*
* @param array $couponsKept Array of CouponInterface sorted
*
* @return bool * @return bool
*/ */
protected function isCouponRemovingPostage(array $couponsKept) public function isCouponRemovingPostage()
{ {
$isRemovingPostage = false; if (count($this->coupons) == 0) {
return false;
}
$couponsKept = $this->sortCoupons($this->coupons);
/** @var CouponInterface $coupon */ /** @var CouponInterface $coupon */
foreach ($couponsKept as $coupon) { foreach ($couponsKept as $coupon) {
if ($coupon->isRemovingPostage()) { if ($coupon->isRemovingPostage()) {
$isRemovingPostage = true; return true;
} }
} }
return $isRemovingPostage; return false;
} }
/** /**

View File

@@ -23,7 +23,6 @@
namespace Thelia\Form; namespace Thelia\Form;
use Symfony\Component\Validator\ExecutionContextInterface; use Symfony\Component\Validator\ExecutionContextInterface;
use Thelia\Core\Translation\Translator;
use Thelia\Model\CustomerQuery; use Thelia\Model\CustomerQuery;
/** /**

View File

@@ -23,7 +23,6 @@
namespace Thelia\Form; namespace Thelia\Form;
use Symfony\Component\Validator\Constraints; use Symfony\Component\Validator\Constraints;
use Symfony\Component\Validator\Constraints\NotBlank;
use Symfony\Component\Validator\ExecutionContextInterface; use Symfony\Component\Validator\ExecutionContextInterface;
use Thelia\Core\Translation\Translator; use Thelia\Core\Translation\Translator;
use Thelia\Model\ProfileQuery; use Thelia\Model\ProfileQuery;

View File

@@ -23,7 +23,6 @@
namespace Thelia\Form; namespace Thelia\Form;
use Symfony\Component\Validator\Constraints\GreaterThan; use Symfony\Component\Validator\Constraints\GreaterThan;
use Symfony\Component\Validator\Constraints\NotBlank;
use Thelia\Model\Currency; use Thelia\Model\Currency;
use Thelia\Core\Translation\Translator; use Thelia\Core\Translation\Translator;

View File

@@ -25,7 +25,6 @@ namespace Thelia\Form;
use Symfony\Component\Validator\Constraints\GreaterThan; use Symfony\Component\Validator\Constraints\GreaterThan;
use Thelia\Core\Translation\Translator; use Thelia\Core\Translation\Translator;
class ProductModificationForm extends ProductCreationForm class ProductModificationForm extends ProductCreationForm
{ {
use StandardDescriptionFieldsTrait; use StandardDescriptionFieldsTrait;

View File

@@ -35,7 +35,7 @@ trait SeoFieldsTrait
/** /**
* Add seo meta title, meta description and meta keywords fields * Add seo meta title, meta description and meta keywords fields
* *
* @param array $exclude name of the fields that should not be added to the form * @param array $exclude name of the fields that should not be added to the form
*/ */
protected function addSeoFields($exclude = array()) protected function addSeoFields($exclude = array())
{ {

View File

@@ -23,8 +23,6 @@
namespace Thelia\Form; namespace Thelia\Form;
use Symfony\Component\Validator\Constraints; use Symfony\Component\Validator\Constraints;
use Thelia\Model\ConfigQuery;
use Symfony\Component\Validator\ExecutionContextInterface;
use Thelia\Log\Tlog; use Thelia\Log\Tlog;
use Thelia\Core\Translation\Translator; use Thelia\Core\Translation\Translator;

View File

@@ -58,7 +58,7 @@ class CheckPermission extends BaseInstall
/** @var array Minimum server configuration necessary */ /** @var array Minimum server configuration necessary */
protected $minServerConfigurationNecessary = array( protected $minServerConfigurationNecessary = array(
'memory_limit' => 157286400, 'memory_limit' => 134217728,
'post_max_size' => 20971520, 'post_max_size' => 20971520,
'upload_max_filesize' => 2097152 'upload_max_filesize' => 2097152
); );

View File

@@ -25,27 +25,29 @@ namespace Thelia\Log\Destination;
use Thelia\Log\AbstractTlogDestination; use Thelia\Log\AbstractTlogDestination;
class TlogDestinationJavascriptConsole extends AbstractTlogDestination { class TlogDestinationJavascriptConsole extends AbstractTlogDestination
{
public function getTitle()
{
return "Browser's Javascript console";
}
public function getTitle() { public function getDescription()
return "Browser's Javascript console"; {
} return "The Thelia logs are displayed in your browser's Javascript console.";
}
public function getDescription() { public function write(&$res)
return "The Thelia logs are displayed in your browser's Javascript console."; {
} $content = '<script>try {'."\n";
public function write(&$res) { foreach ($this->_logs as $line) {
$content .= "console.log('".str_replace("'", "\\'", str_replace(array("\r\n", "\r", "\n"), '\\n', $line))."');\n";
}
$content = '<script>try {'."\n"; $content .= '} catch (ex) { alert("Les logs Thelia ne peuvent être affichés dans la console javascript:" + ex); }</script>'."\n";
foreach($this->_logs as $line) { if (preg_match("|</body>|i", $res))
$content .= "console.log('".str_replace("'", "\\'", str_replace(array("\r\n", "\r", "\n"), '\\n', $line))."');\n"; $res = preg_replace("|</body>|i", "$content</html>", $res);
}
$content .= '} catch(ex) { alert("Les logs Thelia ne peuvent être affichés dans la console javascript:" + ex); }</script>'."\n";
if (preg_match("|</body>|i", $res))
$res = preg_replace("|</body>|i", "$content</html>", $res);
} }
} }

View File

@@ -26,86 +26,88 @@ namespace Thelia\Log\Destination;
use Thelia\Log\AbstractTlogDestination; use Thelia\Log\AbstractTlogDestination;
use Thelia\Log\TlogDestinationConfig; use Thelia\Log\TlogDestinationConfig;
class TlogDestinationPopup extends AbstractTlogDestination { class TlogDestinationPopup extends AbstractTlogDestination
{
// Nom des variables de configuration
// ----------------------------------
const VAR_POPUP_WIDTH = "tlog_destinationpopup_width";
const VALEUR_POPUP_WIDTH_DEFAUT = "600";
// Nom des variables de configuration const VAR_POPUP_HEIGHT = "tlog_destinationpopup_height";
// ---------------------------------- const VALEUR_POPUP_HEIGHT_DEFAUT = "600";
const VAR_POPUP_WIDTH = "tlog_destinationpopup_width";
const VALEUR_POPUP_WIDTH_DEFAUT = "600";
const VAR_POPUP_HEIGHT = "tlog_destinationpopup_height"; const VAR_POPUP_TPL = "tlog_destinationpopup_template";
const VALEUR_POPUP_HEIGHT_DEFAUT = "600"; // Ce fichier doit se trouver dans le même répertoire que TlogDestinationPopup.class.php
const VALEUR_POPUP_TPL_DEFAUT = "TlogDestinationPopup.tpl";
const VAR_POPUP_TPL = "tlog_destinationpopup_template"; public function getTitle()
// Ce fichier doit se trouver dans le même répertoire que TlogDestinationPopup.class.php {
const VALEUR_POPUP_TPL_DEFAUT = "TlogDestinationPopup.tpl"; return "Javascript popup window";
}
public function getTitle() { public function getDescription()
return "Javascript popup window"; {
} return "Display logs in a popup window, separate from the main window .";
}
public function getDescription() { public function getConfigs()
return "Display logs in a popup window, separate from the main window ."; {
} return array(
new TlogDestinationConfig(
self::VAR_POPUP_TPL,
"Popup windows template",
"Put #LOGTEXT in the template text where you want to display logs..",
file_get_contents(__DIR__.DS. self::VALEUR_POPUP_TPL_DEFAUT),
TlogDestinationConfig::TYPE_TEXTAREA
),
new TlogDestinationConfig(
self::VAR_POPUP_HEIGHT,
"Height of the popup window",
"In pixels",
self::VALEUR_POPUP_HEIGHT_DEFAUT,
TlogDestinationConfig::TYPE_TEXTFIELD
),
new TlogDestinationConfig(
self::VAR_POPUP_WIDTH,
"Width of the popup window",
"In pixels",
self::VALEUR_POPUP_WIDTH_DEFAUT,
TlogDestinationConfig::TYPE_TEXTFIELD
)
);
}
public function getConfigs() { public function write(&$res)
return array( {
new TlogDestinationConfig( $content = ""; $count = 1;
self::VAR_POPUP_TPL,
"Popup windows template",
"Put #LOGTEXT in the template text where you want to display logs..",
file_get_contents(__DIR__.DS. self::VALEUR_POPUP_TPL_DEFAUT),
TlogDestinationConfig::TYPE_TEXTAREA
),
new TlogDestinationConfig(
self::VAR_POPUP_HEIGHT,
"Height of the popup window",
"In pixels",
self::VALEUR_POPUP_HEIGHT_DEFAUT,
TlogDestinationConfig::TYPE_TEXTFIELD
),
new TlogDestinationConfig(
self::VAR_POPUP_WIDTH,
"Width of the popup window",
"In pixels",
self::VALEUR_POPUP_WIDTH_DEFAUT,
TlogDestinationConfig::TYPE_TEXTFIELD
)
);
}
public function write(&$res) { foreach ($this->_logs as $line) {
$content .= "<div class=\"".($count++ % 2 ? "paire" : "impaire")."\">".htmlspecialchars($line)."</div>";
}
$content = ""; $count = 1; $tpl = $this->getConfig(self::VAR_POPUP_TPL);
foreach($this->_logs as $line) { $tpl = str_replace('#LOGTEXT', $content, $tpl);
$content .= "<div class=\"".($count++ % 2 ? "paire" : "impaire")."\">".htmlspecialchars($line)."</div>"; $tpl = str_replace(array("\r\n", "\r", "\n"), '\\n', $tpl);
}
$tpl = $this->getConfig(self::VAR_POPUP_TPL); $wop = sprintf('
<script>
_thelia_console = window.open("","thelia_console","width=%s,height=%s,resizable,scrollbars=yes");
if (_thelia_console == null) {
alert("The log popup window could not be opened. Please disable your popup blocker for this site.");
} else {
_thelia_console.document.write("%s");
_thelia_console.document.close();
}
</script>',
$this->getConfig(self::VAR_POPUP_WIDTH),
$this->getConfig(self::VAR_POPUP_HEIGHT),
str_replace('"', '\\"', $tpl)
);
$tpl = str_replace('#LOGTEXT', $content, $tpl); if (preg_match("|</body>|i", $res))
$tpl = str_replace(array("\r\n", "\r", "\n"), '\\n', $tpl); $res = preg_replace("|</body>|i", "$wop\n</body>", $res);
else
$wop = sprintf(' $res .= $wop;
<script>
_thelia_console = window.open("","thelia_console","width=%s,height=%s,resizable,scrollbars=yes");
if (_thelia_console == null) {
alert("The log popup window could not be opened. Please disable your popup blocker for this site.");
}
else {
_thelia_console.document.write("%s");
_thelia_console.document.close();
}
</script>',
$this->getConfig(self::VAR_POPUP_WIDTH),
$this->getConfig(self::VAR_POPUP_HEIGHT),
str_replace('"', '\\"', $tpl)
);
if (preg_match("|</body>|i", $res))
$res = preg_replace("|</body>|i", "$wop\n</body>", $res);
else
$res .= $wop;
} }
} }

View File

@@ -171,7 +171,8 @@ class Tlog Implements LoggerInterface
* *
* @return array of directories * @return array of directories
*/ */
public function getDestinationsDirectories() { public function getDestinationsDirectories()
{
return $this->dir_destinations; return $this->dir_destinations;
} }

View File

@@ -22,7 +22,6 @@
/*************************************************************************************/ /*************************************************************************************/
namespace Thelia\Log; namespace Thelia\Log;
use Thelia\Model\Config;
use Thelia\Model\ConfigQuery; use Thelia\Model\ConfigQuery;
class TlogDestinationConfig class TlogDestinationConfig

View File

@@ -902,26 +902,26 @@ abstract class Accessory implements ActiveRecordInterface
// check the columns in natural order for more readable SQL queries // check the columns in natural order for more readable SQL queries
if ($this->isColumnModified(AccessoryTableMap::ID)) { if ($this->isColumnModified(AccessoryTableMap::ID)) {
$modifiedColumns[':p' . $index++] = 'ID'; $modifiedColumns[':p' . $index++] = '`ID`';
} }
if ($this->isColumnModified(AccessoryTableMap::PRODUCT_ID)) { if ($this->isColumnModified(AccessoryTableMap::PRODUCT_ID)) {
$modifiedColumns[':p' . $index++] = 'PRODUCT_ID'; $modifiedColumns[':p' . $index++] = '`PRODUCT_ID`';
} }
if ($this->isColumnModified(AccessoryTableMap::ACCESSORY)) { if ($this->isColumnModified(AccessoryTableMap::ACCESSORY)) {
$modifiedColumns[':p' . $index++] = 'ACCESSORY'; $modifiedColumns[':p' . $index++] = '`ACCESSORY`';
} }
if ($this->isColumnModified(AccessoryTableMap::POSITION)) { if ($this->isColumnModified(AccessoryTableMap::POSITION)) {
$modifiedColumns[':p' . $index++] = 'POSITION'; $modifiedColumns[':p' . $index++] = '`POSITION`';
} }
if ($this->isColumnModified(AccessoryTableMap::CREATED_AT)) { if ($this->isColumnModified(AccessoryTableMap::CREATED_AT)) {
$modifiedColumns[':p' . $index++] = 'CREATED_AT'; $modifiedColumns[':p' . $index++] = '`CREATED_AT`';
} }
if ($this->isColumnModified(AccessoryTableMap::UPDATED_AT)) { if ($this->isColumnModified(AccessoryTableMap::UPDATED_AT)) {
$modifiedColumns[':p' . $index++] = 'UPDATED_AT'; $modifiedColumns[':p' . $index++] = '`UPDATED_AT`';
} }
$sql = sprintf( $sql = sprintf(
'INSERT INTO accessory (%s) VALUES (%s)', 'INSERT INTO `accessory` (%s) VALUES (%s)',
implode(', ', $modifiedColumns), implode(', ', $modifiedColumns),
implode(', ', array_keys($modifiedColumns)) implode(', ', array_keys($modifiedColumns))
); );
@@ -930,22 +930,22 @@ abstract class Accessory implements ActiveRecordInterface
$stmt = $con->prepare($sql); $stmt = $con->prepare($sql);
foreach ($modifiedColumns as $identifier => $columnName) { foreach ($modifiedColumns as $identifier => $columnName) {
switch ($columnName) { switch ($columnName) {
case 'ID': case '`ID`':
$stmt->bindValue($identifier, $this->id, PDO::PARAM_INT); $stmt->bindValue($identifier, $this->id, PDO::PARAM_INT);
break; break;
case 'PRODUCT_ID': case '`PRODUCT_ID`':
$stmt->bindValue($identifier, $this->product_id, PDO::PARAM_INT); $stmt->bindValue($identifier, $this->product_id, PDO::PARAM_INT);
break; break;
case 'ACCESSORY': case '`ACCESSORY`':
$stmt->bindValue($identifier, $this->accessory, PDO::PARAM_INT); $stmt->bindValue($identifier, $this->accessory, PDO::PARAM_INT);
break; break;
case 'POSITION': case '`POSITION`':
$stmt->bindValue($identifier, $this->position, PDO::PARAM_INT); $stmt->bindValue($identifier, $this->position, PDO::PARAM_INT);
break; break;
case 'CREATED_AT': case '`CREATED_AT`':
$stmt->bindValue($identifier, $this->created_at ? $this->created_at->format("Y-m-d H:i:s") : null, PDO::PARAM_STR); $stmt->bindValue($identifier, $this->created_at ? $this->created_at->format("Y-m-d H:i:s") : null, PDO::PARAM_STR);
break; break;
case 'UPDATED_AT': case '`UPDATED_AT`':
$stmt->bindValue($identifier, $this->updated_at ? $this->updated_at->format("Y-m-d H:i:s") : null, PDO::PARAM_STR); $stmt->bindValue($identifier, $this->updated_at ? $this->updated_at->format("Y-m-d H:i:s") : null, PDO::PARAM_STR);
break; break;
} }

View File

@@ -151,7 +151,7 @@ abstract class AccessoryQuery extends ModelCriteria
*/ */
protected function findPkSimple($key, $con) protected function findPkSimple($key, $con)
{ {
$sql = 'SELECT ID, PRODUCT_ID, ACCESSORY, POSITION, CREATED_AT, UPDATED_AT FROM accessory WHERE ID = :p0'; $sql = 'SELECT `ID`, `PRODUCT_ID`, `ACCESSORY`, `POSITION`, `CREATED_AT`, `UPDATED_AT` FROM `accessory` WHERE `ID` = :p0';
try { try {
$stmt = $con->prepare($sql); $stmt = $con->prepare($sql);
$stmt->bindValue(':p0', $key, PDO::PARAM_INT); $stmt->bindValue(':p0', $key, PDO::PARAM_INT);

View File

@@ -1503,62 +1503,62 @@ abstract class Address implements ActiveRecordInterface
// check the columns in natural order for more readable SQL queries // check the columns in natural order for more readable SQL queries
if ($this->isColumnModified(AddressTableMap::ID)) { if ($this->isColumnModified(AddressTableMap::ID)) {
$modifiedColumns[':p' . $index++] = 'ID'; $modifiedColumns[':p' . $index++] = '`ID`';
} }
if ($this->isColumnModified(AddressTableMap::LABEL)) { if ($this->isColumnModified(AddressTableMap::LABEL)) {
$modifiedColumns[':p' . $index++] = 'LABEL'; $modifiedColumns[':p' . $index++] = '`LABEL`';
} }
if ($this->isColumnModified(AddressTableMap::CUSTOMER_ID)) { if ($this->isColumnModified(AddressTableMap::CUSTOMER_ID)) {
$modifiedColumns[':p' . $index++] = 'CUSTOMER_ID'; $modifiedColumns[':p' . $index++] = '`CUSTOMER_ID`';
} }
if ($this->isColumnModified(AddressTableMap::TITLE_ID)) { if ($this->isColumnModified(AddressTableMap::TITLE_ID)) {
$modifiedColumns[':p' . $index++] = 'TITLE_ID'; $modifiedColumns[':p' . $index++] = '`TITLE_ID`';
} }
if ($this->isColumnModified(AddressTableMap::COMPANY)) { if ($this->isColumnModified(AddressTableMap::COMPANY)) {
$modifiedColumns[':p' . $index++] = 'COMPANY'; $modifiedColumns[':p' . $index++] = '`COMPANY`';
} }
if ($this->isColumnModified(AddressTableMap::FIRSTNAME)) { if ($this->isColumnModified(AddressTableMap::FIRSTNAME)) {
$modifiedColumns[':p' . $index++] = 'FIRSTNAME'; $modifiedColumns[':p' . $index++] = '`FIRSTNAME`';
} }
if ($this->isColumnModified(AddressTableMap::LASTNAME)) { if ($this->isColumnModified(AddressTableMap::LASTNAME)) {
$modifiedColumns[':p' . $index++] = 'LASTNAME'; $modifiedColumns[':p' . $index++] = '`LASTNAME`';
} }
if ($this->isColumnModified(AddressTableMap::ADDRESS1)) { if ($this->isColumnModified(AddressTableMap::ADDRESS1)) {
$modifiedColumns[':p' . $index++] = 'ADDRESS1'; $modifiedColumns[':p' . $index++] = '`ADDRESS1`';
} }
if ($this->isColumnModified(AddressTableMap::ADDRESS2)) { if ($this->isColumnModified(AddressTableMap::ADDRESS2)) {
$modifiedColumns[':p' . $index++] = 'ADDRESS2'; $modifiedColumns[':p' . $index++] = '`ADDRESS2`';
} }
if ($this->isColumnModified(AddressTableMap::ADDRESS3)) { if ($this->isColumnModified(AddressTableMap::ADDRESS3)) {
$modifiedColumns[':p' . $index++] = 'ADDRESS3'; $modifiedColumns[':p' . $index++] = '`ADDRESS3`';
} }
if ($this->isColumnModified(AddressTableMap::ZIPCODE)) { if ($this->isColumnModified(AddressTableMap::ZIPCODE)) {
$modifiedColumns[':p' . $index++] = 'ZIPCODE'; $modifiedColumns[':p' . $index++] = '`ZIPCODE`';
} }
if ($this->isColumnModified(AddressTableMap::CITY)) { if ($this->isColumnModified(AddressTableMap::CITY)) {
$modifiedColumns[':p' . $index++] = 'CITY'; $modifiedColumns[':p' . $index++] = '`CITY`';
} }
if ($this->isColumnModified(AddressTableMap::COUNTRY_ID)) { if ($this->isColumnModified(AddressTableMap::COUNTRY_ID)) {
$modifiedColumns[':p' . $index++] = 'COUNTRY_ID'; $modifiedColumns[':p' . $index++] = '`COUNTRY_ID`';
} }
if ($this->isColumnModified(AddressTableMap::PHONE)) { if ($this->isColumnModified(AddressTableMap::PHONE)) {
$modifiedColumns[':p' . $index++] = 'PHONE'; $modifiedColumns[':p' . $index++] = '`PHONE`';
} }
if ($this->isColumnModified(AddressTableMap::CELLPHONE)) { if ($this->isColumnModified(AddressTableMap::CELLPHONE)) {
$modifiedColumns[':p' . $index++] = 'CELLPHONE'; $modifiedColumns[':p' . $index++] = '`CELLPHONE`';
} }
if ($this->isColumnModified(AddressTableMap::IS_DEFAULT)) { if ($this->isColumnModified(AddressTableMap::IS_DEFAULT)) {
$modifiedColumns[':p' . $index++] = 'IS_DEFAULT'; $modifiedColumns[':p' . $index++] = '`IS_DEFAULT`';
} }
if ($this->isColumnModified(AddressTableMap::CREATED_AT)) { if ($this->isColumnModified(AddressTableMap::CREATED_AT)) {
$modifiedColumns[':p' . $index++] = 'CREATED_AT'; $modifiedColumns[':p' . $index++] = '`CREATED_AT`';
} }
if ($this->isColumnModified(AddressTableMap::UPDATED_AT)) { if ($this->isColumnModified(AddressTableMap::UPDATED_AT)) {
$modifiedColumns[':p' . $index++] = 'UPDATED_AT'; $modifiedColumns[':p' . $index++] = '`UPDATED_AT`';
} }
$sql = sprintf( $sql = sprintf(
'INSERT INTO address (%s) VALUES (%s)', 'INSERT INTO `address` (%s) VALUES (%s)',
implode(', ', $modifiedColumns), implode(', ', $modifiedColumns),
implode(', ', array_keys($modifiedColumns)) implode(', ', array_keys($modifiedColumns))
); );
@@ -1567,58 +1567,58 @@ abstract class Address implements ActiveRecordInterface
$stmt = $con->prepare($sql); $stmt = $con->prepare($sql);
foreach ($modifiedColumns as $identifier => $columnName) { foreach ($modifiedColumns as $identifier => $columnName) {
switch ($columnName) { switch ($columnName) {
case 'ID': case '`ID`':
$stmt->bindValue($identifier, $this->id, PDO::PARAM_INT); $stmt->bindValue($identifier, $this->id, PDO::PARAM_INT);
break; break;
case 'LABEL': case '`LABEL`':
$stmt->bindValue($identifier, $this->label, PDO::PARAM_STR); $stmt->bindValue($identifier, $this->label, PDO::PARAM_STR);
break; break;
case 'CUSTOMER_ID': case '`CUSTOMER_ID`':
$stmt->bindValue($identifier, $this->customer_id, PDO::PARAM_INT); $stmt->bindValue($identifier, $this->customer_id, PDO::PARAM_INT);
break; break;
case 'TITLE_ID': case '`TITLE_ID`':
$stmt->bindValue($identifier, $this->title_id, PDO::PARAM_INT); $stmt->bindValue($identifier, $this->title_id, PDO::PARAM_INT);
break; break;
case 'COMPANY': case '`COMPANY`':
$stmt->bindValue($identifier, $this->company, PDO::PARAM_STR); $stmt->bindValue($identifier, $this->company, PDO::PARAM_STR);
break; break;
case 'FIRSTNAME': case '`FIRSTNAME`':
$stmt->bindValue($identifier, $this->firstname, PDO::PARAM_STR); $stmt->bindValue($identifier, $this->firstname, PDO::PARAM_STR);
break; break;
case 'LASTNAME': case '`LASTNAME`':
$stmt->bindValue($identifier, $this->lastname, PDO::PARAM_STR); $stmt->bindValue($identifier, $this->lastname, PDO::PARAM_STR);
break; break;
case 'ADDRESS1': case '`ADDRESS1`':
$stmt->bindValue($identifier, $this->address1, PDO::PARAM_STR); $stmt->bindValue($identifier, $this->address1, PDO::PARAM_STR);
break; break;
case 'ADDRESS2': case '`ADDRESS2`':
$stmt->bindValue($identifier, $this->address2, PDO::PARAM_STR); $stmt->bindValue($identifier, $this->address2, PDO::PARAM_STR);
break; break;
case 'ADDRESS3': case '`ADDRESS3`':
$stmt->bindValue($identifier, $this->address3, PDO::PARAM_STR); $stmt->bindValue($identifier, $this->address3, PDO::PARAM_STR);
break; break;
case 'ZIPCODE': case '`ZIPCODE`':
$stmt->bindValue($identifier, $this->zipcode, PDO::PARAM_STR); $stmt->bindValue($identifier, $this->zipcode, PDO::PARAM_STR);
break; break;
case 'CITY': case '`CITY`':
$stmt->bindValue($identifier, $this->city, PDO::PARAM_STR); $stmt->bindValue($identifier, $this->city, PDO::PARAM_STR);
break; break;
case 'COUNTRY_ID': case '`COUNTRY_ID`':
$stmt->bindValue($identifier, $this->country_id, PDO::PARAM_INT); $stmt->bindValue($identifier, $this->country_id, PDO::PARAM_INT);
break; break;
case 'PHONE': case '`PHONE`':
$stmt->bindValue($identifier, $this->phone, PDO::PARAM_STR); $stmt->bindValue($identifier, $this->phone, PDO::PARAM_STR);
break; break;
case 'CELLPHONE': case '`CELLPHONE`':
$stmt->bindValue($identifier, $this->cellphone, PDO::PARAM_STR); $stmt->bindValue($identifier, $this->cellphone, PDO::PARAM_STR);
break; break;
case 'IS_DEFAULT': case '`IS_DEFAULT`':
$stmt->bindValue($identifier, $this->is_default, PDO::PARAM_INT); $stmt->bindValue($identifier, $this->is_default, PDO::PARAM_INT);
break; break;
case 'CREATED_AT': case '`CREATED_AT`':
$stmt->bindValue($identifier, $this->created_at ? $this->created_at->format("Y-m-d H:i:s") : null, PDO::PARAM_STR); $stmt->bindValue($identifier, $this->created_at ? $this->created_at->format("Y-m-d H:i:s") : null, PDO::PARAM_STR);
break; break;
case 'UPDATED_AT': case '`UPDATED_AT`':
$stmt->bindValue($identifier, $this->updated_at ? $this->updated_at->format("Y-m-d H:i:s") : null, PDO::PARAM_STR); $stmt->bindValue($identifier, $this->updated_at ? $this->updated_at->format("Y-m-d H:i:s") : null, PDO::PARAM_STR);
break; break;
} }

View File

@@ -211,7 +211,7 @@ abstract class AddressQuery extends ModelCriteria
*/ */
protected function findPkSimple($key, $con) protected function findPkSimple($key, $con)
{ {
$sql = 'SELECT ID, LABEL, CUSTOMER_ID, TITLE_ID, COMPANY, FIRSTNAME, LASTNAME, ADDRESS1, ADDRESS2, ADDRESS3, ZIPCODE, CITY, COUNTRY_ID, PHONE, CELLPHONE, IS_DEFAULT, CREATED_AT, UPDATED_AT FROM address WHERE ID = :p0'; $sql = 'SELECT `ID`, `LABEL`, `CUSTOMER_ID`, `TITLE_ID`, `COMPANY`, `FIRSTNAME`, `LASTNAME`, `ADDRESS1`, `ADDRESS2`, `ADDRESS3`, `ZIPCODE`, `CITY`, `COUNTRY_ID`, `PHONE`, `CELLPHONE`, `IS_DEFAULT`, `CREATED_AT`, `UPDATED_AT` FROM `address` WHERE `ID` = :p0';
try { try {
$stmt = $con->prepare($sql); $stmt = $con->prepare($sql);
$stmt->bindValue(':p0', $key, PDO::PARAM_INT); $stmt->bindValue(':p0', $key, PDO::PARAM_INT);

View File

@@ -1128,44 +1128,44 @@ abstract class Admin implements ActiveRecordInterface
// check the columns in natural order for more readable SQL queries // check the columns in natural order for more readable SQL queries
if ($this->isColumnModified(AdminTableMap::ID)) { if ($this->isColumnModified(AdminTableMap::ID)) {
$modifiedColumns[':p' . $index++] = 'ID'; $modifiedColumns[':p' . $index++] = '`ID`';
} }
if ($this->isColumnModified(AdminTableMap::PROFILE_ID)) { if ($this->isColumnModified(AdminTableMap::PROFILE_ID)) {
$modifiedColumns[':p' . $index++] = 'PROFILE_ID'; $modifiedColumns[':p' . $index++] = '`PROFILE_ID`';
} }
if ($this->isColumnModified(AdminTableMap::FIRSTNAME)) { if ($this->isColumnModified(AdminTableMap::FIRSTNAME)) {
$modifiedColumns[':p' . $index++] = 'FIRSTNAME'; $modifiedColumns[':p' . $index++] = '`FIRSTNAME`';
} }
if ($this->isColumnModified(AdminTableMap::LASTNAME)) { if ($this->isColumnModified(AdminTableMap::LASTNAME)) {
$modifiedColumns[':p' . $index++] = 'LASTNAME'; $modifiedColumns[':p' . $index++] = '`LASTNAME`';
} }
if ($this->isColumnModified(AdminTableMap::LOGIN)) { if ($this->isColumnModified(AdminTableMap::LOGIN)) {
$modifiedColumns[':p' . $index++] = 'LOGIN'; $modifiedColumns[':p' . $index++] = '`LOGIN`';
} }
if ($this->isColumnModified(AdminTableMap::PASSWORD)) { if ($this->isColumnModified(AdminTableMap::PASSWORD)) {
$modifiedColumns[':p' . $index++] = 'PASSWORD'; $modifiedColumns[':p' . $index++] = '`PASSWORD`';
} }
if ($this->isColumnModified(AdminTableMap::ALGO)) { if ($this->isColumnModified(AdminTableMap::ALGO)) {
$modifiedColumns[':p' . $index++] = 'ALGO'; $modifiedColumns[':p' . $index++] = '`ALGO`';
} }
if ($this->isColumnModified(AdminTableMap::SALT)) { if ($this->isColumnModified(AdminTableMap::SALT)) {
$modifiedColumns[':p' . $index++] = 'SALT'; $modifiedColumns[':p' . $index++] = '`SALT`';
} }
if ($this->isColumnModified(AdminTableMap::REMEMBER_ME_TOKEN)) { if ($this->isColumnModified(AdminTableMap::REMEMBER_ME_TOKEN)) {
$modifiedColumns[':p' . $index++] = 'REMEMBER_ME_TOKEN'; $modifiedColumns[':p' . $index++] = '`REMEMBER_ME_TOKEN`';
} }
if ($this->isColumnModified(AdminTableMap::REMEMBER_ME_SERIAL)) { if ($this->isColumnModified(AdminTableMap::REMEMBER_ME_SERIAL)) {
$modifiedColumns[':p' . $index++] = 'REMEMBER_ME_SERIAL'; $modifiedColumns[':p' . $index++] = '`REMEMBER_ME_SERIAL`';
} }
if ($this->isColumnModified(AdminTableMap::CREATED_AT)) { if ($this->isColumnModified(AdminTableMap::CREATED_AT)) {
$modifiedColumns[':p' . $index++] = 'CREATED_AT'; $modifiedColumns[':p' . $index++] = '`CREATED_AT`';
} }
if ($this->isColumnModified(AdminTableMap::UPDATED_AT)) { if ($this->isColumnModified(AdminTableMap::UPDATED_AT)) {
$modifiedColumns[':p' . $index++] = 'UPDATED_AT'; $modifiedColumns[':p' . $index++] = '`UPDATED_AT`';
} }
$sql = sprintf( $sql = sprintf(
'INSERT INTO admin (%s) VALUES (%s)', 'INSERT INTO `admin` (%s) VALUES (%s)',
implode(', ', $modifiedColumns), implode(', ', $modifiedColumns),
implode(', ', array_keys($modifiedColumns)) implode(', ', array_keys($modifiedColumns))
); );
@@ -1174,40 +1174,40 @@ abstract class Admin implements ActiveRecordInterface
$stmt = $con->prepare($sql); $stmt = $con->prepare($sql);
foreach ($modifiedColumns as $identifier => $columnName) { foreach ($modifiedColumns as $identifier => $columnName) {
switch ($columnName) { switch ($columnName) {
case 'ID': case '`ID`':
$stmt->bindValue($identifier, $this->id, PDO::PARAM_INT); $stmt->bindValue($identifier, $this->id, PDO::PARAM_INT);
break; break;
case 'PROFILE_ID': case '`PROFILE_ID`':
$stmt->bindValue($identifier, $this->profile_id, PDO::PARAM_INT); $stmt->bindValue($identifier, $this->profile_id, PDO::PARAM_INT);
break; break;
case 'FIRSTNAME': case '`FIRSTNAME`':
$stmt->bindValue($identifier, $this->firstname, PDO::PARAM_STR); $stmt->bindValue($identifier, $this->firstname, PDO::PARAM_STR);
break; break;
case 'LASTNAME': case '`LASTNAME`':
$stmt->bindValue($identifier, $this->lastname, PDO::PARAM_STR); $stmt->bindValue($identifier, $this->lastname, PDO::PARAM_STR);
break; break;
case 'LOGIN': case '`LOGIN`':
$stmt->bindValue($identifier, $this->login, PDO::PARAM_STR); $stmt->bindValue($identifier, $this->login, PDO::PARAM_STR);
break; break;
case 'PASSWORD': case '`PASSWORD`':
$stmt->bindValue($identifier, $this->password, PDO::PARAM_STR); $stmt->bindValue($identifier, $this->password, PDO::PARAM_STR);
break; break;
case 'ALGO': case '`ALGO`':
$stmt->bindValue($identifier, $this->algo, PDO::PARAM_STR); $stmt->bindValue($identifier, $this->algo, PDO::PARAM_STR);
break; break;
case 'SALT': case '`SALT`':
$stmt->bindValue($identifier, $this->salt, PDO::PARAM_STR); $stmt->bindValue($identifier, $this->salt, PDO::PARAM_STR);
break; break;
case 'REMEMBER_ME_TOKEN': case '`REMEMBER_ME_TOKEN`':
$stmt->bindValue($identifier, $this->remember_me_token, PDO::PARAM_STR); $stmt->bindValue($identifier, $this->remember_me_token, PDO::PARAM_STR);
break; break;
case 'REMEMBER_ME_SERIAL': case '`REMEMBER_ME_SERIAL`':
$stmt->bindValue($identifier, $this->remember_me_serial, PDO::PARAM_STR); $stmt->bindValue($identifier, $this->remember_me_serial, PDO::PARAM_STR);
break; break;
case 'CREATED_AT': case '`CREATED_AT`':
$stmt->bindValue($identifier, $this->created_at ? $this->created_at->format("Y-m-d H:i:s") : null, PDO::PARAM_STR); $stmt->bindValue($identifier, $this->created_at ? $this->created_at->format("Y-m-d H:i:s") : null, PDO::PARAM_STR);
break; break;
case 'UPDATED_AT': case '`UPDATED_AT`':
$stmt->bindValue($identifier, $this->updated_at ? $this->updated_at->format("Y-m-d H:i:s") : null, PDO::PARAM_STR); $stmt->bindValue($identifier, $this->updated_at ? $this->updated_at->format("Y-m-d H:i:s") : null, PDO::PARAM_STR);
break; break;
} }

View File

@@ -1019,38 +1019,38 @@ abstract class AdminLog implements ActiveRecordInterface
// check the columns in natural order for more readable SQL queries // check the columns in natural order for more readable SQL queries
if ($this->isColumnModified(AdminLogTableMap::ID)) { if ($this->isColumnModified(AdminLogTableMap::ID)) {
$modifiedColumns[':p' . $index++] = 'ID'; $modifiedColumns[':p' . $index++] = '`ID`';
} }
if ($this->isColumnModified(AdminLogTableMap::ADMIN_LOGIN)) { if ($this->isColumnModified(AdminLogTableMap::ADMIN_LOGIN)) {
$modifiedColumns[':p' . $index++] = 'ADMIN_LOGIN'; $modifiedColumns[':p' . $index++] = '`ADMIN_LOGIN`';
} }
if ($this->isColumnModified(AdminLogTableMap::ADMIN_FIRSTNAME)) { if ($this->isColumnModified(AdminLogTableMap::ADMIN_FIRSTNAME)) {
$modifiedColumns[':p' . $index++] = 'ADMIN_FIRSTNAME'; $modifiedColumns[':p' . $index++] = '`ADMIN_FIRSTNAME`';
} }
if ($this->isColumnModified(AdminLogTableMap::ADMIN_LASTNAME)) { if ($this->isColumnModified(AdminLogTableMap::ADMIN_LASTNAME)) {
$modifiedColumns[':p' . $index++] = 'ADMIN_LASTNAME'; $modifiedColumns[':p' . $index++] = '`ADMIN_LASTNAME`';
} }
if ($this->isColumnModified(AdminLogTableMap::RESOURCE)) { if ($this->isColumnModified(AdminLogTableMap::RESOURCE)) {
$modifiedColumns[':p' . $index++] = 'RESOURCE'; $modifiedColumns[':p' . $index++] = '`RESOURCE`';
} }
if ($this->isColumnModified(AdminLogTableMap::ACTION)) { if ($this->isColumnModified(AdminLogTableMap::ACTION)) {
$modifiedColumns[':p' . $index++] = 'ACTION'; $modifiedColumns[':p' . $index++] = '`ACTION`';
} }
if ($this->isColumnModified(AdminLogTableMap::MESSAGE)) { if ($this->isColumnModified(AdminLogTableMap::MESSAGE)) {
$modifiedColumns[':p' . $index++] = 'MESSAGE'; $modifiedColumns[':p' . $index++] = '`MESSAGE`';
} }
if ($this->isColumnModified(AdminLogTableMap::REQUEST)) { if ($this->isColumnModified(AdminLogTableMap::REQUEST)) {
$modifiedColumns[':p' . $index++] = 'REQUEST'; $modifiedColumns[':p' . $index++] = '`REQUEST`';
} }
if ($this->isColumnModified(AdminLogTableMap::CREATED_AT)) { if ($this->isColumnModified(AdminLogTableMap::CREATED_AT)) {
$modifiedColumns[':p' . $index++] = 'CREATED_AT'; $modifiedColumns[':p' . $index++] = '`CREATED_AT`';
} }
if ($this->isColumnModified(AdminLogTableMap::UPDATED_AT)) { if ($this->isColumnModified(AdminLogTableMap::UPDATED_AT)) {
$modifiedColumns[':p' . $index++] = 'UPDATED_AT'; $modifiedColumns[':p' . $index++] = '`UPDATED_AT`';
} }
$sql = sprintf( $sql = sprintf(
'INSERT INTO admin_log (%s) VALUES (%s)', 'INSERT INTO `admin_log` (%s) VALUES (%s)',
implode(', ', $modifiedColumns), implode(', ', $modifiedColumns),
implode(', ', array_keys($modifiedColumns)) implode(', ', array_keys($modifiedColumns))
); );
@@ -1059,34 +1059,34 @@ abstract class AdminLog implements ActiveRecordInterface
$stmt = $con->prepare($sql); $stmt = $con->prepare($sql);
foreach ($modifiedColumns as $identifier => $columnName) { foreach ($modifiedColumns as $identifier => $columnName) {
switch ($columnName) { switch ($columnName) {
case 'ID': case '`ID`':
$stmt->bindValue($identifier, $this->id, PDO::PARAM_INT); $stmt->bindValue($identifier, $this->id, PDO::PARAM_INT);
break; break;
case 'ADMIN_LOGIN': case '`ADMIN_LOGIN`':
$stmt->bindValue($identifier, $this->admin_login, PDO::PARAM_STR); $stmt->bindValue($identifier, $this->admin_login, PDO::PARAM_STR);
break; break;
case 'ADMIN_FIRSTNAME': case '`ADMIN_FIRSTNAME`':
$stmt->bindValue($identifier, $this->admin_firstname, PDO::PARAM_STR); $stmt->bindValue($identifier, $this->admin_firstname, PDO::PARAM_STR);
break; break;
case 'ADMIN_LASTNAME': case '`ADMIN_LASTNAME`':
$stmt->bindValue($identifier, $this->admin_lastname, PDO::PARAM_STR); $stmt->bindValue($identifier, $this->admin_lastname, PDO::PARAM_STR);
break; break;
case 'RESOURCE': case '`RESOURCE`':
$stmt->bindValue($identifier, $this->resource, PDO::PARAM_STR); $stmt->bindValue($identifier, $this->resource, PDO::PARAM_STR);
break; break;
case 'ACTION': case '`ACTION`':
$stmt->bindValue($identifier, $this->action, PDO::PARAM_STR); $stmt->bindValue($identifier, $this->action, PDO::PARAM_STR);
break; break;
case 'MESSAGE': case '`MESSAGE`':
$stmt->bindValue($identifier, $this->message, PDO::PARAM_STR); $stmt->bindValue($identifier, $this->message, PDO::PARAM_STR);
break; break;
case 'REQUEST': case '`REQUEST`':
$stmt->bindValue($identifier, $this->request, PDO::PARAM_STR); $stmt->bindValue($identifier, $this->request, PDO::PARAM_STR);
break; break;
case 'CREATED_AT': case '`CREATED_AT`':
$stmt->bindValue($identifier, $this->created_at ? $this->created_at->format("Y-m-d H:i:s") : null, PDO::PARAM_STR); $stmt->bindValue($identifier, $this->created_at ? $this->created_at->format("Y-m-d H:i:s") : null, PDO::PARAM_STR);
break; break;
case 'UPDATED_AT': case '`UPDATED_AT`':
$stmt->bindValue($identifier, $this->updated_at ? $this->updated_at->format("Y-m-d H:i:s") : null, PDO::PARAM_STR); $stmt->bindValue($identifier, $this->updated_at ? $this->updated_at->format("Y-m-d H:i:s") : null, PDO::PARAM_STR);
break; break;
} }

View File

@@ -156,7 +156,7 @@ abstract class AdminLogQuery extends ModelCriteria
*/ */
protected function findPkSimple($key, $con) protected function findPkSimple($key, $con)
{ {
$sql = 'SELECT ID, ADMIN_LOGIN, ADMIN_FIRSTNAME, ADMIN_LASTNAME, RESOURCE, ACTION, MESSAGE, REQUEST, CREATED_AT, UPDATED_AT FROM admin_log WHERE ID = :p0'; $sql = 'SELECT `ID`, `ADMIN_LOGIN`, `ADMIN_FIRSTNAME`, `ADMIN_LASTNAME`, `RESOURCE`, `ACTION`, `MESSAGE`, `REQUEST`, `CREATED_AT`, `UPDATED_AT` FROM `admin_log` WHERE `ID` = :p0';
try { try {
$stmt = $con->prepare($sql); $stmt = $con->prepare($sql);
$stmt->bindValue(':p0', $key, PDO::PARAM_INT); $stmt->bindValue(':p0', $key, PDO::PARAM_INT);

View File

@@ -171,7 +171,7 @@ abstract class AdminQuery extends ModelCriteria
*/ */
protected function findPkSimple($key, $con) protected function findPkSimple($key, $con)
{ {
$sql = 'SELECT ID, PROFILE_ID, FIRSTNAME, LASTNAME, LOGIN, PASSWORD, ALGO, SALT, REMEMBER_ME_TOKEN, REMEMBER_ME_SERIAL, CREATED_AT, UPDATED_AT FROM admin WHERE ID = :p0'; $sql = 'SELECT `ID`, `PROFILE_ID`, `FIRSTNAME`, `LASTNAME`, `LOGIN`, `PASSWORD`, `ALGO`, `SALT`, `REMEMBER_ME_TOKEN`, `REMEMBER_ME_SERIAL`, `CREATED_AT`, `UPDATED_AT` FROM `admin` WHERE `ID` = :p0';
try { try {
$stmt = $con->prepare($sql); $stmt = $con->prepare($sql);
$stmt->bindValue(':p0', $key, PDO::PARAM_INT); $stmt->bindValue(':p0', $key, PDO::PARAM_INT);

View File

@@ -882,23 +882,23 @@ abstract class Area implements ActiveRecordInterface
// check the columns in natural order for more readable SQL queries // check the columns in natural order for more readable SQL queries
if ($this->isColumnModified(AreaTableMap::ID)) { if ($this->isColumnModified(AreaTableMap::ID)) {
$modifiedColumns[':p' . $index++] = 'ID'; $modifiedColumns[':p' . $index++] = '`ID`';
} }
if ($this->isColumnModified(AreaTableMap::NAME)) { if ($this->isColumnModified(AreaTableMap::NAME)) {
$modifiedColumns[':p' . $index++] = 'NAME'; $modifiedColumns[':p' . $index++] = '`NAME`';
} }
if ($this->isColumnModified(AreaTableMap::POSTAGE)) { if ($this->isColumnModified(AreaTableMap::POSTAGE)) {
$modifiedColumns[':p' . $index++] = 'POSTAGE'; $modifiedColumns[':p' . $index++] = '`POSTAGE`';
} }
if ($this->isColumnModified(AreaTableMap::CREATED_AT)) { if ($this->isColumnModified(AreaTableMap::CREATED_AT)) {
$modifiedColumns[':p' . $index++] = 'CREATED_AT'; $modifiedColumns[':p' . $index++] = '`CREATED_AT`';
} }
if ($this->isColumnModified(AreaTableMap::UPDATED_AT)) { if ($this->isColumnModified(AreaTableMap::UPDATED_AT)) {
$modifiedColumns[':p' . $index++] = 'UPDATED_AT'; $modifiedColumns[':p' . $index++] = '`UPDATED_AT`';
} }
$sql = sprintf( $sql = sprintf(
'INSERT INTO area (%s) VALUES (%s)', 'INSERT INTO `area` (%s) VALUES (%s)',
implode(', ', $modifiedColumns), implode(', ', $modifiedColumns),
implode(', ', array_keys($modifiedColumns)) implode(', ', array_keys($modifiedColumns))
); );
@@ -907,19 +907,19 @@ abstract class Area implements ActiveRecordInterface
$stmt = $con->prepare($sql); $stmt = $con->prepare($sql);
foreach ($modifiedColumns as $identifier => $columnName) { foreach ($modifiedColumns as $identifier => $columnName) {
switch ($columnName) { switch ($columnName) {
case 'ID': case '`ID`':
$stmt->bindValue($identifier, $this->id, PDO::PARAM_INT); $stmt->bindValue($identifier, $this->id, PDO::PARAM_INT);
break; break;
case 'NAME': case '`NAME`':
$stmt->bindValue($identifier, $this->name, PDO::PARAM_STR); $stmt->bindValue($identifier, $this->name, PDO::PARAM_STR);
break; break;
case 'POSTAGE': case '`POSTAGE`':
$stmt->bindValue($identifier, $this->postage, PDO::PARAM_STR); $stmt->bindValue($identifier, $this->postage, PDO::PARAM_STR);
break; break;
case 'CREATED_AT': case '`CREATED_AT`':
$stmt->bindValue($identifier, $this->created_at ? $this->created_at->format("Y-m-d H:i:s") : null, PDO::PARAM_STR); $stmt->bindValue($identifier, $this->created_at ? $this->created_at->format("Y-m-d H:i:s") : null, PDO::PARAM_STR);
break; break;
case 'UPDATED_AT': case '`UPDATED_AT`':
$stmt->bindValue($identifier, $this->updated_at ? $this->updated_at->format("Y-m-d H:i:s") : null, PDO::PARAM_STR); $stmt->bindValue($identifier, $this->updated_at ? $this->updated_at->format("Y-m-d H:i:s") : null, PDO::PARAM_STR);
break; break;
} }

View File

@@ -863,23 +863,23 @@ abstract class AreaDeliveryModule implements ActiveRecordInterface
// check the columns in natural order for more readable SQL queries // check the columns in natural order for more readable SQL queries
if ($this->isColumnModified(AreaDeliveryModuleTableMap::ID)) { if ($this->isColumnModified(AreaDeliveryModuleTableMap::ID)) {
$modifiedColumns[':p' . $index++] = 'ID'; $modifiedColumns[':p' . $index++] = '`ID`';
} }
if ($this->isColumnModified(AreaDeliveryModuleTableMap::AREA_ID)) { if ($this->isColumnModified(AreaDeliveryModuleTableMap::AREA_ID)) {
$modifiedColumns[':p' . $index++] = 'AREA_ID'; $modifiedColumns[':p' . $index++] = '`AREA_ID`';
} }
if ($this->isColumnModified(AreaDeliveryModuleTableMap::DELIVERY_MODULE_ID)) { if ($this->isColumnModified(AreaDeliveryModuleTableMap::DELIVERY_MODULE_ID)) {
$modifiedColumns[':p' . $index++] = 'DELIVERY_MODULE_ID'; $modifiedColumns[':p' . $index++] = '`DELIVERY_MODULE_ID`';
} }
if ($this->isColumnModified(AreaDeliveryModuleTableMap::CREATED_AT)) { if ($this->isColumnModified(AreaDeliveryModuleTableMap::CREATED_AT)) {
$modifiedColumns[':p' . $index++] = 'CREATED_AT'; $modifiedColumns[':p' . $index++] = '`CREATED_AT`';
} }
if ($this->isColumnModified(AreaDeliveryModuleTableMap::UPDATED_AT)) { if ($this->isColumnModified(AreaDeliveryModuleTableMap::UPDATED_AT)) {
$modifiedColumns[':p' . $index++] = 'UPDATED_AT'; $modifiedColumns[':p' . $index++] = '`UPDATED_AT`';
} }
$sql = sprintf( $sql = sprintf(
'INSERT INTO area_delivery_module (%s) VALUES (%s)', 'INSERT INTO `area_delivery_module` (%s) VALUES (%s)',
implode(', ', $modifiedColumns), implode(', ', $modifiedColumns),
implode(', ', array_keys($modifiedColumns)) implode(', ', array_keys($modifiedColumns))
); );
@@ -888,19 +888,19 @@ abstract class AreaDeliveryModule implements ActiveRecordInterface
$stmt = $con->prepare($sql); $stmt = $con->prepare($sql);
foreach ($modifiedColumns as $identifier => $columnName) { foreach ($modifiedColumns as $identifier => $columnName) {
switch ($columnName) { switch ($columnName) {
case 'ID': case '`ID`':
$stmt->bindValue($identifier, $this->id, PDO::PARAM_INT); $stmt->bindValue($identifier, $this->id, PDO::PARAM_INT);
break; break;
case 'AREA_ID': case '`AREA_ID`':
$stmt->bindValue($identifier, $this->area_id, PDO::PARAM_INT); $stmt->bindValue($identifier, $this->area_id, PDO::PARAM_INT);
break; break;
case 'DELIVERY_MODULE_ID': case '`DELIVERY_MODULE_ID`':
$stmt->bindValue($identifier, $this->delivery_module_id, PDO::PARAM_INT); $stmt->bindValue($identifier, $this->delivery_module_id, PDO::PARAM_INT);
break; break;
case 'CREATED_AT': case '`CREATED_AT`':
$stmt->bindValue($identifier, $this->created_at ? $this->created_at->format("Y-m-d H:i:s") : null, PDO::PARAM_STR); $stmt->bindValue($identifier, $this->created_at ? $this->created_at->format("Y-m-d H:i:s") : null, PDO::PARAM_STR);
break; break;
case 'UPDATED_AT': case '`UPDATED_AT`':
$stmt->bindValue($identifier, $this->updated_at ? $this->updated_at->format("Y-m-d H:i:s") : null, PDO::PARAM_STR); $stmt->bindValue($identifier, $this->updated_at ? $this->updated_at->format("Y-m-d H:i:s") : null, PDO::PARAM_STR);
break; break;
} }

View File

@@ -147,7 +147,7 @@ abstract class AreaDeliveryModuleQuery extends ModelCriteria
*/ */
protected function findPkSimple($key, $con) protected function findPkSimple($key, $con)
{ {
$sql = 'SELECT ID, AREA_ID, DELIVERY_MODULE_ID, CREATED_AT, UPDATED_AT FROM area_delivery_module WHERE ID = :p0'; $sql = 'SELECT `ID`, `AREA_ID`, `DELIVERY_MODULE_ID`, `CREATED_AT`, `UPDATED_AT` FROM `area_delivery_module` WHERE `ID` = :p0';
try { try {
$stmt = $con->prepare($sql); $stmt = $con->prepare($sql);
$stmt->bindValue(':p0', $key, PDO::PARAM_INT); $stmt->bindValue(':p0', $key, PDO::PARAM_INT);

View File

@@ -147,7 +147,7 @@ abstract class AreaQuery extends ModelCriteria
*/ */
protected function findPkSimple($key, $con) protected function findPkSimple($key, $con)
{ {
$sql = 'SELECT ID, NAME, POSTAGE, CREATED_AT, UPDATED_AT FROM area WHERE ID = :p0'; $sql = 'SELECT `ID`, `NAME`, `POSTAGE`, `CREATED_AT`, `UPDATED_AT` FROM `area` WHERE `ID` = :p0';
try { try {
$stmt = $con->prepare($sql); $stmt = $con->prepare($sql);
$stmt->bindValue(':p0', $key, PDO::PARAM_INT); $stmt->bindValue(':p0', $key, PDO::PARAM_INT);

Some files were not shown because too many files have changed in this diff Show More