From c37475838fb0b44e15093c5e8fa37f3774dec01c Mon Sep 17 00:00:00 2001 From: David Grudl Date: Sun, 3 Jan 2010 15:15:37 +0100 Subject: [PATCH] - year 2009 -> 2010 --- dibi/Nette/IDebuggable.php | 7 ++- dibi/dibi.php | 9 ++-- dibi/drivers/firebird.php | 13 ++---- dibi/drivers/mssql.php | 12 +----- dibi/drivers/mssql2005.php | 12 +----- dibi/drivers/mysql.php | 12 +----- dibi/drivers/mysqli.php | 12 +----- dibi/drivers/odbc.php | 12 +----- dibi/drivers/oracle.php | 12 +----- dibi/drivers/pdo.php | 12 +----- dibi/drivers/postgre.php | 12 +----- dibi/drivers/sqlite.php | 12 +----- dibi/drivers/sqlite3.php | 12 +----- dibi/libs/DibiConnection.php | 12 +----- dibi/libs/DibiDataSource.php | 12 +----- dibi/libs/DibiDatabaseInfo.php | 27 +++--------- dibi/libs/DibiException.php | 15 ++----- dibi/libs/DibiFluent.php | 12 +----- dibi/libs/DibiObject.php | 12 +----- dibi/libs/DibiProfiler.php | 12 +----- dibi/libs/DibiResult.php | 12 +----- dibi/libs/DibiResultIterator.php | 12 +----- dibi/libs/DibiRow.php | 12 +----- dibi/libs/DibiTranslator.php | 12 +----- dibi/libs/interfaces.php | 12 +----- examples/Nette/Debug.php | 74 +++++++++++++++----------------- readme.txt | 2 +- 27 files changed, 95 insertions(+), 292 deletions(-) diff --git a/dibi/Nette/IDebuggable.php b/dibi/Nette/IDebuggable.php index 7d9e743e..da195ff2 100644 --- a/dibi/Nette/IDebuggable.php +++ b/dibi/Nette/IDebuggable.php @@ -3,14 +3,14 @@ /** * Nette Framework * - * Copyright (c) 2004, 2009 David Grudl (http://davidgrudl.com) + * Copyright (c) 2004, 2010 David Grudl (http://davidgrudl.com) * * This source file is subject to the "Nette license" that is bundled * with this package in the file license.txt. * * For more information please see http://nettephp.com * - * @copyright Copyright (c) 2004, 2009 David Grudl + * @copyright Copyright (c) 2004, 2010 David Grudl * @license http://nettephp.com/license Nette license * @link http://nettephp.com * @category Nette @@ -24,8 +24,7 @@ /** * Custom output for Nette\Debug. * - * @author David Grudl - * @copyright Copyright (c) 2004, 2009 David Grudl + * @copyright Copyright (c) 2004, 2010 David Grudl * @package Nette */ interface IDebuggable diff --git a/dibi/dibi.php b/dibi/dibi.php index 32d3fdf0..14c57ece 100644 --- a/dibi/dibi.php +++ b/dibi/dibi.php @@ -4,14 +4,14 @@ * dibi - tiny'n'smart database abstraction layer * ---------------------------------------------- * - * Copyright (c) 2005, 2009 David Grudl (http://davidgrudl.com) + * Copyright (c) 2005, 2010 David Grudl (http://davidgrudl.com) * * This source file is subject to the "dibi license" that is bundled - * with this package in the file license.txt. + * with this package in the file license.txt, and/or GPL license. * * For more information please see http://dibiphp.com * - * @copyright Copyright (c) 2005, 2009 David Grudl + * @copyright Copyright (c) 2005, 2010 David Grudl * @license http://dibiphp.com/license dibi license * @link http://dibiphp.com * @package dibi @@ -99,8 +99,7 @@ require_once dirname(__FILE__) . '/libs/DibiProfiler.php'; * This class is static container class for creating DB objects and * store connections info. * - * @author David Grudl - * @copyright Copyright (c) 2005, 2009 David Grudl + * @copyright Copyright (c) 2005, 2010 David Grudl * @package dibi */ class dibi diff --git a/dibi/drivers/firebird.php b/dibi/drivers/firebird.php index 4c3e285e..74e3d394 100644 --- a/dibi/drivers/firebird.php +++ b/dibi/drivers/firebird.php @@ -4,14 +4,7 @@ * dibi - tiny'n'smart database abstraction layer * ---------------------------------------------- * - * Copyright (c) 2005, 2009 David Grudl (http://davidgrudl.com) - * - * This source file is subject to the "dibi license" that is bundled - * with this package in the file license.txt. - * - * For more information please see http://dibiphp.com - * - * @copyright Copyright (c) 2005, 2009 David Grudl + * @copyright Copyright (c) 2005, 2010 David Grudl * @license http://dibiphp.com/license dibi license * @link http://dibiphp.com * @package dibi @@ -31,7 +24,7 @@ * - 'resource' - connection resource (optional) * * @author Tomáš Kraina, Roman Sklenář - * @copyright Copyright (c) 2009 + * @copyright Copyright (c) 2010 * @package dibi */ class DibiFirebirdDriver extends DibiObject implements IDibiDriver @@ -800,7 +793,7 @@ class DibiFirebirdDriver extends DibiObject implements IDibiDriver * Database procedure exception. * * @author Roman Sklenář - * @copyright Copyright (c) 2009 + * @copyright Copyright (c) 2010 * @package dibi */ class DibiProcedureException extends DibiException diff --git a/dibi/drivers/mssql.php b/dibi/drivers/mssql.php index 8ea1a81e..d55709e5 100644 --- a/dibi/drivers/mssql.php +++ b/dibi/drivers/mssql.php @@ -4,14 +4,7 @@ * dibi - tiny'n'smart database abstraction layer * ---------------------------------------------- * - * Copyright (c) 2005, 2009 David Grudl (http://davidgrudl.com) - * - * This source file is subject to the "dibi license" that is bundled - * with this package in the file license.txt. - * - * For more information please see http://dibiphp.com - * - * @copyright Copyright (c) 2005, 2009 David Grudl + * @copyright Copyright (c) 2005, 2010 David Grudl * @license http://dibiphp.com/license dibi license * @link http://dibiphp.com * @package dibi @@ -30,8 +23,7 @@ * - 'lazy' - if TRUE, connection will be established only when required * - 'resource' - connection resource (optional) * - * @author David Grudl - * @copyright Copyright (c) 2005, 2009 David Grudl + * @copyright Copyright (c) 2005, 2010 David Grudl * @package dibi */ class DibiMsSqlDriver extends DibiObject implements IDibiDriver diff --git a/dibi/drivers/mssql2005.php b/dibi/drivers/mssql2005.php index ecce70c0..951dc597 100644 --- a/dibi/drivers/mssql2005.php +++ b/dibi/drivers/mssql2005.php @@ -4,14 +4,7 @@ * dibi - tiny'n'smart database abstraction layer * ---------------------------------------------- * - * Copyright (c) 2005, 2009 David Grudl (http://davidgrudl.com) - * - * This source file is subject to the "dibi license" that is bundled - * with this package in the file license.txt. - * - * For more information please see http://dibiphp.com - * - * @copyright Copyright (c) 2005, 2009 David Grudl + * @copyright Copyright (c) 2005, 2010 David Grudl * @license http://dibiphp.com/license dibi license * @link http://dibiphp.com * @package dibi @@ -28,8 +21,7 @@ * - 'charset' - character encoding to set (default is UTF-8) * - 'resource' - connection resource (optional) * - * @author David Grudl - * @copyright Copyright (c) 2005, 2009 David Grudl + * @copyright Copyright (c) 2005, 2010 David Grudl * @package dibi */ class DibiMsSql2005Driver extends DibiObject implements IDibiDriver diff --git a/dibi/drivers/mysql.php b/dibi/drivers/mysql.php index 95c49a80..07f40f60 100644 --- a/dibi/drivers/mysql.php +++ b/dibi/drivers/mysql.php @@ -4,14 +4,7 @@ * dibi - tiny'n'smart database abstraction layer * ---------------------------------------------- * - * Copyright (c) 2005, 2009 David Grudl (http://davidgrudl.com) - * - * This source file is subject to the "dibi license" that is bundled - * with this package in the file license.txt. - * - * For more information please see http://dibiphp.com - * - * @copyright Copyright (c) 2005, 2009 David Grudl + * @copyright Copyright (c) 2005, 2010 David Grudl * @license http://dibiphp.com/license dibi license * @link http://dibiphp.com * @package dibi @@ -36,8 +29,7 @@ * - 'lazy' - if TRUE, connection will be established only when required * - 'resource' - connection resource (optional) * - * @author David Grudl - * @copyright Copyright (c) 2005, 2009 David Grudl + * @copyright Copyright (c) 2005, 2010 David Grudl * @package dibi */ class DibiMySqlDriver extends DibiObject implements IDibiDriver diff --git a/dibi/drivers/mysqli.php b/dibi/drivers/mysqli.php index f7fbdb37..66b0c551 100644 --- a/dibi/drivers/mysqli.php +++ b/dibi/drivers/mysqli.php @@ -4,14 +4,7 @@ * dibi - tiny'n'smart database abstraction layer * ---------------------------------------------- * - * Copyright (c) 2005, 2009 David Grudl (http://davidgrudl.com) - * - * This source file is subject to the "dibi license" that is bundled - * with this package in the file license.txt. - * - * For more information please see http://dibiphp.com - * - * @copyright Copyright (c) 2005, 2009 David Grudl + * @copyright Copyright (c) 2005, 2010 David Grudl * @license http://dibiphp.com/license dibi license * @link http://dibiphp.com * @package dibi @@ -36,8 +29,7 @@ * - 'lazy' - if TRUE, connection will be established only when required * - 'resource' - connection resource (optional) * - * @author David Grudl - * @copyright Copyright (c) 2005, 2009 David Grudl + * @copyright Copyright (c) 2005, 2010 David Grudl * @package dibi */ class DibiMySqliDriver extends DibiObject implements IDibiDriver diff --git a/dibi/drivers/odbc.php b/dibi/drivers/odbc.php index 9b737dcd..b0f5a878 100644 --- a/dibi/drivers/odbc.php +++ b/dibi/drivers/odbc.php @@ -4,14 +4,7 @@ * dibi - tiny'n'smart database abstraction layer * ---------------------------------------------- * - * Copyright (c) 2005, 2009 David Grudl (http://davidgrudl.com) - * - * This source file is subject to the "dibi license" that is bundled - * with this package in the file license.txt. - * - * For more information please see http://dibiphp.com - * - * @copyright Copyright (c) 2005, 2009 David Grudl + * @copyright Copyright (c) 2005, 2010 David Grudl * @license http://dibiphp.com/license dibi license * @link http://dibiphp.com * @package dibi @@ -29,8 +22,7 @@ * - 'lazy' - if TRUE, connection will be established only when required * - 'resource' - connection resource (optional) * - * @author David Grudl - * @copyright Copyright (c) 2005, 2009 David Grudl + * @copyright Copyright (c) 2005, 2010 David Grudl * @package dibi */ class DibiOdbcDriver extends DibiObject implements IDibiDriver diff --git a/dibi/drivers/oracle.php b/dibi/drivers/oracle.php index 1d49f0ff..0421a5b1 100644 --- a/dibi/drivers/oracle.php +++ b/dibi/drivers/oracle.php @@ -4,14 +4,7 @@ * dibi - tiny'n'smart database abstraction layer * ---------------------------------------------- * - * Copyright (c) 2005, 2009 David Grudl (http://davidgrudl.com) - * - * This source file is subject to the "dibi license" that is bundled - * with this package in the file license.txt. - * - * For more information please see http://dibiphp.com - * - * @copyright Copyright (c) 2005, 2009 David Grudl + * @copyright Copyright (c) 2005, 2010 David Grudl * @license http://dibiphp.com/license dibi license * @link http://dibiphp.com * @package dibi @@ -31,8 +24,7 @@ * - 'charset' - character encoding to set * - 'resource' - connection resource (optional) * - * @author David Grudl - * @copyright Copyright (c) 2005, 2009 David Grudl + * @copyright Copyright (c) 2005, 2010 David Grudl * @package dibi */ class DibiOracleDriver extends DibiObject implements IDibiDriver diff --git a/dibi/drivers/pdo.php b/dibi/drivers/pdo.php index 323d1bb3..87803b75 100644 --- a/dibi/drivers/pdo.php +++ b/dibi/drivers/pdo.php @@ -4,14 +4,7 @@ * dibi - tiny'n'smart database abstraction layer * ---------------------------------------------- * - * Copyright (c) 2005, 2009 David Grudl (http://davidgrudl.com) - * - * This source file is subject to the "dibi license" that is bundled - * with this package in the file license.txt. - * - * For more information please see http://dibiphp.com - * - * @copyright Copyright (c) 2005, 2009 David Grudl + * @copyright Copyright (c) 2005, 2010 David Grudl * @license http://dibiphp.com/license dibi license * @link http://dibiphp.com * @package dibi @@ -29,8 +22,7 @@ * - 'resource' - PDO object (optional) * - 'lazy' - if TRUE, connection will be established only when required * - * @author David Grudl - * @copyright Copyright (c) 2005, 2009 David Grudl + * @copyright Copyright (c) 2005, 2010 David Grudl * @package dibi */ class DibiPdoDriver extends DibiObject implements IDibiDriver diff --git a/dibi/drivers/postgre.php b/dibi/drivers/postgre.php index 6d5eb220..3b4ba477 100644 --- a/dibi/drivers/postgre.php +++ b/dibi/drivers/postgre.php @@ -4,14 +4,7 @@ * dibi - tiny'n'smart database abstraction layer * ---------------------------------------------- * - * Copyright (c) 2005, 2009 David Grudl (http://davidgrudl.com) - * - * This source file is subject to the "dibi license" that is bundled - * with this package in the file license.txt. - * - * For more information please see http://dibiphp.com - * - * @copyright Copyright (c) 2005, 2009 David Grudl + * @copyright Copyright (c) 2005, 2010 David Grudl * @license http://dibiphp.com/license dibi license * @link http://dibiphp.com * @package dibi @@ -30,8 +23,7 @@ * - 'lazy' - if TRUE, connection will be established only when required * - 'resource' - connection resource (optional) * - * @author David Grudl - * @copyright Copyright (c) 2005, 2009 David Grudl + * @copyright Copyright (c) 2005, 2010 David Grudl * @package dibi */ class DibiPostgreDriver extends DibiObject implements IDibiDriver diff --git a/dibi/drivers/sqlite.php b/dibi/drivers/sqlite.php index c1065e36..e6667d3d 100644 --- a/dibi/drivers/sqlite.php +++ b/dibi/drivers/sqlite.php @@ -4,14 +4,7 @@ * dibi - tiny'n'smart database abstraction layer * ---------------------------------------------- * - * Copyright (c) 2005, 2009 David Grudl (http://davidgrudl.com) - * - * This source file is subject to the "dibi license" that is bundled - * with this package in the file license.txt. - * - * For more information please see http://dibiphp.com - * - * @copyright Copyright (c) 2005, 2009 David Grudl + * @copyright Copyright (c) 2005, 2010 David Grudl * @license http://dibiphp.com/license dibi license * @link http://dibiphp.com * @package dibi @@ -32,8 +25,7 @@ * - 'charset' - character encoding to set (default is UTF-8) * - 'resource' - connection resource (optional) * - * @author David Grudl - * @copyright Copyright (c) 2005, 2009 David Grudl + * @copyright Copyright (c) 2005, 2010 David Grudl * @package dibi */ class DibiSqliteDriver extends DibiObject implements IDibiDriver diff --git a/dibi/drivers/sqlite3.php b/dibi/drivers/sqlite3.php index b5cd2911..a4cb67a6 100644 --- a/dibi/drivers/sqlite3.php +++ b/dibi/drivers/sqlite3.php @@ -4,14 +4,7 @@ * dibi - tiny'n'smart database abstraction layer * ---------------------------------------------- * - * Copyright (c) 2005, 2009 David Grudl (http://davidgrudl.com) - * - * This source file is subject to the "dibi license" that is bundled - * with this package in the file license.txt. - * - * For more information please see http://dibiphp.com - * - * @copyright Copyright (c) 2005, 2009 David Grudl + * @copyright Copyright (c) 2005, 2010 David Grudl * @license http://dibiphp.com/license dibi license * @link http://dibiphp.com * @package dibi @@ -30,8 +23,7 @@ * - 'charset' - character encoding to set (default is UTF-8) * - 'resource' - connection resource (optional) * - * @author David Grudl - * @copyright Copyright (c) 2005, 2009 David Grudl + * @copyright Copyright (c) 2005, 2010 David Grudl * @package dibi */ class DibiSqlite3Driver extends DibiObject implements IDibiDriver diff --git a/dibi/libs/DibiConnection.php b/dibi/libs/DibiConnection.php index f53a652c..f8776e6d 100644 --- a/dibi/libs/DibiConnection.php +++ b/dibi/libs/DibiConnection.php @@ -4,14 +4,7 @@ * dibi - tiny'n'smart database abstraction layer * ---------------------------------------------- * - * Copyright (c) 2005, 2009 David Grudl (http://davidgrudl.com) - * - * This source file is subject to the "dibi license" that is bundled - * with this package in the file license.txt. - * - * For more information please see http://dibiphp.com - * - * @copyright Copyright (c) 2005, 2009 David Grudl + * @copyright Copyright (c) 2005, 2010 David Grudl * @license http://dibiphp.com/license dibi license * @link http://dibiphp.com * @package dibi @@ -22,8 +15,7 @@ /** * dibi connection. * - * @author David Grudl - * @copyright Copyright (c) 2005, 2009 David Grudl + * @copyright Copyright (c) 2005, 2010 David Grudl * @package dibi */ class DibiConnection extends DibiObject diff --git a/dibi/libs/DibiDataSource.php b/dibi/libs/DibiDataSource.php index 183cf5ac..aed7c33d 100644 --- a/dibi/libs/DibiDataSource.php +++ b/dibi/libs/DibiDataSource.php @@ -4,14 +4,7 @@ * dibi - tiny'n'smart database abstraction layer * ---------------------------------------------- * - * Copyright (c) 2005, 2009 David Grudl (http://davidgrudl.com) - * - * This source file is subject to the "dibi license" that is bundled - * with this package in the file license.txt. - * - * For more information please see http://dibiphp.com - * - * @copyright Copyright (c) 2005, 2009 David Grudl + * @copyright Copyright (c) 2005, 2010 David Grudl * @license http://dibiphp.com/license dibi license * @link http://dibiphp.com * @package dibi @@ -22,8 +15,7 @@ /** * Default implementation of IDataSource for dibi. * - * @author David Grudl - * @copyright Copyright (c) 2005, 2009 David Grudl + * @copyright Copyright (c) 2005, 2010 David Grudl * @package dibi */ class DibiDataSource extends DibiObject implements IDataSource diff --git a/dibi/libs/DibiDatabaseInfo.php b/dibi/libs/DibiDatabaseInfo.php index 8e270fed..bf67071f 100644 --- a/dibi/libs/DibiDatabaseInfo.php +++ b/dibi/libs/DibiDatabaseInfo.php @@ -4,14 +4,7 @@ * dibi - tiny'n'smart database abstraction layer * ---------------------------------------------- * - * Copyright (c) 2005, 2009 David Grudl (http://davidgrudl.com) - * - * This source file is subject to the "dibi license" that is bundled - * with this package in the file license.txt. - * - * For more information please see http://dibiphp.com - * - * @copyright Copyright (c) 2005, 2009 David Grudl + * @copyright Copyright (c) 2005, 2010 David Grudl * @license http://dibiphp.com/license dibi license * @link http://dibiphp.com * @package dibi @@ -22,8 +15,7 @@ /** * Reflection metadata class for a database. * - * @author David Grudl - * @copyright Copyright (c) 2005, 2009 David Grudl + * @copyright Copyright (c) 2005, 2010 David Grudl * @package dibi */ class DibiDatabaseInfo extends DibiObject @@ -134,8 +126,7 @@ class DibiDatabaseInfo extends DibiObject /** * Reflection metadata class for a database table. * - * @author David Grudl - * @copyright Copyright (c) 2005, 2009 David Grudl + * @copyright Copyright (c) 2005, 2010 David Grudl * @package dibi */ class DibiTableInfo extends DibiObject @@ -334,8 +325,7 @@ class DibiTableInfo extends DibiObject /** * Reflection metadata class for a result set. * - * @author David Grudl - * @copyright Copyright (c) 2005, 2009 David Grudl + * @copyright Copyright (c) 2005, 2010 David Grudl * @package dibi */ class DibiResultInfo extends DibiObject @@ -436,8 +426,7 @@ class DibiResultInfo extends DibiObject /** * Reflection metadata class for a table or result set column. * - * @author David Grudl - * @copyright Copyright (c) 2005, 2009 David Grudl + * @copyright Copyright (c) 2005, 2010 David Grudl * @package dibi */ class DibiColumnInfo extends DibiObject @@ -618,8 +607,7 @@ class DibiColumnInfo extends DibiObject /** * Reflection metadata class for a foreign key. * - * @author David Grudl - * @copyright Copyright (c) 2005, 2009 David Grudl + * @copyright Copyright (c) 2005, 2010 David Grudl * @package dibi * @todo */ @@ -667,8 +655,7 @@ class DibiForeignKeyInfo extends DibiObject /** * Reflection metadata class for a index or primary key. * - * @author David Grudl - * @copyright Copyright (c) 2005, 2009 David Grudl + * @copyright Copyright (c) 2005, 2010 David Grudl * @package dibi */ class DibiIndexInfo extends DibiObject diff --git a/dibi/libs/DibiException.php b/dibi/libs/DibiException.php index 9dab7216..ccdb3098 100644 --- a/dibi/libs/DibiException.php +++ b/dibi/libs/DibiException.php @@ -4,14 +4,7 @@ * dibi - tiny'n'smart database abstraction layer * ---------------------------------------------- * - * Copyright (c) 2005, 2009 David Grudl (http://davidgrudl.com) - * - * This source file is subject to the "dibi license" that is bundled - * with this package in the file license.txt. - * - * For more information please see http://dibiphp.com - * - * @copyright Copyright (c) 2005, 2009 David Grudl + * @copyright Copyright (c) 2005, 2010 David Grudl * @license http://dibiphp.com/license dibi license * @link http://dibiphp.com * @package dibi @@ -22,8 +15,7 @@ /** * dibi common exception. * - * @author David Grudl - * @copyright Copyright (c) 2005, 2009 David Grudl + * @copyright Copyright (c) 2005, 2010 David Grudl * @package dibi */ class DibiException extends Exception implements /*Nette\*/IDebuggable @@ -94,8 +86,7 @@ class DibiException extends Exception implements /*Nette\*/IDebuggable /** * database server exception. * - * @author David Grudl - * @copyright Copyright (c) 2005, 2009 David Grudl + * @copyright Copyright (c) 2005, 2010 David Grudl * @package dibi */ class DibiDriverException extends DibiException diff --git a/dibi/libs/DibiFluent.php b/dibi/libs/DibiFluent.php index 319f0d90..0f4428c6 100644 --- a/dibi/libs/DibiFluent.php +++ b/dibi/libs/DibiFluent.php @@ -4,14 +4,7 @@ * dibi - tiny'n'smart database abstraction layer * ---------------------------------------------- * - * Copyright (c) 2005, 2009 David Grudl (http://davidgrudl.com) - * - * This source file is subject to the "dibi license" that is bundled - * with this package in the file license.txt. - * - * For more information please see http://dibiphp.com - * - * @copyright Copyright (c) 2005, 2009 David Grudl + * @copyright Copyright (c) 2005, 2010 David Grudl * @license http://dibiphp.com/license dibi license * @link http://dibiphp.com * @package dibi @@ -22,8 +15,7 @@ /** * dibi SQL builder via fluent interfaces. EXPERIMENTAL! * - * @author David Grudl - * @copyright Copyright (c) 2005, 2009 David Grudl + * @copyright Copyright (c) 2005, 2010 David Grudl * @package dibi */ class DibiFluent extends DibiObject implements IDataSource diff --git a/dibi/libs/DibiObject.php b/dibi/libs/DibiObject.php index d6c4c179..b4dd7679 100644 --- a/dibi/libs/DibiObject.php +++ b/dibi/libs/DibiObject.php @@ -4,14 +4,7 @@ * dibi - tiny'n'smart database abstraction layer * ---------------------------------------------- * - * Copyright (c) 2005, 2009 David Grudl (http://davidgrudl.com) - * - * This source file is subject to the "dibi license" that is bundled - * with this package in the file license.txt. - * - * For more information please see http://dibiphp.com - * - * @copyright Copyright (c) 2005, 2009 David Grudl + * @copyright Copyright (c) 2005, 2010 David Grudl * @license http://dibiphp.com/license dibi license * @link http://dibiphp.com * @package dibi @@ -57,8 +50,7 @@ * $obj->newMethod($x); * * - * @author David Grudl - * @copyright Copyright (c) 2005, 2009 David Grudl + * @copyright Copyright (c) 2005, 2010 David Grudl * @package dibi */ abstract class DibiObject diff --git a/dibi/libs/DibiProfiler.php b/dibi/libs/DibiProfiler.php index dfba97d3..78637ce2 100644 --- a/dibi/libs/DibiProfiler.php +++ b/dibi/libs/DibiProfiler.php @@ -4,14 +4,7 @@ * dibi - tiny'n'smart database abstraction layer * ---------------------------------------------- * - * Copyright (c) 2005, 2009 David Grudl (http://davidgrudl.com) - * - * This source file is subject to the "dibi license" that is bundled - * with this package in the file license.txt. - * - * For more information please see http://dibiphp.com - * - * @copyright Copyright (c) 2005, 2009 David Grudl + * @copyright Copyright (c) 2005, 2010 David Grudl * @license http://dibiphp.com/license dibi license * @link http://dibiphp.com * @package dibi @@ -22,8 +15,7 @@ /** * dibi basic logger & profiler (experimental). * - * @author David Grudl - * @copyright Copyright (c) 2005, 2009 David Grudl + * @copyright Copyright (c) 2005, 2010 David Grudl * @package dibi */ class DibiProfiler extends DibiObject implements IDibiProfiler diff --git a/dibi/libs/DibiResult.php b/dibi/libs/DibiResult.php index 53801002..683510aa 100644 --- a/dibi/libs/DibiResult.php +++ b/dibi/libs/DibiResult.php @@ -4,14 +4,7 @@ * dibi - tiny'n'smart database abstraction layer * ---------------------------------------------- * - * Copyright (c) 2005, 2009 David Grudl (http://davidgrudl.com) - * - * This source file is subject to the "dibi license" that is bundled - * with this package in the file license.txt. - * - * For more information please see http://dibiphp.com - * - * @copyright Copyright (c) 2005, 2009 David Grudl + * @copyright Copyright (c) 2005, 2010 David Grudl * @license http://dibiphp.com/license dibi license * @link http://dibiphp.com * @package dibi @@ -35,8 +28,7 @@ * unset($result); * * - * @author David Grudl - * @copyright Copyright (c) 2005, 2009 David Grudl + * @copyright Copyright (c) 2005, 2010 David Grudl * @package dibi */ class DibiResult extends DibiObject implements IDataSource diff --git a/dibi/libs/DibiResultIterator.php b/dibi/libs/DibiResultIterator.php index 2d6094bb..f288eec5 100644 --- a/dibi/libs/DibiResultIterator.php +++ b/dibi/libs/DibiResultIterator.php @@ -4,14 +4,7 @@ * dibi - tiny'n'smart database abstraction layer * ---------------------------------------------- * - * Copyright (c) 2005, 2009 David Grudl (http://davidgrudl.com) - * - * This source file is subject to the "dibi license" that is bundled - * with this package in the file license.txt. - * - * For more information please see http://dibiphp.com - * - * @copyright Copyright (c) 2005, 2009 David Grudl + * @copyright Copyright (c) 2005, 2010 David Grudl * @license http://dibiphp.com/license dibi license * @link http://dibiphp.com * @package dibi @@ -38,8 +31,7 @@ * } * * - * @author David Grudl - * @copyright Copyright (c) 2005, 2009 David Grudl + * @copyright Copyright (c) 2005, 2010 David Grudl * @package dibi */ class DibiResultIterator implements Iterator, Countable diff --git a/dibi/libs/DibiRow.php b/dibi/libs/DibiRow.php index 36985676..dd0b5244 100644 --- a/dibi/libs/DibiRow.php +++ b/dibi/libs/DibiRow.php @@ -4,14 +4,7 @@ * dibi - tiny'n'smart database abstraction layer * ---------------------------------------------- * - * Copyright (c) 2005, 2009 David Grudl (http://davidgrudl.com) - * - * This source file is subject to the "dibi license" that is bundled - * with this package in the file license.txt. - * - * For more information please see http://dibiphp.com - * - * @copyright Copyright (c) 2005, 2009 David Grudl + * @copyright Copyright (c) 2005, 2010 David Grudl * @license http://dibiphp.com/license dibi license * @link http://dibiphp.com * @package dibi @@ -22,8 +15,7 @@ /** * Result-set single row. * - * @author David Grudl - * @copyright Copyright (c) 2005, 2009 David Grudl + * @copyright Copyright (c) 2005, 2010 David Grudl * @package dibi */ class DibiRow extends ArrayObject diff --git a/dibi/libs/DibiTranslator.php b/dibi/libs/DibiTranslator.php index 3f9ab922..c2adbd4d 100644 --- a/dibi/libs/DibiTranslator.php +++ b/dibi/libs/DibiTranslator.php @@ -4,14 +4,7 @@ * dibi - tiny'n'smart database abstraction layer * ---------------------------------------------- * - * Copyright (c) 2005, 2009 David Grudl (http://davidgrudl.com) - * - * This source file is subject to the "dibi license" that is bundled - * with this package in the file license.txt. - * - * For more information please see http://dibiphp.com - * - * @copyright Copyright (c) 2005, 2009 David Grudl + * @copyright Copyright (c) 2005, 2010 David Grudl * @license http://dibiphp.com/license dibi license * @link http://dibiphp.com * @package dibi @@ -22,8 +15,7 @@ /** * dibi SQL translator. * - * @author David Grudl - * @copyright Copyright (c) 2005, 2009 David Grudl + * @copyright Copyright (c) 2005, 2010 David Grudl * @package dibi */ final class DibiTranslator extends DibiObject diff --git a/dibi/libs/interfaces.php b/dibi/libs/interfaces.php index 165996aa..734cb7c5 100644 --- a/dibi/libs/interfaces.php +++ b/dibi/libs/interfaces.php @@ -4,14 +4,7 @@ * dibi - tiny'n'smart database abstraction layer * ---------------------------------------------- * - * Copyright (c) 2005, 2009 David Grudl (http://davidgrudl.com) - * - * This source file is subject to the "dibi license" that is bundled - * with this package in the file license.txt. - * - * For more information please see http://dibiphp.com - * - * @copyright Copyright (c) 2005, 2009 David Grudl + * @copyright Copyright (c) 2005, 2010 David Grudl * @license http://dibiphp.com/license dibi license * @link http://dibiphp.com * @package dibi @@ -87,8 +80,7 @@ interface IDibiProfiler /** * dibi driver interface. * - * @author David Grudl - * @copyright Copyright (c) 2005, 2009 David Grudl + * @copyright Copyright (c) 2005, 2010 David Grudl * @package dibi */ interface IDibiDriver diff --git a/examples/Nette/Debug.php b/examples/Nette/Debug.php index 512a8a3a..fd864a03 100644 --- a/examples/Nette/Debug.php +++ b/examples/Nette/Debug.php @@ -2,23 +2,20 @@ /** * Nette Framework * - * Copyright (c) 2004, 2009 David Grudl (http://davidgrudl.com) + * Copyright (c) 2004, 2010 David Grudl (http://davidgrudl.com) * * This source file is subject to the "Nette license" that is bundled * with this package in the file license.txt. * * For more information please see http://nettephp.com * - * @copyright Copyright (c) 2004, 2009 David Grudl + * @copyright Copyright (c) 2004, 2010 David Grudl * @license http://nettephp.com/license Nette license * @link http://nettephp.com * @category Nette * @package Nette */ - -if(version_compare(PHP_VERSION,'5.2.0','<')){throw -new -Exception('Nette Framework requires PHP 5.2.0 or newer.');}@set_magic_quotes_runtime(FALSE);if(version_compare(PHP_VERSION,'5.2.2','<')){function +@set_magic_quotes_runtime(FALSE);if(version_compare(PHP_VERSION,'5.2.2','<')){function fixCallback(&$callback){if(is_object($callback)){$callback=array($callback,'__invoke');return;}if(is_string($callback)&&strpos($callback,':')){$callback=explode('::',$callback);}if(is_array($callback)&&is_string($callback[0])&&$a=strrpos($callback[0],'\\')){$callback[0]=substr($callback[0],$a+1);}}}else{function fixCallback(&$callback){if(is_object($callback)){$callback=array($callback,'__invoke');}elseif(is_string($callback)&&$a=strrpos($callback,'\\')){$callback=substr($callback,$a+1);}elseif(is_array($callback)&&is_string($callback[0])&&$a=strrpos($callback[0],'\\')){$callback[0]=substr($callback[0],$a+1);}}}function fixNamespace(&$class){if($a=strrpos($class,'\\')){$class=substr($class,$a+1);}}class @@ -60,8 +57,8 @@ getSeverity(){return$this->severity;}}final class Framework{const NAME='Nette Framework';const -VERSION='0.9';const -REVISION='650d722 released on 2009-09-17';const +VERSION='0.9.3-dev';const +REVISION='0459182 released on 2010-01-03';const PACKAGE='PHP 5.2';final public function @@ -91,7 +88,8 @@ PRODUCTION=TRUE;const DETECT=NULL;public static$strictMode=FALSE;public static$onFatalError=array();public -static$mailer=array(__CLASS__,'defaultMailer');private +static$mailer=array(__CLASS__,'defaultMailer');public +static$emailSnooze=172800;private static$enabled=FALSE;private static$logFile;private static$logHandle;private @@ -115,10 +113,10 @@ new LogicException("Cannot instantiate static class ".get_class($this));}public static function -init(){self::$time=microtime(TRUE);self::$consoleMode=PHP_SAPI==='cli';self::$productionMode=self::DETECT;self::$firebugDetected=isset($_SERVER['HTTP_USER_AGENT'])&&strpos($_SERVER['HTTP_USER_AGENT'],'FirePHP/');self::$ajaxDetected=isset($_SERVER['HTTP_X_REQUESTED_WITH'])&&$_SERVER['HTTP_X_REQUESTED_WITH']==='XMLHttpRequest';register_shutdown_function(array(__CLASS__,'shutdownHandler'));}public +_init(){self::$time=microtime(TRUE);self::$consoleMode=PHP_SAPI==='cli';self::$productionMode=self::DETECT;self::$firebugDetected=isset($_SERVER['HTTP_USER_AGENT'])&&strpos($_SERVER['HTTP_USER_AGENT'],'FirePHP/');self::$ajaxDetected=isset($_SERVER['HTTP_X_REQUESTED_WITH'])&&$_SERVER['HTTP_X_REQUESTED_WITH']==='XMLHttpRequest';register_shutdown_function(array(__CLASS__,'_shutdownHandler'));}public static function -shutdownHandler(){static$types=array(E_ERROR=>1,E_CORE_ERROR=>1,E_COMPILE_ERROR=>1,E_PARSE=>1);$error=error_get_last();if(isset($types[$error['type']])){if(!headers_sent()){header('HTTP/1.1 500 Internal Server Error');}if(ini_get('html_errors')){$error['message']=html_entity_decode(strip_tags($error['message']));}self::processException(new +_shutdownHandler(){static$types=array(E_ERROR=>1,E_CORE_ERROR=>1,E_COMPILE_ERROR=>1,E_PARSE=>1);$error=error_get_last();if(self::$enabled&&isset($types[$error['type']])){if(!headers_sent()){header('HTTP/1.1 500 Internal Server Error');}if(ini_get('html_errors')){$error['message']=html_entity_decode(strip_tags($error['message']));}self::processException(new FatalErrorException($error['message'],0,$error['type'],$error['file'],$error['line'],NULL),TRUE);}if(self::$productionMode){return;}foreach(headers_list()as$header){if(strncasecmp($header,'Content-Type:',13)===0){if(substr($header,14,9)==='text/html'){break;}return;}}if(self::$enabledProfiler){if(self::$firebugDetected){self::fireLog('Nette profiler',self::GROUP_START);foreach(self::$colophons as$callback){foreach((array)call_user_func($callback,'profiler')as$line)self::fireLog(strip_tags($line));}self::fireLog(NULL,self::GROUP_END);}if(!self::$ajaxDetected){$colophons=self::$colophons;?> @@ -397,13 +395,13 @@ htmlspecialchars($item['title'])?> - $item['var']))as$key=>$val):?> + $dump):?> +preg_replace_callback('#(
|\s+)?(.*)\((\d+)\) #','_netteDumpCb2',$dump)?>
 	
|\s+)?(.*)\((\d+)\) #','_netteDumpCb2',Debug::dump($val,TRUE))?>
@@ -430,10 +428,10 @@ json_encode($body)?>; ".self::_dump($var,0)."\n";if(self::$showLocation){$trace=debug_backtrace();if(isset($trace[0]['file'],$trace[0]['line'])){$output=substr_replace($output,' '.htmlspecialchars("in file {$trace[0]['file']} on line {$trace[0]['line']}",ENT_NOQUOTES).'',-8,0);}}if(self::$consoleMode){$output=htmlspecialchars_decode(strip_tags($output),ENT_NOQUOTES);}if($return){return$output;}else{echo$output;return$var;}}public +dump($var,$return=FALSE){if(!$return&&self::$productionMode){return$var;}$output="
".self::_dump($var,0)."
\n";if(self::$showLocation){$trace=debug_backtrace();$i=isset($trace[1]['class'])&&$trace[1]['class']===__CLASS__?1:0;if(isset($trace[$i]['file'],$trace[$i]['line'])){$output=substr_replace($output,' '.htmlspecialchars("in file {$trace[$i]['file']} on line {$trace[$i]['line']}",ENT_NOQUOTES).'',-8,0);}}if(self::$consoleMode){$output=htmlspecialchars_decode(strip_tags($output),ENT_NOQUOTES);}if($return){return$output;}else{echo$output;return$var;}}public static function -consoleDump($var,$title=NULL){if(!self::$productionMode){self::$consoleData[]=array('title'=>$title,'var'=>$var);}return$var;}private +consoleDump($var,$title=NULL){if(!self::$productionMode){$dump=array();foreach((is_array($var)?$var:array(''=>$var))as$key=>$val){$dump[$key]=self::dump($val,TRUE);}self::$consoleData[]=array('title'=>$title,'dump'=>$dump);}return$var;}private static function _dump(&$var,$level){static$tableUtf,$tableBin,$re='#[^\x09\x0A\x0D\x20-\x7E\xA0-\x{10FFFF}]#u';if($tableUtf===NULL){foreach(range("\x00","\xFF")as$ch){if(ord($ch)<32&&strpos("\r\n\t",$ch)===FALSE)$tableUtf[$ch]=$tableBin[$ch]='\\x'.str_pad(dechex(ord($ch)),2,'0',STR_PAD_LEFT);elseif(ord($ch)<127)$tableUtf[$ch]=$tableBin[$ch]=$ch;else{$tableUtf[$ch]=$ch;$tableBin[$ch]='\\x'.dechex(ord($ch));}}$tableUtf['\\x']=$tableBin['\\x']='\\\\x';}if(is_bool($var)){return"bool(".($var?'TRUE':'FALSE').")\n";}elseif($var===NULL){return"NULL\n";}elseif(is_int($var)){return"int($var)\n";}elseif(is_float($var)){return"float($var)\n";}elseif(is_string($var)){if(self::$maxLen&&strlen($var)>self::$maxLen){$s=htmlSpecialChars(substr($var,0,self::$maxLen),ENT_NOQUOTES).' ... ';}else{$s=htmlSpecialChars($var,ENT_NOQUOTES);}$s=strtr($s,preg_match($re,$s)||preg_last_error()?$tableBin:$tableUtf);return"string(".strlen($var).") \"$s\"\n";}elseif(is_array($var)){$s="array(".count($var).") ";$space=str_repeat($space1=' ',$level);static$marker;if($marker===NULL)$marker=uniqid("\x00",TRUE);if(empty($var)){}elseif(isset($var[$marker])){$s.="{\n$space$space1*RECURSION*\n$space}";}elseif($level{\n";$var[$marker]=0;foreach($var @@ -447,17 +445,17 @@ function enable($mode=NULL,$logFile=NULL,$email=NULL){error_reporting(E_ALL|E_STRICT);if(is_bool($mode)){self::$productionMode=$mode;}if(self::$productionMode===self::DETECT){if(class_exists('Environment')){self::$productionMode=Environment::isProduction();}elseif(isset($_SERVER['SERVER_ADDR'])||isset($_SERVER['LOCAL_ADDR'])){$addr=isset($_SERVER['SERVER_ADDR'])?$_SERVER['SERVER_ADDR']:$_SERVER['LOCAL_ADDR'];$oct=explode('.',$addr);self::$productionMode=$addr!=='::1'&&(count($oct)!==4||($oct[0]!=='10'&&$oct[0]!=='127'&&($oct[0]!=='172'||$oct[1]<16||$oct[1]>31)&&($oct[0]!=='169'||$oct[1]!=='254')&&($oct[0]!=='192'||$oct[1]!=='168')));}else{self::$productionMode=!self::$consoleMode;}}if(self::$productionMode&&$logFile!==FALSE){self::$logFile='log/php_error.log';if(class_exists('Environment')){if(is_string($logFile)){self::$logFile=Environment::expand($logFile);}else try{self::$logFile=Environment::expand('%logDir%/php_error.log');}catch(InvalidStateException$e){}}elseif(is_string($logFile)){self::$logFile=$logFile;}ini_set('error_log',self::$logFile);}if(function_exists('ini_set')){ini_set('display_errors',!self::$productionMode);ini_set('html_errors',!self::$logFile&&!self::$consoleMode);ini_set('log_errors',(bool)self::$logFile);}elseif(ini_get('log_errors')!=(bool)self::$logFile||(ini_get('display_errors')!=!self::$productionMode&&ini_get('display_errors')!==(self::$productionMode?'stderr':'stdout'))){throw new -NotSupportedException('Function ini_set() must be enabled.');}self::$sendEmails=self::$logFile&&$email;if(self::$sendEmails){if(is_string($email)){self::$emailHeaders['To']=$email;}elseif(is_array($email)){self::$emailHeaders=$email+self::$emailHeaders;}}if(!defined('E_DEPRECATED')){define('E_DEPRECATED',8192);}if(!defined('E_USER_DEPRECATED')){define('E_USER_DEPRECATED',16384);}set_exception_handler(array(__CLASS__,'exceptionHandler'));set_error_handler(array(__CLASS__,'errorHandler'));self::$enabled=TRUE;}public +NotSupportedException('Function ini_set() must be enabled.');}self::$sendEmails=self::$logFile&&$email;if(self::$sendEmails){if(is_string($email)){self::$emailHeaders['To']=$email;}elseif(is_array($email)){self::$emailHeaders=$email+self::$emailHeaders;}}if(!defined('E_DEPRECATED')){define('E_DEPRECATED',8192);}if(!defined('E_USER_DEPRECATED')){define('E_USER_DEPRECATED',16384);}set_exception_handler(array(__CLASS__,'_exceptionHandler'));set_error_handler(array(__CLASS__,'_errorHandler'));self::$enabled=TRUE;}public static function isEnabled(){return self::$enabled;}public static function -exceptionHandler(Exception$exception){if(!headers_sent()){header('HTTP/1.1 500 Internal Server Error');}self::processException($exception,TRUE);exit;}public +_exceptionHandler(Exception$exception){if(!headers_sent()){header('HTTP/1.1 500 Internal Server Error');}self::processException($exception,TRUE);exit;}public static function -errorHandler($severity,$message,$file,$line,$context){if($severity===E_RECOVERABLE_ERROR||$severity===E_USER_ERROR){throw +_errorHandler($severity,$message,$file,$line,$context){if($severity===E_RECOVERABLE_ERROR||$severity===E_USER_ERROR){throw new FatalErrorException($message,0,$severity,$file,$line,$context);}elseif(($severity&error_reporting())!==$severity){return NULL;}elseif(self::$strictMode){if(!headers_sent()){header('HTTP/1.1 500 Internal Server Error');}self::processException(new @@ -467,19 +465,18 @@ NULL;}return FALSE;}public static function -processException(Exception$exception,$outputAllowed=FALSE){if(self::$logFile){error_log("PHP Fatal error: Uncaught $exception");$file=@strftime('%d-%b-%Y %H-%M-%S ',Debug::$time).strstr(number_format(Debug::$time,4,'~',''),'~');$file=dirname(self::$logFile)."/exception $file.html";self::$logHandle=@fopen($file,'x');if(self::$logHandle){ob_start(array(__CLASS__,'writeFile'),1);self::paintBlueScreen($exception);ob_end_flush();fclose(self::$logHandle);}if(self::$sendEmails){self::sendEmail((string)$exception);}}elseif(self::$productionMode){}elseif(self::$consoleMode){if($outputAllowed){echo"$exception\n";foreach(self::$colophons +processException(Exception$exception,$outputAllowed=FALSE){if(!self::$enabled){return;}elseif(self::$logFile){error_log("PHP Fatal error: Uncaught $exception");$file=@strftime('%d-%b-%Y %H-%M-%S ',Debug::$time).strstr(number_format(Debug::$time,4,'~',''),'~');$file=dirname(self::$logFile)."/exception $file.html";self::$logHandle=@fopen($file,'x');if(self::$logHandle){ob_start(array(__CLASS__,'_writeFile'),1);self::_paintBlueScreen($exception);ob_end_flush();fclose(self::$logHandle);}if(self::$sendEmails){self::sendEmail((string)$exception);}}elseif(self::$productionMode){}elseif(self::$consoleMode){if($outputAllowed){echo"$exception\n";foreach(self::$colophons as$callback){foreach((array)call_user_func($callback,'bluescreen')as$line)echo -strip_tags($line)."\n";}}}elseif(self::$firebugDetected&&self::$ajaxDetected&&!headers_sent()){self::fireLog($exception,self::EXCEPTION);}elseif($outputAllowed){if(!headers_sent()){@ob_end_clean();while(ob_get_level()&&@ob_end_clean());header('Content-Encoding: identity',TRUE);}self::paintBlueScreen($exception);}elseif(self::$firebugDetected&&!headers_sent()){self::fireLog($exception,self::EXCEPTION);}foreach(self::$onFatalError +strip_tags($line)."\n";}}}elseif(self::$firebugDetected&&self::$ajaxDetected&&!headers_sent()){self::fireLog($exception,self::EXCEPTION);}elseif($outputAllowed){if(!headers_sent()){@ob_end_clean();while(ob_get_level()&&@ob_end_clean());if(in_array('Content-Encoding: gzip',headers_list()))header('Content-Encoding: identity',TRUE);}self::_paintBlueScreen($exception);}elseif(self::$firebugDetected&&!headers_sent()){self::fireLog($exception,self::EXCEPTION);}foreach(self::$onFatalError as$handler){fixCallback($handler);call_user_func($handler,$exception);}}public static function -paintBlueScreen(Exception$exception){$internals=array();foreach(array('Object','ObjectMixin')as$class){if(class_exists($class,FALSE)){$rc=new +_paintBlueScreen(Exception$exception){$internals=array();foreach(array('Object','ObjectMixin')as$class){if(class_exists($class,FALSE)){$rc=new ReflectionClass($class);$internals[$rc->getFileName()]=TRUE;}}if(class_exists('Environment',FALSE)){$application=Environment::getServiceLocator()->hasService('Nette\Application\Application',TRUE)?Environment::getServiceLocator()->getService('Nette\Application\Application'):NULL;}$colophons=self::$colophons;if(!function_exists('_netteDebugPrintCode')){function _netteDebugPrintCode($file,$line,$count=15){if(function_exists('ini_set')){ini_set('highlight.comment','#999; font-style: italic');ini_set('highlight.default','#000');ini_set('highlight.html','#06b');ini_set('highlight.keyword','#d24; font-weight: bold');ini_set('highlight.string','#080');}$start=max(1,$line-floor($count/2));$source=@file_get_contents($file);if(!$source)return;$source=explode("\n",highlight_string($source,TRUE));$spans=1;echo$source[0];$source=explode('
',$source[1]);array_unshift($source,NULL);$i=$start;while(--$i>=1){if(preg_match('#.*(]*>)#',$source[$i],$m)){if($m[1]!==''){$spans++;echo$m[1];}break;}}$source=array_slice($source,$start,$count,TRUE);end($source);$numWidth=strlen((string)key($source));foreach($source as$n=>$s){$spans+=substr_count($s,'Line %{$numWidth}s: %s\n%s",$n,strip_tags($s),preg_replace('#[^>]*(<[^>]+>)[^<]*#','$1',$s));}else{printf("Line %{$numWidth}s: %s\n",$n,$s);}}echo str_repeat('',$spans),'
';}function -_netteDump($var){return -preg_replace_callback('#(
|\s+)?(.*)\((\d+)\) #','_netteDumpCb',Debug::dump($var,TRUE));}function
+_netteDump($dump){return'
'.preg_replace_callback('#(^|\s+)?(.*)\((\d+)\) #','_netteDumpCb',$dump).'
';}function _netteDumpCb($m){return"$m[1]$m[2]($m[3]) ".(trim($m[1])||$m[3]<7?' ':'