DELETE `Tokens`, `TokenValues` FROM `Tokens` NATURAL JOIN `TokenValues` WHERE `Tokens`.`tokenId` = {$delete} AND `poolId` = {$poolId}; EOS ); if (!Topos::mysqli()->affected_rows) { throw new Exception("Token {$deleteTokenId} not found", REST::HTTP_NOT_FOUND); } } catch (Exception $e) { Topos::real_query("DELETE FROM `Tokens` WHERE `tokenId` = {$tokenId};"); REST::fatal($e->getCode(), $e->getMessage()); } } $tokenURL = Topos::urlbase() . 'pools/' . REST::urlencode($TOPOS_POOL) . '/tokens/' . $tokenId; REST::created($tokenURL); } REST::require_method('HEAD', 'GET'); $nameClause = is_string(@$_GET['name']) && strlen($_GET['name']) ? "AND MATCH(`tokenName`) AGAINST (" . Topos::escape_string($_GET['name']) . " IN BOOLEAN MODE)" : ''; if ((int) @$_GET['timeout'] > 0) { $timeout = (int) $_GET['timeout']; if ($timeout < 1) { REST::fatal(REST::HTTP_BAD_REQUEST, 'Illegal value for parameter "timeout"'); } $escDescription = isset($_GET['description']) ? Topos::escape_string((string) $_GET['description']) : "''"; $lockUUID = Topos::uuid(); $timeout = <<<EOS , `tokenLockTimeout` = UNIX_TIMESTAMP() + {$timeout} , `tokenLockUUID` = '{$lockUUID}' , `tokenLockDescription` = {$escDescription} EOS;
if ($_SERVER['REQUEST_METHOD'] === 'PUT' && @$_GET['mode'] === 'create' && $handle->read()) { REST::fatal(REST::HTTP_PRECONDITION_FAILED, 'Handle exists.'); } elseif ($_SERVER['REQUEST_METHOD'] === 'PUT' && @$_GET['mode'] === 'update' && !$handle->delete()) { REST::fatal(REST::HTTP_PRECONDITION_FAILED, 'Handle doesn\'t exist.'); } else { $handle->delete(); } // Store the data... $handle->create(); // and return the proper response: switch ($_SERVER['REQUEST_METHOD']) { case 'PUT': REST::fatal(REST::HTTP_OK); break; case 'POST': REST::created(REST::urlbase() . CP::PORTAL_URL . urlencode($CP_PREFIX) . '/' . urlencode($CP_SUFFIX)); break; default: // this shouldn't happen REST::fatal(REST::HTTP_INTERNAL_SERVER_ERROR); } } elseif ($_SERVER['REQUEST_METHOD'] === 'DELETE') { $handle = new CP_Handle("{$CP_PREFIX}/{$CP_SUFFIX}"); REST::fatal($handle->delete() ? REST::HTTP_OK : REST::HTTP_NOT_FOUND); } else { // If we're here, the request method should be GET or HEAD. Otherwise, quit: REST::require_method('GET', 'HEAD'); // Create a CP_Handle object... $handle = new CP_Handle("{$CP_PREFIX}/{$CP_SUFFIX}"); // and read its contents from the database. If it's not there... if (!$handle->read()) {
EOS ); exec("cd '{$sandbox}'; find -mindepth 1 -maxdepth 1 -print0 | xargs -0 tar zcf {$TEMPNAM}.tgz", $output, $return_var); if ($return_var) { $output = implode("\n", $output); REST::fatal(REST::HTTP_INTERNAL_SERVER_ERROR, $output); } $tokenhandle = fopen("{$TEMPNAM}.tgz", 'r'); try { $token_url = Topos::putTokenFile($tokenhandle, 'application/x-compressed-tar'); } catch (Exception $e) { fclose($tokenhandle); throw $e; } fclose($tokenhandle); $token_id = basename($token_url); Portal_MySQL::real_query(<<<EOS INSERT INTO `Token` ( `token_id`, `user_id` ) VALUES ( {$token_id}, {$user_id} ); EOS ); $resultURL = REST::urlbase() . Portal::portalURL() . "jobstates/{$token_id}"; REST::created($resultURL); } Portal_User::current(); REST::header(array('Content-Type' => REST::best_xhtml_type())); echo Portal::html_start("{$appname}-{$appversion}") . '<form action="' . $appversion . '" method="post" enctype="multipart/form-data">'; $portlet->doGET(); echo '</form>' . Portal::html_end();