/** * Upload a new image * * @param Zend\Form\Form $form * @param Users\Entity\User $user * @param array $data */ protected function createImage($form, $user, $data) { if ($data['image']['error'] != 0) { $data['image'] = NULL; } $form->setData($data); $size = new Size(array('max' => 2048000)); $isImage = new IsImage(); $filename = $data['image']['name']; $adapter = new \Zend\File\Transfer\Adapter\Http(); $adapter->setValidators(array($size, $isImage), $filename); if (!$adapter->isValid($filename)) { $errors = array(); foreach ($adapter->getMessages() as $key => $row) { $errors[] = $row; } $form->setMessages(array('image' => $errors)); } if ($form->isValid()) { $destPath = 'data/tmp/'; $adapter->setDestination($destPath); $fileinfo = $adapter->getFileInfo(); preg_match('/.+\\/(.+)/', $fileinfo['image']['type'], $matches); $extension = $matches[1]; $newFilename = sprintf('%s.%s', sha1(uniqid(time(), true)), $extension); $adapter->addFilter('File\\Rename', array('target' => $destPath . $newFilename, 'overwrite' => true)); if ($adapter->receive($filename)) { $data = array(); $data['image'] = base64_encode(file_get_contents($destPath . $newFilename)); $data['user_id'] = $user->getId(); if (file_exists($destPath . $newFilename)) { unlink($destPath . $newFilename); } $response = ApiClient::postWallContent($user->getUsername(), $data); return $response['result']; } } return $form; }