content = $contentService; $this->settings = $settingsService; $this->paginate = $paginateService; $this->docs = $docService; $this->sort = $sortingService; $this->render = $renderService; $this->pages = $this->content->loadAllPages(); } public function getAll() { return $this->pages; } public function getById($uuid) { $page = $this->pages->where('uuid', $uuid)->first(); //quick check to see if layout is set $page['layout'] == '' ? $page['layout'] = 'page' : $page['layout'] = $page['layout']; return $page; } public function getBySlug($slug) { $page = $this->pages->where('slug', $slug)->first(); //quick check to see if layout is set $page['layout'] == '' ? $page['layout'] = 'page' : $page['layout'] = $page['layout']; return $page; } public function delete($uuid) { } public function create($page) { return $this->editPage($page, null, 'create'); } public function update($page) { return $this->editPage($page, $this->pages->where('uuid', $page->uuid)->first(), 'update'); } public function getGroup($num, $limit, $sort = "all") { return $this->paginate->getPage($num, $limit, $sort); } private function editPage($body, $page, $task) { $path; $file; $writePath; $message; $deleted; if ($task != 'create') { $path = date('Y', date($page['rawCreated'])) . '/' . date('m', date($page['rawCreated'])); } else { $path = date('Y') . '/' . date('m'); } if ($task == 'delete') { $deleted = 'true'; $body->menu = 'false'; $body->published = 'false'; $body->featured = 'false'; } else { $deleted = isset($page['deleted']) ? $page['deleted'] : 'false'; } $created = $task != 'create' ? new Carbon($page['rawCreated']) : Carbon::now(); $updated = Carbon::now(); // grab current index from settings and update $id = $task != 'create' ? $body->id : $this->settings->getSettings()['library_stats']['current_index']; $uuid = $task != 'create' ? $body->uuid : createUUID(); //set variables post body for saving $body->id = $id; $body->uuid = $uuid; $body->path = $path; $body->author = session('member')['handle']; $body->created = $created->format("Y-m-d\TH:i:sP"); $body->updated = $updated->format("Y-m-d\TH:i:sP"); $body->deleted = $deleted; //set path to save file if ($body->layout == 'index') { $writePath = '../content/pages/start/index.md'; } else { $writePath = '../content/pages/' . $path . '/' . $body->slug . '.md'; } //write file to path $saved = $this->docs::writePages($task, $path, $writePath, $this->docs::objectToMD($body)); //handle post save result if ($saved) { if ( $this->settings->getGlobal()['renderOnSave'] == 'true' && $this->settings->getGlobal()['dynamicRender'] == 'false' ) { $this->render->tags(); $this->render->archive(); $this->render->pages(); $message = 'Filed edited and rendered. NOICE.'; } else { $message = 'File edited. Nice work'; } //upadte settings if needed $body->path = $path; $this->settings->updateMenu($body); $this->settings->updateTags($this->sort->tags()); // if new page added, update current index in Settings file if ($task == 'create') { $this->settings->updatePageIndex(); } return [ 'message' => $message, 'type' => $task == 'update' ? 'postUpdated' : 'postAdded', 'id' => $uuid, ]; } else { return $response = [ 'message' => "Uh oh. File save problem. Don't panic", 'type' => 'postError', 'id' => $uuid, ]; } } }