app = $app;
}
function block_capture($params, $content, &$tpl){
if(null!==$content){
$tpl->_env_vars['capture'][isset($params['name'])?$params['name']:'default'] = &$content;
if (isset($params['assign'])) {
$tpl->_vars[$params['assign']] = &$content;
}
}
return null;
}
function block_area($params, $content, &$tpl){
if(null!==$content){
return '';
}
}
function block_t($params, $content, &$tpl)
{
if(!is_null($content)){
$app = (isset($params['app'])) ? app::get($params['app']) : $tpl->app;
$args = array();
if(isset($params['args'])){
$args = (array)$params['args'];
}else{
foreach($params AS $key=>$val){
if(strpos($key, "arg") === 0){
$args[substr($key, 3)] = $val;
}
}
ksort($args);
}
array_unshift($args, $content);
return call_user_func_array(array($app, "_"), $args);
}
}//End Function
function block_t2t($params, $content, &$tpl){
if(null!==$content){
$t2t = kernel::single('base_misc_t2t');
$t2t->res_path = $tpl->app->res_url.'/';
return '
'.$t2t->parse($content).'
';
}
}
function escape_chars($string){
if(!is_array($string))
{
$string = preg_replace('!&(#?\w+);!', '%%%TEMPLATE_START%%%\\1%%%TEMPLATE_END%%%', $string);
$string = htmlspecialchars($string);
$string = str_replace(array('%%%TEMPLATE_START%%%','%%%TEMPLATE_END%%%'), array('&',';'), $string);
}
return $string;
}
function function_appconf($params, &$tpl)
{
return app::get($params['app'])->getConf($params['key']);
}//End Function
/*
* Type: function
* Name: counter
* Purpose: print out a counter value
* Credit: Taken from the original Smarty
* http://smarty.php.net
*/
function function_counter($params, &$tpl){
static $count = array();
static $skipval = array();
static $dir = array();
static $name = "default";
static $printval = array();
static $assign = "";
extract($params);
if (!isset($name))
{
if(isset($id))
{
$name = $id;
}
else
{
$name = "default";
}
}
if (isset($start))
{
$count[$name] = $start;
}
elseif (!isset($count[$name]))
{
$count[$name]=1;
}
if (!isset($print))
{
$printval[$name]=true;
}
else
{
$printval[$name]=$print;
}
if (!empty($assign))
{
$printval[$name] = false;
$tpl->_vars[$assign] = $count[$name];
}
if ($printval[$name])
{
$retval = $count[$name];
}
else
{
$retval = null;
}
if (isset($skip))
{
$skipval[$name] = $skip;
}
elseif (empty($skipval[$name]))
{
$skipval[$name] = 1;
}
if (isset($direction))
{
$dir[$name] = $direction;
}
elseif (!isset($dir[$name]))
{
$dir[$name] = "up";
}
if ($dir[$name] == "down")
{
$count[$name] -= $skipval[$name];
}
else
{
$count[$name] += $skipval[$name];
}
return $retval;
}
function function_html_input($params, &$tpl){
$name = null;
$value = '';
$password = false;
$extra = '';
foreach($params as $_key => $_value)
{
switch($_key)
{
case 'name':
case 'value':
$$_key = $_value;
break;
case 'password':
$$_key = true;
break;
default:
if(!is_array($_key))
{
$extra .= ' ' . $_key . '="' . ($_value) . '"';
}
else
{
$tpl->trigger_error("html_input: attribute '$_key' cannot be an array");
}
}
}
if (!isset($name) || empty($name))
{
$tpl->trigger_error("html_input: missing 'name' parameter");
return;
}
$toReturn = '';
return $toReturn;
}
function function_html_options($params, &$tpl){
$name = null;
$options = null;
$selected = array();
$extra = '';
foreach($params as $_key => $_val)
{
switch($_key)
{
case 'name':
$$_key = (string)$_val;
break;
case 'options':
$$_key = (array)$_val;
break;
case 'values':
case 'output':
$$_key = array_values((array)$_val);
break;
case 'selected':
$$_key = array_values((array)$_val);
break;
default:
if(!is_array($_key))
{
$extra .= ' ' . $_key . '="' . $this->tpl_escape_chars($_val) . '"';
}
else
{
$tpl->trigger_error("html_select: attribute '$_key' cannot be an array");
}
break;
}
}
$_html_result = '';
if (is_array($options))
{
foreach ($options as $_key=>$_val)
{
$_html_result .= $this->tpl_function_html_options_optoutput($tpl, $_key, $_val, $selected);
}
}
else
{
foreach ((array)$values as $_i=>$_key)
{
$_val = isset($output[$_i]) ? $output[$_i] : '';
$_html_result .= $this->tpl_function_html_options_optoutput($tpl, $_key, $_val, $selected);
}
}
if(!empty($name))
{
$_html_result = '' . "\n";
}
return $_html_result;
}
function tpl_function_html_options_optoutput(&$tpl, $key, $value, $selected){
if(!is_array($value))
{
$_html_result = '' . "\n";
}
else
{
$_html_result = $this->function_html_options_optgroup($tpl, $key, $value, $selected);
}
return $_html_result;
}
function function_html_options_optgroup(&$tpl, $key, $values, $selected){
$optgroup_html = '\n";
return $optgroup_html;
}
function function_html_table($params, &$template_object){
$table_attr = 'border="1"';
$tr_attr = '';
$td_attr = '';
$cols = 3;
$trailpad = ' ';
extract($params);
if (!isset($loop))
{
$template_object->trigger_error("html_table: missing 'loop' parameter");
return;
}
$output = "\n";
$output .= "function_html_table_cycle('tr', $tr_attr) . ">\n";
for($x = 0, $y = count($loop); $x < $y; $x++)
{
$output .= "| function_html_table_cycle('td', $td_attr) . ">" . $loop[$x] . " | \n";
if((!(($x+1) % $cols)) && $x < $y-1)
{
// go to next row
$output .= "
\nfunction_html_table_cycle('tr', $tr_attr) . ">\n";
}
if($x == $y-1)
{
// last row, pad remaining cells
$cells = $cols - $y % $cols;
if($cells != $cols) {
for($padloop = 0; $padloop < $cells; $padloop++) {
$output .= "| function_html_table_cycle('td', $td_attr) . ">$trailpad | \n";
}
}
$output .= "
\n";
}
}
$output .= "
\n";
return $output;
}
function function_html_table_cycle($name, $var){
static $names = array();
if(!is_array($var))
{
return $var;
}
if(!isset($names[$name]) || $names[$name] == count($var)-1)
{
$names[$name] = 0;
return $var[0];
}
$names[$name]++;
return $var[$names[$name]];
}
function function_json($params, &$smarty){
return json_encode($params['from']);
}
function function_mailto($params, &$template_object){
extract($params);
if (empty($address))
{
$template_object->trigger_error("mailto: missing 'address' parameter");
return;
}
if (empty($text))
{
$text = $address;
}
if (empty($extra))
{
$extra = "";
}
// netscape and mozilla do not decode %40 (@) in BCC field (bug?)
// so, don't encode it.
$mail_parms = array();
if (!empty($cc))
{
$mail_parms[] = 'cc='.str_replace('%40','@',rawurlencode($cc));
}
if (!empty($bcc))
{
$mail_parms[] = 'bcc='.str_replace('%40','@',rawurlencode($bcc));
}
if (!empty($subject))
{
$mail_parms[] = 'subject='.rawurlencode($subject);
}
if (!empty($newsgroups))
{
$mail_parms[] = 'newsgroups='.rawurlencode($newsgroups);
}
if (!empty($followupto))
{
$mail_parms[] = 'followupto='.str_replace('%40','@',rawurlencode($followupto));
}
$mail_parm_vals = "";
for ($i=0; $itrigger_error("mailto: 'encode' parameter must be none, javascript or hex");
return;
}
if ($encode == 'javascript' )
{
$string = 'document.write(\''.$text.'\');';
for ($x=0; $x < strlen($string); $x++)
{
$js_encode .= '%' . bin2hex($string[$x]);
}
return '';
}
elseif ($encode == 'hex')
{
preg_match('!^(.*)(\?.*)$!',$address,$match);
if(!empty($match[2]))
{
$template_object->trigger_error("mailto: hex encoding does not work with extra attributes. Try javascript.");
return;
}
$address_encode = "";
for ($x=0; $x < strlen($address); $x++)
{
if(preg_match('!\w!',$address[$x]))
{
$address_encode .= '%' . bin2hex($address[$x]);
}
else
{
$address_encode .= $address[$x];
}
}
$text_encode = "";
for ($x=0; $x < strlen($text); $x++)
{
$text_encode .= '' . bin2hex($text[$x]).';';
}
return ''.$text_encode.'';
}
else
{
// no encoding
return ''.$text.'';
}
}
function function_pagers($params, &$smarty){
if(!$params['data']['current'])$params['data']['current'] = 1;
if(!$params['data']['total'])$params['data']['total'] = 1;
if($params['data']['total']<2){
return '';
}
$prev = $params['data']['current']>1?
''.app::get('base')->_('上一页').'':
''.app::get('base')->_('已经是第一页').'';
$next = $params['data']['current']<$params['data']['total']?
''.app::get('base')->_('下一页').'':
''.app::get('base')->_('已经是最后一页').'';
if($params['rand'] && $params['data']['total']>1){
$r= rand(1,$params['data']['total']);
$rand = ' | ';
}
if($params['type']=='mini'){
return <<