raspisms/controllers/receiveds.php

131 lines
3.3 KiB
PHP
Executable File

<?php
/**
* Page des SMS reçus
*/
class receiveds extends Controller
{
/**
* Cette fonction est appelée avant toute les autres :
* Elle vérifie que l'utilisateur est bien connecté
* @return void;
*/
public function before()
{
internalTools::verifyConnect();
}
/**
* Cette fonction est alias de showAll()
*/
public function byDefault()
{
$this->showAll();
}
/**
* Cette fonction retourne tous les SMS envoyés, sous forme d'un tableau
* @param int $page : La page à consulter. Par défaut 0
* @return void;
*/
public function showAll($page = 0)
{
//Creation de l'object de base de données
global $db;
$page = (int)($page < 0 ? $page = 0 : $page);
$limit = 25;
$offset = $limit * $page;
//Récupération des SMS envoyés triés par date, du plus récent au plus ancien, par paquets de $limit, en ignorant les $offset premiers
$receiveds = $db->getFromTableWhere('receiveds', [], 'at', true, $limit, $offset);
foreach ($receiveds as $key => $received)
{
if (!$contacts = $db->getFromTableWhere('contacts', ['number' => $received['send_by']]))
{
continue;
}
$receiveds[$key]['send_by'] = $contacts[0]['name'] . ' (' . $received['send_by'] . ')';
}
return $this->render('receiveds/showAll', array(
'receiveds' => $receiveds,
'page' => $page,
'limit' => $limit,
'nbResults' => count($receiveds),
));
}
/**
* Cette fonction retourne tous les SMS reçus aujourd'hui pour la popup
* @return json : Un tableau des sms
*/
public function popup ()
{
global $db;
$now = new DateTime();
$receiveds = $db->getReceivedsSince($now->format('Y-m-d'));
foreach ($receiveds as $key => $received)
{
if (!$contacts = $db->getFromTableWhere('contacts', ['number' => $received['send_by']]))
{
continue;
}
$receiveds[$key]['send_by'] = $contacts[0]['name'] . ' (' . $received['send_by'] . ')';
}
$nbReceiveds = count($receiveds);
if (!isset($_SESSION['popup_nb_receiveds']) || ($_SESSION['popup_nb_receiveds'] > $nbReceiveds))
{
$_SESSION['popup_nb_receiveds'] = $nbReceiveds;
}
$newlyReceiveds = array_slice($receiveds, $_SESSION['popup_nb_receiveds']);
echo json_encode($newlyReceiveds);
$_SESSION['popup_nb_receiveds'] = $nbReceiveds;
return true;
}
/**
* Cette fonction supprimer une liste de sms reçus
* @param $csrf : Le jeton CSRF
* @param int... $ids : Les id des sms à supprimer
* @return boolean;
*/
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('receiveds'));
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;
//Si on est pas admin
if (!$_SESSION['admin'])
{
$_SESSION['errormessage'] = 'Vous devez être administrateur pour effectuer cette action.';
header('Location: ' . $this->generateUrl('receiveds'));
return false;
}
$db->deleteReceivedsIn($ids);
header('Location: ' . $this->generateUrl('receiveds'));
return true;
}
}