[SPIP][PLUGINS] v3.0-->v3.2
[lhc/web/www.git] / www / plugins-dist / urls_etendues / formulaires / editer_url_objet.php
index 48e4170..9723ee7 100644 (file)
@@ -10,7 +10,9 @@
  *  Pour plus de details voir le fichier COPYING.txt ou l'aide en ligne.   *
 \***************************************************************************/
 
-if (!defined('_ECRIRE_INC_VERSION')) return;
+if (!defined('_ECRIRE_INC_VERSION')) {
+       return;
+}
 
 /**
  * Chargement des donnees du formulaire
@@ -20,35 +22,51 @@ if (!defined('_ECRIRE_INC_VERSION')) return;
  * @return array
  */
 function formulaires_editer_url_objet_charger_dist($type, $id) {
-       $valeurs = array('url'=>'','_objet'=>$type,'_id_objet'=>$id);
+       $valeurs = array('url' => '', '_objet' => $type, '_id_objet' => $id);
 
        return $valeurs;
 }
 
+/**
+ * Verifier la saisie de l'URL
+ * on peut prefixer par une langue au format
+ * fr:Mon-URL-fr
+ * en:My-english-url
+ * pour specifier la langue de l'URL (mais il faut que le module d'URL la prenne en charge)
+ * @param $type
+ * @param $id
+ * @return array
+ */
 function formulaires_editer_url_objet_verifier_dist($type, $id) {
        $erreurs = array();
        include_spip('action/editer_url');
-       if (!$url = _request('url')){
+       $langue = '';
+       if (!$url = _request('url')) {
                $erreurs['url'] = _T('info_obligatoire');
-       }
-       else {
-               $type_urls = ((isset($GLOBALS['type_urls']) AND $GLOBALS['type_urls']!='page')?$GLOBALS['type_urls']:$GLOBALS['meta']['type_urls']);
-               if ($type_urls=='arbo' AND strpos($url,'/')!==false){
-                       $url = explode('/',$url);
-                       if (count($url)>2)
+       } else {
+               if (preg_match(";^([a-z_]{2,9}):;", $url, $m)
+                 and url_verifier_langue($m[1])) {
+                       $langue = trim($m[1]);
+                       $url = substr($url, strlen($m[0]));
+               }
+
+               $type_urls = (isset($GLOBALS['type_urls']) ? $GLOBALS['type_urls'] : $GLOBALS['meta']['type_urls']);
+               if ($type_urls == 'arbo' and strpos($url, '/') !== false) {
+                       $url = explode('/', $url);
+                       if (count($url) > 2) {
                                $erreurs['url'] = _T('urls:erreur_arbo_2_segments_max');
-                       else{
-                               foreach($url as $u){
+                       } else {
+                               foreach ($url as $u) {
                                        $url_clean[] = url_nettoyer($u, 255);
                                }
-                               $url = implode('/',$url);
-                               $url_clean = implode('/',$url_clean);
+                               $url = implode('/', $url);
+                               $url_clean = implode('/', $url_clean);
                        }
-               }
-               else
+               } else {
                        $url_clean = url_nettoyer($url, 255);
-               if (!isset($erreurs['url']) AND $url!=$url_clean){
-                       set_request('url',$url_clean);
+               }
+               if (!isset($erreurs['url']) and $url != $url_clean) {
+                       set_request('url', ($langue?"$langue:":"") . $url_clean);
                        $erreurs['url'] = _T('urls:verifier_url_nettoyee');
                }
        }
@@ -64,28 +82,40 @@ function formulaires_editer_url_objet_verifier_dist($type, $id) {
  * @return array
  */
 function formulaires_editer_url_objet_traiter_dist($type, $id) {
-       $valeurs = array('editable'=>true);
-
+       $valeurs = array('editable' => true);
        include_spip('action/editer_url');
+
+       $url = _request('url');
+       $langue = '';
+       if (preg_match(";^([a-z_]{2,9}):;", $url, $m)
+         and url_verifier_langue($m[1])) {
+               $langue = trim($m[1]);
+               $url = substr($url, strlen($m[0]));
+       }
+
        // les urls manuelles sont toujours permanentes
-       $set = array('url' => _request('url'), 'type' => $type, 'id_objet' => $id, 'perma'=>1);
+       $set = array('url' => $url, 'type' => $type, 'id_objet' => $id, 'perma' => 1, 'langue' => $langue);
 
-       $type_urls = ((isset($GLOBALS['type_urls']) AND $GLOBALS['type_urls']!='page')?$GLOBALS['type_urls']:$GLOBALS['meta']['type_urls']);
+       $type_urls = (isset($GLOBALS['type_urls']) ? $GLOBALS['type_urls'] : $GLOBALS['meta']['type_urls']);
        if (include_spip("urls/$type_urls")
-               AND function_exists($renseigner_url = "renseigner_url_$type_urls")
-               AND $r = $renseigner_url($type,$id)
-               AND isset($r['parent']))
+               and function_exists($renseigner_url = "renseigner_url_$type_urls")
+               and $r = $renseigner_url($type, $id)
+               and isset($r['parent'])
+       ) {
                $set['id_parent'] = $r['parent'];
+       }
 
        $separateur = "-";
-       if (defined('_url_sep_id')) $separateur = _url_sep_id;
+       if (defined('_url_sep_id')) {
+               $separateur = _url_sep_id;
+       }
 
-       if (url_insert($set,false,$separateur)) {
+       if (url_insert($set, false, $separateur)) {
                set_request('url');
                $valeurs['message_ok'] = _T("urls:url_ajoutee");
-       }
-       else
+       } else {
                $valeurs['message_erreur'] = _T("urls:url_ajout_impossible");
+       }
 
        return $valeurs;
 }