load->database(); $this->load->library('session'); /*cache control*/ $this->output->set_header('Cache-Control: no-store, no-cache, must-revalidate, post-check=0, pre-check=0'); $this->output->set_header('Pragma: no-cache'); $this->user_model->check_session_data('admin'); ini_set('memory_limit', '128M'); } public function index() { if ($this->session->userdata('admin_login') == true) { $this->dashboard(); } else { redirect(site_url('login'), 'refresh'); } } public function dashboard() { if ($this->session->userdata('admin_login') != true) { redirect(site_url('login'), 'refresh'); } $page_data['page_name'] = 'dashboard'; $page_data['page_title'] = get_phrase('dashboard'); $this->load->view('backend/index.php', $page_data); } public function categories($param1 = "", $param2 = "") { if ($this->session->userdata('admin_login') != true) { redirect(site_url('login'), 'refresh'); } // CHECK ACCESS PERMISSION check_permission('category'); if ($param1 == 'add') { $response = $this->crud_model->add_category(); if ($response) { $this->session->set_flashdata('flash_message', get_phrase('data_added_successfully')); } else { $this->session->set_flashdata('error_message', get_phrase('category_name_already_exists')); } redirect(site_url('admin/categories'), 'refresh'); } elseif ($param1 == "edit") { $response = $this->crud_model->edit_category($param2); if ($response) { $this->session->set_flashdata('flash_message', get_phrase('data_added_successfully')); } else { $this->session->set_flashdata('error_message', get_phrase('category_name_already_exists')); } redirect(site_url('admin/categories'), 'refresh'); } elseif ($param1 == "delete") { $this->crud_model->delete_category($param2); $this->session->set_flashdata('flash_message', get_phrase('data_deleted')); redirect(site_url('admin/categories'), 'refresh'); } elseif ($param1 == "sub_category_image") { $this->crud_model->delete_subcategory_image($param2); $this->session->set_flashdata('flash_message', get_phrase('data_deleted')); redirect(site_url('admin/categories'), 'refresh'); } $page_data['page_name'] = 'categories'; $page_data['page_title'] = get_phrase('categories'); $page_data['categories'] = $this->crud_model->get_categories($param2); $this->load->view('backend/index', $page_data); } public function category_form($param1 = "", $param2 = "") { if ($this->session->userdata('admin_login') != true) { redirect(site_url('login'), 'refresh'); } // CHECK ACCESS PERMISSION check_permission('category'); if ($param1 == "add_category") { $page_data['page_name'] = 'category_add'; $page_data['categories'] = $this->crud_model->get_categories()->result_array(); $page_data['page_title'] = get_phrase('add_category'); } if ($param1 == "edit_category") { $page_data['page_name'] = 'category_edit'; $page_data['page_title'] = get_phrase('edit_category'); $page_data['categories'] = $this->crud_model->get_categories()->result_array(); $page_data['category_id'] = $param2; } $this->load->view('backend/index', $page_data); } public function sub_categories_by_category_id($category_id = 0) { if ($this->session->userdata('admin_login') != true) { redirect(site_url('login'), 'refresh'); } $category_id = $this->input->post('category_id'); redirect(site_url("admin/sub_categories/$category_id"), 'refresh'); } public function sub_category_form($param1 = "", $param2 = "") { if ($this->session->userdata('admin_login') != true) { redirect(site_url('login'), 'refresh'); } // CHECK ACCESS PERMISSION check_permission('category'); if ($param1 == 'add_sub_category') { $page_data['page_name'] = 'sub_category_add'; $page_data['page_title'] = get_phrase('add_sub_category'); } elseif ($param1 == 'edit_sub_category') { $page_data['page_name'] = 'sub_category_edit'; $page_data['page_title'] = get_phrase('edit_sub_category'); $page_data['sub_category_id'] = $param2; } $page_data['categories'] = $this->crud_model->get_categories(); $this->load->view('backend/index', $page_data); } public function instructors($param1 = "", $param2 = "") { if ($this->session->userdata('admin_login') != true) { redirect(site_url('login'), 'refresh'); } // CHECK ACCESS PERMISSION check_permission('user'); check_permission('instructor'); if ($param1 == "add") { $this->user_model->add_user(true); // PROVIDING TRUE FOR INSTRUCTOR redirect(site_url('admin/instructors'), 'refresh'); } elseif ($param1 == "edit") { $this->user_model->edit_user($param2); redirect(site_url('admin/instructors'), 'refresh'); } elseif ($param1 == "delete") { $this->user_model->delete_user($param2); redirect(site_url('admin/instructors'), 'refresh'); } $page_data['page_name'] = 'instructors'; $page_data['page_title'] = get_phrase('instructor'); $this->load->view('backend/index', $page_data); } public function instructor_form($param1 = "", $param2 = "") { if ($this->session->userdata('admin_login') != true) { redirect(site_url('login'), 'refresh'); } // CHECK ACCESS PERMISSION check_permission('user'); check_permission('instructor'); if ($param1 == 'add_instructor_form') { $page_data['page_name'] = 'instructor_add'; $page_data['page_title'] = get_phrase('instructor_add'); $this->load->view('backend/index', $page_data); } elseif ($param1 == 'edit_instructor_form') { $page_data['page_name'] = 'instructor_edit'; $page_data['user_id'] = $param2; $page_data['page_title'] = get_phrase('instructor_edit'); $this->load->view('backend/index', $page_data); } } public function users($param1 = "", $param2 = "") { if ($this->session->userdata('admin_login') != true) { redirect(site_url('login'), 'refresh'); } // CHECK ACCESS PERMISSION check_permission('user'); check_permission('student'); if ($param1 == "add") { $this->user_model->add_user(); redirect(site_url('admin/users'), 'refresh'); } elseif ($param1 == "edit") { $this->user_model->edit_user($param2); redirect(site_url('admin/users'), 'refresh'); } elseif ($param1 == "delete") { $this->user_model->delete_user($param2); redirect(site_url('admin/users'), 'refresh'); } $page_data['page_name'] = 'users'; $page_data['page_title'] = get_phrase('student'); $this->load->view('backend/index', $page_data); } function server_side_users_data() { $data = array(); //mentioned all with colum of database table that related with html table $columns = array('id', 'id', 'first_name', 'email', 'phone', 'id', 'id'); $limit = htmlspecialchars_($this->input->post('length')); $start = htmlspecialchars_($this->input->post('start')); $column_index = $columns[$this->input->post('order')[0]['column']]; $dir = $this->input->post('order')[0]['dir']; $total_number_of_row = $this->db->where('role_id !=', 1)->get('users')->num_rows(); $filtered_number_of_row = $total_number_of_row; $search = $this->input->post('search')['value']; if (empty($search)) { $this->db->select('*'); $this->db->limit($limit, $start); $this->db->order_by($column_index, $dir); $this->db->where('role_id', 2); $students = $this->db->get('users')->result_array(); } else { $this->db->select('*'); $this->db->like('first_name', $search); $this->db->or_like('last_name', $search); $this->db->or_like('email', $search); $this->db->or_like('phone', $search); $this->db->where('role_id', 2); $this->db->limit($limit, $start); $this->db->order_by($column_index, $dir); $students = $this->db->get('users')->result_array(); $this->db->select('*'); $this->db->like('first_name', $search); $this->db->or_like('last_name', $search); $this->db->or_like('email', $search); $this->db->or_like('phone', $search); $this->db->where('role_id', 2); $filtered_number_of_row = $this->db->get('users')->num_rows(); } foreach ($students as $key => $student) : //photo $photo = ''; //user name if ($student['status'] != 1) { $status = '

' . get_phrase('status') . '' . get_phrase('unverified') . '

'; } else { $status = ''; } $name = $student['first_name'] . ' ' . $student['last_name'] . $status; //user email $email = $student['email']; //enrolled courses $enrolled_courses = $this->crud_model->enrol_history_by_user_id($student['id']); $enrolled_courses_title = ''; $action = '
'; $nestedData['key'] = ++$key; $nestedData['photo'] = $photo; $nestedData['name'] = $name; $nestedData['email'] = $email; $nestedData['phone'] = $student['phone']; $nestedData['enrolled_courses'] = $enrolled_courses_title; $nestedData['action'] = $action . ''; $data[] = $nestedData; endforeach; $json_data = array( "draw" => intval($this->input->post('draw')), "recordsTotal" => intval($total_number_of_row), "recordsFiltered" => intval($filtered_number_of_row), "data" => $data ); echo json_encode($json_data); } function server_side_instructors_data() { $data = array(); //mentioned all with colum of database table that related with html table $columns = array('id', 'id', 'first_name', 'email', 'phone', 'id', 'id'); $limit = htmlspecialchars_($this->input->post('length')); $start = htmlspecialchars_($this->input->post('start')); $column_index = $columns[$this->input->post('order')[0]['column']]; $dir = $this->input->post('order')[0]['dir']; $total_number_of_row = $this->db->where('is_instructor', 1)->where('role_id !=', 1)->get('users')->num_rows(); $filtered_number_of_row = $total_number_of_row; $search = $this->input->post('search')['value']; if (empty($search)) { $this->db->select('*'); $this->db->limit($limit, $start); $this->db->order_by($column_index, $dir); $this->db->group_start(); $this->db->where('role_id', 2); $this->db->where('is_instructor', 1); $this->db->group_end(); $instructors = $this->db->get('users')->result_array(); } else { $this->db->select('*'); $this->db->group_start(); $this->db->like('first_name', $search); $this->db->or_like('last_name', $search); $this->db->or_like('email', $search); $this->db->or_like('phone', $search); $this->db->group_end(); $this->db->group_start(); $this->db->where('role_id', 2); $this->db->where('is_instructor', 1); $this->db->group_end(); $this->db->limit($limit, $start); $this->db->order_by($column_index, $dir); $instructors = $this->db->get('users')->result_array(); $this->db->select('*'); $this->db->group_start(); $this->db->like('first_name', $search); $this->db->or_like('last_name', $search); $this->db->or_like('email', $search); $this->db->or_like('phone', $search); $this->db->group_end(); $this->db->group_start(); $this->db->where('role_id', 2); $this->db->where('is_instructor', 1); $this->db->group_end(); $filtered_number_of_row = $this->db->get('users')->num_rows(); } foreach ($instructors as $key => $instructor) : //photo $photo = ''; //user name if ($instructor['status'] != 1) { $status = '

' . get_phrase('status') . '' . get_phrase('unverified') . '

'; } else { $status = ''; } $name = $instructor['first_name'] . ' ' . $instructor['last_name'] . $status; //user email $email = $instructor['email']; //enrolled courses $enrolled_courses = $this->crud_model->enrol_history_by_user_id($instructor['id']); $enrolled_courses_title = ''; $action = '
'; $nestedData['key'] = ++$key; $nestedData['photo'] = $photo; $nestedData['name'] = $name; $nestedData['email'] = $email; $nestedData['phone'] = $instructor['phone']; $nestedData['enrolled_courses'] = $enrolled_courses_title; $nestedData['action'] = $action . ''; $data[] = $nestedData; endforeach; $json_data = array( "draw" => intval($this->input->post('draw')), "recordsTotal" => intval($total_number_of_row), "recordsFiltered" => intval($filtered_number_of_row), "data" => $data ); echo json_encode($json_data); } public function add_shortcut_student() { if ($this->session->userdata('admin_login') != true) { redirect(site_url('login'), 'refresh'); } // CHECK ACCESS PERMISSION check_permission('user'); check_permission('student'); $is_instructor = 0; echo $this->user_model->add_shortcut_user($is_instructor); } public function user_form($param1 = "", $param2 = "") { if ($this->session->userdata('admin_login') != true) { redirect(site_url('login'), 'refresh'); } // CHECK ACCESS PERMISSION check_permission('user'); check_permission('student'); if ($param1 == 'add_user_form') { $page_data['page_name'] = 'user_add'; $page_data['page_title'] = get_phrase('student_add'); $this->load->view('backend/index', $page_data); } elseif ($param1 == 'edit_user_form') { $page_data['page_name'] = 'user_edit'; $page_data['user_id'] = $param2; $page_data['page_title'] = get_phrase('student_edit'); $this->load->view('backend/index', $page_data); } } public function enrol_history($param1 = "") { if ($this->session->userdata('admin_login') != true) { redirect(site_url('login'), 'refresh'); } // CHECK ACCESS PERMISSION check_permission('enrolment'); if ($param1 != "") { $date_range = $this->input->get('date_range'); $date_range = explode(" - ", $date_range); $page_data['timestamp_start'] = strtotime($date_range[0]); $page_data['timestamp_end'] = strtotime($date_range[1]); } else { $first_day_of_month = "1 " . date("M") . " " . date("Y") . ' 00:00:00'; $last_day_of_month = date("t") . " " . date("M") . " " . date("Y") . ' 23:59:59'; $page_data['timestamp_start'] = strtotime($first_day_of_month); $page_data['timestamp_end'] = strtotime($last_day_of_month); } $page_data['page_name'] = 'enrol_history'; $page_data['enrol_history'] = $this->crud_model->enrol_history_by_date_range($page_data['timestamp_start'], $page_data['timestamp_end']); $page_data['page_title'] = get_phrase('enrol_history'); $this->load->view('backend/index', $page_data); } public function enrol_student($param1 = "") { if ($this->session->userdata('admin_login') != true) { redirect(site_url('login'), 'refresh'); } // CHECK ACCESS PERMISSION check_permission('enrolment'); if ($param1 == 'enrol') { $this->crud_model->enrol_a_student_manually(); redirect(site_url('admin/enrol_history'), 'refresh'); } $page_data['page_name'] = 'enrol_student'; $page_data['page_title'] = get_phrase('course_enrolment'); $this->load->view('backend/index', $page_data); } public function shortcut_enrol_student() { if ($this->session->userdata('admin_login') != true) { redirect(site_url('login'), 'refresh'); } // CHECK ACCESS PERMISSION check_permission('enrolment'); echo $this->crud_model->shortcut_enrol_a_student_manually(); } public function admin_revenue($param1 = "") { if ($this->session->userdata('admin_login') != true) { redirect(site_url('login'), 'refresh'); } // CHECK ACCESS PERMISSION check_permission('revenue'); if ($param1 != "") { $date_range = $this->input->get('date_range'); $date_range = explode(" - ", $date_range); $page_data['timestamp_start'] = strtotime($date_range[0] . ' 00:00:00'); $page_data['timestamp_end'] = strtotime($date_range[1] . ' 23:59:59'); } else { $page_data['timestamp_start'] = strtotime(date("m/01/Y 00:00:00")); $page_data['timestamp_end'] = strtotime(date("m/t/Y 23:59:59")); } $page_data['page_name'] = 'admin_revenue'; $page_data['payment_history'] = $this->crud_model->get_revenue_by_user_type($page_data['timestamp_start'], $page_data['timestamp_end'], 'admin_revenue'); $page_data['page_title'] = get_phrase('admin_revenue'); $this->load->view('backend/index', $page_data); } public function instructor_revenue($param1 = "") { if ($this->session->userdata('admin_login') != true) { redirect(site_url('login'), 'refresh'); } // CHECK ACCESS PERMISSION check_permission('revenue'); $page_data['page_name'] = 'instructor_revenue'; $page_data['payment_history'] = $this->crud_model->get_revenue_by_user_type("", "", 'instructor_revenue'); $page_data['page_title'] = get_phrase('instructor_revenue'); $this->load->view('backend/index', $page_data); } function invoice($payout_id = "") { if ($this->session->userdata('admin_login') != true) { redirect(site_url('login'), 'refresh'); } $page_data['page_name'] = 'invoice'; $page_data['payout_id'] = $payout_id; $page_data['page_title'] = get_phrase('invoice'); $this->load->view('backend/index', $page_data); } public function enrol_history_delete($param1 = "") { if ($this->session->userdata('admin_login') != true) { redirect(site_url('login'), 'refresh'); } // CHECK ACCESS PERMISSION check_permission('enrolment'); $this->crud_model->delete_enrol_history($param1); $this->session->set_flashdata('flash_message', get_phrase('data_deleted_successfully')); redirect(site_url('admin/enrol_history'), 'refresh'); } public function purchase_history() { if ($this->session->userdata('admin_login') != true) { redirect(site_url('login'), 'refresh'); } $page_data['page_name'] = 'purchase_history'; $page_data['purchase_history'] = $this->crud_model->purchase_history(); $page_data['page_title'] = get_phrase('purchase_history'); $this->load->view('backend/index', $page_data); } public function system_settings($param1 = "") { if ($this->session->userdata('admin_login') != true) { redirect(site_url('login'), 'refresh'); } // CHECK ACCESS PERMISSION check_permission('settings'); if ($param1 == 'system_update') { $this->crud_model->update_system_settings(); $this->session->set_flashdata('flash_message', get_phrase('system_settings_updated')); redirect(site_url('admin/system_settings'), 'refresh'); } if ($param1 == 'logo_upload') { move_uploaded_file($_FILES['logo']['tmp_name'], 'assets/backend/logo.png'); $this->session->set_flashdata('flash_message', get_phrase('backend_logo_updated')); redirect(site_url('admin/system_settings'), 'refresh'); } if ($param1 == 'favicon_upload') { move_uploaded_file($_FILES['favicon']['tmp_name'], 'assets/favicon.png'); $this->session->set_flashdata('flash_message', get_phrase('favicon_updated')); redirect(site_url('admin/system_settings'), 'refresh'); } $page_data['languages'] = $this->crud_model->get_all_languages(); $page_data['page_name'] = 'system_settings'; $page_data['page_title'] = get_phrase('system_settings'); $this->load->view('backend/index', $page_data); } public function frontend_settings($param1 = "", $param2 = "") { if ($this->session->userdata('admin_login') != true) { redirect(site_url('login'), 'refresh'); } // CHECK ACCESS PERMISSION check_permission('settings'); if ($param1 == 'frontend_update') { $this->crud_model->update_frontend_settings(); $this->session->set_flashdata('flash_message', get_phrase('frontend_settings_updated')); redirect(site_url('admin/frontend_settings?tab=frontendsettings'), 'refresh'); } if ($param1 == 'recaptcha_update') { $this->crud_model->update_recaptcha_settings(); $this->session->set_flashdata('flash_message', get_phrase('recaptcha_settings_updated')); redirect(site_url('admin/frontend_settings?tab=recaptcha'), 'refresh'); } if ($param1 == 'banner_image_update') { $this->crud_model->update_frontend_banner(); $this->session->set_flashdata('flash_message', get_phrase('banner_image_update')); redirect(site_url('admin/frontend_settings?tab=logo_and_images'), 'refresh'); } if ($param1 == 'light_logo') { $this->crud_model->update_light_logo(); $this->session->set_flashdata('flash_message', get_phrase('logo_updated')); redirect(site_url('admin/frontend_settings?tab=logo_and_images'), 'refresh'); } if ($param1 == 'dark_logo') { $this->crud_model->update_dark_logo(); $this->session->set_flashdata('flash_message', get_phrase('logo_updated')); redirect(site_url('admin/frontend_settings?tab=logo_and_images'), 'refresh'); } if ($param1 == 'small_logo') { $this->crud_model->update_small_logo(); $this->session->set_flashdata('flash_message', get_phrase('logo_updated')); redirect(site_url('admin/frontend_settings?tab=logo_and_images'), 'refresh'); } if ($param1 == 'favicon') { $this->crud_model->update_favicon(); $this->session->set_flashdata('flash_message', get_phrase('favicon_updated')); redirect(site_url('admin/frontend_settings?tab=logo_and_images'), 'refresh'); } if ($param1 == 'motivational_speech') { $this->crud_model->update_motivational_speech(); $this->session->set_flashdata('flash_message', get_phrase('Motivational speech updated successfully')); redirect(site_url('admin/frontend_settings?tab=home_page_settings'), 'refresh'); } if ($param1 == 'website_faq') { $this->crud_model->update_website_faq(); $this->session->set_flashdata('flash_message', get_phrase('Website FAQS updated successfully')); redirect(site_url('admin/frontend_settings?tab=websitefaqs'), 'refresh'); } if ($param1 == 'contact_info') { $this->crud_model->update_contact_info(); $this->session->set_flashdata('flash_message', get_phrase('Contact information updated successfully')); redirect(site_url('admin/frontend_settings?tab=contact_information'), 'refresh'); } if ($param1 == 'custom_codes') { $this->crud_model->update_custom_codes(); $this->session->set_flashdata('flash_message', get_phrase('Your custom codes updated successfully')); redirect(site_url('admin/frontend_settings?tab=custom_codes'), 'refresh'); } if ($param1 == 'home_page_settings') { echo $this->crud_model->update_home_page_settings($param2); return; } $page_data['page_name'] = 'frontend_settings'; $page_data['page_title'] = get_phrase('frontend_settings'); $this->load->view('backend/index', $page_data); } public function payment_settings($param1 = "") { if ($this->session->userdata('admin_login') != true) { redirect(site_url('login'), 'refresh'); } // CHECK ACCESS PERMISSION check_permission('settings'); if ($param1 == 'system_currency') { $this->crud_model->update_system_currency(); redirect(site_url('admin/payment_settings'), 'refresh'); } if (isset($_POST['identifier'])) { $this->crud_model->update_payment_settings(); redirect(site_url('admin/payment_settings'), 'refresh'); } $page_data['payment_gateways'] = $this->crud_model->get_payment_gateways()->result_array(); $page_data['page_name'] = 'payment_settings'; $page_data['page_title'] = get_phrase('payment_settings'); $this->load->view('backend/index', $page_data); } public function notification_settings($param1 = "", $param2 = "", $param3 = "") { if ($param1 == 'smtp_settings') { $this->crud_model->update_smtp_settings(); $this->session->set_flashdata('flash_message', get_phrase('smtp_settings_updated_successfully')); redirect(site_url('admin/notification_settings'), 'refresh'); } if ($param1 == 'notification_enable_diable') { echo $this->crud_model->notification_enable_diable(); return; } if (isset($_GET['tab'])) { $page_data['tab'] = $_GET['tab']; } else { $page_data['tab'] = 'smtp-settings'; } $page_data['page_name'] = 'notification_settings'; $page_data['page_title'] = get_phrase('Notification settings'); $this->load->view('backend/index', $page_data); } function edit_email_template($id = "", $param2 = "") { if ($param2 == 'update') { $data['subject'] = json_encode($this->input->post('subject')); $data['template'] = json_encode($this->input->post('template')); $this->db->where('id', $id)->update('notification_settings', $data); $this->session->set_flashdata('flash_message', get_phrase('Email template updated successfully')); redirect(site_url('admin/notification_settings?tab=email-template'), 'refresh'); } $page_data['notification'] = $this->db->where('id', $id)->get('notification_settings')->row_array(); $this->load->view('backend/admin/edit_email_template', $page_data); } public function social_login_settings($param1 = "") { if ($this->session->userdata('admin_login') != true) { redirect(site_url('login'), 'refresh'); } // CHECK ACCESS PERMISSION check_permission('settings'); if ($param1 == 'update') { $this->crud_model->update_social_login_settings(); $this->session->set_flashdata('flash_message', get_phrase('social_login_settings_updated_successfully')); redirect(site_url('admin/social_login_settings'), 'refresh'); } $page_data['page_name'] = 'social_login'; $page_data['page_title'] = get_phrase('social_login'); $this->load->view('backend/index', $page_data); } public function instructor_settings($param1 = "") { if ($this->session->userdata('admin_login') != true) { redirect(site_url('login'), 'refresh'); } // CHECK ACCESS PERMISSION check_permission('user'); check_permission('instructor'); if ($param1 == 'update') { $this->crud_model->update_instructor_settings(); $this->session->set_flashdata('flash_message', get_phrase('instructor_settings_updated')); redirect(site_url('admin/instructor_settings'), 'refresh'); } $page_data['page_name'] = 'instructor_settings'; $page_data['page_title'] = get_phrase('instructor_settings'); $this->load->view('backend/index', $page_data); } public function theme_settings($action = '') { if ($this->session->userdata('admin_login') != true) { redirect(site_url('login'), 'refresh'); } // CHECK ACCESS PERMISSION check_permission('theme'); $page_data['page_name'] = 'theme_settings'; $page_data['page_title'] = get_phrase('theme_settings'); $this->load->view('backend/index', $page_data); } public function theme_actions($action = "", $theme = "") { if ($this->session->userdata('admin_login') != true) { redirect(site_url('login'), 'refresh'); } // CHECK ACCESS PERMISSION check_permission('theme'); if ($action == 'activate') { $theme_to_active = $this->input->post('theme'); $installed_themes = $this->crud_model->get_installed_themes(); if (in_array($theme_to_active, $installed_themes)) { $this->crud_model->activate_theme($theme_to_active); echo true; } else { echo false; } } elseif ($action == 'remove') { if ($theme == get_frontend_settings('theme')) { $this->session->set_flashdata('error_message', get_phrase('activate_a_theme_first')); } else { $this->crud_model->remove_files_and_folders(APPPATH . '/views/frontend/' . $theme); $this->crud_model->remove_files_and_folders(FCPATH . '/assets/frontend/' . $theme); $this->session->set_flashdata('flash_message', $theme . ' ' . get_phrase('theme_removed_successfully')); } redirect(site_url('admin/theme_settings'), 'refresh'); } } public function courses() { if ($this->session->userdata('admin_login') != true) { redirect(site_url('login'), 'refresh'); } // CHECK ACCESS PERMISSION check_permission('course'); $page_data['selected_category_id'] = isset($_GET['category_id']) ? $_GET['category_id'] : "all"; $page_data['selected_instructor_id'] = isset($_GET['instructor_id']) ? $_GET['instructor_id'] : "all"; $page_data['selected_price'] = isset($_GET['price']) ? $_GET['price'] : "all"; $page_data['selected_status'] = isset($_GET['status']) ? $_GET['status'] : "all"; $page_data['page_name'] = 'courses-server-side'; $page_data['categories'] = $this->crud_model->get_categories(); $page_data['page_title'] = get_phrase('active_courses'); $this->load->view('backend/index', $page_data); } // This function is responsible for loading the course data from server side for datatable SILENTLY public function get_courses() { $data = array(); //mentioned all with colum of database table that related with html table $columns = array('id', 'title', 'sub_category_id', 'section', 'id', 'status', 'price', 'id'); // Filter portion $category_id = $this->input->post('selected_category_id'); $instructor_id = $this->input->post('selected_instructor_id'); $price = $this->input->post('selected_price'); $status = $this->input->post('selected_status'); $limit = htmlspecialchars_($this->input->post('length')); $start = htmlspecialchars_($this->input->post('start')); $column_index = $columns[$this->input->post('order')[0]['column']]; $dir = $this->input->post('order')[0]['dir']; $total_number_of_row = $this->crud_model->get_courses()->num_rows(); $search = $this->input->post('search')['value']; //FILTERED DATA $this->db->select('*'); if (!empty($search)) { $this->db->group_start(); $this->db->like('title', $search); $this->db->or_like('status', $search); $this->db->or_like('price', $search); $this->db->or_like('discounted_price', $search); $this->db->group_end(); } if (!empty($category_id) && $category_id != 'all') { $this->db->where('sub_category_id', $category_id); } if (!empty($instructor_id) && $instructor_id != 'all') { $this->db->where('creator', $instructor_id); } if (!empty($price) && $price != 'all') { if ($price == 'free') { $this->db->where('is_free_course', 1); } elseif ($price == 'paid') { $this->db->where('is_free_course', null); } } if (!empty($status) && $status != 'all') { $this->db->group_start(); $this->db->where('status', $status); $this->db->group_end(); } $this->db->limit($limit, $start); $this->db->order_by($column_index, $dir); $courses = $this->db->get('course')->result_array(); //WITHOUT FILTERED DATA $this->db->select('*'); if (!empty($search)) { $this->db->group_start(); $this->db->like('title', $search); $this->db->or_like('status', $search); $this->db->or_like('price', $search); $this->db->or_like('discounted_price', $search); $this->db->group_end(); } if (!empty($category_id) && $category_id != 'all') { $this->db->where('sub_category_id', $category_id); } if (!empty($instructor_id) && $instructor_id != 'all') { $this->db->where('creator', $instructor_id); } if (!empty($price) && $price != 'all') { if ($price == 'free') { $this->db->where('is_free_course', 1); } elseif ($price == 'paid') { $this->db->where('is_free_course', null); } } if (!empty($status) && $status != 'all') { $this->db->group_start(); $this->db->where('status', $status); $this->db->group_end(); } $filtered_number_of_row = $this->db->get('course')->num_rows(); // Fetch the data and make it as JSON format and return it. if (!empty($courses)) { foreach ($courses as $key => $row) { $instructor_details = $this->user_model->get_all_user($row['creator'])->row_array(); $category_details = $this->crud_model->get_category_details_by_id($row['sub_category_id'])->row_array(); $sections = $this->crud_model->get_section('course', $row['id']); $lessons = $this->crud_model->get_lessons('course', $row['id']); $enroll_history = $this->crud_model->enrol_history($row['id']); $status_badge = "badge-success-lighten"; if ($row['status'] == 'pending') { $status_badge = "badge-danger-lighten"; } elseif ($row['status'] == 'draft') { $status_badge = "badge-dark-lighten"; } elseif ($row['status'] == 'private') { $status_badge = "badge-dark"; } elseif ($row['status'] == 'upcoming') { $status_badge = "badge-warning-lighten"; } $price_badge = "badge-dark-lighten"; $price = 0; if ($row['is_free_course'] == null) { if ($row['discount_flag'] == 1) { $price = currency($row['discounted_price']); } else { $price = currency($row['price']); } } elseif ($row['is_free_course'] == 1) { $price_badge = "badge-success-lighten"; $price = get_phrase('free'); } $price_field = '' . $price . ''; if ($row['expiry_period'] > 0) { $price_field .= '

' . $row['expiry_period'] . ' ' . get_phrase('Months') . '

'; } else { $price_field .= '

' . get_phrase('Lifetime') . '

'; } $view_course_on_frontend_url = site_url('home/course/' . rawurlencode(slugify($row['title'])) . '/' . $row['id']); $go_to_course_playing_page = site_url('home/lesson/' . rawurlencode(slugify($row['title'])) . '/' . $row['id']); $edit_this_course_url = site_url('admin/course_form/course_edit/' . $row['id']); $duplicate_this_course_url = site_url('admin/course_form/course_duplicate/' . $row['id']); $section_and_lesson_url = site_url('admin/course_form/course_edit/' . $row['id']); $academic_progress_url = site_url('admin/course_form/course_edit/' . $row['id'] . '?tab=academic_progress'); if ($row['status'] == 'active') { $course_status_changing_message = get_phrase('mark_as_pending'); if ($row['user_id'] != $this->session->userdata('user_id')) { $course_status_changing_action = "showAjaxModal('" . site_url('modal/popup/mail_on_course_status_changing_modal/pending/' . $row['id'] . '/' . $category_id . '/' . $instructor_id . '/all/' . $status) . "', '" . $course_status_changing_message . "')"; } else { $course_status_changing_action = "confirm_modal('" . site_url('admin/change_course_status_for_admin/pending/' . $row['id'] . '/' . $category_id . '/' . $instructor_id . '/all/' . $status) . "')"; } } else { $course_status_changing_message = get_phrase('mark_as_active'); if ($row['user_id'] != $this->session->userdata('user_id')) { $course_status_changing_action = "showAjaxModal('" . site_url('modal/popup/mail_on_course_status_changing_modal/active/' . $row['id'] . '/' . $category_id . '/' . $instructor_id . '/all/' . $status) . "', '" . $course_status_changing_message . "')"; } else { $course_status_changing_action = "confirm_modal('" . site_url('admin/change_course_status_for_admin/active/' . $row['id'] . '/' . $category_id . '/' . $instructor_id . '/all/' . $status) . "')"; } } $delete_course_url = "confirm_modal('" . site_url('admin/course_actions/delete/' . $row['id']) . "')"; if ($row['course_type'] == 'general') { $section_and_lesson_menu = '
  • ' . get_phrase("section_and_lesson") . '
  • '; } else { $section_and_lesson_menu = ""; } $course_academic_progress_menu = '
  • ' . get_phrase("Academic progress") . '
  • '; $course_edit_menu = '
  • ' . get_phrase("edit_this_course") . '
  • '; $course_duplicate_menu = '
  • ' . get_phrase("duplicate_this_course") . '
  • '; $course_delete_menu = '
  • ' . get_phrase("delete") . '
  • '; $action = '
    '; $nestedData['#'] = $key + 1; $instructor_names = ""; foreach ($this->crud_model->get_course_instructors_id($row['id']) as $instructor_id) { $multi_instructor = $this->user_model->get_all_user($instructor_id)->row_array(); $instructor_names = $multi_instructor['first_name'] . ' ' . $multi_instructor['last_name']; } $nestedData['title'] = '' . $row['title'] . '
    ' . get_phrase('instructor') . ': ' . $instructor_names . ''; $nestedData['category'] = '' . $category_details['name'] . ''; if ($row['course_type'] == 'scorm') { $nestedData['lesson_and_section'] = '' . get_phrase('scorm_course') . ''; } elseif ($row['course_type'] == 'h5p') { $nestedData['lesson_and_section'] = '' . get_phrase('h5p_course') . ''; } elseif ($row['course_type'] == 'general') { $nestedData['lesson_and_section'] = ' ' . get_phrase('Section') . ': ' . $sections->num_rows() . '
    ' . get_phrase('Lesson') . ': ' . $lessons->num_rows() . ''; } $nestedData['enrolled_student'] = '' . get_phrase('Enrollments') . ': ' . $enroll_history->num_rows() . ''; $nestedData['status'] = '' . get_phrase($row['status']) . ''; $nestedData['price'] = $price_field; $nestedData['actions'] = $action; $nestedData['course_id'] = $row['id']; $data[] = $nestedData; } } $json_data = array( "draw" => intval($this->input->post('draw')), "recordsTotal" => intval($total_number_of_row), "recordsFiltered" => intval($filtered_number_of_row), "data" => $data ); echo json_encode($json_data); } public function pending_courses() { if ($this->session->userdata('admin_login') != true) { redirect(site_url('login'), 'refresh'); } // CHECK ACCESS PERMISSION check_permission('course'); $page_data['page_name'] = 'pending_courses'; $page_data['page_title'] = get_phrase('pending_courses'); $this->load->view('backend/index', $page_data); } public function course_actions($param1 = "", $param2 = "") { if ($this->session->userdata('admin_login') != true) { redirect(site_url('login'), 'refresh'); } // CHECK ACCESS PERMISSION check_permission('course'); if ($param1 == "add") { $course_id = $this->crud_model->add_course(); redirect(site_url('admin/course_form/course_edit/' . $course_id), 'refresh'); } elseif ($param1 == 'add_shortcut') { echo $this->crud_model->add_shortcut_course(); } elseif ($param1 == "edit") { $this->crud_model->update_course($param2); // CHECK IF LIVE CLASS ADDON EXISTS, ADD OR UPDATE IT TO ADDON MODEL if (addon_status('live-class')) { $this->load->model('addons/Liveclass_model', 'liveclass_model'); $this->liveclass_model->update_live_class($param2); } // CHECK IF JITSI LIVE CLASS ADDON EXISTS, ADD OR UPDATE IT TO ADDON MODEL if (addon_status('jitsi-live-class')) { $this->load->model('addons/jitsi_liveclass_model', 'jitsi_liveclass_model'); $this->jitsi_liveclass_model->update_live_class($param2); } redirect(site_url('admin/course_form/course_edit/' . $param2)); } elseif ($param1 == 'delete') { $this->is_drafted_course($param2); $this->crud_model->delete_course($param2); redirect(site_url('admin/courses'), 'refresh'); } } public function course_form($param1 = "", $param2 = "") { if ($this->session->userdata('admin_login') != true) { redirect(site_url('login'), 'refresh'); } // CHECK ACCESS PERMISSION check_permission('course'); if ($param1 == 'add_course') { $page_data['languages'] = $this->crud_model->get_all_languages(); $page_data['categories'] = $this->crud_model->get_categories(); $page_data['page_name'] = 'course_add'; $page_data['page_title'] = get_phrase('add_course'); $this->load->view('backend/index', $page_data); } elseif ($param1 == 'add_course_shortcut') { $page_data['languages'] = $this->crud_model->get_all_languages(); $page_data['categories'] = $this->crud_model->get_categories(); $this->load->view('backend/admin/course_add_shortcut', $page_data); } elseif ($param1 == 'course_edit') { $this->is_drafted_course($param2); $page_data['page_name'] = 'course_edit'; $page_data['course_id'] = $param2; $page_data['page_title'] = get_phrase('edit_course'); $page_data['languages'] = $this->crud_model->get_all_languages(); $page_data['categories'] = $this->crud_model->get_categories(); $this->load->view('backend/index', $page_data); }elseif($param1 == 'course_duplicate'){ $this->duplicate_course($param2); $this->session->set_flashdata('flash_message', get_phrase('Course Duplicate Successfully')); redirect(site_url('admin/courses'), 'refresh'); } } public function duplicate_course($id){ $course = $this->db->where('id', $id)->get('course')->row_array(); $max_course_id = $this->db->select_max('id')->get('course')->row_array(); $course['id'] = $max_course_id['id'] + 1; $this->db->insert('course', $course); } private function is_drafted_course($course_id) { if ($this->session->userdata('admin_login') != true) { redirect(site_url('login'), 'refresh'); } $course_details = $this->crud_model->get_course_by_id($course_id)->row_array(); if ($course_details['status'] == 'draft') { $this->session->set_flashdata('error_message', get_phrase('you_do_not_have_right_to_access_this_course')); redirect(site_url('admin/courses'), 'refresh'); } } public function change_course_status($updated_status = "") { if ($this->session->userdata('admin_login') != true) { redirect(site_url('login'), 'refresh'); } $course_id = $this->input->post('course_id'); $category_id = $this->input->post('category_id'); $instructor_id = $this->input->post('instructor_id'); $price = $this->input->post('price'); $status = $this->input->post('status'); if (isset($_POST['mail_subject']) && isset($_POST['mail_body'])) { $mail_subject = $this->input->post('mail_subject'); $mail_body = $this->input->post('mail_body'); $this->email_model->send_mail_on_course_status_changing($course_id, $mail_subject, $mail_body); } $this->crud_model->change_course_status($updated_status, $course_id); $this->session->set_flashdata('flash_message', get_phrase('course_status_updated')); //redirect(site_url('admin/courses?category_id=' . $category_id . '&status=' . $status . '&instructor_id=' . $instructor_id . '&price=' . $price), 'refresh'); redirect($_SERVER['HTTP_REFERER']); } public function change_course_status_for_admin($updated_status = "", $course_id = "", $category_id = "", $status = "", $instructor_id = "", $price = "") { if ($this->session->userdata('admin_login') != true) { redirect(site_url('login'), 'refresh'); } $this->crud_model->change_course_status($updated_status, $course_id); $this->session->set_flashdata('flash_message', get_phrase('course_status_updated')); redirect(site_url('admin/courses?category_id=' . $category_id . '&status=' . $status . '&instructor_id=' . $instructor_id . '&price=' . $price), 'refresh'); } public function sections($param1 = "", $param2 = "", $param3 = "") { if ($this->session->userdata('admin_login') != true) { redirect(site_url('login'), 'refresh'); } // CHECK ACCESS PERMISSION check_permission('course'); if ($param2 == 'add') { $this->crud_model->add_section($param1); $this->session->set_flashdata('flash_message', get_phrase('section_has_been_added_successfully')); } elseif ($param2 == 'edit') { $this->crud_model->edit_section($param3); $this->session->set_flashdata('flash_message', get_phrase('section_has_been_updated_successfully')); } elseif ($param2 == 'delete') { $this->crud_model->delete_section($param1, $param3); $this->session->set_flashdata('flash_message', get_phrase('section_has_been_deleted_successfully')); } redirect(site_url('admin/course_form/course_edit/' . $param1)); } public function lessons($course_id = "", $param1 = "", $param2 = "") { // CHECK ACCESS PERMISSION check_permission('course'); if ($this->session->userdata('admin_login') != true) { redirect(site_url('login'), 'refresh'); } if ($param1 == 'add') { $response = $this->crud_model->add_lesson(); echo $response; return; } elseif ($param1 == 'edit') { $response = $this->crud_model->edit_lesson($param2); echo $response; return; } elseif ($param1 == 'delete') { $this->crud_model->delete_lesson($param2); $this->session->set_flashdata('flash_message', get_phrase('lesson_has_been_deleted_successfully')); redirect('admin/course_form/course_edit/' . $course_id); } elseif ($param1 == 'filter') { redirect('admin/lessons/' . $this->input->post('course_id')); } $page_data['page_name'] = 'lessons'; $page_data['lessons'] = $this->crud_model->get_lessons('course', $course_id); $page_data['course_id'] = $course_id; $page_data['page_title'] = get_phrase('lessons'); $this->load->view('backend/index', $page_data); } public function watch_video($slugified_title = "", $lesson_id = "") { if ($this->session->userdata('admin_login') != true) { redirect(site_url('login'), 'refresh'); } $lesson_details = $this->crud_model->get_lessons('lesson', $lesson_id)->row_array(); $page_data['provider'] = $lesson_details['video_type']; $page_data['video_url'] = $lesson_details['video_url']; $page_data['lesson_id'] = $lesson_id; $page_data['page_name'] = 'video_player'; $page_data['page_title'] = get_phrase('video_player'); $this->load->view('backend/index', $page_data); } // Language Functions public function manage_language($param1 = '', $param2 = '', $param3 = '') { if ($this->session->userdata('admin_login') != true) { redirect(site_url('login'), 'refresh'); } // CHECK ACCESS PERMISSION check_permission('settings'); if ($param1 == 'add_language') { $language = strtolower(trimmer($this->input->post('language'))); if ($language == 'n-a') { $this->session->set_flashdata('error_message', get_phrase('language_name_can_not_be_empty_or_can_not_have_special_characters')); redirect(site_url('admin/manage_language'), 'refresh'); } if (!$this->db->field_exists($language, 'language')) { $this->load->dbforge(); $fields = array( $language => array( 'type' => 'TEXT', 'default' => null, 'null' => TRUE, 'collation' => 'utf8_unicode_ci' ) ); $this->dbforge->add_column('language', $fields); } saveDefaultJSONFile($language); $this->session->set_flashdata('flash_message', get_phrase('language_added_successfully')); redirect(site_url('admin/manage_language'), 'refresh'); } if ($param1 == 'add_phrase') { $new_phrase = get_phrase($this->input->post('phrase')); $this->session->set_flashdata('flash_message', $new_phrase . ' ' . get_phrase('has_been_added_successfully')); redirect(site_url('admin/manage_language'), 'refresh'); } if ($param1 == 'edit_phrase') { $page_data['edit_profile'] = $param2; } if ($param1 == 'delete_language') { if (file_exists('application/language/' . $param2 . '.json')) { unlink('application/language/' . $param2 . '.json'); $this->session->set_flashdata('flash_message', get_phrase('language_deleted_successfully')); redirect(site_url('admin/manage_language'), 'refresh'); } } $page_data['languages'] = $this->crud_model->get_all_languages(); $page_data['page_name'] = 'manage_language'; $page_data['page_title'] = get_phrase('multi_language_settings'); $this->load->view('backend/index', $page_data); } public function update_phrase_with_ajax() { $current_editing_language = $this->input->post('currentEditingLanguage'); $updatedValue = $this->input->post('updatedValue'); $key = $this->input->post('key'); saveJSONFile($current_editing_language, $key, $updatedValue); echo $current_editing_language . ' ' . $key . ' ' . $updatedValue; } function message($param1 = 'message_home', $param2 = '', $param3 = '') { if ($this->session->userdata('admin_login') != 1) redirect(site_url('login'), 'refresh'); // CHECK ACCESS PERMISSION check_permission('messaging'); if ($param1 == 'send_new') { $message_thread_code = $this->crud_model->send_new_private_message(); $this->session->set_flashdata('flash_message', get_phrase('message_sent')); redirect(site_url('admin/message/message_read/' . $message_thread_code), 'refresh'); } if ($param1 == 'send_reply') { $this->crud_model->send_reply_message($param2); //$param2 = message_thread_code $this->session->set_flashdata('flash_message', get_phrase('message_sent')); redirect(site_url('admin/message/message_read/' . $param2), 'refresh'); } if ($param1 == 'message_read') { $page_data['current_message_thread_code'] = $param2; // $param2 = message_thread_code $this->crud_model->mark_thread_messages_read($param2); } $page_data['message_inner_page_name'] = $param1; $page_data['page_name'] = 'message'; $page_data['page_title'] = get_phrase('private_messaging'); $this->load->view('backend/index', $page_data); } /******MANAGE OWN PROFILE AND CHANGE PASSWORD***/ function manage_profile($param1 = '', $param2 = '', $param3 = '') { if ($this->session->userdata('admin_login') != 1) redirect(site_url('login'), 'refresh'); if ($param1 == 'update_profile_info') { $this->user_model->edit_user($param2); redirect(site_url('admin/manage_profile'), 'refresh'); } if ($param1 == 'change_password') { $this->user_model->change_password($param2); redirect(site_url('admin/manage_profile'), 'refresh'); } $page_data['page_name'] = 'manage_profile'; $page_data['page_title'] = get_phrase('manage_profile'); $page_data['edit_data'] = $this->db->get_where('users', array( 'id' => $this->session->userdata('user_id') ))->result_array(); $this->load->view('backend/index', $page_data); } public function paypal_checkout_for_instructor_revenue() { if ($this->session->userdata('admin_login') != 1) redirect(site_url('login'), 'refresh'); $page_data['amount_to_pay'] = $this->input->post('amount_to_pay'); $page_data['payout_id'] = $this->input->post('payout_id'); $page_data['instructor_name'] = $this->input->post('instructor_name'); $page_data['production_client_id'] = $this->input->post('production_client_id'); // BEFORE, CHECK PAYOUT AMOUNTS ARE VALID $payout_details = $this->crud_model->get_payouts($page_data['payout_id'], 'payout')->row_array(); if ($payout_details['amount'] == $page_data['amount_to_pay'] && $payout_details['status'] == 0) { $this->load->view('backend/admin/paypal_checkout_for_instructor_revenue', $page_data); } else { $this->session->set_flashdata('error_message', get_phrase('invalid_payout_data')); redirect(site_url('admin/instructor_payout'), 'refresh'); } } // PAYPAL CHECKOUT ACTIONS public function paypal_payment($payout_id = "", $paypalPaymentID = "", $paypalPaymentToken = "", $paypalPayerID = "") { $payout_details = $this->crud_model->get_payouts($payout_id, 'payout')->row_array(); $instructor_id = $payout_details['user_id']; $instructor_data = $this->db->get_where('users', array('id' => $instructor_id))->row_array(); $payment_keys = json_decode($instructor_data['payment_keys'], true); $paypal_keys = $payment_keys['paypal']; $production_client_id = $paypal_keys['production_client_id']; $production_secret_key = $paypal_keys['production_secret_key']; //THIS IS HOW I CHECKED THE PAYPAL PAYMENT STATUS $status = $this->payment_model->paypal_payment($paypalPaymentID, $paypalPaymentToken, $paypalPayerID, $production_client_id, $production_secret_key); if (!$status) { $this->session->set_flashdata('error_message', get_phrase('an_error_occurred_during_payment')); redirect(site_url('admin/instructor_payout'), 'refresh'); } $this->crud_model->update_payout_status($payout_id, 'paypal'); $this->session->set_flashdata('flash_message', get_phrase('payout_updated_successfully')); redirect(site_url('admin/instructor_payout'), 'refresh'); } public function stripe_checkout_for_instructor_revenue($payout_id) { if ($this->session->userdata('admin_login') != 1) redirect(site_url('login'), 'refresh'); // BEFORE, CHECK PAYOUT AMOUNTS ARE VALID $payout_details = $this->crud_model->get_payouts($payout_id, 'payout')->row_array(); if ($payout_details['amount'] > 0 && $payout_details['status'] == 0) { $page_data['user_details'] = $this->user_model->get_user($payout_details['user_id'])->row_array(); $page_data['amount_to_pay'] = $payout_details['amount']; $page_data['payout_id'] = $payout_details['id']; $this->load->view('backend/admin/stripe_checkout_for_instructor_revenue', $page_data); } else { $this->session->set_flashdata('error_message', get_phrase('invalid_payout_data')); redirect(site_url('admin/instructor_payout'), 'refresh'); } } // STRIPE CHECKOUT ACTIONS public function stripe_payment($payout_id = "", $session_id = "") { $payout_details = $this->crud_model->get_payouts($payout_id, 'payout')->row_array(); $instructor_id = $payout_details['user_id']; //THIS IS HOW I CHECKED THE STRIPE PAYMENT STATUS $response = $this->payment_model->stripe_payment($instructor_id, $session_id, true); if ($response['payment_status'] === 'succeeded') { $this->crud_model->update_payout_status($payout_id, 'stripe'); $this->session->set_flashdata('flash_message', get_phrase('payout_updated_successfully')); } else { $this->session->set_flashdata('error_message', $response['status_msg']); } redirect(site_url('admin/instructor_payout'), 'refresh'); } public function razorpay_checkout_for_instructor_revenue($user_id = "", $payout_id = "", $param1 = "", $razorpay_order_id = "", $payment_id = "", $amount = "", $signature = "") { if ($param1 == 'paid') { $status = $this->payment_model->razorpay_payment($razorpay_order_id, $payment_id, $amount, $signature); if ($status == true) { $this->crud_model->update_payout_status($payout_id, 'razorpay'); $this->session->set_flashdata('flash_message', get_phrase('payout_updated_successfully')); } else { $this->session->set_flashdata('error_message', $response['status_msg']); } redirect(site_url('admin/instructor_payout'), 'refresh'); } $page_data['payout_id'] = $payout_id; $page_data['user_details'] = $this->user_model->get_user($user_id)->row_array(); $page_data['amount_to_pay'] = $this->input->post('total_price_of_checking_out'); $this->load->view('backend/admin/razorpay_checkout', $page_data); } public function preview($course_id = '') { if ($this->session->userdata('admin_login') != 1) redirect(site_url('login'), 'refresh'); $this->is_drafted_course($course_id); if ($course_id > 0) { $courses = $this->crud_model->get_course_by_id($course_id); if ($courses->num_rows() > 0) { $course_details = $courses->row_array(); redirect(site_url('home/lesson/' . rawurlencode(slugify($course_details['title'])) . '/' . $course_details['id']), 'refresh'); } } redirect(site_url('admin/courses'), 'refresh'); } // Manage Quizes public function quizes($course_id = "", $action = "", $quiz_id = "") { if ($this->session->userdata('admin_login') != true) { redirect(site_url('login'), 'refresh'); } // CHECK ACCESS PERMISSION check_permission('course'); if ($action == 'add') { $this->crud_model->add_quiz($course_id); $this->session->set_flashdata('flash_message', get_phrase('quiz_has_been_added_successfully')); } elseif ($action == 'edit') { $this->crud_model->edit_quiz($quiz_id); $this->session->set_flashdata('flash_message', get_phrase('quiz_has_been_updated_successfully')); } elseif ($action == 'delete') { $this->crud_model->delete_section($course_id, $quiz_id); $this->session->set_flashdata('flash_message', get_phrase('quiz_has_been_deleted_successfully')); } redirect(site_url('admin/course_form/course_edit/' . $course_id)); } // Manage Quize Questions public function quiz_questions($quiz_id = "", $action = "", $question_id = "") { if ($this->session->userdata('admin_login') != true) { redirect(site_url('login'), 'refresh'); } $quiz_details = $this->crud_model->get_lessons('lesson', $quiz_id)->row_array(); if ($action == 'add' || $action == 'edit') { echo $this->crud_model->manage_quiz_questions($quiz_id, $question_id, $action); } elseif ($action == 'delete') { $response = $this->crud_model->delete_quiz_question($question_id); $this->session->set_flashdata('flash_message', get_phrase('question_has_been_deleted')); redirect(site_url('admin/course_form/course_edit/' . $quiz_details['course_id']), 'refresh'); } } // software about page function about() { if ($this->session->userdata('admin_login') != 1) redirect(site_url('login'), 'refresh'); $page_data['application_details'] = $this->crud_model->get_application_details(); $page_data['page_name'] = 'about'; $page_data['page_title'] = get_phrase('about'); $this->load->view('backend/index', $page_data); } public function install_theme($theme_to_install = '') { if ($this->session->userdata('admin_login') != 1) { redirect(site_url('login'), 'refresh'); } // CHECK ACCESS PERMISSION check_permission('theme'); $uninstalled_themes = $this->crud_model->get_uninstalled_themes(); if (!in_array($theme_to_install, $uninstalled_themes)) { $this->session->set_flashdata('error_message', get_phrase('this_theme_is_not_available')); redirect(site_url('admin/theme_settings')); } if (!class_exists('ZipArchive')) { $this->session->set_flashdata('error_message', get_phrase('your_server_is_unable_to_extract_the_zip_file') . '. ' . get_phrase('please_enable_the_zip_extension_on_your_server') . ', ' . get_phrase('then_try_again')); redirect(site_url('admin/theme_settings')); } $zipped_file_name = $theme_to_install; $unzipped_file_name = substr($zipped_file_name, 0, -4); // Create update directory. $views_directory = 'application/views/frontend'; $assets_directory = 'assets/frontend'; //Unzip theme zip file and remove zip file. $theme_path = 'themes/' . $zipped_file_name; $theme_zip = new ZipArchive; $theme_result = $theme_zip->open($theme_path); if ($theme_result === TRUE) { $theme_zip->extractTo('themes'); $theme_zip->close(); } // unzip the views zip file to the application>views folder $views_path = 'themes/' . $unzipped_file_name . '/views/' . $zipped_file_name; $views_zip = new ZipArchive; $views_result = $views_zip->open($views_path); if ($views_result === TRUE) { $views_zip->extractTo($views_directory); $views_zip->close(); } // unzip the assets zip file to the assets/frontend folder $assets_path = 'themes/' . $unzipped_file_name . '/assets/' . $zipped_file_name; $assets_zip = new ZipArchive; $assets_result = $assets_zip->open($assets_path); if ($assets_result === TRUE) { $assets_zip->extractTo($assets_directory); $assets_zip->close(); } unlink($theme_path); $this->crud_model->remove_files_and_folders('themes/' . $unzipped_file_name); $this->session->set_flashdata('flash_message', get_phrase('theme_imported_successfully')); redirect(site_url('admin/theme_settings')); } public function available_addon() { $collectionId = '8226729'; $personal_token = "FkA9UyDiQT0YiKwYLK3ghyFNRVV9SeUn"; //setting the header for the rest of the api $bearer = 'bearer ' . $personal_token; $header = array(); $header[] = 'Content-length: 0'; $header[] = 'Content-type: application/json; charset=utf-8'; $header[] = 'Authorization: ' . $bearer; $verify_url = 'https://api.envato.com/v3/market/catalog/collection'; $ch_verify = curl_init($verify_url . '?id=' . $collectionId); curl_setopt($ch_verify, CURLOPT_HTTPHEADER, $header); curl_setopt($ch_verify, CURLOPT_SSL_VERIFYPEER, false); curl_setopt($ch_verify, CURLOPT_RETURNTRANSFER, 1); curl_setopt($ch_verify, CURLOPT_CONNECTTIMEOUT, 5); curl_setopt($ch_verify, CURLOPT_USERAGENT, 'Mozilla/5.0 (Windows; U; Windows NT 5.1; en-US; rv:1.8.1.13) Gecko/20080311 Firefox/2.0.0.13'); $cinit_verify_data = curl_exec($ch_verify); curl_close($ch_verify); // collection, items, pagination $response_data = json_decode($cinit_verify_data, true); $page_data['items'] = $response_data['items']; $page_data['collectionId'] = $collectionId; $page_data['page_name'] = 'available_addons'; $page_data['page_title'] = get_phrase('available_addons'); $this->load->view('backend/index', $page_data); } //ADDON MANAGER PORTION STARTS HERE public function addon($param1 = "", $param2 = "", $param3 = "") { if ($this->session->userdata('admin_login') != 1) { redirect(site_url('login'), 'refresh'); } // CHECK ACCESS PERMISSION check_permission('addon'); // ADD NEW ADDON FORM if ($param1 == 'add') { // CHECK ACCESS PERMISSION check_permission('addon'); $page_data['page_name'] = 'addon_add'; $page_data['page_title'] = get_phrase('add_addon'); } if ($param1 == 'update') { // CHECK ACCESS PERMISSION check_permission('addon'); $page_data['page_name'] = 'addon_update'; $page_data['page_title'] = get_phrase('add_update'); } // INSTALLING AN ADDON if ($param1 == 'install' || $param1 == 'version_update') { // CHECK ACCESS PERMISSION check_permission('addon'); $this->addon_model->install_addon($param1); } // ACTIVATING AN ADDON if ($param1 == 'activate') { $update_message = $this->addon_model->addon_activate($param2); $this->session->set_flashdata('flash_message', get_phrase($update_message)); redirect(site_url('admin/addon'), 'refresh'); } // DEACTIVATING AN ADDON if ($param1 == 'deactivate') { $update_message = $this->addon_model->addon_deactivate($param2); $this->session->set_flashdata('flash_message', get_phrase($update_message)); redirect(site_url('admin/addon'), 'refresh'); } // REMOVING AN ADDON if ($param1 == 'delete') { $this->addon_model->addon_delete($param2); $this->session->set_flashdata('flash_message', get_phrase('addon_is_deleted_successfully')); redirect(site_url('admin/addon'), 'refresh'); } // SHOWING LIST OF INSTALLED ADDONS if (empty($param1)) { $page_data['page_name'] = 'addons'; $page_data['addons'] = $this->addon_model->addon_list()->result_array(); $page_data['page_title'] = get_phrase('addon_manager'); } $this->load->view('backend/index', $page_data); } public function instructor_application($param1 = "", $param2 = "") { // param1 is the status and param2 is the application id if ($this->session->userdata('admin_login') != 1) redirect(site_url('login'), 'refresh'); // CHECK ACCESS PERMISSION check_permission('instructor'); if ($param1 == 'approve' || $param1 == 'delete') { $this->user_model->update_status_of_application($param1, $param2); } $page_data['page_name'] = 'application_list'; $page_data['page_title'] = get_phrase('instructor_application'); $page_data['approved_applications'] = $this->user_model->get_approved_applications(); $page_data['pending_applications'] = $this->user_model->get_pending_applications(); $this->load->view('backend/index', $page_data); } // INSTRUCTOR PAYOUT SECTION public function instructor_payout($param1 = "") { if ($this->session->userdata('admin_login') != 1) redirect(site_url('login'), 'refresh'); // CHECK ACCESS PERMISSION check_permission('instructor'); if ($param1 != "") { $date_range = $this->input->get('date_range'); $date_range = explode(" - ", $date_range); $page_data['timestamp_start'] = strtotime($date_range[0]); $page_data['timestamp_end'] = strtotime($date_range[1]); } else { $page_data['timestamp_start'] = strtotime(date('m/01/Y')); $page_data['timestamp_end'] = strtotime(date('m/t/Y')); } $page_data['page_name'] = 'instructor_payout'; $page_data['page_title'] = get_phrase('instructor_payout'); $page_data['completed_payouts'] = $this->crud_model->get_completed_payouts_by_date_range($page_data['timestamp_start'], $page_data['timestamp_end']); $page_data['pending_payouts'] = $this->crud_model->get_pending_payouts(); $this->load->view('backend/index', $page_data); } // ADMINS SECTION STARTS public function admins($param1 = "", $param2 = "") { if ($this->session->userdata('admin_login') != true) { redirect(site_url('login'), 'refresh'); } // CHECK ACCESS PERMISSION check_permission('admin'); if ($param1 == "add") { // CHECK ACCESS PERMISSION check_permission('admin'); $this->user_model->add_user(false, true); // PROVIDING TRUE FOR INSTRUCTOR redirect(site_url('admin/admins'), 'refresh'); } elseif ($param1 == "edit") { // CHECK ACCESS PERMISSION check_permission('admin'); $this->user_model->edit_user($param2); redirect(site_url('admin/admins'), 'refresh'); } elseif ($param1 == "delete") { // CHECK ACCESS PERMISSION check_permission('admin'); $this->user_model->delete_user($param2); redirect(site_url('admin/admins'), 'refresh'); } $page_data['page_name'] = 'admins'; $page_data['page_title'] = get_phrase('admins'); $page_data['admins'] = $this->user_model->get_admins()->result_array(); $this->load->view('backend/index', $page_data); } public function admin_form($param1 = "", $param2 = "") { if ($this->session->userdata('admin_login') != true) { redirect(site_url('login'), 'refresh'); } if ($param1 == 'add_admin_form') { // CHECK ACCESS PERMISSION check_permission('admin'); $page_data['page_name'] = 'admin_add'; $page_data['page_title'] = get_phrase('admin_add'); $this->load->view('backend/index', $page_data); } elseif ($param1 == 'edit_admin_form') { // CHECK ACCESS PERMISSION check_permission('admin'); $page_data['page_name'] = 'admin_edit'; $page_data['user_id'] = $param2; $page_data['page_title'] = get_phrase('admin_edit'); $this->load->view('backend/index', $page_data); } } public function permissions() { if ($this->session->userdata('admin_login') != true) { redirect(site_url('login'), 'refresh'); } // CHECK ACCESS PERMISSION check_permission('admin'); if (!isset($_GET['permission_assing_to']) || empty($_GET['permission_assing_to'])) { $this->session->set_flashdata('error_message', get_phrase('you_have_select_an_admin_first')); redirect(site_url('admin/admins'), 'refresh'); } $page_data['permission_assing_to'] = $this->input->get('permission_assing_to'); $user_details = $this->user_model->get_all_user($page_data['permission_assing_to']); if ($user_details->num_rows() == 0) { $this->session->set_flashdata('error_message', get_phrase('invalid_admin')); redirect(site_url('admin/admins'), 'refresh'); } else { $user_details = $user_details->row_array(); if ($user_details['role_id'] != 1) { $this->session->set_flashdata('error_message', get_phrase('invalid_admin')); redirect(site_url('admin/admins'), 'refresh'); } if (is_root_admin($user_details['id'])) { $this->session->set_flashdata('error_message', get_phrase('you_can_not_set_permission_to_the_root_admin')); redirect(site_url('admin/admins'), 'refresh'); } } $page_data['permission_assign_to'] = $user_details; $page_data['page_name'] = 'admin_permission'; $page_data['page_title'] = get_phrase('assign_permission'); $this->load->view('backend/index', $page_data); } // ASSIGN PERMISSION TO ADMIN public function assign_permission() { if ($this->session->userdata('admin_login') != true) { redirect(site_url('login'), 'refresh'); } // CHECK ACCESS PERMISSION check_permission('admin'); echo $this->user_model->assign_permission(); } // REMOVING INSTRUCTOR FROM COURSE public function remove_an_instructor($course_id, $instructor_id) { // CHECK ACCESS PERMISSION check_permission('course'); $course_details = $this->crud_model->get_course_by_id($course_id)->row_array(); if ($course_details['creator'] == $instructor_id) { $this->session->set_flashdata('error_message', get_phrase('course_creator_can_be_removed')); redirect('admin/course_form/course_edit/' . $course_id); } if ($course_details['multi_instructor']) { $instructor_ids = explode(',', $course_details['user_id']); if (in_array($instructor_id, $instructor_ids)) { if (count($instructor_ids) > 1) { if (($key = array_search($instructor_id, $instructor_ids)) !== false) { unset($instructor_ids[$key]); $data['user_id'] = implode(",", $instructor_ids); $this->db->where('id', $course_id); $this->db->update('course', $data); $this->session->set_flashdata('flash_message', get_phrase('instructor_has_been_removed')); if ($this->session->userdata('user_id') == $instructor_id) { redirect('admin/courses/'); } else { redirect('admin/course_form/course_edit/' . $course_id); } } } else { $this->session->set_flashdata('error_message', get_phrase('a_course_should_have_at_least_one_instructor')); redirect('admin/course_form/course_edit/' . $course_id); } } else { $this->session->set_flashdata('error_message', get_phrase('invalid_instructor_id')); redirect('admin/course_form/course_edit/' . $course_id); } } else { $this->session->set_flashdata('error_message', get_phrase('a_course_should_have_at_least_one_instructor')); redirect('admin/course_form/course_edit/' . $course_id); } } /** Coupons functionality starts */ public function coupons($param1 = "", $param2 = "") { if ($this->session->userdata('admin_login') != true) { redirect(site_url('login'), 'refresh'); } // CHECK ACCESS PERMISSION check_permission('coupon'); if ($param1 == "add") { // CHECK ACCESS PERMISSION check_permission('coupon'); $response = $this->crud_model->add_coupon(); // PROVIDING TRUE FOR INSTRUCTOR $response ? $this->session->set_flashdata('flash_message', get_phrase('coupon_added_successfully')) : $this->session->set_flashdata('error_message', get_phrase('coupon_code_already_exists')); redirect(site_url('admin/coupons'), 'refresh'); } elseif ($param1 == "edit") { // CHECK ACCESS PERMISSION check_permission('coupon'); $response = $this->crud_model->edit_coupon($param2); $response ? $this->session->set_flashdata('flash_message', get_phrase('coupon_updated_successfully')) : $this->session->set_flashdata('error_message', get_phrase('coupon_code_already_exists')); redirect(site_url('admin/coupons'), 'refresh'); } elseif ($param1 == "delete") { // CHECK ACCESS PERMISSION check_permission('coupon'); $response = $this->crud_model->delete_coupon($param2); $response ? $this->session->set_flashdata('flash_message', get_phrase('coupon_deleted_successfully')) : $this->session->set_flashdata('error_message', get_phrase('coupon_code_already_exists')); redirect(site_url('admin/coupons'), 'refresh'); } $page_data['page_name'] = 'coupons'; $page_data['page_title'] = get_phrase('coupons'); $page_data['coupons'] = $this->crud_model->get_coupons()->result_array(); $this->load->view('backend/index', $page_data); } public function coupon_form($param1 = "", $param2 = "") { if ($this->session->userdata('admin_login') != true) { redirect(site_url('login'), 'refresh'); } // CHECK ACCESS PERMISSION check_permission('coupon'); if ($param1 == 'add_coupon_form') { $page_data['page_name'] = 'coupon_add'; $page_data['page_title'] = get_phrase('add_coupons'); $this->load->view('backend/index', $page_data); } elseif ($param1 == 'edit_coupon_form') { $page_data['page_name'] = 'coupon_edit'; $page_data['coupon'] = $this->crud_model->get_coupons($param2)->row_array(); $page_data['page_title'] = get_phrase('coupon_edit'); $this->load->view('backend/index', $page_data); } } // ADMINS SECTION ENDS // AJAX PORTION // this function is responsible for managing multiple choice question function quiz_fields_type_wize() { $page_data['question_type'] = $this->input->post('question_type'); $this->load->view('backend/admin/quiz_fields_type_wize', $page_data); } public function ajax_get_sub_category($category_id) { $page_data['sub_categories'] = $this->crud_model->get_sub_categories($category_id); return $this->load->view('backend/admin/ajax_get_sub_category', $page_data); } public function ajax_get_section($course_id) { $page_data['sections'] = $this->crud_model->get_section('course', $course_id)->result_array(); return $this->load->view('backend/admin/ajax_get_section', $page_data); } public function ajax_get_video_details() { $video_details = $this->video_model->getVideoDetails($_POST['video_url']); if (is_array($video_details)) { echo $video_details['duration']; } } public function ajax_sort_section() { $section_json = $this->input->post('itemJSON'); $this->crud_model->sort_section($section_json); } public function ajax_sort_lesson() { $lesson_json = $this->input->post('itemJSON'); $this->crud_model->sort_lesson($lesson_json); } public function ajax_sort_question() { $question_json = $this->input->post('itemJSON'); $this->crud_model->sort_question($question_json); } //Start blog function add_blog_category() { $this->load->view('backend/admin/blog_category_add'); } function edit_blog_category($blog_category_id = "") { $data['blog_category'] = $this->crud_model->get_blog_categories($blog_category_id)->row_array(); $this->load->view('backend/admin/blog_category_edit', $data); } function blog_category($param1 = "", $param2 = "") { if ($param1 == 'add') { $response = $this->crud_model->add_blog_category(); if ($response == true) { $this->session->set_flashdata('flash_message', get_phrase('blog_category_added_successfully')); } else { $this->session->set_flashdata('error_message', get_phrase('there_is_already_a_blog_with_this_name')); } redirect(site_url('admin/blog_category'), 'refresh'); } elseif ($param1 == 'update') { $response = $this->crud_model->update_blog_category($param2); if ($response == true) { $this->session->set_flashdata('flash_message', get_phrase('blog_category_updated_successfully')); } else { $this->session->set_flashdata('error_message', get_phrase('there_is_already_a_blog_with_this_name')); } redirect(site_url('admin/blog_category'), 'refresh'); } elseif ($param1 == 'delete') { $this->crud_model->delete_blog_category($param2); $this->session->set_flashdata('flash_message', get_phrase('blog_category_deleted_successfully')); redirect(site_url('admin/blog_category'), 'refresh'); } $page_data['categories'] = $this->crud_model->get_blog_categories(); $page_data['page_title'] = get_phrase('blog_category'); $page_data['page_name'] = 'blog_category'; $this->load->view('backend/index', $page_data); } function add_blog() { $page_data['page_title'] = get_phrase('add_blog'); $page_data['page_name'] = 'blog_add'; $this->load->view('backend/index', $page_data); } function edit_blog($blog_id = "") { $page_data['blog'] = $this->crud_model->get_blogs($blog_id)->row_array(); $page_data['page_title'] = get_phrase('edit_blog'); $page_data['page_name'] = 'blog_edit'; $this->load->view('backend/index', $page_data); } function blog($param1 = "", $param2 = "") { if ($param1 == 'add') { $this->crud_model->add_blog(); $this->session->set_flashdata('flash_message', get_phrase('blog_added_successfully')); redirect(site_url('admin/blog'), 'refresh'); } elseif ($param1 == 'update') { $this->crud_model->update_blog($param2); $this->session->set_flashdata('flash_message', get_phrase('blog_updated_successfully')); redirect(site_url('admin/blog'), 'refresh'); } elseif ($param1 == 'status') { $this->crud_model->update_blog_status($param2); $this->session->set_flashdata('flash_message', get_phrase('blog_status_has_been_updated')); redirect(site_url('admin/blog'), 'refresh'); } elseif ($param1 == 'delete') { $this->crud_model->blog_delete($param2); $this->session->set_flashdata('flash_message', get_phrase('blog_deleted_successfully')); redirect(site_url('admin/blog'), 'refresh'); } $page_data['blogs'] = $this->crud_model->get_blogs(); $page_data['page_title'] = get_phrase('blog'); $page_data['page_name'] = 'blog'; $this->load->view('backend/index', $page_data); } function instructors_pending_blog($param1 = "", $param2 = "") { if ($param1 == 'approval_request') { $this->crud_model->approve_blog($param2); $this->session->set_flashdata('flash_message', get_phrase('the_blog_has_been_approved')); redirect(site_url('admin/instructors_pending_blog'), 'refresh'); } elseif ($param1 == 'delete') { $this->crud_model->blog_delete($param2); $this->session->set_flashdata('flash_message', get_phrase('blog_deleted_successfully')); redirect(site_url('admin/instructors_pending_blog'), 'refresh'); } $page_data['pending_blogs'] = $this->crud_model->get_instructors_pending_blog(); $page_data['page_title'] = get_phrase('instructors_pending_blog'); $page_data['page_name'] = 'instructors_pending_blog'; $this->load->view('backend/index', $page_data); } function blog_settings($param1 = "") { if ($param1 == 'update') { $this->crud_model->update_blog_settings(); $this->session->set_flashdata('flash_message', get_phrase('blog_settings_updated_successfully')); redirect(site_url('admin/blog_settings'), 'refresh'); } $page_data['page_title'] = get_phrase('blog_settings'); $page_data['page_name'] = 'blog_settings'; $this->load->view('backend/index', $page_data); } //End blog //Don't remove this code for security reasons function save_valid_purchase_code($param1 = "") { if ($param1 == 'update') { $data['value'] = htmlspecialchars_($this->input->post('purchase_code')); $status = $this->crud_model->curl_request($data['value']); if ($status) { $this->db->where('key', 'purchase_code'); $this->db->update('settings', $data); $this->session->set_flashdata('flash_message', get_phrase('purchase_code_has_been_updated')); echo 1; } else { echo 0; } } else { $this->load->view('backend/admin/save_purchase_code_form'); } } function drip_content_settings($param1 = "") { if ($param1 == 'update') { $this->crud_model->save_drip_content_settings(); $this->session->set_flashdata('flash_message', get_phrase('drip_content_settings_updated_successfully')); redirect(site_url('admin/drip_content_settings'), 'refresh'); } $page_data['drip_content_settings'] = json_decode(get_settings('drip_content_settings'), true); $page_data['page_title'] = get_phrase('drip_content_settings'); $page_data['page_name'] = 'drip_content_settings'; $this->load->view('backend/index', $page_data); } function custom_page($param1 = "", $param2 = "") { if ($param1 == 'add') { $this->crud_model->add_custom_page(); $this->session->set_flashdata('flash_message', get_phrase('new_page_added_successfully')); redirect(site_url('admin/custom_page'), 'refresh'); } if ($param1 == 'update') { $this->crud_model->update_custom_page($param2); $this->session->set_flashdata('flash_message', get_phrase('page_updated_successfully')); redirect(site_url('admin/custom_page'), 'refresh'); } if ($param1 == 'delete') { $this->crud_model->delete_custom_page($param2); $this->session->set_flashdata('flash_message', get_phrase('page_deleted_successfully')); redirect(site_url('admin/custom_page'), 'refresh'); } $page_data['custom_pages'] = $this->crud_model->get_custom_pages(); $page_data['page_title'] = get_phrase('custom_pages'); $page_data['page_name'] = 'custom_page'; $this->load->view('backend/index', $page_data); } function add_custom_page($custom_page_id = "") { $page_data['page_title'] = get_phrase('add_custom_page'); $page_data['page_name'] = 'add_custom_page'; $this->load->view('backend/index', $page_data); } function edit_custom_page($custom_page_id = "") { $page_data['custom_page'] = $this->crud_model->get_custom_pages($custom_page_id)->row_array(); $page_data['page_title'] = get_phrase('edit_custom_page'); $page_data['page_name'] = 'edit_custom_page'; $this->load->view('backend/index', $page_data); } //Start Academy Cloud coding function academy_cloud($param1 = "") { if ($param1 == 'update') { $this->academy_cloud_model->save_access_token(); $this->session->set_flashdata('flash_message', get_phrase('access_token_saved_successfully')); redirect(site_url('admin/academy_cloud'), 'refresh'); } $page_data['subscription_details'] = $this->academy_cloud_model->get_subscription_details(); $page_data['cloud_videos'] = $this->academy_cloud_model->get_cloud_videos(); $page_data['page_title'] = get_phrase('academy_cloud'); $page_data['page_name'] = 'academy_cloud'; $this->load->view('backend/index', $page_data); } //End of Academy Cloud coding //Start data center function data_center() { $page_data['page_title'] = get_phrase('data_center'); $page_data['page_name'] = 'data_center'; $this->load->view('backend/index', $page_data); } //End of data center //Select 2 server-side user data function get_select2_user_data($default = "") { $response = array(); $result = $this->db->where('role_id !=', 1)->group_start()->like('first_name', $_GET['searchVal'])->or_like('last_name', $_GET['searchVal'])->or_like('email', $_GET['searchVal'])->group_end()->limit(100)->get('users')->result_array(); if ($default != '') { $response[] = array(['id' => $default, 'text' => get_phrase($default)]); } foreach ($result as $key => $row) { $response[] = ['id' => $row['id'], 'text' => $row['first_name'] . ' ' . $row['last_name'] . '(' . $row['email'] . ')']; } echo json_encode($response); } //Select 2 server-side user data function get_select2_instructor_data($default = "") { $response = array(); $result = $this->db->where('is_instructor', 1)->group_start()->like('first_name', $_GET['searchVal'])->or_like('last_name', $_GET['searchVal'])->or_like('email', $_GET['searchVal'])->group_end()->limit(100)->get('users')->result_array(); if ($default != '') { $response[] = array(['id' => $default, 'text' => get_phrase($default)]); } foreach ($result as $key => $row) { $response[] = ['id' => $row['id'], 'text' => $row['first_name'] . ' ' . $row['last_name'] . ' (' . $row['email'] . ')']; } echo json_encode($response); } //Select 2 server-side enrollable data function get_select2_course_for_enroll($default = "") { $response = array(); $result = $this->db->group_start()->where('status', 'active')->or_where('status', 'private')->group_end()->group_start()->like('title', $_GET['searchVal'])->or_like('description', $_GET['searchVal'])->group_end()->limit(100)->get('course')->result_array(); if ($default != '') { $response[] = array(['id' => $default, 'text' => get_phrase($default)]); } foreach ($result as $key => $row) { $user = $this->user_model->get_all_user($row['creator'])->row_array(); $response[] = ['id' => $row['id'], 'text' => $row['title'] . ' (' . get_phrase('Creator') . ': ' . $user['first_name'] . ' ' . $user['last_name'] . ')']; } echo json_encode($response); } //Select 2 server-side general data function get_select2_general_course($default = "") { $response = array(); $result = $this->db->where('course_type', 'general')->group_start()->like('title', $_GET['searchVal'])->or_like('description', $_GET['searchVal'])->group_end()->limit(100)->get('course')->result_array(); if ($default != '') { $response[] = array(['id' => $default, 'text' => get_phrase($default)]); } foreach ($result as $key => $row) { $user = $this->user_model->get_all_user($row['creator'])->row_array(); $response[] = ['id' => $row['id'], 'text' => $row['title'] . ' (' . get_phrase('Creator') . ': ' . $user['first_name'] . ' ' . $user['last_name'] . ')']; } echo json_encode($response); } function instructor_payment($instructor_id = "") { $this->payment_model->configure_instructor_payment($instructor_id); redirect(site_url('payment')); } function open_ai_settings($param1 = "") { if ($param1 == "update") { $this->load->model('addons/ai_model'); $this->ai_model->update_open_ai_settings(); } $page_data['page_title'] = get_phrase('openai_settings'); $page_data['page_name'] = 'open_ai_settings'; $this->load->view('backend/index', $page_data); } function ai_img_download() { $this->load->model('addons/ai_model'); $this->ai_model->ai_img_download(); } function chat_gpt() { if (isset($_POST['service_type']) && !empty($_POST['service_type'])) { $this->load->model('addons/ai_model'); echo $this->ai_model->chat_gpt(); } else { $this->load->view('backend/admin/chat_gpt'); } } function gpt_assistant() { $this->load->model('addons/ai_model'); echo $this->ai_model->gpt_assistant(); } function upload_theme() { if (is_array($_FILES) && count($_FILES) > 0) { move_uploaded_file($_FILES['theme_zip']['tmp_name'], 'themes/' . $_FILES['theme_zip']['name']); redirect(site_url('admin/theme_settings'), 'refresh'); } $this->load->view('backend/admin/upload_theme'); } function delete_course_review($rating_id = "") { $query = $this->db->where('id', $rating_id); $course_details = $this->db->where('id', $query->get('rating')->row('ratable_id'))->get('course')->row_array(); $this->db->where('id', $rating_id)->delete('rating'); $this->session->set_flashdata('flash_message', get_phrase('user_review_deleted_successfully')); redirect(site_url('home/course/' . slugify($course_details['title']) . '/' . $course_details['id']), 'refresh'); } //Start Notification function get_my_notification($type = "") { $user_id = $this->session->userdata('user_id'); if ($type == 'mark_all_as_read') { $this->db->where('to_user', $user_id); $this->db->update('notifications', ['status' => 1]); } if ($type == 'remove_all') { $this->db->where('to_user', $user_id); $this->db->delete('notifications'); } $this->db->where('to_user', $user_id); $this->db->limit(50); $query = $this->db->order_by('status ASC, id desc'); $page_data['notifications'] = $query->get('notifications'); if ($query->where('status', 0)->get('notifications')->num_rows() > 0) : $response['notification_icon_class'] = 'noti-icon-badge'; else : $response['notification_icon_class'] = ''; endif; $response['rendered_view'] = $this->load->view('backend/header_notification', $page_data, true); echo json_encode($response); } //End notification function language_import() { $this->load->dbforge(); foreach ($_FILES['language_files']['name'] as $key => $language) { $language_name = strtolower(preg_replace('/\s+/', '_', explode('.', $_FILES['language_files']['name'][$key])[0])); //Create language column if not exist if (!$this->db->field_exists($language_name, 'language')) { $fields = array( $language_name => array( 'type' => 'LONGTEXT', 'default' => null, 'null' => TRUE, 'collation' => 'utf8_unicode_ci' ) ); $this->dbforge->add_column('language', $fields); } $language_content_arr = json_decode(file_get_contents($_FILES['language_files']['tmp_name'][$key]), true); if (is_array($language_content_arr)) { //Upload the json file move_uploaded_file($_FILES['language_files']['tmp_name'][$key], 'application/language/' . $language_name . '.json'); } else { $this->session->set_flashdata('error_message', get_phrase('JSON_validation_failed') . '!'); redirect(site_url('admin/manage_language'), 'refresh'); } foreach ($language_content_arr as $phrase_key => $phrase) { $phrase_key = strtolower(preg_replace('/\s+/', '_', $phrase_key)); $query = $this->db->get_where('language', ['phrase' => $phrase_key]); if ($query->num_rows() > 0) { $this->db->where('phrase', $phrase_key); $this->db->update('language', [$language_name => $phrase]); } else { $this->db->insert('language', ['phrase' => $phrase_key, $language_name => $phrase]); } } } $this->session->set_flashdata('flash_message', get_phrase('language_file_import_successfully')); redirect(site_url('admin/manage_language'), 'refresh'); } function export_language($language) { $this->load->helper('download'); $language = strtolower($language); $json_content = array(); foreach ($this->db->get('language')->result_array() as $row) { $json_content[$row['phrase']] = $row[$language]; } force_download($language . '.json', json_encode($json_content)); } function subscribed_user($type = "", $id = "") { if ($type == 'delete') { $this->db->where('id', $id)->delete('newsletter_subscriber'); $this->session->set_flashdata('flash_message', get_phrase('Newsletter subscription deleted successfully')); redirect(site_url('admin/subscribed_user'), 'refresh'); } if ($_POST) { $data = array(); //mentioned all with colum of database table that related with html table $columns = array('id', 'email', 'id', 'id'); $limit = htmlspecialchars_($this->input->post('length')); $start = htmlspecialchars_($this->input->post('start')); $column_index = $columns[$this->input->post('order')[0]['column']]; $dir = $this->input->post('order')[0]['dir']; $total_number_of_row = $this->db->get('newsletter_subscriber')->num_rows(); $filtered_number_of_row = $total_number_of_row; $search = $this->input->post('search')['value']; if (empty($search)) { $this->db->select('*'); $this->db->limit($limit, $start); $this->db->order_by($column_index, $dir); $newsletter_subscriber = $this->db->get('newsletter_subscriber')->result_array(); } else { $this->db->select('*'); $this->db->like('email', $search); $this->db->limit($limit, $start); $this->db->order_by($column_index, $dir); $newsletter_subscriber = $this->db->get('newsletter_subscriber')->result_array(); $filtered_number_of_row = count($newsletter_subscriber); } foreach ($newsletter_subscriber as $key => $row) : $user_row = $this->db->where('email', $row['email'])->get('users'); //user email $email = $row['email']; if ($user_row->num_rows() > 0) { if ($user_row->row('is_instructor') != 1) { $user_status = '

    ' . $user_row->row('first_name') . ' ' . $user_row->row('last_name') . '

    '; $user_status .= '' . get_phrase('Student') . ''; } else { $user_status = '

    ' . $user_row->row('first_name') . ' ' . $user_row->row('last_name') . '

    '; $user_status .= '' . get_phrase('Instructor') . ''; } } else { $user_status = '' . get_phrase('Not registered') . ''; } $action = '
    '; $nestedData['key'] = ++$key; $nestedData['email'] = $email; $nestedData['user_status'] = $user_status; $nestedData['action'] = $action . ''; $data[] = $nestedData; endforeach; $json_data = array( "draw" => intval($this->input->post('draw')), "recordsTotal" => intval($total_number_of_row), "recordsFiltered" => intval($filtered_number_of_row), "data" => $data ); echo json_encode($json_data); } else { $page_data['page_name'] = 'subscribed_user'; $page_data['page_title'] = get_phrase('Subscribed user'); $this->load->view('backend/index', $page_data); } } function newsletter_add_form() { $this->load->view('backend/admin/add_newsletter'); } function newsletter_edit_form($id) { $page_data['newsletter'] = $this->db->where('id', $id)->get('newsletters')->row_array(); $this->load->view('backend/admin/edit_newsletter', $page_data); } function newsletter_send_form($id) { $page_data['newsletter'] = $this->db->where('id', $id)->get('newsletters')->row_array(); $this->load->view('backend/admin/send_newsletter', $page_data); } function newsletters($type = "", $id = "") { if ($type == 'add') { $this->crud_model->add_newsletter(); $this->session->set_flashdata('flash_message', get_phrase('Newsletter added successfully')); redirect(site_url('admin/newsletters'), 'refresh'); } if ($type == 'edit') { $this->crud_model->update_newsletter($id); $this->session->set_flashdata('flash_message', get_phrase('Newsletter updated successfully')); redirect(site_url('admin/newsletters?tab=' . $id), 'refresh'); } if ($type == 'send') { $to = array(); $subject = $this->input->post('subject'); $description = $this->input->post('description', false); $send_to = $this->input->post('send_to'); if ($send_to == 'all') { $all_users = $this->db->where('status', 1)->where('role_id !=', 1)->get('users')->result_array(); foreach ($all_users as $key => $all_user) : $to[] = $all_user['email']; endforeach; } elseif ($send_to == 'student') { $all_users = $this->db->where('status', 1)->where('role_id !=', 1)->where('is_instructor !=', 1)->get('users')->result_array(); foreach ($all_users as $key => $all_user) : $to[] = $all_user['email']; endforeach; } elseif ($send_to == 'instructor') { $all_users = $this->db->where('status', 1)->where('role_id !=', 1)->where('is_instructor', 1)->get('users')->result_array(); foreach ($all_users as $key => $all_user) : $to[] = $all_user['email']; endforeach; } elseif ($send_to == 'all_subscriber') { $all_subscriber = $this->db->get('newsletter_subscriber')->result_array(); foreach ($all_subscriber as $key => $subscriber) : $to[] = $subscriber['email']; endforeach; } elseif ($send_to == 'registered_subscriber') { $all_subscriber = $this->db->get('newsletter_subscriber')->result_array(); foreach ($all_subscriber as $key => $subscriber) : $registration = $this->db->where('status', 1)->where('email', $subscriber['email'])->get('users'); if ($registration->num_rows() > 0) { $to[] = $subscriber['email']; } endforeach; } elseif ($send_to == 'non_registered_subscriber') { $all_subscriber = $this->db->get('newsletter_subscriber')->result_array(); foreach ($all_subscriber as $key => $subscriber) : $registration = $this->db->where('status', 1)->where('email', $subscriber['email'])->get('users'); if ($registration->num_rows() == 0) { $to[] = $subscriber['email']; } endforeach; } elseif ($send_to == 'selected_user') { $user_ids = $this->input->post('user_id'); $all_users = $this->db->where_in('id', $user_ids)->get('users')->result_array(); foreach ($all_users as $key => $all_user) : $to[] = $all_user['email']; endforeach; } else { $this->session->set_flashdata('error_message', get_phrase('You must select at least one single user')); redirect(site_url('admin/newsletters'), 'refresh'); } $email_data['subject'] = $subject; $email_data['message'] = $description; $email_template = $this->load->view('email/static_common_template', $email_data, TRUE); $this->crud_model->assignEmailToSendList($to, $subject, $email_template); //$this->email_model->send_smtp_mail($email_template, $subject, $to);// $this->session->set_flashdata('flash_message', get_phrase('Users are assigned to newsletter mailing list') . ' ' . get_phrase('Please wait')); redirect(site_url('admin/newsletters'), 'refresh'); } if ($type == 'delete') { $this->crud_model->delete_newsletter($id); $this->session->set_flashdata('flash_message', get_phrase('Newsletter deleted successfully')); redirect(site_url('admin/newsletters'), 'refresh'); } $page_data['page_name'] = 'newsletters'; $page_data['page_title'] = get_phrase('Newsletters'); $this->load->view('backend/index', $page_data); } function newsletter_history($type = "", $id = "") { if ($_POST) { $data = array(); //mentioned all with colum of database table that related with html table $columns = array('id', 'subject', 'email', 'id', 'id'); $limit = htmlspecialchars_($this->input->post('length')); $start = htmlspecialchars_($this->input->post('start')); $column_index = $columns[$this->input->post('order')[0]['column']]; $dir = $this->input->post('order')[0]['dir']; $total_number_of_row = $this->db->where('status', $type)->get('newsletter_histories')->num_rows(); $filtered_number_of_row = $total_number_of_row; $search = $this->input->post('search')['value']; if (empty($search)) { $this->db->select('*'); $this->db->where('status', $type); $this->db->limit($limit, $start); $this->db->order_by($column_index, $dir); $newsletter_histories = $this->db->get('newsletter_histories')->result_array(); } else { $this->db->select('*'); $this->db->like('email', $search); $this->db->or_like('subject', $search); $this->db->or_like('description', $search); $this->db->group_start(); $this->db->where('status', $type); $this->db->group_end(); $this->db->limit($limit, $start); $this->db->order_by($column_index, $dir); $newsletter_histories = $this->db->get('newsletter_histories')->result_array(); $filtered_number_of_row = count($newsletter_histories); } foreach ($newsletter_histories as $key => $row) : if ($row['status'] != 'sent') { $action = '' . get_phrase('Send') . ''; if ($row['status'] == 'faild') { $status = '' . $row['status'] . ''; } elseif ($row['status'] == 'pending') { $status = '' . $row['status'] . ''; } else { $status = '' . $row['status'] . ''; } } else { $action = '' . get_phrase('Send Again') . ''; $status = '' . $row['status'] . ''; } $nestedData['key'] = ++$key; $nestedData['subject'] = $row['subject']; $nestedData['email'] = $row['email']; $nestedData['status'] = $status; $nestedData['action'] = $action; $data[] = $nestedData; endforeach; $json_data = array( "draw" => intval($this->input->post('draw')), "recordsTotal" => intval($total_number_of_row), "recordsFiltered" => intval($filtered_number_of_row), "data" => $data ); echo json_encode($json_data); } elseif ($type == "send") { $this->db->where('id', $id); $newsletter_history = $this->db->get('newsletter_histories')->row_array(); $response = $this->email_model->send_smtp_mail($newsletter_history['description'], $newsletter_history['subject'], $newsletter_history['email']); if ($response) { $this->db->where('id', $id); $newsletter_history = $this->db->update('newsletter_histories', ['status' => 'sent']); $sending_response = [ 'run_function' => 'refreshTable', 'success' => get_phrase('Mail sent successfully') ]; echo json_encode($sending_response); } else { $sending_response = [ 'error' => get_phrase('Failed to send mail') ]; echo json_encode($sending_response); } } else { $page_data['type'] = $type; $page_data['page_name'] = 'newsletter_history'; $page_data['page_title'] = get_phrase('Newsletter history'); $this->load->view('backend/index', $page_data); } } function newsletter_statistics() { echo $this->load->view('backend/admin/newsletter_statistics', [], true); } function student_academic_progress($course_id = "") { $course_details = $this->crud_model->get_course_by_id($course_id)->row_array(); $multi_instructors = explode(',', $course_details['user_id']); $page_data['course_details'] = $course_details; $this->load->view('backend/admin/student_academic_progress', $page_data); } function student_academic_quiz_result($course_id = "", $student_id = "") { $course_details = $this->crud_model->get_course_by_id($course_id)->row_array(); $multi_instructors = explode(',', $course_details['user_id']); if (!in_array($this->session->userdata('user_id'), $multi_instructors)) { return false; } $page_data['course_details'] = $course_details; $page_data['student_id'] = $student_id; $this->load->view('backend/admin/student_academic_quiz_result', $page_data); } function home_page_layout($home_page = "") { $this->db->where('key', 'home_page'); $this->db->update('frontend_settings', ['value' => $home_page]); $this->session->set_flashdata('flash_message', get_phrase('New home page layout has been activated')); redirect(site_url('admin/frontend_settings?tab=homePageLayout'), 'refresh'); } function student_certificate($user_id = "", $course_id = "") { $this->load->model('addons/Certificate_model', 'certificate_model'); $course_progress = $this->crud_model->get_watch_histories($user_id, $course_id)->row('course_progress'); if ($course_progress >= 100) { $this->certificate_model->check_certificate_eligibility($course_id, $user_id); $certificate = $this->db->get_where('certificates', array('course_id' => $course_id, 'student_id' => $user_id)); redirect(site_url('certificate/' . $certificate->row('shareable_url'))); } else { $this->session->set_flashdata('error_message', get_phrase('The course is not compleated yet')); redirect(site_url('admin/course_form/course_edit/' . $course_id . '?tab=academic_progress')); } } function contact($type = "", $id = "") { if ($type == 'delete') { $this->db->where('id', $id)->delete('contact'); $this->session->set_flashdata('flash_message', get_phrase('Contact deleted successfully')); redirect(site_url('admin/contact'), 'refresh'); } if ($type == '') { $page_data['page_name'] = 'contact'; $page_data['page_title'] = get_phrase('Contact'); $this->load->view('backend/index', $page_data); } if ($type == 'contact_reply_form' && $id != '') { $page_data['contact'] = $this->crud_model->get_contacts($id)->row_array(); $this->load->view('backend/admin/contact_reply_form', $page_data); } if ($type == 'send_reply' && $id != '') { $message = $this->input->post('reply_message'); $contact_details = $this->crud_model->get_contacts($id)->row_array(); $this->email_model->send_smtp_mail($message, get_phrase('Reply from - ') . get_settings('system_name'), $contact_details['email']); $this->db->where('id', $id)->update('contact', ['replied' => 1]); $this->session->set_flashdata('flash_message', get_phrase('Reply sent successfully')); redirect(site_url('admin/contact'), 'refresh'); } if ($type == 'data-table' && $_GET) { $this->db->where('has_read', null)->update('contact', ['has_read' => 1]); $data = array(); //mentioned all with colum of database table that related with html table $columns = array('id', 'first_name', 'email', 'message', 'id'); $limit = htmlspecialchars_($this->input->get('length')); $start = htmlspecialchars_($this->input->get('start')); $column_index = $columns[$this->input->get('order')[0]['column']]; $dir = $this->input->get('order')[0]['dir']; $total_number_of_row = $this->db->get('contact')->num_rows(); $filtered_number_of_row = $total_number_of_row; $search = $this->input->get('search')['value']; if (empty($search)) { $this->db->limit($limit, $start); $this->db->order_by($column_index, $dir); $contacts = $this->db->get('contact')->result_array(); } else { $this->db->like('first_name', $search); $this->db->or_like('last_name', $search); $this->db->or_like('email', $search); $this->db->or_like('phone', $search); $this->db->or_like('address', $search); $this->db->or_like('message', $search); $this->db->limit($limit, $start); $this->db->order_by($column_index, $dir); $contacts = $this->db->get('contact'); $filtered_number_of_row = $contacts->num_rows(); $contacts = $contacts->result_array(); } foreach ($contacts as $key => $row) : if ($row['replied'] == 1) : $reply_sent = ' '; else : $reply_sent = ''; endif; $user_row = $this->db->where('email', $row['email'])->get('users'); if ($user_row->num_rows() > 0) { if ($user_row->row('is_instructor') != 1) { $user_status = '' . get_phrase('Student') . ''; } else { $user_status = '' . get_phrase('Instructor') . ''; } } else { $user_status = '' . get_phrase('Not registered') . ''; } $contact_info = '

    ' . get_phrase('Email') . ': ' . $row['email'] . '

    '; if ($row['phone'] != '') { $contact_info .= '

    ' . get_phrase('Phone') . ': ' . $row['phone'] . '

    '; } if ($row['address'] != '') { $contact_info .= '

    ' . $row['address'] . '

    '; } $action = '
    '; $nestedData['key'] = ++$key; $nestedData['name'] = '

    ' . $row['first_name'] . ' ' . $row['last_name'] . $reply_sent . '

    ' . $user_status; $nestedData['contact'] = $contact_info; $nestedData['message'] = $row['message']; $nestedData['action'] = $action . ''; $data[] = $nestedData; endforeach; $json_data = array( "draw" => intval($this->input->post('draw')), "recordsTotal" => intval($total_number_of_row), "recordsFiltered" => intval($filtered_number_of_row), "data" => $data ); echo json_encode($json_data); } } function update_language_direction() { $language = $this->input->post('language'); $dir = $this->input->post('dir'); $language_dirs = get_settings('language_dirs') ? json_decode(get_settings('language_dirs'), true) : ['english' => 'ltr']; $language_dirs[$language] = $dir; $data['value'] = json_encode($language_dirs); if ($this->db->get_where('settings', ['key' => 'language_dirs'])->num_rows() > 0) { $this->db->where('key', 'language_dirs')->update('settings', $data); } else { $data['key'] = 'language_dirs'; $this->db->insert('settings', $data); } echo get_phrase('Language direction updated successfully'); } function resource_files($param1 = "", $param2 = "") { if ($param1 == 'add') { if (isset($_FILES['resource_file']['name']) && $_FILES['resource_file']['name'] != "") { $data['file_name'] = random(20) . '.' . pathinfo($_FILES['resource_file']['name'], PATHINFO_EXTENSION); move_uploaded_file($_FILES['resource_file']['tmp_name'], 'uploads/resource_files/' . $data['file_name']); } $data['title'] = $this->input->post('title'); $data['lesson_id'] = $param2; $data['created_at'] = time(); $this->db->insert('resource_files', $data); $response['replace'] = ['elem' => '.resource_file_content', 'content' => $this->load->view('backend/admin/resource_files', ['param2' => $param2], true)]; echo json_encode($response); } elseif ($param1 == 'update') { $file_details = $this->db->get_where('resource_files', ['id' => $param2])->row_array(); if (isset($_FILES['resource_file']['name']) && $_FILES['resource_file']['name'] != "") { if (file_exists('uploads/resource_files/' . $file_details['file_name']) && $file_details['file_name']) { unlink('uploads/resource_files/' . $file_details['file_name']); } $data['file_name'] = random(20) . '.' . pathinfo($_FILES['resource_file']['name'], PATHINFO_EXTENSION); move_uploaded_file($_FILES['resource_file']['tmp_name'], 'uploads/resource_files/' . $data['file_name']); } $data['title'] = $this->input->post('title'); $data['updated_at'] = time(); $this->db->where('id', $param2); $this->db->update('resource_files', $data); $response['replace'] = ['elem' => '.resource_file_content', 'content' => $this->load->view('backend/admin/resource_files', ['param2' => $file_details['lesson_id']], true)]; echo json_encode($response); } elseif ($param1 == 'delete') { $file_details = $this->db->get_where('resource_files', ['id' => $param2])->row_array(); if (file_exists('uploads/resource_files/' . $file_details['file_name']) && $file_details['file_name']) { unlink('uploads/resource_files/' . $file_details['file_name']); } $this->db->where('id', $param2); $this->db->delete('resource_files'); $response['replace'] = ['elem' => '.resource_file_content', 'content' => $this->load->view('backend/admin/resource_files', ['param2' => $file_details['lesson_id']], true)]; $response['success'] = get_phrase('Resource deleted successfully'); $response['fadeOut'] = '#resource_file_' . $file_details['id']; echo json_encode($response); } } function cronjob($type = "") { // Write some content to the cron file for CURL call. $content = 'session->set_flashdata('error_message', get_phrase("Failed to create the cron file") . '. File path:' . $newsletter_cron_file_path); redirect(site_url('admin/newsletters'), 'refresh'); } // Execute Shell Command // $cronCommand = 'crontab -l | { cat; echo "' . $setInterval_1m . ' ' . $phpBinaryPath . ' ' . $applicationPath . '"; } | crontab -'; // exec($cronCommand, $output, $return_var); // if ($return_var !== 0) { // unlink($newsletter_cron_file_path); // $this->session->set_flashdata('error_message', get_phrase('Cron job setup failed') . ' Output:' . implode("\n", $output)); // redirect(site_url('admin/newsletters'), 'refresh'); // } else { // $this->session->set_flashdata('flash_message', get_phrase('Cron job successfully set up')); // redirect(site_url('admin/newsletters'), 'refresh'); // } redirect(site_url('admin/newsletters'), 'refresh'); } elseif ($type == 'stop') { // Remove Cron Job // $cronCommandRemove = 'crontab -l | grep -v "' . $phpBinaryPath . ' ' . $applicationPath . '" | crontab -'; // exec($cronCommandRemove, $outputRemove, $returnVarRemove); // if ($returnVarRemove !== 0) { // $this->session->set_flashdata('error_message', get_phrase('Cron job removal failed') . ' Output:' . implode("\n", $outputRemove)); // redirect(site_url('admin/newsletters'), 'refresh'); // } else { // $this->session->set_flashdata('flash_message', get_phrase('Cron job successfully removed')); // redirect(site_url('admin/newsletters'), 'refresh'); // } $newsletter_cron_file_path = "uploads/cronjob/newsletter_cron.php"; unlink($newsletter_cron_file_path); redirect(site_url('admin/newsletters'), 'refresh'); } } function wasabi_settings($type = '') { if ($type == 'update') { if ($this->db->where('key', 'wasabi_key')->get('settings')->num_rows() > 0) { $data['value'] = $this->input->post('access_key'); $this->db->where('key', 'wasabi_key'); $this->db->update('settings', $data); } else { $data['value'] = $this->input->post('access_key'); $data['key'] = 'wasabi_key'; $this->db->insert('settings', $data); } if ($this->db->where('key', 'wasabi_secret_key')->get('settings')->num_rows() > 0) { $data['value'] = $this->input->post('secret_key'); $this->db->where('key', 'wasabi_secret_key'); $this->db->update('settings', $data); } else { $data['value'] = $this->input->post('secret_key'); $data['key'] = 'wasabi_secret_key'; $this->db->insert('settings', $data); } if ($this->db->where('key', 'wasabi_bucketname')->get('settings')->num_rows() > 0) { $data['value'] = $this->input->post('bucket_name'); $this->db->where('key', 'wasabi_bucketname'); $this->db->update('settings', $data); } else { $data['value'] = $this->input->post('bucket_name'); $data['key'] = 'wasabi_bucketname'; $this->db->insert('settings', $data); } if ($this->db->where('key', 'wasabi_region')->get('settings')->num_rows() > 0) { $data['value'] = $this->input->post('region_name'); $this->db->where('key', 'wasabi_region'); $this->db->update('settings', $data); } else { $data['value'] = $this->input->post('region_name'); $data['key'] = 'wasabi_region'; $this->db->insert('settings', $data); } $this->session->set_flashdata('flash_message', get_phrase('Wasabi Settings Updated Successfully')); redirect(site_url('admin/wasabi_settings'), 'refresh'); } $page_data['page_name'] = 'wasabi_settings'; $page_data['page_title'] = get_phrase('Wasabi Storage Settings'); $this->load->view('backend/index', $page_data); } function bbb_live_class_settings($type = "") { if ($type == 'update') { $data['value'] = json_encode($_POST); if ($this->db->where('key', 'bbb_setting')->get('settings')->num_rows() > 0) { $this->db->where('key', 'bbb_setting')->update('settings', $data); } else { $data['key'] = 'bbb_setting'; $this->db->insert('settings', $data); } $this->session->set_flashdata('flash_message', get_phrase('BigBlueButton configuration has been Updated')); redirect(site_url('admin/bbb_live_class_settings'), 'refresh'); } $page_data['page_name'] = 'bbb_live_class_settings'; $page_data['page_title'] = get_phrase('BBB live class settings'); $this->load->view('backend/index', $page_data); } function save_bbb_meeting($course_id = "") { $data['meeting_id'] = $this->input->post('bbb_meeting_id'); $data['moderator_pw'] = $this->input->post('bbb_moderator_pw'); $data['viewer_pw'] = $this->input->post('bbb_viewer_pw'); $data['instructions'] = $this->input->post('instructions'); if ($this->db->where('course_id', $course_id)->get('bbb_meetings')->num_rows() > 0) { $data['updated_at'] = time(); $this->db->where('course_id', $course_id)->update('bbb_meetings', $data); } else { $data['course_id'] = $course_id; $data['created_at'] = time(); $data['updated_at'] = $data['created_at']; $this->db->insert('bbb_meetings', $data); } echo get_phrase("BigBlueButton Meeting has been updated"); } function start_bbb_meeting($course_id = ""){ $course_details = $this->crud_model->get_courses($course_id)->row_array(); $bbb_meeting = $this->db->where('course_id', $course_id)->get('bbb_meetings'); $current_url = site_url('admin/course_form/course_edit/'.$course_id.'?tab=bbb-live-class'); if($bbb_meeting->num_rows() > 0){ $bbb_meeting = $bbb_meeting->row_array(); //Sanitize API URL START $api_url = get_settings('bbb_setting', true)['endpoint'] ?? ''; // Parse the URL $parsed_url = parse_url($api_url); // Remove the 'api' part if it exists in the path $path = rtrim(str_replace('/api', '', $parsed_url['path']), '/'); // Rebuild the URL $api_url = $parsed_url['scheme'] . '://' . $parsed_url['host'] . $path; //Sanitize API URL END //Create BBB meeting START $query_data = http_build_query([ 'name' => $course_details['title'], 'meetingID' => $bbb_meeting['meeting_id'], 'attendeePW' => $bbb_meeting['viewer_pw'], 'moderatorPW' => $bbb_meeting['moderator_pw'], 'redirectURL' => $current_url, ]); $response = $this->crud_model->callBbbApi('create', $query_data, $bbb_meeting['meeting_id']); //Create BBB meeting END // Handle response & redirect to meeting url if ($response) { $xml = simplexml_load_string($response); $returncode = (string)$xml->returncode; if ($returncode == 'SUCCESS') { $moderator_details = $this->user_model->get_all_user($this->session->userdata('user_id'))->row_array(); //JOIN AS A viewer $full_name = $moderator_details['first_name'].' '.$moderator_details['last_name']; // The full name of the participant $role = 'moderator'; // The role of the user (either "viewer" or "moderator") $join_url = $api_url."/api/join?meetingID=".$bbb_meeting['meeting_id']."&fullName=$full_name&password=".$bbb_meeting['moderator_pw']."&joinViaHtml5=true&redirect=true&joinParam[role]=$role"; echo $join_url; return; } else { $this->session->set_flashdata('error_message', get_phrase("Failed to create meeting. Error code: ____", [$returncode])); } } else { $this->session->set_flashdata('error_message', get_phrase("Failed to connect to BigBlueButton API")); } }else{ $this->session->set_flashdata('error_message', get_phrase("Please save your meeting info first")); } echo $current_url; } function change_course_author($course_id = ""){ if(isset($_POST) && count($_POST) > 0){ if($_POST['instructor_id'] > 0){ $this->db->where('id', $course_id)->update('course', ['creator' => $_POST['instructor_id']]); $this->session->set_flashdata('flash_message', get_phrase("Course author changed successfully")); }else{ $this->session->set_flashdata('error_message', get_phrase("Something is wrong")); } redirect(site_url('admin/course_form/course_edit/'.$course_id.'?tab=basic'), 'refresh'); }else{ $page_data['instructors'] = $this->user_model->get_instructor()->result_array(); $page_data['course_details'] = $this->crud_model->get_course_by_id($course_id)->row_array(); $this->load->view('backend/admin/change_course_author', $page_data); } } }