source: spip-zone/_plugins_/facteur/facteur_fonctions.php @ 52840

Last change on this file since 52840 was 52840, checked in by kent1@…, 8 years ago

if (!defined("_ECRIRE_INC_VERSION")) return; sur tout fichier PHP pour sécurité future principalement

  • Property svn:executable set to *
File size: 2.0 KB
Line 
1<?php
2/*
3 * Plugin Facteur
4 * (c) 2009-2010 Collectif SPIP
5 * Distribue sous licence GPL
6 *
7 */
8
9if (!defined("_ECRIRE_INC_VERSION")) return;
10
11include_spip('inc/texte');
12include_spip('classes/facteur');
13
14
15/**
16 * facteur_addstyle
17 *
18 * @author Eric Dols
19 **/
20function facteur_addstyle($matches) {
21
22        // $matches[1]=tag, $matches[2]=tag attributes (if any), $matches[3]=xhtml closing (if any)
23
24        // variables values set in calling function
25        global $styledefinition, $styletag, $styleclass;
26
27        // convert the style definition to a one-liner
28        $styledefinition = preg_replace ("!\s+!mi", " ", $styledefinition );
29        // convert all double-quotes to single-quotes
30        $styledefinition = preg_replace ('/"/','\'', $styledefinition );
31
32        if (preg_match ("/style\=/i", $matches[2])) {
33                        // add styles to existing style attribute if any already in the tag
34                        $pattern = "!(.* style\=)[\"]([^\"]*)[\"](.*)!mi";
35                        $replacement = "\$1".'"'."\$2 ".$styledefinition.'"'."\$3";
36                        $attributes = preg_replace ($pattern, $replacement , $matches[2]);
37        } else {
38                        // otherwise add new style attribute to tag (none was present)
39                        $attributes = $matches[2].' style="'.$styledefinition.'"';
40        }
41
42        if ($styleclass!="") {
43                // if we were injecting a class style, remove the now useless class attribute from the html tag
44
45                // Single class in tag case (class="classname"): remove class attribute altogether
46                $pattern = "!(.*) class\=['\"]".$styleclass."['\"](.*)!mi";
47                $replacement = "\$1\$2";
48                $attributes = preg_replace ( $pattern, $replacement, $attributes);
49
50                // Multiple classes in tag case (class="classname anotherclass..."): remove class name from class attribute.
51                // classes are injected inline and removed by order of appearance in <head> stylesheet
52                // exact same behavior as where last declared class attributes in <style> take over (IE6 tested only)
53                $pattern = "!(.* class\=['\"][^\"]*)(".$styleclass." | ".$styleclass.")([^\"]*['\"].*)!mi";
54                $replacement = "\$1\$3";
55                $attributes = preg_replace ( $pattern, $replacement, $attributes);
56
57        }
58
59        return "<".$matches[1].$attributes.$matches[3].">";
60}
61
62
63?>
Note: See TracBrowser for help on using the repository browser.