Merge branch 'master' of github.com:thelia/thelia

Conflicts:
	core/lib/Thelia/Config/Resources/routing/front.xml
This commit is contained in:
Manuel Raynaud
2013-09-04 17:57:41 +02:00
162 changed files with 10966 additions and 10282 deletions

View File

@@ -22,64 +22,7 @@
/*************************************************************************************/
namespace Thelia\Core\Event;
use Thelia\Model\Category;
class CategoryChangePositionEvent extends ActionEvent
class CurrencyUpdatePositionEvent extends BaseUpdatePositionEvent
{
const POSITION_UP = 1;
const POSITION_DOWN = 2;
const POSITION_ABSOLUTE = 3;
protected $category_id;
protected $mode;
protected $position;
protected $category;
public function __construct($category_id, $mode, $position = null)
{
$this->category_id = $category_id;
$this->mode = $mode;
$this->position = $position;
}
public function getMode()
{
return $this->mode;
}
public function setMode($mode)
{
$this->mode = $mode;
}
public function getPosition()
{
return $this->position;
}
public function setPosition($position)
{
$this->position = $position;
}
public function getCategory()
{
return $this->category;
}
public function setCategory($category)
{
$this->category = $category;
}
public function getCategoryId()
{
return $this->category_id;
}
public function setCategoryId($category_id)
{
$this->category_id = $category_id;
}
}
}

View File

@@ -25,7 +25,7 @@ namespace Thelia\Core\Event;
use Thelia\Model\Category;
class CategoryCreateEvent extends ActionEvent
class CategoryUpdateEvent extends ActionEvent
{
protected $category_id;
protected $locale;

View File

@@ -25,7 +25,7 @@ namespace Thelia\Core\Event;
use Thelia\Model\Config;
class ConfigChangeEvent extends ConfigCreateEvent
class ConfigUpdateEvent extends ConfigCreateEvent
{
protected $config_id;

View File

@@ -24,7 +24,7 @@
namespace Thelia\Core\Event;
use Thelia\Model\Currency;
class CurrencyChangeEvent extends CurrencyCreateEvent
class CurrencyUpdateEvent extends CurrencyCreateEvent
{
protected $currency_id;
protected $is_default;

View File

@@ -25,7 +25,7 @@ namespace Thelia\Core\Event;
use Thelia\Model\Message;
class MessageChangeEvent extends MessageCreateEvent
class MessageUpdateEvent extends MessageCreateEvent
{
protected $message_id;

View File

@@ -136,7 +136,7 @@ final class TheliaEvents
/**
* Change category position
*/
const CATEGORY_CHANGE_POSITION = "action.changeCategoryPosition";
const CATEGORY_CHANGE_POSITION = "action.updateCategoryPosition";
/**
* Sent just after a successful insert of a new category in the database.
@@ -232,12 +232,12 @@ final class TheliaEvents
// -- Currencies management ---------------------------------------------
const CURRENCY_CREATE = "action.createCurrency";
const CURRENCY_UPDATE = "action.updateCurrency";
const CURRENCY_DELETE = "action.deleteCurrency";
const CURRENCY_SET_DEFAULT = "action.setDefaultCurrency";
const CURRENCY_UPDATE_RATES = "action.updateCurrencyRates";
const CURRENCY_CREATE = "action.createCurrency";
const CURRENCY_UPDATE = "action.updateCurrency";
const CURRENCY_DELETE = "action.deleteCurrency";
const CURRENCY_SET_DEFAULT = "action.setDefaultCurrency";
const CURRENCY_UPDATE_RATES = "action.updateCurrencyRates";
const CURRENCY_UPDATE_POSITION = "action.updateCurrencyPosition";
const BEFORE_CREATECURRENCY = "action.before_createCurrency";
const AFTER_CREATECURRENCY = "action.after_createCurrency";

View File

@@ -86,7 +86,7 @@ class ViewListener implements EventSubscriberInterface
} catch (AuthenticationException $ex) {
// Redirect to the login template
Redirect::exec(URL::viewUrl($ex->getLoginTemplate()));
Redirect::exec($this->container->get('thelia.url.manager')->viewUrl($ex->getLoginTemplate()));
}
}

View File

@@ -41,55 +41,29 @@ use Thelia\Model\Lang;
*/
class Session extends BaseSession
{
// -- Language ------------------------------------------------------------
public function getLocale()
{
return $this->get("locale", "en_US");
}
public function setLocale($locale)
{
$this->set("locale", $locale);
return $this;
}
/**
* @return \Thelia\Model\Lang|null
*/
public function getLang()
{
return $this->get("lang");
return $this->get("thelia.current.lang", Lang::getDefaultLanguage());
}
public function setLang(Lang $lang)
{
$this->set("lang", $lang);
$this->set("thelia.current.lang", $lang);
return $this;
}
public function getLangId()
public function getAdminEditionLang()
{
return $this->get("lang_id", Lang::getDefaultLanguage()->getId());
return $this->get('thelia.admin.edition.lang', Lang::getDefaultLanguage());
}
public function setLangId($langId)
public function setAdminEditionLang($langId)
{
$this->set("lang_id", $langId);
return $this;
}
public function getAdminEditionLangId()
{
return $this->get('admin.edition_language', Lang::getDefaultLanguage()->getId());
}
public function setAdminEditionLangId($langId)
{
$this->set('admin.edition_language', $langId);
$this->set('thelia.admin.edition.lang', $langId);
return $this;
}
@@ -98,43 +72,43 @@ class Session extends BaseSession
public function setCustomerUser(UserInterface $user)
{
$this->set('customer_user', $user);
$this->set('thelia.customer_user', $user);
return $this;
}
public function getCustomerUser()
{
return $this->get('customer_user');
return $this->get('thelia.customer_user');
}
public function clearCustomerUser()
{
return $this->remove('customer_user');
return $this->remove('thelia.customer_user');
}
// -- Admin user -----------------------------------------------------------
public function setAdminUser(UserInterface $user)
{
$this->set('admin_user', $user);
$this->set('thelia.admin_user', $user);
return $this;
}
public function getAdminUser()
{
return $this->get('admin_user');
return $this->get('thelia.admin_user');
}
public function clearAdminUser()
{
return $this->remove('admin_user');
return $this->remove('thelia.admin_user');
}
// -- Return page ----------------------------------------------------------
public function setReturnToUrl($url)
{
$this->set('return_to_url', $url);
$this->set('thelia.return_to_url', $url);
return $this;
}
@@ -144,7 +118,7 @@ class Session extends BaseSession
*/
public function getReturnToUrl()
{
return $this->get('return_to_url', URL::getIndexPage());
return $this->get('thelia.return_to_url', URL::getInstance()->getIndexPage());
}
// -- Cart ------------------------------------------------------------------
@@ -156,7 +130,7 @@ class Session extends BaseSession
*/
public function getCart()
{
$cart_id = $this->get("cart_id");
$cart_id = $this->get("thelia.cart_id");
$cart = null;
if ($cart_id) {
$cart = CartQuery::create()->findPk($cart_id);
@@ -193,7 +167,7 @@ class Session extends BaseSession
*/
public function setCart($cart_id)
{
$this->set("cart_id", $cart_id);
$this->set("thelia.cart_id", $cart_id);
return $this;
}
}
}

View File

@@ -69,7 +69,7 @@ abstract class BaseI18nLoop extends BaseLoop
$this->getBackend_context(),
$this->getLang(),
$search,
$this->request->getSession()->getLocale(),
$this->request->getSession()->getLang()->getLocale(),
$columns,
$foreignTable,
$foreignKey,

View File

@@ -54,6 +54,10 @@ abstract class BaseLoop
protected $args;
public $countable = true;
public $timestampable = false;
public $versionable = false;
/**
* Create a new Loop
*
@@ -235,31 +239,6 @@ abstract class BaseLoop
}
}
/**
* Setup ModelCriteria for proper i18n processing
*
* @param ModelCriteria $search the Propel Criteria to configure
* @param array $columns the i18n columns
* @param string $foreignTable the specified table (default to criteria table)
* @param string $foreignKey the foreign key in this table (default to criteria table)
*
* @return mixed the locale
*/
protected function configureI18nProcessing(ModelCriteria $search, $columns = array('TITLE', 'CHAPO', 'DESCRIPTION', 'POSTSCRIPTUM'), $foreignTable = null, $foreignKey = 'ID', $forceReturn = false) {
/* manage translations */
return ModelCriteriaTools::getI18n(
$this->getBackend_context(),
$this->getLang(),
$search,
$this->request->getSession()->getLocale(),
$columns,
$foreignTable,
$foreignKey,
$forceReturn
);
}
/**
*
* this function have to be implement in your own loop class.

View File

@@ -23,6 +23,8 @@
namespace Thelia\Core\Template\Element;
use Propel\Runtime\Collection\ObjectCollection;
use Propel\Runtime\Util\PropelModelPager;
use Thelia\Core\Template\Element\LoopResultRow;
class LoopResult implements \Iterator
@@ -30,9 +32,14 @@ class LoopResult implements \Iterator
private $position;
protected $collection = array();
public function __construct()
public $modelCollection = null;
public function __construct($modelCollection = null)
{
$this->position = 0;
if($modelCollection instanceof ObjectCollection || $modelCollection instanceof PropelModelPager) {
$this->modelCollection = $modelCollection;
}
}
public function isEmpty()

View File

@@ -23,10 +23,37 @@
namespace Thelia\Core\Template\Element;
use Propel\Runtime\ActiveRecord\ActiveRecordInterface;
class LoopResultRow
{
protected $substitution = array();
public $model = null;
public $loopResult;
public $versionable = false;
public $timestampable = false;
public $countable = false;
public function __construct($loopResult = null, $model = null, $versionable = false, $timestampable = false, $countable = true)
{
if($model instanceof ActiveRecordInterface) {
$this->model = $model;
$this->versionable = $versionable;
$this->timestampable = $timestampable;
}
if($loopResult instanceof LoopResult) {
$this->loopResult = $loopResult;
$this->countable = $countable;
}
$this->assignDefaultOutputs();
}
public function set($key, $value)
{
$this->substitution[$key] = $value === null ? '' : $value;
@@ -49,4 +76,38 @@ class LoopResultRow
return array_keys($this->substitution);
}
protected function getTimestampOutputs()
{
return array(
array('CREATE_DATE', 'getCreatedAt'),
array('UPDATE_DATE', 'getUpdatedAt'),
);
}
protected function getVersionOutputs()
{
return array(
array('VERSION', 'getVersion'),
array('VERSION_DATE', 'getVersionCreatedAt'),
array('VERSION_AUTHOR', 'getVersionCreatedBy'),
);
}
protected function assignDefaultOutputs()
{
if(true === $this->versionable) {
foreach($this->getVersionOutputs() as $output) {
$this->set($output[0], $this->model->$output[1]());
}
}
if(true === $this->timestampable) {
foreach($this->getTimestampOutputs() as $output) {
$this->set($output[0], $this->model->$output[1]());
}
}
if(true === $this->countable) {
$this->set('LOOP_COUNT', 1 + $this->loopResult->getCount());
$this->set('LOOP_TOTAL', $this->loopResult->modelCollection->count());
}
}
}

View File

@@ -24,6 +24,7 @@
namespace Thelia\Core\Template\Loop;
use Propel\Runtime\ActiveQuery\Criteria;
use Propel\Runtime\Collection\ObjectCollection;
use Thelia\Core\Template\Element\BaseLoop;
use Thelia\Core\Template\Element\LoopResult;
use Thelia\Core\Template\Element\LoopResultRow;
@@ -46,6 +47,8 @@ use Thelia\Type;
*/
class Address extends BaseLoop
{
public $timestampable = true;
/**
* @return ArgumentCollection
*/
@@ -109,10 +112,10 @@ class Address extends BaseLoop
$addresses = $this->search($search, $pagination);
$loopResult = new LoopResult();
$loopResult = new LoopResult($addresses);
foreach ($addresses as $address) {
$loopResultRow = new LoopResultRow();
$loopResultRow = new LoopResultRow($loopResult, $address, $this->versionable, $this->timestampable, $this->countable);
$loopResultRow
->set("ID", $address->getId())
->set("LABEL", $address->getLabel())

View File

@@ -55,6 +55,8 @@ use Thelia\Type\BooleanOrBothType;
*/
class Attribute extends BaseI18nLoop
{
public $timestampable = true;
/**
* @return ArgumentCollection
*/
@@ -150,10 +152,10 @@ class Attribute extends BaseI18nLoop
/* perform search */
$attributes = $this->search($search, $pagination);
$loopResult = new LoopResult();
$loopResult = new LoopResult($attributes);
foreach ($attributes as $attribute) {
$loopResultRow = new LoopResultRow();
$loopResultRow = new LoopResultRow($loopResult, $attribute, $this->versionable, $this->timestampable, $this->countable);
$loopResultRow->set("ID", $attribute->getId())
->set("IS_TRANSLATED",$attribute->getVirtualColumn('IS_TRANSLATED'))
->set("LOCALE",$locale)

View File

@@ -48,6 +48,8 @@ use Thelia\Type;
*/
class AttributeAvailability extends BaseI18nLoop
{
public $timestampable = true;
/**
* @return ArgumentCollection
*/
@@ -119,10 +121,10 @@ class AttributeAvailability extends BaseI18nLoop
/* perform search */
$attributesAv = $this->search($search, $pagination);
$loopResult = new LoopResult();
$loopResult = new LoopResult($attributesAv);
foreach ($attributesAv as $attributeAv) {
$loopResultRow = new LoopResultRow();
$loopResultRow = new LoopResultRow($loopResult, $attributeAv, $this->versionable, $this->timestampable, $this->countable);
$loopResultRow->set("ID", $attributeAv->getId())
->set("IS_TRANSLATED",$attributeAv->getVirtualColumn('IS_TRANSLATED'))
->set("LOCALE",$locale)

View File

@@ -50,6 +50,8 @@ use Thelia\Type;
*/
class AttributeCombination extends BaseI18nLoop
{
public $timestampable = true;
/**
* @return ArgumentCollection
*/
@@ -111,10 +113,10 @@ class AttributeCombination extends BaseI18nLoop
$attributeCombinations = $this->search($search, $pagination);
$loopResult = new LoopResult();
$loopResult = new LoopResult($attributeCombinations);
foreach ($attributeCombinations as $attributeCombination) {
$loopResultRow = new LoopResultRow();
$loopResultRow = new LoopResultRow($loopResult, $attributeCombination, $this->versionable, $this->timestampable, $this->countable);
$loopResultRow
->set("LOCALE",$locale)

View File

@@ -71,20 +71,20 @@ class Cart extends BaseLoop
*/
public function exec(&$pagination)
{
$result = new LoopResult();
$cartItems = $cart->getCartItems();
$result = new LoopResult($cartItems);
$cart = $this->getCart($this->request);
if ($cart === null) {
return $result;
}
$cartItems = $cart->getCartItems();
foreach ($cartItems as $cartItem) {
$product = $cartItem->getProduct();
//$product->setLocale($this->request->getSession()->getLocale());
$loopResultRow = new LoopResultRow();
$loopResultRow = new LoopResultRow($result, $cartItem, $this->versionable, $this->timestampable, $this->countable);
$loopResultRow->set("ITEM_ID", $cartItem->getId());
$loopResultRow->set("TITLE", $product->getTitle());

View File

@@ -64,6 +64,9 @@ use Thelia\Type\BooleanOrBothType;
*/
class Category extends BaseI18nLoop
{
public $timestampable = true;
public $versionable = true;
/**
* @return ArgumentCollection
*/
@@ -165,7 +168,7 @@ class Category extends BaseI18nLoop
/* @todo */
$notEmpty = $this->getNot_empty();
$loopResult = new LoopResult();
$loopResult = new LoopResult($categories);
foreach ($categories as $category) {
/*
@@ -173,7 +176,7 @@ class Category extends BaseI18nLoop
* if ($this->getNotEmpty() && $category->countAllProducts() == 0) continue;
*/
$loopResultRow = new LoopResultRow();
$loopResultRow = new LoopResultRow($loopResult, $category, $this->versionable, $this->timestampable, $this->countable);
$loopResultRow
->set("ID", $category->getId())
@@ -188,12 +191,6 @@ class Category extends BaseI18nLoop
->set("PRODUCT_COUNT", $category->countChild())
->set("VISIBLE", $category->getVisible() ? "1" : "0")
->set("POSITION", $category->getPosition())
->set("CREATE_DATE", $category->getCreatedAt())
->set("UPDATE_DATE", $category->getUpdatedAt())
->set("VERSION", $category->getVersion())
->set("VERSION_DATE", $category->getVersionCreatedAt())
->set("VERSION_AUTHOR", $category->getVersionCreatedBy())
;
$loopResult->addRow($loopResultRow);

View File

@@ -51,6 +51,8 @@ use Thelia\Type\EnumListType;
*/
class Config extends BaseI18nLoop
{
public $timestampable = true;
/**
* @return ArgumentCollection
*/
@@ -146,11 +148,11 @@ class Config extends BaseI18nLoop
$results = $this->search($search, $pagination);
$loopResult = new LoopResult();
$loopResult = new LoopResult($results);
foreach ($results as $result) {
$loopResultRow = new LoopResultRow();
$loopResultRow = new LoopResultRow($loopResult, $result, $this->versionable, $this->timestampable, $this->countable);
$loopResultRow
->set("ID" , $result->getId())
@@ -164,13 +166,7 @@ class Config extends BaseI18nLoop
->set("POSTSCRIPTUM" , $result->getVirtualColumn('i18n_POSTSCRIPTUM'))
->set("HIDDEN" , $result->getHidden())
->set("SECURED" , $result->getSecured())
->set("CREATE_DATE" , $result->getCreatedAt())
->set("UPDATE_DATE" , $result->getUpdatedAt())
->set("VERSION" , $result->getVersion())
->set("VERSION_DATE" , $result->getVersionCreatedAt())
->set("VERSION_AUTHOR" , $result->getVersionCreatedBy())
;
;
$loopResult->addRow($loopResultRow);
}

View File

@@ -51,6 +51,9 @@ use Thelia\Type\BooleanOrBothType;
*/
class Content extends BaseI18nLoop
{
public $timestampable = true;
public $versionable = true;
/**
* @return ArgumentCollection
*/
@@ -207,10 +210,10 @@ class Content extends BaseI18nLoop
$contents = $this->search($search, $pagination);
$loopResult = new LoopResult();
$loopResult = new LoopResult($contents);
foreach ($contents as $content) {
$loopResultRow = new LoopResultRow();
$loopResultRow = new LoopResultRow($loopResult, $content, $this->versionable, $this->timestampable, $this->countable);
$loopResultRow->set("ID", $content->getId())
->set("IS_TRANSLATED",$content->getVirtualColumn('IS_TRANSLATED'))

View File

@@ -45,6 +45,8 @@ use Thelia\Model\ConfigQuery;
*/
class Country extends BaseI18nLoop
{
public $timestampable = true;
/**
* @return ArgumentCollection
*/
@@ -101,10 +103,10 @@ class Country extends BaseI18nLoop
/* perform search */
$countries = $this->search($search, $pagination);
$loopResult = new LoopResult();
$loopResult = new LoopResult($countries);
foreach ($countries as $country) {
$loopResultRow = new LoopResultRow();
$loopResultRow = new LoopResultRow($loopResult, $country, $this->versionable, $this->timestampable, $this->countable);
$loopResultRow->set("ID", $country->getId())
->set("IS_TRANSLATED",$country->getVirtualColumn('IS_TRANSLATED'))
->set("LOCALE",$locale)

View File

@@ -47,6 +47,8 @@ use Thelia\Type\EnumListType;
*/
class Currency extends BaseI18nLoop
{
public $timestampable = true;
/**
* @return ArgumentCollection
*/
@@ -163,11 +165,11 @@ class Currency extends BaseI18nLoop
/* perform search */
$currencies = $this->search($search, $pagination);
$loopResult = new LoopResult();
$loopResult = new LoopResult($currencies);
foreach ($currencies as $currency) {
$loopResultRow = new LoopResultRow();
$loopResultRow = new LoopResultRow($loopResult, $currency, $this->versionable, $this->timestampable, $this->countable);
$loopResultRow
->set("ID" , $currency->getId())
->set("IS_TRANSLATED" , $currency->getVirtualColumn('IS_TRANSLATED'))
@@ -178,9 +180,6 @@ class Currency extends BaseI18nLoop
->set("RATE" , $currency->getRate())
->set("POSITION" , $currency->getPosition())
->set("IS_DEFAULT" , $currency->getByDefault())
->set("CREATE_DATE" , $currency->getCreatedAt())
->set("UPDATE_DATE" , $currency->getUpdatedAt())
;
$loopResult->addRow($loopResultRow);

View File

@@ -24,6 +24,7 @@
namespace Thelia\Core\Template\Loop;
use Propel\Runtime\ActiveQuery\Criteria;
use Propel\Runtime\Collection\ObjectCollection;
use Thelia\Core\Template\Element\BaseLoop;
use Thelia\Core\Template\Element\LoopResult;
use Thelia\Core\Template\Element\LoopResultRow;
@@ -46,6 +47,8 @@ use Thelia\Type;
*/
class Customer extends BaseLoop
{
public $timestampable = true;
/**
* @return ArgumentCollection
*/
@@ -113,10 +116,10 @@ class Customer extends BaseLoop
$customers = $this->search($search, $pagination);
$loopResult = new LoopResult();
$loopResult = new LoopResult($customers);
foreach ($customers as $customer) {
$loopResultRow = new LoopResultRow();
$loopResultRow = new LoopResultRow($loopResult, $customer, $this->versionable, $this->timestampable, $this->countable);
$loopResultRow->set("ID", $customer->getId());
$loopResultRow->set("REF", $customer->getRef());
$loopResultRow->set("TITLE", $customer->getTitleId());

View File

@@ -51,6 +51,8 @@ use Thelia\Type\BooleanOrBothType;
*/
class Feature extends BaseI18nLoop
{
public $timestampable = true;
/**
* @return ArgumentCollection
*/
@@ -142,10 +144,10 @@ class Feature extends BaseI18nLoop
/* perform search */
$features = $this->search($search, $pagination);
$loopResult = new LoopResult();
$loopResult = new LoopResult($features);
foreach ($features as $feature) {
$loopResultRow = new LoopResultRow();
$loopResultRow = new LoopResultRow($loopResult, $feature, $this->versionable, $this->timestampable, $this->countable);
$loopResultRow->set("ID", $feature->getId())
->set("IS_TRANSLATED",$feature->getVirtualColumn('IS_TRANSLATED'))
->set("LOCALE",$locale)

View File

@@ -46,6 +46,8 @@ use Thelia\Type;
*/
class FeatureAvailability extends BaseI18nLoop
{
public $timestampable = true;
/**
* @return ArgumentCollection
*/
@@ -117,10 +119,10 @@ class FeatureAvailability extends BaseI18nLoop
/* perform search */
$featuresAv = $this->search($search, $pagination);
$loopResult = new LoopResult();
$loopResult = new LoopResult($featuresAv);
foreach ($featuresAv as $featureAv) {
$loopResultRow = new LoopResultRow();
$loopResultRow = new LoopResultRow($loopResult, $featureAv, $this->versionable, $this->timestampable, $this->countable);
$loopResultRow->set("ID", $featureAv->getId())
->set("IS_TRANSLATED",$featureAv->getVirtualColumn('IS_TRANSLATED'))
->set("LOCALE",$locale)

View File

@@ -51,6 +51,8 @@ use Thelia\Type;
*/
class FeatureValue extends BaseI18nLoop
{
public $timestampable = true;
/**
* @return ArgumentCollection
*/
@@ -135,10 +137,10 @@ class FeatureValue extends BaseI18nLoop
$featureValues = $this->search($search, $pagination);
$loopResult = new LoopResult();
$loopResult = new LoopResult($featureValues);
foreach ($featureValues as $featureValue) {
$loopResultRow = new LoopResultRow();
$loopResultRow = new LoopResultRow($loopResult, $featureValue, $this->versionable, $this->timestampable, $this->countable);
$loopResultRow->set("ID", $featureValue->getId());
$loopResultRow

View File

@@ -46,6 +46,9 @@ use Thelia\Type\BooleanOrBothType;
*/
class Folder extends BaseI18nLoop
{
public $timestampable = true;
public $versionable = true;
/**
* @return ArgumentCollection
*/
@@ -142,7 +145,7 @@ class Folder extends BaseI18nLoop
/* @todo */
$notEmpty = $this->getNot_empty();
$loopResult = new LoopResult();
$loopResult = new LoopResult($folders);
foreach ($folders as $folder) {
@@ -151,7 +154,7 @@ class Folder extends BaseI18nLoop
* if ($notEmpty && $folder->countAllProducts() == 0) continue;
*/
$loopResultRow = new LoopResultRow();
$loopResultRow = new LoopResultRow($loopResult, $folder, $this->versionable, $this->timestampable, $this->countable);
$loopResultRow
->set("ID", $folder->getId())
@@ -166,12 +169,6 @@ class Folder extends BaseI18nLoop
->set("CONTENT_COUNT", $folder->countChild())
->set("VISIBLE", $folder->getVisible() ? "1" : "0")
->set("POSITION", $folder->getPosition())
->set("CREATE_DATE", $folder->getCreatedAt())
->set("UPDATE_DATE", $folder->getUpdatedAt())
->set("VERSION", $folder->getVersion())
->set("VERSION_DATE", $folder->getVersionCreatedAt())
->set("VERSION_AUTHOR", $folder->getVersionCreatedBy())
;
$loopResult->addRow($loopResultRow);

View File

@@ -45,6 +45,8 @@ use Thelia\Log\Tlog;
*/
class Image extends BaseI18nLoop
{
public $timestampable = true;
/**
* @var array Possible image sources
*/
@@ -264,7 +266,7 @@ class Image extends BaseI18nLoop
$results = $this->search($search, $pagination);
$loopResult = new LoopResult();
$loopResult = new LoopResult($results);
foreach ($results as $result) {
@@ -295,7 +297,7 @@ class Image extends BaseI18nLoop
// Dispatch image processing event
$this->dispatcher->dispatch(TheliaEvents::IMAGE_PROCESS, $event);
$loopResultRow = new LoopResultRow();
$loopResultRow = new LoopResultRow($loopResult, $result, $this->versionable, $this->timestampable, $this->countable);
$loopResultRow
->set("ID" , $result->getId())

View File

@@ -45,6 +45,8 @@ use Thelia\Core\Template\Loop\Argument\ArgumentCollection;
*/
class Lang extends BaseLoop
{
public $timestampable = true;
/**
* @return ArgumentCollection
*/
@@ -84,11 +86,11 @@ class Lang extends BaseLoop
$results = $this->search($search, $pagination);
$loopResult = new LoopResult();
$loopResult = new LoopResult($results);
foreach ($results as $result) {
$loopResultRow = new LoopResultRow();
$loopResultRow = new LoopResultRow($loopResult, $result, $this->versionable, $this->timestampable, $this->countable);
$loopResultRow
->set("ID", $result->getId())
@@ -99,9 +101,6 @@ class Lang extends BaseLoop
->set("IS_DEFAULT", $result->getByDefault())
->set("URL", $result->getUrl())
->set("POSITION", $result->getPosition())
->set("CREATE_DATE", $result->getCreatedAt())
->set("UPDATE_DATE", $result->getUpdatedAt())
;
$loopResult->addRow($loopResultRow);

View File

@@ -49,6 +49,8 @@ use Thelia\Type\BooleanOrBothType;
*/
class Message extends BaseI18nLoop
{
public $timestampable = true;
/**
* @return ArgumentCollection
*/
@@ -101,11 +103,11 @@ class Message extends BaseI18nLoop
$results = $this->search($search, $pagination);
$loopResult = new LoopResult();
$loopResult = new LoopResult($results);
foreach ($results as $result) {
$loopResultRow = new LoopResultRow();
$loopResultRow = new LoopResultRow($loopResult, $result, $this->versionable, $this->timestampable, $this->countable);
$loopResultRow
->set("ID" , $result->getId())
@@ -117,8 +119,6 @@ class Message extends BaseI18nLoop
->set("TEXT_MESSAGE" , $result->getVirtualColumn('i18n_TEXT_MESSAGE'))
->set("HTML_MESSAGE" , $result->getVirtualColumn('i18n_HTML_MESSAGE'))
->set("SECURED" , $result->getSecured())
->set("CREATE_DATE" , $result->getCreatedAt())
->set("UPDATE_DATE" , $result->getUpdatedAt())
;
$loopResult->addRow($loopResultRow);

View File

@@ -58,6 +58,9 @@ use Thelia\Type\BooleanOrBothType;
*/
class Product extends BaseI18nLoop
{
public $timestampable = true;
public $versionable = true;
/**
* @return ArgumentCollection
*/
@@ -501,10 +504,10 @@ class Product extends BaseI18nLoop
/* perform search */
$products = $this->search($search, $pagination);
$loopResult = new LoopResult();
$loopResult = new LoopResult($products);
foreach ($products as $product) {
$loopResultRow = new LoopResultRow();
$loopResultRow = new LoopResultRow($loopResult, $product, $this->versionable, $this->timestampable, $this->countable);
$loopResultRow->set("ID", $product->getId())
->set("REF",$product->getRef())
@@ -519,12 +522,6 @@ class Product extends BaseI18nLoop
->set("IS_PROMO", $product->getVirtualColumn('main_product_is_promo'))
->set("IS_NEW", $product->getVirtualColumn('main_product_is_new'))
->set("POSITION", $product->getPosition())
->set("CREATE_DATE", $category->getCreatedAt())
->set("UPDATE_DATE", $category->getUpdatedAt())
->set("VERSION", $category->getVersion())
->set("VERSION_DATE", $category->getVersionCreatedAt())
->set("VERSION_AUTHOR", $category->getVersionCreatedBy())
;
$loopResult->addRow($loopResultRow);

View File

@@ -50,6 +50,8 @@ use Thelia\Type;
*/
class ProductSaleElements extends BaseLoop
{
public $timestampable = true;
/**
* @return ArgumentCollection
*/
@@ -117,10 +119,10 @@ class ProductSaleElements extends BaseLoop
$PSEValues = $this->search($search, $pagination);
$loopResult = new LoopResult();
$loopResult = new LoopResult($PSEValues);
foreach ($PSEValues as $PSEValue) {
$loopResultRow = new LoopResultRow();
$loopResultRow = new LoopResultRow($loopResult, $PSEValue, $this->versionable, $this->timestampable, $this->countable);
$loopResultRow->set("ID", $PSEValue->getId())
->set("QUANTITY", $PSEValue->getQuantity())

View File

@@ -45,6 +45,8 @@ use Thelia\Model\ConfigQuery;
*/
class Title extends BaseI18nLoop
{
public $timestampable = true;
/**
* @return ArgumentCollection
*/
@@ -78,10 +80,10 @@ class Title extends BaseI18nLoop
/* perform search */
$titles = $this->search($search, $pagination);
$loopResult = new LoopResult();
$loopResult = new LoopResult($titles);
foreach ($titles as $title) {
$loopResultRow = new LoopResultRow();
$loopResultRow = new LoopResultRow($loopResult, $title, $this->versionable, $this->timestampable, $this->countable);
$loopResultRow->set("ID", $title->getId())
->set("IS_TRANSLATED",$title->getVirtualColumn('IS_TRANSLATED'))
->set("LOCALE",$locale)

View File

@@ -70,7 +70,7 @@ class SmartyAssetsManager
$url = $this->assetic_manager->asseticize(
$asset_dir.'/'.$asset_file,
$this->web_root."/".$this->path_relative_to_web_root,
URL::absoluteUrl($this->path_relative_to_web_root, null, URL::PATH_TO_FILE /* path only */),
URL::getInstance()->absoluteUrl($this->path_relative_to_web_root, null, URL::PATH_TO_FILE /* path only */),
$assetType,
$filters,
$debug

View File

@@ -71,11 +71,11 @@ class AdminUtilities extends AbstractSmartyPlugin
if ($permissions == null || $this->securityContext->isGranted("ADMIN", array($permission))) {
return sprintf(
'<a href="%s"><i class="icon-arrow-up"></i></a><span class="%s" data-id="%s">%s</span><a href="%s"><i class="icon-arrow-down"></i></a>',
URL::absoluteUrl("$path/positionUp", array($url_parameter => $id)),
URL::getInstance()->absoluteUrl("$path/positionUp", array($url_parameter => $id)),
$in_place_edit_class,
$id,
$position,
URL::absoluteUrl("$path/positionDown", array($url_parameter => $id))
URL::getInstance()->absoluteUrl("$path/positionDown", array($url_parameter => $id))
);
}
else {
@@ -125,7 +125,7 @@ class AdminUtilities extends AbstractSmartyPlugin
else
$output = '';
return sprintf('%s<a href="%s">%s</a>', $output, URL::absoluteUrl($path, array('order' => $order_change)), $label);
return sprintf('%s<a href="%s">%s</a>', $output, URL::getInstance()->absoluteUrl($path, array('order' => $order_change)), $label);
}

View File

@@ -138,22 +138,6 @@ class TheliaLoop extends AbstractSmartyPlugin
if ($loopResults->valid()) {
$loopResultRow = $loopResults->current();
// On first iteration, save variables that may be overwritten by this loop
if (! isset($this->varstack[$name])) {
$saved_vars = array();
$varlist = $loopResultRow->getVars();
$varlist[] = 'LOOP_COUNT';
$varlist[] = 'LOOP_TOTAL';
foreach ($varlist as $var) {
$saved_vars[$var] = $template->getTemplateVars($var);
}
$this->varstack[$name] = $saved_vars;
}
foreach ($loopResultRow->getVarVal() as $var => $val) {
$template->assign($var, $val);
}
@@ -161,10 +145,6 @@ class TheliaLoop extends AbstractSmartyPlugin
$repeat = true;
}
// Assign meta information
$template->assign('LOOP_COUNT', 1 + $loopResults->key());
$template->assign('LOOP_TOTAL', $loopResults->getCount());
// Loop is terminated. Cleanup.
if (! $repeat) {
// Restore previous variables values before terminating

View File

@@ -51,7 +51,7 @@ class UrlGenerator extends AbstractSmartyPlugin
$target = $this->getParam($params, 'target', null);
$url = URL::absoluteUrl($path, $this->getArgsFromParam($params, array('path', 'target')));
$url = URL::getInstance()->absoluteUrl($path, $this->getArgsFromParam($params, array('path', 'target')));
if ($target != null) $url .= '#'.$target;
@@ -102,7 +102,7 @@ class UrlGenerator extends AbstractSmartyPlugin
$args = $this->getArgsFromParam($params, array('view', 'action', 'target'));
if (! empty($action)) $args['action'] = $action;
return $forAdmin ? URL::adminViewUrl($view, $args) : URL::viewUrl($view, $args);
return $forAdmin ? URL::getInstance()->adminViewUrl($view, $args) : URL::getInstance()->viewUrl($view, $args);
}
/**
@@ -169,18 +169,16 @@ class UrlGenerator extends AbstractSmartyPlugin
protected function getCurrentUrl()
{
$retriever = URL::init()->retrieveCurrent($this->request);
return $retriever->rewrittenUrl === null ? $retriever->url : $retriever->rewrittenUrl ;
return URL::getInstance()->retrieveCurrent()->toString();
}
protected function getReturnToUrl()
{
return URL::absoluteUrl($this->request->getSession()->getReturnToUrl());
return URL::getInstance()->absoluteUrl($this->request->getSession()->getReturnToUrl());
}
protected function getIndexUrl()
{
return Url::getIndexPage();
return URL::getInstance()->getIndexPage();
}
}

View File

@@ -122,6 +122,9 @@ class TheliaHttpKernel extends HttpKernel
*/
protected function initParam(Request $request)
{
// Ensure an instaciation of URL service
$this->container->get('thelia.url.manager');
$lang = $this->detectLang($request);
if ($lang) {
@@ -139,6 +142,7 @@ class TheliaHttpKernel extends HttpKernel
protected function detectLang(Request $request)
{
$lang = null;
//first priority => lang parameter present in request (get or post)
if ($request->query->has("lang")) {
$lang = Model\LangQuery::create()->findOneByCode($request->query->get("lang"));