webform_multiple_file.module in Webform Multiple File 7
Provides functions and hook implementations for webform multiple file module.
File
webform_multiple_file.module
View source
<?php
define('WEBFORM_MULTIPLE_FILE_CARDINALITY_UNLIMITED', -1);
function webform_multiple_file_webform_component_info() {
$components = array();
webform_component_include('file');
$components['multiple_file'] = array(
'label' => t('Multiple file'),
'description' => t('Multiple file upload support for webform.'),
'features' => array(
'conditional' => FALSE,
'attachment' => TRUE,
),
'file' => 'webform_multiple_file.webform.inc',
);
return $components;
}
function webform_multiple_file_webform_submission_presave($node, &$submission) {
$has_file_components = FALSE;
$new_fids = array();
$old_fids = array();
$renameable = array();
foreach ($node->webform['components'] as $cid => $component) {
if ($component['type'] == 'multiple_file') {
$has_file_components = TRUE;
if (!empty($submission->data[$cid])) {
foreach ($submission->data[$cid] as $key => $value) {
if (empty($value)) {
unset($submission->data[$cid][$key]);
}
if (strlen($component['extra']['rename'])) {
$renameable[$cid][] = $value;
}
}
$new_fids = array_merge($new_fids, $submission->data[$cid]);
}
}
}
if ($has_file_components) {
if (isset($submission->sid)) {
drupal_static_reset('webform_get_submission');
$old_submission = webform_get_submission($node->nid, $submission->sid);
foreach ($node->webform['components'] as $cid => $component) {
if ($component['type'] == 'multiple_file') {
if (!empty($old_submission->data[$cid])) {
$old_fids = array_merge($old_fids, $old_submission->data[$cid]);
}
}
}
}
if ($submission->is_draft || isset($old_submission) && !$old_submission->is_draft) {
$renameable = array();
}
$deleted_fids = isset($submission->file_usage['deleted_fids']) ? $submission->file_usage['deleted_fids'] : array();
$added_fids = isset($submission->file_usage['added_fids']) ? $submission->file_usage['added_fids'] : array();
$previous_renameable = isset($submission->file_usage['renameable']) ? $submission->file_usage['renameable'] : array();
$submission->file_usage = array(
'deleted_fids' => array_merge($deleted_fids, array_diff($old_fids, $new_fids)),
'added_fids' => array_merge($added_fids, array_diff($new_fids, $old_fids)),
'renameable' => $previous_renameable + $renameable,
);
}
}