Bugfixes to the latest changes
							parent
							
								
									7cc8da562d
								
							
						
					
					
						commit
						e0eee38726
					
				| 
						 | 
				
			
			@ -191,6 +191,7 @@ class User {
 | 
			
		|||
            $sql = 'UPDATE users_meta SET
 | 
			
		||||
                        name = :name,
 | 
			
		||||
                        email = :email,
 | 
			
		||||
                        timezone = :timezone,
 | 
			
		||||
                        bio = :bio
 | 
			
		||||
                    WHERE user_id = :user_id';
 | 
			
		||||
            $query = $this->db->prepare($sql);
 | 
			
		||||
| 
						 | 
				
			
			@ -198,6 +199,7 @@ class User {
 | 
			
		|||
                ':user_id'	=> $user_id,
 | 
			
		||||
                ':name'		=> $updatedUser['name'],
 | 
			
		||||
                ':email'	=> $updatedUser['email'],
 | 
			
		||||
                ':timezone'	=> $updatedUser['timezone'],
 | 
			
		||||
                ':bio'		=> $updatedUser['bio']
 | 
			
		||||
            ]);
 | 
			
		||||
 | 
			
		||||
| 
						 | 
				
			
			
 | 
			
		|||
| 
						 | 
				
			
			@ -2,14 +2,19 @@
 | 
			
		|||
 | 
			
		||||
// get the UTC offset of a specified timezone
 | 
			
		||||
function getUTCOffset($timezone) {
 | 
			
		||||
    $datetime = new DateTime("now", new DateTimeZone($timezone));
 | 
			
		||||
    $offsetInSeconds = $datetime->getOffset();
 | 
			
		||||
    $formattedOffset = '';
 | 
			
		||||
    if (isset($timezone)) {
 | 
			
		||||
 | 
			
		||||
    $hours = intdiv($offsetInSeconds, 3600);
 | 
			
		||||
    $minutes = ($offsetInSeconds % 3600) / 60;
 | 
			
		||||
    $formattedOffset = sprintf("UTC%+03d:%02d", $hours, $minutes); // Format UTC+01:00
 | 
			
		||||
        $datetime = new DateTime("now", new DateTimeZone($timezone));
 | 
			
		||||
        $offsetInSeconds = $datetime->getOffset();
 | 
			
		||||
 | 
			
		||||
        $hours = intdiv($offsetInSeconds, 3600);
 | 
			
		||||
        $minutes = ($offsetInSeconds % 3600) / 60;
 | 
			
		||||
        $formattedOffset = sprintf("UTC%+03d:%02d", $hours, $minutes); // Format UTC+01:00
 | 
			
		||||
    }
 | 
			
		||||
 | 
			
		||||
    return $formattedOffset;
 | 
			
		||||
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
?>
 | 
			
		||||
| 
						 | 
				
			
			
 | 
			
		|||
| 
						 | 
				
			
			@ -1,13 +1,6 @@
 | 
			
		|||
<?php
 | 
			
		||||
 | 
			
		||||
$action = $_REQUEST['action'] ?? '';
 | 
			
		||||
//require '../app/classes/user.php';
 | 
			
		||||
//
 | 
			
		||||
//$userObject = new User($dbWeb);
 | 
			
		||||
//
 | 
			
		||||
//$user_id = $userObject->getUserId($user)[0]['id'];
 | 
			
		||||
//$userDetails = $userObject->getUserDetails($user_id);
 | 
			
		||||
//$userRights = $userObject->getUserRights($user_id);
 | 
			
		||||
 | 
			
		||||
// if a form is submitted, it's from the edit page
 | 
			
		||||
if ($_SERVER['REQUEST_METHOD'] == 'POST') {
 | 
			
		||||
| 
						 | 
				
			
			@ -31,6 +24,7 @@ if ($_SERVER['REQUEST_METHOD'] == 'POST') {
 | 
			
		|||
    $updatedUser = [
 | 
			
		||||
            'name'		=> $_POST['name'] ?? '',
 | 
			
		||||
            'email'		=> $_POST['email'] ?? '',
 | 
			
		||||
            'timezone'		=> $_POST['timezone'] ?? '',
 | 
			
		||||
            'bio'		=> $_POST['bio'] ?? '',
 | 
			
		||||
        ];
 | 
			
		||||
    $result = $userObject->editUser($user_id, $updatedUser);
 | 
			
		||||
| 
						 | 
				
			
			@ -76,6 +70,9 @@ if ($_SERVER['REQUEST_METHOD'] == 'POST') {
 | 
			
		|||
 | 
			
		||||
        case 'edit':
 | 
			
		||||
            $allRights = $userObject->getAllRights();
 | 
			
		||||
            $allTimezones = timezone_identifiers_list();
 | 
			
		||||
            // if timezone is already set, we pass a flag for JS to not autodetect browser timezone
 | 
			
		||||
            $isTimezoneSet = !empty($userDetails[0]['timezone']);
 | 
			
		||||
            include '../app/templates/profile-edit.php';
 | 
			
		||||
            break;
 | 
			
		||||
 | 
			
		||||
| 
						 | 
				
			
			
 | 
			
		|||
| 
						 | 
				
			
			@ -4,10 +4,7 @@
 | 
			
		|||
            <div class="col-md-3 sidebar-wrapper bg-light" id="sidebar">
 | 
			
		||||
            <div class="text-center" style="border: 1px solid #0dcaf0; height: 22px;" id="time_now">
 | 
			
		||||
<?php
 | 
			
		||||
$userTimezone = 'Europe/Sofia';
 | 
			
		||||
//$userTimezone = 'UTC';
 | 
			
		||||
$timezone = isset($userTimezone) ? $userTimezone : 'UTC'; // Default to UTC if no timezone is set
 | 
			
		||||
$timeNow = new DateTime('now', new DateTimeZone($timezone));
 | 
			
		||||
$timeNow = new DateTime('now', new DateTimeZone($userTimezone));
 | 
			
		||||
?>
 | 
			
		||||
                <!--span style="vertical-align: top; font-size: 12px;"><?= $timeNow->format('d M Y H:i'); ?> <?= $userTimezone ?></span-->
 | 
			
		||||
                <span style="vertical-align: top; font-size: 12px;"><?= $timeNow->format('H:i'); ?>  <?= $userTimezone ?></span>
 | 
			
		||||
| 
						 | 
				
			
			
 | 
			
		|||
| 
						 | 
				
			
			@ -58,6 +58,21 @@
 | 
			
		|||
                                        </div>
 | 
			
		||||
                                    </div>
 | 
			
		||||
 | 
			
		||||
                                    <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) { ?>
 | 
			
		||||
                                                <option value="<?= $timezone ?>" <?= $timezone === $userTimezone ? 'selected' : '' ?>>
 | 
			
		||||
                                                    <?= $timezone ?>  (<?= getUTCOffset($timezone) ?>)
 | 
			
		||||
                                                </option>
 | 
			
		||||
<?php } ?>
 | 
			
		||||
                                            </select>
 | 
			
		||||
                                        </div>
 | 
			
		||||
                                    </div>
 | 
			
		||||
 | 
			
		||||
                                    <div class="row mb-3">
 | 
			
		||||
                                        <div class="col-md-4 text-end">
 | 
			
		||||
                                            <label for="bio" class="form-label"><small>bio:</small></label>
 | 
			
		||||
| 
						 | 
				
			
			@ -160,4 +175,27 @@ document.getElementById('confirm-delete').addEventListener('click', function(eve
 | 
			
		|||
    document.getElementById('remove-avatar-form').submit();
 | 
			
		||||
});
 | 
			
		||||
 | 
			
		||||
// 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();
 | 
			
		||||
    }
 | 
			
		||||
};
 | 
			
		||||
 | 
			
		||||
</script>
 | 
			
		||||
| 
						 | 
				
			
			
 | 
			
		|||
| 
						 | 
				
			
			@ -42,6 +42,17 @@
 | 
			
		|||
                                    </div>
 | 
			
		||||
                                </div>
 | 
			
		||||
 | 
			
		||||
                                <div class="row mb-3">
 | 
			
		||||
                                    <div class="col-md-4 text-end">
 | 
			
		||||
                                        <label class="form-label"><small>timezone:</small></label>
 | 
			
		||||
                                    </div>
 | 
			
		||||
                                    <div class="col-md-8 text-start bg-light">
 | 
			
		||||
<?php if (isset($userDetails[0]['timezone'])) { ?>
 | 
			
		||||
                                        <?= $userDetails[0]['timezone'] ?>  <span style="font-size: 0.66em;">(<?= getUTCOffset($userDetails[0]['timezone']) ?>)</span>
 | 
			
		||||
<?php } ?>
 | 
			
		||||
                                    </div>
 | 
			
		||||
                                </div>
 | 
			
		||||
 | 
			
		||||
                                <div class="row mb-3">
 | 
			
		||||
                                    <div class="col-md-4 text-end">
 | 
			
		||||
                                        <label class="form-label"><small>bio:</small></label>
 | 
			
		||||
| 
						 | 
				
			
			
 | 
			
		|||
| 
						 | 
				
			
			@ -9,6 +9,7 @@ CREATE TABLE users_meta (
 | 
			
		|||
    user_id INTEGER NOT NULL,
 | 
			
		||||
    name TEXT,
 | 
			
		||||
    email TEXT,
 | 
			
		||||
    timezone TEXT,
 | 
			
		||||
    avatar TEXT,
 | 
			
		||||
    bio TEXT,
 | 
			
		||||
    FOREIGN KEY (user_id) REFERENCES users(id)
 | 
			
		||||
| 
						 | 
				
			
			
 | 
			
		|||
| 
						 | 
				
			
			@ -138,6 +138,7 @@ if ($page == 'logout') {
 | 
			
		|||
    $user_id = $userObject->getUserId($user)[0]['id'];
 | 
			
		||||
    $userDetails = $userObject->getUserDetails($user_id);
 | 
			
		||||
    $userRights = $userObject->getUserRights($user_id);
 | 
			
		||||
    $userTimezone = isset($userDetails[0]['timezone']) ? $userDetails[0]['timezone'] : 'UTC'; // Default to UTC if no timezone is set
 | 
			
		||||
 | 
			
		||||
    // page building
 | 
			
		||||
    if (in_array($page, $allowed_urls)) {
 | 
			
		||||
| 
						 | 
				
			
			
 | 
			
		|||
		Loading…
	
		Reference in New Issue