Back to AdministratorApplication class

Method purgeMessages

public static void
purgeMessages
()
Purge the jos_messages table of old messages
Returns
  • void
Since
  • 3.2

Method purgeMessages - Source code

/**
 * Purge the jos_messages table of old messages
 *
 * @return  void
 *
 * @since   3.2
 */
public static function purgeMessages()
{
    $userId = Factory::getUser()->id;
    $db = Factory::getDbo();
    $query = $db->getQuery(true)->select($db->quoteName(['cfg_name', 'cfg_value']))->from($db->quoteName('#__messages_cfg'))->where([$db->quoteName('user_id') . ' = :userId', $db->quoteName('cfg_name') . ' = ' . $db->quote('auto_purge')])->bind(':userId', $userId, ParameterType::INTEGER);
    $db->setQuery($query);
    $config = $db->loadObject();
    // Check if auto_purge value set
    if (\is_object($config) && $config->cfg_name === 'auto_purge') {
        $purge = $config->cfg_value;
    } else {
        // If no value set, default is 7 days
        $purge = 7;
    }
    // If purge value is not 0, then allow purging of old messages
    if ($purge > 0) {
        // Purge old messages at day set in message configuration
        $past = Factory::getDate(time() - $purge * 86400)->toSql();
        $query = $db->getQuery(true)->delete($db->quoteName('#__messages'))->where([$db->quoteName('date_time') . ' < :past', $db->quoteName('user_id_to') . ' = :userId'])->bind(':past', $past)->bind(':userId', $userId, ParameterType::INTEGER);
        $db->setQuery($query);
        $db->execute();
    }
}