summaryrefslogtreecommitdiff
path: root/includes
diff options
context:
space:
mode:
Diffstat (limited to 'includes')
-rw-r--r--includes/engelsystem_provider.php41
-rw-r--r--includes/helper/internationalization_helper.php4
-rw-r--r--includes/model/LogEntries_model.php12
-rw-r--r--includes/pages/admin_log.php8
-rw-r--r--includes/pages/guest_login.php12
-rw-r--r--includes/pages/user_atom.php3
-rw-r--r--includes/sys_log.php6
-rw-r--r--includes/sys_menu.php2
-rw-r--r--includes/view/AngelTypes_view.php26
9 files changed, 82 insertions, 32 deletions
diff --git a/includes/engelsystem_provider.php b/includes/engelsystem_provider.php
index aed331d4..0de5e0f5 100644
--- a/includes/engelsystem_provider.php
+++ b/includes/engelsystem_provider.php
@@ -1,24 +1,36 @@
<?php
+use Engelsystem\Application;
use Engelsystem\Config\Config;
use Engelsystem\Database\Db;
use Engelsystem\Exceptions\Handler as ExceptionHandler;
use Engelsystem\Http\Request;
+use Engelsystem\Logger\EngelsystemLogger;
use Engelsystem\Renderer\HtmlEngine;
use Engelsystem\Renderer\Renderer;
+use Engelsystem\Routing\UrlGenerator;
+use Psr\Log\LoggerInterface;
use Symfony\Component\HttpFoundation\Session\Session;
+use Symfony\Component\HttpFoundation\Session\Storage\MockArraySessionStorage;
+use Symfony\Component\HttpFoundation\Session\Storage\NativeSessionStorage;
/**
* This file includes all needed functions, connects to the db etc.
*/
-
require_once __DIR__ . '/autoload.php';
+
+/**
+ * Initialize the application
+ */
+$app = Application::getInstance();
+
+
/**
* Load configuration
*/
$config = new Config();
-Config::setInstance($config);
+$app->instance('config', $config);
$config->set(require __DIR__ . '/../config/config.default.php');
if (file_exists(__DIR__ . '/../config/config.php')) {
@@ -37,7 +49,8 @@ date_default_timezone_set($config->get('timezone'));
* @var Request $request
*/
$request = Request::createFromGlobals();
-$request::setInstance($request);
+$app->instance('request', $request);
+
/**
* Check for maintenance
@@ -49,17 +62,25 @@ if ($config->get('maintenance')) {
/**
+ * Register UrlGenerator
+ */
+$urlGenerator = new UrlGenerator();
+$app->instance('routing.urlGenerator', $urlGenerator);
+
+
+/**
* Initialize renderer
*/
$renderer = new Renderer();
+$app->instance('renderer', $renderer);
$renderer->addRenderer(new HtmlEngine());
-Renderer::setInstance($renderer);
/**
* Register error handler
*/
$errorHandler = new ExceptionHandler();
+$app->instance('error.handler', $errorHandler);
if (config('environment') == 'development') {
$errorHandler->setEnvironment(ExceptionHandler::ENV_DEVELOPMENT);
ini_set('display_errors', true);
@@ -80,6 +101,14 @@ Db::connect(
Db::getPdo()->setAttribute(PDO::ATTR_ERRMODE, PDO::ERRMODE_EXCEPTION);
Db::getPdo()->setAttribute(PDO::ATTR_EMULATE_PREPARES, false);
+/**
+ * Init logger
+ */
+$logger = new EngelsystemLogger();
+$app->instance('logger', $logger);
+$app->instance(LoggerInterface::class, $logger);
+$app->instance(EngelsystemLogger::class, $logger);
+
/**
* Include legacy code
@@ -170,7 +199,9 @@ foreach ($includeFiles as $file) {
/**
* Init application
*/
-$session = new Session();
+$sessionStorage = (PHP_SAPI != 'cli' ? new NativeSessionStorage(['cookie_httponly' => true]) : new MockArraySessionStorage());
+$session = new Session($sessionStorage);
+$app->instance('session', $session);
$session->start();
$request->setSession($session);
diff --git a/includes/helper/internationalization_helper.php b/includes/helper/internationalization_helper.php
index 131941e9..efbe5db5 100644
--- a/includes/helper/internationalization_helper.php
+++ b/includes/helper/internationalization_helper.php
@@ -1,7 +1,5 @@
<?php
-use Engelsystem\Http\Request;
-
/**
* Return currently active locale
*
@@ -65,7 +63,7 @@ function gettext_locale($locale = null)
*/
function make_langselect()
{
- $request = Request::getInstance();
+ $request = app('request');
$items = [];
foreach (config('locales') as $locale => $name) {
diff --git a/includes/model/LogEntries_model.php b/includes/model/LogEntries_model.php
index 0e11bf8e..f0ee6673 100644
--- a/includes/model/LogEntries_model.php
+++ b/includes/model/LogEntries_model.php
@@ -5,16 +5,16 @@ use Engelsystem\Database\DB;
/**
* Creates a log entry.
*
- * @param string $nick Username
- * @param string $message Log Message
+ * @param string $logLevel Log level
+ * @param string $message Log Message
* @return bool
*/
-function LogEntry_create($nick, $message)
+function LogEntry_create($logLevel, $message)
{
return DB::insert('
- INSERT INTO `LogEntries` (`timestamp`, `nick`, `message`)
+ INSERT INTO `LogEntries` (`timestamp`, `level`, `message`)
VALUES(?, ?, ?)
- ', [time(), $nick, $message]);
+ ', [time(), $logLevel, $message]);
}
/**
@@ -43,7 +43,7 @@ function LogEntries_filter($keyword)
return DB::select('
SELECT *
FROM `LogEntries`
- WHERE `nick` LIKE ?
+ WHERE `level` LIKE ?
OR `message` LIKE ?
ORDER BY `timestamp` DESC
',
diff --git a/includes/pages/admin_log.php b/includes/pages/admin_log.php
index 03c9abb0..694b1d5a 100644
--- a/includes/pages/admin_log.php
+++ b/includes/pages/admin_log.php
@@ -17,12 +17,10 @@ function admin_log()
if (request()->has('keyword')) {
$filter = strip_request_item('keyword');
}
- $log_entries_source = LogEntries_filter($filter);
+ $log_entries = LogEntries_filter($filter);
- $log_entries = [];
- foreach ($log_entries_source as $log_entry) {
+ foreach ($log_entries as &$log_entry) {
$log_entry['date'] = date('d.m.Y H:i', $log_entry['timestamp']);
- $log_entries[] = $log_entry;
}
return page_with_title(admin_log_title(), [
@@ -33,7 +31,7 @@ function admin_log()
]),
table([
'date' => 'Time',
- 'nick' => 'Angel',
+ 'level' => 'Type',
'message' => 'Log Entry'
], $log_entries)
]);
diff --git a/includes/pages/guest_login.php b/includes/pages/guest_login.php
index 9179c6c4..0577951f 100644
--- a/includes/pages/guest_login.php
+++ b/includes/pages/guest_login.php
@@ -33,7 +33,7 @@ function logout_title()
*/
function guest_register()
{
- global $user;
+ global $user, $privileges;
$tshirt_sizes = config('tshirt_sizes');
$enable_tshirt_size = config('enable_tshirt_size');
$min_password_length = config('min_password_length');
@@ -75,6 +75,14 @@ function guest_register()
}
}
+ if (!in_array('register', $privileges) || (!isset($user) && !config('registration_enabled'))) {
+ error(_('Registration is disabled.'));
+
+ return page_with_title(register_title(), [
+ msg(),
+ ]);
+ }
+
if ($request->has('submit')) {
$valid = true;
@@ -496,7 +504,7 @@ function get_register_hint()
{
global $privileges;
- if (in_array('register', $privileges)) {
+ if (in_array('register', $privileges) && config('registration_enabled')) {
return join('', [
'<p>' . _('Please sign up, if you want to help us!') . '</p>',
buttons([
diff --git a/includes/pages/user_atom.php b/includes/pages/user_atom.php
index 2991bdbf..c9d9398e 100644
--- a/includes/pages/user_atom.php
+++ b/includes/pages/user_atom.php
@@ -1,7 +1,6 @@
<?php
use Engelsystem\Database\DB;
-use Engelsystem\Http\Request;
/**
* Publically available page to feed the news to feed readers
@@ -45,7 +44,7 @@ function user_atom()
*/
function make_atom_entries_from_news($news_entries)
{
- $request = Request::getInstance();
+ $request = app('request');
$html = '<?xml version="1.0" encoding="utf-8"?>
<feed xmlns="http://www.w3.org/2005/Atom">
<title>Engelsystem</title>
diff --git a/includes/sys_log.php b/includes/sys_log.php
index c4ef890e..513586e6 100644
--- a/includes/sys_log.php
+++ b/includes/sys_log.php
@@ -9,10 +9,12 @@
function engelsystem_log($message)
{
global $user;
-
$nick = "Guest";
+ $logger = app('logger');
+
if (isset($user)) {
$nick = User_Nick_render($user);
}
- LogEntry_create($nick, $message);
+
+ $logger->info('{nick}: {message}', ['nick' => $nick, 'message' => $message]);
}
diff --git a/includes/sys_menu.php b/includes/sys_menu.php
index 2eaa1234..385a6948 100644
--- a/includes/sys_menu.php
+++ b/includes/sys_menu.php
@@ -59,7 +59,7 @@ function header_toolbar()
);
}
- if (!isset($user) && in_array('register', $privileges)) {
+ if (!isset($user) && in_array('register', $privileges) && config('registration_enabled')) {
$toolbar_items[] = toolbar_item_link(page_link_to('register'), 'plus', register_title(), $page == 'register');
}
diff --git a/includes/view/AngelTypes_view.php b/includes/view/AngelTypes_view.php
index f75cc616..baf0e04a 100644
--- a/includes/view/AngelTypes_view.php
+++ b/includes/view/AngelTypes_view.php
@@ -475,13 +475,27 @@ function AngelTypes_about_view_angeltype($angeltype)
*/
function AngelTypes_about_view($angeltypes, $user_logged_in)
{
+ global $privileges;
+
+ $buttons = [];
+
+ if ($user_logged_in) {
+ $buttons[] = button(page_link_to('angeltypes'), angeltypes_title(), 'back');
+ } else {
+ if (in_array('register', $privileges) && config('registration_enabled')) {
+ $buttons[] = button(page_link_to('register'), register_title());
+ }
+
+ $buttons[] = button(page_link_to('login'), login_title());
+ }
+
+ $faqUrl = config('faq_url');
+ if (!empty($faqUrl)) {
+ $buttons[] = button($faqUrl, _('FAQ'), 'btn-primary');
+ }
+
$content = [
- buttons([
- !$user_logged_in ? button(page_link_to('register'), register_title()) : '',
- !$user_logged_in ? button(page_link_to('login'), login_title()) : '',
- $user_logged_in ? button(page_link_to('angeltypes'), angeltypes_title(), 'back') : '',
- button(config('faq_url'), _('FAQ'), 'btn-primary')
- ]),
+ buttons($buttons),
'<p>' . _('Here is the list of teams and their tasks. If you have questions, read the FAQ.') . '</p>',
'<hr />'
];