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 1999-2020 The SquirrelMail Project Team
  11.  * @license http://opensource.org/licenses/gpl-license.php GNU Public License
  12.  * @version $Id: html.php 14840 2020-01-07 07:42:38Z pdontthink $
  13.  * @package squirrelmail
  14.  * @since 1.3.0
  15.  */
  16.  
  17. /**
  18.  * Generate html tags
  19.  *
  20.  * NOTE!  If $val is non-empty, a closing tag will be added after $val
  21.  *        Otherwise, NO closing tag is provided!
  22.  *
  23.  * @param string $tag Tag to output
  24.  * @param string $val Value between tags
  25.  * @param string $align Alignment (left, center, etc)
  26.  * @param string $bgcolor Back color in hexadecimal
  27.  * @param string $xtra Extra options
  28.  * @return string HTML ready for output
  29.  */
  30. function html_tag$tag,                // Tag to output
  31.                        $val '',           // Value between tags
  32.                        $align '',         // Alignment
  33.                        $bgcolor '',       // Back color
  34.                        $xtra '' {       // Extra options
  35.  
  36.         GLOBAL $languages$squirrelmail_language;
  37.  
  38.         $align strtolower$align );
  39.         $bgc '';
  40.         $tag strtolower$tag );
  41.  
  42.         if isset$languages[$squirrelmail_language]['DIR']) ) {
  43.             $dir $languages[$squirrelmail_language]['DIR'];
  44.         else {
  45.             $dir 'ltr';
  46.         }
  47.  
  48.         if $dir == 'ltr' {
  49.             $rgt 'right';
  50.             $lft 'left';
  51.         else {
  52.             $rgt 'left';
  53.             $lft 'right';
  54.         }
  55.  
  56.         if $bgcolor <> '' {
  57.             $bgc " bgcolor=\"$bgcolor\"";
  58.         }
  59.  
  60.         switch $align {
  61.             case '':
  62.                 $alg '';
  63.                 break;
  64.             case 'right':
  65.                 $alg " align=\"$rgt\"";
  66.                 break;
  67.             case 'left':
  68.                 $alg " align=\"$lft\"";
  69.                 break;
  70.             default:
  71.                 $alg " align=\"$align\"";
  72.                 break;
  73.         }
  74.  
  75.         $ret "<$tag";
  76.  
  77.         if $dir <> 'ltr' {
  78.             $ret .= " dir=\"$dir\"";
  79.         }
  80.         $ret .= $bgc $alg;
  81.  
  82.         if $xtra <> '' {
  83.             $ret .= " $xtra";
  84.         }
  85.  
  86.         if $val <> '' {
  87.             $ret .= ">$val</$tag>\n";
  88.         else {
  89.             $ret .= '>' "\n";
  90.         }
  91.  
  92.         return$ret );
  93.     }
  94.  
  95. /**
  96.  * This function is used to add, modify or delete GET variables in a URL.
  97.  * It is especially useful when $url = $PHP_SELF
  98.  *
  99.  * Set $val to NULL to remove $var from $url.
  100.  * To ensure compatibility with older versions, use $val='0' to set $var to 0.
  101.  *
  102.  * @param string $url url that must be modified
  103.  * @param string $var GET variable name
  104.  * @param string $val variable value (CANNOT be an array)
  105.  * @param boolean $link controls sanitizing of ampersand in urls (since 1.3.2)
  106.  * @param boolean $treat_as_array When TRUE, if $var is an array (it occurs one
  107.  *                                 or more times with square brackets after it,
  108.  *                                 e.g. "var[1]"), the whole array will be removed
  109.  *                                 (when $val is NULL) or the given value will be
  110.  *                                 added to the next array slot (@since 1.4.23/1.5.2)
  111.  *
  112.  * @return string $url modified url
  113.  *
  114.  * @since 1.3.0
  115.  *
  116.  */
  117. function set_url_var($url$var$val=null$link=true$treat_as_array=false{
  118.     $url str_replace('&amp;','&',$url);
  119.  
  120.     if (strpos($url'?'=== false{
  121.         $url .= '?';
  122.     }   
  123.  
  124.     list($uri$paramsexplode('?'$url2);
  125.         
  126.     $newpar array()
  127.     $params explode('&'$params);
  128.     $array_names array();
  129.    
  130.     foreach ($params as $p{
  131.         if (trim($p)) {
  132.             $p explode('='$p);
  133.             $newpar[$p[0]] (isset($p[1]$p[1'');
  134.             if ($treat_as_array && preg_match('/(.*)\[(\d+)]$/'$p[0]$matches)) {
  135.                if (!isset($array_names[$matches[1]])) $array_names[$matches[1]] array();
  136.                $array_names[$matches[1]][$matches[2]] $p[1];
  137.             }
  138.         }
  139.     }
  140.  
  141.     if (is_null($val)) {
  142.         if ($treat_as_array && !empty($array_names[$var])) {
  143.             foreach ($array_names[$varas $key => $ignore)
  144.                 unset($newpar[$var '[' $key ']']);
  145.         else {
  146.             unset($newpar[$var]);
  147.         }
  148.     else {
  149.         if ($treat_as_array && !empty($array_names[$var])) {
  150.             $max_key 0;
  151.             foreach ($array_names[$varas $key => $ignore)
  152.                 if ($key >= $max_key$max_key $key 1;
  153.             $newpar[$var '[' $max_key ']'$val;
  154.         else {
  155.             $newpar[$var$val;
  156.         }
  157.     }
  158.  
  159.     if (!count($newpar)) {
  160.         return $uri;
  161.     }
  162.    
  163.     $url $uri '?';
  164.     foreach ($newpar as $name => $value{
  165.         $url .= "$name=$value&";
  166.     }
  167.      
  168.     $url substr($url0-1);
  169.     if ($link{
  170.         $url str_replace('&','&amp;',$url);
  171.     }
  172.     
  173.     return $url;
  174. }
  175.  
  176.     /* Temporary test function to proces template vars with formatting.
  177.      * I use it for viewing the message_header (view_header.php) with
  178.      * a sort of template.
  179.      */
  180.     function echo_template_var($var$format_ar array() ) {
  181.         $frm_last count($format_ar-1;
  182.  
  183.         if (isset($format_ar[0])) echo $format_ar[0];
  184.             $i 1;
  185.  
  186.         switch (true{
  187.             case (is_string($var)):
  188.                 echo $var;
  189.                 break;
  190.             case (is_array($var)):
  191.                 $frm_a array_slice($format_ar,1,$frm_last-1);
  192.                 foreach ($var as $a_el{
  193.                     if (is_array($a_el)) {
  194.                         echo_template_var($a_el,$frm_a);
  195.                     else {
  196.                         echo $a_el;
  197.                         if (isset($format_ar[$i])) {
  198.                             echo $format_ar[$i];
  199.                         }
  200.                         $i++;
  201.                     }
  202.                 }
  203.                 break;
  204.             default:
  205.                 break;
  206.         }
  207.         if (isset($format_ar[$frm_last]&& $frm_last>$i {
  208.             echo $format_ar[$frm_last];
  209.         }
  210.     }

Documentation generated on Mon, 13 Jan 2020 04:24:41 +0100 by phpDocumentor 1.4.3