function __db_connect(&$link, $dbsettings) { global $debug; if (!$link) { // TODO !!!!!! DEBUG -> error!!!! $link = mysql_connect($dbsettings['server'], $dbsettings['user'], $dbsettings['pass']) or $debug->error(__db_error(), 'DB Error - cannot connect to server'); __db_query("/*!40101 SET NAMES 'utf8' */") or die('Error: ' . __db_error()); mysql_select_db($dbsettings['name']) or $debug->error(__db_error(), 'DB error - cannot find DB on server'); // mysql_query('SET SESSION TRANSACTION ISOLATION LEVEL ' . DB_MYSQL_TRANSACTION_REPEATABLE_READ . ';') or die('Error: ' . __db_error()); __db_query('SET SESSION TRANSACTION ISOLATION LEVEL ' . DB_MYSQL_TRANSACTION_REPEATABLE_READ . ';') or die('Error: ' . __db_error()); unset($dbsettings); } return true; }
upd_do_query('COMMIT;', true); $new_version = 25; case 25: upd_log_version_update(); upd_alter_table('rw', array("DROP COLUMN `a_zestrzelona`", "DROP INDEX `rid`", "ADD COLUMN `report_id` bigint(11) NOT NULL AUTO_INCREMENT FIRST", "ADD PRIMARY KEY (`report_id`)", "ADD INDEX `i_rid` (`rid`)"), !$update_tables['rw']['report_id']); upd_add_more_time(); upd_create_table('logs_backup', "AS (SELECT * FROM {$config->db_prefix}logs);"); upd_alter_table('logs', array("MODIFY COLUMN `log_id` INT(1)", "DROP PRIMARY KEY"), !$update_tables['logs']['log_timestamp']); upd_alter_table('logs', array("DROP COLUMN `log_id`", "ADD COLUMN `log_timestamp` TIMESTAMP NOT NULL DEFAULT CURRENT_TIMESTAMP COMMENT 'Human-readable record timestamp' FIRST", "ADD COLUMN `log_username` VARCHAR(64) NOT NULL DEFAULT '' COMMENT 'Username' AFTER `log_timestamp`", "MODIFY COLUMN `log_title` VARCHAR(64) NOT NULL DEFAULT 'Log entry' COMMENT 'Short description' AFTER `log_username`", "MODIFY COLUMN `log_page` VARCHAR(512) NOT NULL DEFAULT '' COMMENT 'Page that makes entry to log' AFTER `log_text`", "CHANGE COLUMN `log_type` `log_code` INT UNSIGNED NOT NULL DEFAULT 0 AFTER `log_page`", "MODIFY COLUMN `log_sender` BIGINT UNSIGNED NOT NULL DEFAULT 0 COMMENT 'User ID which make log record' AFTER `log_code`", "MODIFY COLUMN `log_time` INT(11) UNSIGNED NOT NULL DEFAULT 0 COMMENT 'Machine-readable timestamp' AFTER `log_sender`", "ADD COLUMN `log_dump` TEXT NOT NULL DEFAULT '' COMMENT 'Machine-readable dump of variables' AFTER `log_time`", "ADD INDEX `i_log_username` (`log_username`)", "ADD INDEX `i_log_time` (`log_time`)", "ADD INDEX `i_log_sender` (`log_sender`)", "ADD INDEX `i_log_code` (`log_code`)", "ADD INDEX `i_log_page` (`log_page`)", "CONVERT TO CHARACTER SET utf8 COLLATE utf8_general_ci"), !$update_tables['logs']['log_timestamp']); upd_do_query('DELETE FROM `{{logs}}` WHERE `log_code` = 303;'); if ($update_tables['errors']) { upd_do_query('INSERT INTO `{{logs}}` (`log_code`, `log_sender`, `log_title`, `log_text`, `log_page`, `log_time`) SELECT 500, `error_sender`, `error_type`, `error_text`, `error_page`, `error_time` FROM `{{errors}}`;'); if ($update_tables['errors_backup']) { upd_drop_table('errors_backup'); } __db_query("ALTER TABLE {$config->db_prefix}errors RENAME TO {$config->db_prefix}errors_backup;"); upd_drop_table('errors'); } upd_alter_table('logs', 'ORDER BY log_time'); upd_alter_table('logs', array("ADD COLUMN `log_id` SERIAL", "ADD PRIMARY KEY (`log_id`)"), !$update_tables['logs']['log_id']); upd_do_query('UPDATE `{{logs}}` SET `log_timestamp` = FROM_UNIXTIME(`log_time`);'); upd_do_query('UPDATE `{{logs}}` AS l LEFT JOIN `{{users}}` AS u ON u.id = l.log_sender SET l.log_username = u.username WHERE l.log_username IS NOT NULL;'); upd_do_query("UPDATE `{{logs}}` SET `log_code` = 190 WHERE `log_code` = 100 AND `log_title` = 'Stat update';"); upd_do_query("UPDATE `{{logs}}` SET `log_code` = 191 WHERE `log_code` = 101 AND `log_title` = 'Stat update';"); upd_do_query("UPDATE `{{logs}}` SET `log_code` = 192 WHERE `log_code` = 102 AND `log_title` = 'Stat update';"); $sys_log_disabled = false; upd_do_query('COMMIT;', true); $new_version = 26; case 26: upd_log_version_update(); $sys_log_disabled = false;
function upd_drop_table($table_name) { global $config; __db_query("DROP TABLE IF EXISTS {$config->db_prefix}{$table_name};"); upd_unset_table_info($table_name); }
function warning($message, $title = 'System Message', $log_code = 300, $dump = false) { global $link, $user, $lang, $sys_log_disabled; require SN_ROOT_PHYSICAL . 'config.' . PHP_EX; if (!$link) { sn_db_connect(); // $link = mysql_connect($dbsettings['server'], $dbsettings['user'], $dbsettings['pass']); // mysql_query('/*!40101 SET NAMES \'utf8\' */'); // mysql_select_db($dbsettings['name']); } $error_backtrace = $this->dump($dump, false); if (!$sys_log_disabled) { $query = "INSERT INTO `{{logs}}` SET\n `log_time` = '" . time() . "', `log_code` = '" . db_escape($log_code) . "', `log_sender` = '" . db_escape($user['id']) . "',\n `log_username` = '" . db_escape($user['user_name']) . "', `log_title` = '" . db_escape($title) . "', `log_text` = '" . db_escape($message) . "',\n `log_page` = '" . db_escape(strpos($_SERVER['SCRIPT_NAME'], SN_ROOT_RELATIVE) === false ? $_SERVER['SCRIPT_NAME'] : substr($_SERVER['SCRIPT_NAME'], strlen(SN_ROOT_RELATIVE))) . "'" . ($error_backtrace ? ", `log_dump` = '" . db_escape(serialize($error_backtrace)) . "'" : '') . ";"; __db_query($query); } else { print "<hr>User ID {$user['id']} made log entry with code {$log_code} titled '{$title}' with text '{$message}' on page {$_SERVER['SCRIPT_NAME']}"; } }
function doquery($query, $table = '', $fetch = false, $skip_query_check = false) { global $numqueries, $link, $debug, $sn_cache, $config, $db_prefix; if (!is_string($table)) { $fetch = $table; } if (!$link) { sn_db_connect(); } $query = trim($query); security_watch_user_queries($query); $skip_query_check or security_query_check_bad_words($query); $sql = $query; if (strpos($sql, '{{') !== false) { foreach ($sn_cache->tables as $tableName) { $sql = str_replace("{{{$tableName}}}", $db_prefix . $tableName, $sql); } } if ($config->debug) { $numqueries++; $arr = debug_backtrace(); $file = end(explode('/', $arr[0]['file'])); $line = $arr[0]['line']; $debug->add("<tr><th>Query {$numqueries}: </th><th>{$query}</th><th>{$file}({$line})</th><th>{$table}</th><th>{$fetch}</th></tr>"); } if (defined('DEBUG_SQL_COMMENT')) { $backtrace = debug_backtrace(); $sql_comment = $debug->compact_backtrace($backtrace, defined('DEBUG_SQL_COMMENT_LONG')); // pdump($backtrace[0]); // pdump($backtrace[1]); // print("<hr/>"); // foreach($backtrace as $a_trace) // { // if(!in_array($a_trace['function'], array('doquery', 'db_query', 'db_get_record_list'))) break; // } // // $a_trace = $backtrace[1]['function'] == 'db_query' ? $backtrace[2] : $backtrace[1]; // $function = // ($a_trace['type'] // ? ($a_trace['type'] == '->' // ? "({$a_trace['class']})" . get_class($a_trace['object']) // : $a_trace['class'] // ) . $a_trace['type'] // : '' // ) . $a_trace['function'] . '()'; // // $file = str_replace(SN_ROOT_PHYSICAL, '', str_replace('\\', '/', $a_trace['file'])); // // $transaction_id = classSupernova::db_transaction_check(false) ? classSupernova::$transaction_id : classSupernova::$transaction_id++; // // $sql = "/* {$function} '{$file}' Line {$a_trace['line']} tID {$transaction_id} */ " . $sql; $sql_commented = '/* ' . implode("<br />", $sql_comment) . '<br /> */ ' . preg_replace("/\\s+/", ' ', $sql); if (defined('DEBUG_SQL_ONLINE')) { $debug->warning($sql_commented, 'SQL Debug', LOG_DEBUG_SQL); } if (defined('DEBUG_SQL_ERROR')) { array_unshift($sql_comment, preg_replace("/\\s+/", ' ', $sql)); $debug->add_to_array($sql_comment); // $debug->add_to_array($sql_comment . preg_replace("/\s+/", ' ', $sql)); } $sql = $sql_commented; } $sqlquery = __db_query($sql) or $debug->error(db_error() . "<br />{$sql}<br />", 'SQL Error'); return $fetch ? db_fetch($sqlquery) : $sqlquery; }