public function create() { $squadForm = new Squad(); $squadForm->setServiceManager($this->getServiceLocator()); $squadForm->setUseInputFilterDefaults(false); $squadForm->init(); $postData = $this->getArrayPostData(); // logo if (!empty($postData['logo'])) { if (base64_encode(base64_decode($postData['logo'], true)) !== $postData['logo']) { return new ApiResponse(null, array('logo' => 'need logo data in base64')); } $base64logo = base64_decode($postData['logo']); $logo['logo'] = array(); $logo['logo']['error'] = 0; $logoTmpFile = tempnam(get_cfg_var('upload_tmp_dir'), null); file_put_contents($logoTmpFile, $base64logo); $logo['logo']['tmp_name'] = realpath($logoTmpFile); $logo['logo']['name'] = basename($logoTmpFile . '.png'); $logo['logo']['type'] = 'image/png'; $logo['logo']['size'] = strlen($base64logo); $_FILES = $logo; } $squadForm->setData(array_merge_recursive($postData, $_FILES)); if ($squadForm->isValid()) { $squad = $squadForm->getData(); $squad->setUser($this->getApiIdentity()); $uploadedLogoSpecs = $squad->getLogo(); // logo set? if ($uploadedLogoSpecs) { $squadImageService = $this->getServiceLocator()->get('SquadImageService'); $squadLogoID = $squadImageService->saveLogo($uploadedLogoSpecs); if ($squadLogoID !== false) { $squad->setLogo($squadLogoID); } else { $squad->setLogo(null); } } else { // no logo change $squad->setLogo(null); } // new squad url $squadRepo = $this->getEntityManager()->getRepository('Frontend\\Squads\\Entity\\Squad'); $squadRepo->createUniqueToken($squad); $this->getEntityManager()->persist($squad); $this->getEntityManager()->flush($squad); $squadData = $squad->getArrayCopy(); if ($squad->getSquadLogoPaa()) { $squadData['logo'] = base64_encode(file_get_contents($squad->getSquadLogoPaa())); } // save return new ApiResponse($squadData, null, 201); } else { return new ApiResponse(null, $squadForm->getMessages(), 422); } }