/***************************************************************************\
* 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' => "<input type='hidden' name='statut_old' value='".$v['statut']."' />",
+ '_label' => isset($desc['texte_changer_statut']) ? $desc['texte_changer_statut'] : 'texte_article_statut',
+ '_aide' => isset($desc['aide_changer_statut']) ? $desc['aide_changer_statut'] : '',
+ '_hidden' => "<input type='hidden' name='statut_old' value='" . $v['statut'] . "' />",
);
#if (!count($valeurs['statuts']))
}
/**
- * 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
+}