Welcome to mirror list, hosted at ThFree Co, Russian Federation.

github.com/matomo-org/matomo.git - Unnamed repository; edit this file 'description' to name the repository.
summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
Diffstat (limited to 'core/Menu/MenuReporting.php')
-rw-r--r--core/Menu/MenuReporting.php96
1 files changed, 96 insertions, 0 deletions
diff --git a/core/Menu/MenuReporting.php b/core/Menu/MenuReporting.php
new file mode 100644
index 0000000000..fa9e8f4b46
--- /dev/null
+++ b/core/Menu/MenuReporting.php
@@ -0,0 +1,96 @@
+<?php
+/**
+ * Piwik - Open source web analytics
+ *
+ * @link http://piwik.org
+ * @license http://www.gnu.org/licenses/gpl-3.0.html GPL v3 or later
+ *
+ */
+namespace Piwik\Menu;
+use Piwik\Piwik;
+
+/**
+ * Contains menu entries for the Main menu (the menu displayed under the Piwik logo).
+ * Plugins can subscribe to the {@hook Menu.Reporting.addItems} event to add new pages to
+ * the main menu.
+ *
+ * **Example**
+ *
+ * // add a new page in an observer to Menu.Admin.addItems
+ * public function addMainMenuItem()
+ * {
+ * MenuReporting::getInstance()->add(
+ * 'MyPlugin_MyTranslatedMenuCategory',
+ * 'MyPlugin_MyTranslatedMenuName',
+ * array('module' => 'MyPlugin', 'action' => 'index'),
+ * Piwik::isUserHasSomeAdminAccess(),
+ * $order = 2
+ * );
+ * }
+ *
+ * @api
+ * @method static \Piwik\Menu\MenuMain getInstance()
+ */
+class MenuReporting extends MenuAbstract
+{
+ /**
+ * Returns if the URL was found in the menu.
+ *
+ * @param string $url
+ * @return boolean
+ */
+ public function isUrlFound($url)
+ {
+ $menu = MenuMain::getInstance()->getMenu();
+
+ foreach ($menu as $subMenus) {
+ foreach ($subMenus as $subMenuName => $menuUrl) {
+ if (strpos($subMenuName, '_') !== 0 && $menuUrl['_url'] == $url) {
+ return true;
+ }
+ }
+ }
+ return false;
+ }
+
+ /**
+ * Triggers the Menu.Reporting.addItems hook and returns the menu.
+ *
+ * @return Array
+ */
+ public function getMenu()
+ {
+ // We trigger the Event only once!
+ if (!$this->menu) {
+
+ /**
+ * Triggered when collecting all available reporting menu items. Subscribe to this event if you
+ * want to add one or more items to the Piwik reporting menu.
+ *
+ * Menu items should be added via the {@link add()} method.
+ *
+ * **Example**
+ *
+ * use Piwik\Menu\MenuMain;
+ *
+ * public function addMenuItems()
+ * {
+ * MenuMain::getInstance()->add(
+ * 'CustomMenuName',
+ * 'CustomSubmenuName',
+ * array('module' => 'MyPlugin', 'action' => 'index'),
+ * $showOnlyIf = Piwik::hasUserSuperUserAccess(),
+ * $order = 6
+ * );
+ * }
+ */
+ Piwik::postEvent('Menu.Reporting.addItems', array($this));
+
+ foreach ($this->getAvailableMenus() as $menu) {
+ $menu->configureReportingMenu($this);
+ }
+ }
+
+ return parent::getMenu();
+ }
+}