<?php

//**********************************************************************
//
// リスト表示
//
// Copyright (C) GOMI Hisashi 2002-2015 All rights reserved.
//
//**********************************************************************

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

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

$review_class_category = REVIEW_CLASS_CATEGORY;


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

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

// クラスID
if ( !isset($_REQUEST['f_class']) ){
  $review_class_id = REVIEW_CLASS_ARTICLE;
}else{
  $review_class_id = (int)$_REQUEST['f_class'];
}
if ( !in_array($review_class_id, array(REVIEW_CLASS_ARTICLE, REVIEW_CLASS_FOLLOW, REVIEW_CLASS_CATEGORY, REVIEW_CLASS_TRACKBACK, REVIEW_CLASS_IMAGE)) ){
  error("<P>カテゴリクラスの値が異常です.</P>\n");
}

// 親のユーザID
if ( !isset($_REQUEST['f_puserid']) ){
  $parent_userid = 0;
}else{
  $parent_userid = (int)$_REQUEST['f_puserid'];
}

// ユーザID
if ( !isset($_REQUEST['f_userid']) ){
  $author_userid = 0;
}else{
  $author_userid = (int)$_REQUEST['f_userid'];
}

// さかのぼる日付
if ( !isset($_REQUEST['f_days']) ){
  $past_days = -10;
}else{
  $past_days = (int)$_REQUEST['f_days'];
//  if ( $past_days < 0 ){
//    error("<P>さかのぼる日付の値が異常です.</P>\n");
//  }
}

// さかのぼらない日付
if ( !isset($_REQUEST['f_dayn']) ){
  $passing_days = 0;
}else{
  $passing_days = (int)$_REQUEST['f_dayn'];
//  if ( $passing_days < 0 ){
//    error("<P>さかのぼらない日付の値が異常です.</P>\n");
//  }
}

// 一度に表示する件数
$count_per_page = 10;
if ( isset($_REQUEST['f_count']) && (int)$_REQUEST['f_count'] >= 0 ){
  $count_per_page = (int)$_REQUEST['f_count'];
}

// 表示し始める件目
$skip_count = 0;  //最初から
if ( isset($_REQUEST['f_index']) && (int)$_REQUEST['f_index'] >= 0 ){
  $skip_count = (int)$_REQUEST['f_index'];
}

// 詳細表示スイッチ
if ( !isset($_REQUEST['f_nodtl']) ){
  $detail_flag = 1;
}else{
  $detail_flag = 0;
}

// 呼び出されたURLをパラメータつきで
$url_self_now = "$url_self?f_revid=$review_id";
if ( isset($_REQUEST['f_class']) ) $url_self_now .= "&f_class=$review_class_id";
if ( isset($_REQUEST['f_puserid']) ) $url_self_now .= "&f_puserid=$parent_userid";
if ( isset($_REQUEST['f_userid']) ) $url_self_now .= "&f_userid=$author_userid";


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

//******************************
// レビューの子の数を数える
//******************************

$sql = <<<EOB
SELECT
  r.ReviewID AS ReviewID
, IFNULL(SUM(IF(a.ReviewID IS NOT NULL, 1, 0)), 0) AS ChildCount
FROM
  Reviews r LEFT JOIN Ancestors a ON r.ReviewID = a.AncestorReviewID

EOB
;

// 親のユーザID 条件
if ( isset($_REQUEST['f_puserid']) ){
  $sql .= ", Reviews p" . "\n";
}

$sql .= <<<EOB
WHERE
    r.ReviewClassID = $review_class_id

EOB
;

// さかのぼる日付条件
if ( $past_days > 0 ){
  $sql .= "AND r.CreatedDate >= DATE_SUB(NOW(), INTERVAL $past_days DAY)" . "\n";
}

// さかのぼらない日付条件
if ( $passing_days > 0 ){
  $sql .= "AND r.CreatedDate < DATE_SUB(NOW(), INTERVAL $passing_days DAY)" . "\n";
}

// 親のユーザID 条件
if ( isset($_REQUEST['f_puserid']) ){
  $sql .= <<<EOB
AND p.ReviewID = r.ParentReviewID
AND p.UserID = $parent_userid

EOB
;
}

$sql .= <<<EOB
GROUP BY
  ReviewID

EOB
;

// ページング
if ( $count_per_page > 0 ){
  $sql .= "LIMIT " . ((int)$skip_count) . ", " . ((int)$count_per_page) . "\n";
}

$result = db_query($db, $sql);
$childcount = array();
while ( ($row = mysqli_fetch_array($result)) ){
  $childcount[(int)$row['ReviewID']] = (int)$row['ChildCount'];
}
mysqli_free_result($result);


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

$sql = <<<EOB
SELECT
  r.ReviewID AS ReviewID
, r.ReviewClassID AS ReviewClassID
, IFNULL(r.Score,9999) AS Score
, r.Title AS Title
, r.Creator AS Creator
, r.Author AS Author
, r.AccessLevel AS AccessLevel
, r.UserID AS UserID
, DATE_FORMAT(r.CreatedDate, '%Y年%c月%e日') AS LastDate
, p.Title AS ParentTitle
, p.ReviewID AS ParentReviewID
, p.ReviewClassID AS ParentReviewClassID

EOB
;

if ( $detail_flag ){
  $sql .= ", LEFT(r.Message, 256) AS Message" . "\n";
}

$sql .= <<<EOB
FROM
  Reviews r LEFT JOIN Reviews p ON r.ParentReviewID = p.ReviewID
WHERE
    r.ReviewClassID = $review_class_id

EOB
;

// さかのぼる日付条件
if ( $past_days > 0 ){
  $sql .= "AND r.CreatedDate >= DATE_SUB(NOW(), INTERVAL $past_days DAY)" . "\n";
}

// さかのぼらない日付条件
if ( $passing_days > 0 ){
  $sql .= "AND r.CreatedDate < DATE_SUB(NOW(), INTERVAL $passing_days DAY)" . "\n";
}

// 親のユーザID 条件
if ( isset($_REQUEST['f_puserid']) ){
  $sql .= "AND p.UserID = $parent_userid" . "\n";
}

// 本体のユーザID 条件
if ( isset($_REQUEST['f_userid']) ){
  $sql .= "AND r.UserID = $author_userid" . "\n";
}

// ゴミ箱は非表示
$sql .= "AND r.ParentReviewID <> 3404" . "\n";

$sql .= <<<EOB
ORDER BY
  r.CreatedDate DESC

EOB
;
// ページング
if ( $count_per_page > 0 ){
  $sql .= "LIMIT " . ((int)$skip_count) . ", " . ((int)$count_per_page) . "\n";
}

$result = db_query($db, $sql);
$num = mysqli_num_rows($result);


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

ob_start();

html_header("review", SCREEN_REVIEW);

// 三段組の開始
print "<DIV class='main'>\n";


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

// メニュー
print "<H4>Menu</H4>\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 ( $user_id > 0 ){
  print "<HR>\n";
  print "<LI><A href=\"list.php?f_class=2&f_puserid=$user_id\">あなたへの<BR>新着コメント</A>\n";
}

print "<HR>\n";
print "<LI><A href=\"edit.php?f_class=" . REVIEW_CLASS_ARTICLE . "\">評を書く</A><BR>\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 "</DIV>\n";

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

// 中央の段組の開始
print "<DIV class=\"content\" style=\"width: auto;\">\n";

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

print "<P>\n";
//
$url_suffix = '';
if ( isset($_REQUEST['f_class']) ) $url_suffix .= "&f_class=$review_class_id";
if ( isset($_REQUEST['f_puserid']) ) $url_suffix .= "&f_puserid=$parent_userid";
if ( isset($_REQUEST['f_userid']) ) $url_suffix .= "&f_userid=$author_userid";
// 前週
if ( $past_days >= 0 ){
  $days = $past_days + 7;
  $dayn = $passing_days + 7;
  $url = $url_self . "?f_days=$days&f_dayn=$dayn" . $url_suffix;
  print " <A href=\"$url\">前週</A>";
}
// 次週
if ( $passing_days > 0 ){
  $days = $past_days - 7;
  $dayn = $passing_days - 7;
  if ( $dayn <= 0 ) $dayn = 0;
  $url = $url_self . "?f_days=$days&f_dayn=$dayn" . $url_suffix;
  if ( $dayn <= 0 ){
    print " <A href=\"$url\">最新週</A>\n";
  }else{
    print " <A href=\"$url\">次週</A>\n";
    $url = $url_self . "?f_days=7&f_dayn=0" . $url_suffix;
    print " <A href=\"$url\">最新週</A>";
  }
} else {
  if ( $past_days >= 0 ){
    print " 最新週";
  } else {
    $url = $url_self . "?f_days=7&f_dayn=0" . $url_suffix;
    print " <A href=\"$url\">最新週</A>";
  }
}
// 前のn件
if ( $past_days < 0){
  $url = $url_self . "?f_count=$count_per_page&f_index=" . ($skip_count + $count_per_page) . $url_suffix;
  print " | <A href=\"$url\">前の${count_per_page}件</A>";
}
// 次のn件
if ( $past_days < 0 && $skip_count - $count_per_page >= 0 ){
  $url = $url_self . "?f_count=$count_per_page&f_index=" . ($skip_count - $count_per_page) . $url_suffix;
  print " | <A href=\"$url\">次の${count_per_page}件</A>";
}
// 最新10件
if ( $past_days < 0 && $skip_count == 0 ){
  print " | 最新" . $count_per_page . "件";
} else {
  $url = $url_self . "?f_count=10" . $url_suffix;
  print " | <A href=\"$url\">最新10件</A>";
}


// 子のリスト
if ( $user_id > 0 && $review_id > 0 ){
  $url_self_now_quoted = quote_html_param($url_self_now);
  print "<FORM action=\"move2.php\" method=\"POST\" name=\"move\">\n";
  print "<INPUT type=\"hidden\" name=\"f_revid\" value=\"$review_id\">\n";
  print "<INPUT type=\"hidden\" name=\"f_backurl\" value=\"$url_self_now_quoted\">\n";
}
$lastdate_prev = '';
while ( ($row = mysqli_fetch_array($result)) ){
  $child_title = $row['Title'];
  $child_revid = (int)$row['ReviewID'];
  $child_revclsid = (int)$row['ReviewClassID'];
  $child_creator = $row['Creator'];
  $child_author = $row['Author'];
  $child_score = (float)$row['Score'];
  $child_access_level = (int)$row['AccessLevel'];
  $child_userid = (int)$row['UserID'];
  $child_lastdate = $row['LastDate'];
  $child_message = (isset($row['Message']) ? $row['Message'] : "");
  $child_parent_title = $row['ParentTitle'];
  $child_parent_revid = (int)$row['ParentReviewID'];
  $child_parent_revclsid = (int)$row['ParentReviewClassID'];
  $child_title_quoted = quote_html($child_title);
  $child_author_quoted = quote_html($child_author);
  $child_lastdate_quoted = quote_html($child_lastdate);
  if ( isset($row['Message']) && $child_message != '' ){
    $child_message = mb_ereg_replace("\n.*$", '', $child_message);
    $child_message_quoted = quote_html($child_message);
    $child_message_quoted = url_replace($child_message_quoted);
    //$child_message_quoted = mb_ereg_replace("(s?https?://[-_.!~*'()a-zA-Z0-9;/?:@&=+$,%#]+)(.)", "<A href=\"\\1\" target=\"_blank\"><IMG src=\"jump.gif\" alt=\"\\1\" border=\"0\"></A>\\2", $child_message_quoted);
  }else{
    $child_message_quoted = '';
  }
  if ( $child_lastdate != $lastdate_prev ){
    if ( $lastdate_prev != '' ){
      print "</UL>\n";
    }
    $lastdate_prev = $child_lastdate;
    print "<H4><SPAN class=\"date\">$child_lastdate_quoted</SPAN></H4>\n";
    print "<UL>\n";
  }
  // 移動用
  $checkbox_quoted = '<LI>';
  if ( $user_id > 0 && $review_id > 0 && ($user_id == $child_userid || $access_level >= $child_access_level + 20) ){
    if ( $child_revclsid == REVIEW_CLASS_CATEGORY || $child_revclsid == REVIEW_CLASS_ARTICLE || $child_revclsid == REVIEW_CLASS_COMMENT || $child_revclsid == REVIEW_CLASS_TRACKBACK || $child_revclsid == REVIEW_CLASS_IMAGE){
      $checkbox_quoted = "<INPUT type=\"checkbox\" name=\"f_revids[]\" value=\"$child_revid\">";
    }
  }
  print "<SPAN class=\"revchild\">";
  {
    print "$checkbox_quoted<SPAN class=\"title\"><A href=\"view.php?f_revid=$child_revid\">$child_title_quoted</A></SPAN>";
    // それ以外の項目
    if ( $child_creator != '' ){
      $child_creator_quoted = " <SPAN class=\"creator\">" . quote_html($child_creator) . "</SPAN>";
    }else{
      $child_creator_quoted = '';
    }
    print $child_creator_quoted;
    print "<BR>";
    // 書いた人
    print "評者：<SPAN class=\"author\">";
    if ( $child_userid != '' ){
      $url_self_now_quoted = htmlentities(urlencode($url_self_now));
      print "<A href=\"../userview.php?f_userid=$child_userid&f_screenid=1&f_backurl=review/$url_self_now_quoted\">";
    }
    print $child_author_quoted;
    if ( $child_userid > 0 ) print "</A>";
    print "</SPAN>";
    // 評価
    print " 評価：";
    if ( $child_score != 9999 ){
      if ( isset($eval_val[$child_score]) ){
        if ( isset($eval_val_img[$child_score]) ){
          print "<IMG src=\"" . $eval_val_img[$child_score] . "\" align=\"top\"> " . $eval_val[$child_score] . "(${child_score}点)";
        }else{
          print $eval_val[$child_score] . "(${child_score}点)";
        }
      }else{
        print "${child_score}点";
      }
    }else{
      print "-";
    }
    //
    if ( $child_parent_title != '' ){
      if ( $child_parent_revclsid == REVIEW_CLASS_CATEGORY ){
        print " 分類：<A href=\"index.php?f_revid=$child_parent_revid\">" . quote_html($child_parent_title) . "</A>";
      }else{
        print " 分類：<A href=\"view.php?f_revid=$child_parent_revid\">" . quote_html($child_parent_title) . "</A>";
      }
    }
    // コメント件数
    if ( $child_revclsid != REVIEW_CLASS_CATEGORY && isset($childcount['$child_revid']) && $childcount['$child_revid'] > 0 ){
      $cnt = $childcount['$child_revid'];
      print " コメント数：<A href=\"index.php?f_revid=$child_revid\">${cnt}件</A>";
    }
  }
  print "</SPAN>\n";
  if ( $child_message != '' ){
    print "<BLOCKQUOTE>$child_message_quoted</BLOCKQUOTE>\n";
  }
}
if ( $lastdate_prev != '' ){
  print "</BLOCKQUOTE>\n";
}
if ( $user_id > 0 && $review_id > 0 ){
  print "<INPUT type=\"submit\" name=\"f_move\" value=\"移動\">\n";
  print "<INPUT type=\"submit\" name=\"f_delete\" value=\"削除\" onClick=\"javascript:document.move.action='delete2.php';return true;\">\n";
  print "<INPUT type=\"button\" name=\"selectall\" value=\"すべて選択\" onClick='javascript:{var elements=document.move.elements;for (var i=0;i<elements.length;i++){if(elements[i].type==\"checkbox\"){elements[i].checked=true;}}}'>\n";
  print "</FORM>\n";
}
mysqli_free_result($result);

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


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

// 三段組の終了
print "</DIV>\n";

html_footer();

ob_end_flush();


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

db_disconnect($db);


?>
