Second pass at adding key files
This commit is contained in:
		
							
								
								
									
										27
									
								
								site/stackreach/libs/plugins/block.php.php
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										27
									
								
								site/stackreach/libs/plugins/block.php.php
									
									
									
									
									
										Normal file
									
								
							@@ -0,0 +1,27 @@
 | 
			
		||||
<?php
 | 
			
		||||
/**
 | 
			
		||||
 * Smarty plugin to execute PHP code
 | 
			
		||||
 * 
 | 
			
		||||
 * @package Smarty
 | 
			
		||||
 * @subpackage PluginsBlock
 | 
			
		||||
 * @author Uwe Tews 
 | 
			
		||||
 */
 | 
			
		||||
 | 
			
		||||
/**
 | 
			
		||||
 * Smarty {php}{/php} block plugin
 | 
			
		||||
 * 
 | 
			
		||||
 * @param string $content contents of the block
 | 
			
		||||
 * @param object $template template object
 | 
			
		||||
 * @param boolean $ &$repeat repeat flag
 | 
			
		||||
 * @return string content re-formatted
 | 
			
		||||
 */
 | 
			
		||||
function smarty_block_php($params, $content, $template, &$repeat)
 | 
			
		||||
{ 
 | 
			
		||||
    if (!$template->allow_php_tag) {
 | 
			
		||||
        throw new SmartyException("{php} is deprecated, set allow_php_tag = true to enable");
 | 
			
		||||
    } 
 | 
			
		||||
    eval($content);
 | 
			
		||||
    return '';
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
?>
 | 
			
		||||
							
								
								
									
										102
									
								
								site/stackreach/libs/plugins/block.textformat.php
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										102
									
								
								site/stackreach/libs/plugins/block.textformat.php
									
									
									
									
									
										Normal file
									
								
							@@ -0,0 +1,102 @@
 | 
			
		||||
<?php
 | 
			
		||||
/**
 | 
			
		||||
 * Smarty plugin to format text blocks
 | 
			
		||||
 *
 | 
			
		||||
 * @package Smarty
 | 
			
		||||
 * @subpackage PluginsBlock
 | 
			
		||||
 */
 | 
			
		||||
 | 
			
		||||
/**
 | 
			
		||||
 * Smarty {textformat}{/textformat} block plugin
 | 
			
		||||
 * 
 | 
			
		||||
 * Type:     block function<br>
 | 
			
		||||
 * Name:     textformat<br>
 | 
			
		||||
 * Purpose:  format text a certain way with preset styles
 | 
			
		||||
 *            or custom wrap/indent settings<br>
 | 
			
		||||
 * 
 | 
			
		||||
 * @link http://smarty.php.net/manual/en/language.function.textformat.php {textformat}
 | 
			
		||||
 *       (Smarty online manual)
 | 
			
		||||
 * @param array $params parameters
 | 
			
		||||
 * <pre>
 | 
			
		||||
 * Params:   style: string (email)
 | 
			
		||||
 *            indent: integer (0)
 | 
			
		||||
 *            wrap: integer (80)
 | 
			
		||||
 *            wrap_char string ("\n")
 | 
			
		||||
 *            indent_char: string (" ")
 | 
			
		||||
 *            wrap_boundary: boolean (true)
 | 
			
		||||
 * </pre>
 | 
			
		||||
 * @author Monte Ohrt <monte at ohrt dot com> 
 | 
			
		||||
 * @param string $content contents of the block
 | 
			
		||||
 * @param object $template template object
 | 
			
		||||
 * @param boolean &$repeat repeat flag
 | 
			
		||||
 * @return string content re-formatted
 | 
			
		||||
 */
 | 
			
		||||
function smarty_block_textformat($params, $content, $template, &$repeat)
 | 
			
		||||
{
 | 
			
		||||
    if (is_null($content)) {
 | 
			
		||||
        return;
 | 
			
		||||
    } 
 | 
			
		||||
 | 
			
		||||
    $style = null;
 | 
			
		||||
    $indent = 0;
 | 
			
		||||
    $indent_first = 0;
 | 
			
		||||
    $indent_char = ' ';
 | 
			
		||||
    $wrap = 80;
 | 
			
		||||
    $wrap_char = "\n";
 | 
			
		||||
    $wrap_cut = false;
 | 
			
		||||
    $assign = null;
 | 
			
		||||
 | 
			
		||||
    foreach ($params as $_key => $_val) {
 | 
			
		||||
        switch ($_key) {
 | 
			
		||||
            case 'style':
 | 
			
		||||
            case 'indent_char':
 | 
			
		||||
            case 'wrap_char':
 | 
			
		||||
            case 'assign':
 | 
			
		||||
                $$_key = (string)$_val;
 | 
			
		||||
                break;
 | 
			
		||||
 | 
			
		||||
            case 'indent':
 | 
			
		||||
            case 'indent_first':
 | 
			
		||||
            case 'wrap':
 | 
			
		||||
                $$_key = (int)$_val;
 | 
			
		||||
                break;
 | 
			
		||||
 | 
			
		||||
            case 'wrap_cut':
 | 
			
		||||
                $$_key = (bool)$_val;
 | 
			
		||||
                break;
 | 
			
		||||
 | 
			
		||||
            default:
 | 
			
		||||
                trigger_error("textformat: unknown attribute '$_key'");
 | 
			
		||||
        } 
 | 
			
		||||
    } 
 | 
			
		||||
 | 
			
		||||
    if ($style == 'email') {
 | 
			
		||||
        $wrap = 72;
 | 
			
		||||
    } 
 | 
			
		||||
    // split into paragraphs
 | 
			
		||||
    $_paragraphs = preg_split('![\r\n][\r\n]!', $content);
 | 
			
		||||
    $_output = '';
 | 
			
		||||
 | 
			
		||||
    for($_x = 0, $_y = count($_paragraphs); $_x < $_y; $_x++) {
 | 
			
		||||
        if ($_paragraphs[$_x] == '') {
 | 
			
		||||
            continue;
 | 
			
		||||
        } 
 | 
			
		||||
        // convert mult. spaces & special chars to single space
 | 
			
		||||
        $_paragraphs[$_x] = preg_replace(array('!\s+!', '!(^\s+)|(\s+$)!'), array(' ', ''), $_paragraphs[$_x]); 
 | 
			
		||||
        // indent first line
 | 
			
		||||
        if ($indent_first > 0) {
 | 
			
		||||
            $_paragraphs[$_x] = str_repeat($indent_char, $indent_first) . $_paragraphs[$_x];
 | 
			
		||||
        } 
 | 
			
		||||
        // wordwrap sentences
 | 
			
		||||
        $_paragraphs[$_x] = wordwrap($_paragraphs[$_x], $wrap - $indent, $wrap_char, $wrap_cut); 
 | 
			
		||||
        // indent lines
 | 
			
		||||
        if ($indent > 0) {
 | 
			
		||||
            $_paragraphs[$_x] = preg_replace('!^!m', str_repeat($indent_char, $indent), $_paragraphs[$_x]);
 | 
			
		||||
        } 
 | 
			
		||||
    } 
 | 
			
		||||
    $_output = implode($wrap_char . $wrap_char, $_paragraphs);
 | 
			
		||||
    
 | 
			
		||||
    return $assign ? $template->assign($assign, $_output) : $_output;
 | 
			
		||||
} 
 | 
			
		||||
 | 
			
		||||
?>
 | 
			
		||||
							
								
								
									
										78
									
								
								site/stackreach/libs/plugins/function.counter.php
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										78
									
								
								site/stackreach/libs/plugins/function.counter.php
									
									
									
									
									
										Normal file
									
								
							@@ -0,0 +1,78 @@
 | 
			
		||||
<?php
 | 
			
		||||
/**
 | 
			
		||||
 * Smarty plugin
 | 
			
		||||
 * @package Smarty
 | 
			
		||||
 * @subpackage PluginsFunction
 | 
			
		||||
 */
 | 
			
		||||
 | 
			
		||||
/**
 | 
			
		||||
 * Smarty {counter} function plugin
 | 
			
		||||
 *
 | 
			
		||||
 * Type:     function<br>
 | 
			
		||||
 * Name:     counter<br>
 | 
			
		||||
 * Purpose:  print out a counter value
 | 
			
		||||
 * @author Monte Ohrt <monte at ohrt dot com>
 | 
			
		||||
 * @link http://smarty.php.net/manual/en/language.function.counter.php {counter}
 | 
			
		||||
 *       (Smarty online manual)
 | 
			
		||||
 * @param array parameters
 | 
			
		||||
 * @param Smarty
 | 
			
		||||
 * @param object $template template object
 | 
			
		||||
 * @return string|null
 | 
			
		||||
 */
 | 
			
		||||
function smarty_function_counter($params, $template)
 | 
			
		||||
{
 | 
			
		||||
    static $counters = array();
 | 
			
		||||
 | 
			
		||||
    $name = (isset($params['name'])) ? $params['name'] : 'default';
 | 
			
		||||
    if (!isset($counters[$name])) {
 | 
			
		||||
        $counters[$name] = array(
 | 
			
		||||
            'start'=>1,
 | 
			
		||||
            'skip'=>1,
 | 
			
		||||
            'direction'=>'up',
 | 
			
		||||
            'count'=>1
 | 
			
		||||
            );
 | 
			
		||||
    }
 | 
			
		||||
    $counter =& $counters[$name];
 | 
			
		||||
 | 
			
		||||
    if (isset($params['start'])) {
 | 
			
		||||
        $counter['start'] = $counter['count'] = (int)$params['start'];
 | 
			
		||||
    }
 | 
			
		||||
 | 
			
		||||
    if (!empty($params['assign'])) {
 | 
			
		||||
        $counter['assign'] = $params['assign'];
 | 
			
		||||
    }
 | 
			
		||||
 | 
			
		||||
    if (isset($counter['assign'])) {
 | 
			
		||||
        $template->assign($counter['assign'], $counter['count']);
 | 
			
		||||
    }
 | 
			
		||||
    
 | 
			
		||||
    if (isset($params['print'])) {
 | 
			
		||||
        $print = (bool)$params['print'];
 | 
			
		||||
    } else {
 | 
			
		||||
        $print = empty($counter['assign']);
 | 
			
		||||
    }
 | 
			
		||||
 | 
			
		||||
    if ($print) {
 | 
			
		||||
        $retval = $counter['count'];
 | 
			
		||||
    } else {
 | 
			
		||||
        $retval = null;
 | 
			
		||||
    }
 | 
			
		||||
 | 
			
		||||
    if (isset($params['skip'])) {
 | 
			
		||||
        $counter['skip'] = $params['skip'];
 | 
			
		||||
    }
 | 
			
		||||
    
 | 
			
		||||
    if (isset($params['direction'])) {
 | 
			
		||||
        $counter['direction'] = $params['direction'];
 | 
			
		||||
    }
 | 
			
		||||
 | 
			
		||||
    if ($counter['direction'] == "down")
 | 
			
		||||
        $counter['count'] -= $counter['skip'];
 | 
			
		||||
    else
 | 
			
		||||
        $counter['count'] += $counter['skip'];
 | 
			
		||||
    
 | 
			
		||||
    return $retval;
 | 
			
		||||
    
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
?>
 | 
			
		||||
							
								
								
									
										106
									
								
								site/stackreach/libs/plugins/function.cycle.php
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										106
									
								
								site/stackreach/libs/plugins/function.cycle.php
									
									
									
									
									
										Normal file
									
								
							@@ -0,0 +1,106 @@
 | 
			
		||||
<?php
 | 
			
		||||
/**
 | 
			
		||||
 * Smarty plugin
 | 
			
		||||
 *
 | 
			
		||||
 * @package Smarty
 | 
			
		||||
 * @subpackage PluginsFunction
 | 
			
		||||
 */
 | 
			
		||||
 | 
			
		||||
/**
 | 
			
		||||
 * Smarty {cycle} function plugin
 | 
			
		||||
 *
 | 
			
		||||
 * Type:     function<br>
 | 
			
		||||
 * Name:     cycle<br>
 | 
			
		||||
 * Date:     May 3, 2002<br>
 | 
			
		||||
 * Purpose:  cycle through given values<br>
 | 
			
		||||
 * Input:
 | 
			
		||||
 *         - name = name of cycle (optional)
 | 
			
		||||
 *         - values = comma separated list of values to cycle,
 | 
			
		||||
 *                    or an array of values to cycle
 | 
			
		||||
 *                    (this can be left out for subsequent calls)
 | 
			
		||||
 *         - reset = boolean - resets given var to true
 | 
			
		||||
 *         - print = boolean - print var or not. default is true
 | 
			
		||||
 *         - advance = boolean - whether or not to advance the cycle
 | 
			
		||||
 *         - delimiter = the value delimiter, default is ","
 | 
			
		||||
 *         - assign = boolean, assigns to template var instead of
 | 
			
		||||
 *                    printed.
 | 
			
		||||
 *
 | 
			
		||||
 * Examples:<br>
 | 
			
		||||
 * <pre>
 | 
			
		||||
 * {cycle values="#eeeeee,#d0d0d0d"}
 | 
			
		||||
 * {cycle name=row values="one,two,three" reset=true}
 | 
			
		||||
 * {cycle name=row}
 | 
			
		||||
 * </pre>
 | 
			
		||||
 * @link http://smarty.php.net/manual/en/language.function.cycle.php {cycle}
 | 
			
		||||
 *       (Smarty online manual)
 | 
			
		||||
 * @author Monte Ohrt <monte at ohrt dot com>
 | 
			
		||||
 * @author credit to Mark Priatel <mpriatel@rogers.com>
 | 
			
		||||
 * @author credit to Gerard <gerard@interfold.com>
 | 
			
		||||
 * @author credit to Jason Sweat <jsweat_php@yahoo.com>
 | 
			
		||||
 * @version  1.3
 | 
			
		||||
 * @param array
 | 
			
		||||
 * @param object $template template object
 | 
			
		||||
 * @return string|null
 | 
			
		||||
 */
 | 
			
		||||
 | 
			
		||||
function smarty_function_cycle($params, $template)
 | 
			
		||||
{
 | 
			
		||||
    static $cycle_vars;
 | 
			
		||||
    
 | 
			
		||||
    $name = (empty($params['name'])) ? 'default' : $params['name'];
 | 
			
		||||
    $print = (isset($params['print'])) ? (bool)$params['print'] : true;
 | 
			
		||||
    $advance = (isset($params['advance'])) ? (bool)$params['advance'] : true;
 | 
			
		||||
    $reset = (isset($params['reset'])) ? (bool)$params['reset'] : false;
 | 
			
		||||
            
 | 
			
		||||
    if (!in_array('values', array_keys($params))) {
 | 
			
		||||
        if(!isset($cycle_vars[$name]['values'])) {
 | 
			
		||||
            trigger_error("cycle: missing 'values' parameter");
 | 
			
		||||
            return;
 | 
			
		||||
        }
 | 
			
		||||
    } else {
 | 
			
		||||
        if(isset($cycle_vars[$name]['values'])
 | 
			
		||||
            && $cycle_vars[$name]['values'] != $params['values'] ) {
 | 
			
		||||
            $cycle_vars[$name]['index'] = 0;
 | 
			
		||||
        }
 | 
			
		||||
        $cycle_vars[$name]['values'] = $params['values'];
 | 
			
		||||
    }
 | 
			
		||||
 | 
			
		||||
    if (isset($params['delimiter'])) {
 | 
			
		||||
        $cycle_vars[$name]['delimiter'] = $params['delimiter'];
 | 
			
		||||
    } elseif (!isset($cycle_vars[$name]['delimiter'])) {
 | 
			
		||||
        $cycle_vars[$name]['delimiter'] = ',';       
 | 
			
		||||
    }
 | 
			
		||||
    
 | 
			
		||||
    if(is_array($cycle_vars[$name]['values'])) {
 | 
			
		||||
        $cycle_array = $cycle_vars[$name]['values'];
 | 
			
		||||
    } else {
 | 
			
		||||
        $cycle_array = explode($cycle_vars[$name]['delimiter'],$cycle_vars[$name]['values']);
 | 
			
		||||
    }
 | 
			
		||||
    
 | 
			
		||||
    if(!isset($cycle_vars[$name]['index']) || $reset ) {
 | 
			
		||||
        $cycle_vars[$name]['index'] = 0;
 | 
			
		||||
    }
 | 
			
		||||
    
 | 
			
		||||
    if (isset($params['assign'])) {
 | 
			
		||||
        $print = false;
 | 
			
		||||
        $template->assign($params['assign'], $cycle_array[$cycle_vars[$name]['index']]);
 | 
			
		||||
    }
 | 
			
		||||
        
 | 
			
		||||
    if($print) {
 | 
			
		||||
        $retval = $cycle_array[$cycle_vars[$name]['index']];
 | 
			
		||||
    } else {
 | 
			
		||||
        $retval = null;
 | 
			
		||||
    }
 | 
			
		||||
 | 
			
		||||
    if($advance) {
 | 
			
		||||
        if ( $cycle_vars[$name]['index'] >= count($cycle_array) -1 ) {
 | 
			
		||||
            $cycle_vars[$name]['index'] = 0;
 | 
			
		||||
        } else {
 | 
			
		||||
            $cycle_vars[$name]['index']++;
 | 
			
		||||
        }
 | 
			
		||||
    }
 | 
			
		||||
    
 | 
			
		||||
    return $retval;
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
?>
 | 
			
		||||
							
								
								
									
										216
									
								
								site/stackreach/libs/plugins/function.fetch.php
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										216
									
								
								site/stackreach/libs/plugins/function.fetch.php
									
									
									
									
									
										Normal file
									
								
							@@ -0,0 +1,216 @@
 | 
			
		||||
<?php
 | 
			
		||||
/**
 | 
			
		||||
 * Smarty plugin
 | 
			
		||||
 *
 | 
			
		||||
 * @package Smarty
 | 
			
		||||
 * @subpackage PluginsFunction
 | 
			
		||||
 */
 | 
			
		||||
 | 
			
		||||
/**
 | 
			
		||||
 * Smarty {fetch} plugin
 | 
			
		||||
 *
 | 
			
		||||
 * Type:     function<br>
 | 
			
		||||
 * Name:     fetch<br>
 | 
			
		||||
 * Purpose:  fetch file, web or ftp data and display results
 | 
			
		||||
 * @link http://smarty.php.net/manual/en/language.function.fetch.php {fetch}
 | 
			
		||||
 *       (Smarty online manual)
 | 
			
		||||
 * @author Monte Ohrt <monte at ohrt dot com>
 | 
			
		||||
 * @param array $params parameters
 | 
			
		||||
 * @param object $template template object
 | 
			
		||||
 * @return string|null if the assign parameter is passed, Smarty assigns the
 | 
			
		||||
 *                     result to a template variable
 | 
			
		||||
 */
 | 
			
		||||
function smarty_function_fetch($params, $template)
 | 
			
		||||
{
 | 
			
		||||
    if (empty($params['file'])) {
 | 
			
		||||
        trigger_error("[plugin] fetch parameter 'file' cannot be empty",E_USER_NOTICE);
 | 
			
		||||
        return;
 | 
			
		||||
    }
 | 
			
		||||
 | 
			
		||||
    $content = '';
 | 
			
		||||
    if (isset($template->security_policy) && !preg_match('!^(http|ftp)://!i', $params['file'])) {
 | 
			
		||||
        if(!$template->security_policy->isTrustedResourceDir($params['file'])) {
 | 
			
		||||
            return;
 | 
			
		||||
        }
 | 
			
		||||
        
 | 
			
		||||
        // fetch the file
 | 
			
		||||
        if($fp = @fopen($params['file'],'r')) {
 | 
			
		||||
            while(!feof($fp)) {
 | 
			
		||||
                $content .= fgets ($fp,4096);
 | 
			
		||||
            }
 | 
			
		||||
            fclose($fp);
 | 
			
		||||
        } else {
 | 
			
		||||
            trigger_error('[plugin] fetch cannot read file \'' . $params['file'] . '\'',E_USER_NOTICE);
 | 
			
		||||
            return;
 | 
			
		||||
        }
 | 
			
		||||
    } else {
 | 
			
		||||
        // not a local file
 | 
			
		||||
        if(preg_match('!^http://!i',$params['file'])) {
 | 
			
		||||
            // http fetch
 | 
			
		||||
            if($uri_parts = parse_url($params['file'])) {
 | 
			
		||||
                // set defaults
 | 
			
		||||
                $host = $server_name = $uri_parts['host'];
 | 
			
		||||
                $timeout = 30;
 | 
			
		||||
                $accept = "image/gif, image/x-xbitmap, image/jpeg, image/pjpeg, */*";
 | 
			
		||||
                $agent = "Smarty Template Engine ".$template->_version;
 | 
			
		||||
                $referer = "";
 | 
			
		||||
                $uri = !empty($uri_parts['path']) ? $uri_parts['path'] : '/';
 | 
			
		||||
                $uri .= !empty($uri_parts['query']) ? '?' . $uri_parts['query'] : '';
 | 
			
		||||
                $_is_proxy = false;
 | 
			
		||||
                if(empty($uri_parts['port'])) {
 | 
			
		||||
                    $port = 80;
 | 
			
		||||
                } else {
 | 
			
		||||
                    $port = $uri_parts['port'];
 | 
			
		||||
                }
 | 
			
		||||
                if(!empty($uri_parts['user'])) {
 | 
			
		||||
                    $user = $uri_parts['user'];
 | 
			
		||||
                }
 | 
			
		||||
                if(!empty($uri_parts['pass'])) {
 | 
			
		||||
                    $pass = $uri_parts['pass'];
 | 
			
		||||
                }
 | 
			
		||||
                // loop through parameters, setup headers
 | 
			
		||||
                foreach($params as $param_key => $param_value) {
 | 
			
		||||
                    switch($param_key) {
 | 
			
		||||
                        case "file":
 | 
			
		||||
                        case "assign":
 | 
			
		||||
                        case "assign_headers":
 | 
			
		||||
                            break;
 | 
			
		||||
                        case "user":
 | 
			
		||||
                            if(!empty($param_value)) {
 | 
			
		||||
                                $user = $param_value;
 | 
			
		||||
                            }
 | 
			
		||||
                            break;
 | 
			
		||||
                        case "pass":
 | 
			
		||||
                            if(!empty($param_value)) {
 | 
			
		||||
                                $pass = $param_value;
 | 
			
		||||
                            }
 | 
			
		||||
                            break;
 | 
			
		||||
                        case "accept":
 | 
			
		||||
                            if(!empty($param_value)) {
 | 
			
		||||
                                $accept = $param_value;
 | 
			
		||||
                            }
 | 
			
		||||
                            break;
 | 
			
		||||
                        case "header":
 | 
			
		||||
                            if(!empty($param_value)) {
 | 
			
		||||
                                if(!preg_match('![\w\d-]+: .+!',$param_value)) {
 | 
			
		||||
                                    trigger_error("[plugin] invalid header format '".$param_value."'",E_USER_NOTICE);
 | 
			
		||||
                                    return;
 | 
			
		||||
                                } else {
 | 
			
		||||
                                    $extra_headers[] = $param_value;
 | 
			
		||||
                                }
 | 
			
		||||
                            }
 | 
			
		||||
                            break;
 | 
			
		||||
                        case "proxy_host":
 | 
			
		||||
                            if(!empty($param_value)) {
 | 
			
		||||
                                $proxy_host = $param_value;
 | 
			
		||||
                            }
 | 
			
		||||
                            break;
 | 
			
		||||
                        case "proxy_port":
 | 
			
		||||
                            if(!preg_match('!\D!', $param_value)) {
 | 
			
		||||
                                $proxy_port = (int) $param_value;
 | 
			
		||||
                            } else {
 | 
			
		||||
                                trigger_error("[plugin] invalid value for attribute '".$param_key."'",E_USER_NOTICE);
 | 
			
		||||
                                return;
 | 
			
		||||
                            }
 | 
			
		||||
                            break;
 | 
			
		||||
                        case "agent":
 | 
			
		||||
                            if(!empty($param_value)) {
 | 
			
		||||
                                $agent = $param_value;
 | 
			
		||||
                            }
 | 
			
		||||
                            break;
 | 
			
		||||
                        case "referer":
 | 
			
		||||
                            if(!empty($param_value)) {
 | 
			
		||||
                                $referer = $param_value;
 | 
			
		||||
                            }
 | 
			
		||||
                            break;
 | 
			
		||||
                        case "timeout":
 | 
			
		||||
                            if(!preg_match('!\D!', $param_value)) {
 | 
			
		||||
                                $timeout = (int) $param_value;
 | 
			
		||||
                            } else {
 | 
			
		||||
                                trigger_error("[plugin] invalid value for attribute '".$param_key."'",E_USER_NOTICE);
 | 
			
		||||
                                return;
 | 
			
		||||
                            }
 | 
			
		||||
                            break;
 | 
			
		||||
                        default:
 | 
			
		||||
                            trigger_error("[plugin] unrecognized attribute '".$param_key."'",E_USER_NOTICE);
 | 
			
		||||
                            return;
 | 
			
		||||
                    }
 | 
			
		||||
                }
 | 
			
		||||
                if(!empty($proxy_host) && !empty($proxy_port)) {
 | 
			
		||||
                    $_is_proxy = true;
 | 
			
		||||
                    $fp = fsockopen($proxy_host,$proxy_port,$errno,$errstr,$timeout);
 | 
			
		||||
                } else {
 | 
			
		||||
                    $fp = fsockopen($server_name,$port,$errno,$errstr,$timeout);
 | 
			
		||||
                }
 | 
			
		||||
 | 
			
		||||
                if(!$fp) {
 | 
			
		||||
                    trigger_error("[plugin] unable to fetch: $errstr ($errno)",E_USER_NOTICE);
 | 
			
		||||
                    return;
 | 
			
		||||
                } else {
 | 
			
		||||
                    if($_is_proxy) {
 | 
			
		||||
                        fputs($fp, 'GET ' . $params['file'] . " HTTP/1.0\r\n");
 | 
			
		||||
                    } else {
 | 
			
		||||
                        fputs($fp, "GET $uri HTTP/1.0\r\n");
 | 
			
		||||
                    }
 | 
			
		||||
                    if(!empty($host)) {
 | 
			
		||||
                        fputs($fp, "Host: $host\r\n");
 | 
			
		||||
                    }
 | 
			
		||||
                    if(!empty($accept)) {
 | 
			
		||||
                        fputs($fp, "Accept: $accept\r\n");
 | 
			
		||||
                    }
 | 
			
		||||
                    if(!empty($agent)) {
 | 
			
		||||
                        fputs($fp, "User-Agent: $agent\r\n");
 | 
			
		||||
                    }
 | 
			
		||||
                    if(!empty($referer)) {
 | 
			
		||||
                        fputs($fp, "Referer: $referer\r\n");
 | 
			
		||||
                    }
 | 
			
		||||
                    if(isset($extra_headers) && is_array($extra_headers)) {
 | 
			
		||||
                        foreach($extra_headers as $curr_header) {
 | 
			
		||||
                            fputs($fp, $curr_header."\r\n");
 | 
			
		||||
                        }
 | 
			
		||||
                    }
 | 
			
		||||
                    if(!empty($user) && !empty($pass)) {
 | 
			
		||||
                        fputs($fp, "Authorization: BASIC ".base64_encode("$user:$pass")."\r\n");
 | 
			
		||||
                    }
 | 
			
		||||
 | 
			
		||||
                    fputs($fp, "\r\n");
 | 
			
		||||
                    while(!feof($fp)) {
 | 
			
		||||
                        $content .= fgets($fp,4096);
 | 
			
		||||
                    }
 | 
			
		||||
                    fclose($fp);
 | 
			
		||||
                    $csplit = preg_split("!\r\n\r\n!",$content,2);
 | 
			
		||||
 | 
			
		||||
                    $content = $csplit[1];
 | 
			
		||||
 | 
			
		||||
                    if(!empty($params['assign_headers'])) {
 | 
			
		||||
                        $template->assign($params['assign_headers'],preg_split("!\r\n!",$csplit[0]));
 | 
			
		||||
                    }
 | 
			
		||||
                }
 | 
			
		||||
            } else {
 | 
			
		||||
                trigger_error("[plugin fetch] unable to parse URL, check syntax",E_USER_NOTICE);
 | 
			
		||||
                return;
 | 
			
		||||
            }
 | 
			
		||||
        } else {
 | 
			
		||||
            // ftp fetch
 | 
			
		||||
            if($fp = @fopen($params['file'],'r')) {
 | 
			
		||||
                while(!feof($fp)) {
 | 
			
		||||
                    $content .= fgets ($fp,4096);
 | 
			
		||||
                }
 | 
			
		||||
                fclose($fp);
 | 
			
		||||
            } else {
 | 
			
		||||
                trigger_error('[plugin] fetch cannot read file \'' . $params['file'] .'\'',E_USER_NOTICE);
 | 
			
		||||
                return;
 | 
			
		||||
            }
 | 
			
		||||
        }
 | 
			
		||||
 | 
			
		||||
    }
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
    if (!empty($params['assign'])) {
 | 
			
		||||
        $template->assign($params['assign'],$content);
 | 
			
		||||
    } else {
 | 
			
		||||
        return $content;
 | 
			
		||||
    }
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
?>
 | 
			
		||||
							
								
								
									
										143
									
								
								site/stackreach/libs/plugins/function.html_checkboxes.php
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										143
									
								
								site/stackreach/libs/plugins/function.html_checkboxes.php
									
									
									
									
									
										Normal file
									
								
							@@ -0,0 +1,143 @@
 | 
			
		||||
<?php
 | 
			
		||||
/**
 | 
			
		||||
 * Smarty plugin
 | 
			
		||||
 *
 | 
			
		||||
 * @package Smarty
 | 
			
		||||
 * @subpackage PluginsFunction
 | 
			
		||||
 */
 | 
			
		||||
 | 
			
		||||
/**
 | 
			
		||||
 * Smarty {html_checkboxes} function plugin
 | 
			
		||||
 *
 | 
			
		||||
 * File:       function.html_checkboxes.php<br>
 | 
			
		||||
 * Type:       function<br>
 | 
			
		||||
 * Name:       html_checkboxes<br>
 | 
			
		||||
 * Date:       24.Feb.2003<br>
 | 
			
		||||
 * Purpose:    Prints out a list of checkbox input types<br>
 | 
			
		||||
 * Examples:
 | 
			
		||||
 * <pre>
 | 
			
		||||
 * {html_checkboxes values=$ids output=$names}
 | 
			
		||||
 * {html_checkboxes values=$ids name='box' separator='<br>' output=$names}
 | 
			
		||||
 * {html_checkboxes values=$ids checked=$checked separator='<br>' output=$names}
 | 
			
		||||
 * </pre>
 | 
			
		||||
 * @link http://smarty.php.net/manual/en/language.function.html.checkboxes.php {html_checkboxes}
 | 
			
		||||
 *      (Smarty online manual)
 | 
			
		||||
 * @author     Christopher Kvarme <christopher.kvarme@flashjab.com>
 | 
			
		||||
 * @author credits to Monte Ohrt <monte at ohrt dot com>
 | 
			
		||||
 * @version    1.0
 | 
			
		||||
 * @param array $params parameters
 | 
			
		||||
 * Input:<br>
 | 
			
		||||
 *           - name       (optional) - string default "checkbox"
 | 
			
		||||
 *           - values     (required) - array
 | 
			
		||||
 *           - options    (optional) - associative array
 | 
			
		||||
 *           - checked    (optional) - array default not set
 | 
			
		||||
 *           - separator  (optional) - ie <br> or  
 | 
			
		||||
 *           - output     (optional) - the output next to each checkbox
 | 
			
		||||
 *           - assign     (optional) - assign the output as an array to this variable
 | 
			
		||||
 * @param object $template template object
 | 
			
		||||
 * @return string
 | 
			
		||||
 * @uses smarty_function_escape_special_chars()
 | 
			
		||||
 */
 | 
			
		||||
function smarty_function_html_checkboxes($params, $template)
 | 
			
		||||
{
 | 
			
		||||
    require_once(SMARTY_PLUGINS_DIR . 'shared.escape_special_chars.php');
 | 
			
		||||
 | 
			
		||||
    $name = 'checkbox';
 | 
			
		||||
    $values = null;
 | 
			
		||||
    $options = null;
 | 
			
		||||
    $selected = null;
 | 
			
		||||
    $separator = '';
 | 
			
		||||
    $labels = true;
 | 
			
		||||
    $output = null;
 | 
			
		||||
 | 
			
		||||
    $extra = '';
 | 
			
		||||
 | 
			
		||||
    foreach($params as $_key => $_val) {
 | 
			
		||||
        switch($_key) {
 | 
			
		||||
            case 'name':
 | 
			
		||||
            case 'separator':
 | 
			
		||||
                $$_key = $_val;
 | 
			
		||||
                break;
 | 
			
		||||
 | 
			
		||||
            case 'labels':
 | 
			
		||||
                $$_key = (bool)$_val;
 | 
			
		||||
                break;
 | 
			
		||||
 | 
			
		||||
            case 'options':
 | 
			
		||||
                $$_key = (array)$_val;
 | 
			
		||||
                break;
 | 
			
		||||
 | 
			
		||||
            case 'values':
 | 
			
		||||
            case 'output':
 | 
			
		||||
                $$_key = array_values((array)$_val);
 | 
			
		||||
                break;
 | 
			
		||||
 | 
			
		||||
            case 'checked':
 | 
			
		||||
            case 'selected':
 | 
			
		||||
                $selected = array_map('strval', array_values((array)$_val));
 | 
			
		||||
                break;
 | 
			
		||||
 | 
			
		||||
            case 'checkboxes':
 | 
			
		||||
                trigger_error('html_checkboxes: the use of the "checkboxes" attribute is deprecated, use "options" instead', E_USER_WARNING);
 | 
			
		||||
                $options = (array)$_val;
 | 
			
		||||
                break;
 | 
			
		||||
 | 
			
		||||
            case 'assign':
 | 
			
		||||
                break;
 | 
			
		||||
 | 
			
		||||
            default:
 | 
			
		||||
                if(!is_array($_val)) {
 | 
			
		||||
                    $extra .= ' '.$_key.'="'.smarty_function_escape_special_chars($_val).'"';
 | 
			
		||||
                } else {
 | 
			
		||||
                    trigger_error("html_checkboxes: extra attribute '$_key' cannot be an array", E_USER_NOTICE);
 | 
			
		||||
                }
 | 
			
		||||
                break;
 | 
			
		||||
        }
 | 
			
		||||
    }
 | 
			
		||||
 | 
			
		||||
    if (!isset($options) && !isset($values))
 | 
			
		||||
        return ''; /* raise error here? */
 | 
			
		||||
 | 
			
		||||
    settype($selected, 'array');
 | 
			
		||||
    $_html_result = array();
 | 
			
		||||
 | 
			
		||||
    if (isset($options)) {
 | 
			
		||||
 | 
			
		||||
        foreach ($options as $_key=>$_val)
 | 
			
		||||
            $_html_result[] = smarty_function_html_checkboxes_output($name, $_key, $_val, $selected, $extra, $separator, $labels);
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
    } else {
 | 
			
		||||
        foreach ($values as $_i=>$_key) {
 | 
			
		||||
            $_val = isset($output[$_i]) ? $output[$_i] : '';
 | 
			
		||||
            $_html_result[] = smarty_function_html_checkboxes_output($name, $_key, $_val, $selected, $extra, $separator, $labels);
 | 
			
		||||
        }
 | 
			
		||||
 | 
			
		||||
    }
 | 
			
		||||
 | 
			
		||||
    if(!empty($params['assign'])) {
 | 
			
		||||
        $template->assign($params['assign'], $_html_result);
 | 
			
		||||
    } else {
 | 
			
		||||
        return implode("\n",$_html_result);
 | 
			
		||||
    }
 | 
			
		||||
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
function smarty_function_html_checkboxes_output($name, $value, $output, $selected, $extra, $separator, $labels) {
 | 
			
		||||
    $_output = '';
 | 
			
		||||
    if ($labels) $_output .= '<label>';
 | 
			
		||||
    $_output .= '<input type="checkbox" name="'
 | 
			
		||||
        . smarty_function_escape_special_chars($name) . '[]" value="'
 | 
			
		||||
        . smarty_function_escape_special_chars($value) . '"';
 | 
			
		||||
 | 
			
		||||
    if (in_array((string)$value, $selected)) {
 | 
			
		||||
        $_output .= ' checked="checked"';
 | 
			
		||||
    }
 | 
			
		||||
    $_output .= $extra . ' />' . $output;
 | 
			
		||||
    if ($labels) $_output .= '</label>';
 | 
			
		||||
    $_output .=  $separator;
 | 
			
		||||
 | 
			
		||||
    return $_output;
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
?>
 | 
			
		||||
							
								
								
									
										137
									
								
								site/stackreach/libs/plugins/function.html_image.php
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										137
									
								
								site/stackreach/libs/plugins/function.html_image.php
									
									
									
									
									
										Normal file
									
								
							@@ -0,0 +1,137 @@
 | 
			
		||||
<?php
 | 
			
		||||
/**
 | 
			
		||||
 * Smarty plugin
 | 
			
		||||
 * 
 | 
			
		||||
 * @package Smarty
 | 
			
		||||
 * @subpackage PluginsFunction
 | 
			
		||||
 */
 | 
			
		||||
 | 
			
		||||
/**
 | 
			
		||||
 * Smarty {html_image} function plugin
 | 
			
		||||
 * 
 | 
			
		||||
 * Type:     function<br>
 | 
			
		||||
 * Name:     html_image<br>
 | 
			
		||||
 * Date:     Feb 24, 2003<br>
 | 
			
		||||
 * Purpose:  format HTML tags for the image<br>
 | 
			
		||||
 * Examples: {html_image file="/images/masthead.gif"}
 | 
			
		||||
 * Output:   <img src="/images/masthead.gif" width=400 height=23>
 | 
			
		||||
 * 
 | 
			
		||||
 * @link http://smarty.php.net/manual/en/language.function.html.image.php {html_image}
 | 
			
		||||
 *      (Smarty online manual)
 | 
			
		||||
 * @author Monte Ohrt <monte at ohrt dot com> 
 | 
			
		||||
 * @author credits to Duda <duda@big.hu> 
 | 
			
		||||
 * @version 1.0
 | 
			
		||||
 * @param array $params parameters
 | 
			
		||||
 * Input:<br>
 | 
			
		||||
 *          - file = file (and path) of image (required)
 | 
			
		||||
 *          - height = image height (optional, default actual height)
 | 
			
		||||
 *          - width = image width (optional, default actual width)
 | 
			
		||||
 *          - basedir = base directory for absolute paths, default
 | 
			
		||||
 *                      is environment variable DOCUMENT_ROOT
 | 
			
		||||
 *          - path_prefix = prefix for path output (optional, default empty)
 | 
			
		||||
 * @param object $template template object
 | 
			
		||||
 * @return string 
 | 
			
		||||
 * @uses smarty_function_escape_special_chars()
 | 
			
		||||
 */
 | 
			
		||||
function smarty_function_html_image($params, $template)
 | 
			
		||||
{
 | 
			
		||||
    require_once(SMARTY_PLUGINS_DIR . 'shared.escape_special_chars.php');
 | 
			
		||||
 
 | 
			
		||||
    $alt = '';
 | 
			
		||||
    $file = '';
 | 
			
		||||
    $height = '';
 | 
			
		||||
    $width = '';
 | 
			
		||||
    $extra = '';
 | 
			
		||||
    $prefix = '';
 | 
			
		||||
    $suffix = '';
 | 
			
		||||
    $path_prefix = '';
 | 
			
		||||
    $server_vars = $_SERVER;
 | 
			
		||||
    $basedir = isset($server_vars['DOCUMENT_ROOT']) ? $server_vars['DOCUMENT_ROOT'] : '';
 | 
			
		||||
    foreach($params as $_key => $_val) {
 | 
			
		||||
        switch ($_key) {
 | 
			
		||||
            case 'file':
 | 
			
		||||
            case 'height':
 | 
			
		||||
            case 'width':
 | 
			
		||||
            case 'dpi':
 | 
			
		||||
            case 'path_prefix':
 | 
			
		||||
            case 'basedir':
 | 
			
		||||
                $$_key = $_val;
 | 
			
		||||
                break;
 | 
			
		||||
 | 
			
		||||
            case 'alt':
 | 
			
		||||
                if (!is_array($_val)) {
 | 
			
		||||
                    $$_key = smarty_function_escape_special_chars($_val);
 | 
			
		||||
                } else {
 | 
			
		||||
                    throw new SmartyException ("html_image: extra attribute '$_key' cannot be an array", E_USER_NOTICE);
 | 
			
		||||
                } 
 | 
			
		||||
                break;
 | 
			
		||||
 | 
			
		||||
            case 'link':
 | 
			
		||||
            case 'href':
 | 
			
		||||
                $prefix = '<a href="' . $_val . '">';
 | 
			
		||||
                $suffix = '</a>';
 | 
			
		||||
                break;
 | 
			
		||||
 | 
			
		||||
            default:
 | 
			
		||||
                if (!is_array($_val)) {
 | 
			
		||||
                    $extra .= ' ' . $_key . '="' . smarty_function_escape_special_chars($_val) . '"';
 | 
			
		||||
                } else {
 | 
			
		||||
                    throw new SmartyException ("html_image: extra attribute '$_key' cannot be an array", E_USER_NOTICE);
 | 
			
		||||
                } 
 | 
			
		||||
                break;
 | 
			
		||||
        } 
 | 
			
		||||
    } 
 | 
			
		||||
 | 
			
		||||
    if (empty($file)) {
 | 
			
		||||
        trigger_error("html_image: missing 'file' parameter", E_USER_NOTICE);
 | 
			
		||||
        return;
 | 
			
		||||
    } 
 | 
			
		||||
 | 
			
		||||
    if (substr($file, 0, 1) == '/') {
 | 
			
		||||
        $_image_path = $basedir . $file;
 | 
			
		||||
    } else {
 | 
			
		||||
        $_image_path = $file;
 | 
			
		||||
    } 
 | 
			
		||||
 | 
			
		||||
    if (!isset($params['width']) || !isset($params['height'])) {
 | 
			
		||||
        if (!$_image_data = @getimagesize($_image_path)) {
 | 
			
		||||
            if (!file_exists($_image_path)) {
 | 
			
		||||
                trigger_error("html_image: unable to find '$_image_path'", E_USER_NOTICE);
 | 
			
		||||
                return;
 | 
			
		||||
            } else if (!is_readable($_image_path)) {
 | 
			
		||||
                trigger_error("html_image: unable to read '$_image_path'", E_USER_NOTICE);
 | 
			
		||||
                return;
 | 
			
		||||
            } else {
 | 
			
		||||
                trigger_error("html_image: '$_image_path' is not a valid image file", E_USER_NOTICE);
 | 
			
		||||
                return;
 | 
			
		||||
            } 
 | 
			
		||||
        } 
 | 
			
		||||
        if (isset($template->security_policy)) {
 | 
			
		||||
            if (!$template->security_policy->isTrustedResourceDir($_image_path)) {
 | 
			
		||||
                return;
 | 
			
		||||
            } 
 | 
			
		||||
        } 
 | 
			
		||||
 | 
			
		||||
        if (!isset($params['width'])) {
 | 
			
		||||
            $width = $_image_data[0];
 | 
			
		||||
        } 
 | 
			
		||||
        if (!isset($params['height'])) {
 | 
			
		||||
            $height = $_image_data[1];
 | 
			
		||||
        } 
 | 
			
		||||
    } 
 | 
			
		||||
 | 
			
		||||
    if (isset($params['dpi'])) {
 | 
			
		||||
        if (strstr($server_vars['HTTP_USER_AGENT'], 'Mac')) {
 | 
			
		||||
            $dpi_default = 72;
 | 
			
		||||
        } else {
 | 
			
		||||
            $dpi_default = 96;
 | 
			
		||||
        } 
 | 
			
		||||
        $_resize = $dpi_default / $params['dpi'];
 | 
			
		||||
        $width = round($width * $_resize);
 | 
			
		||||
        $height = round($height * $_resize);
 | 
			
		||||
    } 
 | 
			
		||||
 | 
			
		||||
    return $prefix . '<img src="' . $path_prefix . $file . '" alt="' . $alt . '" width="' . $width . '" height="' . $height . '"' . $extra . ' />' . $suffix;
 | 
			
		||||
} 
 | 
			
		||||
 | 
			
		||||
?>
 | 
			
		||||
							
								
								
									
										133
									
								
								site/stackreach/libs/plugins/function.html_options.php
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										133
									
								
								site/stackreach/libs/plugins/function.html_options.php
									
									
									
									
									
										Normal file
									
								
							@@ -0,0 +1,133 @@
 | 
			
		||||
<?php
 | 
			
		||||
/**
 | 
			
		||||
 * Smarty plugin
 | 
			
		||||
 * 
 | 
			
		||||
 * @package Smarty
 | 
			
		||||
 * @subpackage PluginsFunction
 | 
			
		||||
 */
 | 
			
		||||
 | 
			
		||||
/**
 | 
			
		||||
 * Smarty {html_options} function plugin
 | 
			
		||||
 * 
 | 
			
		||||
 * Type:     function<br>
 | 
			
		||||
 * Name:     html_options<br>
 | 
			
		||||
 * Purpose:  Prints the list of <option> tags generated from
 | 
			
		||||
 *            the passed parameters
 | 
			
		||||
 * 
 | 
			
		||||
 * @link http://smarty.php.net/manual/en/language.function.html.options.php {html_image}
 | 
			
		||||
 *      (Smarty online manual)
 | 
			
		||||
 * @author Monte Ohrt <monte at ohrt dot com> 
 | 
			
		||||
 * @param array $params parameters
 | 
			
		||||
 * Input:<br>
 | 
			
		||||
 *            - name       (optional) - string default "select"
 | 
			
		||||
 *            - values     (required if no options supplied) - array
 | 
			
		||||
 *            - options    (required if no values supplied) - associative array
 | 
			
		||||
 *            - selected   (optional) - string default not set
 | 
			
		||||
 *            - output     (required if not options supplied) - array
 | 
			
		||||
 * @param object $template template object
 | 
			
		||||
 * @return string 
 | 
			
		||||
 * @uses smarty_function_escape_special_chars()
 | 
			
		||||
 */
 | 
			
		||||
function smarty_function_html_options($params, $template)
 | 
			
		||||
{
 | 
			
		||||
    require_once(SMARTY_PLUGINS_DIR . 'shared.escape_special_chars.php');
 | 
			
		||||
 | 
			
		||||
    $name = null;
 | 
			
		||||
    $values = null;
 | 
			
		||||
    $options = null;
 | 
			
		||||
    $selected = array();
 | 
			
		||||
    $output = null;
 | 
			
		||||
    $id = null;
 | 
			
		||||
    $class = null;
 | 
			
		||||
 | 
			
		||||
    $extra = '';
 | 
			
		||||
    $options_extra = '';
 | 
			
		||||
 | 
			
		||||
    foreach($params as $_key => $_val) {
 | 
			
		||||
        switch ($_key) {
 | 
			
		||||
            case 'name':
 | 
			
		||||
            case 'class':
 | 
			
		||||
            case 'id':
 | 
			
		||||
                $$_key = (string)$_val;
 | 
			
		||||
                break;
 | 
			
		||||
 | 
			
		||||
            case 'options':
 | 
			
		||||
                $$_key = (array)$_val;
 | 
			
		||||
                break;
 | 
			
		||||
 | 
			
		||||
            case 'values':
 | 
			
		||||
            case 'output':
 | 
			
		||||
                $$_key = array_values((array)$_val);
 | 
			
		||||
                break;
 | 
			
		||||
 | 
			
		||||
            case 'selected':
 | 
			
		||||
                $$_key = array_map('strval', array_values((array)$_val));
 | 
			
		||||
                break;
 | 
			
		||||
 | 
			
		||||
            default:
 | 
			
		||||
                if (!is_array($_val)) {
 | 
			
		||||
                    $extra .= ' ' . $_key . '="' . smarty_function_escape_special_chars($_val) . '"';
 | 
			
		||||
                } else {
 | 
			
		||||
                    trigger_error("html_options: extra attribute '$_key' cannot be an array", E_USER_NOTICE);
 | 
			
		||||
                } 
 | 
			
		||||
                break;
 | 
			
		||||
        } 
 | 
			
		||||
    } 
 | 
			
		||||
 | 
			
		||||
    if (!isset($options) && !isset($values))
 | 
			
		||||
        return '';
 | 
			
		||||
    /* raise error here? */
 | 
			
		||||
 | 
			
		||||
    $_html_result = '';
 | 
			
		||||
    $_idx = 0;
 | 
			
		||||
 | 
			
		||||
    if (isset($options)) {
 | 
			
		||||
        foreach ($options as $_key => $_val) {
 | 
			
		||||
          $_html_result .= smarty_function_html_options_optoutput($_key, $_val, $selected, $id, $class, $_idx);
 | 
			
		||||
        }
 | 
			
		||||
    } else {
 | 
			
		||||
        foreach ($values as $_i => $_key) {
 | 
			
		||||
            $_val = isset($output[$_i]) ? $output[$_i] : '';
 | 
			
		||||
            $_html_result .= smarty_function_html_options_optoutput($_key, $_val, $selected, $id, $class, $_idx);
 | 
			
		||||
        } 
 | 
			
		||||
    } 
 | 
			
		||||
 | 
			
		||||
    if (!empty($name)) {
 | 
			
		||||
        $_html_class = !empty($class) ? ' class="'.$class.'"' : '';
 | 
			
		||||
        $_html_id = !empty($id) ? ' id="'.$id.'"' : '';
 | 
			
		||||
        $_html_result = '<select name="' . $name . '"' . $_html_class . $_html_id . $extra . '>' . "\n" . $_html_result . '</select>' . "\n";
 | 
			
		||||
    } 
 | 
			
		||||
 | 
			
		||||
    return $_html_result;
 | 
			
		||||
} 
 | 
			
		||||
 | 
			
		||||
function smarty_function_html_options_optoutput($key, $value, $selected, $id, $class, &$idx)
 | 
			
		||||
{
 | 
			
		||||
    if (!is_array($value)) {
 | 
			
		||||
        $_html_result = '<option value="' .
 | 
			
		||||
        smarty_function_escape_special_chars($key) . '"';
 | 
			
		||||
        if (in_array((string)$key, $selected))
 | 
			
		||||
            $_html_result .= ' selected="selected"';
 | 
			
		||||
        $_html_class = !empty($class) ? ' class="'.$class.' option"' : '';
 | 
			
		||||
        $_html_id = !empty($id) ? ' id="'.$id.'-'.$idx.'"' : '';
 | 
			
		||||
        $_html_result .= $_html_class . $_html_id . '>' . smarty_function_escape_special_chars($value) . '</option>' . "\n";
 | 
			
		||||
        $idx++;
 | 
			
		||||
    } else {
 | 
			
		||||
        $_idx = 0;
 | 
			
		||||
        $_html_result = smarty_function_html_options_optgroup($key, $value, $selected, $id.'-'.$idx, $class, $_idx);
 | 
			
		||||
        $idx++;
 | 
			
		||||
    }
 | 
			
		||||
    return $_html_result;
 | 
			
		||||
} 
 | 
			
		||||
 | 
			
		||||
function smarty_function_html_options_optgroup($key, $values, $selected, $id, $class, &$idx)
 | 
			
		||||
{
 | 
			
		||||
    $optgroup_html = '<optgroup label="' . smarty_function_escape_special_chars($key) . '">' . "\n";
 | 
			
		||||
    foreach ($values as $key => $value) {
 | 
			
		||||
        $optgroup_html .= smarty_function_html_options_optoutput($key, $value, $selected, $id, $class, $idx);
 | 
			
		||||
    } 
 | 
			
		||||
    $optgroup_html .= "</optgroup>\n";
 | 
			
		||||
    return $optgroup_html;
 | 
			
		||||
} 
 | 
			
		||||
 | 
			
		||||
?>
 | 
			
		||||
							
								
								
									
										154
									
								
								site/stackreach/libs/plugins/function.html_radios.php
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										154
									
								
								site/stackreach/libs/plugins/function.html_radios.php
									
									
									
									
									
										Normal file
									
								
							@@ -0,0 +1,154 @@
 | 
			
		||||
<?php
 | 
			
		||||
/**
 | 
			
		||||
 * Smarty plugin
 | 
			
		||||
 * 
 | 
			
		||||
 * @package Smarty
 | 
			
		||||
 * @subpackage PluginsFunction
 | 
			
		||||
 */
 | 
			
		||||
 | 
			
		||||
/**
 | 
			
		||||
 * Smarty {html_radios} function plugin
 | 
			
		||||
 * 
 | 
			
		||||
 * File:       function.html_radios.php<br>
 | 
			
		||||
 * Type:       function<br>
 | 
			
		||||
 * Name:       html_radios<br>
 | 
			
		||||
 * Date:       24.Feb.2003<br>
 | 
			
		||||
 * Purpose:    Prints out a list of radio input types<br>
 | 
			
		||||
 * Examples:
 | 
			
		||||
 * <pre>
 | 
			
		||||
 * {html_radios values=$ids output=$names}
 | 
			
		||||
 * {html_radios values=$ids name='box' separator='<br>' output=$names}
 | 
			
		||||
 * {html_radios values=$ids checked=$checked separator='<br>' output=$names}
 | 
			
		||||
 * </pre>
 | 
			
		||||
 * 
 | 
			
		||||
 * @link http://smarty.php.net/manual/en/language.function.html.radios.php {html_radios}
 | 
			
		||||
 *      (Smarty online manual)
 | 
			
		||||
 * @author Christopher Kvarme <christopher.kvarme@flashjab.com> 
 | 
			
		||||
 * @author credits to Monte Ohrt <monte at ohrt dot com> 
 | 
			
		||||
 * @version 1.0
 | 
			
		||||
 * @param array $params parameters
 | 
			
		||||
 * Input:<br>
 | 
			
		||||
 *            - name       (optional) - string default "radio"
 | 
			
		||||
 *            - values     (required) - array
 | 
			
		||||
 *            - options    (optional) - associative array
 | 
			
		||||
 *            - checked    (optional) - array default not set
 | 
			
		||||
 *            - separator  (optional) - ie <br> or  
 | 
			
		||||
 *            - output     (optional) - the output next to each radio button
 | 
			
		||||
 *            - assign     (optional) - assign the output as an array to this variable
 | 
			
		||||
 * @param object $template template object
 | 
			
		||||
 * @return string 
 | 
			
		||||
 * @uses smarty_function_escape_special_chars()
 | 
			
		||||
 */
 | 
			
		||||
function smarty_function_html_radios($params, $template)
 | 
			
		||||
{
 | 
			
		||||
    require_once(SMARTY_PLUGINS_DIR . 'shared.escape_special_chars.php');
 | 
			
		||||
 | 
			
		||||
    $name = 'radio';
 | 
			
		||||
    $values = null;
 | 
			
		||||
    $options = null;
 | 
			
		||||
    $selected = null;
 | 
			
		||||
    $separator = '';
 | 
			
		||||
    $labels = true;
 | 
			
		||||
    $label_ids = false;
 | 
			
		||||
    $output = null;
 | 
			
		||||
    $extra = '';
 | 
			
		||||
 | 
			
		||||
    foreach($params as $_key => $_val) {
 | 
			
		||||
        switch ($_key) {
 | 
			
		||||
            case 'name':
 | 
			
		||||
            case 'separator':
 | 
			
		||||
                $$_key = (string)$_val;
 | 
			
		||||
                break;
 | 
			
		||||
 | 
			
		||||
            case 'checked':
 | 
			
		||||
            case 'selected':
 | 
			
		||||
                if (is_array($_val)) {
 | 
			
		||||
                    trigger_error('html_radios: the "' . $_key . '" attribute cannot be an array', E_USER_WARNING);
 | 
			
		||||
                } else {
 | 
			
		||||
                    $selected = (string)$_val;
 | 
			
		||||
                } 
 | 
			
		||||
                break;
 | 
			
		||||
 | 
			
		||||
            case 'labels':
 | 
			
		||||
            case 'label_ids':
 | 
			
		||||
                $$_key = (bool)$_val;
 | 
			
		||||
                break;
 | 
			
		||||
 | 
			
		||||
            case 'options':
 | 
			
		||||
                $$_key = (array)$_val;
 | 
			
		||||
                break;
 | 
			
		||||
 | 
			
		||||
            case 'values':
 | 
			
		||||
            case 'output':
 | 
			
		||||
                $$_key = array_values((array)$_val);
 | 
			
		||||
                break;
 | 
			
		||||
 | 
			
		||||
            case 'radios':
 | 
			
		||||
                trigger_error('html_radios: the use of the "radios" attribute is deprecated, use "options" instead', E_USER_WARNING);
 | 
			
		||||
                $options = (array)$_val;
 | 
			
		||||
                break;
 | 
			
		||||
 | 
			
		||||
            case 'assign':
 | 
			
		||||
                break;
 | 
			
		||||
 | 
			
		||||
            default:
 | 
			
		||||
                if (!is_array($_val)) {
 | 
			
		||||
                    $extra .= ' ' . $_key . '="' . smarty_function_escape_special_chars($_val) . '"';
 | 
			
		||||
                } else {
 | 
			
		||||
                    trigger_error("html_radios: extra attribute '$_key' cannot be an array", E_USER_NOTICE);
 | 
			
		||||
                } 
 | 
			
		||||
                break;
 | 
			
		||||
        } 
 | 
			
		||||
    } 
 | 
			
		||||
 | 
			
		||||
    if (!isset($options) && !isset($values))
 | 
			
		||||
        return '';
 | 
			
		||||
    /* raise error here? */
 | 
			
		||||
 | 
			
		||||
    $_html_result = array();
 | 
			
		||||
 | 
			
		||||
    if (isset($options)) {
 | 
			
		||||
        foreach ($options as $_key => $_val)
 | 
			
		||||
        $_html_result[] = smarty_function_html_radios_output($name, $_key, $_val, $selected, $extra, $separator, $labels, $label_ids);
 | 
			
		||||
    } else {
 | 
			
		||||
        foreach ($values as $_i => $_key) {
 | 
			
		||||
            $_val = isset($output[$_i]) ? $output[$_i] : '';
 | 
			
		||||
            $_html_result[] = smarty_function_html_radios_output($name, $_key, $_val, $selected, $extra, $separator, $labels, $label_ids);
 | 
			
		||||
        } 
 | 
			
		||||
    } 
 | 
			
		||||
 | 
			
		||||
    if (!empty($params['assign'])) {
 | 
			
		||||
        $template->assign($params['assign'], $_html_result);
 | 
			
		||||
    } else {
 | 
			
		||||
        return implode("\n", $_html_result);
 | 
			
		||||
    } 
 | 
			
		||||
} 
 | 
			
		||||
 | 
			
		||||
function smarty_function_html_radios_output($name, $value, $output, $selected, $extra, $separator, $labels, $label_ids)
 | 
			
		||||
{
 | 
			
		||||
    $_output = '';
 | 
			
		||||
    if ($labels) {
 | 
			
		||||
        if ($label_ids) {
 | 
			
		||||
            $_id = smarty_function_escape_special_chars(preg_replace('![^\w\-\.]!', '_', $name . '_' . $value));
 | 
			
		||||
            $_output .= '<label for="' . $_id . '">';
 | 
			
		||||
        } else {
 | 
			
		||||
            $_output .= '<label>';
 | 
			
		||||
        } 
 | 
			
		||||
    } 
 | 
			
		||||
    $_output .= '<input type="radio" name="'
 | 
			
		||||
     . smarty_function_escape_special_chars($name) . '" value="'
 | 
			
		||||
     . smarty_function_escape_special_chars($value) . '"';
 | 
			
		||||
 | 
			
		||||
    if ($labels && $label_ids) $_output .= ' id="' . $_id . '"';
 | 
			
		||||
 | 
			
		||||
    if ((string)$value == $selected) {
 | 
			
		||||
        $_output .= ' checked="checked"';
 | 
			
		||||
    } 
 | 
			
		||||
    $_output .= $extra . ' />' . $output;
 | 
			
		||||
    if ($labels) $_output .= '</label>';
 | 
			
		||||
    $_output .= $separator;
 | 
			
		||||
 | 
			
		||||
    return $_output;
 | 
			
		||||
} 
 | 
			
		||||
 | 
			
		||||
?>
 | 
			
		||||
							
								
								
									
										330
									
								
								site/stackreach/libs/plugins/function.html_select_date.php
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										330
									
								
								site/stackreach/libs/plugins/function.html_select_date.php
									
									
									
									
									
										Normal file
									
								
							@@ -0,0 +1,330 @@
 | 
			
		||||
<?php
 | 
			
		||||
/**
 | 
			
		||||
 * Smarty plugin
 | 
			
		||||
 * 
 | 
			
		||||
 * @package Smarty
 | 
			
		||||
 * @subpackage PluginsFunction
 | 
			
		||||
 */
 | 
			
		||||
 | 
			
		||||
/**
 | 
			
		||||
 * Smarty {html_select_date} plugin
 | 
			
		||||
 * 
 | 
			
		||||
 * Type:     function<br>
 | 
			
		||||
 * Name:     html_select_date<br>
 | 
			
		||||
 * Purpose:  Prints the dropdowns for date selection.
 | 
			
		||||
 * 
 | 
			
		||||
 * ChangeLog:<br>
 | 
			
		||||
 *            - 1.0 initial release
 | 
			
		||||
 *            - 1.1 added support for +/- N syntax for begin
 | 
			
		||||
 *                 and end year values. (Monte)
 | 
			
		||||
 *            - 1.2 added support for yyyy-mm-dd syntax for
 | 
			
		||||
 *                 time value. (Jan Rosier)
 | 
			
		||||
 *            - 1.3 added support for choosing format for
 | 
			
		||||
 *                 month values (Gary Loescher)
 | 
			
		||||
 *            - 1.3.1 added support for choosing format for
 | 
			
		||||
 *                 day values (Marcus Bointon)
 | 
			
		||||
 *            - 1.3.2 support negative timestamps, force year
 | 
			
		||||
 *              dropdown to include given date unless explicitly set (Monte)
 | 
			
		||||
 *            - 1.3.4 fix behaviour of 0000-00-00 00:00:00 dates to match that
 | 
			
		||||
 *              of 0000-00-00 dates (cybot, boots)
 | 
			
		||||
 * 
 | 
			
		||||
 * @link http://smarty.php.net/manual/en/language.function.html.select.date.php {html_select_date}
 | 
			
		||||
 *      (Smarty online manual)
 | 
			
		||||
 * @version 1.3.4
 | 
			
		||||
 * @author Andrei Zmievski 
 | 
			
		||||
 * @author Monte Ohrt <monte at ohrt dot com> 
 | 
			
		||||
 * @param array $params parameters
 | 
			
		||||
 * @param object $template template object
 | 
			
		||||
 * @return string 
 | 
			
		||||
 */
 | 
			
		||||
function smarty_function_html_select_date($params, $template)
 | 
			
		||||
{
 | 
			
		||||
    require_once(SMARTY_PLUGINS_DIR . 'shared.escape_special_chars.php');
 | 
			
		||||
    require_once(SMARTY_PLUGINS_DIR . 'shared.make_timestamp.php');
 | 
			
		||||
    require_once(SMARTY_PLUGINS_DIR . 'function.html_options.php');
 | 
			
		||||
 | 
			
		||||
    /* Default values. */
 | 
			
		||||
    $prefix = "Date_";
 | 
			
		||||
    $start_year = strftime("%Y");
 | 
			
		||||
    $end_year = $start_year;
 | 
			
		||||
    $display_days = true;
 | 
			
		||||
    $display_months = true;
 | 
			
		||||
    $display_years = true;
 | 
			
		||||
    $month_format = "%B";
 | 
			
		||||
    /* Write months as numbers by default  GL */
 | 
			
		||||
    $month_value_format = "%m";
 | 
			
		||||
    $day_format = "%02d";
 | 
			
		||||
    /* Write day values using this format MB */
 | 
			
		||||
    $day_value_format = "%d";
 | 
			
		||||
    $year_as_text = false;
 | 
			
		||||
    /* Display years in reverse order? Ie. 2000,1999,.... */
 | 
			
		||||
    $reverse_years = false;
 | 
			
		||||
    /* Should the select boxes be part of an array when returned from PHP?
 | 
			
		||||
       e.g. setting it to "birthday", would create "birthday[Day]",
 | 
			
		||||
       "birthday[Month]" & "birthday[Year]". Can be combined with prefix */
 | 
			
		||||
    $field_array = null;
 | 
			
		||||
    /* <select size>'s of the different <select> tags.
 | 
			
		||||
       If not set, uses default dropdown. */
 | 
			
		||||
    $day_size = null;
 | 
			
		||||
    $month_size = null;
 | 
			
		||||
    $year_size = null;
 | 
			
		||||
    /* Unparsed attributes common to *ALL* the <select>/<input> tags.
 | 
			
		||||
       An example might be in the template: all_extra ='class ="foo"'. */
 | 
			
		||||
    $all_extra = null;
 | 
			
		||||
    /* Separate attributes for the tags. */
 | 
			
		||||
    $day_extra = null;
 | 
			
		||||
    $month_extra = null;
 | 
			
		||||
    $year_extra = null;
 | 
			
		||||
    /* Order in which to display the fields.
 | 
			
		||||
       "D" -> day, "M" -> month, "Y" -> year. */
 | 
			
		||||
    $field_order = 'MDY';
 | 
			
		||||
    /* String printed between the different fields. */
 | 
			
		||||
    $field_separator = "\n";
 | 
			
		||||
    $time = time();
 | 
			
		||||
    $all_empty = null;
 | 
			
		||||
    $day_empty = null;
 | 
			
		||||
    $month_empty = null;
 | 
			
		||||
    $year_empty = null;
 | 
			
		||||
    $extra_attrs = '';
 | 
			
		||||
 | 
			
		||||
    foreach ($params as $_key => $_value) {
 | 
			
		||||
        switch ($_key) {
 | 
			
		||||
            case 'prefix':
 | 
			
		||||
            case 'time':
 | 
			
		||||
            case 'start_year':
 | 
			
		||||
            case 'end_year':
 | 
			
		||||
            case 'month_format':
 | 
			
		||||
            case 'day_format':
 | 
			
		||||
            case 'day_value_format':
 | 
			
		||||
            case 'field_array':
 | 
			
		||||
            case 'day_size':
 | 
			
		||||
            case 'month_size':
 | 
			
		||||
            case 'year_size':
 | 
			
		||||
            case 'all_extra':
 | 
			
		||||
            case 'day_extra':
 | 
			
		||||
            case 'month_extra':
 | 
			
		||||
            case 'year_extra':
 | 
			
		||||
            case 'field_order':
 | 
			
		||||
            case 'field_separator':
 | 
			
		||||
            case 'month_value_format':
 | 
			
		||||
            case 'month_empty':
 | 
			
		||||
            case 'day_empty':
 | 
			
		||||
            case 'year_empty':
 | 
			
		||||
                $$_key = (string)$_value;
 | 
			
		||||
                break;
 | 
			
		||||
 | 
			
		||||
            case 'all_empty':
 | 
			
		||||
                $$_key = (string)$_value;
 | 
			
		||||
                $day_empty = $month_empty = $year_empty = $all_empty;
 | 
			
		||||
                break;
 | 
			
		||||
 | 
			
		||||
            case 'display_days':
 | 
			
		||||
            case 'display_months':
 | 
			
		||||
            case 'display_years':
 | 
			
		||||
            case 'year_as_text':
 | 
			
		||||
            case 'reverse_years':
 | 
			
		||||
                $$_key = (bool)$_value;
 | 
			
		||||
                break;
 | 
			
		||||
 | 
			
		||||
            default:
 | 
			
		||||
                if (!is_array($_value)) {
 | 
			
		||||
                    $extra_attrs .= ' ' . $_key . '="' . smarty_function_escape_special_chars($_value) . '"';
 | 
			
		||||
                } else {
 | 
			
		||||
                    trigger_error("html_select_date: extra attribute '$_key' cannot be an array", E_USER_NOTICE);
 | 
			
		||||
                } 
 | 
			
		||||
                break;
 | 
			
		||||
        } 
 | 
			
		||||
    } 
 | 
			
		||||
 | 
			
		||||
    if (preg_match('!^-\d+$!', $time)) {
 | 
			
		||||
        // negative timestamp, use date()
 | 
			
		||||
        $time = date('Y-m-d', $time);
 | 
			
		||||
    } 
 | 
			
		||||
    // If $time is not in format yyyy-mm-dd
 | 
			
		||||
    if (preg_match('/^(\d{0,4}-\d{0,2}-\d{0,2})/', $time, $found)) {
 | 
			
		||||
        $time = $found[1];
 | 
			
		||||
    } else {
 | 
			
		||||
        // use smarty_make_timestamp to get an unix timestamp and
 | 
			
		||||
        // strftime to make yyyy-mm-dd
 | 
			
		||||
        $time = strftime('%Y-%m-%d', smarty_make_timestamp($time));
 | 
			
		||||
    } 
 | 
			
		||||
    // Now split this in pieces, which later can be used to set the select
 | 
			
		||||
    $time = explode("-", $time); 
 | 
			
		||||
    // make syntax "+N" or "-N" work with start_year and end_year
 | 
			
		||||
    if (preg_match('!^(\+|\-)\s*(\d+)$!', $end_year, $match)) {
 | 
			
		||||
        if ($match[1] == '+') {
 | 
			
		||||
            $end_year = strftime('%Y') + $match[2];
 | 
			
		||||
        } else {
 | 
			
		||||
            $end_year = strftime('%Y') - $match[2];
 | 
			
		||||
        } 
 | 
			
		||||
    } 
 | 
			
		||||
    if (preg_match('!^(\+|\-)\s*(\d+)$!', $start_year, $match)) {
 | 
			
		||||
        if ($match[1] == '+') {
 | 
			
		||||
            $start_year = strftime('%Y') + $match[2];
 | 
			
		||||
        } else {
 | 
			
		||||
            $start_year = strftime('%Y') - $match[2];
 | 
			
		||||
        } 
 | 
			
		||||
    } 
 | 
			
		||||
    if (strlen($time[0]) > 0) {
 | 
			
		||||
        if ($start_year > $time[0] && !isset($params['start_year'])) {
 | 
			
		||||
            // force start year to include given date if not explicitly set
 | 
			
		||||
            $start_year = $time[0];
 | 
			
		||||
        } 
 | 
			
		||||
        if ($end_year < $time[0] && !isset($params['end_year'])) {
 | 
			
		||||
            // force end year to include given date if not explicitly set
 | 
			
		||||
            $end_year = $time[0];
 | 
			
		||||
        } 
 | 
			
		||||
    } 
 | 
			
		||||
 | 
			
		||||
    $field_order = strtoupper($field_order);
 | 
			
		||||
 | 
			
		||||
    $html_result = $month_result = $day_result = $year_result = "";
 | 
			
		||||
 | 
			
		||||
    $field_separator_count = -1;
 | 
			
		||||
    if ($display_months) {
 | 
			
		||||
        $field_separator_count++;
 | 
			
		||||
        $month_names = array();
 | 
			
		||||
        $month_values = array();
 | 
			
		||||
        if (isset($month_empty)) {
 | 
			
		||||
            $month_names[''] = $month_empty;
 | 
			
		||||
            $month_values[''] = '';
 | 
			
		||||
        } 
 | 
			
		||||
        for ($i = 1; $i <= 12; $i++) {
 | 
			
		||||
            $month_names[$i] = strftime($month_format, mktime(0, 0, 0, $i, 1, 2000));
 | 
			
		||||
            $month_values[$i] = strftime($month_value_format, mktime(0, 0, 0, $i, 1, 2000));
 | 
			
		||||
        } 
 | 
			
		||||
 | 
			
		||||
        $month_result .= '<select name=';
 | 
			
		||||
        if (null !== $field_array) {
 | 
			
		||||
            $month_result .= '"' . $field_array . '[' . $prefix . 'Month]"';
 | 
			
		||||
        } else {
 | 
			
		||||
            $month_result .= '"' . $prefix . 'Month"';
 | 
			
		||||
        } 
 | 
			
		||||
        if (null !== $month_size) {
 | 
			
		||||
            $month_result .= ' size="' . $month_size . '"';
 | 
			
		||||
        } 
 | 
			
		||||
        if (null !== $month_extra) {
 | 
			
		||||
            $month_result .= ' ' . $month_extra;
 | 
			
		||||
        } 
 | 
			
		||||
        if (null !== $all_extra) {
 | 
			
		||||
            $month_result .= ' ' . $all_extra;
 | 
			
		||||
        } 
 | 
			
		||||
        $month_result .= $extra_attrs . '>' . "\n";
 | 
			
		||||
 | 
			
		||||
        $month_result .= smarty_function_html_options(array('output' => $month_names,
 | 
			
		||||
                'values' => $month_values,
 | 
			
		||||
                'selected' => (int)$time[1] ? strftime($month_value_format, mktime(0, 0, 0, (int)$time[1], 1, 2000)) : '',
 | 
			
		||||
                'print_result' => false),
 | 
			
		||||
                 $template);
 | 
			
		||||
        $month_result .= '</select>';
 | 
			
		||||
    } 
 | 
			
		||||
 | 
			
		||||
    if ($display_days) {
 | 
			
		||||
        $field_separator_count++;
 | 
			
		||||
        $days = array();
 | 
			
		||||
        if (isset($day_empty)) {
 | 
			
		||||
            $days[''] = $day_empty;
 | 
			
		||||
            $day_values[''] = '';
 | 
			
		||||
        } 
 | 
			
		||||
        for ($i = 1; $i <= 31; $i++) {
 | 
			
		||||
            $days[] = sprintf($day_format, $i);
 | 
			
		||||
            $day_values[] = sprintf($day_value_format, $i);
 | 
			
		||||
        } 
 | 
			
		||||
 | 
			
		||||
        $day_result .= '<select name=';
 | 
			
		||||
        if (null !== $field_array) {
 | 
			
		||||
            $day_result .= '"' . $field_array . '[' . $prefix . 'Day]"';
 | 
			
		||||
        } else {
 | 
			
		||||
            $day_result .= '"' . $prefix . 'Day"';
 | 
			
		||||
        } 
 | 
			
		||||
        if (null !== $day_size) {
 | 
			
		||||
            $day_result .= ' size="' . $day_size . '"';
 | 
			
		||||
        } 
 | 
			
		||||
        if (null !== $all_extra) {
 | 
			
		||||
            $day_result .= ' ' . $all_extra;
 | 
			
		||||
        } 
 | 
			
		||||
        if (null !== $day_extra) {
 | 
			
		||||
            $day_result .= ' ' . $day_extra;
 | 
			
		||||
        } 
 | 
			
		||||
        $day_result .= $extra_attrs . '>' . "\n";
 | 
			
		||||
        $day_result .= smarty_function_html_options(array('output' => $days,
 | 
			
		||||
                'values' => $day_values,
 | 
			
		||||
                'selected' => $time[2],
 | 
			
		||||
                'print_result' => false),
 | 
			
		||||
             $template);
 | 
			
		||||
        $day_result .= '</select>';
 | 
			
		||||
    } 
 | 
			
		||||
 | 
			
		||||
    if ($display_years) {
 | 
			
		||||
        $field_separator_count++;
 | 
			
		||||
        if (null !== $field_array) {
 | 
			
		||||
            $year_name = $field_array . '[' . $prefix . 'Year]';
 | 
			
		||||
        } else {
 | 
			
		||||
            $year_name = $prefix . 'Year';
 | 
			
		||||
        } 
 | 
			
		||||
        if ($year_as_text) {
 | 
			
		||||
            $year_result .= '<input type="text" name="' . $year_name . '" value="' . $time[0] . '" size="4" maxlength="4"';
 | 
			
		||||
            if (null !== $all_extra) {
 | 
			
		||||
                $year_result .= ' ' . $all_extra;
 | 
			
		||||
            } 
 | 
			
		||||
            if (null !== $year_extra) {
 | 
			
		||||
                $year_result .= ' ' . $year_extra;
 | 
			
		||||
            } 
 | 
			
		||||
            $year_result .= ' />';
 | 
			
		||||
        } else {
 | 
			
		||||
            $years = range((int)$start_year, (int)$end_year);
 | 
			
		||||
            if ($reverse_years) {
 | 
			
		||||
                rsort($years, SORT_NUMERIC);
 | 
			
		||||
            } else {
 | 
			
		||||
                sort($years, SORT_NUMERIC);
 | 
			
		||||
            } 
 | 
			
		||||
            $yearvals = $years;
 | 
			
		||||
            if (isset($year_empty)) {
 | 
			
		||||
                array_unshift($years, $year_empty);
 | 
			
		||||
                array_unshift($yearvals, '');
 | 
			
		||||
            } 
 | 
			
		||||
            $year_result .= '<select name="' . $year_name . '"';
 | 
			
		||||
            if (null !== $year_size) {
 | 
			
		||||
                $year_result .= ' size="' . $year_size . '"';
 | 
			
		||||
            } 
 | 
			
		||||
            if (null !== $all_extra) {
 | 
			
		||||
                $year_result .= ' ' . $all_extra;
 | 
			
		||||
            } 
 | 
			
		||||
            if (null !== $year_extra) {
 | 
			
		||||
                $year_result .= ' ' . $year_extra;
 | 
			
		||||
            } 
 | 
			
		||||
            $year_result .= $extra_attrs . '>' . "\n";
 | 
			
		||||
            $year_result .= smarty_function_html_options(array('output' => $years,
 | 
			
		||||
                    'values' => $yearvals,
 | 
			
		||||
                    'selected' => $time[0],
 | 
			
		||||
                    'print_result' => false),
 | 
			
		||||
                   $template);
 | 
			
		||||
            $year_result .= '</select>';
 | 
			
		||||
        } 
 | 
			
		||||
    } 
 | 
			
		||||
    // Loop thru the field_order field
 | 
			
		||||
    for ($i = 0; $i <= 2; $i++) {
 | 
			
		||||
        $c = substr($field_order, $i, 1);
 | 
			
		||||
        switch ($c) {
 | 
			
		||||
            case 'D':
 | 
			
		||||
                $html_result .= $day_result;
 | 
			
		||||
                break;
 | 
			
		||||
 | 
			
		||||
            case 'M':
 | 
			
		||||
                $html_result .= $month_result;
 | 
			
		||||
                break;
 | 
			
		||||
 | 
			
		||||
            case 'Y':
 | 
			
		||||
                $html_result .= $year_result;
 | 
			
		||||
                break;
 | 
			
		||||
        } 
 | 
			
		||||
        // Add the field seperator
 | 
			
		||||
        if ($i < $field_separator_count) {
 | 
			
		||||
            $html_result .= $field_separator;
 | 
			
		||||
        } 
 | 
			
		||||
    } 
 | 
			
		||||
 | 
			
		||||
    return $html_result;
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
?>
 | 
			
		||||
							
								
								
									
										194
									
								
								site/stackreach/libs/plugins/function.html_select_time.php
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										194
									
								
								site/stackreach/libs/plugins/function.html_select_time.php
									
									
									
									
									
										Normal file
									
								
							@@ -0,0 +1,194 @@
 | 
			
		||||
<?php
 | 
			
		||||
/**
 | 
			
		||||
 * Smarty plugin
 | 
			
		||||
 * 
 | 
			
		||||
 * @package Smarty
 | 
			
		||||
 * @subpackage PluginsFunction
 | 
			
		||||
 */
 | 
			
		||||
 | 
			
		||||
/**
 | 
			
		||||
 * Smarty {html_select_time} function plugin
 | 
			
		||||
 * 
 | 
			
		||||
 * Type:     function<br>
 | 
			
		||||
 * Name:     html_select_time<br>
 | 
			
		||||
 * Purpose:  Prints the dropdowns for time selection
 | 
			
		||||
 * 
 | 
			
		||||
 * @link http://smarty.php.net/manual/en/language.function.html.select.time.php {html_select_time}
 | 
			
		||||
 *          (Smarty online manual)
 | 
			
		||||
 * @author Roberto Berto <roberto@berto.net> 
 | 
			
		||||
 * @credits Monte Ohrt <monte AT ohrt DOT com>
 | 
			
		||||
 * @param array $params parameters
 | 
			
		||||
 * @param object $template template object
 | 
			
		||||
 * @return string 
 | 
			
		||||
 * @uses smarty_make_timestamp()
 | 
			
		||||
 */
 | 
			
		||||
function smarty_function_html_select_time($params, $template)
 | 
			
		||||
{
 | 
			
		||||
    require_once(SMARTY_PLUGINS_DIR . 'shared.make_timestamp.php');
 | 
			
		||||
    require_once(SMARTY_PLUGINS_DIR . 'function.html_options.php');
 | 
			
		||||
 | 
			
		||||
    /* Default values. */
 | 
			
		||||
    $prefix = "Time_";
 | 
			
		||||
    $time = time();
 | 
			
		||||
    $display_hours = true;
 | 
			
		||||
    $display_minutes = true;
 | 
			
		||||
    $display_seconds = true;
 | 
			
		||||
    $display_meridian = true;
 | 
			
		||||
    $use_24_hours = true;
 | 
			
		||||
    $minute_interval = 1;
 | 
			
		||||
    $second_interval = 1;
 | 
			
		||||
    /* Should the select boxes be part of an array when returned from PHP?
 | 
			
		||||
       e.g. setting it to "birthday", would create "birthday[Hour]",
 | 
			
		||||
       "birthday[Minute]", "birthday[Seconds]" & "birthday[Meridian]".
 | 
			
		||||
       Can be combined with prefix. */
 | 
			
		||||
    $field_array = null;
 | 
			
		||||
    $all_extra = null;
 | 
			
		||||
    $hour_extra = null;
 | 
			
		||||
    $minute_extra = null;
 | 
			
		||||
    $second_extra = null;
 | 
			
		||||
    $meridian_extra = null;
 | 
			
		||||
 | 
			
		||||
    foreach ($params as $_key => $_value) {
 | 
			
		||||
        switch ($_key) {
 | 
			
		||||
            case 'prefix':
 | 
			
		||||
            case 'time':
 | 
			
		||||
            case 'field_array':
 | 
			
		||||
            case 'all_extra':
 | 
			
		||||
            case 'hour_extra':
 | 
			
		||||
            case 'minute_extra':
 | 
			
		||||
            case 'second_extra':
 | 
			
		||||
            case 'meridian_extra':
 | 
			
		||||
                $$_key = (string)$_value;
 | 
			
		||||
                break;
 | 
			
		||||
 | 
			
		||||
            case 'display_hours':
 | 
			
		||||
            case 'display_minutes':
 | 
			
		||||
            case 'display_seconds':
 | 
			
		||||
            case 'display_meridian':
 | 
			
		||||
            case 'use_24_hours':
 | 
			
		||||
                $$_key = (bool)$_value;
 | 
			
		||||
                break;
 | 
			
		||||
 | 
			
		||||
            case 'minute_interval':
 | 
			
		||||
            case 'second_interval':
 | 
			
		||||
                $$_key = (int)$_value;
 | 
			
		||||
                break;
 | 
			
		||||
 | 
			
		||||
            default:
 | 
			
		||||
                trigger_error("[html_select_time] unknown parameter $_key", E_USER_WARNING);
 | 
			
		||||
        } 
 | 
			
		||||
    } 
 | 
			
		||||
 | 
			
		||||
    $time = smarty_make_timestamp($time);
 | 
			
		||||
 | 
			
		||||
    $html_result = '';
 | 
			
		||||
 | 
			
		||||
    if ($display_hours) {
 | 
			
		||||
        $hours = $use_24_hours ? range(0, 23) : range(1, 12);
 | 
			
		||||
        $hour_fmt = $use_24_hours ? '%H' : '%I';
 | 
			
		||||
        for ($i = 0, $for_max = count($hours); $i < $for_max; $i++)
 | 
			
		||||
        $hours[$i] = sprintf('%02d', $hours[$i]);
 | 
			
		||||
        $html_result .= '<select name=';
 | 
			
		||||
        if (null !== $field_array) {
 | 
			
		||||
            $html_result .= '"' . $field_array . '[' . $prefix . 'Hour]"';
 | 
			
		||||
        } else {
 | 
			
		||||
            $html_result .= '"' . $prefix . 'Hour"';
 | 
			
		||||
        } 
 | 
			
		||||
        if (null !== $hour_extra) {
 | 
			
		||||
            $html_result .= ' ' . $hour_extra;
 | 
			
		||||
        } 
 | 
			
		||||
        if (null !== $all_extra) {
 | 
			
		||||
            $html_result .= ' ' . $all_extra;
 | 
			
		||||
        } 
 | 
			
		||||
        $html_result .= '>' . "\n";
 | 
			
		||||
        $html_result .= smarty_function_html_options(array('output' => $hours,
 | 
			
		||||
                'values' => $hours,
 | 
			
		||||
                'selected' => strftime($hour_fmt, $time),
 | 
			
		||||
                'print_result' => false),
 | 
			
		||||
            $template);
 | 
			
		||||
        $html_result .= "</select>\n";
 | 
			
		||||
    } 
 | 
			
		||||
 | 
			
		||||
    if ($display_minutes) {
 | 
			
		||||
        $all_minutes = range(0, 59);
 | 
			
		||||
        for ($i = 0, $for_max = count($all_minutes); $i < $for_max; $i += $minute_interval)
 | 
			
		||||
        $minutes[] = sprintf('%02d', $all_minutes[$i]);
 | 
			
		||||
        $selected = intval(floor(strftime('%M', $time) / $minute_interval) * $minute_interval);
 | 
			
		||||
        $html_result .= '<select name=';
 | 
			
		||||
        if (null !== $field_array) {
 | 
			
		||||
            $html_result .= '"' . $field_array . '[' . $prefix . 'Minute]"';
 | 
			
		||||
        } else {
 | 
			
		||||
            $html_result .= '"' . $prefix . 'Minute"';
 | 
			
		||||
        } 
 | 
			
		||||
        if (null !== $minute_extra) {
 | 
			
		||||
            $html_result .= ' ' . $minute_extra;
 | 
			
		||||
        } 
 | 
			
		||||
        if (null !== $all_extra) {
 | 
			
		||||
            $html_result .= ' ' . $all_extra;
 | 
			
		||||
        } 
 | 
			
		||||
        $html_result .= '>' . "\n";
 | 
			
		||||
 | 
			
		||||
        $html_result .= smarty_function_html_options(array('output' => $minutes,
 | 
			
		||||
                'values' => $minutes,
 | 
			
		||||
                'selected' => $selected,
 | 
			
		||||
                'print_result' => false),
 | 
			
		||||
              $template);
 | 
			
		||||
        $html_result .= "</select>\n";
 | 
			
		||||
    } 
 | 
			
		||||
 | 
			
		||||
    if ($display_seconds) {
 | 
			
		||||
        $all_seconds = range(0, 59);
 | 
			
		||||
        for ($i = 0, $for_max = count($all_seconds); $i < $for_max; $i += $second_interval)
 | 
			
		||||
        $seconds[] = sprintf('%02d', $all_seconds[$i]);
 | 
			
		||||
        $selected = intval(floor(strftime('%S', $time) / $second_interval) * $second_interval);
 | 
			
		||||
        $html_result .= '<select name=';
 | 
			
		||||
        if (null !== $field_array) {
 | 
			
		||||
            $html_result .= '"' . $field_array . '[' . $prefix . 'Second]"';
 | 
			
		||||
        } else {
 | 
			
		||||
            $html_result .= '"' . $prefix . 'Second"';
 | 
			
		||||
        } 
 | 
			
		||||
 | 
			
		||||
        if (null !== $second_extra) {
 | 
			
		||||
            $html_result .= ' ' . $second_extra;
 | 
			
		||||
        } 
 | 
			
		||||
        if (null !== $all_extra) {
 | 
			
		||||
            $html_result .= ' ' . $all_extra;
 | 
			
		||||
        } 
 | 
			
		||||
        $html_result .= '>' . "\n";
 | 
			
		||||
 | 
			
		||||
        $html_result .= smarty_function_html_options(array('output' => $seconds,
 | 
			
		||||
                'values' => $seconds,
 | 
			
		||||
                'selected' => $selected,
 | 
			
		||||
                'print_result' => false),
 | 
			
		||||
             $template);
 | 
			
		||||
        $html_result .= "</select>\n";
 | 
			
		||||
    } 
 | 
			
		||||
 | 
			
		||||
    if ($display_meridian && !$use_24_hours) {
 | 
			
		||||
        $html_result .= '<select name=';
 | 
			
		||||
        if (null !== $field_array) {
 | 
			
		||||
            $html_result .= '"' . $field_array . '[' . $prefix . 'Meridian]"';
 | 
			
		||||
        } else {
 | 
			
		||||
            $html_result .= '"' . $prefix . 'Meridian"';
 | 
			
		||||
        } 
 | 
			
		||||
 | 
			
		||||
        if (null !== $meridian_extra) {
 | 
			
		||||
            $html_result .= ' ' . $meridian_extra;
 | 
			
		||||
        } 
 | 
			
		||||
        if (null !== $all_extra) {
 | 
			
		||||
            $html_result .= ' ' . $all_extra;
 | 
			
		||||
        } 
 | 
			
		||||
        $html_result .= '>' . "\n";
 | 
			
		||||
 | 
			
		||||
        $html_result .= smarty_function_html_options(array('output' => array('AM', 'PM'),
 | 
			
		||||
                'values' => array('am', 'pm'),
 | 
			
		||||
                'selected' => strtolower(strftime('%p', $time)),
 | 
			
		||||
                'print_result' => false),
 | 
			
		||||
            $template);
 | 
			
		||||
        $html_result .= "</select>\n";
 | 
			
		||||
    } 
 | 
			
		||||
 | 
			
		||||
    return $html_result;
 | 
			
		||||
} 
 | 
			
		||||
 | 
			
		||||
?>
 | 
			
		||||
							
								
								
									
										177
									
								
								site/stackreach/libs/plugins/function.html_table.php
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										177
									
								
								site/stackreach/libs/plugins/function.html_table.php
									
									
									
									
									
										Normal file
									
								
							@@ -0,0 +1,177 @@
 | 
			
		||||
<?php
 | 
			
		||||
/**
 | 
			
		||||
 * Smarty plugin
 | 
			
		||||
 * 
 | 
			
		||||
 * @package Smarty
 | 
			
		||||
 * @subpackage PluginsFunction
 | 
			
		||||
 */
 | 
			
		||||
 | 
			
		||||
/**
 | 
			
		||||
 * Smarty {html_table} function plugin
 | 
			
		||||
 * 
 | 
			
		||||
 * Type:     function<br>
 | 
			
		||||
 * Name:     html_table<br>
 | 
			
		||||
 * Date:     Feb 17, 2003<br>
 | 
			
		||||
 * Purpose:  make an html table from an array of data<br>
 | 
			
		||||
 * 
 | 
			
		||||
 * 
 | 
			
		||||
 * Examples:
 | 
			
		||||
 * <pre>
 | 
			
		||||
 * {table loop=$data}
 | 
			
		||||
 * {table loop=$data cols=4 tr_attr='"bgcolor=red"'}
 | 
			
		||||
 * {table loop=$data cols="first,second,third" tr_attr=$colors}
 | 
			
		||||
 * </pre>
 | 
			
		||||
 * 
 | 
			
		||||
 * @author Monte Ohrt <monte at ohrt dot com> 
 | 
			
		||||
 * @author credit to Messju Mohr <messju at lammfellpuschen dot de> 
 | 
			
		||||
 * @author credit to boots <boots dot smarty at yahoo dot com> 
 | 
			
		||||
 * @version 1.1
 | 
			
		||||
 * @link http://smarty.php.net/manual/en/language.function.html.table.php {html_table}
 | 
			
		||||
 *          (Smarty online manual)
 | 
			
		||||
 * @param array $params parameters
 | 
			
		||||
 * Input:<br>
 | 
			
		||||
 *          - loop = array to loop through
 | 
			
		||||
 *          - cols = number of columns, comma separated list of column names
 | 
			
		||||
 *                   or array of column names
 | 
			
		||||
 *          - rows = number of rows
 | 
			
		||||
 *          - table_attr = table attributes
 | 
			
		||||
 *          - th_attr = table heading attributes (arrays are cycled)
 | 
			
		||||
 *          - tr_attr = table row attributes (arrays are cycled)
 | 
			
		||||
 *          - td_attr = table cell attributes (arrays are cycled)
 | 
			
		||||
 *          - trailpad = value to pad trailing cells with
 | 
			
		||||
 *          - caption = text for caption element 
 | 
			
		||||
 *          - vdir = vertical direction (default: "down", means top-to-bottom)
 | 
			
		||||
 *          - hdir = horizontal direction (default: "right", means left-to-right)
 | 
			
		||||
 *          - inner = inner loop (default "cols": print $loop line by line,
 | 
			
		||||
 *                    $loop will be printed column by column otherwise)
 | 
			
		||||
 * @param object $template template object
 | 
			
		||||
 * @return string 
 | 
			
		||||
 */
 | 
			
		||||
function smarty_function_html_table($params, $template)
 | 
			
		||||
{
 | 
			
		||||
    $table_attr = 'border="1"';
 | 
			
		||||
    $tr_attr = '';
 | 
			
		||||
    $th_attr = '';
 | 
			
		||||
    $td_attr = '';
 | 
			
		||||
    $cols = $cols_count = 3;
 | 
			
		||||
    $rows = 3;
 | 
			
		||||
    $trailpad = ' ';
 | 
			
		||||
    $vdir = 'down';
 | 
			
		||||
    $hdir = 'right';
 | 
			
		||||
    $inner = 'cols';
 | 
			
		||||
    $caption = '';
 | 
			
		||||
    $loop = null;
 | 
			
		||||
 | 
			
		||||
    if (!isset($params['loop'])) {
 | 
			
		||||
        trigger_error("html_table: missing 'loop' parameter",E_USER_WARNING);
 | 
			
		||||
        return;
 | 
			
		||||
    } 
 | 
			
		||||
 | 
			
		||||
    foreach ($params as $_key => $_value) {
 | 
			
		||||
        switch ($_key) {
 | 
			
		||||
            case 'loop':
 | 
			
		||||
                $$_key = (array)$_value;
 | 
			
		||||
                break;
 | 
			
		||||
 | 
			
		||||
            case 'cols':
 | 
			
		||||
                if (is_array($_value) && !empty($_value)) {
 | 
			
		||||
                    $cols = $_value;
 | 
			
		||||
                    $cols_count = count($_value);
 | 
			
		||||
                } elseif (!is_numeric($_value) && is_string($_value) && !empty($_value)) {
 | 
			
		||||
                    $cols = explode(',', $_value);
 | 
			
		||||
                    $cols_count = count($cols);
 | 
			
		||||
                } elseif (!empty($_value)) {
 | 
			
		||||
                    $cols_count = (int)$_value;
 | 
			
		||||
                } else {
 | 
			
		||||
                    $cols_count = $cols;
 | 
			
		||||
                } 
 | 
			
		||||
                break;
 | 
			
		||||
 | 
			
		||||
            case 'rows':
 | 
			
		||||
                $$_key = (int)$_value;
 | 
			
		||||
                break;
 | 
			
		||||
 | 
			
		||||
            case 'table_attr':
 | 
			
		||||
            case 'trailpad':
 | 
			
		||||
            case 'hdir':
 | 
			
		||||
            case 'vdir':
 | 
			
		||||
            case 'inner':
 | 
			
		||||
            case 'caption':
 | 
			
		||||
                $$_key = (string)$_value;
 | 
			
		||||
                break;
 | 
			
		||||
 | 
			
		||||
            case 'tr_attr':
 | 
			
		||||
            case 'td_attr':
 | 
			
		||||
            case 'th_attr':
 | 
			
		||||
                $$_key = $_value;
 | 
			
		||||
                break;
 | 
			
		||||
        } 
 | 
			
		||||
    } 
 | 
			
		||||
 | 
			
		||||
    $loop_count = count($loop);
 | 
			
		||||
    if (empty($params['rows'])) {
 | 
			
		||||
        /* no rows specified */
 | 
			
		||||
        $rows = ceil($loop_count / $cols_count);
 | 
			
		||||
    } elseif (empty($params['cols'])) {
 | 
			
		||||
        if (!empty($params['rows'])) {
 | 
			
		||||
            /* no cols specified, but rows */
 | 
			
		||||
            $cols_count = ceil($loop_count / $rows);
 | 
			
		||||
        } 
 | 
			
		||||
    } 
 | 
			
		||||
 | 
			
		||||
    $output = "<table $table_attr>\n";
 | 
			
		||||
 | 
			
		||||
    if (!empty($caption)) {
 | 
			
		||||
        $output .= '<caption>' . $caption . "</caption>\n";
 | 
			
		||||
    } 
 | 
			
		||||
 | 
			
		||||
    if (is_array($cols)) {
 | 
			
		||||
        $cols = ($hdir == 'right') ? $cols : array_reverse($cols);
 | 
			
		||||
        $output .= "<thead><tr>\n";
 | 
			
		||||
 | 
			
		||||
        for ($r = 0; $r < $cols_count; $r++) {
 | 
			
		||||
            $output .= '<th' . smarty_function_html_table_cycle('th', $th_attr, $r) . '>';
 | 
			
		||||
            $output .= $cols[$r];
 | 
			
		||||
            $output .= "</th>\n";
 | 
			
		||||
        } 
 | 
			
		||||
        $output .= "</tr></thead>\n";
 | 
			
		||||
    } 
 | 
			
		||||
 | 
			
		||||
    $output .= "<tbody>\n";
 | 
			
		||||
    for ($r = 0; $r < $rows; $r++) {
 | 
			
		||||
        $output .= "<tr" . smarty_function_html_table_cycle('tr', $tr_attr, $r) . ">\n";
 | 
			
		||||
        $rx = ($vdir == 'down') ? $r * $cols_count : ($rows-1 - $r) * $cols_count;
 | 
			
		||||
 | 
			
		||||
        for ($c = 0; $c < $cols_count; $c++) {
 | 
			
		||||
            $x = ($hdir == 'right') ? $rx + $c : $rx + $cols_count-1 - $c;
 | 
			
		||||
            if ($inner != 'cols') {
 | 
			
		||||
                /* shuffle x to loop over rows*/
 | 
			
		||||
                $x = floor($x / $cols_count) + ($x % $cols_count) * $rows;
 | 
			
		||||
            } 
 | 
			
		||||
 | 
			
		||||
            if ($x < $loop_count) {
 | 
			
		||||
                $output .= "<td" . smarty_function_html_table_cycle('td', $td_attr, $c) . ">" . $loop[$x] . "</td>\n";
 | 
			
		||||
            } else {
 | 
			
		||||
                $output .= "<td" . smarty_function_html_table_cycle('td', $td_attr, $c) . ">$trailpad</td>\n";
 | 
			
		||||
            } 
 | 
			
		||||
        } 
 | 
			
		||||
        $output .= "</tr>\n";
 | 
			
		||||
    } 
 | 
			
		||||
    $output .= "</tbody>\n";
 | 
			
		||||
    $output .= "</table>\n";
 | 
			
		||||
 | 
			
		||||
    return $output;
 | 
			
		||||
} 
 | 
			
		||||
 | 
			
		||||
function smarty_function_html_table_cycle($name, $var, $no)
 | 
			
		||||
{
 | 
			
		||||
    if (!is_array($var)) {
 | 
			
		||||
        $ret = $var;
 | 
			
		||||
    } else {
 | 
			
		||||
        $ret = $var[$no % count($var)];
 | 
			
		||||
    } 
 | 
			
		||||
 | 
			
		||||
    return ($ret) ? ' ' . $ret : '';
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
?>
 | 
			
		||||
							
								
								
									
										156
									
								
								site/stackreach/libs/plugins/function.mailto.php
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										156
									
								
								site/stackreach/libs/plugins/function.mailto.php
									
									
									
									
									
										Normal file
									
								
							@@ -0,0 +1,156 @@
 | 
			
		||||
<?php
 | 
			
		||||
/**
 | 
			
		||||
 * Smarty plugin
 | 
			
		||||
 * 
 | 
			
		||||
 * @package Smarty
 | 
			
		||||
 * @subpackage PluginsFunction
 | 
			
		||||
 */
 | 
			
		||||
 | 
			
		||||
/**
 | 
			
		||||
 * Smarty {mailto} function plugin
 | 
			
		||||
 * 
 | 
			
		||||
 * Type:     function<br>
 | 
			
		||||
 * Name:     mailto<br>
 | 
			
		||||
 * Date:     May 21, 2002
 | 
			
		||||
 * Purpose:  automate mailto address link creation, and optionally
 | 
			
		||||
 *            encode them.<br>
 | 
			
		||||
 * 
 | 
			
		||||
 * Examples:
 | 
			
		||||
 * <pre>
 | 
			
		||||
 * {mailto address="me@domain.com"}
 | 
			
		||||
 * {mailto address="me@domain.com" encode="javascript"}
 | 
			
		||||
 * {mailto address="me@domain.com" encode="hex"}
 | 
			
		||||
 * {mailto address="me@domain.com" subject="Hello to you!"}
 | 
			
		||||
 * {mailto address="me@domain.com" cc="you@domain.com,they@domain.com"}
 | 
			
		||||
 * {mailto address="me@domain.com" extra='class="mailto"'}
 | 
			
		||||
 * </pre>
 | 
			
		||||
 * 
 | 
			
		||||
 * @link http://smarty.php.net/manual/en/language.function.mailto.php {mailto}
 | 
			
		||||
 *          (Smarty online manual)
 | 
			
		||||
 * @version 1.2
 | 
			
		||||
 * @author Monte Ohrt <monte at ohrt dot com> 
 | 
			
		||||
 * @author credits to Jason Sweat (added cc, bcc and subject functionality) 
 | 
			
		||||
 * @param array $params parameters
 | 
			
		||||
 * Input:<br>
 | 
			
		||||
 *          - address = e-mail address
 | 
			
		||||
 *          - text = (optional) text to display, default is address
 | 
			
		||||
 *          - encode = (optional) can be one of:
 | 
			
		||||
 *                 * none : no encoding (default)
 | 
			
		||||
 *                 * javascript : encode with javascript
 | 
			
		||||
 *                 * javascript_charcode : encode with javascript charcode
 | 
			
		||||
 *                 * hex : encode with hexidecimal (no javascript)
 | 
			
		||||
 *          - cc = (optional) address(es) to carbon copy
 | 
			
		||||
 *          - bcc = (optional) address(es) to blind carbon copy
 | 
			
		||||
 *          - subject = (optional) e-mail subject
 | 
			
		||||
 *          - newsgroups = (optional) newsgroup(s) to post to
 | 
			
		||||
 *          - followupto = (optional) address(es) to follow up to
 | 
			
		||||
 *          - extra = (optional) extra tags for the href link
 | 
			
		||||
 * @param object $template template object
 | 
			
		||||
 * @return string 
 | 
			
		||||
 */
 | 
			
		||||
function smarty_function_mailto($params, $template)
 | 
			
		||||
{
 | 
			
		||||
    $extra = '';
 | 
			
		||||
 | 
			
		||||
    if (empty($params['address'])) {
 | 
			
		||||
        trigger_error("mailto: missing 'address' parameter",E_USER_WARNING);
 | 
			
		||||
        return;
 | 
			
		||||
    } else {
 | 
			
		||||
        $address = $params['address'];
 | 
			
		||||
    } 
 | 
			
		||||
 | 
			
		||||
    $text = $address; 
 | 
			
		||||
    // netscape and mozilla do not decode %40 (@) in BCC field (bug?)
 | 
			
		||||
    // so, don't encode it.
 | 
			
		||||
    $search = array('%40', '%2C');
 | 
			
		||||
    $replace = array('@', ',');
 | 
			
		||||
    $mail_parms = array();
 | 
			
		||||
    foreach ($params as $var => $value) {
 | 
			
		||||
        switch ($var) {
 | 
			
		||||
            case 'cc':
 | 
			
		||||
            case 'bcc':
 | 
			
		||||
            case 'followupto':
 | 
			
		||||
                if (!empty($value))
 | 
			
		||||
                    $mail_parms[] = $var . '=' . str_replace($search, $replace, rawurlencode($value));
 | 
			
		||||
                break;
 | 
			
		||||
 | 
			
		||||
            case 'subject':
 | 
			
		||||
            case 'newsgroups':
 | 
			
		||||
                $mail_parms[] = $var . '=' . rawurlencode($value);
 | 
			
		||||
                break;
 | 
			
		||||
 | 
			
		||||
            case 'extra':
 | 
			
		||||
            case 'text':
 | 
			
		||||
                $$var = $value;
 | 
			
		||||
 | 
			
		||||
            default:
 | 
			
		||||
        } 
 | 
			
		||||
    } 
 | 
			
		||||
 | 
			
		||||
    $mail_parm_vals = '';
 | 
			
		||||
    for ($i = 0; $i < count($mail_parms); $i++) {
 | 
			
		||||
        $mail_parm_vals .= (0 == $i) ? '?' : '&';
 | 
			
		||||
        $mail_parm_vals .= $mail_parms[$i];
 | 
			
		||||
    } 
 | 
			
		||||
    $address .= $mail_parm_vals;
 | 
			
		||||
 | 
			
		||||
    $encode = (empty($params['encode'])) ? 'none' : $params['encode'];
 | 
			
		||||
    if (!in_array($encode, array('javascript', 'javascript_charcode', 'hex', 'none'))) {
 | 
			
		||||
        trigger_error("mailto: 'encode' parameter must be none, javascript or hex",E_USER_WARNING);
 | 
			
		||||
        return;
 | 
			
		||||
    } 
 | 
			
		||||
 | 
			
		||||
    if ($encode == 'javascript') {
 | 
			
		||||
        $string = 'document.write(\'<a href="mailto:' . $address . '" ' . $extra . '>' . $text . '</a>\');';
 | 
			
		||||
 | 
			
		||||
        $js_encode = '';
 | 
			
		||||
        for ($x = 0; $x < strlen($string); $x++) {
 | 
			
		||||
            $js_encode .= '%' . bin2hex($string[$x]);
 | 
			
		||||
        } 
 | 
			
		||||
 | 
			
		||||
        return '<script type="text/javascript">eval(unescape(\'' . $js_encode . '\'))</script>';
 | 
			
		||||
    } elseif ($encode == 'javascript_charcode') {
 | 
			
		||||
        $string = '<a href="mailto:' . $address . '" ' . $extra . '>' . $text . '</a>';
 | 
			
		||||
 | 
			
		||||
        for($x = 0, $y = strlen($string); $x < $y; $x++) {
 | 
			
		||||
            $ord[] = ord($string[$x]);
 | 
			
		||||
        } 
 | 
			
		||||
 | 
			
		||||
        $_ret = "<script type=\"text/javascript\" language=\"javascript\">\n";
 | 
			
		||||
        $_ret .= "<!--\n";
 | 
			
		||||
        $_ret .= "{document.write(String.fromCharCode(";
 | 
			
		||||
        $_ret .= implode(',', $ord);
 | 
			
		||||
        $_ret .= "))";
 | 
			
		||||
        $_ret .= "}\n";
 | 
			
		||||
        $_ret .= "//-->\n";
 | 
			
		||||
        $_ret .= "</script>\n";
 | 
			
		||||
 | 
			
		||||
        return $_ret;
 | 
			
		||||
    } elseif ($encode == 'hex') {
 | 
			
		||||
        preg_match('!^(.*)(\?.*)$!', $address, $match);
 | 
			
		||||
        if (!empty($match[2])) {
 | 
			
		||||
            trigger_error("mailto: hex encoding does not work with extra attributes. Try javascript.",E_USER_WARNING);
 | 
			
		||||
            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 .= '&#x' . bin2hex($text[$x]) . ';';
 | 
			
		||||
        } 
 | 
			
		||||
 | 
			
		||||
        $mailto = "mailto:";
 | 
			
		||||
        return '<a href="' . $mailto . $address_encode . '" ' . $extra . '>' . $text_encode . '</a>';
 | 
			
		||||
    } else {
 | 
			
		||||
        // no encoding
 | 
			
		||||
        return '<a href="mailto:' . $address . '" ' . $extra . '>' . $text . '</a>';
 | 
			
		||||
    } 
 | 
			
		||||
} 
 | 
			
		||||
 | 
			
		||||
?>
 | 
			
		||||
							
								
								
									
										83
									
								
								site/stackreach/libs/plugins/function.math.php
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										83
									
								
								site/stackreach/libs/plugins/function.math.php
									
									
									
									
									
										Normal file
									
								
							@@ -0,0 +1,83 @@
 | 
			
		||||
<?php
 | 
			
		||||
/**
 | 
			
		||||
 * Smarty plugin
 | 
			
		||||
 *
 | 
			
		||||
 * This plugin is only for Smarty2 BC
 | 
			
		||||
 * @package Smarty
 | 
			
		||||
 * @subpackage PluginsFunction
 | 
			
		||||
 */
 | 
			
		||||
 | 
			
		||||
/**
 | 
			
		||||
 * Smarty {math} function plugin
 | 
			
		||||
 *
 | 
			
		||||
 * Type:     function<br>
 | 
			
		||||
 * Name:     math<br>
 | 
			
		||||
 * Purpose:  handle math computations in template<br>
 | 
			
		||||
 * @link http://smarty.php.net/manual/en/language.function.math.php {math}
 | 
			
		||||
 *          (Smarty online manual)
 | 
			
		||||
 * @author   Monte Ohrt <monte at ohrt dot com>
 | 
			
		||||
 * @param array $params parameters
 | 
			
		||||
 * @param object $template template object
 | 
			
		||||
 * @return string|null
 | 
			
		||||
 */
 | 
			
		||||
function smarty_function_math($params, $template)
 | 
			
		||||
{
 | 
			
		||||
    // be sure equation parameter is present
 | 
			
		||||
    if (empty($params['equation'])) {
 | 
			
		||||
        trigger_error("math: missing equation parameter",E_USER_WARNING);
 | 
			
		||||
        return;
 | 
			
		||||
    }
 | 
			
		||||
 | 
			
		||||
    $equation = $params['equation'];
 | 
			
		||||
 | 
			
		||||
    // make sure parenthesis are balanced
 | 
			
		||||
    if (substr_count($equation,"(") != substr_count($equation,")")) {
 | 
			
		||||
        trigger_error("math: unbalanced parenthesis",E_USER_WARNING);
 | 
			
		||||
        return;
 | 
			
		||||
    }
 | 
			
		||||
 | 
			
		||||
    // match all vars in equation, make sure all are passed
 | 
			
		||||
    preg_match_all("!(?:0x[a-fA-F0-9]+)|([a-zA-Z][a-zA-Z0-9_]*)!",$equation, $match);
 | 
			
		||||
    $allowed_funcs = array('int','abs','ceil','cos','exp','floor','log','log10',
 | 
			
		||||
                           'max','min','pi','pow','rand','round','sin','sqrt','srand','tan');
 | 
			
		||||
    
 | 
			
		||||
    foreach($match[1] as $curr_var) {
 | 
			
		||||
        if ($curr_var && !in_array($curr_var, array_keys($params)) && !in_array($curr_var, $allowed_funcs)) {
 | 
			
		||||
            trigger_error("math: function call $curr_var not allowed",E_USER_WARNING);
 | 
			
		||||
            return;
 | 
			
		||||
        }
 | 
			
		||||
    }
 | 
			
		||||
 | 
			
		||||
    foreach($params as $key => $val) {
 | 
			
		||||
        if ($key != "equation" && $key != "format" && $key != "assign") {
 | 
			
		||||
            // make sure value is not empty
 | 
			
		||||
            if (strlen($val)==0) {
 | 
			
		||||
                trigger_error("math: parameter $key is empty",E_USER_WARNING);
 | 
			
		||||
                return;
 | 
			
		||||
            }
 | 
			
		||||
            if (!is_numeric($val)) {
 | 
			
		||||
                trigger_error("math: parameter $key: is not numeric",E_USER_WARNING);
 | 
			
		||||
                return;
 | 
			
		||||
            }
 | 
			
		||||
            $equation = preg_replace("/\b$key\b/", " \$params['$key'] ", $equation);
 | 
			
		||||
        }
 | 
			
		||||
    }
 | 
			
		||||
    $smarty_math_result = null;
 | 
			
		||||
    eval("\$smarty_math_result = ".$equation.";");
 | 
			
		||||
 | 
			
		||||
    if (empty($params['format'])) {
 | 
			
		||||
        if (empty($params['assign'])) {
 | 
			
		||||
            return $smarty_math_result;
 | 
			
		||||
        } else {
 | 
			
		||||
            $template->assign($params['assign'],$smarty_math_result);
 | 
			
		||||
        }
 | 
			
		||||
    } else {
 | 
			
		||||
        if (empty($params['assign'])){
 | 
			
		||||
            printf($params['format'],$smarty_math_result);
 | 
			
		||||
        } else {
 | 
			
		||||
            $template->assign($params['assign'],sprintf($params['format'],$smarty_math_result));
 | 
			
		||||
        }
 | 
			
		||||
    }
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
?>
 | 
			
		||||
							
								
								
									
										118
									
								
								site/stackreach/libs/plugins/function.popup.php
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										118
									
								
								site/stackreach/libs/plugins/function.popup.php
									
									
									
									
									
										Normal file
									
								
							@@ -0,0 +1,118 @@
 | 
			
		||||
<?php
 | 
			
		||||
/**
 | 
			
		||||
 * Smarty plugin
 | 
			
		||||
 *
 | 
			
		||||
 * @package Smarty
 | 
			
		||||
 * @subpackage PluginsFunction
 | 
			
		||||
 */
 | 
			
		||||
 | 
			
		||||
/**
 | 
			
		||||
 * Smarty {popup} function plugin
 | 
			
		||||
 *
 | 
			
		||||
 * Type:     function<br>
 | 
			
		||||
 * Name:     popup<br>
 | 
			
		||||
 * Purpose:  make text pop up in windows via overlib
 | 
			
		||||
 * @link http://smarty.php.net/manual/en/language.function.popup.php {popup}
 | 
			
		||||
 *          (Smarty online manual)
 | 
			
		||||
 * @author   Monte Ohrt <monte at ohrt dot com>
 | 
			
		||||
 * @param array $params parameters
 | 
			
		||||
 * @param object $template template object
 | 
			
		||||
 * @return string
 | 
			
		||||
 */
 | 
			
		||||
function smarty_function_popup($params, $template)
 | 
			
		||||
{
 | 
			
		||||
    $append = '';
 | 
			
		||||
    foreach ($params as $_key=>$_value) {
 | 
			
		||||
        switch ($_key) {
 | 
			
		||||
            case 'text':
 | 
			
		||||
            case 'trigger':
 | 
			
		||||
            case 'function':
 | 
			
		||||
            case 'inarray':
 | 
			
		||||
                $$_key = (string)$_value;
 | 
			
		||||
                if ($_key == 'function' || $_key == 'inarray')
 | 
			
		||||
                    $append .= ',' . strtoupper($_key) . ",'$_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 'fgbackground':
 | 
			
		||||
            case 'bgbackground':
 | 
			
		||||
            case 'caparray':
 | 
			
		||||
            case 'capicon':
 | 
			
		||||
            case 'background':
 | 
			
		||||
            case 'frame':
 | 
			
		||||
                $append .= ',' . strtoupper($_key) . ",'$_value'";
 | 
			
		||||
                break;
 | 
			
		||||
 | 
			
		||||
            case 'textsize':
 | 
			
		||||
            case 'captionsize':
 | 
			
		||||
            case 'closesize':
 | 
			
		||||
            case 'width':
 | 
			
		||||
            case 'height':
 | 
			
		||||
            case 'border':
 | 
			
		||||
            case 'offsetx':
 | 
			
		||||
            case 'offsety':
 | 
			
		||||
            case 'snapx':
 | 
			
		||||
            case 'snapy':
 | 
			
		||||
            case 'fixx':
 | 
			
		||||
            case 'fixy':
 | 
			
		||||
            case 'padx':
 | 
			
		||||
            case 'pady':
 | 
			
		||||
            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':
 | 
			
		||||
            case 'mouseoff':
 | 
			
		||||
            case 'followmouse':
 | 
			
		||||
            case 'closeclick':
 | 
			
		||||
            case 'wrap':
 | 
			
		||||
                if ($_value) $append .= ',' . strtoupper($_key);
 | 
			
		||||
                break;
 | 
			
		||||
 | 
			
		||||
            default:
 | 
			
		||||
                trigger_error("[popup] unknown parameter $_key", E_USER_WARNING);
 | 
			
		||||
        }
 | 
			
		||||
    }
 | 
			
		||||
 | 
			
		||||
    if (empty($text) && !isset($inarray) && empty($function)) {
 | 
			
		||||
        trigger_error("overlib: attribute 'text' or 'inarray' or 'function' required",E_USER_WARNING);
 | 
			
		||||
        return false;
 | 
			
		||||
    }
 | 
			
		||||
 | 
			
		||||
    if (empty($trigger)) { $trigger = "onmouseover"; }
 | 
			
		||||
 | 
			
		||||
    $retval = $trigger . '="return overlib(\''.preg_replace(array("!'!",'!"!',"![\r\n]!"),array("\'","\'",'\r'),$text).'\'';
 | 
			
		||||
    $retval .= $append . ');"';
 | 
			
		||||
    if ($trigger == 'onmouseover')
 | 
			
		||||
       $retval .= ' onmouseout="nd();"';
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
    return $retval;
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
?>
 | 
			
		||||
							
								
								
									
										39
									
								
								site/stackreach/libs/plugins/function.popup_init.php
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										39
									
								
								site/stackreach/libs/plugins/function.popup_init.php
									
									
									
									
									
										Normal file
									
								
							@@ -0,0 +1,39 @@
 | 
			
		||||
<?php
 | 
			
		||||
/**
 | 
			
		||||
  * Smarty plugin
 | 
			
		||||
  *
 | 
			
		||||
  * @package Smarty
 | 
			
		||||
  * @subpackage PluginsFunction
 | 
			
		||||
  */
 | 
			
		||||
 | 
			
		||||
/**
 | 
			
		||||
  * Smarty {popup_init} function plugin
 | 
			
		||||
  *
 | 
			
		||||
  * Type:     function<br>
 | 
			
		||||
  * Name:     popup_init<br>
 | 
			
		||||
  * Purpose:  initialize overlib
 | 
			
		||||
  * @link http://smarty.php.net/manual/en/language.function.popup.init.php {popup_init}
 | 
			
		||||
  *          (Smarty online manual)
 | 
			
		||||
  * @author   Monte Ohrt <monte at ohrt dot com>
 | 
			
		||||
  * @param array $params parameters
 | 
			
		||||
  * @param object $template template object
 | 
			
		||||
  * @return string 
 | 
			
		||||
  */
 | 
			
		||||
 | 
			
		||||
function smarty_function_popup_init($params, $template)
 | 
			
		||||
{
 | 
			
		||||
    $zindex = 1000;
 | 
			
		||||
    
 | 
			
		||||
    if (!empty($params['zindex'])) {
 | 
			
		||||
        $zindex = $params['zindex'];
 | 
			
		||||
    }
 | 
			
		||||
    
 | 
			
		||||
    if (!empty($params['src'])) {
 | 
			
		||||
        return '<div id="overDiv" style="position:absolute; visibility:hidden; z-index:'.$zindex.';"></div>' . "\n"
 | 
			
		||||
         . '<script type="text/javascript" language="JavaScript" src="'.$params['src'].'"></script>' . "\n";
 | 
			
		||||
    } else {
 | 
			
		||||
        trigger_error("popup_init: missing src parameter",E_USER_WARNING);
 | 
			
		||||
    }
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
?>
 | 
			
		||||
							
								
								
									
										37
									
								
								site/stackreach/libs/plugins/modifier.capitalize.php
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										37
									
								
								site/stackreach/libs/plugins/modifier.capitalize.php
									
									
									
									
									
										Normal file
									
								
							@@ -0,0 +1,37 @@
 | 
			
		||||
<?php
 | 
			
		||||
/**
 | 
			
		||||
 * Smarty plugin
 | 
			
		||||
 * 
 | 
			
		||||
 * @package Smarty
 | 
			
		||||
 * @subpackage PluginsModifier
 | 
			
		||||
 */
 | 
			
		||||
 | 
			
		||||
/**
 | 
			
		||||
 * Smarty capitalize modifier plugin
 | 
			
		||||
 * 
 | 
			
		||||
 * Type:     modifier<br>
 | 
			
		||||
 * Name:     capitalize<br>
 | 
			
		||||
 * Purpose:  capitalize words in the string
 | 
			
		||||
 * 
 | 
			
		||||
 * @link 
 | 
			
		||||
 * @author Monte Ohrt <monte at ohrt dot com> 
 | 
			
		||||
 * @param string $ 
 | 
			
		||||
 * @return string 
 | 
			
		||||
 */
 | 
			
		||||
function smarty_modifier_capitalize($string, $uc_digits = false)
 | 
			
		||||
{ 
 | 
			
		||||
    // uppercase with php function ucwords
 | 
			
		||||
    $upper_string = ucwords($string); 
 | 
			
		||||
    // check for any missed hyphenated words
 | 
			
		||||
    $upper_string = preg_replace("!(^|[^\p{L}'])([\p{Ll}])!ue", "'\\1'.ucfirst('\\2')", $upper_string); 
 | 
			
		||||
    // check uc_digits case
 | 
			
		||||
    if (!$uc_digits) {
 | 
			
		||||
        if (preg_match_all("!\b([\p{L}]*[\p{N}]+[\p{L}]*)\b!u", $string, $matches, PREG_OFFSET_CAPTURE)) {
 | 
			
		||||
            foreach($matches[1] as $match)
 | 
			
		||||
            $upper_string = substr_replace($upper_string, $match[0], $match[1], strlen($match[0]));
 | 
			
		||||
        } 
 | 
			
		||||
    } 
 | 
			
		||||
    return $upper_string;
 | 
			
		||||
} 
 | 
			
		||||
 | 
			
		||||
?>
 | 
			
		||||
							
								
								
									
										61
									
								
								site/stackreach/libs/plugins/modifier.date_format.php
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										61
									
								
								site/stackreach/libs/plugins/modifier.date_format.php
									
									
									
									
									
										Normal file
									
								
							@@ -0,0 +1,61 @@
 | 
			
		||||
<?php
 | 
			
		||||
/**
 | 
			
		||||
 * Smarty plugin
 | 
			
		||||
 * 
 | 
			
		||||
 * @package Smarty
 | 
			
		||||
 * @subpackage PluginsModifier
 | 
			
		||||
 */
 | 
			
		||||
 | 
			
		||||
/**
 | 
			
		||||
 * Smarty date_format modifier plugin
 | 
			
		||||
 * 
 | 
			
		||||
 * Type:     modifier<br>
 | 
			
		||||
 * Name:     date_format<br>
 | 
			
		||||
 * Purpose:  format datestamps via strftime<br>
 | 
			
		||||
 * Input:<br>
 | 
			
		||||
 *          - string: input date string
 | 
			
		||||
 *          - format: strftime format for output
 | 
			
		||||
 *          - default_date: default date if $string is empty
 | 
			
		||||
 * 
 | 
			
		||||
 * @link http://smarty.php.net/manual/en/language.modifier.date.format.php date_format (Smarty online manual)
 | 
			
		||||
 * @author Monte Ohrt <monte at ohrt dot com> 
 | 
			
		||||
 * @param string $ 
 | 
			
		||||
 * @param string $ 
 | 
			
		||||
 * @param string $ 
 | 
			
		||||
 * @return string |void
 | 
			
		||||
 * @uses smarty_make_timestamp()
 | 
			
		||||
 */
 | 
			
		||||
function smarty_modifier_date_format($string, $format = SMARTY_RESOURCE_DATE_FORMAT, $default_date = '',$formatter='auto')
 | 
			
		||||
{
 | 
			
		||||
    /**
 | 
			
		||||
    * Include the {@link shared.make_timestamp.php} plugin
 | 
			
		||||
    */
 | 
			
		||||
    require_once(SMARTY_PLUGINS_DIR . 'shared.make_timestamp.php');
 | 
			
		||||
    if ($string != '') {
 | 
			
		||||
        $timestamp = smarty_make_timestamp($string);
 | 
			
		||||
    } elseif ($default_date != '') {
 | 
			
		||||
        $timestamp = smarty_make_timestamp($default_date);
 | 
			
		||||
    } else {
 | 
			
		||||
        return;
 | 
			
		||||
    } 
 | 
			
		||||
    if($formatter=='strftime'||($formatter=='auto'&&strpos($format,'%')!==false)) {
 | 
			
		||||
        if (DS == '\\') {
 | 
			
		||||
            $_win_from = array('%D', '%h', '%n', '%r', '%R', '%t', '%T');
 | 
			
		||||
            $_win_to = array('%m/%d/%y', '%b', "\n", '%I:%M:%S %p', '%H:%M', "\t", '%H:%M:%S');
 | 
			
		||||
            if (strpos($format, '%e') !== false) {
 | 
			
		||||
                $_win_from[] = '%e';
 | 
			
		||||
                $_win_to[] = sprintf('%\' 2d', date('j', $timestamp));
 | 
			
		||||
            } 
 | 
			
		||||
            if (strpos($format, '%l') !== false) {
 | 
			
		||||
                $_win_from[] = '%l';
 | 
			
		||||
                $_win_to[] = sprintf('%\' 2d', date('h', $timestamp));
 | 
			
		||||
            } 
 | 
			
		||||
            $format = str_replace($_win_from, $_win_to, $format);
 | 
			
		||||
        } 
 | 
			
		||||
        return strftime($format, $timestamp);
 | 
			
		||||
    } else {
 | 
			
		||||
        return date($format, $timestamp);
 | 
			
		||||
    }
 | 
			
		||||
} 
 | 
			
		||||
 | 
			
		||||
?>
 | 
			
		||||
							
								
								
									
										87
									
								
								site/stackreach/libs/plugins/modifier.debug_print_var.php
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										87
									
								
								site/stackreach/libs/plugins/modifier.debug_print_var.php
									
									
									
									
									
										Normal file
									
								
							@@ -0,0 +1,87 @@
 | 
			
		||||
<?php
 | 
			
		||||
/**
 | 
			
		||||
 * Smarty plugin
 | 
			
		||||
 * 
 | 
			
		||||
 * @package Smarty
 | 
			
		||||
 * @subpackage Debug
 | 
			
		||||
 */
 | 
			
		||||
 | 
			
		||||
/**
 | 
			
		||||
 * Smarty debug_print_var modifier plugin
 | 
			
		||||
 * 
 | 
			
		||||
 * Type:     modifier<br>
 | 
			
		||||
 * Name:     debug_print_var<br>
 | 
			
		||||
 * Purpose:  formats variable contents for display in the console
 | 
			
		||||
 * 
 | 
			
		||||
 * @link http://smarty.php.net/manual/en/language.modifier.debug.print.var.php debug_print_var (Smarty online manual)
 | 
			
		||||
 * @author Monte Ohrt <monte at ohrt dot com> 
 | 
			
		||||
 * @param array $ |object
 | 
			
		||||
 * @param integer $ 
 | 
			
		||||
 * @param integer $ 
 | 
			
		||||
 * @return string 
 | 
			
		||||
 */
 | 
			
		||||
function smarty_modifier_debug_print_var ($var, $depth = 0, $length = 40)
 | 
			
		||||
{
 | 
			
		||||
    $_replace = array("\n" => '<i>\n</i>',
 | 
			
		||||
        "\r" => '<i>\r</i>',
 | 
			
		||||
        "\t" => '<i>\t</i>'
 | 
			
		||||
        );
 | 
			
		||||
 | 
			
		||||
    switch (gettype($var)) {
 | 
			
		||||
        case 'array' :
 | 
			
		||||
            $results = '<b>Array (' . count($var) . ')</b>';
 | 
			
		||||
            foreach ($var as $curr_key => $curr_val) {
 | 
			
		||||
                $results .= '<br>' . str_repeat(' ', $depth * 2)
 | 
			
		||||
                 . '<b>' . strtr($curr_key, $_replace) . '</b> => '
 | 
			
		||||
                 . smarty_modifier_debug_print_var($curr_val, ++$depth, $length);
 | 
			
		||||
                $depth--;
 | 
			
		||||
            } 
 | 
			
		||||
            break;
 | 
			
		||||
        case 'object' :
 | 
			
		||||
            $object_vars = get_object_vars($var);
 | 
			
		||||
            $results = '<b>' . get_class($var) . ' Object (' . count($object_vars) . ')</b>';
 | 
			
		||||
            foreach ($object_vars as $curr_key => $curr_val) {
 | 
			
		||||
                $results .= '<br>' . str_repeat(' ', $depth * 2)
 | 
			
		||||
                 . '<b> ->' . strtr($curr_key, $_replace) . '</b> = '
 | 
			
		||||
                 . smarty_modifier_debug_print_var($curr_val, ++$depth, $length);
 | 
			
		||||
                $depth--;
 | 
			
		||||
            } 
 | 
			
		||||
            break;
 | 
			
		||||
        case 'boolean' :
 | 
			
		||||
        case 'NULL' :
 | 
			
		||||
        case 'resource' :
 | 
			
		||||
            if (true === $var) {
 | 
			
		||||
                $results = 'true';
 | 
			
		||||
            } elseif (false === $var) {
 | 
			
		||||
                $results = 'false';
 | 
			
		||||
            } elseif (null === $var) {
 | 
			
		||||
                $results = 'null';
 | 
			
		||||
            } else {
 | 
			
		||||
                $results = htmlspecialchars((string) $var);
 | 
			
		||||
            } 
 | 
			
		||||
            $results = '<i>' . $results . '</i>';
 | 
			
		||||
            break;
 | 
			
		||||
        case 'integer' :
 | 
			
		||||
        case 'float' :
 | 
			
		||||
            $results = htmlspecialchars((string) $var);
 | 
			
		||||
            break;
 | 
			
		||||
        case 'string' :
 | 
			
		||||
            $results = strtr($var, $_replace);
 | 
			
		||||
            if (strlen($var) > $length) {
 | 
			
		||||
                $results = substr($var, 0, $length - 3) . '...';
 | 
			
		||||
            } 
 | 
			
		||||
            $results = htmlspecialchars('"' . $results . '"');
 | 
			
		||||
            break;
 | 
			
		||||
        case 'unknown type' :
 | 
			
		||||
        default :
 | 
			
		||||
            $results = strtr((string) $var, $_replace);
 | 
			
		||||
            if (strlen($results) > $length) {
 | 
			
		||||
                $results = substr($results, 0, $length - 3) . '...';
 | 
			
		||||
            } 
 | 
			
		||||
            $results = htmlspecialchars($results);
 | 
			
		||||
    } 
 | 
			
		||||
 | 
			
		||||
    return $results;
 | 
			
		||||
} 
 | 
			
		||||
 | 
			
		||||
?>
 | 
			
		||||
							
								
								
									
										91
									
								
								site/stackreach/libs/plugins/modifier.escape.php
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										91
									
								
								site/stackreach/libs/plugins/modifier.escape.php
									
									
									
									
									
										Normal file
									
								
							@@ -0,0 +1,91 @@
 | 
			
		||||
<?php
 | 
			
		||||
/**
 | 
			
		||||
 * Smarty plugin
 | 
			
		||||
 * 
 | 
			
		||||
 * @package Smarty
 | 
			
		||||
 * @subpackage PluginsModifier
 | 
			
		||||
 */
 | 
			
		||||
 
 | 
			
		||||
/**
 | 
			
		||||
 * Smarty escape modifier plugin
 | 
			
		||||
 * 
 | 
			
		||||
 * Type:     modifier<br>
 | 
			
		||||
 * Name:     escape<br>
 | 
			
		||||
 * Purpose:  escape string for output
 | 
			
		||||
 * 
 | 
			
		||||
 * @link http://smarty.php.net/manual/en/language.modifier.count.characters.php count_characters (Smarty online manual)
 | 
			
		||||
 * @author Monte Ohrt <monte at ohrt dot com> 
 | 
			
		||||
 * @param string $string input string
 | 
			
		||||
 * @param string $esc_type escape type
 | 
			
		||||
 * @param string $char_set character set
 | 
			
		||||
 * @return string escaped input string
 | 
			
		||||
 */
 | 
			
		||||
function smarty_modifier_escape($string, $esc_type = 'html', $char_set = SMARTY_RESOURCE_CHAR_SET)
 | 
			
		||||
{
 | 
			
		||||
    switch ($esc_type) {
 | 
			
		||||
        case 'html':
 | 
			
		||||
            return htmlspecialchars($string, ENT_QUOTES, $char_set);
 | 
			
		||||
 | 
			
		||||
        case 'htmlall':
 | 
			
		||||
            return htmlentities($string, ENT_QUOTES, $char_set);
 | 
			
		||||
 | 
			
		||||
        case 'url':
 | 
			
		||||
            return rawurlencode($string);
 | 
			
		||||
 | 
			
		||||
        case 'urlpathinfo':
 | 
			
		||||
            return str_replace('%2F', '/', rawurlencode($string));
 | 
			
		||||
 | 
			
		||||
        case 'quotes': 
 | 
			
		||||
            // escape unescaped single quotes
 | 
			
		||||
            return preg_replace("%(?<!\\\\)'%", "\\'", $string);
 | 
			
		||||
 | 
			
		||||
        case 'hex': 
 | 
			
		||||
            // escape every character into hex
 | 
			
		||||
            $return = '';
 | 
			
		||||
            for ($x = 0; $x < strlen($string); $x++) {
 | 
			
		||||
                $return .= '%' . bin2hex($string[$x]);
 | 
			
		||||
            } 
 | 
			
		||||
            return $return;
 | 
			
		||||
 | 
			
		||||
        case 'hexentity':
 | 
			
		||||
            $return = '';
 | 
			
		||||
            for ($x = 0; $x < strlen($string); $x++) {
 | 
			
		||||
                $return .= '&#x' . bin2hex($string[$x]) . ';';
 | 
			
		||||
            } 
 | 
			
		||||
            return $return;
 | 
			
		||||
 | 
			
		||||
        case 'decentity':
 | 
			
		||||
            $return = '';
 | 
			
		||||
            for ($x = 0; $x < strlen($string); $x++) {
 | 
			
		||||
                $return .= '&#' . ord($string[$x]) . ';';
 | 
			
		||||
            } 
 | 
			
		||||
            return $return;
 | 
			
		||||
 | 
			
		||||
        case 'javascript': 
 | 
			
		||||
            // escape quotes and backslashes, newlines, etc.
 | 
			
		||||
            return strtr($string, array('\\' => '\\\\', "'" => "\\'", '"' => '\\"', "\r" => '\\r', "\n" => '\\n', '</' => '<\/'));
 | 
			
		||||
 | 
			
		||||
        case 'mail': 
 | 
			
		||||
          require_once(SMARTY_PLUGINS_DIR . 'shared.mb_str_replace.php');
 | 
			
		||||
          return smarty_mb_str_replace(array('@', '.'), array(' [AT] ', ' [DOT] '), $string);
 | 
			
		||||
 | 
			
		||||
        case 'nonstd': 
 | 
			
		||||
            // escape non-standard chars, such as ms document quotes
 | 
			
		||||
            $_res = '';
 | 
			
		||||
            for($_i = 0, $_len = strlen($string); $_i < $_len; $_i++) {
 | 
			
		||||
                $_ord = ord(substr($string, $_i, 1)); 
 | 
			
		||||
                // non-standard char, escape it
 | 
			
		||||
                if ($_ord >= 126) {
 | 
			
		||||
                    $_res .= '&#' . $_ord . ';';
 | 
			
		||||
                } else {
 | 
			
		||||
                    $_res .= substr($string, $_i, 1);
 | 
			
		||||
                } 
 | 
			
		||||
            } 
 | 
			
		||||
            return $_res;
 | 
			
		||||
 | 
			
		||||
        default:
 | 
			
		||||
            return $string;
 | 
			
		||||
    } 
 | 
			
		||||
} 
 | 
			
		||||
 | 
			
		||||
?>
 | 
			
		||||
							
								
								
									
										46
									
								
								site/stackreach/libs/plugins/modifier.regex_replace.php
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										46
									
								
								site/stackreach/libs/plugins/modifier.regex_replace.php
									
									
									
									
									
										Normal file
									
								
							@@ -0,0 +1,46 @@
 | 
			
		||||
<?php
 | 
			
		||||
/**
 | 
			
		||||
 * Smarty plugin
 | 
			
		||||
 *
 | 
			
		||||
 * @package Smarty
 | 
			
		||||
 * @subpackage PluginsModifier
 | 
			
		||||
 */
 | 
			
		||||
 | 
			
		||||
/**
 | 
			
		||||
 * Smarty regex_replace modifier plugin
 | 
			
		||||
 *
 | 
			
		||||
 * Type:     modifier<br>
 | 
			
		||||
 * Name:     regex_replace<br>
 | 
			
		||||
 * Purpose:  regular expression search/replace
 | 
			
		||||
 * @link http://smarty.php.net/manual/en/language.modifier.regex.replace.php
 | 
			
		||||
 *          regex_replace (Smarty online manual)
 | 
			
		||||
 * @author   Monte Ohrt <monte at ohrt dot com>
 | 
			
		||||
 * @param string
 | 
			
		||||
 * @param string|array
 | 
			
		||||
 * @param string|array
 | 
			
		||||
 * @return string
 | 
			
		||||
 */
 | 
			
		||||
function smarty_modifier_regex_replace($string, $search, $replace)
 | 
			
		||||
{
 | 
			
		||||
    if(is_array($search)) {
 | 
			
		||||
      foreach($search as $idx => $s)
 | 
			
		||||
        $search[$idx] = _smarty_regex_replace_check($s);
 | 
			
		||||
    } else {
 | 
			
		||||
      $search = _smarty_regex_replace_check($search);
 | 
			
		||||
    }       
 | 
			
		||||
 | 
			
		||||
    return preg_replace($search, $replace, $string);
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
function _smarty_regex_replace_check($search)
 | 
			
		||||
{
 | 
			
		||||
    if (($pos = strpos($search,"\0")) !== false)
 | 
			
		||||
      $search = substr($search,0,$pos);
 | 
			
		||||
    if (preg_match('!([a-zA-Z\s]+)$!s', $search, $match) && (strpos($match[1], 'e') !== false)) {
 | 
			
		||||
        /* remove eval-modifier from $search */
 | 
			
		||||
        $search = substr($search, 0, -strlen($match[1])) . preg_replace('![e\s]+!', '', $match[1]);
 | 
			
		||||
    }
 | 
			
		||||
    return $search;
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
?>
 | 
			
		||||
							
								
								
									
										29
									
								
								site/stackreach/libs/plugins/modifier.replace.php
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										29
									
								
								site/stackreach/libs/plugins/modifier.replace.php
									
									
									
									
									
										Normal file
									
								
							@@ -0,0 +1,29 @@
 | 
			
		||||
<?php
 | 
			
		||||
/**
 | 
			
		||||
 * Smarty plugin
 | 
			
		||||
 * @package Smarty
 | 
			
		||||
 * @subpackage PluginsModifier
 | 
			
		||||
 */
 | 
			
		||||
 | 
			
		||||
/**
 | 
			
		||||
 * Smarty replace modifier plugin
 | 
			
		||||
 * 
 | 
			
		||||
 * Type:     modifier<br>
 | 
			
		||||
 * Name:     replace<br>
 | 
			
		||||
 * Purpose:  simple search/replace
 | 
			
		||||
 * 
 | 
			
		||||
 * @link http://smarty.php.net/manual/en/language.modifier.replace.php replace (Smarty online manual)
 | 
			
		||||
 * @author Monte Ohrt <monte at ohrt dot com> 
 | 
			
		||||
 * @author Uwe Tews 
 | 
			
		||||
 * @param string $ 
 | 
			
		||||
 * @param string $ 
 | 
			
		||||
 * @param string $ 
 | 
			
		||||
 * @return string 
 | 
			
		||||
 */
 | 
			
		||||
function smarty_modifier_replace($string, $search, $replace)
 | 
			
		||||
{
 | 
			
		||||
    require_once(SMARTY_PLUGINS_DIR . 'shared.mb_str_replace.php');
 | 
			
		||||
    return smarty_mb_str_replace($search, $replace, $string);
 | 
			
		||||
} 
 | 
			
		||||
 | 
			
		||||
?>
 | 
			
		||||
							
								
								
									
										37
									
								
								site/stackreach/libs/plugins/modifier.spacify.php
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										37
									
								
								site/stackreach/libs/plugins/modifier.spacify.php
									
									
									
									
									
										Normal file
									
								
							@@ -0,0 +1,37 @@
 | 
			
		||||
<?php
 | 
			
		||||
/**
 | 
			
		||||
 * Smarty plugin
 | 
			
		||||
 * @package Smarty
 | 
			
		||||
 * @subpackage PluginsModifier
 | 
			
		||||
 */
 | 
			
		||||
 | 
			
		||||
/**
 | 
			
		||||
 * Smarty spacify modifier plugin
 | 
			
		||||
 * 
 | 
			
		||||
 * Type:     modifier<br>
 | 
			
		||||
 * Name:     spacify<br>
 | 
			
		||||
 * Purpose:  add spaces between characters in a string
 | 
			
		||||
 * 
 | 
			
		||||
 * @link http://smarty.php.net/manual/en/language.modifier.spacify.php spacify (Smarty online manual)
 | 
			
		||||
 * @author Monte Ohrt <monte at ohrt dot com> 
 | 
			
		||||
 * @param string $ 
 | 
			
		||||
 * @param string $ 
 | 
			
		||||
 * @return string 
 | 
			
		||||
 */
 | 
			
		||||
function smarty_modifier_spacify($string, $spacify_char = ' ')
 | 
			
		||||
{ 
 | 
			
		||||
    // mb_ functions available?
 | 
			
		||||
    if (function_exists('mb_strlen') && mb_detect_encoding($string, 'UTF-8, ISO-8859-1') === 'UTF-8') {
 | 
			
		||||
        $strlen = mb_strlen($string);
 | 
			
		||||
        while ($strlen) {
 | 
			
		||||
            $array[] = mb_substr($string, 0, 1, "UTF-8");
 | 
			
		||||
            $string = mb_substr($string, 1, $strlen, "UTF-8");
 | 
			
		||||
            $strlen = mb_strlen($string);
 | 
			
		||||
        } 
 | 
			
		||||
        return implode($spacify_char, $array);
 | 
			
		||||
    } else {
 | 
			
		||||
        return implode($spacify_char, preg_split('//', $string, -1));
 | 
			
		||||
    } 
 | 
			
		||||
} 
 | 
			
		||||
 | 
			
		||||
?>
 | 
			
		||||
							
								
								
									
										67
									
								
								site/stackreach/libs/plugins/modifier.truncate.php
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										67
									
								
								site/stackreach/libs/plugins/modifier.truncate.php
									
									
									
									
									
										Normal file
									
								
							@@ -0,0 +1,67 @@
 | 
			
		||||
<?php
 | 
			
		||||
/**
 | 
			
		||||
 * Smarty plugin
 | 
			
		||||
 *
 | 
			
		||||
 * @package Smarty
 | 
			
		||||
 * @subpackage PluginsModifier
 | 
			
		||||
 */
 | 
			
		||||
 
 | 
			
		||||
/**
 | 
			
		||||
 * Smarty truncate modifier plugin
 | 
			
		||||
 * 
 | 
			
		||||
 * Type:     modifier<br>
 | 
			
		||||
 * Name:     truncate<br>
 | 
			
		||||
 * Purpose:  Truncate a string to a certain length if necessary,
 | 
			
		||||
 *               optionally splitting in the middle of a word, and
 | 
			
		||||
 *               appending the $etc string or inserting $etc into the middle.
 | 
			
		||||
 * 
 | 
			
		||||
 * @link http://smarty.php.net/manual/en/language.modifier.truncate.php truncate (Smarty online manual)
 | 
			
		||||
 * @author Monte Ohrt <monte at ohrt dot com> 
 | 
			
		||||
 * @param string $string input string
 | 
			
		||||
 * @param integer $length lenght of truncated text
 | 
			
		||||
 * @param string $etc end string
 | 
			
		||||
 * @param boolean $break_words truncate at word boundary
 | 
			
		||||
 * @param boolean $middle truncate in the middle of text
 | 
			
		||||
 * @return string truncated string
 | 
			
		||||
 */
 | 
			
		||||
function smarty_modifier_truncate($string, $length = 80, $etc = '...',
 | 
			
		||||
    $break_words = false, $middle = false)
 | 
			
		||||
{
 | 
			
		||||
    if ($length == 0)
 | 
			
		||||
        return '';
 | 
			
		||||
 | 
			
		||||
    if (is_callable('mb_strlen')) {
 | 
			
		||||
        if (mb_detect_encoding($string, 'UTF-8, ISO-8859-1') === 'UTF-8') {
 | 
			
		||||
            // $string has utf-8 encoding
 | 
			
		||||
            if (mb_strlen($string) > $length) {
 | 
			
		||||
                $length -= min($length, mb_strlen($etc));
 | 
			
		||||
                if (!$break_words && !$middle) {
 | 
			
		||||
                    $string = preg_replace('/\s+?(\S+)?$/u', '', mb_substr($string, 0, $length + 1));
 | 
			
		||||
                } 
 | 
			
		||||
                if (!$middle) {
 | 
			
		||||
                    return mb_substr($string, 0, $length) . $etc;
 | 
			
		||||
                } else {
 | 
			
		||||
                    return mb_substr($string, 0, $length / 2) . $etc . mb_substr($string, - $length / 2);
 | 
			
		||||
                } 
 | 
			
		||||
            } else {
 | 
			
		||||
                return $string;
 | 
			
		||||
            } 
 | 
			
		||||
        } 
 | 
			
		||||
    } 
 | 
			
		||||
    // $string has no utf-8 encoding
 | 
			
		||||
    if (strlen($string) > $length) {
 | 
			
		||||
        $length -= min($length, strlen($etc));
 | 
			
		||||
        if (!$break_words && !$middle) {
 | 
			
		||||
            $string = preg_replace('/\s+?(\S+)?$/', '', substr($string, 0, $length + 1));
 | 
			
		||||
        } 
 | 
			
		||||
        if (!$middle) {
 | 
			
		||||
            return substr($string, 0, $length) . $etc;
 | 
			
		||||
        } else {
 | 
			
		||||
            return substr($string, 0, $length / 2) . $etc . substr($string, - $length / 2);
 | 
			
		||||
        } 
 | 
			
		||||
    } else {
 | 
			
		||||
        return $string;
 | 
			
		||||
    } 
 | 
			
		||||
} 
 | 
			
		||||
 | 
			
		||||
?>
 | 
			
		||||
							
								
								
									
										29
									
								
								site/stackreach/libs/plugins/modifiercompiler.cat.php
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										29
									
								
								site/stackreach/libs/plugins/modifiercompiler.cat.php
									
									
									
									
									
										Normal file
									
								
							@@ -0,0 +1,29 @@
 | 
			
		||||
<?php
 | 
			
		||||
/**
 | 
			
		||||
 * Smarty plugin
 | 
			
		||||
 *
 | 
			
		||||
 * @package Smarty
 | 
			
		||||
 * @subpackage PluginsModifierCompiler
 | 
			
		||||
 */
 | 
			
		||||
 | 
			
		||||
/**
 | 
			
		||||
 * Smarty cat modifier plugin
 | 
			
		||||
 *
 | 
			
		||||
 * Type:     modifier<br>
 | 
			
		||||
 * Name:     cat<br>
 | 
			
		||||
 * Date:     Feb 24, 2003
 | 
			
		||||
 * Purpose:  catenate a value to a variable
 | 
			
		||||
 * Input:    string to catenate
 | 
			
		||||
 * Example:  {$var|cat:"foo"}
 | 
			
		||||
 * @link http://smarty.php.net/manual/en/language.modifier.cat.php cat
 | 
			
		||||
 *          (Smarty online manual)
 | 
			
		||||
 * @author   Uwe Tews
 | 
			
		||||
 * @param array $params parameters
 | 
			
		||||
 * @return string with compiled code
 | 
			
		||||
 */
 | 
			
		||||
function smarty_modifiercompiler_cat($params, $compiler)
 | 
			
		||||
{
 | 
			
		||||
    return '('.implode(').(', $params).')';
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
?>
 | 
			
		||||
@@ -0,0 +1,39 @@
 | 
			
		||||
<?php
 | 
			
		||||
/**
 | 
			
		||||
 * Smarty plugin
 | 
			
		||||
 *
 | 
			
		||||
 * @package Smarty
 | 
			
		||||
 * @subpackage PluginsModifierCompiler
 | 
			
		||||
 */
 | 
			
		||||
 | 
			
		||||
/**
 | 
			
		||||
 * Smarty count_characters modifier plugin
 | 
			
		||||
 * 
 | 
			
		||||
 * Type:     modifier<br>
 | 
			
		||||
 * Name:     count_characteres<br>
 | 
			
		||||
 * Purpose:  count the number of characters in a text
 | 
			
		||||
 * 
 | 
			
		||||
 * @link http://smarty.php.net/manual/en/language.modifier.count.characters.php count_characters (Smarty online manual)
 | 
			
		||||
 * @author Uwe Tews 
 | 
			
		||||
 * @param array $params parameters
 | 
			
		||||
 * @return string with compiled code
 | 
			
		||||
 */
 | 
			
		||||
function smarty_modifiercompiler_count_characters($params, $compiler)
 | 
			
		||||
{
 | 
			
		||||
    // mb_ functions available?
 | 
			
		||||
    if (function_exists('mb_strlen')) {
 | 
			
		||||
        // count also spaces?
 | 
			
		||||
        if (isset($params[1]) && $params[1] == 'true') {
 | 
			
		||||
            return '((mb_detect_encoding(' . $params[0] . ', \'UTF-8, ISO-8859-1\') === \'UTF-8\') ? mb_strlen(' . $params[0] . ', SMARTY_RESOURCE_CHAR_SET) : strlen(' . $params[0] . '))';
 | 
			
		||||
        } 
 | 
			
		||||
        return '((mb_detect_encoding(' . $params[0] . ', \'UTF-8, ISO-8859-1\') === \'UTF-8\') ? preg_match_all(\'#[^\s\pZ]#u\', ' . $params[0] . ', $tmp) : preg_match_all(\'/[^\s]/\',' . $params[0] . ', $tmp))';
 | 
			
		||||
    } else {
 | 
			
		||||
        // count also spaces?
 | 
			
		||||
        if (isset($params[1]) && $params[1] == 'true') {
 | 
			
		||||
            return 'strlen(' . $params[0] . ')';
 | 
			
		||||
        } 
 | 
			
		||||
        return 'preg_match_all(\'/[^\s]/\',' . $params[0] . ', $tmp)';
 | 
			
		||||
    } 
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
?>
 | 
			
		||||
@@ -0,0 +1,27 @@
 | 
			
		||||
<?php
 | 
			
		||||
/**
 | 
			
		||||
 * Smarty plugin
 | 
			
		||||
 *
 | 
			
		||||
 * @package Smarty
 | 
			
		||||
 * @subpackage PluginsModifierCompiler
 | 
			
		||||
 */
 | 
			
		||||
 | 
			
		||||
/**
 | 
			
		||||
 * Smarty count_paragraphs modifier plugin
 | 
			
		||||
 *
 | 
			
		||||
 * Type:     modifier<br>
 | 
			
		||||
 * Name:     count_paragraphs<br>
 | 
			
		||||
 * Purpose:  count the number of paragraphs in a text
 | 
			
		||||
 * @link http://smarty.php.net/manual/en/language.modifier.count.paragraphs.php
 | 
			
		||||
 *          count_paragraphs (Smarty online manual)
 | 
			
		||||
 * @author Uwe Tews 
 | 
			
		||||
 * @param array $params parameters
 | 
			
		||||
 * @return string with compiled code
 | 
			
		||||
 */
 | 
			
		||||
function smarty_modifiercompiler_count_paragraphs($params, $compiler)
 | 
			
		||||
{
 | 
			
		||||
    // count \r or \n characters
 | 
			
		||||
    return '(preg_match_all(\'#[\r\n]+#\', ' . $params[0] . ', $tmp)+1)';
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
?>
 | 
			
		||||
@@ -0,0 +1,27 @@
 | 
			
		||||
<?php
 | 
			
		||||
/**
 | 
			
		||||
 * Smarty plugin
 | 
			
		||||
 *
 | 
			
		||||
 * @package Smarty
 | 
			
		||||
 * @subpackage PluginsModifierCompiler
 | 
			
		||||
 */
 | 
			
		||||
 | 
			
		||||
/**
 | 
			
		||||
 * Smarty count_sentences modifier plugin
 | 
			
		||||
 *
 | 
			
		||||
 * Type:     modifier<br>
 | 
			
		||||
 * Name:     count_sentences
 | 
			
		||||
 * Purpose:  count the number of sentences in a text
 | 
			
		||||
 * @link http://smarty.php.net/manual/en/language.modifier.count.paragraphs.php
 | 
			
		||||
 *          count_sentences (Smarty online manual)
 | 
			
		||||
 * @author Uwe Tews 
 | 
			
		||||
 * @param array $params parameters
 | 
			
		||||
 * @return string with compiled code
 | 
			
		||||
 */
 | 
			
		||||
function smarty_modifiercompiler_count_sentences($params, $compiler)
 | 
			
		||||
{
 | 
			
		||||
    // find periods with a word before but not after.
 | 
			
		||||
    return 'preg_match_all(\'/[^\s]\.(?!\w)/\', ' . $params[0] . ', $tmp)';
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
?>
 | 
			
		||||
@@ -0,0 +1,31 @@
 | 
			
		||||
<?php
 | 
			
		||||
/**
 | 
			
		||||
 * Smarty plugin
 | 
			
		||||
 * 
 | 
			
		||||
 * @package Smarty
 | 
			
		||||
 * @subpackage PluginsModifierCompiler
 | 
			
		||||
 */
 | 
			
		||||
 | 
			
		||||
/**
 | 
			
		||||
 * Smarty count_words modifier plugin
 | 
			
		||||
 * 
 | 
			
		||||
 * Type:     modifier<br>
 | 
			
		||||
 * Name:     count_words<br>
 | 
			
		||||
 * Purpose:  count the number of words in a text
 | 
			
		||||
 * 
 | 
			
		||||
 * @link http://smarty.php.net/manual/en/language.modifier.count.words.php count_words (Smarty online manual)
 | 
			
		||||
 * @author Uwe Tews 
 | 
			
		||||
 * @param array $params parameters
 | 
			
		||||
 * @return string with compiled code
 | 
			
		||||
*/
 | 
			
		||||
function smarty_modifiercompiler_count_words($params, $compiler)
 | 
			
		||||
{ 
 | 
			
		||||
    // mb_ functions available?
 | 
			
		||||
    if (function_exists('mb_strlen')) {
 | 
			
		||||
        return '((mb_detect_encoding(' . $params[0] . ', \'UTF-8, ISO-8859-1\') === \'UTF-8\') ? preg_match_all(\'#[\w\pL]+#u\', ' . $params[0] . ', $tmp) : preg_match_all(\'#\w+#\',' . $params[0] . ', $tmp))';
 | 
			
		||||
    } else {
 | 
			
		||||
        return 'str_word_count(' . $params[0] . ')';
 | 
			
		||||
    } 
 | 
			
		||||
} 
 | 
			
		||||
 | 
			
		||||
?>
 | 
			
		||||
							
								
								
									
										33
									
								
								site/stackreach/libs/plugins/modifiercompiler.default.php
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										33
									
								
								site/stackreach/libs/plugins/modifiercompiler.default.php
									
									
									
									
									
										Normal file
									
								
							@@ -0,0 +1,33 @@
 | 
			
		||||
<?php
 | 
			
		||||
/**
 | 
			
		||||
 * Smarty plugin
 | 
			
		||||
 *
 | 
			
		||||
 * @package Smarty
 | 
			
		||||
 * @subpackage PluginsModifierCompiler
 | 
			
		||||
 */
 | 
			
		||||
 | 
			
		||||
/**
 | 
			
		||||
 * Smarty default modifier plugin
 | 
			
		||||
 * 
 | 
			
		||||
 * Type:     modifier<br>
 | 
			
		||||
 * Name:     default<br>
 | 
			
		||||
 * Purpose:  designate default value for empty variables
 | 
			
		||||
 * 
 | 
			
		||||
 * @link http://smarty.php.net/manual/en/language.modifier.default.php default (Smarty online manual)
 | 
			
		||||
 * @author Uwe Tews 
 | 
			
		||||
 * @param array $params parameters
 | 
			
		||||
 * @return string with compiled code
 | 
			
		||||
 */
 | 
			
		||||
function smarty_modifiercompiler_default ($params, $compiler)
 | 
			
		||||
{
 | 
			
		||||
    $output = $params[0];
 | 
			
		||||
    if (!isset($params[1])) {
 | 
			
		||||
        $params[1] = "''";
 | 
			
		||||
    } 
 | 
			
		||||
    for ($i = 1, $cnt = count($params); $i < $cnt; $i++) {
 | 
			
		||||
        $output = '(($tmp = @' . $output . ')===null||$tmp===\'\' ? ' . $params[$i] . ' : $tmp)';
 | 
			
		||||
    } 
 | 
			
		||||
    return $output;
 | 
			
		||||
} 
 | 
			
		||||
 | 
			
		||||
?>
 | 
			
		||||
							
								
								
									
										32
									
								
								site/stackreach/libs/plugins/modifiercompiler.indent.php
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										32
									
								
								site/stackreach/libs/plugins/modifiercompiler.indent.php
									
									
									
									
									
										Normal file
									
								
							@@ -0,0 +1,32 @@
 | 
			
		||||
<?php
 | 
			
		||||
/**
 | 
			
		||||
 * Smarty plugin
 | 
			
		||||
 * @package Smarty
 | 
			
		||||
 * @subpackage PluginsModifierCompiler
 | 
			
		||||
 */
 | 
			
		||||
 | 
			
		||||
/**
 | 
			
		||||
 * Smarty indent modifier plugin
 | 
			
		||||
 *
 | 
			
		||||
 * Type:     modifier<br>
 | 
			
		||||
 * Name:     indent<br>
 | 
			
		||||
 * Purpose:  indent lines of text
 | 
			
		||||
 * @link http://smarty.php.net/manual/en/language.modifier.indent.php
 | 
			
		||||
 *          indent (Smarty online manual)
 | 
			
		||||
 * @author Uwe Tews 
 | 
			
		||||
 * @param array $params parameters
 | 
			
		||||
 * @return string with compiled code
 | 
			
		||||
 */
 | 
			
		||||
 | 
			
		||||
function smarty_modifiercompiler_indent($params, $compiler)
 | 
			
		||||
{
 | 
			
		||||
    if (!isset($params[1])) {
 | 
			
		||||
        $params[1] = 4;
 | 
			
		||||
    } 
 | 
			
		||||
    if (!isset($params[2])) {
 | 
			
		||||
        $params[2] = "' '";
 | 
			
		||||
    } 
 | 
			
		||||
    return 'preg_replace(\'!^!m\',str_repeat(' . $params[2] . ',' . $params[1] . '),' . $params[0] . ')';
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
?>
 | 
			
		||||
							
								
								
									
										31
									
								
								site/stackreach/libs/plugins/modifiercompiler.lower.php
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										31
									
								
								site/stackreach/libs/plugins/modifiercompiler.lower.php
									
									
									
									
									
										Normal file
									
								
							@@ -0,0 +1,31 @@
 | 
			
		||||
<?php
 | 
			
		||||
/**
 | 
			
		||||
 * Smarty plugin
 | 
			
		||||
 * @package Smarty
 | 
			
		||||
 * @subpackage PluginsModifierCompiler
 | 
			
		||||
 */
 | 
			
		||||
 | 
			
		||||
/**
 | 
			
		||||
 * Smarty lower modifier plugin
 | 
			
		||||
 * 
 | 
			
		||||
 * Type:     modifier<br>
 | 
			
		||||
 * Name:     lower<br>
 | 
			
		||||
 * Purpose:  convert string to lowercase
 | 
			
		||||
 * 
 | 
			
		||||
 * @link http://smarty.php.net/manual/en/language.modifier.lower.php lower (Smarty online manual)
 | 
			
		||||
 * @author Monte Ohrt <monte at ohrt dot com> 
 | 
			
		||||
 * @author Uwe Tews 
 | 
			
		||||
 * @param array $params parameters
 | 
			
		||||
 * @return string with compiled code
 | 
			
		||||
 */
 | 
			
		||||
 | 
			
		||||
function smarty_modifiercompiler_lower($params, $compiler)
 | 
			
		||||
{
 | 
			
		||||
    if (function_exists('mb_strtolower')) {
 | 
			
		||||
        return '((mb_detect_encoding(' . $params[0] . ', \'UTF-8, ISO-8859-1\') === \'UTF-8\') ? mb_strtolower(' . $params[0] . ',SMARTY_RESOURCE_CHAR_SET) : strtolower(' . $params[0] . '))' ;
 | 
			
		||||
    } else {
 | 
			
		||||
        return 'strtolower(' . $params[0] . ')';
 | 
			
		||||
    } 
 | 
			
		||||
} 
 | 
			
		||||
 | 
			
		||||
?>
 | 
			
		||||
							
								
								
									
										24
									
								
								site/stackreach/libs/plugins/modifiercompiler.noprint.php
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										24
									
								
								site/stackreach/libs/plugins/modifiercompiler.noprint.php
									
									
									
									
									
										Normal file
									
								
							@@ -0,0 +1,24 @@
 | 
			
		||||
<?php
 | 
			
		||||
/**
 | 
			
		||||
 * Smarty plugin
 | 
			
		||||
 *
 | 
			
		||||
 * @package Smarty
 | 
			
		||||
 * @subpackage PluginsModifierCompiler
 | 
			
		||||
 */
 | 
			
		||||
 | 
			
		||||
/**
 | 
			
		||||
 * Smarty noprint modifier plugin
 | 
			
		||||
 *
 | 
			
		||||
 * Type:     modifier<br>
 | 
			
		||||
 * Name:     noprint<br>
 | 
			
		||||
 * Purpose:  return an empty string
 | 
			
		||||
 * @author   Uwe Tews
 | 
			
		||||
 * @param array $params parameters
 | 
			
		||||
 * @return string with compiled code
 | 
			
		||||
 */
 | 
			
		||||
function smarty_modifiercompiler_noprint($params, $compiler)
 | 
			
		||||
{
 | 
			
		||||
    return "''";
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
?>
 | 
			
		||||
@@ -0,0 +1,26 @@
 | 
			
		||||
<?php
 | 
			
		||||
/**
 | 
			
		||||
 * Smarty plugin
 | 
			
		||||
 * 
 | 
			
		||||
 * @package Smarty
 | 
			
		||||
 * @subpackage PluginsModifierCompiler
 | 
			
		||||
 */
 | 
			
		||||
 | 
			
		||||
/**
 | 
			
		||||
 * Smarty string_format modifier plugin
 | 
			
		||||
 * 
 | 
			
		||||
 * Type:     modifier<br>
 | 
			
		||||
 * Name:     string_format<br>
 | 
			
		||||
 * Purpose:  format strings via sprintf
 | 
			
		||||
 * 
 | 
			
		||||
 * @link http://smarty.php.net/manual/en/language.modifier.string.format.php string_format (Smarty online manual)
 | 
			
		||||
 * @author Uwe Tews 
 | 
			
		||||
 * @param array $params parameters
 | 
			
		||||
 * @return string with compiled code
 | 
			
		||||
 */
 | 
			
		||||
function smarty_modifiercompiler_string_format($params, $compiler)
 | 
			
		||||
{
 | 
			
		||||
    return 'sprintf(' . $params[1] . ',' . $params[0] . ')';
 | 
			
		||||
} 
 | 
			
		||||
 | 
			
		||||
?>
 | 
			
		||||
							
								
								
									
										33
									
								
								site/stackreach/libs/plugins/modifiercompiler.strip.php
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										33
									
								
								site/stackreach/libs/plugins/modifiercompiler.strip.php
									
									
									
									
									
										Normal file
									
								
							@@ -0,0 +1,33 @@
 | 
			
		||||
<?php
 | 
			
		||||
/**
 | 
			
		||||
 * Smarty plugin
 | 
			
		||||
 *
 | 
			
		||||
 * @package Smarty
 | 
			
		||||
 * @subpackage PluginsModifierCompiler
 | 
			
		||||
 */
 | 
			
		||||
 | 
			
		||||
/**
 | 
			
		||||
 * Smarty strip modifier plugin
 | 
			
		||||
 * 
 | 
			
		||||
 * Type:     modifier<br>
 | 
			
		||||
 * Name:     strip<br>
 | 
			
		||||
 * Purpose:  Replace all repeated spaces, newlines, tabs
 | 
			
		||||
 *              with a single space or supplied replacement string.<br>
 | 
			
		||||
 * Example:  {$var|strip} {$var|strip:" "}
 | 
			
		||||
 * Date:     September 25th, 2002
 | 
			
		||||
 * 
 | 
			
		||||
 * @link http://smarty.php.net/manual/en/language.modifier.strip.php strip (Smarty online manual)
 | 
			
		||||
 * @author Uwe Tews 
 | 
			
		||||
 * @param array $params parameters
 | 
			
		||||
 * @return string with compiled code
 | 
			
		||||
 */
 | 
			
		||||
 | 
			
		||||
function smarty_modifiercompiler_strip($params, $compiler)
 | 
			
		||||
{
 | 
			
		||||
    if (!isset($params[1])) {
 | 
			
		||||
        $params[1] = "' '";
 | 
			
		||||
    } 
 | 
			
		||||
    return "preg_replace('!\s+!', {$params[1]},{$params[0]})";
 | 
			
		||||
} 
 | 
			
		||||
 | 
			
		||||
?>
 | 
			
		||||
							
								
								
									
										34
									
								
								site/stackreach/libs/plugins/modifiercompiler.strip_tags.php
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										34
									
								
								site/stackreach/libs/plugins/modifiercompiler.strip_tags.php
									
									
									
									
									
										Normal file
									
								
							@@ -0,0 +1,34 @@
 | 
			
		||||
<?php
 | 
			
		||||
/**
 | 
			
		||||
 * Smarty plugin
 | 
			
		||||
 *
 | 
			
		||||
 * @package Smarty
 | 
			
		||||
 * @subpackage PluginsModifierCompiler
 | 
			
		||||
 */
 | 
			
		||||
 | 
			
		||||
/**
 | 
			
		||||
 * Smarty strip_tags modifier plugin
 | 
			
		||||
 * 
 | 
			
		||||
 * Type:     modifier<br>
 | 
			
		||||
 * Name:     strip_tags<br>
 | 
			
		||||
 * Purpose:  strip html tags from text
 | 
			
		||||
 * 
 | 
			
		||||
 * @link http://smarty.php.net/manual/en/language.modifier.strip.tags.php strip_tags (Smarty online manual)
 | 
			
		||||
 * @author Uwe Tews 
 | 
			
		||||
 * @param array $params parameters
 | 
			
		||||
 * @return string with compiled code
 | 
			
		||||
 */
 | 
			
		||||
 | 
			
		||||
function smarty_modifiercompiler_strip_tags($params, $compiler)
 | 
			
		||||
{
 | 
			
		||||
   if (!isset($params[1])) {
 | 
			
		||||
        $params[1] = true;
 | 
			
		||||
    } 
 | 
			
		||||
    if ($params[1] === true) {
 | 
			
		||||
        return "preg_replace('!<[^>]*?>!', ' ', {$params[0]})";
 | 
			
		||||
    } else {
 | 
			
		||||
        return 'strip_tags(' . $params[0] . ')';
 | 
			
		||||
    } 
 | 
			
		||||
} 
 | 
			
		||||
 | 
			
		||||
?>
 | 
			
		||||
							
								
								
									
										30
									
								
								site/stackreach/libs/plugins/modifiercompiler.upper.php
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										30
									
								
								site/stackreach/libs/plugins/modifiercompiler.upper.php
									
									
									
									
									
										Normal file
									
								
							@@ -0,0 +1,30 @@
 | 
			
		||||
<?php
 | 
			
		||||
/**
 | 
			
		||||
 * Smarty plugin
 | 
			
		||||
 *
 | 
			
		||||
 * @package Smarty
 | 
			
		||||
 * @subpackage PluginsModifierCompiler
 | 
			
		||||
 */
 | 
			
		||||
 | 
			
		||||
/**
 | 
			
		||||
 * Smarty upper modifier plugin
 | 
			
		||||
 * 
 | 
			
		||||
 * Type:     modifier<br>
 | 
			
		||||
 * Name:     lower<br>
 | 
			
		||||
 * Purpose:  convert string to uppercase
 | 
			
		||||
 * 
 | 
			
		||||
 * @link http://smarty.php.net/manual/en/language.modifier.upper.php lower (Smarty online manual)
 | 
			
		||||
 * @author Uwe Tews 
 | 
			
		||||
 * @param array $params parameters
 | 
			
		||||
 * @return string with compiled code
 | 
			
		||||
 */
 | 
			
		||||
function smarty_modifiercompiler_upper($params, $compiler)
 | 
			
		||||
{
 | 
			
		||||
    if (function_exists('mb_strtoupper')) {
 | 
			
		||||
        return '((mb_detect_encoding(' . $params[0] . ', \'UTF-8, ISO-8859-1\') === \'UTF-8\') ? mb_strtoupper(' . $params[0] . ',SMARTY_RESOURCE_CHAR_SET) : strtoupper(' . $params[0] . '))' ;
 | 
			
		||||
    } else {
 | 
			
		||||
        return 'strtoupper(' . $params[0] . ')';
 | 
			
		||||
    } 
 | 
			
		||||
} 
 | 
			
		||||
 | 
			
		||||
?>
 | 
			
		||||
							
								
								
									
										35
									
								
								site/stackreach/libs/plugins/modifiercompiler.wordwrap.php
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										35
									
								
								site/stackreach/libs/plugins/modifiercompiler.wordwrap.php
									
									
									
									
									
										Normal file
									
								
							@@ -0,0 +1,35 @@
 | 
			
		||||
<?php
 | 
			
		||||
/**
 | 
			
		||||
 * Smarty plugin
 | 
			
		||||
 *
 | 
			
		||||
 * @package Smarty
 | 
			
		||||
 * @subpackage PluginsModifierCompiler
 | 
			
		||||
 */
 | 
			
		||||
 | 
			
		||||
/**
 | 
			
		||||
 * Smarty wordwrap modifier plugin
 | 
			
		||||
 * 
 | 
			
		||||
 * Type:     modifier<br>
 | 
			
		||||
 * Name:     wordwrap<br>
 | 
			
		||||
 * Purpose:  wrap a string of text at a given length
 | 
			
		||||
 * 
 | 
			
		||||
 * @link http://smarty.php.net/manual/en/language.modifier.wordwrap.php wordwrap (Smarty online manual)
 | 
			
		||||
 * @author Uwe Tews 
 | 
			
		||||
 * @param array $params parameters
 | 
			
		||||
 * @return string with compiled code
 | 
			
		||||
 */
 | 
			
		||||
function smarty_modifiercompiler_wordwrap($params, $compiler)
 | 
			
		||||
{
 | 
			
		||||
    if (!isset($params[1])) {
 | 
			
		||||
        $params[1] = 80;
 | 
			
		||||
    } 
 | 
			
		||||
    if (!isset($params[2])) {
 | 
			
		||||
        $params[2] = '"\n"';
 | 
			
		||||
    } 
 | 
			
		||||
    if (!isset($params[3])) {
 | 
			
		||||
        $params[3] = 'false';
 | 
			
		||||
    } 
 | 
			
		||||
    return 'wordwrap(' . $params[0] . ',' . $params[1] . ',' . $params[2] . ',' . $params[3] . ')';
 | 
			
		||||
} 
 | 
			
		||||
 | 
			
		||||
?>
 | 
			
		||||
							
								
								
									
										77
									
								
								site/stackreach/libs/plugins/outputfilter.trimwhitespace.php
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										77
									
								
								site/stackreach/libs/plugins/outputfilter.trimwhitespace.php
									
									
									
									
									
										Normal file
									
								
							@@ -0,0 +1,77 @@
 | 
			
		||||
<?php
 | 
			
		||||
/**
 | 
			
		||||
 * Smarty plugin
 | 
			
		||||
 *
 | 
			
		||||
 * @package Smarty
 | 
			
		||||
 * @subpackage PluginsFilter
 | 
			
		||||
 */
 | 
			
		||||
 | 
			
		||||
/**
 | 
			
		||||
 * Smarty trimwhitespace outputfilter plugin
 | 
			
		||||
 *
 | 
			
		||||
 * File:     outputfilter.trimwhitespace.php<br>
 | 
			
		||||
 * Type:     outputfilter<br>
 | 
			
		||||
 * Name:     trimwhitespace<br>
 | 
			
		||||
 * Date:     Jan 25, 2003<br>
 | 
			
		||||
 * Purpose:  trim leading white space and blank lines from
 | 
			
		||||
 *           template source after it gets interpreted, cleaning
 | 
			
		||||
 *           up code and saving bandwidth. Does not affect
 | 
			
		||||
 *           <<PRE>></PRE> and <SCRIPT></SCRIPT> blocks.<br>
 | 
			
		||||
 * Install:  Drop into the plugin directory, call
 | 
			
		||||
 *           <code>$smarty->load_filter('output','trimwhitespace');</code>
 | 
			
		||||
 *           from application.
 | 
			
		||||
 * @author   Monte Ohrt <monte at ohrt dot com>
 | 
			
		||||
 * @author Contributions from Lars Noschinski <lars@usenet.noschinski.de>
 | 
			
		||||
 * @version  1.3
 | 
			
		||||
 * @param string $source input string
 | 
			
		||||
 * @param object &$smarty Smarty object
 | 
			
		||||
 * @return string filtered output
 | 
			
		||||
 */
 | 
			
		||||
function smarty_outputfilter_trimwhitespace($source, $smarty)
 | 
			
		||||
{
 | 
			
		||||
    // Pull out the script blocks
 | 
			
		||||
    preg_match_all("!<script[^>]*?>.*?</script>!is", $source, $match);
 | 
			
		||||
    $_script_blocks = $match[0];
 | 
			
		||||
    $source = preg_replace("!<script[^>]*?>.*?</script>!is",
 | 
			
		||||
                           '@@@SMARTY:TRIM:SCRIPT@@@', $source);
 | 
			
		||||
 | 
			
		||||
    // Pull out the pre blocks
 | 
			
		||||
    preg_match_all("!<pre[^>]*?>.*?</pre>!is", $source, $match);
 | 
			
		||||
    $_pre_blocks = $match[0];
 | 
			
		||||
    $source = preg_replace("!<pre[^>]*?>.*?</pre>!is",
 | 
			
		||||
                           '@@@SMARTY:TRIM:PRE@@@', $source);
 | 
			
		||||
    
 | 
			
		||||
    // Pull out the textarea blocks
 | 
			
		||||
    preg_match_all("!<textarea[^>]*?>.*?</textarea>!is", $source, $match);
 | 
			
		||||
    $_textarea_blocks = $match[0];
 | 
			
		||||
    $source = preg_replace("!<textarea[^>]*?>.*?</textarea>!is",
 | 
			
		||||
                           '@@@SMARTY:TRIM:TEXTAREA@@@', $source);
 | 
			
		||||
 | 
			
		||||
    // remove all leading spaces, tabs and carriage returns NOT
 | 
			
		||||
    // preceeded by a php close tag.
 | 
			
		||||
    $source = trim(preg_replace('/((?<!\?>)\n)[\s]+/m', '\1', $source));
 | 
			
		||||
 | 
			
		||||
    // replace textarea blocks
 | 
			
		||||
    smarty_outputfilter_trimwhitespace_replace("@@@SMARTY:TRIM:TEXTAREA@@@",$_textarea_blocks, $source);
 | 
			
		||||
 | 
			
		||||
    // replace pre blocks
 | 
			
		||||
    smarty_outputfilter_trimwhitespace_replace("@@@SMARTY:TRIM:PRE@@@",$_pre_blocks, $source);
 | 
			
		||||
 | 
			
		||||
    // replace script blocks
 | 
			
		||||
    smarty_outputfilter_trimwhitespace_replace("@@@SMARTY:TRIM:SCRIPT@@@",$_script_blocks, $source);
 | 
			
		||||
 | 
			
		||||
    return $source;
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
function smarty_outputfilter_trimwhitespace_replace($search_str, $replace, &$subject) {
 | 
			
		||||
    $_len = strlen($search_str);
 | 
			
		||||
    $_pos = 0;
 | 
			
		||||
    for ($_i=0, $_count=count($replace); $_i<$_count; $_i++)
 | 
			
		||||
        if (($_pos=strpos($subject, $search_str, $_pos))!==false)
 | 
			
		||||
            $subject = substr_replace($subject, $replace[$_i], $_pos, $_len);
 | 
			
		||||
        else
 | 
			
		||||
            break;
 | 
			
		||||
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
?>
 | 
			
		||||
							
								
								
									
										29
									
								
								site/stackreach/libs/plugins/shared.escape_special_chars.php
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										29
									
								
								site/stackreach/libs/plugins/shared.escape_special_chars.php
									
									
									
									
									
										Normal file
									
								
							@@ -0,0 +1,29 @@
 | 
			
		||||
<?php
 | 
			
		||||
/**
 | 
			
		||||
 * Smarty shared plugin
 | 
			
		||||
 *
 | 
			
		||||
 * @package Smarty
 | 
			
		||||
 * @subpackage PluginsShared
 | 
			
		||||
 */
 | 
			
		||||
 | 
			
		||||
/**
 | 
			
		||||
 * escape_special_chars common function
 | 
			
		||||
 *
 | 
			
		||||
 * Function: smarty_function_escape_special_chars<br>
 | 
			
		||||
 * Purpose:  used by other smarty functions to escape
 | 
			
		||||
 *           special chars except for already escaped ones
 | 
			
		||||
 * @author   Monte Ohrt <monte at ohrt dot com>
 | 
			
		||||
 * @param string
 | 
			
		||||
 * @return string
 | 
			
		||||
 */
 | 
			
		||||
function smarty_function_escape_special_chars($string)
 | 
			
		||||
{
 | 
			
		||||
    if(!is_array($string)) {
 | 
			
		||||
        $string = preg_replace('!&(#?\w+);!', '%%%SMARTY_START%%%\\1%%%SMARTY_END%%%', $string);
 | 
			
		||||
        $string = htmlspecialchars($string);
 | 
			
		||||
        $string = str_replace(array('%%%SMARTY_START%%%','%%%SMARTY_END%%%'), array('&',';'), $string);
 | 
			
		||||
    }
 | 
			
		||||
    return $string;
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
?>
 | 
			
		||||
							
								
								
									
										43
									
								
								site/stackreach/libs/plugins/shared.make_timestamp.php
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										43
									
								
								site/stackreach/libs/plugins/shared.make_timestamp.php
									
									
									
									
									
										Normal file
									
								
							@@ -0,0 +1,43 @@
 | 
			
		||||
<?php
 | 
			
		||||
/**
 | 
			
		||||
 * Smarty shared plugin
 | 
			
		||||
 *
 | 
			
		||||
 * @package Smarty
 | 
			
		||||
 * @subpackage PluginsShared
 | 
			
		||||
 */
 | 
			
		||||
 | 
			
		||||
/**
 | 
			
		||||
 * Function: smarty_make_timestamp<br>
 | 
			
		||||
 * Purpose:  used by other smarty functions to make a timestamp
 | 
			
		||||
 *           from a string.
 | 
			
		||||
 * @author   Monte Ohrt <monte at ohrt dot com>
 | 
			
		||||
 * @param string $string
 | 
			
		||||
 * @return string
 | 
			
		||||
 */
 | 
			
		||||
 | 
			
		||||
function smarty_make_timestamp($string)
 | 
			
		||||
{
 | 
			
		||||
    if(empty($string)) {
 | 
			
		||||
        // use "now":
 | 
			
		||||
        return time();
 | 
			
		||||
    } elseif ($string instanceof DateTime) {
 | 
			
		||||
        return $string->getTimestamp();
 | 
			
		||||
    } elseif (strlen($string)==14 && ctype_digit($string)) {
 | 
			
		||||
        // it is mysql timestamp format of YYYYMMDDHHMMSS?            
 | 
			
		||||
        return mktime(substr($string, 8, 2),substr($string, 10, 2),substr($string, 12, 2),
 | 
			
		||||
                       substr($string, 4, 2),substr($string, 6, 2),substr($string, 0, 4));
 | 
			
		||||
    } elseif (is_numeric($string)) {
 | 
			
		||||
        // it is a numeric string, we handle it as timestamp
 | 
			
		||||
        return (int)$string;
 | 
			
		||||
    } else {
 | 
			
		||||
        // strtotime should handle it
 | 
			
		||||
        $time = strtotime($string);
 | 
			
		||||
        if ($time == -1 || $time === false) {
 | 
			
		||||
            // strtotime() was not able to parse $string, use "now":
 | 
			
		||||
            return time();
 | 
			
		||||
        }
 | 
			
		||||
        return $time;
 | 
			
		||||
    }
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
?>
 | 
			
		||||
							
								
								
									
										38
									
								
								site/stackreach/libs/plugins/shared.mb_str_replace.php
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										38
									
								
								site/stackreach/libs/plugins/shared.mb_str_replace.php
									
									
									
									
									
										Normal file
									
								
							@@ -0,0 +1,38 @@
 | 
			
		||||
<?php
 | 
			
		||||
 | 
			
		||||
if(!function_exists('smarty_mb_str_replace')) {
 | 
			
		||||
  function smarty_mb_str_replace($search, $replace, $subject, &$count=0) { 
 | 
			
		||||
      if (!is_array($search) && is_array($replace)) { 
 | 
			
		||||
          return false; 
 | 
			
		||||
      } 
 | 
			
		||||
      if (is_array($subject)) { 
 | 
			
		||||
          // call mb_replace for each single string in $subject 
 | 
			
		||||
          foreach ($subject as &$string) { 
 | 
			
		||||
              $string = &smarty_mb_str_replace($search, $replace, $string, $c); 
 | 
			
		||||
              $count += $c; 
 | 
			
		||||
          } 
 | 
			
		||||
      } elseif (is_array($search)) { 
 | 
			
		||||
          if (!is_array($replace)) { 
 | 
			
		||||
              foreach ($search as &$string) { 
 | 
			
		||||
                  $subject = smarty_mb_str_replace($string, $replace, $subject, $c); 
 | 
			
		||||
                  $count += $c; 
 | 
			
		||||
              } 
 | 
			
		||||
          } else { 
 | 
			
		||||
              $n = max(count($search), count($replace)); 
 | 
			
		||||
              while ($n--) { 
 | 
			
		||||
                  $subject = smarty_mb_str_replace(current($search), current($replace), $subject, $c); 
 | 
			
		||||
                  $count += $c; 
 | 
			
		||||
                  next($search); 
 | 
			
		||||
                  next($replace); 
 | 
			
		||||
              } 
 | 
			
		||||
          } 
 | 
			
		||||
      } else { 
 | 
			
		||||
          $parts = mb_split(preg_quote($search), $subject); 
 | 
			
		||||
          $count = count($parts)-1; 
 | 
			
		||||
          $subject = implode($replace, $parts); 
 | 
			
		||||
      } 
 | 
			
		||||
      return $subject; 
 | 
			
		||||
  }
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
?>
 | 
			
		||||
@@ -0,0 +1,22 @@
 | 
			
		||||
<?php
 | 
			
		||||
/**
 | 
			
		||||
 * Smarty plugin
 | 
			
		||||
 * 
 | 
			
		||||
 * @package Smarty
 | 
			
		||||
 * @subpackage PluginsFilter
 | 
			
		||||
 */
 | 
			
		||||
 | 
			
		||||
/**
 | 
			
		||||
 * Smarty htmlspecialchars variablefilter plugin
 | 
			
		||||
 * 
 | 
			
		||||
 * @param string $source input string
 | 
			
		||||
 * @param object $ &$smarty Smarty object
 | 
			
		||||
 * @return string filtered output
 | 
			
		||||
 */
 | 
			
		||||
 | 
			
		||||
function smarty_variablefilter_htmlspecialchars($source, $smarty)
 | 
			
		||||
{
 | 
			
		||||
    return htmlspecialchars($source, ENT_QUOTES);
 | 
			
		||||
} 
 | 
			
		||||
 | 
			
		||||
?>
 | 
			
		||||
		Reference in New Issue
	
	Block a user