📄 admin.php
字号:
if ( $current_page > $total_pages || $current_page < 1 )
{
$current_page = 1;
}
if ( $users_found > $per_page )
{
$limit_start = $per_page * ( $current_page - 1 );
}
$page_links = array ( );
for ( $i = 1; $i <= $total_pages; $i++ )
{
$page_links[] = array
(
'page_num' => $i,
'page_url' => 'admin.php?action=users&sort_by='.$sort_by.'&sort_order='.$sort_order.'&page=' . $i . '&filters=' . rawurlencode ( $filters_str )
);
}
if ( $current_page < $total_pages )
{
$next_page_url = 'admin.php?action=users&sort_by='.$sort_by.'&sort_order='.$sort_order.'&page=' . ( $current_page + 1 ) . '&filters=' . rawurlencode ( $filters_str );
}
if ( $current_page > 1 )
{
$prev_page_url = 'admin.php?action=users&sort_by='.$sort_by.'&sort_order='.$sort_order.'&page=' . ( $current_page - 1 ) . '&filters=' . rawurlencode ( $filters_str );
}
$query = sprintf ( 'SELECT username,userid,bw_used,email FROM uploader_users %s ORDER BY %s %s LIMIT %d, %d;', $where, $sort_by, $sort_order, $limit_start, $per_page );
// Query users
if ( !$mysqlDB->query ( $query ) ) exit ( $mysqlDB->error ( __LINE__, __FILE__ ) );
if ( $mysqlDB->getRowCount() )
{
while ( false !== ( $user = $mysqlDB->getAssoc() ) )
{
$user['info_url'] = 'admin.php?action=user_info&userid=' . $user['userid'];
$user['edit_url'] = 'admin.php?action=edit_user&userid=' . $user['userid'];
$user['files_url'] = 'admin.php?action=user_files&userid=' . $user['userid'];
$user['email_url'] = 'admin.php?action=emailer&to=' . rawurlencode ( $user['email'] );
$users[] = $user;
}
$mysqlDB->free();
}
$sort_urls['sort_id'] = 'admin.php?action=users&sort_by=userid&sort_order=' . ( $sort_order == 'asc' ? 'desc' : 'asc' ) . '&page=' . ( 1 ) . '&filters=' . rawurlencode ( $filters_str );
$sort_urls['sort_name'] = 'admin.php?action=users&sort_by=username&sort_order=' . ( $sort_order == 'asc' ? 'desc' : 'asc' ) . '&page=' . ( 1 ) . '&filters=' . rawurlencode ( $filters_str );
$sort_urls['sort_bw'] = 'admin.php?action=users&sort_by=bw_used&sort_order=' . ( $sort_order == 'asc' ? 'desc' : 'asc' ) . '&page=' . ( 1 ) . '&filters=' . rawurlencode ( $filters_str );
// Show users
$tpl_users->set ( 'sort_by', $sort_by );
$tpl_users->set ( 'sort_urls', $sort_urls );
$tpl_users->set ( 'next_page_url', $next_page_url );
$tpl_users->set ( 'prev_page_url', $prev_page_url );
$tpl_users->set ( 'users_found', $users_found );
$tpl_users->set ( 'current_page', $current_page );
$tpl_users->set ( 'page_links', $page_links );
$tpl_users->setr ( 'filters', $filters );
$tpl_users->setr ( 'users', $users );
$tpl_users->set ( 'total_users', $total_users );
$tpl_admin->set ( 'content', $tpl_users, 1 );
}
break;
// user actions
case 'user_actions':
{
$selected_users = gpc ( 'users', 'P', array ( ) );
$target_users = gpc ( 'target_users', 'P', '0' );
$target_action = gpc ( 'target_action', 'P', '' );
$user_field_values = gpc ( 'user_field_values', 'P', array ( ) );
if ( $target_action == '' || ( $target_users == 'selected' && ( !is_array ( $selected_users ) || !count ( $selected_users ) ) ) || ( $target_action == 'email' && $target_users != 'selected' ) )
{
go_to();
exit;
}
$where = 'WHERE userid=-1;';
$set = '';
// make WHERE statement
switch ( $target_users )
{
case 'all': $where = ';'; break;
case 'normal': $where = 'WHERE level=0;'; break;
case 'mods_and_admin': $where = 'WHERE level=1 OR level=2;'; break;
case 'selected':
{
$tmp = array();
for ( $i = 0; $i < count ( $selected_users ); ++$i )
{
$tmp[] = 'userid=' . abs ( (int)$selected_users[$i] );
}
$where = count ( $tmp ) ? 'WHERE (' . implode ( ' OR ', $tmp ) . ');' : 'WHERE userid=-1;';
}
break;
}
// action
switch ( $target_action )
{
case 'approve':
{
$mysqlDB->query ( "UPDATE uploader_users SET is_approved=1 " . $where );
}
break;
case 'suspend':
{
$mysqlDB->query ( "UPDATE uploader_users SET is_suspended=1 " . $where );
}
break;
case 'unsuspend':
{
$mysqlDB->query ( "UPDATE uploader_users SET is_suspended=0 " . $where );
}
break;
case 'resetbw':
{
$mysqlDB->query ( "UPDATE uploader_users SET bw_used=0, bw_reset_last=" . time() . ' ' . $where );
}
break;
case 'delete':
{
for ( $i = 0; $i < count ( $selected_users ); ++$i )
{
delete_dir ( $UPL['SETTINGS']['userfiles_dir'] . $selected_users[$i] );
}
$mysqlDB->query ( "DELETE FROM uploader_users " . $where );
}
break;
case 'email':
{
$mysqlDB->query ( "SELECT email FROM uploader_users " . $where );
$emails = array ( );
if ( $mysqlDB->getRowCount() )
{
while ( false !== ( $email = $mysqlDB->getAssoc() ) )
{
$emails[] = $email['email'];
}
$mysqlDB->free();
}
exit ( header ( 'Location: admin.php?action=emailer&to=' . $UPL['SETTINGS']['email'] . '&bcc=' . rawurlencode ( implode ( ', ', $emails ) ) ) );
}
break;
case 'prune_nonimages':
{
while ( list ( , $userid ) = each ( $selected_users ) )
{
$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 );
}
}
break;
case 'setfield':
{
$insert = array ( );
while ( list ( $field, $value ) = each ( $user_field_values ) )
{
if ( $value == '' ) continue;
switch ( $field )
{
case 'fl_max_filesize': $insert['fl_max_filesize'] = (int)$value; break;
case 'fl_max_storage': $insert['fl_max_storage'] = (int)$value; break;
case 'bw_max': $insert['bw_max'] = (int)$value; break;
case 'fl_max_folders': $insert['fl_max_folders'] = (int)$value; break;
case 'bw_reset_period': $insert['bw_reset_period'] = (int)$value; break;
case 'bw_reset_auto': $insert['bw_reset_auto'] = (int)$value; break;
case 'fl_images_only': $insert['fl_images_only'] = (int)$value; break;
case 'fl_watermark': $insert['fl_watermark'] = (int)$value; break;
case 'fl_allow_folders': $insert['fl_allow_folders'] = (int)$value; break;
case 'fl_allowed_types': $insert['fl_allowed_types'] = ( $value == 'ANY' ? '' : trim ( $value ) ); break;
}
}
if ( count ( $insert ) )
{
$query = "UPDATE uploader_users SET " . $mysqlDB->buildInsertStatement ( $insert ) . " " . $where;
if ( !$mysqlDB->query ( $query ) ) exit ( $mysqlDB->error ( ) );
}
}
break;
}
go_to();
}
break;
case 'quick_edit_user_info':
{
if ( $demo ) exit ( 'Demo only!' );
$userid = abs ( (int)gpc ( 'userid', 'G', 0 ) );
switch ( $task )
{
case 'bandwidth_counter':
{
$mysqlDB->query ( "UPDATE uploader_users SET bw_used=0, bw_reset_last=" . time() . " WHERE userid={$userid};" );
}
break;
}
go_to();
}
break;
case 'var_dumps':
{
print_r ( $_SERVER );
}
break;
case 'stats':
{
$userfiles_stats = dir_stats ( $UPL['SETTINGS']['userfiles_dir'] );
$mysqlDB->query ( "SELECT COUNT(userid) AS users_count, MAX(userid) AS newest_userid, SUM(bw_used) AS total_bw_used FROM uploader_users;" );
if ( $mysqlDB->getRowCount ( ) )
{
$result = $mysqlDB->getAssoc();
$mysqlDB->free();
extract ( $result, EXTR_OVERWRITE );
}
$mysqlDB->query ( "SELECT username AS newest_username FROM uploader_users WHERE userid={$newest_userid};" );
if ( $mysqlDB->getRowCount() )
{
$result = $mysqlDB->getAssoc();
$mysqlDB->free();
extract ( $result, EXTR_OVERWRITE );
}
// bw
if ( !$mysqlDB->query ( "SELECT username AS highest_bw_username, userid AS highest_bw_userid, bw_used AS highest_bw_value FROM uploader_users ORDER BY bw_used DESC LIMIT 1;" ) ) exit ( $mysqlDB->error ( ) );
if ( $mysqlDB->getRowCount() )
{
$result = $mysqlDB->getAssoc();
$mysqlDB->free();
extract ( $result, EXTR_OVERWRITE );
}
$dirstats = dir_stats ( $UPL['SETTINGS']['userfiles_dir'] );
$dirstats['file_size'] = get_size ( $dirstats['file_size'], 'B' );
$stats = array
(
'userfiles_stats' => $dirstats,
'users_count' => $users_count,
'newest_user_name' => $newest_username,
'newest_user_url' => 'admin.php?action=user_info&userid=' . $newest_userid,
'total_bandwidth_used' => get_size ( $total_bw_used, 'KB' ),
'highest_bw_value' => get_size ( $highest_bw_value, 'KB' ),
'highest_bw_username' => $highest_bw_username,
'highest_bw_userinfo' => 'admin.php?action=user_info&userid=' . $highest_bw_userid
);
$tpl_stats = new Template ( TPL_DIR . '/tpl_stats.php' );
$tpl_stats->setr ( 'stats', $stats );
$tpl_admin->setr ( 'content', $tpl_stats );
$tpl_admin->display ( );
}
break;
case 'optimize':
{
if ( !$mysqlDB->query ( "OPTIMIZE TABLE uploader_users" ) ) exit ( $mysqlDB->error ( ) );
if ( !$mysqlDB->query ( "OPTIMIZE TABLE uploader_pfiles" ) ) exit ( $mysqlDB->error ( ) );
if ( !$mysqlDB->query ( "OPTIMIZE TABLE uploader_puploads" ) ) exit ( $mysqlDB->error ( ) );
if ( !$mysqlDB->query ( "OPTIMIZE TABLE uploader_messages" ) ) exit ( $mysqlDB->error ( ) );
$tpl_message->set ( 'message', 'Optimization completed.' );
$tpl_message->set ( 'back_url', 'admin.php?action=tools' );
$tpl_admin->set ( 'content', $tpl_message, 1);
}
break;
case 'tools':
{
$tpl_tools = new Template ( TPL_DIR . '/tpl_tools.php' );
$tpl_tools->set ( 'action', $action );
$tpl_admin->setr ( 'content', $tpl_tools );
$tpl_admin->display ( );
}
break;
case 'emailer':
{
$tpl_tools = new Template ( TPL_DIR . '/tpl_tools.php' );
$tpl_tools->set ( 'action', $action );
$to = gpc ( 'to', 'G', $UPL['SETTINGS']['email'] );
$bcc = gpc ( 'bcc', 'G', '' );
$email = gpc ( 'email', 'P', array ( ) );
if ( $task == 'send' && count ( $email ) )
{
$header = 'From: Uploader Admin <' . $UPL['SETTINGS']['email'] . '>' . "\n";
// mass email?
if ( isset ( $email['mass_email'] ) )
{
$mysqlDB->query ( "SELECT email FROM uploader_users;" );
$bcc_list = array ( );
if ( $mysqlDB->getRowCount() )
{
while ( false !== ( $result = $mysqlDB->getAssoc() ) )
{
$bcc_list[] = $result['email'];
}
$mysqlDB->free();
}
$chunks = array_chunk ( $bcc_list, 100 );
for ( $i = 0; $i < count ( $chunks ); $i++ )
{
$header = 'From: Uploader Admin <' . $UPL['SETTINGS']['email'] . '>' . "\n";
$header .= 'Bcc: ' . implode ( ', ', $chunks[$i] ) . "\n";
// send it
send_email ( $email['send_to'], $email['subject'], $email['message'], $header );
}
}
else
{
// send it
$header = 'From: Uploader Admin <' . $UPL['SETTINGS']['email'] . '>' . "\n";
if ( isset ( $email['bcc'] ) )
{
$header .= 'Bcc: ' . $email['bcc'] . "\n";
}
send_email ( $email['send_to'], $email['subject'], $email['message'], $header );
}
$tpl_message->set ( 'message', 'Your message has been sent.' );
$tpl_message->set ( 'back_url', 'admin.php?action=tools' );
$tpl_admin->setr ( 'content', $tpl_message, 1 );
}
else
{
// show form
$tpl_tools->set ( 'bcc', $bcc );
$tpl_tools->set ( 'receivers', $to );
$tpl_admin->setr ( 'content', $tpl_tools, 1 );
}
}
break;
default:
{
$tpl_admin->set ( 'content', 'Welcome to the admin section.' );
$tpl_admin->display ( );
}
}
?>
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -