From 140160e332d0ccf153e6e7487b2ec99402e6096f Mon Sep 17 00:00:00 2001
From: uckelman
Date: Fri, 30 Apr 2010 21:10:36 +0000
Subject: Refactored.
git-svn-id: https://vassalengine.svn.sourceforge.net/svnroot/vassalengine/site-src/trunk@6794 67b53d14-2c14-4ace-a08f-0dab2b34000c
---
src/F2M.php | 237 ----------------------------------------------
src/forum_post_delete.php | 18 ++++
src/forum_post_send.php | 229 ++++++++++++++++++++++++++++++++++++++++++++
3 files changed, 247 insertions(+), 237 deletions(-)
delete mode 100644 src/F2M.php
create mode 100644 src/forum_post_delete.php
create mode 100644 src/forum_post_send.php
(limited to 'src')
diff --git a/src/F2M.php b/src/F2M.php
deleted file mode 100644
index 7e35f60..0000000
--- a/src/F2M.php
+++ /dev/null
@@ -1,237 +0,0 @@
-';
- var_dump($data);
- var_dump($post_data);
- print '
';
-
- # Sanity check
- if (!in_array($mode, array('post', 'reply', 'quote', 'edit'))) {
- throw new Exception('unrecognized mode: ' . $mode);
- }
-
- require_once('Mail.php');
-
- require_once(__DIR__ . '/BBCodeParser.php');
- require_once(__DIR__ . '/Bridge.php');
- require_once(__DIR__ . '/PhpBB3.php');
- require_once(__DIR__ . '/Util.php');
-
- $postId = $data['post_id'];
- $forumId = $data['forum_id'];
-
- $bridge = new Bridge();
-
- $to = $bridge->getLists($forumId);
- if (count($to) == 0) {
- # No lists to send to, bail out.
- return;
- }
- $to = implode(', ', $to);
-
- $userName = $user->data['username'];
- $userEmail = $user->data['user_email'];
-
- $from = utf8_quote($userName) . ' <' . $userEmail . '>';
- $sender = 'forum@test.nomic.net';
- $subject = utf8_quote($post_data['post_subject']);
-
- $phpbb = new PhpBB3();
-
- $time = null;
- if ($mode == 'edit') {
- # Post time is NOT updated on edit, so we get the current time
- $time = time();
- }
- else {
- $time = $phpbb->getPostTime($postId);
- if ($time === false) {
- throw new Exception('no post time: ' . $postId);
- }
- }
-
- $date = date(DATE_RFC2822, $time);
-
- $inReplyTo = null;
- $references = null;
-
- if ($mode == 'reply' || $mode == 'quote') {
- $firstId = $data['topic_first_post_id'];
- $firstMessageId = $bridge->getMessageId($firstId);
- if ($firstMessageId === false) {
- throw new Exception('unrecognized post id: ' . $firstId);
- }
-
- $inReplyTo = $references = $firstMessageId;
- }
- else if ($mode == 'edit') {
- $inReplyTo = $bridge->getMessageId($postId);
- }
-
- $forumURL = 'http://' . $_SERVER['SERVER_NAME'] .
- dirname($_SERVER['SCRIPT_NAME']);
-
- # Assemble the message headers
- $headers = array(
- 'To' => $to,
- 'From' => $from,
- 'Subject' => $subject,
- 'Date' => $date,
- 'Message-Id' => $messageId,
- 'X-BeenThere' => $forumURL
- );
-
- if ($inReplyTo !== null) {
- $headers['In-Reply-To'] = $inReplyTo;
- }
-
- if ($references !== null) {
- $headers['References'] = $references;
- }
-
- # Build the message body
- $parser = new BBCodeParser();
- $text = $parser->parse($data['message'], $data['bbcode_uid']);
-
- if ($mode == 'edit') {
- $edit_notice = << 'multipart/mixed');
- $mime = new Mail_mimePart('', $params);
-
- # Build the main body
- build_text_part($mime, $text);
-
- # Build each attachment
- foreach ($data['attachment_data'] as $a) {
- $attachId = $a['attach_id'];
- $adata = $phpbb->getAttachmentData($attachId);
- if ($adata === false) {
- throw new Exception('unrecognized attachment id: ' . $attachId);
- }
-
- $afile = $phpbb_root_path . $config['upload_path'] . '/' .
- utf8_basename($adata['physical_filename']);
-
- $bytes = file_get_contents($afile);
- if ($bytes === false) {
- throw new Exception('failed to read file: ' . $afile);
- }
-
- build_attachment(
- $mime,
- $adata['mimetype'],
- $adata['real_filename'],
- $adata['attach_comment'],
- $bytes
- );
- }
-
- # Build footer
- build_text_part($mime, $footer);
-
- # Encode the message
- $msg = $mime->encode();
- $headers = array_merge($headers, $msg['headers']);
- $body = $msg['body'];
- }
-
- $editId = $bridge->reserveEditId($postId);
- $messageId = build_message_id($postId, $editId,
- $time, $_SERVER['SERVER_NAME']);
-
- $mailer = Mail::factory('sendmail');
-
- # Register the message
- $seen = !$bridge->registerByEditId($editId, $messageId, $inReplyTo);
- if ($seen) {
- throw new Exception('message id already seen: ' . $messageId);
- }
-
- try {
- # Send the message
- $err = $mailer->send($to, $headers, $body);
- if (PEAR::isError($err)) {
- throw new Exception('Mail::send error: ' . $err->toString());
- }
- }
- catch (Exception $e) {
- # Bridging failed, unregister message.
- $bridge->unregisterMessage($editId);
- throw $e;
- }
-}
-
-# TODO: call this from handle_post_delete in posting.php
-function remove_post($postId) {
- require_once(__DIR__ . '/Bridge.php');
-
- $bridge = new Bridge();
- $bridge->removePost($postId);
-}
-
-function build_text_part($mime, $text) {
- $params = array(
- 'content_type' => 'text/plain',
- 'charset' => 'utf-8',
- 'encoding' => '8bit',
- 'disposition' => 'inline'
- );
- $mime->addSubPart($text, $params);
-}
-
-function build_attachment($mime, $type, $filename, $descr, $data) {
- $params = array(
- 'content_type' => $type,
- 'encoding' => 'base64',
- 'disposition' => 'attachment',
- 'dfilename' => $filename,
- 'description' => $descr
- );
- $mime->addSubPart($data, $params);
-}
-
-?>
diff --git a/src/forum_post_delete.php b/src/forum_post_delete.php
new file mode 100644
index 0000000..068c041
--- /dev/null
+++ b/src/forum_post_delete.php
@@ -0,0 +1,18 @@
+removePost($postId);
+}
+
+?>
diff --git a/src/forum_post_send.php b/src/forum_post_send.php
new file mode 100644
index 0000000..cd103e7
--- /dev/null
+++ b/src/forum_post_send.php
@@ -0,0 +1,229 @@
+';
+ var_dump($data);
+ var_dump($post_data);
+ print '';
+
+ # Sanity check
+ if (!in_array($mode, array('post', 'reply', 'quote', 'edit'))) {
+ throw new Exception('unrecognized mode: ' . $mode);
+ }
+
+ require_once('Mail.php');
+
+ require_once(__DIR__ . '/BBCodeParser.php');
+ require_once(__DIR__ . '/Bridge.php');
+ require_once(__DIR__ . '/PhpBB3.php');
+ require_once(__DIR__ . '/Util.php');
+
+ $postId = $data['post_id'];
+ $forumId = $data['forum_id'];
+
+ $bridge = new Bridge();
+
+ $to = $bridge->getLists($forumId);
+ if (count($to) == 0) {
+ # No lists to send to, bail out.
+ return;
+ }
+ $to = implode(', ', $to);
+
+ $userName = $user->data['username'];
+ $userEmail = $user->data['user_email'];
+
+ $from = utf8_quote($userName) . ' <' . $userEmail . '>';
+ $sender = 'forum@test.nomic.net';
+ $subject = utf8_quote($post_data['post_subject']);
+
+ $phpbb = new PhpBB3();
+
+ $time = null;
+ if ($mode == 'edit') {
+ # Post time is NOT updated on edit, so we get the current time
+ $time = time();
+ }
+ else {
+ $time = $phpbb->getPostTime($postId);
+ if ($time === false) {
+ throw new Exception('no post time: ' . $postId);
+ }
+ }
+
+ $date = date(DATE_RFC2822, $time);
+
+ $inReplyTo = null;
+ $references = null;
+
+ if ($mode == 'reply' || $mode == 'quote') {
+ $firstId = $data['topic_first_post_id'];
+ $firstMessageId = $bridge->getMessageId($firstId);
+ if ($firstMessageId === false) {
+ throw new Exception('unrecognized post id: ' . $firstId);
+ }
+
+ $inReplyTo = $references = $firstMessageId;
+ }
+ else if ($mode == 'edit') {
+ $inReplyTo = $bridge->getMessageId($postId);
+ }
+
+ $forumURL = 'http://' . $_SERVER['SERVER_NAME'] .
+ dirname($_SERVER['SCRIPT_NAME']);
+
+ # Assemble the message headers
+ $headers = array(
+ 'To' => $to,
+ 'From' => $from,
+ 'Subject' => $subject,
+ 'Date' => $date,
+ 'Message-Id' => $messageId,
+ 'X-BeenThere' => $forumURL
+ );
+
+ if ($inReplyTo !== null) {
+ $headers['In-Reply-To'] = $inReplyTo;
+ }
+
+ if ($references !== null) {
+ $headers['References'] = $references;
+ }
+
+ # Build the message body
+ $parser = new BBCodeParser();
+ $text = $parser->parse($data['message'], $data['bbcode_uid']);
+
+ if ($mode == 'edit') {
+ $edit_notice = << 'multipart/mixed');
+ $mime = new Mail_mimePart('', $params);
+
+ # Build the main body
+ build_text_part($mime, $text);
+
+ # Build each attachment
+ foreach ($data['attachment_data'] as $a) {
+ $attachId = $a['attach_id'];
+ $adata = $phpbb->getAttachmentData($attachId);
+ if ($adata === false) {
+ throw new Exception('unrecognized attachment id: ' . $attachId);
+ }
+
+ $afile = $phpbb_root_path . $config['upload_path'] . '/' .
+ utf8_basename($adata['physical_filename']);
+
+ $bytes = file_get_contents($afile);
+ if ($bytes === false) {
+ throw new Exception('failed to read file: ' . $afile);
+ }
+
+ build_attachment(
+ $mime,
+ $adata['mimetype'],
+ $adata['real_filename'],
+ $adata['attach_comment'],
+ $bytes
+ );
+ }
+
+ # Build footer
+ build_text_part($mime, $footer);
+
+ # Encode the message
+ $msg = $mime->encode();
+ $headers = array_merge($headers, $msg['headers']);
+ $body = $msg['body'];
+ }
+
+ $editId = $bridge->reserveEditId($postId);
+ $messageId = build_message_id($postId, $editId,
+ $time, $_SERVER['SERVER_NAME']);
+
+ $mailer = Mail::factory('sendmail');
+
+ # Register the message
+ $seen = !$bridge->registerByEditId($editId, $messageId, $inReplyTo);
+ if ($seen) {
+ throw new Exception('message id already seen: ' . $messageId);
+ }
+
+ try {
+ # Send the message
+ $err = $mailer->send($to, $headers, $body);
+ if (PEAR::isError($err)) {
+ throw new Exception('Mail::send error: ' . $err->toString());
+ }
+ }
+ catch (Exception $e) {
+ # Bridging failed, unregister message.
+ $bridge->unregisterMessage($editId);
+ throw $e;
+ }
+}
+
+function build_text_part($mime, $text) {
+ $params = array(
+ 'content_type' => 'text/plain',
+ 'charset' => 'utf-8',
+ 'encoding' => '8bit',
+ 'disposition' => 'inline'
+ );
+ $mime->addSubPart($text, $params);
+}
+
+function build_attachment($mime, $type, $filename, $descr, $data) {
+ $params = array(
+ 'content_type' => $type,
+ 'encoding' => 'base64',
+ 'disposition' => 'attachment',
+ 'dfilename' => $filename,
+ 'description' => $descr
+ );
+ $mime->addSubPart($data, $params);
+}
+
+?>
--
cgit v1.2.3