Merge pull request #8915 from annando/store-on-comment
Store personal copy of public item upon commenting
This commit is contained in:
commit
0b423b73ac
2 changed files with 19 additions and 1 deletions
10
mod/item.php
10
mod/item.php
|
@ -136,6 +136,16 @@ function item_post(App $a) {
|
||||||
throw new HTTPException\NotFoundException(DI::l10n()->t('Unable to locate original post.'));
|
throw new HTTPException\NotFoundException(DI::l10n()->t('Unable to locate original post.'));
|
||||||
}
|
}
|
||||||
|
|
||||||
|
// When commenting on a public post then store the post for the current user
|
||||||
|
// This enables interaction like starring and saving into folders
|
||||||
|
if ($toplevel_item['uid'] == 0) {
|
||||||
|
$stored = Item::storeForUser($toplevel_item, 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_id = $toplevel_item['id'];
|
$toplevel_item_id = $toplevel_item['id'];
|
||||||
$parent_user = $toplevel_item['uid'];
|
$parent_user = $toplevel_item['uid'];
|
||||||
|
|
||||||
|
|
|
@ -2174,7 +2174,7 @@ class Item
|
||||||
* @return integer stored item id
|
* @return integer stored item id
|
||||||
* @throws \Exception
|
* @throws \Exception
|
||||||
*/
|
*/
|
||||||
private static function storeForUser(array $item, int $uid)
|
public static function storeForUser(array $item, int $uid)
|
||||||
{
|
{
|
||||||
if (self::exists(['uri-id' => $item['uri-id'], 'uid' => $uid])) {
|
if (self::exists(['uri-id' => $item['uri-id'], 'uid' => $uid])) {
|
||||||
Logger::info('Item already exists', ['uri-id' => $item['uri-id'], 'uid' => $uid]);
|
Logger::info('Item already exists', ['uri-id' => $item['uri-id'], 'uid' => $uid]);
|
||||||
|
@ -3015,6 +3015,14 @@ class Item
|
||||||
return false;
|
return false;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
if (!Item::exists(['uri-id' => $item['parent-uri-id'], 'uid' => $uid])) {
|
||||||
|
$parent_item = self::selectFirst(self::ITEM_FIELDLIST, ['uri-id' => $item['parent-uri-id'], 'uid' => 0]);
|
||||||
|
if (!empty($parent_item) && ($parent_item['private'] != self::PRIVATE)) {
|
||||||
|
$stored = self::storeForUser($parent_item, $uid);
|
||||||
|
Logger::info('Public item stored for user', ['uri-id' => $parent_item['uri-id'], 'uid' => $uid, 'stored' => $stored]);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
// Retrieves the local post owner
|
// Retrieves the local post owner
|
||||||
$owner_self_contact = DBA::selectFirst('contact', [], ['uid' => $uid, 'self' => true]);
|
$owner_self_contact = DBA::selectFirst('contact', [], ['uid' => $uid, 'self' => true]);
|
||||||
if (!DBA::isResult($owner_self_contact)) {
|
if (!DBA::isResult($owner_self_contact)) {
|
||||||
|
|
Loading…
Reference in a new issue