OSDN Git Service

BugTrack/664 Should replace #img(,clear) => #clear
[pukiwiki/pukiwiki.git] / plugin / color.inc.php
index b7f59f0..06e43a6 100644 (file)
@@ -2,42 +2,47 @@
 /////////////////////////////////////////////////
 // PukiWiki - Yet another WikiWikiWeb clone.
 //
-// $Id: color.inc.php,v 1.4 2003/05/12 10:32:13 arino Exp $
+// $Id: color.inc.php,v 1.9 2004/07/31 03:09:20 henoheno Exp $
 //
 
 function plugin_color_inline()
 {
-       $bgcolor = '';
-
        if (func_num_args() == 3)
        {
                list($color,$bgcolor,$body) = func_get_args();
                if ($body == '')
                {
-                       $body = $bg;
+                       $body = $bgcolor;
                        $bgcolor = '';
                }
-               else if ($bgcolor != '')
-               {
-                       $bgcolor = ';background-color:'.htmlspecialchars($bgcolor);
-               }
        }
        else if (func_num_args() == 2)
        {
+               $bgcolor = '';
                list($color,$body) = func_get_args();
        }
        else
        {
                return FALSE;
        }
-       
+
        if ($color == '' or $body == '')
        {
                return FALSE;
        }
-       
-       $s_color = htmlspecialchars($color);
-       $s_bgcolor = htmlspecialchars($bgcolor);
-       return "<span style=\"color:$s_color$s_bgcolor\">$body</span>";
+       if (!plugin_color_is_valid($color) or !plugin_color_is_valid($bgcolor))
+       {
+               return $body;
+       }
+
+       if ($bgcolor != '')
+       {
+               $color .= ';background-color:'.$bgcolor;
+       }
+       return "<span style=\"color:$color\">$body</span>";
+}
+function plugin_color_is_valid($color)
+{
+       return ($color == '') or preg_match('/^(#[0-9a-f]+|[\w-]+)$/i',$color);
 }
 ?>