Ver Mensaje Individual
  #4 (permalink)  
Antiguo 21/05/2005, 10:26
iraklis
 
Fecha de Ingreso: julio-2004
Mensajes: 38
Antigüedad: 20 años, 5 meses
Puntos: 0
A ver... es que yo lo veo muy facil pero a lo mejor no lo es...

mi clase tiene 3 funciones... una de ellas es llamada desde fuera... y ésta llama a otras desde dentro. La primera llamada la realiza sin problemas, pero la primera no me devuelve nada a la clase :(

El código es una modificacion de una clase para recoger mails

Function RetrieveMessage($message,$lines)
{
$headers = "";
$body = "";
(...)
for($headers=$body=array(),$line=0;;$line++)
{
$response=$this->GetLine();
if(GetType($response)!="string")
return($this->SetError("Could not retrieve the message"));
switch($response)
{
case ".":
return("");
case "":
break 2;
default:
if(substr($response,0,1)==".")
$response=substr($response,1,strlen($response)-1);
break;
};
$headers[$line]=$response;
};
$this->DesglosaCabeceras($headers); //PRIMERA LLAMADA A UNA
for($line=0;;$line++)
{
$response=$this->GetLine();
if(GetType($response)!="string")
return($this->SetError("Could not retrieve the message"));
switch($response)
{
case ".":
return("");
default:
if(substr($response,0,1)==".")
$response=substr($response,1,strlen($response)-1);
break;
};
$body[$line] = $response;
};
$this->DesglosaCuerpo($body); //SEGUNDA LLAMADA A OTRA
return("");
}


function DesglosaCabeceras($cabeceras)
{
$this->cabecera['date'] = "";
$this->cabecera['from'] = "";
$this->cabecera['reply'] = "";
$this->cabecera['title'] = "";
$this->cabecera['content-type'] = "";
$this->cabecera['boundary'] = "";
//fin variables

for($linea=0;$linea < count($cabeceras);$linea++){
$this->cabecera['temp'] = HtmlSpecialChars($cabeceras[$linea]);
while( (substr($this->cabecera['temp'],0,1) == ' ') or (substr($this->cabecera['temp'],0,1) == "\t") ){
$this->cabecera['temp'] = substr($this->cabecera['temp'],1);
};
//FECHA RECEPCION
$busca = "Date:";
if($this->cabecera['date'] == ""){
if (substr($this->cabecera['temp'],0,5) == $busca){
$this->cabecera['date'] = substr($this->cabecera['temp'],6);
};
};
//DE QUIEN
$busca = "From:";
if($this->cabecera['from'] == ""){
if (substr($this->cabecera['temp'],0,5) == $busca){
$this->cabecera['from'] = substr($this->cabecera['temp'],6);
};
};
//RESPUESTA
$busca = "Reply-To:";
if($this->cabecera['reply'] == ""){
if (substr($this->cabecera['temp'],0,9) == $busca){
$this->cabecera['reply'] = substr($this->cabecera['temp'],10);
};
};
//TITULO
$busca = "Subject:";
if($this->cabecera['title'] == ""){
if (substr($this->cabecera['temp'],0,8) == $busca){
$this->cabecera['title'] = substr($this->cabecera['temp'],9);
};
};
//CONTENIDO DEL CORREO
$busca = "Content-Type:";
if($this->cabecera['content-type'] == ""){
if (substr($this->cabecera['temp'],0,13) == $busca){
$this->cabecera['content-type'] = strtok(substr($this->cabecera['temp'],14),";");
};
};
//PARTES DEL CORREO
$busca = "boundary=";
if($this->cabecera['boundary'] == ""){
if (substr($this->cabecera['temp'],0,9) == $busca){
$this->cabecera['boundary'] = substr($this->cabecera['temp'],15,(strlen($this->cabecera['temp'])-21));
};
};
};
if ($this->cabecera['date'] == ""){
$this->cabecera['date'] = "desconocida";
};
if ($this->cabecera['from'] == ""){
$this->cabecera['from'] = "desconocido";
};
if ($this->cabecera['reply'] == ""){
$this->cabecera['reply'] = $this->cabecera['from'];
};
//titulo nada
//content nada
//boundary nada
}

function DesglosaCuerpo($cuerpo)
{
$this->partes = -5;
//icr 190505
if( $this->cabecera['content-type'] == "multipart/mixed"){
$this->partes = 0;
$this->DesglosaMultiparte($cuerpo);
}else{
$this->partes = 1;
$this->parte[0]['content-type'] = $this->cabecera['content-type'];
for($linea = 0; $linea < count($cuerpo); $linea++){
$this->parte[0]['content'] .= $cuerpo[$linea]."\n";
};
};
}


************************************************** *******

La llamada a la funcion DesglosaCabeceras la realiza sin problemas, pero la llamada a DesglosaCuerpo no (es como si no entrara). La instancia en el caso de la funcion interior es $this, no? luego si funciona el $this->DesglosaCabeceras... mi duda es por qué no funciona el $this->DesglosaCuerpo...

Ah, un apunte... si realizo la llamada desde fuera de la clase, si que lo realiza, pero yo no quiero hacerlo desde fuera.

Saludos y gracias de antemano.

P.D.: Sé que existirá un gestor de correos, pero esto es algo personal para aprender a usar clases.