mirror of
https://github.com/phpbb/phpbb.git
synced 2025-07-30 21:40:43 +02:00
Merge branch 'develop-olympus' into develop
* develop-olympus: [ticket/9478] Validate maximum number of allowed recipients per PM value. [ticket/9686] Fix mssqlnative database data export [ticket/9595] List min/max characters indexed by search for mysql_fulltext. [ticket/9101] Remove misleading 'below' from RECAPTCHA_EXPLAIN. [ticket/9853] Change recaptcha theme from default to 'clean'.
This commit is contained in:
@@ -1619,41 +1619,48 @@ class mssql_extractor extends base_extractor
|
||||
function write_data_mssqlnative($table_name)
|
||||
{
|
||||
global $db;
|
||||
$ary_type = $ary_name = $meta_array = array();
|
||||
$ary_type = $ary_name = array();
|
||||
$ident_set = false;
|
||||
$sql_data = '';
|
||||
|
||||
// Grab all of the data from current table.
|
||||
$sql = "SELECT * FROM $table_name";
|
||||
$db->mssqlnative_set_query_options(array('Scrollable' => SQLSRV_CURSOR_STATIC));
|
||||
$result = $db->sql_query($sql);
|
||||
|
||||
$retrieved_data = $db->mssqlnative_num_rows($result);
|
||||
$retrieved_data = $db->mssqlnative_num_rows($result);
|
||||
|
||||
$meta_array = sqlsrv_field_metadata($result);
|
||||
$i_num_fields = sqlsrv_num_fields($result);
|
||||
|
||||
if (!$retrieved_data)
|
||||
{
|
||||
$db->sql_freeresult($result);
|
||||
return;
|
||||
}
|
||||
|
||||
$sql = "SELECT * FROM $table_name";
|
||||
$result_fields = $db->sql_query_limit($sql, 1);
|
||||
|
||||
$row = new result_mssqlnative($result_fields);
|
||||
$i_num_fields = $row->num_fields();
|
||||
|
||||
for ($i = 0; $i < $i_num_fields; $i++)
|
||||
{
|
||||
$info = $db->mssqlnative_fieldInfo($table_name, $meta_array[$i]['Name']);
|
||||
$ary_type[$i] = $info->type();
|
||||
$ary_name[$i] = $info->name();
|
||||
$ary_type[$i] = $row->field_type($i);
|
||||
$ary_name[$i] = $row->field_name($i);
|
||||
}
|
||||
$db->sql_freeresult($result_fields);
|
||||
|
||||
$sql = "SELECT 1 as has_identity
|
||||
FROM INFORMATION_SCHEMA.COLUMNS
|
||||
WHERE COLUMNPROPERTY(object_id('$table_name'), COLUMN_NAME, 'IsIdentity') = 1";
|
||||
$result2 = $db->sql_query($sql);
|
||||
$row2 = $db->sql_fetchrow($result2);
|
||||
|
||||
if ($retrieved_data)
|
||||
if (!empty($row2['has_identity']))
|
||||
{
|
||||
$sql = "SELECT 1 as has_identity
|
||||
FROM INFORMATION_SCHEMA.COLUMNS
|
||||
WHERE COLUMNPROPERTY(object_id('$table_name'), COLUMN_NAME, 'IsIdentity') = 1";
|
||||
$result2 = $db->sql_query($sql);
|
||||
$row2 = $db->sql_fetchrow($result2);
|
||||
|
||||
if (!empty($row2['has_identity']))
|
||||
{
|
||||
$sql_data .= "\nSET IDENTITY_INSERT $table_name ON\nGO\n";
|
||||
$ident_set = true;
|
||||
}
|
||||
$db->sql_freeresult($result2);
|
||||
$sql_data .= "\nSET IDENTITY_INSERT $table_name ON\nGO\n";
|
||||
$ident_set = true;
|
||||
}
|
||||
$db->sql_freeresult($result2);
|
||||
|
||||
while ($row = $db->sql_fetchrow($result))
|
||||
{
|
||||
@@ -1664,7 +1671,8 @@ class mssql_extractor extends base_extractor
|
||||
{
|
||||
$str_val = $row[$ary_name[$i]];
|
||||
|
||||
if (preg_match('#char|text|bool|varbinary#i', $ary_type[$i]))
|
||||
// defaults to type number - better quote just to be safe, so check for is_int too
|
||||
if (is_int($ary_type[$i]) || preg_match('#char|text|bool|varbinary#i', $ary_type[$i]))
|
||||
{
|
||||
$str_quote = '';
|
||||
$str_empty = "''";
|
||||
@@ -1705,7 +1713,7 @@ class mssql_extractor extends base_extractor
|
||||
}
|
||||
$db->sql_freeresult($result);
|
||||
|
||||
if ($retrieved_data && $ident_set)
|
||||
if ($ident_set)
|
||||
{
|
||||
$sql_data .= "\nSET IDENTITY_INSERT $table_name OFF\nGO\n";
|
||||
}
|
||||
|
@@ -394,6 +394,15 @@ class acp_groups
|
||||
}
|
||||
}
|
||||
|
||||
// Validate the length of "Maximum number of allowed recipients per private message" setting.
|
||||
// We use 16777215 as a maximum because it matches MySQL unsigned mediumint maximum value
|
||||
// which is the lowest amongst DBMSes supported by phpBB3
|
||||
if ($max_recipients_error = validate_data($submit_ary, array('max_recipients' => array('num', false, 0, 16777215))))
|
||||
{
|
||||
// Replace "error" string with its real, localised form
|
||||
$error = array_merge($error, array_map(array(&$user, 'lang'), $max_recipients_error));
|
||||
}
|
||||
|
||||
if (!sizeof($error))
|
||||
{
|
||||
// Only set the rank, colour, etc. if it's changed or if we're adding a new
|
||||
|
Reference in New Issue
Block a user