$layout = FormLayout::model()->findByAttributes(array('model' => ucfirst($modelName), 'defaultView' => 1)); if (isset($layout)) { echo '<div class="x2-layout">'; $fields = array(); // remove this later, once all models extend X2Models if (method_exists($model, 'getFields')) { foreach ($model->fields as $fieldModel) { $fields[$fieldModel->fieldName] = $fieldModel; } } else { foreach (Fields::model()->findAllByAttributes(array('modelName' => ucfirst($modelName))) as $fieldModel) { $fields[$fieldModel->fieldName] = $fieldModel; } } $layoutData = json_decode($layout->layout, true); $formSettings = ProfileChild::getFormSettings($modelName); if (isset($layoutData['sections']) && count($layoutData['sections']) > 0) { $fieldPermissions = array(); if (!empty(Yii::app()->params->roles)) { $rolePermissions = Yii::app()->db->createCommand()->select('fieldId, permission')->from('x2_role_to_permission')->join('x2_fields', 'x2_fields.modelName="' . $modelName . '" AND x2_fields.id=fieldId AND roleId IN (' . implode(',', Yii::app()->params->roles) . ')')->queryAll(); foreach ($rolePermissions as &$permission) { if (!isset($fieldPermissions[$permission['fieldId']]) || $fieldPermissions[$permission['fieldId']] < (int) $permission['permission']) { $fieldPermissions[$permission['fieldId']] = (int) $permission['permission']; } } } $i = 0; foreach ($layoutData['sections'] as &$section) { // set defaults if (!isset($section['title'])) { $section['title'] = '';
public static function setFormSettings($formSettings, $formName = null) { if (isset($formName)) { $fullFormSettings = ProfileChild::getFormSettings(); $fullFormSettings[strtolower($formName)] = $formSettings; Yii::app()->params->profile->formSettings = json_encode($fullFormSettings); // encode array in JSON } else { Yii::app()->params->profile->formSettings = json_encode($formSettings); // encode array in JSON } return Yii::app()->params->profile->save(); }