summaryrefslogtreecommitdiff
path: root/platform/www/vendor/openpsa/universalfeedcreator/lib/Element/FeedHtmlField.php
blob: 84f0ac4bb0fa5d43bfeda17f71c6bb3f5e5dfe91 (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
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
<?php

/**
 * A FeedHtmlField describes and generates
 * a feed, item or image html field (probably a description). Output is
 * generated based on $truncSize, $syndicateHtml properties.
 *
 * @author  Pascal Van Hecke <feedcreator.class.php@vanhecke.info>
 * @version 1.6
 */
class FeedHtmlField
{
    /**
     * Mandatory attributes of a FeedHtmlField.
     */
    protected $rawFieldContent;

    /**
     * Optional attributes of a FeedHtmlField.
     */
    public $truncSize, $syndicateHtml;

    /**
     * Creates a new instance of FeedHtmlField.
     *
     * @param string $parFieldContent if given, sets the rawFieldContent property
     */
    public function __construct($parFieldContent)
    {
        if ($parFieldContent) {
            $this->rawFieldContent = $parFieldContent;
        }
    }

    /**
     * Creates the right output, depending on $truncSize, $syndicateHtml properties.
     *
     * @return string the formatted field
     */
    public function output()
    {
        // when field available and syndicated in html we assume
        // - valid html in $rawFieldContent and we enclose in CDATA tags
        // - no truncation (truncating risks producing invalid html)
        if (!$this->rawFieldContent) {
            $result = "";
        } elseif ($this->syndicateHtml) {
            $result = "<![CDATA[".$this->rawFieldContent."]]>";
        } else {
            if ($this->truncSize and is_int($this->truncSize)) {
                $result = FeedCreator::iTrunc(htmlspecialchars($this->rawFieldContent), $this->truncSize);
            } else {
                $result = htmlspecialchars($this->rawFieldContent);
            }
        }

        return $result;
    }
}