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;
}