Merge branch 'feature/terminate-vps' into develop
commit
eb63c49ded
@ -0,0 +1,43 @@
|
||||
<?php
|
||||
/*
|
||||
* CVM is more free software. It is licensed under the WTFPL, which
|
||||
* allows you to do pretty much anything with it, without having to
|
||||
* ask permission. Commercial use is allowed, and no attribution is
|
||||
* required. We do politely request that you share your modifications
|
||||
* to benefit other developers, but you are under no enforced
|
||||
* obligation to do so :)
|
||||
*
|
||||
* Please read the accompanying LICENSE document for the full WTFPL
|
||||
* licensing text.
|
||||
*/
|
||||
|
||||
if(!isset($_APP)) { die("Unauthorized."); }
|
||||
|
||||
class Setting extends CPHPDatabaseRecordClass
|
||||
{
|
||||
public $table_name = "settings";
|
||||
public $fill_query = "SELECT * FROM settings WHERE `Id` = :Id";
|
||||
public $verify_query = "SELECT * FROM settings WHERE `Id` = :Id";
|
||||
|
||||
public $prototype = array(
|
||||
'string' => array(
|
||||
"Key" => "Key",
|
||||
"Value" => "Value"
|
||||
),
|
||||
'timestamp' => array(
|
||||
"LastChanged" => "LastChanged"
|
||||
)
|
||||
);
|
||||
|
||||
public static function ByKey($key, $cache_duration = 60)
|
||||
{
|
||||
return Setting::CreateFromQuery("SELECT * FROM settings WHERE `Key` = :Key", array(":Key" => $key), $cache_duration, true);
|
||||
}
|
||||
|
||||
public function ChangeValue($value)
|
||||
{
|
||||
$this->uValue = $value;
|
||||
$this->uLastChanged = time();
|
||||
$this->InsertIntoDatabase();
|
||||
}
|
||||
}
|
@ -0,0 +1,77 @@
|
||||
<?php
|
||||
/*
|
||||
* CVM is more free software. It is licensed under the WTFPL, which
|
||||
* allows you to do pretty much anything with it, without having to
|
||||
* ask permission. Commercial use is allowed, and no attribution is
|
||||
* required. We do politely request that you share your modifications
|
||||
* to benefit other developers, but you are under no enforced
|
||||
* obligation to do so :)
|
||||
*
|
||||
* Please read the accompanying LICENSE document for the full WTFPL
|
||||
* licensing text.
|
||||
*/
|
||||
|
||||
if(!isset($_APP)) { die("Unauthorized."); }
|
||||
|
||||
try
|
||||
{
|
||||
$sUser->RequireAccessLevel(30);
|
||||
|
||||
$sVps = new Vps($router->uParameters[1]);
|
||||
|
||||
if(isset($_POST['submit']))
|
||||
{
|
||||
if($_POST['action'] == "terminate")
|
||||
{
|
||||
$sVps->Terminate();
|
||||
|
||||
$sMainContents .= NewTemplater::Render("{$sTheme}/shared/error/success", $locale->strings, array(
|
||||
'title' => $locale->strings['error-terminate-success-title'],
|
||||
'message' => $locale->strings['error-terminate-success-text']
|
||||
));
|
||||
}
|
||||
elseif($_POST['action'] == "unterminate")
|
||||
{
|
||||
$sVps->Unterminate();
|
||||
|
||||
$sMainContents .= NewTemplater::Render("{$sTheme}/shared/error/success", $locale->strings, array(
|
||||
'title' => $locale->strings['error-unterminate-success-title'],
|
||||
'message' => $locale->strings['error-unterminate-success-text']
|
||||
));
|
||||
}
|
||||
|
||||
$sVps->RefreshData();
|
||||
|
||||
/* TODO: Flash message and redirect to VPS lookup page. */
|
||||
}
|
||||
|
||||
$sTerminated = ($sVps->sStatus == CVM_STATUS_TERMINATED) ? true : false;
|
||||
|
||||
$sPageContents = NewTemplater::Render("{$sTheme}/admin/vps/terminate", $locale->strings, array(
|
||||
'id' => $sVps->sId,
|
||||
'terminated' => $sTerminated,
|
||||
'can-unterminate' => !$sVps->IsTerminated
|
||||
));
|
||||
}
|
||||
catch (NotFoundException $e)
|
||||
{
|
||||
$sMainContents .= NewTemplater::Render("{$sTheme}/shared/error/error", $locale->strings, array(
|
||||
'title' => $locale->strings['error-notfound-title'],
|
||||
'message' => $locale->strings['error-notfound-text']
|
||||
));
|
||||
}
|
||||
catch (VpsTerminateException $e)
|
||||
{
|
||||
$sMainContents .= NewTemplater::Render("{$sTheme}/shared/error/error", $locale->strings, array(
|
||||
'title' => $locale->strings['error-terminate-error-title'],
|
||||
'message' => $locale->strings['error-terminate-error-text']
|
||||
));
|
||||
}
|
||||
catch (VpsUnterminateException $e)
|
||||
{
|
||||
$sMainContents .= NewTemplater::Render("{$sTheme}/shared/error/error", $locale->strings, array(
|
||||
'title' => $locale->strings['error-unterminate-error-title'],
|
||||
'message' => $locale->strings['error-unterminate-error-text']
|
||||
));
|
||||
}
|
||||
|
@ -0,0 +1,18 @@
|
||||
<form method="post" action="/admin/vps/{%?id}/terminate/">
|
||||
{%if terminated == false}
|
||||
<h2>{%!title-admin-vps-terminate}</h2>
|
||||
<p>{%!vps-admin-terminate-text}</p>
|
||||
<input type="hidden" name="action" value="terminate">
|
||||
<button type="submit" name="submit" class="padded">{%!button-admin-vps-terminate}</button>
|
||||
{%else}
|
||||
{%if can-unterminate == true}
|
||||
<h2>{%!title-admin-vps-unterminate}</h2>
|
||||
<p>{%!vps-admin-unterminate-text}</p>
|
||||
<input type="hidden" name="action" value="unterminate">
|
||||
<button type="submit" name="submit" class="padded">{%!button-admin-vps-unterminate}</button>
|
||||
{%else}
|
||||
Cannot unterminate
|
||||
{%/if}
|
||||
{%/if}
|
||||
</form>
|
||||
|
@ -0,0 +1,8 @@
|
||||
CREATE TABLE IF NOT EXISTS `settings` (
|
||||
`Id` bigint(20) unsigned NOT NULL AUTO_INCREMENT,
|
||||
`Key` varchar(120) NOT NULL,
|
||||
`Value` text NOT NULL,
|
||||
`LastChanged` timestamp NULL DEFAULT NULL,
|
||||
PRIMARY KEY (`Id`),
|
||||
UNIQUE KEY `Key` (`Key`)
|
||||
) ENGINE=InnoDB DEFAULT CHARSET=utf8;
|
@ -0,0 +1 @@
|
||||
ALTER TABLE `containers` ADD `TerminationDate` TIMESTAMP NULL;
|
@ -0,0 +1 @@
|
||||
ALTER TABLE `containers` ADD `Terminated` BOOLEAN NOT NULL;
|
Loading…
Reference in New Issue