예제 #1
0
 /**
  * Hook for node save - if type is Filemanager Node, save extra fields
  *
  * @param Zend_Form $form
  * @param array $arguments
  */
 public function nodeSave(&$form, &$arguments)
 {
     $item = array_shift($arguments);
     $arguments = array_shift($arguments);
     if ($item->type == "filemanager_file" && $form->filemanager_file) {
         $factory = new Filemanager_File_Factory();
         // Save Filemanager fields
         if ($item->id > 0) {
             // Fetch Filemanager object
             $file = $factory->find($item->id)->current();
             if (!$file) {
                 $file = $factory->createRow();
             }
         } else {
             $file = $factory->createRow();
         }
         if ($form->filemanager_file->isUploaded()) {
             if ($form->filemanager_file->receive()) {
                 $file->nid = $item->id;
                 // Update physical file
                 $location = $form->filemanager_file->getFileName();
                 $existing = $file->getPath();
                 if (file_exists($existing)) {
                     unlink($existing);
                 }
                 rename($location, $existing);
                 // Update database
                 $file->mimetype = $factory->getMimetype($_FILES['filemanager_file']['name']);
                 $file->size = filesize($file->getPath());
                 //                if (substr($file->mimetype, 0, 5) == "image") {
                 //                    $file->exif = "";
                 /**
                  * @todo: Implement exif data read
                  */
                 //                }
                 $file->save();
             } else {
                 print "Error receiving the file";
                 /**
                  * @todo: Change this to exception/debug message
                  */
             }
         }
     }
 }
예제 #2
0
 /**
  * Perform upload of a file
  */
 public function performuploadAction()
 {
     Zend_Controller_Front::getInstance()->getResponse()->clearHeaders();
     $this->getHelper('layout')->disableLayout();
     $this->getHelper('viewRenderer')->setNoRender();
     /* $writer = new Zend_Log_Writer_Stream ( ZfApplication::$_data_path.DIRECTORY_SEPARATOR."upload.txt" );
           $logger = new Zend_Log ( $writer );
     
           $logger->log ( serialize($_REQUEST), Zend_Log::INFO ); */
     $image = Zoo::getService('content')->createRow();
     $image->type = 'filemanager_file';
     $image->title = substr($this->getRequest()->getParam('Filename'), 0, strrpos($this->getRequest()->getParam('Filename'), '.'));
     $image->status = 1;
     $image->published = time();
     $image->pid = $this->getRequest()->getParam('parent');
     $image->save();
     /**
      * A little bit of hard-coding, since the normal file uploading through Zend_Form_Element_File is not used with flash/AJAX uploader
      */
     $factory = new Filemanager_File_Factory();
     $file = $factory->createRow();
     $file->nid = $image->id;
     $file->mimetype = $factory->getMimetype($_FILES['Filedata']['name']);
     $file->size = $_FILES['Filedata']['size'];
     $file->save();
     rename($_FILES['Filedata']['tmp_name'], $file->getPath());
     // Clear listing cache
     Zoo::getService('cache')->remove("Filemanager_FileController_listAction" . $image->pid);
     try {
         // Trigger node save hooks
         $form = $image->getForm($this->_helper->getHelper('url')->direct('save', 'node', 'Content'));
         Zoo::getService("hook")->trigger("Node", "Save", $form, $image);
     } catch (Zoo_Exception_Service $e) {
         // Hook service not available - log? Better not, some people may live happily without a hook service
     }
     // Report back the URL for the file
     $factory = new Filemanager_File_Factory();
     $file = $factory->find($image->id)->current();
     if ($file) {
         echo $file->getUrl(200, 200);
     } else {
         // Error during upload, delete the file object
         $image->delete();
         echo Zoo::_("An error occurred during file upload, please try again");
     }
 }