You are here

webform_submission_uuid.module in Webform Submission UUID 7.4

Same filename and directory in other branches
  1. 6.4 webform_submission_uuid.module
  2. 7 webform_submission_uuid.module

File

webform_submission_uuid.module
View source
<?php

/**
 * Implementation of hook_uuid_sync
 */
function webform_submission_uuid_uuid_sync($initial_sync = FALSE) {
  switch (WebformStorageController::getInstanceType()) {
    case 'db':

      // Update the webform_submissions table with missing UUID's
      _uuid_sync_table('webform_submissions', 'sid', 'uuid');
      break;
    case 'mongodb':
      if ($initial_sync) {
        $cursor = mongodb_collection('webform_submissions')
          ->find();
        foreach ($cursor as $mongodb_id => $submission) {
          $submission['_id'] = uuid_generate();
          mongodb_collection('webform_submissions')
            ->insert($submission);
          mongodb_collection('webform_submissions')
            ->remove(array(
            '_id' => new MongoId($mongodb_id),
          ));
        }
      }
      break;
  }
}

/**
 * Implementation of hook_webform_submission_load
 */
function webform_submission_uuid_webform_submission_load(&$submissions) {
  switch (WebformStorageController::getInstanceType()) {
    case 'db':

      // Adds the UUID to each submission that was loaded.
      $sids = array_keys($submissions);

      // Get the webform submissions.
      $result = db_select('webform_submissions', 's')
        ->fields('s')
        ->condition('s.sid', $sids, 'IN')
        ->execute();

      // Make sure we have a result.
      if (!empty($result)) {
        foreach ($result as $row) {
          if (!empty($submissions[$row->sid])) {
            $submissions[$row->sid]->uuid = $row->uuid;
          }
        }
      }
      break;
    case 'mongodb':
      foreach ($submissions as $sid => $submission) {
        $submissions[$sid]->uuid = $submissions[$sid]->_id;
      }
      break;
  }
}

/**
 * Implements hook_webform_submission_presave().
 */
function webform_submission_uuid_webform_submission_presave($node, &$submission) {
  if (empty($submission->sid) || !empty($submission->is_new)) {
    $submission->uuid = uuid_generate();
  }
}

/**
 * Loads a webform submission provided the UUID.  This function is modeled after
 * webform_get_submission.
 */
function webform_submission_uuid_get_submission($uuid, $reset = FALSE) {
  static $submissions = array();
  if ($reset) {
    $submissions = array();
    if (!isset($uuid)) {
      return;
    }
  }

  // Load the submission if needed.
  if (!isset($submissions[$uuid])) {

    // Translate this UUID to a webform submission.
    module_load_include('inc', 'webform', 'includes/webform.submissions');
    $submissions[$uuid] = webform_get_submissions(array(
      'uuid' => $uuid,
    ));
  }

  // Return the submission.
  return $submissions[$uuid];
}

/**
 * Loads a webform provided the UUID of a submission.
 */
function webform_submission_uuid_webform($uuid, $reset = FALSE) {
  $webform = null;

  // Get the submission entry.
  if ($submission = webform_submission_uuid_get_submission($uuid, $reset)) {

    // Translate this to a webform node.
    $webform = node_load($submission->nid, NULL, $reset);
  }

  // Return the webform node.
  return $webform;
}

Functions

Namesort descending Description
webform_submission_uuid_get_submission Loads a webform submission provided the UUID. This function is modeled after webform_get_submission.
webform_submission_uuid_uuid_sync Implementation of hook_uuid_sync
webform_submission_uuid_webform Loads a webform provided the UUID of a submission.
webform_submission_uuid_webform_submission_load Implementation of hook_webform_submission_load
webform_submission_uuid_webform_submission_presave Implements hook_webform_submission_presave().