_config = request('_config'); $this->velocityHelper = app('Webkul\Velocity\Helpers\Helper'); $this->velocityMetaDataRepository = $velocityMetadataRepository; $this->locale = request()->get('locale') ?: app()->getLocale(); $this->channel = request()->get('channel') ?: 'default'; } /** * Render meta data. * * @return \Illuminate\View\View */ public function renderMetaData() { $this->locale = request()->get('locale') ? request()->get('locale') : app()->getLocale(); $velocityMetaData = $this->velocityHelper->getVelocityMetaData($this->locale, $this->channel, false); if (! $velocityMetaData) { $this->createMetaData($this->locale, $this->channel); $velocityMetaData = $this->velocityHelper->getVelocityMetaData($this->locale, $this->channel); } $velocityMetaData->advertisement = $this->manageAddImages(json_decode($velocityMetaData->advertisement, true) ?: []); return view($this->_config['view'], [ 'metaData' => $velocityMetaData, ]); } /** * Store meta data. * * @param int $id * @return \Illuminate\Http\Response */ public function storeMetaData($id) { // check if radio button value if (request()->get('slides') == "on") { $params = request()->all() + [ 'slider' => 1, ]; } else { $params = request()->all() + [ 'slider' => 0, ]; } $velocityMetaData = $this->velocityMetaDataRepository->findOneWhere([ 'id' => $id, ]); $advertisement = json_decode($velocityMetaData->advertisement, true); $params['advertisement'] = []; if (isset($params['images'])) { foreach ($params['images'] as $index => $images) { $params['advertisement'][$index] = $this->uploadAdvertisementImages($images, $index, $advertisement); } if ($advertisement) { foreach ($advertisement as $key => $image_array) { if (! isset($params['images'][$key])) { foreach ($advertisement[$key] as $image) { Storage::delete($image); } } } } } $params['advertisement'] = json_encode($params['advertisement']); $params['home_page_content'] = str_replace('=>', '=>', $params['home_page_content']); unset($params['images']); unset($params['slides']); $params['locale'] = $this->locale; // update row $product = $this->velocityMetaDataRepository->update($params, $id); session()->flash('success', trans('admin::app.response.update-success', ['name' => trans('velocity::app.admin.meta-data.title')])); return redirect()->route($this->_config['redirect'], ['locale' => $this->locale]); } /** * Upload advertisement images. * * @param array $data * @param int $index * @param array $advertisement * @return array */ public function uploadAdvertisementImages($data, $index, $advertisement) { $saveImage = []; $saveData = $advertisement; foreach ($data as $imageId => $image) { if ($image != "") { $file = 'images.' . $index . '.' . $imageId; $dir = 'velocity/images'; if (Str::contains($imageId, 'image_')) { if (request()->hasFile($file) && $image) { $filter_index = substr($imageId, 6, 1); if (isset($data[$filter_index])) { $size = array_key_last($saveData[$index]); $saveImage[$size + 1] = $path = request()->file($file)->store($dir); } else { $saveImage[substr($imageId, 6, 1)] = $path = request()->file($file)->store($dir); } if ($image->getMimeType() === 'image/svg') { $this->sanitizeSVG($path); } } } else { if (isset($advertisement[$index][$imageId]) && $advertisement[$index][$imageId] && !request()->hasFile($file)) { $saveImage[$imageId] = $advertisement[$index][$imageId]; unset($advertisement[$index][$imageId]); } if (request()->hasFile($file) && isset($advertisement[$index][$imageId])) { Storage::delete($advertisement[$index][$imageId]); $saveImage[$imageId] = request()->file($file)->store($dir); } } } else { if ($saveData) { $subIndex = substr($imageId, -1); if (isset($advertisement[$index][$subIndex])) { $saveImage[$subIndex] = $advertisement[$index][$subIndex]; if (sizeof($advertisement[$index]) == 1) { unset($advertisement[$index]); } else { unset($advertisement[$index][$subIndex]); } } } } } if (isset($advertisement[$index]) && $advertisement[$index]) { foreach ($advertisement[$index] as $imageId) { Storage::delete($imageId); } } return $saveImage; } /** * Manage add images. * * @param array $addImages * * @return array */ public function manageAddImages($addImages) { $imagePaths = []; foreach ($addImages as $id => $images) { foreach ($images as $key => $image) { if ($image) { continue; } $imagePaths[$id][] = [ 'id' => $key, 'type' => null, 'path' => $image, 'url' => Storage::url($image), ]; } } return $imagePaths; } /** * Create meta data. * * @param string $locale * @param string $channel * * @return array */ private function createMetaData($locale, $channel) { \DB::table('velocity_meta_data')->insert([ 'locale' => $locale, 'channel' => $channel, 'header_content_count' => '5', 'home_page_content' => "

@include('shop::home.advertisements.advertisement-four')@include('shop::home.featured-products') @include('shop::home.product-policy') @include('shop::home.advertisements.advertisement-three') @include('shop::home.new-products') @include('shop::home.advertisements.advertisement-two')

", 'footer_left_content' => __('velocity::app.admin.meta-data.footer-left-raw-content'), 'footer_middle_content' => '
', 'slider' => 1, 'subscription_bar_content' => '
', 'product_policy' => '
Free Shipping on Order $20 or More
Product Replace & Return Available
Product Exchange and EMI Available
', ]); } /** * Sanitize SVG file. * * @param string $path * @return void */ private function sanitizeSVG($path) { /* sanitizer instance */ $sanitizer = new Sanitizer(); /* grab svg file */ $dirtySVG = Storage::get($path); /* save sanitized svg */ Storage::put($path, $sanitizer->sanitize($dirtySVG)); } }