Source for file html.php

Documentation is available at html.php

  1. <?php
  2.  
  3. /**
  4.  * html.php
  5.  *
  6.  * The idea is to inlcude here some functions to make easier
  7.  * the right to left implementation by "functionize" some
  8.  * html outputs.
  9.  *
  10.  * @copyright &copy; 1999-2006 The SquirrelMail Project Team
  11.  * @license http://opensource.org/licenses/gpl-license.php GNU Public License
  12.  * @version $Id: html.php,v 1.14.2.8 2006/04/14 22:27:07 jervfors Exp $
  13.  * @package squirrelmail
  14.  * @since 1.3.0
  15.  */
  16.  
  17. /**
  18.  * Generate html tags
  19.  *
  20.  * @param string $tag Tag to output
  21.  * @param string $val Value between tags
  22.  * @param string $align Alignment (left, center, etc)
  23.  * @param string $bgcolor Back color in hexadecimal
  24.  * @param string $xtra Extra options
  25.  * @return string HTML ready for output
  26.  */
  27. function html_tag( $tag,                // Tag to output
  28.                                               $val = '',           // Value between tags
  29.                                               $align = '',         // Alignment
  30.                                               $bgcolor = '',       // Back color
  31.                                               $xtra = '' ) {       // Extra options
  32.  
  33.         GLOBAL $languages, $squirrelmail_language;
  34.  
  35.         $align = strtolower( $align );
  36.         $bgc = '';
  37.         $tag = strtolower( $tag );
  38.  
  39.         if ( isset( $languages[$squirrelmail_language]['DIR']) ) {
  40.             $dir = $languages[$squirrelmail_language]['DIR'];
  41.         } else {
  42.             $dir = 'ltr';
  43.         }
  44.  
  45.         if ( $dir == 'ltr' ) {
  46.             $rgt = 'right';
  47.             $lft = 'left';
  48.         } else {
  49.             $rgt = 'left';
  50.             $lft = 'right';
  51.         }
  52.  
  53.         if ( $bgcolor <> '' ) {
  54.             $bgc = " bgcolor=\"$bgcolor\"";
  55.         }
  56.  
  57.         switch ( $align ) {
  58.             case '':
  59.                 $alg = '';
  60.                 break;
  61.             case 'right':
  62.                 $alg = " align=\"$rgt\"";
  63.                 break;
  64.             case 'left':
  65.                 $alg = " align=\"$lft\"";
  66.                 break;
  67.             default:
  68.                 $alg = " align=\"$align\"";
  69.                 break;
  70.         }
  71.  
  72.         $ret = "<$tag";
  73.  
  74.         if ( $dir <> 'ltr' ) {
  75.             $ret .= " dir=\"$dir\"";
  76.         }
  77.         $ret .= $bgc . $alg;
  78.  
  79.         if ( $xtra <> '' ) {
  80.             $ret .= " $xtra";
  81.         }
  82.  
  83.         if ( $val <> '' ) {
  84.             $ret .= ">$val</$tag>\n";
  85.         } else {
  86.             $ret .= '>' . "\n";
  87.         }
  88.  
  89.         return( $ret );
  90.     }
  91.  
  92.     /* handy function to set url vars */
  93.     /* especially usefull when $url = $PHP_SELF */
  94.     function set_url_var($url, $var, $val=0, $link=true) {
  95.         $k = '';
  96.         $ret = '';
  97.         $pat_a = array (
  98.                        '/.+(\\&'.$var.')=(.*)\\&/AU',   /* in the middle */
  99.                        '/.+\\?('.$var.')=(.*\\&).+/AU', /* at front, more follow */
  100.                        '/.+(\\?'.$var.')=(.*)$/AU',     /* at front and only var */
  101.                        '/.+(\\&'.$var.')=(.*)$/AU'      /* at the end */
  102.                      );
  103.     preg_replace('/&amp;/','&',$url);
  104.         switch (true) {
  105.             case (preg_match($pat_a[0],$url,$regs)):
  106.                 $k = $regs[1];
  107.                 $v = $regs[2];
  108.                 break;
  109.             case (preg_match($pat_a[1],$url,$regs)):
  110.                 $k = $regs[1];
  111.                 $v = $regs[2];
  112.                 break;
  113.             case (preg_match($pat_a[2],$url,$regs)):
  114.                 $k = $regs[1];
  115.                 $v = $regs[2];
  116.                 break;
  117.             case (preg_match($pat_a[3],$url,$regs)):
  118.                 $k = $regs[1];
  119.                 $v = $regs[2];
  120.                 break;
  121.             default:
  122.                 if ($val) {
  123.                     if (strpos($url,'?')) {
  124.                         $url .= "&$var=$val";
  125.                     } else {
  126.                         $url .= "?$var=$val";
  127.                     }
  128.                 }
  129.                 break;
  130.         }
  131.  
  132.         if ($k) {
  133.             if ($val) {
  134.                 $rpl = "$k=$val";
  135.         if ($link) {
  136.             $rpl = preg_replace('/&/','&amp;',$rpl);
  137.         }
  138.             } else {
  139.                 $rpl = '';
  140.             }
  141.             if( substr($v,-1)=='&' ) {
  142.                 $rpl .= '&';
  143.             }
  144.             $pat = "/$k=$v/";
  145.             $url = preg_replace($pat,$rpl,$url);
  146.         }
  147.         return $url;
  148.     }
  149.  
  150.     /* Temporary test function to proces template vars with formatting.
  151.      * I use it for viewing the message_header (view_header.php) with
  152.      * a sort of template.
  153.      */
  154.     function echo_template_var($var, $format_ar = array() ) {
  155.         $frm_last = count($format_ar) -1;
  156.  
  157.         if (isset($format_ar[0])) echo $format_ar[0];
  158.             $i = 1;
  159.  
  160.         switch (true) {
  161.             case (is_string($var)):
  162.                 echo $var;
  163.                 break;
  164.             case (is_array($var)):
  165.                 $frm_a = array_slice($format_ar,1,$frm_last-1);
  166.                 foreach ($var as $a_el) {
  167.                     if (is_array($a_el)) {
  168.                         echo_template_var($a_el,$frm_a);
  169.                     } else {
  170.                         echo $a_el;
  171.                         if (isset($format_ar[$i])) {
  172.                             echo $format_ar[$i];
  173.                         }
  174.                         $i++;
  175.                     }
  176.                 }
  177.                 break;
  178.             default:
  179.                 break;
  180.         }
  181.         if (isset($format_ar[$frm_last]) && $frm_last>$i ) {
  182.             echo $format_ar[$frm_last];
  183.         }
  184.     }
  185. ?>

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