Capsule cockpit used by pollux.casa. Permits to hosted members to manage their capsule
You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.

100 lines
2.3 KiB

#!/usr/bin/php
<?php
/**
* This file is part of the Pollux.casa cockpit
*
* Source is available here: https://codeberg.org/pollux.casa/cockpit
*
* @license GNU/AGPLv3 https://www.gnu.org/licenses/agpl-3.0.html
* see joined LICENSE file
*
* @author Adële <gemini://adele.work/>
*
**/
require_once('config.php');
require_once('phpgmi/phpgmi.inc.php');
class member_index extends phpgmiPage
{
// array of User Info
private $UserInfo;
private $favicon;
private $badtz = false;
function init()
{
// Ensure user is browsing with a known certificate
$this->requireAuth();
// load known UserInfo parameters
$this->UserInfo = $this->getWorkingData("UserInfo");
// default value
if(!isset($this->UserInfo['lang']))
$this->UserInfo['lang'] = '';
if(!isset($this->UserInfo['country']))
$this->UserInfo['country'] = '';
if(!isset($this->UserInfo['timezone']))
$this->UserInfo['timezone'] = 'UTC';
$this->favicon = mb_substr(@file_get_contents($this->getCapsulePath().'/favicon.txt'),0,1);
if(empty($this->favicon))
$this->favicon = "🚀";
}
// manage actions
function actionDone($action, $name, $value, $parameters)
{
// Update UserInfo
if($action=='input' && $name=='lang')
$this->UserInfo[$name] = trim($value);
if($action=='input' && $name=='country')
$this->UserInfo[$name] = trim($value);
if($action=='input' && $name=='timezone')
{
if(in_array($value, timezone_identifiers_list()))
$this->UserInfo[$name] = trim($value);
else
$this->badtz = true;
}
if($action=='input' && $name=='favicon')
$this->favicon = mb_substr(trim($value),0,1);
}
// Build page
function build()
{
$this->add("# Hello ".$this->getUser());
$this->addLinkRequestInput('favicon', "Change your favicon emoji: ".$this->favicon);
$this->addLinkRequestInput('timezone', "Change your timezone: ".$this->UserInfo['timezone']);
$this->addLink("tinylog/", "Manage your Tinylog");
if($this->badtz)
{
$this->add("");
$this->add("## Timezone must be in this list :");
foreach(timezone_identifiers_list() as $tz)
$this->add("* ".$tz);
}
}
// Save data
function save()
{
if(!empty($this->getUser()))
{
$this->saveWorkingData('UserInfo', $this->UserInfo);
@file_put_contents($this->getCapsulePath().'/favicon.txt', $this->favicon);
}
}
}
$page = new member_index();