<?php

//**********************************************************************
//
// ツリー
//
// Copyright (C) GOMI Hisashi 2002-2006 All rights reserved.
//
//**********************************************************************

//******************************
// 設定
//******************************

include("../lib.php");
include("revcom.php");
$url_self = "tree.php";


// 定数を変数に移す
$review_class_category = REVIEW_CLASS_CATEGORY;
$review_class_article = REVIEW_CLASS_ARTICLE;


//******************************
// 入力
//******************************

if ( isset($_REQUEST['f_revid']) ) $f_revid = $_REQUEST['f_revid'];
if ( isset($_REQUEST['f_depth']) ) $f_depth = $_REQUEST['f_depth'];


// レビューID
if ( !isset($f_revid) ){
  $f_revid = 1;
}
$review_id = (int)$f_revid;

// 深さ
if ( !isset($f_depth) ){
  $depth = 9999;
}else{
  $depth = $f_depth = (int)$f_depth;
}


// 呼び出されたURLをパラメータつきで
$url_self_now = "$url_self?f_revid=$review_id";
if ( isset($f_depth) ) $url_self_now .= "&f_depth=$f_depth";


//**************************************************
//
// サブルーチン
//
//**************************************************

function put_record($revid)
{
  global $review_titles, $review_authors, $review_class_ids, $child_review_ids;

  $review_title_quoted = quote_html($review_titles[$revid]);
  $review_author_quoted = quote_html($review_authors[$revid]);
  if ( isset($child_review_ids[$revid]) ){
    $childs = $child_review_ids[$revid];
    $n = count($childs);
  }else{
    $childs = array();
    $n = 0;
  }
  if ( $n == 0 ){
    print "<SPAN class=\"title\">";
    if ( $review_class_ids[$revid] == REVIEW_CLASS_CATEGORY ){
      print "<A href=\"index.php?f_revid=$revid\">$review_title_quoted</A>";
      print "</SPAN>\n";
    }else{
      print "<A href=\"view.php?f_revid=$revid\">$review_title_quoted</A>";
      print "</SPAN> - <SPAN class=\"author\">$review_author_quoted</SPAN>\n";
    }
    return 1;
  }else{
    print "<TABLE border=\"0\" cellspacing=\"0\" cellpadding=\"0\" style=\"\"><TBODY>\n";
    print "<TR><TD colspan=\"2\" align=\"right\"><SPAN class=\"title\">";
    if ( $review_class_ids[$revid] == REVIEW_CLASS_CATEGORY ){
      print "<A href=\"index.php?f_revid=$revid\">$review_title_quoted</A>";
      print "</SPAN></TD></TR>\n";
    }else{
      print "<A href=\"view.php?f_revid=$revid\">$review_title_quoted</A>";
      print "</SPAN> - <SPAN class=\"author\">$review_author_quoted</SPAN></TD></TR>\n";
    }
    $line = 1;
    for ( $i = 0 ; $i < $n ; $i ++ ){
      print "<TR><TD align=\"right\">\n";
      $l = put_record($childs[$i]);
      print "</TD><TD valign=\"top\">";
      for ( $j = 0 ; $j < $l ; $j ++ ){
        if ( $j == 0 ){
          if ( ($i + 1) < $n ){
            print "┤<BR>";
          }else{
            print "┘<BR>";
            break;
          }
        }else{
          print "│<BR>";
        }
      }
      print "</TD></TR>\n";
      $line += $l;
    }
    print "</TBODY></TABLE>\n";
    return $line;
  }
}


//**************************************************
//
// メイン
//
//**************************************************

//******************************
// レビューを読み込む
//******************************

// 取得対象レビューID
$revids = array();

$review_titles = array();
$review_authors = array();
$review_class_ids = array();
$child_review_ids = array();

$sql = <<<EOB
SELECT
  r.ReviewClassID AS ReviewClassID
, r.Title AS Title
, r.Author AS Author
FROM
  Reviews r
WHERE
    r.ReviewID = $review_id
EOB
;
$row = db_query_single_record($db, $sql);

if ( $row == false ){
  error("<P>対象レコードがありません.</P>");
}

$revids[] = $review_id;
$review_titles[$review_id] = $row['Title'];
$review_authors[$review_id] = $row['Author'];
$review_class_ids[$review_id] = $review_class_id = (int)$row['ReviewClassID'];
$this_revids = array( $review_id );


//******************************
// レビューを読み込む
//******************************

for ( $i = 1 ; $i <= $depth ; $i ++ ){
  $this_revids_list = join(", ", $this_revids);
  $sql = <<<EOB
SELECT
  r.ReviewID AS ReviewID
, r.ParentReviewID AS ParentReviewID
, r.ReviewClassID AS ReviewClassID
, r.Title AS Title
, r.Author AS Author
FROM
  Reviews r
WHERE
    r.ParentReviewID IN ( $this_revids_list )
EOB
;
  $result = db_query($db, $sql);
  $num = mysqli_num_rows($result);
  if ( $num == 0 ) break;
  $this_revids = array();
  while ( ($row = mysqli_fetch_array($result)) ){
    $revid = (int)$row['ReviewID'];
    if ( in_array($revid, $revids) ){
      error("<P>評の親子関係が壊れています.</P>");
    }
    $previd = (int)$row['ParentReviewID'];
    $revids[] = $revid;
    $this_revids[] = $revid;
    $review_titles[$revid] = $row['Title'];
    $review_authors[$revid] = $row['Author'];
    $review_class_ids[$revid] = $row['ReviewClassID'];
    if ( isset($child_review_ids[$previd]) ){
      array_push($child_review_ids[$previd], $revid);
    }else{
      $child_review_ids[$previd] = array($revid);
    }
  }
  mysqli_free_result($result);

}


//******************************
// 出力開始
//******************************

ob_start();

html_header("review", SCREEN_REVIEW);

// 三段組の開始
print "<TABLE border=\"0\" width=\"100%\"><TBODY><TR valign=\"top\">\n";


// 左の段組の開始
print "<TD class=\"leftsidebar\" width=\"120\">\n";

// メニュー
print "<H4>Menu</H4>\n";
//if ( $parent_review_id > 0 ){
//  print "<LI><A href=\"index.php?f_revid=$parent_review_id\">戻る</A><BR>\n";
//}
print "<LI><A href=\"index.php?f_revid=1\">全カテゴリへ</A>\n";
print "<LI><A href=\"reviewers.php\">評者の集計</A>\n";
print "<HR>\n";
print "<LI><A href=\"list.php\">新着リスト</A>\n";
print "<LI><A href=\"list.php?f_class=2\">新着コメント</A>\n";
if ( $review_class_id != REVIEW_CLASS_CATEGORY ){
  print "<HR>\n";
  print "<LI><A href=\"view.php?f_revid=$f_revid\">本文をみる</A>\n";
}

print "<HR>\n";
if ( $user_id > 0 ){
  print "ログイン<BR>しています<BR><A href=\"../userview.php?f_userid=$user_id&f_screenid=1\">ユーザ情報</A><BR><A href=\"../user.php?f_userid=$user_id\">ユーザ情報の変更</A>";
  print "<FORM action=\"../index.php\" method=\"POST\" name=\"logout\">\n";
  print "<INPUT type=\"submit\" name=\"f_logout\" value=\"ログアウト\">\n";
  print "</FORM>\n";
}else{
  print "ログイン<BR>していません<BR><A href=\"../signup.php\">登録</A>\n";
}

// 左の段組の終了
print "</TD>\n";

// 段組の区切り線
print "<TD width=\"1\" height=\"100%\" bgcolor=\"#FFFFFF\"></TD>\n";

// 中央の段組の開始
print "<TD class=\"content\" width=\"80%\">\n";

//------------------------------
// 中央の段組
//------------------------------

put_record($review_id);


// 中央の段組の終了
print "</TD>\n";

// 段組の区切り線
print "<TD width=\"1\" height=\"100%\" bgcolor=\"#FFFFFF\"></TD>\n";


//******************************
// 出力終了
//******************************

// 三段組の終了
print "</TR></TBODY></TABLE>\n";

html_footer();

ob_end_flush();


//******************************
// データベース切断
//******************************

db_disconnect($db);


?>
