source: spip-zone/_core_/branches/spip-3.2/plugins/urls_etendues/formulaires/editer_url_objet.php @ 113345

Last change on this file since 113345 was 113345, checked in by spip.franck@…, 19 months ago

Le futur, c'est aussi maintenant ici :-)

File size: 3.5 KB
Line 
1<?php
2
3/***************************************************************************\
4 *  SPIP, Systeme de publication pour l'internet                           *
5 *                                                                         *
6 *  Copyright (c) 2001-2019                                                *
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
13if (!defined('_ECRIRE_INC_VERSION')) {
14        return;
15}
16
17/**
18 * Chargement des donnees du formulaire
19 *
20 * @param string $type
21 * @param int $id
22 * @return array
23 */
24function formulaires_editer_url_objet_charger_dist($type, $id) {
25        $valeurs = array('url' => '', '_objet' => $type, '_id_objet' => $id);
26
27        return $valeurs;
28}
29
30/**
31 * Verifier la saisie de l'URL
32 * on peut prefixer par une langue au format
33 * fr:Mon-URL-fr
34 * en:My-english-url
35 * pour specifier la langue de l'URL (mais il faut que le module d'URL la prenne en charge)
36 * @param $type
37 * @param $id
38 * @return array
39 */
40function formulaires_editer_url_objet_verifier_dist($type, $id) {
41        $erreurs = array();
42        include_spip('action/editer_url');
43        $langue = '';
44        if (!$url = _request('url')) {
45                $erreurs['url'] = _T('info_obligatoire');
46        } else {
47                if (preg_match(";^([a-z_]{2,9}):;", $url, $m)
48                  and url_verifier_langue($m[1])) {
49                        $langue = trim($m[1]);
50                        $url = substr($url, strlen($m[0]));
51                }
52
53                $type_urls = (isset($GLOBALS['type_urls']) ? $GLOBALS['type_urls'] : $GLOBALS['meta']['type_urls']);
54                if ($type_urls == 'arbo' and strpos($url, '/') !== false) {
55                        $url = explode('/', $url);
56                        if (count($url) > 2) {
57                                $erreurs['url'] = _T('urls:erreur_arbo_2_segments_max');
58                        } else {
59                                foreach ($url as $u) {
60                                        $url_clean[] = url_nettoyer($u, 255);
61                                }
62                                $url = implode('/', $url);
63                                $url_clean = implode('/', $url_clean);
64                        }
65                } else {
66                        $url_clean = url_nettoyer($url, 255);
67                }
68                if (!isset($erreurs['url']) and $url != $url_clean) {
69                        set_request('url', ($langue?"$langue:":"") . $url_clean);
70                        $erreurs['url'] = _T('urls:verifier_url_nettoyee');
71                }
72        }
73
74        return $erreurs;
75}
76
77/**
78 * Traitement
79 *
80 * @param string $type
81 * @param int $id
82 * @return array
83 */
84function formulaires_editer_url_objet_traiter_dist($type, $id) {
85        $valeurs = array('editable' => true);
86        include_spip('action/editer_url');
87
88        $url = _request('url');
89        $langue = '';
90        if (preg_match(";^([a-z_]{2,9}):;", $url, $m)
91          and url_verifier_langue($m[1])) {
92                $langue = trim($m[1]);
93                $url = substr($url, strlen($m[0]));
94        }
95
96        // les urls manuelles sont toujours permanentes
97        $set = array('url' => $url, 'type' => $type, 'id_objet' => $id, 'perma' => 1, 'langue' => $langue);
98
99        $type_urls = (isset($GLOBALS['type_urls']) ? $GLOBALS['type_urls'] : $GLOBALS['meta']['type_urls']);
100        if (include_spip("urls/$type_urls")
101                and function_exists($renseigner_url = "renseigner_url_$type_urls")
102                and $r = $renseigner_url($type, $id)
103                and isset($r['parent'])
104        ) {
105                $set['id_parent'] = $r['parent'];
106        }
107
108        $separateur = "-";
109        if (defined('_url_sep_id')) {
110                $separateur = _url_sep_id;
111        }
112
113        if (url_insert($set, false, $separateur)) {
114                set_request('url');
115                $valeurs['message_ok'] = _T("urls:url_ajoutee");
116        } else {
117                $valeurs['message_erreur'] = _T("urls:url_ajout_impossible");
118        }
119
120        return $valeurs;
121}
Note: See TracBrowser for help on using the repository browser.