⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 admin.php

📁 一款文件上传程序
💻 PHP
📖 第 1 页 / 共 4 页
字号:
		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&amp;sort_by='.$sort_by.'&amp;sort_order='.$sort_order.'&amp;page=' . $i . '&amp;filters=' . rawurlencode ( $filters_str )
			);
		}
		if ( $current_page < $total_pages )
		{
			$next_page_url = 'admin.php?action=users&amp;sort_by='.$sort_by.'&amp;sort_order='.$sort_order.'&amp;page=' . ( $current_page + 1 ) . '&amp;filters=' . rawurlencode ( $filters_str );
		}
		if ( $current_page > 1 )
		{
			$prev_page_url = 'admin.php?action=users&amp;sort_by='.$sort_by.'&amp;sort_order='.$sort_order.'&amp;page=' . ( $current_page - 1 ) . '&amp;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&amp;userid=' . $user['userid'];
				$user['edit_url'] = 'admin.php?action=edit_user&amp;userid=' . $user['userid'];
				$user['files_url'] = 'admin.php?action=user_files&amp;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&amp;sort_by=userid&amp;sort_order=' . ( $sort_order == 'asc' ? 'desc' : 'asc' ) . '&amp;page=' . ( 1 ) . '&amp;filters=' . rawurlencode ( $filters_str );
		$sort_urls['sort_name'] = 'admin.php?action=users&amp;sort_by=username&amp;sort_order=' . ( $sort_order == 'asc' ? 'desc' : 'asc' ) . '&amp;page=' . ( 1 ) . '&amp;filters=' . rawurlencode ( $filters_str );
		$sort_urls['sort_bw'] = 'admin.php?action=users&amp;sort_by=bw_used&amp;sort_order=' . ( $sort_order == 'asc' ? 'desc' : 'asc' ) . '&amp;page=' . ( 1 ) . '&amp;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&amp;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&amp;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 + -