_correo=$correo; $this->_pass=$pass; } ////////////////////////////////////////////////////// // OBTIENE EL N�MERO DE CR�DITOS RESTANTES DEL USUARIO // DEVUELVE: // Float en $this->Creditos correspondiente al n�mero de cr�ditos en la cuenta. /////////////////////////////////////////////////////// function creditos() { $res=$this->_conecta("","/v4/creditos.php","Cred"); $this->Creditos=$res["Cred"]; return $this->Creditos; } ////////////////////////////////////////////////////// // ENV�A MENSAJES A M�VILES // - Valores: Array con todas o alguna de las siguientes variables // Destinatarios: M�vil/M�viles al/a los que se env�a el mensaje, de la forma PrefijoTelefono (Ej:346000000 � para varios destinatarios // 346000000;3519760000;443450000) separados por punto y coma ';' // Mensaje: Mensaje que se env�a // Remitente: (Por defecto "") Es el tel�fono, nombre de la empresa o persona que env�a. S�lo v�lido si se env�a mensaje profesional // Si se deja en blanco y se selecciona mensaje profesional, se enviar� desde el tel�fono m�vil registrado por el usuario qu env�a en Mensatek // ATENCI�N: Si es alfanum�rico el M�ximo es de 11 caracteres. // Fecha: Fecha en la que queda progrmado el env�o, el mensaje se enviar� en esa fecha. Por defecto "" que significa enviar ahora. Formato: A�o-Mes-dia hora:minuto // La referencia horaria es GMT+1 (Zona horaria de Espa�a) // Flash: 0=No, 1=S� // Report: 0=No, 1=S� (1=se env�a report de entrega al correo electr�nico) // Descuento: 0=No, 1=S� // EmailReport: Correo electr�nico que recibir� el report. Si no se utiliza y se ha seleccionado Report=1, se enviar� al correo registrado como usuario en MENSATEK.(ATENCI�N: Debe ser un correo v�lido). // ::Atenci�n::Si desea que se env�e un correo de report personalizado con su nombre de dominio contacte con el Departamento de Soporte // Descuento: Se har� un 10% de descuento (en cr�ditos) si incluye en el mensaje [MENSATEK.com] // DEVUELVE: Un array // Res: Int // >0 correspondiente al n�mero de mensajes enviados. // -1 Error de autenticaci�n // -2 no hay cr�ditos suficientes. // -3 Error en los datos de la llamada // Msgid: Int // identificador del mensaje enviado para utilizar en el report // Cred: Float // n�mero de cr�ditos que le restan. /////////////////////////////////////////////////////// function enviar($Valores) { $string=""; foreach ($Valores as $var=>$valor) $string.="&".$var."=".urlencode($valor); $res=$this->_conecta($string,"/v4/enviar.php","Res;Msgid;Cred"); $this->Creditos=$res["Cred"]; $this->idMensaje=$res["Msgid"]; return $res; } ////////////////////////////////////////////////////// // REPORT DE ENV�O // MsgId: Identificador de mensaje devuelto por la funci�n de env�o. // DEVUELVE: // - Entero con el N�mero de reports // - Carga Array en $this->Res con n valores (tantos como tel�fonos de destino) del tipo // $this->Res[n]["Fecha"] Fecha/Hora de env�o // $this->Res[n]["Movil"] M�vil destino // $this->Res[n]["Tiempo"] Tiempo (en segundos) que tard� en entregarse el mensaje al m�vil (normalmente entre 2 s 20 segundos si el m�vil est� encendido). // $this->Res[n]["Resultado"] String con el resultado del env�o (entregado, m�vil err�neo, etc...). Se compone de: // 1.- Resultado String(Mensaje entregado, esperando entrega, etc�) // 2.- Link a imagen que var�a en funci�n del resultado, sirve para utilizarlas como ayuda r�pida al cliente (ver ejemplo en reports en Mensatek). // El formato es: // Posibles colores: // bverde.gif (entregado), // broja.gif (cualquier error), // bnaranja.gif (entregado a red), // bazul.gif (programado o esperando entrega). /////////////////////////////////////////////////////// function report($MsgId) { $res=$this->_conecta("&idM=".urlencode($MsgId),"/v4/report.php",""); $n=0; $informes=explode("",$res[0]); if (isset($informes[0])) foreach ($informes as $informe) { $resultado=explode("+",$informe); if (isset($resultado[2])) { $this->Res[$n]["Fecha"]=$resultado[0]; $this->Res[$n]["Movil"]=$resultado[1]; $this->Res[$n]["Tiempo"]=$resultado[2]; $this->Res[$n]["Resultado"]=str_replace("","",$resultado[3]); $n++; } } return $n; } ////////////////////////////////////////////////////// // SUBVENCIONAR CR�DITOS A OTRA CUENTA DE USUARIO // CorreoDestino: Correo del usuario destino de los cr�ditos. // Creditos: N�mero de cr�dtos a a�adir al usuario // DEVUELVE: // - Si >0 Entero con el N�mero de cr�ditos efectivamente a�adidos al usuario o error // - Si <0 // -1 Errror de usuario // -2 No hay suficientes cr�ditos // -3 Correo de destino no existe // -4 Cr�ditos <0 /////////////////////////////////////////////////////// function subvencionar($CorreoDestino,$Creditos) { $res=$this->_conecta("&CorreoDest=".urlencode($CorreoDestino)."&Creditos=".urlencode($Creditos),"/v4/subvencionar.php","Res"); return $res["Res"]; } // Funciones internas function _conecta($args,$dir,$regs) { $args="Correo=".urlencode($this->_correo)."&Passwd=".urlencode($this->_pass).$args; if (function_exists("curl_init")) { $ch = curl_init(); curl_setopt($ch, CURLOPT_URL,"http://api.mensatek.com".$dir."?".$args); curl_setopt($ch, CURLOPT_VERBOSE, 1); curl_setopt($ch, CURLOPT_HEADER, 1); curl_setopt($ch, CURLOPT_USERAGENT, "Mozilla/4.0 (compatible; MSIE 5.01; Windows NT 5.0)"); curl_setopt($ch,CURLOPT_POST, 1); curl_setopt($ch, CURLOPT_FOLLOWLOCATION,1); curl_setopt($ch, CURLOPT_POSTFIELDS, $args); curl_setopt($ch, CURLOPT_PORT, G_PUERTO); curl_setopt($ch, CURLOPT_CONNECTTIMEOUT ,300); curl_setopt($ch, CURLOPT_TIMEOUT, 300); curl_setopt($ch, CURLOPT_RETURNTRANSFER,1); $sub=curl_exec ($ch); curl_close ($ch); $return=$this->_respuesta($sub,$regs); } else { $fp = @fsockopen ("api.mensatek.com", G_PUERTO, $errno, $errstr, 30); if (!fp) echo "Su sistema no permite trabajar con sockets, active la funcionalidad de sockets en PHP para utilizar la librer�a"; else { $string="GET ".$dir."?".$args; fputs($fp, $string." HTTP/1.1\r\n"); fputs($fp, "Host: mensatek.com\r\n"); fputs($fp, "Connection: close\r\n\r\n"); $sub=""; while (!feof($fp)) $sub.=fgets($fp, 128); fclose($fp); $return=$this->_respuesta($sub,$regs); } } return $return; } function _respuesta($sub,$regs) { $return=@array(); if ($regs=="") $return[0]=$sub; else { $reg=explode(";",$regs); foreach ($reg as $r) if ($r!=""&&($sub=strstr($sub,$r.":"))!==false) { if (($pos=strpos($sub,"\r\n"))!==false) $return[$r]=substr($sub,strlen($r)+1,$pos-strlen($r)); else $return[$r]=substr($sub,strlen($r)+1); } } return $return; } } ?>