PDO::ERRMODE_EXCEPTION, PDO::MYSQL_ATTR_MULTI_STATEMENTS => false ); $pdo = new PDO('mysql:charset=utf8mb4;dbname=' . DB_NAME . ';host=' . DB_HOST, DB_USER, DB_PASS, $option); } catch (PDOException $e) { // 接続エラーのときエラー内容を取得する $error_message[] = $e->getMessage(); } if (!empty($pdo)) { $aduserinfoQuery = $pdo->prepare("SELECT username,userid,loginid,admin,role,sacinfo,blocklist,bookmark FROM account WHERE userid = :userid"); $aduserinfoQuery->bindValue(':userid', safetext($userid)); $aduserinfoQuery->execute(); $res = $aduserinfoQuery->fetch(); $myblocklist = safetext($res["blocklist"]); $mybookmark = safetext($res["bookmark"]); $sql = "SELECT * FROM ueuse WHERE uniqid = :ruUniqid ORDER BY datetime DESC LIMIT 1"; $stmt = $pdo->prepare($sql); $stmt->bindValue(':ruUniqid', $ruUniqid, PDO::PARAM_STR); $stmt->execute(); $message_array = $stmt; while ($row = $message_array->fetch(PDO::FETCH_ASSOC)) { $messages[] = $row; } // ユーザー情報を取得して、$messages内のusernameをuserDataのusernameに置き換える if(!(empty($messages))){ foreach ($messages as &$message) { $userQuery = $pdo->prepare("SELECT username, userid, profile, role, iconname, headname, sacinfo FROM account WHERE userid = :userid"); $userQuery->bindValue(':userid', $message["account"]); $userQuery->execute(); $userData = $userQuery->fetch(); if ($userData) { $message['iconname'] = $userData['iconname']; $message['headname'] = $userData['headname']; $message['username'] = $userData['username']; $message['sacinfo'] = $userData['sacinfo']; $message['role'] = $userData['role']; } //リプライ数取得 $rpQuery = $pdo->prepare("SELECT COUNT(*) as reply_count FROM ueuse WHERE rpuniqid = :rpuniqid"); $rpQuery->bindValue(':rpuniqid', $message['uniqid']); $rpQuery->execute(); $rpData = $rpQuery->fetch(PDO::FETCH_ASSOC); if ($rpData){ $message['reply_count'] = $rpData['reply_count']; } //リユーズ数取得 $ruQuery = $pdo->prepare("SELECT COUNT(*) as reuse_count FROM ueuse WHERE ruuniqid = :ruuniqid"); $ruQuery->bindValue(':ruuniqid', $message['uniqid']); $ruQuery->execute(); $ruData = $ruQuery->fetch(PDO::FETCH_ASSOC); if ($ruData){ $message['reuse_count'] = $ruData['reuse_count']; } } if (false === strpos($myblocklist, ','.safetext($message['account']))) { $fav = $message['favorite']; // コンマで区切られたユーザーIDを含む変数 $favIds = explode(',', $fav); $message["favcnt"] = count($favIds)-1; $message["bookmark"] = $mybookmark; return $message; } }else{ return false; } } } class MessageDisplay { private $value; private $userid; public function __construct($value, $userid) { $this->value = $value; $this->userid = $userid; } public function display() { if (empty($this->value)) { echo '

ユーズがありません

'; } else { echo '
'; if(!empty($this->value['rpuniqid'])){ echo '

┗━ 一番上のユーズに返信

'; } if(!empty($this->value['ruuniqid'])){ $org_ueuse = GetOriginalUeuse($this->value['ruuniqid'], $this->userid); if(!(empty($org_ueuse))){ if(!(empty($this->value['ueuse']))){ //引用リユーズ------------------------------------------------------------------------------------------------------ //---------------------------------------------------------------------------------------------------------------- //---------------------------------------------------------------------------------------------------------------- echo '
'; echo ' '; echo '
' . replaceProfileEmojiImages(safetext($this->value['username'])) . '
'; echo ' '; if(!empty($this->value['sacinfo'])){ if($this->value['sacinfo'] === "bot"){ echo '
Bot
'; } } if (false !== strpos($this->value['role'], 'official')) { echo '
'; echo '
'; echo '
'; echo '
'; } echo '
'; $datetime = strtotime(safetext($this->value['datetime'])); $today = strtotime(date("Y-m-d")); $tomorrow = date('Y-m-d', strtotime('+1 day')); if (date("md", $datetime) == "0101") { if (date("Y", $datetime) == date("Y")) { echo "元日 " . date("H:i", $datetime); } else { echo date("Y年m月d日 H:i", $datetime); } } elseif ($datetime >= $tomorrow) { echo date("Y年m月d日 H:i", $datetime) . " (未来)"; } elseif ($datetime >= $today) { echo "今日 " . date("H:i", $datetime); } elseif (date("Y", $datetime) == date("Y")) { echo date("m月d日 H:i", $datetime); } else { echo date("Y年m月d日 H:i", $datetime); } echo '
'; echo '
'; if($this->value['nsfw'] === "true"){ echo '
'; echo '

NSFW指定がされている投稿です!
職場や公共の場での表示には適さない場合があります。
表示ボタンを押すと表示されます。

'; echo '
'; echo ' '; echo '
'; echo '
'; echo '
'; echo '
'; } echo '

' . replaceEmojisWithImages(processMarkdownAndWrapEmptyLines(replaceURLsWithLinks(nl2br(safetext($this->value['ueuse']))))) . '

'; echo '
'; if($org_ueuse['nsfw'] === "true"){ echo '
'; echo '

NSFW指定がされている投稿です!
職場や公共の場での表示には適さない場合があります。
表示ボタンを押すと表示されます。

'; echo '
'; echo ' '; echo '
'; echo '
'; echo '
'; echo '
'; } echo ''; echo '

'.processMarkdownAndWrapEmptyLines(replaceEmojisWithImages(replaceURLsWithLinks(nl2br(safetext($org_ueuse['ueuse']))))) . '

'; if($org_ueuse['nsfw'] === "true"){ echo '
'; echo '
'; } echo '
'; if (!empty($this->value['photo4']) && $this->value['photo4'] !== 'none') { echo '
'; echo ' 画像1'; echo ' 画像2'; echo ' 画像3'; echo ' 画像4'; echo '
'; } elseif (!empty($this->value['photo3']) && $this->value['photo3'] !== 'none') { echo '
'; echo ' 画像1'; echo ' 画像2'; echo '
'; echo ' 画像3'; echo '
'; echo '
'; } elseif (!empty($this->value['photo2']) && $this->value['photo2'] !== 'none') { echo '
'; echo ' 画像1'; echo ' 画像2'; echo '
'; } elseif (!empty($this->value['photo1']) && $this->value['photo1'] !== 'none') { echo '
'; echo ' 画像1'; echo '
'; } if (!empty($this->value['video1']) && $this->value['video1'] !== 'none') { echo '
'; echo ' '; echo '
'; }elseif (!empty(YouTube_and_nicovideo_Links($this->value['ueuse']))) { echo '
'; echo ' '.YouTube_and_nicovideo_Links($this->value['ueuse']).''; echo '
'; } if(!($this->value['abi'] == "none")){ echo '
'; echo '
'; echo '

' . replaceProfileEmojiImages(safetext($this->value['username'])) . 'さんが追記しました

'; echo '
'; echo '

'.processMarkdownAndWrapEmptyLines(replaceEmojisWithImages(replaceURLsWithLinks(nl2br(safetext($this->value['abi']))))) . '

'; echo '
追記日時 : '. date("Y年m月d日 H:i", strtotime(safetext($this->value['abidate']))) . '
'; echo '
'; } if($this->value['nsfw'] === "true"){ echo '
'; echo '
'; } echo '
'; echo '
'; $favoriteList = explode(',', $this->value['favorite']); if (in_array($this->userid, $favoriteList)) { echo ''; }else{ echo ''; } echo ''; echo ''.safetext($this->value['reply_count']).''; $bookmarkList = explode(',', $this->value['bookmark']); if (in_array($this->value['uniqid'], $bookmarkList)) { echo ''; }else{ echo ''; } if($this->value['account'] === $this->userid){ if(!($this->value['role'] === "ice")){ if($this->value['abi'] === "none"){ echo ''; } } } echo ''; echo '
'; echo '
'; }else{ //普通のリユーズ---------------------------------------------------------------------------------------------------- //---------------------------------------------------------------------------------------------------------------- //---------------------------------------------------------------------------------------------------------------- echo '

' . replaceProfileEmojiImages(safetext($this->value['username'])) . 'さんがリユーズ

'; echo '
'; echo ' '; echo '
' . replaceProfileEmojiImages(safetext($org_ueuse['username'])) . '
'; echo '
'; echo ' @' . safetext($org_ueuse['account']) . ''; echo '
'; if(!empty($org_ueuse['sacinfo'])){ if($org_ueuse['sacinfo'] === "bot"){ echo '
Bot
'; } } if (false !== strpos($org_ueuse['role'], 'official')) { echo '
'; echo '
'; echo '
'; echo '
'; } echo '
'; $datetime = strtotime(safetext($org_ueuse['datetime'])); $today = strtotime(date("Y-m-d")); $tomorrow = date('Y-m-d', strtotime('+1 day')); if (date("md", $datetime) == "0101") { if (date("Y", $datetime) == date("Y")) { echo "元日 " . date("H:i", $datetime); } else { echo date("Y年m月d日 H:i", $datetime); } } elseif ($datetime >= $tomorrow) { echo date("Y年m月d日 H:i", $datetime) . " (未来)"; } elseif ($datetime >= $today) { echo "今日 " . date("H:i", $datetime); } elseif (date("Y", $datetime) == date("Y")) { echo date("m月d日 H:i", $datetime); } else { echo date("Y年m月d日 H:i", $datetime); } echo '
'; echo '
'; if($org_ueuse['nsfw'] === "true"){ echo '
'; echo '

NSFW指定がされている投稿です!
職場や公共の場での表示には適さない場合があります。
表示ボタンを押すと表示されます。

'; echo '
'; echo ' '; echo '
'; echo '
'; echo '
'; echo '
'; } echo '

' . replaceEmojisWithImages(processMarkdownAndWrapEmptyLines(replaceURLsWithLinks(nl2br(safetext($org_ueuse['ueuse']))))) . '

'; if (!empty($org_ueuse['photo4']) && $org_ueuse['photo4'] !== 'none') { echo '
'; echo ' 画像1'; echo ' 画像2'; echo ' 画像3'; echo ' 画像4'; echo '
'; } elseif (!empty($org_ueuse['photo3']) && $org_ueuse['photo3'] !== 'none') { echo '
'; echo ' 画像1'; echo ' 画像2'; echo '
'; echo ' 画像3'; echo '
'; echo '
'; } elseif (!empty($org_ueuse['photo2']) && $org_ueuse['photo2'] !== 'none') { echo '
'; echo ' 画像1'; echo ' 画像2'; echo '
'; } elseif (!empty($org_ueuse['photo1']) && $org_ueuse['photo1'] !== 'none') { echo '
'; echo ' 画像1'; echo '
'; } if (!empty($org_ueuse['video1']) && $org_ueuse['video1'] !== 'none') { echo '
'; echo ' '; echo '
'; }elseif (!empty(YouTube_and_nicovideo_Links($org_ueuse['ueuse']))) { echo '
'; echo ' '.YouTube_and_nicovideo_Links($org_ueuse['ueuse']).''; echo '
'; } if(!($org_ueuse['abi'] == "none")){ echo '
'; echo '
'; echo '

' . replaceProfileEmojiImages(safetext($org_ueuse['username'])) . 'さんが追記しました

'; echo '
'; echo '

'.processMarkdownAndWrapEmptyLines(replaceEmojisWithImages(replaceURLsWithLinks(nl2br(safetext($org_ueuse['abi']))))) . '

'; echo '
追記日時 : '. date("Y年m月d日 H:i", strtotime(safetext($org_ueuse['abidate']))) . '
'; echo '
'; } if($org_ueuse['nsfw'] === "true"){ echo '
'; echo '
'; } echo '
'; echo '
'; $favoriteList = explode(',', $org_ueuse['favorite']); if (in_array($this->userid, $favoriteList)) { echo ''; }else{ echo ''; } if ($this->userid == $this->value["account"]) { echo ''; }else{ echo ''; } echo ''.safetext($org_ueuse['reply_count']).''; $bookmarkList = explode(',', $org_ueuse['bookmark']); if (in_array($org_ueuse['uniqid'], $bookmarkList)) { echo ''; }else{ echo ''; } if($org_ueuse['account'] === $this->userid){ if(!($org_ueuse['role'] === "ice")){ if($org_ueuse['abi'] === "none"){ echo ''; } } } echo ''; echo '
'; echo ''; } }else{ if(!(empty($this->value['ueuse']))){ //引用リユーズで引用元が消えた場合------------------------------------------------------------------------------------- //---------------------------------------------------------------------------------------------------------------- //---------------------------------------------------------------------------------------------------------------- echo '
'; echo ' '; echo '
' . replaceProfileEmojiImages(safetext($this->value['username'])) . '
'; echo '
'; echo ' @' . safetext($this->value['account']) . ''; echo '
'; if(!empty($this->value['sacinfo'])){ if($this->value['sacinfo'] === "bot"){ echo '
Bot
'; } } if (false !== strpos($this->value['role'], 'official')) { echo '
'; echo '
'; echo '
'; echo '
'; } echo '
'; $datetime = strtotime(safetext($this->value['datetime'])); $today = strtotime(date("Y-m-d")); $tomorrow = date('Y-m-d', strtotime('+1 day')); if (date("md", $datetime) == "0101") { if (date("Y", $datetime) == date("Y")) { echo "元日 " . date("H:i", $datetime); } else { echo date("Y年m月d日 H:i", $datetime); } } elseif ($datetime >= $tomorrow) { echo date("Y年m月d日 H:i", $datetime) . " (未来)"; } elseif ($datetime >= $today) { echo "今日 " . date("H:i", $datetime); } elseif (date("Y", $datetime) == date("Y")) { echo date("m月d日 H:i", $datetime); } else { echo date("Y年m月d日 H:i", $datetime); } echo '
'; echo '
'; if($this->value['nsfw'] === "true"){ echo '
'; echo '

NSFW指定がされている投稿です!
職場や公共の場での表示には適さない場合があります。
表示ボタンを押すと表示されます。

'; echo '
'; echo ' '; echo '
'; echo '
'; echo '
'; echo '
'; } echo '

' . replaceEmojisWithImages(processMarkdownAndWrapEmptyLines(replaceURLsWithLinks(nl2br(safetext($this->value['ueuse']))))) . '

'; echo '
'; echo '

リユーズ元のユーズは削除されました。

'; echo '
'; if (!empty($this->value['photo4']) && $this->value['photo4'] !== 'none') { echo '
'; echo ' 画像1'; echo ' 画像2'; echo ' 画像3'; echo ' 画像4'; echo '
'; } elseif (!empty($this->value['photo3']) && $this->value['photo3'] !== 'none') { echo '
'; echo ' 画像1'; echo ' 画像2'; echo '
'; echo ' 画像3'; echo '
'; echo '
'; } elseif (!empty($this->value['photo2']) && $this->value['photo2'] !== 'none') { echo '
'; echo ' 画像1'; echo ' 画像2'; echo '
'; } elseif (!empty($this->value['photo1']) && $this->value['photo1'] !== 'none') { echo '
'; echo ' 画像1'; echo '
'; } if (!empty($this->value['video1']) && $this->value['video1'] !== 'none') { echo '
'; echo ' '; echo '
'; }elseif (!empty(YouTube_and_nicovideo_Links($this->value['ueuse']))) { echo '
'; echo ' '.YouTube_and_nicovideo_Links($this->value['ueuse']).''; echo '
'; } if(!($this->value['abi'] == "none")){ echo '
'; echo '
'; echo '

' . replaceProfileEmojiImages(safetext($this->value['username'])) . 'さんが追記しました

'; echo '
'; echo '

'.processMarkdownAndWrapEmptyLines(replaceEmojisWithImages(replaceURLsWithLinks(nl2br(safetext($this->value['abi']))))) . '

'; echo '
追記日時 : '. date("Y年m月d日 H:i", strtotime(safetext($this->value['abidate']))) . '
'; echo '
'; } if($this->value['nsfw'] === "true"){ echo '
'; echo '
'; } echo '
'; echo '
'; $favoriteList = explode(',', $this->value['favorite']); if (in_array($this->userid, $favoriteList)) { echo ''; }else{ echo ''; } echo ''; echo ''.safetext($this->value['reply_count']).''; $bookmarkList = explode(',', $this->value['bookmark']); if (in_array($this->value['uniqid'], $bookmarkList)) { echo ''; }else{ echo ''; } if($this->value['account'] === $this->userid){ if(!($this->value['role'] === "ice")){ if($this->value['abi'] === "none"){ echo ''; } } } echo ''; echo '
'; echo ''; }else{ //普通のリユーズのリユーズ元が消えた場合-------------------------------------------------------------------------------- //---------------------------------------------------------------------------------------------------------------- //---------------------------------------------------------------------------------------------------------------- echo '

' . replaceProfileEmojiImages(safetext($this->value['username'])) . 'さんがリユーズ

'; echo '

リユーズ元のユーズは削除されました。

'; echo '
'; echo '
'; $favoriteList = explode(',', $this->value['favorite']); if (in_array($this->userid, $favoriteList)) { echo ''; }else{ echo ''; } echo ''; echo ''.safetext($this->value['reply_count']).''; $bookmarkList = explode(',', $this->value['bookmark']); if (in_array($this->value['uniqid'], $bookmarkList)) { echo ''; }else{ echo ''; } echo ''; echo '
'; echo ''; } } }else{ //普通のユーズ------------------------------------------------------------------------------------------------------ //---------------------------------------------------------------------------------------------------------------- //---------------------------------------------------------------------------------------------------------------- echo '
'; echo ' '; echo '
' . replaceProfileEmojiImages(safetext($this->value['username'])) . '
'; echo '
'; echo ' @' . safetext($this->value['account']) . ''; echo '
'; if(!empty($this->value['sacinfo'])){ if($this->value['sacinfo'] === "bot"){ echo '
Bot
'; } } if (false !== strpos($this->value['role'], 'official')) { echo '
'; echo '
'; echo '
'; echo '
'; } echo '
'; $datetime = strtotime(safetext($this->value['datetime'])); $today = strtotime(date("Y-m-d")); $tomorrow = date('Y-m-d', strtotime('+1 day')); if (date("md", $datetime) == "0101") { if (date("Y", $datetime) == date("Y")) { echo "元日 " . date("H:i", $datetime); } else { echo date("Y年m月d日 H:i", $datetime); } } elseif ($datetime >= $tomorrow) { echo date("Y年m月d日 H:i", $datetime) . " (未来)"; } elseif ($datetime >= $today) { echo "今日 " . date("H:i", $datetime); } elseif (date("Y", $datetime) == date("Y")) { echo date("m月d日 H:i", $datetime); } else { echo date("Y年m月d日 H:i", $datetime); } echo '
'; echo '
'; if($this->value['nsfw'] === "true"){ echo '
'; echo '

NSFW指定がされている投稿です!
職場や公共の場での表示には適さない場合があります。
表示ボタンを押すと表示されます。

'; echo '
'; echo ' '; echo '
'; echo '
'; echo '
'; echo '
'; } echo '

' . replaceEmojisWithImages(processMarkdownAndWrapEmptyLines(replaceURLsWithLinks(nl2br(safetext($this->value['ueuse']))))) . '

'; if (!empty($this->value['photo4']) && $this->value['photo4'] !== 'none') { echo '
'; echo ' 画像1'; echo ' 画像2'; echo ' 画像3'; echo ' 画像4'; echo '
'; } elseif (!empty($this->value['photo3']) && $this->value['photo3'] !== 'none') { echo '
'; echo ' 画像1'; echo ' 画像2'; echo '
'; echo ' 画像3'; echo '
'; echo '
'; } elseif (!empty($this->value['photo2']) && $this->value['photo2'] !== 'none') { echo '
'; echo ' 画像1'; echo ' 画像2'; echo '
'; } elseif (!empty($this->value['photo1']) && $this->value['photo1'] !== 'none') { echo '
'; echo ' 画像1'; echo '
'; } if (!empty($this->value['video1']) && $this->value['video1'] !== 'none') { echo '
'; echo ' '; echo '
'; }elseif (!empty(YouTube_and_nicovideo_Links($this->value['ueuse']))) { echo '
'; echo ' '.YouTube_and_nicovideo_Links($this->value['ueuse']).''; echo '
'; } if(!($this->value['abi'] == "none")){ echo '
'; echo '
'; echo '

' . replaceProfileEmojiImages(safetext($this->value['username'])) . 'さんが追記しました

'; echo '
'; echo '

'.processMarkdownAndWrapEmptyLines(replaceEmojisWithImages(replaceURLsWithLinks(nl2br(safetext($this->value['abi']))))) . '

'; echo '
追記日時 : '. date("Y年m月d日 H:i", strtotime(safetext($this->value['abidate']))) . '
'; echo '
'; } if($this->value['nsfw'] === "true"){ echo '
'; echo '
'; } echo '
'; echo '
'; $favoriteList = explode(',', $this->value['favorite']); if (in_array($this->userid, $favoriteList)) { echo ''; }else{ echo ''; } echo ''; echo ''.safetext($this->value['reply_count']).''; $bookmarkList = explode(',', $this->value['bookmark']); if (in_array($this->value['uniqid'], $bookmarkList)) { echo ''; }else{ echo ''; } if($this->value['account'] === $this->userid){ if(!($this->value['role'] === "ice")){ if($this->value['abi'] === "none"){ echo ''; } } } echo ''; echo '
'; echo ''; } } } } ?>