<?PHP
// Par : Ahmed ZERZIH
//Reoleweb
//
//Cette classe gère la table page, roles_pages, pageviews
//leee fait appel à la classe views\pageHtml.php pour l'affichage Html 
namespace Classe;

use views\MessagesHtml;

class Messages
{

    private $conn;
    public $idUrl;
    public $nomUrl;
    public $comUrl;
    public $lastmod;
    public $lastvisit;
    public $N;
    private $id_url;
    private $nom_url;
    private $comment_url;
    //Funciton de construction 
    //cette fonction valide le nombre de paramettre passé en argument et redirige vers le bon constructeur
    //Si aucun parametre c'est un appel de la requete SQL donc initialise les variables. 
    //En PHP 8 plus besoin de mettre les variables dans le constructeur il crée automatiquement des variable privé 
    public function __construct()
    {
        $args = func_get_args();
        $numArgs = func_num_args();

        if ($numArgs > 0) {
            if (method_exists($this, $f = '__construct' . $numArgs)) {
                call_user_func_array([$this, $f], $args);
            }
        } else {
            $this->idUrl = $this->id_url;
            $this->nomUrl = $this->nom_url;
            $this->comUrl = $this->comment_url;
        }
    }
    //Fonction de construction de 'objet avec seulement le paramettre de connexion bd.
    public function __construct1($conn)
    {
        $this->conn = $conn;
    }
    //Fonction de construction de 'objet avec le paramettre de connexion bd et l'id de l'usager.
    public function __construct2($conn, $idUrl)
    {
        $this->conn = $conn;
        $this->idUrl = $idUrl;
    }
    //Fonction d'affichage de la liste des page du site 
    //fait appel à la fonction static PageHtml::AffichePage   

    public function afficheMessages()    
    {
        $conn = $this->conn;

        $sql = "SELECT s.*, CONCAT(u.lastname, ' ', u.firstname) AS UserName
        FROM suggestions s
        LEFT JOIN users u ON s.id_user = u.id_user; ";

        $conn->exec($sql);
        $resultMessage = $conn->data;

        MessagesHtml::AfficherMessages($resultMessage);
    }
}
