Adds basic profile editing
parent
06a534c2da
commit
f0f7d5b2d3
|
@ -45,6 +45,7 @@ class User {
|
||||||
return $query->fetchAll(PDO::FETCH_ASSOC);
|
return $query->fetchAll(PDO::FETCH_ASSOC);
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
||||||
// get user details
|
// get user details
|
||||||
public function getUserDetails($username) {
|
public function getUserDetails($username) {
|
||||||
$sql = 'SELECT * FROM users_meta um
|
$sql = 'SELECT * FROM users_meta um
|
||||||
|
@ -60,6 +61,30 @@ class User {
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
||||||
|
// update an existing user
|
||||||
|
public function editUser($user_id, $updatedUser) {
|
||||||
|
try {
|
||||||
|
$sql = 'UPDATE users_meta SET
|
||||||
|
name = :name,
|
||||||
|
email = :email,
|
||||||
|
bio = :bio
|
||||||
|
WHERE user_id = :user_id';
|
||||||
|
$query = $this->db->prepare($sql);
|
||||||
|
$query->execute([
|
||||||
|
':user_id' => $user_id,
|
||||||
|
':name' => $updatedUser['name'],
|
||||||
|
':email' => $updatedUser['email'],
|
||||||
|
':bio' => $updatedUser['bio']
|
||||||
|
]);
|
||||||
|
|
||||||
|
return true;
|
||||||
|
|
||||||
|
} catch (Exception $e) {
|
||||||
|
return $e->getMessage();
|
||||||
|
}
|
||||||
|
|
||||||
|
}
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
||||||
?>
|
?>
|
||||||
|
|
|
@ -5,16 +5,41 @@ require '../app/classes/user.php';
|
||||||
|
|
||||||
$userObject = new User($dbWeb);
|
$userObject = new User($dbWeb);
|
||||||
|
|
||||||
$userDetails = $userObject->getUserDetails($user);
|
// if a form is submitted, it's from the edit page
|
||||||
|
if ($_SERVER['REQUEST_METHOD'] == 'POST') {
|
||||||
|
|
||||||
switch ($action) {
|
$user_id = $userObject->getUserId($user)[0]['id'];
|
||||||
|
|
||||||
case 'edit':
|
// update the profile
|
||||||
include '../app/templates/profile-edit.php';
|
$updatedUser = [
|
||||||
break;
|
'name' => $_POST['name'] ?? '',
|
||||||
|
'email' => $_POST['email'] ?? '',
|
||||||
|
// 'avatar' => ,
|
||||||
|
'bio' => $_POST['bio'] ?? '',
|
||||||
|
];
|
||||||
|
$result = $userObject->editUser($user_id, $updatedUser);
|
||||||
|
if ($result === true) {
|
||||||
|
$_SESSION['notice'] = "User details for \"{$updatedUser['name']}\" are edited.";
|
||||||
|
} else {
|
||||||
|
$_SESSION['error'] = "Editing the user details failed. Error: $result";
|
||||||
|
}
|
||||||
|
|
||||||
default:
|
header("Location: $app_root?page=profile");
|
||||||
include '../app/templates/profile.php';
|
exit();
|
||||||
|
|
||||||
|
// no form submitted, show the templates
|
||||||
|
} else {
|
||||||
|
$userDetails = $userObject->getUserDetails($user);
|
||||||
|
|
||||||
|
switch ($action) {
|
||||||
|
|
||||||
|
case 'edit':
|
||||||
|
include '../app/templates/profile-edit.php';
|
||||||
|
break;
|
||||||
|
|
||||||
|
default:
|
||||||
|
include '../app/templates/profile.php';
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
?>
|
?>
|
||||||
|
|
|
@ -1,5 +1,5 @@
|
||||||
|
|
||||||
<!-- widget "agents" -->
|
<!-- agents -->
|
||||||
<div class="card text-center w-50 mx-auto">
|
<div class="card text-center w-50 mx-auto">
|
||||||
<p class="h4 card-header">Jilo Agent configuration for Jitsi platform <strong>"<?= htmlspecialchars($platformDetails[0]['name']) ?>"</strong></p>
|
<p class="h4 card-header">Jilo Agent configuration for Jitsi platform <strong>"<?= htmlspecialchars($platformDetails[0]['name']) ?>"</strong></p>
|
||||||
<div class="card-body">
|
<div class="card-body">
|
||||||
|
@ -47,4 +47,4 @@
|
||||||
</form>
|
</form>
|
||||||
</div>
|
</div>
|
||||||
</div>
|
</div>
|
||||||
<!-- /widget "agents" -->
|
<!-- /agents -->
|
||||||
|
|
|
@ -5,70 +5,72 @@
|
||||||
<p class="h4 card-header">Profile of <?= $userDetails[0]['username'] ?></p>
|
<p class="h4 card-header">Profile of <?= $userDetails[0]['username'] ?></p>
|
||||||
<div class="card-body">
|
<div class="card-body">
|
||||||
|
|
||||||
<div class="row">
|
<form method="POST" action="<?= $app_root ?>?page=profile">
|
||||||
<p class="border rounded bg-light mb-4"><small>edit the profile fields</small></p>
|
|
||||||
|
|
||||||
<div class="col-md-4">
|
<div class="row">
|
||||||
<div class="border" style="width: 200px; height: 200px;"><img src="" alt="avatar" /></div>
|
<p class="border rounded bg-light mb-4"><small>edit the profile fields</small></p>
|
||||||
</div>
|
|
||||||
|
|
||||||
<div class="col-md-8">
|
<div class="col-md-4">
|
||||||
|
<div class="border" style="width: 200px; height: 200px;"><img src="" alt="avatar" /></div>
|
||||||
<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">
|
|
||||||
<input class="form-control" type="text" name="username" value="<?= $userDetails[0]['username'] ?>" required />
|
|
||||||
</div>
|
|
||||||
</div>
|
</div>
|
||||||
|
|
||||||
<div class="row mb-3">
|
<div class="col-md-8">
|
||||||
<div class="col-md-4 text-end">
|
|
||||||
<label for="name" class="form-label"><small>name:</small></label>
|
<!--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">
|
||||||
|
<input class="form-control" type="text" name="username" value="<?= $userDetails[0]['username'] ?>" required />
|
||||||
|
</div>
|
||||||
|
</div-->
|
||||||
|
|
||||||
|
<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">
|
||||||
|
<input class="form-control" type="text" name="name" value="<?= $userDetails[0]['name'] ?>" />
|
||||||
|
</div>
|
||||||
</div>
|
</div>
|
||||||
<div class="col-md-8 text-start bg-light">
|
|
||||||
<input class="form-control" type="text" name="name" value="<?= $userDetails[0]['name'] ?>" />
|
<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">
|
||||||
|
<input class="form-control" type="text" name="email" value="<?= $userDetails[0]['email'] ?>" />
|
||||||
|
</div>
|
||||||
</div>
|
</div>
|
||||||
|
|
||||||
|
<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">
|
||||||
|
<textarea class="form-control" name="bio" rows="10"><?= $userDetails[0]['bio'] ?? '' ?></textarea>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
|
||||||
|
<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">
|
||||||
|
<input class="form-control" type="text" name="rights" value="<?= $userDetails[0]['rights'] ?? '' ?>" />
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
|
||||||
</div>
|
</div>
|
||||||
|
|
||||||
<div class="row mb-3">
|
<p>
|
||||||
<div class="col-md-4 text-end">
|
<a href="<?= $app_root ?>?page=profile" class="btn btn-secondary">Cancel</a>
|
||||||
<label for="email" class="form-label"><small>email:</small></label>
|
<input type="submit" class="btn btn-primary" value="Save" />
|
||||||
</div>
|
</p>
|
||||||
<div class="col-md-8 text-start bg-light">
|
|
||||||
<input class="form-control" type="text" name="email" value="<?= $userDetails[0]['email'] ?>" />
|
|
||||||
</div>
|
|
||||||
</div>
|
|
||||||
|
|
||||||
<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">
|
|
||||||
<textarea class="form-control" name="bio" rows="10"><?= $userDetails[0]['bio'] ?? '' ?></textarea>
|
|
||||||
</div>
|
|
||||||
</div>
|
|
||||||
|
|
||||||
<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">
|
|
||||||
<input class="form-control" type="text" name="rights" value="<?= $userDetails[0]['rights'] ?? '' ?>" />
|
|
||||||
</div>
|
|
||||||
</div>
|
|
||||||
|
|
||||||
</div>
|
</div>
|
||||||
|
</form>
|
||||||
<p>
|
|
||||||
<a href="<?= $app_root ?>?page=profile" class="btn btn-primary">Cancel</a>
|
|
||||||
<a href="<?= $app_root ?>?page=profile&action=edit" class="btn btn-danger">Save</a>
|
|
||||||
</p>
|
|
||||||
|
|
||||||
</div>
|
|
||||||
|
|
||||||
</div>
|
</div>
|
||||||
</div>
|
</div>
|
||||||
<!-- /user profile -->
|
<!-- /user profile -->
|
||||||
|
|
|
@ -13,14 +13,14 @@
|
||||||
|
|
||||||
<div class="col-md-8">
|
<div class="col-md-8">
|
||||||
|
|
||||||
<div class="row mb-3">
|
<!--div class="row mb-3">
|
||||||
<div class="col-md-4 text-end">
|
<div class="col-md-4 text-end">
|
||||||
<label class="form-label"><small>username:</small></label>
|
<label class="form-label"><small>username:</small></label>
|
||||||
</div>
|
</div>
|
||||||
<div class="col-md-8 text-start bg-light">
|
<div class="col-md-8 text-start bg-light">
|
||||||
<?= $userDetails[0]['username'] ?>
|
<?= $userDetails[0]['username'] ?>
|
||||||
</div>
|
</div>
|
||||||
</div>
|
</div-->
|
||||||
|
|
||||||
<div class="row mb-3">
|
<div class="row mb-3">
|
||||||
<div class="col-md-4 text-end">
|
<div class="col-md-4 text-end">
|
||||||
|
|
Loading…
Reference in New Issue