KGRKJGETMRETU895U-589TY5MIGM5JGB5SDFESFREWTGR54TY
Server : Apache/2.4.41 (Ubuntu)
System : Linux vmi1525618.contaboserver.net 5.4.0-105-generic #119-Ubuntu SMP Mon Mar 7 18:49:24 UTC 2022 x86_64
User : www-data ( 33)
PHP Version : 8.2.12
Disable Function : NONE
Directory :  /var/www/parassaas.edukrypt.in/app/Http/Controllers/

Upload File :
current_dir [ Writeable ] document_root [ Writeable ]

 

Current File : //var/www/parassaas.edukrypt.in/app/Http/Controllers/McqController_old.php
<?php

namespace App\Http\Controllers;

use Illuminate\Http\Request;
use Illuminate\Support\Facades\DB;
use App\Models\Mcq_question;
use App\Models\Upload_mcq_file;
use App\Models\Mcq_option;
use App\Models\Mcq_ques_gp;
use File;

use Aws\S3\S3Client as S3S3Client;
use Aws\CognitoIdentity\CognitoIdentityClient;
use Aws\Exception\AwsException;
use Aws\S3\Exception\S3Exception;
use Aws\S3\PostObjectV4;

class McqController extends Controller
{
    public function mcqQuestionList()
    {
        $data['mainMenu'] = 'databaseManagement';
        $data['subMenu'] = 'mcqQuestList';
        if (isset($_GET['query']) && strlen($_GET['query']) > 1) {
            $search_text = $_GET['query'];
            $data['mcq_questions'] = Mcq_question::where('mcq_questions.question', 'LIKE', '%' . $search_text . '%')
                ->join('mcq_options', 'mcq_questions.correct_option_id', '=', 'mcq_options.id')
                ->paginate(10, ['mcq_questions.*', 'mcq_options.options']);
            return view('admin.mcq.mcq-question-list', $data);
        } else {
            $data['mcq_questions'] = Mcq_question::leftjoin('mcq_options', 'mcq_questions.correct_option_id', '=', 'mcq_options.id')
                ->paginate(10, ['mcq_questions.*', 'mcq_options.options']);

            return view('admin.mcq.mcq-question-list', $data);
        }
    }


    public function uploadQuestion(Request $request)
    {
        $admin_id = $request->session()->get('loggedIn')['id'];
        $name = basename(__FILE__, '.php');
        $ext = $request->doc_file->extension();
        if ($ext != 'docx') {
            return back()->with('error', 'File Should Be Docs Only!');
        }

        $imageName = time() . rand() . '.' . $ext;
        $request->doc_file->move(public_path('uploads/quiz'), $imageName);
        $thumb_url = base_path() . "/public/uploads/quiz/" . $imageName;
        $data = array(
            'filename' => $thumb_url,
        );

        $res = Upload_mcq_file::create($data);
        $insert_id =  $res->id;;
        $file_url =  Upload_mcq_file::where(['id' => $insert_id])->first();
        $path = $file_url->filename;

        //    $phpWord = new \PhpOffice\PhpWord\PhpWord();
        $phpWord = \PhpOffice\PhpWord\IOFactory::load($path);
        //    $phpWord = \PhpOffice\PhpWord\IOFactory::load($path);

        $section = $phpWord->addSection();
        $_file_name = explode(".", $imageName);
        $orig_name = $_file_name[0];
        $source = base_path() . "/public/uploads/quiz/{$orig_name}.html";


        // Saving the document as HTML file...
        $objWriter = \PhpOffice\PhpWord\IOFactory::createWriter($phpWord, 'HTML');
        $objWriter->save($source);

        $all_data = array(
            'questions' => array()
        );
        // $path = base_url()."uploads/quiz/www.html";
        $file_name = asset('/') . "public/uploads/quiz/{$orig_name}.html";
        $pagecontents = file_get_contents($file_name);

        preg_match_all('#<table (.*?)</table>#is', $pagecontents, $_all_functions);
        $function_keys = $_all_functions[1];

        foreach ($function_keys as $key => $value) {
            preg_match_all('#<tr>(.*?)</tr>#is', $value, $match);
            $matches = $match[1];

            $data = array(
                'admin_id' => $admin_id,
                'no_of_option' => trim(strip_tags($matches[0])),
                'question' => trim(strip_tags($matches[1], '<img>')),
                'solution' => trim(strip_tags($matches[2], '<img>')),
                'correct_ans' => trim(strip_tags($matches[3])),
                'code' => trim(strip_tags($matches[4])),
                'level' => trim(strip_tags($matches[5]))
            );


            $mcqQues = Mcq_question::create($data);
            $question_id = $mcqQues->id;

            $i = 1;
            foreach ($matches as $key => $matche) {
                if (($key == 0) || ($key == 1) || ($key == 2) || ($key == 3) || ($key == 4) || ($key == 5)) {
                } else {

                    $content = str_replace("&nbsp;", "", trim(strip_tags($matche, '<img>')));
                    $content = html_entity_decode($content);
                    if (!empty($content)) {
                        $option_data = array(
                            'question_id' => $question_id,
                            'no_of_options' => $i,
                            'options' => trim(strip_tags($matche, '<img>')),

                        );
                        $mcqQues = Mcq_option::create($option_data);
                        $i++;
                    }
                }
            }

            $get_quest = Mcq_question::where(['id' => $question_id])->first();
            $correct_opt = $get_quest->correct_ans;

            $a = strip_tags($correct_opt);
            $c =  preg_replace("/\r|\n/", "", $a);

            $practice_quiz =  Mcq_option::where(['no_of_options' => $c, 'question_id' => $question_id])->first();

            $update_data = array(
                'correct_option_id' => trim($practice_quiz->id)
            );

            Mcq_question::where(['id' => $question_id])->update($update_data);
        }

        return back()->with('success', ' Question Has Been Uploaded Successfully!.');
    }


    public function editMcqQuestion(Request $request, $id)
    {
        $data['mainMenu'] = 'databaseManagement';
        $data['subMenu'] = 'mcqQuestList';

        $data['mcq_questions'] = Mcq_question::Where(['id' => $id])->first();
        $data['mcq_options'] =  Mcq_option::where(['question_id' => $id])->get();

        return view('admin.mcq.edit-mcq-question', $data);
    }

    public function updateMcqQuestion(Request $request, $id)
    {
        $admin_id = $request->session()->get('loggedIn')['id'];
        $data['mainMenu'] = 'databaseManagement';
        $data['subMenu'] = 'mcqQuestList';

        $request->validate([
            'question' => 'required',
            'solution' => 'required',
            'level' => 'required',
            'code' => 'required',
            'numberofop' => 'required'
        ]);

        $data = array(
            'question' => $request->question,
            'solution' => $request->solution,
            'no_of_option' => $request->numberofop,
            'level' => $request->level,
            'code' => $request->code
        );

        // $data = array(
        //     'admin_id' => $admin_id,
        //     'question' => $request->question,
        //     'solution' => $request->solution,
        //     'conceptual_type' => $request->conceptual_type,
        //     'level' => $request->level,
        //     'code' => $request->code,
        //     'correct_option_id' => $request->correct_option,
        // );

        $res = Mcq_question::where(['id' => $id])->update($data);
        if ($res) {
            return back()
                ->with('success', ' Question Updated!.');
        } else {
            return back()
                ->with('error', 'Something Went Wrong!');
        }
    }

    public function viewMcqQuestion(Request $request, $id)
    {
        $data['mainMenu'] = 'databaseManagement';
        $data['subMenu'] = 'mcqQuestList';
        $data['mcq_questions'] = Mcq_question::Where(['id' => $id])->first();
        $data['mcq_options'] =  Mcq_option::where(['question_id' => $id])->get();

        return view('admin.mcq.view-mcq-question', $data);
    }

    public function deleteMcqQuestion(Request $request, $id)
    {
        Mcq_question::where(['id' => $id])->delete();
        Mcq_option::where(['question_id' => $id])->delete();
        return back()->with('success', 'Post deleted successfully');
    }


    // Mcq Option 

    public function mcqOptionList(Request $request, $id)
    {
        $data['mainMenu'] = 'databaseManagement';
        $data['subMenu'] = 'mcqQuestList';

        if (isset($_GET['query']) && strlen($_GET['query']) > 1) {
            $search_text = $_GET['query'];
            $data['mcq_question'] =  Mcq_question::where(['id' => $id])->first();
            $data['mcq_options'] = Mcq_option::where(['question_id' => $id])->where('options', 'LIKE', '%' . $search_text . '%')
                ->paginate(10);
            return view('admin.mcq.mcq-options-list', $data);
        } else {
            $data['mcq_question'] =  Mcq_question::where(['id' => $id])->first();
            $data['mcq_options'] =  Mcq_option::where(['question_id' => $id])->paginate(10);

            return view('admin.mcq.mcq-options-list', $data);
        }
    }



    public function viewMcqOption(Request $request, $id)
    {
        $data['mainMenu'] = 'databaseManagement';
        $data['subMenu'] = 'mcqQuestList';

        $data['Mcq_option'] = Mcq_option::Where(['id' => $id])->first();

        return view('admin.mcq.view-mcq-option', $data);
    }



    public function deleteMcqOption(Request $request, $id)
    {
        // Mcq_question::where(['id'=>$id])->delete();
        Mcq_option::where(['id' => $id])->delete();
        return back()->with('success', 'Post deleted successfully');
    }


    // Add Questions Seperate =========================================================
    public function uploadQuestionImage(Request $request)
    {
        // $accessKey = env('AWS_S3_ACCESS_KEY');
        // $secretKey = env('AWS_S3_SECRET_KEY');
        // $region = env('AWS_REGION');
        // $host = env('AWS_HOST');
        // $bucket = env('AWS_BUCKET');

        // $s3 = new S3S3Client([
        //     'version' => 'latest',
        //     'region' => $region,
        //     'endpoint' => $host,
        //     'credentials' => [
        //         'key' => $accessKey,
        //         'secret' => $secretKey
        //     ]
        // ]);

        // $s3->putBucketCors([
        //     'Bucket' => $bucket, // REQUIRED
        //     'CORSConfiguration' => [ // REQUIRED
        //         'CORSRules' => [ // REQUIRED
        //             [
        //                 'AllowedMethods' => ['POST', 'GET', 'HEAD', 'DELETE', 'PUT'], // REQUIRED
        //                 'AllowedHeaders' => ['*'],
        //                 'AllowedOrigins' => ['*'], // REQUIRED
        //                 'ExposeHeaders' => ['ETag'],
        //                 'MaxAgeSeconds' => 0
        //             ],
        //         ],
        //     ]
        // ]);
        //dd($request->file('file'));
        $fileName = $request->file('file')->getClientOriginalName();
        $fileType = $request->file('file')->getMimeType();
        $filePath = $request->file('file')->getPathName();
        //dd($request->file('file'));
        // Upload a file.
        // $result = $s3->putObject(array(
        //     'Bucket'       => $bucket,
        //     'Key'          => "upload/mcq/" . $fileName,
        //     'SourceFile'    => $request->file('file')->getRealPath(),
        //     'ContentType'  => $fileType,
        //     'ACL'          => 'public-read',
        //     'StorageClass' => 'REDUCED_REDUNDANCY'
        // ));

        $data = file_get_contents($filePath);
        $base64 = 'data:' . $fileType . ';base64,' . base64_encode($data);
        //dd($request->file('file'));
        return response()->json(['location' => $base64]);
    }

    public function addQuestion(Request $request)
    {
        $data['mainMenu'] = 'databaseManagement';
        $data['subMenu'] = 'mcqQuestList';
        // $data['mcq_questions'] = Mcq_question::Where(['id' => $id])->first();
        // $data['mcq_options'] =  Mcq_option::where(['question_id' => $id])->get();

        return view('admin.mcq.add-mcq-question', $data);
    }

    public function saveQuestion(Request $request)
    {
        $data['mainMenu'] = 'databaseManagement';
        $data['subMenu'] = 'mcqQuestList';

        $admin_id = $request->session()->get('loggedIn')['id'];

        $request->validate([
            'question' => 'required',
            'solution' => 'required',
            'level' => 'required',
            'code' => 'required',
            'numberofop' => 'required'
        ]);

        $data = array(
            'admin_id' => $admin_id,
            'question' => $request->question,
            'solution' => $request->solution,
            'no_of_option' => $request->numberofop,
            'level' => $request->level,
            'code' => $request->code,
            'created_at' => date('Y-m-d H:i:s')
        );

        //dd($request);
        $res = Mcq_question::insert($data);
        if ($res) {
            return back()
                ->with('success', 'Question Saved!.');
        } else {
            return back()
                ->with('error', 'Something Went Wrong!');
        }
    }

    // Options New =============================================================

    public function addNewOption(Request $request, $id)
    {
        $data['mainMenu'] = 'databaseManagement';
        $data['subMenu'] = 'mcqQuestList';

        $mcq_questions = Mcq_question::Where(['id' => $id])->first();
        $no_of_options_allowed = $mcq_questions->no_of_option;
        $mcq_options =  Mcq_option::where(['question_id' => $id])->get();
        $total_no_of_options = $mcq_options->count();

        $data['note'] = "Note: $total_no_of_options out of $no_of_options_allowed option in this question.";
        // if ($total_no_of_options >= $no_of_options_allowed) {
        //     return back()
        //         ->with('error', 'Only ' . $no_of_options_allowed . ' options allowed in this question.');
        // }

        $data['next_number'] = $total_no_of_options + 1;
        $data['mcq_questions'] = $mcq_questions;
        return view('admin.mcq.add-new-option', $data);
    }

    public function saveNewOption(Request $request, $question_id)
    {

        $data['mainMenu'] = 'databaseManagement';
        $data['subMenu'] = 'mcqQuestList';

        //$admin_id = $request->session()->get('loggedIn')['id'];

        $request->validate([
            'option' => 'required'
        ]);

        $data = array(
            'question_id' => $question_id,
            'no_of_options' => $request->no_of_options,
            'options' => $request->option,
            'created_at' => date('Y-m-d H:i:s')
        );

        //dd($request);
        $res = Mcq_option::insert($data);
        if ($res) {
            return back()
                ->with('success', 'Question Saved!.');
        } else {
            return back()
                ->with('error', 'Something Went Wrong!');
        }
    }

    public function editMcqOption(Request $request, $id, $qid)
    {
        $data['mainMenu'] = 'databaseManagement';
        $data['subMenu'] = 'mcqQuestList';

        $mcq_questions = Mcq_question::Where(['id' => $qid])->first();
        $no_of_options_allowed = $mcq_questions->no_of_option;
        $mcq_options =  Mcq_option::where(['question_id' => $qid])->get();
        $total_no_of_options = $mcq_options->count();

        $data['note'] = "Note: $total_no_of_options out of $no_of_options_allowed option in this question.";
        // if ($total_no_of_options >= $no_of_options_allowed) {
        //     return back()
        //         ->with('error', 'Only ' . $no_of_options_allowed . ' options allowed in this question.');
        // }

        $data['mcq_questions'] = $mcq_questions;

        $data['next_number'] = $total_no_of_options + 1;
        $data['Mcq_option'] = Mcq_option::Where(['id' => $id])->first();

        return view('admin.mcq.edit-mcq-option', $data);
    }

    public function updateMcqOption(Request $request, $id, $qid)
    {
        $data['mainMenu'] = 'databaseManagement';
        $data['subMenu'] = 'mcqQuestList';

        $request->validate([
            'option' => 'required',
            'no_of_options' => 'required'
        ]);

        $data = array(
            'options' => $request->option,
            'no_of_options' => $request->no_of_options
        );

        $res = Mcq_option::where(['id' => $id])->update($data);
        if ($res) {
            return back()
                ->with('success', ' Question Has Been Updated!.');
        } else {
            return back()
                ->with('error', 'Something Went Wrong!');
        }
    }

    public function changeMcqOption(Request $request)
    {
        $data['mainMenu'] = 'databaseManagement';
        $data['subMenu'] = 'mcqQuestList';

        $option_id = $request->option_id;
        $question_id = $request->question_id;
        $serial = $request->serial;

        $data = array(
            'correct_ans' => $serial,
            'correct_option_id' => $option_id
        );

        $res = Mcq_question::where(['id' => $question_id])->update($data);
        if ($res) {
            return json_encode(['code' => 200, 'status' => true]);
        } else {
            return json_encode(['code' => 404, 'status' => false]);
        }
    }
}

Anon7 - 2021