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

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

Fin du formatage selon la norme SPIP.

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(
122                                'editable' => true,
123                                'message_ok' => _T('unsplash:importation_reussie_document'),
124                                'redirect' => generer_url_ecrire('unsplash'),
125                        );
126                }
127        } else {
128                /*
129                 * Ici on importe uen photo Unsplash en tant que logo
130                 */
131                include_spip('inc/chercher_logo');
132                $import_dir = _DIR_LOGOS;
133                $id_table_objet = id_table_objet($objet); // On cherche la clé primaire de l'objet
134                $_mode_logo = ($mode === 'normal') ? 'on' : 'off'; // Le mode du logo désiré
135                $import_destination = $import_dir . type_du_logo($id_table_objet) . $_mode_logo . $id_objet . '.' . $extension; // On construit le futur logo de l'objet
136                $import_result = deplacer_fichier_upload($import_photo, $import_destination, true); // On déplace la photo Unsplash vers le logo de l'objet
137                $photo_infos['id_objet'] = $id_objet;
138                $photo_infos['objet'] = $objet;
139                if ($import_result) {
140                        sql_insertq('spip_unsplash', $photo_infos); // On insère la trace de la photo dans la BDD.
141                        $resultats = array(
142                                'editable' => true,
143                                'message_ok' => _T('unsplash:importation_reussie_logo'),
144                                'redirect' => generer_url_ecrire($objet, $id_table_objet . '=' . $id_objet),
145                        );
146                }
147        }
148
149        // Donnée de retour.
150        return $resultats;
151}
Note: See TracBrowser for help on using the repository browser.