From 6225256418c127806f2c3d8a0ca0fe448b74c1c4 Mon Sep 17 00:00:00 2001 From: "Paul S. Owen" Date: Wed, 27 Aug 2003 16:31:54 +0000 Subject: [PATCH] bah, group handling needs some further discussion ... I'm done with it for M-2 git-svn-id: file:///svn/phpbb/trunk@4440 89ea8834-ac86-4346-8a33-228a782c2dd0 --- phpBB/adm/admin_database.php | 240 +++++++-------------------- phpBB/adm/admin_groups.php | 203 +++++++--------------- phpBB/adm/admin_icons.php | 2 +- phpBB/adm/admin_users.php | 46 +++-- phpBB/adm/subSilver.css | 5 + phpBB/includes/db/firebird.php | 10 +- phpBB/includes/db/mysql.php | 2 +- phpBB/includes/db/postgres.php | 6 +- phpBB/includes/functions.php | 40 ++--- phpBB/includes/functions_admin.php | 34 ++-- phpBB/includes/functions_jabber.php | 16 ++ phpBB/includes/functions_posting.php | 19 ++- phpBB/includes/functions_user.php | 99 +++++++++-- phpBB/includes/session.php | 45 ++++- phpBB/includes/ucp/ucp_profile.php | 31 ++-- 15 files changed, 344 insertions(+), 454 deletions(-) diff --git a/phpBB/adm/admin_database.php b/phpBB/adm/admin_database.php index 4647311760..b47f820b69 100644 --- a/phpBB/adm/admin_database.php +++ b/phpBB/adm/admin_database.php @@ -1,23 +1,15 @@ acl_get('a_restore')) { - $module['DB']['DB_RESTORE'] = $filename . "$SID&mode=restore"; + $module['DB']['DB_RESTORE'] = "$filenamex$SID&mode=restore"; } return; @@ -38,14 +30,19 @@ define('IN_PHPBB', 1); $phpbb_root_path = '../'; require($phpbb_root_path . 'extension.inc'); require('pagestart.' . $phpEx); +include($phpbb_root_path . 'functions_compress.'.$phpEx); -$mode = (isset($_GET['mode'])) ? $_GET['mode'] : ''; - -// Increase maximum execution time, but don't complain about it if it isn't -// allowed. @set_time_limit(1200); + +// Get some vars +$mode = (isset($_GET['mode'])) ? htmlspecialchars($_GET['mode']) : ''; +$action = (isset($_REQUEST['action'])) ? htmlspecialchars($_REQUEST['action']) : ''; + + +// -------------------- // Begin program proper +// -------------------- switch($mode) { case 'backup': @@ -54,30 +51,30 @@ switch($mode) trigger_error($user->lang['NO_ADMIN']); } - if (SQL_LAYER == 'oracle' || SQL_LAYER == 'odbc' || SQL_LAYER == 'mssql') + $db_type = ''; + switch (SQL_LAYER) { - switch (SQL_LAYER) - { - case 'oracle': - $db_type = 'Oracle'; - break; - case 'odbc': - $db_type = 'ODBC'; - break; - case 'mssql': - $db_type = 'MSSQL'; - break; - } - - trigger_error($user->lang['Backups_not_supported']); - break; + case 'oracle': + $db_type = 'Oracle'; + break; + case 'odbc': + $db_type = 'ODBC'; + break; + case 'mssql': + $db_type = 'MSSQL'; + break; } - $additional_tables = (isset($_POST['tables'])) ? $_POST['tables'] : ((isset($_GET['tables'])) ? $_GET['tables'] : ''); - $backup_type = (isset($_POST['type'])) ? $_POST['type'] : ((isset($_GET['type'])) ? $_GET['type'] : ''); - $search = (!empty($_POST['search'])) ? intval($_POST['search']) : ((!empty($_GET['search'])) ? intval($_GET['search']) : 0); - $store_path = (isset($_POST['store'])) ? $_POST['store'] : ((isset($_GET['store'])) ? $_GET['store'] : ''); - $compress = (!empty($_POST['compress'])) ? $_POST['compress'] : ((!empty($_GET['compress'])) ? $_GET['compress'] : 'none'); + if ($db_type) + { + trigger_error($user->lang['Backups_not_supported']); + } + + $additional_tables = (isset($_REQUEST['tables'])) ? htmlspecialchars($_REQUEST['tables']) : ''; + $backup_type = (isset($_REQUEST['type'])) ? intval($_REQUEST['type']) : false; + $search = (!empty($_REQUEST['search'])) ? true : false; + $store = (!empty($_REQUEST['store'])) ? true : false; + $compress = (isset($_REQUEST['compress'])) ? htmlspecialchars($_REQUEST['compress']) : ''; if (!isset($_POST['backupstart']) && !isset($_GET['backupstart'])) { @@ -89,34 +86,34 @@ switch($mode)

lang['Backup_explain']; ?>

-
"> +">
- + - - + + - - + + - - + + - + @@ -270,30 +293,6 @@ function swatch() break; - - case 'addleaders': - case 'addusers': - if (!$group_id) - { - trigger_error($user->lang['NO_GROUP']); - } - - if (!$name_ary) - { - trigger_error($user->lang['NO_USERS']); - } - - // Add user/s to group - if ($error = add_to_group($action, $group_id, false, $name_ary, $group_colour, $group_rank, $group_avatar, $group_avatar_type)) - { - trigger_error($user->lang[$error]); - } - - $message = ($action == 'addleaders') ? 'GROUP_MODS_ADDED' : 'GROUP_USERS_ADDED'; - trigger_error($user->lang[$message]); - break; - - // Show list of leaders, existing and pending members case 'list': if (!$group_id) @@ -410,7 +409,7 @@ function swatch() ?> - +
lang['Backup_options']; ?>
lang['Backup_type']; ?>: lang['Backup_type']; ?>: lang['Full_backup']; ?>   lang['Structure_only']; ?>   lang['Data_only']; ?>
lang['Include_search_index']; ?>:
lang['Include_search_index_explain']; ?>
lang['NO']; ?>   lang['YES']; ?>lang['Additional_tables']; ?>:
lang['Additional_tables_explain']; ?>
lang['Additional_tables']; ?>:
lang['Additional_tables_explain']; ?>
lang['INC_SEARCH_INDEX']; ?>:
lang['INC_SEARCH_INDEX_EXPLAIN']; ?>
lang['YES']; ?>   lang['NO']; ?>
lang['Store_local']; ?>:
lang['Store_local_explain']; ?>
lang['DOWNLOAD_STORE']; ?>:
lang['DOWNLOAD_STORE_EXPLAIN']; ?>
lang['EXPORT_DOWNLOAD']; ?>   lang['EXPORT_STORE']; ?>
lang['Compress_file']; ?>: lang['Compress_file']; ?>: lang['NONE']; ?>acl_get('a_restore')) { - trigger_error($user->lang['No_admin']); + trigger_error($user->lang['NO_ADMIN']); } if (isset($_POST['restorestart'])) { - // // Handle the file upload .... // If no file was uploaded report an error... - // if (!empty($_POST['local'])) { $file_tmpname = './../' . str_replace('\\\\', '/', $_POST['local']); @@ -310,7 +299,7 @@ switch($mode) } else { - $filename = (!empty($HTTP_POST_FILES['backup_file']['name'])) ? $HTTP_POST_FILES['backup_file']['name'] : ''; + $filename = (!empty($_POST['backup_file']['name'])) ? $HTTP_POST_FILES['backup_file']['name'] : ''; $file_tmpname = ($HTTP_POST_FILES['backup_file']['tmp_name'] != 'none') ? $HTTP_POST_FILES['backup_file']['tmp_name'] : ''; } @@ -999,123 +988,6 @@ function output_table_content($content) echo $content ."\n"; return; } - - -// -// Zip creation class from phpMyAdmin 2.3.0 (c) Tobias Ratschiller, Olivier Müller, Loïc Chapeaux, Marc Delisle -// http://www.phpmyadmin.net/ -// -// Based on work by Eric Mueller and Denis125 -// Official ZIP file format: http://www.pkware.com/appnote.txt -// -class zipfile -{ - var $datasec = array(); - var $ctrl_dir = array(); - var $eof_ctrl_dir = "\x50\x4b\x05\x06\x00\x00\x00\x00"; - var $old_offset = 0; - - function unix_to_dos_time($unixtime = 0) - { - $timearray = ($unixtime == 0) ? getdate() : getdate($unixtime); - - if ($timearray['year'] < 1980) - { - $timearray['year'] = 1980; - $timearray['mon'] = 1; - $timearray['mday'] = 1; - $timearray['hours'] = 0; - $timearray['minutes'] = 0; - $timearray['seconds'] = 0; - } - - return (($timearray['year'] - 1980) << 25) | ($timearray['mon'] << 21) | ($timearray['mday'] << 16) | - ($timearray['hours'] << 11) | ($timearray['minutes'] << 5) | ($timearray['seconds'] >> 1); - } - - function add_file($data, $name, $time = 0) - { - $name = str_replace('\\', '/', $name); - - $dtime = dechex($this->unix_to_dos_time($time)); - $hexdtime = '\x' . $dtime[6] . $dtime[7] - . '\x' . $dtime[4] . $dtime[5] - . '\x' . $dtime[2] . $dtime[3] - . '\x' . $dtime[0] . $dtime[1]; - eval('$hexdtime = "' . $hexdtime . '";'); - - $fr = "\x50\x4b\x03\x04"; - $fr .= "\x14\x00"; // ver needed to extract - $fr .= "\x00\x00"; // gen purpose bit flag - $fr .= "\x08\x00"; // compression method - $fr .= $hexdtime; // last mod time and date - - $unc_len = strlen($data); - $crc = crc32($data); - $zdata = gzcompress($data); - $zdata = substr(substr($zdata, 0, strlen($zdata) - 4), 2); // fix crc bug - $c_len = strlen($zdata); - $fr .= pack('V', $crc); // crc32 - $fr .= pack('V', $c_len); // compressed filesize - $fr .= pack('V', $unc_len); // uncompressed filesize - $fr .= pack('v', strlen($name)); // length of filename - $fr .= pack('v', 0); // extra field length - $fr .= $name; - - // "file data" segment - $fr .= $zdata; - - // "data descriptor" segment (optional but necessary if archive is not - // served as file) - $fr .= pack('V', $crc); // crc32 - $fr .= pack('V', $c_len); // compressed filesize - $fr .= pack('V', $unc_len); // uncompressed filesize - - // add this entry to array - $this -> datasec[] = $fr; - $new_offset = strlen(implode('', $this->datasec)); - - // now add to central directory record - $cdrec = "\x50\x4b\x01\x02"; - $cdrec .= "\x00\x00"; // version made by - $cdrec .= "\x14\x00"; // version needed to extract - $cdrec .= "\x00\x00"; // gen purpose bit flag - $cdrec .= "\x08\x00"; // compression method - $cdrec .= $hexdtime; // last mod time & date - $cdrec .= pack('V', $crc); // crc32 - $cdrec .= pack('V', $c_len); // compressed filesize - $cdrec .= pack('V', $unc_len); // uncompressed filesize - $cdrec .= pack('v', strlen($name)); // length of filename - $cdrec .= pack('v', 0); // extra field length - $cdrec .= pack('v', 0); // file comment length - $cdrec .= pack('v', 0); // disk number start - $cdrec .= pack('v', 0); // internal file attributes - $cdrec .= pack('V', 32); // external file attributes - 'archive' bit set - - $cdrec .= pack('V', $this -> old_offset); // relative offset of local header - $this -> old_offset = $new_offset; - - $cdrec .= $name; - - // optional extra field, file comment goes here - // save to central directory - $this -> ctrl_dir[] = $cdrec; - } - - function file() - { - $data = implode('', $this -> datasec); - $ctrldir = implode('', $this -> ctrl_dir); - - return $data . $ctrldir . $this -> eof_ctrl_dir . - pack('v', sizeof($this -> ctrl_dir)) . // total # of entries "on this disk" - pack('v', sizeof($this -> ctrl_dir)) . // total # of entries overall - pack('V', strlen($ctrldir)) . // size of central dir - pack('V', strlen($data)) . // offset to start of central dir - "\x00\x00"; // .zip file comment length - } -} - // // End Functions // ----------------------------------------------- diff --git a/phpBB/adm/admin_groups.php b/phpBB/adm/admin_groups.php index bd65107656..11b1e9455f 100644 --- a/phpBB/adm/admin_groups.php +++ b/phpBB/adm/admin_groups.php @@ -60,7 +60,6 @@ else $action = (isset($_REQUEST['action'])) ? htmlspecialchars($_REQUEST['action']) : ''; } - // Grab basic data for group, if group_id is set and exists if ($group_id) { @@ -85,24 +84,6 @@ switch ($mode) // Which page? switch ($action) { - case 'delete': - if (!$group_id) - { - trigger_error($user->lang['NO_GROUP']); - } - - - break; - - case 'deleteusers': - if (!$group_id) - { - trigger_error($user->lang['NO_GROUP']); - } - - - break; - case 'approve': if (!$group_id) { @@ -122,6 +103,45 @@ switch ($mode) set_default_group($group_id, $mark_ary, false, $group_name, $group_colour, $group_rank, false, false); trigger_error($user->lang['GROUP_DEFS_UPDATED']); break; + + case 'delete': + case 'deleteusers': + case 'demote': + if (!$group_id) + { + trigger_error($user->lang['NO_GROUP']); + } + + if ($error = remove_from_group($action, $group_id, $mark_ary, false, $group_name)) + { + trigger_error($user->lang[$error]); + } + + $message = ($action == 'demote') ? 'GROUP_MODS_DEMOTED' : (($action == 'deleteusers') ? 'GROUP_USERS_REMOVE' : 'GROUP_DELETED'); + trigger_error($user->lang[$message]); + break; + + case 'addleaders': + case 'addusers': + if (!$group_id) + { + trigger_error($user->lang['NO_GROUP']); + } + + if (!$name_ary) + { + trigger_error($user->lang['NO_USERS']); + } + + // Add user/s to group + if ($error = add_to_group($action, $group_id, false, $name_ary, $group_colour, $group_rank, $group_avatar, $group_avatar_type)) + { + trigger_error($user->lang[$error]); + } + + $message = ($action == 'addleaders') ? 'GROUP_MODS_ADDED' : 'GROUP_USERS_ADDED'; + trigger_error($user->lang[$message]); + break; case 'edit': case 'add': @@ -259,6 +279,9 @@ function swatch()
Select option:  Select option:  
@@ -706,100 +705,19 @@ function hidebox(id) adm_page_footer(); break; - - - + // Setting groupwide preferences case 'prefs': adm_page_header($user->lang['GROUP_PREFS']); - - adm_page_footer(); - break; - - - - default: - trigger_error($user->lang['NO_MODE']); -} - -exit; - - - - - - - - - - - - - - - - - - -/* - - - - - - - - - - - - case 'add': - - - break; - - - - - - - case 'delete': - // TODO: - // Need to offer ability to demote moderators or remove from group - break; - - - - - - case 'approve': - break; - - - - - - - - - - - -adm_page_footer(); - - - - - - case 'prefs': - - } - else - { - $user_lang = (!empty($_POST['user_lang'])) ? htmlspecialchars($_POST['user_lang']) : ''; - $user_tz = (isset($_POST['user_tz'])) ? doubleval($_POST['user_tz']) : ''; - $user_dst = (isset($_POST['user_dst'])) ? intval($_POST['user_dst']) : ''; - } + if ($update) + { + } + else + { + $user_lang = (!empty($_POST['user_lang'])) ? htmlspecialchars($_POST['user_lang']) : ''; + $user_tz = (isset($_POST['user_tz'])) ? doubleval($_POST['user_tz']) : ''; + $user_dst = (isset($_POST['user_dst'])) ? intval($_POST['user_dst']) : ''; + } ?>

lang['GROUP_SETTINGS']; ?>

@@ -829,18 +747,13 @@ adm_page_footer(); lang['NO_MODE']); } +exit; ?> \ No newline at end of file diff --git a/phpBB/adm/admin_icons.php b/phpBB/adm/admin_icons.php index f09173dd29..78c1f139f5 100644 --- a/phpBB/adm/admin_icons.php +++ b/phpBB/adm/admin_icons.php @@ -169,7 +169,7 @@ switch ($action) { foreach ($img_ary as $img) { - $img = substr($path, 1) . (($path != '') ? '/' : '') . $img; + $img = "$path$img"; if (!in_array($img, $existing_imgs) || $action == 'edit') { diff --git a/phpBB/adm/admin_users.php b/phpBB/adm/admin_users.php index 3cf40c5d1a..759f3efeeb 100644 --- a/phpBB/adm/admin_users.php +++ b/phpBB/adm/admin_users.php @@ -34,17 +34,20 @@ if (!empty($setmodules)) define('IN_PHPBB', 1); // Include files $phpbb_root_path = '../'; -require($phpbb_root_path . 'extension.inc'); +$phpEx = substr(strrchr(__FILE__, '.'), 1); require('pagestart.' . $phpEx); + // Set mode -$mode = (isset($_REQUEST['mode'])) ? $_REQUEST['mode'] : 'main'; +$mode = (isset($_REQUEST['mode'])) ? htmlspecialchars($_REQUEST['mode']) : ''; +$action = (isset($_REQUEST['action'])) ? htmlspecialchars($_REQUEST['action']) : 'main'; + // Begin program if (isset($_POST['username']) || isset($_REQUEST['u'])) { // Grab relevant userdata - if(isset($_REQUEST['u'])) + if (isset($_REQUEST['u'])) { $user_id = intval($_REQUEST['u']); @@ -71,35 +74,24 @@ if (isset($_POST['username']) || isset($_REQUEST['u'])) $db->sql_transaction(); - $sql = "UPDATE " . POSTS_TABLE . " - SET poster_id = " . ANONYMOUS . ", post_username = '$username' + $sql = 'UPDATE ' . POSTS_TABLE . ' + SET poster_id = ' . ANONYMOUS . " WHERE poster_id = $user_id"; $db->sql_query($sql); - $sql = "UPDATE " . TOPICS_TABLE . " - SET topic_poster = " . ANONYMOUS . " + $sql = 'UPDATE ' . TOPICS_TABLE . ' + SET topic_poster = ' . ANONYMOUS . " WHERE topic_poster = $user_id"; $db->sql_query($sql); - $sql = "DELETE FROM " . USERS_TABLE . " - WHERE user_id = $user_id"; - $db->sql_query($sql); + $table_ary = array(USERS_TABLE, USER_GROUP_TABLE, TOPICS_WATCH_TABLE, FORUMS_WATCH_TABLE, ACL_USERS_TABLE); - $sql = "DELETE FROM " . USER_GROUP_TABLE . " - WHERE user_id = $user_id"; - $db->sql_query($sql); - - $sql = "DELETE FROM " . TOPICS_WATCH_TABLE . " - WHERE user_id = $user_id"; - $db->sql_query($sql); - - $sql = "DELETE FROM " . FORUMS_WATCH_TABLE . " - WHERE user_id = $user_id"; - $db->sql_query($sql); - - $sql = "DELETE FROM " . ACL_USERS_TABLE . " - WHERE user_id = $user_id"; - $db->sql_query($sql); + foreach ($table_ary as $table) + { + $sql = "DELETE FROM $table + WHERE user_id = $user_id"; + $db->sql_query($sql); + } $db->sql_transaction('commit'); @@ -114,11 +106,11 @@ if (isset($_POST['username']) || isset($_REQUEST['u'])) - + password = $sqlpassword; $this->server = $sqlserver; - $this->db_connect_id =($this->persistency) ? @ibase_pconnect($this->server, $this->user, $this->password) : @ibase_connect($this->server, $this->user, $this->password); + $this->db_connect_id =($this->persistency) ? @ibase_pconnect($this->server, $this->user, $this->password, false, false, 3) : @ibase_connect($this->server, $this->user, $this->password, false, false, 3); return ($this->db_connect_id) ? $this->db_connect_id : $this->sql_error(''); } @@ -132,6 +132,12 @@ class sql_db $this->sql_error($query); } + if (!$this->transaction && (strpos($query, 'INSERT') === 0 || strpos($query, 'UPDATE') === 0)) + { + echo $query; + ibase_commit(); + } + if (!empty($_GET['explain'])) { $endtime = explode(' ', microtime()); @@ -415,7 +421,7 @@ class sql_db function sql_escape($msg) { - return (@ini_get('magic_quotes_sybase') || strtoupper(@ini_get('magic_quotes_sybase')) == 'ON') ? str_replace('\\\'', '\'', addslashes($msg)) : str_replace('\\\'', '\'\'', $msg); + return (@ini_get('magic_quotes_sybase') || strtolower(@ini_get('magic_quotes_sybase')) == 'on') ? str_replace('\\\'', '\'', addslashes($msg)) : str_replace('\'', '\'\'', stripslashes($msg)); } function sql_error($sql = '') diff --git a/phpBB/includes/db/mysql.php b/phpBB/includes/db/mysql.php index cd9a074f35..040f057f4e 100644 --- a/phpBB/includes/db/mysql.php +++ b/phpBB/includes/db/mysql.php @@ -134,7 +134,7 @@ class sql_db $curtime = $curtime[0] + $curtime[1] - $starttime; } - if (!($this->query_result = @mysql_query($query, $this->db_connect_id))) + if (($this->query_result = @mysql_query($query, $this->db_connect_id)) === false) { $this->sql_error($query); } diff --git a/phpBB/includes/db/postgres.php b/phpBB/includes/db/postgres.php index 8f916eae99..aa26e8ec8f 100644 --- a/phpBB/includes/db/postgres.php +++ b/phpBB/includes/db/postgres.php @@ -35,12 +35,9 @@ class sql_db var $rownum = array(); var $num_queries = 0; - // - // Constructor - // function sql_connect($sqlserver, $sqluser, $sqlpassword, $database, $persistency = true) { - $this->connect_string = ""; + $this->connect_string = ''; if ($sqluser) { @@ -363,7 +360,6 @@ class sql_db function sql_error($sql = '') { - if (!$this->return_on_error) { if ($this->transaction) diff --git a/phpBB/includes/functions.php b/phpBB/includes/functions.php index 57282981ba..40de5d6690 100644 --- a/phpBB/includes/functions.php +++ b/phpBB/includes/functions.php @@ -1,23 +1,15 @@ ' . $total_pages . '' : '' . $total_pages . '  ' . $user->lang['NEXT'] . ''; -// $page_string = '' . $user->lang['GOTO_PAGE'] . ' ' . $page_string; $page_string = $user->lang['GOTO_PAGE'] . ' ' . $page_string; +// $page_string = '' . $user->lang['GOTO_PAGE'] . ' ' . $page_string; // $template->assign_var('BASE_URL', $base_url); +// $template->assign_var('PER_PAGE', $per_page); return $page_string; } @@ -944,10 +937,6 @@ function login_box($s_action, $s_hidden_fields = '', $login_explain = '') $err = ($result === 0) ? $user->lang['ACTIVE_ERROR'] : $user->lang['LOGIN_ERROR']; } - $sql = 'DELETE FROM ' . CONFIRM_TABLE . ' - WHERE confirm_time < ' . (time() - $config['session_length']); -// $db->sql_query($sql); - $template->assign_vars(array( 'LOGIN_ERROR' => $err, 'LOGIN_EXPLAIN' => $login_explain, @@ -994,6 +983,9 @@ function login_forum_box(&$forum_data) if (!empty($_POST['password'])) { + // TODO + // Remove old valid sessions + if ($_POST['password'] == $forum_data['forum_password']) { $sql = 'INSERT INTO phpbb_forum_access (forum_id, user_id, session_id) diff --git a/phpBB/includes/functions_admin.php b/phpBB/includes/functions_admin.php index 503ede56ca..d4da25127b 100644 --- a/phpBB/includes/functions_admin.php +++ b/phpBB/includes/functions_admin.php @@ -1,23 +1,15 @@ destroy(MODERATOR_TABLE); } // Logging functions diff --git a/phpBB/includes/functions_jabber.php b/phpBB/includes/functions_jabber.php index 271bf98b7c..8059f55589 100644 --- a/phpBB/includes/functions_jabber.php +++ b/phpBB/includes/functions_jabber.php @@ -296,6 +296,22 @@ class Jabber } } + function SendPresence($type = NULL, $to = NULL, $status = NULL, $show = NULL, $priority = NULL) + { + $xml = '\n" : " />\n"; + + $xml .= ($status) ? " $status\n" : ''; + $xml .= ($show) ? " $show\n" : ''; + $xml .= ($priority) ? " $priority\n" : ''; + + $xml .= ($status || $show || $priority) ? "\n" : ''; + + return ($this->SendPacket($xml)) ? TRUE : FALSE; + } + function SendError($to, $id = NULL, $error_number, $error_message = NULL) { $xml = "setup(false); + page_header($user->lang['SMILIES'] . ' - ' . $topic_title); $template->set_filenames(array( @@ -555,7 +557,8 @@ function move_uploaded_attachment($upload_mode, $source_filename, &$filedata) } } } - return ''; + + return; } // Delete File @@ -568,14 +571,13 @@ function phpbb_unlink($filename, $mode = 'file', $use_ftp = false) if (file_exists($filename)) { - $filesys = eregi_replace('/','\\', $filename); + $filesys = str_replace('/','\\', $filename); $deleted = @system("del $filesys"); if (file_exists($filename)) { @chmod($filename, 0777); - $deleted = @unlink($filename); - if (!$deleted) + if (!($deleted = @unlink($filename))) { $deleted = @system("del $filename"); } @@ -590,8 +592,8 @@ function phpbb_unlink($filename, $mode = 'file', $use_ftp = false) function get_img_size_format($width, $height) { // Change these two values to define the Thumbnail Size - $max_width = 300; - $max_height = 85; + $max_width = 400; + $max_height = 200; if ($height > $max_height) { @@ -673,8 +675,7 @@ function create_thumbnail($source, $new_file, $mimetype) $new_size = get_img_size_format($size[0], $size[1]); - $tmp_path = ''; - $old_file = ''; + $tmp_path = $old_file = ''; $used_imagick = FALSE; @@ -682,7 +683,7 @@ function create_thumbnail($source, $new_file, $mimetype) { if (is_array($size) && count($size) > 0) { - @exec($config['img_imagick'] . 'convert' . ((defined('PHP_OS') && preg_match('#win#i', PHP_OS)) ? '.exe' : '') . ' -quality 75 -antialias -sample ' . $new_size[0] . 'x' . $new_size[1] . ' ' . $source . ' +profile "*" ' . $new_file); + passthru($config['img_imagick'] . 'convert' . ((defined('PHP_OS') && preg_match('#win#i', PHP_OS)) ? '.exe' : '') . ' -quality 85 -antialias -sample ' . $new_size[0] . 'x' . $new_size[1] . ' "' . str_replace('\\', '/', $source) . '" +profile "*" "' . str_replace('\\', '/', $new_file) . '"'); if (file_exists($new_file)) { $used_imagick = TRUE; diff --git a/phpBB/includes/functions_user.php b/phpBB/includes/functions_user.php index cf2614cce3..a352a3987c 100644 --- a/phpBB/includes/functions_user.php +++ b/phpBB/includes/functions_user.php @@ -569,16 +569,12 @@ function create_group($action, $group_id, &$type, &$name, &$desc, &$colour, &$ra return (sizeof($error)) ? $error : false; } - +// Call with: user_id_ary or username_ary set ... if both false entire group +// will be set default function set_default_group($id, $user_id_ary, $username_ary, &$name, &$colour, &$rank, $avatar, $avatar_type) { global $db; - if (!is_array($$which_ary)) - { - $$which_ary = array($$which_ary); - } - if (is_array($user_id_ary) || is_array($username_ary)) { $sql_where = ($user_id_ary) ? 'user_id IN (' . implode(', ', $user_id_ary) . ')' : 'username IN (' . implode(', ', $username_ary) . ')'; @@ -656,31 +652,41 @@ function set_default_group($id, $user_id_ary, $username_ary, &$name, &$colour, & return false; } -// TODO -// approve group +// Call with: user_id_ary or username_ary set ... if both false entire group +// will be approved function approve_user($group_id, $user_id_ary, $username_ary, &$group_name) { global $db; - $sql_where = ($user_id_ary) ? 'user_id IN (' . implode(', ', $user_id_ary) . ')' : 'username IN (' . implode(', ', $username_ary) . ')'; + if (is_array($user_id_ary) || is_array($username_ary)) + { + $sql_where = ($user_id_ary) ? 'user_id IN (' . implode(', ', $user_id_ary) . ')' : 'username IN (' . implode(', ', $username_ary) . ')'; - $sql = 'SELECT user_id, username - FROM ' . USERS_TABLE . " - WHERE $sql_where"; + $sql = 'SELECT user_id, username + FROM ' . USERS_TABLE . " + WHERE $sql_where"; + } + else + { + $sql = 'SELECT u.user_id, u.username + FROM ' . USERS_TABLE . ' u, ' . USER_GROUP_TABLE . " + WHERE ug.group_id = $group_id + AND u.user_id = ug.user_id"; + } $result = $db->sql_query($sql); $usernames = array(); while ($row = $db->sql_fetchrow($result)) { $username_ary[] = $row['username']; - $user_id_ary[] = $row['user_id']; + $user_id_ary[] = $row['user_id']; } $db->sql_freeresult($result); - $sql = 'UPDATE ' . USER_GROUP_TABLE . ' + $sql = 'UPDATE ' . USER_GROUP_TABLE . " SET user_pending = 0 - WHERE user_id IN (' . implode(', ', $user_id_ary) . ") - AND group_id = $group_id"; + WHERE group_id = $group_id + AND user_id IN (" . implode(', ', $user_id_ary) . ')'; $db->sql_query($sql); add_log('admin', 'LOG_GROUP_APPROVE', $group_name, implode(', ', $username_ary)); @@ -691,4 +697,65 @@ function approve_user($group_id, $user_id_ary, $username_ary, &$group_name) return false; } +// If user_id or username_ary are set users are deleted, else group is +// removed. Setting action to demote true will demote leaders to users +// (if appropriate), deleting leaders removes them from group as with +// normal users +function remove_from_group($type, $id, $user_id_ary, $username_ary, &$group_name) +{ + global $db; + + // Delete or demote individuals if data exists, else delete group + if (is_array($user_id_ary) || is_array($username_ary)) + { + $sql_where = ($user_id_ary) ? 'user_id IN (' . implode(', ', $user_id_ary) . ')' : 'username IN (' . implode(', ', $username_ary) . ')'; + + $sql = 'SELECT user_id, username + FROM ' . USERS_TABLE . " + WHERE $sql_where"; + $result = $db->sql_query($sql); + + $usernames = array(); + while ($row = $db->sql_fetchrow($result)) + { + $username_ary[] = $row['username']; + $user_id_ary[] = $row['user_id']; + } + $db->sql_freeresult($result); + + switch ($type) + { + case 'demote': + $sql = 'UPDATE ' . USER_GROUP_TABLE . " + SET group_leader = 0 + WHERE $sql_where"; + $db->sql_query($sql); + break; + + default: + $sql = 'SELECT g.group_id, g.group_name, u.user_id + FROM ' . USER_GROUP_TABLE . ' ug, ' . GROUPS_TABLE . ' g + WHERE u.user_id IN ' . implode(', ', $user_id_ary) . " + AND ug.group_id <> $group_id + AND g.group_type = " . GROUP_SPECIAL . ' + GROUP BY u.user_id'; + break; + } + } + else + { + } + + if (!function_exists('add_log')) + { + global $phpbb_root_path, $phpEx; + include($phpbb_root_path . 'includes/functions_admin.'.$phpEx); + } + + $log = ($action == 'demote') ? 'LOG_GROUP_DEMOTED' : (($action == 'deleteusers') ? 'LOG_GROUP_REMOVE' : 'LOG_GROUP_DELETED'); + add_log('admin', $log, $name, implode(', ', $username_ary)); + + return false; +} + ?> \ No newline at end of file diff --git a/phpBB/includes/session.php b/phpBB/includes/session.php index 96cc8ee974..9cb1200d76 100644 --- a/phpBB/includes/session.php +++ b/phpBB/includes/session.php @@ -71,9 +71,9 @@ class session } // Load limit check (if applicable) - if (doubleval($config['limit_load']) && @file_exists('/proc/loadavg')) + if (@file_exists('/proc/loadavg')) { - if ($load = @file('/proc/loadavg')) + if ($config['limit_load'] && $load = @file('/proc/loadavg')) { list($this->load) = explode(' ', $load[0]); @@ -398,6 +398,8 @@ class user extends session var $lang_path; var $img_lang; + var $keyoptions = array('viewimg', 'notify', 'notify_pm', 'popup_pm', 'viewflash', 'viewsmilies', 'viewsigs', 'viewavatars', 'viewcensors', 'attachsig', 'allowhtml', 'allowbbcode', 'allowsmile', 'allowavatar', 'allow_pm', 'allow_email', 'allow_viewonline', 'allow_viewemail', 'allow_massemail'); + function setup($lang_set = false, $style = false) { global $db, $template, $config, $auth, $phpEx, $phpbb_root_path; @@ -539,6 +541,45 @@ class user extends session } return $imgs[$img]; } + + // Start code for checking/setting option bit field for user table (if we go that way) + // TODO + // array_search begone + // set values, blah, everything else + function option_set($key, $value = false) + { + if (is_array($key)) + { + if (is_array($value)) + { + $return = array(); + foreach ($key as $k) + { + $return[$key] = ($user->data['user_options'] & pow(2, array_search($key, $this->keyoptions))) ? true : false; + } + return $return; + } + else + { + $return = array(); + foreach ($key as $k) + { + $return[$key] = ($user->data['user_options'] & pow(2, array_search($key, $this->keyoptions))) ? true : false; + } + return $return; + } + } + else + { + if ($value !== false) + { + } + else + { + return ($user->data['user_options'] & pow(2, array_search($key, $this->keyoptions))) ? true : false; + } + } + } } // Will be keeping my eye of 'other products' to ensure these things don't diff --git a/phpBB/includes/ucp/ucp_profile.php b/phpBB/includes/ucp/ucp_profile.php index deedf20f25..1c5d498d52 100644 --- a/phpBB/includes/ucp/ucp_profile.php +++ b/phpBB/includes/ucp/ucp_profile.php @@ -1,23 +1,18 @@
Main | Profile | Preferences | Avatar | PermissionsMain | Profile | Preferences | Avatar | Permissions