![]() Server : Apache/2 System : Linux server-15-235-50-60 5.15.0-164-generic #174-Ubuntu SMP Fri Nov 14 20:25:16 UTC 2025 x86_64 User : gositeme ( 1004) PHP Version : 8.2.29 Disable Function : exec,system,passthru,shell_exec,proc_close,proc_open,dl,popen,show_source,posix_kill,posix_mkfifo,posix_getpwuid,posix_setpgid,posix_setsid,posix_setuid,posix_setgid,posix_seteuid,posix_setegid,posix_uname Directory : /home/gositeme/domains/pdf-ai.com/private_html/app/Http/Controllers/ |
<?php
namespace App\Http\Controllers;
use Illuminate\Support\Facades\Mail;
use Illuminate\Support\Facades\Session;
use Illuminate\Http\Request;
use App\Mail\ContactFormEmail;
use App\Models\SubscriptionPlan;
use App\Models\PrepaidPlan;
use App\Models\Setting;
use App\Models\Template;
use App\Models\Blog;
use App\Models\Review;
use App\Models\Page;
use App\Models\Faq;
use Carbon\Carbon;
class HomeController extends Controller
{
/**
* Show home page
*/
public function index()
{
$review_exists = Review::count();
$reviews = Review::all();
$information = $this->metadataInformation();
$faq_exists = Faq::count();
$faqs = Faq::where('status', 'visible')->get();
$blog_exists = Blog::count();
$blogs = Blog::where('status', 'published')->get();
$monthly = SubscriptionPlan::where('status', 'active')->where('payment_frequency', 'monthly')->count();
$yearly = SubscriptionPlan::where('status', 'active')->where('payment_frequency', 'yearly')->count();
$prepaid = PrepaidPlan::where('status', 'active')->count();
$monthly_subscriptions = SubscriptionPlan::where('status', 'active')->where('payment_frequency', 'monthly')->get();
$yearly_subscriptions = SubscriptionPlan::where('status', 'active')->where('payment_frequency', 'yearly')->get();
$prepaids = PrepaidPlan::where('status', 'active')->get();
$other_templates = Template::orderBy('group', 'asc')->get();
return view('home', compact('information', 'blog_exists', 'blogs', 'faq_exists', 'faqs', 'review_exists', 'reviews', 'monthly', 'yearly', 'monthly_subscriptions', 'yearly_subscriptions', 'prepaids', 'prepaid', 'other_templates'));
}
/**
* Display terms & conditions page
*
*/
public function termsAndConditions()
{
$information = $this->metadataInformation();
$pages_rows = ['terms'];
$pages = [];
$page = Page::all();
foreach ($page as $row) {
if (in_array($row['name'], $pages_rows)) {
$pages[$row['name']] = $row['value'];
}
}
return view('service-terms', compact('information', 'pages'));
}
/**
* Display privacy policy page
*
*/
public function privacyPolicy()
{
$information = $this->metadataInformation();
$pages_rows = ['privacy'];
$pages = [];
$page = Page::all();
foreach ($page as $row) {
if (in_array($row['name'], $pages_rows)) {
$pages[$row['name']] = $row['value'];
}
}
return view('privacy-policy', compact('information', 'pages'));
}
/**
* Frontend show blog
*
*/
public function blogShow($slug)
{
$blog = Blog::where('url', $slug)->firstOrFail();
$information_rows = ['js', 'css'];
$information = [];
$settings = Setting::all();
foreach ($settings as $row) {
if (in_array($row['name'], $information_rows)) {
$information[$row['name']] = $row['value'];
}
}
$information['author'] = $blog->created_by;
$information['title'] = $blog->title;
$information['keywords'] = $blog->keywords;
$information['description'] = $blog->title;
return view('blog-show', compact('information', 'blog'));
}
/**
* Frontend contact us form record
*
*/
public function contact(Request $request)
{
request()->validate([
'name' => 'required|string',
'lastname' => 'required|string',
'email' => 'required|email',
'phone' => 'required',
'message' => 'required',
]);
if (config('services.google.recaptcha.enable') == 'on') {
$recaptchaResult = $this->reCaptchaCheck(request('recaptcha'));
if ($recaptchaResult->success != true) {
return redirect()->back()->with('error', 'Google reCaptcha Validation has Failed');
}
if ($recaptchaResult->score >= 0.5) {
try {
Mail::to(config('mail.from.address'))->send(new ContactFormEmail($request));
if (Mail::flushMacros()) {
return redirect()->back()->with('error', 'Sending email failed, please try again.');
}
} catch (\Exception $e) {
return redirect()->back()->with('error', 'SMTP settings were not set yet, please contact support team. ' . $e->getMessage());
}
return redirect()->back()->with('success', 'Email was successfully sent');
} else {
return redirect()->back()->with('error', 'Google reCaptcha Validation has Failed');
}
} else {
try {
Mail::to(config('mail.from.address'))->send(new ContactFormEmail($request));
if (Mail::flushMacros()) {
return redirect()->back()->with('error', 'Sending email failed, please try again.');
}
} catch (\Exception $e) {
return redirect()->back()->with('error', 'SMTP settings were not set yet, please contact support team. ' . $e->getMessage());
}
return redirect()->back()->with('success', 'Email was successfully sent');
}
}
/**
* Verify reCaptch for frontend contact us page (if enabled)
*
*/
private function reCaptchaCheck($recaptcha)
{
$url = 'https://www.google.com/recaptcha/api/siteverify';
$remoteip = $_SERVER['REMOTE_ADDR'];
$data = [
'secret' => config('services.google.recaptcha.secret_key'),
'response' => $recaptcha,
'remoteip' => $remoteip
];
$options = [
'http' => [
'header' => "Content-type: application/x-www-form-urlencoded\r\n",
'method' => 'POST',
'content' => http_build_query($data)
]
];
$context = stream_context_create($options);
$result = file_get_contents($url, false, $context);
$resultJson = json_decode($result);
return $resultJson;
}
public function metadataInformation()
{
$information_rows = ['title', 'author', 'keywords', 'description', 'js', 'css'];
$information = [];
$settings = Setting::all();
foreach ($settings as $row) {
if (in_array($row['name'], $information_rows)) {
$information[$row['name']] = $row['value'];
}
}
return $information;
}
}