<?php
$template = <<<END
<!-- block_logview -->
<!--{def item/title}-->
<h2>{val item/title}</h2>
<!--{/def}-->
<table class="ta1">
<!--{def item/list}-->
<!--{each item/list}-->
<tr>
<td><a href="./?act={val act}&f={val item/list/f}">{val item/list/ymd}</a></td>
</tr>
<!--{/each}-->
<!--{/def}-->
<!--{def item/log}-->
<h3>{val item/ymd}のログ</h3>
<!--{each item/log}-->
<tr>
<!--{each item/log/item}-->
<td>{val item/log/item}</td>
<!--{/each}-->
</tr>
<!--{/each}-->
<!--{/def}-->
</table>

<!--{def item/pager}-->
<div class="pager">
<!--{def item/pager/prev}-->
<a href="./?act={val act}&f={val item/f}&p={val item/pager/prev/no}">&lt;&lt; 前へ</a>
<!--{/def}-->
<!--{each item/pager/list}-->
<!--{ndef item/pager/list/link}-->
<span>{val item/pager/list/name}</span>
<!--{/ndef}-->
<!--{def item/pager/list/link}-->
<a href="./?act={val act}&f={val item/f}&p={val item/pager/list/no}">{val item/pager/list/name}</a>
<!--{/def}-->
<!--{/each}-->
<!--{def item/pager/next}-->
<a href="./?act={val act}&f={val item/f}&p={val item/pager/next/no}">次へ &gt;&gt;</a>
<!--{/def}-->
</div>
<!--{/def}-->

<!--{def item/log}-->
<p class="c"><a href="./?act={val act}" class="btn1">一覧に戻る<i class="fas fa-arrow-circle-right"></i></a></p>
<!--{/def}-->
END;

$block_logview = array(
	"title" => "ログ閲覧",
	"name" => "block_logview",		// 名称、重複すると正しく動作しません
	"template" => $template,		// ブロックのテンプレート
	"css_file" => "pager.css",
	"input" => array(
		"help" => array(
			"title" => "使い方",
			"type" => "comment",
			"link" => DOCUMENT1 . "/?act=block_logview",
			"class" => "notice",
		),
		"title" => array(
			"title" => "タイトル",
			"type" => "text",
		),
		"log_file" => array(
			"title" => "ログファイル",
			"type" => "text",
		),
	),
	"func" => "func_logview",
);

block_add($block_logview);

function func_logview($def, $info)
{
	global $page_index;
	$page_limit = 20;

	$page = 0;
	if ($_REQUEST["p"]) {
		$page = intval($_REQUEST["p"]);
	}
	$st = $page * $page_limit;
	$ed = $st + $page_limit - 1;
	if ($_REQUEST["f"]) {
		$info["f"] = $_REQUEST["f"];
		unset($list);
		if (preg_match('([0-9]+)', $_REQUEST["f"], $m)) {
			$info["ymd"] = date("Y-m-d", strtotime($m[0]));
		}
		// ログ一覧
		if (($handle = fopen($_REQUEST["f"], 'r')) !== FALSE) {
		    // 各行を読み込む
		    $count = 0;
    		while (($data = fgetcsv($handle, 1000, ',')) !== FALSE) {
    			unset($v);
        		foreach ($data as $cell) {
        			if ($page_index[$cell]) {
        		    	$v["item"][] = $page_index[$cell]["title"];
        			} else {
        		    	$v["item"][] = htmlspecialchars($cell); // セルの内容
        			}
        		}
        		if (($count >= $st)&&($count <= $ed)) {
	        		$list[] = $v;
	        	}
        		$count++;
		    }
		    fclose($handle); // ファイルを閉じる
		} else {
		    echo 'ファイルを開けませんでした。';
		}
		$info["log"] = $list;
	} else {
		$files = glob($info["log_file"]);
		arsort($files);
		$count = 0;
		foreach ($files as $file) {
			if (preg_match('([0-9]+)', $file, $m)) {
				$v["f"] = $file;
				$v["ymd"] = date("Y-m-d", strtotime($m[0]));
        		if (($count >= $st)&&($count <= $ed)) {
					$list[] = $v;
				}
        		$count++;
			}
		}
		$info["list"] = $list;
	}
	if ($count > $page_limit) {
		$pages = intval(($count + $page_limit - 1) / $page_limit);
		$info["pager"] = pager($page, $pages);
	}
	return $info;
}
