///////////////////////////////////////////////////////////////
// Clase Productos
// AdShop
// versi�n: 0.1
// fecha: 10/09/2008
//////////////////////////////////////////////////////////////
class productos {
var $productos_id;
var $lastID;
var $con;
var $path_files;
var $err;
var $err_descripcion;
function productos(){
global $con;
global $_POST;
global $_FILES;
$this->err = false;
$this->con = $con;
$this->path_files = _ADSHOP_IMAGENES_DIR."/productos";
$this->path_files_texturas = _ADSHOP_IMAGENES_DIR."/colores";
}
function hayCategorias(){
$sql = "SELECT count(*) as num FROM categorias";
$res = $this->con->ejecutar_consulta($sql);
$rs = $this->con->consultar();
return $rs['num'];
}
//$orden llega con el siguiente formato
function setOrden($productos_id, $orden){
$a_orden = explode("#",$orden);
$sql = "UPDATE productos SET productos_orden=".$a_orden[0]." WHERE productos_id=".$productos_id;
$res = $this->con->ejecutar_consulta($sql);
$sql = "UPDATE productos SET productos_orden=".$a_orden[2]." WHERE productos_id=".$a_orden[1];
$res = $this->con->ejecutar_consulta($sql);
return($res);
}
function getMaxOrden(){
$sql = "SELECT IFNULL(MAX(productos_orden),0)+1 as max_orden FROM productos";
$res = $this->con->ejecutar_consulta($sql);
$rs = $this->con->consultar();
if($rs){
return $rs['max_orden'];
}else{
return 0;
}
}
function alta($a_datos) {
/*
echo "
";
print_r($a_datos);
echo "
";
*/
$sql = "INSERT INTO productos(productos_referencia, productos_modelo, productos_cantidad,
productos_precio, productos_precio_anterior, productos_fecha_alta,
productos_fecha_modificacion, productos_fecha_disponibilidad, productos_fecha_caducidad,
productos_peso, productos_ancho, productos_alto, productos_fondo, productos_diametro,
productos_estados_id, productos_fabricantes_id, productos_activo,
productos_familias_tipos_id, productos_id_padre, productos_materiales_id, productos_color_rgb,
productos_orden, productos_iva) VALUES ";
$sql.= "(";
$sql.= ($a_datos['productos_referencia']!=""?"'".$a_datos['productos_referencia']."'":"NULL").",";
$sql.= ($a_datos['productos_modelo']!=""?"'".$a_datos['productos_modelo']."'":"NULL").",";
$sql.= ($a_datos['productos_cantidad']!=""?$a_datos['productos_cantidad']:"NULL").",";
$sql.= ($a_datos['productos_precio']!=""?"'".str_replace(",",".",$a_datos['productos_precio'])."'":"NULL").",";
$sql.= ($a_datos['productos_precio_anterior']!=""?"'".str_replace(",",".",$a_datos['productos_precio_anterior'])."'":"NULL").",";
$sql.= "NOW(),";
$sql.= "NULL,";
$sql.= ($a_datos['productos_fecha_disponibilidad']!=""?"'".$this->con->getFechaMysql($a_datos['productos_fecha_disponibilidad'])."'":"NULL").",";
$sql.= ($a_datos['productos_fecha_caducidad']!=""?"'".$this->con->getFechaMysql($a_datos['productos_fecha_caducidad'])."'":"NULL").",";
$sql.= ($a_datos['productos_peso']!=""?"'".str_replace(",",".",$a_datos['productos_peso'])."'":"NULL").",";
$sql.= ($a_datos['productos_ancho']!=""?"'".$a_datos['productos_ancho']."'":"NULL").",";
$sql.= ($a_datos['productos_alto']!=""?"'".$a_datos['productos_alto']."'":"NULL").",";
$sql.= ($a_datos['productos_fondo']!=""?"'".$a_datos['productos_fondo']."'":"NULL").",";
$sql.= ($a_datos['productos_diametro']!=""?"'".$a_datos['productos_diametro']."'":"NULL").",";
$sql.= ($a_datos['productos_estados_id']!=""?$a_datos['productos_estados_id']:"NULL").",";
$sql.= ($a_datos['productos_fabricantes_id']!=""?$a_datos['productos_fabricantes_id']:"NULL").",";
$sql.= "'".$a_datos['productos_activo']."',";
$sql.= ($a_datos['productos_familias_tipos_id']!=""?$a_datos['productos_familias_tipos_id']:"NULL").",";
$sql.= ($a_datos['productos_id_padre']!=""?$a_datos['productos_id_padre']:"NULL").",";
$sql.= ($a_datos['productos_materiales_id']!=""?$a_datos['productos_materiales_id']:"NULL").",";
$sql.= ($a_datos['productos_color_rgb']!=""?"'".$a_datos['productos_color_rgb']."'":"NULL").",";
$sql.= $this->getMaxOrden().",";
$sql.= ($a_datos['productos_iva']!=""?$a_datos['productos_iva']:_IVA).")";
//echo $sql."
";
$res = $this->con->ejecutar_consulta($sql);
if(!$res){
$this->err = true;
$this->err_descripcion = "Error al ejecutar la SQL de Alta de Categor�as: ".$sql;
}else{
$this->lastID = $this->con->lastID;
//Insertamos los textos para cada idioma
//campos:
//productos_nombre
//productos_descripcion
//productos_url
//productos_visitas
foreach($a_datos as $k=>$v){
if(strstr($k, "productos_nombre") !== false){
$a_dat = explode("_", $k);
$idiomas_id = $a_dat[2];
$productos_nombre = ($a_datos['productos_nombre_'.$idiomas_id]!=""?"'".$a_datos['productos_nombre_'.$idiomas_id]."'":"NULL");
$productos_descripcion = ($a_datos['productos_descripcion_'.$idiomas_id]!=""?"'".$a_datos['productos_descripcion_'.$idiomas_id]."'":"NULL");
$productos_observaciones = ($a_datos['productos_observaciones_'.$idiomas_id]!=""?"'".$a_datos['productos_observaciones_'.$idiomas_id]."'":"NULL");
$productos_url = ($a_datos['productos_url_'.$idiomas_id]!=""?"'".$a_datos['productos_url_'.$idiomas_id]."'":"NULL");
$productos_color = ($a_datos['productos_color_'.$idiomas_id]!=""?"'".$a_datos['productos_color_'.$idiomas_id]."'":"NULL");
$productos_visitas = "NULL";
$sql = "INSERT INTO productos_detalles(productos_id, idiomas_id, productos_nombre,
productos_color, productos_descripcion, productos_observaciones, productos_url, productos_visitas) VALUES ";
$sql.= "(".$this->lastID.",".$idiomas_id.",".$productos_nombre.",".$productos_color.",".$productos_descripcion.",".$productos_observaciones.",".$productos_url.",".$productos_visitas.")";
//echo $sql."
";
$res = $this->con->ejecutar_consulta($sql);
}
}
//Insertamos los atributos para cada idioma
//los datos llegal del tipo
//CONCAT('atributo_',fa.familias_atributos_id,'_',fai.idiomas_id)
foreach($a_datos as $k=>$v){
if(strstr($k, "atributo_") !== false){
$a_dat = explode("_", $k);
$productos_id = $this->lastID;
$familias_atributos_id = $a_dat[1];
$idiomas_id = $a_dat[2];
$valor = (strlen($v)>255)?"NULL":"'".$v."'";
$valor_text = (strlen($v)>255)?"'".$v."'":"NULL";
$sql = "INSERT INTO productos_atributos(productos_id, familias_atributos_id, idiomas_id, valor, valor_text) VALUES ";
$sql.= "(".$this->lastID.",".$familias_atributos_id.",".$idiomas_id.",".$valor.",".$valor_text.")";
//echo $sql."
";
$res = $this->con->ejecutar_consulta($sql);
$productos_atributos_id = $this->con->lastID;
//Si el atributo es de tipo "conjunto de valores" (SELECT o SELECT M�LTIPLE)
if(is_array($v)){
foreach($v as $x=>$y){
$stock = $a_datos['stock_'.$familias_atributos_id.'_'.$idiomas_id.'_SELECT'][$x];
//Metemos los valores en productos_atributos_valores
$sql = "INSERT INTO productos_atributos_valores(productos_atributos_id, productos_atributos_valores_valor,productos_atributos_valores_stock) VALUES ";
$sql.= "(".$productos_atributos_id.",'".$y."','".$stock."')";
//echo $sql."
";
$res = $this->con->ejecutar_consulta($sql);
}
}
}
}
//////////////////////////////////////////////////////////////////////////
//¿Hay alguna Textura-Imagen que subir? (sólo se soportan JPEG y GIF)
$img = $this->con->getNameUpload($_FILES['productos_color_imagen']);
if (($img['type']=="image/gif") || ($img['type']=="image/pjpeg") || ($img['type']=="image/jpeg") ){
if($img['name']!=""){
if(!move_uploaded_file($img['tmp_name'], $this->path_files_texturas.'/'.$this->lastID."_".$img['fullname'])){
$this->err = true;
$this->err_descripcion = "Error al subir el archivo durante al actualización";
}else{
$sql = "UPDATE productos SET productos_color_imagen='".$img['fullname']."' WHERE productos_id=".$this->lastID;
//echo $sql."
";
$res = $this->con->ejecutar_consulta($sql);
}
}
}
//////////////////////////////////////////////////////////////////////////
}
//////////////////////////////////////////////////////////////////////////
//Hay precios por rango?
$this->insertaPreciosRangos($this->lastID, $a_datos['precio_rango'], $a_datos['precio_precio']);
//////////////////////////////////////////////////////////////////////////
//Categorías
if($a_datos['productos_id_padre']!=""){
//Se está dando de alta una variante
$sql = "SELECT categorias_id FROM productos_categorias WHERE productos_id = ".$a_datos['productos_id_padre'];
$res = $this->con->ejecutar_consulta($sql);
$rs = $this->con->result_array_asoc();
if($rs){
foreach($rs as $k2=>$v2){
$a_datos['categorias_id'][] = $v2['categorias_id'];
}
}
}
//Alta del producto en la categor�a
foreach($a_datos['categorias_id'] as $k1=>$v1){
//Alta de categoría para el padre
$sql = "INSERT INTO productos_categorias (productos_id, categorias_id)
VALUES (".$this->lastID.",".$v1.")";
//echo $sql."
";
$res = $this->con->ejecutar_consulta($sql);
}
//�Hay alguna imagen que subir? (s�lo se soportan JPEG y GIF)
if(isset($_FILES) && sizeof($_FILES)>0){
while(list($key,$value) = each($_FILES['productos_imagen']['name']))
{
if(!empty($value)){
$nombre_archivo = $_FILES['productos_imagen']['name'][$key];
$tipo_archivo = $_FILES['productos_imagen']['type'][$key];
$tamano_archivo = $_FILES['productos_imagen']['size'][$key];
$tmp_archivo = $_FILES['productos_imagen']['tmp_name'][$key];
if(($tipo_archivo=="image/gif") || ($tipo_archivo=="image/pjpeg") || ($tipo_archivo=="image/jpeg") ){
switch($tipo_archivo){
case "image/gif":
$extension = ".gif";
break;
case "image/pjpeg":
$extension = ".jpg";
break;
case "image/jpeg":
$extension = ".jpg";
break;
}
$nombre_definitivo = md5($this->lastID."_".$nombre_archivo)."_".date("YmdGis").$extension;
if(!is_dir($this->path_files)){
mkdir($this->path_files);
chmod($this->path_files,0777);
}
if(!move_uploaded_file($tmp_archivo, $this->path_files.'/'.$nombre_definitivo)){
chmod($this->path_files.'/'.$nombre_definitivo,0777);
$this->err = true;
$this->err_descripcion = "Error al subir el archivo durante el alta";
}else{
$img_data = getimagesize($this->path_files.'/'.$nombre_definitivo);
$sql = "INSERT INTO productos_galerias (productos_id, productos_imagen, productos_imagen_ancho, productos_imagen_alto, productos_imagen_visitas, productos_imagen_kb, productos_imagen_type) VALUES ";
$sql.= "(".$this->lastID.",'".$nombre_definitivo."',".$img_data[0].",".$img_data[1].",NULL,".$tamano_archivo.",'".$tipo_archivo."')";
//echo $sql."
";
$res = $this->con->ejecutar_consulta($sql);
}
}
}
}
}
return $this->lastID;
}
function baja($productos_id) {
$this->borraGaleria($productos_id);
$this->borraFicheros($productos_id);
$this->borraColorImagen($productos_id);
$this->borraPreciosRangos($productos_id);
$sql = "DELETE FROM productos_detalles WHERE productos_id=".$productos_id;
$res = $this->con->ejecutar_consulta($sql);
$sql = "DELETE FROM productos WHERE productos_id=".$productos_id;
$res = $this->con->ejecutar_consulta($sql);
$sql = "DELETE FROM productos_categorias WHERE productos_id=".$productos_id;
$res = $this->con->ejecutar_consulta($sql);
$sql = "DELETE FROM productos_ofertas WHERE productos_id=".$productos_id;
$res = $this->con->ejecutar_consulta($sql);
//Si borramos un padre debemos asignarle ese roll a algunos de sus hijos
//en el caso de que s�lo tenga uno quedar� al mismo nivel que el resto de productos
$sql = "SELECT productos_id FROM productos WHERE productos_id_padre=".$productos_id." ORDER BY productos_fecha_alta";
$res = $this->con->ejecutar_consulta($sql);
$rs = $this->con->consultar();
if($rs){
//hacemos padre al producto hijo
$sql = "UPDATE productos SET productos_id_padre=NULL WHERE productos_id=".$rs['productos_id'];
$res = $this->con->ejecutar_consulta($sql);
//hacemos hijos a todos los productos del antiguo padre al nuevo...
$sql = "UPDATE productos SET productos_id_padre=".$rs['productos_id']." WHERE productos_id_padre=".$productos_id;
$res = $this->con->ejecutar_consulta($sql);
}
}
function actualizar($a_datos) {
/*
echo "";
print_r($a_datos);
echo "
";
die();
*/
$imagen = $_FILES['productos_imagen'];
$nombre_definitivo = "";
$sql = "UPDATE productos SET ";
$sql.= "productos_referencia=".($a_datos['productos_referencia']!=""?"'".$a_datos['productos_referencia']."'":"NULL").", ";
$sql.= "productos_modelo=".($a_datos['productos_modelo']!=""?"'".$a_datos['productos_modelo']."'":"NULL").", ";
$sql.= "productos_cantidad=".($a_datos['productos_cantidad']!=""?$a_datos['productos_cantidad']:"NULL").", ";
$sql.= "productos_precio=".($a_datos['productos_precio']!=""?"'".str_replace(",",".",$a_datos['productos_precio'])."'":"NULL").", ";
$sql.= "productos_precio_anterior=".($a_datos['productos_precio_anterior']!=""?str_replace(",",".",$a_datos['productos_precio_anterior']):"NULL").", ";
$sql.= "productos_iva=".(($a_datos['productos_iva']!="")?$a_datos['productos_iva']:_IVA).", ";
$sql.= "productos_fecha_modificacion=NOW(), ";
$sql.= "productos_fecha_disponibilidad=".($a_datos['productos_fecha_disponibilidad']!=""?"'".$this->con->getFechaMysql($a_datos['productos_fecha_disponibilidad'])."'":"NULL").", ";
$sql.= "productos_fecha_caducidad=".($a_datos['productos_fecha_caducidad']!=""?"'".$this->con->getFechaMysql($a_datos['productos_fecha_caducidad'])."'":"NULL").", ";
$sql.= "productos_peso=".($a_datos['productos_peso']!=""?"'".$a_datos['productos_peso']."'":"NULL").", ";
$sql.= "productos_ancho=".($a_datos['productos_ancho']!=""?"'".$a_datos['productos_ancho']."'":"NULL").", ";
$sql.= "productos_alto=".($a_datos['productos_alto']!=""?"'".$a_datos['productos_alto']."'":"NULL").", ";
$sql.= "productos_fondo=".($a_datos['productos_fondo']!=""?"'".$a_datos['productos_fondo']."'":"NULL").", ";
$sql.= "productos_diametro=".($a_datos['productos_diametro']!=""?"'".$a_datos['productos_diametro']."'":"NULL").", ";
$sql.= "productos_estados_id=".($a_datos['productos_estados_id']!=""?$a_datos['productos_estados_id']:"NULL").", ";
$sql.= "productos_fabricantes_id=".($a_datos['productos_fabricantes_id']!=""?$a_datos['productos_fabricantes_id']:"NULL").", ";
$sql.= "productos_familias_tipos_id=".($a_datos['productos_familias_tipos_id']!=""?$a_datos['productos_familias_tipos_id']:"NULL").", ";
$sql.= "productos_activo="."'".($a_datos['productos_activo'])."', ";
$sql.= "productos_color_rgb=".($a_datos['productos_color_rgb']!=""?"'".$a_datos['productos_color_rgb']."'":"NULL").", ";
$sql.= "productos_materiales_id=".($a_datos['productos_materiales_id']!=""?$a_datos['productos_materiales_id']:"NULL")." ";
//$sql.= "productos_orden=".($a_datos['productos_orden']!=""?$a_datos['productos_orden']:"NULL")." ";
$sql.= "WHERE productos_id=".$a_datos['frm_id'];
//echo $sql."
";
$res = $this->con->ejecutar_consulta($sql);
if(!$res){
$this->err = true;
$this->err_descripcion = "Error al ejecutar la SQL de Alta de Categor�as: ".$sql;
}else{
//Insertamos los textos para cada idioma
//campos:
//productos_nombre
//productos_descripcion
//productos_url
//productos_visitas
$sql = "DELETE FROM productos_detalles WHERE productos_id=".$a_datos['frm_id'];
//echo $sql."
";
$res = $this->con->ejecutar_consulta($sql);
foreach($a_datos as $k=>$v){
if(strstr($k, "productos_nombre") !== false){
$a_dat = explode("_", $k);
$idiomas_id = $a_dat[2];
$productos_nombre = ($a_datos['productos_nombre_'.$idiomas_id]!=""?"'".$a_datos['productos_nombre_'.$idiomas_id]."'":"NULL");
$productos_color = ($a_datos['productos_color_'.$idiomas_id]!=""?"'".$a_datos['productos_color_'.$idiomas_id]."'":"NULL");
$productos_descripcion = ($a_datos['productos_descripcion_'.$idiomas_id]!=""?"'".$a_datos['productos_descripcion_'.$idiomas_id]."'":"NULL");
$productos_observaciones = ($a_datos['productos_observaciones_'.$idiomas_id]!=""?"'".$a_datos['productos_observaciones_'.$idiomas_id]."'":"NULL");
$productos_url = ($a_datos['productos_url_'.$idiomas_id]!=""?"'".$a_datos['productos_url_'.$idiomas_id]."'":"NULL");
$productos_visitas = "NULL";
$sql = "INSERT INTO productos_detalles(productos_id, idiomas_id, productos_nombre, productos_color, productos_descripcion, productos_observaciones, productos_url, productos_visitas) VALUES ";
$sql.= "(".$a_datos['frm_id'].",".$idiomas_id.",".$productos_nombre.",".$productos_color.",".$productos_descripcion.",".$productos_observaciones.",".$productos_url.",".$productos_visitas.")";
//echo $sql."
";
$res = $this->con->ejecutar_consulta($sql);
}
}
//////////////////////////////////////////////////////////////////////////
//Hay precios por rango?
$this->insertaPreciosRangos($a_datos['frm_id'], $a_datos['precio_rango'], $a_datos['precio_precio']);
//////////////////////////////////////////////////////////////////////////
//Si es un hijo no puede cambiar la categor�a
$sql = "SELECT IFNULL(productos_id_padre,'') as productos_id_padre FROM productos WHERE productos_id=".$a_datos['frm_id'];
//echo $sql."
";
$res = $this->con->ejecutar_consulta($sql);
$rs = $this->con->consultar();
if($rs){
if($rs['productos_id_padre']==""){
//Alta del producto en la categoría
$sql = "DELETE FROM productos_categorias WHERE productos_id=".$a_datos['frm_id'];
//echo $sql."
";
$res = $this->con->ejecutar_consulta($sql);
//Hijos
$sql = "DELETE FROM productos_categorias WHERE productos_id IN (SELECT productos_id FROM productos WHERE productos_id_padre=".$a_datos['frm_id'].") ";
//echo $sql."
";
$res = $this->con->ejecutar_consulta($sql);
foreach($a_datos['categorias_id'] as $k1=>$v1){
//Alta de categoría para el padre
$sql = "INSERT INTO productos_categorias (productos_id, categorias_id)
VALUES (".$a_datos['frm_id'].",".$v1.")";
//echo $sql."
";
$res = $this->con->ejecutar_consulta($sql);
//¿Tiene hijos?
$sql = "SELECT productos_id FROM productos WHERE productos_id_padre=".$a_datos['frm_id'];
//echo $sql."
";
$res = $this->con->ejecutar_consulta($sql);
$rs = $this->con->result_array_asoc();
if($rs){
foreach($rs as $k2=>$v2){
//Alta de categorías para cada hijo
$sql = "INSERT INTO productos_categorias (productos_id, categorias_id)
VALUES (".$v2['productos_id'].",".$v1.")";
//echo $sql."
";
$res = $this->con->ejecutar_consulta($sql);
}
}
}
}
}
//Insertamos los atributos para cada idioma
//los datos llegal del tipo
//CONCAT('atributo_',fa.familias_atributos_id,'_',fai.idiomas_id)
$sql = "DELETE FROM productos_atributos WHERE productos_id=".$a_datos['frm_id']." AND valor!='Array'";
$res = $this->con->ejecutar_consulta($sql);
//Se desea subir un atributo de tipo imagen?
foreach($_FILES as $key=>$val){
if( (strstr($key,"atributo_")!==false) && (strstr($key,"_IMG")!==false ) ) {
if(is_array($_FILES)){
while(list($key,$value) = each($_FILES[$key]['name'])) {
if(!empty($value)){
$att_img_name = $_FILES[$key]['name'][$key];
$att_img_type = $_FILES[$key]['type'][$key];
$att_img_tmp_name = $_FILES[$key]['tmp_name'][$key];
$extension = $this->getExtension($att_img_type);
$nombre_definitivo = md5($this->lastID."_".$att_img_name)."_".date("YmdGis").$extension;
if(!is_dir($this->path_files)){
mkdir($this->path_files);
chmod($this->path_files,0777);
}
if(!move_uploaded_file($att_img_tmp_name, $this->path_files.'/'.$nombre_definitivo)){
chmod($this->path_files.'/'.$nombre_definitivo,0777);
$this->err = true;
$this->err_descripcion = "Error al subir el archivo durante la actualizaci�n";
}else{
$a_dat = explode("_", $key);
$productos_id = $a_datos['frm_id'];
$familias_atributos_id = $a_dat[1];
$idiomas_id = $a_dat[2];
$valor = (strlen($v)>255)?"NULL":"'".$v."'";
$valor_text = (strlen($v)>255)?"'".$v."'":"NULL";
$sql = "INSERT INTO productos_atributos(productos_id, familias_atributos_id, idiomas_id, valor, valor_text) VALUES ";
$sql.= "(".$productos_id.",".$familias_atributos_id.",".$idiomas_id.",".$valor.",".$valor_text.")";
$res = $this->con->ejecutar_consulta($sql);
}
}
}
}
}
}
////////////////////////////////////////////////////////////////////
//Borramos los datos previos de atributos y posibles valores de �stos
$sql2 = "DELETE FROM productos_atributos_valores WHERE productos_atributos_id IN (SELECT productos_atributos_id FROM productos_atributos WHERE valor='Array' AND productos_id=".$a_datos['frm_id'].")";
$res2 = $this->con->ejecutar_consulta($sql2);
$sql2 = "DELETE FROM productos_atributos WHERE valor='Array' AND productos_id=".$a_datos['frm_id'];
$res2 = $this->con->ejecutar_consulta($sql2);
////////////////////////////////////////////////////////////////////
foreach($a_datos as $k=>$v){
if(strstr($k, "atributo_")!== false){
$a_dat = explode("_", $k);
$productos_id = $a_datos['frm_id'];
$familias_atributos_id = $a_dat[1];
$idiomas_id = $a_dat[2];
$valor = (strlen($v)>255)?"NULL":"'".$v."'";
$valor_text = (strlen($v)>255)?"'".$v."'":"NULL";
$sql = "INSERT INTO productos_atributos(productos_id, familias_atributos_id, idiomas_id, valor, valor_text) VALUES ";
$sql.= "(".$productos_id.",".$familias_atributos_id.",".$idiomas_id.",".$valor.",".$valor_text.")";
$res = $this->con->ejecutar_consulta($sql);
//echo "
".$sql."
";
$productos_atributos_id = $this->con->lastID;
//Si el atributo es de tipo "conjunto de valores" (SELECT o SELECT M�LTIPLE)
if(is_array($v)){
foreach($v as $x=>$y){
$stock = ($a_datos['stock_'.$familias_atributos_id.'_'.$idiomas_id.'_SELECT'][$x]!='')?$a_datos['stock_'.$familias_atributos_id.'_'.$idiomas_id.'_SELECT'][$x]:$a_datos['stock_'.$familias_atributos_id.'_'._IDIOMAS_ID.'_SELECT'][$x];
if($y!=""){
//Metemos los valores en productos_atributos_valores
$sql = "INSERT INTO productos_atributos_valores(productos_atributos_id, productos_atributos_valores_valor,productos_atributos_valores_stock) VALUES ";
$sql.= "(".$productos_atributos_id.",'".$y."','".$stock."')";
$res = $this->con->ejecutar_consulta($sql);
//echo "
".$sql."
";
}
}
}
}
}
}
//�Hay alguna imagen que subir? (s�lo se soportan JPEG y GIF)
if(isset($_FILES)) {
while(list($key,$value) = @each($_FILES['productos_imagen']['name'])) {
if(!empty($value)){
$nombre_archivo = $_FILES['productos_imagen']['name'][$key];
$tipo_archivo = $_FILES['productos_imagen']['type'][$key];
$tamano_archivo = $_FILES['productos_imagen']['size'][$key];
$tmp_archivo = $_FILES['productos_imagen']['tmp_name'][$key];
$extension = $this->getExtension($tipo_archivo);
$nombre_definitivo = md5($a_datos['frm_id']."_".$nombre_archivo)."_".date("YmdGis").$extension;
if(!is_dir($this->path_files)){
mkdir($this->path_files);
chmod($this->path_files,0777);
}
if(!move_uploaded_file($tmp_archivo, $this->path_files.'/'.$nombre_definitivo)){
chmod($this->path_files.'/'.$nombre_definitivo,0777);
$this->err = true;
$this->err_descripcion = "Error al subir el archivo durante el alta";
}else{
$img_data = getimagesize($this->path_files.'/'.$nombre_definitivo);
$sql = "INSERT INTO productos_galerias (productos_id, productos_imagen, productos_imagen_ancho, productos_imagen_alto, productos_imagen_visitas, productos_imagen_kb, productos_imagen_type) VALUES ";
$sql.= "(".$a_datos['frm_id'].",'".$nombre_definitivo."',".$img_data[0].",".$img_data[1].",NULL,".$tamano_archivo.",'".$tipo_archivo."')";
$res = $this->con->ejecutar_consulta($sql);
}
}
}
}
//Imagen Color Textura???
if(isset($_FILES)) {
if(!empty($_FILES['productos_color_imagen']['name'])){
$nombre_archivo = $_FILES['productos_color_imagen']['name'];
$tipo_archivo = $_FILES['productos_color_imagen']['type'];
$tamano_archivo = $_FILES['productos_color_imagen']['size'];
$tmp_archivo = $_FILES['productos_color_imagen']['tmp_name'];
$extension = $this->getExtension($tipo_archivo);
$nombre_definitivo = $a_datos['frm_id']."_".$nombre_archivo;
if(!is_dir($this->path_files)){
mkdir($this->path_files);
chmod($this->path_files,0777);
}
if(!move_uploaded_file($tmp_archivo, $this->path_files_texturas.'/'.$nombre_definitivo)){
chmod($this->path_files_texturas.'/'.$nombre_definitivo,0777);
$this->err = true;
$this->err_descripcion = "Error al subir el archivo durante el alta";
}else{
$sql = "UPDATE productos SET productos_color_imagen = '".$nombre_definitivo."'
WHERE productos_id=".$a_datos['frm_id'];
$res = $this->con->ejecutar_consulta($sql);
}
}
}
}
function getNumImagenes($id){
$sql = "SELECT COUNT(*) as num FROM productos_galerias WHERE productos_id=".$id;
$res = $this->con->ejecutar_consulta($sql);
$rs = $this->con->consultar();
return $rs['num'];
}
function borraImagen($id) {
$sql = "SELECT productos_imagen FROM productos_galerias WHERE productos_galerias_id=".$id;
$res = $this->con->ejecutar_consulta($sql);
$rs = $this->con->consultar();
if($rs) {
if($rs['productos_imagen']!=""){
@unlink($this->path_files."/".$rs['productos_imagen']);
$sql = "DELETE FROM productos_galerias WHERE productos_galerias_id=".$id;
$res = $this->con->ejecutar_consulta($sql);
}
}
}
function borraColorImagen($id) {
$sql = "SELECT productos_color_imagen FROM productos WHERE productos_id=".$id;
//echo $sql."
";
$res = $this->con->ejecutar_consulta($sql);
$rs = $this->con->consultar();
if($rs) {
if($rs['productos_color_imagen']!=""){
unlink($this->path_files_texturas."/".$rs['productos_color_imagen']);
$sql = "UPDATE productos SET productos_color_imagen = NULL WHERE productos_id=".$id;
//echo $sql."
";
$res = $this->con->ejecutar_consulta($sql);
}
}
}
function borraGaleria($productos_id) {
$sql = "SELECT productos_galerias_id, productos_imagen FROM productos_galerias WHERE productos_id=".$productos_id;
$res = $this->con->ejecutar_consulta($sql);
$rs = $this->con->result_array_asoc();
if($rs){
foreach($rs as $k=>$v){
$this->borraImagen($v['productos_galerias_id']);
}
}
}
function borraFicheros($productos_id) {
$sql = "SELECT productos_ficheros_disco FROM productos_ficheros WHERE productos_id=".$productos_id;
$res = $this->con->ejecutar_consulta($sql);
$rs = $this->con->result_array_asoc();
if($rs){
foreach($rs as $k=>$v){
@unlink($this->path_files."/".$rs['productos_ficheros_disco']);
}
}
$sql = "DELETE FROM productos_ficheros WHERE productos_id=".$productos_id;
$res = $this->con->ejecutar_consulta($sql);
$sql = "DELETE FROM productos_ficheros_detalle WHERE productos_id=".$productos_id;
$res = $this->con->ejecutar_consulta($sql);
}
function getDatos($productos_id, $idiomas_id=""){
if($idiomas_id=="")
$idiomas_id = $this->getIdiomaDefault();
$sql = "SELECT p.productos_id, p.productos_materiales_id, pc.categorias_id,
cd.categorias_nombre, pd.productos_nombre, pd.productos_descripcion, pd.productos_observaciones, pd.productos_url,
p.productos_referencia, p.productos_modelo, p.productos_cantidad, p.productos_precio,
p.productos_precio_anterior, DATE_FORMAT(p.productos_fecha_alta, '%d/%m/%Y') as productos_fecha_alta,
DATE_FORMAT(p.productos_fecha_modificacion, '%d/%m/%Y') as productos_fecha_modificacion,
DATE_FORMAT(p.productos_fecha_disponibilidad, '%d/%m/%Y') as productos_fecha_disponibilidad,
DATE_FORMAT(p.productos_fecha_caducidad, '%d/%m/%Y') as productos_fecha_caducidad, p.productos_peso,
p.productos_ancho, p.productos_alto, p.productos_fondo, p.productos_diametro, p.productos_estados_id,
p.productos_fabricantes_id, p.productos_familias_tipos_id, p.productos_activo, p.productos_id_padre,
p.productos_color_rgb, pd.productos_color, p.productos_color_imagen, p.productos_iva
FROM productos p
INNER JOIN productos_categorias pc ON p.productos_id=pc.productos_id
INNER JOIN categorias_detalles cd ON pc.categorias_id=cd.categorias_id AND cd.idiomas_id=".$idiomas_id."
INNER JOIN productos_detalles pd ON p.productos_id=pd.productos_id
WHERE p.productos_id=".$productos_id;
//echo $sql;
$this->con->ejecutar_consulta($sql);
$rs = $this->con->consultar();
//echo $sql;
return ($rs);
}
function getNextID($productos_id = false, $productos_orden = false, $filtrado_categoria = true) {
$sql = "SELECT p.productos_id FROM productos p ";
$sql.= "JOIN productos_categorias pc ON pc.productos_id=p.productos_id ";
$sql.= "WHERE p.productos_orden > ".$productos_orden." ";
if($filtrado_categoria) {
$rs = $this->getDatos($productos_id);
$sql.= "AND pc.categorias_id=".$rs['categorias_id']." ";
}
$sql.= "ORDER BY p.productos_orden ASC LIMIT 1 ";
//echo $sql;
$this->con->ejecutar_consulta($sql);
$rs = $this->con->consultar();
if(!$rs)
return null;
return $rs['productos_id'];
}
function getPrevID($productos_id = false, $productos_orden = false, $filtrado_categoria = true) {
$sql = "SELECT p.productos_id FROM productos p ";
$sql.= "JOIN productos_categorias pc ON pc.productos_id=p.productos_id ";
$sql.= "WHERE p.productos_orden < ".$productos_orden." ";
if($filtrado_categoria) {
$rs = $this->getDatos($productos_id);
$sql.= "AND pc.categorias_id=".$rs['categorias_id']." ";
}
$sql.= "ORDER BY p.productos_orden DESC LIMIT 1";
$this->con->ejecutar_consulta($sql);
$rs = $this->con->consultar();
if(!$rs)
return null;
return $rs['productos_id'];
}
function getDetalles($productos_id, $idiomas_id){
$sql = "SELECT productos_nombre, productos_descripcion, productos_observaciones, productos_url, productos_color FROM productos_detalles WHERE productos_id=".$productos_id." AND idiomas_id=".$idiomas_id;
$this->con->ejecutar_consulta($sql);
$rs = $this->con->consultar();
return ($rs);
}
function getDatosRs($categorias_id) {
$sql = "SELECT o.idOferta, o.imagen, DATE_FORMAT(o.fechaInicio, '%d/%m/%Y') as fechaInicio, DATE_FORMAT(o.fechaFin, '%d/%m/%Y') as fechaFin, DATE_FORMAT(o.fechaAlta, '%d/%m/%Y') as fechaAlta, o.activo FROM ofertas o WHERE o.idOferta=".$idOferta;
$this->con->ejecutar_consulta($sql);
$rs = $this->con->consultar();
return $rs;
}
function getImagenesRs($id){
$sql = "SELECT productos_galerias_id, productos_id, productos_imagen, productos_imagen_ancho, productos_imagen_alto, productos_imagen_visitas, productos_imagen_kb, productos_imagen_type FROM productos_galerias WHERE productos_id=".$id." ORDER BY productos_galerias_id";
$res = $this->con->ejecutar_consulta($sql);
$rs = $this->con->result_array_asoc();
return $rs;
}
function getTextosOferta($idOferta, $idIdioma, &$descripcion_breve, &$texto) {
$sql = "SELECT id, idIdioma, idOferta, descripcion_breve, texto FROM ofertas_idiomas WHERE idOferta=".$idOferta." AND idIdioma=".$idIdioma;
$this->con->ejecutar_consulta($sql);
$rs = $this->con->consultar();
if($rs){
$descripcion_breve = $rs['descripcion_breve'];
$texto = $rs['texto'];
}
}
function getDatosIdioma($categorias_id, $idiomas_id) {
$sql = "SELECT c.categorias_id, c.categorias_id_padre, c.categorias_ordenacion, c.categorias_imagen, cd.categorias_nombre, cd.categorias_descripcion, DATE_FORMAT(c.categorias_fecha_alta, '%d/%m/%Y') as categorias_fecha_alta, DATE_FORMAT(c.categorias_fecha_modificacion, '%d/%m/%Y') as categorias_fecha_modificacion, c.categorias_activo FROM categorias c INNER JOIN categorias_detalles cd ON c.categorias_id=cd.categorias_id WHERE c.categorias_id=".$categorias_id." AND cd.idiomas_id=".$idiomas_id;
$this->con->ejecutar_consulta($sql);
$rs = $this->con->consultar();
if($rs) {
$this->categorias_id = $categorias_id;
$this->categorias_id_padre = $rs['categorias_id_padre'];
$this->categorias_ordenacion = $rs['categorias_ordenacion'];
$this->categorias_imagen = $rs['categorias_imagen'];
$this->categorias_fecha_alta = $rs['categorias_fecha_alta'];
$this->categorias_fecha_modificacion = $rs['categorias_fecha_modificacion'];
$this->categorias_activo = $rs['categorias_activo'];
$this->categorias_nombre = $rs['categorias_nombre'];
$this->categorias_descripcion = $rs['categorias_descripcion'];
}
}
function getCategoriasActivasIdioma($idiomas_id){
$sql = "SELECT c.categorias_id, c.categorias_id_padre, c.categorias_ordenacion, c.categorias_imagen, cd.categorias_nombre, cd.categorias_descripcion, DATE_FORMAT(c.categorias_fecha_alta, '%d/%m/%Y') as categorias_fecha_alta, DATE_FORMAT(c.categorias_fecha_modificacion, '%d/%m/%Y') as categorias_fecha_modificacion, c.categorias_activo FROM categorias c INNER JOIN categorias_detalles cd ON c.categorias_id=cd.categorias_id WHERE c.activo='S' AND cd.idiomas_id=".$idiomas_id;
$this->con->ejecutar_consulta($sql);
$rs = $this->con->result_array_asoc();
return ($rs);
}
function getDatosCategoriaIdioma($categorias_id, $idiomas_id){
$sql = "SELECT c.categorias_id, c.categorias_id_padre, c.categorias_ordenacion, c.categorias_imagen, cd.categorias_nombre, cd.categorias_descripcion, DATE_FORMAT(c.categorias_fecha_alta, '%d/%m/%Y') as categorias_fecha_alta, DATE_FORMAT(c.categorias_fecha_modificacion, '%d/%m/%Y') as categorias_fecha_modificacion, c.categorias_activo FROM categorias c ";
$sql.= "INNER JOIN categorias_detalles cd ON c.categorias_id=cd.categorias_id ";
$sql.= "INNER JOIN idiomas i ON cd.idiomas_id=i.idiomas_id ";
$sql.= "WHERE c.categorias_id=".$categorias_id." AND i.idiomas_id=".$idiomas_id;
$this->con->ejecutar_consulta($sql);
$rs = $this->con->consultar();
return ($rs);
}
function getCategoriasProducto($productos_id){
$ret = array();
$sql = "SELECT categorias_id FROM productos_categorias WHERE productos_id=".$productos_id;
$res = $this->con->ejecutar_consulta($sql);
$rs = $this->con->result_array_asoc();
if($rs) {
foreach($rs as $k=>$v){
$ret[$k] = $v['categorias_id'];
}
}
return $ret;
}
function getOptionsComboCategorias($prefix="",$html_sub_options=""){
$sql = "SELECT c.categorias_id, c.categorias_id_padre, cd.categorias_nombre FROM categorias c INNER JOIN categorias_detalles cd ON c.categorias_id=cd.categorias_id INNER JOIN idiomas i ON cd.idiomas_id=i.idiomas_id WHERE i.idiomas_default='S' AND c.categorias_id_padre IS NULL order by c.categorias_ordenacion";
$res = $this->con->ejecutar_consulta($sql);
$rs = $this->con->result_array_asoc();
if($rs) {
$cont=0;
foreach($rs as $key=>$val){
if($id_excluir!=$val['categorias_id']){
$html.= "";
$html.= $this->getSubCategorias($val['categorias_id'],$prefix,$html_sub_options);
}
}
}
return $html;
}
function getSubCategorias($categorias_id,$prefix = "", $html_sub_options = ""){
$sql = "SELECT c.categorias_id, c.categorias_id_padre, cd.categorias_nombre FROM categorias c INNER JOIN categorias_detalles cd ON c.categorias_id=cd.categorias_id INNER JOIN idiomas i ON cd.idiomas_id=i.idiomas_id WHERE i.idiomas_default='S' AND c.categorias_id_padre=".$categorias_id." order by c.categorias_ordenacion";
$res = $this->con->ejecutar_consulta($sql);
$rs = $this->con->result_array_asoc();
if($rs) {
$cont=0;
foreach($rs as $key=>$val){
if($id_excluir!=$val['categorias_id']){
$html.= "";
$html.= $this->getSubCategoriasNivel3($val['categorias_id'],$prefix,$html_sub_options.$html_sub_options);
}
}
}
return $html;
}
function getSubCategoriasNivel3($categorias_id,$prefix = "", $html_sub_options = ""){
$sql = "SELECT c.categorias_id, c.categorias_id_padre, cd.categorias_nombre FROM categorias c INNER JOIN categorias_detalles cd ON c.categorias_id=cd.categorias_id INNER JOIN idiomas i ON cd.idiomas_id=i.idiomas_id WHERE i.idiomas_default='S' AND c.categorias_id_padre=".$categorias_id." order by c.categorias_ordenacion";
$res = $this->con->ejecutar_consulta($sql);
$rs = $this->con->result_array_asoc();
if($rs) {
$cont=0;
foreach($rs as $key=>$val){
if($id_excluir!=$val['categorias_id']){
$html.= "";
}
}
}
return $html;
}
function getComboCategorias($nombre_combo, $prefix="", $id_excluir=""){
$sql = "SELECT c.categorias_id, c.categorias_id_padre, cd.categorias_nombre FROM categorias c INNER JOIN categorias_detalles cd ON c.categorias_id=cd.categorias_id INNER JOIN idiomas i ON cd.idiomas_id=i.idiomas_id WHERE i.idiomas_default='S' AND c.categorias_id_padre IS NULL order by c.categorias_ordenacion";
$res = $this->con->ejecutar_consulta($sql);
$rs = $this->con->result_array_asoc();
$html = "";
return $html;
}
function getIdiomaDefault(){
$sql = "SELECT idiomas_id FROM idiomas WHERE idiomas_activo='S' AND idiomas_default='S'";
$res = $this->con->ejecutar_consulta($sql);
$rs = $this->con->consultar();
return $rs['idiomas_id'];
}
function getIdiomasNoDefault(){
$sql = "SELECT idiomas_id, idiomas_nombre, idiomas_imagen FROM idiomas WHERE idiomas_default='N'";
$res = $this->con->ejecutar_consulta($sql);
$rs = $this->con->result_array_asoc();
return $rs;
}
function getIdiomas(){
$sql = "SELECT idiomas_id, idiomas_nombre, idiomas_imagen FROM idiomas ORDER BY idiomas_default DESC";
$res = $this->con->ejecutar_consulta($sql);
$rs = $this->con->result_array_asoc();
return $rs;
}
function getCamposFamiliasTipoByIdProducto($id, $id_idioma){
$sql = "SELECT CONCAT('atributo_',fa.familias_atributos_id,'_',fai.idiomas_id) as atributo, fai.idiomas_id, fa.familias_atributos_id, p.productos_familias_tipos_id, fai.familias_atributos_nombre, fat.familias_atributos_tipos_tipo FROM productos p ";
$sql.= "INNER JOIN familias_atributos fa ON p.productos_familias_tipos_id = fa.familias_tipos_id ";
$sql.= "INNER JOIN familias_atributos_idiomas fai ON fa.familias_atributos_id=fai.familias_atributos_id ";
$sql.= "INNER JOIN idiomas i ON fai.idiomas_id=i.idiomas_id AND i.idiomas_id=".$id_idioma." ";
$sql.= "INNER JOIN familias_atributos_tipos fat ON fa.familias_atributos_tipos_id=fat.familias_atributos_tipos_id ";
$sql.= "AND p.productos_id = ".$id." ORDER BY fa.familias_atributos_ordenacion";
$res = $this->con->ejecutar_consulta($sql);
$rs = $this->con->result_array_asoc();
return $rs;
}
function getCamposFamiliasTipoByIdTipo($idTipo, $id_idioma){
$sql = "SELECT fa.familias_atributos_tipos_stock, i.idiomas_imagen, fa.familias_atributos_tipos_id, CONCAT('atributo_',fa.familias_atributos_id,'_',fai.idiomas_id) as atributo, fai.idiomas_id, fa.familias_atributos_id, fai.familias_atributos_nombre, fat.familias_atributos_tipos_tipo, fa.familias_atributos_icono
FROM familias_atributos fa ";
$sql.= "INNER JOIN familias_atributos_idiomas fai ON fa.familias_atributos_id=fai.familias_atributos_id ";
$sql.= "INNER JOIN idiomas i ON fai.idiomas_id=i.idiomas_id AND i.idiomas_id=".$id_idioma." ";
$sql.= "INNER JOIN familias_atributos_tipos fat ON fa.familias_atributos_tipos_id=fat.familias_atributos_tipos_id ";
$sql.= "AND fa.familias_tipos_id = ".$idTipo." ORDER BY fa.familias_atributos_ordenacion";
$res = $this->con->ejecutar_consulta($sql);
$rs = $this->con->result_array_asoc();
return $rs;
}
function getExtension($tipo_archivo) {
if(($tipo_archivo=="image/gif") || ($tipo_archivo=="image/pjpeg") || ($tipo_archivo=="image/jpeg") ){
switch($tipo_archivo){
case "image/gif":
$extension = ".gif";
break;
case "image/pjpeg":
$extension = ".jpg";
break;
case "image/jpeg":
$extension = ".jpg";
break;
default:
$extension = ".jpg";
}
}
return $extension;
}
function insertaPreciosRangos($productos_id, $arr_rangos, $arr_precios){
$sql = "DELETE FROM productos_precios_rangos WHERE productos_id = ".$productos_id;
$res = $this->con->ejecutar_consulta($sql);
$cont = 0;
if(is_array($arr_rangos)){
foreach($arr_rangos as $key=>$val){
if($val!=""){
$sql = "INSERT INTO productos_precios_rangos (productos_id, productos_precios_rangos, productos_precios_rangos_precio) VALUES (";
$sql.= $productos_id.", ".$val.", '".$arr_precios[$cont]."') ";
$res = $this->con->ejecutar_consulta($sql);
}
$cont+=1;
}
}
}
function borraPreciosRangos($productos_id){
$sql = "DELETE FROM productos_precios_rangos WHERE productos_id = ".$productos_id;
$res = $this->con->ejecutar_consulta($sql);
}
function getValueAtributo($productos_id, $idiomas_id, $productos_atributos_id){
$sql = "SELECT valor, valor_text FROM productos_atributos WHERE productos_id = ".$productos_id." AND idiomas_id=".$idiomas_id." AND productos_atributos_id=".$productos_atributos_id;
$res = $this->con->ejecutar_consulta($sql);
$rs = $this->con->consultar();
$res = "";
if($rs){
$res = ($rs['valor']!="")?$rs['valor']:$rs['valor_text'];
}
return $res;
}
function existeReferencia($ref){
$sql = "SELECT 1 FROM productos WHERE productos_referencia='".$ref."'";
$res = $this->con->ejecutar_consulta($sql);
$rs = $this->con->consultar();
if($rs){
return true;
}else{
return false;
}
}
function getListado($categorias_id, $fabricantes_id, $idiomas_id){
$sql = "SELECT p.productos_id, p.productos_materiales_id, pc.categorias_id, cd.categorias_nombre, pd.productos_nombre, pd.productos_descripcion, pd.productos_observaciones, pd.productos_url, p.productos_referencia, p.productos_modelo, p.productos_cantidad, p.productos_precio, p.productos_precio_anterior, DATE_FORMAT(p.productos_fecha_alta, '%d/%m/%Y') as productos_fecha_alta, DATE_FORMAT(p.productos_fecha_modificacion, '%d/%m/%Y') as productos_fecha_modificacion, DATE_FORMAT(p.productos_fecha_disponibilidad, '%d/%m/%Y') as productos_fecha_disponibilidad, DATE_FORMAT(p.productos_fecha_caducidad, '%d/%m/%Y') as productos_fecha_caducidad, p.productos_peso, p.productos_ancho, p.productos_alto, p.productos_fondo, p.productos_diametro, p.productos_estados_id, p.productos_fabricantes_id, p.productos_familias_tipos_id, p.productos_activo, p.productos_id_padre, p.productos_iva FROM productos p INNER JOIN productos_categorias pc ON p.productos_id=pc.productos_id INNER JOIN categorias_detalles cd ON pc.categorias_id=cd.categorias_id AND cd.idiomas_id=".$idiomas_id." INNER JOIN productos_detalles pd ON p.productos_id=pd.productos_id ";
if($categorias_id!=""||$fabricantes_id!=""){
$sql.= "WHERE 1 ";
$sql.= ($categorias_id!="")?" AND pc.categorias_id=".$categorias_id:"";
$sql.= ($fabricantes_id!="")?" AND p.productos_fabricantes_id=".$fabricantes_id:"";
}
$this->con->ejecutar_consulta($sql);
$rs = $this->con->result_array_asoc();
return $rs;
}
}
?>
Output has already been sent to the browser at /var/www/vhosts/tempobuy.com/httpdocs/adshop_core/includes/productos.class.php:1042.
Please make sure the command $xajax->processRequest() is placed before this.