<?php

include dirname(__FILE__) . '/nocache.php';

include dirname(__FILE__) . '/session.php';
include dirname(__FILE__) . '/dbconfig.php';
include dirname(__FILE__) . '/utils.php';

$INVALID_CHARS = "\\/:*?\"<>|";

function isvalid($c) {
  global $INVALID_CHARS;
  $o = ord($c);
  if ($o < 0x20 || $o >= 0x7f) {
    return false;
  }
  if (strchr($INVALID_CHARS, $o) !== FALSE) {
    return false;
  }
  return true;
}

function check() {
if ($_SERVER['REQUEST_METHOD'] != 'POST') {
  exit(0);
}
check_session();

$locale = getCurrentLang();

$options = array(PDO::MYSQL_ATTR_INIT_COMMAND=>"SET CHARACTER SET 'utf8'");
$dbh = new PDO(DB_DSN, DB_USER, DB_PASSWORD, $options);

$dbh->setAttribute(PDO::ATTR_ERRMODE, PDO::ERRMODE_EXCEPTION);

$sql = "SELECT u.member_id,ftp.*,IFNULL((SELECT 1 FROM DUAL WHERE EXISTS(SELECT * FROM activation as a WHERE a.used=u.id AND a.del_flg='0' AND a.start_date <= NOW() AND NOW() < a.end_date)), CASE WHEN NOW() < u.freeend_date THEN 1 ELSE 0 END) as active, u.exp_flg FROM ftp INNER JOIN userdata as u ON u.id=ftp.id WHERE u.id=? AND u.del_flg='0'";
$stmt = $dbh->prepare($sql);
$stmt->execute(array($_SESSION['usr_id']));

$account = $stmt->fetch(PDO::FETCH_ASSOC);

if ($account['active'] == 0 || $account['exp_flg'] == 1) {
  echo json_encode(array('error' => _('アカウントの有効期限切れのためフォルダの作成はできません')));
  return;
}

$top = $account['dir'];
if (empty($top)) {
  $top = '/var/www/html';
}

$member_id = $account['member_id'];

$data = file_get_contents('php://input');
$params = json_decode($data, true);
$dir = $params['dir'];
$folder = trim($params['folder']);
if (is_null($folder) || $folder == '') {
  echo json_encode(array('error' => _('使用できない文字が使われています')));
  return;
}
if ($folder == '-' || $folder == '_') {
  echo json_encode(array('error' => _('使用できない文字が使われています')));
  return;
}

$len=strlen($folder);
for($i=0;$i<$len;$i++){
  $c = substr($folder,$i,1);
  if (!isvalid($c)) {
    echo json_encode(array('error' => _('使用できない文字が使われています')));
    return;
  }
}
if ($len >= 256) {
  echo json_encode(array('error' => _('フォルダ名が255文字を超えるフォルダの作成はできません')));
  return;
}

$req = array( 'cmd' => 'mkdir', 'top' => $top, 'dir' => $dir, 'folder' => $folder, 'locale' => $locale );
$contents = call_api($req);

include dirname(__FILE__) . '/update_info.php';

echo $contents;
}

header('Content-Type: application/json');
wrap('check');

