Database class integration.

This commit is contained in:
Nate
2019-07-19 15:05:18 -06:00
parent f8bb021dd7
commit cf4bc6a64e
11 changed files with 592 additions and 614 deletions

View File

@@ -43,21 +43,18 @@
$text = $language->get();
//get the id
$user_uuid = check_str($_GET["id"]);
$user_uuid = $_GET["id"];
//validate the uuid
if (is_uuid($user_uuid)) {
//get the user's domain from v_users
if (permission_exists('user_domain')) {
$sql = "select domain_uuid from v_users ";
$sql .= "where user_uuid = '".$user_uuid."' ";
$prep_statement = $db->prepare(check_sql($sql));
$prep_statement->execute();
$result = $prep_statement->fetchAll(PDO::FETCH_NAMED);
foreach ($result as &$row) {
$domain_uuid = $row["domain_uuid"];
}
unset ($prep_statement);
$sql .= "where user_uuid = :user_uuid ";
$parameters['user_uuid'] = $user_uuid;
$database = new database;
$domain_uuid = $database->select($sql, $parameters, 'column');
unset($sql, $parameters);
}
else {
$domain_uuid = $_SESSION['domain_uuid'];
@@ -74,35 +71,37 @@
}
//delete the user settings
$sql = "delete from v_user_settings ";
$sql .= "where user_uuid = '".$user_uuid."' ";
$sql .= "and domain_uuid = '".$domain_uuid."' ";
if (!$db->exec($sql)) {
$info = $db->errorInfo();
print_r($info);
}
$array['user_settings'][0]['user_uuid'] = $user_uuid;
$array['user_settings'][0]['domain_uuid'] = $domain_uuid;
//delete the groups the user is assigned to
$sql = "delete from v_user_groups ";
$sql .= "where user_uuid = '".$user_uuid."' ";
$sql .= "and domain_uuid = '".$domain_uuid."' ";
if (!$db->exec($sql)) {
$info = $db->errorInfo();
print_r($info);
}
$array['user_groups'][0]['user_uuid'] = $user_uuid;
$array['user_groups'][0]['domain_uuid'] = $domain_uuid;
//delete the user
$sql = "delete from v_users ";
$sql .= "where user_uuid = '".$user_uuid."' ";
$sql .= "and domain_uuid = '".$domain_uuid."' ";
if (!$db->exec($sql)) {
$info = $db->errorInfo();
print_r($info);
}
$array['users'][0]['user_uuid'] = $user_uuid;
$array['users'][0]['domain_uuid'] = $domain_uuid;
//execute
$p = new permissions;
$p->add('user_setting_delete', 'temp');
$p->add('user_group_delete', 'temp');
$database = new database;
$database->app_name = 'users';
$database->app_uuid = '112124b3-95c2-5352-7e9d-d14c0b88f207';
$database->delete($array);
unset($array);
$p->delete('user_setting_delete', 'temp');
$p->delete('user_group_delete', 'temp');
//set message
message::add($text['message-delete']);
}
//redirect the user
message::add($text['message-delete']);
header("Location: users.php");
exit;
?>

View File

@@ -35,16 +35,17 @@
$text = $language->get();
//get user uuid
if ((is_uuid($_REQUEST["id"]) && permission_exists('user_edit')) ||
(is_uuid($_REQUEST["id"]) && $_REQUEST["id"] == $_SESSION['user_uuid'])) {
if (is_uuid($_REQUEST["id"]) && (permission_exists('user_edit') || $_REQUEST["id"] == $_SESSION['user_uuid'])) {
$user_uuid = $_REQUEST["id"];
$action = 'edit';
}
elseif (permission_exists('user_add') && !isset($_REQUEST["id"])) {
else if (permission_exists('user_add') && !is_uuid($_REQUEST["id"])) {
$user_uuid = uuid();
$action = 'add';
}
else {
echo 'here';
exit;
// load users own account
header("Location: user_edit.php?id=".$_SESSION['user_uuid']);
exit;
@@ -52,13 +53,15 @@
//get total user count from the database, check limit, if defined
if (permission_exists('user_add') && $action == 'add' && $_SESSION['limit']['users']['numeric'] != '') {
$sql = "select count(user_uuid) as num_rows from v_users where domain_uuid = :domain_uuid ";
$sql = "select count(*) ";
$sql .= "from v_users ";
$sql .= "where domain_uuid = :domain_uuid ";
$parameters['domain_uuid'] = $_SESSION['domain_uuid'];
$database = new database;
$total_users = $database->execute($sql, $parameters, 'column');
unset($parameters);
$num_rows = $database->select($sql, $parameters, 'column');
unset($sql, $parameters);
if ($total_users >= $_SESSION['limit']['users']['numeric']) {
if ($num_rows >= $_SESSION['limit']['users']['numeric']) {
message::add($text['message-maximum_users'].' '.$_SESSION['limit']['users']['numeric'], 'negative');
header('Location: users.php');
exit;
@@ -77,26 +80,28 @@
}
//delete the group from the user
if ($_GET["a"] == "delete" && permission_exists("user_delete")) {
if ($_GET["a"] == "delete" && is_uuid($_GET["group_uuid"]) && is_uuid($user_uuid) && permission_exists("user_delete")) {
//set the variables
$group_uuid = $_GET["group_uuid"];
//delete the group from the users
if (is_uuid($group_uuid) && is_uuid($user_uuid)) {
$sql = "delete from v_user_groups ";
$sql .= "where group_uuid = :group_uuid ";
$sql .= "and user_uuid = :user_uuid ";
$parameters['group_uuid'] = $group_uuid;
$parameters['user_uuid'] = $user_uuid;
$database = new database;
$database->execute($sql, $parameters);
unset($parameters);
}
$array['user_groups'][0]['group_uuid'] = $group_uuid;
$array['user_groups'][0]['user_uuid'] = $user_uuid;
$p = new permissions;
$p->add('user_group_delete', 'temp');
$database = new database;
$database->app_name = 'users';
$database->app_uuid = '112124b3-95c2-5352-7e9d-d14c0b88f207';
$database->delete($array);
unset($array);
$p->delete('user_group_delete', 'temp');
//redirect the user
message::add($text['message-update']);
if (is_uuid($user_uuid)) {
header("Location: user_edit.php?id=".$user_uuid);
}
return;
header("Location: user_edit.php?id=".$user_uuid);
exit;
}
//retrieve password requirements
@@ -143,7 +148,7 @@
}
if (permission_exists('user_edit') && $action == 'edit') {
if ($username != $username_old && $username != '') {
$sql = "select count(*) as num_rows from v_users where username = :username ";
$sql = "select count(*) from v_users where username = :username ";
if ($_SESSION["user"]["unique"]["text"] != "global") {
$sql .= "and domain_uuid = :domain_uuid ";
$parameters['domain_uuid'] = $domain_uuid;
@@ -218,7 +223,7 @@
$parameters['user_uuid'] = $user_uuid;
$database = new database;
$row = $database->select($sql, $parameters, 'row');
if ($row['user_setting_uuid'] == '' && $user_language != '') {
if (!is_uuid($row['user_setting_uuid']) && $user_language != '') {
//add user setting to array for insert
$array['user_settings'][$i]['user_setting_uuid'] = uuid();
$array['user_settings'][$i]['user_uuid'] = $user_uuid;
@@ -232,14 +237,20 @@
}
else {
if ($row['user_setting_value'] == '' || $user_language == '') {
$sql = "delete from v_user_settings ";
$sql .= "where user_setting_category = 'domain' ";
$sql .= "and user_setting_subcategory = 'language' ";
$sql .= "and user_uuid = :user_uuid ";
$parameters['user_uuid'] = $user_uuid;
$array_delete['user_settings'][0]['user_setting_category'] = 'domain';
$array_delete['user_settings'][0]['user_setting_subcategory'] = 'language';
$array_delete['user_settings'][0]['user_uuid'] = $user_uuid;
$p = new permissions;
$p->add('user_setting_delete', 'temp');
$database = new database;
$database->execute($sql, $parameters);
unset($sql);
$database->app_name = 'users';
$database->app_uuid = '112124b3-95c2-5352-7e9d-d14c0b88f207';
$database->delete($array_delete);
unset($array_delete);
$p->delete('user_setting_delete', 'temp');
}
else {
//add user setting to array for update
@@ -278,13 +289,20 @@
}
else {
if ($row['user_setting_value'] == '' || $user_time_zone == '') {
$sql = "delete from v_user_settings ";
$sql .= "where user_setting_category = 'domain' ";
$sql .= "and user_setting_subcategory = 'time_zone' ";
$sql .= "and user_uuid = :user_uuid ";
$parameters['user_uuid'] = $user_uuid;
$array_delete['user_settings'][0]['user_setting_category'] = 'domain';
$array_delete['user_settings'][0]['user_setting_subcategory'] = 'time_zone';
$array_delete['user_settings'][0]['user_uuid'] = $user_uuid;
$p = new permissions;
$p->add('user_setting_delete', 'temp');
$database = new database;
$database->execute($sql, $parameters);
$database->app_name = 'users';
$database->app_uuid = '112124b3-95c2-5352-7e9d-d14c0b88f207';
$database->delete($array_delete);
unset($array_delete);
$p->delete('user_setting_delete', 'temp');
}
else {
//add user setting to array for update
@@ -324,14 +342,20 @@
}
else {
if ($row['user_setting_value'] == '' || $message_key == '') {
$sql = "delete from v_user_settings ";
$sql .= "where user_setting_category = 'message' ";
$sql .= "and user_setting_subcategory = 'key' ";
$sql .= "and user_uuid = :user_uuid ";
$parameters['user_uuid'] = $user_uuid;
$array_delete['user_settings'][0]['user_setting_category'] = 'message';
$array_delete['user_settings'][0]['user_setting_subcategory'] = 'key';
$array_delete['user_settings'][0]['user_uuid'] = $user_uuid;
$p = new permissions;
$p->add('user_setting_delete', 'temp');
$database = new database;
$database->execute($sql, $parameters);
unset($sql);
$database->app_name = 'users';
$database->app_uuid = '112124b3-95c2-5352-7e9d-d14c0b88f207';
$database->delete($array_delete);
unset($array_delete);
$p->delete('user_setting_delete', 'temp');
}
else {
//add user setting to array for update
@@ -583,7 +607,7 @@
}
}
}
unset($sql, $parameters);
unset($sql, $parameters, $result, $row);
}
}
@@ -707,16 +731,19 @@
echo " <option value=''></option>\n";
//get all language codes from database
$sql = "select * from v_languages order by language asc ";
$parameters = null;
$database = new database;
$languages = $database->select($sql, $parameters, 'all');
foreach ($languages as $row) {
$language_codes[$row["code"]] = $row["language"];
$languages = $database->select($sql, null, 'all');
if (is_array($languages) && sizeof($languages) != 0) {
foreach ($languages as $row) {
$language_codes[$row["code"]] = $row["language"];
}
}
unset($languages);
foreach ($_SESSION['app']['languages'] as $code) {
$selected = ($code == $user_settings['domain']['language']['code']) ? "selected='selected'" : null;
echo " <option value='".escape($code)."' ".escape($selected).">".escape($language_codes[$code])." [".escape($code)."]</option>\n";
unset($sql, $languages, $row);
if (is_array($_SESSION['app']['languages']) && sizeof($_SESSION['app']['languages']) != 0) {
foreach ($_SESSION['app']['languages'] as $code) {
$selected = ($code == $user_settings['domain']['language']['code']) ? "selected='selected'" : null;
echo " <option value='".escape($code)."' ".escape($selected).">".escape($language_codes[$code])." [".escape($code)."]</option>\n";
}
}
echo " </select>\n";
echo " <br />\n";
@@ -881,7 +908,6 @@
$parameters['user_uuid'] = $user_uuid;
$database = new database;
$user_groups = $database->select($sql, $parameters, 'all');
unset($parameters);
if (is_array($user_groups)) {
echo "<table cellpadding='0' cellspacing='0' border='0'>\n";
foreach($user_groups as $field) {
@@ -903,7 +929,7 @@
}
echo "</table>\n";
}
unset($sql, $user_groups);
unset($sql, $parameters, $user_groups, $field);
$sql = "select * from v_groups ";
$sql .= "where (domain_uuid = :domain_uuid or domain_uuid is null) ";
@@ -914,7 +940,6 @@
$parameters['domain_uuid'] = $_SESSION['domain_uuid'];
$database = new database;
$groups = $database->select($sql, $parameters, 'all');
unset($parameters);
if (is_array($groups)) {
if (isset($assigned_groups)) { echo "<br />\n"; }
echo "<select name='group_uuid_name' class='formfld' style='width: auto; margin-right: 3px;' ".($action == 'add' ? "required='required'" : null).">\n";
@@ -932,7 +957,7 @@
echo "<input type='submit' class='btn' value=\"".$text['button-add']."\" >\n";
}
}
unset($sql, $groups);
unset($sql, $parameters, $groups, $field);
echo " </td>";
echo " </tr>";

View File

@@ -42,7 +42,7 @@
$language = new text;
$text = $language->get();
//built in str_getcsv requires PHP 5.3 or higher, this function can be used to reproduct the functionality but requirs PHP 5.1.0 or higher
//built in str_getcsv requires PHP 5.3 or higher, this function can be used to reproduce the functionality but requires PHP 5.1.0 or higher
if(!function_exists('str_getcsv')) {
function str_getcsv($input, $delimiter = ",", $enclosure = '"', $escape = "\\") {
$fp = fopen("php://memory", 'r+');
@@ -60,8 +60,6 @@
//get the http get values and set them as php variables
$action = check_str($_POST["action"]);
$from_row = check_str($_POST["from_row"]);
$order_by = check_str($_POST["order_by"]);
$order = check_str($_POST["order"]);
$delimiter = check_str($_POST["data_delimiter"]);
$enclosure = check_str($_POST["data_enclosure"]);
@@ -74,7 +72,7 @@
//copy the csv file
//$_POST['submit'] == "Upload" &&
if ( is_uploaded_file($_FILES['ulfile']['tmp_name']) && permission_exists('user_imports')) {
if (is_uploaded_file($_FILES['ulfile']['tmp_name']) && permission_exists('user_imports')) {
if (check_str($_POST['type']) == 'csv') {
move_uploaded_file($_FILES['ulfile']['tmp_name'], $_SESSION['server']['temp']['dir'].'/'.$_FILES['ulfile']['name']);
$save_msg = "Uploaded file to ".$_SESSION['server']['temp']['dir']."/". htmlentities($_FILES['ulfile']['name']);
@@ -131,10 +129,7 @@
$schema[$i]['fields'][] = 'group_name';
//debug info
//echo "<pre>\n";
//print_r($schema);
//echo "</pre>\n";
//exit;
//view_array($schema);
}
//match the column names to the field names
@@ -252,9 +247,9 @@
//get the groups
$sql = "select * from v_groups where domain_uuid is null ";
$prep_statement = $db->prepare($sql);
$prep_statement->execute();
$groups = $prep_statement->fetchAll(PDO::FETCH_ASSOC);
$database = new database;
$groups = $database->select($sql, null, 'all');
unset($sql);
//get the contents of the csv file and convert them into an array
$handle = @fopen($_SESSION['file'], "r");
@@ -384,6 +379,7 @@
$database->app_uuid = '4efa1a1a-32e7-bf83-534b-6c8299958a8e';
$database->save($array);
//$message = $database->message;
unset($array);
}
//send the redirect header

View File

@@ -48,24 +48,9 @@
$document['title'] = $text['title-user_manager'];
//get variables used to control the order
$order_by = $_GET["order_by"];
$order_by = $_GET["order_by"] != '' ? $_GET["order_by"] : 'u.username';
$order = $_GET["order"];
//validate order by
if (strlen($order_by) > 0) {
$order_by = preg_replace('#[^a-zA-Z0-9_\-]#', '', $order_by);
}
//validate the order
switch ($order) {
case 'asc':
break;
case 'desc':
break;
default:
$order = '';
}
//set the variables
$search = $_REQUEST["search"];
if (strlen($search) > 0) {
@@ -75,28 +60,32 @@
//get the list of superadmins
$superadmins = superadmin_list($db);
//get the user count from the database
$sql = "select count(*) from view_users as u where 1 = 1 ";
//common where clause
$sql_where = "where true ";
if (!(permission_exists('user_all') && $_GET['show'] == 'all')) {
$sql .= "and u.domain_uuid = :domain_uuid \n";
$sql_where .= "and u.domain_uuid = :domain_uuid ";
$parameters['domain_uuid'] = $_SESSION['domain_uuid'];
}
if (strlen($search) > 0) {
$sql .= "and (\n";
$sql .= "lower(username) like :search \n";
$sql .= "or lower(groups) like :search \n";
$sql .= "or lower(contact_organization) like :search \n";
$sql .= "or lower(contact_name_given) like :search \n";
$sql .= "or lower(contact_name_family) like :search \n";
$sql .= ")\n";
$sql_where .= "and ( ";
$sql_where .= "lower(username) like :search ";
$sql_where .= "or lower(groups) like :search ";
$sql_where .= "or lower(contact_organization) like :search ";
$sql_where .= "or lower(contact_name_given) like :search ";
$sql_where .= "or lower(contact_name_family) like :search ";
$sql_where .= ") ";
$parameters['search'] = '%'.$search.'%';
}
//get the user count from the database
$sql = "select count(*) from view_users as u ";
$sql .= $sql_where;
$database = new database;
$num_rows = $database->select($sql, $parameters, 'column');
unset ($parameters, $sql);
unset($sql);
//prepare for paging
$rows_per_page = ($_SESSION['domain']['paging']['numeric'] != '') ? $_SESSION['domain']['paging']['numeric'] : 50;
$rows_per_page = is_numeric($_SESSION['domain']['paging']['numeric']) ? $_SESSION['domain']['paging']['numeric'] : 50;
$param = "search=".escape($search);
if (permission_exists('user_all') && $_GET['show'] == 'all') {
$param .= "&show=all";
@@ -107,35 +96,14 @@
$offset = $rows_per_page * $page;
//get the users from the database
$sql = "select u.domain_uuid, u.user_uuid, u.contact_uuid, u.domain_name, u.username, u.user_enabled, u.contact_organization, u.contact_name_given, u.contact_name_family, u.groups \n";
$sql .= "from view_users as u \n";
$sql .= "where 1 = 1 \n";
if (!(permission_exists('user_all') && $_GET['show'] == 'all')) {
$sql .= "and u.domain_uuid = :domain_uuid \n";
$parameters['domain_uuid'] = $_SESSION['domain_uuid'];
}
if (strlen($search) > 0) {
$sql .= "and (\n";
$sql .= "lower(username) like :search \n";
$sql .= "or lower(groups) like :search \n";
$sql .= "or lower(contact_organization) like :search \n";
$sql .= "or lower(contact_name_given) like :search \n";
$sql .= "or lower(contact_name_family) like :search \n";
$sql .= ")\n";
$parameters['search'] = '%'.$search.'%';
}
if (strlen($order_by)> 0) {
$sql .= "order by ".$order_by." ".$order." \n";
}
else {
$sql .= "order by u.username asc \n";
}
$sql .= "limit :rows_per_page offset :offset ";
$parameters['rows_per_page'] = $rows_per_page;
$parameters['offset'] = $offset;
$sql = "select u.domain_uuid, u.user_uuid, u.contact_uuid, u.domain_name, u.username, u.user_enabled, u.contact_organization, u.contact_name_given, u.contact_name_family, u.groups ";
$sql .= "from view_users as u ";
$sql .= $sql_where;
$sql .= order_by($order_by, $order);
$sql .= limit_offset($rows_per_page, $offset);
$database = new database;
$users = $database->select($sql, $parameters, 'all');
unset ($parameters, $sql);
unset($sql, $sql_where, $parameters);
//page title and description
echo "<table width='100%' border='0' cellpadding='0' cellspacing='0'>\n";
@@ -201,7 +169,7 @@
echo "</td>\n";
echo "</tr>\n";
if (is_array($users)) {
if (is_array($users) && sizeof($users) != 0) {
foreach($users as $row) {
if (if_superadmin($superadmins, $row['user_uuid']) && !if_group("superadmin")) {
//hide
@@ -253,11 +221,11 @@
}
echo " </td>\n";
echo "</tr>\n";
if ($c==0) { $c=1; } else { $c=0; }
$c = $c == 0 ? 1 : 0;
}
} //end foreach
unset($sql, $users);
} //end if results
}
unset($users, $row);
}
echo "<tr>\n";
echo "</table>\n";