diff --git a/modules/purchaseguide/classes/GuideCategory.php b/modules/purchaseguide/classes/GuideCategory.php
index 05dfef3f..ce9a36a2 100644
--- a/modules/purchaseguide/classes/GuideCategory.php
+++ b/modules/purchaseguide/classes/GuideCategory.php
@@ -308,6 +308,9 @@ class GuideCategory extends ObjectModel
WHERE `id_guide_category` = '.intval($id_guide_category);
return Db::getInstance()->getValue($sql);
}
+
+
+
public function findByCategoryFamily($id, $id_lang)
{
@@ -328,23 +331,83 @@ class GuideCategory extends ObjectModel
return '';
}
+ /**
+ * Get Parent category
+ * @param int $id_category
+ * @param int $id_lang
+ * @return array
+ */
+ public function getCategoryLang($id_category, $id_lang)
+ {
+ $sql = "SELECT gc.*, gcl.name, gcl.link_rewrite
+ FROM `"._DB_PREFIX_."guide_category` gc, `"._DB_PREFIX_."guide_category_lang` gcl
+ WHERE gc.id_guide_category=gcl.id_guide_category AND gcl.id_lang=".$id_lang.
+ " AND gc.id_guide_category=".$id_category;
+ $result = Db::getInstance()->getRow($sql);
+
+ return $result;
+ }
+
+ public function getAutoCategoryLang($id_category, $id_lang)
+ {
+ $sql = "SELECT * FROM ps_guide_category gc, ps_guide_category_lang gcl
+ WHERE gc.active=1 AND gc.id_guide_category=gcl.id_guide_category
+ AND gc.id_parent=".$id_category." AND gcl.id_lang=".$id_lang.
+ " ORDER BY position ASC";
+ $result = Db::getInstance()->getRow($sql);
+
+ return $result;
+ }
+
+ /**
+ * Gest All main categories
+ * @param int $id_lang
+ * @return array
+ */
+ public static function getRoot($id_lang, $active = 1)
+ {
+ $sql = "SELECT gc.id_guide_category, gcl.name, gcl.link_rewrite, gcl.meta_title,
+ gcl.meta_description, gcl.meta_keywords
+ FROM ps_guide_category gc, ps_guide_category_lang gcl
+ WHERE ".($active==1?' gc.active=1 ':' 1 ')." AND gc.id_guide_category=gcl.id_guide_category
+ AND gc.id_parent=0 AND gcl.id_lang=".$id_lang;
+ $result = Db::getInstance()->ExecuteS($sql);
+
+ return $result;
+ }
+
+ /**
+ * Get category with children
+ * @param int $id_lang
+ * @param int $active
+ * @return array
+ */
public function getTree($id_lang, $active = 1)
{
return $this->recurseData(0, $id_lang, $active);
}
+ /**
+ * Recurse data
+ * @param int $id_category
+ * @param int $id_lang
+ * @param int $active
+ * @return array
+ */
protected function recurseData($id_category, $id_lang, $active = 1)
{
$data = array();
- $sql = "SELECT gc.*, gcl.name, gcl.link_rewrite FROM `"._DB_PREFIX_."guide_category` gc, `"._DB_PREFIX_."guide_category_lang` gcl
+ $sql = "SELECT gc.*, gcl.name, gcl.link_rewrite
+ FROM `"._DB_PREFIX_."guide_category` gc, `"._DB_PREFIX_."guide_category_lang` gcl
WHERE gc.id_guide_category=gcl.id_guide_category AND gcl.id_lang=".$id_lang.
- " AND gc.id_parent=".$id_category." ORDER BY position ASC";
+ ($active==1?' AND gc.active=1 ':'')." AND gc.id_parent=".$id_category.
+ " ORDER BY position ASC";
$result = Db::getInstance()->ExecuteS($sql);
if (count($result) > 0) {
foreach ($result as $c) {
$rewrite = 'guide/';
if ($c['id_parent'] != 0) {
- $parent = $this->getParent($c['id_parent'], $id_lang);
+ $parent = $this->getCategoryLang($c['id_parent'], $id_lang);
$rewrite.= $parent['link_rewrite'].'/';
}
$rewrite.= $c['id_guide_category'].'-'.$c['link_rewrite'];
@@ -361,38 +424,4 @@ class GuideCategory extends ObjectModel
return $data;
}
-
- /**
- * Get Parent category
- * @param int $id_category
- * @param int $id_lang
- * @return array
- */
- public function getParent($id_category, $id_lang)
- {
- $sql = "SELECT gc.*, gcl.name, gcl.link_rewrite
- FROM `"._DB_PREFIX_."guide_category` gc, `"._DB_PREFIX_."guide_category_lang` gcl
- WHERE gc.id_guide_category=gcl.id_guide_category AND gcl.id_lang=".$id_lang.
- " AND gc.id_guide_category=".$id_category;
- $result = Db::getInstance()->getRow($sql);
-
- return $result;
- }
-
- /**
- * Gest All main categories
- * @param int $id_lang
- * @return array
- */
- public static function getRoot($id_lang)
- {
- $sql = "SELECT gc.id_guide_category, gcl.name, gcl.link_rewrite, gcl.meta_title,
- gcl.meta_description, gcl.meta_keywords
- FROM ps_guide_category gc, ps_guide_category_lang gcl
- WHERE gc.active=1 AND gc.id_guide_category=gcl.id_guide_category
- AND gc.id_parent=0 AND gcl.id_lang=".$id_lang;
- $result = Db::getInstance()->ExecuteS($sql);
-
- return $result;
- }
}
diff --git a/modules/purchaseguide/classes/GuidePost.php b/modules/purchaseguide/classes/GuidePost.php
index 9ae44fd9..3b5c309e 100644
--- a/modules/purchaseguide/classes/GuidePost.php
+++ b/modules/purchaseguide/classes/GuidePost.php
@@ -179,11 +179,33 @@ class GuidePost extends ObjectModel
public function getUrlRewriteFull(){}
-
-
- public function getCategory()
+ /**
+ * Get Post With one language
+ * @param int $id_category
+ * @param int $id_lang
+ * @return array
+ */
+ public function getPostLang($id_post, $id_lang, $id_category = null)
{
-
+ $sql = "SELECT * FROM ps_guide_post gp, ps_guide_post_lang gpl
+ WHERE gp.active=1 AND gp.id_guide_post=gpl.id_guide_post
+ ".($id_category===null?"":" AND gp.id_guide_category=".$id_category).
+ "AND gp.id_guide_post=".$id_post." AND gpl.id_lang=".$id_lang;
+ $result = Db::getInstance()->getRow($sql);
+
+ return $result;
+ }
+
+
+ public function getAutoPostLang($id_category, $id_lang)
+ {
+ $sql = "SELECT * FROM ps_guide_post gp, ps_guide_post_lang gpl
+ WHERE gp.active=1 AND gp.id_guide_post=gpl.id_guide_post
+ AND gp.id_guide_category=".$id_category.
+ " AND gpl.id_lang=".$id_lang." ORDER BY position ASC";
+ $result = Db::getInstance()->getRow($sql);
+
+ return $result;
}
public function findByCategory($id_category, $id_lang)
diff --git a/modules/purchaseguide/controllers/front/PostController.php b/modules/purchaseguide/controllers/front/PostController.php
index 48a342f4..d75cd02c 100644
--- a/modules/purchaseguide/controllers/front/PostController.php
+++ b/modules/purchaseguide/controllers/front/PostController.php
@@ -16,12 +16,12 @@ class PostController extends FrontController
$id_post = Tools::getValue('pid', 0);
$content = null;
+ // @todo, si on vient de l'admin, voir les post ???
+
// Start form post
+ $postModel = new GuidePost();
if ($id_post != 0) {
- $sql = "SELECT * FROM ps_guide_post gp, ps_guide_post_lang gpl
- WHERE gp.active=1 AND gp.id_guide_post=gpl.id_guide_post
- AND gp.id_guide_post=".$id_post." AND gpl.id_lang=".$id_lang;
- $content = Db::getInstance()->getRow($sql);
+ $content = $postModel->getPostLang($id_post, $id_lang);
$id_category = $content['id_guide_category'];
}
@@ -31,10 +31,8 @@ class PostController extends FrontController
}
else {
// Category
- $sql = "SELECT * FROM ps_guide_category gc, ps_guide_category_lang gcl
- WHERE gc.active=1 AND gc.id_guide_category=gcl.id_guide_category
- AND gc.id_guide_category=".$id_category." AND gcl.id_lang=".$id_lang;
- $category = Db::getInstance()->getRow($sql);
+ $categoryModel = new GuideCategory();
+ $category = $categoryModel->getCategoryLang($id_category, $id_lang);
// Get Parent category
$isSubCategory = false;
@@ -44,47 +42,28 @@ class PostController extends FrontController
if ($isSubCategory) {
// Get Parent category
- $sql = "SELECT * FROM ps_guide_category gc, ps_guide_category_lang gcl
- WHERE gc.active=1 AND gc.id_guide_category=gcl.id_guide_category
- AND gc.id_guide_category=".$category['id_parent']." AND gcl.id_lang=".$id_lang;
- $parentCategory = Db::getInstance()->getRow($sql);
+ $parentCategory = $categoryModel->getCategoryLang($category['id_parent'], $id_lang);
}
else {
$parentCategory = $category;
// Auto Select category
- $sql = "SELECT * FROM ps_guide_category gc, ps_guide_category_lang gcl
- WHERE gc.active=1 AND gc.id_guide_category=gcl.id_guide_category
- AND gc.id_parent=".$id_category." AND gcl.id_lang=".$id_lang.
- " ORDER BY position ASC";
- $category = Db::getInstance()->getRow($sql);
+ $category = $categoryModel->getAutoCategoryLang($id_category, $id_lang);
}
}
// Post
if ($content === null) {
if ($id_post != 0) {
- $sql = "SELECT * FROM ps_guide_post gp, ps_guide_post_lang gpl
- WHERE gp.active=1 AND gp.id_guide_post=gpl.id_guide_post
- AND gp.id_guide_category=".$category['id_guide_category'].
- " AND gp.id_guide_post=".$id_post." AND gpl.id_lang=".$id_lang;
- $content = Db::getInstance()->getRow($sql);
+ $content = $postModel->getPostLang($id_post, $id_lang, $category['id_guide_category']);
}
// Auto Select Post
else {
- $sql = "SELECT * FROM ps_guide_post gp, ps_guide_post_lang gpl
- WHERE gp.active=1 AND gp.id_guide_post=gpl.id_guide_post
- AND gp.id_guide_category=".$category['id_guide_category'].
- " AND gpl.id_lang=".$id_lang." ORDER BY position ASC";
- $content = Db::getInstance()->getRow($sql);
+ $content = $postModel->getAutoPostLang($category['id_guide_category'], $id_lang);
}
}
// Liste des Posts
- $sql = "SELECT * FROM ps_guide_post gp, ps_guide_post_lang gpl
- WHERE gp.active=1 AND gp.id_guide_post=gpl.id_guide_post
- AND gp.id_guide_category=".$category['id_guide_category'].
- " AND gpl.id_lang=".$id_lang." ORDER BY position ASC";
- $postList = Db::getInstance()->ExecuteS($sql);
+ $postList = $postModel->findByCategory($category['id_guide_category'], $id_lang);
$parentCategoryModel = new GuideCategory($parentCategory['id_guide_category']);
$parentCategoryLink = $parentCategoryModel->getLinkRewrite($id_lang);
@@ -94,15 +73,22 @@ class PostController extends FrontController
$pipe = " > ";
- $path = 'Guide'.
- ''.$pipe.''.
- ''
- .htmlentities($parentCategoryModel->name[$id_lang], ENT_NOQUOTES, 'UTF-8').''.
- ''.$pipe.''.
- ''.
- htmlentities($categoryModel->name[$id_lang], ENT_NOQUOTES, 'UTF-8').''.
- ''.$pipe.''.
- ''.$content['meta_title'].'';
+ $path = 'Guide';
+
+ if ($parentCategoryModel !== null) {
+ $path.= ''.$pipe.''.
+ ''
+ .htmlentities($parentCategoryModel->name[$id_lang], ENT_NOQUOTES, 'UTF-8').'';
+ }
+
+ if ($categoryModel !== null) {
+ $path.= ''.$pipe.''.
+ ''.
+ htmlentities($categoryModel->name[$id_lang], ENT_NOQUOTES, 'UTF-8').'';
+
+ $path.= ''.$pipe.''.
+ ''.$content['meta_title'].'';
+ }
self::$smarty->assign(array(
'path' => $path,