File "centre_image.php"
Full path: /home/argothem/www/organecyberpresse/plugins/auto/centre_image/v4.0.0/inc/centre_image.php
File size: 4.28 KB
MIME-type: text/x-php
Charset: utf-8
<?php
/**
* Fonctions utiles au plugin Centre image
*
* @plugin Centre image
* @copyright 2015
* @author ARNO*
* @licence GNU/GPL
* @package SPIP\Centre_image\Fonctions
*/
if (!defined('_ECRIRE_INC_VERSION')) return;
/**
* Calcule le chemin correct théorique du fichier
*
* - extrait l'URL d'une éventuel attribut 'src' d'une balise
* - passe en url relative si c'était en absolu
* - enlève un timestamp ou un token éventuel (accès restreint)
*
* @param string $fichier
* return string
*/
function centre_image_preparer_fichier($fichier) {
// nettoyer le fichier (qui peut être dans un <img>)
if (strpos($fichier, "src=") !== false) {
if (!function_exists('extraire_attribut')) {
include_spip('inc/filtres');
}
$fichier = extraire_attribut($fichier, "src");
}
// Enlever timestamp ou token
$fichier = explode('?', $fichier, 2);
$fichier = array_shift($fichier);
// si URL absolue de l'image, on passe en relatif
if (tester_url_absolue($fichier)) {
$url_site = url_de_base();
if (strpos($fichier, $url_site) === 0) {
$fichier = substr($fichier, strlen($url_site));
}
}
return $fichier;
}
function centre_image_fichier_force($fichier) {
$file_to_hash = $fichier;
if (_DIR_RACINE and strpos($file_to_hash, _DIR_RACINE) === 0) {
$file_to_hash = substr($file_to_hash, strlen(_DIR_RACINE));
}
$md5 = md5($file_to_hash);
$dir_centre_force = sous_repertoire(_DIR_IMG, "cache-centre-image");
$fichier_force_json = $dir_centre_force . $md5 . ".json";
return $fichier_force_json;
}
function centre_image_fichier_cache($fichier, $famille_cache = '') {
$file_to_hash = $fichier;
if (_DIR_RACINE and strpos($file_to_hash, _DIR_RACINE) === 0) {
$file_to_hash = substr($file_to_hash, strlen(_DIR_RACINE));
}
$md5 = md5($file_to_hash);
$l1 = substr($md5, 0, 1);
$l2 = substr($md5, 1, 1);
$dir_cache = sous_repertoire(_DIR_VAR, "cache-centre-image" . ($famille_cache ? "-$famille_cache" : ''));
$dir_cache = sous_repertoire($dir_cache, $l1);
$dir_cache = sous_repertoire($dir_cache, $l2);
$fichier_cache_json = $dir_cache . $md5 . ".json";
return $fichier_cache_json;
}
function centre_image_lire_cache($fichier, $famille_cache = '') {
$fichier_old_logo = false;
if (strpos($fichier, 'logo/') !== false
and preg_match(",logo/(art|rub|aut|mot)(on|off),", $fichier)) {
$fichier_old_logo = str_replace("logo/", "", $fichier);
}
// éviter plusieurs accès successifs
$mtime_source = filemtime($fichier);
$fichier_force_json = centre_image_fichier_force($fichier);
if (file_exists($fichier_force_json)
and filemtime($fichier_force_json) >= $mtime_source
and $res = file_get_contents($fichier_force_json)) {
$res = json_decode($res, true);
return $res;
}
// est-ce qu'il y a un centre forcé sur le logo anciennement à la racine de _DIR_IMG ?
if ($fichier_old_logo) {
$fichier_old_force_json = centre_image_fichier_force($fichier_old_logo);
if (file_exists($fichier_old_force_json)
and filemtime($fichier_old_force_json) >= $mtime_source
and $res = file_get_contents($fichier_old_force_json)) {
@rename($fichier_old_force_json, $fichier_force_json);
$res = json_decode($res, true);
// renommer le vieux fichier au passage
return $res;
}
}
// est-ce qu'on a un PI forcé transmis depuis une image source ?
$fichier_cache_json = centre_image_fichier_cache($fichier, 'force');
if (file_exists($fichier_cache_json)
and filemtime($fichier_cache_json) >= $mtime_source
and $res = file_get_contents($fichier_cache_json)) {
$res = json_decode($res, true);
return $res;
}
$fichier_cache_json = centre_image_fichier_cache($fichier, $famille_cache);
if (file_exists($fichier_cache_json)
and filemtime($fichier_cache_json) >= $mtime_source
and $res = file_get_contents($fichier_cache_json)) {
$res = json_decode($res, true);
return $res;
}
// on a pas trouvé de cache
return false;
}
function centre_image_ecrire_cache($fichier, $res, $famille_cache = '') {
$fichier_cache_json = centre_image_fichier_cache($fichier, $famille_cache);
file_put_contents($fichier_cache_json, json_encode($res));
return $fichier_cache_json;
}
function centre_image_ecrire_force($fichier, $res) {
$fichier_force_json = centre_image_fichier_force($fichier);
file_put_contents($fichier_force_json, json_encode($res));
return $fichier_force_json;
}