LOGGED IN"); } /** * @Route("/den/locations/page/{pageNum}", name="den-locations") */ public function locationIndex( Request $request, RequestStack $requestStack, Auth $auth, HandleLocations $locations, ManagerRegistry $doctrine, Render $render, string $pageNum ): Response { $result = $auth->status(); if ($result["status"]) { $session = $requestStack->getSession(); $member = $session->get("member"); $list = $locations->getLocationsPage($pageNum); $next = $pageNum + 1; if ($next > $list["total"]) { $next = 1; } $prev = $pageNum - 1; if ($prev <= 0) { $prev = $list["total"]; } return $render->page( [ "list" => $list, "mode" => "index", "curentPage" => $pageNum, "nextPage" => $next, "prevPage" => $prev ], "Bad Space | Locations", "back/locations.twig" ); } else { return $render->page([], "The Bad Space | Den", "back/index.twig"); } } /** * @Route("/den/locations/modify/{action}/{uuid}", name="location-modify") */ public function modifyLocation( Request $request, Auth $auth, HandleLocations $locations, ManagerRegistry $doctrine, FileUploader $uploader, Render $render, string $action = "add", string $uuid = "001" ): Response { $result = $auth->status(); if ($result["status"]) { if ($request->getMethod() == "GET") { $options = []; if ($action == 'add') { return $render->page( ["mode" => $action], "Bad Space | Locations | Add", "back/locations.twig" ); } else { $location = $locations->getLocationbyUUID($uuid); return $render->page( ["mode" => $action, "location" => $location[0]], "Bad Space | Locations | Edit", "back/locations.twig" ); } } else { //add new member $token = $request->get("token"); $notice = ""; $mode = $request->get("mode"); //token check if (!$this->isCsrfTokenValid("upload", $token)) { $logger->info("CSRF failure"); return new Response( "Operation not allowed", Response::HTTP_BAD_REQUEST, [ "content-type" => "text/plain", ] ); } if ( $request->request->get("loc_name") == "" || $request->request->get("loc_url") == "" || $request->request->get("loc_desc") == "" || $request->request->get("loc_tags") == "" ) { $notice = "All fields are required, champ."; return $render->page( ["mode" => "add", "notice" => $notice], "Bad Space | Locations | Add", "back/locations.twig" ); } //once everything clears, upload images and process request $examples = []; $files = $request->files->get("loc_examples"); if (!empty($files)) { for ($i = 0; $i < count($files); $i++) { $path = $files[$i]->getClientOriginalName(); array_push($examples, ["image_index" => $i, "path" => urlencode($path)]); $uploader->uploadExamples("../public/assets/images/examples", $files[$i]); } } $response = $locations->modifyLocation($request, $result["id"], $mode, $request->request->get("uuid")); if ($response["status"]) { if ($mode == 'add') { return $render->page( ["mode" => $mode, "notice" => $response["message"]], "Bad Space | Locations | Add", "back/locations.twig" ); } else { $location = $locations->getLocationbyUUID($request->request->get("uuid")); return $render->page( ["mode" => $mode, "notice" => $response["message"], "location" => $location[0]], "Bad Space | Locations | Edit", "back/locations.twig" ); } } else { return $render->page( ["mode" => $mode, "notice" => $response["message"]], "Bad Space | Locations | Error", "back/locations.twig" ); } } } else { //back to index to login header("Location:/den"); return new Response("LOGGED IN"); } } /** * @Route("/den/locations/bulk-add", name="location-bulk-add") */ public function bulkAddLocation( Request $request, Auth $auth, HandleLocations $locations, HandleImports $imports, ManagerRegistry $doctrine, FileUploader $uploader, Render $render ): Response { $result = $auth->status(); if ($result["status"]) { if ($request->getMethod() == "GET") { return $render->page( ["mode" => "bulk-add"], "Bad Space | Locations | Bulk Add", "back/locations.twig" ); } else { // do posting stuff $token = $request->get("token"); $entityManager = $doctrine->getManager(); $notice = ''; $type = $request->get("input_type"); if (!$this->isCsrfTokenValid("upload", $token)) { $logger->info("CSRF failure"); return new Response( "Operation not allowed", Response::HTTP_BAD_REQUEST, [ "content-type" => "text/plain", ] ); } //get file from post $file = $request->files->get("myfile"); //grab extension if (!empty($file)) { $extention = substr(strrchr($file->getClientOriginalName(), "."), 1); } //check it out to make sure it's cool if ( empty($file) || $extention != "csv" ) { if (empty($file)) { $notice = 'You didn\'t select a file, boss'; } elseif ($extention != "csv") { $notice = "Only files of type .csv are accepted, slick. " . $extention; } return $this->render("back/locations.twig", [ "title" => "Bad Space | Locations | Add", "notice" => $notice, "mode" => "bulk-add" ]); } //if it's cool, send it to be processed if ($type == "tbs" || $type == "") { $response = $locations->addMultipleLocations($file, $result["id"]); } else { $response = $imports->importLocations($file, $result["id"]); } if ($response["status"]) { $notice = "New locations added! Take a break."; return $render->page( ["mode" => "bulk-add", "notice" => $response["message"], ], "Bad Space | Locations | Bulk Add", "back/locations.twig" ); } else { return $render->page( ["mode" => "bulk-add", "notice" => $response["message"], ], "Bad Space | Locations | Bulk Add", "back/locations.twig" ); } } } else { header("Location:/den"); return new Response("LOGGED IN"); } } }