self::markForDeletion(['uri' => $item['uri'], 'deleted' => false], $priority);
// send the notification upstream/downstream
- Worker::add(['priority' => $priority, 'dont_fork' => true], "Notifier", Delivery::DELETION, intval($item['id']));
+ if ($priority) {
+ Worker::add(['priority' => $priority, 'dont_fork' => true], "Notifier", Delivery::DELETION, intval($item['id']));
+ }
} elseif ($item['uid'] != 0) {
Post\User::update($item['uri-id'], $item['uid'], ['hidden' => true]);
return false;
}
- // check for create date and expire time
- $expire_interval = DI::config()->get('system', 'dbclean-expire-days', 0);
-
- $user = DBA::selectFirst('user', ['expire'], ['uid' => $item['uid']]);
- if (DBA::isResult($user) && ($user['expire'] > 0) && (($user['expire'] < $expire_interval) || ($expire_interval == 0))) {
- $expire_interval = $user['expire'];
- }
-
- if (($expire_interval > 0) && !empty($item['created'])) {
- $expire_date = time() - ($expire_interval * 86400);
- $created_date = strtotime($item['created']);
- if ($created_date < $expire_date) {
- Logger::notice('Item created before expiration interval.', [
- 'created' => date('c', $created_date),
- 'expired' => date('c', $expire_date),
- '$item' => $item
- ]);
- 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;
return true;
}
+ /**
+ * Check if the item array is too old
+ *
+ * @param array $item
+ * @return boolean item is too old
+ */
+ public static function isTooOld(array $item)
+ {
+ // check for create date and expire time
+ $expire_interval = DI::config()->get('system', 'dbclean-expire-days', 0);
+
+ $user = DBA::selectFirst('user', ['expire'], ['uid' => $item['uid']]);
+ if (DBA::isResult($user) && ($user['expire'] > 0) && (($user['expire'] < $expire_interval) || ($expire_interval == 0))) {
+ $expire_interval = $user['expire'];
+ }
+
+ if (($expire_interval > 0) && !empty($item['created'])) {
+ $expire_date = time() - ($expire_interval * 86400);
+ $created_date = strtotime($item['created']);
+ if ($created_date < $expire_date) {
+ Logger::notice('Item created before expiration interval.', [
+ 'created' => date('c', $created_date),
+ 'expired' => date('c', $expire_date),
+ '$item' => $item
+ ]);
+ return true;
+ }
+ }
+
+ return false;
+ }
+
/**
* Return the id of the given item array if it has been stored before
*
$expired = 0;
+ $priority = DI::config()->get('system', 'expire-notify-priority');
+
while ($item = Item::fetch($items)) {
// don't expire filed items
continue;
}
- self::markForDeletionById($item['id'], PRIORITY_LOW);
+ self::markForDeletionById($item['id'], $priority);
++$expired;
}
*/
public static function putInCache(&$item, $update = false)
{
- $body = $item["body"];
+ // Save original body to prevent addons to modify it
+ $body = $item['body'];
$rendered_hash = $item['rendered-hash'] ?? '';
$rendered_html = $item['rendered-html'] ?? '';
if ($rendered_hash == ''
- || $rendered_html == ""
- || $rendered_hash != hash("md5", $item["body"])
- || DI::config()->get("system", "ignore_cache")
+ || $rendered_html == ''
+ || $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", $item["body"]);
+ $item['rendered-html'] = BBCode::convert($item['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);
unset($hook_data);
// Force an update if the generated values differ from the existing ones
- if ($rendered_hash != $item["rendered-hash"]) {
+ if ($rendered_hash != $item['rendered-hash']) {
$update = true;
}
// Only compare the HTML when we forcefully ignore the cache
- if (DI::config()->get("system", "ignore_cache") && ($rendered_html != $item["rendered-html"])) {
+ if (DI::config()->get('system', 'ignore_cache') && ($rendered_html != $item['rendered-html'])) {
$update = true;
}
- if ($update && !empty($item["id"])) {
+ if ($update && !empty($item['id'])) {
self::update(
[
- 'rendered-html' => $item["rendered-html"],
- 'rendered-hash' => $item["rendered-hash"]
+ 'rendered-html' => $item['rendered-html'],
+ 'rendered-hash' => $item['rendered-hash']
],
- ['id' => $item["id"]]
+ ['id' => $item['id']]
);
}
}
- $item["body"] = $body;
+ $item['body'] = $body;
}
/**