Files
thetool/application/Filestore/FilestoreController.php
Spitzer_Daniel 1d394a7852 Filestore Fertiggestellt
Cpeprovisioning Performance Update
2023-04-19 17:27:48 +02:00

251 lines
8.3 KiB
PHP

<?php
class FilestoreController extends mfBaseController
{
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", "lineplanner", "pipeworker", "netoperator", "lineworker"])) {
$this->redirect("Dashboard");
}
}
protected function indexAction()
{
$this->layout()->setTemplate("Filestore/Index");
$files = FilestoreModel::getAll();
$fileshistory = FilestoreHistoryModel::getAll();
$networkaddress = NetworkAddressModel::getAll();
$this->layout()->set("files", $files);
$this->layout()->set("fileshistory", $fileshistory);
$this->layout()->set("networkaddresses", $networkaddress);
}
protected function addAction()
{
$this->layout()->set("networks", NetworkModel::getAll());
$this->layout()->set("networkaddresses", NetworkAddressModel::getAll());
$this->layout()->setTemplate("Filestore/Form");
}
protected function saveAction()
{
$r = $this->request;
$id = $r->id;
$editmode = $r->mode;
//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['network_id'] = $filestore->network_id;
$dataHistory['filestore_id'] = $filestore->id;
$dataHistory['create'] = $filestore->create;
$dataHistory['create_by'] = $filestore->create_by;
$dataHistory['edit_by'] = $filestore->edit_by;
// $dataHistory['edit'] = date("U");
$dataHistory['edit'] = $filestore->edit;
} else {
$mode = "add";
}
$data = [];
if ($editmode != "add-version" && $editmode != "edit-history") {
$data['name'] = trim($r->name);
$data['network_id'] = trim($r->network_id);
}
$data['description'] = trim($r->description);
$data['edit_by'] = trim($this->me->id);
if (!$data['name'] && $editmode != "add-version" && $editmode != "edit-history") {
$this->layout()->setFlash("Name darf nicht leer sein", "error");
$this->redirect("Filestore");
}
if (!$data['network_id'] && $editmode != "add-version" && $editmode != "edit-history") {
$this->layout()->setFlash("Netzgebiet 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" && $editmode == "add-version") {
$fsh = FilestoreHistoryModel::create($dataHistory);
}
} else {
if ($mode == "add" || $editmode == "add-version") {
$this->layout()->setFlash("Keine Datei angegeben", "error");
if ($editmode == "add-version") {
$this->redirect("Filestore");
} else {
$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 fehlgeschlagen", "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;
if ($r->mode) {
$mode = $r->mode;
} else {
$mode = "";
}
if (!is_numeric($id) && $id < 1) {
$this->layout()->setFlash("Datei nicht gefunden", "error");
$this->redirect("Filestore");
}
$filestore = new Filestore($id);
$filestorehistory = FilestoreHistoryModel::getAllhistory($id);;
if (!$filestore->id) {
$this->layout()->setFlash("Datei nicht gefunden", "error");
$this->redirect("Filestore");
}
if ($mode) {
$this->layout()->set("mode", $mode);
}
$this->layout()->set("filestorehistory", $filestorehistory);
$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");
}
protected function apiAction()
{
if (!$this->me->is(["Admin", "netowner", "pipeplanner", "lineplanner", "pipeworker", "netoperator", "lineworker"])) {
$this->redirect("Dashboard");
}
$id = $this->request->id;
$filestorehistory = FilestoreHistoryModel::getAllhistory($id);
$counter = 0;
foreach ($filestorehistory as $history) {
$data[$counter]['id'] = $history->id;
$data[$counter]['file_id'] = $history->data->file_id;
$data[$counter]['name'] = $history->data->name;
$data[$counter]['description'] = $history->data->description;
$data[$counter]['workername'] = $history->data->workername;
$data[$counter]['workerid'] = $history->data->workerid;
$data[$counter]['edit'] = $history->edit;
if (trim($this->me->id) == $history->data->workerid || $this->me->is(["Admin"])) {
$data[$counter]['is_delete'] = 1;
} else {
$data[$counter]['is_delete'] = 0;
}
$counter++;
}
echo json_encode($data);
exit;
}
}