static function getPropertySupport($field_type, $iscore, $spname = null) { static $fi = null; if ($fi === null) { $fi = FlexicontentFields::getPropertySupport_BuiltIn(); } static $cparams = null; if ($cparams === null) { $cparams = JComponentHelper::getParams('com_flexicontent'); } static $support_ft = array(); if (isset($support_ft[$field_type])) { return !$spname ? $support_ft[$field_type] : $support_ft[$field_type]->{$spname}; } // Existing fields with field type if ($field_type) { // Make sure that the Joomla plugin that implements the type of current flexi field, has been imported //JPluginHelper::importPlugin('flexicontent_fields', $field_type); FLEXIUtilities::call_FC_Field_Func($iscore ? 'core' : $field_type, null, null); // Get Methods implemented by the field $classname = 'plgFlexicontent_fields' . ($iscore ? 'core' : $field_type); $classmethods = get_class_methods($classname); // SEARCH/FILTER related properties $supportsearch = $iscore ? in_array($field_type, $fi->core_search) : in_array('onIndexSearch', $classmethods); $supportfilter = $iscore ? in_array($field_type, $fi->core_filters) : in_array('onDisplayFilter', $classmethods); $supportadvsearch = $iscore ? in_array($field_type, $fi->core_advsearch) : in_array('onIndexAdvSearch', $classmethods); $supportadvfilter = $iscore ? in_array($field_type, $fi->core_advfilters) : in_array('onAdvSearchDisplayFilter', $classmethods); // ITEM FORM related properties $supportuntranslatable = !$iscore || $field_type == 'maintext'; $supportvalueseditable = !$iscore || $field_type == 'maintext'; $supportformhidden = !$iscore || $field_type == 'maintext'; $supportedithelp = !$iscore || $field_type == 'maintext'; // New fields without field type } else { // SEARCH/FILTER related properties $supportsearch = false; $supportfilter = false; $supportadvsearch = false; $supportadvfilter = false; // ITEM FORM related properties $supportuntranslatable = !$iscore; $supportvalueseditable = !$iscore; $supportformhidden = !$iscore; $supportedithelp = !$iscore; } // This property is usable only when Translation Groups are enabled $supportuntranslatable = $supportuntranslatable && $cparams->get('enable_translation_groups'); $support_ft[$field_type] = new stdClass(); $support_ft[$field_type]->supportsearch = $supportsearch; $support_ft[$field_type]->supportfilter = $supportfilter; $support_ft[$field_type]->supportadvsearch = $supportadvsearch; $support_ft[$field_type]->supportadvfilter = $supportadvfilter; $support_ft[$field_type]->supportuntranslatable = $supportuntranslatable; $support_ft[$field_type]->supportvalueseditable = $supportvalueseditable; $support_ft[$field_type]->supportformhidden = $supportformhidden; $support_ft[$field_type]->supportedithelp = $supportedithelp; return !$spname ? $support_ft[$field_type] : $support_ft[$field_type]->{$spname}; }