function message_get_purgeable_by_type in Message 7
Find purgeable messages according to type and purge settings.
Parameters
$purge_limit: The maximal amount of messages to fetch. Decremented each time messages are fetched.
$message_type_name: Either a single message type name or an array of names.
$purge_settings: Array containing purging settings: 'quota' and 'days'.
Return value
array Messages of the given type(s) that should be purged according to the given settings.
1 call to message_get_purgeable_by_type()
- message_cron in ./
message.module - Implements hook_cron().
File
- ./
message.module, line 596 - API functions to manipulate messages.
Code
function message_get_purgeable_by_type(&$purge_limit, $message_type_name, $purge_settings) {
if ($purge_limit <= 0) {
return;
}
// Messages to be deleted.
$purge_messages = array();
// Base query for both purging methods.
$base_query = new EntityFieldQuery();
$base_query
->entityCondition('entity_type', 'message', '=')
->propertyCondition('type', $message_type_name, is_array($message_type_name) ? 'IN' : '=')
->propertyOrderBy('timestamp', 'DESC')
->propertyOrderBy('mid', 'DESC');
// Purge according to quota definition.
if (!empty($purge_settings['quota'])) {
$quota_query = clone $base_query;
$result = $quota_query
->range($purge_settings['quota'], $purge_limit)
->execute();
if (!empty($result['message'])) {
$purge_limit -= count($result['message']);
$purge_messages += $result['message'];
}
}
// Purge according to maximal age definition.
if (!empty($purge_settings['days'])) {
$age_query = clone $base_query;
// Find messages older than current time - maximal age in days times
// the seconds per day.
$earlier_than = time() - $purge_settings['days'] * 86400;
$result = $age_query
->propertyCondition('timestamp', $earlier_than, '<')
->range(0, $purge_limit)
->execute();
if (!empty($result['message'])) {
$purge_limit -= count($result['message']);
$purge_messages += $result['message'];
}
}
return $purge_messages;
}