示例#1
0
 /**
  * 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));
 }