2017-11-24 00:09:36 +01:00 
										
									 
								 
							 
							
								
							 
							
								 
							
							
								< ? php  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								/**  
						 
					
						
							
								
									
										
										
										
											2018-01-07 20:39:10 +01:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								*  Class  that  encapsulates  everything  that  can  be  done  with  a  user  
						 
					
						
							
								
									
										
										
										
											2017-11-24 00:09:36 +01:00 
										
									 
								 
							 
							
								
							 
							
								 
							
							
								*/  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								class  User  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								{  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								  private  $id ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								  private  $name ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								  private  $surname ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								  private  $username ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								  private  $email ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								  private  $rank ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								  private  $active ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
									
										
										
										
											2018-01-07 20:39:10 +01:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								  /** 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								   *  Gets  user  data  from  database  and  creates  the  class 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								   *  @ param  int  $id  user  ID 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								   */ 
							 
						 
					
						
							
								
									
										
										
										
											2017-11-24 00:09:36 +01:00 
										
									 
								 
							 
							
								
							 
							
								 
							
							
								  function  __construct ( $id ) 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								  { 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    global  $mysqli ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    $stmt  =  $mysqli -> prepare ( " SELECT * FROM users WHERE id=? " ); 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    $stmt -> bind_param ( " d " ,  $id ); 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    $stmt -> execute (); 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    $query  =  $stmt -> get_result (); 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    if  ( ! $query -> num_rows ) 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    { 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								      throw  new  Exception ( " User doesn't exist. " ); 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								      return ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    } 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    $result  =  $query -> fetch_array (); 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    $this -> id  =  $id ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    $this -> active  =  $result [ 'active' ]; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    $this -> name  =  $result [ 'name' ]; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    $this -> email  =  $result [ 'email' ]; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    $this -> surname  =  $result [ 'surname' ]; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    $this -> username  =  $result [ 'username' ]; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    $this -> rank  =  $result [ 'permission' ]; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								  } 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
									
										
										
										
											2018-01-07 20:39:10 +01:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								  /** 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								   *  Returns  username  of  this  user 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								   *  @ return  String  username 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								   */ 
							 
						 
					
						
							
								
									
										
										
										
											2017-11-24 00:09:36 +01:00 
										
									 
								 
							 
							
								
							 
							
								 
							
							
								  public  function  get_username () 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								  { 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    return  $this -> username ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								  } 
							 
						 
					
						
							
								
									
										
										
										
											2018-01-07 20:39:10 +01:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								  
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								  /** 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								   *  Returns  whether  this  user  is  active 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								   *  @ return  Boolean  user  active  status 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								   */ 
							 
						 
					
						
							
								
									
										
										
										
											2018-01-03 14:15:45 +01:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								  public  function  is_active () 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								  { 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    return  $this -> active ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								  } 
							 
						 
					
						
							
								
									
										
										
										
											2018-01-07 20:39:10 +01:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								  
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								  /** 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								   *  Returns  rank  of  this  user 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								   *  @ return  int  rank 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								   */ 
							 
						 
					
						
							
								
									
										
										
										
											2017-11-24 00:09:36 +01:00 
										
									 
								 
							 
							
								
							 
							
								 
							
							
								  public  function  get_rank () 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								  { 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    return  $this -> rank ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								  } 
							 
						 
					
						
							
								
									
										
										
										
											2018-01-07 20:39:10 +01:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								  
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								  /** 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								   *  Returns  full  name  of  this  user 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								   *  @ return  String  name  in  " Name Surname "  format 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								   */ 
							 
						 
					
						
							
								
									
										
										
										
											2017-11-24 00:09:36 +01:00 
										
									 
								 
							 
							
								
							 
							
								 
							
							
								  public  function  get_name () 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								  { 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    return  $this -> name  .  "   "  .  $this -> surname ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								  } 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
									
										
										
										
											2018-01-07 20:39:10 +01:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								  /** 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								   *  Toggles  active  status  of  this  user .  First  checks  if  the  user 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								   *  making  the  change  has  permission  to  do  that . 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								   *  @ return  void 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								   */ 
							 
						 
					
						
							
								
									
										
										
										
											2017-11-24 00:09:36 +01:00 
										
									 
								 
							 
							
								
							 
							
								 
							
							
								  public  function  toggle () 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								  { 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    global  $mysqli ,  $message ,  $user ; 
							 
						 
					
						
							
								
									
										
										
										
											2018-04-20 16:40:12 +02:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
									
										
										
										
											2017-11-24 00:09:36 +01:00 
										
									 
								 
							 
							
								
							 
							
								 
							
							
								    $id  =  $_GET [ 'id' ]; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    if  ( $this -> id != $_SESSION [ 'user' ]  &&  $user -> get_rank () <= 1  &&  ( $user -> get_rank () < $this -> rank )) 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    { 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								      $stmt  =  $mysqli -> prepare ( " UPDATE users SET active = !active WHERE id=? " ); 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								      $stmt -> bind_param ( " i " ,  $this -> id ); 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								      $stmt -> execute (); 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								      $stmt -> close (); 
							 
						 
					
						
							
								
									
										
										
										
											2018-03-10 00:07:40 +01:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								      header ( " Location:  " . WEB_URL . " /admin/?do=user&id= " . $id ); 
							 
						 
					
						
							
								
									
										
										
										
											2017-11-24 00:09:36 +01:00 
										
									 
								 
							 
							
								
							 
							
								 
							
							
								    } else { 
							 
						 
					
						
							
								
									
										
										
										
											2017-12-31 00:41:58 +01:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								      $message  =  _ ( " You don't have the permission to do that! " ); 
							 
						 
					
						
							
								
									
										
										
										
											2017-11-24 00:09:36 +01:00 
										
									 
								 
							 
							
								
							 
							
								 
							
							
								    } 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								  } 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
									
										
										
										
											2018-01-07 20:39:10 +01:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								  /** 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								   *  Processes  submitted  form  and  adds  user  unless  problem  is  encountered ,  
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								   *  calling  this  is  possible  only  for  Superadmin  ( other  ranks  cannot  add  users ) 
							 
						 
					
						
							
								
									
										
										
										
											2018-01-18 22:59:34 +01:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								   *  or  when  the  installation  script  is  being  run .  Also  checks  requirements 
							 
						 
					
						
							
								
									
										
										
										
											2018-01-07 20:39:10 +01:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								   *  for  username  and  email  being  unique  and  char  limits . 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								   *  @ return  void 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								   */ 
							 
						 
					
						
							
								
									
										
										
										
											2017-11-24 00:09:36 +01:00 
										
									 
								 
							 
							
								
							 
							
								 
							
							
								  public  static  function  add () 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								  { 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    global  $user ,  $message ,  $mysqli ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    if  ( INSTALL_OVERRIDE  ||  $user -> get_rank () == 0 ) 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    { 
							 
						 
					
						
							
								
									
										
										
										
											2018-01-12 21:35:31 +01:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								      if  ( strlen ( trim ( $_POST [ 'name' ])) == 0 )  { 
							 
						 
					
						
							
								
									
										
										
										
											2018-01-13 03:00:13 +01:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								        $messages []  =  _ ( " Name " ); 
							 
						 
					
						
							
								
									
										
										
										
											2018-01-12 21:35:31 +01:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								      } 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								      if ( strlen ( trim ( $_POST [ 'surname' ])) == 0 )  { 
							 
						 
					
						
							
								
									
										
										
										
											2018-01-13 03:00:13 +01:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								        $messages []  =  _ ( " Surname " ); 
							 
						 
					
						
							
								
									
										
										
										
											2018-01-12 21:35:31 +01:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								      } 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								      if ( strlen ( trim ( $_POST [ 'email' ])) == 0 )  { 
							 
						 
					
						
							
								
									
										
										
										
											2018-01-13 03:00:13 +01:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								        $messages []  =  _ ( " Email " ); 
							 
						 
					
						
							
								
									
										
										
										
											2018-01-12 21:35:31 +01:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								      } 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								      if ( strlen ( trim ( $_POST [ 'password' ])) == 0 )  { 
							 
						 
					
						
							
								
									
										
										
										
											2018-01-13 03:00:13 +01:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								        $messages []  =  _ ( " Password " ); 
							 
						 
					
						
							
								
									
										
										
										
											2018-01-12 21:35:31 +01:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								      } 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								      if ( ! isset ( $_POST [ 'permission' ])) 
							 
						 
					
						
							
								
									
										
										
										
											2017-11-24 00:09:36 +01:00 
										
									 
								 
							 
							
								
							 
							
								 
							
							
								      { 
							 
						 
					
						
							
								
									
										
										
										
											2018-01-13 03:00:13 +01:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								        $messages []  =  _ ( " Rank " ); 
							 
						 
					
						
							
								
									
										
										
										
											2018-01-12 21:35:31 +01:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								      } 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								      if  ( ! isset ( $messages )){ 
							 
						 
					
						
							
								
									
										
										
										
											2017-11-24 00:09:36 +01:00 
										
									 
								 
							 
							
								
							 
							
								 
							
							
								        $name  =  $_POST [ 'name' ]; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								        $surname  =  $_POST [ 'surname' ]; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								        $username  =  $_POST [ 'username' ]; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								        $email  =  $_POST [ 'email' ]; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								        $pass  =  $_POST [ 'password' ]; 
							 
						 
					
						
							
								
									
										
										
										
											2018-01-13 00:16:38 +01:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								        
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								        if  ( ! filter_var ( $email ,  FILTER_VALIDATE_EMAIL )) 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								        { 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								          $message  =  " Invalid email! " ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								          return ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								        } 
							 
						 
					
						
							
								
									
										
										
										
											2017-11-24 00:09:36 +01:00 
										
									 
								 
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								        $variables  =  array (); 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								        if  ( strlen ( $name ) > 50 ){ 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								          $variables []  =  'name: 50' ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								        } 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								        if  ( strlen ( $surname ) > 50 ){ 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								          $variables []  =  'surname: 50' ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								        } 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								        if  ( strlen ( $username ) > 50 ){ 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								          $variables []  =  'username: 50' ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								        } 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								        if  ( strlen ( $email ) > 60 ){ 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								          $variables []  =  'email: 60' ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								        } 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
									
										
										
										
											2018-01-13 00:16:38 +01:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
									
										
										
										
											2017-11-24 00:09:36 +01:00 
										
									 
								 
							 
							
								
							 
							
								 
							
							
								        if  ( ! empty ( $variables )) 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								        { 
							 
						 
					
						
							
								
									
										
										
										
											2017-12-31 00:41:58 +01:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								          $message  =  _ ( " Please mind the following character limits:  " ); 
							 
						 
					
						
							
								
									
										
										
										
											2017-11-24 00:09:36 +01:00 
										
									 
								 
							 
							
								
							 
							
								 
							
							
								          $message  .=  implode ( " ,  " ,  $variables ); 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								          return ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								        } 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								        $salt  =  uniqid ( mt_rand (),  true ); 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								        $hash  =  hash ( 'sha256' ,  $pass . $salt ); 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								        $permission  =  $_POST [ 'permission' ]; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								        
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
									
										
										
										
											2017-11-29 15:01:16 +01:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								        $stmt  =  $mysqli -> prepare ( " INSERT INTO users values (NULL, ?, ?, ?, ?, ?, ?, ?, 1) " ); 
							 
						 
					
						
							
								
									
										
										
										
											2017-11-24 00:09:36 +01:00 
										
									 
								 
							 
							
								
							 
							
								 
							
							
								        $stmt -> bind_param ( " ssssssi " ,  $email ,  $username ,  $name ,  $surname ,  $hash ,  $salt ,  $permission ); 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								        $stmt -> execute (); 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
									
										
										
										
											2017-11-29 15:16:09 +01:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								        if  ( $stmt -> affected_rows > 0 ) 
							 
						 
					
						
							
								
									
										
										
										
											2017-11-24 00:09:36 +01:00 
										
									 
								 
							 
							
								
							 
							
								 
							
							
								        { 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								          $to       =  $email ; 
							 
						 
					
						
							
								
									
										
										
										
											2017-12-31 00:41:58 +01:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								          $subject  =  _ ( 'User account created' ) . ' - ' . NAME ; 
							 
						 
					
						
							
								
									
										
										
										
											2018-01-12 21:35:31 +01:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								          $msg  =  sprintf ( _ ( " Hi %s!<br> " . " Your account has been created. You can login with your email address at <a href= \" %s \" >%s</a> with password %s - please change it as soon as possible. " ),  $name . "   " . $surname , WEB_URL . " /admin " ,  WEB_URL . " /admin " ,  $pass ); 
							 
						 
					
						
							
								
									
										
										
										
											2017-11-24 00:09:36 +01:00 
										
									 
								 
							 
							
								
							 
							
								 
							
							
								          $headers  =  " Content-Type: text/html; charset=utf-8  " . PHP_EOL ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								          $headers  .=  " MIME-Version: 1.0  " . PHP_EOL ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								          $headers  .=  " From:  " . MAILER_NAME . ' <' . MAILER_ADDRESS . '>' . PHP_EOL ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								          $headers  .=  " Reply-To:  " . MAILER_NAME . ' <' . MAILER_ADDRESS . '>' . PHP_EOL ;  
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
									
										
										
										
											2018-01-12 21:35:31 +01:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								          mail ( $to ,  $subject ,  $msg ,  $headers ); 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								          if  ( ! INSTALL_OVERRIDE )  
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								          { 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								            header ( " Location:  " . WEB_URL . " /admin/?do=settings " ); 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								          } 
							 
						 
					
						
							
								
									
										
										
										
											2017-11-24 00:09:36 +01:00 
										
									 
								 
							 
							
								
							 
							
								 
							
							
								        } 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								        else { 
							 
						 
					
						
							
								
									
										
										
										
											2017-12-31 00:41:58 +01:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								          $message  =  _ ( " Username or email already used " ); 
							 
						 
					
						
							
								
									
										
										
										
											2017-11-24 00:09:36 +01:00 
										
									 
								 
							 
							
								
							 
							
								 
							
							
								        } 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								      } 
							 
						 
					
						
							
								
									
										
										
										
											2018-01-12 21:35:31 +01:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								      else { 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								        $message  =  " Please enter  " . implode ( " ,  " ,  $messages ); 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								      } 
							 
						 
					
						
							
								
									
										
										
										
											2017-11-24 00:09:36 +01:00 
										
									 
								 
							 
							
								
							 
							
								 
							
							
								    } 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    else  { 
							 
						 
					
						
							
								
									
										
										
										
											2017-12-31 00:41:58 +01:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								      $message  =  _ ( " You don't have the permission to do that! " ); 
							 
						 
					
						
							
								
									
										
										
										
											2017-11-24 00:09:36 +01:00 
										
									 
								 
							 
							
								
							 
							
								 
							
							
								    } 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								  } 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
									
										
										
										
											2018-01-07 20:39:10 +01:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								  /** 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								   *  Processes  submitted  form  and  logs  user  in ,  unless  the  user  is  deactivated  or  wrong 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								   *  password  or  email  has  been  submitted .  The  script  doesn ' t  let  anyone  know  which 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								   *  field  was  wrong  as  it  is  not  possible  to  verify  email  address  from  outside  admin  panel , 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								   *  so  this  actually  helps  with  security  : ) 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								   *  @ return  void 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								   */ 
							 
						 
					
						
							
								
									
										
										
										
											2017-11-24 00:09:36 +01:00 
										
									 
								 
							 
							
								
							 
							
								 
							
							
								  public  static  function  login () 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								  { 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    global  $message ,  $mysqli ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    if  ( isset ( $_POST [ 'email' ])) 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    { 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								      $email  =  $_POST [ 'email' ]; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								      $pass  =  $_POST [ 'pass' ]; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								      $stmt  =  $mysqli -> prepare ( " SELECT id,password_salt as salt,active FROM users WHERE email=? " ); 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								      $stmt -> bind_param ( " s " ,  $email ); 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								      $stmt -> execute (); 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								      $query  =  $stmt -> get_result (); 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								      if  ( $query -> num_rows ) 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								      { 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								        $result  =  $query -> fetch_assoc (); 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								        $salt  =  $result [ " salt " ]; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								        $id  =   $result [ " id " ]; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								        $active  =   $result [ " active " ]; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								        if  ( ! $active ) 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								        { 
							 
						 
					
						
							
								
									
										
										
										
											2017-12-31 00:41:58 +01:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								          $message  =  _ ( " Your account has been disabled. Please contact administrator. " ); 
							 
						 
					
						
							
								
									
										
										
										
											2017-11-24 00:09:36 +01:00 
										
									 
								 
							 
							
								
							 
							
								 
							
							
								        } 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								        else 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								        { 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								          $hash  =  hash ( 'sha256' ,  $pass . $salt ); 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								          $stmt  =  $mysqli -> prepare ( " SELECT count(*) as count FROM users WHERE id=? AND password_hash=? " ); 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								          $stmt -> bind_param ( " is " ,  $id ,  $hash ); 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								          $stmt -> execute (); 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								          $query  =  $stmt -> get_result (); 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								          if  ( ! $query -> fetch_assoc ()[ 'count' ]) 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								          { 
							 
						 
					
						
							
								
									
										
										
										
											2017-12-31 00:41:58 +01:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								            $message  =  _ ( " Wrong email or password " ); 
							 
						 
					
						
							
								
									
										
										
										
											2017-11-24 00:09:36 +01:00 
										
									 
								 
							 
							
								
							 
							
								 
							
							
								          } else 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								          { 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								            if  ( isset ( $_POST [ 'remember' ]) && $_POST [ 'remember' ]) 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								            { 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								              $year  =  strtotime ( '+356 days' ,  time ()); 
							 
						 
					
						
							
								
									
										
										
										
											2018-01-13 16:51:17 +01:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								              $token  =  Token :: add ( $id ,  'remember' ,  $year ); 
							 
						 
					
						
							
								
									
										
										
										
											2017-11-24 00:09:36 +01:00 
										
									 
								 
							 
							
								
							 
							
								 
							
							
								              setcookie ( 'token' ,  $token ,  $year ,  " / " ); 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								              setcookie ( 'user' ,  $id ,  $year ,  " / " ); 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								            } 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								            $_SESSION [ 'user' ]  =  $id ; 
							 
						 
					
						
							
								
									
										
										
										
											2018-01-12 21:35:31 +01:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								            header ( " Location:  " . WEB_URL . " /admin " ); 
							 
						 
					
						
							
								
									
										
										
										
											2017-11-24 00:09:36 +01:00 
										
									 
								 
							 
							
								
							 
							
								 
							
							
								          } 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								        } 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								      } 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								      else { 
							 
						 
					
						
							
								
									
										
										
										
											2017-12-31 00:41:58 +01:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								        $message  =  _ ( " Wrong email or password " ); 
							 
						 
					
						
							
								
									
										
										
										
											2017-11-24 00:09:36 +01:00 
										
									 
								 
							 
							
								
							 
							
								 
							
							
								      } 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    } 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								  } 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
									
										
										
										
											2018-01-07 20:39:10 +01:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								  /** 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								   *  Checks  whether  token  is  valid  ( this  means  is  in  database  and  associated 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								   *  with  the  user )  and  sets  session  data  if  it  is ,  so  user  remains  logged  in . 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								   *  The  script  deletes  the  token  either  way . 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								   *  @ return  void 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								   */ 
							 
						 
					
						
							
								
									
										
										
										
											2017-11-24 00:09:36 +01:00 
										
									 
								 
							 
							
								
							 
							
								 
							
							
								  public  static  function  restore_session () 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								  { 
							 
						 
					
						
							
								
									
										
										
										
											2018-04-20 16:40:12 +02:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								    global  $message ; 
							 
						 
					
						
							
								
									
										
										
										
											2017-11-24 00:09:36 +01:00 
										
									 
								 
							 
							
								
							 
							
								 
							
							
								    $id  =  $_COOKIE [ 'user' ]; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    $token  =  $_COOKIE [ 'token' ]; 
							 
						 
					
						
							
								
									
										
										
										
											2018-04-20 16:40:12 +02:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
									
										
										
										
											2017-11-24 00:09:36 +01:00 
										
									 
								 
							 
							
								
							 
							
								 
							
							
								    if  ( Token :: validate_token ( $token ,  $id ,  " remember " )) 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    { 
							 
						 
					
						
							
								
									
										
										
										
											2018-01-03 14:15:45 +01:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								      $year  =  strtotime ( '+356 days' ,  time ()); 
							 
						 
					
						
							
								
									
										
										
										
											2017-11-24 00:09:36 +01:00 
										
									 
								 
							 
							
								
							 
							
								 
							
							
								      unset ( $_COOKIE [ 'token' ]); 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								      $_SESSION [ 'user' ]  =  $id ; 
							 
						 
					
						
							
								
									
										
										
										
											2018-04-13 22:58:06 +02:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								      $new_token  =  Token :: add ( $id ,  'remember' ,  $year ); 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								      setcookie ( 'token' ,  $new_token ,  $year ,  " / " ); 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								      setcookie ( 'user' ,  $id ,  $year ,  " / " ); 
							 
						 
					
						
							
								
									
										
										
										
											2017-11-24 00:09:36 +01:00 
										
									 
								 
							 
							
								
							 
							
								 
							
							
								    } 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    else 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    { 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								      unset ( $_COOKIE [ 'user' ]); 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								      unset ( $_COOKIE [ 'token' ]); 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								      setcookie ( 'user' ,  null ,  - 1 ,  '/' ); 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								      setcookie ( 'token' ,  null ,  - 1 ,  '/' ); 
							 
						 
					
						
							
								
									
										
										
										
											2017-12-31 00:41:58 +01:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								      $message  =  _ ( " Invalid token detected, please login again! " ); 
							 
						 
					
						
							
								
									
										
										
										
											2017-11-24 00:09:36 +01:00 
										
									 
								 
							 
							
								
							 
							
								 
							
							
								    } 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    Token :: delete ( $token ); 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								  } 
							 
						 
					
						
							
								
									
										
										
										
											2018-01-07 20:39:10 +01:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								  /** 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								   *  Renders  settings  for  this  user  so  it  can  be  displayed  in  admin  panel . 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								   *  @ return  void 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								   */ 
							 
						 
					
						
							
								
									
										
										
										
											2017-11-24 00:09:36 +01:00 
										
									 
								 
							 
							
								
							 
							
								 
							
							
								  public  function  render_user_settings () 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								  { 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    global  $permissions ,  $user ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    ?> 
 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    < div  class = " row " > 
							 
						 
					
						
							
								
									
										
										
										
											2017-12-31 00:41:58 +01:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								      < div  class = " col-md-2 col-md-offset-2 " >< img  src = " https://www.gravatar.com/avatar/<?php echo md5( strtolower( trim(  $this->email  ) ) );?> "  alt = " <?php echo _( " Profile  picture " );?> " ></ div > 
							 
						 
					
						
							
								
									
										
										
										
											2017-11-24 00:09:36 +01:00 
										
									 
								 
							 
							
								
							 
							
								 
							
							
								      < div  class = " col-md-6 " >< h3 >< ? php  echo  $this -> name . "   " . $this -> surname ; ?> </h3></div>
 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    </ div > 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    < div  class = " row " > 
							 
						 
					
						
							
								
									
										
										
										
											2017-12-31 00:41:58 +01:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								      < div  class = " col-md-2 col-md-offset-2 " >< strong >< ? php  echo  _ ( " ID " ); ?> </strong></div>
 
							 
						 
					
						
							
								
									
										
										
										
											2017-11-24 00:09:36 +01:00 
										
									 
								 
							 
							
								
							 
							
								 
							
							
								      < div  class = " col-md-6 " >< ? php  echo  $this -> id ;  ?> </div>
 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    </ div > 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    < div  class = " row " > 
							 
						 
					
						
							
								
									
										
										
										
											2017-12-31 00:41:58 +01:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								      < div  class = " col-md-2 col-md-offset-2 " >< strong >< ? php  echo  _ ( " Username " ); ?> </strong></div>
 
							 
						 
					
						
							
								
									
										
										
										
											2018-01-13 00:16:38 +01:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								      < div  class = " col-md-6 " >< ? php  echo  $this -> username . "   " ;  if  ( $this -> id != $_SESSION [ 'user' ]  &&  $user -> get_rank () <= 1  &&  ( $user -> get_rank () < $this -> rank )) 
							 
						 
					
						
							
								
									
										
										
										
											2017-11-24 00:09:36 +01:00 
										
									 
								 
							 
							
								
							 
							
								 
							
							
								      { 
							 
						 
					
						
							
								
									
										
										
										
											2018-03-10 00:07:40 +01:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								        echo  " <a href=' " . WEB_URL . " /admin/?do=user&id= " . $this -> id . " &what=toggle'> " ; 
							 
						 
					
						
							
								
									
										
										
										
											2017-11-24 00:09:36 +01:00 
										
									 
								 
							 
							
								
							 
							
								 
							
							
								        echo  " <i class='fa fa- " . ( $this -> active ? " check success " : " times danger " ) . " '></i></a> " ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								      } else { 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								        echo  " <i class='fa fa- " . ( $this -> active ? " check success " : " times danger " ) . " '></i> " ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								      } ?> </div>
 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    </ div > 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
									
										
										
										
											2018-03-10 00:07:40 +01:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								    < form  action = " <?php echo WEB_URL;?>/admin/?do=user&id=<?php echo  $this->id ; ?> "  method = " POST " > 
							 
						 
					
						
							
								
									
										
										
										
											2017-11-24 00:09:36 +01:00 
										
									 
								 
							 
							
								
							 
							
								 
							
							
								      < div  class = " row " > 
							 
						 
					
						
							
								
									
										
										
										
											2017-12-31 00:41:58 +01:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								        < div  class = " col-md-2 col-md-offset-2 " >< strong >< ? php  echo  _ ( " Role " ); ?> </strong></div>
 
							 
						 
					
						
							
								
									
										
										
										
											2017-11-24 00:09:36 +01:00 
										
									 
								 
							 
							
								
							 
							
								 
							
							
								        < div  class = " col-md-6 " >< ? php  if  ( $user -> get_rank ()  ==  0  &&  $this -> id  !=  $_SESSION [ 'user' ]){ ?>  <div class="input-group"><select class="form-control" name="permission"><?php foreach ($permissions as $key => $value) {
 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								          echo  " <option value=' $key '  " . ( $key == $this -> rank ? " selected " : " " ) . " > $value </option> " ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								        }  ?> 
 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								        </ select >< span  class = " input-group-btn " > 
							 
						 
					
						
							
								
									
										
										
										
											2017-12-31 00:41:58 +01:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								          < button  type = " submit "  class = " btn btn-primary pull-right " >< ? php  echo  _ ( " Change role " ); ?> </button>
 
							 
						 
					
						
							
								
									
										
										
										
											2017-11-24 00:09:36 +01:00 
										
									 
								 
							 
							
								
							 
							
								 
							
							
								        </ span > 
							 
						 
					
						
							
								
									
										
										
										
											2018-01-12 21:35:31 +01:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								      </ div >< ? php  } else {  echo  $permissions [ $this -> rank ];} ?> </div>
 
							 
						 
					
						
							
								
									
										
										
										
											2017-11-24 00:09:36 +01:00 
										
									 
								 
							 
							
								
							 
							
								 
							
							
								    </ div > 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								  </ form > 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								  < ? php  if ( $this -> id == $_SESSION [ 'user' ]) 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								  { ?> 
 
							 
						 
					
						
							
								
									
										
										
										
											2018-01-12 21:35:31 +01:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								    < form  action = " <?php echo WEB_URL;?>/admin/?do=user "  method = " POST " > 
							 
						 
					
						
							
								
									
										
										
										
											2017-11-24 00:09:36 +01:00 
										
									 
								 
							 
							
								
							 
							
								 
							
							
								      < div  class = " row " > 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								        < div  class = " col-md-2 col-md-offset-2 " >< strong > Email </ strong ></ div > 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								        < div  class = " col-md-6 " > 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								          < div  class = " input-group " > 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								            < input  type = " email "  class = " form-control "  name = " email "  value = " <?php echo  $this->email ; ?> " > 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								            < span  class = " input-group-btn " > 
							 
						 
					
						
							
								
									
										
										
										
											2017-12-31 00:41:58 +01:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								              < button  type = " submit "  class = " btn btn-primary pull-right " >< ? php  echo  _ ( " Change email " ); ?> </button>
 
							 
						 
					
						
							
								
									
										
										
										
											2017-11-24 00:09:36 +01:00 
										
									 
								 
							 
							
								
							 
							
								 
							
							
								            </ span > 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								          </ div > 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								        </ div > 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								      </ div > 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    </ form > 
							 
						 
					
						
							
								
									
										
										
										
											2018-01-12 21:35:31 +01:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								    < form  action = " <?php echo WEB_URL;?>/admin/?do=user "  method = " POST " > 
							 
						 
					
						
							
								
									
										
										
										
											2017-11-24 00:09:36 +01:00 
										
									 
								 
							 
							
								
							 
							
								 
							
							
								      < div  class = " row " > 
							 
						 
					
						
							
								
									
										
										
										
											2017-12-31 00:41:58 +01:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								        < div  class = " col-md-2 col-md-offset-2 " >< strong >< ? php  echo  _ ( " Password " ); ?> </strong></div>
 
							 
						 
					
						
							
								
									
										
										
										
											2017-11-24 00:09:36 +01:00 
										
									 
								 
							 
							
								
							 
							
								 
							
							
								        < div  class = " col-md-6 " > 
							 
						 
					
						
							
								
									
										
										
										
											2017-12-31 00:41:58 +01:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								          < label  for = " password " >< ? php  echo  _ ( " Old password " ); ?> </label>
 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								          < input  id = " password "  placeholder = " <?php echo _( " Old  password " );?> "  type = " password "  class = " form-control "  name = " old_password " > 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								          < label  for = " new_password " >< ? php  echo  _ ( " New password " ); ?> </label>
 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								          < input  id = " new_password "  placeholder = " <?php echo _( " New  password " );?> "  type = " password "  class = " form-control "  name = " password " > 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								          < label  for = " new_password_check " >< ? php  echo  _ ( " Repeat password " ); ?> </label>
 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								          < input  id = " new_password_check "  placeholder = " <?php echo _( " Repeat  password " );?> "  type = " password "  class = " form-control "  name = " password_repeat " > 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								          < button  type = " submit "  class = " btn btn-primary pull-right margin-top " >< ? php  echo  _ ( " Change password " ); ?> </button>
 
							 
						 
					
						
							
								
									
										
										
										
											2017-11-24 00:09:36 +01:00 
										
									 
								 
							 
							
								
							 
							
								 
							
							
								        </ div > 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								      </ div > 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    </ form > 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    < ? php 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								  } 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								  else 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								  { 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    ?> 
 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    < div  class = " row " > 
							 
						 
					
						
							
								
									
										
										
										
											2017-12-31 00:41:58 +01:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								      < div  class = " col-md-2 col-md-offset-2 " >< strong >< ? php  echo  _ ( " Email " ); ?> </strong></div>
 
							 
						 
					
						
							
								
									
										
										
										
											2017-11-24 00:09:36 +01:00 
										
									 
								 
							 
							
								
							 
							
								 
							
							
								      < div  class = " col-md-6 " > 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								        < a  href = " mailto:<?php echo  $this->email ; ?> " >< ? php  echo  $this -> email ;  ?> </a>
 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								      </ div > 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    </ div > 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    < ? php 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								  } 
							 
						 
					
						
							
								
									
										
										
										
											2018-03-10 00:07:40 +01:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								  if  ( $this -> id != $_SESSION [ 'user' ]  &&  $user -> get_rank () <= 1  &&  ( $user -> get_rank () < $this -> rank )) 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								      { ?> 
 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								  < div  class = " row " > 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								      < div  class = " col-md-2 col-md-offset-2 " ></ div > 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								      < div  class = " col-md-6 " > 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								        < ? php 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								        if  ( $this -> active ){ 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								          echo  '<a href="' . WEB_URL . '/admin/?do=user&id=' . $this -> id . '&what=toggle" class="btn btn-danger">' . _ ( " Deactivate user " ) . " </a> " ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								        } else { 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								          echo  '<a href="' . WEB_URL . '/admin/?do=user&id=' . $this -> id . '&what=toggle" class="btn btn-success">' . _ ( " Activate user " ) . " </a> " ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								        } 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								        ?> 
 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								      </ div > 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    </ div > 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    < ? php  } 
							 
						 
					
						
							
								
									
										
										
										
											2017-11-24 00:09:36 +01:00 
										
									 
								 
							 
							
								
							 
							
								 
							
							
								  } 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
									
										
										
										
											2018-01-07 20:39:10 +01:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								  /** 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								   *  Changes  user  password  and  deletes  all  remember  tokens  so  all  other  sessions  
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								   *  won ' t  stay  logged  in  without  knowing  new  pass .  Uses  token  when  reseting  password . 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								   *  @ param  String  $token 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								   *  @ return  void 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								   */ 
							 
						 
					
						
							
								
									
										
										
										
											2017-11-24 00:09:36 +01:00 
										
									 
								 
							 
							
								
							 
							
								 
							
							
								  public  function  change_password ( $token  =  false ) 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								  { 
							 
						 
					
						
							
								
									
										
										
										
											2018-04-20 16:40:12 +02:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								    global  $mysqli ,  $message ; 
							 
						 
					
						
							
								
									
										
										
										
											2017-11-24 00:09:36 +01:00 
										
									 
								 
							 
							
								
							 
							
								 
							
							
								    $time  =  time (); 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    $id  =  $this -> id ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    if  ( $_POST [ 'password' ] != $_POST [ 'password_repeat' ]) 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    { 
							 
						 
					
						
							
								
									
										
										
										
											2017-12-31 00:41:58 +01:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								      $message  =  _ ( " Passwords do not match! " ); 
							 
						 
					
						
							
								
									
										
										
										
											2017-11-24 00:09:36 +01:00 
										
									 
								 
							 
							
								
							 
							
								 
							
							
								    } else { 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								      if  ( ! $token ) 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								      { 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								        if  ( $_SESSION [ 'user' ] != $id ) 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								        { 
							 
						 
					
						
							
								
									
										
										
										
											2017-12-31 00:41:58 +01:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								          $message  =  _ ( " Cannot change password of other users! " ); 
							 
						 
					
						
							
								
									
										
										
										
											2017-11-24 00:09:36 +01:00 
										
									 
								 
							 
							
								
							 
							
								 
							
							
								        } else { 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								          $stmt  =  $mysqli -> prepare ( " SELECT password_salt as salt FROM users WHERE id=? " ); 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								          $stmt -> bind_param ( " i " ,  $id ); 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								          $stmt -> execute (); 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								          $query  =  $stmt -> get_result (); 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								          $result  =  $query -> fetch_assoc (); 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								          $salt  =  $result [ 'salt' ]; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								          $pass  =  $_POST [ 'old_password' ]; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								          $hash  =  hash ( 'sha256' ,  $pass . $salt ); 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								          $stmt  =  $mysqli -> prepare ( " SELECT count(*) as count FROM users WHERE id=? AND password_hash = ? " ); 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								          $stmt -> bind_param ( " is " ,  $id ,  $hash ); 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								          $stmt -> execute (); 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								          if  ( $stmt -> get_result () -> fetch_assoc ()[ 'count' ]) 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								          { 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								            $pass  =  $_POST [ 'password' ]; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								            $hash  =  hash ( 'sha256' ,  $pass . $salt ); 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								            $stmt  =  $mysqli -> prepare ( " UPDATE users SET password_hash = ? WHERE id=? " ); 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								            $stmt -> bind_param ( " si " ,  $hash ,  $id ); 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								            $stmt -> execute (); 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								            $stmt -> close (); 
							 
						 
					
						
							
								
									
										
										
										
											2018-01-07 20:39:10 +01:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								            $stmt  =  $mysqli -> prepare ( " DELETE FROM tokens WHERE user = ? AND data = 'remember' " ); 
							 
						 
					
						
							
								
									
										
										
										
											2018-04-20 16:40:12 +02:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								    		    $stmt -> bind_param ( " d " ,  $id ); 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    		    $stmt -> execute (); 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    		    $query  =  $stmt -> get_result (); 
							 
						 
					
						
							
								
									
										
										
										
											2017-11-24 00:09:36 +01:00 
										
									 
								 
							 
							
								
							 
							
								 
							
							
								            User :: logout (); 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								          } 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								          else { 
							 
						 
					
						
							
								
									
										
										
										
											2017-12-31 00:41:58 +01:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								            $message  =  _ ( " Wrong password! " ); 
							 
						 
					
						
							
								
									
										
										
										
											2017-11-24 00:09:36 +01:00 
										
									 
								 
							 
							
								
							 
							
								 
							
							
								          } 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								        } 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								      } else { 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								        if  ( Token :: validate_token ( $token ,  $id ,  " passwd " )) 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								        { 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								          $stmt  =  $mysqli -> prepare ( " SELECT password_salt as salt FROM users WHERE id=? " ); 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								          $stmt -> bind_param ( " i " ,  $id ); 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								          $stmt -> execute (); 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								          $query  =  $stmt -> get_result (); 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								          $result  =  $query -> fetch_assoc (); 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								          $salt  =  $result [ 'salt' ]; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								          $pass  =  $_POST [ 'password' ]; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								          $hash  =  hash ( 'sha256' ,  $pass . $salt ); 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								          $stmt  =  $mysqli -> prepare ( " UPDATE users SET password_hash = ? WHERE id=? " ); 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								          $stmt -> bind_param ( " si " ,  $hash , $id ); 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								          $stmt -> execute (); 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								          $stmt -> close (); 
							 
						 
					
						
							
								
									
										
										
										
											2018-01-07 20:39:10 +01:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								          $stmt  =  $mysqli -> prepare ( " DELETE FROM tokens WHERE user = ? AND data = 'remember' " ); 
							 
						 
					
						
							
								
									
										
										
										
											2018-04-20 16:40:12 +02:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								    		  $stmt -> bind_param ( " d " ,  $id ); 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    		  $stmt -> execute (); 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    		  $query  =  $stmt -> get_result (); 
							 
						 
					
						
							
								
									
										
										
										
											2017-11-24 00:09:36 +01:00 
										
									 
								 
							 
							
								
							 
							
								 
							
							
								        } 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								        else 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								        { 
							 
						 
					
						
							
								
									
										
										
										
											2017-12-31 00:41:58 +01:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								          $message  =  _ ( " Invalid token detected, please retry your request from start! " ); 
							 
						 
					
						
							
								
									
										
										
										
											2017-11-24 00:09:36 +01:00 
										
									 
								 
							 
							
								
							 
							
								 
							
							
								        } 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								        Token :: delete ( $token ); 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								      } 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    } 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								  } 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
									
										
										
										
											2018-01-07 20:39:10 +01:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								  /** 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								   *  Sends  email  with  link  for  password  reset ,  link  is  token  protected  and  valid  only  once . 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								   *  @ return  void 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								   */ 
							 
						 
					
						
							
								
									
										
										
										
											2017-11-24 00:09:36 +01:00 
										
									 
								 
							 
							
								
							 
							
								 
							
							
								  public  static  function  password_link () 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								  { 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    global  $mysqli ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    $email  =  $_POST [ 'email' ]; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    $stmt  =  $mysqli -> prepare ( " SELECT id FROM users WHERE email=? " ); 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    $stmt -> bind_param ( " s " ,  $email ); 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    $stmt -> execute (); 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    $query  =  $stmt -> get_result (); 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    $id  =  $query -> fetch_assoc ()[ 'id' ];     
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    $time  =  strtotime ( '+1 day' ,  time ()); 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
									
										
										
										
											2018-01-13 16:51:17 +01:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								    $token  =  Token :: add ( $id ,  'passwd' ,  $time ); 
							 
						 
					
						
							
								
									
										
										
										
											2017-11-24 00:09:36 +01:00 
										
									 
								 
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
									
										
										
										
											2018-03-10 00:07:40 +01:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								    $link  =  WEB_URL . " /admin/?do=lost-password&id= $id &token= $token " ; 
							 
						 
					
						
							
								
									
										
										
										
											2017-11-24 00:09:36 +01:00 
										
									 
								 
							 
							
								
							 
							
								 
							
							
								    $to       =  $email ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    $user  =  new  User ( $id ); 
							 
						 
					
						
							
								
									
										
										
										
											2017-12-31 02:26:04 +01:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								    $subject  =  _ ( 'Reset password' )  .  ' - ' . NAME ; 
							 
						 
					
						
							
								
									
										
										
										
											2018-01-13 00:16:38 +01:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								    $msg  =  sprintf ( _ (  " Hi %s!<br>Below you will find link to change your password. The link is valid for 24hrs. If you didn't request this, feel free to ignore it. <br><br><a href= \" %s \" >RESET PASSWORD</a><br><br>If the link doesn't work, copy & paste it into your browser: <br>%s " ),  $user -> get_name (),  $link ,  $link ); 
							 
						 
					
						
							
								
									
										
										
										
											2017-11-24 00:09:36 +01:00 
										
									 
								 
							 
							
								
							 
							
								 
							
							
								    $headers  =  " Content-Type: text/html; charset=utf-8  " . PHP_EOL ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    $headers  .=  " MIME-Version: 1.0  " . PHP_EOL ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    $headers  .=  " From:  " . MAILER_NAME . ' <' . MAILER_ADDRESS . '>' . PHP_EOL ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    $headers  .=  " Reply-To:  " . MAILER_NAME . ' <' . MAILER_ADDRESS . '>' . PHP_EOL ;  
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    mail ( $to ,  $subject ,  $msg ,  $headers ); 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								  }  
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
									
										
										
										
											2018-01-07 20:39:10 +01:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								  /** 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								   *  Sends  email  with  link  for  email  change  confirmation  ( security  reasons ),  link  is  token  protected  and  valid  only  once . 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								   *  @ return  void 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								   */ 
							 
						 
					
						
							
								
									
										
										
										
											2017-11-24 00:09:36 +01:00 
										
									 
								 
							 
							
								
							 
							
								 
							
							
								  public  function  email_link (){ 
							 
						 
					
						
							
								
									
										
										
										
											2018-04-20 16:40:12 +02:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								    global  $user ; 
							 
						 
					
						
							
								
									
										
										
										
											2017-11-29 15:32:40 +01:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								    $email  =  $_POST [ 'email' ]; 
							 
						 
					
						
							
								
									
										
										
										
											2017-11-24 00:09:36 +01:00 
										
									 
								 
							 
							
								
							 
							
								 
							
							
								    $time  =  strtotime ( '+1 day' ,  time ()); 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    $id  =  $this -> id ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
									
										
										
										
											2018-01-13 16:51:17 +01:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								    $token  =  Token :: add ( $id ,  'email;$email' ,  $time ); 
							 
						 
					
						
							
								
									
										
										
										
											2017-11-24 00:09:36 +01:00 
										
									 
								 
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
									
										
										
										
											2018-03-10 00:07:40 +01:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								    $link  =  WEB_URL . " /admin/?do=change-email&id= $id &token= $token " ; 
							 
						 
					
						
							
								
									
										
										
										
											2017-11-24 00:09:36 +01:00 
										
									 
								 
							 
							
								
							 
							
								 
							
							
								    $to       =  $email ; 
							 
						 
					
						
							
								
									
										
										
										
											2017-12-31 00:41:58 +01:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								    $subject  =  _ ( 'Email change' ) . ' - ' . NAME ; 
							 
						 
					
						
							
								
									
										
										
										
											2018-01-13 00:16:38 +01:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								    $msg  =  sprintf ( _ (  " Hi %s!<br>Below you will find link to change your email. The link is valid for 24hrs. If you didn't request this, feel free to ignore it. <br><br><a href= \" %s \" >CHANGE EMAIL</a><br><br>If the link doesn't work, copy & paste it into your browser: <br>%s " ),  $user -> get_name (),  $link ,  $link ); 
							 
						 
					
						
							
								
									
										
										
										
											2017-11-24 00:09:36 +01:00 
										
									 
								 
							 
							
								
							 
							
								 
							
							
								    $headers  =  " Content-Type: text/html; charset=utf-8  " . PHP_EOL ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    $headers  .=  " MIME-Version: 1.0  " . PHP_EOL ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    $headers  .=  " From:  " . MAILER_NAME . ' <' . MAILER_ADDRESS . '>' . PHP_EOL ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    $headers  .=  " Reply-To:  " . MAILER_NAME . ' <' . MAILER_ADDRESS . '>' . PHP_EOL ;  
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    mail ( $to ,  $subject ,  $msg ,  $headers ); 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								  } 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
									
										
										
										
											2018-01-07 20:39:10 +01:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								  /** 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								   *  Changes  email . 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								   *  @ return  void 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								   */ 
							 
						 
					
						
							
								
									
										
										
										
											2017-11-24 00:09:36 +01:00 
										
									 
								 
							 
							
								
							 
							
								 
							
							
								  public  function  change_email () 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								  { 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    global  $mysqli ,  $message ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    $time  =  time (); 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    $token  =  $_GET [ 'token' ]; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    $id  =  $_GET [ 'id' ]; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    if  ( Token :: validate_token ( $token ,  $id ,  " email;% " )) 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    { 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								      $data  =  explode ( " ; " ,  $result [ 'data' ]); 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								      $email  =  $data [ 1 ]; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								      $stmt  =  $mysqli -> prepare ( " UPDATE users SET email = ? WHERE id=? " ); 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								      $stmt -> bind_param ( " sd " ,  $email ,  $id ); 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								      $stmt -> execute (); 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								      $query  =  $stmt -> get_result (); 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								      Token :: delete ( $token ); 
							 
						 
					
						
							
								
									
										
										
										
											2018-01-12 21:35:31 +01:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								      header ( " Location:  " . WEB_URL . " /admin/ " ); 
							 
						 
					
						
							
								
									
										
										
										
											2017-11-24 00:09:36 +01:00 
										
									 
								 
							 
							
								
							 
							
								 
							
							
								    } 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    else 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    { 
							 
						 
					
						
							
								
									
										
										
										
											2017-12-31 00:41:58 +01:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								      $message  =  _ ( " Invalid token detected, please retry your request from start! " ); 
							 
						 
					
						
							
								
									
										
										
										
											2017-11-24 00:09:36 +01:00 
										
									 
								 
							 
							
								
							 
							
								 
							
							
								    } 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    Token :: delete ( $token ); 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								  } 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
									
										
										
										
											2018-01-07 20:39:10 +01:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								  /** 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								   *  Logs  current  user  out . 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								   *  @ return  void 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								   */ 
							 
						 
					
						
							
								
									
										
										
										
											2017-11-24 00:09:36 +01:00 
										
									 
								 
							 
							
								
							 
							
								 
							
							
								  public  static  function  logout (){ 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    global  $mysqli ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    session_unset (); 
							 
						 
					
						
							
								
									
										
										
										
											2018-01-12 21:35:31 +01:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								    if  ( isset ( $_COOKIE [ 'token' ])) 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    { 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								      $token  =  $_COOKIE [ 'token' ]; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								      $time  =  time (); 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								      Token :: delete ( $token ); 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								      unset ( $_COOKIE [ 'user' ]); 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								      unset ( $_COOKIE [ 'token' ]); 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								      setcookie ( 'user' ,  null ,  - 1 ,  '/' ); 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								      setcookie ( 'token' ,  null ,  - 1 ,  '/' ); 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    } 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    header ( " Location:  " . WEB_URL . " /admin " ); 
							 
						 
					
						
							
								
									
										
										
										
											2017-11-24 00:09:36 +01:00 
										
									 
								 
							 
							
								
							 
							
								 
							
							
								  } 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
									
										
										
										
											2018-01-07 20:39:10 +01:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								  /** 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								   *  Changes  permissions  of  current  user  -  only  super  admin  can  do  this ,  so  it  checks  permission  first . 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								   *  @ return  void 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								   */ 
							 
						 
					
						
							
								
									
										
										
										
											2017-11-24 00:09:36 +01:00 
										
									 
								 
							 
							
								
							 
							
								 
							
							
								  public  function  change_permission (){ 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    global  $mysqli ,  $message ,  $user ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    if  ( $user -> get_rank () == 0 ) 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    { 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								      $permission  =  $_POST [ 'permission' ]; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								      $id  =  $_GET [ 'id' ]; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								      $stmt  =  $mysqli -> prepare ( " UPDATE users SET permission=? WHERE id=? " ); 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								      $stmt -> bind_param ( " si " ,  $permission ,  $id ); 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								      $stmt -> execute ();   
							 
						 
					
						
							
								
									
										
										
										
											2018-03-10 00:07:40 +01:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								      header ( " Location:  " . WEB_URL . " /admin/?do=user&id= " . $id ); 
							 
						 
					
						
							
								
									
										
										
										
											2017-11-24 00:09:36 +01:00 
										
									 
								 
							 
							
								
							 
							
								 
							
							
								    } 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    else { 
							 
						 
					
						
							
								
									
										
										
										
											2017-12-31 00:41:58 +01:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								      $message  =  _ ( " You don't have permission to do that! " ); 
							 
						 
					
						
							
								
									
										
										
										
											2017-11-24 00:09:36 +01:00 
										
									 
								 
							 
							
								
							 
							
								 
							
							
								    } 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								  } 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								}