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.php,v 1.66 2007-06-25 12:15:06 alexandre_tb Exp $ |
// CVS : $Id: bazar.fonct.php,v 1.67 2007-07-04 10:01:30 alexandre_tb Exp $ |
/** |
* |
* Fonctions du module bazar |
31,7 → 31,7 |
*@author Florian Schmitt <florian@ecole-et-nature.org> |
//Autres auteurs : |
*@copyright Tela-Botanica 2000-2004 |
*@version $Revision: 1.66 $ $Date: 2007-06-25 12:15:06 $ |
*@version $Revision: 1.67 $ $Date: 2007-07-04 10:01:30 $ |
// +------------------------------------------------------------------------------------------------------+ |
*/ |
|
81,8 → 81,11 |
function fiches_a_valider() { |
// Pour les administrateurs d'une rubrique, on affiche les fiches a valider de cette rubrique |
// On effectue une requete sur le bazar pour voir les fiches a administrer |
$GLOBALS['_BAZAR_']['url']->addQueryString(BAZ_VARIABLE_VOIR, BAZ_VOIR_ADMIN); |
$res= '<h2>'.BAZ_ANNONCES_A_ADMINISTRER.'</h2><br />'."\n"; |
$requete = 'SELECT * FROM bazar_fiche, bazar_nature WHERE bf_statut_fiche=0 AND bn_id_nature=bf_ce_nature AND bn_ce_id_menu IN ('.$GLOBALS['_BAZAR_']['categorie_nature'].') ORDER BY bf_date_maj_fiche DESC' ; |
$requete = 'SELECT * FROM bazar_fiche, bazar_nature WHERE bf_statut_fiche=0 AND ' . |
'bn_id_nature=bf_ce_nature AND bn_ce_id_menu IN ('.$GLOBALS['_BAZAR_']['categorie_nature'].') ' . |
'ORDER BY bf_date_maj_fiche DESC' ; |
$resultat = $GLOBALS['_BAZAR_']['db']->query($requete) ; |
if (DB::isError($resultat)) { |
die ('Echec de la requete<br />'.$resultat->getMessage().'<br />'.$resultat->getDebugInfo()) ; |
96,7 → 99,7 |
|
// On affiche une ligne par proposition |
while ($ligne = $resultat->fetchRow (DB_FETCHMODE_ASSOC)) { |
//Requete pour trouver le nom et prénom de l'annonceur |
//Requete pour trouver le nom et prenom de l'annonceur |
$requetenomprenom = 'SELECT '.BAZ_CHAMPS_PRENOM.', '.BAZ_CHAMPS_NOM.' FROM '.BAZ_ANNUAIRE. |
' WHERE '.BAZ_CHAMPS_ID.'='.$ligne['bf_ce_utilisateur'] ; |
$resultatnomprenom = $GLOBALS['_BAZAR_']['db']->query ($requetenomprenom) ; |
161,6 → 164,7 |
$res .= '<p class="zone_info">'.BAZ_PAS_DE_FICHE_A_VALIDER.'</p>'."\n" ; |
} |
$GLOBALS['_BAZAR_']['url']->addQueryString('action', BAZ_VOIR_TOUTES_ANNONCES); |
|
$res .= '<br /><ul style="clear:both;"><li><a href="'.$GLOBALS['_BAZAR_']['url']->getURL().'" title="'.BAZ_CONSULTER_FICHES_VALIDEES.'">'.BAZ_CONSULTER_FICHES_VALIDEES.'</a></li></ul>'; |
|
// Nettoyage de l'url |
167,7 → 171,87 |
$GLOBALS['_BAZAR_']['url']->removeQueryString('action'); |
$GLOBALS['_BAZAR_']['url']->removeQueryString('id_fiche'); |
$GLOBALS['_BAZAR_']['url']->removeQueryString('typeannonce'); |
|
// Les autres fiches, deja validees |
$res .= '<h2>'.BAZ_TOUTES_LES_FICHES.'</h2>'."\n"; |
$requete = 'SELECT * FROM bazar_fiche, bazar_nature WHERE bf_statut_fiche=1 AND ' . |
'bn_id_nature=bf_ce_nature AND bn_ce_id_menu IN ('.$GLOBALS['_BAZAR_']['categorie_nature'].') ' . |
'ORDER BY bf_date_maj_fiche DESC' ; |
$resultat = $GLOBALS['_BAZAR_']['db']->query($requete) ; |
if (DB::isError($resultat)) { |
die ('Echec de la requete<br />'.$resultat->getMessage().'<br />'.$resultat->getDebugInfo()) ; |
} |
if ($resultat->numRows() != 0) { |
$tableAttr = array('id' => 'table_bazar') ; |
$table = new HTML_Table($tableAttr) ; |
$entete = array (BAZ_TITREANNONCE ,BAZ_ANNONCEUR, BAZ_TYPEANNONCE, BAZ_PUBLIER, BAZ_SUPPRIMER) ; |
$table->addRow($entete) ; |
$table->setRowType (0, 'th') ; |
|
// On affiche une ligne par proposition |
while ($ligne = $resultat->fetchRow (DB_FETCHMODE_ASSOC)) { |
//Requete pour trouver le nom et prenom de l'annonceur |
$requetenomprenom = 'SELECT '.BAZ_CHAMPS_PRENOM.', '.BAZ_CHAMPS_NOM.' FROM '.BAZ_ANNUAIRE. |
' WHERE '.BAZ_CHAMPS_ID.'='.$ligne['bf_ce_utilisateur'] ; |
$resultatnomprenom = $GLOBALS['_BAZAR_']['db']->query ($requetenomprenom) ; |
if (DB::isError($resultatnomprenom)) { |
echo ("Echec de la requete<br />".$resultatnomprenom->getMessage()."<br />".$resultatnomprenom->getDebugInfo()) ; |
} |
while ($lignenomprenom = $resultatnomprenom->fetchRow (DB_FETCHMODE_ASSOC)) { |
$annonceur=$lignenomprenom[BAZ_CHAMPS_PRENOM]." ".$lignenomprenom[BAZ_CHAMPS_NOM]; |
} |
$lien_voir=$GLOBALS['_BAZAR_']['url']; |
$lien_voir->addQueryString('action', BAZ_VOIR_FICHE); |
$lien_voir->addQueryString('id_fiche', $ligne['bf_id_fiche']); |
$lien_voir->addQueryString('typeannonce', $ligne['bn_id_nature']); |
|
// Nettoyage de l'url |
// NOTE (jpm - 23 mai 2007): pour être compatible avec PHP5 il faut utiliser tjrs $GLOBALS['_BAZAR_']['url'] car en php4 on |
// copie bien une variable mais pas en php5, cela reste une référence... |
$GLOBALS['_BAZAR_']['url']->removeQueryString('action'); |
$GLOBALS['_BAZAR_']['url']->removeQueryString('id_fiche'); |
$GLOBALS['_BAZAR_']['url']->removeQueryString('typeannonce'); |
|
$GLOBALS['_BAZAR_']['url']->addQueryString('id_fiche', $ligne['bf_id_fiche']); |
$GLOBALS['_BAZAR_']['url']->addQueryString('typeannonce', $ligne['bn_id_nature']); |
|
$GLOBALS['_BAZAR_']['url']->addQueryString('action', BAZ_VOIR_FICHE); |
$lien_voir = $GLOBALS['_BAZAR_']['url']->getURL(); |
$GLOBALS['_BAZAR_']['url']->removeQueryString('action'); |
|
$GLOBALS['_BAZAR_']['url']->addQueryString('action', BAZ_ACTION_PUBLIER); |
$lien_publie_oui = $GLOBALS['_BAZAR_']['url']->getURL(); |
$GLOBALS['_BAZAR_']['url']->removeQueryString('action'); |
|
$GLOBALS['_BAZAR_']['url']->addQueryString('action', BAZ_ACTION_PAS_PUBLIER); |
$lien_publie_non = $GLOBALS['_BAZAR_']['url']->getURL(); |
$GLOBALS['_BAZAR_']['url']->removeQueryString('action'); |
|
$GLOBALS['_BAZAR_']['url']->addQueryString('action', BAZ_ACTION_SUPPRESSION); |
$lien_supprimer = $GLOBALS['_BAZAR_']['url']->getURL(); |
$GLOBALS['_BAZAR_']['url']->removeQueryString('action'); |
|
$GLOBALS['_BAZAR_']['url']->removeQueryString('id_fiche'); |
$GLOBALS['_BAZAR_']['url']->removeQueryString('typeannonce'); |
|
$table->addRow (array( |
'<a href="'.$lien_voir.'">'.$ligne['bf_titre'].'</a>'."\n", // col 1 : le nom |
$annonceur."\n", // col 2 : annonceur |
$ligne['bn_label_nature']."\n", // col 3 : type annonce |
"<a href=\"".$lien_publie_oui."\">".BAZ_OUI."</a> / \n". |
"<a href=\"".$lien_publie_non."\">".BAZ_NON."</a>", // col 4 : publier ou pas |
"<a href=\"".$lien_supprimer."\"". |
" onclick=\"javascript:return confirm('".BAZ_CONFIRMATION_SUPPRESSION."');\">".BAZ_SUPPRIMER."</a>\n")) ; // col 5 : supprimer |
|
} |
$table->altRowAttributes(1, array("class" => "ligne_impaire"), array("class" => "ligne_paire")); |
$table->updateColAttributes(1, array("align" => "center")); |
$table->updateColAttributes(2, array("align" => "center")); |
$table->updateColAttributes(3, array("align" => "center")); |
$table->updateColAttributes(4, array("align" => "center")); |
$res .= $table->toHTML() ; |
} |
$GLOBALS['_BAZAR_']['url']->removeQueryString(BAZ_VARIABLE_VOIR); |
return $res; |
} |
|
416,11 → 500,11 |
$table->addRow(array($titre, |
BAZ_DROIT_ADMIN, |
'<a href='.$lien_aucun_droit->getURL().'>'.BAZ_AUCUN_DROIT.'</a>', |
'<a href='.$lien_passer_redacteur->getURL().'>'.BAZ_DROIT_REDACTEUR.'</a>')); |
'<a href='.$lien_passer_redacteur->getURL().'>'.BAZ_LABEL_REDACTEUR.'</a>')); |
} |
elseif ($utilisateur->isRedacteur($ligne['bn_id_nature'])) { |
$table->addRow(array($titre, |
BAZ_DROIT_REDACTEUR, |
BAZ_LABEL_REDACTEUR, |
'<a href='.$lien_aucun_droit->getURL().'>'.BAZ_AUCUN_DROIT.'</a>', |
'<a href='.$lien_passer_admin->getURL().'>'.BAZ_DROIT_ADMIN.'</a>')); |
} |
427,7 → 511,7 |
else { |
$table->addRow(array($titre, |
BAZ_AUCUN_DROIT, |
'<a href='.$lien_passer_redacteur->getURL().'>'.BAZ_DROIT_REDACTEUR.'</a>', |
'<a href='.$lien_passer_redacteur->getURL().'>'.BAZ_LABEL_REDACTEUR.'</a>', |
'<a href='.$lien_passer_admin->getURL().'>'.BAZ_DROIT_ADMIN.'</a>')); |
|
} |
496,7 → 580,7 |
$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". |
' </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". |
517,7 → 601,7 |
$requete = 'SELECT * FROM bazar_nature WHERE bn_ce_id_menu IN ('.$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()) ; |
return ($resultat->getMessage().$resultat->getDebugInfo()) ; |
} |
$res.='<h2>'.BAZ_DEPOSE_UNE_NOUVELLE_ANNONCE.'</h2>'."\n"; |
if ($resultat->numRows()==1) { |
555,10 → 639,16 |
|
//Mettre les annonces en choix par defaut |
$formtemplate->setdefaults(array('typeannonce'=>'1')); |
|
// Bouton d annulation |
$lien_formulaire->removeQueryString('action'); |
$buttons[] = &HTML_QuickForm::createElement('link', 'annuler', BAZ_ANNULER, |
preg_replace ("/&/", "&", $lien_formulaire->getURL()), BAZ_ANNULER); // Le preg_replace contourne un pb de QuickForm et Net_URL |
// qui remplacent deux fois les & par des & |
//Bouton de validation du formulaire // ce qui fait échouer le lien |
$buttons[] = &HTML_QuickForm::createElement('submit', 'valider', BAZ_VALIDER); |
$formtemplate->addGroup($buttons, null, null, ' '); |
|
//Bouton de validation du formulaire |
$formtemplate->addElement('submit', 'valider', BAZ_VALIDER); |
|
//Affichage a l'ecran |
$res.= $formtemplate->toHTML()."\n"; |
} |
608,6 → 698,7 |
} |
} |
else { |
/* |
$res .= '<h2>'.BAZ_DEPOSE_UNE_NOUVELLE_ANNONCE.'</h2><br />'."\n"; |
$res .= '<p class="zone_info">'.BAZ_IDENTIFIEZ_VOUS_POUR_SAISIR.'</p>'."\n" ; |
$res .= '<form id="form_connexion" class="form_identification" action="' ; |
622,7 → 713,10 |
<input type="password" id="password" name="password" maxlength="80" tabindex="2" value="mot de passe" /> |
<input type="submit" id="connexion" name="connexion" tabindex="3" value="ok" /> |
</fieldset> |
</form>'; |
</form>';*/ |
include_once BAZ_CHEMIN_APPLI.'bibliotheque/bazarTemplate.class.php'; |
$modele = new bazarTemplate($GLOBALS['_BAZAR_']['db']); |
$res .= $modele->getTemplate(BAZ_TEMPLATE_MESSAGE_LOGIN, $GLOBALS['_BAZAR_']['langue']); |
} |
|
return $res; |
670,11 → 764,12 |
if ($mode=='modification') { |
//Ajout des valeurs par defaut |
$valeurs_par_defaut = baz_valeurs_fiche($GLOBALS['_BAZAR_']['id_fiche']) ; |
|
for ($i=0; $i<count($tableau); $i++) { |
if ( $tableau[$i]['type']=='liste' || $tableau[$i]['type']=='checkbox' ) { |
$def=$tableau[$i]['type'].$tableau[$i]['nom_bdd']; |
} |
elseif ( $tableau[$i]['type']=='texte' || $tableau[$i]['type']=='textelong' || $tableau[$i]['type']=='listedatedeb' || $tableau[$i]['type']=='listedatefin' ) { |
elseif ( $tableau[$i]['type']=='texte' || $tableau[$i]['type']=='textelong' || $tableau[$i]['type']=='listedatedeb' || $tableau[$i]['type']=='listedatefin' || $tableau[$i]['type']=='champs_cache') { |
$def=$tableau[$i]['nom_bdd']; |
} elseif ($tableau[$i]['type']=='carte_google') { |
$def = 'carte_google'; |
681,7 → 776,11 |
$valeurs_par_defaut[$def] = array ('latitude' => $valeurs_par_defaut['bf_latitude'], 'longitude' => $valeurs_par_defaut['bf_longitude']); |
} |
$tableau[$i]['type']($formtemplate, $tableau[$i]['nom_bdd'], $tableau[$i]['label'], $tableau[$i]['limite1'], |
$tableau[$i]['limite2'], $valeurs_par_defaut[$def], $tableau[$i]['table_source'], $tableau[$i]['obligatoire']) ; |
$tableau[$i]['limite2'], $valeurs_par_defaut[$def], $tableau[$i]['table_source'], $tableau[$i]['obligatoire']) ; |
if ($tableau[$i]['type']=='carte_google') { |
include_once GEN_CHEMIN_API.'formulaire/formulaire.fonct.google.php'; |
GEN_stockerCodeScript($script); |
} |
} |
} |
else { |
688,10 → 787,25 |
for ($i=0; $i<count($tableau); $i++) { |
$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']) ; |
if ($tableau[$i]['type'] == 'carte_google') { |
include_once GEN_CHEMIN_API.'formulaire/formulaire.fonct.google.php'; |
GEN_stockerCodeScript($script); |
} |
} |
} |
$formtemplate->addElement('hidden', 'typeannonce', $GLOBALS['_BAZAR_']['id_typeannonce']); |
$formtemplate->addElement('submit', 'valider', BAZ_VALIDER); |
|
// Bouton d annulation |
$attr = $formtemplate->getAttributes(); |
$lien_formulaire = new Net_URL($attr['action']); |
$lien_formulaire->addQueryString('action', BAZ_ACTION_VOIR_VOS_ANNONCES); |
$buttons[] = &HTML_QuickForm::createElement('link', 'annuler', BAZ_ANNULER, |
preg_replace ("/&/", "&", $lien_formulaire->getURL()), BAZ_ANNULER); // Le preg_replace contourne un pb de QuickForm et Net_URL |
// qui remplacent deux fois les & par des & |
//Bouton de validation du formulaire // ce qui fait échouer le lien |
$buttons[] = &HTML_QuickForm::createElement('submit', 'valider', BAZ_VALIDER); |
$formtemplate->addGroup($buttons, null, null, ' '); |
|
} |
|
//Affichage a l'ecran |
785,7 → 899,7 |
$requete .= $tableau[$i]['nom_bdd'].'="'.$val.'", ' ; |
} |
//cas des champs texte |
elseif ( $tableau[$i]['type']=='texte' || $tableau[$i]['type']=='textelong' ) { |
elseif ( $tableau[$i]['type']=='texte' || $tableau[$i]['type']=='textelong' || $tableau[$i]['type']=='champs_cache' ) { |
//on mets les slashes pour les saisies dans les champs texte et textearea |
$val=addslashes($valeur[$tableau[$i]['nom_bdd']]) ; |
$requete .= $tableau[$i]['nom_bdd'].'="'.$val.'", ' ; |
831,8 → 945,21 |
$requete .=requete_bazar_fiche(&$valeur) ; |
$resultat = $GLOBALS['_BAZAR_']['db']->query($requete) ; |
if (DB::isError($resultat)) { |
die ($resultat->getMessage().$resultat->getDebugInfo()) ; |
return ($resultat->getMessage().$resultat->getDebugInfo()) ; |
} |
// Envoie d un mail aux administrateurs |
$utilisateur = new Administrateur_bazar($GLOBALS['AUTH']); |
if ($utilisateur->isRedacteur($GLOBALS['_BAZAR_']['id_typeannonce'])) { |
$mails = bazar::getMailAdmin($GLOBALS['_BAZAR_']['id_typeannonce']); |
$template = new bazarTemplate($GLOBALS['_BAZAR_']['db']); |
$sujet = $template->getTemplate(BAZ_TEMPLATE_MAIL_NOUVELLE_FICHE_SUJET, $GLOBALS['_BAZAR_']['langue'], $GLOBALS['_BAZAR_']['id_typeannonce']); |
$corps = $template->getTemplate(BAZ_TEMPLATE_MAIL_NOUVELLE_FICHE_CORPS, $GLOBALS['_BAZAR_']['langue'], $GLOBALS['_BAZAR_']['id_typeannonce']); |
if (is_array ($mails)) { |
foreach ($mails as $mail) { |
mail ($mail, $sujet, $corps); |
} |
} |
} |
return; |
} |
|
1230,7 → 1357,7 |
} |
$valeurs_fiche[$tableau[$i]['type'].$tableau[$i]['nom_bdd']] = $val; |
} |
elseif ($tableau[$i]['type']=='texte' || $tableau[$i]['type']=='textelong' || $tableau[$i]['type']=='listedatedeb' || $tableau[$i]['type']=='listedatefin') { |
elseif ($tableau[$i]['type']=='champs_cache' || $tableau[$i]['type']=='texte' || $tableau[$i]['type']=='textelong' || $tableau[$i]['type']=='listedatedeb' || $tableau[$i]['type']=='listedatefin') { |
$valeurs_fiche[$tableau[$i]['nom_bdd']] = stripslashes($ligne[$tableau[$i]['nom_bdd']]); |
} elseif ($tableau[$i]['type']=='carte_google') { |
$valeurs_fiche['bf_latitude'] = $ligne['bf_latitude']; |
1240,44 → 1367,6 |
return $valeurs_fiche; |
} |
|
|
function baz_envoie_mail() { |
$headers['From'] = $_SERVER['SERVER_ADMIN'] ; |
$headers['To'] = "<".INS_MAIL_ADMIN_APRES_INSCRIPTION.">" ; |
$headers['Subject'] = INS_MAIL_ADMIN_APRES_INSCRIPTION_SUJET; |
|
$q = "select * from ".INS_ANNUAIRE." where ".INS_CHAMPS_MAIL."=\"".$_POST['mail']."\"" ; |
|
$r = $GLOBALS['_BAZAR_']['db']->query($q) ; |
if (DB::isError ($r)) { |
die ("echec de la requete") ; |
} |
$row = $r->fetchRow(DB_FETCHMODE_ASSOC) ; |
|
$body_entete = "Un nouvel inscrit à tela : \n" ; |
$body = "mail : ".$row[INS_CHAMPS_MAIL]."\n" ; |
$body .= "------------------------------------------\n"; |
$body .= "nom: ".unhtmlentities($row[INS_CHAMPS_NOM])." \n" ; |
$body .= "prénom : ".unhtmlentities($row[INS_CHAMPS_PRENOM])." \n" ; |
$body .= "-------------------------------------------\n" ; |
|
// création du mail |
$mail_object =& Mail::factory('mail'); |
if (!mail ($headers['To'], $headers['Subject'], $body)) { |
return "Une erreur s'est produite:<br />\n" ; |
} |
$body .= INS_MAIL_INSCRIPTION_2; |
|
$headers['To'] = $_POST['mail'] ; |
|
// création du mail |
if (mail($headers['To'], $headers['Subject'], INS_MAIL_INSCRIPTION_1.$body)) { |
return "Une erreur s'est produite<br />\n" ; |
} |
return; |
} |
|
|
/** function baz_nextId () Renvoie le prochain identifiant numerique libre d'une table |
* |
* @param string Nom de la table |
1320,6 → 1409,9 |
/* +--Fin du code ----------------------------------------------------------------------------------------+ |
* |
* $Log: not supported by cvs2svn $ |
* Revision 1.66 2007-06-25 12:15:06 alexandre_tb |
* merge from narmer |
* |
* Revision 1.65 2007-06-25 08:31:17 alexandre_tb |
* utilisation de la bibliotheque generale api/formulaire/formulaire.fonct.inc.php a la place de bazar.fonct.formulaire.php |
* |