From f59fca5bd34ffbdcb14a0a04087695dcb378ceb1 Mon Sep 17 00:00:00 2001 From: Quitta Date: Mon, 12 Aug 2013 05:14:00 +0200 Subject: [PATCH] not sure if I should keep the task creation or not, will ask Botanic tomorrow --- .../ams_lib/autoload/mail_handler.php | 105 ++++++++---------- .../tools/server/ryzom_ams/www/config.php | 5 +- 2 files changed, 49 insertions(+), 61 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 363b82917..be4ad30b9 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 @@ -4,42 +4,13 @@ class Mail_Handler{ private $db; - public function mail_fork() { - /*global $db; - $db = NULL; - $pid = pcntl_fork(); - oms_db_connect(); - return $pid;*/ - - //Start a new thread and return the thread id! + public function mail_fork() { + //Start a new child process and return the process id! $pid = pcntl_fork(); return $pid; } - /* - function oms_db_connect() { - global $db; - global $db_host, $db_name, $db_user, $db_pass; - if(!isset($db)) { - try { - $db = new PDO( - "mysql:host=$db_host;dbname=$db_name", - $db_user, - $db_pass, - array(PDO::MYSQL_ATTR_INIT_COMMAND => "SET NAMES utf8") - ); - $db->setAttribute(PDO::ATTR_ERRMODE, PDO::ERRMODE_EXCEPTION); - //$db->setAttribute(PDO::ATTR_DEFAULT_FETCH_MODE, PDO::FETCH_ASSOC); - oms_error_log("oms_db_connect: database connection established", 3); - } catch(PDOException $e) { - print "Database error: " . $e->getMessage() . "
"; - die(); - } - } else { - oms_error_log("oms_db_connect: already connected"); - } - }*/ function get_email_by_user_id($id){ $user = new Ticket_User(); @@ -56,31 +27,42 @@ class Mail_Handler{ } - function oms_mail_send($recipient, $subject, $body, $from = NULL) { + function get_id_from_username($username){ + $externId = WebUsers::getId($username); + $user = Ticket_User::constr_ExternId($externId); + return $user->getTUserId(); + } + + + public static function send_mail($recipient, $subject, $body, $from = NULL) { if(is_numeric($recipient)) { $id_user = $recipient; $recipient = NULL; } - db_insert('email', array('recipient' => $recipient, 'subject' => $subject, 'body' => $body, 'status' => 'NEW', 'id_user' => $id_user, 'sender' => $from)); + $query = "INSERT INTO email (Recipient,Subject,Body,Status,UserId,Sender) VALUES (:recipient, :subject, :body, :status, :id_user, :sender)"; + $values = array('recipient' => $recipient, 'subject' => $subject, 'body' => $body, 'status' => 'NEW', 'id_user' => $id_user, 'sender' => $from); + $db = new DBLayer("lib"); + $db->execute($query, $values); + } - + //the main function function cron() { global $cfg; $inbox_username = $cfg['mail']['username']; $inbox_password = $cfg['mail']['password']; $inbox_host = $cfg['mail']['host']; $oms_reply_to = "OMS "; - global $basedir; + global $MAIL_DIR; // Deliver new mail echo("mail cron\n"); //creates child process $pid = self::mail_fork(); - $pidfile = '/tmp/ams_cron_email_pid2'; + $pidfile = '/tmp/ams_cron_email_pid'; //INFO: if $pid = //-1: "Could not fork!\n"; @@ -149,19 +131,26 @@ class Mail_Handler{ for ($i = 1; $i <= $message_count; ++$i) { - $header = imap_header($mbox, $i); + $header = imap_header($mbox, $i); + //print_r($header); $entire_email = imap_fetchheader($mbox, $i) . imap_body($mbox, $i); - $subject = decode_utf8($header->subject); + $subject = self::decode_utf8($header->subject); $to = $header->to[0]->mailbox; $from = $header->from[0]->mailbox . '@' . $header->from[0]->host; - $txt = get_part($mbox, $i, "TEXT/PLAIN"); - $html = get_part($mbox, $i, "TEXT/HTML"); + $txt = self::get_part($mbox, $i, "TEXT/PLAIN"); + $html = self::get_part($mbox, $i, "TEXT/HTML"); + print("================"); + print("subj: ".$subject); + print("to: ".$to); + print("from: ".$from); + print("txt: " .$txt); + print("html: ".$html); //return task ID - $tid = oms_create_email($from, $subject, $txt, $html, $to, $from); + $tid = 1; //self::ams_create_email($from, $subject, $txt, $html, $to, $from); - if($tid) { - $file = fopen("$basedir/mail/$tid", 'w'); + if($tid) { + $file = fopen($MAIL_DIR."/mail/".$tid, 'w'); fwrite($file, $entire_email); fclose($file); } @@ -191,22 +180,20 @@ class Mail_Handler{ - function oms_create_email($from, $subject, $body, $html, $recipient = 0, $sender = NULL) { + function ams_create_email($from, $subject, $body, $html, $recipient = 0, $sender = NULL) { - if($recipient == 0 && !is_string($recipient)) { + //TODO: + /*if($recipient == 0 && !is_string($recipient)) { global $user; $recipient = $user->uid; - } + }*/ - if($sender !== NULL && !is_numeric($sender)) $sender = oms_get_id_from_username($sender); - if(!is_numeric($recipient)) $recipient = oms_get_id_from_username($recipient); - - oms_error_log("Sending message: '$subject' from $sender to $recipient", 3); + if($sender !== NULL && !is_numeric($sender)) $sender = self::get_id_from_username($sender); + if(!is_numeric($recipient)) $recipient = self::get_id_from_username($recipient); $message = array( 'creator' => $sender, 'owner' => $recipient, - 'id_module' => 'email', 'type' => 'email', 'summary' => $subject, 'data' => array ( @@ -229,7 +216,7 @@ class Mail_Handler{ - function oms_get_email($id) { + /*function oms_get_email($id) { $message = oms_task_load($id); if($message) { @@ -239,26 +226,26 @@ class Mail_Handler{ return FALSE; } - } + }*/ - function oms_prepare_email(&$message) { + /*function oms_prepare_email(&$message) { $data = $message['data']; $data['id_message'] = $message['id_task']; $data['read'] = ($message['status'] != 'NEW' && $message['status'] != 'UNREAD'); $message = $data; - } + }*/ - function oms_email_mark_read($mid) { + /*function oms_email_mark_read($mid) { db_exec("update task set status = 'READ' where id_task = ? and type = 'email' and module = 'email'", array($mid)); - } + }*/ @@ -296,7 +283,7 @@ class Mail_Handler{ } if($structure) { - if($mime_type == get_mime_type($structure)) { + if($mime_type == self::get_mime_type($structure)) { if(!$part_number) { $part_number = "1"; } @@ -317,7 +304,7 @@ class Mail_Handler{ } else { $prefix = ''; } - $data = get_part($stream, $msg_number, $mime_type, $sub_structure,$prefix . ($index + 1)); + $data = self::get_part($stream, $msg_number, $mime_type, $sub_structure,$prefix . ($index + 1)); if($data) { return $data; } diff --git a/code/ryzom/tools/server/ryzom_ams/www/config.php b/code/ryzom/tools/server/ryzom_ams/www/config.php index 516ae0da4..5cf42d2fc 100644 --- a/code/ryzom/tools/server/ryzom_ams/www/config.php +++ b/code/ryzom/tools/server/ryzom_ams/www/config.php @@ -45,7 +45,7 @@ $cfg['mail']['host'] = 'test.com'; // NNTP server on port 119 use: $nntp = imap_open ("{localhost:119/nntp}comp.test", "", ""); // To connect to a remote server replace "localhost" with the name or the IP address of the server you want to connect to. //$cfg['mail']['server'] = '{localhost:110/pop3/novalidate-cert}INBOX'; -$cfg['mail']['server']= '{imap.gmail.com:993/imap/ssl}INBOX' +$cfg['mail']['server']= '{imap.gmail.com:993/imap/ssl}INBOX'; //----------------------------------------------------------------------------------------- // If true= the server will add automatically unknown user in the database // (in nel.user= nel.permission= ring.ring_user and ring.characters @@ -64,4 +64,5 @@ $SITEBASE = dirname( __FILE__ ) . '/html/' ; $TICKET_LOGGING = true; $TIME_FORMAT = "m-d-Y H:i:s"; -$INGAME_LAYOUT = "basic"; \ No newline at end of file +$INGAME_LAYOUT = "basic"; +$MAIL_DIR = "/tmp"; \ No newline at end of file