/** * 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"); } }
/** * 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 */ } } } }
private function createGalleries($urls) { $factory = new Filemanager_File_Factory(); $link_service = Zoo::getService('link'); foreach ($urls as $i => $array) { set_time_limit(60); // Create gallery_node content item $gallery = Zoo::getService('content')->createRow(); $gallery->type = 'gallery_node'; $gallery->title = $array['title']; $gallery->content = $array['text']; $gallery->status = 1; $gallery->published = time(); $gallery->save(); $fp = fopen(ZfApplication::$_data_path . DIRECTORY_SEPARATOR . $this->getRequest()->getParam('account') . "_" . $this->getRequest()->getParam('offset') . ".txt", 'w'); fwrite($fp, serialize(array('id' => $gallery->id, 'total' => count($array['ids'])))); fclose($fp); Zoo::getService('content')->setFilter($gallery, 3, 1); Zoo::getService('content')->setFilter($gallery, 6, 1); foreach ($array['ids'] as $k => $id) { set_time_limit(60); // Insert image with $id and $array['texts'][$k] $image = Zoo::getService('content')->createRow(); $image->type = 'filemanager_file'; $image->title = $id; if ($array['texts'][$k]) { $image->content = $array['texts'][$k]; } $image->status = 1; $image->published = time(); $image->pid = $gallery->id; $image->save(); Zoo::getService('content')->setFilter($image, 3, 1); Zoo::getService('content')->setFilter($image, 6, 1); $file = $factory->createRow(); $file->nid = $image->id; $file->mimetype = "image/jpeg"; // Fetch image from 123hjemmeside.dk $url = "http://www.123hjemmeside.dk/picture.aspx?id=" . $id; $jpg = file_get_contents($url); file_put_contents($file->getPath(), $jpg); $file->size = filesize($file->getPath()); $file->save(); // Connect image to gallery_node $gnode = $link_service->createRow(); $gnode->type = 'gallery_image'; $gnode->nid = $gallery->id; $gnode->tonid = $image->id; $gnode->weight = $k; $gnode->save(); unset($image, $file, $jpg, $gnode); } unset($gallery); } }