表紙 | 新規 | 編集 | 編集 | 差分 | 一覧 | RSS | 検索 | 閲覧履歴 | 作成履歴 | 更新履歴

init_form関数 - YukiWikiベースのPonyWikiのソースを読んでみる その25

YukiWikiベースのPonyWikiのソースを読んでみる その25

CGIへの引数を%formハッシュへ設定する関数。文字コード変換もやってる。

処理の流れは以下の通りです。

sub init_form {
	if (param()) {
		foreach my $var (param()) {
			$form{$var} = param($var);
		}
	} else {
		$ENV{QUERY_STRING} = $[[FrontPage]];
	}

	my $query = &decode($ENV{QUERY_STRING});
	if ($page_command{$query}) {
		$form{mycmd} = $page_command{$query};
		$form{mypage} = $query;
	} elsif ($query =~ /^($wiki_name)$/) {
		$form{mycmd} = 'read';
		$form{mypage} = $1;
	} elsif ($database{$query}) {
		$form{mycmd} = 'read';
		$form{mypage} = $query;
	}

	# mypreview_edit		-> do_edit, with preview.
	# mypreview_adminedit   -> do_adminedit, with preview.
	# mypreview_write	   -> do_write, without preview.
	foreach (keys %form) {
		if (/^mypreview_(.*)$/) {
			$form{mycmd} = $1;
			$form{mypreview} = 1;
		}
	}

	#
	# $form{mycmd} is frozen here.
	#

	$form{mymsg} = &code_convert(\$form{mymsg}, $kanjicode);
	$form{myname} = &code_convert(\$form{myname}, $kanjicode);

# Admin ONLY MODE
	if ($admin_only_mode) {
		$form{myfrozen} = 1;
	}
	
# 携帯電話かどうかのチェック (かなり手抜き)
	if(	$ENV{'HTTP_USER_AGENT'} =~ /UP\.BROWSER/i	||
		$ENV{'HTTP_USER_AGENT'} =~ /DoCoMo/i		||
		$ENV{'HTTP_USER_AGENT'} =~ /KDDI/i			||
		$ENV{'HTTP_USER_AGENT'} =~ /Vodafone/i		||
		$ENV{'HTTP_USER_AGENT'} =~ /jig browser/i	||
		$ENV{'HTTP_USER_AGENT'} =~ /J-PHONE/i) { 

		$form{keitai} = 1;
		$plugin_context->{keitai} = 1;
	}

}

先頭へ