* Fetch a single item row
*
* @param mixed $stmt statement object
- * @return array current row
+ * @return array|false current row or false
+ * @throws \Exception
*/
public static function fetch($stmt)
{
$row = DBA::fetch($stmt);
- if (is_bool($row)) {
+ if (!is_array($row)) {
return $row;
}
return false;
}
+ if (!empty($item['uid'])) {
+ $owner = User::getOwnerDataById($item['uid'], false);
+ if (!$owner) {
+ Logger::notice('Missing item user owner data', ['uid' => $item['uid']]);
+ return false;
+ }
+
+ if ($owner['account_expired'] || $owner['account_removed']) {
+ Logger::notice('Item user has been deleted/expired/removed', ['uid' => $item['uid'], 'deleted' => $owner['deleted'], 'account_expired' => $owner['account_expired'], 'account_removed' => $owner['account_removed']]);
+ return false;
+ }
+ }
+
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;
$item['network'] = Protocol::DFRN;
$item['protocol'] = Conversation::PARCEL_DIRECT;
- if (is_int($notify)) {
+ if (in_array($notify, PRIORITIES)) {
$priority = $notify;
}
} else {
$datarray['api_source'] = true;
// We have to tell the hooks who we are - this really should be improved
- $_SESSION["authenticated"] = true;
- $_SESSION["uid"] = $contact['uid'];
+ $_SESSION['authenticated'] = true;
+ $_SESSION['uid'] = $contact['uid'];
- return $result;
+ return (bool)$result;
}
/**
if ($rendered_hash == ''
|| $rendered_html == ''
- || $rendered_hash != BBCode::VERSION . '::' . hash('md5', $body)
+ || $rendered_hash != hash('md5', BBCode::VERSION . '::' . $body)
|| DI::config()->get('system', 'ignore_cache')
) {
self::addRedirToImageTags($item);
$item['rendered-html'] = BBCode::convert($item['body']);
- $item['rendered-hash'] = hash('md5', $body);
+ $item['rendered-hash'] = hash('md5', BBCode::VERSION . '::' . $body);
$hook_data = ['item' => $item, 'rendered-html' => $item['rendered-html'], 'rendered-hash' => $item['rendered-hash']];
Hook::callAll('put_item_in_cache', $hook_data);
$item['rendered-html'] = $hook_data['rendered-html'];
- $item['rendered-hash'] = BBCode::VERSION . '::' . $hook_data['rendered-hash'];
+ $item['rendered-hash'] = $hook_data['rendered-hash'];
unset($hook_data);
// Force an update if the generated values differ from the existing ones