From e97dfb6e2b69c8be825ab05959247e76fbfb7949 Mon Sep 17 00:00:00 2001 From: Quitta Date: Sun, 11 Aug 2013 02:29:31 +0200 Subject: [PATCH] ready for testing the send mail functionality :) --- .../ams_lib/autoload/mail_handler.php | 73 ++++++++++++------ .../www/html/sql/ticketsystemmodel.mwb | Bin 15283 -> 16223 bytes 2 files changed, 51 insertions(+), 22 deletions(-) diff --git a/code/ryzom/tools/server/ryzom_ams/ams_lib/autoload/mail_handler.php b/code/ryzom/tools/server/ryzom_ams/ams_lib/autoload/mail_handler.php index ee8892a4f..59daad5c1 100644 --- a/code/ryzom/tools/server/ryzom_ams/ams_lib/autoload/mail_handler.php +++ b/code/ryzom/tools/server/ryzom_ams/ams_lib/autoload/mail_handler.php @@ -41,6 +41,21 @@ class Mail_Handler{ } }*/ + function get_email_by_user_id($id){ + $user = new Ticket_User(); + $user->load_With_TUserId($id); + $webUser = new WebUsers($user->getExternId()); + return $webUsers->getEmail(); + } + + function get_username_from_id($id){ + $user = new Ticket_User(); + $user->load_With_TUserId($id); + $webUser = new WebUsers($user->getExternId()); + return $webUsers->getUsername(); + } + + function oms_mail_send($recipient, $subject, $body, $from = NULL) { if(is_numeric($recipient)) { @@ -63,56 +78,68 @@ class Mail_Handler{ // Deliver new mail echo("mail cron\n"); - //TO ASK: + //creates child process $pid = mail_fork(); - $pidfile = '/tmp/oms_cron_email_pid'; + $pidfile = '/tmp/ams_cron_email_pid'; - //if process is running, then we are already cronning + //INFO: if $pid = + //-1: "Could not fork!\n"; + // 0: "In child!\n"; + //>0: "In parent!\n"; + if($pid) { - - // We're the main process. + + // We're the parent process, do nothing! } else { - + + //if $pidfile doesn't exist yet, then start sending the mails that are in the db. if(!file_exists($pidfile)) { + //create the file and write the child processes id in it! $pid = getmypid(); $file = fopen($pidfile, 'w'); fwrite($file, $pid); fclose($file); //select all new & failed emails & try to send them - $emails = db_query("select * from email where status = 'NEW' or status = 'FAILED'"); + //$emails = db_query("select * from email where status = 'NEW' or status = 'FAILED'"); + $statement = $this->db->executeWithoutParams("select * from email where Status = 'NEW' or Status = 'FAILED'"); + $emails = $statement->fetchAll(); + foreach($emails as $email) { - $message_id = oms_new_message_id(); - echo("Emailing {$email['recipient']}\n"); - if(!$email['recipient']) { - $email['recipient'] = oms_get_email_by_user_id($email['id_user']); + $message_id = new_message_id(); + //if recipient isn't given, then use the email of the id_user instead! + echo("Emailing {$email['Recipient']}\n"); + if(!$email['Recipient']) { + $email['Recipient'] = get_email_by_user_id($email['UserId']); } - if($email['sender']) { - $username = oms_get_username_from_id($email['sender']); + //create sending email adres based on the $sender id + if($email['Sender']) { + $username = get_username_from_id($email['Sender']); $from = "$username <$username@$inbox_host>"; } else { $from = $oms_reply_to; } $headers = "From: $from\r\n" . "Message-ID: " . $message_id; - if(mail($email['recipient'], $email['subject'], $email['body'], $headers)) { + if(mail($email['Recipient'], $email['Subject'], $email['Body'], $headers)) { $status = "DELIVERED"; - echo("Emailed {$email['recipient']}\n"); + echo("Emailed {$email['Recipient']}\n"); } else { $status = "FAILED"; - echo("Email to {$email['recipient']} failed\n"); + echo("Email to {$email['Recipient']} failed\n"); } //change the status of the emails. - db_exec('update email set status = ?, message_id = ?, attempts = attempts + 1 where id_email = ?', array($status, $message_id, $email['id_email'])); + $this->db->execute('update email set Status = ?, MessageId = ?, Attempts = Attempts + 1 where MailId = ?', array($status, $message_id, $email['MailId'])); + //db_exec('update email set status = ?, message_id = ?, attempts = attempts + 1 where id_email = ?', array($status, $message_id, $email['id_email'])); } unlink($pidfile); } // Check mail - + /* //$mailbox = imap_open("{localhost:110/pop3/novalidate-cert}INBOX", $inbox_username, $inbox_password); $mbox = imap_open($cfg['mail']['server'], $inbox_username, $inbox_password); $message_count = imap_num_msg($mbox); @@ -137,19 +164,21 @@ class Mail_Handler{ } imap_expunge($mbox); imap_close($mbox); + */ } } - function oms_new_message_id() { + function new_message_id() { $time = time(); $pid = getmypid(); - global $oms_mail_count; - $oms_mail_count = ($oms_mail_count == '') ? 1 : $oms_mail_count + 1; - return ""; + global $cfg; + global $ams_mail_count; + $ams_mail_count = ($ams_mail_count == '') ? 1 : $ams_mail_count + 1; + return ""; } diff --git a/code/ryzom/tools/server/ryzom_ams/www/html/sql/ticketsystemmodel.mwb b/code/ryzom/tools/server/ryzom_ams/www/html/sql/ticketsystemmodel.mwb index d1ba0a0aee0e693f56fa6e618324bdd9df4dec42..d5cfd3c7797d9584ad4d38b234955398f2c0423b 100644 GIT binary patch delta 14409 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 delta 13441 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 ZpS{EnK|F{;_C!1(LWnuuL>?ik{{?VH3ZDP~