From 4906e06bf162eb870d1e0c8959e0ee57188f1ad7 Mon Sep 17 00:00:00 2001 From: johnnyq Date: Sun, 27 Jul 2025 21:24:14 -0400 Subject: [PATCH] Initialized migrating modals into entity folders and modals out of ajax and start working on moving admin items to new admin directory --- admin/includes/footer.php | 53 +++ admin/includes/header.php | 54 +++ admin/includes/inc_all_admin.php | 16 + admin/includes/modal_footer.php | 9 + admin/includes/modal_header.php | 13 + admin/includes/side_nav.php | 305 ++++++++++++++ admin/modals/roles/role_add.php | 58 +++ admin/modals/roles/role_edit.php | 153 +++++++ admin/modals/users/user_add.php | 156 ++++++++ .../modals/users/user_all_reset_password.php | 31 ++ admin/modals/users/user_archive.php | 16 + admin/modals/users/user_edit.php | 204 ++++++++++ admin/modals/users/user_export.php | 21 + admin/modals/users/user_invite.php | 45 +++ admin/post/role.php | 89 +++++ admin/post/user.php | 373 ++++++++++++++++++ admin/post/user_model.php | 6 + admin/roles.php | 151 +++++++ admin/users.php | 239 +++++++++++ clients.php | 20 +- includes/ajax_header.php | 6 +- includes/modal_footer.php | 9 + includes/modal_header.php | 13 + .../client_add.php} | 0 .../client_bulk_assign_tags.php} | 0 .../client_bulk_edit_hourly_rate.php} | 0 .../client_bulk_edit_industry.php} | 0 .../client_bulk_edit_referral.php} | 0 .../client_bulk_email.php} | 0 .../client_credit_add.php} | 0 .../client_delete.php} | 0 .../client_download_pdf.php} | 0 .../clients/client_edit.php | 38 +- .../client_export.php} | 0 .../client_import.php} | 0 post.php | 2 - robots.txt | 3 +- 37 files changed, 2046 insertions(+), 37 deletions(-) create mode 100644 admin/includes/footer.php create mode 100644 admin/includes/header.php create mode 100644 admin/includes/inc_all_admin.php create mode 100644 admin/includes/modal_footer.php create mode 100644 admin/includes/modal_header.php create mode 100644 admin/includes/side_nav.php create mode 100644 admin/modals/roles/role_add.php create mode 100644 admin/modals/roles/role_edit.php create mode 100644 admin/modals/users/user_add.php create mode 100644 admin/modals/users/user_all_reset_password.php create mode 100644 admin/modals/users/user_archive.php create mode 100644 admin/modals/users/user_edit.php create mode 100644 admin/modals/users/user_export.php create mode 100644 admin/modals/users/user_invite.php create mode 100644 admin/post/role.php create mode 100644 admin/post/user.php create mode 100644 admin/post/user_model.php create mode 100644 admin/roles.php create mode 100644 admin/users.php create mode 100644 includes/modal_footer.php create mode 100644 includes/modal_header.php rename modals/{client_add_modal.php => clients/client_add.php} (100%) rename modals/{client_bulk_assign_tags_modal.php => clients/client_bulk_assign_tags.php} (100%) rename modals/{client_bulk_edit_hourly_rate_modal.php => clients/client_bulk_edit_hourly_rate.php} (100%) rename modals/{client_bulk_edit_industry_modal.php => clients/client_bulk_edit_industry.php} (100%) rename modals/{client_bulk_edit_referral_modal.php => clients/client_bulk_edit_referral.php} (100%) rename modals/{client_bulk_email_modal.php => clients/client_bulk_email.php} (100%) rename modals/{client_credit_add_modal.php => clients/client_credit_add.php} (100%) rename modals/{client_delete_modal.php => clients/client_delete.php} (100%) rename modals/{client_download_pdf_modal.php => clients/client_download_pdf.php} (100%) rename ajax/ajax_client_edit.php => modals/clients/client_edit.php (93%) rename modals/{client_export_modal.php => clients/client_export.php} (100%) rename modals/{client_import_modal.php => clients/client_import.php} (100%) diff --git a/admin/includes/footer.php b/admin/includes/footer.php new file mode 100644 index 00000000..60235990 --- /dev/null +++ b/admin/includes/footer.php @@ -0,0 +1,53 @@ + + + +

ITFlow   ·   Docs   ·   Forum   ·   Services

+
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +Total Execution Time: '.number_format((float) $execution_time, 10) .' seconds'; diff --git a/admin/includes/header.php b/admin/includes/header.php new file mode 100644 index 00000000..8a22fd82 --- /dev/null +++ b/admin/includes/header.php @@ -0,0 +1,54 @@ + + + + + + + + + + + <?php echo $session_company_name; ?> + + + + + + + + + + + + + + + + + + + + + + + + + + + + +"> +
diff --git a/admin/includes/inc_all_admin.php b/admin/includes/inc_all_admin.php new file mode 100644 index 00000000..53d050f9 --- /dev/null +++ b/admin/includes/inc_all_admin.php @@ -0,0 +1,16 @@ +Tell your admin: Your role does not have admin access."); +} +require_once "includes/header.php"; +require_once "../includes/top_nav.php"; +require_once "includes/side_nav.php"; +require_once "../includes/inc_wrapper.php"; +require_once "../includes/inc_alert_feedback.php"; +require_once "../includes/filter_header.php"; +require_once "../includes/app_version.php"; diff --git a/admin/includes/modal_footer.php b/admin/includes/modal_footer.php new file mode 100644 index 00000000..4bbe5766 --- /dev/null +++ b/admin/includes/modal_footer.php @@ -0,0 +1,9 @@ + + + + $content]); +?> \ No newline at end of file diff --git a/admin/includes/modal_header.php b/admin/includes/modal_header.php new file mode 100644 index 00000000..695f098a --- /dev/null +++ b/admin/includes/modal_header.php @@ -0,0 +1,13 @@ + 'ID missing.']); +// exit; +//} diff --git a/admin/includes/side_nav.php b/admin/includes/side_nav.php new file mode 100644 index 00000000..23e8af1a --- /dev/null +++ b/admin/includes/side_nav.php @@ -0,0 +1,305 @@ + + diff --git a/admin/modals/roles/role_add.php b/admin/modals/roles/role_add.php new file mode 100644 index 00000000..0112960d --- /dev/null +++ b/admin/modals/roles/role_add.php @@ -0,0 +1,58 @@ + diff --git a/admin/modals/roles/role_edit.php b/admin/modals/roles/role_edit.php new file mode 100644 index 00000000..9b1d967f --- /dev/null +++ b/admin/modals/roles/role_edit.php @@ -0,0 +1,153 @@ + + +
+ + + + +
+ + + +
diff --git a/admin/modals/users/user_all_reset_password.php b/admin/modals/users/user_all_reset_password.php new file mode 100644 index 00000000..a68dfdc5 --- /dev/null +++ b/admin/modals/users/user_all_reset_password.php @@ -0,0 +1,31 @@ + diff --git a/admin/modals/users/user_archive.php b/admin/modals/users/user_archive.php new file mode 100644 index 00000000..8662ad4c --- /dev/null +++ b/admin/modals/users/user_archive.php @@ -0,0 +1,16 @@ + diff --git a/admin/modals/users/user_edit.php b/admin/modals/users/user_edit.php new file mode 100644 index 00000000..7cd470a1 --- /dev/null +++ b/admin/modals/users/user_edit.php @@ -0,0 +1,204 @@ + + +
+ + + + +
+ + + + diff --git a/admin/modals/users/user_invite.php b/admin/modals/users/user_invite.php new file mode 100644 index 00000000..21c93356 --- /dev/null +++ b/admin/modals/users/user_invite.php @@ -0,0 +1,45 @@ + diff --git a/admin/post/role.php b/admin/post/role.php new file mode 100644 index 00000000..af659e70 --- /dev/null +++ b/admin/post/role.php @@ -0,0 +1,89 @@ + created"; + + header("Location: " . $_SERVER["HTTP_REFERER"]); + +} + +if (isset($_POST['edit_role'])) { + + validateCSRFToken($_POST['csrf_token']); + + // Update role metadata + $role_id = sanitizeInput($_POST['role_id']); + $name = sanitizeInput($_POST['role_name']); + $description = sanitizeInput($_POST['role_description']); + $admin = intval($_POST['role_is_admin']); + + mysqli_query($mysqli, "UPDATE user_roles SET role_name = '$name', role_description = '$description', role_is_admin = $admin WHERE role_id = $role_id"); + + // Update role access levels + mysqli_query($mysqli, "DELETE FROM user_role_permissions WHERE user_role_id = $role_id"); + foreach ($_POST as $key => $value) { + if (str_contains($key, '##module_')){ + $module_id = intval(explode('##', $key)[0]); + $access_level = intval($value); + + if ($access_level > 0) { + mysqli_query($mysqli, "INSERT INTO user_role_permissions SET user_role_id = $role_id, module_id = $module_id, user_role_permission_level = $access_level"); + } + } + + } + + // Logging + logAction("User Role", "Edit", "$session_name edited user role $name", 0, $role_id); + + $_SESSION['alert_message'] = "User Role $name edited"; + + header("Location: " . $_SERVER["HTTP_REFERER"]); +} + +if (isset($_GET['archive_role'])) { + + validateCSRFToken($_GET['csrf_token']); + + $role_id = intval($_GET['archive_role']); + + // Check role isn't in use + $sql_role_user_count = mysqli_query($mysqli, "SELECT COUNT(user_id) FROM users WHERE user_role_id = $role_id AND user_archived_at IS NULL"); + $role_user_count = mysqli_fetch_row($sql_role_user_count)[0]; + if ($role_user_count != 0) { + $_SESSION['alert_type'] = "error"; + $_SESSION['alert_message'] = "Role must not in use to archive it"; + header("Location: " . $_SERVER["HTTP_REFERER"]); + exit(); + } + + mysqli_query($mysqli, "UPDATE user_roles SET role_archived_at = NOW() WHERE role_id = $role_id"); + + // Logging + $role_details = mysqli_fetch_array(mysqli_query($mysqli, "SELECT role_name FROM user_roles WHERE role_id = $role_id LIMIT 1")); + $role_name = sanitizeInput($role_details['role_name']); + logAction("User Role", "Archive", "$session_name archived user role $role_name", 0, $role_id); + + $_SESSION['alert_message'] = "User Role archived"; + header("Location: " . $_SERVER["HTTP_REFERER"]); +} \ No newline at end of file diff --git a/admin/post/user.php b/admin/post/user.php new file mode 100644 index 00000000..00a42595 --- /dev/null +++ b/admin/post/user.php @@ -0,0 +1,373 @@ +
An ITFlow account has been setup for you. Please change your password upon login.

Username: $email
Password: $password
Login URL: https://$config_base_url/login.php?key=$config_login_key_secret

--
$company_name - Support
$config_ticket_from_email"; + + $data = [ + [ + 'from' => $config_mail_from_email, + 'from_name' => $config_mail_from_name, + 'recipient' => $email, + 'recipient_name' => $name, + 'subject' => $subject, + 'body' => $body + ] + ]; + $mail = addToMailQueue($data); + + if ($mail !== true) { + mysqli_query($mysqli, "INSERT INTO notifications SET notification_type = 'Mail', notification = 'Failed to send email to $email'"); + mysqli_query($mysqli, "INSERT INTO logs SET log_type = 'Mail', log_action = 'Error', log_description = 'Failed to send email to $email regarding $subject. $mail', log_ip = '$session_ip', log_user_agent = '$session_user_agent', log_user_id = $session_user_id, log_entity_id = $user_id"); + } + + } + + // Logging + logAction("User", "Create", "$session_name created user $name", 0, $user_id); + + $_SESSION['alert_message'] = "User $name created" . $extended_alert_description; + + header("Location: " . $_SERVER["HTTP_REFERER"]); + +} + +if (isset($_POST['edit_user'])) { + + validateCSRFToken($_POST['csrf_token']); + + require_once 'post/admin/admin_user_model.php'; + + $user_id = intval($_POST['user_id']); + $new_password = trim($_POST['new_password']); + + // Update Client Access + mysqli_query($mysqli,"DELETE FROM user_client_permissions WHERE user_id = $user_id"); + if (isset($_POST['clients'])) { + foreach($_POST['clients'] as $client_id) { + $client_id = intval($client_id); + mysqli_query($mysqli,"INSERT INTO user_client_permissions SET user_id = $user_id, client_id = $client_id"); + } + } + + // Get current Avatar + $sql = mysqli_query($mysqli, "SELECT user_avatar FROM users WHERE user_id = $user_id"); + $row = mysqli_fetch_array($sql); + $existing_file_name = sanitizeInput($row['user_avatar']); + + $extended_log_description = ''; + if (!empty($_POST['2fa'])) { + $two_fa = $_POST['2fa']; + } + + if (!file_exists("uploads/users/$user_id/")) { + mkdir("uploads/users/$user_id"); + } + + // Check for and process image/photo + $extended_alert_description = ''; + if (isset($_FILES['file']['tmp_name'])) { + if ($new_file_name = checkFileUpload($_FILES['file'], array('jpg', 'jpeg', 'gif', 'png', 'webp'))) { + + $file_tmp_path = $_FILES['file']['tmp_name']; + + // directory in which the uploaded file will be moved + $upload_file_dir = "uploads/users/$user_id/"; + $dest_path = $upload_file_dir . $new_file_name; + move_uploaded_file($file_tmp_path, $dest_path); + + // Delete old file + unlink("../uploads/users/$user_id/$existing_file_name"); + + // Set Avatar + mysqli_query($mysqli, "UPDATE users SET user_avatar = '$new_file_name' WHERE user_id = $user_id"); + $extended_alert_description = '. File successfully uploaded.'; + + } + } + + mysqli_query($mysqli, "UPDATE users SET user_name = '$name', user_email = '$email', user_role_id = $role WHERE user_id = $user_id"); + + if (!empty($new_password)) { + $new_password = password_hash($new_password, PASSWORD_DEFAULT); + $user_specific_encryption_ciphertext = encryptUserSpecificKey(trim($_POST['new_password'])); + mysqli_query($mysqli, "UPDATE users SET user_password = '$new_password', user_specific_encryption_ciphertext = '$user_specific_encryption_ciphertext' WHERE user_id = $user_id"); + //Extended Logging + $extended_log_description .= ", password changed"; + } + + if (!empty($two_fa) && $two_fa == 'disable') { + mysqli_query($mysqli, "UPDATE users SET user_token = '' WHERE user_id = '$user_id'"); + mysqli_query($mysqli, "INSERT INTO logs SET log_type = 'User', log_action = 'Modify', log_description = '$session_name disabled 2FA for $name', log_ip = '$session_ip', log_user_agent = '$session_user_agent', log_user_id = $session_user_id"); + } + + //Update User Settings + mysqli_query($mysqli, "UPDATE user_settings SET user_config_force_mfa = $force_mfa WHERE user_id = $user_id"); + + // Logging + logAction("User", "Edit", "$session_name edited user $name", 0, $user_id); + + $_SESSION['alert_message'] = "User $name updated" . $extended_alert_description; + + header("Location: " . $_SERVER["HTTP_REFERER"]); + +} + +if (isset($_GET['activate_user'])) { + + validateCSRFToken($_GET['csrf_token']); + + $user_id = intval($_GET['activate_user']); + + // Get User Name + $sql = mysqli_query($mysqli, "SELECT * FROM users WHERE user_id = $user_id"); + $row = mysqli_fetch_array($sql); + $user_name = sanitizeInput($row['user_name']); + + mysqli_query($mysqli, "UPDATE users SET user_status = 1 WHERE user_id = $user_id"); + + // Logging + logAction("User", "Activate", "$session_name activated user $user_name", 0, $user_id); + + $_SESSION['alert_message'] = "User $user_name activated"; + + header("Location: " . $_SERVER["HTTP_REFERER"]); + +} + +if (isset($_GET['disable_user'])) { + + validateCSRFToken($_GET['csrf_token']); + + $user_id = intval($_GET['disable_user']); + + // Get User Name + $sql = mysqli_query($mysqli, "SELECT * FROM users WHERE user_id = $user_id"); + $row = mysqli_fetch_array($sql); + $user_name = sanitizeInput($row['user_name']); + + mysqli_query($mysqli, "UPDATE users SET user_status = 0 WHERE user_id = $user_id"); + + // Un-assign tickets + mysqli_query($mysqli, "UPDATE tickets SET ticket_assigned_to = 0 WHERE ticket_assigned_to = $user_id AND ticket_closed_at IS NULL"); + mysqli_query($mysqli, "UPDATE recurring_tickets SET recurring_ticket_assigned_to = 0 WHERE recurring_ticket_assigned_to = $user_id"); + + // Logging + logAction("User", "Disable", "$session_name disabled user $name", 0, $user_id); + + $_SESSION['alert_type'] = "error"; + $_SESSION['alert_message'] = "User $user_name disabled"; + + header("Location: " . $_SERVER["HTTP_REFERER"]); + +} + +if (isset($_GET['revoke_remember_me'])) { + + validateCSRFToken($_GET['csrf_token']); + + $user_id = intval($_GET['revoke_remember_me']); + + // Get User Name + $row = mysqli_fetch_array(mysqli_query($mysqli, "SELECT * FROM users WHERE user_id = $user_id")); + $user_name = sanitizeInput($row['user_name']); + + mysqli_query($mysqli, "DELETE FROM remember_tokens WHERE remember_token_user_id = $user_id"); + + // Logging + logAction("User", "Edit", "$session_name revoked all remember me tokens for user $user_name", 0, $user_id); + + $_SESSION['alert_type'] = "error"; + $_SESSION['alert_message'] = "User $user_name remember me tokens revoked"; + + header("Location: " . $_SERVER["HTTP_REFERER"]); + +} + +if (isset($_GET['archive_user'])) { + + validateCSRFToken($_GET['csrf_token']); + + // Variables from GET + $user_id = intval($_GET['archive_user']); + $password = password_hash(randomString(), PASSWORD_DEFAULT); + + // Get user details + $sql = mysqli_query($mysqli, "SELECT * FROM users WHERE user_id = $user_id"); + $row = mysqli_fetch_array($sql); + $name = sanitizeInput($row['user_name']); + + // Archive user query + mysqli_query($mysqli, "UPDATE users SET user_name = '$name (archived)', user_password = '$password', user_status = 0, user_specific_encryption_ciphertext = '', user_archived_at = NOW() WHERE user_id = $user_id"); + + // Logging + logAction("User", "Archive", "$session_name archived user $name", 0, $user_id); + + $_SESSION['alert_type'] = "error"; + $_SESSION['alert_message'] = "User $name archived"; + + header("Location: " . $_SERVER["HTTP_REFERER"]); + +} + +if (isset($_POST['export_users_csv'])) { + + //get records from database + $sql = mysqli_query($mysqli, "SELECT * FROM users LEFT JOIN user_roles ON user_role_id = role_id ORDER BY user_name ASC"); + + $count = mysqli_num_rows($sql); + + if ($count > 0) { + $delimiter = ","; + $filename = "Users-" . date('Y-m-d') . ".csv"; + + //create a file pointer + $f = fopen('php://memory', 'w'); + + //set column headers + $fields = array('Name', 'Email', 'Role', 'Status', 'Creation Date'); + fputcsv($f, $fields, $delimiter); + + //output each row of the data, format line as csv and write to file pointer + while($row = $sql->fetch_assoc()) { + + $user_status = intval($row['user_status']); + if ($user_status == 2) { + $user_status_display = "Invited"; + } elseif ($user_status == 1) { + $user_status_display = "Active"; + } else{ + $user_status_display = "Disabled"; + } + + $lineData = array($row['user_name'], $row['user_email'], $row['role_name'], $user_status_display, $row['user_created_at']); + fputcsv($f, $lineData, $delimiter); + } + + //move back to beginning of file + fseek($f, 0); + + //set headers to download file rather than displayed + header('Content-Type: text/csv'); + header('Content-Disposition: attachment; filename="' . $filename . '";'); + + //output all remaining data on a file pointer + fpassthru($f); + + // Logging + logAction("User", "Export", "$session_name exported $count user(s) to a CSV file"); + } + exit; + +} + +if (isset($_POST['ir_reset_user_password'])) { + + // Incident response: allow mass reset of agent passwords + + validateCSRFToken($_POST['csrf_token']); + + // Confirm logged-in user password, for security + $admin_password = $_POST['admin_password']; + $sql = mysqli_query($mysqli, "SELECT * FROM users WHERE user_id = $session_user_id"); + $userRow = mysqli_fetch_array($sql); + if (!password_verify($admin_password, $userRow['user_password'])) { + $_SESSION['alert_type'] = "error"; + $_SESSION['alert_message'] = "Incorrect password."; + header("Location: " . $_SERVER["HTTP_REFERER"]); + exit; + } + + // Get agents/users, other than the current user + $sql_users = mysqli_query($mysqli, "SELECT * FROM users WHERE (user_archived_at IS NULL AND user_id != $session_user_id)"); + + // Reset passwords + while ($row = mysqli_fetch_array($sql_users)) { + $user_id = intval($row['user_id']); + $user_email = sanitizeInput($row['user_email']); + $new_password = randomString(); + $user_specific_encryption_ciphertext = encryptUserSpecificKey(trim($new_password)); + + echo $user_email . " -- " . $new_password; // Show + $new_password = password_hash($new_password, PASSWORD_DEFAULT); + + mysqli_query($mysqli, "UPDATE users SET user_password = '$new_password', user_specific_encryption_ciphertext = '$user_specific_encryption_ciphertext' WHERE user_id = $user_id"); + + echo "

"; + } + + // Logging + logAction("User", "Edit", "$session_name reset ALL user passwords"); + + exit; // Stay on the plain text password page + +} diff --git a/admin/post/user_model.php b/admin/post/user_model.php new file mode 100644 index 00000000..ad331c06 --- /dev/null +++ b/admin/post/user_model.php @@ -0,0 +1,6 @@ + +
Roles are still in development. Permissions may not be fully enforced.
+ +
+
+

Roles

+
+
+ +
+
+
+
+
+
+
+
+ +
+ +
+
+
+
+
+
+
+ + text-nowrap"> + + + + + + + + + + + + + + + + + + + +
+ + Role + + Members + + Admin + + Action
+ + + +
+
+ + + +
+
+ +
+
+ + + +
+
+

Users

+
+
+ + + +
+
+
+
+
+
+
+
+ +
+ +
+
+
+
+
+
+
+
+
+ + "> + + + + + + + + + + + + Invited"; + } elseif ($user_status == 1) { + $user_status_display = "Active"; + } else{ + $user_status_display = "Disabled"; + } + $user_avatar = nullable_htmlentities($row['user_avatar']); + $user_token = nullable_htmlentities($row['user_token']); + if(empty($user_token)) { + $mfa_status_display = ""; + } else { + $mfa_status_display = ""; + } + $user_config_force_mfa = intval($row['user_config_force_mfa']); + $user_role = intval($row['user_role_id']); + $user_role_display = nullable_htmlentities($row['role_name']); + $user_initials = nullable_htmlentities(initials($user_name)); + + $sql_last_login = mysqli_query( + $mysqli, + "SELECT * FROM logs + WHERE log_user_id = $user_id AND log_type = 'Login' + ORDER BY log_id DESC LIMIT 1" + ); + if (mysqli_num_rows($sql_last_login) == 0) { + $last_login = "Never logged in"; + } else { + $row = mysqli_fetch_array($sql_last_login); + $log_created_at = nullable_htmlentities($row['log_created_at']); + $log_ip = nullable_htmlentities($row['log_ip']); + $log_user_agent = nullable_htmlentities($row['log_user_agent']); + $log_user_os = getOS($log_user_agent); + $log_user_browser = getWebBrowser($log_user_agent); + $last_login = "$log_created_at
$log_user_os
$log_user_browser
$log_ip
"; + } + + // Get User Client Access Permissions + $user_client_access_sql = mysqli_query($mysqli,"SELECT client_id FROM user_client_permissions WHERE user_id = $user_id"); + $client_access_array = []; + while ($row = mysqli_fetch_assoc($user_client_access_sql)) { + $client_access_array[] = intval($row['client_id']); + } + + $sql_remember_tokens = mysqli_query($mysqli, "SELECT * FROM remember_tokens WHERE remember_token_user_id = $user_id"); + $remember_token_count = mysqli_num_rows($sql_remember_tokens); + + + + ?> + + + + + + + + + + + + + +
+ + Name + + + + Email + + + + Role + + + + Status + + MFA + Last Login + Action
+ + data-toggle="ajax-modal" + data-ajax-url="modals/users/user_edit.php" + data-ajax-id="" + + > + + "> + + + + + +
+ + +
+
+
+ + + +
+
+ +
+
+ + +Paid
- Credit + Credit
Monthly @@ -584,7 +584,7 @@ $num_rows = mysqli_fetch_row(mysqli_query($mysqli, "SELECT FOUND_ROWS()")); @@ -628,7 +628,7 @@ $num_rows = mysqli_fetch_row(mysqli_query($mysqli, "SELECT FOUND_ROWS()")); + + + $content]); +?> \ No newline at end of file diff --git a/includes/modal_header.php b/includes/modal_header.php new file mode 100644 index 00000000..74f3848c --- /dev/null +++ b/includes/modal_header.php @@ -0,0 +1,13 @@ + 'ID missing.']); +// exit; +//} diff --git a/modals/client_add_modal.php b/modals/clients/client_add.php similarity index 100% rename from modals/client_add_modal.php rename to modals/clients/client_add.php diff --git a/modals/client_bulk_assign_tags_modal.php b/modals/clients/client_bulk_assign_tags.php similarity index 100% rename from modals/client_bulk_assign_tags_modal.php rename to modals/clients/client_bulk_assign_tags.php diff --git a/modals/client_bulk_edit_hourly_rate_modal.php b/modals/clients/client_bulk_edit_hourly_rate.php similarity index 100% rename from modals/client_bulk_edit_hourly_rate_modal.php rename to modals/clients/client_bulk_edit_hourly_rate.php diff --git a/modals/client_bulk_edit_industry_modal.php b/modals/clients/client_bulk_edit_industry.php similarity index 100% rename from modals/client_bulk_edit_industry_modal.php rename to modals/clients/client_bulk_edit_industry.php diff --git a/modals/client_bulk_edit_referral_modal.php b/modals/clients/client_bulk_edit_referral.php similarity index 100% rename from modals/client_bulk_edit_referral_modal.php rename to modals/clients/client_bulk_edit_referral.php diff --git a/modals/client_bulk_email_modal.php b/modals/clients/client_bulk_email.php similarity index 100% rename from modals/client_bulk_email_modal.php rename to modals/clients/client_bulk_email.php diff --git a/modals/client_credit_add_modal.php b/modals/clients/client_credit_add.php similarity index 100% rename from modals/client_credit_add_modal.php rename to modals/clients/client_credit_add.php diff --git a/modals/client_delete_modal.php b/modals/clients/client_delete.php similarity index 100% rename from modals/client_delete_modal.php rename to modals/clients/client_delete.php diff --git a/modals/client_download_pdf_modal.php b/modals/clients/client_download_pdf.php similarity index 100% rename from modals/client_download_pdf_modal.php rename to modals/clients/client_download_pdf.php diff --git a/ajax/ajax_client_edit.php b/modals/clients/client_edit.php similarity index 93% rename from ajax/ajax_client_edit.php rename to modals/clients/client_edit.php index 366de4cc..fa4df170 100644 --- a/ajax/ajax_client_edit.php +++ b/modals/clients/client_edit.php @@ -1,6 +1,6 @@ + +