<?php
if (!defined('ABSPATH')) exit();
if (!class_exists('DbIndeedAbstract')) require_once ULP_PATH . 'classes/Abstracts/DbIndeedAbstract.class.php';
if (class_exists('DbModulesMeta')) return;
class DbModulesMeta extends DbIndeedAbstract{
	/**
	 * @var string
	 */
	protected $table = '';
	/**
	 * @param none
	 * @return none
	 */
	public function __construct(){
		global $wpdb;
		$this->table = $wpdb->prefix . 'ulp_courses_modules_metas';
	}
	/**
	 * @param int (module id)
	 * @param string (meta name)
	 * @return mixed
	 */
	public function getModuleMeta($module_id=0, $meta_key=''){
		$module_id = esc_sql($module_id);
		$meta_key = esc_sql($meta_key);
		return $this->getVar('meta_value', "module_id=$module_id AND meta_key='$meta_key'");
	}
	/**
	 * @param int (module id)
	 * @param string (module meta key)
	 * @param mixed (module meta value)
	 * @return int (meta id)
	 */
	public function saveModuleMeta($module_id=0, $meta_key='', $meta_value=''){
		global $wpdb;
		$module_id = esc_sql($module_id);
		$meta_key = esc_sql($meta_key);
		$meta_value = esc_sql($meta_value);
		if ($this->getModuleMeta($module_id, $meta_key)===null){
			return $this->insert("null, $module_id, '$meta_key', '$meta_value'");
		} else {
			$this->update("meta_value='$meta_value'", "module_id=$module_id AND meta_key='$meta_key'");
			return $this->getVar('id', "module_id=$module_id AND meta_key='$meta_key'");
		}
	}
	/**
	 * @param int (module id)
	 * @param string (meta key)
	 * @return bool
	 */
	public function deleteModuleMeta($module_id=0, $meta_key=''){
		$module_id = esc_sql($module_id);
		$meta_key = esc_sql($meta_key);
		return $this->delete("module_id=$module_id AND meta_key='$meta_key'");
	}
	/**
	 * @param int (module id)
	 * @return bool
	 */
	public function deleteAllModuleMetas($module_id=0){
		$module_id = esc_sql($module_id);
		return $this->delete(" module_id=$module_id ");
	}
	/**
	 * @param int (module id)
	 * @return array ( ... key=>value pairs )
	 */
	public function getAllModuleMetas($module_id){
		$module_id = esc_sql($module_id);
		return $this->getResults('meta_key, meta_value', "module_id=$module_id");
	}
}
