From bed6cfc2046a80b151ceea409a537fd37acedab3 Mon Sep 17 00:00:00 2001 From: "Committo,Ergo:sum" <esj@rezo.net> Date: Sat, 30 Jun 2007 07:08:15 +0000 Subject: [PATCH] =?UTF-8?q?Poursuite=20de=20l'utilisation=20syst=C3=A9mati?= =?UTF-8?q?que=20de=20la=20fonction=20autoriser.=20Le=20cas=20publierdansr?= =?UTF-8?q?ubrique=20admet=20un=20numero=20de=20rubrique=20vide,=20ce=20qu?= =?UTF-8?q?i=20sp=C3=A9cifie=20alors=20tous=20les=20admins.=20Un=20coup=20?= =?UTF-8?q?de=20#877=20au=20passage=20(=C3=A9tat:=20872=20/=20478=20/=2012?= =?UTF-8?q?94),=20et=20rappatriement=20des=20=5Frequest=20dans=20les=20fic?= =?UTF-8?q?hiers=20exec/*:=20les=20inc/*=20ne=20doivent=20pas=20en=20conte?= =?UTF-8?q?nir=20si=20on=20veut=20en=20faire=20des=20fonctions=20r=C3=A9ut?= =?UTF-8?q?ilisables=20ailleurs.?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- ecrire/exec/auteur_infos.php | 15 +++- ecrire/inc/auteur_infos.php | 121 ++++++++++--------------------- ecrire/inc/autoriser.php | 4 +- ecrire/inc/chercher_rubrique.php | 2 +- ecrire/inc/instituer_auteur.php | 21 +++--- 5 files changed, 63 insertions(+), 100 deletions(-) diff --git a/ecrire/exec/auteur_infos.php b/ecrire/exec/auteur_infos.php index ba98718ed8..5919e686a0 100644 --- a/ecrire/exec/auteur_infos.php +++ b/ecrire/exec/auteur_infos.php @@ -17,9 +17,12 @@ include_spip('inc/autoriser'); // http://doc.spip.org/@exec_auteur_infos_dist function exec_auteur_infos_dist() { - global $connect_id_auteur; + global $connect_id_auteur, $spip_display; $id_auteur = intval(_request('id_auteur')); + $redirect = _request('redirect'); + $echec = _request('echec'); + $new = _request('new'); pipeline('exec_init', array('args' => array( @@ -38,9 +41,13 @@ function exec_auteur_infos_dist() { $auteur['nom'] = _request('nom'); } - $auteur_infos = charger_fonction('auteur_infos', 'inc'); - $fiche = $auteur_infos($auteur, _request('redirect')); + if (!$auteur AND !$new) { + include_spip('inc/headers'); + redirige_par_entete(generer_url_ecrire('auteurs')); + } + $auteur_infos = charger_fonction('auteur_infos', 'inc'); + $fiche = $auteur_infos($auteur, $new, $echec, _request('edit'), intval(_request('lier_id_article')), $redirect); /* // Si on est appele en ajax, on renvoie la fiche if (_request('var_ajaxcharset')) { @@ -151,7 +158,7 @@ function auteurs_interventions($auteur) { $id_auteur = $auteur['id_auteur']; $statut = $auteur['statut']; - global $connect_statut, $connect_id_auteur; + global $connect_id_auteur; include_spip('inc/message_select'); diff --git a/ecrire/inc/auteur_infos.php b/ecrire/inc/auteur_infos.php index b863f2603f..070904f3e0 100644 --- a/ecrire/inc/auteur_infos.php +++ b/ecrire/inc/auteur_infos.php @@ -12,76 +12,32 @@ if (!defined("_ECRIRE_INC_VERSION")) return; - // Affiche la fiche de renseignements d'un auteur // eventuellement editable // http://doc.spip.org/@inc_auteur_infos_dist -function inc_auteur_infos_dist($auteur, $redirect) { - if (!$auteur['id_auteur']) { - if (_request('new') == 'oui') { - $new = true; - } else { - include_spip('inc/headers'); - redirige_par_entete(generer_url_ecrire('auteurs')); - } - } +function inc_auteur_infos_dist($auteur, $new, $echec, $edit, $id_article, $redirect) { if (!$new) { - $corps = legender_auteur_voir($auteur, $redirect); + $infos = legender_auteur_voir($auteur, $redirect); } else - $corps = ''; - - if (_request('echec')) - $corps .= afficher_erreurs_auteur(_request('echec')); + $infos = ''; + if ($echec) + $infos .= afficher_erreurs_auteur($echec); // Calculer le bloc de statut (modifiable ou non selon) $instituer_auteur = charger_fonction('instituer_auteur', 'inc'); $bloc_statut = $instituer_auteur($auteur); + $id_auteur = intval($auteur['id_auteur']); - // Calculer le formulaire general - if (autoriser('modifier', 'auteur', $auteur['id_auteur'])) { - $corps = legender_auteur_saisir($auteur, $corps, $bloc_statut, $redirect); - } else { - // Indiquer le bloc statut (cas non modifiable) ? - $corps .= $bloc_statut; - } - - return $corps; - -} - -// http://doc.spip.org/@afficher_erreurs_auteur -function afficher_erreurs_auteur($echec) { - foreach (split('@@@',$echec) as $e) - $corps .= '<p>' . _T($e) . "</p>\n"; - - $corps = debut_cadre_relief('', true) - . "<span style='color: red; left-margin: 5px'>" - . http_img_pack("warning.gif", _T('info_avertissement'), "style='width: 48px; height: 48px; float: left; margin: 5px;'") - . $corps - . _T('info_recommencer') - . "</span>\n" - . fin_cadre_relief(true); - - return $corps; -} - - -// http://doc.spip.org/@legender_auteur_saisir -function legender_auteur_saisir($auteur, $auteur_infos_voir, $bloc_statut, $redirect) { - global $options, $connect_statut, $connect_id_auteur, $connect_toutes_rubriques; - - include_spip('inc/autoriser'); - - $id_auteur = $auteur['id_auteur']; - - $setconnecte = ($connect_id_auteur == $id_auteur); + if (!autoriser('modifier', 'auteur', $id_auteur)) + return $infos . $bloc_statut; + $setconnecte = $GLOBALS['auteur_session']['id_auteur'] == $id_auteur; // Elaborer le formulaire - $corps = ''; - $corps .= _T('titre_cadre_signature_obligatoire') + + $corps = _T('titre_cadre_signature_obligatoire') . "(" . _T('entree_nom_pseudo') . ")<br />\n" @@ -124,8 +80,7 @@ function legender_auteur_saisir($auteur, $auteur_infos_voir, $bloc_statut, $redi . fin_cadre_enfonce(true) . "\n<br />"; - if ($options == "avancees" - OR strlen($auteur['pgp'])) { + if ($auteur['pgp']) { $corps .= debut_cadre_enfonce("cadenas-24.gif", true, "", _T('entree_cle_pgp')) . "<textarea name='pgp' class='forml' rows='4' cols='40'>" . entites_html($auteur['pgp']) @@ -149,11 +104,11 @@ function legender_auteur_saisir($auteur, $auteur_infos_voir, $bloc_statut, $redi $edit_login = false; $edit_pass = false; } - else if (($connect_statut == "0minirezo") AND $connect_toutes_rubriques) { + else if (autoriser('modifier', 'auteur', $id_auteur, NULL, array('restreintes' => true))) { $edit_login = true; $edit_pass = true; } - else if ($connect_id_auteur == $id_auteur) { + else if ($setconnecte) { $edit_login = false; $edit_pass = true; } @@ -165,7 +120,7 @@ function legender_auteur_saisir($auteur, $auteur_infos_voir, $bloc_statut, $redi $corps .= debut_cadre_relief("base-24.gif", true); // Avertissement en cas de modifs de ses propres donnees - if (($edit_login OR $edit_pass) AND $connect_id_auteur == $id_auteur) { + if (($edit_login OR $edit_pass) AND $setconnecte) { $corps .= debut_cadre_enfonce('', true) . http_img_pack("warning.gif", _T('info_avertissement'), "style='width: 48px; height: 48px; float: right;margin: 5px;'") @@ -196,13 +151,7 @@ function legender_auteur_saisir($auteur, $auteur_infos_voir, $bloc_statut, $redi $corps .= fin_cadre_relief(true); - - - // - // Retour - // - - $corps = $auteur_infos_voir + $corps = $infos . "<div id='auteur_infos_edit'>\n" . '<div> </div>' . "\n<div class='serif'>" @@ -216,22 +165,19 @@ function legender_auteur_saisir($auteur, $auteur_infos_voir, $bloc_statut, $redi // Installer la fiche "auteur_infos_voir" // et masquer le formulaire si on n'en a pas besoin - $new = ($auteur_infos_voir == ''); - if (!$new - AND !_request('echec') - AND !_request('edit')) { + + if (!$new AND !$echec AND !$edit) { $corps .= "<script>jQuery('#auteur_infos_edit').hide()</script>\n"; } else { $corps .= "<script>jQuery('#auteur_infos_voir').hide()</script>\n"; } - // Formulaire de statut $corps .= $bloc_statut; // Lier a un article (creation d'un auteur depuis un article) - if ($id_article = intval(_request('lier_id_article'))) + if ($id_article) $corps .= "<input type='hidden' name='lier_id_article' value='$id_article' />\n"; // Redirection apres enregistrement ? @@ -241,12 +187,28 @@ function legender_auteur_saisir($auteur, $auteur_infos_voir, $bloc_statut, $redi $corps .= "<div style='text-align: right'><input type='submit' value='"._T('bouton_enregistrer')."' class='fondo' /></div>"; - $arg = intval($id_auteur); - $ret .= generer_action_auteur('editer_auteur', $arg, $redirect, $corps, ' method="POST"'); + return generer_action_auteur('editer_auteur', $id_auteur, $redirect, $corps, ' method="post"'); + +} + +// http://doc.spip.org/@afficher_erreurs_auteur +function afficher_erreurs_auteur($echec) { + foreach (split('@@@',$echec) as $e) + $corps .= '<p>' . _T($e) . "</p>\n"; + + $corps = debut_cadre_relief('', true) + . "<span style='color: red; left-margin: 5px'>" + . http_img_pack("warning.gif", _T('info_avertissement'), "style='width: 48px; height: 48px; float: left; margin: 5px;'") + . $corps + . _T('info_recommencer') + . "</span>\n" + . fin_cadre_relief(true); - return $ret; + return $corps; } + +// http://doc.spip.org/@legender_auteur_saisir // // Apparaitre dans la liste des redacteurs connectes // @@ -283,13 +245,10 @@ function apparait_auteur_infos($id_auteur, $auteur) { // http://doc.spip.org/@legender_auteur_voir function legender_auteur_voir($auteur) { - global $connect_toutes_rubriques, $connect_statut, $connect_id_auteur, $champs_extra, $options, $spip_lang_right; + global $spip_lang_right; $res = ""; - if (!$id_auteur = $auteur['id_auteur']) { - $new = true; - } - + $id_auteur = $auteur['id_auteur']; // Bouton "modifier" ? if (autoriser('modifier', 'auteur', $id_auteur)) { diff --git a/ecrire/inc/autoriser.php b/ecrire/inc/autoriser.php index 5321e91dd5..8375f7b178 100644 --- a/ecrire/inc/autoriser.php +++ b/ecrire/inc/autoriser.php @@ -43,7 +43,7 @@ function autoriser_dist($faire, $type='', $id=0, $qui = NULL, $opt = NULL) { // Qui ? auteur_session ? if ($qui === NULL) - $qui = $GLOBALS['auteur_session']; // "" si pas connecte + $qui = $GLOBALS['auteur_session'] ? $GLOBALS['auteur_session'] : array('statut' => '', 'id_auteur' =>0); elseif (is_numeric($qui)) { $s = spip_query("SELECT * FROM spip_auteurs WHERE id_auteur=".$qui); $qui = spip_fetch_array($s); @@ -125,7 +125,7 @@ function autoriser_rubrique_publierdans_dist($faire, $type, $id, $qui, $opt) { return ($qui['statut'] == '0minirezo') AND ( - !$qui['restreint'] + !$qui['restreint'] OR !$id OR in_array($id, $qui['restreint']) ); } diff --git a/ecrire/inc/chercher_rubrique.php b/ecrire/inc/chercher_rubrique.php index 9f4784ca0d..e22eabfe71 100644 --- a/ecrire/inc/chercher_rubrique.php +++ b/ecrire/inc/chercher_rubrique.php @@ -176,7 +176,7 @@ function selecteur_rubrique_ajax($id_rubrique, $type, $restreint, $idem=0) { $init = " disabled='disabled' type='text' value=\"" . $titre . '" style=\'width:300px;\''; $url = generer_url_ecrire('selectionner',"id=$id_rubrique&type=$type" . (!$idem ? '' : ("&exclus=$idem&racine=" . ($restreint ? 'non' : 'oui'))) - . ($GLOBALS['var_profile'] ? '&var_profile=1' : '')); + . (isset($GLOBALS['var_profile']) ? '&var_profile=1' : '')); return construire_selecteur($url, '', 'selection_rubrique', 'id_parent', $init, $id_rubrique); } diff --git a/ecrire/inc/instituer_auteur.php b/ecrire/inc/instituer_auteur.php index 8d74c9e775..90bd050f2e 100644 --- a/ecrire/inc/instituer_auteur.php +++ b/ecrire/inc/instituer_auteur.php @@ -25,25 +25,22 @@ include_spip('inc/message_select'); // http://doc.spip.org/@inc_instituer_auteur_dist function inc_instituer_auteur_dist($auteur) { - global $connect_toutes_rubriques, $connect_id_auteur, $connect_statut, $spip_lang_right, $spip_lang; - - if ($connect_statut != '0minirezo') return ''; - - $statut = $auteur['statut']; if (!$id_auteur = $auteur['id_auteur']) { - $new = true; $statut = '1comite'; - } + } else $statut = $auteur['statut']; $ancre = "instituer_auteur-" . intval($id_auteur); - if ($menu = choix_statut_auteur($statut, $id_auteur, "$ancre-aff")) - $res = "<b>"._T('info_statut_auteur')."</b> " . $menu; + $menu = choix_statut_auteur($statut, $id_auteur, "$ancre-aff"); + + if (!$menu) return ''; + + $res = "<b>" . _T('info_statut_auteur')."</b> " . $menu; // Prepare le bloc des rubriques restreintes ; // si l'auteur n'est pas admin, on le cache - $vis = ($statut == '0minirezo') ? '' : " style='display: none'"; + $vis = autoriser('publierdans','rubrique') ? '' : " style='display: none'"; if ($menu_restreints = choix_rubriques_admin_restreint($auteur)) $res .= "<div id='$ancre-aff'$vis>" . $menu_restreints @@ -123,7 +120,7 @@ function liste_statuts_instituer($courant, $id_auteur) { // 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; + global $spip_lang; $id_auteur = intval($auteur['id_auteur']); @@ -173,7 +170,7 @@ function choix_rubriques_admin_restreint($auteur) { . "</ul>\n"; // Ajouter une rubrique a un administrateur restreint - if ($connect_toutes_rubriques AND $connect_id_auteur != $id_auteur) { + if (autoriser('modifier', 'auteur', $id_auteur, NULL, array('restreintes' => true))) { $label = $restreint ? _T('info_ajouter_rubrique') -- GitLab