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 59daad5c1..67a90114b 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,13 +4,13 @@ class Mail_Handler{ private $db; - function mail_fork() { + public function mail_fork() { /*global $db; $db = NULL; $pid = pcntl_fork(); oms_db_connect(); return $pid;*/ - $this->db = new DBLayer("lib"); + //Start a new thread and return the thread id! $pid = pcntl_fork(); return $pid; @@ -45,14 +45,14 @@ class Mail_Handler{ $user = new Ticket_User(); $user->load_With_TUserId($id); $webUser = new WebUsers($user->getExternId()); - return $webUsers->getEmail(); + return $webUser->getEmail(); } function get_username_from_id($id){ $user = new Ticket_User(); $user->load_With_TUserId($id); $webUser = new WebUsers($user->getExternId()); - return $webUsers->getUsername(); + return $webUser->getUsername(); } @@ -67,7 +67,7 @@ class Mail_Handler{ - function mail_cron() { + function cron() { global $cfg; $inbox_username = $cfg['mail']['username']; $inbox_password = $cfg['mail']['password']; @@ -79,7 +79,7 @@ class Mail_Handler{ echo("mail cron\n"); //creates child process - $pid = mail_fork(); + $pid = self::mail_fork(); $pidfile = '/tmp/ams_cron_email_pid'; //INFO: if $pid = @@ -92,10 +92,12 @@ class Mail_Handler{ // We're the parent process, do nothing! } else { + //make db connection here because the children have to make the connection. + $this->db = new DBLayer("lib"); //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'); @@ -107,24 +109,26 @@ class Mail_Handler{ $statement = $this->db->executeWithoutParams("select * from email where Status = 'NEW' or Status = 'FAILED'"); $emails = $statement->fetchAll(); - foreach($emails as $email) { - $message_id = new_message_id(); + $message_id = self::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']); + $email['Recipient'] = self::get_email_by_user_id($email['UserId']); } //create sending email adres based on the $sender id if($email['Sender']) { - $username = get_username_from_id($email['Sender']); + $username = self::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; - + print("recip: " . $email['Recipient']); + print("subj: " .$email['Subject']); + print("body: " . $email['Body']); + print("headers: " . $headers); if(mail($email['Recipient'], $email['Subject'], $email['Body'], $headers)) { $status = "DELIVERED"; echo("Emailed {$email['Recipient']}\n"); @@ -178,7 +182,7 @@ class Mail_Handler{ global $cfg; global $ams_mail_count; $ams_mail_count = ($ams_mail_count == '') ? 1 : $ams_mail_count + 1; - return ""; + return ""; } diff --git a/code/ryzom/tools/server/ryzom_ams/ams_lib/cron/mail_cron.php b/code/ryzom/tools/server/ryzom_ams/ams_lib/cron/mail_cron.php new file mode 100644 index 000000000..9d669e866 --- /dev/null +++ b/code/ryzom/tools/server/ryzom_ams/ams_lib/cron/mail_cron.php @@ -0,0 +1,7 @@ +cron(); \ No newline at end of file diff --git a/code/ryzom/tools/server/ryzom_ams/ams_lib/libinclude.php b/code/ryzom/tools/server/ryzom_ams/ams_lib/libinclude.php index 0d8606488..e5deb6030 100644 --- a/code/ryzom/tools/server/ryzom_ams/ams_lib/libinclude.php +++ b/code/ryzom/tools/server/ryzom_ams/ams_lib/libinclude.php @@ -3,6 +3,10 @@ // Base include file for library functions for AMS // *********************************************** function __autoload( $className ){ - require_once 'autoload/' . strtolower ( $className ) . '.php'; + if(file_exists( '/home/daan/ryzom/ryzomcore/code/ryzom/tools/server/ryzom_ams/ams_lib/autoload/' . strtolower ( $className ) . '.php')){ + require_once 'autoload/' . strtolower ( $className ) . '.php'; + } + if($className == "WebUsers") + require_once '/home/daan/ryzom/ryzomcore/code/ryzom/tools/server/ryzom_ams/www/html/autoload/' . strtolower ( $className ) . '.php'; } diff --git a/code/ryzom/tools/server/ryzom_ams/www/html/sql/install.php b/code/ryzom/tools/server/ryzom_ams/www/html/sql/install.php index 317f22f06..80d7f79d8 100644 --- a/code/ryzom/tools/server/ryzom_ams/www/html/sql/install.php +++ b/code/ryzom/tools/server/ryzom_ams/www/html/sql/install.php @@ -335,6 +335,37 @@ ON DELETE NO ACTION ON UPDATE NO ACTION) ENGINE = InnoDB; + + + -- ----------------------------------------------------- + -- Table `" . $cfg['db']['lib']['name'] ."`.`email` + -- ----------------------------------------------------- + DROP TABLE IF EXISTS `" . $cfg['db']['lib']['name'] ."`.`email` ; + + CREATE TABLE IF NOT EXISTS `" . $cfg['db']['lib']['name'] ."`.`email` ( + `MailId` INT NOT NULL AUTO_INCREMENT , + `Recipient` VARCHAR(50) NULL , + `Subject` VARCHAR(60) NULL , + `Body` VARCHAR(400) NULL , + `Status` VARCHAR(45) NULL , + `Attempts` VARCHAR(45) NULL DEFAULT 0 , + `Sender` INT(10) UNSIGNED NOT NULL , + `UserId` INT(10) UNSIGNED NOT NULL , + `MessageId` VARCHAR(45) NOT NULL , + PRIMARY KEY (`MailId`) , + INDEX `fk_email_ticket_user1` (`Sender` ASC) , + INDEX `fk_email_ticket_user2` (`UserId` ASC) , + CONSTRAINT `fk_email_ticket_user1` + FOREIGN KEY (`Sender` ) + REFERENCES `" . $cfg['db']['lib']['name'] ."`.`ticket_user` (`TUserId` ) + ON DELETE NO ACTION + ON UPDATE NO ACTION, + CONSTRAINT `fk_email_ticket_user2` + FOREIGN KEY (`UserId` ) + REFERENCES `" . $cfg['db']['lib']['name'] ."`.`ticket_user` (`TUserId` ) + ON DELETE NO ACTION + ON UPDATE NO ACTION) + ENGINE = InnoDB; diff --git a/code/ryzom/tools/server/ryzom_ams/www/html/sql/ticketsql.sql b/code/ryzom/tools/server/ryzom_ams/www/html/sql/ticketsql.sql index e65c48928..4e8369fbe 100644 --- a/code/ryzom/tools/server/ryzom_ams/www/html/sql/ticketsql.sql +++ b/code/ryzom/tools/server/ryzom_ams/www/html/sql/ticketsql.sql @@ -293,6 +293,37 @@ CREATE TABLE IF NOT EXISTS `mydb`.`forwarded` ( ENGINE = InnoDB; +-- ----------------------------------------------------- +-- Table `mydb`.`email` +-- ----------------------------------------------------- +DROP TABLE IF EXISTS `mydb`.`email` ; + +CREATE TABLE IF NOT EXISTS `mydb`.`email` ( + `MailId` INT NOT NULL AUTO_INCREMENT , + `Recipient` VARCHAR(50) NULL , + `Subject` VARCHAR(60) NULL , + `Body` VARCHAR(400) NULL , + `Status` VARCHAR(45) NULL , + `Attempts` VARCHAR(45) NULL DEFAULT 0 , + `Sender` INT(10) UNSIGNED NOT NULL , + `UserId` INT(10) UNSIGNED NOT NULL , + `MessageId` VARCHAR(45) NOT NULL , + PRIMARY KEY (`MailId`) , + INDEX `fk_email_ticket_user1` (`Sender` ASC) , + INDEX `fk_email_ticket_user2` (`UserId` ASC) , + CONSTRAINT `fk_email_ticket_user1` + FOREIGN KEY (`Sender` ) + REFERENCES `mydb`.`ticket_user` (`TUserId` ) + ON DELETE NO ACTION + ON UPDATE NO ACTION, + CONSTRAINT `fk_email_ticket_user2` + FOREIGN KEY (`UserId` ) + REFERENCES `mydb`.`ticket_user` (`TUserId` ) + ON DELETE NO ACTION + ON UPDATE NO ACTION) +ENGINE = InnoDB; + + SET SQL_MODE=@OLD_SQL_MODE; SET FOREIGN_KEY_CHECKS=@OLD_FOREIGN_KEY_CHECKS; 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 d5cfd3c77..19bb4b86a 100644 Binary files a/code/ryzom/tools/server/ryzom_ams/www/html/sql/ticketsystemmodel.mwb and b/code/ryzom/tools/server/ryzom_ams/www/html/sql/ticketsystemmodel.mwb differ