diff --git a/admin_updates.php b/admin_updates.php
index 7ec30c61..850cae80 100644
--- a/admin_updates.php
+++ b/admin_updates.php
@@ -59,70 +59,68 @@ if ($page == 'overview') {
if (isset($_POST['send']) && $_POST['send'] == 'send') {
if ((isset($_POST['update_preconfig']) && isset($_POST['update_changesagreed']) && intval($_POST['update_changesagreed']) != 0) || !isset($_POST['update_preconfig'])) {
- eval("echo \"" . \Froxlor\UI\Template::getTemplate('update/update_start') . "\";");
include_once \Froxlor\Froxlor::getInstallDir() . 'install/updatesql.php';
- $redirect_url = 'admin_index.php';
- eval("echo \"" . \Froxlor\UI\Template::getTemplate('update/update_end') . "\";");
-
\Froxlor\User::updateCounters();
\Froxlor\System\Cronjob::inserttask(\Froxlor\Cron\TaskId::REBUILD_VHOST);
@chmod(\Froxlor\Froxlor::getInstallDir() . '/lib/userdata.inc.php', 0400);
- $successful_update = true;
+ UI::view('install/update.html.twig', [
+ 'checks' => $update_tasks
+ ]);
+ exit;
} else {
$message = '
You have to agree that you have read the update notifications.';
}
}
- if (!$successful_update) {
- $current_version = Settings::Get('panel.version');
- $current_db_version = Settings::Get('panel.db_version');
- if (empty($current_db_version)) {
- $current_db_version = "0";
- }
- $new_version = $version;
- $new_db_version = $dbversion;
+ $current_version = Settings::Get('panel.version');
+ $current_db_version = Settings::Get('panel.db_version');
+ if (empty($current_db_version)) {
+ $current_db_version = "0";
+ }
+ $new_version = $version;
+ $new_db_version = $dbversion;
- $ui_text = $lng['update']['update_information']['part_a'];
- if ($version != $current_version) {
- $ui_text = str_replace('%curversion', $current_version, $ui_text);
- $ui_text = str_replace('%newversion', $new_version, $ui_text);
- } else {
- // show db version
- $ui_text = str_replace('%curversion', $current_db_version, $ui_text);
- $ui_text = str_replace('%newversion', $new_db_version, $ui_text);
- }
- $ui_text .= $lng['update']['update_information']['part_b'];
+ $ui_text = $lng['update']['update_information']['part_a'];
+ if ($version != $current_version) {
+ $ui_text = str_replace('%curversion', $current_version, $ui_text);
+ $ui_text = str_replace('%newversion', $new_version, $ui_text);
+ } else {
+ // show db version
+ $ui_text = str_replace('%curversion', $current_db_version, $ui_text);
+ $ui_text = str_replace('%newversion', $new_db_version, $ui_text);
+ }
+ $ui_text .= $lng['update']['update_information']['part_b'];
- $upd_formfield = [
- 'updates' => [
- 'title' => $lng['update']['update'],
- 'image' => 'fa-solid fa-download',
- 'sections' => [],
- 'buttons' => [
- [
- 'label' => $lng['update']['proceed']
- ]
+ $upd_formfield = [
+ 'updates' => [
+ 'title' => $lng['update']['update'],
+ 'image' => 'fa-solid fa-download',
+ 'description' => $lng['update']['description'],
+ 'sections' => [],
+ 'buttons' => [
+ [
+ 'label' => $lng['update']['proceed']
]
]
- ];
+ ]
+ ];
- include_once \Froxlor\Froxlor::getInstallDir() . '/install/updates/preconfig.php';
- $preconfig = getPreConfig($current_version, $current_db_version);
- if (!empty($preconfig)) {
- $upd_formfield['updates']['sections'] = $preconfig;
- }
-
- UI::view('user/form-note.html.twig', [
- 'formaction' => $linker->getLink(array('section' => 'updates')),
- 'formdata' => $upd_formfield['updates'],
- // alert
- 'type' => !empty($message) ? 'danger' : 'info',
- 'alert_msg' => $ui_text . $message
- ]);
+ include_once \Froxlor\Froxlor::getInstallDir() . '/install/updates/preconfig.php';
+ $preconfig = getPreConfig($current_version, $current_db_version);
+ if (!empty($preconfig)) {
+ $upd_formfield['updates']['sections'] = $preconfig;
}
+
+ UI::view('user/form-note.html.twig', [
+ 'formaction' => $linker->getLink(array('section' => 'updates')),
+ 'formdata' => $upd_formfield['updates'],
+ // alert
+ 'type' => !empty($message) ? 'danger' : 'info',
+ 'alert_msg' => $ui_text . $message
+ ]);
} else {
\Froxlor\UI\Response::standard_success('noupdatesavail');
}
diff --git a/install/lib/updateFunctions.php b/install/lib/updateFunctions.php
index 2b35ee4d..c5466995 100644
--- a/install/lib/updateFunctions.php
+++ b/install/lib/updateFunctions.php
@@ -18,27 +18,24 @@
/**
* Function showUpdateStep
*
- * outputs and logs the current
- * update progress
+ * stores and logs the current update progress
*
- * @param
- * string task/status
- * @param
- * bool needs_status (if false, a linebreak will be added)
+ * @param string $task
+ * @param bool $needs_status (if false, a linebreak will be added)
*
- * @return string formatted output and log-entry
+ * @return void
*/
function showUpdateStep($task = null, $needs_status = true)
{
+ global $update_tasks, $task_counter;
+
set_time_limit(30);
- if (! $needs_status)
- echo "";
// output
- echo $task;
+ $update_tasks[$task_counter] = ['title' => $task, 'result' => 0];
- if (! $needs_status) {
- echo "
";
+ if (!$needs_status) {
+ $task_counter++;
}
\Froxlor\FroxlorLogger::getInstanceOf()->logAction(\Froxlor\FroxlorLogger::ADM_ACTION, LOG_WARNING, $task);
@@ -47,40 +44,39 @@ function showUpdateStep($task = null, $needs_status = true)
/**
* Function lastStepStatus
*
- * outputs [OK] (success), [??] (warning) or [!!] (failure)
- * of the last update-step
+ * outputs status of the last update-step
*
- * @param
- * int status (0 = success, 1 = warning, 2 = failure)
+ * @param int $status (0 = success, 1 = warning, 2 = failure)
+ * @param string $message
+ * @param string $additional_info
*
* @return string formatted output and log-entry
*/
-function lastStepStatus($status = -1, $message = '')
+function lastStepStatus(int $status = -1, string $message = '', string $additional_info = '')
{
+ global $update_tasks, $task_counter;
+
+ $update_tasks[$task_counter]['result_txt'] = $message ?? 'OK';
+ $update_tasks[$task_counter]['result_desc'] = $additional_info ?? '';
+
switch ($status) {
case 0:
- $status_sign = ($message != '') ? '[' . $message . ']' : '[OK]';
- $status_color = 'ok';
break;
case 1:
- $status_sign = ($message != '') ? '[' . $message . ']' : '[??]';
- $status_color = 'warn';
+ $update_tasks[$task_counter]['result'] = 2;
break;
case 2:
- $status_sign = ($message != '') ? '[' . $message . ']' : '[!!]';
- $status_color = 'err';
+ $update_tasks[$task_counter]['result'] = 1;
break;
default:
- $status_sign = '[unknown]';
- $status_color = 'unknown';
+ $update_tasks[$task_counter]['result'] = -1;
break;
}
- // output
- echo "" . $status_sign . "
";
+ $task_counter++;
- if ($status == - 1 || $status == 2) {
+ if ($status == -1 || $status == 2) {
\Froxlor\FroxlorLogger::getInstanceOf()->logAction(\Froxlor\FroxlorLogger::ADM_ACTION, LOG_WARNING, 'Attention - last update task failed!!!');
} elseif ($status == 0 || $status == 1) {
\Froxlor\FroxlorLogger::getInstanceOf()->logAction(\Froxlor\FroxlorLogger::ADM_ACTION, LOG_WARNING, 'Success');
diff --git a/install/updates/froxlor/0.11/update_0.11.inc.php b/install/updates/froxlor/0.11/update_0.11.inc.php
index b3c4bb41..7aafd800 100644
--- a/install/updates/froxlor/0.11/update_0.11.inc.php
+++ b/install/updates/froxlor/0.11/update_0.11.inc.php
@@ -62,8 +62,7 @@ if (\Froxlor\Froxlor::isFroxlorVersion('0.10.99')) {
// none of the files existed
lastStepStatus(0);
} else {
- lastStepStatus(1, 'manual commands needed');
- echo 'Please run the following commands manually:
' . $del_list . '
';
+ lastStepStatus(1, 'manual commands needed', 'Please run the following commands manually:
' . $del_list . '
');
}
}
}
diff --git a/install/updates/preconfig/0.9/preconfig_0.9.inc.php b/install/updates/preconfig/0.9/preconfig_0.9.inc.php
index 05187b04..b6451d1d 100644
--- a/install/updates/preconfig/0.9/preconfig_0.9.inc.php
+++ b/install/updates/preconfig/0.9/preconfig_0.9.inc.php
@@ -553,7 +553,6 @@ function parseAndOutputPreconfig(&$has_preconfig, &$return, $current_version, $c
$has_preconfig = true;
$description = 'The template-variable {PASSWORD} has been replaced with {LINK}. Please update your password reset templates!';
$return['update_template_var_password_changed_note'] = ['type' => 'infotext', 'value' => $description];
- eval("\$return.=\"" . \Froxlor\UI\Template::getTemplate("update/preconfigitem") . "\";");
}
if (versionInUpdate($current_version, '0.9.31-dev5')) {
diff --git a/install/updatesql.php b/install/updatesql.php
index 23936090..b50e7bc0 100644
--- a/install/updatesql.php
+++ b/install/updatesql.php
@@ -16,12 +16,13 @@
* @package Install
*
*/
+
use Froxlor\FroxlorLogger;
require_once __DIR__ . '/lib/updateFunctions.php';
-if (! defined('_CRON_UPDATE')) {
- if (! defined('AREA') || (defined('AREA') && AREA != 'admin') || ! isset($userinfo['loginname']) || (isset($userinfo['loginname']) && $userinfo['loginname'] == '')) {
+if (!defined('_CRON_UPDATE')) {
+ if (!defined('AREA') || (defined('AREA') && AREA != 'admin') || !isset($userinfo['loginname']) || (isset($userinfo['loginname']) && $userinfo['loginname'] == '')) {
header('Location: ../index.php');
exit();
}
@@ -40,18 +41,24 @@ try {
}
if (\Froxlor\Froxlor::isFroxlor()) {
- include_once (\Froxlor\FileDir::makeCorrectFile(dirname(__FILE__) . '/updates/froxlor/0.9/update_0.9.inc.php'));
- include_once (\Froxlor\FileDir::makeCorrectFile(dirname(__FILE__) . '/updates/froxlor/0.10/update_0.10.inc.php'));
+
+ // will be filled and increased by the update include-files below
+ $update_tasks = [];
+ $task_counter = 0;
+
+ include_once(\Froxlor\FileDir::makeCorrectFile(dirname(__FILE__) . '/updates/froxlor/0.9/update_0.9.inc.php'));
+ include_once(\Froxlor\FileDir::makeCorrectFile(dirname(__FILE__) . '/updates/froxlor/0.10/update_0.10.inc.php'));
+ include_once(\Froxlor\FileDir::makeCorrectFile(dirname(__FILE__) . '/updates/froxlor/0.11/update_0.11.inc.php'));
// Check Froxlor - database integrity (only happens after all updates are done, so we know the db-layout is okay)
showUpdateStep("Checking database integrity");
$integrity = new \Froxlor\Database\IntegrityCheck();
- if (! $integrity->checkAll()) {
+ if (!$integrity->checkAll()) {
lastStepStatus(1, 'Monkeys ate the integrity');
showUpdateStep("Trying to remove monkeys, feeding bananas");
- if (! $integrity->fixAll()) {
- lastStepStatus(2, 'Some monkeys just would not move, you should contact team@froxlor.org');
+ if (!$integrity->fixAll()) {
+ lastStepStatus(2, 'failed', 'Some monkeys just would not move, you should contact team@froxlor.org');
} else {
lastStepStatus(0, 'Integrity restored');
}
diff --git a/lib/Froxlor/UI/Paging.php b/lib/Froxlor/UI/Paging.php
deleted file mode 100644
index a4b7950f..00000000
--- a/lib/Froxlor/UI/Paging.php
+++ /dev/null
@@ -1,504 +0,0 @@
- (2003-2009)
- * @author Froxlor team (2010-)
- * @license GPLv2 http://files.froxlor.org/misc/COPYING.txt
- * @package Classes
- *
- */
-
-/**
- * Class to manage paging system
- *
- * @package Functions
- * @deprecated
- */
-class Paging
-{
-
- /**
- * Userinfo
- *
- * @var array
- */
- private $userinfo = array();
-
- /**
- * MySQL-Table
- *
- * @var string
- */
- private $table = '';
-
- /**
- * Fields with description which should be selectable
- *
- * @var array
- */
- private $fields = array();
-
- /**
- * Entries per page
- *
- * @var int
- */
- private $entriesperpage = 0;
-
- /**
- * Number of entries of table
- *
- * @var int
- */
- private $entries = 0;
-
- /**
- * Sortorder, asc or desc
- *
- * @var string
- */
- public $sortorder = 'asc';
-
- /**
- * Sortfield
- *
- * @var string
- */
- public $sortfield = '';
-
- /**
- * Searchfield
- *
- * @var string
- */
- private $searchfield = '';
-
- /**
- * Searchtext
- *
- * @var string
- */
- private $searchtext = '';
-
- /**
- * Pagenumber
- *
- * @var int
- */
- private $pageno = 0;
-
- /**
- * Switch natsorting on/off
- *
- * @var bool
- */
- private $natSorting = false;
-
- private $limit = 0;
-
- /**
- * Class constructor.
- * Loads settings from request or from userdata and saves them to session.
- *
- * @param
- * array userinfo
- * @param
- * string Name of Table
- * @param
- * array Fields, in format array( 'fieldname_in_mysql' => 'field_caption' )
- * @param
- * int *deprecated* entries per page
- * @param
- * bool *deprecated* Switch natsorting on/off (global, affects all calls of sort)
- * @param int $default_field
- * default sorting-field-index
- * @param string $default_order
- * default sorting order 'asc' or 'desc'
- *
- */
- public function __construct($userinfo, $table, $fields, $entriesperpage = 0, $natSorting = false, $default_field = 0, $default_order = 'asc', $limit = 0)
- {
-
- // entries per page and natsorting-flag are not
- // passed as parameter anymore, because these are
- // from the settings anyway
- $entriesperpage = \Froxlor\Settings::Get('panel.paging');
- $natSorting = \Froxlor\Settings::Get('panel.natsorting');
-
- $this->userinfo = $userinfo;
-
- if (! is_array($this->userinfo['lastpaging'])) {
- $this->userinfo['lastpaging'] = json_decode($this->userinfo['lastpaging'], true);
- }
-
- $this->table = $table;
- $this->fields = $fields;
- $this->entriesperpage = $entriesperpage;
- $this->natSorting = $natSorting;
- $checklastpaging = (isset($this->userinfo['lastpaging']['table']) && $this->userinfo['lastpaging']['table'] == $this->table);
- $this->userinfo['lastpaging']['table'] = $this->table;
-
- if (isset($_REQUEST['sortorder']) && (strtolower($_REQUEST['sortorder']) == 'desc' || strtolower($_REQUEST['sortorder']) == 'asc')) {
- $this->sortorder = strtolower($_REQUEST['sortorder']);
- } else {
-
- if ($checklastpaging && isset($this->userinfo['lastpaging']['sortorder']) && (strtolower($this->userinfo['lastpaging']['sortorder']) == 'desc' || strtolower($this->userinfo['lastpaging']['sortorder']) == 'asc')) {
- $this->sortorder = strtolower($this->userinfo['lastpaging']['sortorder']);
- } else {
- $this->sortorder = $default_order;
- }
- }
-
- $this->userinfo['lastpaging']['sortorder'] = $this->sortorder;
-
- if (isset($_REQUEST['sortfield']) && isset($fields[$_REQUEST['sortfield']])) {
- $this->sortfield = $_REQUEST['sortfield'];
- } else {
- if ($checklastpaging && isset($this->userinfo['lastpaging']['sortfield']) && isset($fields[$this->userinfo['lastpaging']['sortfield']])) {
- $this->sortfield = $this->userinfo['lastpaging']['sortfield'];
- } else {
- $fieldnames = array_keys($fields);
- $this->sortfield = $fieldnames[$default_field];
- }
- }
-
- $this->userinfo['lastpaging']['sortfield'] = $this->sortfield;
-
- if (isset($_REQUEST['searchfield']) && isset($fields[$_REQUEST['searchfield']])) {
- $this->searchfield = $_REQUEST['searchfield'];
- } else {
- if ($checklastpaging && isset($this->userinfo['lastpaging']['searchfield']) && isset($fields[$this->userinfo['lastpaging']['searchfield']])) {
- $this->searchfield = $this->userinfo['lastpaging']['searchfield'];
- } else {
- $fieldnames = array_keys($fields);
- $this->searchfield = $fieldnames[0];
- }
- }
-
- $this->userinfo['lastpaging']['searchfield'] = $this->searchfield;
-
- if (isset($_REQUEST['searchtext']) && (preg_match('/[-_@\p{L}\p{N}*.]+$/u', $_REQUEST['searchtext']) || $_REQUEST['searchtext'] === '')) {
- $this->searchtext = trim($_REQUEST['searchtext']);
- } else {
- if ($checklastpaging && isset($this->userinfo['lastpaging']['searchtext']) && preg_match('/[-_@\p{L}\p{N}*.]+$/u', $this->userinfo['lastpaging']['searchtext'])) {
- $this->searchtext = $this->userinfo['lastpaging']['searchtext'];
- } else {
- $this->searchtext = '';
- }
- }
-
- $this->userinfo['lastpaging']['searchtext'] = $this->searchtext;
-
- if (isset($_REQUEST['pageno']) && intval($_REQUEST['pageno']) != 0) {
- $this->pageno = intval($_REQUEST['pageno']);
- } else {
- if ($checklastpaging && isset($this->userinfo['lastpaging']['pageno']) && intval($this->userinfo['lastpaging']['pageno']) != 0) {
- $this->pageno = intval($this->userinfo['lastpaging']['pageno']);
- } else {
- $this->pageno = 1;
- }
- }
-
- $this->userinfo['lastpaging']['pageno'] = $this->pageno;
- $this->limit = $limit;
- }
-
- /**
- * Sets number of entries and adjusts pageno if the number of entries doesn't correspond to the pageno.
- *
- * @param
- * int entries
- */
- public function setEntries($entries)
- {
- $this->entries = $entries;
-
- if (($this->pageno - 1) * $this->entriesperpage > $this->entries) {
- $this->pageno = 1;
- }
-
- return true;
- }
-
- /**
- * Checks if a row should be displayed or not, used in loops
- *
- * @param
- * int number of row
- * @return bool to display or not to display, that's the question
- */
- public function checkDisplay($count)
- {
- $begin = (intval($this->pageno) - 1) * intval($this->entriesperpage);
- $end = (intval($this->pageno) * intval($this->entriesperpage));
- return (($count >= $begin && $count < $end) || $this->entriesperpage == 0);
- }
-
- /**
- * Returns condition code for sql query
- *
- * @param
- * bool should returned condition code start with WHERE (false) or AND (true)?
- * @return string the condition code
- */
- public function getSqlWhere($append = false)
- {
- if ($this->searchtext != '') {
- if ($append == true) {
- $condition = ' AND ';
- } else {
- $condition = ' WHERE ';
- }
-
- $searchfield = explode('.', $this->searchfield);
- foreach ($searchfield as $id => $field) {
- if (substr($field, - 1, 1) != '`') {
- $field .= '`';
- }
-
- if ($field[0] != '`') {
- $field = '`' . $field;
- }
-
- $searchfield[$id] = $field;
- }
-
- $searchfield = implode('.', $searchfield);
-
- $ops = array(
- '<',
- '>',
- '='
- );
-
- // check if we use an operator or not
- $useOper = 0;
- $oper = "=";
- if (in_array(substr($this->searchtext, 0, 1), $ops)) {
- $useOper = 1;
- $oper = substr($this->searchtext, 0, 1);
- }
-
- // check for diskspace and whether searchtext is a number
- // in any other case the logical-operators would make no sense
- if (strpos($searchfield, 'diskspace') > 0 && is_numeric(substr($this->searchtext, $useOper))) {
- // anything with diskspace is *1024
- $searchtext = ((int) substr($this->searchtext, $useOper)) * 1024;
- $useOper = 1;
- } elseif (strpos($searchfield, 'traffic') > 0 && is_numeric(substr($this->searchtext, $useOper))) {
- // anything with traffic is *1024*1024
- $searchtext = ((int) substr($this->searchtext, $useOper)) * 1024 * 1024;
- $useOper = 1;
- } else {
- // any other field
- $searchtext = substr($this->searchtext, $useOper);
- }
-
- if ($useOper == 1 && is_numeric(substr($this->searchtext, $useOper))) {
- // now as we use >, < or = we use the given operator and not LIKE
- $condition .= $searchfield . " " . $oper . " " . \Froxlor\Database\Database::quote($searchtext);
- } else {
- $searchtext = str_replace('*', '%', $this->searchtext);
- // append wildcards if user did not enter any
- if (strpos($searchtext, '%') === false)
- $searchtext = '%' . $searchtext . '%';
- $condition .= $searchfield . " LIKE " . \Froxlor\Database\Database::quote($searchtext);
- }
- } else {
- $condition = '';
- }
-
- return $condition;
- }
-
- /**
- * Returns "order by"-code for sql query
- *
- * @param
- * bool Switch natsorting on/off (local, affects just this call)
- * @return string the "order by"-code
- */
- public function getSqlOrderBy($natSorting = null)
- {
- $sortfield = explode('.', $this->sortfield);
- foreach ($sortfield as $id => $field) {
- if (substr($field, - 1, 1) != '`') {
- $field .= '`';
- }
-
- if ($field[0] != '`') {
- $field = '`' . $field;
- }
-
- $sortfield[$id] = $field;
- }
-
- $sortfield = implode('.', $sortfield);
- $sortorder = strtoupper($this->sortorder);
-
- if ($natSorting == true || ($natSorting === null && $this->natSorting == true)) {
- // Acts similar to php's natsort(), found in one comment at http://my.opera.com/cpr/blog/show.dml/160556
- $sortcode = "ORDER BY CONCAT( IF( ASCII( LEFT( " . $sortfield . ", 5 ) ) > 57,
- LEFT( " . $sortfield . ", 1 ), 0 ),
- IF( ASCII( RIGHT( " . $sortfield . ", 1 ) ) > 57,
- LPAD( " . $sortfield . ", 255, '0' ),
- LPAD( CONCAT( " . $sortfield . ", '-' ), 255, '0' )
- )) " . $sortorder;
- } else {
- $sortcode = 'ORDER BY ' . $sortfield . ' ' . $sortorder;
- }
-
- return $sortcode;
- }
-
- /**
- * Currently not used
- *
- * @return string always empty
- */
- public function getSqlLimit()
- {
- if ($this->limit > 0) {
- $_offset = ($this->pageno - 1) * $this->limit;
- return ' LIMIT ' . $_offset . ',' . $this->limit;
- }
- /**
- * currently not in use
- */
- return '';
- }
-
- /**
- * Returns html code for sorting field
- *
- * @param
- * array Language array
- * @return string the html sortcode
- */
- public function getHtmlSortCode($lng, $break = false)
- {
- $sortcode = '';
- $fieldoptions = '';
- $orderoptions = '';
-
- foreach ($this->fields as $fieldname => $fieldcaption) {
- $fieldoptions .= HTML::makeoption($fieldcaption, $fieldname, $this->sortfield, true, true);
- }
-
- $breakorws = ($break ? '
' : ' ');
- foreach (array(
- 'asc' => $lng['panel']['ascending'],
- 'desc' => $lng['panel']['descending']
- ) as $sortordertype => $sortorderdescription) {
- $orderoptions .= HTML::makeoption($sortorderdescription, $sortordertype, $this->sortorder, true, true);
- }
-
- eval("\$sortcode =\"" . Template::getTemplate("misc/htmlsortcode", '1') . "\";");
- return $sortcode;
- }
-
- /**
- * Returns html code for sorting arrows
- *
- * @param
- * string URL to use as base for links
- * @param
- * string If set, only this field will be returned
- * @return mixed An array or a string (if field is set) of html code of arrows
- */
- public function getHtmlArrowCode($baseurl, $field = '')
- {
- global $theme;
-
- if ($field != '' && isset($this->fields[$field])) {
- $baseurl = htmlspecialchars($baseurl);
- $fieldname = htmlspecialchars($field);
- eval("\$arrowcode =\"" . Template::getTemplate("misc/htmlarrowcode", '1') . "\";");
- } else {
- $baseurl = htmlspecialchars($baseurl);
- $arrowcode = array();
- foreach ($this->fields as $fieldname => $fieldcaption) {
- $fieldname = htmlspecialchars($fieldname);
- eval("\$arrowcode[\$fieldname] =\"" . Template::getTemplate("misc/htmlarrowcode", '1') . "\";");
- }
- }
-
- return $arrowcode;
- }
-
- /**
- * Returns html code for searching field
- *
- * @param
- * array Language array
- * @return string the html searchcode
- */
- public function getHtmlSearchCode($lng)
- {
- $searchcode = '';
- $fieldoptions = '';
- $searchtext = htmlspecialchars($this->searchtext);
- foreach ($this->fields as $fieldname => $fieldcaption) {
- $fieldoptions .= HTML::makeoption($fieldcaption, $fieldname, $this->searchfield, true, true);
- }
- eval("\$searchcode =\"" . Template::getTemplate("misc/htmlsearchcode", '1') . "\";");
- return $searchcode;
- }
-
- /**
- * Returns html code for paging
- *
- * @param
- * string URL to use as base for links
- * @return string the html pagingcode
- */
- public function getHtmlPagingCode($baseurl)
- {
- if ($this->entriesperpage == 0) {
- return '';
- } else {
- $pages = intval($this->entries / $this->entriesperpage);
- }
-
- if ($this->entries % $this->entriesperpage != 0) {
- $pages ++;
- }
-
- if ($pages > 1) {
-
- $start = $this->pageno - 4;
- if ($start < 1) {
- $start = 1;
- }
-
- $stop = $this->pageno + 4;
- if ($stop > $pages) {
- $stop = $pages;
- }
-
- $pagingcode = '« < ';
- for ($i = $start; $i <= $stop; $i ++) {
- if ($i != $this->pageno) {
- $pagingcode .= ' ' . $i . ' ';
- } else {
- $pagingcode .= ' ' . $i . ' ';
- }
- }
- $pagingcode .= ' > »';
- } else {
- $pagingcode = '';
- }
-
- return $pagingcode;
- }
-}
diff --git a/lib/Froxlor/UI/Template.php b/lib/Froxlor/UI/Template.php
index 338672e0..2cbdd449 100644
--- a/lib/Froxlor/UI/Template.php
+++ b/lib/Froxlor/UI/Template.php
@@ -51,6 +51,8 @@ class Template
* string noarea If area should be used to get template
* @return string The Template
* @author Florian Lippert
+ *
+ * @deprecated
*/
public static function getTemplate($template, $noarea = 0)
{
diff --git a/lng/english.lng.php b/lng/english.lng.php
index a77a8677..ef0d6e71 100644
--- a/lng/english.lng.php
+++ b/lng/english.lng.php
@@ -2151,3 +2151,4 @@ $lng['admin']['configfiles']['description'] = 'Configure the system services';
$lng['admin']['configfiles']['skipconfig'] = 'Don\'t (re)configure';
$lng['admin']['configfiles']['recommendednote'] = 'Recommended/required services based on current system settings';
$lng['admin']['configfiles']['selectrecommended'] = 'Select recommended';
+$lng['update']['description'] = 'Running database updates for your froxlor installation';
diff --git a/lng/german.lng.php b/lng/german.lng.php
index 28c330b3..44c850f0 100644
--- a/lng/german.lng.php
+++ b/lng/german.lng.php
@@ -1793,3 +1793,4 @@ $lng['admin']['configfiles']['description'] = 'System-Dienste konfigurieren';
$lng['admin']['configfiles']['skipconfig'] = 'Nicht (erneut) konfigurieren';
$lng['admin']['configfiles']['recommendednote'] = 'Empfohlene/benötigte Dienste ahand der aktuellen Systemeinstellungen';
$lng['admin']['configfiles']['selectrecommended'] = 'Empfohlene wählen';
+$lng['update']['description'] = 'Aktualisierung der froxlor Datenbank';
diff --git a/templates/Froxlor/install/update.html.twig b/templates/Froxlor/install/update.html.twig
new file mode 100644
index 00000000..1aa1e477
--- /dev/null
+++ b/templates/Froxlor/install/update.html.twig
@@ -0,0 +1,48 @@
+{% extends "Froxlor/userarea.html.twig" %}
+
+{% block heading %}
+
+
+
+ {{ lng('update.update') }}
+
+ {{ lng('update.description') }}
+
+{% endblock %}
+
+{% block content %}
+
+
+
+
+ {% for check in checks %}
+
+ | {{ check.title }} |
+
+ {{ check.result_txt }}
+ {% if check.result == 0 %} ???{% elseif check.result == 1 %} !!!
+ {% endif %}
+ |
+
+ {% if check.result_desc is not empty %}
+
+ |
+ {{ check.result_desc|raw }}
+ |
+
+ {% endif %}
+ {% endfor %}
+
+
+
+
+
+
+{% endblock %}
diff --git a/templates/Froxlor/user/logfiles.html.twig b/templates/Froxlor/user/logfiles.html.twig
index 2b411c66..7ac8e395 100644
--- a/templates/Froxlor/user/logfiles.html.twig
+++ b/templates/Froxlor/user/logfiles.html.twig
@@ -1,10 +1,15 @@
{% extends "Froxlor/userarea.html.twig" %}
+{% block heading %}
+
+
+
+ {{ lng('panel.viewlogs') }}
+
+
+{% endblock %}
+
{% block content %}
-