<?php
-
/**
- * @file src/Model/Item.php
+ * @copyright Copyright (C) 2020, Friendica
+ *
+ * @license GNU AGPL version 3 or any later version
+ *
+ * This program is free software: you can redistribute it and/or modify
+ * it under the terms of the GNU Affero General Public License as
+ * published by the Free Software Foundation, either version 3 of the
+ * License, or (at your option) any later version.
+ *
+ * This program is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ * GNU Affero General Public License for more details.
+ *
+ * You should have received a copy of the GNU Affero General Public License
+ * along with this program. If not, see <https://www.gnu.org/licenses/>.
+ *
*/
namespace Friendica\Model;
use Friendica\Content\Text\BBCode;
use Friendica\Content\Text\HTML;
-use Friendica\Core\Config;
use Friendica\Core\Hook;
use Friendica\Core\Logger;
use Friendica\Core\Protocol;
public static function isLegacyMode()
{
if (is_null(self::$legacy_mode)) {
- self::$legacy_mode = (Config::get("system", "post_update_version") < 1279);
+ self::$legacy_mode = (DI::config()->get("system", "post_update_version") < 1279);
}
return self::$legacy_mode;
$uid = intval($item['uid']);
// check for create date and expire time
- $expire_interval = Config::get('system', 'dbclean-expire-days', 0);
+ $expire_interval = DI::config()->get('system', 'dbclean-expire-days', 0);
$user = DBA::selectFirst('user', ['expire'], ['uid' => $uid]);
if (DBA::isResult($user) && ($user['expire'] > 0) && (($user['expire'] < $expire_interval) || ($expire_interval == 0))) {
}
// Creates or assigns the permission set
- $item['psid'] = PermissionSet::fetchIDForPost($item);
+ $item['psid'] = PermissionSet::getIdFromACL(
+ $item['uid'],
+ $item['allow_cid'],
+ $item['allow_gid'],
+ $item['deny_cid'],
+ $item['deny_gid']
+ );
+
+ $item['allow_cid'] = null;
+ $item['allow_gid'] = null;
+ $item['deny_cid'] = null;
+ $item['deny_gid'] = null;
// We are doing this outside of the transaction to avoid timing problems
if (!self::insertActivity($item)) {
unset($item['owner-name']);
unset($item['owner-avatar']);
- $like_no_comment = Config::get('system', 'like_no_comment');
+ $like_no_comment = DI::config()->get('system', 'like_no_comment');
DBA::transaction();
$ret = DBA::insert('item', $item);
$URLSearchString = "^\[\]";
// All hashtags should point to the home server if "local_tags" is activated
- if (Config::get('system', 'local_tags')) {
+ if (DI::config()->get('system', 'local_tags')) {
$item["body"] = preg_replace("/#\[url\=([$URLSearchString]*)\](.*?)\[\/url\]/ism",
"#[url=".DI::baseUrl()."/search?tag=$2]$2[/url]", $item["body"]);
$private = ($user['allow_cid'] || $user['allow_gid'] || $user['deny_cid'] || $user['deny_gid']) ? 1 : 0;
- $psid = PermissionSet::fetchIDForPost($user);
+ $psid = PermissionSet::getIdFromACL(
+ $user['uid'],
+ $user['allow_cid'],
+ $user['allow_gid'],
+ $user['deny_cid'],
+ $user['deny_gid']
+ );
$forum_mode = ($prvgroup ? 2 : 1);
*/
public static function fixPrivatePhotos($s, $uid, $item = null, $cid = 0)
{
- if (Config::get('system', 'disable_embedded')) {
+ if (DI::config()->get('system', 'disable_embedded')) {
return $s;
}
if ($rendered_hash == ''
|| $rendered_html == ""
|| $rendered_hash != hash("md5", $item["body"])
- || Config::get("system", "ignore_cache")
+ || DI::config()->get("system", "ignore_cache")
) {
self::addRedirToImageTags($item);
}
// Only compare the HTML when we forcefully ignore the cache
- if (Config::get("system", "ignore_cache") && ($rendered_html != $item["rendered-html"])) {
+ if (DI::config()->get("system", "ignore_cache") && ($rendered_html != $item["rendered-html"])) {
$update = true;
}
return 0;
}
+ /**
+ * Return the URI for a link to the post
+ *
+ * @param string $uri URI or link to post
+ *
+ * @return string URI
+ */
+ public static function getURIByLink(string $uri)
+ {
+ $ssl_uri = str_replace('http://', 'https://', $uri);
+ $uris = [$uri, $ssl_uri, Strings::normaliseLink($uri)];
+
+ $item = DBA::selectFirst('item', ['uri'], ['uri' => $uris]);
+ if (DBA::isResult($item)) {
+ return $item['uri'];
+ }
+
+ $itemcontent = DBA::selectFirst('item-content', ['uri-id'], ['plink' => $uris]);
+ if (!DBA::isResult($itemcontent)) {
+ return '';
+ }
+
+ $itemuri = DBA::selectFirst('item-uri', ['uri'], ['id' => $itemcontent['uri-id']]);
+ if (DBA::isResult($itemuri)) {
+ return $itemuri['uri'];
+ }
+
+ return '';
+ }
+
/**
* Fetches item for given URI or plink
*
return $item_id;
}
- if (ActivityPub\Processor::fetchMissingActivity($uri)) {
- $item_id = self::searchByLink($uri, $uid);
+ if ($fetched_uri = ActivityPub\Processor::fetchMissingActivity($uri)) {
+ $item_id = self::searchByLink($fetched_uri, $uid);
} else {
$item_id = Diaspora::fetchByURL($uri);
}