/** * Post route for creating / updating documents. */ public function postDocs() { $user = Auth::user(); if (!$user->can('admin_manage_documents')) { // If there's a group if (Input::get('group_id')) { $groupUser = User::with('groups')->whereHas('groups', function ($query) { $query->where('status', 'active'); $query->where('group_id', Input::get('group_id')); })->find($user->id); if (!isset($groupUser->id)) { return Response::json($this->growlMessage("You do not have permission", 'error')); } } elseif (!$user->getSponsorStatus()) { return Response::json($this->growlMessage("You do not have permission", 'error')); } } //Creating new document $title = Input::get('title'); $slug = Input::get('slug', str_replace(array(' ', '.'), array('-', ''), strtolower($title))); // If the slug is taken if (Doc::where('slug', $slug)->count()) { $counter = 0; $tooMany = 10; do { if ($counter > $tooMany) { return Response::json($this->growlMessage('Can\'t create document with that name, please try another.', 'error')); } $counter++; $new_slug = $slug . '-' . str_random(8); } while (Doc::where('slug', $new_slug)->count()); $slug = $new_slug; } $doc_details = Input::all(); $rules = array('title' => 'required'); $validation = Validator::make($doc_details, $rules); if ($validation->fails()) { return Response::json($this->growlMessage('A valid title is required.', 'error')); } try { $doc = new Doc(); $doc->title = $title; $doc->slug = $slug; $doc->save(); if (Input::get('group_id')) { $doc->groupSponsors()->sync(array(Input::get('group_id'))); } else { $doc->userSponsors()->sync(array($user->id)); } $starter = new DocContent(); $starter->doc_id = $doc->id; $starter->content = "New Doc Content"; $starter->save(); $doc->init_section = $starter->id; $doc->save(); $response = $this->growlMessage('Document created successfully', 'success'); $response['doc'] = $doc->toArray(); return Response::json($response, 200); } catch (Exception $e) { return Response::json($this->growlMessage($e->getMessage(), 'error')); } }