* @param array $item
* @return boolean item is valid
*/
- private static function isValid(array $item)
+ public static function isValid(array $item)
{
// When there is no content then we don't post it
if ($item['body'].$item['title'] == '') {
}
}
- if (Contact::isBlocked($item['author-id'])) {
+ if (!empty($item['author-id']) && Contact::isBlocked($item['author-id'])) {
Logger::notice('Author is blocked node-wide', ['author-link' => $item['author-link'], 'item-uri' => $item['uri']]);
return false;
}
return false;
}
- if (!empty($item['uid']) && Contact\User::isBlocked($item['author-id'], $item['uid'])) {
+ if (!empty($item['uid']) && !empty($item['author-id']) && Contact\User::isBlocked($item['author-id'], $item['uid'])) {
Logger::notice('Author is blocked by user', ['author-link' => $item['author-link'], 'uid' => $item['uid'], 'item-uri' => $item['uri']]);
return false;
}
- if (Contact::isBlocked($item['owner-id'])) {
+ if (!empty($item['owner-id']) && Contact::isBlocked($item['owner-id'])) {
Logger::notice('Owner is blocked node-wide', ['owner-link' => $item['owner-link'], 'item-uri' => $item['uri']]);
return false;
}
return false;
}
- if (!empty($item['uid']) && Contact\User::isBlocked($item['owner-id'], $item['uid'])) {
+ if (!empty($item['uid']) && !empty($item['owner-id']) && Contact\User::isBlocked($item['owner-id'], $item['uid'])) {
Logger::notice('Owner is blocked by user', ['owner-link' => $item['owner-link'], 'uid' => $item['uid'], 'item-uri' => $item['uri']]);
return false;
}
use Friendica\Model\Item;
use Friendica\Model\Tag;
use Friendica\Model\User;
-use Friendica\Network\HTTPRequest;
use Friendica\Util\DateTimeFormat;
use Friendica\Util\Network;
use Friendica\Util\ParseUrl;
$item["title"] = '';
}
+ if ($dryRun) {
+ $items[] = $item;
+ break;
+ } elseif (!Item::isValid($item)) {
+ Logger::info('Feed is invalid', ['created' => $item['created'], 'uid' => $item['uid'], 'uri' => $item['uri']]);
+ continue;
+ }
+
$preview = '';
if (!empty($contact["fetch_further_information"]) && ($contact["fetch_further_information"] < 3)) {
// Handle enclosures and treat them as preview picture
}
}
- if ($dryRun) {
- $items[] = $item;
- break;
- } else {
- Logger::info('Stored feed', ['item' => $item]);
+ Logger::info('Stored feed', ['item' => $item]);
- $notify = Item::isRemoteSelf($contact, $item);
+ $notify = Item::isRemoteSelf($contact, $item);
- // Distributed items should have a well formatted URI.
- // Additionally we have to avoid conflicts with identical URI between imported feeds and these items.
- if ($notify) {
- $item['guid'] = Item::guidFromUri($orig_plink, DI::baseUrl()->getHostname());
- unset($item['uri']);
- unset($item['parent-uri']);
+ // Distributed items should have a well formatted URI.
+ // Additionally we have to avoid conflicts with identical URI between imported feeds and these items.
+ if ($notify) {
+ $item['guid'] = Item::guidFromUri($orig_plink, DI::baseUrl()->getHostname());
+ unset($item['uri']);
+ unset($item['parent-uri']);
- // Set the delivery priority for "remote self" to "medium"
- $notify = PRIORITY_MEDIUM;
- }
+ // Set the delivery priority for "remote self" to "medium"
+ $notify = PRIORITY_MEDIUM;
+ }
- $id = Item::insert($item, $notify);
+ $id = Item::insert($item, $notify);
- Logger::info("Feed for contact " . $contact["url"] . " stored under id " . $id);
+ Logger::info("Feed for contact " . $contact["url"] . " stored under id " . $id);
- if (!empty($id) && !empty($taglist)) {
- $feeditem = Item::selectFirst(['uri-id'], ['id' => $id]);
- foreach ($taglist as $tag) {
- Tag::store($feeditem['uri-id'], Tag::HASHTAG, $tag);
- }
+ if (!empty($id) && !empty($taglist)) {
+ $feeditem = Item::selectFirst(['uri-id'], ['id' => $id]);
+ foreach ($taglist as $tag) {
+ Tag::store($feeditem['uri-id'], Tag::HASHTAG, $tag);
}
}
}