Example #1
0
 public static function get_plugins(&$conf, $force = 0)
 {
     // 缓存结果
     static $plugins = array();
     if (!empty($plugins) && !$force) {
         return $plugins;
     }
     if (empty($conf['plugin_path'])) {
         return array();
     }
     $path = $conf['plugin_path'];
     if (!is_dir($path)) {
         return array();
     }
     $settingfile = $conf['upload_path'] . 'plugin.json';
     $setting = is_file($settingfile) ? (array) core::json_decode(file_get_contents($settingfile)) : array();
     $arr = self::get_paths($path);
     foreach ($arr as $v) {
         $conffile = $path . $v . '/conf.php';
         $pconf = is_file($conffile) ? (array) (include $conffile) : array();
         !isset($pconf['enable']) && ($pconf['enable'] = isset($setting[$v]['enable']) ? $setting[$v]['enable'] : 0);
         !isset($pconf['installed']) && ($pconf['installed'] = isset($setting[$v]['installed']) ? $setting[$v]['installed'] : 0);
         !isset($pconf['pluginid']) && ($pconf['pluginid'] = isset($setting[$v]['pluginid']) ? $setting[$v]['pluginid'] : 0);
         !isset($pconf['rank']) && ($pconf['rank'] = isset($setting[$v]['rank']) ? $setting[$v]['rank'] : 100);
         // 按照正序排序
         $plugins[$v] = $pconf;
     }
     //第二次根据 rank 排序
     misc::arrlist_multisort($plugins, 'rank');
     return $plugins;
 }