Files
conservatorio-tomadini/plugins/fields/acfupload/tmpl/acfupload.php
2024-12-31 11:07:09 +01:00

141 lines
3.5 KiB
PHP

<?php
/**
* @package Advanced Custom Fields
* @version 2.8.8 Pro
*
* @author Tassos Marinos <info@tassos.gr>
* @link http://www.tassos.gr
* @copyright Copyright © 2019 Tassos Marinos All Rights Reserved
* @license GNU GPLv3 <http://www.gnu.org/licenses/gpl.html> or later
*/
defined('_JEXEC') or die;
if (!$value = $field->value)
{
return;
}
require_once JPATH_SITE . '/plugins/fields/acfupload/fields/uploadhelper.php';
$limit_files = (int) $fieldParams->get('limit_files');
/**
* This handles backwards compatibility
*/
$files = is_string($value) ? json_decode($value, true) ?? [['value' => $value]] : $value;
// Handle single file
if ($limit_files === 1 && is_array($files))
{
if (isset($files['value']))
{
$files = [$files];
}
$files = [reset($files)];
}
$layout = $fieldParams->get('layout', 'link');
$buffer = [];
$total_files = count($files);
$index = 1;
foreach ($files as $value)
{
// Make sure we have a value
if (!$value)
{
continue;
}
$file = isset($value['value']) ? $value['value'] : $value;
$title = isset($value['title']) && !empty($value['title']) ? $value['title'] : '';
$description = isset($value['description']) && !empty($value['description']) ? html_entity_decode(urldecode($value['description'])) : '';
$file_url = ACFUploadHelper::absURL($file);
switch ($layout)
{
// Image
case 'img':
$item = '<img src="' . $file_url . '"/>';
break;
// Custom Layout
case 'custom':
if (!$subject = $fieldParams->get('custom_layout'))
{
return;
}
// Add the prefix "acf." to any "{file.*}" Smart Tags found
$new_format = 'acf.file.';
$subject = preg_replace('/{file\.([^}]*)}/', '{'.$new_format.'$1}', $subject);
$file_full_path = JPATH_SITE . '/' . $file;
$exists = is_file($file_full_path);
// Always use framework's pathinfo to fight issues with non latin characters.
$filePathInfo = NRFramework\File::pathinfo($file);
$st = new \NRFramework\SmartTags();
$file_tags = [
'index' => $index,
'total' => $total_files,
'name' => $filePathInfo['basename'],
'basename' => $filePathInfo['basename'],
'filename' => $filePathInfo['filename'],
'ext' => $filePathInfo['extension'],
'extension' => $filePathInfo['extension'],
'path' => $file,
'url' => $file_url,
'size' => $exists ? ACFUploadHelper::humanFilesize(filesize($file_full_path)) : 0,
'title' => $title,
'description' => nl2br($description)
];
$st->add($file_tags, 'acf.file.');
$item = $st->replace($subject);
break;
// Link
default:
$item = '<a href="' . $file_url . '"';
if ($fieldParams->get('force_download', true))
{
$item .= ' download';
}
$link_text = $fieldParams->get('link_text', $file);
$st = new \NRFramework\SmartTags();
// Always use framework's pathinfo to fight issues with non latin characters.
$filePathInfo = NRFramework\File::pathinfo($file);
$file_tags = [
'index' => $index,
'total' => $total_files,
'basename' => $filePathInfo['basename'],
'filename' => $filePathInfo['filename'],
'extension' => $filePathInfo['extension'],
'title' => $title,
'description' => nl2br($description)
];
$st->add($file_tags, 'acf.file.');
$item .= '>' . $st->replace($link_text) . '</a>';
break;
}
$buffer[] = $layout === 'custom' ? $item : '<span class="acfup-item">' . $item . '</span>';
$index++;
}
echo implode('', $buffer);