X-Git-Url: https://git.mxchange.org/?a=blobdiff_plain;f=mod%2Fitem.php;h=93da70e40eb5d2cda0df112d52fb7c1bdaf0ca22;hb=48d95815a9d7afbaf83fd1b892b26cf12172775b;hp=51bbc76e7270b54151ba3dbc567c0439864c4540;hpb=0a82fe4211f73cf10107feb69fe38eaa85eb61f8;p=friendica.git diff --git a/mod/item.php b/mod/item.php index 51bbc76e72..93da70e40e 100644 --- a/mod/item.php +++ b/mod/item.php @@ -16,6 +16,7 @@ */ use Friendica\App; +use Friendica\BaseObject; use Friendica\Content\Pager; use Friendica\Content\Text\BBCode; use Friendica\Content\Text\HTML; @@ -24,6 +25,7 @@ use Friendica\Core\Hook; use Friendica\Core\L10n; use Friendica\Core\Logger; use Friendica\Core\Protocol; +use Friendica\Core\Session; use Friendica\Core\System; use Friendica\Core\Worker; use Friendica\Database\DBA; @@ -34,18 +36,20 @@ use Friendica\Model\FileTag; use Friendica\Model\Item; use Friendica\Model\Photo; use Friendica\Model\Term; +use Friendica\Protocol\Activity; use Friendica\Protocol\Diaspora; use Friendica\Protocol\Email; +use Friendica\Util\ACLFormatter; use Friendica\Util\DateTimeFormat; use Friendica\Util\Emailer; use Friendica\Util\Security; use Friendica\Util\Strings; use Friendica\Worker\Delivery; -require_once 'include/items.php'; +require_once __DIR__ . '/../include/items.php'; function item_post(App $a) { - if (!local_user() && !remote_user()) { + if (!Session::isAuthenticated()) { return 0; } @@ -63,12 +67,12 @@ function item_post(App $a) { Logger::log('postvars ' . print_r($_REQUEST, true), Logger::DATA); - $api_source = defaults($_REQUEST, 'api_source', false); + $api_source = $_REQUEST['api_source'] ?? false; $message_id = ((!empty($_REQUEST['message_id']) && $api_source) ? strip_tags($_REQUEST['message_id']) : ''); - $return_path = defaults($_REQUEST, 'return', ''); - $preview = intval(defaults($_REQUEST, 'preview', 0)); + $return_path = $_REQUEST['return'] ?? ''; + $preview = intval($_REQUEST['preview'] ?? 0); /* * Check for doubly-submitted posts, and reject duplicates @@ -85,8 +89,8 @@ function item_post(App $a) { } // Is this a reply to something? - $toplevel_item_id = intval(defaults($_REQUEST, 'parent', 0)); - $thr_parent_uri = trim(defaults($_REQUEST, 'parent_uri', '')); + $toplevel_item_id = intval($_REQUEST['parent'] ?? 0); + $thr_parent_uri = trim($_REQUEST['parent_uri'] ?? ''); $thread_parent_id = 0; $thread_parent_contact = null; @@ -97,8 +101,8 @@ function item_post(App $a) { $parent_contact = null; $objecttype = null; - $profile_uid = defaults($_REQUEST, 'profile_uid', local_user()); - $posttype = defaults($_REQUEST, 'post_type', Item::PT_ARTICLE); + $profile_uid = ($_REQUEST['profile_uid'] ?? 0) ?: local_user(); + $posttype = ($_REQUEST['post_type'] ?? '') ?: Item::PT_ARTICLE; if ($toplevel_item_id || $thr_parent_uri) { if ($toplevel_item_id) { @@ -130,17 +134,17 @@ function item_post(App $a) { $toplevel_item_id = $toplevel_item['id']; $parent_user = $toplevel_item['uid']; - $objecttype = ACTIVITY_OBJ_COMMENT; + $objecttype = Activity\ObjectType::COMMENT; } if ($toplevel_item_id) { Logger::info('mod_item: item_post parent=' . $toplevel_item_id); } - $post_id = intval(defaults($_REQUEST, 'post_id', 0)); - $app = strip_tags(defaults($_REQUEST, 'source', '')); - $extid = strip_tags(defaults($_REQUEST, 'extid', '')); - $object = defaults($_REQUEST, 'object', ''); + $post_id = intval($_REQUEST['post_id'] ?? 0); + $app = strip_tags($_REQUEST['source'] ?? ''); + $extid = strip_tags($_REQUEST['extid'] ?? ''); + $object = $_REQUEST['object'] ?? ''; // Don't use "defaults" here. It would turn 0 to 1 if (!isset($_REQUEST['wall'])) { @@ -193,20 +197,20 @@ function item_post(App $a) { $categories = ''; $postopts = ''; $emailcc = ''; - $body = defaults($_REQUEST, 'body', ''); - $has_attachment = defaults($_REQUEST, 'has_attachment', 0); + $body = $_REQUEST['body'] ?? ''; + $has_attachment = $_REQUEST['has_attachment'] ?? 0; // If we have a speparate attachment, we need to add it to the body. if (!empty($has_attachment)) { - $attachment_type = defaults($_REQUEST, 'attachment_type', ''); - $attachment_title = defaults($_REQUEST, 'attachment_title', ''); - $attachment_text = defaults($_REQUEST, 'attachment_text', ''); + $attachment_type = $_REQUEST['attachment_type'] ?? ''; + $attachment_title = $_REQUEST['attachment_title'] ?? ''; + $attachment_text = $_REQUEST['attachment_text'] ?? ''; - $attachment_url = hex2bin(defaults($_REQUEST, 'attachment_url', '')); - $attachment_img_src = hex2bin(defaults($_REQUEST, 'attachment_img_src', '')); + $attachment_url = hex2bin($_REQUEST['attachment_url'] ?? ''); + $attachment_img_src = hex2bin($_REQUEST['attachment_img_src'] ?? ''); - $attachment_img_width = defaults($_REQUEST, 'attachment_img_width', 0); - $attachment_img_height = defaults($_REQUEST, 'attachment_img_height', 0); + $attachment_img_width = $_REQUEST['attachment_img_width'] ?? 0; + $attachment_img_height = $_REQUEST['attachment_img_height'] ?? 0; $attachment = [ 'type' => $attachment_type, 'title' => $attachment_title, @@ -228,6 +232,9 @@ function item_post(App $a) { $body .= $att_bbcode; } + // Convert links with empty descriptions to links without an explicit description + $body = preg_replace('#\[url=([^\]]*?)\]\[/url\]#ism', '[url]$1[/url]', $body); + if (!empty($orig_post)) { $str_group_allow = $orig_post['allow_gid']; $str_contact_allow = $orig_post['allow_cid']; @@ -265,29 +272,29 @@ function item_post(App $a) { $str_contact_deny = $user['deny_cid']; } else { // use the posted permissions - $str_group_allow = perms2str(defaults($_REQUEST, 'group_allow', '')); - $str_contact_allow = perms2str(defaults($_REQUEST, 'contact_allow', '')); - $str_group_deny = perms2str(defaults($_REQUEST, 'group_deny', '')); - $str_contact_deny = perms2str(defaults($_REQUEST, 'contact_deny', '')); + + /** @var ACLFormatter $aclFormatter */ + $aclFormatter = BaseObject::getClass(ACLFormatter::class); + + $str_group_allow = $aclFormatter->toString($_REQUEST['group_allow'] ?? ''); + $str_contact_allow = $aclFormatter->toString($_REQUEST['contact_allow'] ?? ''); + $str_group_deny = $aclFormatter->toString($_REQUEST['group_deny'] ?? ''); + $str_contact_deny = $aclFormatter->toString($_REQUEST['contact_deny'] ?? ''); } - $title = Strings::escapeTags(trim(defaults($_REQUEST, 'title' , ''))); - $location = Strings::escapeTags(trim(defaults($_REQUEST, 'location', ''))); - $coord = Strings::escapeTags(trim(defaults($_REQUEST, 'coord' , ''))); - $verb = Strings::escapeTags(trim(defaults($_REQUEST, 'verb' , ''))); - $emailcc = Strings::escapeTags(trim(defaults($_REQUEST, 'emailcc' , ''))); + $title = Strings::escapeTags(trim($_REQUEST['title'] ?? '')); + $location = Strings::escapeTags(trim($_REQUEST['location'] ?? '')); + $coord = Strings::escapeTags(trim($_REQUEST['coord'] ?? '')); + $verb = Strings::escapeTags(trim($_REQUEST['verb'] ?? '')); + $emailcc = Strings::escapeTags(trim($_REQUEST['emailcc'] ?? '')); $body = Strings::escapeHtml(trim($body)); - $network = Strings::escapeTags(trim(defaults($_REQUEST, 'network' , Protocol::DFRN))); + $network = Strings::escapeTags(trim(($_REQUEST['network'] ?? '') ?: Protocol::DFRN)); $guid = System::createUUID(); - $postopts = defaults($_REQUEST, 'postopts', ''); + $postopts = $_REQUEST['postopts'] ?? ''; $private = ((strlen($str_group_allow) || strlen($str_contact_allow) || strlen($str_group_deny) || strlen($str_contact_deny)) ? 1 : 0); - if ($user['hidewall']) { - $private = 2; - } - // If this is a comment, set the permissions from the parent. if ($toplevel_item) { @@ -307,7 +314,7 @@ function item_post(App $a) { $wall = $toplevel_item['wall']; } - $pubmail_enabled = defaults($_REQUEST, 'pubmail_enable', false) && !$private; + $pubmail_enabled = ($_REQUEST['pubmail_enable'] ?? false) && !$private; // if using the API, we won't see pubmail_enable - figure out if it should be set if ($api_source && $profile_uid && $profile_uid == local_user() && !$private) { @@ -335,7 +342,7 @@ function item_post(App $a) { // save old and new categories, so we can determine what needs to be deleted from pconfig $categories_old = $categories; - $categories = FileTag::listToFile(trim(defaults($_REQUEST, 'category', '')), 'category'); + $categories = FileTag::listToFile(trim($_REQUEST['category'] ?? ''), 'category'); $categories_new = $categories; if (!empty($filedas) && is_array($filedas)) { @@ -352,18 +359,8 @@ function item_post(App $a) { if (local_user() && ((local_user() == $profile_uid) || $allow_comment)) { $self = true; $author = DBA::selectFirst('contact', [], ['uid' => local_user(), 'self' => true]); - } elseif (remote_user()) { - if (!empty($_SESSION['remote']) && is_array($_SESSION['remote'])) { - foreach ($_SESSION['remote'] as $v) { - if ($v['uid'] == $profile_uid) { - $contact_id = $v['cid']; - break; - } - } - } - if ($contact_id) { - $author = DBA::selectFirst('contact', [], ['id' => $contact_id]); - } + } elseif (!empty(Session::getRemoteContactID($profile_uid))) { + $author = DBA::selectFirst('contact', [], ['id' => Session::getRemoteContactID($profile_uid)]); } if (DBA::isResult($author)) { @@ -470,7 +467,7 @@ function item_post(App $a) { $match = null; if (!$preview && Photo::setPermissionFromBody($body, $profile_uid, $original_contact_id, $str_contact_allow, $str_group_allow, $str_contact_deny, $str_group_deny)) { - $objecttype = ACTIVITY_OBJ_IMAGE; + $objecttype = Activity\ObjectType::IMAGE; } /* @@ -506,11 +503,12 @@ function item_post(App $a) { if ((preg_match_all("/\[bookmark\=([^\]]*)\](.*?)\[\/bookmark\]/ism", $body, $match, PREG_SET_ORDER) || isset($data["type"])) && ($posttype != Item::PT_PERSONAL_NOTE)) { $posttype = Item::PT_PAGE; - $objecttype = ACTIVITY_OBJ_BOOKMARK; + $objecttype = Activity\ObjectType::BOOKMARK; } - $body = bb_translate_video($body); - + /** @var BBCode\Video $bbCodeVideo */ + $bbCodeVideo = BaseObject::getClass(BBCode\Video::class); + $body = $bbCodeVideo->transform($body); // Fold multi-line [code] sequences $body = preg_replace('/\[\/code\]\s*\[code\]/ism', "\n", $body); @@ -519,15 +517,15 @@ function item_post(App $a) { // Setting the object type if not defined before if (!$objecttype) { - $objecttype = ACTIVITY_OBJ_NOTE; // Default value + $objecttype = Activity\ObjectType::NOTE; // Default value $objectdata = BBCode::getAttachedData($body); if ($objectdata["type"] == "link") { - $objecttype = ACTIVITY_OBJ_BOOKMARK; + $objecttype = Activity\ObjectType::BOOKMARK; } elseif ($objectdata["type"] == "video") { - $objecttype = ACTIVITY_OBJ_VIDEO; + $objecttype = Activity\ObjectType::VIDEO; } elseif ($objectdata["type"] == "photo") { - $objecttype = ACTIVITY_OBJ_IMAGE; + $objecttype = Activity\ObjectType::IMAGE; } } @@ -552,7 +550,7 @@ function item_post(App $a) { } if (!strlen($verb)) { - $verb = ACTIVITY_POST; + $verb = Activity::POST; } if ($network == "") { @@ -654,6 +652,9 @@ function item_post(App $a) { if ($orig_post) { $datarray['edit'] = true; } else { + // If this was a share, add missing data here + $datarray = Item::addShareDataFromOriginal($datarray); + $datarray['edit'] = false; } @@ -764,7 +765,7 @@ function item_post(App $a) { 'source_name' => $datarray['author-name'], 'source_link' => $datarray['author-link'], 'source_photo' => $datarray['author-avatar'], - 'verb' => ACTIVITY_POST, + 'verb' => Activity::POST, 'otype' => 'item', 'parent' => $toplevel_item_id, 'parent_uri' => $toplevel_item['uri'] @@ -784,7 +785,7 @@ function item_post(App $a) { 'source_name' => $datarray['author-name'], 'source_link' => $datarray['author-link'], 'source_photo' => $datarray['author-avatar'], - 'verb' => ACTIVITY_POST, + 'verb' => Activity::POST, 'otype' => 'item' ]); } @@ -874,7 +875,7 @@ function item_post_return($baseurl, $api_source, $return_path) function item_content(App $a) { - if (!local_user() && !remote_user()) { + if (!Session::isAuthenticated()) { return; } @@ -1025,7 +1026,7 @@ function handle_tag(&$body, &$inform, &$str_tags, $profile_uid, $tag, $network = $profile = $contact["url"]; $alias = $contact["alias"]; - $newname = defaults($contact, "name", $contact["nick"]); + $newname = ($contact["name"] ?? '') ?: $contact["nick"]; } //if there is an url for this persons profile