From 9870dac30de1b8d1bdeab57af3eeb7c89b21ef76 Mon Sep 17 00:00:00 2001
From: alecpl <alec@alec.pl>
Date: Sat, 14 Apr 2012 02:35:52 -0400
Subject: [PATCH] - Make some methods public (#1488428)

---
 bin/msgimport.sh |   89 ++++++++++++++++++++------------------------
 1 files changed, 41 insertions(+), 48 deletions(-)

diff --git a/bin/msgimport.sh b/bin/msgimport.sh
index 98a0389..845c585 100755
--- a/bin/msgimport.sh
+++ b/bin/msgimport.sh
@@ -1,55 +1,23 @@
-#!/usr/bin/php -qC 
+#!/usr/bin/env php
 <?php
 
-define('INSTALL_PATH', preg_replace('/bin\/$/', '', getcwd()) . '/');
+define('INSTALL_PATH', realpath(dirname(__FILE__) . '/..') . '/' );
 ini_set('memory_limit', -1);
 
-require_once INSTALL_PATH.'program/include/iniset.php';
-
-/**
- * Parse commandline arguments into a hash array
- */
-function get_args($aliases=array())
-{
-	$args = array();
-	for ($i=1; $i<count($_SERVER['argv']); $i++)
-	{
-		$arg = $_SERVER['argv'][$i];
-		if (substr($arg, 0, 2) == '--')
-		{
-			$sp = strpos($arg, '=');
-			$key = substr($arg, 2, $sp - 2);
-			$value = substr($arg, $sp+1);
-		}
-		else if ($arg{0} == '-')
-		{
-			$key = substr($arg, 1);
-			$value = $_SERVER['argv'][++$i];
-		}
-		else
-			continue;
-
-		$args[$key] = preg_replace(array('/^["\']/', '/["\']$/'), '', $value);
-		
-		if ($alias = $aliases[$key])
-			$args[$alias] = $args[$key];
-	}
-
-	return $args;
-}
-
+require_once INSTALL_PATH.'program/include/clisetup.php';
 
 function print_usage()
 {
-	print "Usage:  msgimport -h imap-host -u user-name -f message-file\n";
+	print "Usage:  msgimport -h imap-host -u user-name -m mailbox -f message-file\n";
 	print "--host   IMAP host\n";
 	print "--user   IMAP user name\n";
+	print "--mbox   Target mailbox\n";
 	print "--file   Message file to upload\n";
 }
 
 
 // get arguments
-$args = get_args(array('h' => 'host', 'u' => 'user', 'p' => 'pass', 'f' => 'file')) + array('host' => 'localhost');
+$args = get_opt(array('h' => 'host', 'u' => 'user', 'p' => 'pass', 'm' => 'mbox', 'f' => 'file')) + array('host' => 'localhost', 'mbox' => 'INBOX');
 
 if ($_SERVER['argv'][1] == 'help')
 {
@@ -77,11 +45,10 @@
 }
 
 // prompt for password
-echo "Password: ";
-$args['pass'] = trim(fgets(STDIN));
-
-// clear password input
-echo chr(8)."\rPassword: ".str_repeat("*", strlen($args['pass']))."\n";
+if (empty($args['pass']))
+{
+	$args['pass'] = prompt_silent("Password: ");
+}
 
 // parse $host URL
 $a_host = parse_url($args['host']);
@@ -104,17 +71,43 @@
 if ($IMAP->connect($host, $args['user'], $args['pass'], $imap_port, $imap_ssl))
 {
 	print "IMAP login successful.\n";
-	print "Uploading message...\n";
+	print "Uploading messages...\n";
 	
+	$count = 0;
+	$message = $lastline = '';
+	
+	$fp = fopen($args['file'], 'r');
+	while (($line = fgets($fp)) !== false)
+	{
+		if (preg_match('/^From\s+-/', $line) && $lastline == '')
+		{
+			if (!empty($message))
+			{
+				if ($IMAP->save_message($args['mbox'], rtrim($message)))
+					$count++;
+				else
+					die("Failed to save message to {$args['mbox']}\n");
+				$message = '';
+			}
+			continue;
+		}
+
+		$message .= $line;
+		$lastline = rtrim($line);
+	}
+
+	if (!empty($message) && $IMAP->save_message($args['mbox'], rtrim($message)))
+		$count++;
+
 	// upload message from file
-	if  ($IMAP->save_message('INBOX', file_get_contents($args['file'])))
-		print "Message successfully added to INBOX.\n";
+	if ($count)
+		print "$count messages successfully added to {$args['mbox']}.\n";
 	else
-		print "Adding message failed!\n";
+		print "Adding messages failed!\n";
 }
 else
 {
 	print "IMAP login failed.\n";
 }
 
-?>
\ No newline at end of file
+?>

--
Gitblit v1.9.1