@ -35,7 +35,18 @@ function shift_entry_add_controller()
if (in_array('user_shifts_admin', $privileges) || in_array('shiftentry_edit_angeltype_supporter', $privileges)) {
if (in_array('user_shifts_admin', $privileges) || in_array('shiftentry_edit_angeltype_supporter', $privileges)) {
$type = AngelType($type_id);
$type = AngelType($type_id);
} else {
} 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 = sql_select("
SELECT * FROM `UserAngelTypes`
JOIN `AngelTypes` ON (`UserAngelTypes`.`angeltype_id` = `AngelTypes`.`id`)
WHERE `AngelTypes`.`id` = '" . sql_escape($type_id) . "'
$users = sql_select("SELECT *, (SELECT count(*) FROM `ShiftEntry` WHERE `freeloaded`=1 AND `ShiftEntry`.`UID`=`User`.`UID`) AS `freeloaded` FROM `User` ORDER BY `Nick`");
$users = sql_select("
SELECT *, (SELECT count(*) FROM `ShiftEntry` WHERE `freeloaded`=1 AND `ShiftEntry`.`UID`=`User`.`UID`) AS `freeloaded`
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),
error(sprintf(
_("Do you want to delete the shift %s from %s to %s?"),
$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));
$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);
engelsystem_log($success_message);
success($success_message);
success($success_message);
@ -274,7 +289,7 @@ function user_angeltype_add_controller()
$angeltype = load_angeltype();
$angeltype = load_angeltype();
// User is joining by itself
// User is joining by itself
if (!User_is_AngelType_supporter($user, $angeltype)) {
if (!User_is_AngelType_supporter($user, $angeltype)) {
* Generates a hint, if user joined angeltypes that require a driving license and the user has no driver license information provided.
* 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()
function user_driver_license_required_hint()
{
{
@ -17,7 +18,10 @@ function user_driver_license_required_hint()
foreach ($angeltypes as $angeltype) {
foreach ($angeltypes as $angeltype) {
if ($angeltype['requires_driver_license']) {
if ($angeltype['requires_driver_license']) {
return sprintf(_("You joined an angeltype which requires a driving license. Please edit your driving license information here: %s."), '<ahref="' . user_driver_license_edit_link() . '">' . _("driving license information") . '</a>');
return sprintf(
_("You joined an angeltype which requires a driving license. Please edit your driving license information here: %s."),
@ -10,7 +10,10 @@ function engelsystem_email_to_user($recipient_user, $title, $message, $not_if_it
gettext_locale($recipient_user['Sprache']);
gettext_locale($recipient_user['Sprache']);
$message = sprintf(_("Hi %s,"), $recipient_user['Nick']) . "\n\n" . _("here is a message for you from the engelsystem:") . "\n\n" . $message . "\n\n" . _("This email is autogenerated and has not to be signed. You got this email because you are registered in the engelsystem.");
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."));
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.")
$group = sql_select("SELECT * FROM `Groups` WHERE `UID`='" . sql_escape($group_id) . "' LIMIT 1");
$group = sql_select("SELECT * FROM `Groups` WHERE `UID`='" . sql_escape($group_id) . "' LIMIT 1");
if (count($group) > 0) {
if (count($group) > 0) {
list($group) = $group;
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`");
form_checkboxes('angel_types', _("What do you want to do?") . sprintf(" (<ahref=\"%s\">%s</a>)", page_link_to('angeltypes') . '&action=about', _("Description of job types")), $angel_types, $selected_angel_types),
form_checkboxes(
form_info("", _("Restricted angel types need will be confirmed later by a supporter. You can change your selection in the options section."))
'angel_types',
_("What do you want to do?") . sprintf(
" (<ahref=\"%s\">%s</a>)",
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.")
)
]),
]),
div('col-md-6', [
div('col-md-6', [
div('row', [
div('row', [
@ -316,7 +351,7 @@ function guest_login()
if (count($login_user) > 0) {
if (count($login_user) > 0) {
$login_user = $login_user[0];
$login_user = $login_user[0];
if (isset($_REQUEST['password'])) {
if (isset($_REQUEST['password'])) {
if (!verify_password($_REQUEST['password'], $login_user['Passwort'], $login_user['UID'])) {
if (!verify_password($_REQUEST['password'], $login_user['Passwort'], $login_user['UID'])) {
$valid = false;
$valid = false;
error(_("Your password is incorrect. Please try it again."));
error(_("Your password is incorrect. Please try it again."));
$done_shifts_seconds = sql_select_single_cell("SELECT SUM(`Shifts`.`end` - `Shifts`.`start`) FROM `ShiftEntry` JOIN `Shifts` USING (`SID`) WHERE `Shifts`.`end` <UNIX_TIMESTAMP()");
$done_shifts_seconds = sql_select_single_cell("SELECT SUM(`Shifts`.`end` - `Shifts`.`start`) FROM `ShiftEntry` JOIN `Shifts` USING (`SID`) WHERE `Shifts`.`end` <UNIX_TIMESTAMP()");
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),
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."),
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."));
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."));
}
}
@ -92,7 +92,10 @@ function user_settings_main($user_source, $enable_tshirt_size, $tshirt_sizes)
function user_settings_password($user_source)
function user_settings_password($user_source)
{
{
global $min_password_length;
global $min_password_length;
if (! isset($_REQUEST['password']) || ! verify_password($_REQUEST['password'], $user_source['Passwort'], $user_source['UID'])) {
error(_("The administration has not configured any angeltypes yet - or you are not subscribed to any angeltype."));
error(_("The administration has not configured any angeltypes yet - or you are not subscribed to any angeltype."));
redirect('?');
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`");
$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)) {
if (empty($types)) {
return sql_select("SELECT `id`, `name` FROM `AngelTypes` WHERE `restricted` = 0");
return sql_select("SELECT `id`, `name` FROM `AngelTypes` WHERE `restricted` = 0");
'task_notice' => '<sup>1</sup>' . _("The tasks shown here are influenced by the angeltypes you joined already!") . " <ahref=\"".page_link_to('angeltypes').'&action=about'."\">" . _("Description of the jobs.") . "</a>",
'task_notice' =>
'<sup>1</sup>'
. _("The tasks shown here are influenced by the angeltypes you joined already!")
_("Export of shown shifts. <ahref=\"%s\">iCal format</a> or <ahref=\"%s\">JSON format</a> available (please keep secret, otherwise <ahref=\"%s\">reset the api key</a>)."),
info(sprintf($supporter ? _("Do you really want to add supporter rights for %s to %s?") : _("Do you really want to remove supporter rights for %s from %s?"), $angeltype['name'], User_Nick_render($user)), true),
info(sprintf(
$supporter
? _("Do you really want to add supporter rights for %s to %s?")
: _("Do you really want to remove supporter rights for %s from %s?"),
@ -23,12 +23,28 @@ function UserDriverLicense_edit_view($user_source, $wants_to_drive, $user_driver
form_checkbox('wants_to_drive', _("I am willing to operate cars for the PL"), $wants_to_drive),
form_checkbox('wants_to_drive', _("I am willing to operate cars for the PL"), $wants_to_drive),
div('panel panel-default', [
div('panel panel-default', [
div('panel-body', [
div('panel-body', [
form_checkbox('has_car', _("I have my own car with me and am willing to use it for the PL (You'll get reimbursed for fuel)"), $user_driver_license['has_car']),
form_checkbox(
'has_car',
_("I have my own car with me and am willing to use it for the PL (You'll get reimbursed for fuel)"),
form_checkbox('email_shiftinfo', _("The engelsystem is allowed to send me an email (e.g. when my shifts change)"), $user_source['email_shiftinfo']),
form_checkbox(
form_checkbox('email_by_human_allowed', _("Humans are allowed to send me an email (e.g. for ticket vouchers)"), $user_source['email_by_human_allowed']),
'email_shiftinfo',
_("The engelsystem is allowed to send me an email (e.g. when my shifts change)"),
$user_source['email_shiftinfo']
),
form_checkbox(
'email_by_human_allowed',
_("Humans are allowed to send me an email (e.g. for ticket vouchers)"),
@ -382,7 +483,12 @@ function User_view($user_source, $admin_user_privilege, $freeloader, $user_angel
'actions' => _("Action")
'actions' => _("Action")
], $myshifts_table) : '',
], $myshifts_table) : '',
$its_me ? info(glyph('info-sign') . _("Your night shifts between 2 and 8 am count twice."), true) : '',
$its_me ? info(glyph('info-sign') . _("Your night shifts between 2 and 8 am count twice."), true) : '',
$its_me && count($shifts) == 0 ? error(sprintf(_("Go to the <ahref=\"%s\">shifts table</a> to sign yourself up for some shifts."), page_link_to('user_shifts')), true) : ''
$its_me && count($shifts) == 0
? error(sprintf(
_("Go to the <ahref=\"%s\">shifts table</a> to sign yourself up for some shifts."),
page_link_to('user_shifts')
), true)
: ''
]);
]);
}
}
@ -460,7 +566,7 @@ function render_user_departure_date_hint()
{
{
global $user;
global $user;
if (!isset($user['planned_departure_date']) || $user['planned_departure_date'] == null) {
if (!isset($user['planned_departure_date']) || $user['planned_departure_date'] == null) {
return _("Please enter your planned date of departure on your settings page to give us a feeling for teardown capacities.");
return _("Please enter your planned date of departure on your settings page to give us a feeling for teardown capacities.");
}
}
@ -472,7 +578,10 @@ function render_user_freeloader_hint()
global $user, $max_freeloadable_shifts;
global $user, $max_freeloadable_shifts;
if (User_is_freeloader($user)) {
if (User_is_freeloader($user)) {
return sprintf(_("You freeloaded at least %s shifts. Shift signup is locked. Please go to heavens desk to be unlocked again."), $max_freeloadable_shifts);
return sprintf(
_("You freeloaded at least %s shifts. Shift signup is locked. Please go to heavens desk to be unlocked again."),
...archangels closing the gates of heaven. <br>...somebody's stolen the power chord and now the battery is empty. <br>...DHCP decided to give me another ip address.
...archangels closing the gates of heaven. <br>
...somebody's stolen the power chord and now the battery is empty. <br>
<p>The great interest in becoming an angel and participating at 33C3 is is something we are grateful for every time. There is a record number of angels and helping volunteers this year.</p>
<p>We did anticipate a great number but we are overwhelmed by this endless wave of support. We do want to enable each and every one of you to be an angel at the congress, but sadly our resources and capacities at Heaven are limited. The amount of angels at this point is beyond our
planing and to ensure we can support the angels already checked in. We did make a choice never thought possible on a chaos event:</p>
<p>We closed the registration in the Engelsystem and at Heaven Desk at 19:00 27. Dec. 2016.</p>
<p>Everyone of us works for you to support you in being an angel, but the Heaven Desk and the Kitchen among others are limited and so we decided to focus our effort to support those of you already arrived to the best of our abilities.</p>
<p>
<p>
For the Heaven Team<br/> Agnes, Jen, LLF and Knuth
The great interest in becoming an angel and participating at 33C3 is is something we are
grateful for every time. There is a record number of angels and helping volunteers this year.
</p>
<p>
We did anticipate a great number but we are overwhelmed by this endless wave of support. We do
want to enable each and every one of you to be an angel at the congress, but sadly our resources
and capacities at Heaven are limited. The amount of angels at this point is beyond our
planing and to ensure we can support the angels already checked in. We did make a choice never
thought possible on a chaos event:
</p>
<p>
We closed the registration in the Engelsystem and at Heaven Desk at 19:00 27. Dec. 2016.
</p>
<p>
Everyone of us works for you to support you in being an angel, but the Heaven Desk and the
Kitchen among others are limited and so we decided to focus our effort to support those of you
The original system was written by <ahref="https://github.com/cookieBerlin/engelsystem">cookie</a>. It was then completely rewritten and greatly enhanced by <ahref="http://notrademark.de/">msquare</a> and <ahref="http://mortzu.de/">mortzu</a> of <ahref="http://planetcyborg.de">planet
The original system was written by <ahref="https://github.com/cookieBerlin/engelsystem">cookie</a>.
cyborg</a>, <ahref="http://jplitza.de/">jplitza</a> and gnomus.
It was then completely rewritten and greatly enhanced by <ahref="http://notrademark.de/">msquare</a>
and <ahref="http://myigel.name/">MyIgel</a>,
<ahref="http://mortzu.de/">mortzu</a> of <ahref="http://planetcyborg.de">planet cyborg</a>,
<ahref="http://jplitza.de/">jplitza</a> and gnomus.
</p>
</p>
<p>
<p>
Please look at the <ahref="https://github.com/engelsystem/engelsystem/graphs/contributors">contributor list on github</a> for a more complete version.
Please look at the <ahref="https://github.com/engelsystem/engelsystem/graphs/contributors">contributor
list on github</a> for a more complete version.
</p>
</p>
</div>
</div>
<divclass="col-md-4">
<divclass="col-md-4">
<h2>Hosting</h2>
<h2>Hosting</h2>
<p>
<p>
Webspace, development platform and domain is currently provided by <ahref="https://www.wybt.net/">would you buy this?</a> (ichdasich)<br/> and adminstrated by <ahref="http://mortzu.de/">mortzu</a>, <ahref="http://derf.homelinux.org/">derf</a> and ichdasich.
Webspace, development platform and domain is currently provided by
<ahref="https://www.wybt.net/">would you buy this?</a> (ichdasich)<br/>
and adminstrated by <ahref="http://mortzu.de/">mortzu</a>,