From 9712a92853262434769d836a20c90249200536bf Mon Sep 17 00:00:00 2001 From: Mikael Nordfeldth <mmn@hethane.se> Date: Sat, 6 Jun 2015 18:29:15 +0200 Subject: [PATCH] MITM the DB_DataObject to avoid PEAR::DB strict standards warnings --- classes/GS_DataObject.php | 192 +++++++++++++++++++++++++++++++ classes/Memcached_DataObject.php | 2 +- classes/Safe_DataObject.php | 7 +- 3 files changed, 196 insertions(+), 5 deletions(-) create mode 100644 classes/GS_DataObject.php diff --git a/classes/GS_DataObject.php b/classes/GS_DataObject.php new file mode 100644 index 0000000000..67f3240493 --- /dev/null +++ b/classes/GS_DataObject.php @@ -0,0 +1,192 @@ +<?php +if (!defined('GNUSOCIAL')) { exit(1); } + +class GS_DataObject extends DB_DataObject +{ + public function _autoloadClass($class, $table=false) + { + // avoid those annoying PEAR::DB strict standards warnings it causes + $old = error_reporting(); + error_reporting(error_reporting() & ~E_STRICT); + + $res = parent::_autoloadClass($class, $table); + + // reset + error_reporting($old); + return $res; + } + + // wraps the _connect call so we don't throw E_STRICT warnings during it + public function _connect() + { + // avoid those annoying PEAR::DB strict standards warnings it causes + $old = error_reporting(); + error_reporting(error_reporting() & ~E_STRICT); + + $res = parent::_connect(); + + // reset + error_reporting($old); + return $res; + } + + // wraps the _loadConfig call so we don't throw E_STRICT warnings during it + // doesn't actually return anything, but we'll follow the same model as the rest of the wrappers + public function _loadConfig() + { + // avoid those annoying PEAR::DB strict standards warnings it causes + $old = error_reporting(); + error_reporting(error_reporting() & ~E_STRICT); + + $res = parent::_loadConfig(); + + // reset + error_reporting($old); + return $res; + } + + // wraps the count call so we don't throw E_STRICT warnings during it + public function count($countWhat = false,$whereAddOnly = false) + { + // avoid those annoying PEAR::DB strict standards warnings it causes + $old = error_reporting(); + error_reporting(error_reporting() & ~E_STRICT); + + $res = parent::count($countWhat, $whereAddOnly); + + // reset + error_reporting($old); + return $res; + } + + public function debugLevel($v = null) + { + // avoid those annoying PEAR::DB strict standards warnings it causes + $old = error_reporting(); + error_reporting(error_reporting() & ~E_STRICT); + + $res = parent::debugLevel($v); + + // reset + error_reporting($old); + return $res; + } + + public function factory($table = '') + { + // avoid those annoying PEAR::DB strict standards warnings it causes + $old = error_reporting(); + error_reporting(error_reporting() & ~E_STRICT); + + $res = parent::factory($table); + + // reset + error_reporting($old); + return $res; + } + + public function get($k = null, $v = null) + { + // avoid those annoying PEAR::DB strict standards warnings it causes + $old = error_reporting(); + error_reporting(error_reporting() & ~E_STRICT); + + $res = parent::get($k, $v); + + // reset + error_reporting($old); + return $res; + } + + public function fetch() + { + // avoid those annoying PEAR::DB strict standards warnings it causes + $old = error_reporting(); + error_reporting(error_reporting() & ~E_STRICT); + + $res = parent::fetch(); + + // reset + error_reporting($old); + return $res; + } + + public function find($n = false) + { + // avoid those annoying PEAR::DB strict standards warnings it causes + $old = error_reporting(); + error_reporting(error_reporting() & ~E_STRICT); + + $res = parent::find($n); + + // reset + error_reporting($old); + return $res; + } + + public function fetchRow($row = null) + { + // avoid those annoying PEAR::DB strict standards warnings it causes + $old = error_reporting(); + error_reporting(error_reporting() & ~E_STRICT); + + $res = parent::fetchRow($row); + + // reset + error_reporting($old); + return $res; + } + + public function links() + { + // avoid those annoying PEAR::DB strict standards warnings it causes + $old = error_reporting(); + error_reporting(error_reporting() & ~E_STRICT); + + $res = parent::links(); + + // reset + error_reporting($old); + return $res; + } + + // wraps the update call so we don't throw E_STRICT warnings during it + public function update($dataObject = false) + { + // avoid those annoying PEAR::DB strict standards warnings it causes + $old = error_reporting(); + error_reporting(error_reporting() & ~E_STRICT); + + $res = parent::update($dataObject); + + // reset + error_reporting($old); + return $res; + } + + public function staticGet($class, $k, $v = null) + { + // avoid those annoying PEAR::DB strict standards warnings it causes + $old = error_reporting(); + error_reporting(error_reporting() & ~E_STRICT); + + $res = parent::staticGet($class, $k, $v); + + // reset + error_reporting($old); + return $res; + } + + public function staticGetAutoloadTable($table) + { + // avoid those annoying PEAR::DB strict standards warnings it causes + $old = error_reporting(); + error_reporting(error_reporting() & ~E_STRICT); + + $res = parent::staticGetAutoloadTable($table); + + // reset + error_reporting($old); + return $res; + } +} diff --git a/classes/Memcached_DataObject.php b/classes/Memcached_DataObject.php index 91b986891c..c725e1d9aa 100644 --- a/classes/Memcached_DataObject.php +++ b/classes/Memcached_DataObject.php @@ -824,7 +824,7 @@ class Memcached_DataObject extends Safe_DataObject global $_DB_DATAOBJECT; if (empty($_DB_DATAOBJECT['CONFIG'])) { - DB_DataObject::_loadConfig(); + self::_loadConfig(); } $options = &$_DB_DATAOBJECT['CONFIG']; diff --git a/classes/Safe_DataObject.php b/classes/Safe_DataObject.php index b4c251c475..8e5e72c013 100644 --- a/classes/Safe_DataObject.php +++ b/classes/Safe_DataObject.php @@ -17,7 +17,7 @@ * along with this program. If not, see <http://www.gnu.org/licenses/>. */ -if (!defined('STATUSNET') && !defined('LACONICA')) { exit(1); } +if (!defined('GNUSOCIAL')) { exit(1); } /** * Extended DB_DataObject to improve a few things: @@ -26,7 +26,7 @@ if (!defined('STATUSNET') && !defined('LACONICA')) { exit(1); } * - don't leak memory when loading already-used .ini files * (eg when using the same schema on thousands of databases) */ -class Safe_DataObject extends DB_DataObject +class Safe_DataObject extends GS_DataObject { /** * Destructor to free global memory resources associated with @@ -177,7 +177,6 @@ class Safe_DataObject extends DB_DataObject } } - if (!$this->_database) { $this->_connect(); } @@ -204,7 +203,7 @@ class Safe_DataObject extends DB_DataObject } if (empty($_DB_DATAOBJECT['CONFIG'])) { - DB_DataObject::_loadConfig(); + self::_loadConfig(); } // if you supply this with arguments, then it will take those