]> git.mxchange.org Git - friendica.git/commitdiff
Merge remote-tracking branch 'upstream/develop' into contact-discovery
authorMichael <heluecht@pirati.ca>
Mon, 24 Jun 2019 05:41:10 +0000 (05:41 +0000)
committerMichael <heluecht@pirati.ca>
Mon, 24 Jun 2019 05:41:10 +0000 (05:41 +0000)
16 files changed:
CHANGELOG
VERSION
boot.php
include/conversation.php
mod/network.php
mod/settings.php
src/App.php
src/Content/Nav.php
src/Content/Text/BBCode.php
src/Content/Text/HTML.php
src/Core/Session.php
src/Module/Debug/Babel.php
src/Module/Login.php
src/Module/Profile.php
src/Object/Post.php
view/theme/frio/theme.php

index 1fa98ee870834a15ff5b2477fdf2db744a5e634a..df15f41ebff0d03c70d70fffcb311e954758fc19 100644 (file)
--- a/CHANGELOG
+++ b/CHANGELOG
@@ -1,3 +1,5 @@
+Version 2019.09-dev (UNRELEASED)
+
 Version 2019.06 (2019-06-23)
   Friendica Core:
     Update to the tranlation (CS, DE, EN-GB, EN-US, ET, FR, IT, PL, PT-BR, SV) [translation teams]
diff --git a/VERSION b/VERSION
index 4eda9a567ded4295908effd825009f4489279e84..bb3511a1d2a760d977852e31b39de5bafb13aa0f 100644 (file)
--- a/VERSION
+++ b/VERSION
@@ -1 +1 @@
-2019.06
+2019.09-dev
index 4ade9eb1450a93bcbedf95311e8f32bcd9525af3..086e74d2f47bdf69882fa94f94748a3d40bddea8 100644 (file)
--- a/boot.php
+++ b/boot.php
@@ -31,7 +31,7 @@ use Friendica\Util\DateTimeFormat;
 
 define('FRIENDICA_PLATFORM',     'Friendica');
 define('FRIENDICA_CODENAME',     'Dalmatian Bellflower');
-define('FRIENDICA_VERSION',      '2019.06');
+define('FRIENDICA_VERSION',      '2019.09-dev');
 define('DFRN_PROTOCOL_VERSION',  '2.23');
 define('NEW_UPDATE_ROUTINE_VERSION', 1170);
 
@@ -334,6 +334,7 @@ function get_app()
  * @param array $args
  * @brief Returns a defaut value if the provided variable or array key is falsy
  * @return mixed
+ * @deprecated since version 2019.06, use native coalesce operator (??) instead
  */
 function defaults(...$args)
 {
index 85938ca0f0d6316e542a5bdb5daf829a7c8ae30c..3b3c7a4c185c5a3e7bb9f2c3672f79988afe8187 100644 (file)
@@ -15,6 +15,7 @@ use Friendica\Core\Logger;
 use Friendica\Core\PConfig;
 use Friendica\Core\Protocol;
 use Friendica\Core\Renderer;
+use Friendica\Core\Session;
 use Friendica\Core\System;
 use Friendica\Database\DBA;
 use Friendica\Model\Contact;
@@ -528,7 +529,7 @@ function conversation(App $a, array $items, Pager $pager, $mode, $update, $previ
 
                if (!$update) {
                        $live_update_div = '<div id="live-display"></div>' . "\r\n"
-                               . "<script> var profile_uid = " . defaults($_SESSION, 'uid', 0) . ";"
+                               . "<script> var profile_uid = " . Session::get('uid', 0) . ";"
                                . " var profile_page = 1; </script>";
                }
        } elseif ($mode === 'community') {
index 7753ba2ca4f1373e3e09a750f48e17c8ced43e0c..87eb4308b41549d20a199463fbb2f39dbc7bed33 100644 (file)
@@ -19,6 +19,7 @@ use Friendica\Core\Logger;
 use Friendica\Core\PConfig;
 use Friendica\Core\Protocol;
 use Friendica\Core\Renderer;
+use Friendica\Core\Session;
 use Friendica\Database\DBA;
 use Friendica\Model\Contact;
 use Friendica\Model\Group;
@@ -852,7 +853,7 @@ function networkThreadedView(App $a, $update, $parent)
                        ((time() - $_SESSION['network_last_date_timestamp']) < ($browser_update * 10))) {
                        $bottom_limit = $_SESSION['network_last_date'];
                }
-               $_SESSION['network_last_date'] = defaults($_SESSION, 'network_last_top_limit', $top_limit);
+               $_SESSION['network_last_date'] = Session::get('network_last_top_limit', $top_limit);
                $_SESSION['network_last_date_timestamp'] = time();
 
                if ($last_date > $top_limit) {
index ab7586733adfe3bd014157181a226388f28950e8..d744dbff17f6bc1d89f5c5dfad990005327de17d 100644 (file)
@@ -14,6 +14,7 @@ use Friendica\Core\L10n;
 use Friendica\Core\Logger;
 use Friendica\Core\PConfig;
 use Friendica\Core\Renderer;
+use Friendica\Core\Session;
 use Friendica\Core\System;
 use Friendica\Core\Theme;
 use Friendica\Core\Worker;
@@ -911,8 +912,8 @@ function settings_content(App $a)
                        }
                }
 
-               $theme_selected        = defaults($_SESSION, 'theme'       , $default_theme);
-               $mobile_theme_selected = defaults($_SESSION, 'mobile-theme', $default_mobile_theme);
+               $theme_selected        = Session::get('theme', $default_theme);
+               $mobile_theme_selected = Session::get('mobile-theme', $default_mobile_theme);
 
                $nowarn_insecure = intval(PConfig::get(local_user(), 'system', 'nowarn_insecure'));
 
index 89d3009da04d4f72ca2afffe4e5d9d38ac24461a..f59194077ca1cbd48f943ee5044288402ba36808 100644 (file)
@@ -1032,10 +1032,11 @@ class App
                                // Valid profile links contain a path with "/profile/" and no query parameters
                                if ((parse_url($_GET['zrl'], PHP_URL_QUERY) == "") &&
                                        strstr(parse_url($_GET['zrl'], PHP_URL_PATH), "/profile/")) {
-                                       if (defaults($_SESSION, "visitor_home", "") != $_GET["zrl"]) {
-                                               $_SESSION['my_url'] = $_GET['zrl'];
-                                               $_SESSION['authenticated'] = 0;
+                                       if (Core\Session::get('visitor_home') != $_GET["zrl"]) {
+                                               Core\Session::set('my_url', $_GET['zrl']);
+                                               Core\Session::set('authenticated', 0);
                                        }
+
                                        Model\Profile::zrlInit($this);
                                } else {
                                        // Someone came with an invalid parameter, maybe as a DDoS attempt
@@ -1060,9 +1061,9 @@ class App
                        header('X-Account-Management-Status: none');
                }
 
-               $_SESSION['sysmsg']       = defaults($_SESSION, 'sysmsg'      , []);
-               $_SESSION['sysmsg_info']  = defaults($_SESSION, 'sysmsg_info' , []);
-               $_SESSION['last_updated'] = defaults($_SESSION, 'last_updated', []);
+               $_SESSION['sysmsg']       = Core\Session::get('sysmsg', []);
+               $_SESSION['sysmsg_info']  = Core\Session::get('sysmsg_info', []);
+               $_SESSION['last_updated'] = Core\Session::get('last_updated', []);
 
                /*
                 * check_config() is responsible for running update scripts. These automatically
index 690af1935371d1cee8c0e60a4201a03d72ac6082..ea5c0bbc05230c77984392b5171f1f2846383825 100644 (file)
@@ -9,6 +9,7 @@ use Friendica\Core\Config;
 use Friendica\Core\Hook;
 use Friendica\Core\L10n;
 use Friendica\Core\Renderer;
+use Friendica\Core\Session;
 use Friendica\Core\System;
 use Friendica\Database\DBA;
 use Friendica\Model\Profile;
@@ -174,7 +175,7 @@ class Nav
                // "Home" should also take you home from an authenticated remote profile connection
                $homelink = Profile::getMyURL();
                if (! $homelink) {
-                       $homelink = defaults($_SESSION, 'visitor_home', '');
+                       $homelink = Session::get('visitor_home', '');
                }
 
                if (($a->module != 'home') && (! (local_user()))) {
@@ -243,7 +244,7 @@ class Nav
                        $nav['home'] = ['profile/' . $a->user['nickname'], L10n::t('Home'), '', L10n::t('Your posts and conversations')];
 
                        // Don't show notifications for public communities
-                       if (defaults($_SESSION, 'page_flags', '') != User::PAGE_FLAGS_COMMUNITY) {
+                       if (Session::get('page_flags', '') != User::PAGE_FLAGS_COMMUNITY) {
                                $nav['introductions'] = ['notifications/intros', L10n::t('Introductions'), '', L10n::t('Friend Requests')];
                                $nav['notifications'] = ['notifications',       L10n::t('Notifications'), '', L10n::t('Notifications')];
                                $nav['notifications']['all'] = ['notifications/system', L10n::t('See all notifications'), '', ''];
index 61fe707b40473d26b53b0ef8d5a16acb93f3617b..e08d60579dde09d3f9a710d469868729ba0b386a 100644 (file)
@@ -357,7 +357,7 @@ class BBCode extends BaseObject
         */
        public static function toPlaintext($text, $keep_urls = true)
        {
-               $naked_text = preg_replace('/\[(.+?)\]\s*/','', $text);
+               $naked_text = preg_replace('/\[.+?\]/','', $text);
                if (!$keep_urls) {
                        $naked_text = preg_replace('#https?\://[^\s<]+[^\s\.\)]#i', '', $naked_text);
                }
index 47463bdd091d1b665c07a116bcdaf042ffc843c4..4be217b3e43dd213175f6f2aba258fc1e8ce6e1d 100644 (file)
@@ -567,7 +567,13 @@ class HTML
                return $urls;
        }
 
-       public static function toPlaintext($html, $wraplength = 75, $compact = false)
+       /**
+        * @param string $html
+        * @param int    $wraplength Ensures individual lines aren't longer than this many characters. Doesn't break words.
+        * @param bool   $compact    True: Completely strips image tags; False: Keeps image URLs
+        * @return string
+        */
+       public static function toPlaintext(string $html, $wraplength = 75, $compact = false)
        {
                $message = str_replace("\r", "", $html);
 
@@ -578,15 +584,9 @@ class HTML
 
                @$doc->loadHTML($message);
 
-               $xpath = new DOMXPath($doc);
-               $list = $xpath->query("//pre");
-               foreach ($list as $node) {
-                       $node->nodeValue = str_replace("\n", "\r", $node->nodeValue);
-               }
-
                $message = $doc->saveHTML();
-               $message = str_replace(["\n<", ">\n", "\r", "\n", "\xC3\x82\xC2\xA0"], ["<", ">", "<br>", " ", ""], $message);
-               $message = preg_replace('= [\s]*=i', " ", $message);
+               // Remove eventual UTF-8 BOM
+               $message = str_replace("\xC3\x82\xC2\xA0", "", $message);
 
                // Collecting all links
                $urls = self::collectURLs($message);
@@ -596,18 +596,6 @@ class HTML
                self::tagToBBCode($doc, 'html', [], '', '');
                self::tagToBBCode($doc, 'body', [], '', '');
 
-               // MyBB-Auszeichnungen
-               /*
-                 self::node2BBCode($doc, 'span', array('style'=>'text-decoration: underline;'), '_', '_');
-                 self::node2BBCode($doc, 'span', array('style'=>'font-style: italic;'), '/', '/');
-                 self::node2BBCode($doc, 'span', array('style'=>'font-weight: bold;'), '*', '*');
-
-                 self::node2BBCode($doc, 'strong', array(), '*', '*');
-                 self::node2BBCode($doc, 'b', array(), '*', '*');
-                 self::node2BBCode($doc, 'i', array(), '/', '/');
-                 self::node2BBCode($doc, 'u', array(), '_', '_');
-                */
-
                if ($compact) {
                        self::tagToBBCode($doc, 'blockquote', [], "»", "«");
                } else {
@@ -621,8 +609,6 @@ class HTML
                self::tagToBBCode($doc, 'div', [], "\r", "\r");
                self::tagToBBCode($doc, 'p', [], "\n", "\n");
 
-               //self::node2BBCode($doc, 'ul', array(), "\n[list]", "[/list]\n");
-               //self::node2BBCode($doc, 'ol', array(), "\n[list=1]", "[/list]\n");
                self::tagToBBCode($doc, 'li', [], "\n* ", "\n");
 
                self::tagToBBCode($doc, 'hr', [], "\n" . str_repeat("-", 70) . "\n", "");
@@ -637,12 +623,6 @@ class HTML
                self::tagToBBCode($doc, 'h5', [], "\n\n*", "*\n");
                self::tagToBBCode($doc, 'h6', [], "\n\n*", "*\n");
 
-               // Problem: there is no reliable way to detect if it is a link to a tag or profile
-               //self::node2BBCode($doc, 'a', array('href'=>'/(.+)/'), ' $1 ', ' ', true);
-               //self::node2BBCode($doc, 'a', array('href'=>'/(.+)/', 'rel'=>'oembed'), ' $1 ', '', true);
-               //self::node2BBCode($doc, 'img', array('alt'=>'/(.+)/'), '$1', '');
-               //self::node2BBCode($doc, 'img', array('title'=>'/(.+)/'), '$1', '');
-               //self::node2BBCode($doc, 'img', array(), '', '');
                if (!$compact) {
                        self::tagToBBCode($doc, 'img', ['src' => '/(.+)/'], ' [img]$1', '[/img] ');
                } else {
index 8b6c26bc57ee4b18a60f3074ce279a6eec8a16bf..e54c0e49b910f413b67e3190f1f17991a25f1499 100644 (file)
@@ -62,13 +62,7 @@ class Session
         */
        public static function get($name, $defaults = null)
        {
-               if (isset($_SESSION)) {
-                       $return = defaults($_SESSION, $name, $defaults);
-               } else {
-                       $return = $defaults;
-               }
-
-               return $return;
+               return $_SESSION[$name] ?? $defaults;
        }
 
        /**
index 1ce1ac4c6e92ab5f91db0235244c45c15ca6479a..be10da7ea47557e47b64c38f32c1fffc4333680e 100644 (file)
@@ -159,6 +159,12 @@ class Babel extends BaseModule
                                                'title'   => L10n::t('HTML::toPlaintext'),
                                                'content' => '<pre>' . $text . '</pre>'
                                        ];
+
+                                       $text = Text\HTML::toPlaintext($html, 0, true);
+                                       $results[] = [
+                                               'title'   => L10n::t('HTML::toPlaintext'),
+                                               'content' => '<pre>' . $text . '</pre>'
+                                       ];
                        }
                }
 
index 7a3b6ae45775c82e0be800ece1937ceaf953822c..a8cb838517fa3f0ba635d2915bfbcb634ac6a6e0 100644 (file)
@@ -32,26 +32,21 @@ class Login extends BaseModule
        {
                $a = self::getApp();
 
-               if (!empty($_SESSION['theme'])) {
-                       unset($_SESSION['theme']);
-               }
-
-               if (!empty($_SESSION['mobile-theme'])) {
-                       unset($_SESSION['mobile-theme']);
-               }
+               Session::remove('theme');
+               Session::remove('mobile-theme');
 
                if (local_user()) {
                        $a->internalRedirect();
                }
 
-               return self::form(defaults($_SESSION, 'return_path', null), intval(Config::get('config', 'register_policy')) !== \Friendica\Module\Register::CLOSED);
+               return self::form(Session::get('return_path'), intval(Config::get('config', 'register_policy')) !== \Friendica\Module\Register::CLOSED);
        }
 
        public static function post()
        {
-               $return_path = defaults($_SESSION, 'return_path', '');
+               $return_path = Session::get('return_path');
                session_unset();
-               $_SESSION['return_path'] = $return_path;
+               Session::set('return_path', $return_path);
 
                // OpenId Login
                if (
@@ -159,17 +154,13 @@ class Login extends BaseModule
                }
 
                // if we haven't failed up this point, log them in.
-               $_SESSION['remember'] = $remember;
-               $_SESSION['last_login_date'] = DateTimeFormat::utcNow();
+               Session::set('remember', $remember);
+               Session::set('last_login_date', DateTimeFormat::utcNow());
 
                Session::setAuthenticatedForUser($a, $record, true, true);
 
-               if (!empty($_SESSION['return_path'])) {
-                       $return_path = $_SESSION['return_path'];
-                       unset($_SESSION['return_path']);
-               } else {
-                       $return_path = '';
-               }
+               $return_path = Session::get('return_path', '');
+               Session::remove('return_path');
 
                $a->internalRedirect($return_path);
        }
index afebede4d0dcdf155145cfa9c8c51d0340d6a943..9bc52af7a98535ec3cef3c5bcddc4bfa4c79a546 100644 (file)
@@ -11,6 +11,7 @@ use Friendica\Core\Config;
 use Friendica\Core\Hook;
 use Friendica\Core\L10n;
 use Friendica\Core\PConfig;
+use Friendica\Core\Session;
 use Friendica\Core\System;
 use Friendica\Database\DBA;
 use Friendica\Model\Contact as ContactModel;
@@ -223,8 +224,10 @@ class Profile extends BaseModule
                $sql_extra = Item::getPermissionsSQLByUserId($a->profile['profile_uid'], $remote_contact, $groups, $remote_cid);
                $sql_extra2 = '';
 
+               $last_updated_array = Session::get('last_updated', []);
+
                if ($update) {
-                       $last_updated = (defaults($_SESSION['last_updated'], $last_updated_key, 0));
+                       $last_updated = $last_updated_array[$last_updated_key] ?? 0;
 
                        // If the page user is the owner of the page we should query for unseen
                        // items. Otherwise use a timestamp of the last succesful update request.
@@ -331,7 +334,8 @@ class Profile extends BaseModule
 
                // Set a time stamp for this page. We will make use of it when we
                // search for new items (update routine)
-               $_SESSION['last_updated'][$last_updated_key] = time();
+               $last_updated_array[$last_updated_key] = time();
+               Session::set('last_updated', $last_updated_array);
 
                if ($is_owner && !$update && !Config::get('theme', 'hide_eventlist')) {
                        $o .= ProfileModel::getBirthdays();
index a8577dd8bedda9ad7e62db6425b28341f71e99f7..173b1e53af6a86eecfda3abfb6c70c3d7e9c252f 100644 (file)
@@ -15,6 +15,7 @@ use Friendica\Core\Logger;
 use Friendica\Core\PConfig;
 use Friendica\Core\Protocol;
 use Friendica\Core\Renderer;
+use Friendica\Core\Session;
 use Friendica\Database\DBA;
 use Friendica\Model\Contact;
 use Friendica\Model\Item;
@@ -400,7 +401,7 @@ class Post extends BaseObject
                        'location'        => $location_e,
                        'indent'          => $indent,
                        'shiny'           => $shiny,
-                       'owner_self'      => $item['author-link'] == defaults($_SESSION, 'my_url', null),
+                       'owner_self'      => $item['author-link'] == Session::get('my_url'),
                        'owner_url'       => $this->getOwnerUrl(),
                        'owner_photo'     => $a->removeBaseURL(ProxyUtils::proxifyUrl($item['owner-avatar'], false, ProxyUtils::SIZE_THUMB)),
                        'owner_name'      => $owner_name_e,
index 9c4205c886d26b260b7894047bc530bcb059c83f..a209664b9388e89c21fd4543ca61de084e848e60 100644 (file)
@@ -14,9 +14,8 @@ use Friendica\Core\Config;
 use Friendica\Core\Hook;
 use Friendica\Core\L10n;
 use Friendica\Core\Logger;
-use Friendica\Core\PConfig;
 use Friendica\Core\Renderer;
-use Friendica\Core\System;
+use Friendica\Core\Session;
 use Friendica\Database\DBA;
 use Friendica\Model;
 use Friendica\Module;
@@ -201,7 +200,7 @@ function frio_remote_nav($a, &$nav)
        // get the homelink from $_XSESSION
        $homelink = Model\Profile::getMyURL();
        if (!$homelink) {
-               $homelink = defaults($_SESSION, 'visitor_home', '');
+               $homelink = Session::get('visitor_home', '');
        }
 
        // split up the url in it's parts (protocol,domain/directory, /profile/, nickname