From e9817e9143b0cd0c080dc106938f75e489e0cbf7 Mon Sep 17 00:00:00 2001
From: mattab <matthieu.aubry@gmail.com>
Date: Wed, 9 Oct 2013 22:44:03 +1300
Subject: [PATCH] Refs #4202 Menu refactor GO. This one is tricky...

---
 core/Menu/{Admin.php => MenuAdmin.php} |  30 +++--
 core/Menu/{Main.php => MenuMain.php}   |  10 +-
 core/Menu/{Top.php => MenuTop.php}     |  12 +-
 core/functions.php                     | 176 -------------------------
 4 files changed, 33 insertions(+), 195 deletions(-)
 rename core/Menu/{Admin.php => MenuAdmin.php} (71%)
 rename core/Menu/{Main.php => MenuMain.php} (91%)
 rename core/Menu/{Top.php => MenuTop.php} (89%)
 delete mode 100644 core/functions.php

diff --git a/core/Menu/Admin.php b/core/Menu/MenuAdmin.php
similarity index 71%
rename from core/Menu/Admin.php
rename to core/Menu/MenuAdmin.php
index 2c9bf93393..f34aa15865 100644
--- a/core/Menu/Admin.php
+++ b/core/Menu/MenuAdmin.php
@@ -15,12 +15,12 @@ use Piwik\Piwik;
 /**
  * @package Piwik_Menu
  */
-class Admin extends MenuAbstract
+class MenuAdmin extends MenuAbstract
 {
     static private $instance = null;
 
     /**
-     * @return \Piwik\Menu\Admin
+     * @return \Piwik\Menu\MenuAdmin
      */
     static public function getInstance()
     {
@@ -31,11 +31,25 @@ class Admin extends MenuAbstract
     }
 
     /**
-     * Triggers the Menu.Admin.addItems hook and returns the menu.
+     * Adds a new AdminMenu entry.
+     *
+     * @param string $adminMenuName
+     * @param string $url
+     * @param boolean $displayedForCurrentUser
+     * @param int $order
+     * @api
+     */
+    public static function addEntry($adminMenuName, $url, $displayedForCurrentUser = true, $order = 20)
+    {
+        self::getInstance()->add('General_Settings', 'General_Settings', $adminMenuName, $url, $displayedForCurrentUser, $order);
+    }
+
+    /**
+     * Triggers the Menu.MenuAdmin.addItems hook and returns the admin menu.
      *
      * @return Array
      */
-    public function get()
+    public function getMenu()
     {
         if (!$this->menu) {
 
@@ -49,7 +63,7 @@ class Admin extends MenuAbstract
              * ```
              * public function addMenuItems()
              * {
-             *     Piwik_AddAdminSubMenu(
+             *     \Piwik\Menu\MenuAdmin::getInstance()->add(
              *         'MenuName',
              *         'SubmenuName',
              *         array('module' => 'MyPlugin', 'action' => 'index'),
@@ -59,9 +73,9 @@ class Admin extends MenuAbstract
              * }
              * ```
              */
-            Piwik::postEvent('Menu.Admin.addItems');
+            Piwik::postEvent('Menu.MenuAdmin.addItems');
         }
-        return parent::get();
+        return parent::getMenu();
     }
 
     /**
@@ -71,7 +85,7 @@ class Admin extends MenuAbstract
      */
     function getCurrentAdminMenuName()
     {
-        $menu = Piwik_GetAdminMenu();
+        $menu = \Piwik\Menu\MenuAdmin::getInstance();
         $currentModule = Piwik::getModule();
         $currentAction = Piwik::getAction();
         foreach ($menu as $submenu) {
diff --git a/core/Menu/Main.php b/core/Menu/MenuMain.php
similarity index 91%
rename from core/Menu/Main.php
rename to core/Menu/MenuMain.php
index db858f8c74..2485f18294 100644
--- a/core/Menu/Main.php
+++ b/core/Menu/MenuMain.php
@@ -15,7 +15,7 @@ use Piwik\Piwik;
 /**
  * @package Piwik_Menu
  */
-class Main extends MenuAbstract
+class MenuMain extends MenuAbstract
 {
     static private $instance = null;
 
@@ -38,7 +38,7 @@ class Main extends MenuAbstract
      */
     public function isUrlFound($url)
     {
-        $menu = Main::getInstance()->get();
+        $menu = MenuMain::getInstance()->getMenu();
 
         foreach ($menu as $subMenus) {
             foreach ($subMenus as $subMenuName => $menuUrl) {
@@ -55,7 +55,7 @@ class Main extends MenuAbstract
      *
      * @return Array
      */
-    public function get()
+    public function getMenu()
     {
         // We trigger the Event only once!
         if (!$this->menu) {
@@ -70,7 +70,7 @@ class Main extends MenuAbstract
              * ```
              * public function addMenuItems()
              * {
-             *     Piwik_AddMenu(
+             *     \Piwik\Menu\Main::getInstance()->add(
              *         'CustomMenuName',
              *         'CustomSubmenuName',
              *         array('module' => 'MyPlugin', 'action' => 'index'),
@@ -82,7 +82,7 @@ class Main extends MenuAbstract
              */
             Piwik::postEvent('Menu.Reporting.addItems');
         }
-        return parent::get();
+        return parent::getMenu();
     }
 }
 
diff --git a/core/Menu/Top.php b/core/Menu/MenuTop.php
similarity index 89%
rename from core/Menu/Top.php
rename to core/Menu/MenuTop.php
index 52d6f7ef31..8573e527fd 100644
--- a/core/Menu/Top.php
+++ b/core/Menu/MenuTop.php
@@ -15,12 +15,12 @@ use Piwik\Piwik;
 /**
  * @package Piwik_Menu
  */
-class Top extends MenuAbstract
+class MenuTop extends MenuAbstract
 {
     static private $instance = null;
 
     /**
-     * @return \Piwik\Menu\Top
+     * @return \Piwik\Menu\MenuTop
      */
     static public function getInstance()
     {
@@ -52,11 +52,11 @@ class Top extends MenuAbstract
     }
 
     /**
-     * Triggers the Menu.Top.addItems hook and returns the menu.
+     * Triggers the Menu.MenuTop.addItems hook and returns the menu.
      *
      * @return Array
      */
-    public function get()
+    public function getMenu()
     {
         if (!$this->menu) {
 
@@ -80,8 +80,8 @@ class Top extends MenuAbstract
              * }
              * ```
              */
-            Piwik::postEvent('Menu.Top.addItems');
+            Piwik::postEvent('Menu.MenuTop.addItems');
         }
-        return parent::get();
+        return parent::getMenu();
     }
 }
diff --git a/core/functions.php b/core/functions.php
deleted file mode 100644
index 8b32ab0b25..0000000000
--- a/core/functions.php
+++ /dev/null
@@ -1,176 +0,0 @@
-<?php
-/**
- * Piwik - Open source web analytics
- *
- * @link http://piwik.org
- * @license http://www.gnu.org/licenses/gpl-3.0.html GPL v3 or later
- *
- * @category Piwik
- * @package Piwik
- */
-
-// All classes and functions below are defined in the global namespace
-namespace {
-
-    use Piwik\DataTable;
-    use Piwik\Menu\Admin;
-    use Piwik\Menu\Main;
-    use Piwik\Menu\Top;
-
-    /**
-     * Returns the AdminMenu
-     *
-     * @return Array
-     */
-    function Piwik_GetAdminMenu()
-    {
-        return Admin::getInstance()->get();
-    }
-
-    /**
-     * Adds a new AdminMenu entry.
-     *
-     * @param string $adminMenuName
-     * @param string $url
-     * @param boolean $displayedForCurrentUser
-     * @param int $order
-     * @api
-     */
-    function Piwik_AddAdminMenu($adminMenuName, $url, $displayedForCurrentUser = true, $order = 10)
-    {
-        Admin::getInstance()->add('General_Settings', $adminMenuName, $url, $displayedForCurrentUser, $order);
-    }
-
-    /**
-     * Adds a new AdminMenu entry with a submenu.
-     *
-     * @param string $adminMenuName
-     * @param string $adminSubMenuName
-     * @param string $url
-     * @param boolean $displayedForCurrentUser
-     * @param int $order
-     * @api
-     */
-    function Piwik_AddAdminSubMenu($adminMenuName, $adminSubMenuName, $url, $displayedForCurrentUser = true, $order = 10)
-    {
-        Admin::getInstance()->add($adminMenuName, $adminSubMenuName, $url, $displayedForCurrentUser, $order);
-    }
-
-    /**
-     * Renames an AdminMenu entry.
-     *
-     * @param string $adminMenuOriginal
-     * @param string $adminMenuRenamed
-     */
-    function Piwik_RenameAdminMenuEntry($adminMenuOriginal, $adminMenuRenamed)
-    {
-        Admin::getInstance()->rename($adminMenuOriginal, null, $adminMenuRenamed, null);
-    }
-
-
-    /**
-     * Returns the MainMenu as array.
-     *
-     * @return array
-     */
-    function Piwik_GetMenu()
-    {
-        return Main::getInstance()->get();
-    }
-
-    /**
-     * Adds a new entry to the MainMenu.
-     *
-     * @param string $mainMenuName
-     * @param string $subMenuName
-     * @param string $url
-     * @param boolean $displayedForCurrentUser
-     * @param int $order
-     * @api
-     */
-    function Piwik_AddMenu($mainMenuName, $subMenuName, $url, $displayedForCurrentUser = true, $order = 10)
-    {
-        Main::getInstance()->add($mainMenuName, $subMenuName, $url, $displayedForCurrentUser, $order);
-    }
-
-    /**
-     * Renames a menu entry.
-     *
-     * @param string $mainMenuOriginal
-     * @param string $subMenuOriginal
-     * @param string $mainMenuRenamed
-     * @param string $subMenuRenamed
-     */
-    function Piwik_RenameMenuEntry($mainMenuOriginal, $subMenuOriginal,
-                                   $mainMenuRenamed, $subMenuRenamed)
-    {
-        Main::getInstance()->rename($mainMenuOriginal, $subMenuOriginal, $mainMenuRenamed, $subMenuRenamed);
-    }
-
-    /**
-     * Edits the URL of a menu entry.
-     *
-     * @param string $mainMenuToEdit
-     * @param string $subMenuToEdit
-     * @param string $newUrl
-     */
-    function Piwik_EditMenuUrl($mainMenuToEdit, $subMenuToEdit, $newUrl)
-    {
-        Main::getInstance()->editUrl($mainMenuToEdit, $subMenuToEdit, $newUrl);
-    }
-
-    /**
-     * Returns the TopMenu as an array.
-     *
-     * @return array
-     */
-    function Piwik_GetTopMenu()
-    {
-        return Top::getInstance()->get();
-    }
-
-    /**
-     * Adds a new entry to the TopMenu.
-     *
-     * @param string $topMenuName
-     * @param string $data
-     * @param boolean $displayedForCurrentUser
-     * @param int $order
-     * @param bool $isHTML
-     * @param bool|string $tooltip Tooltip to display.
-     * @api
-     */
-    function Piwik_AddTopMenu($topMenuName, $data, $displayedForCurrentUser = true, $order = 10, $isHTML = false,
-                              $tooltip = false)
-    {
-        if ($isHTML) {
-            Top::getInstance()->addHtml($topMenuName, $data, $displayedForCurrentUser, $order, $tooltip);
-        } else {
-            Top::getInstance()->add($topMenuName, null, $data, $displayedForCurrentUser, $order, $tooltip);
-        }
-    }
-
-    /**
-     * Renames a entry of the TopMenu
-     *
-     * @param string $topMenuOriginal
-     * @param string $topMenuRenamed
-     */
-    function Piwik_RenameTopMenuEntry($topMenuOriginal, $topMenuRenamed)
-    {
-        Top::getInstance()->rename($topMenuOriginal, null, $topMenuRenamed, null);
-    }
-
-    // Bridge between pre Piwik2 serialized format and namespaced classes
-    // Do not need to define these classes in tracker or archive
-    if (class_exists('\\Piwik\\DataTable\\Row\\DataTableSummaryRow')) {
-        class Piwik_DataTable_Row_DataTableSummary extends \Piwik\DataTable\Row\DataTableSummaryRow
-        {
-        }
-
-        class Piwik_DataTable_Row extends \Piwik\DataTable\Row
-        {
-        }
-    }
-
-}
-- 
GitLab