diff --git a/core/lib/Thelia/Action/PageNotFound.php b/core/lib/Thelia/Action/PageNotFound.php index c6f547fc4..a4d715fbb 100755 --- a/core/lib/Thelia/Action/PageNotFound.php +++ b/core/lib/Thelia/Action/PageNotFound.php @@ -27,6 +27,7 @@ use Symfony\Component\HttpFoundation\Request; use Symfony\Component\EventDispatcher\EventSubscriberInterface; use Symfony\Component\HttpFoundation\Response; use Symfony\Component\HttpKernel\Event\GetResponseForExceptionEvent; +use Symfony\Component\HttpKernel\Exception\NotFoundHttpException; use Symfony\Component\HttpKernel\KernelEvents; use Thelia\Model\ConfigQuery; @@ -40,7 +41,7 @@ class PageNotFound extends BaseAction implements EventSubscriberInterface { public function display404(GetResponseForExceptionEvent $event) { - if(is_a($event->getException(), 'Symfony\Component\HttpKernel\Exception\NotFoundHttpException')) { + if($event->getException() instanceof NotFoundHttpException) { $parser = $this->container->get("thelia.parser"); diff --git a/core/lib/Thelia/Config/Resources/routing/front.xml b/core/lib/Thelia/Config/Resources/routing/front.xml index 500fe7427..ec29c2733 100755 --- a/core/lib/Thelia/Config/Resources/routing/front.xml +++ b/core/lib/Thelia/Config/Resources/routing/front.xml @@ -52,5 +52,6 @@ Thelia\Controller\Front\UrlRewritingController::check + .* diff --git a/core/lib/Thelia/Core/Template/Element/BaseLoop.php b/core/lib/Thelia/Core/Template/Element/BaseLoop.php index befb53dc7..8961af6a3 100755 --- a/core/lib/Thelia/Core/Template/Element/BaseLoop.php +++ b/core/lib/Thelia/Core/Template/Element/BaseLoop.php @@ -54,6 +54,10 @@ abstract class BaseLoop protected $args; + public $countable = true; + public $timestampable = false; + public $versionable = false; + /** * Create a new Loop * diff --git a/core/lib/Thelia/Core/Template/Element/LoopResult.php b/core/lib/Thelia/Core/Template/Element/LoopResult.php index c3a97983f..169fdb4f7 100755 --- a/core/lib/Thelia/Core/Template/Element/LoopResult.php +++ b/core/lib/Thelia/Core/Template/Element/LoopResult.php @@ -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() diff --git a/core/lib/Thelia/Core/Template/Element/LoopResultRow.php b/core/lib/Thelia/Core/Template/Element/LoopResultRow.php index 8485bd78c..cfea52d8f 100755 --- a/core/lib/Thelia/Core/Template/Element/LoopResultRow.php +++ b/core/lib/Thelia/Core/Template/Element/LoopResultRow.php @@ -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()); + } + } } diff --git a/core/lib/Thelia/Core/Template/Loop/Address.php b/core/lib/Thelia/Core/Template/Loop/Address.php index 43bbbaefb..fab153969 100755 --- a/core/lib/Thelia/Core/Template/Loop/Address.php +++ b/core/lib/Thelia/Core/Template/Loop/Address.php @@ -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 */ @@ -110,10 +113,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("NAME", $address->getName()) diff --git a/core/lib/Thelia/Core/Template/Loop/Attribute.php b/core/lib/Thelia/Core/Template/Loop/Attribute.php index 79ffd4677..e967709f3 100755 --- a/core/lib/Thelia/Core/Template/Loop/Attribute.php +++ b/core/lib/Thelia/Core/Template/Loop/Attribute.php @@ -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) diff --git a/core/lib/Thelia/Core/Template/Loop/AttributeAvailability.php b/core/lib/Thelia/Core/Template/Loop/AttributeAvailability.php index 13e905670..cd5ad6564 100755 --- a/core/lib/Thelia/Core/Template/Loop/AttributeAvailability.php +++ b/core/lib/Thelia/Core/Template/Loop/AttributeAvailability.php @@ -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) diff --git a/core/lib/Thelia/Core/Template/Loop/AttributeCombination.php b/core/lib/Thelia/Core/Template/Loop/AttributeCombination.php index 53566c053..78cf33e21 100755 --- a/core/lib/Thelia/Core/Template/Loop/AttributeCombination.php +++ b/core/lib/Thelia/Core/Template/Loop/AttributeCombination.php @@ -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) diff --git a/core/lib/Thelia/Core/Template/Loop/Cart.php b/core/lib/Thelia/Core/Template/Loop/Cart.php index 27f295ed1..f9e5c00aa 100755 --- a/core/lib/Thelia/Core/Template/Loop/Cart.php +++ b/core/lib/Thelia/Core/Template/Loop/Cart.php @@ -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()); diff --git a/core/lib/Thelia/Core/Template/Loop/Category.php b/core/lib/Thelia/Core/Template/Loop/Category.php index 9d4a2b4ec..68ae33507 100755 --- a/core/lib/Thelia/Core/Template/Loop/Category.php +++ b/core/lib/Thelia/Core/Template/Loop/Category.php @@ -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); diff --git a/core/lib/Thelia/Core/Template/Loop/Config.php b/core/lib/Thelia/Core/Template/Loop/Config.php index f8819afef..37f098d77 100644 --- a/core/lib/Thelia/Core/Template/Loop/Config.php +++ b/core/lib/Thelia/Core/Template/Loop/Config.php @@ -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,12 +166,6 @@ 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); diff --git a/core/lib/Thelia/Core/Template/Loop/Content.php b/core/lib/Thelia/Core/Template/Loop/Content.php index 58836daa7..baec33344 100755 --- a/core/lib/Thelia/Core/Template/Loop/Content.php +++ b/core/lib/Thelia/Core/Template/Loop/Content.php @@ -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')) diff --git a/core/lib/Thelia/Core/Template/Loop/Country.php b/core/lib/Thelia/Core/Template/Loop/Country.php index d031e135d..aee6492f7 100755 --- a/core/lib/Thelia/Core/Template/Loop/Country.php +++ b/core/lib/Thelia/Core/Template/Loop/Country.php @@ -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) diff --git a/core/lib/Thelia/Core/Template/Loop/Currency.php b/core/lib/Thelia/Core/Template/Loop/Currency.php index 6db6c6223..b7261ba45 100755 --- a/core/lib/Thelia/Core/Template/Loop/Currency.php +++ b/core/lib/Thelia/Core/Template/Loop/Currency.php @@ -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); diff --git a/core/lib/Thelia/Core/Template/Loop/Customer.php b/core/lib/Thelia/Core/Template/Loop/Customer.php index 478c3d5bb..1a4b84105 100755 --- a/core/lib/Thelia/Core/Template/Loop/Customer.php +++ b/core/lib/Thelia/Core/Template/Loop/Customer.php @@ -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()); diff --git a/core/lib/Thelia/Core/Template/Loop/Feature.php b/core/lib/Thelia/Core/Template/Loop/Feature.php index 4a631dda8..6c2401f42 100755 --- a/core/lib/Thelia/Core/Template/Loop/Feature.php +++ b/core/lib/Thelia/Core/Template/Loop/Feature.php @@ -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) diff --git a/core/lib/Thelia/Core/Template/Loop/FeatureAvailability.php b/core/lib/Thelia/Core/Template/Loop/FeatureAvailability.php index d298a5234..45eed6dc3 100755 --- a/core/lib/Thelia/Core/Template/Loop/FeatureAvailability.php +++ b/core/lib/Thelia/Core/Template/Loop/FeatureAvailability.php @@ -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) diff --git a/core/lib/Thelia/Core/Template/Loop/FeatureValue.php b/core/lib/Thelia/Core/Template/Loop/FeatureValue.php index a91e25cd0..700eff39c 100755 --- a/core/lib/Thelia/Core/Template/Loop/FeatureValue.php +++ b/core/lib/Thelia/Core/Template/Loop/FeatureValue.php @@ -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 diff --git a/core/lib/Thelia/Core/Template/Loop/Folder.php b/core/lib/Thelia/Core/Template/Loop/Folder.php index 95aedaed6..ca07ffa02 100755 --- a/core/lib/Thelia/Core/Template/Loop/Folder.php +++ b/core/lib/Thelia/Core/Template/Loop/Folder.php @@ -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); diff --git a/core/lib/Thelia/Core/Template/Loop/Image.php b/core/lib/Thelia/Core/Template/Loop/Image.php index 697ce5d73..793b5c03e 100755 --- a/core/lib/Thelia/Core/Template/Loop/Image.php +++ b/core/lib/Thelia/Core/Template/Loop/Image.php @@ -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()) diff --git a/core/lib/Thelia/Core/Template/Loop/Lang.php b/core/lib/Thelia/Core/Template/Loop/Lang.php index 3986fdb56..487acb565 100755 --- a/core/lib/Thelia/Core/Template/Loop/Lang.php +++ b/core/lib/Thelia/Core/Template/Loop/Lang.php @@ -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); diff --git a/core/lib/Thelia/Core/Template/Loop/Message.php b/core/lib/Thelia/Core/Template/Loop/Message.php index 9a73312dd..ad6bd29aa 100644 --- a/core/lib/Thelia/Core/Template/Loop/Message.php +++ b/core/lib/Thelia/Core/Template/Loop/Message.php @@ -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); diff --git a/core/lib/Thelia/Core/Template/Loop/Product.php b/core/lib/Thelia/Core/Template/Loop/Product.php index 17ecd3212..4d785b8b0 100755 --- a/core/lib/Thelia/Core/Template/Loop/Product.php +++ b/core/lib/Thelia/Core/Template/Loop/Product.php @@ -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); diff --git a/core/lib/Thelia/Core/Template/Loop/ProductSaleElement.php b/core/lib/Thelia/Core/Template/Loop/ProductSaleElement.php index ec7cbc37f..7a1a0b8c8 100755 --- a/core/lib/Thelia/Core/Template/Loop/ProductSaleElement.php +++ b/core/lib/Thelia/Core/Template/Loop/ProductSaleElement.php @@ -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()) diff --git a/core/lib/Thelia/Core/Template/Loop/Title.php b/core/lib/Thelia/Core/Template/Loop/Title.php index cd7ec7d5d..38dcb3fe3 100755 --- a/core/lib/Thelia/Core/Template/Loop/Title.php +++ b/core/lib/Thelia/Core/Template/Loop/Title.php @@ -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) diff --git a/core/lib/Thelia/Core/Template/Smarty/Plugins/TheliaLoop.php b/core/lib/Thelia/Core/Template/Smarty/Plugins/TheliaLoop.php index 91036517a..e7ee5e995 100755 --- a/core/lib/Thelia/Core/Template/Smarty/Plugins/TheliaLoop.php +++ b/core/lib/Thelia/Core/Template/Smarty/Plugins/TheliaLoop.php @@ -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 diff --git a/templates/default/debug.html b/templates/default/debug.html index 21f69ad33..461e8eed7 100755 --- a/templates/default/debug.html +++ b/templates/default/debug.html @@ -1,14 +1,11 @@ -

ALL ATTRIBUTES AND THEIR AVAILABILITY

+

ALL ATTRIBUTES

\ No newline at end of file