public function handleUpload() { $validate = $this->validateClass(); if ($validate !== true) { return $validate; } $translate = Zend_Registry::get("Zend_Translate"); $zft = new Zend_File_Transfer(); $this->_adapter = $zft->getAdapter('http'); if ($this->_adapter->isUploaded()) { if ($this->_rename) { if (!$this->_useMd5Name) { $name = $this->_name; } else { $name = $this->_adapter->getHash('md5'); } if ($this->_useFileExtension) { $extension = substr($this->_adapter->getFileName(null, false), strrpos($this->_adapter->getFileName(null, false), '.') + 1); $name .= '.' . strtolower($extension); } } $path = $this->_genPath($name); if (Agana_Util_FileHandle::isWritableDir($path)) { $this->_adapter->addValidator('ExcludeExtension', false, 'php,exe,so,dll')->addValidator('Size', false, $this->_sizeLimit)->addValidator('Extension', false, $this->_allowedExtensions)->setDestination($path); if ($this->_rename) { $this->_adapter->addFilter('Rename', array('target' => $path . $name, 'overwrite' => true)); } if ($this->_adapter->isValid()) { try { $this->_adapter->receive(); $this->_adapter->setOptions(array('useByteString' => false)); $file = $this->_adapter->getFileInfo(); $file = array_shift($file); $result['name'] = $file['name']; $result['type'] = $file['type']; $result['size'] = $file['size']; /** * Resize images based on dimensions options */ //TODO test if the file uploaded is a image foreach ($this->_dimensions as $sizename => $dim) { $wide = WideImage::load($file['tmp_name']); $imgResult = $wide->resize($dim['width'], $dim['height'], 'inside', 'down'); $resizedfilename = Agana_Util_FileHandle::genFileNameByClassification($file['name'], $sizename); if (strpos(strtolower($file['type']), 'png') !== false) { $compression = 8; } else { $compression = 80; } $imgResult->saveToFile($file['destination'] . '/' . $resizedfilename, $compression); } return $result; } catch (Zend_File_Transfer_Exception $e) { return array('error' => $e->getMessage()); } } else { $error = array(); foreach ($this->_adapter->getMessages() as $value) { $error[] = $value; } return array('error' => $translate->_($error)); } } else { return array('error' => $translate->_('file could not be created or path is not writable')); } } else { return array('error' => $translate->_('No file uploaded')); } }
/** * Loads the file content from disk * @param String $size * @return string file content */ public function loadFile($size = '') { $path = $this->getRealPath(); $file = $path . Agana_Util_FileHandle::genFileNameByClassification($this->getImage()->getFile(), $size); if (file_exists($file)) { if (is_readable($file)) { return file_get_contents($file); } else { throw new Agana_Exception('Image file is nor readable'); } } else { throw new Agana_Exception('Image file do not exist'); } }