shell bypass 403

UnknownSec Shell


name : QuizController.php
<?php

namespace App\Http\Controllers\Frontend;

use App\Http\Controllers\Controller;
use App\LessonComplete;
use Brian2694\Toastr\Facades\Toastr;
use Carbon\Carbon;
use Illuminate\Http\Request;
use Illuminate\Support\Facades\Auth;
use Illuminate\Support\Facades\DB;
use Modules\CourseSetting\Entities\Course;
use Modules\CourseSetting\Entities\CourseComment;
use Modules\CourseSetting\Entities\CourseEnrolled;
use Modules\CourseSetting\Entities\Lesson;
use Modules\FrontendManage\Entities\FrontPage;
use Modules\Quiz\Entities\OnlineExamQuestionAssign;
use Modules\Quiz\Entities\QuestionBankMuOption;
use Modules\Quiz\Entities\QuizTestDetailsAnswer;
use Modules\Quiz\Entities\QuizMarking;
use Modules\Quiz\Entities\QuizTest;
use Modules\Quiz\Entities\QuizTestDetails;

class QuizController extends Controller
{
    public function __construct()
    {
        $this->middleware('maintenanceMode');
    }

    public function quizzes(Request $request)
    {
        try {
            if (hasDynamicPage()) {
                $row = FrontPage::where('slug', '/quizzes')->first();
                $details = dynamicContentAppend($row->details);
                return view('aorapagebuilder::pages.show', compact('row', 'details'));
            } else {
                return view(theme('pages.quizzes'), compact('request'));
            }

        } catch (\Exception $e) {
            GettingError($e->getMessage(), url()->current(), request()->ip(), request()->userAgent());
        }
    }

    public function quizDetails($slug, Request $request)
    {


        try {

            $course = Course::select(
                'courses.id',
                'courses.type',
                'courses.slug',
                'courses.image',
                'courses.trailer_link',
                'courses.thumbnail',
                'courses.title',
                'courses.level',
                'courses.host',
                'courses.host',
                'courses.status',
                'courses.about',
                'courses.quiz_id',
                'courses.reveiw',
                'courses.duration',
                'courses.type',
                'courses.total_enrolled',
                'courses.special_commission',
                'courses.duration',
                'courses.slug',
                'courses.user_id',
                'courses.price',
                'courses.requirements',
                'courses.outcomes',
                'courses.discount_price',
                'users.name as userName'
            )->leftJoin('users', 'courses.user_id', 'users.id')
                ->where('courses.slug', $slug)->first();
            if (!$course) {
                Toastr::error(trans('common.Operation failed'), trans('common.Failed'));
                return redirect()->back();
            }
            if (isModuleActive('OrgSubscription') && Auth::check()) {
                if (!orgSubscriptionCourseValidity($course->id)) {
                    Toastr::warning(trans('org-subscription.Your Subscription Expire'));
                    return back();
                }
                if (!orgSubscriptionCourseSequence($course->id)) {
                    Toastr::warning(trans('org.subscription.You Can Not Continue This . Pls Complete Previous Course'));
                    return back();
                }
            }

            if (!isViewable($course)) {
                Toastr::error(trans('common.Access Denied'), trans('common.Failed'));
                return redirect()->to(route('quizzes'));
            }

            if (empty($course->quiz->id)) {
                Toastr::error('No Quiz Assign', trans('common.Failed'));
                return \redirect()->back();
            }
            if (Auth::check()) {
                $isEnrolled = $course->isLoginUserEnrolled;
            } else {
                $isEnrolled = false;
            }
            if ($isEnrolled) {
                $enroll = CourseEnrolled::where('user_id', Auth::id())->where('course_id', $course->id)->first();
                if ($enroll) {
                    if ($enroll->subscription == 1) {
                        if (isModuleActive('Subscription')) {
                            if (!isSubscribe()) {
                                Toastr::error('Subscription has expired, Please Subscribe again.', 'Failed');
                                return redirect()->route('courseSubscription');
                            }
                        }
                    }
                }
            }
            $data = '';
            $reviews = DB::table('course_reveiws')
                ->select(
                    'course_reveiws.id',
                    'course_reveiws.star',
                    'course_reveiws.comment',
                    'course_reveiws.instructor_id',
                    'course_reveiws.created_at',
                    'users.id as userId',
                    'users.name as userName',
                )
                ->join('users', 'users.id', '=', 'course_reveiws.user_id')
                ->where('course_reveiws.course_id', $course->id)->paginate(10);

            if ($request->ajax()) {
                if ($request->type == "review") {
                    foreach ($reviews as $review) {
                        $data .= view(theme('partials._single_review'), ['review' => $review, 'isEnrolled' => $isEnrolled, 'course' => $course])->render();
                    }
                    if (count($reviews) == 0) {
                        $data .= '';
                    }
                    return $data;
                }
            }
            $comments = CourseComment::where('course_id', $course->id)->with('replies', 'replies.user', 'user')->paginate(10);

            if ($request->ajax()) {
                if ($request->type == "comment") {
                    foreach ($comments as $comment) {
                        $data .= view(theme('partials._single_comment'), ['comment' => $comment, 'isEnrolled' => $isEnrolled, 'course' => $course])->render();
                    }
                    return $data;
                }

            }
            $course->view = $course->view + 1;
            $course->save();
            return view(theme('pages.quizDetails'), compact('course', 'request', 'isEnrolled'));

        } catch (\Exception $e) {
            GettingError($e->getMessage(), url()->current(), request()->ip(), request()->userAgent());
        }
    }


    public function quizStart($id, $quiz_id, $slug)
    {
        try {
            $course = Course::where('courses.id', $id)->first();
            if (Auth::check() && $course->isLoginUserEnrolled) {
                return view(theme('pages.quizStart'), compact('course', 'quiz_id'));
            } else {
                Toastr::error('Permission Denied', 'Failed');
                return redirect()->back();
            }
        } catch (\Exception $e) {
            GettingError($e->getMessage(), url()->current(), request()->ip(), request()->userAgent());
        }
    }

    public function quizSubmit(Request $request)
    {
        // return $request;
        try {
            $allAns = $request->ans;
            $userId = Auth::id() ?? 0;
            $courseId = $request->get('courseId');
            $quizId = $request->get('quizId');
            $questions = $request->get('question');
            $quiz_test = QuizTest::with('quiz', 'details')->find($request->quiz_test_id);

            if (!$quiz_test) {
                $quiz_test = new QuizTest();
            }

            if ($quiz_test->quiz_id) {
                $marking = QuizMarking::where('quiz_id', $quiz_test->quiz_id)->where('quiz_test_id', $quiz_test->id)->where('student_id', $userId)->first();
            } else {
                $marking = null;
            }

            if ($marking) {
                $quiz_marking = $marking;
            } else {
                $quiz_marking = new QuizMarking();
            }

            $quiz_marking->quiz_id = $quiz_test->quiz_id;
            $quiz_marking->quiz_test_id = $quiz_test->id;
            $quiz_marking->student_id = $userId;

            if (in_array('L', $request->type) || in_array('S', $request->type)) {
                $quiz_marking->marking_status = 0;
                $quiz_test->publish = 0;
            } else {
                $totalCorrect = 0;
                $score = 0;
                if ($quiz_test->details) {
                    foreach ($quiz_test->details as $test) {
                        $score += $test->mark ?? 1;
                    }
                }
                $quiz_marking->marked_by = 0;
                $quiz_marking->marking_status = 1;
                $quiz_marking->marks = $score;
                $quiz_test->publish = 1;
            }
            $quiz_marking->save();
            $quiz_test->focus_lost = $request->focus_lost;
            $quiz_test->save();
            Toastr::success('Successfully submitted', 'Success');
            if ($request->from == "course") {
                $previousUrl = app('url')->previous();
                return redirect()->to($previousUrl . '?' . http_build_query(['quiz_result_id' => $quiz_test->id]));

            } else {
                return redirect()->route('getQuizResult', $quiz_test->id);
            }

        } catch (\Exception $e) {
            GettingError($e->getMessage(), url()->current(), request()->ip(), request()->userAgent());
        }
    }

    public function quizResult($id)
    {
        try {

            $user = Auth::user();

            $quiz = QuizTest::with('quiz')->findOrFail($id);
            if ($quiz->user_id == $user->id) {
                $course = Course::findOrFail($quiz->course_id);
                return view(theme('pages.quizResult'), compact('quiz', 'user', 'course'));
            } else {
                Toastr::error('Permission Denied', 'Failed');
                return redirect()->back();
            }

        } catch (\Exception $e) {
            GettingError($e->getMessage(), url()->current(), request()->ip(), request()->userAgent());
        }
    }

    public function quizResultPreview($id)
    {
        $quizTest = QuizTest::findOrFail($id);
        try {
            $user = Auth::user();


            if (Auth::check() && $quizTest->user_id == $user->id) {
                $course = Course::with('quiz')
                    ->where('courses.id', $quizTest->course_id)->first();
                return view(theme('pages.quizResultPreview'), compact('user', 'quizTest', 'course'));

            } else {
                Toastr::error('Permission Denied', 'Failed');
                return redirect()->back();
            }

        } catch (\Exception $e) {
            GettingError($e->getMessage(), url()->current(), request()->ip(), request()->userAgent());
        }
    }

    public function quizTestStart(Request $request)
    {
        try {
            $userId = Auth::id();
            $courseId = $request->get('courseId');
            $quizId = $request->get('quizId');
            $quizType = $request->get('quizType');
            $quiz = new QuizTest();
            $quiz->user_id = $userId;
            $quiz->course_id = $courseId;
            $quiz->quiz_id = $quizId;
            $quiz->quiz_type = $quizType;
            $quiz->start_at = now();
            $quiz->end_at = null;
            $quiz->duration = 0.00;

            $quiz->save();

            $return['result'] = true;
            $return['data'] = $quiz;

        } catch (\Exception $e) {
            $return['result'] = true;
            $return['data'] = null;
        }

        return $return;
    }

    public function singleQuizSubmit(Request $request)
    {
        try {
            $answer = $request->ans;
            $userId = Auth::id();
            $type = $request->get('type');
            $assign_id = $request->get('assign_id');
            $quiz_test_id = $request->get('quiz_test_id');
            $assign = OnlineExamQuestionAssign::with('questionBank')->find($assign_id);
            $qus = $assign->question_bank_id;
            $quizTest = QuizTest::find($quiz_test_id);


            $start_at = Carbon::parse($quizTest->start_at);
            $end_at = Carbon::now();
            if ($quizTest->focus_lost < $request->focus_lost) {
                $quizTest->focus_lost = $request->focus_lost;
            }
            $quizTest->end_at = $end_at;
            $quizTest->duration = number_format(abs(strtotime($start_at) - strtotime($end_at)) / 60, 2) ?? 0.00;
            $quizTest->save();

            $check_details = QuizTestDetails::where('quiz_test_id', $quiz_test_id)->where('qus_id', $qus)->first();
            if ($check_details) {
                $quizDetails = $check_details;
            } else {
                $quizDetails = new QuizTestDetails();
                $quizDetails->quiz_test_id = $quiz_test_id;
                $quizDetails->qus_id = $qus;
                $quizDetails->status = 0;
                $quizDetails->mark = $assign->questionBank->marks;
                $quizDetails->save();
            }

            if ($type == "M") {

                $alreadyAns = QuizTestDetailsAnswer::where('quiz_test_details_id', $quizDetails->id)->get();
                $totalCorrectAns = QuestionBankMuOption::where('status', 1)->where('question_bank_id', $assign->question_bank_id)->count();

                foreach ($alreadyAns as $already) {
                    $already->delete();
                }
                $wrong = 0;
                $userCorrectAns = 0;
                if (!empty($answer)) {
                    foreach ($answer as $ans) {
                        $setAns = new QuizTestDetailsAnswer();
                        $option = QuestionBankMuOption::with('question')->find($ans);
                        if ($option) {
                            $setAns->quiz_test_details_id = $quizDetails->id;
                            $setAns->ans_id = $ans;
                            $setAns->status = $option->status;
                            $setAns->save();

                            if ($setAns->status == 0) {
                                $wrong++;
                            } elseif ($setAns->status == 1) {
                                $userCorrectAns++;
                            }
                        }
                    }
                    if ($wrong == 0) {
                        if ($userCorrectAns == $totalCorrectAns) {
                            $quizDetails->status = 1;
                        } else {
                            $quizDetails->status = 0;
                        }
                    } else {
                        $quizDetails->status = 0;
                    }
                    $quizDetails->save();
                }

            } else {

                $quizDetails->quiz_test_id = $quiz_test_id;
                $quizDetails->qus_id = $qus;
                $quizDetails->answer = $answer;
                $quizDetails->status = 0;
                $quizDetails->mark = 0;

                $quizDetails->save();
            }

            return $quizDetails->status;

        } catch (\Exception $e) {
            return false;
        }
    }


    public function quizResultPreviewApi($quiz_id)
    {
        $quizTest = QuizTest::with('quiz', 'quiz.assign', 'quiz.assign.questionBank', 'quiz.assign.questionBank.questionMu')->findOrFail($quiz_id);

        $questions = [];

        foreach ($quizTest->quiz->assign as $key => $assign) {

            $test = QuizTestDetails::where('quiz_test_id', $quizTest->id)->where('qus_id', $assign->questionBank->id)->first();
            $questions[$key]['isSubmit'] = false;
            $questions[$key]['isWrong'] = false;
            $questions[$key]['id'] = $assign->questionBank->id;

            if ($assign->questionBank->type == "M") {
                foreach (@$assign->questionBank->questionMuInSerial as $key2 => $option) {
                    $questions[$key]['option'][$key2]['id'] = $option->id;
                    $questions[$key]['option'][$key2]['title'] = $option->title;
                    $questions[$key]['option'][$key2]['right'] = $option->status == 1 ? true : false;
                    $questions[$key]['option'][$key2]['wrong'] = false;


                    if ($test) {
                        $questions[$key]['isSubmit'] = true;
                        $wrong = $test->answers->where('ans_id', $option->id)->where('status', 0)->count();
                        if ($test->status == 0 && $wrong != 0) {
                            $questions[$key]['option'][$key2]['wrong'] = $test->status == 0 ? true : false;
                            $questions[$key]['isWrong'] = true;
                        }
                    }
                }


            }


        }
        return $questions;
    }
}

© 2025 UnknownSec
afwwrfwafr45458465
Password