⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 smarty.addons.php

📁 通达OA官方提供的30源代码,感觉很实在
💻 PHP
📖 第 1 页 / 共 3 页
字号:
        }

        // match all vars in equation, make sure all are passed
        preg_match_all("![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[0] as $curr_var) {
            if (!in_array($curr_var,array_keys($args)) && !in_array($curr_var, $allowed_funcs)) {
                $smarty_obj->_trigger_error_msg("math: parameter $curr_var not passed as argument");
                return;
            }
        }

        foreach($args as $key => $val) {
            if ($key != "equation" && $key != "format" && $key != "assign") {
                // make sure value is not empty
                if (strlen($val)==0) {
                    $smarty_obj->_trigger_error_msg("math: parameter $key is empty");
                    return;
                }
                if (!is_numeric($val)) {
                    $smarty_obj->_trigger_error_msg("math: parameter $key: is not numeric");
                    return;
                }
                $equation = preg_replace("/\b$key\b/",$val, $equation);
            }
        }

    eval("\$smarty_math_result = ".$equation.";");

    if (empty($args["format"])) {
        if (empty($args["assign"])) {
            echo $smarty_math_result;
        } else {
            $smarty_obj->assign($args["assign"],$smarty_math_result);
        }
    } else {
        if (empty($args["assign"])){
            printf($args["format"],$smarty_math_result);
        } else {
            $smarty_obj->assign($assign,sprintf($args["format"],$smarty_math_result));
        }
    }
}

/*======================================================================*\
    Function: smarty_func_fetch
    Purpose:  fetch file, web or ftp data and display results
\*======================================================================*/
function smarty_func_fetch($args, &$smarty_obj) {
    extract($args);

    if (empty($file)) {
        $smarty_obj->_trigger_error_msg("parameter 'file' cannot be empty");
        return;
    }

    if ($smarty_obj->security && !preg_match('!^(http|ftp)://!', $file)) {
        // make sure fetched file comes from secure directory
        foreach ($smarty_obj->secure_dir as $curr_dir) {
            if (substr(realpath($file), 0, strlen(realpath($curr_dir))) == realpath($curr_dir)) {
                $resource_is_secure = true;
                break;
            }
        }
        if (!$resource_is_secure) {
            $smarty_obj->_trigger_error_msg("(secure mode) fetch '$file' is not allowed");
            return;
        }
        if (!@is_readable($file)) {
            $smarty_obj->_trigger_error_msg("fetch cannot read file '$file'");
            return;
        }
    }


    if (!empty($assign)) {
        ob_start();
        readfile($file);
        $smarty_obj->assign($assign,ob_get_contents());
        ob_end_clean();
    } else {
        readfile($file);
    }
}

/*======================================================================*\
    Function: smarty_mod_count_characters
    Purpose:  count the number of characters in a text
\*======================================================================*/
function smarty_mod_count_characters($string, $include_spaces=false) {

    if ($include_spaces)
       return(strlen($string));

    return preg_match_all("/[^\s]/",$string, $match);
}

/*======================================================================*\
    Function: smarty_mod_count_words
    Purpose:  count the number of words in a text
\*======================================================================*/
function smarty_mod_count_words($string) {

    // split text by ' ',\r,\n,\f,\t
    $split_array = preg_split("/\s+/",$string);
    // count matches that contain alphanumerics
    $word_count = preg_grep("/[a-zA-Z0-9]/",$split_array);

    return count($word_count);
}

/*======================================================================*\
    Function: smarty_mod_count_sentences
    Purpose:  count the number of sentences in a text
\*======================================================================*/
function smarty_mod_count_sentences($string, $include_spaces=false) {

    // find periods with a word before but not after.
    return preg_match_all("/[^\s]\.(?!\w)/",$string, $match);

}

/*======================================================================*\
    Function: smarty_mod_count_paragraphs
    Purpose:  count the number of sentences in a text
\*======================================================================*/
function smarty_mod_count_paragraphs($string, $include_spaces=false) {

    // count \r or \n characters
    return count( preg_split("/[\r\n]+/",$string) );
}

/*======================================================================*\
    Function: smarty_func_counter
    Purpose:  print out a counter value
\*======================================================================*/
function smarty_func_counter($args, &$smarty_obj) {

    static $count = array();
    static $skipval = array();
    static $dir = array();
    static $id = "default";
    static $printval = array();
    static $assign = "";

    extract($args);

    if (!isset($id))
        $id = "default";

    if (isset($start))
        $count[$id] = $start;
    else if (!isset($count[$id]))
        $count[$id]=1;

    if (!isset($print))
        $printval[$id]=true;
    else
        $printval[$id]=$print;
    
    if (!empty($assign)) {
        $printval[$id] = false;
        $smarty_obj->assign($assign, $count[$id]);
    }

    if ($printval[$id])
        echo $count[$id];

    if (isset($skip))
        $skipval[$id] = $skip;
    else if (empty($skipval[$id]))
        $skipval[$id] = 1;
    
    if (isset($direction))
        $dir[$id] = $direction;
    else if (!isset($dir[$id]))
        $dir[$id] = "up";

    if ($dir[$id] == "down")
        $count[$id] -= $skipval[$id];
    else
        $count[$id] += $skipval[$id];
    
    return true;
}

/*======================================================================*\
    Function: smarty_func_assign_debug_info
    Purpose:  assign debug info to the template
\*======================================================================*/
function smarty_func_assign_debug_info($args, &$smarty_obj) {
    $assigned_vars = $smarty_obj->_tpl_vars;
    ksort($assigned_vars);
    if (is_array($smarty_obj->_config[0])) {
        $config_vars = $smarty_obj->_config[0];
        ksort($config_vars);
        $smarty_obj->assign("_debug_config_keys", array_keys($config_vars));
        $smarty_obj->assign("_debug_config_vals", array_values ($config_vars));
    }   
    
    $included_templates = $smarty_obj->_smarty_debug_info;
    
    $smarty_obj->assign("_debug_keys", array_keys($assigned_vars));
    $smarty_obj->assign("_debug_vals", array_values ($assigned_vars));
    
    $smarty_obj->assign("_debug_tpls", $included_templates);
    return true;
}

/*======================================================================*\
    Function: smarty_func_debug_print_var
    Purpose:  prints variable (or array) contents to the console
\*======================================================================*/
function smarty_mod_debug_print_var($var, $depth=0, $length=40) {
    if (is_array($var)) {
        $results = "<b>Array (".count($var).")</b>";
        foreach ($var as $curr_key => $curr_val) {
            $return = smarty_mod_debug_print_var($curr_val, $depth+1);
            $results .= '<br>\r'.str_repeat('&nbsp;', $depth*2)."<b>$curr_key</b> =&gt; $return";
        }
        return $results;
    } else {
        if (empty($var)) {
            return '<i>empty</i>';
        }
        if (strlen($var) > $length ) {
            $results = substr($var, 0, $length-3).'...';
        } else {
            $results = $var;
        }
        $results = preg_replace("![\r\t\n]!", " ", $results);
        $results = htmlspecialchars(htmlspecialchars($results));
        return $results;
    }
}


/*======================================================================*\
    Function: smarty_func_overlib_init
    Purpose:  initialize use of overlib
\*======================================================================*/
function smarty_func_overlib_init($args, &$smarty_obj) {
    // be sure to place overlib.js where Smarty can locate it.
    // overlib.js came with the distribution of Smarty.
    echo '<DIV ID="overDiv" STYLE="position:absolute; visibility:hidden; z-index:1000;"></DIV>'."\n".'<SCRIPT LANGUAGE=javascript>'."\n".'<!--'."\n";
    readfile(SMARTY_DIR."overlib.js",1);
    echo '// -->'."\n".'</SCRIPT>'."\n";
    return;
}

/*======================================================================*\
    Function: smarty_func_overlib
    Purpose:  make text pop up in windows via overlib
\*======================================================================*/
function smarty_func_overlib($args, &$smarty_obj) {
    extract($args);
    if (empty($text)) {
        $smarty_obj->_trigger_error_msg("overlib: attribute 'text' required");
        return false;
    }

    if (empty($trigger)) { $trigger = "onMouseOver"; }

    echo $trigger.'="return overlib(\''.str_replace("'","\'",$text).'\'';
    if ($sticky) { echo ",STICKY"; }
    if (!empty($caption)) { echo ",CAPTION,'".str_replace("'","\'",$caption)."'"; }
    if (!empty($fgcolor)) { echo ",FGCOLOR,'$fgcolor'"; }
    if (!empty($bgcolor)) { echo ",BGCOLOR,'$bgcolor'"; }
    if (!empty($textcolor)) { echo ",TEXTCOLOR,'$textcolor'"; }
    if (!empty($capcolor)) { echo ",CAPCOLOR,'$capcolor'"; }
    if (!empty($closecolor)) { echo ",CLOSECOLOR,'$closecolor'"; }
    if (!empty($textfont)) { echo ",TEXTFONT,'$textfont'"; }
    if (!empty($captionfont)) { echo ",CAPTIONFONT,'$captionfont'"; }
    if (!empty($closefont)) { echo ",CLOSEFONT,'$closefont'"; }
    if (!empty($textsize)) { echo ",TEXTSIZE,'$textsize'"; }
    if (!empty($captionsize)) { echo ",CAPTIONSIZE,'$captionsize'"; }
    if (!empty($closesize)) { echo ",CLOSESIZE,'$closesize'"; }
    if (!empty($width)) { echo ",WIDTH,'$width'"; }
    if (!empty($height)) { echo ",HEIGHT,'$height'"; }
    if (!empty($left)) { echo ",LEFT"; }
    if (!empty($right)) { echo ",RIGHT"; }
    if (!empty($center)) { echo ",CENTER"; }
    if (!empty($above)) { echo ",ABOVE"; }
    if (!empty($below)) { echo ",BELOW"; }
    if (!empty($border)) { echo ",BORDER,'$border'"; }
    if (!empty($offsetx)) { echo ",OFFSETX,'$offsetx'"; }
    if (!empty($offsety)) { echo ",OFFSETY,'$offsetxy'"; }
    if (!empty($fgbackground)) { echo ",FGBACKGROUND,'$fgbackground'"; }
    if (!empty($bgbackground)) { echo ",BGBACKGROUND,'$bgbackground'"; }
    if (!empty($closetext)) { echo ",CLOSETEXT,'".str_replace("'","\'",$closetext)."'"; }
    if (!empty($noclose)) { echo ",NOCLOSE"; }
    if (!empty($status)) { echo ",STATUS,'".str_replace("'","\'",$status)."'"; }
    if (!empty($autostatus)) { echo ",AUTOSTATUS"; }
    if (!empty($autostatuscap)) { echo ",AUTOSTATUSCAP"; }
    if (!empty($inarray)) { echo ",INARRAY,'$inarray'"; }
    if (!empty($caparray)) { echo ",CAPARRAY,'$caparray'"; }
    if (!empty($capicaon)) { echo ",CAPICON,'$capicon'"; }
    if (!empty($snapx)) { echo ",SNAPX,'$snapx'"; }
    if (!empty($snapy)) { echo ",SNAPY,'$snapy'"; }
    if (!empty($fixx)) { echo ",FIXX,'$fixx'"; }
    if (!empty($fixy)) { echo ",FIXY,'$fixy'"; }
    if (!empty($background)) { echo ",BACKGROUND,'$background'"; }
    if (!empty($padx)) { echo ",PADX,'$padx'"; }
    if (!empty($pady)) { echo ",PADY,'$pady'"; }
    if (!empty($fullhtml)) { echo ",FULLHTML"; }
    if (!empty($frame)) { echo ",FRAME,'$frame'"; }
    if (!empty($timeout)) { echo ",TIMEOUT,'$timeout'"; }
    if (!empty($function)) { echo ",FUNCTION,'$function'"; }
    if (!empty($delay)) { echo ",DELAY,'$delay'"; }
    if (!empty($hauto)) { echo ",HAUTO"; }
    if (!empty($vauto)) { echo ",VAUTO"; }
    echo ');" onMouseOut="nd();"';
    return;
}

/* vim: set expandtab: */

?>

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -