157 lines
5.5 KiB
PHP
157 lines
5.5 KiB
PHP
<?php
|
|
|
|
/**
|
|
* 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;
|
|
|
|
$angeltypes = User_angeltypes($user);
|
|
if ($angeltypes === false) {
|
|
engelsystem_error("Unable to load user angeltypes.");
|
|
}
|
|
$user_driver_license = UserDriverLicense($user['UID']);
|
|
if ($user_driver_license === false) {
|
|
engelsystem_error("Unable to load user driver license.");
|
|
}
|
|
|
|
$driving_license_information_required = false;
|
|
foreach ($angeltypes as $angeltype) {
|
|
if ($angeltype['requires_driver_license']) {
|
|
$driving_license_information_required = true;
|
|
break;
|
|
}
|
|
}
|
|
|
|
if ($driving_license_information_required && $user_driver_license == null) {
|
|
return info(sprintf(_("You joined an angeltype which requires a driving license. Please edit your driving license information here: %s."), '<a href="' . user_driver_license_edit_link() . '">' . _("driving license information") . '</a>'), true);
|
|
}
|
|
|
|
return '';
|
|
}
|
|
|
|
/**
|
|
* Route user driver licenses actions.
|
|
*/
|
|
function user_driver_licenses_controller() {
|
|
global $user;
|
|
|
|
if (! isset($user)) {
|
|
redirect(page_link_to(''));
|
|
}
|
|
|
|
if (! isset($_REQUEST['action'])) {
|
|
$_REQUEST['action'] = 'edit';
|
|
}
|
|
|
|
switch ($_REQUEST['action']) {
|
|
default:
|
|
case 'edit':
|
|
return user_driver_license_edit_controller();
|
|
}
|
|
}
|
|
|
|
/**
|
|
* Link to user driver license edit page for given 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'];
|
|
}
|
|
|
|
/**
|
|
* Edit a users driver license information.
|
|
*/
|
|
function user_driver_license_edit_controller() {
|
|
global $privileges, $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());
|
|
}
|
|
|
|
// 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());
|
|
}
|
|
}
|
|
|
|
$wants_to_drive = false;
|
|
$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;
|
|
|
|
$user_driver_license = UserDriverLicense($user_source['UID']);
|
|
if ($user_driver_license === false) {
|
|
engelsystem_error('Unable to load user driver license.');
|
|
}
|
|
if ($user_driver_license != null) {
|
|
$wants_to_drive = true;
|
|
$has_car = $user_driver_license['has_car'];
|
|
$has_license_car = $user_driver_license['has_license_car'];
|
|
$has_license_3_5t_transporter = $user_driver_license['has_license_3_5t_transporter'];
|
|
$has_license_7_5t_truck = $user_driver_license['has_license_7_5t_truck'];
|
|
$has_license_12_5t_truck = $user_driver_license['has_license_12_5t_truck'];
|
|
$has_license_forklift = $user_driver_license['has_license_forklift'];
|
|
}
|
|
|
|
if (isset($_REQUEST['submit'])) {
|
|
$valid = true;
|
|
$wants_to_drive = isset($_REQUEST['wants_to_drive']);
|
|
$has_car = isset($_REQUEST['has_car']);
|
|
$has_license_car = isset($_REQUEST['has_license_car']);
|
|
$has_license_3_5t_transporter = isset($_REQUEST['has_license_3_5t_transporter']);
|
|
$has_license_7_5t_truck = isset($_REQUEST['has_license_7_5t_truck']);
|
|
$has_license_12_5t_truck = isset($_REQUEST['has_license_12_5t_truck']);
|
|
$has_license_forklift = isset($_REQUEST['has_license_forklift']);
|
|
|
|
if ($wants_to_drive && ! $has_license_car && ! $has_license_3_5t_transporter && ! $has_license_7_5t_truck && ! $has_license_12_5t_truck && ! $has_license_forklift) {
|
|
$valid = false;
|
|
error(_("Please select at least one driving license."));
|
|
}
|
|
|
|
if ($valid) {
|
|
if (! $wants_to_drive && $user_driver_license != null) {
|
|
$result = UserDriverLicenses_delete($user_source['UID']);
|
|
if ($result === false) {
|
|
engelsystem_error("Unable to remove user driver license information");
|
|
}
|
|
engelsystem_log("Driver license information removed.");
|
|
success(_("Your driver license information has been removed."));
|
|
} else {
|
|
if ($wants_to_drive) {
|
|
if ($user_driver_license == null) {
|
|
$result = UserDriverLicenses_create($user_source['UID'], $has_car, $has_license_car, $has_license_3_5t_transporter, $has_license_7_5t_truck, $has_license_12_5t_truck, $has_license_forklift);
|
|
} else {
|
|
$result = UserDriverLicenses_update($user_source['UID'], $has_car, $has_license_car, $has_license_3_5t_transporter, $has_license_7_5t_truck, $has_license_12_5t_truck, $has_license_forklift);
|
|
}
|
|
|
|
if ($result === false) {
|
|
engelsystem_error("Unable to save user driver license information.");
|
|
}
|
|
engelsystem_log("Driver license information updated.");
|
|
}
|
|
success(_("Your driver license information has been saved."));
|
|
}
|
|
|
|
redirect(user_link($user_source));
|
|
}
|
|
}
|
|
|
|
return [
|
|
sprintf(_("Edit %s driving license information"), $user_source['Nick']),
|
|
UserDriverLicense_edit_view($user_source, $wants_to_drive, $has_car, $has_license_car, $has_license_3_5t_transporter, $has_license_7_5t_truck, $has_license_12_5t_truck, $has_license_forklift)
|
|
];
|
|
}
|
|
|
|
?>
|