Refactor for new Horde_Mime library.
authorMichael J. Rubinsky <mrubinsk@horde.org>
Sat, 17 Jan 2009 23:14:51 +0000 (18:14 -0500)
committerMichael J. Rubinsky <mrubinsk@horde.org>
Sat, 17 Jan 2009 23:14:51 +0000 (18:14 -0500)
This should be everything in kronolith except the ContactAutoCompleter.php
file.

kronolith/attendees.php
kronolith/lib/Driver.php
kronolith/lib/FreeBusy.php
kronolith/lib/Kronolith.php
kronolith/lib/Views/Event.php
kronolith/scripts/agenda.php
kronolith/templates/attendees/attendees.inc
kronolith/templates/view/view.inc

index 233208d..c4341ae 100644 (file)
@@ -48,8 +48,7 @@ case 'add':
         break;
     }
 
-    require_once 'Horde/MIME.php';
-    foreach (MIME::rfc822Explode($newAttendees) as $newAttendee) {
+    foreach (Horde_Mime_Address::explode($newAttendees) as $newAttendee) {
         // Parse the address without validation to see what we can get out of
         // it. We allow email addresses (john@example.com), email address with
         // user information (John Doe <john@example.com>), and plain names
@@ -85,8 +84,8 @@ case 'add':
             $name = empty($newAttendeeParsedPart->personal)
                 ? ''
                 : $newAttendeeParsedPart->personal;
-            $newAttendeeParsedPartNew = MIME::encodeAddress(
-                MIME::rfc822WriteAddress($newAttendeeParsedPart->mailbox,
+            $newAttendeeParsedPartNew = Horde_Mime::encodeAddress(
+                Horde_Mime_Address::writeAddress($newAttendeeParsedPart->mailbox,
                                          $newAttendeeParsedPart->host, $name));
             $newAttendeeParsedPartValidated = $parser->parseAddressList(
                 $newAttendeeParsedPartNew, '', null, true);
@@ -122,8 +121,7 @@ case 'edit':
         if (empty($attendees[$actionValue]['name'])) {
             $editAttendee = $actionValue;
         } else {
-            require_once 'Horde/MIME.php';
-            $editAttendee = MIME::trimEmailAddress(
+            $editAttendee = Horde_Mime_Address::trimAddress(
                 $attendees[$actionValue]['name']
                 . (strpos($actionValue, '@') === false
                    ? ''
index 829bebf..03e7ff5 100644 (file)
@@ -740,12 +740,11 @@ class Kronolith_Event {
             }
             if ($v1) {
                 if (!empty($status['name'])) {
-                    require_once 'Horde/MIME.php';
                     if (!empty($email)) {
                         $email = ' <' . $email . '>';
                     }
                     $email = $status['name'] . $email;
-                    $email = MIME::trimEmailAddress($email);
+                    $email = Horde_Mime_Address::trimAddress($email);
                 }
             } else {
                 if (!empty($status['name'])) {
@@ -960,7 +959,6 @@ class Kronolith_Event {
         // ATTENDEE.
         $attendee = $vEvent->getAttribute('X-ATTENDEE');
         if (!is_a($attendee, 'PEAR_Error')) {
-            require_once 'Horde/MIME.php';
 
             if (!is_array($attendee)) {
                 $attendee = array($attendee);
@@ -972,7 +970,7 @@ class Kronolith_Event {
             for ($i = 0; $i < count($attendee); ++$i) {
                 $attendee[$i] = str_replace(array('MAILTO:', 'mailto:'), '',
                                             $attendee[$i]);
-                $email = MIME::bareAddress($attendee[$i]);
+                $email = Horde_Mime_Address::bareAddress($attendee[$i]);
                 // Default according to rfc2445:
                 $attendance = KRONOLITH_PART_REQUIRED;
                 // vCalendar 2.0 style:
index 3073df6..03d79f8 100644 (file)
@@ -133,7 +133,6 @@ class Kronolith_FreeBusy {
     {
         require_once 'Horde/iCalendar.php';
         require_once 'Mail/RFC822.php';
-        require_once 'Horde/MIME.php';
 
         /* Properly handle RFC822-compliant email addresses. */
         static $rfc822;
@@ -150,7 +149,7 @@ class Kronolith_FreeBusy {
             return PEAR::raiseError(_("No valid email address found"));
         }
 
-        $email = MIME::rfc822WriteAddress($res[0]->mailbox, $res[0]->host);
+        $email = Horde_Mime_Address::writeAddress($res[0]->mailbox, $res[0]->host);
 
         /* Check if we can retrieve a VFB from the Free/Busy URL, if one is
          * set. */
index aaa022a..27917fd 100644 (file)
@@ -1792,10 +1792,9 @@ class Kronolith {
             return '';
         }
 
-        require_once 'Horde/MIME.php';
         $attendees = array();
         foreach ($_SESSION['kronolith']['attendees'] as $email => $attendee) {
-            $attendees[] = empty($attendee['name']) ? $email : MIME::trimEmailAddress($attendee['name'] . (strpos($email, '@') === false ? '' : ' <' . $email . '>'));
+            $attendees[] = empty($attendee['name']) ? $email : Horde_Mime_Address::trimAddress($attendee['name'] . (strpos($email, '@') === false ? '' : ' <' . $email . '>'));
         }
 
         return implode(', ', $attendees);
@@ -1834,12 +1833,8 @@ class Kronolith {
             return;
         }
 
-        require_once 'Horde/MIME.php';
-        require_once 'Horde/MIME/Headers.php';
-        require_once 'Horde/MIME/Message.php';
-
         $myemail = explode('@', $myemail);
-        $from = MIME::rfc822WriteAddress($myemail[0], isset($myemail[1]) ? $myemail[1] : '', $ident->getValue('fullname'));
+        $from = Horde_Mime_Address::writeAddress($myemail[0], isset($myemail[1]) ? $myemail[1] : '', $ident->getValue('fullname'));
 
         $mail_driver = $conf['mailer']['type'];
         $mail_params = $conf['mailer']['params'];
@@ -1895,10 +1890,9 @@ class Kronolith {
             }
 
             if ($event->getAttendees()) {
-                require_once 'Horde/MIME.php';
                 $attendee_list = array();
                 foreach ($event->getAttendees() as $mail => $attendee) {
-                    $attendee_list[] = empty($attendee['name']) ? $mail : MIME::trimEmailAddress($attendee['name'] . (strpos($mail, '@') === false ? '' : ' <' . $mail . '>'));
+                    $attendee_list[] = empty($attendee['name']) ? $mail : Horde_Mime_Address::trimAddress($attendee['name'] . (strpos($mail, '@') === false ? '' : ' <' . $mail . '>'));
                 }
                 $message .= sprintf(_("Attendees: %s"), implode(', ', $attendee_list)) . "\n\n";
             }
@@ -1913,13 +1907,9 @@ class Kronolith {
                 $message .= "\n\n" . sprintf(_("If your email client doesn't support iTip requests you can use one of the following links to accept or decline the event.\n\nTo accept the event:\n%s\n\nTo accept the event tentatively:\n%s\n\nTo decline the event:\n%s\n"), Util::addParameter($attend_link, 'a', 'accept', false), Util::addParameter($attend_link, 'a', 'tentative', false), Util::addParameter($attend_link, 'a', 'decline', false));
             }
 
-            $mime = new MIME_Part('multipart/alternative');
-            $body = new MIME_Part('text/plain', $message, NLS::getCharset());
-            $body->setTransferEncoding('quoted-printable');
-
+            /* Build the iCalendar data */
             require_once 'Horde/Data.php';
             require_once 'Horde/iCalendar.php';
-
             $iCal = new Horde_iCalendar();
             $iCal->setAttribute('METHOD', $method);
             $iCal->setAttribute('X-WR-CALNAME', String::convertCharset($share->get('name'), NLS::getCharset(), 'utf-8'));
@@ -1928,30 +1918,21 @@ class Kronolith {
                 $vevent->setAttribute('RECURRENCE-ID', $instance, array('VALUE' => 'DATE'));
             }
             $iCal->addComponent($vevent);
-            $ics = new MIME_Part('text/calendar', $iCal->exportvCalendar());
+
+            /* text/calendar part */
+            $ics = new Horde_Mime_Part();
+            $ics->setType('text/calendar');
+            $ics->setContents($iCal->exportvCalendar());
             $ics->setName($filename);
             $ics->setContentTypeParameter('METHOD', $method);
             $ics->setCharset(NLS::getCharset());
 
-            $mime->addPart($body);
-            $mime->addPart($ics);
-            $mime = &MIME_Message::convertMimePart($mime);
-
-            /* Build the notification headers. */
-            $recipient = empty($status['name']) ? $email : MIME::trimEmailAddress($status['name'] . ' <' . $email . '>');
-
-            $msg_headers = new MIME_Headers();
-            $msg_headers->addReceivedHeader();
-            $msg_headers->addMessageIdHeader();
-            $msg_headers->addHeader('Date', date('r'));
-            $msg_headers->addHeader('From', MIME::encodeAddress($from, NLS::getCharset()));
-            $msg_headers->addHeader('To', MIME::encodeAddress($recipient, NLS::getCharset()));
-            $msg_headers->addHeader('Subject', MIME::encode($subject, NLS::getCharset()));
+            $recipient = empty($status['name']) ? $email : Horde_Mime_Address::trimAddress($status['name'] . ' <' . $email . '>');
+            $mail = new Horde_Mime_Mail($subject, $message, $recipient, $from, NLS::getCharset());
             require_once KRONOLITH_BASE . '/lib/version.php';
-            $msg_headers->addHeader('User-Agent', 'Kronolith ' . KRONOLITH_VERSION);
-            $msg_headers->addMIMEHeaders($mime);
-
-            $status = $mime->send($email, $msg_headers, $mail_driver, $mail_params);
+            $mail->addHeader('User-Agent', 'Kronolith ' . KRONOLITH_VERSION);
+            $mail->addMimePart($ics);
+            $status = $mail->send($mail_driver, $mail_params);
             if (!is_a($status, 'PEAR_Error')) {
                 $notification->push(
                     sprintf(_("The event notification to %s was successfully sent."), $recipient),
@@ -1984,9 +1965,6 @@ class Kronolith {
 
         require_once 'Horde/Group.php';
         require_once 'Horde/Identity.php';
-        require_once 'Horde/MIME.php';
-        require_once 'Horde/MIME/Headers.php';
-        require_once 'Horde/MIME/Message.php';
 
         $groups = &Group::singleton();
         $calendar = $event->getCalendar();
@@ -2007,6 +1985,7 @@ class Kronolith {
                 $recipients[$user] = Kronolith::_notificationPref($user, 'read', $calendar);
             }
         }
+
         foreach ($share->listGroups(PERMS_READ) as $group) {
             $group = $groups->getGroupById($group);
             if (is_a($group, 'PEAR_Error')) {
@@ -2038,7 +2017,7 @@ class Kronolith {
             if (!isset($addresses[$vals['lang']][$vals['tf']][$vals['df']])) {
                 $addresses[$vals['lang']][$vals['tf']][$vals['df']] = array();
             }
-            $addresses[$vals['lang']][$vals['tf']][$vals['df']][] = MIME::rfc822WriteAddress($mailbox, $host, $identity->getValue('fullname'));
+            $addresses[$vals['lang']][$vals['tf']][$vals['df']][] = Horde_Mime_Address::writeAddress($mailbox, $host, $identity->getValue('fullname'));
         }
 
         if (!$addresses) {
@@ -2053,12 +2032,6 @@ class Kronolith {
             $mail_params['password'] = Auth::getCredential('password');
         }
 
-        $msg_headers = new MIME_Headers();
-        $msg_headers->addMessageIdHeader();
-        $msg_headers->addAgentHeader();
-        $msg_headers->addHeader('Date', date('r'));
-        $msg_headers->addHeader('From', $from);
-
         foreach ($addresses as $lang => $twentyFour) {
             NLS::setLang($lang);
 
@@ -2079,9 +2052,6 @@ class Kronolith {
                 break;
             }
 
-            $msg_headers->removeHeader('Subject');
-            $msg_headers->addHeader('Subject', $subject . ' ' . $event->title);
-
             foreach ($twentyFour as $tf => $dateFormat) {
                 foreach ($dateFormat as $df => $df_recipients) {
                     $message = "\n"
@@ -2092,14 +2062,14 @@ class Kronolith {
                                   $event->start->strftime($tf ? '%R' : '%I:%M%p'))
                         . "\n\n" . $event->getDescription();
 
-                    $mime = new MIME_Message();
-                    $body = new MIME_Part('text/plain', String::wrap($message, 76, "\n"), NLS::getCharset());
-
-                    $mime->addPart($body);
-                    $msg_headers->addMIMEHeaders($mime);
-
+                    $mime_mail = new Horde_Mime_Mail($subject . ' ' . $event->title,
+                                                     null,
+                                                     implode(',', $df_recipients),
+                                                     $from,
+                                                     NLS::getCharset());
+                    $mime_mail->setBody($message, NLS::getCharset(), true);
                     Horde::logMessage(sprintf('Sending event notifications for %s to %s', $event->title, implode(', ', $df_recipients)), __FILE__, __LINE__, PEAR_LOG_DEBUG);
-                    $sent = $mime->send(implode(', ', $df_recipients), $msg_headers, $mail_driver, $mail_params);
+                    $sent = $mime_mail->send($mail_driver, $mail_params, false, false);
                     if (is_a($sent, 'PEAR_Error')) {
                         return $sent;
                     }
index 015b1da..af87dc1 100644 (file)
@@ -42,7 +42,6 @@ class Kronolith_View_Event {
             return;
         }
 
-        require_once 'Horde/MIME.php';
         require_once 'Horde/Text.php';
         require_once 'Horde/Text/Filter.php';
 
index 90a23c8..f217ebf 100644 (file)
@@ -12,8 +12,8 @@
  */
 
 // Find the base file path of Horde.
-@define('HORDE_BASE', dirname(__FILE__) . '/../..');
-
+//@define('HORDE_BASE', dirname(__FILE__) . '/../..');
+@define('HORDE_BASE', '/private/var/www/html/horde');
 // Find the base file path of Kronolith.
 @define('KRONOLITH_BASE', dirname(__FILE__) . '/..');
 
index ea286a2..8d88be4 100644 (file)
@@ -55,7 +55,7 @@ function switchDateView(view, date)
 <?php else: foreach ($attendees as $email => $status): ?>
  <tr>
   <td class="nowrap"><?php $name = strpos($email, '@') === false ? $status['name'] : $email; echo Horde::link('#', sprintf(_("Remove %s"), $name), '', '', "performAction('remove', decodeURIComponent('" . rawurlencode($email) . "')); return false;") . Horde::img('delete.png', '', null, $registry->getImageDir('horde')) . '</a> ' . Horde::link('#', sprintf(_("Edit %s"), $name), '', '', "performAction('edit', decodeURIComponent('" . rawurlencode($email) . "')); return false;") . Horde::img('edit.png', '', null, $registry->getImageDir('horde')) . '</a>' ?></td>
-  <td><?php echo htmlspecialchars(empty($status['name']) ? $email : MIME::trimEmailAddress($status['name'] . (strpos($email, '@') === false ? '' : ' <' . $email . '>'))) ?></td>
+  <td><?php echo htmlspecialchars(empty($status['name']) ? $email : Horde_Mime_Address::trimAddress($status['name'] . (strpos($email, '@') === false ? '' : ' <' . $email . '>'))) ?></td>
   <td>
 <label for="<?php echo "attendance_$i" ?>" class="hidden"><?php echo _("Attendance") ?></label>
    <select id="<?php echo "attendance_$i" ?>" name="<?php echo "attendance_$i" ?>" onchange="performAction('changeatt', document.attendeesForm.<?php echo "attendance_$i" ?>.value + ' ' + decodeURIComponent('<?php echo rawurlencode($email) ?>'));">
index f1508f1..970ab3a 100644 (file)
@@ -174,7 +174,7 @@ if ($this->event->isInitialized() && $this->event->alarm > 0):
   <th width="25%"><?php echo _("Attendance") ?></th>
   <th width="25%"><?php echo _("Response") ?></th>
  </tr>
- <?php $link_emails = $GLOBALS['registry']->hasMethod('mail/compose'); foreach ($attendees as $email => $status): $full = empty($status['name']) ? $email : MIME::trimEmailAddress($status['name'] . (strpos($email, '@') === false ? '' : ' <' . $email . '>')) ?>
+ <?php $link_emails = $GLOBALS['registry']->hasMethod('mail/compose'); foreach ($attendees as $email => $status): $full = empty($status['name']) ? $email : Horde_Mime_Address::trimAddress($status['name'] . (strpos($email, '@') === false ? '' : ' <' . $email . '>')) ?>
  <tr>
   <td class="nowrap"><?php echo ($link_emails && strpos($email, '@') !== false) ? (Horde::link($GLOBALS['registry']->call('mail/compose', array(array('to' => $full))), sprintf(_("Send an email to %s"), empty($status['name']) ? $email : $status['name'])) . htmlspecialchars($full) . '</a>') : htmlspecialchars($full) ?></td>
   <td><?php echo Kronolith::partToString($status['attendance']) ?></td>