source: spip-zone/_plugins_/centre_image/centre_image_fonctions.php @ 88921

Last change on this file since 88921 was 88921, checked in by arno@…, 5 years ago

Dans l’espace privé, supprimer le ../ des chemins d’image (sinon pas forcément de correspondance avec le site public). Question à surveiller.

File size: 2.6 KB
Line 
1<?php
2
3
4function centre_image($fichier) {
5        static $spip_centre_image = array();
6       
7        // nettoyer le fichier (qui peut être dans un <img> ou qui peut être daté)
8        if (preg_match("/src\=/", $fichier)) $fichier = extraire_attribut($fichier, "src");
9        $fichier = preg_replace(",\?[0-9]*$,", "", $fichier);
10
11        // on mémorise le résultat -> don
12        if ($spip_centre_image["$fichier"]) return $spip_centre_image["$fichier"];
13
14        if (file_exists($fichier)) {
15
16                if (_DIR_RACINE == "../") {
17                        $fichier = preg_replace(",^\.\.\/,", "", $fichier);
18                }
19
20
21
22                $md5 = md5($fichier);
23                $l1 = substr($md5, 0, 1 );
24                $l2 = substr($md5, 1, 1);
25
26                $cache = sous_repertoire(_DIR_VAR, "cache-centre-image");
27                $cache = sous_repertoire($cache, $l1);
28                $cache = sous_repertoire($cache, $l2);
29               
30                $forcer = sous_repertoire(_DIR_IMG, "cache-centre-image");
31               
32                $fichier_json = "$cache$md5.json";
33                $fichier_forcer = "$forcer$md5.json";
34               
35                if (file_exists($fichier_forcer) and filemtime($fichier_forcer) > filemtime($fichier)) {
36                        $res = json_decode(file_get_contents($fichier_forcer),TRUE);
37                }
38                else if (file_exists($fichier_json) and filemtime($fichier_json) > filemtime($fichier)) {
39                        $res = json_decode(file_get_contents($fichier_json),TRUE);
40                } else {
41                        if(function_exists("imagefilter")) {
42                                if (preg_match(",\.(gif|jpe?g|png)($|[?]),i", $fichier, $regs)) {
43                                        include_spip('inc/centre_image_lib');
44                                        include_spip('inc/filtres_images_lib_mini');
45                                        $terminaison = strtolower($regs[1]);
46                                        $terminaison = str_replace("jpg", "jpeg", $terminaison);
47                                        $fonction_imagecreatefrom = "_imagecreatefrom".$terminaison;
48                               
49                                        $img     = $fonction_imagecreatefrom($fichier);
50                                        $cropper = new _centre_image($img);
51                                        $res = $cropper->find_focus();
52                                        imagedestroy($img);
53                                }
54                        } else {
55                                $res = array("x" => 0.5, "y" => 0.5);
56                        }
57                       
58                        file_put_contents($fichier_json, json_encode($res,TRUE));
59                }
60    } else {
61        $res = array("x" => 0.5, "y" => 0.5);
62    }
63   
64    $spip_centre_image["$fichier"] = $res;
65        return $res;   
66}
67
68function centre_image_x($fichier) {
69        $res = centre_image($fichier);
70        return $res["x"];
71}
72function centre_image_y($fichier) {
73        $res = centre_image($fichier);
74        return $res["y"];
75}
76
77
78
79function centre_image_header_prive($flux) {
80        $flux .= "\n<script type='text/javascript' src='".find_in_path("centre_image_gestion.js")."'></script>\n";
81       
82        $flux .= "\n<script>var croix = '".find_in_path("imgs/croix.png")."'</script>";
83
84        return $flux;
85}
86
87function centre_image_jqueryui_plugins($plugins) {
88        if (_DIR_RACINE == "../") {
89                $plugins[] = "jquery.ui.core";
90                $plugins[] = "jquery.ui.draggable";
91        }
92        return $plugins;
93}
Note: See TracBrowser for help on using the repository browser.