| Current Path : /home/juvelize/saulnois/tmp/install_695d2cf0b4957/src/ |
| 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'));
}
}