From 94b52504145ed5c889093421167306aa7a45d385 Mon Sep 17 00:00:00 2001 From: Igor Scheller Date: Mon, 2 Jan 2017 02:19:17 +0100 Subject: [PATCH 001/128] Added composer with parsedown requirement --- .gitignore | 4 ++++ .gitmodules | 5 +---- README-ENG.md | 2 ++ README.md | 2 ++ composer.json | 20 ++++++++++++++++++++ includes/engelsystem_provider.php | 7 +++++-- vendor/parsedown | 1 - 7 files changed, 34 insertions(+), 7 deletions(-) create mode 100644 composer.json delete mode 160000 vendor/parsedown diff --git a/.gitignore b/.gitignore index febc6812..d712148b 100644 --- a/.gitignore +++ b/.gitignore @@ -20,3 +20,7 @@ _vimrc_local.vim # Project files /config/config.php /test/coverage + +# Composer files +/vendor/ +/composer.lock diff --git a/.gitmodules b/.gitmodules index 0aa8483a..2d19e8e9 100644 --- a/.gitmodules +++ b/.gitmodules @@ -1,6 +1,3 @@ -[submodule "vendor/parsedown"] - path = vendor/parsedown - url = https://github.com/erusev/parsedown.git [submodule "vendor/bootstrap"] path = themes/assets/bootstrap - url = https://github.com/twbs/bootstrap.git + url = https://github.com/twbs/bootstrap.git \ No newline at end of file diff --git a/README-ENG.md b/README-ENG.md index 3632882c..d379e192 100644 --- a/README-ENG.md +++ b/README-ENG.md @@ -7,6 +7,8 @@ ## Directions: * Clone the master branch with the submodules: `git clone --recursive https://github.com/engelsystem/engelsystem.git` + * Install [Composer](https://getcomposer.org/download/) + * Install project dependencies: `composer install` * Webserver must have write access to the 'import' directory and read access for all other directories * Webserver must be public. diff --git a/README.md b/README.md index 57d81d52..7ee7320a 100644 --- a/README.md +++ b/README.md @@ -10,6 +10,8 @@ ## Vorgehen: * Klonen des `master` inkl. submodules in lokales Verzeichnis: `git clone --recursive https://github.com/engelsystem/engelsystem.git` + * [Composer](https://getcomposer.org/download/) installieren + * Abhängigkeiten installieren: `composer install` * Der Webserver muss Schreibrechte auf das Verzeichnis `import` bekommen, für alle anderen Dateien reichen Leserechte. * Der Webserver muss auf `public` als http-root zeigen. diff --git a/composer.json b/composer.json new file mode 100644 index 00000000..5b56395b --- /dev/null +++ b/composer.json @@ -0,0 +1,20 @@ +{ + "name": "engelsystem/engelsystem", + "description": "Shift planning system for chaos events", + "type": "project", + "license": "GPL-2.0", + "authors": [ + { + "name": "msquare", + "email": "msquare@notrademark.de" + }, + { + "name": "MyIgel", + "email": "igor.scheller@igorshp.de" + } + ], + "require": { + "php": ">=5.4", + "erusev/parsedown": "1.6.*" + } +} diff --git a/includes/engelsystem_provider.php b/includes/engelsystem_provider.php index 595af9f9..c2b979d8 100644 --- a/includes/engelsystem_provider.php +++ b/includes/engelsystem_provider.php @@ -2,6 +2,11 @@ /** * This file includes all needed functions, connects to the db etc. */ +if(!is_readable(__DIR__ . '/../vendor/autoload.php')){ + die('Please run composer.phar install'); +} +require __DIR__ . '/../vendor/autoload.php'; + require_once realpath(__DIR__ . '/../includes/mysqli_provider.php'); require_once realpath(__DIR__ . '/../includes/sys_auth.php'); @@ -91,8 +96,6 @@ require_once realpath(__DIR__ . '/../includes/pages/user_questions.php'); require_once realpath(__DIR__ . '/../includes/pages/user_settings.php'); require_once realpath(__DIR__ . '/../includes/pages/user_shifts.php'); -require_once realpath(__DIR__ . '/../vendor/parsedown/Parsedown.php'); - session_start(); gettext_init(); diff --git a/vendor/parsedown b/vendor/parsedown deleted file mode 160000 index 3ebbd730..00000000 --- a/vendor/parsedown +++ /dev/null @@ -1 +0,0 @@ -Subproject commit 3ebbd730b5c2cf5ce78bc1bf64071407fc6674b7 From b839e401062b294292fdcbd7e30b79bc149fab6f Mon Sep 17 00:00:00 2001 From: Igor Scheller Date: Mon, 2 Jan 2017 03:15:57 +0100 Subject: [PATCH 002/128] Require twbs/bootstrap via composer --- .gitmodules | 3 --- README-ENG.md | 2 +- README.md | 2 +- composer.json | 3 ++- public/vendor/bootstrap | 2 +- themes/assets/bootstrap | 1 - themes/base.less | 4 ++-- themes/theme1.less | 2 +- themes/theme2.less | 2 +- themes/theme3.less | 2 +- themes/theme4.less | 2 +- 11 files changed, 11 insertions(+), 14 deletions(-) delete mode 100644 .gitmodules delete mode 160000 themes/assets/bootstrap diff --git a/.gitmodules b/.gitmodules deleted file mode 100644 index 2d19e8e9..00000000 --- a/.gitmodules +++ /dev/null @@ -1,3 +0,0 @@ -[submodule "vendor/bootstrap"] - path = themes/assets/bootstrap - url = https://github.com/twbs/bootstrap.git \ No newline at end of file diff --git a/README-ENG.md b/README-ENG.md index d379e192..0c39ba45 100644 --- a/README-ENG.md +++ b/README-ENG.md @@ -6,7 +6,7 @@ * Webserver, i.e. lighttpd, nginx, or Apache ## Directions: - * Clone the master branch with the submodules: `git clone --recursive https://github.com/engelsystem/engelsystem.git` + * Clone the master branch: `git clone https://github.com/engelsystem/engelsystem.git` * Install [Composer](https://getcomposer.org/download/) * Install project dependencies: `composer install` * Webserver must have write access to the 'import' directory and read access for all other directories diff --git a/README.md b/README.md index 7ee7320a..1bb0f694 100644 --- a/README.md +++ b/README.md @@ -9,7 +9,7 @@ * Webserver mit PHP-Anbindung, z.B. lighttpd, nginx oder Apache ## Vorgehen: - * Klonen des `master` inkl. submodules in lokales Verzeichnis: `git clone --recursive https://github.com/engelsystem/engelsystem.git` + * Klonen des `master` in lokales Verzeichnis: `git clone https://github.com/engelsystem/engelsystem.git` * [Composer](https://getcomposer.org/download/) installieren * Abhängigkeiten installieren: `composer install` * Der Webserver muss Schreibrechte auf das Verzeichnis `import` bekommen, für alle anderen Dateien reichen Leserechte. diff --git a/composer.json b/composer.json index 5b56395b..5b2498da 100644 --- a/composer.json +++ b/composer.json @@ -15,6 +15,7 @@ ], "require": { "php": ">=5.4", - "erusev/parsedown": "1.6.*" + "erusev/parsedown": "1.6.*", + "twbs/bootstrap": "^3.3" } } diff --git a/public/vendor/bootstrap b/public/vendor/bootstrap index 250b0a66..c4f820a9 120000 --- a/public/vendor/bootstrap +++ b/public/vendor/bootstrap @@ -1 +1 @@ -../../themes/assets/bootstrap/dist \ No newline at end of file +../../vendor/twbs/bootstrap/dist \ No newline at end of file diff --git a/themes/assets/bootstrap b/themes/assets/bootstrap deleted file mode 160000 index ad716b9e..00000000 --- a/themes/assets/bootstrap +++ /dev/null @@ -1 +0,0 @@ -Subproject commit ad716b9ea9506456f28e2c1bcdd7b4a81b44c11c diff --git a/themes/base.less b/themes/base.less index a4fa7e77..c866e50e 100644 --- a/themes/base.less +++ b/themes/base.less @@ -1,6 +1,6 @@ -@import "assets/bootstrap/less/bootstrap"; +@import "../vendor/twbs/bootstrap/less/bootstrap"; -@icon-font-path: "../fonts/"; +@icon-font-path: "../vendor/bootstrap/fonts/"; body { padding-top: 50px; diff --git a/themes/theme1.less b/themes/theme1.less index 134e79b7..7a893951 100644 --- a/themes/theme1.less +++ b/themes/theme1.less @@ -1,4 +1,4 @@ -@import "assets/bootstrap/less/variables"; +@import "../vendor/twbs/bootstrap/less/variables"; /* The MIT License (MIT) diff --git a/themes/theme2.less b/themes/theme2.less index 344e23c6..c4486444 100644 --- a/themes/theme2.less +++ b/themes/theme2.less @@ -1,4 +1,4 @@ -@import "assets/bootstrap/less/variables"; +@import "../vendor/twbs/bootstrap/less/variables"; @brand-primary: #758499; @brand-success: #7b9c41; diff --git a/themes/theme3.less b/themes/theme3.less index 7e7e0f69..e6be3637 100644 --- a/themes/theme3.less +++ b/themes/theme3.less @@ -1,4 +1,4 @@ -@import "assets/bootstrap/less/variables"; +@import "../vendor/twbs/bootstrap/less/variables"; @brand-primary: #f19224; @brand-success: #39AB50; diff --git a/themes/theme4.less b/themes/theme4.less index 2ad8593d..4234de9c 100644 --- a/themes/theme4.less +++ b/themes/theme4.less @@ -1,4 +1,4 @@ -@import "assets/bootstrap/less/variables"; +@import "../vendor/twbs/bootstrap/less/variables"; /* The MIT License (MIT) From 7313e15ce8236e19331fb6639a3a5b97c8f06ecd Mon Sep 17 00:00:00 2001 From: Bot Date: Mon, 2 Jan 2017 03:57:23 +0100 Subject: [PATCH 003/128] PSR-2 formatting --- config/config.default.php | 7 +- includes/controller/angeltypes_controller.php | 258 ++++----- .../controller/event_config_controller.php | 154 +++--- includes/controller/rooms_controller.php | 103 ++-- .../controller/shift_entries_controller.php | 281 +++++----- includes/controller/shifts_controller.php | 427 +++++++-------- includes/controller/shifttypes_controller.php | 243 ++++----- .../controller/user_angeltypes_controller.php | 471 ++++++++--------- .../user_driver_licenses_controller.php | 155 +++--- includes/controller/users_controller.php | 487 ++++++++--------- includes/engelsystem_provider.php | 12 +- includes/helper/email_helper.php | 32 +- includes/helper/error_helper.php | 7 +- includes/helper/graph_helper.php | 33 +- .../helper/internationalization_helper.php | 69 +-- includes/helper/message_helper.php | 53 +- includes/mailer/shifts_mailer.php | 160 +++--- includes/mailer/users_mailer.php | 6 +- includes/model/AngelType_model.php | 193 +++---- includes/model/EventConfig_model.php | 45 +- includes/model/LogEntries_model.php | 28 +- includes/model/Message_model.php | 45 +- includes/model/NeededAngelTypes_model.php | 74 +-- includes/model/Room_model.php | 48 +- includes/model/ShiftEntry_model.php | 97 ++-- includes/model/ShiftSignupState.php | 53 +- includes/model/ShiftTypes_model.php | 65 +-- includes/model/ShiftsFilter.php | 140 ++--- includes/model/Shifts_model.php | 375 +++++++------- includes/model/UserAngelTypes_model.php | 187 +++---- includes/model/UserDriverLicenses_model.php | 77 +-- includes/model/UserGroups_model.php | 7 +- includes/model/User_model.php | 335 ++++++------ includes/model/ValidationResult.php | 26 +- includes/mysqli_provider.php | 194 +++---- includes/pages/admin_active.php | 281 +++++----- includes/pages/admin_arrive.php | 259 ++++----- includes/pages/admin_free.php | 115 ++-- includes/pages/admin_groups.php | 111 ++-- includes/pages/admin_import.php | 422 +++++++-------- includes/pages/admin_log.php | 37 +- includes/pages/admin_news.php | 38 +- includes/pages/admin_questions.php | 114 ++-- includes/pages/admin_rooms.php | 289 ++++++----- includes/pages/admin_shifts.php | 467 ++++++++--------- includes/pages/admin_user.php | 239 ++++----- includes/pages/guest_credits.php | 11 +- includes/pages/guest_login.php | 490 +++++++++--------- includes/pages/guest_start.php | 6 +- includes/pages/guest_stats.php | 45 +- includes/pages/user_atom.php | 58 ++- includes/pages/user_ical.php | 82 +-- includes/pages/user_messages.php | 116 +++-- includes/pages/user_myshifts.php | 155 +++--- includes/pages/user_news.php | 256 ++++----- includes/pages/user_questions.php | 61 +-- includes/pages/user_settings.php | 253 ++++----- includes/pages/user_shifts.php | 219 ++++---- includes/sys_auth.php | 109 ++-- includes/sys_form.php | 215 ++++---- includes/sys_log.php | 28 +- includes/sys_menu.php | 210 ++++---- includes/sys_page.php | 147 +++--- includes/sys_template.php | 304 ++++++----- includes/view/AngelTypes_view.php | 337 ++++++------ includes/view/EventConfig_view.php | 105 ++-- includes/view/Questions_view.php | 33 +- includes/view/Rooms_view.php | 20 +- includes/view/ShiftCalendarLane.php | 66 +-- includes/view/ShiftCalendarRenderer.php | 283 +++++----- includes/view/ShiftCalendarShiftRenderer.php | 166 +++--- includes/view/ShiftEntry_view.php | 23 +- includes/view/ShiftTypes_view.php | 85 +-- includes/view/ShiftsFilterRenderer.php | 47 +- includes/view/Shifts_view.php | 193 +++---- includes/view/UserAngelTypes_view.php | 75 +-- includes/view/UserDriverLicenses_view.php | 17 +- includes/view/UserHintsRenderer.php | 52 +- includes/view/User_view.php | 429 +++++++-------- public/index.php | 258 +++++---- test/model/LogEntriesModelTest.php | 40 +- test/model/RoomModelTest.php | 41 +- 82 files changed, 6351 insertions(+), 6003 deletions(-) diff --git a/config/config.default.php b/config/config.default.php index 0b268c12..a832c8aa 100644 --- a/config/config.default.php +++ b/config/config.default.php @@ -47,10 +47,10 @@ $shift_sum_formula = "SUM( ))*(`Shifts`.`end` - `Shifts`.`start`)*(1 - 3 * `ShiftEntry`.`freeloaded`) )"; -// voucher calculation +// voucher calculation $voucher_settings = [ - "initial_vouchers" => 2, - "shifts_per_voucher" => 1 + "initial_vouchers" => 2, + "shifts_per_voucher" => 1 ]; // weigh every shift the same @@ -66,4 +66,3 @@ $config = [ 'pw' => "", 'db' => "engelsystem" ]; -?> diff --git a/includes/controller/angeltypes_controller.php b/includes/controller/angeltypes_controller.php index cd2aa3e4..26aaae71 100644 --- a/includes/controller/angeltypes_controller.php +++ b/includes/controller/angeltypes_controller.php @@ -3,17 +3,19 @@ /** * Text for Angeltype related links. */ -function angeltypes_title() { - return _("Angeltypes"); +function angeltypes_title() +{ + return _("Angeltypes"); } /** * Route angeltype actions. */ -function angeltypes_controller() { - $action = strip_request_item('action', 'list'); +function angeltypes_controller() +{ + $action = strip_request_item('action', 'list'); - switch ($action) { + switch ($action) { default: case 'list': return angeltypes_list_controller(); @@ -31,196 +33,202 @@ function angeltypes_controller() { /** * Path to angeltype view. * - * @param AngelType $angeltype_id + * @param AngelType $angeltype_id */ -function angeltype_link($angeltype_id) { - return page_link_to('angeltypes') . '&action=view&angeltype_id=' . $angeltype_id; +function angeltype_link($angeltype_id) +{ + return page_link_to('angeltypes') . '&action=view&angeltype_id=' . $angeltype_id; } /** * Job description for all angeltypes (public to everyone) */ -function angeltypes_about_controller() { - global $user; +function angeltypes_about_controller() +{ + global $user; - if (isset($user)) { - $angeltypes = AngelTypes_with_user($user); - } else { - $angeltypes = AngelTypes(); - } + if (isset($user)) { + $angeltypes = AngelTypes_with_user($user); + } else { + $angeltypes = AngelTypes(); + } - return [ + return [ _("Teams/Job description"), - AngelTypes_about_view($angeltypes, isset($user)) + AngelTypes_about_view($angeltypes, isset($user)) ]; } /** * Delete an Angeltype. */ -function angeltype_delete_controller() { - global $privileges; +function angeltype_delete_controller() +{ + global $privileges; - if (! in_array('admin_angel_types', $privileges)) { - redirect(page_link_to('angeltypes')); - } + if (! in_array('admin_angel_types', $privileges)) { + redirect(page_link_to('angeltypes')); + } - $angeltype = load_angeltype(); + $angeltype = load_angeltype(); - if (isset($_REQUEST['confirmed'])) { - AngelType_delete($angeltype); - success(sprintf(_("Angeltype %s deleted."), AngelType_name_render($angeltype))); - redirect(page_link_to('angeltypes')); - } + if (isset($_REQUEST['confirmed'])) { + AngelType_delete($angeltype); + success(sprintf(_("Angeltype %s deleted."), AngelType_name_render($angeltype))); + redirect(page_link_to('angeltypes')); + } - return [ + return [ sprintf(_("Delete angeltype %s"), $angeltype['name']), - AngelType_delete_view($angeltype) + AngelType_delete_view($angeltype) ]; } /** * Change an Angeltype. */ -function angeltype_edit_controller() { - global $privileges, $user; +function angeltype_edit_controller() +{ + global $privileges, $user; // In supporter mode only allow to modify description $supporter_mode = ! in_array('admin_angel_types', $privileges); - if (isset($_REQUEST['angeltype_id'])) { - // Edit existing angeltype + if (isset($_REQUEST['angeltype_id'])) { + // Edit existing angeltype $angeltype = load_angeltype(); - if (! User_is_AngelType_supporter($user, $angeltype)) { - redirect(page_link_to('angeltypes')); - } - } else { - // New angeltype - if ($supporter_mode) { - // Supporters aren't allowed to create new angeltypes. - redirect(page_link_to('angeltypes')); - } - $angeltype = AngelType_new(); - } - - if (isset($_REQUEST['submit'])) { - $valid = true; - - if (! $supporter_mode) { - if (isset($_REQUEST['name'])) { - $result = AngelType_validate_name($_REQUEST['name'], $angeltype); - $angeltype['name'] = $result->getValue(); - if (! $result->isValid()) { - $valid = false; - error(_("Please check the name. Maybe it already exists.")); + if (! User_is_AngelType_supporter($user, $angeltype)) { + redirect(page_link_to('angeltypes')); } - } - - $angeltype['restricted'] = isset($_REQUEST['restricted']); - $angeltype['no_self_signup'] = isset($_REQUEST['no_self_signup']); - - $angeltype['requires_driver_license'] = isset($_REQUEST['requires_driver_license']); + } else { + // New angeltype + if ($supporter_mode) { + // Supporters aren't allowed to create new angeltypes. + redirect(page_link_to('angeltypes')); } - - $angeltype['description'] = strip_request_item_nl('description', $angeltype['description']); - - if ($valid) { - if ($angeltype['id'] != null) { - AngelType_update($angeltype); - } else { - $angeltype = AngelType_create($angeltype); - } - - success("Angel type saved."); - redirect(angeltype_link($angeltype['id'])); + $angeltype = AngelType_new(); } - } - return [ + if (isset($_REQUEST['submit'])) { + $valid = true; + + if (! $supporter_mode) { + if (isset($_REQUEST['name'])) { + $result = AngelType_validate_name($_REQUEST['name'], $angeltype); + $angeltype['name'] = $result->getValue(); + if (! $result->isValid()) { + $valid = false; + error(_("Please check the name. Maybe it already exists.")); + } + } + + $angeltype['restricted'] = isset($_REQUEST['restricted']); + $angeltype['no_self_signup'] = isset($_REQUEST['no_self_signup']); + + $angeltype['requires_driver_license'] = isset($_REQUEST['requires_driver_license']); + } + + $angeltype['description'] = strip_request_item_nl('description', $angeltype['description']); + + if ($valid) { + if ($angeltype['id'] != null) { + AngelType_update($angeltype); + } else { + $angeltype = AngelType_create($angeltype); + } + + success("Angel type saved."); + redirect(angeltype_link($angeltype['id'])); + } + } + + return [ sprintf(_("Edit %s"), $angeltype['name']), - AngelType_edit_view($angeltype, $supporter_mode) + AngelType_edit_view($angeltype, $supporter_mode) ]; } /** * View details of a given angeltype. */ -function angeltype_controller() { - global $privileges, $user; +function angeltype_controller() +{ + global $privileges, $user; - if (! in_array('angeltypes', $privileges)) { - redirect('?'); - } + if (! in_array('angeltypes', $privileges)) { + redirect('?'); + } - $angeltype = load_angeltype(); - $user_angeltype = UserAngelType_by_User_and_AngelType($user, $angeltype); - $user_driver_license = UserDriverLicense($user['UID']); - $members = Users_by_angeltype($angeltype); + $angeltype = load_angeltype(); + $user_angeltype = UserAngelType_by_User_and_AngelType($user, $angeltype); + $user_driver_license = UserDriverLicense($user['UID']); + $members = Users_by_angeltype($angeltype); - return [ + return [ sprintf(_("Team %s"), $angeltype['name']), - AngelType_view($angeltype, $members, $user_angeltype, in_array('admin_user_angeltypes', $privileges) || $user_angeltype['supporter'], in_array('admin_angel_types', $privileges), $user_angeltype['supporter'], $user_driver_license, $user) + AngelType_view($angeltype, $members, $user_angeltype, in_array('admin_user_angeltypes', $privileges) || $user_angeltype['supporter'], in_array('admin_angel_types', $privileges), $user_angeltype['supporter'], $user_driver_license, $user) ]; } /** * View a list of all angeltypes. */ -function angeltypes_list_controller() { - global $privileges, $user; +function angeltypes_list_controller() +{ + global $privileges, $user; - if (! in_array('angeltypes', $privileges)) { - redirect('?'); - } + if (! in_array('angeltypes', $privileges)) { + redirect('?'); + } - $angeltypes = AngelTypes_with_user($user); + $angeltypes = AngelTypes_with_user($user); - foreach ($angeltypes as &$angeltype) { - $actions = [ - button(page_link_to('angeltypes') . '&action=view&angeltype_id=' . $angeltype['id'], _("view"), "btn-xs") + foreach ($angeltypes as &$angeltype) { + $actions = [ + button(page_link_to('angeltypes') . '&action=view&angeltype_id=' . $angeltype['id'], _("view"), "btn-xs") ]; - if (in_array('admin_angel_types', $privileges)) { - $actions[] = button(page_link_to('angeltypes') . '&action=edit&angeltype_id=' . $angeltype['id'], _("edit"), "btn-xs"); - $actions[] = button(page_link_to('angeltypes') . '&action=delete&angeltype_id=' . $angeltype['id'], _("delete"), "btn-xs"); - } + if (in_array('admin_angel_types', $privileges)) { + $actions[] = button(page_link_to('angeltypes') . '&action=edit&angeltype_id=' . $angeltype['id'], _("edit"), "btn-xs"); + $actions[] = button(page_link_to('angeltypes') . '&action=delete&angeltype_id=' . $angeltype['id'], _("delete"), "btn-xs"); + } - $angeltype['membership'] = AngelType_render_membership($angeltype); - if ($angeltype['user_angeltype_id'] != null) { - $actions[] = button(page_link_to('user_angeltypes') . '&action=delete&user_angeltype_id=' . $angeltype['user_angeltype_id'], _("leave"), "btn-xs"); - } else { - $actions[] = button(page_link_to('user_angeltypes') . '&action=add&angeltype_id=' . $angeltype['id'], _("join"), "btn-xs"); - } + $angeltype['membership'] = AngelType_render_membership($angeltype); + if ($angeltype['user_angeltype_id'] != null) { + $actions[] = button(page_link_to('user_angeltypes') . '&action=delete&user_angeltype_id=' . $angeltype['user_angeltype_id'], _("leave"), "btn-xs"); + } else { + $actions[] = button(page_link_to('user_angeltypes') . '&action=add&angeltype_id=' . $angeltype['id'], _("join"), "btn-xs"); + } - $angeltype['restricted'] = $angeltype['restricted'] ? glyph('lock') : ''; - $angeltype['no_self_signup'] = $angeltype['no_self_signup'] ? '' : glyph('share'); + $angeltype['restricted'] = $angeltype['restricted'] ? glyph('lock') : ''; + $angeltype['no_self_signup'] = $angeltype['no_self_signup'] ? '' : glyph('share'); - $angeltype['name'] = '' . $angeltype['name'] . ''; + $angeltype['name'] = '' . $angeltype['name'] . ''; - $angeltype['actions'] = table_buttons($actions); - } + $angeltype['actions'] = table_buttons($actions); + } - return [ + return [ angeltypes_title(), - AngelTypes_list_view($angeltypes, in_array('admin_angel_types', $privileges)) + AngelTypes_list_view($angeltypes, in_array('admin_angel_types', $privileges)) ]; } /** * Loads an angeltype from given angeltype_id request param. */ -function load_angeltype() { - if (! isset($_REQUEST['angeltype_id'])) { - redirect(page_link_to('angeltypes')); - } +function load_angeltype() +{ + if (! isset($_REQUEST['angeltype_id'])) { + redirect(page_link_to('angeltypes')); + } - $angeltype = AngelType($_REQUEST['angeltype_id']); - if ($angeltype == null) { - error(_("Angeltype doesn't exist.")); - redirect(page_link_to('angeltypes')); - } + $angeltype = AngelType($_REQUEST['angeltype_id']); + if ($angeltype == null) { + error(_("Angeltype doesn't exist.")); + redirect(page_link_to('angeltypes')); + } - return $angeltype; + return $angeltype; } -?> diff --git a/includes/controller/event_config_controller.php b/includes/controller/event_config_controller.php index 4f07fe4c..c93f8d63 100644 --- a/includes/controller/event_config_controller.php +++ b/includes/controller/event_config_controller.php @@ -1,103 +1,103 @@ getValue(); - $valid &= $result->isValid(); + $result = check_request_date('buildup_start_date', _("Please enter buildup start date."), true); + $buildup_start_date = $result->getValue(); + $valid &= $result->isValid(); - $result = check_request_date('event_start_date', _("Please enter event start date."), true); - $event_start_date = $result->getValue(); - $valid &= $result->isValid(); + $result = check_request_date('event_start_date', _("Please enter event start date."), true); + $event_start_date = $result->getValue(); + $valid &= $result->isValid(); - $result = check_request_date('event_end_date', _("Please enter event end date."), true); - $event_end_date = $result->getValue(); - $valid &= $result->isValid(); + $result = check_request_date('event_end_date', _("Please enter event end date."), true); + $event_end_date = $result->getValue(); + $valid &= $result->isValid(); - $result = check_request_date('teardown_end_date', _("Please enter teardown end date."), true); - $teardown_end_date = $result->getValue(); - $valid &= $result->isValid(); + $result = check_request_date('teardown_end_date', _("Please enter teardown end date."), true); + $teardown_end_date = $result->getValue(); + $valid &= $result->isValid(); - if ($buildup_start_date != null && $event_start_date != null && $buildup_start_date > $event_start_date) { - $valid = false; - error(_("The buildup start date has to be before the event start date.")); - } + if ($buildup_start_date != null && $event_start_date != null && $buildup_start_date > $event_start_date) { + $valid = false; + error(_("The buildup start date has to be before the event start date.")); + } - if ($event_start_date != null && $event_end_date != null && $event_start_date > $event_end_date) { - $valid = false; - error(_("The event start date has to be before the event end date.")); - } + if ($event_start_date != null && $event_end_date != null && $event_start_date > $event_end_date) { + $valid = false; + error(_("The event start date has to be before the event end date.")); + } - if ($event_end_date != null && $teardown_end_date != null && $event_end_date > $teardown_end_date) { - $valid = false; - error(_("The event end date has to be before the teardown end date.")); - } + if ($event_end_date != null && $teardown_end_date != null && $event_end_date > $teardown_end_date) { + $valid = false; + error(_("The event end date has to be before the teardown end date.")); + } - if ($buildup_start_date != null && $teardown_end_date != null && $buildup_start_date > $teardown_end_date) { - $valid = false; - error(_("The buildup start date has to be before the teardown end date.")); - } + if ($buildup_start_date != null && $teardown_end_date != null && $buildup_start_date > $teardown_end_date) { + $valid = false; + error(_("The buildup start date has to be before the teardown end date.")); + } - if ($valid) { - $result = EventConfig_update($event_name, $buildup_start_date, $event_start_date, $event_end_date, $teardown_end_date, $event_welcome_msg); + if ($valid) { + $result = EventConfig_update($event_name, $buildup_start_date, $event_start_date, $event_end_date, $teardown_end_date, $event_welcome_msg); - if ($result === false) { - engelsystem_error("Unable to update event config."); - } + if ($result === false) { + engelsystem_error("Unable to update event config."); + } - engelsystem_log("Changed event config: $event_name, $event_welcome_msg, " . date("Y-m-d", $buildup_start_date) . ", " . date("Y-m-d", $event_start_date) . ", " . date("Y-m-d", $event_end_date) . ", " . date("Y-m-d", $teardown_end_date)); - success(_("Settings saved.")); - redirect(page_link_to('admin_event_config')); + engelsystem_log("Changed event config: $event_name, $event_welcome_msg, " . date("Y-m-d", $buildup_start_date) . ", " . date("Y-m-d", $event_start_date) . ", " . date("Y-m-d", $event_end_date) . ", " . date("Y-m-d", $teardown_end_date)); + success(_("Settings saved.")); + redirect(page_link_to('admin_event_config')); + } } - } - return [ + return [ event_config_title(), - EventConfig_edit_view($event_name, $event_welcome_msg, $buildup_start_date, $event_start_date, $event_end_date, $teardown_end_date) + EventConfig_edit_view($event_name, $event_welcome_msg, $buildup_start_date, $event_start_date, $event_end_date, $teardown_end_date) ]; } - -?> \ No newline at end of file diff --git a/includes/controller/rooms_controller.php b/includes/controller/rooms_controller.php index a79034fb..2e45dead 100644 --- a/includes/controller/rooms_controller.php +++ b/includes/controller/rooms_controller.php @@ -10,56 +10,58 @@ use Engelsystem\ShiftCalendarRenderer; /** * View a room with its shifts. */ -function room_controller() { - global $privileges; +function room_controller() +{ + global $privileges; - if (! in_array('view_rooms', $privileges)) { - redirect(page_link_to()); - } - - $room = load_room(); - $all_shifts = Shifts_by_room($room); - $days = []; - foreach ($all_shifts as $shift) { - $day = date("Y-m-d", $shift['start']); - if (! in_array($day, $days)) { - $days[] = $day; + if (! in_array('view_rooms', $privileges)) { + redirect(page_link_to()); } - } - $shiftsFilter = new ShiftsFilter(true, [ - $room['RID'] + $room = load_room(); + $all_shifts = Shifts_by_room($room); + $days = []; + foreach ($all_shifts as $shift) { + $day = date("Y-m-d", $shift['start']); + if (! in_array($day, $days)) { + $days[] = $day; + } + } + + $shiftsFilter = new ShiftsFilter(true, [ + $room['RID'] ], AngelType_ids()); - $selected_day = date("Y-m-d"); - if (! empty($days)) { - $selected_day = $days[0]; - } - if (isset($_REQUEST['shifts_filter_day'])) { - $selected_day = $_REQUEST['shifts_filter_day']; - } - $shiftsFilter->setStartTime(parse_date("Y-m-d H:i", $selected_day . ' 00:00')); - $shiftsFilter->setEndTime(parse_date("Y-m-d H:i", $selected_day . ' 23:59')); + $selected_day = date("Y-m-d"); + if (! empty($days)) { + $selected_day = $days[0]; + } + if (isset($_REQUEST['shifts_filter_day'])) { + $selected_day = $_REQUEST['shifts_filter_day']; + } + $shiftsFilter->setStartTime(parse_date("Y-m-d H:i", $selected_day . ' 00:00')); + $shiftsFilter->setEndTime(parse_date("Y-m-d H:i", $selected_day . ' 23:59')); - $shiftsFilterRenderer = new ShiftsFilterRenderer($shiftsFilter); - $shiftsFilterRenderer->enableDaySelection($days); + $shiftsFilterRenderer = new ShiftsFilterRenderer($shiftsFilter); + $shiftsFilterRenderer->enableDaySelection($days); - $shiftCalendarRenderer = shiftCalendarRendererByShiftFilter($shiftsFilter); + $shiftCalendarRenderer = shiftCalendarRendererByShiftFilter($shiftsFilter); - return [ + return [ $room['Name'], - Room_view($room, $shiftsFilterRenderer, $shiftCalendarRenderer) + Room_view($room, $shiftsFilterRenderer, $shiftCalendarRenderer) ]; } /** * Dispatch different room actions. */ -function rooms_controller() { - if (! isset($_REQUEST['action'])) { - $_REQUEST['action'] = 'list'; - } +function rooms_controller() +{ + if (! isset($_REQUEST['action'])) { + $_REQUEST['action'] = 'list'; + } - switch ($_REQUEST['action']) { + switch ($_REQUEST['action']) { default: case 'list': redirect(page_link_to('admin_rooms')); @@ -68,28 +70,29 @@ function rooms_controller() { } } -function room_link($room) { - return page_link_to('rooms') . '&action=view&room_id=' . $room['RID']; +function room_link($room) +{ + return page_link_to('rooms') . '&action=view&room_id=' . $room['RID']; } -function room_edit_link($room) { - return page_link_to('admin_rooms') . '&show=edit&id=' . $room['RID']; +function room_edit_link($room) +{ + return page_link_to('admin_rooms') . '&show=edit&id=' . $room['RID']; } /** * Loads room by request param room_id */ -function load_room() { - if (! test_request_int('room_id')) { - redirect(page_link_to()); - } +function load_room() +{ + if (! test_request_int('room_id')) { + redirect(page_link_to()); + } - $room = Room($_REQUEST['room_id']); - if ($room == null) { - redirect(page_link_to()); - } + $room = Room($_REQUEST['room_id']); + if ($room == null) { + redirect(page_link_to()); + } - return $room; + return $room; } - -?> \ No newline at end of file diff --git a/includes/controller/shift_entries_controller.php b/includes/controller/shift_entries_controller.php index d0a12288..7fce4626 100644 --- a/includes/controller/shift_entries_controller.php +++ b/includes/controller/shift_entries_controller.php @@ -3,159 +3,160 @@ /** * Sign up for a shift. */ -function shift_entry_add_controller() { - global $privileges, $user; +function shift_entry_add_controller() +{ + global $privileges, $user; - if (isset($_REQUEST['shift_id']) && preg_match("/^[0-9]*$/", $_REQUEST['shift_id'])) { - $shift_id = $_REQUEST['shift_id']; - } else { - redirect(page_link_to('user_shifts')); - } + if (isset($_REQUEST['shift_id']) && preg_match("/^[0-9]*$/", $_REQUEST['shift_id'])) { + $shift_id = $_REQUEST['shift_id']; + } else { + redirect(page_link_to('user_shifts')); + } // Locations laden $rooms = sql_select("SELECT * FROM `Room` WHERE `show`='Y' ORDER BY `Name`"); - $room_array = []; - foreach ($rooms as $room) { - $room_array[$room['RID']] = $room['Name']; - } + $room_array = []; + foreach ($rooms as $room) { + $room_array[$room['RID']] = $room['Name']; + } - $shift = Shift($shift_id); - $shift['Name'] = $room_array[$shift['RID']]; - if ($shift == null) { - redirect(page_link_to('user_shifts')); - } - - if (isset($_REQUEST['type_id']) && preg_match("/^[0-9]*$/", $_REQUEST['type_id'])) { - $type_id = $_REQUEST['type_id']; - } else { - redirect(page_link_to('user_shifts')); - } - - if (in_array('user_shifts_admin', $privileges) || in_array('shiftentry_edit_angeltype_supporter', $privileges)) { - $type = AngelType($type_id); - } else { - $type = sql_select("SELECT * FROM `UserAngelTypes` JOIN `AngelTypes` ON (`UserAngelTypes`.`angeltype_id` = `AngelTypes`.`id`) WHERE `AngelTypes`.`id` = '" . sql_escape($type_id) . "' AND (`AngelTypes`.`restricted` = 0 OR (`UserAngelTypes`.`user_id` = '" . sql_escape($user['UID']) . "' AND NOT `UserAngelTypes`.`confirm_user_id` IS NULL))"); - $type = $type[0]; - } - - if ($type == null) { - redirect(page_link_to('user_shifts')); - } - - if (isset($_REQUEST['user_id']) && preg_match("/^[0-9]*$/", $_REQUEST['user_id']) && (in_array('user_shifts_admin', $privileges) || in_array('shiftentry_edit_angeltype_supporter', $privileges))) { - $user_id = $_REQUEST['user_id']; - } else { - $user_id = $user['UID']; - } - - $needed_angeltype = NeededAngeltype_by_Shift_and_Angeltype($shift, $type); - $shift_entries = ShiftEntries_by_shift_and_angeltype($shift['SID'], $type['id']); - - $shift_signup_allowed = Shift_signup_allowed(User($user_id), $shift, $type, null, null, $needed_angeltype, $shift_entries); - if (! $shift_signup_allowed->isSignupAllowed()) { - error(_("You are not allowed to sign up for this shift. Maybe shift is full or already running.")); - redirect(shift_link($shift)); - } - - if (isset($_REQUEST['submit'])) { - $selected_type_id = $type_id; - if (in_array('user_shifts_admin', $privileges) || in_array('shiftentry_edit_angeltype_supporter', $privileges)) { - - if (sql_num_query("SELECT * FROM `User` WHERE `UID`='" . sql_escape($user_id) . "' LIMIT 1") == 0) { + $shift = Shift($shift_id); + $shift['Name'] = $room_array[$shift['RID']]; + if ($shift == null) { redirect(page_link_to('user_shifts')); - } + } + + if (isset($_REQUEST['type_id']) && preg_match("/^[0-9]*$/", $_REQUEST['type_id'])) { + $type_id = $_REQUEST['type_id']; + } else { + redirect(page_link_to('user_shifts')); + } + + if (in_array('user_shifts_admin', $privileges) || in_array('shiftentry_edit_angeltype_supporter', $privileges)) { + $type = AngelType($type_id); + } else { + $type = sql_select("SELECT * FROM `UserAngelTypes` JOIN `AngelTypes` ON (`UserAngelTypes`.`angeltype_id` = `AngelTypes`.`id`) WHERE `AngelTypes`.`id` = '" . sql_escape($type_id) . "' AND (`AngelTypes`.`restricted` = 0 OR (`UserAngelTypes`.`user_id` = '" . sql_escape($user['UID']) . "' AND NOT `UserAngelTypes`.`confirm_user_id` IS NULL))"); + $type = $type[0]; + } + + if ($type == null) { + redirect(page_link_to('user_shifts')); + } + + if (isset($_REQUEST['user_id']) && preg_match("/^[0-9]*$/", $_REQUEST['user_id']) && (in_array('user_shifts_admin', $privileges) || in_array('shiftentry_edit_angeltype_supporter', $privileges))) { + $user_id = $_REQUEST['user_id']; + } else { + $user_id = $user['UID']; + } + + $needed_angeltype = NeededAngeltype_by_Shift_and_Angeltype($shift, $type); + $shift_entries = ShiftEntries_by_shift_and_angeltype($shift['SID'], $type['id']); + + $shift_signup_allowed = Shift_signup_allowed(User($user_id), $shift, $type, null, null, $needed_angeltype, $shift_entries); + if (! $shift_signup_allowed->isSignupAllowed()) { + error(_("You are not allowed to sign up for this shift. Maybe shift is full or already running.")); + redirect(shift_link($shift)); + } + + if (isset($_REQUEST['submit'])) { + $selected_type_id = $type_id; + if (in_array('user_shifts_admin', $privileges) || in_array('shiftentry_edit_angeltype_supporter', $privileges)) { + if (sql_num_query("SELECT * FROM `User` WHERE `UID`='" . sql_escape($user_id) . "' LIMIT 1") == 0) { + redirect(page_link_to('user_shifts')); + } - if (isset($_REQUEST['angeltype_id']) && test_request_int('angeltype_id') && sql_num_query("SELECT * FROM `AngelTypes` WHERE `id`='" . sql_escape($_REQUEST['angeltype_id']) . "' LIMIT 1") > 0) { - $selected_type_id = $_REQUEST['angeltype_id']; - } - } + if (isset($_REQUEST['angeltype_id']) && test_request_int('angeltype_id') && sql_num_query("SELECT * FROM `AngelTypes` WHERE `id`='" . sql_escape($_REQUEST['angeltype_id']) . "' LIMIT 1") > 0) { + $selected_type_id = $_REQUEST['angeltype_id']; + } + } - if (sql_num_query("SELECT * FROM `ShiftEntry` WHERE `SID`='" . sql_escape($shift['SID']) . "' AND `UID` = '" . sql_escape($user_id) . "'")) { - return error("This angel does already have an entry for this shift.", true); - } + if (sql_num_query("SELECT * FROM `ShiftEntry` WHERE `SID`='" . sql_escape($shift['SID']) . "' AND `UID` = '" . sql_escape($user_id) . "'")) { + return error("This angel does already have an entry for this shift.", true); + } - $freeloaded = $shift['freeloaded']; - $freeload_comment = $shift['freeload_comment']; - if (in_array("user_shifts_admin", $privileges)) { - $freeloaded = isset($_REQUEST['freeloaded']); - $freeload_comment = strip_request_item_nl('freeload_comment'); - } + $freeloaded = $shift['freeloaded']; + $freeload_comment = $shift['freeload_comment']; + if (in_array("user_shifts_admin", $privileges)) { + $freeloaded = isset($_REQUEST['freeloaded']); + $freeload_comment = strip_request_item_nl('freeload_comment'); + } - $comment = strip_request_item_nl('comment'); - $result = ShiftEntry_create([ + $comment = strip_request_item_nl('comment'); + $result = ShiftEntry_create([ 'SID' => $shift_id, 'TID' => $selected_type_id, 'UID' => $user_id, 'Comment' => $comment, 'freeloaded' => $freeloaded, - 'freeload_comment' => $freeload_comment + 'freeload_comment' => $freeload_comment ]); - if ($result === false) { - engelsystem_error('Unable to create shift entry.'); - } + if ($result === false) { + engelsystem_error('Unable to create shift entry.'); + } - if ($type['restricted'] == 0 && sql_num_query("SELECT * FROM `UserAngelTypes` INNER JOIN `AngelTypes` ON `AngelTypes`.`id` = `UserAngelTypes`.`angeltype_id` WHERE `angeltype_id` = '" . sql_escape($selected_type_id) . "' AND `user_id` = '" . sql_escape($user_id) . "'") == 0) { - sql_query("INSERT INTO `UserAngelTypes` (`user_id`, `angeltype_id`) VALUES ('" . sql_escape($user_id) . "', '" . sql_escape($selected_type_id) . "')"); - } + if ($type['restricted'] == 0 && sql_num_query("SELECT * FROM `UserAngelTypes` INNER JOIN `AngelTypes` ON `AngelTypes`.`id` = `UserAngelTypes`.`angeltype_id` WHERE `angeltype_id` = '" . sql_escape($selected_type_id) . "' AND `user_id` = '" . sql_escape($user_id) . "'") == 0) { + sql_query("INSERT INTO `UserAngelTypes` (`user_id`, `angeltype_id`) VALUES ('" . sql_escape($user_id) . "', '" . sql_escape($selected_type_id) . "')"); + } - $user_source = User($user_id); - engelsystem_log("User " . User_Nick_render($user_source) . " signed up for shift " . $shift['name'] . " from " . date("Y-m-d H:i", $shift['start']) . " to " . date("Y-m-d H:i", $shift['end'])); - success(_("You are subscribed. Thank you!") . ' ' . _("My shifts") . ' »'); - redirect(shift_link($shift)); - } + $user_source = User($user_id); + engelsystem_log("User " . User_Nick_render($user_source) . " signed up for shift " . $shift['name'] . " from " . date("Y-m-d H:i", $shift['start']) . " to " . date("Y-m-d H:i", $shift['end'])); + success(_("You are subscribed. Thank you!") . ' ' . _("My shifts") . ' »'); + redirect(shift_link($shift)); + } - if (in_array('user_shifts_admin', $privileges)) { - $users = sql_select("SELECT *, (SELECT count(*) FROM `ShiftEntry` WHERE `freeloaded`=1 AND `ShiftEntry`.`UID`=`User`.`UID`) AS `freeloaded` FROM `User` ORDER BY `Nick`"); - $users_select = []; - foreach ($users as $usr) { - $users_select[$usr['UID']] = $usr['Nick'] . ($usr['freeloaded'] == 0 ? "" : " (" . _("Freeloader") . ")"); - } - $user_text = html_select_key('user_id', 'user_id', $users_select, $user['UID']); + if (in_array('user_shifts_admin', $privileges)) { + $users = sql_select("SELECT *, (SELECT count(*) FROM `ShiftEntry` WHERE `freeloaded`=1 AND `ShiftEntry`.`UID`=`User`.`UID`) AS `freeloaded` FROM `User` ORDER BY `Nick`"); + $users_select = []; + foreach ($users as $usr) { + $users_select[$usr['UID']] = $usr['Nick'] . ($usr['freeloaded'] == 0 ? "" : " (" . _("Freeloader") . ")"); + } + $user_text = html_select_key('user_id', 'user_id', $users_select, $user['UID']); - $angeltypes_source = sql_select("SELECT * FROM `AngelTypes` ORDER BY `name`"); - $angeltypes = []; - foreach ($angeltypes_source as $angeltype) { - $angeltypes[$angeltype['id']] = $angeltype['name']; - } - $angeltype_select = html_select_key('angeltype_id', 'angeltype_id', $angeltypes, $type['id']); - } elseif (in_array('shiftentry_edit_angeltype_supporter', $privileges)) { - $users = Users_by_angeltype($type); - $users_select = []; - foreach ($users as $usr) { - if (! $type['restricted'] || $usr['confirm_user_id'] != null) { - $users_select[$usr['UID']] = $usr['Nick']; - } - } - $user_text = html_select_key('user_id', 'user_id', $users_select, $user['UID']); + $angeltypes_source = sql_select("SELECT * FROM `AngelTypes` ORDER BY `name`"); + $angeltypes = []; + foreach ($angeltypes_source as $angeltype) { + $angeltypes[$angeltype['id']] = $angeltype['name']; + } + $angeltype_select = html_select_key('angeltype_id', 'angeltype_id', $angeltypes, $type['id']); + } elseif (in_array('shiftentry_edit_angeltype_supporter', $privileges)) { + $users = Users_by_angeltype($type); + $users_select = []; + foreach ($users as $usr) { + if (! $type['restricted'] || $usr['confirm_user_id'] != null) { + $users_select[$usr['UID']] = $usr['Nick']; + } + } + $user_text = html_select_key('user_id', 'user_id', $users_select, $user['UID']); - $angeltypes_source = User_angeltypes($user); - $angeltypes = []; - foreach ($angeltypes_source as $angeltype) { - if ($angeltype['supporter']) { - $angeltypes[$angeltype['id']] = $angeltype['name']; - } - $angeltype_select = html_select_key('angeltype_id', 'angeltype_id', $angeltypes, $type['id']); + $angeltypes_source = User_angeltypes($user); + $angeltypes = []; + foreach ($angeltypes_source as $angeltype) { + if ($angeltype['supporter']) { + $angeltypes[$angeltype['id']] = $angeltype['name']; + } + $angeltype_select = html_select_key('angeltype_id', 'angeltype_id', $angeltypes, $type['id']); + } + } else { + $user_text = User_Nick_render($user); + $angeltype_select = $type['name']; } - } else { - $user_text = User_Nick_render($user); - $angeltype_select = $type['name']; - } - return ShiftEntry_edit_view($user_text, date("Y-m-d H:i", $shift['start']) . ' – ' . date('Y-m-d H:i', $shift['end']) . ' (' . shift_length($shift) . ')', $shift['Name'], $shift['name'], $angeltype_select, "", false, null, in_array('user_shifts_admin', $privileges)); + return ShiftEntry_edit_view($user_text, date("Y-m-d H:i", $shift['start']) . ' – ' . date('Y-m-d H:i', $shift['end']) . ' (' . shift_length($shift) . ')', $shift['Name'], $shift['name'], $angeltype_select, "", false, null, in_array('user_shifts_admin', $privileges)); } /** * Remove somebody from a shift. */ -function shift_entry_delete_controller() { - global $privileges, $user; +function shift_entry_delete_controller() +{ + global $privileges, $user; - if (! isset($_REQUEST['entry_id']) || ! test_request_int('entry_id')) { - redirect(page_link_to('user_shifts')); - } - $entry_id = $_REQUEST['entry_id']; + if (! isset($_REQUEST['entry_id']) || ! test_request_int('entry_id')) { + redirect(page_link_to('user_shifts')); + } + $entry_id = $_REQUEST['entry_id']; - $shift_entry_source = sql_select(" + $shift_entry_source = sql_select(" SELECT `User`.`Nick`, `ShiftEntry`.`Comment`, `ShiftEntry`.`UID`, `ShiftTypes`.`name`, `Shifts`.*, `Room`.`Name`, `AngelTypes`.`name` as `angel_type`, `AngelTypes`.`id` as `angeltype_id` FROM `ShiftEntry` JOIN `User` ON (`User`.`UID`=`ShiftEntry`.`UID`) @@ -164,24 +165,22 @@ function shift_entry_delete_controller() { JOIN `ShiftTypes` ON (`ShiftTypes`.`id` = `Shifts`.`shifttype_id`) JOIN `Room` ON (`Shifts`.`RID` = `Room`.`RID`) WHERE `ShiftEntry`.`id`='" . sql_escape($entry_id) . "'"); - if (count($shift_entry_source) > 0) { - $shift_entry_source = $shift_entry_source[0]; + if (count($shift_entry_source) > 0) { + $shift_entry_source = $shift_entry_source[0]; - if (!in_array('user_shifts_admin', $privileges) && (!in_array('shiftentry_edit_angeltype_supporter', $privileges) || !User_is_AngelType_supporter($user, AngelType($shift_entry_source['angeltype_id'])))) { - redirect(page_link_to('user_shifts')); + if (!in_array('user_shifts_admin', $privileges) && (!in_array('shiftentry_edit_angeltype_supporter', $privileges) || !User_is_AngelType_supporter($user, AngelType($shift_entry_source['angeltype_id'])))) { + redirect(page_link_to('user_shifts')); + } + + $result = ShiftEntry_delete($entry_id); + if ($result === false) { + engelsystem_error('Unable to delete shift entry.'); + } + + engelsystem_log("Deleted " . User_Nick_render($shift_entry_source) . "'s shift: " . $shift_entry_source['name'] . " at " . $shift_entry_source['Name'] . " from " . date("Y-m-d H:i", $shift_entry_source['start']) . " to " . date("Y-m-d H:i", $shift_entry_source['end']) . " as " . $shift_entry_source['angel_type']); + success(_("Shift entry deleted.")); + } else { + error(_("Entry not found.")); } - - $result = ShiftEntry_delete($entry_id); - if ($result === false) { - engelsystem_error('Unable to delete shift entry.'); - } - - engelsystem_log("Deleted " . User_Nick_render($shift_entry_source) . "'s shift: " . $shift_entry_source['name'] . " at " . $shift_entry_source['Name'] . " from " . date("Y-m-d H:i", $shift_entry_source['start']) . " to " . date("Y-m-d H:i", $shift_entry_source['end']) . " as " . $shift_entry_source['angel_type']); - success(_("Shift entry deleted.")); - } else { - error(_("Entry not found.")); - } - redirect(shift_link($shift_entry_source)); + redirect(shift_link($shift_entry_source)); } - -?> \ No newline at end of file diff --git a/includes/controller/shifts_controller.php b/includes/controller/shifts_controller.php index 9ac8a766..69d0de1f 100644 --- a/includes/controller/shifts_controller.php +++ b/includes/controller/shifts_controller.php @@ -1,136 +1,140 @@ = $end) { - $valid = false; - $msg .= error(_("The ending time has to be after the starting time."), true); - } - - foreach ($needed_angel_types as $needed_angeltype_id => $needed_angeltype_name) { - if (isset($_REQUEST['type_' . $needed_angeltype_id]) && test_request_int('type_' . $needed_angeltype_id)) { - $needed_angel_types[$needed_angeltype_id] = trim($_REQUEST['type_' . $needed_angeltype_id]); - } else { $valid = false; - $msg .= error(sprintf(_("Please check your input for needed angels of type %s."), $needed_angeltype_name), true); - } + $msg .= error(_("Please select a room."), true); } - if ($valid) { - $shift['shifttype_id'] = $shifttype_id; - $shift['title'] = $title; - $shift['RID'] = $rid; - $shift['start'] = $start; - $shift['end'] = $end; + if (isset($_REQUEST['shifttype_id']) && isset($shifttypes[$_REQUEST['shifttype_id']])) { + $shifttype_id = $_REQUEST['shifttype_id']; + } else { + $valid = false; + $msg .= error(_('Please select a shifttype.'), true); + } + + if (isset($_REQUEST['start']) && $tmp = parse_date("Y-m-d H:i", $_REQUEST['start'])) { + $start = $tmp; + } else { + $valid = false; + $msg .= error(_("Please enter a valid starting time for the shifts."), true); + } + + if (isset($_REQUEST['end']) && $tmp = parse_date("Y-m-d H:i", $_REQUEST['end'])) { + $end = $tmp; + } else { + $valid = false; + $msg .= error(_("Please enter a valid ending time for the shifts."), true); + } + + if ($start >= $end) { + $valid = false; + $msg .= error(_("The ending time has to be after the starting time."), true); + } + + foreach ($needed_angel_types as $needed_angeltype_id => $needed_angeltype_name) { + if (isset($_REQUEST['type_' . $needed_angeltype_id]) && test_request_int('type_' . $needed_angeltype_id)) { + $needed_angel_types[$needed_angeltype_id] = trim($_REQUEST['type_' . $needed_angeltype_id]); + } else { + $valid = false; + $msg .= error(sprintf(_("Please check your input for needed angels of type %s."), $needed_angeltype_name), true); + } + } + + if ($valid) { + $shift['shifttype_id'] = $shifttype_id; + $shift['title'] = $title; + $shift['RID'] = $rid; + $shift['start'] = $start; + $shift['end'] = $end; - $result = Shift_update($shift); - if ($result === false) { - engelsystem_error('Unable to update shift.'); - } - NeededAngelTypes_delete_by_shift($shift_id); - $needed_angel_types_info = []; - foreach ($needed_angel_types as $type_id => $count) { - NeededAngelType_add($shift_id, $type_id, null, $count); - $needed_angel_types_info[] = $angeltypes[$type_id] . ": " . $count; - } + $result = Shift_update($shift); + if ($result === false) { + engelsystem_error('Unable to update shift.'); + } + NeededAngelTypes_delete_by_shift($shift_id); + $needed_angel_types_info = []; + foreach ($needed_angel_types as $type_id => $count) { + NeededAngelType_add($shift_id, $type_id, null, $count); + $needed_angel_types_info[] = $angeltypes[$type_id] . ": " . $count; + } - engelsystem_log("Updated shift '" . $shifttypes[$shifttype_id] . ", " . $title . "' from " . date("Y-m-d H:i", $start) . " to " . date("Y-m-d H:i", $end) . " with angel types " . join(", ", $needed_angel_types_info)); - success(_("Shift updated.")); + engelsystem_log("Updated shift '" . $shifttypes[$shifttype_id] . ", " . $title . "' from " . date("Y-m-d H:i", $start) . " to " . date("Y-m-d H:i", $end) . " with angel types " . join(", ", $needed_angel_types_info)); + success(_("Shift updated.")); - redirect(shift_link([ - 'SID' => $shift_id + redirect(shift_link([ + 'SID' => $shift_id ])); + } } - } - $angel_types_spinner = ""; - foreach ($angeltypes as $angeltype_id => $angeltype_name) { - $angel_types_spinner .= form_spinner('type_' . $angeltype_id, $angeltype_name, $needed_angel_types[$angeltype_id]); - } + $angel_types_spinner = ""; + foreach ($angeltypes as $angeltype_id => $angeltype_name) { + $angel_types_spinner .= form_spinner('type_' . $angeltype_id, $angeltype_name, $needed_angel_types[$angeltype_id]); + } - return page_with_title(shifts_title(), [ + return page_with_title(shifts_title(), [ msg(), '', form([ @@ -141,92 +145,95 @@ function shift_edit_controller() { form_text('end', _("End:"), date("Y-m-d H:i", $end)), '

' . _("Needed angels") . '

', $angel_types_spinner, - form_submit('submit', _("Save")) - ]) + form_submit('submit', _("Save")) + ]) ]); } -function shift_delete_controller() { - global $privileges; +function shift_delete_controller() +{ + global $privileges; - if (! in_array('user_shifts_admin', $privileges)) { - redirect(page_link_to('user_shifts')); - } + if (! in_array('user_shifts_admin', $privileges)) { + redirect(page_link_to('user_shifts')); + } // Schicht komplett löschen (nur für admins/user mit user_shifts_admin privileg) if (! isset($_REQUEST['delete_shift']) || ! preg_match("/^[0-9]*$/", $_REQUEST['delete_shift'])) { - redirect(page_link_to('user_shifts')); + redirect(page_link_to('user_shifts')); } - $shift_id = $_REQUEST['delete_shift']; + $shift_id = $_REQUEST['delete_shift']; - $shift = Shift($shift_id); - if ($shift == null) { - redirect(page_link_to('user_shifts')); - } + $shift = Shift($shift_id); + if ($shift == null) { + redirect(page_link_to('user_shifts')); + } // Schicht löschen bestätigt if (isset($_REQUEST['delete'])) { - Shift_delete($shift_id); + Shift_delete($shift_id); - engelsystem_log("Deleted shift " . $shift['name'] . " from " . date("Y-m-d H:i", $shift['start']) . " to " . date("Y-m-d H:i", $shift['end'])); - success(_("Shift deleted.")); - redirect(page_link_to('user_shifts')); + engelsystem_log("Deleted shift " . $shift['name'] . " from " . date("Y-m-d H:i", $shift['start']) . " to " . date("Y-m-d H:i", $shift['end'])); + success(_("Shift deleted.")); + redirect(page_link_to('user_shifts')); } - return page_with_title(shifts_title(), [ + return page_with_title(shifts_title(), [ error(sprintf(_("Do you want to delete the shift %s from %s to %s?"), $shift['name'], date("Y-m-d H:i", $shift['start']), date("H:i", $shift['end'])), true), - '' . _("delete") . '' + '' . _("delete") . '' ]); } -function shift_controller() { - global $user, $privileges; +function shift_controller() +{ + global $user, $privileges; - if (! in_array('user_shifts', $privileges)) { - redirect(page_link_to('?')); - } - - if (! isset($_REQUEST['shift_id'])) { - redirect(page_link_to('user_shifts')); - } - - $shift = Shift($_REQUEST['shift_id']); - if ($shift == null) { - error(_("Shift could not be found.")); - redirect(page_link_to('user_shifts')); - } - - $shifttype = ShiftType($shift['shifttype_id']); - $room = Room($shift['RID']); - $angeltypes = AngelTypes(); - $user_shifts = Shifts_by_user($user); - - $shift_signup_state = new ShiftSignupState(ShiftSignupState::OCCUPIED, 0); - foreach ($angeltypes as &$angeltype) { - $needed_angeltype = NeededAngeltype_by_Shift_and_Angeltype($shift, $angeltype); - $shift_entries = ShiftEntries_by_shift_and_angeltype($shift['SID'], $angeltype['id']); - - $angeltype_signup_state = Shift_signup_allowed($user, $shift, $angeltype, null, $user_shifts, $needed_angeltype, $shift_entries); - if ($shift_signup_state == null) { - $shift_signup_state = $angeltype_signup_state; - } else { - $shift_signup_state->combineWith($angeltype_signup_state); + if (! in_array('user_shifts', $privileges)) { + redirect(page_link_to('?')); } - $angeltype['shift_signup_state'] = $angeltype_signup_state; - } - return [ + if (! isset($_REQUEST['shift_id'])) { + redirect(page_link_to('user_shifts')); + } + + $shift = Shift($_REQUEST['shift_id']); + if ($shift == null) { + error(_("Shift could not be found.")); + redirect(page_link_to('user_shifts')); + } + + $shifttype = ShiftType($shift['shifttype_id']); + $room = Room($shift['RID']); + $angeltypes = AngelTypes(); + $user_shifts = Shifts_by_user($user); + + $shift_signup_state = new ShiftSignupState(ShiftSignupState::OCCUPIED, 0); + foreach ($angeltypes as &$angeltype) { + $needed_angeltype = NeededAngeltype_by_Shift_and_Angeltype($shift, $angeltype); + $shift_entries = ShiftEntries_by_shift_and_angeltype($shift['SID'], $angeltype['id']); + + $angeltype_signup_state = Shift_signup_allowed($user, $shift, $angeltype, null, $user_shifts, $needed_angeltype, $shift_entries); + if ($shift_signup_state == null) { + $shift_signup_state = $angeltype_signup_state; + } else { + $shift_signup_state->combineWith($angeltype_signup_state); + } + $angeltype['shift_signup_state'] = $angeltype_signup_state; + } + + return [ $shift['name'], - Shift_view($shift, $shifttype, $room, $angeltypes, $shift_signup_state) + Shift_view($shift, $shifttype, $room, $angeltypes, $shift_signup_state) ]; } -function shifts_controller() { - if (! isset($_REQUEST['action'])) { - redirect(page_link_to('user_shifts')); - } +function shifts_controller() +{ + if (! isset($_REQUEST['action'])) { + redirect(page_link_to('user_shifts')); + } - switch ($_REQUEST['action']) { + switch ($_REQUEST['action']) { default: redirect(page_link_to('?')); case 'view': @@ -239,86 +246,88 @@ function shifts_controller() { /** * Redirects the user to his next shift. */ -function shift_next_controller() { - global $user, $privileges; +function shift_next_controller() +{ + global $user, $privileges; - if (! in_array('user_shifts', $privileges)) { - redirect(page_link_to('?')); - } + if (! in_array('user_shifts', $privileges)) { + redirect(page_link_to('?')); + } - $upcoming_shifts = ShiftEntries_upcoming_for_user($user); - if ($upcoming_shifts === false) { - return false; - } + $upcoming_shifts = ShiftEntries_upcoming_for_user($user); + if ($upcoming_shifts === false) { + return false; + } - if (count($upcoming_shifts) > 0) { - redirect(shift_link($upcoming_shifts[0])); - } + if (count($upcoming_shifts) > 0) { + redirect(shift_link($upcoming_shifts[0])); + } - redirect(page_link_to('user_shifts')); + redirect(page_link_to('user_shifts')); } /** * Export all shifts using api-key. */ -function shifts_json_export_all_controller() { - global $api_key; +function shifts_json_export_all_controller() +{ + global $api_key; - if ($api_key == "") { - engelsystem_error("Config contains empty apikey."); - } + if ($api_key == "") { + engelsystem_error("Config contains empty apikey."); + } - if (! isset($_REQUEST['api_key'])) { - engelsystem_error("Missing parameter api_key."); - } + if (! isset($_REQUEST['api_key'])) { + engelsystem_error("Missing parameter api_key."); + } - if ($_REQUEST['api_key'] != $api_key) { - engelsystem_error("Invalid api_key."); - } + if ($_REQUEST['api_key'] != $api_key) { + engelsystem_error("Invalid api_key."); + } - $shifts_source = Shifts(); - if ($shifts_source === false) { - engelsystem_error("Unable to load shifts."); - } + $shifts_source = Shifts(); + if ($shifts_source === false) { + engelsystem_error("Unable to load shifts."); + } - header("Content-Type: application/json; charset=utf-8"); - raw_output(json_encode($shifts_source)); + header("Content-Type: application/json; charset=utf-8"); + raw_output(json_encode($shifts_source)); } /** * Export filtered shifts via JSON. * (Like iCal Export or shifts view) */ -function shifts_json_export_controller() { - global $user; +function shifts_json_export_controller() +{ + global $user; - if (! isset($_REQUEST['key']) || ! preg_match("/^[0-9a-f]{32}$/", $_REQUEST['key'])) { - engelsystem_error("Missing key."); - } + if (! isset($_REQUEST['key']) || ! preg_match("/^[0-9a-f]{32}$/", $_REQUEST['key'])) { + engelsystem_error("Missing key."); + } - $key = $_REQUEST['key']; + $key = $_REQUEST['key']; - $user = User_by_api_key($key); - if ($user == null) { - engelsystem_error("Key invalid."); - } - if (! in_array('shifts_json_export', privileges_for_user($user['UID']))) { - engelsystem_error("No privilege for shifts_json_export."); - } + $user = User_by_api_key($key); + if ($user == null) { + engelsystem_error("Key invalid."); + } + if (! in_array('shifts_json_export', privileges_for_user($user['UID']))) { + engelsystem_error("No privilege for shifts_json_export."); + } - $shifts = load_ical_shifts(); + $shifts = load_ical_shifts(); - header("Content-Type: application/json; charset=utf-8"); - raw_output(json_encode($shifts)); + header("Content-Type: application/json; charset=utf-8"); + raw_output(json_encode($shifts)); } /** * Returns users shifts to export. */ -function load_ical_shifts() { - global $user; +function load_ical_shifts() +{ + global $user; - return Shifts_by_user($user); + return Shifts_by_user($user); } - -?> \ No newline at end of file diff --git a/includes/controller/shifttypes_controller.php b/includes/controller/shifttypes_controller.php index 456e39ae..f54111c4 100644 --- a/includes/controller/shifttypes_controller.php +++ b/includes/controller/shifttypes_controller.php @@ -1,169 +1,176 @@ \ No newline at end of file diff --git a/includes/controller/user_angeltypes_controller.php b/includes/controller/user_angeltypes_controller.php index 6ef894c7..7469304b 100644 --- a/includes/controller/user_angeltypes_controller.php +++ b/includes/controller/user_angeltypes_controller.php @@ -3,272 +3,279 @@ /** * Display a hint for team/angeltype supporters if there are unconfirmed users for his angeltype. */ -function user_angeltypes_unconfirmed_hint() { - global $user; +function user_angeltypes_unconfirmed_hint() +{ + global $user; - $unconfirmed_user_angeltypes = User_unconfirmed_AngelTypes($user); - if (count($unconfirmed_user_angeltypes) == 0) { - return null; - } + $unconfirmed_user_angeltypes = User_unconfirmed_AngelTypes($user); + if (count($unconfirmed_user_angeltypes) == 0) { + return null; + } - $unconfirmed_links = []; - foreach ($unconfirmed_user_angeltypes as $user_angeltype) { - $unconfirmed_links[] = '' . $user_angeltype['name'] . ' (+' . $user_angeltype['count'] . ')' . ''; - } + $unconfirmed_links = []; + foreach ($unconfirmed_user_angeltypes as $user_angeltype) { + $unconfirmed_links[] = '' . $user_angeltype['name'] . ' (+' . $user_angeltype['count'] . ')' . ''; + } - return sprintf(ngettext("There is %d unconfirmed angeltype.", "There are %d unconfirmed angeltypes.", count($unconfirmed_user_angeltypes)), count($unconfirmed_user_angeltypes)) . " " . _('Angel types which need approvals:') . ' ' . join(', ', $unconfirmed_links); + return sprintf(ngettext("There is %d unconfirmed angeltype.", "There are %d unconfirmed angeltypes.", count($unconfirmed_user_angeltypes)), count($unconfirmed_user_angeltypes)) . " " . _('Angel types which need approvals:') . ' ' . join(', ', $unconfirmed_links); } /** * Remove all unconfirmed users from a specific angeltype. */ -function user_angeltypes_delete_all_controller() { - global $user; +function user_angeltypes_delete_all_controller() +{ + global $user; - if (! isset($_REQUEST['angeltype_id'])) { - error(_("Angeltype doesn't exist.")); - redirect(page_link_to('angeltypes')); - } + if (! isset($_REQUEST['angeltype_id'])) { + error(_("Angeltype doesn't exist.")); + redirect(page_link_to('angeltypes')); + } - $angeltype = AngelType($_REQUEST['angeltype_id']); - if ($angeltype == null) { - error(_("Angeltype doesn't exist.")); - redirect(page_link_to('angeltypes')); - } + $angeltype = AngelType($_REQUEST['angeltype_id']); + if ($angeltype == null) { + error(_("Angeltype doesn't exist.")); + redirect(page_link_to('angeltypes')); + } - if (! User_is_AngelType_supporter($user, $angeltype)) { - error(_("You are not allowed to delete all users for this angeltype.")); - redirect(page_link_to('angeltypes')); - } + if (! User_is_AngelType_supporter($user, $angeltype)) { + error(_("You are not allowed to delete all users for this angeltype.")); + redirect(page_link_to('angeltypes')); + } - if (isset($_REQUEST['confirmed'])) { - UserAngelTypes_delete_all($angeltype['id']); + if (isset($_REQUEST['confirmed'])) { + UserAngelTypes_delete_all($angeltype['id']); - engelsystem_log(sprintf("Denied all users for angeltype %s", AngelType_name_render($angeltype))); - success(sprintf(_("Denied all users for angeltype %s."), AngelType_name_render($angeltype))); - redirect(page_link_to('angeltypes') . '&action=view&angeltype_id=' . $angeltype['id']); - } + engelsystem_log(sprintf("Denied all users for angeltype %s", AngelType_name_render($angeltype))); + success(sprintf(_("Denied all users for angeltype %s."), AngelType_name_render($angeltype))); + redirect(page_link_to('angeltypes') . '&action=view&angeltype_id=' . $angeltype['id']); + } - return [ + return [ _("Deny all users"), - UserAngelTypes_delete_all_view($angeltype) + UserAngelTypes_delete_all_view($angeltype) ]; } /** * Confirm all unconfirmed users for an angeltype. */ -function user_angeltypes_confirm_all_controller() { - global $user, $privileges; +function user_angeltypes_confirm_all_controller() +{ + global $user, $privileges; - if (! isset($_REQUEST['angeltype_id'])) { - error(_("Angeltype doesn't exist.")); - redirect(page_link_to('angeltypes')); - } + if (! isset($_REQUEST['angeltype_id'])) { + error(_("Angeltype doesn't exist.")); + redirect(page_link_to('angeltypes')); + } - $angeltype = AngelType($_REQUEST['angeltype_id']); - if ($angeltype == null) { - error(_("Angeltype doesn't exist.")); - redirect(page_link_to('angeltypes')); - } + $angeltype = AngelType($_REQUEST['angeltype_id']); + if ($angeltype == null) { + error(_("Angeltype doesn't exist.")); + redirect(page_link_to('angeltypes')); + } - $user_angeltype = UserAngelType_by_User_and_AngelType($user, $angeltype); - if ($user_angeltype == null) { - error(_("User angeltype doesn't exist.")); - redirect(page_link_to('angeltypes')); - } + $user_angeltype = UserAngelType_by_User_and_AngelType($user, $angeltype); + if ($user_angeltype == null) { + error(_("User angeltype doesn't exist.")); + redirect(page_link_to('angeltypes')); + } - if (! in_array('admin_user_angeltypes', $privileges) && ! $user_angeltype['supporter']) { - error(_("You are not allowed to confirm all users for this angeltype.")); - redirect(page_link_to('angeltypes')); - } + if (! in_array('admin_user_angeltypes', $privileges) && ! $user_angeltype['supporter']) { + error(_("You are not allowed to confirm all users for this angeltype.")); + redirect(page_link_to('angeltypes')); + } - if (isset($_REQUEST['confirmed'])) { - UserAngelTypes_confirm_all($angeltype['id'], $user); + if (isset($_REQUEST['confirmed'])) { + UserAngelTypes_confirm_all($angeltype['id'], $user); - engelsystem_log(sprintf("Confirmed all users for angeltype %s", AngelType_name_render($angeltype))); - success(sprintf(_("Confirmed all users for angeltype %s."), AngelType_name_render($angeltype))); - redirect(page_link_to('angeltypes') . '&action=view&angeltype_id=' . $angeltype['id']); - } + engelsystem_log(sprintf("Confirmed all users for angeltype %s", AngelType_name_render($angeltype))); + success(sprintf(_("Confirmed all users for angeltype %s."), AngelType_name_render($angeltype))); + redirect(page_link_to('angeltypes') . '&action=view&angeltype_id=' . $angeltype['id']); + } - return [ + return [ _("Confirm all users"), - UserAngelTypes_confirm_all_view($angeltype) + UserAngelTypes_confirm_all_view($angeltype) ]; } /** * Confirm an user for an angeltype. */ -function user_angeltype_confirm_controller() { - global $user; +function user_angeltype_confirm_controller() +{ + global $user; - if (! isset($_REQUEST['user_angeltype_id'])) { - error(_("User angeltype doesn't exist.")); - redirect(page_link_to('angeltypes')); - } - - $user_angeltype = UserAngelType($_REQUEST['user_angeltype_id']); - if ($user_angeltype == null) { - error(_("User angeltype doesn't exist.")); - redirect(page_link_to('angeltypes')); - } - - $angeltype = AngelType($user_angeltype['angeltype_id']); - if ($angeltype == null) { - error(_("Angeltype doesn't exist.")); - redirect(page_link_to('angeltypes')); - } - - if (! User_is_AngelType_supporter($user, $angeltype)) { - error(_("You are not allowed to confirm this users angeltype.")); - redirect(page_link_to('angeltypes')); - } - - $user_source = User($user_angeltype['user_id']); - if ($user_source == null) { - error(_("User doesn't exist.")); - redirect(page_link_to('angeltypes')); - } - - if (isset($_REQUEST['confirmed'])) { - $result = UserAngelType_confirm($user_angeltype['id'], $user); - if ($result === false) { - engelsystem_error("Unable to confirm user angeltype."); + if (! isset($_REQUEST['user_angeltype_id'])) { + error(_("User angeltype doesn't exist.")); + redirect(page_link_to('angeltypes')); } - - engelsystem_log(sprintf("%s confirmed for angeltype %s", User_Nick_render($user_source), AngelType_name_render($angeltype))); - success(sprintf(_("%s confirmed for angeltype %s."), User_Nick_render($user_source), AngelType_name_render($angeltype))); - redirect(page_link_to('angeltypes') . '&action=view&angeltype_id=' . $angeltype['id']); - } - return [ + $user_angeltype = UserAngelType($_REQUEST['user_angeltype_id']); + if ($user_angeltype == null) { + error(_("User angeltype doesn't exist.")); + redirect(page_link_to('angeltypes')); + } + + $angeltype = AngelType($user_angeltype['angeltype_id']); + if ($angeltype == null) { + error(_("Angeltype doesn't exist.")); + redirect(page_link_to('angeltypes')); + } + + if (! User_is_AngelType_supporter($user, $angeltype)) { + error(_("You are not allowed to confirm this users angeltype.")); + redirect(page_link_to('angeltypes')); + } + + $user_source = User($user_angeltype['user_id']); + if ($user_source == null) { + error(_("User doesn't exist.")); + redirect(page_link_to('angeltypes')); + } + + if (isset($_REQUEST['confirmed'])) { + $result = UserAngelType_confirm($user_angeltype['id'], $user); + if ($result === false) { + engelsystem_error("Unable to confirm user angeltype."); + } + + engelsystem_log(sprintf("%s confirmed for angeltype %s", User_Nick_render($user_source), AngelType_name_render($angeltype))); + success(sprintf(_("%s confirmed for angeltype %s."), User_Nick_render($user_source), AngelType_name_render($angeltype))); + redirect(page_link_to('angeltypes') . '&action=view&angeltype_id=' . $angeltype['id']); + } + + return [ _("Confirm angeltype for user"), - UserAngelType_confirm_view($user_angeltype, $user_source, $angeltype) + UserAngelType_confirm_view($user_angeltype, $user_source, $angeltype) ]; } /** * Remove a user from an Angeltype. */ -function user_angeltype_delete_controller() { - global $user; +function user_angeltype_delete_controller() +{ + global $user; - if (! isset($_REQUEST['user_angeltype_id'])) { - error(_("User angeltype doesn't exist.")); - redirect(page_link_to('angeltypes')); - } - - $user_angeltype = UserAngelType($_REQUEST['user_angeltype_id']); - if ($user_angeltype == null) { - error(_("User angeltype doesn't exist.")); - redirect(page_link_to('angeltypes')); - } - - $angeltype = AngelType($user_angeltype['angeltype_id']); - if ($angeltype == null) { - error(_("Angeltype doesn't exist.")); - redirect(page_link_to('angeltypes')); - } - - $user_source = User($user_angeltype['user_id']); - if ($user_source == null) { - error(_("User doesn't exist.")); - redirect(page_link_to('angeltypes')); - } - - if ($user['UID'] != $user_angeltype['user_id'] && ! User_is_AngelType_supporter($user, $angeltype)) { - error(_("You are not allowed to delete this users angeltype.")); - redirect(page_link_to('angeltypes')); - } - - if (isset($_REQUEST['confirmed'])) { - $result = UserAngelType_delete($user_angeltype); - if ($result === false) { - engelsystem_error("Unable to delete user angeltype."); + if (! isset($_REQUEST['user_angeltype_id'])) { + error(_("User angeltype doesn't exist.")); + redirect(page_link_to('angeltypes')); } - - $success_message = sprintf(_("User %s removed from %s."), User_Nick_render($user_source), $angeltype['name']); - engelsystem_log($success_message); - success($success_message); - - redirect(page_link_to('angeltypes') . '&action=view&angeltype_id=' . $angeltype['id']); - } - return [ + $user_angeltype = UserAngelType($_REQUEST['user_angeltype_id']); + if ($user_angeltype == null) { + error(_("User angeltype doesn't exist.")); + redirect(page_link_to('angeltypes')); + } + + $angeltype = AngelType($user_angeltype['angeltype_id']); + if ($angeltype == null) { + error(_("Angeltype doesn't exist.")); + redirect(page_link_to('angeltypes')); + } + + $user_source = User($user_angeltype['user_id']); + if ($user_source == null) { + error(_("User doesn't exist.")); + redirect(page_link_to('angeltypes')); + } + + if ($user['UID'] != $user_angeltype['user_id'] && ! User_is_AngelType_supporter($user, $angeltype)) { + error(_("You are not allowed to delete this users angeltype.")); + redirect(page_link_to('angeltypes')); + } + + if (isset($_REQUEST['confirmed'])) { + $result = UserAngelType_delete($user_angeltype); + if ($result === false) { + engelsystem_error("Unable to delete user angeltype."); + } + + $success_message = sprintf(_("User %s removed from %s."), User_Nick_render($user_source), $angeltype['name']); + engelsystem_log($success_message); + success($success_message); + + redirect(page_link_to('angeltypes') . '&action=view&angeltype_id=' . $angeltype['id']); + } + + return [ _("Remove angeltype"), - UserAngelType_delete_view($user_angeltype, $user_source, $angeltype) + UserAngelType_delete_view($user_angeltype, $user_source, $angeltype) ]; } /** * Update an UserAngelType. */ -function user_angeltype_update_controller() { - global $privileges; +function user_angeltype_update_controller() +{ + global $privileges; - if (! in_array('admin_angel_types', $privileges)) { - error(_("You are not allowed to set supporter rights.")); - redirect(page_link_to('angeltypes')); - } + if (! in_array('admin_angel_types', $privileges)) { + error(_("You are not allowed to set supporter rights.")); + redirect(page_link_to('angeltypes')); + } - if (! isset($_REQUEST['user_angeltype_id'])) { - error(_("User angeltype doesn't exist.")); - redirect(page_link_to('angeltypes')); - } + if (! isset($_REQUEST['user_angeltype_id'])) { + error(_("User angeltype doesn't exist.")); + redirect(page_link_to('angeltypes')); + } - if (isset($_REQUEST['supporter']) && preg_match("/^[01]$/", $_REQUEST['supporter'])) { - $supporter = $_REQUEST['supporter'] == "1"; - } else { - error(_("No supporter update given.")); - redirect(page_link_to('angeltypes')); - } + if (isset($_REQUEST['supporter']) && preg_match("/^[01]$/", $_REQUEST['supporter'])) { + $supporter = $_REQUEST['supporter'] == "1"; + } else { + error(_("No supporter update given.")); + redirect(page_link_to('angeltypes')); + } - $user_angeltype = UserAngelType($_REQUEST['user_angeltype_id']); - if ($user_angeltype == null) { - error(_("User angeltype doesn't exist.")); - redirect(page_link_to('angeltypes')); - } + $user_angeltype = UserAngelType($_REQUEST['user_angeltype_id']); + if ($user_angeltype == null) { + error(_("User angeltype doesn't exist.")); + redirect(page_link_to('angeltypes')); + } - $angeltype = AngelType($user_angeltype['angeltype_id']); - if ($angeltype == null) { - error(_("Angeltype doesn't exist.")); - redirect(page_link_to('angeltypes')); - } + $angeltype = AngelType($user_angeltype['angeltype_id']); + if ($angeltype == null) { + error(_("Angeltype doesn't exist.")); + redirect(page_link_to('angeltypes')); + } - $user_source = User($user_angeltype['user_id']); - if ($user_source == null) { - error(_("User doesn't exist.")); - redirect(page_link_to('angeltypes')); - } + $user_source = User($user_angeltype['user_id']); + if ($user_source == null) { + error(_("User doesn't exist.")); + redirect(page_link_to('angeltypes')); + } - if (isset($_REQUEST['confirmed'])) { - UserAngelType_update($user_angeltype['id'], $supporter); + if (isset($_REQUEST['confirmed'])) { + UserAngelType_update($user_angeltype['id'], $supporter); - $success_message = sprintf($supporter ? _("Added supporter rights for %s to %s.") : _("Removed supporter rights for %s from %s."), AngelType_name_render($angeltype), User_Nick_render($user_source)); - engelsystem_log($success_message); - success($success_message); + $success_message = sprintf($supporter ? _("Added supporter rights for %s to %s.") : _("Removed supporter rights for %s from %s."), AngelType_name_render($angeltype), User_Nick_render($user_source)); + engelsystem_log($success_message); + success($success_message); - redirect(page_link_to('angeltypes') . '&action=view&angeltype_id=' . $angeltype['id']); - } + redirect(page_link_to('angeltypes') . '&action=view&angeltype_id=' . $angeltype['id']); + } - return [ + return [ $supporter ? _("Add supporter rights") : _("Remove supporter rights"), - UserAngelType_update_view($user_angeltype, $user_source, $angeltype, $supporter) + UserAngelType_update_view($user_angeltype, $user_source, $angeltype, $supporter) ]; } /** * User joining an Angeltype (Or supporter doing this for him). */ -function user_angeltype_add_controller() { - global $user; +function user_angeltype_add_controller() +{ + global $user; - $angeltype = load_angeltype(); + $angeltype = load_angeltype(); // User is joining by itself if (! User_is_AngelType_supporter($user, $angeltype)) { - return user_angeltype_join_controller($angeltype); + return user_angeltype_join_controller($angeltype); } // Allow to add any user @@ -279,70 +286,72 @@ function user_angeltype_add_controller() { // Load possible users, that are not in the angeltype already $users_source = Users_by_angeltype_inverted($angeltype); - if (isset($_REQUEST['submit'])) { - $user_source = load_user(); + if (isset($_REQUEST['submit'])) { + $user_source = load_user(); - if (! UserAngelType_exists($user_source, $angeltype)) { - $user_angeltype_id = UserAngelType_create($user_source, $angeltype); + if (! UserAngelType_exists($user_source, $angeltype)) { + $user_angeltype_id = UserAngelType_create($user_source, $angeltype); - engelsystem_log(sprintf("User %s added to %s.", User_Nick_render($user_source), AngelType_name_render($angeltype))); - success(sprintf(_("User %s added to %s."), User_Nick_render($user_source), AngelType_name_render($angeltype))); + engelsystem_log(sprintf("User %s added to %s.", User_Nick_render($user_source), AngelType_name_render($angeltype))); + success(sprintf(_("User %s added to %s."), User_Nick_render($user_source), AngelType_name_render($angeltype))); - UserAngelType_confirm($user_angeltype_id, $user_source); - engelsystem_log(sprintf("User %s confirmed as %s.", User_Nick_render($user), AngelType_name_render($angeltype))); + UserAngelType_confirm($user_angeltype_id, $user_source); + engelsystem_log(sprintf("User %s confirmed as %s.", User_Nick_render($user), AngelType_name_render($angeltype))); - redirect(page_link_to('angeltypes') . '&action=view&angeltype_id=' . $angeltype['id']); + redirect(page_link_to('angeltypes') . '&action=view&angeltype_id=' . $angeltype['id']); + } } - } - return [ + return [ _("Add user to angeltype"), - UserAngelType_add_view($angeltype, $users_source, $user_source['UID']) + UserAngelType_add_view($angeltype, $users_source, $user_source['UID']) ]; } /** * A user joins an angeltype. */ -function user_angeltype_join_controller($angeltype) { - global $user, $privileges; +function user_angeltype_join_controller($angeltype) +{ + global $user, $privileges; - $user_angeltype = UserAngelType_by_User_and_AngelType($user, $angeltype); - if ($user_angeltype != null) { - error(sprintf(_("You are already a %s."), $angeltype['name'])); - redirect(page_link_to('angeltypes')); - } - - if (isset($_REQUEST['confirmed'])) { - $user_angeltype_id = UserAngelType_create($user, $angeltype); - - $success_message = sprintf(_("You joined %s."), $angeltype['name']); - engelsystem_log(sprintf("User %s joined %s.", User_Nick_render($user), AngelType_name_render($angeltype))); - success($success_message); - - if (in_array('admin_user_angeltypes', $privileges)) { - UserAngelType_confirm($user_angeltype_id, $user); - engelsystem_log(sprintf("User %s confirmed as %s.", User_Nick_render($user), AngelType_name_render($angeltype))); + $user_angeltype = UserAngelType_by_User_and_AngelType($user, $angeltype); + if ($user_angeltype != null) { + error(sprintf(_("You are already a %s."), $angeltype['name'])); + redirect(page_link_to('angeltypes')); } - - redirect(page_link_to('angeltypes') . '&action=view&angeltype_id=' . $angeltype['id']); - } - return [ + if (isset($_REQUEST['confirmed'])) { + $user_angeltype_id = UserAngelType_create($user, $angeltype); + + $success_message = sprintf(_("You joined %s."), $angeltype['name']); + engelsystem_log(sprintf("User %s joined %s.", User_Nick_render($user), AngelType_name_render($angeltype))); + success($success_message); + + if (in_array('admin_user_angeltypes', $privileges)) { + UserAngelType_confirm($user_angeltype_id, $user); + engelsystem_log(sprintf("User %s confirmed as %s.", User_Nick_render($user), AngelType_name_render($angeltype))); + } + + redirect(page_link_to('angeltypes') . '&action=view&angeltype_id=' . $angeltype['id']); + } + + return [ sprintf(_("Become a %s"), $angeltype['name']), - UserAngelType_join_view($user, $angeltype) + UserAngelType_join_view($user, $angeltype) ]; } /** * Route UserAngelType actions. */ -function user_angeltypes_controller() { - if (! isset($_REQUEST['action'])) { - redirect(page_link_to('angeltypes')); - } +function user_angeltypes_controller() +{ + if (! isset($_REQUEST['action'])) { + redirect(page_link_to('angeltypes')); + } - switch ($_REQUEST['action']) { + switch ($_REQUEST['action']) { case 'delete_all': return user_angeltypes_delete_all_controller(); case 'confirm_all': @@ -359,5 +368,3 @@ function user_angeltypes_controller() { redirect(page_link_to('angeltypes')); } } - -?> \ No newline at end of file diff --git a/includes/controller/user_driver_licenses_controller.php b/includes/controller/user_driver_licenses_controller.php index 26deab7d..434d9274 100644 --- a/includes/controller/user_driver_licenses_controller.php +++ b/includes/controller/user_driver_licenses_controller.php @@ -3,39 +3,41 @@ /** * Generates a hint, if user joined angeltypes that require a driving license and the user has no driver license information provided. */ -function user_driver_license_required_hint() { - global $user; +function user_driver_license_required_hint() +{ + global $user; - $angeltypes = User_angeltypes($user); - $user_driver_license = UserDriverLicense($user['UID']); + $angeltypes = User_angeltypes($user); + $user_driver_license = UserDriverLicense($user['UID']); // User has already entered data, no hint needed. if ($user_driver_license != null) { - return null; + return null; } - foreach ($angeltypes as $angeltype) { - if ($angeltype['requires_driver_license']) { - return sprintf(_("You joined an angeltype which requires a driving license. Please edit your driving license information here: %s."), '' . _("driving license information") . ''); + foreach ($angeltypes as $angeltype) { + if ($angeltype['requires_driver_license']) { + return sprintf(_("You joined an angeltype which requires a driving license. Please edit your driving license information here: %s."), '' . _("driving license information") . ''); + } } - } - return null; + return null; } /** * Route user driver licenses actions. */ -function user_driver_licenses_controller() { - global $user; +function user_driver_licenses_controller() +{ + global $user; - if (! isset($user)) { - redirect(page_link_to('')); - } + if (! isset($user)) { + redirect(page_link_to('')); + } - $action = strip_request_item('action', 'edit'); + $action = strip_request_item('action', 'edit'); - switch ($action) { + switch ($action) { default: case 'edit': return user_driver_license_edit_controller(); @@ -45,88 +47,89 @@ function user_driver_licenses_controller() { /** * Link to user driver license edit page for given user. * - * @param User $user + * @param User $user */ -function user_driver_license_edit_link($user = null) { - if ($user == null) { - return page_link_to('user_driver_licenses'); - } - return page_link_to('user_driver_licenses') . '&user_id=' . $user['UID']; +function user_driver_license_edit_link($user = null) +{ + if ($user == null) { + return page_link_to('user_driver_licenses'); + } + return page_link_to('user_driver_licenses') . '&user_id=' . $user['UID']; } /** * Loads the user for the driver license. */ -function user_driver_license_load_user() { - global $user; +function user_driver_license_load_user() +{ + global $user; - $user_source = $user; + $user_source = $user; - if (isset($_REQUEST['user_id'])) { - $user_source = User($_REQUEST['user_id']); - if ($user_source == null) { - redirect(user_driver_license_edit_link()); + if (isset($_REQUEST['user_id'])) { + $user_source = User($_REQUEST['user_id']); + if ($user_source == null) { + redirect(user_driver_license_edit_link()); + } } - } - return $user_source; + return $user_source; } /** * Edit a users driver license information. */ -function user_driver_license_edit_controller() { - global $privileges, $user; +function user_driver_license_edit_controller() +{ + global $privileges, $user; - $user_source = user_driver_license_load_user(); + $user_source = user_driver_license_load_user(); // only privilege admin_user can edit other users driver license information if ($user['UID'] != $user_source['UID'] && ! in_array('admin_user', $privileges)) { - redirect(user_driver_license_edit_link()); + redirect(user_driver_license_edit_link()); } - $user_driver_license = UserDriverLicense($user_source['UID']); - if ($user_driver_license == null) { - $wants_to_drive = false; - $user_driver_license = UserDriverLicense_new(); - } else { - $wants_to_drive = true; - } - - if (isset($_REQUEST['submit'])) { - $wants_to_drive = isset($_REQUEST['wants_to_drive']); - if ($wants_to_drive) { - $user_driver_license['has_car'] = isset($_REQUEST['has_car']); - $user_driver_license['has_license_car'] = isset($_REQUEST['has_license_car']); - $user_driver_license['has_license_3_5t_transporter'] = isset($_REQUEST['has_license_3_5t_transporter']); - $user_driver_license['has_license_7_5t_truck'] = isset($_REQUEST['has_license_7_5t_truck']); - $user_driver_license['has_license_12_5t_truck'] = isset($_REQUEST['has_license_12_5t_truck']); - $user_driver_license['has_license_forklift'] = isset($_REQUEST['has_license_forklift']); - - if (UserDriverLicense_valid($user_driver_license)) { - if ($user_driver_license['user_id'] == null) { - $user_driver_license = UserDriverLicenses_create($user_driver_license, $user); - } else { - UserDriverLicenses_update($user_driver_license); - } - engelsystem_log("Driver license information updated."); - success(_("Your driver license information has been saved.")); - redirect(user_link($user_source)); - } else { - error(_("Please select at least one driving license.")); - } - } elseif ($user_driver_license['id'] != null) { - UserDriverLicenses_delete($user_source['UID']); - engelsystem_log("Driver license information removed."); - success(_("Your driver license information has been removed.")); - redirect(user_link($user_source)); + $user_driver_license = UserDriverLicense($user_source['UID']); + if ($user_driver_license == null) { + $wants_to_drive = false; + $user_driver_license = UserDriverLicense_new(); + } else { + $wants_to_drive = true; } - } - return [ + if (isset($_REQUEST['submit'])) { + $wants_to_drive = isset($_REQUEST['wants_to_drive']); + if ($wants_to_drive) { + $user_driver_license['has_car'] = isset($_REQUEST['has_car']); + $user_driver_license['has_license_car'] = isset($_REQUEST['has_license_car']); + $user_driver_license['has_license_3_5t_transporter'] = isset($_REQUEST['has_license_3_5t_transporter']); + $user_driver_license['has_license_7_5t_truck'] = isset($_REQUEST['has_license_7_5t_truck']); + $user_driver_license['has_license_12_5t_truck'] = isset($_REQUEST['has_license_12_5t_truck']); + $user_driver_license['has_license_forklift'] = isset($_REQUEST['has_license_forklift']); + + if (UserDriverLicense_valid($user_driver_license)) { + if ($user_driver_license['user_id'] == null) { + $user_driver_license = UserDriverLicenses_create($user_driver_license, $user); + } else { + UserDriverLicenses_update($user_driver_license); + } + engelsystem_log("Driver license information updated."); + success(_("Your driver license information has been saved.")); + redirect(user_link($user_source)); + } else { + error(_("Please select at least one driving license.")); + } + } elseif ($user_driver_license['id'] != null) { + UserDriverLicenses_delete($user_source['UID']); + engelsystem_log("Driver license information removed."); + success(_("Your driver license information has been removed.")); + redirect(user_link($user_source)); + } + } + + return [ sprintf(_("Edit %s driving license information"), $user_source['Nick']), - UserDriverLicense_edit_view($user_source, $wants_to_drive, $user_driver_license) + UserDriverLicense_edit_view($user_source, $wants_to_drive, $user_driver_license) ]; } - -?> \ No newline at end of file diff --git a/includes/controller/users_controller.php b/includes/controller/users_controller.php index 3825af7c..4f7b97eb 100644 --- a/includes/controller/users_controller.php +++ b/includes/controller/users_controller.php @@ -5,18 +5,19 @@ use Engelsystem\ShiftCalendarRenderer; /** * Route user actions. */ -function users_controller() { - global $user; +function users_controller() +{ + global $user; - if (! isset($user)) { - redirect(page_link_to('')); - } + if (! isset($user)) { + redirect(page_link_to('')); + } - if (! isset($_REQUEST['action'])) { - $_REQUEST['action'] = 'list'; - } + if (! isset($_REQUEST['action'])) { + $_REQUEST['action'] = 'list'; + } - switch ($_REQUEST['action']) { + switch ($_REQUEST['action']) { default: case 'list': return users_list_controller(); @@ -34,338 +35,350 @@ function users_controller() { /** * Delete a user, requires to enter own password for reasons. */ -function user_delete_controller() { - global $privileges, $user; +function user_delete_controller() +{ + global $privileges, $user; - if (isset($_REQUEST['user_id'])) { - $user_source = User($_REQUEST['user_id']); - } else { - $user_source = $user; - } + if (isset($_REQUEST['user_id'])) { + $user_source = User($_REQUEST['user_id']); + } else { + $user_source = $user; + } - if (! in_array('admin_user', $privileges)) { - redirect(page_link_to('')); - } + if (! in_array('admin_user', $privileges)) { + redirect(page_link_to('')); + } // You cannot delete yourself if ($user['UID'] == $user_source['UID']) { - error(_("You cannot delete yourself.")); - redirect(user_link($user)); + error(_("You cannot delete yourself.")); + redirect(user_link($user)); } - if (isset($_REQUEST['submit'])) { - $valid = true; + if (isset($_REQUEST['submit'])) { + $valid = true; - if (! (isset($_REQUEST['password']) && verify_password($_REQUEST['password'], $user['Passwort'], $user['UID']))) { - $valid = false; - error(_("Your password is incorrect. Please try it again.")); - } + if (! (isset($_REQUEST['password']) && verify_password($_REQUEST['password'], $user['Passwort'], $user['UID']))) { + $valid = false; + error(_("Your password is incorrect. Please try it again.")); + } - if ($valid) { - $result = User_delete($user_source['UID']); - if ($result === false) { - engelsystem_error('Unable to delete user.'); - } + if ($valid) { + $result = User_delete($user_source['UID']); + if ($result === false) { + engelsystem_error('Unable to delete user.'); + } - mail_user_delete($user_source); - success(_("User deleted.")); - engelsystem_log(sprintf("Deleted %s", User_Nick_render($user_source))); + mail_user_delete($user_source); + success(_("User deleted.")); + engelsystem_log(sprintf("Deleted %s", User_Nick_render($user_source))); - redirect(users_link()); + redirect(users_link()); + } } - } - return [ + return [ sprintf(_("Delete %s"), $user_source['Nick']), - User_delete_view($user_source) + User_delete_view($user_source) ]; } -function users_link() { - return page_link_to('users'); +function users_link() +{ + return page_link_to('users'); } -function user_edit_link($user) { - return page_link_to('admin_user') . '&user_id=' . $user['UID']; +function user_edit_link($user) +{ + return page_link_to('admin_user') . '&user_id=' . $user['UID']; } -function user_delete_link($user) { - return page_link_to('users') . '&action=delete&user_id=' . $user['UID']; +function user_delete_link($user) +{ + return page_link_to('users') . '&action=delete&user_id=' . $user['UID']; } -function user_link($user) { - return page_link_to('users') . '&action=view&user_id=' . $user['UID']; +function user_link($user) +{ + return page_link_to('users') . '&action=view&user_id=' . $user['UID']; } -function user_edit_vouchers_controller() { - global $privileges, $user; +function user_edit_vouchers_controller() +{ + global $privileges, $user; - if (isset($_REQUEST['user_id'])) { - $user_source = User($_REQUEST['user_id']); - } else { - $user_source = $user; - } - - if (! in_array('admin_user', $privileges)) { - redirect(page_link_to('')); - } - - if (isset($_REQUEST['submit'])) { - $valid = true; - - if (isset($_REQUEST['vouchers']) && test_request_int('vouchers') && trim($_REQUEST['vouchers']) >= 0) { - $vouchers = trim($_REQUEST['vouchers']); + if (isset($_REQUEST['user_id'])) { + $user_source = User($_REQUEST['user_id']); } else { - $valid = false; - error(_("Please enter a valid number of vouchers.")); + $user_source = $user; } - - if ($valid) { - $user_source['got_voucher'] = $vouchers; - - $result = User_update($user_source); - if ($result === false) { - engelsystem_error('Unable to update user.'); - } - - success(_("Saved the number of vouchers.")); - engelsystem_log(User_Nick_render($user_source) . ': ' . sprintf("Got %s vouchers", $user_source['got_voucher'])); - - redirect(user_link($user_source)); - } - } - return [ + if (! in_array('admin_user', $privileges)) { + redirect(page_link_to('')); + } + + if (isset($_REQUEST['submit'])) { + $valid = true; + + if (isset($_REQUEST['vouchers']) && test_request_int('vouchers') && trim($_REQUEST['vouchers']) >= 0) { + $vouchers = trim($_REQUEST['vouchers']); + } else { + $valid = false; + error(_("Please enter a valid number of vouchers.")); + } + + if ($valid) { + $user_source['got_voucher'] = $vouchers; + + $result = User_update($user_source); + if ($result === false) { + engelsystem_error('Unable to update user.'); + } + + success(_("Saved the number of vouchers.")); + engelsystem_log(User_Nick_render($user_source) . ': ' . sprintf("Got %s vouchers", $user_source['got_voucher'])); + + redirect(user_link($user_source)); + } + } + + return [ sprintf(_("%s's vouchers"), $user_source['Nick']), - User_edit_vouchers_view($user_source) + User_edit_vouchers_view($user_source) ]; } -function user_controller() { - global $privileges, $user; +function user_controller() +{ + global $privileges, $user; - $user_source = $user; - if (isset($_REQUEST['user_id'])) { - $user_source = User($_REQUEST['user_id']); - if ($user_source == null) { - error(_("User not found.")); - redirect('?'); + $user_source = $user; + if (isset($_REQUEST['user_id'])) { + $user_source = User($_REQUEST['user_id']); + if ($user_source == null) { + error(_("User not found.")); + redirect('?'); + } } - } - $shifts = Shifts_by_user($user_source, in_array("user_shifts_admin", $privileges)); - foreach ($shifts as &$shift) { - // TODO: Move queries to model + $shifts = Shifts_by_user($user_source, in_array("user_shifts_admin", $privileges)); + foreach ($shifts as &$shift) { + // TODO: Move queries to model $shift['needed_angeltypes'] = sql_select("SELECT DISTINCT `AngelTypes`.* FROM `ShiftEntry` JOIN `AngelTypes` ON `ShiftEntry`.`TID`=`AngelTypes`.`id` WHERE `ShiftEntry`.`SID`='" . sql_escape($shift['SID']) . "' ORDER BY `AngelTypes`.`name`"); - foreach ($shift['needed_angeltypes'] as &$needed_angeltype) { - $needed_angeltype['users'] = sql_select(" + foreach ($shift['needed_angeltypes'] as &$needed_angeltype) { + $needed_angeltype['users'] = sql_select(" SELECT `ShiftEntry`.`freeloaded`, `User`.* FROM `ShiftEntry` JOIN `User` ON `ShiftEntry`.`UID`=`User`.`UID` WHERE `ShiftEntry`.`SID`='" . sql_escape($shift['SID']) . "' AND `ShiftEntry`.`TID`='" . sql_escape($needed_angeltype['id']) . "'"); + } } - } - if ($user_source['api_key'] == "") { - User_reset_api_key($user_source, false); - } + if ($user_source['api_key'] == "") { + User_reset_api_key($user_source, false); + } - return [ + return [ $user_source['Nick'], - User_view($user_source, in_array('admin_user', $privileges), User_is_freeloader($user_source), User_angeltypes($user_source), User_groups($user_source), $shifts, $user['UID'] == $user_source['UID']) + User_view($user_source, in_array('admin_user', $privileges), User_is_freeloader($user_source), User_angeltypes($user_source), User_groups($user_source), $shifts, $user['UID'] == $user_source['UID']) ]; } /** * List all users. */ -function users_list_controller() { - global $privileges; +function users_list_controller() +{ + global $privileges; - if (! in_array('admin_user', $privileges)) { - redirect(page_link_to('')); - } + if (! in_array('admin_user', $privileges)) { + redirect(page_link_to('')); + } - $order_by = 'Nick'; - if (isset($_REQUEST['OrderBy']) && in_array($_REQUEST['OrderBy'], User_sortable_columns())) { - $order_by = $_REQUEST['OrderBy']; - } + $order_by = 'Nick'; + if (isset($_REQUEST['OrderBy']) && in_array($_REQUEST['OrderBy'], User_sortable_columns())) { + $order_by = $_REQUEST['OrderBy']; + } - $users = Users($order_by); - if ($users === false) { - engelsystem_error('Unable to load users.'); - } + $users = Users($order_by); + if ($users === false) { + engelsystem_error('Unable to load users.'); + } - foreach ($users as &$user) { - $user['freeloads'] = count(ShiftEntries_freeloaded_by_user($user)); - } + foreach ($users as &$user) { + $user['freeloads'] = count(ShiftEntries_freeloaded_by_user($user)); + } - return [ + return [ _('All users'), - Users_view($users, $order_by, User_arrived_count(), User_active_count(), User_force_active_count(), ShiftEntries_freeleaded_count(), User_tshirts_count(), User_got_voucher_count()) + Users_view($users, $order_by, User_arrived_count(), User_active_count(), User_force_active_count(), ShiftEntries_freeleaded_count(), User_tshirts_count(), User_got_voucher_count()) ]; } /** * Second step of password recovery: set a new password using the token link from email */ -function user_password_recovery_set_new_controller() { - global $min_password_length; - $user_source = User_by_password_recovery_token($_REQUEST['token']); - if ($user_source == null) { - error(_("Token is not correct.")); - redirect(page_link_to('login')); - } +function user_password_recovery_set_new_controller() +{ + global $min_password_length; + $user_source = User_by_password_recovery_token($_REQUEST['token']); + if ($user_source == null) { + error(_("Token is not correct.")); + redirect(page_link_to('login')); + } - if (isset($_REQUEST['submit'])) { - $valid = true; + if (isset($_REQUEST['submit'])) { + $valid = true; - if (isset($_REQUEST['password']) && strlen($_REQUEST['password']) >= $min_password_length) { - if ($_REQUEST['password'] != $_REQUEST['password2']) { - $valid = false; - error(_("Your passwords don't match.")); - } - } else { - $valid = false; - error(_("Your password is to short (please use at least 6 characters).")); - } + if (isset($_REQUEST['password']) && strlen($_REQUEST['password']) >= $min_password_length) { + if ($_REQUEST['password'] != $_REQUEST['password2']) { + $valid = false; + error(_("Your passwords don't match.")); + } + } else { + $valid = false; + error(_("Your password is to short (please use at least 6 characters).")); + } - if ($valid) { - set_password($user_source['UID'], $_REQUEST['password']); - success(_("Password saved.")); - redirect(page_link_to('login')); + if ($valid) { + set_password($user_source['UID'], $_REQUEST['password']); + success(_("Password saved.")); + redirect(page_link_to('login')); + } } - } - return User_password_set_view(); + return User_password_set_view(); } /** * First step of password recovery: display a form that asks for your email and send email with recovery link */ -function user_password_recovery_start_controller() { - if (isset($_REQUEST['submit'])) { - $valid = true; +function user_password_recovery_start_controller() +{ + if (isset($_REQUEST['submit'])) { + $valid = true; - if (isset($_REQUEST['email']) && strlen(strip_request_item('email')) > 0) { - $email = strip_request_item('email'); - if (check_email($email)) { - $user_source = User_by_email($email); - if ($user_source == null) { - $valid = false; - error(_("E-mail address is not correct.")); + if (isset($_REQUEST['email']) && strlen(strip_request_item('email')) > 0) { + $email = strip_request_item('email'); + if (check_email($email)) { + $user_source = User_by_email($email); + if ($user_source == null) { + $valid = false; + error(_("E-mail address is not correct.")); + } + } else { + $valid = false; + error(_("E-mail address is not correct.")); + } + } else { + $valid = false; + error(_("Please enter your e-mail.")); } - } else { - $valid = false; - error(_("E-mail address is not correct.")); - } - } else { - $valid = false; - error(_("Please enter your e-mail.")); - } - if ($valid) { - $token = User_generate_password_recovery_token($user_source); - engelsystem_email_to_user($user_source, _("Password recovery"), sprintf(_("Please visit %s to recover your password."), page_link_to_absolute('user_password_recovery') . '&token=' . $token)); - success(_("We sent an email containing your password recovery link.")); - redirect(page_link_to('login')); + if ($valid) { + $token = User_generate_password_recovery_token($user_source); + engelsystem_email_to_user($user_source, _("Password recovery"), sprintf(_("Please visit %s to recover your password."), page_link_to_absolute('user_password_recovery') . '&token=' . $token)); + success(_("We sent an email containing your password recovery link.")); + redirect(page_link_to('login')); + } } - } - return User_password_recovery_view(); + return User_password_recovery_view(); } /** * User password recovery in 2 steps. * (By email) */ -function user_password_recovery_controller() { - if (isset($_REQUEST['token'])) { - return user_password_recovery_set_new_controller(); - } else { - return user_password_recovery_start_controller(); - } +function user_password_recovery_controller() +{ + if (isset($_REQUEST['token'])) { + return user_password_recovery_set_new_controller(); + } else { + return user_password_recovery_start_controller(); + } } /** * Menu title for password recovery. */ -function user_password_recovery_title() { - return _("Password recovery"); +function user_password_recovery_title() +{ + return _("Password recovery"); } /** * Loads a user from param user_id. */ -function load_user() { - if (! isset($_REQUEST['user_id'])) { - redirect(page_link_to()); - } +function load_user() +{ + if (! isset($_REQUEST['user_id'])) { + redirect(page_link_to()); + } - $user = User($_REQUEST['user_id']); - if ($user === false) { - engelsystem_error("Unable to load user."); - } + $user = User($_REQUEST['user_id']); + if ($user === false) { + engelsystem_error("Unable to load user."); + } - if ($user == null) { - error(_("User doesn't exist.")); - redirect(page_link_to()); - } + if ($user == null) { + error(_("User doesn't exist.")); + redirect(page_link_to()); + } - return $user; + return $user; } -function shiftCalendarRendererByShiftFilter(ShiftsFilter $shiftsFilter) { - $shifts = Shifts_by_ShiftsFilter($shiftsFilter); - $needed_angeltypes_source = NeededAngeltypes_by_ShiftsFilter($shiftsFilter); - $shift_entries_source = ShiftEntries_by_ShiftsFilter($shiftsFilter); +function shiftCalendarRendererByShiftFilter(ShiftsFilter $shiftsFilter) +{ + $shifts = Shifts_by_ShiftsFilter($shiftsFilter); + $needed_angeltypes_source = NeededAngeltypes_by_ShiftsFilter($shiftsFilter); + $shift_entries_source = ShiftEntries_by_ShiftsFilter($shiftsFilter); - $needed_angeltypes = []; - $shift_entries = []; - foreach ($shifts as $shift) { - $needed_angeltypes[$shift['SID']] = []; - $shift_entries[$shift['SID']] = []; - } - foreach ($shift_entries_source as $shift_entry) { - if (isset($shift_entries[$shift_entry['SID']])) { - $shift_entries[$shift_entry['SID']][] = $shift_entry; + $needed_angeltypes = []; + $shift_entries = []; + foreach ($shifts as $shift) { + $needed_angeltypes[$shift['SID']] = []; + $shift_entries[$shift['SID']] = []; } - } - foreach ($needed_angeltypes_source as $needed_angeltype) { - if (isset($needed_angeltypes[$needed_angeltype['SID']])) { - $needed_angeltypes[$needed_angeltype['SID']][] = $needed_angeltype; - } - } - unset($needed_angeltypes_source); - unset($shift_entries_source); - - if (in_array(ShiftsFilter::FILLED_FREE, $shiftsFilter->getFilled()) && in_array(ShiftsFilter::FILLED_FILLED, $shiftsFilter->getFilled())) { - return new ShiftCalendarRenderer($shifts, $needed_angeltypes, $shift_entries, $shiftsFilter); - } - - $filtered_shifts = []; - foreach ($shifts as $shift) { - $needed_angels_count = 0; - foreach ($needed_angeltypes[$shift['SID']] as $needed_angeltype) { - $taken = 0; - foreach ($shift_entries[$shift['SID']] as $shift_entry) { - if ($needed_angeltype['angel_type_id'] == $shift_entry['TID'] && $shift_entry['freeloaded'] == 0) { - $taken ++; + foreach ($shift_entries_source as $shift_entry) { + if (isset($shift_entries[$shift_entry['SID']])) { + $shift_entries[$shift_entry['SID']][] = $shift_entry; } - } - - $needed_angels_count += max(0, $needed_angeltype['count'] - $taken); } - if (in_array(ShiftsFilter::FILLED_FREE, $shiftsFilter->getFilled()) && $taken < $needed_angels_count) { - $filtered_shifts[] = $shift; + foreach ($needed_angeltypes_source as $needed_angeltype) { + if (isset($needed_angeltypes[$needed_angeltype['SID']])) { + $needed_angeltypes[$needed_angeltype['SID']][] = $needed_angeltype; + } } - if (in_array(ShiftsFilter::FILLED_FILLED, $shiftsFilter->getFilled()) && $taken >= $needed_angels_count) { - $filtered_shifts[] = $shift; - } - } + unset($needed_angeltypes_source); + unset($shift_entries_source); - return new ShiftCalendarRenderer($filtered_shifts, $needed_angeltypes, $shift_entries, $shiftsFilter); + if (in_array(ShiftsFilter::FILLED_FREE, $shiftsFilter->getFilled()) && in_array(ShiftsFilter::FILLED_FILLED, $shiftsFilter->getFilled())) { + return new ShiftCalendarRenderer($shifts, $needed_angeltypes, $shift_entries, $shiftsFilter); + } + + $filtered_shifts = []; + foreach ($shifts as $shift) { + $needed_angels_count = 0; + foreach ($needed_angeltypes[$shift['SID']] as $needed_angeltype) { + $taken = 0; + foreach ($shift_entries[$shift['SID']] as $shift_entry) { + if ($needed_angeltype['angel_type_id'] == $shift_entry['TID'] && $shift_entry['freeloaded'] == 0) { + $taken ++; + } + } + + $needed_angels_count += max(0, $needed_angeltype['count'] - $taken); + } + if (in_array(ShiftsFilter::FILLED_FREE, $shiftsFilter->getFilled()) && $taken < $needed_angels_count) { + $filtered_shifts[] = $shift; + } + if (in_array(ShiftsFilter::FILLED_FILLED, $shiftsFilter->getFilled()) && $taken >= $needed_angels_count) { + $filtered_shifts[] = $shift; + } + } + + return new ShiftCalendarRenderer($filtered_shifts, $needed_angeltypes, $shift_entries, $shiftsFilter); } - -?> diff --git a/includes/engelsystem_provider.php b/includes/engelsystem_provider.php index c2b979d8..176933e0 100644 --- a/includes/engelsystem_provider.php +++ b/includes/engelsystem_provider.php @@ -2,8 +2,8 @@ /** * This file includes all needed functions, connects to the db etc. */ -if(!is_readable(__DIR__ . '/../vendor/autoload.php')){ - die('Please run composer.phar install'); +if (!is_readable(__DIR__ . '/../vendor/autoload.php')) { + die('Please run composer.phar install'); } require __DIR__ . '/../vendor/autoload.php'; @@ -70,12 +70,12 @@ require_once realpath(__DIR__ . '/../includes/mailer/users_mailer.php'); require_once realpath(__DIR__ . '/../config/config.default.php'); if (file_exists(realpath(__DIR__ . '/../config/config.php'))) { - require_once realpath(__DIR__ . '/../config/config.php'); + require_once realpath(__DIR__ . '/../config/config.php'); } if ($maintenance_mode) { - echo file_get_contents(__DIR__ . '/../public/maintenance.html'); - die(); + echo file_get_contents(__DIR__ . '/../public/maintenance.html'); + die(); } require_once realpath(__DIR__ . '/../includes/pages/admin_active.php'); @@ -103,5 +103,3 @@ gettext_init(); sql_connect($config['host'], $config['user'], $config['pw'], $config['db']); load_auth(); - -?> diff --git a/includes/helper/email_helper.php b/includes/helper/email_helper.php index 0ef4326a..934193e2 100644 --- a/includes/helper/email_helper.php +++ b/includes/helper/email_helper.php @@ -1,25 +1,25 @@ "); - if ($result === false) { - engelsystem_error('Unable to send email.'); - } +function engelsystem_email($address, $title, $message) +{ + $result = mail($address, $title, $message, "Content-Type: text/plain; charset=UTF-8\r\nFrom: Engelsystem "); + if ($result === false) { + engelsystem_error('Unable to send email.'); + } } - -?> diff --git a/includes/helper/error_helper.php b/includes/helper/error_helper.php index 58d0ac86..9314a57a 100644 --- a/includes/helper/error_helper.php +++ b/includes/helper/error_helper.php @@ -5,8 +5,7 @@ * * @param string $message */ -function engelsystem_error($message) { - raw_output($message); +function engelsystem_error($message) +{ + raw_output($message); } - -?> \ No newline at end of file diff --git a/includes/helper/graph_helper.php b/includes/helper/graph_helper.php index 42a6c07a..c2d0f8a2 100644 --- a/includes/helper/graph_helper.php +++ b/includes/helper/graph_helper.php @@ -7,35 +7,34 @@ * @param unknown $colors colors for the data rows * @param unknown $data the data */ -function bargraph($dom_id, $key, $row_names, $colors, $data) { - $labels = []; - foreach ($data as $dataset) { - $labels[] = $dataset[$key]; - } - - $datasets = []; - foreach ($row_names as $row_key => $name) { - $values = []; +function bargraph($dom_id, $key, $row_names, $colors, $data) +{ + $labels = []; foreach ($data as $dataset) { - $values[] = $dataset[$row_key]; + $labels[] = $dataset[$key]; } - $datasets[] = [ + + $datasets = []; + foreach ($row_names as $row_key => $name) { + $values = []; + foreach ($data as $dataset) { + $values[] = $dataset[$row_key]; + } + $datasets[] = [ 'label' => $name, 'fillColor' => $colors[$row_key], - 'data' => $values + 'data' => $values ]; - } + } - return ' + return ' '; } - -?> \ No newline at end of file diff --git a/includes/helper/internationalization_helper.php b/includes/helper/internationalization_helper.php index a537ef3d..4abf8c4d 100644 --- a/includes/helper/internationalization_helper.php +++ b/includes/helper/internationalization_helper.php @@ -1,7 +1,7 @@ "Deutsch", - 'en_US.UTF-8' => "English" + 'en_US.UTF-8' => "English" ]; $default_locale = 'en_US.UTF-8'; @@ -9,47 +9,51 @@ $default_locale = 'en_US.UTF-8'; /** * Return currently active locale */ -function locale() { - return $_SESSION['locale']; +function locale() +{ + return $_SESSION['locale']; } /** * Returns two letter language code from currently active locale */ -function locale_short() { - return substr(locale(), 0, 2); +function locale_short() +{ + return substr(locale(), 0, 2); } /** * Initializes gettext for internationalization and updates the sessions locale to use for translation. */ -function gettext_init() { - global $locales, $default_locale; +function gettext_init() +{ + global $locales, $default_locale; - if (isset($_REQUEST['set_locale']) && isset($locales[$_REQUEST['set_locale']])) { - $_SESSION['locale'] = $_REQUEST['set_locale']; - } elseif (! isset($_SESSION['locale'])) { - $_SESSION['locale'] = $default_locale; - } + if (isset($_REQUEST['set_locale']) && isset($locales[$_REQUEST['set_locale']])) { + $_SESSION['locale'] = $_REQUEST['set_locale']; + } elseif (! isset($_SESSION['locale'])) { + $_SESSION['locale'] = $default_locale; + } - gettext_locale(); - bindtextdomain('default', realpath(__DIR__ . '/../../locale')); - bind_textdomain_codeset('default', 'UTF-8'); - textdomain('default'); + gettext_locale(); + bindtextdomain('default', realpath(__DIR__ . '/../../locale')); + bind_textdomain_codeset('default', 'UTF-8'); + textdomain('default'); } /** * Swich gettext locale. * - * @param string $locale + * @param string $locale */ -function gettext_locale($locale = null) { - if ($locale == null) { - $locale = $_SESSION['locale']; - } +function gettext_locale($locale = null) +{ + if ($locale == null) { + $locale = $_SESSION['locale']; + } - putenv('LC_ALL=' . $locale); - setlocale(LC_ALL, $locale); + putenv('LC_ALL=' . $locale); + setlocale(LC_ALL, $locale); } /** @@ -57,15 +61,14 @@ function gettext_locale($locale = null) { * * @return string */ -function make_langselect() { - global $locales; - $URL = $_SERVER["REQUEST_URI"] . (strpos($_SERVER["REQUEST_URI"], "?") > 0 ? '&' : '?') . "set_locale="; +function make_langselect() +{ + global $locales; + $URL = $_SERVER["REQUEST_URI"] . (strpos($_SERVER["REQUEST_URI"], "?") > 0 ? '&' : '?') . "set_locale="; - $items = []; - foreach ($locales as $locale => $name) { - $items[] = toolbar_item_link(htmlspecialchars($URL) . $locale, '', '' . $name . ' ' . $name); - } - return $items; + $items = []; + foreach ($locales as $locale => $name) { + $items[] = toolbar_item_link(htmlspecialchars($URL) . $locale, '', '' . $name . ' ' . $name); + } + return $items; } - -?> \ No newline at end of file diff --git a/includes/helper/message_helper.php b/includes/helper/message_helper.php index 37fc84bb..323eee4d 100644 --- a/includes/helper/message_helper.php +++ b/includes/helper/message_helper.php @@ -3,51 +3,54 @@ /** * Gibt zwischengespeicherte Fehlermeldungen zurück und löscht den Zwischenspeicher */ -function msg() { - if (! isset($_SESSION['msg'])) { - return ""; - } - $msg = $_SESSION['msg']; - $_SESSION['msg'] = ""; - return $msg; +function msg() +{ + if (! isset($_SESSION['msg'])) { + return ""; + } + $msg = $_SESSION['msg']; + $_SESSION['msg'] = ""; + return $msg; } /** * Rendert eine Information */ -function info($msg, $immediatly = false) { - return alert('info', $msg, $immediatly); +function info($msg, $immediatly = false) +{ + return alert('info', $msg, $immediatly); } /** * Rendert eine Fehlermeldung */ -function error($msg, $immediatly = false) { - return alert('danger', $msg, $immediatly); +function error($msg, $immediatly = false) +{ + return alert('danger', $msg, $immediatly); } /** * Rendert eine Erfolgsmeldung */ -function success($msg, $immediatly = false) { - return alert('success', $msg, $immediatly); +function success($msg, $immediatly = false) +{ + return alert('success', $msg, $immediatly); } /** * Renders an alert with given alert-* class. */ -function alert($class, $msg, $immediatly = false) { - if ($immediatly) { - if ($msg == "") { - return ""; +function alert($class, $msg, $immediatly = false) +{ + if ($immediatly) { + if ($msg == "") { + return ""; + } + return '
' . $msg . '
'; } - return '
' . $msg . '
'; - } - if (! isset($_SESSION['msg'])) { - $_SESSION['msg'] = ""; - } - $_SESSION['msg'] .= alert($class, $msg, true); + if (! isset($_SESSION['msg'])) { + $_SESSION['msg'] = ""; + } + $_SESSION['msg'] .= alert($class, $msg, true); } - -?> \ No newline at end of file diff --git a/includes/mailer/shifts_mailer.php b/includes/mailer/shifts_mailer.php index e1bf422b..fd0d32c0 100644 --- a/includes/mailer/shifts_mailer.php +++ b/includes/mailer/shifts_mailer.php @@ -1,104 +1,106 @@ +function mail_shift_removed($user, $shift) +{ + if ($user["email_shiftinfo"]) { + $room = Room($shift["RID"]); + + $message = _("You have been removed from a Shift:") . "\n"; + $message .= $shift["name"] . "\n"; + $message .= $shift["title"] . "\n"; + $message .= date("Y-m-d H:i", $shift["start"]) . " - " . date("H:i", $shift["end"]) . "\n"; + $message .= $room["Name"] . "\n"; + + engelsystem_email_to_user($user, '[engelsystem] ' . _("Removed from Shift"), $message, true); + } +} diff --git a/includes/mailer/users_mailer.php b/includes/mailer/users_mailer.php index b08af92b..bae8d918 100644 --- a/includes/mailer/users_mailer.php +++ b/includes/mailer/users_mailer.php @@ -3,7 +3,7 @@ /** * @param User $user_source */ -function mail_user_delete($user) { - engelsystem_email_to_user($user, '[engelsystem] ' . _("Your account has been deleted"), _("Your angelsystem account has been deleted. If you have any questions regarding your account deletion, please contact heaven.")); +function mail_user_delete($user) +{ + engelsystem_email_to_user($user, '[engelsystem] ' . _("Your account has been deleted"), _("Your angelsystem account has been deleted. If you have any questions regarding your account deletion, please contact heaven.")); } -?> \ No newline at end of file diff --git a/includes/model/AngelType_model.php b/includes/model/AngelType_model.php index 8d6a89b3..022462c0 100644 --- a/includes/model/AngelType_model.php +++ b/includes/model/AngelType_model.php @@ -5,8 +5,9 @@ use Engelsystem\ValidationResult; * Returns an array containing the basic attributes of angeltypes. * FIXME! This is the big sign for needing entity objects */ -function AngelType_new() { - return [ +function AngelType_new() +{ + return [ 'id' => null, 'name' => "", 'restricted' => false, @@ -16,7 +17,7 @@ function AngelType_new() { 'contact_user_id' => null, 'contact_name' => null, 'contact_dect' => null, - 'contact_email' => null + 'contact_email' => null ]; } @@ -27,17 +28,18 @@ function AngelType_new() { * The angeltype * @return ValidationResult */ -function AngelType_validate_contact_user_id($angeltype) { - if (! isset($angeltype['contact_user_id'])) { - return new ValidationResult(true, null); - } - if (isset($angeltype['contact_name']) || isset($angeltype['contact_dect']) || isset($angeltype['contact_email'])) { - return new ValidationResult(false, $angeltype['contact_user_id']); - } - if (User($angeltype['contact_user_id']) == null) { - return new ValidationResult(false, $angeltype['contact_user_id']); - } - return new ValidationResult(true, $angeltype['contact_user_id']); +function AngelType_validate_contact_user_id($angeltype) +{ + if (! isset($angeltype['contact_user_id'])) { + return new ValidationResult(true, null); + } + if (isset($angeltype['contact_name']) || isset($angeltype['contact_dect']) || isset($angeltype['contact_email'])) { + return new ValidationResult(false, $angeltype['contact_user_id']); + } + if (User($angeltype['contact_user_id']) == null) { + return new ValidationResult(false, $angeltype['contact_user_id']); + } + return new ValidationResult(true, $angeltype['contact_user_id']); } /** @@ -46,43 +48,45 @@ function AngelType_validate_contact_user_id($angeltype) { * @param Angeltype $angeltype * The angeltype */ -function AngelType_contact_info($angeltype) { - if (isset($angeltype['contact_user_id'])) { - $contact_user = User($angeltype['contact_user_id']); - $contact_data = [ +function AngelType_contact_info($angeltype) +{ + if (isset($angeltype['contact_user_id'])) { + $contact_user = User($angeltype['contact_user_id']); + $contact_data = [ 'contact_name' => $contact_user['Nick'], - 'contact_dect' => $contact_user['DECT'] + 'contact_dect' => $contact_user['DECT'] ]; - if ($contact_user['email_by_human_allowed']) { - $contact_data['contact_email'] = $contact_user['email']; + if ($contact_user['email_by_human_allowed']) { + $contact_data['contact_email'] = $contact_user['email']; + } + return $contact_data; } - return $contact_data; - } - if (isset($angeltype['contact_name'])) { - return [ + if (isset($angeltype['contact_name'])) { + return [ 'contact_name' => $angeltype['contact_name'], 'contact_dect' => $angeltype['contact_dect'], - 'contact_email' => $angeltype['contact_email'] + 'contact_email' => $angeltype['contact_email'] ]; - } - return null; + } + return null; } /** * Delete an Angeltype. * - * @param Angeltype $angeltype + * @param Angeltype $angeltype */ -function AngelType_delete($angeltype) { - $result = sql_query(" +function AngelType_delete($angeltype) +{ + $result = sql_query(" DELETE FROM `AngelTypes` WHERE `id`='" . sql_escape($angeltype['id']) . "' LIMIT 1"); - if ($result === false) { - engelsystem_error("Unable to delete angeltype."); - } - engelsystem_log("Deleted angeltype: " . AngelType_name_render($angeltype)); - return $result; + if ($result === false) { + engelsystem_error("Unable to delete angeltype."); + } + engelsystem_log("Deleted angeltype: " . AngelType_name_render($angeltype)); + return $result; } /** @@ -91,8 +95,9 @@ function AngelType_delete($angeltype) { * @param Angeltype $angeltype * The angeltype */ -function AngelType_update($angeltype) { - $result = sql_query(" +function AngelType_update($angeltype) +{ + $result = sql_query(" UPDATE `AngelTypes` SET `name`='" . sql_escape($angeltype['name']) . "', `restricted`=" . sql_bool($angeltype['restricted']) . ", @@ -104,11 +109,11 @@ function AngelType_update($angeltype) { `contact_dect`=" . sql_null($angeltype['contact_dect']) . ", `contact_email`=" . sql_null($angeltype['contact_email']) . " WHERE `id`='" . sql_escape($angeltype['id']) . "'"); - if ($result === false) { - engelsystem_error("Unable to update angeltype."); - } - engelsystem_log("Updated angeltype: " . $angeltype['name'] . ($angeltype['restricted'] ? ", restricted" : "") . ($angeltype['no_self_signup'] ? ", no_self_signup" : "") . ($angeltype['requires_driver_license'] ? ", requires driver license" : "")); - return $result; + if ($result === false) { + engelsystem_error("Unable to update angeltype."); + } + engelsystem_log("Updated angeltype: " . $angeltype['name'] . ($angeltype['restricted'] ? ", restricted" : "") . ($angeltype['no_self_signup'] ? ", no_self_signup" : "") . ($angeltype['requires_driver_license'] ? ", requires driver license" : "")); + return $result; } /** @@ -118,8 +123,9 @@ function AngelType_update($angeltype) { * The angeltype * @return the created angeltype */ -function AngelType_create($angeltype) { - $result = sql_query(" +function AngelType_create($angeltype) +{ + $result = sql_query(" INSERT INTO `AngelTypes` SET `name`='" . sql_escape($angeltype['name']) . "', `restricted`=" . sql_bool($angeltype['restricted']) . ", @@ -130,12 +136,12 @@ function AngelType_create($angeltype) { `contact_name`=" . sql_null($angeltype['contact_name']) . ", `contact_dect`=" . sql_null($angeltype['contact_dect']) . ", `contact_email`=" . sql_null($angeltype['contact_email'])); - if ($result === false) { - engelsystem_error("Unable to create angeltype."); - } - $angeltype['id'] = sql_id(); - engelsystem_log("Created angeltype: " . $angeltype['name'] . ($angeltype['restricted'] ? ", restricted" : "") . ($angeltype['requires_driver_license'] ? ", requires driver license" : "")); - return $angeltype; + if ($result === false) { + engelsystem_error("Unable to create angeltype."); + } + $angeltype['id'] = sql_id(); + engelsystem_log("Created angeltype: " . $angeltype['name'] . ($angeltype['restricted'] ? ", restricted" : "") . ($angeltype['requires_driver_license'] ? ", requires driver license" : "")); + return $angeltype; } /** @@ -148,35 +154,37 @@ function AngelType_create($angeltype) { * The angeltype the name is for * @return ValidationResult result and validated name */ -function AngelType_validate_name($name, $angeltype) { - $name = strip_item($name); - if ($name == "") { - return new ValidationResult(false, ""); - } - if ($angeltype != null && isset($angeltype['id'])) { - $valid = sql_num_query(" +function AngelType_validate_name($name, $angeltype) +{ + $name = strip_item($name); + if ($name == "") { + return new ValidationResult(false, ""); + } + if ($angeltype != null && isset($angeltype['id'])) { + $valid = sql_num_query(" SELECT * FROM `AngelTypes` WHERE `name`='" . sql_escape($name) . "' AND NOT `id`='" . sql_escape($angeltype['id']) . "' LIMIT 1") == 0; - return new ValidationResult($valid, $name); - } - $valid = sql_num_query(" + return new ValidationResult($valid, $name); + } + $valid = sql_num_query(" SELECT `id` FROM `AngelTypes` WHERE `name`='" . sql_escape($name) . "' LIMIT 1") == 0; - return new ValidationResult($valid, $name); + return new ValidationResult($valid, $name); } /** * Returns all angeltypes and subscription state to each of them for given user. * - * @param User $user + * @param User $user */ -function AngelTypes_with_user($user) { - $result = sql_select(" +function AngelTypes_with_user($user) +{ + $result = sql_select(" SELECT `AngelTypes`.*, `UserAngelTypes`.`id` as `user_angeltype_id`, `UserAngelTypes`.`confirm_user_id`, @@ -185,35 +193,37 @@ function AngelTypes_with_user($user) { LEFT JOIN `UserAngelTypes` ON `AngelTypes`.`id`=`UserAngelTypes`.`angeltype_id` AND `UserAngelTypes`.`user_id`=" . $user['UID'] . " ORDER BY `name`"); - if ($result === false) { - engelsystem_error("Unable to load angeltypes."); - } - return $result; + if ($result === false) { + engelsystem_error("Unable to load angeltypes."); + } + return $result; } /** * Returns all angeltypes. */ -function AngelTypes() { - $result = sql_select(" +function AngelTypes() +{ + $result = sql_select(" SELECT * FROM `AngelTypes` ORDER BY `name`"); - if ($result === false) { - engelsystem_error("Unable to load angeltypes."); - } - return $result; + if ($result === false) { + engelsystem_error("Unable to load angeltypes."); + } + return $result; } /** * Returns AngelType id array */ -function AngelType_ids() { - $result = sql_select("SELECT `id` FROM `AngelTypes`"); - if ($result === false) { - engelsystem_error("Unable to load angeltypes."); - } - return select_array($result, 'id', 'id'); +function AngelType_ids() +{ + $result = sql_select("SELECT `id` FROM `AngelTypes`"); + if ($result === false) { + engelsystem_error("Unable to load angeltypes."); + } + return select_array($result, 'id', 'id'); } /** @@ -222,15 +232,14 @@ function AngelType_ids() { * @param $angeltype_id angelType * ID */ -function AngelType($angeltype_id) { - $angelType_source = sql_select("SELECT * FROM `AngelTypes` WHERE `id`='" . sql_escape($angeltype_id) . "'"); - if ($angelType_source === false) { - engelsystem_error("Unable to load angeltype."); - } - if (count($angelType_source) > 0) { - return $angelType_source[0]; - } - return null; +function AngelType($angeltype_id) +{ + $angelType_source = sql_select("SELECT * FROM `AngelTypes` WHERE `id`='" . sql_escape($angeltype_id) . "'"); + if ($angelType_source === false) { + engelsystem_error("Unable to load angeltype."); + } + if (count($angelType_source) > 0) { + return $angelType_source[0]; + } + return null; } - -?> diff --git a/includes/model/EventConfig_model.php b/includes/model/EventConfig_model.php index de5073d0..b4fdb728 100644 --- a/includes/model/EventConfig_model.php +++ b/includes/model/EventConfig_model.php @@ -3,39 +3,41 @@ /** * Get event config. */ -function EventConfig() { - $event_config = sql_select("SELECT * FROM `EventConfig` LIMIT 1"); - if ($event_config === false) { - engelsystem_error("Unable to load event config."); - return false; - } - if (count($event_config) > 0) { - return $event_config[0]; - } - return null; +function EventConfig() +{ + $event_config = sql_select("SELECT * FROM `EventConfig` LIMIT 1"); + if ($event_config === false) { + engelsystem_error("Unable to load event config."); + return false; + } + if (count($event_config) > 0) { + return $event_config[0]; + } + return null; } /** * Update event config. * - * @param string $event_name - * @param int $buildup_start_date - * @param int $event_start_date - * @param int $event_end_date - * @param int $teardown_end_date - * @param string $event_welcome_msg + * @param string $event_name + * @param int $buildup_start_date + * @param int $event_start_date + * @param int $event_end_date + * @param int $teardown_end_date + * @param string $event_welcome_msg */ -function EventConfig_update($event_name, $buildup_start_date, $event_start_date, $event_end_date, $teardown_end_date, $event_welcome_msg) { - if (EventConfig() == null) { - return sql_query("INSERT INTO `EventConfig` SET +function EventConfig_update($event_name, $buildup_start_date, $event_start_date, $event_end_date, $teardown_end_date, $event_welcome_msg) +{ + if (EventConfig() == null) { + return sql_query("INSERT INTO `EventConfig` SET `event_name`=" . sql_null($event_name) . ", `buildup_start_date`=" . sql_null($buildup_start_date) . ", `event_start_date`=" . sql_null($event_start_date) . ", `event_end_date`=" . sql_null($event_end_date) . ", `teardown_end_date`=" . sql_null($teardown_end_date) . ", `event_welcome_msg`=" . sql_null($event_welcome_msg)); - } - return sql_query("UPDATE `EventConfig` SET + } + return sql_query("UPDATE `EventConfig` SET `event_name`=" . sql_null($event_name) . ", `buildup_start_date`=" . sql_null($buildup_start_date) . ", `event_start_date`=" . sql_null($event_start_date) . ", @@ -43,4 +45,3 @@ function EventConfig_update($event_name, $buildup_start_date, $event_start_date, `teardown_end_date`=" . sql_null($teardown_end_date) . ", `event_welcome_msg`=" . sql_null($event_welcome_msg)); } -?> diff --git a/includes/model/LogEntries_model.php b/includes/model/LogEntries_model.php index 09bd03dc..2a3a1d6e 100644 --- a/includes/model/LogEntries_model.php +++ b/includes/model/LogEntries_model.php @@ -7,32 +7,34 @@ * @param $message Log * Message */ -function LogEntry_create($nick, $message) { - return sql_query("INSERT INTO `LogEntries` SET `timestamp`='" . sql_escape(time()) . "', `nick`='" . sql_escape($nick) . "', `message`='" . sql_escape($message) . "'"); +function LogEntry_create($nick, $message) +{ + return sql_query("INSERT INTO `LogEntries` SET `timestamp`='" . sql_escape(time()) . "', `nick`='" . sql_escape($nick) . "', `message`='" . sql_escape($message) . "'"); } /** * Returns log entries with maximum count of 10000. */ -function LogEntries() { - return sql_select("SELECT * FROM `LogEntries` ORDER BY `timestamp` DESC LIMIT 10000"); +function LogEntries() +{ + return sql_select("SELECT * FROM `LogEntries` ORDER BY `timestamp` DESC LIMIT 10000"); } /** * Returns log entries filtered by a keyword */ -function LogEntries_filter($keyword) { - if ($keyword == "") { - return LogEntries(); - } - return sql_select("SELECT * FROM `LogEntries` WHERE `nick` LIKE '%" . sql_escape($keyword) . "%' OR `message` LIKE '%" . sql_escape($keyword) . "%' ORDER BY `timestamp` DESC"); +function LogEntries_filter($keyword) +{ + if ($keyword == "") { + return LogEntries(); + } + return sql_select("SELECT * FROM `LogEntries` WHERE `nick` LIKE '%" . sql_escape($keyword) . "%' OR `message` LIKE '%" . sql_escape($keyword) . "%' ORDER BY `timestamp` DESC"); } /** * Delete all log entries. */ -function LogEntries_clear_all() { - return sql_query("TRUNCATE `LogEntries`"); +function LogEntries_clear_all() +{ + return sql_query("TRUNCATE `LogEntries`"); } - -?> diff --git a/includes/model/Message_model.php b/includes/model/Message_model.php index 652b60ea..6ee19792 100644 --- a/includes/model/Message_model.php +++ b/includes/model/Message_model.php @@ -3,8 +3,9 @@ /** * Returns Message id array */ -function Message_ids() { - return sql_select("SELECT `id` FROM `Messages`"); +function Message_ids() +{ + return sql_select("SELECT `id` FROM `Messages`"); } /** @@ -13,15 +14,16 @@ function Message_ids() { * @param $message_id message * ID */ -function Message($message_id) { - $message_source = sql_select("SELECT * FROM `Messages` WHERE `id`='" . sql_escape($message_id) . "' LIMIT 1"); - if ($message_source === false) { - return false; - } - if (count($message_source) > 0) { - return $message_source[0]; - } - return null; +function Message($message_id) +{ + $message_source = sql_select("SELECT * FROM `Messages` WHERE `id`='" . sql_escape($message_id) . "' LIMIT 1"); + if ($message_source === false) { + return false; + } + if (count($message_source) > 0) { + return $message_source[0]; + } + return null; } /** @@ -34,18 +36,17 @@ function Message($message_id) { * @param $text Text * of Message */ -function Message_send($receiver_user_id, $text) { - global $user; +function Message_send($receiver_user_id, $text) +{ + global $user; - $text = preg_replace("/([^\p{L}\p{P}\p{Z}\p{N}\n]{1,})/ui", '', strip_tags($text)); - $receiver_user_id = preg_replace("/([^0-9]{1,})/ui", '', strip_tags($receiver_user_id)); + $text = preg_replace("/([^\p{L}\p{P}\p{Z}\p{N}\n]{1,})/ui", '', strip_tags($text)); + $receiver_user_id = preg_replace("/([^0-9]{1,})/ui", '', strip_tags($receiver_user_id)); - if (($text != "" && is_numeric($receiver_user_id)) && (sql_num_query("SELECT * FROM `User` WHERE `UID`='" . sql_escape($receiver_user_id) . "' AND NOT `UID`='" . sql_escape($user['UID']) . "' LIMIT 1") > 0)) { - sql_query("INSERT INTO `Messages` SET `Datum`='" . sql_escape(time()) . "', `SUID`='" . sql_escape($user['UID']) . "', `RUID`='" . sql_escape($receiver_user_id) . "', `Text`='" . sql_escape($text) . "'"); - return true; - } + if (($text != "" && is_numeric($receiver_user_id)) && (sql_num_query("SELECT * FROM `User` WHERE `UID`='" . sql_escape($receiver_user_id) . "' AND NOT `UID`='" . sql_escape($user['UID']) . "' LIMIT 1") > 0)) { + sql_query("INSERT INTO `Messages` SET `Datum`='" . sql_escape(time()) . "', `SUID`='" . sql_escape($user['UID']) . "', `RUID`='" . sql_escape($receiver_user_id) . "', `Text`='" . sql_escape($text) . "'"); + return true; + } - return false; + return false; } - -?> \ No newline at end of file diff --git a/includes/model/NeededAngelTypes_model.php b/includes/model/NeededAngelTypes_model.php index 3bd3660f..e2661b9a 100644 --- a/includes/model/NeededAngelTypes_model.php +++ b/includes/model/NeededAngelTypes_model.php @@ -16,17 +16,18 @@ * @param int $count * How many angels are needed? */ -function NeededAngelType_add($shift_id, $angeltype_id, $room_id, $count) { - $result = sql_query(" +function NeededAngelType_add($shift_id, $angeltype_id, $room_id, $count) +{ + $result = sql_query(" INSERT INTO `NeededAngelTypes` SET `shift_id`=" . sql_null($shift_id) . ", `angel_type_id`='" . sql_escape($angeltype_id) . "', `room_id`=" . sql_null($room_id) . ", `count`='" . sql_escape($count) . "'"); - if ($result === false) { - return false; - } - return sql_id(); + if ($result === false) { + return false; + } + return sql_id(); } /** @@ -35,8 +36,9 @@ function NeededAngelType_add($shift_id, $angeltype_id, $room_id, $count) { * @param int $shift_id * id of the shift */ -function NeededAngelTypes_delete_by_shift($shift_id) { - return sql_query("DELETE FROM `NeededAngelTypes` WHERE `shift_id`='" . sql_escape($shift_id) . "'"); +function NeededAngelTypes_delete_by_shift($shift_id) +{ + return sql_query("DELETE FROM `NeededAngelTypes` WHERE `shift_id`='" . sql_escape($shift_id) . "'"); } /** @@ -45,8 +47,9 @@ function NeededAngelTypes_delete_by_shift($shift_id) { * @param int $room_id * id of the room */ -function NeededAngelTypes_delete_by_room($room_id) { - return sql_query("DELETE FROM `NeededAngelTypes` WHERE `room_id`='" . sql_escape($room_id) . "'"); +function NeededAngelTypes_delete_by_room($room_id) +{ + return sql_query("DELETE FROM `NeededAngelTypes` WHERE `room_id`='" . sql_escape($room_id) . "'"); } /** @@ -55,8 +58,9 @@ function NeededAngelTypes_delete_by_room($room_id) { * @param int $shiftID * id of shift */ -function NeededAngelTypes_by_shift($shiftId) { - $needed_angeltypes_source = sql_select(" +function NeededAngelTypes_by_shift($shiftId) +{ + $needed_angeltypes_source = sql_select(" SELECT `NeededAngelTypes`.*, `AngelTypes`.`id`, `AngelTypes`.`name`, `AngelTypes`.`restricted`, `AngelTypes`.`no_self_signup` FROM `NeededAngelTypes` JOIN `AngelTypes` ON `AngelTypes`.`id` = `NeededAngelTypes`.`angel_type_id` @@ -64,13 +68,13 @@ function NeededAngelTypes_by_shift($shiftId) { AND `count` > 0 ORDER BY `room_id` DESC "); - if ($needed_angeltypes_source === false) { - engelsystem_error("Unable to load needed angeltypes."); - } + if ($needed_angeltypes_source === false) { + engelsystem_error("Unable to load needed angeltypes."); + } // Use settings from room if (count($needed_angeltypes_source) == 0) { - $needed_angeltypes_source = sql_select(" + $needed_angeltypes_source = sql_select(" SELECT `NeededAngelTypes`.*, `AngelTypes`.`name`, `AngelTypes`.`restricted` FROM `NeededAngelTypes` JOIN `AngelTypes` ON `AngelTypes`.`id` = `NeededAngelTypes`.`angel_type_id` @@ -79,27 +83,25 @@ function NeededAngelTypes_by_shift($shiftId) { AND `count` > 0 ORDER BY `room_id` DESC "); - if ($needed_angeltypes_source === false) { - engelsystem_error("Unable to load needed angeltypes."); - } - } - - $shift_entries = ShiftEntries_by_shift($shiftId); - $needed_angeltypes = []; - foreach ($needed_angeltypes_source as $angeltype) { - $angeltype['shift_entries'] = []; - $angeltype['taken'] = 0; - foreach ($shift_entries as $shift_entry) { - if ($shift_entry['TID'] == $angeltype['angel_type_id'] && $shift_entry['freeloaded'] == 0) { - $angeltype['taken'] ++; - $angeltype['shift_entries'][] = $shift_entry; + if ($needed_angeltypes_source === false) { + engelsystem_error("Unable to load needed angeltypes."); } - } - - $needed_angeltypes[] = $angeltype; } - return $needed_angeltypes; + $shift_entries = ShiftEntries_by_shift($shiftId); + $needed_angeltypes = []; + foreach ($needed_angeltypes_source as $angeltype) { + $angeltype['shift_entries'] = []; + $angeltype['taken'] = 0; + foreach ($shift_entries as $shift_entry) { + if ($shift_entry['TID'] == $angeltype['angel_type_id'] && $shift_entry['freeloaded'] == 0) { + $angeltype['taken'] ++; + $angeltype['shift_entries'][] = $shift_entry; + } + } + + $needed_angeltypes[] = $angeltype; + } + + return $needed_angeltypes; } - -?> \ No newline at end of file diff --git a/includes/model/Room_model.php b/includes/model/Room_model.php index 6b6e269e..d7031d84 100644 --- a/includes/model/Room_model.php +++ b/includes/model/Room_model.php @@ -4,17 +4,19 @@ * returns a list of rooms. * @param boolean $show_all returns also hidden rooms when true */ -function Rooms($show_all = false) { - return sql_select("SELECT * FROM `Room`" . ($show_all ? "" : " WHERE `show`='Y'") . " ORDER BY `Name`"); +function Rooms($show_all = false) +{ + return sql_select("SELECT * FROM `Room`" . ($show_all ? "" : " WHERE `show`='Y'") . " ORDER BY `Name`"); } /** * Delete a room * - * @param int $room_id + * @param int $room_id */ -function Room_delete($room_id) { - return sql_query("DELETE FROM `Room` WHERE `RID`=" . sql_escape($room_id)); +function Room_delete($room_id) +{ + return sql_query("DELETE FROM `Room` WHERE `RID`=" . sql_escape($room_id)); } /** @@ -27,34 +29,34 @@ function Room_delete($room_id) { * @param boolean $public * Is the room visible for angels? */ -function Room_create($name, $from_frab, $public) { - $result = sql_query(" +function Room_create($name, $from_frab, $public) +{ + $result = sql_query(" INSERT INTO `Room` SET `Name`='" . sql_escape($name) . "', `FromPentabarf`='" . sql_escape($from_frab ? 'Y' : '') . "', `show`='" . sql_escape($public ? 'Y' : '') . "', `Number`=0"); - if ($result === false) { - return false; - } - return sql_id(); + if ($result === false) { + return false; + } + return sql_id(); } /** * Returns room by id. * - * @param $room_id RID + * @param $room_id RID */ -function Room($room_id) { - $room_source = sql_select("SELECT * FROM `Room` WHERE `RID`='" . sql_escape($room_id) . "' AND `show` = 'Y'"); +function Room($room_id) +{ + $room_source = sql_select("SELECT * FROM `Room` WHERE `RID`='" . sql_escape($room_id) . "' AND `show` = 'Y'"); - if ($room_source === false) { - return false; - } - if (count($room_source) > 0) { - return $room_source[0]; - } - return null; + if ($room_source === false) { + return false; + } + if (count($room_source) > 0) { + return $room_source[0]; + } + return null; } - -?> diff --git a/includes/model/ShiftEntry_model.php b/includes/model/ShiftEntry_model.php index 9f4faf9e..c25938e3 100644 --- a/includes/model/ShiftEntry_model.php +++ b/includes/model/ShiftEntry_model.php @@ -4,30 +4,33 @@ * Returns an array with the attributes of shift entries. * FIXME! Needs entity object. */ -function ShiftEntry_new() { - return [ +function ShiftEntry_new() +{ + return [ 'id' => null, 'SID' => null, 'TID' => null, 'UID' => null, 'Comment' => null, 'freeloaded_comment' => null, - 'freeloaded' => false + 'freeloaded' => false ]; } /** * Counts all freeloaded shifts. */ -function ShiftEntries_freeleaded_count() { - return sql_select_single_cell("SELECT COUNT(*) FROM `ShiftEntry` WHERE `freeloaded` = 1"); +function ShiftEntries_freeleaded_count() +{ + return sql_select_single_cell("SELECT COUNT(*) FROM `ShiftEntry` WHERE `freeloaded` = 1"); } /** * List users subsribed to a given shift. */ -function ShiftEntries_by_shift($shift_id) { - return sql_select(" +function ShiftEntries_by_shift($shift_id) +{ + return sql_select(" SELECT `User`.`Nick`, `User`.`email`, `User`.`email_shiftinfo`, `User`.`Sprache`, `User`.`Gekommen`, `ShiftEntry`.`UID`, `ShiftEntry`.`TID`, `ShiftEntry`.`SID`, `AngelTypes`.`name` as `angel_type_name`, `ShiftEntry`.`Comment`, `ShiftEntry`.`freeloaded` FROM `ShiftEntry` JOIN `User` ON `ShiftEntry`.`UID`=`User`.`UID` @@ -38,11 +41,12 @@ function ShiftEntries_by_shift($shift_id) { /** * Create a new shift entry. * - * @param ShiftEntry $shift_entry + * @param ShiftEntry $shift_entry */ -function ShiftEntry_create($shift_entry) { - mail_shift_assign(User($shift_entry['UID']), Shift($shift_entry['SID'])); - return sql_query("INSERT INTO `ShiftEntry` SET +function ShiftEntry_create($shift_entry) +{ + mail_shift_assign(User($shift_entry['UID']), Shift($shift_entry['SID'])); + return sql_query("INSERT INTO `ShiftEntry` SET `SID`='" . sql_escape($shift_entry['SID']) . "', `TID`='" . sql_escape($shift_entry['TID']) . "', `UID`='" . sql_escape($shift_entry['UID']) . "', @@ -54,8 +58,9 @@ function ShiftEntry_create($shift_entry) { /** * Update a shift entry. */ -function ShiftEntry_update($shift_entry) { - return sql_query("UPDATE `ShiftEntry` SET +function ShiftEntry_update($shift_entry) +{ + return sql_query("UPDATE `ShiftEntry` SET `Comment`='" . sql_escape($shift_entry['Comment']) . "', `freeload_comment`='" . sql_escape($shift_entry['freeload_comment']) . "', `freeloaded`=" . sql_bool($shift_entry['freeloaded']) . " @@ -65,33 +70,36 @@ function ShiftEntry_update($shift_entry) { /** * Get a shift entry. */ -function ShiftEntry($shift_entry_id) { - $shift_entry = sql_select("SELECT * FROM `ShiftEntry` WHERE `id`='" . sql_escape($shift_entry_id) . "'"); - if ($shift_entry === false) { - return false; - } - if (count($shift_entry) == 0) { - return null; - } - return $shift_entry[0]; +function ShiftEntry($shift_entry_id) +{ + $shift_entry = sql_select("SELECT * FROM `ShiftEntry` WHERE `id`='" . sql_escape($shift_entry_id) . "'"); + if ($shift_entry === false) { + return false; + } + if (count($shift_entry) == 0) { + return null; + } + return $shift_entry[0]; } /** * Delete a shift entry. */ -function ShiftEntry_delete($shift_entry_id) { - $shift_entry = ShiftEntry($shift_entry_id); - mail_shift_removed(User($shift_entry['UID']), Shift($shift_entry['SID'])); - return sql_query("DELETE FROM `ShiftEntry` WHERE `id`='" . sql_escape($shift_entry_id) . "'"); +function ShiftEntry_delete($shift_entry_id) +{ + $shift_entry = ShiftEntry($shift_entry_id); + mail_shift_removed(User($shift_entry['UID']), Shift($shift_entry['SID'])); + return sql_query("DELETE FROM `ShiftEntry` WHERE `id`='" . sql_escape($shift_entry_id) . "'"); } /** * Returns next (or current) shifts of given user. * - * @param User $user + * @param User $user */ -function ShiftEntries_upcoming_for_user($user) { - return sql_select(" +function ShiftEntries_upcoming_for_user($user) +{ + return sql_select(" SELECT * FROM `ShiftEntry` JOIN `Shifts` ON (`Shifts`.`SID` = `ShiftEntry`.`SID`) @@ -105,10 +113,11 @@ function ShiftEntries_upcoming_for_user($user) { /** * Returns shifts completed by the given user. * - * @param User $user + * @param User $user */ -function ShiftEntries_finished_by_user($user) { - return sql_select(" +function ShiftEntries_finished_by_user($user) +{ + return sql_select(" SELECT * FROM `ShiftEntry` JOIN `Shifts` ON (`Shifts`.`SID` = `ShiftEntry`.`SID`) @@ -123,30 +132,30 @@ function ShiftEntries_finished_by_user($user) { /** * Returns all shift entries in given shift for given angeltype. * - * @param int $shift_id - * @param int $angeltype_id + * @param int $shift_id + * @param int $angeltype_id */ -function ShiftEntries_by_shift_and_angeltype($shift_id, $angeltype_id) { - $result = sql_select(" +function ShiftEntries_by_shift_and_angeltype($shift_id, $angeltype_id) +{ + $result = sql_select(" SELECT * FROM `ShiftEntry` WHERE `SID`=" . sql_escape($shift_id) . " AND `TID`=" . sql_escape($angeltype_id) . " "); - if ($result === false) { - engelsystem_error("Unable to load shift entries."); - } - return $result; + if ($result === false) { + engelsystem_error("Unable to load shift entries."); + } + return $result; } /** * Returns all freeloaded shifts for given user. */ -function ShiftEntries_freeloaded_by_user($user) { - return sql_select("SELECT * +function ShiftEntries_freeloaded_by_user($user) +{ + return sql_select("SELECT * FROM `ShiftEntry` WHERE `freeloaded` = 1 AND `UID`=" . sql_escape($user['UID'])); } - -?> diff --git a/includes/model/ShiftSignupState.php b/includes/model/ShiftSignupState.php index 393023ee..9c20a575 100644 --- a/includes/model/ShiftSignupState.php +++ b/includes/model/ShiftSignupState.php @@ -6,7 +6,8 @@ namespace Engelsystem; * BO to represent if there are free slots on a shift for a given angeltype * and if signup for a given user is possible (or not, because of collisions, etc.) */ -class ShiftSignupState { +class ShiftSignupState +{ /** * Shift has free places @@ -43,14 +44,15 @@ class ShiftSignupState { */ const SIGNED_UP = 'SIGNED_UP'; - private $state; + private $state; - private $freeEntries; + private $freeEntries; - public function __construct($state, $free_entries) { - $this->state = $state; - $this->freeEntries = $free_entries; - } + public function __construct($state, $free_entries) + { + $this->state = $state; + $this->freeEntries = $free_entries; + } /** * Combine this state with another state from the same shift. @@ -58,16 +60,18 @@ class ShiftSignupState { * @param ShiftSignupState $shiftSignupState * The other state to combine */ - public function combineWith(ShiftSignupState $shiftSignupState) { - $this->freeEntries += $shiftSignupState->getFreeEntries(); + public function combineWith(ShiftSignupState $shiftSignupState) + { + $this->freeEntries += $shiftSignupState->getFreeEntries(); - if ($this->valueForState($shiftSignupState->state) > $this->valueForState($this->state)) { - $this->state = $shiftSignupState->state; - } + if ($this->valueForState($shiftSignupState->state) > $this->valueForState($this->state)) { + $this->state = $shiftSignupState->state; + } } - private function valueForState($state) { - switch ($state) { + private function valueForState($state) + { + switch ($state) { case ShiftSignupState::SHIFT_ENDED: return 100; @@ -85,33 +89,34 @@ class ShiftSignupState { case ShiftSignupState::ADMIN: return 60; } - } + } /** * Returns true, if signup is allowed */ - public function isSignupAllowed() { - switch ($this->state) { + public function isSignupAllowed() + { + switch ($this->state) { case ShiftSignupState::FREE: case ShiftSignupState::ADMIN: return true; } - return false; + return false; } /** * Return the shift signup state */ - public function getState() { - return $this->state; + public function getState() + { + return $this->state; } /** * How many places are free in this shift for the angeltype? */ - public function getFreeEntries() { - return $this->freeEntries; + public function getFreeEntries() + { + return $this->freeEntries; } } - -?> \ No newline at end of file diff --git a/includes/model/ShiftTypes_model.php b/includes/model/ShiftTypes_model.php index 89704a65..fb361db9 100644 --- a/includes/model/ShiftTypes_model.php +++ b/includes/model/ShiftTypes_model.php @@ -4,20 +4,22 @@ * Delete a shift type. * @param int $shifttype_id */ -function ShiftType_delete($shifttype_id) { - return sql_query("DELETE FROM `ShiftTypes` WHERE `id`='" . sql_escape($shifttype_id) . "'"); +function ShiftType_delete($shifttype_id) +{ + return sql_query("DELETE FROM `ShiftTypes` WHERE `id`='" . sql_escape($shifttype_id) . "'"); } /** * Update a shift type. * - * @param int $shifttype_id - * @param string $name - * @param int $angeltype_id - * @param string $description + * @param int $shifttype_id + * @param string $name + * @param int $angeltype_id + * @param string $description */ -function ShiftType_update($shifttype_id, $name, $angeltype_id, $description) { - return sql_query("UPDATE `ShiftTypes` SET +function ShiftType_update($shifttype_id, $name, $angeltype_id, $description) +{ + return sql_query("UPDATE `ShiftTypes` SET `name`='" . sql_escape($name) . "', `angeltype_id`=" . sql_null($angeltype_id) . ", `description`='" . sql_escape($description) . "' @@ -27,43 +29,44 @@ function ShiftType_update($shifttype_id, $name, $angeltype_id, $description) { /** * Create a shift type. * - * @param string $name - * @param int $angeltype_id - * @param string $description + * @param string $name + * @param int $angeltype_id + * @param string $description * @return new shifttype id */ -function ShiftType_create($name, $angeltype_id, $description) { - $result = sql_query("INSERT INTO `ShiftTypes` SET +function ShiftType_create($name, $angeltype_id, $description) +{ + $result = sql_query("INSERT INTO `ShiftTypes` SET `name`='" . sql_escape($name) . "', `angeltype_id`=" . sql_null($angeltype_id) . ", `description`='" . sql_escape($description) . "'"); - if ($result === false) { - return false; - } - return sql_id(); + if ($result === false) { + return false; + } + return sql_id(); } /** * Get a shift type by id. * - * @param int $shifttype_id + * @param int $shifttype_id */ -function ShiftType($shifttype_id) { - $shifttype = sql_select("SELECT * FROM `ShiftTypes` WHERE `id`='" . sql_escape($shifttype_id) . "'"); - if ($shifttype === false) { - engelsystem_error('Unable to load shift type.'); - } - if ($shifttype == null) { - return null; - } - return $shifttype[0]; +function ShiftType($shifttype_id) +{ + $shifttype = sql_select("SELECT * FROM `ShiftTypes` WHERE `id`='" . sql_escape($shifttype_id) . "'"); + if ($shifttype === false) { + engelsystem_error('Unable to load shift type.'); + } + if ($shifttype == null) { + return null; + } + return $shifttype[0]; } /** * Get all shift types. */ -function ShiftTypes() { - return sql_select("SELECT * FROM `ShiftTypes` ORDER BY `name`"); +function ShiftTypes() +{ + return sql_select("SELECT * FROM `ShiftTypes` ORDER BY `name`"); } - -?> \ No newline at end of file diff --git a/includes/model/ShiftsFilter.php b/includes/model/ShiftsFilter.php index ff1f5d40..cba6fee7 100644 --- a/includes/model/ShiftsFilter.php +++ b/includes/model/ShiftsFilter.php @@ -7,7 +7,8 @@ namespace Engelsystem; * * @author msquare */ -class ShiftsFilter { +class ShiftsFilter +{ /** * How long can the time interval be? @@ -32,90 +33,101 @@ class ShiftsFilter { */ private $userShiftsAdmin; - private $filled = []; + private $filled = []; - private $rooms = []; + private $rooms = []; - private $types = []; + private $types = []; - private $startTime = null; + private $startTime = null; - private $endTime = null; + private $endTime = null; - public function __construct($user_shifts_admin, $rooms, $types) { - $this->user_shifts_admin = $user_shifts_admin; - $this->rooms = $rooms; - $this->types = $types; + public function __construct($user_shifts_admin, $rooms, $types) + { + $this->user_shifts_admin = $user_shifts_admin; + $this->rooms = $rooms; + $this->types = $types; - $this->filled = [ - ShiftsFilter::FILLED_FREE + $this->filled = [ + ShiftsFilter::FILLED_FREE ]; - if ($user_shifts_admin) { - $this->filled[] = ShiftsFilter::FILLED_FILLED; + if ($user_shifts_admin) { + $this->filled[] = ShiftsFilter::FILLED_FILLED; + } } - } - public function getStartTime() { - return $this->startTime; - } - - public function setStartTime($startTime) { - $this->startTime = $startTime; - } - - public function getEndTime() { - return $this->endTime; - } - - public function setEndTime($endTime) { - if ($endTime - $this->startTime > ShiftsFilter::MAX_DURATION) { - $endTime = $this->startTime + ShiftsFilter::MAX_DURATION; + public function getStartTime() + { + return $this->startTime; } - $this->endTime = $endTime; - } - public function getTypes() { - if (count($this->types) == 0) { - return [ - 0 + public function setStartTime($startTime) + { + $this->startTime = $startTime; + } + + public function getEndTime() + { + return $this->endTime; + } + + public function setEndTime($endTime) + { + if ($endTime - $this->startTime > ShiftsFilter::MAX_DURATION) { + $endTime = $this->startTime + ShiftsFilter::MAX_DURATION; + } + $this->endTime = $endTime; + } + + public function getTypes() + { + if (count($this->types) == 0) { + return [ + 0 ]; + } + return $this->types; } - return $this->types; - } - public function setTypes($types) { - $this->types = $types; - } + public function setTypes($types) + { + $this->types = $types; + } - public function getRooms() { - if (count($this->rooms) == 0) { - return [ - 0 + public function getRooms() + { + if (count($this->rooms) == 0) { + return [ + 0 ]; + } + return $this->rooms; } - return $this->rooms; - } - public function setRooms($rooms) { - $this->rooms = $rooms; - } + public function setRooms($rooms) + { + $this->rooms = $rooms; + } - public function isUserShiftsAdmin() { - return $this->userShiftsAdmin; - } + public function isUserShiftsAdmin() + { + return $this->userShiftsAdmin; + } - public function setUserShiftsAdmin($userShiftsAdmin) { - $this->userShiftsAdmin = $userShiftsAdmin; - } + public function setUserShiftsAdmin($userShiftsAdmin) + { + $this->userShiftsAdmin = $userShiftsAdmin; + } - public function getFilled() { - return $this->filled; - } + public function getFilled() + { + return $this->filled; + } - public function setFilled($filled) { - $this->filled = $filled; - } + public function setFilled($filled) + { + $this->filled = $filled; + } } - -?> \ No newline at end of file diff --git a/includes/model/Shifts_model.php b/includes/model/Shifts_model.php index 29156423..0d49f5da 100644 --- a/includes/model/Shifts_model.php +++ b/includes/model/Shifts_model.php @@ -2,16 +2,18 @@ use Engelsystem\ShiftsFilter; use Engelsystem\ShiftSignupState; -function Shifts_by_room($room) { - $result = sql_select("SELECT * FROM `Shifts` WHERE `RID`=" . sql_escape($room['RID']) . " ORDER BY `start`"); - if ($result === false) { - engelsystem_error("Unable to load shifts."); - } - return $result; +function Shifts_by_room($room) +{ + $result = sql_select("SELECT * FROM `Shifts` WHERE `RID`=" . sql_escape($room['RID']) . " ORDER BY `start`"); + if ($result === false) { + engelsystem_error("Unable to load shifts."); + } + return $result; } -function Shifts_by_ShiftsFilter(ShiftsFilter $shiftsFilter) { - $SQL = "SELECT * FROM ( +function Shifts_by_ShiftsFilter(ShiftsFilter $shiftsFilter) +{ + $SQL = "SELECT * FROM ( SELECT DISTINCT `Shifts`.*, `ShiftTypes`.`name`, `Room`.`Name` as `room_name` FROM `Shifts` JOIN `Room` USING (`RID`) @@ -37,15 +39,16 @@ function Shifts_by_ShiftsFilter(ShiftsFilter $shiftsFilter) { AND NOT `Shifts`.`PSID` IS NULL) as tmp_shifts ORDER BY `start`"; - $result = sql_select($SQL); - if ($result === false) { - engelsystem_error("Unable to load shifts by filter."); - } - return $result; + $result = sql_select($SQL); + if ($result === false) { + engelsystem_error("Unable to load shifts by filter."); + } + return $result; } -function NeededAngeltypes_by_ShiftsFilter(ShiftsFilter $shiftsFilter) { - $SQL = "SELECT `NeededAngelTypes`.*, `Shifts`.`SID`, `AngelTypes`.`id`, `AngelTypes`.`name`, `AngelTypes`.`restricted`, `AngelTypes`.`no_self_signup` +function NeededAngeltypes_by_ShiftsFilter(ShiftsFilter $shiftsFilter) +{ + $SQL = "SELECT `NeededAngelTypes`.*, `Shifts`.`SID`, `AngelTypes`.`id`, `AngelTypes`.`name`, `AngelTypes`.`restricted`, `AngelTypes`.`no_self_signup` FROM `Shifts` JOIN `NeededAngelTypes` ON `NeededAngelTypes`.`shift_id`=`Shifts`.`SID` JOIN `AngelTypes` ON `AngelTypes`.`id`= `NeededAngelTypes`.`angel_type_id` @@ -62,15 +65,16 @@ function NeededAngeltypes_by_ShiftsFilter(ShiftsFilter $shiftsFilter) { WHERE `Shifts`.`RID` IN (" . implode(',', $shiftsFilter->getRooms()) . ") AND `start` BETWEEN " . $shiftsFilter->getStartTime() . " AND " . $shiftsFilter->getEndTime() . " AND NOT `Shifts`.`PSID` IS NULL"; - $result = sql_select($SQL); - if ($result === false) { - engelsystem_error("Unable to load needed angeltypes by filter."); - } - return $result; + $result = sql_select($SQL); + if ($result === false) { + engelsystem_error("Unable to load needed angeltypes by filter."); + } + return $result; } -function NeededAngeltype_by_Shift_and_Angeltype($shift, $angeltype) { - $result = sql_select("SELECT `NeededAngelTypes`.*, `Shifts`.`SID`, `AngelTypes`.`id`, `AngelTypes`.`name`, `AngelTypes`.`restricted`, `AngelTypes`.`no_self_signup` +function NeededAngeltype_by_Shift_and_Angeltype($shift, $angeltype) +{ + $result = sql_select("SELECT `NeededAngelTypes`.*, `Shifts`.`SID`, `AngelTypes`.`id`, `AngelTypes`.`name`, `AngelTypes`.`restricted`, `AngelTypes`.`no_self_signup` FROM `Shifts` JOIN `NeededAngelTypes` ON `NeededAngelTypes`.`shift_id`=`Shifts`.`SID` JOIN `AngelTypes` ON `AngelTypes`.`id`= `NeededAngelTypes`.`angel_type_id` @@ -87,58 +91,61 @@ function NeededAngeltype_by_Shift_and_Angeltype($shift, $angeltype) { WHERE `Shifts`.`SID`=" . sql_escape($shift['SID']) . " AND `AngelTypes`.`id`=" . sql_escape($angeltype['id']) . " AND NOT `Shifts`.`PSID` IS NULL"); - if ($result === false) { - engelsystem_error("Unable to load needed angeltypes by filter."); - } - if (count($result) == 0) { - return null; - } - return $result[0]; + if ($result === false) { + engelsystem_error("Unable to load needed angeltypes by filter."); + } + if (count($result) == 0) { + return null; + } + return $result[0]; } -function ShiftEntries_by_ShiftsFilter(ShiftsFilter $shiftsFilter) { - $SQL = "SELECT `User`.`Nick`, `User`.`email`, `User`.`email_shiftinfo`, `User`.`Sprache`, `User`.`Gekommen`, `ShiftEntry`.`UID`, `ShiftEntry`.`TID`, `ShiftEntry`.`SID`, `ShiftEntry`.`Comment`, `ShiftEntry`.`freeloaded` +function ShiftEntries_by_ShiftsFilter(ShiftsFilter $shiftsFilter) +{ + $SQL = "SELECT `User`.`Nick`, `User`.`email`, `User`.`email_shiftinfo`, `User`.`Sprache`, `User`.`Gekommen`, `ShiftEntry`.`UID`, `ShiftEntry`.`TID`, `ShiftEntry`.`SID`, `ShiftEntry`.`Comment`, `ShiftEntry`.`freeloaded` FROM `Shifts` JOIN `ShiftEntry` ON `ShiftEntry`.`SID`=`Shifts`.`SID` JOIN `User` ON `ShiftEntry`.`UID`=`User`.`UID` WHERE `Shifts`.`RID` IN (" . implode(',', $shiftsFilter->getRooms()) . ") AND `start` BETWEEN " . $shiftsFilter->getStartTime() . " AND " . $shiftsFilter->getEndTime() . " ORDER BY `Shifts`.`start`"; - $result = sql_select($SQL); - if ($result === false) { - engelsystem_error("Unable to load shift entries by filter."); - } - return $result; + $result = sql_select($SQL); + if ($result === false) { + engelsystem_error("Unable to load shift entries by filter."); + } + return $result; } /** * Check if a shift collides with other shifts (in time). * - * @param Shift $shift - * @param array $shifts + * @param Shift $shift + * @param array $shifts */ -function Shift_collides($shift, $shifts) { - foreach ($shifts as $other_shift) { - if ($shift['SID'] != $other_shift['SID']) { - if (! ($shift['start'] >= $other_shift['end'] || $shift['end'] <= $other_shift['start'])) { - return true; - } +function Shift_collides($shift, $shifts) +{ + foreach ($shifts as $other_shift) { + if ($shift['SID'] != $other_shift['SID']) { + if (! ($shift['start'] >= $other_shift['end'] || $shift['end'] <= $other_shift['start'])) { + return true; + } + } } - } - return false; + return false; } /** * Returns the number of needed angels/free shift entries for an angeltype. */ -function Shift_free_entries($needed_angeltype, $shift_entries) { - $taken = 0; - foreach ($shift_entries as $shift_entry) { - if ($shift_entry['freeloaded'] == 0) { - $taken ++; +function Shift_free_entries($needed_angeltype, $shift_entries) +{ + $taken = 0; + foreach ($shift_entries as $shift_entry) { + if ($shift_entry['freeloaded'] == 0) { + $taken ++; + } } - } - return max(0, $needed_angeltype['count'] - $taken); + return max(0, $needed_angeltype['count'] - $taken); } /** @@ -153,55 +160,56 @@ function Shift_free_entries($needed_angeltype, $shift_entries) { * @param boolean $angeltype_supporter * True, if the user has angeltype supporter rights for the angeltype, which enables him to sign somebody up for the shift. */ -function Shift_signup_allowed_angel($user, $shift, $angeltype, $user_angeltype, $user_shifts, $needed_angeltype, $shift_entries) { - $free_entries = Shift_free_entries($needed_angeltype, $shift_entries); +function Shift_signup_allowed_angel($user, $shift, $angeltype, $user_angeltype, $user_shifts, $needed_angeltype, $shift_entries) +{ + $free_entries = Shift_free_entries($needed_angeltype, $shift_entries); - if ($user['Gekommen'] == 0) { - return new ShiftSignupState(ShiftSignupState::SHIFT_ENDED, $free_entries); - } - - if ($user_shifts == null) { - $user_shifts = Shifts_by_user($user); - } - - $signed_up = false; - foreach ($user_shifts as $user_shift) { - if ($user_shift['SID'] == $shift['SID']) { - $signed_up = true; - break; + if ($user['Gekommen'] == 0) { + return new ShiftSignupState(ShiftSignupState::SHIFT_ENDED, $free_entries); } - } - if ($signed_up) { - // you cannot join if you already singed up for this shift + if ($user_shifts == null) { + $user_shifts = Shifts_by_user($user); + } + + $signed_up = false; + foreach ($user_shifts as $user_shift) { + if ($user_shift['SID'] == $shift['SID']) { + $signed_up = true; + break; + } + } + + if ($signed_up) { + // you cannot join if you already singed up for this shift return new ShiftSignupState(ShiftSignupState::SIGNED_UP, $free_entries); - } + } - if (time() > $shift['start']) { - // you can only join if the shift is in future + if (time() > $shift['start']) { + // you can only join if the shift is in future return new ShiftSignupState(ShiftSignupState::SHIFT_ENDED, $free_entries); - } - if ($free_entries == 0) { - // you cannot join if shift is full + } + if ($free_entries == 0) { + // you cannot join if shift is full return new ShiftSignupState(ShiftSignupState::OCCUPIED, $free_entries); - } + } - if ($user_angeltype == null) { - $user_angeltype = UserAngelType_by_User_and_AngelType($user, $angeltype); - } + if ($user_angeltype == null) { + $user_angeltype = UserAngelType_by_User_and_AngelType($user, $angeltype); + } - if ($user_angeltype == null || ($angeltype['no_self_signup'] == 1 && $user_angeltype != null) || ($angeltype['restricted'] == 1 && $user_angeltype != null && ! isset($user_angeltype['confirm_user_id']))) { - // you cannot join if user is not of this angel type + if ($user_angeltype == null || ($angeltype['no_self_signup'] == 1 && $user_angeltype != null) || ($angeltype['restricted'] == 1 && $user_angeltype != null && ! isset($user_angeltype['confirm_user_id']))) { + // you cannot join if user is not of this angel type // you cannot join if you are not confirmed // you cannot join if angeltype has no self signup return new ShiftSignupState(ShiftSignupState::ANGELTYPE, $free_entries); - } + } - if (Shift_collides($shift, $user_shifts)) { - // you cannot join if user alread joined a parallel or this shift + if (Shift_collides($shift, $user_shifts)) { + // you cannot join if user alread joined a parallel or this shift return new ShiftSignupState(ShiftSignupState::COLLIDES, $free_entries); - } + } // Hooray, shift is free for you! return new ShiftSignupState(ShiftSignupState::FREE, $free_entries); @@ -210,13 +218,14 @@ function Shift_signup_allowed_angel($user, $shift, $angeltype, $user_angeltype, /** * Check if an angeltype supporter can sign up a user to a shift. */ -function Shift_signup_allowed_angeltype_supporter($angeltype, $needed_angeltype, $shift_entries) { - $free_entries = Shift_free_entries($needed_angeltype, $shift_entries); - if ($free_entries == 0) { - return new ShiftSignupState(ShiftSignupState::OCCUPIED, $free_entries); - } +function Shift_signup_allowed_angeltype_supporter($angeltype, $needed_angeltype, $shift_entries) +{ + $free_entries = Shift_free_entries($needed_angeltype, $shift_entries); + if ($free_entries == 0) { + return new ShiftSignupState(ShiftSignupState::OCCUPIED, $free_entries); + } - return new ShiftSignupState(ShiftSignupState::FREE, $free_entries); + return new ShiftSignupState(ShiftSignupState::FREE, $free_entries); } /** @@ -227,15 +236,16 @@ function Shift_signup_allowed_angeltype_supporter($angeltype, $needed_angeltype, * @param AngelType $angeltype * The angeltype to which the user wants to sign up */ -function Shift_signup_allowed_admin($angeltype, $needed_angeltype, $shift_entries) { - $free_entries = Shift_free_entries($needed_angeltype, $shift_entries); +function Shift_signup_allowed_admin($angeltype, $needed_angeltype, $shift_entries) +{ + $free_entries = Shift_free_entries($needed_angeltype, $shift_entries); - if ($free_entries == 0) { - // User shift admins may join anybody in every shift + if ($free_entries == 0) { + // User shift admins may join anybody in every shift return new ShiftSignupState(ShiftSignupState::ADMIN, $free_entries); - } + } - return new ShiftSignupState(ShiftSignupState::FREE, $free_entries); + return new ShiftSignupState(ShiftSignupState::FREE, $free_entries); } /** @@ -248,49 +258,53 @@ function Shift_signup_allowed_admin($angeltype, $needed_angeltype, $shift_entrie * @param array $user_shifts * List of the users shifts */ -function Shift_signup_allowed($signup_user, $shift, $angeltype, $user_angeltype = null, $user_shifts = null, $needed_angeltype, $shift_entries) { - global $user, $privileges; +function Shift_signup_allowed($signup_user, $shift, $angeltype, $user_angeltype = null, $user_shifts = null, $needed_angeltype, $shift_entries) +{ + global $user, $privileges; - if (in_array('user_shifts_admin', $privileges)) { - return Shift_signup_allowed_admin($angeltype, $needed_angeltype, $shift_entries); - } + if (in_array('user_shifts_admin', $privileges)) { + return Shift_signup_allowed_admin($angeltype, $needed_angeltype, $shift_entries); + } - if (in_array('shiftentry_edit_angeltype_supporter', $privileges) && User_is_AngelType_supporter($user, $angeltype)) { - return Shift_signup_allowed_angeltype_supporter($angeltype, $needed_angeltype, $shift_entries); - } + if (in_array('shiftentry_edit_angeltype_supporter', $privileges) && User_is_AngelType_supporter($user, $angeltype)) { + return Shift_signup_allowed_angeltype_supporter($angeltype, $needed_angeltype, $shift_entries); + } - return Shift_signup_allowed_angel($signup_user, $shift, $angeltype, $user_angeltype, $user_shifts, $needed_angeltype, $shift_entries); + return Shift_signup_allowed_angel($signup_user, $shift, $angeltype, $user_angeltype, $user_shifts, $needed_angeltype, $shift_entries); } /** * Delete a shift by its external id. */ -function Shift_delete_by_psid($shift_psid) { - return sql_query("DELETE FROM `Shifts` WHERE `PSID`='" . sql_escape($shift_psid) . "'"); +function Shift_delete_by_psid($shift_psid) +{ + return sql_query("DELETE FROM `Shifts` WHERE `PSID`='" . sql_escape($shift_psid) . "'"); } /** * Delete a shift. */ -function Shift_delete($shift_id) { - mail_shift_delete(Shift($shift_id)); +function Shift_delete($shift_id) +{ + mail_shift_delete(Shift($shift_id)); - $result = sql_query("DELETE FROM `Shifts` WHERE `SID`='" . sql_escape($shift_id) . "'"); - if ($result === false) { - engelsystem_error('Unable to delete shift.'); - } - return $result; + $result = sql_query("DELETE FROM `Shifts` WHERE `SID`='" . sql_escape($shift_id) . "'"); + if ($result === false) { + engelsystem_error('Unable to delete shift.'); + } + return $result; } /** * Update a shift. */ -function Shift_update($shift) { - global $user; - $shift['name'] = ShiftType($shift['shifttype_id'])['name']; - mail_shift_change(Shift($shift['SID']), $shift); +function Shift_update($shift) +{ + global $user; + $shift['name'] = ShiftType($shift['shifttype_id'])['name']; + mail_shift_change(Shift($shift['SID']), $shift); - return sql_query("UPDATE `Shifts` SET + return sql_query("UPDATE `Shifts` SET `shifttype_id`='" . sql_escape($shift['shifttype_id']) . "', `start`='" . sql_escape($shift['start']) . "', `end`='" . sql_escape($shift['end']) . "', @@ -306,16 +320,17 @@ function Shift_update($shift) { /** * Update a shift by its external id. */ -function Shift_update_by_psid($shift) { - $shift_source = sql_select("SELECT `SID` FROM `Shifts` WHERE `PSID`=" . $shift['PSID']); - if ($shift_source === false) { - return false; - } - if (count($shift_source) == 0) { - return null; - } - $shift['SID'] = $shift_source[0]['SID']; - return Shift_update($shift); +function Shift_update_by_psid($shift) +{ + $shift_source = sql_select("SELECT `SID` FROM `Shifts` WHERE `PSID`=" . $shift['PSID']); + if ($shift_source === false) { + return false; + } + if (count($shift_source) == 0) { + return null; + } + $shift['SID'] = $shift_source[0]['SID']; + return Shift_update($shift); } /** @@ -323,9 +338,10 @@ function Shift_update_by_psid($shift) { * * @return new shift id or false */ -function Shift_create($shift) { - global $user; - $result = sql_query("INSERT INTO `Shifts` SET +function Shift_create($shift) +{ + global $user; + $result = sql_query("INSERT INTO `Shifts` SET `shifttype_id`='" . sql_escape($shift['shifttype_id']) . "', `start`='" . sql_escape($shift['start']) . "', `end`='" . sql_escape($shift['end']) . "', @@ -335,17 +351,18 @@ function Shift_create($shift) { `PSID`=" . sql_null($shift['PSID']) . ", `created_by_user_id`='" . sql_escape($user['UID']) . "', `created_at_timestamp`=" . time()); - if ($result === false) { - return false; - } - return sql_id(); + if ($result === false) { + return false; + } + return sql_id(); } /** * Return users shifts. */ -function Shifts_by_user($user, $include_freeload_comments = false) { - $result = sql_select(" +function Shifts_by_user($user, $include_freeload_comments = false) +{ + $result = sql_select(" SELECT `ShiftTypes`.`id` as `shifttype_id`, `ShiftTypes`.`name`, `ShiftEntry`.`id`, `ShiftEntry`.`SID`, `ShiftEntry`.`TID`, `ShiftEntry`.`UID`, `ShiftEntry`.`freeloaded`, `ShiftEntry`.`Comment`, " . ($include_freeload_comments ? "`ShiftEntry`.`freeload_comment`, " : "") . " @@ -357,10 +374,10 @@ function Shifts_by_user($user, $include_freeload_comments = false) { WHERE `UID`='" . sql_escape($user['UID']) . "' ORDER BY `start` "); - if ($result === false) { - engelsystem_error('Unable to load users shifts.'); - } - return $result; + if ($result === false) { + engelsystem_error('Unable to load users shifts.'); + } + return $result; } /** @@ -369,64 +386,64 @@ function Shifts_by_user($user, $include_freeload_comments = false) { * @param $shift_id Shift * ID */ -function Shift($shift_id) { - $shifts_source = sql_select(" +function Shift($shift_id) +{ + $shifts_source = sql_select(" SELECT `Shifts`.*, `ShiftTypes`.`name` FROM `Shifts` JOIN `ShiftTypes` ON (`ShiftTypes`.`id` = `Shifts`.`shifttype_id`) WHERE `SID`='" . sql_escape($shift_id) . "'"); - $shiftsEntry_source = sql_select("SELECT `id`, `TID` , `UID` , `freeloaded` FROM `ShiftEntry` WHERE `SID`='" . sql_escape($shift_id) . "'"); + $shiftsEntry_source = sql_select("SELECT `id`, `TID` , `UID` , `freeloaded` FROM `ShiftEntry` WHERE `SID`='" . sql_escape($shift_id) . "'"); - if ($shifts_source === false) { - engelsystem_error('Unable to load shift.'); - } + if ($shifts_source === false) { + engelsystem_error('Unable to load shift.'); + } - if (empty($shifts_source)) { - return null; - } + if (empty($shifts_source)) { + return null; + } - $result = $shifts_source[0]; + $result = $shifts_source[0]; - $result['ShiftEntry'] = $shiftsEntry_source; - $result['NeedAngels'] = []; + $result['ShiftEntry'] = $shiftsEntry_source; + $result['NeedAngels'] = []; - $temp = NeededAngelTypes_by_shift($shift_id); - foreach ($temp as $e) { - $result['NeedAngels'][] = [ + $temp = NeededAngelTypes_by_shift($shift_id); + foreach ($temp as $e) { + $result['NeedAngels'][] = [ 'TID' => $e['angel_type_id'], 'count' => $e['count'], 'restricted' => $e['restricted'], - 'taken' => $e['taken'] + 'taken' => $e['taken'] ]; - } + } - return $result; + return $result; } /** * Returns all shifts with needed angeltypes and count of subscribed jobs. */ -function Shifts() { - $shifts_source = sql_select(" +function Shifts() +{ + $shifts_source = sql_select(" SELECT `ShiftTypes`.`name`, `Shifts`.*, `Room`.`RID`, `Room`.`Name` as `room_name` FROM `Shifts` JOIN `ShiftTypes` ON (`ShiftTypes`.`id` = `Shifts`.`shifttype_id`) JOIN `Room` ON `Room`.`RID` = `Shifts`.`RID` "); - if ($shifts_source === false) { - return false; - } - - foreach ($shifts_source as &$shift) { - $needed_angeltypes = NeededAngelTypes_by_shift($shift['SID']); - if ($needed_angeltypes === false) { - return false; + if ($shifts_source === false) { + return false; } - - $shift['angeltypes'] = $needed_angeltypes; - } - return $shifts_source; + foreach ($shifts_source as &$shift) { + $needed_angeltypes = NeededAngelTypes_by_shift($shift['SID']); + if ($needed_angeltypes === false) { + return false; + } + + $shift['angeltypes'] = $needed_angeltypes; + } + + return $shifts_source; } - -?> diff --git a/includes/model/UserAngelTypes_model.php b/includes/model/UserAngelTypes_model.php index 11366cdf..ea7a454c 100644 --- a/includes/model/UserAngelTypes_model.php +++ b/includes/model/UserAngelTypes_model.php @@ -13,8 +13,9 @@ * The angeltype to be checked * @return boolean */ -function UserAngelType_exists($user, $angeltype) { - return sql_num_query(" +function UserAngelType_exists($user, $angeltype) +{ + return sql_num_query(" SELECT `id` FROM `UserAngelTypes` WHERE `UserAngelTypes`.`user_id`='" . sql_escape($user['UID']) . "' @@ -25,29 +26,31 @@ function UserAngelType_exists($user, $angeltype) { /** * List users angeltypes. * - * @param User $user + * @param User $user */ -function User_angeltypes($user) { - $result = sql_select(" +function User_angeltypes($user) +{ + $result = sql_select(" SELECT `AngelTypes`.*, `UserAngelTypes`.`confirm_user_id`, `UserAngelTypes`.`supporter` FROM `UserAngelTypes` JOIN `AngelTypes` ON `UserAngelTypes`.`angeltype_id` = `AngelTypes`.`id` WHERE `UserAngelTypes`.`user_id`='" . sql_escape($user['UID']) . "' "); - if ($result === false) { - engelsystem_error("Unable to load user angeltypes."); - return false; - } - return $result; + if ($result === false) { + engelsystem_error("Unable to load user angeltypes."); + return false; + } + return $result; } /** * Gets unconfirmed user angeltypes for angeltypes of which the given user is a supporter. * - * @param User $user + * @param User $user */ -function User_unconfirmed_AngelTypes($user) { - $result = sql_select(" +function User_unconfirmed_AngelTypes($user) +{ + $result = sql_select(" SELECT `UserAngelTypes`.*, `AngelTypes`.`name`, @@ -61,23 +64,24 @@ function User_unconfirmed_AngelTypes($user) { AND `UnconfirmedMembers`.`confirm_user_id` IS NULL GROUP BY `UserAngelTypes`.`angeltype_id` ORDER BY `AngelTypes`.`name`"); - if ($result === false) { - engelsystem_error("Unable to load user angeltypes."); - } - return $result; + if ($result === false) { + engelsystem_error("Unable to load user angeltypes."); + } + return $result; } /** * Returns true if user is angeltype supporter or has privilege admin_user_angeltypes. * - * @param User $user - * @param AngelType $angeltype + * @param User $user + * @param AngelType $angeltype */ -function User_is_AngelType_supporter(&$user, $angeltype) { - if(!isset($user['privileges'])) { - $user['privileges'] = privileges_for_user($user['UID']); - } - return (sql_num_query(" +function User_is_AngelType_supporter(&$user, $angeltype) +{ + if (!isset($user['privileges'])) { + $user['privileges'] = privileges_for_user($user['UID']); + } + return (sql_num_query(" SELECT `id` FROM `UserAngelTypes` WHERE `user_id`='" . sql_escape($user['UID']) . "' @@ -89,80 +93,85 @@ function User_is_AngelType_supporter(&$user, $angeltype) { /** * Add or remove supporter rights. * - * @param int $user_angeltype_id - * @param bool $supporter + * @param int $user_angeltype_id + * @param bool $supporter */ -function UserAngelType_update($user_angeltype_id, $supporter) { - $result = sql_query(" +function UserAngelType_update($user_angeltype_id, $supporter) +{ + $result = sql_query(" UPDATE `UserAngelTypes` SET `supporter`=" . sql_bool($supporter) . " WHERE `id`='" . sql_escape($user_angeltype_id) . "' LIMIT 1"); - if ($result === false) { - engelsystem_error("Unable to update supporter rights."); - } - return $result; + if ($result === false) { + engelsystem_error("Unable to update supporter rights."); + } + return $result; } /** * Delete all unconfirmed UserAngelTypes for given Angeltype. * - * @param int $angeltype_id + * @param int $angeltype_id */ -function UserAngelTypes_delete_all($angeltype_id) { - $result = sql_query(" +function UserAngelTypes_delete_all($angeltype_id) +{ + $result = sql_query(" DELETE FROM `UserAngelTypes` WHERE `angeltype_id`='" . sql_escape($angeltype_id) . "' AND `confirm_user_id` IS NULL"); - if ($result === false) { - engelsystem_error("Unable to delete all unconfirmed users."); - } - return $result; + if ($result === false) { + engelsystem_error("Unable to delete all unconfirmed users."); + } + return $result; } /** * Confirm all unconfirmed UserAngelTypes for given Angeltype. * - * @param int $angeltype_id - * @param User $confirm_user + * @param int $angeltype_id + * @param User $confirm_user */ -function UserAngelTypes_confirm_all($angeltype_id, $confirm_user) { - $result = sql_query(" +function UserAngelTypes_confirm_all($angeltype_id, $confirm_user) +{ + $result = sql_query(" UPDATE `UserAngelTypes` SET `confirm_user_id`='" . sql_escape($confirm_user['UID']) . "' WHERE `angeltype_id`='" . sql_escape($angeltype_id) . "' AND `confirm_user_id` IS NULL"); - if ($result === false) { - engelsystem_error("Unable to confirm all users."); - } - return $result; + if ($result === false) { + engelsystem_error("Unable to confirm all users."); + } + return $result; } /** * Confirm an UserAngelType with confirming user. * - * @param int $user_angeltype_id - * @param User $confirm_user + * @param int $user_angeltype_id + * @param User $confirm_user */ -function UserAngelType_confirm($user_angeltype_id, $confirm_user) { - $result = sql_query(" +function UserAngelType_confirm($user_angeltype_id, $confirm_user) +{ + $result = sql_query(" UPDATE `UserAngelTypes` SET `confirm_user_id`='" . sql_escape($confirm_user['UID']) . "' WHERE `id`='" . sql_escape($user_angeltype_id) . "' LIMIT 1"); - if ($result === false) { - engelsystem_error("Unable to confirm user angeltype."); - } - return $result; + if ($result === false) { + engelsystem_error("Unable to confirm user angeltype."); + } + return $result; } /** * Delete an UserAngelType. * - * @param UserAngelType $user_angeltype + * @param UserAngelType $user_angeltype */ -function UserAngelType_delete($user_angeltype) { - return sql_query(" +function UserAngelType_delete($user_angeltype) +{ + return sql_query(" DELETE FROM `UserAngelTypes` WHERE `id`='" . sql_escape($user_angeltype['id']) . "' LIMIT 1"); @@ -171,59 +180,61 @@ function UserAngelType_delete($user_angeltype) { /** * Create an UserAngelType. * - * @param User $user - * @param Angeltype $angeltype + * @param User $user + * @param Angeltype $angeltype */ -function UserAngelType_create($user, $angeltype) { - $result = sql_query(" +function UserAngelType_create($user, $angeltype) +{ + $result = sql_query(" INSERT INTO `UserAngelTypes` SET `user_id`='" . sql_escape($user['UID']) . "', `angeltype_id`='" . sql_escape($angeltype['id']) . "'"); - if ($result === false) { - engelsystem_error("Unable to create user angeltype."); - } - return sql_id(); + if ($result === false) { + engelsystem_error("Unable to create user angeltype."); + } + return sql_id(); } /** * Get an UserAngelType by its id. * - * @param int $user_angeltype_id + * @param int $user_angeltype_id */ -function UserAngelType($user_angeltype_id) { - $angeltype = sql_select(" +function UserAngelType($user_angeltype_id) +{ + $angeltype = sql_select(" SELECT * FROM `UserAngelTypes` WHERE `id`='" . sql_escape($user_angeltype_id) . "' LIMIT 1"); - if ($angeltype === false) { - engelsystem_error("Unable to load user angeltype."); - } - if (count($angeltype) == 0) { - return null; - } - return $angeltype[0]; + if ($angeltype === false) { + engelsystem_error("Unable to load user angeltype."); + } + if (count($angeltype) == 0) { + return null; + } + return $angeltype[0]; } /** * Get an UserAngelType by user and angeltype. * - * @param User $user - * @param Angeltype $angeltype + * @param User $user + * @param Angeltype $angeltype */ -function UserAngelType_by_User_and_AngelType($user, $angeltype) { - $angeltype = sql_select(" +function UserAngelType_by_User_and_AngelType($user, $angeltype) +{ + $angeltype = sql_select(" SELECT * FROM `UserAngelTypes` WHERE `user_id`='" . sql_escape($user['UID']) . "' AND `angeltype_id`='" . sql_escape($angeltype['id']) . "' LIMIT 1"); - if ($angeltype === false) { - engelsystem_error("Unable to load user angeltype."); - } - if (count($angeltype) == 0) { - return null; - } - return $angeltype[0]; + if ($angeltype === false) { + engelsystem_error("Unable to load user angeltype."); + } + if (count($angeltype) == 0) { + return null; + } + return $angeltype[0]; } -?> \ No newline at end of file diff --git a/includes/model/UserDriverLicenses_model.php b/includes/model/UserDriverLicenses_model.php index 6caa3589..7d1be528 100644 --- a/includes/model/UserDriverLicenses_model.php +++ b/includes/model/UserDriverLicenses_model.php @@ -4,15 +4,16 @@ * Returns a new empty UserDriverLicense * FIXME entity object needed */ -function UserDriverLicense_new() { - return [ +function UserDriverLicense_new() +{ + return [ 'user_id' => null, 'has_car' => false, 'has_license_car' => false, 'has_license_3_5t_transporter' => false, 'has_license_7_5t_truck' => false, 'has_license_12_5t_truck' => false, - 'has_license_forklift' => false + 'has_license_forklift' => false ]; } @@ -23,8 +24,9 @@ function UserDriverLicense_new() { * The UserDriverLicense to check * @return boolean */ -function UserDriverLicense_valid($user_driver_license) { - return $user_driver_license['has_car'] || $user_driver_license['has_license_car'] || $user_driver_license['has_license_3_5t_transporter'] || $user_driver_license['has_license_7_5t_truck'] || $user_driver_license['has_license_12_5t_truck'] || $user_driver_license['has_license_forklift']; +function UserDriverLicense_valid($user_driver_license) +{ + return $user_driver_license['has_car'] || $user_driver_license['has_license_car'] || $user_driver_license['has_license_3_5t_transporter'] || $user_driver_license['has_license_7_5t_truck'] || $user_driver_license['has_license_12_5t_truck'] || $user_driver_license['has_license_forklift']; } /** @@ -33,16 +35,17 @@ function UserDriverLicense_valid($user_driver_license) { * @param int $user_id * The users id */ -function UserDriverLicense($user_id) { - $user_driver_license = sql_select("SELECT * FROM `UserDriverLicenses` WHERE `user_id`='" . sql_escape($user_id) . "'"); - if ($user_driver_license === false) { - engelsystem_error('Unable to load user driver license.'); - return false; - } - if (count($user_driver_license) > 0) { - return $user_driver_license[0]; - } - return null; +function UserDriverLicense($user_id) +{ + $user_driver_license = sql_select("SELECT * FROM `UserDriverLicenses` WHERE `user_id`='" . sql_escape($user_id) . "'"); + if ($user_driver_license === false) { + engelsystem_error('Unable to load user driver license.'); + return false; + } + if (count($user_driver_license) > 0) { + return $user_driver_license[0]; + } + return null; } /** @@ -51,9 +54,10 @@ function UserDriverLicense($user_id) { * @param UserDriverLicense $user_driver_license * The UserDriverLicense to create */ -function UserDriverLicenses_create($user_driver_license, $user) { - $user_driver_license['user_id'] = $user['UID']; - $result = sql_query(" +function UserDriverLicenses_create($user_driver_license, $user) +{ + $user_driver_license['user_id'] = $user['UID']; + $result = sql_query(" INSERT INTO `UserDriverLicenses` SET `user_id`=" . sql_escape($user_driver_license['user_id']) . ", `has_car`=" . sql_bool($user_driver_license['has_car']) . ", @@ -62,10 +66,10 @@ function UserDriverLicenses_create($user_driver_license, $user) { `has_license_7_5t_truck`=" . sql_bool($user_driver_license['has_license_7_5t_truck']) . ", `has_license_12_5t_truck`=" . sql_bool($user_driver_license['has_license_12_5t_truck']) . ", `has_license_forklift`=" . sql_bool($user_driver_license['has_license_forklift'])); - if ($result === false) { - engelsystem_error('Unable to create user driver license'); - } - return $user_driver_license; + if ($result === false) { + engelsystem_error('Unable to create user driver license'); + } + return $user_driver_license; } /** @@ -74,8 +78,9 @@ function UserDriverLicenses_create($user_driver_license, $user) { * @param UserDriverLicense $user_driver_license * The UserDriverLicense to update */ -function UserDriverLicenses_update($user_driver_license) { - $result = sql_query("UPDATE `UserDriverLicenses` SET +function UserDriverLicenses_update($user_driver_license) +{ + $result = sql_query("UPDATE `UserDriverLicenses` SET `has_car`=" . sql_bool($user_driver_license['has_car']) . ", `has_license_car`=" . sql_bool($user_driver_license['has_license_car']) . ", `has_license_3_5t_transporter`=" . sql_bool($user_driver_license['has_license_3_5t_transporter']) . ", @@ -83,22 +88,22 @@ function UserDriverLicenses_update($user_driver_license) { `has_license_12_5t_truck`=" . sql_bool($user_driver_license['has_license_12_5t_truck']) . ", `has_license_forklift`=" . sql_bool($user_driver_license['has_license_forklift']) . " WHERE `user_id`='" . sql_escape($user_driver_license['user_id']) . "'"); - if ($result === false) { - engelsystem_error("Unable to update user driver license information"); - } - return $result; + if ($result === false) { + engelsystem_error("Unable to update user driver license information"); + } + return $result; } /** * Delete a user's driver license entry * - * @param int $user_id + * @param int $user_id */ -function UserDriverLicenses_delete($user_id) { - $result = sql_query("DELETE FROM `UserDriverLicenses` WHERE `user_id`=" . sql_escape($user_id)); - if ($result === false) { - engelsystem_error("Unable to remove user driver license information"); - } - return $result; +function UserDriverLicenses_delete($user_id) +{ + $result = sql_query("DELETE FROM `UserDriverLicenses` WHERE `user_id`=" . sql_escape($user_id)); + if ($result === false) { + engelsystem_error("Unable to remove user driver license information"); + } + return $result; } -?> \ No newline at end of file diff --git a/includes/model/UserGroups_model.php b/includes/model/UserGroups_model.php index 766f402f..61fd074a 100644 --- a/includes/model/UserGroups_model.php +++ b/includes/model/UserGroups_model.php @@ -4,8 +4,9 @@ * Returns users groups * @param User $user */ -function User_groups($user) { - return sql_select(" +function User_groups($user) +{ + return sql_select(" SELECT `Groups`.* FROM `UserGroups` JOIN `Groups` ON `Groups`.`UID`=`UserGroups`.`group_id` @@ -13,5 +14,3 @@ function User_groups($user) { ORDER BY `UserGroups`.`group_id` "); } - -?> \ No newline at end of file diff --git a/includes/model/User_model.php b/includes/model/User_model.php index 3ebd3bf9..9324bf53 100644 --- a/includes/model/User_model.php +++ b/includes/model/User_model.php @@ -8,19 +8,21 @@ use Engelsystem\ValidationResult; /** * Delete a user * - * @param int $user_id + * @param int $user_id */ -function User_delete($user_id) { - return sql_query("DELETE FROM `User` WHERE `UID`='" . sql_escape($user_id) . "'"); +function User_delete($user_id) +{ + return sql_query("DELETE FROM `User` WHERE `UID`='" . sql_escape($user_id) . "'"); } /** * Update user. * - * @param User $user + * @param User $user */ -function User_update($user) { - return sql_query("UPDATE `User` SET +function User_update($user) +{ + return sql_query("UPDATE `User` SET `Nick`='" . sql_escape($user['Nick']) . "', `Name`='" . sql_escape($user['Name']) . "', `Vorname`='" . sql_escape($user['Vorname']) . "', @@ -50,31 +52,37 @@ function User_update($user) { /** * Counts all forced active users. */ -function User_force_active_count() { - return sql_select_single_cell("SELECT COUNT(*) FROM `User` WHERE `force_active` = 1"); +function User_force_active_count() +{ + return sql_select_single_cell("SELECT COUNT(*) FROM `User` WHERE `force_active` = 1"); } -function User_active_count() { - return sql_select_single_cell("SELECT COUNT(*) FROM `User` WHERE `Aktiv` = 1"); +function User_active_count() +{ + return sql_select_single_cell("SELECT COUNT(*) FROM `User` WHERE `Aktiv` = 1"); } -function User_got_voucher_count() { - return sql_select_single_cell("SELECT SUM(`got_voucher`) FROM `User`"); +function User_got_voucher_count() +{ + return sql_select_single_cell("SELECT SUM(`got_voucher`) FROM `User`"); } -function User_arrived_count() { - return sql_select_single_cell("SELECT COUNT(*) FROM `User` WHERE `Gekommen` = 1"); +function User_arrived_count() +{ + return sql_select_single_cell("SELECT COUNT(*) FROM `User` WHERE `Gekommen` = 1"); } -function User_tshirts_count() { - return sql_select_single_cell("SELECT COUNT(*) FROM `User` WHERE `Tshirt` = 1"); +function User_tshirts_count() +{ + return sql_select_single_cell("SELECT COUNT(*) FROM `User` WHERE `Tshirt` = 1"); } /** * Returns all column names for sorting in an array. */ -function User_sortable_columns() { - return [ +function User_sortable_columns() +{ + return [ 'Nick', 'Name', 'Vorname', @@ -86,55 +94,59 @@ function User_sortable_columns() { 'Aktiv', 'force_active', 'Tshirt', - 'lastLogIn' + 'lastLogIn' ]; } /** * Get all users, ordered by Nick by default or by given param. * - * @param string $order_by + * @param string $order_by */ -function Users($order_by = 'Nick') { - return sql_select("SELECT * FROM `User` ORDER BY `" . sql_escape($order_by) . "` ASC"); +function Users($order_by = 'Nick') +{ + return sql_select("SELECT * FROM `User` ORDER BY `" . sql_escape($order_by) . "` ASC"); } /** * Returns true if user is freeloader * - * @param User $user + * @param User $user */ -function User_is_freeloader($user) { - global $max_freeloadable_shifts, $user; +function User_is_freeloader($user) +{ + global $max_freeloadable_shifts, $user; - return count(ShiftEntries_freeloaded_by_user($user)) >= $max_freeloadable_shifts; + return count(ShiftEntries_freeloaded_by_user($user)) >= $max_freeloadable_shifts; } /** * Returns all users that are not member of given angeltype. * - * @param Angeltype $angeltype + * @param Angeltype $angeltype */ -function Users_by_angeltype_inverted($angeltype) { - $result = sql_select(" +function Users_by_angeltype_inverted($angeltype) +{ + $result = sql_select(" SELECT `User`.* FROM `User` LEFT JOIN `UserAngelTypes` ON (`User`.`UID`=`UserAngelTypes`.`user_id` AND `angeltype_id`='" . sql_escape($angeltype['id']) . "') WHERE `UserAngelTypes`.`id` IS NULL ORDER BY `Nick`"); - if ($result === false) { - engelsystem_error("Unable to load users."); - } - return $result; + if ($result === false) { + engelsystem_error("Unable to load users."); + } + return $result; } /** * Returns all members of given angeltype. * - * @param Angeltype $angeltype + * @param Angeltype $angeltype */ -function Users_by_angeltype($angeltype) { - $result = sql_select(" +function Users_by_angeltype($angeltype) +{ + $result = sql_select(" SELECT `User`.*, `UserAngelTypes`.`id` as `user_angeltype_id`, @@ -146,26 +158,28 @@ function Users_by_angeltype($angeltype) { LEFT JOIN `UserDriverLicenses` ON `User`.`UID`=`UserDriverLicenses`.`user_id` WHERE `UserAngelTypes`.`angeltype_id`='" . sql_escape($angeltype['id']) . "' ORDER BY `Nick`"); - if ($result === false) { - engelsystem_error("Unable to load members."); - } - return $result; + if ($result === false) { + engelsystem_error("Unable to load members."); + } + return $result; } /** * Returns User id array */ -function User_ids() { - return sql_select("SELECT `UID` FROM `User`"); +function User_ids() +{ + return sql_select("SELECT `UID` FROM `User`"); } /** * Strip unwanted characters from a users nick. * - * @param string $nick + * @param string $nick */ -function User_validate_Nick($nick) { - return preg_replace("/([^a-z0-9üöäß. _+*-]{1,})/ui", '', $nick); +function User_validate_Nick($nick) +{ + return preg_replace("/([^a-z0-9üöäß. _+*-]{1,})/ui", '', $nick); } /** @@ -175,9 +189,10 @@ function User_validate_Nick($nick) { * The email address to validate * @return ValidationResult */ -function User_validate_mail($mail) { - $mail = strip_item($mail); - return new ValidationResult(check_email($mail), $mail); +function User_validate_mail($mail) +{ + $mail = strip_item($mail); + return new ValidationResult(check_email($mail), $mail); } /** @@ -187,13 +202,14 @@ function User_validate_mail($mail) { * Jabber-ID to validate * @return ValidationResult */ -function User_validate_jabber($jabber) { - $jabber = strip_item($jabber); - if ($jabber == '') { - // Empty is ok +function User_validate_jabber($jabber) +{ + $jabber = strip_item($jabber); + if ($jabber == '') { + // Empty is ok return new ValidationResult(true, ''); - } - return new ValidationResult(check_email($jabber), $jabber); + } + return new ValidationResult(check_email($jabber), $jabber); } /** @@ -203,25 +219,26 @@ function User_validate_jabber($jabber) { * Unix timestamp * @return ValidationResult */ -function User_validate_planned_arrival_date($planned_arrival_date) { - if ($planned_arrival_date == null) { - // null is not okay +function User_validate_planned_arrival_date($planned_arrival_date) +{ + if ($planned_arrival_date == null) { + // null is not okay return new ValidationResult(false, time()); - } - $event_config = EventConfig(); - if ($event_config == null) { - // Nothing to validate against + } + $event_config = EventConfig(); + if ($event_config == null) { + // Nothing to validate against return new ValidationResult(true, $planned_arrival_date); - } - if (isset($event_config['buildup_start_date']) && $planned_arrival_date < $event_config['buildup_start_date']) { - // Planned arrival can not be before buildup start date + } + if (isset($event_config['buildup_start_date']) && $planned_arrival_date < $event_config['buildup_start_date']) { + // Planned arrival can not be before buildup start date return new ValidationResult(false, $event_config['buildup_start_date']); - } - if (isset($event_config['teardown_end_date']) && $planned_arrival_date > $event_config['teardown_end_date']) { - // Planned arrival can not be after teardown end date + } + if (isset($event_config['teardown_end_date']) && $planned_arrival_date > $event_config['teardown_end_date']) { + // Planned arrival can not be after teardown end date return new ValidationResult(false, $event_config['teardown_end_date']); - } - return new ValidationResult(true, $planned_arrival_date); + } + return new ValidationResult(true, $planned_arrival_date); } /** @@ -233,45 +250,47 @@ function User_validate_planned_arrival_date($planned_arrival_date) { * Unix timestamp * @return ValidationResult */ -function User_validate_planned_departure_date($planned_arrival_date, $planned_departure_date) { - if ($planned_departure_date == null) { - // null is okay +function User_validate_planned_departure_date($planned_arrival_date, $planned_departure_date) +{ + if ($planned_departure_date == null) { + // null is okay return new ValidationResult(true, null); - } - if ($planned_arrival_date > $planned_departure_date) { - // departure cannot be before arrival + } + if ($planned_arrival_date > $planned_departure_date) { + // departure cannot be before arrival return new ValidationResult(false, $planned_arrival_date); - } - $event_config = EventConfig(); - if ($event_config == null) { - // Nothing to validate against + } + $event_config = EventConfig(); + if ($event_config == null) { + // Nothing to validate against return new ValidationResult(true, $planned_departure_date); - } - if (isset($event_config['buildup_start_date']) && $planned_departure_date < $event_config['buildup_start_date']) { - // Planned arrival can not be before buildup start date + } + if (isset($event_config['buildup_start_date']) && $planned_departure_date < $event_config['buildup_start_date']) { + // Planned arrival can not be before buildup start date return new ValidationResult(false, $event_config['buildup_start_date']); - } - if (isset($event_config['teardown_end_date']) && $planned_departure_date > $event_config['teardown_end_date']) { - // Planned arrival can not be after teardown end date + } + if (isset($event_config['teardown_end_date']) && $planned_departure_date > $event_config['teardown_end_date']) { + // Planned arrival can not be after teardown end date return new ValidationResult(false, $event_config['teardown_end_date']); - } - return new ValidationResult(true, $planned_departure_date); + } + return new ValidationResult(true, $planned_departure_date); } /** * Returns user by id. * - * @param $user_id UID + * @param $user_id UID */ -function User($user_id) { - $user_source = sql_select("SELECT * FROM `User` WHERE `UID`='" . sql_escape($user_id) . "' LIMIT 1"); - if ($user_source === false) { - engelsystem_error("Unable to load user."); - } - if (count($user_source) > 0) { - return $user_source[0]; - } - return null; +function User($user_id) +{ + $user_source = sql_select("SELECT * FROM `User` WHERE `UID`='" . sql_escape($user_id) . "' LIMIT 1"); + if ($user_source === false) { + engelsystem_error("Unable to load user."); + } + if (count($user_source) > 0) { + return $user_source[0]; + } + return null; } /** @@ -281,94 +300,98 @@ function User($user_id) { * User api key * @return Matching user, null or false on error */ -function User_by_api_key($api_key) { - $user = sql_select("SELECT * FROM `User` WHERE `api_key`='" . sql_escape($api_key) . "' LIMIT 1"); - if ($user === false) { - engelsystem_error("Unable to find user by api key."); - } - if (count($user) == 0) { - return null; - } - return $user[0]; +function User_by_api_key($api_key) +{ + $user = sql_select("SELECT * FROM `User` WHERE `api_key`='" . sql_escape($api_key) . "' LIMIT 1"); + if ($user === false) { + engelsystem_error("Unable to find user by api key."); + } + if (count($user) == 0) { + return null; + } + return $user[0]; } /** * Returns User by email. * - * @param string $email + * @param string $email * @return Matching user, null or false on error */ -function User_by_email($email) { - $user = sql_select("SELECT * FROM `User` WHERE `email`='" . sql_escape($email) . "' LIMIT 1"); - if ($user === false) { - engelsystem_error("Unable to load user."); - } - if (count($user) == 0) { - return null; - } - return $user[0]; +function User_by_email($email) +{ + $user = sql_select("SELECT * FROM `User` WHERE `email`='" . sql_escape($email) . "' LIMIT 1"); + if ($user === false) { + engelsystem_error("Unable to load user."); + } + if (count($user) == 0) { + return null; + } + return $user[0]; } /** * Returns User by password token. * - * @param string $token + * @param string $token * @return Matching user, null or false on error */ -function User_by_password_recovery_token($token) { - $user = sql_select("SELECT * FROM `User` WHERE `password_recovery_token`='" . sql_escape($token) . "' LIMIT 1"); - if ($user === false) { - engelsystem_error("Unable to load user."); - } - if (count($user) == 0) { - return null; - } - return $user[0]; +function User_by_password_recovery_token($token) +{ + $user = sql_select("SELECT * FROM `User` WHERE `password_recovery_token`='" . sql_escape($token) . "' LIMIT 1"); + if ($user === false) { + engelsystem_error("Unable to load user."); + } + if (count($user) == 0) { + return null; + } + return $user[0]; } /** * Generates a new api key for given user. * - * @param User $user + * @param User $user */ -function User_reset_api_key(&$user, $log = true) { - $user['api_key'] = md5($user['Nick'] . time() . rand()); - $result = sql_query("UPDATE `User` SET `api_key`='" . sql_escape($user['api_key']) . "' WHERE `UID`='" . sql_escape($user['UID']) . "' LIMIT 1"); - if ($result === false) { - return false; - } - if ($log) { - engelsystem_log(sprintf("API key resetted (%s).", User_Nick_render($user))); - } +function User_reset_api_key(&$user, $log = true) +{ + $user['api_key'] = md5($user['Nick'] . time() . rand()); + $result = sql_query("UPDATE `User` SET `api_key`='" . sql_escape($user['api_key']) . "' WHERE `UID`='" . sql_escape($user['UID']) . "' LIMIT 1"); + if ($result === false) { + return false; + } + if ($log) { + engelsystem_log(sprintf("API key resetted (%s).", User_Nick_render($user))); + } } /** * Generates a new password recovery token for given user. * - * @param User $user + * @param User $user */ -function User_generate_password_recovery_token(&$user) { - $user['password_recovery_token'] = md5($user['Nick'] . time() . rand()); - $result = sql_query("UPDATE `User` SET `password_recovery_token`='" . sql_escape($user['password_recovery_token']) . "' WHERE `UID`='" . sql_escape($user['UID']) . "' LIMIT 1"); - if ($result === false) { - engelsystem_error("Unable to generate password recovery token."); - } - engelsystem_log("Password recovery for " . User_Nick_render($user) . " started."); - return $user['password_recovery_token']; +function User_generate_password_recovery_token(&$user) +{ + $user['password_recovery_token'] = md5($user['Nick'] . time() . rand()); + $result = sql_query("UPDATE `User` SET `password_recovery_token`='" . sql_escape($user['password_recovery_token']) . "' WHERE `UID`='" . sql_escape($user['UID']) . "' LIMIT 1"); + if ($result === false) { + engelsystem_error("Unable to generate password recovery token."); + } + engelsystem_log("Password recovery for " . User_Nick_render($user) . " started."); + return $user['password_recovery_token']; } -function User_get_eligable_voucher_count(&$user) { - global $voucher_settings; +function User_get_eligable_voucher_count(&$user) +{ + global $voucher_settings; - $shifts_done = count(ShiftEntries_finished_by_user($user)); + $shifts_done = count(ShiftEntries_finished_by_user($user)); - $earned_vouchers = $user['got_voucher'] - $voucher_settings['initial_vouchers']; - $elegible_vouchers = $shifts_done / $voucher_settings['shifts_per_voucher'] - $earned_vouchers; - if ($elegible_vouchers < 0) { - return 0; - } + $earned_vouchers = $user['got_voucher'] - $voucher_settings['initial_vouchers']; + $elegible_vouchers = $shifts_done / $voucher_settings['shifts_per_voucher'] - $earned_vouchers; + if ($elegible_vouchers < 0) { + return 0; + } - return $elegible_vouchers; + return $elegible_vouchers; } - -?> diff --git a/includes/model/ValidationResult.php b/includes/model/ValidationResult.php index 0fc24161..7dfcb5ba 100644 --- a/includes/model/ValidationResult.php +++ b/includes/model/ValidationResult.php @@ -6,11 +6,11 @@ namespace Engelsystem; * BO that represents the result of an entity attribute validation. * It contains the validated value and a bool for validation success. */ -class ValidationResult { +class ValidationResult +{ + private $valid; - private $valid; - - private $value; + private $value; /** * Constructor. @@ -20,23 +20,25 @@ class ValidationResult { * @param * $value * The validated value */ - public function __construct($valid, $value) { - $this->valid = $valid; - $this->value = $value; + public function __construct($valid, $value) + { + $this->valid = $valid; + $this->value = $value; } /** * Is the value valid? */ - public function isValid() { - return $this->valid; + public function isValid() + { + return $this->valid; } /** * The parsed/validated value. */ - public function getValue() { - return $this->value; + public function getValue() + { + return $this->value; } } -?> \ No newline at end of file diff --git a/includes/mysqli_provider.php b/includes/mysqli_provider.php index c81f157f..b432bb4f 100644 --- a/includes/mysqli_provider.php +++ b/includes/mysqli_provider.php @@ -3,73 +3,79 @@ /** * Close connection. */ -function sql_close() { - global $sql_connection; +function sql_close() +{ + global $sql_connection; - return $sql_connection->close(); + return $sql_connection->close(); } /** * Return NULL if given value is null. */ -function sql_null($value = null) { - return $value == null ? 'NULL' : ("'" . sql_escape($value) . "'"); +function sql_null($value = null) +{ + return $value == null ? 'NULL' : ("'" . sql_escape($value) . "'"); } /** * Start new transaction. */ -function sql_transaction_start() { - global $sql_nested_transaction_level; +function sql_transaction_start() +{ + global $sql_nested_transaction_level; - if ($sql_nested_transaction_level ++ == 0) { - return sql_query("BEGIN"); - } + if ($sql_nested_transaction_level ++ == 0) { + return sql_query("BEGIN"); + } - return true; + return true; } /** * Commit transaction. */ -function sql_transaction_commit() { - global $sql_nested_transaction_level; +function sql_transaction_commit() +{ + global $sql_nested_transaction_level; - if (-- $sql_nested_transaction_level == 0) { - return sql_query("COMMIT"); - } + if (-- $sql_nested_transaction_level == 0) { + return sql_query("COMMIT"); + } - return true; + return true; } /** * Stop transaction, revert database. */ -function sql_transaction_rollback() { - global $sql_nested_transaction_level; +function sql_transaction_rollback() +{ + global $sql_nested_transaction_level; - if (-- $sql_nested_transaction_level == 0) { - return sql_query("ROLLBACK"); - } + if (-- $sql_nested_transaction_level == 0) { + return sql_query("ROLLBACK"); + } - return true; + return true; } /** * Logs an sql error. * - * @param string $message + * @param string $message * @return false */ -function sql_error($message) { - sql_close(); +function sql_error($message) +{ + sql_close(); - $message = trim($message) . "\n"; - $message .= debug_string_backtrace() . "\n"; + $message = trim($message) . "\n"; + $message .= debug_string_backtrace() . "\n"; - error_log('mysql_provider error: ' . $message); + error_log('mysql_provider error: ' . $message); - return false; + return false; } /** @@ -85,26 +91,27 @@ function sql_error($message) { * DB to select * @return mysqli The connection handler */ -function sql_connect($host, $user, $pass, $db_name) { - global $sql_connection; +function sql_connect($host, $user, $pass, $db_name) +{ + global $sql_connection; - $sql_connection = new mysqli($host, $user, $pass, $db_name); - if ($sql_connection->connect_errno) { - error("Unable to connect to MySQL: " . $sql_connection->connect_error); - return sql_error("Unable to connect to MySQL: " . $sql_connection->connect_error); - } + $sql_connection = new mysqli($host, $user, $pass, $db_name); + if ($sql_connection->connect_errno) { + error("Unable to connect to MySQL: " . $sql_connection->connect_error); + return sql_error("Unable to connect to MySQL: " . $sql_connection->connect_error); + } - $result = $sql_connection->query("SET CHARACTER SET utf8;"); - if (! $result) { - return sql_error("Unable to set utf8 character set (" . $sql_connection->errno . ") " . $sql_connection->error); - } + $result = $sql_connection->query("SET CHARACTER SET utf8;"); + if (! $result) { + return sql_error("Unable to set utf8 character set (" . $sql_connection->errno . ") " . $sql_connection->error); + } - $result = $sql_connection->set_charset('utf8'); - if (! $result) { - return sql_error("Unable to set utf8 names (" . $sql_connection->errno . ") " . $sql_connection->error); - } + $result = $sql_connection->set_charset('utf8'); + if (! $result) { + return sql_error("Unable to set utf8 names (" . $sql_connection->errno . ") " . $sql_connection->error); + } - return $sql_connection; + return $sql_connection; } /** @@ -114,53 +121,56 @@ function sql_connect($host, $user, $pass, $db_name) { * $db_name * @return bool true on success, false on error */ -function sql_select_db($db_name) { - global $sql_connection; - if (! $sql_connection->select_db($db_name)) { - return sql_error("No database selected."); - } - return true; +function sql_select_db($db_name) +{ + global $sql_connection; + if (! $sql_connection->select_db($db_name)) { + return sql_error("No database selected."); + } + return true; } /** * MySQL SELECT query * - * @param string $query + * @param string $query * @return Result array or false on error */ -function sql_select($query) { - global $sql_connection; +function sql_select($query) +{ + global $sql_connection; // echo $query . ";\n"; // echo debug_string_backtrace() . "\n"; $result = $sql_connection->query($query); - if ($result) { - $data = []; - while ($line = $result->fetch_assoc()) { - array_push($data, $line); + if ($result) { + $data = []; + while ($line = $result->fetch_assoc()) { + array_push($data, $line); + } + return $data; } - return $data; - } - return sql_error("MySQL-query error: " . $query . " (" . $sql_connection->errno . ") " . $sql_connection->error); + return sql_error("MySQL-query error: " . $query . " (" . $sql_connection->errno . ") " . $sql_connection->error); } /** * MySQL execute a query * - * @param string $query + * @param string $query * @return mysqli_result boolean resource or false on error */ -function sql_query($query) { - global $sql_connection; +function sql_query($query) +{ + global $sql_connection; - $result = $sql_connection->query($query); - if ($result) { - return $result; - } + $result = $sql_connection->query($query); + if ($result) { + return $result; + } - return sql_error("MySQL-query error: " . $query . " (" . $sql_connection->errno . ") " . $sql_connection->error); + return sql_error("MySQL-query error: " . $query . " (" . $sql_connection->errno . ") " . $sql_connection->error); } /** @@ -168,49 +178,53 @@ function sql_query($query) { * * @return int */ -function sql_id() { - global $sql_connection; - return $sql_connection->insert_id; +function sql_id() +{ + global $sql_connection; + return $sql_connection->insert_id; } /** * Escape a string for a sql query. * - * @param string $query + * @param string $query * @return string */ -function sql_escape($query) { - global $sql_connection; - return $sql_connection->real_escape_string($query); +function sql_escape($query) +{ + global $sql_connection; + return $sql_connection->real_escape_string($query); } /** * Convert a boolean for mysql-queries. * - * @param boolean $boolean + * @param boolean $boolean * @return string */ -function sql_bool($boolean) { - return $boolean == true ? 'TRUE' : 'FALSE'; +function sql_bool($boolean) +{ + return $boolean == true ? 'TRUE' : 'FALSE'; } /** * Count query result lines. * - * @param string $query + * @param string $query * @return int Count of result lines */ -function sql_num_query($query) { - return sql_query($query)->num_rows; +function sql_num_query($query) +{ + return sql_query($query)->num_rows; } -function sql_select_single_col($query) { - $result = sql_select($query); - return array_map('array_shift', $result); +function sql_select_single_col($query) +{ + $result = sql_select($query); + return array_map('array_shift', $result); } -function sql_select_single_cell($query) { - return array_shift(array_shift(sql_select($query))); +function sql_select_single_cell($query) +{ + return array_shift(array_shift(sql_select($query))); } - -?> diff --git a/includes/pages/admin_active.php b/includes/pages/admin_active.php index a1e31b11..46e88e23 100644 --- a/includes/pages/admin_active.php +++ b/includes/pages/admin_active.php @@ -1,45 +1,47 @@ « ' . _("back") . ' | ' . _("apply") . ''; + $limit = ""; + $msg = success(_("Marked angels."), true); + } else { + $set_active = '« ' . _("back") . ' | ' . _("apply") . ''; + } } - } - if (isset($_REQUEST['active']) && preg_match("/^[0-9]+$/", $_REQUEST['active'])) { - $user_id = $_REQUEST['active']; - $user_source = User($user_id); - if ($user_source != null) { - sql_query("UPDATE `User` SET `Aktiv`=1 WHERE `UID`='" . sql_escape($user_id) . "' LIMIT 1"); - engelsystem_log("User " . User_Nick_render($user_source) . " is active now."); - $msg = success(_("Angel has been marked as active."), true); - } else { - $msg = error(_("Angel not found."), true); + if (isset($_REQUEST['active']) && preg_match("/^[0-9]+$/", $_REQUEST['active'])) { + $user_id = $_REQUEST['active']; + $user_source = User($user_id); + if ($user_source != null) { + sql_query("UPDATE `User` SET `Aktiv`=1 WHERE `UID`='" . sql_escape($user_id) . "' LIMIT 1"); + engelsystem_log("User " . User_Nick_render($user_source) . " is active now."); + $msg = success(_("Angel has been marked as active."), true); + } else { + $msg = error(_("Angel not found."), true); + } + } elseif (isset($_REQUEST['not_active']) && preg_match("/^[0-9]+$/", $_REQUEST['not_active'])) { + $user_id = $_REQUEST['not_active']; + $user_source = User($user_id); + if ($user_source != null) { + sql_query("UPDATE `User` SET `Aktiv`=0 WHERE `UID`='" . sql_escape($user_id) . "' LIMIT 1"); + engelsystem_log("User " . User_Nick_render($user_source) . " is NOT active now."); + $msg = success(_("Angel has been marked as not active."), true); + } else { + $msg = error(_("Angel not found."), true); + } + } elseif (isset($_REQUEST['tshirt']) && preg_match("/^[0-9]+$/", $_REQUEST['tshirt'])) { + $user_id = $_REQUEST['tshirt']; + $user_source = User($user_id); + if ($user_source != null) { + sql_query("UPDATE `User` SET `Tshirt`=1 WHERE `UID`='" . sql_escape($user_id) . "' LIMIT 1"); + engelsystem_log("User " . User_Nick_render($user_source) . " has tshirt now."); + $msg = success(_("Angel has got a t-shirt."), true); + } else { + $msg = error("Angel not found.", true); + } + } elseif (isset($_REQUEST['not_tshirt']) && preg_match("/^[0-9]+$/", $_REQUEST['not_tshirt'])) { + $user_id = $_REQUEST['not_tshirt']; + $user_source = User($user_id); + if ($user_source != null) { + sql_query("UPDATE `User` SET `Tshirt`=0 WHERE `UID`='" . sql_escape($user_id) . "' LIMIT 1"); + engelsystem_log("User " . User_Nick_render($user_source) . " has NO tshirt."); + $msg = success(_("Angel has got no t-shirt."), true); + } else { + $msg = error(_("Angel not found."), true); + } } - } elseif (isset($_REQUEST['not_active']) && preg_match("/^[0-9]+$/", $_REQUEST['not_active'])) { - $user_id = $_REQUEST['not_active']; - $user_source = User($user_id); - if ($user_source != null) { - sql_query("UPDATE `User` SET `Aktiv`=0 WHERE `UID`='" . sql_escape($user_id) . "' LIMIT 1"); - engelsystem_log("User " . User_Nick_render($user_source) . " is NOT active now."); - $msg = success(_("Angel has been marked as not active."), true); - } else { - $msg = error(_("Angel not found."), true); - } - } elseif (isset($_REQUEST['tshirt']) && preg_match("/^[0-9]+$/", $_REQUEST['tshirt'])) { - $user_id = $_REQUEST['tshirt']; - $user_source = User($user_id); - if ($user_source != null) { - sql_query("UPDATE `User` SET `Tshirt`=1 WHERE `UID`='" . sql_escape($user_id) . "' LIMIT 1"); - engelsystem_log("User " . User_Nick_render($user_source) . " has tshirt now."); - $msg = success(_("Angel has got a t-shirt."), true); - } else { - $msg = error("Angel not found.", true); - } - } elseif (isset($_REQUEST['not_tshirt']) && preg_match("/^[0-9]+$/", $_REQUEST['not_tshirt'])) { - $user_id = $_REQUEST['not_tshirt']; - $user_source = User($user_id); - if ($user_source != null) { - sql_query("UPDATE `User` SET `Tshirt`=0 WHERE `UID`='" . sql_escape($user_id) . "' LIMIT 1"); - engelsystem_log("User " . User_Nick_render($user_source) . " has NO tshirt."); - $msg = success(_("Angel has got no t-shirt."), true); - } else { - $msg = error(_("Angel not found."), true); - } - } - $users = sql_select(" + $users = sql_select(" SELECT `User`.*, COUNT(`ShiftEntry`.`id`) as `shift_count`, ${shift_sum_formula} as `shift_length` FROM `User` LEFT JOIN `ShiftEntry` ON `User`.`UID` = `ShiftEntry`.`UID` LEFT JOIN `Shifts` ON `ShiftEntry`.`SID` = `Shifts`.`SID` " . ($show_all_shifts ? "" : "AND (`Shifts`.`end` < " . time() . " OR `Shifts`.`end` IS NULL)") . " WHERE `User`.`Gekommen` = 1 GROUP BY `User`.`UID` ORDER BY `force_active` DESC, `shift_length` DESC" . $limit); - $matched_users = []; - if ($search == "") { - $tokens = []; - } else { - $tokens = explode(" ", $search); - } - foreach ($users as &$usr) { - if (count($tokens) > 0) { - $match = false; - foreach ($tokens as $t) { - if (stristr($usr['Nick'], trim($t))) { - $match = true; - break; + $matched_users = []; + if ($search == "") { + $tokens = []; + } else { + $tokens = explode(" ", $search); + } + foreach ($users as &$usr) { + if (count($tokens) > 0) { + $match = false; + foreach ($tokens as $t) { + if (stristr($usr['Nick'], trim($t))) { + $match = true; + break; + } + } + if (! $match) { + continue; + } } - } - if (! $match) { - continue; - } - } - $usr['nick'] = User_Nick_render($usr); - $usr['shirt_size'] = $tshirt_sizes[$usr['Size']]; - $usr['work_time'] = round($usr['shift_length'] / 60) . ' min (' . round($usr['shift_length'] / 3600) . ' h)'; - $usr['active'] = glyph_bool($usr['Aktiv'] == 1); - $usr['force_active'] = glyph_bool($usr['force_active'] == 1); - $usr['tshirt'] = glyph_bool($usr['Tshirt'] == 1); + $usr['nick'] = User_Nick_render($usr); + $usr['shirt_size'] = $tshirt_sizes[$usr['Size']]; + $usr['work_time'] = round($usr['shift_length'] / 60) . ' min (' . round($usr['shift_length'] / 3600) . ' h)'; + $usr['active'] = glyph_bool($usr['Aktiv'] == 1); + $usr['force_active'] = glyph_bool($usr['force_active'] == 1); + $usr['tshirt'] = glyph_bool($usr['Tshirt'] == 1); - $actions = []; - if ($usr['Aktiv'] == 0) { - $actions[] = '' . _("set active") . ''; - } - if ($usr['Aktiv'] == 1 && $usr['Tshirt'] == 0) { - $actions[] = '' . _("remove active") . ''; - $actions[] = '' . _("got t-shirt") . ''; - } - if ($usr['Tshirt'] == 1) { - $actions[] = '' . _("remove t-shirt") . ''; - } + $actions = []; + if ($usr['Aktiv'] == 0) { + $actions[] = '' . _("set active") . ''; + } + if ($usr['Aktiv'] == 1 && $usr['Tshirt'] == 0) { + $actions[] = '' . _("remove active") . ''; + $actions[] = '' . _("got t-shirt") . ''; + } + if ($usr['Tshirt'] == 1) { + $actions[] = '' . _("remove t-shirt") . ''; + } - $usr['actions'] = join(' ', $actions); + $usr['actions'] = join(' ', $actions); - $matched_users[] = $usr; - } + $matched_users[] = $usr; + } - $shirt_statistics = []; - foreach (array_keys($tshirt_sizes) as $size) { - if ($size != '') { - $shirt_statistics[] = [ + $shirt_statistics = []; + foreach (array_keys($tshirt_sizes) as $size) { + if ($size != '') { + $shirt_statistics[] = [ 'size' => $size, 'needed' => sql_select_single_cell("SELECT count(*) FROM `User` WHERE `Size`='" . sql_escape($size) . "' AND `Gekommen`=1"), - 'given' => sql_select_single_cell("SELECT count(*) FROM `User` WHERE `Size`='" . sql_escape($size) . "' AND `Tshirt`=1") + 'given' => sql_select_single_cell("SELECT count(*) FROM `User` WHERE `Size`='" . sql_escape($size) . "' AND `Tshirt`=1") ]; + } } - } - $shirt_statistics[] = [ + $shirt_statistics[] = [ 'size' => '' . _("Sum") . '', 'needed' => '' . User_arrived_count() . '', - 'given' => '' . sql_select_single_cell("SELECT count(*) FROM `User` WHERE `Tshirt`=1") . '' + 'given' => '' . sql_select_single_cell("SELECT count(*) FROM `User` WHERE `Tshirt`=1") . '' ]; - return page_with_title(admin_active_title(), [ + return page_with_title(admin_active_title(), [ form([ form_text('search', _("Search angel:"), $search), form_checkbox('show_all_shifts', _("Show all shifts"), $show_all_shifts), - form_submit('submit', _("Search")) + form_submit('submit', _("Search")) ], page_link_to('admin_active')), $set_active == "" ? form([ form_text('count', _("How much angels should be active?"), $count), - form_submit('set_active', _("Preview")) + form_submit('set_active', _("Preview")) ]) : $set_active, msg(), table([ @@ -189,14 +191,13 @@ function admin_active() { 'active' => _("Active?"), 'force_active' => _("Forced"), 'tshirt' => _("T-shirt?"), - 'actions' => "" + 'actions' => "" ], $matched_users), '

' . _("Shirt statistics") . '

', table([ 'size' => _("Size"), 'needed' => _("Needed shirts"), - 'given' => _("Given shirts") - ], $shirt_statistics) + 'given' => _("Given shirts") + ], $shirt_statistics) ]); } -?> diff --git a/includes/pages/admin_arrive.php b/includes/pages/admin_arrive.php index 4a1ee8d7..c2e97072 100644 --- a/includes/pages/admin_arrive.php +++ b/includes/pages/admin_arrive.php @@ -1,145 +1,147 @@ 0) { - $match = false; - $index = join(" ", $usr); - foreach ($tokens as $t) { - if (stristr($index, trim($t))) { - $match = true; - break; + if (isset($_REQUEST['reset']) && preg_match("/^[0-9]*$/", $_REQUEST['reset'])) { + $user_id = $_REQUEST['reset']; + $user_source = User($user_id); + if ($user_source != null) { + sql_query("UPDATE `User` SET `Gekommen`=0, `arrival_date` = NULL WHERE `UID`='" . sql_escape($user_id) . "' LIMIT 1"); + engelsystem_log("User set to not arrived: " . User_Nick_render($user_source)); + success(_("Reset done. Angel has not arrived.")); + redirect(user_link($user_source)); + } else { + $msg = error(_("Angel not found."), true); + } + } elseif (isset($_REQUEST['arrived']) && preg_match("/^[0-9]*$/", $_REQUEST['arrived'])) { + $user_id = $_REQUEST['arrived']; + $user_source = User($user_id); + if ($user_source != null) { + sql_query("UPDATE `User` SET `Gekommen`=1, `arrival_date`='" . time() . "' WHERE `UID`='" . sql_escape($user_id) . "' LIMIT 1"); + engelsystem_log("User set has arrived: " . User_Nick_render($user_source)); + success(_("Angel has been marked as arrived.")); + redirect(user_link($user_source)); + } else { + $msg = error(_("Angel not found."), true); } - } - if (! $match) { - continue; - } } - - $usr['nick'] = User_Nick_render($usr); - if ($usr['planned_departure_date'] != null) { - $usr['rendered_planned_departure_date'] = date('Y-m-d', $usr['planned_departure_date']); + + $users = sql_select("SELECT * FROM `User` ORDER BY `Nick`"); + $arrival_count_at_day = []; + $planned_arrival_count_at_day = []; + $planned_departure_count_at_day = []; + $users_matched = []; + if ($search == "") { + $tokens = []; } else { - $usr['rendered_planned_departure_date'] = '-'; + $tokens = explode(" ", $search); } - $usr['rendered_planned_arrival_date'] = date('Y-m-d', $usr['planned_arrival_date']); - $usr['rendered_arrival_date'] = $usr['arrival_date'] > 0 ? date('Y-m-d', $usr['arrival_date']) : "-"; - $usr['arrived'] = $usr['Gekommen'] == 1 ? _("yes") : ""; - $usr['actions'] = $usr['Gekommen'] == 1 ? '' . _("reset") . '' : '' . _("arrived") . ''; + foreach ($users as $usr) { + if (count($tokens) > 0) { + $match = false; + $index = join(" ", $usr); + foreach ($tokens as $t) { + if (stristr($index, trim($t))) { + $match = true; + break; + } + } + if (! $match) { + continue; + } + } - if ($usr['arrival_date'] > 0) { - $day = date('Y-m-d', $usr['arrival_date']); - if (! isset($arrival_count_at_day[$day])) { - $arrival_count_at_day[$day] = 0; - } - $arrival_count_at_day[$day] ++; + $usr['nick'] = User_Nick_render($usr); + if ($usr['planned_departure_date'] != null) { + $usr['rendered_planned_departure_date'] = date('Y-m-d', $usr['planned_departure_date']); + } else { + $usr['rendered_planned_departure_date'] = '-'; + } + $usr['rendered_planned_arrival_date'] = date('Y-m-d', $usr['planned_arrival_date']); + $usr['rendered_arrival_date'] = $usr['arrival_date'] > 0 ? date('Y-m-d', $usr['arrival_date']) : "-"; + $usr['arrived'] = $usr['Gekommen'] == 1 ? _("yes") : ""; + $usr['actions'] = $usr['Gekommen'] == 1 ? '' . _("reset") . '' : '' . _("arrived") . ''; + + if ($usr['arrival_date'] > 0) { + $day = date('Y-m-d', $usr['arrival_date']); + if (! isset($arrival_count_at_day[$day])) { + $arrival_count_at_day[$day] = 0; + } + $arrival_count_at_day[$day] ++; + } + + if ($usr['planned_arrival_date'] != null) { + $day = date('Y-m-d', $usr['planned_arrival_date']); + if (! isset($planned_arrival_count_at_day[$day])) { + $planned_arrival_count_at_day[$day] = 0; + } + $planned_arrival_count_at_day[$day] ++; + } + + if ($usr['planned_departure_date'] != null && $usr['Gekommen'] == 1) { + $day = date('Y-m-d', $usr['planned_departure_date']); + if (! isset($planned_departure_count_at_day[$day])) { + $planned_departure_count_at_day[$day] = 0; + } + $planned_departure_count_at_day[$day] ++; + } + + $users_matched[] = $usr; } - - if ($usr['planned_arrival_date'] != null) { - $day = date('Y-m-d', $usr['planned_arrival_date']); - if (! isset($planned_arrival_count_at_day[$day])) { - $planned_arrival_count_at_day[$day] = 0; - } - $planned_arrival_count_at_day[$day] ++; - } - - if ($usr['planned_departure_date'] != null && $usr['Gekommen'] == 1) { - $day = date('Y-m-d', $usr['planned_departure_date']); - if (! isset($planned_departure_count_at_day[$day])) { - $planned_departure_count_at_day[$day] = 0; - } - $planned_departure_count_at_day[$day] ++; - } - - $users_matched[] = $usr; - } - ksort($arrival_count_at_day); - ksort($planned_arrival_count_at_day); - ksort($planned_departure_count_at_day); + ksort($arrival_count_at_day); + ksort($planned_arrival_count_at_day); + ksort($planned_departure_count_at_day); - $arrival_at_day = []; - $arrival_sum = 0; - foreach ($arrival_count_at_day as $day => $count) { - $arrival_sum += $count; - $arrival_at_day[$day] = [ + $arrival_at_day = []; + $arrival_sum = 0; + foreach ($arrival_count_at_day as $day => $count) { + $arrival_sum += $count; + $arrival_at_day[$day] = [ 'day' => $day, 'count' => $count, - 'sum' => $arrival_sum + 'sum' => $arrival_sum ]; - } + } - $planned_arrival_at_day = []; - $planned_arrival_sum = 0; - foreach ($planned_arrival_count_at_day as $day => $count) { - $planned_arrival_sum += $count; - $planned_arrival_at_day[$day] = [ + $planned_arrival_at_day = []; + $planned_arrival_sum = 0; + foreach ($planned_arrival_count_at_day as $day => $count) { + $planned_arrival_sum += $count; + $planned_arrival_at_day[$day] = [ 'day' => $day, 'count' => $count, - 'sum' => $planned_arrival_sum + 'sum' => $planned_arrival_sum ]; - } + } - $planned_departure_at_day = []; - $planned_departure_sum = 0; - foreach ($planned_departure_count_at_day as $day => $count) { - $planned_departure_sum += $count; - $planned_departure_at_day[$day] = [ + $planned_departure_at_day = []; + $planned_departure_sum = 0; + foreach ($planned_departure_count_at_day as $day => $count) { + $planned_departure_sum += $count; + $planned_departure_at_day[$day] = [ 'day' => $day, 'count' => $count, - 'sum' => $planned_departure_sum + 'sum' => $planned_departure_sum ]; - } + } - return page_with_title(admin_arrive_title(), [ + return page_with_title(admin_arrive_title(), [ msg(), form([ form_text('search', _("Search"), $search), - form_submit('submit', _("Search")) + form_submit('submit', _("Search")) ]), table([ 'nick' => _("Nickname"), @@ -147,55 +149,54 @@ function admin_arrive() { 'arrived' => _("Arrived?"), 'rendered_arrival_date' => _("Arrival date"), 'rendered_planned_departure_date' => _("Planned departure"), - 'actions' => "" + 'actions' => "" ], $users_matched), div('row', [ div('col-md-4', [ heading(_("Planned arrival statistics"), 2), bargraph('planned_arrives', 'day', [ 'count' => _("arrived"), - 'sum' => _("arrived sum") + 'sum' => _("arrived sum") ], [ 'count' => '#090', - 'sum' => '#888' + 'sum' => '#888' ], $planned_arrival_at_day), table([ 'day' => _("Date"), 'count' => _("Count"), - 'sum' => _("Sum") - ], $planned_arrival_at_day) + 'sum' => _("Sum") + ], $planned_arrival_at_day) ]), div('col-md-4', [ heading(_("Arrival statistics"), 2), bargraph('arrives', 'day', [ 'count' => _("arrived"), - 'sum' => _("arrived sum") + 'sum' => _("arrived sum") ], [ 'count' => '#090', - 'sum' => '#888' + 'sum' => '#888' ], $arrival_at_day), table([ 'day' => _("Date"), 'count' => _("Count"), - 'sum' => _("Sum") - ], $arrival_at_day) + 'sum' => _("Sum") + ], $arrival_at_day) ]), div('col-md-4', [ heading(_("Planned departure statistics"), 2), bargraph('planned_departures', 'day', [ 'count' => _("arrived"), - 'sum' => _("arrived sum") + 'sum' => _("arrived sum") ], [ 'count' => '#090', - 'sum' => '#888' + 'sum' => '#888' ], $planned_departure_at_day), table([ 'day' => _("Date"), 'count' => _("Count"), - 'sum' => _("Sum") - ], $planned_departure_at_day) - ]) - ]) + 'sum' => _("Sum") + ], $planned_departure_at_day) + ]) + ]) ]); } -?> diff --git a/includes/pages/admin_free.php b/includes/pages/admin_free.php index 427de61a..db0c239f 100644 --- a/includes/pages/admin_free.php +++ b/includes/pages/admin_free.php @@ -1,37 +1,39 @@ 'alle Typen' + $angeltypesearch = ""; + if (empty($_REQUEST['angeltype'])) { + $_REQUEST['angeltype'] = ''; + } else { + $angeltypesearch = " INNER JOIN `UserAngelTypes` ON (`UserAngelTypes`.`angeltype_id` = '" . sql_escape($_REQUEST['angeltype']) . "' AND `UserAngelTypes`.`user_id` = `User`.`UID`"; + if (isset($_REQUEST['confirmed_only'])) { + $angeltypesearch .= " AND `UserAngelTypes`.`confirm_user_id`"; + } + $angeltypesearch .= ") "; + } + + $angel_types_source = sql_select("SELECT `id`, `name` FROM `AngelTypes` ORDER BY `name`"); + $angel_types = [ + '' => 'alle Typen' ]; - foreach ($angel_types_source as $angel_type) { - $angel_types[$angel_type['id']] = $angel_type['name']; - } + foreach ($angel_types_source as $angel_type) { + $angel_types[$angel_type['id']] = $angel_type['name']; + } - $users = sql_select(" + $users = sql_select(" SELECT `User`.* FROM `User` ${angeltypesearch} @@ -41,52 +43,52 @@ function admin_free() { GROUP BY `User`.`UID` ORDER BY `Nick`"); - $free_users_table = []; - if ($search == "") { - $tokens = []; - } else { - $tokens = explode(" ", $search); - } - foreach ($users as $usr) { - if (count($tokens) > 0) { - $match = false; - $index = join("", $usr); - foreach ($tokens as $t) { - if (stristr($index, trim($t))) { - $match = true; - break; - } - } - if (! $match) { - continue; - } + $free_users_table = []; + if ($search == "") { + $tokens = []; + } else { + $tokens = explode(" ", $search); } + foreach ($users as $usr) { + if (count($tokens) > 0) { + $match = false; + $index = join("", $usr); + foreach ($tokens as $t) { + if (stristr($index, trim($t))) { + $match = true; + break; + } + } + if (! $match) { + continue; + } + } - $free_users_table[] = [ + $free_users_table[] = [ 'name' => User_Nick_render($usr), 'shift_state' => User_shift_state_render($usr), 'dect' => $usr['DECT'], 'jabber' => $usr['jabber'], 'email' => $usr['email_by_human_allowed'] ? $usr['email'] : glyph('eye-close'), - 'actions' => in_array('admin_user', $privileges) ? button(page_link_to('admin_user') . '&id=' . $usr['UID'], _("edit"), 'btn-xs') : '' + 'actions' => in_array('admin_user', $privileges) ? button(page_link_to('admin_user') . '&id=' . $usr['UID'], _("edit"), 'btn-xs') : '' ]; - } - return page_with_title(admin_free_title(), [ + } + return page_with_title(admin_free_title(), [ form([ div('row', [ div('col-md-4', [ - form_text('search', _("Search"), $search) + form_text('search', _("Search"), $search) ]), div('col-md-4', [ - form_select('angeltype', _("Angeltype"), $angel_types, $_REQUEST['angeltype']) + form_select('angeltype', _("Angeltype"), $angel_types, $_REQUEST['angeltype']) ]), div('col-md-2', [ - form_checkbox('confirmed_only', _("Only confirmed"), isset($_REQUEST['confirmed_only'])) + form_checkbox('confirmed_only', _("Only confirmed"), isset($_REQUEST['confirmed_only'])) ]), div('col-md-2', [ - form_submit('submit', _("Search")) - ]) - ]) + form_submit('submit', _("Search")) + ]) + ]) ]), table([ 'name' => _("Nick"), @@ -94,8 +96,7 @@ function admin_free() { 'dect' => _("DECT"), 'jabber' => _("Jabber"), 'email' => _("E-Mail"), - 'actions' => '' - ], $free_users_table) + 'actions' => '' + ], $free_users_table) ]); } -?> diff --git a/includes/pages/admin_groups.php b/includes/pages/admin_groups.php index 388e2c68..04e4320d 100644 --- a/includes/pages/admin_groups.php +++ b/includes/pages/admin_groups.php @@ -1,97 +1,98 @@ $group['Name'], 'privileges' => join(', ', $privileges_html), - 'actions' => button(page_link_to('admin_groups') . '&action=edit&id=' . $group['UID'], _("edit"), 'btn-xs') + 'actions' => button(page_link_to('admin_groups') . '&action=edit&id=' . $group['UID'], _("edit"), 'btn-xs') ]; - } + } - return page_with_title(admin_groups_title(), [ + return page_with_title(admin_groups_title(), [ table([ 'name' => _("Name"), 'privileges' => _("Privileges"), - 'actions' => '' - ], $groups_table) + 'actions' => '' + ], $groups_table) ]); - } else { - switch ($_REQUEST["action"]) { + } else { + switch ($_REQUEST["action"]) { case 'edit': if (isset($_REQUEST['id']) && preg_match("/^-[0-9]{1,11}$/", $_REQUEST['id'])) { - $group_id = $_REQUEST['id']; + $group_id = $_REQUEST['id']; } else { - return error("Incomplete call, missing Groups ID.", true); + return error("Incomplete call, missing Groups ID.", true); } $group = sql_select("SELECT * FROM `Groups` WHERE `UID`='" . sql_escape($group_id) . "' LIMIT 1"); if (count($group) > 0) { - list($group) = $group; - $privileges = sql_select("SELECT `Privileges`.*, `GroupPrivileges`.`group_id` FROM `Privileges` LEFT OUTER JOIN `GroupPrivileges` ON (`Privileges`.`id` = `GroupPrivileges`.`privilege_id` AND `GroupPrivileges`.`group_id`='" . sql_escape($group_id) . "') ORDER BY `Privileges`.`name`"); - $privileges_html = ""; - $privileges_form = []; - foreach ($privileges as $priv) { - $privileges_form[] = form_checkbox('privileges[]', $priv['desc'] . ' (' . $priv['name'] . ')', $priv['group_id'] != "", $priv['id']); - $privileges_html .= sprintf('' . ' %s %s', $priv['id'], ($priv['group_id'] != "" ? 'checked="checked"' : ''), $priv['name'], $priv['desc']); - } + list($group) = $group; + $privileges = sql_select("SELECT `Privileges`.*, `GroupPrivileges`.`group_id` FROM `Privileges` LEFT OUTER JOIN `GroupPrivileges` ON (`Privileges`.`id` = `GroupPrivileges`.`privilege_id` AND `GroupPrivileges`.`group_id`='" . sql_escape($group_id) . "') ORDER BY `Privileges`.`name`"); + $privileges_html = ""; + $privileges_form = []; + foreach ($privileges as $priv) { + $privileges_form[] = form_checkbox('privileges[]', $priv['desc'] . ' (' . $priv['name'] . ')', $priv['group_id'] != "", $priv['id']); + $privileges_html .= sprintf('' . ' %s %s', $priv['id'], ($priv['group_id'] != "" ? 'checked="checked"' : ''), $priv['name'], $priv['desc']); + } - $privileges_form[] = form_submit('submit', _("Save")); - $html .= page_with_title(_("Edit group"), [ - form($privileges_form, page_link_to('admin_groups') . '&action=save&id=' . $group_id) + $privileges_form[] = form_submit('submit', _("Save")); + $html .= page_with_title(_("Edit group"), [ + form($privileges_form, page_link_to('admin_groups') . '&action=save&id=' . $group_id) ]); } else { - return error("No Group found.", true); + return error("No Group found.", true); } break; case 'save': if (isset($_REQUEST['id']) && preg_match("/^-[0-9]{1,11}$/", $_REQUEST['id'])) { - $group_id = $_REQUEST['id']; + $group_id = $_REQUEST['id']; } else { - return error("Incomplete call, missing Groups ID.", true); + return error("Incomplete call, missing Groups ID.", true); } $group = sql_select("SELECT * FROM `Groups` WHERE `UID`='" . sql_escape($group_id) . "' LIMIT 1"); if (! is_array($_REQUEST['privileges'])) { - $_REQUEST['privileges'] = []; + $_REQUEST['privileges'] = []; } if (count($group) > 0) { - list($group) = $group; - sql_query("DELETE FROM `GroupPrivileges` WHERE `group_id`='" . sql_escape($group_id) . "'"); - $privilege_names = []; - foreach ($_REQUEST['privileges'] as $priv) { - if (preg_match("/^[0-9]{1,}$/", $priv)) { - $group_privileges_source = sql_select("SELECT * FROM `Privileges` WHERE `id`='" . sql_escape($priv) . "' LIMIT 1"); - if (count($group_privileges_source) > 0) { - sql_query("INSERT INTO `GroupPrivileges` SET `group_id`='" . sql_escape($group_id) . "', `privilege_id`='" . sql_escape($priv) . "'"); - $privilege_names[] = $group_privileges_source[0]['name']; - } + list($group) = $group; + sql_query("DELETE FROM `GroupPrivileges` WHERE `group_id`='" . sql_escape($group_id) . "'"); + $privilege_names = []; + foreach ($_REQUEST['privileges'] as $priv) { + if (preg_match("/^[0-9]{1,}$/", $priv)) { + $group_privileges_source = sql_select("SELECT * FROM `Privileges` WHERE `id`='" . sql_escape($priv) . "' LIMIT 1"); + if (count($group_privileges_source) > 0) { + sql_query("INSERT INTO `GroupPrivileges` SET `group_id`='" . sql_escape($group_id) . "', `privilege_id`='" . sql_escape($priv) . "'"); + $privilege_names[] = $group_privileges_source[0]['name']; + } + } } - } - engelsystem_log("Group privileges of group " . $group['Name'] . " edited: " . join(", ", $privilege_names)); - redirect(page_link_to("admin_groups")); + engelsystem_log("Group privileges of group " . $group['Name'] . " edited: " . join(", ", $privilege_names)); + redirect(page_link_to("admin_groups")); } else { - return error("No Group found.", true); + return error("No Group found.", true); } break; } - } - return $html; + } + return $html; } -?> diff --git a/includes/pages/admin_import.php b/includes/pages/admin_import.php index 0669029d..e1674670 100644 --- a/includes/pages/admin_import.php +++ b/includes/pages/admin_import.php @@ -1,96 +1,98 @@ ' . _('File Upload') . glyph('ok-circle') . '' . mute(glyph('arrow-right')) . _('Validation') . mute(glyph('arrow-right')) . mute(_('Import')) + '' . _('File Upload') . glyph('ok-circle') . '' . mute(glyph('arrow-right')) . _('Validation') . mute(glyph('arrow-right')) . mute(_('Import')) ]) . form([ div('row', [ div('col-sm-6', [ '

' . _("Rooms to create") . '

', - table(_("Name"), $rooms_new) + table(_("Name"), $rooms_new) ]), div('col-sm-6', [ '

' . _("Rooms to delete") . '

', - table(_("Name"), $rooms_deleted) - ]) + table(_("Name"), $rooms_deleted) + ]) ]), '

' . _("Shifts to create") . '

', table([ @@ -156,7 +158,7 @@ function admin_import() { 'end' => _("End"), 'shifttype' => _('Shift type'), 'title' => _("Title"), - 'room' => _("Room") + 'room' => _("Room") ], shifts_printable($events_new, $shifttypes)), '

' . _("Shifts to update") . '

', table([ @@ -165,7 +167,7 @@ function admin_import() { 'end' => _("End"), 'shifttype' => _('Shift type'), 'title' => _("Title"), - 'room' => _("Room") + 'room' => _("Room") ], shifts_printable($events_updated, $shifttypes)), '

' . _("Shifts to delete") . '

', table([ @@ -174,75 +176,75 @@ function admin_import() { 'end' => _("End"), 'shifttype' => _('Shift type'), 'title' => _("Title"), - 'room' => _("Room") + 'room' => _("Room") ], shifts_printable($events_deleted, $shifttypes)), - form_submit('submit', _("Import")) + form_submit('submit', _("Import")) ], page_link_to('admin_import') . '&step=import&shifttype_id=' . $shifttype_id . "&add_minutes_end=" . $add_minutes_end . "&add_minutes_start=" . $add_minutes_start); break; case 'import': if (! file_exists($import_file)) { - error(_('Missing import file.')); - redirect(page_link_to('admin_import')); + error(_('Missing import file.')); + redirect(page_link_to('admin_import')); } if (! file_exists($import_file)) { - redirect(page_link_to('admin_import')); + redirect(page_link_to('admin_import')); } if (isset($_REQUEST['shifttype_id']) && isset($shifttypes[$_REQUEST['shifttype_id']])) { - $shifttype_id = $_REQUEST['shifttype_id']; + $shifttype_id = $_REQUEST['shifttype_id']; } else { - error(_('Please select a shift type.')); - redirect(page_link_to('admin_import')); + error(_('Please select a shift type.')); + redirect(page_link_to('admin_import')); } if (isset($_REQUEST['add_minutes_start']) && is_numeric(trim($_REQUEST['add_minutes_start']))) { - $add_minutes_start = trim($_REQUEST['add_minutes_start']); + $add_minutes_start = trim($_REQUEST['add_minutes_start']); } else { - error(_("Please enter an amount of minutes to add to a talk's begin.")); - redirect(page_link_to('admin_import')); + error(_("Please enter an amount of minutes to add to a talk's begin.")); + redirect(page_link_to('admin_import')); } if (isset($_REQUEST['add_minutes_end']) && is_numeric(trim($_REQUEST['add_minutes_end']))) { - $add_minutes_end = trim($_REQUEST['add_minutes_end']); + $add_minutes_end = trim($_REQUEST['add_minutes_end']); } else { - error(_("Please enter an amount of minutes to add to a talk's end.")); - redirect(page_link_to('admin_import')); + error(_("Please enter an amount of minutes to add to a talk's end.")); + redirect(page_link_to('admin_import')); } list($rooms_new, $rooms_deleted) = prepare_rooms($import_file); foreach ($rooms_new as $room) { - $result = Room_create($room, true, true); - if ($result === false) { - engelsystem_error('Unable to create room.'); - } - $rooms_import[trim($room)] = sql_id(); + $result = Room_create($room, true, true); + if ($result === false) { + engelsystem_error('Unable to create room.'); + } + $rooms_import[trim($room)] = sql_id(); } foreach ($rooms_deleted as $room) { - sql_query("DELETE FROM `Room` WHERE `Name`='" . sql_escape($room) . "' LIMIT 1"); + sql_query("DELETE FROM `Room` WHERE `Name`='" . sql_escape($room) . "' LIMIT 1"); } list($events_new, $events_updated, $events_deleted) = prepare_events($import_file, $shifttype_id, $add_minutes_start, $add_minutes_end); foreach ($events_new as $event) { - $result = Shift_create($event); - if ($result === false) { - engelsystem_error('Unable to create shift.'); - } + $result = Shift_create($event); + if ($result === false) { + engelsystem_error('Unable to create shift.'); + } } foreach ($events_updated as $event) { - $result = Shift_update_by_psid($event); - if ($result === false) { - engelsystem_error('Unable to update shift.'); - } + $result = Shift_update_by_psid($event); + if ($result === false) { + engelsystem_error('Unable to update shift.'); + } } foreach ($events_deleted as $event) { - $result = Shift_delete_by_psid($event['PSID']); - if ($result === false) { - engelsystem_error('Unable to delete shift.'); - } + $result = Shift_delete_by_psid($event['PSID']); + if ($result === false) { + engelsystem_error('Unable to delete shift.'); + } } engelsystem_log("Frab import done"); @@ -250,143 +252,147 @@ function admin_import() { unlink($import_file); $html .= div('well well-sm text-center', [ - '' . _('File Upload') . glyph('ok-circle') . '' . mute(glyph('arrow-right')) . '' . _('Validation') . glyph('ok-circle') . '' . mute(glyph('arrow-right')) . '' . _('Import') . glyph('ok-circle') . '' + '' . _('File Upload') . glyph('ok-circle') . '' . mute(glyph('arrow-right')) . '' . _('Validation') . glyph('ok-circle') . '' . mute(glyph('arrow-right')) . '' . _('Import') . glyph('ok-circle') . '' ]) . success(_("It's done!"), true); break; default: redirect(page_link_to('admin_import')); } - return page_with_title(admin_import_title(), [ + return page_with_title(admin_import_title(), [ msg(), - $html + $html ]); } -function prepare_rooms($file) { - global $rooms_import; - $data = read_xml($file); +function prepare_rooms($file) +{ + global $rooms_import; + $data = read_xml($file); // Load rooms from db for compare with input $rooms = sql_select("SELECT * FROM `Room` WHERE `FromPentabarf`='Y'"); - $rooms_db = []; - $rooms_import = []; - foreach ($rooms as $room) { - $rooms_db[] = (string) $room['Name']; - $rooms_import[$room['Name']] = $room['RID']; - } - - $events = $data->vcalendar->vevent; - $rooms_pb = []; - foreach ($events as $event) { - $rooms_pb[] = (string) $event->location; - if (! isset($rooms_import[trim($event->location)])) { - $rooms_import[trim($event->location)] = trim($event->location); + $rooms_db = []; + $rooms_import = []; + foreach ($rooms as $room) { + $rooms_db[] = (string) $room['Name']; + $rooms_import[$room['Name']] = $room['RID']; } - } - $rooms_pb = array_unique($rooms_pb); - $rooms_new = array_diff($rooms_pb, $rooms_db); - $rooms_deleted = array_diff($rooms_db, $rooms_pb); + $events = $data->vcalendar->vevent; + $rooms_pb = []; + foreach ($events as $event) { + $rooms_pb[] = (string) $event->location; + if (! isset($rooms_import[trim($event->location)])) { + $rooms_import[trim($event->location)] = trim($event->location); + } + } + $rooms_pb = array_unique($rooms_pb); - return [ + $rooms_new = array_diff($rooms_pb, $rooms_db); + $rooms_deleted = array_diff($rooms_db, $rooms_pb); + + return [ $rooms_new, - $rooms_deleted + $rooms_deleted ]; } -function prepare_events($file, $shifttype_id, $add_minutes_start, $add_minutes_end) { - global $rooms_import; - $data = read_xml($file); +function prepare_events($file, $shifttype_id, $add_minutes_start, $add_minutes_end) +{ + global $rooms_import; + $data = read_xml($file); - $rooms = sql_select("SELECT * FROM `Room`"); - $rooms_db = []; - foreach ($rooms as $room) { - $rooms_db[$room['Name']] = $room['RID']; - } + $rooms = sql_select("SELECT * FROM `Room`"); + $rooms_db = []; + foreach ($rooms as $room) { + $rooms_db[$room['Name']] = $room['RID']; + } - $events = $data->vcalendar->vevent; - $shifts_pb = []; - foreach ($events as $event) { - $event_pb = $event->children("http://pentabarf.org"); - $event_id = trim($event_pb->{ + $events = $data->vcalendar->vevent; + $shifts_pb = []; + foreach ($events as $event) { + $event_pb = $event->children("http://pentabarf.org"); + $event_id = trim($event_pb->{ 'event-id' }); - $shifts_pb[$event_id] = [ + $shifts_pb[$event_id] = [ 'shifttype_id' => $shifttype_id, 'start' => parse_date("Ymd\THis", $event->dtstart) - $add_minutes_start * 60, 'end' => parse_date("Ymd\THis", $event->dtend) + $add_minutes_end * 60, 'RID' => $rooms_import[trim($event->location)], 'title' => trim($event->summary), 'URL' => trim($event->url), - 'PSID' => $event_id + 'PSID' => $event_id ]; - } - - $shifts = sql_select("SELECT * FROM `Shifts` WHERE `PSID` IS NOT NULL ORDER BY `start`"); - $shifts_db = []; - foreach ($shifts as $shift) { - $shifts_db[$shift['PSID']] = $shift; - } - - $shifts_new = []; - $shifts_updated = []; - foreach ($shifts_pb as $shift) { - if (! isset($shifts_db[$shift['PSID']])) { - $shifts_new[] = $shift; - } else { - $tmp = $shifts_db[$shift['PSID']]; - if ($shift['shifttype_id'] != $tmp['shifttype_id'] || $shift['title'] != $tmp['title'] || $shift['start'] != $tmp['start'] || $shift['end'] != $tmp['end'] || $shift['RID'] != $tmp['RID'] || $shift['URL'] != $tmp['URL']) { - $shifts_updated[] = $shift; - } } - } - $shifts_deleted = []; - foreach ($shifts_db as $shift) { - if (! isset($shifts_pb[$shift['PSID']])) { - $shifts_deleted[] = $shift; + $shifts = sql_select("SELECT * FROM `Shifts` WHERE `PSID` IS NOT NULL ORDER BY `start`"); + $shifts_db = []; + foreach ($shifts as $shift) { + $shifts_db[$shift['PSID']] = $shift; } - } - return [ + $shifts_new = []; + $shifts_updated = []; + foreach ($shifts_pb as $shift) { + if (! isset($shifts_db[$shift['PSID']])) { + $shifts_new[] = $shift; + } else { + $tmp = $shifts_db[$shift['PSID']]; + if ($shift['shifttype_id'] != $tmp['shifttype_id'] || $shift['title'] != $tmp['title'] || $shift['start'] != $tmp['start'] || $shift['end'] != $tmp['end'] || $shift['RID'] != $tmp['RID'] || $shift['URL'] != $tmp['URL']) { + $shifts_updated[] = $shift; + } + } + } + + $shifts_deleted = []; + foreach ($shifts_db as $shift) { + if (! isset($shifts_pb[$shift['PSID']])) { + $shifts_deleted[] = $shift; + } + } + + return [ $shifts_new, $shifts_updated, - $shifts_deleted + $shifts_deleted ]; } -function read_xml($file) { - global $xml_import; - if (! isset($xml_import)) { - $xml_import = simplexml_load_file($file); - } - return $xml_import; +function read_xml($file) +{ + global $xml_import; + if (! isset($xml_import)) { + $xml_import = simplexml_load_file($file); + } + return $xml_import; } -function shifts_printable($shifts, $shifttypes) { - global $rooms_import; - $rooms = array_flip($rooms_import); +function shifts_printable($shifts, $shifttypes) +{ + global $rooms_import; + $rooms = array_flip($rooms_import); - uasort($shifts, 'shift_sort'); + uasort($shifts, 'shift_sort'); - $shifts_printable = []; - foreach ($shifts as $shift) { - $shifts_printable[] = [ + $shifts_printable = []; + foreach ($shifts as $shift) { + $shifts_printable[] = [ 'day' => date("l, Y-m-d", $shift['start']), 'start' => date("H:i", $shift['start']), 'shifttype' => ShiftType_name_render([ 'id' => $shift['shifttype_id'], - 'name' => $shifttypes[$shift['shifttype_id']] + 'name' => $shifttypes[$shift['shifttype_id']] ]), 'title' => shorten($shift['title']), 'end' => date("H:i", $shift['end']), - 'room' => $rooms[$shift['RID']] + 'room' => $rooms[$shift['RID']] ]; - } - return $shifts_printable; + } + return $shifts_printable; } -function shift_sort($shift_a, $shift_b) { - return ($shift_a['start'] < $shift_b['start']) ? - 1 : 1; +function shift_sort($shift_a, $shift_b) +{ + return ($shift_a['start'] < $shift_b['start']) ? - 1 : 1; } -?> diff --git a/includes/pages/admin_log.php b/includes/pages/admin_log.php index 97b81585..d4548c07 100644 --- a/includes/pages/admin_log.php +++ b/includes/pages/admin_log.php @@ -1,33 +1,34 @@ "Time", 'nick' => "Angel", - 'message' => "Log Entry" - ], $log_entries) + 'message' => "Log Entry" + ], $log_entries) ]); } -?> diff --git a/includes/pages/admin_news.php b/includes/pages/admin_news.php index 789fc728..46d72ddd 100644 --- a/includes/pages/admin_news.php +++ b/includes/pages/admin_news.php @@ -1,24 +1,25 @@

' . _("Edit news entry") . '

' . msg(); - if (isset($_REQUEST['id']) && preg_match("/^[0-9]{1,11}$/", $_REQUEST['id'])) { - $news_id = $_REQUEST['id']; - } else { - return error("Incomplete call, missing News ID.", true); - } + $html = '

' . _("Edit news entry") . '

' . msg(); + if (isset($_REQUEST['id']) && preg_match("/^[0-9]{1,11}$/", $_REQUEST['id'])) { + $news_id = $_REQUEST['id']; + } else { + return error("Incomplete call, missing News ID.", true); + } - $news = sql_select("SELECT * FROM `News` WHERE `ID`='" . sql_escape($news_id) . "' LIMIT 1"); - if (empty($news)) { - return error("No News found.", true); - } - switch ($_REQUEST["action"]) { + $news = sql_select("SELECT * FROM `News` WHERE `ID`='" . sql_escape($news_id) . "' LIMIT 1"); + if (empty($news)) { + return error("No News found.", true); + } + switch ($_REQUEST["action"]) { default: redirect(page_link_to('news')); case 'edit': @@ -32,7 +33,7 @@ function admin_news() { form_text('eBetreff', _("Subject"), $news['Betreff']), form_textarea('eText', _("Message"), $news['Text']), form_checkbox('eTreffen', _("Meeting"), $news['Treffen'] == 1, 1), - form_submit('submit', _("Save")) + form_submit('submit', _("Save")) ], page_link_to('admin_news&action=save&id=' . $news_id)); $html .= ' ' . _("Delete") . ''; @@ -62,6 +63,5 @@ function admin_news() { redirect(page_link_to("news")); break; } - return $html . '
'; + return $html . ''; } -?> \ No newline at end of file diff --git a/includes/pages/admin_questions.php b/includes/pages/admin_questions.php index f53cfab9..e8a2e50d 100644 --- a/includes/pages/admin_questions.php +++ b/includes/pages/admin_questions.php @@ -1,69 +1,72 @@ 0) { - return '' . _('There are unanswered questions!') . ''; - } + if ($new_messages > 0) { + return '' . _('There are unanswered questions!') . ''; + } + } } - } - return null; + return null; } -function admin_questions() { - global $user; +function admin_questions() +{ + global $user; - if (! isset($_REQUEST['action'])) { - $unanswered_questions_table = []; - $questions = sql_select("SELECT * FROM `Questions` WHERE `AID` IS NULL"); - foreach ($questions as $question) { - $user_source = User($question['UID']); + if (! isset($_REQUEST['action'])) { + $unanswered_questions_table = []; + $questions = sql_select("SELECT * FROM `Questions` WHERE `AID` IS NULL"); + foreach ($questions as $question) { + $user_source = User($question['UID']); - $unanswered_questions_table[] = [ + $unanswered_questions_table[] = [ 'from' => User_Nick_render($user_source), 'question' => str_replace("\n", "
", $question['Question']), 'answer' => form([ form_textarea('answer', '', ''), - form_submit('submit', _("Save")) + form_submit('submit', _("Save")) ], page_link_to('admin_questions') . '&action=answer&id=' . $question['QID']), - 'actions' => button(page_link_to("admin_questions") . '&action=delete&id=' . $question['QID'], _("delete"), 'btn-xs') + 'actions' => button(page_link_to("admin_questions") . '&action=delete&id=' . $question['QID'], _("delete"), 'btn-xs') ]; - } + } - $answered_questions_table = []; - $questions = sql_select("SELECT * FROM `Questions` WHERE NOT `AID` IS NULL"); - foreach ($questions as $question) { - $user_source = User($question['UID']); - $answer_user_source = User($question['AID']); - $answered_questions_table[] = [ + $answered_questions_table = []; + $questions = sql_select("SELECT * FROM `Questions` WHERE NOT `AID` IS NULL"); + foreach ($questions as $question) { + $user_source = User($question['UID']); + $answer_user_source = User($question['AID']); + $answered_questions_table[] = [ 'from' => User_Nick_render($user_source), 'question' => str_replace("\n", "
", $question['Question']), 'answered_by' => User_Nick_render($answer_user_source), 'answer' => str_replace("\n", "
", $question['Answer']), - 'actions' => button(page_link_to("admin_questions") . '&action=delete&id=' . $question['QID'], _("delete"), 'btn-xs') + 'actions' => button(page_link_to("admin_questions") . '&action=delete&id=' . $question['QID'], _("delete"), 'btn-xs') ]; - } + } - return page_with_title(admin_questions_title(), [ + return page_with_title(admin_questions_title(), [ '

' . _("Unanswered questions") . '

', table([ 'from' => _("From"), 'question' => _("Question"), 'answer' => _("Answer"), - 'actions' => '' + 'actions' => '' ], $unanswered_questions_table), '

' . _("Answered questions") . '

', table([ @@ -71,50 +74,49 @@ function admin_questions() { 'question' => _("Question"), 'answered_by' => _("Answered by"), 'answer' => _("Answer"), - 'actions' => '' - ], $answered_questions_table) + 'actions' => '' + ], $answered_questions_table) ]); - } else { - switch ($_REQUEST['action']) { + } else { + switch ($_REQUEST['action']) { case 'answer': if (isset($_REQUEST['id']) && preg_match("/^[0-9]{1,11}$/", $_REQUEST['id'])) { - $question_id = $_REQUEST['id']; + $question_id = $_REQUEST['id']; } else { - return error("Incomplete call, missing Question ID.", true); + return error("Incomplete call, missing Question ID.", true); } $question = sql_select("SELECT * FROM `Questions` WHERE `QID`='" . sql_escape($question_id) . "' LIMIT 1"); if (count($question) > 0 && $question[0]['AID'] == null) { - $answer = trim(preg_replace("/([^\p{L}\p{P}\p{Z}\p{N}\n]{1,})/ui", '', strip_tags($_REQUEST['answer']))); + $answer = trim(preg_replace("/([^\p{L}\p{P}\p{Z}\p{N}\n]{1,})/ui", '', strip_tags($_REQUEST['answer']))); - if ($answer != "") { - sql_query("UPDATE `Questions` SET `AID`='" . sql_escape($user['UID']) . "', `Answer`='" . sql_escape($answer) . "' WHERE `QID`='" . sql_escape($question_id) . "' LIMIT 1"); - engelsystem_log("Question " . $question[0]['Question'] . " answered: " . $answer); - redirect(page_link_to("admin_questions")); - } else { - return error("Enter an answer!", true); - } + if ($answer != "") { + sql_query("UPDATE `Questions` SET `AID`='" . sql_escape($user['UID']) . "', `Answer`='" . sql_escape($answer) . "' WHERE `QID`='" . sql_escape($question_id) . "' LIMIT 1"); + engelsystem_log("Question " . $question[0]['Question'] . " answered: " . $answer); + redirect(page_link_to("admin_questions")); + } else { + return error("Enter an answer!", true); + } } else { - return error("No question found.", true); + return error("No question found.", true); } break; case 'delete': if (isset($_REQUEST['id']) && preg_match("/^[0-9]{1,11}$/", $_REQUEST['id'])) { - $question_id = $_REQUEST['id']; + $question_id = $_REQUEST['id']; } else { - return error("Incomplete call, missing Question ID.", true); + return error("Incomplete call, missing Question ID.", true); } $question = sql_select("SELECT * FROM `Questions` WHERE `QID`='" . sql_escape($question_id) . "' LIMIT 1"); if (count($question) > 0) { - sql_query("DELETE FROM `Questions` WHERE `QID`='" . sql_escape($question_id) . "' LIMIT 1"); - engelsystem_log("Question deleted: " . $question[0]['Question']); - redirect(page_link_to("admin_questions")); + sql_query("DELETE FROM `Questions` WHERE `QID`='" . sql_escape($question_id) . "' LIMIT 1"); + engelsystem_log("Question deleted: " . $question[0]['Question']); + redirect(page_link_to("admin_questions")); } else { - return error("No question found.", true); + return error("No question found.", true); } break; } - } + } } -?> diff --git a/includes/pages/admin_rooms.php b/includes/pages/admin_rooms.php index 129ed423..365c2f69 100644 --- a/includes/pages/admin_rooms.php +++ b/includes/pages/admin_rooms.php @@ -1,140 +1,142 @@ Room_name_render($room), 'from_pentabarf' => $room['FromPentabarf'] == 'Y' ? '✓' : '', 'public' => $room['show'] == 'Y' ? '✓' : '', 'actions' => table_buttons([ button(page_link_to('admin_rooms') . '&show=edit&id=' . $room['RID'], _("edit"), 'btn-xs'), - button(page_link_to('admin_rooms') . '&show=delete&id=' . $room['RID'], _("delete"), 'btn-xs') - ]) + button(page_link_to('admin_rooms') . '&show=delete&id=' . $room['RID'], _("delete"), 'btn-xs') + ]) ]; - } - $room = null; + } + $room = null; - if (isset($_REQUEST['show'])) { - $msg = ""; - $name = ""; - $from_pentabarf = ""; - $public = 'Y'; - $number = ""; + if (isset($_REQUEST['show'])) { + $msg = ""; + $name = ""; + $from_pentabarf = ""; + $public = 'Y'; + $number = ""; - $angeltypes_source = sql_select("SELECT * FROM `AngelTypes` ORDER BY `name`"); - $angeltypes = []; - $angeltypes_count = []; - foreach ($angeltypes_source as $angeltype) { - $angeltypes[$angeltype['id']] = $angeltype['name']; - $angeltypes_count[$angeltype['id']] = 0; - } + $angeltypes_source = sql_select("SELECT * FROM `AngelTypes` ORDER BY `name`"); + $angeltypes = []; + $angeltypes_count = []; + foreach ($angeltypes_source as $angeltype) { + $angeltypes[$angeltype['id']] = $angeltype['name']; + $angeltypes_count[$angeltype['id']] = 0; + } - if (test_request_int('id')) { - $room = Room($_REQUEST['id']); - if ($room === false) { - engelsystem_error("Unable to load room."); - } - if ($room == null) { - redirect(page_link_to('admin_rooms')); - } - - $room_id = $_REQUEST['id']; - $name = $room['Name']; - $from_pentabarf = $room['FromPentabarf']; - $public = $room['show']; - $number = $room['Number']; - - $needed_angeltypes = sql_select("SELECT * FROM `NeededAngelTypes` WHERE `room_id`='" . sql_escape($room_id) . "'"); - foreach ($needed_angeltypes as $needed_angeltype) { - $angeltypes_count[$needed_angeltype['angel_type_id']] = $needed_angeltype['count']; - } - } - - if ($_REQUEST['show'] == 'edit') { - if (isset($_REQUEST['submit'])) { - $valid = true; - - if (isset($_REQUEST['name']) && strlen(strip_request_item('name')) > 0) { - $name = strip_request_item('name'); - if (isset($room) && sql_num_query("SELECT * FROM `Room` WHERE `Name`='" . sql_escape($name) . "' AND NOT `RID`=" . sql_escape($room_id)) > 0) { - $valid = false; - $msg .= error(_("This name is already in use."), true); - } - } else { - $valid = false; - $msg .= error(_("Please enter a name."), true); - } - - if (isset($_REQUEST['from_pentabarf'])) { - $from_pentabarf = 'Y'; - } else { - $from_pentabarf = ''; - } - - if (isset($_REQUEST['public'])) { - $public = 'Y'; - } else { - $public = ''; - } - - if (isset($_REQUEST['number'])) { - $number = strip_request_item('number'); - } else { - $valid = false; - } - - foreach ($angeltypes as $angeltype_id => $angeltype) { - if (isset($_REQUEST['angeltype_count_' . $angeltype_id]) && preg_match("/^[0-9]{1,4}$/", $_REQUEST['angeltype_count_' . $angeltype_id])) { - $angeltypes_count[$angeltype_id] = $_REQUEST['angeltype_count_' . $angeltype_id]; - } else { - $valid = false; - $msg .= error(sprintf(_("Please enter needed angels for type %s.", $angeltype)), true); - } - } - - if ($valid) { - if (isset($room_id)) { - sql_query("UPDATE `Room` SET `Name`='" . sql_escape($name) . "', `FromPentabarf`='" . sql_escape($from_pentabarf) . "', `show`='" . sql_escape($public) . "', `Number`='" . sql_escape($number) . "' WHERE `RID`='" . sql_escape($room_id) . "' LIMIT 1"); - engelsystem_log("Room updated: " . $name . ", pentabarf import: " . $from_pentabarf . ", public: " . $public . ", number: " . $number); - } else { - $room_id = Room_create($name, $from_pentabarf, $public, $number); - if ($room_id === false) { - engelsystem_error("Unable to create room."); + if (test_request_int('id')) { + $room = Room($_REQUEST['id']); + if ($room === false) { + engelsystem_error("Unable to load room."); } - engelsystem_log("Room created: " . $name . ", pentabarf import: " . $from_pentabarf . ", public: " . $public . ", number: " . $number); - } - - NeededAngelTypes_delete_by_room($room_id); - $needed_angeltype_info = []; - foreach ($angeltypes_count as $angeltype_id => $angeltype_count) { - $angeltype = AngelType($angeltype_id); - if ($angeltype != null) { - NeededAngelType_add(null, $angeltype_id, $room_id, $angeltype_count); - $needed_angeltype_info[] = $angeltype['name'] . ": " . $angeltype_count; + if ($room == null) { + redirect(page_link_to('admin_rooms')); + } + + $room_id = $_REQUEST['id']; + $name = $room['Name']; + $from_pentabarf = $room['FromPentabarf']; + $public = $room['show']; + $number = $room['Number']; + + $needed_angeltypes = sql_select("SELECT * FROM `NeededAngelTypes` WHERE `room_id`='" . sql_escape($room_id) . "'"); + foreach ($needed_angeltypes as $needed_angeltype) { + $angeltypes_count[$needed_angeltype['angel_type_id']] = $needed_angeltype['count']; } - } - - engelsystem_log("Set needed angeltypes of room " . $name . " to: " . join(", ", $needed_angeltype_info)); - success(_("Room saved.")); - redirect(page_link_to("admin_rooms")); } - } - $angeltypes_count_form = []; - foreach ($angeltypes as $angeltype_id => $angeltype) { - $angeltypes_count_form[] = div('col-lg-4 col-md-6 col-xs-6', [ - form_spinner('angeltype_count_' . $angeltype_id, $angeltype, $angeltypes_count[$angeltype_id]) + + if ($_REQUEST['show'] == 'edit') { + if (isset($_REQUEST['submit'])) { + $valid = true; + + if (isset($_REQUEST['name']) && strlen(strip_request_item('name')) > 0) { + $name = strip_request_item('name'); + if (isset($room) && sql_num_query("SELECT * FROM `Room` WHERE `Name`='" . sql_escape($name) . "' AND NOT `RID`=" . sql_escape($room_id)) > 0) { + $valid = false; + $msg .= error(_("This name is already in use."), true); + } + } else { + $valid = false; + $msg .= error(_("Please enter a name."), true); + } + + if (isset($_REQUEST['from_pentabarf'])) { + $from_pentabarf = 'Y'; + } else { + $from_pentabarf = ''; + } + + if (isset($_REQUEST['public'])) { + $public = 'Y'; + } else { + $public = ''; + } + + if (isset($_REQUEST['number'])) { + $number = strip_request_item('number'); + } else { + $valid = false; + } + + foreach ($angeltypes as $angeltype_id => $angeltype) { + if (isset($_REQUEST['angeltype_count_' . $angeltype_id]) && preg_match("/^[0-9]{1,4}$/", $_REQUEST['angeltype_count_' . $angeltype_id])) { + $angeltypes_count[$angeltype_id] = $_REQUEST['angeltype_count_' . $angeltype_id]; + } else { + $valid = false; + $msg .= error(sprintf(_("Please enter needed angels for type %s.", $angeltype)), true); + } + } + + if ($valid) { + if (isset($room_id)) { + sql_query("UPDATE `Room` SET `Name`='" . sql_escape($name) . "', `FromPentabarf`='" . sql_escape($from_pentabarf) . "', `show`='" . sql_escape($public) . "', `Number`='" . sql_escape($number) . "' WHERE `RID`='" . sql_escape($room_id) . "' LIMIT 1"); + engelsystem_log("Room updated: " . $name . ", pentabarf import: " . $from_pentabarf . ", public: " . $public . ", number: " . $number); + } else { + $room_id = Room_create($name, $from_pentabarf, $public, $number); + if ($room_id === false) { + engelsystem_error("Unable to create room."); + } + engelsystem_log("Room created: " . $name . ", pentabarf import: " . $from_pentabarf . ", public: " . $public . ", number: " . $number); + } + + NeededAngelTypes_delete_by_room($room_id); + $needed_angeltype_info = []; + foreach ($angeltypes_count as $angeltype_id => $angeltype_count) { + $angeltype = AngelType($angeltype_id); + if ($angeltype != null) { + NeededAngelType_add(null, $angeltype_id, $room_id, $angeltype_count); + $needed_angeltype_info[] = $angeltype['name'] . ": " . $angeltype_count; + } + } + + engelsystem_log("Set needed angeltypes of room " . $name . " to: " . join(", ", $needed_angeltype_info)); + success(_("Room saved.")); + redirect(page_link_to("admin_rooms")); + } + } + $angeltypes_count_form = []; + foreach ($angeltypes as $angeltype_id => $angeltype) { + $angeltypes_count_form[] = div('col-lg-4 col-md-6 col-xs-6', [ + form_spinner('angeltype_count_' . $angeltype_id, $angeltype, $angeltypes_count[$angeltype_id]) ]); - } + } - return page_with_title(admin_rooms_title(), [ + return page_with_title(admin_rooms_title(), [ buttons([ - button(page_link_to('admin_rooms'), _("back"), 'back') + button(page_link_to('admin_rooms'), _("back"), 'back') ]), $msg, form([ @@ -143,54 +145,53 @@ function admin_rooms() { form_text('name', _("Name"), $name), form_checkbox('from_pentabarf', _("Frab import"), $from_pentabarf), form_checkbox('public', _("Public"), $public), - form_text('number', _("Room number"), $number) + form_text('number', _("Room number"), $number) ]), div('col-md-6', [ div('row', [ div('col-md-12', [ - form_info(_("Needed angels:")) + form_info(_("Needed angels:")) ]), - join($angeltypes_count_form) - ]) - ]) + join($angeltypes_count_form) + ]) + ]) ]), - form_submit('submit', _("Save")) - ]) + form_submit('submit', _("Save")) + ]) ]); - } elseif ($_REQUEST['show'] == 'delete') { - if (isset($_REQUEST['ack'])) { - if (! Room_delete($room_id)) { - engelsystem_error("Unable to delete room."); - } + } elseif ($_REQUEST['show'] == 'delete') { + if (isset($_REQUEST['ack'])) { + if (! Room_delete($room_id)) { + engelsystem_error("Unable to delete room."); + } - engelsystem_log("Room deleted: " . $name); - success(sprintf(_("Room %s deleted."), $name)); - redirect(page_link_to('admin_rooms')); - } + engelsystem_log("Room deleted: " . $name); + success(sprintf(_("Room %s deleted."), $name)); + redirect(page_link_to('admin_rooms')); + } - return page_with_title(admin_rooms_title(), [ + return page_with_title(admin_rooms_title(), [ buttons([ - button(page_link_to('admin_rooms'), _("back"), 'back') + button(page_link_to('admin_rooms'), _("back"), 'back') ]), sprintf(_("Do you want to delete room %s?"), $name), buttons([ - button(page_link_to('admin_rooms') . '&show=delete&id=' . $room_id . '&ack', _("Delete"), 'delete') - ]) + button(page_link_to('admin_rooms') . '&show=delete&id=' . $room_id . '&ack', _("Delete"), 'delete') + ]) ]); + } } - } - return page_with_title(admin_rooms_title(), [ + return page_with_title(admin_rooms_title(), [ buttons([ - button(page_link_to('admin_rooms') . '&show=edit', _("add")) + button(page_link_to('admin_rooms') . '&show=edit', _("add")) ]), msg(), table([ 'name' => _("Name"), 'from_pentabarf' => _("Frab import"), 'public' => _("Public"), - 'actions' => "" - ], $rooms) + 'actions' => "" + ], $rooms) ]); } -?> diff --git a/includes/pages/admin_shifts.php b/includes/pages/admin_shifts.php index 42a8c682..79c9874a 100644 --- a/includes/pages/admin_shifts.php +++ b/includes/pages/admin_shifts.php @@ -1,257 +1,259 @@ = $end) { - $valid = false; - error(_('The shifts end has to be after its start.')); - } - - if (isset($_REQUEST['mode'])) { - if ($_REQUEST['mode'] == 'single') { - $mode = 'single'; - } elseif ($_REQUEST['mode'] == 'multi') { - if (isset($_REQUEST['length']) && preg_match("/^[0-9]+$/", trim($_REQUEST['length']))) { - $mode = 'multi'; - $length = trim($_REQUEST['length']); - } else { - $valid = false; - error(_('Please enter a shift duration in minutes.')); - } - } elseif ($_REQUEST['mode'] == 'variable') { - if (isset($_REQUEST['change_hours']) && preg_match("/^([0-9]{2}(,|$))/", trim(str_replace(" ", "", $_REQUEST['change_hours'])))) { - $mode = 'variable'; - $change_hours = array_map('trim', explode(",", $_REQUEST['change_hours'])); - } else { - $valid = false; - error(_('Please split the shift-change hours by colons.')); - } - } - } else { - $valid = false; - error(_('Please select a mode.')); - } - - if (isset($_REQUEST['angelmode'])) { - if ($_REQUEST['angelmode'] == 'location') { - $angelmode = 'location'; - } elseif ($_REQUEST['angelmode'] == 'manually') { - $angelmode = 'manually'; - foreach ($types as $type) { - if (isset($_REQUEST['type_' . $type['id']]) && preg_match("/^[0-9]+$/", trim($_REQUEST['type_' . $type['id']]))) { - $needed_angel_types[$type['id']] = trim($_REQUEST['type_' . $type['id']]); - } else { - $valid = false; - error(sprintf(_('Please check the needed angels for team %s.'), $type['name'])); - } - } - if (array_sum($needed_angel_types) == 0) { - $valid = false; - error(_('There are 0 angels needed. Please enter the amounts of needed angels.')); - } - } else { $valid = false; - error(_('Please select a mode for needed angels.')); - } - } else { - $valid = false; - error(_('Please select needed angels.')); + $rid = $rooms[0]['RID']; + error(_('Please select a location.')); } + if (isset($_REQUEST['start']) && $tmp = parse_date("Y-m-d H:i", $_REQUEST['start'])) { + $start = $tmp; + } else { + $valid = false; + error(_('Please select a start time.')); + } + + if (isset($_REQUEST['end']) && $tmp = parse_date("Y-m-d H:i", $_REQUEST['end'])) { + $end = $tmp; + } else { + $valid = false; + error(_('Please select an end time.')); + } + + if ($start >= $end) { + $valid = false; + error(_('The shifts end has to be after its start.')); + } + + if (isset($_REQUEST['mode'])) { + if ($_REQUEST['mode'] == 'single') { + $mode = 'single'; + } elseif ($_REQUEST['mode'] == 'multi') { + if (isset($_REQUEST['length']) && preg_match("/^[0-9]+$/", trim($_REQUEST['length']))) { + $mode = 'multi'; + $length = trim($_REQUEST['length']); + } else { + $valid = false; + error(_('Please enter a shift duration in minutes.')); + } + } elseif ($_REQUEST['mode'] == 'variable') { + if (isset($_REQUEST['change_hours']) && preg_match("/^([0-9]{2}(,|$))/", trim(str_replace(" ", "", $_REQUEST['change_hours'])))) { + $mode = 'variable'; + $change_hours = array_map('trim', explode(",", $_REQUEST['change_hours'])); + } else { + $valid = false; + error(_('Please split the shift-change hours by colons.')); + } + } + } else { + $valid = false; + error(_('Please select a mode.')); + } + + if (isset($_REQUEST['angelmode'])) { + if ($_REQUEST['angelmode'] == 'location') { + $angelmode = 'location'; + } elseif ($_REQUEST['angelmode'] == 'manually') { + $angelmode = 'manually'; + foreach ($types as $type) { + if (isset($_REQUEST['type_' . $type['id']]) && preg_match("/^[0-9]+$/", trim($_REQUEST['type_' . $type['id']]))) { + $needed_angel_types[$type['id']] = trim($_REQUEST['type_' . $type['id']]); + } else { + $valid = false; + error(sprintf(_('Please check the needed angels for team %s.'), $type['name'])); + } + } + if (array_sum($needed_angel_types) == 0) { + $valid = false; + error(_('There are 0 angels needed. Please enter the amounts of needed angels.')); + } + } else { + $valid = false; + error(_('Please select a mode for needed angels.')); + } + } else { + $valid = false; + error(_('Please select needed angels.')); + } + // Beim Zurück-Knopf das Formular zeigen if (isset($_REQUEST['back'])) { - $valid = false; + $valid = false; } // Alle Eingaben in Ordnung if ($valid) { - if ($angelmode == 'location') { - $needed_angel_types = []; - $needed_angel_types_location = sql_select("SELECT * FROM `NeededAngelTypes` WHERE `room_id`='" . sql_escape($rid) . "'"); - foreach ($needed_angel_types_location as $type) { - $needed_angel_types[$type['angel_type_id']] = $type['count']; + if ($angelmode == 'location') { + $needed_angel_types = []; + $needed_angel_types_location = sql_select("SELECT * FROM `NeededAngelTypes` WHERE `room_id`='" . sql_escape($rid) . "'"); + foreach ($needed_angel_types_location as $type) { + $needed_angel_types[$type['angel_type_id']] = $type['count']; + } } - } - $shifts = []; - if ($mode == 'single') { - $shifts[] = [ + $shifts = []; + if ($mode == 'single') { + $shifts[] = [ 'start' => $start, 'end' => $end, 'RID' => $rid, 'title' => $title, - 'shifttype_id' => $shifttype_id + 'shifttype_id' => $shifttype_id ]; - } elseif ($mode == 'multi') { - $shift_start = $start; - do { - $shift_end = $shift_start + $length * 60; + } elseif ($mode == 'multi') { + $shift_start = $start; + do { + $shift_end = $shift_start + $length * 60; - if ($shift_end > $end) { - $shift_end = $end; - } - if ($shift_start >= $shift_end) { - break; - } + if ($shift_end > $end) { + $shift_end = $end; + } + if ($shift_start >= $shift_end) { + break; + } - $shifts[] = [ + $shifts[] = [ 'start' => $shift_start, 'end' => $shift_end, 'RID' => $rid, 'title' => $title, - 'shifttype_id' => $shifttype_id + 'shifttype_id' => $shifttype_id ]; - $shift_start = $shift_end; - } while ($shift_end < $end); - } elseif ($mode == 'variable') { - rsort($change_hours); - $day = parse_date("Y-m-d H:i", date("Y-m-d", $start) . " 00:00"); - $change_index = 0; + $shift_start = $shift_end; + } while ($shift_end < $end); + } elseif ($mode == 'variable') { + rsort($change_hours); + $day = parse_date("Y-m-d H:i", date("Y-m-d", $start) . " 00:00"); + $change_index = 0; // Ersten/nächsten passenden Schichtwechsel suchen foreach ($change_hours as $i => $change_hour) { - if ($start < $day + $change_hour * 60 * 60) { - $change_index = $i; - } elseif ($start == $day + $change_hour * 60 * 60) { - // Start trifft Schichtwechsel + if ($start < $day + $change_hour * 60 * 60) { + $change_index = $i; + } elseif ($start == $day + $change_hour * 60 * 60) { + // Start trifft Schichtwechsel $change_index = ($i + count($change_hours) - 1) % count($change_hours); - break; - } else { - break; - } + break; + } else { + break; + } } - $shift_start = $start; - do { - $day = parse_date("Y-m-d H:i", date("Y-m-d", $shift_start) . " 00:00"); - $shift_end = $day + $change_hours[$change_index] * 60 * 60; + $shift_start = $start; + do { + $day = parse_date("Y-m-d H:i", date("Y-m-d", $shift_start) . " 00:00"); + $shift_end = $day + $change_hours[$change_index] * 60 * 60; - if ($shift_end > $end) { - $shift_end = $end; - } - if ($shift_start >= $shift_end) { - $shift_end += 24 * 60 * 60; - } + if ($shift_end > $end) { + $shift_end = $end; + } + if ($shift_start >= $shift_end) { + $shift_end += 24 * 60 * 60; + } - $shifts[] = [ + $shifts[] = [ 'start' => $shift_start, 'end' => $shift_end, 'RID' => $rid, 'title' => $title, - 'shifttype_id' => $shifttype_id + 'shifttype_id' => $shifttype_id ]; - $shift_start = $shift_end; - $change_index = ($change_index + count($change_hours) - 1) % count($change_hours); - } while ($shift_end < $end); - } + $shift_start = $shift_end; + $change_index = ($change_index + count($change_hours) - 1) % count($change_hours); + } while ($shift_end < $end); + } - $shifts_table = []; - foreach ($shifts as $shift) { - $shifts_table_entry = [ + $shifts_table = []; + foreach ($shifts as $shift) { + $shifts_table_entry = [ 'timeslot' => ' ' . date("Y-m-d H:i", $shift['start']) . ' - ' . date("H:i", $shift['end']) . '
' . Room_name_render(Room($shift['RID'])), 'title' => ShiftType_name_render(ShiftType($shifttype_id)) . ($shift['title'] ? '
' . $shift['title'] : ''), - 'needed_angels' => '' + 'needed_angels' => '' ]; - foreach ($types as $type) { - if (isset($needed_angel_types[$type['id']]) && $needed_angel_types[$type['id']] > 0) { - $shifts_table_entry['needed_angels'] .= '' . AngelType_name_render($type) . ': ' . $needed_angel_types[$type['id']] . '
'; - } + foreach ($types as $type) { + if (isset($needed_angel_types[$type['id']]) && $needed_angel_types[$type['id']] > 0) { + $shifts_table_entry['needed_angels'] .= '' . AngelType_name_render($type) . ': ' . $needed_angel_types[$type['id']] . '
'; + } + } + $shifts_table[] = $shifts_table_entry; } - $shifts_table[] = $shifts_table_entry; - } // Fürs Anlegen zwischenspeichern: $_SESSION['admin_shifts_shifts'] = $shifts; - $_SESSION['admin_shifts_types'] = $needed_angel_types; + $_SESSION['admin_shifts_types'] = $needed_angel_types; - $hidden_types = ""; - foreach ($needed_angel_types as $type_id => $count) { - $hidden_types .= form_hidden('type_' . $type_id, $count); - } - return page_with_title(_("Preview"), [ + $hidden_types = ""; + foreach ($needed_angel_types as $type_id => $count) { + $hidden_types .= form_hidden('type_' . $type_id, $count); + } + return page_with_title(_("Preview"), [ form([ $hidden_types, form_hidden('shifttype_id', $shifttype_id), @@ -267,53 +269,53 @@ function admin_shifts() { table([ 'timeslot' => _('Time and location'), 'title' => _('Type and title'), - 'needed_angels' => _('Needed angels') + 'needed_angels' => _('Needed angels') ], $shifts_table), - form_submit('submit', _("Save")) - ]) + form_submit('submit', _("Save")) + ]) ]); } - } elseif (isset($_REQUEST['submit'])) { - if (! is_array($_SESSION['admin_shifts_shifts']) || ! is_array($_SESSION['admin_shifts_types'])) { - redirect(page_link_to('admin_shifts')); - } - - foreach ($_SESSION['admin_shifts_shifts'] as $shift) { - $shift['URL'] = null; - $shift['PSID'] = null; - $shift_id = Shift_create($shift); - if ($shift_id === false) { - engelsystem_error('Unable to create shift.'); - } - - engelsystem_log("Shift created: " . $shifttypes[$shift['shifttype_id']] . " with title " . $shift['title'] . " from " . date("Y-m-d H:i", $shift['start']) . " to " . date("Y-m-d H:i", $shift['end'])); - $needed_angel_types_info = []; - foreach ($_SESSION['admin_shifts_types'] as $type_id => $count) { - $angel_type_source = sql_select("SELECT * FROM `AngelTypes` WHERE `id`='" . sql_escape($type_id) . "' LIMIT 1"); - if (count($angel_type_source) > 0) { - sql_query("INSERT INTO `NeededAngelTypes` SET `shift_id`='" . sql_escape($shift_id) . "', `angel_type_id`='" . sql_escape($type_id) . "', `count`='" . sql_escape($count) . "'"); - $needed_angel_types_info[] = $angel_type_source[0]['name'] . ": " . $count; + } elseif (isset($_REQUEST['submit'])) { + if (! is_array($_SESSION['admin_shifts_shifts']) || ! is_array($_SESSION['admin_shifts_types'])) { + redirect(page_link_to('admin_shifts')); } - } - } - engelsystem_log("Shift needs following angel types: " . join(", ", $needed_angel_types_info)); - success("Schichten angelegt."); - redirect(page_link_to('admin_shifts')); - } else { - unset($_SESSION['admin_shifts_shifts']); - unset($_SESSION['admin_shifts_types']); - } + foreach ($_SESSION['admin_shifts_shifts'] as $shift) { + $shift['URL'] = null; + $shift['PSID'] = null; + $shift_id = Shift_create($shift); + if ($shift_id === false) { + engelsystem_error('Unable to create shift.'); + } + + engelsystem_log("Shift created: " . $shifttypes[$shift['shifttype_id']] . " with title " . $shift['title'] . " from " . date("Y-m-d H:i", $shift['start']) . " to " . date("Y-m-d H:i", $shift['end'])); + $needed_angel_types_info = []; + foreach ($_SESSION['admin_shifts_types'] as $type_id => $count) { + $angel_type_source = sql_select("SELECT * FROM `AngelTypes` WHERE `id`='" . sql_escape($type_id) . "' LIMIT 1"); + if (count($angel_type_source) > 0) { + sql_query("INSERT INTO `NeededAngelTypes` SET `shift_id`='" . sql_escape($shift_id) . "', `angel_type_id`='" . sql_escape($type_id) . "', `count`='" . sql_escape($count) . "'"); + $needed_angel_types_info[] = $angel_type_source[0]['name'] . ": " . $count; + } + } + } + + engelsystem_log("Shift needs following angel types: " . join(", ", $needed_angel_types_info)); + success("Schichten angelegt."); + redirect(page_link_to('admin_shifts')); + } else { + unset($_SESSION['admin_shifts_shifts']); + unset($_SESSION['admin_shifts_types']); + } - if (! isset($_REQUEST['rid'])) { - $_REQUEST['rid'] = null; - } - $angel_types = ""; - foreach ($types as $type) { - $angel_types .= '
' . form_spinner('type_' . $type['id'], $type['name'], $needed_angel_types[$type['id']]) . '
'; - } + if (! isset($_REQUEST['rid'])) { + $_REQUEST['rid'] = null; + } + $angel_types = ""; + foreach ($types as $type) { + $angel_types .= '
' . form_spinner('type_' . $type['id'], $type['name'], $needed_angel_types[$type['id']]) . '
'; + } - return page_with_title(admin_shifts_title(), [ + return page_with_title(admin_shifts_title(), [ msg(), form([ form_select('shifttype_id', _('Shifttype'), $shifttypes, $shifttype_id), @@ -328,19 +330,18 @@ function admin_shifts() { form_radio('mode', _("Create multiple shifts"), $mode == 'multi', 'multi'), form_text('length', _("Length"), ! empty($_REQUEST['length']) ? $_REQUEST['length'] : '120'), form_radio('mode', _("Create multiple shifts with variable length"), $mode == 'variable', 'variable'), - form_text('change_hours', _("Shift change hours"), ! empty($_REQUEST['change_hours']) ? $_REQUEST['change_hours'] : '00, 04, 08, 10, 12, 14, 16, 18, 20, 22') + form_text('change_hours', _("Shift change hours"), ! empty($_REQUEST['change_hours']) ? $_REQUEST['change_hours'] : '00, 04, 08, 10, 12, 14, 16, 18, 20, 22') ]), div('col-md-6', [ form_info(_("Needed angels"), ''), form_radio('angelmode', _("Take needed angels from room settings"), $angelmode == 'location', 'location'), form_radio('angelmode', _("The following angels are needed"), $angelmode == 'manually', 'manually'), div('row', [ - $angel_types - ]) - ]) + $angel_types + ]) + ]) ]), - form_submit('preview', _("Preview")) - ]) + form_submit('preview', _("Preview")) + ]) ]); } -?> diff --git a/includes/pages/admin_user.php b/includes/pages/admin_user.php index 737bd91f..e84e3089 100644 --- a/includes/pages/admin_user.php +++ b/includes/pages/admin_user.php @@ -1,169 +1,171 @@ " . "hier kannst du den Eintrag ändern. Unter dem Punkt 'Gekommen' " . "wird der Engel als anwesend markiert, ein Ja bei Aktiv bedeutet, " . "dass der Engel aktiv war und damit ein Anspruch auf ein T-Shirt hat. " . "Wenn T-Shirt ein 'Ja' enthält, bedeutet dies, dass der Engel " . "bereits sein T-Shirt erhalten hat.

\n"; + $html .= "Hallo,
" . "hier kannst du den Eintrag ändern. Unter dem Punkt 'Gekommen' " . "wird der Engel als anwesend markiert, ein Ja bei Aktiv bedeutet, " . "dass der Engel aktiv war und damit ein Anspruch auf ein T-Shirt hat. " . "Wenn T-Shirt ein 'Ja' enthält, bedeutet dies, dass der Engel " . "bereits sein T-Shirt erhalten hat.

\n"; - $html .= "
\n"; - $html .= "\n"; - $html .= "\n"; - $html .= ""; - $html .= "\n"; - $html .= "
\n"; - $html .= "\n"; - $html .= " \n"; - $html .= " \n"; - $html .= " \n"; - $html .= " \n"; - $html .= " \n"; - $html .= " \n"; - $html .= " \n"; - $html .= " \n"; - if ($user_source['email_by_human_allowed']) { - $html .= " \n"; - } - $html .= " \n"; - $html .= " \n"; + $html .= "\n"; + $html .= "
Nick" . "
lastLogIn" . date("Y-m-d H:i", $user_source['lastLogIn']) . "
Name" . "
Vorname" . "
Alter" . "
Telefon" . "
Handy" . "
DECT" . "
email" . "
jabber" . "
Size" . html_select_key('size', 'eSize', $tshirt_sizes, $user_source['Size']) . "
\n"; + $html .= "\n"; + $html .= ""; + $html .= "
\n"; + $html .= "\n"; + $html .= " \n"; + $html .= " \n"; + $html .= " \n"; + $html .= " \n"; + $html .= " \n"; + $html .= " \n"; + $html .= " \n"; + $html .= " \n"; + if ($user_source['email_by_human_allowed']) { + $html .= " \n"; + } + $html .= " \n"; + $html .= " \n"; - $options = [ + $options = [ '1' => _("Yes"), - '0' => _("No") + '0' => _("No") ]; // Gekommen? $html .= " \n"; + $html .= html_options('eGekommen', $options, $user_source['Gekommen']) . "\n"; // Aktiv? $html .= " \n"; + $html .= html_options('eAktiv', $options, $user_source['Aktiv']) . "\n"; // Aktiv erzwingen if (in_array('admin_active', $privileges)) { - $html .= " \n"; + $html .= " \n"; } // T-Shirt bekommen? $html .= " \n"; + $html .= html_options('eTshirt', $options, $user_source['Tshirt']) . "\n"; - $html .= " \n"; + $html .= " \n"; - $html .= "
Nick" . "
lastLogIn" . date("Y-m-d H:i", $user_source['lastLogIn']) . "
Name" . "
Vorname" . "
Alter" . "
Telefon" . "
Handy" . "
DECT" . "
email" . "
jabber" . "
Size" . html_select_key('size', 'eSize', $tshirt_sizes, $user_source['Size']) . "
Gekommen\n"; - $html .= html_options('eGekommen', $options, $user_source['Gekommen']) . "
Aktiv\n"; - $html .= html_options('eAktiv', $options, $user_source['Aktiv']) . "
" . _("Force active") . "\n"; - $html .= html_options('force_active', $options, $user_source['force_active']) . "
" . _("Force active") . "\n"; + $html .= html_options('force_active', $options, $user_source['force_active']) . "
T-Shirt\n"; - $html .= html_options('eTshirt', $options, $user_source['Tshirt']) . "
Hometown" . "
Hometown" . "
\n
\n
\n
\n"; - $html .= "\n"; - $html .= "
"; + $html .= "\n"; + $html .= "\n
\n"; + $html .= "\n"; + $html .= ""; - $html .= "
"; + $html .= "
"; - $html .= form_info('', _('Please visit the angeltypes page or the users profile to manage users angeltypes.')); + $html .= form_info('', _('Please visit the angeltypes page or the users profile to manage users angeltypes.')); - $html .= "Hier kannst Du das Passwort dieses Engels neu setzen:
\n"; - $html .= "\n"; - $html .= " \n"; - $html .= " \n"; + $html .= "Hier kannst Du das Passwort dieses Engels neu setzen:\n"; + $html .= "
Passwort" . "
Wiederholung" . "
\n"; + $html .= " \n"; + $html .= " \n"; - $html .= "
Passwort" . "
Wiederholung" . "
"; - $html .= "\n"; - $html .= "
"; + $html .= ""; + $html .= "\n"; + $html .= ""; - $html .= "
"; + $html .= "
"; - $my_highest_group = sql_select("SELECT * FROM `UserGroups` WHERE `uid`='" . sql_escape($user['UID']) . "' ORDER BY `group_id` LIMIT 1"); - if (count($my_highest_group) > 0) { - $my_highest_group = $my_highest_group[0]['group_id']; - } + $my_highest_group = sql_select("SELECT * FROM `UserGroups` WHERE `uid`='" . sql_escape($user['UID']) . "' ORDER BY `group_id` LIMIT 1"); + if (count($my_highest_group) > 0) { + $my_highest_group = $my_highest_group[0]['group_id']; + } - $his_highest_group = sql_select("SELECT * FROM `UserGroups` WHERE `uid`='" . sql_escape($user_id) . "' ORDER BY `group_id` LIMIT 1"); - if (count($his_highest_group) > 0) { - $his_highest_group = $his_highest_group[0]['group_id']; - } + $his_highest_group = sql_select("SELECT * FROM `UserGroups` WHERE `uid`='" . sql_escape($user_id) . "' ORDER BY `group_id` LIMIT 1"); + if (count($his_highest_group) > 0) { + $his_highest_group = $his_highest_group[0]['group_id']; + } - if ($user_id != $user['UID'] && $my_highest_group <= $his_highest_group) { - $html .= "Hier kannst Du die Benutzergruppen des Engels festlegen:
\n"; - $html .= ''; + if ($user_id != $user['UID'] && $my_highest_group <= $his_highest_group) { + $html .= "Hier kannst Du die Benutzergruppen des Engels festlegen:\n"; + $html .= '
'; - $groups = sql_select("SELECT * FROM `Groups` LEFT OUTER JOIN `UserGroups` ON (`UserGroups`.`group_id` = `Groups`.`UID` AND `UserGroups`.`uid` = '" . sql_escape($user_id) . "') WHERE `Groups`.`UID` >= '" . sql_escape($my_highest_group) . "' ORDER BY `Groups`.`Name`"); - foreach ($groups as $group) { - $html .= ''; - } + $groups = sql_select("SELECT * FROM `Groups` LEFT OUTER JOIN `UserGroups` ON (`UserGroups`.`group_id` = `Groups`.`UID` AND `UserGroups`.`uid` = '" . sql_escape($user_id) . "') WHERE `Groups`.`UID` >= '" . sql_escape($my_highest_group) . "' ORDER BY `Groups`.`Name`"); + foreach ($groups as $group) { + $html .= ''; + } - $html .= '
' . $group['Name'] . '
' . $group['Name'] . '
'; + $html .= ''; - $html .= "\n"; - $html .= "
"; + $html .= "\n"; + $html .= ""; - $html .= "
"; - } + $html .= "
"; + } - $html .= buttons([ - button(user_delete_link($user_source), glyph('lock') . _("delete"), 'btn-danger') + $html .= buttons([ + button(user_delete_link($user_source), glyph('lock') . _("delete"), 'btn-danger') ]); - $html .= "
"; - } else { - switch ($_REQUEST['action']) { + $html .= "
"; + } else { + switch ($_REQUEST['action']) { case 'save_groups': if ($user_id != $user['UID']) { - $my_highest_group = sql_select("SELECT * FROM `UserGroups` WHERE `uid`='" . sql_escape($user['UID']) . "' ORDER BY `group_id`"); - $his_highest_group = sql_select("SELECT * FROM `UserGroups` WHERE `uid`='" . sql_escape($user_id) . "' ORDER BY `group_id`"); + $my_highest_group = sql_select("SELECT * FROM `UserGroups` WHERE `uid`='" . sql_escape($user['UID']) . "' ORDER BY `group_id`"); + $his_highest_group = sql_select("SELECT * FROM `UserGroups` WHERE `uid`='" . sql_escape($user_id) . "' ORDER BY `group_id`"); - if (count($my_highest_group) > 0 && (count($his_highest_group) == 0 || ($my_highest_group[0]['group_id'] <= $his_highest_group[0]['group_id']))) { - $groups_source = sql_select("SELECT * FROM `Groups` LEFT OUTER JOIN `UserGroups` ON (`UserGroups`.`group_id` = `Groups`.`UID` AND `UserGroups`.`uid` = '" . sql_escape($user_id) . "') WHERE `Groups`.`UID` >= '" . sql_escape($my_highest_group[0]['group_id']) . "' ORDER BY `Groups`.`Name`"); - $groups = []; - $grouplist = []; - foreach ($groups_source as $group) { - $groups[$group['UID']] = $group; - $grouplist[] = $group['UID']; - } + if (count($my_highest_group) > 0 && (count($his_highest_group) == 0 || ($my_highest_group[0]['group_id'] <= $his_highest_group[0]['group_id']))) { + $groups_source = sql_select("SELECT * FROM `Groups` LEFT OUTER JOIN `UserGroups` ON (`UserGroups`.`group_id` = `Groups`.`UID` AND `UserGroups`.`uid` = '" . sql_escape($user_id) . "') WHERE `Groups`.`UID` >= '" . sql_escape($my_highest_group[0]['group_id']) . "' ORDER BY `Groups`.`Name`"); + $groups = []; + $grouplist = []; + foreach ($groups_source as $group) { + $groups[$group['UID']] = $group; + $grouplist[] = $group['UID']; + } - if (! is_array($_REQUEST['groups'])) { - $_REQUEST['groups'] = []; - } + if (! is_array($_REQUEST['groups'])) { + $_REQUEST['groups'] = []; + } - sql_query("DELETE FROM `UserGroups` WHERE `uid`='" . sql_escape($user_id) . "'"); - $user_groups_info = []; - foreach ($_REQUEST['groups'] as $group) { - if (in_array($group, $grouplist)) { - sql_query("INSERT INTO `UserGroups` SET `uid`='" . sql_escape($user_id) . "', `group_id`='" . sql_escape($group) . "'"); - $user_groups_info[] = $groups[$group]['Name']; - } + sql_query("DELETE FROM `UserGroups` WHERE `uid`='" . sql_escape($user_id) . "'"); + $user_groups_info = []; + foreach ($_REQUEST['groups'] as $group) { + if (in_array($group, $grouplist)) { + sql_query("INSERT INTO `UserGroups` SET `uid`='" . sql_escape($user_id) . "', `group_id`='" . sql_escape($group) . "'"); + $user_groups_info[] = $groups[$group]['Name']; + } + } + $user_source = User($user_id); + engelsystem_log("Set groups of " . User_Nick_render($user_source) . " to: " . join(", ", $user_groups_info)); + $html .= success("Benutzergruppen gespeichert.", true); + } else { + $html .= error("Du kannst keine Engel mit mehr Rechten bearbeiten.", true); } - $user_source = User($user_id); - engelsystem_log("Set groups of " . User_Nick_render($user_source) . " to: " . join(", ", $user_groups_info)); - $html .= success("Benutzergruppen gespeichert.", true); - } else { - $html .= error("Du kannst keine Engel mit mehr Rechten bearbeiten.", true); - } } else { - $html .= error("Du kannst Deine eigenen Rechte nicht bearbeiten.", true); + $html .= error("Du kannst Deine eigenen Rechte nicht bearbeiten.", true); } break; case 'save': $force_active = $user['force_active']; if (in_array('admin_active', $privileges)) { - $force_active = $_REQUEST['force_active']; + $force_active = $_REQUEST['force_active']; } $SQL = "UPDATE `User` SET `Nick` = '" . sql_escape($_POST["eNick"]) . "', @@ -190,19 +192,18 @@ function admin_user() { case 'change_pw': if ($_REQUEST['new_pw'] != "" && $_REQUEST['new_pw'] == $_REQUEST['new_pw2']) { - set_password($user_id, $_REQUEST['new_pw']); - $user_source = User($user_id); - engelsystem_log("Set new password for " . User_Nick_render($user_source)); - $html .= success("Passwort neu gesetzt.", true); + set_password($user_id, $_REQUEST['new_pw']); + $user_source = User($user_id); + engelsystem_log("Set new password for " . User_Nick_render($user_source)); + $html .= success("Passwort neu gesetzt.", true); } else { - $html .= error("Die Eingaben müssen übereinstimmen und dürfen nicht leer sein!", true); + $html .= error("Die Eingaben müssen übereinstimmen und dürfen nicht leer sein!", true); } break; } - } + } - return page_with_title(_("Edit user"), [ - $html + return page_with_title(_("Edit user"), [ + $html ]); } -?> diff --git a/includes/pages/guest_credits.php b/includes/pages/guest_credits.php index cbdc3133..00b12f73 100644 --- a/includes/pages/guest_credits.php +++ b/includes/pages/guest_credits.php @@ -1,9 +1,10 @@ \ No newline at end of file diff --git a/includes/pages/guest_login.php b/includes/pages/guest_login.php index 54abe5ca..293fb891 100644 --- a/includes/pages/guest_login.php +++ b/includes/pages/guest_login.php @@ -1,156 +1,160 @@ 1) { - $nick = User_validate_Nick($_REQUEST['nick']); - if (sql_num_query("SELECT * FROM `User` WHERE `Nick`='" . sql_escape($nick) . "' LIMIT 1") > 0) { - $valid = false; - $msg .= error(sprintf(_("Your nick "%s" already exists."), $nick), true); - } - } else { - $valid = false; - $msg .= error(sprintf(_("Your nick "%s" is too short (min. 2 characters)."), User_validate_Nick($_REQUEST['nick'])), true); - } - - if (isset($_REQUEST['mail']) && strlen(strip_request_item('mail')) > 0) { - $mail = strip_request_item('mail'); - if (! check_email($mail)) { - $valid = false; - $msg .= error(_("E-mail address is not correct."), true); - } - } else { - $valid = false; - $msg .= error(_("Please enter your e-mail."), true); - } - - if (isset($_REQUEST['email_shiftinfo'])) { - $email_shiftinfo = true; - } - - if (isset($_REQUEST['email_by_human_allowed'])) { - $email_by_human_allowed = true; - } - - if (isset($_REQUEST['jabber']) && strlen(strip_request_item('jabber')) > 0) { - $jabber = strip_request_item('jabber'); - if (! check_email($jabber)) { - $valid = false; - $msg .= error(_("Please check your jabber account information."), true); - } - } - - if ($enable_tshirt_size) { - if (isset($_REQUEST['tshirt_size']) && isset($tshirt_sizes[$_REQUEST['tshirt_size']]) && $_REQUEST['tshirt_size'] != '') { - $tshirt_size = $_REQUEST['tshirt_size']; - } else { - $valid = false; - $msg .= error(_("Please select your shirt size."), true); - } - } - - if (isset($_REQUEST['password']) && strlen($_REQUEST['password']) >= $min_password_length) { - if ($_REQUEST['password'] != $_REQUEST['password2']) { - $valid = false; - $msg .= error(_("Your passwords don't match."), true); - } - } else { - $valid = false; - $msg .= error(sprintf(_("Your password is too short (please use at least %s characters)."), $min_password_length), true); - } - - if (isset($_REQUEST['planned_arrival_date'])) { - $tmp = parse_date("Y-m-d H:i", $_REQUEST['planned_arrival_date'] . " 00:00"); - $result = User_validate_planned_arrival_date($tmp); - $planned_arrival_date = $result->getValue(); - if (! $result->isValid()) { - $valid = false; - error(_("Please enter your planned date of arrival. It should be after the buildup start date and before teardown end date.")); - } - } - + $msg = ""; + $nick = ""; + $lastname = ""; + $prename = ""; + $age = ""; + $tel = ""; + $dect = ""; + $mobile = ""; + $mail = ""; + $email_shiftinfo = false; + $email_by_human_allowed = false; + $jabber = ""; + $hometown = ""; + $comment = ""; + $tshirt_size = ''; + $password_hash = ""; $selected_angel_types = []; - foreach (array_keys($angel_types) as $angel_type_id) { - if (isset($_REQUEST['angel_types_' . $angel_type_id])) { - $selected_angel_types[] = $angel_type_id; - } + $planned_arrival_date = null; + + $angel_types_source = AngelTypes(); + $angel_types = []; + foreach ($angel_types_source as $angel_type) { + $angel_types[$angel_type['id']] = $angel_type['name'] . ($angel_type['restricted'] ? " (restricted)" : ""); + if (! $angel_type['restricted']) { + $selected_angel_types[] = $angel_type['id']; + } } + + if (isset($_REQUEST['submit'])) { + $valid = true; + + if (isset($_REQUEST['nick']) && strlen(User_validate_Nick($_REQUEST['nick'])) > 1) { + $nick = User_validate_Nick($_REQUEST['nick']); + if (sql_num_query("SELECT * FROM `User` WHERE `Nick`='" . sql_escape($nick) . "' LIMIT 1") > 0) { + $valid = false; + $msg .= error(sprintf(_("Your nick "%s" already exists."), $nick), true); + } + } else { + $valid = false; + $msg .= error(sprintf(_("Your nick "%s" is too short (min. 2 characters)."), User_validate_Nick($_REQUEST['nick'])), true); + } + + if (isset($_REQUEST['mail']) && strlen(strip_request_item('mail')) > 0) { + $mail = strip_request_item('mail'); + if (! check_email($mail)) { + $valid = false; + $msg .= error(_("E-mail address is not correct."), true); + } + } else { + $valid = false; + $msg .= error(_("Please enter your e-mail."), true); + } + + if (isset($_REQUEST['email_shiftinfo'])) { + $email_shiftinfo = true; + } + + if (isset($_REQUEST['email_by_human_allowed'])) { + $email_by_human_allowed = true; + } + + if (isset($_REQUEST['jabber']) && strlen(strip_request_item('jabber')) > 0) { + $jabber = strip_request_item('jabber'); + if (! check_email($jabber)) { + $valid = false; + $msg .= error(_("Please check your jabber account information."), true); + } + } + + if ($enable_tshirt_size) { + if (isset($_REQUEST['tshirt_size']) && isset($tshirt_sizes[$_REQUEST['tshirt_size']]) && $_REQUEST['tshirt_size'] != '') { + $tshirt_size = $_REQUEST['tshirt_size']; + } else { + $valid = false; + $msg .= error(_("Please select your shirt size."), true); + } + } + + if (isset($_REQUEST['password']) && strlen($_REQUEST['password']) >= $min_password_length) { + if ($_REQUEST['password'] != $_REQUEST['password2']) { + $valid = false; + $msg .= error(_("Your passwords don't match."), true); + } + } else { + $valid = false; + $msg .= error(sprintf(_("Your password is too short (please use at least %s characters)."), $min_password_length), true); + } + + if (isset($_REQUEST['planned_arrival_date'])) { + $tmp = parse_date("Y-m-d H:i", $_REQUEST['planned_arrival_date'] . " 00:00"); + $result = User_validate_planned_arrival_date($tmp); + $planned_arrival_date = $result->getValue(); + if (! $result->isValid()) { + $valid = false; + error(_("Please enter your planned date of arrival. It should be after the buildup start date and before teardown end date.")); + } + } + + $selected_angel_types = []; + foreach (array_keys($angel_types) as $angel_type_id) { + if (isset($_REQUEST['angel_types_' . $angel_type_id])) { + $selected_angel_types[] = $angel_type_id; + } + } // Trivia if (isset($_REQUEST['lastname'])) { - $lastname = strip_request_item('lastname'); - } - if (isset($_REQUEST['prename'])) { - $prename = strip_request_item('prename'); - } - if (isset($_REQUEST['age']) && preg_match("/^[0-9]{0,4}$/", $_REQUEST['age'])) { - $age = strip_request_item('age'); - } - if (isset($_REQUEST['tel'])) { - $tel = strip_request_item('tel'); - } - if (isset($_REQUEST['dect'])) { - $dect = strip_request_item('dect'); - } - if (isset($_REQUEST['mobile'])) { - $mobile = strip_request_item('mobile'); - } - if (isset($_REQUEST['hometown'])) { - $hometown = strip_request_item('hometown'); - } - if (isset($_REQUEST['comment'])) { - $comment = strip_request_item_nl('comment'); + $lastname = strip_request_item('lastname'); } + if (isset($_REQUEST['prename'])) { + $prename = strip_request_item('prename'); + } + if (isset($_REQUEST['age']) && preg_match("/^[0-9]{0,4}$/", $_REQUEST['age'])) { + $age = strip_request_item('age'); + } + if (isset($_REQUEST['tel'])) { + $tel = strip_request_item('tel'); + } + if (isset($_REQUEST['dect'])) { + $dect = strip_request_item('dect'); + } + if (isset($_REQUEST['mobile'])) { + $mobile = strip_request_item('mobile'); + } + if (isset($_REQUEST['hometown'])) { + $hometown = strip_request_item('hometown'); + } + if (isset($_REQUEST['comment'])) { + $comment = strip_request_item_nl('comment'); + } - if ($valid) { - sql_query(" + if ($valid) { + sql_query(" INSERT INTO `User` SET `color`='" . sql_escape($default_theme) . "', `Nick`='" . sql_escape($nick) . "', @@ -175,45 +179,45 @@ function guest_register() { // Assign user-group and set password $user_id = sql_id(); - sql_query("INSERT INTO `UserGroups` SET `uid`='" . sql_escape($user_id) . "', `group_id`=-2"); - set_password($user_id, $_REQUEST['password']); + sql_query("INSERT INTO `UserGroups` SET `uid`='" . sql_escape($user_id) . "', `group_id`=-2"); + set_password($user_id, $_REQUEST['password']); // Assign angel-types $user_angel_types_info = []; - foreach ($selected_angel_types as $selected_angel_type_id) { - sql_query("INSERT INTO `UserAngelTypes` SET `user_id`='" . sql_escape($user_id) . "', `angeltype_id`='" . sql_escape($selected_angel_type_id) . "'"); - $user_angel_types_info[] = $angel_types[$selected_angel_type_id]; - } + foreach ($selected_angel_types as $selected_angel_type_id) { + sql_query("INSERT INTO `UserAngelTypes` SET `user_id`='" . sql_escape($user_id) . "', `angeltype_id`='" . sql_escape($selected_angel_type_id) . "'"); + $user_angel_types_info[] = $angel_types[$selected_angel_type_id]; + } - engelsystem_log("User " . User_Nick_render(User($user_id)) . " signed up as: " . join(", ", $user_angel_types_info)); - success(_("Angel registration successful!")); + engelsystem_log("User " . User_Nick_render(User($user_id)) . " signed up as: " . join(", ", $user_angel_types_info)); + success(_("Angel registration successful!")); // User is already logged in - that means a supporter has registered an angel. Return to register page. if (isset($user)) { - redirect(page_link_to('register')); + redirect(page_link_to('register')); } // If a welcome message is present, display registration success page. if ($event_config != null && $event_config['event_welcome_msg'] != null) { - return User_registration_success_view($event_config['event_welcome_msg']); + return User_registration_success_view($event_config['event_welcome_msg']); } - redirect('?'); + redirect('?'); + } } - } - $buildup_start_date = time(); - $teardown_end_date = null; - if ($event_config != null) { - if (isset($event_config['buildup_start_date'])) { - $buildup_start_date = $event_config['buildup_start_date']; + $buildup_start_date = time(); + $teardown_end_date = null; + if ($event_config != null) { + if (isset($event_config['buildup_start_date'])) { + $buildup_start_date = $event_config['buildup_start_date']; + } + if (isset($event_config['teardown_end_date'])) { + $teardown_end_date = $event_config['teardown_end_date']; + } } - if(isset($event_config['teardown_end_date'])) { - $teardown_end_date = $event_config['teardown_end_date']; - } - } - return page_with_title(register_title(), [ + return page_with_title(register_title(), [ _("By completing this form you're registering as a Chaos-Angel. This script will create you an account in the angel task scheduler."), $msg, msg(), @@ -222,131 +226,133 @@ function guest_register() { div('col-md-6', [ div('row', [ div('col-sm-4', [ - form_text('nick', _("Nick") . ' ' . entry_required(), $nick) + form_text('nick', _("Nick") . ' ' . entry_required(), $nick) ]), div('col-sm-8', [ form_email('mail', _("E-Mail") . ' ' . entry_required(), $mail), form_checkbox('email_shiftinfo', _("The engelsystem is allowed to send me an email (e.g. when my shifts change)"), $email_shiftinfo), - form_checkbox('email_by_human_allowed', _("Humans are allowed to send me an email (e.g. for ticket vouchers)"), $email_by_human_allowed) - ]) + form_checkbox('email_by_human_allowed', _("Humans are allowed to send me an email (e.g. for ticket vouchers)"), $email_by_human_allowed) + ]) ]), div('row', [ div('col-sm-6', [ - form_date('planned_arrival_date', _("Planned date of arrival") . ' ' . entry_required(), $planned_arrival_date, $buildup_start_date, $teardown_end_date) + form_date('planned_arrival_date', _("Planned date of arrival") . ' ' . entry_required(), $planned_arrival_date, $buildup_start_date, $teardown_end_date) ]), div('col-sm-6', [ - $enable_tshirt_size ? form_select('tshirt_size', _("Shirt size") . ' ' . entry_required(), $tshirt_sizes, $tshirt_size) : '' - ]) + $enable_tshirt_size ? form_select('tshirt_size', _("Shirt size") . ' ' . entry_required(), $tshirt_sizes, $tshirt_size) : '' + ]) ]), div('row', [ div('col-sm-6', [ - form_password('password', _("Password") . ' ' . entry_required()) + form_password('password', _("Password") . ' ' . entry_required()) ]), div('col-sm-6', [ - form_password('password2', _("Confirm password") . ' ' . entry_required()) - ]) + form_password('password2', _("Confirm password") . ' ' . entry_required()) + ]) ]), form_checkboxes('angel_types', _("What do you want to do?") . sprintf(" (%s)", page_link_to('angeltypes') . '&action=about', _("Description of job types")), $angel_types, $selected_angel_types), - form_info("", _("Restricted angel types need will be confirmed later by a supporter. You can change your selection in the options section.")) + form_info("", _("Restricted angel types need will be confirmed later by a supporter. You can change your selection in the options section.")) ]), div('col-md-6', [ div('row', [ div('col-sm-4', [ - form_text('dect', _("DECT"), $dect) + form_text('dect', _("DECT"), $dect) ]), div('col-sm-4', [ - form_text('mobile', _("Mobile"), $mobile) + form_text('mobile', _("Mobile"), $mobile) ]), div('col-sm-4', [ - form_text('tel', _("Phone"), $tel) - ]) + form_text('tel', _("Phone"), $tel) + ]) ]), form_text('jabber', _("Jabber"), $jabber), div('row', [ div('col-sm-6', [ - form_text('prename', _("First name"), $prename) + form_text('prename', _("First name"), $prename) ]), div('col-sm-6', [ - form_text('lastname', _("Last name"), $lastname) - ]) + form_text('lastname', _("Last name"), $lastname) + ]) ]), div('row', [ div('col-sm-3', [ - form_text('age', _("Age"), $age) + form_text('age', _("Age"), $age) ]), div('col-sm-9', [ - form_text('hometown', _("Hometown"), $hometown) - ]) + form_text('hometown', _("Hometown"), $hometown) + ]) ]), - form_info(entry_required() . ' = ' . _("Entry required!")) - ]) + form_info(entry_required() . ' = ' . _("Entry required!")) + ]) ]), // form_textarea('comment', _("Did you help at former CCC events and which tasks have you performed then?"), $comment), - form_submit('submit', _("Register")) - ]) + form_submit('submit', _("Register")) + ]) ]); } -function entry_required() { - return ''; +function entry_required() +{ + return ''; } -function guest_logout() { - session_destroy(); - redirect(page_link_to("start")); +function guest_logout() +{ + session_destroy(); + redirect(page_link_to("start")); } -function guest_login() { - $nick = ""; +function guest_login() +{ + $nick = ""; - unset($_SESSION['uid']); - $valid = true; + unset($_SESSION['uid']); + $valid = true; - if (isset($_REQUEST['submit'])) { - - if (isset($_REQUEST['nick']) && strlen(User_validate_Nick($_REQUEST['nick'])) > 0) { - $nick = User_validate_Nick($_REQUEST['nick']); - $login_user = sql_select("SELECT * FROM `User` WHERE `Nick`='" . sql_escape($nick) . "'"); - if (count($login_user) > 0) { - $login_user = $login_user[0]; - if (isset($_REQUEST['password'])) { - if (! verify_password($_REQUEST['password'], $login_user['Passwort'], $login_user['UID'])) { - $valid = false; - error(_("Your password is incorrect. Please try it again.")); - } + if (isset($_REQUEST['submit'])) { + if (isset($_REQUEST['nick']) && strlen(User_validate_Nick($_REQUEST['nick'])) > 0) { + $nick = User_validate_Nick($_REQUEST['nick']); + $login_user = sql_select("SELECT * FROM `User` WHERE `Nick`='" . sql_escape($nick) . "'"); + if (count($login_user) > 0) { + $login_user = $login_user[0]; + if (isset($_REQUEST['password'])) { + if (! verify_password($_REQUEST['password'], $login_user['Passwort'], $login_user['UID'])) { + $valid = false; + error(_("Your password is incorrect. Please try it again.")); + } + } else { + $valid = false; + error(_("Please enter a password.")); + } + } else { + $valid = false; + error(_("No user was found with that Nickname. Please try again. If you are still having problems, ask a Dispatcher.")); + } } else { - $valid = false; - error(_("Please enter a password.")); + $valid = false; + error(_("Please enter a nickname.")); } - } else { - $valid = false; - error(_("No user was found with that Nickname. Please try again. If you are still having problems, ask a Dispatcher.")); - } - } else { - $valid = false; - error(_("Please enter a nickname.")); - } - if ($valid) { - $_SESSION['uid'] = $login_user['UID']; - $_SESSION['locale'] = $login_user['Sprache']; + if ($valid) { + $_SESSION['uid'] = $login_user['UID']; + $_SESSION['locale'] = $login_user['Sprache']; - redirect(page_link_to('news')); + redirect(page_link_to('news')); + } } - } - $event_config = EventConfig(); + $event_config = EventConfig(); - return page([ + return page([ div('col-md-12', [ div('row', [ - EventConfig_countdown_page($event_config) + EventConfig_countdown_page($event_config) ]), div('row', [ div('col-sm-6 col-sm-offset-3 col-md-4 col-md-offset-4', [ div('panel panel-primary first', [ div('panel-heading', [ - ' ' . _("Login") + ' ' . _("Login") ]), div('panel-body', [ msg(), @@ -355,46 +361,46 @@ function guest_login() { form_password_placeholder('password', _("Password")), form_submit('submit', _("Login")), ! $valid ? buttons([ - button(page_link_to('user_password_recovery'), _("I forgot my password")) - ]) : '' - ]) + button(page_link_to('user_password_recovery'), _("I forgot my password")) + ]) : '' + ]) ]), div('panel-footer', [ - glyph('info-sign') . _("Please note: You have to activate cookies!") - ]) - ]) - ]) + glyph('info-sign') . _("Please note: You have to activate cookies!") + ]) + ]) + ]) ]), div('row', [ div('col-sm-6 text-center', [ heading(register_title(), 2), - get_register_hint() + get_register_hint() ]), div('col-sm-6 text-center', [ heading(_("What can I do?"), 2), '

' . _("Please read about the jobs you can do to help us.") . '

', buttons([ - button(page_link_to('angeltypes') . '&action=about', _("Teams/Job description") . ' »') - ]) - ]) - ]) - ]) + button(page_link_to('angeltypes') . '&action=about', _("Teams/Job description") . ' »') + ]) + ]) + ]) + ]) ]); } -function get_register_hint() { - global $privileges; +function get_register_hint() +{ + global $privileges; - if (in_array('register', $privileges)) { - return join('', [ + if (in_array('register', $privileges)) { + return join('', [ '

' . _("Please sign up, if you want to help us!") . '

', buttons([ - button(page_link_to('register'), register_title() . ' »') - ]) + button(page_link_to('register'), register_title() . ' »') + ]) ]); - } + } //FIXME: return error(_("Registration is disabled."), true); return error("Registration is disabled.", true); } -?> diff --git a/includes/pages/guest_start.php b/includes/pages/guest_start.php index 8f008a8d..c89f680e 100644 --- a/includes/pages/guest_start.php +++ b/includes/pages/guest_start.php @@ -1,5 +1,5 @@ \ No newline at end of file diff --git a/includes/pages/guest_stats.php b/includes/pages/guest_stats.php index 71fde137..2559dd4d 100644 --- a/includes/pages/guest_stats.php +++ b/includes/pages/guest_stats.php @@ -1,35 +1,34 @@ "Wrong api_key." + ])); } raw_output(json_encode([ - 'error' => "Wrong api_key." - ])); - } - raw_output(json_encode([ - 'error' => "Missing parameter api_key." + 'error' => "Missing parameter api_key." ])); } - -?> diff --git a/includes/pages/user_atom.php b/includes/pages/user_atom.php index 9a765634..88e8f201 100644 --- a/includes/pages/user_atom.php +++ b/includes/pages/user_atom.php @@ -1,46 +1,49 @@ +function make_atom_entries_from_news($news_entries) +{ + $html = ' Engelsystem ' . $_SERVER['HTTP_HOST'] . htmlspecialchars(preg_replace('#[&?]key=[a-f0-9]{32}#', '', $_SERVER['REQUEST_URI'])) . ' ' . date('Y-m-d\TH:i:sP', $news_entries[0]['Datum']) . "\n"; - foreach ($news_entries as $news_entry) { - $html .= make_atom_entry_from_news($news_entry); - } - $html .= ""; - return $html; + foreach ($news_entries as $news_entry) { + $html .= make_atom_entry_from_news($news_entry); + } + $html .= ""; + return $html; } -function make_atom_entry_from_news($news_entry) { - return " +function make_atom_entry_from_news($news_entry) +{ + return " " . htmlspecialchars($news_entry['Betreff']) . " " . preg_replace('#^https?://#', '', page_link_to_absolute("news")) . "-${news_entry['ID']} @@ -48,4 +51,3 @@ function make_atom_entry_from_news($news_entry) { " . htmlspecialchars($news_entry['Text']) . " \n"; } -?> diff --git a/includes/pages/user_ical.php b/includes/pages/user_ical.php index 34860b70..49546e58 100644 --- a/includes/pages/user_ical.php +++ b/includes/pages/user_ical.php @@ -3,61 +3,63 @@ /** * Controller for ical output of users own shifts or any user_shifts filter. */ -function user_ical() { - global $user; +function user_ical() +{ + global $user; - if (! isset($_REQUEST['key']) || ! preg_match("/^[0-9a-f]{32}$/", $_REQUEST['key'])) { - engelsystem_error("Missing key."); - } - $key = $_REQUEST['key']; + if (! isset($_REQUEST['key']) || ! preg_match("/^[0-9a-f]{32}$/", $_REQUEST['key'])) { + engelsystem_error("Missing key."); + } + $key = $_REQUEST['key']; - $user = User_by_api_key($key); - if ($user == null) { - engelsystem_error("Key invalid."); - } + $user = User_by_api_key($key); + if ($user == null) { + engelsystem_error("Key invalid."); + } - if (! in_array('ical', privileges_for_user($user['UID']))) { - engelsystem_error("No privilege for ical."); - } + if (! in_array('ical', privileges_for_user($user['UID']))) { + engelsystem_error("No privilege for ical."); + } - $ical_shifts = load_ical_shifts(); + $ical_shifts = load_ical_shifts(); - send_ical_from_shifts($ical_shifts); + send_ical_from_shifts($ical_shifts); } /** * Renders an ical calender from given shifts array. * - * @param array $shifts + * @param array $shifts */ -function send_ical_from_shifts($shifts) { - header("Content-Type: text/calendar; charset=utf-8"); - $output = "BEGIN:VCALENDAR\r\nVERSION:2.0\r\nPRODID:-//-//Engelsystem//DE\r\nCALSCALE:GREGORIAN\r\n"; - foreach ($shifts as $shift) { - $output .= make_ical_entry_from_shift($shift); - } - $output .= "END:VCALENDAR\r\n"; - $output = trim($output, "\x0A"); - header("Content-Length: " . strlen($output)); - raw_output($output); +function send_ical_from_shifts($shifts) +{ + header("Content-Type: text/calendar; charset=utf-8"); + $output = "BEGIN:VCALENDAR\r\nVERSION:2.0\r\nPRODID:-//-//Engelsystem//DE\r\nCALSCALE:GREGORIAN\r\n"; + foreach ($shifts as $shift) { + $output .= make_ical_entry_from_shift($shift); + } + $output .= "END:VCALENDAR\r\n"; + $output = trim($output, "\x0A"); + header("Content-Length: " . strlen($output)); + raw_output($output); } /** * Renders an ical vevent from given shift. * - * @param Shift $shift + * @param Shift $shift */ -function make_ical_entry_from_shift($shift) { - $output = "BEGIN:VEVENT\r\n"; - $output .= "UID:" . md5($shift['start'] . $shift['end'] . $shift['name']) . "\r\n"; - $output .= "SUMMARY:" . str_replace("\n", "\\n", $shift['name']) . " (" . str_replace("\n", "\\n", $shift['title']) . ")\r\n"; - if (isset($shift['Comment'])) { - $output .= "DESCRIPTION:" . str_replace("\n", "\\n", $shift['Comment']) . "\r\n"; - } - $output .= "DTSTART;TZID=Europe/Berlin:" . date("Ymd\THis", $shift['start']) . "\r\n"; - $output .= "DTEND;TZID=Europe/Berlin:" . date("Ymd\THis", $shift['end']) . "\r\n"; - $output .= "LOCATION:" . $shift['Name'] . "\r\n"; - $output .= "END:VEVENT\r\n"; - return $output; +function make_ical_entry_from_shift($shift) +{ + $output = "BEGIN:VEVENT\r\n"; + $output .= "UID:" . md5($shift['start'] . $shift['end'] . $shift['name']) . "\r\n"; + $output .= "SUMMARY:" . str_replace("\n", "\\n", $shift['name']) . " (" . str_replace("\n", "\\n", $shift['title']) . ")\r\n"; + if (isset($shift['Comment'])) { + $output .= "DESCRIPTION:" . str_replace("\n", "\\n", $shift['Comment']) . "\r\n"; + } + $output .= "DTSTART;TZID=Europe/Berlin:" . date("Ymd\THis", $shift['start']) . "\r\n"; + $output .= "DTEND;TZID=Europe/Berlin:" . date("Ymd\THis", $shift['end']) . "\r\n"; + $output .= "LOCATION:" . $shift['Name'] . "\r\n"; + $output .= "END:VEVENT\r\n"; + return $output; } -?> diff --git a/includes/pages/user_messages.php b/includes/pages/user_messages.php index eb07deea..f9278828 100644 --- a/includes/pages/user_messages.php +++ b/includes/pages/user_messages.php @@ -1,73 +1,76 @@ 0) { - return ' ' . $new_messages . ''; + if (isset($user)) { + $new_messages = sql_num_query("SELECT * FROM `Messages` WHERE isRead='N' AND `RUID`='" . sql_escape($user['UID']) . "'"); + if ($new_messages > 0) { + return ' ' . $new_messages . ''; + } } - } - return ''; + return ''; } -function user_messages() { - global $user; +function user_messages() +{ + global $user; - if (! isset($_REQUEST['action'])) { - $users = sql_select("SELECT * FROM `User` WHERE NOT `UID`='" . sql_escape($user['UID']) . "' ORDER BY `Nick`"); + if (! isset($_REQUEST['action'])) { + $users = sql_select("SELECT * FROM `User` WHERE NOT `UID`='" . sql_escape($user['UID']) . "' ORDER BY `Nick`"); - $to_select_data = [ - "" => _("Select recipient...") + $to_select_data = [ + "" => _("Select recipient...") ]; - foreach ($users as $u) { - $to_select_data[$u['UID']] = $u['Nick']; - } + foreach ($users as $u) { + $to_select_data[$u['UID']] = $u['Nick']; + } - $to_select = html_select_key('to', 'to', $to_select_data, ''); + $to_select = html_select_key('to', 'to', $to_select_data, ''); - $messages = sql_select("SELECT * FROM `Messages` WHERE `SUID`='" . sql_escape($user['UID']) . "' OR `RUID`='" . sql_escape($user['UID']) . "' ORDER BY `isRead`,`Datum` DESC"); + $messages = sql_select("SELECT * FROM `Messages` WHERE `SUID`='" . sql_escape($user['UID']) . "' OR `RUID`='" . sql_escape($user['UID']) . "' ORDER BY `isRead`,`Datum` DESC"); - $messages_table = [ + $messages_table = [ [ 'news' => '', 'timestamp' => date("Y-m-d H:i"), 'from' => User_Nick_render($user), 'to' => $to_select, 'text' => form_textarea('text', '', ''), - 'actions' => form_submit('submit', _("Save")) - ] + 'actions' => form_submit('submit', _("Save")) + ] ]; - foreach ($messages as $message) { - $sender_user_source = User($message['SUID']); - $receiver_user_source = User($message['RUID']); + foreach ($messages as $message) { + $sender_user_source = User($message['SUID']); + $receiver_user_source = User($message['RUID']); - $messages_table_entry = [ + $messages_table_entry = [ 'new' => $message['isRead'] == 'N' ? '' : '', 'timestamp' => date("Y-m-d H:i", $message['Datum']), 'from' => User_Nick_render($sender_user_source), 'to' => User_Nick_render($receiver_user_source), - 'text' => str_replace("\n", '
', $message['Text']) + 'text' => str_replace("\n", '
', $message['Text']) ]; - if ($message['RUID'] == $user['UID']) { - if ($message['isRead'] == 'N') { - $messages_table_entry['actions'] = button(page_link_to("user_messages") . '&action=read&id=' . $message['id'], _("mark as read"), 'btn-xs'); + if ($message['RUID'] == $user['UID']) { + if ($message['isRead'] == 'N') { + $messages_table_entry['actions'] = button(page_link_to("user_messages") . '&action=read&id=' . $message['id'], _("mark as read"), 'btn-xs'); + } + } else { + $messages_table_entry['actions'] = button(page_link_to("user_messages") . '&action=delete&id=' . $message['id'], _("delete message"), 'btn-xs'); + } + $messages_table[] = $messages_table_entry; } - } else { - $messages_table_entry['actions'] = button(page_link_to("user_messages") . '&action=delete&id=' . $message['id'], _("delete message"), 'btn-xs'); - } - $messages_table[] = $messages_table_entry; - } - return page_with_title(messages_title(), [ + return page_with_title(messages_title(), [ msg(), sprintf(_("Hello %s, here can you leave messages for other angels"), User_Nick_render($user)), form([ @@ -77,55 +80,54 @@ function user_messages() { 'from' => _("Transmitted"), 'to' => _("Recipient"), 'text' => _("Message"), - 'actions' => '' - ], $messages_table) - ], page_link_to('user_messages') . '&action=send') + 'actions' => '' + ], $messages_table) + ], page_link_to('user_messages') . '&action=send') ]); - } else { - switch ($_REQUEST['action']) { + } else { + switch ($_REQUEST['action']) { case "read": if (isset($_REQUEST['id']) && preg_match("/^[0-9]{1,11}$/", $_REQUEST['id'])) { - $message_id = $_REQUEST['id']; + $message_id = $_REQUEST['id']; } else { - return error(_("Incomplete call, missing Message ID."), true); + return error(_("Incomplete call, missing Message ID."), true); } $message = sql_select("SELECT * FROM `Messages` WHERE `id`='" . sql_escape($message_id) . "' LIMIT 1"); if (count($message) > 0 && $message[0]['RUID'] == $user['UID']) { - sql_query("UPDATE `Messages` SET `isRead`='Y' WHERE `id`='" . sql_escape($message_id) . "' LIMIT 1"); - redirect(page_link_to("user_messages")); + sql_query("UPDATE `Messages` SET `isRead`='Y' WHERE `id`='" . sql_escape($message_id) . "' LIMIT 1"); + redirect(page_link_to("user_messages")); } else { - return error(_("No Message found."), true); + return error(_("No Message found."), true); } break; case "delete": if (isset($_REQUEST['id']) && preg_match("/^[0-9]{1,11}$/", $_REQUEST['id'])) { - $message_id = $_REQUEST['id']; + $message_id = $_REQUEST['id']; } else { - return error(_("Incomplete call, missing Message ID."), true); + return error(_("Incomplete call, missing Message ID."), true); } $message = sql_select("SELECT * FROM `Messages` WHERE `id`='" . sql_escape($message_id) . "' LIMIT 1"); if (count($message) > 0 && $message[0]['SUID'] == $user['UID']) { - sql_query("DELETE FROM `Messages` WHERE `id`='" . sql_escape($message_id) . "' LIMIT 1"); - redirect(page_link_to("user_messages")); + sql_query("DELETE FROM `Messages` WHERE `id`='" . sql_escape($message_id) . "' LIMIT 1"); + redirect(page_link_to("user_messages")); } else { - return error(_("No Message found."), true); + return error(_("No Message found."), true); } break; case "send": if (Message_send($_REQUEST['to'], $_REQUEST['text']) === true) { - redirect(page_link_to("user_messages")); + redirect(page_link_to("user_messages")); } else { - return error(_("Transmitting was terminated with an Error."), true); + return error(_("Transmitting was terminated with an Error."), true); } break; default: return error(_("Wrong action."), true); } - } + } } -?> diff --git a/includes/pages/user_myshifts.php b/includes/pages/user_myshifts.php index 3cf0c571..fbfe3f33 100644 --- a/includes/pages/user_myshifts.php +++ b/includes/pages/user_myshifts.php @@ -1,35 +1,37 @@ 0) { - $user_id = $_REQUEST['id']; - } else { - $user_id = $user['UID']; - } - - list($shifts_user) = sql_select("SELECT * FROM `User` WHERE `UID`='" . sql_escape($user_id) . "' LIMIT 1"); - - if (isset($_REQUEST['reset'])) { - if ($_REQUEST['reset'] == "ack") { - User_reset_api_key($user); - success(_("Key changed.")); - redirect(page_link_to('users') . '&action=view&user_id=' . $shifts_user['UID']); + if (isset($_REQUEST['id']) && in_array("user_shifts_admin", $privileges) && preg_match("/^[0-9]{1,}$/", $_REQUEST['id']) && sql_num_query("SELECT * FROM `User` WHERE `UID`='" . sql_escape($_REQUEST['id']) . "'") > 0) { + $user_id = $_REQUEST['id']; + } else { + $user_id = $user['UID']; } - return page_with_title(_("Reset API key"), [ + + list($shifts_user) = sql_select("SELECT * FROM `User` WHERE `UID`='" . sql_escape($user_id) . "' LIMIT 1"); + + if (isset($_REQUEST['reset'])) { + if ($_REQUEST['reset'] == "ack") { + User_reset_api_key($user); + success(_("Key changed.")); + redirect(page_link_to('users') . '&action=view&user_id=' . $shifts_user['UID']); + } + return page_with_title(_("Reset API key"), [ error(_("If you reset the key, the url to your iCal- and JSON-export and your atom feed changes! You have to update it in every application using one of these exports."), true), - button(page_link_to('user_myshifts') . '&reset=ack', _("Continue"), 'btn-danger') + button(page_link_to('user_myshifts') . '&reset=ack', _("Continue"), 'btn-danger') ]); - } elseif (isset($_REQUEST['edit']) && preg_match("/^[0-9]*$/", $_REQUEST['edit'])) { - $user_id = $_REQUEST['edit']; - $shift = sql_select("SELECT + } elseif (isset($_REQUEST['edit']) && preg_match("/^[0-9]*$/", $_REQUEST['edit'])) { + $user_id = $_REQUEST['edit']; + $shift = sql_select("SELECT `ShiftEntry`.`freeloaded`, `ShiftEntry`.`freeload_comment`, `ShiftEntry`.`Comment`, @@ -45,74 +47,73 @@ function user_myshifts() { JOIN `Room` ON (`Shifts`.`RID` = `Room`.`RID`) WHERE `ShiftEntry`.`id`='" . sql_escape($user_id) . "' AND `UID`='" . sql_escape($shifts_user['UID']) . "' LIMIT 1"); - if (count($shift) > 0) { - $shift = $shift[0]; - $freeloaded = $shift['freeloaded']; - $freeload_comment = $shift['freeload_comment']; + if (count($shift) > 0) { + $shift = $shift[0]; + $freeloaded = $shift['freeloaded']; + $freeload_comment = $shift['freeload_comment']; - if (isset($_REQUEST['submit'])) { - $valid = true; - if (in_array("user_shifts_admin", $privileges)) { - $freeloaded = isset($_REQUEST['freeloaded']); - $freeload_comment = strip_request_item_nl('freeload_comment'); - if ($freeloaded && $freeload_comment == '') { - $valid = false; - error(_("Please enter a freeload comment!")); - } - } + if (isset($_REQUEST['submit'])) { + $valid = true; + if (in_array("user_shifts_admin", $privileges)) { + $freeloaded = isset($_REQUEST['freeloaded']); + $freeload_comment = strip_request_item_nl('freeload_comment'); + if ($freeloaded && $freeload_comment == '') { + $valid = false; + error(_("Please enter a freeload comment!")); + } + } - $comment = strip_request_item_nl('comment'); - $user_source = User($shift['UID']); + $comment = strip_request_item_nl('comment'); + $user_source = User($shift['UID']); - if ($valid) { - $result = ShiftEntry_update([ + if ($valid) { + $result = ShiftEntry_update([ 'id' => $user_id, 'Comment' => $comment, 'freeloaded' => $freeloaded, - 'freeload_comment' => $freeload_comment + 'freeload_comment' => $freeload_comment ]); - if ($result === false) { - engelsystem_error('Unable to update shift entry.'); - } + if ($result === false) { + engelsystem_error('Unable to update shift entry.'); + } - engelsystem_log("Updated " . User_Nick_render($user_source) . "'s shift " . $shift['name'] . " from " . date("Y-m-d H:i", $shift['start']) . " to " . date("Y-m-d H:i", $shift['end']) . " with comment " . $comment . ". Freeloaded: " . ($freeloaded ? "YES Comment: " . $freeload_comment : "NO")); - success(_("Shift saved.")); - redirect(page_link_to('users') . '&action=view&user_id=' . $shifts_user['UID']); - } - } + engelsystem_log("Updated " . User_Nick_render($user_source) . "'s shift " . $shift['name'] . " from " . date("Y-m-d H:i", $shift['start']) . " to " . date("Y-m-d H:i", $shift['end']) . " with comment " . $comment . ". Freeloaded: " . ($freeloaded ? "YES Comment: " . $freeload_comment : "NO")); + success(_("Shift saved.")); + redirect(page_link_to('users') . '&action=view&user_id=' . $shifts_user['UID']); + } + } - return ShiftEntry_edit_view(User_Nick_render($shifts_user), date("Y-m-d H:i", $shift['start']) . ', ' . shift_length($shift), $shift['Name'], $shift['name'], $shift['angel_type'], $shift['Comment'], $shift['freeloaded'], $shift['freeload_comment'], in_array("user_shifts_admin", $privileges)); - } else { - redirect(page_link_to('user_myshifts')); - } - } elseif (isset($_REQUEST['cancel']) && preg_match("/^[0-9]*$/", $_REQUEST['cancel'])) { - $user_id = $_REQUEST['cancel']; - $shift = sql_select(" + return ShiftEntry_edit_view(User_Nick_render($shifts_user), date("Y-m-d H:i", $shift['start']) . ', ' . shift_length($shift), $shift['Name'], $shift['name'], $shift['angel_type'], $shift['Comment'], $shift['freeloaded'], $shift['freeload_comment'], in_array("user_shifts_admin", $privileges)); + } else { + redirect(page_link_to('user_myshifts')); + } + } elseif (isset($_REQUEST['cancel']) && preg_match("/^[0-9]*$/", $_REQUEST['cancel'])) { + $user_id = $_REQUEST['cancel']; + $shift = sql_select(" SELECT * FROM `Shifts` INNER JOIN `ShiftEntry` USING (`SID`) WHERE `ShiftEntry`.`id`='" . sql_escape($user_id) . "' AND `UID`='" . sql_escape($shifts_user['UID']) . "'"); - if (count($shift) > 0) { - $shift = $shift[0]; - if (($shift['start'] > time() + $LETZTES_AUSTRAGEN * 3600) || in_array('user_shifts_admin', $privileges)) { - $result = ShiftEntry_delete($user_id); - if ($result === false) { - engelsystem_error('Unable to delete shift entry.'); - } - $room = Room($shift['RID']); - $angeltype = AngelType($shift['TID']); - $shifttype = ShiftType($shift['shifttype_id']); + if (count($shift) > 0) { + $shift = $shift[0]; + if (($shift['start'] > time() + $LETZTES_AUSTRAGEN * 3600) || in_array('user_shifts_admin', $privileges)) { + $result = ShiftEntry_delete($user_id); + if ($result === false) { + engelsystem_error('Unable to delete shift entry.'); + } + $room = Room($shift['RID']); + $angeltype = AngelType($shift['TID']); + $shifttype = ShiftType($shift['shifttype_id']); - engelsystem_log("Deleted own shift: " . $shifttype['name'] . " at " . $room['Name'] . " from " . date("Y-m-d H:i", $shift['start']) . " to " . date("Y-m-d H:i", $shift['end']) . " as " . $angeltype['name']); - success(_("Shift canceled.")); - } else { - error(_("It's too late to sign yourself off the shift. If neccessary, ask the dispatcher to do so.")); - } - } else { - redirect(user_link($shifts_user)); + engelsystem_log("Deleted own shift: " . $shifttype['name'] . " at " . $room['Name'] . " from " . date("Y-m-d H:i", $shift['start']) . " to " . date("Y-m-d H:i", $shift['end']) . " as " . $angeltype['name']); + success(_("Shift canceled.")); + } else { + error(_("It's too late to sign yourself off the shift. If neccessary, ask the dispatcher to do so.")); + } + } else { + redirect(user_link($shifts_user)); + } } - } - redirect(page_link_to('users') . '&action=view&user_id=' . $shifts_user['UID']); + redirect(page_link_to('users') . '&action=view&user_id=' . $shifts_user['UID']); } -?> diff --git a/includes/pages/user_news.php b/includes/pages/user_news.php index 97f7ec83..a26b4d8d 100644 --- a/includes/pages/user_news.php +++ b/includes/pages/user_news.php @@ -1,169 +1,175 @@

' . meetings_title() . '

' . msg(); + $html = '

' . meetings_title() . '

' . msg(); - if (isset($_REQUEST['page']) && preg_match("/^[0-9]{1,}$/", $_REQUEST['page'])) { - $page = $_REQUEST['page']; - } else { - $page = 0; - } - - $news = sql_select("SELECT * FROM `News` WHERE `Treffen`=1 ORDER BY `Datum` DESC LIMIT " . sql_escape($page * $DISPLAY_NEWS) . ", " . sql_escape($DISPLAY_NEWS)); - foreach ($news as $entry) { - $html .= display_news($entry); - } - - $dis_rows = ceil(sql_num_query("SELECT * FROM `News`") / $DISPLAY_NEWS); - $html .= '
' . '
    '; - for ($i = 0; $i < $dis_rows; $i ++) { - if (isset($_REQUEST['page']) && $i == $_REQUEST['page']) { - $html .= '
  • '; - } elseif (! isset($_REQUEST['page']) && $i == 0) { - $html .= '
  • '; + if (isset($_REQUEST['page']) && preg_match("/^[0-9]{1,}$/", $_REQUEST['page'])) { + $page = $_REQUEST['page']; } else { - $html .= '
  • '; + $page = 0; } - $html .= '' . ($i + 1) . '
  • '; - } - $html .= '
'; - return $html; + $news = sql_select("SELECT * FROM `News` WHERE `Treffen`=1 ORDER BY `Datum` DESC LIMIT " . sql_escape($page * $DISPLAY_NEWS) . ", " . sql_escape($DISPLAY_NEWS)); + foreach ($news as $entry) { + $html .= display_news($entry); + } + + $dis_rows = ceil(sql_num_query("SELECT * FROM `News`") / $DISPLAY_NEWS); + $html .= '
' . '
    '; + for ($i = 0; $i < $dis_rows; $i ++) { + if (isset($_REQUEST['page']) && $i == $_REQUEST['page']) { + $html .= '
  • '; + } elseif (! isset($_REQUEST['page']) && $i == 0) { + $html .= '
  • '; + } else { + $html .= '
  • '; + } + $html .= '' . ($i + 1) . '
  • '; + } + $html .= '
'; + + return $html; } -function display_news($news) { - global $privileges, $page; +function display_news($news) +{ + global $privileges, $page; - $html = ''; - $html .= '
'; - $html .= '
'; - $html .= '

' . ($news['Treffen'] == 1 ? '[Meeting] ' : '') . ReplaceSmilies($news['Betreff']) . '

'; - $html .= '
'; - $html .= '
' . ReplaceSmilies(nl2br($news['Text'])) . '
'; + $html = ''; + $html .= '
'; + $html .= '
'; + $html .= '

' . ($news['Treffen'] == 1 ? '[Meeting] ' : '') . ReplaceSmilies($news['Betreff']) . '

'; + $html .= '
'; + $html .= '
' . ReplaceSmilies(nl2br($news['Text'])) . '
'; - $html .= ''; - return $html; + $html .= User_Nick_render($user_source); + if ($page != "news_comments") { + $html .= '  ' . _("Comments") . ' » ' . sql_num_query("SELECT * FROM `NewsComments` WHERE `Refid`='" . sql_escape($news['ID']) . "'") . ''; + } + $html .= '
'; + $html .= '
'; + return $html; } -function user_news_comments() { - global $user; +function user_news_comments() +{ + global $user; - $html = '

' . user_news_comments_title() . '

'; - if (isset($_REQUEST["nid"]) && preg_match("/^[0-9]{1,}$/", $_REQUEST['nid']) && sql_num_query("SELECT * FROM `News` WHERE `ID`='" . sql_escape($_REQUEST['nid']) . "' LIMIT 1") > 0) { - $nid = $_REQUEST["nid"]; - list($news) = sql_select("SELECT * FROM `News` WHERE `ID`='" . sql_escape($nid) . "' LIMIT 1"); - if (isset($_REQUEST["text"])) { - $text = preg_replace("/([^\p{L}\p{P}\p{Z}\p{N}\n]{1,})/ui", '', strip_tags($_REQUEST['text'])); - sql_query("INSERT INTO `NewsComments` (`Refid`, `Datum`, `Text`, `UID`) VALUES ('" . sql_escape($nid) . "', '" . date("Y-m-d H:i:s") . "', '" . sql_escape($text) . "', '" . sql_escape($user["UID"]) . "')"); - engelsystem_log("Created news_comment: " . $text); - $html .= success(_("Entry saved."), true); - } + $html = '

' . user_news_comments_title() . '

'; + if (isset($_REQUEST["nid"]) && preg_match("/^[0-9]{1,}$/", $_REQUEST['nid']) && sql_num_query("SELECT * FROM `News` WHERE `ID`='" . sql_escape($_REQUEST['nid']) . "' LIMIT 1") > 0) { + $nid = $_REQUEST["nid"]; + list($news) = sql_select("SELECT * FROM `News` WHERE `ID`='" . sql_escape($nid) . "' LIMIT 1"); + if (isset($_REQUEST["text"])) { + $text = preg_replace("/([^\p{L}\p{P}\p{Z}\p{N}\n]{1,})/ui", '', strip_tags($_REQUEST['text'])); + sql_query("INSERT INTO `NewsComments` (`Refid`, `Datum`, `Text`, `UID`) VALUES ('" . sql_escape($nid) . "', '" . date("Y-m-d H:i:s") . "', '" . sql_escape($text) . "', '" . sql_escape($user["UID"]) . "')"); + engelsystem_log("Created news_comment: " . $text); + $html .= success(_("Entry saved."), true); + } - $html .= display_news($news); + $html .= display_news($news); - $comments = sql_select("SELECT * FROM `NewsComments` WHERE `Refid`='" . sql_escape($nid) . "' ORDER BY 'ID'"); - foreach ($comments as $comment) { - $user_source = User($comment['UID']); + $comments = sql_select("SELECT * FROM `NewsComments` WHERE `Refid`='" . sql_escape($nid) . "' ORDER BY 'ID'"); + foreach ($comments as $comment) { + $user_source = User($comment['UID']); - $html .= '
'; - $html .= '
' . nl2br($comment['Text']) . '
'; - $html .= ''; - $html .= '
'; - } + $html .= '
'; + $html .= '
' . nl2br($comment['Text']) . '
'; + $html .= ''; + $html .= '
'; + } - $html .= '

' . _("New Comment:") . '

'; - $html .= form([ + $html .= '

' . _("New Comment:") . '

'; + $html .= form([ form_textarea('text', _("Message"), ''), - form_submit('submit', _("Save")) + form_submit('submit', _("Save")) ], page_link_to('news_comments') . '&nid=' . $news['ID']); - } else { - $html .= _("Invalid request."); - } + } else { + $html .= _("Invalid request."); + } - return $html . '
'; + return $html . '
'; } -function user_news() { - global $DISPLAY_NEWS, $privileges, $user; +function user_news() +{ + global $DISPLAY_NEWS, $privileges, $user; - $html = '

' . news_title() . '

' . msg(); + $html = '

' . news_title() . '

' . msg(); - if (isset($_POST["text"]) && isset($_POST["betreff"]) && in_array("admin_news", $privileges)) { - if (! isset($_POST["treffen"]) || ! in_array("admin_news", $privileges)) { - $_POST["treffen"] = 0; + if (isset($_POST["text"]) && isset($_POST["betreff"]) && in_array("admin_news", $privileges)) { + if (! isset($_POST["treffen"]) || ! in_array("admin_news", $privileges)) { + $_POST["treffen"] = 0; + } + sql_query("INSERT INTO `News` (`Datum`, `Betreff`, `Text`, `UID`, `Treffen`) " . "VALUES ('" . sql_escape(time()) . "', '" . sql_escape($_POST["betreff"]) . "', '" . sql_escape($_POST["text"]) . "', '" . sql_escape($user['UID']) . "', '" . sql_escape($_POST["treffen"]) . "');"); + engelsystem_log("Created news: " . $_POST["betreff"] . ", treffen: " . $_POST["treffen"]); + success(_("Entry saved.")); + redirect(page_link_to('news')); } - sql_query("INSERT INTO `News` (`Datum`, `Betreff`, `Text`, `UID`, `Treffen`) " . "VALUES ('" . sql_escape(time()) . "', '" . sql_escape($_POST["betreff"]) . "', '" . sql_escape($_POST["text"]) . "', '" . sql_escape($user['UID']) . "', '" . sql_escape($_POST["treffen"]) . "');"); - engelsystem_log("Created news: " . $_POST["betreff"] . ", treffen: " . $_POST["treffen"]); - success(_("Entry saved.")); - redirect(page_link_to('news')); - } - if (isset($_REQUEST['page']) && preg_match("/^[0-9]{1,}$/", $_REQUEST['page'])) { - $page = $_REQUEST['page']; - } else { - $page = 0; - } - - $news = sql_select("SELECT * FROM `News` ORDER BY `Datum` DESC LIMIT " . sql_escape($page * $DISPLAY_NEWS) . ", " . sql_escape($DISPLAY_NEWS)); - foreach ($news as $entry) { - $html .= display_news($entry); - } - - $dis_rows = ceil(sql_num_query("SELECT * FROM `News`") / $DISPLAY_NEWS); - $html .= '
' . '
    '; - for ($i = 0; $i < $dis_rows; $i ++) { - if (isset($_REQUEST['page']) && $i == $_REQUEST['page']) { - $html .= '
  • '; - } elseif (! isset($_REQUEST['page']) && $i == 0) { - $html .= '
  • '; + if (isset($_REQUEST['page']) && preg_match("/^[0-9]{1,}$/", $_REQUEST['page'])) { + $page = $_REQUEST['page']; } else { - $html .= '
  • '; + $page = 0; } - $html .= '' . ($i + 1) . '
  • '; - } - $html .= '
'; - if (in_array("admin_news", $privileges)) { - $html .= '
'; - $html .= '

' . _("Create news:") . '

'; + $news = sql_select("SELECT * FROM `News` ORDER BY `Datum` DESC LIMIT " . sql_escape($page * $DISPLAY_NEWS) . ", " . sql_escape($DISPLAY_NEWS)); + foreach ($news as $entry) { + $html .= display_news($entry); + } + + $dis_rows = ceil(sql_num_query("SELECT * FROM `News`") / $DISPLAY_NEWS); + $html .= '
' . '
    '; + for ($i = 0; $i < $dis_rows; $i ++) { + if (isset($_REQUEST['page']) && $i == $_REQUEST['page']) { + $html .= '
  • '; + } elseif (! isset($_REQUEST['page']) && $i == 0) { + $html .= '
  • '; + } else { + $html .= '
  • '; + } + $html .= '' . ($i + 1) . '
  • '; + } + $html .= '
'; + + if (in_array("admin_news", $privileges)) { + $html .= '
'; + $html .= '

' . _("Create news:") . '

'; - $html .= form([ + $html .= form([ form_text('betreff', _("Subject"), ''), form_textarea('text', _("Message"), ''), form_checkbox('treffen', _("Meeting"), false, 1), - form_submit('submit', _("Save")) + form_submit('submit', _("Save")) ]); - } - return $html . '
'; + } + return $html . '
'; } -?> diff --git a/includes/pages/user_questions.php b/includes/pages/user_questions.php index 4abceb92..35231e1a 100644 --- a/includes/pages/user_questions.php +++ b/includes/pages/user_questions.php @@ -1,57 +1,58 @@ 0 && $question[0]['UID'] == $user['UID']) { - sql_query("DELETE FROM `Questions` WHERE `QID`='" . sql_escape($question_id) . "' LIMIT 1"); - redirect(page_link_to("user_questions")); + sql_query("DELETE FROM `Questions` WHERE `QID`='" . sql_escape($question_id) . "' LIMIT 1"); + redirect(page_link_to("user_questions")); } else { - return page_with_title(questions_title(), [ - error(_("No question found."), true) + return page_with_title(questions_title(), [ + error(_("No question found."), true) ]); } break; } - } + } } -?> \ No newline at end of file diff --git a/includes/pages/user_settings.php b/includes/pages/user_settings.php index e776320f..cfdbc7ab 100644 --- a/includes/pages/user_settings.php +++ b/includes/pages/user_settings.php @@ -1,7 +1,8 @@ getValue(); - if (! $result->isValid()) { - $valid = false; - error(_("E-mail address is not correct.")); + if (isset($_REQUEST['mail'])) { + $result = User_validate_mail($_REQUEST['mail']); + $user_source['email'] = $result->getValue(); + if (! $result->isValid()) { + $valid = false; + error(_("E-mail address is not correct.")); + } + } else { + $valid = false; + error(_("Please enter your e-mail.")); } - } else { - $valid = false; - error(_("Please enter your e-mail.")); - } - $user_source['email_shiftinfo'] = isset($_REQUEST['email_shiftinfo']); - $user_source['email_by_human_allowed'] = isset($_REQUEST['email_by_human_allowed']); + $user_source['email_shiftinfo'] = isset($_REQUEST['email_shiftinfo']); + $user_source['email_by_human_allowed'] = isset($_REQUEST['email_by_human_allowed']); - if (isset($_REQUEST['jabber'])) { - $result = User_validate_jabber($_REQUEST['jabber']); - $user_source['jabber'] = $result->getValue(); - if (! $result->isValid()) { - $valid = false; - error(_("Please check your jabber account information.")); + if (isset($_REQUEST['jabber'])) { + $result = User_validate_jabber($_REQUEST['jabber']); + $user_source['jabber'] = $result->getValue(); + if (! $result->isValid()) { + $valid = false; + error(_("Please check your jabber account information.")); + } } - } - if (isset($_REQUEST['tshirt_size']) && isset($tshirt_sizes[$_REQUEST['tshirt_size']])) { - $user_source['Size'] = $_REQUEST['tshirt_size']; - } elseif ($enable_tshirt_size) { - $valid = false; - } - - if (isset($_REQUEST['planned_arrival_date'])) { - $tmp = parse_date("Y-m-d H:i", $_REQUEST['planned_arrival_date'] . " 00:00"); - $result = User_validate_planned_arrival_date($tmp); - $user_source['planned_arrival_date'] = $result->getValue(); - if (! $result->isValid()) { - $valid = false; - error(_("Please enter your planned date of arrival. It should be after the buildup start date and before teardown end date.")); + if (isset($_REQUEST['tshirt_size']) && isset($tshirt_sizes[$_REQUEST['tshirt_size']])) { + $user_source['Size'] = $_REQUEST['tshirt_size']; + } elseif ($enable_tshirt_size) { + $valid = false; } - } - if (isset($_REQUEST['planned_departure_date'])) { - $tmp = parse_date("Y-m-d H:i", $_REQUEST['planned_departure_date'] . " 00:00"); - $result = User_validate_planned_departure_date($user_source['planned_arrival_date'], $tmp); - $user_source['planned_departure_date'] = $result->getValue(); - if (! $result->isValid()) { - $valid = false; - error(_("Please enter your planned date of departure. It should be after your planned arrival date and after buildup start date and before teardown end date.")); + if (isset($_REQUEST['planned_arrival_date'])) { + $tmp = parse_date("Y-m-d H:i", $_REQUEST['planned_arrival_date'] . " 00:00"); + $result = User_validate_planned_arrival_date($tmp); + $user_source['planned_arrival_date'] = $result->getValue(); + if (! $result->isValid()) { + $valid = false; + error(_("Please enter your planned date of arrival. It should be after the buildup start date and before teardown end date.")); + } + } + + if (isset($_REQUEST['planned_departure_date'])) { + $tmp = parse_date("Y-m-d H:i", $_REQUEST['planned_departure_date'] . " 00:00"); + $result = User_validate_planned_departure_date($user_source['planned_arrival_date'], $tmp); + $user_source['planned_departure_date'] = $result->getValue(); + if (! $result->isValid()) { + $valid = false; + error(_("Please enter your planned date of departure. It should be after your planned arrival date and after buildup start date and before teardown end date.")); + } } - } // Trivia $user_source['Name'] = strip_request_item('lastname', $user_source['Name']); - $user_source['Vorname'] = strip_request_item('prename', $user_source['Vorname']); - $user_source['Alter'] = strip_request_item('age', $user_source['Alter']); - $user_source['Telefon'] = strip_request_item('tel', $user_source['Telefon']); - $user_source['DECT'] = strip_request_item('dect', $user_source['DECT']); - $user_source['Handy'] = strip_request_item('mobile', $user_source['Handy']); - $user_source['Hometown'] = strip_request_item('hometown', $user_source['Hometown']); + $user_source['Vorname'] = strip_request_item('prename', $user_source['Vorname']); + $user_source['Alter'] = strip_request_item('age', $user_source['Alter']); + $user_source['Telefon'] = strip_request_item('tel', $user_source['Telefon']); + $user_source['DECT'] = strip_request_item('dect', $user_source['DECT']); + $user_source['Handy'] = strip_request_item('mobile', $user_source['Handy']); + $user_source['Hometown'] = strip_request_item('hometown', $user_source['Hometown']); - if ($valid) { - User_update($user_source); - success(_("Settings saved.")); - redirect(page_link_to('user_settings')); - } + if ($valid) { + User_update($user_source); + success(_("Settings saved.")); + redirect(page_link_to('user_settings')); + } - return $user_source; + return $user_source; } /** @@ -87,20 +89,21 @@ function user_settings_main($user_source, $enable_tshirt_size, $tshirt_sizes) { * @param User $user_source * The user */ -function user_settings_password($user_source) { - global $min_password_length; - if (! isset($_REQUEST['password']) || ! verify_password($_REQUEST['password'], $user_source['Passwort'], $user_source['UID'])) { - error(_("-> not OK. Please try again.")); - } elseif (strlen($_REQUEST['new_password']) < $min_password_length) { - error(_("Your password is to short (please use at least 6 characters).")); - } elseif ($_REQUEST['new_password'] != $_REQUEST['new_password2']) { - error(_("Your passwords don't match.")); - } elseif (set_password($user_source['UID'], $_REQUEST['new_password'])) { - success(_("Password saved.")); - } else { - error(_("Failed setting password.")); - } - redirect(page_link_to('user_settings')); +function user_settings_password($user_source) +{ + global $min_password_length; + if (! isset($_REQUEST['password']) || ! verify_password($_REQUEST['password'], $user_source['Passwort'], $user_source['UID'])) { + error(_("-> not OK. Please try again.")); + } elseif (strlen($_REQUEST['new_password']) < $min_password_length) { + error(_("Your password is to short (please use at least 6 characters).")); + } elseif ($_REQUEST['new_password'] != $_REQUEST['new_password2']) { + error(_("Your passwords don't match.")); + } elseif (set_password($user_source['UID'], $_REQUEST['new_password'])) { + success(_("Password saved.")); + } else { + error(_("Failed setting password.")); + } + redirect(page_link_to('user_settings')); } /** @@ -111,23 +114,24 @@ function user_settings_password($user_source) { * @param array $themes * List of available themes */ -function user_settings_theme($user_source, $themes) { - $valid = true; +function user_settings_theme($user_source, $themes) +{ + $valid = true; - if (isset($_REQUEST['theme']) && isset($themes[$_REQUEST['theme']])) { - $user_source['color'] = $_REQUEST['theme']; - } else { - $valid = false; - } + if (isset($_REQUEST['theme']) && isset($themes[$_REQUEST['theme']])) { + $user_source['color'] = $_REQUEST['theme']; + } else { + $valid = false; + } - if ($valid) { - sql_query("UPDATE `User` SET `color`='" . sql_escape($user_source['color']) . "' WHERE `UID`='" . sql_escape($user_source['UID']) . "'"); + if ($valid) { + sql_query("UPDATE `User` SET `color`='" . sql_escape($user_source['color']) . "' WHERE `UID`='" . sql_escape($user_source['UID']) . "'"); - success(_("Theme changed.")); - redirect(page_link_to('user_settings')); - } + success(_("Theme changed.")); + redirect(page_link_to('user_settings')); + } - return $user_source; + return $user_source; } /** @@ -138,57 +142,58 @@ function user_settings_theme($user_source, $themes) { * @param array $locales * List of available locales */ -function user_settings_locale($user_source, $locales) { - $valid = true; +function user_settings_locale($user_source, $locales) +{ + $valid = true; - if (isset($_REQUEST['language']) && isset($locales[$_REQUEST['language']])) { - $user_source['Sprache'] = $_REQUEST['language']; - } else { - $valid = false; - } + if (isset($_REQUEST['language']) && isset($locales[$_REQUEST['language']])) { + $user_source['Sprache'] = $_REQUEST['language']; + } else { + $valid = false; + } - if ($valid) { - sql_query("UPDATE `User` SET `Sprache`='" . sql_escape($user_source['Sprache']) . "' WHERE `UID`='" . sql_escape($user_source['UID']) . "'"); - $_SESSION['locale'] = $user_source['Sprache']; + if ($valid) { + sql_query("UPDATE `User` SET `Sprache`='" . sql_escape($user_source['Sprache']) . "' WHERE `UID`='" . sql_escape($user_source['UID']) . "'"); + $_SESSION['locale'] = $user_source['Sprache']; - success("Language changed."); - redirect(page_link_to('user_settings')); - } + success("Language changed."); + redirect(page_link_to('user_settings')); + } - return $user_source; + return $user_source; } /** * Main user settings page/controller */ -function user_settings() { - global $enable_tshirt_size, $tshirt_sizes, $themes, $locales; - global $user; +function user_settings() +{ + global $enable_tshirt_size, $tshirt_sizes, $themes, $locales; + global $user; - $buildup_start_date = null; - $teardown_end_date = null; - $event_config = EventConfig(); - if ($event_config != null) { - if (isset($event_config['buildup_start_date'])) { - $buildup_start_date = $event_config['buildup_start_date']; + $buildup_start_date = null; + $teardown_end_date = null; + $event_config = EventConfig(); + if ($event_config != null) { + if (isset($event_config['buildup_start_date'])) { + $buildup_start_date = $event_config['buildup_start_date']; + } + if (isset($event_config['teardown_end_date'])) { + $teardown_end_date = $event_config['teardown_end_date']; + } } - if (isset($event_config['teardown_end_date'])) { - $teardown_end_date = $event_config['teardown_end_date']; + + $user_source = $user; + + if (isset($_REQUEST['submit'])) { + $user_source = user_settings_main($user_source, $enable_tshirt_size, $tshirt_sizes); + } elseif (isset($_REQUEST['submit_password'])) { + user_settings_password($user_source); + } elseif (isset($_REQUEST['submit_theme'])) { + $user_source = user_settings_theme($user_source, $themes); + } elseif (isset($_REQUEST['submit_language'])) { + $user_source = user_settings_locale($user_source, $locales); } - } - $user_source = $user; - - if (isset($_REQUEST['submit'])) { - $user_source = user_settings_main($user_source, $enable_tshirt_size, $tshirt_sizes); - } elseif (isset($_REQUEST['submit_password'])) { - user_settings_password($user_source); - } elseif (isset($_REQUEST['submit_theme'])) { - $user_source = user_settings_theme($user_source, $themes); - } elseif (isset($_REQUEST['submit_language'])) { - $user_source = user_settings_locale($user_source, $locales); - } - - return User_settings_view($user_source, $locales, $themes, $buildup_start_date, $teardown_end_date, $enable_tshirt_size, $tshirt_sizes); + return User_settings_view($user_source, $locales, $themes, $buildup_start_date, $teardown_end_date, $enable_tshirt_size, $tshirt_sizes); } -?> diff --git a/includes/pages/user_shifts.php b/includes/pages/user_shifts.php index c990ee4a..0a8ddf4f 100644 --- a/includes/pages/user_shifts.php +++ b/includes/pages/user_shifts.php @@ -1,8 +1,9 @@ getStartTime(); - if ($start_time == null) { - $start_time = time(); - } +function update_ShiftsFilter_timerange(ShiftsFilter $shiftsFilter, $days) +{ + $start_time = $shiftsFilter->getStartTime(); + if ($start_time == null) { + $start_time = time(); + } - $end_time = $shiftsFilter->getEndTime(); - if ($end_time == null) { - $end_time = $start_time + 24 * 60 * 60; - } + $end_time = $shiftsFilter->getEndTime(); + if ($end_time == null) { + $end_time = $start_time + 24 * 60 * 60; + } - $shiftsFilter->setStartTime(check_request_datetime('start_day', 'start_time', $days, $start_time)); - $shiftsFilter->setEndTime(check_request_datetime('end_day', 'end_time', $days, $end_time)); + $shiftsFilter->setStartTime(check_request_datetime('start_day', 'start_time', $days, $start_time)); + $shiftsFilter->setEndTime(check_request_datetime('end_day', 'end_time', $days, $end_time)); - if ($shiftsFilter->getStartTime() > $shiftsFilter->getEndTime()) { - $shiftsFilter->setEndTime($shiftsFilter->getStartTime() + 24 * 60 * 60); - } + if ($shiftsFilter->getStartTime() > $shiftsFilter->getEndTime()) { + $shiftsFilter->setEndTime($shiftsFilter->getStartTime() + 24 * 60 * 60); + } } /** @@ -68,90 +71,95 @@ function update_ShiftsFilter_timerange(ShiftsFilter $shiftsFilter, $days) { * @param string[] $days * An array of available filter days */ -function update_ShiftsFilter(ShiftsFilter $shiftsFilter, $user_shifts_admin, $days) { - $shiftsFilter->setUserShiftsAdmin($user_shifts_admin); - $shiftsFilter->setFilled(check_request_int_array('filled', $shiftsFilter->getFilled())); - $shiftsFilter->setRooms(check_request_int_array('rooms', $shiftsFilter->getRooms())); - $shiftsFilter->setTypes(check_request_int_array('types', $shiftsFilter->getTypes())); - update_ShiftsFilter_timerange($shiftsFilter, $days); +function update_ShiftsFilter(ShiftsFilter $shiftsFilter, $user_shifts_admin, $days) +{ + $shiftsFilter->setUserShiftsAdmin($user_shifts_admin); + $shiftsFilter->setFilled(check_request_int_array('filled', $shiftsFilter->getFilled())); + $shiftsFilter->setRooms(check_request_int_array('rooms', $shiftsFilter->getRooms())); + $shiftsFilter->setTypes(check_request_int_array('types', $shiftsFilter->getTypes())); + update_ShiftsFilter_timerange($shiftsFilter, $days); } -function load_rooms() { - $rooms = sql_select("SELECT `RID` AS `id`, `Name` AS `name` FROM `Room` WHERE `show`='Y' ORDER BY `Name`"); - if (count($rooms) == 0) { - error(_("The administration has not configured any rooms yet.")); - redirect('?'); - } - return $rooms; +function load_rooms() +{ + $rooms = sql_select("SELECT `RID` AS `id`, `Name` AS `name` FROM `Room` WHERE `show`='Y' ORDER BY `Name`"); + if (count($rooms) == 0) { + error(_("The administration has not configured any rooms yet.")); + redirect('?'); + } + return $rooms; } -function load_days() { - $days = sql_select_single_col(" +function load_days() +{ + $days = sql_select_single_col(" SELECT DISTINCT DATE(FROM_UNIXTIME(`start`)) AS `id`, DATE(FROM_UNIXTIME(`start`)) AS `name` FROM `Shifts` ORDER BY `start`"); - if (count($days) == 0) { - error(_("The administration has not configured any shifts yet.")); - redirect('?'); - } - return $days; + if (count($days) == 0) { + error(_("The administration has not configured any shifts yet.")); + redirect('?'); + } + return $days; } -function load_types() { - global $user; +function load_types() +{ + global $user; - if (sql_num_query("SELECT `id`, `name` FROM `AngelTypes` WHERE `restricted` = 0") == 0) { - error(_("The administration has not configured any angeltypes yet - or you are not subscribed to any angeltype.")); - redirect('?'); - } - $types = sql_select("SELECT `AngelTypes`.`id`, `AngelTypes`.`name`, (`AngelTypes`.`restricted`=0 OR (NOT `UserAngelTypes`.`confirm_user_id` IS NULL OR `UserAngelTypes`.`id` IS NULL)) as `enabled` FROM `AngelTypes` LEFT JOIN `UserAngelTypes` ON (`UserAngelTypes`.`angeltype_id`=`AngelTypes`.`id` AND `UserAngelTypes`.`user_id`='" . sql_escape($user['UID']) . "') ORDER BY `AngelTypes`.`name`"); - if (empty($types)) { - return sql_select("SELECT `id`, `name` FROM `AngelTypes` WHERE `restricted` = 0"); - } - return $types; + if (sql_num_query("SELECT `id`, `name` FROM `AngelTypes` WHERE `restricted` = 0") == 0) { + error(_("The administration has not configured any angeltypes yet - or you are not subscribed to any angeltype.")); + redirect('?'); + } + $types = sql_select("SELECT `AngelTypes`.`id`, `AngelTypes`.`name`, (`AngelTypes`.`restricted`=0 OR (NOT `UserAngelTypes`.`confirm_user_id` IS NULL OR `UserAngelTypes`.`id` IS NULL)) as `enabled` FROM `AngelTypes` LEFT JOIN `UserAngelTypes` ON (`UserAngelTypes`.`angeltype_id`=`AngelTypes`.`id` AND `UserAngelTypes`.`user_id`='" . sql_escape($user['UID']) . "') ORDER BY `AngelTypes`.`name`"); + if (empty($types)) { + return sql_select("SELECT `id`, `name` FROM `AngelTypes` WHERE `restricted` = 0"); + } + return $types; } -function view_user_shifts() { - global $user, $privileges; - global $ical_shifts; +function view_user_shifts() +{ + global $user, $privileges; + global $ical_shifts; - $ical_shifts = []; - $days = load_days(); - $rooms = load_rooms(); - $types = load_types(); + $ical_shifts = []; + $days = load_days(); + $rooms = load_rooms(); + $types = load_types(); - if (! isset($_SESSION['ShiftsFilter'])) { - $room_ids = [ - $rooms[0]['id'] + if (! isset($_SESSION['ShiftsFilter'])) { + $room_ids = [ + $rooms[0]['id'] ]; - $type_ids = array_map('get_ids_from_array', $types); - $_SESSION['ShiftsFilter'] = new ShiftsFilter(in_array('user_shifts_admin', $privileges), $room_ids, $type_ids); - } - update_ShiftsFilter($_SESSION['ShiftsFilter'], in_array('user_shifts_admin', $privileges), $days); - $shiftsFilter = $_SESSION['ShiftsFilter']; + $type_ids = array_map('get_ids_from_array', $types); + $_SESSION['ShiftsFilter'] = new ShiftsFilter(in_array('user_shifts_admin', $privileges), $room_ids, $type_ids); + } + update_ShiftsFilter($_SESSION['ShiftsFilter'], in_array('user_shifts_admin', $privileges), $days); + $shiftsFilter = $_SESSION['ShiftsFilter']; - $shiftCalendarRenderer = shiftCalendarRendererByShiftFilter($shiftsFilter); + $shiftCalendarRenderer = shiftCalendarRendererByShiftFilter($shiftsFilter); - if ($user['api_key'] == "") { - User_reset_api_key($user, false); - } + if ($user['api_key'] == "") { + User_reset_api_key($user, false); + } - $filled = [ + $filled = [ [ 'id' => '1', - 'name' => _("occupied") + 'name' => _("occupied") ], [ 'id' => '0', - 'name' => _("free") - ] + 'name' => _("free") + ] ]; - $start_day = date("Y-m-d", $shiftsFilter->getStartTime()); - $start_time = date("H:i", $shiftsFilter->getStartTime()); - $end_day = date("Y-m-d", $shiftsFilter->getEndTime()); - $end_time = date("H:i", $shiftsFilter->getEndTime()); + $start_day = date("Y-m-d", $shiftsFilter->getStartTime()); + $start_time = date("H:i", $shiftsFilter->getStartTime()); + $end_day = date("Y-m-d", $shiftsFilter->getEndTime()); + $end_time = date("H:i", $shiftsFilter->getEndTime()); - return page([ + return page([ div('col-md-12', [ msg(), template_render(__DIR__ . '/../../templates/user_shifts.html', [ @@ -166,32 +174,33 @@ function view_user_shifts() { 'task_notice' => '1' . _("The tasks shown here are influenced by the angeltypes you joined already!") . " " . _("Description of the jobs.") . "", 'shifts_table' => msg() . $shiftCalendarRenderer->render(), 'ical_text' => '

' . _("iCal export") . '

' . sprintf(_("Export of shown shifts. iCal format or JSON format available (please keep secret, otherwise reset the api key)."), page_link_to_absolute('ical') . '&key=' . $user['api_key'], page_link_to_absolute('shifts_json_export') . '&key=' . $user['api_key'], page_link_to('user_myshifts') . '&reset') . '

', - 'filter' => _("Filter") - ]) - ]) + 'filter' => _("Filter") + ]) + ]) ]); } -function get_ids_from_array($array) { - return $array["id"]; +function get_ids_from_array($array) +{ + return $array["id"]; } -function make_select($items, $selected, $name, $title = null) { - $html_items = []; - if (isset($title)) { - $html_items[] = '

' . $title . '

' . "\n"; - } +function make_select($items, $selected, $name, $title = null) +{ + $html_items = []; + if (isset($title)) { + $html_items[] = '

' . $title . '

' . "\n"; + } - foreach ($items as $i) { - $html_items[] = '
' . (! isset($i['enabled']) || $i['enabled'] ? '' : glyph("lock")) . '

'; - } - $html = '
' . "\n"; - $html .= implode("\n", $html_items); - $html .= buttons([ + foreach ($items as $i) { + $html_items[] = '
' . (! isset($i['enabled']) || $i['enabled'] ? '' : glyph("lock")) . '

'; + } + $html = '
' . "\n"; + $html .= implode("\n", $html_items); + $html .= buttons([ button("javascript: checkAll('selection_" . $name . "', true)", _("All"), ""), - button("javascript: checkAll('selection_" . $name . "', false)", _("None"), "") + button("javascript: checkAll('selection_" . $name . "', false)", _("None"), "") ]); - $html .= '
' . "\n"; - return $html; + $html .= '
' . "\n"; + return $html; } -?> diff --git a/includes/sys_auth.php b/includes/sys_auth.php index 7a1dd4b7..8070d4cf 100644 --- a/includes/sys_auth.php +++ b/includes/sys_auth.php @@ -3,21 +3,22 @@ /** * Testet ob ein User eingeloggt ist und lädt die entsprechenden Privilegien */ -function load_auth() { - global $user, $privileges; +function load_auth() +{ + global $user, $privileges; - $user = null; - if (isset($_SESSION['uid'])) { - $user = sql_select("SELECT * FROM `User` WHERE `UID`='" . sql_escape($_SESSION['uid']) . "' LIMIT 1"); - if (count($user) > 0) { - // User ist eingeloggt, Datensatz zur Verfügung stellen und Timestamp updaten + $user = null; + if (isset($_SESSION['uid'])) { + $user = sql_select("SELECT * FROM `User` WHERE `UID`='" . sql_escape($_SESSION['uid']) . "' LIMIT 1"); + if (count($user) > 0) { + // User ist eingeloggt, Datensatz zur Verfügung stellen und Timestamp updaten list($user) = $user; - sql_query("UPDATE `User` SET " . "`lastLogIn` = '" . time() . "'" . " WHERE `UID` = '" . sql_escape($_SESSION['uid']) . "' LIMIT 1;"); - $privileges = privileges_for_user($user['UID']); - return; + sql_query("UPDATE `User` SET " . "`lastLogIn` = '" . time() . "'" . " WHERE `UID` = '" . sql_escape($_SESSION['uid']) . "' LIMIT 1;"); + $privileges = privileges_for_user($user['UID']); + return; + } + unset($_SESSION['uid']); } - unset($_SESSION['uid']); - } // guest privileges $privileges = privileges_for_group(- 1); @@ -26,66 +27,70 @@ function load_auth() { /** * generate a salt (random string) of arbitrary length suitable for the use with crypt() */ -function generate_salt($length = 16) { - $alphabet = "ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/"; - $salt = ""; - for ($i = 0; $i < $length; $i ++) { - $salt .= $alphabet[rand(0, strlen($alphabet) - 1)]; - } - return $salt; +function generate_salt($length = 16) +{ + $alphabet = "ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/"; + $salt = ""; + for ($i = 0; $i < $length; $i ++) { + $salt .= $alphabet[rand(0, strlen($alphabet) - 1)]; + } + return $salt; } /** * set the password of a user */ -function set_password($uid, $password) { - global $crypt_alg; - $result = sql_query("UPDATE `User` SET `Passwort` = '" . sql_escape(crypt($password, $crypt_alg . '$' . generate_salt(16) . '$')) . "', `password_recovery_token`=NULL WHERE `UID` = " . intval($uid) . " LIMIT 1"); - if ($result === false) { - engelsystem_error('Unable to update password.'); - } - return $result; +function set_password($uid, $password) +{ + global $crypt_alg; + $result = sql_query("UPDATE `User` SET `Passwort` = '" . sql_escape(crypt($password, $crypt_alg . '$' . generate_salt(16) . '$')) . "', `password_recovery_token`=NULL WHERE `UID` = " . intval($uid) . " LIMIT 1"); + if ($result === false) { + engelsystem_error('Unable to update password.'); + } + return $result; } /** * verify a password given a precomputed salt. * if $uid is given and $salt is an old-style salt (plain md5), we convert it automatically */ -function verify_password($password, $salt, $uid = false) { - global $crypt_alg; - $correct = false; - if (substr($salt, 0, 1) == '$') { // new-style crypt() +function verify_password($password, $salt, $uid = false) +{ + global $crypt_alg; + $correct = false; + if (substr($salt, 0, 1) == '$') { // new-style crypt() $correct = crypt($password, $salt) == $salt; - } elseif (substr($salt, 0, 7) == '{crypt}') { // old-style crypt() with DES and static salt - not used anymore + } elseif (substr($salt, 0, 7) == '{crypt}') { // old-style crypt() with DES and static salt - not used anymore $correct = crypt($password, '77') == $salt; - } elseif (strlen($salt) == 32) { // old-style md5 without salt - not used anymore + } elseif (strlen($salt) == 32) { // old-style md5 without salt - not used anymore $correct = md5($password) == $salt; - } + } - if ($correct && substr($salt, 0, strlen($crypt_alg)) != $crypt_alg && $uid) { - // this password is stored in another format than we want it to be. + if ($correct && substr($salt, 0, strlen($crypt_alg)) != $crypt_alg && $uid) { + // this password is stored in another format than we want it to be. // let's update it! // we duplicate the query from the above set_password() function to have the extra safety of checking the old hash sql_query("UPDATE `User` SET `Passwort` = '" . sql_escape(crypt($password, $crypt_alg . '$' . generate_salt() . '$')) . "' WHERE `UID` = " . intval($uid) . " AND `Passwort` = '" . sql_escape($salt) . "' LIMIT 1"); - } - return $correct; + } + return $correct; } -function privileges_for_user($user_id) { - $privileges = []; - $user_privs = sql_select("SELECT `Privileges`.`name` FROM `User` JOIN `UserGroups` ON (`User`.`UID` = `UserGroups`.`uid`) JOIN `GroupPrivileges` ON (`UserGroups`.`group_id` = `GroupPrivileges`.`group_id`) JOIN `Privileges` ON (`GroupPrivileges`.`privilege_id` = `Privileges`.`id`) WHERE `User`.`UID`='" . sql_escape($user_id) . "'"); - foreach ($user_privs as $user_priv) { - $privileges[] = $user_priv['name']; - } - return $privileges; +function privileges_for_user($user_id) +{ + $privileges = []; + $user_privs = sql_select("SELECT `Privileges`.`name` FROM `User` JOIN `UserGroups` ON (`User`.`UID` = `UserGroups`.`uid`) JOIN `GroupPrivileges` ON (`UserGroups`.`group_id` = `GroupPrivileges`.`group_id`) JOIN `Privileges` ON (`GroupPrivileges`.`privilege_id` = `Privileges`.`id`) WHERE `User`.`UID`='" . sql_escape($user_id) . "'"); + foreach ($user_privs as $user_priv) { + $privileges[] = $user_priv['name']; + } + return $privileges; } -function privileges_for_group($group_id) { - $privileges = []; - $groups_privs = sql_select("SELECT * FROM `GroupPrivileges` JOIN `Privileges` ON (`GroupPrivileges`.`privilege_id` = `Privileges`.`id`) WHERE `group_id`='" . sql_escape($group_id) . "'"); - foreach ($groups_privs as $guest_priv) { - $privileges[] = $guest_priv['name']; - } - return $privileges; +function privileges_for_group($group_id) +{ + $privileges = []; + $groups_privs = sql_select("SELECT * FROM `GroupPrivileges` JOIN `Privileges` ON (`GroupPrivileges`.`privilege_id` = `Privileges`.`id`) WHERE `group_id`='" . sql_escape($group_id) . "'"); + foreach ($groups_privs as $guest_priv) { + $privileges[] = $guest_priv['name']; + } + return $privileges; } -?> diff --git a/includes/sys_form.php b/includes/sys_form.php index 98ef2134..4a97b672 100644 --- a/includes/sys_form.php +++ b/includes/sys_form.php @@ -10,15 +10,17 @@ * The value * @return string rendered html */ -function form_hidden($name, $value) { - return ''; +function form_hidden($name, $value) +{ + return ''; } /** * Rendert ein Zahlenfeld mit Buttons zum verstellen */ -function form_spinner($name, $label, $value) { - return form_element($label, ' +function form_spinner($name, $label, $value) +{ + return form_element($label, '
@@ -54,12 +56,13 @@ function form_spinner($name, $label, $value) { * Earliest possible date * @return HTML */ -function form_date($name, $label, $value, $start_date = '', $end_date = '') { - $dom_id = $name . '-date'; - $value = is_numeric($value) ? date('Y-m-d', $value) : ''; - $start_date = is_numeric($start_date) ? date('Y-m-d', $start_date) : ''; - $end_date = is_numeric($end_date) ? date('Y-m-d', $end_date) : ''; - return form_element($label, ' +function form_date($name, $label, $value, $start_date = '', $end_date = '') +{ + $dom_id = $name . '-date'; + $value = is_numeric($value) ? date('Y-m-d', $value) : ''; + $start_date = is_numeric($start_date) ? date('Y-m-d', $start_date) : ''; + $end_date = is_numeric($end_date) ? date('Y-m-d', $end_date) : ''; + return form_element($label, '
' . glyph('th') . '
@@ -89,12 +92,13 @@ function form_date($name, $label, $value, $start_date = '', $end_date = '') { * @param * selected Array mit den Keys, die ausgewählt sind */ -function form_checkboxes($name, $label, $items, $selected) { - $html = form_element($label, ''); - foreach ($items as $key => $item) { - $html .= form_checkbox($name . '_' . $key, $item, array_search($key, $selected) !== false); - } - return $html; +function form_checkboxes($name, $label, $items, $selected) +{ + $html = form_element($label, ''); + foreach ($items as $key => $item) { + $html .= form_checkbox($name . '_' . $key, $item, array_search($key, $selected) !== false); + } + return $html; } /** @@ -111,68 +115,74 @@ function form_checkboxes($name, $label, $items, $selected) { * @param * disabled Wie selected, nur dass die entsprechenden Checkboxen deaktiviert statt markiert sind */ -function form_multi_checkboxes($names, $label, $items, $selected, $disabled = []) { - $html = ""; - foreach ($names as $title) { - $html .= ""; - } - $html .= ""; - foreach ($items as $key => $item) { - $html .= ""; - foreach ($names as $name => $title) { - $dom_id = $name . '_' . $key; - $sel = array_search($key, $selected[$name]) !== false ? ' checked="checked"' : ""; - if (! empty($disabled) && ! empty($disabled[$name]) && array_search($key, $disabled[$name]) !== false) { - $sel .= ' disabled="disabled"'; - } - $html .= ''; +function form_multi_checkboxes($names, $label, $items, $selected, $disabled = []) +{ + $html = "
$title
"; + foreach ($names as $title) { + $html .= ""; } - $html .= ''; - } - $html .= "
$title
"; - return form_element($label, $html); + $html .= ""; + foreach ($items as $key => $item) { + $html .= ""; + foreach ($names as $name => $title) { + $dom_id = $name . '_' . $key; + $sel = array_search($key, $selected[$name]) !== false ? ' checked="checked"' : ""; + if (! empty($disabled) && ! empty($disabled[$name]) && array_search($key, $disabled[$name]) !== false) { + $sel .= ' disabled="disabled"'; + } + $html .= ''; + } + $html .= ''; + } + $html .= ""; + return form_element($label, $html); } /** * Rendert eine Checkbox */ -function form_checkbox($name, $label, $selected, $value = 'checked') { - return '
'; +function form_checkbox($name, $label, $selected, $value = 'checked') +{ + return '
'; } /** * Rendert einen Radio */ -function form_radio($name, $label, $selected, $value) { - return '
'; +function form_radio($name, $label, $selected, $value) +{ + return '
'; } /** * Rendert einen Infotext in das Formular */ -function form_info($label, $text = "") { - if ($label == "") { - return '' . glyph('info-sign') . $text . ''; - } - if ($text == "") { - return '

' . $label . '

'; - } - return form_element($label, '

' . $text . '

', ''); +function form_info($label, $text = "") +{ + if ($label == "") { + return '' . glyph('info-sign') . $text . ''; + } + if ($text == "") { + return '

' . $label . '

'; + } + return form_element($label, '

' . $text . '

', ''); } /** * Rendert den Absenden-Button eines Formulars */ -function form_submit($name, $label) { - return form_element('', ""); +function form_submit($name, $label) +{ + return form_element('', ""); } /** * Rendert ein Formular-Textfeld */ -function form_text($name, $label, $value, $disabled = false) { - $disabled = $disabled ? ' disabled="disabled"' : ''; - return form_element($label, '', 'form_' . $name); +function form_text($name, $label, $value, $disabled = false) +{ + $disabled = $disabled ? ' disabled="disabled"' : ''; + return form_element($label, '', 'form_' . $name); } /** @@ -187,95 +197,104 @@ function form_text($name, $label, $value, $disabled = false) { * @param Boolean $disabled * Is the field enabled? */ -function form_text_placeholder($name, $placeholder, $value, $disabled = false) { - $disabled = $disabled ? ' disabled="disabled"' : ''; - return form_element('', ''); +function form_text_placeholder($name, $placeholder, $value, $disabled = false) +{ + $disabled = $disabled ? ' disabled="disabled"' : ''; + return form_element('', ''); } /** * Rendert ein Formular-Emailfeld */ -function form_email($name, $label, $value, $disabled = false) { - $disabled = $disabled ? ' disabled="disabled"' : ''; - return form_element($label, '', 'form_' . $name); +function form_email($name, $label, $value, $disabled = false) +{ + $disabled = $disabled ? ' disabled="disabled"' : ''; + return form_element($label, '', 'form_' . $name); } /** * Rendert ein Formular-Dateifeld */ -function form_file($name, $label) { - return form_element($label, '', 'form_' . $name); +function form_file($name, $label) +{ + return form_element($label, '', 'form_' . $name); } /** * Rendert ein Formular-Passwortfeld */ -function form_password($name, $label, $disabled = false) { - $disabled = $disabled ? ' disabled="disabled"' : ''; - return form_element($label, '', 'form_' . $name); +function form_password($name, $label, $disabled = false) +{ + $disabled = $disabled ? ' disabled="disabled"' : ''; + return form_element($label, '', 'form_' . $name); } /** * Renders a password input with placeholder instead of label. */ -function form_password_placeholder($name, $placeholder, $disabled = false) { - $disabled = $disabled ? ' disabled="disabled"' : ''; - return form_element('', '', 'form_' . $name); +function form_password_placeholder($name, $placeholder, $disabled = false) +{ + $disabled = $disabled ? ' disabled="disabled"' : ''; + return form_element('', '', 'form_' . $name); } /** * Rendert ein Formular-Textfeld */ -function form_textarea($name, $label, $value, $disabled = false) { - $disabled = $disabled ? ' disabled="disabled"' : ''; - return form_element($label, '', 'form_' . $name); +function form_textarea($name, $label, $value, $disabled = false) +{ + $disabled = $disabled ? ' disabled="disabled"' : ''; + return form_element($label, '', 'form_' . $name); } /** * Rendert ein Formular-Auswahlfeld */ -function form_select($name, $label, $values, $selected) { - return form_element($label, html_select_key('form_' . $name, $name, $values, $selected), 'form_' . $name); +function form_select($name, $label, $values, $selected) +{ + return form_element($label, html_select_key('form_' . $name, $name, $values, $selected), 'form_' . $name); } /** * Rendert ein Formular-Element */ -function form_element($label, $input, $for = "") { - if ($label == '') { - return '
' . $input . '
'; - } +function form_element($label, $input, $for = "") +{ + if ($label == '') { + return '
' . $input . '
'; + } - return '
' . '' . $input . '
'; + return '
' . '' . $input . '
'; } /** * Rendert ein Formular */ -function form($elements, $action = "") { - return '
' . join($elements) . '
'; +function form($elements, $action = "") +{ + return '
' . join($elements) . '
'; } -function html_options($name, $options, $selected = "") { - $html = ""; - foreach ($options as $value => $label) { - $html .= ' ' . $label; - } - - return $html; -} - -function html_select_key($dom_id, $name, $rows, $selected) { - $html = ' ' . $label; } - } - $html .= ''; - return $html; + + return $html; } -?> \ No newline at end of file +function html_select_key($dom_id, $name, $rows, $selected) +{ + $html = ''; + return $html; +} diff --git a/includes/sys_log.php b/includes/sys_log.php index 66c323c1..18a0e83c 100644 --- a/includes/sys_log.php +++ b/includes/sys_log.php @@ -7,24 +7,26 @@ * @param * $message */ -function engelsystem_log($message) { - global $user; +function engelsystem_log($message) +{ + global $user; - $nick = "Guest"; - if (isset($user)) { - $nick = User_Nick_render($user); - } - LogEntry_create($nick, $message); + $nick = "Guest"; + if (isset($user)) { + $nick = User_Nick_render($user); + } + LogEntry_create($nick, $message); } /** * Generates a PHP Stacktrace. */ -function debug_string_backtrace() { - ob_start(); - debug_print_backtrace(); - $trace = ob_get_contents(); - ob_end_clean(); +function debug_string_backtrace() +{ + ob_start(); + debug_print_backtrace(); + $trace = ob_get_contents(); + ob_end_clean(); // Remove first item from backtrace as it's this function which // is redundant. @@ -35,5 +37,3 @@ function debug_string_backtrace() { return $trace; } - -?> \ No newline at end of file diff --git a/includes/sys_menu.php b/includes/sys_menu.php index e1a6a12e..03009516 100644 --- a/includes/sys_menu.php +++ b/includes/sys_menu.php @@ -1,120 +1,126 @@ addHint(admin_new_questions()); - $hints_renderer->addHint(user_angeltypes_unconfirmed_hint()); - $hints_renderer->addHint(render_user_departure_date_hint()); - $hints_renderer->addHint(user_driver_license_required_hint()); + if (isset($user)) { + $hints_renderer->addHint(admin_new_questions()); + $hints_renderer->addHint(user_angeltypes_unconfirmed_hint()); + $hints_renderer->addHint(render_user_departure_date_hint()); + $hints_renderer->addHint(user_driver_license_required_hint()); // Important hints: $hints_renderer->addHint(render_user_freeloader_hint(), true); - $hints_renderer->addHint(render_user_arrived_hint(), true); - $hints_renderer->addHint(render_user_tshirt_hint(), true); - $hints_renderer->addHint(render_user_dect_hint(), true); - } + $hints_renderer->addHint(render_user_arrived_hint(), true); + $hints_renderer->addHint(render_user_tshirt_hint(), true); + $hints_renderer->addHint(render_user_dect_hint(), true); + } - return $hints_renderer->render(); + return $hints_renderer->render(); } /** * Renders the header toolbar containing search, login/logout, user and settings links. */ -function header_toolbar() { - global $page, $privileges, $user; +function header_toolbar() +{ + global $page, $privileges, $user; - $toolbar_items = []; + $toolbar_items = []; - if (isset($user)) { - $toolbar_items[] = toolbar_item_link(page_link_to('shifts') . '&action=next', 'time', User_shift_state_render($user)); - } + if (isset($user)) { + $toolbar_items[] = toolbar_item_link(page_link_to('shifts') . '&action=next', 'time', User_shift_state_render($user)); + } - if (! isset($user) && in_array('register', $privileges)) { - $toolbar_items[] = toolbar_item_link(page_link_to('register'), 'plus', register_title(), $page == 'register'); - } + if (! isset($user) && in_array('register', $privileges)) { + $toolbar_items[] = toolbar_item_link(page_link_to('register'), 'plus', register_title(), $page == 'register'); + } - if (in_array('login', $privileges)) { - $toolbar_items[] = toolbar_item_link(page_link_to('login'), 'log-in', login_title(), $page == 'login'); - } + if (in_array('login', $privileges)) { + $toolbar_items[] = toolbar_item_link(page_link_to('login'), 'log-in', login_title(), $page == 'login'); + } - if (isset($user) && in_array('user_messages', $privileges)) { - $toolbar_items[] = toolbar_item_link(page_link_to('user_messages'), 'envelope', user_unread_messages()); - } + if (isset($user) && in_array('user_messages', $privileges)) { + $toolbar_items[] = toolbar_item_link(page_link_to('user_messages'), 'envelope', user_unread_messages()); + } - $toolbar_items[] = header_render_hints(); - if (in_array('user_myshifts', $privileges)) { - $toolbar_items[] = toolbar_item_link(page_link_to('users') . '&action=view', ' icon-icon_angel', $user['Nick'], $page == 'users'); - } + $toolbar_items[] = header_render_hints(); + if (in_array('user_myshifts', $privileges)) { + $toolbar_items[] = toolbar_item_link(page_link_to('users') . '&action=view', ' icon-icon_angel', $user['Nick'], $page == 'users'); + } - $user_submenu = make_user_submenu(); - if (count($user_submenu) > 0) { - $toolbar_items[] = toolbar_dropdown('', '', $user_submenu); - } + $user_submenu = make_user_submenu(); + if (count($user_submenu) > 0) { + $toolbar_items[] = toolbar_dropdown('', '', $user_submenu); + } - return toolbar($toolbar_items, true); + return toolbar($toolbar_items, true); } -function make_user_submenu() { - global $privileges, $page; +function make_user_submenu() +{ + global $privileges, $page; - $user_submenu = make_langselect(); + $user_submenu = make_langselect(); - if (in_array('user_settings', $privileges) || in_array('logout', $privileges)) { - $user_submenu[] = toolbar_item_divider(); - } + if (in_array('user_settings', $privileges) || in_array('logout', $privileges)) { + $user_submenu[] = toolbar_item_divider(); + } - if (in_array('user_settings', $privileges)) { - $user_submenu[] = toolbar_item_link(page_link_to('user_settings'), 'list-alt', settings_title(), $page == 'user_settings'); - } + if (in_array('user_settings', $privileges)) { + $user_submenu[] = toolbar_item_link(page_link_to('user_settings'), 'list-alt', settings_title(), $page == 'user_settings'); + } - if (in_array('logout', $privileges)) { - $user_submenu[] = toolbar_item_link(page_link_to('logout'), 'log-out', logout_title(), $page == 'logout'); - } + if (in_array('logout', $privileges)) { + $user_submenu[] = toolbar_item_link(page_link_to('logout'), 'log-out', logout_title(), $page == 'logout'); + } - return $user_submenu; + return $user_submenu; } -function make_navigation() { - global $page, $privileges; +function make_navigation() +{ + global $page, $privileges; - $menu = []; - $pages = [ + $menu = []; + $pages = [ "news" => news_title(), "user_meetings" => meetings_title(), "user_shifts" => shifts_title(), "angeltypes" => angeltypes_title(), - "user_questions" => questions_title() + "user_questions" => questions_title() ]; - foreach ($pages as $menu_page => $title) { - if (in_array($menu_page, $privileges)) { - $menu[] = toolbar_item_link(page_link_to($menu_page), '', $title, $menu_page == $page); + foreach ($pages as $menu_page => $title) { + if (in_array($menu_page, $privileges)) { + $menu[] = toolbar_item_link(page_link_to($menu_page), '', $title, $menu_page == $page); + } } - } - $menu = make_room_navigation($menu); + $menu = make_room_navigation($menu); - $admin_menu = []; - $admin_pages = [ + $admin_menu = []; + $admin_pages = [ "admin_arrive" => admin_arrive_title(), "admin_active" => admin_active_title(), "admin_user" => admin_user_title(), @@ -126,20 +132,20 @@ function make_navigation() { "admin_groups" => admin_groups_title(), "admin_import" => admin_import_title(), "admin_log" => admin_log_title(), - "admin_event_config" => event_config_title() + "admin_event_config" => event_config_title() ]; - foreach ($admin_pages as $menu_page => $title) { - if (in_array($menu_page, $privileges)) { - $admin_menu[] = toolbar_item_link(page_link_to($menu_page), '', $title, $menu_page == $page); + foreach ($admin_pages as $menu_page => $title) { + if (in_array($menu_page, $privileges)) { + $admin_menu[] = toolbar_item_link(page_link_to($menu_page), '', $title, $menu_page == $page); + } } - } - if (count($admin_menu) > 0) { - $menu[] = toolbar_dropdown('', _("Admin"), $admin_menu); - } + if (count($admin_menu) > 0) { + $menu[] = toolbar_dropdown('', _("Admin"), $admin_menu); + } - return toolbar($menu); + return toolbar($menu); } /** @@ -148,32 +154,32 @@ function make_navigation() { * @param string[] $menu * Rendered menu */ -function make_room_navigation($menu) { - global $privileges; +function make_room_navigation($menu) +{ + global $privileges; - if (! in_array('view_rooms', $privileges)) { + if (! in_array('view_rooms', $privileges)) { + return $menu; + } + + $rooms = Rooms(); + $room_menu = []; + if (in_array('admin_rooms', $privileges)) { + $room_menu[] = toolbar_item_link(page_link_to('admin_rooms'), 'list', _("Manage rooms")); + } + if (count($room_menu) > 0) { + $room_menu[] = toolbar_item_divider(); + } + foreach ($rooms as $room) { + $room_menu[] = toolbar_item_link(room_link($room), 'map-marker', $room['Name']); + } + if (count($room_menu > 0)) { + $menu[] = toolbar_dropdown('map-marker', _("Rooms"), $room_menu); + } return $menu; - } - - $rooms = Rooms(); - $room_menu = []; - if (in_array('admin_rooms', $privileges)) { - $room_menu[] = toolbar_item_link(page_link_to('admin_rooms'), 'list', _("Manage rooms")); - } - if (count($room_menu) > 0) { - $room_menu[] = toolbar_item_divider(); - } - foreach ($rooms as $room) { - $room_menu[] = toolbar_item_link(room_link($room), 'map-marker', $room['Name']); - } - if (count($room_menu > 0)) { - $menu[] = toolbar_dropdown('map-marker', _("Rooms"), $room_menu); - } - return $menu; } -function make_menu() { - return make_navigation(); +function make_menu() +{ + return make_navigation(); } - -?> diff --git a/includes/sys_page.php b/includes/sys_page.php index 82ce9896..d173d5dc 100644 --- a/includes/sys_page.php +++ b/includes/sys_page.php @@ -17,18 +17,19 @@ use Engelsystem\ValidationResult; * @param int $default_value * Default value unix timestamp */ -function check_request_datetime($date_name, $time_name, $allowed_days, $default_value) { - $time = date("H:i", $default_value); - $day = date("Y-m-d", $default_value); +function check_request_datetime($date_name, $time_name, $allowed_days, $default_value) +{ + $time = date("H:i", $default_value); + $day = date("Y-m-d", $default_value); - if (isset($_REQUEST[$time_name]) && preg_match('#^\d{1,2}:\d\d$#', trim($_REQUEST[$time_name]))) { - $time = trim($_REQUEST[$time_name]); - } - if (isset($_REQUEST[$date_name]) && in_array($_REQUEST[$date_name], $allowed_days)) { - $day = $_REQUEST[$date_name]; - } + if (isset($_REQUEST[$time_name]) && preg_match('#^\d{1,2}:\d\d$#', trim($_REQUEST[$time_name]))) { + $time = trim($_REQUEST[$time_name]); + } + if (isset($_REQUEST[$date_name]) && in_array($_REQUEST[$date_name], $allowed_days)) { + $day = $_REQUEST[$date_name]; + } - return parse_date("Y-m-d H:i", $day . " " . $time); + return parse_date("Y-m-d H:i", $day . " " . $time); } /** @@ -40,20 +41,22 @@ function check_request_datetime($date_name, $time_name, $allowed_days, $default_ * The string to parse * @return The parsed unix timestamp */ -function parse_date($pattern, $value) { - $datetime = DateTime::createFromFormat($pattern, trim($value)); - if ($datetime == null) { - return null; - } - return $datetime->getTimestamp(); +function parse_date($pattern, $value) +{ + $datetime = DateTime::createFromFormat($pattern, trim($value)); + if ($datetime == null) { + return null; + } + return $datetime->getTimestamp(); } /** * Leitet den Browser an die übergebene URL weiter und hält das Script an. */ -function redirect($url) { - header("Location: " . $url, true, 302); - raw_output(""); +function redirect($url) +{ + header("Location: " . $url, true, 302); + raw_output(""); } /** @@ -62,9 +65,10 @@ function redirect($url) { * @param String $output * String to display */ -function raw_output($output) { - echo $output; - die(); +function raw_output($output) +{ + echo $output; + die(); } /** @@ -77,12 +81,13 @@ function raw_output($output) { * @param string $value_name * name of the column to use as displayed value */ -function select_array($data, $key_name, $value_name) { - $ret = []; - foreach ($data as $value) { - $ret[$value[$key_name]] = $value[$value_name]; - } - return $ret; +function select_array($data, $key_name, $value_name) +{ + $ret = []; + foreach ($data as $value) { + $ret[$value[$key_name]] = $value[$value_name]; + } + return $ret; } /** @@ -93,11 +98,12 @@ function select_array($data, $key_name, $value_name) { * @param array $default * Default return value, if param is not set */ -function check_request_int_array($name, $default = []) { - if (isset($_REQUEST[$name]) && is_array($_REQUEST[$name])) { - return array_filter($_REQUEST[$name], 'is_numeric'); - } - return $default; +function check_request_int_array($name, $default = []) +{ + if (isset($_REQUEST[$name]) && is_array($_REQUEST[$name])) { + return array_filter($_REQUEST[$name], 'is_numeric'); + } + return $default; } /** @@ -112,11 +118,12 @@ function check_request_int_array($name, $default = []) { * is a null value allowed? * @return ValidationResult containing the parsed date */ -function check_request_date($name, $error_message = null, $null_allowed = false) { - if (! isset($_REQUEST[$name])) { - return new ValidationResult($null_allowed, null); - } - return check_date($_REQUEST[$name], $error_message, $null_allowed); +function check_request_date($name, $error_message = null, $null_allowed = false) +{ + if (! isset($_REQUEST[$name])) { + return new ValidationResult($null_allowed, null); + } + return check_date($_REQUEST[$name], $error_message, $null_allowed); } /** @@ -131,61 +138,65 @@ function check_request_date($name, $error_message = null, $null_allowed = false) * is a null value allowed? * @return ValidationResult containing the parsed date */ -function check_date($input, $error_message = null, $null_allowed = false) { - if ($tmp = parse_date("Y-m-d H:i", trim($input) . " 00:00")) { - return new ValidationResult(true, $tmp); - } - if ($null_allowed) { - return new ValidationResult(true, null); - } +function check_date($input, $error_message = null, $null_allowed = false) +{ + if ($tmp = parse_date("Y-m-d H:i", trim($input) . " 00:00")) { + return new ValidationResult(true, $tmp); + } + if ($null_allowed) { + return new ValidationResult(true, null); + } - error($error_message); - return new ValidationResult(false, null); + error($error_message); + return new ValidationResult(false, null); } /** * Returns REQUEST value filtered or default value (null) if not set. */ -function strip_request_item($name, $default_value = null) { - if (isset($_REQUEST[$name])) { - return strip_item($_REQUEST[$name]); - } - return $default_value; +function strip_request_item($name, $default_value = null) +{ + if (isset($_REQUEST[$name])) { + return strip_item($_REQUEST[$name]); + } + return $default_value; } /** * Testet, ob der angegebene REQUEST Wert ein Integer ist, bzw. * eine ID sein könnte. */ -function test_request_int($name) { - if (isset($_REQUEST[$name])) { - return preg_match("/^[0-9]*$/", $_REQUEST[$name]); - } - return false; +function test_request_int($name) +{ + if (isset($_REQUEST[$name])) { + return preg_match("/^[0-9]*$/", $_REQUEST[$name]); + } + return false; } /** * Gibt den gefilterten REQUEST Wert mit Zeilenumbrüchen zurück */ -function strip_request_item_nl($name, $default_value = null) { - if (isset($_REQUEST[$name])) { - return preg_replace("/([^\p{L}\p{S}\p{P}\p{Z}\p{N}+\n]{1,})/ui", '', strip_tags($_REQUEST[$name])); - } - return $default_value; +function strip_request_item_nl($name, $default_value = null) +{ + if (isset($_REQUEST[$name])) { + return preg_replace("/([^\p{L}\p{S}\p{P}\p{Z}\p{N}+\n]{1,})/ui", '', strip_tags($_REQUEST[$name])); + } + return $default_value; } /** * Entfernt unerwünschte Zeichen */ -function strip_item($item) { - return preg_replace("/([^\p{L}\p{S}\p{P}\p{Z}\p{N}+]{1,})/ui", '', strip_tags($item)); +function strip_item($item) +{ + return preg_replace("/([^\p{L}\p{S}\p{P}\p{Z}\p{N}+]{1,})/ui", '', strip_tags($item)); } /** * Überprüft eine E-Mail-Adresse. */ -function check_email($email) { - return (bool) filter_var($email, FILTER_VALIDATE_EMAIL); +function check_email($email) +{ + return (bool) filter_var($email, FILTER_VALIDATE_EMAIL); } - -?> diff --git a/includes/sys_template.php b/includes/sys_template.php index 3679328b..059d3169 100644 --- a/includes/sys_template.php +++ b/includes/sys_template.php @@ -8,16 +8,17 @@ $themes = [ '3' => "Engelsystem 32c3 (2015)", "2" => "Engelsystem cccamp15", "0" => "Engelsystem light", - "1" => "Engelsystem dark" + "1" => "Engelsystem dark" ]; /** * Display muted (grey) text. * - * @param string $text + * @param string $text */ -function mute($text) { - return '' . $text . ''; +function mute($text) +{ + return '' . $text . ''; } /** @@ -28,84 +29,96 @@ function mute($text) { * @param string $class * default, primary, info, success, warning, danger */ -function label($content, $class = 'default') { - return '' . $content . ''; +function label($content, $class = 'default') +{ + return '' . $content . ''; } -function progress_bar($valuemin, $valuemax, $valuenow, $class = '', $content = '') { - return '
' . $content . '
'; +function progress_bar($valuemin, $valuemax, $valuenow, $class = '', $content = '') +{ + return '
' . $content . '
'; } /** * Render glyphicon * - * @param string $glyph_name + * @param string $glyph_name */ -function glyph($glyph_name) { - return ' '; +function glyph($glyph_name) +{ + return ' '; } /** * Renders a tick or a cross by given boolean * - * @param boolean $boolean + * @param boolean $boolean */ -function glyph_bool($boolean) { - return '' . glyph($boolean ? 'ok' : 'remove') . ''; +function glyph_bool($boolean) +{ + return '' . glyph($boolean ? 'ok' : 'remove') . ''; } -function div($class, $content = [], $dom_id = "") { - if (is_array($content)) { - $content = join("\n", $content); - } - $dom_id = $dom_id != '' ? ' id="' . $dom_id . '"' : ''; - return '' . $content . '
'; +function div($class, $content = [], $dom_id = "") +{ + if (is_array($content)) { + $content = join("\n", $content); + } + $dom_id = $dom_id != '' ? ' id="' . $dom_id . '"' : ''; + return '' . $content . '
'; } -function heading($content, $number = 1) { - return "" . $content . ""; +function heading($content, $number = 1) +{ + return "" . $content . ""; } /** * Render a toolbar. * - * @param array $items + * @param array $items * @return string */ -function toolbar($items = [], $right = false) { - return ''; +function toolbar($items = [], $right = false) +{ + return ''; } -function toolbar_pills($items) { - return ''; +function toolbar_pills($items) +{ + return ''; } /** * Render a link for a toolbar. * - * @param string $href - * @param string $glyphicon - * @param string $label - * @param bool $selected + * @param string $href + * @param string $glyphicon + * @param string $label + * @param bool $selected * @return string */ -function toolbar_item_link($href, $glyphicon, $label, $selected = false) { - return '
  • ' . ($glyphicon != '' ? ' ' : '') . $label . '
  • '; +function toolbar_item_link($href, $glyphicon, $label, $selected = false) +{ + return '
  • ' . ($glyphicon != '' ? ' ' : '') . $label . '
  • '; } -function toolbar_item_divider() { - return '
  • '; +function toolbar_item_divider() +{ + return '
  • '; } -function toolbar_dropdown($glyphicon, $label, $submenu, $class = '') { - return ''; } -function toolbar_popover($glyphicon, $label, $content, $class = '') { - $dom_id = md5(microtime() . $glyphicon . $label); - return '