model = $model; } public function search($request) { // this grabs the search results from the db $terms = $request->index_search; $rawSearch = $terms; $terms = str_replace(",", "", $terms); $terms = str_replace(" ", "|", $terms); $raw = DB::select("SELECT * FROM searchlocations(?)", [$terms]); $results = []; foreach ($raw as $item) { if (($item->block_count + $item->silence_count) >= 2) { array_push($results, $item); } } return $results; } public function getLocation($type) { if (!is_string($type) || (preg_match('/^[0-9a-f]{8}-[0-9a-f]{4}-4[0-9a-f]{3}-[89ab][0-9a-f]{3}-[0-9a-f]{12}$/', $type) !== 1)) { return $this->model::where("url", $type)->first(); } else { return $this->model::where("uuid", $type)->first(); } } public function getActiveLocations() { return $this->model::where("active", true)->where('actions_count', '>=', 2)->get(); } public function getRecent() { return $locations = $this->model::where("active", true)->where('actions_count', '>=', 2) ->orderByDesc('updated_at')->limit(10)->get(); } public function editLocation($request) { $location = $this->getLocation($request->id); $images = []; if ($request->hasfile("references")) { foreach ($request->references as $file) { $path = $file->store('reference'); array_push($images, ["path" => $path]); } } $request->merge(['images' => json_encode($images)]); $location->name = $request->name; $location->description = $request->description; $location->archive_links = $request->archive_links; $location->images = json_encode($images); $result = []; if ($location->save()) { return ['status' => true, 'message' => "Location Editited -IMG- " . $request->hasfile("references")]; } else { return ['status' => false, 'message' => "Location Not Editited"]; } } public function addLocation(Request $request) { $fields = $request->validate([ 'name' => ['required'], 'url' => ['required'], 'description' => ['required'], 'tags' => ['required'], ]); if ($fields) { $examples = []; $files = $request->files->get("loc_examples"); if ($request->hasfile('loc_examples')) { foreach ($request->file('loc_examples') as $file) { $path = $file->store('reference'); array_push($examples, ["path" => $path]); } } $request->merge(['active' => true]); $request->merge(['uuid' => Uuid::uuid4()]); $request->merge(['images' => json_encode($examples)]); $request->merge(['added_by' => Auth::user()->id]); //NOTE: Laravel gets funky if sequencing isn't explicitly set $new = Location::create($request->all()); if ($new) { return back()->with('message', 'New Location Added. Take a break!'); } else { return back()->withErrors([ 'error' => 'Uh oh. There was an inssue', ]); } } else { return back()->withErrors([ 'error' => 'All fields are required', ]); } } }