Platon Technologies
not logged in Login Registration
EnglishSlovak
open source software development celebrating 10 years of open source development! Saturday, October 17, 2026

Diff for mylist/backend/receiver/receiver.php between version 1.9 and 1.10

version 1.9, 2005/04/16 13:14:26 version 1.10, 2005/04/25 19:31:15
Line 1 
Line 1 
 <?php  <?php
   
 // $Platon: mylist/backend/receiver/receiver.php,v 1.8 2005/04/15 21:36:01 majo Exp $  // $Platon: mylist/backend/receiver/receiver.php,v 1.9 2005/04/16 13:14:26 majo Exp $
   
 require_once    "validator.php";  require_once    "validator.php";
 require_once    "../../mylist.config.php";  require_once    "../../mylist.config.php";
 require_once    "../shared/emailMessage.php";  require_once    "../shared/emailMessage.php";
Line 17  class CReceiver {
Line 18  class CReceiver {
         // object of the CEmailMessage class          // object of the CEmailMessage class
         // contains modified headers (prefix, signature, etc)          // contains modified headers (prefix, signature, etc)
         var $modifiedMessage;          var $modifiedMessage;
   
         var $indexer;   //      indexes message          var $indexer;   //      indexes message
   
         // this function decides wheter an incomming email message will be accepted or not          // this function decides wheter an incomming email message will be accepted or not
         // all conditions (senders allowed, max_message_size) must be ok          // all conditions (senders allowed, max_message_size) must be ok
         function validateEmail($filename)          function validateEmail($filename)
         {          { // {{{
   
                 $this->validator = new CValidator();                  $this->validator = new CValidator();
                 $this->validator->openEmailMessage($filename);                  $this->validator->openEmailMessage($filename);
                 $this->validator->parseEmail();                  $this->validator->parseEmail();
                 $this->validator->getAllNeccessaryEmails();                  $this->validator->getAllNeccessaryEmails();
                 $this->validator->validateEmail();                  $this->validator->validateEmail();
                 // the result is in $this->validator->arrAccepted;                  // the result is in $this->validator->arrAccepted;
   
         }          } // }}}
   
   
         function processAccepted()          function processAccepted()
         {          { // {{{
                 echo "akceptovane mailinglisty: \n";                  echo "akceptovane mailinglisty: \n";
                 print_r($this->validator->arrAccepted);                  print_r($this->validator->arrAccepted);
                 // $arrAccepted is a array of ids of accepted mailinglists                  // $arrAccepted is a array of ids of accepted mailinglists
                 for($i = 0; $i < Count($this->validator->arrAccepted); $i++)                  for($i = 0; $i < Count($this->validator->arrAccepted); $i++)
                 {               // for each mailinglist we generate queue of recipients                  {               // for each mailinglist we generate queue of recipients
                         $queue_id = $this->processMessage($this->validator->arrAccepted[$i]);                          $queue_id = $this->processMessage($this->validator->arrAccepted[$i]);
                         if ($queue_id)                          if ($queue_id)
                                 $this->generateRecipients($this->validator->arrAccepted[$i], $queue_id);                                  $this->generateRecipients($this->validator->arrAccepted[$i], $queue_id);
                 }                  }
   
                 return $i;      // returns number of accepted files                  return $i;      // returns number of accepted files
         }          } // }}}
   
   
         function processMessage($list_id)          function processMessage($list_id)
         {          { // {{{
                 $this->modifiedMessage = new CModifiedEmailMessage();                  $this->modifiedMessage = new CModifiedEmailMessage();
                 $this->modifyMessage($list_id);                  $this->modifyMessage($list_id);
                 $message_queue_id = $this->insertMessageIntoQueue($list_id);                  $message_queue_id = $this->insertMessageIntoQueue($list_id);
   
                 global $dbh;                  global $dbh;
   
                 $sql = "SELECT f_archive FROM mylist_lists WHERE id = $list_id";                  $sql = "SELECT f_archive FROM mylist_lists WHERE id = $list_id";
                 $f_archive =& $dbh->getOne($sql);                  $f_archive =& $dbh->getOne($sql);
   
                 if ($f_archive)                  if ($f_archive)
                 {                  {
                         $archive_id = $this->archiveMessage($list_id);                          $archive_id = $this->archiveMessage($list_id);
                         if ($archive_id)                          if ($archive_id)
                         {                          {
                                 $this->setParentID($archive_id);                                  $this->setParentID($archive_id);
   
                                 $this->indexer = new CIndexer();                                  $this->indexer = new CIndexer();
                                 $this->indexer->subject = $this->modifiedMessage->subject;                                  $this->indexer->subject = $this->modifiedMessage->subject;
                                 $this->indexer->header = $this->validator->emailMessage->structure->headers;                                  $this->indexer->header = $this->validator->emailMessage->structure->headers;
Line 75  class CReceiver {
Line 78  class CReceiver {
                                 // text attachements to db, others to filesystem                                  // text attachements to db, others to filesystem
                                 if ($this->messageHasAttachements())                                  if ($this->messageHasAttachements())
                                         $this->processAttachements($archive_id);                                          $this->processAttachements($archive_id);
   
                                 $this->indexer->indexMessage($archive_id);                                  $this->indexer->indexMessage($archive_id);
                         }                          }
                 }                  }
   
                 return $message_queue_id;                  return $message_queue_id;
         }          } // }}}
   
   
   
         function modifyMessage($_list_id)          function modifyMessage($_list_id)
         {          { // {{{
                 global $dbh;                  global $dbh;
                 global $MLIST_CRLF, $errors_to;                  global $MLIST_CRLF, $errors_to;
   
                 $sql  = "SELECT name, f_reply_to_mlist, f_prefix_subject, ";                  $sql  = "SELECT name, f_reply_to_mlist, f_prefix_subject, ";
                 $sql .= "prefix, f_append_sig, signature ";                  $sql .= "prefix, f_append_sig, signature ";
                 $sql .= "FROM mylist_lists WHERE id = $_list_id";                  $sql .= "FROM mylist_lists WHERE id = $_list_id";
   
                 $res =& $dbh->query($sql);                  $res =& $dbh->query($sql);
                 if (PEAR::isError($res))                  if (PEAR::isError($res))
                         die($res->getMessage());                          die($res->getMessage());
Line 101  class CReceiver {
Line 103  class CReceiver {
                 $res->fetchInto($row, DB_FETCHMODE_ASSOC);                  $res->fetchInto($row, DB_FETCHMODE_ASSOC);
                 // original message is in $this->validator->emailMessage                  // original message is in $this->validator->emailMessage
                 // modified message will be in $this->modifiedMessage                  // modified message will be in $this->modifiedMessage
   
   
                 // ****************************************************                  // ****************************************************
                 // ************* HEADERS MODIFICATIONS ****************                  // ************* HEADERS MODIFICATIONS ****************
   
                 //$_header  = "From: ".$this->validator->emailMessage->structure->headers["from"].$MLIST_CRLF;                  //$_header  = "From: ".$this->validator->emailMessage->structure->headers["from"].$MLIST_CRLF;
                 $_header  = "From: ".$this->validator->emailMessage->structure->headers["from"]."\n";                  $_header  = "From: ".$this->validator->emailMessage->structure->headers["from"]."\n";
                 $_header .= "X-Mailinglist-From: ".$row["name"]."\n";                  $_header .= "X-Mailinglist-From: ".$row["name"]."\n";
Line 114  class CReceiver {
Line 116  class CReceiver {
                 if (isset($this->validator->emailMessage->structure->headers["in-reply-to"]))                  if (isset($this->validator->emailMessage->structure->headers["in-reply-to"]))
                         //$_header .= "In-Reply-To: ".$this->validator->emailMessage->structure->headers["in-reply-to"].$MLIST_CRLF;                          //$_header .= "In-Reply-To: ".$this->validator->emailMessage->structure->headers["in-reply-to"].$MLIST_CRLF;
                         $_header .= "In-Reply-To: ".$this->validator->emailMessage->structure->headers["in-reply-to"]."\n";                          $_header .= "In-Reply-To: ".$this->validator->emailMessage->structure->headers["in-reply-to"]."\n";
   
                 if (isset($this->validator->emailMessage->structure->headers["references"]))                  if (isset($this->validator->emailMessage->structure->headers["references"]))
                         $_header .= "References: ".$this->validator->emailMessage->structure->headers["references"]."\n";                          $_header .= "References: ".$this->validator->emailMessage->structure->headers["references"]."\n";
                         //$_header .= "References: ".$this->validator->emailMessage->structure->headers["references"].$MLIST_CRLF;                  //$_header .= "References: ".$this->validator->emailMessage->structure->headers["references"].$MLIST_CRLF;
   
                 if ($row["f_reply_to_mlist"])                  if ($row["f_reply_to_mlist"])
                         $_header .= "Reply-To: ".$row["name"];                          $_header .= "Reply-To: ".$row["name"];
                 else                  else
                         $_header .= "Reply-To: ".$this->validator->emailMessage->structure->headers["from"];                          $_header .= "Reply-To: ".$this->validator->emailMessage->structure->headers["from"];
   
                 // received headers                  // received headers
                 if (is_array($this->validator->emailMessage->structure->headers["received"]))                  if (is_array($this->validator->emailMessage->structure->headers["received"]))
                 {                  {
                   Reset($this->validator->emailMessage->structure->headers["received"]);                          Reset($this->validator->emailMessage->structure->headers["received"]);
                   While(Current($this->validator->emailMessage->structure->headers["received"]))                          While(Current($this->validator->emailMessage->structure->headers["received"]))
                   {                          {
   
                         //$_header .= $MLIST_CRLF."Received: ".Current($this->validator->emailMessage->structure->headers["received"]);  
                         $_header .= "\nReceived: ".Current($this->validator->emailMessage->structure->headers["received"]);  
   
                         Next($this->validator->emailMessage->structure->headers["received"]);                                  //$_header .= $MLIST_CRLF."Received: ".Current($this->validator->emailMessage->structure->headers["received"]);
                   }                                  $_header .= "\nReceived: ".Current($this->validator->emailMessage->structure->headers["received"]);
   
                                   Next($this->validator->emailMessage->structure->headers["received"]);
                           }
                 }                  }
                 else if (isset($this->validator->emailMessage->structure->headers["received"]))                  else if (isset($this->validator->emailMessage->structure->headers["received"]))
                 {                  {
                         //$_header .= $MLIST_CRLF."Received: ".$this->validator->emailMessage->structure->headers["received"];                          //$_header .= $MLIST_CRLF."Received: ".$this->validator->emailMessage->structure->headers["received"];
                         $_header .= "\nReceived: ".$this->validator->emailMessage->structure->headers["received"];                          $_header .= "\nReceived: ".$this->validator->emailMessage->structure->headers["received"];
                 }                  }
   
   
                 // ************* PREXIF SUBJECT ***********************                  // ************* PREXIF SUBJECT ***********************
   
                 $subject = $this->validator->emailMessage->structure->headers["subject"];                  $subject = $this->validator->emailMessage->structure->headers["subject"];
   
                 if ($row["f_prefix_subject"])                  if ($row["f_prefix_subject"])
                 {                  {
                         if (!(  ($pos=StrPos($subject,"[".$row["prefix"]."]")) || ($subject[0] == "[".$row["prefix"]."]")          ))                          if (!(  ($pos=StrPos($subject,"[".$row["prefix"]."]")) || ($subject[0] == "[".$row["prefix"]."]")          ))
Line 157  class CReceiver {
Line 159  class CReceiver {
                 }                  }
                 else                  else
                         $this->modifiedMessage->subject = $subject;                          $this->modifiedMessage->subject = $subject;
   
   
                 $_header .= "\nSubject: ".$this->modifiedMessage->subject;                  $_header .= "\nSubject: ".$this->modifiedMessage->subject;
   
   
   
                 // ****************************************************                  // ****************************************************
Line 170  class CReceiver {
Line 172  class CReceiver {
                 // ************** OTHERS ***************                  // ************** OTHERS ***************
   
                 if (isset($this->validator->emailMessage->structure->headers["mime-version"]))                  if (isset($this->validator->emailMessage->structure->headers["mime-version"]))
 //                      $_header .= $MLIST_CRLF."MIME-Version: ".$this->validator->emailMessage->structure->headers["mime-version"].$MLIST_CRLF;                          //                      $_header .= $MLIST_CRLF."MIME-Version: ".$this->validator->emailMessage->structure->headers["mime-version"].$MLIST_CRLF;
                         $_header .= "\nMIME-Version: ".$this->validator->emailMessage->structure->headers["mime-version"];                          $_header .= "\nMIME-Version: ".$this->validator->emailMessage->structure->headers["mime-version"];
   
                 if (isset($this->validator->emailMessage->structure->headers["content-type"]))                  if (isset($this->validator->emailMessage->structure->headers["content-type"]))
                         //$_header .= "Content-Type: ".$this->validator->emailMessage->structure->headers["content-type"].$MLIST_CRLF;                          //$_header .= "Content-Type: ".$this->validator->emailMessage->structure->headers["content-type"].$MLIST_CRLF;
                         $_header .= "\nContent-Type: ".$this->validator->emailMessage->structure->headers["content-type"];                          $_header .= "\nContent-Type: ".$this->validator->emailMessage->structure->headers["content-type"];
Line 187  class CReceiver {
Line 189  class CReceiver {
   
                 // ****************************************************                  // ****************************************************
                 // ************* BODY MODIFICATIONS *******************                  // ************* BODY MODIFICATIONS *******************
   
   
                 if ($row["f_append_sig"])                  if ($row["f_append_sig"])
                 {                  {
                         if (! $this->messageHasAttachements())                          if (! $this->messageHasAttachements())
                         {                          {
                                 $this->modifiedMessage->body = $this->validator->emailMessage->body."\n_______________________________________________________________________________\n".$row["signature"];                                  $this->modifiedMessage->body = $this->validator->emailMessage->body."\n_______________________________________________________________________________\n".$row["signature"];
   
                                 $this->emailMessage->plain_body = $this->modifiedMessage->body;                                  $this->emailMessage->plain_body = $this->modifiedMessage->body;
                         }                          }
                         else                          else
Line 204  class CReceiver {
Line 206  class CReceiver {
                                 $finalbody = $this->addSignature($row["signature"],$plainbody);                                  $finalbody = $this->addSignature($row["signature"],$plainbody);
                                 $this->modifiedMessage->body = $finalbody;                                  $this->modifiedMessage->body = $finalbody;
                                 $this->emailMessage->plain_body = $plainbody."\r\n".$row["signature"];                                  $this->emailMessage->plain_body = $plainbody."\r\n".$row["signature"];
   
                         }                          }
                 }                  }
                 else                  else
                 {                  {
                         $this->modifiedMessage->body = $this->validator->emailMessage->body;                          $this->modifiedMessage->body = $this->validator->emailMessage->body;
   
                         if (! $this->messageHasAttachements())                          if (! $this->messageHasAttachements())
                                 $this->emailMessage->plain_body = $this->modifiedMessage->body;                                  $this->emailMessage->plain_body = $this->modifiedMessage->body;
                         else                          else
Line 219  class CReceiver {
Line 221  class CReceiver {
                                 $this->emailMessage->plain_body = $plainbody;                                  $this->emailMessage->plain_body = $plainbody;
                         }                          }
                 }                  }
   
                 // ****************************************************                  // ****************************************************
                 // ****************************************************                  // ****************************************************
         }          } // }}}
   
   
         function insertMessageIntoQueue($_list_id)          function insertMessageIntoQueue($_list_id)
         {          { // {{{
                 global $dbh;                  global $dbh;
   
                 $sql  = "INSERT INTO mylist_queue_messages (message_header, message_body) VALUES ";                  $sql  = "INSERT INTO mylist_queue_messages (message_header, message_body) VALUES ";
                 $sql .= "('".AddSlashes($this->modifiedMessage->header)."', '".AddSlashes($this->modifiedMessage->body)."')";                  $sql .= "('".AddSlashes($this->modifiedMessage->header)."', '".AddSlashes($this->modifiedMessage->body)."')";
                 $res =& $dbh->query($sql);                  $res =& $dbh->query($sql);
                 if (PEAR::isError($res))                  if (PEAR::isError($res))
                         die($res->getMessage());                          die($res->getMessage());
   
                 $sql ="SELECT id FROM mylist_queue_messages WHERE message_header LIKE '".AddSlashes($this->modifiedMessage->header)."' AND message_body LIKE '".AddSlashes($this->modifiedMessage->body)."' ORDER BY id DESC";                  $sql ="SELECT id FROM mylist_queue_messages WHERE message_header LIKE '".AddSlashes($this->modifiedMessage->header)."' AND message_body LIKE '".AddSlashes($this->modifiedMessage->body)."' ORDER BY id DESC";
   
   
Line 244  class CReceiver {
Line 246  class CReceiver {
   
                 $res->fetchInto($row);                  $res->fetchInto($row);
                 return $row["id"];                  return $row["id"];
         }          } // }}}
   
   
         function removeBrackets($messageID)          function removeBrackets($messageID)
         {          { // {{{
                 if ( eregi("^<(.+)>$", $messageID, $textParts))                  if ( eregi("^<(.+)>$", $messageID, $textParts))
                         return $textParts[1];                          return $textParts[1];
   
         }          } // }}}
   
   
         function generateRecipients($list_id, $queue_id)          function generateRecipients($list_id, $queue_id)
         {          { // {{{
                 global $dbh;                  global $dbh;
                 global $tb_users, $cl_users_id, $cl_users_email;                  global $tb_users, $cl_users_id, $cl_users_email;
   
                 $sql  = "SELECT mylist_list_users.email as list_email, $tb_users.$cl_users_email as reg_email, ";                  $sql  = "SELECT mylist_list_users.email as list_email, $tb_users.$cl_users_email as reg_email, ";
                 $sql .= "mylist_lists.f_mail_back_to_sender ";                  $sql .= "mylist_lists.f_mail_back_to_sender ";
                 $sql .= "FROM mylist_list_users, $tb_users, mylist_lists ";                  $sql .= "FROM mylist_list_users, $tb_users, mylist_lists ";
Line 266  class CReceiver {
Line 270  class CReceiver {
                 $sql .= "$tb_users.$cl_users_id = mylist_list_users.user_id ";                  $sql .= "$tb_users.$cl_users_id = mylist_list_users.user_id ";
                 $sql .= " AND ";                  $sql .= " AND ";
                 $sql .= "mylist_lists.id = $list_id";                  $sql .= "mylist_lists.id = $list_id";
   
   
                 $res =& $dbh->query($sql);                  $res =& $dbh->query($sql);
                 if (PEAR::isError($res))                  if (PEAR::isError($res))
                         die($res->getMessage());                          die($res->getMessage());
   
                 while ($res->fetchInto($row, DB_FETCHMODE_ASSOC))                  while ($res->fetchInto($row, DB_FETCHMODE_ASSOC))
                 {                  {
                           if (!(!$row["f_mail_back_to_sender"] && ($this->validator->emailMessage->sender == ((StrLen($row["list_email"]) != 0) ? $row["list_email"] : $row["reg_email"])    )))                          if (!(!$row["f_mail_back_to_sender"] && ($this->validator->emailMessage->sender == ((StrLen($row["list_email"]) != 0) ? $row["list_email"] : $row["reg_email"])    )))
                           {                          {
                                 $sql  = "INSERT INTO mylist_queue ";                                  $sql  = "INSERT INTO mylist_queue ";
                                 $sql .= "(queue_message_id, recipient, dt_queued) ";                                  $sql .= "(queue_message_id, recipient, dt_queued) ";
                                 $sql .= "VALUES (";                                  $sql .= "VALUES (";
                                 $sql .= $queue_id.", ";                                  $sql .= $queue_id.", ";
                                 $sql .= "'".((StrLen($row["list_email"]) != 0)? $row["list_email"] : $row["reg_email"])."', ";                                  $sql .= "'".((StrLen($row["list_email"]) != 0)? $row["list_email"] : $row["reg_email"])."', ";
                                 $sql .= "'".Date("Y-m-d H:i:s")."')";                                  $sql .= "'".Date("Y-m-d H:i:s")."')";
   
   
                                 $res2 =& $dbh->query($sql);                                  $res2 =& $dbh->query($sql);
                                 if (PEAR::isError($res2))                                  if (PEAR::isError($res2))
                                         if (StrCmp("DB Error: already exists", $res2->getMessage()) != 0)                                          if (StrCmp("DB Error: already exists", $res2->getMessage()) != 0)
                                         die($res2->getMessage());                                                  die($res2->getMessage());
                                         else                                          else
                                 echo "nepridavam - existuje list_id = $list_id, queue_id = $queue_id, email = ".((StrLen($row["list_email"]) != 0)? $row["list_email"] : $row["reg_email"])."\n";                                                  echo "nepridavam - existuje list_id = $list_id, queue_id = $queue_id, email = ".((StrLen($row["list_email"]) != 0)? $row["list_email"] : $row["reg_email"])."\n";
   
                                 else                                  else
                                         echo "pridavam list_id = $list_id, queue_id = $queue_id, email = ".((StrLen($row["list_email"]) != 0)? $row["list_email"] : $row["reg_email"])."\n";                                          echo "pridavam list_id = $list_id, queue_id = $queue_id, email = ".((StrLen($row["list_email"]) != 0)? $row["list_email"] : $row["reg_email"])."\n";
   
                            }  
                 }  
         }  
   
   
                           }
                   }
           } // }}}
   
   
         function archiveMessage($_list_id)          function archiveMessage($_list_id)
         {          { // {{{
                 // header, body, subject was alredy set in $this->modifyMessage();                  // header, body, subject was alredy set in $this->modifyMessage();
                 $this->modifiedMessage->from = $this->validator->emailMessage->sender;                  $this->modifiedMessage->from = $this->validator->emailMessage->sender;
                 $this->modifiedMessage->dt_header = Date("Y-m-d H:i:s", StrToTime($this->validator->emailMessage->structure->headers["date"]));                  $this->modifiedMessage->dt_header = Date("Y-m-d H:i:s", StrToTime($this->validator->emailMessage->structure->headers["date"]));
Line 314  class CReceiver {
Line 316  class CReceiver {
                 $sql .= "(list_id, messageid, `from`, dt_header, dt_received, ";                  $sql .= "(list_id, messageid, `from`, dt_header, dt_received, ";
                 $sql .= "header, subject, body) VALUES ";                  $sql .= "header, subject, body) VALUES ";
                 $sql .= "($_list_id, '".$this->modifiedMessage->messageID."', '".AddSlashes($this->modifiedMessage->from)."', '".$this->modifiedMessage->dt_header."', '".$this->modifiedMessage->dt_received."', '".AddSlashes($this->validator->emailMessage->header)."', '".AddSlashes($this->modifiedMessage->subject)."', '".AddSlashes($this->emailMessage->plain_body)."')";                  $sql .= "($_list_id, '".$this->modifiedMessage->messageID."', '".AddSlashes($this->modifiedMessage->from)."', '".$this->modifiedMessage->dt_header."', '".$this->modifiedMessage->dt_received."', '".AddSlashes($this->validator->emailMessage->header)."', '".AddSlashes($this->modifiedMessage->subject)."', '".AddSlashes($this->emailMessage->plain_body)."')";
   
   
                 $res =& $dbh->query($sql);                  $res =& $dbh->query($sql);
                 if (PEAR::isError($res))                  if (PEAR::isError($res))
                         if (StrCmp("DB Error: already exists", $res->getMessage()) != 0)                          if (StrCmp("DB Error: already exists", $res->getMessage()) != 0)
Line 330  class CReceiver {
Line 332  class CReceiver {
   
                 $res->fetchInto($row);                  $res->fetchInto($row);
                 return $row["id"];                  return $row["id"];
         }          } // }}}
   
 function setParentID($id)  
 {          function setParentID($id)
         global $dbh;          { // {{{
                   global $dbh;
         $in_reply_to = $this->validator->emailMessage->structure->headers["in-reply-to"];  
         if (StrLen($in_reply_to) > 0)                  $in_reply_to = $this->validator->emailMessage->structure->headers["in-reply-to"];
         {                  if (StrLen($in_reply_to) > 0)
                 $sql = "SELECT id FROM mylist_messages WHERE messageid LIKE '".AddSlashes($in_reply_to)."'";  
   
                 $res =& $dbh->getOne($sql);  
                 if (PEAR::isError($res))  
                         die($res->getMessage());  
                 if ($res != "")  
                 {  
                         $sql = "UPDATE mylist_messages SET parent_id = '".AddSlashes($res)."' WHERE id = ".$id;  
                                 $res =& $dbh->query($sql);  
                         if (PEAR::isError($res))  
                                 die($res->getMessage());  
                         return;  
                 }  
         }  
   
         $references = Array();  
         $references = explode(" ", $this->validator->emailMessage->structure->headers["references"]);  
   
         for($i=Count($references); $i > 0; $i--)  
         {  
                 if (StrLen($references[$i-1]) > 0)  
                 {                  {
                         $sql = "SELECT id FROM mylist_messages WHERE messageid LIKE '".AddSlashes($references[$i-1])."'";                          $sql = "SELECT id FROM mylist_messages WHERE messageid LIKE '".AddSlashes($in_reply_to)."'";
   
                         $res =& $dbh->getOne($sql);                          $res =& $dbh->getOne($sql);
                         if (PEAR::isError($res))                          if (PEAR::isError($res))
                                 die($res->getMessage());                                  die($res->getMessage());
   
                         if ($res != "")                          if ($res != "")
                         {                          {
                                 $sql = "UPDATE mylist_messages SET parent_id = '".AddSlashes($res)."' WHERE id = ".$id;                                  $sql = "UPDATE mylist_messages SET parent_id = '".AddSlashes($res)."' WHERE id = ".$id;
                                 $res =& $dbh->query($sql);                                  $res =& $dbh->query($sql);
                                 if (PEAR::isError($res))                                  if (PEAR::isError($res))
                                         die($res->getMessage());                                          die($res->getMessage());
                                   return;
                         return;  
                         }                          }
                 }                  }
         }  
   
   
 }  
   
                   $references = Array();
                   $references = explode(" ", $this->validator->emailMessage->structure->headers["references"]);
   
                   for($i=Count($references); $i > 0; $i--)
                   {
                           if (StrLen($references[$i-1]) > 0)
                           {
                                   $sql = "SELECT id FROM mylist_messages WHERE messageid LIKE '".AddSlashes($references[$i-1])."'";
                                   $res =& $dbh->getOne($sql);
                                   if (PEAR::isError($res))
                                           die($res->getMessage());
   
 function messageHasAttachements()                                  if ($res != "")
 {                                  {
         if (Is_Array($this->validator->emailMessage->structure->parts))                                          $sql = "UPDATE mylist_messages SET parent_id = '".AddSlashes($res)."' WHERE id = ".$id;
                 return  true;                                          $res =& $dbh->query($sql);
         else                                          if (PEAR::isError($res))
                 return false;                                                  die($res->getMessage());
 }  
   
                                           return;
                                   }
                           }
                   }
   
 function getPlainBodyText()  
 {  
   
 foreach ($this->validator->emailMessage->structure->parts as $part)          } // }}}
 {  
   
 if (isset($part->disposition))  
 {  
   
 }  
 else if (is_Array($part->parts))  
 {  
         Reset($part->parts);  
         While($field = Current($part->parts))  
         {  
                 if (($field->ctype_primary == "text") && ($field->ctype_secondary == "plain"))  
                         return $field->body;  
         Next($part->parts);  
         }  
   
 }  
 else if (($part->ctype_primary == "text") && ($part->ctype_secondary == "plain"))  
         return $part->body;  
 }  
   
 }  
   
           function messageHasAttachements()
           { // {{{
                   if (Is_Array($this->validator->emailMessage->structure->parts))
                           return  true;
                   else
                           return false;
           } // }}}
   
 function addSignature($signature,$plainbody)  
 {  
         $old_body = $this->validator->emailMessage->body;  
         $first_sign = "content-type: text/plain";  
   
         if (($pos=StrPos(strtolower($old_body),$first_sign)) || StrToLower($old_body[0]) == $first_sign)  
         {  
                 $body_less = SubStr($old_body,$pos);  
                 if (($pos2 = StrPos($body_less, $plainbody)) || $body_less[0] == $plain_body)  
                 {  
                         // teraz idem spravit vysledok  
                         $result = "";  
                         $part1 = SubStr($old_body, 0 , $pos  + $pos2 + StrLen($plainbody) );  
                         $part2 = SubStr($old_body, $pos  + $pos2 + StrLen($plainbody));  
   
                         $result = $part1."\r\n".$signature."\r\n".$part2;  
                         return $result;  
   
           function getPlainBodyText()
                 }          { // {{{
   
         }  
   
         // if something is wrong, return body without signature                  foreach ($this->validator->emailMessage->structure->parts as $part)
         return $old_body;                  {
 }  
                           if (isset($part->disposition))
                           {
   
                           }
                           else if (is_Array($part->parts))
                           {
                                   Reset($part->parts);
                                   While($field = Current($part->parts))
                                   {
                                           if (($field->ctype_primary == "text") && ($field->ctype_secondary == "plain"))
                                                   return $field->body;
                                           Next($part->parts);
                                   }
   
                           }
                           else if (($part->ctype_primary == "text") && ($part->ctype_secondary == "plain"))
                                   return $part->body;
                   }
   
           } // }}}
   
 function processAttachements($id)  
 {  
   
 global $dbh;          function addSignature($signature,$plainbody)
           { // {{{
                   $old_body = $this->validator->emailMessage->body;
                   $first_sign = "content-type: text/plain";
   
 foreach ($this->validator->emailMessage->structure->parts as $part)                  if (($pos=StrPos(strtolower($old_body),$first_sign)) || StrToLower($old_body[0]) == $first_sign)
 {  
   
         if (isset($part->disposition) and ($part->disposition=='attachment'))  
         {  
                 $filename = $part->d_parameters['filename'];  
                 if ($filename == "")  
                         $filename = "attachement";  
   
                 $sql  = "INSERT INTO mylist_message_atts ";  
                 $sql .= "(message_id, atts_headers, atts_body, path, filename) ";  
                 $sql .= "VALUES ";  
                 $sql .= "($id, '".$part->ctype_primary."/".$part->ctype_secondary."', ";  
   
                 if ($part->ctype_primary == "text")  
                 {                  {
                         $sql .= "'".AddSlashes($part->body)."', '', '$filename')";                          $body_less = SubStr($old_body,$pos);
                         $this->indexer->attachements .=  $part->body."\n\n";                          if (($pos2 = StrPos($body_less, $plainbody)) || $body_less[0] == $plain_body)
                           {
                                   // teraz idem spravit vysledok
                                   $result = "";
                                   $part1 = SubStr($old_body, 0 , $pos  + $pos2 + StrLen($plainbody) );
                                   $part2 = SubStr($old_body, $pos  + $pos2 + StrLen($plainbody));
   
                                   $result = $part1."\r\n".$signature."\r\n".$part2;
                                   return $result;
   
   
                           }
   
                 }                  }
                 else  
                   // if something is wrong, return body without signature
                   return $old_body;
           } // }}}
   
   
           function processAttachements($id)
           { // {{{
   
                   global $dbh;
   
                   foreach ($this->validator->emailMessage->structure->parts as $part)
                 {                  {
                         $path = $this->copyToFilesystem($part->body);  
                         $sql .= "'', '$path', '$filename')";                          if (isset($part->disposition) and ($part->disposition=='attachment'))
                           {
                                   $filename = $part->d_parameters['filename'];
                                   if ($filename == "")
                                           $filename = "attachement";
   
                                   $sql  = "INSERT INTO mylist_message_atts ";
                                   $sql .= "(message_id, atts_headers, atts_body, path, filename) ";
                                   $sql .= "VALUES ";
                                   $sql .= "($id, '".$part->ctype_primary."/".$part->ctype_secondary."', ";
   
                                   if ($part->ctype_primary == "text")
                                   {
                                           $sql .= "'".AddSlashes($part->body)."', '', '$filename')";
                                           $this->indexer->attachements .=  $part->body."\n\n";
                                   }
                                   else
                                   {
                                           $path = $this->copyToFilesystem($part->body);
                                           $sql .= "'', '$path', '$filename')";
   
                                   }
   
                                   $res =& $dbh->query($sql);
                                   if (PEAR::isError($res))
                                           die($res->getMessage());
   
   
                           }
   
                 }                  }
   
                 $res =& $dbh->query($sql);          } // }}}
                 if (PEAR::isError($res))  
                         die($res->getMessage());  
   
   
         }  
   
 }  
   
 }          function copyToFilesystem($content)
           { // {{{
                   global $atts_dir_backend;
   
                   Srand((double) MicroTime() * 1e6);
   
 function copyToFilesystem($content)  
 {  
         global $atts_dir_backend;  
   
         Srand((double) MicroTime() * 1e6);  
   
         $unique  = Time();  
         $unique .= "_".Rand(0,GetRandMax());  
   
         while ( File_Exists($unique))  
         {  
                 $unique  = Time();                  $unique  = Time();
                 $unique .= "_".Rand(0,GetRandMax());                  $unique .= "_".Rand(0,GetRandMax());
         }  
   
         $fp = fopen($atts_dir_backend.$unique, 'w');                  while ( File_Exists($unique))
         fwrite($fp, $content);                  {
         fclose($fp);                          $unique  = Time();
                           $unique .= "_".Rand(0,GetRandMax());
                   }
   
                   $fp = fopen($atts_dir_backend.$unique, 'w');
                   fwrite($fp, $content);
                   fclose($fp);
   
         return $unique;                  return $unique;
 }          } // }}}
   
 }  }
   
   // vim: fdm=marker fdl=0 fdc=3
 ?>  ?>
   
   

Legend:
Removed from v.1.9  
changed lines
  Added in v.1.10

Platon Group <platon@platon.org> http://platon.org/
Copyright © 2002-2006 Platon Group
Site powered by Metafox CMS
Go to Top