if ($parent_item_id || $thr_parent_uri) {
if ($parent_item_id) {
- $parent_item = Item::selectFirst([], ['id' => $parent_item_id]);
+ $parent_item = Post::selectFirst([], ['id' => $parent_item_id]);
} elseif ($thr_parent_uri) {
- $parent_item = Item::selectFirst([], ['uri' => $thr_parent_uri, 'uid' => $profile_uid]);
+ $parent_item = Post::selectFirst([], ['uri' => $thr_parent_uri, 'uid' => $profile_uid]);
}
// if this isn't the top-level parent of the conversation, find it
$toplevel_item = $parent_item;
if ($parent_item['gravity'] != GRAVITY_PARENT) {
- $toplevel_item = Item::selectFirst([], ['id' => $toplevel_item['parent']]);
+ $toplevel_item = Post::selectFirst([], ['id' => $toplevel_item['parent']]);
}
}
$stored = Item::storeForUserByUriId($toplevel_item['uri-id'], local_user());
Logger::info('Public item stored for user', ['uri-id' => $toplevel_item['uri-id'], 'uid' => $uid, 'stored' => $stored]);
if ($stored) {
- $toplevel_item = Item::selectFirst([], ['id' => $stored]);
+ $toplevel_item = Post::selectFirst([], ['id' => $stored]);
}
}
// is this an edited post?
if ($post_id > 0) {
- $orig_post = Item::selectFirst(Item::ITEM_FIELDLIST, ['id' => $post_id]);
+ $orig_post = Post::selectFirst(Item::ITEM_FIELDLIST, ['id' => $post_id]);
}
$user = User::getById($profile_uid, ['allow_cid', 'allow_gid', 'deny_cid', 'deny_gid']);
$verb = $orig_post['verb'];
$objecttype = $orig_post['object-type'];
$app = $orig_post['app'];
- $categories = $orig_post['file'] ?? '';
+ $categories = Post\Category::getTextByURIId($orig_post['uri-id'], $orig_post['uid']);
$title = trim($_REQUEST['title'] ?? '');
$body = trim($body);
$private = $orig_post['private'];
$guid = $orig_post['guid'];
$extid = $orig_post['extid'];
} else {
- $str_contact_allow = '';
- $str_group_allow = '';
- $str_contact_deny = '';
- $str_group_deny = '';
-
- if (($_REQUEST['visibility'] ?? '') !== 'public') {
- $aclFormatter = DI::aclFormatter();
- $str_contact_allow = isset($_REQUEST['contact_allow']) ? $aclFormatter->toString($_REQUEST['contact_allow']) : $user['allow_cid'] ?? '';
- $str_group_allow = isset($_REQUEST['group_allow']) ? $aclFormatter->toString($_REQUEST['group_allow']) : $user['allow_gid'] ?? '';
- $str_contact_deny = isset($_REQUEST['contact_deny']) ? $aclFormatter->toString($_REQUEST['contact_deny']) : $user['deny_cid'] ?? '';
- $str_group_deny = isset($_REQUEST['group_deny']) ? $aclFormatter->toString($_REQUEST['group_deny']) : $user['deny_gid'] ?? '';
-
- // Since we know from the visibility parameter it should be private, we have to prevent the empty ACL case
- // that would make the item public. So we always append the author's contact id to the allowed contacts.
+ $aclFormatter = DI::aclFormatter();
+ $str_contact_allow = isset($_REQUEST['contact_allow']) ? $aclFormatter->toString($_REQUEST['contact_allow']) : $user['allow_cid'] ?? '';
+ $str_group_allow = isset($_REQUEST['group_allow']) ? $aclFormatter->toString($_REQUEST['group_allow']) : $user['allow_gid'] ?? '';
+ $str_contact_deny = isset($_REQUEST['contact_deny']) ? $aclFormatter->toString($_REQUEST['contact_deny']) : $user['deny_cid'] ?? '';
+ $str_group_deny = isset($_REQUEST['group_deny']) ? $aclFormatter->toString($_REQUEST['group_deny']) : $user['deny_gid'] ?? '';
+
+ $visibility = $_REQUEST['visibility'] ?? '';
+ if ($visibility === 'public') {
+ // The ACL selector introduced in version 2019.12 sends ACL input data even when the Public visibility is selected
+ $str_contact_allow = $str_group_allow = $str_contact_deny = $str_group_deny = '';
+ } else if ($visibility === 'custom') {
+ // Since we know from the visibility parameter the item should be private, we have to prevent the empty ACL
+ // case that would make it public. So we always append the author's contact id to the allowed contacts.
// See https://github.com/friendica/friendica/issues/9672
$str_contact_allow .= $aclFormatter->toString(Contact::getPublicIdByUserId($uid));
}
$filedas = FileTag::fileToArray($categories);
}
- // save old and new categories, so we can determine what needs to be deleted from pconfig
- $categories_old = $categories;
$categories = FileTag::listToFile(trim($_REQUEST['category'] ?? ''), 'category');
- $categories_new = $categories;
if (!empty($filedas) && is_array($filedas)) {
// append the fileas stuff to the new categories list
// This field is for storing the raw conversation data
$datarray['protocol'] = Conversation::PARCEL_DIRECT;
+ $datarray['direction'] = Conversation::PUSH;
$conversation = DBA::selectFirst('conversation', ['conversation-uri', 'conversation-href'], ['item-uri' => $datarray['thr-parent']]);
if (DBA::isResult($conversation)) {
Item::update($fields, ['id' => $post_id]);
- // update filetags in pconfig
- FileTag::updatePconfig($uid, $categories_old, $categories_new, 'category');
-
if ($return_path) {
DI::baseUrl()->redirect($return_path);
}
throw new HTTPException\InternalServerErrorException(DI::l10n()->t('Item wasn\'t stored.'));
}
- $datarray = Item::selectFirst(Item::ITEM_FIELDLIST, ['id' => $post_id]);
+ $datarray = Post::selectFirst(Item::ITEM_FIELDLIST, ['id' => $post_id]);
if (!DBA::isResult($datarray)) {
Logger::error('Item couldn\'t be fetched.', ['post_id' => $post_id]);
Tag::createImplicitMentions($datarray['uri-id'], $datarray['thr-parent-id']);
}
- // update filetags in pconfig
- FileTag::updatePconfig($uid, $categories_old, $categories_new, 'category');
-
// These notifications are sent if someone else is commenting other your wall
if ($contact_record != $author) {
if ($toplevel_item_id) {
{
// locate item to be deleted
$fields = ['id', 'uid', 'guid', 'contact-id', 'deleted', 'gravity', 'parent'];
- $item = Item::selectFirstForUser(local_user(), $fields, ['id' => $id]);
+ $item = Post::selectFirstForUser(local_user(), $fields, ['id' => $id]);
if (!DBA::isResult($item)) {
notice(DI::l10n()->t('Item not found.'));
if ((local_user() == $item['uid']) || $contact_id) {
if (!empty($item['parent'])) {
- $parentitem = Item::selectFirstForUser(local_user(), ['guid'], ['id' => $item['parent']]);
+ $parentitem = Post::selectFirstForUser(local_user(), ['guid'], ['id' => $item['parent']]);
}
// delete the item