diff --git a/action.php b/action.php index e852c92..e319acd 100644 --- a/action.php +++ b/action.php @@ -20,13 +20,20 @@ if (account_has_permission($_SESSION['username'], "ADMIN") == FALSE) { * The message will be displayed by the app. * @param string $msg message ID (see lang/messages.php) * @param string $arg If set, replaces "{arg}" in the message string when displayed to the user. + * @param [key=>val] $additional Put the given key-value array in the URL */ -function returnToSender($msg, $arg = "") { +function returnToSender($msg, $arg = "", $additional = []) { global $VARS; + $add = ""; + if ($additional != []) { + foreach ($additional as $key => $val) { + $add .= "&" . urlencode($key) . "=" . urlencode($val); + } + } if ($arg == "") { - header("Location: app.php?page=" . urlencode($VARS['source']) . "&msg=" . $msg); + header("Location: app.php?page=" . urlencode($VARS['source']) . $add . "&msg=" . $msg); } else { - header("Location: app.php?page=" . urlencode($VARS['source']) . "&msg=$msg&arg=$arg"); + header("Location: app.php?page=" . urlencode($VARS['source']) . $add . "&msg=$msg&arg=$arg"); } die(); } @@ -101,6 +108,27 @@ switch ($VARS['action']) { $database->delete('authlog'); insertAuthLog(15, $_SESSION['uid'], lang2("removed n entries", ['n' => $rows], false)); returnToSender("log_cleared"); + case "editmanager": + require_once __DIR__ . "/lib/userinfo.php"; + if (!$database->has('accounts', ['username' => $VARS['manager']])) { + returnToSender("invalid_manager"); + } + $manager = getUserByUsername($VARS['manager'])['uid']; + $already_assigned = $database->select('managers', 'employeeid', ['managerid' => $manager]); + + foreach ($VARS['employees'] as $u) { + if (!user_exists($u)) { + returnToSender("user_not_exists", htmlentities($u)); + } + $uid = getUserByUsername($u)['uid']; + $database->insert('managers', ['employeeid' => $uid, 'managerid' => $manager]); + $already_assigned = array_diff($already_assigned, [$uid]); // Remove user from old list + } + foreach ($already_assigned as $uid) { + $database->delete('managers', ["AND" => ['employeeid' => $uid, 'managerid' => $manager]]); + } + returnToSender("manager_assigned", "", ["man" => $VARS['manager']]); + break; case "addmanager": if (!$database->has('accounts', ['username' => $VARS['manager']])) { returnToSender("invalid_userid"); diff --git a/lang/en_us.php b/lang/en_us.php index 644e471..181da61 100644 --- a/lang/en_us.php +++ b/lang/en_us.php @@ -87,5 +87,11 @@ define("STRINGS", [ "2fa removed" => "2-factor authentication removed.", "2fa" => "2FA", "show deleted" => "Show deleted", - "editing deleted account" => "You are editing an account marked as deleted. The account will be undeleted if you press Save." + "editing deleted account" => "You are editing an account marked as deleted. The account will be undeleted if you press Save.", + "manager assigned" => "Manager relationships saved.", + "manager does not exist" => "The selected manager username does not exist.", + "type to add a person" => "Type to add a person", + "employees" => "Employees", + "type to select a manager" => "Type to select a manager", + "select a manager to view or edit employees" => "Select a manager to view or edit the assigned employees." ]); \ No newline at end of file diff --git a/lang/messages.php b/lang/messages.php index 9e24716..98c933a 100644 --- a/lang/messages.php +++ b/lang/messages.php @@ -56,5 +56,13 @@ define("MESSAGES", [ "2fa_removed" => [ "string" => "2fa removed", "type" => "success" - ] + ], + "manager_assigned" => [ + "string" => "manager assigned", + "type" => "success" + ], + "invalid_manager" => [ + "string" => "manager does not exist", + "type" => "danger" + ], ]); diff --git a/pages.php b/pages.php index f96cfb5..0507136 100644 --- a/pages.php +++ b/pages.php @@ -52,30 +52,14 @@ define("PAGES", [ "title" => "managers", "navbar" => true, "icon" => "id-card-o", - "styles" => [ - "static/css/datatables.min.css", - "static/css/tables.css" - ], - "scripts" => [ - "static/js/datatables.min.js", - "static/js/managers.js" - ], - ], - "addmanager" => [ - "title" => "new relationship", - "navbar" => false, "styles" => [ "static/css/easy-autocomplete.min.css" ], "scripts" => [ "static/js/jquery.easy-autocomplete.min.js", - "static/js/addmanager.js" + "static/js/managers.js" ] ], - "delmanager" => [ - "title" => "delete manager", - "navbar" => false - ], "permissions" => [ "title" => "permissions", "navbar" => true, diff --git a/pages/addmanager.php b/pages/addmanager.php deleted file mode 100644 index 2606d6f..0000000 --- a/pages/addmanager.php +++ /dev/null @@ -1,38 +0,0 @@ - - -
\ No newline at end of file diff --git a/pages/delmanager.php b/pages/delmanager.php deleted file mode 100644 index 556a1eb..0000000 --- a/pages/delmanager.php +++ /dev/null @@ -1,58 +0,0 @@ -has('managers', ['managerid' => $VARS['mid']])) { - header('Location: app.php?page=managers&msg=user_not_exists'); - die(); -} -if (!$database->has('managers', ['employeeid' => $VARS['eid']])) { - header('Location: app.php?page=managers&msg=user_not_exists'); - die(); -} -?> -- - select('managers', [ - "[>]accounts (manager)" => ['managerid' => 'uid'], - "[>]accounts (employee)" => ['employeeid' => 'uid'] - ], [ - 'manager.username (manageruser)', - 'employee.username (employeeuser)', - 'manager.realname (managername)', - 'employee.realname (employeename)' - ], ['AND' => ['managerid' => $VARS['mid'], 'employeeid' => $VARS['eid']]])[0]; - ?> -
- | - | - | - |
---|---|---|---|
- | - | - | - |