2 namespace wcf\data\smiley
;
3 use wcf\data\category\Category
;
4 use wcf\data\smiley\category\SmileyCategory
;
5 use wcf\system\cache\builder\SmileyCacheBuilder
;
6 use wcf\system\category\CategoryHandler
;
7 use wcf\system\SingletonFactory
;
10 * Manages the smiley cache.
13 * @copyright 2001-2014 WoltLab GmbH
14 * @license GNU Lesser General Public License <http://opensource.org/licenses/lgpl-license.php>
15 * @package com.woltlab.wcf
16 * @subpackage data.smiley
17 * @category Community Framework
19 class SmileyCache
extends SingletonFactory
{
24 protected $cachedSmilies = array();
27 * cached smiley categories
28 * @var array<\wcf\data\smiley\category\SmileyCategory>
30 protected $cachedCategories = array();
33 * @see \wcf\system\SingletonFactory::init()
35 protected function init() {
37 $this->cachedSmilies
= SmileyCacheBuilder
::getInstance()->getData(array(), 'smilies');
38 $smileyCategories = CategoryHandler
::getInstance()->getCategories('com.woltlab.wcf.bbcode.smiley');
40 $this->cachedCategories
[null] = new SmileyCategory(new Category(null, array(
42 'parentCategoryID' => 0,
43 'title' => 'wcf.acp.smiley.categoryID.default',
49 foreach ($smileyCategories as $key => $smileyCategory) {
50 $this->cachedCategories
[$key] = new SmileyCategory($smileyCategory);
55 * Returns all smilies.
59 public function getSmilies() {
60 return $this->cachedSmilies
;
64 * Returns all smiley categories.
66 * @return array<\wcf\data\smiley\category\SmileyCategory>
68 public function getCategories() {
69 return $this->cachedCategories
;
73 * Returns all the smilies of a category.
75 * @param integer $categoryID
78 public function getCategorySmilies($categoryID = null) {
79 if (isset($this->cachedSmilies
[$categoryID])) return $this->cachedSmilies
[$categoryID];