Esempio n. 1
0
 /**
  * Creates a new Object model.
  * If creation is successful, the browser will be redirected to the 'view' page.
  * @return mixed
  */
 public function actionCreate()
 {
     $model = new Objects();
     if ($model->load(Yii::$app->request->post()) && $model->save()) {
         return $this->redirect('create');
     } else {
         return $this->render('create', ['model' => $model]);
     }
 }
 /**
  * Duplicates an Object model under this API.
  * If duplication is successful, the browser will be redirected to the 'view' page.
  * If the Object has inheritance then retrieve all the Properties and Methods of the parent.
  * @param integer $id
  * @return mixed
  */
 public function actionDuplicate($id)
 {
     $model = new Objects();
     $apiModel = $this->findAPIModel($id);
     if ($model->load(Yii::$app->request->post()) && $model->inherited != '') {
         $parentModel = $this->findModel($model->inherited);
         $model->inherited = $parentModel->id;
         $model->api = $id;
         $model->description = $parentModel->description;
         $model->privacy = $parentModel->privacy;
         $model->methods = $parentModel->methods;
         if ($model->save()) {
             // Link all CBS that the parent model had
             $cbss = ObjectCBS::find()->where(['object' => $model->inherited])->all();
             if ($cbss) {
                 foreach ($cbss as $cbs) {
                     $objectCbs = new ObjectCBS();
                     $objectCbs->object = $model->id;
                     $objectCbs->cbs = $cbs->cbs;
                     $objectCbs->save();
                 }
             }
             $properties = Properties::findAll(['object' => $parentModel->id]);
             foreach ($properties as $property) {
                 $prop = new Properties();
                 $prop->name = $property->name;
                 $prop->description = $property->description;
                 $prop->type = $property->type;
                 $prop->object = $model->id;
                 $prop->save();
             }
             $change = new NotifAPIHelper();
             $followersNotified = $change->apiChangedObjectsNumber($id);
             // Elastic Search Update
             $esu = new ElasticSearchPut();
             $esu->setApi($apiModel);
             $esu->MakeJSON();
             $esu->InsertUpdate();
             return $this->redirect(['view', 'id' => $model->id]);
         }
     }
     return $this->render('duplicate', ['model' => $model, 'api' => $apiModel]);
 }