<?php
/*
	C2EM Crear factures i rebuts" 

    Aquest fitxer es part de C2EM Crear factures i rebuts.
	Classe amb les propietats necessaries per crear (i borrar) una sola vegada la base de dades

*/
define( 'C2EM_factura_bbdd_VERSION', '1.1.1' );
//https://codex.wordpress.org/Creating_Tables_with_Plugins
class C2EM_factura_bbdd{
	
	protected $num_rebut; //es genera sequencialment al crear la classe
	protected $rebut_fet=false; //saber si s'ha fet el rebut 
	//Constant per comprovar que només es troba instalat un cop
	const optionInstalled = 'C2EM_factura_bbdd_installed';
	

	//Es sobrecargar el constructor http://php.net/manual/es/language.oop5.decon.php
	function __construct($num_ordre=null) {
		$this->rebut_fet=false;
		if($num_ordre){
			$this->num_rebut = $this->insert_nou_rebut($num_ordre);
		}
	}
	
	public function isInstalled() {
        return get_option(optionInstalled) == true;
    }
	
	protected function markAsInstalled() {
        return update_option(optionInstalled, true);
    }
	
	protected function markAsUnInstalled() {
        return delete_option(optionInstalled);
    }
	//Funcion que nomes s'hauria de cridar una vegada posar le plugin
	function init() {

        if (!$this->isInstalled()) {
			//Instalem desinstalem la bbdd al activar o desactivar el plugin
			//pero no es criden quan el plugin s'actualitza
		    register_activation_hook( __FILE__, array($this, 'install') );
		    register_deactivation_hook( __FILE__, array($this, 'uninstall') );

			add_action( 'plugins_loaded', array($this,'update_db_check') );
		}
    }
	function update_db_check() {
    	if ( get_site_option( 'C2EM_factura_bbdd_VERSION' ) != C2EM_factura_bbdd_VERSION ) {
        	$this->install();
   		}

	}
	
	function install(){
		// To avoid running install() more then once
        $this->markAsInstalled();
		global $wpdb;
		$wpdb->show_errors();
		$installed_ver = get_option( 'C2EM_factura_bbdd_VERSION' );
		if ( $installed_ver != C2EM_factura_bbdd_VERSION) {
			$charset_collate = $wpdb->get_charset_collate();

			$tablename=$this->getRebutsTableName();

			$sql = "CREATE TABLE IF NOT EXISTS  `$tablename` (
				id mediumint(9) NOT NULL AUTO_INCREMENT,
				time datetime DEFAULT '0000-00-00 00:00:00' NOT NULL,
				num_ordre LONGTEXT CHARACTER SET utf8,
				PRIMARY KEY (id)
			) $charset_collate;";
 			

			require_once( ABSPATH . 'wp-admin/includes/upgrade.php' );
			dbDelta( $sql );
			$wpdb->print_error();
			$wpdb->hide_errors();
			update_option( 'C2EM_factura_bbdd_VERSION', C2EM_factura_bbdd_VERSION );
		}

  		
	}

	function uninstall(){
		$this->markAsUnInstalled();
		global $wpdb;
        $tablename = $this->getRebutsTableName();
        $wpdb->query("DROP TABLE IF EXISTS `$tablename`");
	}
	//eliminem totes les files i posem el comptador a zero
	function eliminar_totes_files(){
		global $wpdb;
        $tablename = $this->getRebutsTableName();
        $wpdb->query("delete from `$tablename`");
		$wpdb->query("ALTER TABLE `$tablename` AUTO_INCREMENT = 1");
	}

	function insert_nou_rebut($num_ordre){
		global $wpdb;
		$wpdb->show_errors();
		$tablename = $this->getRebutsTableName();
		//Si el rebut ja s'ha demanat, no es genere, un nou id
		if ($this->get_num_rebut_bbdd($num_ordre)) {
			$this->rebut_fet=true;
		}
		else{
			$wpdb->insert( 
				$tablename, 
				array( 
					'time' => current_time( 'mysql' ), 
					'num_ordre' => $num_ordre, 
				) 
			);
			//$wpdb->print_error();
			$wpdb->hide_errors();
		}

		//Retornem el numero de rebut que s'ha generat
		return $this->get_num_rebut_bbdd($num_ordre);
	}
	
	function get_num_rebut_bbdd($num_ordre){
		global $wpdb;
		$wpdb->show_errors();
		$tablename = $this->getRebutsTableName();
		$row = $wpdb->get_row($wpdb->prepare("select * from `$tablename` 
												where `num_ordre` = '%s'  
												",$num_ordre));	
		$wpdb->hide_errors();
		return $row->id;
	}
	function get_num_rebut(){
		return $this->num_rebut;
	}

	function get_rebut_fet(){
		return $this->rebut_fet;
	}

	public function getRebutsTableName() {
		global $wpdb;
        return $wpdb->prefix . "rebuts";
	}

	//Només per veure el seu contingut i fer comprovacions
	function contingut(){
		global $wpdb;
		$wpdb->show_errors();
		$tablename = $this->getRebutsTableName();
		$query = $wpdb->get_results("select * from `$tablename`" );	
		$contingut="";
		foreach ( $query as $row ){
			$contingut.=$row->id." -- ".$row->time."-- ".$row->num_ordre." <br>";
		}
		$wpdb->hide_errors();
		return $contingut;
	}
}

class C2EM_factura_bbdd_indicador{
	const optionInstalled = '_installed';
}
?>
