vendor/alnv/catalog-manager/library/alnv/Fields/Upload.php line 229

Open in your IDE?
  1. <?php
  2. namespace CatalogManager;
  3. class Upload {
  4.     public static function generate($arrDCAField$arrField) {
  5.         $arrDCAField['eval']['files'] = true;
  6.         $arrDCAField['eval']['filesOnly'] = Toolkit::getBooleanByValue($arrField['filesOnly']);
  7.         $arrField['fileType'] = $arrField['fileType'] ?? '';
  8.         if ($arrField['fileType'] == 'gallery') {
  9.             $arrDCAField['eval']['multiple'] = true;
  10.             $arrDCAField['eval']['fieldType'] = 'checkbox';
  11.             $arrDCAField['load_callback'] = [ [ 'DcCallbacks''setMultiSrcFlags' ] ];
  12.             if ( $arrField['sortBy'] == 'custom' && $arrField['orderField'] ) {
  13.                 $arrDCAField['eval']['orderField'] = $arrField['orderField'];
  14.             }
  15.         }
  16.         if ( $arrField['fileType'] == 'image' ) {
  17.             $arrDCAField['eval']['multiple'] = false;
  18.             $arrDCAField['eval']['fieldType'] = 'radio';
  19.         }
  20.         if ( $arrField['fileType'] == 'file' ) {
  21.             $arrDCAField['eval']['multiple'] = false;
  22.             $arrDCAField['eval']['fieldType'] = 'radio';
  23.         }
  24.         if ( $arrField['fileType'] == 'files' ) {
  25.             $arrDCAField['eval']['multiple'] = true;
  26.             $arrDCAField['eval']['fieldType'] = 'checkbox';
  27.             $arrDCAField['load_callback'] = [ [ 'DcCallbacks''setMultiSrcFlags' ] ];
  28.             if ( $arrField['sortBy'] == 'custom' && $arrField['orderField'] ) {
  29.                 $arrDCAField['eval']['orderField'] = $arrField['orderField'];
  30.             }
  31.         }
  32.         $arrDCAField['eval']['extensions'] = $arrField['extensions'] ?: \Config::get('uploadTypes');
  33.         $arrField['path'] = $arrField['path'] ?? '';
  34.         if ( $arrField['path'] ) {
  35.             $arrDCAField['eval']['path'] = $arrField['path'];
  36.         }
  37.         $arrDCAField['eval']['maxsize'] = $arrField['maxsize'];
  38.         return $arrDCAField;
  39.     }
  40.     public static function parseValue ($varValue$arrField$arrCatalog=[]) {
  41.         $varValues Toolkit::deserialize($varValue);
  42.         switch ($arrField['fileType']) {
  43.             case 'image':
  44.                 $varValue $varValues[0] ?? '';
  45.                 return static::renderImage($varValue$arrField$arrCatalog);
  46.             case 'gallery':
  47.                 return static::renderGallery($varValues$arrField$arrCatalog);
  48.             case 'file':
  49.                 $varValue $varValues[0] ?? '';
  50.                 return static::renderFile($varValue$arrField$arrCatalog);
  51.             case 'files':
  52.                 return static::renderFiles($varValues$arrField$arrCatalog);
  53.         }
  54.         return '';
  55.     }
  56.     public static function parseThumbnails($varValue$arrField$arrCatalog=[]) {
  57.         $varValues Toolkit::deserialize($varValue);
  58.         switch ($arrField['fileType']) {
  59.             case 'image':
  60.                 $varValue $varValues[0] ?? '';
  61.                 return static::renderThumbnail$varValue$arrField );
  62.             case 'gallery':
  63.                 $strThumbnails '';
  64.                 if (!empty($varValues) && is_array($varValues)) {
  65.                     $strThumbnails .= '<ul class="ctlg_thumbnails_preview">';
  66.                     foreach ($varValues as $varValue) {
  67.                         $strThumbnails .= '<li>' . static::renderThumbnail($varValue$arrField) . '</li>';
  68.                     }
  69.                     $strThumbnails .= '</ul>';
  70.                 }
  71.                 return $strThumbnails;
  72.             case 'file':
  73.                 $varValue $varValues[0];
  74.                 $arrFile = static::createEnclosureArray($varValue$arrField$arrCatalog);
  75.                 if (is_array$arrFile) && isset($arrFile['name']) && !Toolkit::isEmpty($arrFile['name'])) {
  76.                     return $arrFile['name'];
  77.                 }
  78.                 return '';
  79.             case 'files':
  80.                 $strFiles '';
  81.                 if (!empty($varValues) && is_array($varValues)) {
  82.                     $arrNames = [];
  83.                     $strFiles .= '<ul class="ctlg_files_preview">';
  84.                     foreach ($varValues as $varValue) {
  85.                         $arrFile = static::createEnclosureArray($varValue$arrField$arrCatalog);
  86.                         if (is_array($arrFile) && !Toolkit::isEmpty($arrFile['name'])) {
  87.                             $arrNames[] = '<li>' $arrFile['name'] . '</li>';
  88.                         }
  89.                     }
  90.                     $strFiles .= implode(', ' $arrNames) . '</ul>';
  91.                 }
  92.                 return $strFiles;
  93.         }
  94.         return '';
  95.     }
  96.     public static function renderThumbnail$varValue$arrField = [] ) {
  97.         if ( $varValue != '' ) {
  98.             $objFile \FilesModel::findByUuid$varValue );
  99.             if ($objFile !== null) {
  100.                 return \Image::getHtml\Image::get$objFile->path0), '''class="'$arrField['fieldname'] .'_preview ctlg_thumbnail_preview"' );
  101.             }
  102.         }
  103.         return $varValue;
  104.     }
  105.     public static function parseAttachment($varValue$arrField$arrCatalog = []) {
  106.         $arrReturn = [];
  107.         $arrValues \StringUtil::deserialize($varValuetrue);
  108.         foreach ($arrValues as $strUuid) {
  109.             $objFile \FilesModel::findByUuid($strUuid);
  110.             if (!$objFile) {
  111.                 continue;
  112.             }
  113.             $arrReturn[] = $objFile->path;
  114.         }
  115.         return implode(','$arrReturn);
  116.     }
  117.     public static function renderGallery$varValue$arrField$arrCatalog ) {
  118.         if ( !empty( $varValue ) && is_array$varValue ) ) {
  119.             $strTemplate $arrField['galleryTemplate'] ? $arrField['galleryTemplate'] : 'gallery_default';
  120.             $strOrderField $arrCatalog$arrField['orderField'] ] ? $arrCatalog$arrField['orderField'] ] : '';
  121.             $objGallery = new GalleryCreator$varValue, [
  122.                 'id' => $arrCatalog['id'],
  123.                 'size' => $arrField['size'] ?? '',
  124.                 'galleryTpl' => $strTemplate,
  125.                 'orderSRC' => $strOrderField,
  126.                 'perRow' => $arrField['perRow'] ?? '',
  127.                 'sortBy' => $arrField['sortBy'] ?? '',
  128.                 'perPage' => $arrField['perPage'] ?? '',
  129.                 'fullsize' => $arrField['fullsize'] ?? '',
  130.                 'metaIgnore' => $arrField['metaIgnore'] ?? '',
  131.                 'numberOfItems' => $arrField['numberOfItems'] ?? '',
  132.                 'imageTemplate' => $arrField['imageTemplate'] ?? '',
  133.                 'useArrayFormat' => $arrField['useArrayFormat'] ?? '',
  134.                 'usePreviewImage' => $arrField['usePreviewImage'] ?? '',
  135.                 'previewImagePosition' => $arrField['previewImagePosition'] ?? '',
  136.             ]);
  137.             return [
  138.                 'gallery' => $objGallery->render(),
  139.                 'preview' => $arrField['usePreviewImage'] ? $objGallery->getPreviewImage() : '',
  140.             ];
  141.         }
  142.         return [
  143.             'preview' => '',
  144.             'gallery' => $arrField['useArrayFormat'] ? [] : ''
  145.         ];
  146.     }
  147.     
  148.     public static function renderFiles($varValue$arrField$arrCatalog) {
  149.         if (!empty($varValue) && is_array($varValue)) {
  150.             $strTemplate $arrField['filesTemplate'] ?: 'ce_downloads';
  151.             $strOrderField $arrCatalog[$arrField['orderField']] ? : '';
  152.             $objDownloads = new DownloadsCreator($varValue, [
  153.                 'orderSRC' => $strOrderField,
  154.                 'downloadsTpl' => $strTemplate,
  155.                 'sortBy' => $arrField['sortBy'] ?? '',
  156.                 'metaIgnore' => $arrField['metaIgnore'] ?? '',
  157.                 'useArrayFormat' => $arrField['useArrayFormat'] ?? '',
  158.             ]);
  159.             return $objDownloads->render();
  160.         }
  161.         return $arrField['useArrayFormat'] ? [] : '';
  162.     }
  163.     public static function renderImage$varValue$arrField$arrCatalog ) {
  164.         $blnArray $arrField['useArrayFormat'] ? true false;
  165.         if ( !is_string$varValue ) ) return $blnArray ? [] : '';
  166.         $arrImage = static::createImageArray$varValue$arrField$arrCatalog );
  167.         return static::generateImage$arrImage$arrField$blnArray);
  168.     }
  169.     public static function renderFile$varValue$arrField$arrCatalog ) {
  170.         if ( !is_string$varValue ) ) {
  171.             return $arrField['useArrayFormat'] ? [] : '';
  172.         }
  173.         $arrFile = static::createEnclosureArray$varValue$arrField$arrCatalog );
  174.         if ( $arrField['useArrayFormat'] ) {
  175.             return $arrFile;
  176.         }
  177.         return static::generateEnclosure$arrFile$arrField );
  178.     }
  179.     public static function createImageArray$varValue$arrField$arrCatalog ) {
  180.         $objModel = static::getImagePath$varValuetrue );
  181.         return [
  182.             'model' => $objModel,
  183.             'overwriteMeta' => false,
  184.             'size' => $arrField['size'],
  185.             'fullsize' => $arrField['fullsize'],
  186.             'alt' => $arrCatalog[$arrField['imageAlt']] ?? '',
  187.             'href' => $arrCatalog[$arrField['imageURL']] ?? '',
  188.             'singleSRC' => $objModel $objModel->path '',
  189.             'title' => $arrCatalog[$arrField['imageTitle']] ?? '',
  190.             'caption' => $arrCatalog[$arrField['imageCaption']] ?? ''
  191.         ];
  192.     }
  193.     public static function createEnclosureArray($varValue$arrField$arrCatalog) {
  194.         global $objPage;
  195.         $strDownload \Input::get('file'true);
  196.         $objFileEntity \FilesModel::findByUuid($varValue);
  197.         if (!$objFileEntity->path || $objFileEntity->type != 'file') return [];
  198.         $objFile = new \File($objFileEntity->pathtrue);
  199.         $strTitle $arrCatalog[$arrField['fileTitle']] ?? '';
  200.         $strDescription $arrCatalog[$arrField['fileText']] ?? '';
  201.         if (!$strTitle) {
  202.             $strTitle \StringUtil::specialchars($objFile->name);
  203.         }
  204.         $strHref \Environment::get('request');
  205.         if (preg_match('/(&(amp;)?|\?)file=/'$strHref)) {
  206.             $strHref preg_replace('/(&(amp;)?|\?)file=[^&]+/'''$strHref);
  207.         }
  208.         $strHref .= ((\Config::get('disableAlias') || strpos($strHref'?') !== false) ? '&amp;' '?') . 'file=' \System::urlEncode($objFile->value);
  209.         $arrMeta \Frontend::getMetaData($objFileEntity->meta$objPage->language);
  210.         if (empty($arrMeta) && $objPage->rootFallbackLanguage !== null) {
  211.             $arrMeta \Frontend::getMetaData($objFileEntity->meta$objPage->rootFallbackLanguage);
  212.         }
  213.         if ($arrMeta['title'] == '') {
  214.             $arrMeta['title'] = \StringUtil::specialchars($objFile->basename);
  215.         }
  216.         if ($strDownload != '' && $objFileEntity->path\Controller::sendFileToBrowser($strDownload);
  217.         return [
  218.             'href' => $strHref,
  219.             'meta' => $arrMeta,
  220.             'link' => $strTitle,
  221.             'mime' => $objFile->mime,
  222.             'id' => $objFileEntity->id,
  223.             'path' => $objFile->dirname,
  224.             'name' => $objFile->basename,
  225.             'extension' => $objFile->extension,
  226.             'icon' => \Image::getPath$objFile->icon ),
  227.             'filesize' => \Controller::getReadableSize$objFile->filesize ),
  228.             'title' => specialchars$strDescription ?: sprintf$GLOBALS['TL_LANG']['MSC']['download'], $objFile->basename ) )
  229.         ];
  230.     }
  231.     public static function getImagePath$strSingleSrc$blnModel false ) {
  232.         if ( !Toolkit::isEmpty$strSingleSrc ) ) {
  233.             $objModel \FilesModel::findByUuid$strSingleSrc );
  234.             if ( $blnModel ) {
  235.                 return $objModel;
  236.             }
  237.             if ( $objModel !== null ) {
  238.                 return $objModel->path;
  239.             }
  240.             return '';
  241.         }
  242.         if ( $blnModel ) {
  243.             return null;
  244.         }
  245.         return $strSingleSrc;
  246.     }
  247.     public static function generateImage$arrImage$arrField = [], $blnArray false ) {
  248.         $strTemplate $arrField['imageTemplate'] ? $arrField['imageTemplate'] : 'ce_image';
  249.         $objPicture = new \FrontendTemplate$strTemplate );
  250.         if ( Toolkit::isEmpty$arrImage['singleSRC'] ) ) return $blnArray ? [] : '';
  251.         if ( $arrImage['alt'] ) {
  252.             $arrImage['overwriteMeta'] = true;
  253.         }
  254.         \Controller::addImageToTemplate$objPicture$arrImagenullnull$arrImage['model'] );
  255.         return $blnArray $objPicture->getData() : $objPicture->parse();
  256.     }
  257.     public static function generateEnclosure$arrEnclosure$arrField = [] ) {
  258.         $strTemplate $arrField['fileTemplate'] ? $arrField['fileTemplate'] : 'ce_download';
  259.         $objTemplate = new \FrontendTemplate$strTemplate );
  260.         $objTemplate->setData$arrEnclosure );
  261.         return $objTemplate->parse();
  262.     }
  263. }