thomascube
2006-05-18 cead5c727147faac362e742aa7bcecf07f68cd99
program/steps/mail/compose.inc
@@ -59,7 +59,7 @@
    $REPLY_MESSAGE = &$MESSAGE;
    $_SESSION['compose']['reply_uid'] = $_GET['_reply_uid'];
    $_SESSION['compose']['reply_msgid'] = $REPLY_MESSAGE['headers']->messageID;
    $_SESSION['compose']['reference']   = $REPLY_MESSAGE['headers']->reference;
    $_SESSION['compose']['references']  = $REPLY_MESSAGE['headers']->reference;
    $_SESSION['compose']['references'] .= !empty($REPLY_MESSAGE['headers']->reference) ? ' ' : '';
    $_SESSION['compose']['references'] .= $REPLY_MESSAGE['headers']->messageID;
@@ -98,7 +98,7 @@
      $header = 'to';
      // we have contact id's as get parameters
      if (!empty($_GET['_to']) && preg_match('/^([0-9]+,?)+$/', $_GET['_to']))
      if (!empty($_GET['_to']) && preg_match('/^[0-9]+(,[0-9]+)*$/', $_GET['_to']))
        {
        $a_recipients = array();
        $sql_result = $DB->query("SELECT name, email
@@ -142,7 +142,7 @@
    
  if ($fname && !empty($_POST[$fname]))
    $fvalue = $_POST[$fname];
    $fvalue = get_input_value($fname, RCUBE_INPUT_POST, TRUE);
  else if ($header && is_object($REPLY_MESSAGE['headers']))
    {
    // get recipent address(es) out of the message headers
@@ -297,10 +297,13 @@
function rcmail_compose_body($attrib)
  {
  global $CONFIG, $REPLY_MESSAGE, $FORWARD_MESSAGE;
  global $CONFIG, $OUTPUT, $REPLY_MESSAGE, $FORWARD_MESSAGE;
  
  list($form_start, $form_end) = get_form_tags($attrib);
  unset($attrib['form']);
  if (empty($attrib['id']))
    $attrib['id'] = 'rcmComposeMessage';
  
  $attrib['name'] = '_message';
  $textarea = new textarea($attrib);
@@ -309,7 +312,7 @@
  
  // use posted message body
  if (!empty($_POST['_message']))
    $body = stripslashes($_POST['_message']);
    $body = get_input_value('_message', RCUBE_INPUT_POST, TRUE);
    
  // compose reply-body
  else if (is_array($REPLY_MESSAGE['parts']))
@@ -330,7 +333,15 @@
  $out = $form_start ? "$form_start\n" : '';
  $out .= $textarea->show($body);
  $out .= $form_end ? "\n$form_end" : '';
  // include GoogieSpell
  $OUTPUT->include_script('googiespell.js');
  $OUTPUT->add_script(sprintf("var googie1 = new GoogieSpell('\$__skin_path/images/googiespell/','%s&_action=spell&lang=');\n".
                              "googie1.decorateTextarea('%s');",
                              $GLOBALS['COMM_PATH'],
                              $attrib['id']), 'foot');
  return $out;
  }
@@ -396,19 +407,31 @@
  
    foreach ($FORWARD_MESSAGE['parts'] as $part)
      {
      if ($part->disposition != 'attachment')
        continue;
      if ($part->disposition=='attachment' || $part->disposition=='inline' || $part->headers['content-id'] ||
               (empty($part->disposition) && ($part->d_parameters['filename'] || $part->ctype_parameters['name'])))
   {
        $tmp_path = tempnam($temp_dir, 'rcmAttmnt');
        if ($fp = fopen($tmp_path, 'w'))
          {
          fwrite($fp, $IMAP->mime_decode($part->body, $part->headers['content-transfer-encoding']));
          fclose($fp);
      $tmp_path = tempnam($temp_dir, 'rcmAttmnt');
      if ($fp = fopen($tmp_path, 'w'))
        {
        fwrite($fp, $IMAP->mime_decode($part->body, $part->headers['content-transfer-encoding']));
        fclose($fp);
        $_SESSION['compose']['attachments'][] = array('name' => $part->d_parameters['filename'],
                                                      'mimetype' => $part->ctype_primary . '/' . $part->ctype_secondary,
                                                      'path' => $tmp_path);
        }
          if ($part->d_parameters['filename'])
            $_SESSION['compose']['attachments'][] = array('name' => $part->d_parameters['filename'],
                                                          'mimetype' => $part->ctype_primary . '/' . $part->ctype_secondary,
                                                          'path' => $tmp_path);
          else if ($part->ctype_parameters['name'])
       $_SESSION['compose']['attachments'][] = array('name' => $part->ctype_parameters['name'],
                                                          'mimetype' => $part->ctype_primary . '/' . $part->ctype_secondary,
                                                          'path' => $tmp_path);
          else if ($part->headers['content-description'])
       $_SESSION['compose']['attachments'][] = array('name' => $part->headers['content-description'],
                                                          'mimetype' => $part->ctype_primary . '/' . $part->ctype_secondary,
                                                          'path' => $tmp_path);
          }
   }
      }
    $_SESSION['compose']['forward_attachments'] = TRUE;
@@ -433,7 +456,7 @@
  // use subject from post
  if (isset($_POST['_subject']))
    $subject = stripslashes($_POST['_subject']);
    $subject = get_input_value('_subject', RCUBE_INPUT_POST, TRUE);
    
  // create a reply-subject
  else if (isset($REPLY_MESSAGE['subject']))
@@ -555,6 +578,22 @@
  }
function rcmail_receipt_checkbox($attrib)
  {
  list($form_start, $form_end) = get_form_tags($attrib);
  unset($attrib['form']);
  $attrib['name'] = '_receipt';
  $checkbox = new checkbox(array('name' => '_receipt', 'id' => 'receipt', 'value' => 1));
  $out = $form_start ? "$form_start\n" : '';
  $out .= $checkbox->show(0);
  $out .= $form_end ? "\n$form_end" : '';
  return $out;
  }
function get_form_tags($attrib)
  {
  global $CONFIG, $OUTPUT, $JS_OBJECT_NAME, $MESSAGE_FORM, $SESS_HIDDEN_FIELD;