summaryrefslogtreecommitdiffstats
path: root/modules/monitoring/application/views/helpers/EscapeComment.php
blob: be85a223ed42042a09abc19859b4caa578b02eeb (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
<?php
/* Icinga Web 2 | (c) 2016 Icinga Development Team | GPLv2+ */

/**
 * Helper for escaping comments, but preserving links
 */
class Zend_View_Helper_EscapeComment extends Zend_View_Helper_Abstract
{
    /**
     * The purifier to use for escaping
     *
     * @var HTMLPurifier
     */
    protected static $purifier;

    /**
     * Escape any comment for being placed inside HTML, but preserve simple links (<a href="...">).
     *
     * @param   string  $comment
     *
     * @return  string
     */
    public function escapeComment($comment)
    {
        if (self::$purifier === null) {
            require_once 'HTMLPurifier/Bootstrap.php';
            require_once 'HTMLPurifier.php';
            require_once 'HTMLPurifier.autoload.php';

            $config = HTMLPurifier_Config::createDefault();
            $config->set('Core.EscapeNonASCIICharacters', true);
            $config->set('HTML.Allowed', 'a[href]');
            $config->set('Cache.DefinitionImpl', null);
            self::$purifier = new HTMLPurifier($config);
        }
        return self::$purifier->purify($comment);
    }
}