diff options
author | Thomas Steur <thomas.steur@gmail.com> | 2015-07-03 03:54:27 +0300 |
---|---|---|
committer | sgiehl <stefan@piwik.org> | 2015-10-06 18:25:13 +0300 |
commit | 9ba8f216fd7856ce5fef06bf82ecb8f8a2e7e630 (patch) | |
tree | 6ce07d18a85d00b39ab720abe042361c0775aead /core/Plugin/Categories.php | |
parent | 8ccc9dc05da021325cdbf141a548637fa52f16b2 (diff) |
generate pages instead of implementing them in each controller
Diffstat (limited to 'core/Plugin/Categories.php')
-rw-r--r-- | core/Plugin/Categories.php | 71 |
1 files changed, 71 insertions, 0 deletions
diff --git a/core/Plugin/Categories.php b/core/Plugin/Categories.php new file mode 100644 index 0000000000..4d0543e014 --- /dev/null +++ b/core/Plugin/Categories.php @@ -0,0 +1,71 @@ +<?php +/** + * Piwik - free/libre analytics platform + * + * @link http://piwik.org + * @license http://www.gnu.org/licenses/gpl-3.0.html GPL v3 or later + */ +namespace Piwik\Plugin; + +use Piwik\Container\StaticContainer; +use Piwik\Piwik; +use Piwik\Plugin; + +/** + * Get categories and subcategories that are defined by plugins. + */ +class Categories +{ + private $pluginManager; + + public function __construct(Plugin\Manager $pluginManager) + { + $this->pluginManager = $pluginManager; + } + + /** @return \Piwik\Category\Category[] */ + public function getAllCategories() + { + $categories = $this->pluginManager->findMultipleComponents('Categories', '\\Piwik\\Category\\Category'); + + $instances = array(); + foreach ($categories as $category) { + $cat = StaticContainer::getContainer()->make($category); + $instances[$cat->getId()] = $cat; + } + + return $instances; + } + + /** @return \Piwik\Category\Subcategory[] */ + public function getAllSubcategories() + { + $subcategories = array(); + + /** + * Triggered to add custom subcategories. + * + * **Example** + * + * public function addSubcategories(&$subcategories) + * { + * $subcategory = new Subcategory(); + * $subcategory->setId('General_Overview'); + * $subcategory->setCategoryId('General_Visits'); + * $subcategory->setOrder(5); + * $subcategories[] = $subcategory; + * } + * + * @param array &$subcategories An array containing a list of subcategories. + */ + Piwik::postEvent('Category.addSubcategories', array(&$subcategories)); + + $classes = $this->pluginManager->findMultipleComponents('Categories', '\\Piwik\\Category\\Subcategory'); + + foreach ($classes as $subcategory) { + $subcategories[] = StaticContainer::getContainer()->make($subcategory); + } + + return $subcategories; + } +}
\ No newline at end of file |