Your IP : 216.73.216.240


Current Path : /home/juvelize/saulnois/tmp/install_695d2cf0b4957/src/
Upload File :
Current File : /home/juvelize/saulnois/tmp/install_695d2cf0b4957/src/TField.php

<?php
/*
* @package		Tech Fry Library
* @license		https://www.gnu.org/licenses/gpl-3.0.en.html
*/

namespace TechFry\Library;

defined('_JEXEC') or die;

use Joomla\CMS\Component\ComponentHelper;
use Joomla\CMS\Factory;
use Joomla\Component\Fields\Administrator\Helper\FieldsHelper;

// Helper class for Joomla custom fields
class TField
{
    /*
    save_custom_field(), get_custom_field(), get_custom_fields(), get_fields(), get_field(), 
    get_field_group(), get_field_groups()
    render_fields_by_group(), render_fields_by_display(), render_fields_by_id()
    get_custom_field_label()
    */
    
    /*
  	FieldsHelper - extract, getFields, render, prepareForm, canEditFieldValue, displayFieldOnForm, getAssignedCategoriesIds,
  					getAssignedCategoriesTitles, getFieldsPluginId, getFieldTypes, clearFieldsCache
  	*/
  	
  	// 01. Save custom field
    public function save_custom_field($field_id, $item_id, $value)
    {
        $fieldModel = Factory::getApplication()->bootComponent('com_fields')->getMVCFactory()->createModel('Field', 'Administrator', ['ignore_request' => true]);
        
      	// Custom field value will not be saved if not authorized to change it
       	$result = $fieldModel->setFieldValue($field_id, $item_id, $value);      
        
        return $result;
    }
    
    // 02. Get custom field
    public function get_custom_field($field_id, $item_id)
    {
        $fieldModel = Factory::getApplication()->bootComponent('com_fields')->getMVCFactory()->createModel('Field', 'Administrator', ['ignore_request' => true]);
        
        $value = $fieldModel->getFieldValue($field_id, $item_id);
        
        return $value;
    }
  
  	// 03. Get custom fields - $field_ids: array
    public function get_custom_fields($field_ids, $item_id)
    {
        $fieldModel = Factory::getApplication()->bootComponent('com_fields')->getMVCFactory()->createModel('Field', 'Administrator', ['ignore_request' => true]);
        
        $value = $fieldModel->getFieldValues($field_ids, $item_id);
        
        return $value;
    }
	
	// 04. Get custom fields by context, optionally grouped by custom field groups
	public function get_fields($context, $grouped = false)
	{
	    $fields = FieldsHelper::getFields($context);
	    
	    if ($grouped)
	    {
    	    // Organizing fields according to their group
    		$fieldsPerGroup = array(0 => array());
    		
    		foreach ($fields as $field)
    		{
    		    if (!array_key_exists($field->group_id, $fieldsPerGroup))
    			{
    				$fieldsPerGroup[$field->group_id] = array();
    			}
    			
    			$fieldsPerGroup[$field->group_id][] = $field;
    		}
    	    
    	    return $fieldsPerGroup;
	    }
	    else
	    {
	        return $fields;
	    }
	}
  
  	// 05. Get information about field
  	public function get_field($field_id)
    {
    	$fieldModel = Factory::getApplication()->bootComponent('com_fields')->getMVCFactory()->createModel('Field', 'Administrator', ['ignore_request' => true]);
        
      	// Sets context, fieldparams, assigned_cat_ids
        $field = $fieldModel->getItem($field_id);
      
      	return $field;
    }
  
  	// 06. Get information about field group
  	public function get_field_group($group_id)
    {
    	$groupModel = Factory::getApplication()->bootComponent('com_fields')->getMVCFactory()->createModel('Group', 'Administrator', ['ignore_request' => true]);
        
      	// Sets context, params
        $group = $groupModel->getItem($group_id);
      
      	return $group;
    }
  
  	// 07. Get all field groups for context
  	public function get_field_groups($context)
    {
    	$conditions = array(
        	array('context', '=', $context),
        	array('state', '=', 1),
        );
      
      	$db = new TDb('fields_groups');
        $groups = $db->get_column(array('select' => 'id', 'conditions' => $conditions, 'order' => 'ordering ASC'));
      
      	return $groups ? $groups : [];
    }
  
  	// 08. Get $this->item->jcfields by field groups for items
  	public function render_fields_by_group($context, $item, $fields = null)
    {
    	if (!$fields)
        {
            $fields = FieldsHelper::getFields($context, $item, true);
        }
        
        $groups = [];
      	$output = [];
      	foreach ($fields as $field)
        {
          	if (!isset($groups[$field->group_id]))
            {
            	$groups[$field->group_id] = array();
            }
          	
          	$groups[$field->group_id][] = $field;
        }

      	foreach ($groups as $group_id => $group)
        {
        	$output[$group_id] = FieldsHelper::render($context, 'fields.render', ['item' => $item, 'context' => $context, 'fields' => $group]);
        }
      
      	return $output;
    }
  
  	// 09. Render fields by automatic display (where to display)
  	public function render_fields_by_display($context, $item)
    {
		Factory::getApplication()->triggerEvent('onContentPrepare', [$context, &$item, &$item->params]);
		
		$output = new \stdClass;

      	$results = Factory::getApplication()->triggerEvent('onContentAfterTitle', [$context, &$item, &$item->params]);
      	$output->afterDisplayTitle = trim(implode("\n", $results));

      	$results = Factory::getApplication()->triggerEvent('onContentBeforeDisplay', [$context, &$item, &$item->params]);
      	$output->beforeDisplayContent = trim(implode("\n", $results));

      	$results = Factory::getApplication()->triggerEvent('onContentAfterDisplay', [$context, &$item, &$item->params]);
      	$output->afterDisplayContent = trim(implode("\n", $results));

      	return $output;
    }

    // 10. Render fields by Field Id
    public function render_fields_by_id($context, $item, $field_id)
    {
        $fields = FieldsHelper::getFields($context, $item, true);
        foreach ($fields as $field)
        {
            if ($field->id == $field_id)
            {
                $array[] = $field;
                $output = FieldsHelper::render($context, 'fields.render', ['item' => $item, 'context' => $context, 'fields' => $array]);

                return $output;
            }
        }
    }
  
  	// 11. Get label of custom field from id
  	public function get_custom_field_label($id)
    {
    	$db = new TDb('fields');
        return $db->get_single(array('id' => $id, 'select' => 'label'));
    }
}