Author: sevein
Date: Fri Dec 4 06:19:11 2009
New Revision: 4086
Log:
Add processMultiUploadForm(). Set validator for both 'file' (single upload) and
'files' (multi upload) post vars.
Modified:
trunk/apps/qubit/modules/digitalobject/actions/editAction.class.php
Modified: trunk/apps/qubit/modules/digitalobject/actions/editAction.class.php
==============================================================================
--- trunk/apps/qubit/modules/digitalobject/actions/editAction.class.php Fri Dec
4 00:15:25 2009 (r4085)
+++ trunk/apps/qubit/modules/digitalobject/actions/editAction.class.php Fri Dec
4 06:19:11 2009 (r4086)
@@ -157,6 +157,8 @@
$this->form->setWidget('file', new sfWidgetFormInputFile);
// Multi-upload
+ $this->form->setValidator('files', new sfValidatorPass);
+
$this->form->setValidator('informationObject', new sfValidatorPass);
$this->form->setWidget('informationObject', new sfWidgetFormInputHidden);
$this->form->setDefault('informationObject',
$this->informationObject->id);
@@ -190,11 +192,16 @@
if ($this->form->isValid())
{
- if (null != $this->form->getValue('file'))
+ if (null !== $this->form->getValue('file'))
{
- // Process upload form
+ // Process single-upload form
$this->processUploadForm();
}
+ else if (null !== $this->form->getValue('files'))
+ {
+ // Process multi-upload form
+ $this->processMultiUploadForm();
+ }
else
{
// Process update form
@@ -219,10 +226,63 @@
$this->informationObject->save();
$this->redirect(array('module' => 'informationobject', 'action' => 'show',
'id' => $this->informationObject->id));
+ }
- return $this;
+ public function processMultiUploadForm()
+ {
+ $tmpPath = sfConfig::get('sf_upload_dir').'/tmp';
+
+ // Upload files
+ $i = 0;
+ foreach ($this->form->getValue('files') as $file)
+ {
+ if (0 == strlen($file['infoObjectTitle'] || 0 ==
strlen($file['tmpName'])))
+ {
+ continue;
+ }
+
+ $i++;
+
+ // Create an information object for this digital object
+ $informationObject = new QubitInformationObject;
+ $informationObject->setParentId($this->informationObject->id);
+ if (0 < strlen($title = $file['infoObjectTitle']))
+ {
+ $informationObject->setTitle($title);
+ }
+ if (0 != intval($levelOfDescriptionId =
$this->form->getValue('level_of_description_id')))
+ {
+ $informationObject->setLevelOfDescriptionId($levelOfDescriptionId);
+ }
+ $informationObject->save();
+
+ if (file_exists($tmpPath.'/'.$file['tmpName']))
+ {
+ // Upload asset and create digital object
+ $digitalObject = new QubitDigitalObject;
+ $digitalObject->setInformationObject($informationObject);
+ $digitalObject->setUsageId(QubitTerm::MASTER_ID);
+ $digitalObject->assets[] = new QubitAsset($file['name'],
file_get_contents($tmpPath.'/'.$file['tmpName']));
+ $digitalObject->save();
+ }
+
+ $thumbnailIsGeneric = (bool) strstr($file['thumb'], 'generic-icons');
+
+ // Clean up temp files
+ if (file_exists($tmpPath.'/'.$file['tmpName']))
+ {
+ unlink($tmpPath.'/'.$file['tmpName']);
+ }
+ if (!$thumbnailIsGeneric && file_exists($tmpPath.'/'.$file['thumb']))
+ {
+ unlink($tmpPath.'/'.$file['thumb']);
+ }
+ }
+
+ $this->redirect(array('module' => 'informationobject', 'action' => 'show',
'id' => $this->informationObject->id));
}
+
/**
* Update digital object properties, or upload new digital object
derivatives.
*
--
You received this message because you are subscribed to the Google Groups
"Qubit Toolkit Commits" group.
To post to this group, send email to [email protected].
To unsubscribe from this group, send email to
[email protected].
For more options, visit this group at
http://groups.google.com/group/qubit-commits?hl=en.