mirror of
https://github.com/phpbb/phpbb.git
synced 2025-08-07 01:06:48 +02:00
Merge branch 'develop-olympus' into develop
* develop-olympus: [ticket/7717] Localise default extension groups for attachments [ticket/9598] checkdnsrr() is now available on Windows with PHP 5.3 or later. Change if block order to always call checkdnsrr() if the function is available. [ticket/9173] No longer limit scope of numbers we store in the config table on [ticket/9536] Small improvement for query against user/session tables when managing users from the ACP. [ticket/9526] If an admin changes a user's 'user_allow_viewonline' flag to 'hide me' the admin usually wants that user to be hidden immediately. We therefore have to update his session if one exists. [ticket/9518] Correctly create new connection on PostgreSQL when new connection is forced. [ticket/9514] Correctly delete big datasets when deleting a forum including topics/posts on non-MySQL databases. [ticket/6726] Added localhost/127.0.0.1 note to database server hostname explanation in install language. [feature/remote_upload-filesize] Also check HTTP content-length before actually starting the file transfer. [feature/remote_upload-filesize] When transferring files from a remote webserver, abort the transfer as soon as the allowed filesize has been exceeded. [ticket/9176] Take current board timezone settings into account when setting board date format.
This commit is contained in:
@@ -90,6 +90,7 @@ class acp_attachments
|
||||
$s_assigned_groups = array();
|
||||
while ($row = $db->sql_fetchrow($result))
|
||||
{
|
||||
$row['group_name'] = (isset($user->lang['EXT_GROUP_' . $row['group_name']])) ? $user->lang['EXT_GROUP_' . $row['group_name']] : $row['group_name'];
|
||||
$s_assigned_groups[$row['cat_id']][] = $row['group_name'];
|
||||
}
|
||||
$db->sql_freeresult($result);
|
||||
@@ -494,6 +495,10 @@ class acp_attachments
|
||||
$sql = 'SELECT group_id
|
||||
FROM ' . EXTENSION_GROUPS_TABLE . "
|
||||
WHERE LOWER(group_name) = '" . $db->sql_escape(utf8_strtolower($new_group_name)) . "'";
|
||||
if ($group_id)
|
||||
{
|
||||
$sql .= ' AND group_id <> ' . $group_id;
|
||||
}
|
||||
$result = $db->sql_query($sql);
|
||||
|
||||
if ($db->sql_fetchrow($result))
|
||||
@@ -551,6 +556,7 @@ class acp_attachments
|
||||
$group_id = $db->sql_nextid();
|
||||
}
|
||||
|
||||
$group_name = (isset($user->lang['EXT_GROUP_' . $group_name])) ? $user->lang['EXT_GROUP_' . $group_name] : $group_name;
|
||||
add_log('admin', 'LOG_ATTACH_EXTGROUP_' . strtoupper($action), $group_name);
|
||||
}
|
||||
|
||||
@@ -858,7 +864,7 @@ class acp_attachments
|
||||
'U_EDIT' => $this->u_action . "&action=edit&g={$row['group_id']}",
|
||||
'U_DELETE' => $this->u_action . "&action=delete&g={$row['group_id']}",
|
||||
|
||||
'GROUP_NAME' => $row['group_name'],
|
||||
'GROUP_NAME' => (isset($user->lang['EXT_GROUP_' . $row['group_name']])) ? $user->lang['EXT_GROUP_' . $row['group_name']] : $row['group_name'],
|
||||
'CATEGORY' => $cat_lang[$row['cat_id']],
|
||||
)
|
||||
);
|
||||
@@ -1118,6 +1124,7 @@ class acp_attachments
|
||||
$group_name = array();
|
||||
while ($row = $db->sql_fetchrow($result))
|
||||
{
|
||||
$row['group_name'] = (isset($user->lang['EXT_GROUP_' . $row['group_name']])) ? $user->lang['EXT_GROUP_' . $row['group_name']] : $row['group_name'];
|
||||
$group_name[] = $row;
|
||||
}
|
||||
$db->sql_freeresult($result);
|
||||
|
@@ -888,8 +888,8 @@ class acp_board
|
||||
$old_tz = $user->timezone;
|
||||
$old_dst = $user->dst;
|
||||
|
||||
$user->timezone = $config['board_timezone'];
|
||||
$user->dst = $config['board_dst'];
|
||||
$user->timezone = $config['board_timezone'] * 3600;
|
||||
$user->dst = $config['board_dst'] * 3600;
|
||||
|
||||
$dateformat_options = '';
|
||||
|
||||
|
@@ -1705,6 +1705,9 @@ class acp_forums
|
||||
)
|
||||
);
|
||||
|
||||
// Amount of rows we select and delete in one iteration.
|
||||
$batch_size = 500;
|
||||
|
||||
foreach ($tables_ary as $field => $tables)
|
||||
{
|
||||
$start = 0;
|
||||
@@ -1714,7 +1717,7 @@ class acp_forums
|
||||
$sql = "SELECT $field
|
||||
FROM " . POSTS_TABLE . '
|
||||
WHERE forum_id = ' . $forum_id;
|
||||
$result = $db->sql_query_limit($sql, 500, $start);
|
||||
$result = $db->sql_query_limit($sql, $batch_size, $start);
|
||||
|
||||
$ids = array();
|
||||
while ($row = $db->sql_fetchrow($result))
|
||||
@@ -1733,7 +1736,7 @@ class acp_forums
|
||||
}
|
||||
}
|
||||
}
|
||||
while ($row);
|
||||
while (sizeof($ids) == $batch_size);
|
||||
}
|
||||
unset($ids);
|
||||
|
||||
|
@@ -105,7 +105,7 @@ class acp_users
|
||||
LEFT JOIN ' . SESSIONS_TABLE . ' s ON (s.session_user_id = u.user_id)
|
||||
WHERE u.user_id = ' . $user_id . '
|
||||
ORDER BY s.session_time DESC';
|
||||
$result = $db->sql_query($sql);
|
||||
$result = $db->sql_query_limit($sql, 1);
|
||||
$user_row = $db->sql_fetchrow($result);
|
||||
$db->sql_freeresult($result);
|
||||
|
||||
@@ -1550,6 +1550,31 @@ class acp_users
|
||||
WHERE user_id = $user_id";
|
||||
$db->sql_query($sql);
|
||||
|
||||
// Check if user has an active session
|
||||
if ($user_row['session_id'])
|
||||
{
|
||||
// We'll update the session if user_allow_viewonline has changed and the user is a bot
|
||||
// Or if it's a regular user and the admin set it to hide the session
|
||||
if ($user_row['user_allow_viewonline'] != $sql_ary['user_allow_viewonline'] && $user_row['user_type'] == USER_IGNORE
|
||||
|| $user_row['user_allow_viewonline'] && !$sql_ary['user_allow_viewonline'])
|
||||
{
|
||||
// We also need to check if the user has the permission to cloak.
|
||||
$user_auth = new auth();
|
||||
$user_auth->acl($user_row);
|
||||
|
||||
$session_sql_ary = array(
|
||||
'session_viewonline' => ($user_auth->acl_get('u_hideonline')) ? $sql_ary['user_allow_viewonline'] : true,
|
||||
);
|
||||
|
||||
$sql = 'UPDATE ' . SESSIONS_TABLE . '
|
||||
SET ' . $db->sql_build_array('UPDATE', $session_sql_ary) . "
|
||||
WHERE session_user_id = $user_id";
|
||||
$db->sql_query($sql);
|
||||
|
||||
unset($user_auth);
|
||||
}
|
||||
}
|
||||
|
||||
trigger_error($user->lang['USER_PREFS_UPDATED'] . adm_back_link($this->u_action . '&u=' . $user_id));
|
||||
}
|
||||
|
||||
@@ -2084,7 +2109,7 @@ class acp_users
|
||||
LEFT JOIN ' . SESSIONS_TABLE . ' s ON (s.session_user_id = u.user_id)
|
||||
WHERE u.user_id = ' . $user_id . '
|
||||
ORDER BY s.session_time DESC';
|
||||
$result = $db->sql_query($sql);
|
||||
$result = $db->sql_query_limit($sql, 1);
|
||||
$user_row = $db->sql_fetchrow($result);
|
||||
$db->sql_freeresult($result);
|
||||
}
|
||||
|
@@ -76,7 +76,14 @@ class dbal_postgres extends dbal
|
||||
|
||||
$this->persistency = $persistency;
|
||||
|
||||
$this->db_connect_id = ($this->persistency) ? @pg_pconnect($connect_string, $new_link) : @pg_connect($connect_string, $new_link);
|
||||
if ($this->persistency)
|
||||
{
|
||||
$this->db_connect_id = (!$new_link) ? @pg_pconnect($connect_string) : @pg_pconnect($connect_string, PGSQL_CONNECT_FORCE_NEW);
|
||||
}
|
||||
else
|
||||
{
|
||||
$this->db_connect_id = (!$new_link) ? @pg_connect($connect_string) : @pg_connect($connect_string, PGSQL_CONNECT_FORCE_NEW);
|
||||
}
|
||||
|
||||
if ($this->db_connect_id)
|
||||
{
|
||||
|
@@ -175,11 +175,8 @@ function set_config_count($config_name, $increment, $is_dynamic = false)
|
||||
switch ($db->sql_layer)
|
||||
{
|
||||
case 'firebird':
|
||||
$sql_update = 'CAST(CAST(config_value as integer) + ' . (int) $increment . ' as VARCHAR(255))';
|
||||
break;
|
||||
|
||||
case 'postgres':
|
||||
$sql_update = 'int4(config_value) + ' . (int) $increment;
|
||||
$sql_update = 'CAST(CAST(config_value as DECIMAL(255, 0)) + ' . (int) $increment . ' as VARCHAR(255))';
|
||||
break;
|
||||
|
||||
// MySQL, SQlite, mssql, mssql_odbc, oracle
|
||||
@@ -3409,13 +3406,14 @@ function phpbb_checkdnsrr($host, $type = '')
|
||||
{
|
||||
$type = (!$type) ? 'MX' : $type;
|
||||
|
||||
if (DIRECTORY_SEPARATOR == '\\')
|
||||
// Call checkdnsrr() if available. This is also the case on Windows with PHP 5.3 or later.
|
||||
if (function_exists('checkdnsrr'))
|
||||
{
|
||||
// The dot indicates to search the DNS root (helps those having DNS prefixes on the same domain)
|
||||
return checkdnsrr($host . '.', $type);
|
||||
}
|
||||
else if (DIRECTORY_SEPARATOR == '\\' && function_exists('exec'))
|
||||
{
|
||||
if (!function_exists('exec'))
|
||||
{
|
||||
return NULL;
|
||||
}
|
||||
|
||||
// @exec('nslookup -retry=1 -timout=1 -type=' . escapeshellarg($type) . ' ' . escapeshellarg($host), $output);
|
||||
@exec('nslookup -type=' . escapeshellarg($type) . ' ' . escapeshellarg($host) . '.', $output);
|
||||
|
||||
@@ -3441,11 +3439,6 @@ function phpbb_checkdnsrr($host, $type = '')
|
||||
|
||||
return false;
|
||||
}
|
||||
else if (function_exists('checkdnsrr'))
|
||||
{
|
||||
// The dot indicates to search the DNS root (helps those having DNS prefixes on the same domain)
|
||||
return (checkdnsrr($host . '.', $type)) ? true : false;
|
||||
}
|
||||
|
||||
return NULL;
|
||||
}
|
||||
|
@@ -775,7 +775,18 @@ class fileupload
|
||||
{
|
||||
if ($get_info)
|
||||
{
|
||||
$data .= @fread($fsock, 1024);
|
||||
$block = @fread($fsock, 1024);
|
||||
$filesize += strlen($block);
|
||||
|
||||
if ($this->max_filesize && $filesize > $this->max_filesize)
|
||||
{
|
||||
$max_filesize = get_formatted_filesize($this->max_filesize, false);
|
||||
|
||||
$file = new fileerror(sprintf($user->lang[$this->error_prefix . 'WRONG_FILESIZE'], $max_filesize['value'], $max_filesize['unit']));
|
||||
return $file;
|
||||
}
|
||||
|
||||
$data .= $block;
|
||||
}
|
||||
else
|
||||
{
|
||||
@@ -791,6 +802,18 @@ class fileupload
|
||||
{
|
||||
$upload_ary['type'] = rtrim(str_replace('content-type: ', '', strtolower($line)));
|
||||
}
|
||||
else if ($this->max_filesize && stripos($line, 'content-length: ') !== false)
|
||||
{
|
||||
$length = (int) str_replace('content-length: ', '', strtolower($line));
|
||||
|
||||
if ($length && $length > $this->max_filesize)
|
||||
{
|
||||
$max_filesize = get_formatted_filesize($this->max_filesize, false);
|
||||
|
||||
$file = new fileerror(sprintf($user->lang[$this->error_prefix . 'WRONG_FILESIZE'], $max_filesize['value'], $max_filesize['unit']));
|
||||
return $file;
|
||||
}
|
||||
}
|
||||
else if (stripos($line, '404 not found') !== false)
|
||||
{
|
||||
$file = new fileerror($user->lang[$this->error_prefix . 'URL_NOT_FOUND']);
|
||||
|
Reference in New Issue
Block a user