lambda-cvs Mailing List for Lambda (Page 2)
Status: Pre-Alpha
Brought to you by:
ariejan
You can subscribe to this list here.
2004 |
Jan
|
Feb
|
Mar
|
Apr
|
May
|
Jun
(7) |
Jul
(38) |
Aug
(5) |
Sep
|
Oct
|
Nov
|
Dec
|
---|---|---|---|---|---|---|---|---|---|---|---|---|
2005 |
Jan
|
Feb
|
Mar
|
Apr
|
May
|
Jun
|
Jul
(11) |
Aug
|
Sep
|
Oct
|
Nov
|
Dec
|
From: Ariejan de V. <ar...@us...> - 2004-07-08 07:26:49
|
Update of /cvsroot/lambda/lambda/templates In directory sc8-pr-cvs1.sourceforge.net:/tmp/cvs-serv21410 Modified Files: login_box.tpl Log Message: Centered loginbox Index: login_box.tpl =================================================================== RCS file: /cvsroot/lambda/lambda/templates/login_box.tpl,v retrieving revision 1.1 retrieving revision 1.2 diff -C2 -d -r1.1 -r1.2 *** login_box.tpl 7 Jul 2004 14:46:54 -0000 1.1 --- login_box.tpl 8 Jul 2004 07:26:40 -0000 1.2 *************** *** 1,4 **** <form action="authenticate.php" method="post" name="loginform"> ! <table class="loginbox"> <tr> <td colspan="2">Please enter your login and password.</td> --- 1,4 ---- <form action="authenticate.php" method="post" name="loginform"> ! <table align="center" class="loginbox"> <tr> <td colspan="2">Please enter your login and password.</td> |
From: Ariejan de V. <ar...@us...> - 2004-07-07 14:47:02
|
Update of /cvsroot/lambda/lambda/templates In directory sc8-pr-cvs1.sourceforge.net:/tmp/cvs-serv15825 Added Files: login_box.tpl Log Message: Standard issue login box --- NEW FILE: login_box.tpl --- <form action="authenticate.php" method="post" name="loginform"> <table class="loginbox"> <tr> <td colspan="2">Please enter your login and password.</td> </tr> <tr> <td>Login:</td> <td><input type="text" name="loginname" size="25" /></td> </tr> <tr> <td>Password:</td> <td><input type="password" name="password" size="25" /></td> </tr> <tr> <td> </td> <td><a href="#">Lost your password?</a></td> </tr> <tr> <td> </td> <td><input type="submit" value="Login" name="submit" /></td> </tr> </table> </form> |
From: Ariejan de V. <ar...@us...> - 2004-07-07 14:46:23
|
Update of /cvsroot/lambda/lambda/templates In directory sc8-pr-cvs1.sourceforge.net:/tmp/cvs-serv15540/templates Modified Files: header.tpl Log Message: * Added login() function to determine if a client/admin is logged in * Added stylesheet * Updated index.php to show login box when no login, or redirect to my.php * Updated header.tpl Index: header.tpl =================================================================== RCS file: /cvsroot/lambda/lambda/templates/header.tpl,v retrieving revision 1.1 retrieving revision 1.2 diff -C2 -d -r1.1 -r1.2 *** header.tpl 7 Jul 2004 13:51:53 -0000 1.1 --- header.tpl 7 Jul 2004 14:46:14 -0000 1.2 *************** *** 3,7 **** <head> <title>Lambda</title> ! <link rel="stylesheet" type="text/css" href="/style/main.css" /> <meta http-equiv="Content-Type" content="text/html; charset=utf-8" /> </head> --- 3,7 ---- <head> <title>Lambda</title> ! <link rel="stylesheet" type="text/css" href="/stylesheet.css" /> <meta http-equiv="Content-Type" content="text/html; charset=utf-8" /> </head> |
From: Ariejan de V. <ar...@us...> - 2004-07-07 14:46:23
|
Update of /cvsroot/lambda/lambda/classes In directory sc8-pr-cvs1.sourceforge.net:/tmp/cvs-serv15540/classes Modified Files: lambdaSession.class.php lambdaTemplate.class.php Log Message: * Added login() function to determine if a client/admin is logged in * Added stylesheet * Updated index.php to show login box when no login, or redirect to my.php * Updated header.tpl Index: lambdaSession.class.php =================================================================== RCS file: /cvsroot/lambda/lambda/classes/lambdaSession.class.php,v retrieving revision 1.1 retrieving revision 1.2 diff -C2 -d -r1.1 -r1.2 *** lambdaSession.class.php 7 Jul 2004 12:59:11 -0000 1.1 --- lambdaSession.class.php 7 Jul 2004 14:46:14 -0000 1.2 *************** *** 61,64 **** --- 61,77 ---- $this->handler->debug("Session unregistered '".$name."'", 2); } + + /** + * Check if a client or admin is logged in + * + * @return bool True on logged in, otherwise false + **/ + function login() { + if(isset($_SESSION['client_id']) || isset($_SESSION['admin_id'])) { + return true; + } else { + return false; + } + } /** Index: lambdaTemplate.class.php =================================================================== RCS file: /cvsroot/lambda/lambda/classes/lambdaTemplate.class.php,v retrieving revision 1.8 retrieving revision 1.9 diff -C2 -d -r1.8 -r1.9 *** lambdaTemplate.class.php 7 Jul 2004 13:59:26 -0000 1.8 --- lambdaTemplate.class.php 7 Jul 2004 14:46:14 -0000 1.9 *************** *** 37,39 **** --- 37,47 ---- $this->handler->debug("lambdaTemplate initialised", 2); } + + function show($filename) { + global $content; + + $this->assign('content', $content); + $this->display($filename); + } + } \ No newline at end of file |
From: Ariejan de V. <ar...@us...> - 2004-07-07 14:46:23
|
Update of /cvsroot/lambda/lambda In directory sc8-pr-cvs1.sourceforge.net:/tmp/cvs-serv15540 Modified Files: index.php Added Files: stylesheet.css Log Message: * Added login() function to determine if a client/admin is logged in * Added stylesheet * Updated index.php to show login box when no login, or redirect to my.php * Updated header.tpl --- NEW FILE: stylesheet.css --- body { background-color: #FFFFFF; font-family: verdana, arial, helvetica, sans-serif; font-size: 11px; color: #000000; } Index: index.php =================================================================== RCS file: /cvsroot/lambda/lambda/index.php,v retrieving revision 1.4 retrieving revision 1.5 diff -C2 -d -r1.4 -r1.5 *** index.php 7 Jul 2004 13:59:26 -0000 1.4 --- index.php 7 Jul 2004 14:46:14 -0000 1.5 *************** *** 12,16 **** include('includes/bootstrap.php'); ! $template->display("page.tpl"); ?> \ No newline at end of file --- 12,21 ---- include('includes/bootstrap.php'); ! if(!$session->login()) { ! $content = $template->fetch("login_box.tpl"); ! } else { ! header("Location: my.php"); ! } + $template->show("page.tpl"); ?> \ No newline at end of file |
From: Jason P. <pr...@us...> - 2004-07-07 14:07:52
|
Update of /cvsroot/lambda/lambda/includes In directory sc8-pr-cvs1.sourceforge.net:/tmp/cvs-serv7367 Modified Files: config.php-dist Log Message: Constant SMARTY_DIR was being used, but was not defined in the config. Index: config.php-dist =================================================================== RCS file: /cvsroot/lambda/lambda/includes/config.php-dist,v retrieving revision 1.6 retrieving revision 1.7 diff -C2 -d -r1.6 -r1.7 *** config.php-dist 7 Jul 2004 14:03:48 -0000 1.6 --- config.php-dist 7 Jul 2004 14:07:44 -0000 1.7 *************** *** 60,63 **** --- 60,66 ---- define('LAMBDA_TEMPLATE', LAMBDA_PATH . "templates/"); + /* Path to the Smarty directory */ + define('SMARTY_DIR', LAMBDA_INCLUDE . 'Smarty/'); + /** * General settings *************** *** 87,89 **** /* Temporary directory for Lambda */ define('LAMBDA_TMP', LAMBDA_PATH . "tmp/"); ! ?> \ No newline at end of file --- 90,92 ---- /* Temporary directory for Lambda */ define('LAMBDA_TMP', LAMBDA_PATH . "tmp/"); ! ?> |
From: Ariejan de V. <ar...@us...> - 2004-07-07 14:03:57
|
Update of /cvsroot/lambda/lambda/includes In directory sc8-pr-cvs1.sourceforge.net:/tmp/cvs-serv6723 Modified Files: config.php-dist Log Message: Updated to set Smarty_dir Index: config.php-dist =================================================================== RCS file: /cvsroot/lambda/lambda/includes/config.php-dist,v retrieving revision 1.5 retrieving revision 1.6 diff -C2 -d -r1.5 -r1.6 *** config.php-dist 7 Jul 2004 10:08:08 -0000 1.5 --- config.php-dist 7 Jul 2004 14:03:48 -0000 1.6 *************** *** 34,39 **** /* Username and password to connect to the Lambda Databse with */ ! $config['mysql']['username'] = 'lambda'; ! $config['mysql']['password'] = 'topsecret'; /* Name of the Lambda Database. Default is 'lambda' */ --- 34,39 ---- /* Username and password to connect to the Lambda Databse with */ ! $config['mysql']['username'] = 'root'; ! $config['mysql']['password'] = ''; /* Name of the Lambda Database. Default is 'lambda' */ *************** *** 78,80 **** --- 78,89 ---- define('DEBUG', 1); + /** + * DO NOT CHANGE ANYTHING BELOW THIS LINE!!! + **/ + + /* Path to Smarty -- DON'T CHANGE THIS! */ + define('SMARTY_DIR', LAMBDA_INCLUDE . "Smarty/"); + + /* Temporary directory for Lambda */ + define('LAMBDA_TMP', LAMBDA_PATH . "tmp/"); ?> \ No newline at end of file |
From: Ariejan de V. <ar...@us...> - 2004-07-07 14:02:25
|
Update of /cvsroot/lambda/lambda/tmp In directory sc8-pr-cvs1.sourceforge.net:/tmp/cvs-serv6282 Added Files: .cvsignore Log Message: Added .cvsignore to ignore everything in /tmp except .keep --- NEW FILE: .cvsignore --- * |
From: Ariejan de V. <ar...@us...> - 2004-07-07 13:59:35
|
Update of /cvsroot/lambda/lambda/classes In directory sc8-pr-cvs1.sourceforge.net:/tmp/cvs-serv5684/classes Modified Files: lambdaTemplate.class.php Log Message: Make use of new smarty template system. Index: lambdaTemplate.class.php =================================================================== RCS file: /cvsroot/lambda/lambda/classes/lambdaTemplate.class.php,v retrieving revision 1.7 retrieving revision 1.8 diff -C2 -d -r1.7 -r1.8 *** lambdaTemplate.class.php 7 Jul 2004 13:05:40 -0000 1.7 --- lambdaTemplate.class.php 7 Jul 2004 13:59:26 -0000 1.8 *************** *** 10,118 **** **/ /** * Handles data output * @package lambdaCore **/ ! class lambdaTemplate extends lambdaObject { ! ! /** ! * @var array Keys (tags) which will be replaced in this template, of the form {KEY} ! **/ ! var $keys; ! ! /** ! * @var array The strings that the keys will be replaced with ! **/ ! var $values; ! ! /** ! * @var string The (unprocessed) template data ! **/ ! var $templateData; /** ! * @var object Error handler reference **/ var $handler; ! ! /** ! * Sets the classname, sets up error handler ! **/ function lambdaTemplate() { global $handler; $this->handler = $handler; ! $this->setClassName('template'); $this->handler->debug("lambdaTemplate initialised", 2); } ! ! /** ! * Adds a new template key/value pair ! * ! * @return bool TRUE if successful, FALSE if key already exists ! **/ ! function assign($key,$value) { ! if(!in_array($key,$this->keys)) { ! array_push($this->keys,'/\{'.$key.'\}/'); /* Surround key with { and }, and the key*/ ! /* must be in the form of a regex, /{$key}/ */ ! array_push($this->values,$value); ! return TRUE; ! }else{ ! $this->handler->warning('Key value "'.$key.'" already exists in this template, not adding again'); ! return FALSE; ! } ! } ! ! /** ! * Removes a key/value pair ! * ! * @return bool TRUE on success, FALSE if the key was not found ! **/ ! function unassign($key) { ! if($keyID = array_search($key,$this->keys)) { ! $this->keys[$keyID] = $this->values[$keyID] = NULL; ! return TRUE; ! }else{ ! $this->handler->warning('Key "'.$key.'" not found in this template'); ! return FALSE; ! } ! } ! ! /** ! * Appends raw template data to $templateData from a template file ! * ! * This will first attempt to open $file for reading, if that fails ! * an error will be displayed and the script will stop. Next the ! * contents of the file are read, and again if that fails the script ! * will stop after an error is displayed. ! * ! * For example, you could add head.tpl followed by body.tpl then ! * foot.tpl; you can pick which template parts you need for a particular page. ! * ! * @return bool TRUE on success, FALSE on failure ! **/ ! function addFile($file) { ! if($fp = fopen(LAMBDA_TEMPLATE . $file,r)) { ! if($data = fread($fp,filesize(LAMBDA_TEMPLATE . $file))) { ! $this->templateData .= $data; /* Append data to $templateData */ ! fclose($fp); ! return TRUE; ! }else{ ! fclose($fp); ! $this->handler->error('Unable to read template data',TRUE); ! return FALSE; /* In practice the script is killed before this, but */ ! /* still return for completeness */ ! } ! }else{ ! $this->handler->error('Unable to open template for reading',TRUE); ! return FALSE; ! } ! } ! ! /** ! * Prints template with data inserted into it ! **/ ! function output() { ! print preg_replace($keys,$values,$templateData); ! } ! } --- 10,39 ---- **/ + /* Use Smarty */ + require_once(SMARTY_DIR . "Smarty.class.php"); + /** * Handles data output * @package lambdaCore **/ ! class lambdaTemplate extends Smarty { /** ! * @var object Local reference to error handler **/ var $handler; ! function lambdaTemplate() { global $handler; $this->handler = $handler; ! ! /* Initialise Smarty */ ! $this->Smarty(); ! ! /* Set Smarty settings */ ! $this->template_dir = LAMBDA_TEMPLATE; ! $this->compile_dir = LAMBDA_TMP; $this->handler->debug("lambdaTemplate initialised", 2); } ! } \ No newline at end of file |
From: Ariejan de V. <ar...@us...> - 2004-07-07 13:59:35
|
Update of /cvsroot/lambda/lambda/tmp In directory sc8-pr-cvs1.sourceforge.net:/tmp/cvs-serv5684/tmp Added Files: .keep Log Message: Make use of new smarty template system. --- NEW FILE: .keep --- |
From: Ariejan de V. <ar...@us...> - 2004-07-07 13:59:34
|
Update of /cvsroot/lambda/lambda In directory sc8-pr-cvs1.sourceforge.net:/tmp/cvs-serv5684 Modified Files: index.php Log Message: Make use of new smarty template system. Index: index.php =================================================================== RCS file: /cvsroot/lambda/lambda/index.php,v retrieving revision 1.3 retrieving revision 1.4 diff -C2 -d -r1.3 -r1.4 *** index.php 19 Jun 2004 10:25:22 -0000 1.3 --- index.php 7 Jul 2004 13:59:26 -0000 1.4 *************** *** 12,18 **** include('includes/bootstrap.php'); ! $template->showHeader(); ! ! $template->showFooter(); ?> \ No newline at end of file --- 12,16 ---- include('includes/bootstrap.php'); ! $template->display("page.tpl"); ?> \ No newline at end of file |
From: Ariejan de V. <ar...@us...> - 2004-07-07 13:58:08
|
Update of /cvsroot/lambda/lambda/templates In directory sc8-pr-cvs1.sourceforge.net:/tmp/cvs-serv5430 Added Files: page.tpl Log Message: Added standard page template --- NEW FILE: page.tpl --- {include file="header.tpl"} {$content|default:"Nothing to display."} {include file="footer.tpl"} |
From: Ariejan de V. <ar...@us...> - 2004-07-07 13:52:02
|
Update of /cvsroot/lambda/lambda/templates In directory sc8-pr-cvs1.sourceforge.net:/tmp/cvs-serv4179 Added Files: footer.tpl header.tpl Removed Files: foot.tpl head.tpl Log Message: - Renamed foot.tpl and head.tpl - Header.tpl contains static title: Lambda --- NEW FILE: header.tpl --- <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd"> <html> <head> <title>Lambda</title> <link rel="stylesheet" type="text/css" href="/style/main.css" /> <meta http-equiv="Content-Type" content="text/html; charset=utf-8" /> </head> <body> --- head.tpl DELETED --- --- NEW FILE: footer.tpl --- </body> </html> --- foot.tpl DELETED --- |
From: Ariejan de V. <ar...@us...> - 2004-07-07 13:31:30
|
Update of /cvsroot/lambda/lambda/includes In directory sc8-pr-cvs1.sourceforge.net:/tmp/cvs-serv31922 Modified Files: bootstrap.php Log Message: Added Smarty 2.6.3 to Lambda Index: bootstrap.php =================================================================== RCS file: /cvsroot/lambda/lambda/includes/bootstrap.php,v retrieving revision 1.8 retrieving revision 1.9 diff -C2 -d -r1.8 -r1.9 *** bootstrap.php 7 Jul 2004 10:37:50 -0000 1.8 --- bootstrap.php 7 Jul 2004 13:30:51 -0000 1.9 *************** *** 24,27 **** --- 24,29 ---- } + // Auto-start a session + session_start(); /* *************** *** 39,42 **** --- 41,48 ---- $handler->debug("Handler class loaded successfully", 2); + /* Lambda Session handler */ + require(LAMBDA_CLASS . "lambdaSession.class.php"); + $session = new lambdaSession(); + /* Lambda Template Class */ require(LAMBDA_CLASS . "lambdaTemplate.class.php"); *************** *** 45,50 **** /* Lambda MySQLi Class */ require(LAMBDA_CLASS . "lambdaMySQLi.class.php"); - - /* Create instance of MySQLi Class */ $mysqli = @new lambdaMySQLi(); --- 51,54 ---- |
Update of /cvsroot/lambda/lambda/includes/Smarty/plugins In directory sc8-pr-cvs1.sourceforge.net:/tmp/cvs-serv31922/Smarty/plugins Added Files: block.textformat.php compiler.assign.php function.assign_debug_info.php function.config_load.php function.counter.php function.cycle.php function.debug.php function.eval.php function.fetch.php function.html_checkboxes.php function.html_image.php function.html_options.php function.html_radios.php function.html_select_date.php function.html_select_time.php function.html_table.php function.mailto.php function.math.php function.popup.php function.popup_init.php modifier.capitalize.php modifier.cat.php modifier.count_characters.php modifier.count_paragraphs.php modifier.count_sentences.php modifier.count_words.php modifier.date_format.php modifier.debug_print_var.php modifier.default.php modifier.escape.php modifier.indent.php modifier.lower.php modifier.nl2br.php modifier.regex_replace.php modifier.replace.php modifier.spacify.php modifier.string_format.php modifier.strip.php modifier.strip_tags.php modifier.truncate.php modifier.upper.php modifier.wordwrap.php outputfilter.trimwhitespace.php shared.escape_special_chars.php shared.make_timestamp.php Log Message: Added Smarty 2.6.3 to Lambda --- NEW FILE: modifier.escape.php --- <?php /** * Smarty plugin * @package Smarty * @subpackage plugins */ /** * Smarty escape modifier plugin * * Type: modifier<br> * Name: escape<br> * Purpose: Escape the string according to escapement type * @link http://smarty.php.net/manual/en/language.modifier.escape.php * escape (Smarty online manual) * @param string * @param html|htmlall|url|quotes|hex|hexentity|javascript * @return string */ function smarty_modifier_escape($string, $esc_type = 'html') { switch ($esc_type) { case 'html': return htmlspecialchars($string, ENT_QUOTES); case 'htmlall': return htmlentities($string, ENT_QUOTES); case 'url': return urlencode($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': // safe way to display e-mail address on a web page return 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($string{$_i}); // non-standard char, escape it if($_ord >= 126){ $_res .= '&#' . $_ord . ';'; } else { $_res .= $string{$_i}; } } return $_res; default: return $string; } } /* vim: set expandtab: */ ?> --- NEW FILE: shared.make_timestamp.php --- <?php /** * Smarty shared plugin * @package Smarty * @subpackage plugins */ /** * Function: smarty_make_timestamp<br> * Purpose: used by other smarty functions to make a timestamp * from a string. * @param string * @return string */ function smarty_make_timestamp($string) { if(empty($string)) { $string = "now"; } $time = strtotime($string); if (is_numeric($time) && $time != -1) return $time; // is mysql timestamp format of YYYYMMDDHHMMSS? if (preg_match('/^\d{14}$/', $string)) { $time = 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)); return $time; } // couldn't recognize it, try to return a time $time = (int) $string; if ($time > 0) return $time; else return time(); } /* vim: set expandtab: */ ?> --- NEW FILE: modifier.truncate.php --- <?php /** * Smarty plugin * @package Smarty * @subpackage plugins */ /** * 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. * @link http://smarty.php.net/manual/en/language.modifier.truncate.php * truncate (Smarty online manual) * @param string * @param integer * @param string * @param boolean * @return string */ function smarty_modifier_truncate($string, $length = 80, $etc = '...', $break_words = false) { if ($length == 0) return ''; if (strlen($string) > $length) { $length -= strlen($etc); if (!$break_words) $string = preg_replace('/\s+?(\S+)?$/', '', substr($string, 0, $length+1)); return substr($string, 0, $length).$etc; } else return $string; } /* vim: set expandtab: */ ?> --- NEW FILE: shared.escape_special_chars.php --- <?php /** * Smarty shared plugin * @package Smarty * @subpackage plugins */ /** * 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 * @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; } /* vim: set expandtab: */ ?> --- NEW FILE: compiler.assign.php --- <?php /** * Smarty {assign} compiler function plugin * * Type: compiler function<br> * Name: assign<br> * Purpose: assign a value to a template variable * @link http://smarty.php.net/manual/en/language.custom.functions.php#LANGUAGE.FUNCTION.ASSIGN {assign} * (Smarty online manual) * @param string containing var-attribute and value-attribute * @param Smarty_Compiler */ function smarty_compiler_assign($tag_attrs, &$compiler) { $_params = $compiler->_parse_attrs($tag_attrs); if (!isset($_params['var'])) { $compiler->_syntax_error("assign: missing 'var' parameter", E_USER_WARNING); return; } if (!isset($_params['value'])) { $compiler->_syntax_error("assign: missing 'value' parameter", E_USER_WARNING); return; } return "\$this->assign({$_params['var']}, {$_params['value']});"; } /* vim: set expandtab: */ ?> --- NEW FILE: function.config_load.php --- <?php /** * Smarty plugin * @package Smarty * @subpackage plugins */ /** * Smarty {config_load} function plugin * * Type: function<br> * Name: config_load<br> * Purpose: load config file vars * @link http://smarty.php.net/manual/en/language.function.config.load.php {config_load} * (Smarty online manual) * @param array Format: * <pre> * array('file' => required config file name, * 'section' => optional config file section to load * 'scope' => local/parent/global * 'global' => overrides scope, setting to parent if true) * </pre> * @param Smarty */ function smarty_function_config_load($params, &$smarty) { if ($smarty->debugging) { $_params = array(); require_once(SMARTY_DIR . 'core' . DIRECTORY_SEPARATOR . 'core.get_microtime.php'); $_debug_start_time = smarty_core_get_microtime($_params, $smarty); } $_file = isset($params['file']) ? $smarty->_dequote($params['file']) : null; $_section = isset($params['section']) ? $smarty->_dequote($params['section']) : null; $_scope = isset($params['scope']) ? $smarty->_dequote($params['scope']) : 'global'; $_global = isset($params['global']) ? $smarty->_dequote($params['global']) : false; if (!isset($_file) || strlen($_file) == 0) { $smarty->trigger_error("missing 'file' attribute in config_load tag", E_USER_ERROR, __FILE__, __LINE__); } if (isset($_scope)) { if ($_scope != 'local' && $_scope != 'parent' && $_scope != 'global') { $smarty->trigger_error("invalid 'scope' attribute value", E_USER_ERROR, __FILE__, __LINE__); } } else { if ($_global) { $_scope = 'parent'; } else { $_scope = 'local'; } } $_params = array('resource_name' => $_file, 'resource_base_path' => $smarty->config_dir, 'get_source' => false); $smarty->_parse_resource_name($_params); $_file_path = $_params['resource_type'] . ':' . $_params['resource_name']; if (isset($_section)) $_compile_file = $smarty->_get_compile_path($_file_path.'|'.$_section); else $_compile_file = $smarty->_get_compile_path($_file_path); if($smarty->force_compile || !file_exists($_compile_file)) { $_compile = true; } elseif ($smarty->compile_check) { $_params = array('resource_name' => $_file, 'resource_base_path' => $smarty->config_dir, 'get_source' => false); $_compile = $smarty->_fetch_resource_info($_params) && $_params['resource_timestamp'] > filemtime($_compile_file); } else { $_compile = false; } if($_compile) { // compile config file if(!is_object($smarty->_conf_obj)) { require_once SMARTY_DIR . $smarty->config_class . '.class.php'; $smarty->_conf_obj = new $smarty->config_class(); $smarty->_conf_obj->overwrite = $smarty->config_overwrite; $smarty->_conf_obj->booleanize = $smarty->config_booleanize; $smarty->_conf_obj->read_hidden = $smarty->config_read_hidden; $smarty->_conf_obj->fix_newlines = $smarty->config_fix_newlines; } $_params = array('resource_name' => $_file, 'resource_base_path' => $smarty->config_dir, $_params['get_source'] = true); if (!$smarty->_fetch_resource_info($_params)) { return; } $smarty->_conf_obj->set_file_contents($_file, $_params['source_content']); $_config_vars = array_merge($smarty->_conf_obj->get($_file), $smarty->_conf_obj->get($_file, $_section)); if(function_exists('var_export')) { $_output = '<?php $_config_vars = ' . var_export($_config_vars, true) . '; ?>'; } else { $_output = '<?php $_config_vars = unserialize(\'' . strtr(serialize($_config_vars),array('\''=>'\\\'', '\\'=>'\\\\')) . '\'); ?>'; } $_params = (array('compile_path' => $_compile_file, 'compiled_content' => $_output, 'resource_timestamp' => $_params['resource_timestamp'])); require_once(SMARTY_DIR . 'core' . DIRECTORY_SEPARATOR . 'core.write_compiled_resource.php'); smarty_core_write_compiled_resource($_params, $smarty); } else { include($_compile_file); } if ($smarty->caching) { $smarty->_cache_info['config'][$_file] = true; } $smarty->_config[0]['vars'] = @array_merge($smarty->_config[0]['vars'], $_config_vars); $smarty->_config[0]['files'][$_file] = true; if ($_scope == 'parent') { $smarty->_config[1]['vars'] = @array_merge($smarty->_config[1]['vars'], $_config_vars); $smarty->_config[1]['files'][$_file] = true; } else if ($_scope == 'global') { for ($i = 1, $for_max = count($smarty->_config); $i < $for_max; $i++) { $smarty->_config[$i]['vars'] = @array_merge($smarty->_config[$i]['vars'], $_config_vars); $smarty->_config[$i]['files'][$_file] = true; } } if ($smarty->debugging) { $_params = array(); require_once(SMARTY_DIR . 'core' . DIRECTORY_SEPARATOR . 'core.get_microtime.php'); $smarty->_smarty_debug_info[] = array('type' => 'config', 'filename' => $_file.' ['.$_section.'] '.$_scope, 'depth' => $smarty->_inclusion_depth, 'exec_time' => smarty_core_get_microtime($_params, $smarty) - $_debug_start_time); } } /* vim: set expandtab: */ ?> --- NEW FILE: modifier.strip.php --- <?php /** * Smarty plugin * @package Smarty * @subpackage plugins */ /** * 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 Monte Ohrt <mo...@is...> * @version 1.0 * @param string * @param string * @return string */ function smarty_modifier_strip($text, $replace = ' ') { return preg_replace('!\s+!', $replace, $text); } /* vim: set expandtab: */ ?> --- NEW FILE: modifier.default.php --- <?php /** * Smarty plugin * @package Smarty * @subpackage plugins */ /** * 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) * @param string * @param string * @return string */ function smarty_modifier_default($string, $default = '') { if (!isset($string) || $string === '') return $default; else return $string; } /* vim: set expandtab: */ ?> --- NEW FILE: function.debug.php --- <?php /** * Smarty plugin * @package Smarty * @subpackage plugins */ /** * Smarty {debug} function plugin * * Type: function<br> * Name: debug<br> * Date: July 1, 2002<br> * Purpose: popup debug window * @link http://smarty.php.net/manual/en/language.function.debug.php {debug} * (Smarty online manual) * @author Monte Ohrt <mo...@is...> * @version 1.0 * @param array * @param Smarty * @return string output from {@link Smarty::_generate_debug_output()} */ function smarty_function_debug($params, &$smarty) { if($params['output']) { $smarty->assign('_smarty_debug_output',$params['output']); } require_once(SMARTY_DIR . 'core' . DIRECTORY_SEPARATOR . 'core.display_debug_console.php'); return smarty_core_display_debug_console(null, $smarty); } /* vim: set expandtab: */ ?> --- NEW FILE: function.popup_init.php --- <?php /** * Smarty plugin * @package Smarty * @subpackage plugins */ /** * 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) * @param array * @param Smarty * @return string */ function smarty_function_popup_init($params, &$smarty) { $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 { $smarty->trigger_error("popup_init: missing src parameter"); } } /* vim: set expandtab: */ ?> --- NEW FILE: modifier.nl2br.php --- <?php /** * Smarty plugin * @package Smarty * @subpackage plugins */ /** * Smarty plugin * * Type: modifier<br> * Name: nl2br<br> * Date: Feb 26, 2003 * Purpose: convert \r\n, \r or \n to <<br>> * Input:<br> * - contents = contents to replace * - preceed_test = if true, includes preceeding break tags * in replacement * Example: {$text|nl2br} * @link http://smarty.php.net/manual/en/language.modifier.nl2br.php * nl2br (Smarty online manual) * @version 1.0 * @author Monte Ohrt <mo...@is...> * @param string * @return string */ function smarty_modifier_nl2br($string) { return nl2br($string); } /* vim: set expandtab: */ ?> --- NEW FILE: modifier.wordwrap.php --- <?php /** * Smarty plugin * @package Smarty * @subpackage plugins */ /** * 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) * @param string * @param integer * @param string * @param boolean * @return string */ function smarty_modifier_wordwrap($string,$length=80,$break="\n",$cut=false) { return wordwrap($string,$length,$break,$cut); } ?> --- NEW FILE: function.html_select_date.php --- <?php /** * Smarty plugin * @package Smarty * @subpackage plugins */ /** * 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) * @link http://smarty.php.net/manual/en/language.function.html.select.date.php {html_select_date} * (Smarty online manual) * @version 1.3.1 * @author Andrei Zmievski * @param array * @param Smarty * @return string */ function smarty_function_html_select_date($params, &$smarty) { require_once $smarty->_get_plugin_filepath('shared','make_timestamp'); require_once $smarty->_get_plugin_filepath('function','html_options'); /* 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; 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: $smarty->trigger_error("[html_select_date] unknown parameter $_key", E_USER_WARNING); } } // If $time is not in format yyyy-mm-dd if (!preg_match('/^\d{0,4}-\d{0,2}-\d{0,2}$/', $time)) { // then $time is empty or unix timestamp or mysql timestamp // using 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]; } } $field_order = strtoupper($field_order); $html_result = $month_result = $day_result = $year_result = ""; if ($display_months) { $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 .= '>'."\n"; $month_result .= smarty_function_html_options(array('output' => $month_names, 'values' => $month_values, 'selected' => $a=$time[1] ? strftime($month_value_format, mktime(0, 0, 0, (int)$time[1], 1, 2000)) : '', 'print_result' => false), $smarty); $month_result .= '</select>'; } if ($display_days) { $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 .= '>'."\n"; $day_result .= smarty_function_html_options(array('output' => $days, 'values' => $day_values, 'selected' => $time[2], 'print_result' => false), $smarty); $day_result .= '</select>'; } if ($display_years) { 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); } $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 .= '>'."\n"; $year_result .= smarty_function_html_options(array('output' => $years, 'values' => $yearvals, 'selected' => $time[0], 'print_result' => false), $smarty); $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 != 2) { $html_result .= $field_separator; } } return $html_result; } /* vim: set expandtab: */ ?> --- NEW FILE: modifier.debug_print_var.php --- <?php /** * Smarty plugin * @package Smarty * @subpackage plugins */ /** * 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) * @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>'); if (is_array($var)) { $results = "<b>Array (".count($var).")</b>"; foreach ($var as $curr_key => $curr_val) { $return = smarty_modifier_debug_print_var($curr_val, $depth+1, $length); $results .= "<br>".str_repeat(' ', $depth*2)."<b>".strtr($curr_key, $_replace)."</b> => $return"; } } else if (is_object($var)) { $object_vars = get_object_vars($var); $results = "<b>".get_class($var)." Object (".count($object_vars).")</b>"; foreach ($object_vars as $curr_key => $curr_val) { $return = smarty_modifier_debug_print_var($curr_val, $depth+1, $length); $results .= "<br>".str_repeat(' ', $depth*2)."<b>$curr_key</b> => $return"; } } else if (is_resource($var)) { $results = '<i>'.(string)$var.'</i>'; } else if (empty($var) && $var != "0") { $results = '<i>empty</i>'; } else { if (strlen($var) > $length ) { $results = substr($var, 0, $length-3).'...'; } else { $results = $var; } $results = htmlspecialchars($results); $results = strtr($results, $_replace); } return $results; } /* vim: set expandtab: */ ?> --- NEW FILE: function.html_options.php --- <?php /** * Smarty plugin * @package Smarty * @subpackage plugins */ /** * Smarty {html_options} function plugin * * Type: function<br> * Name: html_options<br> * 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 * 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) * @param array * @param Smarty * @return string * @uses smarty_function_escape_special_chars() */ function smarty_function_html_options($params, &$smarty) { require_once $smarty->_get_plugin_filepath('shared','escape_special_chars'); $name = null; $values = null; $options = null; $selected = array(); $output = null; $extra = ''; foreach($params as $_key => $_val) { switch($_key) { case 'name': $$_key = (string)$_val; break; case 'options': $$_key = (array)$_val; break; case 'values': case 'output': $$_key = array_values((array)$_val); break; case 'selected': $$_key = array_map('strval', array_values((array)$_val)); break; default: if(!is_array($_val)) { $extra .= ' '.$_key.'="'.smarty_function_escape_special_chars($_val).'"'; } else { $smarty->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 = ''; if (is_array($options)) { foreach ($options as $_key=>$_val) $_html_result .= smarty_function_html_options_optoutput($_key, $_val, $selected); } else { foreach ((array)$values as $_i=>$_key) { $_val = isset($output[$_i]) ? $output[$_i] : ''; $_html_result .= smarty_function_html_options_optoutput($_key, $_val, $selected); } } if(!empty($name)) { $_html_result = '<select name="' . $name . '"' . $extra . '>' . "\n" . $_html_result . '</select>' . "\n"; } return $_html_result; } function smarty_function_html_options_optoutput($key, $value, $selected) { if(!is_array($value)) { $_html_result = '<option label="' . smarty_function_escape_special_chars($value) . '" value="' . smarty_function_escape_special_chars($key) . '"'; if (in_array((string)$key, $selected)) $_html_result .= ' selected="selected"'; $_html_result .= '>' . smarty_function_escape_special_chars($value) . '</option>' . "\n"; } else { $_html_result = smarty_function_html_options_optgroup($key, $value, $selected); } return $_html_result; } function smarty_function_html_options_optgroup($key, $values, $selected) { $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); } $optgroup_html .= "</optgroup>\n"; return $optgroup_html; } /* vim: set expandtab: */ ?> --- NEW FILE: modifier.count_characters.php --- <?php /** * Smarty plugin * @package Smarty * @subpackage plugins */ /** * 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) * @param string * @param boolean include whitespace in the character count * @return integer */ function smarty_modifier_count_characters($string, $include_spaces = false) { if ($include_spaces) return(strlen($string)); return preg_match_all("/[^\s]/",$string, $match); } /* vim: set expandtab: */ ?> --- NEW FILE: modifier.count_paragraphs.php --- <?php /** * Smarty plugin * @package Smarty * @subpackage plugins */ /** * 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) * @param string * @return integer */ function smarty_modifier_count_paragraphs($string) { // count \r or \n characters return count(preg_split('/[\r\n]+/', $string)); } /* vim: set expandtab: */ ?> --- NEW FILE: modifier.count_words.php --- <?php /** * Smarty plugin * @package Smarty * @subpackage plugins */ /** * 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) * @param string * @return integer */ function smarty_modifier_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\\x80-\\xff]/', $split_array); return count($word_count); } /* vim: set expandtab: */ ?> --- NEW FILE: modifier.count_sentences.php --- <?php /** * Smarty plugin * @package Smarty * @subpackage plugins */ /** * 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) * @param string * @return integer */ function smarty_modifier_count_sentences($string) { // find periods with a word before but not after. return preg_match_all('/[^\s]\.(?!\w)/', $string, $match); } /* vim: set expandtab: */ ?> --- NEW FILE: function.html_select_time.php --- <?php /** * Smarty plugin * @package Smarty * @subpackage plugins */ /** * 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) * @param array * @param Smarty * @return string * @uses smarty_make_timestamp() */ function smarty_function_html_select_time($params, &$smarty) { require_once $smarty->_get_plugin_filepath('shared','make_timestamp'); require_once $smarty->_get_plugin_filepath('function','html_options'); /* 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: $smarty->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), $smarty); $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), $smarty); $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), $smarty); $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), $smarty); $html_result .= "</select>\n"; } return $html_result; } /* vim: set expandtab: */ ?> --- NEW FILE: function.html_image.php --- <?php /** * Smarty plugin * @package Smarty * @subpackage plugins */ /** * 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> * Input:<br> * - file = file (and path) of image (required) * - border = border width (optional, default 0) * - height = image height (optional, default actual height) * - image =image width (optional, default actual width) * - basedir = base directory for absolute paths, default * is environment variable DOCUMENT_ROOT * * Examples: {html_image file="images/masthead.gif"} * Output: <img src="images/masthead.gif" border=0 width=400 height=23> * @link http://smarty.php.net/manual/en/language.function.html.image.php {html_image} * (Smarty online manual) * @author Monte Ohrt <mo...@is...> * @author credits to Duda <du...@bi...> - wrote first image function * in repository, helped with lots of functionality * @version 1.0 * @param array * @param Smarty * @return string * @uses smarty_function_escape_special_chars() */ function smarty_function_html_image($params, &$smarty) { require_once $smarty->_get_plugin_filepath('shared','escape_special_chars'); $alt = ''; $file = ''; $border = 0; $height = ''; $width = ''; $extra = ''; $prefix = ''; $suffix = ''; $server_vars = ($smarty->request_use_auto_globals) ? $_SERVER : $GLOBALS['HTTP_SERVER_VARS']; $basedir = isset($server_vars['DOCUMENT_ROOT']) ? $server_vars['DOCUMENT_ROOT'] : ''; foreach($params as $_key => $_val) { switch($_key) { case 'file': case 'border': case 'height': case 'width': case 'dpi': case 'basedir': $$_key = $_val; break; case 'alt': if(!is_array($_val)) { $$_key = smarty_function_escape_special_chars($_val); } else { $smarty->trigger_error("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 { $smarty->trigger_error("html_image: extra attribute '$_key' cannot be an array", E_USER_NOTICE); } break; } } if (empty($file)) { $smarty->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 ($smarty->security && ($_params = array('resource_type' => 'file', 'resource_name' => $_image_path)) && (require_once(SMARTY_DIR . 'core' . DIRECTORY_SEPARATOR . 'core.is_secure.php')) && (!smarty_core_is_secure($_params, $smarty)) ) { $smarty->trigger_error("html_image: (secure) '$_image_path' not in secure directory", E_USER_NOTICE); } elseif (!$_image_data = @getimagesize($_image_path)) { if(!file_exists($_image_path)) { $smarty->trigger_error("html_image: unable to find '$_image_path'", E_USER_NOTICE); return; } else if(!is_readable($_image_path)) { $smarty->trigger_error("html_image: unable to read '$_image_path'", E_USER_NOTICE); return; } else { $smarty->trigger_error("html_image: '$_image_path' is not a valid image file", E_USER_NOTICE); 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="'.$file.'" alt="'.$alt.'" border="'.$border.'" width="'.$width.'" height="'.$height.'"'.$extra.' />' . $suffix; } /* vim: set expandtab: */ ?> --- NEW FILE: modifier.capitalize.php --- <?php /** * Smarty plugin * @package Smarty * @subpackage plugins */ /** * Smarty capitalize modifier plugin * * Type: modifier<br> * Name: capitalize<br> * Purpose: capitalize words in the string * @link http://smarty.php.net/manual/en/language.modifiers.php#LANGUAGE.MODIFIER.CAPITALIZE * capitalize (Smarty online manual) * @param string * @return string */ function smarty_modifier_capitalize($string) { return ucwords($string); } ?> --- NEW FILE: function.html_table.php --- <?php /** * Smarty plugin * @package Smarty * @subpackage plugins */ /** * 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> * Input:<br> * - loop = array to loop through * - cols = number of columns * - rows = number of rows * - table_attr = table attributes * - tr_attr = table row attributes (arrays are cycled) * - td_attr = table cell attributes (arrays are cycled) * - trailpad = value to pad trailing cells with * - 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) * * * Examples: * <pre> * {table loop=$data} * {table loop=$data cols=4 tr_attr='"bgcolor=red"'} * {table loop=$data cols=4 tr_attr=$colors} * </pre> * @author Monte Ohrt <mo...@is...> * @version 1.0 * @link http://smarty.php.net/manual/en/language.function.html.table.php {html_table} * (Smarty online manual) * @param array * @param Smarty * @return string */ function smarty_function_html_table($params, &$smarty) { $table_attr = 'border="1"'; $tr_attr = ''; $td_attr = ''; $cols = 3; $rows = 3; $trailpad = ' '; $vdir = 'down'; $hdir = 'right'; $inner = 'cols'; if (!isset($params['loop'])) { $smarty->trigger_error("html_table: missing 'loop' parameter"); return; } foreach ($params as $_key=>$_value) { switch ($_key) { case 'loop': $$_key = (array)$_value; break; case 'cols': case 'rows': $$_key = (int)$_value; break; case 'table_attr': case 'trailpad': case 'hdir': case 'vdir': $$_key = (string)$_value; break; case 'tr_attr': case 'td_attr': $$_key = $_value; break; } } $loop_count = count($loop); if (empty($params['rows'])) { /* no rows specified */ $rows = ceil($loop_count/$cols); } elseif (empty($params['cols'])) { if (!empty($params['rows'])) { /* no cols specified, but rows */ $cols = ceil($loop_count/$rows); } } $output = "<table $table_attr>\n"; for ($r=0; $r<$rows; $r++) { $output .= "<tr" . smarty_function_html_table_cycle('tr', $tr_attr, $r) . ">\n"; $rx = ($vdir == 'down') ? $r*$cols : ($rows-1-$r)*$cols; for ($c=0; $c<$cols; $c++) { $x = ($hdir == 'right') ? $rx+$c : $rx+$cols-1-$c; if ($inner!='cols') { /* shuffle x to loop over rows*/ $x = floor($x/$cols) + ($x%$cols)*$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 .= "</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 : ''; } /* vim: set expandtab: */ ?> --- NEW FILE: modifier.spacify.php --- <?php /** * Smarty plugin * @package Smarty * @subpackage plugins */ /** * 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) * @param string * @param string * @return string */ function smarty_modifier_spacify($string, $spacify_char = ' ') { return implode($spacify_char, preg_split('//', $string, -1, PREG_SPLIT_NO_EMPTY)); } /* vim: set expandtab: */ ?> --- NEW FILE: function.popup.php --- <?php /** * Smarty plugin * @package Smarty * @subpackage plugins */ /** * 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) * @param array * @param Smarty * @return string */ function smarty_function_popup($params, &$smarty) { $append = ''; foreach ($params as $_key=>$_value) { switch ($_key) { case 'text': case 'trigger': $$_key = (string)$_value; break; case 'caption': case 'closetext': case 'status': $append .= ',' . strtoupper($_key) . ",'" . str_replace("'","\'",$_value) . "'"; break; case 'fgcolor': case 'bgcolor': case 'textcolor': case 'capcolor': case 'closecolor': case 'textfont': case 'captionfont': case 'closefont': case 'fgbackground': case 'bgbackground': case 'inarray': case 'caparray': case 'capicon': case 'background': case 'frame': case 'function': $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': if ($_value) $append .= ',' . strtoupper($_key); break; default: $smarty->trigger_error("[popup] unknown parameter $_key", E_USER_WARNING); } } if (empty($text) && !isset($inarray) && empty($function)) { $smarty->trigger_error("overlib: attribute 'text' or 'inarray' or 'function' required"); return false; } if (empty($trigger)) { $trigger = "onmouseover"; } $retval = $trigger . '="return overlib(\''.preg_replace(array("!'!","![\r\n]!"),array("\'",'\r'),$text).'\''; $retval .= $append . ');" onmouseout="nd();"'; return $retval; } /* vim: set expandtab: */ ?> --- NEW FILE: function.counter.php --- <?php /** * Smarty plugin * @package Smarty * @subpackage plugins */ /** * Smarty {counter} function plugin * * Type: function<br> * Name: counter<br> * Purpose: print out a counter value * @link http://smarty.php.net/manual/en/language.function.counter.php {counter} * (Smarty online manual) * @param array parameters * @param Smarty * @return string|null */ function smarty_function_counter($params, &$smarty) { 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'])) { $smarty->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; } /* vim: set expandtab: */ ?> --- NEW FILE: function.html_radios.php --- <?php /** * Smarty plugin * @package Smarty * @subpackage plugins */ /** * 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> * 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) - without this one the buttons don't have names * 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 <chr...@fl...> * @author credits to Monte Ohrt <mo...@is...> * @version 1.0 * @param array * @param Smarty * @return string * @uses smarty_function_escape_special_chars() */ function smarty_function_html_radios($params, &$smarty) { require_once $smarty->_get_plugin_filepath('shared','escape_special_chars'); $name = 'radio'; $values = null; $options = null; $selected = null; $separator = ''; $label... [truncated message content] |
Update of /cvsroot/lambda/lambda/includes/Smarty/core In directory sc8-pr-cvs1.sourceforge.net:/tmp/cvs-serv31922/Smarty/core Added Files: core.assemble_plugin_filepath.php core.assign_smarty_interface.php core.create_dir_structure.php core.display_debug_console.php core.get_include_path.php core.get_microtime.php core.get_php_resource.php core.is_secure.php core.is_trusted.php core.load_plugins.php core.load_resource_plugin.php core.process_cached_inserts.php core.process_compiled_include.php core.read_cache_file.php core.rm_auto.php core.rmdir.php core.run_insert_handler.php core.smarty_include_php.php core.write_cache_file.php core.write_compiled_include.php core.write_compiled_resource.php core.write_file.php Log Message: Added Smarty 2.6.3 to Lambda --- NEW FILE: core.write_file.php --- <?php /** * Smarty plugin * @package Smarty * @subpackage plugins */ /** * write out a file to disk * * @param string $filename * @param string $contents * @param boolean $create_dirs * @return boolean */ function smarty_core_write_file($params, &$smarty) { $_dirname = dirname($params['filename']); if ($params['create_dirs']) { $_params = array('dir' => $_dirname); require_once(SMARTY_DIR . 'core' . DIRECTORY_SEPARATOR . 'core.create_dir_structure.php'); smarty_core_create_dir_structure($_params, $smarty); } // write to tmp file, then rename it to avoid // file locking race condition $_tmp_file = tempnam($_dirname, 'write_'); if (!($fd = @fopen($_tmp_file, 'w'))) { $smarty->trigger_error("problem writing temporary file '$_tmp_file'"); return false; } fwrite($fd, $params['contents']); // Set the file's mtime if (isset($params['timestamp'])) { touch($_tmp_file, $params['timestamp']); } fclose($fd); // Delete the file if it allready exists (this is needed on Win, // because it cannot overwrite files with rename() if (file_exists($params['filename'])) { @unlink($params['filename']); } @rename($_tmp_file, $params['filename']); @chmod($params['filename'], $smarty->_file_perms); return true; } /* vim: set expandtab: */ ?> --- NEW FILE: core.rmdir.php --- <?php /** * Smarty plugin * @package Smarty * @subpackage plugins */ /** * delete a dir recursively (level=0 -> keep root) * WARNING: no tests, it will try to remove what you tell it! * * @param string $dirname * @param integer $level * @param integer $exp_time * @return boolean */ // $dirname, $level = 1, $exp_time = null function smarty_core_rmdir($params, &$smarty) { if(!isset($params['level'])) { $params['level'] = 1; } if(!isset($params['exp_time'])) { $params['exp_time'] = null; } if($_handle = @opendir($params['dirname'])) { while (false !== ($_entry = readdir($_handle))) { if ($_entry != '.' && $_entry != '..') { if (@is_dir($params['dirname'] . DIRECTORY_SEPARATOR . $_entry)) { $_params = array( 'dirname' => $params['dirname'] . DIRECTORY_SEPARATOR . $_entry, 'level' => $params['level'] + 1, 'exp_time' => $params['exp_time'] ); require_once(SMARTY_DIR . 'core' . DIRECTORY_SEPARATOR . 'core.rmdir.php'); smarty_core_rmdir($_params, $smarty); } else { $smarty->_unlink($params['dirname'] . DIRECTORY_SEPARATOR . $_entry, $params['exp_time']); } } } closedir($_handle); } if ($params['level']) { return @rmdir($params['dirname']); } return (bool)$_handle; } /* vim: set expandtab: */ ?> --- NEW FILE: core.get_php_resource.php --- <?php /** * Smarty plugin * @package Smarty * @subpackage plugins */ /** * Retrieves PHP script resource * * sets $php_resource to the returned resource * @param string $resource * @param string $resource_type * @param $php_resource * @return boolean */ function smarty_core_get_php_resource(&$params, &$smarty) { $params['resource_base_path'] = $smarty->trusted_dir; $smarty->_parse_resource_name($params, $smarty); /* * Find out if the resource exists. */ if ($params['resource_type'] == 'file') { $_readable = false; if(file_exists($params['resource_name']) && is_readable($params['resource_name'])) { $_readable = true; } else { // test for file in include_path $_params = array('file_path' => $params['resource_name']); require_once(SMARTY_DIR . 'core' . DIRECTORY_SEPARATOR . 'core.get_include_path.php'); if(smarty_core_get_include_path($_params, $smarty)) { $_include_path = $_params['new_file_path']; $_readable = true; } } } else if ($params['resource_type'] != 'file') { $_template_source = null; $_readable = is_callable($smarty->_plugins['resource'][$params['resource_type']][0][0]) && call_user_func_array($smarty->_plugins['resource'][$params['resource_type']][0][0], array($params['resource_name'], &$_template_source, &$smarty)); } /* * Set the error function, depending on which class calls us. */ if (method_exists($smarty, '_syntax_error')) { $_error_funcc = '_syntax_error'; } else { $_error_funcc = 'trigger_error'; } if ($_readable) { if ($smarty->security) { require_once(SMARTY_DIR . 'core' . DIRECTORY_SEPARATOR . 'core.is_trusted.php'); if (!smarty_core_is_trusted($params, $smarty)) { $smarty->$_error_funcc('(secure mode) ' . $params['resource_type'] . ':' . $params['resource_name'] . ' is not trusted'); return false; } } } else { $smarty->$_error_funcc($params['resource_type'] . ':' . $params['resource_name'] . ' is not readable'); return false; } if ($params['resource_type'] == 'file') { $params['php_resource'] = $params['resource_name']; } else { $params['php_resource'] = $_template_source; } return true; } /* vim: set expandtab: */ ?> --- NEW FILE: core.get_include_path.php --- <?php /** * Smarty plugin * @package Smarty * @subpackage plugins */ /** * Get path to file from include_path * * @param string $file_path * @param string $new_file_path * @return boolean * @staticvar array|null */ // $file_path, &$new_file_path function smarty_core_get_include_path(&$params, &$smarty) { static $_path_array = null; if(!isset($_path_array)) { $_ini_include_path = ini_get('include_path'); if(strstr($_ini_include_path,';')) { // windows pathnames $_path_array = explode(';',$_ini_include_path); } else { $_path_array = explode(':',$_ini_include_path); } } foreach ($_path_array as $_include_path) { if (@is_readable($_include_path . DIRECTORY_SEPARATOR . $params['file_path'])) { $params['new_file_path'] = $_include_path . DIRECTORY_SEPARATOR . $params['file_path']; return true; } } return false; } /* vim: set expandtab: */ ?> --- NEW FILE: core.write_compiled_include.php --- <?php /** * Smarty plugin * @package Smarty * @subpackage plugins */ /** * Extract non-cacheable parts out of compiled template and write it * * @param string $compile_path * @param string $template_compiled * @param integer $template_timestamp * @return boolean */ function smarty_core_write_compiled_include($params, &$smarty) { $_tag_start = 'if \(\$this->caching\) \{ echo \'\{nocache\:('.$params['cache_serial'].')#(\d+)\}\';\}'; $_tag_end = 'if \(\$this->caching\) \{ echo \'\{/nocache\:(\\2)#(\\3)\}\';\}'; preg_match_all('!('.$_tag_start.'(.*)'.$_tag_end.')!Us', $params['compiled_content'], $_match_source, PREG_SET_ORDER); // no nocache-parts found: done if (count($_match_source)==0) return; // convert the matched php-code to functions $_include_compiled = "<?php /* funky header here */\n\n"; $_compile_path = $params['include_file_path']; $smarty->_cache_serials[$_compile_path] = $params['cache_serial']; $_include_compiled .= "\$this->_cache_serials['".$_compile_path."'] = '".$params['cache_serial']."';\n\n?>"; $_include_compiled .= $params['plugins_code']; $_include_compiled .= "<?php"; $this_varname = ((double)phpversion() >= 5.0) ? '_smarty' : 'this'; for ($_i = 0, $_for_max = count($_match_source); $_i < $_for_max; $_i++) { $_match =& $_match_source[$_i]; $source = $_match[4]; if ($this_varname == '_smarty') { /* rename $this to $_smarty in the sourcecode */ $tokens = token_get_all('<?php ' . $_match[4]); array_shift($tokens); /* remove the opening <.?.php */ for ($i=0, $count = count($tokens); $i < $count; $i++) { if (is_array($tokens[$i])) { if ($tokens[$i][0] == T_VARIABLE && $tokens[$i][1] == '$this') { $tokens[$i] = '$' . $this_varname; } else { $tokens[$i] = $tokens[$i][1]; } } } $source = implode('', $tokens); } /* add function to compiled include */ $_include_compiled .= " function _smarty_tplfunc_$_match[2]_$_match[3](&\$$this_varname) { $source } "; } $_include_compiled .= "\n\n?>\n"; $_params = array('filename' => $_compile_path, 'contents' => $_include_compiled, 'create_dirs' => true); require_once(SMARTY_DIR . 'core' . DIRECTORY_SEPARATOR . 'core.write_file.php'); smarty_core_write_file($_params, $smarty); return true; } ?> --- NEW FILE: core.smarty_include_php.php --- <?php /** * Smarty plugin * @package Smarty * @subpackage plugins */ /** * called for included php files within templates * * @param string $smarty_file * @param string $smarty_assign variable to assign the included template's * output into * @param boolean $smarty_once uses include_once if this is true * @param array $smarty_include_vars associative array of vars from * {include file="blah" var=$var} */ // $file, $assign, $once, $_smarty_include_vars function smarty_core_smarty_include_php($params, &$smarty) { $_params = array('resource_name' => $params['smarty_file']); require_once(SMARTY_DIR . 'core' . DIRECTORY_SEPARATOR . 'core.get_php_resource.php'); smarty_core_get_php_resource($_params, $smarty); $_smarty_resource_type = $_params['resource_type']; $_smarty_php_resource = $_params['php_resource']; if (!empty($params['smarty_assign'])) { ob_start(); if ($_smarty_resource_type == 'file') { $smarty->_include($_smarty_php_resource, $params['smarty_once'], $params['smarty_include_vars']); } else { $smarty->_eval($_smarty_php_resource, $params['smarty_include_vars']); } $smarty->assign($params['smarty_assign'], ob_get_contents()); ob_end_clean(); } else { if ($_smarty_resource_type == 'file') { $smarty->_include($_smarty_php_resource, $params['smarty_once'], $params['smarty_include_vars']); } else { $smarty->_eval($_smarty_php_resource, $params['smarty_include_vars']); } } } /* vim: set expandtab: */ ?> --- NEW FILE: core.assemble_plugin_filepath.php --- <?php /** * Smarty plugin * @package Smarty * @subpackage plugins */ /** * assemble filepath of requested plugin * * @param string $type * @param string $name * @return string|false */ function smarty_core_assemble_plugin_filepath($params, &$smarty) { static $_filepaths_cache = array(); $_plugin_filename = $params['type'] . '.' . $params['name'] . '.php'; if (isset($_filepaths_cache[$_plugin_filename])) { return $_filepaths_cache[$_plugin_filename]; } $_return = false; foreach ((array)$smarty->plugins_dir as $_plugin_dir) { $_plugin_filepath = $_plugin_dir . DIRECTORY_SEPARATOR . $_plugin_filename; // see if path is relative if (!preg_match("/^([\/\\\\]|[a-zA-Z]:[\/\\\\])/", $_plugin_dir)) { $_relative_paths[] = $_plugin_dir; // relative path, see if it is in the SMARTY_DIR if (@is_readable(SMARTY_DIR . $_plugin_filepath)) { $_return = SMARTY_DIR . $_plugin_filepath; break; } } // try relative to cwd (or absolute) if (@is_readable($_plugin_filepath)) { $_return = $_plugin_filepath; break; } } if($_return === false) { // still not found, try PHP include_path if(isset($_relative_paths)) { foreach ((array)$_relative_paths as $_plugin_dir) { $_plugin_filepath = $_plugin_dir . DIRECTORY_SEPARATOR . $_plugin_filename; $_params = array('file_path' => $_plugin_filepath); require_once(SMARTY_DIR . 'core' . DIRECTORY_SEPARATOR . 'core.get_include_path.php'); if(smarty_core_get_include_path($_params, $smarty)) { $_return = $_params['new_file_path']; break; } } } } $_filepaths_cache[$_plugin_filename] = $_return; return $_return; } /* vim: set expandtab: */ ?> --- NEW FILE: core.write_cache_file.php --- <?php /** * Smarty plugin * @package Smarty * @subpackage plugins */ /** * Prepend the cache information to the cache file * and write it * * @param string $tpl_file * @param string $cache_id * @param string $compile_id * @param string $results * @return true|null */ // $tpl_file, $cache_id, $compile_id, $results function smarty_core_write_cache_file($params, &$smarty) { // put timestamp in cache header $smarty->_cache_info['timestamp'] = time(); if ($smarty->cache_lifetime > -1){ // expiration set $smarty->_cache_info['expires'] = $smarty->_cache_info['timestamp'] + $smarty->cache_lifetime; } else { // cache will never expire $smarty->_cache_info['expires'] = -1; } // collapse {nocache...}-tags $params['results'] = preg_replace('!((\{nocache\:([0-9a-f]{32})#(\d+)\})' .'.*' .'{/nocache\:\\3#\\4\})!Us' ,'\\2' ,$params['results']); $smarty->_cache_info['cache_serials'] = $smarty->_cache_serials; // prepend the cache header info into cache file $params['results'] = serialize($smarty->_cache_info)."\n".$params['results']; if (!empty($smarty->cache_handler_func)) { // use cache_handler function call_user_func_array($smarty->cache_handler_func, array('write', &$smarty, &$params['results'], $params['tpl_file'], $params['cache_id'], $params['compile_id'], null)); } else { // use local cache file if(!@is_writable($smarty->cache_dir)) { // cache_dir not writable, see if it exists if(!@is_dir($smarty->cache_dir)) { $smarty->trigger_error('the $cache_dir \'' . $smarty->cache_dir . '\' does not exist, or is not a directory.', E_USER_ERROR); return false; } $smarty->trigger_error('unable to write to $cache_dir \'' . realpath($smarty->cache_dir) . '\'. Be sure $cache_dir is writable by the web server user.', E_USER_ERROR); return false; } $_auto_id = $smarty->_get_auto_id($params['cache_id'], $params['compile_id']); $_cache_file = $smarty->_get_auto_filename($smarty->cache_dir, $params['tpl_file'], $_auto_id); $_params = array('filename' => $_cache_file, 'contents' => $params['results'], 'create_dirs' => true); require_once(SMARTY_DIR . 'core' . DIRECTORY_SEPARATOR . 'core.write_file.php'); smarty_core_write_file($_params, $smarty); return true; } } /* vim: set expandtab: */ ?> --- NEW FILE: core.load_plugins.php --- <?php /** * Smarty plugin * @package Smarty * @subpackage plugins */ /** * Load requested plugins * * @param array $plugins */ // $plugins function smarty_core_load_plugins($params, &$smarty) { foreach ($params['plugins'] as $_plugin_info) { list($_type, $_name, $_tpl_file, $_tpl_line, $_delayed_loading) = $_plugin_info; $_plugin = &$smarty->_plugins[$_type][$_name]; /* * We do not load plugin more than once for each instance of Smarty. * The following code checks for that. The plugin can also be * registered dynamically at runtime, in which case template file * and line number will be unknown, so we fill them in. * * The final element of the info array is a flag that indicates * whether the dynamically registered plugin function has been * checked for existence yet or not. */ if (isset($_plugin)) { if (empty($_plugin[3])) { if (!is_callable($_plugin[0])) { $smarty->_trigger_fatal_error("[plugin] $_type '$_name' is not implemented", $_tpl_file, $_tpl_line, __FILE__, __LINE__); } else { $_plugin[1] = $_tpl_file; $_plugin[2] = $_tpl_line; $_plugin[3] = true; if (!isset($_plugin[4])) $_plugin[4] = true; /* cacheable */ } } continue; } else if ($_type == 'insert') { /* * For backwards compatibility, we check for insert functions in * the symbol table before trying to load them as a plugin. */ $_plugin_func = 'insert_' . $_name; if (function_exists($_plugin_func)) { $_plugin = array($_plugin_func, $_tpl_file, $_tpl_line, true, false); continue; } } $_plugin_file = $smarty->_get_plugin_filepath($_type, $_name); if (! $_found = ($_plugin_file != false)) { $_message = "could not load plugin file '$_type.$_name.php'\n"; } /* * If plugin file is found, it -must- provide the properly named * plugin function. In case it doesn't, simply output the error and * do not fall back on any other method. */ if ($_found) { include_once $_plugin_file; $_plugin_func = 'smarty_' . $_type . '_' . $_name; if (!function_exists($_plugin_func)) { $smarty->_trigger_fatal_error("[plugin] function $_plugin_func() not found in $_plugin_file", $_tpl_file, $_tpl_line, __FILE__, __LINE__); continue; } } /* * In case of insert plugins, their code may be loaded later via * 'script' attribute. */ else if ($_type == 'insert' && $_delayed_loading) { $_plugin_func = 'smarty_' . $_type . '_' . $_name; $_found = true; } /* * Plugin specific processing and error checking. */ if (!$_found) { if ($_type == 'modifier') { /* * In case modifier falls back on using PHP functions * directly, we only allow those specified in the security * context. */ if ($smarty->security && !in_array($_name, $smarty->security_settings['MODIFIER_FUNCS'])) { $_message = "(secure mode) modifier '$_name' is not allowed"; } else { if (!function_exists($_name)) { $_message = "modifier '$_name' is not implemented"; } else { $_plugin_func = $_name; $_found = true; } } } else if ($_type == 'function') { /* * This is a catch-all situation. */ $_message = "unknown tag - '$_name'"; } } if ($_found) { $smarty->_plugins[$_type][$_name] = array($_plugin_func, $_tpl_file, $_tpl_line, true, true); } else { // output error $smarty->_trigger_fatal_error('[plugin] ' . $_message, $_tpl_file, $_tpl_line, __FILE__, __LINE__); } } } /* vim: set expandtab: */ ?> --- NEW FILE: core.process_compiled_include.php --- <?php /** * Smarty plugin * @package Smarty * @subpackage plugins */ /** * Replace nocache-tags by results of the corresponding non-cacheable * functions and return it * * @param string $compiled_tpl * @param string $cached_source * @return string */ function smarty_core_process_compiled_include($params, &$smarty) { $_cache_including = $smarty->_cache_including; $smarty->_cache_including = true; $_return = $params['results']; foreach ($smarty->_cache_serials as $_include_file_path=>$_cache_serial) { $_return = preg_replace_callback('!(\{nocache\:('.$_cache_serial.')#(\d+)\})!s', array(&$smarty, '_process_compiled_include_callback'), $_return); } $smarty->_cache_including = $_cache_including; return $_return; } ?> --- NEW FILE: core.process_cached_inserts.php --- <?php /** * Smarty plugin * @package Smarty * @subpackage plugins */ /** * Replace cached inserts with the actual results * * @param string $results * @return string */ function smarty_core_process_cached_inserts($params, &$smarty) { preg_match_all('!'.$smarty->_smarty_md5.'{insert_cache (.*)}'.$smarty->_smarty_md5.'!Uis', $params['results'], $match); list($cached_inserts, $insert_args) = $match; for ($i = 0, $for_max = count($cached_inserts); $i < $for_max; $i++) { if ($smarty->debugging) { $_params = array(); require_once(SMARTY_DIR . 'core' . DIRECTORY_SEPARATOR . 'core.get_microtime.php'); $debug_start_time = smarty_core_get_microtime($_params, $smarty); } $args = unserialize($insert_args[$i]); $name = $args['name']; if (isset($args['script'])) { $_params = array('resource_name' => $smarty->_dequote($args['script'])); require_once(SMARTY_DIR . 'core' . DIRECTORY_SEPARATOR . 'core.get_php_resource.php'); if(!smarty_core_get_php_resource($_params, $smarty)) { return false; } $resource_type = $_params['resource_type']; $php_resource = $_params['php_resource']; if ($resource_type == 'file') { $smarty->_include($php_resource, true); } else { $smarty->_eval($php_resource); } } $function_name = $smarty->_plugins['insert'][$name][0]; if (empty($args['assign'])) { $replace = $function_name($args, $smarty); } else { $smarty->assign($args['assign'], $function_name($args, $smarty)); $replace = ''; } $params['results'] = str_replace($cached_inserts[$i], $replace, $params['results']); if ($smarty->debugging) { $_params = array(); require_once(SMARTY_DIR . 'core' . DIRECTORY_SEPARATOR . 'core.get_microtime.php'); $smarty->_smarty_debug_info[] = array('type' => 'insert', 'filename' => 'insert_'.$name, 'depth' => $smarty->_inclusion_depth, 'exec_time' => smarty_core_get_microtime($_params, $smarty) - $debug_start_time); } } return $params['results']; } /* vim: set expandtab: */ ?> --- NEW FILE: core.get_microtime.php --- <?php /** * Smarty plugin * @package Smarty * @subpackage plugins */ /** * Get seconds and microseconds * @return double */ function smarty_core_get_microtime($params, &$smarty) { $mtime = microtime(); $mtime = explode(" ", $mtime); $mtime = (double)($mtime[1]) + (double)($mtime[0]); return ($mtime); } /* vim: set expandtab: */ ?> --- NEW FILE: core.assign_smarty_interface.php --- <?php /** * Smarty plugin * @package Smarty * @subpackage plugins */ /** * Smarty assign_smarty_interface core plugin * * Type: core<br> * Name: assign_smarty_interface<br> * Purpose: assign the $smarty interface variable * @param array Format: null * @param Smarty */ function smarty_core_assign_smarty_interface($params, &$smarty) { if (isset($smarty->_smarty_vars) && isset($smarty->_smarty_vars['request'])) { return; } $_globals_map = array('g' => 'HTTP_GET_VARS', 'p' => 'HTTP_POST_VARS', 'c' => 'HTTP_COOKIE_VARS', 's' => 'HTTP_SERVER_VARS', 'e' => 'HTTP_ENV_VARS'); $_smarty_vars_request = array(); foreach (preg_split('!!', strtolower($smarty->request_vars_order)) as $_c) { if (isset($_globals_map[$_c])) { $_smarty_vars_request = array_merge($_smarty_vars_request, $GLOBALS[$_globals_map[$_c]]); } } $_smarty_vars_request = @array_merge($_smarty_vars_request, $GLOBALS['HTTP_SESSION_VARS']); $smarty->_smarty_vars['request'] = $_smarty_vars_request; } /* vim: set expandtab: */ ?> --- NEW FILE: core.is_trusted.php --- <?php /** * Smarty plugin * @package Smarty * @subpackage plugins */ /**#@+ * @access private */ /** * determines if a resource is trusted or not * * @param string $resource_type * @param string $resource_name * @return boolean */ // $resource_type, $resource_name function smarty_core_is_trusted($params, &$smarty) { $_smarty_trusted = false; if ($params['resource_type'] == 'file') { if (!empty($smarty->trusted_dir)) { $_rp = realpath($params['resource_name']); foreach ((array)$smarty->trusted_dir as $curr_dir) { if (!empty($curr_dir) && is_readable ($curr_dir)) { $_cd = realpath($curr_dir); if (strncmp($_rp, $_cd, strlen($_cd)) == 0 && $_rp{strlen($_cd)} == DIRECTORY_SEPARATOR ) { $_smarty_trusted = true; break; } } } } } else { // resource is not on local file system $_smarty_trusted = call_user_func_array($smarty->_plugins['resource'][$params['resource_type']][0][3], array($params['resource_name'], $smarty)); } return $_smarty_trusted; } /* vim: set expandtab: */ ?> --- NEW FILE: core.read_cache_file.php --- <?php /** * Smarty plugin * @package Smarty * @subpackage plugins */ /** * read a cache file, determine if it needs to be * regenerated or not * * @param string $tpl_file * @param string $cache_id * @param string $compile_id * @param string $results * @return boolean */ // $tpl_file, $cache_id, $compile_id, &$results function smarty_core_read_cache_file(&$params, &$smarty) { static $content_cache = array(); if ($smarty->force_compile) { // force compile enabled, always regenerate return false; } if (isset($content_cache[$params['tpl_file'].','.$params['cache_id'].','.$params['compile_id']])) { list($params['results'], $smarty->_cache_info) = $content_cache[$params['tpl_file'].','.$params['cache_id'].','.$params['compile_id']]; return true; } if (!empty($smarty->cache_handler_func)) { // use cache_handler function call_user_func_array($smarty->cache_handler_func, array('read', &$smarty, &$params['results'], $params['tpl_file'], $params['cache_id'], $params['compile_id'], null)); } else { // use local cache file $_auto_id = $smarty->_get_auto_id($params['cache_id'], $params['compile_id']); $_cache_file = $smarty->_get_auto_filename($smarty->cache_dir, $params['tpl_file'], $_auto_id); $params['results'] = $smarty->_read_file($_cache_file); } if (empty($params['results'])) { // nothing to parse (error?), regenerate cache return false; } $cache_split = explode("\n", $params['results'], 2); $cache_header = $cache_split[0]; $_cache_info = unserialize($cache_header); if ($smarty->caching == 2 && isset ($_cache_info['expires'])){ // caching by expiration time if ($_cache_info['expires'] > -1 && (time() > $_cache_info['expires'])) { // cache expired, regenerate return false; } } else { // caching by lifetime if ($smarty->cache_lifetime > -1 && (time() - $_cache_info['timestamp'] > $smarty->cache_lifetime)) { // cache expired, regenerate return false; } } if ($smarty->compile_check) { $_params = array('get_source' => false, 'quiet'=>true); foreach (array_keys($_cache_info['template']) as $_template_dep) { $_params['resource_name'] = $_template_dep; if (!$smarty->_fetch_resource_info($_params) || $_cache_info['timestamp'] < $_params['resource_timestamp']) { // template file has changed, regenerate cache return false; } } if (isset($_cache_info['config'])) { $_params = array('resource_base_path' => $smarty->config_dir, 'get_source' => false, 'quiet'=>true); foreach (array_keys($_cache_info['config']) as $_config_dep) { $_params['resource_name'] = $_config_dep; if (!$smarty->_fetch_resource_info($_params) || $_cache_info['timestamp'] < $_params['resource_timestamp']) { // config file has changed, regenerate cache return false; } } } } foreach ($_cache_info['cache_serials'] as $_include_file_path=>$_cache_serial) { if (empty($smarty->_cache_serials[$_include_file_path])) { $smarty->_include($_include_file_path, true); } if ($smarty->_cache_serials[$_include_file_path] != $_cache_serial) { /* regenerate */ return false; } } $params['results'] = $cache_split[1]; $content_cache[$params['tpl_file'].','.$params['cache_id'].','.$params['compile_id']] = array($params['results'], $_cache_info); $smarty->_cache_info = $_cache_info; return true; } /* vim: set expandtab: */ ?> --- NEW FILE: core.rm_auto.php --- <?php /** * Smarty plugin * @package Smarty * @subpackage plugins */ /** * delete an automagically created file by name and id * * @param string $auto_base * @param string $auto_source * @param string $auto_id * @param integer $exp_time * @return boolean */ // $auto_base, $auto_source = null, $auto_id = null, $exp_time = null function smarty_core_rm_auto($params, &$smarty) { if (!@is_dir($params['auto_base'])) return false; if(!isset($params['auto_id']) && !isset($params['auto_source'])) { $_params = array( 'dirname' => $params['auto_base'], 'level' => 0, 'exp_time' => $params['exp_time'] ); require_once(SMARTY_DIR . 'core' . DIRECTORY_SEPARATOR . 'core.rmdir.php'); $_res = smarty_core_rmdir($_params, $smarty); } else { $_tname = $smarty->_get_auto_filename($params['auto_base'], $params['auto_source'], $params['auto_id']); if(isset($params['auto_source'])) { if (isset($params['extensions'])) { $_res = false; foreach ((array)$params['extensions'] as $_extension) $_res |= $smarty->_unlink($_tname.$_extension, $params['exp_time']); } else { $_res = $smarty->_unlink($_tname, $params['exp_time']); } } elseif ($smarty->use_sub_dirs) { $_params = array( 'dirname' => $_tname, 'level' => 1, 'exp_time' => $params['exp_time'] ); require_once(SMARTY_DIR . 'core' . DIRECTORY_SEPARATOR . 'core.rmdir.php'); $_res = smarty_core_rmdir($_params, $smarty); } else { // remove matching file names $_handle = opendir($params['auto_base']); $_res = true; while (false !== ($_filename = readdir($_handle))) { if($_filename == '.' || $_filename == '..') { continue; } elseif (substr($params['auto_base'] . DIRECTORY_SEPARATOR . $_filename, 0, strlen($_tname)) == $_tname) { $_res &= (bool)$smarty->_unlink($params['auto_base'] . DIRECTORY_SEPARATOR . $_filename, $params['exp_time']); } } } } return $_res; } /* vim: set expandtab: */ ?> --- NEW FILE: core.is_secure.php --- <?php /** * Smarty plugin * @package Smarty * @subpackage plugins */ /** * determines if a resource is secure or not. * * @param string $resource_type * @param string $resource_name * @return boolean */ // $resource_type, $resource_name function smarty_core_is_secure($params, &$smarty) { if (!$smarty->security || $smarty->security_settings['INCLUDE_ANY']) { return true; } if ($params['resource_type'] == 'file') { $_rp = realpath($params['resource_name']); if (isset($params['resource_base_path'])) { foreach ((array)$params['resource_base_path'] as $curr_dir) { if ( ($_cd = realpath($curr_dir)) !== false && strncmp($_rp, $_cd, strlen($_cd)) == 0 && $_rp{strlen($_cd)} == DIRECTORY_SEPARATOR ) { return true; } } } if (!empty($smarty->secure_dir)) { foreach ((array)$smarty->secure_dir as $curr_dir) { if ( ($_cd = realpath($curr_dir)) !== false && strncmp($_rp, $_cd, strlen($_cd)) == 0 && $_rp{strlen($_cd)} == DIRECTORY_SEPARATOR ) { return true; } } } } else { // resource is not on local file system return call_user_func_array( $smarty->_plugins['resource'][$params['resource_type']][0][2], array($params['resource_name'], &$smarty)); } return false; } /* vim: set expandtab: */ ?> --- NEW FILE: core.create_dir_structure.php --- <?php /** * Smarty plugin * @package Smarty * @subpackage plugins */ /** * create full directory structure * * @param string $dir */ // $dir function smarty_core_create_dir_structure($params, &$smarty) { if (!file_exists($params['dir'])) { $_open_basedir_ini = ini_get('open_basedir'); if (DIRECTORY_SEPARATOR=='/') { /* unix-style paths */ $_dir = $params['dir']; $_dir_parts = preg_split('!/+!', $_dir, -1, PREG_SPLIT_NO_EMPTY); $_new_dir = ($_dir{0}=='/') ? '/' : getcwd().'/'; if($_use_open_basedir = !empty($_open_basedir_ini)) { $_open_basedirs = explode(':', $_open_basedir_ini); } } else { /* other-style paths */ $_dir = str_replace('\\','/', $params['dir']); $_dir_parts = preg_split('!/+!', $_dir, -1, PREG_SPLIT_NO_EMPTY); if (preg_match('!^((//)|([a-zA-Z]:/))!', $_dir, $_root_dir)) { /* leading "//" for network volume, or "[letter]:/" for full path */ $_new_dir = $_root_dir[1]; /* remove drive-letter from _dir_parts */ if (isset($_root_dir[3])) array_shift($_dir_parts); } else { $_new_dir = str_replace('\\', '/', getcwd()).'/'; } if($_use_open_basedir = !empty($_open_basedir_ini)) { $_open_basedirs = explode(';', str_replace('\\', '/', $_open_basedir_ini)); } } /* all paths use "/" only from here */ foreach ($_dir_parts as $_dir_part) { $_new_dir .= $_dir_part; if ($_use_open_basedir) { // do not attempt to test or make directories outside of open_basedir $_make_new_dir = false; foreach ($_open_basedirs as $_open_basedir) { if (substr($_new_dir, 0, strlen($_open_basedir)) == $_open_basedir) { $_make_new_dir = true; break; } } } else { $_make_new_dir = true; } if ($_make_new_dir && !file_exists($_new_dir) && !@mkdir($_new_dir, $smarty->_dir_perms) && !is_dir($_new_dir)) { $smarty->trigger_error("problem creating directory '" . $_new_dir . "'"); return false; } $_new_dir .= '/'; } } } /* vim: set expandtab: */ ?> --- NEW FILE: core.display_debug_console.php --- <?php /** * Smarty plugin * @package Smarty * @subpackage plugins */ /** * Smarty debug_console function plugin * * Type: core<br> * Name: display_debug_console<br> * Purpose: display the javascript debug console window * @param array Format: null * @param Smarty */ function smarty_core_display_debug_console($params, &$smarty) { // we must force compile the debug template in case the environment // changed between separate applications. if(empty($smarty->debug_tpl)) { // set path to debug template from SMARTY_DIR $smarty->debug_tpl = SMARTY_DIR . 'debug.tpl'; if($smarty->security && is_file($smarty->debug_tpl)) { $smarty->secure_dir[] = dirname(realpath($smarty->debug_tpl)); } $smarty->debug_tpl = 'file:' . SMARTY_DIR . 'debug.tpl'; } $_ldelim_orig = $smarty->left_delimiter; $_rdelim_orig = $smarty->right_delimiter; $smarty->left_delimiter = '{'; $smarty->right_delimiter = '}'; $_compile_id_orig = $smarty->_compile_id; $smarty->_compile_id = null; $_compile_path = $smarty->_get_compile_path($smarty->debug_tpl); if ($smarty->_compile_resource($smarty->debug_tpl, $_compile_path)) { ob_start(); $smarty->_include($_compile_path); $_results = ob_get_contents(); ob_end_clean(); } else { $_results = ''; } $smarty->_compile_id = $_compile_id_orig; $smarty->left_delimiter = $_ldelim_orig; $smarty->right_delimiter = $_rdelim_orig; return $_results; } /* vim: set expandtab: */ ?> --- NEW FILE: core.run_insert_handler.php --- <?php /** * Smarty plugin * @package Smarty * @subpackage plugins */ /** * Handle insert tags * * @param array $args * @return string */ function smarty_core_run_insert_handler($params, &$smarty) { require_once(SMARTY_DIR . 'core' . DIRECTORY_SEPARATOR . 'core.get_microtime.php'); if ($smarty->debugging) { $_params = array(); $_debug_start_time = smarty_core_get_microtime($_params, $smarty); } if ($smarty->caching) { $_arg_string = serialize($params['args']); $_name = $params['args']['name']; if (!isset($smarty->_cache_info['insert_tags'][$_name])) { $smarty->_cache_info['insert_tags'][$_name] = array('insert', $_name, $smarty->_plugins['insert'][$_name][1], $smarty->_plugins['insert'][$_name][2], !empty($params['args']['script']) ? true : false); } return $smarty->_smarty_md5."{insert_cache $_arg_string}".$smarty->_smarty_md5; } else { if (isset($params['args']['script'])) { $_params = array('resource_name' => $smarty->_dequote($params['args']['script'])); require_once(SMARTY_DIR . 'core' . DIRECTORY_SEPARATOR . 'core.get_php_resource.php'); if(!smarty_core_get_php_resource($_params, $smarty)) { return false; } if ($_params['resource_type'] == 'file') { $smarty->_include($_params['php_resource'], true); } else { $smarty->_eval($_params['php_resource']); } unset($params['args']['script']); } $_funcname = $smarty->_plugins['insert'][$params['args']['name']][0]; $_content = $_funcname($params['args'], $smarty); if ($smarty->debugging) { $_params = array(); require_once(SMARTY_DIR . 'core' . DIRECTORY_SEPARATOR . 'core.get_microtime.php'); $smarty->_smarty_debug_info[] = array('type' => 'insert', 'filename' => 'insert_'.$params['args']['name'], 'depth' => $smarty->_inclusion_depth, 'exec_time' => smarty_core_get_microtime($_params, $smarty) - $_debug_start_time); } if (!empty($params['args']["assign"])) { $smarty->assign($params['args']["assign"], $_content); } else { return $_content; } } } /* vim: set expandtab: */ ?> --- NEW FILE: core.load_resource_plugin.php --- <?php /** * Smarty plugin * @package Smarty * @subpackage plugins */ /** * load a resource plugin * * @param string $type */ // $type function smarty_core_load_resource_plugin($params, &$smarty) { /* * Resource plugins are not quite like the other ones, so they are * handled differently. The first element of plugin info is the array of * functions provided by the plugin, the second one indicates whether * all of them exist or not. */ $_plugin = &$smarty->_plugins['resource'][$params['type']]; if (isset($_plugin)) { if (!$_plugin[1] && count($_plugin[0])) { $_plugin[1] = true; foreach ($_plugin[0] as $_plugin_func) { if (!is_callable($_plugin_func)) { $_plugin[1] = false; break; } } } if (!$_plugin[1]) { $smarty->_trigger_fatal_error("[plugin] resource '" . $params['type'] . "' is not implemented", null, null, __FILE__, __LINE__); } return; } $_plugin_file = $smarty->_get_plugin_filepath('resource', $params['type']); $_found = ($_plugin_file != false); if ($_found) { /* * If the plugin file is found, it -must- provide the properly named * plugin functions. */ include_once($_plugin_file); /* * Locate functions that we require the plugin to provide. */ $_resource_ops = array('source', 'timestamp', 'secure', 'trusted'); $_resource_funcs = array(); foreach ($_resource_ops as $_op) { $_plugin_func = 'smarty_resource_' . $params['type'] . '_' . $_op; if (!function_exists($_plugin_func)) { $smarty->_trigger_fatal_error("[plugin] function $_plugin_func() not found in $_plugin_file", null, null, __FILE__, __LINE__); return; } else { $_resource_funcs[] = $_plugin_func; } } $smarty->_plugins['resource'][$params['type']] = array($_resource_funcs, true); } } /* vim: set expandtab: */ ?> --- NEW FILE: core.write_compiled_resource.php --- <?php /** * Smarty plugin * @package Smarty * @subpackage plugins */ /** * write the compiled resource * * @param string $compile_path * @param string $compiled_content * @param integer $resource_timestamp * @return true */ function smarty_core_write_compiled_resource($params, &$smarty) { if(!@is_writable($smarty->compile_dir)) { // compile_dir not writable, see if it exists if(!@is_dir($smarty->compile_dir)) { $smarty->trigger_error('the $compile_dir \'' . $smarty->compile_dir . '\' does not exist, or is not a directory.', E_USER_ERROR); return false; } $smarty->trigger_error('unable to write to $compile_dir \'' . realpath($smarty->compile_dir) . '\'. Be sure $compile_dir is writable by the web server user.', E_USER_ERROR); return false; } $_params = array('filename' => $params['compile_path'], 'timestamp'=>$params['resource_timestamp'], 'contents' => $params['compiled_content'], 'create_dirs' => true); require_once(SMARTY_DIR . 'core' . DIRECTORY_SEPARATOR . 'core.write_file.php'); smarty_core_write_file($_params, $smarty); return true; } /* vim: set expandtab: */ ?> |
From: Ariejan de V. <ar...@us...> - 2004-07-07 13:31:01
|
Update of /cvsroot/lambda/lambda/includes/Smarty In directory sc8-pr-cvs1.sourceforge.net:/tmp/cvs-serv31922/Smarty Added Files: Config_File.class.php Smarty.class.php Smarty_Compiler.class.php debug.tpl Log Message: Added Smarty 2.6.3 to Lambda --- NEW FILE: Smarty_Compiler.class.php --- <?php /** * Project: Smarty: the PHP compiling template engine * File: Smarty_Compiler.class.php * * This library is free software; you can redistribute it and/or * modify it under the terms of the GNU Lesser General Public * License as published by the Free Software Foundation; either * version 2.1 of the License, or (at your option) any later version. * * This library is distributed in the hope that it will be useful, * but WITHOUT ANY WARRANTY; without even the implied warranty of * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU * Lesser General Public License for more details. * * You should have received a copy of the GNU Lesser General Public * License along with this library; if not, write to the Free Software * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA [...2199 lines suppressed...] * @access private * @param string $a * @param string $b * @return 0|-1|1 */ function _smarty_sort_length($a, $b) { if($a == $b) return 0; if(strlen($a) == strlen($b)) return ($a > $b) ? -1 : 1; return (strlen($a) > strlen($b)) ? -1 : 1; } /* vim: set et: */ ?> --- NEW FILE: debug.tpl --- {* Smarty *} {* debug.tpl, last updated version 2.0.1 *} {assign_debug_info} {if isset($_smarty_debug_output) and $_smarty_debug_output eq "html"} <table border=0 width=100%> <tr bgcolor=#cccccc><th colspan=2>Smarty Debug Console</th></tr> <tr bgcolor=#cccccc><td colspan=2><b>included templates & config files (load time in seconds):</b></td></tr> {section name=templates loop=$_debug_tpls} <tr bgcolor={if %templates.index% is even}#eeeeee{else}#fafafa{/if}><td colspan=2><tt>{section name=indent loop=$_debug_tpls[templates].depth} {/section}<font color={if $_debug_tpls[templates].type eq "template"}brown{elseif $_debug_tpls[templates].type eq "insert"}black{else}green{/if}>{$_debug_tpls[templates].filename|escape:html}</font>{if isset($_debug_tpls[templates].exec_time)} <font size=-1><i>({$_debug_tpls[templates].exec_time|string_format:"%.5f"}){if %templates.index% eq 0} (total){/if}</i></font>{/if}</tt></td></tr> {sectionelse} <tr bgcolor=#eeeeee><td colspan=2><tt><i>no templates included</i></tt></td></tr> {/section} <tr bgcolor=#cccccc><td colspan=2><b>assigned template variables:</b></td></tr> {section name=vars loop=$_debug_keys} <tr bgcolor={if %vars.index% is even}#eeeeee{else}#fafafa{/if}><td valign=top><tt><font color=blue>{ldelim}${$_debug_keys[vars]}{rdelim}</font></tt></td><td nowrap><tt><font color=green>{$_debug_vals[vars]|@debug_print_var}</font></tt></td></tr> {sectionelse} <tr bgcolor=#eeeeee><td colspan=2><tt><i>no template variables assigned</i></tt></td></tr> {/section} <tr bgcolor=#cccccc><td colspan=2><b>assigned config file variables (outer template scope):</b></td></tr> {section name=config_vars loop=$_debug_config_keys} <tr bgcolor={if %config_vars.index% is even}#eeeeee{else}#fafafa{/if}><td valign=top><tt><font color=maroon>{ldelim}#{$_debug_config_keys[config_vars]}#{rdelim}</font></tt></td><td><tt><font color=green>{$_debug_config_vals[config_vars]|@debug_print_var}</font></tt></td></tr> {sectionelse} <tr bgcolor=#eeeeee><td colspan=2><tt><i>no config vars assigned</i></tt></td></tr> {/section} </table> </BODY></HTML> {else} <SCRIPT language=javascript> if( self.name == '' ) {ldelim} var title = 'Console'; {rdelim} else {ldelim} var title = 'Console_' + self.name; {rdelim} _smarty_console = window.open("",title.value,"width=680,height=600,resizable,scrollbars=yes"); _smarty_console.document.write("<HTML><TITLE>Smarty Debug Console_"+self.name+"</TITLE><BODY bgcolor=#ffffff>"); _smarty_console.document.write("<table border=0 width=100%>"); _smarty_console.document.write("<tr bgcolor=#cccccc><th colspan=2>Smarty Debug Console</th></tr>"); _smarty_console.document.write("<tr bgcolor=#cccccc><td colspan=2><b>included templates & config files (load time in seconds):</b></td></tr>"); {section name=templates loop=$_debug_tpls} _smarty_console.document.write("<tr bgcolor={if %templates.index% is even}#eeeeee{else}#fafafa{/if}><td colspan=2><tt>{section name=indent loop=$_debug_tpls[templates].depth} {/section}<font color={if $_debug_tpls[templates].type eq "template"}brown{elseif $_debug_tpls[templates].type eq "insert"}black{else}green{/if}>{$_debug_tpls[templates].filename|escape:html|escape:javascript}</font>{if isset($_debug_tpls[templates].exec_time)} <font size=-1><i>({$_debug_tpls[templates].exec_time|string_format:"%.5f"}){if %templates.index% eq 0} (total){/if}</i></font>{/if}</tt></td></tr>"); {sectionelse} _smarty_console.document.write("<tr bgcolor=#eeeeee><td colspan=2><tt><i>no templates included</i></tt></td></tr>"); {/section} _smarty_console.document.write("<tr bgcolor=#cccccc><td colspan=2><b>assigned template variables:</b></td></tr>"); {section name=vars loop=$_debug_keys} _smarty_console.document.write("<tr bgcolor={if %vars.index% is even}#eeeeee{else}#fafafa{/if}><td valign=top><tt><font color=blue>{ldelim}${$_debug_keys[vars]}{rdelim}</font></tt></td><td nowrap><tt><font color=green>{$_debug_vals[vars]|@debug_print_var|escape:javascript}</font></tt></td></tr>"); {sectionelse} _smarty_console.document.write("<tr bgcolor=#eeeeee><td colspan=2><tt><i>no template variables assigned</i></tt></td></tr>"); {/section} _smarty_console.document.write("<tr bgcolor=#cccccc><td colspan=2><b>assigned config file variables (outer template scope):</b></td></tr>"); {section name=config_vars loop=$_debug_config_keys} _smarty_console.document.write("<tr bgcolor={if %config_vars.index% is even}#eeeeee{else}#fafafa{/if}><td valign=top><tt><font color=maroon>{ldelim}#{$_debug_config_keys[config_vars]}#{rdelim}</font></tt></td><td><tt><font color=green>{$_debug_config_vals[config_vars]|@debug_print_var|escape:javascript}</font></tt></td></tr>"); {sectionelse} _smarty_console.document.write("<tr bgcolor=#eeeeee><td colspan=2><tt><i>no config vars assigned</i></tt></td></tr>"); {/section} _smarty_console.document.write("</table>"); _smarty_console.document.write("</BODY></HTML>"); _smarty_console.document.close(); </SCRIPT> {/if} --- NEW FILE: Smarty.class.php --- <?php /** * Project: Smarty: the PHP compiling template engine * File: Smarty.class.php * * This library is free software; you can redistribute it and/or * modify it under the terms of the GNU Lesser General Public * License as published by the Free Software Foundation; either * version 2.1 of the License, or (at your option) any later version. * * This library is distributed in the hope that it will be useful, * but WITHOUT ANY WARRANTY; without even the implied warranty of * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU * Lesser General Public License for more details. * * You should have received a copy of the GNU Lesser General Public * License along with this library; if not, write to the Free Software * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA [...1902 lines suppressed...] return include($filename); } } /** * wrapper for eval() retaining $this * @return mixed */ function _eval($code, $params=null) { return eval($code); } /**#@-*/ } /* vim: set expandtab: */ ?> --- NEW FILE: Config_File.class.php --- <?php /** * Config_File class. * * This library is free software; you can redistribute it and/or * modify it under the terms of the GNU Lesser General Public * License as published by the Free Software Foundation; either * version 2.1 of the License, or (at your option) any later version. * * This library is distributed in the hope that it will be useful, * but WITHOUT ANY WARRANTY; without even the implied warranty of * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU * Lesser General Public License for more details. * * You should have received a copy of the GNU Lesser General Public * License along with this library; if not, write to the Free Software * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA * * @link http://smarty.php.net/ * @version 2.6.3 * @copyright Copyright: 2001-2004 ispi of Lincoln, Inc. * @author Andrei Zmievski <an...@ph...> * @access public * @package Smarty */ /* $Id: Config_File.class.php,v 1.1 2004/07/07 13:30:52 ariejan Exp $ */ /** * Config file reading class * @package Smarty */ class Config_File { /**#@+ * Options * @var boolean */ /** * Controls whether variables with the same name overwrite each other. */ var $overwrite = true; /** * Controls whether config values of on/true/yes and off/false/no get * converted to boolean values automatically. */ var $booleanize = true; /** * Controls whether hidden config sections/vars are read from the file. */ var $read_hidden = true; /** * Controls whether or not to fix mac or dos formatted newlines. * If set to true, \r or \r\n will be changed to \n. */ var $fix_newlines = true; /**#@-*/ /** @access private */ var $_config_path = ""; var $_config_data = array(); /**#@-*/ /** * Constructs a new config file class. * * @param string $config_path (optional) path to the config files */ function Config_File($config_path = NULL) { if (isset($config_path)) $this->set_path($config_path); } /** * Set the path where configuration files can be found. * * @param string $config_path path to the config files */ function set_path($config_path) { if (!empty($config_path)) { if (!is_string($config_path) || !file_exists($config_path) || !is_dir($config_path)) { $this->_trigger_error_msg("Bad config file path '$config_path'"); return; } if(substr($config_path, -1) != DIRECTORY_SEPARATOR) { $config_path .= DIRECTORY_SEPARATOR; } $this->_config_path = $config_path; } } /** * Retrieves config info based on the file, section, and variable name. * * @param string $file_name config file to get info for * @param string $section_name (optional) section to get info for * @param string $var_name (optional) variable to get info for * @return string|array a value or array of values */ function &get($file_name, $section_name = NULL, $var_name = NULL) { if (empty($file_name)) { $this->_trigger_error_msg('Empty config file name'); return; } else { $file_name = $this->_config_path . $file_name; if (!isset($this->_config_data[$file_name])) $this->load_file($file_name, false); } if (!empty($var_name)) { if (empty($section_name)) { return $this->_config_data[$file_name]["vars"][$var_name]; } else { if(isset($this->_config_data[$file_name]["sections"][$section_name]["vars"][$var_name])) return $this->_config_data[$file_name]["sections"][$section_name]["vars"][$var_name]; else return array(); } } else { if (empty($section_name)) { return (array)$this->_config_data[$file_name]["vars"]; } else { if(isset($this->_config_data[$file_name]["sections"][$section_name]["vars"])) return (array)$this->_config_data[$file_name]["sections"][$section_name]["vars"]; else return array(); } } } /** * Retrieves config info based on the key. * * @param $file_name string config key (filename/section/var) * @return string|array same as get() * @uses get() retrieves information from config file and returns it */ function &get_key($config_key) { list($file_name, $section_name, $var_name) = explode('/', $config_key, 3); $result = &$this->get($file_name, $section_name, $var_name); return $result; } /** * Get all loaded config file names. * * @return array an array of loaded config file names */ function get_file_names() { return array_keys($this->_config_data); } /** * Get all section names from a loaded file. * * @param string $file_name config file to get section names from * @return array an array of section names from the specified file */ function get_section_names($file_name) { $file_name = $this->_config_path . $file_name; if (!isset($this->_config_data[$file_name])) { $this->_trigger_error_msg("Unknown config file '$file_name'"); return; } return array_keys($this->_config_data[$file_name]["sections"]); } /** * Get all global or section variable names. * * @param string $file_name config file to get info for * @param string $section_name (optional) section to get info for * @return array an array of variables names from the specified file/section */ function get_var_names($file_name, $section = NULL) { if (empty($file_name)) { $this->_trigger_error_msg('Empty config file name'); return; } else if (!isset($this->_config_data[$file_name])) { $this->_trigger_error_msg("Unknown config file '$file_name'"); return; } if (empty($section)) return array_keys($this->_config_data[$file_name]["vars"]); else return array_keys($this->_config_data[$file_name]["sections"][$section]["vars"]); } /** * Clear loaded config data for a certain file or all files. * * @param string $file_name file to clear config data for */ function clear($file_name = NULL) { if ($file_name === NULL) $this->_config_data = array(); else if (isset($this->_config_data[$file_name])) $this->_config_data[$file_name] = array(); } /** * Load a configuration file manually. * * @param string $file_name file name to load * @param boolean $prepend_path whether current config path should be * prepended to the filename */ function load_file($file_name, $prepend_path = true) { if ($prepend_path && $this->_config_path != "") $config_file = $this->_config_path . $file_name; else $config_file = $file_name; ini_set('track_errors', true); $fp = @fopen($config_file, "r"); if (!is_resource($fp)) { $this->_trigger_error_msg("Could not open config file '$config_file'"); return false; } $contents = ($size = filesize($config_file)) ? fread($fp, $size) : ''; fclose($fp); $this->_config_data[$config_file] = $this->parse_contents($contents); return true; } /** * Store the contents of a file manually. * * @param string $config_file file name of the related contents * @param string $contents the file-contents to parse */ function set_file_contents($config_file, $contents) { $this->_config_data[$config_file] = $this->parse_contents($contents); return true; } /** * parse the source of a configuration file manually. * * @param string $contents the file-contents to parse */ function parse_contents($contents) { if($this->fix_newlines) { // fix mac/dos formatted newlines $contents = preg_replace('!\r\n?!', "\n", $contents); } $config_data = array(); $config_data['sections'] = array(); $config_data['vars'] = array(); /* reference to fill with data */ $vars =& $config_data['vars']; /* parse file line by line */ preg_match_all('!^.*\r?\n?!m', $contents, $match); $lines = $match[0]; for ($i=0, $count=count($lines); $i<$count; $i++) { $line = $lines[$i]; if (empty($line)) continue; if ( $line{0} == '[' && preg_match('!^\[(.*?)\]!', $line, $match) ) { /* section found */ if ($match[1]{0} == '.') { /* hidden section */ if ($this->read_hidden) { $section_name = substr($match[1], 1); } else { /* break reference to $vars to ignore hidden section */ unset($vars); $vars = array(); continue; } } else { $section_name = $match[1]; } if (!isset($config_data['sections'][$section_name])) $config_data['sections'][$section_name] = array('vars' => array()); $vars =& $config_data['sections'][$section_name]['vars']; continue; } if (preg_match('/^\s*(\.?\w+)\s*=\s*(.*)/s', $line, $match)) { /* variable found */ $var_name = rtrim($match[1]); if (strpos($match[2], '"""') === 0) { /* handle multiline-value */ $lines[$i] = substr($match[2], 3); $var_value = ''; while ($i<$count) { if (($pos = strpos($lines[$i], '"""')) === false) { $var_value .= $lines[$i++]; } else { /* end of multiline-value */ $var_value .= substr($lines[$i], 0, $pos); break; } } $booleanize = false; } else { /* handle simple value */ $var_value = preg_replace('/^([\'"])(.*)\1$/', '\2', rtrim($match[2])); $booleanize = $this->booleanize; } $this->_set_config_var($vars, $var_name, $var_value, $booleanize); } /* else unparsable line / means it is a comment / means ignore it */ } return $config_data; } /**#@+ @access private */ /** * @param array &$container * @param string $var_name * @param mixed $var_value * @param boolean $booleanize determines whether $var_value is converted to * to true/false */ function _set_config_var(&$container, $var_name, $var_value, $booleanize) { if ($var_name{0} == '.') { if (!$this->read_hidden) return; else $var_name = substr($var_name, 1); } if (!preg_match("/^[a-zA-Z_]\w*$/", $var_name)) { $this->_trigger_error_msg("Bad variable name '$var_name'"); return; } if ($booleanize) { if (preg_match("/^(on|true|yes)$/i", $var_value)) $var_value = true; else if (preg_match("/^(off|false|no)$/i", $var_value)) $var_value = false; } if (!isset($container[$var_name]) || $this->overwrite) $container[$var_name] = $var_value; else { settype($container[$var_name], 'array'); $container[$var_name][] = $var_value; } } /** * @uses trigger_error() creates a PHP warning/error * @param string $error_msg * @param integer $error_type one of */ function _trigger_error_msg($error_msg, $error_type = E_USER_WARNING) { trigger_error("Config_File error: $error_msg", $error_type); } /**#@-*/ } ?> |
From: Ariejan de V. <ar...@us...> - 2004-07-07 13:27:30
|
Update of /cvsroot/lambda/lambda/includes/Smarty/plugins In directory sc8-pr-cvs1.sourceforge.net:/tmp/cvs-serv31061/Smarty/plugins Log Message: Directory /cvsroot/lambda/lambda/includes/Smarty/plugins added to the repository |
From: Ariejan de V. <ar...@us...> - 2004-07-07 13:27:30
|
Update of /cvsroot/lambda/lambda/includes/Smarty/core In directory sc8-pr-cvs1.sourceforge.net:/tmp/cvs-serv31061/Smarty/core Log Message: Directory /cvsroot/lambda/lambda/includes/Smarty/core added to the repository |
From: Ariejan de V. <ar...@us...> - 2004-07-07 13:27:05
|
Update of /cvsroot/lambda/lambda/includes/Smarty In directory sc8-pr-cvs1.sourceforge.net:/tmp/cvs-serv30965/Smarty Log Message: Directory /cvsroot/lambda/lambda/includes/Smarty added to the repository |
From: Ariejan de V. <ar...@us...> - 2004-07-07 13:25:07
|
Update of /cvsroot/lambda/lambda/tmp In directory sc8-pr-cvs1.sourceforge.net:/tmp/cvs-serv30651/tmp Log Message: Directory /cvsroot/lambda/lambda/tmp added to the repository |
From: Ariejan de V. <ar...@us...> - 2004-07-07 13:10:49
|
Update of /cvsroot/lambda/lambda/classes In directory sc8-pr-cvs1.sourceforge.net:/tmp/cvs-serv27708 Modified Files: lambdaClient.class.php lambdaMySQLi.class.php Log Message: Added session handling and a new MySQL function (num_rows) Index: lambdaMySQLi.class.php =================================================================== RCS file: /cvsroot/lambda/lambda/classes/lambdaMySQLi.class.php,v retrieving revision 1.6 retrieving revision 1.7 diff -C2 -d -r1.6 -r1.7 *** lambdaMySQLi.class.php 7 Jul 2004 10:37:50 -0000 1.6 --- lambdaMySQLi.class.php 7 Jul 2004 13:10:39 -0000 1.7 *************** *** 119,121 **** --- 119,130 ---- } + /** + * Return the number of rows in the result + * + * @param object Valid MySQL Result Resource + * @return int Number of rows in the result resource + **/ + function num_rows($res) { + return @mysql_num_rows($res); + } } \ No newline at end of file Index: lambdaClient.class.php =================================================================== RCS file: /cvsroot/lambda/lambda/classes/lambdaClient.class.php,v retrieving revision 1.5 retrieving revision 1.6 diff -C2 -d -r1.5 -r1.6 *** lambdaClient.class.php 7 Jul 2004 10:13:16 -0000 1.5 --- lambdaClient.class.php 7 Jul 2004 13:10:39 -0000 1.6 *************** *** 34,37 **** --- 34,42 ---- **/ var $mysqli; + + /** + * @var object Local reference to the session handler + **/ + var $session; /** *************** *** 46,54 **** **/ function lambdaClient($client_id = 0) { ! global $handler, $mysqli; /* Create local references to the handler and mysqli connection */ $this->handler = $handler; $this->mysqli = $mysqli; /* Set the name of this class */ --- 51,60 ---- **/ function lambdaClient($client_id = 0) { ! global $handler, $mysqli, $session; /* Create local references to the handler and mysqli connection */ $this->handler = $handler; $this->mysqli = $mysqli; + $this->session = $session; /* Set the name of this class */ |
From: Ariejan de V. <ar...@us...> - 2004-07-07 13:05:49
|
Update of /cvsroot/lambda/lambda/classes In directory sc8-pr-cvs1.sourceforge.net:/tmp/cvs-serv25584 Modified Files: lambdaTemplate.class.php Log Message: Added debug level 2 message Index: lambdaTemplate.class.php =================================================================== RCS file: /cvsroot/lambda/lambda/classes/lambdaTemplate.class.php,v retrieving revision 1.6 retrieving revision 1.7 diff -C2 -d -r1.6 -r1.7 *** lambdaTemplate.class.php 7 Jul 2004 10:13:16 -0000 1.6 --- lambdaTemplate.class.php 7 Jul 2004 13:05:40 -0000 1.7 *************** *** 43,46 **** --- 43,48 ---- $this->handler = $handler; $this->setClassName('template'); + + $this->handler->debug("lambdaTemplate initialised", 2); } |
From: Ariejan de V. <ar...@us...> - 2004-07-07 12:59:21
|
Update of /cvsroot/lambda/lambda/classes In directory sc8-pr-cvs1.sourceforge.net:/tmp/cvs-serv25376 Added Files: lambdaSession.class.php Log Message: Basic session handling functionality --- NEW FILE: lambdaSession.class.php --- <?php /** * @package Lambda * @author Ariejan de Vroom <ar...@la...> * @version $Id: lambdaSession.class.php,v 1.1 2004/07/07 12:59:11 ariejan Exp $ * @copyright Copyright (C) 2004 Project Lambda * @link http://lambdahq.net **/ /** * Handles sessions * @package lambdaCore **/ class lambdaSession extends lambdaObject { /** * @var object Error handler reference **/ var $handler; /** * Sets the classname, sets up error handler **/ function lambdaSession() { global $handler; $this->handler = $handler; $this->setClassName('session'); $this->start(); } /** * Start a session **/ function start() { // Start the session if it is not yet active if(!session_id()) { session_start(); } $this->handler->debug("Session started", 2); } /** * Register a session variable * * @param string session variable name **/ function register($name) { session_register($name); $this->handler->debug("Session registered '".$name."'", 2); } /** * Unregister a session variable * * @param string Session variable name **/ function unregister($name) { $_SESSION[$name] = null; session_unregister($name); $this->handler->debug("Session unregistered '".$name."'", 2); } /** * Destroy the current session **/ function destory() { session_destroy(); $this->handler->debug("Session destroyed", 2); } } |
From: Ariejan de V. <ar...@us...> - 2004-07-07 12:49:44
|
Update of /cvsroot/lambda/lambda/classes In directory sc8-pr-cvs1.sourceforge.net:/tmp/cvs-serv24076 Modified Files: lambdaComponentHandler.class.php Log Message: Adapted to PHP4 syntax Index: lambdaComponentHandler.class.php =================================================================== RCS file: /cvsroot/lambda/lambda/classes/lambdaComponentHandler.class.php,v retrieving revision 1.1 retrieving revision 1.2 diff -C2 -d -r1.1 -r1.2 *** lambdaComponentHandler.class.php 21 Jun 2004 12:23:13 -0000 1.1 --- lambdaComponentHandler.class.php 7 Jul 2004 12:49:35 -0000 1.2 *************** *** 24,43 **** * @var object Error handler reference **/ ! private $handler; /** * @var object MySQLi object reference **/ ! private $mysqli; /** * @var array Array of loaded components **/ ! private $components; /** * Initialise the Component Handler **/ ! function __construct() { global $handler, $mysqli; --- 24,43 ---- * @var object Error handler reference **/ ! var $handler; /** * @var object MySQLi object reference **/ ! var $mysqli; /** * @var array Array of loaded components **/ ! var $components; /** * Initialise the Component Handler **/ ! function lambdaComponentHandler() { global $handler, $mysqli; |