[SPIP][PLUGINS] v3.0-->v3.2
[lhc/web/www.git] / www / prive / formulaires / traduire.php
index 998afaa..703ce65 100644 (file)
@@ -3,53 +3,72 @@
 /***************************************************************************\
  *  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 de traduction
+ *
+ * @package SPIP\Core\Formulaires
+ **/
+
+if (!defined('_ECRIRE_INC_VERSION')) {
+       return;
+}
 
 include_spip('inc/actions');
 include_spip('inc/editer');
 
 /**
- * Charger les donnes de #FORMULAIRE_TRADUIRE
+ * Charger les données de #FORMULAIRE_TRADUIRE
  *
  * @param string $objet
+ *     Type d'objet
  * @param int $id_objet
+ *     Identifiant de l'objet
  * @param string $retour
- *   url de retour
+ *     URL de retour
  * @param bool $traduire
- *   permet de desactiver la gestion de traduction sur un objet ayant id_trad
+ *     Permet de désactiver la gestion de traduction sur un objet ayant id_trad
  * @return array|bool
+ *     False si l'identifiant n'est pas numérique ou si l'objet n'a pas de langue
+ *     Contexte à transmettre au squelette du formulaire sinon
  */
-function formulaires_traduire_charger_dist($objet, $id_objet, $retour='', $traduire = true){
-       if (!intval($id_objet))
+function formulaires_traduire_charger_dist($objet, $id_objet, $retour = '', $traduire = true) {
+       if (!intval($id_objet)) {
                return false;
-       $valeurs = formulaires_editer_objet_charger($objet,$id_objet,null,0,$retour,'');
+       }
+       $valeurs = formulaires_editer_objet_charger($objet, $id_objet, null, 0, $retour, '');
        // verifier que l'objet indique possede bien des champs id_trad et lang
        // attention, charger renomme lang => langue pour ne pas perturber la langue d'affichage du squelette
-       if (!isset($valeurs['langue']))
+       if (!isset($valeurs['langue'])) {
                return false;
+       }
 
-       $valeurs['editable'] = autoriser('changerlangue',$objet,$id_objet);
+       $valeurs['editable'] = autoriser('changerlangue', $objet, $id_objet);
        $valeurs['_langue'] = '';
        $langue_parent = '';
        $id_parent = '';
-       if (isset($valeurs['id_rubrique']))
+       if (isset($valeurs['id_rubrique'])) {
                $id_parent = $valeurs['id_rubrique'];
-       if (isset($valeurs['id_parent']))
-                $id_parent = $valeurs['id_parent'];    
-       if ($id_parent)
-               $langue_parent = sql_getfetsel("lang", "spip_rubriques", "id_rubrique=".intval($id_parent));
-       
-       if (!$langue_parent)
+       }
+       if (isset($valeurs['id_parent'])) {
+               $id_parent = $valeurs['id_parent'];
+       }
+       if ($id_parent) {
+               $langue_parent = sql_getfetsel('lang', 'spip_rubriques', 'id_rubrique=' . intval($id_parent));
+       }
+
+       if (!$langue_parent) {
                $langue_parent = $GLOBALS['meta']['langue_site'];
+       }
        if ($valeurs['editable']
-               AND in_array(table_objet_sql($objet),explode(',',$GLOBALS['meta']['multi_objets']))){
+               and in_array(table_objet_sql($objet), explode(',', $GLOBALS['meta']['multi_objets']))
+       ) {
                $valeurs['_langue'] = $valeurs['langue'];
        }
        $valeurs['langue_parent'] = $langue_parent;
@@ -59,85 +78,111 @@ function formulaires_traduire_charger_dist($objet, $id_objet, $retour='', $tradu
        $valeurs['changer_lang'] = '';
 
 
+       $valeurs['_traduisible'] = autoriser('changertraduction', $objet, $id_objet);
        $valeurs['_traduire'] = '';
        if (isset($valeurs['id_trad'])) {
-               $valeurs['_traduire'] = ($traduire?' ':'');
-               $valeurs['_vue_traductions'] = "prive/objets/liste/" . (trouver_fond($f=table_objet($objet)."-trad","prive/objets/liste")?$f:"objets-trad");
-               // pour afficher la liste des trad sur la base de l'id_trad en base
-               // independamment d'une saisie en cours sur id_trad
-               $valeurs['_lister_id_trad'] = $valeurs['id_trad'];
-               $valeurs['_id_parent'] = $id_parent;
+               $valeurs['_traduire'] = ($traduire ? ' ' : '');
+               if ($valeurs['_traduisible']) {
+                       $valeurs['_vue_traductions'] = 'prive/objets/liste/' . (trouver_fond(
+                               $f = table_objet($objet) . '-trad',
+                               'prive/objets/liste'
+                       ) ? $f : 'objets-trad');
+                       // pour afficher la liste des trad sur la base de l'id_trad en base
+                       // independamment d'une saisie en cours sur id_trad
+                       $valeurs['_lister_id_trad'] = $valeurs['id_trad'];
+                       $valeurs['_id_parent'] = $id_parent;
+               }
        }
 
-       $valeurs['_saisie_en_cours'] = (!_request('annuler') AND (_request('changer_lang')!==null OR _request('changer_id_trad')!==null));
-       $valeurs['_pipeline'] = array('traduire',array('type'=>$objet,'id'=>$id_objet));
+       $valeurs['_saisie_en_cours'] = (!_request('annuler') and (_request('changer_lang') !== null
+               or _request('changer_id_trad') !== null));
+       $valeurs['_pipeline'] = array('traduire', array('type' => $objet, 'id' => $id_objet));
 
        return $valeurs;
 }
 
 /**
- * Verifier les saisies des valeurs du #FORMULAIRE_TRADUIRE
+ * Vérifier les saisies des valeurs du #FORMULAIRE_TRADUIRE
  *
  * @param string $objet
+ *     Type d'objet
  * @param int $id_objet
+ *     Identifiant de l'objet
  * @param string $retour
+ *     URL de retour
  * @param bool $traduire
+ *     Permet de désactiver la gestion de traduction sur un objet ayant id_trad
  * @return array
+ *     Erreurs des saisies
  */
-function formulaires_traduire_verifier_dist($objet, $id_objet, $retour='', $traduire = true){
+function formulaires_traduire_verifier_dist($objet, $id_objet, $retour = '', $traduire = true) {
        $erreurs = array();
 
        if (null !== _request('changer_lang')) {
-               $erreurs = formulaires_editer_objet_verifier($objet,$id_objet,array('changer_lang'));
+               $erreurs = formulaires_editer_objet_verifier($objet, $id_objet, array('changer_lang'));
        }
 
        // si id_trad fourni, verifier que cela ne conflicte pas avec un id_trad existant
        // et que ca reference bien un objet existant
-       if ($id_trad = _request('id_trad')){
+       if ($id_trad = _request('id_trad')) {
                $table_objet_sql = table_objet_sql($objet);
                $_id_table_objet = id_table_objet($objet);
-               if (sql_getfetsel('id_trad',$table_objet_sql,"$_id_table_objet=".intval($id_objet)))
-                        // ne devrait jamais arriver sauf concurence de saisie
+               if (sql_getfetsel(
+                       'id_trad',
+                       $table_objet_sql,
+                       "$_id_table_objet=" . intval($id_objet)
+               )) {
+                       // ne devrait jamais arriver sauf concurence de saisie
                        $erreurs['id_trad'] = _L('Une traduction est deja referencee');
-               elseif (!sql_getfetsel($_id_table_objet,$table_objet_sql,"$_id_table_objet=".intval($id_trad)))
+               } elseif (!sql_getfetsel($_id_table_objet, $table_objet_sql, "$_id_table_objet=" . intval($id_trad))) {
                        $erreurs['id_trad'] = _L('Indiquez un contenu existant');
+               }
        }
+
        return $erreurs;
 }
 
 
 /**
  * Enregistrer en base les saisies du #FORMULAIRE_TRADUIRE
- * @param  $objet
- * @param  $id_objet
+ *
+ * @param string $objet
+ *     Type d'objet
+ * @param int $id_objet
+ *     Identifiant de l'objet
  * @param string $retour
+ *     URL de retour
+ * @param bool $traduire
+ *     Permet de désactiver la gestion de traduction sur un objet ayant id_trad
  * @return array
+ *     Retour des traitements
  */
-function formulaires_traduire_traiter_dist($objet, $id_objet, $retour='', $traduire = true){
+function formulaires_traduire_traiter_dist($objet, $id_objet, $retour = '', $traduire = true) {
        $res = array();
-       if (!_request('annuler') AND autoriser('changerlangue',$objet,$id_objet)) {
+       if (!_request('annuler') and autoriser('changerlangue', $objet, $id_objet)) {
                // action/editer_xxx doit traiter la modif de changer_lang
-               $res = formulaires_editer_objet_traiter($objet,$id_objet,0,0,$retour);
-
-               if ($id_trad=_request('id_trad') OR _request('supprimer_trad')){
-                       $referencer_traduction = charger_fonction('referencer_traduction','action');
+               $res = formulaires_editer_objet_traiter($objet, $id_objet, 0, 0, $retour);
+       }
+       if (!_request('annuler') and autoriser('changertraduction', $objet, $id_objet)) {
+               if ($id_trad = _request('id_trad') or _request('supprimer_trad')) {
+                       $referencer_traduction = charger_fonction('referencer_traduction', 'action');
                        $referencer_traduction($objet, $id_objet, intval($id_trad)); // 0 si supprimer_trad
-               }
-               elseif ($new_id_trad = _request('changer_reference_trad')
-                 AND $new_id_trad = array_keys($new_id_trad)
-                 AND $new_id_trad = reset($new_id_trad)){
+               } elseif ($new_id_trad = _request('changer_reference_trad')
+                       and $new_id_trad = array_keys($new_id_trad)
+                       and $new_id_trad = reset($new_id_trad)
+               {
                        $table_objet_sql = table_objet_sql($objet);
                        $_id_table_objet = id_table_objet($objet);
-                       if ($id_trad = sql_getfetsel('id_trad',$table_objet_sql,"$_id_table_objet=".intval($id_objet))){
-                               $referencer_traduction = charger_fonction('referencer_traduction','action');
+                       if ($id_trad = sql_getfetsel('id_trad', $table_objet_sql, "$_id_table_objet=" . intval($id_objet))) {
+                               $referencer_traduction = charger_fonction('referencer_traduction', 'action');
                                $referencer_traduction($objet, $id_trad, $new_id_trad);
                        }
                }
        }
        $res['editable'] = true;
-       if (!$res['message_erreur'])
-               set_request('annuler','annuler'); // provoquer la fermeture du forumlaire
+       if (!isset($res['message_erreur'])) {
+               set_request('annuler', 'annuler');
+       } // provoquer la fermeture du forumlaire
+
        return $res;
 }
-
-?>