@ -0,0 +1,86 @@ | |||
* text=auto !eol | |||
action/editer_forum.php -text | |||
action/instituer_forum.php -text | |||
action/instituer_lot_forum.php -text | |||
balise/formulaire_forum.php -text | |||
balise/formulaire_forum_prive.php -text | |||
base/forum.php -text | |||
base/forum_upgrade.php -text | |||
exec/articles_forum.php -text | |||
exec/config_forum.php -text | |||
exec/controle_forum.php -text | |||
filtres/forum.php -text | |||
formulaires/configurer_forums_article_moderation.html -text | |||
formulaires/configurer_forums_article_moderation.php -text | |||
formulaires/configurer_forums_contenu.html -text | |||
formulaires/configurer_forums_contenu.php -text | |||
formulaires/configurer_forums_notifications.html -text | |||
formulaires/configurer_forums_notifications.php -text | |||
formulaires/configurer_forums_participants.html -text | |||
formulaires/configurer_forums_participants.php -text | |||
formulaires/configurer_forums_prives.html -text | |||
formulaires/configurer_forums_prives.php -text | |||
formulaires/forum.html -text | |||
formulaires/forum.php -text | |||
formulaires/forum_prive.html -text | |||
formulaires/forum_prive.php -text | |||
formulaires/inc-choix_mots.html -text | |||
formulaires/inc-forum_ajouter_mot.html -text | |||
formulaires/inc-forum_bloc_choix_mots.html -text | |||
formulaires/inc-forum_previsu.html -text | |||
formulaires/inc-forum_prive_previsu.html -text | |||
formulaires/inc-login_forum.html -text | |||
formulaires/inc-login_forum_abo.html -text | |||
/forum_autoriser.php -text | |||
/forum_pipelines.php -text | |||
images/actions-24.png -text | |||
images/actions-filigrane-24.png -text | |||
images/annuler-recherche.png -text | |||
images/comment_48.png -text | |||
images/forum-48.png -text | |||
images/forum-admin-24.gif -text | |||
images/forum-bg-item.png -text | |||
images/forum-droite.gif -text | |||
images/forum-droite_rtl.gif -text | |||
images/forum-interne-24.gif -text | |||
images/forum-public-24.gif -text | |||
images/forum-search-16.png -text | |||
images/forum-statut-off-24.png -text | |||
images/forum-statut-original-24.png -text | |||
images/forum-statut-privadm-24.png -text | |||
images/forum-statut-prive-24.png -text | |||
images/forum-statut-privoff-24.png -text | |||
images/forum-statut-privrac-24.png -text | |||
images/forum-statut-prop-24.png -text | |||
images/forum-statut-publie-24.png -text | |||
images/forum-statut-spam-24.png -text | |||
images/forum-vert.gif -text | |||
inc/discuter.php -text | |||
inc/forum.php -text | |||
inc/forum_insert.php -text | |||
inc/forum_notifications.php -text | |||
lang/forum_fr.php -text | |||
modeles/auteur_nom.html -text | |||
/plugin.xml -text | |||
prive/configurer/forum.html -text | |||
prive/configurer/moderation.html -text | |||
prive/controler_forum.html -text | |||
prive/discuter_forum.html -text | |||
prive/exec/forum.html -text | |||
prive/listes/controler_forum.html -text | |||
prive/listes/inc-boutons-filtres-statut-forum.html -text | |||
prive/listes/participer_forum.html -text | |||
prive/listes/participer_forum_thread.html -text | |||
prive/modeles/forum-actions-moderer.html -text | |||
prive/modeles/forum.html -text | |||
prive/repondre_forum.html -text | |||
prive/style_prive_plugin_forum.html -text | |||
public/forum.php -text | |||
rss/forums.html -text | |||
rss/forums_interne.html -text | |||
rss/forums_prop.html -text | |||
rss/forums_public.html -text | |||
rss/forums_spam.html -text | |||
rss/forums_vide.html -text | |||
urls/generer_url_ecrire_forum.php -text | |||
urls/generer_url_forum.php -text |
@ -0,0 +1,77 @@ | |||
<?php | |||
/***************************************************************************\ | |||
* SPIP, Systeme de publication pour l'internet * | |||
* * | |||
* Copyright (c) 2001-2009 * | |||
* Arnaud Martin, Antoine Pitrou, Philippe Riviere, Emmanuel Saint-James * | |||
* * | |||
* Ce programme est un logiciel libre distribue sous licence GNU/GPL. * | |||
* Pour plus de details voir le fichier COPYING.txt ou l'aide en ligne. * | |||
\***************************************************************************/ | |||
if (!defined("_ECRIRE_INC_VERSION")) return; | |||
include_spip('inc/modifier'); | |||
// Nota: quand on edite un forum existant, il est de bon ton d'appeler | |||
// au prealable conserver_original($id_forum) | |||
// http://doc.spip.org/@revision_forum | |||
function revision_forum($id_forum, $c=false) { | |||
$t = sql_fetsel("*", "spip_forum", "id_forum=".sql_quote($id_forum)); | |||
if (!$t) { | |||
spip_log("erreur forum $id_forum inexistant"); | |||
return; | |||
} | |||
// Calculer l'invalideur des caches lies a ce forum | |||
if ($t['statut'] == 'publie') { | |||
include_spip('inc/invalideur'); | |||
$invalideur = "id='id_forum/" | |||
. calcul_index_forum( | |||
$t['id_article'], | |||
$t['id_breve'], | |||
$t['id_rubrique'], | |||
$t['id_syndic'] | |||
) | |||
. "'"; | |||
} else | |||
$invalideur = ''; | |||
// Supprimer 'http://' tout seul | |||
if (isset($c['url_site'])) { | |||
include_spip('inc/filtres'); | |||
$c['url_site'] = vider_url($c['url_site'], false); | |||
} | |||
$r = modifier_contenu('forum', $id_forum, | |||
array( | |||
'nonvide' => array('titre' => _T('info_sans_titre')), | |||
'invalideur' => $invalideur | |||
), | |||
$c); | |||
$t = $t["id_thread"]; | |||
$cles = array(); | |||
foreach (array('id_article', 'id_rubrique', 'id_syndic', 'id_breve') | |||
as $k) { | |||
if (isset($c[$k])) $cles[$k] = $c[$k]; | |||
} | |||
// Modification des id_article etc | |||
// (non autorise en standard mais utile pour des crayons) | |||
// on deplace tout le thread {sauf les originaux}. | |||
if ($cles) { | |||
sql_updateq("spip_forum", $cles, "id_thread=$t AND statut!='original'"); | |||
// on n'affecte pas $r, car un deplacement ne change pas l'auteur | |||
} | |||
// s'il y a vraiment eu une modif, on stocke le numero IP courant | |||
// ainsi que le nouvel id_auteur dans le message modifie ; et on | |||
// enregistre le nouveau date_thread | |||
if ($r) { | |||
sql_updateq('spip_forum', array('ip'=>($GLOBALS['ip']), 'id_auteur'=>($GLOBALS['visiteur_session']['id_auteur'])),"id_forum=".sql_quote($id_forum)); | |||
sql_updateq("spip_forum", array("date_thread" => date('Y-m-d H:i:s')), "id_thread=".$t); | |||
} | |||
} |
@ -0,0 +1,69 @@ | |||
<?php | |||
/***************************************************************************\ | |||
* SPIP, Systeme de publication pour l'internet * | |||
* * | |||
* Copyright (c) 2001-2009 * | |||
* Arnaud Martin, Antoine Pitrou, Philippe Riviere, Emmanuel Saint-James * | |||
* * | |||
* Ce programme est un logiciel libre distribue sous licence GNU/GPL. * | |||
* Pour plus de details voir le fichier COPYING.txt ou l'aide en ligne. * | |||
\***************************************************************************/ | |||
if (!defined("_ECRIRE_INC_VERSION")) return; | |||
// http://doc.spip.org/@action_instituer_forum_dist | |||
function action_instituer_forum_dist() { | |||
$securiser_action = charger_fonction('securiser_action', 'inc'); | |||
$arg = $securiser_action(); | |||
list($id_forum, $statut) = preg_split('/\W/', $arg); | |||
$id_forum = intval($id_forum); | |||
$row = sql_fetsel("*", "spip_forum", "id_forum=$id_forum"); | |||
if (!$row) return; | |||
instituer_un_forum($statut,$row); | |||
} | |||
function instituer_un_forum($statut,$row){ | |||
$id_forum = $row['id_forum']; | |||
// invalider les pages comportant ce forum | |||
include_spip('inc/invalideur'); | |||
include_spip('inc/forum'); | |||
$index_forum = calcul_index_forum($row['id_article'], $row['id_breve'], $row['id_rubrique'], $row['id_syndic']); | |||
suivre_invalideur("id='id_forum/$index_forum'"); | |||
// changer le statut de toute l'arborescence dependant de ce message | |||
$id_messages = array($id_forum); | |||
$old = $row['statut']; | |||
while ($id_messages) { | |||
sql_updateq("spip_forum", array("statut" => $statut), sql_in("id_forum", $id_messages) ." AND statut = '$old'"); | |||
$result_forum = sql_select("id_forum", "spip_forum", sql_in("id_parent", $id_messages)); | |||
$id_messages = array(); | |||
while ($row = sql_fetch($result_forum)) | |||
$id_messages[] = $row['id_forum']; | |||
} | |||
// Notifier de la publication du message, s'il etait 'prop' | |||
if ($old=='prop' AND $statut=='publie') { | |||
if ($notifications = charger_fonction('notifications', 'inc')) { | |||
$notifications('forumvalide', $id_forum); | |||
} | |||
} | |||
// Reindexation du thread (par exemple) | |||
pipeline('post_edition', | |||
array( | |||
'args' => array( | |||
'table' => 'spip_forum', | |||
'id_objet' => $id_forum | |||
), | |||
'data' => null | |||
) | |||
); | |||
} | |||
?> |
@ -0,0 +1,46 @@ | |||
<?php | |||
/***************************************************************************\ | |||
* SPIP, Systeme de publication pour l'internet * | |||
* * | |||
* Copyright (c) 2001-2009 * | |||
* Arnaud Martin, Antoine Pitrou, Philippe Riviere, Emmanuel Saint-James * | |||
* * | |||
* Ce programme est un logiciel libre distribue sous licence GNU/GPL. * | |||
* Pour plus de details voir le fichier COPYING.txt ou l'aide en ligne. * | |||
\***************************************************************************/ | |||
if (!defined("_ECRIRE_INC_VERSION")) return; | |||
// http://doc.spip.org/@action_instituer_forum_dist | |||
function action_instituer_lot_forum_dist() { | |||
$securiser_action = charger_fonction('securiser_action', 'inc'); | |||
$arg = $securiser_action(); | |||
if (preg_match(",^(\w+)-,",$arg,$match) | |||
AND in_array($statut=$match[1],array('publie','off','spam')) | |||
AND autoriser('instituer','forum',0)){ | |||
$arg = substr($arg,strlen($statut)+1); | |||
$arg = explode('/',$arg); | |||
$ip = array_shift($arg); | |||
$email_auteur = array_shift($arg); | |||
$id_auteur = intval(array_shift($arg)); | |||
$auteur = implode('/',$arg); | |||
$where = array(); | |||
if ($ip) $where[] = "ip=".sql_quote($ip); | |||
if ($email_auteur) $where[] = "email_auteur=".sql_quote($email_auteur); | |||
if ($id_auteur) $where[] = "id_auteur=".intval($id_auteur); | |||
if ($auteur) $where[] = "auteur=".sql_quote($auteur); | |||
$rows = sql_allfetsel("*", "spip_forum", $where); | |||
if (!count($rows)) return; | |||
include_spip('action/instituer_forum'); | |||
foreach ($rows as $row) { | |||
instituer_un_forum($statut,$row); | |||
} | |||
} | |||
} | |||
?> |
@ -0,0 +1,117 @@ | |||
<?php | |||
/***************************************************************************\ | |||
* SPIP, Systeme de publication pour l'internet * | |||
* * | |||
* Copyright (c) 2001-2009 * | |||
* Arnaud Martin, Antoine Pitrou, Philippe Riviere, Emmanuel Saint-James * | |||
* * | |||
* Ce programme est un logiciel libre distribue sous licence GNU/GPL. * | |||
* Pour plus de details voir le fichier COPYING.txt ou l'aide en ligne. * | |||
\***************************************************************************/ | |||
if (!defined("_ECRIRE_INC_VERSION")) return; #securite | |||
include_spip('inc/acces'); | |||
include_spip('inc/texte'); | |||
include_spip('inc/forum'); | |||
/*******************************/ | |||
/* GESTION DU FORMULAIRE FORUM */ | |||
/*******************************/ | |||
// Contexte du formulaire | |||
// Mots-cles dans les forums : | |||
// Si la variable de personnalisation $afficher_groupe[] est definie | |||
// dans le fichier d'appel, et si la table de reference est OK, proposer | |||
// la liste des mots-cles | |||
// http://doc.spip.org/@balise_FORMULAIRE_FORUM | |||
function balise_FORMULAIRE_FORUM ($p) { | |||
$p = calculer_balise_dynamique($p,'FORMULAIRE_FORUM', array('id_rubrique', 'id_forum', 'id_article', 'id_breve', 'id_syndic', 'ajouter_mot', 'ajouter_groupe', 'afficher_texte')); | |||
// Ajouter le code d'invalideur specifique aux forums | |||
include_spip('inc/invalideur'); | |||
if ($i = charger_fonction('code_invalideur_forums','',true)) | |||
$p->code = $i($p, $p->code); | |||
return $p; | |||
} | |||
// | |||
// Chercher le titre et la configuration d'un forum | |||
// valeurs possibles : 'pos'teriori, 'pri'ori, 'abo'nnement | |||
// Donner aussi la table de reference pour afficher_groupes[] | |||
// http://doc.spip.org/@balise_FORMULAIRE_FORUM_stat | |||
function balise_FORMULAIRE_FORUM_stat($args, $filtres) { | |||
// Note : ceci n'est pas documente !! | |||
// $filtres[0] peut contenir l'url sur lequel faire tourner le formulaire | |||
// exemple dans un squelette article.html : [(#FORMULAIRE_FORUM|forum)] | |||
// ou encore [(#FORMULAIRE_FORUM|forumspip.php)] | |||
// le denier arg peut contenir l'url sur lequel faire le retour | |||
// exemple dans un squelette article.html : [(#FORMULAIRE_FORUM{#SELF})] | |||
// recuperer les donnees du forum auquel on repond. | |||
list ($idr, $idf, $ida, $idb, $ids, $am, $ag, $af, $url) = $args; | |||
$idr = intval($idr); | |||
$idf = intval($idf); | |||
$ida = intval($ida); | |||
$idb = intval($idb); | |||
$ids = intval($ids); | |||
$type = substr($GLOBALS['meta']["forums_publics"],0,3); | |||
if ($ida) { | |||
$titre = sql_fetsel('accepter_forum AS type, titre', 'spip_articles', "statut = 'publie' AND id_article = $ida"); | |||
if ($titre) { | |||
if ($titre['type']) $type = $titre['type']; | |||
$table = "articles"; | |||
} | |||
if ($type == 'non') return false; | |||
} else { | |||
if ($type == 'non') return false; | |||
if ($idb) { | |||
$titre = sql_fetsel('titre', 'spip_breves', "statut = 'publie' AND id_breve = $idb"); | |||
$table = "breves"; | |||
} else if ($ids) { | |||
$titre = sql_fetsel('nom_site AS titre', 'spip_syndic', "statut = 'publie' AND id_syndic = $ids"); | |||
$table = "syndic"; | |||
} else if ($idr) { | |||
$titre = sql_fetsel('titre', 'spip_rubriques', "statut = 'publie' AND id_rubrique = $idr"); | |||
$table = "rubriques"; | |||
} | |||
} | |||
if (!$titre) return false; // inexistant ou non public | |||
if ($idf>0) { | |||
$titre_m = sql_fetsel('titre', 'spip_forum', "id_forum = $idf"); | |||
if (!$titre_m) return false; // URL fabriquee | |||
$titre = $titre_m; | |||
} | |||
if ($GLOBALS['meta']["mots_cles_forums"] != "oui") | |||
$table = ''; | |||
$titre = supprimer_numero($titre['titre']); | |||
// Sur quelle adresse va-t-on "boucler" pour la previsualisation ? | |||
// si vide : self() | |||
if ($script = $filtres[0]) | |||
$script = preg_match(',[.]php3?$,', $script) ? | |||
$script : generer_url_public($script); | |||
else | |||
$script = ''; # sur soi-meme | |||
return | |||
array($titre, $table, $type, $script, | |||
$idr, $idf, $ida, $idb, $ids, $am, $ag, $af, $url); | |||
} | |||
?> |
@ -0,0 +1,74 @@ | |||
<?php | |||
/***************************************************************************\ | |||
* SPIP, Systeme de publication pour l'internet * | |||
* * | |||
* Copyright (c) 2001-2009 * | |||
* Arnaud Martin, Antoine Pitrou, Philippe Riviere, Emmanuel Saint-James * | |||
* * | |||
* Ce programme est un logiciel libre distribue sous licence GNU/GPL. * | |||
* Pour plus de details voir le fichier COPYING.txt ou l'aide en ligne. * | |||
\***************************************************************************/ | |||
if (!defined("_ECRIRE_INC_VERSION")) return; #securite | |||
include_spip('inc/acces'); | |||
include_spip('inc/texte'); | |||
include_spip('inc/forum'); | |||
/*******************************/ | |||
/* GESTION DU FORMULAIRE FORUM */ | |||
/*******************************/ | |||
// Contexte du formulaire | |||
function balise_FORMULAIRE_FORUM_PRIVE ($p) { | |||
$p = calculer_balise_dynamique($p,'FORMULAIRE_FORUM_PRIVE', array('id_rubrique', 'id_forum', 'id_article', 'id_breve', 'id_syndic', 'id_message', 'afficher_texte', 'statut')); | |||
return $p; | |||
} | |||
// | |||
// Chercher le titre et la configuration d'un forum | |||
// http://doc.spip.org/@balise_FORMULAIRE_FORUM_PRIVE_stat | |||
function balise_FORMULAIRE_FORUM_PRIVE_stat($args, $filtres) { | |||
// le denier arg peut contenir l'url sur lequel faire le retour | |||
// exemple dans un squelette article.html : [(#FORMULAIRE_FORUM{#SELF})] | |||
// recuperer les donnees du forum auquel on repond. | |||
list ($idr, $idf, $ida, $idb, $ids, $idm, $af, $st, $url) = $args; | |||
$idr = intval($idr); | |||
$idf = intval($idf); | |||
$ida = intval($ida); | |||
$idb = intval($idb); | |||
$ids = intval($ids); | |||
$idm = intval($idm); | |||
if ($ida) { | |||
$titre = sql_fetsel('titre', 'spip_articles', "id_article = $ida"); | |||
} else { | |||
if ($idb) { | |||
$titre = sql_fetsel('titre', 'spip_breves', "id_breve = $idb"); | |||
} else if ($ids) { | |||
$titre = sql_fetsel('nom_site AS titre', 'spip_syndic', "id_syndic = $ids"); | |||
} else if ($idr) { | |||
$titre = sql_fetsel('titre', 'spip_rubriques', "id_rubrique = $idr"); | |||
} else if ($idm) { | |||
$titre = sql_fetsel('titre', 'spip_messages', "id_message = $idm"); | |||
} | |||
} | |||
if ($idf>0) { | |||
$titre_m = sql_fetsel('titre', 'spip_forum', "id_forum = $idf"); | |||
if (!$titre_m) return false; // URL fabriquee | |||
$titre = $titre_m; | |||
} | |||
$titre = supprimer_numero($titre['titre']); | |||
return | |||
array($idr, $idf, $ida, $idb, $ids, $idm, $af, $st, $titre, $url); | |||
} | |||
?> |
@ -0,0 +1,123 @@ | |||
<?php | |||
/***************************************************************************\ | |||
* SPIP, Systeme de publication pour l'internet * | |||
* * | |||
* Copyright (c) 2001-2009 * | |||
* Arnaud Martin, Antoine Pitrou, Philippe Riviere, Emmanuel Saint-James * | |||
* * | |||
* Ce programme est un logiciel libre distribue sous licence GNU/GPL. * | |||
* Pour plus de details voir le fichier COPYING.txt ou l'aide en ligne. * | |||
\***************************************************************************/ | |||
/** | |||
* Interfaces de la table forum pour le compilateur | |||
* | |||
* @param array $interfaces | |||
* @return array | |||
*/ | |||
function forum_declarer_tables_interfaces($interfaces){ | |||
$interfaces['table_des_tables']['forums']='forum'; | |||
$interfaces['exceptions_des_tables']['forums']['date']='date_heure'; | |||
$interfaces['exceptions_des_tables']['forums']['nom']='auteur'; | |||
$interfaces['exceptions_des_tables']['forums']['email']='email_auteur'; | |||
$interfaces['table_titre']['forums']= "titre, '' AS lang"; | |||
$interfaces['table_date']['forums']='date_heure'; | |||
$interfaces['tables_jointures']['spip_forum'][]= 'mots_forum'; | |||
$interfaces['tables_jointures']['spip_forum'][]= 'mots'; | |||
$interfaces['tables_jointures']['spip_forum'][]= 'documents_liens'; | |||
$interfaces['tables_jointures']['spip_mots'][]= 'mots_forum'; | |||
$interfaces['table_des_traitements']['PARAMETRES_FORUM'][]= 'htmlspecialchars(%s)'; | |||
$interfaces['table_des_traitements']['TEXTE']['forums']= "safehtml("._TRAITEMENT_RACCOURCIS.")"; | |||
$interfaces['table_des_traitements']['TITRE']['forums']= "safehtml("._TRAITEMENT_TYPO.")"; | |||
$interfaces['table_des_traitements']['NOTES']['forums']= "safehtml("._TRAITEMENT_RACCOURCIS.")"; | |||
$interfaces['table_des_traitements']['NOM_SITE']['forums']= "safehtml("._TRAITEMENT_TYPO.")"; | |||
$interfaces['table_des_traitements']['URL_SITE']['forums']= 'safehtml(vider_url(%s))'; | |||
$interfaces['table_des_traitements']['AUTEUR']['forums']= 'safehtml(vider_url(%s))'; | |||
$interfaces['table_des_traitements']['EMAIL_AUTEUR']['forums']= 'safehtml(vider_url(%s))'; | |||
return $interfaces; | |||
} | |||
/** | |||
* Table principale spip_forum | |||
* | |||
* @param array $tables_principales | |||
* @return array | |||
*/ | |||
function forum_declarer_tables_principales($tables_principales){ | |||
$spip_forum = array( | |||
"id_forum" => "bigint(21) NOT NULL", | |||
"id_parent" => "bigint(21) DEFAULT '0' NOT NULL", | |||
"id_thread" => "bigint(21) DEFAULT '0' NOT NULL", | |||
"id_rubrique" => "bigint(21) DEFAULT '0' NOT NULL", | |||
"id_article" => "bigint(21) DEFAULT '0' NOT NULL", | |||
"id_breve" => "bigint(21) DEFAULT '0' NOT NULL", | |||
"date_heure" => "datetime DEFAULT '0000-00-00 00:00:00' NOT NULL", | |||
"date_thread" => "datetime DEFAULT '0000-00-00 00:00:00' NOT NULL", | |||
"titre" => "text DEFAULT '' NOT NULL", | |||
"texte" => "mediumtext DEFAULT '' NOT NULL", | |||
"auteur" => "text DEFAULT '' NOT NULL", | |||
"email_auteur" => "text DEFAULT '' NOT NULL", | |||
"nom_site" => "text DEFAULT '' NOT NULL", | |||
"url_site" => "text DEFAULT '' NOT NULL", | |||
"statut" => "varchar(8) DEFAULT '0' NOT NULL", | |||
"ip" => "varchar(16) DEFAULT '' NOT NULL", | |||
"maj" => "TIMESTAMP", | |||
"id_auteur" => "bigint DEFAULT '0' NOT NULL", | |||
"id_message" => "bigint(21) DEFAULT '0' NOT NULL", | |||
"id_syndic" => "bigint(21) DEFAULT '0' NOT NULL"); | |||
$spip_forum_key = array( | |||
"PRIMARY KEY" => "id_forum", | |||
"KEY id_auteur" => "id_auteur", | |||
"KEY id_parent" => "id_parent", | |||
"KEY id_thread" => "id_thread", | |||
"KEY optimal" => "statut,id_parent,id_article,date_heure,id_breve,id_syndic,id_rubrique"); | |||
$spip_forum_join = array( | |||
"id_forum"=>"id_forum", | |||
"id_parent"=>"id_parent", | |||
"id_article"=>"id_article", | |||
"id_breve"=>"id_breve", | |||
"id_message"=>"id_message", | |||
"id_syndic"=>"id_syndic", | |||
"id_rubrique"=>"id_rubrique"); | |||
$tables_principales['spip_forum'] = | |||
array('field' => &$spip_forum, 'key' => &$spip_forum_key, 'join' => &$spip_forum_join); | |||
return $tables_principales; | |||
} | |||
/** | |||
* Tables de jointures mots_forums | |||
* | |||
* @param array $tables_auxiliaires | |||
* @return array | |||
*/ | |||
function forum_declarer_tables_auxiliaires($tables_auxiliaires){ | |||
$spip_mots_forum = array( | |||
"id_mot" => "bigint(21) DEFAULT '0' NOT NULL", | |||
"id_forum" => "bigint(21) DEFAULT '0' NOT NULL"); | |||
$spip_mots_forum_key = array( | |||
"PRIMARY KEY" => "id_forum, id_mot", | |||
"KEY id_mot" => "id_mot"); | |||
$tables_auxiliaires['spip_mots_forum'] = array( | |||
'field' => &$spip_mots_forum, | |||
'key' => &$spip_mots_forum_key); | |||
return $tables_auxiliaires; | |||
} | |||
?> |
@ -0,0 +1,60 @@ | |||
<?php | |||
/***************************************************************************\ | |||
* SPIP, Systeme de publication pour l'internet * | |||
* * | |||
* Copyright (c) 2001-2009 * | |||
* Arnaud Martin, Antoine Pitrou, Philippe Riviere, Emmanuel Saint-James * | |||
* * | |||
* Ce programme est un logiciel libre distribue sous licence GNU/GPL. * | |||
* Pour plus de details voir le fichier COPYING.txt ou l'aide en ligne. * | |||
\***************************************************************************/ | |||
/** | |||
* Installation/maj des tables forum | |||
* | |||
* @param string $nom_meta_base_version | |||
* @param string $version_cible | |||
*/ | |||
function forum_upgrade($nom_meta_base_version,$version_cible){ | |||
$current_version = 0.0; | |||
if ( (!isset($GLOBALS['meta'][$nom_meta_base_version]) ) | |||
|| (($current_version = $GLOBALS['meta'][$nom_meta_base_version])!=$version_cible)){ | |||
if ($current_version==0.0){ | |||
include_spip('base/forum'); | |||
include_spip('base/create'); | |||
// creer les tables | |||
creer_base(); | |||
// mettre les metas par defaut | |||
$config = charger_fonction('config','inc'); | |||
$config(); | |||
ecrire_meta($nom_meta_base_version,$current_version=$version_cible); | |||
} | |||
} | |||
} | |||
/** | |||
* Desinstallation/suppression des tables forum | |||
* | |||
* @param string $nom_meta_base_version | |||
*/ | |||
function forum_vider_tables($nom_meta_base_version) { | |||
sql_drop_table("spip_forum"); | |||
sql_drop_table("spip_mots_forum"); | |||
effacer_meta("mots_cles_forums"); | |||
effacer_meta("forums_titre"); | |||
effacer_meta("forums_texte"); | |||
effacer_meta("forums_urlref"); | |||
effacer_meta("forums_afficher_barre"); | |||
effacer_meta("formats_documents_forum"); | |||
effacer_meta("forums_publics"); | |||
effacer_meta("forum_prive"); | |||
effacer_meta("forum_prive_objets"); | |||
effacer_meta("forum_prive_admin"); | |||
effacer_meta($nom_meta_base_version); | |||
} | |||
?> |
@ -0,0 +1,20 @@ | |||
<?php | |||
/** | |||
* Interface d'administration des Forums | |||
* | |||
* (c) 2009 - Cedric Morin | |||
* Distribue sous licence GPL3 | |||
* | |||
*/ | |||
if (!defined("_ECRIRE_INC_VERSION")) return; | |||
include_spip('inc/presentation'); | |||
// http://doc.spip.org/@exec_articles_forum_dist | |||
function exec_articles_forum_dist() | |||
{ | |||
$controle_forum = charger_fonction('controle_forum','exec'); | |||
$controle_forum(); | |||
} | |||
?> |
@ -0,0 +1,47 @@ | |||
<?php | |||
/***************************************************************************\ | |||
* SPIP, Systeme de publication pour l'internet * | |||
* * | |||
* Copyright (c) 2001-2009 * | |||
* Arnaud Martin, Antoine Pitrou, Philippe Riviere, Emmanuel Saint-James * | |||
* * | |||
* Ce programme est un logiciel libre distribue sous licence GNU/GPL. * | |||
* Pour plus de details voir le fichier COPYING.txt ou l'aide en ligne. * | |||
\***************************************************************************/ | |||
if (!defined("_ECRIRE_INC_VERSION")) return; | |||
include_spip('inc/presentation'); | |||
function exec_config_forum_dist() | |||
{ | |||
if (!autoriser('configurer', 'forum')) { | |||
include_spip('inc/minipres'); | |||
echo minipres(); | |||
} else { | |||
$config = charger_fonction('config', 'inc'); | |||
$config(); | |||
pipeline('exec_init',array('args'=>array('exec'=>'config_forum'),'data'=>'')); | |||
$commencer_page = charger_fonction('commencer_page', 'inc'); | |||
echo $commencer_page(_T('titre_page_config_contenu'), "configuration", "configuration"); | |||
echo gros_titre(_T('titre_page_config_contenu'),'', false); | |||
echo barre_onglets("configuration", "config_forum"); | |||
echo debut_gauche('', true); | |||
echo pipeline('affiche_gauche',array('args'=>array('exec'=>'config_forum'),'data'=>'')); | |||
echo creer_colonne_droite('', true); | |||
echo pipeline('affiche_droite',array('args'=>array('exec'=>'config_forum'),'data'=>'')); | |||
echo debut_droite('', true); | |||
echo pipeline('affiche_milieu',array('args'=>array('exec'=>'config_forum'),'data'=>recuperer_fond("prive/configurer/forum",array()))); | |||
echo fin_gauche(), fin_page(); | |||
} | |||
} | |||
?> |
@ -0,0 +1,59 @@ | |||
<?php | |||
/** | |||
* Interface d'administration des Forums | |||
* | |||
* (c) 2009 - Cedric Morin | |||
* Distribue sous licence GPL3 | |||
* | |||
*/ | |||
function exec_controle_forum_dist() | |||
{ | |||
if (!autoriser('publierdans','rubrique',_request('id_rubrique')) | |||
OR ($id_article = _request('id_article') AND !autoriser('modererforum', 'article', $id_article)) | |||
) { | |||
include_spip('inc/minipres'); | |||
echo minipres(); | |||
} | |||
else | |||
{ | |||
exec_controle_forum_args(_request('type'),$_GET,'prive/controler_forum'); | |||
} | |||
} | |||
function exec_controle_forum_args($type,$contexte=array(),$fond = 'prive/controler_forum'){ | |||
$commencer_page = charger_fonction('commencer_page', 'inc'); | |||
echo $commencer_page(_T('titre_page_forum_suivi'), "forum", "forum-controle"); | |||
echo debut_gauche('', true); | |||
echo debut_boite_info(true); | |||
echo _T('info_gauche_suivi_forum_2'), aide("suiviforum"); | |||
// Afficher le lien RSS | |||
$type = $type?$type:"public"; | |||
echo bouton_spip_rss("forums_$type"); | |||
echo fin_boite_info(true); | |||
if ($id_article=$contexte['id_article']){ | |||
$res = icone_horizontale(_T('icone_retour'), generer_url_ecrire("articles","id_article=$id_article"), "article-24.gif","rien.gif", false); | |||
$res .= icone_horizontale(_T('icone_statistiques_visites'), generer_url_ecrire("statistiques_visites","id_article=$id_article"), "statistiques-24.gif","rien.gif", false); | |||
echo bloc_des_raccourcis($res); | |||
} | |||
echo pipeline('affiche_gauche',array('args'=>array('exec'=>'controle_forum', 'type'=>$type),'data'=>'')); | |||
echo creer_colonne_droite('', true); | |||
echo pipeline('affiche_droite',array('args'=>array('exec'=>'controle_forum', 'type'=>$type),'data'=>'')); | |||
echo debut_droite('', true); | |||
echo gros_titre(_T('titre_forum_suivi'),'',false); | |||
echo pipeline('affiche_milieu',array('args'=>array('exec'=>'controle_forum', 'type'=>$type),'data'=>'')); | |||
echo recuperer_fond('',array_merge($contexte,array('fond'=>$fond)),array('ajax'=>true)); | |||
echo fin_gauche(), fin_page(); | |||
} | |||
?> |
@ -0,0 +1,34 @@ | |||
<?php | |||
/***************************************************************************\ | |||
* SPIP, Systeme de publication pour l'internet * | |||
* * | |||
* Copyright (c) 2001-2009 * | |||
* Arnaud Martin, Antoine Pitrou, Philippe Riviere, Emmanuel Saint-James * | |||
* * | |||
* Ce programme est un logiciel libre distribue sous licence GNU/GPL. * | |||
* Pour plus de details voir le fichier COPYING.txt ou l'aide en ligne. * | |||
\***************************************************************************/ | |||
// | |||
// Un filtre applique a #PARAMETRES_FORUM, qui donne l'adresse de la page | |||
// de reponse | |||
// | |||
function filtre_url_reponse_forum($parametres) { | |||
if (!$parametres) return ''; | |||
return generer_url_public('forum', $parametres); | |||
} | |||
// | |||
// Un filtre qui, etant donne un #PARAMETRES_FORUM, retourne un URL de suivi rss | |||
// dudit forum | |||
// Attention applique a un #PARAMETRES_FORUM complexe (id_article=x&id_forum=y) | |||
// ca retourne un url de suivi du thread y (que le thread existe ou non) | |||
function filtre_url_rss_forum($param) { | |||
if (!preg_match(',.*(id_(\w*?))=([0-9]+),S', $param, $regs)) return ''; | |||
list(,$k,$t,$v) = $regs; | |||
if ($t == 'forum') $k = 'id_' . ($t = 'thread'); | |||
return generer_url_public("rss_forum_$t", array($k => $v)); | |||
} | |||
?> |
@ -0,0 +1,25 @@ | |||
<div class='formulaire_spip formulaire_configurer formulaire_configurer_forums_article_moderation' id='formulaire_configurer_forums_article_moderation'> | |||
[(#ENV{_suivi_forums}|oui) | |||
[(#ENV{_suivi_forums}|icone_horizontale{#URL_ECRIRE{articles_forum,id_article=#ID_ARTICLE},suivi-forum-24.gif,'',''})] | |||
] | |||
[<p class="reponse_formulaire reponse_formulaire_ok">(#ENV*{message_ok})</p>] | |||
[<p class="reponse_formulaire reponse_formulaire_erreur">(#ENV*{message_erreur})</p>] | |||
<form action="#ENV{action}#formulaire_configurer_forums_article_moderation" method="post" enctype='multipart/form-data'><div> | |||
[(#ACTION_FORMULAIRE{#ENV{action}})] | |||
<ul> | |||
<li class='configurer_accepter_forum[ (#ENV**{erreurs}|table_valeur{accepter_forum}|oui)erreur]'> | |||
<label for='accepter_forum'><:info_fonctionnement_forum:></label>[ | |||
<span class='erreur_message'>(#ENV**{erreurs}|table_valeur{accepter_forum})</span> | |||
]<select name='accepter_forum' id='accepter_forum'> | |||
<option value='pos'[ (#ENV{accepter_forum}|=={pos}|oui)selected='selected']><:bouton_radio_modere_posteriori:></option> | |||
<option value='pri'[ (#ENV{accepter_forum}|=={pri}|oui)selected='selected']><:bouton_radio_modere_priori:></option> | |||
<option value='abo'[ (#ENV{accepter_forum}|=={abo}|oui)selected='selected']><:bouton_radio_modere_abonnement:></option> | |||
<option value='non'[ (#ENV{accepter_forum}|=={non}|oui)selected='selected']><:info_pas_de_forum:></option> | |||
</select> | |||
</li> | |||
</ul> | |||
<p class='boutons'><input class='submit' type="submit" name="ok" value="<:bouton_enregistrer:>"/></p> | |||
</div></form> | |||
</div> |
@ -0,0 +1,73 @@ | |||
<?php | |||
/***************************************************************************\ | |||
* SPIP, Systeme de publication pour l'internet * | |||
* * | |||
* Copyright (c) 2001-2009 * | |||
* Arnaud Martin, Antoine Pitrou, Philippe Riviere, Emmanuel Saint-James * | |||
* * | |||
* Ce programme est un logiciel libre distribue sous licence GNU/GPL. * | |||
* Pour plus de details voir le fichier COPYING.txt ou l'aide en ligne. * | |||
\***************************************************************************/ | |||
if (!defined("_ECRIRE_INC_VERSION")) return; | |||
// Recuperer le reglage des forums publics de l'article x | |||
// http://doc.spip.org/@get_forums_publics | |||
function get_forums_publics($id_article=0) { | |||
if ($id_article) { | |||
$obj = sql_fetsel("accepter_forum", "spip_articles", "id_article=$id_article"); | |||
if ($obj) return $obj['accepter_forum']; | |||
} else { // dans ce contexte, inutile | |||
return substr($GLOBALS['meta']["forums_publics"],0,3); | |||
} | |||
return $GLOBALS['meta']["forums_publics"]; | |||
} | |||
/** | |||
* Charger | |||
* | |||
* @param int $id_article | |||
* @return array | |||
*/ | |||
function formulaires_configurer_forums_article_moderation_charger_dist($id_article){ | |||
if (!autoriser('modererforum', 'article', $id_article)) | |||
return false; | |||
include_spip('inc/presentation'); | |||
include_spip('base/abstract_sql'); | |||
$nb_forums = sql_countsel("spip_forum", "id_article=".intval($id_article)." AND statut IN ('publie', 'off', 'prop', 'spam')"); | |||
return array( | |||
'accepter_forum' => get_forums_publics($id_article), | |||
'_suivi_forums' => $nb_forums?_T('icone_suivi_forum', array('nb_forums' => $nb_forums)):"", | |||
); | |||
} | |||
/** | |||
* Traiter | |||
* | |||
* @param int $id_article | |||
* @return array | |||
*/ | |||
function formulaires_configurer_forums_article_moderation_traiter_dist($id_article){ | |||
include_spip('inc/autoriser'); | |||
if (autoriser('modererforum', 'article', $id_article)){ | |||
$statut = _request('accepter_forum'); | |||
include_spip('base/abstract_sql'); | |||
sql_updateq("spip_articles", array("accepter_forum" => $statut), "id_article=". intval($id_article)); | |||
if ($statut == 'abo') { | |||
ecrire_meta('accepter_visiteurs', 'oui'); | |||
} | |||
include_spip('inc/invalideur'); | |||
suivre_invalideur("id='id_forum/a$id_article'"); | |||
} | |||
return array('message_ok'=>_T('config_info_enregistree')); | |||
} | |||
?> |
@ -0,0 +1,41 @@ | |||
<div class='formulaire_spip formulaire_configurer formulaire_configurer_forums_contenu' id='formulaire_configurer_forums_contenu'> | |||
<h3 class='titrem'>[(#CHEMIN{images/forum-public-24.gif}|balise_img{'',cadre-icone})]<:titre_forum:></h3> | |||
[<p class="reponse_formulaire reponse_formulaire_ok">(#ENV*{message_ok})</p>] | |||
[<p class="reponse_formulaire reponse_formulaire_erreur">(#ENV*{message_erreur})</p>] | |||
<form action="#ENV{action}#formulaire_configurer_contenu_forums" method="post" enctype='multipart/form-data'><div> | |||
[(#ACTION_FORMULAIRE{#ENV{action}})] | |||
<ul> | |||
<li class='configurer_champs_forums[ (#ENV**{erreurs}|table_valeur{forums_titre}|oui)erreur]'> | |||
<label><:config_activer_champs:></label>[ | |||
<span class='erreur_message'>(#ENV**{erreurs}|table_valeur{forums_titre})</span> | |||
]<div class='choix'> | |||
<input class='checkbox' type="checkbox" name="forums_titre" value='oui' [checked="(#ENV{forums_titre}|=={oui}|?{checked})"] id="forums_titre"/> | |||
<label for="forums_titre"><:info_titre:></label> | |||
</div> | |||
<div class='choix'> | |||
<input class='checkbox' type="checkbox" name="forums_texte" value='oui' [checked="(#ENV{forums_texte}|=={oui}|?{checked})"] id="forums_texte"/> | |||
<label for="forums_texte"><:info_texte:></label> | |||
</div> | |||
<div class='choix'> | |||
<input class='checkbox' type="checkbox" name="forums_afficher_barre" value='oui' [checked="(#ENV{forums_afficher_barre}|=={oui}|?{checked})"] id="forums_afficher_barre"/> | |||
<label for="forums_afficher_barre"><:info_barre_outils:></label> | |||
</div> | |||
<div class='choix'> | |||
<input class='checkbox' type="checkbox" name="forums_urlref" value='oui' [checked="(#ENV{forums_urlref}|=={oui}|?{checked})"] id="forums_urlref"/> | |||
<label for="forums_urlref"><:info_urlref:></label> | |||
</div> | |||
</li> | |||
<li class='configurer_documents_forums[ (#ENV**{erreurs}|table_valeur{formats_documents_forum}|oui)erreur]'> | |||
<label for="titre"><:titre_documents_joints:></label> | |||
<div class='explication'><:info_question_visiteur_ajout_document_forum:> | |||
<small><:info_question_visiteur_ajout_document_forum_format:></small></div> | |||
[<span class='erreur_message'>(#ENV**{erreurs}|table_valeur{formats_documents_forum})</span>] | |||
<input type="text" class="text" name="formats_documents_forum" id="formats_documents_forum"[ value="(#ENV{formats_documents_forum})"] size="40" /> | |||
</li> | |||
</ul> | |||
<p class='boutons'><input class='submit' type="submit" name="ok" value="<:bouton_enregistrer:>"/></p> | |||
</div></form> | |||
</div> |
@ -0,0 +1,47 @@ | |||
<?php | |||
/***************************************************************************\ | |||
* SPIP, Systeme de publication pour l'internet * | |||
* * | |||
* Copyright (c) 2001-2009 * | |||
* Arnaud Martin, Antoine Pitrou, Philippe Riviere, Emmanuel Saint-James * | |||
* * | |||
* Ce programme est un logiciel libre distribue sous licence GNU/GPL. * | |||
* Pour plus de details voir le fichier COPYING.txt ou l'aide en ligne. * | |||
\***************************************************************************/ | |||
if (!defined("_ECRIRE_INC_VERSION")) return; | |||
function formulaires_configurer_forums_contenu_charger_dist(){ | |||
return array( | |||
'forums_titre' => $GLOBALS['meta']["forums_titre"], | |||
'forums_texte' => $GLOBALS['meta']["forums_texte"], | |||
'forums_urlref' => $GLOBALS['meta']["forums_urlref"], | |||
'forums_afficher_barre' => $GLOBALS['meta']["forums_afficher_barre"], | |||
'formats_documents_forum' => $GLOBALS['meta']['formats_documents_forum'], | |||
); | |||
} | |||
function formulaires_configurer_forums_contenu_verifier_dist(){ | |||
$erreurs = array(); | |||
if (!_request('forums_titre') AND !_request('forums_texte') AND !_request('forums_urlref')) | |||
$erreurs['forums_titre'] = _T('info_obligatoire'); | |||
foreach(array('forums_titre', 'forums_texte', 'forums_urlref','forums_afficher_barre') as $champ) | |||
if (_request($champ)!=='oui') | |||
set_request($champ,'non'); | |||
return $erreurs; | |||
} | |||
function formulaires_configurer_forums_contenu_traiter_dist(){ | |||
include_spip('inc/config'); | |||
appliquer_modifs_config(); | |||
return array('message_ok'=>_T('config_info_enregistree')); | |||
} | |||
?> |
@ -0,0 +1,39 @@ | |||
<div class='formulaire_spip formulaire_configurer formulaire_configurer_forums_notifications' id='formulaire_configurer_forums_notifications'> | |||
<h3 class='titrem'>[(#CHEMIN{images/mail-forum-24.gif}|balise_img{'',cadre-icone})]<:info_envoi_forum:></h3> | |||
[<p class="reponse_formulaire reponse_formulaire_ok">(#ENV*{message_ok})</p>] | |||
[<p class="reponse_formulaire reponse_formulaire_erreur">(#ENV*{message_erreur})</p>] | |||
<form action="#ENV{action}#formulaire_configurer_forums_notifications" method="post" enctype='multipart/form-data'><div> | |||
[(#ACTION_FORMULAIRE{#ENV{action}})] | |||
<p class='explication'><:info_option_email:></p> | |||
<ul> | |||
<li class='configurer_prevenir_auteurs_pos[ (#ENV**{erreurs}|table_valeur{prevenir_auteurs_pos}|oui)erreur]'> | |||
[ | |||
<span class='erreur_message'>(#ENV**{erreurs}|table_valeur{prevenir_auteurs_pos})</span> | |||
]<div class='choix'> | |||
<input class='checkbox' type="checkbox" name="prevenir_auteurs_pos" value='1' [checked="(#ENV{prevenir_auteurs_pos}|?{checked})"] id="prevenir_auteurs_pos"/> | |||
<label for="prevenir_auteurs_pos"><:bouton_radio_modere_posteriori:></label> | |||
</div> | |||
</li> | |||
<li class='configurer_prevenir_auteurs_pri[ (#ENV**{erreurs}|table_valeur{prevenir_auteurs_pri}|oui)erreur]'> | |||
[ | |||
<span class='erreur_message'>(#ENV**{erreurs}|table_valeur{prevenir_auteurs_pri})</span> | |||
]<div class='choix'> | |||
<input class='checkbox' type="checkbox" name="prevenir_auteurs_pri" value='1' [checked="(#ENV{prevenir_auteurs_pri}|?{checked})"] id="prevenir_auteurs_pri"/> | |||
<label for="prevenir_auteurs_pri"><:bouton_radio_modere_priori:></label> | |||
</div> | |||
</li> | |||
<li class='configurer_prevenir_auteurs_abo[ (#ENV**{erreurs}|table_valeur{prevenir_auteurs_abo}|oui)erreur]'> | |||
[ | |||
<span class='erreur_message'>(#ENV**{erreurs}|table_valeur{prevenir_auteurs_abo})</span> | |||
]<div class='choix'> | |||
<input class='checkbox' type="checkbox" name="prevenir_auteurs_abo" value='1' [checked="(#ENV{prevenir_auteurs_abo}|?{checked})"] id="prevenir_auteurs_abo"/> | |||
<label for="prevenir_auteurs_abo"><:bouton_radio_modere_abonnement:></label> | |||
</div> | |||
</li> | |||
</ul> | |||
<p class='boutons'><input class='submit' type="submit" name="ok" value="<:bouton_enregistrer:>"/></p> | |||
</div></form> | |||
</div> |
@ -0,0 +1,38 @@ | |||
<?php | |||
/***************************************************************************\ | |||
* SPIP, Systeme de publication pour l'internet * | |||
* * | |||
* Copyright (c) 2001-2009 * | |||
* Arnaud Martin, Antoine Pitrou, Philippe Riviere, Emmanuel Saint-James * | |||
* * | |||
* Ce programme est un logiciel libre distribue sous licence GNU/GPL. * | |||
* Pour plus de details voir le fichier COPYING.txt ou l'aide en ligne. * | |||
\***************************************************************************/ | |||
if (!defined("_ECRIRE_INC_VERSION")) return; | |||
function formulaires_configurer_forums_notifications_charger_dist(){ | |||
$valeurs = array(); | |||
$m = $GLOBALS['meta']['prevenir_auteurs']; | |||
$l = $GLOBALS['liste_des_forums']; | |||
unset($l['info_pas_de_forum']); | |||
foreach ($l as $desc => $val) | |||
$valeurs['prevenir_auteurs_' . $val] = (($m == 'oui') OR strpos($m,",$val,")!==false); | |||
return $valeurs; | |||
} | |||
function formulaires_configurer_forums_notifications_traiter_dist(){ | |||
include_spip('inc/meta'); | |||
$res = array(); | |||
foreach ($GLOBALS['liste_des_forums'] as $desc => $val) { | |||
if (_request('prevenir_auteurs_' . $val)) $res[]=$val; | |||
} | |||
ecrire_meta('prevenir_auteurs', $res ? (','.join(',',$res).',') : 'non'); | |||
return array('message_ok'=>_T('config_info_enregistree')); | |||
} | |||
?> |
@ -0,0 +1,73 @@ | |||
<div class='formulaire_spip formulaire_configurer formulaire_configurer_forums_participants' id='formulaire_configurer_forums_participants'> | |||
<h3 class='titrem'>[(#CHEMIN{images/forum-interne-24.gif}|balise_img{'',cadre-icone})]<:info_mode_fonctionnement_defaut_forum_public:></h3> | |||
[<p class="reponse_formulaire reponse_formulaire_ok">(#ENV*{message_ok})</p>] | |||
[<p class="reponse_formulaire reponse_formulaire_erreur">(#ENV*{message_erreur})</p>] | |||
<form action="#ENV{action}#formulaire_configurer_forums_participants" method="post" enctype='multipart/form-data'><div> | |||
[(#ACTION_FORMULAIRE{#ENV{action}})] | |||
<ul> | |||
<li class='configurer_forums_publics[ (#ENV**{erreurs}|table_valeur{forums_publics}|oui)erreur]'> | |||
[ | |||
<span class='erreur_message'>(#ENV**{erreurs}|table_valeur{forums_publics})</span> | |||
]<div class='choix'> | |||
<input class='radio' type="radio" name="forums_publics" value='non' [checked="(#ENV{forums_publics}|=={non}?{checked})"] id="forums_publics_1"/> | |||
<label for="forums_publics_1"><:info_desactiver_forum_public:></label> | |||
</div> | |||
<div class='explication'><:info_activer_forum_public:></div> | |||
<div class='choix'> | |||
<input class='radio' type="radio" name="forums_publics" value='posteriori' [checked="(#ENV{forums_publics}|=={posteriori}|?{checked})"] id="forums_publics_2"/> | |||
<label for="forums_publics_2"><:bouton_radio_publication_immediate:></label> | |||
</div> | |||
<div class='choix'> | |||
<input class='radio' type="radio" name="forums_publics" value='priori' [checked="(#ENV{forums_publics}|=={priori}|?{checked})"] id="forums_publics_3"/> | |||
<label for="forums_publics_3"><:bouton_radio_moderation_priori:></label> | |||
</div> | |||
<div class='choix'> | |||
<input class='radio' type="radio" name="forums_publics" value='abo' [checked="(#ENV{forums_publics}|=={abo}|?{checked})"] id="forums_publics_4"/> | |||
<label for="forums_publics_4"><:bouton_radio_enregistrement_obligatoire:></label> | |||
</div> | |||
</li> | |||
<li id='config-options-' class='fieldset'> | |||
<fieldset> | |||
<legend><:info_options_avancees:></legend> | |||
<ul> | |||
<li class='configurer_forums_publics_appliquer[ (#ENV**{erreurs}|table_valeur{forums_publics_appliquer}|oui)erreur]'> | |||
<label><:info_appliquer_choix_moderation:></label>[ | |||
<span class='erreur_message'>(#ENV**{erreurs}|table_valeur{forums_publics_appliquer})</span> | |||
] | |||
<div class='choix'> | |||
<input class='radio' type="radio" name="forums_publics_appliquer" value='futur' checked='checked' id="forums_appliquer_futur"/> | |||
<label for="forums_appliquer_futur"><:bouton_radio_articles_futurs:></label> | |||
</div> | |||
<div class='choix'> | |||
<input class='radio' type="radio" name="forums_publics_appliquer" value='saufnon' id="forums_appliquer_saufnon"/> | |||
<label for="forums_appliquer_saufnon"><:bouton_radio_articles_tous_sauf_forum_desactive:></label> | |||
</div> | |||
<div class='choix'> | |||
<input class='radio' type="radio" name="forums_publics_appliquer" value='tous' id="forums_appliquer_tous"/> | |||
<label for="forums_appliquer_tous"><:bouton_radio_articles_tous:></label> | |||
</div> | |||
</li> | |||
</ul> | |||
</fieldset> | |||
</li> | |||
</ul> | |||
<p class='boutons'><input class='submit' type="submit" name="ok" value="<:bouton_enregistrer:>"/></p> | |||
</div></form> | |||
</div> | |||
<script type='text/javascript'> | |||
jQuery(document).ready(function(){ | |||
jQuery('li.configurer_forums_publics input').each(function(){ | |||
var checked = jQuery(this).attr('checked'); | |||
jQuery(this).bind('change',function(){ | |||
if (jQuery(this).attr('checked')==checked) | |||
jQuery('#config-options-').hide(); | |||
else | |||
jQuery('#config-options-').show(); | |||
}); | |||
}); | |||
jQuery('#config-options-').hide(); | |||
}); | |||
</script> |
@ -0,0 +1,54 @@ | |||
<?php | |||
/***************************************************************************\ | |||
* SPIP, Systeme de publication pour l'internet * | |||
* * | |||
* Copyright (c) 2001-2009 * | |||
* Arnaud Martin, Antoine Pitrou, Philippe Riviere, Emmanuel Saint-James * | |||
* * | |||
* Ce programme est un logiciel libre distribue sous licence GNU/GPL. * | |||
* Pour plus de details voir le fichier COPYING.txt ou l'aide en ligne. * | |||
\***************************************************************************/ | |||
if (!defined("_ECRIRE_INC_VERSION")) return; | |||
function formulaires_configurer_forums_participants_charger_dist(){ | |||
return array( | |||
'forums_publics' => $GLOBALS['meta']["forums_publics"], | |||
); | |||
} | |||
function formulaires_configurer_forums_participants_traiter_dist(){ | |||
include_spip('inc/config'); | |||
include_spip('inc/meta'); | |||
$purger_skel = false; | |||
if ($accepter_forum = _request('forums_publics') | |||
AND ($accepter_forum != $GLOBALS['meta']["forums_publics"])) { | |||
$purger_skel = true; | |||
$accepter_forum = substr($accepter_forum,0,3); | |||
} | |||
// Appliquer les changements de moderation forum | |||
// forums_publics_appliquer : futur, saufnon, tous | |||
if (in_array($appliquer = _request('forums_publics_appliquer'), | |||
array('tous', 'saufnon') | |||
)) { | |||
$sauf = ($appliquer == 'saufnon') | |||
? "accepter_forum != 'non'" | |||
: ''; | |||
sql_updateq('spip_articles', array('accepter_forum'=>$accepter_forum), $sauf); | |||
} | |||
if ($accepter_forum == 'abo') | |||
ecrire_meta('accepter_visiteurs', 'oui'); | |||
appliquer_modifs_config($purger_skel); | |||
return array('message_ok'=>_T('config_info_enregistree')); | |||
} | |||
?> |
@ -0,0 +1,51 @@ | |||
<div class='formulaire_spip formulaire_configurer formulaire_configurer_forums_prives' id='formulaire_configurer_forums_prives'> | |||
<h3 class='titrem'>[(#CHEMIN{images/forum-interne-24.gif}|balise_img{'',cadre-icone})]<:titre_config_forums_prive:></h3> | |||
[<p class="reponse_formulaire reponse_formulaire_ok">(#ENV*{message_ok})</p>] | |||
[<p class="reponse_formulaire reponse_formulaire_erreur">(#ENV*{message_erreur})</p>] | |||
<form action="#ENV{action}#formulaire_configurer_forums_prives" method="post" enctype='multipart/form-data'><div> | |||
[(#ACTION_FORMULAIRE{#ENV{action}})] | |||
<p class='explication'><:info_config_forums_prive:></p> | |||
<ul> | |||
<li class='configurer_forum_prive_objets[ (#ENV**{erreurs}|table_valeur{forum_prive_objets}|oui)erreur]'> | |||
<label><:info_config_forums_prive_objets:></label>[ | |||
<span class='erreur_message'>(#ENV**{erreurs}|table_valeur{forum_prive_objets})</span> | |||
]<div class='choix'> | |||
<input class='radio' type="radio" name="forum_prive_objets" value='oui' [checked="(#ENV{forum_prive_objets}|=={oui}?{checked})"] id="forum_prive_objets_oui"/> | |||
<label for="forum_prive_objets_oui"><:item_config_forums_prive_objets:></label> | |||
</div> | |||
<div class='choix'> | |||
<input class='radio' type="radio" name="forum_prive_objets" value='non' [checked="(#ENV{forum_prive_objets}|=={oui}?{'',checked})"] id="forum_prive_objets_non"/> | |||
<label for="forum_prive_objets_non"><:item_non_config_forums_prive_objets:></label> | |||
</div> | |||
</li> | |||
<li class='configurer_forum_prive[ (#ENV**{erreurs}|table_valeur{forum_prive}|oui)erreur]'> | |||
<label><:info_config_forums_prive_global:></label>[ | |||
<span class='erreur_message'>(#ENV**{erreurs}|table_valeur{forum_prive})</span> | |||
]<div class='choix'> | |||
<input class='radio' type="radio" name="forum_prive" value='oui' [checked="(#ENV{forum_prive}|=={oui}?{checked})"] id="forum_prive_oui"/> | |||
<label for="forum_prive_oui"><:item_config_forums_prive_global:></label> | |||
</div> | |||
<div class='choix'> | |||
<input class='radio' type="radio" name="forum_prive" value='non' [checked="(#ENV{forum_prive}|=={oui}?{'',checked})"] id="forum_prive_non"/> | |||
<label for="forum_prive_non"><:item_non_config_forums_prive_global:></label> | |||
</div> | |||
</li> | |||
<li class='configurer_forum_prive_admin[ (#ENV**{erreurs}|table_valeur{forum_prive_admin}|oui)erreur]'> | |||
<label><:info_config_forums_prive_admin:></label>[ | |||
<span class='erreur_message'>(#ENV**{erreurs}|table_valeur{forum_prive_admin})</span> | |||
]<div class='choix'> | |||
<input class='radio' type="radio" name="forum_prive_admin" value='oui' [checked="(#ENV{forum_prive_admin}|=={oui}?{checked})"] id="forum_prive_admin_oui"/> | |||
<label for="forum_prive_admin_oui"><:item_activer_forum_administrateur:></label> | |||
</div> | |||
<div class='choix'> | |||
<input class='radio' type="radio" name="forum_prive_admin" value='non' [checked="(#ENV{forum_prive_admin}|=={oui}?{'',checked})"] id="forum_prive_admin_non"/> | |||
<label for="forum_prive_admin_non"><:item_desactiver_forum_administrateur:></label> | |||
</div> | |||
</li> | |||
</ul> | |||
<p class='boutons'><input class='submit' type="submit" name="ok" value="<:bouton_enregistrer:>"/></p> | |||
</div></form> | |||
</div> |
@ -0,0 +1,32 @@ | |||
<?php | |||
/***************************************************************************\ | |||
* SPIP, Systeme de publication pour l'internet * | |||
* * | |||
* Copyright (c) 2001-2009 * | |||
* Arnaud Martin, Antoine Pitrou, Philippe Riviere, Emmanuel Saint-James * | |||
* * | |||
* Ce programme est un logiciel libre distribue sous licence GNU/GPL. * | |||
* Pour plus de details voir le fichier COPYING.txt ou l'aide en ligne. * | |||
\***************************************************************************/ | |||
if (!defined("_ECRIRE_INC_VERSION")) return; | |||
function formulaires_configurer_forums_prives_charger_dist(){ | |||
return array( | |||
'forum_prive_objets' => $GLOBALS['meta']["forum_prive_objets"], | |||
'forum_prive' => $GLOBALS['meta']["forum_prive"], | |||
'forum_prive_admin' => $GLOBALS['meta']["forum_prive_admin"], | |||
); | |||
} | |||
function formulaires_configurer_forums_prives_traiter_dist(){ | |||
include_spip('inc/config'); | |||
appliquer_modifs_config(); | |||
return array('message_ok'=>_T('config_info_enregistree')); | |||
} | |||
?> |
@ -0,0 +1,145 @@ | |||
<div class="formulaire_spip formulaire_forum ajax" id="formulaire_forum"> | |||
[(#REM) pour IE qui sinon se perd dans l'ajax !, ne pas retirer]<br class='bugajaxie' /> | |||
[<p class="reponse_formulaire reponse_formulaire_ok">(#ENV*{message_ok})</p>] | |||
[<p class="reponse_formulaire reponse_formulaire_erreur">(#ENV*{message_erreur})</p>] | |||
[(#ENV{login_forum_abo}) | |||
<INCLURE{fond=formulaires/inc-login_forum_abo}{env} /> | |||
] | |||
[(#ENV{editable}) | |||
[(#REM) | |||
Bloc de previsualisation du forum envoye | |||
Si on valide la previsu, on n'envoie pas en ajax car, si le post reussit | |||
il faudra certainement redessiner toute la page pour afficher le nouveau | |||
forum | |||
][<form action="#ENV{action}#formulaire_forum" method="post" class="noajax"> | |||
<div> | |||
[(#ACTION_FORMULAIRE{#ENV{action}})] | |||
<input type='hidden' name='titre' value="#ENV{titre}" /> | |||
<input type='hidden' name='texte' value="#ENV{texte}" /> | |||
<input type='hidden' name='url_site' value="#ENV{url_site}" /> | |||
<input type='hidden' name='nom_site' value="#ENV{nom_site}" /> | |||
[<input type="hidden" name="id_forum" value="(#ENV*{id_forum})" />] | |||
[(#INCLURE{fond=formulaires/inc-forum_ajouter_mot}{ajouter_mot})] | |||
(#ENV*{erreurs}|table_valeur{previsu}) | |||
</div> | |||
</form>] | |||
<form action="#ENV{action}#formulaire_forum" method="post" enctype='multipart/form-data'><div> | |||
[(#ACTION_FORMULAIRE{#ENV{action}})] | |||
[<input type="hidden" name="id_forum" value="(#ENV*{id_forum})" />] | |||
[<fieldset> | |||
<legend><:bouton_radio_modere_priori:></legend> | |||
<p class="explication">(#ENV{modere})<:forum_info_modere:></p> | |||
</fieldset>] | |||
[(#ENV**{afficher_texte}|choixsiegal{'non', ' ',''}) | |||
[<input type="hidden" name="titre" value="(#ENV{titre})" />] | |||
<p class="spip_bouton"><input type="submit" class="submit" value="<:forum_valider:>" /></p>] | |||
[(#ENV**{afficher_texte}|choixsiegal{'non', '',' '}) | |||
<fieldset> | |||
<legend><:form_pet_message_commentaire:></legend>[ | |||
(#CONFIG{forums_titre}|!={non}|non) | |||
<input type="hidden" name="titre" id="titre"[ value="(#ENV{titre})"] /> | |||
]<ul> | |||
[<li class='saisie_mots_forum'>(#INCLURE{fond=formulaires/inc-forum_bloc_choix_mots}{table=#ENV*{table}}{ajouter_mot})</li>] | |||
[(#CONFIG{forums_titre}|!={non}|oui) | |||
<li class='saisie_titre[ (#ENV**{erreurs}|table_valeur{titre}|oui)erreur]'> | |||
<label for="titre"><:forum_titre:></label> | |||
[<span class='erreur_message'>(#ENV**{erreurs}|table_valeur{titre})</span>] | |||
<input type="text" class="text" name="titre" id="titre"[ value="(#ENV{titre})"] size="60" /> | |||
</li> | |||
] | |||
[(#CONFIG{forums_texte}|!={non}|?{ | |||
<li class='saisie_texte[ (#ENV**{erreurs}|table_valeur{texte}|oui)erreur]'> | |||
<label for='texte'><:forum_texte|typo:></label> | |||
[<span class='erreur_message'>(#ENV**{erreurs}|table_valeur{texte})</span>] | |||
<p class='explication'><:info_creation_paragraphe:></p> | |||
<textarea name="texte" id="texte" rows="12" cols="60">[(#ENV{texte})]</textarea> | |||
</li> | |||
})] | |||
</ul></fieldset> | |||
[(#CONFIG{forums_urlref}|!={non}|?{ | |||
<fieldset> | |||
<legend><:forum_lien_hyper:></legend> | |||
<p class='explication'><:forum_page_url:></p> | |||
<ul> | |||
<li class='saisie_nom_site[ (#ENV**{erreurs}|table_valeur{nom_site}|oui)erreur]'><label for="nom_site"><:forum_titre:></label> | |||
[<span class='erreur_message'>(#ENV**{erreurs}|table_valeur{nom_site})</span>] | |||
<input type="text" class="text" name="nom_site" id="nom_site" size="40" value="[(#ENV{nom_site})]" /></li> | |||
<li class='saisie_url_site[ (#ENV**{erreurs}|table_valeur{url_site}|oui)erreur]'><label for="url_site"><:forum_url:></label> | |||
[<span class='erreur_message'>(#ENV**{erreurs}|table_valeur{url_site})</span>] | |||
<input type="text" class="text" name="url_site" id="url_site" style="text-align: left;" dir="ltr" size="40" value="[(#ENV{url_site})]" /></li> | |||
</ul></fieldset> | |||
})] | |||
[ | |||
<fieldset> | |||
<legend><:bouton_ajouter_document:></legend> | |||
<ul> | |||
<li class='saisie_document_forum[ (#ENV**{erreurs}|table_valeur{document_forum}|oui)erreur]'> | |||
[<span class='erreur_message'>(#ENV**{erreurs}|table_valeur{document_forum})</span>] | |||
<input type="hidden" name="cle_ajouter_document" value="(#ENV{cle_ajouter_document})" /> | |||
[<div id="ajouter_document_up">(#ENV{ajouter_document}) | |||
<label for="supprimer_document_ajoute"><input type='checkbox' name='supprimer_document_ajoute' id='supprimer_document_ajoute' /> | |||
<:lien_supprimer:></label> | |||
</div>] | |||
<div> | |||
[<label for="ajouter_document">(#ENV{formats_documents_forum}|join{', '})</label>] | |||
<input class='file' type="file" name="ajouter_document" id="ajouter_document"[ | |||
accept="(#ENV{formats_documents_forum}|join{','})"] /> | |||
</div> | |||
<script type='text/javascript'> | |||
jQuery('#ajouter_document_up') | |||
.next() | |||
.hide() | |||
.prev() | |||
.find(':checkbox') | |||
.bind('change', function(){ | |||
jQuery('#ajouter_document_up').hide().next().show(); | |||
}) | |||
; | |||
</script> | |||
</li> | |||
</ul></fieldset> | |||
] | |||
<INCLURE{fond=formulaires/inc-login_forum}{env} /> | |||
[(#REM) Piege a robots spammeurs, dont on change le nom a chaque fois, | |||
]<p style="display: none;"> | |||
<label for="#ENV{cle_ajouter_document}"><:antispam_champ_vide:></label> | |||
<input type="text" class="text" name="#ENV{cle_ajouter_document}" id="#ENV{cle_ajouter_document}" value="#ENV{#ENV{cle_ajouter_document}}" size="10" /> | |||
</p> | |||
<p class="boutons"><input type="submit" class="submit" value="<:forum_voir_avant:>" /></p> | |||
] | |||
</div> | |||
</form> | |||
[(#REM) | |||
Sauver les donnees du formulaire dans la session, si on quitte la page, | |||
et proposer de les remettre quand on revient | |||
] | |||
<script type="text/javascript">/*<!#EVAL{chr(91)}CDATA#EVAL{chr(91)}*/ | |||
if (window.jQuery)(function($){ | |||
$(function(){ | |||
$('#formulaire_forum form') | |||
.autosave(); | |||
}); | |||
}(jQuery)); | |||
/*#EVAL{chr(93)}[(#EVAL{chr(93)})]>*/</script> | |||
] | |||
</div> |
@ -0,0 +1,318 @@ | |||
<?php | |||
/***************************************************************************\ | |||
* SPIP, Systeme de publication pour l'internet * | |||
* * | |||
* Copyright (c) 2001-2009 * | |||
* Arnaud Martin, Antoine Pitrou, Philippe Riviere, Emmanuel Saint-James * | |||
* * | |||
* Ce programme est un logiciel libre distribue sous licence GNU/GPL. * | |||
* Pour plus de details voir le fichier COPYING.txt ou l'aide en ligne. * | |||
\***************************************************************************/ | |||
function formulaires_forum_charger_dist( | |||
$titre, $table, $type, $script, | |||
$id_rubrique, $id_forum, $id_article, $id_breve, $id_syndic, | |||
$ajouter_mot, $ajouter_groupe, $afficher_texte, $url_param_retour) { | |||
// exiger l'authentification des posteurs pour les forums sur abo | |||
if ($type == "abo") { | |||
if (!$GLOBALS["visiteur_session"]['statut']) { | |||
return array( | |||
'action' => '', #ne sert pas dans ce cas, on la vide pour mutualiser le cache | |||
'editable'=>false, | |||
'login_forum_abo'=>' ', | |||
'inscription' => generer_url_public('identifiants', 'lang='.$GLOBALS['spip_lang']), | |||
'oubli' => generer_url_public('spip_pass','lang='.$GLOBALS['spip_lang'],true), | |||
); | |||
} | |||
} | |||
// Tableau des valeurs servant au calcul d'une signature de securite. | |||
// Elles seront placees en Input Hidden pour que inc/forum_insert | |||
// recalcule la meme chose et verifie l'identite des resultats. | |||
// Donc ne pas changer la valeur de ce tableau entre le calcul de | |||
// la signature et la fabrication des Hidden | |||
// Faire attention aussi a 0 != '' | |||
// id_rubrique est parfois passee pour les articles, on n'en veut pas | |||
$ids = array(); | |||
if ($id_rubrique > 0 AND ($id_article OR $id_breve OR $id_syndic)) | |||
$id_rubrique = 0; | |||
foreach (array('id_article', 'id_breve', 'id_forum', 'id_rubrique', 'id_syndic') as $o) { | |||
$ids[$o] = ($x = intval($$o)) ? $x : ''; | |||
} | |||
// ne pas mettre '', sinon le squelette n'affichera rien. | |||
$previsu = ' '; | |||
// au premier appel (pas de Post-var nommee "retour_forum") | |||
// memoriser eventuellement l'URL de retour pour y revenir apres | |||
// envoi du message ; aux appels suivants, reconduire la valeur. | |||
// Initialiser aussi l'auteur | |||
if ($retour_forum = rawurldecode(_request('retour'))) | |||
$retour_forum = str_replace('&var_mode=recalcul','',$retour_forum); | |||
else { | |||
// par defaut, on veut prendre url_forum(), mais elle ne sera connue | |||
// qu'en sortie, on inscrit donc une valeur absurde ("!") |