Ejemplo n.º 1
0
Archivo: Os.php Proyecto: scalr/scalr
 /**
  * @param string $id
  * @param string $status
  * @param string $name
  * @param string $family
  * @param string $generation
  * @param string $version
  * @throws Exception
  */
 public function xSaveAction($id, $status, $name, $family, $generation, $version = '')
 {
     $os = Os::findPk($id);
     if (!$os) {
         $os = new Os();
         $os->isSystem = 0;
         $os->id = $id;
     }
     $validator = new Validator();
     $validator->validate($id, 'id', Validator::NOEMPTY);
     $validator->validate($name, 'name', Validator::NOEMPTY);
     $validator->validate($family, 'family', Validator::NOEMPTY);
     $validator->validate($generation, 'generation', Validator::NOEMPTY);
     //check by name, family, generation,version
     $criteria = [];
     $criteria[] = ['name' => $name];
     $criteria[] = ['family' => $family];
     $criteria[] = ['generation' => $generation];
     $criteria[] = ['version' => $version];
     if ($os->id) {
         $criteria[] = ['id' => ['$ne' => $os->id]];
     }
     if (Os::findOne($criteria)) {
         $validator->addError('name', 'Operating system with such name, family, generation and version already exists');
     }
     if (!$validator->isValid($this->response)) {
         return;
     }
     $os->status = $status;
     if ($os->isSystem != 1) {
         $os->name = $name;
         $os->family = $family;
         $os->generation = $generation;
         $os->version = $version;
     }
     $os->save();
     $result = get_object_vars($os);
     $result['used'] = $os->getUsed();
     $this->response->data(['os' => $os]);
     $this->response->success('Operating system successfully saved');
 }