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.


Reply via email to