Exemple #1
0
function apiCloneLab($p, $tenant)
{
    $rc = checkFolder(BASE_LAB . dirname($p['source']));
    if ($rc === 2) {
        // Folder is not valid
        $output['code'] = 400;
        $output['status'] = 'fail';
        $output['message'] = $GLOBALS['messages'][60009];
        return $output;
    } else {
        if ($rc === 1) {
            // Folder does not exist
            $output['code'] = 404;
            $output['status'] = 'fail';
            $output['message'] = $GLOBALS['messages'][60008];
            return $output;
        }
    }
    if (!is_file(BASE_LAB . $p['source'])) {
        $output['code'] = 400;
        $output['status'] = 'fail';
        $output['message'] = $GLOBALS['messages'][60000];
        return $output;
    }
    if (!copy(BASE_LAB . $p['source'], BASE_LAB . dirname($p['source']) . '/' . $p['name'] . '.unl')) {
        // Failed to copy
        $output['code'] = 400;
        $output['status'] = 'fail';
        $output['message'] = $GLOBALS['messages'][60037];
        error_log(date('M d H:i:s ') . 'ERROR: ' . $GLOBALS['messages'][60037]);
        return $output;
    }
    try {
        $lab = new Lab(BASE_LAB . dirname($p['source']) . '/' . $p['name'] . '.unl', $tenant);
    } catch (Exception $e) {
        // Lab file is invalid
        $output['code'] = 400;
        $output['status'] = 'fail';
        $output['message'] = $GLOBALS['messages'][$e->getMessage()];
        $app->response->setStatus($output['code']);
        $app->response->setBody(json_encode($output));
        return;
    }
    $rc = $lab->edit($p);
    $lab->setId();
    if ($rc !== 0) {
        $output['code'] = 400;
        $output['status'] = 'fail';
        $output['message'] = $GLOBALS['messages'][$rc];
    } else {
        $output['code'] = 200;
        $output['status'] = 'success';
        $output['message'] = $GLOBALS['messages'][60036];
    }
    return $output;
}