<?php
if (!defined('ABSPATH')) exit();
if (!class_exists('DbIndeedAbstract')) require_once ULP_PATH . 'classes/Abstracts/DbIndeedAbstract.class.php';
if (class_exists('DbCoursesModulesUlp')) return;
class DbCoursesModulesUlp extends DbIndeedAbstract{
	/**
	 * @var string
	 */
	protected $table = '';
	/**
	 * @param none
	 * @return none
	 */
	public function __construct(){
		global $wpdb;
		$this->table = $wpdb->prefix . 'ulp_courses_modules';
	}
	/**
	 * @param int (module id)
	 * @param string (module name)
	 * @param int (course id)
	 * @param int (order)
	 * @param int (tinyint status 1 or 0)
	 * @return int (module id)
	 */
	public function saveModule($module_id=0, $module_name='', $course_id=0, $module_order=0, $status=0){
		global $wpdb;
		$module_id = esc_sql($module_id);
		$module_name = esc_sql($module_name);
		$course_id = esc_sql($course_id);
		$module_order = esc_sql($module_order);
		$status = esc_sql($status);
		if ($this->getModule($module_id)){
			$this->update("course_id=$course_id, module_name='$module_name', module_order=$module_order, status=$status", "module_id=$module_id");
			do_action( 'ulp_course_modules_update', $module_id );
			return $module_id;
		} else {
			$module_id = $this->insert("null, '$module_name', $course_id, $module_order, $status");
			do_action( 'ulp_course_modules_save', $module_id );
			return $module_id;
		}
	}
	/**
	 * @param int
	 * @return bool
	 */
	public function deleteModule($module_id=0){
		$module_id = esc_sql($module_id);
		return $this->delete("module_id=$module_id");
	}
	/**
	 * @param int (module id)
	 * @return array
	 */
	public function getModule($module_id=0){
		$module_id = esc_sql($module_id);
		return $this->getRow('course_id, module_name, module_order, status', "module_id=$module_id");
	}
	/**
	 * @param int (course id)
	 * @return array
	 */
	public function getAllModulesForCourse($course_id=0, $limit=0, $offset=0){
		$course_id = esc_sql($course_id);
		$limit = esc_sql($limit);
		$offset = esc_sql($offset);
		$what_to_get = "course_id=$course_id ";
		$what_to_get .= " ORDER BY module_order ASC ";
		if ($limit){
			$what_to_get .= " LIMIT $limit OFFSET $offset ";
		}
		return $this->getResults("module_id, module_name, module_order, status", $what_to_get);
	}
	/**
	 * @param int
	 * @return int
	 */
	public function countModules($course_id=0){
			$course_id = esc_sql($course_id);
			return $this->getVar("COUNT(module_id)", "course_id=$course_id");
	}
	/**
	 * @param int
	 * @return int
	 */
	public function getLastModuleForCourse($course_id=0){
		///dynamic order???
		$course_id = esc_sql($course_id);
		return $this->getVar("module_id", "course_id=$course_id ORDER BY module_order DESC LIMIT 1 "); ///or quiz
	}
}
