You can subscribe to this list here.
| 2001 |
Jan
|
Feb
|
Mar
|
Apr
|
May
|
Jun
|
Jul
(34) |
Aug
(215) |
Sep
(180) |
Oct
(135) |
Nov
(105) |
Dec
(81) |
|---|---|---|---|---|---|---|---|---|---|---|---|---|
| 2002 |
Jan
(76) |
Feb
(22) |
Mar
(154) |
Apr
(149) |
May
(128) |
Jun
(94) |
Jul
(14) |
Aug
(24) |
Sep
(77) |
Oct
(52) |
Nov
(22) |
Dec
(6) |
| 2003 |
Jan
(4) |
Feb
(10) |
Mar
(6) |
Apr
(29) |
May
(10) |
Jun
(37) |
Jul
(39) |
Aug
(13) |
Sep
(23) |
Oct
(3) |
Nov
(7) |
Dec
(2) |
| 2004 |
Jan
|
Feb
(10) |
Mar
(4) |
Apr
|
May
(35) |
Jun
(4) |
Jul
(17) |
Aug
(6) |
Sep
(14) |
Oct
(18) |
Nov
(2) |
Dec
(14) |
| 2005 |
Jan
(9) |
Feb
(30) |
Mar
(6) |
Apr
|
May
(38) |
Jun
(23) |
Jul
(21) |
Aug
(76) |
Sep
(50) |
Oct
(51) |
Nov
(13) |
Dec
|
|
From: Benjamin C. <bc...@us...> - 2002-09-13 18:07:55
|
Update of /cvsroot/phpbt/phpbt/inc/pear In directory usw-pr-cvs1:/tmp/cvs-serv10534/inc/pear Added Files: DB.php PEAR.php Log Message: Adding pear from php 4.2.3 distribution. This will help solve one of the primary installation problems of not being able to load pear. --- NEW FILE: DB.php --- <?php /* vim: set expandtab tabstop=4 shiftwidth=4: */ // +----------------------------------------------------------------------+ // | PHP Version 4 | // +----------------------------------------------------------------------+ // | Copyright (c) 1997-2002 The PHP Group | // +----------------------------------------------------------------------+ // | This source file is subject to version 2.02 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 | // | li...@ph... so we can mail you a copy immediately. | // +----------------------------------------------------------------------+ // | Authors: Stig Bakken <ss...@fa...> | // | Tomas V.V.Cox <co...@id...> | // +----------------------------------------------------------------------+ // // $Id: DB.php,v 1.1 2002/09/13 18:07:51 bcurtis Exp $ // // Database independent query interface. // require_once "PEAR.php"; /* * The method mapErrorCode in each DB_dbtype implementation maps * native error codes to one of these. * * If you add an error code here, make sure you also add a textual * version of it in DB::errorMessage(). */ define("DB_OK", 1); define("DB_ERROR", -1); define("DB_ERROR_SYNTAX", -2); define("DB_ERROR_CONSTRAINT", -3); define("DB_ERROR_NOT_FOUND", -4); define("DB_ERROR_ALREADY_EXISTS", -5); define("DB_ERROR_UNSUPPORTED", -6); define("DB_ERROR_MISMATCH", -7); define("DB_ERROR_INVALID", -8); define("DB_ERROR_NOT_CAPABLE", -9); define("DB_ERROR_TRUNCATED", -10); define("DB_ERROR_INVALID_NUMBER", -11); define("DB_ERROR_INVALID_DATE", -12); define("DB_ERROR_DIVZERO", -13); define("DB_ERROR_NODBSELECTED", -14); define("DB_ERROR_CANNOT_CREATE", -15); define("DB_ERROR_CANNOT_DELETE", -16); define("DB_ERROR_CANNOT_DROP", -17); define("DB_ERROR_NOSUCHTABLE", -18); define("DB_ERROR_NOSUCHFIELD", -19); define("DB_ERROR_NEED_MORE_DATA", -20); define("DB_ERROR_NOT_LOCKED", -21); define("DB_ERROR_VALUE_COUNT_ON_ROW", -22); define("DB_ERROR_INVALID_DSN", -23); define("DB_ERROR_CONNECT_FAILED", -24); define("DB_ERROR_EXTENSION_NOT_FOUND",-25); define("DB_ERROR_NOSUCHDB", -25); define("DB_ERROR_ACCESS_VIOLATION", -26); /* * Warnings are not detected as errors by DB::isError(), and are not * fatal. You can detect whether an error is in fact a warning with * DB::isWarning(). */ define('DB_WARNING', -1000); define('DB_WARNING_READ_ONLY', -1001); /* * These constants are used when storing information about prepared * statements (using the "prepare" method in DB_dbtype). * * The prepare/execute model in DB is mostly borrowed from the ODBC * extension, in a query the "?" character means a scalar parameter. * There are two extensions though, a "&" character means an opaque * parameter. An opaque parameter is simply a file name, the real * data are in that file (useful for putting uploaded files into your * database and such). The "!" char means a parameter that must be * left as it is. * They modify the quote behavoir: * DB_PARAM_SCALAR (?) => 'original string quoted' * DB_PARAM_OPAQUE (&) => 'string from file quoted' * DB_PARAM_MISC (!) => original string */ define('DB_PARAM_SCALAR', 1); define('DB_PARAM_OPAQUE', 2); define('DB_PARAM_MISC', 3); /* * These constants define different ways of returning binary data * from queries. Again, this model has been borrowed from the ODBC * extension. * * DB_BINMODE_PASSTHRU sends the data directly through to the browser * when data is fetched from the database. * DB_BINMODE_RETURN lets you return data as usual. * DB_BINMODE_CONVERT returns data as well, only it is converted to * hex format, for example the string "123" would become "313233". */ define('DB_BINMODE_PASSTHRU', 1); define('DB_BINMODE_RETURN', 2); define('DB_BINMODE_CONVERT', 3); /** * This is a special constant that tells DB the user hasn't specified * any particular get mode, so the default should be used. */ define('DB_FETCHMODE_DEFAULT', 0); /** * Column data indexed by numbers, ordered from 0 and up */ define('DB_FETCHMODE_ORDERED', 1); /** * Column data indexed by column names */ define('DB_FETCHMODE_ASSOC', 2); /** * Column data as object properties */ define('DB_FETCHMODE_OBJECT', 3); /** * For multi-dimensional results: normally the first level of arrays * is the row number, and the second level indexed by column number or name. * DB_FETCHMODE_FLIPPED switches this order, so the first level of arrays * is the column name, and the second level the row number. */ define('DB_FETCHMODE_FLIPPED', 4); /* for compatibility */ define('DB_GETMODE_ORDERED', DB_FETCHMODE_ORDERED); define('DB_GETMODE_ASSOC', DB_FETCHMODE_ASSOC); define('DB_GETMODE_FLIPPED', DB_FETCHMODE_FLIPPED); /** * these are constants for the tableInfo-function * they are bitwised or'ed. so if there are more constants to be defined * in the future, adjust DB_TABLEINFO_FULL accordingly */ define('DB_TABLEINFO_ORDER', 1); define('DB_TABLEINFO_ORDERTABLE', 2); define('DB_TABLEINFO_FULL', 3); /** * The main "DB" class is simply a container class with some static * methods for creating DB objects as well as some utility functions * common to all parts of DB. * * The object model of DB is as follows (indentation means inheritance): * * DB The main DB class. This is simply a utility class * with some "static" methods for creating DB objects as * well as common utility functions for other DB classes. * * DB_common The base for each DB implementation. Provides default * | implementations (in OO lingo virtual methods) for * | the actual DB implementations as well as a bunch of * | query utility functions. * | * +-DB_mysql The DB implementation for MySQL. Inherits DB_common. * When calling DB::factory or DB::connect for MySQL * connections, the object returned is an instance of this * class. * * @package DB * @author Stig Bakken <ss...@fa...> * @since PHP 4.0 */ class DB { /** * Create a new DB connection object for the specified database * type * * @param string $type database type, for example "mysql" * * @return mixed a newly created DB object, or a DB error code on * error * * access public */ function &factory($type) { @include_once("DB/${type}.php"); $classname = "DB_${type}"; if (!class_exists($classname)) { return PEAR::raiseError(null, DB_ERROR_NOT_FOUND, null, null, null, 'DB_Error', true); } @$obj =& new $classname; return $obj; } /** * Create a new DB connection object and connect to the specified * database * * @param mixed $dsn "data source name", see the DB::parseDSN * method for a description of the dsn format. Can also be * specified as an array of the format returned by DB::parseDSN. * * @param mixed $options An associative array of option names and * their values. For backwards compatibility, this parameter may * also be a boolean that tells whether the connection should be * persistent. See DB_common::setOption for more information on * connection options. * * @return mixed a newly created DB connection object, or a DB * error object on error * * @see DB::parseDSN * @see DB::isError * @see DB_common::setOption */ function &connect($dsn, $options = false) { if (is_array($dsn)) { $dsninfo = $dsn; } else { $dsninfo = DB::parseDSN($dsn); } $type = $dsninfo["phptype"]; if (is_array($options) && isset($options["debug"]) && $options["debug"] >= 2) { // expose php errors with sufficient debug level include_once "DB/${type}.php"; } else { @include_once "DB/${type}.php"; } $classname = "DB_${type}"; if (!class_exists($classname)) { return PEAR::raiseError(null, DB_ERROR_NOT_FOUND, null, null, null, 'DB_Error', true); } @$obj =& new $classname; if (is_array($options)) { foreach ($options as $option => $value) { $test = $obj->setOption($option, $value); if (DB::isError($test)) { return $test; } } } else { $obj->setOption('persistent', $options); } $err = $obj->connect($dsninfo, $obj->getOption('persistent')); if (DB::isError($err)) { $err->addUserInfo($dsn); return $err; } return $obj; } /** * Return the DB API version * * @return int the DB API version number * * @access public */ function apiVersion() { return 2; } /** * Tell whether a result code from a DB method is an error * * @param $value int result code * * @return bool whether $value is an error * * @access public */ function isError($value) { return (is_object($value) && (get_class($value) == 'db_error' || is_subclass_of($value, 'db_error'))); } /** * Tell whether a query is a data manipulation query (insert, * update or delete) or a data definition query (create, drop, * alter, grant, revoke). * * @access public * * @param string $query the query * * @return boolean whether $query is a data manipulation query */ function isManip($query) { $manips = 'INSERT|UPDATE|DELETE|'.'REPLACE|CREATE|DROP|'. 'ALTER|GRANT|REVOKE|'.'LOCK|UNLOCK'; if (preg_match('/^\s*"?('.$manips.')\s+/i', $query)) { return true; } return false; } /** * Tell whether a result code from a DB method is a warning. * Warnings differ from errors in that they are generated by DB, * and are not fatal. * * @param mixed $value result value * * @return boolean whether $value is a warning * * @access public */ function isWarning($value) { return (is_object($value) && (get_class($value) == "db_warning" || is_subclass_of($value, "db_warning"))); } /** * Return a textual error message for a DB error code * * @param integer $value error code * * @return string error message, or false if the error code was * not recognized */ function errorMessage($value) { static $errorMessages; if (!isset($errorMessages)) { $errorMessages = array( DB_ERROR => 'unknown error', DB_ERROR_ALREADY_EXISTS => 'already exists', DB_ERROR_CANNOT_CREATE => 'can not create', DB_ERROR_CANNOT_DELETE => 'can not delete', DB_ERROR_CANNOT_DROP => 'can not drop', DB_ERROR_CONSTRAINT => 'constraint violation', DB_ERROR_DIVZERO => 'division by zero', DB_ERROR_INVALID => 'invalid', DB_ERROR_INVALID_DATE => 'invalid date or time', DB_ERROR_INVALID_NUMBER => 'invalid number', DB_ERROR_MISMATCH => 'mismatch', DB_ERROR_NODBSELECTED => 'no database selected', DB_ERROR_NOSUCHFIELD => 'no such field', DB_ERROR_NOSUCHTABLE => 'no such table', DB_ERROR_NOT_CAPABLE => 'DB backend not capable', DB_ERROR_NOT_FOUND => 'not found', DB_ERROR_NOT_LOCKED => 'not locked', DB_ERROR_SYNTAX => 'syntax error', DB_ERROR_UNSUPPORTED => 'not supported', DB_ERROR_VALUE_COUNT_ON_ROW => 'value count on row', DB_ERROR_INVALID_DSN => 'invalid DSN', DB_ERROR_CONNECT_FAILED => 'connect failed', DB_OK => 'no error', DB_WARNING => 'unknown warning', DB_WARNING_READ_ONLY => 'read only', DB_ERROR_NEED_MORE_DATA => 'insufficient data supplied', DB_ERROR_EXTENSION_NOT_FOUND=> 'extension not found', DB_ERROR_NOSUCHDB => 'no such database', DB_ERROR_ACCESS_VIOLATION => 'insufficient permissions' ); } if (DB::isError($value)) { $value = $value->getCode(); } return isset($errorMessages[$value]) ? $errorMessages[$value] : $errorMessages[DB_ERROR]; } /** * Parse a data source name * * A array with the following keys will be returned: * phptype: Database backend used in PHP (mysql, odbc etc.) * dbsyntax: Database used with regards to SQL syntax etc. * protocol: Communication protocol to use (tcp, unix etc.) * hostspec: Host specification (hostname[:port]) * database: Database to use on the DBMS server * username: User name for login * password: Password for login * * The format of the supplied DSN is in its fullest form: * * phptype(dbsyntax)://username:password@protocol+hostspec/database * * Most variations are allowed: * * phptype://username:password@protocol+hostspec:110//usr/db_file.db * phptype://username:password@hostspec/database_name * phptype://username:password@hostspec * phptype://username@hostspec * phptype://hostspec/database * phptype://hostspec * phptype(dbsyntax) * phptype * * @param string $dsn Data Source Name to be parsed * * @return array an associative array * * @author Tomas V.V.Cox <co...@id...> */ function parseDSN($dsn) { if (is_array($dsn)) { return $dsn; } $parsed = array( 'phptype' => false, 'dbsyntax' => false, 'username' => false, 'password' => false, 'protocol' => false, 'hostspec' => false, 'port' => false, 'socket' => false, 'database' => false ); // Find phptype and dbsyntax if (($pos = strpos($dsn, '://')) !== false) { $str = substr($dsn, 0, $pos); $dsn = substr($dsn, $pos + 3); } else { $str = $dsn; $dsn = NULL; } // Get phptype and dbsyntax // $str => phptype(dbsyntax) if (preg_match('|^(.+?)\((.*?)\)$|', $str, $arr)) { $parsed['phptype'] = $arr[1]; $parsed['dbsyntax'] = (empty($arr[2])) ? $arr[1] : $arr[2]; } else { $parsed['phptype'] = $str; $parsed['dbsyntax'] = $str; } if (empty($dsn)) { return $parsed; } // Get (if found): username and password // $dsn => username:password@protocol+hostspec/database if (($at = strrpos($dsn,'@')) !== false) { $str = substr($dsn, 0, $at); $dsn = substr($dsn, $at + 1); if (($pos = strpos($str, ':')) !== false) { $parsed['username'] = urldecode(substr($str, 0, $pos)); $parsed['password'] = urldecode(substr($str, $pos + 1)); } else { $parsed['username'] = urldecode($str); } } // Find protocol and hostspec // $dsn => proto(proto_opts)/database if (preg_match('|^(.+?)\((.*?)\)/?(.*?)$|', $dsn, $match)) { $proto = $match[1]; $proto_opts = (!empty($match[2])) ? $match[2] : false; $dsn = $match[3]; // $dsn => protocol+hostspec/database (old format) } else { if (strpos($dsn, '+') !== false) { list($proto, $dsn) = explode('+', $dsn, 2); } if (strpos($dsn, '/') !== false) { list($proto_opts, $dsn) = explode('/', $dsn, 2); } else { $proto_opts = $dsn; $dsn = null; } } // process the different protocol options $parsed['protocol'] = (!empty($proto)) ? $proto : 'tcp'; $proto_opts = urldecode($proto_opts); if ($parsed['protocol'] == 'tcp') { if (strpos($proto_opts, ':') !== false) { list($parsed['hostspec'], $parsed['port']) = explode(':', $proto_opts); } else { $parsed['hostspec'] = $proto_opts; } } elseif ($parsed['protocol'] == 'unix') { $parsed['socket'] = $proto_opts; } // Get dabase if any // $dsn => database if (!empty($dsn)) { // /database if (($pos = strpos($dsn, '?')) === false) { $parsed['database'] = $dsn; // /database?param1=value1¶m2=value2 } else { $parsed['database'] = substr($dsn, 0, $pos); $dsn = substr($dsn, $pos + 1); if (strpos($dsn, '&') !== false) { $opts = explode('&', $dsn); } else { // database?param1=value1 $opts = array($dsn); } foreach ($opts as $opt) { list($key, $value) = explode('=', $opt); if (!isset($parsed[$key])) { // don't allow params overwrite $parsed[$key] = urldecode($value); } } } } return $parsed; } /** * Load a PHP database extension if it is not loaded already. * * @access public * * @param string $name the base name of the extension (without the .so or * .dll suffix) * * @return boolean true if the extension was already or successfully * loaded, false if it could not be loaded */ function assertExtension($name) { if (!extension_loaded($name)) { $dlext = OS_WINDOWS ? '.dll' : '.so'; @dl($name . $dlext); } return extension_loaded($name); } } /** * DB_Error implements a class for reporting portable database error * messages. * * @package DB * @author Stig Bakken <ss...@fa...> */ class DB_Error extends PEAR_Error { /** * DB_Error constructor. * * @param mixed $code DB error code, or string with error message. * @param integer $mode what "error mode" to operate in * @param integer $level what error level to use for $mode & PEAR_ERROR_TRIGGER * @param smixed $debuginfo additional debug info, such as the last query * * @access public * * @see PEAR_Error */ function DB_Error($code = DB_ERROR, $mode = PEAR_ERROR_RETURN, $level = E_USER_NOTICE, $debuginfo = null) { if (is_int($code)) { $this->PEAR_Error('DB Error: ' . DB::errorMessage($code), $code, $mode, $level, $debuginfo); } else { $this->PEAR_Error("DB Error: $code", DB_ERROR, $mode, $level, $debuginfo); } } } /** * DB_Warning implements a class for reporting portable database * warning messages. * * @package DB * @author Stig Bakken <ss...@fa...> */ class DB_Warning extends PEAR_Error { /** * DB_Warning constructor. * * @param mixed $code DB error code, or string with error message. * @param integer $mode what "error mode" to operate in * @param integer $level what error level to use for $mode == PEAR_ERROR_TRIGGER * @param mmixed $debuginfo additional debug info, such as the last query * * @access public * * @see PEAR_Error */ function DB_Warning($code = DB_WARNING, $mode = PEAR_ERROR_RETURN, $level = E_USER_NOTICE, $debuginfo = null) { if (is_int($code)) { $this->PEAR_Error('DB Warning: ' . DB::errorMessage($code), $code, $mode, $level, $debuginfo); } else { $this->PEAR_Error("DB Warning: $code", 0, $mode, $level, $debuginfo); } } } /** * This class implements a wrapper for a DB result set. * A new instance of this class will be returned by the DB implementation * after processing a query that returns data. * * @package DB * @author Stig Bakken <ss...@fa...> */ class DB_result { var $dbh; var $result; var $row_counter = null; /** * for limit queries, the row to start fetching * @var integer */ var $limit_from = null; /** * for limit queries, the number of rows to fetch * @var integer */ var $limit_count = null; /** * DB_result constructor. * @param resource $dbh DB object reference * @param resource $result result resource id */ function DB_result(&$dbh, $result) { $this->dbh = &$dbh; $this->result = $result; } /** * Fetch and return a row of data (it uses driver->fetchInto for that) * @param int $fetchmode format of fetched row * @param int $rownum the row number to fetch * * @return array a row of data, NULL on no more rows or PEAR_Error on error * * @access public */ function fetchRow($fetchmode = DB_FETCHMODE_DEFAULT, $rownum=null) { if ($fetchmode === DB_FETCHMODE_DEFAULT) { $fetchmode = $this->dbh->fetchmode; } if ($fetchmode === DB_FETCHMODE_OBJECT) { $fetchmode = DB_FETCHMODE_ASSOC; $object_class = $this->dbh->fetchmode_object_class; } if ($this->limit_from !== null) { if ($this->row_counter === null) { $this->row_counter = $this->limit_from; // For Interbase if ($this->dbh->features['limit'] == false) { $i = 0; while ($i++ < $this->limit_from) { $this->dbh->fetchInto($this->result, $arr, $fetchmode); } } } if ($this->row_counter >= ( $this->limit_from + $this->limit_count)) { return null; } if ($this->dbh->features['limit'] == 'emulate') { $rownum = $this->row_counter; } $this->row_counter++; } $res = $this->dbh->fetchInto($this->result, $arr, $fetchmode, $rownum); if ($res !== DB_OK) { return $res; } if (isset($object_class)) { // default mode specified in DB_common::fetchmode_object_class property if ($object_class == 'stdClass') { $ret = (object) $arr; } else { $ret =& new $object_class($arr); } return $ret; } return $arr; } /** * Fetch a row of data into an existing variable. * * @param mixed $arr reference to data containing the row * @param integer $fetchmode format of fetched row * @param integer $rownum the row number to fetch * * @return mixed DB_OK on success, NULL on no more rows or * a DB_Error object on error * * @access public */ function fetchInto(&$arr, $fetchmode = DB_FETCHMODE_DEFAULT, $rownum=null) { if ($fetchmode === DB_FETCHMODE_DEFAULT) { $fetchmode = $this->dbh->fetchmode; } if ($fetchmode === DB_FETCHMODE_OBJECT) { $fetchmode = DB_FETCHMODE_ASSOC; $object_class = $this->dbh->fetchmode_object_class; } if ($this->limit_from !== null) { if ($this->row_counter === null) { $this->row_counter = $this->limit_from; // For Interbase if ($this->dbh->features['limit'] == false) { $i = 0; while ($i++ < $this->limit_from) { $this->dbh->fetchInto($this->result, $arr, $fetchmode); } } } if ($this->row_counter >= ( $this->limit_from + $this->limit_count)) { return null; } if ($this->dbh->features['limit'] == 'emulate') { $rownum = $this->row_counter; } $this->row_counter++; } $res = $this->dbh->fetchInto($this->result, $arr, $fetchmode, $rownum); if (($res === DB_OK) && isset($object_class)) { // default mode specified in DB_common::fetchmode_object_class property if ($object_class == 'stdClass') { $arr = (object) $arr; } else { $arr = new $object_class($arr); } } return $res; } /** * Get the the number of columns in a result set. * * @return int the number of columns, or a DB error * * @access public */ function numCols() { return $this->dbh->numCols($this->result); } /** * Get the number of rows in a result set. * * @return int the number of rows, or a DB error * * @access public */ function numRows() { return $this->dbh->numRows($this->result); } /** * Get the next result if a batch of queries was executed. * * @return bool true if a new result is available or false if not. * * @access public */ function nextResult() { return $this->dbh->nextResult($this->result); } /** * Frees the resources allocated for this result set. * @return int error code * * @access public */ function free() { $err = $this->dbh->freeResult($this->result); if(DB::isError($err)) { return $err; } $this->result = false; return true; } /** * @deprecated */ function tableInfo($mode = null) { return $this->dbh->tableInfo($this->result, $mode); } /** * returns the actual rows number * @return integer */ function getRowCounter() { return $this->row_counter; } } /** * Pear DB Row Object * @see DB_common::setFetchMode() */ class DB_row { /** * constructor * * @param resource row data as array */ function DB_row(&$arr) { for (reset($arr); $key = key($arr); next($arr)) { $this->$key = &$arr[$key]; } } } ?> --- NEW FILE: PEAR.php --- <?php // // +----------------------------------------------------------------------+ // | PHP Version 4 | // +----------------------------------------------------------------------+ // | Copyright (c) 1997-2002 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 | // | li...@ph... so we can mail you a copy immediately. | // +----------------------------------------------------------------------+ // | Authors: Sterling Hughes <ste...@ph...> | // | Stig Bakken <ss...@fa...> | // | Tomas V.V.Cox <co...@id...> | // +----------------------------------------------------------------------+ // // $Id: PEAR.php,v 1.1 2002/09/13 18:07:51 bcurtis Exp $ // define('PEAR_ERROR_RETURN', 1); define('PEAR_ERROR_PRINT', 2); define('PEAR_ERROR_TRIGGER', 4); define('PEAR_ERROR_DIE', 8); define('PEAR_ERROR_CALLBACK', 16); if (substr(PHP_OS, 0, 3) == 'WIN') { define('OS_WINDOWS', true); define('OS_UNIX', false); define('PEAR_OS', 'Windows'); } else { define('OS_WINDOWS', false); define('OS_UNIX', true); define('PEAR_OS', 'Unix'); // blatant assumption } $GLOBALS['_PEAR_default_error_mode'] = PEAR_ERROR_RETURN; $GLOBALS['_PEAR_default_error_options'] = E_USER_NOTICE; $GLOBALS['_PEAR_default_error_callback'] = ''; $GLOBALS['_PEAR_destructor_object_list'] = array(); // // Tests needed: - PEAR inheritance // /** * Base class for other PEAR classes. Provides rudimentary * emulation of destructors. * * If you want a destructor in your class, inherit PEAR and make a * destructor method called _yourclassname (same name as the * constructor, but with a "_" prefix). Also, in your constructor you * have to call the PEAR constructor: $this->PEAR();. * The destructor method will be called without parameters. Note that * at in some SAPI implementations (such as Apache), any output during * the request shutdown (in which destructors are called) seems to be * discarded. If you need to get any debug information from your * destructor, use error_log(), syslog() or something similar. * * @since PHP 4.0.2 * @author Stig Bakken <ss...@fa...> */ class PEAR { // {{{ properties /** * Whether to enable internal debug messages. * * @var bool * @access private */ var $_debug = false; /** * Default error mode for this object. * * @var int * @access private */ var $_default_error_mode = null; /** * Default error options used for this object when error mode * is PEAR_ERROR_TRIGGER. * * @var int * @access private */ var $_default_error_options = null; /** * Default error handler (callback) for this object, if error mode is * PEAR_ERROR_CALLBACK. * * @var string * @access private */ var $_default_error_handler = ''; /** * Which class to use for error objects. * * @var string * @access private */ var $_error_class = 'PEAR_Error'; /** * An array of expected errors. * * @var array * @access private */ var $_expected_errors = array(); // }}} // {{{ constructor /** * Constructor. Registers this object in * $_PEAR_destructor_object_list for destructor emulation if a * destructor object exists. * * @param string (optional) which class to use for error objects, * defaults to PEAR_Error. * @access public * @return void */ function PEAR($error_class = null) { $classname = get_class($this); if ($this->_debug) { print "PEAR constructor called, class=$classname\n"; } if ($error_class !== null) { $this->_error_class = $error_class; } while ($classname) { $destructor = "_$classname"; if (method_exists($this, $destructor)) { global $_PEAR_destructor_object_list; $_PEAR_destructor_object_list[] = &$this; break; } else { $classname = get_parent_class($classname); } } } // }}} // {{{ destructor /** * Destructor (the emulated type of...). Does nothing right now, * but is included for forward compatibility, so subclass * destructors should always call it. * * See the note in the class desciption about output from * destructors. * * @access public * @return void */ function _PEAR() { if ($this->_debug) { printf("PEAR destructor called, class=%s\n", get_class($this)); } } // }}} // {{{ isError() /** * Tell whether a value is a PEAR error. * * @param mixed the value to test * @access public * @return bool true if parameter is an error */ function isError($data) { return (bool)(is_object($data) && (get_class($data) == 'pear_error' || is_subclass_of($data, 'pear_error'))); } // }}} // {{{ setErrorHandling() /** * Sets how errors generated by this DB object should be handled. * Can be invoked both in objects and statically. If called * statically, setErrorHandling sets the default behaviour for all * PEAR objects. If called in an object, setErrorHandling sets * the default behaviour for that object. * * @param int $mode * One of PEAR_ERROR_RETURN, PEAR_ERROR_PRINT, * PEAR_ERROR_TRIGGER, PEAR_ERROR_DIE or * PEAR_ERROR_CALLBACK. * * @param mixed $options * When $mode is PEAR_ERROR_TRIGGER, this is the error level (one * of E_USER_NOTICE, E_USER_WARNING or E_USER_ERROR). * * When $mode is PEAR_ERROR_CALLBACK, this parameter is expected * to be the callback function or method. A callback * function is a string with the name of the function, a * callback method is an array of two elements: the element * at index 0 is the object, and the element at index 1 is * the name of the method to call in the object. * * When $mode is PEAR_ERROR_PRINT or PEAR_ERROR_DIE, this is * a printf format string used when printing the error * message. * * @access public * @return void * @see PEAR_ERROR_RETURN * @see PEAR_ERROR_PRINT * @see PEAR_ERROR_TRIGGER * @see PEAR_ERROR_DIE * @see PEAR_ERROR_CALLBACK * * @since PHP 4.0.5 */ function setErrorHandling($mode = null, $options = null) { if (isset($this)) { $setmode = &$this->_default_error_mode; $setoptions = &$this->_default_error_options; //$setcallback = &$this->_default_error_callback; } else { $setmode = &$GLOBALS['_PEAR_default_error_mode']; $setoptions = &$GLOBALS['_PEAR_default_error_options']; //$setcallback = &$GLOBALS['_PEAR_default_error_callback']; } switch ($mode) { case PEAR_ERROR_RETURN: case PEAR_ERROR_PRINT: case PEAR_ERROR_TRIGGER: case PEAR_ERROR_DIE: case null: $setmode = $mode; $setoptions = $options; break; case PEAR_ERROR_CALLBACK: $setmode = $mode; if ((is_string($options) && function_exists($options)) || (is_array($options) && method_exists(@$options[0], @$options[1]))) { $setoptions = $options; } else { trigger_error("invalid error callback", E_USER_WARNING); } break; default: trigger_error("invalid error mode", E_USER_WARNING); break; } } // }}} // {{{ expectError() /** * This method is used to tell which errors you expect to get. * Expected errors are always returned with error mode * PEAR_ERROR_RETURN. Expected error codes are stored in a stack, * and this method pushes a new element onto it. The list of * expected errors are in effect until they are popped off the * stack with the popExpect() method. * * @param mixed a single error code or an array of error codes * to expect * * @return int the new depth of the "expected errors" stack */ function expectError($code = "*") { if (is_array($code)) { array_push($this->_expected_errors, $code); } else { array_push($this->_expected_errors, array($code)); } return sizeof($this->_expected_errors); } // }}} // {{{ popExpect() /** * This method pops one element off the expected error codes * stack. * * @return array the list of error codes that were popped */ function popExpect() { return array_pop($this->_expected_errors); } // }}} // {{{ raiseError() /** * This method is a wrapper that returns an instance of the * configured error class with this object's default error * handling applied. If the $mode and $options parameters are not * specified, the object's defaults are used. * * @param $message a text error message or a PEAR error object * * @param $code a numeric error code (it is up to your class * to define these if you want to use codes) * * @param $mode One of PEAR_ERROR_RETURN, PEAR_ERROR_PRINT, * PEAR_ERROR_TRIGGER, PEAR_ERROR_DIE or * PEAR_ERROR_CALLBACK. * * @param $options If $mode is PEAR_ERROR_TRIGGER, this parameter * specifies the PHP-internal error level (one of * E_USER_NOTICE, E_USER_WARNING or E_USER_ERROR). * If $mode is PEAR_ERROR_CALLBACK, this * parameter specifies the callback function or * method. In other error modes this parameter * is ignored. * * @param $userinfo If you need to pass along for example debug * information, this parameter is meant for that. * * @param $error_class The returned error object will be instantiated * from this class, if specified. * * @param $skipmsg If true, raiseError will only pass error codes, * the error message parameter will be dropped. * * @access public * @return object a PEAR error object * @see PEAR::setErrorHandling * @since PHP 4.0.5 */ function &raiseError($message = null, $code = null, $mode = null, $options = null, $userinfo = null, $error_class = null, $skipmsg = false) { // The error is yet a PEAR error object if (is_object($message)) { $code = $message->getCode(); $userinfo = $message->getUserInfo(); $error_class = $message->getType(); $message = $message->getMessage(); } if (isset($this) && isset($this->_expected_errors) && sizeof($this->_expected_errors) > 0 && sizeof($exp = end($this->_expected_errors))) { if ($exp[0] == "*" || (is_int(reset($exp)) && in_array($code, $exp)) || (is_string(reset($exp)) && in_array($message, $exp))) { $mode = PEAR_ERROR_RETURN; } } if ($mode === null) { if (isset($this) && isset($this->_default_error_mode)) { $mode = $this->_default_error_mode; } else { $mode = $GLOBALS['_PEAR_default_error_mode']; } } if ($mode == PEAR_ERROR_TRIGGER && $options === null) { if (isset($this)) { if (isset($this->_default_error_options)) { $options = $this->_default_error_options; } } else { $options = $GLOBALS['_PEAR_default_error_options']; } } if ($mode == PEAR_ERROR_CALLBACK) { if (!is_string($options) && !(is_array($options) && sizeof($options) == 2 && is_object($options[0]) && is_string($options[1]))) { if (isset($this) && isset($this->_default_error_options)) { $options = $this->_default_error_options; } else { $options = $GLOBALS['_PEAR_default_error_options']; } } } else { if ($options === null) { if (isset($this)) { if (isset($this->_default_error_options)) { $options = $this->_default_error_options; } } else { $options = $GLOBALS['_PEAR_default_error_options']; } } } if ($error_class !== null) { $ec = $error_class; } elseif (isset($this) && isset($this->_error_class)) { $ec = $this->_error_class; } else { $ec = 'PEAR_Error'; } if ($skipmsg) { return new $ec($code, $mode, $options, $userinfo); } else { return new $ec($message, $code, $mode, $options, $userinfo); } } // }}} // {{{ pushErrorHandling() /** * Push a new error handler on top of the error handler options stack. With this * you can easily override the actual error handler for some code and restore * it later with popErrorHandling. * * @param $mode mixed (same as setErrorHandling) * @param $options mixed (same as setErrorHandling) * * @return bool Always true * * @see PEAR::setErrorHandling */ function pushErrorHandling($mode, $options = null) { $stack = &$GLOBALS['_PEAR_error_handler_stack']; if (!is_array($stack)) { if (isset($this)) { $def_mode = &$this->_default_error_mode; $def_options = &$this->_default_error_options; // XXX Used anywhere? //$def_callback = &$this->_default_error_callback; } else { $def_mode = &$GLOBALS['_PEAR_default_error_mode']; $def_options = &$GLOBALS['_PEAR_default_error_options']; // XXX Used anywhere? //$def_callback = &$GLOBALS['_PEAR_default_error_callback']; } $stack = array(); $stack[] = array($def_mode, $def_options); } if (isset($this)) { $this->setErrorHandling($mode, $options); } else { PEAR::setErrorHandling($mode, $options); } $stack[] = array($mode, $options); return true; } // }}} // {{{ popErrorHandling() /** * Pop the last error handler used * * @return bool Always true * * @see PEAR::pushErrorHandling */ function popErrorHandling() { $stack = &$GLOBALS['_PEAR_error_handler_stack']; array_pop($stack); list($mode, $options) = $stack[sizeof($stack) - 1]; if (isset($this)) { $this->setErrorHandling($mode, $options); } else { PEAR::setErrorHandling($mode, $options); } return true; } // }}} } // {{{ _PEAR_call_destructors() function _PEAR_call_destructors() { global $_PEAR_destructor_object_list; if (is_array($_PEAR_destructor_object_list) && sizeof($_PEAR_destructor_object_list)) { reset($_PEAR_destructor_object_list); while (list($k, $objref) = each($_PEAR_destructor_object_list)) { $classname = get_class($objref); while ($classname) { $destructor = "_$classname"; if (method_exists($objref, $destructor)) { $objref->$destructor(); break; } else { $classname = get_parent_class($classname); } } } // Empty the object list to ensure that destructors are // not called more than once. $_PEAR_destructor_object_list = array(); } } // }}} class PEAR_Error { // {{{ properties var $error_message_prefix = ''; var $mode = PEAR_ERROR_RETURN; var $level = E_USER_NOTICE; var $code = -1; var $message = ''; var $userinfo = ''; // Wait until we have a stack-groping function in PHP. //var $file = ''; //var $line = 0; // }}} // {{{ constructor /** * PEAR_Error constructor * * @param $message error message * * @param $code (optional) error code * * @param $mode (optional) error mode, one of: PEAR_ERROR_RETURN, * PEAR_ERROR_PRINT, PEAR_ERROR_DIE, PEAR_ERROR_TRIGGER or * PEAR_ERROR_CALLBACK * * @param $level (optional) error level, _OR_ in the case of * PEAR_ERROR_CALLBACK, the callback function or object/method * tuple. * * @access public * */ function PEAR_Error($message = 'unknown error', $code = null, $mode = null, $options = null, $userinfo = null) { if ($mode === null) { $mode = PEAR_ERROR_RETURN; } $this->message = $message; $this->code = $code; $this->mode = $mode; $this->userinfo = $userinfo; if ($mode & PEAR_ERROR_CALLBACK) { $this->level = E_USER_NOTICE; $this->callback = $options; } else { if ($options === null) { $options = E_USER_NOTICE; } $this->level = $options; $this->callback = null; } if ($this->mode & PEAR_ERROR_PRINT) { if (is_null($options) || is_int($options)) { $format = "%s"; } else { $format = $options; } printf($format, $this->getMessage()); } if ($this->mode & PEAR_ERROR_TRIGGER) { trigger_error($this->getMessage(), $this->level); } if ($this->mode & PEAR_ERROR_DIE) { $msg = $this->getMessage(); if (is_null($options) || is_int($options)) { $format = "%s"; if (substr($msg, -1) != "\n") { $msg .= "\n"; } } else { $format = $options; } die(sprintf($format, $msg)); } if ($this->mode & PEAR_ERROR_CALLBACK) { if (is_string($this->callback) && strlen($this->callback)) { call_user_func($this->callback, $this); } elseif (is_array($this->callback) && sizeof($this->callback) == 2 && is_object($this->callback[0]) && is_string($this->callback[1]) && strlen($this->callback[1])) { @call_user_method($this->callback[1], $this->callback[0], $this); } } } // }}} // {{{ getMode() /** * Get the error mode from an error object. * * @return int error mode * @access public */ function getMode() { return $this->mode; } // }}} // {{{ getCallback() /** * Get the callback function/method from an error object. * * @return mixed callback function or object/method array * @access public */ function getCallback() { return $this->callback; } // }}} // {{{ getMessage() /** * Get the error message from an error object. * * @return string full error message * @access public */ function getMessage () { return ($this->error_message_prefix . $this->message); } // }}} // {{{ getCode() /** * Get error code from an error object * * @return int error code * @access public */ function getCode() { return $this->code; } // }}} // {{{ getType() /** * Get the name of this error/exception. * * @return string error/exception name (type) * @access public */ function getType () { return get_class($this); } // }}} // {{{ getUserInfo() /** * Get additional user-supplied information. * * @return string user-supplied information * @access public */ function getUserInfo () { return $this->userinfo; } // }}} // {{{ getDebugInfo() /** * Get additional debug information supplied by the application. * * @return string debug information * @access public */ function getDebugInfo () { return $this->getUserInfo(); } // }}} // {{{ addUserInfo() function addUserInfo($info) { if (empty($this->userinfo)) { $this->userinfo = $info; } else { $this->userinfo .= " ** $info"; } } // }}} // {{{ toString() /** * Make a string representation of this object. * * @return string a string with an object summary * @access public */ function toString() { $modes = array(); $levels = array(E_USER_NOTICE => 'notice', E_USER_WARNING => 'warning', E_USER_ERROR => 'error'); if ($this->mode & PEAR_ERROR_CALLBACK) { if (is_array($this->callback)) { $callback = get_class($this->callback[0]) . '::' . $this->callback[1]; } else { $callback = $this->callback; } return sprintf('[%s: message="%s" code=%d mode=callback '. 'callback=%s prefix="%s" info="%s"]', get_class($this), $this->message, $this->code, $callback, $this->error_message_prefix, $this->userinfo); } if ($this->mode & PEAR_ERROR_CALLBACK) { $modes[] = 'callback'; } if ($this->mode & PEAR_ERROR_PRINT) { $modes[] = 'print'; } if ($this->mode & PEAR_ERROR_TRIGGER) { $modes[] = 'trigger'; } if ($this->mode & PEAR_ERROR_DIE) { $modes[] = 'die'; } if ($this->mode & PEAR_ERROR_RETURN) { $modes[] = 'return'; } return sprintf('[%s: message="%s" code=%d mode=%s level=%s '. 'prefix="%s" info="%s"]', get_class($this), $this->message, $this->code, implode("|", $modes), $levels[$this->level], $this->error_message_prefix, $this->userinfo); } // }}} } register_shutdown_function("_PEAR_call_destructors"); /* * Local Variables: * mode: php * tab-width: 4 * c-basic-offset: 4 * End: */ ?> |
|
From: Benjamin C. <bc...@us...> - 2002-09-13 18:05:52
|
Update of /cvsroot/phpbt/phpbt/inc/pear/DB In directory usw-pr-cvs1:/tmp/cvs-serv9125/DB Log Message: Directory /cvsroot/phpbt/phpbt/inc/pear/DB added to the repository |
|
From: Benjamin C. <bc...@us...> - 2002-09-13 18:05:46
|
Update of /cvsroot/phpbt/phpbt/inc/pear In directory usw-pr-cvs1:/tmp/cvs-serv9055/pear Log Message: Directory /cvsroot/phpbt/phpbt/inc/pear added to the repository |
|
From: Benjamin C. <bc...@us...> - 2002-09-13 18:02:25
|
Update of /cvsroot/phpbt/phpbt/templates/default
In directory usw-pr-cvs1:/tmp/cvs-serv7170/templates/default
Modified Files:
wrap.html
Log Message:
Updated form action to work better with IIS
Index: wrap.html
===================================================================
RCS file: /cvsroot/phpbt/phpbt/templates/default/wrap.html,v
retrieving revision 1.20
retrieving revision 1.21
diff -u -r1.20 -r1.21
--- wrap.html 24 Aug 2002 19:28:12 -0000 1.20
+++ wrap.html 13 Sep 2002 18:02:21 -0000 1.21
@@ -54,7 +54,7 @@
</tr>
<tr>
<td colspan="2" height="20" class="bottomnav">
- <form method="post" action="{$smarty.server.REQUEST_URI}">
+ <form method="post" action="{$smarty.server.SCRIPT_NAME}{if $smarty.request.QUERY_STRING}?{$smarty.request.QUERY_STRING}{/if}">
{if not $smarty.session.uid}
{if EMAIL_IS_LOGIN}
@@ -63,18 +63,18 @@
{assign var="loginlabel" value="Login"}
{/if}
{$loginerror}
- {$loginlabel}: <input type="text" name="username" class="bottomnavinput" value="{$smarty.cookies.phpbt_user}">
- Password: <input type="password" name="password" class="bottomnavinput">
+ {$loginlabel}: <input type="text" name="username" class="bottomnavinput" value="{$smarty.cookies.phpbt_user}">
+ Password: <input type="password" name="password" class="bottomnavinput">
<input type="hidden" name="dologin" value="1">
- <input type="submit" value="Login" class="bottomnavinput">
- <input type="submit" name="sendpass" value="Email Password" class="bottomnavinput" title="Forgot your password? Have it sent to you">
+ <input type="submit" value="Login" class="bottomnavinput">
+ <input type="submit" name="sendpass" value="Email Password" class="bottomnavinput" title="Forgot your password? Have it sent to you">
{if RECALL_LOGIN}
- <input type="checkbox" name="savecookie" value="1" {if !empty($smarty.cookies.phpbt_user)}checked{/if} class="bottomnavinput" title="Remember {$loginlabel} for next time"> Remember me
+ <input type="checkbox" name="savecookie" value="1" {if !empty($smarty.cookies.phpbt_user)}checked{/if} class="bottomnavinput" title="Remember {$loginlabel} for next time"> Remember me
{/if}
{else}
- Bugs assigned to me: <a href="query.php?op=mybugs&assignedto=1&open=1" title="Open">{$owner_open}</a> / <a href="query.php?op=mybugs&assignedto=1&open=0" title="Closed">{$owner_closed}</a>
- | Bugs reported by me: <a href="query.php?op=mybugs&reportedby=1&open=1" title="Open">{$reporter_open}</a> / <a href="query.php?op=mybugs&reportedby=1&open=0" title="Closed">{$reporter_closed}</a>
- | <a href="user.php">Personal Page</a>
+ Bugs assigned to me: <a href="query.php?op=mybugs&assignedto=1&open=1" title="Open">{$owner_open}</a> / <a href="query.php?op=mybugs&assignedto=1&open=0" title="Closed">{$owner_closed}</a>
+ | Bugs reported by me: <a href="query.php?op=mybugs&reportedby=1&open=1" title="Open">{$reporter_open}</a> / <a href="query.php?op=mybugs&reportedby=1&open=0" title="Closed">{$reporter_closed}</a>
+ | <a href="user.php">Personal Page</a>
| <a href="logout.php">Logout {$smarty.session.uname}</a>
{/if}
@@ -88,8 +88,8 @@
<td bgcolor="#ffffff" height="20" colspan="2"><img src="images/spacer.gif" height="1" width="1"></td>
</tr>
</table>
-
+
{include file=$content_template}
-
+
</body>
</html>
|
|
From: Benjamin C. <bc...@us...> - 2002-09-13 18:02:24
|
Update of /cvsroot/phpbt/phpbt/templates/default/admin
In directory usw-pr-cvs1:/tmp/cvs-serv7170/templates/default/admin
Modified Files:
wrap.html
Log Message:
Updated form action to work better with IIS
Index: wrap.html
===================================================================
RCS file: /cvsroot/phpbt/phpbt/templates/default/admin/wrap.html,v
retrieving revision 1.17
retrieving revision 1.18
diff -u -r1.17 -r1.18
--- wrap.html 26 Aug 2002 18:15:46 -0000 1.17
+++ wrap.html 13 Sep 2002 18:02:21 -0000 1.18
@@ -60,7 +60,7 @@
</tr>
<tr>
<td colspan="2" height="20" class="bottomnav">
- <form method="post" action="{$smarty.server.REQUEST_URI}">
+ <form method="post" action="{$smarty.server.SCRIPT_NAME}{if $smarty.request.QUERY_STRING}?{$smarty.request.QUERY_STRING}{/if}">
{if not $smarty.session.uid}
{if EMAIL_IS_LOGIN}
@@ -69,18 +69,18 @@
{assign var="loginlabel" value="Login"}
{/if}
{$loginerror}
- {$loginlabel}: <input type="text" name="username" class="bottomnavinput" value="{$smarty.cookies.phpbt_user}">
- Password: <input type="password" name="password" class="bottomnavinput">
+ {$loginlabel}: <input type="text" name="username" class="bottomnavinput" value="{$smarty.cookies.phpbt_user}">
+ Password: <input type="password" name="password" class="bottomnavinput">
<input type="hidden" name="dologin" value="1">
- <input type="submit" value="Login" class="bottomnavinput">
- <input type="submit" name="sendpass" value="Email Password" class="bottomnavinput" title="Forgot your password? Have it sent to you">
+ <input type="submit" value="Login" class="bottomnavinput">
+ <input type="submit" name="sendpass" value="Email Password" class="bottomnavinput" title="Forgot your password? Have it sent to you">
{if RECALL_LOGIN}
- <input type="checkbox" name="savecookie" value="1" {if !empty($smarty.cookies.phpbt_user)}checked{/if} class="bottomnavinput" title="Remember {$loginlabel} for next time"> Remember me
+ <input type="checkbox" name="savecookie" value="1" {if !empty($smarty.cookies.phpbt_user)}checked{/if} class="bottomnavinput" title="Remember {$loginlabel} for next time"> Remember me
{/if}
{else}
- Bugs assigned to me: <a href="../query.php?op=mybugs&assignedto=1&open=1" title="Open">{$owner_open}</a> / <a href="../query.php?op=mybugs&assignedto=1&open=0" title="Closed">{$owner_closed}</a>
- | Bugs reported by me: <a href="../query.php?op=mybugs&reportedby=1&open=1" title="Open">{$reporter_open}</a> / <a href="../query.php?op=mybugs&reportedby=1&open=0" title="Closed">{$reporter_closed}</a>
- | <a href="../user.php">Personal Page</a>
+ Bugs assigned to me: <a href="../query.php?op=mybugs&assignedto=1&open=1" title="Open">{$owner_open}</a> / <a href="../query.php?op=mybugs&assignedto=1&open=0" title="Closed">{$owner_closed}</a>
+ | Bugs reported by me: <a href="../query.php?op=mybugs&reportedby=1&open=1" title="Open">{$reporter_open}</a> / <a href="../query.php?op=mybugs&reportedby=1&open=0" title="Closed">{$reporter_closed}</a>
+ | <a href="../user.php">Personal Page</a>
| <a href="../logout.php">Logout {$smarty.session.uname}</a>
{/if}
|
|
From: Florian K. <Flo...@in...> - 2002-09-06 17:43:30
|
Thanks for working on this... After fixing the comma-bug (see cvs), I get this upon submitting: maybe it doesnt like the 'and 1' ? DB Error: unknown error select count(*) from phpbt_bug b, phpbt_auth_user owner, phpbt_auth_user reporter where b.assigned_to = owner.user_id(+) and b.created_by = reporter.user_id(+) and 1 [nativecode=ORA-00920: invalid relational operator ] Florian > -----Original Message----- > From: Ben Curtis [mailto:php...@be...] > Sent: Friday, September 06, 2002 4:55 PM > To: php...@li... > Subject: Re: [phpBT-dev] CVS: phpbt/inc/db mysql.php,1.12,1.13 > oci8.php,1. 8,1.9 pgsql.php,1.17,1.18 > > > Yes, I think Jirka's fix should solve the problem I introduced. :) > Upgrade.php still needs work, but in the past I've put it off > until just > before release. > > On Fri, Sep 06, 2002 at 03:49:11PM +0200, Jirka Pech wrote: > > > DB Error: invalid number > > > SELECT sum(decode( s.status_name, 1, 1, 2, 1, 3, 1, 4, 1, > 0 )), sum(decode( > > > s.status_id, 1, 0, 2, 0, 3, 0, 4, 0, 1 )) from phpbt_bug > b, phpbt_status s > > > where b.status_id = s.status_id (+) and b.created_by = 1 > > > [nativecode=ORA-01722: invalid number ] > > > > This comes from adding BUG_??? codes. s.status_name is not > a number. Try new > > inc/db/oci8.php from CVS and let me know. > > > > > ------------------------------------------------------- > This sf.net email is sponsored by: OSDN - Tired of that same old > cell phone? Get a new here for FREE! > https://www.inphonic.com/r.asp?r=sourceforge1&refcode1=vs3390 > _______________________________________________ > phpbt-dev mailing list > php...@li... > https://lists.sourceforge.net/lists/listinfo/phpbt-dev > |
|
From: Florian K. <in...@us...> - 2002-09-06 17:42:10
|
Update of /cvsroot/phpbt/phpbt/inc/db In directory usw-pr-cvs1:/tmp/cvs-serv13275 Modified Files: oci8.php Log Message: Now the trailing comma was back (before the 'where'). Fixed that. Index: oci8.php =================================================================== RCS file: /cvsroot/phpbt/phpbt/inc/db/oci8.php,v retrieving revision 1.10 retrieving revision 1.11 diff -u -r1.10 -r1.11 --- oci8.php 6 Sep 2002 13:46:31 -0000 1.10 +++ oci8.php 6 Sep 2002 17:42:04 -0000 1.11 @@ -111,11 +111,11 @@ 'and (pg.project_id is null or pg.group_id in (%s)) '. 'group by p.project_id, p.project_name order by project_name', 'include-template-owner' => "SELECT sum(decode( s.status_id, ".BUG_UNCONFIRMED.", 1, ".BUG_PROMOTED.", 1, ".BUG_ASSIGNED.", 1, ".BUG_REOPENED.", 1, 0 )), ". - "sum(decode( s.status_id, ".BUG_UNCONFIRMED.", 0, ".BUG_PROMOTED.", 0, ".BUG_ASSIGNED.", 0, ".BUG_REOPENED.", 0, 1 )), ". + "sum(decode( s.status_id, ".BUG_UNCONFIRMED.", 0, ".BUG_PROMOTED.", 0, ".BUG_ASSIGNED.", 0, ".BUG_REOPENED.", 0, 1 )) ". 'from '.TBL_BUG.' b, '.TBL_STATUS.' s '. 'where b.status_id = s.status_id (+) and b.assigned_to = %s', 'include-template-reporter' => "SELECT sum(decode( s.status_id, ".BUG_UNCONFIRMED.", 1, ".BUG_PROMOTED.", 1, ".BUG_ASSIGNED.", 1, ".BUG_REOPENED.", 1, 0 )), ". - "sum(decode( s.status_id, ".BUG_UNCONFIRMED.", 0, ".BUG_PROMOTED.", 0, ".BUG_ASSIGNED.", 0, ".BUG_REOPENED.", 0, 1 )), ". + "sum(decode( s.status_id, ".BUG_UNCONFIRMED.", 0, ".BUG_PROMOTED.", 0, ".BUG_ASSIGNED.", 0, ".BUG_REOPENED.", 0, 1 )) ". 'from '.TBL_BUG.' b, ' . TBL_STATUS.' s '. 'where b.status_id = s.status_id (+) and b.created_by = %s', 'index-projsummary-1' => 'select b.project_id, p.project_name as "Project", '. |
|
From: Ben C. <php...@be...> - 2002-09-06 14:54:41
|
Yes, I think Jirka's fix should solve the problem I introduced. :) Upgrade.php still needs work, but in the past I've put it off until just before release. On Fri, Sep 06, 2002 at 03:49:11PM +0200, Jirka Pech wrote: > > DB Error: invalid number > > SELECT sum(decode( s.status_name, 1, 1, 2, 1, 3, 1, 4, 1, 0 )), sum(decode( > > s.status_id, 1, 0, 2, 0, 3, 0, 4, 0, 1 )) from phpbt_bug b, phpbt_status s > > where b.status_id = s.status_id (+) and b.created_by = 1 > > [nativecode=ORA-01722: invalid number ] > > This comes from adding BUG_??? codes. s.status_name is not a number. Try new > inc/db/oci8.php from CVS and let me know. > |
|
From: Jirka P. <fi...@us...> - 2002-09-06 13:49:20
|
> DB Error: invalid number > SELECT sum(decode( s.status_name, 1, 1, 2, 1, 3, 1, 4, 1, 0 )), sum(dec= ode( > s.status_id, 1, 0, 2, 0, 3, 0, 4, 0, 1 )) from phpbt_bug b, phpbt_statu= s s > where b.status_id =3D s.status_id (+) and b.created_by =3D 1 > [nativecode=3DORA-01722: invalid number ] This comes from adding BUG_??? codes. s.status_name is not a number. Try = new=20 inc/db/oci8.php from CVS and let me know. |
|
From: Jirka P. <fi...@us...> - 2002-09-06 13:46:35
|
Update of /cvsroot/phpbt/phpbt/inc/db In directory usw-pr-cvs1:/tmp/cvs-serv24899/phpbt/inc/db Modified Files: oci8.php Log Message: small fix. Index: oci8.php =================================================================== RCS file: /cvsroot/phpbt/phpbt/inc/db/oci8.php,v retrieving revision 1.9 retrieving revision 1.10 diff -u -r1.9 -r1.10 --- oci8.php 3 Sep 2002 19:44:57 -0000 1.9 +++ oci8.php 6 Sep 2002 13:46:31 -0000 1.10 @@ -114,7 +114,7 @@ "sum(decode( s.status_id, ".BUG_UNCONFIRMED.", 0, ".BUG_PROMOTED.", 0, ".BUG_ASSIGNED.", 0, ".BUG_REOPENED.", 0, 1 )), ". 'from '.TBL_BUG.' b, '.TBL_STATUS.' s '. 'where b.status_id = s.status_id (+) and b.assigned_to = %s', - 'include-template-reporter' => "SELECT sum(decode( s.status_name, ".BUG_UNCONFIRMED.", 1, ".BUG_PROMOTED.", 1, ".BUG_ASSIGNED.", 1, ".BUG_REOPENED.", 1, 0 )), ". + 'include-template-reporter' => "SELECT sum(decode( s.status_id, ".BUG_UNCONFIRMED.", 1, ".BUG_PROMOTED.", 1, ".BUG_ASSIGNED.", 1, ".BUG_REOPENED.", 1, 0 )), ". "sum(decode( s.status_id, ".BUG_UNCONFIRMED.", 0, ".BUG_PROMOTED.", 0, ".BUG_ASSIGNED.", 0, ".BUG_REOPENED.", 0, 1 )), ". 'from '.TBL_BUG.' b, ' . TBL_STATUS.' s '. 'where b.status_id = s.status_id (+) and b.created_by = %s', |
|
From: Florian K. <Flo...@in...> - 2002-09-06 12:38:07
|
I did a clean cvs co, and started with a CLEAN DATABASE. I was able to: - do setup - log in - add user - add group - add project - change rights of project So far, what I got on errors: - Submitting Bug (pushing 'submit') DB Error: invalid number SELECT sum(decode( s.status_name, 1, 1, 2, 1, 3, 1, 4, 1, 0 )), sum(decode( s.status_id, 1, 0, 2, 0, 3, 0, 4, 0, 1 )) from phpbt_bug b, phpbt_status s where b.status_id = s.status_id (+) and b.created_by = 1 [nativecode=ORA-01722: invalid number ] Could someone look into this? (pretty please) Well, looks like we are getting there! Does this mean upgrade.php doesn't need any work?? Florian > -----Original Message----- > From: Florian Kolbe [mailto:Flo...@in...] > Sent: Thursday, September 05, 2002 9:20 PM > To: php...@li... > Subject: RE: [phpBT-dev] CVS: phpbt/inc/db mysql.php,1.12,1.13 > oci8.php,1. 8,1.9 pgsql.php,1.17,1.18 > > > And a clean database? I have one that was created by 0.8.2 > > cvs seems to be broken right now: > in10:/opt # cvs -z3 > -d:ext:in...@cv...:/cvsroot/phpbt > co phpbt > ssh_exchange_identification: Connection closed by remote host > cvs [checkout aborted]: end of file from server (consult > above messages if > any) > > I'll try later. > > Florian > > > -----Original Message----- > > From: Ben Curtis [mailto:php...@be...] > > Sent: Thursday, September 05, 2002 4:24 PM > > To: php...@li... > > Subject: Re: [phpBT-dev] CVS: phpbt/inc/db mysql.php,1.12,1.13 > > oci8.php,1. 8,1.9 pgsql.php,1.17,1.18 > > > > > > Can you do a clean install of the current cvs and get it > working with > > Oracle? > > > > On Thu, Sep 05, 2002 at 11:27:56AM +0200, Florian Kolbe wrote: > > > Great! > > > I was on the virge to switching back to Bugzilla (Oracle > > > support was the major reason for me to try out phpbt). > > > Now I'll hang in there for a couple of days (alas we need a > > > production environment asap), let me know when I can test! > > > I hope I'm not too demanding now - at least I'll be a good > > > tester... ;) > > > > > > Florian > > > > > > > -----Original Message----- > > > > From: Ben Curtis [mailto:php...@be...] > > > > Sent: Wednesday, September 04, 2002 4:14 PM > > > > To: php...@li... > > > > Subject: Re: [phpBT-dev] CVS: phpbt/inc/db mysql.php,1.12,1.13 > > > > oci8.php,1. 8,1.9 pgsql.php,1.17,1.18 > > > > > > > > > > > > I'll try to get to it. > > > > > > > > On Wed, Sep 04, 2002 at 12:39:39PM +0200, Jirka Pech wrote: > > > > > > Unfortunately, I won't be able to continue to test until > > > > someone writes > > > > > > that database upgrade (I can't do this at work - and I > > > > don't have Oracle at > > > > > > home...). > > > > > > > > > > Ugh, ugh, bad news. It'll take some time (at least 3 > > > > weeks), before I'll be > > > > > free to begin coding upgrade. > > > > > > > > > > > > > > > > > > > > ------------------------------------------------------- > > > > > This sf.net email is sponsored by: OSDN - Tired of > that same old > > > > > cell phone? Get a new here for FREE! > > > > > https://www.inphonic.com/r.asp?r=sourceforge1&refcode1=vs3390 > > > > > _______________________________________________ > > > > > phpbt-dev mailing list > > > > > php...@li... > > > > > https://lists.sourceforge.net/lists/listinfo/phpbt-dev > > > > > > > > > > > > ------------------------------------------------------- > > > > This sf.net email is sponsored by: OSDN - Tired of that same old > > > > cell phone? Get a new here for FREE! > > > > https://www.inphonic.com/r.asp?r=sourceforge1&refcode1=vs3390 > > > > _______________________________________________ > > > > phpbt-dev mailing list > > > > php...@li... > > > > https://lists.sourceforge.net/lists/listinfo/phpbt-dev > > > > > > > > > > > > > ------------------------------------------------------- > > > This sf.net email is sponsored by: OSDN - Tired of that same old > > > cell phone? Get a new here for FREE! > > > https://www.inphonic.com/r.asp?r=sourceforge1&refcode1=vs3390 > > > _______________________________________________ > > > phpbt-dev mailing list > > > php...@li... > > > https://lists.sourceforge.net/lists/listinfo/phpbt-dev > > > > > > ------------------------------------------------------- > > This sf.net email is sponsored by: OSDN - Tired of that same old > > cell phone? Get a new here for FREE! > > https://www.inphonic.com/r.asp?r=sourceforge1&refcode1=vs3390 > > _______________________________________________ > > phpbt-dev mailing list > > php...@li... > > https://lists.sourceforge.net/lists/listinfo/phpbt-dev > > > > > ------------------------------------------------------- > This sf.net email is sponsored by: OSDN - Tired of that same old > cell phone? Get a new here for FREE! > https://www.inphonic.com/r.asp?r=sourceforge1&refcode1=vs3390 > _______________________________________________ > phpbt-dev mailing list > php...@li... > https://lists.sourceforge.net/lists/listinfo/phpbt-dev > |
|
From: Florian K. <Flo...@in...> - 2002-09-05 19:20:06
|
And a clean database? I have one that was created by 0.8.2 cvs seems to be broken right now: in10:/opt # cvs -z3 -d:ext:in...@cv...:/cvsroot/phpbt co phpbt ssh_exchange_identification: Connection closed by remote host cvs [checkout aborted]: end of file from server (consult above messages if any) I'll try later. Florian > -----Original Message----- > From: Ben Curtis [mailto:php...@be...] > Sent: Thursday, September 05, 2002 4:24 PM > To: php...@li... > Subject: Re: [phpBT-dev] CVS: phpbt/inc/db mysql.php,1.12,1.13 > oci8.php,1. 8,1.9 pgsql.php,1.17,1.18 > > > Can you do a clean install of the current cvs and get it working with > Oracle? > > On Thu, Sep 05, 2002 at 11:27:56AM +0200, Florian Kolbe wrote: > > Great! > > I was on the virge to switching back to Bugzilla (Oracle > > support was the major reason for me to try out phpbt). > > Now I'll hang in there for a couple of days (alas we need a > > production environment asap), let me know when I can test! > > I hope I'm not too demanding now - at least I'll be a good > > tester... ;) > > > > Florian > > > > > -----Original Message----- > > > From: Ben Curtis [mailto:php...@be...] > > > Sent: Wednesday, September 04, 2002 4:14 PM > > > To: php...@li... > > > Subject: Re: [phpBT-dev] CVS: phpbt/inc/db mysql.php,1.12,1.13 > > > oci8.php,1. 8,1.9 pgsql.php,1.17,1.18 > > > > > > > > > I'll try to get to it. > > > > > > On Wed, Sep 04, 2002 at 12:39:39PM +0200, Jirka Pech wrote: > > > > > Unfortunately, I won't be able to continue to test until > > > someone writes > > > > > that database upgrade (I can't do this at work - and I > > > don't have Oracle at > > > > > home...). > > > > > > > > Ugh, ugh, bad news. It'll take some time (at least 3 > > > weeks), before I'll be > > > > free to begin coding upgrade. > > > > > > > > > > > > > > > > ------------------------------------------------------- > > > > This sf.net email is sponsored by: OSDN - Tired of that same old > > > > cell phone? Get a new here for FREE! > > > > https://www.inphonic.com/r.asp?r=sourceforge1&refcode1=vs3390 > > > > _______________________________________________ > > > > phpbt-dev mailing list > > > > php...@li... > > > > https://lists.sourceforge.net/lists/listinfo/phpbt-dev > > > > > > > > > ------------------------------------------------------- > > > This sf.net email is sponsored by: OSDN - Tired of that same old > > > cell phone? Get a new here for FREE! > > > https://www.inphonic.com/r.asp?r=sourceforge1&refcode1=vs3390 > > > _______________________________________________ > > > phpbt-dev mailing list > > > php...@li... > > > https://lists.sourceforge.net/lists/listinfo/phpbt-dev > > > > > > > > > ------------------------------------------------------- > > This sf.net email is sponsored by: OSDN - Tired of that same old > > cell phone? Get a new here for FREE! > > https://www.inphonic.com/r.asp?r=sourceforge1&refcode1=vs3390 > > _______________________________________________ > > phpbt-dev mailing list > > php...@li... > > https://lists.sourceforge.net/lists/listinfo/phpbt-dev > > > ------------------------------------------------------- > This sf.net email is sponsored by: OSDN - Tired of that same old > cell phone? Get a new here for FREE! > https://www.inphonic.com/r.asp?r=sourceforge1&refcode1=vs3390 > _______________________________________________ > phpbt-dev mailing list > php...@li... > https://lists.sourceforge.net/lists/listinfo/phpbt-dev > |
|
From: Ben C. <php...@be...> - 2002-09-05 14:24:39
|
Can you do a clean install of the current cvs and get it working with Oracle? On Thu, Sep 05, 2002 at 11:27:56AM +0200, Florian Kolbe wrote: > Great! > I was on the virge to switching back to Bugzilla (Oracle > support was the major reason for me to try out phpbt). > Now I'll hang in there for a couple of days (alas we need a > production environment asap), let me know when I can test! > I hope I'm not too demanding now - at least I'll be a good > tester... ;) > > Florian > > > -----Original Message----- > > From: Ben Curtis [mailto:php...@be...] > > Sent: Wednesday, September 04, 2002 4:14 PM > > To: php...@li... > > Subject: Re: [phpBT-dev] CVS: phpbt/inc/db mysql.php,1.12,1.13 > > oci8.php,1. 8,1.9 pgsql.php,1.17,1.18 > > > > > > I'll try to get to it. > > > > On Wed, Sep 04, 2002 at 12:39:39PM +0200, Jirka Pech wrote: > > > > Unfortunately, I won't be able to continue to test until > > someone writes > > > > that database upgrade (I can't do this at work - and I > > don't have Oracle at > > > > home...). > > > > > > Ugh, ugh, bad news. It'll take some time (at least 3 > > weeks), before I'll be > > > free to begin coding upgrade. > > > > > > > > > > > > ------------------------------------------------------- > > > This sf.net email is sponsored by: OSDN - Tired of that same old > > > cell phone? Get a new here for FREE! > > > https://www.inphonic.com/r.asp?r=sourceforge1&refcode1=vs3390 > > > _______________________________________________ > > > phpbt-dev mailing list > > > php...@li... > > > https://lists.sourceforge.net/lists/listinfo/phpbt-dev > > > > > > ------------------------------------------------------- > > This sf.net email is sponsored by: OSDN - Tired of that same old > > cell phone? Get a new here for FREE! > > https://www.inphonic.com/r.asp?r=sourceforge1&refcode1=vs3390 > > _______________________________________________ > > phpbt-dev mailing list > > php...@li... > > https://lists.sourceforge.net/lists/listinfo/phpbt-dev > > > > > ------------------------------------------------------- > This sf.net email is sponsored by: OSDN - Tired of that same old > cell phone? Get a new here for FREE! > https://www.inphonic.com/r.asp?r=sourceforge1&refcode1=vs3390 > _______________________________________________ > phpbt-dev mailing list > php...@li... > https://lists.sourceforge.net/lists/listinfo/phpbt-dev |
|
From: Florian K. <Flo...@in...> - 2002-09-05 09:27:39
|
Great! I was on the virge to switching back to Bugzilla (Oracle support was the major reason for me to try out phpbt). Now I'll hang in there for a couple of days (alas we need a production environment asap), let me know when I can test! I hope I'm not too demanding now - at least I'll be a good tester... ;) Florian > -----Original Message----- > From: Ben Curtis [mailto:php...@be...] > Sent: Wednesday, September 04, 2002 4:14 PM > To: php...@li... > Subject: Re: [phpBT-dev] CVS: phpbt/inc/db mysql.php,1.12,1.13 > oci8.php,1. 8,1.9 pgsql.php,1.17,1.18 > > > I'll try to get to it. > > On Wed, Sep 04, 2002 at 12:39:39PM +0200, Jirka Pech wrote: > > > Unfortunately, I won't be able to continue to test until > someone writes > > > that database upgrade (I can't do this at work - and I > don't have Oracle at > > > home...). > > > > Ugh, ugh, bad news. It'll take some time (at least 3 > weeks), before I'll be > > free to begin coding upgrade. > > > > > > > > ------------------------------------------------------- > > This sf.net email is sponsored by: OSDN - Tired of that same old > > cell phone? Get a new here for FREE! > > https://www.inphonic.com/r.asp?r=sourceforge1&refcode1=vs3390 > > _______________________________________________ > > phpbt-dev mailing list > > php...@li... > > https://lists.sourceforge.net/lists/listinfo/phpbt-dev > > > ------------------------------------------------------- > This sf.net email is sponsored by: OSDN - Tired of that same old > cell phone? Get a new here for FREE! > https://www.inphonic.com/r.asp?r=sourceforge1&refcode1=vs3390 > _______________________________________________ > phpbt-dev mailing list > php...@li... > https://lists.sourceforge.net/lists/listinfo/phpbt-dev > |
|
From: Ben C. <php...@be...> - 2002-09-04 14:14:19
|
I'll try to get to it. On Wed, Sep 04, 2002 at 12:39:39PM +0200, Jirka Pech wrote: > > Unfortunately, I won't be able to continue to test until someone writes > > that database upgrade (I can't do this at work - and I don't have Oracle at > > home...). > > Ugh, ugh, bad news. It'll take some time (at least 3 weeks), before I'll be > free to begin coding upgrade. > > > > ------------------------------------------------------- > This sf.net email is sponsored by: OSDN - Tired of that same old > cell phone? Get a new here for FREE! > https://www.inphonic.com/r.asp?r=sourceforge1&refcode1=vs3390 > _______________________________________________ > phpbt-dev mailing list > php...@li... > https://lists.sourceforge.net/lists/listinfo/phpbt-dev |
|
From: Jirka P. <fi...@us...> - 2002-09-04 10:39:47
|
> Unfortunately, I won't be able to continue to test until someone writes > that database upgrade (I can't do this at work - and I don't have Oracl= e at > home...). Ugh, ugh, bad news. It'll take some time (at least 3 weeks), before I'll = be=20 free to begin coding upgrade. |
|
From: Florian K. <Flo...@in...> - 2002-09-04 10:20:33
|
Unfortunately, I won't be able to continue to test until someone writes that database upgrade (I can't do this at work - and I don't have Oracle at home...). see: http://sourceforge.net/tracker/index.php?func=detail&aid=600306&group_id=149 39&atid=114939 ;( Florian > -----Original Message----- > From: Jirka Pech [mailto:fi...@us...] > Sent: Wednesday, September 04, 2002 10:40 AM > To: php...@li... > Subject: Re: [phpBT-dev] CVS: phpbt/inc/db > mysql.php,1.12,1.13 oci8.php,1.8,1.9 pgsql.php,1.17,1.18 > > > I think there is something putrid in oci8.php. :-( > > Especially on lines 110 - 111. I think there is a mistake in > s.status_id, > which may possibly be s.status_name. Please someone try it on > Oracle and let > me know. > > > Update of /cvsroot/phpbt/phpbt/inc/db > > In directory usw-pr-cvs1:/tmp/cvs-serv26076/inc/db > > > > Modified Files: > > mysql.php oci8.php pgsql.php > > Log Message: > > Fixes bug #546264 - Someone verify, please. :) > > > > ------------------------------------------------------- > This sf.net email is sponsored by: OSDN - Tired of that same old > cell phone? Get a new here for FREE! > https://www.inphonic.com/r.asp?r=sourceforge1&refcode1=vs3390 > _______________________________________________ > phpbt-dev mailing list > php...@li... > https://lists.sourceforge.net/lists/listinfo/phpbt-dev > |
|
From: Jirka P. <fi...@us...> - 2002-09-04 08:40:17
|
I think there is something putrid in oci8.php. :-( Especially on lines 110 - 111. I think there is a mistake in s.status_id,= =20 which may possibly be s.status_name. Please someone try it on Oracle and = let=20 me know. > Update of /cvsroot/phpbt/phpbt/inc/db > In directory usw-pr-cvs1:/tmp/cvs-serv26076/inc/db > > Modified Files: > =09mysql.php oci8.php pgsql.php > Log Message: > Fixes bug #546264 - Someone verify, please. :) |
|
From: Jirka P. <fi...@us...> - 2002-09-04 08:23:55
|
> I just noticed the oci8-case of the upgrade-function > does: nothing! ;( I'm sorry, but I've never seen upgrade functions and I want them to be hi= dden=20 for me as long as possible. So, if you don't need my help, I will be very= =20 happy. Is there any way for us to gain access to your site with installed PHPBT = and=20 Oracle (for testing)? |
|
From: Florian K. <Flo...@in...> - 2002-09-04 07:56:48
|
I just noticed the oci8-case of the upgrade-function
does: nothing! ;(
Florian
> -----Original Message-----
> From: Florian Kolbe [mailto:Flo...@in...]
> Sent: Wednesday, September 04, 2002 9:54 AM
> To: 'php...@li...'
> Subject: [phpBT-dev] Trouble with database incompatibility..
>=20
>=20
> (changed the topic)
> I found that these defines are in the table phpbt_configuration,
> and that I am missing some of these.
> The function 'upgrade' in upgrade.php defines these.
>=20
> How can I upgrade without logging in?
>=20
> So I started patching my database manually (ugh), like this:
> INSERT INTO phpbt_configuration VALUES ('BUG_REOPENED', =20
> '4', 'The status
> to assign a bug when it is reopened.', 'multi');
>=20
> Now having these 'defines' I get this when I try to log in:
>=20
> DB Error: no such field
> select saved_queries from phpbt_user_pref where user_id=3D'1'
> [nativecode=3DORA-00904: invalid column name ]
>=20
> Looks like I need to drop my database???
> Or will we be able to write an sql-patch?
>=20
> Florian
>=20
> > -----Original Message-----
> > From: Jirka Pech [mailto:fi...@us...]
> > Sent: Wednesday, September 04, 2002 9:24 AM
> > To: php...@li...
> > Subject: Re: [phpBT-dev] Could someone help fix the=20
> Oracle-SQL stuff?
> >=20
> >=20
> > > First of all, I think there is a comma too much after the=20
> > second 'sum'.
> > > If I fix that, it gives me the following:
> > >
> > > DB Error: no such field
> > > SELECT sum(decode( s.status_id, BUG_UNCONFIRMED, 1,=20
> BUG_PROMOTED, 1,
> > > BUG_ASSIGNED, 1, BUG_REOPENED, 1, 0 )), sum(decode( s.status_id,
> > > BUG_UNCONFIRMED, 0, BUG_PROMOTED, 0, BUG_ASSIGNED, 0,=20
> > BUG_REOPENED, 0, 1 ))
> > > from phpbt_bug b, phpbt_status s where b.status_id =3D=20
> > s.status_id (+) and
> > > b.assigned_to =3D 1 [nativecode=3DORA-00904: invalid column name =
]
> > >
> > > If I pretty print that in SQL*Plus Worksheet, I get:
> > > SELECT
> > > sum(decode(s.status_id,
> > > BUG_UNCONFIRMED, 1,
> > > BUG_PROMOTED, 1,
> > > BUG_ASSIGNED, 1,
> > > BUG_REOPENED, 1,
> > > 0 )),
> > > sum(decode(s.status_id,
> > > BUG_UNCONFIRMED, 0,
> > > BUG_PROMOTED, 0,
> > > BUG_ASSIGNED, 0,
> > > BUG_REOPENED, 0,
> > > 1 ))
> > > from phpbt_bug b, phpbt_status s where b.status_id =3D=20
> > s.status_id (+) and
> > > b.assigned_to =3D 1;
> > >
> > > Where the error is:
> > > BUG_REOPENED, 0,
> > > *
> > > FEHLER in Zeile 12:
> >=20
> > This means error on line 12? I hope so.
> >=20
> > > ORA-00904: Ung=FCltiger Spaltenname (invalid column name)
> >=20
> > ORACLE doesn't know BUG_REOPENED column.
> >=20
> > > Any hints on how to fix it?
> >=20
> > What DECODE does is that it takes at least three parameters:=20
> > DECODE (haystack,=20
> > needle_1, value_1, ... , needle_n, value_n, value_when_null),
> > where needle_X is value, which must be found in the haystack=20
> > column and when=20
> > it is, DECODE will replace this value with value_X. Other=20
> > parameters are self=20
> > explanatory.
> >=20
> > phpbt_status.status_id is a number, so I actually don't know=20
> > why there is a=20
> > DECODE function used, replacing constants with numbers.
> >=20
> > I hope you will be able to repair this, because I have no=20
> > time to look on it.
> >=20
> > Have a nice day!
> > Jirka Pech
> >=20
> >=20
> >=20
> > -------------------------------------------------------
> > This sf.net email is sponsored by: OSDN - Tired of that same old
> > cell phone? Get a new here for FREE!
> > https://www.inphonic.com/r.asp?r=3Dsourceforge1&refcode1=3Dvs3390
> > _______________________________________________
> > phpbt-dev mailing list
> > php...@li...
> > https://lists.sourceforge.net/lists/listinfo/phpbt-dev
> >=20
>=20
>=20
> -------------------------------------------------------
> This sf.net email is sponsored by: OSDN - Tired of that same old
> cell phone? Get a new here for FREE!
> https://www.inphonic.com/r.asp?r=3Dsourceforge1&refcode1=3Dvs3390
> _______________________________________________
> phpbt-dev mailing list
> php...@li...
> https://lists.sourceforge.net/lists/listinfo/phpbt-dev
>=20
|
|
From: Florian K. <Flo...@in...> - 2002-09-04 07:53:54
|
(changed the topic)
I found that these defines are in the table phpbt_configuration,
and that I am missing some of these.
The function 'upgrade' in upgrade.php defines these.
How can I upgrade without logging in?
So I started patching my database manually (ugh), like this:
INSERT INTO phpbt_configuration VALUES ('BUG_REOPENED', '4', 'The =
status
to assign a bug when it is reopened.', 'multi');
Now having these 'defines' I get this when I try to log in:
DB Error: no such field
select saved_queries from phpbt_user_pref where user_id=3D'1'
[nativecode=3DORA-00904: invalid column name ]
Looks like I need to drop my database???
Or will we be able to write an sql-patch?
Florian
> -----Original Message-----
> From: Jirka Pech [mailto:fi...@us...]
> Sent: Wednesday, September 04, 2002 9:24 AM
> To: php...@li...
> Subject: Re: [phpBT-dev] Could someone help fix the Oracle-SQL stuff?
>=20
>=20
> > First of all, I think there is a comma too much after the=20
> second 'sum'.
> > If I fix that, it gives me the following:
> >
> > DB Error: no such field
> > SELECT sum(decode( s.status_id, BUG_UNCONFIRMED, 1, BUG_PROMOTED, =
1,
> > BUG_ASSIGNED, 1, BUG_REOPENED, 1, 0 )), sum(decode( s.status_id,
> > BUG_UNCONFIRMED, 0, BUG_PROMOTED, 0, BUG_ASSIGNED, 0,=20
> BUG_REOPENED, 0, 1 ))
> > from phpbt_bug b, phpbt_status s where b.status_id =3D=20
> s.status_id (+) and
> > b.assigned_to =3D 1 [nativecode=3DORA-00904: invalid column name ]
> >
> > If I pretty print that in SQL*Plus Worksheet, I get:
> > SELECT
> > sum(decode(s.status_id,
> > BUG_UNCONFIRMED, 1,
> > BUG_PROMOTED, 1,
> > BUG_ASSIGNED, 1,
> > BUG_REOPENED, 1,
> > 0 )),
> > sum(decode(s.status_id,
> > BUG_UNCONFIRMED, 0,
> > BUG_PROMOTED, 0,
> > BUG_ASSIGNED, 0,
> > BUG_REOPENED, 0,
> > 1 ))
> > from phpbt_bug b, phpbt_status s where b.status_id =3D=20
> s.status_id (+) and
> > b.assigned_to =3D 1;
> >
> > Where the error is:
> > BUG_REOPENED, 0,
> > *
> > FEHLER in Zeile 12:
>=20
> This means error on line 12? I hope so.
>=20
> > ORA-00904: Ung=FCltiger Spaltenname (invalid column name)
>=20
> ORACLE doesn't know BUG_REOPENED column.
>=20
> > Any hints on how to fix it?
>=20
> What DECODE does is that it takes at least three parameters:=20
> DECODE (haystack,=20
> needle_1, value_1, ... , needle_n, value_n, value_when_null),
> where needle_X is value, which must be found in the haystack=20
> column and when=20
> it is, DECODE will replace this value with value_X. Other=20
> parameters are self=20
> explanatory.
>=20
> phpbt_status.status_id is a number, so I actually don't know=20
> why there is a=20
> DECODE function used, replacing constants with numbers.
>=20
> I hope you will be able to repair this, because I have no=20
> time to look on it.
>=20
> Have a nice day!
> Jirka Pech
>=20
>=20
>=20
> -------------------------------------------------------
> This sf.net email is sponsored by: OSDN - Tired of that same old
> cell phone? Get a new here for FREE!
> https://www.inphonic.com/r.asp?r=3Dsourceforge1&refcode1=3Dvs3390
> _______________________________________________
> phpbt-dev mailing list
> php...@li...
> https://lists.sourceforge.net/lists/listinfo/phpbt-dev
>=20
|
|
From: Jirka P. <fi...@us...> - 2002-09-04 07:26:57
|
> First of all, I think there is a comma too much after the second 'sum'. > If I fix that, it gives me the following: > > DB Error: no such field > SELECT sum(decode( s.status_id, BUG_UNCONFIRMED, 1, BUG_PROMOTED, 1, > BUG_ASSIGNED, 1, BUG_REOPENED, 1, 0 )), sum(decode( s.status_id, > BUG_UNCONFIRMED, 0, BUG_PROMOTED, 0, BUG_ASSIGNED, 0, BUG_REOPENED, 0, = 1 )) > from phpbt_bug b, phpbt_status s where b.status_id =3D s.status_id (+) = and > b.assigned_to =3D 1 [nativecode=3DORA-00904: invalid column name ] > > If I pretty print that in SQL*Plus Worksheet, I get: > SELECT > sum(decode(s.status_id, > BUG_UNCONFIRMED, 1, > BUG_PROMOTED, 1, > BUG_ASSIGNED, 1, > BUG_REOPENED, 1, > 0 )), > sum(decode(s.status_id, > BUG_UNCONFIRMED, 0, > BUG_PROMOTED, 0, > BUG_ASSIGNED, 0, > BUG_REOPENED, 0, > 1 )) > from phpbt_bug b, phpbt_status s where b.status_id =3D s.status_id (+) = and > b.assigned_to =3D 1; > > Where the error is: > BUG_REOPENED, 0, > * > FEHLER in Zeile 12: This means error on line 12? I hope so. > ORA-00904: Ung=FCltiger Spaltenname (invalid column name) ORACLE doesn't know BUG_REOPENED column. > Any hints on how to fix it? What DECODE does is that it takes at least three parameters: DECODE (hays= tack,=20 needle_1, value_1, ... , needle_n, value_n, value_when_null), where needle_X is value, which must be found in the haystack column and w= hen=20 it is, DECODE will replace this value with value_X. Other parameters are = self=20 explanatory. phpbt_status.status_id is a number, so I actually don't know why there is= a=20 DECODE function used, replacing constants with numbers. I hope you will be able to repair this, because I have no time to look on= it. Have a nice day! Jirka Pech |
|
From: Benjamin C. <bc...@us...> - 2002-09-03 19:45:08
|
Update of /cvsroot/phpbt/phpbt/inc/db In directory usw-pr-cvs1:/tmp/cvs-serv26076/inc/db Modified Files: mysql.php oci8.php pgsql.php Log Message: Fixes bug #546264 - Someone verify, please. :) Index: mysql.php =================================================================== RCS file: /cvsroot/phpbt/phpbt/inc/db/mysql.php,v retrieving revision 1.12 retrieving revision 1.13 diff -u -r1.12 -r1.13 --- mysql.php 18 Jul 2002 13:02:15 -0000 1.12 +++ mysql.php 3 Sep 2002 19:44:56 -0000 1.13 @@ -129,7 +129,7 @@ 'query-list-bugs-count' => 'select count(*) '. 'from '.TBL_BUG.' b '. 'left join '.TBL_AUTH_USER.' owner on b.assigned_to = owner.user_id '. - 'left join '.TBL_AUTH_USER.' reporter on b.created_by = reporter.user_id ', + 'left join '.TBL_AUTH_USER.' reporter on b.created_by = reporter.user_id where ', 'query-list-bugs' => 'select %s '. 'from '.TBL_BUG.' b '. 'left join '.TBL_AUTH_USER.' owner on b.assigned_to = owner.user_id '. Index: oci8.php =================================================================== RCS file: /cvsroot/phpbt/phpbt/inc/db/oci8.php,v retrieving revision 1.8 retrieving revision 1.9 diff -u -r1.8 -r1.9 --- oci8.php 18 Jul 2002 13:02:15 -0000 1.8 +++ oci8.php 3 Sep 2002 19:44:57 -0000 1.9 @@ -132,7 +132,7 @@ 'query-list-bugs-count' => 'select count(*) '. 'from '.TBL_BUG.' b, '.TBL_AUTH_USER.' owner, '.TBL_AUTH_USER.' reporter '. 'where b.assigned_to = owner.user_id(+) '. - 'and b.created_by = reporter.user_id(+) ', + 'and b.created_by = reporter.user_id(+) and ', 'query-list-bugs' => 'select %s '. 'from '.TBL_BUG.' b, '.TBL_AUTH_USER.' lastmodifier, '. TBL_AUTH_USER.' owner, '.TBL_AUTH_USER.' reporter, '. Index: pgsql.php =================================================================== RCS file: /cvsroot/phpbt/phpbt/inc/db/pgsql.php,v retrieving revision 1.17 retrieving revision 1.18 diff -u -r1.17 -r1.18 --- pgsql.php 18 Jul 2002 13:02:15 -0000 1.17 +++ pgsql.php 3 Sep 2002 19:45:01 -0000 1.18 @@ -127,7 +127,7 @@ 'query-list-bugs-count' => 'select count(*) '. 'from '.TBL_BUG.' b '. 'left join '.TBL_AUTH_USER.' owner on b.assigned_to = owner.user_id '. - 'left join '.TBL_AUTH_USER.' reporter on b.created_by = reporter.user_id ', + 'left join '.TBL_AUTH_USER.' reporter on b.created_by = reporter.user_id where ', 'query-list-bugs' => 'select %s '. 'from '.TBL_BUG.' b '. 'left join '.TBL_AUTH_USER.' owner on b.assigned_to = owner.user_id '. |
|
From: Benjamin C. <bc...@us...> - 2002-09-03 19:43:52
|
Update of /cvsroot/phpbt/phpbt
In directory usw-pr-cvs1:/tmp/cvs-serv25579
Modified Files:
query.php
Log Message:
Fixes bugs #546264 and 591125
Index: query.php
===================================================================
RCS file: /cvsroot/phpbt/phpbt/query.php,v
retrieving revision 1.85
retrieving revision 1.86
diff -u -r1.85 -r1.86
--- query.php 27 Aug 2002 00:14:32 -0000 1.85
+++ query.php 3 Sep 2002 19:43:48 -0000 1.86
@@ -57,7 +57,18 @@
function build_query($assignedto, $reportedby, $open) {
global $db, $_sv, $_gv, $perm, $restricted_projects;
- foreach ($_gv as $k => $v) { $$k = $v; }
+ $paramstr = '';
+ foreach ($_gv as $k => $v) {
+ $$k = $v;
+ if ($k == 'order' or $k == 'sort') continue;
+ if (is_array($v)) {
+ foreach ($v as $value) {
+ $paramstr .= "&{$k}[]=$value";
+ }
+ } else {
+ $paramstr .= "&$k=$v";
+ }
+ }
// Open bugs assigned to the user -- a hit list
if ($assignedto || $reportedby) {
@@ -136,9 +147,9 @@
}
if (!empty($query)) {
- return delimit_list(' and ',$query);
+ return array(delimit_list(' and ',$query), $paramstr);
} else {
- return '';
+ return array('', '');
}
}
@@ -273,12 +284,12 @@
$HTTP_SESSION_VARS['queryinfo']['sort'] = $sort;
if (empty($HTTP_SESSION_VARS['queryinfo']['query']) or isset($op)) {
- $HTTP_SESSION_VARS['queryinfo']['query'] = build_query($assignedto, $reportedby, $open);
+ list($HTTP_SESSION_VARS['queryinfo']['query'], $paramstr) =
+ build_query($assignedto, $reportedby, $open);
}
-
$nr = $db->getOne($QUERY['query-list-bugs-count'].
(!empty($HTTP_SESSION_VARS['queryinfo']['query'])
- ? "and {$HTTP_SESSION_VARS['queryinfo']['query']}": ''));
+ ? $HTTP_SESSION_VARS['queryinfo']['query']: '1'));
$HTTP_SESSION_VARS['queryinfo']['numrows'] = $nr;
list($selrange, $llimit) = multipages($nr, $page, "order=$order&sort=$sort");
@@ -304,7 +315,7 @@
? "and {$HTTP_SESSION_VARS['queryinfo']['query']} " : ''),
$order, $sort), $llimit, $selrange)));
- sorting_headers($me, $headers, $order, $sort, "page=$page");
+ sorting_headers($me, $headers, $order, $sort, "page=$page".$paramstr);
$t->wrap('buglist.html', 'buglist');
}
|
|
From: Benjamin C. <bc...@us...> - 2002-09-03 19:42:22
|
Update of /cvsroot/phpbt/phpbt/styles
In directory usw-pr-cvs1:/tmp/cvs-serv24927/styles
Modified Files:
default.css
Log Message:
Changes for new look
Index: default.css
===================================================================
RCS file: /cvsroot/phpbt/phpbt/styles/default.css,v
retrieving revision 1.1
retrieving revision 1.2
diff -u -r1.1 -r1.2
--- default.css 3 Apr 2002 18:18:03 -0000 1.1
+++ default.css 3 Sep 2002 19:42:19 -0000 1.2
@@ -108,9 +108,6 @@
font-family: "Arial", sans-serif;
font-size: 16px;
font-weight: bold;
- border-width: 0px 0px 3px 0px;
- border-color: #000000;
- border-style: solid;
}
.navinput {
@@ -213,3 +210,10 @@
.header-col { font-weight: bold; }
.center-col { text-align: center; }
+
+.navlink {
+ color: #FFFFFF;
+ text-decoration: none;
+ font-family: Arial, Helvetica, sans-serif;
+ font-weight: bold;
+}
|