Ignore:
Timestamp:
Apr 27, 2017 4:43:35 PM (7 years ago)
Author:
anonymous
Message:

Updated every instance of 'zero' date 0000-00-00 to use 1000-01-01 if mysql version >= 5.7.4

File:
1 edited

Legend:

Unmodified
Added
Removed
  • trunk/lib/Auth_SQL.inc.php

    r593 r601  
    175175
    176176            // The minimal columns for a table compatible with the Auth_SQL class.
    177             $db->query("CREATE TABLE IF NOT EXISTS " . $db->escapeString($this->getParam('db_table')) . " (
    178                 " . $this->getParam('db_primary_key') . " MEDIUMINT UNSIGNED NOT NULL PRIMARY KEY AUTO_INCREMENT,
    179                 " . $this->getParam('db_username_column') . " varchar(255) NOT NULL default '',
    180                 userpass VARCHAR(255) NOT NULL DEFAULT '',
    181                 userpass_hashtype TINYINT UNSIGNED NOT NULL DEFAULT '0',
    182                 first_name VARCHAR(50) NOT NULL DEFAULT '',
    183                 last_name VARCHAR(50) NOT NULL DEFAULT '',
    184                 email VARCHAR(255) NOT NULL DEFAULT '',
    185                 login_abuse_exempt ENUM('true') DEFAULT NULL,
    186                 blocked ENUM('true') DEFAULT NULL,
    187                 blocked_reason VARCHAR(255) NOT NULL DEFAULT '',
    188                 abuse_warning_level TINYINT NOT NULL DEFAULT '0',
    189                 seconds_online INT NOT NULL DEFAULT '0',
    190                 last_login_datetime DATETIME NOT NULL DEFAULT '0000-00-00 00:00:00',
    191                 last_access_datetime DATETIME NOT NULL DEFAULT '0000-00-00 00:00:00',
    192                 last_login_ip VARCHAR(45) NOT NULL DEFAULT '0.0.0.0',
    193                 added_by_user_id SMALLINT DEFAULT NULL,
    194                 modified_by_user_id SMALLINT DEFAULT NULL,
    195                 added_datetime DATETIME NOT NULL DEFAULT '0000-00-00 00:00:00',
    196                 modified_datetime DATETIME NOT NULL DEFAULT '0000-00-00 00:00:00',
    197                 KEY " . $this->getParam('db_username_column') . " (" . $this->getParam('db_username_column') . "),
    198                 KEY userpass (userpass),
    199                 KEY email (email),
    200                 KEY last_login_datetime (last_login_datetime),
    201                 KEY last_access_datetime (last_access_datetime)
    202             )");
     177            $db->query(sprintf(
     178                "CREATE TABLE IF NOT EXISTS %1\$s (
     179                    %2\$s MEDIUMINT UNSIGNED NOT NULL PRIMARY KEY AUTO_INCREMENT,
     180                    %3\$s varchar(255) NOT NULL default '',
     181                    userpass VARCHAR(255) NOT NULL DEFAULT '',
     182                    userpass_hashtype TINYINT UNSIGNED NOT NULL DEFAULT '0',
     183                    first_name VARCHAR(50) NOT NULL DEFAULT '',
     184                    last_name VARCHAR(50) NOT NULL DEFAULT '',
     185                    email VARCHAR(255) NOT NULL DEFAULT '',
     186                    login_abuse_exempt ENUM('true') DEFAULT NULL,
     187                    blocked ENUM('true') DEFAULT NULL,
     188                    blocked_reason VARCHAR(255) NOT NULL DEFAULT '',
     189                    abuse_warning_level TINYINT NOT NULL DEFAULT '0',
     190                    seconds_online INT NOT NULL DEFAULT '0',
     191                    last_login_datetime DATETIME NOT NULL DEFAULT '%4\$s 00:00:00',
     192                    last_access_datetime DATETIME NOT NULL DEFAULT '%4\$s 00:00:00',
     193                    last_login_ip VARCHAR(45) NOT NULL DEFAULT '0.0.0.0',
     194                    added_by_user_id SMALLINT DEFAULT NULL,
     195                    modified_by_user_id SMALLINT DEFAULT NULL,
     196                    added_datetime DATETIME NOT NULL DEFAULT '%4\$s 00:00:00',
     197                    modified_datetime DATETIME NOT NULL DEFAULT '%4\$s 00:00:00',
     198                    KEY %5\$s (%5\$s),
     199                    KEY userpass (userpass),
     200                    KEY email (email),
     201                    KEY last_login_datetime (last_login_datetime),
     202                    KEY last_access_datetime (last_access_datetime)
     203                )",
     204                $db->escapeString($this->getParam('db_table')),
     205                $this->getParam('db_primary_key'),
     206                $this->getParam('db_username_column'),
     207                $db->getParam('zero_date'),
     208                $this->getParam('db_username_column')
     209            ));
    203210
    204211            if (!$db->columnExists($this->getParam('db_table'), array(
     
    232239                    $app->logMsg(sprintf('Dropping and recreating table %s.', $this->getParam('db_login_table')), LOG_INFO, __FILE__, __LINE__);
    233240                }
    234                 $db->query("CREATE TABLE IF NOT EXISTS " . $this->getParam('db_login_table') . " (
    235                     " . $this->getParam('db_primary_key') . " MEDIUMINT UNSIGNED NOT NULL DEFAULT '0',
    236                     login_datetime DATETIME NOT NULL DEFAULT '0000-00-00 00:00:00',
    237                     remote_ip_binary CHAR(32) NOT NULL DEFAULT '',
    238                     KEY " . $this->getParam('db_primary_key') . " (" . $this->getParam('db_primary_key') . "),
    239                     KEY login_datetime (login_datetime),
    240                     KEY remote_ip_binary (remote_ip_binary)
    241                 )");
     241                $db->query(sprintf(
     242                    "CREATE TABLE IF NOT EXISTS %1\$s (
     243                        %2\$s MEDIUMINT UNSIGNED NOT NULL DEFAULT '0',
     244                        login_datetime DATETIME NOT NULL DEFAULT '%3\$s 00:00:00',
     245                        remote_ip_binary CHAR(32) NOT NULL DEFAULT '',
     246                        KEY %4\$s (%4\$s),
     247                        KEY login_datetime (login_datetime),
     248                        KEY remote_ip_binary (remote_ip_binary)
     249                    )",
     250                    $this->getParam('db_login_table'),
     251                    $this->getParam('db_primary_key'),
     252                    $db->getParam('zero_date'),
     253                    $this->getParam('db_primary_key')
     254                ));
    242255
    243256                if (!$db->columnExists($this->getParam('db_login_table'), array(
     
    327340
    328341            // FIX ME: Should we check if the session is active?
    329             $db->query("
    330                 UPDATE " . $this->_params['db_table'] . " SET
    331                 seconds_online = seconds_online + ABS(UNIX_TIMESTAMP() - UNIX_TIMESTAMP(last_access_datetime)),
    332                 last_login_datetime = '0000-00-00 00:00:00'
    333                 WHERE " . $this->_params['db_primary_key'] . " = '" . $this->get('user_id') . "'
    334             ");
     342            $db->query(sprintf(
     343                "UPDATE %s SET
     344                    seconds_online = seconds_online + ABS(UNIX_TIMESTAMP() - UNIX_TIMESTAMP(last_access_datetime)),
     345                    last_login_datetime = '%s 00:00:00'
     346                    WHERE %s = '%s'
     347                ",
     348                $this->_params['db_table'],
     349                $db->getParam('zero_date'),
     350                $this->_params['db_primary_key'],
     351                $this->get('user_id')
     352            ));
    335353        }
    336354        $_SESSION['_auth_sql'][$this->_ns] = array(
Note: See TracChangeset for help on using the changeset viewer.