/** * Test * * @return void */ public function testUploadWithoutValidators() { $this->initializeFiles(); $this->object->getFileTransfer()->removeValidator('Zend\\Validator\\File\\Upload'); $result = $this->object->upload(); $this->assertTrue($this->object->upload()); $files = $this->object->getFiles(); if (is_array($files)) { foreach ($files as $file) { $this->object->remove($file['filename']); } } $this->removeDirectories(); $this->assertTrue($result); }
/** * Upload file action * * @return \Zend\View\Model\JsonModel */ public function uploadAction() { $property = Property\Model::fromId($this->getRouteMatch()->getParam('property_id')); $document = Document\Model::fromId($this->getRouteMatch()->getParam('document_id')); if (!$this->getRequest()->isPost() or empty($document) or empty($property)) { return $this->returnJson(array('error' => true)); } $fileClass = new File(); $fileClass->load($property, $document); $files = array(); if ($fileClass->upload()) { $files = $fileClass->getFiles(); } if (!empty($files)) { return $this->returnJson(array('files' => $files)); } return $this->returnJson(array('error' => true)); }
/** * Save upload editor * * @return void */ public function save() { $parameters = $this->getConfig(); $data = array(); if (!empty($_FILES[$this->getName()]['name'])) { $oldFiles = $_FILES; $file = $_FILES[$this->getName()]; //Ignore others data $_FILES = array(); $_FILES[$this->getName()] = $file; $fileClass = new File(); $fileClass->load($this->getProperty(), $this->getDatatype()->getDocument(), $this->getName()); $fileClass->upload(); $files = $fileClass->getFiles(); if (!empty($files)) { foreach ($files as $file) { $name = $file['filename']; $file = $fileClass->getPath() . '/' . $name; if (file_exists($file)) { $const = defined('FILEINFO_MIME_TYPE') ? FILEINFO_MIME_TYPE : FILEINFO_MIME; $finfo = finfo_open($const); // return mimetype extension if (!in_array(finfo_file($finfo, $file), $parameters['mime_list'])) { unlink($file); } else { $fileInfo = @getimagesize($file); $data[] = array('value' => $name, 'width' => empty($fileInfo[0]) ? 0 : $fileInfo[0], 'height' => empty($fileInfo[1]) ? 0 : $fileInfo[1], 'html' => empty($fileInfo[2]) ? '' : $fileInfo[2], 'mime' => empty($fileInfo['mime']) ? '' : $fileInfo['mime']); } finfo_close($finfo); } } if (empty($parameters['is_multiple']) and !empty($data[0])) { $data = $data[0]; } $data = serialize($data); } //Restore file data $_FILES = $oldFiles; } else { $data = $this->getRequest()->getPost()->get($this->getName() . '-hidden'); } $this->setValue(empty($data) ? '' : $data); }
/** * Save Image cropper editor * * @return void */ public function save() { $post = $this->getRequest()->getPost(); $parameters = $this->getConfig(); $data = array(); $imageModel = new Image(); $fileClass = new File(); $fileClass->load($this->getProperty(), $this->getDatatype()->getDocument(), $this->getName()); $backgroundColor = empty($parameters['background']) ? '#000000' : $parameters['background']; if (!empty($_FILES[$this->getName()]['name'])) { $oldFiles = $_FILES; $file = $_FILES[$this->getName()]; //Ignore others data $_FILES = array(); $_FILES[$this->getName()] = $file; $fileClass->upload(); $files = $fileClass->getFiles(); if (!empty($files) and is_array($files)) { foreach ($files as $file) { $name = $file['filename']; $file = $fileClass->getPath() . $name; if (file_exists($file)) { $const = defined('FILEINFO_MIME_TYPE') ? FILEINFO_MIME_TYPE : FILEINFO_MIME; $finfo = finfo_open($const); // return mimetype extension if (!in_array(finfo_file($finfo, $file), $parameters['mime_list'])) { unlink($file); } else { $fileInfo = @getimagesize($file); $data['original'] = array('value' => $name, 'width' => empty($fileInfo[0]) ? 0 : $fileInfo[0], 'height' => empty($fileInfo[1]) ? 0 : $fileInfo[1], 'html' => empty($fileInfo[2]) ? '' : $fileInfo[2], 'mime' => empty($fileInfo['mime']) ? '' : $fileInfo['mime']); $imageModel->open($file); foreach ($parameters['size'] as $size) { $imageModel->open($file); $imageModel->resize($size['width'], $size['height'], empty($parameters['resize_option']) ? 'auto' : $parameters['resize_option'], $backgroundColor); $sizeFilename = preg_replace('~\\.([a-zA-Z]+)$~', '-' . $size['name'] . '.$1', $name); $imageModel->save($fileClass->getPath() . $sizeFilename); $fileInfo = @getimagesize($fileClass->getPath() . $sizeFilename); $data[$size['name']] = array('value' => $sizeFilename, 'width' => empty($fileInfo[0]) ? 0 : $fileInfo[0], 'height' => empty($fileInfo[1]) ? 0 : $fileInfo[1], 'html' => empty($fileInfo[2]) ? '' : $fileInfo[2], 'mime' => empty($fileInfo['mime']) ? '' : $fileInfo['mime'], 'x' => 0, 'y' => 0); } } finfo_close($finfo); } } } //Restore file data $_FILES = $oldFiles; } else { $data = $post->get($this->getName() . '-hidden'); $data = unserialize($data); if (!empty($data)) { if (!empty($data['original']['value'])) { foreach ($parameters['size'] as $size) { $x = (int) $post->get($this->getName() . $size['name'] . '-x'); $y = (int) $post->get($this->getName() . $size['name'] . '-y'); $filename = !empty($data[$size['name']]['value']) ? $data[$size['name']]['value'] : preg_replace('~\\.([a-zA-Z]+)$~', '-' . $size['name'] . '.$1', $data['original']['value']); $imageModel->open($fileClass->getPath() . $data['original']['value']); $imageModel->resize($size['width'], $size['height'], empty($parameters['resize_option']) ? 'auto' : $parameters['resize_option'], $backgroundColor, $x, $y); $imageModel->save($fileClass->getPath() . $filename); if (!empty($data[$size['name']]['value'])) { $data[$size['name']]['x'] = $x; $data[$size['name']]['y'] = $y; } else { $fileInfo = @getimagesize($fileClass->getPath() . $filename); $data[$size['name']] = array('value' => $filename, 'width' => empty($fileInfo[0]) ? 0 : $fileInfo[0], 'height' => empty($fileInfo[1]) ? 0 : $fileInfo[1], 'html' => empty($fileInfo[2]) ? '' : $fileInfo[2], 'mime' => empty($fileInfo['mime']) ? '' : $fileInfo['mime'], 'x' => 0, 'y' => 0); } } foreach ($data as $name => $file) { if ($name == 'original') { continue; } $found = false; foreach ($parameters['size'] as $size) { if ($size['name'] == $name) { $found = true; $file['options'] = $size; break; } } if (empty($found)) { unset($data[$name]); } } } } } $data = serialize($data); $this->setValue(empty($data) ? '' : $data); }