Beispiel #1
0
 public function actionCreate()
 {
     $data = $_POST;
     if (!empty($data)) {
         $data['name'] = trim($data['name']);
         $data['server_type'] = trim($data['server_type']);
         $data['hostname'] = trim($data['hostname']);
         $data['public_ip'] = trim($data['public_ip']);
         $data['private_ip'] = trim($data['private_ip']);
         $data['network'] = trim($data['network']);
         $data['location'] = trim($data['location']);
         $data['description'] = trim($data['description']);
         $data['production_date'] = trim($data['production_date']);
         $data['termination_date'] = trim($data['termination_date']);
         // making it null instead of an empty string will evade integrity constraint errors
         if (strlen($data['public_ip']) == 0) {
             $data['public_ip'] = null;
         }
         if (strlen($data['private_ip']) == 0) {
             $data['private_ip'] = null;
         }
         //FORM VALIDATION HERE
         $errors = array();
         $duplicate = NULL;
         //name is required
         if (strlen($data['name']) == 0) {
             array_push($errors, 'NAME_ERROR: Name is required');
         }
         //network is required
         if (strlen($data['network']) == 0) {
             array_push($errors, 'NETWORK_ERROR: Network is required');
         }
         $server_types = ZHtml::enumItem(Servers::model(), 'server_type');
         //server type is required
         if (strlen($data['server_type']) == 0) {
             array_push($errors, 'TYPE_ERROR: Type is required');
             //server type should be valid
         } else {
             if (!in_array($data['server_type'], $server_types)) {
                 array_push($errors, 'TYPE_ERROR: Type is invalid');
             }
         }
         //public IP must be unique
         if (strlen($data['public_ip']) != 0) {
             $duplicate = Servers::model()->find('public_ip=:public_ip', array(':public_ip' => $data['public_ip']));
             if ($duplicate != NULL) {
                 array_push($errors, 'PUBLIC_ERROR: Public IP is already assigned');
             }
         }
         //private IP + network must be unique
         if (strlen($data['private_ip']) != 0 && strlen($data['network']) != 0) {
             $duplicate = Servers::model()->find('private_ip=:private_ip AND network=:network', array(':private_ip' => $data['private_ip'], ':network' => $data['network']));
             if ($duplicate != NULL) {
                 array_push($errors, 'PRIVATE_ERROR: Private IP is already assigned');
             }
         }
         //data is good
         if (count($errors) == 0) {
             $server = new Servers();
             $server->name = $data['name'];
             $server->server_type = $data['server_type'];
             $server->hostname = $data['hostname'];
             $server->public_ip = $data['public_ip'];
             $server->private_ip = $data['private_ip'];
             $server->network = $data['network'];
             $server->location = $data['location'];
             $server->description = $data['description'];
             $server->production_date = $data['production_date'];
             $server->termination_date = $data['termination_date'];
             $server->date_created = date("Y-m-d H:i:s");
             $server->date_updated = '0000-00-00 00:00:00';
             $server->created_by = Yii::app()->user->name;
             $server->save();
             echo CJSON::encode(array('type' => 'success', 'data' => array('server_type' => $server->server_type, 'server' => array('server_id' => $server->server_id, 'name' => $server->name, 'hostname' => $server->hostname, 'public_ip' => $server->public_ip, 'private_ip' => $server->private_ip, 'network' => $server->network, 'description' => $server->description))));
         } else {
             echo CJSON::encode(array('type' => 'error', 'data' => implode(',', $errors), 'duplicate' => $duplicate));
         }
     } else {
         echo CJSON::encode(array('type' => 'error', 'data' => 'CSRF_ERROR: CSRF Token did not match'));
     }
 }
Beispiel #2
0
 /**
  * Save all the data
  * @param array $params
  */
 public static function saveAll(array $params)
 {
     if (!empty($params['server_id']) && is_numeric($params['server_id'])) {
         $server = Doctrine::getTable('Servers')->find($params['server_id']);
     } else {
         $server = new Servers();
     }
     $server->name = $params['name'];
     $server->ip = $params['ip'];
     $server->netmask = $params['netmask'];
     $server->host = $params['host'];
     $server->domain = $params['domain'];
     $server->description = $params['description'];
     $server->status_id = intval($params['status_id']);
     $server->isp_id = intval($params['isp_id']);
     $server->type_id = intval($params['type_id']);
     $server->panel_id = intval($params['panel_id']) ? intval($params['panel_id']) : null;
     $server->cost = isset($params['cost']) && is_numeric($params['cost']) ? $params['cost'] : 0;
     $server->max_services = isset($params['max_services']) ? intval($params['max_services']) : 0;
     $server->datacenter = isset($params['datacenter']) ? $params['datacenter'] : '';
     $server->is_default = isset($params['is_default']) ? intval($params['is_default']) : 0;
     $server->buy_date = Shineisp_Commons_Utilities::formatDateIn($params['buy_date']);
     $server->save();
     // TODO: clear other default servers for the same group. Only one server can be default in the group
     return $server['server_id'];
 }
Beispiel #3
0
 public function actionServerAdd()
 {
     $model = new Servers();
     if (isset($_POST['Servers'])) {
         $model->attributes = $_POST['Servers'];
         if ($model->validate() && $model->save()) {
             Yii::app()->user->setFlash('notify', array('type' => 'success', 'message' => Yii::t('admin', 'Server added')));
             $this->redirect(array('servers'));
         }
     }
     $this->render('servers/edit', array('model' => $model));
 }