63 lines
1.4 KiB
PHP
63 lines
1.4 KiB
PHP
<?php
|
|
|
|
/**
|
|
* @author Tassos Marinos <info@tassos.gr>
|
|
* @link http://www.tassos.gr
|
|
* @copyright Copyright © 2023 Tassos Marinos All Rights Reserved
|
|
* @license GNU GPLv3 <http://www.gnu.org/licenses/gpl.html> or later
|
|
*/
|
|
|
|
namespace ACF\Helpers;
|
|
|
|
defined('_JEXEC') or die;
|
|
|
|
class Field
|
|
{
|
|
/**
|
|
* Returns the widget for which the ACF custom field is based upon.
|
|
*
|
|
* @param string $type
|
|
* @param object $field_options
|
|
*
|
|
* @return string
|
|
*/
|
|
public static function isWidgetBased($type = '', $field_options = [])
|
|
{
|
|
if (!$type)
|
|
{
|
|
return false;
|
|
}
|
|
|
|
$widget_name = self::getWidgetName($type);
|
|
|
|
$widget = \NRFramework\Widgets\Helper::find($widget_name);
|
|
|
|
if ($widget === 'Map' && !is_null($field_options->fieldparams))
|
|
{
|
|
return !empty($field_options->fieldparams['provider']) ? $field_options->fieldparams['provider'] : $widget;
|
|
}
|
|
|
|
return $widget;
|
|
}
|
|
|
|
/**
|
|
* Returns the widget name of an ACF custom field.
|
|
*
|
|
* @param string @type
|
|
*
|
|
* @return string
|
|
*/
|
|
public static function getWidgetName($type = '')
|
|
{
|
|
// Remove the "acf" prefix
|
|
$type = str_replace('acf', '', $type);
|
|
|
|
// Map for any ACF fields that do not automatically translate to a Widget
|
|
$map = [
|
|
'address' => 'MapAddress'
|
|
];
|
|
|
|
// Transform a field type to its corresponding widget from the map
|
|
return isset($map[$type]) ? $map[$type] : $type;
|
|
}
|
|
} |