<?php

class RegistrationLimit
{
  var $db;
  var $Server;
  var $Config;
  
  function __construct($db, $Server, $Config)
  {
    $this->db = $db;
    $this->Server = $Server;
    $this->Config = $Config;
  }
  
  function Update()
  {
    $AccountOnlineCount = $this->Server->RealmOnline();
    $AccountCount = $this->Server->AccountCount();

    $this->db->select_db($this->Config['Database']['Database']);
    $DbResult = $this->db->query('SELECT * FROM `CharacterOnlineHistory` WHERE `Date` = CURDATE()');
    if($DbResult->num_rows > 0)
    {
      // Update max, min
      $this->db->query('UPDATE `CharacterOnlineHistory` SET `Max` = GREATEST(`Max`, '.$AccountOnlineCount.'), `Min` = LEAST(`Min`, '.$AccountOnlineCount.'), `AccountCount` = '.$AccountCount.' WHERE `Date` = CURDATE()');
      echo($this->db->error);
    } else 
      $this->db->query('INSERT INTO `CharacterOnlineHistory` (`Max`, `Min`, `Date`, `AccountCount`) VALUES ('.$AccountOnlineCount.', '.$AccountOnlineCount.', CURDATE(), '.$AccountCount.')');
  }
  
  function GetFreeRegistrationCount()
  {
    $AccountCount = $this->Server->AccountCount();

    $this->db->select_db($this->Config['Database']['Database']);
    $DbResult = $this->db->query('SELECT * FROM `CharacterOnlineHistory` WHERE `Date` = DATE_SUB(CURDATE(), INTERVAL 1 DAY)');
    if($DbResult->num_rows > 0)
    {
      $Yesterday = $DbResult->fetch_assoc();
    } else 
      $Yesterday = array('Max' => 0, 'AccountCount' => 0);
  
    $NextDayFreeRegistration = $this->Config['Mangos']['RequiredOnlinePlayers'] - $Yesterday['Max'];
    if($NextDayFreeRegistration < 0) $NextDayFreeRegistration = 0;
    $NextDayUsedRegistration = $AccountCount - $Yesterday['AccountCount'];
    $FreeRegistration = $NextDayFreeRegistration - $NextDayUsedRegistration;
    if($FreeRegistration < 0) $FreeRegistration = 0;
    return($FreeRegistration);
  }

  function GetPerDeyRegistrationCount()
  {
    $AccountCount = $this->Server->AccountCount();

    $this->db->select_db($this->Config['Database']['Database']);
    $DbResult = $this->db->query('SELECT * FROM `CharacterOnlineHistory` WHERE `Date` = DATE_SUB(CURDATE(), INTERVAL 1 DAY)');
    if($DbResult->num_rows > 0)
    {
      $Yesterday = $DbResult->fetch_assoc();
    } else 
      $Yesterday = array('Max' => 0, 'AccountCount' => 0);
  
    $NextDayFreeRegistration = $this->Config['Mangos']['RequiredOnlinePlayers'] - $Yesterday['Max'];
    if($NextDayFreeRegistration < 0) $NextDayFreeRegistration = 0;
    return($NextDayFreeRegistration);
  }
}

?>
