#!/usr/bin/perl #======================================================================================= # BANNER LINK SYSTEM Version 1.7 # Script by HAL # Last Update 2005.08.31 #======================================================================================= require 'preset.cgi'; require 'sub.pl'; if ($ENV{'REQUEST_METHOD'} eq "POST") { read(STDIN, $formdata, $ENV{'CONTENT_LENGTH'}); } else { $formdata = $ENV{'QUERY_STRING'}; } @pairs = split(/&/,$formdata); foreach $pair (@pairs) { ($name, $value) = split(/=/, $pair); $value =~ tr/+/ /; $value =~ s/%([a-fA-F0-9][a-fA-F0-9])/pack("C", hex($1))/eg; $value =~ s/\n//g; $value =~ s/\,//g; $QUERY{$name} = $value if ($name !~ /^up/); } $QUERY{'seq'} =~ s/\D//g; if($QUERY{'url'} ne ""){ &make_rank($QUERY{'url'}); } if($QUERY{'mode'} eq ""){ $QUERY{'mode'} = 'index'; } # ジャンルタイトル決定 $i = 0; $jtitle = 'Attention'; foreach $modew (@junle_code) { if($QUERY{'mode'} eq $modew){ $jtitle = $junle_str[$i]; } $i++; } &html; #===============================表示HTMLドキュメントを生成=========================== sub html { open(PRE,"$design_file") || &error('FILE OPEN ERROR - design'); @htmls =
;
	close(PRE);
	$html = "";
	foreach (@htmls) { $html .= $_; }
	($dhead,$heads,$dfoot) = split(//, $html);
	if($QUERY{'mode'} eq "index"){
		open(IND,"$index_file") || &error('FILE OPEN ERROR - index');
		@htmls = ;
		close(IND);
		$html = "";
		foreach (@htmls) { $html .= $_; }
	}else{
		if($QUERY{'num'} ne ""){ $num = $QUERY{'num'}; } else{ $num = 0; }
		$next_num = $num + $pmax;
		$html = $dhead .'' .$dfoot;
		($dhead,$sheet,$dfoot) = split(//, $html);
		($shead,$tsheet,$sfoot) = split(//, $sheet);
		if($QUERY{'mode'} eq "rank"){ $log_file = $rank_file; }
		open(LOG,"$log_file") || &error('FILE OPEN ERROR - log');
		@logs = ;
		close(LOG);
		# ソート処理
			if($sort_ck == 2 || $sort_ck == 3){
				@sortw = ();
				foreach (@logs) {
					($cnt,$seq,$site_name,$site_namek,$ad_name,$comm,$url,$bn_url,$janru) = split(/<>/, $_);
					push(@sortw,"$seq<>$site_namek<>$site_name<>$cnt<>$ad_name<>$comm<>$url<>$bn_url<>$janru<>\n");
				}
				if($sort_ck == 2){ @sorted = sort { $b <=> $a } @sortw; }
				else{ @sorted = sort { $a <=> $b } @sortw; }
				@logs = ();
				foreach (@sorted) {
					($seq,$site_namek,$site_name,$cnt,$ad_name,$comm,$url,$bn_url,$janru) = split(/<>/, $_);
					push(@logs,"$cnt<>$seq<>$site_name<>$site_namek<>$ad_name<>$comm<>$url<>$bn_url<>$janru<>\n");
				}
			}elsif($sort_ck == 1){ @logs = reverse @logs; }
		$prev = ""; $i = 0; $j = 0; $sf = 0;
		foreach (@logs) {
			($cnt,$seq,$site_name,$site_namek,$ad_name,$comm,$url,$bn_url,$janru) = split(/<>/, $_);
			if($bn_url eq ""){ $bn_url = $bn_dir .$nb_img; }
			elsif(!($bn_url =~ /http:/)){ $bn_url = $bn_dir .$bn_url; }
			$url = $view_cgi .'?url=' .$seq;
			$linkb = "";
			if($QUERY{'mode'} eq "rank"){
				$f = 1; $i++;
			}else{
				@janrus = split("##",$janru);
				$f = 0;
				foreach $value (@janrus) {
					if($value eq $QUERY{'mode'}){ $f = 1; $i++; last; }
				}
			}
			if($f == 1){
				if($pmax == 0 || ($j >= $num && $j < $next_num)){
					$tsheetw = $tsheet;
					if($QUERY{'mode'} eq "rank"){ $tsheetw =~ s//[ $cnt ]/g; }
					elsif($cnt >= time()-60*60*24*$new_day){ # NEWマーク処理
						$tsheetw =~ s///g;
					}
					$tsheetw =~ s//$site_name/g;
					$tsheetw =~ s//$ad_name/g;
					$tsheetw =~ s//$comm/g;
					$tsheetw =~ s//$url/g;
					$tsheetw =~ s//$linkb/g;
					$sf++;
					if($sf == 1){ $prev .= $shead; }
					$prev .= $tsheetw;
					if($sf == $table_su){ $prev .= $sfoot; $sf = 0; }
				}
				$j++;
			}
		}
		if($sf != $table_su && $sf != 0){
			$tsheet =~ s//No DATA/g;
			$tsheet =~ s//No DATA/g;
			while($sf < $table_su){ $prev .= $tsheet; $sf++; }
			$prev .= $sfoot;
		}
		$html = $dhead .$prev .$dfoot;
	}
	$page = "";
	if($pmax != 0){
		$iw = 0;
		$p = $i / $pmax;
		while($iw < $p){
			$iww = $iw + 1; $numw = $iw * $pmax;
			if($num == $numw){ $page .= "[$iww] "; }
			else{ $page .= "[$iww] "; }
			$iw++;
		}
	}else{ $page .= "[ALL]"; }
	$html =~ s//$j/g;
	$html =~ s//$page/g;
	$html =~ s//$heads/g;
	$html =~ s//$view_cgi/g;
	$html =~ s//$jtitle/g;
	$html =~ s//$admin_cgi/g;
	$html =~ s//$systeminfo/g;
	print "Content-Type: text/html\n\n";
	print "\n";
	print $html;
	exit;
}

#=============================== ランキング処理 ===========================
sub make_rank{
	$urlw = $_[0];
	# ロック開始
		if ($lockkey == 1) { &lock1; }
		elsif ($lockkey == 2) { &lock2; }
	open(RNK,"$rank_file") || &error('FILE OPEN ERROR - log');
	@ranks = ;
	close(RNK);
	open(LOG,"$log_file") || &error('FILE OPEN ERROR - log');
	@logs = ;
	close(LOG);
	$f = 0;
	foreach (@logs) {
		($cnt,$seq,$site_name,$site_namek,$ad_name,$comm,$url,$bn_url,$janru) = split(/<>/, $_);
		if($urlw == $seq){ $f = 1; last; }
	}
	if($f != 1){ &error('リンク先は登録されていません'); }
	$f = 0; @newrlogs = ();
	foreach (@ranks) {
		($cntr,$seqr,$site_namer,$site_namekr,$ad_namer,$commr,$urlr,$bn_urlr,$janrur) = split(/<>/, $_);
		if($seq == $seqr){ $cntr++; $f = 1; }
		push(@newrlogs,"$cntr<>$seqr<>$site_namer<>$site_namekr<>$ad_namer<>$commr<>$urlr<>$bn_urlr<>$janrur<>\n");
	}
	if($f != 1){ push(@newrlogs,"1<>$seq<>$site_name<>$site_namek<>$ad_name<>$comm<>$url<>$bn_url<>$janru<>\n"); }
	@sorted = sort { $b <=> $a } @newrlogs;
	open(OUT,">$rank_file") || &error('FILE OPEN ERROR - rank');
	print OUT @sorted;
	close(OUT);
	&unlock; # ロック解除
	# リロード処理
  print "Location: $url\n\n";
  exit;
}