+ * Store a public item defined by their URI-ID for the given users
+ *
+ * @param integer $uri_id URI-ID of the given item
+ * @param integer $uid The user that will receive the item entry
+ * @return integer stored item id
+ */
+ public static function storeForUserByUriId(int $uri_id, int $uid)
+ {
+ $item = self::selectFirst(self::ITEM_FIELDLIST, ['uri-id' => $uri_id, 'uid' => 0]);
+ if (!DBA::isResult($item)) {
+ return 0;
+ }
+
+ if (($item['private'] == self::PRIVATE) || !in_array($item['network'], Protocol::FEDERATED)) {
+ Logger::notice('Item is private or not from a federated network. It will not be stored for the user.', ['uri-id' => $uri_id, 'uid' => $uid, 'private' => $item['private'], 'network' => $item['network']]);
+ return 0;
+ }
+
+ $stored = self::storeForUser($item, $uid);
+ Logger::info('Public item stored for user', ['uri-id' => $item['uri-id'], 'uid' => $uid, 'stored' => $stored]);
+ return $stored;
+ }
+
+ /**
+ * Store a public item array for the given users