needlogin = true; $me = new User(); $me->loadMe(); $this->me = $me; $this->layout()->set("me", $me); if (!$me->is(["Admin", "netowner", "pipeplanner"])) { $this->redirect("Dashboard"); } } protected function indexAction() { $networks = array_map(function($network) { return [ "text" => $network->name, "value" => $network->name ]; }, NetworkModel::getAll()); $pops = array_map(function($pop) { return [ "id" => $pop->id, "name" => $pop->name, "networkArea" => $pop->networks, "location" => $pop->location, "state" => $pop->state, "folder_link" => $pop->folder_link, "doku_date" => $pop->doku_date, "vlan" => [ "public" => $pop->vlan_public, "nat" => $pop->vlan_nat, "ipv6" => $pop->vlan_ipv6 ], "gps" => $pop->gps_lat . ", " . $pop->gps_long ]; }, PopModel::getAlladv()); $JSGlobals = ["BASE_URL" => self::getUrl(""), "DASHBOARD_URL" => self::getUrl("Dashboard"), "MFAPPNAME" => MFAPPNAME_SLUG, "PAGE_TITLE" => "Pops", "PATH" => [ ["text" => MFAPPNAME_SLUG, "href" => self::getUrl("Dashboard")], ["text" => "Devices", "href" => self::getUrl("Pop")] ], "NETWORKS" => $networks, "POPS" => $pops, "IS_ADMIN" => $this->me->is("Admin"), ]; $this->layout()->set("vueViewName", "Pop"); $this->layout()->set("JSGlobals", $JSGlobals); $this->layout()->setTemplate("VueViews/Vue"); } protected function detailAction() { $id = $this->request->id; if (!is_numeric($id) || !$id) { $this->layout()->setFlash("pop nicht gefunden", "error"); $this->redirect("Pop"); } $pop = new Pop($id); if ($pop->id != $id) { $this->layout()->setFlash("Pop nicht gefunden", "error"); $this->redirect("Pop"); } $popnetwork = PopNetworkModel::getbyPopid($id); $stateArray=PopModel::$stateArray; $this->layout()->set("stateArray", $stateArray); $this->layout()->set("popnetwork", implode(', ' , $popnetwork['name'])); $this->layout()->setTemplate("Pop/Detail"); $filter['pop_id'] = $id; $this->layout()->set("popracks", PoprackModel::getAllbyPop($id)); $this->layout()->set("devices", DeviceModel::search($filter)); $pops = PopModel::getOne($id); $this->layout()->set("pops", $pops); } protected function addAction() { $stateArray=PopModel::$stateArray; $this->layout()->set("stateArray", $stateArray); $this->layout()->setTemplate("Pop/Form"); $this->layout()->set("networks", NetworkModel::getAll()); if ($this->request->network_id) { $pop = new Pop(); $pop->network_id = $this->request->network_id; $this->layout()->set("pop", $pop); } } protected function editAction() { $id = $this->request->id; if (!is_numeric($id) || !$id) { $this->layout()->setFlash("POP nicht gefunden", "error"); $this->redirect("Network"); } $pop = new Pop($id); if ($pop->id != $id) { $this->layout()->setFlash("POP nicht gefunden", "error"); $this->redirect("Network"); } $popnetwork = PopNetworkModel::getbyPopid($id); $this->layout()->set("popnetwork", $popnetwork['network_id']); $this->layout()->set("pop", $pop); $this->addAction(); } protected function saveAction() { $r = $this->request; $id = $r->id; //var_dump($r);exit; if (is_numeric($id) && $id > 0) { $mode = "edit"; $pop = new Pop($id); if (!$pop->id) { $this->layout()->setFlash("POP nicht gefunden", "error"); $this->redirect("Network"); } } else { $mode = "add"; } //var_dump($r->addresstypes);exit; $this->log->debug(print_r($r, true)); if (!$r->network_id || !$r->name) { $this->layout()->setFlash("Bitte Name und Netzgebiet eintragen", "error"); $this->layout()->set("pop", $pop); unset($r->network_id); return $this->add(); } $data = []; $data['name'] = $r->name; $data['gps_lat'] = ($r->gps_lat) ? $r->gps_lat : null; $data['gps_long'] = ($r->gps_long) ? $r->gps_long : null; $data['location'] = $r->location; $data['vlan_public'] = ($r->vlan_public) ? $r->vlan_public : null; $data['vlan_nat'] = ($r->vlan_nat) ? $r->vlan_nat : null; $data['vlan_ipv6'] = ($r->vlan_ipv6) ? $r->vlan_ipv6 : null; $data['state'] = ($r->state) ? $r->state : null; $data['folder_link'] = ($r->folder_link) ? $r->folder_link : null; $data['doku_date'] = ($r->doku_date) ? strtotime($r->doku_date) : null; $data['note'] = $r->note; $data['edit_by'] = 1; if ($mode == "add") { $data['create_by'] = 1; $pop = PopModel::create($data); } else { $pop->update($data); } $new_id = $pop->save(); if (!$new_id) { $this->layout()->setFlash("Fehler beim Speichern", "error"); if (isset($network)) $this->layout()->set("network", $network); $this->addAction(); } if ($r->network_id) { $oldPopnetworks = json_encode(PopNetworkModel::getbyPopid($new_id)); if ($oldPopnetworks != json_encode($r->network_id)) { PopNetworkModel::deletebyPopid($new_id); unset($data); $data = []; foreach ($r->network_id as $networkid) { $data['network_id'] = $networkid; $data['pop_id'] = $new_id; $popNetwork = PopNetworkModel::create($data); $popNetwork->save(); } } } if ($this->request->returnto) { $returnAction = "Index"; $returnVariables = array(); $returnAnker = ""; if (strpos($this->request->returnto, "-") !== false) { $urls = explode('-', $this->request->returnto); $urlCounter = 0; $returnUrl = ""; foreach ($urls as $url) { if ($urlCounter > 0) { $returnUrl .= "/"; } $returnUrl .= ucfirst($url); $urlCounter++; } $returnAction = ""; $returnVariables['id'] = $id; $this->returUrl = $returnUrl; } else { $this->returUrl = ucfirst($this->request->returnto); } } else { $returnAnker = "view=pops&net=" . $pop->network_id; } $this->layout()->setFlash("Pop erfolgreich gespeichert.", "success"); $this->redirect($this->returUrl, $returnAction, $returnVariables, $returnAnker); } protected function apiAction() { $do = $this->request->do; $data = []; switch ($do) { case "getPops": $return = $this->getPopsApi(); break; default: $return = false; } if (!is_array($return) || !count($return)) { $data = ["status" => "error"]; $this->returnJson($data); } $data['status'] = "OK"; $data['result'] = $return; $this->returnJson($data); } private function getPopsApi() { $network_id = $this->request->network_id; if (!is_numeric($network_id) || $network_id < 1) { return false; } $network = new Network($network_id); if (!$network->id) { return false; } $pops = []; foreach ($network->pops as $pop) { $pops[$pop->id] = $pop->name; } return ["pops" => $pops]; } protected function deleteAction() { $id = $this->request->id; $pop = new Pop($id); if (!$pop->id || $pop->id != $id) { $this->layout()->setFlash("Datei nicht gefunden.", "error"); $this->redirect("Pop"); } $pop->delete(); $this->redirect("Pop"); } }