From 5bd519efffa6d2c484b6c4dce8c58dcdab2cd168 Mon Sep 17 00:00:00 2001 From: Michael Date: Wed, 14 Mar 2018 22:28:35 +0000 Subject: [PATCH] There is now a "content-warning" field --- boot.php | 2 +- database.sql | 5 +++-- include/conversation.php | 2 +- include/text.php | 5 +++++ src/Database/DBStructure.php | 1 + src/Protocol/OStatus.php | 40 +++++++++++++++--------------------- 6 files changed, 28 insertions(+), 27 deletions(-) diff --git a/boot.php b/boot.php index b8b9b0ec28..caf645c048 100644 --- a/boot.php +++ b/boot.php @@ -39,7 +39,7 @@ define('FRIENDICA_PLATFORM', 'Friendica'); define('FRIENDICA_CODENAME', 'Asparagus'); define('FRIENDICA_VERSION', '3.6-rc'); define('DFRN_PROTOCOL_VERSION', '2.23'); -define('DB_UPDATE_VERSION', 1255); +define('DB_UPDATE_VERSION', 1256); define('NEW_UPDATE_ROUTINE_VERSION', 1170); /** diff --git a/database.sql b/database.sql index 4275c38315..181e9e804a 100644 --- a/database.sql +++ b/database.sql @@ -1,6 +1,6 @@ -- ------------------------------------------ --- Friendica 3.6-dev (Asparagus) --- DB_UPDATE_VERSION 1255 +-- Friendica 3.6-rc (Asparagus) +-- DB_UPDATE_VERSION 1256 -- ------------------------------------------ @@ -466,6 +466,7 @@ CREATE TABLE IF NOT EXISTS `item` ( `author-link` varchar(255) NOT NULL DEFAULT '' COMMENT '', `author-avatar` varchar(255) NOT NULL DEFAULT '' COMMENT '', `title` varchar(255) NOT NULL DEFAULT '' COMMENT '', + `content-warning` varchar(255) NOT NULL DEFAULT '' COMMENT '', `body` mediumtext COMMENT '', `app` varchar(255) NOT NULL DEFAULT '' COMMENT '', `verb` varchar(100) NOT NULL DEFAULT '' COMMENT '', diff --git a/include/conversation.php b/include/conversation.php index dc99a83196..0fc43fb090 100644 --- a/include/conversation.php +++ b/include/conversation.php @@ -445,7 +445,7 @@ These Fields are not added below (yet). They are here to for bug search. return "`item`.`author-id`, `item`.`author-link`, `item`.`author-name`, `item`.`author-avatar`, `item`.`owner-id`, `item`.`owner-link`, `item`.`owner-name`, `item`.`owner-avatar`, `item`.`contact-id`, `item`.`uid`, `item`.`id`, `item`.`parent`, - `item`.`uri`, `item`.`thr-parent`, `item`.`parent-uri`, + `item`.`uri`, `item`.`thr-parent`, `item`.`parent-uri`, `item`.`content-warning`, `item`.`commented`, `item`.`created`, `item`.`edited`, `item`.`received`, `item`.`verb`, `item`.`object-type`, `item`.`postopts`, `item`.`plink`, `item`.`guid`, `item`.`wall`, `item`.`private`, `item`.`starred`, diff --git a/include/text.php b/include/text.php index 1474b8bf09..0aeaa7203b 100644 --- a/include/text.php +++ b/include/text.php @@ -1182,6 +1182,11 @@ function put_item_in_cache(&$item, $update = false) // I'm not sure if we should store it permanently, so we save the old value. $body = $item["body"]; + // Add the content warning + if (!empty($item['content-warning'])) { + $item["body"] = $item['content-warning'] . '[spoiler]' . $item["body"] . '[/spoiler]'; + } + $a = get_app(); redir_private_images($a, $item); diff --git a/src/Database/DBStructure.php b/src/Database/DBStructure.php index f4a88871d7..a1ef3374f9 100644 --- a/src/Database/DBStructure.php +++ b/src/Database/DBStructure.php @@ -1143,6 +1143,7 @@ class DBStructure "author-link" => ["type" => "varchar(255)", "not null" => "1", "default" => "", "comment" => ""], "author-avatar" => ["type" => "varchar(255)", "not null" => "1", "default" => "", "comment" => ""], "title" => ["type" => "varchar(255)", "not null" => "1", "default" => "", "comment" => ""], + "content-warning" => ["type" => "varchar(255)", "not null" => "1", "default" => "", "comment" => ""], "body" => ["type" => "mediumtext", "comment" => ""], "app" => ["type" => "varchar(255)", "not null" => "1", "default" => "", "comment" => ""], "verb" => ["type" => "varchar(100)", "not null" => "1", "default" => "", "comment" => ""], diff --git a/src/Protocol/OStatus.php b/src/Protocol/OStatus.php index 452da7d2d8..eb8474ba2b 100644 --- a/src/Protocol/OStatus.php +++ b/src/Protocol/OStatus.php @@ -604,6 +604,21 @@ class OStatus $item["coord"] = $georsspoint->item(0)->nodeValue; } + $categories = $xpath->query('atom:category', $entry); + if ($categories) { + foreach ($categories as $category) { + foreach ($category->attributes as $attributes) { + if ($attributes->name == "term") { + $term = $attributes->textContent; + if (strlen($item["tag"])) { + $item["tag"] .= ','; + } + $item["tag"] .= "#[url=".System::baseUrl()."/search?tag=".$term."]".$term."[/url]"; + } + } + } + } + $self = ''; $add_body = ''; @@ -643,12 +658,11 @@ class OStatus } // Mastodon Content Warning - $content_warning = false; if (($item["verb"] == ACTIVITY_POST) && $xpath->evaluate('boolean(atom:summary)', $entry)) { $clear_text = $xpath->query('atom:summary/text()', $entry)->item(0)->nodeValue; if (!empty($clear_text)) { - $item["body"] = html2bbcode($clear_text) . '[spoiler]' . $item["body"] . '[/spoiler]'; - $content_warning = true; + $item['content-warning'] = html2bbcode($clear_text); + //$item["body"] = html2bbcode($clear_text) . '[spoiler]' . $item["body"] . '[/spoiler]'; } } @@ -673,26 +687,6 @@ class OStatus $item["parent-uri"] = $item["uri"]; } - $categories = $xpath->query('atom:category', $entry); - if ($categories) { - foreach ($categories as $category) { - foreach ($category->attributes as $attributes) { - if ($attributes->name == "term") { - $term = $attributes->textContent; - // don't add nsfw with content warning if enabled. - // Background: "nsfw" is set automatically by Mastodon - if (!Config::get('system', 'remove_nsfw_with_cw', false) || - !$content_warning || ($term != 'nsfw')) { - if (strlen($item["tag"])) { - $item["tag"] .= ','; - } - $item["tag"] .= "#[url=".System::baseUrl()."/search?tag=".$term."]".$term."[/url]"; - } - } - } - } - } - if (($item['author-link'] != '') && !empty($item['protocol'])) { $item = Conversation::insert($item); } -- 2.39.5