|
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/parasoffline.edukrypt.in/application/modules/admin/controllers/ |
Upload File : |
<?php
defined('BASEPATH') or exit('No direct script access allowed');
require APPPATH . 'third_party/pword/vendor/autoload.php';
class Quiz extends Admin_Controller
{
public function __construct()
{
parent::__construct();
$this->load->library(array('form_builder', 'pdf'));
$this->load->model(['lecture_model', 'Main_model']);
}
public function mcq_subjects()
{
$crud = $this->generate_crud('mcq_subjects');
if ($this->session->userdata('user_id') == 1) {
//$crud->where('admin_id',$this->session->userdata('user_id'));
} else {
$crud->where('mcq_subjects.admin_id', $this->session->userdata('user_id'));
}
$crud->columns('id', 'subject', 'created');
$crud->display_as('subject', 'MCQ Subject');
if ($this->session->userdata('user_id') == 1) {
} else {
$crud->callback_add_field('admin_id', function () {
return '<select id="admin_id" name="admin_id" class="chosen-select chzn-done" data-placeholder="Select Course" style="width: 300px; ">
<option value="">--select--</option>
<option selected value="' . $this->session->userdata('user_id') . '">' . $this->session->userdata('username') . '</option>
</select>';
});
$crud->callback_before_insert(array($this, 'course_callback'));
}
$this->unset_crud_fields('created');
$this->mTitle = 'MCQ Subjects';
$this->render_crud();
}
function course_callback($post_array)
{
$post_array['admin_id'] = $post_array['admin_id'];
return $post_array;
}
// MCQ ===============================================================
public function mcq()
{
$crud = $this->generate_crud('mcq');
if ($this->session->userdata('user_id') == 1) {
//$crud->where('admin_id',$this->session->userdata('user_id'));
} else {
$crud->where('mcq.admin_id', $this->session->userdata('user_id'));
}
$crud->columns('title', 'tquestion', 'duration', 'correct_marks', 'wrong_marks', 'max_attempt', 'admin_id');
$crud->display_as('title', 'MCQ');
$crud->display_as('tquestion', 'Total Question');
$crud->display_as('admin_id', 'Admin');
$crud->set_relation('admin_id', 'admin_users', 'username');
$crud->set_rules('admin_id', 'Admin', 'required');
$crud->set_rules('title', 'MCQ Title', 'required');
$crud->set_rules('tquestion', 'Total Question', 'required');
$crud->set_rules('duration', 'Duration', 'required');
$crud->set_rules('correct_marks', 'Correcr Marks', 'required');
$crud->set_rules('wrong_marks', 'Wrong Marks', 'required');
if ($this->session->userdata('user_id') == 1) {
} else {
$crud->add_action('Add Question', base_url('assets/grocery_crud/themes/flexigrid/css/images/add.png'), 'admin/quiz/questions', 'pull-left');
// Add Field Admin
$crud->callback_add_field('admin_id', function () {
return '<select id="admin_id" name="admin_id" class="chosen-select chzn-done" data-placeholder="Select Course" style="width: 300px; ">
<option value="">--select--</option>
<option selected value="' . $this->session->userdata('user_id') . '">' . $this->session->userdata('username') . '</option>
</select>';
});
$crud->callback_add_field('updated_at', function () {
return '<input name="last_update" type="text" value="' . uniqid() . '" readonly /><br>'
. '<i style="color:red;">auto generated field plz refresh if its blank!!!</i>';
});
$crud->callback_edit_field('updated_at', function () {
return '<input name="last_update" type="text" value="' . uniqid() . '" readonly /><br>'
. '<i style="color:red;">auto generated field plz refresh if its blank!!!</i>';
});
// Edit Field Admin
$crud->callback_edit_field('admin_id', function () {
return '<select id="admin_id" name="admin_id" class="chosen-select chzn-done" data-placeholder="Select Course" style="width: 300px; ">
<option value="">--select--</option>
<option selected value="' . $this->session->userdata('user_id') . '">' . $this->session->userdata('username') . '</option>
</select>';
});
$crud->callback_before_insert(array($this, 'chapter_callback'));
}
$this->mTitle = 'MCQ';
$this->render_crud();
}
public function result()
{
$this->mViewData['p_type'] = "list";
$this->mViewData['message'] = $this->session->flashdata('upload_success');
$admin_id = $this->session->userdata('user_id');
$query_c = $this->db->where('admin_id', $admin_id)->get('mcq');
$courses = [];
if ($query_c->num_rows() > 0) {
$courses = $query_c->result();
}
$query_u = $this->db->select('id,username')->where('admin_id', $admin_id)->get('users');
$users = [];
if ($query_u->num_rows() > 0) {
$users = $query_u->result();
}
$query2 = $this->db->where('admin_id', $this->session->userdata('user_id'))->get('tags');
$this->mViewData['groups'] = $query2->result();
$query_2 = $this->db->where('admin_id', $this->session->userdata('user_id'))->get('courses');
$this->mViewData['courses'] = $query_2->result();
// Quiz list
$query_3 = $this->db->where('admin_id', $this->session->userdata('user_id'))->get('mcq');
$this->mViewData['quizs'] = $query_3->result();
// Quiz list
$query_4 = $this->db->where('admin_id', $this->session->userdata('user_id'))->get('mcq_subjects');
$this->mViewData['quiz_subjects'] = $query_4->result();
$this->mViewData['users'] = $users;
$this->mTitle .= 'Quiz | Result Export';
$this->render('quiz/result_list');
}
public function upload_file()
{
$quiz_id = $this->input->post('quiz_id');
$subject_id = $this->input->post('subject');
$name = basename(__FILE__, '.php');
// $name="www";
// $source = __DIR__ . "/{$name}.docx";
$upload_folder = "uploads/quiz/";
$files = $_FILES['questions_upload'];
$upload_image = $this->upload_single_image($files, $upload_folder);
$thumb_url = FCPATH . "uploads/quiz/" . $upload_image;
// chmod($thumb_url,0777);
$data = array(
'quiz_id' => $quiz_id,
'file_name' => $thumb_url,
'type' => 'quiz',
);
$this->db->insert('upload_mcq_file', $data);
$insert_id = $this->db->insert_id();
$file_url = $this->Main_model->get_where('upload_mcq_file', 'id', $insert_id, 'id,file_name');
$path = $file_url[0]->file_name;
$phpWord = \PhpOffice\PhpWord\IOFactory::load($path);
// Adding an empty Section to the document...
$section = $phpWord->addSection();
// Adding Text element to the Section having font styled by default...
// $section->addText($data);
// $name=basename(__FILE__, '.php');
$_file_name = explode(".", $upload_image);
$orig_name = $_file_name[0];
$source = FCPATH . "/uploads/quiz/{$orig_name}.html";
// Saving the document as HTML file...
$objWriter = \PhpOffice\PhpWord\IOFactory::createWriter($phpWord, 'HTML');
$objWriter->save($source);
// $path = base_url()."uploads/quiz/www.html";
$file_name = base_url() . "uploads/quiz/{$orig_name}.html";
$pagecontents = file_get_contents($file_name);
// $a = htmlspecialchars($pagecontents);
preg_match_all('#<table (.*?)</table>#is', $pagecontents, $_all_functions);
$function_keys = $_all_functions[1];
foreach ($function_keys as $key => $value) {
// print_r($value);
preg_match_all('#<tr>(.*?)</tr>#is', $value, $match);
$matches = $match[1];
// print_r($matches);exit;
# print_r(preg_replace("/<td(.+?)>(.+?)<\/td>/is", "<b>$2</b>", $matches[3]));exit;
$data = array(
'quiz_id' => $quiz_id,
'subject_id' => $subject_id,
'no_of_options' => preg_replace("/<td(.+?)>(.+?)<\/td>/is", "<b>$2</b>", $matches[0]),
'question' => preg_replace("/<td(.+?)>(.+?)<\/td>/is", "<b>$2</b>", $matches[1]),
'correct_ans' => html_entity_decode(preg_replace("/<td(.+?)>(.+?)<\/td>/is", "<b>$2</b>", $matches[2])),
// 'level'=>html_entity_decode(preg_replace("/<td(.+?)>(.+?)<\/td>/is", "<b>$2</b>", $matches[4])),
'question_uid' => uniqid(),
);
$this->db->insert('quiz_questions', $data);
$insert_id = $this->db->insert_id();
// print_r($matches);exit;
$i = 1;
foreach ($matches as $key => $matche) {
// print_r($key);
// var_dump($key);exit;
if (($key == 0) || ($key == 1) || ($key == 2)) {
} else {
$option_data = array(
'quiz_question_id' => $insert_id,
'no_of_options' => $i,
'options' => preg_replace("/<td(.+?)>(.+?)<\/td>/is", "<b>$2</b>", $matche),
// 'practice_question_id'=>$insert_id,
// 'practice_question_id'=>$insert_id,
);
$this->db->insert('quiz_options', $option_data);
$i++;
}
}
$get_quest = $this->Main_model->get_where('quiz_questions', 'id', $insert_id, 'correct_ans');
$correct_opt = $get_quest[0]->correct_ans;
$a = strip_tags($correct_opt);
$c = preg_replace("/\r|\n/", "", $a);
// print_r($c);exit;
$practice_quiz = $this->Main_model->get_where_as('quiz_options', ['no_of_options' => $c, 'quiz_question_id' => $insert_id], 'id,options');
$update_data = array(
'correct_option_id' => trim($practice_quiz[0]->id)
);
$this->db->where('id', $insert_id);
$this->db->update('quiz_questions', $update_data);
}
$this->session->set_flashdata('alert', '<div class="alert alert-success" role="alert">Uploaded Successfully.</div>');
// redirect('admin/quiz');
redirect('admin/quiz/questions/' . $quiz_id);
}
public function questions($mcq_id = null)
{
if (empty($mcq_id)) {
redirect('admin/quiz/mcq', 'refresh');
}
if ($this->session->userdata('user_id') == 1) {
$admin_id = null;
} else {
$admin_id = $this->session->userdata('user_id');
}
$mid = $this->security->xss_clean($this->input->post('mid'));
$this->form_validation->set_rules('questions', 'Question', 'required');
$this->form_validation->set_rules('ansa', 'Answer A', 'required');
$this->form_validation->set_rules('ansb', 'Answer B', 'required');
$this->form_validation->set_rules('ansc', 'Answer C', 'required');
$this->form_validation->set_rules('ansd', 'Answer D', 'required');
$this->form_validation->set_rules('correct_ans', 'Correct Answer', 'required');
if ($this->form_validation->run() == FALSE) {
$this->mViewData['mcq_id'] = $mcq_id;
$this->mViewData['mcqSubjects'] = false;
$mcqSubjectsQry = $this->db->where('admin_id', $this->session->userdata('user_id'))->get('mcq_subjects');
if ($mcqSubjectsQry->num_rows() > 0) {
$this->mViewData['mcqSubjects'] = $mcqSubjectsQry->result();
}
$this->mViewData['mcq_id'] = $mcq_id;
$this->mTitle .= 'MCQ questions';
$this->render('quiz/mcq_questions');
} else {
$questions = $this->input->post('questions');
$ansa = $this->input->post('ansa');
$ansb = $this->input->post('ansb');
$ansc = $this->input->post('ansc');
$ansd = $this->input->post('ansd');
$correct_ans = $this->input->post('correct_ans');
$ans_aray = array($ansa, $ansb, $ansc, $ansd);
$val = 0;
foreach ($ans_aray as $ans) {
if (!empty($ans)) {
$val++;
}
}
$ques_uid = uniqid();
$oaid = uniqid();
$obid = uniqid();
$ocid = uniqid();
$odid = uniqid();
$data_question = array(
'mcq_id' => $mcq_id,
'questions' => $questions,
'choices' => $val,
'questions_uid' => $ques_uid,
'qcode' => NULL,
'created_at' => date('Y-m-d H:i:s')
);
$this->db->insert('mcq_questions', $data_question);
switch ($val) {
case 1:
$data_options1 = array(
'questions_uid' => $ques_uid,
'choices' => $ansa,
'option_uid' => $oaid,
'created_at' => date('Y-m-d H:i:s')
);
$this->db->insert('mcq_options', $data_options1);
break;
case 2:
$data_options1 = array(
'questions_uid' => $ques_uid,
'choices' => $ansa,
'option_uid' => $oaid,
'created_at' => date('Y-m-d H:i:s')
);
$this->db->insert('mcq_options', $data_options1);
$data_options2 = array(
'questions_uid' => $ques_uid,
'choices' => $ansb,
'option_uid' => $obid,
'created_at' => date('Y-m-d H:i:s')
);
$this->db->insert('mcq_options', $data_options2);
break;
case 3:
$data_options1 = array(
'questions_uid' => $ques_uid,
'choices' => $ansa,
'option_uid' => $oaid,
'created_at' => date('Y-m-d H:i:s')
);
$this->db->insert('mcq_options', $data_options1);
$data_options2 = array(
'questions_uid' => $ques_uid,
'choices' => $ansb,
'option_uid' => $obid,
'created_at' => date('Y-m-d H:i:s')
);
$this->db->insert('mcq_options', $data_options2);
$data_options3 = array(
'questions_uid' => $ques_uid,
'choices' => $ansc,
'option_uid' => $ocid,
'created_at' => date('Y-m-d H:i:s')
);
$this->db->insert('mcq_options', $data_options3);
break;
case 4:
$data_options1 = array(
'questions_uid' => $ques_uid,
'choices' => $ansa,
'option_uid' => $oaid,
'created_at' => date('Y-m-d H:i:s')
);
$this->db->insert('mcq_options', $data_options1);
$data_options2 = array(
'questions_uid' => $ques_uid,
'choices' => $ansb,
'option_uid' => $obid,
'created_at' => date('Y-m-d H:i:s')
);
$this->db->insert('mcq_options', $data_options2);
$data_options3 = array(
'questions_uid' => $ques_uid,
'choices' => $ansc,
'option_uid' => $ocid,
'created_at' => date('Y-m-d H:i:s')
);
$this->db->insert('mcq_options', $data_options3);
$data_options4 = array(
'questions_uid' => $ques_uid,
'choices' => $ansd,
'option_uid' => $odid,
'created_at' => date('Y-m-d H:i:s')
);
$this->db->insert('mcq_options', $data_options4);
break;
default:
break;
}
switch ($correct_ans) {
case "a":
$data_answer = array(
'questions_uid' => $ques_uid,
'option_uid' => $oaid
);
$this->db->insert('mcq_answers', $data_answer);
break;
case "b":
$data_answer = array(
'questions_uid' => $ques_uid,
'option_uid' => $obid
);
$this->db->insert('mcq_answers', $data_answer);
break;
case "c":
$data_answer = array(
'questions_uid' => $ques_uid,
'option_uid' => $ocid
);
$this->db->insert('mcq_answers', $data_answer);
break;
case "d":
$data_answer = array(
'questions_uid' => $ques_uid,
'option_uid' => $odid
);
$this->db->insert('mcq_answers', $data_answer);
break;
default:
break;
}
$this->session->set_flashdata('message', '<div class="alert alert-success background-success">' . $questions . ' Added Successfully</div>');
redirect('admin/quiz/questions/' . $mcq_id . '', 'refresh');
}
}
public function mcquestionsposts()
{
$mcq_id = $this->input->post('mcq_id');
$columns = array(
0 => 'id',
1 => 'questions',
);
$limit = $this->input->post('length');
$start = $this->input->post('start');
$order = $columns[$this->input->post('order')[0]['column']];
$dir = $this->input->post('order')[0]['dir'];
$table = "quiz_questions";
$title = "questions";
$cid = $this->input->post('mcq_id');
$fid = "quiz_id";
$totalData = $this->Main_model->all_subject_posts_count($table, $cid, $fid);
$totalFiltered = $totalData;
if (empty($this->input->post('search')['value'])) {
$posts = $this->Main_model->all_subject_posts($limit, $start, $order, $dir, $table, $cid, $fid);
} else {
$search = $this->input->post('search')['value'];
$posts = $this->Main_model->posts_subj_search($limit, $start, $search, $order, $dir, $table, $title, $cid, $fid);
$totalFiltered = $this->Main_model->posts_subj_search_count($search, $table, $title, $cid, $fid);
}
$data = array();
if (!empty($posts)) {
$i = 1;
foreach ($posts as $post) {
$nestedData['id'] = $i;
$nestedData['questions'] = $post->question;
$nestedData['mcq_subject'] = $post->m_subject;
// $nestedData['correct_answers'] = "<label class='text-c-blue label label-info'>" . $correct_answer . "</label>";
$nestedData['Actions'] = "<a class='btn btn-primary btn-sm' href='" . base_url() . "admin/quiz/edit_questions/" . $mcq_id . "/" . $post->id . "'><i class='fa fa-edit'></i></a> <a class='btn btn-danger btn-sm' href='" . base_url() . "admin/quiz/question_delete/" . $mcq_id . "/" . $post->id . "'><i class='fa fa-trash'></i></a>";
$i++;
$data[] = $nestedData;
}
}
$json_data = array(
"draw" => intval($this->input->post('draw')),
"recordsTotal" => intval($totalData),
"recordsFiltered" => intval($totalFiltered),
"data" => $data
);
echo json_encode($json_data);
}
public function edit_questions($mcq_id, $q_id)
{
// echo "helo";exit;
if (empty($mcq_id)) {
redirect('admin/quiz/mcq', 'refresh');
}
if ($this->session->userdata('user_id') == 1) {
$admin_id = null;
} else {
$admin_id = $this->session->userdata('user_id');
}
$mid = $this->security->xss_clean($this->input->post('mid'));
$this->form_validation->set_rules('questions', 'Question', 'required');
$this->form_validation->set_rules('correct_opt', 'correct opt', 'required');
if ($this->form_validation->run() == FALSE) {
$this->mViewData['mcq_id'] = $mcq_id;
$this->mTitle .= 'MCQ questions';
$this->mViewData['quiz_questions'] = $this->Main_model->get_where('quiz_questions', 'id', $q_id, 'id,question,correct_ans');
$this->mViewData['quiz_options'] = $this->Main_model->get_where('quiz_options', 'quiz_question_id', $q_id, 'id,options');
$this->render('quiz/edit_questions');
} else {
$questions = $this->input->post('questions');
$correct_opt = $this->input->post('correct_opt');
$data = array(
'question' => $questions,
'correct_ans' => $correct_opt,
);
$this->Main_model->update('quiz_questions', $data, ['id' => $q_id]);
$this->session->set_flashdata('message', '<div class="alert alert-success background-danger" role="alert">Questions Updated Successfully!</div>');
redirect('admin/quiz/edit_questions/' . $mcq_id . '/' . $q_id, 'refresh');
}
}
public function edit_option($opton_id)
{
// echo "helo";exit;
// $mid = $this->security->xss_clean($this->input->post('mid'));
$this->form_validation->set_rules('option', 'option', 'required');
// $this->form_validation->set_rules('correct_opt', 'correct opt', 'required');
if ($this->form_validation->run() == FALSE) {
$this->mTitle .= 'Edit Option';
$this->mViewData['quiz_options'] = $this->Main_model->get_where('quiz_options', 'id', $opton_id, 'id,options');
$this->render('quiz/edit_option');
} else {
$option = $this->input->post('option');
$data = array(
'options' => $option,
);
$this->Main_model->update('quiz_options', $data, ['id' => $opton_id]);
$this->session->set_flashdata('message', '<div class="alert alert-success background-danger" role="alert">Questions Updated Successfully!</div>');
redirect('admin/quiz/edit_option/' . $opton_id, 'refresh');
}
}
public function question_delete($mcq_id = NULL, $q_id = NULL)
{
if (!$mcq_id && !$q_id) {
redirect('admin/quiz/mcq', 'refresh');
}
if (!$q_id) {
redirect('admin/quiz/questions/' . $mcq_id . '', 'refresh');
}
$uploads = $this->Main_model->get_where('quiz_options', 'quiz_question_id', $q_id, 'id,options');
if (!empty($uploads)) {
$this->Main_model->delete('quiz_options', ['quiz_question_id' => $q_id]);
}
$upload1 = $this->Main_model->get_where('quiz_questions', 'id', $q_id, 'id');
if (!empty($upload1)) {
$this->Main_model->delete('quiz_questions', ['id' => $q_id]);
}
redirect('admin/quiz/questions/' . $mcq_id . '', 'refresh');
}
// MCQ ===============================================================
function upload_single_image($files, $upload_folder)
{
$data = array();
// If file upload form submitted
if (!empty($files['name'])) {
$_FILES['file']['name'] = time() . $files['name'];
$_FILES['file']['type'] = $files['type'];
$_FILES['file']['tmp_name'] = $files['tmp_name'];
$_FILES['file']['error'] = $files['error'];
$_FILES['file']['size'] = $files['size'];
$ext = pathinfo($_FILES['file']['name'], PATHINFO_EXTENSION); //get extension
if (!file_exists($upload_folder)) {
mkdir($upload_folder, 0777, true);
}
$uploadPath = $upload_folder;
move_uploaded_file($_FILES['file']['tmp_name'], $uploadPath . $_FILES['file']['name']);
return $_FILES['file']['name'];
}
return false;
}
public function index()
{
$this->mViewData['p_type'] = "list";
$this->mViewData['message'] = $this->session->flashdata('upload_success');
$admin_id = $this->session->userdata('user_id');
$query_c = $this->db->where('admin_id', $admin_id)->get('courses');
$courses = [];
if ($query_c->num_rows() > 0) {
$courses = $query_c->result();
}
$this->mViewData['courses'] = $courses;
$this->mTitle .= ' | Upload Lectures List';
$this->render('quiz/list');
}
public function get_chapter()
{
if ($this->input->post('subject_id') != '') {
$sid = $this->input->post('subject_id');
$this->db->where('subject_id', $sid);
$this->db->where('admin_id', $this->session->userdata('user_id'));
$query = $this->db->get('chapters');
foreach ($query->result() as $result) {
echo '<option value="' . $result->id . '">' . $result->chapter . '</option>';
}
}
}
public function get_subject()
{
if ($this->input->post('course_id') != '') {
$cid = $this->input->post('course_id');
$this->db->where('course_id', $cid);
$this->db->where('admin_id', $this->session->userdata('user_id'));
$query = $this->db->get('subjects');
foreach ($query->result() as $result) {
echo '<option value="' . $result->id . '">' . $result->subject . '</option>';
}
}
}
function delete_selection()
{
$id_array = array();
$selection = $this->input->post("selection", TRUE);
$id_array = explode("|", $selection);
foreach ($id_array as $item) :
if ($item != '') :
//DELETE ROW
$this->db->where('id', $item);
$this->db->delete('lectures');
endif;
endforeach;
}
public function upload1()
{
$arr = $this->input->post('files');
$chapter = $this->input->post('chapter');
$this->db->order_by("id", "desc");
$query = $this->db->get('lectures', 1);
if (isset($query->result_array()[0])) {
$pos = $query->result_array()[0]['pos'] + 0;
} else {
$pos = 0;
}
foreach ($arr as $r) {
$name = preg_replace('/\s+/', '', $r);
$pos = $pos + 1;
$data = array(
'file_name' => $this->input->post('file_name') . '_' . $pos,
'name' => $name,
'chapter_id' => $chapter,
'pos' => $pos,
'last_update' => uniqid(),
'admin_id' => $this->session->userdata('user_id')
);
$result = $this->db->insert('lectures', $data);
}
if ($result) {
echo true;
}
}
// public function upload()
// {
// if ($_SERVER['REQUEST_METHOD'] == 'POST') {
// // $total_file = count($_FILES['upload_file']['name']);
// $chapter = $this->input->post('chapter');
// $mcq_id = $this->input->post('mcq_id');
// if (!$chapter && !$mcq_id) {
// $this->session->set_flashdata('upload_success', 'Chapter & MCQ both are required!');
// redirect('admin/quiz/upload');
// }
// $this->db->order_by("id", "desc");
// $query = $this->db->get('lectures', 1);
// if (isset($query->result_array()[0])) {
// $pos = $query->result_array()[0]['pos'] + 0;
// } else {
// $pos = 0;
// }
// // echo '<pre>';
// // print_r($mcq_id);exit;
// for ($i = 0; $i < count($mcq_id); $i++) {
// // $name = preg_replace('/\s+/', '', $_FILES['upload_file']['name'][$i]);
// $__exp = explode('|', $mcq_id[$i]);
// $quiz_id = $__exp[0];
// $name = $__exp[1];
// $pos = $pos + 1;
// $data = array(
// 'quiz_id' => $quiz_id,
// 'name' => $name,
// 'chapter_id' => $chapter,
// 'pos' => $pos,
// 'last_update' => uniqid(),
// 'admin_id' => $this->session->userdata('user_id'),
// 'e_type' => 'mcq'
// );
// $result = $this->db->insert('lectures', $data);
// }
// if ($result) {
// $this->session->set_flashdata('upload_success', 'Well done! You successfully Uploaded Files.');
// redirect('admin/quiz/upload');
// }
// } else {
// $this->mViewData['message'] = $this->session->flashdata('upload_success');
// $courses = $this->db->where('admin_id', $this->session->userdata('user_id'))->get('courses');
// $this->mViewData['course'] = $courses->result();
// $quiz = $this->db->select('id, title')->where('admin_id', $this->session->userdata('user_id'))->get('mcq');
// $this->mViewData['quiz'] = $quiz->result();
// $this->mTitle .= 'Upload Quiz';
// $this->render('quiz/upload');
// }
// }
public function pdf_upload()
{
if ($_SERVER['REQUEST_METHOD'] == 'POST') {
$chapter = $this->input->post('chapter');
$doc_id = $_FILES['doc_id'];
$total_file = count($_FILES['doc_id']['name']);
// echo '<pre>';
// print_r($mcq_id);exit;
if (!$chapter || !$_FILES['doc_id'] || $total_file == 0) {
$this->session->set_flashdata('e_message', '<div class="alert alert-danger">Chapter & MCQ both are required!</div>');
redirect('admin/quiz/pdf_upload');
}
$this->db->order_by("id", "desc");
$query = $this->db->get('lectures', 1);
if (isset($query->result_array()[0])) {
$pos = $query->result_array()[0]['pos'] + 0;
} else {
$pos = 0;
}
$aff_r = 0;
$upload_error = NULL;
for ($i = 0; $i < $total_file; $i++) {
$name = NULL;
$_FILES['userfile']['name'] = $doc_id['name'][$i];
$_FILES['userfile']['type'] = $doc_id['type'][$i];
$_FILES['userfile']['tmp_name'] = $doc_id['tmp_name'][$i];
$_FILES['userfile']['error'] = $doc_id['error'][$i];
$_FILES['userfile']['size'] = $doc_id['size'][$i];
$config['upload_path'] = './assets/uploads/document/';
$config['allowed_types'] = 'pdf';
$this->load->library('upload', $config);
if (!$this->upload->do_upload('userfile')) {
$upload_error = $this->upload->display_errors();
goto R_Error;
} else {
$upload_success = $this->upload->data();
$name = $upload_success['file_name'];
}
$pos = $pos + 1;
$data = array(
'name' => $name,
'chapter_id' => $chapter,
'pos' => $pos,
'last_update' => uniqid(),
'admin_id' => $this->session->userdata('user_id'),
'e_type' => 'doc'
);
$result = $this->db->insert('lectures', $data);
$aff_r += $this->db->affected_rows();
}
if ($result) {
$this->session->set_flashdata('e_message', '<div class="alert alert-success">Total ' . $aff_r . ' PDF file successfully Uploaded</div>');
redirect('admin/quiz/pdf_upload');
}
R_Error:
if ($upload_error) {
$this->session->set_flashdata('e_message', '<div class="alert alert-danger">Total ' . $aff_r . ' <br/>Error: ' . $upload_error . '</div>');
redirect('admin/quiz/pdf_upload');
}
} else {
$this->mViewData['message'] = $this->session->flashdata('upload_success');
$courses = $this->db->where('admin_id', $this->session->userdata('user_id'))->get('courses');
$this->mViewData['course'] = $courses->result();
$quiz = $this->db->select('id, title')->where('admin_id', $this->session->userdata('user_id'))->get('mcq');
$this->mViewData['quiz'] = $quiz->result();
$this->mTitle .= 'Upload Pdf';
$this->render('quiz/pdf_upload');
}
}
public function lecture_posts()
{
$columns = array(
0 => 'id',
1 => 'file_name',
2 => 'name',
3 => 'admin',
4 => 'pos',
5 => 'course',
6 => 'subject',
7 => 'chapter',
8 => 'uploaded',
9 => 'last_update',
);
if ($this->session->userdata('user_id') == 1) {
$admin_id = null;
} else {
$admin_id = $this->session->userdata('user_id');
}
$course_id = $this->input->post('course_id');
$subject_id = $this->input->post('subject_id');
$chapter_id = $this->input->post('chapter_id');
$limit = $this->input->post('length');
$start = $this->input->post('start');
$order = $columns[$this->input->post('order')[0]['column']];
$dir = $this->input->post('order')[0]['dir'];
$totalData = $this->lecture_model->lecture_posts_count($course_id, $subject_id, $chapter_id, $admin_id);
$totalFiltered = $totalData;
if (empty($this->input->post('search')['value'])) {
$posts = $this->lecture_model->lecture_posts($limit, $start, $order, $dir, $course_id, $subject_id, $chapter_id, $admin_id);
} else {
$search = $this->input->post('search')['value'];
$posts = $this->lecture_model->lecture_posts_search($limit, $start, $search, $order, $dir, $course_id, $subject_id, $chapter_id, $admin_id);
$totalFiltered = $this->lecture_model->lecture_posts_search_count($search, $course_id, $subject_id, $chapter_id, $admin_id);
}
$data = array();
if (!empty($posts)) {
$i = 1;
foreach ($posts as $post) {
$nestedData['id'] = '<input type="checkbox" class="_check_in" value="' . $post->id . '">';
$i++;
$nestedData['file_name'] = '<span style="font-size: 12px;">' . $post->file_name . '</span>';
$nestedData['name'] = '<span style="font-size: 12px;">' . $post->name . '</span>';
$nestedData['admin'] = '<span style="font-size: 12px;">' . $post->admin . '</span>';
$nestedData['pos'] = '<span style="font-size: 12px;">' . $post->pos . '</span>';
$nestedData['course'] = '<span style="font-size: 12px;">' . $post->course . '</span>';
$nestedData['subject'] = '<span style="font-size: 12px;">' . $post->subject . '</span>';
$nestedData['chapter'] = '<span style="font-size: 12px;">' . $post->chapter . '</span>';
$nestedData['uploaded'] = '<span style="font-size: 12px;">' . date('m F Y', strtotime($post->uploaded_at)) . '</span>';
$nestedData['last_update'] = '<span style="font-size: 12px;">' . $post->last_update . '</span>';
$nestedData['Actions'] = "<a class='btn btn-primary btn-sm' href='" . base_url('admin/lecture/edit_lecture/' . $post->id) . "' title='Delete'>Edit</a> ";
$nestedData['Actions'] .= "<a class='btn btn-danger btn-sm' href='" . base_url('admin/lecture/delete_lecture/' . $post->id) . "' title='Delete'>Trash</a>";
$data[] = $nestedData;
}
}
$json_data = array(
"draw" => intval($this->input->post('draw')),
"recordsTotal" => intval($totalData),
"recordsFiltered" => intval($totalFiltered),
"data" => $data
);
echo json_encode($json_data);
}
public function delete_lecture($lec_id = null)
{
if (empty($lec_id)) {
redirect('admin/lecture/index', 'refresh');
}
if ($this->session->userdata('user_id') == 1) {
$admin_id = null;
} else {
$admin_id = $this->session->userdata('user_id');
}
$this->db->where('lectures.id', $lec_id);
if (!empty($admin_id)) {
$this->db->where('lectures.admin_id', $admin_id);
}
$query = $this->db->get('lectures', 1);
if ($query->num_rows() > 0) {
$this->db->where('lectures.id', $lec_id);
if (!empty($admin_id)) {
$this->db->where('lectures.admin_id', $admin_id);
}
$this->db->delete('lectures');
if ($this->db->affected_rows() > 0) {
$this->session->set_flashdata('message', '<div class="alert alert-success" role="alert">Record deleted!</div>');
redirect('admin/lecture/index', 'refresh');
}
}
$this->session->set_flashdata('message', '<div class="alert alert-danger" role="alert">Record did not found!</div>');
redirect('admin/lecture/index', 'refresh');
}
public function delete_lecture_all()
{
$arr = [];
if (empty($this->session->userdata('user_id'))) {
$arr['status'] = 0;
$arr['message'] = '<div class="alert alert-danger" role="alert">You session has expired!,/div>';
$arr['redirect_to'] = base_url('admin/login');
goto D_L_A;
}
if ($this->session->userdata('user_id') == 1) {
$admin_id = null;
} else {
$admin_id = $this->session->userdata('user_id');
}
$lectures = $this->input->post('lectures');
if ($lectures) {
$affected_rows = 0;
foreach ($lectures as $lecture) {
$this->db->where('lectures.id', $lecture);
if (!empty($admin_id)) {
$this->db->where('lectures.admin_id', $admin_id);
}
$this->db->delete('lectures');
$affected_rows += $this->db->affected_rows();
}
if ($affected_rows > 0) {
$arr['status'] = 1;
$arr['message'] = '';
$this->session->set_flashdata('message', '<div class="alert alert-success" role="alert">' . $affected_rows . ' record successfully deleted!</div>');
goto D_L_A;
}
$arr['status'] = 0;
$arr['message'] = '<div class="alert alert-danger" role="alert">Something went wrong!/div>';
}
D_L_A:
echo json_encode($arr);
}
public function edit_lecture($lec_id = null)
{
if (empty($lec_id)) {
redirect('admin/lecture/index', 'refresh');
}
if ($this->session->userdata('user_id') == 1) {
$admin_id = null;
} else {
$admin_id = $this->session->userdata('user_id');
}
if (isset($_POST) && !empty($_POST)) {
$file_name = $this->input->post('file_name');
if (empty($file_name)) {
$this->session->set_flashdata('message', '<div class="alert alert-danger" role="alert">Kindly enter file name!</div>');
redirect('admin/lecture/edit_lecture/' . $lec_id, 'refresh');
}
$this->db->where('lectures.id !=', $lec_id);
$this->db->where('lectures.file_name', $file_name);
if (!empty($admin_id)) {
$this->db->where('lectures.admin_id', $admin_id);
}
$query_c = $this->db->get('lectures', 1);
if ($query_c->num_rows() == 0) {
$u_data['file_name'] = $file_name;
$u_data['last_update'] = uniqid();
$this->db->where('lectures.id', $lec_id);
if (!empty($admin_id)) {
$this->db->where('lectures.admin_id', $admin_id);
}
$this->db->set($u_data);
$this->db->update('lectures');
if ($this->db->affected_rows() > 0) {
$this->session->set_flashdata('message', '<div class="alert alert-success" role="alert">Record updated successfully!</div>');
redirect('admin/lecture/index', 'refresh');
} else {
$this->session->set_flashdata('message', '<div class="alert alert-info" role="alert">You have made no changes!</div>');
redirect('admin/lecture/edit_lecture/' . $lec_id, 'refresh');
}
} else {
$this->session->set_flashdata('message', '<div class="alert alert-danger" role="alert">This file name is duplicate, Kindly enter different file name!</div>');
redirect('admin/lecture/edit_lecture/' . $lec_id, 'refresh');
}
} else {
$this->db->select('lectures.*, chapters.chapter, subjects.subject, courses.course');
$this->db->where('lectures.id', $lec_id);
$this->db->join('chapters', 'chapters.id = lectures.chapter_id');
$this->db->join('subjects', 'subjects.id = chapters.subject_id');
$this->db->join('courses', 'courses.id = subjects.course_id');
if (!empty($admin_id)) {
$this->db->where('lectures.admin_id', $admin_id);
}
$query = $this->db->get('lectures', 1);
if ($query->num_rows() > 0) {
$this->mViewData['p_type'] = "edit";
$this->mViewData['lecture'] = $query->row();
$this->mTitle .= ' | Edit Lecture';
$this->render('lecture/list');
} else {
$this->session->set_flashdata('message', '<div class="alert alert-danger" role="alert">Record did not found!</div>');
redirect('admin/lecture/index', 'refresh');
}
}
}
public function get_subject_by_id()
{
$arr = [];
if (empty($this->session->userdata('user_id'))) {
$arr['status'] = 0;
$arr['message'] = '<span class="text-danger">You session has expired!,</span>';
$arr['redirect_to'] = base_url('admin/login');
goto GSBI;
}
if ($this->session->userdata('user_id') == 1) {
$admin_id = null;
} else {
$admin_id = $this->session->userdata('user_id');
}
$course_id = $this->input->post('course_id');
if ($course_id) {
$this->db->select('subjects.id, subjects.subject');
$this->db->where('subjects.course_id', $course_id);
if (!empty($admin_id)) {
$this->db->where('subjects.admin_id', $admin_id);
}
$query_c = $this->db->get('subjects');
if ($query_c->num_rows() > 0) {
$results = $query_c->result();
$arr['status'] = 1;
$arr['return_data'] = $results;
$arr['message'] = '<span class="text-success">Subjects feched successfully!</span>';
goto GSBI;
}
$arr['status'] = 1;
$arr['message'] = '<span class="text-danger">Records did not found!</span>';
$arr['return_data'] = [];
}
GSBI:
echo json_encode($arr);
}
public function get_chapter_by_id()
{
$arr = [];
if (empty($this->session->userdata('user_id'))) {
$arr['status'] = 0;
$arr['message'] = '<span class="text-danger">You session has expired!,</span>';
$arr['redirect_to'] = base_url('admin/login');
goto GCBI;
}
if ($this->session->userdata('user_id') == 1) {
$admin_id = null;
} else {
$admin_id = $this->session->userdata('user_id');
}
$subject_id = $this->input->post('subject_id');
if ($subject_id) {
$this->db->select('chapters.id, chapters.chapter');
$this->db->where('chapters.subject_id', $subject_id);
if (!empty($admin_id)) {
$this->db->where('chapters.admin_id', $admin_id);
}
$query_c = $this->db->get('chapters');
if ($query_c->num_rows() > 0) {
$results = $query_c->result();
$arr['status'] = 1;
$arr['return_data'] = $results;
$arr['message'] = '<span class="text-success">Chapters feched successfully!</span>';
goto GCBI;
}
$arr['status'] = 0;
$arr['message'] = '<span class="text-danger">Records did not found!</span>';
$arr['return_data'] = [];
}
GCBI:
echo json_encode($arr);
}
public function mcq_result_posts()
{
$columns = array(
0 => 'id',
1 => 'pos',
2 => 'lecture',
3 => 'e_type',
4 => 'admin',
5 => 'course',
6 => 'subject',
7 => 'chapter',
8 => 'str_date',
9 => 'end_date',
10 => 'noplay',
11 => 'user_id',
12 => 'reg_date',
);
if ($this->session->userdata('user_id') == 1) {
$admin_id = null;
} else {
$admin_id = $this->session->userdata('user_id');
}
$search_array = array(
'user_id' => $this->input->post('user_id'),
'tag_id' => $this->input->post('tag_id'),
'mcq_id' => $this->input->post('mcq_id'),
);
// $user_id = $this->input->post('user_id');
// $tag_id = $this->input->post('tag_id');
// $quiz_id = $this->input->post('quizs_id');
// var_dump($tag_id . '-' . $quiz_id);
// exit;
$limit = $this->input->post('length');
$start = $this->input->post('start');
$order = $columns[$this->input->post('order')[0]['column']];
$dir = $this->input->post('order')[0]['dir'];
$totalData = $this->lecture_model->check_result_posts_count($search_array, $admin_id);
// print_r($totalData);exit;
$totalFiltered = $totalData;
if (empty($this->input->post('search')['value'])) {
$posts = $this->lecture_model->check_result_posts($limit, $start, $order, $dir, $search_array, $admin_id);
} else {
$search = $this->input->post('search')['value'];
$posts = $this->lecture_model->check_result_posts_search($limit, $start, $search, $order, $dir, $search_array, $admin_id);
$totalFiltered = $this->lecture_model->check_result_posts_search_count($search, $search_array, $admin_id);
}
$data = array();
if (!empty($posts)) {
$i = 1;
// print_r($posts);exit;
foreach ($posts as $post) {
$nestedData['id'] = '<input type="checkbox" class="_check_in" value="' . $post->id . '">';
$i++;
$nestedData['username'] = '<span style="font-size: 12px;">' . $post->username . '</span>';
$nestedData['title'] = '<span style="font-size: 12px;">' . $post->title . '</span>';
$nestedData['total_time'] = '<span style="font-size: 12px;">' . $post->total_time . '</span>';
$nestedData['accuracy'] = '<span style="font-size: 12px;">' . $post->accuracy . '</span>';
$nestedData['reg_date'] = '<span style="font-size: 12px;">' . date('jS F, Y', strtotime($post->created_at)) . '</span>';
$nestedData['Actions'] = "<a class='btn btn-sucess btn-sm result_view' data-id=" . $post->id . " href='javascript:;' title='view'><i class='fa fa-eye fa-lg'></i></a> <a class='btn btn-danger btn-sm dtldata' data-id=" . $post->id . " href='" . base_url('admin/quiz/delete_result/' . $post->id) . "' title='view'><i class='fa fa-trash'></i></a>";
$data[] = $nestedData;
}
}
$json_data = array(
"draw" => intval($this->input->post('draw')),
"recordsTotal" => intval($totalData),
"recordsFiltered" => intval($totalFiltered),
"data" => $data
// "data" => $this->db->last_query()
);
echo json_encode($json_data);
}
public function pdf_result($id)
{
$query_u = $this->db->select('*')->where('mcq_result_id', $id)->get('mcq_results_gp');
$query = $this->db->select('*')->where('id', $id)->get('mcq_results')->row();
$user = $this->db->select('*')->where('id', $query->user_id)->get('users')->row();
// print_r($users);exit;
$html_content = '<div style="width:100%;"><div style="max-width: 1160px; margin: auto; margin-top: 30px; margin-bottom: 30px;"><b>Name:' . $user->username . "</b>";
$html_content .= '<table style=" font-family: arial, sans-serif;
border-collapse: collapse;
width: 100%;">';
$html_content .= '<tr>
<th>Subjects</th>
<th>Max. Marks</th>
<th>Obtained Marks</th>
<th>Percentage</th>
</tr>';
if ($query_u->num_rows() > 0) {
$users = $query_u->result();
$total_mark = 0;
$correct_marks = 0;
foreach ($users as $user) {
$total_mark = $total_mark + $user->total_marks;
$correct_marks = $correct_marks + $user->correct_marks;
$html_content .= ' <tr>
<td>' . $user->subject_name . '</td>
<td>' . $user->total_marks . '</td>
<td>' . $user->correct_marks . '</td>
<td>' . (($user->correct_marks * 100) / $user->total_marks) . '</td>
</tr>
';
// $html_content .= 'subject name:'.$user->subject_name;
}
$html_content .= '<hr></hr>';
$html_content .= '<tr><td></td><td> Total- ' . $total_mark . '</td><td> Total- ' . $correct_marks . '</td><td> Total- ' . (($correct_marks * 100) / $total_mark) . '</td></tr>';
$html_content .= '</table>';
}
// $customer_id = $this->uri->segment(3);
// $html_content = '<h3 align="center">Convert HTML to PDF in CodeIgniter using Dompdf</h3>';
// $html_content .= $this->htmltopdf_model->fetch_single_details($customer_id);
$this->pdf->loadHtml($html_content);
$this->pdf->render();
//$this->pdf->stream("" . $customer_id . ".pdf", array("Attachment" => 0));
}
public function delete_result($id)
{
$this->db->where('id', $id);
$this->db->delete('mcq_results');
$this->db->where('mcq_result_id', $id);
$this->db->delete('mcq_results_gp');
$this->session->set_flashdata('message', '<div class="alert alert-danger" role="alert">Delete Successfully!</div>');
redirect('admin/quiz/result', 'refresh');
}
public function delete_result_all()
{
$arr = [];
if (empty($this->session->userdata('user_id'))) {
$arr['status'] = 0;
$arr['message'] = '<div class="alert alert-danger" role="alert">You session has expired!,/div>';
$arr['redirect_to'] = base_url('admin/login');
goto D_L_A;
}
if ($this->session->userdata('user_id') == 1) {
$admin_id = null;
} else {
$admin_id = $this->session->userdata('user_id');
}
$lectures = $this->input->post('lectures');
if ($lectures) {
$affected_rows = 0;
foreach ($lectures as $lecture) {
$this->db->where('mcq_results.id', $lecture);
$this->db->delete('mcq_results');
$affected_rows += $this->db->affected_rows();
$this->db->where('mcq_results_gp.mcq_result_id', $lecture);
$this->db->delete('mcq_results_gp');
$affected_rows += $this->db->affected_rows();
}
if ($affected_rows > 0) {
$arr['status'] = 1;
$arr['message'] = '';
$this->session->set_flashdata('message', '<div class="alert alert-success" role="alert">' . $affected_rows . ' record successfully deleted!</div>');
goto D_L_A;
}
$arr['status'] = 0;
$arr['message'] = '<div class="alert alert-danger" role="alert">Something went wrong!/div>';
}
D_L_A:
echo json_encode($arr);
}
public function get_result_gp()
{
// print_r($_POST);exit;
$mcq_result_id = $this->input->post('id');
$query_u = $this->db->select('*')->where('mcq_result_id', $mcq_result_id)->get('mcq_results_gp');
$users = [];
if ($query_u->num_rows() > 0) {
$users = $query_u->result();
}
echo json_encode($users);
}
public function get_group_users($tag_id)
{
$group_id = $tag_id;
$this->db->select('users.id,users.username');
$this->db->from('users');
$this->db->where('admin_id', $this->session->userdata('user_id'));
$this->db->where("CONCAT(',', tag_id, ',') LIKE '%,$group_id,%'");
$query = $this->db->get();
if ($query->num_rows() > 0) {
return $query->result();
}
return false;
}
public function get_export_result()
{
$tag_id = $this->input->post('tag_id');
$mcq_id = $this->input->post('mcq_id');
$mcq_subject_id = $this->input->post('mcq_subject_id');
$admin_id = $this->session->userdata('user_id');
$query = $this->db->query("SELECT users.id,users.first_name,users.last_name,users.admission_code, mcq_results_gp.subject_name as subject, (mcq.tquestion*mcq.correct_marks) as max_marks, (mcq_results_gp.correct_marks) as right_ans, mcq_results_gp.wrong_marks as wrong_ans, (mcq.tquestion - (mcq_results_gp.correct_marks + mcq_results_gp.wrong_marks)) as drop_ques, (mcq.wrong_marks*mcq_results_gp.wrong_marks) as negative_marks, (mcq.correct_marks*mcq_results_gp.correct_marks)-(mcq.wrong_marks*mcq_results_gp.wrong_marks) as obtained_marks, mcq_results_gp.created_at as resultdate FROM mcq_results JOIN users ON users.id=mcq_results.user_id JOIN mcq ON mcq.id=mcq_results.mcq_id JOIN mcq_results_gp ON mcq_results_gp.mcq_result_id=mcq_results.id JOIN mcq_subjects ON mcq_subjects.id=mcq_results_gp.subject_id WHERE mcq_results.mcq_id=$mcq_id AND mcq_results_gp.subject_id=$mcq_subject_id AND mcq_results.user_id IN (SELECT users.id FROM users WHERE admin_id = $admin_id AND CONCAT(',', tag_id, ',') LIKE '%,$tag_id,%')");
$dataResultArray = $query->result_array();
//echo $this->db->last_query();exit;
$this->array_to_csv_download($dataResultArray);
}
function array_to_csv_download($array, $file_name = "assets/export.csv", $delimiter = ",")
{
// open raw memory as file so no temp files needed, you might run out of memory though
$uid = uniqid();
$filename = "assets/" . $uid . "export.csv";
$f = fopen($filename, 'w+');
$Head = ['id' => 'User ID', 'first_name' => 'Firstname', 'last_name' => 'Lastname', 'admission_code' => 'Admission Code', 'subject' => 'Subject', 'max_marks' => 'MAX Marks', 'right_ans' => 'Right Ans', 'wrong_ans' => 'Wrong Ans', 'drop_ques' => 'Drop Questions', 'negative_marks' => 'Nagetive Marks', 'obtained_marks' => 'Obtained Marks', 'resultdate' => 'Date'];
fputcsv($f, $Head, $delimiter);
// loop over the input array
foreach ($array as $line) {
// generate csv lines from the inner arrays
fputcsv($f, $line, $delimiter);
}
fclose($f);
$url = base_url() . $filename;
echo $url;
}
}