174 lines
6.7 KiB
PHP
174 lines
6.7 KiB
PHP
<?php
|
|
|
|
namespace App\Http\Controllers;
|
|
|
|
use App\Actions\SlugChecker;
|
|
use App\Donation;
|
|
use App\Http\Requests\SlugCheckRequest;
|
|
use App\Knowledgebase;
|
|
use App\KnowledgebaseTopic;
|
|
use App\Language;
|
|
use Illuminate\Http\Request;
|
|
use Illuminate\Support\Str;
|
|
|
|
class KnowledgebaseController extends Controller
|
|
{
|
|
public function __construct()
|
|
{
|
|
$this->middleware('auth:admin');
|
|
}
|
|
|
|
public function all_knowledgebases()
|
|
{
|
|
$all_articles = Knowledgebase::all()->groupBy('lang');
|
|
return view('backend.knowledgebase.all-knowledgebase')->with(['all_article' => $all_articles]);
|
|
}
|
|
|
|
public function new_knowledgebase()
|
|
{
|
|
$all_languages = Language::all();
|
|
$all_topics = KnowledgebaseTopic::where(['status' => 'publish', 'lang' => get_default_language()])->get();
|
|
|
|
return view('backend.knowledgebase.new-knowledgebase')->with(['all_languages' => $all_languages, 'all_topics' => $all_topics]);
|
|
}
|
|
|
|
public function store_knowledgebases(Request $request)
|
|
{
|
|
$this->validate($request, [
|
|
'title' => 'required|string',
|
|
'topic_content' => 'required|string',
|
|
'topic_id' => 'required|string|max:191',
|
|
'status' => 'required|string|max:191',
|
|
'lang' => 'required|string|max:191',
|
|
'slug' => 'nullable|string|max:191',
|
|
'meta_tags' => 'nullable|string|max:191',
|
|
'meta_description' => 'nullable|string|max:191',
|
|
]);
|
|
$slug = !empty($request->slug) ? $request->slug : Str::slug($request->title,$request->lang);
|
|
$slug_check = Knowledgebase::where(['slug' => $slug,'lang' => $request->lang])->count();
|
|
$slug = $slug_check > 0 ? $slug.'2' : $slug;
|
|
Knowledgebase::create([
|
|
'title' => $request->title,
|
|
'content' => $request->topic_content,
|
|
'topic_id' => $request->topic_id,
|
|
'status' => $request->status,
|
|
'lang' => $request->lang,
|
|
'meta_tags' => $request->meta_tags,
|
|
'meta_description' => $request->meta_description,
|
|
'slug' => $slug
|
|
]);
|
|
|
|
return redirect()->back()->with(['msg' => __('New Article Added Success...'), 'type' => 'success']);
|
|
}
|
|
|
|
public function clone_knowledgebases(Request $request)
|
|
{
|
|
|
|
$knowledgebase_item = Knowledgebase::find($request->item_id);
|
|
Knowledgebase::create([
|
|
'title' => $knowledgebase_item->title,
|
|
'content' => $knowledgebase_item->content,
|
|
'topic_id' => $knowledgebase_item->topic_id,
|
|
'meta_tags' => $knowledgebase_item->meta_tags,
|
|
'meta_description' => $knowledgebase_item->meta_description,
|
|
'status' => 'draft',
|
|
'lang' => $knowledgebase_item->lang,
|
|
'slug' => !empty($knowledgebase_item->slug) ? $knowledgebase_item->slug : Str::slug($knowledgebase_item->title)
|
|
]);
|
|
|
|
return redirect()->back()->with(['msg' => __('Article Clone Success...'), 'type' => 'success']);
|
|
}
|
|
|
|
public function delete_knowledgebases($id)
|
|
{
|
|
Knowledgebase::find($id)->delete();
|
|
|
|
return redirect()->back()->with(['msg' => __('Knowledgebase Item Delete Success...'), 'type' => 'danger']);
|
|
}
|
|
|
|
public function edit_knowledgebases($id)
|
|
{
|
|
$articles = Knowledgebase::find($id);
|
|
$all_languages = Language::all();
|
|
$all_topics = KnowledgebaseTopic::where(['status' => 'publish', 'lang' => $articles->lang])->get();
|
|
|
|
return view('backend.knowledgebase.edit-knowledgebase')->with(['articles' => $articles, 'all_languages' => $all_languages, 'all_topics' => $all_topics]);
|
|
}
|
|
|
|
public function update_knowledgebases(Request $request)
|
|
{
|
|
$this->validate($request, [
|
|
'title' => 'required|string',
|
|
'topic_content' => 'required|string',
|
|
'topic_id' => 'required|string|max:191',
|
|
'status' => 'required|string|max:191',
|
|
'lang' => 'required|string|max:191',
|
|
'meta_tags' => 'nullable|string|max:191',
|
|
'meta_description' => 'nullable|string|max:191',
|
|
]);
|
|
|
|
$slug = !empty($request->slug) ? $request->slug : Str::slug($request->title,$request->lang);
|
|
$slug_check = Knowledgebase::where(['slug' => $slug,'lang' => $request->lang])->count();
|
|
$slug = $slug_check > 1 ? $slug.'2' : $slug;
|
|
|
|
Knowledgebase::find($request->article_id)->update([
|
|
'title' => $request->title,
|
|
'content' => $request->topic_content,
|
|
'topic_id' => $request->topic_id,
|
|
'status' => $request->status,
|
|
'meta_tags' => $request->meta_tags,
|
|
'meta_description' => $request->meta_description,
|
|
'lang' => $request->lang,
|
|
'slug' => $slug
|
|
]);
|
|
|
|
return redirect()->back()->with(['msg' => __('Article Update Success...'), 'type' => 'success']);
|
|
}
|
|
|
|
public function page_settings()
|
|
{
|
|
$all_languages = Language::all();
|
|
$all_topics = KnowledgebaseTopic::where(['status' => 'publish', 'lang' => get_default_language()])->get();
|
|
return view('backend.knowledgebase.knowledgebase-page-settings')->with(['all_languages' => $all_languages, 'all_topics' => $all_topics]);
|
|
}
|
|
|
|
public function update_page_settings(Request $request)
|
|
{
|
|
$all_language = Language::all();
|
|
foreach ($all_language as $lang) {
|
|
$this->validate($request, [
|
|
'site_knowledgebase_category_' . $lang->slug . '_title' => 'nullable',
|
|
'site_knowledgebase_popular_widget_' . $lang->slug . '_title' => 'nullable',
|
|
'site_knowledgebase_article_topic_' . $lang->slug . '_title' => 'nullable',
|
|
]);
|
|
|
|
$fields = [
|
|
'site_knowledgebase_category_' . $lang->slug . '_title',
|
|
'site_knowledgebase_popular_widget_' . $lang->slug . '_title',
|
|
'site_knowledgebase_article_topic_' . $lang->slug . '_title'
|
|
];
|
|
foreach ($fields as $field){
|
|
update_static_option($field, $request->$field);
|
|
}
|
|
}
|
|
|
|
update_static_option('site_knoeledgebase_post_items', $request->site_knoeledgebase_post_items);
|
|
|
|
return redirect()->back()->with(['msg' => __('Knowledgebase Page Settings Update Success...'), 'type' => 'success']);
|
|
}
|
|
|
|
public function bulk_action(Request $request){
|
|
Knowledgebase::whereIn('id',$request->ids)->delete();
|
|
return response()->json(['status' => 'ok']);
|
|
}
|
|
|
|
|
|
public function slug_check(SlugCheckRequest $request){
|
|
|
|
$user_given_slug = $request->slug;
|
|
$query = Knowledgebase::where(['slug' => $user_given_slug]);
|
|
|
|
return SlugChecker::Check($request,$query);
|
|
}
|
|
}
|