Subversion Repositories Applications.bazar

Compare Revisions

Ignore whitespace Rev 63 → Rev 64

/trunk/bibliotheque/bazar.fonct.rss.php
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 ('/&amp;/', '&', $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;
}