Source for file printer_friendly_bottom.php

Documentation is available at printer_friendly_bottom.php

  1. <?php
  2.  
  3. /**
  4.  * printer_friendly_bottom.php
  5.  *
  6.  * with javascript on, it is the bottom frame of printer_friendly_main.php
  7.  * else, it is alone in a new window
  8.  *
  9.  * - this is the page that does all the work, really.
  10.  *
  11.  * @copyright &copy; 1999-2006 The SquirrelMail Project Team
  12.  * @license http://opensource.org/licenses/gpl-license.php GNU Public License
  13.  * @version $Id: printer_friendly_bottom.php,v 1.59 2006/08/05 14:39:15 kink Exp $
  14.  * @package squirrelmail
  15.  */
  16.  
  17. /**
  18.  * Include the SquirrelMail initialization file.
  19.  */
  20. require('../include/init.php');
  21.  
  22. /* SquirrelMail required files. */
  23. require_once(SM_PATH 'functions/imap_general.php');
  24. require_once(SM_PATH 'functions/imap_messages.php');
  25. require_once(SM_PATH 'functions/date.php');
  26. require_once(SM_PATH 'functions/mime.php');
  27. require_once(SM_PATH 'functions/url_parser.php');
  28.  
  29. /* get some of these globals */
  30. sqgetGlobalVar('passed_id'$passed_idSQ_GET);
  31. sqgetGlobalVar('mailbox'$mailboxSQ_GET);
  32.  
  33. if (sqgetGlobalVar('passed_ent_id'$passed_ent_idSQ_GET) ) {
  34.     $passed_ent_id '';
  35. }
  36. sqgetGlobalVar('show_html_default'$show_html_defaultSQ_FORM);
  37. /* end globals */
  38.  
  39. $imapConnection sqimap_login($usernamefalse$imapServerAddress$imapPort0);
  40. $mbx_response sqimap_mailbox_select($imapConnection$mailbox);
  41. if (isset($messages[$mbx_response['UIDVALIDITY']][$passed_id])) {
  42.     $message $messages[$mbx_response['UIDVALIDITY']][$passed_id];
  43. else {
  44.     $message sqimap_get_message($imapConnection$passed_id$mailbox);
  45. }
  46. if ($passed_ent_id{
  47.     $message $message->getEntity($passed_ent_id);
  48. }
  49.  
  50. /* --start display setup-- */
  51.  
  52. $rfc822_header $message->rfc822_header;
  53. /* From and Date are usually fine as they are... */
  54. $from $rfc822_header->getAddr_s('from');
  55. $date getLongDateString($rfc822_header->date);
  56. $subject trim($rfc822_header->subject);
  57.  
  58. /* we can clean these up if the list is too long... */
  59. $cc $rfc822_header->getAddr_s('cc');
  60. $to $rfc822_header->getAddr_s('to');
  61.  
  62. if ($show_html_default == 1{
  63.     $ent_ar $message->findDisplayEntity(array());
  64. else {
  65.     $ent_ar $message->findDisplayEntity(array()array('text/plain'));
  66. }
  67. $body '';
  68. if ($ent_ar[0!= ''{
  69.   for ($i 0$i count($ent_ar)$i++{
  70.      $body .= formatBody($imapConnection$message$color$wrap_at$ent_ar[$i]$passed_id$mailboxTRUE);
  71.      $body .= '<hr style="height: 1px;" />';
  72.   }
  73.   $hookResults do_hook('message_body'$body);
  74.   $body $hookResults[1];
  75. else {
  76.   $body _("Message not printable");
  77. }
  78.  
  79. /* now we clean up the display a bit... */
  80.  
  81. $num_leading_spaces 9// nine leading spaces for indentation
  82.  
  83. // sometimes I see ',,' instead of ',' separating addresses *shrug*
  84. $cc pf_clean_string(str_replace(',,'','$cc)$num_leading_spaces);
  85. $to pf_clean_string(str_replace(',,'','$to)$num_leading_spaces);
  86.  
  87. // clean up everything else...
  88. $subject pf_clean_string($subject$num_leading_spaces);
  89. $from pf_clean_string($from$num_leading_spaces);
  90. $date pf_clean_string($date$num_leading_spaces);
  91.  
  92. // end cleanup
  93.  
  94. $to decodeHeader($to);
  95. $cc decodeHeader($cc);
  96. $from decodeHeader($from);
  97. $subject decodeHeader($subject);
  98.  
  99. $attachments pf_show_attachments($message,$ent_ar,$mailbox,$passed_id);
  100.  
  101. // --end display setup--
  102.  
  103.  
  104. /* --start browser output-- */
  105. displayHtmlHeader$subject''FALSE );
  106.  
  107. echo '<body text="#000000" bgcolor="#FFFFFF" link="#000000" vlink="#000000" alink="#000000">'."\n" .
  108.      /* headers (we use table because translations are not all the same width) */
  109.      html_tag'table''''center''''cellspacing="0" cellpadding="0" border="0" width="100%"' .
  110.      html_tag'tr',
  111.          html_tag'td''<b>'._("From").':</b>&nbsp;''left' ,'','valign="top"'.
  112.          html_tag'td'$from'left' )
  113.      "\n" .
  114.      html_tag'tr',
  115.          html_tag'td''<b>'._("Subject").':</b>&nbsp;''left','','valign="top"' .
  116.          html_tag'td'$subject'left' )
  117.      "\n" .
  118.      html_tag'tr',
  119.          html_tag'td''<b>'._("Date").':</b>&nbsp;''left' .
  120.          html_tag'td'htmlspecialchars($date)'left' )
  121.      "\n" .
  122.      html_tag'tr',
  123.          html_tag'td''<b>'._("To").':</b>&nbsp;''left','','valign="top"' .
  124.          html_tag'td'$to'left' )
  125.     "\n";
  126.     if strlen($cc/* only show Cc: if it's there... */
  127.          echo html_tag'tr',
  128.              html_tag'td''<b>'._("Cc").':</b>&nbsp;''left','','valign="top"' .
  129.              html_tag'td'$cc'left' )
  130.          );
  131.      }
  132.      /* body */
  133.      echo html_tag'tr',
  134.          html_tag'td''<hr style="height: 1px;" /><br />' "\n" $body'left''''colspan="2"' )
  135.      "\n" ;
  136.  
  137.      if (empty($attachments)) {
  138.          // attachments title
  139.                   echo html_tag'tr',
  140.              html_tag'td','<b>'._("Attachments:").'</b>''left''''colspan="2"' )
  141.          "\n" ;
  142.          // list of attachments
  143.                   echo html_tag'tr',
  144.              html_tag'td',$attachments'left''''colspan="2"' )
  145.          "\n" ;
  146.          // add separator line
  147.                   echo html_tag'tr',
  148.              html_tag'td''<hr style="height: 1px;" />''left''''colspan="2"' )
  149.          "\n" ;
  150.      }
  151.  
  152.      echo '</table>' "\n";
  153. $oTemplate->display('footer.tpl');
  154.  
  155. /* --end browser output-- */
  156.  
  157.  
  158. /* --start pf-specific functions-- */
  159.  
  160. /**
  161.  * Function should clean layout of printed messages when user
  162.  * enables "Printer Friendly Clean Display" option.
  163.  * For example: $string = pf_clean_string($string, 9);
  164.  *
  165.  * @param string unclean_string
  166.  * @param integer num_leading_spaces
  167.  * @return string 
  168.  * @access private
  169.  */
  170. function pf_clean_string $unclean_string$num_leading_spaces {
  171.     global $data_dir$username;
  172.     $unclean_string str_replace('&nbsp;',' ',$unclean_string);
  173.     $wrap_at getPref($data_dir$username'wrap_at'86);
  174.     $wrap_at $wrap_at $num_leading_spaces/* header stuff */
  175.  
  176.     $leading_spaces '';
  177.     while strlen($leading_spaces$num_leading_spaces )
  178.         $leading_spaces .= ' ';
  179.  
  180.     $clean_string '';
  181.     while strlen($unclean_string$wrap_at )
  182.     {
  183.         $this_line substr($unclean_string0$wrap_at);
  184.         if strrpos$this_line"\n" ) ) /* this should NEVER happen with anything but the $body */
  185.         {
  186.             $clean_string .= substr$this_line0strrpos$this_line"\n" ));
  187.             $clean_string .= $leading_spaces;
  188.             $unclean_string substr($unclean_stringstrrpos$this_line"\n" ));
  189.         }
  190.         else
  191.         {
  192.             $i strrpos$this_line' ');
  193.             $clean_string .= substr$this_line0$i);
  194.             $clean_string .= "\n" $leading_spaces;
  195.             $unclean_string substr($unclean_string1+$i);
  196.         }
  197.     }
  198.     $clean_string .= $unclean_string;
  199.  
  200.     return $clean_string;
  201. /* end pf_clean_string() function */
  202.  
  203. /**
  204.  * Displays attachment information
  205.  *
  206.  * Stripped version of formatAttachments() function from functions/mime.php.
  207.  * @param object $message SquirrelMail message object
  208.  * @param array $exclude_id message parts that are not attachments.
  209.  * @param string $mailbox mailbox name
  210.  * @param integer $id message id
  211.  * @return string html formated attachment information.
  212.  */
  213. function pf_show_attachments($message$exclude_id$mailbox$id{
  214.     global $where$what$startMessage$color$passed_ent_id;
  215.  
  216.     $att_ar $message->getAttachments($exclude_id);
  217.  
  218.     if (!count($att_ar)) return '';
  219.  
  220.     $attachments '';
  221.  
  222.     $urlMailbox urlencode($mailbox);
  223.  
  224.     foreach ($att_ar as $att{
  225.         $ent $att->entity_id;
  226.         $header $att->header;
  227.         $type0 strtolower($header->type0);
  228.         $type1 strtolower($header->type1);
  229.         $name '';
  230.  
  231.         if ($type0 =='message' && $type1 == 'rfc822'{
  232.             $rfc822_header $att->rfc822_header;
  233.             $filename $rfc822_header->subject;
  234.             if (trim$filename == ''{
  235.                 $filename 'untitled-[' $ent ']' ;
  236.             }
  237.             $from_o $rfc822_header->from;
  238.             if (is_object($from_o)) {
  239.                 $from_name decodeHeader($from_o->getAddress(true));
  240.             else {
  241.                 $from_name _("Unknown sender");
  242.             }
  243.             $description '<tr>'.
  244.                 html_tag'td',_("From:")'right'.
  245.                 html_tag'td',$from_name'left'.
  246.                 '</tr>';
  247.         else {
  248.             $filename $att->getFilename();
  249.             if ($header->description{
  250.                 $description '<tr>'.
  251.                     html_tag'td',_("Info:")'right'.
  252.                     html_tag'td',decodeHeader($header->description)'left'.
  253.                     '</tr>';
  254.             else {
  255.                 $description '';
  256.             }
  257.         }
  258.  
  259.         $display_filename $filename;
  260.  
  261.         // TODO: maybe make it nicer?
  262.         $attachments .= '<table cellpadding="1" cellspacing="0" width="100%" border="1"><tr><th colspan="2">'.decodeHeader($display_filename).'</th></tr>' .
  263.             '<tr>'.
  264.             html_tag'td',_("Size:")'right''''width="25%"'.
  265.             html_tag'td',show_readable_size($header->size)'left''''width="75%"'.
  266.             '</tr><tr>' "\n" .
  267.             html_tag'td',_("Type:")'right''''width="25%"'.
  268.             html_tag'td',htmlspecialchars($type0).'/'.htmlspecialchars($type1)'left''''width="75%"'.
  269.             '</tr>';
  270.         if (empty($description)) {
  271.             $attachments .= $description;
  272.         }
  273.         $attachments .= "</table>\n";
  274.     }
  275.     return $attachments;
  276. }
  277.  
  278.  
  279. /* --end pf-specific functions */
  280.  
  281. ?>

Documentation generated on Sat, 07 Oct 2006 16:13:07 +0300 by phpDocumentor 1.3.0RC6