mirror of
https://github.com/phpbb/phpbb.git
synced 2025-06-28 06:08:52 +00:00
- small MSSQL thing
- changed how we store tracking data git-svn-id: file:///svn/phpbb/trunk@7120 89ea8834-ac86-4346-8a33-228a782c2dd0
This commit is contained in:
parent
ac21b7d47b
commit
e3b9b5ca81
5 changed files with 133 additions and 12 deletions
|
@ -313,7 +313,7 @@ class dbal_mssql extends dbal
|
||||||
function _sql_error()
|
function _sql_error()
|
||||||
{
|
{
|
||||||
$error = array(
|
$error = array(
|
||||||
'message' => @mssql_get_last_message($this->db_connect_id),
|
'message' => @mssql_get_last_message(),
|
||||||
'code' => ''
|
'code' => ''
|
||||||
);
|
);
|
||||||
|
|
||||||
|
|
|
@ -764,14 +764,14 @@ function markread($mode, $forum_id = false, $topic_id = false, $post_time = 0, $
|
||||||
else if ($config['load_anon_lastread'] || $user->data['is_registered'])
|
else if ($config['load_anon_lastread'] || $user->data['is_registered'])
|
||||||
{
|
{
|
||||||
$tracking_topics = (isset($_COOKIE[$config['cookie_name'] . '_track'])) ? ((STRIP) ? stripslashes($_COOKIE[$config['cookie_name'] . '_track']) : $_COOKIE[$config['cookie_name'] . '_track']) : '';
|
$tracking_topics = (isset($_COOKIE[$config['cookie_name'] . '_track'])) ? ((STRIP) ? stripslashes($_COOKIE[$config['cookie_name'] . '_track']) : $_COOKIE[$config['cookie_name'] . '_track']) : '';
|
||||||
$tracking_topics = ($tracking_topics) ? unserialize($tracking_topics) : array();
|
$tracking_topics = ($tracking_topics) ? tracking_unserialize($tracking_topics) : array();
|
||||||
|
|
||||||
unset($tracking_topics['tf']);
|
unset($tracking_topics['tf']);
|
||||||
unset($tracking_topics['t']);
|
unset($tracking_topics['t']);
|
||||||
unset($tracking_topics['f']);
|
unset($tracking_topics['f']);
|
||||||
$tracking_topics['l'] = base_convert(time() - $config['board_startdate'], 10, 36);
|
$tracking_topics['l'] = base_convert(time() - $config['board_startdate'], 10, 36);
|
||||||
|
|
||||||
$user->set_cookie('track', serialize($tracking_topics), time() + 31536000);
|
$user->set_cookie('track', tracking_serialize($tracking_topics), time() + 31536000);
|
||||||
unset($tracking_topics);
|
unset($tracking_topics);
|
||||||
|
|
||||||
if ($user->data['is_registered'])
|
if ($user->data['is_registered'])
|
||||||
|
@ -841,7 +841,7 @@ function markread($mode, $forum_id = false, $topic_id = false, $post_time = 0, $
|
||||||
else if ($config['load_anon_lastread'] || $user->data['is_registered'])
|
else if ($config['load_anon_lastread'] || $user->data['is_registered'])
|
||||||
{
|
{
|
||||||
$tracking = (isset($_COOKIE[$config['cookie_name'] . '_track'])) ? ((STRIP) ? stripslashes($_COOKIE[$config['cookie_name'] . '_track']) : $_COOKIE[$config['cookie_name'] . '_track']) : '';
|
$tracking = (isset($_COOKIE[$config['cookie_name'] . '_track'])) ? ((STRIP) ? stripslashes($_COOKIE[$config['cookie_name'] . '_track']) : $_COOKIE[$config['cookie_name'] . '_track']) : '';
|
||||||
$tracking = ($tracking) ? unserialize($tracking) : array();
|
$tracking = ($tracking) ? tracking_unserialize($tracking) : array();
|
||||||
|
|
||||||
foreach ($forum_id as $f_id)
|
foreach ($forum_id as $f_id)
|
||||||
{
|
{
|
||||||
|
@ -865,7 +865,7 @@ function markread($mode, $forum_id = false, $topic_id = false, $post_time = 0, $
|
||||||
$tracking['f'][$f_id] = base_convert(time() - $config['board_startdate'], 10, 36);
|
$tracking['f'][$f_id] = base_convert(time() - $config['board_startdate'], 10, 36);
|
||||||
}
|
}
|
||||||
|
|
||||||
$user->set_cookie('track', serialize($tracking), time() + 31536000);
|
$user->set_cookie('track', tracking_serialize($tracking), time() + 31536000);
|
||||||
unset($tracking);
|
unset($tracking);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -906,7 +906,7 @@ function markread($mode, $forum_id = false, $topic_id = false, $post_time = 0, $
|
||||||
else if ($config['load_anon_lastread'] || $user->data['is_registered'])
|
else if ($config['load_anon_lastread'] || $user->data['is_registered'])
|
||||||
{
|
{
|
||||||
$tracking = (isset($_COOKIE[$config['cookie_name'] . '_track'])) ? ((STRIP) ? stripslashes($_COOKIE[$config['cookie_name'] . '_track']) : $_COOKIE[$config['cookie_name'] . '_track']) : '';
|
$tracking = (isset($_COOKIE[$config['cookie_name'] . '_track'])) ? ((STRIP) ? stripslashes($_COOKIE[$config['cookie_name'] . '_track']) : $_COOKIE[$config['cookie_name'] . '_track']) : '';
|
||||||
$tracking = ($tracking) ? unserialize($tracking) : array();
|
$tracking = ($tracking) ? tracking_unserialize($tracking) : array();
|
||||||
|
|
||||||
$topic_id36 = base_convert($topic_id, 10, 36);
|
$topic_id36 = base_convert($topic_id, 10, 36);
|
||||||
|
|
||||||
|
@ -959,7 +959,7 @@ function markread($mode, $forum_id = false, $topic_id = false, $post_time = 0, $
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
$user->set_cookie('track', serialize($tracking), time() + 31536000);
|
$user->set_cookie('track', tracking_serialize($tracking), time() + 31536000);
|
||||||
}
|
}
|
||||||
|
|
||||||
return;
|
return;
|
||||||
|
@ -1142,7 +1142,7 @@ function get_complete_topic_tracking($forum_id, $topic_ids, $global_announce_lis
|
||||||
if (!isset($tracking_topics) || !sizeof($tracking_topics))
|
if (!isset($tracking_topics) || !sizeof($tracking_topics))
|
||||||
{
|
{
|
||||||
$tracking_topics = (isset($_COOKIE[$config['cookie_name'] . '_track'])) ? ((STRIP) ? stripslashes($_COOKIE[$config['cookie_name'] . '_track']) : $_COOKIE[$config['cookie_name'] . '_track']) : '';
|
$tracking_topics = (isset($_COOKIE[$config['cookie_name'] . '_track'])) ? ((STRIP) ? stripslashes($_COOKIE[$config['cookie_name'] . '_track']) : $_COOKIE[$config['cookie_name'] . '_track']) : '';
|
||||||
$tracking_topics = ($tracking_topics) ? unserialize($tracking_topics) : array();
|
$tracking_topics = ($tracking_topics) ? tracking_unserialize($tracking_topics) : array();
|
||||||
}
|
}
|
||||||
|
|
||||||
if (!$user->data['is_registered'])
|
if (!$user->data['is_registered'])
|
||||||
|
@ -1227,7 +1227,7 @@ function update_forum_tracking_info($forum_id, $forum_last_post_time, $f_mark_ti
|
||||||
if (!isset($tracking_topics) || !sizeof($tracking_topics))
|
if (!isset($tracking_topics) || !sizeof($tracking_topics))
|
||||||
{
|
{
|
||||||
$tracking_topics = (isset($_COOKIE[$config['cookie_name'] . '_track'])) ? ((STRIP) ? stripslashes($_COOKIE[$config['cookie_name'] . '_track']) : $_COOKIE[$config['cookie_name'] . '_track']) : '';
|
$tracking_topics = (isset($_COOKIE[$config['cookie_name'] . '_track'])) ? ((STRIP) ? stripslashes($_COOKIE[$config['cookie_name'] . '_track']) : $_COOKIE[$config['cookie_name'] . '_track']) : '';
|
||||||
$tracking_topics = ($tracking_topics) ? unserialize($tracking_topics) : array();
|
$tracking_topics = ($tracking_topics) ? tracking_unserialize($tracking_topics) : array();
|
||||||
}
|
}
|
||||||
|
|
||||||
if (!$user->data['is_registered'])
|
if (!$user->data['is_registered'])
|
||||||
|
@ -1310,6 +1310,127 @@ function update_forum_tracking_info($forum_id, $forum_last_post_time, $f_mark_ti
|
||||||
return false;
|
return false;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Transform an array into a serialized format
|
||||||
|
*/
|
||||||
|
function tracking_serialize($input)
|
||||||
|
{
|
||||||
|
$out = '';
|
||||||
|
foreach ($input as $key => $value)
|
||||||
|
{
|
||||||
|
if (is_array($value))
|
||||||
|
{
|
||||||
|
$out .= $key . ':(' . tracking_serializer($value) . ');';
|
||||||
|
}
|
||||||
|
else
|
||||||
|
{
|
||||||
|
$out .= $key . ':' . $value . ';';
|
||||||
|
}
|
||||||
|
}
|
||||||
|
return $out;
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Transform a serialized array into an actual array
|
||||||
|
*/
|
||||||
|
function tracking_unserialize($string, $max_depth = 3)
|
||||||
|
{
|
||||||
|
$n = strlen($string);
|
||||||
|
if ($n > 10010)
|
||||||
|
{
|
||||||
|
die('Invalid data supplied');
|
||||||
|
}
|
||||||
|
$data = $stack = array();
|
||||||
|
$key = '';
|
||||||
|
$mode = 0;
|
||||||
|
$level = &$data;
|
||||||
|
for ($i = 0, ; $i < $n; ++$i)
|
||||||
|
{
|
||||||
|
switch ($mode)
|
||||||
|
{
|
||||||
|
case 0:
|
||||||
|
switch ($string[$i])
|
||||||
|
{
|
||||||
|
case ':':
|
||||||
|
$level[$key] = 0;
|
||||||
|
$mode = 1;
|
||||||
|
break;
|
||||||
|
case ')':
|
||||||
|
unset($level);
|
||||||
|
$level = array_pop($stack);
|
||||||
|
$mode = 3;
|
||||||
|
break;
|
||||||
|
default:
|
||||||
|
$key .= $string[$i];
|
||||||
|
}
|
||||||
|
break;
|
||||||
|
|
||||||
|
case 1:
|
||||||
|
switch ($string[$i])
|
||||||
|
{
|
||||||
|
case '(':
|
||||||
|
if (sizeof($stack) >= $max_depth)
|
||||||
|
{
|
||||||
|
die('Invalid data supplied');
|
||||||
|
}
|
||||||
|
$stack[] = &$level;
|
||||||
|
$level[$key] = array();
|
||||||
|
$level = &$level[$key];
|
||||||
|
$key = '';
|
||||||
|
$mode = 0;
|
||||||
|
break;
|
||||||
|
default:
|
||||||
|
$level[$key] = $string[$i];
|
||||||
|
$mode = 2;
|
||||||
|
break;
|
||||||
|
}
|
||||||
|
break;
|
||||||
|
|
||||||
|
case 2:
|
||||||
|
switch ($string[$i])
|
||||||
|
{
|
||||||
|
case ')':
|
||||||
|
unset($level);
|
||||||
|
$level = array_pop($stack);
|
||||||
|
$mode = 3;
|
||||||
|
break;
|
||||||
|
case ';':
|
||||||
|
$key = '';
|
||||||
|
$mode = 0;
|
||||||
|
break;
|
||||||
|
default:
|
||||||
|
$level[$key] .= $string[$i];
|
||||||
|
break;
|
||||||
|
}
|
||||||
|
break;
|
||||||
|
|
||||||
|
case 3:
|
||||||
|
switch ($string[$i])
|
||||||
|
{
|
||||||
|
case ')':
|
||||||
|
unset($level);
|
||||||
|
$level = array_pop($stack);
|
||||||
|
break;
|
||||||
|
case ';':
|
||||||
|
$key = '';
|
||||||
|
$mode = 0;
|
||||||
|
break;
|
||||||
|
default:
|
||||||
|
die('Invalid data supplied');
|
||||||
|
break;
|
||||||
|
}
|
||||||
|
break;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
if (sizeof($stack) != 0 || ($mode != 0 && $mode != 3))
|
||||||
|
{
|
||||||
|
die('Invalid data supplied');
|
||||||
|
}
|
||||||
|
|
||||||
|
return $level;
|
||||||
|
}
|
||||||
|
|
||||||
// Pagination functions
|
// Pagination functions
|
||||||
|
|
||||||
/**
|
/**
|
||||||
|
|
|
@ -62,7 +62,7 @@ function display_forums($root_data = '', $display_moderators = true, $return_mod
|
||||||
else if ($config['load_anon_lastread'] || $user->data['is_registered'])
|
else if ($config['load_anon_lastread'] || $user->data['is_registered'])
|
||||||
{
|
{
|
||||||
$tracking_topics = (isset($_COOKIE[$config['cookie_name'] . '_track'])) ? ((STRIP) ? stripslashes($_COOKIE[$config['cookie_name'] . '_track']) : $_COOKIE[$config['cookie_name'] . '_track']) : '';
|
$tracking_topics = (isset($_COOKIE[$config['cookie_name'] . '_track'])) ? ((STRIP) ? stripslashes($_COOKIE[$config['cookie_name'] . '_track']) : $_COOKIE[$config['cookie_name'] . '_track']) : '';
|
||||||
$tracking_topics = ($tracking_topics) ? unserialize($tracking_topics) : array();
|
$tracking_topics = ($tracking_topics) ? tracking_unserialize($tracking_topics) : array();
|
||||||
|
|
||||||
if (!$user->data['is_registered'])
|
if (!$user->data['is_registered'])
|
||||||
{
|
{
|
||||||
|
|
|
@ -254,7 +254,7 @@ class ucp_main
|
||||||
else
|
else
|
||||||
{
|
{
|
||||||
$tracking_topics = (isset($_COOKIE[$config['cookie_name'] . '_track'])) ? ((STRIP) ? stripslashes($_COOKIE[$config['cookie_name'] . '_track']) : $_COOKIE[$config['cookie_name'] . '_track']) : '';
|
$tracking_topics = (isset($_COOKIE[$config['cookie_name'] . '_track'])) ? ((STRIP) ? stripslashes($_COOKIE[$config['cookie_name'] . '_track']) : $_COOKIE[$config['cookie_name'] . '_track']) : '';
|
||||||
$tracking_topics = ($tracking_topics) ? unserialize($tracking_topics) : array();
|
$tracking_topics = ($tracking_topics) ? tracking_unserialize($tracking_topics) : array();
|
||||||
}
|
}
|
||||||
|
|
||||||
$sql = $db->sql_build_query('SELECT', $sql_array);
|
$sql = $db->sql_build_query('SELECT', $sql_array);
|
||||||
|
|
|
@ -546,7 +546,7 @@ if ($keywords || $author || $author_id || $search_id || $submit)
|
||||||
if ($config['load_anon_lastread'] || ($user->data['is_registered'] && !$config['load_db_lastread']))
|
if ($config['load_anon_lastread'] || ($user->data['is_registered'] && !$config['load_db_lastread']))
|
||||||
{
|
{
|
||||||
$tracking_topics = (isset($_COOKIE[$config['cookie_name'] . '_track'])) ? ((STRIP) ? stripslashes($_COOKIE[$config['cookie_name'] . '_track']) : $_COOKIE[$config['cookie_name'] . '_track']) : '';
|
$tracking_topics = (isset($_COOKIE[$config['cookie_name'] . '_track'])) ? ((STRIP) ? stripslashes($_COOKIE[$config['cookie_name'] . '_track']) : $_COOKIE[$config['cookie_name'] . '_track']) : '';
|
||||||
$tracking_topics = ($tracking_topics) ? unserialize($tracking_topics) : array();
|
$tracking_topics = ($tracking_topics) ? tracking_unserialize($tracking_topics) : array();
|
||||||
}
|
}
|
||||||
|
|
||||||
$sql = "SELECT $sql_select
|
$sql = "SELECT $sql_select
|
||||||
|
|
Loading…
Add table
Reference in a new issue