function smarty_function_tnt_ratings($params, &$smarty)
{
    _TNT_Smarty_Valid($smarty);
    if (empty($params['objtype'])) {
        $smarty->trigger_error("tnt_ratings: missing 'objtype' parameter");
        return;
    }
    if (empty($params['objid'])) {
        $smarty->trigger_error("tnt_ratings: missing 'objid' parameter");
        return;
    }
    TNT_RequireClass('TNTRatings');
    $ratings =& new TNTRatings($params['objtype'], $params['objid']);
    $tpl['objtype'] = $ratings->objtype;
    $tpl['objid'] = $ratings->objid;
    $tpl['enabled'] = false;
    $tpl['stats'] = null;
    $tpl['images'] = null;
    $tpl['range'] = null;
    $tpl['action'] = null;
    if ($ratings->Enabled()) {
        $tpl['enabled'] = true;
        $tpl['stats'] = $ratings->Stats();
        $tpl['images'] = $ratings->Images();
        $tpl['range'] = $ratings->Range();
        if (!empty($params['rater'])) {
            $tpl['action'] = $ratings->Action($params['rater']);
        } else {
            $tpl['action'] = null;
        }
        foreach (array('min', 'avg', 'max') as $var) {
            $val = $var['stats'][$var];
            $tpl[$var] = array('value' => $val, 'image' => '/synergy/' . $ratings->Image($val));
        }
    }
    TNT_Debug('ratings=', $tpl);
    $assign = !empty($params['assign']) ? $params['assign'] : '_ratings';
    $smarty->assign_by_ref($assign, $tpl);
    return '';
}
function smarty_block_tnt_widget($params, $content, &$smarty)
{
    if (!$content) {
        return null;
    }
    $driver_data = $params;
    unset($driver_data['ctl_class']);
    extract($params);
    if (empty($class)) {
        $class = 'TNTSmartList';
    }
    TNT_RequireClass($class);
    $widget =& new $class();
    if (!$widget->Construct($content)) {
        TNT_Debug('smarty_block_tnt_widget - failed to load widget: ' . $class);
        return false;
    }
    $content = $widget->Render();
    if (!empty($assign)) {
        $smarty->assign($assign, $content);
        return null;
    }
    return $content;
}