tags = json_decode(file_get_contents(env('TAGS_PATH')), true); } else { $this->tags = []; } } protected function loadSettings() { $settings = []; //if config files aren't avaiable, load templates if (file_exists(env('SETTINGS_PATH'))) { $settings = json_decode(file_get_contents(env('SETTINGS_PATH')), true); } else { $settings = json_decode( file_get_contents('../content/init/settings-template.json'), true ); } return $settings; } public function getSettings() { return $this->loadSettings(); } public function getGlobal() { $this->settings = $this->loadSettings(); return $this->settings['global']; } public function getEmail() { $this->settings = $this->loadSettings(); return $this->settings['email']; } public function getMenu() { $this->settings = $this->loadSettings(); return $this->settings['menu']; } public function getTags() { return $this->tags; } public function updatePageIndex() { $this->settings = $this->loadSettings(); $this->settings['library_stats']['current_index']++; $this->docs->writeSettings($this->settings); } public function updateGlobalData($key, $value) { $this->settings = $this->loadSettings(); $this->settings['global'][$key] = $value; $this->docs->writeSettings($this->settings); } public function updateMenu($body) { $settings = $this->loadSettings(); //$menu = $settings["menu"]; $item = [ 'title' => $body->title, 'id' => $body->id, 'uuid' => $body->uuid, 'slug' => $body->slug, 'path' => $body->path, ]; if ($body->menu == 'true') { if (!find($settings['menu'], ['uuid' => $item['uuid']])) { array_push($settings['menu'], $item); } } else { if (find($settings['menu'], ['uuid' => $item['uuid']])) { pull($settings['menu'], $item); } } $this->docs->writeSettings($settings); } public function updateTags($update) { $this->docs->writeSettings($update, env('TAGS_PATH')); } public function sync($data) { //dd($data->global->renderOnSave); $settings = $this->getSettings(); $settings['global']['base_url'] = $data->global->base_url; $settings['global']['title'] = $data->global->title; $settings['global']['descriptions'] = $data->global->descriptions; $settings['global']['private'] = $data->global->private; $settings['global']['renderOnSave'] = $data->global->renderOnSave; $settings['global']['theme'] = $data->global->theme; $settings['global']['externalAPI'] = $data->global->externalAPI; $settings['global']['dynamicRender'] = $data->global->dynamicRender; //TODO: This is for to be created MemberServices //Member::updateData('handle', $data['member']['handle']); //Member::updateData('email', $data['member']['email']); $settings['email']['active'] = $data->email->active; $settings['email']['smtp'] = $data->email->smtp; $settings['email']['mailgun'] = $data->email->mailgun; return $this->docs->writeSettings($settings); } public function navSync($data) { $settings = $this->loadSettings(); $pages = $this->contents->loadAllPages(); $remove = $data->remove; $result = []; //if remove contains id, find nav item page and set menu to false if ($remove != null || $remove != '') { $page = $pages->where('uuid', $remove)->first(); $page['menu'] = 'false'; $page['published'] ? ($page['published'] = 'true') : ($page['published'] = 'false'); $page['featured'] ? ($page['featured'] = 'true') : ($page['featured'] = 'false'); $page['deleted'] ? ($page['deleted'] = 'true') : ($page['deleted'] = 'false'); $updated = Carbon::now(); $created = new Carbon($page['rawCreated']); $page['created'] = $created->format("Y-m-d\TH:i:sP"); $page['updated'] = $updated->format("Y-m-d\TH:i:sP"); if ($page['layout'] == 'index') { $writePath = '../content/pages/start/index.md'; } else { $writePath = '../content/pages/' . $page['path'] . '/' . $page['slug'] . '.md'; } try { $object = (object) $page; $object->imageList = $page['feature']; $object->fileList = $page['files']; $this->docs::writePages('write', $page['path'], $writePath, $this->docs::objectToMD($object)); } catch (\Exception $e) { $result = [ 'message' => 'Page Was Not Updated. Be cool ', 'type' => 'pageUpdateError', 'error' => $e->getMessage(), ]; return $result; } } $settings['menu'] = []; $items = $data->menu; foreach ($items as $item) { array_push($settings['menu'], [ 'title' => $item->title, 'id' => $item->id, 'uuid' => $item->uuid, 'slug' => $item->slug, 'path' => $item->path, ]); } try { $this->docs->writeSettings($settings); $result = [ 'message' => 'Navigation updated. Very slick!', 'type' => 'menuUpdated', ]; } catch (\Exception $e) { $result = [ 'message' => 'Navigation Update Error. It\'ll be ok!', 'type' => 'menuUpdateError', ]; }; return $result; } }