removed extract(). enhanced parameter parsing.

This commit is contained in:
messju
2003-12-19 17:20:19 +00:00
parent f6bb3389f6
commit 36ac900ceb
3 changed files with 164 additions and 99 deletions

View File

@@ -29,6 +29,10 @@
*/ */
function smarty_block_textformat($params, $content, &$smarty) function smarty_block_textformat($params, $content, &$smarty)
{ {
if (is_null($content)) {
return;
}
$style = null; $style = null;
$indent = 0; $indent = 0;
$indent_first = 0; $indent_first = 0;
@@ -38,11 +42,29 @@ function smarty_block_textformat($params, $content, &$smarty)
$wrap_cut = false; $wrap_cut = false;
$assign = null; $assign = null;
if($content == null) { foreach ($params as $_key => $_val) {
return true; switch ($_key) {
} case 'style':
case 'indent_char':
case 'wrap_char':
case 'assign':
$$_key = (string)$_val;
break;
extract($params); case 'indent':
case 'indent_first':
case 'wrap':
$$_key = (int)$_val;
break;
case 'wrap_cut':
$$_key = (bool)$_val;
break;
default:
$smarty->trigger_error("textformat: unknown attribute '$_key'");
}
}
if ($style == 'email') { if ($style == 'email') {
$wrap = 72; $wrap = 72;
@@ -71,7 +93,7 @@ function smarty_block_textformat($params, $content, &$smarty)
$output .= $paragraph . $wrap_char . $wrap_char; $output .= $paragraph . $wrap_char . $wrap_char;
} }
if($assign != null) { if ($assign) {
$smarty->assign($assign,$output); $smarty->assign($assign,$output);
} else { } else {
return $output; return $output;

View File

@@ -53,13 +53,33 @@ function smarty_function_html_table($params, &$smarty)
$hdir = 'right'; $hdir = 'right';
$inner = 'cols'; $inner = 'cols';
extract($params); if (!isset($params['loop'])) {
if (!isset($loop)) {
$smarty->trigger_error("html_table: missing 'loop' parameter"); $smarty->trigger_error("html_table: missing 'loop' parameter");
return; return;
} }
foreach ($params as $_key=>$_value) {
switch ($_key) {
case 'loop':
$$_key = (array)$_value;
break;
case 'cols':
case 'rows':
$$_key = (int)$_value;
break;
case 'table_attr':
case 'tr_attr':
case 'td_attr':
case 'trailpad':
case 'hdir':
case 'vdir':
$$_key = (string)$_value;
break;
}
}
$loop_count = count($loop); $loop_count = count($loop);
if (empty($params['rows'])) { if (empty($params['rows'])) {
/* no rows specified */ /* no rows specified */

View File

@@ -20,7 +20,77 @@
*/ */
function smarty_function_popup($params, &$smarty) function smarty_function_popup($params, &$smarty)
{ {
extract($params); $append = '';
foreach ($params as $_key=>$_value) {
switch ($_key) {
case 'text':
case 'trigger':
$$_key = (string)$_value;
break;
case 'caption':
case 'closetext':
case 'status':
$append .= ',' . strtoupper($_key) . "','" . str_replace("'","\'",$_value) . "'";
break;
case 'fgcolor':
case 'bgcolor':
case 'textcolor':
case 'capcolor':
case 'closecolor':
case 'textfont':
case 'captionfont':
case 'closefont':
case 'textsize':
case 'captionsize':
case 'closesize':
case 'width':
case 'height':
case 'border':
case 'offsetx':
case 'offsety':
case 'fgbackground':
case 'bgbackground':
case 'inarray':
case 'caparray':
case 'capicon':
case 'snapx':
case 'snapy':
case 'fixx':
case 'fixy':
case 'background':
case 'padx':
case 'pady':
case 'frame':
case 'timeout':
case 'delay':
$append .= ',' . strtoupper($_key) . "','$_value'";
break;
case 'sticky':
case 'left':
case 'right':
case 'center':
case 'above':
case 'below':
case 'noclose':
case 'autostatus':
case 'autostatuscap':
case 'fullhtml':
case 'hauto':
case 'vauto':
if ($_value) $append .= ',' . strtoupper($_key);
break;
case 'function':
$append .= ',' . strtoupper($_key) . "',$_value";
break;
default:
$smarty->trigger_error("[popup] unknown parameter $_key", E_USER_WARNING);
}
}
if (empty($text) && !isset($inarray) && empty($function)) { if (empty($text) && !isset($inarray) && empty($function)) {
$smarty->trigger_error("overlib: attribute 'text' or 'inarray' or 'function' required"); $smarty->trigger_error("overlib: attribute 'text' or 'inarray' or 'function' required");
@@ -30,54 +100,7 @@ function smarty_function_popup($params, &$smarty)
if (empty($trigger)) { $trigger = "onmouseover"; } if (empty($trigger)) { $trigger = "onmouseover"; }
$retval = $trigger . '="return overlib(\''.preg_replace(array("!'!","![\r\n]!"),array("\'",'\r'),$text).'\''; $retval = $trigger . '="return overlib(\''.preg_replace(array("!'!","![\r\n]!"),array("\'",'\r'),$text).'\'';
if ($sticky) { $retval .= ",STICKY"; } $retval .= $append . ');" onmouseout="nd();"';
if (!empty($caption)) { $retval .= ",CAPTION,'".str_replace("'","\'",$caption)."'"; }
if (!empty($fgcolor)) { $retval .= ",FGCOLOR,'$fgcolor'"; }
if (!empty($bgcolor)) { $retval .= ",BGCOLOR,'$bgcolor'"; }
if (!empty($textcolor)) { $retval .= ",TEXTCOLOR,'$textcolor'"; }
if (!empty($capcolor)) { $retval .= ",CAPCOLOR,'$capcolor'"; }
if (!empty($closecolor)) { $retval .= ",CLOSECOLOR,'$closecolor'"; }
if (!empty($textfont)) { $retval .= ",TEXTFONT,'$textfont'"; }
if (!empty($captionfont)) { $retval .= ",CAPTIONFONT,'$captionfont'"; }
if (!empty($closefont)) { $retval .= ",CLOSEFONT,'$closefont'"; }
if (!empty($textsize)) { $retval .= ",TEXTSIZE,$textsize"; }
if (!empty($captionsize)) { $retval .= ",CAPTIONSIZE,$captionsize"; }
if (!empty($closesize)) { $retval .= ",CLOSESIZE,$closesize"; }
if (!empty($width)) { $retval .= ",WIDTH,$width"; }
if (!empty($height)) { $retval .= ",HEIGHT,$height"; }
if (!empty($left)) { $retval .= ",LEFT"; }
if (!empty($right)) { $retval .= ",RIGHT"; }
if (!empty($center)) { $retval .= ",CENTER"; }
if (!empty($above)) { $retval .= ",ABOVE"; }
if (!empty($below)) { $retval .= ",BELOW"; }
if (isset($border)) { $retval .= ",BORDER,$border"; }
if (isset($offsetx)) { $retval .= ",OFFSETX,$offsetx"; }
if (isset($offsety)) { $retval .= ",OFFSETY,$offsety"; }
if (!empty($fgbackground)) { $retval .= ",FGBACKGROUND,'$fgbackground'"; }
if (!empty($bgbackground)) { $retval .= ",BGBACKGROUND,'$bgbackground'"; }
if (!empty($closetext)) { $retval .= ",CLOSETEXT,'".str_replace("'","\'",$closetext)."'"; }
if (!empty($noclose)) { $retval .= ",NOCLOSE"; }
if (!empty($status)) { $retval .= ",STATUS,'".str_replace("'","\'",$status)."'"; }
if (!empty($autostatus)) { $retval .= ",AUTOSTATUS"; }
if (!empty($autostatuscap)) { $retval .= ",AUTOSTATUSCAP"; }
if (isset($inarray)) { $retval .= ",INARRAY,'$inarray'"; }
if (isset($caparray)) { $retval .= ",CAPARRAY,'$caparray'"; }
if (!empty($capicon)) { $retval .= ",CAPICON,'$capicon'"; }
if (!empty($snapx)) { $retval .= ",SNAPX,$snapx"; }
if (!empty($snapy)) { $retval .= ",SNAPY,$snapy"; }
if (isset($fixx)) { $retval .= ",FIXX,$fixx"; }
if (isset($fixy)) { $retval .= ",FIXY,$fixy"; }
if (!empty($background)) { $retval .= ",BACKGROUND,'$background'"; }
if (!empty($padx)) { $retval .= ",PADX,$padx"; }
if (!empty($pady)) { $retval .= ",PADY,$pady"; }
if (!empty($fullhtml)) { $retval .= ",FULLHTML"; }
if (!empty($frame)) { $retval .= ",FRAME,'$frame'"; }
if (isset($timeout)) { $retval .= ",TIMEOUT,$timeout"; }
if (!empty($function)) { $retval .= ",FUNCTION,'$function'"; }
if (isset($delay)) { $retval .= ",DELAY,$delay"; }
if (!empty($hauto)) { $retval .= ",HAUTO"; }
if (!empty($vauto)) { $retval .= ",VAUTO"; }
$retval .= ');" onmouseout="nd();"';
return $retval; return $retval;
} }