Commit 1ec24ffc authored by Stefan Borchert's avatar Stefan Borchert Committed by Jeroen Tubex
Browse files

Issue #2959844 by hctom, yogeshmpawar, stBorchert, JeroenT: Allow limiting the...

Issue #2959844 by hctom, yogeshmpawar, stBorchert, JeroenT: Allow limiting the number of purged records
parent 65aa67f2
Loading
Loading
Loading
Loading
+2 −0
Changes for webform_purge.install: 2 added lines, 0 removed lines.
Original line number Diff line number Diff line
@@ -13,6 +13,7 @@ function webform_purge_install() {
  variable_set('webform_purge_enabled', 0);
  variable_set('webform_purge_run_once', 1);
  variable_set('webform_purge_days_to_retain', 30);
  variable_set('webform_purge_cron_limit', 100000);

  $query = db_select('webform', 'w');
  $query->join('node', 'n', 'w.nid = n.nid');
@@ -46,6 +47,7 @@ function webform_purge_uninstall() {
  variable_del('webform_purge_run_once');
  variable_del('webform_purge_days_to_retain');
  variable_del('webform_purge_checkbox_state');
  variable_del('webform_purge_cron_limit');

  // Inform the user of the removal.
  $t = get_t();
+11 −1
Changes for webform_purge.module: 11 added lines, 1 removed line.
Original line number Diff line number Diff line
@@ -33,7 +33,8 @@ function webform_purge_cron() {
      $purge_timestamp = strtotime(date('Y-m-d H:i:s') . ' -' . $days_to_retain . ' day');

      // Get the records elegible for purging.
      $query = db_query('SELECT * FROM {webform_submissions} WHERE submitted < :purge_timestamp AND nid IN (:nid)', array(':purge_timestamp' => $purge_timestamp, ':nid' => $checkboxes));
      $limit = variable_get('webform_purge_cron_limit', 100000);
      $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.
@@ -177,6 +178,14 @@ function webform_purge_admin_settings_form($form, &$form_state) {
    '#element_validate' => array('element_validate_integer_positive'),
  );

  $form['webform_purge_cron_limit'] = array(
    '#type' => 'select',
    '#title' => t('Maximum number of purged submissions'),
    '#default_value' => variable_get('webform_purge_cron_limit', 100000),
    '#options' => drupal_map_assoc(array(10, 100, 1000, 10000, 100000)),
    '#description' => t('Maximum number of submissions to purge per cron run.'),
  );

  // Check if user has permission to view webforms results.
  if (user_access('access all webform results')) {
    // Get the checked checkboxes.
@@ -257,6 +266,7 @@ function webform_purge_admin_settings_form_submit($form, &$form_state) {
  variable_set('webform_purge_enabled', $form_state['values']['webform_purge_enabled']);
  variable_set('webform_purge_run_once', $form_state['values']['webform_purge_run_once']);
  variable_set('webform_purge_days_to_retain', $form_state['values']['webform_purge_days_to_retain']);
  variable_set('webform_purge_cron_limit', $form_state['values']['webform_purge_cron_limit']);

  $webforms_to_be_purged = array_diff($form_state['values']['form_list'], [0]);
  variable_set('webform_purge_checkbox_state', $webforms_to_be_purged);