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

114 lines
3.7 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('Restricted access');
use Joomla\CMS\Form\Field\TextField;
use Joomla\CMS\HTML\HTMLHelper;
use Joomla\CMS\Factory;
use Joomla\Registry\Registry;
use Joomla\Filesystem\Path;
class JFormFieldACFGallery extends TextField
{
/**
* Generates the Gallery Field
*
* @return string The field input markup.
*/
protected function getInput()
{
require_once JPATH_SITE . '/plugins/fields/acfgallery/fields/helper.php';
$style = (string) $this->element['style'];
$style = ACFGalleryHelper::getStyle($style);
$data = [
'value' => $this->prepareValue(),
'required' => (string) $this->element['required'] == 'true' ? true : false,
'name' => (int) $this->element['limit_files'] == 1 ? $this->name . '[items][0]' : $this->name . '[items][ITEM_ID]',
'limit_files' => (string) $this->element['limit_files'],
'max_file_size' => (string) $this->element['max_file_size'],
'style' => $style,
'original_image_resize' => (string) $this->element['original_image_resize'] === '1',
'original_image_resize_width' => (string) $this->element['original_image_resize_width'],
'thumb_width' => (string) $this->element['thumb_width'],
'thumb_height' => (string) $this->element['thumb_height'],
'thumb_resize_method' => (string) $this->element['resize_method'],
'css_class' => ' ordering-' . (string) $this->element['ordering'],
'disabled' => $this->disabled,
'field_id' => (int) $this->element['field_id'],
'item_id' => $this->getItemID(),
'id' => $this->id,
'pro' => true
];
HTMLHelper::script('plg_fields_acfgallery/acfgallery.js', ['relative' => true, 'version' => 'auto']);
return \NRFramework\Widgets\Helper::render('GalleryManager', $data);
}
private function getItemID()
{
$item_id = (int) Factory::getApplication()->input->get('id');
switch (Factory::getApplication()->input->get('option'))
{
case 'com_users':
$item_id = Factory::getUser()->id;
break;
}
return $item_id;
}
/**
* The list of uploaded Gallery Items.
*
* @return mixed
*/
private function prepareValue()
{
if (empty($this->value))
{
return;
}
$this->value = is_string($this->value) ? json_decode($this->value, true) : (array) $this->value;
if (!isset($this->value['items']))
{
return;
}
$value = [];
foreach ($this->value['items'] as $key => $file)
{
$file = new Registry($file);
$value[] = [
'source' => $file->get('source'),
'original' => $file->get('original') ? $file->get('original') : $file->get('image'),
'exists' => is_file(Path::clean(implode(DIRECTORY_SEPARATOR, [JPATH_ROOT, $file->get('thumbnail')]))),
'caption' => $file->get('caption', ''),
'thumbnail' => $file->get('thumbnail', ''),
'is_media_uploader_file' => ($file->get('media_upload_source', 'false') == 'true'),
'alt' => $file->get('alt', ''),
'tags' => json_encode($file->get('tags', []))
];
}
return $value;
}
}