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.4 and 1.5

version 1.4, 2005/04/10 19:42:45 version 1.5, 2005/04/12 20:16:58
Line 1 
Line 1 
 <?php  <?php
   
 // $Platon: mylist/backend/receiver/receiver.php,v 1.2 2005/03/25 23:32:42 nepto Exp $  // $Platon: mylist/backend/receiver/receiver.php,v 1.4 2005/04/10 19:42:45 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';
 require_once    "../../mylist_indexer.php";  require_once    '../../mylist_indexer.php';
   
 // an object of CReceiver class processes an incomming message  // an object of CReceiver class processes an incomming message
 // it agregates CValidator class that returns IDs of mailinglist into which was the message sent (all conditions like senders allowed, max_message_size, etc are validated)  // it agregates CValidator class that returns IDs of mailinglist into which was the message sent (all conditions like senders allowed, max_message_size, etc are validated)
 // it modifies the message according to configuration of each accepted mailinglist and generates the list of recipients  // it modifies the message according to configuration of each accepted mailinglist and generates the list of recipients
 // the message is archived and indexed for full text search, if the flag "f_archive" is set to 1 in specific mailinglist  // the message is archived and indexed for full text search, if the flag "f_archive" is set to 1 in specific mailinglist
 class CReceiver {  
   
   class CReceiver
   {
         var $validator;          var $validator;
   
         // 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);
                 }                  }
           } /* }}} */
         }  
   
         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 74  class CReceiver {
Line 73  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 100  class CReceiver {
Line 97  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 .= "X-Mailinglist-From: ".$row["name"]."\n";                  $_header .= "X-Mailinglist-From: ".$row["name"]."\n";
                 $_header .= "To: ".$row["name"]."\n";                  $_header .= "To: ".$row["name"]."\n";
                 $_header .= "Errors-To: $errors_to\n";                  $_header .= "Errors-To: $errors_to\n";
                 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;
   
                 if (isset($this->validator->emailMessage->structure->headers["references"]))                  if (isset($this->validator->emailMessage->structure->headers["references"]))
                         $_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 .= $MLIST_CRLF."Received: ".Current($this->validator->emailMessage->structure->headers["received"]);
   
                         Next($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"];
                 }                  }
   
   
   
   
                 // ************* 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 150  class CReceiver {
Line 147  class CReceiver {
                 }                  }
                 else                  else
                         $this->modifiedMessage->subject = $subject;                          $this->modifiedMessage->subject = $subject;
   
   
                 $_header .= $MLIST_CRLF."Subject: ".$this->modifiedMessage->subject;                  $_header .= $MLIST_CRLF."Subject: ".$this->modifiedMessage->subject;
   
   
   
                 // ****************************************************                  // ****************************************************
Line 164  class CReceiver {
Line 161  class CReceiver {
   
                 if (isset($this->validator->emailMessage->structure->headers["mime-version"]))                  if (isset($this->validator->emailMessage->structure->headers["mime-version"]))
                         $_header .= "MIME-Version: ".$this->validator->emailMessage->structure->headers["mime-version"].$MLIST_CRLF;                          $_header .= "MIME-Version: ".$this->validator->emailMessage->structure->headers["mime-version"].$MLIST_CRLF;
   
                 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;
   
Line 178  class CReceiver {
Line 175  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 195  class CReceiver {
Line 192  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
Line 203  class CReceiver {
Line 200  class CReceiver {
                         $this->modifiedMessage->body = $this->validator->emailMessage->body;                          $this->modifiedMessage->body = $this->validator->emailMessage->body;
                         $this->emailMessage->plain_body = $this->modifiedMessage->body;                          $this->emailMessage->plain_body = $this->modifiedMessage->body;
                 }                  }
   
                 // ****************************************************                  // ****************************************************
                 // ****************************************************                  // ****************************************************
         }          } /* }}} */
   
   
         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 228  class CReceiver {
Line 224  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 250  class CReceiver {
Line 245  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;
Line 298  class CReceiver {
Line 290  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 314  class CReceiver {
Line 306  class CReceiver {
   
                 $res->fetchInto($row);                  $res->fetchInto($row);
                 return $row["id"];                  return $row["id"];
         }          } /* }}} */
   
 function setParentID($id)          function setParentID($id) /* {{{ */
 {  
         global $dbh;  
   
         $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)                  global $dbh;
   
                   $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($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()          function messageHasAttachements() /* {{{ */
 {          {
                   if (Is_Array($this->validator->emailMessage->structure->parts))
                           return  true;
                   else
                           return false;
           } /* }}} */
   
 foreach ($this->validator->emailMessage->structure->parts as $part)          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;  
 }  
   
 }                          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);
                                   }
   
 function addSignature($signature,$plainbody)                          }
 {                          else if (($part->ctype_primary == "text") && ($part->ctype_secondary == "plain"))
         $old_body = $this->validator->emailMessage->body;                                  return $part->body;
         $first_sign = "Content-Type: text/plain";                  }
           } /* }}} */
   
         if (($pos=StrPos($old_body,$first_sign)) || $old_body[0] == $first_sign)          function addSignature($signature,$plainbody) /* {{{ */
         {          {
                 $body_less = SubStr($old_body,$pos);                  $old_body = $this->validator->emailMessage->body;
                 if (($pos2 = StrPos($body_less, $plainbody)) || $body_less[0] == $plain_body)                  $first_sign = "Content-Type: text/plain";
                 {  
                         // 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;  
   
                   if (($pos=StrPos($old_body,$first_sign)) || $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 processAttachements($id)                          }
 {  
   
 global $dbh;                  }
           } /* }}} */
   
 foreach ($this->validator->emailMessage->structure->parts as $part)          function processAttachements($id) /* {{{ */
 {  
   
         if (isset($part->disposition) and ($part->disposition=='attachment'))  
         {          {
                 $filename = $part->d_parameters['filename'];                  global $dbh;
                 if ($filename == "")  
                         $filename = "attachement";                  foreach ($this->validator->emailMessage->structure->parts as $part)
   
                 $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')";  
   
                 }                          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;
   
 function copyToFilesystem($content)                  Srand((double) MicroTime() * 1e6);
 {  
         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());
                   }
   
         return $unique;                  $fp = fopen($atts_dir_backend.$unique, 'w');
 }                  fwrite($fp, $content);
                   fclose($fp);
   
                   return $unique;
           } /* }}} */
   
 function moveFile($accepted)          function moveFile($accepted) /* {{{ */
         {          {
                 global $dir_accepted, $dir_rejected;                  global $dir_accepted, $dir_rejected;
                 //exec("mv ".$this->validator->emailMessage->filename." ".(($accepted > 0) ? $dir_accepted : $dir_rejected));                  //exec("mv ".$this->validator->emailMessage->filename." ".(($accepted > 0) ? $dir_accepted : $dir_rejected));
         }          } /* }}} */
 }  
   
 ?>  }
   
   /* Modeline for ViM {{{
    * vim: set ts=4:
    * vim600: fdm=marker fdl=0 fdc=0:
    * }}} */
   
   ?>

Legend:
Removed from v.1.4  
changed lines
  Added in v.1.5

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