/** * Inserts a new outline into the database * * @param Request $request * * @return Response */ public function postCreate(Request $request) { $validator = Validator::make($request->all(), ['name' => 'required|min:3|max:255', 'description' => 'min:3']); if ($validator->fails()) { return redirect('/outlines/create')->withErrors($validator)->withInput(); } // Validator passed? Then create. $outline = new Outline(); $outline->name = $request->name; $outline->description = $request->description; $outline->save(); if (count($request->tags) > 0) { foreach ($request->tags as $tagname) { $tag = Tag::firstOrCreate(["name" => $tagname]); $outline->tags()->attach($tag->id); } } if (count($request->references) > 0) { foreach ($request->references as $referenceId) { try { $ref = Reference::findOrFail($referenceId); // If this line is executed the model exists $outline->references()->attach($ref->id); } catch (ModelNotFoundException $e) { // Do nothing } } } // For now let's add the user some notes return redirect('notes/create/' . $outline->id); }
/** * Inserts imported and parsed notes into the database * * @param Request $request * * @return Response */ public function insertImport(Request $request) { if ($request->createOutline) { $outline = new Outline(); $outline->name = $request->outlineName; $outline->description = $request->outlineDescription; $outline->save(); // $index = 0; } // Just copy the code from NoteController@postCreate foreach ($request->title as $index => $title) { $note = new Note(); $note->title = $title; $note->content = $request->content[$index]; $note->save(); if ($request->createOutline) { $outline->notes()->attach($note, ["index" => $index + 1]); } // Now fill the join table // Fix: Sometimes there are just no tags attached to a note // and in these situations, Zettlr broke. Now the existence of // the variable is previously tested before the length is checked if (isset($request->tags[$index]) && count($request->tags[$index]) > 0) { if (array_key_exists($index, $request->tags) && count($request->tags[$index]) > 0) { foreach ($request->tags[$index] as $tagname) { $tag = Tag::firstOrCreate(["name" => $tagname]); $note->tags()->attach($tag->id); } } } // $index++; } if ($request->createOutline) { return redirect('/outlines/show/' . $outline->id); } // Redirect to the main page for now return redirect('/'); }