コード例 #1
0
ファイル: index.php プロジェクト: Devenet/MyBooks
function importPage()
{
    if (!isLogged()) {
        header('Location: ' . Path::signin() . '&target=import');
        exit;
    }
    global $tpl;
    if (isset($_GET['imported'])) {
        $tpl->assign('imported', TRUE);
    } else {
        if (!empty($_FILES)) {
            if (!empty($_POST['token']) && acceptToken($_POST['token'])) {
                try {
                    $ext_array = explode('.', $_FILES['file']['name']);
                    $extension = end($ext_array);
                    $mime = $_FILES['file']['type'];
                    // check extension et mime type
                    if ($extension != 'json') {
                        throw new \Exception('<br />Extension of the file is not allowed! Please import a JSON file.');
                    }
                    if (!($mime == 'application/octet-stream' || $mime == 'application/json')) {
                        throw new \Exception('<br />MIME type of the file is not allowed! Please import a JSON file.');
                    }
                    $file = file_get_contents($_FILES['file']['tmp_name']);
                    if (!$file) {
                        throw new \Exception('An error occured while reading the file.');
                    }
                    $result = Books::import($file, isset($_POST['keep_ids']), isLogged());
                    if (!$result) {
                        throw new \Exception('An error occured while importing the file.');
                    }
                    header('Location: ' . Path::import() . '&imported');
                    exit;
                } catch (\Exception $e) {
                    $tpl->assign('error', $e->getMessage());
                }
            } else {
                errorPage('The received token was empty or invalid.', 'Invalid security token');
            }
        }
    }
    $tpl->assign('page_title', 'Import books');
    $tpl->assign('menu_links', Path::menu('import'));
    $tpl->assign('menu_links_admin', Path::menuAdmin('admin'));
    $tpl->assign('token', getToken());
    $tpl->draw('admin.import');
    exit;
}