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

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

Oups, ne pas simplifier le chemin du fichier, seulement la base de calcul du md5.

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