/** * Adds a thumbnail to media node. */ public function addThumbnail() { try { $file = $this->Request->getParameter('File'); if (!empty($file)) { $filetype = $this->Request->getParameter('Type'); $files = $this->Request->getUploadedFiles(); $params['_uploadedFiles'] = $files; $params['File'] = $file; list($sourceFile, $sourceFileName) = $this->MediaService->getSourceFile($params); list($width, $height) = getimagesize($sourceFile); $binary = fread(fopen($sourceFile, 'r'), filesize($sourceFile)); $srcFile = 'data:image/' . $filetype . ';base64,' . base64_encode($binary); $thumbnailValue = $width . 'x' . $height; } else { $srcFile = $this->Request->getParameter('srcFile'); $thumbnailValue = $this->Request->getRequiredParameter('thumbnailValue'); } if ($thumbnailValue == $this->imagesThumbnailCmsSize) { $this->sendError('-1', 'This thumbnail cannot be modified because it is reserved for CMS use.'); return; } $nodeRef = $this->getNodeRef(); $extension = $this->Request->getParameter('extension'); $this->MediaService->addThumbnail($nodeRef, $thumbnailValue, $srcFile, $extension); if (!empty($file)) { unlink($sourceFile); } // construct $output $output = new stdClass(); $node = $this->RegulatedNodeService->getByNodeRef($nodeRef, new NodePartials('#thumbnails-json')); $json = $node->getMetaValue('#thumbnails-json'); if ($json != null) { $thumbnails = JSONUtils::decode($json); foreach ($thumbnails as $thmb) { if ($thmb->value == $thumbnailValue) { $output = $thmb; break; } } } $this->sendJSON($output); } catch (Exception $e) { $this->sendExceptionError($e); } }