1<?php 2/** 3 * Matomo - free/libre analytics platform 4 * 5 * @link https://matomo.org 6 * @license http://www.gnu.org/licenses/gpl-3.0.html GPL v3 or later 7 * 8 */ 9namespace Piwik\Plugins\CorePluginsAdmin; 10 11use Piwik\Container\StaticContainer; 12use Piwik\Menu\MenuAdmin; 13use Piwik\Menu\MenuTop; 14use Piwik\Piwik; 15use Piwik\Plugin; 16use Piwik\Plugins\CorePluginsAdmin\Model\TagManagerTeaser; 17use Piwik\Plugins\Marketplace\Marketplace; 18use Piwik\Plugins\Marketplace\Plugins; 19 20class Menu extends \Piwik\Plugin\Menu 21{ 22 private $marketplacePlugins; 23 24 /** 25 * Menu constructor. 26 * @param Plugins $marketplacePlugins 27 */ 28 public function __construct($marketplacePlugins = null) 29 { 30 if (!empty($marketplacePlugins)) { 31 $this->marketplacePlugins = $marketplacePlugins; 32 } elseif (Marketplace::isMarketplaceEnabled()) { 33 // we load it manually as marketplace plugin might not be loaded 34 $this->marketplacePlugins = StaticContainer::get('Piwik\Plugins\Marketplace\Plugins'); 35 } 36 } 37 38 public function configureTopMenu(MenuTop $menu) 39 { 40 $tagManagerTeaser = new TagManagerTeaser(Piwik::getCurrentUserLogin()); 41 42 if ($tagManagerTeaser->shouldShowTeaser()) { 43 $menu->addItem('Tag Manager', null, $this->urlForAction('tagManagerTeaser')); 44 } 45 } 46 47 public function configureAdminMenu(MenuAdmin $menu) 48 { 49 $hasSuperUserAcess = Piwik::hasUserSuperUserAccess(); 50 $isAnonymous = Piwik::isUserIsAnonymous(); 51 $isMarketplaceEnabled = Marketplace::isMarketplaceEnabled(); 52 53 $pluginsUpdateMessage = ''; 54 55 if ($hasSuperUserAcess && $isMarketplaceEnabled && $this->marketplacePlugins) { 56 $pluginsHavingUpdate = $this->marketplacePlugins->getPluginsHavingUpdate(); 57 58 if (!empty($pluginsHavingUpdate)) { 59 $pluginsUpdateMessage = sprintf(' (%d)', count($pluginsHavingUpdate)); 60 } 61 } 62 63 if (!$isAnonymous) { 64 $menu->addPlatformItem(null, "", $order = 7); 65 } 66 67 if ($hasSuperUserAcess) { 68 $menu->addSystemItem(Piwik::translate('General_Plugins') . $pluginsUpdateMessage, 69 $this->urlForAction('plugins', array('activated' => '')), 70 $order = 20); 71 } 72 } 73 74} 75