<?php

// llamando la super clase base de datos

if (!class_exists('tools')) {
	includeCommonClass('tools');
}

/***************************************************************************
 clase para la construccion de formularios y volcamiento de data proveniente de los mismos
 IMPORTANTE: por defecto se asume que se esta conectado a la base de datos
 en caso de que desee llamar herramientas del tipo database
 ****************************************************************************/

class formulario extends  tools  {

	//**********************************************atributos


	/********************************************** CONSTRUCTOR */

	function __construct ($conect=''){ ///constructor de la clase

		if(!empty($conect)){

			$this->autoconexion();

		}

	}

	//********************************************* metodos de formulario


	/* metodo para obtener variables de formularios de manera segura
	 * de tal manera de evitar ataques de inyeccion de sql etc
	 * solo hacer la llamada al metodo con el nombre de la variable que se pasa por formulario
	 * el parametro $only es para limitar el tipo de variable que se desea recibir ej: $_GET o $_POST
	 */

	public function getvar($var,$only=""){

		/////////////////////validar el only

		if(!$only){

			$var2 = $_REQUEST[$var];

		}else{

			if($only==$_GET) $var2 = $_GET[$var]; else $var2 = $_POST[$var];

		}

		//////////quitando las comillas simples y dobles

		/*
		Creador: Jesús Rafael Cova Huerta.
		
		Descripci&oacute;n: se comprubea si es un array, porque no es necesario quitarle los espacios laterales puesto que viene de un select.
		*/
		
		if (!is_array($var2)) {
			$seguro = trim($var2); ///fuera espacios en blanco
		}
		
		////////////////
		
		$seguro = str_replace('"','', $seguro); ///fuera comillas dobles
		$seguro = str_replace("'","", $seguro); ///fuera comillas simples

		return $seguro;

	} /////fin del metodo getvar
	
	 /*
		Creador: Jesús Rafael Cova Huerta.
	
		Descripci&oacute;n: sirve para guardar las ordenes de compra con o sin voucher.
	*/

 		public function CargarVoucher ($pref, $sep, $tabla, $variables, $estatusarchivo, $prefijo, $datosdelarchivo = array ()) {

 			if ($estatusarchivo == 1) {
				$nombredearchivo = $datosdelarchivo[2];
    		
    			$extension = explode (".", $nombredearchivo);
    
				$posicion = count($extension) - 1;
				
				$nuevo_archivo = "voucher.".$extension[$posicion];

				$tamano = $datosdelarchivo[0];
        
				$tipo = $datosdelarchivo[1];
				
				$archivo = $nuevo_archivo;
				
        		if ($archivo != "") {
           	 		// guardamos el archivo a la carpeta files
            		
            		$destino =  "vouchers/".$prefijo."_".$archivo;

            		if (copy ($datosdelarchivo[3], $destino)) {
            			$r=0;
						
						while (list ($key, $value) = each ($variables)) {
							$value = $this->getvar($key,$variables,false); ///hay confianza y no aplica la seguridad
				
							//$value = trim($_POST[$key]);
								
							if(!empty($value)) {  ///si el campo no es vacio lo inserto
								$nuevo = explode($sep,$key);
	  
								if($nuevo[0]==$pref) {
									$valores[$r] = $value;
						
							 		$campos[$r] = $nuevo[1];
									
									if ($campos[$r] == "dato") {
										$campos[$r] = "dato_id";
									}
									
									if ($campos[$r] == "cliente") {
										$campos[$r] = "cliente_id";
									}
							
									$r++;
								}
										 
							}
								  
						}
											
						$campos[$r] = "voucher";
						
						$valores[$r] = $prefijo."_".$archivo;

						$lista = implode(',',$campos);	

						if(count ($campos) > 0) { 
							$estatus = $this -> insertar2 ($tabla,$lista,$valores);
							
							if ($estatus == 1) {
								return 1;
							} else {
								return 0;
							}
						}
            		} else {
                		$status = "Error al subir el archivo";
            		}
        		} else {
           		 	$status = "Error al subir archivo";	
        		}
 			} else {
				$r=0;
						
				while (list ($key, $value) = each ($variables)) {
					$value = $this->getvar($key,$variables,false); ///hay confianza y no aplica la seguridad
				
					//$value = trim($_POST[$key]);
								
					if(!empty($value)) {  ///si el campo no es vacio lo inserto
						$nuevo = explode($sep,$key);
	  
						if($nuevo[0]==$pref) {
							$valores[$r] = $value;
						
							 $campos[$r] = $nuevo[1];
									
							if ($campos[$r] == "dato") {
								$campos[$r] = "dato_id";
							}
									
							if ($campos[$r] == "cliente") {
								$campos[$r] = "cliente_id";
							}
							
							$r++;
						}
										 
					}
								  
				}

				$lista = implode(',',$campos);	

				if(count ($campos) > 0) {
					$estatus = $this -> insertar2 ($tabla,$lista,$valores);
					
					if ($estatus == 1) {
						return 1;
					} else {
						return 0;
					}
				}
 			}
 		}

	/*metodo insert_data, que inserta valores de un formulario en una tabla de la base de datos
	 $pref: toma el prefijo de cada campo que seran los valores que se van a insertar ejemplo r-nombre "r"
	 $sep es el caracter que separa al nombre del campo y el prefiejo ejemplo r_nombre nota la separacion debe ser un "_"
	 $tabla: la tabla de la base de datos que sufrirá los cambios
	 $metodo: vectores globales segun el método por el cual vienen los valores del formulario "$_GET" o "$_POST"
	 IMPOTANTE: EL NOMBRE DE LOS CAMPOS DEBE SER EL NOMBRE DE LAS VARIABLES DE FORMULARIO PASADAS

	 */
	 		public function insert_data ($pref, $sep, $tabla, $variables) {
				$r=0;
			         
				while (list ($key, $value) = each ($variables)) {
					$value = $this->getvar($key,$variables,false); ///hay confianza y no aplica la seguridad
				
					//$value = trim($_POST[$key]);
								
					if(!empty($value)) {  ///si el campo no es vacio lo inserto
						$nuevo = explode($sep,$key);
	  
						if($nuevo[0]==$pref) {
							 $valores[$r] = $value;
						
							 /*
								Creador: Jesús Rafael Cova Huerta.
											
								Descripci&oacute;n: se utiliza para guardar datos que tenga mas de un piso.
							*/
											
								if (count ($nuevo) == 2) {
									$campos[$r] = $nuevo[1];
								} else {
									$campos[$r] = $nuevo[1];
													
									for ($i = 2; $i < count ($nuevo); $i ++) {
										$campos[$r] = $campos[$r]."_".$nuevo[$i];
									}
								}
					
							////////////////
							
							$r++;
						}
										 
					}
								  
				}
						
			$lista = implode(',',$campos);	
			if(count ($campos) > 0) $this -> insertar2 ($tabla,$lista,$valores);
 		}


	/*metodo edit_data, que edita valores de un formulario en una tabla de la base de datos
	 $pref: toma el prefijo de cada campo que seran los valores que se van a insertar ejemplo r-nombre "r"
	 $sep es el caracter que separa al nombre del campo y el prefiejo ejemplo r_nombre nota la separacion debe ser un "_"
	 $tabla: la tabla de la base de datos que sufrirá los cambios
	 $metodo: vectores globales segun el método por el cual vienen los valores del formulario "$_GET" o "$_POST"
	 $where: condicion de edicion ejemplo id='1'
	 IMPOTANTE: EL NOMBRE DE LOS CAMPOS DEBE SER EL NOMBRE DE LAS VARIABLES DE FORMULARIO PASADAS
	 */
	public function update_data($pref,$sep,$tabla,$variables,$where=""){


		$r=0;
		
		$i = 0;

		while(list($key, $value) = each($variables))
		{
		
			/*
			Creador: Jesús Rafael Cova Huerta.
			
			Descripci&oacute;n se comprueba que no es un arreglo.
			*/
			
				if (!is_array ($variables)) {
					$value = $this->getvar($key,$variables);
				}
			
			/////////////
			
			$nuevo = explode($sep,$key);

			if($nuevo[0]==$pref){
				$valores[$r] = $value;
				$campos[$r] = $nuevo[1];
				$r++;
			}

		}

		$this->update($tabla,$campos,$valores,$where);

	}








} 




//// fin de la clase formulario



?>