コード例 #1
0
ファイル: user.php プロジェクト: quickpacket/noclayer
 private function insertStaticField($name, $type, $tab, $device, $static)
 {
     $field = new Model_Device_Fieldset();
     $field->name = $name;
     $field->type = $type[0];
     $field->static = $static;
     $field->deviceID = $device->id;
     $field->tab = $tab;
     if ($type[1] != null) {
         $field->extra = $type[1];
     }
     if ($type[2] != null) {
         $field->value = $type[2];
     }
     $field->save();
     if ($type == 'network') {
         $prop = array('fieldsetID' => $field->id, 'deviceID' => $field->device->id, 'nics' => 0, 'vports' => 0, 'ports' => 0, 'uplinks' => 0, 'config_data' => '', 'type' => $this->net_type);
         $network = new Model_Device_Network($prop);
         //$network->save();
     }
     return true;
 }
コード例 #2
0
ファイル: image.php プロジェクト: quickpacket/noclayer
 public function action_upload()
 {
     $out = array('status' => 'no');
     $val = \Validation::forge();
     $val->add_field('key2', 'Element id', 'required|min_length[1]|max_length[20]');
     $val->add_field('key1', 'Device id', 'required|min_length[1]|max_length[20]');
     $val->add_field('key3', 'Template or device', 'required|min_length[1]|max_length[20]');
     if ($val->run()) {
         $uploaddir = DOCROOT . 'images/uploads/';
         $name = basename($_FILES['image']['name']);
         $uploadfile = $uploaddir . $name;
         if (move_uploaded_file($_FILES['image']['tmp_name'], $uploadfile)) {
             if ($val->validated('key3') != 'true') {
                 $this->tmpl = false;
                 $element = Model_Device_Fieldset::find($val->validated('key2'));
             } else {
                 $this->tmpl = true;
                 $element = Model_Device_Template_Field::find($val->validated('key2'));
             }
             if ($element) {
                 $imageOnHdd = \Image::forge()->load($uploadfile);
                 $sizes = $imageOnHdd->sizes();
                 //add new image in database
                 $props = array('name' => $name, 'elementID' => $element->id, 'type' => $this->sizeType($sizes), 'width' => 0, 'height' => 0);
                 if ($this->tmpl) {
                     $img = new Model_Device_Template_Image($props);
                     $prefix = 'temp';
                 } else {
                     $prefix = '';
                     $img = new Model_Image($props);
                 }
                 $new_width = $sizes->width >= 1000 ? 1000 : $sizes->width;
                 $new_height = $sizes->height >= 750 ? 750 : $sizes->height;
                 //resize original image 1000x1000px to folder > public/images
                 //make thumb 135x135px to folder public/images/thumb
                 if ($img->save()) {
                     $imageOnHdd->resize($new_width, $new_height, true, false)->save(DOCROOT . 'images/' . $prefix . $img->id . '.png')->config('quality', 70)->crop_resize(85, 85, true, false)->save(DOCROOT . 'images/tumb/' . $prefix . $img->id . '.png');
                     $resized = \Image::forge()->load(DOCROOT . 'images/' . $prefix . $img->id . '.png')->sizes();
                     $img->width = $resized->width;
                     $img->height = $resized->height;
                     $img->save();
                     unlink($uploadfile);
                     $out = array('id' => $img->id, 'type' => $img->type, 'status' => 'ok', 'h' => $img->height, 'w' => $img->width);
                 }
             }
         }
     }
     echo json_encode($out);
 }
コード例 #3
0
ファイル: element.php プロジェクト: quickpacket/noclayer
 public function action_rename()
 {
     if ($_POST) {
         $this->val->add_field('fid', 'fieldset id', 'required|min_length[1]|max_length[20]');
         $this->val->add_field('name', 'fieldset new name', 'required|min_length[1]|max_length[250]');
         if ($this->val->run()) {
             $field = Model_Device_Fieldset::find($this->val->validated('fid'));
             $status = false;
             if ($field) {
                 $field->name = $this->val->validated('name');
                 $status = $field->save();
             }
             $a = array('status' => $status);
             echo json_encode($a);
         }
     }
 }
コード例 #4
0
ファイル: rack.php プロジェクト: quickpacket/noclayer
 public function action_remove()
 {
     $out = array();
     $out['stat'] = false;
     if ($_POST) {
         $val = \Validation::forge('rack');
         $val->add_field('rid', 'rack id', 'required|min_length[1]|max_length[20]');
         if ($val->run()) {
             $rack = Model_Rack::find($val->validated('rid'));
             if ($rack) {
                 $devices = $rack->device;
                 //delete devices
                 foreach ($devices as $dev) {
                     //remove cables
                     $cables = Model_Cable::find()->where('dev1', $dev->id)->or_where('dev2', $dev->id)->get();
                     foreach ($cables as $cab) {
                         $cab->delete();
                     }
                     //get all device field and delete him
                     $dev_fields = Model_Device_Fieldset::find()->where('deviceID', $dev->id)->get();
                     //we must go with foreach becouse image deleting from hdd
                     foreach ($dev_fields as $dev_field) {
                         $dev_field->delete();
                     }
                     $dev->delete();
                 }
                 //shift room position
                 $ord = $rack->room_pos;
                 $room = $rack->room;
                 //delete rack
                 $rack->delete();
                 $out['stat'] = true;
                 //set room_pos-- on racks with larger room_pos
                 $racks = Model_Rack::find()->where('room', $room)->where('room_pos', '>', $ord)->get();
                 foreach ($racks as $rack) {
                     $rack->room_pos -= 1;
                     $rack->save();
                 }
             }
         }
     }
     echo json_encode($out);
 }
コード例 #5
0
ファイル: power.php プロジェクト: quickpacket/noclayer
 public function before()
 {
     parent::before();
     if ($_POST) {
         $val = \Validation::forge('power');
         $val->add_field('eid', 'template id', 'required|min_length[1]|max_length[20]');
         $val->add_field('tmpl', 'template or realdevice', 'required|min_length[1]|max_length[20]');
         if ($val->run()) {
             if ($val->validated('tmpl') == "true") {
                 $this->tmpl = true;
                 $this->field = Model_Device_Template_Field::find($val->validated('eid'));
                 //$this->TempsetTypeOfDevice();
             } else {
                 $this->tmpl = false;
                 $this->field = Model_Device_Fieldset::find($val->validated('eid'));
                 //$this->setTypeOfDevice();
             }
         }
     }
 }
コード例 #6
0
ファイル: device.php プロジェクト: quickpacket/noclayer
 public function action_window($id = null)
 {
     if ($id) {
         $val = \Validation::forge();
         $val->add_field('tab', 'Device menu tab id', 'required|min_length[1]|max_length[2]');
         if ($val->run()) {
             $device = Model_Device::find($id);
             if ($device) {
                 $data['device'] = $device;
                 $data['cables'] = array();
                 switch ($device->type) {
                     /*
                      //device type not set
                      case 0:
                      return \Response::forge(\View::forge('device/window/notype',$data));
                     
                      break;
                      //server
                     */
                     default:
                         switch ($val->validated('tab')) {
                             case 4:
                                 $data['notes'] = Model_Notes::find()->where('deviceID', $device->id)->get();
                                 return \Response::forge(\View::forge('device/window/notes', $data));
                                 break;
                             case 2:
                                 $data['cables'] = Model_Cable::find()->where('dev1', $device->id)->or_where('dev2', $device->id)->get();
                             default:
                                 $fields = Model_Device_Fieldset::find()->where('deviceID', $device->id)->where('tab', $val->validated('tab'))->get();
                                 $data['fields'] = $fields;
                                 $data['device'] = $device;
                                 return \Response::forge(\View::forge('device/window/hardware', $data));
                                 break;
                         }
                         break;
                 }
             }
         }
         //print_r($_POST);
     }
 }
コード例 #7
0
ファイル: pdu.php プロジェクト: quickpacket/noclayer
 public function insertStaticField($name, $type, $tab, $device, $static)
 {
     $field = new Model_Device_Fieldset();
     $field->name = $name;
     $field->type = $type;
     $field->static = $static;
     $field->deviceID = $device->id;
     $field->tab = $tab;
     $field->save();
 }
コード例 #8
0
ファイル: print.php プロジェクト: quickpacket/noclayer
 private function device_hardware()
 {
     $this->SetFont('Verdana', '', 10);
     $this->Ln(20);
     $this->SetTextColor(30, 144, 250);
     $this->Write(18, 'Hardware');
     $this->SetTextColor(158, 158, 158);
     $this->Ln(18);
     $data = Model_Device_Fieldset::find()->where('tab', 1)->where('deviceID', $this->device->id)->get();
     foreach ($data as $field) {
         switch ($field['type']) {
             case 'ram':
                 $this->ram_field($field->id, $field['name']);
                 break;
             case 'hdd':
                 $this->hdd_field($field->id, $field['name']);
                 break;
             case 'checkbox':
                 $this->check_box($field['name'], $field['value']);
                 break;
             case 'textarea':
                 $this->SetFont('Verdana', '', 10);
                 $this->add_text($field['name'], $this->validate($field['value']));
                 break;
             default:
                 $this->SetFont('Verdana', '', 10);
                 $this->add_line($field['name'], $this->validate($field['value']));
                 break;
         }
     }
 }
コード例 #9
0
ファイル: vps.php プロジェクト: quickpacket/noclayer
 public function action_storages()
 {
     $val = \Validation::forge();
     $val->add_field('rack', 'RACK id', 'required|min_length[1]|max_length[20]');
     $out = array('storages' => array());
     //validate rack
     if ($val->run()) {
         $storages = Model_Device::find()->where('cat', 1)->where('rack', $val->validated('rack'))->get();
         foreach ($storages as $store) {
             $fields = Model_Device_Fieldset::find()->where('deviceID', $store->id)->where('type', 'hdd')->get();
             $capacity = 0;
             foreach ($fields as $field) {
                 $hdd = $field->hdd;
                 if ($hdd) {
                     $capacity += $hdd->total;
                 }
             }
             array_push($out['storages'], array('device' => $store->id, 'hostname' => $store->hostname, 'capacity' => $capacity));
         }
     }
     echo json_encode($out);
 }
コード例 #10
0
ファイル: templates.php プロジェクト: quickpacket/noclayer
 public function action_device($id = null)
 {
     if ($_POST) {
         $val = \Validation::forge('templates');
         if ($id == 'edit') {
             $val->add_field('did', 'device id', 'required|min_length[1]|max_length[20]');
             $val->add_field('type', 'device new type', 'required|min_length[1]|max_length[10]');
             if ($val->run()) {
                 //get device current template type
                 $dev = Model_Device::find($val->validated('did'));
                 //set template
                 $template = Model_Device_Template::find($val->validated('type'));
                 //category
                 $cat = $template->category;
                 //store position of vertical pdu
                 $power_temp = false;
                 if ($cat->id == 4) {
                     if ($dev->meta_default_data > 0) {
                         $power_temp = $dev->power;
                     }
                 }
                 $pdu_size_wrong = $this->check_for_PDU($template, $dev);
                 if ($pdu_size_wrong) {
                     echo json_encode(array('error' => 'You cant use this template, no enough space in rack'));
                 } else {
                     $dev_fields = Model_Device_Fieldset::find()->where('deviceID', $dev->id)->get();
                     //delete all data from device
                     foreach ($dev_fields as $dev_field) {
                         $dev_field->delete();
                     }
                     $fields = $template->field;
                     $dev->type = $template->id;
                     $dev->save();
                     foreach ($fields as $field) {
                         $data = array('name' => $field['name'], 'static' => $field['static'], 'value' => htmlspecialchars_decode($field['value']), 'type' => $field['type'], 'deviceID' => $dev->id, 'tab' => $field['tab'], 'extra' => $field['extra']);
                         $new_field = new Model_Device_Fieldset($data);
                         $new_field->save();
                         $this->insert_template_to_device_data($field, $new_field);
                     }
                     $out = false;
                     if ($cat->id == 4) {
                         $dev = Model_Device::find($val->validated('did'));
                         //check if vertical PDU , and echo number of output pins
                         if ($dev->meta_default_data > 0) {
                             $po = Model_Device_Power::find()->where('deviceID', $val->validated('did'))->get_one();
                             $po->pos = $power_temp->pos;
                             $po->ru = $power_temp->ru;
                             $po->save();
                             $out = $po->output;
                             echo json_encode(array('type' => $template->id, 'id' => $dev->id, 'cat' => $cat->id, 'out' => $out));
                         }
                     }
                     if (!$out) {
                         echo json_encode(array('type' => $template->id, 'id' => $dev->id, 'cat' => $cat->id));
                     }
                 }
             }
         }
     }
 }