diff --git a/e107_handlers/db_debug_class.php b/e107_handlers/db_debug_class.php index 58331ee45..47c1825ec 100644 --- a/e107_handlers/db_debug_class.php +++ b/e107_handlers/db_debug_class.php @@ -47,6 +47,17 @@ } + + /** + * Return a list of all registered time markers. + * @return array + */ + public function getTimeMarkers() + { + return $this->aTimeMarks; + } + + function e107_db_debug() { diff --git a/e107_handlers/e107_class.php b/e107_handlers/e107_class.php index bba01ce6e..8f7b36239 100755 --- a/e107_handlers/e107_class.php +++ b/e107_handlers/e107_class.php @@ -1624,7 +1624,7 @@ class e107 * * @return e107_db_debug */ - public static function getDebug() //XXX Discuss - possible with current setup? + public static function getDebug() { return self::getSingleton('e107_db_debug', true); } diff --git a/e107_handlers/e_db_legacy_trait.php b/e107_handlers/e_db_legacy_trait.php index 6f6828a5a..3aeff0f70 100644 --- a/e107_handlers/e_db_legacy_trait.php +++ b/e107_handlers/e_db_legacy_trait.php @@ -162,4 +162,10 @@ $this->setErrorReporting($mode); } + + public function db_Mark_Time($sMarker) + { + $this->markTime($sMarker); + } + } \ No newline at end of file diff --git a/e107_handlers/e_db_pdo_class.php b/e107_handlers/e_db_pdo_class.php index 346d553e5..61e233ade 100644 --- a/e107_handlers/e_db_pdo_class.php +++ b/e107_handlers/e_db_pdo_class.php @@ -33,7 +33,7 @@ class e_db_pdo implements e_db protected $mySQLlastErrText = ''; // Text of last error - now protected, use getLastErrorText() protected $mySQLlastQuery = ''; - public $mySQLcurTable; + protected $mySQLcurTable; public $mySQLlanguage; public $mySQLinfo; public $tabset; @@ -51,8 +51,16 @@ class e_db_pdo implements e_db private $pdo = true; // using PDO or not. private $pdoBind = false; + /** @var e107_traffic */ private $traffic; + /** @var e107_db_debug */ + private $dbg; + + private $debugMode = false; + + private $queryCount = 0; + /** * Constructor - gets language options from the cookie or session @@ -60,17 +68,9 @@ class e_db_pdo implements e_db */ public function __construct() { -/* - if((PHP_MAJOR_VERSION > 6) || !function_exists('mysql_connect') || (defined('e_PDO') && e_PDO === true)) - { - $this->pdo = true; - } - */ $this->traffic = e107::getSingleton('e107_traffic'); - $this->traffic->BumpWho('Create db object', 1); - $this->mySQLPrefix = MPREFIX; // Set the default prefix - may be overridden if($port = e107::getMySQLConfig('port')) @@ -78,9 +78,19 @@ class e_db_pdo implements e_db $this->mySQLport = intval($port); } - // Detect is already done in language handler, use it if not too early - if(defined('e_LANGUAGE')) $this->mySQLlanguage = e107::getLanguage()->e_language; + if(defined('e_LANGUAGE')) + { + $this->mySQLlanguage = e107::getLanguage()->e_language; + } + + if (E107_DEBUG_LEVEL > 0) + { + $this->debugMode = true; + } + + $this->dbg = e107::getDebug(); + } function getPDO() @@ -88,6 +98,11 @@ class e_db_pdo implements e_db return true; } + function debugMode($bool) + { + $this->debugMode = (bool) $bool; + } + function getMode() { @@ -96,83 +111,6 @@ class e_db_pdo implements e_db return $row['@@sql_mode']; } - /** - * Connects to mySQL server and selects database - generally not required if your table is in the main DB.
- *
- * Example using e107 database with variables defined in e107_config.php:
- * $sql = new db; - * $sql->db_Connect($mySQLserver, $mySQLuser, $mySQLpassword, $mySQLdefaultdb); - *
- * OR to connect an other database:
- * $sql = new db; - * $sql->db_Connect('url_server_database', 'user_database', 'password_database', 'name_of_database'); - * - * @param string $mySQLserver IP Or hostname of the MySQL server - * @param string $mySQLuser MySQL username - * @param string $mySQLpassword MySQL Password - * @param string $mySQLdefaultdb The database schema to connect to - * @param string $newLink force a new link connection if TRUE. Default FALSE - * @param string $mySQLPrefix Tables prefix. Default to $mySQLPrefix from e107_config.php - * @return null|string error code - *//* - public function db_Connect($mySQLserver, $mySQLuser, $mySQLpassword, $mySQLdefaultdb, $newLink = FALSE, $mySQLPrefix = MPREFIX) - { - global $db_ConnectionID, $db_defaultPrefix; - e107::getSingleton('e107_traffic')->BumpWho('db Connect', 1); - - $this->mySQLserver = $mySQLserver; - $this->mySQLuser = $mySQLuser; - $this->mySQLpassword = $mySQLpassword; - $this->mySQLdefaultdb = $mySQLdefaultdb; - $this->mySQLPrefix = $mySQLPrefix; - $this->mySQLerror = false; - - - - if(strpos($mySQLserver,':')!==false && substr_count($mySQLserver, ':')===1) - { - list($this->mySQLserver,$this->mySQLport) = explode(':',$mySQLserver,2); - } - - try - { - $this->mySQLaccess = new PDO("mysql:host=".$this->mySQLserver."; port=".$this->mySQLport, $this->mySQLuser, $this->mySQLpassword, array(PDO::ATTR_ERRMODE => PDO::ERRMODE_EXCEPTION)); - } - catch(PDOException $ex) - { - $this->mySQLlastErrText = $ex->getMessage(); - $this->mySQLlastErrNum = $ex->getCode(); - return 'e1'; - } - - $this->mySqlServerInfo = $this->mySQLaccess->query('select version()')->fetchColumn(); // We always need this for db_Set_Charset() - so make generally available - - // Set utf8 connection? - //@TODO: simplify when yet undiscovered side-effects will be fixed - $this->setCharset(); - $this->setSQLMode(); - - // if ($this->pdo!== true && !@mysql_select_db($this->mySQLdefaultdb, $this->mySQLaccess)) - if (!$this->database($this->mySQLdefaultdb)) - { - return 'e2'; - } - - - $this->dbError('dbConnect/SelectDB'); - - // Save the connection resource - if ($db_ConnectionID == null) - { - $db_ConnectionID = $this->mySQLaccess; - } - - return true; - } -*/ - - - /** * Connect ONLY - used in v2.x @@ -186,7 +124,7 @@ class e_db_pdo implements e_db */ public function connect($mySQLserver, $mySQLuser, $mySQLpassword, $newLink = false) { - global $db_ConnectionID, $db_defaultPrefix; + global $db_ConnectionID; $this->traffic->BumpWho('db Connect', 1); @@ -214,7 +152,7 @@ class e_db_pdo implements e_db { $this->mySQLlastErrText = $ex->getMessage(); $this->mySQLLastErrNum = $ex->getCode(); - // e107::getDebug()->log($ex); // Useful for Debug. breaks testing. + $this->dbg->log($this->mySQLlastErrText); // Useful for Debug. breaks testing. return false; } @@ -294,14 +232,14 @@ class e_db_pdo implements e_db * @desc Enter description here... * @access private */ - function db_Mark_Time($sMarker) + function markTime($sMarker) { - if (E107_DEBUG_LEVEL > 0) + if($this->debugMode !== true) { - /** @var e107_db_debug $db_debug */ - global $db_debug; - $db_debug->Mark_Time($sMarker); + return null; } + + $this->dbg->Mark_Time($sMarker); } @@ -347,7 +285,7 @@ class e_db_pdo implements e_db * @param string|array $query * @param string $query['PREPARE'] PDO Format query. *@param array $query['BIND'] eg. array['my_field'] = array('value'=>'whatever', 'type'=>'str'); - * @param unknown $rli + * @param object $rli * @return boolean|PDOStatement | resource - as mysql_query() function. * FALSE indicates an error * For SELECT, SHOW, DESCRIBE, EXPLAIN and others returning a result set, returns a resource @@ -355,8 +293,8 @@ class e_db_pdo implements e_db */ public function db_Query($query, $rli = NULL, $qry_from = '', $debug = FALSE, $log_type = '', $log_remark = '') { - global $db_time,$db_mySQLQueryCount,$queryinfo; - $db_mySQLQueryCount++; + global $db_time, $queryinfo; + $this->queryCount++; $this->mySQLlastQuery = $query; @@ -439,7 +377,7 @@ class e_db_pdo implements e_db $this->mySQLresult = $sQryRes; - if (!E107_DEBUG_LEVEL) + if ($this->debugMode !== true) { $this->total_results = false; } @@ -455,44 +393,45 @@ class e_db_pdo implements e_db $this->total_results = intval($rc); } - if (E107_DEBUG_LEVEL) + if ($this->debugMode === true) { - /** @var $db_debug e107_db_debug */ - global $db_debug; $aTrace = debug_backtrace(); $pTable = $this->mySQLcurTable; - if (!strlen($pTable)) { + + if(!strlen($pTable)) + { $pTable = '(complex query)'; - } else { + } + else + { $this->mySQLcurTable = ''; // clear before next query } - if(is_object($db_debug)) + + if(is_object($this->dbg)) { $buglink = is_null($rli) ? $this->mySQLaccess : $rli; if(is_array($query)) { - $query = "PREPARE: ".$query['PREPARE']."
BIND:".print_a($query['BIND'],true); // ,true); + $query = "PREPARE: " . $query['PREPARE'] . "
BIND:" . print_a($query['BIND'], true); // ,true); } if(isset($ex) && is_object($ex)) { $query = $ex->getMessage(); - $query .= print_a($ex->getTrace(),true); + $query .= print_a($ex->getTrace(), true); } if($buglink instanceof PDO) { - $db_debug->Mark_Query($query, 'PDO', $sQryRes, $aTrace, $mytime, $pTable); + $this->dbg->Mark_Query($query, 'PDO', $sQryRes, $aTrace, $mytime, $pTable); } } - else - { - // echo "what happened to db_debug??!!
"; - } + + } return $sQryRes; @@ -540,7 +479,7 @@ class e_db_pdo implements e_db * @param boolean $multi if true, fetch all (multi mode) * @param string $indexField field name to be used for indexing when in multi mode * @param boolean $debug - * @return string|array + * @return mixed */ public function retrieve($table, $fields = null, $where=null, $multi = false, $indexField = null, $debug = false) { @@ -639,6 +578,8 @@ class e_db_pdo implements e_db break; } + + return null; } /** @@ -657,7 +598,6 @@ class e_db_pdo implements e_db */ public function select($table, $fields = '*', $arg = '', $noWhere = false, $debug = FALSE, $log_type = '', $log_remark = '') { - global $db_mySQLQueryCount; $table = $this->hasLanguage($table); @@ -1549,8 +1489,6 @@ class e_db_pdo implements e_db */ public function gen($query, $debug = FALSE, $log_type = '', $log_remark = '') { - global $db_mySQLQueryCount; - $this->tabset = FALSE; $query .= " "; // temp fix for failing regex below, when there is no space after the table name; @@ -1852,8 +1790,7 @@ class e_db_pdo implements e_db */ public function queryCount() { - global $db_mySQLQueryCount; - return $db_mySQLQueryCount; + return $this->queryCount; } @@ -2307,6 +2244,7 @@ class e_db_pdo implements e_db return ($mode == 'lan') ? $lan : $nolan; } + return array(); } diff --git a/e107_handlers/mysql_class.php b/e107_handlers/mysql_class.php index c893fcb4d..6d986bce3 100644 --- a/e107_handlers/mysql_class.php +++ b/e107_handlers/mysql_class.php @@ -103,6 +103,9 @@ class e_db_mysql private $pdo = false; // using PDO or not. private $pdoBind= false; + /** @var e107_db_debug */ + protected $dbg = null; + /** * Constructor - gets language options from the cookie or session @@ -141,6 +144,12 @@ class e_db_mysql }*/ // Detect is already done in language handler, use it if not too early if(defined('e_LANGUAGE')) $this->mySQLlanguage = e107::getLanguage()->e_language; + + if (E107_DEBUG_LEVEL > 0) + { + $this->dbg = e107::getDebug(); + } + } function getPDO() @@ -408,12 +417,13 @@ class e_db_mysql */ function db_Mark_Time($sMarker) { - if (E107_DEBUG_LEVEL > 0) + if($this->dbg === null) { - /** @var e107_db_debug $db_debug */ - global $db_debug; - $db_debug->Mark_Time($sMarker); + return null; } + + $this->dbg->Mark_Time($sMarker); + } diff --git a/e107_handlers/traffic_class.php b/e107_handlers/traffic_class.php index 725b05711..f7356e001 100644 --- a/e107_handlers/traffic_class.php +++ b/e107_handlers/traffic_class.php @@ -170,7 +170,7 @@ class e107_traffic $this->aTrafficWho[$sWhat][] = "$sFile($sLine)"; } - function Calibrate($tObject, $count = 10) + function Calibrate(e107_traffic $tObject, $count = 10) { if (!defined("E107_DBG_TRAFFIC") || !E107_DBG_TRAFFIC) {