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