| 
									
										
										
										
											2024-09-07 22:36:57 +00:00
										 |  |  | 
 | 
					
						
							|  |  |  |                 <!-- user profile --> | 
					
						
							|  |  |  |                 <div class="card text-center w-50 mx-auto"> | 
					
						
							|  |  |  | 
 | 
					
						
							| 
									
										
										
										
											2024-10-04 11:18:28 +00:00
										 |  |  |                     <p class="h4 card-header">Profile of <?= htmlspecialchars($userDetails[0]['username']) ?></p>
 | 
					
						
							| 
									
										
										
										
											2024-09-07 22:36:57 +00:00
										 |  |  |                     <div class="card-body"> | 
					
						
							|  |  |  | 
 | 
					
						
							| 
									
										
										
										
											2024-10-04 11:18:28 +00:00
										 |  |  |                         <form method="POST" action="<?= htmlspecialchars($app_root) ?>?page=profile" enctype="multipart/form-data"> | 
					
						
							| 
									
										
										
										
											2024-09-10 11:05:38 +00:00
										 |  |  |                             <div class="row"> | 
					
						
							|  |  |  |                                 <p class="border rounded bg-light mb-4"><small>edit the profile fields</small></p> | 
					
						
							|  |  |  |                                 <div class="col-md-4 avatar-container"> | 
					
						
							|  |  |  |                                     <div class="avatar-wrapper"> | 
					
						
							| 
									
										
										
										
											2024-10-04 11:18:28 +00:00
										 |  |  |                                         <img class="avatar-img" src="<?= htmlspecialchars($app_root) . htmlspecialchars($avatar) ?>" alt="avatar" /> | 
					
						
							| 
									
										
										
										
											2024-09-10 11:05:38 +00:00
										 |  |  |         <div class="avatar-btn-container"> | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  |                                         <label for="avatar-upload" class="avatar-btn avatar-btn-select btn btn-primary"> | 
					
						
							|  |  |  |                                             <i class="fas fa-folder" data-toggle="tooltip" data-placement="right" data-offset="30.0" title="select new avatar"></i> | 
					
						
							|  |  |  |                                         </label> | 
					
						
							| 
									
										
										
										
											2024-09-09 12:20:21 +00:00
										 |  |  |                                         <input type="file" id="avatar-upload" name="avatar_file" accept="image/*" style="display:none;"> | 
					
						
							|  |  |  | 
 | 
					
						
							| 
									
										
										
										
											2024-09-09 12:54:32 +00:00
										 |  |  | <?php if ($default_avatar) { ?>
 | 
					
						
							| 
									
										
										
										
											2024-09-10 11:05:38 +00:00
										 |  |  |                                         <button type="button" class="avatar-btn avatar-btn-remove btn btn-secondary" data-toggle="modal" data-target="#confirmDeleteModal" disabled> | 
					
						
							| 
									
										
										
										
											2024-09-09 12:54:32 +00:00
										 |  |  | <?php } else { ?>
 | 
					
						
							| 
									
										
										
										
											2024-09-10 11:05:38 +00:00
										 |  |  |                                         <button type="button" class="avatar-btn avatar-btn-remove btn btn-danger" data-toggle="modal" data-target="#confirmDeleteModal"> | 
					
						
							| 
									
										
										
										
											2024-09-09 12:54:32 +00:00
										 |  |  | <?php } ?>
 | 
					
						
							| 
									
										
										
										
											2024-09-10 11:05:38 +00:00
										 |  |  |                                         <i class="fas fa-trash" data-toggle="tooltip" data-placement="right" data-offset="30.0" title="remove current avatar"></i> | 
					
						
							| 
									
										
										
										
											2024-09-09 12:54:32 +00:00
										 |  |  |                                         </button> | 
					
						
							| 
									
										
										
										
											2024-09-10 11:05:38 +00:00
										 |  |  |         </div> | 
					
						
							| 
									
										
										
										
											2024-09-09 12:54:32 +00:00
										 |  |  |                                     </div> | 
					
						
							| 
									
										
										
										
											2024-09-07 22:36:57 +00:00
										 |  |  |                                 </div> | 
					
						
							|  |  |  | 
 | 
					
						
							| 
									
										
										
										
											2024-09-10 11:05:38 +00:00
										 |  |  |                                 <div class="col-md-8"> | 
					
						
							| 
									
										
										
										
											2024-09-08 10:48:21 +00:00
										 |  |  |                                     <!--div class="row mb-3"> | 
					
						
							|  |  |  |                                         <div class="col-md-4 text-end"> | 
					
						
							|  |  |  |                                             <label for="username" class="form-label"><small>username:</small></label> | 
					
						
							|  |  |  |                                             <span class="text-danger" style="margin-right: -12px;">*</span> | 
					
						
							|  |  |  |                                         </div> | 
					
						
							|  |  |  |                                         <div class="col-md-8 text-start bg-light"> | 
					
						
							| 
									
										
										
										
											2024-10-04 11:18:28 +00:00
										 |  |  |                                             <input class="form-control" type="text" name="username" value="<?= htmlspecialchars($userDetails[0]['username']) ?>" required /> | 
					
						
							| 
									
										
										
										
											2024-09-08 10:48:21 +00:00
										 |  |  |                                         </div> | 
					
						
							|  |  |  |                                     </div--> | 
					
						
							| 
									
										
										
										
											2024-09-07 22:36:57 +00:00
										 |  |  | 
 | 
					
						
							| 
									
										
										
										
											2024-09-08 10:48:21 +00:00
										 |  |  |                                     <div class="row mb-3"> | 
					
						
							|  |  |  |                                         <div class="col-md-4 text-end"> | 
					
						
							|  |  |  |                                             <label for="name" class="form-label"><small>name:</small></label> | 
					
						
							|  |  |  |                                         </div> | 
					
						
							|  |  |  |                                         <div class="col-md-8 text-start bg-light"> | 
					
						
							| 
									
										
										
										
											2024-10-04 11:18:28 +00:00
										 |  |  |                                             <input class="form-control" type="text" name="name" value="<?= htmlspecialchars($userDetails[0]['name']) ?>" autofocus /> | 
					
						
							| 
									
										
										
										
											2024-09-08 10:48:21 +00:00
										 |  |  |                                         </div> | 
					
						
							| 
									
										
										
										
											2024-09-07 22:36:57 +00:00
										 |  |  |                                     </div> | 
					
						
							|  |  |  | 
 | 
					
						
							| 
									
										
										
										
											2024-09-08 10:48:21 +00:00
										 |  |  |                                     <div class="row mb-3"> | 
					
						
							|  |  |  |                                         <div class="col-md-4 text-end"> | 
					
						
							|  |  |  |                                             <label for="email" class="form-label"><small>email:</small></label> | 
					
						
							|  |  |  |                                         </div> | 
					
						
							|  |  |  |                                         <div class="col-md-8 text-start bg-light"> | 
					
						
							| 
									
										
										
										
											2024-10-04 11:18:28 +00:00
										 |  |  |                                             <input class="form-control" type="text" name="email" value="<?= htmlspecialchars($userDetails[0]['email']) ?>" /> | 
					
						
							| 
									
										
										
										
											2024-09-08 10:48:21 +00:00
										 |  |  |                                         </div> | 
					
						
							| 
									
										
										
										
											2024-09-07 22:36:57 +00:00
										 |  |  |                                     </div> | 
					
						
							| 
									
										
										
										
											2024-09-08 10:48:21 +00:00
										 |  |  | 
 | 
					
						
							| 
									
										
										
										
											2024-09-13 10:04:15 +00:00
										 |  |  |                                     <div class="row mb-3"> | 
					
						
							|  |  |  |                                         <div class="col-md-4 text-end"> | 
					
						
							|  |  |  |                                             <label for="timezone" class="form-label"><small>timezone:</small></label> | 
					
						
							|  |  |  |                                         </div> | 
					
						
							|  |  |  |                                         <div class="col-md-8 text-start bg-light"> | 
					
						
							|  |  |  |                                             <select class="form-control" name="timezone" id="timezone"> | 
					
						
							|  |  |  | <?php foreach ($allTimezones as $timezone) { ?>
 | 
					
						
							| 
									
										
										
										
											2024-10-04 11:18:28 +00:00
										 |  |  |                                                 <option value="<?= htmlspecialchars($timezone) ?>" <?= $timezone === $userTimezone ? 'selected' : '' ?>>
 | 
					
						
							|  |  |  |                                                     <?= htmlspecialchars($timezone) ?>  (<?= htmlspecialchars(getUTCOffset($timezone)) ?>)
 | 
					
						
							| 
									
										
										
										
											2024-09-13 10:04:15 +00:00
										 |  |  |                                                 </option> | 
					
						
							|  |  |  | <?php } ?>
 | 
					
						
							|  |  |  |                                             </select> | 
					
						
							|  |  |  |                                         </div> | 
					
						
							|  |  |  |                                     </div> | 
					
						
							|  |  |  | 
 | 
					
						
							| 
									
										
										
										
											2024-09-08 10:48:21 +00:00
										 |  |  |                                     <div class="row mb-3"> | 
					
						
							|  |  |  |                                         <div class="col-md-4 text-end"> | 
					
						
							|  |  |  |                                             <label for="bio" class="form-label"><small>bio:</small></label> | 
					
						
							|  |  |  |                                         </div> | 
					
						
							|  |  |  |                                         <div class="col-md-8 text-start bg-light"> | 
					
						
							| 
									
										
										
										
											2024-10-04 11:18:28 +00:00
										 |  |  |                                             <textarea class="form-control" name="bio" rows="10"><?= htmlspecialchars($userDetails[0]['bio'] ?? '') ?></textarea>
 | 
					
						
							| 
									
										
										
										
											2024-09-08 10:48:21 +00:00
										 |  |  |                                         </div> | 
					
						
							| 
									
										
										
										
											2024-09-07 22:36:57 +00:00
										 |  |  |                                     </div> | 
					
						
							|  |  |  | 
 | 
					
						
							| 
									
										
										
										
											2024-09-08 10:48:21 +00:00
										 |  |  |                                     <div class="row mb-3"> | 
					
						
							|  |  |  |                                         <div class="col-md-4 text-end"> | 
					
						
							|  |  |  |                                             <label for="rights" class="form-label"><small>rights:</small></label> | 
					
						
							|  |  |  |                                         </div> | 
					
						
							|  |  |  |                                         <div class="col-md-8 text-start bg-light"> | 
					
						
							| 
									
										
										
										
											2024-09-11 19:51:46 +00:00
										 |  |  | <?php foreach ($allRights as $right) { | 
					
						
							| 
									
										
										
										
											2024-09-12 08:54:57 +00:00
										 |  |  |     // Check if the current right exists in $userRights
 | 
					
						
							| 
									
										
										
										
											2024-09-11 19:51:46 +00:00
										 |  |  |     $isChecked = false; | 
					
						
							|  |  |  |     foreach ($userRights as $userRight) { | 
					
						
							|  |  |  |         if ($userRight['right_id'] === $right['right_id']) { | 
					
						
							|  |  |  |             $isChecked = true; | 
					
						
							|  |  |  |             break; | 
					
						
							|  |  |  |         } | 
					
						
							|  |  |  |     } ?>
 | 
					
						
							|  |  |  |                                             <div class="form-check"> | 
					
						
							|  |  |  |                                                 <input class="form-check-input" type="checkbox" name="rights[]" value="<?= htmlspecialchars($right['right_id']) ?>" id="right_<?= htmlspecialchars($right['right_id']) ?>" <?= $isChecked ? 'checked' : '' ?> />
 | 
					
						
							| 
									
										
										
										
											2024-10-04 11:18:28 +00:00
										 |  |  |                                                 <label class="form-check-label" for="right_<?= htmlspecialchars($right['right_id']) ?>"><?= htmlspecialchars($right['right_name']) ?></label>
 | 
					
						
							| 
									
										
										
										
											2024-09-11 19:51:46 +00:00
										 |  |  |                                             </div> | 
					
						
							|  |  |  | <?php } ?>
 | 
					
						
							| 
									
										
										
										
											2024-09-08 10:48:21 +00:00
										 |  |  |                                         </div> | 
					
						
							|  |  |  |                                     </div> | 
					
						
							| 
									
										
										
										
											2024-09-07 22:36:57 +00:00
										 |  |  | 
 | 
					
						
							| 
									
										
										
										
											2024-09-08 10:48:21 +00:00
										 |  |  |                                 </div> | 
					
						
							| 
									
										
										
										
											2024-09-07 22:36:57 +00:00
										 |  |  | 
 | 
					
						
							| 
									
										
										
										
											2024-09-10 11:05:38 +00:00
										 |  |  |                                 <p> | 
					
						
							| 
									
										
										
										
											2024-10-04 11:18:28 +00:00
										 |  |  |                                     <a href="<?= htmlspecialchars($app_root) ?>?page=profile" class="btn btn-secondary">Cancel</a> | 
					
						
							| 
									
										
										
										
											2024-09-10 11:05:38 +00:00
										 |  |  |                                     <input type="submit" class="btn btn-primary" value="Save" /> | 
					
						
							|  |  |  |                                 </p> | 
					
						
							| 
									
										
										
										
											2024-09-07 22:36:57 +00:00
										 |  |  | 
 | 
					
						
							| 
									
										
										
										
											2024-09-08 10:48:21 +00:00
										 |  |  |                             </div> | 
					
						
							|  |  |  |                         </form> | 
					
						
							| 
									
										
										
										
											2024-09-10 11:05:38 +00:00
										 |  |  | 
 | 
					
						
							|  |  |  |                                         <!-- avatar removal modal confirmation --> | 
					
						
							|  |  |  |                                         <div class="modal fade" id="confirmDeleteModal" tabindex="-1" aria-labelledby="confirmDeleteModalLabel" aria-hidden="true"> | 
					
						
							|  |  |  |                                             <div class="modal-dialog"> | 
					
						
							|  |  |  |                                                 <div class="modal-content"> | 
					
						
							|  |  |  |                                                     <div class="modal-header"> | 
					
						
							|  |  |  |                                                         <h5 class="modal-title" id="confirmDeleteModalLabel">Confirm Avatar Deletion</h5> | 
					
						
							|  |  |  |                                                         <button type="button" class="btn-close" data-dismiss="modal" aria-label="Close"></button> | 
					
						
							|  |  |  |                                                     </div> | 
					
						
							|  |  |  |                                                     <div class="modal-body"> | 
					
						
							| 
									
										
										
										
											2024-10-04 11:18:28 +00:00
										 |  |  |                                                         <img class="avatar-img" src="<?= htmlspecialchars($app_root) . htmlspecialchars($avatar) ?>" alt="avatar" /> | 
					
						
							| 
									
										
										
										
											2024-09-10 11:05:38 +00:00
										 |  |  |                                                         <br /> | 
					
						
							|  |  |  |                                                         Are you sure you want to delete your avatar? | 
					
						
							|  |  |  |                                                         <br /> | 
					
						
							|  |  |  |                                                         This action cannot be undone. | 
					
						
							|  |  |  |                                                     </div> | 
					
						
							| 
									
										
										
										
											2024-09-11 13:21:05 +00:00
										 |  |  |                                                     <div class="modal-footer"> | 
					
						
							| 
									
										
										
										
											2024-09-10 11:05:38 +00:00
										 |  |  |                                                         <button type="button" class="btn btn-secondary" data-dismiss="modal">Cancel</button> | 
					
						
							| 
									
										
										
										
											2024-10-04 11:18:28 +00:00
										 |  |  |                                                         <form id="remove-avatar-form" data-action="remove-avatar" method="POST" action="<?= htmlspecialchars($app_root) ?>?page=profile&action=remove&item=avatar"> | 
					
						
							| 
									
										
										
										
											2024-09-10 11:05:38 +00:00
										 |  |  |                                                             <button type="button" class="btn btn-danger" id="confirm-delete">Delete Avatar</button> | 
					
						
							|  |  |  |                                                         </form> | 
					
						
							|  |  |  |                                                     </div> | 
					
						
							|  |  |  |                                                 </div> | 
					
						
							|  |  |  |                                             </div> | 
					
						
							|  |  |  |                                         </div> | 
					
						
							|  |  |  | 
 | 
					
						
							| 
									
										
										
										
											2024-09-07 22:36:57 +00:00
										 |  |  |                     </div> | 
					
						
							|  |  |  |                 </div> | 
					
						
							|  |  |  |                 <!-- /user profile --> | 
					
						
							| 
									
										
										
										
											2024-09-09 12:20:21 +00:00
										 |  |  | 
 | 
					
						
							|  |  |  | <script> | 
					
						
							| 
									
										
										
										
											2024-09-10 11:05:38 +00:00
										 |  |  | // Preview the uploaded avatar
 | 
					
						
							| 
									
										
										
										
											2024-09-09 12:20:21 +00:00
										 |  |  | document.getElementById('avatar-upload').addEventListener('change', function(event) { | 
					
						
							|  |  |  |     const reader = new FileReader(); | 
					
						
							|  |  |  |     reader.onload = function() { | 
					
						
							|  |  |  |         document.querySelector('.avatar-img').src = reader.result; | 
					
						
							|  |  |  |     }; | 
					
						
							|  |  |  |     reader.readAsDataURL(event.target.files[0]); | 
					
						
							|  |  |  | }); | 
					
						
							| 
									
										
										
										
											2024-09-09 12:54:32 +00:00
										 |  |  | 
 | 
					
						
							| 
									
										
										
										
											2024-09-10 11:05:38 +00:00
										 |  |  | // Avatar file size and type control
 | 
					
						
							| 
									
										
										
										
											2024-09-09 12:54:32 +00:00
										 |  |  | document.getElementById('avatar-upload').addEventListener('change', function() { | 
					
						
							| 
									
										
										
										
											2024-09-10 11:05:38 +00:00
										 |  |  |     const maxFileSize = 500 * 1024; // 500 KB in bytes
 | 
					
						
							| 
									
										
										
										
											2024-10-04 11:18:28 +00:00
										 |  |  |     const currentAvatar = '<?= htmlspecialchars($app_root) . htmlspecialchars($avatar) ?>'; // current avatar
 | 
					
						
							| 
									
										
										
										
											2024-09-09 13:35:06 +00:00
										 |  |  |     const file = this.files[0]; | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  |     if (file) { | 
					
						
							|  |  |  |         // Check file size
 | 
					
						
							|  |  |  |         if (file.size > maxFileSize) { | 
					
						
							|  |  |  |             alert('File size exceeds 500 KB. Please select a smaller file.'); | 
					
						
							|  |  |  |             this.value = '';  // Clear the file input
 | 
					
						
							|  |  |  |             document.querySelector('.avatar-img').src = currentAvatar; | 
					
						
							|  |  |  |         } | 
					
						
							| 
									
										
										
										
											2024-09-09 12:54:32 +00:00
										 |  |  |     } | 
					
						
							|  |  |  | }); | 
					
						
							|  |  |  | 
 | 
					
						
							| 
									
										
										
										
											2024-09-10 11:05:38 +00:00
										 |  |  | // Submitting the avatar deletion confirmation modal form
 | 
					
						
							|  |  |  | document.getElementById('confirm-delete').addEventListener('click', function(event) { | 
					
						
							|  |  |  |     event.preventDefault();  // Prevent the outer form from submitting
 | 
					
						
							| 
									
										
										
										
											2024-09-09 12:54:32 +00:00
										 |  |  |     document.getElementById('remove-avatar-form').submit(); | 
					
						
							|  |  |  | }); | 
					
						
							| 
									
										
										
										
											2024-09-10 11:05:38 +00:00
										 |  |  | 
 | 
					
						
							| 
									
										
										
										
											2024-09-13 10:04:15 +00:00
										 |  |  | // Function to detect user's timezone and select it in the dropdown
 | 
					
						
							|  |  |  | function setTimezone() { | 
					
						
							|  |  |  |     const userTimezone = Intl.DateTimeFormat().resolvedOptions().timeZone; | 
					
						
							|  |  |  |     const timezoneSelect = document.getElementById("timezone"); | 
					
						
							|  |  |  |     timezoneSelect.className = 'form-control border border-danger'; | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  |     // Loop through the options to find and select the user's timezone
 | 
					
						
							|  |  |  |     for (let i = 0; i < timezoneSelect.options.length; i++) { | 
					
						
							|  |  |  |         if (timezoneSelect.options[i].value === userTimezone) { | 
					
						
							|  |  |  |             timezoneSelect.selectedIndex = i; | 
					
						
							|  |  |  |             break; | 
					
						
							|  |  |  |         } | 
					
						
							|  |  |  |     } | 
					
						
							|  |  |  | } | 
					
						
							|  |  |  | // Run the function on page load
 | 
					
						
							|  |  |  | window.onload = function() { | 
					
						
							|  |  |  |     const isTimezoneSet = <?php echo json_encode($isTimezoneSet); ?>; // Pass PHP flag to JavaScript
 | 
					
						
							|  |  |  |     // If timezone is not set, run setTimezone()
 | 
					
						
							|  |  |  |     if (!isTimezoneSet) { | 
					
						
							|  |  |  |         setTimezone(); | 
					
						
							|  |  |  |     } | 
					
						
							|  |  |  | }; | 
					
						
							|  |  |  | 
 | 
					
						
							| 
									
										
										
										
											2024-09-09 12:20:21 +00:00
										 |  |  | </script> |