/** * * frontend CRUD connector for rack managment ... * @author hrvoje * @param unknown_type $id */ public function action_rack($id = null) { if ($id) { if ($id != 'new') { $rack = Model_Rack::find($id); if ($rack) { $update = $this->isPost('up'); if ($update) { $set = false; //name of rack $name = $this->isPost('name'); if ($name) { $rack->name = $name; $set = true; } //rack size $size = $this->isPost('size'); if ($size) { $rack->size = $size; $set = true; } //save data to rack if ($set) { $rack->meta_update_time = time(); $rack->meta_update_user = $this->user; $rack->save(); echo json_encode(array('success' => 'ok')); } } } } //new rack if ($id == 'new') { $val = \Validation::forge(); $val->add_field('room', 'room id', 'required|min_length[1]|max_length[20]'); if ($val->run()) { $ord = 0; $rc = Model_Rack::find()->where('room', $val->validated('room'))->get(); foreach ($rc as $rack) { if ($rack->room_pos > $ord) { $ord = $rack->room_pos; } } //check if room exist $roomdata = Model_Room::find($_POST['room']); if ($roomdata) { $props = array('name' => 'new rack', 'room' => $_POST['room'], 'room_pos' => $ord + 1, 'hidden_rack' => 0, 'size' => 42, 'position' => 0, 'notes' => null, 'meta_default_data' => 0, 'meta_update_time' => time(), 'meta_update_user' => $this->user); //print_r($props); $new = new Model_Rack($props); $new->save(); $rack = array("name" => $new['name'], "units" => $new['size'], "id" => $new['id'], "equs" => array()); // delete gaps $racks = Model_Rack::find()->where('room', $val->validated('room'))->order_by('room_pos', 'asc')->get(); $i = 1; foreach ($racks as $r) { $r->room_pos = $i; $r->save(); $i++; } echo json_encode($rack); } } } if ($id == 'move') { $val = \Validation::forge(); $val->add_field('id', 'rack id', 'required|min_length[1]|max_length[20]'); $val->add_field('room', 'room id', 'required|min_length[1]|max_length[20]'); $val->add_field('ord', 'order', 'required|min_length[1]|max_length[20]'); $val->add_field('to', 'to another room', 'required|min_length[1]|max_length[1]'); if ($val->run()) { $rack = Model_Rack::find()->where('id', $val->validated('id'))->get_one(); if ($rack) { $nr = $val->validated('room'); $no = $val->validated('ord'); $new_room_r = Model_Rack::find()->where('room', $nr)->where('room_pos', '>=', $no)->order_by('room_pos', 'asc')->get(); $old_room_r = Model_Rack::find()->where('room', $rack->room)->where('room_pos', '>=', $rack->room_pos)->order_by('room_pos', 'asc')->get(); // update room set room_pos $n = $no + 1; //2 foreach ($new_room_r as $new_rack) { $new_rack->room_pos = $n; $new_rack->save(); $n++; } $n = $rack->room_pos - 1; //2 foreach ($old_room_r as $old_rack) { if ($n == $no - 1) { $n++; if (!$val->validated('to')) { $no--; } } $old_rack->room_pos = $n; $old_rack->save(); $n++; } \Log::debug("no" . $no); $rack->room = $nr; $rack->room_pos = $no; $rack->save(); // delete gaps $new_room_r = Model_Rack::find()->where('room', $nr)->order_by('room_pos', 'asc')->get(); $old_room_r = Model_Rack::find()->where('room', $rack->room)->order_by('room_pos', 'asc')->get(); $i = 1; foreach ($old_room_r as $old_rack) { $old_rack->room_pos = $i; $old_rack->save(); $i++; } $i = 1; foreach ($new_room_r as $new_rack) { $new_rack->room_pos = $i; $new_rack->save(); $i++; } echo json_encode(array('status' => 'ok')); } } } if ($id == 'pos') { $val = \Validation::forge(); $val->add_field('id', 'rack id', 'required|min_length[1]|max_length[20]'); $val->add_field('pos', 'position id', 'required|min_length[1]|max_length[20]'); if ($val->run()) { $rack = Model_Rack::find()->where('id', $val->validated('id'))->get_one(); if ($rack) { $rack->position = $val->validated('pos'); $rack->save(); } echo json_encode(array('status' => 'ok')); } } } }
protected function newuserdata($user) { //add new building $props = array('name' => 'Building DEMO', 'meta_update_time' => time(), 'meta_update_user' => $user); $building = new Model_Building($props); $building->save(); //add defualt floor $props = array('name' => 'Floor 1', 'building' => $building->id, 'meta_update_time' => time(), 'meta_update_user' => $user); $floor = new Model_Floor($props); $floor->save(); //add default room $props = array('name' => 'Room A', 'floor' => $floor->id, 'meta_update_time' => time(), 'meta_update_user' => $user); $room = new Model_Room($props); $room->save(); //add default room $props = array('name' => 'Default rack', 'room' => $room->id, 'room_pos' => 0, 'hidden_rack' => 0, 'size' => 48, 'numbering_direction' => 0, 'meta_default_data' => 0, 'meta_update_time' => time(), 'meta_update_user' => $user); $rack = new Model_Rack($props); $rack->save(); //$switch=$this->add_switch($rack,$user,2,'c1-switch-windows'); $switch = $this->add_switch($rack, $user, 48, 'c1-switch-linux'); $pdu = $this->add_pdu($rack, $user); for ($i = 10; $i <= 47; $i++) { $this->add_server($i, $rack, $user, $switch['id'], $switch['macs'], $pdu); } //monitoring $qmonitor = array('iconw' => 1, 'iconc' => 1, 'iconu' => 1, 'osdw' => 1, 'osdu' => 1, 'osdc' => 1, 'soundw' => 1, 'soundu' => 1, 'soundc' => 1, 'meta_update_user' => $user); $monitor = new Model_Monitoring_Data($qmonitor); $monitor->save(); $q = array('typeID' => 1, 'user' => 'guest', 'pass' => 'guest', 'content' => 'https://nagios.demo.netways.de/nagios/cgi-bin/status.cgi', 'meta_update_time' => time(), 'meta_update_user' => $user); $source = new Model_Monitoring_Source($q); $source->save(); /* //server //cables DB::query("INSERT INTO `cables` (`id`, `dev1`, `port1`, `name1`, `dev2`, `port2`, `name2`, `type`, `meta_update_time`, `meta_update_user`) VALUES ('', 1, 1, 1, 2, 1, 1, 1, 1337743207, 2), ('', 1, 2, 2, 2, 2, 2, 1, 1337743221, 2);")->execute(); //device_fieldset DB::query("INSERT INTO `device_fieldset` (`id`, `name`, `type`, `deviceID`, `tab`, `value`, `static`) VALUES ('', 'Manufacturer', 'input', 1, 1, NULL, 1), ('', 'Model', 'input', 1, 1, NULL, 1), ('', 'Admin url', 'input', 1, 2, NULL, 1), ('', 'Ports', 'network', 1, 2, NULL, 1), ('', 'Images', 'img', 1, 3, NULL, 0), ('', 'Export to pdf', 'print', 1, 3, NULL, 0), ('', 'Manufacturer', 'input', 2, 1, NULL, 1), ('', 'Model', 'input', 2, 1, NULL, 1), ('', 'Admin url', 'input', 2, 2, NULL, 1), ('', 'Ports', 'network', 2, 2, NULL, 1), ('', 'Images', 'img', 2, 3, NULL, 0), ('', 'Export to pdf', 'print', 2, 3, NULL, 0);")->execute(); //device network DB::query("INSERT INTO `device_network` (`id`, `fieldsetID`, `deviceID`, `nics`, `vports`, `ports`, `uplinks`, `config_data`, `type`) VALUES ('', 4, 1, 2, 0, 0, 0, '', 1), ('', 10, 2, 0, 0, 24, 0, '', 2);")->execute(); DB::query("INSERT INTO `network_ip_ports` (`id`, `networkID`, `nic_name`, `ipv4`, `ipv6`, `conn_type`, `conn_speed`, `type`) VALUES ('', 1, '', '', '', 1, 1, 1), ('', 1, '', '', '', 1, 3, 1);")->execute(); DB::query("INSERT INTO `network_mac_ports` (`id`, `networkID`, `mac_address`, `conn_device`, `vlan`, `type`) VALUES ('', 2, '', 0, 0, 1), ('', 2, '', 0, 0, 1), ('', 2, '', 0, 0, 1), ('', 2, '', 0, 0, 1), ('', 2, '', 0, 0, 1), ('', 2, '', 0, 0, 1), ('', 2, '', 0, 0, 1), ('', 2, '', 0, 0, 1), ('', 2, '', 0, 0, 1), ('', 2, '', 0, 0, 1), ('', 2, '', 0, 0, 1), ('', 2, '', 0, 0, 1), ('', 2, '', 0, 0, 1), ('', 2, '', 0, 0, 1), ('', 2, '', 0, 0, 1), ('', 2, '', 0, 0, 1), ('', 2, '', 0, 0, 1), ('', 2, '', 0, 0, 1), ('', 2, '', 0, 0, 1), ('', 2, '', 0, 0, 1), ('', 2, '', 0, 0, 1), ('', 2, '', 0, 0, 1), ('', 2, '', 0, 0, 1), ('', 2, '', 0, 0, 1);")->execute(); */ }