diff --git a/CHANGELOG b/CHANGELOG index 97a12d55d9..75f8a8da1f 100644 --- a/CHANGELOG +++ b/CHANGELOG @@ -1,10 +1,68 @@ -Version 2021.03 (unreleased) +Version 2021.04 (2021-04-26) Friendica Core - Removed the frontend worker [annando] + Updates to the translations BG, DE, EN-US, ES, HU, IT, RU [translation teams] + Updates to the themes (frio) [Extarys, MrPetovan] + Updates to the documentation [tobiasd, urbalazs] + General code cleanup [annando, MrPetovan, Quix0r] + Enhanced the babel functionality to work with some addons [MrPetovan] + Enhanced the import of mails [annando] + Enhanced the PHP8 compatibility [annando, nupplaphil, realkinetix] + Enhanced federation with diaspora*, Peertube, Pleroma [annando] + Enhanced the admin panel federation overview [annando] + Enhanced the federated deletion of items [annando] + Enhanced the usability of Friendica in containers [nupplaphil] + Enhanced the handling of contact avatars [annando] + Enhanced the display of shared postings [annando] + Enhanced the process of deleting items [annando] + Enhanced the trending tags [annando] + Enhanced the maintenance page [MrPetovan] + Enhanced the performance [annando] + Enhanced the PWA [Extarys] + Enhanced the handling of private messages [fabrixxm] + Enhanced the video BBCode tag [MrPetovan] + Enhanced the installation wizard [fabrixxm] + Enhanced the handling of #tags [MrPetovan] + Enhanced the handling of audio attachments [annando] + Moved API endpoints to pin, star, ignore and like items [MrPetovan] + Updated the composer dependencies [MrPetovan] + Reworked the database structure [annando] + Fixed a bug in accessing uexport and uimport [MrPetovan] + Fixed a bug while logging [nupplaphil] + Fixed a bug handling legacy photo storage [annando] + Fixed a bug while parsing fetched HTML [annando] + Fixed a bug that prevented images to be fetched [annando] + Fixed a bug that caused content being handled for expired users [annando] + Fixed some problems of handling OEmbed content [MrPetovan] + Fixed a bug in the storage move command [fabrixxm, utzer] + Fixed a bug in the mime type handling [jurassic-c] + Fixed a problem with the /parseurl path [MrPetovan] + Fixed a problem with mentions in the summary of a posting [annando] + Fixed a bug with the endless scroll in saved folders [annando] + Removed the front-end worker [annando] + Added a security.txt file to the repository [MrPetovan] + Added remember device setting for the 2FA [MrPetovan] + Added the possibility to block tags from the trending tags [annando] + Added the possibility to chmod proxied files [Quix0r] Friendica Addons + Updated to the translations BG, DE, EN-US, ES, HU, IT [translation teams] + Adapted the addons to the new database schema [annando] + Adapted the addons to the new class structure [annando, MrPetovan] + deprecated flash based addons (sniper, mahjongg) [urbalazs] + mailstream + better URL handling [mexon] + smileybutton addon was reworked [MrPetovan] + twitter + Fixed an OEmbed problem with URL handling [MrPetovan] + Improved handling of Photo postings [annando] Closed Issues + 8910, 9402, 9640, 9677, 9698, 9716, 9733, 9743, 9746, 9753, 9761, + 9764, 9767, 9777, 9782, 9789, 9799, 9811, 9814, 9820, 9827, 9846, + 9854, 9856, 9872, 9875, 9879, 9881, 9885, 9895, 9905, 9907, 9912, + 9914, 9929, 9936, 9948, 9950, 9962, 9971, 9975, 9977, 9980, 9996, + 10017, 10032, 10041, 10047, 10050, 10068, 10105, 10107, 10110, + 10156 Version 2021.01 (2021-01-04) Friendica Core diff --git a/CREDITS.txt b/CREDITS.txt index 25caae4d76..127db14fe6 100644 --- a/CREDITS.txt +++ b/CREDITS.txt @@ -43,6 +43,7 @@ Beluga Ben Ben Roberts ben-utzer +Beringer Zsolt BinkaDroid Bjoessi bufalo1973 @@ -58,6 +59,7 @@ Christian M. Grube Christian Vogeley Christian Wiwie Cohan Robinson +Colby Sollars Copiis Praeesse CrystalStiletto Cyboulette @@ -87,6 +89,7 @@ Eric Côté erik Erkan Yilmaz Eugene Veresk +Extarys Fabian Dost Fabio Comuni felixgilles @@ -106,6 +109,7 @@ Gregory Smith guzzisti Haakon Meland Eriksen Hans Meine +hauke Hauke Hauke Altmann Herbert Thielen @@ -179,6 +183,7 @@ mytbk nathilia-peirce Nicola Spanti nobody +nupplaPhil Olaf Conradi Oliver Olivier @@ -203,6 +208,7 @@ R C Rabuzarus Radek Rafael Garau +Rafael Kalachev Rain Hawk Rainulf Pineda Ralf Thees @@ -227,6 +233,7 @@ Samuli Valavuo Sandro Santilli Sebastian Egbers sella +Senex Petrovic Seth Silke Meyer Simon L'nu @@ -243,6 +250,7 @@ Sveinn í Felli Sven Anders Sylke Vicious Sylvain Lagacé +szymon.filip Sérgio Lima Taekus Tazman DeVille @@ -270,12 +278,12 @@ U-SOUND\mike ufic Ulf Rompe Unknown -Valvin A +utzer +Valvin Vasudev Kamath Vasya Novikov Vinzenz Vietzke vislav -vladimir N Vladimir Núñez VVelox Vít Šesták 'v6ak' diff --git a/VERSION b/VERSION index b1f4077f81..e9cd37efec 100644 --- a/VERSION +++ b/VERSION @@ -1 +1 @@ -2021.03-rc +2021.06-dev diff --git a/boot.php b/boot.php index 2223379ca3..bbb66c2f9a 100644 --- a/boot.php +++ b/boot.php @@ -37,8 +37,8 @@ use Friendica\Util\BasePath; use Friendica\Util\DateTimeFormat; define('FRIENDICA_PLATFORM', 'Friendica'); -define('FRIENDICA_CODENAME', 'Red Hot Poker'); -define('FRIENDICA_VERSION', '2021.03-rc'); +define('FRIENDICA_CODENAME', 'Siberian Iris'); +define('FRIENDICA_VERSION', '2021.06-dev'); define('DFRN_PROTOCOL_VERSION', '2.23'); define('NEW_TABLE_STRUCTURE_VERSION', 1288); diff --git a/src/Console/Addon.php b/src/Console/Addon.php new file mode 100644 index 0000000000..3577982ba7 --- /dev/null +++ b/src/Console/Addon.php @@ -0,0 +1,213 @@ +. + * + */ + +namespace Friendica\Console; + +use Console_Table; +use Friendica\App; +use Friendica\Content\Pager; +use Friendica\Core\L10n; +use Friendica\Core\Addon as AddonCore; +use Friendica\Database\Database; +use Friendica\Util\Strings; +use RuntimeException; + +/** + * tool to manage addons on the current node + */ +class Addon extends \Asika\SimpleConsole\Console +{ + protected $helpOptions = ['h', 'help', '?']; + + /** + * @var App\Mode + */ + private $appMode; + /** + * @var L10n + */ + private $l10n; + /** + * @var Database + */ + private $dba; + + protected function getHelp() + { + $help = << [-h|--help|-?] [-v] + bin/console addon disable [-h|--help|-?] [-v] + +Description + Modify addon settings per console commands. + +Options + -h|--help|-? Show help information + -v Show more debug information +HELP; + return $help; + } + + public function __construct(App\Mode $appMode, L10n $l10n, Database $dba, array $argv = null) + { + parent::__construct($argv); + + $this->appMode = $appMode; + $this->l10n = $l10n; + $this->dba = $dba; + + AddonCore::loadAddons(); + } + + protected function doExecute() + { + if ($this->getOption('v')) { + $this->out('Class: ' . __CLASS__); + $this->out('Arguments: ' . var_export($this->args, true)); + $this->out('Options: ' . var_export($this->options, true)); + } + + if (count($this->args) == 0) { + $this->out($this->getHelp()); + return 0; + } + + if ($this->appMode->isInstall()) { + throw new RuntimeException('Database isn\'t ready or populated yet'); + } + + $command = $this->getArgument(0); + + switch ($command) { + case 'list': + return $this->list(); + case 'enable': + return $this->enable(); + case 'disable': + return $this->disable(); + default: + throw new \Asika\SimpleConsole\CommandArgsException('Wrong command.'); + } + } + + /** + * Lists plugins + * + * @return int Return code of this command + * + * @throws \Exception + */ + private function list() + { + $subCmd = $this->getArgument(1); + + $table = new Console_Table(); + switch ($subCmd) { + case 'all': + $table->setHeaders(['Name', 'Enabled']); + break; + case 'enabled': + case 'disabled': + $table->setHeaders(['Name']); + break; + default: + $this->out($this->getHelp()); + return false; + } + foreach (AddonCore::getAvailableList() as $addon) { + $addon_name = $addon[0]; + $enabled = AddonCore::isEnabled($addon_name) ? "enabled" : "disabled"; + switch ($subCmd) { + case 'all': + $table->addRow([$addon_name, $enabled]); + break; + case 'enabled': + if (!$enabled) { + continue 2; + } + $table->addRow([$addon_name]); + case 'disabled': + if ($enabled) { + continue 2; + } + $table->addRow([$addon_name]); + break; + } + + } + $this->out($table->getTable()); + } + + /** + * Enables an addon + * + * @return int Return code of this command + * + * @throws \Exception + */ + private function enable() + { + $addonname = $this->getArgument(1); + + $addon = Strings::sanitizeFilePathItem($addonname); + if (!is_file("addon/$addon/$addon.php")) { + throw new RuntimeException($this->l10n->t('Addon not found')); + } + + if (AddonCore::isEnabled($addon)) { + throw new RuntimeException($this->l10n->t('Addon already enabled')); + } + + AddonCore::install($addon); + + return 0; + } + + /** + * Disables an addon + * + * @return int Return code of this command + * + * @throws \Exception + */ + private function disable() + { + $addonname = $this->getArgument(1); + + $addon = Strings::sanitizeFilePathItem($addonname); + if (!is_file("addon/$addon/$addon.php")) { + throw new RuntimeException($this->l10n->t('Addon not found')); + } + + if (!AddonCore::isEnabled($addon)) { + throw new RuntimeException($this->l10n->t('Addon already disabled')); + } + + AddonCore::uninstall($addon); + + return 0; + } +} diff --git a/src/Content/PageInfo.php b/src/Content/PageInfo.php index 293da75a93..7226ff2a44 100644 --- a/src/Content/PageInfo.php +++ b/src/Content/PageInfo.php @@ -292,7 +292,8 @@ class PageInfo } // Stripping link labels that include a shortened version of the URL - if (strpos($url, trim($match[1], '.…')) !== false) { + $trimMatch = trim($match[1], '.…'); + if (!empty($trimMatch) && strpos($url, $trimMatch) !== false) { return ''; } diff --git a/src/Core/Console.php b/src/Core/Console.php index b296714456..9289e22341 100644 --- a/src/Core/Console.php +++ b/src/Core/Console.php @@ -44,6 +44,7 @@ class Console extends \Asika\SimpleConsole\Console Usage: bin/console [--version] [-h|--help|-?] [] [-v] Commands: + addon Addon management cache Manage node cache config Edit site config createdoxygen Generate Doxygen headers @@ -74,6 +75,7 @@ HELP; } protected $subConsoles = [ + 'addon' => Friendica\Console\Addon::class, 'cache' => Friendica\Console\Cache::class, 'config' => Friendica\Console\Config::class, 'createdoxygen' => Friendica\Console\CreateDoxygen::class,