<?php

include_once(dirname(__FILE__).'/../../Base/Model.php');

class Platform extends Model
{
  var $Id;
  
  function __construct($System)
  {
    parent::__construct($System);
  } 
  
  function MemoryUsage()
  {
    $Output = array();
    exec('free -b', $Output);
    $Row = $Output[2];
    while(strpos($Row, '  ') !== false) $Row = str_replace('  ', ' ', $Row);
    $RowParts = explode(' ', $Row);
    $Row = $Output[3];
    while(strpos($Row, '  ') !== false) $Row = str_replace('  ', ' ', $Row);
    $RowParts2 = explode(' ', $Row);
    return($RowParts[2] + $RowParts2[2]);  
  }

  function MemoryTotal()
  {
    $Output = array();
    exec('free -b', $Output);    
    $Row = $Output[1];
    while(strpos($Row, '  ') !== false) $Row = str_replace('  ', ' ', $Row);
    $RowParts = explode(' ', $Row);
    return($RowParts[1]);  
  }
  
  function SystemUptime()
  {
    $File = fopen('/proc/uptime', 'r');
    $Uptime = fgets($File);
    fclose($File);
    $UptimeParts = explode(' ', $Uptime);
    return($UptimeParts[0]);
  }
  
  function State()
  {
    $State = array();
    $State['MemoryUsed'] = $this->MemoryUsage();
    $State['MemoryTotal'] = $this->MemoryTotal();
    $State['Uptime'] = $this->SystemUptime();
    $DbResult = $this->Database->query('SELECT COUNT(*) FROM `Server`');
    $DbRow = $DbResult->fetch_row();
    $State['ServerCount'] = $DbRow[0];
    $DbResult = $this->Database->query('SELECT COUNT(*) FROM `Server` WHERE `Online` = 1');
    $DbRow = $DbResult->fetch_row();
    $State['ServerOnlineCount'] = $DbRow[0];
    $DbResult = $this->Database->query('SELECT COUNT(*) FROM `User`');
    $DbRow = $DbResult->fetch_row();
    $State['UserCount'] = $DbRow[0];
    $DbResult = $this->Database->query('SELECT COUNT(*) FROM `Emulator`');
    $DbRow = $DbResult->fetch_row();
    $State['EmulatorCount'] = $DbRow[0];
    $DbResult = $this->Database->query('SELECT COUNT(*) FROM `Backup`');
    $DbRow = $DbResult->fetch_row();
    $State['BackupCount'] = $DbRow[0];
    $DbResult = $this->Database->query('SELECT COUNT(*) FROM `Task`');
    $DbRow = $DbResult->fetch_row();
    $State['TaskCount'] = $DbRow[0];
    $DbResult = $this->Database->query('SELECT COUNT(*) FROM `Database`');
    $DbRow = $DbResult->fetch_row();
    $State['DatabaseCount'] = $DbRow[0];
    $DbResult = $this->Database->query('SELECT COUNT(*) FROM `Task` WHERE `State` != 2');
    $DbRow = $DbResult->fetch_row();
    $State['TaskQueued'] = $DbRow[0];
    $State['ServerMaxCount'] = $this->Config['MaxServerCount'];
    return($State);
  }  
}
