Files
conservatorio-tomadini/plugins/system/acf/ACF/Helpers/Yoo.php
2024-12-31 11:07:09 +01:00

87 lines
2.4 KiB
PHP

<?php
/**
* @author Tassos Marinos <info@tassos.gr>
* @link http://www.tassos.gr
* @copyright Copyright © 2021 Tassos Marinos All Rights Reserved
* @license GNU GPLv3 <http://www.gnu.org/licenses/gpl.html> or later
*/
namespace ACF\Helpers;
defined('_JEXEC') or die;
use NRFramework\Functions;
use YOOtheme\Builder\Joomla\Fields\FieldsHelper;
use YOOtheme\Application as YooApplication;
use YOOtheme\Event;
class Yoo
{
public static function initFieldParser()
{
// Ensure YOOtheme Pro is ready
if (!class_exists(YooApplication::class, false))
{
return;
}
Event::on('source.com_fields.field', function($config, $field, $source, $context) {
// If it's not an ACF Field, return current config
if (substr($field->type, 0, 3) !== 'acf')
{
return $config;
}
// Get the helper class of the field
$helperClass = '\ACF\Helpers\Fields\\' . ucfirst(substr($field->type, 3));
// If it does not exist, return current config
if (!class_exists($helperClass))
{
return $config;
}
// If the method does not have a resolve method, return current config
if (!method_exists($helperClass, 'yooResolve'))
{
return $config;
}
$payload = [
'extensions' => [
'call' => [
'func' => $helperClass . '::yooResolve',
'args' => ['context' => $context, 'field_id' => $field->id]
]
],
] + $config;
// Get and set the type
$type = method_exists($helperClass, 'getYooType') ? $helperClass::getYooType($field, $source) : '';
if (!empty($type))
{
$payload['type'] = $type;
}
return $payload;
});
}
public static function getSubfield($id, $context)
{
static $fields = [];
if (!isset($fields[$context]))
{
$fields[$context] = [];
foreach (FieldsHelper::getFields($context, null, true) as $field)
{
$fields[$context][$field->id] = $field;
}
}
return !empty($fields[$context][$id]) ? $fields[$context][$id] : null;
}
}