/**
  * 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);
     }
 }