📄 admin.php
字号:
$userid = abs ( intval ( gpc ( 'userid', 'G', 0 ) ) );
// load templates
$tpl_userfiles = new Template ( TPL_DIR . 'tpl_user_admin.php' );
$tpl_userfiles->set ( 'action', $action );
// load user
$mysqlDB->query ( "SELECT * FROM uploader_users WHERE userid={$userid} LIMIT 1;" );
if ( !$mysqlDB->getRowCount() )
{
exit ( 'Unable to open info file for user ' . $userid );
}
$userinfo = $mysqlDB->getAssoc();
$mysqlDB->free();
$userinfo['edit_url'] = 'admin.php?action=edit_user&userid=' . $userid;
$userinfo['info_url'] = 'admin.php?action=user_info&userid=' . $userid;
$userinfo['prune_url'] = 'admin.php?action=prune_non_images&userid=' . $userid;
$tpl_userfiles->set ( 'userinfo', $userinfo );
// get user files
$user_root = $UPL['SETTINGS']['userfiles_dir'] . $userid . '/';
$user_url = $UPL['SETTINGS']['userfiles_url'] . $userid . '/';
$user_contents = get_contents ( $user_root );
$user_folders =& $user_contents['dirs'];
$user_files =& $user_contents['files'][$folder==''?'<MAIN_FOLDER>':$folder];
$user_files_count = count ( $user_files );
for ( $i = 0; $i < $user_files_count; $i++ )
{
$user_files[$i]['perm'] = substr ( sprintf ( '%o', @fileperms ( $user_root . $folder . '/' . $user_fildes[$i]['name'] ) ), -4);
$user_files[$i]['size'] = get_size ( $user_files[$i]['size'] );
$user_files[$i]['file_url'] = $user_url . clean_url ( $folder . '/' . rawurlencode ( $user_files[$i]['name'] ) );
$user_files[$i]['date'] = filemtime ( $user_root . $folder . '/' . $user_files[$i]['name'] );
$user_files[$i]['date'] = date ( $UPL['CONFIGS']['TIME_FORMAT'], $user_files[$i]['date'] );
$user_files[$i]['form_name'] = rawurlencode ( $user_files[$i]['name'] );
}
// folders
$user_folders_count = count ( $user_folders );
$rebuild = false;
for ( $i = 0; $i < $user_folders_count; $i++ )
{
if ( $user_folders[$i]['name'] == 'thumbs' )
{
unset ( $user_folders[$i] );
$rebuild = true;
continue;
}
$user_folders[$i]['folder_url'] = 'admin.php?action=user_files&userid=' . $userid . '&folder=' . path_encode ( $user_folders[$i]['path'] );
$user_folders[$i]['size'] = get_size ( $user_folders[$i]['size'] );
$user_folders[$i]['path'] = path_encode ( $user_folders[$i]['path'] );
}
if ( $rebuild )
{
$user_folders = array_values ( $user_folders );
}
$tpl_userfiles->set ( 'current_folder_path', path_encode ( $folder ) );
$tpl_userfiles->set ( 'current_folder_name', basename ( $folder ) );
$tpl_userfiles->setr ( 'user_files', $user_files );
$tpl_userfiles->setr ( 'user_folders', $user_folders );
$tpl_admin->setr ( 'content', $tpl_userfiles, 1 );
}
break;
// prune non images
case 'prune_non_images':
{
$userid = abs ( intval ( gpc ( 'userid', 'G', 0 ) ) );
if ( $userid )
{
$user_root = $UPL['SETTINGS']['userfiles_dir'] . $userid . '/';
$user_files = get_contents ( $user_root );
$ref = &$user_files['files'];
while ( list ( $dir, $files ) = each ( $ref ) )
{
for ( $i = 0; $i < count ( $files ); $i++ )
{
$path = $user_root . ( $dir == '<MAIN_FOLDER>' ? '' : $dir ) . '/' . $files[$i]['name'];
if ( !is_image ( $path ) )
{
unlink ( $path );
}
}
}
clear_contents_cache ( $user_root );
}
header ( 'Location: ' . $_SERVER['HTTP_REFERER'] );
}
break;
// actions for user files
case 'user_files_actions':
{
$files = gpc ( 'files', 'P', array ( ) );
$userid = gpc ( 'userid', 'P' );
$folder = path_decode ( gpc ( 'folder', 'P' ) );
$task_value = gpc ( 'task_value', 'P' );
$move_to = path_decode ( gpc ( 'move_to', 'P' ) );
$user_root = $UPL['SETTINGS']['userfiles_dir'] . $userid . '/';
$user_url = $UPL['SETTINGS']['userfiles_url'] . $userid . '/';
if ( is_array ( $files ) )
{
$files_count = count ( $files );
for ( $i = 0; $i < $files_count; $i++ )
{
$files[$i] = rawurldecode ( $files[$i] );
$filepath = $user_root . $folder . '/' . $files[$i];
$thumbpath = $user_root . $folder . '/thumbs/' . $files[$i];
if ( $files[$i] == '' ) continue;
switch ( $task )
{
case 'chmod':
{
if ( $task_value != '' )
{
if ( !change_mode ( $filepath, $task_value ) )
{
exit ( 'Could not chmod ' . $filepath );
}
}
}
break;
case 'rename':
{
if ( $task_value != '' && !preg_match ( $UPL['CONFIGS']['REGEX_INVALID_CHARS'], $task_value ) && !is_file ( $user_root . $folder . '/' . $task_value ) )
{
if ( !rename ( $filepath, $user_root . $folder . '/' . $task_value ) )
{
exit ( 'Could not rename ' . $user_root . $folder . '/' . $files[$i] );
}
}
}
break;
case 'delete':
{
if ( is_file ( $filepath ) )
{
if ( !unlink ( $filepath ) )
{
exit ( 'Could not delete ' . $filepath );
}
}
// delete thumbnail too
if ( is_file ( $thumbpath ) )
{
if ( !unlink ( $thumbpath ) )
{
exit ( 'Could not delete ' . $thumbpath );
}
}
}
break;
case 'move':
{
if ( $folder != $move_to && !file_exists ( $user_root . $move_to . '/' . $files[$i] ) )
{
if ( !rename ( $filepath, $user_root . $move_to . '/' . $files[$i] ) )
{
exit ( 'Could not move ' . $filepath . ' to ' . ( $move_to == '' ? 'Main Folder' : $move_to ) );
}
// move thumbnail too
if ( is_file ( $thumbpath ) && is_dir ( $user_root . $move_to . '/thumbs/' ) )
{
rename ( $thumbpath, $user_root . $move_to . '/thumbs/' . $files[$i] );
}
}
}
break;
}
}
clear_contents_cache ( $user_root );
}
go_to ( );
}
break;
// action for user folders
case 'user_folders_actions':
{
$userid = gpc ( 'userid', 'P' );
$folder = path_decode ( gpc ( 'folder', 'P' ) );
$task_value = gpc ( 'task_value', 'P' );
$selected_folder = path_decode ( gpc ( 'selected_folder', 'P' ) );
$user_root = $UPL['SETTINGS']['userfiles_dir'] . $userid . '/';
$user_url = $UPL['SETTINGS']['userfiles_url'] . $userid . '/';
switch ( $task )
{
case 'delete':
{
delete_dir ( $user_root . $selected_folder );
}
break;
case 'rename':
{
if ( $task_value != '' )
{
rename ( $user_root . $selected_folder, $user_root . dir_name ( $selected_folder ) . '/' . $task_value );
}
}
break;
}
clear_contents_cache ( $user_root );
go_to ( 'admin.php?action=user_files&userid=' . $userid );
}
break;
// edit user info
case 'edit_user':
{
if (!$demo && $UPL['USER']['level'] != LEVEL_ADMIN ) display_message1 ( );
$tpl_user = new Template ( TPL_DIR . 'tpl_user_admin.php' );
$tpl_user->set ( 'action', $action );
$tpl_user->set ( 'saved', isset ( $_GET['saved'] ) );
$userid = abs ( (int)gpc ( 'userid', 'GP', 0 ) );
$mysqlDB->query ( "SELECT * FROM uploader_users WHERE userid={$userid} LIMIT 1;" );
if ( $mysqlDB->getRowCount() )
{
if ( $task == 'save' )
{
if ( $demo ) exit ( 'Demo only!' );
$userinfo = isset ( $_POST['userinfo'] ) ? $_POST['userinfo'] : array ( );
#print_r ( $userinfo );
$new_settings = array
(
'email' => trim ( $userinfo['email'] ),
'level' => (int)$userinfo['level'],
'is_activated' => (int)@$userinfo['is_activated'],
'is_suspended' => (int)@$userinfo['is_suspended'],
'xtr_admin_comments' => substr ( $userinfo['comments'], 0, 255 ),
'fl_max_storage' => (float)$userinfo['fl_max_storage'],
'fl_max_filesize' => (float)$userinfo['fl_max_filesize'],
'fl_max_folders' => (int)$userinfo['fl_max_folders'],
'fl_images_only' => (int)@$userinfo['fl_images_only'],
'fl_rename_permission' => (int)@$userinfo['fl_rename_permission'],
'fl_watermark' => (int)@$userinfo['fl_watermark'],
'fl_allow_folders' => (int)@$userinfo['fl_allow_folders'],
'fl_allowed_types' => strtolower ( trim ( $userinfo['fl_allowed_types'] ) ),
'bw_max' => (float)$userinfo['bw_max'],
'bw_reset_period' => (float)$userinfo['bw_reset_period'],
'bw_reset_auto' => (int)$userinfo['bw_reset_auto'],
'bw_xfer_rate' => (int)$userinfo['bw_xfer_rate'],
);
if ( isset ( $userinfo['new_password'] ) && $userinfo['new_password'] != '' )
{
$new_settings['password'] = md5 ( $userinfo['new_password'] );
}
// save user setting
$r = $mysqlDB->query ( "UPDATE uploader_users SET " . $mysqlDB->buildInsertStatement ( $new_settings ) . " WHERE userid={$userid}; " );
if ( !$r ) exit ( $mysqlDB->error ( ) );
header ( 'Location: admin.php?action=edit_user&userid=' . $userid . '&saved=1' );
}
else
{
$userinfo = $mysqlDB->getAssoc();
$mysqlDB->free();
$userinfo['comments'] = trim ( $userinfo['xtr_admin_comments'] );
// urls
$userinfo['info_url'] = 'admin.php?action=user_info&userid=' . $userid;
$userinfo['manage_files_url'] = 'admin.php?action=user_files&userid=' . $userid;
$tpl_user->setr ( 'userinfo', $userinfo );
$tpl_admin->setr ( 'content', $tpl_user );
$tpl_admin->set ( 'page_title', 'Edit account' );
$tpl_admin->display ( );
}
}
else
{
$tpl_message->set ( 'message', 'Unable to load user data, perhaps user does not exists.' );
$tpl_message->set ( 'back_url', 'admin.php?action=users' );
$tpl_admin->setr ( 'content', $tpl_message );
$tpl_admin->display ( );
}
}
break;
// show all users
case 'users':
{
if ( $task == 'setfilter' )
{
$filters = gpc ( 'filters', 'P', array ( ) );
$filters_str = serialize ( $filters );
header ( 'Location: admin.php?action=users&filters=' . $filters_str );
exit;
}
$current_page = gpc ( 'page', 'G', 1 );
$tpl_users = new Template ( TPL_DIR . 'tpl_users.php' );
$sort_by = gpc ( 'sort_by', 'G', 'userid' );
$sort_order = gpc ( 'sort_order', 'G', 'asc' );
$per_page = $UPL['CONFIGS']['USERLIST_PERPAGE'];
$users = array();
$total_users = 0;
$mysqlDB->query ( "SELECT COUNT(userid) AS total_users FROM uploader_users;" );
if ( $mysqlDB->getRowCount() )
{
$result = $mysqlDB->getAssoc();
$total_users = $result['total_users'];
if ( $total_users > 10000 ) $per_page = 300;
elseif ( $total_users > 5000 ) $per_page = 200;
elseif ( $total_users > 2000 ) $per_page = 100;
$mysqlDB->free();
}
$filters_str = gpc ( 'filters', 'G', '' );
$filters = array ( );
if ( $filters_str != '' ) $filters = unserialize ( $filters_str );
// Build query
$where = '';
if ( count ( $filters ) )
{
$cond = array ( );
reset ( $filters );
while ( list ( $field, $value ) = each ( $filters ) )
{
if ( $value == '' || $value == 'null' ) continue;
switch ( $field )
{
case 'level': $cond[] = 'level=' . $value; break;
case 'is_activated': $cond[] = 'is_activated=' . $value; break;
case 'is_approved': $cond[] = 'is_approved=' . $value; break;
case 'is_suspended': $cond[] = 'is_suspended=' . $value; break;
case 'username': $cond[] = "username LIKE '%". $value . "%'"; break;
case 'email': $cond[] = "email LIKE '%". $value . "%'"; break;
case 'admin_comments': $cond[] = "xtr_admin_comments LIKE '%" . $value . "%'"; break;
case 'reg_time': $cond[] = 'reg_date<='.(time()-($value*86400)); break;
case 'last_login': $cond[] = 'last_login_time'.$filters['last_login_comp'].(time()-($value*86400));break;
case 'bw_used': $cond[] = 'bw_max>0&&((bw_used/1024)/bw_max)'.$filters['bw_used_comp'].($value/100); break;
}
}
$where = count ( $cond ) ? 'WHERE ' . implode ( ' AND ', $cond ) : '';
}
$users_found = $total_users;
$query = sprintf ( 'SELECT COUNT(userid) AS count FROM uploader_users %s;', $where );
if ( !$mysqlDB->query ( $query ) ) exit ( $mysqlDB->error ( __LINE__, __FILE__ ) );
if ( $mysqlDB->getRowCount ( ) )
{
$result = $mysqlDB->getAssoc ( );
$users_found = $result['count'];
$mysqlDB->free();
}
$limit_start = 0;
$total_pages = ceil ( $users_found / $per_page );
$next_page_url = '';
$prev_page_url = '';
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -