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-2012, Ryan Parman, Geoffrey 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:  * @version 1.3
 37:  * @copyright 2004-2012 Ryan Parman, Geoffrey Sneddon, Ryan McCue
 38:  * @author Ryan Parman
 39:  * @author Geoffrey Sneddon
 40:  * @author Ryan McCue
 41:  * @link http://simplepie.org/ SimplePie
 42:  * @license http://www.opensource.org/licenses/bsd-license.php BSD License
 43:  */
 44: 
 45: /**
 46:  * Manages all category-related data
 47:  *
 48:  * Used by {@see SimplePie_Item::get_category()} and {@see SimplePie_Item::get_categories()}
 49:  *
 50:  * This class can be overloaded with {@see SimplePie::set_category_class()}
 51:  *
 52:  * @package SimplePie
 53:  * @subpackage API
 54:  */
 55: class SimplePie_Category
 56: {
 57:     /**
 58:      * Category identifier
 59:      *
 60:      * @var string
 61:      * @see get_term
 62:      */
 63:     var $term;
 64: 
 65:     /**
 66:      * Categorization scheme identifier
 67:      *
 68:      * @var string
 69:      * @see get_scheme()
 70:      */
 71:     var $scheme;
 72: 
 73:     /**
 74:      * Human readable label
 75:      *
 76:      * @var string
 77:      * @see get_label()
 78:      */
 79:     var $label;
 80: 
 81:     /**
 82:      * Constructor, used to input the data
 83:      *
 84:      * @param string $term
 85:      * @param string $scheme
 86:      * @param string $label
 87:      */
 88:     public function __construct($term = null, $scheme = null, $label = null)
 89:     {
 90:         $this->term = $term;
 91:         $this->scheme = $scheme;
 92:         $this->label = $label;
 93:     }
 94: 
 95:     /**
 96:      * String-ified version
 97:      *
 98:      * @return string
 99:      */
100:     public function __toString()
101:     {
102:         // There is no $this->data here
103:         return md5(serialize($this));
104:     }
105: 
106:     /**
107:      * Get the category identifier
108:      *
109:      * @return string|null
110:      */
111:     public function get_term()
112:     {
113:         if ($this->term !== null)
114:         {
115:             return $this->term;
116:         }
117:         else
118:         {
119:             return null;
120:         }
121:     }
122: 
123:     /**
124:      * Get the categorization scheme identifier
125:      *
126:      * @return string|null
127:      */
128:     public function get_scheme()
129:     {
130:         if ($this->scheme !== null)
131:         {
132:             return $this->scheme;
133:         }
134:         else
135:         {
136:             return null;
137:         }
138:     }
139: 
140:     /**
141:      * Get the human readable label
142:      *
143:      * @return string|null
144:      */
145:     public function get_label()
146:     {
147:         if ($this->label !== null)
148:         {
149:             return $this->label;
150:         }
151:         else
152:         {
153:             return $this->get_term();
154:         }
155:     }
156: }
157: 
158: