Skip to content
Snippets Groups Projects
Commit a2bc717f authored by Sofiane Lasri's avatar Sofiane Lasri
Browse files

14H53 - Système d'invitation

parent af35f786
Branches
Tags
No related merge requests found
......@@ -614,13 +614,13 @@ header .menu-item{
}
.loadingBack {
animation-duration: 0.75s;
animation-duration: 6s;
animation-fill-mode: forwards;
animation-iteration-count: infinite;
animation-name: placeHolderShimmer;
animation-timing-function: linear;
background: #e6e6e6;
background: linear-gradient(to right, #e6e6e6 10%, #dadada 18%, #e6e6e6 33%);
background: linear-gradient(to right, #e6e6e6 0%, #dadada 25%, #dadada 75%, #e6e6e6 100%);
position: relative;
}
......@@ -764,18 +764,18 @@ header .menu-item{
justify-content: center;
}
.userList .userCard{
.userCard{
width: 100%;
margin: 5px 0 5px 0;
border-radius: 5px;
padding: .5em;
}
.userList .userCard:hover{
.userCard:hover{
background-color: #dadada;
}
.userList .userCard .userProfilPic{
.userCard .userProfilPic{
height: 56px;
width: 56px;
background-size: cover;
......@@ -788,3 +788,16 @@ header .menu-item{
margin: 5px;
}
}
.warningBlink{
animation:warningBlinkText 2.4s infinite !important;
}
@keyframes warningBlinkText{
0%{ color: #FFC107; }
22.5%{ color: transparent; }
27.5%{ color: transparent; }
50%{ color: #DC3545; }
72.5%{ color: transparent; }
77.5%{ color: transparent; }
100%{ color: #FFC107; }
}
\ No newline at end of file
<form id="form" method="post">
<?php if(verifyUserPermission($_SESSION['user_id'], "vbcms", 'updatePanel')){ ?>
<h5 class="mt-2">Paramètres de mises à jour</h5>
<div class="row">
<div class="col-sm">
<div class="form-group">
<label>Canal de mise à jour</label>
<select class="form-control" name="updateCanal">
<?php
$updateCanals = ["release", "nightly", "dev"];
foreach($updateCanals as $updateCanal){
if($updateCanal == $curentUpdateCanal) $selected = 'selected';
else $selected = '';
echo '<option value="'.$updateCanal.'" '.$selected.'>'.$updateCanal.'</option>';
}
?>
</select>
</div>
</div>
<div class="col-sm">
<div class="form-check">
<input class="form-check-input" type="checkbox" value="" name="autoUpdatesSearch" <?=$autoUpdatesSearch?>>
<label class="form-check-label">Recherche de mises à jour automatiques</label>
</div>
<div class="form-check">
<input class="form-check-input" type="checkbox" value="" name="autoUpdatesInstall" <?=$autoUpdatesInstall?>>
<label class="form-check-label">Installation automatique des mises à jour</label>
</div>
<div class="form-check">
<input class="form-check-input" type="checkbox" value="" name="autoInstallCriticalUpdates" <?=$autoInstallCriticalUpdates?>>
<label class="form-check-label text-danger" data-toggle="tooltip" data-placement="top" title="⚠️Désactiver cette option n'est pas recommandé!⚠️"><i class="fas fa-exclamation-triangle"></i> <strong>Installation automatique des mises à jour critiques</strong></label>
</div>
</div>
</div>
<?php } ?>
<?php if(verifyUserPermission($_SESSION['user_id'], "vbcms", 'editWebsiteIdentity')){ ?>
<h5>Identité de l'installation <i class="fas fa-question-circle" data-toggle="tooltip" data-placement="top" title="Nom du site, sa méta-couleur, description, etc."></i></h5>
<div class="row">
<div class="col-sm">
<div class="form-group">
<label>Nom du site internet</label>
<input required type="text" value="<?=$GLOBALS['websiteName']?>" class="form-control" name="websiteName">
</div>
<div class="form-group">
<label>Couleur globale du site</label>
<input required type="text" value="<?=$GLOBALS['websiteMetaColor']?>" name="websiteMetaColor" class="pick-a-color form-control">
</div>
</div>
<div class="col-sm">
<div class="form-group">
<label>Courte description du internet</label>
<input required type="text" class="form-control" value="<?=$GLOBALS['websiteDescription']?>" name="websiteDescription">
</div>
<div class="form-group">
<label>Icône du internet</label>
<div class="d-flex">
<input id="websiteLogo" type="text" class="form-control" value="<?=$GLOBALS['websiteLogo']?>" name="websiteLogo">
<button type="button" class="btn btn-sm btn-brown ml-2" data-toggle="modal" data-target="#websiteLogoPicker"><i class="fas fa-image"></i></button>
</div>
</div>
</div>
</div>
<?php } ?>
<?php if(verifyUserPermission($_SESSION['user_id'], "vbcms", 'editOtherSettings')){ ?>
<h5>Autres paramètres</h5>
<div class="row">
<div class="col-sm">
<div class="form-group">
<label>Steam API Key</label>
<input type="text" value="<?=$steamApiKey?>" class="form-control" name="steamApiKey">
</div>
</div>
<div class="col-sm">
<div class="form-check">
<input class="form-check-input" type="checkbox" name="debugMode" <?=$debugMode?>>
<label class="form-check-label"><i class="fas fa-bug"></i> Debug mode</label>
</div>
</div>
</div>
<?php } ?>
</form>
<button type="button" class="btn btn-brown" onclick="saveChanges()">Sauvegarder</button>
</div>
<div class="admin-tips" style="position: relative !important; ">
<?php if(verifyUserPermission($_SESSION['user_id'], "vbcms", 'editWebsiteIdentity')){ ?>
<div class="tip">
<h5>Qu'est-ce que l'identité de l'installation?</h5>
<p><b>Ces paramètre permettent de donner une identité à votre site.</b> Ils permettent aux moteurs de recherches ainsi qu'aux applications de le reconnaître.<br><br>
<b>Il n'est pas primordial de les remplir si vous n'utilisez pas la fonction de site internet</b>, mais il reste préférable d'au moins renseigner le nom du serveur ainsi que son logo.</p>
</div>
<?php } ?>
<?php if(verifyUserPermission($_SESSION['user_id'], "vbcms", 'editOtherSettings')){ ?>
<div class="tip">
<h5>À quoi sert la clé Steam API?</h5>
<p>La clé API Steam permet à certains addons de communiquer avec votre serveur, mais également à certaines interractions la nécessitant.<br><br>
<b>Vous pouvez l'obtenir ici:</b> <a href="https://steamcommunity.com/dev/apikey" class="text-brown" target="_blank">Clé API Steam Web</a></p>
</div>
<?php } ?>
<?php if(verifyUserPermission($_SESSION['user_id'], "vbcms", 'updatePanel')){ ?>
<div class="tip">
<h5>Qu'est-ce que l'installation automatique de mises à jour critiques?</h5>
<p><b>VBcms dispose d'un système d'envoie de commande à distance sécurisé, permettant au serveur principal d'effectuer certaines opérations de maintenances d'extrême urgence.</b><br><br>
Cela signifie que si une faille de sécurité critique a été découvert dans le coeur du cms, VBcms sera en mesure d'automatiquement se mettre à jour dans les plus brefs délais.</p>
<p class="text-danger"><b>Il n'est pas pas recommandé de désactiver cette fonctionnalité, VBcms n'est pas encore à un stade de développement mature.</b></p>
</div>
<?php } ?>
</div>
<!-- MODAL POUR LOGO DU SITE -->
<div class="modal fade" id="websiteLogoPicker">
<div class="modal-dialog" style="max-width: 50em;">
<div class="modal-content">
<div class="modal-header bg-brown text-white">
<h5 class="modal-title"><?=translate("chooseAPicture")?></h5>
<button type="button" class="close text-white" data-dismiss="modal" aria-label="Close">
<span aria-hidden="true">&times;</span>
</button>
</div>
<div class="modal-body d-flex">
<iframe class="flex-grow-1" style="height: 25em;" src="<?=openFilemanager('admin', array('field_id' => 'websiteLogo', 'type' => 1))?>"></iframe>
</div>
</div>
</div>
</div>
\ No newline at end of file
<div class="d-flex">
<div class="flex-grow-1 d-flex flex-column">
<div class="mt-2">
<button class="btn btn-sm btn-brown" data-toggle="modal" data-target="#inviteUserModal"><i class="fas fa-envelope"></i> <?=translate('inviteUser')?></button>
<!--<a href="#" class="btn btn-outline-brown btn-sm"><i class="fas fa-user-plus"></i> <?=translate('localAccountCreation')?></a>-->
</div>
<?php
$userGroups=$bdd->query("SELECT * FROM `vbcms-userGroups` ORDER BY `groupId` ASC")->fetchAll(PDO::FETCH_ASSOC);
foreach($userGroups as $userGroup){
echo ('<div class="d-flex flex-column p-4">
<div class="text-brown border-bottom">');
$usersCount = $bdd->prepare("SELECT COUNT(*) FROM `vbcms-users` WHERE groupId = ?");
$usersCount->execute([$userGroup['groupId']]);
$usersCount=$usersCount->fetchColumn();
echo translate($userGroup['groupName'])." (".$usersCount;
if($usersCount>1) echo " ".strtolower(translate("users")).")";
else echo " ".strtolower(translate("user")).")";
echo ('</div>
<div class="d-flex flex-wrap userList">');
$users = $bdd->prepare("SELECT * FROM `vbcms-users` WHERE groupId = ?");
$users->execute([$userGroup['groupId']]);
$users=$users->fetchAll(PDO::FETCH_ASSOC);
foreach($users as $user){
$userProfilPic = file_get_contents("https://api.vbcms.net/profiles/v1/get/".$user['netId']);
if(isJson($userProfilPic)){
$userProfilPic = json_decode($userProfilPic, true);
$userProfilPic = $userProfilPic['profilePic'];
} else {
// Ici on a soit pas trouvé l'utilisateur, soit les serveurs sont down
// Du coup on va check dans localAccounts
$userProfilPic = $bdd->prepare("SELECT * FROM `vbcms-localAccounts` WHERE netIdAssoc = ?");
$userProfilPic->execute([$user['netId']]);
$userProfilPic=$userProfilPic->fetch(PDO::FETCH_ASSOC);
if(!empty($userProfilPic)){
$userProfilPic = $userProfilPic['profilePic'];
}else{
// Ici l'utilisateur n'existe pas dans la liste des comptes locaux
// Donc on va lui mettre une image placeholder
$userProfilPic = $GLOBALS['websiteUrl']."vbcms-admin/images/misc/programmer.png";
}
}
$joinedDate = new DateTime($user['localJoinedDate']);
$groupsOptions = null;
foreach($userGroups as $userGroup){
if($userGroup['groupId'] == $user['groupId']) $groupsOptions = $groupsOptions."<option value='".$userGroup['groupId']."' selected>".translate($userGroup['groupName'])."</option>";
else $groupsOptions = $groupsOptions."<option value='".$userGroup['groupId']."'>".translate($userGroup['groupName'])."</option>";
}
if($user['username'] != $_SESSION['user_username']){
echo ('<div class="userCard d-flex flex-column">
<div class="d-flex">
<div class="userProfilPic" style="background-image:url(\''.$userProfilPic.'\')"></div>
<div class="ml-2">
<h6 class="mb-n1">'.$user['username'].'</h6>
<small class="text-muted">'.translate('joinedOn').': '. $joinedDate->format('l jS F').'</small><br>
<small><a href="#" class="text-brown">'.translate("modifyUser").'</a></small>
</div>
</div>');
echo ('<div class="d-flex flex-column mt-2" id="edit-'.$user['username'].'">
<div class="form-inline">
<label>Changer de groupe</label>
<select class="form-control form-control-sm flex-grow-1 ml-2" id="newGroup">
'.$groupsOptions.'
</select>
</div>
<div class="d-flex mt-2">
<button class="btn btn-sm btn-brown">Modifier ses permissions</button>
<button class="btn btn-sm btn-danger ml-2">Expulser</button>
</div>
</div>');
}else{
echo ('<div class="userCard d-flex flex-column">
<div class="d-flex">
<div class="userProfilPic" style="background-image:url(\''.$userProfilPic.'\')"></div>
<div class="ml-2">
<h6 class="mb-n1">'.$user['username'].'</h6>
<small class="text-muted">'.translate('joinedOn').': '. $joinedDate->format('l jS F').'</small><br>
<small class="text-brown">Toi :)</small>
</div>
</div>');
}
echo ('</div>');
}
echo "</div></div>";
}
?>
<!--
<div class="d-flex flex-column p-4">
<div class="text-brown border-bottom">
Un groupe trop génial (1 utilisateur)
</div>
<div class="d-flex flex-wrap userList">
<div class="userCard d-flex">
<div class="userProfilPic" style="background-image:url('https://cdn.akamai.steamstatic.com/steamcommunity/public/images/avatars/ee/ee6f9c9ffd6bb2fd2114a378f3f03d997f79e4b9_full.jpg')"></div>
<div class="ml-2">
<h6 class="mb-n1">sofianelasri</h6>
<small class="text-muted">A rejoint le: </small><br>
<a href="#" class="text-brown"><?=translate("modifyUser")?></a>
</div>
</div>
</div>
</div>
-->
</div>
<div class="admin-tips" style="position: relative !important; ">
<div class="tip">
<h5>Gérer les utilisateurs</h5>
<p>VBcms peut être utilisé par plusieurs peronnes en même temps. Ici tu peux gérer leur compte, mais également inviter d'autres personnes.<br><strong>Fais bien attention à qui aura accès au panneau d'administration.</strong></p>
</div>
</div>
</div>
<!-- Modal pour création de compte local -->
<div class="modal fade" id="inviteUserModal">
<div class="modal-dialog">
<div class="modal-content">
<div class="modal-header bg-brown text-white">
<h5 class="modal-title"><?=translate('inviteUser')?></h5>
<button type="button" class="close text-white" data-dismiss="modal" aria-label="Close">
<span aria-hidden="true">&times;</span>
</button>
</div>
<div class="modal-body">
<p><?=translate('toInviteAnUserYouMustSpecifyHisEmailOrUsername')?></p>
<div class="form-group">
<label><?=translate('usernameEmail')?></label>
<input type="text" class="form-control" id="searchNetUser">
<div class="border rounded-bottom">
<div class="d-flex flex-column" id="netUserList">
<!--<div class="userCard d-flex align-items-center" style="cursor: pointer;">
<div class="userProfilPic loadingBack"></div>
<div class="ml-2">
<h6 class="loadingBack rounded" style="width: 10em; height: 1em;"></h6>
</div>
</div>-->
</div>
<div class="w-100 bg-brown rounded-bottom p-1">
<span class="brand-name text-white">VBcms.net</span>
</div>
</div>
</div>
</div>
<div class="modal-footer">
<button type="button" class="btn btn-outline-brown" data-dismiss="modal"><?=translate("close")?></button>
<button id="sendInvite" onclick="sendInvite()" type="button" class="btn btn-brown" disabled><?=translate("sendInvite")?></button>
</div>
</div>
</div>
</div>
<script type="text/javascript">
document.getElementById('searchNetUser').addEventListener("change", function (evt) {
checkUser();
}, false);
function checkUser() {
$("#netUserList").html('<div class="userCard d-flex align-items-center">\
<div class="userProfilPic loadingBack"></div>\
<div class="ml-2">\
<h6 class="loadingBack rounded" style="width: 10em; height: 1em;"></h6>\
</div>\
</div>');
$.get("https://api.vbcms.net/profiles/v1/search/"+encodeURIComponent(JSON.stringify($("#searchNetUser").val())), function(data, statusText, xhr) {
if(xhr.status==200){
if (!isJson(data)) {
if(typeof $("#sendInvite").attr("disabled") == 'undefined'){
$("#sendInvite").addAttr("disabled");
}
$("#netUserList").html("<div class='p-2'><i class='fas fa-exclamation-circle warningBlink'></i><span class='text-danger ml-1'><b>VBcms.net renvoie:</b></span><br><code><pre>"+data+"</pre></code></div>");
} else {
$("#netUserList").html();
var json = JSON.parse(data);
$.each( json, function( index, user ) {
$("#netUserList").append('<div class="userCard d-flex align-items-center" onclick="fillInviteUser('');">\
<div class="userProfilPic" style="background-image:url(\''+user.profilePic+'\')"></div>\
<div class="ml-2">\
<h6>'+user.username+'</h6>\
</div>\
</div>');
});
}
}else{
$("#netUserList").html("<div class='p-2'><i class='fas fa-exclamation-circle warningBlink'></i><span class='text-danger ml-1'><b>La requête vers VBcms.net renvoie le code </b></span><code>"+xhr.status+"</code></div>");
}
});
}
function fillInviteUser(username){
$('#searchNetUser').val('+user.username+');
if(typeof $("#sendInvite").attr("disabled") !== 'undefined'){
$("#sendInvite").removeAttr("disabled");
}
}
function sendInvite(){
var array = {
username: $("#searchNetUser").val(),
key: "<?=$encryptionKey?>"
};
.get("https://api.vbcms.net/profiles/v1/invite/"+encodeURIComponent(JSON.stringify(array)), function(data, statusText, xhr) {
if(xhr.status==200){
if (!isJson(data)) {
$("#netUserList").html("<div class='p-2'><i class='fas fa-exclamation-circle warningBlink'></i><span class='text-danger ml-1'><b>VBcms.net renvoie:</b></span><br><code><pre>"+data+"</pre></code></div>");
} else {
$('#inviteUserModal').modal('hide');
SnackBar({
message: "<?=translate('inviteSent')?>",
status: "success"
});
}
}else{
$("#netUserList").html("<div class='p-2'><i class='fas fa-exclamation-circle warningBlink'></i><span class='text-danger ml-1'><b>La requête vers VBcms.net renvoie le code </b></span><code>"+xhr.status+"</code></div>");
}
});
}
</script>
\ No newline at end of file
......@@ -62,241 +62,11 @@ function getSettingsHTML($params){
</div>
<?php
if((!isset($params)||empty($params)||$params=="general") && verifyUserPermission($_SESSION['user_id'], "vbcms", 'access-generalSettings')){
?>
<form id="form" method="post">
<?php if(verifyUserPermission($_SESSION['user_id'], "vbcms", 'updatePanel')){ ?>
<h5 class="mt-2">Paramètres de mises à jour</h5>
<div class="row">
<div class="col-sm">
<div class="form-group">
<label>Canal de mise à jour</label>
<select class="form-control" name="updateCanal">
<?php
$updateCanals = ["release", "nightly", "dev"];
foreach($updateCanals as $updateCanal){
if($updateCanal == $curentUpdateCanal) $selected = 'selected';
else $selected = '';
echo '<option value="'.$updateCanal.'" '.$selected.'>'.$updateCanal.'</option>';
}
?>
</select>
</div>
</div>
<div class="col-sm">
<div class="form-check">
<input class="form-check-input" type="checkbox" value="" name="autoUpdatesSearch" <?=$autoUpdatesSearch?>>
<label class="form-check-label">Recherche de mises à jour automatiques</label>
</div>
<div class="form-check">
<input class="form-check-input" type="checkbox" value="" name="autoUpdatesInstall" <?=$autoUpdatesInstall?>>
<label class="form-check-label">Installation automatique des mises à jour</label>
</div>
<div class="form-check">
<input class="form-check-input" type="checkbox" value="" name="autoInstallCriticalUpdates" <?=$autoInstallCriticalUpdates?>>
<label class="form-check-label text-danger" data-toggle="tooltip" data-placement="top" title="⚠️Désactiver cette option n'est pas recommandé!⚠️"><i class="fas fa-exclamation-triangle"></i> <strong>Installation automatique des mises à jour critiques</strong></label>
</div>
</div>
</div>
<?php } ?>
<?php if(verifyUserPermission($_SESSION['user_id'], "vbcms", 'editWebsiteIdentity')){ ?>
<h5>Identité de l'installation <i class="fas fa-question-circle" data-toggle="tooltip" data-placement="top" title="Nom du site, sa méta-couleur, description, etc."></i></h5>
<div class="row">
<div class="col-sm">
<div class="form-group">
<label>Nom du site internet</label>
<input required type="text" value="<?=$GLOBALS['websiteName']?>" class="form-control" name="websiteName">
</div>
<div class="form-group">
<label>Couleur globale du site</label>
<input required type="text" value="<?=$GLOBALS['websiteMetaColor']?>" name="websiteMetaColor" class="pick-a-color form-control">
</div>
</div>
<div class="col-sm">
<div class="form-group">
<label>Courte description du internet</label>
<input required type="text" class="form-control" value="<?=$GLOBALS['websiteDescription']?>" name="websiteDescription">
</div>
<div class="form-group">
<label>Icône du internet</label>
<div class="d-flex">
<input id="websiteLogo" type="text" class="form-control" value="<?=$GLOBALS['websiteLogo']?>" name="websiteLogo">
<button type="button" class="btn btn-sm btn-brown ml-2" data-toggle="modal" data-target="#websiteLogoPicker"><i class="fas fa-image"></i></button>
</div>
</div>
</div>
</div>
<?php } ?>
<?php if(verifyUserPermission($_SESSION['user_id'], "vbcms", 'editOtherSettings')){ ?>
<h5>Autres paramètres</h5>
<div class="row">
<div class="col-sm">
<div class="form-group">
<label>Steam API Key</label>
<input type="text" value="<?=$steamApiKey?>" class="form-control" name="steamApiKey">
</div>
</div>
<div class="col-sm">
<div class="form-check">
<input class="form-check-input" type="checkbox" name="debugMode" <?=$debugMode?>>
<label class="form-check-label"><i class="fas fa-bug"></i> Debug mode</label>
</div>
</div>
</div>
<?php } ?>
</form>
<button type="button" class="btn btn-brown" onclick="saveChanges()">Sauvegarder</button>
</div>
<div class="admin-tips" style="position: relative !important; ">
<?php if(verifyUserPermission($_SESSION['user_id'], "vbcms", 'editWebsiteIdentity')){ ?>
<div class="tip">
<h5>Qu'est-ce que l'identité de l'installation?</h5>
<p><b>Ces paramètre permettent de donner une identité à votre site.</b> Ils permettent aux moteurs de recherches ainsi qu'aux applications de le reconnaître.<br><br>
<b>Il n'est pas primordial de les remplir si vous n'utilisez pas la fonction de site internet</b>, mais il reste préférable d'au moins renseigner le nom du serveur ainsi que son logo.</p>
</div>
<?php } ?>
<?php if(verifyUserPermission($_SESSION['user_id'], "vbcms", 'editOtherSettings')){ ?>
<div class="tip">
<h5>À quoi sert la clé Steam API?</h5>
<p>La clé API Steam permet à certains addons de communiquer avec votre serveur, mais également à certaines interractions la nécessitant.<br><br>
<b>Vous pouvez l'obtenir ici:</b> <a href="https://steamcommunity.com/dev/apikey" class="text-brown" target="_blank">Clé API Steam Web</a></p>
</div>
<?php } ?>
<?php if(verifyUserPermission($_SESSION['user_id'], "vbcms", 'updatePanel')){ ?>
<div class="tip">
<h5>Qu'est-ce que l'installation automatique de mises à jour critiques?</h5>
<p><b>VBcms dispose d'un système d'envoie de commande à distance sécurisé, permettant au serveur principal d'effectuer certaines opérations de maintenances d'extrême urgence.</b><br><br>
Cela signifie que si une faille de sécurité critique a été découvert dans le coeur du cms, VBcms sera en mesure d'automatiquement se mettre à jour dans les plus brefs délais.</p>
<p class="text-danger"><b>Il n'est pas pas recommandé de désactiver cette fonctionnalité, VBcms n'est pas encore à un stade de développement mature.</b></p>
</div>
<?php } ?>
include "settings/general.php";
}elseif($params=="users" && verifyUserPermission($_SESSION['user_id'], "vbcms", 'manageUsersSettings')){
include "settings/users.php";
} ?>
</div>
<?php }elseif($params=="users" && verifyUserPermission($_SESSION['user_id'], "vbcms", 'manageUsersSettings')){ ?>
<div class="d-flex">
<div class="flex-grow-1 d-flex flex-column">
<div class="mt-2">
<a href="#" class="btn btn-brown btn-sm"><i class="fas fa-envelope"></i> Inviter un utilisateur</a>
<a href="#" class="btn btn-outline-brown btn-sm"><i class="fas fa-user-plus"></i> Créer un utilisateur local</a>
</div>
<?php
$userGroups=$bdd->query("SELECT * FROM `vbcms-userGroups` ORDER BY `groupId` ASC")->fetchAll(PDO::FETCH_ASSOC);
foreach($userGroups as $userGroup){
echo ('<div class="d-flex flex-column p-4">
<div class="text-brown border-bottom">');
$usersCount = $bdd->prepare("SELECT COUNT(*) FROM `vbcms-users` WHERE groupId = ?");
$usersCount->execute([$userGroup['groupId']]);
$usersCount=$usersCount->fetchColumn();
echo translate($userGroup['groupName'])." (".$usersCount;
if($usersCount>1) echo " ".strtolower(translate("users")).")";
else echo " ".strtolower(translate("user")).")";
echo ('</div>
<div class="d-flex flex-wrap userList">');
$users = $bdd->prepare("SELECT * FROM `vbcms-users` WHERE groupId = ?");
$users->execute([$userGroup['groupId']]);
$users=$users->fetchAll(PDO::FETCH_ASSOC);
foreach($users as $user){
$userProfilPic = file_get_contents("https://api.vbcms.net/profiles/v1/".$user['netId']);
if(isJson($userProfilPic)){
$userProfilPic = json_decode($userProfilPic, true);
$userProfilPic = $userProfilPic['profilePic'];
} else {
// Ici on a soit pas trouvé l'utilisateur, soit les serveurs sont down
// Du coup on va check dans localAccounts
$userProfilPic = $bdd->prepare("SELECT * FROM `vbcms-localAccounts` WHERE netIdAssoc = ?");
$userProfilPic->execute([$user['netId']]);
$userProfilPic=$userProfilPic->fetch(PDO::FETCH_ASSOC);
if(!empty($userProfilPic)){
$userProfilPic = $userProfilPic['profilePic'];
}else{
// Ici l'utilisateur n'existe pas dans la liste des comptes locaux
// Donc on va lui mettre une image placeholder
$userProfilPic = $GLOBALS['websiteUrl']."vbcms-admin/images/misc/programmer.png";
}
}
$joinedDate = new DateTime($user['localJoinedDate']);
echo ('<div class="userCard d-flex">
<div class="userProfilPic" style="background-image:url(\''.$userProfilPic.'\')"></div>
<div class="ml-2">
<h6 class="mb-n1">'.$user['username'].'</h6>
<small class="text-muted">'.translate('joinedOn').': '. $joinedDate->format('l jS F').'</small><br>
<small><a href="#" class="text-brown">'.translate("modifyUser").'</a></small>
</div>
</div>');
}
echo "</div></div>";
}
?>
<!--
<div class="d-flex flex-column p-4">
<div class="text-brown border-bottom">
Un groupe trop génial (1 utilisateur)
</div>
<div class="d-flex flex-wrap userList">
<div class="userCard d-flex">
<div class="userProfilPic" style="background-image:url('https://cdn.akamai.steamstatic.com/steamcommunity/public/images/avatars/ee/ee6f9c9ffd6bb2fd2114a378f3f03d997f79e4b9_full.jpg')"></div>
<div class="ml-2">
<h6 class="mb-n1">sofianelasri</h6>
<small class="text-muted">A rejoint le: </small><br>
<a href="#" class="text-brown"><?=translate("modifyUser")?></a>
</div>
</div>
</div>
</div>
-->
</div>
<div class="admin-tips" style="position: relative !important; ">
<div class="tip">
<h5>Gérer les utilisateurs</h5>
<p>VBcms peut être utilisé par plusieurs peronnes en même temps. Ici tu peux gérer leur compte, mais également inviter d'autres personnes.<br><strong>Fais bien attention à qui aura accès au panneau d'administration.</strong></p>
</div>
</div>
</div>
<?php } ?>
</div>
<?php if(verifyUserPermission($_SESSION['user_id'], "vbcms", 'editWebsiteIdentity')){ ?>
<!-- MODAL POUR LOGO DU SITE -->
<div class="modal fade" id="websiteLogoPicker">
<div class="modal-dialog" style="max-width: 50em;">
<div class="modal-content">
<div class="modal-header bg-brown text-white">
<h5 class="modal-title"><?=translate("chooseAPicture")?></h5>
<button type="button" class="close text-white" data-dismiss="modal" aria-label="Close">
<span aria-hidden="true">&times;</span>
</button>
</div>
<div class="modal-body d-flex">
<iframe class="flex-grow-1" style="height: 25em;" src="<?=openFilemanager('admin', array('field_id' => 'websiteLogo', 'type' => 1))?>"></iframe>
</div>
</div>
</div>
</div>
<?php } ?>
<script type="text/javascript">
// S'éxecute une fois la page chargée
......
......@@ -79,20 +79,6 @@ $emptyBaseModules = $bdd->query("SELECT * FROM `vbcms-baseModulesAssoc` WHERE ex
<?php include 'includes/depedencies.php';?>
</head>
<body>
<style type="text/css">
.warningBlink{
animation:warningBlinkText 2.4s infinite;
}
@keyframes warningBlinkText{
0%{ color: #FFC107; }
22.5%{ color: transparent; }
27.5%{ color: transparent; }
50%{ color: #DC3545; }
72.5%{ color: transparent; }
77.5%{ color: transparent; }
100%{ color: #FFC107; }
}
</style>
<?php
include ('includes/navbar.php');
?>
......
......@@ -45,8 +45,8 @@ $translation["user"] = "Utilisateur";
$translation["superadmins"] = "Super adminstrateurs";
$translation["admins"] = "Administrateurs";
$translation["filemanager"] = "Gestionnaire de fichiers";
$translation["sample"] = "sample";
$translation["sample"] = "sample";
$translation["usernameEmail"] = "Nom d'utilisateur / Email";
$translation["invite"] = "Inviter";
$translation["sample"] = "sample";
$translation["sample"] = "sample";
$translation["sample"] = "sample";
......@@ -84,6 +84,11 @@ $translation["clickHereToSolveThoseAssiociations"] = "Clique ici pour résoudre
$translation["fixAssoc"] = "Corriger les associations";
$translation["chooseAnExtForEachNonSatisfiedFunc"] = "Choisi une extension pour chaque fonction non associée.";
$translation["noneFieldForModuleActivation"] = "Pour désactiver l'accès au module ou si ce dernier ne gère pas une partie, tu dois mettre <code>none</code> dans le champs d'accès correspondant.<br><strong class='text-danger'>Laisser le champ vide reviendra à demander la gestion de l'index.</strong>";
$translation["localAccountCreation"] = "Créer un compte local";
$translation["inviteUser"] = "Inviter un utilisateur";
$translation["sendInvite"] = "Envoyer l'invitation";
$translation["toInviteAnUserYouMustSpecifyHisEmailOrUsername"] = "Pour inviter un utilisateur, tu dois connaitre son adresse email ou son nom d'utilisateur.";
$translation["inviteSent"] = "Invitation envoyée!";
$translation["sample"] = "sample";
$translation["sample"] = "sample";
$translation["sample"] = "sample";
......
0% Loading or .
You are about to add 0 people to the discussion. Proceed with caution.
Please register or to comment