<?php
/***************************************************************************  
 *                                 auth.php
 *                            -------------------                         
 *   begin                : Saturday, Feb 13, 2001 
 *   copyright            : (C) 2001 The phpBB Group        
 *   email                : support@phpbb.com                           
 *                                                          
 *   $Id$                                                           
 *                                                            
 * 
 ***************************************************************************/ 


/***************************************************************************  
 *                                                     
 *   This program is free software; you can redistribute it and/or modify    
 *   it under the terms of the GNU General Public License as published by   
 *   the Free Software Foundation; either version 2 of the License, or  
 *   (at your option) any later version.                      
 *                                                          
 * 
 ***************************************************************************/ 

/* Notes:
 * auth() is going to become a very complex function and can take in a LARGE number of arguments. 
 * The currently included argements should be enough to handle any situation, however, if you need access to another
 * the best option would be to create a global variable and access it that way if you can.
 * 
 * auth() returns: 
 * TRUE if the user authorized
 * FALSE if the user is not
 */
function auth($type, $db, $id = "", $user_ip = "")
{
   global $userdata;
   switch($type) 
     {
      case 'ip ban':
	$sql = "DELETE FROM ".BANLIST_TABLE." 
	        WHERE (ban_end < ". mktime(date("H"), date("i"), date("s"), date("m"), date("d"), date("Y")).") 
		AND (ban_end > 0)";
	$db->sql_query($sql);
	$sql = "SELECT ban_ip FROM ".BANLIST_TABLE;
	if($result = $db->sql_query($sql)) 
	  {
	     if($totalrows = $db->sql_numrows($result))
	       {
		  $iprow = $db->sql_fetchrowset($result);
		  for($x = 0; $x < $totalrows; $x++)
		    {
		       $ip = $iprow[$x]["ban_ip"];
		       if($ip[strlen($ip) - 1] == ".") 
			 {
			    $db_ip = explode(".", $ip);
			    $this_ip = explode(".", $user_ip);
			    
			    for($x = 0; $x < count($db_ip) - 1; $x++)
			      {
				 $my_ip .= $this_ip[$x] . ".";
			      }
			    
			    if($my_ip == $ip)
			      {
				 return(FALSE);
			      }
			 }
		       else 
			 {
			    if($ipuser == $ip)
			      {
				 return(FALSE);
			      }
			 }
		    }
		  return(TRUE);
	       }
	     else
	       {
		  return(TRUE);
	       }
	  }
	return(TRUE);
	break;
      case 'username ban':
	$sql = "DELETE FROM ".BANLIST_TABLE."
		WHERE (ban_end < ". mktime(date("H"), date("i"), date("s"), date("m"), date("d"), date("Y")).")
		AND (ban_end > 0)";
	$db->sql_query($sql);
	$sql = "SELECT ban_userid FROM ".BANLIST_TABLE." WHERE ban_userid = '$user_id'";
	if($result = $db->sql_query($sql)) 
	  {
	     if($db->sql_numrows($result))
	       {
		  return(FALSE);
	       }
	     else
	       {
		  return(TRUE);
	       }
	  }
	else
	  {
	     return(TRUE);
	  }
	break;
      case 'login':
	global $password;
	if($userdata["user_password"] != md5($password))
	  {
	     return(FALSE);
	  }
	else
	  {
	     return(TRUE);
	  }
     }
}


/*
 * The following functions are used for getting user information. They are not related directly to auth()
 */

function get_userdata_from_id($userid, $db) 
{
   $sql = "SELECT * FROM ".USERS_TABLE." WHERE user_id = $userid";
   if(!$result = $db->sql_query($sql)) 
     {
	$userdata = array("error" => "1");
	return ($userdata);
     }
   if($db->sql_numrows($result))
     {
	$myrow = $db->sql_fetchrowset($result);
	return($myrow[0]);
     }
   else
     {
	$userdata = array("error" => "1");
	return ($userdata);
     }
}

function get_userdata($username, $db) {
   $sql = "SELECT * FROM ".USERS_TABLE." WHERE username = '$username' AND user_level != ".DELETED;
   if(!$result = $db->sql_query($sql))
     {
	$userdata = array("error" => "1");
     }

   if($db->sql_numrows($result))
     {
	$myrow = $db->sql_fetchrowset($result);
	return($myrow[0]);
     }
   else
     {
	$userdata = array("error" => "1");
	return ($userdata);
     }
}

?>