[SPIP] +2.1.12
[velocampus/web/www.git] / www / plugins / auto / tradrub / inc / rubrique_select.php
1 <?php
2
3 /***************************************************************************\
4 * SPIP, Systeme de publication pour l'internet *
5 * *
6 * Copyright (c) 2001-2010 *
7 * Arnaud Martin, Antoine Pitrou, Philippe Riviere, Emmanuel Saint-James *
8 * *
9 * Ce programme est un logiciel libre distribue sous licence GNU/GPL. *
10 * Pour plus de details voir le fichier COPYING.txt ou l'aide en ligne. *
11 \***************************************************************************/
12
13 if (!defined("_ECRIRE_INC_VERSION")) return;
14
15 include_spip('inc/autoriser'); // necessaire si appel de l'espace public
16
17 // Recupere les donnees d'un article pour composer un formulaire d'edition
18 // (utilise par formulaire_editer_objet_charger)
19 // id_rubrique = numero de rubrique existant
20 // id_parent = ou veut-on l'installer (pas obligatoire)
21 // lier_trad = l'associer a la rubrique au numero $lier_trad
22 // new=oui = article a creer si on valide le formulaire
23 //
24 function inc_rubrique_select_dist($id_rubrique, $id_parent=0, $lier_trad=0) {
25 global $connect_id_rubrique, $spip_lang;
26
27 if (is_numeric($id_rubrique)) {
28 $row = sql_fetsel("*", "spip_rubriques", "id_rubrique=". sql_quote($id_rubrique));
29 return $row;
30 }
31
32 // id_rubrique non numerique, c'est une demande de creation.
33 // Si c'est une demande de nouvelle traduction, init specifique
34 if ($lier_trad){
35 $row = rubrique_select_trad($lier_trad, $id_parent);
36 $row['statut'] = ''; // le nouvel article n'a pas encore de statut !
37 }
38 else {
39 $row['titre'] = '';//filtrer_entites(_T('info_nouvel_article'));
40 //$row['onfocus'] = " onfocus=\"if(!antifocus){this.value='';antifocus=true;}\"";
41 $row['id_parent'] = $id_parent;
42 }
43
44 // appel du script a la racine, faut choisir
45 // admin restreint ==> sa premiere rubrique
46 // autre ==> la derniere rubrique cree
47 if (!$row['id_parent']) {
48 if ($connect_id_rubrique)
49 $row['id_parent'] = $id_parent = $connect_id_rubrique[0];
50 else {
51 $row_rub = sql_fetsel("id_parent", "spip_rubriques", "", "", "id_rubrique DESC", 1);
52 $row['id_parent'] = $id_parent = $row_rub['id_parent'];
53 }
54 if (!autoriser('creerrubriquedans', 'rubrique', $row['id_parent'] )){
55 // manque de chance, la rubrique n'est pas autorisee, on cherche un des secteurs autorises
56 $res = sql_select("id_rubrique", "spip_rubriques", "id_parent=0");
57 while (!autoriser('creerrubriquedans', 'rubrique', $row['id_parent'] ) && $row_rub = sql_fetch($res)){
58 $row['id_parent'] = $id_parent = $row_rub['id_rubrique'];
59 }
60 }
61 }
62
63 // recuperer le secteur, pour affecter les bons champs extras
64 if (!$row['id_secteur']) {
65 $row_rub = sql_getfetsel("id_secteur", "spip_rubriques", "id_rubrique=" . sql_quote($id_parent));
66 $row['id_secteur'] = $row_rub;
67 }
68
69 return $row;
70 }
71
72 //
73 // Si un article est demande en creation (new=oui) avec un lien de trad,
74 // on initialise les donnees de maniere specifique
75 //
76 function rubrique_select_trad($lier_trad, $id_parent=0) {
77 // Recuperer les donnees de l'article original
78 $row = sql_fetsel("*", "spip_rubriques", "id_rubrique=" . sql_quote($lier_trad));
79 if ($row) {
80 $row['titre'] = filtrer_entites(_T('info_nouvelle_traduction')).' '.$row["titre"];
81
82 } else $row = array();
83
84 if ($id_parent) {
85 $row['id_parent'] = $id_parent;
86 return $row;
87 }
88
89 $id_parent = $row['id_parent'];
90 // Regler la langue, si possible, sur celle du redacteur
91 // Cela implique souvent de choisir une rubrique ou un secteur
92 if (in_array($GLOBALS['spip_lang'],
93 explode(',', $GLOBALS['meta']['langues_multilingue']))) {
94 // langue changeante par rubrique
95 if ($GLOBALS['meta']['multi_rubriques'] == 'oui') {
96 // Sinon, chercher la rubrique la plus adaptee pour
97 // accueillir l'article dans la langue du traducteur
98 if ($GLOBALS['meta']['multi_secteurs'] == 'oui') {
99 $id_parent_parent = 0;
100 } else {
101 // on cherche une rubrique soeur dans la bonne langue
102 $row_rub = sql_fetsel("id_parent", "spip_rubriques", "id_rubrique=$id_parent");
103 $id_parent_parent = $row_rub['id_parent'];
104 }
105 $row_rub = sql_fetsel("id_rubrique", "spip_rubriques", "lang='".$GLOBALS['spip_lang']."' AND id_parent=" . sql_quote($id_parent_parent));
106 if ($row_rub)
107 $row['id_parent'] = $row_rub['id_rubrique'];
108 }
109 }
110 return $row;
111 }
112
113 ?>