getGroupsWithContactsNb(); $this->render('groups/default', array( 'groups' => $groups, )); } /** * Cette fonction supprime une liste de groupes * @param $csrf : Le jeton CSRF * @param int... $ids : Les id des groups à supprimer * @return void; */ public function delete($csrf) { //On vérifie que le jeton csrf est bon if (!internalTools::verifyCSRF($csrf)) { $_SESSION['errormessage'] = 'Jeton CSRF invalide !'; header('Location: ' . $this->generateUrl('groups')); return false; } //On récupère les ids comme étant tous les arguments de la fonction et on supprime le premier (csrf) $ids = func_get_args(); unset($ids[0]); //Create de l'object de base de données global $db; $db->deleteGroupsIn($ids); header('Location: ' . $this->generateUrl('groups')); return true; } /** * Cette fonction retourne la page d'ajout d'un group */ public function add() { $this->render('groups/add'); } /** * Cette fonction retourne la page d'édition des groupes * @param int... $ids : Les id des groups à modifier */ public function edit() { global $db; //On récupère les ids comme étant tous les arguments de la fonction et on supprime le premier (csrf) $ids = func_get_args(); $groups = $db->getGroupsIn($ids); $blocks = array(); //On défini la variable qui correspondra à un bloc groupe et contacts //Pour chaque groupe, on récupère les contacts liés foreach ($groups as $key => $group) { $groups[$key]['contacts'] = $db->getContactsForGroup($group['id']); } $this->render('groups/edit', array( 'groups' => $groups, )); } /** * Cette fonction insert un nouveau contact * @param $csrf : Le jeton CSRF * @param string $_POST['name'] : Le nom du groupe * @param array $_POST['contacts'] : Les id des contacts à mettre dans le du groupe */ public function create($csrf) { //On vérifie que le jeton csrf est bon if (!internalTools::verifyCSRF($csrf)) { $_SESSION['errormessage'] = 'Jeton CSRF invalide !'; header('Location: ' . $this->generateUrl('groups')); return false; } global $db; $nom = $_POST['name']; if (!$db->insertIntoTable('groups', ['name' => $nom])) { $_SESSION['errormessage'] = 'Impossible de créer ce groupe.'; header('Location: ' . $this->generateUrl('groups')); return false; } $id_group = $db->lastId(); $db->insertIntoTable('events', ['type' => 'GROUP_ADD', 'text' => 'Ajout du groupe : ' . $nom]); foreach ($_POST['contacts'] as $id_contact) { $db->insertIntoTable('groups_contacts', ['id_group' => $id_group, 'id_contact' => $id_contact]); } $_SESSION['successmessage'] = 'Le groupe a bien été créé.'; header('Location: ' . $this->generateUrl('groups')); return true; } /** * Cette fonction met à jour une liste de groupes * @param $csrf : Le jeton CSRF * @param array $_POST['groups'] : Un tableau des groups avec leur nouvelle valeurs * @return boolean; */ public function update($csrf) { //On vérifie que le jeton csrf est bon if (!internalTools::verifyCSRF($csrf)) { $_SESSION['errormessage'] = 'Jeton CSRF invalide !'; header('Location: ' . $this->generateUrl('groups')); return false; } global $db; //Pour chaque groupe reçu, on boucle en récupérant son id (la clef), et le contact le tableau du groupe (nom et liste des contacts) foreach ($_POST['groups'] as $id_group => $group) { $db->updateTableWhere('groups', $group, ['id' => $id_group]); //On met à jour le nom du groupe $db->deleteFromTableWhere('groups_contacts', ['id_group' => $id_group]); //On supprime tous les contacts de ce groupe foreach ($group['contacts'] as $id_contact) //Pour chaque contact on l'ajoute au groupe { $db->insertIntoTable('groups_contacts', ['id_group' => $id_group, 'id_contact' => $id_contact]); } } $_SESSION['successmessage'] = 'Tous les groupes ont été modifiés avec succès.'; header('Location: ' . $this->generateUrl('groups')); } /** * Cette fonction retourne la liste des groupes sous forme JSON */ public function jsonGetGroups() { global $db; echo json_encode($db->getFromTableWhere('groups')); } }