+++ /dev/null
---- eventum-1.7.1/misc/cli/include/class.command_line.php 2006-04-10 21:09:51.757856592 +0300
-+++ /home/glen/class.command_line.php 2006-04-10 21:55:23.878807794 +0300
-@@ -1533,6 +1533,9 @@
- {
- $msg = new XML_RPC_Message("isValidLogin", array(new XML_RPC_Value($email), new XML_RPC_Value($password)));
- $result = $rpc_conn->send($msg);
-+ if (!is_object($result)) {
-+ Command_Line::quit("result is not an object. This is most likely due connection problems or openssl/curl extension not loaded.");
-+ }
- if ($result->faultCode()) {
- Command_Line::quit($result->faultString());
- }
+++ /dev/null
---- ./rpc/xmlrpc.php 2005-07-19 16:33:54.000000000 +0300
-+++ /tmp/xmlrpc.php 2005-07-19 17:41:28.000000000 +0300
-@@ -650,7 +650,7 @@
- }
- }
-
--$getWeeklyReport_sig = array(array($XML_RPC_String, $XML_RPC_String, $XML_RPC_String, $XML_RPC_Int, $XML_RPC_String, $XML_RPC_String));
-+$getWeeklyReport_sig = array(array($XML_RPC_String, $XML_RPC_String, $XML_RPC_String, $XML_RPC_Int, $XML_RPC_String, $XML_RPC_String, $XML_RPC_Int));
- function getWeeklyReport($p)
- {
- $email = XML_RPC_decode($p->getParam(0));
-@@ -662,6 +662,7 @@
- $week = abs(XML_RPC_decode($p->getParam(2)));
- $start = XML_RPC_decode($p->getParam(3));
- $end = XML_RPC_decode($p->getParam(4));
-+ $separate_closed = XML_RPC_decode($p->getParam(5));
-
- // we have to set a project so the template class works, even though the weekly report doesn't actually need it
- $projects = Project::getAssocList(Auth::getUserID());
---- ./misc/cli/eventum 2005-07-19 16:33:54.000000000 +0300
-+++ /tmp/eventum 2005-07-19 17:43:37.000000000 +0300
-@@ -218,15 +218,19 @@
- }
- Command_Line::lookupCustomer($client, $auth, $HTTP_SERVER_VARS['argv'][2], $HTTP_SERVER_VARS['argv'][3]);
- } elseif (($HTTP_SERVER_VARS['argv'][1] == 'weekly-report') || ($HTTP_SERVER_VARS['argv'][1] == 'wr')) {
-- if (count(@$HTTP_SERVER_VARS['argv']) == 4) {
-+ if (count(@$HTTP_SERVER_VARS['argv']) >= 4 and $HTTP_SERVER_VARS['argv'][3] != '--separate-closed') {
-+ $separate_closed = (@$HTTP_SERVER_VARS['argv'][4] == '--separate-closed');
- // date range
-- Command_Line::getWeeklyReport($client, $auth, 0, $HTTP_SERVER_VARS['argv'][2], $HTTP_SERVER_VARS['argv'][3]);
-+ Command_Line::getWeeklyReport($client, $auth, 0, $HTTP_SERVER_VARS['argv'][2], $HTTP_SERVER_VARS['argv'][3], $separate_closed);
- } else {
- // weekly
- if (@$HTTP_SERVER_VARS['argv'][2] == '') {
-+ $separate_closed = false;
- @$HTTP_SERVER_VARS['argv'][2] = 0;
-+ } else {
-+ $separate_closed = (@$HTTP_SERVER_VARS['argv'][3] == '--separate-closed' or @$HTTP_SERVER_VARS['argv'][2] == '--separate-closed');
- }
-- Command_Line::getWeeklyReport($client, $auth, $HTTP_SERVER_VARS['argv'][2]);
-+ Command_Line::getWeeklyReport($client, $auth, $HTTP_SERVER_VARS['argv'][2], '', '', $separate_closed);
- }
- } elseif ($HTTP_SERVER_VARS['argv'][1] == 'clock') {
- Command_Line::timeClock(&$client, $auth, @$HTTP_SERVER_VARS['argv'][2]);
---- ./misc/cli/include/class.command_line.php 2005-07-19 16:33:54.000000000 +0300
-+++ /tmp/class.command_line.php 2005-07-19 17:43:37.000000000 +0300
-@@ -1144,15 +1144,17 @@
- * @param integer $week The week for the report. If start and end date are set, this is ignored.
- * @param string $start_date The start date of the report. (optional)
- * @param string $end_date The end_date of the report. (optional)
-+ * @param boolean If closed issues should be separated from other issues.
- */
-- function getWeeklyReport(&$rpc_conn, $auth, $week, $start_date = '', $end_date = '')
-+ function getWeeklyReport(&$rpc_conn, $auth, $week, $start_date = '', $end_date = '', $separate_closed = false)
- {
- $msg = new XML_RPC_Message("getWeeklyReport", array(
- new XML_RPC_Value($auth[0], 'string'),
- new XML_RPC_Value($auth[1], 'string'),
- new XML_RPC_Value($week, "int"),
- new XML_RPC_Value($start_date, "string"),
-- new XML_RPC_Value($end_date, "string")
-+ new XML_RPC_Value($end_date, "string"),
-+ new XML_RPC_Value($separate_closed ? 1 : 0, 'int'),
- ));
- $result = $rpc_conn->send($msg);
- if ($result->faultCode()) {
-@@ -1686,7 +1688,7 @@
- "help" => "Looks up a customer's record information."
- );
- $usage[] = array(
-- "command" => array("weekly-report ([<week>])|([<start>] [<end>])", "wr ([<week>])|([<start>] [<end>])"),
-+ "command" => array("weekly-report ([<week>] [--separate-closed])|([<start>] [<end>] [--separate-closed])", "wr ([<week>])|([<start>] [<end>] [--separate-closed])"),
- "help" => "Fetches the weekly report. Week is specified as an integer with 0 representing
- the current week, -1 the previous week and so on. If the week is omitted it defaults
- to the current week. Alternately, a date range can be set. Dates should be in the format 'YYYY-MM-DD'."
---- ../rpc/xmlrpc.php~ 2005-07-26 20:19:37.000000000 +0300
-+++ ../rpc/xmlrpc.php 2005-07-26 20:21:11.000000000 +0300
-@@ -681,9 +681,14 @@
- $start = date("Y-m-d", $start);
- }
-
-+ if ($separate_closed) {
-+ // emulate smarty value for reports/weekly_data.tpl.tmpl:
-+ // {if $smarty.post.separate_closed == 1}
-+ $_POST['separate_closed'] = true;
-+ }
- $tpl = new Template_API();
- $tpl->setTemplate("reports/weekly_data.tpl.html");
-- $tpl->assign("data", Report::getWeeklyReport(User::getUserIDByEmail($email), $start, $end));
-+ $tpl->assign("data", Report::getWeeklyReport(User::getUserIDByEmail($email), $start, $end, $separate_closed));
-
- $ret = $tpl->getTemplateContents(). "\n";
- return new XML_RPC_Response(XML_RPC_Encode(base64_encode($ret)));
+++ /dev/null
-adds "Add signature" feature to issue close page, ie if you send issue close
-comments to all issue notification list members it's nice to have email
-signature appended. feature request by slay.
-
---- eventum-1.7.1/close.php 2006-03-31 12:03:17.580792647 +0300
-+++ /home/glen/close.php 2006-03-31 12:04:45.222748601 +0300
-@@ -80,5 +80,9 @@
- ));
- }
-
-+$usr_id = Auth::getUserID();
-+$user_prefs = Prefs::get($usr_id);
-+$tpl->assign("current_user_prefs", $user_prefs);
-+
- $tpl->displayTemplate();
--?>
-\ No newline at end of file
-+?>
---- eventum-1.7.1/templates/close.tpl.html 2006-03-31 12:03:17.310786621 +0300
-+++ /home/glen/close.tpl.html 2006-03-31 12:04:47.462798592 +0300
-@@ -90,6 +90,22 @@
- cell.style.background = "{/literal}{$internal_color}{literal}";
- }
- }
-+
-+var old_reason = '';
-+function setSignature(f)
-+{
-+{/literal}
-+ var signature = "{$current_user_prefs.email_signature|replace:'"':'\"'|replace:"\r":""|replace:"\n":'\n'}";
-+{literal}
-+ if (f.add_email_signature.checked) {
-+ old_reason = f.reason.value;
-+ f.reason.value += "\n";
-+ f.reason.value += signature;
-+ } else {
-+ f.reason.value = old_reason;
-+ }
-+}
-+
- //-->
- </script>
- {/literal}
-@@ -159,7 +175,10 @@
- <b>Reason for closing issue: *</b><br />
- </td>
- <td bgcolor="{$light_color}" class="default">
-- <textarea name="reason" rows="8" style="width: 97%"></textarea>
-+ <textarea name="reason" rows="8" style="width: 97%">{if $current_user_prefs.auto_append_sig == 'yes'}
-+
-+
-+{$current_user_prefs.email_signature|escape:"html"}{/if}</textarea>
- {include file="error_icon.tpl.html" field="reason"}
- </td>
- </tr>
---- eventum-localization-dev2/templates/close.tpl.html~ 2006-06-02 00:56:06.638714939 +0300
-+++ eventum-localization-dev2/templates/close.tpl.html 2006-06-02 00:57:12.060184006 +0300
-@@ -222,7 +222,16 @@
- <tr>
- <td><input class="button" type="button" value="<< {t}Back{/t}" onClick="javascript:history.go(-1);"></td>
- <td width="100%" align="center"><input class="button" type="submit" value="{t}Close Issue{/t}"></td>
-- </tr>
-+ {if $current_user_prefs.email_signature != "" and $current_user_prefs.auto_append_sig != 'yes'}
-+ <td class="default_white" align="right" width="150">
-+ <nobr>
-+ <input type="checkbox" name="add_email_signature" value="yes" onClick="javascript:setSignature(this.form);">
-+ <a id="white_link" class="white_link" href="javascript:void(null);" onClick="javascript:toggleCheckbox('close_form', 'add_email_signature');setSignature(getForm('close_form'));">Add Email Signature</a>
-+
-+ </nobr>
-+ </td>
-+ {/if}
-+ </tr>
- </table>
- </td>
- </tr>
+++ /dev/null
-Catch error from address parsing.
-
---- eventum-20060717/include/class.mail.php~ 2006-07-18 01:21:08.631017731 +0300
-+++ eventum-20060717/include/class.mail.php 2006-07-18 01:22:01.102190536 +0300
-@@ -244,6 +244,9 @@
- $address = Mime_Helper::encodeValue($address);
- include_once(APP_PEAR_PATH . "Mail/RFC822.php");
- $t = Mail_RFC822::parseAddressList($address, null, null, false);
-+ if (PEAR::isError($t)) {
-+ Error_Handler::logError(array($t->getMessage(), $t->getDebugInfo()), __FILE__, __LINE__);
-+ }
- if ($multiple) {
- $returns = array();
- for ($i = 0; $i < count($t); $i++) {
--------------------------------------------------------------------------------------------------------
-Detect and log possibly corrupted MIME emails.
-
---- eventum-1.7.1/include/class.mime_helper.php 2006-04-12 00:48:18.579879862 +0300
-+++ /home/glen/class.mime_helper.php 2006-04-12 00:52:33.225568723 +0300
-@@ -39,6 +39,7 @@
- */
-
- include_once(APP_PEAR_PATH . "Mail/mimeDecode.php");
-+include_once(APP_INC_PATH . "class.error_handler.php");
-
- /**
- * Class to handle the business logic related to the MIME email
-@@ -88,6 +89,10 @@
- {
- $parts = array();
- Mime_Helper::parse_output($output, $parts);
-+ if (empty($parts)) {
-+ Error_Handler::logError(array("Mime_Helper::parse_output failed. Corrupted MIME in email?", $output), __FILE__, __LINE__);
-+ // we continue as if nothing happened until it's clear it's right check to do.
-+ }
- $str = '';
- $is_html = false;
- if (isset($parts["text"])) {
-
--------------------------------------------------------------------------------------------------------
-Rewrite routing part to have consistent API for matching issue_ids from mail headers.
-Add new method Routing::getMatchingIssueIDs().
---- eventum-1.7.1/include/class.routing.php 2006-04-12 00:48:18.189871149 +0300
-+++ /home/glen/class.routing.php 2006-04-12 00:52:33.295570287 +0300
-@@ -104,35 +104,29 @@
- if ($setup['email_routing']['status'] != 'enabled') {
- return array(78, "Error: The email routing interface is disabled.\n");
- }
-- $prefix = $setup['email_routing']['address_prefix'];
-- // escape plus signs so 'issue+1@example.com' becomes a valid routing address
-- $prefix = str_replace('+', '\+', $prefix);
-- $mail_domain = quotemeta($setup['email_routing']['address_host']);
-- $mail_domain_alias = quotemeta(@$setup['email_routing']['host_alias']);
-- if (!empty($mail_domain_alias)) {
-- $mail_domain = "(?:" . $mail_domain . "|" . $mail_domain_alias . ")";
-- }
-- if (empty($prefix)) {
-+ if (empty($setup['email_routing']['address_prefix'])) {
- return array(78, gettext("Error: Please configure the email address prefix.") . "\n");
- }
-- if (empty($mail_domain)) {
-+ if (empty($setup['email_routing']['address_host'])) {
- return array(78, gettext("Error: Please configure the email address domain.") . "\n");
- }
-+
- $structure = Mime_Helper::decode($full_message, true, true);
-
- // find which issue ID this email refers to
-- @preg_match("/$prefix(\d*)@$mail_domain/i", $structure->headers['to'], $matches);
-- @$issue_id = $matches[1];
-+ if (isset($structure->headers['to'])) {
-+ $issue_id = Routing::getMatchingIssueIDs($structure->headers['to'], 'email');
-+ }
- // validation is always a good idea
-- if (empty($issue_id)) {
-+ if (empty($issue_id) and isset($structure->headers['cc'])) {
- // we need to try the Cc header as well
-- @preg_match("/$prefix(\d*)@$mail_domain/i", $structure->headers['cc'], $matches);
-- if (!empty($matches[1])) {
-- $issue_id = $matches[1];
-- } else {
-- return array(65, gettext("Error: The routed email had no associated Eventum issue ID or had an invalid recipient address.") . "\n");
-- }
-+ $issue_id = Routing::getMatchingIssueIDs($structure->headers['cc'], 'email');
-+ }
-+
-+ if (empty($issue_id)) {
-+ return array(65, gettext("Error: The routed email had no associated Eventum issue ID or had an invalid recipient address.") . "\n");
- }
-+
- if (empty($email_account_id)) {
- $issue_prj_id = Issue::getProjectID($issue_id);
- if (empty($issue_prj_id)) {
-@@ -305,30 +299,26 @@
- if (@$setup['note_routing']['status'] != 'enabled') {
- return array(78, gettext("Error: The internal note routing interface is disabled.") . "\n");
- }
-- $prefix = $setup['note_routing']['address_prefix'];
-- // escape plus signs so 'note+1@example.com' becomes a valid routing address
-- $prefix = str_replace('+', '\+', $prefix);
-- $mail_domain = quotemeta($setup['note_routing']['address_host']);
-- if (empty($prefix)) {
-+ if (empty($setup['note_routing']['address_prefix'])) {
- return array(78, gettext("Error: Please configure the email address prefix.") . "\n");
- }
-- if (empty($mail_domain)) {
-+ if (empty($setup['note_routing']['address_host'])) {
- return array(78, gettext("Error: Please configure the email address domain.") . "\n");
- }
- $structure = Mime_Helper::decode($full_message, true, true);
-
- // find which issue ID this email refers to
-- @preg_match("/$prefix(\d*)@$mail_domain/i", $structure->headers['to'], $matches);
-- @$issue_id = $matches[1];
-+ if (isset($structure->headers['to'])) {
-+ $issue_id = Routing::getMatchingIssueIDs($structure->headers['to'], 'note');
-+ }
- // validation is always a good idea
-- if (empty($issue_id)) {
-+ if (empty($issue_id) and isset($structure->headers['cc'])) {
- // we need to try the Cc header as well
-- @preg_match("/$prefix(\d*)@$mail_domain/i", $structure->headers['cc'], $matches);
-- if (!empty($matches[1])) {
-- $issue_id = $matches[1];
-- } else {
-- return array(65, gettext("Error: The routed note had no associated Eventum issue ID or had an invalid recipient address.") . "\n");
-- }
-+ $issue_id = Routing::getMatchingIssueIDs($structure->headers['cc'], 'note');
-+ }
-+
-+ if (empty($issue_id)) {
-+ return array(65, gettext("Error: The routed note had no associated Eventum issue ID or had an invalid recipient address.")" . "\n");
- }
-
- $prj_id = Issue::getProjectID($issue_id);
-@@ -377,6 +377,7 @@
- if ($res != -1) {
- Support::extractAttachments($issue_id, $full_message, true, $res);
- }
-+ // FIXME! $res == -2 is not handled
- History::add($issue_id, Auth::getUserID(), History::getTypeID('note_routed'), ev_gettext('Note routed from %1$s', $structure->headers['from']));
-
- return true;
-@@ -433,30 +424,27 @@
- if (@$setup['draft_routing']['status'] != 'enabled') {
- return array(78, gettext("Error: The email draft interface is disabled.") . "\n");
- }
-- $prefix = $setup['draft_routing']['address_prefix'];
-- // escape plus signs so 'draft+1@example.com' becomes a valid address
-- $prefix = str_replace('+', '\+', $prefix);
-- $mail_domain = quotemeta($setup['draft_routing']['address_host']);
-- if (empty($prefix)) {
-+ if (empty($setup['draft_routing']['address_prefix'])) {
- return array(78, gettext("Error: Please configure the email address prefix.") . "\n");
- }
-- if (empty($mail_domain)) {
-+ if (empty($setup['draft_routing']['address_host'])) {
- return array(78, gettext("Error: Please configure the email address domain.") . "\n");
- }
-+
- $structure = Mime_Helper::decode($full_message, true, false);
-
- // find which issue ID this email refers to
-- @preg_match("/$prefix(\d*)@$mail_domain/i", $structure->headers['to'], $matches);
-- @$issue_id = $matches[1];
-+ if (isset($structure->headers['to'])) {
-+ $issue_id = Routing::getMatchingIssueIDs($structure->headers['to'], 'draft');
-+ }
- // validation is always a good idea
-- if (empty($issue_id)) {
-+ if (empty($issue_id) and isset($structure->headers['cc'])) {
- // we need to try the Cc header as well
-- @preg_match("/$prefix(\d*)@$mail_domain/i", $structure->headers['cc'], $matches);
-- if (!empty($matches[1])) {
-- $issue_id = $matches[1];
-- } else {
-- return array(65, gettext("Error: The routed draft had no associated Eventum issue ID or had an invalid recipient address.") . "\n");
-- }
-+ $issue_id = Routing::getMatchingIssueIDs($structure->headers['cc'], 'draft');
-+ }
-+
-+ if (empty($issue_id)) {
-+ return array(65, gettext("Error: The routed email had no associated Eventum issue ID or had an invalid recipient address.") . "\n");
- }
-
- $prj_id = Issue::getProjectID($issue_id);
-@@ -477,5 +465,54 @@
- History::add($issue_id, Auth::getUserID(), History::getTypeID('draft_routed'), "Draft routed from " . $structure->headers['from']);
- return true;
- }
-+
-+ /**
-+ * Check for $adresses for matches
-+ *
-+ * @param mixed $addresses to check
-+ * @param string Type of address match to find (email, note, draft)
-+ * @return mixed $issue_id in case of match otherwise false
-+ */
-+ function getMatchingIssueIDs($addresses, $type)
-+ {
-+ $setup = Setup::load();
-+ $settings = $setup["${type}_routing"];
-+ if (!is_array($settings)) {
-+ return false;
-+ }
-+
-+ if (empty($settings['address_prefix'])) {
-+ return false;
-+ }
-+ // escape plus signs so 'issue+1@example.com' becomes a valid routing address
-+ $prefix = quotemeta($settings['address_prefix']);
-+
-+ if (empty($settings['address_host'])) {
-+ return false;
-+ }
-+ $mail_domain = quotemeta($settings['address_host']);
-+
-+ // it is not checked for type when host alias is asked. this leaves
-+ // room foradding host_alias for other than email routing.
-+ if (isset($settings['host_alias'])) {
-+ // TODO: can't quotemeta() host alias as it can contain multiple hosts separated with pipe
-+ $mail_domain = '(?:' . $mail_domain . '|' . $settings['host_alias'] . ')';
-+ }
-+
-+ // if there are multiple CC or To headers Mail_Mime creates array.
-+ // handle both cases (strings and arrays).
-+ if (!is_array($addresses)) {
-+ $addresses = array($addresses);
-+ }
-+
-+ // everything safely escaped and checked, try matching address
-+ foreach ($addresses as $address) {
-+ if (preg_match("/$prefix(\d*)@$mail_domain/i", $address, $matches)) {
-+ return $matches[1];
-+ }
-+ }
-+
-+ return false;
-+ }
- }
- ?>
---- eventum-1.7.1/include/class.support.php 2006-04-12 00:48:18.619880756 +0300
-+++ /home/glen/class.support.php 2006-04-12 00:52:33.395572521 +0300
-@@ -504,22 +504,22 @@
- if ($info['ema_use_routing'] == 1) {
- $setup = Setup::load();
-
-- if (@$setup['email_routing']['status'] == 'enabled') {
-- $prefix = $setup['email_routing']['address_prefix'];
-- // escape plus signs so 'issue+1@example.com' becomes a valid routing address
-- $prefix = str_replace('+', '\+', $prefix);
-- $mail_domain = $setup['email_routing']['address_host'];
-- $mail_domain_alias = @$setup['email_routing']['host_alias'];
-- if (!empty($mail_domain_alias)) {
-- $mail_domain = "[" . $mail_domain . "|" . $mail_domain_alias . "]";
-- }
-- if (empty($prefix)) {
-- return false;
-+ // we create addresses array so it can be reused
-+ $addresses = array();
-+ if (isset($email->to)) {
-+ foreach ($email->to as $address) {
-+ $addresses[] = $address->mailbox . '@' . $address->host;
- }
-- if (empty($mail_domain)) {
-- return false;
-+ }
-+ if (isset($email->cc)) {
-+ foreach ($email->cc as $address) {
-+ $addresses[] = $address->mailbox . '@' . $address->host;
- }
-- if ((isset($email->toaddress)) && (preg_match("/$prefix(\d*)@$mail_domain/i", $email->toaddress, $matches))) {
-+ }
-+
-+ if (@$setup['email_routing']['status'] == 'enabled') {
-+ $res = Routing::getMatchingIssueIDs($addresses, 'email');
-+ if ($res != false) {
- $return = Routing::route_emails($message);
- if ($return == true) {
- Support::deleteMessage($info, $mbox, $num);
-@@ -528,18 +528,8 @@
- }
- }
- if (@$setup['note_routing']['status'] == 'enabled') {
-- $prefix = $setup['note_routing']['address_prefix'];
-- // escape plus signs so 'note+1@example.com' becomes a valid routing address
-- $prefix = str_replace('+', '\+', $prefix);
-- $mail_domain = $setup['note_routing']['address_host'];
-- if (empty($prefix)) {
-- return false;
-- }
-- if (empty($mail_domain)) {
-- return false;
-- }
--
-- if (preg_match("/$prefix(\d*)@$mail_domain/i", $email->toaddress, $matches)) {
-+ $res = Routing::getMatchingIssueIDs($addresses, 'note');
-+ if ($res != false) {
- $return = Routing::route_notes($message);
- if ($return == true) {
- Support::deleteMessage($info, $mbox, $num);
-@@ -548,18 +538,8 @@
- }
- }
- if (@$setup['draft_routing']['status'] == 'enabled') {
-- $prefix = $setup['draft_routing']['address_prefix'];
-- // escape plus signs so 'draft+1@example.com' becomes a valid routing address
-- $prefix = str_replace('+', '\+', $prefix);
-- $mail_domain = $setup['draft_routing']['address_host'];
-- if (empty($prefix)) {
-- return false;
-- }
-- if (empty($mail_domain)) {
-- return false;
-- }
--
-- if (preg_match("/$prefix(\d*)@$mail_domain/i", $email->toaddress, $matches)) {
-+ $res = Routing::getMatchingIssueIDs($addresses, 'draft');
-+ if ($res != false) {
- $return = Routing::route_drafts($message);
- if ($return == true) {
- Support::deleteMessage($info, $mbox, $num);
-
--------------------------------------------------------------------------------------------------------
-Fix possible Cc: headers composition of routed Notes where Eventum user email and email from headers differ with case.
---- eventum-1.7.1/include/class.routing.php 2006-04-12 00:48:18.189871149 +0300
-+++ /home/glen/class.routing.php 2006-04-12 00:52:33.295570287 +0300
-@@ -356,12 +346,11 @@
- $cc_users = array();
- foreach ($addresses as $email) {
- if (in_array(strtolower($email), $user_emails)) {
-- $cc_users[] = $users[$email];
-+ $cc_users[] = $users[strtolower($email)];
- }
- }
-
- $body = Mime_Helper::getMessageBody($structure);
--
- $reference_msg_id = Mail_API::getReferenceMessageID($headers);
- if (!empty($reference_msg_id)) {
- $parent_id = Note::getIDByMessageID($reference_msg_id);
--------------------------------------------------------------------------------------------------------
-API cleanup: drop unneccessary $email_account_id in route_emails to be consistent with download_emails based routing.
---- eventum-1.7.1/misc/route_emails.php 2006-04-12 00:54:57.398789518 +0300
-+++ /home/glen/route_emails.php 2006-04-12 01:03:52.300737408 +0300
-@@ -33,10 +33,9 @@
- include_once(APP_INC_PATH . "db_access.php");
- include_once(APP_INC_PATH . "class.routing.php");
-
--$email_account_id = $HTTP_SERVER_VARS['argv'][1];
- $full_message = Misc::getInput();
-
--$return = Routing::route_emails($full_message, $email_account_id);
-+$return = Routing::route_emails($full_message);
- if (is_array($return)) {
- echo $return[1];
- exit($return[0]);
---- eventum-1.7.1/include/class.routing.php 2006-04-12 00:54:57.278786838 +0300
-+++ /home/glen/class.routing.php 2006-04-12 01:03:45.370582745 +0300
-@@ -52,9 +52,8 @@
- * Routes an email to the correct issue.
- *
- * @param string $full_message The full email message, including headers
-- * @param integer $email_account_id The ID of the email account this email should be routed too. If empty this method will try to figure it out
- */
-- function route_emails($full_message, $email_account_id = 0)
-+ function route_emails($full_message)
- {
- GLOBAL $HTTP_POST_VARS;
-
+++ /dev/null
---- eventum-20060717/templates/attachments.tpl.html 2006-07-18 01:57:53.690322104 +0300
-+++ eventum-20060717.rediff/templates/attachments.tpl.html 2006-07-18 01:58:15.570811997 +0300
-@@ -31,7 +31,6 @@
- //-->
- </script>
- {/literal}
--<br />
- <table width="100%" bgcolor="{$cell_color}" border="0" cellspacing="0" cellpadding="1" align="center">
- <tr>
- <td width="100%">
-@@ -41,6 +40,7 @@
- <b>{t}Attached Files{/t} ({$files|@count})</b>
- </td>
- <td align="right" class="default">
-+ [ <a class="link" href="#top">{t}Back to Top{/t}</a> ]
- {if $browser.ie5up or $browser.ns6up or $browser.gecko or $browser.safari}
- [ <a id="attachments_link" class="link" href="javascript:void(null);" onClick="javascript:toggleVisibility('attachments');">{get_innerhtml element_name="attachments"}</a> ]
- {/if}
---- eventum-20060717/templates/checkins.tpl.html 2006-07-18 01:57:53.690322104 +0300
-+++ eventum-20060717.rediff/templates/checkins.tpl.html 2006-07-18 01:58:15.570811997 +0300
-@@ -20,7 +20,6 @@
- //-->
- </script>
- {/literal}
--<br />
- <table width="100%" bgcolor="{$cell_color}" border="0" cellspacing="0" cellpadding="1" align="center">
- <form onSubmit="javascript:return removeCheckins(this);" target="_removeCheckins" action="popup.php" method="post">
- <input type="hidden" name="cat" value="remove_checkin">
-@@ -32,6 +31,7 @@
- <b>{t}SCM Integration - Checkins{/t}</b>
- </td>
- <td align="right" class="default">
-+ [ <a class="link" href="#top">{t}Back to Top{/t}</a> ]
- {if $browser.ie5up or $browser.ns6up or $browser.gecko or $browser.safari or $browser.opera5up}
- [ <a id="checkins_link" class="link" href="javascript:void(null);" onClick="javascript:toggleVisibility('checkins');">{get_innerhtml element_name="checkins" total=$checkins|@count}</a> ]
- {/if}
---- eventum-20060717/templates/custom_fields.tpl.html 2006-07-18 01:57:53.690322104 +0300
-+++ eventum-20060717.rediff/templates/custom_fields.tpl.html 2006-07-18 01:58:15.570811997 +0300
-@@ -11,7 +11,6 @@
- //-->
- </script>
- {/literal}
--<br />
- <table width="100%" bgcolor="{$cell_color}" border="0" cellspacing="0" cellpadding="1" align="center">
- <form method="get" action="{$smarty.server.PHP_SELF}">
- <tr>
-@@ -22,6 +21,7 @@
- <b>{t}Custom Fields{/t}</b>
- </td>
- <td align="right" class="default">
-+ [ <a class="link" href="#top">{t}Back to Top{/t}</a> ]
- {if $browser.ie5up or $browser.ns6up or $browser.gecko or $browser.safari or $browser.opera5up}
- [ <a id="custom_fields_link" class="link" href="javascript:void(null);" onClick="javascript:toggleVisibility('custom_fields');">{get_innerhtml element_name="custom_fields" total=$custom_fields|@count}</a> ]
- {/if}
---- eventum-20060717/templates/email_drafts.tpl.html 2006-07-18 01:57:53.700322328 +0300
-+++ eventum-20060717.rediff/templates/email_drafts.tpl.html 2006-07-18 01:58:15.570811997 +0300
-@@ -33,7 +33,6 @@
- {else}
- {assign var="draft_col_count" value="6"}
- {/if}
--<br />
- <table width="100%" bgcolor="{$cell_color}" border="0" cellspacing="0" cellpadding="1" align="center">
- <tr>
- <td width="100%">
-@@ -44,7 +43,8 @@
- <b>{t}Drafts{/t} ({$drafts|@count})</b>
- </td>
- <td align="right" class="default">
-- {if $browser.ie5up or $browser.ns6up or $browser.gecko or $browser.safari or $browser.opera5up or $browser.safari or $browser.opera5up}
-+ [ <a class="link" href="#top">{t}Back to Top{/t}</a> ]
-+ {if $browser.ie5up or $browser.ns6up or $browser.gecko or $browser.safari or $browser.opera5up or $browser.safari or $browser.opera5up}
- [ <a id="drafts_link" class="link" href="javascript:void(null);" onClick="javascript:toggleVisibility('drafts');">{get_innerhtml element_name="drafts" total=$drafts|@count}</a> ]
- {/if}
- </td>
---- eventum-20060717/templates/notes.tpl.html 2006-07-18 01:57:53.700322328 +0300
-+++ eventum-20060717.rediff/templates/notes.tpl.html 2006-07-18 01:58:15.580812221 +0300
-@@ -43,7 +43,6 @@
- //-->
- </script>
- {/literal}
--<br />
- <table width="100%" bgcolor="{$cell_color}" border="0" cellspacing="0" cellpadding="1" align="center">
- <form name="add_note_form" target="_notes" method="post">
- <tr>
-@@ -54,6 +53,7 @@
- <b>{t}Internal Notes{/t} ({$notes|@count})</b>
- </td>
- <td align="right" class="default">
-+ [ <a class="link" href="#top">{t}Back to Top{/t}</a> ]
- {if $browser.ie5up or $browser.ns6up or $browser.gecko or $browser.safari or $browser.opera5up or $browser.safari or $browser.opera5up}
- [ <a id="notes_link" class="link" href="javascript:void(null);" onClick="javascript:toggleVisibility('notes');">{get_innerhtml element_name="notes" total=$notes|@count}</a> ]
- {/if}
---- eventum-20060717/templates/phone_support.tpl.html 2006-07-18 01:57:53.700322328 +0300
-+++ eventum-20060717.rediff/templates/phone_support.tpl.html 2006-07-18 01:58:15.580812221 +0300
-@@ -24,7 +24,6 @@
- //-->
- </script>
- {/literal}
--<br />
- <table width="100%" bgcolor="{$cell_color}" border="0" cellspacing="0" cellpadding="1" align="center">
- <tr>
- <td>
-@@ -34,7 +33,8 @@
- <b>{t}Phone Calls{/t} ({$phone_entries|@count})</b>
- </td>
- <td align="right" class="default">
-- {if $browser.ie5up or $browser.ns6up or $browser.gecko or $browser.safari or $browser.opera5up or $browser.safari or $browser.opera5up}
-+ [ <a class="link" href="#top">{t}Back to Top{/t}</a> ]
-+ {if $browser.ie5up or $browser.ns6up or $browser.gecko or $browser.safari or $browser.opera5up or $browser.safari or $browser.opera5up}
- [ <a id="phone_support_link" class="link" href="javascript:void(null);" onClick="javascript:toggleVisibility('phone_support');">{get_innerhtml element_name="phone_support" total=$phone_entries|@count}</a> ]
- {/if}
- </td>
---- eventum-20060717/templates/support_emails.tpl.html 2006-07-18 01:57:53.700322328 +0300
-+++ eventum-20060717.rediff/templates/support_emails.tpl.html 2006-07-18 01:58:15.580812221 +0300
-@@ -40,7 +40,6 @@
- //-->
- </script>
- {/literal}
--<br />
- {if $current_role > $roles.viewer}
- {assign var="email_col_count" value="8"}
- {else}
-@@ -57,6 +56,7 @@
- <b>{t}Associated Emails{/t} ({if $emails|@is_array}{$emails|@count}{else}0{/if})</b>
- </td>
- <td align="right" class="default">
-+ [ <a class="link" href="#top">{t}Back to Top{/t}</a> ]
- {if $current_role >= $roles.standard_user}
- [ <a href="mail_queue.php?iss_id={$smarty.get.id}" class="link" title="{t}view the history of sent emails{/t}">{t}Mail Queue Log{/t}</a> ]
- {/if}
---- eventum-20060717/templates/time_tracking.tpl.html 2006-07-18 01:57:53.700322328 +0300
-+++ eventum-20060717.rediff/templates/time_tracking.tpl.html 2006-07-18 01:58:15.580812221 +0300
-@@ -23,7 +23,6 @@
- //-->
- </script>
- {/literal}
--<br />
- <table width="100%" bgcolor="{$cell_color}" border="0" cellspacing="0" cellpadding="1" align="center">
- <form name="add_time_form" method="post" action="#">
- <tr>
-@@ -34,6 +33,7 @@
- <b>{t}Time Tracking{/t} ({$time_entries|@count})</b>
- </td>
- <td align="right" class="default">
-+ [ <a class="link" href="#top">{t}Back to Top{/t}</a> ]
- {if $browser.ie5up or $browser.ns6up or $browser.gecko or $browser.safari or $browser.opera5up or $browser.safari or $browser.opera5up}
- [ <a id="time_tracker_link" class="link" href="javascript:void(null);" onClick="javascript:toggleVisibility('time_tracker');">{get_innerhtml element_name="time_tracker" total=$time_entries|@count}</a> ]
- {/if}
---- eventum-20060717/templates/view.tpl.html 2006-07-18 01:57:53.700322328 +0300
-+++ eventum-20060717.rediff/templates/view.tpl.html 2006-07-18 01:58:15.580812221 +0300
-@@ -25,36 +25,27 @@
- {else}
- {include file="view_form.tpl.html"}
- {include file="custom_fields.tpl.html"}
-- {include file="top_link.tpl.html"}
- {if $has_customer_integration and $issue.iss_customer_id}
- {include file="customer/$customer_backend_name/customer_info.tpl.html"}
-- {include file="top_link.tpl.html"}
- {/if}
- {include file="attachments.tpl.html"}
-- {include file="top_link.tpl.html"}
- {if $current_role > $roles.customer and $app_setup.scm_integration == 'enabled'}
- {include file="checkins.tpl.html"}
-- {include file="top_link.tpl.html"}
- {/if}
- {if $current_role >= $roles.reporter and $current_role != $roles.customer}
- {include file="time_tracking.tpl.html"}
-- {include file="top_link.tpl.html"}
- {/if}
- {if $current_role > $roles.customer}
- {include file="notes.tpl.html"}
-- {include file="top_link.tpl.html"}
- {/if}
- {if $current_role > $roles.customer}
- {include file="phone_support.tpl.html"}
-- {include file="top_link.tpl.html"}
- {/if}
- {if $app_setup.support_email == 'enabled'}
- {if $current_role > $roles.customer}
- {include file="email_drafts.tpl.html"}
-- {include file="top_link.tpl.html"}
- {/if}
- {include file="support_emails.tpl.html"}
-- {include file="top_link.tpl.html"}
- {/if}
- {/if}
-
+++ /dev/null
--------- Original Message --------
-Subject: bk commit - eventum-internal (bryan:1.1521)
-Date: Tue, 13 Sep 2005 03:57:17 +0200
-From: bryan
-
-Remove 'double decoding' of emails.
-
---- 1.49/include/class.mime_helper.php 2005-08-09 18:11:27 +02:00
-+++ 1.50/include/class.mime_helper.php 2005-09-13 03:56:49 +02:00
-@@ -100,9 +100,6 @@
- $str = str_replace("</DIV><DIV>", "\n", $str);
- $str = str_replace(array("<br>", "<br />", "<BR>", "<BR />"), "\n", $str);
- }
-- if (@$output->headers['content-transfer-encoding'] == 'quoted-printable') {
-- $str = Mime_Helper::decodeBody($str, 'quoted-printable');
-- }
- // XXX: do we also need to do something here about base64 encoding?
- if ($is_html) {
- $str = strip_tags($str);
-@@ -657,35 +657,6 @@
-
-
- /**
-- * Method used to decode the body of a MIME encoded message.
-- *
-- * @access public
-- * @param string $input The full body of the message
-- * @param string $encoding The encoding used in the message
-- * @return string The decoded message body
-- */
-- function decodeBody($input, $encoding = '7bit')
-- {
-- switch ($encoding) {
-- case '7bit':
-- return $input;
-- break;
--
-- case 'quoted-printable':
-- return Mime_Helper::_quotedPrintableDecode($input);
-- break;
--
-- case 'base64':
-- return base64_decode($input);
-- break;
--
-- default:
-- return $input;
-- }
-- }
--
--
-- /**
- * Given a quoted-printable string, this
- * function will decode and return it.
- *
+++ /dev/null
-include "--\n" as email signature, so kmail (maybe few others) kill rest
-whenreplying to email. this effectively filters out junk when replying emails.
-
---- eventum-20060907/include/class.error_handler.php~ 2006-09-07 23:29:47.528645595 +0300
-+++ eventum-20060907/include/class.error_handler.php 2006-09-07 23:30:32.269649910 +0300
-@@ -101,7 +101,7 @@
- }
- @$msg .= "That happened on page '" . $HTTP_SERVER_VARS["PHP_SELF"] . "' from IP Address '" . getenv("REMOTE_ADDR") . "' coming from the page (referrer) '" . getenv("HTTP_REFERER") . "'.\n\n";
- @$msg .= "The user agent given was '" . $HTTP_SERVER_VARS['HTTP_USER_AGENT'] . "'.\n\n";
-- $msg .= "Sincerely yours,\nAutomated Error_Handler Class";
-+ $msg .= "-- \nSincerely yours,\nAutomated Error_Handler Class";
- // only try to include the backtrace if we are on PHP 4.3.0 or later
- if (version_compare(phpversion(), "4.3.0", ">=")) {
- $msg .= "\n\nA backtrace is available:\n\n";
+++ /dev/null
---- eventum-1.7.0/misc/irc/bot.php~ 2005-12-29 21:27:25.000000000 +0200
-+++ eventum-1.7.0/misc/irc/bot.php 2005-12-30 00:14:31.000000000 +0200
-@@ -28,6 +28,8 @@
- // @(#) $Id$
- //
-
-+ini_set("memory_limit", "256M");
-+
- include_once("../../config.inc.php");
- include_once(APP_INC_PATH . "db_access.php");
- include_once(APP_INC_PATH . "class.auth.php");
-@@ -36,8 +38,6 @@
- include_once(APP_INC_PATH . "class.user.php");
- include_once(APP_PEAR_PATH . 'Net/SmartIRC.php');
-
--ini_set("memory_limit", "256M");
--
- // the following is the list of IRC channels that the bot should connect to,
- // and the associated project name
- $channels = array(
-
-
-# these should be sent to upstream too, as memory limit setting should be the very first thing
---- eventum-1.7.1/misc/process_mail_queue.php~ 2006-06-19 17:50:25.747786986 +0300
-+++ eventum-1.7.1/misc/process_mail_queue.php 2006-06-19 17:59:33.490045125 +0300
-@@ -27,7 +27,9 @@
- // +----------------------------------------------------------------------+
- //
- // @(#) $Id$
--//
-+
-+ini_set("memory_limit", "256M");
-+
- include_once("../config.inc.php");
- include_once(APP_INC_PATH . "db_access.php");
- include_once(APP_INC_PATH . "class.mail_queue.php");
-@@ -60,8 +62,6 @@
- exit;
- }
-
--ini_set("memory_limit", "256M");
--
- // handle only pending emails
- $limit = 50;
- Mail_Queue::send('pending', $limit);
---- eventum-1.7.1/misc/download_emails.php~ 2006-06-19 18:13:23.698634331 +0300
-+++ eventum-1.7.1/misc/download_emails.php 2006-06-19 18:16:24.672688641 +0300
-@@ -27,15 +27,15 @@
- // +----------------------------------------------------------------------+
- //
- // @(#) $Id$
--//
-+
-+ini_set("memory_limit", "256M");
-+
- include_once("../config.inc.php");
- include_once(APP_INC_PATH . "class.support.php");
- include_once(APP_INC_PATH . "class.lock.php");
- include_once(APP_INC_PATH . "class.project.php");
- include_once(APP_INC_PATH . "db_access.php");
-
--ini_set("memory_limit", "256M");
--
- // we need the IMAP extension for this to work
- if (!function_exists('imap_open')) {
- echo "Error: Eventum requires the IMAP extension in order to download messages saved on a IMAP/POP3 mailbox.\n";
+++ /dev/null
---- eventum-1.7.1/include/class.issue.php 2006-03-31 12:07:18.086159926 +0300
-+++ /home/glen/class.issue.php 2006-03-31 14:25:30.990674327 +0300
-@@ -2273,38 +2273,38 @@
-
- $custom_fields = Custom_Field::getFieldsToBeListed(Auth::getCurrentProject());
-
-+ // default order for last action date, priority should be descending
-+ // for textual fields, like summary, ascending is reasonable
- $fields = array(
-- "pri_rank",
-- "iss_id",
-- "iss_customer_id",
-- "prc_title",
-- "sta_rank",
-- "iss_created_date",
-- "iss_summary",
-- "last_action_date",
-- "usr_full_name",
-- "iss_expected_resolution_date"
-+ "pri_rank" => "desc",
-+ "iss_id" => "desc",
-+ "iss_customer_id" => "desc",
-+ "prc_title" => "asc",
-+ "sta_rank" => "asc",
-+ "iss_created_date" => "desc",
-+ "iss_summary" => "asc",
-+ "last_action_date" => "desc",
-+ "usr_full_name" => "asc",
-+ "iss_expected_resolution_date" => "desc",
- );
-
- foreach ($custom_fields as $fld_id => $fld_name) {
-- $fields[] = 'custom_field_' . $fld_id;
-+ $fields['custom_field_' . $fld_id] = "desc";
- }
- $items = array(
- "links" => array(),
- "images" => array()
- );
-- for ($i = 0; $i < count($fields); $i++) {
-- if ($options["sort_by"] == $fields[$i]) {
-- $items["images"][$fields[$i]] = "images/" . strtolower($options["sort_order"]) . ".gif";
-+ foreach ($fields as $field => $sort_order) {
-+ if ($options["sort_by"] == $field) {
-+ $items["images"][$field] = "images/" . strtolower($options["sort_order"]) . ".gif";
- if (strtolower($options["sort_order"]) == "asc") {
- $sort_order = "desc";
- } else {
- $sort_order = "asc";
- }
-- $items["links"][$fields[$i]] = $HTTP_SERVER_VARS["PHP_SELF"] . "?sort_by=" . $fields[$i] . "&sort_order=" . $sort_order;
-- } else {
-- $items["links"][$fields[$i]] = $HTTP_SERVER_VARS["PHP_SELF"] . "?sort_by=" . $fields[$i] . "&sort_order=asc";
- }
-+ $items["links"][$field] = $HTTP_SERVER_VARS["PHP_SELF"] . "?sort_by=" . $field . "&sort_order=" . $sort_order;
- }
- return $items;
- }
+++ /dev/null
---- eventum/include/class.mime_helper.php~ 2006-09-07 23:32:17.000000000 +0300
-+++ eventum/include/class.mime_helper.php 2006-09-08 00:17:21.483076433 +0300
-@@ -446,12 +446,16 @@
- * Method used to check whether a given email message has any attachments.
- *
- * @access public
-- * @param string $message The full body of the message
-+ * @param mixed $message The full body of the message or parsed message structure.
- * @return boolean
- */
- function hasAttachments($message)
- {
-- $output = Mime_Helper::decode($message, true);
-+ if (is_string($message)) {
-+ $output = Mime_Helper::decode($message, true);
-+ } else {
-+ $output = $message;
-+ }
- $attachments = Mime_Helper::_getAttachmentDetails($output, TRUE);
- if (count($attachments) > 0) {
- return true;
---- eventum/include/class.mime_helper.php~ 2006-09-08 00:17:21.000000000 +0300
-+++ eventum/include/class.mime_helper.php 2006-09-08 00:24:49.529222316 +0300
-@@ -57,12 +57,16 @@
- * Method used to get charset from raw email.
- *
- * @access public
-- * @param string $input The full body of the message
-+ * @param mixed $input The full body of the message or decoded email.
- * @return string charset extracted from Content-Type header of email.
- */
- function getCharacterSet($input)
- {
-- $structure = Mime_Helper::decode($input, false, false);
-+ if (!is_object($input)) {
-+ $input = Mime_Helper::decode($input, false, false);
-+ } else {
-+ $structure = $input;
-+ }
- if (empty($structure)) {
- return false;
- }
---- eventum/include/class.mime_helper.php~ 2006-09-08 00:28:40.000000000 +0300
-+++ eventum/include/class.mime_helper.php 2006-09-08 00:52:25.642013349 +0300
-@@ -455,12 +455,10 @@
- */
- function hasAttachments($message)
- {
-- if (is_string($message)) {
-- $output = Mime_Helper::decode($message, true);
-- } else {
-- $output = $message;
-+ if (!is_object($message)) {
-+ $message = Mime_Helper::decode($message, true);
- }
-- $attachments = Mime_Helper::_getAttachmentDetails($output, TRUE);
-+ $attachments = Mime_Helper::_getAttachmentDetails($message, TRUE);
- if (count($attachments) > 0) {
- return true;
- } else {
-@@ -474,13 +472,15 @@
- * associated with a message.
- *
- * @access public
-- * @param string $message The full body of the message
-+ * @param mixed $message The full body of the message or parsed message structure.
- * @return array The list of attachments, if any
- */
- function getAttachments($message)
- {
-- $output = Mime_Helper::decode($message, true);
-- return Mime_Helper::_getAttachmentDetails($output, TRUE);
-+ if (!is_object($message)) {
-+ $message = Mime_Helper::decode($message, true);
-+ }
-+ return Mime_Helper::_getAttachmentDetails($message, TRUE);
- }
-
-
-@@ -489,14 +489,15 @@
- * associated with a message.
- *
- * @access public
-- * @param string $message The full body of the message
-+ * @param mixed $message The full body of the message or parsed message structure.
- * @return array The list of attachment CIDs, if any
- */
-- function getAttachmentCIDs(&$message)
-+ function getAttachmentCIDs($message)
- {
-- // gotta parse MIME based emails now
-- $output = Mime_Helper::decode($message, true);
-- return Mime_Helper::_getAttachmentDetails($output, TRUE);
-+ if (!is_object($message)) {
-+ $message = Mime_Helper::decode($message, true);
-+ }
-+ return Mime_Helper::_getAttachmentDetails($message, TRUE);
- }
-
-
-@@ -509,6 +510,7 @@
- $attachments = array_merge($t, $attachments);
- }
- }
-+ // FIXME: content-type is always lowered by PEAR class (CHECKME) and why not $mime_part->content_type?
- $content_type = strtolower(@$mime_part->ctype_primary . '/' . @$mime_part->ctype_secondary);
- if ($content_type == '/') {
- $content_type = '';
-@@ -567,7 +569,7 @@
- * attachment.
- *
- * @access public
-- * @param string $message The full content of the message
-+ * @param mixed $message The full content of the message or parsed message structure.
- * @param string $filename The filename to look for
- * @param string $cid The content-id to look for, if any
- * @return string The full encoded content of the attachment
-@@ -575,8 +577,10 @@
- function getAttachment($message, $filename, $cid = FALSE)
- {
- $parts = array();
-- $output = Mime_Helper::decode($message, true);
-- $details = Mime_Helper::_getAttachmentDetails($output, TRUE, $filename, $cid);
-+ if (!is_object($message)) {
-+ $message = Mime_Helper::decode($message, true);
-+ }
-+ $details = Mime_Helper::_getAttachmentDetails($message, TRUE, $filename, $cid);
- if (count($details) == 1) {
- return array(
- $details[0]['filetype'],
-@@ -596,7 +600,7 @@
- * @param boolean $include_bodies Whether to include the bodies in the return value or not
- * @return mixed The decoded content of the message
- */
-- function decode(&$message, $include_bodies = FALSE, $decode_bodies = TRUE)
-+ function decode($message, $include_bodies = FALSE, $decode_bodies = TRUE)
- {
- // need to fix a pretty annoying bug where if the 'boundary' part of a
- // content-type header is split into another line, the PEAR library would
---- eventum/include/class.support.php 2006-09-08 01:03:12.090024412 +0300
-+++ eventum/include/class.support.php 2006-09-08 01:25:16.661067108 +0300
-@@ -12,14 +12,17 @@
- }
-
- $email = @imap_headerinfo($mbox, $num);
-- $body = imap_body($mbox, $num);
- $headers = imap_fetchheader($mbox, $num);
-- $message = $headers . $body;
-+ $body = imap_body($mbox, $num);
- // check for mysterious blank messages
-- if (empty($message)) {
-+ if (empty($body) and empty($headers)) {
- return '';
- }
- $message_id = Mail_API::getMessageID($headers, $body);
-+ $message = $headers . $body;
-+ // we don't need $body anymore -- free memory
-+ unset($body);
-+
- if ((!Support::exists($message_id)) && (!Note::exists($message_id))) {
- $structure = Mime_Helper::decode($message, true, true);
- $message_body = Mime_Helper::getMessageBody($structure);
-@@ -496,7 +499,7 @@
- if ((!Support::exists($message_id)) && (!Note::exists($message_id))) {
- $structure = Mime_Helper::decode($message, true, true);
- $message_body = Mime_Helper::getMessageBody($structure);
-- if (Mime_Helper::hasAttachments($message)) {
-+ if (Mime_Helper::hasAttachments($structure)) {
- $has_attachments = 1;
- } else {
- $has_attachments = 0;
-@@ -1417,7 +1420,7 @@
- for ($i = 0; $i < count($res); $i++) {
- // since downloading email should make the emails 'public', send 'false' below as the 'internal_only' flag
- $structure = Mime_Helper::decode($res[$i]['seb_full_email'], true, false);
-- if (Mime_Helper::hasAttachments($res[$i]['seb_full_email'])) {
-+ if (Mime_Helper::hasAttachments($structure)) {
- $has_attachments = 1;
- } else {
- $has_attachments = 0;
---- eventum/include/class.routing.php~ 2006-09-08 00:56:22.000000000 +0300
-+++ eventum/include/class.routing.php 2006-09-08 01:06:28.235959347 +0300
-@@ -169,7 +169,7 @@
- $has_magic_cookie = false;
- }
-
-- if (Mime_Helper::hasAttachments($full_message)) {
-+ if (Mime_Helper::hasAttachments($structure)) {
- $has_attachments = 1;
- } else {
- $has_attachments = 0;
-@@ -371,7 +371,7 @@
-
- // add the full email to the note if there are any attachments
- // this is needed because the front end code will display attachment links
-- if (Mime_Helper::hasAttachments($full_message)) {
-+ if (Mime_Helper::hasAttachments($structure)) {
- $HTTP_POST_VARS['blocked_msg'] = $full_message;
- }
- $res = Note::insert(Auth::getUserID(), $issue_id, false, false);
---- eventum/include/class.note.php~ 2006-09-08 00:56:22.000000000 +0300
-+++ eventum/include/class.note.php 2006-09-08 01:07:07.482745790 +0300
-@@ -524,7 +524,7 @@
- $body = Mime_Helper::getMessageBody($structure);
- $sender_email = strtolower(Mail_API::getEmailAddress($structure->headers['from']));
- if ($target == 'email') {
-- if (Mime_Helper::hasAttachments($blocked_message)) {
-+ if (Mime_Helper::hasAttachments($structure)) {
- $has_attachments = 1;
- } else {
- $has_attachments = 0;
---- eventum/include/class.mime_helper.php~ 2006-09-08 00:56:22.000000000 +0300
-+++ eventum/include/class.mime_helper.php 2006-09-08 02:01:57.633010451 +0300
-@@ -630,9 +630,9 @@
- * @access public
- * @param object $obj The decoded object structure of the MIME message
- * @param array $parts The parsed parts of the MIME message
-- * @return array List of parts that exist in the MIME message
-+ * @return void
- */
-- function parse_output(&$obj, &$parts)
-+ function parse_output($obj, &$parts)
- {
- if (!empty($obj->parts)) {
- for ($i = 0; $i < count($obj->parts); $i++) {
+++ /dev/null
---- eventum/include/class.routing.php~ 2006-09-07 23:32:17.000000000 +0300
-+++ eventum/include/class.routing.php 2006-09-07 23:56:05.122543011 +0300
-@@ -60,9 +60,10 @@
- // save the full message for logging purposes
- Support::saveRoutedEmail($full_message);
-
-- if (preg_match("/^(boundary=).*/m", $full_message)) {
-- $pattern = "/(Content-Type: multipart\/)(.+); ?\r?\n(boundary=)(.*)$/im";
-- $replacement = '$1$2; $3$4';
-+ // join the Content-Type line (for easier parsing?)
-+ if (preg_match('/^boundary=/m', $full_message)) {
-+ $pattern = "#(Content-Type: multipart/.+); ?\r?\n(boundary=.*)$#im";
-+ $replacement = '$1; $2';
- $full_message = preg_replace($pattern, $replacement, $full_message);
- }
- // associate routed emails to the internal system account
-@@ -84,7 +84,7 @@
- //
-
- // remove the reply-to: header
-- if (preg_match("/^(reply-to:).*/im", $full_message)) {
-+ if (preg_match('/^reply-to:.*/im', $full_message)) {
- $full_message = preg_replace("/^(reply-to:).*\n/im", '', $full_message, 1);
- }
-
-@@ -271,9 +271,10 @@
- // save the full message for logging purposes
- Note::saveRoutedNote($full_message);
-
-- if (preg_match("/^(boundary=).*/m", $full_message)) {
-- $pattern = "/(Content-Type: multipart\/)(.+); ?\r?\n(boundary=)(.*)$/im";
-- $replacement = '$1$2; $3$4';
-+ // join the Content-Type line (for easier parsing?)
-+ if (preg_match('/^boundary=/m', $full_message)) {
-+ $pattern = "#(Content-Type: multipart/.+); ?\r?\n(boundary=.*)$#im";
-+ $replacement = '$1; $2';
- $full_message = preg_replace($pattern, $replacement, $full_message);
- }
-
-@@ -290,7 +291,7 @@
- //
-
- // remove the reply-to: header
-- if (preg_match("/^(reply-to:).*/im", $full_message)) {
-+ if (preg_match('/^reply-to:.*/im', $full_message)) {
- $full_message = preg_replace("/^(reply-to:).*\n/im", '', $full_message, 1);
- }
-
---- eventum/include/class.mime_helper.php~ 2006-09-07 23:32:17.000000000 +0300
-+++ eventum/include/class.mime_helper.php 2006-09-08 00:17:21.483076433 +0300
-@@ -594,9 +598,9 @@
- // content-type header is split into another line, the PEAR library would
- // not work correctly. this fix will make the boundary part go to the
- // same line as the content-type one
-- if (preg_match("/^(boundary=).*/m", $message)) {
-- $pattern = "/(Content-Type: multipart\/)(.+); ?\r?\n(boundary=)(.*)$/im";
-- $replacement = '$1$2; $3$4';
-+ if (preg_match('/^boundary=/m', $message)) {
-+ $pattern = "#(Content-Type: multipart/.+); ?\r?\n(boundary=)$#im";
-+ $replacement = '$1; $2';
- $message = preg_replace($pattern, $replacement, $message);
- }
-
---- eventum/include/class.mime_helper.php~ 2006-09-08 00:24:49.000000000 +0300
-+++ eventum/include/class.mime_helper.php 2006-09-08 00:28:40.622076651 +0300
-@@ -192,7 +192,7 @@
- $second_part = substr($address, strrpos($address, '<'));
- $address = $first_part;
- }
-- if (preg_match('/^"(.*)"/', $address)) {
-+ if (preg_match('/^".*"/', $address)) {
- $address = preg_replace('/^"(.*)"/', '\\1', $address);
- }
- if (!empty($second_part)) {
-@@ -248,7 +248,7 @@
- */
- function isQuotedPrintable($address)
- {
-- if (preg_match("/=\?.+\?Q\?(.+)\?= <(.+)>/i", $address, $matches)) {
-+ if (preg_match("/=\?.+\?Q\?.+\?= <.+>/i", $address)) {
- return true;
- } else {
- return false;
+++ /dev/null
---- eventum-20060112/misc/scm/process_cvs_commits.php 2006-01-24 17:10:02.000000000 +0200
-+++ /tmp/scm 2006-01-24 17:09:31.000000000 +0200
-@@ -94,6 +95,11 @@
- $msg .= "Host: $eventum_domain\r\n";
- $msg .= "Connection: Close\r\n\r\n";
- fwrite($fp, $msg);
-+ $buf = fgets($fp, 4096);
-+ list($proto, $status, $msg) = explode(' ', trim($buf), 3);
-+ if ($status != '200') {
-+ echo "Error: Could not ping the Eventum SCM handler script: HTTP status code: $status $msg\n";
-+ }
- fclose($fp);
- }
- }
+++ /dev/null
-scm checkins which happen to produce plus sign after base64_encode get decoded
-as garbage as plus sign in url means space. and then the data can't be decoded
-back to original string.
-
-$ php -r 'echo base64_encode("pood >qwertyuiopadsfzkq1"), "\n";'
-cG9vZCA+cXdlcnR5dWlvcGFkc2Z6a3Ex
-$ php -r 'echo base64_decode("cG9vZCA+cXdlcnR5dWlvcGFkc2Z6a3Ex"), "\n";'
-pood >qwertyuiopadsfzkq1
-$ php -r 'echo base64_decode("cG9vZCA cXdlcnR5dWlvcGFkc2Z6a3Ex"), "\n";'
-pood ]Ù\]Z[ÜYÙÜL
-
---- eventum-20060318/misc/scm/process_cvs_commits.php~ 2006-03-24 17:57:19.000000000 +0200
-+++ eventum-20060318/misc/scm/process_cvs_commits.php 2006-03-24 17:57:01.000000000 +0200
-@@ -71,18 +72,18 @@
-
- if (count($matches) > 1) {
- // need to encode all of the url arguments
-- $issue_id = base64_encode($matches[1]);
-- $commit_msg = base64_encode($commit_msg);
-- $cvs_module = base64_encode($cvs_module);
-- $username = base64_encode($username);
-+ $issue_id = rawurlencode($matches[1]);
-+ $commit_msg = rawurlencode($commit_msg);
-+ $cvs_module = rawurlencode($cvs_module);
-+ $username = rawurlencode($username);
-
- // build the GET url to use
- $ping_url = $eventum_relative_url . "scm_ping.php?module=$cvs_module&username=$username&commit_msg=$commit_msg";
- $ping_url .= "&issue[]=$issue_id";
- for ($i = 0; $i < count($modified_files); $i++) {
-- $ping_url .= "&files[$i]=" . base64_encode($modified_files[$i]['filename']);
-- $ping_url .= "&old_versions[$i]=" . base64_encode($modified_files[$i]['old_revision']);
-- $ping_url .= "&new_versions[$i]=" . base64_encode($modified_files[$i]['new_revision']);
-+ $ping_url .= "&files[$i]=" . rawurlencode($modified_files[$i]['filename']);
-+ $ping_url .= "&old_versions[$i]=" . rawurlencode($modified_files[$i]['old_revision']);
-+ $ping_url .= "&new_versions[$i]=" . rawurlencode($modified_files[$i]['new_revision']);
- }
-
- $fp = fsockopen($eventum_domain, $eventum_port, $errno, $errstr, 30);
---- eventum-20060318/scm_ping.php~ 2006-03-24 17:57:20.000000000 +0200
-+++ eventum-20060318/scm_ping.php 2006-03-24 17:57:01.000000000 +0200
-@@ -33,8 +33,6 @@
- include_once(APP_INC_PATH . "class.workflow.php");
- include_once(APP_INC_PATH . "db_access.php");
-
--$HTTP_GET_VARS = Misc::array_map_deep($HTTP_GET_VARS, 'base64_decode');
--
- foreach ($HTTP_GET_VARS['issue'] as $issue_id) {
- $files = array();
- for ($y = 0; $y < count($HTTP_GET_VARS['files']); $y++) {
+++ /dev/null
---- eventum-1.7.1/scm_ping.php~ 2006-06-19 17:42:09.926721975 +0300
-+++ eventum-1.7.1/scm_ping.php 2006-06-19 17:44:06.729328243 +0300
-@@ -26,7 +26,14 @@
- // +----------------------------------------------------------------------+
- //
- // @(#) $Id$
--//
-+
-+// shortcut to exit out when no issue id-s are passed in request
-+// as this script is always called by CVS but we handle only ones which can be
-+// associated with issues.
-+if (empty($_GET['issue'])) {
-+ exit;
-+}
-+
- include_once("config.inc.php");
- include_once(APP_INC_PATH . "class.misc.php");
- include_once(APP_INC_PATH . "class.scm.php");
+++ /dev/null
---- eventum-1.7.1/misc/scm/process_cvs_commits.php 2006-06-19 15:32:19.384637639 +0300
-+++ eventum-1.7.1/misc/scm/process_cvs_commits.php 2006-06-19 15:31:00.742910000 +0300
-@@ -35,6 +35,21 @@
- // DO NOT CHANGE ANYTHING AFTER THIS LINE
- //
-
-+if (isset($eventum_url)) {
-+ $data = parse_url($eventum_url);
-+} else {
-+ // legacy
-+ $data = array();
-+ $data['host'] = $eventum_domain;
-+ $data['path'] = $eventum_relative_url;
-+ $data['port'] = $eventum_port;
-+ $data['scheme'] = 'http';
-+}
-+
-+if (!isset($data['port'])) {
-+ $data['port'] = $data['scheme'] == 'https' ? 443 : 80;
-+}
-+
- if (isset($_SERVER)) {
- $HTTP_SERVER_VARS = $_SERVER;
- }
-@@ -76,7 +91,7 @@
- $username = rawurlencode($username);
-
- // build the GET url to use
-- $ping_url = $eventum_relative_url . "scm_ping.php?module=$cvs_module&username=$username&commit_msg=$commit_msg";
-+ $ping_url = $data['path']. "scm_ping.php?module=$cvs_module&username=$username&commit_msg=$commit_msg";
- foreach ($matches[1] as $issue_id) {
- $ping_url .= "&issue[]=$issue_id";
- }
-@@ -87,13 +102,16 @@
- $ping_url .= "&new_versions[$i]=" . rawurlencode($modified_files[$i]['new_revision']);
- }
-
-- $fp = fsockopen($eventum_domain, $eventum_port, $errno, $errstr, 30);
-+ $address = $data['host'];
-+ if ($data['scheme'] == 'https') {
-+ $address = "ssl://$address";
-+ }
-+ $fp = fsockopen($address, $data['port'], $errno, $errstr, 30);
- if (!$fp) {
-- echo "Error: Could not ping the Eventum SCM handler script.\n";
-- exit();
-+ die("Error: Could not ping the Eventum SCM handler script.\n");
- } else {
- $msg = "GET $ping_url HTTP/1.1\r\n";
-- $msg .= "Host: $eventum_domain\r\n";
-+ $msg .= "Host: $data[host]\r\n";
- $msg .= "Connection: Close\r\n\r\n";
- fwrite($fp, $msg);
- $buf = fgets($fp, 4096);
+++ /dev/null
---- eventum-20060324/misc/scm/process_cvs_commits.php 2006-03-28 12:21:12.000000000 +0300
-+++ /home/glen/scm 2006-03-28 12:24:01.000000000 +0300
-@@ -66,19 +67,21 @@
- $commit_msg = substr($input, strpos($input, 'Log Message:')+strlen('Log Message:')+1);
-
- // parse the commit message and get the first issue number we can find
- $pattern = "/(?:issue|bug) ?:? ?#?(\d+)/i";
--preg_match($pattern, $commit_msg, $matches);
-+preg_match_all($pattern, $commit_msg, $matches);
-
- if (count($matches) > 1) {
- // need to encode all of the url arguments
-- $issue_id = rawurlencode($matches[1]);
- $commit_msg = rawurlencode($commit_msg);
- $cvs_module = rawurlencode($cvs_module);
- $username = rawurlencode($username);
-
- // build the GET url to use
- $ping_url = $eventum_relative_url . "scm_ping.php?module=$cvs_module&username=$username&commit_msg=$commit_msg";
-- $ping_url .= "&issue[]=$issue_id";
-+ foreach ($matches[1] as $issue_id) {
-+ $ping_url .= "&issue[]=$issue_id";
-+ }
-+
- for ($i = 0; $i < count($modified_files); $i++) {
- $ping_url .= "&files[$i]=" . rawurlencode($modified_files[$i]['filename']);
- $ping_url .= "&old_versions[$i]=" . rawurlencode($modified_files[$i]['old_revision']);
+++ /dev/null
-This patch is to resolve PHP Warning:
-
-PHP Notice: Use of undefined constant SID - assumed 'SID' in /usr/share/eventum/include/class.template.php on line 202
-
-The problem is that SID constant gets defined only if session_start() has been called (or you autostart session).
-And the second issue is that this SID is never used in templates or classes.
-
-so i'm removing it.
-
---- eventum-20060725/include/class.template.php~ 2006-07-25 10:34:23.330668461 +0300
-+++ eventum-20060725/include/class.template.php 2006-07-26 11:27:17.567040087 +0300
-@@ -199,7 +199,6 @@
- $this->assign("app_base_url", APP_BASE_URL);
- $this->assign("rel_url", APP_RELATIVE_URL);
- $this->assign("locale", APP_CURRENT_LOCALE);
-- $this->assign("SID", SID);
-
- // now for the browser detection stuff
- Net_UserAgent_Detect::detect();
+++ /dev/null
---- eventum-20060724/misc/scm/process_svn_commits.php 2006-07-25 00:34:44.884132544 +0300
-+++ eventum-20060724.svn/misc/scm/process_svn_commits.php 2006-07-25 00:34:07.543295681 +0300
-@@ -25,28 +25,44 @@
- // | Authors: João Prado Maia <jpm@mysql.com> |
- // | Adam Ratcliffe <adam.ratcliffe@geosmart.co.nz> |
- // | Frederik M. Kraus <f.kraus@pangora.com> |
-+// | Elan Ruusamäe <glen@delfi.ee> |
- // +----------------------------------------------------------------------+
- //
- // @(#) $Id$
- //
-+// See http://eventum.mysql.org/wiki/index.php/Subversion_integration about SVN integration.
-
--$eventum_domain = 'www.geosmartlbs.co.nz';
--$eventum_relative_url = '/eventum/';
--$eventum_port = 80;
--$svnlook = '/usr/bin/svnlook';
--$separatorChar = "/";
-+include '/etc/eventum/scm.php';
-
- //
- // DO NOT CHANGE ANYTHING AFTER THIS LINE
- //
-
--if(!file_exists($svnlook)) {
-- echo 'svnlook does not exist, edit $svnlook\n';
-- exit(1);
-+if (isset($eventum_url)) {
-+ $data = parse_url($eventum_url);
-+} else {
-+ // legacy
-+ $data = array();
-+ $data['host'] = $eventum_domain;
-+ $data['path'] = $eventum_relative_url;
-+ $data['port'] = $eventum_port;
-+ $data['scheme'] = 'http';
-+}
-+
-+if (!isset($data['port'])) {
-+ $data['port'] = $data['scheme'] == 'https' ? 443 : 80;
-+}
-+
-+if (!isset($svnlook)) {
-+ $svnlook = '/usr/bin/svnlook';
-+}
-+
-+if (!is_executable($svnlook)) {
-+ die('svnlook is not executable, edit $svnlook');
- }
-
--if(count($argv) < 3) {
-- echo 'missing arguments, got ' . count($argv) . ' expected 3\n';
-+if ($argc < 3) {
-+ printf("Missing arguments, got %d, expected 2\n", $argc - 1);
- exit(1);
- }
-
-@@ -54,19 +70,16 @@
- $rev = $argv[2];
- $oldRev = $rev - 1;
-
--$svn_module = base64_encode(substr(strrchr($repos, $separatorChar), 1));
-+$scm_module = rawurlencode(basename($repos));
-
- $results = array();
- exec($svnlook . ' info ' . $repos . ' -r ' . $rev, $results);
-
--$username = base64_encode(array_shift($results));
-+$username = array_shift($results);
- $date = array_shift($results);
- array_shift($results); // ignore file length
-
--$commit_msg = '';
--foreach ($results as $line) {
-- $commit_msg .= $line."\n";
--}
-+$commit_msg = join("\n", $results);
- // now we have to strip html-tags from the commit message
- $commit_msg = strip_tags($commit_msg);
-
-@@ -76,48 +89,52 @@
- $pieces = explode(' ', $file_info);
- $filename = $pieces[1];
- $modified_files[] = array(
-- 'filename' => "/" . $filename,
-- 'old_revision' => $oldRev,
-- 'new_revision' => $rev
-+ 'filename' => $filename,
-+ 'old_revision' => $oldRev,
-+ 'new_revision' => $rev
- );
- }
-
- // parse the commit message and get all issue numbers we can find
--$pattern = "/[issue|bug] ?:? ?#?(\d+)/i";
-+$pattern = "/(?:issue|bug) ?:? ?#?(\d+)/i";
- preg_match_all($pattern, $commit_msg, $matches);
-
--if (count($matches) == 2 && count($matches[1]) > 0) {
-- $commit_msg = base64_encode($commit_msg);
-- foreach ($matches[0] as $p_issue_id) {
-- echo "Matched ISSUE #".$p_issue_id."\n";
-- $issue_id = base64_encode($p_issue_id);
-- // build the GET url to use
-- $ping_url = $eventum_relative_url .
-- "scm_ping.php?module=$svn_module&username=$username&commit_msg=$commit_msg";
-+if (count($matches) > 1) {
-+ // need to encode all of the url arguments
-+ $commit_msg = rawurlencode($commit_msg);
-+ $scm_module = rawurlencode($scm_module);
-+ $username = rawurlencode($username);
-+
-+ // build the GET url to use
-+ $ping_url = $data['path']. "scm_ping.php?module=$scm_module&username=$username&commit_msg=$commit_msg";
-+ foreach ($matches[1] as $issue_id) {
-+ echo 'Matched Issue #', $issue_id, "\n";
- $ping_url .= "&issue[]=$issue_id";
-- for ($i = 0; $i < count($modified_files); $i++) {
-- $ping_url .= "&files[$i]=" . base64_encode($modified_files[$i]['filename']);
-- $ping_url .= "&old_versions[$i]=" .
-- base64_encode($modified_files[$i]['old_revision']);
-- $ping_url .= "&new_versions[$i]=" .
-- base64_encode($modified_files[$i]['new_revision']);
-- }
-+ }
-
-- $fp = fsockopen($eventum_domain, $eventum_port, $errno, $errstr, 30);
-+ for ($i = 0; $i < count($modified_files); $i++) {
-+ $ping_url .= "&files[$i]=" . rawurlencode($modified_files[$i]['filename']);
-+ $ping_url .= "&old_versions[$i]=" . rawurlencode($modified_files[$i]['old_revision']);
-+ $ping_url .= "&new_versions[$i]=" . rawurlencode($modified_files[$i]['new_revision']);
-+ }
-
-- if (!$fp) {
-- echo "Error: Could not ping the Eventum SCM handler script.\n";
-- exit();
-- } else {
-- $msg = "GET $ping_url HTTP/1.1\r\n";
-- $msg .= "Host: $eventum_domain\r\n";
-- $msg .= "Connection: Close\r\n\r\n";
-- fwrite($fp, $msg);
-- fclose($fp);
-+ $address = $data['host'];
-+ if ($data['scheme'] == 'https') {
-+ $address = "ssl://$address";
-+ }
-+ $fp = fsockopen($address, $data['port'], $errno, $errstr, 30);
-+ if (!$fp) {
-+ die("Error: Could not ping the Eventum SCM handler script.\n");
-+ } else {
-+ $msg = "GET $ping_url HTTP/1.1\r\n";
-+ $msg .= "Host: $data[host]\r\n";
-+ $msg .= "Connection: Close\r\n\r\n";
-+ fwrite($fp, $msg);
-+ $buf = fgets($fp, 4096);
-+ list($proto, $status, $msg) = explode(' ', trim($buf), 3);
-+ if ($status != '200') {
-+ echo "Error: Could not ping the Eventum SCM handler script: HTTP status code: $status $msg\n";
- }
-+ fclose($fp);
- }
--} else {
-- echo "No Match found\n";
- }
--
--?>
+++ /dev/null
-display 1h 20m instead of cryptic 1.8h
-also display total minutes in case omit_days is false, which is seen in weekly report
-
---- eventum-1.7.1/include/class.misc.php 2006-05-12 20:00:39.939316085 +0300
-+++ /home/glen/class.misc.php 2006-05-12 20:00:13.018713523 +0300
-@@ -472,13 +472,9 @@
- if ((!empty($minutes)) && ($minutes < 6)) {
- $return = sprintf("%02dm", $minutes);
- } elseif ($hours > 24 && $omit_days == false) {
-- $mins = ($minutes % 60) / 60;
-- $days = $hours / 24;
-- $hours = $hours % 24;
-- $hours += $mins;
-- $return = sprintf("%02dd %.1fh", $days, $hours);
-+ $return = sprintf("%dd %dh %dm (%dh %dm)", floor($minutes/24/60), floor($minutes/60)%24, $minutes%60, floor($minutes/60), $minutes%60);
- } else {
-- $return = round($hours,1) . 'h';
-+ $return = sprintf("%dh %dm", floor($minutes/60), $minutes%60);
- }
- if ($omit_empty) {
- $chunks = explode(" ", $return);
+++ /dev/null
---- eventum-20060720/templates/notes.tpl.html~ 2006-07-20 21:34:05.958276624 +0300
-+++ eventum-20060720/templates/notes.tpl.html 2006-07-20 21:38:04.023620347 +0300
-@@ -14,7 +14,7 @@
- }
- function convertNote(note_id)
- {
-- if (!confirm('{/literal}{t escape=none}This note will be deleted & converted to an email, one either sent immediately or saved as a draft.{/t}{literal}')) {
-+ if (!confirm('{/literal}{t escape=js}This note will be deleted & converted to an email, one either sent immediately or saved as a draft.{/t}{literal}')) {
- return false;
- } else {
- var features = 'width=420,height=180,top=30,left=30,resizable=yes,scrollbars=yes,toolbar=no,location=no,menubar=no,status=no';
-diff -u -r eventum-20060720/templates/notifications/account_details.tpl.text eventum-20060720.tpl/templates/notifications/account_details.tpl.text
---- eventum-20060720/templates/notifications/account_details.tpl.text 2006-07-20 21:40:21.366703004 +0300
-+++ eventum-20060720.tpl/templates/notifications/account_details.tpl.text 2006-07-20 21:40:07.026381143 +0300
-@@ -1,12 +1,12 @@
- {textformat style="email"}{t name=$app_title}This is an automated message sent at your request from %1.{/t}
-
--{t}Your full account information is available below.{/t}
-+{t escape=no}Your full account information is available below.{/t}
- {/textformat}
-
- ----------------------------------------------------------------------
-- {t}Full Name{/t}: {$user.usr_full_name}
-- {t}Email Address{/t}: {$user.usr_email}
--{t}Assigned Projects{/t}: {foreach from=$user.projects item=project name=project}
-+ {t escape=no}Full Name{/t}: {$user.usr_full_name}
-+ {t escape=no}Email Address{/t}: {$user.usr_email}
-+{t escape=no}Assigned Projects{/t}: {foreach from=$user.projects item=project name=project}
- {if not $smarty.foreach.project.first} {/if}{$project.prj_title}: {$project.role}
- {/foreach}
- ----------------------------------------------------------------------
-diff -u -r eventum-20060720/templates/notifications/assigned.tpl.text eventum-20060720.tpl/templates/notifications/assigned.tpl.text
---- eventum-20060720/templates/notifications/assigned.tpl.text 2006-07-20 21:40:21.366703004 +0300
-+++ eventum-20060720.tpl/templates/notifications/assigned.tpl.text 2006-07-20 21:40:07.026381143 +0300
-@@ -3,17 +3,17 @@
- {t 1=$current_user}An issue was assigned to you by %1{/t}
-
-
--{t}To view more details of this issue, or to update it, please visit the following URL{/t}:
-+{t escape=no}To view more details of this issue, or to update it, please visit the following URL{/t}:
- {$app_base_url}view.php?id={$issue.iss_id}
- {/textformat}
- ----------------------------------------------------------------------
-- {t}ID{/t}: {$issue.iss_id}
-- {t}Summary{/t}: {$issue.iss_summary}
-- {t}Project{/t}: {$issue.prj_title}
-- {t}Reported By{/t}: {$issue.usr_full_name}
-- {t}Assignment{/t}: {$issue.assigned_users}
-- {t}Priority{/t}: {$issue.pri_title}
-- {t}Description{/t}:
-+ {t escape=no}ID{/t}: {$issue.iss_id}
-+ {t escape=no}Summary{/t}: {$issue.iss_summary}
-+ {t escape=no}Project{/t}: {$issue.prj_title}
-+ {t escape=no}Reported By{/t}: {$issue.usr_full_name}
-+ {t escape=no}Assignment{/t}: {$issue.assigned_users}
-+ {t escape=no}Priority{/t}: {$issue.pri_title}
-+ {t escape=no}Description{/t}:
- ----------------------------------------------------------------------
- {$issue.iss_description}
- ----------------------------------------------------------------------
-diff -u -r eventum-20060720/templates/notifications/closed.tpl.text eventum-20060720.tpl/templates/notifications/closed.tpl.text
---- eventum-20060720/templates/notifications/closed.tpl.text 2006-07-20 21:40:21.366703004 +0300
-+++ eventum-20060720.tpl/templates/notifications/closed.tpl.text 2006-07-20 21:40:07.026381143 +0300
-@@ -1,20 +1,20 @@
- {textformat style="email"}{t name=$app_title}This is an automated message sent at your request from %1.{/t}
-
--{t}This issue was just closed by{/t} {$data.closer_name}{if $data.reason != ''}
-- {t}with the message{/t}: {$data.reason}{/if}.
-+{t escape=no}This issue was just closed by{/t} {$data.closer_name}{if $data.reason != ''}
-+ {t escape=no}with the message{/t}: {$data.reason}{/if}.
-
--{t}To view more details of this issue, or to update it, please visit the following URL{/t}:
-+{t escape=no}To view more details of this issue, or to update it, please visit the following URL{/t}:
- {$app_base_url}view.php?id={$data.iss_id}
- {/textformat}
-
- ----------------------------------------------------------------------
-- {t}ID{/t}: {$data.iss_id}
-- {t}Summary{/t}: {$data.iss_summary}
-- {t}Status{/t}: {$data.sta_title}
-- {t}Project{/t}: {$data.prj_title}
-- {t}Reported By{/t}: {$data.usr_full_name}
-- {t}Priority{/t}: {$data.pri_title}
-- {t}Description{/t}:
-+ {t escape=no}ID{/t}: {$data.iss_id}
-+ {t escape=no}Summary{/t}: {$data.iss_summary}
-+ {t escape=no}Status{/t}: {$data.sta_title}
-+ {t escape=no}Project{/t}: {$data.prj_title}
-+ {t escape=no}Reported By{/t}: {$data.usr_full_name}
-+ {t escape=no}Priority{/t}: {$data.pri_title}
-+ {t escape=no}Description{/t}:
- ----------------------------------------------------------------------
- {$data.iss_description}
- ----------------------------------------------------------------------
-diff -u -r eventum-20060720/templates/notifications/files.tpl.text eventum-20060720.tpl/templates/notifications/files.tpl.text
---- eventum-20060720/templates/notifications/files.tpl.text 2006-07-20 21:40:21.366703004 +0300
-+++ eventum-20060720.tpl/templates/notifications/files.tpl.text 2006-07-20 21:40:07.026381143 +0300
-@@ -1,31 +1,31 @@
--{textformat style="email"}{t}This is an automated message sent at your request from{/t} {$app_title}.
-+{textformat style="email"}{t escape=no}This is an automated message sent at your request from{/t} {$app_title}.
-
--{t}To view more details of this issue, or to update it, please visit the following URL{/t}:
-+{t escape=no}To view more details of this issue, or to update it, please visit the following URL{/t}:
- {$app_base_url}view.php?id={$data.iss_id}
- {/textformat}
-
--{t}New Attachment{/t}:
-+{t escape=no}New Attachment{/t}:
- ----------------------------------------------------------------------
-- {t}Owner{/t}: {$data.attachment.usr_full_name}
-- {t}Date{/t}: {$data.attachment.iat_created_date}
-- {t}Files{/t}:
-+ {t escape=no}Owner{/t}: {$data.attachment.usr_full_name}
-+ {t escape=no}Date{/t}: {$data.attachment.iat_created_date}
-+ {t escape=no}Files{/t}:
- {section name="i" loop=$data.attachment.files}
- {$data.attachment.files[i].iaf_filename} ({$data.attachment.files[i].iaf_filesize})
- {/section}
--{t}Description{/t}:
-+{t escape=no}Description{/t}:
- ----------------------------------------------------------------------
- {$data.attachment.iat_description}
- ----------------------------------------------------------------------
-
--{t}These are the current issue details{/t}:
-+{t escape=no}These are the current issue details{/t}:
- ----------------------------------------------------------------------
-- {t}ID{/t}: {$data.iss_id}
-- {t}Summary{/t}: {$data.iss_summary}
-- {t}Status{/t}: {$data.sta_title}
-- {t}Project{/t}: {$data.prj_title}
-- {t}Reported By{/t}: {$data.usr_full_name}
-- {t}Priority{/t}: {$data.pri_title}
-- {t}Description{/t}:
-+ {t escape=no}ID{/t}: {$data.iss_id}
-+ {t escape=no}Summary{/t}: {$data.iss_summary}
-+ {t escape=no}Status{/t}: {$data.sta_title}
-+ {t escape=no}Project{/t}: {$data.prj_title}
-+ {t escape=no}Reported By{/t}: {$data.usr_full_name}
-+ {t escape=no}Priority{/t}: {$data.pri_title}
-+ {t escape=no}Description{/t}:
- ----------------------------------------------------------------------
- {$data.iss_description}
- ----------------------------------------------------------------------
-diff -u -r eventum-20060720/templates/notifications/new.tpl.text eventum-20060720.tpl/templates/notifications/new.tpl.text
---- eventum-20060720/templates/notifications/new.tpl.text 2006-07-20 21:40:21.366703004 +0300
-+++ eventum-20060720.tpl/templates/notifications/new.tpl.text 2006-07-20 21:40:07.026381143 +0300
-@@ -1,17 +1,17 @@
- {textformat style="email"}{t name=$app_title}This is an automated message sent at your request from %1{/t}.
-
--{t}A new issue was just created and assigned to you.{/t}
-+{t escape=no}A new issue was just created and assigned to you.{/t}
-
--{t}To view more details of this issue, or to update it, please visit the following URL{/t}:
-+{t escape=no}To view more details of this issue, or to update it, please visit the following URL{/t}:
- {$app_base_url}view.php?id={$issue.iss_id}{/textarea}
-
- ----------------------------------------------------------------------
-- {t}ID{/t}: {$issue.iss_id}
-- {t}Summary{/t}: {$issue.iss_summary}
-- {t}Project{/t}: {$issue.prj_title}
-- {t}Reported By{/t}: {$issue.usr_full_name}
-- {t}Priority{/t}: {$issue.pri_title}
-- {t}Description{/t}:
-+ {t escape=no}ID{/t}: {$issue.iss_id}
-+ {t escape=no}Summary{/t}: {$issue.iss_summary}
-+ {t escape=no}Project{/t}: {$issue.prj_title}
-+ {t escape=no}Reported By{/t}: {$issue.usr_full_name}
-+ {t escape=no}Priority{/t}: {$issue.pri_title}
-+ {t escape=no}Description{/t}:
- ----------------------------------------------------------------------
- {$issue.iss_description}
- ----------------------------------------------------------------------
-diff -u -r eventum-20060720/templates/notifications/new_auto_created_issue.tpl.text eventum-20060720.tpl/templates/notifications/new_auto_created_issue.tpl.text
---- eventum-20060720/templates/notifications/new_auto_created_issue.tpl.text 2006-07-20 21:40:21.366703004 +0300
-+++ eventum-20060720.tpl/templates/notifications/new_auto_created_issue.tpl.text 2006-07-20 21:40:07.026381143 +0300
-@@ -1,27 +1,27 @@
- {textformat style="email"}
- {if $sender_name}
--{t}Dear{/t} {$sender_name},
-+{t escape=no}Dear{/t} {$sender_name},
-
- {/if}
- {t name=$app_title}This is an automated message sent at your request from %1{/t}.
-
--{t}We received a message from you and for your convenience, we created an issue that will be used by our staff to handle your message.{/t}
-+{t escape=no}We received a message from you and for your convenience, we created an issue that will be used by our staff to handle your message.{/t}
- {/textformat}
-
-- {t}Date{/t}: {$email.date}
-- {t}From{/t}: {$email.from}
-- {t}Subject{/t}: {$email.subject}
-+ {t escape=no}Date{/t}: {$email.date}
-+ {t escape=no}From{/t}: {$email.from}
-+ {t escape=no}Subject{/t}: {$email.subject}
-
- {if $sender_can_access == 1}
--{t}To view more details of this issue, or to update it, please visit the
-+{t escape=no}To view more details of this issue, or to update it, please visit the
- following URL{/t}:
- {$app_base_url}view.php?id={$data.iss_id}
- {/if}
-
-- {t}Issue{/t} #: {$data.iss_id}
-- {t}Summary{/t}: {$data.iss_summary}
-- {t}Priority{/t}: {$data.pri_title}
-- {t}Submitted{/t}: {$data.iss_created_date}
-+ {t escape=no}Issue{/t} #: {$data.iss_id}
-+ {t escape=no}Summary{/t}: {$data.iss_summary}
-+ {t escape=no}Priority{/t}: {$data.pri_title}
-+ {t escape=no}Submitted{/t}: {$data.iss_created_date}
-
- {if $sender_can_access == 1}
- {textformat style="email"}
-diff -u -r eventum-20060720/templates/notifications/new_issue.tpl.text eventum-20060720.tpl/templates/notifications/new_issue.tpl.text
---- eventum-20060720/templates/notifications/new_issue.tpl.text 2006-07-20 21:40:21.366703004 +0300
-+++ eventum-20060720.tpl/templates/notifications/new_issue.tpl.text 2006-07-20 21:40:07.026381143 +0300
-@@ -1,25 +1,25 @@
--{textformat style="email"}{t}This is an automated message sent at your request from{/t} {$app_title}.
-+{textformat style="email"}{t escape=no}This is an automated message sent at your request from{/t} {$app_title}.
-
--{t}A new issue was just created in the system.{/t}
-+{t escape=no}A new issue was just created in the system.{/t}
-
--{t}To view more details of this issue, or to update it, please visit the following URL{/t}:
-+{t escape=no}To view more details of this issue, or to update it, please visit the following URL{/t}:
- {$app_base_url}view.php?id={$data.iss_id}
- {/textformat}
-
- ----------------------------------------------------------------------
-- {t}ID{/t}: {$data.iss_id}
-- {t}Summary{/t}: {$data.iss_summary}
-- {t}Project{/t}: {$data.prj_title}
-- {t}Reported{/t} By: {$data.reporter}
-- {t}Assignment{/t}: {$data.assignments}
-- {t}Priority{/t}: {$data.pri_title}
-- {t}Description{/t}:
-+ {t escape=no}ID{/t}: {$data.iss_id}
-+ {t escape=no}Summary{/t}: {$data.iss_summary}
-+ {t escape=no}Project{/t}: {$data.prj_title}
-+ {t escape=no}Reported{/t} By: {$data.reporter}
-+ {t escape=no}Assignment{/t}: {$data.assignments}
-+ {t escape=no}Priority{/t}: {$data.pri_title}
-+ {t escape=no}Description{/t}:
- ----------------------------------------------------------------------
- {$data.iss_original_description}
- ----------------------------------------------------------------------
-
- {if $data.custom_fields|@count > 0}
--{t}Issue Details{/t}
-+{t escape=no}Issue Details{/t}
-
- ----------------------------------------------------------------------
- {section name="i" loop=$data.custom_fields}
-@@ -29,14 +29,14 @@
- {/if}
- {if $data.attachments|@count > 0}
-
--{t}Attachments{/t}
-+{t escape=no}Attachments{/t}
- ----------------------------------------------------------------------
- {section name="i" loop=$data.attachments}
-- {t}Files{/t}: {$data.attachments[i].files[0].iaf_filename}
-+ {t escape=no}Files{/t}: {$data.attachments[i].files[0].iaf_filename}
- {section name="files" loop=$data.attachments[i].files start=1}
- {$data.attachments[i].files[files].iaf_filename}
- {/section}
--{t}Description{/t}: {$data.attachments[i].iat_description}
-+{t escape=no}Description{/t}: {$data.attachments[i].iat_description}
- ----------------------------------------------------------------------
- {/section}
- {/if}
-diff -u -r eventum-20060720/templates/notifications/new_user.tpl.text eventum-20060720.tpl/templates/notifications/new_user.tpl.text
---- eventum-20060720/templates/notifications/new_user.tpl.text 2006-07-20 21:40:21.366703004 +0300
-+++ eventum-20060720.tpl/templates/notifications/new_user.tpl.text 2006-07-20 21:40:07.026381143 +0300
-@@ -1,13 +1,13 @@
--{t}A new user was just created for you in the system.{/t}
-+{t escape=no}A new user was just created for you in the system.{/t}
-
--{t}To start using the system, please load the URL below{/t}:
-+{t escape=no}To start using the system, please load the URL below{/t}:
- {$app_base_url}index.php
-
- ----------------------------------------------------------------------
-- {t}Full Name{/t}: {$user.usr_full_name}
-- {t}Email Address{/t}: {$user.usr_email}
-- {t}Password{/t}: {$user.usr_password}
--{t}Assigned Projects{/t}: {foreach from=$user.projects item=project name=project}
-+ {t escape=no}Full Name{/t}: {$user.usr_full_name}
-+ {t escape=no}Email Address{/t}: {$user.usr_email}
-+ {t escape=no}Password{/t}: {$user.usr_password}
-+{t escape=no}Assigned Projects{/t}: {foreach from=$user.projects item=project name=project}
- {if not $smarty.foreach.project.first} {/if}{$project.prj_title}: {$project.role}
- {/foreach}
- ----------------------------------------------------------------------
-diff -u -r eventum-20060720/templates/notifications/notes.tpl.text eventum-20060720.tpl/templates/notifications/notes.tpl.text
---- eventum-20060720/templates/notifications/notes.tpl.text 2006-07-20 21:40:21.366703004 +0300
-+++ eventum-20060720.tpl/templates/notifications/notes.tpl.text 2006-07-20 21:40:07.026381143 +0300
-@@ -2,22 +2,22 @@
-
-
- ----------------------------------------------------------------------
--{t}These are the current issue details{/t}:
-+{t escape=no}These are the current issue details{/t}:
- ----------------------------------------------------------------------
-- {t}ID{/t}: {$data.iss_id}
-- {t}Summary{/t}: {$data.iss_summary}
-- {t}Status{/t}: {$data.sta_title}
-- {t}Project{/t}: {$data.prj_title}
-- {t}Reported By{/t}: {$data.usr_full_name}
-- {t}Priority{/t}: {$data.pri_title}
-- {t}Description{/t}:
-+ {t escape=no}ID{/t}: {$data.iss_id}
-+ {t escape=no}Summary{/t}: {$data.iss_summary}
-+ {t escape=no}Status{/t}: {$data.sta_title}
-+ {t escape=no}Project{/t}: {$data.prj_title}
-+ {t escape=no}Reported By{/t}: {$data.usr_full_name}
-+ {t escape=no}Priority{/t}: {$data.pri_title}
-+ {t escape=no}Description{/t}:
- ----------------------------------------------------------------------
- {$data.iss_description}
- ----------------------------------------------------------------------
-
-
- {textformat style="email"}
--{t}To view more details of this issue, or to update it, please visit the following URL{/t}:
-+{t escape=no}To view more details of this issue, or to update it, please visit the following URL{/t}:
- {$app_base_url}view.php?id={$data.iss_id}
-
- {t name=$app_title}Please Note: If you do not wish to receive any future email notifications from %1, please change your account preferences by visiting the URL below{/t}:
-diff -u -r eventum-20060720/templates/notifications/updated.tpl.text eventum-20060720.tpl/templates/notifications/updated.tpl.text
---- eventum-20060720/templates/notifications/updated.tpl.text 2006-07-20 21:40:21.366703004 +0300
-+++ eventum-20060720.tpl/templates/notifications/updated.tpl.text 2006-07-20 21:40:07.026381143 +0300
-@@ -1,13 +1,13 @@
--{textformat style="email"}{t}This is an automated message sent at your request from{/t} {$app_title}.
-+{textformat style="email"}{t escape=no}This is an automated message sent at your request from{/t} {$app_title}.
-
--{t}To view more details of this issue, or to update it, please visit the following URL{/t}:
-+{t escape=no}To view more details of this issue, or to update it, please visit the following URL{/t}:
- {$app_base_url}view.php?id={$data.iss_id}
- {/textformat}
-
- ----------------------------------------------------------------------
-- {t}Issue #{/t}: {$data.iss_id}
-- {t}Summary{/t}: {$data.iss_summary}
-- {t}Changed Fields{/t}:
-+ {t escape=no}Issue #{/t}: {$data.iss_id}
-+ {t escape=no}Summary{/t}: {$data.iss_summary}
-+ {t escape=no}Changed Fields{/t}:
- ----------------------------------------------------------------------
- {$data.diffs}
- ----------------------------------------------------------------------
-diff -u -r eventum-20060720/templates/notifications/updated_account.tpl.text eventum-20060720.tpl/templates/notifications/updated_account.tpl.text
---- eventum-20060720/templates/notifications/updated_account.tpl.text 2006-07-20 21:40:21.366703004 +0300
-+++ eventum-20060720.tpl/templates/notifications/updated_account.tpl.text 2006-07-20 21:40:07.026381143 +0300
-@@ -1,11 +1,11 @@
- {t 1=$app_title}Your user account has been updated in %1{/t}.
-
--{t}Your account information as it now exists appears below.{/t}
-+{t escape=no}Your account information as it now exists appears below.{/t}
-
- ----------------------------------------------------------------------
-- {t}Full Name{/t}: {$user.usr_full_name}
-- {t}Email Address{/t}: {$user.usr_email}
--{t}Assigned Projects{/t}: {foreach from=$user.projects item=project name=project}
-+ {t escape=no}Full Name{/t}: {$user.usr_full_name}
-+ {t escape=no}Email Address{/t}: {$user.usr_email}
-+{t escape=no}Assigned Projects{/t}: {foreach from=$user.projects item=project name=project}
- {if not $smarty.foreach.project.first} {/if}{$project.prj_title}: {$project.role}
- {/foreach}
- ----------------------------------------------------------------------
-diff -u -r eventum-20060720/templates/notifications/updated_password.tpl.text eventum-20060720.tpl/templates/notifications/updated_password.tpl.text
---- eventum-20060720/templates/notifications/updated_password.tpl.text 2006-07-20 21:40:21.366703004 +0300
-+++ eventum-20060720.tpl/templates/notifications/updated_password.tpl.text 2006-07-20 21:40:07.026381143 +0300
-@@ -1,12 +1,12 @@
- {t name=$app_title}Your user account password has been updated in %1{/t}.
-
--{t}Your account information as it now exists appears below.{/t}
-+{t escape=no}Your account information as it now exists appears below.{/t}
-
- ----------------------------------------------------------------------
-- {t}Full Name{/t}: {$user.usr_full_name}
-- {t}Email Address{/t}: {$user.usr_email}
-- {t}Password{/t}: {$user.usr_password}
--{t}Assigned Projects{/t}: {foreach from=$user.projects item=project name=project}
-+ {t escape=no}Full Name{/t}: {$user.usr_full_name}
-+ {t escape=no}Email Address{/t}: {$user.usr_email}
-+ {t escape=no}Password{/t}: {$user.usr_password}
-+{t escape=no}Assigned Projects{/t}: {foreach from=$user.projects item=project name=project}
- {if not $smarty.foreach.project.first} {/if}{$project.prj_title}: {$project.role}
- {/foreach}
- ----------------------------------------------------------------------
-diff -u -r eventum-20060720/templates/reminders/alert_no_recipients.tpl.text eventum-20060720.tpl/templates/reminders/alert_no_recipients.tpl.text
---- eventum-20060720/templates/reminders/alert_no_recipients.tpl.text 2006-07-20 21:40:21.366703004 +0300
-+++ eventum-20060720.tpl/templates/reminders/alert_no_recipients.tpl.text 2006-07-20 21:40:07.026381143 +0300
-@@ -1,21 +1,21 @@
- {t name=$type}The following %1 reminder could not be sent out because no recipients could be found{/t}:
- ============================================================
-
--{t}Automated Issue{/t} #{$data.iss_id} {t}Reminder Alert{/t}!
-+{t escape=no}Automated Issue{/t} #{$data.iss_id} {t escape=no}Reminder Alert{/t}!
-
-- {t}URL{/t}: {$app_base_url}view.php?id={$data.iss_id}
-- {t}Summary{/t}: {$data.iss_summary}
-- {t}Assignment{/t}: {$data.assigned_users}
-+ {t escape=no}URL{/t}: {$app_base_url}view.php?id={$data.iss_id}
-+ {t escape=no}Summary{/t}: {$data.iss_summary}
-+ {t escape=no}Assignment{/t}: {$data.assigned_users}
- {if $has_customer_integration}
-- {t}Customer{/t}: {$data.customer_info.customer_name}
--{t}Support Level{/t}: {$data.customer_info.support_level}
-+ {t escape=no}Customer{/t}: {$data.customer_info.customer_name}
-+{t escape=no}Support Level{/t}: {$data.customer_info.support_level}
- {/if}
-
-- {t}Alert Reason{/t}:
-- {t}Triggered Reminder{/t} "{$reminder.rem_title}"
-- {t}Action{/t} "{$action.rma_title}"
-+ {t escape=no}Alert Reason{/t}:
-+ {t escape=no}Triggered Reminder{/t} "{$reminder.rem_title}"
-+ {t escape=no}Action{/t} "{$action.rma_title}"
-
-- {t}Alert Query{/t}:
-+ {t escape=no}Alert Query{/t}:
- {section name="i" loop=$conditions}
- {$conditions[i].rmf_title} - {$conditions[i].rmo_title} - {$conditions[i].rlc_value}
- {/section}
-diff -u -r eventum-20060720/templates/reminders/email_alert.tpl.text eventum-20060720.tpl/templates/reminders/email_alert.tpl.text
---- eventum-20060720/templates/reminders/email_alert.tpl.text 2006-07-20 21:40:21.366703004 +0300
-+++ eventum-20060720.tpl/templates/reminders/email_alert.tpl.text 2006-07-20 21:40:07.026381143 +0300
-@@ -1,18 +1,18 @@
- {t name=$data.iss_id}Automated Issue # %1 Reminder Alert{/t}!
-
-- {t}URL{/t}: {$app_base_url}view.php?id={$data.iss_id}
-- {t}Summary{/t}: {$data.iss_summary}
-- {t}Assignment{/t}: {$data.assigned_users}
-+ {t escape=no}URL{/t}: {$app_base_url}view.php?id={$data.iss_id}
-+ {t escape=no}Summary{/t}: {$data.iss_summary}
-+ {t escape=no}Assignment{/t}: {$data.assigned_users}
- {if $has_customer_integration}
-- {t}Customer{/t}: {$data.customer_info.customer_name}
--{t}Support Level{/t}: {$data.customer_info.support_level}
-+ {t escape=no}Customer{/t}: {$data.customer_info.customer_name}
-+{t escape=no}Support Level{/t}: {$data.customer_info.support_level}
- {/if}
-
-- {t}Alert Reason{/t}:
-- {t}Triggered Reminder{/t} "{$reminder.rem_title}"
-- {t}Action{/t} "{$action.rma_title}"
-+ {t escape=no}Alert Reason{/t}:
-+ {t escape=no}Triggered Reminder{/t} "{$reminder.rem_title}"
-+ {t escape=no}Action{/t} "{$action.rma_title}"
-
-- {t}Alert Query{/t}:
-+ {t escape=no}Alert Query{/t}:
- {section name="i" loop=$conditions}
- {$conditions[i].rmf_title} - {$conditions[i].rmo_title} - {$conditions[i].rlc_value}
- {/section}
+++ /dev/null
---- eventum-20060724/templates/tips/keyboard_shortcuts.tpl.html 2006-07-24 20:24:30.258322103 +0300
-+++ eventum-20060724.tpl/templates/tips/keyboard_shortcuts.tpl.html 2006-07-24 20:24:11.937912741 +0300
-@@ -1,9 +1,9 @@
-
--{t}You can switch to the 'Search' or 'Go' boxes quickly by using a
-+{t escape="none"}You can switch to the 'Search' or 'Go' boxes quickly by using a
- special shortcut keystroke in your keyboard.<br />
- <br />
- Use the following shortcuts:<br />
- <br />
- <b>ALT-3</b> (hold 'ALT' key and press '3' one time) - to access the 'Search' box<br />
- <br />
--<b>ALT-4</b> (hold 'ALT' key and press '4' one time) - to access the 'Go' box{/t}
-\ No newline at end of file
-+<b>ALT-4</b> (hold 'ALT' key and press '4' one time) - to access the 'Go' box{/t}
+++ /dev/null
---- eventum-20060725/templates/reports/stalled_issues.tpl.html~ 2006-07-25 09:17:46.807424824 +0300
-+++ eventum-20060725/templates/reports/stalled_issues.tpl.html 2006-07-25 10:31:06.316239320 +0300
-@@ -76,9 +76,9 @@
- <td rowspan="2" align="center" class="default_white">{t}Issue ID{/t}</td>
- <td rowspan="2" align="center" class="default_white">{t}Summary{/t}</td>
- <td rowspan="2" align="center" class="default_white">{t}Status{/t}</td>
-- <td rowspan="2" align="center" class="default_white">{t}Time Spent<{/t}/td>
-+ <td rowspan="2" align="center" class="default_white">{t}Time Spent{/t}</td>
- <td rowspan="2" align="center" class="default_white">{t}Created{/t}</td>
-- <td rowspan="2" align="center" class="default_white">{t}Last Response<{/t}/td>
-+ <td rowspan="2" align="center" class="default_white">{t}Last Response{/t}</td>
- <td colspan="2" align="center" class="default_white">{t}Days and Hours Since{/t}</td>
- </tr>
- <tr bgcolor="{$cell_color}">
+++ /dev/null
---- eventum/templates/add_phone_entry.tpl.html~ 2006-07-27 14:56:25.000000000 +0300
-+++ eventum/templates/add_phone_entry.tpl.html 2006-08-01 12:01:21.579170792 +0300
-@@ -1,4 +1,4 @@
--{capture name="extra_title" assign="extra_title"}{t}Issue{/t} #$issue_id - {t}Add Phone Entry{/t}{/capture}
-+{capture name="extra_title" assign="extra_title"}{t}Issue{/t} #{$issue_id} - {t}Add Phone Entry{/t}{/capture}
- {include file="header.tpl.html" extra_title=$extra_title}
-
- {if $add_phone_result != ''}
+++ /dev/null
---- eventum-20060725/templates/notifications/account_details.tpl.text 2006-08-03 03:34:29.098159073 +0300
-+++ eventum-20060725.tpl/templates/notifications/account_details.tpl.text 2006-08-03 03:36:47.981258519 +0300
-@@ -1,4 +1,4 @@
--{textformat style="email"}{t name=$app_title}This is an automated message sent at your request from %1.{/t}
-+{textformat style="email"}{t escape=no name=$app_title}This is an automated message sent at your request from %1.{/t}
-
- {t escape=no}Your full account information is available below.{/t}
- {/textformat}
---- eventum-20060725/templates/notifications/assigned.tpl.text 2006-08-03 03:34:29.098159073 +0300
-+++ eventum-20060725.tpl/templates/notifications/assigned.tpl.text 2006-08-03 03:36:47.981258519 +0300
-@@ -1,6 +1,6 @@
--{textformat style="email"}{t 1=$app_title}This is an automated message sent at your request from %1{/t}.
-+{textformat style="email"}{t escape=no 1=$app_title}This is an automated message sent at your request from %1{/t}.
-
--{t 1=$current_user}An issue was assigned to you by %1{/t}
-+{t escape=no 1=$current_user}An issue was assigned to you by %1{/t}
-
-
- {t escape=no}To view more details of this issue, or to update it, please visit the following URL{/t}:
-@@ -19,5 +19,5 @@
- ----------------------------------------------------------------------
-
- {textformat style="email"}
--{t 1=$app_title}Please Note: If you do not wish to receive any future email notifications from %1, please change your account preferences by visiting the URL below{/t}:
-+{t escape=no 1=$app_title}Please Note: If you do not wish to receive any future email notifications from %1, please change your account preferences by visiting the URL below{/t}:
- {$app_base_url}preferences.php{/textformat}
-\ No newline at end of file
---- eventum-20060725/templates/notifications/closed.tpl.text 2006-08-03 03:34:29.098159073 +0300
-+++ eventum-20060725.tpl/templates/notifications/closed.tpl.text 2006-08-03 03:36:47.981258519 +0300
-@@ -1,4 +1,4 @@
--{textformat style="email"}{t name=$app_title}This is an automated message sent at your request from %1.{/t}
-+{textformat style="email"}{t escape=no name=$app_title}This is an automated message sent at your request from %1.{/t}
-
- {t escape=no}This issue was just closed by{/t} {$data.closer_name}{if $data.reason != ''}
- {t escape=no}with the message{/t}: {$data.reason}{/if}.
-@@ -20,5 +20,5 @@
- ----------------------------------------------------------------------
-
- {textformat style="email"}
--{t name=$app_title}Please Note: If you do not wish to receive any future email notifications from %1, please change your account preferences by visiting the URL below{/t}:
-+{t escape=no name=$app_title}Please Note: If you do not wish to receive any future email notifications from %1, please change your account preferences by visiting the URL below{/t}:
- {$app_base_url}preferences.php{/textformat}
-\ No newline at end of file
---- eventum-20060725/templates/notifications/files.tpl.text 2006-08-03 03:34:29.098159073 +0300
-+++ eventum-20060725.tpl/templates/notifications/files.tpl.text 2006-08-03 03:36:47.981258519 +0300
-@@ -31,5 +31,5 @@
- ----------------------------------------------------------------------
-
- {textformat style="email"}
--{t 1=$app_title}Please Note: If you do not wish to receive any future email notifications from %1, please change your account preferences by visiting the URL below{/t}:
-+{t escape=no 1=$app_title}Please Note: If you do not wish to receive any future email notifications from %1, please change your account preferences by visiting the URL below{/t}:
- {$app_base_url}preferences.php{/textformat}
-\ No newline at end of file
---- eventum-20060725/templates/notifications/new.tpl.text 2006-08-03 03:34:29.098159073 +0300
-+++ eventum-20060725.tpl/templates/notifications/new.tpl.text 2006-08-03 03:36:47.981258519 +0300
-@@ -1,4 +1,4 @@
--{textformat style="email"}{t name=$app_title}This is an automated message sent at your request from %1{/t}.
-+{textformat style="email"}{t escape=no name=$app_title}This is an automated message sent at your request from %1{/t}.
-
- {t escape=no}A new issue was just created and assigned to you.{/t}
-
-@@ -17,7 +17,7 @@
- ----------------------------------------------------------------------
-
- {textformat style="email"}
--{t name=$app_title}Please Note: If you do not wish to receive any future email
-+{t escape=no name=$app_title}Please Note: If you do not wish to receive any future email
- notifications from %1, please change your account preferences by
- visiting the URL below{/t}:
- {$app_base_url}preferences.php{/textformat}
---- eventum-20060725/templates/notifications/new_auto_created_issue.tpl.text 2006-08-03 03:34:29.098159073 +0300
-+++ eventum-20060725.tpl/templates/notifications/new_auto_created_issue.tpl.text 2006-08-03 03:36:47.981258519 +0300
-@@ -3,7 +3,7 @@
- {t escape=no}Dear{/t} {$sender_name},
-
- {/if}
--{t name=$app_title}This is an automated message sent at your request from %1{/t}.
-+{t escape=no name=$app_title}This is an automated message sent at your request from %1{/t}.
-
- {t escape=no}We received a message from you and for your convenience, we created an issue that will be used by our staff to handle your message.{/t}
- {/textformat}
-@@ -25,7 +25,7 @@
-
- {if $sender_can_access == 1}
- {textformat style="email"}
--{t name=$app_title}Please Note: If you do not wish to receive any future email
-+{t escape=no name=$app_title}Please Note: If you do not wish to receive any future email
- notifications from %1, please change your account preferences by
- visiting the URL below{/t}:
- {$app_base_url}preferences.php
---- eventum-20060725/templates/notifications/new_issue.tpl.text 2006-08-03 03:34:29.098159073 +0300
-+++ eventum-20060725.tpl/templates/notifications/new_issue.tpl.text 2006-08-03 03:36:47.981258519 +0300
-@@ -42,5 +42,5 @@
- {/if}
-
- {textformat style="email"}
--{t 1=$app_title}Please Note: If you do not wish to receive any future email notifications from %1, please change your account preferences by visiting the URL below{/t}:
-+{t escape=no 1=$app_title}Please Note: If you do not wish to receive any future email notifications from %1, please change your account preferences by visiting the URL below{/t}:
- {$app_base_url}preferences.php{/textformat}
-\ No newline at end of file
---- eventum-20060725/templates/notifications/notes.tpl.text 2006-08-03 03:34:29.098159073 +0300
-+++ eventum-20060725.tpl/templates/notifications/notes.tpl.text 2006-08-03 03:36:47.981258519 +0300
-@@ -20,5 +20,5 @@
- {t escape=no}To view more details of this issue, or to update it, please visit the following URL{/t}:
- {$app_base_url}view.php?id={$data.iss_id}
-
--{t name=$app_title}Please Note: If you do not wish to receive any future email notifications from %1, please change your account preferences by visiting the URL below{/t}:
-+{t escape=no name=$app_title}Please Note: If you do not wish to receive any future email notifications from %1, please change your account preferences by visiting the URL below{/t}:
- {$app_base_url}preferences.php{/textformat}
-\ No newline at end of file
---- eventum-20060725/templates/notifications/updated.tpl.text 2006-08-03 03:34:29.098159073 +0300
-+++ eventum-20060725.tpl/templates/notifications/updated.tpl.text 2006-08-03 03:36:47.981258519 +0300
-@@ -13,5 +13,5 @@
- ----------------------------------------------------------------------
-
- {textformat style="email"}
--{t 1=$app_title}Please Note: If you do not wish to receive any future email notifications from %1, please change your account preferences by visiting the URL below{/t}:
-+{t escape=no 1=$app_title}Please Note: If you do not wish to receive any future email notifications from %1, please change your account preferences by visiting the URL below{/t}:
- {$app_base_url}preferences.php{/textformat}
-\ No newline at end of file
---- eventum-20060725/templates/notifications/updated_account.tpl.text 2006-08-03 03:34:29.098159073 +0300
-+++ eventum-20060725.tpl/templates/notifications/updated_account.tpl.text 2006-08-03 03:36:47.981258519 +0300
-@@ -1,4 +1,4 @@
--{t 1=$app_title}Your user account has been updated in %1{/t}.
-+{t escape=no 1=$app_title}Your user account has been updated in %1{/t}.
-
- {t escape=no}Your account information as it now exists appears below.{/t}
-
---- eventum-20060725/templates/notifications/updated_password.tpl.text 2006-08-03 03:34:29.098159073 +0300
-+++ eventum-20060725.tpl/templates/notifications/updated_password.tpl.text 2006-08-03 03:36:47.981258519 +0300
-@@ -1,4 +1,4 @@
--{t name=$app_title}Your user account password has been updated in %1{/t}.
-+{t escape=no name=$app_title}Your user account password has been updated in %1{/t}.
-
- {t escape=no}Your account information as it now exists appears below.{/t}
-
+++ /dev/null
-let tabs show out visually in email headers
-
---- eventum-20060725/templates/view_headers.tpl.html 2006-07-26 14:23:44.084529706 +0300
-+++ /home/glen/view_headers.tpl.html 2006-07-27 14:54:05.000000000 +0300
-@@ -17,7 +17,7 @@
- </tr>
- <tr>
- <td bgcolor="{$light_color}" class="default">
-- {$headers|escape:"html"|nl2br}
-+ {$headers|escape:"html"|replace:"\t":" "|nl2br}
- </td>
- </tr>
- <tr>
+++ /dev/null
-show xml files inline (in browser instead of downloading)
-
---- eventum-1.7.1/include/class.attachment.php 2006-04-17 15:44:59.762227553 +0300
-+++ /tmp/class.attachment.php 2006-04-17 16:18:43.737508323 +0300
-@@ -103,7 +103,8 @@
- 'png',
- 'bmp',
- 'html',
-- 'htm'
-+ 'htm',
-+ 'xml',
- );
- }
-
+++ /dev/null
---- eventum-20060720/templates/header.tpl.html 2006-07-24 16:01:01.715185682 +0300
-+++ /home/glen/header.tpl.html 2006-07-24 15:59:28.000000000 +0300
-@@ -1,6 +1,6 @@
- <html>
- <head>
--<title>{if $extra_title != ""}{$extra_title} - {/if}{$app_setup.tool_caption|default:$application_title}</title>
-+<title>{if $extra_title != ""}{$extra_title|escape:"html"} - {/if}{$app_setup.tool_caption|default:$application_title|escape:"html"}</title>
- <link rel="stylesheet" href="{$rel_url}css/dynCalendar.css" type="text/css" media="screen">
- <link rel="icon" href="favicon.ico" />
- {if $user_agent == 'ie'}
+++ /dev/null
---- /dev/null 2006-03-28 14:00:37.387408000 +0300
-+++ eventum-20060717/misc/upgrade/v1.7.1_to_v2.0/index.html 2006-07-18 00:54:31.875309544 +0300
-@@ -0,0 +1,15 @@
-+<html>
-+<head>
-+<title>Eventum - Upgrade to 2.0 from 1.7.1</title>
-+</head>
-+<body>
-+Please take the following steps to upgrade to Eventum 2.0 from 1.7.1.<br />
-+
-+<a href="database_changes.php">Perform database changes</a>.<br />
-+
-+<a href="upgrade_config.php">Upgrade the configuration file</a>.<br />
-+
-+<a href="../flush_compiled_templates.php">Flush compiled templates</a>.<br />
-+
-+</body>
-+</html>
---- /dev/null 2006-03-28 14:00:37.387408000 +0300
-+++ eventum-20060717/misc/upgrade/v1.7.1_to_v2.0/upgrade_config.php 2006-07-18 00:52:13.012203723 +0300
-@@ -0,0 +1,50 @@
-+<?php
-+// upgrade the config.inc.php file
-+
-+include_once("../../../config.inc.php");
-+
-+// make backup copy
-+$backup_file = APP_PATH . "config.inc.pre_2_0.php";
-+if (copy(APP_PATH . "config.inc.php", $backup_file) == false) {
-+ echo "Unable to create backup copy of config.inc.php. Please check your base directory is writeable and try again.";
-+ exit(1);
-+}
-+
-+$config_contents = implode("", file(APP_PATH . "setup/config.inc.php"));
-+$config_backup = $config_contents;
-+$config_contents = str_replace("%{APP_PATH}%", APP_PATH, $config_contents);
-+$config_contents = str_replace("%{APP_SQL_DBHOST}%", APP_SQL_DBHOST, $config_contents);
-+$config_contents = str_replace("%{APP_SQL_DBNAME}%", APP_SQL_DBNAME, $config_contents);
-+$config_contents = str_replace("%{APP_SQL_DBUSER}%", APP_SQL_DBUSER, $config_contents);
-+$config_contents = str_replace("%{APP_SQL_DBPASS}%", APP_SQL_DBPASS, $config_contents);
-+$config_contents = str_replace("%{APP_TABLE_PREFIX}%", APP_TABLE_PREFIX, $config_contents);
-+$config_contents = str_replace("%{APP_HOSTNAME}%", APP_HOSTNAME, $config_contents);
-+$config_contents = str_replace("%{APP_RELATIVE_URL}%", APP_RELATIVE_URL, $config_contents);
-+if (APP_ENABLE_FULLTEXT == true) {
-+ $fulltext = 'true';
-+} else {
-+ $fulltext = 'false';
-+}
-+$config_contents = str_replace("'%{APP_ENABLE_FULLTEXT}%'", $fulltext, $config_contents);
-+$config_contents = str_replace("%{APP_VERSION}%", "2.0", $config_contents);
-+if (stristr(APP_BASE_URL, 'https://') !== false) {
-+ $protocol_type = 'https://';
-+} else {
-+ $protocol_type = 'http://';
-+}
-+
-+$config_contents = str_replace("%{PROTOCOL_TYPE}%", $protocol_type, $config_contents);
-+$fp = fopen(APP_PATH . 'config.inc.php', 'w');
-+if ($fp === FALSE) {
-+ echo "Could not open the file 'config.inc.php' for writing. The permissions on the file should be set as to allow the user that the web server runs as to open it. Please correct this problem and try again.";
-+ exit(1);
-+}
-+$res = fwrite($fp, $config_contents);
-+if ($fp === FALSE) {
-+ echo "Could not write the configuration information to 'config.inc.php'. The file should be writable by the user that the web server runs as. Please correct this problem and try again.";
-+ exit(1);
-+}
-+fclose($fp);
-+?>
-+Done. Your configuration file (config.inc.php) has been upgraded to version 2.0.<br />
-+A backup copy has been made in the file <i>'<?php echo $backup_file; ?>'</i>.
---- /dev/null 2006-03-28 14:00:37.387408000 +0300
-+++ eventum-20060717/misc/upgrade/v1.7.1_to_v2.0/database_changes.php 2006-07-18 00:50:46.760275066 +0300
-@@ -0,0 +1,19 @@
-+<?php
-+include_once("../../../config.inc.php");
-+include_once(APP_INC_PATH . "db_access.php");
-+
-+$stmts = array();
-+
-+$stmts[] = "ALTER TABLE eventum_support_email CHANGE COLUMN sup_to sup_to tinytext;";
-+$stmts[] = "ALTER TABLE eventum_support_email CHANGE COLUMN sup_cc sup_cc tinytext;";
-+
-+foreach ($stmts as $stmt) {
-+ $stmt = str_replace('eventum_', APP_TABLE_PREFIX, $stmt);
-+ $res = $GLOBALS["db_api"]->dbh->query($stmt);
-+ if (PEAR::isError($res)) {
-+ echo "<pre>";var_dump($res);echo "</pre>";
-+ exit(1);
-+ }
-+}
-+?>
-+done