<?php
//
// BBWA
// submit.php
// 新規画像を投稿する
// Teppei KAKU <teppei@sat.co.jp>
//

include("variables.php");
include("functions.php");

// 縮小後の画像サイズを得る
function getNewSize($upImg, $refSize) {
  $imgSize = getimagesize($upImg);
  if ($imgSize[0] > $refSize || $imgSize[1] > $refSize) {
    if($imgSize[0] >= $imgSize[1]) {
      $newSize[0] = $refSize;
      $newSize[1] = $imgSize[1] * $refSize / $imgSize[0];
    } else {
      $newSize[0] = $imgSize[0] * $refSize / $imgSize[1];
      $newSize[1] = $refSize;
    }
  } else {
    $newSize[0] = $imgSize[0];
    $newSize[1] = $imgSize[1];
  }

  return $newSize;
}

// フォームの入力値をチェックする
if ($adminOnly && trim($_POST['userPass']) != $adminPass) {
  printHtml("エラー: パスワードが違います",
    "JavaScript:history.back()", "");
}
if (trim($_POST['name']) == "") {
  printHtml("エラー: 名前を入力してください",
    "JavaScript:history.back()", "");
} else {
  $mesName = mb_convert_encoding($_POST['name'], "EUC-JP", "auto");
}
if (trim($_POST['userPass']) == "") {
  printHtml("エラー: パスワードを入力してください",
    "JavaScript:history.back()", "");
} elseif (ereg("[^a-zA-Z0-9]", $_POST['userPass'])) {
  printHtml("エラー: パスワードに使用できない文字が含まれています",
    "JavaScript:history.back()", "");
} else {
  $mesPass = $_POST['userPass'];
}

// ファイルをアップロードする
if ($_FILES['fileName']['tmp_name'] != "") {
  if ($_FILES['fileName']['size'] > ($maxFileSize * 1024)) {
    printHtml("エラー: ファイルサイズが大きすぎます",
      "JavaScript:history.back()", "");
  }
  $imgType = ($_FILES['fileName']['type']);
  if (eregi("jpeg", $imgType)) {
    $suffix = ".jpg";
  } elseif (eregi("gif", $imgType)) {
    $suffix = ".gif";
  } elseif (eregi("png", $imgType)) {
    $suffix = ".png";
  } else {
    printHtml("エラー: 未対応の画像フォーマットです",
      "JavaScript:history.back()", "");
  } 
  $upImg = $_FILES['fileName']['tmp_name'];

  if (trim($_POST['title']) == "") {
    $mesTitle = "タイトルなし";
  } else {
    $mesTitle = mb_convert_encoding($_POST['title'], "EUC-JP", "auto");
  }
  if (trim($_POST['email']) == "") {
    $mesMail = "NOMAIL";
  } else {
    $mesMail = mb_convert_encoding($_POST['email'], "EUC-JP", "auto");
  }
  if (trim($_POST['comment']) == "") {
    $mesCom = "NOCOM";
  } else {
    $mesCom = mb_convert_encoding($_POST['comment'], "EUC-JP", "auto");
    $mesCom = eregi_replace("\r\n|\r|\n", "{{BR}}", $mesCom);
    $mesCom = eregi_replace("<", "{{LT}}", $mesCom);
    $mesCom = eregi_replace(">", "{{GT}}", $mesCom);
  }

  while(true) {
    $newTime = date("YmdHis");
    $newName = $dirName . $newTime . $suffix;

    if (file_exists($newName)) {
      continue;
    } else {
      $imgSize = getimagesize($upImg);
      $newSize = getNewSize($upImg, $thumbSize);

      $mesTime = date("Y/n/j G:i:s");
      $mesText = "${newSize[0]}|||${newSize[1]}|||${mesTitle}|||${mesName}|||" .
        "${mesMail}|||${mesTime}|||${mesPass}|||{$mesCom}\n";

      $filePtr = fopen("${dirName}Messages/${newTime}${suffix}_mes.txt", "w");
      fwrite($filePtr, $mesText);
      fclose($filePtr);

      // インデックスに追加
      $listTime = time();
      $listText = "${newTime}${suffix}|||${listTime}|||0|||0\n";
      $filePtr = fopen("${dirName}INDEX", "a");
      while (!flock($filePtr, LOCK_EX)) {};
      fwrite($filePtr, $listText);
      flock($filePtr, LOCK_UN);
      fclose($filePtr);

      if ($_POST['useCookie'] == "true") {
        setcookie("NAME", $mesName, mktime(0,0,0,1,1,2030));
        setcookie("PASS", $mesPass, mktime(0,0,0,1,1,2030));
        if ($mesMail == "NOMAIL") {
          setcookie("EMAIL", "", time() - 3600);
        } else {
          setcookie("EMAIL", $mesMail, mktime(0,0,0,1,1,2030));
        }
      } else {
        setcookie("NAME", "", time() - 3600);
        setcookie("PASS", "", time() - 3600);
        setcookie("EMAIL", "", time() - 3600);
      }

      if ($suffix == ".jpg") {
        $imgSrc = imagecreatefromjpeg($upImg);
        if ($_POST['newAuto'] == "true") {
          $newAutoSize = getNewSize($upImg, $autoSize);
          $autoDist = imagecreatetruecolor($newAutoSize[0], $newAutoSize[1]);
          imagecopyresampled($autoDist, $imgSrc, 0, 0, 0, 0,
          $newAutoSize[0], $newAutoSize[1], $imgSize[0], $imgSize[1]);
          imagejpeg($autoDist, $newName, 90);
        } else {
          copy($upImg, $newName);
        }
      } elseif ($suffix == ".png") {
        $imgSrc = imagecreatefrompng($upImg);
        copy($upImg, $newName);
      } elseif ($suffix == ".gif") {
        copy($upImg, $newName);
        printHtml("新規イメージを投稿しました",
          "right.php?img=${newTime}${suffix}",
          "NEW");
      }

      $imgDist = imagecreatetruecolor($newSize[0], $newSize[1]);
      imagecopyresampled($imgDist, $imgSrc, 0, 0, 0, 0,
        $newSize[0], $newSize[1], $imgSize[0], $imgSize[1]);

      imagejpeg($imgDist, $dirName . "Thumbnails/" .
        $newTime . $suffix . "_thumb.jpg", $quality);

      printHtml("新規イメージを投稿しました",
        "right.php?img=${newTime}${suffix}",
        "NEW");
    }
  }
} else {
  printHtml("エラー: 投稿するファイルを指定してください",
    "JavaScript:history.back()", "");
}
?>
