webform_submission_uuid.module in Webform Submission UUID 6.4
Same filename and directory in other branches
Webform submission uuid module, generates uuid string for all submissions.
File
webform_submission_uuid.moduleView source
<?php
/**
* @file
* Webform submission uuid module, generates uuid string for all submissions.
*/
/**
* Implements hook_uuid_sync().
*/
function webform_submission_uuid_uuid_sync($initial_sync = FALSE) {
switch (WebformStorageController::getInstanceType()) {
case 'db':
// Update the uuid_webform_submissions table with missing UUID's
$result = db_query('SELECT sid FROM {webform_submissions} WHERE sid NOT IN (SELECT sid FROM {uuid_webform_submissions})');
while ($item = db_fetch_object($result)) {
db_query('INSERT INTO {uuid_webform_submissions} (sid, uuid) VALUES(%d, "%s")', $item->sid, uuid_uuid());
}
break;
case 'mongodb':
// Do nothing, we will use the mongo _id as a uuid.
break;
}
}
/**
* Implements 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_query('SELECT sid, uuid FROM {uuid_webform_submissions} us WHERE us.sid IN (' . db_placeholders($sids) . ')', $sids);
while ($row = db_fetch_object($result)) {
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) {
switch (WebformStorageController::getInstanceType()) {
case 'db':
if (empty($submission->sid) || !empty($submission->is_new)) {
$submission->uuid = uuid_uuid();
}
break;
}
}
/**
* Implements hook_webform_submission_insert().
*
* @param object $node
* @param object $submission
*/
function webform_submission_uuid_webform_submission_insert($node, $submission) {
switch (WebformStorageController::getInstanceType()) {
case 'db':
db_query('INSERT INTO {uuid_webform_submissions} (sid, uuid) VALUES (%d, "%s")', $submission->sid, $submission->uuid);
break;
}
}
/**
* Implements hook_webform_submission_delete().
*
* @param object $node
* @param object $submission
*/
function webform_submission_uuid_webform_submission_delete($node, $submission) {
switch (WebformStorageController::getInstanceType()) {
case 'db':
db_query('DELETE FROM {uuid_webform_submissions} WHERE sid = %d', $submission->sid);
break;
}
}
/**
* 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');
$mongo_id = new MongoId($uuid);
$submissions[$uuid] = webform_get_submissions(array(
'uuid' => $mongo_id,
));
}
// Return the submission.
return array_shift(array_values($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
Name![]() |
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 | Implements hook_uuid_sync(). |
webform_submission_uuid_webform | Loads a webform provided the UUID of a submission. |
webform_submission_uuid_webform_submission_delete | Implements hook_webform_submission_delete(). |
webform_submission_uuid_webform_submission_insert | Implements hook_webform_submission_insert(). |
webform_submission_uuid_webform_submission_load | Implements hook_webform_submission_load(). |
webform_submission_uuid_webform_submission_presave | Implements hook_webform_submission_presave(). |