X-Git-Url: https://git.mxchange.org/?a=blobdiff_plain;f=src%2FCore%2FAddon.php;h=8b95af328c26dd46cd05b08faedb77b268ea9436;hb=043e04f484c1fbaf4444454ba08b2c769ca2761c;hp=799a447d27479179c0f218cea91386d306953109;hpb=0a4119adaf6294bf43d135a0f435c1dd677c50e0;p=friendica.git diff --git a/src/Core/Addon.php b/src/Core/Addon.php index 799a447d27..8b95af328c 100644 --- a/src/Core/Addon.php +++ b/src/Core/Addon.php @@ -1,6 +1,22 @@ . + * */ namespace Friendica\Core; @@ -45,7 +61,7 @@ class Addon list($tmp, $addon) = array_map('trim', explode('/', $file)); $info = self::getInfo($addon); - if (Config::get('system', 'show_unsupported_addons') + if (DI::config()->get('system', 'show_unsupported_addons') || strtolower($info['status']) != 'unsupported' || self::isEnabled($addon) ) { @@ -96,37 +112,8 @@ class Addon */ public static function loadAddons() { - $installed_addons = []; - - $r = DBA::select('addon', [], ['installed' => 1]); - if (DBA::isResult($r)) { - $installed_addons = DBA::toArray($r); - } - - $addons = Config::get('system', 'addon'); - $addons_arr = []; - - if ($addons) { - $addons_arr = explode(',', str_replace(' ', '', $addons)); - } - - self::$addons = $addons_arr; - - $installed_arr = []; - - foreach ($installed_addons as $addon) { - if (!self::isEnabled($addon['name'])) { - self::uninstall($addon['name']); - } else { - $installed_arr[] = $addon['name']; - } - } - - foreach (self::$addons as $p) { - if (!in_array($p, $installed_arr)) { - self::install($p); - } - } + $installed_addons = DBA::selectToArray('addon', ['name'], ['installed' => true]); + self::$addons = array_column($installed_addons, 'name'); } /** @@ -149,11 +136,9 @@ class Addon $func(); } - DBA::delete('hook', ['file' => 'addon/' . $addon . '/' . $addon . '.php']); + Hook::delete(['file' => 'addon/' . $addon . '/' . $addon . '.php']); unset(self::$addons[array_search($addon, self::$addons)]); - - Addon::saveEnabledList(); } /** @@ -196,8 +181,6 @@ class Addon self::$addons[] = $addon; } - Addon::saveEnabledList(); - return true; } else { Logger::error("Addon {addon}: {action} failed", ['action' => 'install', 'addon' => $addon]); @@ -210,41 +193,20 @@ class Addon */ public static function reload() { - $addons = Config::get('system', 'addon'); - if (strlen($addons)) { - $r = DBA::select('addon', [], ['installed' => 1]); - if (DBA::isResult($r)) { - $installed = DBA::toArray($r); - } else { - $installed = []; + $addons = DBA::selectToArray('addon', [], ['installed' => true]); + + foreach ($addons as $addon) { + $addonname = Strings::sanitizeFilePathItem(trim($addon['name'])); + $fname = 'addon/' . $addonname . '/' . $addonname . '.php'; + $t = @filemtime($fname); + if (!file_exists($fname) || ($addon['timestamp'] == $t)) { + continue; } - $addon_list = explode(',', $addons); - - foreach ($addon_list as $addon) { - $addon = Strings::sanitizeFilePathItem(trim($addon)); - $fname = 'addon/' . $addon . '/' . $addon . '.php'; - if (file_exists($fname)) { - $t = @filemtime($fname); - foreach ($installed as $i) { - if (($i['name'] == $addon) && ($i['timestamp'] != $t)) { - - Logger::notice("Addon {addon}: {action}", ['action' => 'reload', 'addon' => $i['name']]); - @include_once($fname); - - if (function_exists($addon . '_uninstall')) { - $func = $addon . '_uninstall'; - $func(DI::app()); - } - if (function_exists($addon . '_install')) { - $func = $addon . '_install'; - $func(DI::app()); - } - DBA::update('addon', ['timestamp' => $t], ['id' => $i['id']]); - } - } - } - } + Logger::notice("Addon {addon}: {action}", ['action' => 'reload', 'addon' => $addon['name']]); + + self::uninstall($fname); + self::install($fname); } } @@ -267,8 +229,6 @@ class Addon */ public static function getInfo($addon) { - $a = DI::app(); - $addon = Strings::sanitizeFilePathItem($addon); $info = [ @@ -286,7 +246,7 @@ class Addon $stamp1 = microtime(true); $f = file_get_contents("addon/$addon/$addon.php"); - DI::profiler()->saveTimestamp($stamp1, "file", System::callstack()); + DI::profiler()->saveTimestamp($stamp1, "file"); $r = preg_match("|/\*.*\*/|msU", $f, $m); @@ -341,16 +301,6 @@ class Addon return self::$addons; } - /** - * Saves the current enabled addon list in the system.addon config key - * - * @return boolean - */ - public static function saveEnabledList() - { - return Config::set('system', 'addon', implode(',', self::$addons)); - } - /** * Returns the list of non-hidden enabled addon names *