acf
This commit is contained in:
87
plugins/system/acf/ACF/Helpers/Yoo.php
Normal file
87
plugins/system/acf/ACF/Helpers/Yoo.php
Normal file
@ -0,0 +1,87 @@
|
||||
<?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;
|
||||
}
|
||||
}
|
||||
Reference in New Issue
Block a user