<commit_before><?php

/* La class qui va gerer un membre , tout ce que peut faire un membre */

class ManagerMembre
{
	// Les constantes de la classe 

    const ERR_IS_CO =  'Vous etes deja connecter';
    const ERR_IS_NOT_CO =  'Vous devez d\'abord vous connecter ';
    const VALIDE = 1 ;
    const NON_VALIDE = 0;
    const ERR_AUTH_ADMIN = "Acces restraint aux Administrateurs ";

	protected $_db;
	protected $_errors = array();
	public $nombresErreurs = 0;

	public function __construct(PDO $db)
	{
		$this->setDb($db) ;
	}
	
	public function setDb($db)
	{
		$this->_db = $db ;
	}
 
	public function pseudoLibre($pseudo)
	{
		$req = $this->_db->prepare("SELECT COUNT(*) 
			                 AS nbr 
			                 FROM membres 
			                 WHERE pseudo = :pseudo");
		$req->bindValue(":pseudo",$pseudo,PDO::PARAM_STR);
		$req->execute();
		$nombresMembres = $req->fetchColumn();

		if($nombresMembres != 0)
		{
			$this->nombresErreurs++;
			$this->_errors["pseudo1"] = "Votre pseudo est dejas pris , nous sommes desolé ";
		}

	}

	public function pseudoValide($pseudo)
	{
		if (strlen($pseudo) < 3 || strlen($pseudo) > 15  || !preg_match('#^[a-zA-Z0-9_]+$#',$pseudo))
        {
               $this->_errors["pseudo2"] = "Votre pseudo est soit trop grand, soit trop petit, soit il ne respecte les caracteres autorisées";
               $this->nombresErreurs++;
        }

	}

	public function emailValide($email)
	{
		$query = $this->_db->prepare('SELECT COUNT(*) AS nbr FROM membres WHERE email =:mail');
        $query->bindValue(':mail',$email, PDO::PARAM_STR);
        $query->execute();
        $nombresEmails = $query->fetchColumn();

        if($nombresEmails != 0 || empty($email) || !filter_var($email,FILTER_VALIDATE_EMAIL))
        {
        	$this->nombresErreurs++;
        	$this->_errors["mail1"] = " Votre email est soit deja prise , soit ne respecte pas le format ";
        }

        
	}

    public function verifyPassword(Membre $membreAInscrire)
    {
    	$password = $<PASSWORD>();
    	$confirmPassword = $<PASSWORD>->confirmPassword();

    	if($password != $confirmPassword || empty($confirmPassword) || empty($password))
        {
            $this->_errors["password"] = "Votre mot de passe et votre confirmation diffèrent, ou sont vides";
            $this->nombresErreurs++;
        }

        else{

	  	   $pass = PASSWORD_HASH($memb<PASSWORD>->password(),PASSWORD_BCRYPT);
	       $membreAInscrire->setPassword($pass);
	       $membreAInscrire->setConfirmPassword(NULL);
        }
    }

    /*
    **@function retuourne true  si l'image est bien uploader , false si non;
    */


    public function verifAvatar($avatar)
    {
		  if (!empty($avatar['size']))
		  {
		    //On définit les variables :

		    $maxsize = 54000; //Poid de l'image
		    $maxwidth = 500; //Largeur de l'image
		    $maxheight = 500; //Longueur de l'image

		    $extensions_valides = array( 'jpg' , 'jpeg' , 'gif' , 'png', 'bmp' ); 

		    //Liste des extensions valides

		    if ($avatar['error'] > 0)
		    {
			      $this->_errors["avatar1"] = "Erreur lors du transfert de l'avatar  ";
			      $this->nombresErreurs++;
		    }

		    if ($avatar['size'] > $maxsize)
		    {
		        $this->nombresErreurs++;
		        $this->_errors["avatar2"] = 'Le fichier est trop gros :(<strong>'.$avatar['size'].' Octets</strong> contre <strong>'.$maxsize.' Octets</strong>)';
		    }

		    $image_sizes = getimagesize($avatar['tmp_name']);

		    if ($image_sizes[0] > $maxwidth OR $image_sizes[1] > $maxheight)
		    {
			      $this->nombresErreurs++;
			      $this->_errors["avatar3"] = "Image trop large ou trop longue : (<strong>".$image_sizes[0]."x".$image_sizes[1]."</strong> contre
			      <strong>".$maxwidth."x".$maxheight."</strong>)";
		    }

		    $extension_upload = strtolower(substr(strrchr($avatar['name'], '.') ,1));

		    if(!in_array($extension_upload,$extensions_valides) )
		    {
			      $this->nombresErreurs++;
			      $this->_errors["avatar4"] = "Extension de l'avatar incorrecte";
		    }

		      return TRUE;

		  }
		  else
		  	 return FALSE;
    }

    public function inscription(Membre $membreA)
    {
    	$query = $this->_db->prepare("INSERT INTO membres(pseudo,password, email, avatar, inscrit,token) 
                                      VALUES(:pseudo, :pass, :email , :nomavatar, NULL, :token)");
    	$query->execute(array("pseudo" => $membreA->pseudo(),
    		                  "pass"   => $<PASSWORD>->password(),
    		                  "email"  => $membreA->email(),
    		                  "nomavatar" => $membreA->avatar(),
    		                  "token"     => $membreA->token()));
    	$query->closeCursor();

    	$id = $this->_db->lastInsertId();
    	$token = $membreA->token();
    	
    	$membreA->setID($id);

    	$this->envoyerMail($membreA->email() , "Inscription sur le Site du Savoir","Cliquez ou copier le lien dans votre navigateur https://sitedusavoir.com/confirm.php?id=$id&token=$token");

    }

    public function envoyerMail($email,$titre,$message,$header="sitedusavoir.com")
    {
         mail($email,$titre,$message,$header);
    }

	public function errors()
	{<commit_msg>Correction sur le lien de confirmation<commit_after><?php

/* La class qui va gerer un membre , tout ce que peut faire un membre */

class ManagerMembre
{
	// Les constantes de la classe 

    const ERR_IS_CO =  'Vous etes deja connecter';
    const ERR_IS_NOT_CO =  'Vous devez d\'abord vous connecter ';
    const VALIDE = 1 ;
    const NON_VALIDE = 0;
    const ERR_AUTH_ADMIN = "Acces restraint aux Administrateurs ";

	protected $_db;
	protected $_errors = array();
	public $nombresErreurs = 0;

	public function __construct(PDO $db)
	{
		$this->setDb($db) ;
	}
	
	public function setDb($db)
	{
		$this->_db = $db ;
	}
 
	public function pseudoLibre($pseudo)
	{
		$req = $this->_db->prepare("SELECT COUNT(*) 
			                 AS nbr 
			                 FROM membres 
			                 WHERE pseudo = :pseudo");
		$req->bindValue(":pseudo",$pseudo,PDO::PARAM_STR);
		$req->execute();
		$nombresMembres = $req->fetchColumn();

		if($nombresMembres != 0)
		{
			$this->nombresErreurs++;
			$this->_errors["pseudo1"] = "Votre pseudo est dejas pris , nous sommes desolé ";
		}

	}

	public function pseudoValide($pseudo)
	{
		if (strlen($pseudo) < 3 || strlen($pseudo) > 15  || !preg_match('#^[a-zA-Z0-9_]+$#',$pseudo))
        {
               $this->_errors["pseudo2"] = "Votre pseudo est soit trop grand, soit trop petit, soit il ne respecte les caracteres autorisées";
               $this->nombresErreurs++;
        }

	}

	public function emailValide($email)
	{
		$query = $this->_db->prepare('SELECT COUNT(*) AS nbr FROM membres WHERE email =:mail');
        $query->bindValue(':mail',$email, PDO::PARAM_STR);
        $query->execute();
        $nombresEmails = $query->fetchColumn();

        if($nombresEmails != 0 || empty($email) || !filter_var($email,FILTER_VALIDATE_EMAIL))
        {
        	$this->nombresErreurs++;
        	$this->_errors["mail1"] = " Votre email est soit deja prise , soit ne respecte pas le format ";
        }

        
	}

    public function verifyPassword(Membre $membreAInscrire)
    {
    	$password = $<PASSWORD>();
    	$confirmPassword = $<PASSWORD>();

    	if($password != $confirmPassword || empty($confirmPassword) || empty($password))
        {
            $this->_errors["password"] = "Votre mot de passe et votre confirmation diffèrent, ou sont vides";
            $this->nombresErreurs++;
        }

        else{

	  	   $pass = PASSWORD_HASH($<PASSWORD>(),<PASSWORD>);
	       $membreAInscrire->setPassword($pass);
	       $membreAInscrire->setConfirmPassword(NULL);
        }
    }

    /*
    **@function retuourne true  si l'image est bien uploader , false si non;
    */


    public function verifAvatar($avatar)
    {
		  if (!empty($avatar['size']))
		  {
		    //On définit les variables :

		    $maxsize = 54000; //Poid de l'image
		    $maxwidth = 500; //Largeur de l'image
		    $maxheight = 500; //Longueur de l'image

		    $extensions_valides = array( 'jpg' , 'jpeg' , 'gif' , 'png', 'bmp' ); 

		    //Liste des extensions valides

		    if ($avatar['error'] > 0)
		    {
			      $this->_errors["avatar1"] = "Erreur lors du transfert de l'avatar  ";
			      $this->nombresErreurs++;
		    }

		    if ($avatar['size'] > $maxsize)
		    {
		        $this->nombresErreurs++;
		        $this->_errors["avatar2"] = 'Le fichier est trop gros :(<strong>'.$avatar['size'].' Octets</strong> contre <strong>'.$maxsize.' Octets</strong>)';
		    }

		    $image_sizes = getimagesize($avatar['tmp_name']);

		    if ($image_sizes[0] > $maxwidth OR $image_sizes[1] > $maxheight)
		    {
			      $this->nombresErreurs++;
			      $this->_errors["avatar3"] = "Image trop large ou trop longue : (<strong>".$image_sizes[0]."x".$image_sizes[1]."</strong> contre
			      <strong>".$maxwidth."x".$maxheight."</strong>)";
		    }

		    $extension_upload = strtolower(substr(strrchr($avatar['name'], '.') ,1));

		    if(!in_array($extension_upload,$extensions_valides) )
		    {
			      $this->nombresErreurs++;
			      $this->_errors["avatar4"] = "Extension de l'avatar incorrecte";
		    }

		      return TRUE;

		  }
		  else
		  	 return FALSE;
    }

    public function inscription(Membre $membreA)
    {
    	$query = $this->_db->prepare("INSERT INTO membres(pseudo,password, email, avatar, inscrit,token) 
                                      VALUES(:pseudo, :pass, :email , :nomavatar, NULL, :token)");
    	$query->execute(array("pseudo" => $membreA->pseudo(),
    		                  "pass"   => $<PASSWORD>(),
    		                  "email"  => $membreA->email(),
    		                  "nomavatar" => $membreA->avatar(),
    		                  "token"     => $membreA->token()));
    	$query->closeCursor();

    	$id = $this->_db->lastInsertId();
    	$token = $membreA->token();
    	
    	$membreA->setID($id);

    	$this->envoyerMail($membreA->email() , "Inscription sur le Site du Savoir","Cliquez ou copier le lien dans votre navigateur https://.'$_SERVER["SERVER_NAME"].'/confirm.php?id=$id&token=$token");

    }

    public function envoyerMail($email,$titre,$message,$header="sitedusavoir.com")
    {
         mail($email,$titre,$message,$header);
    }

	public function errors()
	{
{'fraction_non_alphanumeric': 0.161003861003861, 'fraction_numerical': 0.006563706563706564, 'mean_word_length': 2.6025730180806677, 'pattern_counts': {'":': 2, '<': 32, '<?xml version=': 0, '>': 139, 'https://': 2, 'lorem ipsum': 0, 'www.': 0, 'xml': 0}, 'pii_count': 0, 'substrings_counts': 0, 'word_list_counts': {'cursed_substrings.json': 2, 'profanity_word_list.json': 0, 'sexual_word_list.json': 0, 'zh_pornsignals.json': 0}}
{'dir': 'git-commits-cleaned', 'id': '2859016', 'n_tokens_mistral': 3793, 'n_tokens_neox': 3446, 'n_words': 701}