diff --git a/dist/formulaires/login_forum.html b/dist/formulaires/login_forum.html index bd70cd4a32930e758ca4e0ca97b2c74fdbbc2bff..360c53cc5c57fe88cffc6ddec229d873d6369908 100644 --- a/dist/formulaires/login_forum.html +++ b/dist/formulaires/login_forum.html @@ -11,7 +11,7 @@ <p align="center"> -[<a[ href="(#ENV{inscription})&mode=forum[(&id_rubrique=(#ENV{id_rubrique})]&focus=nom_inscription"] target="spip_pass" onclick="javascript:window.open(this.href, 'spip_pass', 'scrollbars=yes, resizable=yes, width=480, height=500'); return false;"><:login_sinscrire:></a>] +[<a[ href="(#ENV{inscription})&mode=6forum[(&id_rubrique=(#ENV{id_rubrique})]&focus=nom_inscription"] target="spip_pass" onclick="javascript:window.open(this.href, 'spip_pass', 'scrollbars=yes, resizable=yes, width=480, height=500'); return false;"><:login_sinscrire:></a>] [<a[ href="(#ENV{oubli})"] target="spip_pass" onclick="javascript:window.open(this.href, 'spip_pass', 'scrollbars=yes, resizable=yes, width=480, height=280'); return false;"><:login_motpasseoublie:></a>] diff --git a/ecrire/action/editer_auteur.php b/ecrire/action/editer_auteur.php index cdb1646ab7f8f8ab0df4a8d4d432c7fdd8a6d9e2..fa5d6dc373a8d28de915801a12352d9b61a69f41 100644 --- a/ecrire/action/editer_auteur.php +++ b/ecrire/action/editer_auteur.php @@ -199,8 +199,8 @@ function action_legender_auteur_post($r) { if ($statut = _request('statut') AND autoriser('modifier', 'auteur', $id_auteur, $qui = null, $opt = array('statut'=>$statut))) { - if (!in_array($statut,$GLOBALS['liste_des_statuts'])) { - spip_log("action_instituer_auteur_dist: $statut incompris pour $id_auteur"); + if ($statut != addslashes($statut)) { + spip_log("action_editer_auteur_dist: $statut incompris pour $id_auteur"); } else { spip_query("UPDATE spip_auteurs SET statut="._q($statut) . " WHERE id_auteur=" . _q($id_auteur)); } diff --git a/ecrire/balise/formulaire_forum.php b/ecrire/balise/formulaire_forum.php index ba4606b251c7f4e6eb8da3993d3583139a2b4cba..badfe80ff0721556d99068737507e73ac7c46565 100644 --- a/ecrire/balise/formulaire_forum.php +++ b/ecrire/balise/formulaire_forum.php @@ -93,10 +93,10 @@ $ajouter_mot, $ajouter_groupe, $afficher_texte, $url_param_retour) if ($type == "abo") { if (!$GLOBALS["auteur_session"]) { return array('formulaires/login_forum', 0, - array('inscription' => generer_url_public('spip_inscription'), - 'oubli' => generer_url_public('spip_pass'))); + array('inscription' => generer_url_public('', 'action=inscription'), + 'oubli' => generer_url_public('', 'action=pass'))); } else { - // forcer ces valeur + // forcer ces valeurs $auteur = $GLOBALS['auteur_session']['nom']; $email_auteur = $GLOBALS['auteur_session']['email']; } diff --git a/ecrire/balise/formulaire_inscription.php b/ecrire/balise/formulaire_inscription.php index 7624aebb783f736371d53a2bd45591c4ac433fdc..4b0a4aa6eebc40c581c94963b98b9aca9107b2ab 100644 --- a/ecrire/balise/formulaire_inscription.php +++ b/ecrire/balise/formulaire_inscription.php @@ -22,7 +22,7 @@ function balise_FORMULAIRE_INSCRIPTION ($p) { return calculer_balise_dynamique($p, 'FORMULAIRE_INSCRIPTION', array()); } -// args[0] peut valoir "redac" ou "forum" +// args[0] un statut d'auteur (1comite par defaut) // args[1] indique la rubrique eventuelle de proposition // args[2] indique le focus eventuel // [(#FORMULAIRE_INSCRIPTION{nom_inscription, #ID_RUBRIQUE})] @@ -31,7 +31,7 @@ function balise_FORMULAIRE_INSCRIPTION ($p) { function balise_FORMULAIRE_INSCRIPTION_stat($args, $filtres) { list($mode, $id, $focus) = $args; //initialiser_mode_inscription - if(!$mode) $mode = $GLOBALS['meta']['accepter_inscriptions'] == 'oui' ? 'redac' : ''; + if(!$mode) $mode = $GLOBALS['meta']['accepter_inscriptions'] == 'oui' ? '1comite' : ''; if (!test_mode_inscription($mode)) return ''; else return array($mode, $focus, $id); @@ -84,8 +84,9 @@ function balise_FORMULAIRE_INSCRIPTION_dyn($mode, $focus, $id=0) { // http://doc.spip.org/@test_mode_inscription function test_mode_inscription($mode) { - return (($mode == 'redac' AND $GLOBALS['meta']['accepter_inscriptions'] == 'oui') - OR ($mode == 'forum' + return (($mode == '1comite' OR ($mode == 'redac') // redac: compatibilite + AND $GLOBALS['meta']['accepter_inscriptions'] == 'oui') + OR ($mode == addslashes($mode) // mode libre mais syntaxe propre AND ($GLOBALS['meta']['accepter_visiteurs'] == 'oui' OR $GLOBALS['meta']['forums_publics'] == 'abo'))); } diff --git a/ecrire/configuration/visiteurs.php b/ecrire/configuration/visiteurs.php index 10c6c01bd81d0f3c1398f46e0f5f7616231d9ec8..19a6ecd16f92fb1b8aa05ccc854c8482840ff8f5 100644 --- a/ecrire/configuration/visiteurs.php +++ b/ecrire/configuration/visiteurs.php @@ -20,21 +20,17 @@ function configuration_visiteurs_dist() { global $spip_lang_left ; - if ($n = ($forums_publics<>'abo')) { - $n = spip_fetch_array(spip_query("SELECT COUNT(*) AS n FROM spip_articles WHERE accepter_forum='abo' LIMIT 1")); - $n = !$n['n']; - } - if ($n) { - $res = "<table border='0' cellspacing='1' cellpadding='3' width=\"100%\">"; - $res .= "\n<tr><td class='verdana2'>"; - $res .= _T('info_question_accepter_visiteurs'); - $res .= "</td></tr>"; - $res .= "\n<tr><td style='text-align: $spip_lang_left' class='verdana2'>"; - $res .= afficher_choix('accepter_visiteurs', $GLOBALS['meta']['accepter_visiteurs'], + if (!avoir_visiteurs()) { + $res = "<table border='0' cellspacing='1' cellpadding='3' width=\"100%\">" + . "\n<tr><td class='verdana2'>" + . _T('info_question_accepter_visiteurs') + . "</td></tr>" + . "\n<tr><td style='text-align: $spip_lang_left' class='verdana2'>" + . afficher_choix('accepter_visiteurs', $GLOBALS['meta']['accepter_visiteurs'], array('oui' => _T('info_option_accepter_visiteurs'), - 'non' => _T('info_option_ne_pas_accepter_visiteurs'))); - $res .= "</td></tr>\n"; - $res .= "</td></tr></table>\n"; + 'non' => _T('info_option_ne_pas_accepter_visiteurs'))) + . "</td></tr>\n" + . "</td></tr></table>\n"; $res = ajax_action_post('configurer', 'visiteurs', 'config_contenu','',$res); } else { diff --git a/ecrire/exec/auteurs.php b/ecrire/exec/auteurs.php index 68ae230bc22c75aea2d465fc86c7d147f23567d8..79d106e4a228b2d5c676e0529734c448fa0bf153 100644 --- a/ecrire/exec/auteurs.php +++ b/ecrire/exec/auteurs.php @@ -19,7 +19,7 @@ function exec_auteurs_dist() { $tri = preg_replace('/\W/', '', _request('tri')); if (!$tri) $tri='nom'; - $statut = preg_replace('/\W/', '', _request('statut')); + $statut = _request('statut'); $result = requete_auteurs($tri, $statut); $nombre_auteurs = spip_num_rows($result); @@ -42,7 +42,7 @@ function exec_auteurs_dist() echo $commencer_page(_T('info_auteurs_par_tri', array('partri' => '')), "auteurs","redacteurs"); - bandeau_auteurs($tri, $statut=='6forum'); + bandeau_auteurs($tri, !statut_min_redac($statut)); echo "<div id='auteurs'>", $res, "</div>"; echo pipeline('affiche_milieu',array('args'=>array('exec'=>'auteurs'),'data'=>'')); @@ -50,6 +50,12 @@ function exec_auteurs_dist() } } +function statut_min_redac($statut) +{ + $x = !$statut OR strpos($statut, "0minirezo") OR strpos($statut, "1comite"); + return $statut[0] =='!' ? !$x : $x; +} + // http://doc.spip.org/@lettres_d_auteurs function lettres_d_auteurs($query, $debut, $max_par_page, $tri) { @@ -106,12 +112,11 @@ function bandeau_auteurs($tri, $visiteurs) $res .= icone_horizontale(_T('icone_informations_personnelles'), generer_url_ecrire("auteur_infos","id_auteur=$connect_id_auteur"), "fiche-perso-24.gif","rien.gif", false); - $n = spip_num_rows(spip_query("SELECT id_auteur FROM spip_auteurs WHERE statut='6forum' LIMIT 1")); - if ($n) { - if ($visiteurs) + if (avoir_visiteurs()) { + if ($visiteurs) $res .= icone_horizontale (_T('icone_afficher_auteurs'), generer_url_ecrire("auteurs"), "auteur-24.gif", "", false); else - $res .= icone_horizontale (_T('icone_afficher_visiteurs'), generer_url_ecrire("auteurs","statut=6forum"), "auteur-24.gif", "", false); + $res .= icone_horizontale (_T('icone_afficher_visiteurs'), generer_url_ecrire("auteurs","statut=!1comite,0minirezo,nouveau"), "auteur-24.gif", "", false); } echo bloc_des_raccourcis($res); } @@ -129,11 +134,11 @@ function auteurs_tranches($auteurs, $debut, $lettre, $tri, $statut, $max_par_pag { global $spip_lang_right; - $arg = $statut ? "&statut=$statut" : ''; + $arg = $statut ? ("&statut=" .urlencode($statut)) : ''; $res ="\n<tr class='toile_gris_moyen'>" . "\n<td style='width: 20px'>"; - if ($tri=='statut' OR $statut !='') + if ($tri=='statut') $res .= http_img_pack('admin-12.gif','', " class='lang'"); else { $t = _T('lien_trier_statut'); @@ -147,10 +152,10 @@ function auteurs_tranches($auteurs, $debut, $lettre, $tri, $statut, $max_par_pag else $res .= auteurs_href(_T('info_nom'), "tri=nom$arg", " title='"._T('lien_trier_nom'). "'"); - $res .= "</td><td>"; - $col = ($statut == '6forum') ? _T('message') : _T('info_articles'); + $col = statut_min_redac($statut) ? _T('info_articles') : _T('message') ; + if ($tri=='nombre') $res .= '<b>' . $col .'</b>'; else @@ -167,9 +172,9 @@ function auteurs_tranches($auteurs, $debut, $lettre, $tri, $statut, $max_par_pag if ($j == $debut) $res .= "<b>$j</b>"; else if ($j > 0) - $res .= auteurs_href($j, "tri=$tri&statut=$statut&debut=$j"); + $res .= auteurs_href($j, "tri=$tri$arg&debut=$j"); else - $res .= auteurs_href('0', "tri=$tri&statut=$statut"); + $res .= auteurs_href('0', "tri=$tri$arg"); if ($debut > $j AND $debut < $j+$max_par_page){ $res .= " | <b>$debut</b>"; } @@ -182,7 +187,7 @@ function auteurs_tranches($auteurs, $debut, $lettre, $tri, $statut, $max_par_pag if ($val == $debut) $res .= "<b>$key</b>\n"; else - $res .= auteurs_href($key, "tri=$tri&statut=$statut&debut=$val") . "\n"; + $res .= auteurs_href($key, "tri=$tri$arg&debut=$val") . "\n"; } $res .= "</td></tr>\n"; } @@ -196,11 +201,11 @@ function auteurs_tranches($auteurs, $debut, $lettre, $tri, $statut, $max_par_pag if ($debut > 0) { $debut_prec = max($debut - $max_par_page, 0); - $nav .= auteurs_href('<<<',"tri=$tri&debut=$debut_prec&statut=$statut"); + $nav .= auteurs_href('<<<',"tri=$tri&debut=$debut_prec$arg"); } $nav .= "</td><td style='text-align: $spip_lang_right'>"; if ($debut_suivant < $nombre_auteurs) { - $nav .= auteurs_href('>>>',"tri=$tri&debut=$debut_suivant&statut=$statut"); + $nav .= auteurs_href('>>>',"tri=$tri&debut=$debut_suivant&$arg"); } $nav .= "</td></tr></table>\n"; } @@ -239,10 +244,14 @@ function requete_auteurs($tri, $statut) // sauf les admins, toujours visibles. // limiter les statuts affiches if ($connect_statut == '0minirezo') { - if ($statut) { - $sql_visible = "aut.statut IN ('$statut')"; - } else { + if (!$statut) { $sql_visible = "aut.statut IN ('0minirezo','1comite','5poubelle')"; + } else { + if ($statut[0]="!") { + $statut = substr($statut,1); $not = " NOT"; + } else $not = ''; + $statut = preg_replace('/\W+/',"','",$statut); + $sql_visible = "aut.statut$not IN ('$statut')"; } } else { $sql_visible = "( @@ -270,12 +279,12 @@ default: $sql_order = " multi"; } - + $visit = ($statut AND ($statut!='1comite') AND ($statut != '0minirezo')); // // La requete de base est tres sympa // (pour les visiteurs, ca postule que les messages concernent des articles) - $row = spip_query("SELECT aut.id_auteur AS id_auteur, aut.statut AS statut, aut.nom AS nom, UPPER(aut.nom) AS unom, count(lien.id_article) as compteur $sql_sel FROM spip_auteurs as aut " . (($statut == '6forum') ? "LEFT JOIN spip_forum AS lien ON aut.id_auteur=lien.id_auteur " : ("LEFT JOIN spip_auteurs_articles AS lien ON aut.id_auteur=lien.id_auteur LEFT JOIN spip_articles AS art ON (lien.id_article = art.id_article)")) . " WHERE $sql_visible GROUP BY aut.id_auteur ORDER BY $sql_order"); + $row = spip_query("SELECT aut.id_auteur AS id_auteur, aut.statut AS statut, aut.nom AS nom, UPPER(aut.nom) AS unom, count(lien.id_article) as compteur $sql_sel FROM spip_auteurs as aut " . ($visit ? "LEFT JOIN spip_forum AS lien ON aut.id_auteur=lien.id_auteur " : ("LEFT JOIN spip_auteurs_articles AS lien ON aut.id_auteur=lien.id_auteur LEFT JOIN spip_articles AS art ON (lien.id_article = art.id_article)")) . " WHERE $sql_visible GROUP BY aut.id_auteur ORDER BY $sql_order"); return $row; } diff --git a/ecrire/inc/auth.php b/ecrire/inc/auth.php index 88f76c281f9f324342252decfb06c6d3369110e7..45daec30573120685761a6adac531f87b8009a72 100644 --- a/ecrire/inc/auth.php +++ b/ecrire/inc/auth.php @@ -71,9 +71,9 @@ function auth_rubrique($id_auteur, $statut) function acces_statut($id_auteur, $statut, $bio) { if ($statut == 'nouveau') { - $statut = ($bio ? ($bio == 'redac' ? '1comite' : '6forum'): - (($GLOBALS['meta']['accepter_inscriptions'] == 'oui') ? '1comite' : '6forum')); - spip_query("UPDATE spip_auteurs SET bio='', statut='$statut' WHERE id_auteur=$id_auteur"); + $statut = $bio ? $bio : + (($GLOBALS['meta']['accepter_inscriptions'] == 'oui') ? '1comite' : '6forum'); + spip_query("UPDATE spip_auteurs SET bio='', statut=" . _q($statut) . " WHERE id_auteur=$id_auteur"); } return $statut; } diff --git a/ecrire/inc/autoriser.php b/ecrire/inc/autoriser.php index 6d15b274f090ce41476a44f583aac0b1a6879f75..101d847cc052a73b2de56742dc85ac144c065fa1 100644 --- a/ecrire/inc/autoriser.php +++ b/ecrire/inc/autoriser.php @@ -159,8 +159,8 @@ function autoriser_rubrique_creersitedans_dist($faire, $type, $id, $qui, $opt) { AND $GLOBALS['meta']['activer_sites'] != 'non' AND ( $qui['statut']=='0minirezo' - OR ($qui['statut']=='1comite' AND $GLOBALS['meta']["proposer_sites"]>=1) - OR ($qui['statut']=='6forum' AND $GLOBALS['meta']["proposer_sites"]>=2) ); + OR ($GLOBALS['meta']["proposer_sites"] >= + ($qui['statut']=='1comite' ? 1 : 2))); } // Autoriser a modifier un site diff --git a/ecrire/inc/boutons.php b/ecrire/inc/boutons.php index f36665209b8e26a7583a0d6e5f175bb0c0519eac..e75e5d3f0531df34e500b7dab526aaca30432530 100644 --- a/ecrire/inc/boutons.php +++ b/ecrire/inc/boutons.php @@ -152,11 +152,9 @@ function definir_barre_boutons() { $sousmenu=array(); - $n = spip_num_rows(spip_query("SELECT id_auteur FROM spip_auteurs WHERE statut='6forum' LIMIT 1")); - - if ($n) + if (avoir_visiteurs()) $sousmenu['auteurs'] = - new Bouton("fiche-perso.png", 'icone_afficher_visiteurs', null, "statut=6forum"); + new Bouton("fiche-perso.png", 'icone_afficher_visiteurs', null, "statut=!1comite,0minirezo,nouveau"); $sousmenu['auteur_infos']= new Bouton("auteur-24.gif", "icone_creer_nouvel_auteur", null, 'new=oui'); diff --git a/ecrire/inc/editer_auteurs.php b/ecrire/inc/editer_auteurs.php index 80a469ed12380e00a4035ee41746f53c0aa4a37b..dd5be03a25d1297477f22f344299dacc2be7dcb6 100644 --- a/ecrire/inc/editer_auteurs.php +++ b/ecrire/inc/editer_auteurs.php @@ -151,7 +151,7 @@ function determiner_non_auteurs($type, $id, $cond_les_auteurs, $order) if (strlen($cond)) $cond = "id_auteur NOT IN (" . substr($cond,1) . ') AND '; - return spip_query("SELECT * FROM spip_auteurs WHERE $cond" . "statut!='5poubelle' AND statut!='6forum' AND statut!='nouveau' ORDER BY $order"); + return spip_query("SELECT * FROM spip_auteurs WHERE $cond" . "statut='0minirezo' OR statut='1comite' ORDER BY $order"); } // http://doc.spip.org/@rechercher_auteurs_objet diff --git a/ecrire/inc/formater_auteur.php b/ecrire/inc/formater_auteur.php index 48a82b1bcaba90b3b053f925309e96a504fa25d3..074aabd9fd1cefcf4e51c2a9d2c35cf67f846362 100644 --- a/ecrire/inc/formater_auteur.php +++ b/ecrire/inc/formater_auteur.php @@ -12,7 +12,6 @@ if (!defined("_ECRIRE_INC_VERSION")) return; - // // Construit un tableau des 5 informations principales sur un auteur, // avec des liens vers les scripts associes: @@ -20,9 +19,12 @@ if (!defined("_ECRIRE_INC_VERSION")) return; // 2. l'icone du mail avec un lien mailto ou a defaut la messagerie de Spip // 3. le nom, avec lien vers la page complete des informations // 4. le mot "site" avec le lien vers le site Web personnelle -// 5. le nombre d'articles publies +// 5. le nombre d'objets publies // +// Un auteur sans autorisation de modification de soi est un visiteur; +// il n'a pas de messagerie interne, et n'a publie que des messages de forum + // http://doc.spip.org/@inc_formater_auteur_dist function inc_formater_auteur_dist($id_auteur) { @@ -54,7 +56,7 @@ function inc_formater_auteur_dist($id_auteur) { if ($url_site_auteur = $row["url_site"]) $vals[] = "<a href='$url_site_auteur'>"._T('info_site_min')."</a>"; else $vals[] = " "; - if ($row['statut'] != '6forum') { + if (autoriser('modifier', 'auteur', $id_auteur, $row)) { $cpt = spip_fetch_array(spip_query("SELECT COUNT(articles.id_article) AS n FROM spip_auteurs_articles AS lien, spip_articles AS articles WHERE lien.id_auteur=$id_auteur AND articles.id_article=lien.id_article AND articles.statut IN " . ($connect_statut == "0minirezo" ? "('prepa', 'prop', 'publie', 'refuse')" : "('prop', 'publie')") . " GROUP BY lien.id_auteur"), SPIP_NUM); $t = _T('info_article_2'); $t1 = _T('info_1_article'); @@ -78,9 +80,8 @@ function formater_auteur_mail($row, $id_auteur) { global $spip_lang_rtl; - $email = $row['email']; - if (($row['statut'] == '6forum') || ($row['statut'] == '5poubelle')) - $href= 'mailto:' . $email; + if (!autoriser('modifier', 'auteur', $id_auteur, $row)) + $href= 'mailto:' . $row['email']; else $href = generer_action_auteur("editer_message","normal/$id_auteur"); return "<a href='$href' title=\"" . _T('info_envoyer_message_prive') diff --git a/ecrire/inc/instituer_auteur.php b/ecrire/inc/instituer_auteur.php index 83e26d72f76155fdf9031cd6b699b656182e4d26..f81652e016e97f01edb7b83005d7d8fbb042d447 100644 --- a/ecrire/inc/instituer_auteur.php +++ b/ecrire/inc/instituer_auteur.php @@ -68,72 +68,56 @@ function choix_statut_auteur($statut, $id_auteur, $ancre) { null, array('statut' => '?'))) return ''; - // Calculer le menu - $menu = "<select name='statut' size='1' class='fondl' - onchange=\"(this.options[this.selectedIndex].value == '0minirezo')?jQuery('#$ancre').slideDown():jQuery('#$ancre:visible').slideUp();\">"; - - // A-t-on le droit de promouvoir cet auteur comme admin ? - if (autoriser('modifier', 'auteur', intval($id_auteur), - null, array('statut' => '0minirezo'))) { - $menu .= "\n<option" . - mySel("0minirezo",$statut) . - ">" . _T('item_administrateur_2') - . '</option>'; - } - - // Ajouter le choix "comite" - $menu .= - "\n<option" . - mySel("1comite",$statut) . - ">" . - _T('intem_redacteur') . - '</option>'; - - // Ajouter le choix "visiteur" si : - // - l'auteur est visiteur - // - OU, on accepte les visiteurs (ou forums sur abonnement) - // - OU il y a des visiteurs dans la base - $x = (($statut == '6forum') - OR ($GLOBALS['meta']['accepter_visiteurs'] == 'oui') - OR ($GLOBALS['meta']['forums_publics'] == 'abo')); - if (!$x) { - $x = spip_fetch_array(spip_query("SELECT COUNT(*) AS n FROM spip_auteurs WHERE statut='6forum' LIMIT 1")); - $x = $x['n']; + $autres = ""; + // Chercher tous les statuts non standards. + // Le count(*) ne sert pas, mais en son absence + // SQL (enfin, une version de SQL) renvoie un ensemble vide ! + $q = spip_query($r ="SELECT statut, count(*) FROM spip_auteurs WHERE statut NOT IN ('" . join("','", $GLOBALS['liste_des_statuts']) . "') GROUP BY statut"); + while ($r = spip_fetch_array($q, SPIP_NUM)) { + $nom = htmlentities($r[0]); + $autres .= mySel($nom, $statut, _T('info_statut_auteur_autre') . ' ' . $nom); } - if ($x) - $menu .= "\n<option" . - mySel("6forum",$statut) . - ">" . - _T('item_visiteur') . - '</option>'; - // Ajouter l'option "nouveau" si l'auteur n'est pas confirme - if ($statut == 'nouveau') - $menu .= "\n<option" . - mySel('nouveau',$statut) . - ">" . - _T('info_statut_auteur_a_confirmer') . - '</option>'; - - // Ajouter l'option "autre" si le statut est inconnu - elseif (!in_array($statut, $GLOBALS['liste_des_statuts'])) - $menu .= "\n<option" . - mySel('autre','autre') . - ">" . - _T('info_statut_auteur_autre').' '.htmlentities($statut). - '</option>'; - - $menu .= "\n<option" . + // Calculer le menu + return "<select name='statut' size='1' class='fondl' + onchange=\"(this.options[this.selectedIndex].value == '0minirezo')?jQuery('#$ancre').slideDown():jQuery('#$ancre:visible').slideUp();\">" + . liste_statuts_instituer($statut, $id_auteur) + . $autres + . "\n<option" . mySel("5poubelle",$statut) . - " style='background:url(" . _DIR_IMG_PACK . "rayures-sup.gif)'>> " + " class='danger'>> " ._T('texte_statut_poubelle') . - '</option>' . - "</select>\n"; + '</option>' + . "</select>\n"; +} + +function liste_statuts_instituer($courant, $id_auteur) { + $recom = array("info_administrateurs" => _T('item_administrateur_2'), + "info_redacteurs" => _T('intem_redacteur'), + "info_visiteurs" => _T('item_visiteur')); + + // A-t-on le droit de promouvoir cet auteur comme admin + // et y a-t-il des visiteurs ? + + $droits = array("info_administrateurs" => + autoriser('modifier', 'auteur', $id_auteur, + null, array('statut' => '0minirezo')), + "info_redacteurs" => true, + "info_visiteurs" => avoir_visiteurs()); + + $menu = ''; + foreach($GLOBALS['liste_des_statuts'] as $k => $v) { + if (isset($recom[$k]) AND $droits[$k]) + $menu .= mySel($v, $courant, $recom[$k]); + + } + // Ajouter l'option "nouveau" si l'auteur n'est pas confirme + if ($courant == 'nouveau') + $menu .= mySel('nouveau',$courant,_T('info_statut_auteur_a_confirmer')); return $menu; } - // http://doc.spip.org/@choix_rubriques_admin_restreint function choix_rubriques_admin_restreint($auteur) { global $connect_toutes_rubriques, $connect_id_auteur, $connect_statut, $spip_lang_right, $spip_lang; diff --git a/ecrire/inc/presentation.php b/ecrire/inc/presentation.php index 5b30ded89540a3aa4ed8d7a6940368b307f07570..7ebc66d1fc46c69927f2e986293818b2e354aee4 100644 --- a/ecrire/inc/presentation.php +++ b/ecrire/inc/presentation.php @@ -694,6 +694,15 @@ function afficher_script_statut($id, $type, $n, $img, $statut, $titre, $act) return "<a href=\"$h\"\ntitle=\"$t\"$act><img src='$i' alt=' '/></a>"; } +function avoir_visiteurs() { + + if ($GLOBALS['meta']["forums_publics"] == 'abo') return true; + if ($GLOBALS['meta']['accepter_visiteurs'] == 'oui') return true; + $n = spip_query("SELECT COUNT(*) AS n FROM spip_articles WHERE accepter_forum='abo' LIMIT 1"); + $n = spip_fetch_array($n); + return $n['n']; +} + // // Afficher des auteurs sur requete SQL // @@ -702,6 +711,9 @@ function bonhomme_statut($row) { global $connect_statut; switch($row['statut']) { + case "nouveau": + return ''; + break; case "0minirezo": return http_img_pack("admin-12.gif", _T('titre_image_administrateur'), "", _T('titre_image_administrateur')); @@ -713,14 +725,10 @@ function bonhomme_statut($row) { return http_img_pack("redac-12.gif",_T('titre_image_redacteur'), "", _T('titre_image_redacteur_02')); break; case "5poubelle": - return http_img_pack("poubelle.gif", _T('titre_image_auteur_supprime'), "",_T('titre_image_auteur_supprime')); + return http_img_pack("poubelle.gif", _T('titre_image_auteur_supprime'), "",_T('titre_image_auteur_supprime')); break; - case "6forum": - return http_img_pack("visit-12.gif", _T('titre_image_visiteur'), "",_T('titre_image_visiteur')); - break; - case "nouveau": default: - return ''; + return http_img_pack("visit-12.gif", _T('titre_image_visiteur'), "",_T('titre_image_visiteur')); break; } } diff --git a/ecrire/install/etape_ldap4.php b/ecrire/install/etape_ldap4.php index e1bc4aa6a6bcc112b7ac60452e9639496044c0d1..b8a5236eb399b2f495fb5ea57379f4339d392be5 100644 --- a/ecrire/install/etape_ldap4.php +++ b/ecrire/install/etape_ldap4.php @@ -62,18 +62,26 @@ function install_etape_ldap4_dist() 'statut_ldap' => array( 'label' => _T('info_statut_utilisateurs_2').'<br />', 'valeur' => '1comite', - 'alternatives' => array( - '6forum' => "<b>"._T('info_visiteur_1')."</b> "._T('info_visiteur_2')."<br />", - '1comite' => "<b>"._T('info_redacteur_1')."</b> "._T('info_redacteur_2')."<br />", - '0minirezo' => "<b>"._T('info_administrateur_1')."</b> "._T('info_administrateur_2')."<br />" + 'alternatives' => liste_statuts_ldap() ) ) - ) - ) + ) . bouton_suivant())); } echo info_progression_etape(4,'etape_ldap','install/'); echo install_fin_html(); } + +function liste_statuts_ldap() { + $recom = array("info_administrateurs" => ("<b>" ._T('info_administrateur_1')."</b> "._T('info_administrateur_2')."<br />"), + "info_redacteurs" => ("<b>"._T('info_redacteur_1')."</b> "._T('info_redacteur_2')."<br />"), + "info_visiteurs" => ("<b>"._T('info_visiteur_1')."</b> "._T('info_visiteur_2')."<br />")); + + $res = array(); + foreach($GLOBALS['liste_des_statuts'] as $k => $v) { + if (isset($recom[$k])) $res[$v] = $recom[$k]; + } + return $res; +} ?>