iaField::_getFieldgroups PHP Method

_getFieldgroups() private method

private _getFieldgroups ( $aco = null, $itemName = null, $aWhere = '', &$itemData, $params = [] )
    private function _getFieldgroups($aco = null, $itemName = null, $aWhere = '', &$itemData, $params = array())
    {
        $aco = $aco ? $aco : (iaCore::ACCESS_ADMIN == $this->iaCore->getAccessType() ? 'admin' : $this->iaView->name());
        $itemName = $itemName ? $itemName : $this->iaView->get('extras');
        $_params = array('page' => $aco, 'where' => $aWhere, 'filter' => '');
        foreach ($_params as $key => $value) {
            isset($params[$key]) || ($params[$key] = $value);
        }
        $fields = $this->filter($itemData, $itemName, $params);
        if (empty($fields)) {
            return array();
        }
        // get all available groups for item
        $groups = $this->iaDb->assoc(array('id', 'name', 'order', 'collapsible', 'collapsed', 'tabview', 'tabcontainer'), "`item` = '{$itemName}' ORDER BY `order`", self::getTableGroups());
        foreach ($fields as $fieldInfo) {
            if (self::PICTURES == $fieldInfo['type']) {
                $fieldInfo['values'] = empty($fieldInfo['values']) ? array() : explode(',', $fieldInfo['values']);
            }
            if (in_array($fieldInfo['type'], array(self::CHECKBOX, self::COMBO, self::RADIO))) {
                if ($fieldInfo['type'] == self::CHECKBOX) {
                    $fieldInfo['default'] = explode(',', $fieldInfo['default']);
                }
                $values = explode(',', $fieldInfo['values']);
                $fieldInfo['values'] = array();
                if ($values) {
                    foreach ($values as $v) {
                        $k = 'field_' . $fieldInfo['name'] . '_' . $v;
                        $fieldInfo['values'][$v] = iaLanguage::get($k);
                    }
                }
            }
            isset($fieldInfo['class']) || ($fieldInfo['class'] = 'fieldzone');
            if ($fieldInfo['plans']) {
                foreach (explode(',', $fieldInfo['plans']) as $p) {
                    $fieldInfo['class'] .= sprintf(' plan_%d ', $p);
                }
            }
            if (empty($fieldInfo['fieldgroup_id']) || empty($groups[$fieldInfo['fieldgroup_id']])) {
                $fieldInfo['fieldgroup_id'] = '___empty___';
                // emulate tab to avoid isset checks
                $groups[$fieldInfo['fieldgroup_id']]['name'] = $fieldInfo['fieldgroup_id'];
                $groups[$fieldInfo['fieldgroup_id']]['tabview'] = '';
                $groups[$fieldInfo['fieldgroup_id']]['tabcontainer'] = '';
                $groups[$fieldInfo['fieldgroup_id']]['collapsible'] = false;
                $groups[$fieldInfo['fieldgroup_id']]['collapsed'] = false;
            }
            $groups[$fieldInfo['fieldgroup_id']]['fields'][$fieldInfo['id']] = $fieldInfo;
        }
        $iaAcl = $this->iaCore->factory('acl');
        // clear groups that don't have any fields
        foreach ($groups as $key => $group) {
            if (!isset($group['fields']) || !$iaAcl->checkAccess('fieldgroup', $group['name'])) {
                unset($groups[$key]);
            } else {
                $groups[$key]['description'] = iaLanguage::get('fieldgroup_description_' . $itemName . '_' . $group['name'], '');
            }
        }
        return $groups;
    }