[SPIP][PLUGINS] v3.0-->v3.2
[lhc/web/www.git] / www / ecrire / inc / precharger_objet.php
index 5852f4f..8686b59 100644 (file)
@@ -3,41 +3,55 @@
 /***************************************************************************\
  *  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;
+/**
+ * Préchargement les formulaires d'édition d'objets, notament pour les traductions
+ *
+ * @package SPIP\Core\Objets
+ **/
 
-include_spip('inc/autoriser'); // necessaire si appel de l'espace public
+if (!defined('_ECRIRE_INC_VERSION')) {
+       return;
+}
 
+include_spip('inc/autoriser'); // necessaire si appel de l'espace public
 
 
 /**
- * Retourne les valeurs a charger pour un formulaire d'edition d'un objet
- * Lors d'une creation, certains champs peuvent être preremplis (c'est le cas des traductions) 
+ * Retourne les valeurs à charger pour un formulaire d'édition d'un objet
  *
- * @param string $type Type d'objet (article,breve...)
- * @param string|int $id_objet, Identifiant de l'objet, ou "new" pour une creation
- * @param int $id_rubrique, identifiant eventuel de la rubrique parente
- * @param int $lier_trad, identifiant eventuel de la traduction de reference
- * @param string $champ_titre, nom de la colonne SQL de l'objet donnant le titre :
- *                             pas ideal ? on devrait pouvoir le savoir
- *                             dans la declaration de l'objet
- * @return array couples cles / valeurs des champs du formulaire à charger.
-**/
-function precharger_objet($type, $id_objet, $id_rubrique=0, $lier_trad=0, $champ_titre = 'titre') {
-       global $connect_id_rubrique, $spip_lang;
-       
+ * Lors d'une création, certains champs peuvent être préremplis
+ * (c'est le cas des traductions)
+ *
+ * @param string $type
+ *     Type d'objet (article, breve...)
+ * @param string|int $id_objet
+ *     Identifiant de l'objet, ou "new" pour une création
+ * @param int $id_rubrique
+ *     Identifiant éventuel de la rubrique parente
+ * @param int $lier_trad
+ *     Identifiant éventuel de la traduction de référence
+ * @param string $champ_titre
+ *     Nom de la colonne SQL de l'objet donnant le titre : pas vraiment idéal !
+ *     On devrait pouvoir le savoir dans la déclaration de l'objet
+ * @return array
+ *     Couples clés / valeurs des champs du formulaire à charger.
+ **/
+function precharger_objet($type, $id_objet, $id_rubrique = 0, $lier_trad = 0, $champ_titre = 'titre') {
+
        $table = table_objet_sql($type);
        $_id_objet = id_table_objet($table);
 
        // si l'objet existe deja, on retourne simplement ses valeurs
-       if (is_numeric($id_objet))
+       if (is_numeric($id_objet)) {
                return sql_fetsel("*", $table, "$_id_objet=$id_objet");
+       }
 
        // ici, on demande une creation.
        // on prerempli certains elements : les champs si traduction,
@@ -45,15 +59,16 @@ function precharger_objet($type, $id_objet, $id_rubrique=0, $lier_trad=0, $champ
        $desc = lister_tables_objets_sql($table);
        # il faudrait calculer $champ_titre ici
        $is_rubrique = isset($desc['field']['id_rubrique']);
-       $is_secteur  = isset($desc['field']['id_secteur']);
+       $is_secteur = isset($desc['field']['id_secteur']);
 
        // si demande de traduction
        // on recupere les valeurs de la traduction
-       if ($lier_trad){
-               if ($select = charger_fonction("precharger_traduction_" . $type,'inc',true))
+       if ($lier_trad) {
+               if ($select = charger_fonction("precharger_traduction_" . $type, 'inc', true)) {
                        $row = $select($id_objet, $id_rubrique, $lier_trad);
-               else
+               } else {
                        $row = precharger_traduction_objet($type, $id_objet, $id_rubrique, $lier_trad, $champ_titre);
+               }
        } else {
                $row[$champ_titre] = '';
                if ($is_rubrique) {
@@ -68,22 +83,22 @@ function precharger_objet($type, $id_objet, $id_rubrique=0, $lier_trad=0, $champ
                // admin restreint ==> sa premiere rubrique
                // autre ==> la derniere rubrique cree
                if (!$row['id_rubrique']) {
-                       if ($connect_id_rubrique)
-                               $row['id_rubrique'] = $id_rubrique = current($connect_id_rubrique); 
-                       else {
+                       if ($GLOBALS['connect_id_rubrique']) {
+                               $row['id_rubrique'] = $id_rubrique = current($GLOBALS['connect_id_rubrique']);
+                       else {
                                $row_rub = sql_fetsel("id_rubrique", "spip_rubriques", "", "", "id_rubrique DESC", 1);
                                $row['id_rubrique'] = $id_rubrique = $row_rub['id_rubrique'];
                        }
-                       if (!autoriser('creerarticledans','rubrique',$row['id_rubrique'] )){
+                       if (!autoriser('creerarticledans', 'rubrique', $row['id_rubrique'])) {
                                // manque de chance, la rubrique n'est pas autorisee, on cherche un des secteurs autorises
                                $res = sql_select("id_rubrique", "spip_rubriques", "id_parent=0");
-                               while (!autoriser('creerarticledans','rubrique',$row['id_rubrique'] ) && $row_rub = sql_fetch($res)){
+                               while (!autoriser('creerarticledans', 'rubrique', $row['id_rubrique']) && $row_rub = sql_fetch($res)) {
                                        $row['id_rubrique'] = $row_rub['id_rubrique'];
                                }
                        }
                }
        }
-       
+
        // recuperer le secteur, pour affecter les bons champs extras
        if ($id_rubrique and $is_secteur) {
                if (!$row['id_secteur']) {
@@ -97,25 +112,31 @@ function precharger_objet($type, $id_objet, $id_rubrique=0, $lier_trad=0, $champ
 
 
 /**
- * Recupere les valeurs d'une traduction de reference pour la creation
- * d'un objet (preremplissage du formulaire). 
+ * Récupère les valeurs d'une traduction de référence pour la création
+ * d'un objet (préremplissage du formulaire).
  *
- * @param string $type Type d'objet (article,breve...)
- * @param string|int $id_objet, Identifiant de l'objet, ou "new" pour une creation
- * @param int $id_rubrique, identifiant eventuel de la rubrique parente
- * @param int $lier_trad, identifiant eventuel de la traduction de reference
- * @param string $champ_titre, nom de la colonne SQL de l'objet donnant le titre
- * 
- * @return array couples cles / valeurs des champs du formulaire à charger
-**/
-function precharger_traduction_objet($type, $id_objet, $id_rubrique=0, $lier_trad=0, $champ_titre = 'titre') {
+ * @param string $type
+ *     Type d'objet (article, breve...)
+ * @param string|int $id_objet
+ *     Identifiant de l'objet, ou "new" pour une création
+ * @param int $id_rubrique
+ *     Identifiant éventuel de la rubrique parente
+ * @param int $lier_trad
+ *     Identifiant éventuel de la traduction de référence
+ * @param string $champ_titre
+ *     Nom de la colonne SQL de l'objet donnant le titre
+ * @return array
+ *     Couples clés / valeurs des champs du formulaire à charger
+ **/
+function precharger_traduction_objet($type, $id_objet, $id_rubrique = 0, $lier_trad = 0, $champ_titre = 'titre') {
        $table = table_objet_sql($type);
        $_id_objet = id_table_objet($table);
 
        // Recuperer les donnees de l'objet original
        $row = sql_fetsel("*", $table, "$_id_objet=$lier_trad");
        if ($row) {
-               $row[$champ_titre] = filtrer_entites(_T('info_nouvelle_traduction')).' '.$row[$champ_titre];
+               include_spip('inc/filtres');
+               $row[$champ_titre] = filtrer_entites(objet_T($type, 'info_nouvelle_traduction')) . ' ' . $row[$champ_titre];
        } else {
                $row = array();
        }
@@ -123,28 +144,29 @@ function precharger_traduction_objet($type, $id_objet, $id_rubrique=0, $lier_tra
        // on met l'objet dans une rubrique si l'objet le peut
        $desc = lister_tables_objets_sql($table);
        $is_rubrique = isset($desc['field']['id_rubrique']);
-       
+
        if ($is_rubrique) {
                if ($id_rubrique) {
                        $row['id_rubrique'] = $id_rubrique;
+
                        return $row;
                }
                $id_rubrique = $row['id_rubrique'];
-       
+
 
                // Regler la langue, si possible, sur celle du redacteur
                // Cela implique souvent de choisir une rubrique ou un secteur
                if (in_array($GLOBALS['spip_lang'],
-               explode(',', $GLOBALS['meta']['langues_multilingue']))) {
+                       explode(',', $GLOBALS['meta']['langues_multilingue']))) {
 
                        // Si le menu de langues est autorise sur l'objet,
                        // on peut changer la langue quelle que soit la rubrique
                        // donc on reste dans la meme rubrique
-                       if (in_array($table, explode(',',$GLOBALS['meta']['multi_objets']))) {
+                       if (in_array($table, explode(',', $GLOBALS['meta']['multi_objets']))) {
                                $row['id_rubrique'] = $row['id_rubrique']; # explicite :-)
 
-                       // Sinon, chercher la rubrique la plus adaptee pour
-                       // accueillir l'objet dans la langue du traducteur
+                               // Sinon, chercher la rubrique la plus adaptee pour
+                               // accueillir l'objet dans la langue du traducteur
                        } elseif ($is_rubrique and $GLOBALS['meta']['multi_rubriques'] == 'oui') {
                                if ($GLOBALS['meta']['multi_secteurs'] == 'oui') {
                                        $id_parent = 0;
@@ -153,16 +175,15 @@ function precharger_traduction_objet($type, $id_objet, $id_rubrique=0, $lier_tra
                                        $row_rub = sql_fetsel("id_parent", "spip_rubriques", "id_rubrique=$id_rubrique");
                                        $id_parent = $row_rub['id_parent'];
                                }
-                               
-                               $row_rub = sql_fetsel("id_rubrique", "spip_rubriques", "lang='".$GLOBALS['spip_lang']."' AND id_parent=$id_parent");
-                               if ($row_rub)
-                                       $row['id_rubrique'] = $row_rub['id_rubrique'];  
+
+                               $row_rub = sql_fetsel("id_rubrique", "spip_rubriques",
+                                       "lang='" . $GLOBALS['spip_lang'] . "' AND id_parent=$id_parent");
+                               if ($row_rub) {
+                                       $row['id_rubrique'] = $row_rub['id_rubrique'];
+                               }
                        }
                }
        }
+
        return $row;
 }
-
-
-
-?>