html.php 5.2 KB

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