87 lines
		
	
	
		
			2.4 KiB
		
	
	
	
		
			PHP
		
	
	
	
	
	
			
		
		
	
	
			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;
 | |
|     }
 | |
| } |