[SPIP] v3.2.1-->v3.2.3
[lhc/web/www.git] / www / plugins-dist / urls_etendues / formulaires / editer_url_objet.php
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
13 if (!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 */
24 function 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 */
40 function 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 */
84 function 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 }