source: spip-zone/_plugins_/shortcut_url/trunk/formulaires/shortcut_url.php @ 96600

Last change on this file since 96600 was 96600, checked in by cyp@…, 3 years ago

Optimise export (ajout index sur id pour soulager la requête count)

File size: 4.4 KB
Line 
1<?php
2/**
3 * shortcut_url
4 *
5 * @plugin     shortcut_url
6 * @copyright  2015
7 * @author     cyp
8 * @licence    GNU/GPL
9 * @package    SPIP\formulaires\shortcut_url
10 */
11
12/**
13 * Gestion du formulaire de shortcut_url des sites
14 *
15 * @package SPIP\Formulaires
16**/
17if (!defined('_ECRIRE_INC_VERSION')) return;
18
19/**
20 * Chargement du formulaire de configuration du shortcut_url
21 *
22 * @return array
23 *     Environnement du formulaire
24**/
25function formulaires_shortcut_url_charger_dist($id_shortcut_url='new', $objet='', $id_objet='', $retour='', $ajaxload='oui', $options=''){
26
27        $valeurs = array();
28        $req = sql_fetsel('*', 'spip_shortcut_urls', 'id_shortcut_url=' . intval($id_shortcut_url));
29
30        if($req) {
31                foreach ($req as $cle => $valeur) {
32                        $valeurs["$cle"] = $valeur;
33                }
34        }
35
36        if(_request('id_shortcut_url_existe'))
37                $valeurs['id_shortcut_url_existe'] = _request('id_shortcut_url_existe');
38
39        if($url = _request('url')){
40                $valeurs['url'] = $url;
41        }
42        if($titre = _request('titre')){
43                $valeurs['titre'] = $titre;
44        }
45
46        return $valeurs;
47       
48}
49
50/**
51 * Vérifications du formulaire de shortcut_url
52 *
53 * @return array
54 *     Tableau des erreurs
55**/
56function formulaires_shortcut_url_verifier_dist($id_shortcut_url='new', $objet='', $id_objet='', $retour='', $ajaxload='oui', $options=''){
57
58        $erreurs = array();
59        if (!$url = _request('url'))
60                $erreurs['url'] = _T("info_obligatoire");
61        // Check si il existe le http://
62        else{
63                $parsed = parse_url($url );
64                if (filter_var($url, FILTER_VALIDATE_URL) === false) {
65                        $erreurs['url'] = _T("shortcut_url:erreur_url_invalide");
66                }
67                else{
68                        // On supprime ?var_mode=recalcul et autres var_mode (cf traiter aussi)
69                        $url = parametre_url($url,'var_mode','');
70                        // Check si l'URL existe deja
71                        if (($id_shortcut_url=="oui") && ($id_shortcut_url_existe = sql_getfetsel('id_shortcut_url','spip_shortcut_urls', 'url=' . sql_quote($url)))){
72                                set_request('id_shortcut_url_existe',$id_shortcut_url_existe);
73                                $erreurs['url'] = _T("shortcut_url:erreur_url_exist");
74                        }
75                }
76        }
77        // On vérifie que l'URL raccourcie n'existe pas
78        if(_request('titre')) {
79                $id_shortcut_url_existe = sql_getfetsel('id_shortcut_url', 'spip_shortcut_urls', 'titre=' . sql_quote(_request('titre')));
80                if($id_shortcut_url_existe){
81                        set_request('id_shortcut_url_existe',$id_shortcut_url_existe);
82                        $erreurs['titre'] = _T("shortcut_url:erreur_url_raccourcis_exist");
83                }
84
85        }
86
87        return $erreurs;
88
89}
90
91/**
92 * Traitement du formulaire de configuration du shortcut_url
93 *
94 * @return array
95 *     Retours du traitement
96**/
97function formulaires_shortcut_url_traiter_dist($id_shortcut_url='new', $objet='', $id_objet='', $retour='', $ajaxload='oui', $options=''){
98        include_spip('inc/distant');
99        $recup = recuperer_page(_request('url'), true);
100        if (preg_match(',<title[^>]*>(.*),i', $recup, $regs))
101                $result['nom_site'] = filtrer_entites(supprimer_tags(preg_replace(',</title>.*,i', '', $regs[1])));
102
103        if (defined('_TAILLE_RACCOURCI')) {
104                if(_TAILLE_RACCOURCI > 5)
105                        $taille_raccourci = _TAILLE_RACCOURCI;
106                else
107                        $taille_raccourci = 5;
108        } else
109                $taille_raccourci = 5;
110
111        $set = array();
112        $set['id_shortcut_url'] = $id_shortcut_url;
113        if(_request('titre'))
114                $set['titre'] = _request('titre');
115        else
116                $set['titre'] = generer_chaine_aleatoire($taille_raccourci);
117        $set['description'] = $result['nom_site'];
118        // On supprime ?var_mode=recalcul et autres var_mode
119        $set['url'] = parametre_url(_request('url'),'var_mode','');
120        $set['ip_address'] = $_SERVER['REMOTE_ADDR'];
121        $set['date_modif'] = date('Y-m-d H:i:s');
122        $set['maj'] = date('Y-m-d H:i:s');
123
124        if($id_shortcut_url == 'oui') {
125                $set['id_shortcut_url'] = sql_insertq('spip_shortcut_urls', $set);
126                // Insertion de l'auteur à l'arrache
127                $auteur = sql_insertq('spip_auteurs_liens', array('id_auteur' => $GLOBALS['visiteur_session']['id_auteur'], 'id_objet' => $set['id_shortcut_url'], 'objet' => 'shortcut_url'));
128                $url = generer_url_entite($set['id_shortcut_url'],'shortcut_url','','',true);
129                $res = array('redirect' => self());
130        } else {
131                sql_delete("spip_urls", "id_objet=".intval($id_shortcut_url)." AND type=".sql_quote('shortcut_url'));
132                sql_updateq('spip_shortcut_urls', $set, 'id_shortcut_url=' . intval($id_shortcut_url));
133                $url = generer_url_entite($id_shortcut_url,'shortcut_url','','',true);
134                $res = array('redirect' => self(), 'id_shortcut_url' => $id_shortcut_url);
135        }
136
137        return array('editable' => false, 'message_ok'=>_T('config_info_enregistree'), 'redirect'=>$res);
138
139}
140
141?>
Note: See TracBrowser for help on using the repository browser.