Changeset 93612 in spip-zone
- Timestamp:
- Dec 13, 2015, 11:39:09 AM (4 years ago)
- Location:
- _core_/plugins/forum
- Files:
-
- 28 edited
Legend:
- Unmodified
- Added
- Removed
-
_core_/plugins/forum/action/editer_forum.php
r93092 r93612 11 11 \***************************************************************************/ 12 12 13 if (!defined("_ECRIRE_INC_VERSION")) return; 13 if (!defined("_ECRIRE_INC_VERSION")) { 14 return; 15 } 14 16 include_spip('inc/modifier'); 15 17 … … 17 19 // au prealable conserver_original($id_forum) 18 20 // http://code.spip.net/@revision_forum 19 if (!function_exists('revision_forum')){21 if (!function_exists('revision_forum')) { 20 22 function revision_forum($id_forum, $c = false) { 21 23 22 $t = sql_fetsel("*", "spip_forum", "id_forum=" .intval($id_forum));24 $t = sql_fetsel("*", "spip_forum", "id_forum=" . intval($id_forum)); 23 25 if (!$t) { 24 26 spip_log("erreur forum $id_forum inexistant"); 27 25 28 return; 26 29 } … … 29 32 if ($t['statut'] == 'publie') { 30 33 include_spip('inc/invalideur'); 31 $invalideur = array("id='forum/$id_forum'", "id='".$t['objet']."/".$t['id_objet']."'");32 } else 34 $invalideur = array("id='forum/$id_forum'", "id='" . $t['objet'] . "/" . $t['id_objet'] . "'"); 35 } else { 33 36 $invalideur = ''; 37 } 34 38 35 39 // Supprimer 'http://' tout seul … … 49 53 $cles = array(); 50 54 foreach (array('id_objet', 'objet') as $k) { 51 if (isset($c[$k]) AND $c[$k]) $cles[$k] = $c[$k]; 55 if (isset($c[$k]) AND $c[$k]) { 56 $cles[$k] = $c[$k]; 57 } 52 58 } 53 59 … … 56 62 // on deplace tout le thread {sauf les originaux}. 57 63 if (count($cles) AND $id_thread) { 58 spip_log("update thread id_thread=$id_thread avec " .var_export($cles,1),'forum.'. _LOG_INFO_IMPORTANTE);59 sql_updateq("spip_forum", $cles, "id_thread=" .$id_thread." AND statut!='original'");64 spip_log("update thread id_thread=$id_thread avec " . var_export($cles, 1), 'forum.' . _LOG_INFO_IMPORTANTE); 65 sql_updateq("spip_forum", $cles, "id_thread=" . $id_thread . " AND statut!='original'"); 60 66 // on n'affecte pas $r, car un deplacement ne change pas l'auteur 61 67 } … … 63 69 // s'il y a vraiment eu une modif et que le message est public 64 70 // on enregistre le nouveau date_thread 65 if ($err ==='' AND $t['statut'] == 'publie') {71 if ($err === '' AND $t['statut'] == 'publie') { 66 72 // on ne stocke ni le numero IP courant ni le nouvel id_auteur 67 73 // dans le message modifie (trop penible a l'usage) ; mais du … … 72 78 73 79 // & meme ca ca pourrait etre optionnel 74 sql_updateq("spip_forum", array("date_thread" => date('Y-m-d H:i:s')), "id_thread=" .$id_thread);80 sql_updateq("spip_forum", array("date_thread" => date('Y-m-d H:i:s')), "id_thread=" . $id_thread); 75 81 } 76 82 } -
_core_/plugins/forum/action/instituer_forum.php
r93092 r93612 11 11 \***************************************************************************/ 12 12 13 if (!defined("_ECRIRE_INC_VERSION")) return; 13 if (!defined("_ECRIRE_INC_VERSION")) { 14 return; 15 } 14 16 15 17 // http://code.spip.net/@action_instituer_forum_dist 16 18 function action_instituer_forum_dist($arg = null) { 17 19 18 if (is_null($arg)) {20 if (is_null($arg)) { 19 21 $securiser_action = charger_fonction('securiser_action', 'inc'); 20 22 $arg = $securiser_action(); … … 24 26 $id_forum = intval($id_forum); 25 27 $row = sql_fetsel("*", "spip_forum", "id_forum=$id_forum"); 26 if (!$row) return; 28 if (!$row) { 29 return; 30 } 27 31 28 instituer_un_forum($statut, $row);32 instituer_un_forum($statut, $row); 29 33 } 30 34 31 function instituer_un_forum($statut, $row) {35 function instituer_un_forum($statut, $row) { 32 36 33 37 $id_forum = $row['id_forum']; 34 38 $old = $row['statut']; 35 36 if ($old==$statut) 39 // rien a faire si pas de changement de statut 40 if ($old == $statut) { 37 41 return; 42 } 38 43 39 44 // changer le statut de toute l'arborescence dependant de ce message 40 45 $id_messages = array($id_forum); 41 46 while ($id_messages) { 42 sql_updateq("spip_forum", array("statut" => $statut), sql_in("id_forum", $id_messages) . " AND statut = '$old'");47 sql_updateq("spip_forum", array("statut" => $statut), sql_in("id_forum", $id_messages) . " AND statut = '$old'"); 43 48 44 $id_messages = array_map('reset', sql_allfetsel("id_forum", "spip_forum", sql_in("id_parent", $id_messages)));49 $id_messages = array_map('reset', sql_allfetsel("id_forum", "spip_forum", sql_in("id_parent", $id_messages))); 45 50 } 46 51 47 52 // Notifier de la publication du message, s'il etait 'prop' 48 if ($old =='prop' AND $statut=='publie') {53 if ($old == 'prop' AND $statut == 'publie') { 49 54 if ($notifications = charger_fonction('notifications', 'inc')) { 50 55 $notifications('forumvalide', $id_forum); … … 59 64 // car la date_thread aurait cette derniere date alors que pas le message 60 65 // mais c'est au mieux de ce que l'on peut faire quand on depublie un SPAM ou supprime un message 61 if ($statut=='publie' OR $old=='publie') { 62 if ($statut=='publie' 63 OR !($date_thread = sql_getfetsel("date_heure", "spip_forum", "statut='publie' AND id_thread=".$row['id_thread'], "", "date_heure DESC","0,1"))){ 66 if ($statut == 'publie' OR $old == 'publie') { 67 if ($statut == 'publie' 68 OR !($date_thread = sql_getfetsel("date_heure", "spip_forum", 69 "statut='publie' AND id_thread=" . $row['id_thread'], "", "date_heure DESC", "0,1")) 70 ) { 64 71 $date_thread = date('Y-m-d H:i:s'); 65 72 } 66 sql_updateq("spip_forum", array("date_thread" => $date_thread), "id_thread=" .$row['id_thread']);73 sql_updateq("spip_forum", array("date_thread" => $date_thread), "id_thread=" . $row['id_thread']); 67 74 } 68 75 … … 70 77 include_spip('inc/invalideur'); 71 78 suivre_invalideur("id='forum/$id_forum'"); 72 suivre_invalideur("id='" .$row['objet']."/".$row['id_objet']."'");79 suivre_invalideur("id='" . $row['objet'] . "/" . $row['id_objet'] . "'"); 73 80 74 81 // Reindexation du thread (par exemple) … … 82 89 'id_objet' => $id_forum, 83 90 'action' => 'instituer', 84 'statut_ancien' => $old,91 'statut_ancien' => $old, 85 92 ), 86 'data' => array('statut' =>$statut)93 'data' => array('statut' => $statut) 87 94 ) 88 95 ); -
_core_/plugins/forum/action/instituer_lot_forum.php
r93092 r93612 11 11 \***************************************************************************/ 12 12 13 if (!defined("_ECRIRE_INC_VERSION")) return; 13 if (!defined("_ECRIRE_INC_VERSION")) { 14 return; 15 } 14 16 15 17 // http://code.spip.net/@action_instituer_forum_dist 16 18 function action_instituer_lot_forum_dist($arg = null) { 17 19 18 if (is_null($arg)) {20 if (is_null($arg)) { 19 21 $securiser_action = charger_fonction('securiser_action', 'inc'); 20 22 $arg = $securiser_action(); … … 22 24 23 25 // verifier les droits 24 if (autoriser('instituer', 'forum',0)){26 if (autoriser('instituer', 'forum', 0)) { 25 27 26 28 /** … … 29 31 * 30 32 */ 31 if (preg_match(",^(\w+)-,",$arg,$match) 32 AND in_array($statut=$match[1],array('publie','off','spam'))){ 33 $arg = substr($arg,strlen($statut)+1); 33 if (preg_match(",^(\w+)-,", $arg, $match) 34 AND in_array($statut = $match[1], array('publie', 'off', 'spam')) 35 ) { 36 $arg = substr($arg, strlen($statut)+1); 34 37 35 $arg = explode('/', $arg);38 $arg = explode('/', $arg); 36 39 $ip = array_shift($arg); 37 40 $email_auteur = array_shift($arg); 38 41 $id_auteur = intval(array_shift($arg)); 39 $auteur = implode('/', $arg);42 $auteur = implode('/', $arg); 40 43 $where = array(); 41 44 // pas de moderation par lot sur les forum prives 42 $where[] = sql_in('statut',array('privadm','prive','privrac'),'NOT'); 43 if ($ip) $where[] = "ip=".sql_quote($ip); 44 if ($email_auteur) $where[] = "email_auteur=".sql_quote($email_auteur); 45 if ($id_auteur) $where[] = "id_auteur=".intval($id_auteur); 46 if ($auteur) $where[] = "auteur=".sql_quote($auteur); 45 $where[] = sql_in('statut', array('privadm', 'prive', 'privrac'), 'NOT'); 46 if ($ip) { 47 $where[] = "ip=" . sql_quote($ip); 48 } 49 if ($email_auteur) { 50 $where[] = "email_auteur=" . sql_quote($email_auteur); 51 } 52 if ($id_auteur) { 53 $where[] = "id_auteur=" . intval($id_auteur); 54 } 55 if ($auteur) { 56 $where[] = "auteur=" . sql_quote($auteur); 57 } 47 58 $rows = sql_allfetsel("*", "spip_forum", $where); 48 if (!count($rows)) return; 59 if (!count($rows)) { 60 return; 61 } 49 62 50 63 include_spip('action/instituer_forum'); 51 64 foreach ($rows as $row) { 52 instituer_un_forum($statut, $row);65 instituer_un_forum($statut, $row); 53 66 } 54 } 55 /** 67 } /** 56 68 * Cas 2 : seul le statut est explicite et signe 57 69 * les id concernes sont passes en arg supplementaires 58 70 * dans un taleau ids[] 59 71 */ 60 elseif (preg_match(",^(\w+)$,",$arg,$match) 61 AND in_array($statut=$match[1],array('publie','off','spam')) 62 AND $id=_request('ids') 63 AND is_array($id)){ 72 elseif (preg_match(",^(\w+)$,", $arg, $match) 73 AND in_array($statut = $match[1], array('publie', 'off', 'spam')) 74 AND $id = _request('ids') 75 AND is_array($id) 76 ) { 64 77 65 $ids = array_map('intval', $id);78 $ids = array_map('intval', $id); 66 79 $where = array(); 67 80 // pas de moderation par lot sur les forum prives 68 $where[] = sql_in('statut', array('privadm','prive','privrac'),'NOT');69 $where[] = sql_in('id_forum', $ids);81 $where[] = sql_in('statut', array('privadm', 'prive', 'privrac'), 'NOT'); 82 $where[] = sql_in('id_forum', $ids); 70 83 $rows = sql_allfetsel("*", "spip_forum", $where); 71 if (!count($rows)) return; 84 if (!count($rows)) { 85 return; 86 } 72 87 73 88 include_spip('action/instituer_forum'); 74 89 foreach ($rows as $row) { 75 instituer_un_forum($statut, $row);90 instituer_un_forum($statut, $row); 76 91 } 77 92 } 78 } 79 else { 80 spip_log("instituer_lot_forum interdit pour auteur ".$GLOBALS['visiteur_session']['id_auteur'],_LOG_ERREUR); 93 } else { 94 spip_log("instituer_lot_forum interdit pour auteur " . $GLOBALS['visiteur_session']['id_auteur'], _LOG_ERREUR); 81 95 } 82 96 -
_core_/plugins/forum/balise/formulaire_forum.php
r93092 r93612 15 15 * 16 16 * @package SPIP\Forum\Balises 17 **/ 18 if (!defined("_ECRIRE_INC_VERSION")) return; #securite 17 **/ 18 if (!defined("_ECRIRE_INC_VERSION")) { 19 return; 20 } #securite 19 21 20 22 include_spip('inc/acces'); … … 32 34 * `$afficher_groupe[]` est définie dans le fichier d'appel, et si la table 33 35 * de référence est OK, la liste des mots-clés est alors proposée. 34 * 36 * 35 37 * @balise 36 38 * @link http://www.spip.net/3969 Balise `#FORMULAIRE_FORUM` … … 48 50 * Pile complétée par le code à générer 49 51 */ 50 function balise_FORMULAIRE_FORUM 52 function balise_FORMULAIRE_FORUM($p) { 51 53 /** 52 54 * On recupere $objet et $id_objet depuis une boucle englobante si possible … … 56 58 */ 57 59 58 $i_boucle 60 $i_boucle = $p->nom_boucle ? $p->nom_boucle : $p->id_boucle; 59 61 if ($i_boucle) { // La balise peut aussi être utilisée hors boucle. 60 62 $_id_objet = $p->boucles[$i_boucle]->primary; 61 $_type 63 $_type = $p->boucles[$i_boucle]->id_table; 62 64 } else { 63 65 $_id_objet = $_type = null; … … 78 80 'forcer_previsu' 79 81 ); 80 82 81 83 if ($ids) { 82 84 $obtenir = array_merge($obtenir, $ids); 83 85 } 84 86 85 $p = calculer_balise_dynamique($p, 'FORMULAIRE_FORUM', $obtenir,87 $p = calculer_balise_dynamique($p, 'FORMULAIRE_FORUM', $obtenir, 86 88 array("'$_type'", count($ids)) 87 89 ); … … 104 106 */ 105 107 function balise_FORMULAIRE_FORUM_stat($args, $context_compil) { 106 108 107 109 108 110 // un arg peut contenir l'url sur lequel faire le retour … … 119 121 $forcer_previsu = array_shift($args); 120 122 121 $r = balise_forum_retrouve_objet($ido, $id_forum,$args,$context_compil);122 if (!$r) 123 $r = balise_forum_retrouve_objet($ido, $id_forum, $args, $context_compil); 124 if (!$r) { 123 125 return false; 126 } 124 127 125 128 list($objet, $id_objet, $retour) = $r; … … 130 133 // (ie compatibilite) 131 134 $accepter_forum = controler_forum($objet, $id_objet); 132 if ($accepter_forum == 'non') 135 if ($accepter_forum == 'non') { 133 136 return false; 137 } 134 138 135 139 return 136 array($objet, 137 $id_objet, $id_forum, $ajouter_mot, $ajouter_groupe, $forcer_previsu, $retour); 140 array( 141 $objet, 142 $id_objet, 143 $id_forum, 144 $ajouter_mot, 145 $ajouter_groupe, 146 $forcer_previsu, 147 $retour 148 ); 138 149 } 139 150 … … 144 155 * dans l'environnement, sinon on tente de le retrouver depuis un autre 145 156 * message de forum 146 * 157 * 147 158 * @param int $ido 148 159 * @param int $id_forum … … 152 163 * @return array|bool 153 164 */ 154 function balise_forum_retrouve_objet($ido, $id_forum, $args, $context_compil, $objet_obligatoire = true) {155 $_objet 165 function balise_forum_retrouve_objet($ido, $id_forum, $args, $context_compil, $objet_obligatoire = true) { 166 $_objet = $context_compil[5]; // type le la boucle deja calcule 156 167 $nb_ids_env = $context_compil[6]; // nombre d'elements id_xx recuperes 157 $nb 158 $url 159 $objet 160 $id_objet 168 $nb = $nb_ids_env; 169 $url = isset($args[$nb]) ? $args[$nb] : ''; 170 $objet = isset($args[++$nb]) ? $args[$nb] : ''; 171 $id_objet = isset($args[++$nb]) ? $args[$nb] : 0; 161 172 162 173 // pas d'objet force ? on prend le type de boucle calcule … … 174 185 if (!$objet) { 175 186 $objets = forum_get_objets_depuis_env(); 176 $ids = array(); $i = 0; 187 $ids = array(); 188 $i = 0; 177 189 foreach ($objets as $o => $ido) { 178 190 if ($id = $args[$i]) { … … 181 193 $i++; 182 194 } 183 if (count($ids) >1) {195 if (count($ids) > 1) { 184 196 if (isset($ids['rubrique'])) { 185 197 unset($ids['rubrique']); … … 194 206 195 207 // et si on n'a toujours pas ce qu'on souhaite, on tente de le trouver dans un forum existant... 196 if (($objet =='forum' OR !$id_objet) and $id_forum){208 if (($objet == 'forum' OR !$id_objet) and $id_forum) { 197 209 if ($objet = sql_fetsel(array('id_objet', 'objet'), 'spip_forum', 'id_forum=' . intval($id_forum))) { 198 210 $id_objet = $objet['id_objet']; 199 211 $objet = $objet['objet']; 200 212 } else { 201 if ($objet_obligatoire) 213 if ($objet_obligatoire) { 202 214 return false; 215 } 203 216 } 204 217 } … … 208 221 } 209 222 210 return array($objet, $id_objet,$url);223 return array($objet, $id_objet, $url); 211 224 } 225 212 226 ?> -
_core_/plugins/forum/balise/formulaire_forum_prive.php
r81006 r93612 15 15 * 16 16 * @package SPIP\Forum\Balises 17 **/ 18 if (!defined("_ECRIRE_INC_VERSION")) return; #securite 17 **/ 18 if (!defined("_ECRIRE_INC_VERSION")) { 19 return; 20 } #securite 19 21 20 22 include_spip('inc/acces'); … … 33 35 * `$afficher_groupe[]` est définie dans le fichier d'appel, et si la table 34 36 * de référence est OK, la liste des mots-clés est alors proposée. 35 * 37 * 36 38 * @balise 37 39 * @see balise_FORMULAIRE_FORUM() … … 48 50 * Pile complétée par le code à générer 49 51 */ 50 function balise_FORMULAIRE_FORUM_PRIVE 52 function balise_FORMULAIRE_FORUM_PRIVE($p) { 51 53 52 54 /** … … 56 58 * Enfin, on pourra aussi forcer objet et id_objet depuis l'appel du formulaire 57 59 */ 58 $i_boucle 60 $i_boucle = $p->nom_boucle ? $p->nom_boucle : $p->id_boucle; 59 61 if (isset($p->boucles[$i_boucle])) { 60 62 $_id_objet = $p->boucles[$i_boucle]->primary; 61 $_type 63 $_type = $p->boucles[$i_boucle]->id_table; 62 64 } else { 63 65 $_id_objet = $_type = ''; … … 83 85 } 84 86 85 $p = calculer_balise_dynamique($p, 'FORMULAIRE_FORUM_PRIVE', $obtenir,87 $p = calculer_balise_dynamique($p, 'FORMULAIRE_FORUM_PRIVE', $obtenir, 86 88 array("'$_type'", count($ids)) 87 89 ); … … 113 115 include_spip('balise/formulaire_forum'); 114 116 // si statut privrac ou privadm, pas besoin d'objet ! 115 $r = balise_forum_retrouve_objet($ido,$id_forum,$args,$context_compil,!in_array($statut,array('privrac','privadm'))); 116 if (!$r) 117 $r = balise_forum_retrouve_objet($ido, $id_forum, $args, $context_compil, 118 !in_array($statut, array('privrac', 'privadm'))); 119 if (!$r) { 117 120 return false; 121 } 118 122 119 123 list($objet, $id_objet, $retour) = $r; -
_core_/plugins/forum/base/forum.php
r87494 r93612 15 15 * 16 16 * @package SPIP\Core\Pipelines 17 **/17 **/ 18 18 19 if (!defined('_ECRIRE_INC_VERSION')) return; 19 if (!defined('_ECRIRE_INC_VERSION')) { 20 return; 21 } 20 22 21 23 /** … … 26 28 * @return array $interfaces 27 29 */ 28 function forum_declarer_tables_interfaces($interfaces) {30 function forum_declarer_tables_interfaces($interfaces) { 29 31 30 $interfaces['table_des_tables']['forums'] ='forum';32 $interfaces['table_des_tables']['forums'] = 'forum'; 31 33 32 $interfaces['exceptions_des_tables']['forums']['date'] ='date_heure';33 $interfaces['exceptions_des_tables']['forums']['nom'] ='auteur';34 $interfaces['exceptions_des_tables']['forums']['email'] ='email_auteur';34 $interfaces['exceptions_des_tables']['forums']['date'] = 'date_heure'; 35 $interfaces['exceptions_des_tables']['forums']['nom'] = 'auteur'; 36 $interfaces['exceptions_des_tables']['forums']['email'] = 'email_auteur'; 35 37 36 38 // il ne faut pas essayer de chercher le forum du mot cle, mais bien le mot cle associe au forum 37 $interfaces['exceptions_des_jointures']['spip_forum']['id_secteur'] = array('spip_articles', 'id_secteur');38 $interfaces['exceptions_des_jointures']['spip_forum']['id_mot'] = array('spip_mots', 'id_mot');39 $interfaces['exceptions_des_jointures']['spip_forum']['titre_mot'] = array('spip_mots', 'titre');40 $interfaces['exceptions_des_jointures']['spip_forum']['type_mot'] = array('spip_mots', 'type');41 $interfaces['exceptions_des_jointures']['spip_forum']['id_groupe'] = array('spip_mots', 'id_groupe');39 $interfaces['exceptions_des_jointures']['spip_forum']['id_secteur'] = array('spip_articles', 'id_secteur'); 40 $interfaces['exceptions_des_jointures']['spip_forum']['id_mot'] = array('spip_mots', 'id_mot'); 41 $interfaces['exceptions_des_jointures']['spip_forum']['titre_mot'] = array('spip_mots', 'titre'); 42 $interfaces['exceptions_des_jointures']['spip_forum']['type_mot'] = array('spip_mots', 'type'); 43 $interfaces['exceptions_des_jointures']['spip_forum']['id_groupe'] = array('spip_mots', 'id_groupe'); 42 44 43 45 44 46 #$interfaces['table_titre']['forums']= "titre, '' AS lang"; 45 47 #$interfaces['table_date']['forums']='date_heure'; 46 48 47 $interfaces['table_statut']['spip_forum'][] = array('champ'=>'statut','publie'=>'publie','previsu'=>'publie,prop','exception'=>'statut'); 49 $interfaces['table_statut']['spip_forum'][] = array( 50 'champ' => 'statut', 51 'publie' => 'publie', 52 'previsu' => 'publie,prop', 53 'exception' => 'statut' 54 ); 48 55 49 $interfaces['table_des_traitements']['PARAMETRES_FORUM'][]= 'spip_htmlspecialchars(%s)'; 50 $interfaces['table_des_traitements']['TEXTE']['forums']= "liens_nofollow(safehtml(".str_replace("%s","interdit_html(%s)",_TRAITEMENT_RACCOURCIS)."))"; 51 $interfaces['table_des_traitements']['TITRE']['forums']= "liens_nofollow(safehtml(".str_replace("%s","interdit_html(%s)",_TRAITEMENT_TYPO)."))"; 52 $interfaces['table_des_traitements']['NOTES']['forums']= "liens_nofollow(safehtml(".str_replace("%s","interdit_html(%s)",_TRAITEMENT_RACCOURCIS)."))"; 53 $interfaces['table_des_traitements']['NOM_SITE']['forums']= "liens_nofollow(safehtml(".str_replace("%s","interdit_html(%s)",_TRAITEMENT_TYPO)."))"; 54 $interfaces['table_des_traitements']['URL_SITE']['forums']= 'safehtml(vider_url(%s))'; 55 $interfaces['table_des_traitements']['AUTEUR']['forums']= 'liens_nofollow(safehtml(vider_url(%s)))'; 56 $interfaces['table_des_traitements']['EMAIL_AUTEUR']['forums']= 'safehtml(vider_url(%s))'; 56 $interfaces['table_des_traitements']['PARAMETRES_FORUM'][] = 'spip_htmlspecialchars(%s)'; 57 $interfaces['table_des_traitements']['TEXTE']['forums'] = "liens_nofollow(safehtml(" . str_replace("%s", 58 "interdit_html(%s)", _TRAITEMENT_RACCOURCIS) . "))"; 59 $interfaces['table_des_traitements']['TITRE']['forums'] = "liens_nofollow(safehtml(" . str_replace("%s", 60 "interdit_html(%s)", _TRAITEMENT_TYPO) . "))"; 61 $interfaces['table_des_traitements']['NOTES']['forums'] = "liens_nofollow(safehtml(" . str_replace("%s", 62 "interdit_html(%s)", _TRAITEMENT_RACCOURCIS) . "))"; 63 $interfaces['table_des_traitements']['NOM_SITE']['forums'] = "liens_nofollow(safehtml(" . str_replace("%s", 64 "interdit_html(%s)", _TRAITEMENT_TYPO) . "))"; 65 $interfaces['table_des_traitements']['URL_SITE']['forums'] = 'safehtml(vider_url(%s))'; 66 $interfaces['table_des_traitements']['AUTEUR']['forums'] = 'liens_nofollow(safehtml(vider_url(%s)))'; 67 $interfaces['table_des_traitements']['EMAIL_AUTEUR']['forums'] = 'safehtml(vider_url(%s))'; 57 68 58 69 return $interfaces; … … 66 77 * @return array $tables Tableau des objets complété 67 78 */ 68 function forum_declarer_tables_objets_sql($tables) {79 function forum_declarer_tables_objets_sql($tables) { 69 80 $tables['spip_forum'] = array( 70 'table_objet'=>'forums', # ??? hum hum redevient spip_forum par table_objet_sql mais casse par un bete "spip_".table_objet() 71 'type'=>'forum', 72 'url_voir'=>'controler_forum', 73 'url_edit'=>'controler_forum', 74 'editable'=>'non', 81 'table_objet' => 'forums', 82 # ??? hum hum redevient spip_forum par table_objet_sql mais casse par un bete "spip_".table_objet() 83 'type' => 'forum', 84 'url_voir' => 'controler_forum', 85 'url_edit' => 'controler_forum', 86 'editable' => 'non', 75 87 'principale' => 'oui', 76 'page'=>'', // pas de page editoriale pour un forum 88 'page' => '', 89 // pas de page editoriale pour un forum 77 90 78 91 'texte_retour' => 'icone_retour', 79 92 'texte_objets' => 'forum:forum', 80 93 'texte_objet' => 'forum:forum', 81 'info_aucun_objet' => 'forum:aucun_message_forum',94 'info_aucun_objet' => 'forum:aucun_message_forum', 82 95 'info_1_objet' => 'forum:info_1_message_forum', 83 96 'info_nb_objets' => 'forum:info_nb_messages_forum', … … 87 100 'champs_editables' => array('titre', 'texte', 'nom_site', 'url_site'), 88 101 89 'field' => array(90 "id_forum" 91 "id_objet" 92 "objet" 93 "id_parent" 94 "id_thread" 95 "date_heure" 96 "date_thread" 97 "titre" 98 "texte" 99 "auteur" 100 "email_auteur" 101 "nom_site" 102 "url_site" 103 "statut" 104 "ip" 105 "maj" 106 "id_auteur" 102 'field' => array( 103 "id_forum" => "bigint(21) NOT NULL", 104 "id_objet" => "bigint(21) DEFAULT '0' NOT NULL", 105 "objet" => "VARCHAR (25) DEFAULT '' NOT NULL", 106 "id_parent" => "bigint(21) DEFAULT '0' NOT NULL", 107 "id_thread" => "bigint(21) DEFAULT '0' NOT NULL", 108 "date_heure" => "datetime DEFAULT '0000-00-00 00:00:00' NOT NULL", 109 "date_thread" => "datetime DEFAULT '0000-00-00 00:00:00' NOT NULL", 110 "titre" => "text DEFAULT '' NOT NULL", 111 "texte" => "mediumtext DEFAULT '' NOT NULL", 112 "auteur" => "text DEFAULT '' NOT NULL", 113 "email_auteur" => "text DEFAULT '' NOT NULL", 114 "nom_site" => "text DEFAULT '' NOT NULL", 115 "url_site" => "text DEFAULT '' NOT NULL", 116 "statut" => "varchar(8) DEFAULT '0' NOT NULL", 117 "ip" => "varchar(40) DEFAULT '' NOT NULL", 118 "maj" => "TIMESTAMP", 119 "id_auteur" => "bigint DEFAULT '0' NOT NULL" 107 120 ), 108 121 'key' => array( 109 "PRIMARY KEY" 110 "KEY id_auteur" 111 "KEY id_parent" 112 "KEY id_thread" 122 "PRIMARY KEY" => "id_forum", 123 "KEY id_auteur" => "id_auteur", 124 "KEY id_parent" => "id_parent", 125 "KEY id_thread" => "id_thread", 113 126 "KEY optimal" => "statut,id_parent,id_objet,objet,date_heure" 114 127 ), 115 128 'join' => array( 116 "id_forum" =>"id_forum",117 "id_parent" =>"id_parent",118 "id_objet" =>"id_objet",119 "objet" =>"objet",120 "id_auteur" =>"id_auteur",129 "id_forum" => "id_forum", 130 "id_parent" => "id_parent", 131 "id_objet" => "id_objet", 132 "objet" => "objet", 133 "id_auteur" => "id_auteur", 121 134 ), 122 135 'rechercher_champs' => array( 123 'titre' => 3, 'texte' => 1, 'auteur' => 2, 'email_auteur' => 2, 'nom_site' => 1, 'url_site' => 1 136 'titre' => 3, 137 'texte' => 1, 138 'auteur' => 2, 139 'email_auteur' => 2, 140 'nom_site' => 1, 141 'url_site' => 1 124 142 ), 125 143 ); 126 144 127 145 // jointures sur les forum pour tous les objets 128 $tables[]['tables_jointures'][] = 'forums';146 $tables[]['tables_jointures'][] = 'forums'; 129 147 130 148 return $tables; -
_core_/plugins/forum/formulaires/activer_forums_objet.php
r93092 r93612 16 16 * 17 17 * @package SPIP\Forum\Formulaires 18 **/ 19 if (!defined("_ECRIRE_INC_VERSION")) return; 18 **/ 19 if (!defined("_ECRIRE_INC_VERSION")) { 20 return; 21 } 20 22 21 23 /** … … 26 28 * @return bool 27 29 * true si les forums publics sont autorisés, false sinon 28 **/30 **/ 29 31 function get_forums_publics($id_objet = 0, $objet = 'article') { 30 32 31 if ($objet =='article' AND $id_objet) {32 $obj = sql_fetsel("accepter_forum", "spip_articles", "id_article=" .intval($id_objet));33 if ($objet == 'article' AND $id_objet) { 34 $obj = sql_fetsel("accepter_forum", "spip_articles", "id_article=" . intval($id_objet)); 33 35 34 if ($obj) return $obj['accepter_forum']; 36 if ($obj) { 37 return $obj['accepter_forum']; 38 } 35 39 } else { // dans ce contexte, inutile 36 return substr($GLOBALS['meta']["forums_publics"], 0,3);40 return substr($GLOBALS['meta']["forums_publics"], 0, 3); 37 41 } 42 38 43 return $GLOBALS['meta']["forums_publics"]; 39 44 } … … 47 52 * Contexte du squelette du formulaire 48 53 */ 49 function formulaires_activer_forums_objet_charger_dist($id_objet, $objet = 'article') {50 if (!autoriser('modererforum', $objet, $id_objet)) 54 function formulaires_activer_forums_objet_charger_dist($id_objet, $objet = 'article') { 55 if (!autoriser('modererforum', $objet, $id_objet)) { 51 56 return false; 57 } 52 58 53 59 include_spip('inc/presentation'); 54 60 include_spip('base/abstract_sql'); 55 $nb_forums = sql_countsel("spip_forum", "objet=".sql_quote($objet)." AND id_objet=".intval($id_objet)." AND statut IN ('publie', 'off', 'prop', 'spam')"); 56 $editable = ($objet=='article')?true:false; 57 if (!$editable AND !$nb_forums) 61 $nb_forums = sql_countsel("spip_forum", 62 "objet=" . sql_quote($objet) . " AND id_objet=" . intval($id_objet) . " AND statut IN ('publie', 'off', 'prop', 'spam')"); 63 $editable = ($objet == 'article') ? true : false; 64 if (!$editable AND !$nb_forums) { 58 65 return false; 66 } 59 67 60 68 return array( … … 63 71 'id_objet' => $id_objet, 64 72 'accepter_forum' => get_forums_publics($id_objet, $objet), 65 '_suivi_forums' => $nb_forums ?_T('forum:icone_suivi_forum', array('nb_forums' => $nb_forums)):"",73 '_suivi_forums' => $nb_forums ? _T('forum:icone_suivi_forum', array('nb_forums' => $nb_forums)) : "", 66 74 ); 67 75 68 76 } 69 77 … … 76 84 * Retours des traitements 77 85 */ 78 function formulaires_activer_forums_objet_traiter_dist($id_objet, $objet = 'article') {86 function formulaires_activer_forums_objet_traiter_dist($id_objet, $objet = 'article') { 79 87 include_spip('inc/autoriser'); 80 if ($objet =='article' AND autoriser('modererforum', $objet, $id_objet)){88 if ($objet == 'article' AND autoriser('modererforum', $objet, $id_objet)) { 81 89 $statut = _request('accepter_forum'); 82 90 include_spip('base/abstract_sql'); 83 sql_updateq("spip_articles", array("accepter_forum" => $statut), "id_article=" . intval($id_objet));84 91 sql_updateq("spip_articles", array("accepter_forum" => $statut), "id_article=" . intval($id_objet)); 92 85 93 if ($statut == 'abo') { 86 94 ecrire_meta('accepter_visiteurs', 'oui'); … … 89 97 suivre_invalideur("id='$objet/$id_objet'"); 90 98 } 91 92 return array('message_ok' =>_T('config_info_enregistree'),'editable'=>true);99 100 return array('message_ok' => _T('config_info_enregistree'), 'editable' => true); 93 101 } 94 102 -
_core_/plugins/forum/formulaires/configurer_forums_contenu.php
r80919 r93612 11 11 \***************************************************************************/ 12 12 13 if (!defined("_ECRIRE_INC_VERSION")) return; 13 if (!defined("_ECRIRE_INC_VERSION")) { 14 return; 15 } 14 16 15 function formulaires_configurer_forums_contenu_charger_dist() {17 function formulaires_configurer_forums_contenu_charger_dist() { 16 18 17 19 return array( … … 23 25 'formats_documents_forum' => $GLOBALS['meta']['formats_documents_forum'], 24 26 ); 25 27 26 28 } 27 29 28 function formulaires_configurer_forums_contenu_verifier_dist() {30 function formulaires_configurer_forums_contenu_verifier_dist() { 29 31 $erreurs = array(); 30 32 31 if (!_request('forums_titre') AND !_request('forums_texte') AND !_request('forums_urlref')) 33 if (!_request('forums_titre') AND !_request('forums_texte') AND !_request('forums_urlref')) { 32 34 $erreurs['forums_titre'] = _T('info_obligatoire'); 35 } 33 36 34 foreach(array('forums_titre','forums_texte','forums_urlref','forums_afficher_barre','forums_forcer_previsu') as $champ) 35 if (_request($champ)!=='oui') 36 set_request($champ,'non'); 37 37 foreach (array( 38 'forums_titre', 39 'forums_texte', 40 'forums_urlref', 41 'forums_afficher_barre', 42 'forums_forcer_previsu' 43 ) as $champ) { 44 if (_request($champ) !== 'oui') { 45 set_request($champ, 'non'); 46 } 47 } 48 38 49 return $erreurs; 39 50 } 40 51 41 function formulaires_configurer_forums_contenu_traiter_dist() {52 function formulaires_configurer_forums_contenu_traiter_dist() { 42 53 include_spip('inc/config'); 43 54 appliquer_modifs_config(); 44 55 45 return array('message_ok' =>_T('config_info_enregistree'));56 return array('message_ok' => _T('config_info_enregistree')); 46 57 } 47 58 -
_core_/plugins/forum/formulaires/configurer_forums_notifications.php
r79783 r93612 11 11 \***************************************************************************/ 12 12 13 if (!defined("_ECRIRE_INC_VERSION")) return; 13 if (!defined("_ECRIRE_INC_VERSION")) { 14 return; 15 } 14 16 $GLOBALS['liste_des_forums']['forum:bouton_radio_modere_posteriori'] = 'pos'; 15 17 $GLOBALS['liste_des_forums']['forum:bouton_radio_modere_priori'] = 'pri'; … … 17 19 $GLOBALS['liste_des_forums']['forum:info_pas_de_forum'] = 'non'; 18 20 19 function formulaires_configurer_forums_notifications_charger_dist() {21 function formulaires_configurer_forums_notifications_charger_dist() { 20 22 $valeurs = array(); 21 23 $m = $GLOBALS['meta']['prevenir_auteurs']; 22 24 $l = $GLOBALS['liste_des_forums']; 23 25 unset($l['forum:info_pas_de_forum']); 24 foreach ($l as $desc => $val) 25 $valeurs['prevenir_auteurs_' . $val] = (($m == 'oui') OR strpos($m,",$val,")!==false); 26 foreach ($l as $desc => $val) { 27 $valeurs['prevenir_auteurs_' . $val] = (($m == 'oui') OR strpos($m, ",$val,") !== false); 28 } 26 29 27 30 return $valeurs; 28 31 } 29 32 30 function formulaires_configurer_forums_notifications_traiter_dist() {33 function formulaires_configurer_forums_notifications_traiter_dist() { 31 34 include_spip('inc/meta'); 32 35 33 36 $res = array(); 34 37 foreach ($GLOBALS['liste_des_forums'] as $desc => $val) { 35 if (_request('prevenir_auteurs_' . $val)) $res[]=$val; 38 if (_request('prevenir_auteurs_' . $val)) { 39 $res[] = $val; 40 } 36 41 } 37 ecrire_meta('prevenir_auteurs', $res ? (',' .join(',',$res).',') : 'non');42 ecrire_meta('prevenir_auteurs', $res ? (',' . join(',', $res) . ',') : 'non'); 38 43 39 return array('message_ok' =>_T('config_info_enregistree'));44 return array('message_ok' => _T('config_info_enregistree')); 40 45 } 41 46 -
_core_/plugins/forum/formulaires/configurer_forums_participants.php
r79783 r93612 11 11 \***************************************************************************/ 12 12 13 if (!defined("_ECRIRE_INC_VERSION")) return; 13 if (!defined("_ECRIRE_INC_VERSION")) { 14 return; 15 } 14 16 15 function formulaires_configurer_forums_participants_charger_dist() {17 function formulaires_configurer_forums_participants_charger_dist() { 16 18 17 19 return array( 18 20 'forums_publics' => $GLOBALS['meta']["forums_publics"], 19 21 ); 20 22 21 23 } 22 24 23 function formulaires_configurer_forums_participants_traiter_dist() {25 function formulaires_configurer_forums_participants_traiter_dist() { 24 26 include_spip('inc/config'); 25 27 include_spip('inc/meta'); … … 27 29 $purger_skel = false; 28 30 if ($accepter_forum = _request('forums_publics') 29 AND ($accepter_forum != $GLOBALS['meta']["forums_publics"])) { 31 AND ($accepter_forum != $GLOBALS['meta']["forums_publics"]) 32 ) { 30 33 $purger_skel = true; 31 $accepter_forum = substr($accepter_forum, 0,3);34 $accepter_forum = substr($accepter_forum, 0, 3); 32 35 } 33 36 … … 41 44 : ''; 42 45 43 sql_updateq('spip_articles', array('accepter_forum' =>$accepter_forum), $sauf);46 sql_updateq('spip_articles', array('accepter_forum' => $accepter_forum), $sauf); 44 47 } 45 48 46 if ($accepter_forum == 'abo') 49 if ($accepter_forum == 'abo') { 47 50 ecrire_meta('accepter_visiteurs', 'oui'); 51 } 48 52 49 53 appliquer_modifs_config(); … … 53 57 } 54 58 55 return array('message_ok' =>_T('config_info_enregistree'));59 return array('message_ok' => _T('config_info_enregistree')); 56 60 } 57 61 -
_core_/plugins/forum/formulaires/configurer_forums_prives.php
r85372 r93612 11 11 \***************************************************************************/ 12 12 13 if (!defined("_ECRIRE_INC_VERSION")) return; 13 if (!defined("_ECRIRE_INC_VERSION")) { 14 return; 15 } 14 16 15 function formulaires_configurer_forums_prives_charger_dist() {17 function formulaires_configurer_forums_prives_charger_dist() { 16 18 17 19 return array( 18 'forum_prive_objets' => explode(',', $GLOBALS['meta']["forum_prive_objets"]),20 'forum_prive_objets' => explode(',', $GLOBALS['meta']["forum_prive_objets"]), 19 21 'forum_prive' => $GLOBALS['meta']["forum_prive"], 20 22 'forum_prive_admin' => $GLOBALS['meta']["forum_prive_admin"], 21 23 ); 22 24 23 25 } 24 26 25 function formulaires_configurer_forums_prives_traiter_dist() {26 $res = array('editable' =>true);27 function formulaires_configurer_forums_prives_traiter_dist() { 28 $res = array('editable' => true); 27 29 28 if (!is_null($v=_request($m='forum_prive_objets'))) 29 ecrire_meta($m, is_array($v)?implode(',',$v):''); 30 if (!is_null($v=_request($m='forum_prive'))) 31 ecrire_meta($m, $v=='oui'?'oui':'non'); 32 if (!is_null($v=_request($m='forum_prive_admin'))) 33 ecrire_meta($m, $v=='oui'?'oui':'non'); 30 if (!is_null($v = _request($m = 'forum_prive_objets'))) { 31 ecrire_meta($m, is_array($v) ? implode(',', $v) : ''); 32 } 33 if (!is_null($v = _request($m = 'forum_prive'))) { 34 ecrire_meta($m, $v == 'oui' ? 'oui' : 'non'); 35 } 36 if (!is_null($v = _request($m = 'forum_prive_admin'))) { 37 ecrire_meta($m, $v == 'oui' ? 'oui' : 'non'); 38 } 34 39 35 40 $res['message_ok'] = _T('config_info_enregistree'); -
_core_/plugins/forum/formulaires/forum.php
r93092 r93612 11 11 \***************************************************************************/ 12 12 13 if (!defined("_ECRIRE_INC_VERSION")) return; 13 if (!defined("_ECRIRE_INC_VERSION")) { 14 return; 15 } 14 16 15 17 include_spip('inc/forum'); … … 17 19 /** 18 20 * Identification du formulaire poste : ne pas tenir compte de la previsu et du retour 21 * 19 22 * @param $objet 20 23 * @param $id_objet … … 26 29 * @return array 27 30 */ 28 function formulaires_forum_identifier_dist($objet, $id_objet, $id_forum, $ajouter_mot, $ajouter_groupe, $afficher_previsu, $retour){ 29 return array($objet, $id_objet, $id_forum,$ajouter_mot, $ajouter_groupe); 31 function formulaires_forum_identifier_dist( 32 $objet, 33 $id_objet, 34 $id_forum, 35 $ajouter_mot, 36 $ajouter_groupe, 37 $afficher_previsu, 38 $retour 39 ) { 40 return array($objet, $id_objet, $id_forum, $ajouter_mot, $ajouter_groupe); 30 41 } 31 42 … … 33 44 /** 34 45 * Charger l'env du squelette de #FORMULAIRE_FORUM 46 * 35 47 * @param string $objet 36 48 * @param int $id_objet … … 46 58 * @return array|bool 47 59 */ 48 function formulaires_forum_charger_dist($objet, $id_objet, $id_forum, 49 $ajouter_mot, $ajouter_groupe, $forcer_previsu, $retour){ 50 51 if (!function_exists($f = 'forum_recuperer_titre')) 60 function formulaires_forum_charger_dist( 61 $objet, 62 $id_objet, 63 $id_forum, 64 $ajouter_mot, 65 $ajouter_groupe, 66 $forcer_previsu, 67 $retour 68 ) { 69 70 if (!function_exists($f = 'forum_recuperer_titre')) { 52 71 $f = 'forum_recuperer_titre_dist'; 53 if (!$titre = $f($objet, $id_objet, $id_forum)) 72 } 73 if (!$titre = $f($objet, $id_objet, $id_forum)) { 54 74 return false; 75 } 55 76 56 77 // ca s'apparenterait presque a une autorisation... 57 78 // si on n'avait pas a envoyer la valeur $accepter_forum au formulaire 58 79 $accepter_forum = controler_forum($objet, $id_objet); 59 if ($accepter_forum =='non'){80 if ($accepter_forum == 'non') { 60 81 return false; 61 82 } … … 64 85 65 86 // table a laquelle sont associes les mots : 66 if ($GLOBALS['meta']["mots_cles_forums"] !="oui")87 if ($GLOBALS['meta']["mots_cles_forums"] != "oui") { 67 88 $table = ''; 68 else89 } else { 69 90 $table = table_objet($objet); 91 } 70 92 71 93 // exiger l'authentification des posteurs pour les forums sur abo 72 if ($accepter_forum =="abo"){73 if (!isset($GLOBALS["visiteur_session"]['statut']) OR !$GLOBALS["visiteur_session"]['statut']) {94 if ($accepter_forum == "abo") { 95 if (!isset($GLOBALS["visiteur_session"]['statut']) OR !$GLOBALS["visiteur_session"]['statut']) { 74 96 return array( 75 97 'action' => '', #ne sert pas dans ce cas, on la vide pour mutualiser le cache … … 96 118 97 119 // par défaut, on force la prévisualisation du message avant de le poster 98 if (($forcer_previsu =='non') OR (empty($forcer_previsu) AND $GLOBALS['meta']["forums_forcer_previsu"]=="non"))120 if (($forcer_previsu == 'non') OR (empty($forcer_previsu) AND $GLOBALS['meta']["forums_forcer_previsu"] == "non")) { 99 121 $forcer_previsu = 'non'; 100 else122 } else { 101 123 $forcer_previsu = 'oui'; 102 103 if (_request('formulaire_action')){ 124 } 125 126 if (_request('formulaire_action')) { 104 127 $arg = forum_fichier_tmp(join('', $ids)); 105 128 … … 107 130 // on sait que cette fonction est dans le fichier associe 108 131 $hash = calculer_action_auteur("ajout_forum-$arg"); 109 } 110 else { 132 } else { 111 133 $arg = $hash = ''; 112 134 } … … 114 136 // pour les hidden 115 137 $script_hidden = ""; 116 foreach ($ids as $id => $v) 138 foreach ($ids as $id => $v) { 117 139 $script_hidden .= "<input type='hidden' name='$id' value='$v' />"; 140 } 118 141 119 142 $script_hidden .= "<input type='hidden' name='arg' value='$arg' />"; … … 121 144 $script_hidden .= "<input type='hidden' name='verif_$hash' value='ok' />"; 122 145 123 if ($formats = forum_documents_acceptes()) {146 if ($formats = forum_documents_acceptes()) { 124 147 include_spip('inc/securiser_action'); 125 148 $cle = calculer_cle_action('ajouter-document-' . $objet . '-' . $id_objet); 126 } 127 else { 149 } else { 128 150 $cle = null; 129 151 } … … 139 161 140 162 return array_merge($vals, array( 141 'modere' => (($accepter_forum !='pri') ? '' : ' '),163 'modere' => (($accepter_forum != 'pri') ? '' : ' '), 142 164 'table' => $table, 143 'config' => array('afficher_barre' => ($GLOBALS['meta']['forums_afficher_barre'] !='non' ? ' ' : '')),165 'config' => array('afficher_barre' => ($GLOBALS['meta']['forums_afficher_barre'] != 'non' ? ' ' : '')), 144 166 '_hidden' => $script_hidden, # pour les variables hidden qui seront inserees dans le form et dans le form de previsu 145 167 'cle_ajouter_document' => $cle, … … 172 194 * @return int 173 195 */ 174 function forum_fichier_tmp($arg) {196 function forum_fichier_tmp($arg) { 175 197 # astuce : mt_rand pour autoriser les hits simultanes 176 198 while (($alea = time()+@mt_rand())+intval($arg) 177 AND @file_exists($f = _DIR_TMP . "forum_$alea.lck")){ 178 } 179 ; 199 AND @file_exists($f = _DIR_TMP . "forum_$alea.lck")) { 200 }; 180 201 spip_touch($f); 181 202 182 203 # et maintenant on purge les locks de forums ouverts depuis > 4 h 183 204 184 if ($dh = @opendir(_DIR_TMP)) {185 while (($file = @readdir($dh)) !==false){205 if ($dh = @opendir(_DIR_TMP)) { 206 while (($file = @readdir($dh)) !== false) { 186 207 if (preg_match('/^forum_([0-9]+)\.lck$/', $file) 187 AND (time()-@filemtime(_DIR_TMP . $file) >4*3600)188 ) 208 AND (time()-@filemtime(_DIR_TMP . $file) > 4*3600) 209 ) { 189 210 spip_unlink(_DIR_TMP . $file); 190 } 191 } 211 } 212 } 213 } 214 192 215 return $alea; 193 216 } … … 195 218 /** 196 219 * Verifier la saisie de #FORMULAIRE_FORUM 220 * 197 221 * @param string $objet 198 222 * @param int $id_objet … … 208 232 * @return array|bool 209 233 */ 210 function formulaires_forum_verifier_dist($objet, $id_objet, $id_forum, 211 $ajouter_mot, $ajouter_groupe, $forcer_previsu, $retour){ 234 function formulaires_forum_verifier_dist( 235 $objet, 236 $id_objet, 237 $id_forum, 238 $ajouter_mot, 239 $ajouter_groupe, 240 $forcer_previsu, 241 $retour 242 ) { 212 243 include_spip('inc/acces'); 213 244 include_spip('inc/texte'); … … 216 247 217 248 // par défaut, on force la prévisualisation du message avant de le poster 218 if (($forcer_previsu =='non') OR (empty($forcer_previsu) AND $GLOBALS['meta']["forums_forcer_previsu"]=="non"))249 if (($forcer_previsu == 'non') OR (empty($forcer_previsu) AND $GLOBALS['meta']["forums_forcer_previsu"] == "non")) { 219 250 $forcer_previsu = 'non'; 220 else251 } else { 221 252 $forcer_previsu = 'oui'; 253 } 222 254 223 255 $erreurs = array(); … … 232 264 233 265 if (isset($_FILES['ajouter_document']) 234 AND $_FILES['ajouter_document']['tmp_name']){ 266 AND $_FILES['ajouter_document']['tmp_name'] 267 ) { 235 268 236 269 $acceptes = forum_documents_acceptes(); … … 241 274 // verifier si on possede la cle (ie on est autorise a poster) 242 275 // (sinon tant pis) ; cf. charger.php pour la definition de la cle 243 OR _request('cle_ajouter_document')!=calculer_cle_action($a = "ajouter-document-$objet-$id_objet")244 ) {276 OR _request('cle_ajouter_document') != calculer_cle_action($a = "ajouter-document-$objet-$id_objet") 277 ) { 245 278 $erreurs['document_forum'] = _T('forum:documents_interdits_forum'); 246 279 unset($_FILES['ajouter_document']); 247 } 248 else { 249 if (!isset($GLOBALS['visiteur_session']['tmp_forum_document'])) 280 } else { 281 if (!isset($GLOBALS['visiteur_session']['tmp_forum_document'])) { 250 282 session_set('tmp_forum_document', sous_repertoire(_DIR_TMP, 'documents_forum') . md5(uniqid(rand()))); 283 } 251 284 252 285 $tmp = $GLOBALS['visiteur_session']['tmp_forum_document']; … … 257 290 list($extension, $doc['name']) = fixer_extension_document($doc); 258 291 259 if (!in_array($extension, $acceptes)) {292 if (!in_array($extension, $acceptes)) { 260 293 $erreurs['document_forum'] = _T('public:formats_acceptes', array('formats' => join(', ', $acceptes))); 261 } 262 else { 294 } else { 263 295 include_spip('inc/getdocument'); 264 if (!deplacer_fichier_upload($doc['tmp_name'], $tmp . '.bin')) 296 if (!deplacer_fichier_upload($doc['tmp_name'], $tmp . '.bin')) { 265 297 $erreurs['document_forum'] = _T('copie_document_impossible'); 298 } 266 299 267 300 # else if (...) … … 271 304 272 305 // si ok on stocke les meta donnees, sinon on efface 273 if (isset($erreurs['document_forum'])) {306 if (isset($erreurs['document_forum'])) { 274 307 spip_unlink($tmp . '.bin'); 275 308 unset ($_FILES['ajouter_document']); … … 279 312 } 280 313 } 281 } 282 // restaurer/supprimer le document eventuellement uploade au tour precedent 314 } // restaurer/supprimer le document eventuellement uploade au tour precedent 283 315 elseif (isset($GLOBALS['visiteur_session']['tmp_forum_document']) 284 AND $tmp = $GLOBALS['visiteur_session']['tmp_forum_document'] 285 AND file_exists($tmp . '.bin')){ 286 if (_request('supprimer_document_ajoute')){ 316 AND $tmp = $GLOBALS['visiteur_session']['tmp_forum_document'] 317 AND file_exists($tmp . '.bin') 318 ) { 319 if (_request('supprimer_document_ajoute')) { 287 320 spip_unlink($tmp . '.bin'); 288 321 spip_unlink($tmp . '.txt'); 289 } 290 elseif (lire_fichier($tmp . '.txt', $meta)){ 322 } elseif (lire_fichier($tmp . '.txt', $meta)) { 291 323 $doc = &$_FILES['ajouter_document']; 292 324 $doc = @unserialize($meta); … … 295 327 296 328 $min_length = (defined('_FORUM_LONGUEUR_MINI') ? _FORUM_LONGUEUR_MINI : 10); 297 if (strlen($texte = _request('texte'))<$min_length 298 AND !$ajouter_mot AND $GLOBALS['meta']['forums_texte']=='oui' 299 ){ 300 $erreurs['texte'] = _T($min_length==10 ? 'forum:forum_attention_dix_caracteres' : 'forum:forum_attention_nb_caracteres_mini', array('min' => $min_length)); 301 } 302 elseif (defined('_FORUM_LONGUEUR_MAXI') 303 AND _FORUM_LONGUEUR_MAXI>0 304 AND strlen($texte)>_FORUM_LONGUEUR_MAXI){ 329 if (strlen($texte = _request('texte')) < $min_length 330 AND !$ajouter_mot AND $GLOBALS['meta']['forums_texte'] == 'oui' 331 ) { 332 $erreurs['texte'] = _T($min_length == 10 ? 'forum:forum_attention_dix_caracteres' : 'forum:forum_attention_nb_caracteres_mini', 333 array('min' => $min_length)); 334 } elseif (defined('_FORUM_LONGUEUR_MAXI') 335 AND _FORUM_LONGUEUR_MAXI > 0 336 AND strlen($texte) > _FORUM_LONGUEUR_MAXI 337 ) { 305 338 $erreurs['texte'] = _T('forum:forum_attention_trop_caracteres', 306 339 array( … … 310 343 } 311 344 312 if (array_reduce($_POST, 'reduce_strlen', (20*1024)) <0){345 if (array_reduce($_POST, 'reduce_strlen', (20*1024)) < 0) { 313 346 $erreurs['erreur_message'] = _T('forum:forum_message_trop_long'); 314 } 315 else { 347 } else { 316 348 // Ne pas autoriser d'envoi hacke si forum sur abonnement 317 if (controler_forum($objet, $id_objet)=='abo' 318 AND !test_espace_prive()){ 349 if (controler_forum($objet, $id_objet) == 'abo' 350 AND !test_espace_prive() 351 ) { 319 352 if (!isset($GLOBALS['visiteur_session']) 320 OR !isset($GLOBALS['visiteur_session']['statut'])){ 353 OR !isset($GLOBALS['visiteur_session']['statut']) 354 ) { 321 355 $erreurs['erreur_message'] = _T('forum_non_inscrit'); 322 } 323 elseif ($GLOBALS['visiteur_session']['statut']=='5poubelle') { 356 } elseif ($GLOBALS['visiteur_session']['statut'] == '5poubelle') { 324 357 $erreurs['erreur_message'] = _T('forum:forum_acces_refuse'); 325 358 } … … 327 360 } 328 361 329 if (strlen($titre = _request('titre'))<3 330 AND $GLOBALS['meta']['forums_titre']=='oui'){ 362 if (strlen($titre = _request('titre')) < 3 363 AND $GLOBALS['meta']['forums_titre'] == 'oui' 364 ) { 331 365 $erreurs['titre'] = _T('forum:forum_attention_trois_caracteres'); 332 366 } 333 367 334 if (!count($erreurs) AND !_request('confirmer_previsu_forum')){ 335 if (!_request('envoyer_message') OR $forcer_previsu<>'non') { 336 $previsu = inclure_previsu($texte, $titre, _request('url_site'), _request('nom_site'), _request('ajouter_mot'), $doc, 368 if (!count($erreurs) AND !_request('confirmer_previsu_forum')) { 369 if (!_request('envoyer_message') OR $forcer_previsu <> 'non') { 370 $previsu = inclure_previsu($texte, $titre, _request('url_site'), _request('nom_site'), _request('ajouter_mot'), 371 $doc, 337 372 $objet, $id_objet, $id_forum); 338 373 $erreurs['previsu'] = $previsu; … … 342 377 343 378 // Si forum avec previsu sans bon hash de securite, echec 344 if (!count($erreurs)) {379 if (!count($erreurs)) { 345 380 if (!test_espace_prive() 346 AND $forcer_previsu<>'non' 347 AND forum_insert_noprevisu()){ 381 AND $forcer_previsu <> 'non' 382 AND forum_insert_noprevisu() 383 ) { 348 384 $erreurs['erreur_message'] = _T('forum:forum_acces_refuse'); 349 385 } … … 356 392 /** 357 393 * Lister les formats de documents joints acceptes dans les forum 394 * 358 395 * @return array 359 396 */ 360 function forum_documents_acceptes() {397 function forum_documents_acceptes() { 361 398 $formats = trim($GLOBALS['meta']['formats_documents_forum']); 362 if (!$formats) return array(); 363 if ($formats!=='*'){ 399 if (!$formats) { 400 return array(); 401 } 402 if ($formats !== '*') { 364 403 $formats = array_filter(preg_split(',[^a-zA-Z0-9/+_],', $formats)); 365 } 366 else { 404 } else { 367 405 include_spip('base/typedoc'); 368 406 $formats = array_keys($GLOBALS['tables_mime']); 369 407 } 370 408 sort($formats); 409 371 410 return $formats; 372 411 } … … 389 428 * @return string 390 429 */ 391 function inclure_previsu($texte, $titre, $url_site, $nom_site, $ajouter_mot, $doc, 392 $objet, $id_objet, $id_forum){ 430 function inclure_previsu( 431 $texte, 432 $titre, 433 $url_site, 434 $nom_site, 435 $ajouter_mot, 436 $doc, 437 $objet, 438 $id_objet, 439 $id_forum 440 ) { 393 441 global $table_des_traitements; 394 442 … … 418 466 return preg_replace("@<(/?)form\b@ism", 419 467 '<\1div', 420 inclure_balise_dynamique(array('formulaires/inc-forum_previsu', 468 inclure_balise_dynamique(array( 469 'formulaires/inc-forum_previsu', 421 470 0, 422 471 array( … … 455 504 * @return array|bool 456 505 */ 457 function formulaires_forum_traiter_dist($objet, $id_objet, $id_forum, 458 $ajouter_mot, $ajouter_groupe, $forcer_previsu, $retour){ 506 function formulaires_forum_traiter_dist( 507 $objet, 508 $id_objet, 509 $id_forum, 510 $ajouter_mot, 511 $ajouter_groupe, 512 $forcer_previsu, 513 $retour 514 ) { 459 515 460 516 $forum_insert = charger_fonction('forum_insert', 'inc'); … … 462 518 // Antispam basique : 463 519 // si l'input invisible a ete renseigne, ca ne peut etre qu'un bot 464 if (strlen(_request(_request('cle_ajouter_document')))) {520 if (strlen(_request(_request('cle_ajouter_document')))) { 465 521 tracer_erreur_forum('champ interdit (nobot) rempli'); 522 466 523 return array('message_erreur' => _T('forum:erreur_enregistrement_message')); 467 524 } 468 525 469 526 if (defined('_FORUM_AUTORISER_POST_ID_FORUM') 470 AND _FORUM_AUTORISER_POST_ID_FORUM 471 AND _request('id_forum')){ 527 AND _FORUM_AUTORISER_POST_ID_FORUM 528 AND _request('id_forum') 529 ) { 472 530 $id_forum = _request('id_forum'); 473 531 } … … 476 534 477 535 478 if ($id_reponse) {536 if ($id_reponse) { 479 537 // En cas de retour sur (par exemple) {#SELF}, on ajoute quand 480 538 // meme #forum12 a la fin de l'url, sauf si un #ancre est explicite 481 if ($retour) {482 if (!strpos($retour, '#')) {539 if ($retour) { 540 if (!strpos($retour, '#')) { 483 541 $retour .= '#forum' . $id_reponse; 484 542 } 485 } 486 else { 543 } else { 487 544 // le retour par defaut envoie sur le thread, ce qui permet 488 545 // de traiter elegamment le cas des forums moderes a priori. … … 490 547 // dans le cas des forums moderes a posteriori, ce qui n'est 491 548 // pas plus mal. 492 if (function_exists('generer_url_forum')) {549 if (function_exists('generer_url_forum')) { 493 550 $retour = generer_url_forum($id_reponse); 494 } 495 else { 551 } else { 496 552 $thread = sql_fetsel('id_thread', 'spip_forum', 'id_forum=' . $id_reponse); 497 553 spip_log('id_thread=' . $thread['id_thread'], 'forum'); … … 501 557 502 558 $res = array('redirect' => $retour, 'id_forum' => $id_reponse); 503 } 504 else { 559 } else { 505 560 $res = array('message_erreur' => _T('forum:erreur_enregistrement_message')); 506 561 } -
_core_/plugins/forum/formulaires/forum_prive.php
r93092 r93612 11 11 \***************************************************************************/ 12 12 13 if (!defined("_ECRIRE_INC_VERSION")) return; 13 if (!defined("_ECRIRE_INC_VERSION")) { 14 return; 15 } 14 16 15 17 include_spip('inc/forum'); … … 17 19 /** 18 20 * Identification du formulaire poste : ne pas tenir compte du retour 21 * 19 22 * @param $objet 20 23 * @param $id_objet … … 24 27 * @return array 25 28 */ 26 function formulaires_forum_prive_identifier_dist($objet, $id_objet, $id_forum, $forcer_previsu, $statut) {29 function formulaires_forum_prive_identifier_dist($objet, $id_objet, $id_forum, $forcer_previsu, $statut) { 27 30 return array($objet, $id_objet, $id_forum, $forcer_previsu, $statut); 28 31 } … … 30 33 function formulaires_forum_prive_charger_dist($objet, $id_objet, $id_forum, $forcer_previsu, $statut, $retour = '') { 31 34 32 if (!function_exists($f ='forum_recuperer_titre'))35 if (!function_exists($f = 'forum_recuperer_titre')) { 33 36 $f = 'forum_recuperer_titre_dist'; 37 } 34 38 // si objet, il faut un titre, sinon on est dans un statut privrac/privadm qui permet un forum sans objet 35 if ($objet AND $id_objet AND !$titre = $f($objet, $id_objet,$id_forum,false))39 if ($objet AND $id_objet AND !$titre = $f($objet, $id_objet, $id_forum, false)) { 36 40 return false; 41 } 37 42 38 43 $primary = id_table_objet($objet); … … 52 57 53 58 // par défaut, on force la prévisualisation du message avant de le poster 54 if (($forcer_previsu =='non') OR (empty($forcer_previsu) AND $GLOBALS['meta']["forums_forcer_previsu"]=="non"))59 if (($forcer_previsu == 'non') OR (empty($forcer_previsu) AND $GLOBALS['meta']["forums_forcer_previsu"] == "non")) { 55 60 $forcer_previsu = 'non'; 56 else61 } else { 57 62 $forcer_previsu = 'oui'; 63 } 58 64 59 65 // pour les hidden 60 66 $script_hidden = ""; 61 foreach ($ids as $id => $v) 67 foreach ($ids as $id => $v) { 62 68 $script_hidden .= "<input type='hidden' name='$id' value='$v' />"; 63 69 } 70 64 71 $config = array(); 65 foreach (array('afficher_barre','forum_titre','forums_texte','forums_urlref') as $k)72 foreach (array('afficher_barre', 'forum_titre', 'forums_texte', 'forums_urlref') as $k) { 66 73 $config[$k] = ' '; 74 } 67 75 68 76 return array( … … 76 84 'forcer_previsu' => $forcer_previsu, 77 85 'id_forum' => $id_forum, // passer id_forum au formulaire pour lui permettre d'afficher a quoi l'internaute repond 78 '_sign' =>implode('_',$ids),86 '_sign' => implode('_', $ids), 79 87 '_autosave_id' => $ids, 80 88 ); … … 92 100 93 101 $min_length = (defined('_FORUM_LONGUEUR_MINI') ? _FORUM_LONGUEUR_MINI : 10); 94 if (strlen($texte = _request('texte'))<$min_length 95 AND !_request('ajouter_mot') AND $GLOBALS['meta']['forums_texte']=='oui' 96 ){ 97 $erreurs['texte'] = _T($min_length==10 ? 'forum:forum_attention_dix_caracteres' : 'forum:forum_attention_nb_caracteres_mini', array('min' => $min_length)); 98 } 99 else if (defined('_FORUM_LONGUEUR_MAXI') 100 AND _FORUM_LONGUEUR_MAXI > 0 101 AND strlen($texte) > _FORUM_LONGUEUR_MAXI) 102 $erreurs['texte'] = _T('forum:forum_attention_trop_caracteres', 103 array( 104 'compte' => strlen($texte), 105 'max' => _FORUM_LONGUEUR_MAXI 106 )); 107 108 if (strlen($titre=_request('titre')) < 3 109 AND $GLOBALS['meta']['forums_titre'] == 'oui') 102 if (strlen($texte = _request('texte')) < $min_length 103 AND !_request('ajouter_mot') AND $GLOBALS['meta']['forums_texte'] == 'oui' 104 ) { 105 $erreurs['texte'] = _T($min_length == 10 ? 'forum:forum_attention_dix_caracteres' : 'forum:forum_attention_nb_caracteres_mini', 106 array('min' => $min_length)); 107 } else { 108 if (defined('_FORUM_LONGUEUR_MAXI') 109 AND _FORUM_LONGUEUR_MAXI > 0 110 AND strlen($texte) > _FORUM_LONGUEUR_MAXI 111 ) { 112 $erreurs['texte'] = _T('forum:forum_attention_trop_caracteres', 113 array( 114 'compte' => strlen($texte), 115 'max' => _FORUM_LONGUEUR_MAXI 116 )); 117 } 118 } 119 120 if (strlen($titre = _request('titre')) < 3 121 AND $GLOBALS['meta']['forums_titre'] == 'oui' 122 ) { 110 123 $erreurs['titre'] = _T('forum:forum_attention_trois_caracteres'); 111 112 if (array_reduce($_POST, 'reduce_strlen', (20 * 1024)) < 0) { 124 } 125 126 if (array_reduce($_POST, 'reduce_strlen', (20*1024)) < 0) { 113 127 $erreurs['erreur_message'] = _T('forum:forum_message_trop_long'); 114 128 } 115 129 116 if (!count($erreurs) AND !_request('envoyer_message') AND !_request('confirmer_previsu_forum')){ 117 $previsu = inclure_forum_prive_previsu($texte, $titre, _request('url_site'), _request('nom_site'), _request('ajouter_mot')); 130 if (!count($erreurs) AND !_request('envoyer_message') AND !_request('confirmer_previsu_forum')) { 131 $previsu = inclure_forum_prive_previsu($texte, $titre, _request('url_site'), _request('nom_site'), 132 _request('ajouter_mot')); 118 133 $erreurs['previsu'] = $previsu; 119 134 $erreurs['message_erreur'] = ''; // on ne veut pas du message_erreur automatique … … 124 139 125 140 126 function inclure_forum_prive_previsu($texte, $titre, $url_site, $nom_site, $ajouter_mot, $doc = "") {141 function inclure_forum_prive_previsu($texte, $titre, $url_site, $nom_site, $ajouter_mot, $doc = "") { 127 142 $bouton = _T('forum:forum_message_definitif'); 128 143 include_spip('public/assembler'); … … 132 147 return preg_replace("@<(/?)form\b@ism", 133 148 '<\1div', 134 inclure_balise_dynamique(array('formulaires/inc-forum_prive_previsu', 149 inclure_balise_dynamique(array( 150 'formulaires/inc-forum_prive_previsu', 135 151 0, 136 152 array( … … 146 162 ) 147 163 ), 148 false)164 false) 149 165 ); 150 166 } … … 154 170 155 171 $forum_insert = charger_fonction('forum_insert', 'inc'); 156 $id_reponse = $forum_insert($objet, $id_objet, $id_forum, $statut);157 if ($id_reponse) {172 $id_reponse = $forum_insert($objet, $id_objet, $id_forum, $statut); 173 if ($id_reponse) { 158 174 // En cas de retour sur (par exemple) {#SELF}, on ajoute quand 159 175 // meme #forum12 a la fin de l'url, sauf si un #ancre est explicite 160 if ($retour) {161 if (!strpos($retour, '#')) 162 $retour .= '#forum' .$id_reponse;163 }164 else {176 if ($retour) { 177 if (!strpos($retour, '#')) { 178 $retour .= '#forum' . $id_reponse; 179 } 180 } else { 165 181 // le retour par defaut envoie sur le thread, ce qui permet 166 182 // de traiter elegamment le cas des forums moderes a priori. … … 170 186 if (function_exists('generer_url_forum')) { 171 187 $retour = generer_url_forum($id_reponse); 172 } 173 else { 174 $thread = sql_fetsel('id_thread', 'spip_forum', 'id_forum='.$id_reponse); 175 spip_log('id_thread='.$thread['id_thread'], 'forum'); 188 } else { 189 $thread = sql_fetsel('id_thread', 'spip_forum', 'id_forum=' . $id_reponse); 190 spip_log('id_thread=' . $thread['id_thread'], 'forum'); 176 191 $retour = generer_url_entite($thread['id_thread'], 'forum'); 177 192 } 178 193 } 179 194 180 $res = array('redirect' =>$retour,'id_forum'=>$id_forum);181 } 182 else183 $res = array('message_erreur'=>_T('forum:erreur_enregistrement_message'));195 $res = array('redirect' => $retour, 'id_forum' => $id_forum); 196 } else { 197 $res = array('message_erreur' => _T('forum:erreur_enregistrement_message')); 198 } 184 199 185 200 return $res; -
_core_/plugins/forum/forum_administrations.php
r93092 r93612 15 15 * 16 16 * @package SPIP\Forum\Installation 17 **/17 **/ 18 18 19 if (!defined("_ECRIRE_INC_VERSION")) return; 19 if (!defined("_ECRIRE_INC_VERSION")) { 20 return; 21 } 20 22 21 23 /** … … 25 27 * @param string $version_cible 26 28 */ 27 function forum_upgrade($nom_meta_base_version, $version_cible) {29 function forum_upgrade($nom_meta_base_version, $version_cible) { 28 30 29 31 // cas particulier : … … 31 33 // considerer que c'est un upgrade depuis v 1.0.0 32 34 // pour gerer l'historique des installations SPIP <=2.1 33 if (!isset($GLOBALS['meta'][$nom_meta_base_version])) {34 $trouver_table = charger_fonction('trouver_table', 'base');35 if (!isset($GLOBALS['meta'][$nom_meta_base_version])) { 36 $trouver_table = charger_fonction('trouver_table', 'base'); 35 37 $trouver_table(''); // vider le cache des descriptions ! 36 38 if ($desc = $trouver_table('spip_forum') 37 AND isset($desc['field']['id_article'])){ 38 ecrire_meta($nom_meta_base_version,'1.0.0'); 39 AND isset($desc['field']['id_article']) 40 ) { 41 ecrire_meta($nom_meta_base_version, '1.0.0'); 39 42 } 40 43 // si pas de table en base, on fera une simple creation de base … … 43 46 $maj = array(); 44 47 $maj['create'] = array( 45 array('maj_tables', array('spip_forum')),48 array('maj_tables', array('spip_forum')), 46 49 ); 47 50 $maj['1.1.0'] = array( 48 array('sql_alter', "TABLE spip_forum ADD id_objet bigint(21) DEFAULT 0 NOT NULL AFTER id_forum"),49 array('sql_alter', "TABLE spip_forum ADD objet VARCHAR (25) DEFAULT '' NOT NULL AFTER id_objet"),51 array('sql_alter', "TABLE spip_forum ADD id_objet bigint(21) DEFAULT 0 NOT NULL AFTER id_forum"), 52 array('sql_alter', "TABLE spip_forum ADD objet VARCHAR (25) DEFAULT '' NOT NULL AFTER id_objet"), 50 53 #array('sql_alter',"TABLE spip_forum DROP INDEX optimal"), 51 54 #array('sql_alter',"TABLE spip_forum ADD INDEX optimal (statut,id_parent,id_objet,objet,date_heure)"), 52 55 ); 53 56 $maj['1.1.1'] = array( 54 array('sql_update', "spip_forum", array('objet' => "'breve'",'id_objet' => 'id_breve'), 'id_breve> 0'),57 array('sql_update', "spip_forum", array('objet' => "'breve'", 'id_objet' => 'id_breve'), 'id_breve> 0'), 55 58 #array('sql_alter',"TABLE spip_forum DROP id_breve"), 56 array('sql_update', "spip_forum", array('objet' => "'article'",'id_objet' => 'id_article'), 'id_article>0'),59 array('sql_update', "spip_forum", array('objet' => "'article'", 'id_objet' => 'id_article'), 'id_article>0'), 57 60 #array('sql_alter',"TABLE spip_forum DROP id_article"), 58 array('sql_update', "spip_forum", array('objet' => "'site'",'id_objet' => 'id_syndic'), 'id_syndic>0'),61 array('sql_update', "spip_forum", array('objet' => "'site'", 'id_objet' => 'id_syndic'), 'id_syndic>0'), 59 62 #array('sql_alter',"TABLE spip_forum DROP id_syndic"), 60 array('sql_update', "spip_forum", array('objet' => "'message'",'id_objet' => 'id_message'), 'id_message>0'),63 array('sql_update', "spip_forum", array('objet' => "'message'", 'id_objet' => 'id_message'), 'id_message>0'), 61 64 #array('sql_alter',"TABLE spip_forum DROP id_message"), 62 array('sql_update', "spip_forum", array('objet' => "'rubrique'",'id_objet' => 'id_rubrique'), 'id_rubrique>0'),65 array('sql_update', "spip_forum", array('objet' => "'rubrique'", 'id_objet' => 'id_rubrique'), 'id_rubrique>0'), 63 66 #array('sql_alter',"TABLE spip_forum DROP id_rubrique"), 64 67 ); … … 66 69 # champ ip sur 40 car (compat IPv6) 67 70 $maj['1.2.0'] = array( 68 array('sql_alter', "TABLE spip_forum CHANGE ip ip VARCHAR(40) DEFAULT '' NOT NULL"),71 array('sql_alter', "TABLE spip_forum CHANGE ip ip VARCHAR(40) DEFAULT '' NOT NULL"), 69 72 ); 70 73 # rejouer la suppression/creation de l'index optimal … … 72 75 # en raison d'un DROP KEY au lieu de DROP INDEX 73 76 $maj['1.2.1'] = array( 74 array('sql_alter', "TABLE spip_forum DROP INDEX optimal"),75 array('sql_alter', "TABLE spip_forum ADD INDEX optimal (statut,id_parent,id_objet,objet,date_heure)"),76 array('sql_alter', "TABLE spip_forum DROP id_breve"),77 array('sql_alter', "TABLE spip_forum DROP id_article"),78 array('sql_alter', "TABLE spip_forum DROP id_syndic"),79 array('sql_alter', "TABLE spip_forum DROP id_message"),80 array('sql_alter', "TABLE spip_forum DROP id_rubrique"),77 array('sql_alter', "TABLE spip_forum DROP INDEX optimal"), 78 array('sql_alter', "TABLE spip_forum ADD INDEX optimal (statut,id_parent,id_objet,objet,date_heure)"), 79 array('sql_alter', "TABLE spip_forum DROP id_breve"), 80 array('sql_alter', "TABLE spip_forum DROP id_article"), 81 array('sql_alter', "TABLE spip_forum DROP id_syndic"), 82 array('sql_alter', "TABLE spip_forum DROP id_message"), 83 array('sql_alter', "TABLE spip_forum DROP id_rubrique"), 81 84 ); 82 85 $maj['1.2.2'] = array( 83 array('ecrire_meta','forum_prive_objets',($GLOBALS['meta']['forum_prive_objets']=='non')?'':'spip_articles,spip_breves,spip_syndic'), 86 array( 87 'ecrire_meta', 88 'forum_prive_objets', 89 ($GLOBALS['meta']['forum_prive_objets'] == 'non') ? '' : 'spip_articles,spip_breves,spip_syndic' 90 ), 84 91 ); 85 86 92 87 93 -
_core_/plugins/forum/forum_autoriser.php
r93092 r93612 12 12 13 13 /** 14 * Définit les autorisations du plugin forum 14 * Définit les autorisations du plugin forum 15 15 * 16 16 * @package SPIP\Forum\Autorisations 17 **/ 18 if (!defined("_ECRIRE_INC_VERSION")) return; 17 **/ 18 if (!defined("_ECRIRE_INC_VERSION")) { 19 return; 20 } 19 21 20 22 /** 21 23 * Fonction d'appel pour le pipeline 24 * 22 25 * @pipeline autoriser 23 26 */ 24 function forum_autoriser() {}25 26 /** 27 * Autorisation de voir l'élément «forums internes» dans le menu 28 * 29 * @param string $faire Action demandée 30 * @param string $type 31 * @param int $idIdentifiant de l'objet32 * @param array $quiDescription de l'auteur demandant l'autorisation33 * @param array $optOptions de cette autorisation34 * @return bool true s'il a le droit, false sinon 35 **/36 function autoriser_foruminternesuivi_menu_dist($faire, $type = '', $id = 0, $qui = NULL, $opt = NULL){27 function forum_autoriser() { } 28 29 /** 30 * Autorisation de voir l'élément «forums internes» dans le menu 31 * 32 * @param string $faire Action demandée 33 * @param string $type Type d'objet sur lequel appliquer l'action 34 * @param int $id Identifiant de l'objet 35 * @param array $qui Description de l'auteur demandant l'autorisation 36 * @param array $opt Options de cette autorisation 37 * @return bool true s'il a le droit, false sinon 38 **/ 39 function autoriser_foruminternesuivi_menu_dist($faire, $type = '', $id = 0, $qui = null, $opt = null) { 37 40 if ((($GLOBALS['meta']['forum_prive'] == 'non') && ($GLOBALS['meta']['forum_prive_admin'] == 'non')) 38 OR (($GLOBALS['meta']['forum_prive'] == 'non') && ($qui['statut'] == '1comite'))) 41 OR (($GLOBALS['meta']['forum_prive'] == 'non') && ($qui['statut'] == '1comite')) 42 ) { 39 43 return false; 40 return true; 41 } 42 43 /** 44 * Autorisation de voir l'élément «suivi des forums» dans le menu 45 * 46 * @param string $faire Action demandée 47 * @param string $type Type d'objet sur lequel appliquer l'action 48 * @param int $id Identifiant de l'objet 49 * @param array $qui Description de l'auteur demandant l'autorisation 50 * @param array $opt Options de cette autorisation 51 * @return bool true s'il a le droit, false sinon 52 **/ 53 function autoriser_forumreactions_menu_dist($faire, $type = '', $id = 0, $qui = NULL, $opt = NULL){ 54 return (sql_countsel('spip_forum') && autoriser('publierdans','rubrique',_request('id_rubrique'))); 55 } 56 57 58 /** 59 * Autorisation de modérer un message de forum 44 } 45 46 return true; 47 } 48 49 /** 50 * Autorisation de voir l'élément «suivi des forums» dans le menu 51 * 52 * @param string $faire Action demandée 53 * @param string $type Type d'objet sur lequel appliquer l'action 54 * @param int $id Identifiant de l'objet 55 * @param array $qui Description de l'auteur demandant l'autorisation 56 * @param array $opt Options de cette autorisation 57 * @return bool true s'il a le droit, false sinon 58 **/ 59 function autoriser_forumreactions_menu_dist($faire, $type = '', $id = 0, $qui = null, $opt = null) { 60 return (sql_countsel('spip_forum') && autoriser('publierdans', 'rubrique', _request('id_rubrique'))); 61 } 62 63 64 /** 65 * Autorisation de modérer un message de forum 60 66 * 61 67 * Il faut l'autorisation de modifier l'objet correspondant … … 64 70 * 65 71 * @see autoriser_forum_moderer_dist() 66 * 67 * @param string $faire Action demandée 68 * @param string $type 69 * @param int $idIdentifiant de l'objet70 * @param array $quiDescription de l'auteur demandant l'autorisation71 * @param array $optOptions de cette autorisation72 * @return bool true s'il a le droit, false sinon 73 **/72 * 73 * @param string $faire Action demandée 74 * @param string $type Type d'objet sur lequel appliquer l'action 75 * @param int $id Identifiant de l'objet 76 * @param array $qui Description de l'auteur demandant l'autorisation 77 * @param array $opt Options de cette autorisation 78 * @return bool true s'il a le droit, false sinon 79 **/ 74 80 function autoriser_modererforum_dist($faire, $type, $id, $qui, $opt) { 75 return $type ? autoriser('modifier', $type, $id, $qui, $opt) :autoriser('moderer', 'forum', 0, $qui, $opt);81 return $type ? autoriser('modifier', $type, $id, $qui, $opt) : autoriser('moderer', 'forum', 0, $qui, $opt); 76 82 } 77 83 78 84 /** 79 85 * Autorisation de changer le statut d'un message de forum 80 * 86 * 81 87 * Seulement sur les objets qu'on a le droit de modérer. 82 88 * 83 89 * @param string $faire Action demandée 84 * @param string $type Type d'objet sur lequel appliquer l'action 85 * @param int $id Identifiant de l'objet 86 * @param array $qui Description de l'auteur demandant l'autorisation 87 * @param array $opt Options de cette autorisation 88 * @return bool true s'il a le droit, false sinon 89 */ 90 function autoriser_forum_instituer_dist($faire, $type, $id, $qui, $opt){ 91 if (!intval($id)) return autoriser('moderer','forum'); 92 $row = sql_fetsel('objet,id_objet','spip_forum','id_forum='.intval($id)); 93 return $row?autoriser('modererforum',$row['objet'],$row['id_objet'],$qui,$opt):false; 90 * @param string $type Type d'objet sur lequel appliquer l'action 91 * @param int $id Identifiant de l'objet 92 * @param array $qui Description de l'auteur demandant l'autorisation 93 * @param array $opt Options de cette autorisation 94 * @return bool true s'il a le droit, false sinon 95 */ 96 function autoriser_forum_instituer_dist($faire, $type, $id, $qui, $opt) { 97 if (!intval($id)) { 98 return autoriser('moderer', 'forum'); 99 } 100 $row = sql_fetsel('objet,id_objet', 'spip_forum', 'id_forum=' . intval($id)); 101 102 return $row ? autoriser('modererforum', $row['objet'], $row['id_objet'], $qui, $opt) : false; 94 103 } 95 104 96 105 /** 97 106 * Autorisation par défaut de modérer un message de forum 98 * 107 * 99 108 * Si l'on connait l'objet, on délègue à modererforum, sinon il faut 100 109 * être administrateur … … 103 112 * 104 113 * @param string $faire Action demandée 105 * @param string $type 106 * @param int $idIdentifiant de l'objet107 * @param array $quiDescription de l'auteur demandant l'autorisation108 * @param array $optOptions de cette autorisation109 * @return bool true s'il a le droit, false sinon 110 */ 111 function autoriser_forum_moderer_dist($faire, $type, $id, $qui, $opt) {114 * @param string $type Type d'objet sur lequel appliquer l'action 115 * @param int $id Identifiant de l'objet 116 * @param array $qui Description de l'auteur demandant l'autorisation 117 * @param array $opt Options de cette autorisation 118 * @return bool true s'il a le droit, false sinon 119 */ 120 function autoriser_forum_moderer_dist($faire, $type, $id, $qui, $opt) { 112 121 // si on fournit un id : deleguer a modererforum sur l'objet concerne 113 if ($id) {122 if ($id) { 114 123 include_spip('inc/forum'); 115 124 if ($racine = racine_forum($id) 116 AND list($objet,$id_objet,) = $racine 117 AND $objet){ 118 return autoriser('modererforum',$objet,$id_objet); 125 AND list($objet, $id_objet,) = $racine 126 AND $objet 127 ) { 128 return autoriser('modererforum', $objet, $id_objet); 119 129 } 120 130 } 121 131 122 132 // sinon : admins uniquement 123 return $qui['statut'] =='0minirezo'; // les admins restreints peuvent moderer leurs messages133 return $qui['statut'] == '0minirezo'; // les admins restreints peuvent moderer leurs messages 124 134 } 125 135 … … 127 137 /** 128 138 * Autorisation de modifier un message de forum 129 * 139 * 130 140 * Jamais 131 141 * 132 142 * @param string $faire Action demandée 133 * @param string $type 134 * @param int $idIdentifiant de l'objet135 * @param array $quiDescription de l'auteur demandant l'autorisation136 * @param array $optOptions de cette autorisation143 * @param string $type Type d'objet sur lequel appliquer l'action 144 * @param int $id Identifiant de l'objet 145 * @param array $qui Description de l'auteur demandant l'autorisation 146 * @param array $opt Options de cette autorisation 137 147 * @return bool true s'il a le droit, false sinon 138 148 */ … … 143 153 /** 144 154 * Autorisation de consulter le forum des administrateurs 145 * 155 * 146 156 * Il faut être administrateur (y compris restreint) 147 157 * 148 158 * @param string $faire Action demandée 149 * @param string $type 150 * @param int $idIdentifiant de l'objet151 * @param array $quiDescription de l'auteur demandant l'autorisation152 * @param array $optOptions de cette autorisation159 * @param string $type Type d'objet sur lequel appliquer l'action 160 * @param int $id Identifiant de l'objet 161 * @param array $qui Description de l'auteur demandant l'autorisation 162 * @param array $opt Options de cette autorisation 153 163 * @return bool true s'il a le droit, false sinon 154 164 */ … … 161 171 * 162 172 * Jamais 163 * 164 * @param string $faire Action demandée 165 * @param string $type 166 * @param int $idIdentifiant de l'objet167 * @param array $quiDescription de l'auteur demandant l'autorisation168 * @param array $optOptions de cette autorisation173 * 174 * @param string $faire Action demandée 175 * @param string $type Type d'objet sur lequel appliquer l'action 176 * @param int $id Identifiant de l'objet 177 * @param array $qui Description de l'auteur demandant l'autorisation 178 * @param array $opt Options de cette autorisation 169 179 * @return bool true s'il a le droit, false sinon 170 180 */ … … 177 187 * 178 188 * Toujours 179 * 180 * @param string $faire Action demandée 181 * @param string $type 182 * @param int $idIdentifiant de l'objet183 * @param array $quiDescription de l'auteur demandant l'autorisation184 * @param array $optOptions de cette autorisation189 * 190 * @param string $faire Action demandée 191 * @param string $type Type d'objet sur lequel appliquer l'action 192 * @param int $id Identifiant de l'objet 193 * @param array $qui Description de l'auteur demandant l'autorisation 194 * @param array $opt Options de cette autorisation 185 195 * @return bool true s'il a le droit, false sinon 186 196 */ … … 193 203 * 194 204 * Toujours 195 * 196 * @param string $faire Action demandée 197 * @param string $type 198 * @param int $idIdentifiant de l'objet199 * @param array $quiDescription de l'auteur demandant l'autorisation200 * @param array $optOptions de cette autorisation205 * 206 * @param string $faire Action demandée 207 * @param string $type Type d'objet sur lequel appliquer l'action 208 * @param int $id Identifiant de l'objet 209 * @param array $qui Description de l'auteur demandant l'autorisation 210 * @param array $opt Options de cette autorisation 201 211 * @return bool true s'il a le droit, false sinon 202 212 */ … … 209 219 * 210 220 * Il faut être administrateur (y compris restreint) 211 * 212 * @param string $faire Action demandée 213 * @param string $type 214 * @param int $idIdentifiant de l'objet215 * @param array $quiDescription de l'auteur demandant l'autorisation216 * @param array $optOptions de cette autorisation221 * 222 * @param string $faire Action demandée 223 * @param string $type Type d'objet sur lequel appliquer l'action 224 * @param int $id Identifiant de l'objet 225 * @param array $qui Description de l'auteur demandant l'autorisation 226 * @param array $opt Options de cette autorisation 217 227 * @return bool true s'il a le droit, false sinon 218 228 */ 219 229 function autoriser_forumadmin_participer_dist($faire, $type, $id, $qui, $opt) { 220 return ($GLOBALS['meta']['forum_prive_admin'] == 'oui') && $qui['statut'] =='0minirezo';230 return ($GLOBALS['meta']['forum_prive_admin'] == 'oui') && $qui['statut'] == '0minirezo'; 221 231 } 222 232 … … 228 238 * 229 239 * @param string $faire Action demandée 230 * @param string $type 231 * @param int $idIdentifiant de l'objet232 * @param array $quiDescription de l'auteur demandant l'autorisation233 * @param array $optOptions de cette autorisation240 * @param string $type Type d'objet sur lequel appliquer l'action 241 * @param int $id Identifiant de l'objet 242 * @param array $qui Description de l'auteur demandant l'autorisation 243 * @param array $opt Options de cette autorisation 234 244 * @return bool true s'il a le droit, false sinon 235 245 */ -
_core_/plugins/forum/forum_fonctions.php
r79783 r93612 12 12 13 13 /** 14 * Définit les fonctions utiles du plugin forum 14 * Définit les fonctions utiles du plugin forum 15 15 * 16 16 * @package SPIP\Forum\Fonctions 17 **/17 **/ 18 18 19 if (!defined("_ECRIRE_INC_VERSION")) return; 19 if (!defined("_ECRIRE_INC_VERSION")) { 20 return; 21 } 20 22 21 23 … … 37 39 * @filtre 38 40 * @see balise_PARAMETRES_FORUM_dist() 39 * 41 * 40 42 * @param string $parametres 41 43 * @return string URL de la page de réponse 42 44 */ 43 45 function filtre_url_reponse_forum($parametres) { 44 if (!$parametres) return ''; 46 if (!$parametres) { 47 return ''; 48 } 49 45 50 return generer_url_public('forum', $parametres); 46 51 } … … 49 54 * Un filtre qui, étant donné un `#PARAMETRES_FORUM`, retourne une URL de suivi rss 50 55 * dudit forum 51 * 56 * 52 57 * Attention : appliqué à un `#PARAMETRES_FORUM` complexe (`id_article=x&id_forum=y`) 53 58 * ça retourne une URL de suivi du thread `y` (que le thread existe ou non) … … 55 60 * @filtre 56 61 * @see balise_PARAMETRES_FORUM_dist() 57 * 62 * 58 63 * @param string $param 59 64 * @return string URL pour le suivi RSS 60 65 */ 61 66 function filtre_url_rss_forum($param) { 62 if (!preg_match(',.*(id_(\w*?))=([0-9]+),S', $param, $regs)) return ''; 63 list(,$k,$t,$v) = $regs; 64 if ($t == 'forum') $k = 'id_' . ($t = 'thread'); 67 if (!preg_match(',.*(id_(\w*?))=([0-9]+),S', $param, $regs)) { 68 return ''; 69 } 70 list(, $k, $t, $v) = $regs; 71 if ($t == 'forum') { 72 $k = 'id_' . ($t = 'thread'); 73 } 74 65 75 return generer_url_public("rss_forum_$t", array($k => $v)); 66 76 } … … 75 85 * 76 86 * @see forum_declarer_tables_interfaces() 77 * 87 * 78 88 * @param string $texte 79 89 * @return string 80 **/ 81 function interdit_html($texte){ 82 if (defined('_INTERDIRE_TEXTE_HTML')) 83 $texte = str_replace("<","<",$texte); 90 **/ 91 function interdit_html($texte) { 92 if (defined('_INTERDIRE_TEXTE_HTML')) { 93 $texte = str_replace("<", "<", $texte); 94 } 95 84 96 return $texte; 85 97 } 98 86 99 ?> -
_core_/plugins/forum/forum_ieconfig.php
r69933 r93612 3 3 /** 4 4 * Déclarations des configurations qui peuvent être sauvegardées 5 * 5 * 6 6 * @package SPIP\Forum\Pipelines 7 **/7 **/ 8 8 9 if (!defined("_ECRIRE_INC_VERSION")) return; 9 if (!defined("_ECRIRE_INC_VERSION")) { 10 return; 11 } 10 12 11 13 /** … … 16 18 * @param array $table 17 19 * Déclaration des sauvegardes 18 * @return array 20 * @return array 19 21 * Déclaration des sauvegardes complétées 20 **/21 function forum_ieconfig_metas($table) {22 **/ 23 function forum_ieconfig_metas($table) { 22 24 $table['forums_contenu']['titre'] = _T('forum:titre_forum'); 23 25 $table['forums_contenu']['icone'] = 'forum-public-16.png'; … … 32 34 $table['forums_prives']['icone'] = 'forum-interne-16.png'; 33 35 $table['forums_prives']['metas_brutes'] = 'forum_prive_objets,forum_prive,forum_prive_admin'; 34 36 35 37 return $table; 36 38 } -
_core_/plugins/forum/forum_pipelines.php
r93500 r93612 15 15 * 16 16 * @package SPIP\Forum\Pipelines 17 **/ 18 19 if (!defined("_ECRIRE_INC_VERSION")) return; 17 **/ 18 19 if (!defined("_ECRIRE_INC_VERSION")) { 20 return; 21 } 20 22 21 23 /** … … 25 27 * @return string 26 28 */ 27 function forum_accueil_encours($texte) {29 function forum_accueil_encours($texte) { 28 30 // si aucun autre objet n'est a valider, on ne dit rien sur les forum 29 31 if ($GLOBALS['visiteur_session']['statut'] == '0minirezo') { … … 31 33 $cpt = sql_countsel("spip_forum", "statut='prop'"); 32 34 if ($cpt) { 33 if ($cpt>1) 34 $lien = _T('forum:info_liens_syndiques_3')." "._T('forum:info_liens_syndiques_4'); 35 else 36 $lien = _T('forum:info_liens_syndiques_5')." "._T('forum:info_liens_syndiques_6'); 37 $lien = "<small>$cpt $lien " ._T('forum:info_liens_syndiques_7'). "</small>"; 38 if ($GLOBALS['connect_toutes_rubriques']) 39 $lien = "<a href='" . generer_url_ecrire("controler_forum","statut=prop") . "' style='color: black;'>". $lien . ".</a>"; 35 if ($cpt > 1) { 36 $lien = _T('forum:info_liens_syndiques_3') . " " . _T('forum:info_liens_syndiques_4'); 37 } else { 38 $lien = _T('forum:info_liens_syndiques_5') . " " . _T('forum:info_liens_syndiques_6'); 39 } 40 $lien = "<small>$cpt $lien " . _T('forum:info_liens_syndiques_7') . "</small>"; 41 if ($GLOBALS['connect_toutes_rubriques']) { 42 $lien = "<a href='" . generer_url_ecrire("controler_forum", 43 "statut=prop") . "' style='color: black;'>" . $lien . ".</a>"; 44 } 40 45 $texte .= "\n<br />" . $lien; 41 46 } 42 47 if (strlen($texte) AND $GLOBALS['meta']['forum_prive_objets'] != 'non') { 43 48 $cpt2 = sql_countsel("spip_articles", "statut='prop'"); 44 if ($cpt2) 49 if ($cpt2) { 45 50 $texte = _T('forum:texte_en_cours_validation_forum') . $texte; 51 } 46 52 } 47 53 } … … 57 63 * @return string 58 64 */ 59 function forum_accueil_informations($texte) {65 function forum_accueil_informations($texte) { 60 66 include_spip('base/abstract_sql'); 61 $q = sql_select('COUNT(*) AS cnt, statut', 'spip_forum', sql_in('statut', array('publie', 'prop')), 'statut', '','', "COUNT(*)<>0"); 62 63 $where = count($GLOBALS['connect_id_rubrique']) ? sql_in('id_rubrique', $GLOBALS['connect_id_rubrique']) : ''; 67 $q = sql_select('COUNT(*) AS cnt, statut', 'spip_forum', sql_in('statut', array('publie', 'prop')), 'statut', '', '', 68 "COUNT(*)<>0"); 69 70 $where = count($GLOBALS['connect_id_rubrique']) ? sql_in('id_rubrique', $GLOBALS['connect_id_rubrique']) : ''; 64 71 $cpt = array(); 65 72 $cpt2 = array(); 66 73 $defaut = $where ? '0/' : ''; 67 while ($row = sql_fetch($q)) {68 69 74 while ($row = sql_fetch($q)) { 75 $cpt[$row['statut']] = $row['cnt']; 76 $cpt2[$row['statut']] = $defaut; 70 77 } 71 78 72 79 if ($cpt) { 73 80 if ($where) { 74 75 76 77 while($row = sql_fetch($q)) {81 include_spip('inc/forum'); 82 list($f, $w) = critere_statut_controle_forum('public'); 83 $q = sql_select("COUNT(*) AS cnt, F.statut", "$f", "$w ", "F.statut"); 84 while ($row = sql_fetch($q)) { 78 85 $r = $row['statut']; 79 86 $cpt2[$r] = intval($row['cnt']) . '/'; … … 90 97 } 91 98 $texte .= "<ul class='liste-items'>"; 92 if (isset($cpt['prop'])) $texte .= "<li class='item'>"._T("texte_statut_attente_validation").": ".$cpt2['prop'] .$cpt['prop'] . '</li>'; 93 if (isset($cpt['publie'])) $texte .= "<li class='item'>"._T("texte_statut_publies").": ".$cpt2['publie'] .$cpt['publie'] .'</li>'; 99 if (isset($cpt['prop'])) { 100 $texte .= "<li class='item'>" . _T("texte_statut_attente_validation") . ": " . $cpt2['prop'] . $cpt['prop'] . '</li>'; 101 } 102 if (isset($cpt['publie'])) { 103 $texte .= "<li class='item'>" . _T("texte_statut_publies") . ": " . $cpt2['publie'] . $cpt['publie'] . '</li>'; 104 } 94 105 $texte .= "</ul>"; 95 106 $texte .= "</div>"; 96 107 } 108 97 109 return $texte; 98 110 } … … 104 116 * @return array 105 117 */ 106 function forum_afficher_fiche_objet($flux) {118 function forum_afficher_fiche_objet($flux) { 107 119 if ($type = $flux['args']['type'] 108 AND $table_sql = table_objet_sql($type) 109 AND in_array($table_sql,explode(',',$GLOBALS['meta']['forum_prive_objets']))){ 120 AND $table_sql = table_objet_sql($type) 121 AND in_array($table_sql, explode(',', $GLOBALS['meta']['forum_prive_objets'])) 122 ) { 110 123 $id = $flux['args']['id']; 111 124 $contexte = array_merge($flux['args']['contexte'], 112 125 array( 113 'objet' =>$type,114 'id_objet' =>$id,115 'quoi' =>'interne',116 'statut' =>'prive'126 'objet' => $type, 127 'id_objet' => $id, 128 'quoi' => 'interne', 129 'statut' => 'prive' 117 130 ) 118 131 ); 119 $flux['data'] .= recuperer_fond('prive/squelettes/inclure/discuter_forum', $contexte,array('ajax'=>true));120 } 121 if (($type = $flux['args']['type']) =='rubrique'){132 $flux['data'] .= recuperer_fond('prive/squelettes/inclure/discuter_forum', $contexte, array('ajax' => true)); 133 } 134 if (($type = $flux['args']['type']) == 'rubrique') { 122 135 $id_rubrique = $flux['args']['id']; 123 if (autoriser('publierdans','rubrique',$id_rubrique) 124 AND !sql_getfetsel('id_parent','spip_rubriques','id_rubrique='.intval($id_rubrique))) { 136 if (autoriser('publierdans', 'rubrique', $id_rubrique) 137 AND !sql_getfetsel('id_parent', 'spip_rubriques', 'id_rubrique=' . intval($id_rubrique)) 138 ) { 125 139 include_spip('inc/forum'); 126 140 list($from, $where) = critere_statut_controle_forum('prop', $id_rubrique); 127 141 $n_forums = sql_countsel($from, $where); 128 } 129 else 142 } else { 130 143 $n_forums = 0; 131 if ($n_forums) 132 $flux['data'] .= icone_verticale(_T('forum:icone_suivi_forum', array('nb_forums' => $n_forums)), generer_url_ecrire("controler_forum","objet=article&id_secteur=$id_rubrique&statut=prop"), "forum-24.png", "", 'center'); 133 } 144 } 145 if ($n_forums) { 146 $flux['data'] .= icone_verticale(_T('forum:icone_suivi_forum', array('nb_forums' => $n_forums)), 147 generer_url_ecrire("controler_forum", "objet=article&id_secteur=$id_rubrique&statut=prop"), "forum-24.png", "", 148 'center'); 149 } 150 } 151 134 152 return $flux; 135 153 } … … 141 159 * @return array 142 160 */ 143 function forum_afficher_config_objet($flux) {161 function forum_afficher_config_objet($flux) { 144 162 if (($type = $flux['args']['type']) 145 AND $id = $flux['args']['id']){ 163 AND $id = $flux['args']['id'] 164 ) { 146 165 if (autoriser('modererforum', $type, $id)) { 147 166 $id_table_objet = id_table_objet($type); 148 $flux['data'] .= recuperer_fond("prive/objets/configurer/moderation",array('id_objet'=>$id,'objet'=> objet_type(table_objet($type)))); 149 } 150 } 167 $flux['data'] .= recuperer_fond("prive/objets/configurer/moderation", 168 array('id_objet' => $id, 'objet' => objet_type(table_objet($type)))); 169 } 170 } 171 151 172 return $flux; 152 173 } … … 158 179 * @return array 159 180 */ 160 function forum_afficher_message_statut_objet($flux) {161 if ($type = $flux['args']['type'] =='article'){181 function forum_afficher_message_statut_objet($flux) { 182 if ($type = $flux['args']['type'] == 'article') { 162 183 $statut = $flux['args']['statut']; 163 184 if ($GLOBALS['meta']['forum_prive_objets'] != 'non' 164 AND $statut == 'prop') 165 $flux['data'] .= "<p class='article_prop'>"._T('forum:text_article_propose_publication_forum').'</p>'; 166 } 185 AND $statut == 'prop' 186 ) { 187 $flux['data'] .= "<p class='article_prop'>" . _T('forum:text_article_propose_publication_forum') . '</p>'; 188 } 189 } 190 167 191 return $flux; 168 192 } … … 174 198 * @return array 175 199 */ 176 function forum_boite_infos($flux){ 177 if ($flux['args']['type']=='rubrique' 178 AND $id_rubrique = $flux['args']['id']){ 179 if (autoriser('publierdans','rubrique',$id_rubrique) 180 // [doc] d'ou il vient ce row ? 181 AND (!isset($flux['args']['row']['id_parent']) OR !$flux['args']['row']['id_parent'])) { 200 function forum_boite_infos($flux) { 201 if ($flux['args']['type'] == 'rubrique' 202 AND $id_rubrique = $flux['args']['id'] 203 ) { 204 if (autoriser('publierdans', 'rubrique', $id_rubrique) 205 // [doc] d'ou il vient ce row ? 206 AND (!isset($flux['args']['row']['id_parent']) OR !$flux['args']['row']['id_parent']) 207 ) { 182 208 include_spip('inc/forum'); 183 209 list($from, $where) = critere_statut_controle_forum('prop', $id_rubrique); 184 210 $n_forums = sql_countsel($from, $where); 185 } 186 else 211 } else { 187 212 $n_forums = 0; 188 if ($n_forums){ 189 $aff = "<p class='forums'>".singulier_ou_pluriel($n_forums, "forum:info_1_message_forum", "forum:info_nb_messages_forum").'</p>'; 190 if (($pos = strpos($flux['data'],'<!--nb_elements-->'))!==FALSE) 191 $flux['data'] = substr($flux['data'],0,$pos) . $aff . substr($flux['data'],$pos); 192 else 213 } 214 if ($n_forums) { 215 $aff = "<p class='forums'>" . singulier_ou_pluriel($n_forums, "forum:info_1_message_forum", 216 "forum:info_nb_messages_forum") . '</p>'; 217 if (($pos = strpos($flux['data'], '<!--nb_elements-->')) !== false) { 218 $flux['data'] = substr($flux['data'], 0, $pos) . $aff . substr($flux['data'], $pos); 219 } else { 193 220 $flux['data'] .= $aff; 194 } 195 } 196 elseif ($flux['args']['type']=='auteur' 197 AND $id_auteur = $flux['args']['id']){ 198 if ($nb = sql_countsel('spip_forum',"statut!='poubelle' AND id_auteur=".intval($id_auteur))){ 199 $nb = "<div>". singulier_ou_pluriel($nb, "forum:info_1_message_forum", "forum:info_nb_messages_forum") . "</div>"; 200 if ($p = strpos($flux['data'],"<!--nb_elements-->")) 201 $flux['data'] = substr_replace($flux['data'],$nb,$p,0); 202 } 203 } 221 } 222 } 223 } elseif ($flux['args']['type'] == 'auteur' 224 AND $id_auteur = $flux['args']['id'] 225 ) { 226 if ($nb = sql_countsel('spip_forum', "statut!='poubelle' AND id_auteur=" . intval($id_auteur))) { 227 $nb = "<div>" . singulier_ou_pluriel($nb, "forum:info_1_message_forum", 228 "forum:info_nb_messages_forum") . "</div>"; 229 if ($p = strpos($flux['data'], "<!--nb_elements-->")) { 230 $flux['data'] = substr_replace($flux['data'], $nb, $p, 0); 231 } 232 } 233 } 234 204 235 return $flux; 205 236 } … … 212 243 * @return array 213 244 */ 214 function forum_compter_contributions_auteur($flux) {245 function forum_compter_contributions_auteur($flux) { 215 246 $id_auteur = intval($flux['args']['id_auteur']); 216 if ($cpt = sql_countsel("spip_forum AS F", "F.id_auteur=" .intval($flux['args']['id_auteur']))){247 if ($cpt = sql_countsel("spip_forum AS F", "F.id_auteur=" . intval($flux['args']['id_auteur']))) { 217 248 // manque "1 message de forum" 218 $contributions = singulier_ou_pluriel($cpt, 'forum:info_1_message_forum','forum:info_nb_messages_forum');249 $contributions = singulier_ou_pluriel($cpt, 'forum:info_1_message_forum', 'forum:info_nb_messages_forum'); 219 250 $flux['data'][] = $contributions; 220 251 } 252 221 253 return $flux; 222 254 } … … 228 260 * @return array 229 261 */ 230 function forum_configurer_liste_metas($metas) {231 $metas['mots_cles_forums'] = 262 function forum_configurer_liste_metas($metas) { 263 $metas['mots_cles_forums'] = 'non'; 232 264 $metas['forums_titre'] = 'oui'; 233 265 $metas['forums_texte'] = 'oui'; … … 245 277 246 278 247 248 279 /** 249 280 * Optimiser la base de donnée en supprimant les forums orphelins … … 252 283 * @return array 253 284 */ 254 function forum_optimiser_base_disparus($flux) {285 function forum_optimiser_base_disparus($flux) { 255 286 $n = &$flux['data']; 256 287 $mydate = $flux['args']['date']; 257 288 # les forums lies a une id_objet inexistant 258 $r = sql_select("DISTINCT objet", 'spip_forum');259 while ($t = sql_fetch($r)) {289 $r = sql_select("DISTINCT objet", 'spip_forum'); 290 while ($t = sql_fetch($r)) { 260 291 if ($type = $t['objet']) { 261 292 $spip_table_objet = table_objet_sql($type); … … 263 294 # les forums lies a un objet inexistant 264 295 $res = sql_select("forum.id_forum AS id", 265 296 "spip_forum AS forum 266 297 LEFT JOIN $spip_table_objet AS O 267 298 ON O.$id_table_objet=forum.id_objet", 268 "forum.objet=".sql_quote($type)." AND O.$id_table_objet IS NULL AND forum.id_objet>0");269 270 $n += optimiser_sansref('spip_forum', 'id_forum', $res);299 "forum.objet=" . sql_quote($type) . " AND O.$id_table_objet IS NULL AND forum.id_objet>0"); 300 301 $n += optimiser_sansref('spip_forum', 'id_forum', $res); 271 302 } 272 303 } … … 275 306 // Forums 276 307 // 277 sql_delete("spip_forum", "statut=" .sql_quote('redac')." AND maj < ".sql_quote($mydate));308 sql_delete("spip_forum", "statut=" . sql_quote('redac') . " AND maj < " . sql_quote($mydate)); 278 309 279 310 // nettoyer les documents des forums en spam&poubelle pour eviter de sortir des quota disques 280 311 // bizarrement on ne nettoie jamais les messages eux meme ? 281 312 include_spip('action/editer_liens'); 282 if (objet_associable('document')){ 283 $res = sql_select('L.id_document,F.id_forum',"spip_documents_liens AS L JOIN spip_forum AS F ON (F.id_forum=L.id_objet AND L.objet='forum')","F.statut IN ('off','spam')"); 284 while ($row = sql_fetch($res)){ 313 if (objet_associable('document')) { 314 $res = sql_select('L.id_document,F.id_forum', 315 "spip_documents_liens AS L JOIN spip_forum AS F ON (F.id_forum=L.id_objet AND L.objet='forum')", 316 "F.statut IN ('off','spam')"); 317 while ($row = sql_fetch($res)) { 285 318 include_spip('inc/autoriser'); 286 319 // si un seul lien (ce forum donc), on supprime le document 287 320 // si un document est attache a plus d'un forum, c'est un cas bizarre ou gere a la main 288 321 // on ne touche a rien ! 289 if (count(objet_trouver_liens(array('document' =>$row['id_document']),'*'))==1){290 autoriser_exception('supprimer', 'document',$row['id_document']);291 if ($supprimer_document = charger_fonction('supprimer_document', 'action',true))322 if (count(objet_trouver_liens(array('document' => $row['id_document']), '*')) == 1) { 323 autoriser_exception('supprimer', 'document', $row['id_document']); 324 if ($supprimer_document = charger_fonction('supprimer_document', 'action', true)) { 292 325 $supprimer_document($row['id_document']); 326 } 293 327 } 294 328 } … … 305 339 if (!defined('_CNIL_PERIODE')) { 306 340 define('_CNIL_PERIODE', 3600*24*31*4); 307 } 341 } 308 342 if (_CNIL_PERIODE) { 309 $critere_cnil = 'date_heure<"' .date('Y-m-d', time()-_CNIL_PERIODE).'"'343 $critere_cnil = 'date_heure<"' . date('Y-m-d', time()-_CNIL_PERIODE) . '"' 310 344 . ' AND statut != "spam"' 311 345 . ' AND (ip LIKE "%.%" OR ip LIKE "%:%")'; # ipv4 ou ipv6 … … 313 347 $c = sql_countsel('spip_forum', $critere_cnil); 314 348 315 if ($c >0) {349 if ($c > 0) { 316 350 spip_log("CNIL: masquer IP de $c forums anciens"); 317 351 sql_update('spip_forum', array('ip' => 'MD5(ip)'), $critere_cnil); … … 330 364 * @return array 331 365 */ 332 function forum_pre_insertion($flux){ 333 if ($flux['args']['table']=='spip_articles'){ 334 $flux['data']['accepter_forum'] = substr($GLOBALS['meta']['forums_publics'],0,3); 335 } 366 function forum_pre_insertion($flux) { 367 if ($flux['args']['table'] == 'spip_articles') { 368 $flux['data']['accepter_forum'] = substr($GLOBALS['meta']['forums_publics'], 0, 3); 369 } 370 336 371 return $flux; 337 372 } … … 344 379 * @return array 345 380 */ 346 function forum_prepare_recherche($flux) {381 function forum_prepare_recherche($flux) { 347 382 # Pour les forums, unifier par id_thread et forcer statut='publie' 348 if ($flux['args']['type']=='forum' 349 AND $points = $flux['data']){ 350 $serveur = $flux['args']['serveur']; 351 $modificateurs = (isset($flux['args']['modificateurs'])?$flux['args']['modificateurs']:array()); 352 353 // pas de groupe par thread si {plat} 354 if (!isset($modificateurs['plat'])){ 383 if ($flux['args']['type'] == 'forum' 384 AND $points = $flux['data'] 385 ) { 386 $serveur = $flux['args']['serveur']; 387 $modificateurs = (isset($flux['args']['modificateurs']) ? $flux['args']['modificateurs'] : array()); 388 389 // pas de groupe par thread si {plat} 390 if (!isset($modificateurs['plat'])) { 355 391 $p2 = array(); 356 392 // si critere statut dans la boucle, ne pas filtrer par statut publie ici 357 $cond = (isset($modificateurs['criteres']['statut'])?"":"statut='publie' AND "); 358 $s = sql_select("id_thread, id_forum", "spip_forum", $cond.sql_in('id_forum', array_keys($points)), '','','','',$serveur); 359 while ($t = sql_fetch($s, $serveur)) 393 $cond = (isset($modificateurs['criteres']['statut']) ? "" : "statut='publie' AND "); 394 $s = sql_select("id_thread, id_forum", "spip_forum", $cond . sql_in('id_forum', array_keys($points)), '', '', '', 395 '', $serveur); 396 while ($t = sql_fetch($s, $serveur)) { 360 397 $p2[intval($t['id_thread'])]['score'] 361 398 += $points[intval($t['id_forum'])]['score']; 399 } 362 400 $flux['data'] = $p2; 363 } 364 } 401 } 402 } 403 365 404 return $flux; 366 405 } … … 373 412 * @return array 374 413 */ 375 function forum_rubrique_encours($flux) {414 function forum_rubrique_encours($flux) { 376 415 if (strlen($flux['data']) 377 AND $GLOBALS['meta']['forum_prive_objets'] != 'non') 416 AND $GLOBALS['meta']['forum_prive_objets'] != 'non' 417 ) { 378 418 $flux['data'] = _T('forum:texte_en_cours_validation_forum') . $flux['data']; 419 } 420 379 421 return $flux; 380 422 } … … 386 428 * @return array 387 429 */ 388 function forum_trig_supprimer_objets_lies($objets){ 389 foreach($objets as $objet){ 390 if ($objet['type']=='message') 391 sql_delete("spip_forum", "id_message=".intval($objet['id'])); 392 if (!sql_countsel(table_objet_sql($objet['type']), id_table_objet($objet['type'])."=".intval($objet['id']))) 393 sql_delete("spip_forum", array("id_objet=".intval($objet['id']),"objet=".sql_quote($objet['type']))); 394 } 430 function forum_trig_supprimer_objets_lies($objets) { 431 foreach ($objets as $objet) { 432 if ($objet['type'] == 'message') { 433 sql_delete("spip_forum", "id_message=" . intval($objet['id'])); 434 } 435 if (!sql_countsel(table_objet_sql($objet['type']), id_table_objet($objet['type']) . "=" . intval($objet['id']))) { 436 sql_delete("spip_forum", array("id_objet=" . intval($objet['id']), "objet=" . sql_quote($objet['type']))); 437 } 438 } 439 395 440 return $objets; 396 441 } -
_core_/plugins/forum/inc/article_accepter_forums_publics.php
r46241 r93612 1 1 <?php 2 2 3 if (!defined("_ECRIRE_INC_VERSION")) return; 3 if (!defined("_ECRIRE_INC_VERSION")) { 4 return; 5 } 4 6 5 7 /** 6 8 * Moderation des forums specifique a un article 9 * 7 10 * @param int $id_objet identifiant de l'article 8 11 * @return string : "non", "pos"(teriori), "pri"(ori), "abo"(nnement) … … 11 14 $accepter_forum = $GLOBALS['meta']["forums_publics"]; 12 15 $art_accepter_forum = sql_getfetsel('accepter_forum', 'spip_articles', array( 13 "id_article = " . intval($id_objet)16 "id_article = " . intval($id_objet) 14 17 )); 15 18 if ($art_accepter_forum) { 16 19 $accepter_forum = $art_accepter_forum; 17 20 } 21 18 22 return substr($accepter_forum, 0, 3); 19 23 } -
_core_/plugins/forum/inc/email_notification_forum.php
r93092 r93612 11 11 \***************************************************************************/ 12 12 13 if (!defined("_ECRIRE_INC_VERSION")) return; 13 if (!defined("_ECRIRE_INC_VERSION")) { 14 return; 15 } 14 16 15 17 /** … … 21 23 * @return string 22 24 */ 23 function inc_email_notification_forum_dist 25 function inc_email_notification_forum_dist($t, $email, $contexte = array()) { 24 26 static $contextes_store = array(); 25 27 26 if (!isset($contextes_store[$t['id_forum']])){28 if (!isset($contextes_store[$t['id_forum']])) { 27 29 $url = ''; 28 30 $id_forum = $t['id_forum']; … … 30 32 if ($t['statut'] == 'prive') # forum prive 31 33 { 32 if ($t['id_objet']) 33 $url = generer_url_entite($t['id_objet'], $t['objet'], '', 'forum'.$id_forum, false); 34 } 35 else if ($t['statut'] == 'privrac') # forum general 36 { 37 $url = generer_url_ecrire('forum').'#forum'.$id_forum; 38 } 39 else if ($t['statut'] == 'privadm') # forum des admins 40 { 41 $url = generer_url_ecrire('forum','quoi=admin').'#forum'.$id_forum; 42 } 43 else if ($t['statut'] == 'publie') # forum publie 44 { 45 $url = generer_url_entite($id_forum, 'forum'); 46 } 47 else # forum modere, spam, poubelle direct .... 48 { 49 $url = generer_url_ecrire('controler_forum', "debut_id_forum=".$id_forum); 34 if ($t['id_objet']) { 35 $url = generer_url_entite($t['id_objet'], $t['objet'], '', 'forum' . $id_forum, false); 36 } 37 } else { 38 if ($t['statut'] == 'privrac') # forum general 39 { 40 $url = generer_url_ecrire('forum') . '#forum' . $id_forum; 41 } else { 42 if ($t['statut'] == 'privadm') # forum des admins 43 { 44 $url = generer_url_ecrire('forum', 'quoi=admin') . '#forum' . $id_forum; 45 } else { 46 if ($t['statut'] == 'publie') # forum publie 47 { 48 $url = generer_url_entite($id_forum, 'forum'); 49 } else # forum modere, spam, poubelle direct .... 50 { 51 $url = generer_url_ecrire('controler_forum', "debut_id_forum=" . $id_forum); 52 } 53 } 54 } 50 55 } 51 56 52 57 if (!$url) { 53 spip_log("forum $id_forum sans referent", 'notifications');58 spip_log("forum $id_forum sans referent", 'notifications'); 54 59 $url = './'; 55 60 } … … 68 73 69 74 $links = array(); 70 foreach ($t as $champ =>$v){75 foreach ($t as $champ => $v) { 71 76 $champ = strtoupper($champ); 72 $traitement = (isset($GLOBALS['table_des_traitements'][$champ]) ?$GLOBALS['table_des_traitements'][$champ]:null);77 $traitement = (isset($GLOBALS['table_des_traitements'][$champ]) ? $GLOBALS['table_des_traitements'][$champ] : null); 73 78 if (is_array($traitement) 74 AND (isset($traitement[$table_objet]) OR isset($traitement[0]))){ 79 AND (isset($traitement[$table_objet]) OR isset($traitement[0])) 80 ) { 75 81 $traitement = $traitement[isset($traitement[$table_objet]) ? $table_objet : 0]; 76 $traitement = str_replace('%s', "'" .texte_script($v)."'", $traitement);82 $traitement = str_replace('%s', "'" . texte_script($v) . "'", $traitement); 77 83 eval("\$v = $traitement;"); 78 84 } 79 85 80 $links = $links + extraire_balises($v,'a');86 $links = $links+extraire_balises($v, 'a'); 81 87 } 82 $links = extraire_attribut($links, 'href');83 $links = implode("\n", $links);88 $links = extraire_attribut($links, 'href'); 89 $links = implode("\n", $links); 84 90 $t['liens'] = $links; 85 91 … … 88 94 89 95 $fond = "notifications/forum_poste"; 90 if (isset($contexte['fond'])) {96 if (isset($contexte['fond'])) { 91 97 $fond = $contexte['fond']; 92 98 unset($contexte['fond']); 93 99 } 94 $t = array_merge($contextes_store[$t['id_forum']], $contexte);95 96 if ( NULL !== ($l = sql_getfetsel('lang', 'spip_auteurs', "email=" . sql_quote($email))))100 $t = array_merge($contextes_store[$t['id_forum']], $contexte); 101 // Rechercher eventuellement la langue du destinataire 102 if (null !== ($l = sql_getfetsel('lang', 'spip_auteurs', "email=" . sql_quote($email)))) { 97 103 $l = lang_select($l); 104 } 98 105 99 106 $parauteur = (strlen($t['auteur']) <= 2) ? '' : 100 (" " ._T('forum_par_auteur', array( 101 'auteur' => $t['auteur']) 102 ) . 103 ($t['email_auteur'] ? ' <' . $t['email_auteur'] . '>' : '')); 107 (" " . _T('forum_par_auteur', array( 108 'auteur' => $t['auteur'] 109 ) 110 ) . 111 ($t['email_auteur'] ? ' <' . $t['email_auteur'] . '>' : '')); 104 112 105 113 $titre = textebrut(typo($t['titre_source'])); 106 if ($titre) {114 if ($titre) { 107 115 $forum_poste_par = _T( 108 $t['objet'] =='article'?'forum:forum_poste_par':'forum:forum_poste_par_generique',109 array('parauteur' => $parauteur, 'titre' => $titre, 'objet' =>$t['objet'])116 $t['objet'] == 'article' ? 'forum:forum_poste_par' : 'forum:forum_poste_par_generique', 117 array('parauteur' => $parauteur, 'titre' => $titre, 'objet' => $t['objet']) 110 118 ); 119 } else { 120 $forum_poste_par = _T('forum:forum_poste_par_court', array('parauteur' => $parauteur)); 111 121 } 112 else113 $forum_poste_par = _T('forum:forum_poste_par_court',array('parauteur' => $parauteur));114 122 115 123 $t['par_auteur'] = $forum_poste_par; 116 124 117 $envoyer_mail = charger_fonction('envoyer_mail', 'inc'); // pour nettoyer_titre_email118 $corps = recuperer_fond($fond, $t);125 $envoyer_mail = charger_fonction('envoyer_mail', 'inc'); // pour nettoyer_titre_email 126 $corps = recuperer_fond($fond, $t); 119 127 120 if ($l) 128 if ($l) { 121 129 lang_select(); 130 } 122 131 123 132 return $corps; -
_core_/plugins/forum/inc/forum.php
r93092 r93612 11 11 \***************************************************************************/ 12 12 13 if (!defined("_ECRIRE_INC_VERSION")) return; 13 if (!defined("_ECRIRE_INC_VERSION")) { 14 return; 15 } 14 16 include_spip('inc/actions'); 15 17 … … 30 32 $and = ""; 31 33 } else { 32 if (!is_array($id_secteur)) {33 $id_secteur = explode(',', $id_secteur);34 if (!is_array($id_secteur)) { 35 $id_secteur = explode(',', $id_secteur); 34 36 } 35 37 $from = 'spip_forum AS F, spip_articles AS A'; 36 $where = sql_in("A.id_secteur", $id_secteur)." AND F.objet='article' AND F.id_objet=A.id_article";38 $where = sql_in("A.id_secteur", $id_secteur) . " AND F.objet='article' AND F.id_objet=A.id_article"; 37 39 $and = ' AND '; 38 40 } 39 41 40 42 switch ($type) { 41 43 case 'public': … … 56 58 default: 57 59 $where = '0=1'; 58 $and = '';60 $and = ''; 59 61 break; 60 62 } … … 63 65 # recherche par IP 64 66 if (preg_match(',^\d+\.\d+\.(\*|\d+\.(\*|\d+))$,', $recherche)) { 65 $and .= " AND ip LIKE " .sql_quote(str_replace('*', '%', $recherche));67 $and .= " AND ip LIKE " . sql_quote(str_replace('*', '%', $recherche)); 66 68 } else { 67 69 include_spip('inc/rechercher'); 68 if ($a = recherche_en_base($recherche, 'forum')) 69 $and .= " AND " .sql_in('id_forum',70 array_keys(array_pop($a)));71 else70 if ($a = recherche_en_base($recherche, 'forum')) { 71 $and .= " AND " . sql_in('id_forum', 72 array_keys(array_pop($a))); 73 } else { 72 74 $and .= " AND 0=1"; 75 } 73 76 } 74 77 } … … 83 86 // http://code.spip.net/@calcul_index_forum 84 87 function calcul_index_forum($objet, $id_objet) { 85 return substr($objet, 0,1).$id_objet;88 return substr($objet, 0, 1) . $id_objet; 86 89 } 87 90 … … 92 95 function calculer_threads() { 93 96 // fixer les id_thread des debuts de discussion 94 sql_update('spip_forum', array('id_thread' =>'id_forum'), "id_parent=0");97 sql_update('spip_forum', array('id_thread' => 'id_forum'), "id_parent=0"); 95 98 // reparer les messages qui n'ont pas l'id_secteur de leur parent 96 99 do { 97 100 $discussion = "0"; 98 101 $precedent = 0; 99 $r = sql_select("fille.id_forum AS id, maman.id_thread AS thread", 'spip_forum AS fille, spip_forum AS maman', "fille.id_parent = maman.id_forum AND fille.id_thread <> maman.id_thread",'', "thread"); 102 $r = sql_select("fille.id_forum AS id, maman.id_thread AS thread", 'spip_forum AS fille, spip_forum AS maman', 103 "fille.id_parent = maman.id_forum AND fille.id_thread <> maman.id_thread", '', "thread"); 100 104 while ($row = sql_fetch($r)) { 101 if ($row['thread'] == $precedent) 105 if ($row['thread'] == $precedent) { 102 106 $discussion .= "," . $row['id']; 103 else {104 if ($precedent) 107 } else { 108 if ($precedent) { 105 109 sql_updateq("spip_forum", array("id_thread" => $precedent), "id_forum IN ($discussion)"); 110 } 106 111 $precedent = $row['thread']; 107 112 $discussion = $row['id']; … … 114 119 // Calculs des URLs des forums (pour l'espace public) 115 120 // http://code.spip.net/@racine_forum 116 function racine_forum($id_forum){ 117 if (!$id_forum = intval($id_forum)) return false; 118 119 $row = sql_fetsel("id_parent, objet, id_objet, id_thread", "spip_forum", "id_forum=".$id_forum); 120 121 if (!$row) return false; 121 function racine_forum($id_forum) { 122 if (!$id_forum = intval($id_forum)) { 123 return false; 124 } 125 126 $row = sql_fetsel("id_parent, objet, id_objet, id_thread", "spip_forum", "id_forum=" . $id_forum); 127 128 if (!$row) { 129 return false; 130 } 122 131 123 132 if ($row['id_parent'] 124 AND $row['id_thread'] != $id_forum) // eviter boucle infinie 133 AND $row['id_thread'] != $id_forum 134 ) // eviter boucle infinie 135 { 125 136 return racine_forum($row['id_thread']); 137 } 126 138 127 139 return array($row['objet'], $row['id_objet'], $id_forum); 128 } 140 } 129 141 130 142 131 143 // http://code.spip.net/@parent_forum 132 144 function parent_forum($id_forum) { 133 if (!$id_forum = intval($id_forum)) return; 134 $row = sql_fetsel("id_parent, objet, id_objet", "spip_forum", "id_forum=".$id_forum); 135 if(!$row) return array(); 136 if ($row['id_parent']) 145 if (!$id_forum = intval($id_forum)) { 146 return; 147 } 148 $row = sql_fetsel("id_parent, objet, id_objet", "spip_forum", "id_forum=" . $id_forum); 149 if (!$row) { 150 return array(); 151 } 152 if ($row['id_parent']) { 137 153 return array('forum', $row['id_parent']); 138 else154 } else { 139 155 return array($row['objet'], $row['id_objet']); 140 } 156 } 157 } 141 158 142 159 … … 150 167 */ 151 168 function generer_url_forum_dist($id_forum, $args = '', $ancre = '') { 152 $generer_url_forum = charger_fonction('generer_url_forum','urls'); 169 $generer_url_forum = charger_fonction('generer_url_forum', 'urls'); 170 153 171 return $generer_url_forum($id_forum, $args, $ancre); 154 172 } … … 159 177 if ($id_forum = intval($id_forum)) { 160 178 list($type, $id) = parent_forum($id_forum); 161 if ($type) 179 if ($type) { 162 180 return generer_url_entite($id, $type); 163 } 181 } 182 } 183 164 184 return ''; 165 } 185 } 166 186 167 187 … … 170 190 // http://code.spip.net/@conserver_original 171 191 function conserver_original($id_forum) { 172 $s = sql_fetsel("id_forum", "spip_forum", "id_parent=".intval($id_forum)." AND statut='original'"); 173 174 if ($s) return ''; // pas d'erreur 192 $s = sql_fetsel("id_forum", "spip_forum", "id_parent=" . intval($id_forum) . " AND statut='original'"); 193 194 if ($s) { 195 return ''; 196 } // pas d'erreur 175 197 176 198 // recopier le forum 177 $t = sql_fetsel("*", "spip_forum", "id_forum=" .intval($id_forum));199 $t = sql_fetsel("*", "spip_forum", "id_forum=" . intval($id_forum)); 178 200 179 201 if ($t) { … … 181 203 $id_copie = sql_insertq('spip_forum', $t); 182 204 if ($id_copie) { 183 sql_updateq('spip_forum', array('id_parent'=> $id_forum, 'statut'=>'original'), "id_forum=$id_copie"); 205 sql_updateq('spip_forum', array('id_parent' => $id_forum, 'statut' => 'original'), "id_forum=$id_copie"); 206 184 207 return ''; // pas d'erreur 185 208 } … … 194 217 if ($err = conserver_original($id_forum)) { 195 218 spip_log("erreur de sauvegarde de l'original, $err"); 219 196 220 return; 197 221 } 198 222 199 223 include_spip('action/editer_forum'); 224 200 225 return revision_forum($id_forum, $c); 201 226 } … … 204 229 /** 205 230 * Trouver le titre d'un objet publie 231 * 206 232 * @param string $objet 207 233 * @param int $id_objet … … 214 240 $titre = ""; 215 241 216 if ($f = charger_fonction($objet .'_forum_extraire_titre', 'inc', true)){242 if ($f = charger_fonction($objet . '_forum_extraire_titre', 'inc', true)) { 217 243 $titre = $f($id_objet); 218 } 219 else { 244 } else { 220 245 include_spip('base/objets'); 221 if ($publie AND !objet_test_si_publie($objet, $id_objet)) 246 if ($publie AND !objet_test_si_publie($objet, $id_objet)) { 222 247 return false; 223 224 $titre = generer_info_entite($id_objet, $objet,'titre','*'); 225 } 226 227 if ($titre AND $id_forum){ 248 } 249 250 $titre = generer_info_entite($id_objet, $objet, 'titre', '*'); 251 } 252 253 if ($titre AND $id_forum) { 228 254 $titre_m = sql_getfetsel('titre', 'spip_forum', "id_forum = " . intval($id_forum)); 229 255 if (!$titre_m) { … … 249 275 * 250 276 * http://code.spip.net/@controler_forum 251 * 277 * 252 278 * @param string $objet 253 279 * objet a tester … … 262 288 263 289 // il y a un cas particulier pour l'acceptation de forum d'article... 264 if ($f = charger_fonction($objet . '_accepter_forums_publics', 'inc', true)) {290 if ($f = charger_fonction($objet . '_accepter_forums_publics', 'inc', true)) { 265 291 $accepter_forum = $f($id_objet); 266 292 } … … 273 299 * Verifier la presence du jeton de secu post previsu 274 300 * http://code.spip.net/@forum_insert_noprevisu 301 * 275 302 * @return bool 276 303 */ 277 function forum_insert_noprevisu() {304 function forum_insert_noprevisu() { 278 305 // simuler une action venant de l'espace public 279 306 // pour se conformer au cas general. … … 283 310 $arg = $securiser_action(); 284 311 285 $file = _DIR_TMP . "forum_" . preg_replace('/[^0-9]/', '', $arg) .".lck";312 $file = _DIR_TMP . "forum_" . preg_replace('/[^0-9]/', '', $arg) . ".lck"; 286 313 if (!file_exists($file)) { 287 314 # ne pas tracer cette erreur, peut etre due a un double POST … … 293 320 // antispam : si le champ au nom aleatoire verif_$hash n'est pas 'ok' 294 321 // on meurt 295 if (_request('verif_'._request('hash')) != 'ok') { 296 tracer_erreur_forum('champ verif manquant'); 297 return true; 298 } 322 if (_request('verif_' . _request('hash')) != 'ok') { 323 tracer_erreur_forum('champ verif manquant'); 324 325 return true; 326 } 327 299 328 return false; 300 329 } … … 327 356 328 357 // http://code.spip.net/@reduce_strlen 329 function reduce_strlen($n, $c) 330 { 331 return $n - (is_string($c) ? strlen($c) : 0); 332 } 358 function reduce_strlen($n, $c) { 359 return $n-(is_string($c) ? strlen($c) : 0); 360 } 361 333 362 ?> -
_core_/plugins/forum/inc/forum_insert.php
r93092 r93612 11 11 \***************************************************************************/ 12 12 13 if (!defined("_ECRIRE_INC_VERSION")) return; 13 if (!defined("_ECRIRE_INC_VERSION")) { 14 return; 15 } 14 16 include_spip('inc/forum'); 15 17 include_spip('inc/filtres'); … … 19 21 20 22 // http://code.spip.net/@mots_du_forum 21 function mots_du_forum($ajouter_mot, $id_message) 22 { 23 function mots_du_forum($ajouter_mot, $id_message) { 23 24 include_spip('action/editer_mot'); 24 mot_associer($ajouter_mot, array('forum' =>$id_message));25 mot_associer($ajouter_mot, array('forum' => $id_message)); 25 26 } 26 27 27 28 28 29 29 // http://code.spip.net/@tracer_erreur_forum 30 30 function tracer_erreur_forum($type = '') { 31 spip_log("erreur forum ($type): " .print_r($_POST, true));31 spip_log("erreur forum ($type): " . print_r($_POST, true)); 32 32 33 33 define('_TRACER_ERREUR_FORUM', false); 34 34 if (_TRACER_ERREUR_FORUM) { 35 $envoyer_mail = charger_fonction('envoyer_mail', 'inc');35 $envoyer_mail = charger_fonction('envoyer_mail', 'inc'); 36 36 $envoyer_mail($GLOBALS['meta']['email_webmaster'], "erreur forum ($type)", 37 "erreur sur le forum ($type) :\n\n" .38 '$_POST = ' .print_r($_POST, true)."\n\n".39 '$_SERVER = ' .print_r($_SERVER, true));37 "erreur sur le forum ($type) :\n\n" . 38 '$_POST = ' . print_r($_POST, true) . "\n\n" . 39 '$_SERVER = ' . print_r($_SERVER, true)); 40 40 } 41 41 } … … 53 53 * @return bool 54 54 */ 55 function inc_forum_insert_dist($objet, $id_objet, $id_forum, $force_statut = NULL) {55 function inc_forum_insert_dist($objet, $id_objet, $id_forum, $force_statut = null) { 56 56 57 if (!in_array($force_statut, array('privrac','privadm'))){57 if (!in_array($force_statut, array('privrac', 'privadm'))) { 58 58 if (!strlen($objet) 59 OR !intval($id_objet)){ 60 spip_log("Erreur insertion forum sur objet='$objet', id_objet=$id_objet",'forum.'. _LOG_ERREUR); 59 OR !intval($id_objet) 60 ) { 61 spip_log("Erreur insertion forum sur objet='$objet', id_objet=$id_objet", 'forum.' . _LOG_ERREUR); 62 61 63 return 0; 62 64 } … … 68 70 include_spip('inc/modifier'); 69 71 include_spip('inc/session'); 70 $champs = objet_info('forum', 'champs_editables');72 $champs = objet_info('forum', 'champs_editables'); 71 73 $c = collecter_requests($champs, array()); 72 74 73 75 $c['statut'] = 'off'; 74 76 $c['objet'] = $objet; … … 77 79 $c['email_auteur'] = sinon(session_get('email'), session_get('session_email')); 78 80 79 $c = pipeline('pre_edition', array(80 'args' =>array(81 82 83 'action'=>'instituer'81 $c = pipeline('pre_edition', array( 82 'args' => array( 83 'table' => 'spip_forum', 84 'id_objet' => $id_forum, 85 'action' => 'instituer' 84 86 ), 85 'data' =>forum_insert_statut($c, $force_statut)87 'data' => forum_insert_statut($c, $force_statut) 86 88 )); 87 89 88 90 $id_reponse = forum_insert_base($c, $id_forum, $objet, $id_objet, $c['statut'], _request('ajouter_mot')); 89 91 90 if (!$id_reponse) 91 spip_log("Echec insertion forum sur $objet $id_objet (+$id_forum)", 'forum.' ._LOG_ERREUR);92 else92 if (!$id_reponse) { 93 spip_log("Echec insertion forum sur $objet $id_objet (+$id_forum)", 'forum.' . _LOG_ERREUR); 94 } else { 93 95 spip_log("forum insere' $id_reponse sur $objet $id_objet (+$id_forum)", 'forum'); 96 } 94 97 95 98 return $id_reponse; … … 98 101 99 102 // http://code.spip.net/@forum_insert_base 100 function forum_insert_base($c, $id_forum, $objet, $id_objet, $statut, $ajouter_mot = false) 101 { 103 function forum_insert_base($c, $id_forum, $objet, $id_objet, $statut, $ajouter_mot = false) { 102 104 103 if (!in_array($statut, array('privrac','privadm'))){105 if (!in_array($statut, array('privrac', 'privadm'))) { 104 106 // si le statut est vide, c'est qu'on ne veut pas de ce presume spam ! 105 if (!$statut OR !$objet OR !$id_objet) {107 if (!$statut OR !$objet OR !$id_objet) { 106 108 $args = func_get_args(); 107 spip_log("Erreur sur forum_insert_base ".var_export($args,1),'forum.'. _LOG_ERREUR); 109 spip_log("Erreur sur forum_insert_base " . var_export($args, 1), 'forum.' . _LOG_ERREUR); 110 108 111 return false; 109 112 } … … 112 115 // Entrer le message dans la base 113 116 $id_reponse = sql_insertq('spip_forum', array( 114 'date_heure' => date('Y-m-d H:i:s'),117 'date_heure' => date('Y-m-d H:i:s'), 115 118 'ip' => $GLOBALS['ip'], 116 119 'id_auteur' => $GLOBALS['visiteur_session']['id_auteur'] 117 120 )); 118 121 119 if ($id_reponse) {120 if ($id_forum >0) {121 $id_thread = sql_getfetsel("id_thread", "spip_forum", "id_forum =" .intval($id_forum));122 } 123 else124 $id_thread = $id_reponse;# id_thread oblige INSERT puis UPDATE.122 if ($id_reponse) { 123 if ($id_forum > 0) { 124 $id_thread = sql_getfetsel("id_thread", "spip_forum", "id_forum =" . intval($id_forum)); 125 } else { 126 $id_thread = $id_reponse; 127 } # id_thread oblige INSERT puis UPDATE. 125 128 126 129 // Entrer les cles 127 sql_updateq('spip_forum', array('id_parent' => $id_forum, 'objet' => $objet, 'id_objet' => $id_objet, 'id_thread' => $id_thread, 'statut' => $statut), "id_forum=".intval($id_reponse)); 130 sql_updateq('spip_forum', array( 131 'id_parent' => $id_forum, 132 'objet' => $objet, 133 'id_objet' => $id_objet, 134 'id_thread' => $id_thread, 135 'statut' => $statut 136 ), "id_forum=" . intval($id_reponse)); 128 137 129 138 // Entrer les mots-cles associes 130 if ($ajouter_mot) mots_du_forum($ajouter_mot, $id_reponse); 139 if ($ajouter_mot) { 140 mots_du_forum($ajouter_mot, $id_reponse); 141 } 131 142 132 143 // … … 138 149 // Ajouter un document 139 150 if (isset($_FILES['ajouter_document']) 140 AND $_FILES['ajouter_document']['tmp_name']) { 141 $files[] = array('tmp_name'=>$_FILES['ajouter_document']['tmp_name'],'name'=>$_FILES['ajouter_document']['name']); 142 $ajouter_documents = charger_fonction('ajouter_documents','action'); 151 AND $_FILES['ajouter_document']['tmp_name'] 152 ) { 153 $files[] = array( 154 'tmp_name' => $_FILES['ajouter_document']['tmp_name'], 155 'name' => $_FILES['ajouter_document']['name'] 156 ); 157 $ajouter_documents = charger_fonction('ajouter_documents', 'action'); 143 158 $ajouter_documents( 144 159 'new', … … 154 169 155 170 // Notification 156 $quoi = (strncmp($statut, 'priv',4)==0?'forumprive':'forumposte');157 if ($notifications = charger_fonction('notifications', 'inc')) 171 $quoi = (strncmp($statut, 'priv', 4) == 0 ? 'forumprive' : 'forumposte'); 172 if ($notifications = charger_fonction('notifications', 'inc')) { 158 173 $notifications($quoi, $id_reponse); 174 } 159 175 } 160 176 … … 164 180 165 181 // http://code.spip.net/@forum_insert_statut 166 function forum_insert_statut($champs, $forcer_statut = NULL) 167 { 182 function forum_insert_statut($champs, $forcer_statut = null) { 168 183 include_spip('inc/forum'); 169 184 $statut = controler_forum($champs['objet'], $champs['id_objet']); 170 185 171 if ($forcer_statut !== NULL)186 if ($forcer_statut !== null) { 172 187 $champs['statut'] = $forcer_statut; 173 else 174 $champs['statut'] = ($statut == 'non') ? 'off' : (($statut == 'pri') ? 'prop' : 'publie'); 188 } else { 189 $champs['statut'] = ($statut == 'non') ? 'off' : (($statut == 'pri') ? 'prop' : 'publie'); 190 } 175 191 176 192 return $champs; -
_core_/plugins/forum/notifications/forumposte.php
r69937 r93612 11 11 * 12 12 * @package SPIP\Forum\Notifications 13 **/13 **/ 14 14 15 if (!defined("_ECRIRE_INC_VERSION")) return; 15 if (!defined("_ECRIRE_INC_VERSION")) { 16 return; 17 } 16 18 17 19 /** … … 23 25 */ 24 26 function notifications_forumposte_dist($quoi, $id_forum, $options) { 25 $t = sql_fetsel("*", "spip_forum", "id_forum=" .intval($id_forum));26 if (!$t) 27 $t = sql_fetsel("*", "spip_forum", "id_forum=" . intval($id_forum)); 28 if (!$t) { 27 29 return; 30 } 28 31 29 32 // plugin notification si present 30 33 $prevenir_auteurs = isset($GLOBALS['notifications']['prevenir_auteurs']) AND $GLOBALS['notifications']['prevenir_auteurs']; 31 34 // sinon voie normale 32 if ($t['objet']=='article' AND !$prevenir_auteurs){ 33 $s = sql_getfetsel('accepter_forum','spip_articles',"id_article=" . $t['id_objet']); 34 if (!$s) $s = substr($GLOBALS['meta']["forums_publics"],0,3); 35 if ($t['objet'] == 'article' AND !$prevenir_auteurs) { 36 $s = sql_getfetsel('accepter_forum', 'spip_articles', "id_article=" . $t['id_objet']); 37 if (!$s) { 38 $s = substr($GLOBALS['meta']["forums_publics"], 0, 3); 39 } 35 40 36 $prevenir_auteurs = (strpos(@$GLOBALS['meta']['prevenir_auteurs'], ",$s,")!==false41 $prevenir_auteurs = (strpos(@$GLOBALS['meta']['prevenir_auteurs'], ",$s,") !== false 37 42 OR @$GLOBALS['meta']['prevenir_auteurs'] === 'oui'); // compat 38 43 } … … 49 54 // avertis par la notifications_forumvalide). 50 55 if ($prevenir_auteurs) { 51 $result = sql_select("auteurs.*","spip_auteurs AS auteurs, spip_auteurs_liens AS lien","lien.objet=".sql_quote($t['objet'])." AND lien.id_objet=".intval($t['id_objet'])." AND auteurs.id_auteur=lien.id_auteur"); 56 $result = sql_select("auteurs.*", "spip_auteurs AS auteurs, spip_auteurs_liens AS lien", 57 "lien.objet=" . sql_quote($t['objet']) . " AND lien.id_objet=" . intval($t['id_objet']) . " AND auteurs.id_auteur=lien.id_auteur"); 52 58 53 59 while ($qui = sql_fetch($result)) { 54 if ($qui['email'] AND autoriser('modererforum', $t['objet'], $t['id_objet'], $qui['id_auteur'])) 60 if ($qui['email'] AND autoriser('modererforum', $t['objet'], $t['id_objet'], $qui['id_auteur'])) { 55 61 $tous[] = $qui['email']; 62 } 56 63 } 57 64 } … … 60 67 $destinataires = pipeline('notifications_destinataires', 61 68 array( 62 'args' =>array('quoi'=>$quoi,'id'=>$id_forum,'options'=>$options)69 'args' => array('quoi' => $quoi, 'id' => $id_forum, 'options' => $options) 63 70 , 64 'data'=>$tous) 71 'data' => $tous 72 ) 65 73 ); 66 74 67 75 // Nettoyer le tableau 68 76 // Ne pas ecrire au posteur du message ! 69 notifications_nettoyer_emails($destinataires, array($t['email_auteur']));77 notifications_nettoyer_emails($destinataires, array($t['email_auteur'])); 70 78 71 79 // 72 80 // Envoyer les emails 73 81 // 74 $email_notification_forum = charger_fonction('email_notification_forum', 'inc');82 $email_notification_forum = charger_fonction('email_notification_forum', 'inc'); 75 83 foreach ($destinataires as $email) { 76 84 $texte = $email_notification_forum($t, $email); … … 85 93 } 86 94 } 95 87 96 ?> -
_core_/plugins/forum/notifications/forumvalide.php
r93110 r93612 11 11 * 12 12 * @package SPIP\Forum\Notifications 13 **/13 **/ 14 14 15 if (!defined("_ECRIRE_INC_VERSION")) return; 15 if (!defined("_ECRIRE_INC_VERSION")) { 16 return; 17 } 16 18 17 19 /** 18 20 * Cette notification s'exécute quand on valide un message 'prop'osé. 19 * 21 * 20 22 * On va notifier ceux qui ne l'ont 21 23 * pas été à la notification forumposte (sachant que les deux peuvent se … … 24 26 * @pipeline_appel notifications_destinataires 25 27 * @see inc/forum_insert.php 26 * 28 * 27 29 * @param string $quoi 28 30 * @param int $id_forum … … 31 33 function notifications_forumvalide_dist($quoi, $id_forum, $options) { 32 34 33 $t = sql_fetsel("*", "spip_forum", "id_forum=" .intval($id_forum));35 $t = sql_fetsel("*", "spip_forum", "id_forum=" . intval($id_forum)); 34 36 if (!$t 35 37 // forum sur un message prive : pas de notification ici (cron) 36 OR @$t['statut'] == 'perso') 38 OR @$t['statut'] == 'perso' 39 ) { 37 40 return; 41 } 38 42 39 43 // plugin notification si present 40 44 $prevenir_auteurs = isset($GLOBALS['notifications']['prevenir_auteurs']) AND $GLOBALS['notifications']['prevenir_auteurs']; 41 45 // sinon voie normale 42 if ($t['objet']=='article' AND !$prevenir_auteurs){ 43 $s = sql_getfetsel('accepter_forum','spip_articles',"id_article=" . $t['id_objet']); 44 if (!$s) $s = substr($GLOBALS['meta']["forums_publics"],0,3); 46 if ($t['objet'] == 'article' AND !$prevenir_auteurs) { 47 $s = sql_getfetsel('accepter_forum', 'spip_articles', "id_article=" . $t['id_objet']); 48 if (!$s) { 49 $s = substr($GLOBALS['meta']["forums_publics"], 0, 3); 50 } 45 51 46 $prevenir_auteurs = (strpos(@$GLOBALS['meta']['prevenir_auteurs'], ",$s,")!==false52 $prevenir_auteurs = (strpos(@$GLOBALS['meta']['prevenir_auteurs'], ",$s,") !== false 47 53 OR @$GLOBALS['meta']['prevenir_auteurs'] === 'oui'); // compat 48 54 } … … 62 68 // pas le droit de le moderer (les autres l'ont recu plus tot) 63 69 if ($prevenir_auteurs) { 64 $result = sql_select("auteurs.*","spip_auteurs AS auteurs, spip_auteurs_liens AS lien","lien.objet=".sql_quote($t['objet'])." AND lien.id_objet=".intval($t['id_objet'])." AND auteurs.id_auteur=lien.id_auteur"); 70 $result = sql_select("auteurs.*", "spip_auteurs AS auteurs, spip_auteurs_liens AS lien", 71 "lien.objet=" . sql_quote($t['objet']) . " AND lien.id_objet=" . intval($t['id_objet']) . " AND auteurs.id_auteur=lien.id_auteur"); 65 72 66 73 while ($qui = sql_fetch($result)) { 67 74 if ($qui['email']) { 68 if (!autoriser('modererforum', $t['objet'], $t['id_objet'], $qui['id_auteur'])) 75 if (!autoriser('modererforum', $t['objet'], $t['id_objet'], $qui['id_auteur'])) { 69 76 $tous[] = $qui['email']; 70 else71 // Ne pas ecrire aux auteurs deja notifies precedemment77 } else // Ne pas ecrire aux auteurs deja notifies precedemment 78 { 72 79 $pasmoi[] = $qui['email']; 80 } 73 81 } 74 82 } … … 92 100 // Envoyer les emails 93 101 // 94 $email_notification_forum = charger_fonction('email_notification_forum', 'inc');102 $email_notification_forum = charger_fonction('email_notification_forum', 'inc'); 95 103 foreach ($destinataires as $email) { 96 104 $texte = $email_notification_forum($t, $email); -
_core_/plugins/forum/prive/modeles/forum_fonctions.php
r93092 r93612 11 11 \***************************************************************************/ 12 12 13 if (!defined("_ECRIRE_INC_VERSION")) return; 13 if (!defined("_ECRIRE_INC_VERSION")) { 14 return; 15 } 14 16 15 function forum_compte_messages_from($email, $id_forum) {17 function forum_compte_messages_from($email, $id_forum) { 16 18 static $mem = array(); 17 19 18 if (isset($mem[$email])) 20 if (isset($mem[$email])) { 19 21 return $mem[$email]; 22 } 20 23 21 24 // sinon on fait une requete groupee pour essayer de ne le faire qu'une fois pour toute la liste 22 $emails = sql_allfetsel("DISTINCT email_auteur","spip_forum","id_forum>".intval($id_forum-50)." AND id_forum<".intval($id_forum+50)); 23 $emails = array_map('reset',$emails); 25 $emails = sql_allfetsel("DISTINCT email_auteur", "spip_forum", 26 "id_forum>" . intval($id_forum-50) . " AND id_forum<" . intval($id_forum+50)); 27 $emails = array_map('reset', $emails); 24 28 $emails = array_filter($emails); 25 29 // et compter 26 $counts = sql_allfetsel("email_auteur,count(id_forum) AS N","spip_forum",sql_in("email_auteur",$emails),"email_auteur"); 30 $counts = sql_allfetsel("email_auteur,count(id_forum) AS N", "spip_forum", sql_in("email_auteur", $emails), 31 "email_auteur"); 27 32 28 foreach ($counts as $c){33 foreach ($counts as $c) { 29 34 $mem[$c['email_auteur']] = $c['N']; 30 35 } -
_core_/plugins/forum/public/forum.php
r88959 r93612 11 11 \***************************************************************************/ 12 12 13 if (!defined("_ECRIRE_INC_VERSION")) return; 13 if (!defined("_ECRIRE_INC_VERSION")) { 14 return; 15 } 14 16 15 17 // … … 25 27 // de meme qu'un critere sur {id_forum} ou {id_parent} 26 28 if (!isset($boucle->modificateur['tout']) 27 28 29 30 31 array_unshift($boucle->where, array("'='", "'$id_table." ."id_parent'", 0));29 AND !isset($boucle->modificateur['plat']) 30 AND !isset($boucle->modificateur['criteres']['id_forum']) 31 AND !isset($boucle->modificateur['criteres']['id_parent']) 32 ) { 33 array_unshift($boucle->where, array("'='", "'$id_table." . "id_parent'", 0)); 32 34 } 33 35 … … 47 49 $mparent = $boucle->id_table . '.' . $id_parent; 48 50 49 $boucle->where[] = array("'='", "'$mparent'", $arg);50 $boucle->where[] = array("'>'", "'$mparent'", 0);51 $boucle->where[] = array("'='", "'$mparent'", $arg); 52 $boucle->where[] = array("'>'", "'$mparent'", 0); 51 53 $boucle->modificateur['plat'] = true; 52 54 } … … 67 69 * @return mixed|string 68 70 */ 69 function public_critere_secteur_forums_dist($idb, &$boucles, $val, $crit) 70 { 71 return calculer_critere_externe_init($boucles[$idb], array('spip_articles'), 'id_secteur', $boucles[$idb]->show,$crit->cond, true);71 function public_critere_secteur_forums_dist($idb, &$boucles, $val, $crit) { 72 return calculer_critere_externe_init($boucles[$idb], array('spip_articles'), 'id_secteur', $boucles[$idb]->show, 73 $crit->cond, true); 72 74 } 73 75 … … 88 90 $p->code = ' 89 91 // refus des forums ? 90 (quete_accepter_forum(' .$_id_article.')=="non" OR92 (quete_accepter_forum(' . $_id_article . ')=="non" OR 91 93 ($GLOBALS["meta"]["forums_publics"] == "non" 92 AND quete_accepter_forum(' .$_id_article.') == ""))94 AND quete_accepter_forum(' . $_id_article . ') == "")) 93 95 ? "" : // sinon: 94 96 '; … … 98 100 99 101 // si on est dans une boucle de forums, c'est une reponse 100 if ($p->type_requete == 'forums') 102 if ($p->type_requete == 'forums') { 101 103 $_id_reponse = champ_sql('id_forum', $p); 102 else104 } else { 103 105 $_id_reponse = "null"; 106 } 104 107 105 108 // objet et id_objet principaux sont a determiner … … 107 110 // a la boucle mere de reserver son id_primary 108 111 if ($p->id_boucle 109 AND isset($p->boucles[$p->id_boucle])110 AND $primary = $p->boucles[$p->id_boucle]->primary112 AND isset($p->boucles[$p->id_boucle]) 113 AND $primary = $p->boucles[$p->id_boucle]->primary 111 114 ) { 112 115 $_type = _q($p->boucles[$p->id_boucle]->type_requete); … … 119 122 // le code de base des parametres 120 123 $c = 'calcul_parametres_forum($Pile[0],' 121 . $_id_reponse.','.$_type.','.$_primary.')';124 . $_id_reponse . ',' . $_type . ',' . $_primary . ')'; 122 125 123 126 // ajouter la lang, eventuellement donnee par le contexte … … 130 133 # note : ce bloc qui sert a recuperer des arguments calcules pourrait 131 134 # porter un nom et faire partie de l'API. 132 $retour = interprete_argument_balise(1, $p);133 if ($retour ===NULL)135 $retour = interprete_argument_balise(1, $p); 136 if ($retour === null) { 134 137 $retour = "''"; 138 } 135 139 136 140 // Attention un eventuel &retour=xxx dans l'URL est prioritaire 137 141 $c .= '. 138 (($lien = (_request("retour") ? _request("retour") : str_replace("&", "&", ' .$retour.'))) ? "&retour=".rawurlencode($lien) : "")';139 140 $c = '(' .$c.')';142 (($lien = (_request("retour") ? _request("retour") : str_replace("&", "&", ' . $retour . '))) ? "&retour=".rawurlencode($lien) : "")'; 143 144 $c = '(' . $c . ')'; 141 145 // Ajouter le code d'invalideur specifique a cette balise 142 146 include_spip('inc/invalideur'); 143 if ($i = charger_fonction('code_invalideur_forums', '',true))147 if ($i = charger_fonction('code_invalideur_forums', '', true)) { 144 148 $p->code .= $i($p, $c); 145 else149 } else { 146 150 $p->code .= $c; 151 } 147 152 148 153 $p->interdire_scripts = false; 154 149 155 return $p; 150 156 } … … 163 169 if ($id_parent = intval($reponse)) { 164 170 if ($type 165 AND $type!='forums' 166 AND $primary) 171 AND $type != 'forums' 172 AND $primary 173 ) { 167 174 $forum = array('objet' => $type, 'id_objet' => $primary); 168 else 169 $forum = sql_fetsel('objet, id_objet', 'spip_forum', 'id_forum='.$id_parent); 170 171 if ($forum) 172 return id_table_objet($forum['objet']).'='.$forum['id_objet'] 173 .'&id_forum='.$id_parent; 174 else 175 } else { 176 $forum = sql_fetsel('objet, id_objet', 'spip_forum', 'id_forum=' . $id_parent); 177 } 178 179 if ($forum) { 180 return id_table_objet($forum['objet']) . '=' . $forum['id_objet'] 181 . '&id_forum=' . $id_parent; 182 } else { 175 183 return ''; 184 } 176 185 } 177 186 178 187 // Ce n'est pas une reponse, on prend la boucle mere 179 if ($type AND $primary) 180 return id_table_objet($type).'='.intval($primary); 188 if ($type AND $primary) { 189 return id_table_objet($type) . '=' . intval($primary); 190 } 181 191 182 192 // dernier recours, on regarde pour chacun des objets forumables … … 184 194 foreach ($env as $k => $v) { 185 195 if (preg_match(',^id_([a-z_]+)$,S', $k) 186 AND $id = intval($v)) { 187 return id_table_objet($k).'='.$v; 196 AND $id = intval($v) 197 ) { 198 return id_table_objet($k) . '=' . $v; 188 199 } 189 200 } … … 202 213 $id_article = intval($id_article); 203 214 204 if (isset($cache[$id_article])) return $cache[$id_article]; 205 206 return $cache[$id_article] = sql_getfetsel('accepter_forum','spip_articles',"id_article=$id_article"); 215 if (isset($cache[$id_article])) { 216 return $cache[$id_article]; 217 } 218 219 return $cache[$id_article] = sql_getfetsel('accepter_forum', 'spip_articles', "id_article=$id_article"); 207 220 } 208 221 … … 218 231 if (is_array($lang) AND preg_match(',id_([a-z_]+)=([0-9]+),', $qs, $r)) { 219 232 $id = 'id_' . $r[1]; 220 if ($t = $lang[$id]) 233 if ($t = $lang[$id]) { 221 234 $lang = sql_getfetsel('lang', $t, "$id=" . $r[2]); 222 } 223 // Si ce n'est pas la meme que celle du site, l'ajouter aux parametres 224 225 if ($lang AND $lang <> $GLOBALS['meta']['langue_site']) 235 } 236 } 237 // Si ce n'est pas la meme que celle du site, l'ajouter aux parametres 238 239 if ($lang AND $lang <> $GLOBALS['meta']['langue_site']) { 226 240 return $qs . "&lang=" . $lang; 241 } 227 242 228 243 return $qs; … … 236 251 return $code; 237 252 } 253 238 254 ?> -
_core_/plugins/forum/urls/generer_url_ecrire_forum.php
r93092 r93612 11 11 \***************************************************************************/ 12 12 13 if (!defined("_ECRIRE_INC_VERSION")) return; 13 if (!defined("_ECRIRE_INC_VERSION")) { 14 return; 15 } 14 16 15 17 // http://code.spip.net/@generer_url_ecrire_forum 16 18 function urls_generer_url_ecrire_forum_dist($id, $args = '', $ancre = '', $public = null, $connect = '') { 17 19 $a = "id_forum=" . intval($id); 18 if (is_null($public) AND !$connect) 20 if (is_null($public) AND !$connect) { 19 21 $public = objet_test_si_publie('forum', $id, $connect); 22 } 20 23 $h = ($public OR $connect) 21 ? generer_url_entite_absolue($id, 'forum', $args, $ancre, $connect) 22 : (generer_url_ecrire('controler_forum', "debut_forum=@$id" . ($args ? "&$args" : '')) 23 . ($ancre ? "#$ancre" : '')); 24 ? generer_url_entite_absolue($id, 'forum', $args, $ancre, $connect) 25 : (generer_url_ecrire('controler_forum', "debut_forum=@$id" . ($args ? "&$args" : '')) 26 . ($ancre ? "#$ancre" : '')); 27 24 28 return $h; 25 29 } -
_core_/plugins/forum/urls/generer_url_forum.php
r93092 r93612 11 11 \***************************************************************************/ 12 12 13 if (!defined("_ECRIRE_INC_VERSION")) return; 13 if (!defined("_ECRIRE_INC_VERSION")) { 14 return; 15 } 14 16 15 17 function urls_generer_url_forum_dist($id_forum, $args = '', $ancre = '') { … … 18 20 list($type, $id,) = racine_forum($id_forum); 19 21 if ($type) { 20 if (!$ancre) $ancre = "forum$id_forum"; 22 if (!$ancre) { 23 $ancre = "forum$id_forum"; 24 } 25 21 26 return generer_url_entite($id, $type, $args, $ancre, true); 22 27 } 23 28 } 29 24 30 return ''; 25 31 }
Note: See TracChangeset
for help on using the changeset viewer.