<?php
require "${_SERVER['DOCUMENT_ROOT']}/database.php";


define ('SAVE_DIR', "${_SERVER['DOCUMENT_ROOT']}/images/");  // 保存ディレクトリ定義

$thread = $_GET['thread'];
// file_put_contents ('log.txt', $thread);

$json = getParamJSON ();  // JSON パラメタ

// JSON に data メトッドがなぃ場合
if (!(isset ($json['data']))):
    sendResult (false, 'Empty query Parameter: data');
    exit (1);
endif;

// 適切な画像形式が示されてゐなぃ場合
if (!(preg_match ('/^data:image\/png;base64,/', $json['data']))):
    sendResult (false, 'Not Allow data type: data');
    exit (1);
endif;

// 画像ディタをデコゥド
$data = $json['data'];
$data = str_replace ('data:image/png;base64,', '', $data);
$data = str_replace (' ', '+', $data);
$image = base64_decode ($data);

$file = sprintf ('%s.png', uniqid ());                  // ファイル名をタイマを基準に設定
file_put_contents (SAVE_DIR . $file, $image, LOCK_EX);  // 画像をファイルに保存

$mysqli = set_mysql ('miteruzo_bbs');  // ディタ・べィス指定

$mysqli -> set_charset ('utf8');

// スレのレス数を取得し，適切なレス番を設定する．
if ($result = $mysqli -> query ("
        SELECT
          length
        FROM
          threads
        WHERE
          id = $thread")):
    $row = $result -> fetch_assoc ();

    $id = $row['length'] + 1;

    $result -> close ();  // クヱリ結果を閉ぢる．
endif;

if ($_GET['held']):
    mb_language ('Japanese');
    mb_internal_encoding ('UTF-8');
    mb_send_mail ('matuda.miteruzo@gmail.com', 'キケッツ掲示板の画像確認しろ!', '何か，保留中なうみ．', '謎');
endif;

// 投稿情報に従ひ，ディタ・ベィスを更新
$sql = "INSERT INTO
          responses (thread_id, response_id, name, pass, message, date, image, held,
                     deleted)
          VALUES
            ($thread, $id, '" . (($_GET['name'] == '') ? '名なしさん' : $_GET['name']) . "',
             " . (($_GET['pass'] == '') ? "NULL" : "'{$_GET['pass']}'") . ", '', '" . date ('Y-m-d H:i:s') . "', '$file', {$_GET['held']}, 0)";
$mysqli -> query ($sql);
$mysqli -> query ("
        UPDATE
          threads
        SET
          length = $id, latest = '" . date ('Y-m-d H:i:s') . "' WHERE id = $thread");

$mysqli -> close ();  // ディタ・べィスを閉ぢる．

unlink ('draft/' . $_COOKIE['backup']);
setcookie ('backup', '', 0);


/*
 * フェッチ内容から JSON パラメタを取得する．
 *
 * 戻り値は，取得した JSON パラメタ．
 */
function
getParamJSON ()
{
  $buff = file_get_contents ('php://input');
  $json = json_decode ($buff, true);

  return ($json);
}


/*
 * クヱリ送信者に，結果を返す．
 * $status：結果フラグ，$data：返信ディタ
 *
 * 戻り値は，なし．
 */
function
sendResult ($status, $data)
{
  header ('Access-Control-Allow-Origin: *');
  header ('Access-Control-Allow-Headers: *');

  echo json_encode(["status" => $status,
                    "result" => $data]);
}

