public function actionUpdate($id = null) { $model = null; if ($id) { $new = false; $this->pageTitle = 'Редактировать объект'; if (Yii::app()->user->isGuest) { $this->redirect(Yii::app()->createAbsoluteUrl('new_object')); } $model = Objects::model()->findByPk($id, 'author=' . Yii::app()->user->id); if (!$model) { $this->redirect(Yii::app()->createAbsoluteUrl('new_object')); } $old_mesto = $model->address; } if (!$model) { $new = true; $this->pageTitle = 'Новый объект - ' . Yii::app()->name; $model = new Objects(); } if (isset($_POST['Objects'])) { $model->attributes = $_POST['Objects']; if (!$model->categories_ar || !is_array($model->categories_ar)) { $model->categories_ar = array(); $model->categorie = null; } else { $model->categorie = $model->categories_ar[0]; } // Uncomment the following line if AJAX validation is needed if (isset($_POST['ajax']) && $_POST['ajax'] === 'objects-form') { $errors = CActiveForm::validate($model); if ($errors !== '[]') { $errors = CJSON::decode($errors); echo CJSON::encode(array('success' => false, 'message' => $errors)); Yii::app()->end(); } if ($new || !empty($old_mesto) && $old_mesto != $model->address) { $words = explode(',', $model->address, 2); if (!empty($words)) { $city = trim($words[0]); $trueCity = City::model()->find('LOWER(title)=:title or LOWER(alternative_title)=:title', array(':title' => MHelper::String()->toLower($city))); if (!$trueCity) { $trueCity = City::addNewCity($city); } if ($trueCity) { $model->city_id = $trueCity->id; } } if (isset($words[1])) { $words = explode(',', $words[1], 2); if (isset($words[0]) && !empty($words[0])) { $model->street = trim($words[0]); } if (isset($words[1]) && !empty($words[1])) { $model->dom = trim($words[1]); } } } } $model->status = Objects::STATUS_ACTIVE; if ($model->save()) { if (isset(Yii::app()->session['deleteObjectsFiles'])) { $sessAr = unserialize(Yii::app()->session['deleteObjectsFiles']); if (isset($sessAr['id']) && $sessAr['id'] == $model->id && isset($sessAr['files']) && is_array($sessAr['files'])) { $files = $model->images; if ($files) { foreach ($files as $file) { if (in_array($file->id, $sessAr['files'])) { $file->delete(); } } } } } $model->addDropboxFiles($this->uploadsession); Yii::app()->session->remove($this->uploadsession); if (isset(Yii::app()->session['deleteObjectsFiles'])) { unset(Yii::app()->session['deleteObjectsFiles']); } $objects_url = Yii::app()->createAbsoluteUrl('/fastreview/item', array('id' => $model->id, 'dash' => '-', 'itemurl' => $model->url)); if (Yii::app()->request->isAjaxRequest) { echo CJSON::encode(array('success' => true, 'message' => array('url' => $objects_url))); Yii::app()->end(); } else { $this->redirect($objects_url); } } } $categories_ar[] = $model->categorie; $this->render('_form', array('model' => $model, 'categories_ar' => $categories_ar)); }
/** * Updates a particular model. * If update is successful, the browser will be redirected to the 'view' page. * @param integer $id the ID of the model to be updated */ public function actionUpdate($new = false) { if ($new === true){ $model = new Objects; } else { $id = (int)$_GET['id']; $model=$this->loadModel($id); if($model->verified == true){ $this->pageTitle = 'Объекты'; $this->active_link = 'objects'; } else if($model->verified == false){ $this->pageTitle = 'Новые объекты'; $this->active_link = 'new_objects'; } $old_mesto = $model->address; } // Uncomment the following line if AJAX validation is needed $this->performAjaxValidation($model, 'objects-form'); if(isset($_POST['Objects'])) { $typeAttributes = Yii::app()->getRequest()->getPost('EavOptions', array()); if(!empty($typeAttributes)){ $er = $ers = null; foreach ($typeAttributes as $attribute => $value) { if (null == $value || (is_array($value) && empty($value))) { continue; } //сохраняем значения if(!is_array($value)){ $modelE = new EavProductVariant(); $er = $modelE->store($attribute, $value, $model, $forcheck = true); if($er == false){ $ers = $modelE->errors; break; } } else { foreach ($value as $val) { $modelE = new EavProductVariant(); $er = $modelE->store($attribute, $val, $model, $forcheck = true); if($er == false){ $ers = $modelE->errors; break 2; } } } } if(!empty($ers)){ $this->addFlashMessage($ers,'error'); $this->refresh(); } } $model->attributes=$_POST['Objects']; if(!$model->categories_ar || !is_array($model->categories_ar)){ $model->categories_ar = array(); $model->categorie = null; } else { $model->categorie = $model->categories_ar[0]; } if($new || (!empty($old_mesto) && $old_mesto != $model->address)){ $words = explode(',',$model->address,2); if(!empty($words)){ $city = trim($words[0]); $trueCity = City::model()->find('LOWER(title)=:title or LOWER(alternative_title)=:title',array(':title'=>MHelper::String()->toLower($city))); if(!$trueCity) $trueCity = City::addNewCity($city); if($trueCity) $model->city_id = $trueCity->id; } if(isset($words[1])){ $words = explode(',',$words[1],2); if(isset($words[0]) && !empty($words[0])){ $model->street = trim($words[0]); } if(isset($words[1]) && !empty($words[1])){ $model->dom = trim($words[1]); } } } if($model->saveData(array(), $typeAttributes, array(), array(), $model->video)){ if(isset(Yii::app()->session['deleteObjectsFiles'])) { $sessAr = unserialize(Yii::app()->session['deleteObjectsFiles']); if(isset($sessAr['id']) && $sessAr['id'] == $model->id && isset($sessAr['files']) && is_array($sessAr['files'])) { $files = $model->images; if($files) { foreach ($files as $file) { if(in_array($file->id,$sessAr['files'])){ $file->delete(); } } } } } $model->addDropboxFiles($this->uploadsession); Yii::app()->session->remove($this->uploadsession); if(isset(Yii::app()->session['deleteObjectsFiles'])) unset(Yii::app()->session['deleteObjectsFiles']); if(Yii::app()->request->isAjaxRequest){ } else { $text = $new? "Объект {$model->title} добавлен" : "Объект {$model->title} отредактирован"; $this->addFlashMessage($text,'success'); if($model->verified == true) { $this->redirect(Yii::app()->createAbsoluteUrl('catalog/admin/objects')); } else if($model->verified == false){ $this->redirect(Yii::app()->createAbsoluteUrl('catalog/admin/objects/new_objects')); } } } else { $this->addFlashMessage($model->errors,'error'); $this->refresh(); } } $categories_ar[] = $model->categorie; $video = $model->objectsVideo; $this->render('update',array( 'model'=>$model, 'categories_ar'=>$categories_ar, 'video'=>$video, )); }