#==========================================================================#
# ■ B.Forum Ver.1.01                                                      #
# ■ プラグインSDK(main)                                                   #
# □ Encode = EUC                                                          #
# □ Hiroaki,Sakuma (sakuma@beetas.org)                                    #
#                                                                          #
# このアプリケーションはオープンソースウェアです.                          #
# 無料で使用することができます.                                            #
# なお, 詳細な使用条件/最新情報については下記サイトをご覧下さい.           #
# http://www.beetas.org/                                                   #
#                                                                          #
# ------------------------------------------------------------------------ #
# Copyright 2001-2002 Hiroaki,Sakuma All Rights Reserved.                  #
# Copyright 2001-2002 BEETAS.org All Rights Reserved.                      #
#                                                                          #
#==========================================================================#
package main;

use Exporter;
use strict;

@ISA = qw(Exporter);
@EXPORT = qw(version status require_min require_max main);

my (%in %SET);

sub version {
	# バージョン(要変更)
	$version = "Plugin SDK(main) 1.01(0055-0058)";
	return $version;
}

sub status {
	return 1;
}

sub require_min {
	# 最低動作バージョン(要変更)
	$require_min = "0055";
	return $require_min;
}

sub require_max {
	# 最高動作バージョン(要変更)
	$require_max = "0058";
	return $require_max;
}

sub main ($$$@) {

	# 変更の必要なし
	my $head = $_[0];
	my $foot = $_[1];
	%in = %{$_[2]};
	splice (@_,0,3);
	%SET = %Bforum::SET;



	# ここから変更

	my ($tmp1);

	if ($Query[0] eq 'Check') {
		## Flush to cache
		&_cache_flush;
	}

	## Caching
	$tmp1 = join('&',@Bforum::Query);
	$tmp1 =~ s/(\W)/'%' . unpack("H2",$1)/ego;
	if (-f ("$SET{'USER_DIR'}/.cache/$tmp1")) {
		print &Bforum::_open(undef,("$SET{'USER_DIR'}/.cache/$tmp1$Bforum::browser->{browser}"));
		exit(0);
	}

	if (!($in{'plugin'} && defined &Bforum::plugin($in{'plugin'}))) {

		## Not extention plugin(default)
		if ($Bforum::Query[0] eq 'Check' && $SET{'CHECK_DO'} ne 'N') {
			## Check
			&check;
		} elsif (!$Bforum::Query[0] && $SET{'PORTAL_DO'} ne 'N') {
			## Portal
			&Bforum::portal;
		} elsif (defined $in{'search'}) {
			## Search
			&Bforum::search;
		} elsif ($in{'t'}) {
			$Bforum::num = &Bforum::_open('line',"$SET{'USER_DIR'}/$in{'id'}/$in{'t'}/list");
			if ($in{'v'}) {
				if ($in{'v'} eq 'list') {
					## List
					&Bforum::list;
				} elsif ($in{'v'} eq 'tree') {
					## Tree
					&Bforum::tree;
				} else {
					if ($in{'f'} eq 'f' || $in{'r'}) {
						## Replay form
						&Bforum::form;
					} elsif ($in{'f'} eq 'r') {
						## Replay post
						&Bforum::regist;
					} elsif ($in{'d'}) {
						## File download
						&Bforum::download;
					} else {
						## View log
						&Bforum::view;
					}
				}
			} else {
				if ($in{'f'} eq 'f' || $in{'r'}) {
					## Post form
					&Bforum::form;
				} elsif ($in{'f'} eq 'r') {
					## Post post
					&Bforum::regist;
				} else {
					## Thread
					&Bforum::thread;
				}
			}
		} else {
			if ($in{'f'} eq 'f' || $in{'r'}) {
				## Create thread form
				&Bforum::form;
			} elsif ($in{'f'} eq 'r') {
				## Create thread post
				&Bforum::regist;
			} else {
				## Index
				&Bforum::index($in{'i'});
			}
		}
	}
	## Print
	&Bforum::print;
	undef @_;

}

sub about {
	close (NULL);
	&Bforum::about((caller)[2] . '@' . &version);
}

1;

