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