Browse Source

_plugins_/_core_ vers _core_/plugins

spip-3.0 v1.0
ben.spip@gmail.com 13 years ago
commit
75e648834d
  1. 86
      .gitattributes
  2. 77
      action/editer_forum.php
  3. 69
      action/instituer_forum.php
  4. 46
      action/instituer_lot_forum.php
  5. 117
      balise/formulaire_forum.php
  6. 74
      balise/formulaire_forum_prive.php
  7. 123
      base/forum.php
  8. 60
      base/forum_upgrade.php
  9. 20
      exec/articles_forum.php
  10. 47
      exec/config_forum.php
  11. 59
      exec/controle_forum.php
  12. 34
      filtres/forum.php
  13. 25
      formulaires/configurer_forums_article_moderation.html
  14. 73
      formulaires/configurer_forums_article_moderation.php
  15. 41
      formulaires/configurer_forums_contenu.html
  16. 47
      formulaires/configurer_forums_contenu.php
  17. 39
      formulaires/configurer_forums_notifications.html
  18. 38
      formulaires/configurer_forums_notifications.php
  19. 73
      formulaires/configurer_forums_participants.html
  20. 54
      formulaires/configurer_forums_participants.php
  21. 51
      formulaires/configurer_forums_prives.html
  22. 32
      formulaires/configurer_forums_prives.php
  23. 145
      formulaires/forum.html
  24. 318
      formulaires/forum.php
  25. 82
      formulaires/forum_prive.html
  26. 134
      formulaires/forum_prive.php
  27. 10
      formulaires/inc-choix_mots.html
  28. 1
      formulaires/inc-forum_ajouter_mot.html
  29. 8
      formulaires/inc-forum_bloc_choix_mots.html
  30. 29
      formulaires/inc-forum_previsu.html
  31. 24
      formulaires/inc-forum_prive_previsu.html
  32. 33
      formulaires/inc-login_forum.html
  33. 15
      formulaires/inc-login_forum_abo.html
  34. 46
      forum_autoriser.php
  35. 385
      forum_pipelines.php
  36. BIN
      images/actions-24.png
  37. BIN
      images/actions-filigrane-24.png
  38. BIN
      images/annuler-recherche.png
  39. BIN
      images/comment_48.png
  40. BIN
      images/forum-48.png
  41. BIN
      images/forum-admin-24.gif
  42. BIN
      images/forum-bg-item.png
  43. BIN
      images/forum-droite.gif
  44. BIN
      images/forum-droite_rtl.gif
  45. BIN
      images/forum-interne-24.gif
  46. BIN
      images/forum-public-24.gif
  47. BIN
      images/forum-search-16.png
  48. BIN
      images/forum-statut-off-24.png
  49. BIN
      images/forum-statut-original-24.png
  50. BIN
      images/forum-statut-privadm-24.png
  51. BIN
      images/forum-statut-prive-24.png
  52. BIN
      images/forum-statut-privoff-24.png
  53. BIN
      images/forum-statut-privrac-24.png
  54. BIN
      images/forum-statut-prop-24.png
  55. BIN
      images/forum-statut-publie-24.png
  56. BIN
      images/forum-statut-spam-24.png
  57. BIN
      images/forum-vert.gif
  58. 34
      inc/discuter.php
  59. 209
      inc/forum.php
  60. 278
      inc/forum_insert.php
  61. 209
      inc/forum_notifications.php
  62. 47
      lang/forum_fr.php
  63. 1
      modeles/auteur_nom.html
  64. 117
      plugin.xml
  65. 20
      prive/configurer/forum.html
  66. 3
      prive/configurer/moderation.html
  67. 1
      prive/controler_forum.html
  68. 9
      prive/discuter_forum.html
  69. 16
      prive/exec/forum.html
  70. 63
      prive/listes/controler_forum.html
  71. 27
      prive/listes/inc-boutons-filtres-statut-forum.html
  72. 52
      prive/listes/participer_forum.html
  73. 93
      prive/listes/participer_forum_thread.html
  74. 39
      prive/modeles/forum-actions-moderer.html
  75. 32
      prive/modeles/forum.html
  76. 8
      prive/repondre_forum.html
  77. 134
      prive/style_prive_plugin_forum.html
  78. 216
      public/forum.php
  79. 31
      rss/forums.html
  80. 31
      rss/forums_interne.html
  81. 31
      rss/forums_prop.html
  82. 31
      rss/forums_public.html
  83. 31
      rss/forums_spam.html
  84. 31
      rss/forums_vide.html
  85. 24
      urls/generer_url_ecrire_forum.php
  86. 26
      urls/generer_url_forum.php

86
.gitattributes

@ -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

77
action/editer_forum.php

@ -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);
}
}

69
action/instituer_forum.php

@ -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
)
);
}
?>

46
action/instituer_lot_forum.php

@ -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);
}
}
}
?>

117
balise/formulaire_forum.php

@ -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);
}
?>

74
balise/formulaire_forum_prive.php

@ -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);
}
?>

123
base/forum.php

@ -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;
}
?>

60
base/forum_upgrade.php

@ -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);
}
?>

20
exec/articles_forum.php

@ -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();
}
?>

47
exec/config_forum.php

@ -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();
}
}
?>

59
exec/controle_forum.php

@ -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();
}
?>

34
filtres/forum.php

@ -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));
}
?>

25
formulaires/configurer_forums_article_moderation.html

@ -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>

73
formulaires/configurer_forums_article_moderation.php

@ -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'));
}
?>

41
formulaires/configurer_forums_contenu.html

@ -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>

47
formulaires/configurer_forums_contenu.php

@ -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'));
}
?>

39
formulaires/configurer_forums_notifications.html

@ -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>

38
formulaires/configurer_forums_notifications.php

@ -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'));
}
?>

73
formulaires/configurer_forums_participants.html

@ -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>

54
formulaires/configurer_forums_participants.php

@ -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'));
}
?>

51
formulaires/configurer_forums_prives.html

@ -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>

32
formulaires/configurer_forums_prives.php

@ -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'));
}
?>

145
formulaires/forum.html

@ -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>

318
formulaires/forum.php

@ -0,0 +1,318 @@
<?php