uw Thu Mar 29 13:49:15 2001 EDT
Added files:
/php4/pear/HTML IT_Error.php
Modified files:
/php4/pear/HTML IT.php ITX.php
Log:
- Pearified the error handling
Index: php4/pear/HTML/IT.php
diff -u php4/pear/HTML/IT.php:1.4 php4/pear/HTML/IT.php:1.5
--- php4/pear/HTML/IT.php:1.4 Thu Feb 8 14:19:59 2001
+++ php4/pear/HTML/IT.php Thu Mar 29 13:49:15 2001
@@ -16,8 +16,11 @@
// | Authors: Ulf Wendel <[EMAIL PROTECTED]> |
// +----------------------------------------------------------------------+
//
-// $Id: IT.php,v 1.4 2001/02/08 22:19:59 chagenbu Exp $
+// $Id: IT.php,v 1.5 2001/03/29 21:49:15 uw Exp $
//
+
+require_once("HTML/IT_Error.php");
+
/**
* Integrated Template - IT
*
@@ -108,55 +111,40 @@
* $tpl->get();
* </code>
*
-* @author Ulf Wendel <[EMAIL PROTECTED]>
-* @version $Id: IT.php,v 1.4 2001/02/08 22:19:59 chagenbu Exp $
-* @access public
+* @author Ulf Wendel <[EMAIL PROTECTED]>
+* @version $Id: IT.php,v 1.5 2001/03/29 21:49:15 uw Exp $
+* @access public
+* @package IX[X]
*/
class IntegratedTemplate {
/**
* Contains the error objects
- * @var array
- * @access public
- * @see halt(), $printError, $haltOnError
+ * @var array
+ * @access public
+ * @see halt(), $printError, $haltOnError
*/
var $err = array();
/**
- * Print error messages?
- * @var boolean
- * @access public
- * @see halt(), $haltOnError, $err
- */
- var $printError = false;
-
- /**
- * Call die() on error?
- * @var boolean
- * @access public
- * @see halt(), $printError, $err
- */
- var $haltOnError = false;
-
- /**
* Clear cache on get()?
- * @var boolean
+ * @var boolean
*/
var $clearCache = false;
/**
* First character of a variable placeholder ( _{_VARIABLE} ).
- * @var string
- * @access public
- * @see $closingDelimiter, $blocknameRegExp, $variablenameRegExp
+ * @var string
+ * @access public
+ * @see $closingDelimiter, $blocknameRegExp, $variablenameRegExp
*/
var $openingDelimiter = "{";
/**
* Last character of a variable placeholder ( {VARIABLE_}_ ).
- * @var string
- * @access public
- * @see $openingDelimiter, $blocknameRegExp, $variablenameRegExp
+ * @var string
+ * @access public
+ * @see $openingDelimiter, $blocknameRegExp, $variablenameRegExp
*/
var $closingDelimiter = "}";
@@ -164,9 +152,9 @@
* RegExp matching a block in the template.
* Per default "sm" is used as the regexp modifier, "i" is missing.
* That means a case sensitive search is done.
- * @var string
- * @access public
- * @see $variablenameRegExp, $openingDelimiter, $closingDelimiter
+ * @var string
+ * @access public
+ * @see $variablenameRegExp, $openingDelimiter, $closingDelimiter
*/
var $blocknameRegExp = "[0-9A-Za-z_-]+";
@@ -174,83 +162,83 @@
* RegExp matching a variable placeholder in the template.
* Per default "sm" is used as the regexp modifier, "i" is missing.
* That means a case sensitive search is done.
- * @var string
- * @access public
- * @see $blocknameRegExp, $openingDelimiter, $closingDelimiter
+ * @var string
+ * @access public
+ * @see $blocknameRegExp, $openingDelimiter, $closingDelimiter
*/
var $variablenameRegExp = "[0-9A-Za-z_-]+";
/**
* RegExp used to find variable placeholder, filled by the constructor.
* @var string Looks somewhat like @(delimiter varname delimiter)@
- * @access public
- * @see IntegratedTemplate()
+ * @access public
+ * @see IntegratedTemplate()
*/
var $variablesRegExp = "";
/**
* RegExp used to strip unused variable placeholder.
- * @brother $variablesRegExp
+ * @brother $variablesRegExp
*/
var $removeVariablesRegExp = "";
/**
* Controls the handling of unknown variables, default is remove.
- * @var boolean
- * @access public
+ * @var boolean
+ * @access public
*/
var $removeUnknownVariables = true;
/**
* Controls the handling of empty blocks, default is remove.
- * @var boolean
- * @access public
+ * @var boolean
+ * @access public
*/
var $removeEmptyBlocks = true;
/**
* RegExp used to find blocks an their content, filled by the constructor.
- * @var string
- * @see IntegratedTemplate()
+ * @var string
+ * @see IntegratedTemplate()
*/
var $blockRegExp = "";
/**
* Name of the current block.
- * @var string
+ * @var string
*/
var $currentBlock = "__global__";
/**
* Content of the template.
- * @var string
+ * @var string
*/
var $template = "";
/**
* Array of all blocks and their content.
*
- * @var array
- * @see findBlocks()
+ * @var array
+ * @see findBlocks()
*/
var $blocklist = array();
/**
* Array with the parsed content of a block.
*
- * @var array
+ * @var array
*/
var $blockdata = array();
/**
* Array of variables in a block.
- * @var array
+ * @var array
*/
var $blockvariables = array();
/**
* Array of inner blocks of a block.
- * @var array
+ * @var array
*/
var $blockinner = array();
@@ -276,7 +264,7 @@
* if they are empty.
*
* @var array $touchedBlocks
- * @see touchBlock(), $removeEmptyBlocks
+ * @see touchBlock(), $removeEmptyBlocks
*/
var $touchedBlocks = array();
@@ -349,7 +337,7 @@
* class from this one.
*
* @param string File root directory, prefix for all filenames given to the
object.
- * @see setRoot()
+ * @see setRoot()
*/
function IntegratedTemplate($root = "") {
@@ -373,7 +361,8 @@
* Returns a block with all replacements done.
*
* @param string name of the block
- * @return string
+ * @return string
+ * @throws IT_Error
* @access public
* @see show()
*/
@@ -383,8 +372,8 @@
$this->parse("__global__");
if (!isset($this->blocklist[$block])) {
- $this->halt("The block '$block' was not found in the template.",
__FILE__, __LINE__);
- return true;
+ new IT_Error("The block '$block' was not found in the template.",
+__FILE__, __LINE__);
+ return "";
}
if ($this->clearCache) {
@@ -407,11 +396,12 @@
* @param string name of the block to be parsed
* @access public
* @see parseCurrentBlock()
+ * @throws IT_Error
*/
function parse($block = "__global__", $flag_recursion = false) {
if (!isset($this->blocklist[$block])) {
- $this->halt("The block '$block' was not found in the template.",
__FILE__, __LINE__);
+ return new IT_Error("The block '$block' was not found in the template.",
+__FILE__, __LINE__);
return false;
}
@@ -457,11 +447,11 @@
$placeholder = $this->openingDelimiter . "__" . $innerblock . "__" .
$this->closingDelimiter;
$outer = str_replace($placeholder, $this->blockdata[$innerblock],
$outer);
$this->blockdata[$innerblock] = "";
- }
+ }
- }
+ }
- if ($this->removeUnknownVariables)
+ if ($this->removeUnknownVariables)
$outer = preg_replace($this->removeVariablesRegExp, "", $outer);
if ($empty) {
@@ -502,7 +492,7 @@
* or with one array $variables["varname"] = "value" given setVariable($variables)
* quite like phplib templates set_var().
*
- * @param mixed string with the variable name or an array
%variables["varname"] = "value"
+ * @param mixed string with the variable name or an array
+%variables["varname"] = "value"
* @param string value of the variable or empty if $variable is an array.
* @param string prefix for variable names
* @access public
@@ -524,16 +514,15 @@
/**
* Sets the name of the current block that is the block where variables are added.
*
- * @param string name of the block
- * @return boolean false on failure, otherwise true
- * @access public
+ * @param string name of the block
+ * @return boolean false on failure, otherwise true
+ * @throws IT_Error
+ * @access public
*/
function setCurrentBlock($block = "__global__") {
- if (!isset($this->blocklist[$block])) {
- $this->halt("Can't find the block '$block' in the template.", __FILE__,
__LINE__);
- return false;
- }
+ if (!isset($this->blocklist[$block]))
+ return new IT_Error("Can't find the block '$block' in the template.",
+__FILE__, __LINE__);
$this->currentBlock = $block;
@@ -543,17 +532,16 @@
/**
* Preserves an empty block even if removeEmptyBlocks is true.
*
- * @param string name of the block
- * @return boolean false on false, otherwise true
- * @access public
- * @see $removeEmptyBlocks
+ * @param string name of the block
+ * @return boolean false on false, otherwise true
+ * @throws IT_Error
+ * @access public
+ * @see $removeEmptyBlocks
*/
function touchBlock($block) {
- if (!isset($this->blocklist[$block])) {
- $this->halt("Can't find the block '$block' in the template.", __FILE__,
__LINE__);
- return false;
- }
+ if (!isset($this->blocklist[$block]))
+ return new IT_Error("Can't find the block '$block' in the template.",
+__FILE__, __LINE__);
$this->touchedBlocks[$block] = true;
@@ -567,8 +555,8 @@
* when a new template is given. Don't use this function
* unless you know what you're doing.
*
- * @access public
- * @see free()
+ * @access public
+ * @see free()
*/
function init() {
@@ -583,8 +571,8 @@
*
* Don't use this function unless you know what you're doing.
*
- * @access public
- * @see init()
+ * @access public
+ * @see init()
*/
function free() {
@@ -607,12 +595,11 @@
* You can eighter load a template file from disk with LoadTemplatefile() or set
the
* template manually using this function.
*
- * @param string template content
- * @param boolean Unbekannte, nicht ersetzte Platzhalter entfernen?
- * @param boolean remove unknown/unused variables?
- * @param boolean remove empty blocks?
- * @see LoadTemplatefile(), $template
- * @access public
+ * @param string template content
+ * @param boolean remove unknown/unused variables?
+ * @param boolean remove empty blocks?
+ * @see LoadTemplatefile(), $template
+ * @access public
*/
function setTemplate($template, $removeUnknownVariables = true,
$removeEmptyBlocks = true) {
@@ -642,9 +629,9 @@
/**
* Reads a template file from the disk.
*
- * @param string name of the template file
- * @param bool How to handle unknown variables.
- * @param bool How to handle empty blocks.
+ * @param string name of the template file
+ * @param bool how to handle unknown variables.
+ * @param bool how to handle empty blocks.
* @access public
* @return boolean false on failure, otherwise true
* @see $template, setTemplate(), $removeUnknownVariables, $removeEmptyBlocks
@@ -727,8 +714,7 @@
* Recusively builds a list of all blocks within the template.
*
* @param string string that gets scanned
- * @access private
- * @see $blocklist
+ * @see $blocklist
*/
function findBlocks($string) {
@@ -742,7 +728,7 @@
$blockcontent = $match[2];
if (isset($this->blocklist[$blockname])) {
- $this->halt("The name of a block must be unique within a
template. Found '$blockname' twice. Unpredictable results may appear.", __FILE__,
__LINE__);
+ new IT_Error("The name of a block must be unique within a
+template. Found '$blockname' twice. Unpredictable results may appear.", __FILE__,
+__LINE__);
$this->flagBlocktrouble = true;
}
@@ -778,7 +764,7 @@
/**
* Reads a file from disk and returns its content.
* @param string Filename
- * @return string Filecontent
+ * @return string Filecontent
*/
function getFile($filename) {
@@ -788,7 +774,7 @@
$filename = $this->fileRoot . $filename;
if (!($fh = @fopen($filename, "r"))) {
- $this->halt("Can't read '$filename'.", __FILE__, __LINE__);
+ new IT_Error("Can't read '$filename'.", __FILE__, __LINE__);
return "";
}
@@ -797,32 +783,6 @@
return $content;
} // end func getFile
-
- /**
- * Error Handling function.
- * @param string error message
- * @param mixed File where the error occured
- * @param int Line where the error occured
- * @see $err
- */
- function halt($message, $file = "", $line = 0) {
-
-
- $message = sprintf("IntegratedTemplate Error: %s [File: %s, Line: %d]",
- $message,
- $file,
- $line
- );
-
- $this->err[] = $message;
-
- if ($this->printError)
- print $message;
-
- if ($this->haltOnError)
- die($message);
-
- } // end func halt
} // end class IntegratedTemplate
?>
Index: php4/pear/HTML/ITX.php
diff -u php4/pear/HTML/ITX.php:1.4 php4/pear/HTML/ITX.php:1.5
--- php4/pear/HTML/ITX.php:1.4 Wed Jan 24 03:19:28 2001
+++ php4/pear/HTML/ITX.php Thu Mar 29 13:49:15 2001
@@ -16,7 +16,7 @@
// | Authors: Ulf Wendel <[EMAIL PROTECTED]> |
// +----------------------------------------------------------------------+
//
-// $Id: ITX.php,v 1.4 2001/01/24 11:19:28 sbergmann Exp $
+// $Id: ITX.php,v 1.5 2001/03/29 21:49:15 uw Exp $
//
require_once "HTML/IT.php";
@@ -33,9 +33,10 @@
* Note that you can replace an existing block and add new blocks add runtime.
* Adding new blocks means changing a variable placeholder to a block.
*
-* @author Ulf Wendel <[EMAIL PROTECTED]>
-* @access public
-* @version $Id: ITX.php,v 1.4 2001/01/24 11:19:28 sbergmann Exp $
+* @author Ulf Wendel <[EMAIL PROTECTED]>
+* @access public
+* @version $Id: ITX.php,v 1.5 2001/03/29 21:49:15 uw Exp $
+* @package IT[X]
*/
class IntegratedTemplateExtension extends IntegratedTemplate {
@@ -151,19 +152,16 @@
*
* @param string Blockname
* @param string Blockcontent
- * @return boolean
+ * @return boolean
+ * @throws IT_Error
* @see replaceBlockfile(), addBlock(), addBlockfile()
* @access public
*/
function replaceBlock($block, $template) {
- if (!isset($this->blocklist[$block])) {
- $this->halt("The block '$block' does not exist in the template and thus
it can't be replaced.", __FILE__, __LINE__);
- return false;
- }
- if (""==$template) {
- $this->halt("No block content given.", __FILE__, __LINE__);
- return false;
- }
+ if (!isset($this->blocklist[$block]))
+ return new IT_Error("The block '$block' does not exist in the template
+and thus it can't be replaced.", __FILE__, __LINE__);
+ if ("" == $template)
+ return new IT_Error("No block content given.", __FILE__, __LINE__);
print "This function has not been coded yet.";
@@ -182,7 +180,7 @@
* @param string Name of the file that contains the blockcontent
*/
function replaceBlockfile($block, $filename) {
- return $this->replaceBlock($block, $this->getFile($filename));
+ return $this->replaceBlock($block, $this->getFile($filename));
} // end func replaceBlockfile
/**
@@ -207,33 +205,30 @@
* @param string Name of the variable placeholder, the name must be unique
within the template.
* @param string Name of the block to be added
* @param string Content of the block
- * @return boolean
- * @see addBlockfile()
- * @access public
+ * @return boolean
+ * @throws IT_Error
+ * @see addBlockfile()
+ * @access public
*/
function addBlock($placeholder, $blockname, $template) {
// Don't trust any user even if it's a programmer or yourself...
if ("" == $placeholder) {
- $this->halt("No variable placeholder given.", __FILE__, __LINE__);
- return false;
+ return new IT_Error("No variable placeholder given.", __FILE__, __LINE__);
} else if ("" == $blockname || !preg_match($this->checkblocknameRegExp,
$blockname) ) {
print $this->checkblocknameRegExp;
- $this->halt("No or invalid blockname '$blockname' given.", __FILE__,
__LINE__);
- return false;
+ return new IT_Error("No or invalid blockname '$blockname' given.",
+__FILE__, __LINE__);
} else if ("" == $template) {
- $this->halt("No block content given.", __FILE__, __LINE__);
- return false;
+ return new IT_Error("No block content given.", __FILE__, __LINE__);
} else if (isset($this->blocklist[$blockname])) {
- $this->halt("The block already exists.", __FILE__, __LINE__);
- return false;
+ return new IT_Error("The block already exists.", __FILE__, __LINE__);
}
@@ -241,8 +236,7 @@
$parents = $this->findPlaceholderBlocks($placeholder);
if (0 == count($parents)) {
- $this->halt("The variable placeholder '$placeholder' was not found in the
template.", __FILE__, __LINE__);
- return false;
+ return new IT_Error("The variable placeholder '$placeholder' was not
+found in the template.", __FILE__, __LINE__);
} else if ( count($parents) > 1 ) {
@@ -251,8 +245,7 @@
$msg .= "$parent, ";
$msg = substr($parent, -2);
- $this->halt("The variable placeholder '$placeholder' must be unique,
found in multiple blocks '$msg'.", __FILE__, __LINE__);
- return false;
+ return new IT_Error("The variable placeholder '$placeholder' must be
+unique, found in multiple blocks '$msg'.", __FILE__, __LINE__);
}
@@ -292,17 +285,18 @@
* @param string Name of the block to scan. If left out (default) all blocks
are scanned.
* @return string Name of the (first) block that contains the specified
placeholder.
* If the placeholder was not found or an error occured an empty
string is returned.
+ * @throws IT_Error
* @access public
*/
function placeholderExists($placeholder, $block = "") {
if ("" == $placeholder) {
- $this->halt("No placeholder name given.", __FILE__, __LINE__);
+ new IT_Error("No placeholder name given.", __FILE__, __LINE__);
return "";
}
if ("" != $block && !isset($this->blocklist[$block])) {
- $this->halt("Unknown block '$block'.", __FILE__, __LINE__);
+ new IT_Error("Unknown block '$block'.", __FILE__, __LINE__);
return "";
}
@@ -348,7 +342,7 @@
/**
* Checks the list of function calls in the template and calls their callback
function.
*
- * @access public
+ * @access public
*/
function performCallback() {
@@ -382,8 +376,8 @@
/**
* Returns a list of all function calls in the current template.
*
- * @return array
- * @access public
+ * @return array
+ * @access public
*/
function getFunctioncalls() {
@@ -394,9 +388,9 @@
/**
* Replaces a function call with the given replacement.
*
- * @param int Function ID
+ * @param int Function ID
* @param string Replacement
- * @access public
+ * @access public
*/
function setFunctioncontent($functionID, $replacement) {
@@ -410,15 +404,14 @@
* @param string Function name in the template
* @param string Name of the callback function
* @param string Name of the callback object
- * @return boolean False on failure.
- * @access public
+ * @return boolean False on failure.
+ * @throws IT_Error
+ * @access public
*/
function setCallbackFunction($tplfunction, $callbackfunction, $callbackobject =
"") {
- if ("" == $tplfunction || "" == $callbackfunction) {
- $this->halt("No template function ('$tplfunction') and/or no callback
function ('$callback') given.", __FILE__, __LINE__);
- return false;
- }
+ if ("" == $tplfunction || "" == $callbackfunction)
+ return new IT_Error("No template function ('$tplfunction') and/or no
+callback function ('$callback') given.", __FILE__, __LINE__);
$this->callback[$tplfunction] = array(
"function" => $callbackfunction,
Index: php4/pear/HTML/IT_Error.php
+++ php4/pear/HTML/IT_Error.php
<?php
// +----------------------------------------------------------------------+
// | PHP version 4.0 |
// +----------------------------------------------------------------------+
// | Copyright (c) 1997, 1998, 1999, 2000, 2001 The PHP Group |
// +----------------------------------------------------------------------+
// | This source file is subject to version 2.0 of the PHP license, |
// | that is bundled with this package in the file LICENSE, and is |
// | available at through the world-wide-web at |
// | http://www.php.net/license/2_02.txt. |
// | If you did not receive a copy of the PHP license and are unable to |
// | obtain it through the world-wide-web, please send a note to |
// | [EMAIL PROTECTED] so we can mail you a copy immediately. |
// +----------------------------------------------------------------------+
// | Authors: Ulf Wendel <[EMAIL PROTECTED]> |
// +----------------------------------------------------------------------+
//
// $Id: IT_Error.php,v 1.1 2001/03/29 21:49:15 uw Exp $
require_once "PEAR.php";
/**
* IT[X] Error class
*
* @package IT[X]
*/
class IT_Error extends PEAR_Error {
/**
* Prefix of all error messages.
*
* @var string
*/
var $error_message_prefix = "IntegratedTemplate Error: ";
/**
* Creates an cache error object.
*
* @param string error message
* @param string file where the error occured
* @param string linenumber where the error occured
*/
function Cache_Error($msg, $file = __FILE__, $line = __LINE__) {
$this->PEAR_Error(sprintf("%s [%s on line %d].", $msg, $file, $line));
} // end func Cache_Error
} // end class Cache_Error
?>
--
PHP CVS Mailing List (http://www.php.net/)
To unsubscribe, e-mail: [EMAIL PROTECTED]
For additional commands, e-mail: [EMAIL PROTECTED]
To contact the list administrators, e-mail: [EMAIL PROTECTED]