function webform_purge_cron in Webform Purge 7
Implements hook_cron().
File
- ./
webform_purge.module, line 11 - Custom functionality for purging webform submissions.
Code
function webform_purge_cron() {
// Is the webform purge function enabled in system settings?
$enabled = variable_get('webform_purge_enabled');
if ($enabled == 1) {
// Run once each day or on every cron run?
$run_once = variable_get('webform_purge_run_once');
if ($run_once == 1) {
// Run only once so find out if we need to run it yet today.
$cron_last = variable_get('cron_last');
$run = date('ymd', $cron_last) != date('ymd') ? TRUE : FALSE;
}
else {
$run = TRUE;
}
if ($run) {
// Get the checked checkboxes.
$checkboxes = variable_get('webform_purge_checkbox_state');
$purge_all = variable_get('webform_purge_all_submissions', FALSE);
// Construct timestamp for purging.
$days_to_retain = variable_get('webform_purge_days_to_retain');
$purge_timestamp = strtotime(date('Y-m-d H:i:s') . ' -' . $days_to_retain . ' day');
// Get the records elegible for purging.
$limit = variable_get('webform_purge_cron_limit', 100000);
if ($purge_all == 1) {
$query = db_query('SELECT * FROM {webform_submissions} WHERE submitted < :purge_timestamp' . ($limit ? ' LIMIT ' . check_plain($limit) : ''), array(
':purge_timestamp' => $purge_timestamp,
));
}
else {
$query = db_query('SELECT * FROM {webform_submissions} WHERE submitted < :purge_timestamp AND nid IN (:nid)' . ($limit ? ' LIMIT ' . check_plain($limit) : ''), array(
':purge_timestamp' => $purge_timestamp,
':nid' => $checkboxes,
));
}
$rows = $query
->fetchAll();
// If submissions found to purge, get on with it.
if (count($rows) > 0) {
$deleted = 0;
foreach ($rows as $row) {
$node = node_load($row->nid);
$submission = webform_menu_submission_load($row->sid, $row->nid);
webform_submission_delete($node, $submission);
$deleted++;
}
watchdog('webform_purge', 'Purged %total webform submissions.', array(
'%total' => $deleted,
));
}
else {
watchdog('webform_purge', 'No eligible webform submissions found to purge.', array());
}
}
}
}