| 123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165 | 
							- <?php
 
- /*
 
-  * Project:	template_lite, a smarter template engine
 
-  * File:	class.config.php
 
-  * Author:	Paul Lockaby <paul@paullockaby.com>, Mark Dickenson <akapanamajack@sourceforge.net>
 
-  * Copyright:	2003,2004,2005 by Paul Lockaby, 2005,2006 Mark Dickenson
 
-  *
 
-  * 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
 
-  *
 
-  * The latest version of template_lite can be obtained from:
 
-  * http://templatelite.sourceforge.net
 
-  *
 
-  */
 
- class config {
 
- 	var $overwrite 			= false;	// overwrite variables of the same name? if false, an array will be created
 
- 	var $booleanize			= true;		// turn true/false, yes/no, on/off, into 1/0
 
- 	var $fix_new_lines		= true;		// turns \r\n into \n?
 
- 	var $read_hidden		= true;		// read hidden sections?
 
- 	var $_db_qstr_regexp		= null;
 
- 	var $_bool_true_regexp		= null;
 
- 	var $_bool_false_regexp		= null;
 
- 	var $_qstr_regexp		= null;
 
- 	function config()
 
- 	{
 
- 		$this->_db_qstr_regexp = '"[^"\\\\]*(?:\\\\.[^"\\\\]*)*"';
 
- 		$this->_bool_true_regexp = 'true|yes|on';
 
- 		$this->_bool_false_regexp = 'false|no|off';
 
- 		$this->_qstr_regexp = '(?:' . $this->_db_qstr_regexp . '|' . $this->_bool_true_regexp . '|' . $this->_bool_false_regexp . ')';
 
- 	}
 
- 	function config_load($file, $section_name = null, $var_name = null)
 
- 	{
 
- 		$_result = array();
 
- 		$contents = file_get_contents($file);
 
- 		if (empty($contents))
 
- 		{
 
- 			die("Could not open $file");
 
- 		}
 
- 		// insert new line into beginning of file
 
- 		$contents = "\n" . $contents;
 
- 		// fix new-lines
 
- 		if ($this->fix_new_lines)
 
- 		{
 
- 			$contents = str_replace("\r\n","\n",$contents);
 
- 		}
 
- 		// match globals
 
- 		if (preg_match("/^(.*?)(\n\[|\Z)/s", $contents, $match))
 
- 		{
 
- 			$_result["globals"] = $this->_parse_config_section($match[1]);
 
- 		}
 
- 		// match sections
 
- 		if (preg_match_all("/^\[(.*?)\]/m", $contents, $match))
 
- 		{
 
- 			foreach ($match[1] as $section)
 
- 			{
 
- 				if ($section{0} == '.' && !$this->read_hidden)
 
- 				{
 
- 					continue;
 
- 				}
 
- 				preg_match("/\[".preg_quote($section)."\](.*?)(\n\[|\Z)/s",$contents,$match);
 
- 				if ($section{0} == '.')
 
- 				{
 
- 					$section = substr($section, 1);
 
- 				}
 
- 				$_result[$section] = $this->_parse_config_section($match[1]);
 
- 			}
 
- 		}
 
- 		if (!empty($var_name))
 
- 		{
 
- 			if (empty($section_name))
 
- 			{
 
- 				return $_result["globals"][$var_name];
 
- 			}
 
- 			else
 
- 			{
 
- 				if(isset($_result[$section_name][$var_name]))
 
- 				{
 
- 					return $_result[$section_name][$var_name];
 
- 				}
 
- 				else
 
- 				{
 
- 					return array();
 
- 				}
 
- 			}
 
- 		}
 
- 		else
 
- 		{
 
- 			if (empty($section_name))
 
- 			{
 
- 				return $_result;
 
- 			}
 
- 			else
 
- 			{
 
- 				if(isset($_result[$section_name]))
 
- 				{
 
- 					return $_result[$section_name];
 
- 				}
 
- 				else
 
- 				{
 
- 					return array();
 
- 				}
 
- 			}
 
- 		}
 
- 	}
 
- 	function _parse_config_section($body)
 
- 	{
 
- 		$_result = array();
 
- 		preg_match_all('!(\n\s*[a-zA-Z0-9_]+)\s*=\s*(' . $this->_qstr_regexp . ')!s', $body, $ini);
 
- 		$keys = $ini[1];
 
- 		$values = $ini[2];
 
- 		for($i = 0, $for_max = count($ini[0]); $i < $for_max; $i++)
 
- 		{
 
- 			if ($this->booleanize)
 
- 			{
 
- 				if (preg_match('/^(' . $this->_bool_true_regexp . ')$/i', $values[$i]))
 
- 				{
 
- 					$values[$i] = true;
 
- 				}
 
- 				elseif (preg_match('/^(' . $this->_bool_false_regexp . ')$/i', $values[$i]))
 
- 				{
 
- 					$values[$i] = false;
 
- 				}
 
- 			}
 
- 			if (!is_numeric($values[$i]) && !is_bool($values[$i]))
 
- 			{
 
- 				$values[$i] = str_replace("\n",'',stripslashes(substr($values[$i], 1, -1)));
 
- 			}
 
- 			if ($this->overwrite || !isset($_result[trim($keys[$i])]))
 
- 			{
 
- 				$_result[trim($keys[$i])] = $values[$i];
 
- 			}
 
- 			else
 
- 			{
 
- 				if (!is_array($_result[trim($keys[$i])]))
 
- 				{
 
- 					$_result[trim($keys[$i])] = array($_result[trim($keys[$i])]);
 
- 				}
 
- 				$_result[trim($keys[$i])][] = $values[$i];
 
- 			}
 
- 		}
 
- 		return $_result;
 
- 	}
 
- }
 
- ?>
 
 
  |