1<?php
2/**
3 * SimplePie
4 *
5 * A PHP-Based RSS and Atom Feed Framework.
6 * Takes the hard work out of managing a complete RSS/Atom solution.
7 *
8 * Copyright (c) 2004-2016, Ryan Parman, Sam Sneddon, Ryan McCue, and contributors
9 * All rights reserved.
10 *
11 * Redistribution and use in source and binary forms, with or without modification, are
12 * permitted provided that the following conditions are met:
13 *
14 * 	* Redistributions of source code must retain the above copyright notice, this list of
15 * 	  conditions and the following disclaimer.
16 *
17 * 	* Redistributions in binary form must reproduce the above copyright notice, this list
18 * 	  of conditions and the following disclaimer in the documentation and/or other materials
19 * 	  provided with the distribution.
20 *
21 * 	* Neither the name of the SimplePie Team nor the names of its contributors may be used
22 * 	  to endorse or promote products derived from this software without specific prior
23 * 	  written permission.
24 *
25 * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND ANY EXPRESS
26 * OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY
27 * AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDERS
28 * AND CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR
29 * CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR
30 * SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY
31 * THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR
32 * OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE
33 * POSSIBILITY OF SUCH DAMAGE.
34 *
35 * @package SimplePie
36 * @copyright 2004-2016 Ryan Parman, Sam Sneddon, Ryan McCue
37 * @author Ryan Parman
38 * @author Sam Sneddon
39 * @author Ryan McCue
40 * @link http://simplepie.org/ SimplePie
41 * @license http://www.opensource.org/licenses/bsd-license.php BSD License
42 */
43
44/**
45 * Manages all category-related data
46 *
47 * Used by {@see SimplePie_Item::get_category()} and {@see SimplePie_Item::get_categories()}
48 *
49 * This class can be overloaded with {@see SimplePie::set_category_class()}
50 *
51 * @package SimplePie
52 * @subpackage API
53 */
54class SimplePie_Category
55{
56	/**
57	 * Category identifier
58	 *
59	 * @var string|null
60	 * @see get_term
61	 */
62	var $term;
63
64	/**
65	 * Categorization scheme identifier
66	 *
67	 * @var string|null
68	 * @see get_scheme()
69	 */
70	var $scheme;
71
72	/**
73	 * Human readable label
74	 *
75	 * @var string|null
76	 * @see get_label()
77	 */
78	var $label;
79
80	/**
81	 * Category type
82	 *
83	 * category for <category>
84	 * subject for <dc:subject>
85	 *
86	 * @var string|null
87	 * @see get_type()
88	 */
89	var $type;
90
91	/**
92	 * Constructor, used to input the data
93	 *
94	 * @param string|null $term
95	 * @param string|null $scheme
96	 * @param string|null $label
97	 * @param string|null $type
98	 */
99	public function __construct($term = null, $scheme = null, $label = null, $type = null)
100	{
101		$this->term = $term;
102		$this->scheme = $scheme;
103		$this->label = $label;
104		$this->type = $type;
105	}
106
107	/**
108	 * String-ified version
109	 *
110	 * @return string
111	 */
112	public function __toString()
113	{
114		// There is no $this->data here
115		return md5(serialize($this));
116	}
117
118	/**
119	 * Get the category identifier
120	 *
121	 * @return string|null
122	 */
123	public function get_term()
124	{
125		return $this->term;
126	}
127
128	/**
129	 * Get the categorization scheme identifier
130	 *
131	 * @return string|null
132	 */
133	public function get_scheme()
134	{
135		return $this->scheme;
136	}
137
138	/**
139	 * Get the human readable label
140	 *
141	 * @param bool $strict
142	 * @return string|null
143	 */
144	public function get_label($strict = false)
145	{
146		if ($this->label === null && $strict !== true)
147		{
148			return $this->get_term();
149		}
150		return $this->label;
151	}
152
153	/**
154	 * Get the category type
155	 *
156	 * @return string|null
157	 */
158	public function get_type()
159	{
160		return $this->type;
161	}
162}
163
164