namespace Friendica\Model;
-use Friendica\BaseObject;
use Friendica\Content\Text\BBCode;
use Friendica\Content\Text\HTML;
use Friendica\Core\Config;
use Friendica\Protocol\ActivityPub;
use Friendica\Protocol\Diaspora;
use Friendica\Protocol\OStatus;
-use Friendica\Util\ACLFormatter;
use Friendica\Util\DateTimeFormat;
use Friendica\Util\Map;
use Friendica\Util\Network;
use Friendica\Worker\Delivery;
use Text_LanguageDetect;
-class Item extends BaseObject
+class Item
{
// Posting types, inspired by https://www.w3.org/TR/activitystreams-vocabulary/#object-types
const PT_ARTICLE = 0;
'iaid' => 'internal-iaid'];
if ($usermode) {
- $fields['user-item'] = ['pinned', 'ignored' => 'internal-user-ignored'];
+ $fields['user-item'] = ['pinned', 'notification-type', 'ignored' => 'internal-user-ignored'];
}
$fields['item-activity'] = ['activity', 'activity' => 'internal-activity'];
if ($notify) {
// We have to avoid duplicates. So we create the GUID in form of a hash of the plink or uri.
// We add the hash of our own host because our host is the original creator of the post.
- $prefix_host = \get_app()->getHostName();
+ $prefix_host = DI::baseUrl()->getHostname();
} else {
$prefix_host = '';
$item['parent-uri'] = $item['thr-parent'];
}
- /** @var Activity $activity */
- $activity = self::getClass(Activity::class);
+ $activity = DI::activity();
if (isset($item['gravity'])) {
$item['gravity'] = intval($item['gravity']);
$item['edited'] = DateTimeFormat::utcNow();
}
- $item['plink'] = ($item['plink'] ?? '') ?: System::baseUrl() . '/display/' . urlencode($item['guid']);
+ $item['plink'] = ($item['plink'] ?? '') ?: DI::baseUrl() . '/display/' . urlencode($item['guid']);
$default = ['url' => $item['author-link'], 'name' => $item['author-name'],
'photo' => $item['author-avatar'], 'network' => $item['network']];
self::updateContact($item);
+ UserItem::setNotification($current_post);
+
check_user_notification($current_post);
if ($notify || ($item['visible'] && ((!empty($parent) && $parent['origin']) || $item['origin']))) {
}
// To avoid timing problems, we are using locks.
- $locked = Lock::acquire('item_insert_activity');
+ $locked = DI::lock()->acquire('item_insert_activity');
if (!$locked) {
Logger::log("Couldn't acquire lock for URI " . $item['uri'] . " - proceeding anyway.");
}
} else {
// This shouldn't happen.
Logger::log('Could not insert activity for URI ' . $item['uri'] . ' - should not happen');
- Lock::release('item_insert_activity');
+ DI::lock()->release('item_insert_activity');
return false;
}
if ($locked) {
- Lock::release('item_insert_activity');
+ DI::lock()->release('item_insert_activity');
}
return true;
}
}
// To avoid timing problems, we are using locks.
- $locked = Lock::acquire('item_insert_content');
+ $locked = DI::lock()->acquire('item_insert_content');
if (!$locked) {
Logger::log("Couldn't acquire lock for URI " . $item['uri'] . " - proceeding anyway.");
}
Logger::log('Could not insert content for URI ' . $item['uri'] . ' - should not happen');
}
if ($locked) {
- Lock::release('item_insert_content');
+ DI::lock()->release('item_insert_content');
}
}
$guid = System::createUUID();
}
- return DI::app()->getBaseURL() . '/objects/' . $guid;
+ return DI::baseUrl()->get() . '/objects/' . $guid;
}
/**
// All hashtags should point to the home server if "local_tags" is activated
if (Config::get('system', 'local_tags')) {
$item["body"] = preg_replace("/#\[url\=([$URLSearchString]*)\](.*?)\[\/url\]/ism",
- "#[url=".System::baseUrl()."/search?tag=$2]$2[/url]", $item["body"]);
+ "#[url=".DI::baseUrl()."/search?tag=$2]$2[/url]", $item["body"]);
$item["tag"] = preg_replace("/#\[url\=([$URLSearchString]*)\](.*?)\[\/url\]/ism",
- "#[url=".System::baseUrl()."/search?tag=$2]$2[/url]", $item["tag"]);
+ "#[url=".DI::baseUrl()."/search?tag=$2]$2[/url]", $item["tag"]);
}
// mask hashtags inside of url, bookmarks and attachments to avoid urls in urls
}
$basetag = str_replace('_',' ',substr($tag,1));
- $newtag = '#[url=' . System::baseUrl() . '/search?tag=' . $basetag . ']' . $basetag . '[/url]';
+ $newtag = '#[url=' . DI::baseUrl() . '/search?tag=' . $basetag . ']' . $basetag . '[/url]';
$item["body"] = str_replace($tag, $newtag, $item["body"]);
return false;
}
- $link = Strings::normaliseLink(System::baseUrl() . '/profile/' . $user['nickname']);
+ $link = Strings::normaliseLink(DI::baseUrl() . '/profile/' . $user['nickname']);
/*
* Diaspora uses their own hardwired link URL in @-tags
* instead of the one we supply with webfinger
*/
- $dlink = Strings::normaliseLink(System::baseUrl() . '/u/' . $user['nickname']);
+ $dlink = Strings::normaliseLink(DI::baseUrl() . '/u/' . $user['nickname']);
$cnt = preg_match_all('/[\@\!]\[url\=(.*?)\](.*?)\[\/url\]/ism', $item['body'], $matches, PREG_SET_ORDER);
if ($cnt) {
public static function isRemoteSelf($contact, &$datarray)
{
- $a = \get_app();
-
if (!$contact['remote_self']) {
return false;
}
}
// Prevent to forward already forwarded posts
- if ($datarray["app"] == $a->getHostName()) {
+ if ($datarray["app"] == DI::baseUrl()->getHostname()) {
Logger::log('Already forwarded (second test)', Logger::DEBUG);
return false;
}
}
Logger::log('check for photos', Logger::DEBUG);
- $site = substr(System::baseUrl(), strpos(System::baseUrl(), '://'));
+ $site = substr(DI::baseUrl(), strpos(DI::baseUrl(), '://'));
$orig_body = $s;
$new_body = '';
*/
public static function enumeratePermissions(array $obj, bool $check_dead = false)
{
- /** @var ACLFormatter $aclFormater */
- $aclFormater = self::getClass(ACLFormatter::class);
+ $aclFormater = DI::aclFormatter();
$allow_people = $aclFormater->expand($obj['allow_cid']);
$allow_groups = Group::expand($obj['uid'], $aclFormater->expand($obj['allow_gid']), $check_dead);
if (strpos($mime, 'video') !== false) {
if (!$vhead) {
$vhead = true;
- $a->page['htmlhead'] .= Renderer::replaceMacros(Renderer::getMarkupTemplate('videos_head.tpl'));
+ DI::page()['htmlhead'] .= Renderer::replaceMacros(Renderer::getMarkupTemplate('videos_head.tpl'));
}
$url_parts = explode('/', $the_url);
];
if (!empty($item['plink'])) {
- $ret["href"] = $a->removeBaseURL($item['plink']);
+ $ret["href"] = DI::baseUrl()->remove($item['plink']);
$ret["title"] = L10n::t('link to source');
}