/** * (non-PHPdoc) * @see ModelForm::setAttributes() */ public function setAttributes($values, $safeOnly = true) { $nonDyanmicAttributeValues = array(); foreach ($values as $name => $value) { if ($this->doesNameResolveNameForDelimiterSplit($name)) { $this->{$name} = $value; } else { $nonDyanmicAttributeValues[$name] = $value; } } //Dropdowns can be searched on as mulit-selects. This below foreach resolves the issue of needing to show //multiple values in the dropdown. foreach ($values as $name => $value) { if ($value != null && $this->model->isAttribute($name) && $this->model->isRelation($name)) { $relationModelClassName = $this->model->getRelationModelClassName($name); if ($relationModelClassName == 'CustomField' || is_subclass_of($relationModelClassName, 'CustomField') && isset($value['value']) && is_array($value['value']) && count($value['value']) > 0) { $this->model->{$name}->value = $value['value']; } } } parent::setAttributes($nonDyanmicAttributeValues, $safeOnly); }
/** * Override to handle userStatus validation * @param User | ModelForm $model * @param string $postVariableName */ protected function attemptToValidateAjaxFromPost($model, $postVariableName) { if (isset($_POST['ajax']) && $_POST['ajax'] == 'edit-form') { $model->setAttributes($_POST[$postVariableName]); $model->validate(); $userStatus = UserStatusUtil::makeByPostData($_POST[$postVariableName]); if ($model instanceof User) { if ($userStatus == null) { $userStatus = UserStatusUtil::makeByUser($model); } Yii::app()->licenseManager->resolveValidationOnCreateOrEditUser($model, $userStatus); } elseif ($model instanceof ModelForm) { if ($userStatus == null) { $userStatus = UserStatusUtil::makeByUser($model->getModel()); } Yii::app()->licenseManager->resolveValidationOnCreateOrEditUser($model->getModel(), $userStatus); } $errorData = ZurmoActiveForm::makeErrorsDataAndResolveForOwnedModelAttributes($model); echo CJSON::encode($errorData); Yii::app()->end(0, false); } }