update Piwik to version 2.16 (fixes #91)
This commit is contained in:
parent
296343bf3b
commit
d885a4baa9
5833 changed files with 418860 additions and 226988 deletions
|
|
@ -1,6 +1,6 @@
|
|||
<?php
|
||||
/**
|
||||
* Piwik - Open source web analytics
|
||||
* Piwik - free/libre analytics platform
|
||||
*
|
||||
* @link http://piwik.org
|
||||
* @license http://www.gnu.org/licenses/gpl-3.0.html GPL v3 or later
|
||||
|
|
@ -10,6 +10,7 @@ namespace Piwik\Db\Adapter;
|
|||
|
||||
use Exception;
|
||||
use Piwik\Config;
|
||||
use Piwik\Db;
|
||||
use Piwik\Db\AdapterInterface;
|
||||
use Piwik\Piwik;
|
||||
use Zend_Config;
|
||||
|
|
@ -49,6 +50,17 @@ class Mysqli extends Zend_Db_Adapter_Mysqli implements AdapterInterface
|
|||
return 3306;
|
||||
}
|
||||
|
||||
protected function _connect()
|
||||
{
|
||||
if ($this->_connection) {
|
||||
return;
|
||||
}
|
||||
|
||||
parent::_connect();
|
||||
|
||||
$this->_connection->query('SET sql_mode = "' . Db::SQL_MODE . '"');
|
||||
}
|
||||
|
||||
/**
|
||||
* Check MySQL version
|
||||
*
|
||||
|
|
@ -56,8 +68,9 @@ class Mysqli extends Zend_Db_Adapter_Mysqli implements AdapterInterface
|
|||
*/
|
||||
public function checkServerVersion()
|
||||
{
|
||||
$serverVersion = $this->getServerVersion();
|
||||
$serverVersion = $this->getServerVersion();
|
||||
$requiredVersion = Config::getInstance()->General['minimum_mysql_version'];
|
||||
|
||||
if (version_compare($serverVersion, $requiredVersion) === -1) {
|
||||
throw new Exception(Piwik::translate('General_ExceptionDatabaseVersion', array('MySQL', $serverVersion, $requiredVersion)));
|
||||
}
|
||||
|
|
@ -72,6 +85,7 @@ class Mysqli extends Zend_Db_Adapter_Mysqli implements AdapterInterface
|
|||
{
|
||||
$serverVersion = $this->getServerVersion();
|
||||
$clientVersion = $this->getClientVersion();
|
||||
|
||||
// incompatible change to DECIMAL implementation in 5.0.3
|
||||
if (version_compare($serverVersion, '5.0.3') >= 0
|
||||
&& version_compare($clientVersion, '5.0.3') < 0
|
||||
|
|
@ -168,10 +182,12 @@ class Mysqli extends Zend_Db_Adapter_Mysqli implements AdapterInterface
|
|||
public function getClientVersion()
|
||||
{
|
||||
$this->_connect();
|
||||
$version = $this->_connection->server_version;
|
||||
$major = (int)($version / 10000);
|
||||
$minor = (int)($version % 10000 / 100);
|
||||
|
||||
$version = $this->_connection->server_version;
|
||||
$major = (int)($version / 10000);
|
||||
$minor = (int)($version % 10000 / 100);
|
||||
$revision = (int)($version % 100);
|
||||
|
||||
return $major . '.' . $minor . '.' . $revision;
|
||||
}
|
||||
}
|
||||
|
|
|
|||
|
|
@ -1,6 +1,6 @@
|
|||
<?php
|
||||
/**
|
||||
* Piwik - Open source web analytics
|
||||
* Piwik - free/libre analytics platform
|
||||
*
|
||||
* @link http://piwik.org
|
||||
* @license http://www.gnu.org/licenses/gpl-3.0.html GPL v3 or later
|
||||
|
|
@ -66,7 +66,7 @@ class Mssql extends Zend_Db_Adapter_Pdo_Mssql implements AdapterInterface
|
|||
|
||||
try {
|
||||
$serverName = $this->_config["host"];
|
||||
$database = $this->_config["dbname"];
|
||||
$database = $this->_config["dbname"];
|
||||
if (is_null($database)) {
|
||||
$database = 'master';
|
||||
}
|
||||
|
|
@ -134,8 +134,9 @@ class Mssql extends Zend_Db_Adapter_Pdo_Mssql implements AdapterInterface
|
|||
*/
|
||||
public function checkServerVersion()
|
||||
{
|
||||
$serverVersion = $this->getServerVersion();
|
||||
$serverVersion = $this->getServerVersion();
|
||||
$requiredVersion = Config::getInstance()->General['minimum_mssql_version'];
|
||||
|
||||
if (version_compare($serverVersion, $requiredVersion) === -1) {
|
||||
throw new Exception(Piwik::translate('General_ExceptionDatabaseVersion', array('MSSQL', $serverVersion, $requiredVersion)));
|
||||
}
|
||||
|
|
@ -149,7 +150,7 @@ class Mssql extends Zend_Db_Adapter_Pdo_Mssql implements AdapterInterface
|
|||
public function getServerVersion()
|
||||
{
|
||||
try {
|
||||
$stmt = $this->query("SELECT CAST(SERVERPROPERTY('productversion') as VARCHAR) as productversion");
|
||||
$stmt = $this->query("SELECT CAST(SERVERPROPERTY('productversion') as VARCHAR) as productversion");
|
||||
$result = $stmt->fetchAll(Zend_Db::FETCH_NUM);
|
||||
if (count($result)) {
|
||||
return $result[0][0];
|
||||
|
|
@ -169,6 +170,7 @@ class Mssql extends Zend_Db_Adapter_Pdo_Mssql implements AdapterInterface
|
|||
{
|
||||
$serverVersion = $this->getServerVersion();
|
||||
$clientVersion = $this->getClientVersion();
|
||||
|
||||
if (version_compare($serverVersion, '10') >= 0
|
||||
&& version_compare($clientVersion, '10') < 0
|
||||
) {
|
||||
|
|
@ -183,8 +185,7 @@ class Mssql extends Zend_Db_Adapter_Pdo_Mssql implements AdapterInterface
|
|||
*/
|
||||
public static function isEnabled()
|
||||
{
|
||||
$extensions = @get_loaded_extensions();
|
||||
return in_array('PDO', $extensions) && in_array('pdo_sqlsrv', $extensions);
|
||||
return extension_loaded('PDO') && extension_loaded('pdo_sqlsrv');
|
||||
}
|
||||
|
||||
/**
|
||||
|
|
@ -224,6 +225,7 @@ class Mssql extends Zend_Db_Adapter_Pdo_Mssql implements AdapterInterface
|
|||
if (preg_match('/(?:\[|\s)([0-9]{4})(?:\]|\s)/', $e->getMessage(), $match)) {
|
||||
return $match[1] == $errno;
|
||||
}
|
||||
|
||||
return false;
|
||||
}
|
||||
|
||||
|
|
|
|||
|
|
@ -1,6 +1,6 @@
|
|||
<?php
|
||||
/**
|
||||
* Piwik - Open source web analytics
|
||||
* Piwik - free/libre analytics platform
|
||||
*
|
||||
* @link http://piwik.org
|
||||
* @license http://www.gnu.org/licenses/gpl-3.0.html GPL v3 or later
|
||||
|
|
@ -12,6 +12,7 @@ use Exception;
|
|||
use PDO;
|
||||
use PDOException;
|
||||
use Piwik\Config;
|
||||
use Piwik\Db;
|
||||
use Piwik\Db\AdapterInterface;
|
||||
use Piwik\Piwik;
|
||||
use Zend_Config;
|
||||
|
|
@ -61,10 +62,21 @@ class Mysql extends Zend_Db_Adapter_Pdo_Mysql implements AdapterInterface
|
|||
*/
|
||||
$this->_connection->setAttribute(PDO::ATTR_EMULATE_PREPARES, true);
|
||||
|
||||
return $this->_connection;
|
||||
}
|
||||
|
||||
protected function _connect()
|
||||
{
|
||||
if ($this->_connection) {
|
||||
return;
|
||||
}
|
||||
|
||||
parent::_connect();
|
||||
|
||||
// MYSQL_ATTR_USE_BUFFERED_QUERY will use more memory when enabled
|
||||
// $this->_connection->setAttribute(PDO::MYSQL_ATTR_USE_BUFFERED_QUERY, true);
|
||||
|
||||
return $this->_connection;
|
||||
$this->_connection->exec('SET sql_mode = "' . Db::SQL_MODE . '"');
|
||||
}
|
||||
|
||||
/**
|
||||
|
|
@ -92,8 +104,9 @@ class Mysql extends Zend_Db_Adapter_Pdo_Mysql implements AdapterInterface
|
|||
*/
|
||||
public function checkServerVersion()
|
||||
{
|
||||
$serverVersion = $this->getServerVersion();
|
||||
$serverVersion = $this->getServerVersion();
|
||||
$requiredVersion = Config::getInstance()->General['minimum_mysql_version'];
|
||||
|
||||
if (version_compare($serverVersion, $requiredVersion) === -1) {
|
||||
throw new Exception(Piwik::translate('General_ExceptionDatabaseVersion', array('MySQL', $serverVersion, $requiredVersion)));
|
||||
}
|
||||
|
|
@ -108,6 +121,7 @@ class Mysql extends Zend_Db_Adapter_Pdo_Mysql implements AdapterInterface
|
|||
{
|
||||
$serverVersion = $this->getServerVersion();
|
||||
$clientVersion = $this->getClientVersion();
|
||||
|
||||
// incompatible change to DECIMAL implementation in 5.0.3
|
||||
if (version_compare($serverVersion, '5.0.3') >= 0
|
||||
&& version_compare($clientVersion, '5.0.3') < 0
|
||||
|
|
@ -123,8 +137,7 @@ class Mysql extends Zend_Db_Adapter_Pdo_Mysql implements AdapterInterface
|
|||
*/
|
||||
public static function isEnabled()
|
||||
{
|
||||
$extensions = @get_loaded_extensions();
|
||||
return in_array('PDO', $extensions) && in_array('pdo_mysql', $extensions) && in_array('mysql', PDO::getAvailableDrivers());
|
||||
return extension_loaded('PDO') && extension_loaded('pdo_mysql') && in_array('mysql', PDO::getAvailableDrivers());
|
||||
}
|
||||
|
||||
/**
|
||||
|
|
@ -159,6 +172,7 @@ class Mysql extends Zend_Db_Adapter_Pdo_Mysql implements AdapterInterface
|
|||
if (preg_match('/(?:\[|\s)([0-9]{4})(?:\]|\s)/', $e->getMessage(), $match)) {
|
||||
return $match[1] == $errno;
|
||||
}
|
||||
|
||||
return false;
|
||||
}
|
||||
|
||||
|
|
@ -170,9 +184,11 @@ class Mysql extends Zend_Db_Adapter_Pdo_Mysql implements AdapterInterface
|
|||
public function isConnectionUTF8()
|
||||
{
|
||||
$charsetInfo = $this->fetchAll('SHOW VARIABLES LIKE ?', array('character_set_connection'));
|
||||
|
||||
if (empty($charsetInfo)) {
|
||||
return false;
|
||||
}
|
||||
|
||||
$charset = $charsetInfo[0]['Value'];
|
||||
return $charset === 'utf8';
|
||||
}
|
||||
|
|
@ -230,4 +246,19 @@ class Mysql extends Zend_Db_Adapter_Pdo_Mysql implements AdapterInterface
|
|||
$this->cachePreparedStatement[$sql] = $stmt;
|
||||
return $stmt;
|
||||
}
|
||||
|
||||
/**
|
||||
* Override _dsn() to ensure host and port to not be passed along
|
||||
* if unix_socket is set since setting both causes unexpected behaviour
|
||||
* @see http://php.net/manual/en/ref.pdo-mysql.connection.php
|
||||
*/
|
||||
protected function _dsn()
|
||||
{
|
||||
if (!empty($this->_config['unix_socket'])) {
|
||||
unset($this->_config['host']);
|
||||
unset($this->_config['port']);
|
||||
}
|
||||
|
||||
return parent::_dsn();
|
||||
}
|
||||
}
|
||||
|
|
|
|||
|
|
@ -1,6 +1,6 @@
|
|||
<?php
|
||||
/**
|
||||
* Piwik - Open source web analytics
|
||||
* Piwik - free/libre analytics platform
|
||||
*
|
||||
* @link http://piwik.org
|
||||
* @license http://www.gnu.org/licenses/gpl-3.0.html GPL v3 or later
|
||||
|
|
@ -47,6 +47,7 @@ class Pgsql extends Zend_Db_Adapter_Pdo_Pgsql implements AdapterInterface
|
|||
{
|
||||
$databaseVersion = $this->getServerVersion();
|
||||
$requiredVersion = Config::getInstance()->General['minimum_pgsql_version'];
|
||||
|
||||
if (version_compare($databaseVersion, $requiredVersion) === -1) {
|
||||
throw new Exception(Piwik::translate('General_ExceptionDatabaseVersion', array('PostgreSQL', $databaseVersion, $requiredVersion)));
|
||||
}
|
||||
|
|
@ -66,8 +67,7 @@ class Pgsql extends Zend_Db_Adapter_Pdo_Pgsql implements AdapterInterface
|
|||
*/
|
||||
public static function isEnabled()
|
||||
{
|
||||
$extensions = @get_loaded_extensions();
|
||||
return in_array('PDO', $extensions) && in_array('pdo_pgsql', $extensions);
|
||||
return extension_loaded('PDO') && extension_loaded('pdo_pgsql');
|
||||
}
|
||||
|
||||
/**
|
||||
|
|
@ -146,6 +146,7 @@ class Pgsql extends Zend_Db_Adapter_Pdo_Pgsql implements AdapterInterface
|
|||
if (preg_match('/([0-9]{2}[0-9P][0-9]{2})/', $e->getMessage(), $match)) {
|
||||
return $match[1] == $map[$errno];
|
||||
}
|
||||
|
||||
return false;
|
||||
}
|
||||
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue