Project

General

Profile

Revision a1051c43

Added by Assos Assos over 4 years ago

Weekly update of contrib modules

View differences:

drupal7/sites/all/modules/webform/webform.info
40 40
files[] = tests/WebformTestCase.test
41 41
files[] = tests/WebformUnitTestCase.test
42 42

  
43
; Information added by Drupal.org packaging script on 2019-08-09
44
version = "7.x-4.20"
43
; Information added by Drupal.org packaging script on 2019-12-11
44
version = "7.x-4.21"
45 45
core = "7.x"
46 46
project = "webform"
47
datestamp = "1565386991"
47
datestamp = "1576092840"
drupal7/sites/all/modules/webform/webform.module
3988 3988
 * Check if current user has a draft of this webform, and return the sid.
3989 3989
 */
3990 3990
function _webform_fetch_draft_sid($nid, $uid) {
3991
  $q = db_select('webform_submissions')
3992
    ->fields('webform_submissions', array('sid'))
3993
    ->condition('nid', $nid)
3994
    ->condition('uid', $uid)
3995
    ->condition('is_draft', 1)
3996
    ->orderBy('submitted', 'DESC');
3997

  
3991 3998
  // Detect whether a webform draft is being edited. If so, that is the one that
3992 3999
  // should be returned.
3993
  if (isset($_POST['form_id']) && stripos($_POST['form_id'], 'webform_client_form_') === 0 &&
3994
      !empty($_POST['details']['sid']) && empty($_POST['details']['finished'])) {
3995
    // A draft is already being edited.
3996
    $sid = $_POST['details']['sid'];
4000
  $is_webform = isset($_POST['form_id']) && stripos($_POST['form_id'], 'webform_client_form_') === 0;
4001
  $sid_provided = !empty($_POST['details']['sid']) && is_string($_POST['details']['sid']);
4002
  $not_finished = empty($_POST['details']['finished']);
4003
  if ($is_webform && $sid_provided && $not_finished) {
4004
    // Validate that the sid from $_POST belongs to the current user.
4005
    $q->condition('sid', $_POST['details']['sid']);
4006
    $existing_sid = TRUE;
3997 4007
  }
3998
  else {
3999
    $sid = db_select('webform_submissions')
4000
      ->fields('webform_submissions', array('sid'))
4001
      ->condition('nid', $nid)
4002
      ->condition('uid', $uid)
4003
      ->condition('is_draft', 1)
4004
      ->orderBy('submitted', 'DESC')
4005
      ->execute()
4006
      ->fetchField();
4007 4008

  
4008
    if ($sid) {
4009
      $context = array(
4010
        'nid' => $nid,
4011
        'uid' => $uid,
4012
      );
4013
      drupal_alter('webform_draft', $sid, $context);
4014
    }
4009
  // Retrieve exisiting draft sid.
4010
  $sid = $q
4011
    ->execute()
4012
    ->fetchField();
4013

  
4014
  // Allow modules to alter the initial choice of sid when there might be more
4015
  // than one.
4016
  if ($sid && empty($existing_sid)) {
4017
    $context = array(
4018
      'nid' => $nid,
4019
      'uid' => $uid,
4020
    );
4021
    drupal_alter('webform_draft', $sid, $context);
4015 4022
  }
4016 4023
  return $sid;
4017 4024
}

Also available in: Unified diff