private function assignFilter(HTTPRequest $request, AnnounceFilter $announceFilter)
 {
     $regionId = htmlspecialchars($request->getData('regionId'));
     $departmentId = htmlspecialchars($request->getData('departmentId'));
     $categoryId = htmlspecialchars($request->getData('categoryId'));
     $subCategoryId = htmlspecialchars($request->getData('subCategoryId'));
     $zipCode = htmlspecialchars($request->getData('zipCode'));
     $filterText = htmlspecialchars(urldecode($request->getData('filter')));
     $filterText = preg_replace('/(\\/|\\+)/', ' ', $filterText);
     //Supprime les espaces inutiles
     $filterText = preg_replace('/\\s\\s+/', ' ', $filterText);
     $announceFilter->setRegionId($regionId);
     $announceFilter->setDepartmentId($departmentId);
     $announceFilter->setCategoryId($categoryId);
     $announceFilter->setSubCategoryId($subCategoryId);
     $announceFilter->setZipCode($zipCode);
     $announceFilter->setFilterText($filterText);
     $inCommunity = htmlspecialchars($request->getData('community'));
     if (!empty($inCommunity)) {
         $inCommunity = $this->app->user()->getAttribute('id');
     }
     $announceFilter->setInCommunity($inCommunity);
     $this->page->smarty()->assign('filter', $announceFilter);
 }
 public function getAnnouncementPro(AnnounceFilter $announceFilter)
 {
     global $tipkin_prefix;
     $where = " WHERE 1";
     if ($announceFilter->getCategoryId() != "" && $announceFilter->getCategoryId() != "all") {
         $where .= " AND CATEGORY_ID =" . (int) $announceFilter->getCategoryId();
     }
     if ($announceFilter->getSubCategoryId() != "" && $announceFilter->getSubCategoryId() != "all") {
         $where .= " AND SUB_CATEGORY_ID =" . (int) $announceFilter->getSubCategoryId();
     }
     if ($announceFilter->getRegionId() != "all" && $announceFilter->getRegionId() != "") {
         $where .= " AND REGION_ID =" . (int) $announceFilter->getRegionId();
     }
     if ($announceFilter->getDepartmentId() != "all" && $announceFilter->getDepartmentId() != "") {
         $where .= " AND DEPARTMENT_ID ='" . $announceFilter->getDepartmentId() . "'";
     }
     if ($announceFilter->getZipCode() != "") {
         $where .= " AND ZIP_CODE ='" . $announceFilter->getZipCode() . "'";
     }
     //Filtre texte
     $where .= " AND (TITLE LIKE '%" . $announceFilter->getFilterText() . "%' OR DESCRIPTION LIKE '%" . $announceFilter->getFilterText() . "%')";
     //Contrainte globale pour la recherche
     $where .= " AND STATE_ID =" . AnnouncementStates::STATE_VALIDATED;
     $where .= " AND IS_PUBLISHED =" . true;
     //Fin de contrainte globale
     $query = 'SELECT * FROM ' . $tipkin_prefix . 'announcements_pro' . $where . ' ORDER BY PUBLICATION_DATE DESC';
     //echo $query; die;
     $q = $this->dao->prepare($query);
     $q->execute();
     $announces = array();
     while ($data = $q->fetch(PDO::FETCH_ASSOC)) {
         $announces[] = new AnnouncementPro($data);
     }
     return $announces;
 }