Move addon admin list generation to Core\Addon

This commit is contained in:
Hypolite Petovan 2019-04-27 22:19:54 -04:00
parent 9774c95b80
commit 9f4fb4906a
5 changed files with 40 additions and 29 deletions

View File

@ -27,6 +27,14 @@ class Addon extends BaseObject
*/ */
private static $addons = []; private static $addons = [];
/**
* Returns the list of available addons with their current status and info.
* This list is made from scanning the addon/ folder.
* Unsupported addons are excluded unless they already are enabled or system.show_unsupported_addon is set.
*
* @return array
* @throws \Exception
*/
public static function getAvailableList() public static function getAvailableList()
{ {
$addons = []; $addons = [];
@ -50,6 +58,30 @@ class Addon extends BaseObject
return $addons; return $addons;
} }
/**
* Returns a list of addons that can be configured at the node level.
* The list is formatted for display in the admin panel aside.
*
* @return array
* @throws \Exception
*/
public static function getAdminList()
{
$addons_admin = [];
$addonsAdminStmt = DBA::select('addon', ['name'], ['plugin_admin' => 1], ['order' => ['name']]);
while ($addon = DBA::fetch($addonsAdminStmt)) {
$addons_admin[$addon['name']] = [
'url' => 'admin/addons/' . $addon['name'],
'name' => $addon['name'],
'class' => 'addon'
];
}
DBA::close($addonsAdminStmt);
return $addons_admin;
}
/** /**
* @brief Synchronize addons: * @brief Synchronize addons:
* *

View File

@ -6,7 +6,6 @@ use Friendica\Content\Text\Markdown;
use Friendica\Core\Addon; use Friendica\Core\Addon;
use Friendica\Core\L10n; use Friendica\Core\L10n;
use Friendica\Core\Renderer; use Friendica\Core\Renderer;
use Friendica\Database\DBA;
use Friendica\Module\BaseAdminModule; use Friendica\Module\BaseAdminModule;
use Friendica\Util\Strings; use Friendica\Util\Strings;
@ -42,13 +41,7 @@ class Details extends BaseAdminModule
$a = self::getApp(); $a = self::getApp();
$addons_admin = []; $addons_admin = Addon::getAdminList();
$addonsAdminStmt = DBA::select('addon', ['name'], ['plugin_admin' => 1], ['order' => ['name']]);
foreach (DBA::toArray($addonsAdminStmt) as $addon) {
$addonName = $addon['name'];
// temp addons with admin
$addons_admin[] = $addonName;
}
if ($a->argc > 2) { if ($a->argc > 2) {
// @TODO: Replace with parameter from router // @TODO: Replace with parameter from router
@ -93,7 +86,7 @@ class Details extends BaseAdminModule
} }
$admin_form = ''; $admin_form = '';
if (in_array($addon, $addons_admin)) { if (array_key_exists($addon, $addons_admin)) {
require_once "addon/$addon/$addon.php"; require_once "addon/$addon/$addon.php";
$func = $addon . '_addon_admin'; $func = $addon . '_addon_admin';
$func($a, $admin_form); $func($a, $admin_form);
@ -126,4 +119,4 @@ class Details extends BaseAdminModule
$a->internalRedirect('admin/addons'); $a->internalRedirect('admin/addons');
} }
} }

View File

@ -2,12 +2,9 @@
namespace Friendica\Module\Admin\Addons; namespace Friendica\Module\Admin\Addons;
use Friendica\Content\Text\Markdown;
use Friendica\Core\Addon; use Friendica\Core\Addon;
use Friendica\Core\Config;
use Friendica\Core\L10n; use Friendica\Core\L10n;
use Friendica\Core\Renderer; use Friendica\Core\Renderer;
use Friendica\Database\DBA;
use Friendica\Module\BaseAdminModule; use Friendica\Module\BaseAdminModule;
class Index extends BaseAdminModule class Index extends BaseAdminModule
@ -46,12 +43,6 @@ class Index extends BaseAdminModule
$a->internalRedirect('admin/addons'); $a->internalRedirect('admin/addons');
} }
$addons_admin = [];
$addonsAdminStmt = DBA::select('addon', ['name'], ['plugin_admin' => 1], ['order' => ['name']]);
foreach (DBA::toArray($addonsAdminStmt) as $addon) {
$addons_admin[] = $addon['name'];
}
$addons = Addon::getAvailableList(); $addons = Addon::getAvailableList();
$t = Renderer::getMarkupTemplate('admin/addons/index.tpl'); $t = Renderer::getMarkupTemplate('admin/addons/index.tpl');

View File

@ -3,6 +3,7 @@
namespace Friendica\Module; namespace Friendica\Module;
use Friendica\BaseModule; use Friendica\BaseModule;
use Friendica\Core\Addon;
use Friendica\Core\L10n; use Friendica\Core\L10n;
use Friendica\Core\Renderer; use Friendica\Core\Renderer;
use Friendica\Core\System; use Friendica\Core\System;
@ -97,15 +98,9 @@ abstract class BaseAdminModule extends BaseModule
]], ]],
]; ];
$addons_admin = [];
$addonsAdminStmt = DBA::select('addon', ['name'], ['plugin_admin' => 1], ['order' => ['name']]);
foreach (DBA::toArray($addonsAdminStmt) as $addon) {
$addons_admin[] = ['admin/addons/' . $addon['name'], $addon['name'], 'addon'];
}
$t = Renderer::getMarkupTemplate('admin/aside.tpl'); $t = Renderer::getMarkupTemplate('admin/aside.tpl');
$a->page['aside'] .= Renderer::replaceMacros($t, [ $a->page['aside'] .= Renderer::replaceMacros($t, [
'$admin' => ['addons_admin' => $addons_admin], '$admin' => ['addons_admin' => Addon::getAdminList()],
'$subpages' => $aside_sub, '$subpages' => $aside_sub,
'$admtxt' => L10n::t('Admin'), '$admtxt' => L10n::t('Admin'),
'$plugadmtxt' => L10n::t('Addon Features'), '$plugadmtxt' => L10n::t('Addon Features'),

View File

@ -43,9 +43,9 @@
<h3>{{$plugadmtxt}}</h3> <h3>{{$plugadmtxt}}</h3>
<ul role="menu"> <ul role="menu">
{{foreach $admin.addons_admin as $name => $item}} {{foreach $admin.addons_admin as $name => $item}}
<li role="menuitem" class="{{$item.2}}"> <li role="menuitem" class="{{$item.class}}">
<a href="{{$item.0}}" {{if $item.accesskey}}accesskey="{{$item.accesskey}}"{{/if}}> <a href="{{$item.url}}" {{if $item.accesskey}}accesskey="{{$item.accesskey}}"{{/if}}>
{{$item.1}} {{$item.name}}
</a> </a>
</li> </li>
{{/foreach}} {{/foreach}}