source: spip-zone/_plugins_/unsplash/trunk/formulaires/unsplash_ajout.php @ 94471

Last change on this file since 94471 was 94471, checked in by teddy.spip@…, 5 years ago

Indentation et formatage du code.

File size: 5.6 KB
Line 
1<?php
2
3function formulaires_unsplash_ajout_charger_dist() {
4        // Contexte du formulaire.
5        $contexte = array();
6
7        return $contexte;
8}
9
10/*
11*   Fonction de vérification, cela fonction avec un tableau d'erreur.
12*   Le tableau est formater de la sorte:
13*   if (!_request('NomErreur')) {
14*       $erreurs['message_erreur'] = '';
15*       $erreurs['NomErreur'] = '';
16*   }
17*   Pensez à utiliser _T('info_obligatoire'); pour les éléments obligatoire.
18*/
19function formulaires_unsplash_ajout_verifier_dist() {
20        $erreurs = array();
21        include_spip('base/abstract_sql');
22        $id_new = _request('id_new');
23        $mode = _request('mode');
24        $id_objet = _request('id_objet');
25        $objet = _request('objet');
26        $where = array('id_unsplash='.$id_new, 'mode='.sql_quote($mode));
27        if (isset($id_objet) and isset($objet)) {
28                $where[] = 'id_objet='.$id_objet;
29                $where[] = 'objet='.sql_quote($objet);
30        }
31        /* On vérifie que la photo n'a pas déjà été importé. */
32        $deja_upload = sql_countsel('spip_unsplash', $where);
33        if ($deja_upload) {
34                $erreurs['message_erreur'] = _T('unsplash:photo_deja_importe');
35        }
36        $id_new = trim($id_new);
37        if (empty($id_new) or !isset($id_new)) {
38                $erreurs['message_erreur'] = _T('unsplash:photo_non_selectionnee');
39        }
40        $obligatoires = array('width', 'height');
41        foreach ($obligatoires as $obligatoire) {
42                $valeur = trim(_request($obligatoire));
43                // La valeur renseignée ne doit pas être nulle ni vide
44                if (empty($valeur) or !isset($valeur)) {
45                        $erreurs[$obligatoire] = _T('info_obligatoire');
46                }
47                // La valeur doit être un nombre positif et supérieur à 0.
48                if ($valeur = intval($valeur) and !is_int($valeur) and ($valeur == 0 or $valeur < 0)) {
49                        $erreurs[$obligatoire] = _T('unsplash:valeur_entiere_attendue');
50                }
51        }
52
53        return $erreurs;
54}
55
56function formulaires_unsplash_ajout_traiter_dist() {
57        include_spip('base/abstract_sql');
58        include_spip('base/objets');
59        include_spip('inc/distant');
60        include_spip('inc/documents');
61        include_spip('inc/utils');
62        $extension = 'jpg';
63        //Traitement du formulaire.
64        $_width = _request('width');
65        $_height = _request('height');
66        $id_objet = _request('id_objet');
67        $objet = _request('objet');
68        $mode = _request('mode');
69        $id_new = _request('id_new');
70        $id_unsplash = _request('id_unsplash');
71        $resultats = array('editable' => true, 'message_erreur' => _T('unsplash:erreur_formulaire'), 'redirect' => '');
72
73        $unsplash_list = json_decode(file_get_contents(_UNSPLASH_JSON), true);
74        $_index_photo = array_search($id_new, array_column($unsplash_list, 'id'));
75        $photo_infos = $unsplash_list[$_index_photo];
76
77        if (is_array($photo_infos)) {
78                $photo_infos['id_unsplash'] = $photo_infos['id'];
79                unset($photo_infos['id']); /* On ne garde plus ce champ devenu id_unsplash */
80                $photo_infos['date_ajout'] = date('Y-m-d H:i:s'); /* On indique la date d'ajout */
81                $photo_infos['mode'] = $mode; /* On indique le mode de document pour lequel est utilisé cette photo : document, normal, survol */
82                if ($mode == 'document') {
83                        $photo_infos['objet'] = objet_type('documents');
84                }
85        }
86        if ($photo_infos['format'] === 'jpeg') {
87                $extension = 'jpg';
88        } elseif ($photo_infos['format'] === 'png') {
89                $extension = 'png';
90        }
91        $import_filename = explode('.', $photo_infos['filename']);
92        $import_filename = $import_filename[0];
93        $import_distant = _UNSPLASH_URL.$_width.'/'.$_height.'/?image='.$id_new;
94        $import_photo = _DIR_RACINE.copie_locale($import_distant);
95        /*
96         * On est ici dans le cadre d'un import d'une photo Unsplash en tant que document
97         */
98        if ($mode === 'document') {
99                $import_dir = _DIR_IMG.$extension.'/';
100                $import_destination = $import_dir.$import_filename.'.'.$extension;
101                $import_result = deplacer_fichier_upload($import_photo, $import_destination, true);
102                if ($import_result) {
103                        $document_info = array(
104                                'extension' => $extension,
105                                'date' => $photo_infos['date_ajout'],
106                                'fichier' => set_spip_doc($import_destination),
107                                'taille' => filesize($import_destination),
108                                'largeur' => $_width,
109                                'hauteur' => $_height,
110                                'mode' => 'image',
111                                'statut' => 'prepa',
112                                'distant' => 'non',
113                                'date_publication' => $photo_infos['date_ajout'],
114                                'credits' => '['.$photo_infos['author'].'->'.$photo_infos['author_url'].']',
115                                'media' => 'image',
116                        );
117                        $_id_document = sql_insertq('spip_documents', $document_info);
118                        $photo_infos['id_objet'] = $_id_document; // On indique l'identifiant du document fraichement inséré dans la BDD
119                        $photo_infos['objet'] = objet_type('documents'); // On indique l'objet
120                        sql_insertq('spip_unsplash', $photo_infos);
121                        $resultats = array('editable' => true, 'message_ok' => _T('unsplash:importation_reussie_document'), 'redirect' => generer_url_ecrire('unsplash'));
122                }
123        } else {
124                /*
125                 * Ici on importe uen photo Unsplash en tant que logo
126                 */
127                echo 'On importe un logo <br/>';
128                include_spip('inc/chercher_logo');
129                $import_dir = _DIR_LOGOS;
130                $id_table_objet = id_table_objet($objet); // On cherche la clé primaire de l'objet
131                $_mode_logo = ($mode === 'normal') ? 'on' : 'off'; // Le mode du logo désiré
132                $import_destination = $import_dir.type_du_logo($id_table_objet).$_mode_logo.$id_objet.'.'.$extension; // On construit le futur logo de l'objet
133                $import_result = deplacer_fichier_upload($import_photo, $import_destination, true); // On déplace la photo Unsplash vers le logo de l'objet
134                $photo_infos['id_objet'] = $id_objet;
135                $photo_infos['objet'] = $objet;
136                if ($import_result) {
137                        sql_insertq('spip_unsplash', $photo_infos); // On insère la trace de la photo dans la BDD.
138                        $resultats = array('editable' => true, 'message_ok' => _T('unsplash:importation_reussie_logo'), 'redirect' => generer_url_ecrire($objet, $id_table_objet.'='.$id_objet));
139                }
140        }
141
142        // Donnée de retour.
143        return $resultats;
144}
Note: See TracBrowser for help on using the repository browser.