needlogin=true; $me = new User(); $me->loadMe(); $this->me = $me; $this->layout()->set("me",$me); if(!$me->is(["Admin", "netowner", "pipeplanner", "pipeworker"])) { $this->redirect("Dashboard"); } } protected function indexAction() { $this->layout()->setTemplate("Pipework/Index"); // get allowed networks if($this->me->is("Admin")) { $my_networks = NetworkModel::getAll(); } else { $my_networks = $this->me->my_networks; } // get Buildings in networks $networks = []; foreach($my_networks as $network) { if(!array_key_exists($network->name, $networks)) { $networks[$network->name] = []; } $building_search = [ "network_id" => $network->id, "workflow_finished" => 0 ]; foreach(BuildingModel::search($building_search) as $b) { if(!array_key_exists($b->id, $networks[$network->name])) { $networks[$network->name][$b->id] = $b; } } } $building = reset(reset($networks)); $item_colspan = 0; $i = 0; // get fields between delimiters for colspan foreach($building->workflowitems as $wfitem) { if($i == 0 && $wfitem->type == "delimiter") continue; if($wfitem->type == "delimiter") { $item_colspan = $i; break; } $i++; } //var_dump($item_colspan);exit; $this->layout()->set("building_wf_colspan", $item_colspan); $this->layout()->set("networks", $networks); //var_dump(reset(reset($networks))->workflowitems);exit; } protected function saveAction() { $r = $this->request; //var_dump($r->get());exit; $building_id = $r->id; if(!is_numeric($building_id) || $building_id < 1) { $this->layout()->setFlash("Objekt nicht gefunden", "error"); $this->redirect("Pipework"); } $building = new Building($building_id); if(!$building->id) { $this->layout()->setFlash("Objekt nicht gefunden", "error"); $this->redirect("Pipework"); } //var_dump($r->get());exit; if($this->me->is(["Admin", "netowner", "pipeplanner"])) { if($r->pipework_enabled == 1) { $building->pipework_enabled = 1; } else { $building->pipework_enabled = 0; } $building->save(); } if($building->workflow_comment != $r->workflow_comment) { $building->workflow_comment = $r->workflow_comment; $building->workflow_comment_changed = date('U'); $building->workflow_comment_changed_by = $this->me->id; $building->save(); } $items = []; // get workflow values from request foreach($r->get() as $field_name => $value) { $m = []; if(preg_match('/^wfitem_(.+)$/', $field_name, $m)) { if(!$m[1]) { continue; } $items[$m[1]] = $value; } } //var_dump($items);exit; foreach($items as $name => $value) { $item = WorkflowitemModel::getFirst(["name" => $name, "object_type" => "building"]); if(!$item) { var_dump("no item: $name");exit; } $item->setObjectId($building_id); $item->value->setValue($value, $items); //var_dump($item);exit; $item->value->save(); // set pipework finished flag in building if($name == TT_WORKFLOW_ITEM_PIPEWORK_DONE) { if($value && $building->workflow_finished == 0) { $building->workflow_finished = 1; $building->save(); } elseif(!$value && $building->workflow_finished == 1) { $building->workflow_finished = 0; $building->save(); } } } // file upload if(array_key_exists("PipeworkFileUpload", $_FILES) && !$_FILES['PipeworkFileUpload']['error']) { //var_dump($_FILES);exit; try { $upload = new mfUpload("PipeworkFileUpload"); $upload->setSavepath(MFUPLOAD_FILE_SAVE_PATH."/documents"); $upload->save(); $file_data = []; $file_data['name'] = ($r->file_name) ? $r->file_name : $upload->getOriginalFilename(); $file_data['filename'] = ($r->file_filename) ? $r->file_filename : $upload->getOriginalFilename(); $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", "warn"); unlink($upload->getSavepath()."/".$upload->getFilename()); } else { $bf = []; $bf['building_id'] = $building_id; $bf['file_id'] = $file_id; $bf['type'] = $r->file_type; $bf['name'] = $file->name; $buildingfile = BuildingFileModel::create($bf); if(!$buildingfile->save()) { $file->delete(); unlink($upload->getSavepath()."/".$upload->getFilename()); $this->layout()->setFlash("Dateiupload fehlgeschlagen", "warn"); } } } catch(Exception $ex) { $this->layout->setFlash("Fehler beim Dateiupload: ".$ex->getMessage(), "warn"); $this->redirect("Pipework"); } } $this->layout->setFlash("Workflow Eintrag erfolgreich gespeichert.", "success"); $this->redirect("Pipework"); } }