front end translation management in loops

apply propel patch
6be7fa1c39
This commit is contained in:
Etienne Roudeix
2013-08-22 15:03:31 +02:00
parent 2e6cbe637a
commit 17cc6faec3
185 changed files with 702 additions and 686 deletions

View File

@@ -33,6 +33,8 @@ use Thelia\Core\Template\Loop\Argument\ArgumentCollection;
use Thelia\Core\Template\Loop\Argument\Argument;
use Thelia\Log\Tlog;
use Thelia\Model\Tools\ModelCriteriaTools;
use Thelia\Model\Base\CategoryQuery;
use Thelia\Model\Base\ProductCategoryQuery;
use Thelia\Model\Base\AttributeQuery;
@@ -83,6 +85,9 @@ class Attribute extends BaseLoop
{
$search = AttributeQuery::create();
/* manage translations */
ModelCriteriaTools::getI18n($search, ConfigQuery::read("default_lang_without_translation", 1), $this->request->getSession()->getLocale());
$id = $this->getId();
if (null !== $id) {
@@ -124,10 +129,10 @@ class Attribute extends BaseLoop
foreach($orders as $order) {
switch ($order) {
case "alpha":
$search->addAscendingOrderByColumn(\Thelia\Model\Map\AttributeI18nTableMap::TITLE);
$search->addAscendingOrderByColumn('i18n_TITLE');
break;
case "alpha_reverse":
$search->addDescendingOrderByColumn(\Thelia\Model\Map\AttributeI18nTableMap::TITLE);
$search->addDescendingOrderByColumn('i18n_TITLE');
break;
case "manual":
$search->orderByPosition(Criteria::ASC);
@@ -138,28 +143,18 @@ class Attribute extends BaseLoop
}
}
/**
* Criteria::INNER_JOIN in second parameter for joinWithI18n exclude query without translation.
*
* @todo : verify here if we want results for row without translations.
*/
$search->joinWithI18n(
$this->request->getSession()->getLocale(),
(ConfigQuery::read("default_lang_without_translation", 1)) ? Criteria::LEFT_JOIN : Criteria::INNER_JOIN
);
/* perform search */
$attributes = $this->search($search, $pagination);
$loopResult = new LoopResult();
foreach ($attributes as $attribute) {
$loopResultRow = new LoopResultRow();
$loopResultRow->set("ID", $attribute->getId());
$loopResultRow->set("TITLE",$attribute->getTitle());
$loopResultRow->set("CHAPO", $attribute->getChapo());
$loopResultRow->set("DESCRIPTION", $attribute->getDescription());
$loopResultRow->set("POSTSCRIPTUM", $attribute->getPostscriptum());
$loopResultRow->set("ID", $attribute->getId())
->set("TITLE",$attribute->getVirtualColumn('i18n_TITLE'))
->set("CHAPO", $attribute->getVirtualColumn('i18n_CHAPO'))
->set("DESCRIPTION", $attribute->getVirtualColumn('i18n_DESCRIPTION'))
->set("POSTSCRIPTUM", $attribute->getVirtualColumn('i18n_POSTSCRIPTUM'));
$loopResult->addRow($loopResultRow);
}

View File

@@ -33,6 +33,8 @@ use Thelia\Core\Template\Loop\Argument\ArgumentCollection;
use Thelia\Core\Template\Loop\Argument\Argument;
use Thelia\Log\Tlog;
use Thelia\Model\Tools\ModelCriteriaTools;
use Thelia\Model\Base\AttributeAvQuery;
use Thelia\Model\ConfigQuery;
use Thelia\Type\TypeCollection;
@@ -76,6 +78,9 @@ class AttributeAvailability extends BaseLoop
{
$search = AttributeAvQuery::create();
/* manage translations */
ModelCriteriaTools::getI18n($search, ConfigQuery::read("default_lang_without_translation", 1), $this->request->getSession()->getLocale());
$id = $this->getId();
if (null !== $id) {
@@ -99,10 +104,10 @@ class AttributeAvailability extends BaseLoop
foreach($orders as $order) {
switch ($order) {
case "alpha":
$search->addAscendingOrderByColumn(\Thelia\Model\Map\AttributeAvI18nTableMap::TITLE);
$search->addAscendingOrderByColumn('i18n_TITLE');
break;
case "alpha_reverse":
$search->addDescendingOrderByColumn(\Thelia\Model\Map\AttributeAvI18nTableMap::TITLE);
$search->addDescendingOrderByColumn('i18n_TITLE');
break;
case "manual":
$search->orderByPosition(Criteria::ASC);
@@ -113,28 +118,18 @@ class AttributeAvailability extends BaseLoop
}
}
/**
* Criteria::INNER_JOIN in second parameter for joinWithI18n exclude query without translation.
*
* @todo : verify here if we want results for row without translations.
*/
$search->joinWithI18n(
$this->request->getSession()->getLocale(),
(ConfigQuery::read("default_lang_without_translation", 1)) ? Criteria::LEFT_JOIN : Criteria::INNER_JOIN
);
/* perform search */
$attributesAv = $this->search($search, $pagination);
$loopResult = new LoopResult();
foreach ($attributesAv as $attributeAv) {
$loopResultRow = new LoopResultRow();
$loopResultRow->set("ID", $attributeAv->getId());
$loopResultRow->set("TITLE",$attributeAv->getTitle());
$loopResultRow->set("CHAPO", $attributeAv->getChapo());
$loopResultRow->set("DESCRIPTION", $attributeAv->getDescription());
$loopResultRow->set("POSTSCRIPTUM", $attributeAv->getPostscriptum());
$loopResultRow->set("ID", $attributeAv->getId())
->set("TITLE",$attributeAv->getVirtualColumn('i18n_TITLE'))
->set("CHAPO", $attributeAv->getVirtualColumn('i18n_CHAPO'))
->set("DESCRIPTION", $attributeAv->getVirtualColumn('i18n_DESCRIPTION'))
->set("POSTSCRIPTUM", $attributeAv->getVirtualColumn('i18n_POSTSCRIPTUM'));
$loopResult->addRow($loopResultRow);
}

View File

@@ -33,7 +33,11 @@ use Thelia\Core\Template\Loop\Argument\ArgumentCollection;
use Thelia\Core\Template\Loop\Argument\Argument;
use Thelia\Log\Tlog;
use Thelia\Model\Tools\ModelCriteriaTools;
use Thelia\Model\Base\AttributeCombinationQuery;
use Thelia\Model\Map\AttributeAvTableMap;
use Thelia\Model\Map\AttributeTableMap;
use Thelia\Model\ConfigQuery;
use Thelia\Type\TypeCollection;
use Thelia\Type;
@@ -58,9 +62,9 @@ class AttributeCombination extends BaseLoop
new Argument(
'order',
new TypeCollection(
new Type\EnumListType(array('attribute_availability', 'attribute_availability_reverse', 'attribute', 'attribute_reverse'))
new Type\EnumListType(array('alpha', 'alpha_reverse'))
),
'attribute'
'alpha'
)
);
}
@@ -74,6 +78,26 @@ class AttributeCombination extends BaseLoop
{
$search = AttributeCombinationQuery::create();
/* manage attribute translations */
ModelCriteriaTools::getI18n(
$search,
ConfigQuery::read("default_lang_without_translation", 1),
$this->request->getSession()->getLocale(),
array('TITLE', 'CHAPO', 'DESCRIPTION', 'POSTSCRIPTUM'),
AttributeTableMap::TABLE_NAME,
'ATTRIBUTE_ID'
);
/* manage attributeAv translations */
ModelCriteriaTools::getI18n(
$search,
ConfigQuery::read("default_lang_without_translation", 1),
$this->request->getSession()->getLocale(),
array('TITLE', 'CHAPO', 'DESCRIPTION', 'POSTSCRIPTUM'),
AttributeAvTableMap::TABLE_NAME,
'ATTRIBUTE_AV_ID'
);
$productSaleElement = $this->getProduct_sale_element();
$search->filterByProductSaleElementsId($productSaleElement, Criteria::EQUAL);
@@ -82,17 +106,11 @@ class AttributeCombination extends BaseLoop
foreach($orders as $order) {
switch ($order) {
case "attribute_availability":
//$search->addAscendingOrderByColumn(\Thelia\Model\Map\AttributeI18nTableMap::TITLE);
case "alpha":
$search->addAscendingOrderByColumn(AttributeTableMap::TABLE_NAME . '_i18n_TITLE');
break;
case "attribute_availability_reverse":
//$search->addDescendingOrderByColumn(\Thelia\Model\Map\AttributeI18nTableMap::TITLE);
break;
case "attribute":
//$search->orderByPosition(Criteria::ASC);
break;
case "attribute_reverse":
//$search->orderByPosition(Criteria::DESC);
case "alpha_reverse":
$search->addDescendingOrderByColumn(AttributeTableMap::TABLE_NAME . '_i18n_TITLE');
break;
}
}
@@ -104,18 +122,15 @@ class AttributeCombination extends BaseLoop
foreach ($attributeCombinations as $attributeCombination) {
$loopResultRow = new LoopResultRow();
$attribute = $attributeCombination->getAttribute();
$attributeAvailability = $attributeCombination->getAttributeAv();
$loopResultRow
->set("ATTRIBUTE_TITLE", $attribute->getTitle())
->set("ATTRIBUTE_CHAPO", $attribute->getChapo())
->set("ATTRIBUTE_DESCRIPTION", $attribute->getDescription())
->set("ATTRIBUTE_POSTSCRIPTUM", $attribute->getPostscriptum())
->set("ATTRIBUTE_AVAILABILITY_TITLE", $attributeAvailability->getTitle())
->set("ATTRIBUTE_AVAILABILITY_CHAPO", $attributeAvailability->getChapo())
->set("ATTRIBUTE_AVAILABILITY_DESCRIPTION", $attributeAvailability->getDescription())
->set("ATTRIBUTE_AVAILABILITY_POSTSCRIPTUM", $attributeAvailability->getPostscriptum());
->set("ATTRIBUTE_TITLE", $attributeCombination->getVirtualColumn(AttributeTableMap::TABLE_NAME . '_i18n_TITLE'))
->set("ATTRIBUTE_CHAPO", $attributeCombination->getVirtualColumn(AttributeTableMap::TABLE_NAME . '_i18n_CHAPO'))
->set("ATTRIBUTE_DESCRIPTION", $attributeCombination->getVirtualColumn(AttributeTableMap::TABLE_NAME . '_i18n_DESCRIPTION'))
->set("ATTRIBUTE_POSTSCRIPTUM", $attributeCombination->getVirtualColumn(AttributeTableMap::TABLE_NAME . '_i18n_POSTSCRIPTUM'))
->set("ATTRIBUTE_AVAILABILITY_TITLE", $attributeCombination->getVirtualColumn(AttributeAvTableMap::TABLE_NAME . '_i18n_TITLE'))
->set("ATTRIBUTE_AVAILABILITY_CHAPO", $attributeCombination->getVirtualColumn(AttributeAvTableMap::TABLE_NAME . '_i18n_CHAPO'))
->set("ATTRIBUTE_AVAILABILITY_DESCRIPTION", $attributeCombination->getVirtualColumn(AttributeAvTableMap::TABLE_NAME . '_i18n_DESCRIPTION'))
->set("ATTRIBUTE_AVAILABILITY_POSTSCRIPTUM", $attributeCombination->getVirtualColumn(AttributeAvTableMap::TABLE_NAME . '_i18n_POSTSCRIPTUM'));
$loopResult->addRow($loopResultRow);
}

View File

@@ -32,6 +32,8 @@ use Thelia\Core\Template\Loop\Argument\ArgumentCollection;
use Thelia\Core\Template\Loop\Argument\Argument;
use Thelia\Log\Tlog;
use Thelia\Model\Tools\ModelCriteriaTools;
use Thelia\Model\CategoryQuery;
use Thelia\Model\ConfigQuery;
use Thelia\Type\TypeCollection;
@@ -95,6 +97,9 @@ class Category extends BaseLoop
{
$search = CategoryQuery::create();
/* manage translations */
ModelCriteriaTools::getI18n($search, ConfigQuery::read("default_lang_without_translation", 1), $this->request->getSession()->getLocale());
$id = $this->getId();
if (!is_null($id)) {
@@ -131,10 +136,10 @@ class Category extends BaseLoop
foreach($orders as $order) {
switch ($order) {
case "alpha":
$search->addAscendingOrderByColumn(\Thelia\Model\Map\CategoryI18nTableMap::TITLE);
$search->addAscendingOrderByColumn('i18n_TITLE');
break;
case "alpha_reverse":
$search->addDescendingOrderByColumn(\Thelia\Model\Map\CategoryI18nTableMap::TITLE);
$search->addDescendingOrderByColumn('i18n_TITLE');
break;
case "manual_reverse":
$search->orderByPosition(Criteria::DESC);
@@ -150,50 +155,20 @@ class Category extends BaseLoop
}
}
/**
* \Criteria::INNER_JOIN in second parameter for joinWithI18n exclude query without translation.
*
* @todo : verify here if we want results for row without translations.
*/
if(ConfigQuery::read("default_lang_without_translation", 1) == 0) {
/*
* don't use the following to be able to use the same getter than below
* $search->joinWithI18n( $this->request->getSession()->getLocale(), Criteria::INNER_JOIN );
*/
$search->joinCategoryI18n('asked_locale_i18n', Criteria::INNER_JOIN)
->addJoinCondition('asked_locale_i18n' ,'`asked_locale_i18n`.LOCALE = ?', 'en_EN', null, \PDO::PARAM_STR);
$search->withColumn('`asked_locale_i18n`.TITLE', 'i18n_TITLE');
$search->withColumn('`asked_locale_i18n`.CHAPO', 'i18n_CHAPO');
$search->withColumn('`asked_locale_i18n`.DESCRIPTION', 'i18n_DESCRIPTION');
$search->withColumn('`asked_locale_i18n`.POSTSCRIPTUM', 'i18n_POSTSCRIPTUM');
} else {
$search->joinCategoryI18n('default_locale_i18n')
->addJoinCondition('default_locale_i18n' ,'`default_locale_i18n`.LOCALE = ?', 'fr_FR', null, \PDO::PARAM_STR);
$search->joinCategoryI18n('asked_locale_i18n')
->addJoinCondition('asked_locale_i18n' ,'`asked_locale_i18n`.LOCALE = ?', 'en_EN', null, \PDO::PARAM_STR);
$search->where('NOT ISNULL(`asked_locale_i18n`.ID)')->_or()->where('NOT ISNULL(`default_locale_i18n`.ID)');
$search->withColumn('CASE WHEN ISNULL(`asked_locale_i18n`.ID) THEN `asked_locale_i18n`.TITLE ELSE `asked_locale_i18n`.TITLE END', 'i18n_TITLE');
$search->withColumn('CASE WHEN ISNULL(`asked_locale_i18n`.ID) THEN `asked_locale_i18n`.CHAPO ELSE `asked_locale_i18n`.CHAPO END', 'i18n_CHAPO');
$search->withColumn('CASE WHEN ISNULL(`asked_locale_i18n`.ID) THEN `asked_locale_i18n`.DESCRIPTION ELSE `asked_locale_i18n`.DESCRIPTION END', 'i18n_DESCRIPTION');
$search->withColumn('CASE WHEN ISNULL(`asked_locale_i18n`.ID) THEN `asked_locale_i18n`.POSTSCRIPTUM ELSE `asked_locale_i18n`.POSTSCRIPTUM END', 'i18n_POSTSCRIPTUM');
}
/* perform search */
$categories = $this->search($search, $pagination);
/* @todo */
$notEmpty = $this->getNot_empty();
$loopResult = new LoopResult();
foreach ($categories as $category) {
if ($this->getNotEmpty() && $category->countAllProducts() == 0) continue;
$x = $category->getTitle();
/*
* no cause pagination lost :
* if ($this->getNotEmpty() && $category->countAllProducts() == 0) continue;
*/
$loopResultRow = new LoopResultRow();

View File

@@ -31,6 +31,8 @@ use Thelia\Core\Template\Element\LoopResultRow;
use Thelia\Core\Template\Loop\Argument\ArgumentCollection;
use Thelia\Core\Template\Loop\Argument\Argument;
use Thelia\Model\Tools\ModelCriteriaTools;
use Thelia\Model\FolderQuery;
use Thelia\Model\Map\ContentTableMap;
use Thelia\Model\ContentFolderQuery;
@@ -85,6 +87,9 @@ class Content extends BaseLoop
{
$search = ContentQuery::create();
/* manage translations */
ModelCriteriaTools::getI18n($search, ConfigQuery::read("default_lang_without_translation", 1), $this->request->getSession()->getLocale());
$id = $this->getId();
if (!is_null($id)) {
@@ -153,10 +158,10 @@ class Content extends BaseLoop
foreach ($orders as $order) {
switch ($order) {
case "alpha":
$search->addAscendingOrderByColumn(\Thelia\Model\Map\ContentI18nTableMap::TITLE);
$search->addAscendingOrderByColumn('i18n_TITLE');
break;
case "alpha-reverse":
$search->addDescendingOrderByColumn(\Thelia\Model\Map\ContentI18nTableMap::TITLE);
$search->addDescendingOrderByColumn('i18n_TITLE');
break;
case "manual":
if(null === $folder || count($folder) != 1)
@@ -199,17 +204,7 @@ class Content extends BaseLoop
);
}
/**
* Criteria::INNER_JOIN in second parameter for joinWithI18n exclude query without translation.
*
* @todo : verify here if we want results for row without translations.
*/
$search->joinWithI18n(
$this->request->getSession()->getLocale(),
(ConfigQuery::read("default_lang_without_translation", 1)) ? Criteria::LEFT_JOIN : Criteria::INNER_JOIN
);
/* perform search */
$search->groupBy(ContentTableMap::ID);
$contents = $this->search($search, $pagination);
@@ -220,10 +215,10 @@ class Content extends BaseLoop
$loopResultRow = new LoopResultRow();
$loopResultRow->set("ID", $content->getId())
->set("TITLE",$content->getTitle())
->set("CHAPO", $content->getChapo())
->set("DESCRIPTION", $content->getDescription())
->set("POSTSCRIPTUM", $content->getPostscriptum())
->set("TITLE",$content->getVirtualColumn('i18n_TITLE'))
->set("CHAPO", $content->getVirtualColumn('i18n_CHAPO'))
->set("DESCRIPTION", $content->getVirtualColumn('i18n_DESCRIPTION'))
->set("POSTSCRIPTUM", $content->getVirtualColumn('i18n_POSTSCRIPTUM'))
->set("POSITION", $content->getPosition())
;

View File

@@ -31,6 +31,8 @@ use Thelia\Core\Template\Element\LoopResultRow;
use Thelia\Core\Template\Loop\Argument\ArgumentCollection;
use Thelia\Core\Template\Loop\Argument\Argument;
use Thelia\Model\Tools\ModelCriteriaTools;
use Thelia\Model\CountryQuery;
use Thelia\Model\ConfigQuery;
@@ -68,6 +70,9 @@ class Country extends BaseLoop
{
$search = CountryQuery::create();
/* manage translations */
ModelCriteriaTools::getI18n($search, ConfigQuery::read("default_lang_without_translation", 1), $this->request->getSession()->getLocale());
$id = $this->getId();
if (null !== $id) {
@@ -94,31 +99,20 @@ class Country extends BaseLoop
$search->filterById($exclude, Criteria::NOT_IN);
}
/**
* Criteria::INNER_JOIN in second parameter for joinWithI18n exclude query without translation.
*
* @todo : verify here if we want results for row without translations.
*/
$search->joinWithI18n(
$this->request->getSession()->getLocale(),
(ConfigQuery::read("default_lang_without_translation", 1)) ? Criteria::LEFT_JOIN : Criteria::INNER_JOIN
);
$search->addAscendingOrderByColumn(\Thelia\Model\Map\CountryI18nTableMap::TITLE);
$search->addAscendingOrderByColumn('i18n_TITLE');
/* perform search */
$countries = $this->search($search, $pagination);
$loopResult = new LoopResult();
foreach ($countries as $country) {
$loopResultRow = new LoopResultRow();
$loopResultRow->set("ID", $country->getId());
$loopResultRow->set("AREA", $country->getAreaId());
$loopResultRow->set("TITLE", $country->getTitle());
$loopResultRow->set("CHAPO", $country->getChapo());
$loopResultRow->set("DESCRIPTION", $country->getDescription());
$loopResultRow->set("POSTSCRIPTUM", $country->getPostscriptum());
$loopResultRow->set("ID", $country->getId())
->set("TITLE",$country->getVirtualColumn('i18n_TITLE'))
->set("CHAPO", $country->getVirtualColumn('i18n_CHAPO'))
->set("DESCRIPTION", $country->getVirtualColumn('i18n_DESCRIPTION'))
->set("POSTSCRIPTUM", $country->getVirtualColumn('i18n_POSTSCRIPTUM'));
$loopResultRow->set("ISOCODE", $country->getIsocode());
$loopResultRow->set("ISOALPHA2", $country->getIsoalpha2());
$loopResultRow->set("ISOALPHA3", $country->getIsoalpha3());

View File

@@ -31,6 +31,8 @@ use Thelia\Core\Template\Element\LoopResultRow;
use Thelia\Core\Template\Loop\Argument\ArgumentCollection;
use Thelia\Core\Template\Loop\Argument\Argument;
use Thelia\Model\Tools\ModelCriteriaTools;
use Thelia\Model\Base\CategoryQuery;
use Thelia\Model\Base\ProductCategoryQuery;
use Thelia\Model\Base\FeatureQuery;
@@ -81,6 +83,9 @@ class Feature extends BaseLoop
{
$search = FeatureQuery::create();
/* manage translations */
ModelCriteriaTools::getI18n($search, ConfigQuery::read("default_lang_without_translation", 1), $this->request->getSession()->getLocale());
$id = $this->getId();
if (null !== $id) {
@@ -122,10 +127,10 @@ class Feature extends BaseLoop
foreach ($orders as $order) {
switch ($order) {
case "alpha":
$search->addAscendingOrderByColumn(\Thelia\Model\Map\FeatureI18nTableMap::TITLE);
$search->addAscendingOrderByColumn('i18n_TITLE');
break;
case "alpha-reverse":
$search->addDescendingOrderByColumn(\Thelia\Model\Map\FeatureI18nTableMap::TITLE);
$search->addDescendingOrderByColumn('i18n_TITLE');
break;
case "manual":
$search->orderByPosition(Criteria::ASC);
@@ -136,28 +141,18 @@ class Feature extends BaseLoop
}
}
/**
* Criteria::INNER_JOIN in second parameter for joinWithI18n exclude query without translation.
*
* @todo : verify here if we want results for row without translations.
*/
$search->joinWithI18n(
$this->request->getSession()->getLocale(),
(ConfigQuery::read("default_lang_without_translation", 1)) ? Criteria::LEFT_JOIN : Criteria::INNER_JOIN
);
/* perform search */
$features = $this->search($search, $pagination);
$loopResult = new LoopResult();
foreach ($features as $feature) {
$loopResultRow = new LoopResultRow();
$loopResultRow->set("ID", $feature->getId());
$loopResultRow->set("TITLE",$feature->getTitle());
$loopResultRow->set("CHAPO", $feature->getChapo());
$loopResultRow->set("DESCRIPTION", $feature->getDescription());
$loopResultRow->set("POSTSCRIPTUM", $feature->getPostscriptum());
$loopResultRow->set("ID", $feature->getId())
->set("TITLE",$feature->getVirtualColumn('i18n_TITLE'))
->set("CHAPO", $feature->getVirtualColumn('i18n_CHAPO'))
->set("DESCRIPTION", $feature->getVirtualColumn('i18n_DESCRIPTION'))
->set("POSTSCRIPTUM", $feature->getVirtualColumn('i18n_POSTSCRIPTUM'));
$loopResult->addRow($loopResultRow);
}

View File

@@ -31,6 +31,8 @@ use Thelia\Core\Template\Element\LoopResultRow;
use Thelia\Core\Template\Loop\Argument\ArgumentCollection;
use Thelia\Core\Template\Loop\Argument\Argument;
use Thelia\Model\Tools\ModelCriteriaTools;
use Thelia\Model\Base\FeatureAvQuery;
use Thelia\Model\ConfigQuery;
use Thelia\Type\TypeCollection;
@@ -74,6 +76,9 @@ class FeatureAvailability extends BaseLoop
{
$search = FeatureAvQuery::create();
/* manage translations */
ModelCriteriaTools::getI18n($search, ConfigQuery::read("default_lang_without_translation", 1), $this->request->getSession()->getLocale());
$id = $this->getId();
if (null !== $id) {
@@ -97,10 +102,10 @@ class FeatureAvailability extends BaseLoop
foreach ($orders as $order) {
switch ($order) {
case "alpha":
$search->addAscendingOrderByColumn(\Thelia\Model\Map\FeatureAvI18nTableMap::TITLE);
$search->addAscendingOrderByColumn('i18n_TITLE');
break;
case "alpha-reverse":
$search->addDescendingOrderByColumn(\Thelia\Model\Map\FeatureAvI18nTableMap::TITLE);
$search->addDescendingOrderByColumn('i18n_TITLE');
break;
case "manual":
$search->orderByPosition(Criteria::ASC);
@@ -111,28 +116,18 @@ class FeatureAvailability extends BaseLoop
}
}
/**
* Criteria::INNER_JOIN in second parameter for joinWithI18n exclude query without translation.
*
* @todo : verify here if we want results for row without translations.
*/
$search->joinWithI18n(
$this->request->getSession()->getLocale(),
(ConfigQuery::read("default_lang_without_translation", 1)) ? Criteria::LEFT_JOIN : Criteria::INNER_JOIN
);
/* perform search */
$featuresAv = $this->search($search, $pagination);
$loopResult = new LoopResult();
foreach ($featuresAv as $featureAv) {
$loopResultRow = new LoopResultRow();
$loopResultRow->set("ID", $featureAv->getId());
$loopResultRow->set("TITLE",$featureAv->getTitle());
$loopResultRow->set("CHAPO", $featureAv->getChapo());
$loopResultRow->set("DESCRIPTION", $featureAv->getDescription());
$loopResultRow->set("POSTSCRIPTUM", $featureAv->getPostscriptum());
$loopResultRow->set("ID", $featureAv->getId())
->set("TITLE",$featureAv->getVirtualColumn('i18n_TITLE'))
->set("CHAPO", $featureAv->getVirtualColumn('i18n_CHAPO'))
->set("DESCRIPTION", $featureAv->getVirtualColumn('i18n_DESCRIPTION'))
->set("POSTSCRIPTUM", $featureAv->getVirtualColumn('i18n_POSTSCRIPTUM'));
$loopResult->addRow($loopResultRow);
}

View File

@@ -33,9 +33,12 @@ use Thelia\Core\Template\Loop\Argument\ArgumentCollection;
use Thelia\Core\Template\Loop\Argument\Argument;
use Thelia\Log\Tlog;
use Thelia\Model\Tools\ModelCriteriaTools;
use Thelia\Model\Base\FeatureProductQuery;
use Thelia\Model\ConfigQuery;
use Thelia\Model\FeatureAvQuery;
use Thelia\Model\Map\FeatureAvTableMap;
use Thelia\Model\Map\FeatureProductTableMap;
use Thelia\Type\TypeCollection;
use Thelia\Type;
@@ -80,6 +83,16 @@ class FeatureValue extends BaseLoop
{
$search = FeatureProductQuery::create();
/* manage featureAv translations */
ModelCriteriaTools::getI18n(
$search,
ConfigQuery::read("default_lang_without_translation", 1),
$this->request->getSession()->getLocale(),
array('TITLE', 'CHAPO', 'DESCRIPTION', 'POSTSCRIPTUM'),
FeatureAvTableMap::TABLE_NAME,
'FEATURE_AV_ID'
);
$feature = $this->getFeature();
$search->filterByFeatureId($feature, Criteria::EQUAL);
@@ -109,16 +122,16 @@ class FeatureValue extends BaseLoop
foreach($orders as $order) {
switch ($order) {
case "alpha":
//$search->addAscendingOrderByColumn(\Thelia\Model\Map\FeatureI18nTableMap::TITLE);
$search->addAscendingOrderByColumn(FeatureAvTableMap::TABLE_NAME . '_i18n_TITLE');
break;
case "alpha_reverse":
//$search->addDescendingOrderByColumn(\Thelia\Model\Map\FeatureI18nTableMap::TITLE);
$search->addDescendingOrderByColumn(FeatureAvTableMap::TABLE_NAME . '_i18n_TITLE');
break;
case "manual":
//$search->orderByPosition(Criteria::ASC);
$search->orderByPosition(Criteria::ASC);
break;
case "manual_reverse":
//$search->orderByPosition(Criteria::DESC);
$search->orderByPosition(Criteria::DESC);
break;
}
}
@@ -131,19 +144,11 @@ class FeatureValue extends BaseLoop
$loopResultRow = new LoopResultRow();
$loopResultRow->set("ID", $featureValue->getId());
$loopResultRow->set("PERSONAL_VALUE", $featureValue->getByDefault());
$featureAvailability = null;
if($featureValue->getFeatureAvId() !== null) {
$featureAvailability = FeatureAvQuery::create()
->joinWithI18n('fr_FR')
->findPk($featureValue->getFeatureAvId());
}
$loopResultRow->set("TITLE", ($featureAvailability === null ? '' : $featureAvailability->getTitle()));
$loopResultRow->set("CHAPO", ($featureAvailability === null ? '' : $featureAvailability->getChapo()));
$loopResultRow->set("DESCRIPTION", ($featureAvailability === null ? '' : $featureAvailability->getDescription()));
$loopResultRow->set("POSTSCRIPTUM", ($featureAvailability === null ? '' : $featureAvailability->getPostscriptum()));
$loopResultRow->set("PERSONAL_VALUE", $featureValue->getByDefault())
->set("TITLE",$featureValue->getVirtualColumn(FeatureAvTableMap::TABLE_NAME . '_i18n_TITLE'))
->set("CHAPO", $featureValue->getVirtualColumn(FeatureAvTableMap::TABLE_NAME . '_i18n_CHAPO'))
->set("DESCRIPTION", $featureValue->getVirtualColumn(FeatureAvTableMap::TABLE_NAME . '_i18n_DESCRIPTION'))
->set("POSTSCRIPTUM", $featureValue->getVirtualColumn(FeatureAvTableMap::TABLE_NAME . '_i18n_POSTSCRIPTUM'));
$loopResult->addRow($loopResultRow);
}

View File

@@ -32,6 +32,8 @@ use Thelia\Core\Template\Loop\Argument\ArgumentCollection;
use Thelia\Core\Template\Loop\Argument\Argument;
use Thelia\Log\Tlog;
use Thelia\Model\Tools\ModelCriteriaTools;
use Thelia\Model\FolderQuery;
use Thelia\Model\ConfigQuery;
use Thelia\Type\TypeCollection;
@@ -77,6 +79,9 @@ class Folder extends BaseLoop
{
$search = FolderQuery::create();
/* manage translations */
ModelCriteriaTools::getI18n($search, ConfigQuery::read("default_lang_without_translation", 1), $this->request->getSession()->getLocale());
$id = $this->getId();
if (!is_null($id)) {
@@ -114,10 +119,10 @@ class Folder extends BaseLoop
foreach($orders as $order) {
switch ($order) {
case "alpha":
$search->addAscendingOrderByColumn(\Thelia\Model\Map\FolderI18nTableMap::TITLE);
$search->addAscendingOrderByColumn('i18n_TITLE');
break;
case "alpha_reverse":
$search->addDescendingOrderByColumn(\Thelia\Model\Map\FolderI18nTableMap::TITLE);
$search->addDescendingOrderByColumn('i18n_TITLE');
break;
case "manual_reverse":
$search->orderByPosition(Criteria::DESC);
@@ -133,35 +138,29 @@ class Folder extends BaseLoop
}
}
/**
* \Criteria::INNER_JOIN in second parameter for joinWithI18n exclude query without translation.
*
* @todo : verify here if we want results for row without translations.
*/
$search->joinWithI18n(
$this->request->getSession()->getLocale(),
(ConfigQuery::read("default_lang_without_translation", 1)) ? Criteria::LEFT_JOIN : Criteria::INNER_JOIN
);
/* perform search */
$folders = $this->search($search, $pagination);
/* @todo */
$notEmpty = $this->getNot_empty();
$loopResult = new LoopResult();
foreach ($folders as $folder) {
if ($notEmpty && $folder->countAllProducts() == 0) continue;
/*
* no cause pagination lost :
* if ($notEmpty && $folder->countAllProducts() == 0) continue;
*/
$loopResultRow = new LoopResultRow();
$loopResultRow
->set("ID", $folder->getId())
->set("TITLE",$folder->getTitle())
->set("CHAPO", $folder->getChapo())
->set("DESCRIPTION", $folder->getDescription())
->set("POSTSCRIPTUM", $folder->getPostscriptum())
->set("TITLE",$folder->getVirtualColumn('i18n_TITLE'))
->set("CHAPO", $folder->getVirtualColumn('i18n_CHAPO'))
->set("DESCRIPTION", $folder->getVirtualColumn('i18n_DESCRIPTION'))
->set("POSTSCRIPTUM", $folder->getVirtualColumn('i18n_POSTSCRIPTUM'))
->set("PARENT", $folder->getParent())
->set("CONTENT_COUNT", $folder->countChild())
->set("VISIBLE", $folder->getVisible() ? "1" : "0")

View File

@@ -33,6 +33,8 @@ use Thelia\Core\Template\Loop\Argument\ArgumentCollection;
use Thelia\Core\Template\Loop\Argument\Argument;
use Thelia\Log\Tlog;
use Thelia\Model\Tools\ModelCriteriaTools;
use Thelia\Model\CategoryQuery;
use Thelia\Model\Map\FeatureProductTableMap;
use Thelia\Model\Map\ProductPriceTableMap;
@@ -135,16 +137,8 @@ class Product extends BaseLoop
{
$search = ProductQuery::create();
/**
* Criteria::INNER_JOIN in second parameter for joinWithI18n exclude query without translation.
*
* @todo : verify here if we want results for row without translations.
*/
$search->joinWithI18n(
$this->request->getSession()->getLocale(),
(ConfigQuery::read("default_lang_without_translation", 1)) ? Criteria::LEFT_JOIN : Criteria::INNER_JOIN
);
/* manage translations */
ModelCriteriaTools::getI18n($search, ConfigQuery::read("default_lang_without_translation", 1), $this->request->getSession()->getLocale());
$attributeNonStrictMatch = $this->getAttribute_non_strict_match();
$isPSELeftJoinList = array();
@@ -460,10 +454,10 @@ class Product extends BaseLoop
foreach($orders as $order) {
switch ($order) {
case "alpha":
$search->addAscendingOrderByColumn(\Thelia\Model\Map\ProductI18nTableMap::TITLE);
$search->addAscendingOrderByColumn('i18n_TITLE');
break;
case "alpha_reverse":
$search->addDescendingOrderByColumn(\Thelia\Model\Map\ProductI18nTableMap::TITLE);
$search->addDescendingOrderByColumn('i18n_TITLE');
break;
case "min_price":
$search->addAscendingOrderByColumn('real_lowest_price', Criteria::ASC);
@@ -506,6 +500,7 @@ class Product extends BaseLoop
}
}
/* perform search */
$products = $this->search($search, $pagination);
$loopResult = new LoopResult();
@@ -515,10 +510,10 @@ class Product extends BaseLoop
$loopResultRow->set("ID", $product->getId())
->set("REF",$product->getRef())
->set("TITLE",$product->getTitle())
->set("CHAPO", $product->getChapo())
->set("DESCRIPTION", $product->getDescription())
->set("POSTSCRIPTUM", $product->getPostscriptum())
->set("TITLE",$product->getVirtualColumn('i18n_TITLE'))
->set("CHAPO", $product->getVirtualColumn('i18n_CHAPO'))
->set("DESCRIPTION", $product->getVirtualColumn('i18n_DESCRIPTION'))
->set("POSTSCRIPTUM", $product->getVirtualColumn('i18n_POSTSCRIPTUM'))
->set("BEST_PRICE", $product->getVirtualColumn('real_lowest_price'))
->set("IS_PROMO", $product->getVirtualColumn('main_product_is_promo'))
->set("IS_NEW", $product->getVirtualColumn('main_product_is_new'))

View File

@@ -132,16 +132,6 @@ class ProductSaleElements extends BaseLoop
->set("PRICE", $PSEValue->getVirtualColumn('price_PRICE'))
->set("PROMO_PRICE", $PSEValue->getVirtualColumn('price_PROMO_PRICE'));
//$price = $PSEValue->getAttributeAv();
/*
$attributeAvailability = $PSEValue->getAttributeAv();
$loopResultRow->set("TITLE", ($attributeAvailability === null ? '' : $attributeAvailability->getTitle()));
$loopResultRow->set("CHAPO", ($attributeAvailability === null ? '' : $attributeAvailability->getChapo()));
$loopResultRow->set("DESCRIPTION", ($attributeAvailability === null ? '' : $attributeAvailability->getDescription()));
$loopResultRow->set("POSTSCRIPTUM", ($attributeAvailability === null ? '' : $attributeAvailability->getPostscriptum()));*/
$loopResult->addRow($loopResultRow);
}

View File

@@ -31,6 +31,8 @@ use Thelia\Core\Template\Element\LoopResultRow;
use Thelia\Core\Template\Loop\Argument\ArgumentCollection;
use Thelia\Core\Template\Loop\Argument\Argument;
use Thelia\Model\Tools\ModelCriteriaTools;
use Thelia\Model\CustomerTitleQuery;
use Thelia\Model\ConfigQuery;
@@ -64,35 +66,28 @@ class Title extends BaseLoop
{
$search = CustomerTitleQuery::create();
/* manage translations */
ModelCriteriaTools::getI18n($search, ConfigQuery::read("default_lang_without_translation", 1), $this->request->getSession()->getLocale(), array('SHORT', 'LONG'));
$id = $this->getId();
if (null !== $id) {
$search->filterById($id, Criteria::IN);
}
/**
* Criteria::INNER_JOIN in second parameter for joinWithI18n exclude query without translation.
*
* @todo : verify here if we want results for row without translations.
*/
$search->joinWithI18n(
$this->request->getSession()->getLocale(),
(ConfigQuery::read("default_lang_without_translation", 1)) ? Criteria::LEFT_JOIN : Criteria::INNER_JOIN
);
$search->orderByPosition();
/* perform search */
$titles = $this->search($search, $pagination);
$loopResult = new LoopResult();
foreach ($titles as $title) {
$loopResultRow = new LoopResultRow();
$loopResultRow->set("ID", $title->getId());
$loopResultRow->set("DEFAULT", $title->getByDefault());
$loopResultRow->set("SHORT", $title->getShort());
$loopResultRow->set("LONG", $title->getLong());
$loopResultRow->set("ID", $title->getId())
->set("DEFAULT", $title->getByDefault())
->set("SHORT", $title->getVirtualColumn('i18n_SHORT'))
->set("LONG", $title->getVirtualColumn('i18n_LONG'));
$loopResult->addRow($loopResultRow);
}