19,7 → 19,7 |
// | 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 $ |
// CVS : $Id: bazar.fonct.rss.php,v 1.49 2006-05-19 13:54:11 florian Exp $ |
/** |
* |
*@package bazar |
28,7 → 28,7 |
*@author Florian Schmitt <florian@ecole-et-nature.org> |
//Autres auteurs : |
*@copyright Tela-Botanica 2000-2006 |
*@version $Revision: 1.48 $ |
*@version $Revision: 1.49 $ |
// +------------------------------------------------------------------------------------------------------+ |
*/ |
|
48,6 → 48,7 |
*/ |
function baz_valeurs_template($valeur_template) { |
//Parcours du fichier de templates, pour mettre les champs spécifiques |
$tableau= array(); |
$nblignes=0; |
$chaine = explode ("\n", $valeur_template); |
array_pop($chaine); |
523,10 → 524,11 |
* @param integer L'identifiant de l'emetteur (laisser vide pour tous) |
* @param integer L'etat de validation de l'annonce (laisser 1 pour les annonces validees, 0 pour les non-validees) |
* @param string La requete SQL personnalisee |
* @param integer La categorie des fiches bazar |
* |
* @return string Le code du flux RSS |
*/ |
function gen_RSS($typeannonce='', $nbitem='', $emetteur='', $valide=1, $requeteSQL='', $requeteSQLFrom = '', $requeteWhereListe = '') { |
function gen_RSS($typeannonce='', $nbitem='', $emetteur='', $valide=1, $requeteSQL='', $requeteSQLFrom = '', $requeteWhereListe = '', $categorie_nature='') { |
// generation de la requete MySQL personnalisee |
$req_where=0; |
$requete = 'SELECT DISTINCT bf_id_fiche, bf_titre, bf_date_debut_validite_fiche, bf_description '. |
585,6 → 587,12 |
$requete .= '('.$requeteSQL.')'; |
$req_where=1; |
} |
if ($categorie_nature!='') { |
if ($req_where==1) {$requete .= ' AND ';} |
$requete .= 'bn_ce_id_menu='.$categorie_nature.' '; |
$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) ; |
645,39 → 653,55 |
$lien_formulaire = preg_replace ('/&/', '&', $GLOBALS['_BAZAR_']['url']->getURL()) ; |
$formtemplate = new HTML_QuickForm('formulaire', 'post', $lien_formulaire) ; |
$squelette = &$formtemplate->defaultRenderer(); |
$squelette->setFormTemplate("\n".'<form{attributes}>'."\n".'<ul style="padding:0;margin:0;">'."\n". |
'{content}'."\n".'</ul>'."\n".'</form>'."\n"); |
$squelette->setElementTemplate( '<li class="enligne">'."\n".'{element}'."\n".'</li>'."\n"); |
$squelette->setFormTemplate("\n".'<form {attributes}>'."\n".'<table style="border:0;width:100%;">'."\n".'{content}'."\n".'</table>'."\n".'</form>'."\n"); |
$squelette->setElementTemplate( '<tr>'."\n".'<td style="font-size:12px;width:120px;text-align:right;">'."\n".'{label}'. |
'<!-- BEGIN required --><span class="symbole_obligatoire"> *</span><!-- END required -->'."\n". |
' :</td>'."\n".'<td style="text-align:left;padding:5px;"> '."\n".'{element}'."\n". |
'<!-- BEGIN error --><span class="erreur">{error}</span><!-- END error -->'."\n". |
'</td>'."\n".'</tr>'."\n"); |
$squelette->setElementTemplate( '<tr>'."\n".'<td colspan="2" class="liste_a_cocher"><strong>{label} {element}</strong>'."\n". |
'<!-- BEGIN required --><span class="symbole_obligatoire"> *</span><!-- END required -->'."\n".'</td>'."\n".'</tr>'."\n", 'accept_condition'); |
$squelette->setElementTemplate( '<tr><td colspan="2" class="bouton">{label}{element}</td></tr>'."\n", 'valider'); |
|
$squelette->setRequiredNoteTemplate("\n".'<tr>'."\n".'<td colspan="2" class="symbole_obligatoire">* {requiredNote}</td></tr>'."\n"); |
//Traduction de champs requis |
$formtemplate->setRequiredNote(BAZ_CHAMPS_REQUIS) ; |
$formtemplate->setJsWarnings(BAZ_ERREUR_SAISIE,BAZ_VEUILLEZ_CORRIGER); |
|
|
//cas du formulaire de recherche proposant de chercher parmis tous les types d'annonces |
//requete pour obtenir l'id et le label des types d'annonces |
$requete = 'SELECT bn_id_nature, bn_label_nature '. |
'FROM bazar_nature WHERE bn_ce_id_menu='.$GLOBALS['_BAZAR_']['filtre'].' '. |
'FROM bazar_nature WHERE bn_ce_id_menu='.$GLOBALS['_BAZAR_']['categorie_nature'].' '. |
'ORDER BY bn_label_nature ASC'; |
$resultat = $GLOBALS['_BAZAR_']['db']->query($requete) ; |
if (DB::isError($resultat)) { |
die ($resultat->getMessage().$resultat->getDebugInfo()) ; |
} |
//on récupère le nb de types de fiches, pour plus tard |
$nb_type_de_fiches=$resultat->numRows(); |
$type_annonce_select['toutes']=BAZ_TOUS_TYPES_FICHES; |
while ($ligne = $resultat->fetchRow(DB_FETCHMODE_ASSOC)) { |
$type_annonce_select[$ligne['bn_id_nature']] = $ligne['bn_label_nature']; |
$tableau_typeannonces[] = $ligne['bn_id_nature'] ; |
} |
if ($GLOBALS['_BAZAR_']['typeannonce']=='toutes') { |
if ($nb_type_de_fiches>1 && $GLOBALS['_BAZAR_']['typeannonce']=='toutes') { |
$res= '<h2>'.BAZ_TOUTES_LES_ANNONCES.'</h2><br />'."\n"; |
$option=array('style'=>'border:1px solid #000;width: 140px;font:12px Myriad, Arial, sans-serif;', |
$option=array('style'=>'border:1px solid #000;width: 200px;font:12px Myriad, Arial, sans-serif;', |
'onchange' => 'javascript:this.form.submit();'); |
$formtemplate->addElement ('select', 'nature', BAZ_TYPEANNONCE, $type_annonce_select, $option) ; |
if (isset($_REQUEST['nature'])) { |
$defauts=array('nature'=>$_REQUEST['nature']); |
$formtemplate->setDefaults($defauts); |
} |
} |
//cas du type d'annonces prédéfini |
else { |
$res = '<h2>'.BAZ_TOUTES_LES_ANNONCES_DE_TYPE.' '.$GLOBALS['_BAZAR_']['typeannonce'].'</h2>'."\n"; |
} |
|
|
//requete pour obtenir l'id, le nom et prenom de toutes les personnes ayant depose une fiche |
// dans le but de construire l'élément de formulaire select avec les noms des émetteurs de fiche |
|
if (BAZ_RECHERCHE_PAR_EMETTEUR) { |
$requete = 'SELECT '.BAZ_CHAMPS_ID.', '.BAZ_CHAMPS_NOM.', '.BAZ_CHAMPS_PRENOM.' '. |
'FROM bazar_fiche,'.BAZ_ANNUAIRE.' where' ; |
705,7 → 729,7 |
while ($ligne = $resultat->fetchRow(DB_FETCHMODE_ASSOC)) { |
$personnes_select[$ligne[BAZ_CHAMPS_ID]] = $ligne[BAZ_CHAMPS_NOM]." ".$ligne[BAZ_CHAMPS_PRENOM] ; |
} |
$option=array('style'=>'border:1px solid #000;width: 140px;font:12px Myriad, Arial, sans-serif;'); |
$option=array('style'=>'border:1px solid #000;width: 200px;font:12px Myriad, Arial, sans-serif;'); |
$formtemplate->addElement ('select', 'personnes', BAZ_EMETTEUR, $personnes_select, $option) ; |
} else { |
$formtemplate->addElement ('hidden', 'personnes', 'tous') ; |
716,7 → 740,7 |
$utilisateur = new Administrateur_bazar($GLOBALS['AUTH']) ; |
|
if ($utilisateur->isSuperAdmin()) { |
$option=array('style'=>'border:1px solid #000;width: 60px;font:12px Myriad, Arial, sans-serif;'); |
$option=array('style'=>'border:1px solid #000;width: 200px;font:12px Myriad, Arial, sans-serif;'); |
$valide_select[0] = BAZ_FICHES_PAS_VALIDEES; |
$valide_select[1] = BAZ_FICHES_VALIDEES; |
$valide_select[2] = BAZ_LES_DEUX; |
726,7 → 750,7 |
} |
|
//champs texte pour entrer les mots cles |
$option=array('maxlength'=>60,'style'=>'border:1px solid #000;width:100px;font:12px Myriad, Arial, sans-serif;'); |
$option=array('maxlength'=>60,'style'=>'border:1px solid #000;width:200px;font:12px Myriad, Arial, sans-serif;'); |
$formtemplate->addElement('text', 'recherche_mots_cles', BAZ_MOT_CLE, $option) ; |
$defauts=array('recherche_mots_cles'=>BAZ_MOT_CLE); |
$formtemplate->setDefaults($defauts); |
735,35 → 759,50 |
$formtemplate->addElement('hidden', 'recherche_effectuee', 1) ; |
|
// Ajout des options si un type de fiche a ete choisie |
if ((isset($_REQUEST['nature']) && $_REQUEST['nature'] != 'toutes') || isset($GLOBALS['_BAZAR_']['categorie_nature'])) { |
if ( (isset($_REQUEST['nature']) && $_REQUEST['nature'] != 'toutes') || (isset($GLOBALS['_BAZAR_']['categorie_nature']) && $nb_type_de_fiches==1) ) { |
if ( BAZ_MOTEUR_RECHERCHE_AVANCEE || ( isset($_REQUEST['recherche_avancee'])&&$_REQUEST['recherche_avancee']==1) ) { |
if ($GLOBALS['_BAZAR_']['categorie_nature'] != '') { |
$champs_requete = 'bn_id_nature' ; |
$champs_requete = '' ; |
if (!isset($_REQUEST['nature']) || $_REQUEST['nature'] == '') { |
$_REQUEST['nature'] = $GLOBALS['_BAZAR_']['categorie_nature']; |
$champs_requete = 'bn_ce_id_menu' ; |
$_REQUEST['nature'] = $tableau_typeannonces[0]; |
} |
} else { |
$champs_requete = 'bn_id_nature' ; |
} |
// Récupération du template |
$requete = 'select bn_template from bazar_nature where '.$champs_requete.'="'.$_REQUEST['nature'].'"'; |
$requete = 'SELECT bn_template FROM bazar_nature WHERE bn_id_nature="'.$_REQUEST['nature'].'"'; |
$resultat = $GLOBALS['_BAZAR_']['db']->getOne($requete) ; |
if (DB::isError($resultat)) { |
die ($resultat->getMessage().$resultat->getDebugInfo()) ; |
} |
|
if ($_REQUEST['recherche_avancee']==1) { |
foreach(array_merge($_POST, $_GET) as $cle => $valeur) $GLOBALS['_BAZAR_']['url']->addQueryString($cle, $valeur); |
$GLOBALS['_BAZAR_']['url']->addQueryString('recherche_avancee', '0'); |
$lien_recherche_de_base = '<a href="'.$GLOBALS['_BAZAR_']['url']->getURL().'">'.BAZ_RECHERCHE_DE_BASE.'</a><br />'; |
//lien recherche de base |
labelhtml($formtemplate,'',$lien_recherche_de_base,'','','','',''); |
} |
|
$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']) ; |
$tableau[$i]['limite2'], $tableau[$i]['defaut'], $tableau[$i]['table_source'], $tableau[$i]['obligatoire'], 1) ; |
} |
} |
|
} |
else { |
foreach(array_merge($_POST, $_GET) as $cle => $valeur) $GLOBALS['_BAZAR_']['url']->addQueryString($cle, $valeur); |
$GLOBALS['_BAZAR_']['url']->addQueryString('recherche_avancee', '1'); |
$lien_recherche_avancee = '<a href="'.$GLOBALS['_BAZAR_']['url']->getURL().'">'.BAZ_RECHERCHE_AVANCEE.'</a><br />'; |
} |
} |
|
//lien recherche avancee |
if (isset($lien_recherche_avancee)) { |
labelhtml($formtemplate,'',$lien_recherche_avancee,'','','','',''); |
} |
|
//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); |
775,38 → 814,47 |
|
// Ajout de la table bazar_fiche_liste_valeur dans le from de la requete |
$case_coche = false ; |
$nb_jointures=0; |
$requeteFrom = '' ; |
$requeteWhere = '' ; |
$requeteWhereListe = '' ; |
|
if ( isset($tableau) ) { |
for ($i = 0; $i < count ($tableau); $i++) { |
if ($tableau[$i]['type'] == 'checkbox' || $tableau[$i]['type'] == 'liste') { |
$nb_jointures++; |
$nom_liste = $tableau[$i]['type'].$tableau[$i]['nom_bdd'] ; |
|
if (is_array($_REQUEST[$nom_liste])) { |
if (isset($_REQUEST[$nom_liste]) && is_array($_REQUEST[$nom_liste])) { |
$case_coche = true; |
$requeteWhereListe .= ' bfvl'.$nb_jointures.'.bfvl_ce_liste='.$tableau[$i]['nom_bdd'].' AND ' ; // Numéro de la liste |
$requeteWhereListe .= ' bfvl'.$nb_jointures.'.bfvl_valeur IN (' ; |
$chaine = ''; |
//var_dump($_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 |
|
$chaine .= '"'.$cle.'",' ; |
} |
} |
$requeteWhereListe .= substr ($chaine, 0, strlen ($chaine)-1) ; |
$requeteWhereListe .= ') AND '; |
} 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 '; |
if (isset ($_REQUEST[$nom_liste]) && $_REQUEST[$nom_liste]!=0) { |
$requeteWhereListe .= ' bfvl'.$nb_jointures.'.bfvl_ce_liste='.$tableau[$i]['nom_bdd'].' AND ' ; // Numéro de la liste |
$requeteWhereListe .= ' bfvl'.$nb_jointures.'.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; |
for ($i = 0; $i < $nb_jointures ; $i++) { |
$requeteFrom .= ', bazar_fiche_valeur_liste as bfvl'.($i+1) ; |
$requeteWhere .= ' bfvl'.($i+1).'.bfvl_ce_fiche=bf_id_fiche AND '; |
} |
if (isset($_REQUEST['nature'])) { |
$requeteWhere .= $requeteWhereListe; |
} |
if (isset($_REQUEST['nature']) && $_REQUEST['nature']!='' && $_REQUEST['nature']!='toutes') { |
$requeteWhere = 'bf_ce_nature="'.$_REQUEST['nature'].'" AND '.$requeteWhere; |
} |
|
835,11 → 883,8 |
if (isset($_REQUEST['valides'])) {$valides=$_REQUEST['valides'];} |
else {$valides=1;} |
//generation de la liste de flux a afficher |
$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) ; |
*/ |
if (!isset($_REQUEST['personne'])) $_REQUEST['personne']='tous'; |
$res .= baz_liste_pagine_HTML($typedefiches, '', $_REQUEST['personne'], $valides, $requeteSQL, $requeteFrom, $requeteWhere); |
} |
else { |
//on affiche toutes les annonces |
846,8 → 891,10 |
$res .= '<br /><p class="zone_info">'."\n".BAZ_ENTRER_VOS_CRITERES_DE_RECHERCHE.'</p>'."\n"; |
$GLOBALS['_BAZAR_']['url']->removeQueryString('action'); |
$GLOBALS['_BAZAR_']['url']->addQueryString('action', BAZ_VOIR_FLUX_RSS); |
$GLOBALS['_BAZAR_']['url']->addQueryString('annonce', 'toutes'); |
$res .= '{{Syndication titre="Les dernières fiches enregistrées" url="'.$GLOBALS['_BAZAR_']['url']->getURL().'" nb=10 nouvellefenetre=0 formatdate="'.BAZ_TYPE_AFFICHAGE_LISTE.'"}}'; |
$GLOBALS['_BAZAR_']['url']->addQueryString('annonce', $typeannonce); |
$GLOBALS['_BAZAR_']['url']->addQueryString('categorie_nature', $GLOBALS['_BAZAR_']['categorie_nature']); |
$res .= '{{Syndication titre="Les dernières fiches enregistrées" url="'.$GLOBALS['_BAZAR_']['url']->getURL(). |
'" nb=10 nouvellefenetre=0 formatdate="'.BAZ_TYPE_AFFICHAGE_LISTE.'"}}'; |
} |
return $res; |
} |
865,22 → 912,6 |
$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) { |
|
894,7 → 925,6 |
' 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; |
916,6 → 946,7 |
} |
$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()) ; |
928,16 → 959,15 |
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'; |
include_once PAP_CHEMIN_API_PEAR.'Pager/Pager.php'; |
$params = array( |
'mode' => BAZ_MODE_DIVISION, |
'perPage' => BAZ_NOMBRE_RES_PAR_PAGE, |
'delta' => BAZ_DELTA, |
'httpMethod' => 'GET', |
'extraVars' => $_REQUEST, |
'extraVars' => array_merge($_POST, $_GET), |
'altNext' => BAZ_SUIVANT, |
'altPrev' => BAZ_PRECEDENT, |
'nextImg' => BAZ_SUIVANT, |
961,6 → 991,9 |
/* +--Fin du code ----------------------------------------------------------------------------------------+ |
* |
* $Log: not supported by cvs2svn $ |
* Revision 1.48 2006/05/17 09:50:13 alexandre_tb |
* Ajout du moteur de recherche évolué et du découpage par page |
* |
* +-- Fin du code ----------------------------------------------------------------------------------------+ |
*/ |
?> |