Pārlūkot izejas kodu

Merge branch '1.11.x' of https://github.com/chamilo/chamilo-lms into 1.11.x

Alex Aragon 7 gadi atpakaļ
vecāks
revīzija
a127ba7eb4
2 mainītis faili ar 37 papildinājumiem un 36 dzēšanām
  1. 12 36
      main/admin/index.php
  2. 25 0
      main/inc/lib/plugin.class.php

+ 12 - 36
main/admin/index.php

@@ -484,13 +484,7 @@ if (api_is_platform_admin()) {
     if (isset($_plugins['menu_administrator']) &&
         count($_plugins['menu_administrator']) > 0
     ) {
-        $menuAdministratorItems = [];
-
-        $plugin_obj = new AppPlugin();
-        $items = array();
-        foreach ($_plugins['menu_administrator'] as $pluginName) {
-            $menuAdministratorItems[] = $pluginName;
-        }
+        $menuAdministratorItems = $_plugins['menu_administrator'];
 
         if ($menuAdministratorItems) {
             $blocks['plugins']['icon'] = Display::return_icon(
@@ -500,45 +494,27 @@ if (api_is_platform_admin()) {
                 ICON_SIZE_MEDIUM,
                 false
             );
-            $blocks['plugins']['label'] = api_ucfirst(get_lang('Plugins'));
+            $blocks['plugins']['label'] = get_lang('Plugins');
             $blocks['plugins']['class'] = 'block-admin-platform';
             $blocks['plugins']['editable'] = true;
 
             $plugin_obj = new AppPlugin();
             $items = array();
 
-            foreach ($menuAdministratorItems as $plugin_name) {
-                $plugin_info = $plugin_obj->getPluginInfo($plugin_name);
+            foreach ($menuAdministratorItems as $pluginName) {
+                $pluginInfo = $plugin_obj->getPluginInfo($pluginName);
+                /** @var \Plugin $plugin */
+                $plugin = $pluginInfo['obj'];
+                $pluginUrl = $plugin->getAdminUrl();
 
-                if ($plugin_info['is_admin_plugin'] === false) {
+                if (!$pluginUrl) {
                     continue;
                 }
 
-                if ($plugin_info['is_admin_plugin']) {
-                    $itemUrl = '/admin.php';
-                } elseif ($plugin_info['is_admin_plugin']) {
-                    $itemUrl = '/start.php';
-                }
-
-                $itemUrl = $pluginName.'/start.php';
-
-                if (file_exists(api_get_path(SYS_PLUGIN_PATH).$itemUrl)) {
-                    $items[] = array(
-                        'url' => api_get_path(WEB_PLUGIN_PATH).$itemUrl,
-                        'label' => $plugin_info['title']
-                    );
-
-                    continue;
-                }
-
-                $itemUrl = $pluginName.'/admin.php';
-
-                if (file_exists(api_get_path(SYS_PLUGIN_PATH).$itemUrl)) {
-                    $items[] = array(
-                        'url' => api_get_path(WEB_PLUGIN_PATH).$itemUrl,
-                        'label' => $plugin_info['title']
-                    );
-                }
+                $items[] = array(
+                    'url' => $pluginUrl,
+                    'label' => $pluginInfo['title']
+                );
             }
 
             $blocks['plugins']['items'] = $items;

+ 25 - 0
main/inc/lib/plugin.class.php

@@ -894,4 +894,29 @@ class Plugin
     {
         return $this;
     }
+
+    /**
+     * Get the admin URL for the plugin if Plugin::isAdminPlugin is true
+     * @return null|string
+     */
+    public function getAdminUrl()
+    {
+        if (!$this->isAdminPlugin) {
+            return null;
+        }
+
+        $name = $this->get_name();
+        $sysPath = api_get_path(SYS_PLUGIN_PATH).$name;
+        $webPath = api_get_path(WEB_PLUGIN_PATH).$name;
+
+        if (file_exists("$sysPath/admin.php")) {
+            return "$webPath/admin.php";
+        }
+
+        if (file_exists("$sysPath/start.php")) {
+            return "$webPath/start.php";
+        }
+
+        return null;
+    }
 }