Skip to content
Extraits de code Groupes Projets
Valider cb2a44c4 rédigé par Fil's avatar Fil
Parcourir les fichiers

ne plus créer de forum 'redac' en attendant la version définitive : tout le...

ne plus créer de forum 'redac' en attendant la version définitive : tout le preview etc se passe hors de la base SQL
parent f0d9cbdd
Aucune branche associée trouvée
Aucune étiquette associée trouvée
Aucune requête de fusion associée trouvée
...@@ -936,6 +936,12 @@ function maj_base() { ...@@ -936,6 +936,12 @@ function maj_base() {
maj_version(1.809); maj_version(1.809);
} }
// Annuler les brouillons de forum jamais valides
if ($version_installee < 1.810) {
spip_query("DELETE FROM spip_forum WHERE statut='redac'");
maj_version(1.810);
}
return true; return true;
} }
......
...@@ -347,7 +347,7 @@ define_once('_AUTH_USER_FILE', '.htpasswd'); ...@@ -347,7 +347,7 @@ define_once('_AUTH_USER_FILE', '.htpasswd');
// (utilise pour les modifs de la base de donnees) // (utilise pour les modifs de la base de donnees)
// version de la base // version de la base
$spip_version = 1.809; $spip_version = 1.810;
// version de spip // version de spip
$spip_version_affichee = "1.8 beta 2 CVS"; $spip_version_affichee = "1.8 beta 2 CVS";
......
<form action='[(#HTTP_VARS{url})]' method='post' name='formulaire'> <form action='[(#HTTP_VARS{url})]' method='post' name='formulaire'>
<input type='hidden' name='ajout_forum' value="oui" />
<input type='hidden' name='id_message' value="[(#HTTP_VARS{id_message})]" /> <input type='hidden' name='ajout_forum' value="oui" />
<input type='hidden' name='alea' value="[(#HTTP_VARS{alea})]" /> <input type='hidden' name='post_forum' value="oui" />
<input type='hidden' name='hash' value="[(#HTTP_VARS{hash})]" /> <input type='hidden' name='alea' value="[(#HTTP_VARS{alea})]" />
<input type='hidden' name='retour' value="[(#HTTP_VARS{retour})]" /> <input type='hidden' name='hash' value="[(#HTTP_VARS{hash})]" />
[(#HTTP_VARS*{modere})<p>] <input type='hidden' name='retour' value="[(#HTTP_VARS{retour})]" />
[(#HTTP_VARS*{afficher_non})]
[(#HTTP_VARS*{previsu}) [<p>(#HTTP_VARS*{modere})</p>]
<fieldset class='spip_encadrer'>
<legend><b><:forum_titre:></b></legend> [(#HTTP_VARS*{afficher_texte_hidden})]
<label> [(#HTTP_VARS*{afficher_texte_input})
<input type='text' name='titre' [(#HTTP_VARS*{previsu})
[value="(#HTTP_VARS{titre})" ]class='forml' size='40' /> <fieldset class='spip_encadrer'>
</label> <legend><b><:forum_titre:></b></legend>
</fieldset> <label><input type='text' name='titre'
<br /> [value="(#HTTP_VARS{titre})" ]class='forml' size='40' />
<fieldset class='spip_encadrer'> </label>
<legend><b><:forum_texte:></b></legend> </fieldset>
<p><:info_creation_paragraphe:></p> <br />
[(#HTTP_VARS{texte}|barre_forum)] <fieldset class='spip_encadrer'>
</fieldset> <legend><b><:forum_texte:></b></legend>
<br /> <p><:info_creation_paragraphe:></p>
[(#HTTP_VARS*{table})] [(#HTTP_VARS{texte}|barre_forum)]
<fieldset class='spip_encadrer'> </fieldset>
<legend><:forum_lien_hyper:></legend> <br />
<p><:forum_page_url:></p> [<p>(#HTTP_VARS*{table})</p>]
<p><label><:forum_titre:> <fieldset class='spip_encadrer'>
<input type='text' name='nom_site_forum' class='forml' size='40' <legend><:forum_lien_hyper:></legend>
value="[(#HTTP_VARS{nom_site_forum})]" /> <p><:forum_page_url:></p>
</label></p> <p><label><:forum_titre:>
<p><label><:forum_url:> <input type='text' name='nom_site_forum' class='forml' size='40'
<input type='text' name='url_site' class='forml' size='40' value="[(#HTTP_VARS{nom_site_forum})]" />
value="[(#HTTP_VARS{url_site})]" /> </label></p>
</label></p> <p><label><:forum_url:>
</fieldset> <input type='text' name='url_site' class='forml' size='40'
<br /> value="[(#HTTP_VARS{url_site})]" />
<fieldset class='spip_encadrer'> </label></p>
<legend><:forum_qui_etes_vous:></legend> </fieldset>
<p> <br />
<label> <fieldset class='spip_encadrer'>
<:forum_votre_nom:> <legend><:forum_qui_etes_vous:></legend>
<input type='text' name='auteur' value="[(#HTTP_VARS{auteur})]" <p><label><:forum_votre_nom:>
class='forml' size='40' [(#HTTP_VARS{disabled})] /> <input type='text' name='auteur' value="[(#HTTP_VARS{auteur})]"
</label> class='forml' size='40' [(#HTTP_VARS{disabled})] />
</p> </label></p>
<p> <p><label><:forum_votre_email:>
<label> <input type='text' name='email_auteur'
<:forum_votre_email:> value="[(#HTTP_VARS{email_auteur})]"
<input type='text' name='email_auteur' value="[(#HTTP_VARS{email_auteur})]" class='forml' size='40' [(#HTTP_VARS{disabled})] />
class='forml' size='40' [(#HTTP_VARS{disabled})] /> </label></p>
</label> </fieldset>
</p> <br />
</fieldset> <div align='right'><input type='submit' value="<:forum_voir_avant:>"
<br /><div align='right'> class='spip_bouton'></div>
<input type='submit' value="<:forum_voir_avant:>" class='spip_bouton'></div>] ]
]
</form> </form>
...@@ -2,6 +2,15 @@ ...@@ -2,6 +2,15 @@
$fond = "forum"; $fond = "forum";
$delais = 3600; $delais = 3600;
// Exemples de personnalisation :
// @ http://www.spip.net/fr_article1825.html
//
// 1. seuls les mots-cles du groupe de mots numero 1 doivent s'afficher
// $afficher_groupe = array(9);
//
// 2. faire des forums uniquement pour affecter des mots-cles
// $afficher_texte = "non";
include ("inc-public.php3"); include ("inc-public.php3");
?> ?>
...@@ -77,13 +77,14 @@ function balise_FORMULAIRE_FORUM_dyn($titre, $table, $forums_publics, $id_rubriq ...@@ -77,13 +77,14 @@ function balise_FORMULAIRE_FORUM_dyn($titre, $table, $forums_publics, $id_rubriq
$previsu = ' '; $previsu = ' ';
// Recuperer le message a previsualiser // Recuperer le message a previsualiser
if ($id_message = intval($GLOBALS['HTTP_POST_VARS']['id_message'])) { if ($GLOBALS['HTTP_POST_VARS']['post_forum']) {
$titre = $GLOBALS['HTTP_POST_VARS']['titre']; $titre = $GLOBALS['HTTP_POST_VARS']['titre'];
$texte = $GLOBALS['HTTP_POST_VARS']['texte']; $texte = $GLOBALS['HTTP_POST_VARS']['texte'];
$auteur = $GLOBALS['HTTP_POST_VARS']['auteur']; $auteur = $GLOBALS['HTTP_POST_VARS']['auteur'];
$email_auteur = $GLOBALS['HTTP_POST_VARS']['email_auteur']; $email_auteur = $GLOBALS['HTTP_POST_VARS']['email_auteur'];
$nom_site_forum = $GLOBALS['HTTP_POST_VARS']['nom_site_forum']; $nom_site_forum = $GLOBALS['HTTP_POST_VARS']['nom_site_forum'];
$url_site = $GLOBALS['HTTP_POST_VARS']['url_site']; $url_site = $GLOBALS['HTTP_POST_VARS']['url_site'];
$ajouter_mot = $GLOBALS['HTTP_POST_VARS']['ajouter_mot']; // array
if ($afficher_texte != 'non') { if ($afficher_texte != 'non') {
$previsu = $previsu =
...@@ -97,16 +98,21 @@ function balise_FORMULAIRE_FORUM_dyn($titre, $table, $forums_publics, $id_rubriq ...@@ -97,16 +98,21 @@ function balise_FORMULAIRE_FORUM_dyn($titre, $table, $forums_publics, $id_rubriq
. interdire_scripts(typo($nom_site_forum)) . "</a>"; . interdire_scripts(typo($nom_site_forum)) . "</a>";
// Verifier mots associes au message // Verifier mots associes au message
$result_mots = spip_query("SELECT mots.id_mot, mots.titre, mots.type if (is_array($ajouter_mot))
FROM spip_mots_forum AS lien, spip_mots AS mots $mots = preg_replace('/[^0-9,]/', '', join(',',$ajouter_mot));
WHERE id_forum='$id_message' AND mots.id_mot = lien.id_mot else $mots = '';
GROUP BY mots.id_mot");
// affichage {par num type, type, num titre,titre}
$result_mots = spip_query("SELECT id_mot, titre, type
FROM spip_mots
WHERE id_mot IN (0, $mots)
ORDER BY 0+type,type,0+titre,titre");
if (spip_num_rows($result_mots)>0) { if (spip_num_rows($result_mots)>0) {
$previsu .= "<p>"._T('forum_avez_selectionne')."</p><ul>"; $previsu .= "<p>"._T('forum_avez_selectionne')."</p><ul>";
while ($row = spip_fetch_array($result_mots)) { while ($row = spip_fetch_array($result_mots)) {
$les_mots[$row['id_mot']] = "checked='checked'"; $les_mots[$row['id_mot']] = "checked='checked'";
$presence_mots = true; $presence_mots = true;
$previsu .= "<li class='font-size=80%'> " $previsu .= "<li style='font-size: 80%;'> "
. typo($row['type']) . "&nbsp;: <b>" . typo($row['type']) . "&nbsp;: <b>"
. typo($row['titre']) ."</b></li>"; . typo($row['titre']) ."</b></li>";
} }
...@@ -129,8 +135,8 @@ function balise_FORMULAIRE_FORUM_dyn($titre, $table, $forums_publics, $id_rubriq ...@@ -129,8 +135,8 @@ function balise_FORMULAIRE_FORUM_dyn($titre, $table, $forums_publics, $id_rubriq
} }
} else { } else {
// Premiere edition, initialiser l'auteur // Premiere edition, initialiser l'auteur
// puis s'accorder une nouvelle entree dans la table if ($spip_forum_user &&
if ($spip_forum_user && is_array($cookie_user = unserialize($spip_forum_user))) { is_array($cookie_user = unserialize($spip_forum_user))) {
$auteur = $cookie_user['nom']; $auteur = $cookie_user['nom'];
$email_auteur = $cookie_user['email']; $email_auteur = $cookie_user['email'];
} }
...@@ -138,10 +144,6 @@ function balise_FORMULAIRE_FORUM_dyn($titre, $table, $forums_publics, $id_rubriq ...@@ -138,10 +144,6 @@ function balise_FORMULAIRE_FORUM_dyn($titre, $table, $forums_publics, $id_rubriq
$auteur = $GLOBALS['auteur_session']['nom']; $auteur = $GLOBALS['auteur_session']['nom'];
$email_auteur = $GLOBALS['auteur_session']['email']; $email_auteur = $GLOBALS['auteur_session']['email'];
} }
$id_message = spip_abstract_insert('forum',
"(date_heure, titre, ip, statut)",
"(NOW(), '".addslashes($titre)."', '$REMOTE_ADDR', 'redac')");
} }
// Generation d'une valeur de securite pour validation // Generation d'une valeur de securite pour validation
...@@ -166,8 +168,9 @@ function balise_FORMULAIRE_FORUM_dyn($titre, $table, $forums_publics, $id_rubriq ...@@ -166,8 +168,9 @@ function balise_FORMULAIRE_FORUM_dyn($titre, $table, $forums_publics, $id_rubriq
'formulaire_forum', 'formulaire_forum',
0, 0,
array( array(
'afficher_non' => 'afficher_texte_input' => (($afficher_texte <> 'non') ? '&nbsp;' : ''),
($afficher_texte != 'non' ? '' : 'afficher_texte_hidden' =>
(($afficher_texte <> 'non') ? '' :
(boutonne('hidden', 'titre', htmlspecialchars($titre)) . (boutonne('hidden', 'titre', htmlspecialchars($titre)) .
$table . $table .
"\n<br /><div align='right'>" . "\n<br /><div align='right'>" .
...@@ -253,7 +256,7 @@ function table_des_mots($table, $les_mots) { ...@@ -253,7 +256,7 @@ function table_des_mots($table, $les_mots) {
<td width='47%' valign='top'>"; <td width='47%' valign='top'>";
} }
$ret .= boutonne($unseul, "ajouter_mot[$id_groupe][]", $id_mot, "id='mot$id_mot' " . $les_mots[$id_mot]) . $ret .= boutonne($unseul, "ajouter_mot[]", $id_mot, "id='mot$id_mot' " . $les_mots[$id_mot]) .
afficher_petits_logos_mots($id_mot) afficher_petits_logos_mots($id_mot)
. "<b><label for='mot$id_mot'>$titre_mot</label></b><br />"; . "<b><label for='mot$id_mot'>$titre_mot</label></b><br />";
......
...@@ -2,6 +2,8 @@ ...@@ -2,6 +2,8 @@
include_ecrire('inc_meta.php3'); include_ecrire('inc_meta.php3');
include_ecrire('inc_forum.php3'); include_ecrire('inc_forum.php3');
include_ecrire("inc_abstract_sql.php3");
// Ce fichier inclus par inc-public a un comportement special // Ce fichier inclus par inc-public a un comportement special
// Voir commentaires dans celui-ci et dans inc-formulaire_forum // Voir commentaires dans celui-ci et dans inc-formulaire_forum
...@@ -51,11 +53,6 @@ $forum_id_rubrique = intval($id_rubrique); ...@@ -51,11 +53,6 @@ $forum_id_rubrique = intval($id_rubrique);
$forum_id_forum = intval($id_forum); $forum_id_forum = intval($id_forum);
$forum_id_breve = intval($id_breve); $forum_id_breve = intval($id_breve);
$forum_id_syndic = intval($id_syndic); $forum_id_syndic = intval($id_syndic);
$slash_texte = addslashes($texte);
$slash_titre = addslashes($titre);
$slash_nom_site_forum = addslashes($nom_site_forum);
$slash_url_site = addslashes($url_site);
$id_message = intval($id_message);
if (!$id_auteur) if (!$id_auteur)
$id_auteur = intval($auteur_session['id_auteur']); $id_auteur = intval($auteur_session['id_auteur']);
...@@ -93,39 +90,44 @@ if ($forums_publics == "abo") { ...@@ -93,39 +90,44 @@ if ($forums_publics == "abo") {
$email_auteur = $auteur_session['email']; $email_auteur = $auteur_session['email'];
} }
$slash_auteur = addslashes($auteur); if ((strlen($texte) + strlen($titre) + strlen($nom_site_forum) + strlen($url_site) + strlen($auteur) + strlen($email_auteur)) > 20 * 1024) {
$slash_email_auteur = addslashes($email_auteur);
if ((strlen($slash_texte) + strlen($slash_titre) + strlen($slash_nom_site_forum) + strlen($slash_url_site) + strlen($slash_auteur) + strlen($slash_email_auteur)) > 20 * 1024) {
ask_php_auth(_T('forum_message_trop_long'), ask_php_auth(_T('forum_message_trop_long'),
_T('forum_cliquer_retour', _T('forum_cliquer_retour',
array('retour_forum' => $retour_forum))); array('retour_forum' => $retour_forum)));
exit; exit;
} }
spip_query("DELETE FROM spip_mots_forum WHERE id_forum='$id_message'");
if ($ajouter_mot) { $validation_finale = (strlen($confirmer) > 0
for (reset($ajouter_mot);$key=key($ajouter_mot);next($ajouter_mot)) OR ($afficher_texte=='non' AND $ajouter_mot));
$les_mots .= ",".join($ajouter_mot[$key],",");
$les_mots = explode(",", $les_mots); if ($validation_finale) {
for ($index = 0; $index < count($les_mots); $index++){
$le_mot = $les_mots[$index]; // verifier droit (pour interdire de hack-poster sur des forums fermes ?)
if ($le_mot > 0) include_ecrire("inc_admin.php3");
spip_query("INSERT INTO spip_mots_forum (id_mot, id_forum) if (!(verifier_action_auteur("ajout_forum $forum_id_rubrique".
VALUES ('$le_mot', '$id_message')"); " $forum_id_forum $forum_id_article $forum_id_breve".
" $forum_id_syndic $alea", $hash))) {
header("Status: 404");
exit;
} }
}
$validation_finale = (strlen($confirmer) > 0 OR // Entrer le message dans la base
($afficher_texte=='non' AND $ajouter_mot)); $id_message = spip_abstract_insert('forum',
$statut = ((!$validation_finale) ? 'redac' : "(date_heure)",
(($forums_publics == 'non') ? 'off' : "(NOW())");
(($forums_publics == 'pri') ? 'prop' : 'publie')));
if ($forum_id_forum > 0) $id_thread = $forum_id_forum; $statut =
else $id_thread = $id_message; ($forums_publics == 'non') ? 'off' :
(($forums_publics == 'pri') ? 'prop' :
'publie');
spip_query("UPDATE spip_forum SET id_parent = $forum_id_forum, if ($forum_id_forum > 0)
$id_thread = $forum_id_forum;
else
$id_thread = $id_message; # id_thread oblige INSERT puis UPDATE.
spip_query("UPDATE spip_forum SET id_parent = $forum_id_forum,
id_rubrique =$forum_id_rubrique, id_rubrique =$forum_id_rubrique,
id_article = $forum_id_article, id_article = $forum_id_article,
id_breve = $forum_id_breve, id_breve = $forum_id_breve,
...@@ -133,49 +135,51 @@ spip_query("UPDATE spip_forum SET id_parent = $forum_id_forum, ...@@ -133,49 +135,51 @@ spip_query("UPDATE spip_forum SET id_parent = $forum_id_forum,
id_auteur = $id_auteur, id_auteur = $id_auteur,
id_thread = $id_thread, id_thread = $id_thread,
date_heure = NOW(), date_heure = NOW(),
titre = \"$slash_titre\", titre = '".addslashes($titre)."',
texte = \"$slash_texte\", texte = '".addslashes($texte)."',
nom_site = \"$slash_nom_site_forum\", nom_site = '".addslashes($nom_site_forum)."',
url_site = \"$slash_url_site\", url_site = '".addslashes($url_site)."',
auteur = \"$slash_auteur\", auteur = '".addslashes($auteur)."',
email_auteur = \"$slash_email_auteur\", email_auteur = '".addslashes($email_auteur)."',
ip = \"$REMOTE_ADDR\", ip = '$REMOTE_ADDR',
statut = \"$statut\" statut = '$statut'
WHERE id_forum = '$id_message' WHERE id_forum = $id_message
"); ");
//calculer_threads(); // calculer_threads();
if ($validation_finale) { // Entrer les mots-cles associes
include_ecrire("inc_admin.php3"); if (is_array($ajouter_mot))
if (!(verifier_action_auteur("ajout_forum $forum_id_rubrique". foreach ($ajouter_mot as $id_mot)
" $forum_id_forum $forum_id_article $forum_id_breve". if ($id_mot = intval($id_mot))
" $forum_id_syndic $alea", $hash))) { spip_query("INSERT INTO spip_mots_forum (id_mot, id_forum)
header("Status: 404"); VALUES ($id_mot, $id_message)");
exit;
} else {
if (lire_meta("prevenir_auteurs") == "oui" AND ($afficher_texte != "non") AND ($id_article = $forum_id_article)) { // Prevenir les auteurs de l'article
prevenir_auteurs($auteur, $email_auteur, $id_article, $texte, $titre); if (lire_meta("prevenir_auteurs") == "oui"
AND ($afficher_texte != "non")
AND ($id_article = $forum_id_article))
prevenir_auteurs($auteur, $email_auteur, $id_article, $texte, $titre);
// Poser un cookie pour ne pas retaper le nom / email
$cookie_user = array('nom' => $auteur, 'email' => $email_auteur);
spip_setcookie('spip_forum_user', serialize($cookie_user));
//
// INVALIDATION DES CACHES LIES AUX FORUMS
//
include_ecrire('inc_invalideur.php3');
if ($statut == 'publie') {
suivre_invalideur ("id='id_forum/" .
calcul_index_forum($forum_id_article,
$forum_id_breve,
$forum_id_rubrique,
$forum_id_syndic) . "'");
}
} $redirect = $retour_forum;
// Poser un cookie pour ne pas retaper le nom / email
$cookie_user = array('nom' => $auteur, 'email' => $email_auteur);
spip_setcookie('spip_forum_user', serialize($cookie_user));
//
// INVALIDATION DES CACHES LIES AUX FORUMS
//
include_ecrire('inc_invalideur.php3');
if ($statut == 'publie') {
suivre_invalideur ("id='id_forum/" .
calcul_index_forum($forum_id_article,
$forum_id_breve,
$forum_id_rubrique,
$forum_id_syndic) . "'");
}
$redirect = $retour_forum;
}
} }
?> ?>
0% Chargement en cours ou .
You are about to add 0 people to the discussion. Proceed with caution.
Terminez d'abord l'édition de ce message.
Veuillez vous inscrire ou vous pour commenter