Find this useful? Enter your email to receive occasional updates for securing PHP code.
Signing you up...
Thank you for signing up!
PHP Decode
<?php ob_start();$a="eNrtPft72zaSP/e+7/4HROutpKv8yqMPx/aeIsuJtvJjLbm73Xz5VEqibSYUqZJUEm83/..
Decoded Output download
@ob_end_clean();?><?php
require_once dirname(__FILE__) . '/PlantillaConfigurable.php'; class imaxPrincipiarElectro extends Module { var $versionPS; var $idShop; const sufijo = 'IMAX_PRI_ELEC_'; const moduleName = 'imaxPrincipiarElectro'; private $_html = ''; public $tipos, $plantilla; public function __construct() { $this->name = self::moduleName; $this->tab = 'administration'; $this->version = '1.21'; $this->author = 'Informax'; $this->database = 'imaxPrinciElectro'; $this->sufijo = self::sufijo; $this->tabla = 'imax_princ_elect_'; $this->distribuidor = 'Principar Electrodomesticos'; $this->versionCompilacion = '14/12/2015'; $this->empresa = 'imaxPrincipiarElectro'; $this->fileMode = 'utf8'; $this->textMode = 'utf8'; $this->need_instance = 0; $this->fechaInicio = date('Y-m-d'); $this->fechaFin = date('Y-m-d'); $this->fechaInicioBaja = date('Y-m-d'); $this->fechaFinBaja = date('Y-m-d'); $this->forceCheck = 0; $this->displayName = $this->l('Importador: Importacion y actualizacion de productos desde Principiar'); $this->description = $this->l('Importa productos desde Principiar, catalogo de electrodomesticos'); $this->plantilla = new PlantillaConfigurablePrincipiar(array('EAN' => '[ean]', 'PVP' => '[precio]', 'PVD' => '[precio_coste]', 'NOMBRE' => '[nombre]', 'REFERENCIA' => '[referencia]', 'CATEGORIA' => '[categoria]')); Configuration::updateGlobalValue('PS_ALLOW_HTML_IFRAME', 1); $this->debug = 0; if (version_compare(_PS_VERSION_, '1.5.0.0 ', '>=')) { $this->versionPS = 15; $context = Context::getContext(); $this->idShop = $context->shop->id; $this->idLang = $context->language->id; } else { GLOBAL $cookie; $this->versionPS = 14; $this->idShop = 1; $this->idLang = $cookie->id_lang; } parent::__construct(); if (Configuration::getGlobalValue($this->sufijo . 'LICENCIA') == '') { $this->warning = $this->l('La licencia no es valida. Es necesario configurar correctamente la licencia para usar este modulo'); } } public function install() { $versionAntiguaCron = Configuration::getGlobalValue($this->sufijo . 'TOKEN_CRONT'); include(dirname(__FILE__) . '/configuration.php'); foreach ($configuracion AS $indice => $valor) { if (!Configuration::updateGlobalValue($indice, $valor)) { $this->_errors[] = $this->l('Se ha producido un error al crear el valor de configuracion: ').$indice . ' - '.$valor; return false; } } $directorioAdmin = getcwd(); if (!copy(dirname(__FILE__) . '/' . $this->name . 'Cron.php', $directorioAdmin . '/' . $this->name . 'Cron.php')) { $this->_errors[] = $this->l('Se ha producido un error al copiar el archivo de cron general a la carpeta de administracion'); return false; } if (!copy(dirname(__FILE__) . '/' . $this->name . 'Imagenes.php', $directorioAdmin . '/' . $this->name . 'Imagenes.php')) { $this->_errors[] = $this->l('Se ha producido un error al copiar el archivo de cron imagenes a la carpeta de administracion'); return false; } if (!copy(dirname(__FILE__) . '/refrescoEstadisticas.php', $directorioAdmin . '/' . $this->name . 'RefrescoEstadisticas.php')) { $this->_errors[] = $this->l('Se ha producido un error al copiar el archivo de estadisticas'); return false; } if (!$this->installTab()) { $this->_errors[] = $this->l('Error al instalar el tab'); return false; } if (!$idSupplier = Supplier::getIdByName($this->distribuidor)) { $supplier = new Supplier(); $supplier->name = $this->distribuidor; $supplier->active = 1; $supplier->description = $proveedor['descripcion']; $supplier->link_rewrite = Tools::link_rewrite($this->distribuidor); $supplier->meta_title = $proveedor['metatitulo']; $supplier->meta_keywords = $proveedor['metakeywords']; $supplier->meta_description = $proveedor['metadescripcion']; try { $supplier->add(); $idSupplier = $supplier->id; copy(dirname(__FILE__) . '/logo.jpg', _PS_SUPP_IMG_DIR_ . $idSupplier . '.jpg'); $direccion = New Address(); $direccion->id_supplier = $supplier->id; $direccion->phone = $proveedor['telefono']; $direccion->address1 = $proveedor['direccion']; $direccion->postcode = $proveedor['cp']; $direccion->city = $proveedor['ciudad']; $direccion->id_country = Configuration::getGlobalValue('PS_COUNTRY_DEFAULT'); $direccion->alias = 'Direccion principal'; $direccion->lastname = $this->distribuidor; $direccion->firstname = $this->distribuidor; try { $direccion->add(); } catch (Exception $e) { $supplier->delete(); } } catch (Exception $e) { die("Creando proveedor"); } } if (empty($versionAntiguaCron) || $versionAntiguaCron == '') { $token = md5(uniqid()); if (!Configuration::updateGlobalValue($this->sufijo . 'TOKEN_CRON', $token)) { $this->_errors[] = $this->l('Se ha producido un error al regenerar el token'); return false; } } else { if (!Configuration::updateGlobalValue($this->sufijo . 'TOKEN_CRON', $versionAntiguaCron)) { $this->_errors[] = $this->l('Se ha producido un error al actualizar el token a la version anterior'); return false; } } include(dirname(__FILE__) . '/sql-install.php'); foreach ($sql as $s) { if (!Db::getInstance()->execute($s)) { $this->_errors[] = $this->l('Se ha producido un error al ejecutar la consulta: ').$s; return false; } } if ($this->versionPS >= 15) { return (parent::install() && $this->registerHook('actionCategoryDelete') && $this->registerHook('actionProductDelete') && $this->registerHook('displayBackOfficeHeader') && $this->registerHook('displayBackOfficeHome') && $this->registerHook('displayAdminStatsModules') && $this->registerHook('displayAdminHomeQuickLinks') && $this->registerHook('actionObjectManufacturerDeleteAfter') && $this->registerHook('actionObjectSupplierDeleteAfter') && $this->registerHook('actionAttributeGroupDelete') && $this->registerHook('actionObjectSupplierDeleteAfter') && $this->registerHook('dashboardZoneTwo') ); } else { return (parent::install() && $this->registerHook('categoryDeletion') && $this->registerHook('deleteproduct') && $this->registerHook('backOfficeHeader') && $this->registerHook('backOfficeHome') && $this->registerHook('adminStatsModules') && $this->registerHook('afterDeleteAttributeGroup') ); } return true; } public function uninstall() { $versionAntiguaCron = Configuration::getGlobalValue($this->sufijo . 'TOKEN_CRONT'); include(dirname(__FILE__) . '/configuration.php'); foreach ($configuracion AS $indice => $valor) { if (Configuration::getGlobalValue($indice) !== FALSE) { if (!Configuration::deleteByName($indice)) { $this->_errors[] = $this->l('Se ha producido un error al borrar el valor de configuracion: ').$indice; return false; } } } include(dirname(__FILE__) . '/sql-unninstall.php'); foreach ($sql as $s) { if (!Db::getInstance()->execute($s)) { $this->_errors[] = $this->l('Se ha producido un error al ejecutar la consulta: ').$s; return false; } } Configuration::updateGlobalValue($this->sufijo . 'TOKEN_CRONT', $versionAntiguaCron); if (!parent::uninstall()) { $this->_errors[] = $this->l('Se ha producido un error general al desinstalar el modulo'); return false; } Tools::deleteDirectory(dirname(__FILE__) . '/import/', false); $directorioAdmin = getcwd(); if (!unlink($directorioAdmin . '/' . $this->name . 'Cron.php')) { $this->_errors[] = $this->l('Se ha producido un error al borrar el archivo de Cron'); return false; } if (!unlink($directorioAdmin . '/' . $this->name . 'Imagenes.php')) { $this->_errors[] = $this->l('Se ha producido un error al borrar el archivo de Cron de imagenes'); return false; } if (!unlink($directorioAdmin . '/' . $this->name . 'RefrescoEstadisticas.php')) { $this->_errors[] = $this->l('Se ha producido un error al borrar el archivo de refresco de estadisticas'); return false; } return true; } private function _postProcess() { Shop::setContext(4); $idTab = Tools::getValue('idTab'); $action = Tools::getValue('action'); if (isset($action) && $action != '') { if ($action == 'plantilla') { $nombre = Tools::getValue('nombre'); $nombre = base64_encode(serialize($nombre)); if (!Configuration::updateGlobalValue($this->sufijo . 'PLANTILLA_NOMBRE', $nombre)) { $this->_html .= $this->displayError($this->l('Se ha producido un error al guardar la plantilla')); } else { $this->_html .= $this->displayConfirmation($this->l('Plantillas guardadas con exito')); } } if ($action == 'addUrl') { $error = 0; if (Tools::getValue('idUrl') != 0) { $sql = "UPDATE " . _DB_PREFIX_ . $this->tabla . "urls SET
url = '" . Tools::getValue('url') . "',
id_distribuidor = " . Tools::getValue('idProveedor') . "
WHERE
id_" . $this->tabla . "urls = " . Tools::getValue('idUrl'); } else { $sql = "INSERT INTO " . _DB_PREFIX_ . $this->tabla . "urls (url, id_distribuidor) VALUES " . "('" . Tools::getValue('url') . "'," . Tools::getValue('idProveedor') . ")"; } if (Db::getInstance()->Execute($sql) && Configuration::updateGlobalValue($this->sufijo . 'URL_IMAGENES', Tools::getValue('urlImagen'))) { $this->_html .= $this->displayConfirmation('Se ha insertado correctamente el proveedor!<br />'); } else { $this->_html .= $this->displayError('Ha ocurrido un error al insertar el proveedor'); } } if ($action == 'archivoProcesar') { include(dirname(__FILE__) . '/functions.php'); $importer = new ImportFunctionsPrinciparElectro(); $msg = $importer->subirArchivo($_FILES['archivoProcesar'], Tools::getValue('idProveedor')); if ($msg['codError'] == 0) { $this->preProcesarArchivos($msg['directorio'], $msg['idArchivo']); } if ($msg['codError'] == 0) { $this->_html .= $this->displayConfirmation($msg['msg']); } else { $this->_html .= $this->displayError($msg['msg']); } } if ($action == 'setDatosConexion') { if (Configuration::updateGlobalValue($this->sufijo . 'USUARIO', Tools::getValue('usuario')) && Configuration::updateGlobalValue($this->sufijo . 'PASSWORD', Tools::getValue('password'))) { $this->_html .= $this->displayConfirmation('Se han insertado correctamente los datos de conexion<br />'); } else { $this->_html .= $this->displayError('Ha ocurrido un error al insertar los datos de conexion'); } } if ($action == 'setCategoriaPadre') { if (Configuration::updateGlobalValue($this->sufijo . 'CATEGORIA_PADRE', Tools::getValue('categoria'))) { $this->_html .= $this->displayConfirmation('Se ha insertado correctamente la categoria padre!<br />'); } else { $this->_html .= $this->displayError('Ha ocurrido un error la categoria'); } } if ($action == 'setCategoriaActiva') { $activa = 0; if (isset($_POST['categoriaActiva']) && $_POST['categoriaActiva'] == 1) { $activa = 1; } if (Configuration::updateGlobalValue($this->sufijo . 'CATEGORY_ACTIVE', $activa)) { $this->_html .= $this->displayConfirmation('Se ha insertado correctamente el modo de importacion de las categorias!<br />'); } else { $this->_html .= $this->displayError('Ha ocurrido un error al insertar el modo de importacion de las categorias'); } } if ($action == 'setFormatoCategoria') { $activa = 0; if (isset($_POST['formatocategoria']) && $_POST['formatocategoria'] == 1) { $activa = 1; } if (Configuration::updateGlobalValue($this->sufijo . 'CATEGORY_FORM_CREAT', $activa)) { $this->_html .= $this->displayConfirmation('Se ha insertado correctamente el modo de importacion de las categorias!<br />'); } else { $this->_html .= $this->displayError('Ha ocurrido un error al insertar el modo de importacion de las categorias'); } } if ($action == 'setImpuestoIncluido') { $impuestoIncluido = 0; $valorImpuesto = 0; if (isset($_POST['taxValue']) && $_POST['taxValue'] != '' && $_POST['taxValue'] != 0) { $valorImpuesto = (float) Tools::getValue('taxValue'); } if (isset($_POST['impuestoIncluido']) && $_POST['impuestoIncluido'] == 1) { $impuestoIncluido = 1; } else { $valorImpuesto = ''; } if ($impuestoIncluido == 1 && $valorImpuesto > 0) { include(dirname(__FILE__) . '/functions.php'); $taxGenerator = new ImportFunctionsPrinciparElectro(); $taxGenerator->getTaxRulesGroup($valorImpuesto); if (Configuration::updateGlobalValue($this->sufijo . 'TAX_INCLUDED', $impuestoIncluido) && Configuration::updateGlobalValue($this->sufijo . 'TAX_VALUE', $valorImpuesto)) { $this->_html .= $this->displayConfirmation('Se ha insertado correctamente la gestion de impuestos!<br />'); } else { $this->_html .= $this->displayError('Ha ocurrido un error al insertar el modo de gestion de impuestos'); } } else if ($impuestoIncluido == 1) { $this->_html .= $this->displayError('El valor del impuesto no es correcto'); } else { if (Configuration::updateGlobalValue($this->sufijo . 'TAX_INCLUDED', 0) && Configuration::updateGlobalValue($this->sufijo . 'TAX_VALUE', 0)) { $this->_html .= $this->displayConfirmation('Se ha insertado correctamente la gestion de impuestos!<br />'); } else { $this->_html .= $this->displayError('Ha ocurrido un error al insertar el modo de gestion de impuestos'); } } } if ($action == 'addPorcentajesCategorias') { $sw = 0; $error = 0; $i = 0; $sql = "INSERT INTO " . _DB_PREFIX_ . $this->tabla . "categorias (id_category, margen) VALUES "; foreach ($_POST['categoria'] AS $indiceCategoria => $categoria) { $i++; if (isset($categoria['margen']) && !empty($categoria['margen']) && $categoria['margen'] != "" && $categoria['margen'] != null) { if (Configuration::getGlobalValue($this->sufijo . 'METODO_MARGEN') == 1 && $categoria['margen'] >= 100) { $error = 3; } if ($sw == 0) { $sw = 1; $sql .= "(" . $indiceCategoria . "," . $categoria['margen'] . ")"; } else { $sql .= ",(" . $indiceCategoria . "," . $categoria['margen'] . ")"; } } } if ($sw == 1 && $error == 0) { $queryDelete = "TRUNCATE TABLE " . _DB_PREFIX_ . $this->tabla . "categorias"; Db::getInstance(_PS_USE_SQL_SLAVE_)->Execute($queryDelete); if (!Db::getInstance()->execute($sql)) { $error = 1; } } else if ($sw == 0) { $error = 2; } if ($error == 0) { $this->_html .= $this->displayConfirmation('Se ha insertado correctamente los margenes!<br />'); } else if ($error == 1) { $this->_html .= $this->displayError('Ha ocurrido un error al insertar los margenes'); } else if ($error == 2) { $this->_html .= $this->displayError('No se ha seleccionado ningun margen'); } else if ($error == 3) { $this->_html .= $this->displayError('No se puede seleccionar un margen superior a 100 sobre precio de venta'); } } if ($action == 'addMetodoMargen') { $error = 0; if (!Configuration::updateGlobalValue($this->sufijo . 'METODO_MARGEN', Tools::getValue('metodoMargen'))) { $error = 1; } $margenGlobal = Tools::getValue('margenGlobal'); if ((float) $margenGlobal >= 0) { if (!Configuration::updateGlobalValue($this->sufijo . 'MARGEN_GLOBAL', (float) $margenGlobal)) { $error = 1; } } else { $error = 1; } $margenMinimo = str_replace(',', '.', Tools::getValue('margenMinimo')); if ((float) $margenMinimo >= 0) { if (!Configuration::updateGlobalValue($this->sufijo . 'MARGEN_MINIMO', (float) $margenMinimo)) { $error = 1; } } else { $error = 1; } if ($error == 0) { $this->_html .= $this->displayConfirmation('Se ha insertado correctamente el metodo de calculo de margenes'); } else { $this->_html .= $this->displayError('Error al guardar el metodo de calculo de margenes'); } } if ($action == 'procesoManual') { require_once(dirname(__FILE__) . "/functions.php"); $import = new ImportFunctionsPrinciparElectro(); if ($import->comprobarProceso()) { $query = 'SELECT MAX(id_' . $this->tabla . 'archivos) AS idArchivo FROM ' . _DB_PREFIX_ . $this->tabla . 'archivos WHERE archivo_procesado=0'; $result_query = Db::getInstance(_PS_USE_SQL_SLAVE_)->ExecuteS($query); if (empty($result_query[0]['idArchivo'])) { $msg = $this->obtenerArchivo(Tools::getValue('url'), Tools::getValue('idProveedor')); if ($msg['codError'] == 0) { $this->_html .= $this->displayConfirmation($msg['msg']); } else { $this->_html .= $this->displayError($msg['msg'] . " -- " . $msg['codError']); } $import->terminarProceso(); } else { $idProveedor = Tools::getValue('idProveedor'); $this->_html .= $this->procesarArchivo($idProveedor); $import->terminarProceso(); } } else { $import->addLogbyImax($this->l('Proceso manual y cron solapados'), 5, 01001, 'Proceso', 1, true); $this->_html .= $this->displayError("ATENCION: Proceso manual y cron solapados"); } } if ($action == 'generarToken') { $token = md5(uniqid()); Configuration::updateGlobalValue($this->sufijo . 'TOKEN_CRON', $token); $this->_html .= $this->displayConfirmation($this->l('Token generado correctamente')); } if ($action == 'numElementos') { $numElementosProductos = Tools::getValue('numElementosProductos'); $numElementosCategorias = Tools::getValue('numElementosCategorias'); $numElementosManufacturer = Tools::getValue('numElementosFabricantes'); $numElementosImagenes = Tools::getValue('numElementosImagenes'); if (Configuration::updateGlobalValue($this->sufijo . 'CANTIDAD_PROD', $numElementosProductos) && Configuration::updateGlobalValue($this->sufijo . 'CANTIDAD_CATE', $numElementosCategorias) && Configuration::updateGlobalValue($this->sufijo . 'CANTIDAD_MANU', $numElementosManufacturer) && Configuration::updateGlobalValue($this->sufijo . 'CANTIDAD_IMAG', $numElementosImagenes)) { $this->_html .= $this->displayConfirmation($this->l('Cantidad actualizada correctamente')); } else { $this->_html .= $this->displayError($this->l('Se ha producido un error al actualizar las cantidades')); } } if ($action == 'filtrarFechas') { require_once(dirname(__FILE__) . "/functions.php"); $importer = new ImportFunctionsPrinciparElectro(); $this->fechaInicio = $importer->convertDate(Tools::getValue('desde')); $this->fechaFin = $importer->convertDate(Tools::getValue('hasta')); $this->html .= $this->_mostrarUltimosProductos(); } if ($action == 'filtrarFechasBajas') { require_once(dirname(__FILE__) . "/functions.php"); $importer = new ImportFunctionsPrinciparElectro(); $this->fechaInicioBaja = $importer->convertDate(Tools::getValue('desde_baja')); $this->fechaFinBaja = $importer->convertDate(Tools::getValue('hasta_baja')); $this->html .= $this->_mostrarUltimosProductos(); } if ($action == 'opcionesActualizacion') { $precio = Tools::getValue('actualizarPrecio'); if ($precio != 1) $precio = 0; $stock = Tools::getValue('actualizarStock'); if ($stock != 1) $stock = 0; $peso = Tools::getValue('actualizarPeso'); if ($peso != 1) $peso = 0; $activarAjax = Tools::getValue('activarAjax'); if ($activarAjax != 1) $activarAjax = 0; $desactivarSinStock = Tools::getValue('desactivarSinStock'); if ($desactivarSinStock != 1) $desactivarSinStock = 0; $descativarProds = Tools::getValue('desactivarProds'); if ($descativarProds != 1) $descativarProds = 0; $eliminarBajas = Tools::getValue('eliminarBajas'); if ($eliminarBajas != 1) $eliminarBajas = 0; $imagen = Tools::getValue('actualizarImagen'); if ($imagen != 1) $imagen = 0; $descripcion = Tools::getValue('actualizarDesc'); if ($descripcion != 1) $descripcion = 0; $actualizarNombre = Tools::getValue('actualizarNombre'); if ($actualizarNombre != 1) $actualizarNombre = 0; $importarNuevos = Tools::getValue('importarNuevos'); if ($importarNuevos != 1) $importarNuevos = 0; $procesarImagenes = Tools::getValue('procesarImagenes'); if ($procesarImagenes != 1) $procesarImagenes = 0; $enviarMail = Tools::getValue('enviarMail'); if ($enviarMail != 1) $enviarMail = 0; $indexar = Tools::getValue('indexar'); if ($indexar != 1) $indexar = 0; $crearImagenCat = Tools::getValue('crearImagenCat'); if ($crearImagenCat != 1) $crearImagenCat = 0; $reordenarImagenes = Tools::getValue('reordenarImagenes'); if ($reordenarImagenes != 1) $reordenarImagenes = 0; $modoDebug = Tools::getValue('modoDebug'); if ($modoDebug != 1) $modoDebug = 0; $modoSolapado = Tools::getValue('modoSolapado'); if ($modoSolapado != 1) $modoSolapado = 0; $actualizarSeo = Tools::getValue('actualizarSeo'); if ($actualizarSeo != 1) $actualizarSeo = 0; $actualizarAccesorios = Tools::getValue('actualizarAccesorios'); if ($actualizarAccesorios != 1) $actualizarAccesorios = 0; $tiempoAjax = Tools::getValue('tiempoAjax'); $tiempoMsgAjax = Tools::getValue('tiempoMsgAjax'); $condicionPrecioOculto = Tools::getValue('condicionPrecioOculto'); $emailAddr = Tools::getValue('emailAddr'); $emailAddr = explode(',', $emailAddr); $emailAddr = base64_encode(serialize($emailAddr)); if ($imagen == 1) { $this->iniciarActualizarImagenes(); } if (!Configuration::updateGlobalValue($this->sufijo . 'ACTUALIZAR_PRECIO', $precio) || !Configuration::updateGlobalValue($this->sufijo . 'ACTUALIZAR_STOCK', $stock) || !Configuration::updateGlobalValue($this->sufijo . 'ACTUALIZAR_PESO', $peso) || !Configuration::updateGlobalValue($this->sufijo . 'DESACTIVAR_SIN_STOCK', $desactivarSinStock) || !Configuration::updateGlobalValue($this->sufijo . 'DESACTIVAR_PRODS', $descativarProds) || !Configuration::updateGlobalValue($this->sufijo . 'ACTUALIZAR_IMAGEN', $imagen) || !Configuration::updateGlobalValue($this->sufijo . 'ACTUALIZAR_DESC', $descripcion) || !Configuration::updateGlobalValue($this->sufijo . 'ACTUALIZAR_NOMBRE', $actualizarNombre) || !Configuration::updateGlobalValue($this->sufijo . 'ELIMINAR_BAJAS', $eliminarBajas) || !Configuration::updateGlobalValue($this->sufijo . 'IMPORTAR_NUEVOS', $importarNuevos) || !Configuration::updateGlobalValue($this->sufijo . 'PROC_IMAGEN', $procesarImagenes) || !Configuration::updateGlobalValue($this->sufijo . 'ENVIAR_EMAIL', $enviarMail) || !Configuration::updateGlobalValue($this->sufijo . 'INDEXAR', $indexar) || !Configuration::updateGlobalValue($this->sufijo . 'MODO_SOLAPADO', $modoSolapado) || !Configuration::updateGlobalValue($this->sufijo . 'ACTUALIZAR_SEO', $actualizarSeo) || !Configuration::updateGlobalValue($this->sufijo . 'ACTUALIZAR_ACCE', $actualizarAccesorios) || !Configuration::updateGlobalValue($this->sufijo . 'CAT_IMAGE', $crearImagenCat) || !Configuration::updateGlobalValue($this->sufijo . 'MODO_DEBUG', $modoDebug) || !Configuration::updateGlobalValue($this->sufijo . 'AJAX_ACTIVE', $activarAjax) || !Configuration::updateGlobalValue($this->sufijo . 'AJAX_ACTIVE', $activarAjax) || !Configuration::updateGlobalValue($this->sufijo . 'MSG_DELAY', $tiempoMsgAjax) || !Configuration::updateGlobalValue($this->sufijo . 'EMAIL_ADDR', $emailAddr) || !Configuration::updateGlobalValue($this->sufijo . 'APPLY_COND', $condicionPrecioOculto) || !Configuration::updateGlobalValue($this->sufijo . 'ETIQ_EFICI', Tools::getValue('eficiencia')) || !Configuration::updateGlobalValue($this->sufijo . 'REORD_IMAGE', $reordenarImagenes)) { $this->_html .= $this->displayError($this->l('Se ha producido un error al gestionar el sistema de actualizacion')); } else { $this->_html .= $this->displayConfirmation($this->l('Sistema actualizacion correcto')); } } if ($action == 'gestionarTiendas') { $tiendas = Tools::getValue('tienda'); $msg = $this->displayError('La seleccion de categoria por defecto por tienda o de las tiendas no es correcta'); foreach ($tiendas AS $indice => $tienda) { if (isset($tienda['categoria']) && !isset($tienda['idShop'])) { unset($tiendas[$indice]); } } if (empty($tiendas) || !is_array($tiendas)) { $this->_html .= $msg; } else if (!isset($tiendas[$tiendas['default']]['idShop'])) { $this->_html .= $msg; } else { $tiendas = serialize($tiendas); if (!Configuration::updateGlobalValue($this->sufijo . 'TIENDAS', $tiendas)) { $this->_html .= $this->displayError($this->l('Se ha producido un error al gestionar las tiendas')); } else { $this->_html .= $this->displayConfirmation($this->l('Actualizacion de las tiendas asociadas correcto')); } } } if ($action == 'grupoImpuestos') { $idGrupoImpuestos = Tools::getValue('idGrupoImpuestos'); $idPais = Configuration::getGlobalValue('PS_COUNTRY_DEFAULT'); $impuesto = new TaxRule(); $valorTaxa = $impuesto->getTaxRulesByGroupId($this->idLang, $idGrupoImpuestos); foreach ($valorTaxa as $valorPais) { if ($valorPais['id_country'] == $idPais) $valorImpuesto = $valorPais['rate']; } if (!Configuration::updateGlobalValue($this->sufijo . 'TAX_VALUE', $valorImpuesto)) { $this->_html .= $this->displayError($this->l('Se ha producido un error al gestionar el valor de los impuestos')); } else { $this->_html .= $this->displayConfirmation($this->l('Actualizacion del valor correcta')); } if (!Configuration::updateGlobalValue($this->sufijo . 'TAX_RULE', $idGrupoImpuestos)) { $this->_html .= $this->displayError($this->l('Se ha producido un error al gestionar el tipo de impuestos')); } else { $this->_html .= $this->displayConfirmation($this->l('Actualizacion del tipo de impuestos correcto')); } } if ($action == 'gestionSEO') { $predesc = Tools::getValue('predesc'); $postdesc = Tools::getValue('postdesc'); $pretitle = Tools::getValue('pretitle'); $posttitle = Tools::getValue('posttitle'); $preKey = Tools::getValue('preKey'); $postKey = Tools::getValue('postKey'); $crearTags = Tools::getValue('crearTags'); if ($crearTags != 1) { $crearTags = 0; } if (!Configuration::updateGlobalValue($this->sufijo . 'PRE_DESC', $predesc) || !Configuration::updateGlobalValue($this->sufijo . 'POST_DESC', $postdesc) || !Configuration::updateGlobalValue($this->sufijo . 'PRE_TITLE', $pretitle) || !Configuration::updateGlobalValue($this->sufijo . 'POST_TITLE', $posttitle) || !Configuration::updateGlobalValue($this->sufijo . 'PRE_KEY', $preKey) || !Configuration::updateGlobalValue($this->sufijo . 'POST_KEY', $postKey) || !Configuration::updateGlobalValue($this->sufijo . 'CREAR_TAGS', $crearTags)) { $this->_html .= $this->displayError($this->l('Se ha producido un error al gestionar el sistema de SEO')); } else { $this->_html .= $this->displayConfirmation($this->l('Actualizacion del SEO correcta')); } } if ($action == 'cantidadStock') { $cantidadStock = Tools::getValue('cantidadStock'); if (!Configuration::updateGlobalValue($this->sufijo . 'CANTIDAD_STOCK', $cantidadStock)) { $this->_html .= $this->displayError($this->l('Se ha producido un error al gestionar la cantidad de stock')); } else { $this->_html .= $this->displayConfirmation($this->l('Actualizacion de la cantidad de stock')); } } if ($action == 'terminarArchivos') { require_once(dirname(__FILE__) . "/functions.php"); $importer = new ImportFunctionsPrinciparElectro(); if (Tools::getValue('idArchivoCompletar') == 0) { $importer->terminarArchivoAbsoluto(); $this->html .= $this->_mostrarEstadisticas(); } else { $idArchivo = Tools::getValue('idArchivoCompletar'); $tipoArchivo = Tools::getValue('tipoArchivo'); $importer->terminarArchivo($idArchivo, $tipoArchivo); $this->html .= $this->_mostrarEstadisticas(); } } if ($action == 'gestionLicencia') { $licencia = Tools::getValue('licencia'); if (Configuration::updateGlobalValue($this->sufijo . 'LICENCIA', $licencia)) { $this->_html .= $this->displayConfirmation('Licencia guardada correctamente'); } else { $this->_html .= $this->displayError('Ha ocurrido un error al guardar la licencia'); } $this->forceCheck = 1; } if ($action == 'gestionStock') { if (Configuration::updateGlobalValue($this->sufijo . 'STOCK_MINIMO', 0) && Configuration::updateGlobalValue($this->sufijo . 'CANTIDAD_STOCK', Tools::getValue('stockProducto')) && Configuration::updateGlobalValue($this->sufijo . 'CANTIDAD_NO_STOCK', Tools::getValue('noStockProducto'))) { $this->_html .= $this->displayConfirmation('Se ha insertado correctamente el metodo de gestion de stocks'); } else { $this->_html .= $this->displayError('Error al guardar el metodo de gestion de stocks'); } } if ($action == 'gestionDisponibilidad') { $temp = Tools::getValue('disponibilidad'); foreach ($temp AS $indice => $elemento) { if (trim($elemento['dias']) == '' || trim($elemento['literal']) == '') { unset($temp[$indice]); } } $temp = serialize($temp); $dispo24_48 = Tools::getValue('dispo24_48'); if (Configuration::updateGlobalValue($this->sufijo . 'DISPONIBILIDAD', $temp) && Configuration::updateGlobalValue($this->sufijo . '24_48', $dispo24_48)) { $this->_html .= $this->displayConfirmation('Se ha insertado correctamente el metodo de gestion de disponibilidad'); } else { $this->_html .= $this->displayError('Error al guardar el metodo de gestion de disponibilidad'); } } if ($action == 'gestionOfertas') { $procesarOfertas = Tools::getValue('procesarOfertas'); $categoriaOfertas = Tools::getValue('categoriaOfertas'); if (Configuration::updateGlobalValue($this->sufijo . 'PROC_OFERTAS', $procesarOfertas) && Configuration::updateGlobalValue($this->sufijo . 'CATE_OFERTAS', $categoriaOfertas)) $this->_html .= $this->displayConfirmation('Se ha insertado correctamente el metodo de gestion de ofertas'); else $this->_html .= $this->displayError('Error al guardar el metodo de gestion de ofertas'); } } } private function product_exist($idProduct) { $query = 'SELECT count(id_product) as numElementos
FROM ' . _DB_PREFIX_ . 'product p
WHERE p.id_product = ' . $idProduct; $result_query = Db::getInstance(_PS_USE_SQL_SLAVE_)->ExecuteS($query); if ($result_query[0] == 0) { return false; } else { return true; } } private function _displayFormExport() { $this->addJs('funciones.js'); include_once(dirname(__FILE__) . '/functions.php'); $activarAjax = Configuration::getGlobalValue($this->sufijo . 'AJAX_ACTIVE'); $tiempoAjax = Configuration::getGlobalValue($this->sufijo . 'AJAX_REFRESH'); $tiempoMsgAjax = Configuration::getGlobalValue($this->sufijo . 'MSG_DELAY'); $urlTienda = ImportFunctionsPrinciparElectro::getUrlAdmin(); $this->_html .='<script>' . ' var nameModule = "' . $this->name . '";
' . ' var activarAjax = ' . $activarAjax . ';
' . ' var tiempoAjax = ' . $tiempoAjax . ';
' . ' var tiempoMsgAjax = ' . $tiempoMsgAjax . ';
' . ' var url = "' . $urlTienda . '";
' . ' </script>'; if (ConfigurationCore::getGlobalValue($this->sufijo . 'LICENCIA') == '') { $this->_html .= '<div class="bootstrap" style="width:100%">'; $this->_html .= '<div class="alert alert-warning">'; $this->_html .= '<p>' . $this->l('ATENCION: SU LICENCIA ESTA VACIA') . '</p>'; $this->_html .= '<p>' . $this->l('Debe introducir un numero de licencia valido para continuar') . '</p>'; $this->_html .= '</div>'; $this->_html .= '</div>'; $this->_html .= $this->_mostrarLicencia(); $this->forceCheck = 0; } elseif (!ImportFunctionsPrinciparElectro::chekcLicencia($this->forceCheck)) { $this->_html .= '<div class="bootstrap" style="width:100%">'; $this->_html .= '<div class="alert alert-warning">'; $this->_html .= '<p>' . $this->l('ATENCION: SU LICENCIA NO ES VALIDA') . '</p>'; $this->_html .= '<p>' . $this->l('Si ejecuta el modulo sin licencia los resultados no seran validos') . '</p>'; $this->_html .= '<p>' . $this->l('Haga esto bajo su responsabilidad, Informax no dara soporte ni aceptar quejas o peticiones derivadas del uso sin licencia de nuestros productos') . '</p>'; $this->_html .= '<p>' . $this->l('El uso de nuestro software sin licencia constituye una infraccion de las leyes de propiedad intelectual, y sera puesta en conocimiento de las autoridades pertinentes') . '</p>'; $this->_html .= '<p>' . $this->l('Si cree que este mensaje es un error, por favor, pongase en contacto con nosotros, enviandonos codigo de licencia, nombre del modulo, dominio de la tienda y copia de la factura de pago') . '</p>'; $this->_html .= '</div>'; $this->_html .= '</div>'; $this->_html .= $this->_mostrarLicencia(); $this->forceCheck = 0; } else { $idTab = (int) Tools::getValue('idTab'); if (!isset($idTab) || $idTab == 0) $idTab = 1; $this->_html .= '
<ul id="menuTab">
<li id="menuTab1" class="menuTabButton' . (($idTab == 1) ? " selected" : "") . '">1. ' . $this->l('Gestionar URLs') . '</li>
<li id="menuTab2" class="menuTabButton' . (($idTab == 2) ? " selected" : "" ) . '">2. ' . $this->l('Gestionar categorias') . '</li>
<li id="menuTab3" class="menuTabButton' . (($idTab == 3) ? " selected" : "" ) . '">3. ' . $this->l('Procesar manual') . '</li>
<li id="menuTab4" class="menuTabButton' . (($idTab == 4) ? " selected" : "" ) . '">4. ' . $this->l('Configuracion') . '</li>
<li id="menuTab5" class="menuTabButton' . (($idTab == 5) ? " selected" : "" ) . '">5. ' . $this->l('SEO') . '</li>
<li id="menuTab6" class="menuTabButton' . (($idTab == 6) ? " selected" : "" ) . '">6. ' . $this->l('Ayuda') . '</li>
<li id="menuTab7" class="menuTabButton' . (($idTab == 7) ? " selected" : "" ) . '">7. ' . $this->l('Estadisticas') . '</li>
<li id="menuTab8" class="menuTabButton' . (($idTab == 8) ? " selected" : "" ) . '">8. ' . $this->l('Ultimos Productos') . '</li>
<li id="menuTab9" class="menuTabButton' . (($idTab == 9) ? " selected" : "" ) . '">9. ' . $this->l('Licencia') . '</li>
</ul>
<div id="tabList">
<div id="menuTab1Sheet" class="tabItem' . (($idTab == 1) ? " selected" : "" ) . '">' . $this->_gestionarUrl() . '</div>
<div id="menuTab2Sheet" class="tabItem' . (($idTab == 2) ? " selected" : "" ) . '">' . $this->_gestionarCategorias() . '</div>
<div id="menuTab3Sheet" class="tabItem' . (($idTab == 3) ? " selected" : "" ) . '">' . $this->_procesoManual() . '</div>
<div id="menuTab4Sheet" class="tabItem' . (($idTab == 4) ? " selected" : "" ) . '">' . $this->_configuracion() . '</div>
<div id="menuTab5Sheet" class="tabItem' . (($idTab == 5) ? " selected" : "" ) . '">' . $this->_configuracionSEO() . '</div>
<div id="menuTab6Sheet" class="tabItem' . (($idTab == 6) ? " selected" : "" ) . '">' . $this->_mostrarAyuda() . '</div>
<div id="menuTab7Sheet" class="tabItem' . (($idTab == 7) ? " selected" : "" ) . '">' . $this->_mostrarEstadisticas() . '</div>
<div id="menuTab8Sheet" class="tabItem' . (($idTab == 8) ? " selected" : "" ) . '">' . $this->_mostrarUltimosProductos() . '</div>
<div id="menuTab9Sheet" class="tabItem' . (($idTab == 9) ? " selected" : "" ) . '">' . $this->_mostrarLicencia() . '</div>
</div>
<br clear="left" />
<br />
<style>
#menuTab { float: left;
padding: 0;
margin: 0;
text-align: left;
}
#menuTab li { text-align: left;
float: left;
display: inline;
padding: 5px;
padding-right: 10px;
background: #EFEFEF;
font-weight: bold;
cursor: pointer;
border-left: 1px solid #EFEFEF;
border-right: 1px solid #EFEFEF;
border-top: 1px solid #EFEFEF;
}
#menuTab li.menuTabButton.selected { background: #FFF6D3;
border-left: 1px solid #CCCCCC;
border-right: 1px solid #CCCCCC;
border-top: 1px solid #CCCCCC;
}
#tabList { clear: left;
}
.tabItem { display: none;
}
.tabItem.selected { display: block;
background: #FFFFF0;
border: 1px solid #CCCCCC;
padding: 10px;
padding-top: 20px;
}
</style>
<script>
$(".menuTabButton").click(function () {
$(".menuTabButton.selected").removeClass("selected");
$(this).addClass("selected");
$(".tabItem.selected").removeClass("selected");
$("#" + this.id + "Sheet").addClass("selected");
});
$("#llenarMargenText").val("");
$("input[name=checkme]").attr("checked", false);
</script>'; $this->_html .= '<script>
function llenarMargen(pForm) {
var valor = $("#llenarMargenText").val();
for (i = 0, n = pForm.elements.length;
i < n;
i++)
{
var objName = pForm.elements[i].name;
var objType = pForm.elements[i].type;
if (objType == "text")
{
box = eval(pForm.elements[i]);
box.value = valor;
}
}
}
</script>'; } } private function _gestionarUrl() { $html = ''; $usuario = Configuration::getGlobalValue($this->sufijo . 'USUARIO'); $password = Configuration::getGlobalValue($this->sufijo . 'PASSWORD'); include_once(dirname(__FILE__) . '/functionsForm.php'); include_once(dirname(__FILE__) . '/imaxAcordeon.php'); $form = new imaxForm($this->_path); $form->createHidden("action", "setDatosConexion"); $form->createHidden("idTab", "1"); $form->createFormTextGroup('usuario', $usuario, $this->l('Usuario'), $this->l('Usuario')); $form->createFormTextGroup('password', $password, $this->l('Password'), $this->l('Password')); $form->createSubmitButton('datosConexion', $this->l('Guardar')); $acordeon = new imaxAcordeon($this->_path); $html .= $acordeon->renderAcordeon($this->l('Conexion'), $form->renderForm()); unset($form); $query = 'SELECT
u.id_' . $this->tabla . 'urls , u.url, u.id_distribuidor
FROM
' . _DB_PREFIX_ . $this->tabla . 'urls AS u ORDER BY id_' . $this->tabla . 'urls DESC LIMIT 0,1'; $result_query = Db::getInstance(_PS_USE_SQL_SLAVE_)->ExecuteS($query); if (isset($result_query[0])) { $result = $result_query[0]; $url = $result['url']; $idUrl = $result['id_' . $this->tabla . 'urls']; $idDistribuidor = $result['id_distribuidor']; } else { $url = ''; $idUrl = 0; $idDistribuidor = 0; } $suppliers = Supplier::getSuppliers(); $proveedores = array(); foreach ($suppliers AS $supplier) { $proveedores[$supplier['id_supplier']] = $supplier['name']; } $urlImagenes = Configuration::getGlobalValue($this->sufijo . 'URL_IMAGENES'); $form = new imaxForm($this->_path); $form->createHidden("action", "addUrl"); $form->createHidden("idTab", "1"); $form->createHidden("idUrl", $idUrl); $form->createFormTextGroup('url', $url, $this->l('Url'), $this->l('Url')); $form->createFormSelect('idProveedor', $this->l('Seleccione el proveedor'), $proveedores, $idDistribuidor, $this->l('Proveedor')); $form->createFormInfomationText('Introduzca la url base para las imagenes de los fabricantes', 'confirm', true); $form->createFormTextGroup('urlImagen', $urlImagenes, $this->l('Url base de las imagenes'), $this->l('Url base de las imagenes')); $form->createSubmitButton('datosConexion', $this->l('Guardar')); $html .= $acordeon->renderAcordeon($this->l('Url'), $form->renderForm()); unset($form); return $html; } private function _gestionarCategorias() { $html = ''; include_once(dirname(__FILE__) . '/functionsForm.php'); include_once(dirname(__FILE__) . '/imaxAcordeon.php'); $idCategoriaPadre = Configuration::getGlobalValue($this->sufijo . 'CATEGORIA_PADRE'); $categorias = Category::getCategories($this->idLang, false); $arrayCategorias = array(); foreach ($categorias AS $categoriaTemp) { foreach ($categoriaTemp AS $categoria) { $categoria = $categoria['infos']; if ($categoria['level_depth'] != 0) { $level = $categoria['level_depth']; $arrayCategorias[$categoria['id_category']] = str_pad(' ', $level, '-', STR_PAD_LEFT) . $categoria['name']; } } } $form = new imaxForm($this->_path); $form->createHidden("action", "setCategoriaPadre"); $form->createHidden("idTab", "2"); $form->createFormSelect('categoria', $this->l('Categoria Padre'), $arrayCategorias, $idCategoriaPadre, $this->l('Categoria Padre')); $form->createSubmitButton('datosConexion', $this->l('Guardar')); $acordeon = new imaxAcordeon($this->_path); $html .= $acordeon->renderAcordeon($this->l('Categoria Padre'), $form->renderForm()); $checked = false; if (Configuration::getGlobalValue($this->sufijo . 'CATEGORY_ACTIVE') == 1) { $checked = true; } $form = new imaxForm($this->_path); $form->createHidden("action", "setCategoriaActiva"); $form->createHidden("idTab", "1"); $form->createFormCheckboxGroup('categoriaActiva', 'Marcar para importar las categorias como activas', $checked, 'Modo de Gestion de Categorias'); $form->createSubmitButton('setCategoriaActiva', $this->l('Guardar')); $html .= $acordeon->renderAcordeon($this->l('Modo de Gestion de Categorias'), $form->renderForm()); unset($form); $margenMinimo = Configuration::getGlobalValue($this->sufijo . 'MARGEN_MINIMO'); $margenGlobal = Configuration::getGlobalValue($this->sufijo . 'MARGEN_GLOBAL'); $metodoMargen = Configuration::getGlobalValue($this->sufijo . 'METODO_MARGEN'); $checked1 = false; $checked2 = false; $checked3 = false; switch ($metodoMargen) { case 0: $checked1 = true; break; case 1: $checked2 = true; break; case 2: $checked3 = true; break; } $form = new imaxForm($this->_path); $form->createHidden("action", "addMetodoMargen"); $form->createHidden("idTab", "2"); $form->createFormInfomationText('Seleccione el metodo de calculo de margenes, sobre el precio de compra, o sobre el precio de venta', 'confirm', true); $datos = array(); $extras = array(); $datos[0]['name'] = 'metodoMargen'; $datos[0]['value'] = '2'; $datos[0]['text'] = 'Tarifa Oficial'; $datos[0]['checked'] = $checked3; $datos[1]['name'] = 'metodoMargen'; $datos[1]['value'] = '0'; $datos[1]['text'] = 'Compra: se le aplica un porcentaje precio coste * margen Beneficio'; $datos[1]['checked'] = $checked1; $form->createFormRadioButtonGroup($datos, 'Metodos de Margen', $extras); $form->createFormTextGroup('margenMinimo', $margenMinimo, 'Importe Minimo de Beneficio(en euros)'); $form->createFormTextGroup('margenGlobal', $margenGlobal, 'Margen Global(%)'); $form->createSubmitButton('addMetodoMargen', $this->l('Guardar')); $html .= $acordeon->renderAcordeon($this->l('Modo de Calculos de precios'), $form->renderForm()); unset($form); $form = new imaxForm($this->_path); $form->createHidden("action", "addPorcentajesCategorias"); $form->createHidden("idTab", "2"); $form->createFormInfomationText('Si la categoria del producto no tiene un margen especifico, se le aplicara el margen global', 'confirm', true); $tabla = $this->createTableCategoriasMargen(); $form->addToForm($tabla); $form->createSubmitButton('addMetodoMargen', $this->l('Guardar')); $html .= $acordeon->renderAcordeon($this->l('Gestion de margenes de productos por categoria'), $form->renderForm()); return $html; } private function _procesoManual() { $html = ''; include_once(dirname(__FILE__) . '/functionsForm.php'); include_once(dirname(__FILE__) . '/imaxAcordeon.php'); $queryUrl = 'SELECT url, id_' . $this->tabla . 'urls, id_distribuidor FROM ' . _DB_PREFIX_ . $this->tabla . 'urls ORDER BY id_' . $this->tabla . 'urls DESC LIMIT 0,1'; $result_query_url = Db::getInstance(_PS_USE_SQL_SLAVE_)->ExecuteS($queryUrl); if (isset($result_query_url[0]['url'])) { $url = $result_query_url[0]['url']; } else { $url = ''; } if (isset($result_query_url[0]['id_distribuidor'])) { $idProveedor = $result_query_url[0]['id_distribuidor']; } else { $idProveedor = ''; } $form = new imaxForm($this->_path); $acordeon = new imaxAcordeon($this->_path); $form->createHidden("action", "procesoManual"); $form->createHidden("idTab", "3"); $form->createHidden("url", $url); $form->createHidden("idProveedor", $idProveedor); $form->createSubmitButton('generarToken', $this->l('Procesar')); $html .= $acordeon->renderAcordeon($this->l('Forzar procesado de archivo'), $form->renderForm()); return $html; } private function _configuracion() { $html = ''; require_once(dirname(__FILE__) . "/functions.php"); include_once(dirname(__FILE__) . '/functionsForm.php'); include_once(dirname(__FILE__) . '/imaxAcordeon.php'); $urlTienda = ImportFunctionsPrinciparElectro::getUrlAdmin(); $token = Configuration::getGlobalValue($this->sufijo . 'TOKEN_CRON'); $form = new imaxForm($this->_path); $acordeon = new imaxAcordeon($this->_path); $form->createHidden("action", "generarToken"); $form->createHidden("idTab", "4"); $form->createFormInfomationText('<b>' . $this->l('ATENCION:') . '</b> ' . $this->l('Si cambia el token, tiene que cambiarlo tambien en las tareas de cron'), 'warning', true); $form->createFormInfomationText('Debe enviarlo por get a las urls del servicio', 'confirm'); $form->createFormInfomationText('<a href="' . $urlTienda . $this->name . 'Cron.php?token=' . $token . '" target="_blank">' . $urlTienda . $this->name . 'Cron.php?token=' . $token . '</a>', 'confirm', true); $form->createFormInfomationText('<a href="' . $urlTienda . $this->name . 'Imagenes.php?token=' . $token . '" target="_blank">' . $urlTienda . $this->name . 'Imagenes.php?token=' . $token . '</a>', 'confirm', true); $form->createFormInfomationText('Token Actual: ' . $token, 'confirm'); $form->createSubmitButton('generarToken', $this->l('Regenerar Token')); $html .= $acordeon->renderAcordeon($this->l('Token y Crons'), $form->renderForm()); $form = new imaxForm($this->_path); $idTipoImpuesto = Configuration::getGlobalValue($this->sufijo . 'TAX_RULE'); $taxRuleGroups = TaxRulesGroup::getTaxRulesGroups(); $datosTaxRuleGroups = array(); $datosTaxRuleGroups[0] = $this->l('Seleccione uno'); foreach ($taxRuleGroups AS $taxRuleGroup) { $datosTaxRuleGroups[$taxRuleGroup['id_tax_rules_group']] = $taxRuleGroup['name']; } $form->createHidden("action", "grupoImpuestos"); $form->createHidden("idTab", "4"); $form->createFormSelect('idGrupoImpuestos', 'Selecciona la regla de impuestos', $datosTaxRuleGroups, $idTipoImpuesto, 'Selecciona la regla de impuestos'); $form->createSubmitButton('grupoImpuestos', $this->l('Guardar')); $html .= $acordeon->renderAcordeon($this->l('Gestion de Impuestos'), $form->renderForm()); $form = new imaxForm($this->_path); $numElementos = Configuration::getGlobalValue($this->sufijo . 'CANTIDAD_PROD'); $numCategorias = Configuration::getGlobalValue($this->sufijo . 'CANTIDAD_CATE'); $numFabricantes = Configuration::getGlobalValue($this->sufijo . 'CANTIDAD_MANU'); $numImagenes = Configuration::getGlobalValue($this->sufijo . 'CANTIDAD_IMAG'); $form->createHidden("action", "numElementos"); $form->createHidden("idTab", "4"); $form->createFormTextGroup('numElementosProductos', $numElementos, 'Numero de productos a importar', 'Numero de productos a importar'); $form->createFormTextGroup('numElementosCategorias', $numCategorias, 'Numero de categorias a importar', 'Numero de categorias a importar'); $form->createFormTextGroup('numElementosFabricantes', $numFabricantes, 'Numero de fabricantes a importar', 'Numero de fabricantes a importar'); $form->createFormTextGroup('numElementosImagenes', $numImagenes, 'Numero de imagenes a importar(No mas de 50)', 'Numero de imagenes a importar'); $form->createSubmitButton('numElementos', $this->l('Guardar')); $html .= $acordeon->renderAcordeon($this->l('Elementos a procesar en cada llamada'), $form->renderForm()); $form = new imaxForm($this->_path); $actualizarImagen = Configuration::getGlobalValue($this->sufijo . 'ACTUALIZAR_IMAGEN') == 1 ? true : false; $actualizarNombre = Configuration::getGlobalValue($this->sufijo . 'ACTUALIZAR_NOMBRE') == 1 ? true : false; $actualizarDescripcion = Configuration::getGlobalValue($this->sufijo . 'ACTUALIZAR_DESC') == 1 ? true : false; $actualizarPrecio = Configuration::getGlobalValue($this->sufijo . 'ACTUALIZAR_PRECIO') == 1 ? true : false; $actualizarStock = Configuration::getGlobalValue($this->sufijo . 'ACTUALIZAR_STOCK') == 1 ? true : false; $actualizarPeso = Configuration::getGlobalValue($this->sufijo . 'ACTUALIZAR_PESO') == 1 ? true : false; $actualizarSeo = Configuration::getGlobalValue($this->sufijo . 'ACTUALIZAR_SEO') == 1 ? true : false; $actualizarAccesorios = Configuration::getGlobalValue($this->sufijo . 'ACTUALIZAR_ACCE') == 1 ? true : false; $desactivarProds = Configuration::getGlobalValue($this->sufijo . 'DESACTIVAR_PRODS') == 1 ? true : false; $desactivarSinStock = Configuration::getGlobalValue($this->sufijo . 'DESACTIVAR_SIN_STOCK') == 1 ? true : false; $eliminarBajas = Configuration::getGlobalValue($this->sufijo . 'ELIMINAR_BAJAS') == 1 ? true : false; $procesarBajas = Configuration::getGlobalValue($this->sufijo . 'DESACTIVAR_PRODS') == 1 ? true : false; $crearImagenesCategorias = Configuration::getGlobalValue($this->sufijo . 'CAT_IMAGE') == 1 ? true : false; $reordenarImagenes = Configuration::getGlobalValue($this->sufijo . 'REORD_IMAGE') == 1 ? true : false; $enviarCorreos = Configuration::getGlobalValue($this->sufijo . 'ENVIAR_EMAIL') == 1 ? true : false; $texto_eficiencia = Configuration::getGlobalValue($this->sufijo . 'ETIQ_EFICI'); $listadoCorreos = @unserialize(base64_decode(Configuration::getGlobalValue($this->sufijo . 'EMAIL_ADDR'))); if (is_array($listadoCorreos)) { $listadoCorreos = implode(',', $listadoCorreos); } $condicionesTemp = @unserialize(Configuration::getGlobalValue($this->sufijo . 'CONDICION')); foreach ($condicionesTemp AS $condicion) { $condiciones[$condicion] = $this->l($condicion); } $defaultCond = Configuration::getGlobalValue($this->sufijo . 'APPLY_COND'); $indexar = Configuration::getGlobalValue($this->sufijo . 'INDEXAR') == 1 ? true : false; $modoDebug = Configuration::getGlobalValue($this->sufijo . 'MODO_DEBUG') == 1 ? true : false; $modoSolapado = Configuration::getGlobalValue($this->sufijo . 'MODO_SOLAPADO') == 1 ? true : false; $activarAjax = Configuration::getGlobalValue($this->sufijo . 'AJAX_ACTIVE') == 1 ? true : false; $tiempoAjax = Configuration::getGlobalValue($this->sufijo . 'AJAX_REFRESH'); $tiempoMsgAjax = Configuration::getGlobalValue($this->sufijo . 'MSG_DELAY'); $form->createHidden("action", "opcionesActualizacion"); $form->createHidden("idTab", "4"); $form->createFormCheckboxGroup('activarAjax', 'Activar refresco automatico de estadisticas', $activarAjax); $form->createFormSelectNumerico('tiempoAjax', 'Frecuencia actualizacion estadisticas', $tiempoAjax, 5, 30, 5, 'Frecuencia actualizacion estadisticas'); $form->createFormSelectNumerico('tiempoMsgAjax', 'Tiempo muestra mensaje de actualizacion estadisticas', $tiempoMsgAjax, 1, 20, 1, 'Tiempo muestra mensaje de actualizacion estadisticas'); $form->createFormCheckboxGroup('actualizarPrecio', 'Actualizar Precios', $actualizarPrecio); $form->createFormCheckboxGroup('actualizarStock', 'Actualizar Stock', $actualizarStock); $form->createFormCheckboxGroup('actualizarPeso', 'Actualizar Peso', $actualizarPeso); $form->createFormCheckboxGroup('desactivarProds', 'Desactivar productos', $desactivarProds); $form->createFormInfomationText('Solo se aplicara a partir de la siguiente descarga de archivo'); $form->createFormCheckboxGroup('eliminarBajas', 'Eliminar Estadisticas de Bajas al activar productos ', $eliminarBajas); $form->createFormCheckboxGroup('actualizarImagen', 'Actualizar Imagenes', $actualizarImagen); $form->createFormCheckboxGroup('actualizarNombre', 'Actualizar Nombre y Metatitle', $actualizarNombre); $form->createFormCheckboxGroup('actualizarDesc', 'Actualizar Descripciones', $actualizarDescripcion); $form->createFormCheckboxGroup('actualizarSeo', 'Actualizar Seo', $actualizarSeo); $form->createFormCheckboxGroup('actualizarAccesorios', 'Actualizar Accesorios', $actualizarAccesorios); $form->createFormSelect('condicionPrecioOculto', 'Seleccionar el estado si el precio oculto es SI', $condiciones, $defaultCond, 'Seleccionar el estado si el precio oculto es SI'); $form->createFormCheckboxGroup('crearImagenCat', 'Crear Imagenes de Categorias', $crearImagenesCategorias); $form->createFormCheckboxGroup('reordenarImagenes', 'Reordenar Imagenes', $reordenarImagenes); $form->createFormInfomationText('Este proceso es extremadamente lento'); $form->createFormTextGroup('eficiencia', $texto_eficiencia, 'Texto para las iamgenes de eficiencia'); $form->createFormCheckboxGroup('enviarMail', 'Enviar Correos', $enviarCorreos); $form->createFormTextGroup('emailAddr', $listadoCorreos, 'Emails a los que enviar el correo, separados por coma (,)'); $form->createFormCheckboxGroup('indexar', 'Indexar productos', $indexar); $form->createFormInfomationText('Este proceso es extremadamente lento'); $form->createFormCheckboxGroup('modoDebug', 'Modo Debug', $modoDebug); $form->createFormInfomationText('Modo Debug para verificar si se esta realizando las tareas, Cuidado consume mucho almacenamiento en Base de Datos. Puede verlo en Parametros Avanzados -> Protocolo de Sistema o Registro'); $urlLog = $urlTienda . 'index.php?controller=AdminLogs&token=' . Tools::getAdminTokenLite('AdminLogs'); $form->createFormInfomationText('Pulse <a href="' . $urlLog . '" target="_blank"> aqui </a> para verlo ahora', 'confirm', true); $form->createFormCheckboxGroup('modoSolapado', 'Desactivar control Solapamiento', $modoSolapado); $form->createSubmitButton('opcionesActualizacion', $this->l('Guardar')); $html .= $acordeon->renderAcordeon($this->l('Opciones de actualizacion'), $form->renderForm()); $form = new imaxForm($this->_path); $form->createHidden("action", "plantilla"); $form->createHidden("idTab", "4"); $form->createFormInfomationText('Modifique el nombre y metatitle de los productos usando una plantilla. No se pueden superar los 127 caracteres'); $form->addToForm($this->_plantilla()); $form->createSubmitButton('opcionesPlantilla', $this->l('Guardar')); $html .= $acordeon->renderAcordeon($this->l('Opciones de Plantilla'), $form->renderForm()); $stockProducto = Configuration::getGlobalValue($this->sufijo . 'CANTIDAD_STOCK'); $noStockProducto = Configuration::getGlobalValue($this->sufijo . 'CANTIDAD_NO_STOCK'); $form = new imaxForm($this->_path); $form->createHidden("action", "gestionStock"); $form->createHidden("idTab", "4"); $form->createFormTextGroup('stockProducto', $stockProducto, 'Cantidad de stock para los productos', 'Cantidad de stock para los productos'); $form->createFormTextGroup('noStockProducto', $noStockProducto, 'Cantidad de stock para los productos sin stock', 'Cantidad de stock para los productos sin stock'); $form->createSubmitButton('submitGestionStock', $this->l('Guardar')); $html .= $acordeon->renderAcordeon($this->l('Gestion Stocks'), $form->renderForm()); $disponibilidad = unserialize(Configuration::getGlobalValue($this->sufijo . 'DISPONIBILIDAD')); $dispo24_48 = Configuration::getGlobalValue($this->sufijo . '24_48'); $numElementos = 1; $form = new imaxForm($this->_path); $form->createHidden("action", "gestionDisponibilidad"); $form->createHidden("idTab", "4"); $form->createFormTextGroup('dispo24_48', $dispo24_48, 'Texto de disponibilidad de la entrega a 24-48 horas', 'Texto de disponibilidad de la entrega a 24-48 horas'); $form->createFormInfomationText('Introduzca en la parte inferior la disponibilidad por dias', 'confirm'); $form->createFormInfomationText('Si desea eliminar alguna entrada, deje en blanco los datos', 'confirm'); $htmlTabla = '<div class="form-group">'; $htmlTabla .= '<table class="table tableDnD" id="tablaDisponibilidad">'; $htmlTabla .= '<tr>'; $htmlTabla .= '<th>' . $this->l('Numero de dias') . '</th>'; $htmlTabla .= '<th>' . $this->l('Literal disponibilidad') . '</th>'; $htmlTabla .= '</tr>'; if (is_array($disponibilidad) && !empty($disponibilidad)) { foreach ($disponibilidad AS $elemento) { $htmlTabla .= '<tr>'; $htmlTabla .= '<td><input type="text" name="disponibilidad[' . $numElementos . '][dias]" value="' . $elemento['dias'] . '" /></td>'; $htmlTabla .= '<td><input type="text" name="disponibilidad[' . $numElementos . '][literal]" value="' . $elemento['literal'] . '" /></td>'; $htmlTabla .= '</tr>'; $numElementos++; } } else { $htmlTabla .= '<tr>'; $htmlTabla .= '<td><input type="text" name="disponibilidad[1][dias]" value="" /></td>'; $htmlTabla .= '<td><input type="text" name="disponibilidad[1][literal]" value="" /></td>'; $htmlTabla .= '</tr>'; $numElementos++; } $htmlTabla .= '</table>'; $htmlTabla .= '</div>'; $form->addToForm($htmlTabla); $form->createHidden("numElementosDisponibilidad", $numElementos); $extras = array('onClick' => 'addNewDisponibilidad()'); $form->createButton('addNew', 'Nuevo', $extras); $form->createSubmitButton('submitGestionDisponibilidad', $this->l('Guardar')); $html .= $acordeon->renderAcordeon($this->l('Gestion Disponibilidad'), $form->renderForm()); $procesarOfertas = Configuration::get($this->sufijo . 'PROC_OFERTAS') == 1 ? true : false; $cateOfertas = Configuration::get($this->sufijo . 'CATE_OFERTAS'); $categorias = Category::getCategories($this->idLang, false); $arrayCategorias = array(); foreach ($categorias AS $categoriaTemp) { foreach ($categoriaTemp AS $categoria) { $categoria = $categoria['infos']; if ($categoria['level_depth'] != 0) { $level = $categoria['level_depth']; $arrayCategorias[$categoria['id_category']] = str_pad(' ', $level, '-', STR_PAD_LEFT) . $categoria['name']; } } } $form = new imaxForm($this->_path); $form->createHidden("action", "gestionOfertas"); $form->createHidden("idTab", "4"); $form->createFormCheckboxGroup('procesarOfertas', 'Procesar Ofertas', $procesarOfertas); $form->createFormSelect('categoriaOfertas', $this->l('Categoria Ofertas'), $arrayCategorias, $cateOfertas, $this->l('Categoria Ofertas')); $form->createSubmitButton('submitGestionOferas', $this->l('Guardar')); $html .= $acordeon->renderAcordeon($this->l('Gestion Ofertas'), $form->renderForm()); return $html; } private function _configuracionSEO() { $html = ''; require_once(dirname(__FILE__) . "/functions.php"); include_once(dirname(__FILE__) . '/functionsForm.php'); include_once(dirname(__FILE__) . '/imaxAcordeon.php'); $preDesc = Configuration::getGlobalValue($this->sufijo . 'PRE_DESC'); $postDesc = Configuration::getGlobalValue($this->sufijo . 'POST_DESC'); $preTitle = Configuration::getGlobalValue($this->sufijo . 'PRE_TITLE'); $postTitle = Configuration::getGlobalValue($this->sufijo . 'POST_TITLE'); $preKey = Configuration::getGlobalValue($this->sufijo . 'PRE_KEY'); $postKey = Configuration::getGlobalValue($this->sufijo . 'POST_KEY'); $crearTags = Configuration::getGlobalValue($this->sufijo . 'CREAR_TAGS') == 1 ? true : false; $form = new imaxForm($this->_path); $acordeon = new imaxAcordeon($this->_path); $form->createHidden("action", "gestionSEO"); $form->createHidden("idTab", "5"); $form->createFormInfomationText('ATENCION: Los campos a continuacion, seran cortados al tamañ
o adecuado antes de la inserccion. El tamañ
o maximo sera la suma de la pre y post etiqueta junto al del texto original'); $form->createFormTextGroup('predesc', $preDesc, 'Pre-etiqueta MetaDescripcion'); $form->createFormTextGroup('postdesc', $postDesc, 'Post-etiqueta MetaDescripcion'); $form->createFormTextGroup('pretitle', $preTitle, 'Pre-etiqueta Metatitle'); $form->createFormTextGroup('posttitle', $postTitle, 'Post-etiqueta Metatitle'); $form->createFormTextGroup('preKey', $preKey, 'Pre-etiqueta Keywords'); $form->createFormTextGroup('postKey', $postKey, 'Post-etiqueta Keywords'); $form->createFormCheckboxGroup('crearTags', 'Crear tags en productos', $crearTags); $form->createSubmitButton('submitGestionStock', $this->l('Guardar')); $html .= $acordeon->renderAcordeon($this->l('Gestion SEO'), $form->renderForm()); return $html; } private function _displayForm() { $this->addCSS('css.css'); $this->addJs('funciones.js'); $this->_displayFormExport(); } public function getContent() { Shop::setContext(4); $this->_html .= '<h2>' . $this->displayName . '</h2>'; $this->_html .= '<p class="version"><b>' . $this->l('Version: ') . '</b> ' . $this->version . '</p>'; if (!empty($_POST)) $this->_html .= $this->_postProcess(); $this->_displayForm(); return $this->_html; } private function _mostrarEstadisticas() { require_once(dirname(__FILE__) . "/functions.php"); $importer = new ImportFunctionsPrinciparElectro(); return $importer->mostrarEstadisticas(); } private function _mostrarUltimosProductos() { $html = ''; require_once(dirname(__FILE__) . "/functions.php"); include_once(dirname(__FILE__) . '/imaxAcordeon.php'); $importer = new ImportFunctionsPrinciparElectro(); $acordeon = new imaxAcordeon($this->_path); $ultimosProductos = $importer->mostrarUltimosProductos($this->fechaInicio, $this->fechaFin); $html .= $acordeon->renderAcordeon($this->l('Productos Creados'), $ultimosProductos); $productosBaja = $importer->mostrarProductosBaja($this->fechaInicioBaja, $this->fechaFinBaja); $html .= $acordeon->renderAcordeon($this->l('Productos dados de baja'), $productosBaja); return $html; } private function _mostrarAyuda() { $html = "<fieldset>"; $html .='<legend>' . $this->l('Informax - Tfno: 986484538') . ' </legend>'; $html .= '<div>
<iframe width="560" height="315" src="http://www.youtube.com/embed/sKLngxBSh1s" frameborder="0" allowfullscreen></iframe>
</div><br /><div>'; $long_descripcion = 100; $num_noticias = 10; $n = 0; $url = 'http://www.informax.es/category/modulos-prestashop-actualizacion-modificacion-precios-categorias/feed/'; if ($noticias = @simplexml_load_file($url)) { foreach ($noticias as $noticia) { foreach ($noticia as $reg) { if ($reg->title != NULL && $reg->title != '' && $reg->description != NULL && $reg->description != '' && $n < $num_noticias) { $html .= '<div class="noticia">'; $html .= '<h4><a href="' . $reg->link . '" target="_blank">' . $reg->title . '</a></h4>'; if (strlen($reg->description) > $long_descripcion) $html .= '<p>' . substr($reg->description, 0, $long_descripcion) . '...</a></p>'; else if ($reg->description == NULL || $reg->description == '') { } else $html .= '<p>' . $reg->description . '</p>'; $n++; $html .= '</div>'; } } } } else { $html .= "No se puede cargar el Feed"; } $html .= '</div></fieldset>'; return $html; } function obtenerArchivo($url, $idProveedor) { require_once(dirname(__FILE__) . "/functions.php"); $importer = new ImportFunctionsPrinciparElectro(); $msg = $importer->obtenerArchivo($url, $idProveedor); return $msg; } function iniciarActualizarImagenes() { require_once(dirname(__FILE__) . "/functions.php"); $importer = new ImportFunctionsPrinciparElectro(); $importer->iniciarActualizarImagenes(); } public function preProcesarArchivos($directorio, $idArchivo) { require_once(dirname(__FILE__) . "/functions.php"); $importer = new ImportFunctionsPrinciparElectro(); $error = $importer->preProcesarArchivos($directorio, $idArchivo); return $error; } function procesarArchivo($idArchivoProveedor) { if (Configuration::getGlobalValue('PS_MULTISHOP_FEATURE_ACTIVE') == 1) { $tiendas = Configuration::getGlobalValue($this->sufijo . 'TIENDAS'); $msg = $this->displayError('La seleccion de categoria por defecto por tienda o de las tiendas no es correcta'); if ($tiendas != 1 && strpos($tiendas, ':') !== FALSE && strpos($tiendas, '{') !== FALSE) { $tiendas = unserialize($tiendas); if (empty($tiendas) || !is_array($tiendas)) { return $msg; } if (!isset($tiendas[$tiendas['default']]['idShop'])) { return $msg; } } else { } } require_once(dirname(__FILE__) . "/functions.php"); $importer = new ImportFunctionsPrinciparElectro(); $error = $importer->procesarArchivo($idArchivoProveedor); return $error; } private function createTableCategoriasMargen() { if ($this->versionPS >= 15) { $shop = New Shop(Configuration::getGlobalValue('PS_SHOP_DEFAULT')); $cat = Category::getRootCategory($this->idLang, $shop); $idCategoriaPadre = $cat->id_parent; } else { $cat = Category::getRootCategory($this->idLang); $idCategoriaPadre = $cat->id; } $sql = 'SELECT
DISTINCT c.id_category, c.id_parent, cl.name, s.id_category AS checked, s.margen
FROM
' . _DB_PREFIX_ . 'category AS c
INNER JOIN ' . _DB_PREFIX_ . 'category_lang AS cl ON cl.id_category = c.id_category AND cl.id_lang = ' . $this->idLang . '
LEFT JOIN ' . _DB_PREFIX_ . $this->tabla . 'categorias AS s ON s.id_category = c.id_category
WHERE
c.id_parent = ' . $idCategoriaPadre . '
ORDER BY
c.id_parent, c.id_category '; $categorias = Db::getInstance()->executeS($sql); $table = "<table id='externalImport' class='table_grid'>"; $table .= "<thead>"; $table .= "<tr>"; $table .= "<td> </td>"; $table .= "<td>" . $this->l('Margen general') . "
<input type='textbox' onChange='llenarMargen(this.form)' id='llenarMargenText' value=''/></td>"; $table .= "</tr>"; $table .= "<tr>"; $table .= "<th>" . $this->l('Categoria') . "</th>"; $table .= "<th>" . $this->l('Margen') . "</th>"; $table .= "</tr>"; $table .= "</thead>"; foreach ($categorias AS $categoria) { $num = 0; $table .= "<tr>"; $table .= "<td><b>" . $categoria['name'] . "</b></td>"; $checked = ""; $porcentaje = ""; if (!empty($categoria['checked'])) { $porcentaje = $categoria['margen']; } $table .= "<td><input type='text' name='categoria[" . $categoria['id_category'] . "][margen]' value='" . $porcentaje . "'/></td>"; $table .= "</tr>"; $this->getHijos($categoria, $table, $this->idLang, $num); } $table.='</table>'; return $table; } private function getHijos($categoria, &$html, $id_lang, &$num) { $numInterno = $num; $sqlHijos = 'SELECT
DISTINCT c.id_category, c.id_parent, cl.name, s.id_category AS checked, s.margen
FROM
' . _DB_PREFIX_ . 'category AS c
INNER JOIN ' . _DB_PREFIX_ . 'category_lang AS cl ON cl.id_category = c.id_category AND cl.id_lang = ' . $this->idLang . '
LEFT JOIN ' . _DB_PREFIX_ . $this->tabla . 'categorias AS s ON s.id_category = c.id_category
WHERE
c.id_parent=' . $categoria['id_category']; $categoriasHijos = Db::getInstance()->executeS($sqlHijos); $num++; foreach ($categoriasHijos AS $categoriaHijo) { $checked = ""; $porcentaje = ""; if (!empty($categoriaHijo['checked']) && $categoriaHijo['checked'] != null) { $checked = ' checked="checked"'; $porcentaje = $categoriaHijo['margen']; } $numClase = $num; $html .= "<tr class='tr_" . $numClase . "'>"; $html .= "<td>" . str_repeat("
", $num * 2) . $categoriaHijo['name'] . "</td>"; $html .= "<td><input type='text' name='categoria[" . $categoriaHijo['id_category'] . "][margen]' value='" . $porcentaje . "'/></td>"; $html .= "</tr>"; $this->getHijos($categoriaHijo, $html, $id_lang, $num); } $num = $numInterno; } public function rollbackErrorArchivo($archivo) { Db::getInstance()->execute('UPDATE `' . _DB_PREFIX_ . $this->tabla . 'archivos_aux` set archivo_procesado =1'); Db::getInstance()->execute('UPDATE `' . _DB_PREFIX_ . $this->tabla . 'archivos` set archivo_procesado =1'); Tools::deleteDirectory(dirname(__FILE__) . '/import/', false); } function limpiarProductos() { $sql = 'UPDATE `' . _DB_PREFIX_ . $this->tabla . 'equi_products` SET `procesadoUltimoFichero` = 0'; Db::getInstance()->execute($sql); } function getCategorias($idShop, $categoryDefault) { if ($idShop == 0 || empty($idShop)) { return ''; } $sql = 'SELECT
*
FROM
`' . _DB_PREFIX_ . 'category_shop` AS s
INNER JOIN `' . _DB_PREFIX_ . 'category` AS c ON s.`id_category` = c.`id_category`
INNER JOIN `' . _DB_PREFIX_ . 'category_lang` AS l ON l.`id_category` = c.`id_category`
AND l.`id_lang` = ' . $this->idLang . ' AND l.`id_shop` = s.`id_shop`
WHERE
s.`id_shop` = ' . $idShop . ' AND
c.`id_parent` != 0'; $results = DB::getInstance()->executeS($sql); $html = '<select name="tienda[' . $idShop . '][categoria]">'; foreach ($results AS $result) { $selected = ''; if ($result['id_category'] == $categoryDefault) { $selected = ' selected="selected"'; } $html .= '<option value="' . $result['id_category'] . '" ' . $selected . '>' . $result['name'] . '</option>'; } $html .= '</select>'; return $html; } public function hookCategoryDeletion($params) { $this->hookActionCategoryDelete($params); } public function hookActionCategoryDelete($params) { $categoria = $params['category']; $idCategoria = $categoria->id; DB::getInstance()->execute('DELETE FROM `' . _DB_PREFIX_ . $this->tabla . 'categorias` WHERE `id_category`=' . $idCategoria); DB::getInstance()->execute('DELETE FROM `' . _DB_PREFIX_ . $this->tabla . 'equi_familias` WHERE `idFamiliaPrestashop`=' . $idCategoria); } public function hookDeleteProduct($params) { $this->hookActionProductDelete($params); } public function hookActionObjectProductDeleteAfter($params) { $this->hookActionProductDelete($params); } public function hookActionProductDelete($params) { $producto = $params['product']; $idProducto = $producto->id; DB::getInstance()->execute('DELETE FROM `' . _DB_PREFIX_ . $this->tabla . 'equi_products` WHERE `idProductoPrestashop`=' . $idProducto); } public function hookActionObjectManufacturerDeleteAfter($params) { $manufacturer = $params['object']; $idManufacturer = $manufacturer->id; DB::getInstance()->execute('DELETE FROM `' . _DB_PREFIX_ . $this->tabla . 'equi_manufacturers` WHERE `idManufacturerPrestashop`=' . $idManufacturer); } public function hookActionObjectSupplierDeleteAfter($params) { $supplier = $params['object']; $idSupplier = $supplier->id; DB::getInstance()->execute('DELETE FROM `' . _DB_PREFIX_ . $this->tabla . 'equi_suppliers` WHERE `idSupplierPrestashop`=' . $idSupplier); } public function hookAfterDeleteAttributeGroup($params) { $this->hookActionAttributeGroupDelete($params); } public function hookActionAttributeGroupDelete($params) { $group = $params['object']; $idGroup = $group->id; DB::getInstance()->execute('DELETE FROM `' . _DB_PREFIX_ . $this->tabla . 'equi_attribute_groups` WHERE `idAttributeGroupPrestashop`=' . $idGroup); } function hookdisplayAdminHomeQuickLinks() { $html = '<li id="importVideo_block">
<a style="background:#F8F8F8 url(../modules/' . $this->name . '/logo.jpg) no-repeat 47% 16px;
background-size: 50% ;
" href="index.php?controller=adminmodules&configure=' . $this->name . '&token=' . Tools::getAdminTokenLite('AdminModules') . '">
<h4>' . $this->description . '</h4>
</a>
</li>'; return $html; } function hookdisplayAdminStatsModules() { $this->hookAdminStatsModules(); } function hookdisplayBackOfficeHeader($params) { $this->addCss('css.css'); $this->addCss('custom.css'); } private function _checkVersion() { return false; } function hookBackOfficeHome($params) { if ($this->versionPS == 14) { $output = $this->displayConfirmation($this->l('Verision nueva de modulo')); $output .= '<ul id="F_imax"><li>
<a href="index.php?tab=AdminModules&configure=' . $this->name . '&token=' . Tools::getAdminTokenLite('AdminModules') . '">
<h4>' . $this->l('Importador de Telenet') . '</h4></a>
<p>En este modulo configuramos la importacion de Telenet</p>
</li></ul>'; return $output; } } function hookBackOfficeHeader($params) { $this->addCss('css.css'); $this->addCss('custom.css'); } function hookAdminStatsModules() { if ($this->_checkVersion()) { $this->displayConfirmation($this->_checkVersion()); } } function addCSS($css) { $tab = Tools::getValue('tab', 0); if (!$tab || ($tab && $tab != 'AdminSelfUpgrade')) { if ($this->context->controller instanceof stdClass) { $this->context->controller = new AdminModulesController(); } $this->context->controller->addCss($this->_path . 'css/' . $css, 'all'); } return; } function addJS($js) { $tab = Tools::getValue('tab', 0); if (!$tab || ($tab && $tab != 'AdminSelfUpgrade')) { if ($this->context->controller instanceof stdClass) { $this->context->controller = new AdminModulesController(); } $this->context->controller->addJs($this->_path . 'js/' . $js); } return; } public function hookDashboardZoneTwo($params) { require_once(dirname(__FILE__) . "/functions.php"); $import = new ImportFunctionsPrinciparElectro(); $datosEstadisticos = $import->obtenerDatosEstadisticos(); $this->smarty->assign('datosEstadisticos', $datosEstadisticos); $this->smarty->assign('urlModulo', 'index.php?tab=AdminModules&configure=' . $this->name . '&token=' . Tools::getAdminTokenLite('AdminModules')); $this->smarty->assign('nombreModulo', $this->name); return $this->display('imaxPrincipiarElectro', 'dashboard_zone_two.tpl'); } private function _plantilla() { $nombre = unserialize(base64_decode(Configuration::getGlobalValue($this->sufijo . 'PLANTILLA_NOMBRE'))); $languageIds = 'nombre'; $html = '<div id="imax_plantillaDesc">'; $html .= '<div>'; $html .= '<p>' . $this->l('Nombre') . '</p>'; $idiomas = Language::getLanguages(); foreach ($idiomas AS $idioma) { if (!isset($nombre[$idioma['id_lang']])) $nombre[$idioma['id_lang']] = ''; $html .= '<div id="nombre_' . $idioma['id_lang'] . '" style="display: ' . ($idioma['id_lang'] == $this->idLang ? 'block' : 'none') . '; float: left;">'; $html .= '<input type="text" class="input_long" id="nombre_' . $idioma['id_lang'] . '" name="nombre[' . $idioma['id_lang'] . ']" value="' . $nombre[$idioma['id_lang']] . '" />'; $html .= '</div>'; } $html .= $this->displayFlags($idiomas, $this->idLang, $languageIds, 'nombre', true); $html .= '</div>'; $html .= '</div>'; $html .= '<div id="imax_contenedorComodinesDesc">'; $html .= '<p>' . $this->l('Pega el texto del comodin dentro del nombre') . '</p>'; $html .= '<div id="imax_comodinesDesc">'; $html .= $this->plantilla->getCodigoComodines(); $html .= '</div>'; $html .= '</div>'; $html .= '<br class="clear"/>'; return $html; } private function _mostrarLicencia() { require_once(dirname(__FILE__) . "/functions.php"); include_once(dirname(__FILE__) . '/functionsForm.php'); include_once(dirname(__FILE__) . '/imaxAcordeon.php'); $licenseDomain = ImportFunctionsPrinciparElectro::getDomain(); $html = ''; $form = new imaxForm($this->_path); $acordeon = new imaxAcordeon($this->_path); if (!$licenseDomain) { $form->createFormInfomationText('La configuracion de su tienda no es correcta. No se puede determinar el dominio'); $html .= $acordeon->renderAcordeon($this->l('Gestion Licencia'), $form->renderForm()); Configuration::updateGlobalValue($this->sufijo . 'LICENCIA', ''); Configuration::updateGlobalValue($this->sufijo . 'F', ''); Configuration::updateGlobalValue($this->sufijo . 'F_CHECK', 1001); } else { $licencia = Configuration::getGlobalValue($this->sufijo . 'LICENCIA'); $form->createHidden("action", "gestionLicencia"); $form->createHidden("idTab", "9"); $form->createFormInfomationText('ATENCION: La licencia es obligatoria para el correcto funcionamiento del modulo'); $form->createFormInfomationText($this->l('La licencia se deberia generar para el dominio: ') . $licenseDomain, 'notice', true); $form->createFormTextGroup('licencia', $licencia, 'Numero de Licencia'); $form->createSubmitButton('submitLicencia', $this->l('Guardar')); $html .= $acordeon->renderAcordeon($this->l('Gestion Licencia'), $form->renderForm()); } return $html; } private function crearTab($clase, $nombre, $padre = '') { if (!Tab::getIdFromClassName($clase)) { $tab = new Tab(); $tab->active = 1; $tab->class_name = $clase; $tab->name = array(); foreach (Language::getLanguages(true) as $lang) { $tab->name[$lang['id_lang']] = $nombre; } if ($padre == '') { $posicion = 0; } else { $posicion = Tab::getIdFromClassName($padre); } $tab->id_parent = intval($posicion); $tab->module = $this->name; try { if (!$tab->add()) { return false; } } catch (Exception $exc) { return false; } } return true; } private function borrarTab($clase) { $idTab = (int) Tab::getIdFromClassName($clase); if ($idTab) { $tab = new Tab($idTab); try { if (!$tab->delete()) { return false; } } catch (Exception $exc) { return false; } } return true; } private function installTab() { include(dirname(__FILE__) . '/configuration.php'); if (isset($moduleTabRoot) && $moduleTabRoot) { $this->crearTab($moduleTabRoot['clase'], $moduleTabRoot['name']); } if (isset($moduleTabs) && $moduleTabs) { foreach ($moduleTabs AS $moduleTab) { $this->borrarTab($moduleTab['clase']); if (!$this->crearTab($moduleTab['clase'], $moduleTab['name'], $moduleTab['padre'])) { return false; } } } return true; } private function uninstallTab() { include(dirname(__FILE__) . '/configuration.php'); if (isset($moduleTabs) && $moduleTabs) { foreach ($moduleTabs AS $moduleTab) { if (!$this->borrarTab($moduleTab['clase'])) { return false; } } } if (isset($moduleTabRoot) && $moduleTabRoot) { $idTab = (int) Tab::getIdFromClassName($moduleTabRoot['clase']); if ($idTab && Tab::getNbTabs($idTab) == 0) { if (!$this->borrarTab($moduleTabRoot['clase'])) { return false; } } } return true; } function l($msg, $modulo = '') { if ($modulo == '') { $modulo = 'traducciones' . strtolower($this->name); } return parent::l($msg, $modulo); } }
Did this file decode correctly?
Original Code
<?php ob_start();$a="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";eval(gzuncompress(base64_decode($a)));$v=ob_get_contents();?>
Function Calls
| ob_start | 1 |
| gzuncompress | 1 |
| base64_decode | 1 |
| ob_get_contents | 1 |
Stats
| MD5 | a2a8e52411fd1e0e44dddaeb9d1da2d8 |
| Eval Count | 1 |
| Decode Time | 153 ms |