* puis la remplace par le code html généré pour les petites annonces.
*/
public function show($content)
{
if(ereg('<[Dd][Ii][Vv] [Rr][Ee][Ll]="[Aa][Nn][Nn][Oo][Nn][Cc][Ee][Ss]" [Ii][Dd]="[Aa][Nn][Nn][Oo][Nn][Cc][Ee][Ss]" >',$content)){
return $this->generate($content);
}else{
return $content;
}
}
public function generate($content){
global $tools;
$query = isset($_REQUEST['query']) ? $tools->IsValid_Variable($_REQUEST['query']) : '' ;
$query1 = isset($_REQUEST['query1']) ? $tools->IsValid_Variable($_REQUEST['query1']) : '' ;
$query2 = isset($_REQUEST['query2']) ? $tools->IsValid_Variable($_REQUEST['query2']) : '' ;
$query3 = isset($_REQUEST['query3']) ? $tools->IsValid_Variable($_REQUEST['query3']) : '' ;
$query4 = isset($_REQUEST['query4']) ? $tools->IsValid_Variable($_REQUEST['query4']) : '' ;
$mode = isset($_REQUEST['mode']) ? $tools->IsValid_Variable($_REQUEST['mode']) : '' ;
$show_map = isset($_REQUEST['show_map']) ? $tools->IsValid_Variable($_REQUEST['show_map']) : '' ;
$show_annonce = isset($_REQUEST['show_annonce']) ? $tools->IsValid_Variable($_REQUEST['show_annonce']) : '' ;
if(!empty($query) OR !empty($query1) OR !empty($query2) OR !empty($query3) OR !empty($query4) OR !empty($mode)){
/**
Si le critère de recherche n'est que le type de bien, on rentre dans la fonction sinon on fait la recherche avec les autres critères
**/
if(empty($query) AND empty($query1) AND empty($query2) AND empty($query3) AND empty($query4) AND !empty($mode)){
$eav_mode = new Eav();
$annonces = $eav_mode->getAnnoncesEntete($morequery,DEFAULT_FLAG_AOS,'titre',0,'nolimit');
if($mode != 'all'){
foreach($annonces as $i){
$eav_mode_value = $eav_mode->getTypeBien(null,'valid',null,$i->idpetiteannonce);
if($eav_mode_value[0]->valueattributchar == $mode){
$idarray .= $i->idpetiteannonce.',';
}
}
}else{
foreach($annonces as $i){
$idarray .= $i->idpetiteannonce.',';
}
}
//Supprime la dernière virgule de la liste des IDs
$size = strlen($idarray);
$id = substr($idarray, 0, $size-1);
$result_search = ' AND ANN.idpetiteannonce IN ('.$id.') ';
if($show_map == 'true' and (get_option('annonces_maps_activation') == 1)){
/*---- Show map ----*/
$this->concatAnnonceContent($this->generate_search_map());
if(!empty($id)){
$this->concatAnnonceContent('
');
$this->concatAnnonceContent($this->show_map($result_search));
}else{
$result_search = ' AND ANN.idpetiteannonce IN (0) ';
$this->concatAnnonceContent('
'.__('Aucune annonce ne répond à vos critères.','annonces').'
');
}
/*---- Show list annonces ----*/
$this->concatAnnonceContent($this->list_annonce());
/*---- Show annonce plugin ----*/
return $this->addAnnoncesToContent($content);
}
public function addAnnoncesToContent($content){
$pattern = '/
<\/div>/';
$replacement = '
'.$this->getAnnonceContent().'
';
$content = preg_replace( $pattern, $replacement, $content );
return $content;
}
function filter_plugin_actions_links($links, $file)
{
if ($file == Basename_Dirname_AOS. '/annonces.php')
{
$settings_link = $settings_link = '' . __('Réglages', 'annonces') . '';
array_unshift($links, $settings_link);
}
return $links;
}
public function getActualPage()
{
global $tools;
$actual_page = isset($_REQUEST['page_nav_annonces']) ? $tools->IsValid_Variable($_REQUEST['page_nav_annonces']) : 0 ;
return $actual_page;
}
/**
* Cette méthode est appelé lorsque que le formulaire de recherche fait une requête sur le prix et/ou la superficie
*/
public function Filter($needle, $haystack){
if(is_null($needle)){
return $haystack;
}
if(is_null($haystack)){
return $needle;
}
if(is_null($needle) and is_null($haystack)){
return null;
}
$result = array();
foreach($needle as $tinyneedle){
if(in_array($tinyneedle,$haystack)){
$result[count($result)] = $tinyneedle;
}
}
return $result;
}
public function getPagination($morequery = null)
{
global $tools;
$eav_value = new Eav();
$link = ' onclick="javascript:document.getElementById(\'page_nav_annonces\').value=\'#PAGE#\';document.forms.navigation_form.submit();" ';
$nb_total_items = 0;$nb_total_items = $eav_value->getAnnoncesEntete($morequery,DEFAULT_FLAG_AOS,'titre',$this->getActualPage(),'nolimit','count');
$Pagination = '';
if(ceil($nb_total_items/NUMBER_OF_ITEM_PAR_PAGE_FRONTEND_AOS) > 1)
{
$Pagination = $tools->DoPagination($link,$nb_total_items,$this->getActualPage(),NUMBER_OF_ITEM_PAR_PAGE_FRONTEND_AOS,PAGINATION_OFFSET_FRONTEND_AOS,'','','#999999','#FFFFFF');
}
return $Pagination;
}
public function add_css()
{
echo '';
}
/**
* Cette méthode ajoute de préférence dans le header la clé de l'API Google Maps qui permet d'afficher les cartes
*/
public function add_gmap()
{
echo '';
}
/**
* Cette méthode génère la petite carte que l'on peut voir dans le listing des annonces
*/
public function generate_map($morequery = null)
{
$markers = '';
$eav_value = new Eav();
//Afficher que les marqueurs de la page courante
$annonces = $eav_value->getAnnoncesEntete($morequery,DEFAULT_FLAG_AOS,'titre',$this->getActualPage());
//Afficher tout les marqueurs sans distinction de page
// $annonces = $eav_value->getAnnoncesEntete($morequery,DEFAULT_FLAG_AOS,'titre',0,'nolimit');
$sizei = count($annonces);
$icon = get_option('url_marqueur_courant');
for($i = 0; $i < $sizei; $i++)
{
if(!is_null($annonces[$i]->latitude) AND !is_null($annonces[$i]->longitude)){
$surface = $eav_value->getSurface(null,'valid',null,$annonces[$i]->idpetiteannonce);
$prix = $eav_value->getPrix(null,'valid',null,$annonces[$i]->idpetiteannonce);
$description = $eav_value->getDescription(null,'valid',null,$annonces[$i]->idpetiteannonce);
$markers .= 'var marker'.$i.' = new GMarker(new GLatLng('.$annonces[$i]->latitude.','.$annonces[$i]->longitude.'),icon);';
$markers .='GEvent.addListener(marker'.$i.', "mouseover", function() {
annoncemap.openInfoWindowHtml(new GLatLng('.$annonces[$i]->latitude.','.$annonces[$i]->longitude.'), "
idpetiteannonce.'&show_mode=list\">'.$annonces[$i]->titre.' '.number_format($surface[0]->valueattributdec,0,',',' ').' '.$surface[0]->measureunit.' à '.$annonces[$i]->ville.', prix '.number_format($prix[0]->valueattributdec,0,',',' ').' '.$prix[0]->measureunit.'
idpetiteannonce.'&show_mode=map\'\">'.$annonces[$i]->titre.' '.number_format($surface[0]->valueattributdec,0,',',' ').' '.$surface[0]->measureunit.' à '.$annonces[$i]->ville.', prix '.number_format($prix[0]->valueattributdec,0,',',' ').' '.$prix[0]->measureunit.'
';
return $generate_annonce;
}
public function list_annonce($morequery = null)
{
$eav_value = new Eav();
// $annonces = $eav_value->getAnnoncesEntete($morequery,DEFAULT_FLAG_AOS,'titre',$this->getActualPage(),null,null);
/*
* Modification Alex le 14/04/2010 pour tri par prix (mauvaise version à reprendre)
*/
$annonces = $eav_value->getAnnoncesEntete($morequery,DEFAULT_FLAG_AOS,'valueattributdec',$this->getActualPage(),null,null);
$sizei = count($annonces);
$generate_annonce = '';
for($i = 0; $i < $sizei; $i++)
{
$generate_annonce .= '