diff options
| author | cweiske <cweiske@b3834d28-1941-0410-a4f8-b48e95affb8f> | 2009-10-03 14:00:33 +0000 | 
|---|---|---|
| committer | cweiske <cweiske@b3834d28-1941-0410-a4f8-b48e95affb8f> | 2009-10-03 14:00:33 +0000 | 
| commit | 29422fa55379aa61a61019b832c83dab6d450264 (patch) | |
| tree | e5884ce6fed2cf1d02165a1b5667b99cd80262e5 /includes/db/postgres.php | |
| parent | b8b1d06b2d899658fae64d0de506439ca0ea067c (diff) | |
| download | semanticscuttle-29422fa55379aa61a61019b832c83dab6d450264.tar.gz semanticscuttle-29422fa55379aa61a61019b832c83dab6d450264.tar.bz2  | |
move files to new locations
git-svn-id: https://semanticscuttle.svn.sourceforge.net/svnroot/semanticscuttle/trunk@386 b3834d28-1941-0410-a4f8-b48e95affb8f
Diffstat (limited to 'includes/db/postgres.php')
| -rw-r--r-- | includes/db/postgres.php | 597 | 
1 files changed, 0 insertions, 597 deletions
diff --git a/includes/db/postgres.php b/includes/db/postgres.php deleted file mode 100644 index b5bad20..0000000 --- a/includes/db/postgres.php +++ /dev/null @@ -1,597 +0,0 @@ -<?php -/**  -* -* @package dbal_postgres -* @version $Id: postgres.php,v 1.2 2005/06/10 08:52:03 devalley Exp $ -* @copyright (c) 2005 phpBB Group  -* @license http://opensource.org/licenses/gpl-license.php GNU Public License  -* -*/ - -/** -* @ignore -*/ -if (!defined('SQL_LAYER')) -{ - -define('SQL_LAYER', 'postgresql'); - -/** -* @package dbal_postgres -* PostgreSQL Database Abstraction Layer -* Minimum Requirement is Version 7.3+ -*/ -class sql_db -{ -	var $db_connect_id; -	var $query_result; -	var $return_on_error = false; -	var $transaction = false; -	var $sql_time = 0; -	var $num_queries = 0; -	var $open_queries = array(); - -	function sql_connect($sqlserver, $sqluser, $sqlpassword, $database, $port = false, $persistency = false) -	{ -		$this->connect_string = ''; - -		if ($sqluser) -		{ -			$this->connect_string .= "user=$sqluser "; -		} - -		if ($sqlpassword) -		{ -			$this->connect_string .= "password=$sqlpassword "; -		} - -		if ($sqlserver) -		{ -			if (ereg(":", $sqlserver)) -			{ -				list($sqlserver, $sqlport) = split(":", $sqlserver); -				$this->connect_string .= "host=$sqlserver port=$sqlport "; -			} -			else -			{ -				if ($sqlserver != "localhost") -				{ -					$this->connect_string .= "host=$sqlserver "; -				} -			 -				if ($port) -				{ -					$this->connect_string .= "port=$port "; -				} -			} -		} - -		if ($database) -		{ -			$this->dbname = $database; -			$this->connect_string .= "dbname=$database"; -		} - -		$this->persistency = $persistency; - -		$this->db_connect_id = ($this->persistency) ? @pg_pconnect($this->connect_string) : @pg_connect($this->connect_string); - -		return ($this->db_connect_id) ? $this->db_connect_id : $this->sql_error(''); -	} - -	// -	// Other base methods -	// -	function sql_close() -	{ -		if (!$this->db_connect_id) -		{ -			return false; -		} - -		if ($this->transaction) -		{ -			@pg_exec($this->db_connect_id, 'COMMIT'); -		} - -		return @pg_close($this->db_connect_id); -	} - -	function sql_return_on_error($fail = false) -	{ -		$this->return_on_error = $fail; -	} - -	function sql_num_queries() -	{ -		return $this->num_queries; -	} - -	function sql_transaction($status = 'begin') -	{ -		switch ($status) -		{ -			case 'begin': -				$result = @pg_exec($this->db_connect_id, 'BEGIN'); -				$this->transaction = true; -				break; - -			case 'commit': -				$result = @pg_exec($this->db_connect_id, 'COMMIT'); -				$this->transaction = false; - -				if (!$result) -				{ -					@pg_exec($this->db_connect_id, 'ROLLBACK'); -				} -				break; - -			case 'rollback': -				$result = @pg_exec($this->db_connect_id, 'ROLLBACK'); -				$this->transaction = false; -				break; - -			default: -				$result = true; -		} - -		return $result; -	} - -	// Base query method -	function sql_query($query = '', $cache_ttl = 0) -	{ -		if ($query != '') -		{ -			global $cache; - -			// EXPLAIN only in extra debug mode -			if (defined('DEBUG_EXTRA')) -			{ -				$this->sql_report('start', $query); -			} - -			$this->query_result = ($cache_ttl && method_exists($cache, 'sql_load')) ? $cache->sql_load($query) : false; -			 -			if (!$this->query_result) -			{ -				$this->num_queries++; -				$this->last_query_text = $query; - -				if (($this->query_result = @pg_exec($this->db_connect_id, $query)) === false) -				{ -					$this->sql_error($query); -				} - -				if (defined('DEBUG_EXTRA')) -				{ -					$this->sql_report('stop', $query); -				} - -				if ($cache_ttl && method_exists($cache, 'sql_save')) -				{ -					$cache->sql_save($query, $this->query_result, $cache_ttl); -				} -			} -			else if (defined('DEBUG_EXTRA')) -			{ -				$this->sql_report('fromcache', $query); -			} -		} -		else -		{ -			return false; -		} - -		return ($this->query_result) ? $this->query_result : false; -	} - -	function sql_query_limit($query, $total, $offset = 0, $cache_ttl = 0)  -	{  -		if ($query != '')  -		{ -			$this->query_result = false;  - -			// if $total is set to 0 we do not want to limit the number of rows -			if ($total == 0) -			{ -				$total = -1; -			} - -			$query .= "\n LIMIT $total OFFSET $offset"; - -			return $this->sql_query($query, $cache_ttl);  -		}  -		else  -		{  -			return false;  -		}  -	} - -	// Idea for this from Ikonboard -	function sql_build_array($query, $assoc_ary = false) -	{ -		if (!is_array($assoc_ary)) -		{ -			return false; -		} - -		$fields = array(); -		$values = array(); -		if ($query == 'INSERT') -		{ -			foreach ($assoc_ary as $key => $var) -			{ -				$fields[] = $key; - -				if (is_null($var)) -				{ -					$values[] = 'NULL'; -				} -				elseif (is_string($var)) -				{ -					$values[] = "'" . $this->sql_escape($var) . "'"; -				} -				else -				{ -					$values[] = (is_bool($var)) ? intval($var) : $var; -				} -			} - -			$query = ' (' . implode(', ', $fields) . ') VALUES (' . implode(', ', $values) . ')'; -		} -		else if ($query == 'UPDATE' || $query == 'SELECT') -		{ -			$values = array(); -			foreach ($assoc_ary as $key => $var) -			{ -				if (is_null($var)) -				{ -					$values[] = "$key = NULL"; -				} -				elseif (is_string($var)) -				{ -					$values[] = "$key = '" . $this->sql_escape($var) . "'"; -				} -				else -				{ -					$values[] = (is_bool($var)) ? "$key = " . intval($var) : "$key = $var"; -				} -			} -			$query = implode(($query == 'UPDATE') ? ', ' : ' AND ', $values); -		} - -		return $query; -	} - -	// Other query methods -	// -	// NOTE :: Want to remove _ALL_ reliance on sql_numrows from core code ... -	//         don't want this here by a middle Milestone -	function sql_numrows($query_id = false) -	{ -		if (!$query_id) -		{ -			$query_id = $this->query_result; -		} - -		return ($query_id) ? @pg_numrows($query_id) : false; -	} - -	function sql_affectedrows($query_id = false) -	{ -		if (!$query_id) -		{ -			$query_id = $this->query_result; -		} - -		return ($query_id) ? @pg_cmdtuples($query_id) : false; -	} - -	function sql_fetchrow($query_id = false) -	{ -		global $cache; - -		if (!$query_id) -		{ -			$query_id = $this->query_result; -		} - -		if (!isset($this->rownum[$query_id])) -		{ -			$this->rownum[$query_id] = 0; -		} - -		if (isset($cache->sql_rowset[$query_id])) -		{ -			return $cache->sql_fetchrow($query_id); -		} - -		$result = @pg_fetch_array($query_id, NULL, PGSQL_ASSOC); -		 -		if ($result) -		{ -			$this->rownum[$query_id]++; -		} - -		return $result; -	} - -	function sql_fetchrowset($query_id = false) -	{ -		if (!$query_id) -		{ -			$query_id = $this->query_result; -		} - -		$result = array(); - -		if ($query_id) -		{ -			unset($this->rowset[$query_id]); -			unset($this->row[$query_id]); - -			$result = array(); -			while ($this->rowset[$query_id] = $this->sql_fetchrow($query_id)) -			{ -				$result[] = $this->rowset[$query_id]; -			} -			return $result; -		} - -		return false; -	} - -	function sql_fetchfield($field, $rownum = -1, $query_id = false) -	{ -		if (!$query_id) -		{ -			$query_id = $this->query_result; -		} - -		if ($query_id) -		{ -			if ($rownum > -1) -			{ -				if (@function_exists('pg_result_seek')) -				{ -					@pg_result_seek($query_id, $rownum); -					$row = @pg_fetch_assoc($query_id); -					$result = isset($row[$field]) ? $row[$field] : false; -				} -				else -				{ -					$this->sql_rowseek($offset, $query_id); -					$row = $this->sql_fetchrow($query_id); -					$result = isset($row[$field]) ? $row[$field] : false; -				} -			} -			else -			{ -				if (empty($this->row[$query_id]) && empty($this->rowset[$query_id])) -				{ -					if ($this->sql_fetchrow($query_id)) -					{ -						$result = $this->row[$query_id][$field]; -					} -				} -				else -				{ -					if ($this->rowset[$query_id]) -					{ -						$result = $this->rowset[$query_id][$field]; -					} -					elseif ($this->row[$query_id]) -					{ -						$result = $this->row[$query_id][$field]; -					} -				} -			} -			return $result; -		} -		return false; -	} - -	function sql_rowseek($offset, $query_id = false) -	{ -		if (!$query_id) -		{ -			$query_id = $this->query_result; -		} - -		if ($query_id) -		{ -			if ($offset > -1) -			{ -				if (@function_exists('pg_result_seek')) -				{ -					@pg_result_seek($query_id, $rownum); -				} -				else -				{ -					for ($i = $this->rownum[$query_id]; $i < $offset; $i++) -					{ -						$this->sql_fetchrow($query_id); -					} -				} -				return true; -			} -			else -			{ -				return false; -			} -		} - -		return false; -	} - -	function sql_nextid() -	{ -		$query_id = $this->query_result; - -		if ($query_id && $this->last_query_text != '') -		{ -			if (preg_match("/^INSERT[\t\n ]+INTO[\t\n ]+([a-z0-9\_\-]+)/is", $this->last_query_text, $tablename)) -			{ -				$query = "SELECT currval('" . $tablename[1] . "_id_seq') AS last_value"; -				$temp_q_id =  @pg_exec($this->db_connect_id, $query); -				if (!$temp_q_id) -				{ -					return false; -				} - -				$temp_result = @pg_fetch_array($temp_q_id, NULL, PGSQL_ASSOC); - -				return ($temp_result) ? $temp_result['last_value'] : false; -			} -		} - -		return false; -	} - -	function sql_freeresult($query_id = false) -	{ -		if (!$query_id) -		{ -			$query_id = $this->query_result; -		} - -		return (is_resource($query_id)) ? @pg_freeresult($query_id) : false; -	} - -	function sql_escape($msg) -	{ -		return str_replace("'", "''", str_replace('\\', '\\\\', $msg)); -	} - -	function sql_error($sql = '') -	{ -		if (!$this->return_on_error) -		{ -			$this_page = (isset($_SERVER['PHP_SELF']) && !empty($_SERVER['PHP_SELF'])) ? $_SERVER['PHP_SELF'] : $_ENV['PHP_SELF']; -			$this_page .= '&' . ((isset($_SERVER['QUERY_STRING']) && !empty($_SERVER['QUERY_STRING'])) ? $_SERVER['QUERY_STRING'] : (isset($_ENV['QUERY_STRING']) ? $_ENV['QUERY_STRING'] : '')); - -			$message = '<u>SQL ERROR</u> [ ' . SQL_LAYER . ' ]<br /><br />' . @pg_errormessage() . '<br /><br /><u>CALLING PAGE</u><br /><br />'  . htmlspecialchars($this_page) . (($sql != '') ? '<br /><br /><u>SQL</u><br /><br />' . $sql : '') . '<br />'; - -			if ($this->transaction) -			{ -				$this->sql_transaction('rollback'); -			} -			 -			trigger_error($message, E_USER_ERROR); -		} - -		$result = array( -			'message'	=> @pg_errormessage(), -			'code'		=> '' -		); - -		return $result; -	} - -	function sql_report($mode, $query = '') -	{ -		if (empty($_GET['explain'])) -		{ -			return; -		} - -		global $cache, $starttime, $phpbb_root_path; -		static $curtime, $query_hold, $html_hold; -		static $sql_report = ''; -		static $cache_num_queries = 0; - -		if (!$query && !empty($query_hold)) -		{ -			$query = $query_hold; -		} - -		switch ($mode) -		{ -			case 'display': -				if (!empty($cache)) -				{ -					$cache->unload(); -				} -				$this->sql_close(); - -				$mtime = explode(' ', microtime()); -				$totaltime = $mtime[0] + $mtime[1] - $starttime; - -				echo '<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN"><html><head><meta http-equiv="Content-Type" content="text/html; charset=iso-8869-1"><meta http-equiv="Content-Style-Type" content="text/css"><link rel="stylesheet" href="' . $phpbb_root_path . 'adm/subSilver.css" type="text/css"><style type="text/css">' . "\n"; -				echo 'th { background-image: url(\'' . $phpbb_root_path . 'adm/images/cellpic3.gif\') }' . "\n"; -				echo 'td.cat	{ background-image: url(\'' . $phpbb_root_path . 'adm/images/cellpic1.gif\') }' . "\n"; -				echo '</style><title>' . $msg_title . '</title></head><body>'; -				echo '<table width="100%" cellspacing="0" cellpadding="0" border="0"><tr><td><a href="' . htmlspecialchars(preg_replace('/&explain=([^&]*)/', '', $_SERVER['REQUEST_URI'])) . '"><img src="' . $phpbb_root_path . 'adm/images/header_left.jpg" width="200" height="60" alt="phpBB Logo" title="phpBB Logo" border="0"/></a></td><td width="100%" background="' . $phpbb_root_path . 'adm/images/header_bg.jpg" height="60" align="right" nowrap="nowrap"><span class="maintitle">SQL Report</span>      </td></tr></table><br clear="all"/><table width="95%" cellspacing="1" cellpadding="4" border="0" align="center"><tr><td height="40" align="center" valign="middle"><b>Page generated in ' . round($totaltime, 4) . " seconds with {$this->num_queries} queries" . (($cache_num_queries) ? " + $cache_num_queries " . (($cache_num_queries == 1) ? 'query' : 'queries') . ' returning data from cache' : '') . '</b></td></tr><tr><td align="center" nowrap="nowrap">Time spent on MySQL queries: <b>' . round($this->sql_time, 5) . 's</b> | Time spent on PHP: <b>' . round($totaltime - $this->sql_time, 5) . 's</b></td></tr></table><table width="95%" cellspacing="1" cellpadding="4" border="0" align="center"><tr><td>'; -				echo $sql_report; -				echo '</td></tr></table><br /></body></html>'; -				exit; -				break; - -			case 'start': -				$query_hold = $query; -				$html_hold = ''; - -				$curtime = explode(' ', microtime()); -				$curtime = $curtime[0] + $curtime[1]; -				break; - -			case 'fromcache': -				$endtime = explode(' ', microtime()); -				$endtime = $endtime[0] + $endtime[1]; - -				$result = @pg_exec($this->db_connect_id, $query); -				while ($void = @pg_fetch_array($result, NULL, PGSQL_ASSOC)) -				{ -					// Take the time spent on parsing rows into account -				} -				$splittime = explode(' ', microtime()); -				$splittime = $splittime[0] + $splittime[1]; - -				$time_cache = $endtime - $curtime; -				$time_db = $splittime - $endtime; -				$color = ($time_db > $time_cache) ? 'green' : 'red'; - -				$sql_report .= '<hr width="100%"/><br /><table class="bg" width="100%" cellspacing="1" cellpadding="4" border="0"><tr><th>Query results obtained from the cache</th></tr><tr><td class="row1"><textarea style="font-family:\'Courier New\',monospace;width:100%" rows="5">' . preg_replace('/\t(AND|OR)(\W)/', "\$1\$2", htmlspecialchars(preg_replace('/[\s]*[\n\r\t]+[\n\r\s\t]*/', "\n", $query))) . '</textarea></td></tr></table><p align="center">'; - -				$sql_report .= 'Before: ' . sprintf('%.5f', $curtime - $starttime) . 's | After: ' . sprintf('%.5f', $endtime - $starttime) . 's | Elapsed [cache]: <b style="color: ' . $color . '">' . sprintf('%.5f', ($time_cache)) . 's</b> | Elapsed [db]: <b>' . sprintf('%.5f', $time_db) . 's</b></p>'; - -				// Pad the start time to not interfere with page timing -				$starttime += $time_db; - -				@pg_freeresult($result); -				$cache_num_queries++; -				break; - -			case 'stop': -				$endtime = explode(' ', microtime()); -				$endtime = $endtime[0] + $endtime[1]; - -				$sql_report .= '<hr width="100%"/><br /><table class="bg" width="100%" cellspacing="1" cellpadding="4" border="0"><tr><th>Query #' . $this->num_queries . '</th></tr><tr><td class="row1"><textarea style="font-family:\'Courier New\',monospace;width:100%" rows="5">' . preg_replace('/\t(AND|OR)(\W)/', "\$1\$2", htmlspecialchars(preg_replace('/[\s]*[\n\r\t]+[\n\r\s\t]*/', "\n", $query))) . '</textarea></td></tr></table> ' . $html_hold . '<p align="center">'; - -				if ($this->query_result) -				{ -					if (preg_match('/^(UPDATE|DELETE|REPLACE)/', $query)) -					{ -						$sql_report .= "Affected rows: <b>" . $this->sql_affectedrows($this->query_result) . '</b> | '; -					} -					$sql_report .= 'Before: ' . sprintf('%.5f', $curtime - $starttime) . 's | After: ' . sprintf('%.5f', $endtime - $starttime) . 's | Elapsed: <b>' . sprintf('%.5f', $endtime - $curtime) . 's</b>'; -				} -				else -				{ -					$error = $this->sql_error(); -					$sql_report .= '<b style="color: red">FAILED</b> - ' . SQL_LAYER . ' Error ' . $error['code'] . ': ' . htmlspecialchars($error['message']); -				} - -				$sql_report .= '</p>'; - -				$this->sql_time += $endtime - $curtime; -				break; -		} -	} - -} // class ... db_sql - -} // if ... defined - -?>
\ No newline at end of file  | 
