X-Git-Url: http://git.cyclocoop.org/?p=velocampus%2Fweb%2Fwww.git;a=blobdiff_plain;f=www%2Fextensions%2Fcompresseur%2Ffiltres%2Fcompresseur.php;fp=www%2Fextensions%2Fcompresseur%2Ffiltres%2Fcompresseur.php;h=a3adfe44c53c865fe396d39ace565d34ca68d9e0;hp=0000000000000000000000000000000000000000;hb=80b4d3e85f78d402ed2e73f8f5d1bf4c19962eed;hpb=aaf970bf4cdaf76689ecc10609048e18d073820c
diff --git a/www/extensions/compresseur/filtres/compresseur.php b/www/extensions/compresseur/filtres/compresseur.php
new file mode 100644
index 0000000..a3adfe4
--- /dev/null
+++ b/www/extensions/compresseur/filtres/compresseur.php
@@ -0,0 +1,128 @@
+ @filemtime($source))
+ AND ($GLOBALS['var_mode'] != 'recalcul'))
+ return $f;
+
+ if (!lire_fichier($source, $contenu))
+ return $source;
+
+ // traiter le contenu
+ $contenu = $compacte($contenu);
+
+ // ecrire le fichier destination, en cas d'echec renvoyer la source
+ if (ecrire_fichier($f, $contenu, true))
+ return $f;
+ else
+ return $source;
+ }
+
+ // Sinon simple compactage de contenu
+ return $compacte($source);
+}
+
+// Cette fonction verifie les reglages du site et traite le compactage
+// des css et/ou js d'un
+// un fichier .gz est cree pour chaque, qui peut etre utilise par apache
+// et lui eviter de recompresser a chaque hit, avec les directives suivantes :
+//
+//mod_gzip_on Yes
+//mod_gzip_can_negotiate Yes
+//mod_gzip_static_suffix .gz
+//AddEncoding gzip .gz
+//mod_gzip_item_include file \.(js|css)$
+//
+// http://doc.spip.org/@compacte_head
+function compacte_head($flux){
+ include_spip('inc/compresseur');
+ if (!defined('_INTERDIRE_COMPACTE_HEAD')){
+ // dans l'espace prive on compacte toujours, c'est concu pour
+ if ($GLOBALS['meta']['auto_compress_css'] == 'oui' OR (test_espace_prive() AND !defined('_INTERDIRE_COMPACTE_HEAD_ECRIRE')))
+ $flux = compacte_head_css($flux);
+ if ($GLOBALS['meta']['auto_compress_js'] == 'oui' OR (test_espace_prive() AND !defined('_INTERDIRE_COMPACTE_HEAD_ECRIRE')))
+ $flux = compacte_head_js($flux);
+ }
+ return $flux;
+}
+
+/**
+ * Embarquer sous forme URI Scheme
+ * data:xxx/yyy;base64,....
+ * un fichier
+ *
+ * Experimental
+ *
+ * @staticvar array $mime
+ * @param string $src
+ * chemin du fichier
+ * @param string $base
+ * le chemin de base a partir duquel chercher $src
+ * @param int $maxsize
+ * @return string
+ */
+function filtre_embarque_fichier ($src, $base="", $maxsize = 4096) {
+ static $mime = array();
+ $extension = substr(strrchr($src,'.'),1);
+ $filename = $base . $src;
+ #var_dump("$base:$src:$filename");
+
+ if (!file_exists($filename)
+ OR filesize($filename)>$maxsize
+ OR !lire_fichier($filename, $contenu))
+ return $src;
+
+ if (!isset($mime[$extension]))
+ $mime[$extension] = sql_getfetsel('mime_type','spip_types_documents','extension='.sql_quote($extension));
+
+ $base64 = base64_encode($contenu);
+ $encoded = 'data:'.$mime[$extension].';base64,'.$base64;
+ #var_dump($encoded);
+
+ return $encoded;
+}
+
+/**
+ * Embarquer le 'src' d'une balise html en URI Scheme
+ *
+ * Experimental
+ *
+ * @param string $img
+ * @param int $maxsize
+ * @return string
+ */
+function filtre_embarque_src ($img, $maxsize = 4096){
+ $src = extraire_attribut($img,'src');
+ if ($src2=filtre_embarque_fichier($src) AND $src2!= $src) {
+ $img = inserer_attribut($img, 'src', $src2);
+ }
+ return $img;
+}
+?>
\ No newline at end of file