1<?php
2
3/**
4 * Pre-transform that changes deprecated hspace and vspace attributes to CSS
5 */
6class HTMLPurifier_AttrTransform_ImgSpace extends HTMLPurifier_AttrTransform
7{
8    /**
9     * @type string
10     */
11    protected $attr;
12
13    /**
14     * @type array
15     */
16    protected $css = array(
17        'hspace' => array('left', 'right'),
18        'vspace' => array('top', 'bottom')
19    );
20
21    /**
22     * @param string $attr
23     */
24    public function __construct($attr)
25    {
26        $this->attr = $attr;
27        if (!isset($this->css[$attr])) {
28            trigger_error(htmlspecialchars($attr) . ' is not valid space attribute');
29        }
30    }
31
32    /**
33     * @param array $attr
34     * @param HTMLPurifier_Config $config
35     * @param HTMLPurifier_Context $context
36     * @return array
37     */
38    public function transform($attr, $config, $context)
39    {
40        if (!isset($attr[$this->attr])) {
41            return $attr;
42        }
43
44        $width = $this->confiscateAttr($attr, $this->attr);
45        // some validation could happen here
46
47        if (!isset($this->css[$this->attr])) {
48            return $attr;
49        }
50
51        $style = '';
52        foreach ($this->css[$this->attr] as $suffix) {
53            $property = "margin-$suffix";
54            $style .= "$property:{$width}px;";
55        }
56        $this->prependCSS($attr, $style);
57        return $attr;
58    }
59}
60
61// vim: et sw=4 sts=4
62