<?php defined('BASEPATH') OR exit('No direct script access allowed'); class Crud_model extends CI_Model { function __construct() { parent::__construct(); /*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'); } public function get_categories($param1 = "") { if ($param1 != "") { $this->db->where('id', $param1); } $this->db->where('parent', 0); return $this->db->get('category'); } public function get_category_details_by_id($id) { return $this->db->get_where('category', array('id' => $id)); } public function get_category_id($slug = "") { $category_details = $this->db->get_where('category', array('slug' => $slug))->row_array(); return $category_details['id']; } public function add_category() { $data['code'] = html_escape($this->input->post('code')); $data['name'] = html_escape($this->input->post('name')); $data['parent'] = html_escape($this->input->post('parent')); $data['slug'] = slugify(html_escape($this->input->post('name'))); if ($this->input->post('parent') == 0) { // Font awesome class adding if ($_POST['font_awesome_class'] != "") { $data['font_awesome_class'] = html_escape($this->input->post('font_awesome_class')); }else { $data['font_awesome_class'] = 'fas fa-chess'; } // category thumbnail adding if (!file_exists('uploads/thumbnails/category_thumbnails')) { mkdir('uploads/thumbnails/category_thumbnails', 0777, true); } if ($_FILES['category_thumbnail']['name'] == "") { $data['thumbnail'] = 'category-thumbnail.png'; }else { $data['thumbnail'] = md5(rand(10000000, 20000000)).'.jpg'; move_uploaded_file($_FILES['category_thumbnail']['tmp_name'], 'uploads/thumbnails/category_thumbnails/'.$data['thumbnail']); } } $data['date_added'] = strtotime(date('D, d-M-Y')); $this->db->insert('category', $data); } public function edit_category($param1) { $data['name'] = html_escape($this->input->post('name')); $data['parent'] = html_escape($this->input->post('parent')); $data['slug'] = slugify(html_escape($this->input->post('name'))); if ($this->input->post('parent') == 0) { // Font awesome class adding if ($_POST['font_awesome_class'] != "") { $data['font_awesome_class'] = html_escape($this->input->post('font_awesome_class')); }else { $data['font_awesome_class'] = 'fas fa-chess'; } // category thumbnail adding if (!file_exists('uploads/thumbnails/category_thumbnails')) { mkdir('uploads/thumbnails/category_thumbnails', 0777, true); } if ($_FILES['category_thumbnail']['name'] != "") { $data['thumbnail'] = md5(rand(10000000, 20000000)).'.jpg'; move_uploaded_file($_FILES['category_thumbnail']['tmp_name'], 'uploads/thumbnails/category_thumbnails/'.$data['thumbnail']); } } $data['last_modified'] = strtotime(date('D, d-M-Y')); $this->db->where('id', $param1); $this->db->update('category', $data); } public function delete_category($category_id) { $this->db->where('id', $category_id); $this->db->delete('category'); } public function get_sub_categories($parent_id = "") { return $this->db->get_where('category', array('parent' => $parent_id))->result_array(); } public function enrol_history($course_id = "") { if ($course_id > 0) { return $this->db->get_where('enrol', array('course_id' => $course_id)); }else { return $this->db->get('enrol'); } } public function enrol_history_by_user_id($user_id = "") { return $this->db->get_where('enrol', array('user_id' => $user_id)); } public function all_enrolled_student() { $this->db->select('user_id'); $this->db->distinct('user_id'); return $this->db->get('enrol'); } public function enrol_history_by_date_range($timestamp_start = "", $timestamp_end = "") { $this->db->order_by('date_added' , 'desc'); $this->db->where('date_added >=' , $timestamp_start); $this->db->where('date_added <=' , $timestamp_end); return $this->db->get('enrol'); } public function get_revenue_by_user_type($timestamp_start = "", $timestamp_end = "", $revenue_type = "") { $course_ids = array(); $courses = array(); $admin_details = $this->user_model->get_admin_details()->row_array(); if ($revenue_type == 'admin_revenue') { $this->db->where('date_added >=' , $timestamp_start); $this->db->where('date_added <=' , $timestamp_end); }elseif ($revenue_type == 'instructor_revenue') { $this->db->where('user_id !=', $admin_details['id']); $this->db->select('id'); $courses = $this->db->get('course')->result_array(); foreach ($courses as $course) { if (!in_array($course['id'], $course_ids)) { array_push( $course_ids, $course['id'] ); } } if (sizeof($course_ids)) { $this->db->where_in('course_id', $course_ids); }else { return array(); } } $this->db->order_by('date_added' , 'desc'); return $this->db->get('payment')->result_array(); } public function get_instructor_revenue() { $course_ids = array(); $courses = array(); $this->db->where('user_id', $this->session->userdata('user_id')); $this->db->select('id'); $courses = $this->db->get('course')->result_array(); foreach ($courses as $course) { if (!in_array($course['id'], $course_ids)) { array_push( $course_ids, $course['id'] ); } } if (sizeof($course_ids)) { $this->db->where_in('course_id', $course_ids); }else { return array(); } $this->db->order_by('date_added' , 'desc'); return $this->db->get('payment')->result_array(); } public function delete_payment_history($param1) { $this->db->where('id', $param1); $this->db->delete('payment'); } public function delete_enrol_history($param1) { $this->db->where('id', $param1); $this->db->delete('enrol'); } public function purchase_history($user_id) { if ($user_id > 0) { return $this->db->get_where('payment', array('user_id'=> $user_id)); }else { return $this->db->get('payment'); } } public function get_payment_details_by_id($payment_id = "") { return $this->db->get_where('payment', array('id' => $payment_id))->row_array(); } public function update_instructor_payment_status($payment_id = "") { $updater = array( 'instructor_payment_status' => 1 ); $this->db->where('id', $payment_id); $this->db->update('payment', $updater); } public function update_system_settings() { $data['value'] = html_escape($this->input->post('system_name')); $this->db->where('key', 'system_name'); $this->db->update('settings', $data); $data['value'] = html_escape($this->input->post('system_title')); $this->db->where('key', 'system_title'); $this->db->update('settings', $data); $data['value'] = html_escape($this->input->post('author')); $this->db->where('key', 'author'); $this->db->update('settings', $data); $data['value'] = html_escape($this->input->post('slogan')); $this->db->where('key', 'slogan'); $this->db->update('settings', $data); $data['value'] = html_escape($this->input->post('language')); $this->db->where('key', 'language'); $this->db->update('settings', $data); $data['value'] = html_escape($this->input->post('text_align')); $this->db->where('key', 'text_align'); $this->db->update('settings', $data); $data['value'] = html_escape($this->input->post('system_email')); $this->db->where('key', 'system_email'); $this->db->update('settings', $data); $data['value'] = html_escape($this->input->post('address')); $this->db->where('key', 'address'); $this->db->update('settings', $data); $data['value'] = html_escape($this->input->post('phone')); $this->db->where('key', 'phone'); $this->db->update('settings', $data); $data['value'] = html_escape($this->input->post('youtube_api_key')); $this->db->where('key', 'youtube_api_key'); $this->db->update('settings', $data); $data['value'] = html_escape($this->input->post('vimeo_api_key')); $this->db->where('key', 'vimeo_api_key'); $this->db->update('settings', $data); $data['value'] = html_escape($this->input->post('purchase_code')); $this->db->where('key', 'purchase_code'); $this->db->update('settings', $data); $data['value'] = html_escape($this->input->post('footer_text')); $this->db->where('key', 'footer_text'); $this->db->update('settings', $data); $data['value'] = html_escape($this->input->post('footer_link')); $this->db->where('key', 'footer_link'); $this->db->update('settings', $data); $data['value'] = html_escape($this->input->post('website_keywords')); $this->db->where('key', 'website_keywords'); $this->db->update('settings', $data); $data['value'] = html_escape($this->input->post('website_description')); $this->db->where('key', 'website_description'); $this->db->update('settings', $data); $data['value'] = html_escape($this->input->post('student_email_verification')); $this->db->where('key', 'student_email_verification'); $this->db->update('settings', $data); } public function update_smtp_settings() { $data['value'] = html_escape($this->input->post('protocol')); $this->db->where('key', 'protocol'); $this->db->update('settings', $data); $data['value'] = html_escape($this->input->post('smtp_host')); $this->db->where('key', 'smtp_host'); $this->db->update('settings', $data); $data['value'] = html_escape($this->input->post('smtp_port')); $this->db->where('key', 'smtp_port'); $this->db->update('settings', $data); $data['value'] = html_escape($this->input->post('smtp_user')); $this->db->where('key', 'smtp_user'); $this->db->update('settings', $data); $data['value'] = html_escape($this->input->post('smtp_pass')); $this->db->where('key', 'smtp_pass'); $this->db->update('settings', $data); } public function update_paypal_settings() { // update paypal keys $paypal_info = array(); $paypal['active'] = $this->input->post('paypal_active'); $paypal['mode'] = $this->input->post('paypal_mode'); $paypal['sandbox_client_id'] = $this->input->post('sandbox_client_id'); $paypal['production_client_id'] = $this->input->post('production_client_id'); array_push($paypal_info, $paypal); $data['value'] = json_encode($paypal_info); $this->db->where('key', 'paypal'); $this->db->update('settings', $data); $data['value'] = html_escape($this->input->post('paypal_currency')); $this->db->where('key', 'paypal_currency'); $this->db->update('settings', $data); } public function update_stripe_settings() { // update stripe keys $stripe_info = array(); $stripe['active'] = $this->input->post('stripe_active'); $stripe['testmode'] = $this->input->post('testmode'); $stripe['public_key'] = $this->input->post('public_key'); $stripe['secret_key'] = $this->input->post('secret_key'); $stripe['public_live_key'] = $this->input->post('public_live_key'); $stripe['secret_live_key'] = $this->input->post('secret_live_key'); array_push($stripe_info, $stripe); $data['value'] = json_encode($stripe_info); $this->db->where('key', 'stripe_keys'); $this->db->update('settings', $data); $data['value'] = html_escape($this->input->post('stripe_currency')); $this->db->where('key', 'stripe_currency'); $this->db->update('settings', $data); } public function update_system_currency() { $data['value'] = html_escape($this->input->post('system_currency')); $this->db->where('key', 'system_currency'); $this->db->update('settings', $data); $data['value'] = html_escape($this->input->post('currency_position')); $this->db->where('key', 'currency_position'); $this->db->update('settings', $data); } public function update_instructor_settings() { $data['value'] = html_escape($this->input->post('allow_instructor')); $this->db->where('key', 'allow_instructor'); $this->db->update('settings', $data); $data['value'] = html_escape($this->input->post('instructor_revenue')); $this->db->where('key', 'instructor_revenue'); $this->db->update('settings', $data); } public function get_lessons($type = "", $id = "") { $this->db->order_by("order", "asc"); if($type == "course"){ return $this->db->get_where('lesson', array('course_id' => $id)); } elseif ($type == "section") { return $this->db->get_where('lesson', array('section_id' => $id)); } elseif ($type == "lesson") { return $this->db->get_where('lesson', array('id' => $id)); } else { return $this->db->get('lesson'); } } public function add_course($param1 = "") { $outcomes = $this->trim_and_return_json($this->input->post('outcomes')); $requirements = $this->trim_and_return_json($this->input->post('requirements')); $data['title'] = html_escape($this->input->post('title')); $data['short_description'] = $this->input->post('short_description'); $data['description'] = $this->input->post('description'); $data['outcomes'] = $outcomes; $data['language'] = $this->input->post('language_made_in'); $data['sub_category_id'] = $this->input->post('sub_category_id'); $category_details = $this->get_category_details_by_id($this->input->post('sub_category_id'))->row_array(); $data['category_id'] = $category_details['parent']; $data['requirements'] = $requirements; $data['price'] = $this->input->post('price'); $data['discount_flag'] = $this->input->post('discount_flag'); $data['discounted_price'] = $this->input->post('discounted_price'); $data['level'] = $this->input->post('level'); $data['is_free_course'] = $this->input->post('is_free_course'); $data['video_url'] = html_escape($this->input->post('course_overview_url')); if ($this->input->post('course_overview_url') != "") { $data['course_overview_provider'] = html_escape($this->input->post('course_overview_provider')); }else { $data['course_overview_provider'] = ""; } $data['date_added'] = strtotime(date('D, d-M-Y')); $data['section'] = json_encode(array()); $data['is_top_course'] = $this->input->post('is_top_course'); $data['user_id'] = $this->session->userdata('user_id'); $data['meta_description'] = $this->input->post('meta_description'); $data['meta_keywords'] = $this->input->post('meta_keywords'); $admin_details = $this->user_model->get_admin_details()->row_array(); if ($admin_details['id'] == $data['user_id']) { $data['is_admin'] = 1; }else { $data['is_admin'] = 0; } if ($param1 == "save_to_draft") { $data['status'] = 'draft'; }else{ if ($this->session->userdata('admin_login')) { $data['status'] = 'active'; }else{ $data['status'] = 'pending'; } } $this->db->insert('course', $data); $course_id = $this->db->insert_id(); // Create folder if does not exist if (!file_exists('uploads/thumbnails/course_thumbnails')) { mkdir('uploads/thumbnails/course_thumbnails', 0777, true); } // Upload different number of images according to activated theme. Data is taking from the config.json file $course_media_files = themeConfiguration(get_frontend_settings('theme'), 'course_media_files'); foreach ($course_media_files as $course_media => $size){ if ($_FILES[$course_media]['name'] != "") { move_uploaded_file($_FILES[$course_media]['tmp_name'], 'uploads/thumbnails/course_thumbnails/'.$course_media.'_'.get_frontend_settings('theme').'_'.$course_id.'.jpg'); } } if ($data['status'] == 'approved') { $this->session->set_flashdata('flash_message', get_phrase('course_added_successfully')); }elseif ($data['status'] == 'pending') { $this->session->set_flashdata('flash_message', get_phrase('course_added_successfully').'. '.get_phrase('please_wait_untill_Admin_approves_it')); }elseif ($data['status'] == 'draft') { $this->session->set_flashdata('flash_message', get_phrase('your_course_has_been_added_to_draft')); } return $course_id; } function trim_and_return_json($untrimmed_array) { $trimmed_array = array(); if(sizeof($untrimmed_array) > 0){ foreach ($untrimmed_array as $row) { if ($row != "") { array_push($trimmed_array, $row); } } } return json_encode($trimmed_array); } public function update_course($course_id, $type = "") { $course_details = $this->get_course_by_id($course_id)->row_array(); $outcomes = $this->trim_and_return_json($this->input->post('outcomes')); $requirements = $this->trim_and_return_json($this->input->post('requirements')); $data['title'] = $this->input->post('title'); $data['short_description'] = $this->input->post('short_description'); $data['description'] = $this->input->post('description'); $data['outcomes'] = $outcomes; $data['language'] = $this->input->post('language_made_in'); $data['sub_category_id'] = $this->input->post('sub_category_id'); $category_details = $this->get_category_details_by_id($this->input->post('sub_category_id'))->row_array(); $data['category_id'] = $category_details['parent']; $data['requirements'] = $requirements; $data['is_free_course'] = $this->input->post('is_free_course'); $data['price'] = $this->input->post('price'); $data['discount_flag'] = $this->input->post('discount_flag'); $data['discounted_price'] = $this->input->post('discounted_price'); $data['level'] = $this->input->post('level'); $data['video_url'] = $this->input->post('course_overview_url'); if ($this->input->post('course_overview_url') != "") { $data['course_overview_provider'] = html_escape($this->input->post('course_overview_provider')); }else { $data['course_overview_provider'] = ""; } $data['meta_description'] = $this->input->post('meta_description'); $data['meta_keywords'] = $this->input->post('meta_keywords'); $data['last_modified'] = strtotime(date('D, d-M-Y')); if ($this->input->post('is_top_course') != 1) { $data['is_top_course'] = 0; }else { $data['is_top_course'] = 1; } if ($type == "save_to_draft") { $data['status'] = 'draft'; }else{ if ($this->session->userdata('admin_login')) { $data['status'] = 'active'; }else{ $data['status'] = $course_details['status']; } } $this->db->where('id', $course_id); $this->db->update('course', $data); // Upload different number of images according to activated theme. Data is taking from the config.json file $course_media_files = themeConfiguration(get_frontend_settings('theme'), 'course_media_files'); foreach ($course_media_files as $course_media => $size){ if ($_FILES[$course_media]['name'] != "") { move_uploaded_file($_FILES[$course_media]['tmp_name'], 'uploads/thumbnails/course_thumbnails/'.$course_media.'_'.get_frontend_settings('theme').'_'.$course_id.'.jpg'); } } if ($data['status'] == 'active') { $this->session->set_flashdata('flash_message', get_phrase('course_updated_successfully')); }elseif ($data['status'] == 'pending') { $this->session->set_flashdata('flash_message', get_phrase('course_updated_successfully').'. '.get_phrase('please_wait_untill_Admin_approves_it')); }elseif ($data['status'] == 'draft') { $this->session->set_flashdata('flash_message', get_phrase('your_course_has_been_added_to_draft')); } } public function change_course_status($status = "", $course_id = "") { if ($status == 'active') { if ($this->session->userdata('admin_login') != true) { redirect(site_url('login'), 'refresh'); } } $updater = array( 'status' => $status ); $this->db->where('id', $course_id); $this->db->update('course', $updater); } public function get_course_thumbnail_url($course_id, $type = 'course_thumbnail') { // Course media placeholder is coming from the theme config file. Which has all the placehoder for different images. Choose like course type. $course_media_placeholders = themeConfiguration(get_frontend_settings('theme'), 'course_media_placeholders'); // if (file_exists('uploads/thumbnails/course_thumbnails/'.$type.'_'.get_frontend_settings('theme').'_'.$course_id.'.jpg')){ // return base_url().'uploads/thumbnails/course_thumbnails/'.$type.'_'.get_frontend_settings('theme').'_'.$course_id.'.jpg'; // } elseif(file_exists('uploads/thumbnails/course_thumbnails/'.$course_id.'.jpg')){ // return base_url().'uploads/thumbnails/course_thumbnails/'.$course_id.'.jpg'; // } else{ // return $course_media_placeholders[$type.'_placeholder']; // } if (file_exists('uploads/thumbnails/course_thumbnails/'.$type.'_'.get_frontend_settings('theme').'_'.$course_id.'.jpg')){ return base_url().'uploads/thumbnails/course_thumbnails/'.$type.'_'.get_frontend_settings('theme').'_'.$course_id.'.jpg'; }else{ return base_url().$course_media_placeholders[$type.'_placeholder']; } } public function get_lesson_thumbnail_url($lesson_id) { if (file_exists('uploads/thumbnails/lesson_thumbnails/'.$lesson_id.'.jpg')) return base_url().'uploads/thumbnails/lesson_thumbnails/'.$lesson_id.'.jpg'; else return base_url().'uploads/thumbnails/thumbnail.png'; } public function get_my_courses_by_category_id($category_id) { $this->db->select('course_id'); $course_lists_by_enrol = $this->db->get_where('enrol', array('user_id' => $this->session->userdata('user_id')))->result_array(); $course_ids = array(); foreach ($course_lists_by_enrol as $row) { if (!in_array($row['course_id'], $course_ids)) { array_push($course_ids, $row['course_id']); } } $this->db->where_in('id', $course_ids); $this->db->where('category_id', $category_id); return $this->db->get('course'); } public function get_my_courses_by_search_string($search_string) { $this->db->select('course_id'); $course_lists_by_enrol = $this->db->get_where('enrol', array('user_id' => $this->session->userdata('user_id')))->result_array(); $course_ids = array(); foreach ($course_lists_by_enrol as $row) { if (!in_array($row['course_id'], $course_ids)) { array_push($course_ids, $row['course_id']); } } $this->db->where_in('id', $course_ids); $this->db->like('title', $search_string); return $this->db->get('course'); } public function get_courses_by_search_string($search_string) { $this->db->like('title', $search_string); $this->db->where('status', 'active'); return $this->db->get('course'); } public function get_course_by_id($course_id = "") { return $this->db->get_where('course', array('id' => $course_id)); } public function delete_course($course_id) { $this->db->where('id', $course_id); $this->db->delete('course'); } public function get_top_courses() { return $this->db->get_where('course', array('is_top_course' => 1, 'status' => 'active')); } public function get_default_category_id() { $categories = $this->get_categories()->result_array(); foreach ($categories as $category) { return $category['id']; } } public function get_courses_by_user_id($param1 = "") { $courses['draft'] = $this->db->get_where('course', array('user_id' => $param1, 'status' => 'draft')); $courses['pending'] = $this->db->get_where('course', array('user_id' => $param1, 'status' => 'pending')); $courses['active'] = $this->db->get_where('course', array('user_id' => $param1, 'status' => 'active')); return $courses; } public function get_status_wise_courses($status = "") { if ($status != "") { $courses = $this->db->get_where('course', array('status' => $status)); }else { $courses['draft'] = $this->db->get_where('course', array('status' => 'draft')); $courses['pending'] = $this->db->get_where('course', array('status' => 'pending')); $courses['active'] = $this->db->get_where('course', array('status' => 'active')); } return $courses; } public function get_status_wise_courses_for_instructor($status = "") { if ($status != "") { $this->db->where('status', $status); $this->db->where('user_id', $this->session->userdata('user_id')); $courses = $this->db->get('course'); }else { $this->db->where('status', 'draft'); $this->db->where('user_id', $this->session->userdata('user_id')); $courses['draft'] = $this->db->get('course'); $this->db->where('user_id', $this->session->userdata('user_id')); $this->db->where('status', 'draft'); $courses['pending'] = $this->db->get('course'); $this->db->where('status', 'draft'); $this->db->where('user_id', $this->session->userdata('user_id')); $courses['active'] = $this->db->get_where('course'); } return $courses; } public function get_default_sub_category_id($default_cateegory_id) { $sub_categories = $this->get_sub_categories($default_cateegory_id); foreach ($sub_categories as $sub_category) { return $sub_category['id']; } } public function get_instructor_wise_courses($instructor_id = "", $return_as = "") { $courses = $this->db->get_where('course', array('user_id' => $instructor_id)); if ($return_as == 'simple_array') { $array = array(); foreach ($courses->result_array() as $course) { if (!in_array($course['id'], $array)) { array_push($array, $course['id']); } } return $array; }else { return $courses; } } public function get_instructor_wise_payment_history($instructor_id = "") { $courses = $this->get_instructor_wise_courses($instructor_id, 'simple_array'); if (sizeof($courses) > 0) { $this->db->where_in('course_id', $courses); return $this->db->get('payment')->result_array(); }else { return array(); } } public function add_section($course_id) { $data['title'] = html_escape($this->input->post('title')); $data['course_id'] = $course_id; $this->db->insert('section', $data); $section_id = $this->db->insert_id(); $course_details = $this->get_course_by_id($course_id)->row_array(); $previous_sections = json_decode($course_details['section']); if (sizeof($previous_sections) > 0) { array_push($previous_sections, $section_id); $updater['section'] = json_encode($previous_sections); $this->db->where('id', $course_id); $this->db->update('course', $updater); }else { $previous_sections = array(); array_push($previous_sections, $section_id); $updater['section'] = json_encode($previous_sections); $this->db->where('id', $course_id); $this->db->update('course', $updater); } } public function edit_section($section_id) { $data['title'] = $this->input->post('title'); $this->db->where('id', $section_id); $this->db->update('section', $data); } public function delete_section($course_id, $section_id) { $this->db->where('id', $section_id); $this->db->delete('section'); $course_details = $this->get_course_by_id($course_id)->row_array(); $previous_sections = json_decode($course_details['section']); if (sizeof($previous_sections) > 0) { $new_section = array(); for ($i = 0; $i < sizeof($previous_sections); $i++) { if ($previous_sections[$i] != $section_id) { array_push($new_section, $previous_sections[$i]); } } $updater['section'] = json_encode($new_section); $this->db->where('id', $course_id); $this->db->update('course', $updater); } } public function get_section($type_by, $id){ $this->db->order_by("order", "asc"); if ($type_by == 'course') { return $this->db->get_where('section', array('course_id' => $id)); }elseif ($type_by == 'section') { return $this->db->get_where('section', array('id' => $id)); } } public function serialize_section($course_id, $serialization) { $updater = array( 'section' => $serialization ); $this->db->where('id', $course_id); $this->db->update('course', $updater); } public function add_lesson() { $data['course_id'] = html_escape($this->input->post('course_id')); $data['title'] = html_escape($this->input->post('title')); $data['section_id'] = html_escape($this->input->post('section_id')); $lesson_type_array = explode('-', $this->input->post('lesson_type')); $lesson_type = $lesson_type_array[0]; $data['attachment_type'] = $lesson_type_array[1]; $data['lesson_type'] = $lesson_type; if($lesson_type == 'video') { // This portion is for web application's video lesson $lesson_provider = $this->input->post('lesson_provider'); if ($lesson_provider == 'youtube' || $lesson_provider == 'vimeo') { if ($this->input->post('video_url') == "" || $this->input->post('duration') == "") { $this->session->set_flashdata('error_message',get_phrase('invalid_lesson_url_and_duration')); redirect(site_url(strtolower($this->session->userdata('role')).'/course_form/course_edit/'.$data['course_id']), 'refresh'); } $data['video_url'] = html_escape($this->input->post('video_url')); $duration_formatter = explode(':', $this->input->post('duration')); $hour = sprintf('%02d', $duration_formatter[0]); $min = sprintf('%02d', $duration_formatter[1]); $sec = sprintf('%02d', $duration_formatter[2]); $data['duration'] = $hour.':'.$min.':'.$sec; $video_details = $this->video_model->getVideoDetails($data['video_url']); $data['video_type'] = $video_details['provider']; }elseif ($lesson_provider == 'html5') { if ($this->input->post('html5_video_url') == "" || $this->input->post('html5_duration') == "") { $this->session->set_flashdata('error_message',get_phrase('invalid_lesson_url_and_duration')); redirect(site_url(strtolower($this->session->userdata('role')).'/course_form/course_edit/'.$data['course_id']), 'refresh'); } $data['video_url'] = html_escape($this->input->post('html5_video_url')); $duration_formatter = explode(':', $this->input->post('html5_duration')); $hour = sprintf('%02d', $duration_formatter[0]); $min = sprintf('%02d', $duration_formatter[1]); $sec = sprintf('%02d', $duration_formatter[2]); $data['duration'] = $hour.':'.$min.':'.$sec; $data['video_type'] = 'html5'; }else { $this->session->set_flashdata('error_message',get_phrase('invalid_lesson_provider')); redirect(site_url(strtolower($this->session->userdata('role')).'/course_form/course_edit/'.$data['course_id']), 'refresh'); } // This portion is for mobile application video lessons if ($this->input->post('html5_video_url_for_mobile_application') == "" || $this->input->post('html5_duration_for_mobile_application') == "") { $this->session->set_flashdata('error_message',get_phrase('invalid_lesson_url_and_duration_for_mobile_application')); redirect(site_url(strtolower($this->session->userdata('role')).'/course_form/course_edit/'.$data['course_id']), 'refresh'); } $duration_for_mobile_application_formatter = explode(':', $this->input->post('html5_duration_for_mobile_application')); $hour = sprintf('%02d', $duration_for_mobile_application_formatter[0]); $min = sprintf('%02d', $duration_for_mobile_application_formatter[1]); $sec = sprintf('%02d', $duration_for_mobile_application_formatter[2]); $data['duration_for_mobile_application'] = $hour.':'.$min.':'.$sec; $data['video_type_for_mobile_application'] = 'html5'; $data['video_url_for_mobile_application'] = $this->input->post('html5_video_url_for_mobile_application'); }else { if ($_FILES['attachment']['name'] == "") { $this->session->set_flashdata('error_message',get_phrase('invalid_attachment')); redirect(site_url(strtolower($this->session->userdata('role')).'/course_form/course_edit/'.$data['course_id']), 'refresh'); }else { $fileName = $_FILES['attachment']['name']; $tmp = explode('.', $fileName); $fileExtension = end($tmp); $uploadable_file = md5(uniqid(rand(), true)).'.'.$fileExtension; $data['attachment'] = $uploadable_file; if (!file_exists('uploads/lesson_files')) { mkdir('uploads/lesson_files', 0777, true); } move_uploaded_file($_FILES['attachment']['tmp_name'], 'uploads/lesson_files/'.$uploadable_file); } } $data['date_added'] = strtotime(date('D, d-M-Y')); $data['summary'] = $this->input->post('summary'); $this->db->insert('lesson', $data); $inserted_id = $this->db->insert_id(); if ($_FILES['thumbnail']['name'] != "") { if (!file_exists('uploads/thumbnails/lesson_thumbnails')) { mkdir('uploads/thumbnails/lesson_thumbnails', 0777, true); } move_uploaded_file($_FILES['thumbnail']['tmp_name'], 'uploads/thumbnails/lesson_thumbnails/'.$inserted_id.'.jpg'); } } public function edit_lesson($lesson_id) { $previous_data = $this->db->get_where('lesson', array('id' => $lesson_id))->row_array(); $data['course_id'] = html_escape($this->input->post('course_id')); $data['title'] = html_escape($this->input->post('title')); $data['section_id'] = html_escape($this->input->post('section_id')); $lesson_type_array = explode('-', $this->input->post('lesson_type')); $lesson_type = $lesson_type_array[0]; $data['attachment_type'] = $lesson_type_array[1]; $data['lesson_type'] = $lesson_type; if($lesson_type == 'video') { $lesson_provider = $this->input->post('lesson_provider'); if ($lesson_provider == 'youtube' || $lesson_provider == 'vimeo') { if ($this->input->post('video_url') == "" || $this->input->post('duration') == "") { $this->session->set_flashdata('error_message',get_phrase('invalid_lesson_url_and_duration')); redirect(site_url(strtolower($this->session->userdata('role')).'/course_form/course_edit/'.$data['course_id']), 'refresh'); } $data['video_url'] = html_escape($this->input->post('video_url')); $duration_formatter = explode(':', $this->input->post('duration')); $hour = sprintf('%02d', $duration_formatter[0]); $min = sprintf('%02d', $duration_formatter[1]); $sec = sprintf('%02d', $duration_formatter[2]); $data['duration'] = $hour.':'.$min.':'.$sec; $video_details = $this->video_model->getVideoDetails($data['video_url']); $data['video_type'] = $video_details['provider']; }elseif ($lesson_provider == 'html5') { if ($this->input->post('html5_video_url') == "" || $this->input->post('html5_duration') == "") { $this->session->set_flashdata('error_message',get_phrase('invalid_lesson_url_and_duration')); redirect(site_url(strtolower($this->session->userdata('role')).'/course_form/course_edit/'.$data['course_id']), 'refresh'); } $data['video_url'] = html_escape($this->input->post('html5_video_url')); $duration_formatter = explode(':', $this->input->post('html5_duration')); $hour = sprintf('%02d', $duration_formatter[0]); $min = sprintf('%02d', $duration_formatter[1]); $sec = sprintf('%02d', $duration_formatter[2]); $data['duration'] = $hour.':'.$min.':'.$sec; $data['video_type'] = 'html5'; if ($_FILES['thumbnail']['name'] != "") { if (!file_exists('uploads/thumbnails/lesson_thumbnails')) { mkdir('uploads/thumbnails/lesson_thumbnails', 0777, true); } move_uploaded_file($_FILES['thumbnail']['tmp_name'], 'uploads/thumbnails/lesson_thumbnails/'.$lesson_id.'.jpg'); } }else { $this->session->set_flashdata('error_message',get_phrase('invalid_lesson_provider')); redirect(site_url(strtolower($this->session->userdata('role')).'/course_form/course_edit/'.$data['course_id']), 'refresh'); } $data['attachment'] = ""; // This portion is for mobile application video lessons if ($this->input->post('html5_video_url_for_mobile_application') == "" || $this->input->post('html5_duration_for_mobile_application') == "") { $this->session->set_flashdata('error_message',get_phrase('invalid_lesson_url_and_duration_for_mobile_application')); redirect(site_url(strtolower($this->session->userdata('role')).'/course_form/course_edit/'.$data['course_id']), 'refresh'); } $duration_for_mobile_application_formatter = explode(':', $this->input->post('html5_duration_for_mobile_application')); $hour = sprintf('%02d', $duration_for_mobile_application_formatter[0]); $min = sprintf('%02d', $duration_for_mobile_application_formatter[1]); $sec = sprintf('%02d', $duration_for_mobile_application_formatter[2]); $data['duration_for_mobile_application'] = $hour.':'.$min.':'.$sec; $data['video_type_for_mobile_application'] = 'html5'; $data['video_url_for_mobile_application'] = $this->input->post('html5_video_url_for_mobile_application'); }else { if ($_FILES['attachment']['name'] != "") { // unlinking previous attachments if ($previous_data['attachment'] != "") { unlink('uploads/lesson_files/'.$previous_data['attachment']); } $fileName = $_FILES['attachment']['name']; $tmp = explode('.', $fileName); $fileExtension = end($tmp); $uploadable_file = md5(uniqid(rand(), true)).'.'.$fileExtension; $data['attachment'] = $uploadable_file; $data['video_type'] = ""; $data['duration'] = ""; $data['video_url'] = ""; $data['duration_for_mobile_application'] = ""; $data['video_type_for_mobile_application'] = ''; $data['video_url_for_mobile_application'] = ""; if (!file_exists('uploads/lesson_files')) { mkdir('uploads/lesson_files', 0777, true); } move_uploaded_file($_FILES['attachment']['tmp_name'], 'uploads/lesson_files/'.$uploadable_file); } } $data['last_modified'] = strtotime(date('D, d-M-Y')); $data['summary'] = $this->input->post('summary'); $this->db->where('id', $lesson_id); $this->db->update('lesson', $data); } public function delete_lesson($lesson_id) { $this->db->where('id', $lesson_id); $this->db->delete('lesson'); } public function update_frontend_settings() { $data['value'] = html_escape($this->input->post('banner_title')); $this->db->where('key', 'banner_title'); $this->db->update('frontend_settings', $data); $data['value'] = html_escape($this->input->post('banner_sub_title')); $this->db->where('key', 'banner_sub_title'); $this->db->update('frontend_settings', $data); $data['value'] = $this->input->post('about_us'); $this->db->where('key', 'about_us'); $this->db->update('frontend_settings', $data); $data['value'] = $this->input->post('terms_and_condition'); $this->db->where('key', 'terms_and_condition'); $this->db->update('frontend_settings', $data); $data['value'] = $this->input->post('privacy_policy'); $this->db->where('key', 'privacy_policy'); $this->db->update('frontend_settings', $data); } public function update_frontend_banner() { move_uploaded_file($_FILES['banner_image']['tmp_name'], 'uploads/system/home-banner.jpg'); } public function update_light_logo() { move_uploaded_file($_FILES['light_logo']['tmp_name'], 'uploads/system/logo-light.png'); } public function update_dark_logo() { move_uploaded_file($_FILES['dark_logo']['tmp_name'], 'uploads/system/logo-dark.png'); } public function update_small_logo() { move_uploaded_file($_FILES['small_logo']['tmp_name'], 'uploads/system/logo-light-sm.png'); } public function update_favicon() { move_uploaded_file($_FILES['favicon']['tmp_name'], 'uploads/system/favicon.png'); } public function handleWishList($course_id) { $wishlists = array(); $user_details = $this->user_model->get_user($this->session->userdata('user_id'))->row_array(); if ($user_details['wishlist'] == "") { array_push($wishlists, $course_id); }else { $wishlists = json_decode($user_details['wishlist']); if (in_array($course_id, $wishlists)) { $container = array(); foreach ($wishlists as $key) { if ($key != $course_id) { array_push($container, $key); } } $wishlists = $container; // $key = array_search($course_id, $wishlists); // unset($wishlists[$key]); }else { array_push($wishlists, $course_id); } } $updater['wishlist'] = json_encode($wishlists); $this->db->where('id', $this->session->userdata('user_id')); $this->db->update('users', $updater); } public function is_added_to_wishlist($course_id = "") { if ($this->session->userdata('user_login') == 1) { $wishlists = array(); $user_details = $this->user_model->get_user($this->session->userdata('user_id'))->row_array(); $wishlists = json_decode($user_details['wishlist']); if (in_array($course_id, $wishlists)) { return true; }else { return false; } }else { return false; } } public function getWishLists($user_id = "") { if ($user_id == "") { $user_id = $this->session->userdata('user_id'); } $user_details = $this->user_model->get_user($user_id)->row_array(); return json_decode($user_details['wishlist']); } public function get_latest_10_course() { $this->db->order_by("id", "desc"); $this->db->limit('10'); $this->db->where('status', 'active'); return $this->db->get('course')->result_array(); } public function enrol_student($user_id){ $purchased_courses = $this->session->userdata('cart_items'); foreach ($purchased_courses as $purchased_course) { $data['user_id'] = $user_id; $data['course_id'] = $purchased_course; $data['date_added'] = strtotime(date('D, d-M-Y')); $this->db->insert('enrol', $data); } } public function enrol_a_student_manually() { $data['course_id'] = $this->input->post('course_id'); $data['user_id'] = $this->input->post('user_id'); if ($this->db->get_where('enrol', $data)->num_rows() > 0) { $this->session->set_flashdata('error_message', get_phrase('student_has_already_been_enrolled_to_this_course')); }else { $data['date_added'] = strtotime(date('D, d-M-Y')); $this->db->insert('enrol', $data); $this->session->set_flashdata('flash_message', get_phrase('student_has_been_enrolled_to_that_course')); } } public function enrol_to_free_course($course_id = "", $user_id = "") { $course_details = $this->get_course_by_id($course_id)->row_array(); if ($course_details['is_free_course'] == 1) { $data['course_id'] = $course_id; $data['user_id'] = $user_id; if ($this->db->get_where('enrol', $data)->num_rows() > 0) { $this->session->set_flashdata('error_message', get_phrase('student_has_already_been_enrolled_to_this_course')); }else { $data['date_added'] = strtotime(date('D, d-M-Y')); $this->db->insert('enrol', $data); $this->session->set_flashdata('flash_message', get_phrase('successfully_enrolled')); } }else { $this->session->set_flashdata('error_message', get_phrase('this_course_is_not_free_at_all')); redirect(site_url('home/course/'.slugify($course_details['title']).'/'.$course_id), 'refresh'); } } public function course_purchase($user_id, $method, $amount_paid) { $purchased_courses = $this->session->userdata('cart_items'); foreach ($purchased_courses as $purchased_course) { $data['user_id'] = $user_id; $data['payment_type'] = $method; $data['course_id'] = $purchased_course; $course_details = $this->get_course_by_id($purchased_course)->row_array(); if ($course_details['discount_flag'] == 1) { $data['amount'] = $course_details['discounted_price']; }else { $data['amount'] = $course_details['price']; } if (get_user_role('role_id', $course_details['user_id']) == 1) { $data['admin_revenue'] = $data['amount']; $data['instructor_revenue'] = 0; $data['instructor_payment_status'] = 1; }else { if (get_settings('allow_instructor') == 1) { $instructor_revenue_percentage = get_settings('instructor_revenue'); $data['instructor_revenue'] = ceil(($data['amount'] * $instructor_revenue_percentage) / 100); $data['admin_revenue'] = $data['amount'] - $data['instructor_revenue']; }else { $data['instructor_revenue'] = 0; $data['admin_revenue'] = $data['amount']; } $data['instructor_payment_status'] = 0; } $data['date_added'] = strtotime(date('D, d-M-Y')); $this->db->insert('payment', $data); } } public function get_default_lesson($section_id) { $this->db->order_by('order',"asc"); $this->db->limit(1); $this->db->where('section_id', $section_id); return $this->db->get('lesson'); } public function get_courses_by_wishlists() { $wishlists = $this->getWishLists(); if (sizeof($wishlists) > 0) { $this->db->where_in('id', $wishlists); return $this->db->get('course')->result_array(); }else { return array(); } } public function get_courses_of_wishlists_by_search_string($search_string) { $wishlists = $this->getWishLists(); if (sizeof($wishlists) > 0) { $this->db->where_in('id', $wishlists); $this->db->like('title', $search_string); return $this->db->get('course')->result_array(); }else { return array(); } } public function get_total_duration_of_lesson_by_course_id($course_id) { $total_duration = 0; $lessons = $this->crud_model->get_lessons('course', $course_id)->result_array(); foreach ($lessons as $lesson) { if ($lesson['lesson_type'] != "other") { $time_array = explode(':', $lesson['duration']); $hour_to_seconds = $time_array[0] * 60 * 60; $minute_to_seconds = $time_array[1] * 60; $seconds = $time_array[2]; $total_duration += $hour_to_seconds + $minute_to_seconds + $seconds; } } // return gmdate("H:i:s", $total_duration).' '.get_phrase('hours'); $hours = floor($total_duration / 3600); $minutes = floor(($total_duration % 3600) / 60); $seconds = $total_duration % 60; return sprintf("%02d:%02d:%02d", $hours, $minutes, $seconds).' '.get_phrase('hours'); } public function get_total_duration_of_lesson_by_section_id($section_id) { $total_duration = 0; $lessons = $this->crud_model->get_lessons('section', $section_id)->result_array(); foreach ($lessons as $lesson) { if ($lesson['lesson_type'] != 'other') { $time_array = explode(':', $lesson['duration']); $hour_to_seconds = $time_array[0] * 60 * 60; $minute_to_seconds = $time_array[1] * 60; $seconds = $time_array[2]; $total_duration += $hour_to_seconds + $minute_to_seconds + $seconds; } } //return gmdate("H:i:s", $total_duration).' '.get_phrase('hours'); $hours = floor($total_duration / 3600); $minutes = floor(($total_duration % 3600) / 60); $seconds = $total_duration % 60; return sprintf("%02d:%02d:%02d", $hours, $minutes, $seconds).' '.get_phrase('hours'); } public function rate($data) { if ($this->db->get_where('rating', array('user_id' => $data['user_id'], 'ratable_id' => $data['ratable_id'], 'ratable_type' => $data['ratable_type']))->num_rows() == 0) { $this->db->insert('rating', $data); }else { $checker = array('user_id' => $data['user_id'], 'ratable_id' => $data['ratable_id'], 'ratable_type' => $data['ratable_type']); $this->db->where($checker); $this->db->update('rating', $data); } } public function get_user_specific_rating($ratable_type = "", $ratable_id = "") { return $this->db->get_where('rating', array('ratable_type' => $ratable_type, 'user_id' => $this->session->userdata('user_id'), 'ratable_id' => $ratable_id))->row_array(); } public function get_ratings($ratable_type = "", $ratable_id = "", $is_sum = false) { if ($is_sum) { $this->db->select_sum('rating'); return $this->db->get_where('rating', array('ratable_type' => $ratable_type, 'ratable_id' => $ratable_id)); }else { return $this->db->get_where('rating', array('ratable_type' => $ratable_type, 'ratable_id' => $ratable_id)); } } public function get_instructor_wise_course_ratings($instructor_id = "", $ratable_type = "", $is_sum = false) { $course_ids = $this->get_instructor_wise_courses($instructor_id, 'simple_array'); if ($is_sum) { $this->db->where('ratable_type', $ratable_type); $this->db->where_in('ratable_id', $course_ids); $this->db->select_sum('rating'); return $this->db->get('rating'); }else { $this->db->where('ratable_type', $ratable_type); $this->db->where_in('ratable_id', $course_ids); return $this->db->get('rating'); } } public function get_percentage_of_specific_rating($rating = "", $ratable_type = "", $ratable_id = "") { $number_of_user_rated = $this->db->get_where('rating', array( 'ratable_type' => $ratable_type, 'ratable_id' => $ratable_id ))->num_rows(); $number_of_user_rated_the_specific_rating = $this->db->get_where( 'rating', array( 'ratable_type' => $ratable_type, 'ratable_id' => $ratable_id, 'rating' => $rating ))->num_rows(); //return $number_of_user_rated.' '.$number_of_user_rated_the_specific_rating; if ($number_of_user_rated_the_specific_rating > 0) { $percentage = ($number_of_user_rated_the_specific_rating / $number_of_user_rated) * 100; }else { $percentage = 0; } return floor($percentage); } ////////private message////// function send_new_private_message() { $message = $this->input->post('message'); $timestamp = strtotime(date("Y-m-d H:i:s")); $receiver = $this->input->post('receiver'); $sender = $this->session->userdata('user_id'); //check if the thread between those 2 users exists, if not create new thread $num1 = $this->db->get_where('message_thread', array('sender' => $sender, 'receiver' => $receiver))->num_rows(); $num2 = $this->db->get_where('message_thread', array('sender' => $receiver, 'receiver' => $sender))->num_rows(); if ($num1 == 0 && $num2 == 0) { $message_thread_code = substr(md5(rand(100000000, 20000000000)), 0, 15); $data_message_thread['message_thread_code'] = $message_thread_code; $data_message_thread['sender'] = $sender; $data_message_thread['receiver'] = $receiver; $this->db->insert('message_thread', $data_message_thread); } if ($num1 > 0) $message_thread_code = $this->db->get_where('message_thread', array('sender' => $sender, 'receiver' => $receiver))->row()->message_thread_code; if ($num2 > 0) $message_thread_code = $this->db->get_where('message_thread', array('sender' => $receiver, 'receiver' => $sender))->row()->message_thread_code; $data_message['message_thread_code'] = $message_thread_code; $data_message['message'] = $message; $data_message['sender'] = $sender; $data_message['timestamp'] = $timestamp; $this->db->insert('message', $data_message); return $message_thread_code; } function send_reply_message($message_thread_code) { $message = html_escape($this->input->post('message')); $timestamp = strtotime(date("Y-m-d H:i:s")); $sender = $this->session->userdata('user_id'); $data_message['message_thread_code'] = $message_thread_code; $data_message['message'] = $message; $data_message['sender'] = $sender; $data_message['timestamp'] = $timestamp; $this->db->insert('message', $data_message); } function mark_thread_messages_read($message_thread_code) { // mark read only the oponnent messages of this thread, not currently logged in user's sent messages $current_user = $this->session->userdata('user_id'); $this->db->where('sender !=', $current_user); $this->db->where('message_thread_code', $message_thread_code); $this->db->update('message', array('read_status' => 1)); } function count_unread_message_of_thread($message_thread_code) { $unread_message_counter = 0; $current_user = $this->session->userdata('user_id'); $messages = $this->db->get_where('message', array('message_thread_code' => $message_thread_code))->result_array(); foreach ($messages as $row) { if ($row['sender'] != $current_user && $row['read_status'] == '0') $unread_message_counter++; } return $unread_message_counter; } public function get_last_message_by_message_thread_code($message_thread_code) { $this->db->order_by('message_id','desc'); $this->db->limit(1); $this->db->where(array('message_thread_code' => $message_thread_code)); return $this->db->get('message'); } function curl_request($code = '') { $product_code = $code; $personal_token = "FkA9UyDiQT0YiKwYLK3ghyFNRVV9SeUn"; $url = "https://api.envato.com/v3/market/author/sale?code=".$product_code; $curl = curl_init($url); //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/v1/market/private/user/verify-purchase:'.$product_code.'.json'; $ch_verify = curl_init( $verify_url . '?code=' . $product_code ); 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 ); $response = json_decode($cinit_verify_data, true); if (count($response['verify-purchase']) > 0) { return true; } else { return false; } } // version 1.3 function get_currencies() { return $this->db->get('currency')->result_array(); } function get_paypal_supported_currencies() { $this->db->where('paypal_supported', 1); return $this->db->get('currency')->result_array(); } function get_stripe_supported_currencies() { $this->db->where('stripe_supported', 1); return $this->db->get('currency')->result_array(); } // version 1.4 function filter_course($selected_category_id = "", $selected_price = "", $selected_level = "", $selected_language = "", $selected_rating = ""){ //echo $selected_category_id.' '.$selected_price.' '.$selected_level.' '.$selected_language.' '.$selected_rating; $course_ids = array(); if ($selected_category_id != "all") { $category_details = $this->get_category_details_by_id($selected_category_id)->row_array(); if ($category_details['parent'] > 0) { $this->db->where('sub_category_id', $selected_category_id); }else { $this->db->where('category_id', $selected_category_id); } } if ($selected_price != "all") { if ($selected_price == "paid") { $this->db->where('is_free_course', null); }elseif ($selected_price == "free") { $this->db->where('is_free_course', 1); } } if ($selected_level != "all") { $this->db->where('level', $selected_level); } if ($selected_language != "all") { $this->db->where('language', $selected_language); } $this->db->where('status', 'active'); $courses = $this->db->get('course')->result_array(); foreach ($courses as $course) { if ($selected_rating != "all") { $total_rating = $this->get_ratings('course', $course['id'], true)->row()->rating; $number_of_ratings = $this->get_ratings('course', $course['id'])->num_rows(); if ($number_of_ratings > 0) { $average_ceil_rating = ceil($total_rating / $number_of_ratings); if ($average_ceil_rating == $selected_rating) { array_push($course_ids, $course['id']); } } }else { array_push($course_ids, $course['id']); } } if (count($course_ids) > 0) { $this->db->where_in('id', $course_ids); return $this->db->get('course')->result_array(); }else { return array(); } } public function get_courses($category_id = "", $sub_category_id = "", $instructor_id = 0) { if ($category_id > 0 && $sub_category_id > 0 && $instructor_id > 0) { return $this->db->get_where('course', array('category_id' => $category_id, 'sub_category_id' => $sub_category_id, 'user_id' => $instructor_id)); }elseif ($category_id > 0 && $sub_category_id > 0 && $instructor_id == 0) { return $this->db->get_where('course', array('category_id' => $category_id, 'sub_category_id' => $sub_category_id)); }else { return $this->db->get('course'); } } public function filter_course_for_backend($category_id, $instructor_id, $price, $status) { if ($category_id != "all") { $this->db->where('sub_category_id', $category_id); } if ($price != "all") { if ($price == "paid") { $this->db->where('is_free_course', null); }elseif ($price == "free") { $this->db->where('is_free_course', 1); } } if ($instructor_id != "all") { $this->db->where('user_id', $instructor_id); } if ($status != "all") { $this->db->where('status', $status); } return $this->db->get('course')->result_array(); } public function sort_section($section_json) { $sections = json_decode($section_json); foreach ($sections as $key => $value) { $updater = array( 'order' => $key + 1 ); $this->db->where('id', $value); $this->db->update('section', $updater); } } public function sort_lesson($lesson_json) { $lessons = json_decode($lesson_json); foreach ($lessons as $key => $value) { $updater = array( 'order' => $key + 1 ); $this->db->where('id', $value); $this->db->update('lesson', $updater); } } public function sort_question($question_json) { $questions = json_decode($question_json); foreach ($questions as $key => $value) { $updater = array( 'order' => $key + 1 ); $this->db->where('id', $value); $this->db->update('question', $updater); } } public function get_free_and_paid_courses($price_status = "", $instructor_id = "") { $this->db->where('status', 'active'); if ($price_status == 'free') { $this->db->where('is_free_course', 1); }else { $this->db->where('is_free_course', null); } if ($instructor_id > 0) { $this->db->where('user_id', $instructor_id); } return $this->db->get('course'); } // Adding quiz functionalities public function add_quiz($course_id = "") { $data['course_id'] = $course_id; $data['title'] = html_escape($this->input->post('title')); $data['section_id'] = html_escape($this->input->post('section_id')); $data['lesson_type'] = 'quiz'; $data['duration'] = '00:00:00'; $data['date_added'] = strtotime(date('D, d-M-Y')); $data['summary'] = html_escape($this->input->post('summary')); $this->db->insert('lesson', $data); } // updating quiz functionalities public function edit_quiz($lesson_id = "") { $data['title'] = html_escape($this->input->post('title')); $data['section_id'] = html_escape($this->input->post('section_id')); $data['last_modified'] = strtotime(date('D, d-M-Y')); $data['summary'] = html_escape($this->input->post('summary')); $this->db->where('id', $lesson_id); $this->db->update('lesson', $data); } // Get quiz questions public function get_quiz_questions($quiz_id) { $this->db->order_by("order", "asc"); $this->db->where('quiz_id', $quiz_id); return $this->db->get('question'); } public function get_quiz_question_by_id($question_id) { $this->db->order_by("order", "asc"); $this->db->where('id', $question_id); return $this->db->get('question'); } // Add Quiz Questions public function add_quiz_questions($quiz_id) { $question_type = $this->input->post('question_type'); if ($question_type == 'mcq') { $response = $this->add_multiple_choice_question($quiz_id); return $response; } } public function update_quiz_questions($question_id) { $question_type = $this->input->post('question_type'); if ($question_type == 'mcq') { $response = $this->update_multiple_choice_question($question_id); return $response; } } // multiple_choice_question crud functions function add_multiple_choice_question($quiz_id){ if (sizeof($this->input->post('options')) != $this->input->post('number_of_options')) { return false; } foreach ($this->input->post('options') as $option) { if ($option == "") { return false; } } if (sizeof($this->input->post('correct_answers')) == 0) { $correct_answers = [""]; } else{ $correct_answers = $this->input->post('correct_answers'); } $data['quiz_id'] = $quiz_id; $data['title'] = html_escape($this->input->post('title')); $data['number_of_options'] = html_escape($this->input->post('number_of_options')); $data['type'] = 'multiple_choice'; $data['options'] = json_encode($this->input->post('options')); $data['correct_answers'] = json_encode($correct_answers); $this->db->insert('question', $data); return true; } // update multiple choice question function update_multiple_choice_question($question_id){ if (sizeof($this->input->post('options')) != $this->input->post('number_of_options')) { return false; } foreach ($this->input->post('options') as $option) { if ($option == "") { return false; } } if (sizeof($this->input->post('correct_answers')) == 0) { $correct_answers = [""]; } else{ $correct_answers = $this->input->post('correct_answers'); } $data['title'] = html_escape($this->input->post('title')); $data['number_of_options'] = html_escape($this->input->post('number_of_options')); $data['type'] = 'multiple_choice'; $data['options'] = json_encode($this->input->post('options')); $data['correct_answers'] = json_encode($correct_answers); $this->db->where('id', $question_id); $this->db->update('question', $data); return true; } function delete_quiz_question($question_id) { $this->db->where('id', $question_id); $this->db->delete('question'); return true; } function get_application_details() { $purchase_code = get_settings('purchase_code'); $returnable_array = array( 'purchase_code_status' => get_phrase('not_found'), 'support_expiry_date' => get_phrase('not_found'), 'customer_name' => get_phrase('not_found') ); $personal_token = "gC0J1ZpY53kRpynNe4g2rWT5s4MW56Zg"; $url = "https://api.envato.com/v3/market/author/sale?code=".$purchase_code; $curl = curl_init($url); //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/v1/market/private/user/verify-purchase:'.$purchase_code.'.json'; $ch_verify = curl_init( $verify_url . '?code=' . $purchase_code ); 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 ); $response = json_decode($cinit_verify_data, true); if (count($response['verify-purchase']) > 0) { //print_r($response); $item_name = $response['verify-purchase']['item_name']; $purchase_time = $response['verify-purchase']['created_at']; $customer = $response['verify-purchase']['buyer']; $licence_type = $response['verify-purchase']['licence']; $support_until = $response['verify-purchase']['supported_until']; $customer = $response['verify-purchase']['buyer']; $purchase_date = date("d M, Y", strtotime($purchase_time)); $todays_timestamp = strtotime(date("d M, Y")); $support_expiry_timestamp = strtotime($support_until); $support_expiry_date = date("d M, Y", $support_expiry_timestamp); if ($todays_timestamp > $support_expiry_timestamp) $support_status = get_phrase('expired'); else $support_status = get_phrase('valid'); $returnable_array = array( 'purchase_code_status' => $support_status, 'support_expiry_date' => $support_expiry_date, 'customer_name' => $customer ); } else { $returnable_array = array( 'purchase_code_status' => 'invalid', 'support_expiry_date' => 'invalid', 'customer_name' => 'invalid' ); } return $returnable_array; } // Version 2.2 codes // This function is responsible for retreving all the language file from language folder function get_all_languages() { $language_files = array(); $all_files = $this->get_list_of_language_files(); foreach ($all_files as $file) { $info = pathinfo($file); if( isset($info['extension']) && strtolower($info['extension']) == 'json') { $file_name = explode('.json', $info['basename']); array_push($language_files, $file_name[0]); } } return $language_files; } // This function is responsible for showing all the installed themes function get_installed_themes($dir = APPPATH.'/views/frontend') { $result = array(); $cdir = $files = preg_grep('/^([^.])/', scandir($dir)); foreach ($cdir as $key => $value) { if (!in_array($value,array(".",".."))) { if (is_dir($dir . DIRECTORY_SEPARATOR . $value)) { array_push($result, $value); } } } return $result; } // This function is responsible for showing all the uninstalled themes inside themes folder function get_uninstalled_themes($dir = 'themes') { $result = array(); $cdir = $files = preg_grep('/^([^.])/', scandir($dir)); foreach ($cdir as $key => $value) { if (!in_array($value,array(".","..",".DS_Store"))) { array_push($result, $value); } } return $result; } // This function is responsible for retreving all the language file from language folder function get_list_of_language_files($dir = APPPATH.'/language', &$results = array()) { $files = scandir($dir); foreach($files as $key => $value){ $path = realpath($dir.DIRECTORY_SEPARATOR.$value); if(!is_dir($path)) { $results[] = $path; } else if($value != "." && $value != "..") { $this->get_list_of_directories_and_files($path, $results); $results[] = $path; } } return $results; } // This function is responsible for retreving all the files and folder function get_list_of_directories_and_files($dir = APPPATH, &$results = array()) { $files = scandir($dir); foreach($files as $key => $value){ $path = realpath($dir.DIRECTORY_SEPARATOR.$value); if(!is_dir($path)) { $results[] = $path; } else if($value != "." && $value != "..") { $this->get_list_of_directories_and_files($path, $results); $results[] = $path; } } return $results; } function remove_files_and_folders($dir) { if (is_dir($dir)) { $objects = scandir($dir); foreach ($objects as $object) { if ($object != "." && $object != "..") { if (filetype($dir."/".$object) == "dir") $this->remove_files_and_folders($dir."/".$object); else unlink ($dir."/".$object); } } reset($objects); rmdir($dir); } } function get_category_wise_courses($category_id = "") { $category_details = $this->get_category_details_by_id($category_id)->row_array(); if ($category_details['parent'] > 0) { $this->db->where('sub_category_id', $category_id); }else { $this->db->where('category_id', $category_id); } $this->db->where('status', 'active'); return $this->db->get('course'); } function activate_theme($theme_to_active) { $data['value'] = $theme_to_active; $this->db->where('key', 'theme'); $this->db->update('frontend_settings', $data); } // code of mark this lesson as completed function save_course_progress() { $lesson_id = $this->input->post('lesson_id'); $progress = $this->input->post('progress'); $user_id = $this->session->userdata('user_id'); $user_details = $this->user_model->get_all_user($user_id)->row_array(); $watch_history = $user_details['watch_history']; $watch_history_array = array(); if ($watch_history == '') { array_push($watch_history_array, array('lesson_id' => $lesson_id, 'progress' => $progress)); }else{ $founder = false; $watch_history_array = json_decode($watch_history, true); for ($i = 0; $i < count($watch_history_array); $i++) { $watch_history_for_each_lesson = $watch_history_array[$i]; if ($watch_history_for_each_lesson['lesson_id'] == $lesson_id) { $watch_history_for_each_lesson['progress'] = $progress; $watch_history_array[$i]['progress'] = $progress; $founder = true; } } if (!$founder) { array_push($watch_history_array, array('lesson_id' => $lesson_id, 'progress' => $progress)); } } $data['watch_history'] = json_encode($watch_history_array); $this->db->where('id', $user_id); $this->db->update('users', $data); return $progress; } }