X-Git-Url: http://git.cyclocoop.org/?a=blobdiff_plain;f=www%2Fprive%2Fformulaires%2Finstituer_objet.php;h=e0e2c45a5c99c3496f3f410c16a9adc4df6fd990;hb=4f443dce95ff6f8221c189880a70c74ce1c1f238;hp=20f03b6fc3769bc639f2a559a5c2d5d793a8709c;hpb=4a628e9b277d3617535f99d663ca79fa2e891177;p=lhc%2Fweb%2Fwww.git diff --git a/www/prive/formulaires/instituer_objet.php b/www/prive/formulaires/instituer_objet.php index 20f03b6f..e0e2c45a 100644 --- a/www/prive/formulaires/instituer_objet.php +++ b/www/prive/formulaires/instituer_objet.php @@ -3,81 +3,111 @@ /***************************************************************************\ * SPIP, Systeme de publication pour l'internet * * * - * Copyright (c) 2001-2016 * + * Copyright (c) 2001-2017 * * Arnaud Martin, Antoine Pitrou, Philippe Riviere, Emmanuel Saint-James * * * * Ce programme est un logiciel libre distribue sous licence GNU/GPL. * * Pour plus de details voir le fichier COPYING.txt ou l'aide en ligne. * \***************************************************************************/ -if (!defined('_ECRIRE_INC_VERSION')) return; +/** + * Gestion du formulaire d'institution (changement de statut) d'un objet + * + * @package SPIP\Core\Formulaires + **/ + +if (!defined('_ECRIRE_INC_VERSION')) { + return; +} include_spip('inc/editer'); include_spip('inc/autoriser'); include_spip('inc/puce_statut'); /** - * filtres les statuts utilisable selon les droits de publication + * Filtres les statuts utilisable selon les droits de publication + * * @param array $desc * @param bool $publiable * @return array */ -function lister_statuts_proposes($desc,$publiable = true){ - if (!isset($desc['statut_textes_instituer'])) +function lister_statuts_proposes($desc, $publiable = true) { + if (!isset($desc['statut_textes_instituer'])) { return false; + } $l = $desc['statut_textes_instituer']; - if (!$publiable){ + if (!$publiable) { unset($l['publie']); unset($l['refuse']); } + return $l; } /** - * Charger #FORMULAIRE_INSTITUER_OBJET + * Chargement du formulaire instituer objet + * + * @uses formulaires_editer_objet_charger() + * * @param string $objet + * Type d'objet * @param int $id_objet + * Identifiant de l'objet * @param string $retour + * URL de redirection après le traitement + * @param bool $editable + * Indique si le statut est éditable ou non. + * Dans tous les cas, si l'on n'a pas la permission de modifier l'objet, + * cette option sera mise à false. * @return array|bool + * Environnement du formulaire ou false si aucun affichage à faire. */ -function formulaires_instituer_objet_charger_dist($objet,$id_objet,$retour="",$editable = true){ - $editable = ($editable?true:false); +function formulaires_instituer_objet_charger_dist($objet, $id_objet, $retour = '', $editable = true) { + $editable = ($editable ? true : false); $table = table_objet_sql($objet); $desc = lister_tables_objets_sql($table); - if (!isset($desc['statut_textes_instituer'])) + if (!isset($desc['statut_textes_instituer'])) { return false; + } - if (!autoriser('modifier', $objet, $id_objet)) + if (!autoriser('modifier', $objet, $id_objet)) { $editable = false; + } // charger le contenu de l'objet // dont son champ statut - $v = formulaires_editer_objet_charger($objet,$id_objet,0,0,'',''); + $v = formulaires_editer_objet_charger($objet, $id_objet, 0, 0, '', ''); $publiable = true; $statuts = lister_statuts_proposes($desc); // tester si on a le droit de publier, si un statut publie existe - if (isset($statuts['publie'])){ - if (!autoriser('instituer', $objet, $id_objet, null, array('statut'=>'publie'))){ - if ($v['statut'] == 'publie') + if (isset($statuts['publie'])) { + if (!autoriser('instituer', $objet, $id_objet, null, array('statut' => 'publie'))) { + if ($v['statut'] == 'publie') { $editable = false; - else + } else { $publiable = false; + } } } + $statuts = lister_statuts_proposes($desc, $editable ? $publiable : true); + if (count($statuts) == 1 and isset($statuts[$v['statut']])) { + $editable = false; + } + $valeurs = array( 'editable' => $editable, 'statut' => $v['statut'], '_objet' => $objet, '_id_objet' => $id_objet, - '_statuts' => lister_statuts_proposes($desc, $editable?$publiable:true), + '_statuts' => $statuts, '_publiable' => $publiable, - '_label' => isset($desc['texte_changer_statut'])?$desc['texte_changer_statut']:'texte_article_statut', - '_aide' => isset($desc['aide_changer_statut'])?$desc['aide_changer_statut']:'', - '_hidden' => "", + '_label' => isset($desc['texte_changer_statut']) ? $desc['texte_changer_statut'] : 'texte_article_statut', + '_aide' => isset($desc['aide_changer_statut']) ? $desc['aide_changer_statut'] : '', + '_hidden' => "", ); #if (!count($valeurs['statuts'])) @@ -85,65 +115,86 @@ function formulaires_instituer_objet_charger_dist($objet,$id_objet,$retour="",$e } /** - * Verifier #FORMULAIRE_INSTITUER_OBJET + * Vérifications du formulaire instituer objet + * + * @uses formulaires_editer_objet_charger() + * * @param string $objet + * Type d'objet * @param int $id_objet + * Identifiant de l'objet * @param string $retour + * URL de redirection après le traitement + * @param bool $editable + * Indique si le statut est éditable ou non. * @return array + * Tableau des erreurs */ -function formulaires_instituer_objet_verifier_dist($objet,$id_objet,$retour="",$editable = true){ +function formulaires_instituer_objet_verifier_dist($objet, $id_objet, $retour = '', $editable = true) { $erreurs = array(); // charger le contenu de l'objet // dont son champ statut - $v = formulaires_editer_objet_charger($objet,$id_objet,0,0,'',''); + $v = formulaires_editer_objet_charger($objet, $id_objet, 0, 0, '', ''); - if ($v['statut']!==_request('statut_old')) + if ($v['statut'] !== _request('statut_old')) { $erreurs['statut'] = _T('instituer_erreur_statut_a_change'); - else { + } else { $table = table_objet_sql($objet); $desc = lister_tables_objets_sql($table); $publiable = true; if (isset($v['id_rubrique']) - AND !autoriser('publierdans', 'rubrique', $v['id_rubrique'])) { + and !autoriser('publierdans', 'rubrique', $v['id_rubrique']) + ) { $publiable = false; } $l = lister_statuts_proposes($desc, $publiable); $statut = _request('statut'); if (!isset($l[$statut]) - OR !autoriser('instituer',$objet,$id_objet,'',array('statut'=>$statut))) + or !autoriser('instituer', $objet, $id_objet, '', array('statut' => $statut)) + ) { $erreurs['statut'] = _T('instituer_erreur_statut_non_autorise'); + } } return $erreurs; } /** - * Traiter #FORMULAIRE_INSTITUER_OBJET + * Traitements du formulaire instituer objet + * * @param string $objet + * Type d'objet * @param int $id_objet + * Identifiant de l'objet * @param string $retour + * URL de redirection après le traitement + * @param bool $editable + * Indique si le statut est éditable ou non. * @return array + * Retour des traitements */ -function formulaires_instituer_objet_traiter_dist($objet,$id_objet,$retour="",$editable = true){ +function formulaires_instituer_objet_traiter_dist($objet, $id_objet, $retour = '', $editable = true) { $c = array('statut' => _request('statut')); // si on a envoye une 'date_posterieure', l'enregistrer // todo dans le HTML - if ($d = _request('date_posterieure')) + if ($d = _request('date_posterieure')) { $c['date'] = $d; + } include_spip('action/editer_objet'); - if ($err=objet_instituer($objet, $id_objet, $c)) - $res = array('message_erreur'=>$err); - else { - $res = array('message_ok'=>_T('info_modification_enregistree')); - if ($retour) + if ($err = objet_instituer($objet, $id_objet, $c)) { + $res = array('message_erreur' => $err); + } else { + $res = array('message_ok' => _T('info_modification_enregistree')); + if ($retour) { $res['redirect'] = $retour; + } set_request('statut'); set_request('date_posterieure'); } return $res; -} \ No newline at end of file +}