/** * 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($id) { /* load url */ $model = $this->loadModel($id); /* load a basic meta-name {title, description, keywords}, if data NULL, declare */ $modelTitle = YiiseoMain::model()->findByAttributes(array("url" => $model->id, 'name' => "title")); if ($modelTitle === null) { $modelTitle = new YiiseoMain(); $modelTitle->name = "title"; } /* load keywords */ $modelKeywords = YiiseoMain::model()->findByAttributes(array("url" => $model->id, 'name' => "keywords")); if ($modelKeywords === null) { $modelKeywords = new YiiseoMain(); $modelKeywords->name = "keywords"; } $modelDescription = YiiseoMain::model()->findByAttributes(array("url" => $model->id, 'name' => "description")); if ($modelDescription === null) { $modelDescription = new YiiseoMain(); $modelDescription->name = "description"; } /* load else meta-name */ $crt = new CDbCriteria(); $crt->condition = "url = :param"; $crt->params = array(":param" => $id); $crt->addNotInCondition("name", array("title", "description", "keywords")); $modelOther = YiiseoMain::model()->findAll($crt); if (isset($_POST['YiiseoUrl'])) { $model->attributes = $_POST['YiiseoUrl']; /* update url */ if ($model->save()) { /* save or update MetaName */ if (isset($_POST['YiiseoMain'])) { $items = $_POST['YiiseoMain']; foreach ($items as $name => $item) { if (isset($item['id'])) { $mod = YiiseoMain::model()->findByPk($item['id']); } else { $mod = new YiiseoMain(); $mod->name = $name; $mod->url = $model->id; } $mod->attributes = $item; $mod->save(); } } /* save or update MetaProperty */ if (isset($_POST['YiiseoProperty'])) { $propertys = $_POST['YiiseoProperty']; foreach ($propertys as $property) { if (isset($property['id'])) { $modelP = YiiseoProperty::model()->findByPk($property['id']); } else { $modelP = new YiiseoProperty(); $modelP->url = $model->id; } $modelP->attributes = $property; $modelP->save(); } } $this->redirect(array("index")); } } $this->render('update', array('model' => $model, 'modelTitle' => $modelTitle, "modelKeywords" => $modelKeywords, "modelDescription" => $modelDescription, "modelOther" => $modelOther)); }