public static function provided($exclude = null, $include_inactive = false, $use_file = false)
{
if ($include_inactive) {
$all_plugins = Plugins::list_all();
$plugin_list = array();
foreach ($all_plugins as $plugin => $plugin_file) {
$pdata = new \stdClass();
$pdata->info = self::load_info($plugin_file);
$pdata->filename = $plugin_file;
$plugin_list[self::id_from_file($plugin_file)] = $pdata;
}
} else {
$plugin_list = Plugins::get_active();
}
$provided = array();
foreach ($plugin_list as $plugin_id => $plugin) {
if ($plugin->info->name == $exclude || $plugin_id == $exclude) {
continue;
}
if (isset($plugin->info->provides)) {
foreach ($plugin->info->provides->feature as $provide) {
if ($use_file) {
$provided[(string) $provide][] = isset(self::$plugin_files[get_class($plugin)]) ? self::$plugin_files[get_class($plugin)] : $plugin->filename;
} else {
$provided[(string) $provide][] = (string) $plugin->info->name;
}
}
}
}
return Plugins::filter('provided', $provided);
}