30,6 → 30,8 |
else {$tableau[$nblignes]['id_source'] ='';} |
if (isset($souschaine[8])) $tableau[$nblignes]['obligatoire'] = trim($souschaine[8]); |
else {$tableau[$nblignes]['obligatoire'] ='';} |
if (isset($souschaine[8])) $tableau[$nblignes]['recherche'] = trim($souschaine[9]); |
else {$tableau[$nblignes]['recherche'] ='';} |
$nblignes++; |
} |
return $tableau; |
378,7 → 380,7 |
* |
* @return string le code HTML |
*/ |
function RSSversHTML($rss, $voirdesc, $formatdate) { |
function RSSversHTML($rss, $voirdesc, $formatdate, $affichenb) { |
if ($rss!='') { |
$rawitems='';$title='';$url='';$cat='';$date=''; |
$res=''; |
400,6 → 402,20 |
$res.='</li>'."\n"; |
} |
$res.='</ul>'."\n"; |
if ($affichenb==1) { |
//une annonce trouvee, on accorde au singulier |
if (((count($items)-1)==1)and($title!=BAZ_PAS_D_ANNONCES)) { |
$res = '<br /><h4>'.BAZ_IL_Y_A.' 1 '.BAZ_FICHE_CORRESPONDANTE.'</h4><br />'."\n".$res; |
} |
//plusieures annonces trouvees, on accorde au pluriel |
else { |
$res = '<br /><h4>'.BAZ_IL_Y_A.(count($items)-1).' '.BAZ_FICHES_CORRESPONDANTES.'</h4><br />'."\n".$res; |
} |
} |
//cas des fiches pas trouvées |
if (((count($items)-1)==1)and($title[1]==BAZ_PAS_D_ANNONCES)) { |
$res = '<br /><h4>'.BAZ_PAS_D_ANNONCES.'</h4><br />'."\n"; |
} |
} |
} |
else $res = BAZ_PAS_D_ANNONCES; |
412,25 → 428,37 |
* @param integer Le nombre d'annonces a regrouper dans le fichier XML (laisser vide pour toutes) |
* @param integer L'identifiant de l'emetteur (laisser vide pour tous) |
* @param integer L'état de validation de l'annonce (laisser 1 pour les annonces validées, 0 pour les non-validées) |
* @param string La requête SQL personnalisée |
* @param string La requête SQL personnalisee |
* |
* @return string Le code du flux RSS |
*/ |
function gen_RSS($typeannonce='', $nbitem='', $emetteur='', $valide=1, $requeteSQL='') { |
// génération de la requete MySQL personnalisée |
$requete = 'SELECT DISTINCT bf_id_fiche, bf_titre, bf_date_debut_validite_fiche, bn_label_nature FROM bazar_fiche, bazar_nature'; |
$requete .= ' WHERE bf_statut_fiche='.$valide; |
// 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 WHERE '; |
if ($valide!=2) { |
$requete .= 'bf_statut_fiche='.$valide; |
$req_where=1; |
} |
$nomflux=BAZ_DERNIERE_ACTU; |
if (($typeannonce!='')and($typeannonce!='toutes')) { |
$requete .= ' AND bn_label_nature="'.$typeannonce.'"'; |
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; |
} |
if ($valide!=0) $requete .= ' AND (bf_date_debut_validite_fiche<=NOW() or bf_date_debut_validite_fiche="0000-00-00")'. |
if ($valide!=0) { |
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'; |
$req_where=1; |
} |
else $nomflux .= BAZ_A_MODERER; |
if (($emetteur!='')and($emetteur!='tous')) { |
$requete .= ' AND bf_ce_utilisateur='.$emetteur; |
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) ; |
440,7 → 468,11 |
$ligne = $resultat->fetchRow(DB_FETCHMODE_ASSOC); |
$nomflux .= ' ('.$ligne[BAZ_CHAMPS_NOM].' '.$ligne[BAZ_CHAMPS_PRENOM].')'; |
} |
if ($requeteSQL!='') $requete .= ' AND ('.$requeteSQL.')'; |
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) ; |
447,7 → 479,7 |
if (DB::isError($resultat)) { |
die ($GLOBALS['_BAZAR_']['db']->getMessage().$GLOBALS["db"]->getDebugInfo()) ; |
} |
// En-tête du flux RSS version 2.0 |
// En-tete du flux RSS version 2.0 |
$xml = '<?xml version="1.0" encoding="ISO-8859-1"?>'."\n".'<rss version="2.0">'."\n"; |
$xml .= '<channel>'."\n".'<title>'.$nomflux.'</title>'."\n".'<link>'.BAZ_RSS_ADRESSESITE.'</link>'."\n"; |
$xml .= '<description>'.BAZ_RSS_DESCRIPTIONSITE.'</description>'."\n".'<language>fr-FR</language>'."\n". |
454,7 → 486,7 |
'<copyright>Copyright 2005 '.BAZ_RSS_NOMSITE.'</copyright>'."\n"; |
// Ajout de la date actuelle de publication (suivant la DTD RSS) |
$xml .= '<lastBuildDate>'.strftime('%d %b %Y %H:%M:%S GMT').'</lastBuildDate>'."\n"; |
// En-tête suite et fin |
// En-tete suite et fin |
$xml .= '<docs>http://www.stervinou.com/projets/rss/</docs>'."\n".'<category>'.BAZ_RSS_CATEGORIE.'</category>'."\n". |
'<managingEditor>'.BAZ_RSS_MANAGINGEDITOR.'</managingEditor>'."\n".'<webMaster>'.BAZ_RSS_WEBMASTER.'</webMaster>'."\n"; |
$xml .= '<ttl>60</ttl>'."\n".'<image>'."\n".'<title>'.BAZ_RSS_NOMSITE.'</title>'."\n".'<url>'.BAZ_RSS_LOGOSITE.'</url>'."\n". |
488,41 → 520,67 |
|
/** baz_liste() Formate la liste de toutes les annonces actuelles |
* |
* @return string le code HTML à afficher |
* @return string le code HTML a afficher |
*/ |
function baz_liste($typeannonce='toutes') { |
|
//titre |
if ($typeannonce=='toutes') $res= '<h2>'.BAZ_TOUTES_LES_ANNONCES.'</h2>'."\n"; |
else $res = '<h2>'.BAZ_TOUTES_LES_ANNONCES_DE_TYPE.$typeannonce.'</h2>'."\n"; |
|
//creation du lien pour le formulaire de recherche |
$GLOBALS['_BAZAR_']['url']->addQueryString('action', BAZ_VOIR_TOUTES_ANNONCES); |
$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>'."\n".'{content}'."\n".'</ul>'."\n".'</form>'."\n"); |
$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"); |
//requete pour obtenir l'id et le label des types d'annonces |
$requete = 'SELECT bn_label_nature '. |
'FROM bazar_nature WHERE bn_ce_id_menu='.$GLOBALS['_GEN_commun']['info_menu']->gm_id_menu. |
' or bn_ce_id_menu=0 ORDER BY bn_label_nature ASC'; |
$resultat = $GLOBALS['_BAZAR_']['db']->query($requete) ; |
if (DB::isError($resultat)) { |
die ($resultat->getMessage().$resultat->getDebugInfo()) ; |
|
//cas du formulaire de recherche proposant de chercher parmis tous les types d'annonces |
if ($typeannonce=='toutes') { |
$res= '<h2>'.BAZ_TOUTES_LES_ANNONCES.'</h2><br />'."\n"; |
//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_']['categorie_nature'].' '. |
'ORDER BY bn_label_nature ASC'; |
$resultat = $GLOBALS['_BAZAR_']['db']->query($requete) ; |
if (DB::isError($resultat)) { |
die ($resultat->getMessage().$resultat->getDebugInfo()) ; |
} |
$type_annonce_select['toutes']=BAZ_TOUS_TYPES_FICHES; |
while ($ligne = $resultat->fetchRow(DB_FETCHMODE_ASSOC)) { |
$type_annonce_select[$ligne['bn_id_nature']] = constant($ligne['bn_label_nature']); |
} |
$option=array('style'=>'border:1px solid #000;width: 140px;font:12px Myriad, Arial, sans-serif;'); |
$formtemplate->addElement ('select', 'nature', BAZ_TYPEANNONCE, $type_annonce_select, $option) ; |
} |
$type_annonce_select['toutes']=BAZ_TOUS_TYPES_FICHES; |
while ($ligne = $resultat->fetchRow(DB_FETCHMODE_ASSOC)) { |
$type_annonce_select[$ligne['bn_label_nature']] = $ligne['bn_label_nature']; |
//cas du type d'annonces prédéfini |
else { |
//requete pour obtenir le label du type d'annonce |
$requete = 'SELECT bn_label_nature '. |
'FROM bazar_nature WHERE bn_id_nature='.$typeannonce.' '. |
'ORDER BY bn_label_nature ASC'; |
$resultat = $GLOBALS['_BAZAR_']['db']->query($requete) ; |
if (DB::isError($resultat)) { |
die ($resultat->getMessage().$resultat->getDebugInfo()) ; |
} |
while ($ligne = $resultat->fetchRow(DB_FETCHMODE_ASSOC)) { |
$nom_typeannonce = constant($ligne['bn_label_nature']) ; |
} |
$res = '<h2>'.BAZ_TOUTES_LES_ANNONCES_DE_TYPE.' '.$nom_typeannonce.'</h2>'."\n"; |
} |
$option=array('style'=>'width: 160px;'); |
$formtemplate->addElement ('select', 'nature', BAZ_TYPEANNONCE, $type_annonce_select, $option) ; |
|
//requete pour obtenir l'id, le nom et prénom de toutes les personnes ayant une fiche publiée actuellement |
|
//requete pour obtenir l'id, le nom et prenom de toutes les personnes ayant depose une fiche |
$requete = 'SELECT '.BAZ_CHAMPS_ID.', '.BAZ_CHAMPS_NOM.', '.BAZ_CHAMPS_PRENOM.' '. |
'FROM bazar_fiche,'.BAZ_ANNUAIRE.' '. |
'WHERE bf_statut_fiche=1 AND bf_date_debut_validite_fiche<=NOW() AND bf_date_fin_validite_fiche>=NOW() AND bf_ce_utilisateur='.BAZ_CHAMPS_ID.' '. |
'ORDER BY '.BAZ_CHAMPS_NOM.' ASC'; |
'WHERE bf_date_debut_validite_fiche<=NOW() AND bf_date_fin_validite_fiche>=NOW() AND bf_ce_utilisateur='.BAZ_CHAMPS_ID.' '; |
if (!isset($_REQUEST['nature'])) { |
if ($GLOBALS['_BAZAR_']['id_nature']!='toutes') { |
$requete .= 'AND bf_ce_nature='.$GLOBALS['_BAZAR_']['id_nature'].' '; |
} |
} |
else { |
if ($_REQUEST['nature']!='toutes') { |
$requete .= 'AND bf_ce_nature='.$_REQUEST['nature'].' '; |
} |
} |
|
$requete .= 'ORDER BY '.BAZ_CHAMPS_NOM.' ASC'; |
$resultat = $GLOBALS['_BAZAR_']['db']->query($requete) ; |
if (DB::isError($resultat)) { |
die ($resultat->getMessage().$resultat->getDebugInfo()) ; |
531,37 → 589,69 |
while ($ligne = $resultat->fetchRow(DB_FETCHMODE_ASSOC)) { |
$personnes_select[$ligne[BAZ_CHAMPS_ID]] = $ligne[BAZ_CHAMPS_NOM]." ".$ligne[BAZ_CHAMPS_PRENOM] ; |
} |
$option=array('style'=>'width: 160px;'); |
$option=array('style'=>'border:1px solid #000;width: 140px;font:12px Myriad, Arial, sans-serif;'); |
$formtemplate->addElement ('select', 'personnes', BAZ_EMETTEUR, $personnes_select, $option) ; |
|
//champs texte pour entrer les mots clés |
$option=array('size'=>15,'maxlength'=>40); |
//pour les super-administrateurs, on peut voir les annonces non validées |
//on verifie si l'utilisateur est administrateur |
$est_admin=0; |
if ($GLOBALS['AUTH']->getAuth()) { |
if (niveau_droit('0',$GLOBALS['AUTH']->getAuthData(BAZ_CHAMPS_ID))=='superadministrateur') |
{ |
$est_admin=1; |
} |
} |
if ($est_admin==1) { |
$option=array('style'=>'border:1px solid #000;width: 60px;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; |
$formtemplate->addElement ('select', 'valides', BAZ_VALIDE, $valide_select, $option) ; |
$defauts=array('valides'=>2); |
$formtemplate->setDefaults($defauts); |
} |
|
//champs texte pour entrer les mots cles |
$option=array('maxlength'=>60,'style'=>'border:1px solid #000;width:100px;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); |
|
//option cachee pour savoir si le formulaire a ete appele deja |
$formtemplate->addElement('hidden', 'recherche_effectuee', 1) ; |
|
//Bouton de validation du formulaire |
$bouton[] = &HTML_QuickForm::createElement('submit', 'valider', BAZ_VALIDER); |
$option=array('style'=>'border:1px solid #000;width:50px;font:12px Myriad, Arial, sans-serif;'); |
$bouton[] = &HTML_QuickForm::createElement('submit', 'valider', BAZ_VALIDER, $option); |
$formtemplate->addGroup($bouton, null, null, ''); |
|
//affichage du formulaire |
$res.=$formtemplate->toHTML()."\n"; |
$requeteSQL=''; |
//affichage des résultats de la recherche si le formulaire a été envoyé |
if (isset($_POST['nature'])) { |
//préparation de la requète pour trouver les mots clés |
|
//affichage des resultats de la recherche si le formulaire a ete envoye |
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)) { |
//découpage des mots clés |
//decoupage des mots cles |
$recherche = split(' ', $_POST['recherche_mots_cles']) ; |
$nbmots=count($recherche); |
$nbmots=count($recherche); |
$requeteSQL=''; |
for ($i=0; $i<$nbmots; $i++) { |
if ($i>0) $requeteSQL.=' OR '; |
$requeteSQL.='bf_titre LIKE "%'.$recherche[$i].'%" OR bf_description LIKE "%'.$recherche[$i].'%" '; |
} |
} |
//génération de la liste de flux à afficher |
$res.=RSSversHTML(gen_RSS($_POST['nature'], '', $_POST['personnes'], 1, $requeteSQL), 1, BAZ_TYPE_AFFICHAGE_LISTE) ; |
if (!isset($_REQUEST['nature'])) {$typedefiches=$GLOBALS['_BAZAR_']['id_nature'] ; } |
else {$typedefiches=$_REQUEST['nature'] ; } |
|
if (isset($_POST['valides'])) {$valides=$_POST['valides'];} |
else {$valides=1;} |
//generation de la liste de flux a afficher |
$res.=RSSversHTML(gen_RSS($typedefiches, '', $_POST['personnes'], $valides, $requeteSQL), 1, BAZ_TYPE_AFFICHAGE_LISTE, 1) ; |
} |
else { |
//on affiche toutes les annonces |
$res .= RSSversHTML(gen_RSS($typeannonce, '', '', 1, ''), 0, 'jm') ; |
$res .= '<br />'."\n".BAZ_ENTRER_VOS_CRITERES_DE_RECHERCHE; |
} |
return $res; |
} |