1,8 → 1,45 |
<?php |
/*vim: set expandtab tabstop=4 shiftwidth=4: */ |
// +------------------------------------------------------------------------------------------------------+ |
// | PHP version 4.1 | |
// +------------------------------------------------------------------------------------------------------+ |
// | Copyright (C) 2004 Tela Botanica (accueil@tela-botanica.org) | |
// +------------------------------------------------------------------------------------------------------+ |
// | This library is free software; you can redistribute it and/or | |
// | modify it under the terms of the GNU Lesser General Public | |
// | License as published by the Free Software Foundation; either | |
// | version 2.1 of the License, or (at your option) any later version. | |
// | | |
// | This library is distributed in the hope that it will be useful, | |
// | but WITHOUT ANY WARRANTY; without even the implied warranty of | |
// | MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU | |
// | Lesser General Public License for more details. | |
// | | |
// | You should have received a copy of the GNU Lesser General Public | |
// | License along with this library; if not, write to the Free Software | |
// | Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA | |
// +------------------------------------------------------------------------------------------------------+ |
// CVS : $Id: bazar.fonct.rss.php,v 1.48 2006-05-17 09:50:13 alexandre_tb Exp $ |
/** |
* |
*@package bazar |
//Auteur original : |
*@author Alexandre GRANIER <alexandre@tela-botanica.org> |
*@author Florian Schmitt <florian@ecole-et-nature.org> |
//Autres auteurs : |
*@copyright Tela-Botanica 2000-2006 |
*@version $Revision: 1.48 $ |
// +------------------------------------------------------------------------------------------------------+ |
*/ |
|
// +------------------------------------------------------------------------------------------------------+ |
// | ENTETE du PROGRAMME | |
// +------------------------------------------------------------------------------------------------------+ |
|
require_once BAZ_CHEMIN_APPLI.'bibliotheque/bazar.class.php'; |
require_once BAZ_CHEMIN_APPLI.'bibliotheque/bazar.fonct.php'; |
|
|
/** baz_valeur_template() - Renvoi des valeurs inscrite dans le fichier de template |
* |
* @param string valeur du template de bazar_nature |
475,6 → 512,7 |
} |
} |
else $res = BAZ_PAS_D_ANNONCES; |
|
return $res; |
} |
|
488,11 → 526,11 |
* |
* @return string Le code du flux RSS |
*/ |
function gen_RSS($typeannonce='', $nbitem='', $emetteur='', $valide=1, $requeteSQL='', $requeteSQLFrom = '') { |
function gen_RSS($typeannonce='', $nbitem='', $emetteur='', $valide=1, $requeteSQL='', $requeteSQLFrom = '', $requeteWhereListe = '') { |
// generation de la requete MySQL personnalisee |
$req_where=0; |
$requete = 'SELECT DISTINCT bf_id_fiche, bf_titre, bf_date_debut_validite_fiche '. |
'FROM bazar_fiche, bazar_nature '.$requeteSQLFrom.' WHERE '; |
$requete = 'SELECT DISTINCT bf_id_fiche, bf_titre, bf_date_debut_validite_fiche, bf_description '. |
'FROM bazar_fiche, bazar_nature '.$requeteSQLFrom.' WHERE '.$requeteWhereListe; |
if ($valide!=2) { |
$requete .= 'bf_statut_fiche='.$valide; |
$req_where=1; |
576,7 → 614,8 |
$xml .= '<link>'.str_replace ('&', '&', $lien->getURL()).'</link>'."\n"; |
$xml .= '<description>'."\n".'<![CDATA[' ; |
if ($_GET['action'] != BAZ_VOIR_TOUTES_ANNONCES) { |
$xml .= baz_voir_fiche(0,$ligne['bf_id_fiche']) ; |
//$xml .= baz_voir_fiche(0,$ligne['bf_id_fiche']) ; |
$xml .= $ligne['bf_description'] ; |
} |
$xml .= ']]>'."\n".'</description>'."\n"; |
$xml .= '<pubDate>'.strftime('%d %b %Y %H:%M:%S GMT',strtotime($ligne['bf_date_debut_validite_fiche'])).'</pubDate>'."\n"; |
694,34 → 733,37 |
|
//option cachee pour savoir si le formulaire a ete appele deja |
$formtemplate->addElement('hidden', 'recherche_effectuee', 1) ; |
// |
// // Ajout des options si un type de fiche a ete choisie |
// if (isset($_POST['nature']) || isset($GLOBALS['_BAZAR_']['categorie_nature'])) { |
// if ($GLOBALS['_BAZAR_']['categorie_nature'] != '') { |
// $champs_requete = 'bn_ce_id_menu' ; |
// $_POST['nature'] = $GLOBALS['_BAZAR_']['categorie_nature']; |
// } else { |
// $champs_requete = 'bn_id_nature' ; |
// } |
// // Récupération du template |
// $requete = 'select bn_template from bazar_nature where '.$champs_requete.'='.$_POST['nature']; |
// $resultat = $GLOBALS['_BAZAR_']['db']->getOne($requete) ; |
// if (DB::isError($resultat)) { |
// die ($resultat->getMessage().$resultat->getDebugInfo()) ; |
// } |
// |
// $tableau = baz_valeurs_template($resultat) ; |
// |
// for ($i=0; $i<count($tableau); $i++) { |
// if (($tableau[$i]['type'] == 'liste' || $tableau[$i]['type'] == 'checkbox') && $tableau[$i]['recherche'] == 1) { |
// if ($tableau[$i]['type'] == 'checkbox') { |
// $formtemplate->addElement ('html', '<br />'.$tableau[$i]['label'].'<br />') ; |
// } |
// $tableau[$i]['type']($formtemplate, $tableau[$i]['nom_bdd'], $tableau[$i]['label'], $tableau[$i]['limite1'], |
// $tableau[$i]['limite2'], $tableau[$i]['defaut'], $tableau[$i]['table_source'], $tableau[$i]['obligatoire']) ; |
// } |
// } |
// } |
|
// Ajout des options si un type de fiche a ete choisie |
if ((isset($_REQUEST['nature']) && $_REQUEST['nature'] != 'toutes') || isset($GLOBALS['_BAZAR_']['categorie_nature'])) { |
if ($GLOBALS['_BAZAR_']['categorie_nature'] != '') { |
$champs_requete = 'bn_id_nature' ; |
if (!isset($_REQUEST['nature']) || $_REQUEST['nature'] == '') { |
$_REQUEST['nature'] = $GLOBALS['_BAZAR_']['categorie_nature']; |
$champs_requete = 'bn_ce_id_menu' ; |
} |
} else { |
$champs_requete = 'bn_id_nature' ; |
} |
// Récupération du template |
$requete = 'select bn_template from bazar_nature where '.$champs_requete.'="'.$_REQUEST['nature'].'"'; |
$resultat = $GLOBALS['_BAZAR_']['db']->getOne($requete) ; |
if (DB::isError($resultat)) { |
die ($resultat->getMessage().$resultat->getDebugInfo()) ; |
} |
|
$tableau = baz_valeurs_template($resultat) ; |
|
for ($i=0; $i<count($tableau); $i++) { |
if (($tableau[$i]['type'] == 'liste' || $tableau[$i]['type'] == 'checkbox') && $tableau[$i]['recherche'] == 1) { |
if ($tableau[$i]['type'] == 'checkbox') { |
$formtemplate->addElement ('html', '<br />'.$tableau[$i]['label'].'<br />') ; |
} |
$tableau[$i]['type']($formtemplate, $tableau[$i]['nom_bdd'], $tableau[$i]['label'], $tableau[$i]['limite1'], |
$tableau[$i]['limite2'], $tableau[$i]['defaut'], $tableau[$i]['table_source'], $tableau[$i]['obligatoire']) ; |
} |
} |
} |
//Bouton de validation du formulaire |
$option=array('style'=>'border:1px solid #000;width:80px;font:12px Myriad, Arial, sans-serif;'); |
$bouton[] = &HTML_QuickForm::createElement('submit', 'rechercher', BAZ_RECHERCHER, $option); |
730,6 → 772,7 |
//affichage du formulaire |
$res.=$formtemplate->toHTML()."\n"; |
|
|
// Ajout de la table bazar_fiche_liste_valeur dans le from de la requete |
$case_coche = false ; |
$requeteFrom = '' ; |
736,34 → 779,44 |
$requeteWhere = '' ; |
$requeteWhereListe = '' ; |
|
// for ($i = 0; $i < count ($tableau); $i++) { |
// if ($tableau[$i]['type'] == 'checkbox' || $tableau[$i]['type'] == 'liste') { |
// $nom_liste = $tableau[$i]['type'].$tableau[$i]['nom_bdd'] ; |
// |
// if (is_array($_POST[$nom_liste])) { |
// foreach ($_POST[$nom_liste] as $cle =>$valeur) { |
// if ($valeur == 1) { |
// $case_coche = true ; |
// $requeteWhereListe .= ' AND bfvl_ce_liste='.$tableau[$i]['nom_bdd'] ; // Numéro de la liste |
// |
// } |
// } |
// } |
// } |
// } |
// if ($case_coche) { |
// $requeteFrom = ', bazar_fiche_valeur_liste ' ; |
// $requeteWhereListe .= ' AND bfvl_valeur IN ()' ; |
// $requeteWhere = ' bfvl_ce_fiche=bf_id_fiche'.$requeteWhereListe; |
// } |
// |
for ($i = 0; $i < count ($tableau); $i++) { |
if ($tableau[$i]['type'] == 'checkbox' || $tableau[$i]['type'] == 'liste') { |
$nom_liste = $tableau[$i]['type'].$tableau[$i]['nom_bdd'] ; |
|
if (is_array($_REQUEST[$nom_liste])) { |
foreach ($_REQUEST[$nom_liste] as $cle =>$valeur) { |
if ($valeur == 1) { |
$case_coche = true ; |
$requeteWhereListe .= ' AND bfvl_ce_liste='.$tableau[$i]['nom_bdd'] ; // Numéro de la liste |
|
} |
} |
} else { |
|
if (isset ($_REQUEST[$nom_liste])) { |
$requeteWhereListe .= ' AND bfvl_ce_liste='.$tableau[$i]['nom_bdd'].' AND ' ; // Numéro de la liste |
$requeteWhereListe .= ' bfvl_valeur='.$_REQUEST[$nom_liste].' AND '; |
$case_coche = true; |
} |
} |
} |
} |
if ($case_coche) { |
$requeteFrom = ', bazar_fiche_valeur_liste ' ; |
//$requeteWhereListe .= ' AND bfvl_valeur IN ()' ; |
$requeteWhere = ' bfvl_ce_fiche=bf_id_fiche'.$requeteWhereListe; |
} |
if (isset($_REQUEST['nature'])) { |
$requeteWhere = 'bf_ce_nature="'.$_REQUEST['nature'].'" AND '.$requeteWhere; |
} |
|
//affichage des resultats de la recherche si le formulaire a ete envoye |
$requeteSQL=''; |
if (isset($_REQUEST['recherche_effectuee'])) { |
//preparation de la requete pour trouver les mots cles |
if (($_POST['recherche_mots_cles']!='')and($_POST['recherche_mots_cles']!=BAZ_MOT_CLE)) { |
if (($_REQUEST['recherche_mots_cles']!='')and($_REQUEST['recherche_mots_cles']!=BAZ_MOT_CLE)) { |
//decoupage des mots cles |
$recherche = split(' ', $_POST['recherche_mots_cles']) ; |
$recherche = split(' ', $_REQUEST['recherche_mots_cles']) ; |
$nbmots=count($recherche); |
$requeteSQL=''; |
for ($i=0; $i<$nbmots; $i++) { |
779,12 → 832,14 |
if ($typedefiches == 'toutes') $typedefiches = $tableau_typeannonces ; |
} |
if ($typeannonce!='toutes') $typedefiches=$typeannonce; |
if (isset($_POST['valides'])) {$valides=$_POST['valides'];} |
if (isset($_REQUEST['valides'])) {$valides=$_REQUEST['valides'];} |
else {$valides=1;} |
//generation de la liste de flux a afficher |
|
$res .= RSSversHTML(gen_RSS($typedefiches, '', $_POST['personnes'], $valides, $requeteSQL, $requeteFrom), |
$res .= baz_liste_pagine_HTML($typedefiche, '', $_REQUEST['personne'], $valides, $requeteSQL, $requeteFrom, $requeteWhere); |
/* |
$res .= RSSversHTML(gen_RSS($typedefiches, '', $_REQUEST['personnes'], $valides, $requeteSQL, $requeteFrom, $requeteWhere), |
0, BAZ_TYPE_AFFICHAGE_LISTE, 1) ; |
*/ |
} |
else { |
//on affiche toutes les annonces |
796,4 → 851,116 |
} |
return $res; |
} |
|
/** |
* Cette fonction renvoie du HTML |
*/ |
function baz_liste_pagine_HTML($typeannonce, $nbitem, $emetteur, $valide, $requeteSQL = '', $requeteFrom = '', $requeteWhere = '') { |
// generation de la requete MySQL personnalisee |
$req_where=0; |
$requete = 'SELECT DISTINCT bf_id_fiche, bf_titre, bf_date_debut_validite_fiche '. |
'FROM bazar_fiche, bazar_nature '.$requeteFrom.' WHERE '.$requeteWhere; |
if ($valide!=2) { |
$requete .= 'bf_statut_fiche='.$valide; |
$req_where=1; |
} |
|
if (!is_array ($typeannonce) && $typeannonce!='' and $typeannonce!='toutes') { |
if ($req_where==1) {$requete .= ' AND ';} |
$requete .= 'bf_ce_nature='.$typeannonce; |
$req_where=1; |
//le nom du flux devient le type d'annonce |
$nomflux = $typeannonce; |
} |
// Cas où il y plusieurs type d annonce demande |
if (is_array ($typeannonce)) { |
if ($req_where==1) {$requete .= ' AND ';} |
$requete .= 'bf_ce_nature IN (' ; |
$chaine = ''; |
foreach ($typeannonce as $valeur) $chaine .= '"'.$valeur.'",' ; |
$requete .= substr ($chaine, 0, strlen ($chaine)-1) ; |
$requete .= ') '; |
} |
$utilisateur = new Administrateur_bazar ($GLOBALS['AUTH']) ; |
if ($valide!=0) { |
|
if ($utilisateur->isSuperAdmin()) { |
$req_where=1; |
} else { |
if ($req_where==1) { |
$requete .= ' AND '; |
} |
$requete .= '(bf_date_debut_validite_fiche<=NOW() or bf_date_debut_validite_fiche="0000-00-00")'. |
' AND (bf_date_fin_validite_fiche>=NOW() or bf_date_fin_validite_fiche="0000-00-00") AND bn_id_nature=bf_ce_nature'; |
} |
} |
else $nomflux .= BAZ_A_MODERER; |
if ($emetteur!='' && $emetteur!='tous') { |
if ($req_where==1) {$requete .= ' AND ';} |
$requete .= 'bf_ce_utilisateur='.$emetteur; |
$req_where=1; |
//requete pour afficher le nom de la structure |
$requetenom = 'SELECT '.BAZ_CHAMPS_NOM.', '.BAZ_CHAMPS_PRENOM.' FROM '. |
BAZ_ANNUAIRE.' WHERE '.BAZ_CHAMPS_ID.'='.$emetteur; |
$resultat = $GLOBALS['_BAZAR_']['db']->query($requetenom) ; |
if (DB::isError($resultat)) { |
die ($resultat->getMessage().$resultat->getDebugInfo()) ; |
} |
$ligne = $resultat->fetchRow(DB_FETCHMODE_ASSOC); |
$nomflux .= ' ('.$ligne[BAZ_CHAMPS_NOM].' '.$ligne[BAZ_CHAMPS_PRENOM].')'; |
} |
if ($requeteSQL!='') { |
if ($req_where==1) {$requete .= ' AND ';} |
$requete .= '('.$requeteSQL.')'; |
$req_where=1; |
} |
$requete .= ' ORDER BY bf_date_debut_validite_fiche DESC, bf_date_fin_validite_fiche DESC, bf_date_maj_fiche DESC'; |
if ($nbitem!='') {$requete .= ' LIMIT 0,'.$nbitem;} |
$resultat = $GLOBALS['_BAZAR_']['db']->query($requete) ; |
if (DB::isError($resultat)) { |
die ($resultat->getMessage().$resultat->getDebugInfo()) ; |
} |
$res = '<br /><h4>'.BAZ_IL_Y_A.($resultat->numRows()).' '.BAZ_FICHES_CORRESPONDANTES.'</h4><br />'."\n"; |
$res .= '<ul>' ; |
$GLOBALS['_BAZAR_']['url']->addQueryString('action', BAZ_VOIR_FICHE); |
|
$donnees = array(); |
while ($ligne = $resultat->fetchRow(DB_FETCHMODE_OBJECT)) { |
$GLOBALS['_BAZAR_']['url']->addQueryString('id_fiche', $ligne->bf_id_fiche) ; |
array_push ($donnees, array ($ligne->bf_id_fiche,$ligne->bf_titre)); |
//$res .= '<li><a href="'.$GLOBALS['_BAZAR_']['url']->getURL().'">'.$ligne->bf_titre.'</a></li>'."\n" ; |
} |
// Mise en place du Pager |
include_once 'Pager/Pager.php'; |
$params = array( |
'mode' => BAZ_MODE_DIVISION, |
'perPage' => BAZ_NOMBRE_RES_PAR_PAGE, |
'delta' => BAZ_DELTA, |
'httpMethod' => 'GET', |
'extraVars' => $_REQUEST, |
'altNext' => BAZ_SUIVANT, |
'altPrev' => BAZ_PRECEDENT, |
'nextImg' => BAZ_SUIVANT, |
'prevImg' => BAZ_PRECEDENT, |
'itemData' => $donnees |
); |
$pager = & Pager::factory($params); |
$data = $pager->getPageData(); |
$links = $pager->getLinks(); |
|
foreach ($data as $valeur) { |
$GLOBALS['_BAZAR_']['url']->addQueryString('id_fiche', $valeur[0]) ; |
$res .= '<li><a href="'.$GLOBALS['_BAZAR_']['url']->getURL().'">'.$valeur[1].'</a></li>'."\n" ; |
} |
$res .= '</ul>'; |
$res .= $pager->links; |
|
return $res ; |
} |
|
/* +--Fin du code ----------------------------------------------------------------------------------------+ |
* |
* $Log: not supported by cvs2svn $ |
* +-- Fin du code ----------------------------------------------------------------------------------------+ |
*/ |
?> |