$docroot ??= ($_SERVER['DOCUMENT_ROOT'] ?: '/usr/local/emhttp');
require_once "$docroot/webGui/include/Helpers.php";
require_once "$docroot/plugins/dynamix.plugin.manager/include/PluginHelpers.php";
// add translations
$_SERVER['REQUEST_URI'] = 'plugins';
require_once "$docroot/webGui/include/Translations.php";
$system = unscript(_var($_GET,'system'));
$branch = unscript(_var($_GET,'branch'));
$audit = unscript(_var($_GET,'audit'));
$check = unscript(_var($_GET,'check'));
$cmd = unscript(_var($_GET,'cmd'));
$init = unscript(_var($_GET,'init'));
$empty = true;
$install = false;
$updates = 0;
$alerts = '/tmp/plugins/my_alerts.txt';
$builtin = ['unRAIDServer'];
$plugins = "/var/log/plugins/*.plg";
$ncsi = null; // network connection status indicator
$Unraid = parse_ini_file("/etc/unraid-version");
if ($cmd=='alert') {
// signal alert message yer or no
echo is_file($alerts) ? 1 : 0;
die();
}
if ($cmd=='pending') {
// prepare pending status for multi operations
foreach (explode('*',_var($_GET,'plugin')) as $plugin) file_put_contents("/tmp/plugins/pluginPending/$plugin",'multi');
die();
}
if ($audit) {
[$plg,$action] = my_explode(':',$audit);
switch ($action) {
case 'return' : $check = true; break;
case 'remove' : return;
case 'install': $install = true;
case 'update' : $plugins = "/var/log/plugins/$plg.plg"; break;
}
}
delete_file($alerts);
foreach (glob($plugins,GLOB_NOSORT) as $plugin_link) {
//only consider symlinks
$plugin_file = @readlink($plugin_link);
if ($plugin_file === false) continue;
//plugin name
$name = plugin('name',$plugin_file) ?: basename($plugin_file,".plg");
$user = in_array($name,$builtin);
//switch between system and user plugins
if (($system && !$user) || (!$system && $user)) continue;
//OS update?
$os = $system && $name==$builtin[0];
if ($init || $install) {
//icon + link
$launch = plugin('launch',$plugin_file);
if ($icon = plugin('icon',$plugin_file)) {
if (substr($icon,-4)=='.png') {
if (file_exists("plugins/$name/images/$icon")) {
$icon = "plugins/$name/images/$icon";
} elseif (file_exists("plugins/$name/$icon")) {
$icon = "plugins/$name/$icon";
} else {
$icon = "plugins/dynamix.plugin.manager/images/dynamix.plugin.manager.png";
}
$icon = "";
} elseif (substr($icon,0,5)=='icon-') {
$icon = "";
} else {
if (substr($icon,0,3)!='fa-') $icon = "fa-$icon";
$icon = "";
}
$link = $launch ? "$icon" : $icon;
} else {
$icon = icon($name);
$link = $launch ? "
" : "
";
}
//description
$readme = "plugins/{$name}/README.md";
$desc = file_exists($readme) ? Markdown(file_get_contents($readme)) : Markdown("**{$name}**");
//support
$support = plugin('support',$plugin_file) ?: "";
$support = $support ? ""._('Support Thread')."" : "";
//author
$author = plugin('author',$plugin_file) ?: _('anonymous');
//version
$version = plugin('version',$plugin_file) ?: _('unknown');
$date = str_replace('.','',$version);
//category
$category = plugin('category',$plugin_file) ?: (strpos($version,'-')!==false ? 'next' : 'stable');
//status
$status = $check ? _('unknown') : _('checking').'...';
$id = str_replace('.','-',$name);
$empty = false;
echo "