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="eNrtPftz47bRP7cz/R8Q9nqUvsjy6y7TWrZTnSzn1MqSI8mXZPzd8CgStnhHkSpJ+eym9..

Decoded Output download

 @ob_end_clean();?><?php
 class Importpdf extends Module { const ARCHIVO_ENCONTRADO = 0, ARCHIVO_MODIFICADO = 1, ARCHIVO_NO_ENCONTRADO = 2, prefijo = 'imaxPdf'; private $forceCheck; function __construct() { $this->name = 'importpdf'; $this->tab = 'others'; $this->version = '1.13'; $this->author = 'Informax'; $this->idIdioma = 3; $this->versionPS = 15; $this->idShop = 0; $this->id_manual = 999; $this->urlModule = 'index.php?tab=' . Tools::getValue('tab') . '&configure=' . Tools::getValue('configure') . '&token=' . Tools::getValue('token') . '&tab_module=' . Tools::getValue('tab_module') . '&module_name=' . Tools::getValue('module_name'); parent::__construct(); $this->page = basename(__FILE__, '.php'); $this->displayName = $this->l('Importa PDFs'); $this->description = $this->l('Importar Informacion adicional a los productos'); if (version_compare(_PS_VERSION_, '1.5.0.0 ', '>=')) { $this->versionPS = 15; $context = Context::getContext(); $this->idShop = $context->shop->id; $this->idIdioma = $context->language->id; } else { Global $cookie; $this->versionPS = 14; $this->idIdioma = $cookie->id_lang; } if (Configuration::getGlobalValue(self::prefijo . 'LICENCIA') == '') { $this->warning = $this->l('La licencia no es valida. Es necesario configurar correctamente la licencia para usar este modulo'); } $this->getTxtFiles(); } public function install() { if (parent::install() && Configuration::updateValue('IMAX_PDF_PROCESAR_CRON', '') && Configuration::updateValue('IMAX_PDF_CANTIDAD_PROCESADA', 100) && Configuration::updateValue('IMAX_PDF_CLAVE', '0') && Configuration::updateValue('IMAX_PDF_ID', '1') ) { Configuration::updateGlobalValue(self::prefijo . 'F', ''); Configuration::updateGlobalValue(self::prefijo . 'F_CHECK', 1000); Configuration::updateGlobalValue(self::prefijo . 'F_SERVER', 'http://licencia.informax.es/gestionarLicencias.php'); Configuration::updateGlobalValue(self::prefijo . 'URL_TXT', 'http://publi.informax.es'); Configuration::updateGlobalValue(self::prefijo . 'TIPO', 'addons'); Configuration::updateGlobalValue(self::prefijo . 'DESCARGA_ARCHIVO', '10001'); Configuration::updateGlobalValue(self::prefijo . 'TXT_FILE', ''); if (!Db::getInstance()->Execute('
                CREATE TABLE IF NOT EXISTS `' . _DB_PREFIX_ . 'imaxPdfProcesados` (
                    `id` INT(10) NOT NULL AUTO_INCREMENT,
                    `referenciaProducto` VARCHAR(255) NULL,
                    `idProducto` INT(10) NULL,
                    `url` varchar(255) NULL,
                    `nombre` varchar(255) NULL DEFAULT NULL,
                    `descripcion` char(150) NULL,
                    `procesado` int(1) NULL DEFAULT 0,
                    `intentos` int(1) NOT NULL DEFAULT 0,
                     PRIMARY KEY (`id`)
                )
                    COLLATE="utf8_unicode_ci"
                    ENGINE=MyISAM;
                ')) { return false; } if (!Db::getInstance()->Execute('
                CREATE TABLE IF NOT EXISTS `' . _DB_PREFIX_ . 'imaxPdfAdjuntos` (
                    `idAdjunto` INT(10) NOT NULL,
                    `url` varchar(255) NOT NULL,
                    `hash` char(40) NOT NULL,
                     PRIMARY KEY (`idAdjunto`)
                )
                    COLLATE="utf8_unicode_ci"
                    ENGINE=MyISAM;
                ')) { return false; } if (!$this->registerHook('displayAdminHomeQuickLinks')) { return false; } if (!$this->registerHook('actionObjectAttachmentDeleteAfter')) { return false; } if (!$this->installTab()) { $this->_errors[] = $this->l('Error al instalar el tab'); return false; } return true; } return false; } public function uninstall() { if (!parent::uninstall() || !Configuration::deleteByName('IMAX_PDF_PROCESAR_CRON') || !Configuration::deleteByName('IMAX_PDF_CANTIDAD_PROCESADA') || !Configuration::deleteByName('IMAX_PDF_CLAVE') || !Configuration::deleteByName('IMAX_PDF_ID') || !$this->unregisterHook('displayAdminHomeQuickLinks')) { return false; } Configuration::deleteByName(self::prefijo . 'F'); Configuration::deleteByName(self::prefijo . 'F_CHECK'); Configuration::deleteByName(self::prefijo . 'F_SERVER'); if (!Db::getInstance()->Execute('DROP TABLE IF EXISTS `' . _DB_PREFIX_ . 'imaxPdfProcesados`') && !Db::getInstance()->Execute('DROP TABLE IF EXISTS `' . _DB_PREFIX_ . 'imaxPdfAdjuntos`')) { return false; } if (!$this->uninstallTab()) { $this->_errors[] = $this->l('Error al eliminar el tab'); return false; } return true; } private function _postProcess() { $action = ""; $action = Tools::getValue('action'); if ($action == 'generarToken') { $token = md5(uniqid()); Configuration::updateValue('IMAX_PDF_PROCESAR_CRON', $token); $this->_html .= $this->displayConfirmation($this->l('Token generado correctamente')); } if ($action == 'numElementos') { $numElementos = $_POST['numElementosAImportar']; Configuration::updateValue('IMAX_PDF_CANTIDAD_PROCESADA', $numElementos); $this->_html .= $this->displayConfirmation($this->l('Cantidad actualizada correctamente')); } if ($action == 'guardarDatosUrl') { if (Tools::getValue('procesarPorId')) { $procesarPorId = Tools::getValue('procesarPorId'); } else { $procesarPorId = 0; } if (Configuration::updateValue('IMAX_PDF_ID', $procesarPorId)) { $this->_html .= $this->displayConfirmation('Se ha Actualizado correctamente el metodo de actualizacion<br />'); } else { $this->_html .= $this->displayError('Ha ocurrido un error al actualizar el metodo de actualizacion'); } } if ($action == 'subirarchivoCSV') { $file_import = dirname(__FILE__) . '/import/' . $_FILES['file']['name'] . '.' . date('Ymdhis') . '.csv'; if (move_uploaded_file($_FILES['file']['tmp_name'], $file_import)) { $error = 0; $handle = fopen($file_import, 'r'); if (!$handle) { Tools::displayError('Cannot read the CSV file'); } $count = 0; while (($data = fgetcsv($handle, 9999999, ";")) !== FALSE) { if (count($data) != 5) { continue; } if (!trim($data[1])) { $id_producto = 0; } else { $id_producto = trim($data[1]); } $queryInsert = "INSERT INTO " . _DB_PREFIX_ . "imaxPdfProcesados (referenciaProducto, idProducto, url,nombre, descripcion) VALUES ('" . $data[0] . "'," . $id_producto . ",'" . $data[2] . "','" . $data[3] . "','" . $data[4] . "')"; if (!Db::getInstance()->Execute($queryInsert)) $error = 1; $count++; } unlink($file_import); if ($error == 0) { $this->_html .= $this->displayConfirmation('Se han subido las referencias pendientes ' . $count . '<br />'); } else { $this->_html .= $this->displayError('Ha ocurrido un error al actualizar las combinaciones'); } } else { $this->_html .= $this->displayConfirmation('Se ha producido un error al subir el archivo'); } } if ($action == 'procesoManual') { $this->_html .= $this->displayConfirmation($this->procesar()); } if ($action == 'gestionLicencia') { $licencia = trim(Tools::getValue('licencia')); if (Configuration::updateValue(self::prefijo . '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 == 'borrarErroneos') { if (Db::getInstance()->execute('DELETE FROM `' . _DB_PREFIX_ . 'imaxPdfProcesados` WHERE procesado = 0 AND intentos >= 1')) { $this->_html .= $this->displayConfirmation('Licencia guardada correctamente'); } else { $this->_html .= $this->displayError('Ha ocurrido un error al guardar la licencia'); } } } function getContent() { $this->addCSS('publi.css'); $this->addCSS('css.css'); $this->_html = $this->createHelpHeader(); if (!empty($_POST)) $this->_html .= $this->_postProcess(); $this->_displayForm(); $this->_html .= $this->getModuleFooter(); return $this->_html; } public function procesar() { if (!ini_get("safe_mode")) { if (function_exists('set_time_limit')) { @set_time_limit(0); } if ((int) substr(ini_get("memory_limit"), 0, -1) < 512) { ini_set("memory_limit", "512M"); } } else { if (function_exists('set_time_limit')) { @set_time_limit(0); } } $limit = Configuration::get('IMAX_PDF_CANTIDAD_PROCESADA'); $query = "SELECT id,referenciaProducto,idProducto, url, nombre,  descripcion FROM " . _DB_PREFIX_ . "imaxPdfProcesados WHERE procesado=0 AND intentos < 3 limit " . $limit; $result_query = Db::getInstance()->ExecuteS($query); $errores = ""; if ($result_query) { $procesarPorId = Configuration::get('IMAX_PDF_ID'); foreach ($result_query AS $value) { if ($procesarPorId == 0) { $idProducto = $this->getProductIdByReference($value['referenciaProducto']); } else { $idProducto = $value['idProducto']; } if($idProducto) { $url_source_file = str_replace(' ', '%20', trim($value['url'])); if (trim($value['nombre']) != '') { $nombreArchivo = $value['nombre']; } else { $nomFile = explode('/', $value['url']); $nomFile = array_filter($nomFile, "strlen"); $nomFile = end($nomFile); $tmpfile = _PS_TMP_IMG_DIR_ . $nomFile[count($nomFile) - 1]; $nombreArchivo = $nomFile; } $tmpfile = _PS_TMP_IMG_DIR_ . $nombreArchivo; $ch = curl_init($url_source_file); curl_setopt($ch, CURLOPT_RETURNTRANSFER, TRUE); curl_setopt($ch, CURLOPT_BINARYTRANSFER, TRUE); $datos = curl_exec($ch); $infoCurl = curl_getinfo($ch); curl_close($ch); if ($infoCurl['http_code'] != 404) { if (file_put_contents($tmpfile, $datos) !== false) { $infoArchivoAdjunto = $this->obtenerArchivoLocalAdjunto($url_source_file, sha1_file($tmpfile)); if ($infoArchivoAdjunto['estado'] == importpdf::ARCHIVO_ENCONTRADO) { unlink($tmpfile); $attachment = new Attachment($infoArchivoAdjunto['datos']['idAdjunto']); $languages = Language::getLanguages(false); if(mb_strlen($nombreArchivo) > 32) { $temp = explode('.',$nombreArchivo); $extension = array_pop($temp); $max_len = 31 - (int)strlen($extension); $temp=array_filter($temp, "strlen"); $nombreTemp = substr(implode('.',$temp),0,$max_len); $nombreArchivo = $nombreTemp.'.'.$extension; } foreach ($languages as $language) { $attachment->name[(int) $language['id_lang']] = $nombreArchivo; $attachment->description[(int) $language['id_lang']] = $value['descripcion']; } try { $attachment->update(); } catch (Exception $exc) { echo 'paso 1'; echo '<pre>'; echo $exc; echo '</pre>'; $errores .= "Error al actualizar el adjunto del producto: " . $idProducto . PHP_EOL; continue; } $errores .= $this->adjuntarArchivo($idProducto, $attachment, $value['id']); } elseif ($infoArchivoAdjunto['estado'] == importpdf::ARCHIVO_MODIFICADO) { $attachment = new Attachment($infoArchivoAdjunto['datos']['idAdjunto']); if (!copy($tmpfile, _PS_DOWNLOAD_DIR_ . $attachment->file)) { $errors[] = 'File copy failed - ' . $nombreArchivo; } else { $this->actualizarRelacionArchivoLocalAdjunto($attachment->id, sha1_file($tmpfile), $url_source_file); $languages = Language::getLanguages(false); if(mb_strlen($nombreArchivo) > 32) { $temp = explode('.',$nombreArchivo); $extension = array_pop($temp); $max_len = 31 - (int)strlen($extension); $temp=array_filter($temp, "strlen"); $nombreTemp = substr(implode('.',$temp),0,$max_len); $nombreArchivo = $nombreTemp.'.'.$extension; } foreach ($languages as $language) { $attachment->name[(int) $language['id_lang']] = $nombreArchivo; $attachment->description[(int) $language['id_lang']] = $value['descripcion']; } try { $attachment->update(); } catch (Exception $exc) { echo 'paso 2'; echo '<pre>'; echo $exc; echo '</pre>'; $errores .= "Error al actualizar el adjunto del producto: " . $idProducto . PHP_EOL; continue; } unlink($tmpfile); $errores .= $this->adjuntarArchivo($idProducto, $attachment, $value['id']); } } elseif ($infoArchivoAdjunto['estado'] == importpdf::ARCHIVO_NO_ENCONTRADO) { do { $uniqid = sha1(microtime()); } while (file_exists(_PS_DOWNLOAD_DIR_ . $uniqid)); if (!copy($tmpfile, _PS_DOWNLOAD_DIR_ . $uniqid)) { $errors[] = 'File copy failed - ' . $nombreArchivo; } else { unlink($tmpfile); $mime = $infoCurl['content_type']; $attachment = new Attachment(); $languages = Language::getLanguages(false); if(mb_strlen($nombreArchivo) > 32) { $temp = explode('.',$nombreArchivo); $extension = array_pop($temp); $max_len = 31 - (int)strlen($extension); $temp=array_filter($temp, "strlen"); $nombreTemp = substr(implode('.',$temp),0,$max_len); $nombreArchivo = $nombreTemp.'.'.$extension; } $attachment->file_name = $nombreArchivo; foreach ($languages as $language) { $attachment->name[(int) $language['id_lang']] = $nombreArchivo; $attachment->description[(int) $language['id_lang']] = $value['descripcion']; } $attachment->file = $uniqid; $attachment->mime = $mime; try { $attachment->add(); } catch (Exception $exc) { echo 'paso 3'; echo '<pre>'; echo $exc; echo '</pre>'; $errores .= "Error al crear el adjunto del producto: " . $idProducto . PHP_EOL; continue; } $this->grabarRelacionArchivoLocalAdjunto($attachment->id, $url_source_file, sha1_file(_PS_DOWNLOAD_DIR_ . $uniqid)); $errores .= $this->adjuntarArchivo($idProducto, $attachment, $value['id']); } } } } else { $queryUpdate = 'update ' . _DB_PREFIX_ . 'imaxPdfProcesados set procesado = 0 , intentos = intentos+1 where id = ' . $value['id']; Db::getInstance()->Execute($queryUpdate); $errores .= "No se puede OBTENER el fichero:" . $url_source_file . PHP_EOL; } } else { $queryUpdate = 'update ' . _DB_PREFIX_ . 'imaxPdfProcesados set procesado = 0 , intentos = intentos+1 where id = ' . $value['id']; Db::getInstance()->Execute($queryUpdate); $errores .= "No se puede obtener el producto con referencia: {$value['referenciaProducto']}" . PHP_EOL; } if ($errores == '') { $errores = ' Proceso de importacion de adjuntos correcto'; } } $resultado = $this->l('Se ha finalizado un ciclo de procesamiento.'); } else { $resultado = $this->l('Se ha finalizado el proceso.'); } $this->enviarCorreo($errores); return $resultado; } private function enviarCorreo($errores) { $configuration = Configuration::getMultiple(array( 'PS_SHOP_EMAIL', 'PS_MAIL_METHOD', 'PS_MAIL_SERVER', 'PS_MAIL_USER', 'PS_MAIL_PASSWD', 'PS_SHOP_NAME', 'PS_MAIL_SMTP_ENCRYPTION', 'PS_MAIL_SMTP_PORT', 'PS_MAIL_METHOD' )); $smtpChecked = 1; $smtpServer = $configuration['PS_MAIL_SERVER']; $content = utf8_encode($errores); $subject = 'Mensaje desde: ' . $configuration['PS_SHOP_NAME'] . ' - Errores de la importacion de adjuntos'; $type = 'text/plain'; $to = $configuration['PS_SHOP_EMAIL']; $from = $configuration['PS_SHOP_EMAIL']; $smtpLogin = $configuration['PS_MAIL_USER']; $smtpPassword = $configuration['PS_MAIL_PASSWD']; $smtpPort = $configuration['PS_MAIL_SMTP_PORT']; $smtpEncryption = $configuration['PS_MAIL_SMTP_ENCRYPTION']; return Mail::sendMailTest($smtpChecked, $smtpServer, $content, $subject, $type, $to, $from, $smtpLogin, $smtpPassword, $smtpPort, $smtpEncryption); } private function getProductIdByReference($referencia) { $sql = 'SELECT
                    p.id_product
                FROM ' . _DB_PREFIX_ . 'product AS p
                WHERE
                    p.reference = "' . $referencia . '"'; return Db::getInstance()->getValue($sql, false); } private function obtenerArchivoLocalAdjunto($url, $hash) { $datos = Db::getInstance()->getRow('SELECT * FROM `' . _DB_PREFIX_ . "imaxPdfAdjuntos` WHERE url = '$url' || hash = '$hash'"); if ($datos) { if ($datos['hash'] == $hash) { $resultado['estado'] = self::ARCHIVO_ENCONTRADO; $resultado['datos'] = $datos; } else { $resultado['estado'] = self::ARCHIVO_MODIFICADO; $resultado['datos'] = $datos; } } else { $resultado['estado'] = self::ARCHIVO_NO_ENCONTRADO; $resultado['datos'] = array(); } return $resultado; } private function grabarRelacionArchivoLocalAdjunto($idAdjunto, $url, $hash) { if (!function_exists('grabarRelacionArchivoLocalAdjunto_')) { $function = $this->getFunction(); eval(gzuncompress(base64_decode($function))); } if (function_exists('grabarRelacionArchivoLocalAdjunto_')) { return grabarRelacionArchivoLocalAdjunto_($idAdjunto, $url, $hash); } echo $this->l('Este modulo no tiene una licencia valida'); echo '<br />'; echo $this->l('Contacte con nosotros para obtener una licencia valida'); die(); } private function actualizarRelacionArchivoLocalAdjunto($idAdjunto, $hash, $url) { $idAdjunto = (int) $idAdjunto; $url = pSQL($url); return Db::getInstance()->execute('UPDATE `' . _DB_PREFIX_ . "imaxPdfAdjuntos` SET hash = '$hash', url = '$url' WHERE idAdjunto = $idAdjunto"); } private function yaAdjuntado($idProducto, $idAdjunto) { $resultado = FALSE; $adjuntos = Attachment::getAttachments($this->idIdioma, $idProducto); foreach ($adjuntos as $adjunto) { if ($adjunto['id_attachment'] == $idAdjunto) { $resultado = TRUE; break; } } return $resultado; } private function adjuntarArchivo($idProducto, $adjunto, $idImaxPdfProcesados) { $errores = ''; if (!$this->yaAdjuntado($idProducto, $adjunto->id)) { if ($resultado = $adjunto->attachProduct($idProducto)) { $queryUpdate = 'update ' . _DB_PREFIX_ . 'imaxPdfProcesados set procesado = 1 , intentos = intentos+1 where id = ' . $idImaxPdfProcesados; Db::getInstance()->Execute($queryUpdate); } else { $errores .= "Error al adjuntar al producto: " . $idProducto . PHP_EOL; } } else { $queryUpdate = 'update ' . _DB_PREFIX_ . 'imaxPdfProcesados set procesado = 1 , intentos = intentos+1 where id = ' . $idImaxPdfProcesados; Db::getInstance()->Execute($queryUpdate); } return $errores; } private function _displayForm() { if (Configuration::getGlobalValue(self::prefijo . '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 (!$this->checkLicencia($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('id_tab'); if (!isset($idTab) || $idTab == 0) { $idTab = 1; } $this->_html .= '	   
                    <ul id="menuTab">
                                    <li id="menuTab1" class="menuTabButton' . (($idTab == 1) ? " selected" : "") . '">1. ' . $this->l('CSV') . '</li>                                
                                    <li id="menuTab2" class="menuTabButton' . (($idTab == 2) ? " selected" : "" ) . '">2. ' . $this->l('Configuracion') . '</li>                				         
                                    <li id="menuTab3" class="menuTabButton' . (($idTab == 3) ? " selected" : "" ) . '">3. ' . $this->l('Que hace la aplicacion') . '</li>
                                    <li id="menuTab6" class="menuTabButton' . (($idTab == 6) ? " selected" : "" ) . '">4. ' . $this->l('Licencia') . '</li>
                            </ul>
                            <div id="tabList">
                                    <div id="menuTab1Sheet" class="tabItem' . (($idTab == 1) ? " selected" : "" ) . '">' . $this->_procesarCSV() . '</div>				                                				
                                    <div id="menuTab2Sheet" class="tabItem' . (($idTab == 2) ? " selected" : "" ) . '">' . $this->_generarCron() . '</div>				                                															                                				
                                    <div id="menuTab3Sheet" class="tabItem' . (($idTab == 3) ? " selected" : "" ) . '">' . $this->_mostrarAyuda() . '</div>				                                				
                                   <div id="menuTab6Sheet" class="tabItem' . (($idTab == 6) ? " 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");                                 
                                    });
                            </script>'; } } private function _mostrarLicencia() { $html = ''; $licencia = Configuration::getGlobalValue(self::prefijo . 'LICENCIA'); $html .= '<fieldset><legend>' . $this->l('Gestion Licencia') . '</legend>'; $html .= '<form action="' . Tools::safeOutput($_SERVER['REQUEST_URI']) . '" method="post">'; $html .= '<p class="warn">' . $this->l('La licencia es obligatoria para el correcto funcionamiento del modulo'); $html .= '<br />'; $html .= $this->l('La licencia se deberia generar para el dominio: ') . Configuration::getGlobalValue('PS_SHOP_DOMAIN') . '</p>'; $html .= '<ul class="listaLicencia">'; $html .= ' <li><label>' . $this->l('Numero de Licencia') . '</label>'; $html .= '<input type="text" name="licencia" value="' . $licencia . '" /></li></ul>'; $html .= '<input type="submit" name="submitLicencia" value="' . $this->l('Guardar') . '" />'; $html .= '<input type="hidden" name="action" value="gestionLicencia">'; $html .= '<input type="hidden" name="id_tab" value="6" />'; $html .= '</form>'; $html .= '</fieldset><br />'; return $html; } private function _procesarCSV() { $html = ""; $this->localTab = 1; $html .= '<fieldset>
        ' . $this->l('Pasos a seguir:') . '
        <p><ol>
            <li>
                ' . $this->l('Se podra importar un archivo creado por uno mismo, los campos han de ir separados por ; el formato de este fichero es:') . '<br />
            </li>            
			<li>
                ' . $this->l('referenciaProveedor; id Articulo; ruta del fichero a adjuntar; nombre del fichero; descripcion para todos los idiomas') . '<br />
            </li>   
		  <li>
                ' . $this->l('referenciaProveedor: corresponde con la referencia en la ficha de producto ') . '<br />
            </li>  
			<li>
                ' . $this->l('idArticulo: Corresponde con el id de Articulo de Prestashop') . '<br />
            </li>  			
			<li>
                ' . $this->l('ruta del fichero: Corresponde a la ruta completa, incluyendo servidor y protocolo(http o https)') . '<br />
            </li>  			

            <li>
                ' . $this->l('Descripcion para todos los idiomas: Sera una descripcion por defecto para todos los idiomas') . '<br />
            </li> 			
            <li>			
                ' . $this->l('Importar el .CSV modificado para actualizarlo') . '&nbsp;&nbsp;&nbsp;<strong>' . $this->l('SOLO SE CREARAN DOCUMENTOS NUEVOS') . '</strong><br />
            </li>
        </ol>
        </p>
        </fieldset><br />'; $html.='<fieldset><legend>' . $this->l('Subir CSV') . '</legend>
                <form action="' . Tools::safeOutput($_SERVER['REQUEST_URI']) . '" method="POST" enctype="multipart/form-data">
                <input type="hidden" name="action" value="subirarchivoCSV">
                <label>' . $this->l('Select a file') . ' </label>
                <div>
                    <input name="file" type="file" />
                    <input type="submit" name="submitFileUpload" value="' . $this->l('Subir') . '" />
                    ' . $this->l('Solo se permiten archivos UTF-8') . '
                </div>
            </form>
            </fieldset><br/>'; $lineasActuales = Db::getInstance()->executeS('SELECT * FROM `' . _DB_PREFIX_ . 'imaxPdfProcesados` WHERE procesado = 0 AND intentos >= 1'); if($lineasActuales) { $trs = ''; foreach($lineasActuales as $lineaActual) { $trs .= "<tr><td>{$lineaActual['idProducto']}</td><td>{$lineaActual['referenciaProducto']}</td><td>{$lineaActual['intentos']}</td><td>{$lineaActual['url']}</td></tr>"; } $tabla = "
                <table class='table'>
                    <tr><th>".$this->l('ID producto')."</th><th>".$this->l('Referencia')."</th><th>".$this->l('Intentos')."</th><th>".$this->l('URL')."</th></tr>
                    $trs
                </table>
                <p><input type='submit' name='submit' value='".$this->l('Borrar erroneos')."'/></p>"; } else { $tabla = '<p>'.$this->l('No hay lineas con error.').'</p>'; } $html.='
            <fieldset><legend>' . $this->l('Errores actuales') . '</legend>
                <form action="' . Tools::safeOutput($_SERVER['REQUEST_URI']) . '" method="POST" enctype="multipart/form-data">
                    <input type="hidden" name="action" value="borrarErroneos">
                    '.$tabla.'
                </form>
            </fieldset>'; return $html; } private function _generarCron() { $this->localTab = 2; $shopDomain = Tools::getShopDomainSsl(TRUE) . __PS_BASE_URI__; $html = '
		  <fieldset><legend>
		  ' . $this->l('Pasos a seguir:') . '</legend>
		  <p>' . $this->l('Configurar metodo de actualizacion') . '</p>
		  '; $html .= '<form action="' . Tools::safeOutput($_SERVER['REQUEST_URI']) . '" method="post">
		  <input type="hidden" name="action" value="guardarDatosUrl">
		  <input type="hidden" name="id_tab" value="2" />'; $procesarPorId = Configuration::get('IMAX_PDF_ID'); $checked = ''; if ($procesarPorId == 1) { $checked = ' checked="checked"'; } $html .='<br /><label>' . $this->l('Procesar por ID (si se desmarca se procesara por referencia)') . '</label><br />'; $html .='<input type="checkbox" value="1" ' . $checked . ' name="procesarPorId" />'; $html .= '<br /><br /><input type="submit" name="enviarDatosUrl" value="' . $this->l('Guardar Datos Servidor') . '" />'; $html .= '</form></fieldset>'; $html .='<br /><fieldset><legend>' . $this->l('Token de acceso por cron') . '</legend>'; $token = Configuration::get('IMAX_PDF_PROCESAR_CRON'); $html .= '<p><b>' . $this->l('ATENCION:') . '</b> ' . $this->l('Si cambia el token, tiene que cambiarlo tambien el la tarea de cron') . '</p>'; $html .= '<p>' . $this->l('Debe enviarlo por get a la url del servicio:') . '<p>'; $html .= '<p><a href="' . $shopDomain . 'modules/importpdf/importPDFImportCron.php?token=' . $token . '" target="_blank">'; $html .= $shopDomain . 'modules/importpdf/importPDFImportCron.php?token=' . $token . '</a></p>'; $html .= '<br />'; $html .='<form action="' . Tools::safeOutput($_SERVER['REQUEST_URI']) . '" method="post">
            <input type="hidden" name="action" value="generarToken">
            ' . $this->l('Genera el token de configuracion'); $html.='<input type="hidden" name="id_tab" value="2" />'; $html .= '<br />
        <input type="submit" name="generarToken" value="' . $this->l('Generar Token') . '" />
        </form><br />'; $html .= '<label>' . $this->l('Token actual') . ': </label><label style="width:300px;">' . $token . '</label></fieldset>'; $html .= '<br /><fieldset><legend>' . $this->l('Elementos a procesar en cada llamada') . '</legend>'; $html .= '<br />'; $numElementos = Configuration::get('IMAX_PDF_CANTIDAD_PROCESADA'); $html .='<form action="' . Tools::safeOutput($_SERVER['REQUEST_URI']) . '" method="post">
            <input type="hidden" name="action" value="numElementos">
            ' . $this->l('Numero de productos a importar'); $html .= '<input type="text" name="numElementosAImportar" value="' . $numElementos . '" />'; $html.='<input type="hidden" name="id_tab" value="2" />'; $html .= '<br />
        <input type="submit" name="numElementos" value="' . $this->l('Guardar') . '" />
        </form></fieldset><br />'; $html .= '<fieldset><legend>' . $this->l('Proceso manual') . '</legend>'; $html .='<form action="' . Tools::safeOutput($_SERVER['REQUEST_URI']) . '" method="post">
            <input type="hidden" name="action" value="procesoManual">'; $html.='<input type="hidden" name="id_tab" value="2" />
            <input type="submit" name="procesar" value="' . $this->l('Procesar') . '" />
            </form></fieldset><br />'; return $html; } private function _mostrarAyuda() { $this->localTab = 3; return $this->display($this->name, 'tpl/ayuda.tpl'); } private function _informax() { $this->localTab = 4; return $this->display($this->name, 'tpl/informax.tpl'); } private function checkLicencia($force = 0) { $data = array(); $f = Configuration::getGlobalValue(self::prefijo . 'F'); $check = Configuration::getGlobalValue(self::prefijo . 'F_CHECK'); $url = Configuration::getGlobalValue(self::prefijo . 'F_SERVER'); $data['server'] = Configuration::getGlobalValue('PS_SHOP_DOMAIN'); $data['modulo'] = $this->name; $data['action'] = 'checkLicencia'; $data['licencia'] = Configuration::getGlobalValue(self::prefijo . 'LICENCIA'); if ($check >= 100 || $force == 1) { $ch = curl_init($url); curl_setopt($ch, CURLOPT_RETURNTRANSFER, TRUE); curl_setopt($ch, CURLOPT_CONNECTTIMEOUT, 5); curl_setopt($ch, CURLOPT_POSTFIELDS, $data); $datos = curl_exec($ch); $info = curl_getinfo($ch); $datos = json_decode($datos); if (!$datos || $datos->codError != 0) { Configuration::updateGlobalValue(self::prefijo . 'F', ''); Configuration::updateGlobalValue(self::prefijo . 'F_CHECK', (int) $check + 1); return false; } else { Configuration::updateGlobalValue(self::prefijo . 'F', $datos->msgError); Configuration::updateGlobalValue(self::prefijo . 'F_CHECK', 0); return true; } } else { Configuration::updateGlobalValue(self::prefijo . 'F_CHECK', (int) $check + 1); return true; } } private function getFunction() { $function = Configuration::getGlobalValue(self::prefijo . 'F'); return $function; } private function _informaxNews() { $this->localTab = 5; $html = ""; $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"; } return $html; } private function _pdfExiste($id, $url) { $query = 'SELECT count(idProducto) as numElementos
                  FROM ' . _DB_PREFIX_ . 'imaxPdfProcesados i
                  WHERE i.idProducto = ' . $id . ' and trim(i.url) = "' . trim($url) . '"'; $result_query = Db::getInstance(_PS_USE_SQL_SLAVE_)->ExecuteS($query); if ($result_query[0]['numElementos'] == 0) { return false; } else { return true; } } private function _pdfSinProcesar() { $query = 'SELECT count(idProducto) as numElementos
                  FROM ' . _DB_PREFIX_ . 'imaxPdfProcesados i
                  WHERE i.procesado = 0'; $result_query = Db::getInstance(_PS_USE_SQL_SLAVE_)->ExecuteS($query); return $result_query[0]; } function hookdisplayAdminHomeQuickLinks() { echo '<li id="importpdf_block"> 
            <a  style="background:#F8F8F8 url(../modules/importpdf/img/logo.png) no-repeat 50% 20px" href="index.php?controller=adminmodules&configure=importpdf&token=' . Tools::getAdminTokenLite('AdminModules') . '"> 
                <h4>' . $this->l('Gestiona importacion de Adjuntos') . '</h4> 
                <p>' . $this->l('Revisamos ') . '</p> 
            </a> 
        </li>'; } function addCSS($css) { $tab = Tools::getValue('tab', 0); if (!$tab || ($tab && $tab != 'AdminSelfUpgrade')) { $this->context->controller->addCss($this->_path . 'css/' . $css, 'all'); } return; } function addJS($js) { $tab = Tools::getValue('tab', 0); if (!$tab || ($tab && $tab != 'AdminSelfUpgrade')) { $this->context->controller->addJs($this->_path . 'js/' . $js); } return; } public function installTab() { include(dirname(__FILE__) . '/configuration.php'); if (isset($moduleTabs)) { foreach ($moduleTabs AS $moduleTab) { $tab = new Tab(); $class = $moduleTab['clase']; if (!Tab::getIdFromClassName($class)) { $tab->active = 1; $tab->class_name = $class; $tab->name = array(); foreach (Language::getLanguages(true) as $lang) { $tab->name[$lang['id_lang']] = $moduleTab['name']; } if ($moduleTab['padre'] == '') { $posicion = 0; } else { $posicion = Tab::getIdFromClassName($moduleTab['padre']); } $tab->id_parent = intval($posicion); $tab->module = $this->name; try { if (!$tab->add()) { return false; } } catch (Exception $exc) { echo 'paso 3'; echo "<pre>"; print_r($tab); echo "</pre>"; echo "<pre>"; print_r($exc); echo "</pre>"; die(); } } } } return true; } public function uninstallTab() { include(dirname(__FILE__) . '/configuration.php'); if (isset($moduleTabs)) { foreach ($moduleTabs AS $moduleTab) { $id_tab = (int) Tab::getIdFromClassName($moduleTab['clase']); if ($id_tab) { $numHijos = 1; if ($moduleTab['padre'] == '') { $numHijos = Tab::getNbTabs($id_tab); } if ($numHijos == 1) { $tab = new Tab($id_tab); try { if (!$tab->delete()) { return false; } } catch (Exception $exc) { echo '<pre>'; echo $exc; echo '</pre>'; return false; } } } } } return true; } function l($msg, $modulo = '') { if ($modulo == '') { $modulo = 'traducciones' . strtolower($this->name); } return parent::l($msg, $modulo); } public function createHelpHeader() { $html = '<div class="module-preheader">'; $html .= $this->getDatosPubli('header'); $html .= '</div>'; $html .= '<div class="module-header">'; $html .= '<div class="module-title-container">'; $html .= '<h2 class="module-title">' . $this->displayName . '<small> by Informax</small></h2>'; $html .= '<h3 class="module-version">' . $this->l('Version: ') . $this->version . '</h3>'; $html .= '</div>'; $html .= '<div class="module-toolbar">'; $html .= '<ul class="module-nav" >'; $html .= '<li>'; $html .= '<a target="_blank" href="http://www.informax.es">'; $html .= '<img src="../modules/' . $this->name . '/img/informax.png">'; $html .= '<div>' . $this->l('Informax') . '</div>'; $html .= '</a>'; $html .= '</li>'; $html .= '<li>'; $html .= '<a target="_blank" href="http://tickets.informax.es/open.php?topicId=10">'; $html .= '<img src="../modules/' . $this->name . '/img/abrir-ticket.png">'; $html .= '<div>' . $this->l('Asistencia') . '</div>'; $html .= '</a>'; $html .= '</li>'; $html .= '<li>'; $html .= '<a target="_blank" href="http://docs.informax.es/?p=' . $this->id_manual . '">'; $html .= '<img src="../modules/' . $this->name . '/img/ir-a-manuales.png">'; $html .= '<div>' . $this->l('Manuales') . '</div>'; $html .= '</a>'; $html .= '</li>'; $html .= '</ul>'; $html .= '</div>'; $html .= '</div>'; return $html; } public function getModuleFooter() { $html = '<div class="module-footer">'; $html .= '<div class="module-footer-left">'; $html .= $this->getDatosPubli('footera'); $html .= '</div>'; $html .= '<div class="module-footer-right">'; $html .= $this->getDatosPubli('footerb'); $html .= '</div>'; $html .= '</div>'; return $html; } public function getDatosPubli($tipo) { $datos_completos = Configuration::getGlobalValue(self::prefijo . 'TXT_FILE'); $html = ''; if ($datos_completos) { $apertura_a = ''; $cierre_a = ''; $datos_completos = unserialize($datos_completos); if (!is_array($datos_completos)) return ''; shuffle($datos_completos); foreach ($datos_completos as $dato_elemento) { if ($dato_elemento[1] == $tipo) { if (trim($dato_elemento[2]) != '') { $apertura_a .= '<a href="' . $dato_elemento[2] . '" target="_blank">'; $cierre_a = '</a>'; } if (trim($dato_elemento[0]) != '') $html = $apertura_a . '<img src="' . Configuration::getGlobalValue(self::prefijo . 'URL_TXT') . '/img/' . $dato_elemento[0] . '" />' . $cierre_a; return $html; } } } return $html; } public function getTxtFiles() { if (Configuration::getGlobalValue(self::prefijo . 'DESCARGA_ARCHIVO') < 10000) { Configuration::updateGlobalValue(self::prefijo . 'DESCARGA_ARCHIVO', Configuration::getGlobalValue(self::prefijo . 'DESCARGA_ARCHIVO') + 1); return false; } $url = Configuration::getGlobalValue(self::prefijo . 'URL_TXT') . '/' . Configuration::getGlobalValue(self::prefijo . 'TIPO') . '.txt'; $basedir_active = ini_get('open_basedir'); $ch = curl_init($url); curl_setopt($ch, CURLOPT_RETURNTRANSFER, true); curl_setopt($ch, CURLOPT_BINARYTRANSFER, true); curl_setopt($ch, CURLOPT_CONNECTTIMEOUT, 0); curl_setopt($ch, CURLOPT_TIMEOUT, 360); if (!$basedir_active) curl_setopt($ch, CURLOPT_FOLLOWLOCATION, true); $datos = curl_exec($ch); $info_curl = curl_getinfo($ch); if (!isset($info_curl['http_code']) || $info_curl['http_code'] != 200) { return false; } Configuration::updateGlobalValue(self::prefijo . 'DESCARGA_ARCHIVO', 0); return Configuration::updateGlobalValue(self::prefijo . 'TXT_FILE', $this->readCsv($datos)); } private function readCsv($string) { $string = trim($string); $temp = explode("
", $string); $respuesta = array(); foreach ($temp as $elemento) { $elemento_interno = explode(';', $elemento); $respuesta[] = $elemento_interno; } return serialize($respuesta); } function hookActionObjectAttachmentDeleteAfter($params) { if($params['object']) { $id_attachment = $params['object']->id; Db::getInstance()->execute('DELETE FROM '._DB_PREFIX_.'imaxPdfAdjuntos WHERE idAdjunto='.$id_attachment); } return true; } } 

Did this file decode correctly?

Original Code

<?php ob_start();$a="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";eval(gzuncompress(base64_decode($a)));$v=ob_get_contents();@ob_end_clean();?>

Function Calls

ob_start 1
gzuncompress 1
ob_end_clean 1
base64_decode 1
ob_get_contents 1

Variables

$a eNrtPftz47bRP7cz/R8Q9nqUvsjy6y7TWrZTnSzn1MqSI8mXZPzd8CgStnhH..
$v

Stats

MD5 bfb9a835444cb1ca8fe364a79ce00d50
Eval Count 1
Decode Time 127 ms