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); }
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); } } }
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); }
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(); } } } }
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); } }
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; } } }
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); }
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)); } } } } } }