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

📄 admin.php

📁 一款文件上传程序
💻 PHP
📖 第 1 页 / 共 4 页
字号:
				$psettings2 = array
				(
					'public_files_dir'	=> trim ( $psettings['public_files_dir'] ),
					'public_files_url'	=> trim ( $psettings['public_files_url'] ),
					'enabled'			=> isset ( $psettings['enabled'] ) ? (int)$psettings['enabled'] : 0,
					'allowed_filetypes'	=> trim ( $psettings['allowed_filetypes'], ', ' ), // blank means no files allowed. For any type, enter ANY
					'max_file_size'		=> (float)$psettings['max_file_size'], // in KB
					'images_only'		=> isset ( $psettings['images_only'] ) ? (int)$psettings['images_only'] : 0, // overrides allowed_filetypes (jpeg, png, and gif only)
					'max_views'			=> (int)$psettings['max_views'], // 0 for unlimited
					'max_bandwidth'		=> (float)$psettings['max_bandwidth'],	// in MB, 0 for unlimited
					'uploader_view'		=> (int)@$psettings['uploader_view'],

					'allow_thumbnails'	=> isset ( $psettings['allow_thumbnails'] ) ? (int)$psettings['allow_thumbnails'] : 0,
					'thumb_small'		=> trim($psettings['thumb_small']),
					'thumb_large'		=> trim($psettings['thumb_large']),
					'thumb_border'		=> isset ( $psettings['thumb_border'] ) ? (int)$psettings['thumb_border'] : 0,
				);

				$db = new DB;
				if ( !$db->open ( PUBLIC_SETTINGS ) ) exit ( 'Could not open public settings file ' . PUBLIC_SETTINGS );
				$db->set ( $psettings2, 1 );
				$db->save();
			}
			go_to('admin.php?action=public&saved=1');
		}
		else
		{
			$db = new DB;
			if ( !$db->open ( PUBLIC_SETTINGS ) ) exit ( 'Could not open public settings file ' . PUBLIC_SETTINGS );
			$psettings = $db->all();

			$tpl_settings = new Template ( TPL_DIR . 'tpl_settings.php' );
			$tpl_settings->set ( 'action', 'public' );
			$tpl_settings->set ( 'saved', gpc ( 'saved', 'G', 0 ) );
			$tpl_settings->set ( 'psettings', $psettings );
			$tpl_admin->set ( 'content', $tpl_settings,1 );
		}
	}
	break;

	case 'cleanpuploads':
	{
		$r = $mysqlDB->query ( "SELECT uploader_puploads.upload_id, COUNT(file_id) AS files FROM uploader_puploads LEFT JOIN uploader_pfiles USING (upload_id) GROUP BY uploader_puploads.upload_id;" );
		$remove_ids = array();
		while ( false !== ( $upload = $mysqlDB->getAssoc() ) )
		{
			if ( $upload['files'] == 0 )
			{
				$remove_ids[] = 'upload_id=' . $upload['upload_id'];
			}
		}
		$mysqlDB->free();
		$mysqlDB->query ( "DELETE FROM uploader_puploads WHERE (" . implode ( ' OR ', $remove_ids ) . ");" );

		$tpl_message->set ( 'message', ( count ( $remove_ids ) . ' uploads removed.' ) );
		$tpl_message->set ( 'back_url', 'admin.php?action=pupload' );
		$tpl_admin->set ( 'content', $tpl_message, 1 );
	}
	break;

	case 'pupload':
	{
		$tpl_upload = new Template ( TPL_DIR . 'tpl_pupload_admin.php' );
		$current_page = gpc ( 'page', 'G', 1 );
		$per_page = 25;
		$files  = array ( );
		$uploads = array ( );

		$db = new DB;
		if ( !$db->open ( PUBLIC_SETTINGS ) ) exit ( 'Unable to load public settings ' . PUBLIC_SETTINGS );
		$UPL['PUBLIC_SETTINGS'] = $db->all();
		$db->close();

		$public_url = $UPL['PUBLIC_SETTINGS']['public_files_url'];

		$mysqlDB->query ( "SELECT COUNT(file_id) AS total_files FROM uploader_pfiles;" );
		$result = $mysqlDB->getAssoc();
		$total_files = $result['total_files'];
		$mysqlDB->free();

		$total_pages = ceil ( $total_files / $per_page );
		if ( $current_page < 1 ) $current_page = 1;
		elseif ( $current_page > $total_pages ) $current_page = $total_pages;
		$limit = ( $current_page - 1 ) * $per_page;
		$mysqlDB->query ( "SELECT * FROM uploader_pfiles ORDER BY file_id DESC LIMIT $limit, $per_page" );

		if ( $mysqlDB->getRowCount() )
		{
			while ( false !== ( $f = $mysqlDB->getAssoc ( ) ) )
			{
				$f['file_url'] = MOD_REWRITE ? ( $public_url . $f['file_id'] . '/' . $f['file_name'] ) : $public_url . $f['file_rname'];
				$files [] = $f;
			}
			$mysqlDB->free();
		}

		$tplvars = array
		(
			'files' 	=> $files,
			'uploads'	=> $uploads,
			'total_files' => $total_files,
			'total_pages' => $total_pages,
			'current_page' => $current_page,
			'next_page_url' => 'admin.php?action=pupload&amp;page=' . ( $current_page + 1 ),
			'prev_page_url' => 'admin.php?action=pupload&amp;page=' . ( $current_page - 1 ),
		);

		$tpl_upload->set ( $tplvars );
		$tpl_admin->set ( 'content', $tpl_upload, 1 );

	}
	break;

	case 'pupload_action':
	{
		$db = new DB;
		if ( !$db->open ( PUBLIC_SETTINGS ) ) exit ( 'Unable to load public settings ' . PUBLIC_SETTINGS );
		$UPL['PUBLIC_SETTINGS'] = $db->all();
		$db->close();
		$public_dir = $UPL['PUBLIC_SETTINGS']['public_files_dir'];

		$files = gpc ( 'files', 'P', array ( ) );
		$ids = array ( );
		for ( $i =0; $i < count ( $files ); ++$i )
		{
			$ids[] = 'file_id=' . $files[$i];
		}

		if ( $task == 'reset_views' )
		{
			$mysqlDB->query ( "UPDATE uploader_pfiles SET file_views=0 WHERE (" . implode ( ' OR ', $ids ) . ");" );
		}
		elseif ( $task == 'delete' )
		{
			$mysqlDB->query ( "SELECT * FROM uploader_pfiles WHERE (" . implode ( ' OR ', $ids ) . ");" );
			if ( $mysqlDB->getRowCount() )
			{
				while ( false !== ( $file = $mysqlDB->getAssoc ( ) ) )
				{
					unlink ( $public_dir . $file['file_rname'] );
					if ( $file['file_hasthumb'] )
					{
						unlink ( $public_dir . 'thumb_' . $file['file_rname'] );
					}
				}
			}
			$mysqlDB->free();
			$mysqlDB->query ( "DELETE FROM uploader_pfiles WHERE (" . implode ( ' OR ', $ids ) . ");" );
		}
		go_to();
	}
	break;

	// email templates
	case 'emails':
	{
		$emails_db = new DB;
		if ( !$emails_db->open ( EMAIL_TEMPLATES ) )
		{
			exit ( 'Unable to open the email templates ' . EMAIL_TEMPLATES );
		}
		if ( $task == 'save' )
		{
			$emails = gpc ( 'emails', 'P', array ( ) );
			if ( count ( $emails )  )
			{
				while ( list ( $k, $v ) = each ( $emails ) )
				{
					$emails_db->set ( $k, $v );
				}
				$emails_db->save ();
			}
			go_to ( );
		}
		else
		{
			$tpl_settings = new Template ( TPL_DIR . 'tpl_settings.php' );
			$emails = $emails_db->all ();
			$tpl_settings->set ( 'emails', $emails );
			$tpl_settings->set ( 'action', $action );
			$tpl_admin->set ( 'page_title', 'Email Templates' );
			$tpl_admin->setr ( 'content', $tpl_settings );
			$tpl_admin->display ( );
		}
	}
	break;

	// uploader log
	case 'logs':
	{
		$tpl_logs = new Template ( TPL_DIR . 'tpl_logs.php' );
		$log_files = array ( );
		$log_total_size = 0;

		if ( false !== ( $h = opendir ( LOGS_DIR ) ) )
		{
			while ( false !== ( $f = readdir ( $h ) ) )
			{
				if ( get_extension ( $f ) == 'log' )
				{
					$log_size = filesize ( LOGS_DIR . $f );
					$log_total_size += $log_size;
					$log_files [] = array
					(
						'name' 		=> $f,
						'size'		=> get_size ( $log_size, 'B', 0 ),
						'view_url' 	=> 'admin.php?action=logs&amp;log_file=' . $f,
						'delete_url' 	=> 'admin.php?action=logs&amp;task=del&amp;log_file=' . $f,
					);
				}
			}
			reset ( $log_files );
		}
		else exit ( sprintf ( 'Unable to open the logs directory "%s"', LOGS_DIR ) ); closedir ( $h );
		$log_files = multi_sort ( $log_files, 'name' );

		switch ( $task )
		{
			case 'del':
			{
				if ( $demo ) exit ( 'Demo only!' );
				$log_file = gpc ( 'log_file', 'G', '' );

				if ( is_file ( LOGS_DIR . $log_file ) && unlink ( LOGS_DIR . $log_file ) )
				{
					header ( 'Location: admin.php?action=logs' );
				}
				exit ( 'Could not delete ' . $log_file );
			}
			break;

			case 'delall':
			{
				if ( $demo ) exit ( 'Demo only!' );
				for ( $i = 0; $i < count ( $log_files ); $i++ )
				{
					if ( is_file ( LOGS_DIR . $log_files[$i]['name'] ) )
					{
						if ( !unlink ( LOGS_DIR . $log_files[$i]['name'] ) )
						{
							exit ( 'Could not delete log file.' );
						}
					}
				}
				header ( 'Location: admin.php?action=logs' );
			}

			case 'clear':
			{
				if ( $demo ) exit ( 'Demo only!' );
				$log_file = gpc ( 'log_file', 'G', '' );

				if ( is_file ( LOGS_DIR . $log_file ) )
				{
					fclose ( fopen ( LOGS_DIR . $log_file, 'w' ) );

					header ( 'Location: admin.php?action=logs' );
				}
				exit ( 'Could not delete ' . $log_file );
			}
			break;

			case 'archive':
			{
				$archive_file = 'archive_' . date ( 'M_d_Y' ) . '.log';
				$fp = fopen ( LOGS_DIR . $archive_file, 'wt' );
				if ( !$fp ) exit ( 'Error creating log file, check that log directory is chmodded' );
				for ( $i = 0; $i < count ( $log_files ); $i++ )
				{
					$fh = fopen ( LOGS_DIR . $log_files[$i]['name'], 'rt' );
					if ( $fh )
					{
						while ( !feof ( $fh ) )
						{
							fwrite ( $fp, fread ( $fh, 1024000 ) );
						}
						fclose ( $fh );
					}
					unlink ( LOGS_DIR . $log_files[$i]['name'] );
				}
				fclose ( $fp );
				header ( 'Location: admin.php?action=logs' );
			}
			break;

			default:
			{
				$log_file = gpc ( 'log_file', 'G', '' );
				if ( $log_file == '' && count ( $log_files ) )
				{
					$last = end ( $log_files );
					$log_file = $last['name'];
				}

				// read log data
				if ( $log_file != '' && is_file ( LOGS_DIR . $log_file ) )
				{
					$fp = fopen ( LOGS_DIR . $log_file, 'rt' );
					$log_data = filesize ( LOGS_DIR . $log_file ) > 0 ? fread ( $fp, filesize ( LOGS_DIR . $log_file ) ) : 'This log file is empty.';
					//$log_data = nl2br ( $log_data );
					fclose ( $fp );
				}
				else
				{
					$log_data = 'Invalid log file.';
				}

				// display
				$tpl_logs->set ( 'log_total_size', get_size ( $log_total_size, 'B' ) );
				$tpl_logs->setr ( 'log_files', $log_files );
				$tpl_logs->set ( 'log_file', $log_file );
				$tpl_logs->set ( 'archive_url', 'admin.php?action=logs&amp;task=archive' );
				$tpl_logs->set ( 'delete_all_url', 'admin.php?action=logs&amp;task=delall' );
				$tpl_logs->setr ( 'log_data', $log_data );
				$tpl_admin->setr ( 'content', $tpl_logs );
				$tpl_admin->set ( 'page_title', 'Uploader logs' );
				$tpl_admin->display ( );
			}
		}
	}
	break;

	// show user info
	case 'user_info':
	{
		$tpl_userinfo = new Template ( TPL_DIR . 'tpl_user_admin.php' );
		$tpl_userinfo->set ( 'action', $action );
		$userid = (int)gpc ( 'userid', 'GP', 0 );
		$mysqlDB->query ( "SELECT * FROM uploader_users WHERE userid={$userid} LIMIT 1;" );

		if ( $mysqlDB->getRowCount() )
		{
			$userinfo = $mysqlDB->getAssoc();
			$mysqlDB->free();

			$userinfo['comments'] = trim ( $userinfo['xtr_admin_comments'] ) == '' ? 'No comments' : nl2br ( $userinfo['xtr_admin_comments'] );
			// urls
			$userinfo['email_url'] = 'admin.php?action=emailer&amp;to=' . $userinfo['email'];
			$userinfo['edit_url'] = 'admin.php?action=edit_user&amp;userid=' . $userid;
			$userinfo['manage_files_url'] = 'admin.php?action=user_files&amp;userid=' . $userid;
			$userinfo['bandwidth_reset_url'] = 'admin.php?action=quick_edit_user_info&amp;task=bandwidth_counter&amp;userid=' . $userid;
                        // regdate
			$userinfo['reg_date'] = date ( $UPL['CONFIGS']['TIME_FORMAT2'], $userinfo['reg_date'] );

			// login record
			$userinfo['last_login_time'] = date ( $UPL['CONFIGS']['TIME_FORMAT2'], $userinfo['last_login_time'] );
			$userinfo['last_login_ip'] = $userinfo['last_login_ip'];
			// stats
			$userinfo['max_storage'] = get_size ( $userinfo['fl_max_storage'], 'MB', 1 );
			$userinfo['max_filesize'] = get_size ( $userinfo['fl_max_filesize'], 'KB', 1 );
			$userinfo['filetypes'] = str_replace ( ',', ', ', $userinfo['fl_allowed_types'] );
			$userinfo['bw_used'] = get_size ( $userinfo['bw_used'], 'KB' );
			$userinfo['max_bandwidth'] = get_size ( $userinfo['bw_max'], 'MB' );
			$userinfo['bw_last_reset_days'] = floor ( ( time ( ) - $userinfo['bw_reset_last'] ) / 86400 );
			$userinfo['bw_last_reset'] = date ( $UPL['CONFIGS']['TIME_FORMAT2'], $userinfo['bw_reset_last'] );
			$userinfo['allow_rename'] = $userinfo['fl_rename_permission'];
			$userinfo['allow_create_folder'] = $userinfo['fl_allow_folders'];
			$userinfo['max_folders'] = $userinfo['fl_max_folders'];
			$userinfo['images_only'] = $userinfo['fl_images_only'];

			$tpl_userinfo->setr ( 'userinfo', $userinfo );
			$tpl_admin->setr ( 'content', $tpl_userinfo );
			$tpl_admin->set ( 'page_title', 'Account info', 1 );
		}
		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, 1 );
		}
	}
	break;

	// show user files
	case 'user_files':
	{
		// get inputs
		$folder = isset ( $_GET['folder'] ) ? path_decode ( $_GET['folder'] ) : '';

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -