<?php 
// CLASS [->CLASS_NAME<-]
// Last Update: [->CREATION_DATE<-] by Franco Milazzo

class [->CLASS_NAME<-] {
 	
  // DATABASE CONNECTION PROTECTED VARIABLES
  protected $m_db;                    // DB Connection
  protected $m_statement;             // Query statement
	protected $m_dataset;               // Query result dataset
  protected $m_sql;                   // SQL string with parameters
  protected $m_args;                  // Arguments for SQl strings (Array)
	
	// CLASS PRIVATE VARIABLES
	
	// PRIVATE INSTANCE OF CLASS FOR RANDOM FUNCTIONS
	private $m_random;	
  
  // DB FIELDS: [->DB_TABLE_NAME<-]
	
  [->LOOP_DEFINE_DB_TABLE_FIELDS<-]
  
	public  function __construct(C_Database $m_db){
		$this->m_db = $m_db;
		$this->m_random = new C_Random();

    // DB FIELDS: [->DB_TABLE_NAME<-]   
    [->LOOP_INIT_DB_TABLE_FIELDS<-]
	}
	
	public function load_data(){
		if (is_string($this->m_[->DB_TABLE_KEY_ID<-])){
		  // Load image data from DB table [->DB_TABLE_NAME<-]. 
      
      $this->m_sql 				= "SELECT * FROM [->DB_TABLE_NAME<-] WHERE [->DB_TABLE_KEY_ID<-] = :[->DB_TABLE_KEY_ID<-] ";
      $this->m_args 			= ['[->DB_TABLE_KEY_ID<-]' => $this->m_[->DB_TABLE_KEY_ID<-]];
      $this->m_statement 	= $this->m_db->run($this->m_sql, $this->m_args);
      $this->m_dataset 		= $this->m_statement->fetch();
				
      if (isset($this->m_dataset)){
        [->LOOP_LOAD_DB_TABLE_FIELDS<-]
			}
		}
	}	
	
	///////////////////
  // SET FUNCTIONS //
  ///////////////////	
	
	[->LOOP_SET_DB_TABLE_FIELDS<-]
  		
	///////////////////
  // GET FUNCTIONS //
  ///////////////////
				
  [->LOOP_GET_DB_TABLE_FIELDS<-]
  
  	
	//////////////////
  // DB FUNCTIONS //
  //////////////////	
	
	public function add_record(){
    $this->m_[->DB_TABLE_KEY_ID<-] = $this->m_random->rnd_uid(21);
    $m_sql = "INSERT INTO [->DB_TABLE_NAME<-] 
              SET
                [->LOOP_KEY_VALUE_DB_TABLE_FIELDS<-]";
    
    $m_args = [[->LOOP_SQL_ARGS_DB_TABLE_FIELDS<-]];
    
    $m_db->run($m_sql, $m_args);
		return $this->m_[->DB_TABLE_KEY_ID<-];
	} 	
	
	public function update_record(){
    $m_sql = "UPDATE [->DB_TABLE_NAME<-] 
              SET
                [->LOOP_KEY_VALUE_DB_TABLE_FIELDS<-]
							WHERE 
                [->DB_TABLE_KEY_ID<-] = :[->DB_TABLE_KEY_ID<-]";
    
    $m_args = [[->LOOP_SQL_ARGS_DB_TABLE_FIELDS<-]];
    
    return $m_db->run($m_sql, $m_args);    
	}
	
  public function delete_record(){
    $m_sql = "DELETE FROM [->DB_TABLE_NAME<-] 
              WHERE [->DB_TABLE_KEY_ID<-] = :[->DB_TABLE_KEY_ID<-]";
    
    $m_args = ['[->DB_TABLE_KEY_ID<-]' => $this->m_[->DB_TABLE_KEY_ID<-]];
    
    return $m_db->run($m_sql, $m_args);    
	}
	
	public function __destruct(){
	}
}
?>