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')); } }
/** * 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']; }
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)); }