/home/techb158/ileadtechnology.com/SSM/app/Repositories/frontend
NameSizeModeActions
BlockRepository.php77150644editdlrm
FrontendRepository.php81310644editdlrm
MenuRepository.php94610644editdlrm
PageRepository.php89040644editdlrm
Edit: /home/techb158/ileadtechnology.com/SSM/app/Repositories/frontend/PageRepository.php (8904B)
page = $page; $this->upload = $upload; } /** * Get page query * * @return Page query */ public function getQuery() { return $this->page; } /** * Count Page * * @return integer */ public function count() { return $this->page->count(); } /** * List all page by title & id * * @return array */ public function listAll() { return $this->page->get()->pluck('title', 'id')->all(); } /** * Get all pages * * @return array */ public function getAll() { return $this->page->all(); } /** * Find page with given id. * * @param integer $id * @return Page */ public function find($id) { return $this->page->filterById($id)->first(); } /** * Find page with given id or throw an error. * * @param integer $id * @return Page */ public function findOrFail($id, $field = 'message') { $page = $this->page->filterById($id)->first(); if (! $page) { throw ValidationException::withMessages([$field => trans('frontend.could_not_find_page')]); } return $page; } /** * Find page with given uuid. * * @param string $uuid * @return Page */ public function findByUuid($uuid) { return $this->page->filterByUuid($uuid)->first(); } /** * Find page with given uuid or throw an error. * * @param string $uuid * @return Page */ public function findByUuidOrFail($uuid, $field = 'message') { $page = $this->page->filterByUuid($uuid)->first(); if (! $page) { throw ValidationException::withMessages([$field => trans('frontend.could_not_find_page')]); } return $page; } /** * Get all filtered data * * @param array $params * @return Page */ public function getData($params) { $sort_by = gv($params, 'sort_by', 'title'); $order = gv($params, 'order', 'asc'); $title = gv($params, 'title'); return $this->page->filterByTitle($title)->orderBy($sort_by, $order); } /** * Paginate all page using given params. * * @param array $params * @return \Illuminate\Contracts\Pagination\LengthAwarePaginator */ public function paginate($params) { $page_length = gv($params, 'page_length', config('config.page_length')); return $this->getData($params)->paginate($page_length); } /** * Get all filtered data for printing * * @param array $params * @return Page */ public function print($params) { return $this->getData($params)->get(); } /** * Create a new page. * * @param array $params * @return Page */ public function create($params) { $page = $this->page->forceCreate($this->formatParams($params)); $this->processUpload($page, $params); return $page; } /** * Prepare given params for inserting into database. * * @param array $params * @param string $type * @return array */ private function formatParams($params, $page_id = null) { $title = gv($params, 'title'); $body = gv($params, 'body'); $is_draft = gbv($params, 'is_draft'); $this->validateSlider($params); $formatted = [ 'title' => $title, 'body' => cleanBody($body), 'is_draft' => $is_draft ]; $options['show_blocks'] = gbv($params, 'show_blocks'); $options['show_upcoming_events'] = gbv($params, 'show_upcoming_events'); $options['show_latest_articles'] = gbv($params, 'show_latest_articles'); $options['has_slider'] = gbv($params, 'has_slider'); if (! $page_id) { $formatted['upload_token'] = gv($params, 'upload_token'); $formatted['uuid'] = Str::uuid(); } if (gbv($params, 'has_slider')) { $options['sliders'] = gv($params, 'sliders'); } $formatted['options'] = $options; return $formatted; } private function validateSlider($params) { if (! gbv($params, 'has_slider')) { return; } $sliders = gv($params, 'sliders', []); if (! $sliders) { throw ValidationException::withMessages(['message' => trans('frontend.could_not_find_page_slider_image')]); } foreach ($sliders as $slider) { $title = gv($slider, 'title'); $description = gv($slider, 'description'); $image = gv($slider, 'image'); if (! $image) { throw ValidationException::withMessages(['message' => trans('validation.required', ['attribute' => trans('frontend.slider_image')])]); } $image = str_replace('storage/', '', $image); if (! \Storage::disk('public')->exists($image)) { throw ValidationException::withMessages(['message' => trans('frontend.could_not_find_page_slider_image')]); } if (! $description) { throw ValidationException::withMessages(['message' => trans('validation.required', ['attribute' => trans('frontend.slider_image_description')])]); } if (! $title) { throw ValidationException::withMessages(['message' => trans('validation.required', ['attribute' => trans('frontend.slider_image_title')])]); } } } private function updateSliderIfRequired(Page $page, $params) { if (! gbv($params, 'has_slider')) { return; } $sliders = gv($params, 'sliders', []); $page_sliders = $page->getOption('sliders'); foreach ($sliders as $index => $slider) { $image = gv($slider, 'image'); $page_slider = (is_array($page_sliders) && array_key_exists($index, $page_sliders)) ? $page_sliders[$index] : []; $page_slider_image = gv($page_slider, 'image'); if ($page_slider_image && $page_slider_image != $image) { $image = str_replace('storage/', '', $page_slider_image); if (\Storage::disk('public')->exists($image)) { \Storage::disk('public')->delete($image); } } } } /** * Upload attachment * * @param Page $page * @param array $params * @param string $action * @return void */ public function processUpload(Page $page, $params = array(), $action = 'create') { $upload_token = gv($params, 'upload_token'); if ($action === 'create') { $this->upload->store($this->module, $page->id, $upload_token); } else { $this->upload->update($this->module, $page->id, $upload_token); } } /** * Is given page accessible. * * @param Page $page * * @return bool */ public function isAccessible(Page $page) { if (! \Auth::check() && $page->is_draft) { throw ValidationException::withMessages(['message' => trans('general.invalid_link')]); } } /** * Update given page. * * @param Page $page * @param array $params * * @return Page */ public function update(Page $page, $params) { $this->updateSliderIfRequired($page, $params); $page->forceFill($this->formatParams($params, $page->id))->save(); $this->processUpload($page, $params, 'update'); return $page; } /** * Delete page. * * @param integer $id * @return bool|null */ public function delete(Page $page) { if ($page->menu && $page->menu->getOption('is_default')) { throw ValidationException::withMessages(['message' => trans('frontend.could_not_modify_default_menu')]); } return $page->delete(); } /** * Delete multiple page. * * @param array $ids * @return bool|null */ public function deleteMultiple($ids) { return $this->page->whereIn('id', $ids)->delete(); } }