diff --git a/Layout/default/Filestore/Form.php b/Layout/default/Filestore/Form.php new file mode 100644 index 000000000..3293e4f32 --- /dev/null +++ b/Layout/default/Filestore/Form.php @@ -0,0 +1,247 @@ + + +
+
+
+
+ +
+

Datei

+
+
+
+ + +
+
+ +
+
+

id) ? "Datei bearbeiten" : "Neue Datei" ?>

+ +
"> +
+
+ + + +
+ +
+ +
+
+
+ +
+ +
+
+
+ +
+ +
+
+
+ +
+ +
+
+ + + +
+
+ +
+
+ + + + \ No newline at end of file diff --git a/Layout/default/Filestore/Index.php b/Layout/default/Filestore/Index.php new file mode 100644 index 000000000..e2e52cbb7 --- /dev/null +++ b/Layout/default/Filestore/Index.php @@ -0,0 +1,85 @@ +getUrl($Mod, "Index"); +$pagination_baseurl_params = ["filter" => $filter]; +$pagination_entity_name = "Dateien"; +?> + + + + +
+
+
+
+ +
+

Dateiablage

+
+
+
+ + + +
+
+
+
+
+

Liste aller Dateien

+
+ +
+
+ + + + + + + + + + + + + + + + + + + + + + +
NameBeschreibungErstellerBearbeiter
name ?>description ?>creator->name ?> (create) ?>)editor->name ?> (edit) ?>) + $file->file_id, 's' => $pagination['start']])?>"> + $file->id, 's' => $pagination['start']])?>"> + $file->id, 's' => $pagination['start']])?>" onclick="if(!confirm('Person/Firma wirklich löschen?')) return false;" class="text-danger" title="Löschen"> +
+ + + + + +
+
+ +
+
+ + + + + + \ No newline at end of file diff --git a/Layout/default/Pop/Form.php b/Layout/default/Pop/Form.php index 6194c56a0..751c6b2e2 100644 --- a/Layout/default/Pop/Form.php +++ b/Layout/default/Pop/Form.php @@ -1,150 +1,172 @@ - +
-
-
-
- -
-

id) ? "POP bearbeiten" : "Neuer POP" ?>

+
+
+
+ +
+

id) ? "POP bearbeiten" : "Neuer POP" ?>

+
-
- -
-
- -
-
-

id) ? "POP bearbeiten" : "Neuer POP"?>

- -
"> -
-
- - - -
- -
- -
-
- -
- -
- -
-
- -
- -
- -
-
- -
- -
- -
-
- -
- -
- -
-
- -
-
- -
-
-

Access VLANs

-
- -
- -
-
- -
- -
- -
-
- -
- -
- -
-
- -
-
- -
+
+
+ +
-
- -
- -
-
+

id) ? "POP bearbeiten" : "Neuer POP" ?>

+ + $_GET["returnto"]]) ?>"> +
+
+ + + +
+ +
+ +
+
+ +
+ +
+ +
+
+ +
+ +
+ +
+
+ +
+ +
+ +
+
+ +
+ +
+ +
+
+ +
+
+ +
+
+

Access VLANs

+ +
+ +
+ +
+
+ +
+ +
+ +
+
+ +
+ +
+ +
+
+ +
+
+ +
+
+
+ +
+ +
+
+
+
+ +
+ +
+ +
+
+ + +
-
- -
- -
- -
-
- - - - -
+
+
- -
- + + + \ No newline at end of file diff --git a/Layout/default/Pop/Index.php b/Layout/default/Pop/Index.php new file mode 100644 index 000000000..22163042c --- /dev/null +++ b/Layout/default/Pop/Index.php @@ -0,0 +1,249 @@ +getUrl($Mod, "Index"); +$pagination_baseurl_params = ["filter" => $filter]; +$pagination_entity_name = "Pops"; +?> + + + + +
+
+
+
+ +
+

Pops

+
+
+
+ + + +
+
+
+
+
+

Liste aller Pops

+
+ +
+
+ + + + + + + + + + + + + + + + + + + + + + + + + + + +
NameNetgebietZutrittVlan Public/NatKoordinaten
name ?>network->name ?>location ?>vlan_public ?> / vlan_nat ?>gps_lat,'0') ?> , gps_long,0) ?> + $pop->id, 'returnto' => "pop"])?>"> + " class="text-danger" title="Löschen"> +
+ + + + + +
+
+ +
+
+ + + + + + \ No newline at end of file diff --git a/Layout/default/menu.php b/Layout/default/menu.php index 6ae37c0d9..cd8a3168d 100644 --- a/Layout/default/menu.php +++ b/Layout/default/menu.php @@ -35,6 +35,7 @@
  • "> Technologien
  • "> Benutzer
  • "> Netzgebiete
  • +
  • "> Pops
  • @@ -50,6 +51,7 @@ is(["Admin","netowner","pipeplanner","pipeworker","lineplanner","lineworker"])): ?>
  • "> Tiefbau
  • is(["Admin","netowner","lineplanner","lineworker"])): ?>
  • "> Leitungsbau
  • is(["Admin", "netowner", "netoperator", "lineworker"])): ?>
  • "> Patchungen
  • + is(["Admin", "netowner","pipeplanner","lineplanner","pipeworker", "netoperator", "lineworker"])): ?>
  • "> Dateiablage
  • diff --git a/application/Filestore/Filestore.php b/application/Filestore/Filestore.php new file mode 100644 index 000000000..2d794e1d6 --- /dev/null +++ b/application/Filestore/Filestore.php @@ -0,0 +1,46 @@ +$name == null) { + + if(!$this->id) { + return null; + } + + if($name == "creator") { + $this->creator = new User($this->create_by); + return $this->creator; + } + + if($name == "editor") { + $this->editor = new User($this->edit_by); + return $this->editor; + } + if($name == "histories") { + $this->histories=FilestoreHistoryModel::search(["filestore_id="=>$this->id]); + return $this->histories; + } + + $classname = ucfirst($name); + $idfield = $name."_id"; + $this->$name = new $classname($this->$idfield); + + if($this->$name->id) { + return $this->$name; + } else { + return null; + } + } + + return $this->$name; + } + + +} \ No newline at end of file diff --git a/application/Filestore/FilestoreController.php b/application/Filestore/FilestoreController.php new file mode 100644 index 000000000..ba33a710f --- /dev/null +++ b/application/Filestore/FilestoreController.php @@ -0,0 +1,197 @@ +needlogin = true; + $me = new User(); + $me->loadMe(); + $this->me = $me; + $this->layout()->set("me", $me); + + if (!$me->is(["Admin", "netowner", "pipeplanner", "lineplanner", "pipeworker", "netoperator", "lineworker"])) { + $this->redirect("Dashboard"); + } + } + + protected function indexAction() + { + $this->layout()->setTemplate("Filestore/Index"); + $files = FilestoreModel::getAll(); + + + + // pagination defaults + $pagination = []; + $pagination['start'] = 0; + $pagination['count'] = 25; + $pagination['maxItems'] = 0; + if(is_numeric($this->request->s)) { + $pagination['start'] = intval($this->request->s); + } + $pagination['maxItems'] = FilestoreModel::count(); + $this->layout()->set("files", $files); + $this->layout()->set("pagination", $pagination); + + + } + + protected function addAction() + { + $this->layout()->setTemplate("Filestore/Form"); + } + + protected function saveAction() + { + $r = $this->request; + $id = $r->id; + //var_dump($r->get());exit; + if (is_numeric($id) && $id > 0) { + $mode = "edit"; + $filestore = new Filestore($id); + if (!$filestore->id) { + $this->layout()->setFlash("Datei nicht gefunden", "error"); + $this->redirect("Filestore"); + } + + $dataHistory = []; + $dataHistory['name'] = $filestore->name; + $dataHistory['description'] = $filestore->description; + $dataHistory['file_id'] = $filestore->file_id; + $dataHistory['filestore_id'] = $filestore->id; + $dataHistory['create'] = $filestore->create; + $dataHistory['create_by'] = $filestore->create_by; + $dataHistory['edit'] = date("U"); + } else { + $mode = "add"; + } + + $data = []; + $data['name'] = trim($r->name); + $data['description'] = trim($r->description); + + if (!$data['name']) { + $this->layout()->setFlash("Name darf nicht leer sein", "error"); + $this->redirect("Filestore"); + } + + if (array_key_exists("filestore", $_FILES) && !$_FILES['filestore']['error']) { + $upload_error = false; + + //var_dump($_FILES);exit; + $upload = new mfUpload("filestore"); + $upload->setSavepath(MFUPLOAD_FILE_SAVE_PATH . "/netzbetrieb"); + + if (!$upload->getSize()) { + $this->layout()->setFlash("Dateiupload fehlgeschlagen: Dokument darf nicht leer sein!", "error"); + $this->redirect("Filestore"); + } + if (substr(strtolower($upload->getFilename()), -3, 3) == "pdf" && !$upload->validatePDF()) { + $this->layout()->setFlash("Dateiupload fehlgeschlagen: PDF-Validierung fehlgeschlagen!", "error"); + $this->redirect("Filestore"); + } + try { + $upload->save(); + } catch (Exception $e) { + $this->layout()->setFlash("Dateiupload fehlgeschlagen1", "error"); + $this->redirect("Filestore"); + } + $file_data = []; + $file_data['name'] = $upload->getOriginalFilename(); + $file_data['filename'] = ($r->file_filename) ? $r->file_filename : $upload->getOriginalFilename(); + $file_data['subfolder'] = "netzbetrieb"; + $file_data['store_filename'] = $upload->getFilename(); + $file_data['orig_filename'] = $upload->getOriginalFilename(); + + + $file = FileModel::create($file_data); + $file_id = $file->save(); + if (!$file_id) { + $this->layout()->setFlash("Dateiupload fehlgeschlagen3", "error"); + $this->redirect("Filestore"); + } + $data['file_id'] = $file_id; + + if ($mode == "edit") { + + $fsh = FilestoreHistoryModel::create($dataHistory); + } + } else { + if ($mode == "add") { + $this->layout()->setFlash("Keine Datei angegeben", "error"); + $this->redirect("Filestore", "add"); + } + + } + +// var_dump($_FILES); +// var_dump($upload); +// exit; + + + if ($mode == "edit") { + $filestore->update($data); + + } else { + $filestore = FilestoreModel::create($data); + } +// var_dump($filestore); +// exit; + $id = $filestore->save(); + + if (!$id) { + $this->layout()->setFlash("Dateiupload fehlgeschlagen33", "error"); + $this->redirect("Filestore"); + } + if ($fsh) { + $fsh->save(); + } + $this->layout()->setFlash("Dateiupload erfolgreich hochgeladen", "success"); + $this->redirect("Filestore"); + } + + protected function editAction() + { + $r = $this->request; + $id = $r->id; + //var_dump($r->get());exit; + if (!is_numeric($id) && $id < 1) { + + $this->layout()->setFlash("Datei nicht gefunden", "error"); + $this->redirect("Filestore"); + + } + $filestore = new Filestore($id); + + if (!$filestore->id) { + $this->layout()->setFlash("Datei nicht gefunden", "error"); + $this->redirect("Filestore"); + } + $this->layout()->set("file", $filestore); + + return $this->addAction(); + } + + protected function deleteAction() + { + $id = $this->request->id; + + + $filstore = new Filestore($id); + + if (!$filstore->id || $filstore->id != $id) { + $this->layout()->setFlash("Datei nicht gefunden.", "error"); + $this->redirect("Filestore"); + } + foreach ($filstore->histories as $h) { + $h->file->delete(); + $h->delete(); + + } + $filstore->file->delete(); + // check if Product is unused + $filstore->delete(); + $this->redirect("Filestore"); + } +} \ No newline at end of file diff --git a/application/Filestore/FilestoreModel.php b/application/Filestore/FilestoreModel.php new file mode 100644 index 000000000..f11111366 --- /dev/null +++ b/application/Filestore/FilestoreModel.php @@ -0,0 +1,168 @@ + $value) { + if (property_exists(get_called_class(), $field)) { + $model->$field = $value; + } + } + + $me = new User(); + $me->loadMe(); + + if ($model->create_by === null) { + $model->create_by = $me->id; + } + if ($model->edit_by === null) { + $model->edit_by = $me->id; + } + + return $model; + } + + public static function getOne($id) + { + if (!is_numeric($id) || !$id) { + throw new Exception("Invalid number", 400); + } + $item = []; + $db = FronkDB::singleton(); + + $res = $db->select("Filestore", "*", "id=$id LIMIT 1"); + if ($db->num_rows($res)) { + $data = $db->fetch_object($res); + $item = new Filestore($data); + } + return $item; + } + + public static function getAll() + { + $items = []; + + $db = FronkDB::singleton(); + $sql = "SELECT Filestore.* FROM Filestore + LEFT JOIN File ON (Filestore.file_id = File.id) + ORDER BY name"; + $res = $db->query($sql); + if ($db->num_rows($res)) { + while ($data = $db->fetch_object($res)) { + $items[] = new Filestore($data); + } + } + return $items; + + } + + public static function getFirst() + { + $db = FronkDB::singleton(); + + $where = self::getSqlFilter($filter); + $res = $db->select("Filestore", "*", "$where ORDER BY name, filename"); + if ($db->num_rows($res)) { + $data = $db->fetch_object($res); + $item = new Filestore($data); + if ($item->id) { + return $item; + } else { + return null; + } + } + return null; + } + public static function count() { + $db = FronkDB::singleton(); + + + $sql = " + SELECT count(Filestore.id) as cnt + FROM Filestore + "; + //mfLoghandler::singleton()->debug($sql); + + $res = $db->query($sql); + if($db->num_rows($res)) { + $data = $db->fetch_object($res); + return $data->cnt; + } + return 0; + } + + public static function search($filter) + { + $items = []; + $db = FronkDB::singleton(); + + $where = self::getSqlFilter($filter); + + $sql = "SELECT Filestore.* FROM Filestore + LEFT JOIN File ON (Filestore.file_id = File.id) + WHERE $where + ORDER BY name"; + + $res = $db->query($sql); + + if ($db->num_rows($res)) { + while ($data = $db->fetch_object($res)) { + $items[] = new Filestore($data); + } + } + return $items; + } + + private static function getSqlFilter($filter) + { + $where = "1=1 "; + + + if (array_key_exists("file_id", $filter)) { + $file_id = $filter['file_id']; + if (is_numeric($file_id)) { + $where .= " AND file_id=$file_id"; + } + } + + //var_dump($filter);exit; + if (array_key_exists("name", $filter)) { + $name = FronkDB::singleton()->escape($filter['name']); + if ($name) { + $where .= " AND name='$name'"; + } + } + + if (array_key_exists("filename", $filter)) { + $filename = FronkDB::singleton()->escape($filter['filename']); + if ($filename) { + $where .= " AND File.filename='$filename'"; + } + } + + if (array_key_exists("subfolder", $filter)) { + $subfolder = FronkDB::singleton()->escape($filter['subfolder']); + if ($subfolder) { + $where .= " AND File.subfolder='$subfolder'"; + } + } + + //var_dump($filter, $where);exit; + return $where; + } + +} \ No newline at end of file diff --git a/application/FilestoreHistory/FilestoreHistory.php b/application/FilestoreHistory/FilestoreHistory.php new file mode 100644 index 000000000..bd480e956 --- /dev/null +++ b/application/FilestoreHistory/FilestoreHistory.php @@ -0,0 +1,41 @@ +$name == null) { + + if(!$this->id) { + return null; + } + + if($name == "creator") { + $this->creator = new User($this->create_by); + return $this->creator; + } + + if($name == "editor") { + $this->editor = new User($this->edit_by); + return $this->editor; + } + + $classname = ucfirst($name); + $idfield = $name."_id"; + $this->$name = new $classname($this->$idfield); + + if($this->$name->id) { + return $this->$name; + } else { + return null; + } + } + + return $this->$name; + } + + +} \ No newline at end of file diff --git a/application/FilestoreHistory/FilestoreHistoryController.php b/application/FilestoreHistory/FilestoreHistoryController.php new file mode 100644 index 000000000..7b0301c4d --- /dev/null +++ b/application/FilestoreHistory/FilestoreHistoryController.php @@ -0,0 +1,151 @@ +needlogin = true; + $me = new User(); + $me->loadMe(); + $this->me = $me; + $this->layout()->set("me", $me); + + if (!$me->is(["Admin", "netowner", "pipeplanner", "lineplanner", "pipeworker", "netoperator", "lineworker"])) { + $this->redirect("Dashboard"); + } + } + + protected function indexAction() + { + $this->layout()->setTemplate("Filestore/Index"); + $files = FilestoreModel::getAll(); + $this->layout()->set("files", $files); + } + + protected function addAction() + { + $this->layout()->setTemplate("Filestore/Form"); + } + + protected function saveAction() + { + $r = $this->request; + $id = $r->id; + //var_dump($r->get());exit; + if (is_numeric($id) && $id > 0) { + $mode = "edit"; + $filestore = new Filestore($id); + if (!$filestore->id) { + $this->layout()->setFlash("Datei nicht gefunden", "error"); + $this->redirect("Filestore"); + } + + $dataHistory = []; + $dataHistory['name'] = $filestore->name; + $dataHistory['description'] = $filestore->description; + $dataHistory['file_id'] = $filestore->file_id; + $dataHistory['create'] = $filestore->create; + $dataHistory['create_by'] = $filestore->create_by; + $dataHistory['edit'] = date("U"); + } else { + $mode = "add"; + } + + $data = []; + $data['name'] = trim($r->name); + $data['description'] = trim($r->description); + + if (!$data['name']) { + $this->layout()->setFlash("Name darf nicht leer sein", "error"); + $this->redirect("Filestore"); + } + + if (array_key_exists("filestore", $_FILES) && !$_FILES['filestore']['error']) { + $upload_error = false; + + //var_dump($_FILES);exit; + $upload = new mfUpload("filestore"); + $upload->setSavepath(MFUPLOAD_FILE_SAVE_PATH . "/netzbetrieb"); + + if (!$upload->getSize()) { + $this->layout()->setFlash("Dateiupload fehlgeschlagen: Dokument darf nicht leer sein!", "error"); + $this->redirect("Filestore"); + } + if (substr(strtolower($upload->getFilename()), -3, 3) == "pdf" && !$upload->validatePDF()) { + $this->layout()->setFlash("Dateiupload fehlgeschlagen: PDF-Validierung fehlgeschlagen!", "error"); + $this->redirect("Filestore"); + } + try { + $upload->save(); + } catch (Exception $e) { + $this->layout()->setFlash("Dateiupload fehlgeschlagen", "error"); + $this->redirect("Filestore"); + } + $file_data = []; + $file_data['name'] = $upload->getOriginalFilename(); + $file_data['filename'] = ($r->file_filename) ? $r->file_filename : $upload->getOriginalFilename(); + $file_data['subfolder'] = "netzbetrieb"; + $file_data['store_filename'] = $upload->getFilename(); + $file_data['orig_filename'] = $upload->getOriginalFilename(); + + + $file = FileModel::create($file_data); + $file_id = $file->save(); + if (!$file_id) { + $this->layout()->setFlash("Dateiupload fehlgeschlagen", "error"); + $this->redirect("Filestore"); + } + $data['file_id'] = $file_id; + $filestore = FilestoreHistoryModel::create($dataHistory); + } else { + if ($mode == "add") { + $this->layout()->setFlash("Keine Datei angegeben", "error"); + $this->redirect("Filestore", "add"); + } + + } + +// var_dump($_FILES); +// var_dump($upload); +// exit; + + + if ($mode == "edit") { + $filestore->update($data); + + } else { + $filestore = FilestoreModel::create($data); + } + $id = $filestore->save(); + + if (!$id) { + $this->layout()->setFlash("Dateiupload fehlgeschlagen", "error"); + $this->redirect("Filestore"); + } + $this->layout()->setFlash("Dateiupload erfolgreich hochgeladen", "success"); + $this->redirect("Filestore"); + } + + protected function editAction() + { + $r = $this->request; + $id = $r->id; + //var_dump($r->get());exit; + if (!is_numeric($id) && $id < 1) { + + $this->layout()->setFlash("Datei nicht gefunden", "error"); + $this->redirect("Filestore"); + + } + $filestore = new Filestore($id); + + if (!$filestore->id) { + $this->layout()->setFlash("Datei nicht gefunden", "error"); + $this->redirect("Filestore"); + } + $this->layout()->set("file", $filestore); + + return $this->addAction(); + } + +} \ No newline at end of file diff --git a/application/FilestoreHistory/FilestoreHistoryModel.php b/application/FilestoreHistory/FilestoreHistoryModel.php new file mode 100644 index 000000000..3faae0e21 --- /dev/null +++ b/application/FilestoreHistory/FilestoreHistoryModel.php @@ -0,0 +1,157 @@ + $value) { + if (property_exists(get_called_class(), $field)) { + $model->$field = $value; + } + } + + $me = new User(); + $me->loadMe(); + + if ($model->create_by === null) { + $model->create_by = $me->id; + } + if ($model->edit_by === null) { + $model->edit_by = $me->id; + } + + return $model; + } + + public static function getOne($id) + { + if (!is_numeric($id) || !$id) { + throw new Exception("Invalid number", 400); + } + $item = []; + $db = FronkDB::singleton(); + + $res = $db->select("FilestoreHistory", "*", "id=$id LIMIT 1"); + if ($db->num_rows($res)) { + $data = $db->fetch_object($res); + $item = new FilestoreHistory($data); + } + return $item; + } + + public static function getAll() + { + $items = []; + + $db = FronkDB::singleton(); + $sql = "SELECT FilestoreHistory.* FROM FilestoreHistory + LEFT JOIN File ON (FilestoreHistory.file_id = File.id) + ORDER BY name"; + $res = $db->query($sql); + if ($db->num_rows($res)) { + while ($data = $db->fetch_object($res)) { + $items[] = new FilestoreHistory($data); + } + } + return $items; + + } + + public static function getFirst() + { + $db = FronkDB::singleton(); + + $where = self::getSqlFilter($filter); + $res = $db->select("FilestoreHistory", "*", "$where ORDER BY name, filename"); + if ($db->num_rows($res)) { + $data = $db->fetch_object($res); + $item = new FilestoreHistory($data); + if ($item->id) { + return $item; + } else { + return null; + } + } + return null; + } + + public static function search($filter) + { + $items = []; + $db = FronkDB::singleton(); + + $where = self::getSqlFilter($filter); + + $sql = "SELECT FilestoreHistory.* FROM FilestoreHistory + LEFT JOIN File ON (FilestoreHistory.file_id = File.id) + WHERE $where + ORDER BY name"; + + $res = $db->query($sql); + + if ($db->num_rows($res)) { + while ($data = $db->fetch_object($res)) { + $items[] = new FilestoreHistory($data); + } + } + return $items; + } + + private static function getSqlFilter($filter) + { + $where = "1=1 "; + + + if (array_key_exists("file_id", $filter)) { + $file_id = $filter['file_id']; + if (is_numeric($file_id)) { + $where .= " AND file_id=$file_id"; + } + } + if (array_key_exists("filestore_id", $filter)) { + $filestore_id = $filter['filestore_id']; + if (is_numeric($filestore_id)) { + $where .= " AND filestore_id=$filestore_id"; + } + } + + //var_dump($filter);exit; + if (array_key_exists("name", $filter)) { + $name = FronkDB::singleton()->escape($filter['name']); + if ($name) { + $where .= " AND name='$name'"; + } + } + + if (array_key_exists("filename", $filter)) { + $filename = FronkDB::singleton()->escape($filter['filename']); + if ($filename) { + $where .= " AND File.filename='$filename'"; + } + } + + if (array_key_exists("subfolder", $filter)) { + $subfolder = FronkDB::singleton()->escape($filter['subfolder']); + if ($subfolder) { + $where .= " AND File.subfolder='$subfolder'"; + } + } + + //var_dump($filter, $where);exit; + return $where; + } + +} \ No newline at end of file diff --git a/application/Pop/PopController.php b/application/Pop/PopController.php index fa014c605..b320e724d 100644 --- a/application/Pop/PopController.php +++ b/application/Pop/PopController.php @@ -1,144 +1,179 @@ needlogin=true; - $me = new User(); - $me->loadMe(); - $this->me = $me; - $this->layout()->set("me",$me); - - if(!$me->is(["Admin", "netowner", "pipeplanner"])) { - $this->redirect("Dashboard"); - } - } +class PopController extends mfBaseController +{ + private $returUrl = "Network"; - protected function indexAction() { - - } - - protected function addAction() { - $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 init() + { + $this->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 editAction() { - $id = $this->request->id; - if(!is_numeric($id) || !$id) { - $this->layout()->setFlash("POP nicht gefunden", "error"); - $this->redirect("Network"); + + protected function indexAction() + { + + $this->layout()->setTemplate("Pop/Index"); + $pops = PopModel::getAll(); + $this->layout()->set("pops", $pops); + } - - $pop = new Pop($id); - if($pop->id != $id) { - $this->layout()->setFlash("POP nicht gefunden", "error"); - $this->redirect("Network"); + + protected function addAction() + { + $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); + } } - - $this->layout()->set("pop", $pop); - return $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"; + + 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"); + } + + $this->layout()->set("pop", $pop); + return $this->addAction(); } - - //var_dump($r->addresstypes);exit; - - 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(); + + 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['network_id'] = $r->network_id; + $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['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"); + $this->layout()->set("network", $network); + return $this->addAction(); + } + if ($this->request->returnto) { + $this->returUrl = ucfirst($this->request->returnto); + } + + $this->layout()->setFlash("Netzgebiet erfolgreich gespeichert.", "success"); + $this->redirect($this->returUrl, "Index", [], "view=pops&net=" . $pop->network_id); + + } - - $data = []; - $data['network_id'] = $r->network_id; - $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['note'] = $r->note; - - $data['edit_by'] = 1; - - if($mode == "add") { - $data['create_by'] = 1; - $pop = PopModel::create($data); - } else { - $pop->update($data); + + 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); } - - //var_dump($address);exit; - - $new_id = $pop->save(); - if(!$new_id) { - $this->layout()->setFlash("Fehler beim Speichern", "error"); - $this->layout()->set("network", $network); - return $this->addAction(); + + 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]; } - - $this->layout()->setFlash("Netzgebiet erfolgreich gespeichert.", "success"); - $this->redirect("Network", "Index", [], "view=pops&net=".$pop->network_id); - } - - protected function apiAction() { - $do = $this->request->do; - $data = []; - - switch($do) { - case "getPops": - $return = $this->getPopsApi(); - break; - default: - $return = false; + + + 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"); } - - 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]; - } } \ No newline at end of file