"; print_r(func_get_args()); echo ""; die(); } // Valida si un email es correcto function valid_email($str){ return (bool) preg_match('/^([a-z0-9\+_\-]+)(\.[a-z0-9\+_\-]+)*@([a-z0-9\-]+\.)+[a-z]{2,6}$/ix', $str); } function get_first_email($str){ $matches = array(); if( preg_match('/(([a-z0-9\+_\-]+)(\.[a-z0-9\+_\-]+)*@([a-z0-9\-]+\.)+[a-z]{2,6})/ix', $str, $matches) ){ return $matches[1]; } } // Convierte una fecha de español a ingles function convert_date_es_en($date){ $pat = '/^(\d{1,2})[\/-_.,](\d{1,2})[\/-_.,](\d{4})/'; return preg_replace($pat, '\\3-\\2-\\1', $date); } function hfilesize($path){ if( !file_exists($path) ) return 0; $bytes = filesize($path); $b = (int) $bytes; $s = array('B', 'kB', 'MB', 'GB', 'TB'); if($b <= 0) return "0 " . $s[0]; $con = 1024; $e = (int)(log($b,$con)); return number_format($b/pow($con,$e),2,',','.').' '.$s[$e]; } function get_domain(){ $array = parse_url($_SERVER["REQUEST_URI"]); $str = "http://" . $array["host"] . $array["path"]; if(substr($str, -1) != "/") $str .= "/"; return $str; } // Envia un correo electrónico usando la librería email // $from, $to, $subject, $message estan claro para que son. // $subject es opcional, si no se recibe pone el subject por defecto // $bccs debe ser un array con la lista de correos para bcc // $attachments debe ser un array con la lista de ficheros para adjuntar (con ruta relativa) function enviar_email($from, $from_name, $to, $message, $subject = '', $bccs = null, $attachments = null){ if(empty($from)) return new Rn(false, "No se ha recibido el 'from'"); if(empty($to)) return new Rn(false, "No se ha recibido el 'to'"); if(!valid_email($to)) return new Rn(false, "El email de destino no es válido"); if(empty($message)) return new Rn(false, "No se ha recibido mensaje"); $log = array(); if(empty($subject)){ $subject = "Mensaje desde www.puracepacatering.es"; $log["Falta Subject"] = "Se ha tenido que usar el subject por defecto, porque no se ha recibido subject."; } if(!empty($bccs)){ foreach($bccs as $k=>$v){ if(!valid_email($v)){ $log["bcc".$k] = "El e-mail $v no es correcto y ha sido eliminado de la lista de bccs"; unset($bccs[$k]); } } } if(!empty($attachments)){ foreach($attachments as $k => $attachment){ if(!file_exists($attachment)){ unset($attachments[$k]); } } } require_once('libraries/3th/PHPMailer_v5.0.0/class.phpmailer.php'); $mail = new PHPMailer(true); // the true param means it will throw exceptions on errors, which we need to catch try { $mail->IsHTML(); $mail->CharSet = 'utf-8'; $mail->SMTPDebug = MAIL_SMTP_DEBUG; // enables SMTP debug information (for testing) if( MAIL_SMTP_AUTH ){ $mail->IsSMTP(); // telling the class to use SMTP $mail->SMTPAuth = true; // enable SMTP authentication $mail->Host = MAIL_SMTP_HOST; // sets the SMTP server $mail->Port = MAIL_SMTP_PORT; // set the SMTP port for the GMAIL server $mail->Username = MAIL_SMTP_USER; // SMTP account username $mail->Password = MAIL_SMTP_PASS; // SMTP account password } $mail->SetFrom($from, $from_name); $mail->AddAddress(DEBUG ? 'info@puracepacatering.es' : $to); $mail->Subject = $subject; $mail->AltBody = 'Para ver este mensaje necesita un cliente compatible con mensajes HTML!'; // optional - MsgHTML will create an alternate automatically $mail->Body = $message; if(!empty($bccs)) foreach($bccs as $bcc) $mail->AddBCC($bcc); if(!empty($attachments)) foreach($attachments as $attachment) $mail->AddAttachment($attachment); $mail->Send(); $success = true; } catch (phpmailerException $e) { $log["Excepcion phpmailer"] = $e->errorMessage(); $success = false; } catch (Exception $e) { $log["Exception phpmailer2"] = $e->getMessage(); $success = false; } $log["correcto"] = "Mensaje Enviado"; $core = Core::instance(); $core->log($log); if( $success ){ return new Rn(true, "Se ha enviado el correo correctamente", $log); }else{ return new Rn(false, "No se ha podido enviar el correo", $log); } } function enviar_mail_custom($from, $from_name, $to, $message, $subject = ''){ require_once('libraries/3th/PHPMailer_v5.0.0/class.phpmailer.php'); $mail = new PHPMailer(true); // the true param means it will throw exceptions on errors, which we need to catch try { $mail->IsHTML(); $mail->CharSet = 'utf-8'; $mail->SMTPDebug = MAIL_SMTP_DEBUG; // enables SMTP debug information (for testing) $mail->SetFrom($from, $from_name); $mail->AddAddress(DEBUG ? 'info@puracepacatering.es' : $to); $mail->Subject = $subject; $mail->AltBody = 'Para ver este mensaje necesita un cliente compatible con mensajes HTML!'; // optional - MsgHTML will create an alternate automatically $mail->Body = $message; $mail->Send(); $success = true; } catch (phpmailerException $e) { $log["Excepcion phpmailer"] = $e->errorMessage(); $success = false; } catch (Exception $e) { $log["Exception phpmailer2"] = $e->getMessage(); $success = false; } $core = Core::instance(); $core->log($log); return $success; } function procesar_email($desde = "", $subject = "", $to = ""){ $core = Core::instance(); if( POST && !empty($_POST["datos"])){ $datos = $_POST["datos"]; $message = $core->load_view("emails/generico", array( 'desde' => $desde, 'datos' => $datos, )); //$from = "responsablecomercial@circuloamistad.com"; $from = "info@puracepacatering.es"; $from_name = "Pura Cepa Catering"; //$to = !empty($to) ? $to : "responsablecomercial@circuloamistad.com"; $to = !empty($to) ? $to : "info@puracepacatering.es"; if(DEBUG) $to = "info@puracepacatering.es"; enviar_email($from, $from_name, $to, $message, $subject); return new Rn(true, "El mensaje ha sido enviado con éxito. Nos pondremos en contacto con usted lo antes posible."); } } function file_log($filename, $texto){ $file = 'tmp/log/' . $filename; $texto = "[" . date('Y-m-d H:i:s') . "] " . $texto; $texto = strip_tags($texto); $texto = str_replace("\n", " ", $texto); file_put_contents($file, $texto . "\n", FILE_APPEND); if( filesize($file) > 1048576 ) rename($file, date('Y-m-d_$file')); } // Convierte en absoluta una ruta relativa function abs_uri($rel_uri){ if( substr($rel_uri, 0, 1) != '/' ) $rel_uri = '/' . $rel_uri; return 'http://' . $_SERVER['HTTP_HOST'] . dirname($_SERVER['SCRIPT_NAME']) . $rel_uri; } //////////////////////////////////////////////////////////////////////////// /////////////// VALIDACION DE USUARIOS Y PERMISOS ////////////////////////// //////////////////////////////////////////////////////////////////////////// // Verifica si hay un usuario identificado en el sistema. function check_login(){ return !empty($_SESSION["usr"]) && is_object($_SESSION["usr"]); } // Devuelve: true o false // Valida si un usuario dispone del permiso requerido function tiene_permiso($permiso_requerido){ return check_login() && !empty($_SESSION["usr"]->id_permiso) && $_SESSION["usr"]->id_permiso <= intval($permiso_requerido); } // Valida si un usuario tiene un permiso en concreto o no function permiso_es($permiso){ return !empty($_SESSION["usr"]) && is_object($_SESSION["usr"]) && $permiso > 0 && $_SESSION["usr"]->id_permiso > 0 && $_SESSION["usr"]->id_permiso == $permiso; } // Valida si el usuario actual tiene algún permiso entre los recibidos function permiso_es_alguno(){ if( ! check_login() ) return false; $perms = func_get_args(); foreach($perms as $id_permiso){ if( permiso_es($id_permiso) ) return true; } return false; } // inicializo la base de datos $db = new Db(array( 'dbhost' => 'localhost', //'dbuser' => 'mysql', 'dbuser' => 'puracepa', //'dbpass' => '', 'dbpass' => 'Rapu1112*pa', 'dbname' => 'cepapura' /*'dbhost' => 'localhost', //'dbuser' => 'mysql', 'dbuser' => 'root', //'dbpass' => '', 'dbpass' => '', 'dbname' => 'puracepa_bd'*/ )); // intento conectar a la bd if( ! $db->conectar() ) die('

No se ha podido conectar al servidor de datos

'); // Establezco la codificacion UTF-8 para la base de datos $db->query("SET character_set_results = 'utf8', character_set_client = 'utf8', character_set_connection = 'utf8', character_set_database = 'utf8', character_set_server = 'utf8'"); // La primera aplicación será la por defecto. // El controlador por defecto es main y el método index // - 1º Parametro: el array con las aplicaciones disponibles // - 2º Parametro: el controlador por defecto [main] // - 3º Parametro: el metodo por defecto [index] $core = new Core(array( 'w' => 'web', 'c' => 'control', )); // Este index ahora es la configuración de la aplicación. // No es obligatorio crear el fichero index.php dentro de cada aplicación if( file_exists($core->get_application() . '/index.php') ) include $core->get_application() . '/index.php'; // Habilitar siguiente línea para problar la funcion de emails. // enviar_email("no-reply@parquejoyero.es", "Angel", "desoinsl@gmail.com", "Hola que tal", "hola que tal subject"); // Ultima linea del programa: ejecutar la web $core->run(); // Aquí pueden ir funciones globales para todas las aplicaciones aunque prefiero // que no se ponga aquí nada.