| 1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556 | <?php/** * Validates the border property as defined by CSS. */class HTMLPurifier_AttrDef_CSS_Border extends HTMLPurifier_AttrDef{    /**     * Local copy of properties this property is shorthand for.     * @type HTMLPurifier_AttrDef[]     */    protected $info = array();    /**     * @param HTMLPurifier_Config $config     */    public function __construct($config)    {        $def = $config->getCSSDefinition();        $this->info['border-width'] = $def->info['border-width'];        $this->info['border-style'] = $def->info['border-style'];        $this->info['border-top-color'] = $def->info['border-top-color'];    }    /**     * @param string $string     * @param HTMLPurifier_Config $config     * @param HTMLPurifier_Context $context     * @return bool|string     */    public function validate($string, $config, $context)    {        $string = $this->parseCDATA($string);        $string = $this->mungeRgb($string);        $bits = explode(' ', $string);        $done = array(); // segments we've finished        $ret = ''; // return value        foreach ($bits as $bit) {            foreach ($this->info as $propname => $validator) {                if (isset($done[$propname])) {                    continue;                }                $r = $validator->validate($bit, $config, $context);                if ($r !== false) {                    $ret .= $r . ' ';                    $done[$propname] = true;                    break;                }            }        }        return rtrim($ret);    }}// vim: et sw=4 sts=4
 |