'Nastavení světa',
'Table' => 'Realm',
'SubmitText' => 'Uložit',
'Items' => array(
'Name' => array('Type' => 'String', 'Caption' => 'Název', 'Default' => 'WoW server'),
'Description' => array('Type' => 'Text', 'Caption' => 'Popis', 'Default' => ''),
'Type' => array('Type' => 'ServerType', 'Caption' => 'Typ', 'Default' => 0),
'Database' => array('Type' => 'Database', 'Caption' => 'Databáze', 'Default' => 0),
'Motd' => array('Type' => 'String', 'Caption' => 'Zpráva dne', 'Default' => 'Vítejte na free WoW serveru'),
'RealmId' => array('Type' => 'Hidden', 'Caption' => 'Id', 'Default' => 0),
'TimeCreate' => array('Type' => 'DateTime', 'Caption' => 'Datum založení', 'Default' => 'NOW()'),
'NetworkPortWorldd' => array('Type' => 'Integer', 'Caption' => 'Port realmd', 'Default' => ''),
),
);
var $ItemListFormClass = array(
'Title' => 'Světy',
'Table' => '(SELECT `Client`.`Version`, `Realm`.`Name`, `Realm`.`Id`, `Server`.`Name` AS `ServerName`, `Realm`.`NetworkPortWorldd`, Realm.Online, Realm.CharacterOnlineCount, Realm.CharacterCount FROM `Realm` JOIN `Server` ON `Server`.`Id` = `Realm`.`Server` JOIN `Database` ON `Database`.`Id` = `Realm`.`Database` JOIN `Emulator` ON `Emulator`.`Id` = `Database`.`Emulator` JOIN `Client` ON `Client`.`Id` = `Emulator`.`Client`)',
'Items' => array(
'Name' => array('Type' => 'String', 'Caption' => 'Název', 'Default' => ''),
'NetworkPortWorldd' => array('Type' => 'Integer', 'Caption' => 'Realmlist', 'Default' => ''),
'Version' => array('Type' => 'Integer', 'Caption' => 'Verze', 'Default' => 0),
'Online' => array('Type' => 'OnlineState', 'Caption' => 'Stav', 'Default' => 0),
'CharacterOnlineCount' => array('Type' => 'Integer', 'Caption' => 'Hráčů online', 'Default' => 0),
'CharacterCount' => array('Type' => 'Integer', 'Caption' => 'Postav', 0),
'ServerName' => array('Type' => 'String', 'Caption' => 'Server', 'Default' => ''),
),
);
var $CreateFormClass = array(
'Title' => 'Nový svět',
'Table' => 'Realm',
'SubmitText' => 'Vytvořit',
'Items' => array(
'Name' => array('Type' => 'String', 'Caption' => 'Název', 'Default' => 'Svět'),
'Description' => array('Type' => 'Text', 'Caption' => 'Popis', 'Default' => ''),
'Homepage' => array('Type' => 'Hyperlink', 'Caption' => 'Webové stránky', 'Default' => ''),
'Type' => array('Type' => 'ServerType', 'Caption' => 'Typ', 'Default' => 0),
'Database' => array('Type' => 'Database', 'Caption' => 'Databáze', 'Default' => 0),
'Motd' => array('Type' => 'String', 'Caption' => 'Zpráva dne', 'Default' => 'Vítejte na free WoW serveru'),
),
);
var $EditFormClass = array(
'Title' => 'Nastavení',
'Table' => 'Realm',
'SubmitText' => 'Uložit',
'Items' => array(
'Name' => array('Type' => 'String', 'Caption' => 'Název', 'Default' => 'WoW server'),
'Description' => array('Type' => 'Text', 'Caption' => 'Popis', 'Default' => ''),
'Homepage' => array('Type' => 'Hyperlink', 'Caption' => 'Webové stránky', 'Default' => ''),
'Type' => array('Type' => 'ServerType', 'Caption' => 'Typ', 'Default' => 0),
'Database' => array('Type' => 'Database', 'Caption' => 'Databáze', 'Default' => 0),
'Motd' => array('Type' => 'String', 'Caption' => 'Zpráva dne', 'Default' => 'Vítejte na free WoW serveru'),
'RealmId' => array('Type' => 'Hidden', 'Caption' => 'Id', 'Default' => 0),
//'TimeCreation' => array('Type' => 'DateTime', 'Caption' => 'Datum založení', 'Default' => 'NOW()'),
),
);
var $SettingDetailedFormClass = array(
'Title' => 'Podrobné nastavení serveru',
'Table' => '',
'Items' => array(
'RealmId' => array('Type' => 'Hidden', 'Caption' => 'Id', 'Default' => 0),
'PlayerLimit' => array('Type' => 'Integer', 'Caption' => 'Max. počet hráčů online', 'Default' => 100),
'PlayerSaveInterval' => array('Type' => 'Integer', 'Caption' => 'Perioda ukládání postav hráčů do databáze', 'Default' => 60000),
'vmap_enableLOS' => array('Type' => 'Boolean', 'Caption' => 'Povolení systému Line-of-sight', 'Default' => 0),
'UpdateUptimeInterval' => array('Type' => 'Integer', 'Caption' => 'Perioda aktualizace doby běhu světa v databázi', 'Default' => 10),
'GameType' => array('Type' => 'GameType', 'Caption' => 'Typ světa', 'Default' => 0),
'Motd' => array('Type' => 'String', 'Caption' => 'Zpráva dne zobrazovaná hráčům při přihlášení', 'Default' => 'Vítej hráči!'),
'SkipCinematics' => array('Type' => 'SkipCinematics', 'Caption' => 'Zobrazovat úvodní video', 'Default' => ''),
'StartPlayerLevel' => array('Type' => 'Integer', 'Caption' => 'Počáteční úroveň hráčů', 'Default' => 1),
'MaxPlayerLevel' => array('Type' => 'Integer', 'Caption' => 'Max. úroveň hráčů', 'Default' => 80),
'StartHeroicPlayerLevel' => array('Type' => 'Integer', 'Caption' => 'Počáteční úroveň hrdinských postav', 'Default' => 55),
'StartPlayerMoney' => array('Type' => 'Integer', 'Caption' => 'Počáteční množství peněz', 'Default' => 0),
'StartHonorPoints' => array('Type' => 'Integer', 'Caption' => 'Počáteční počet bodů cti', 'Default' => 0),
'MaxHonorPoints' => array('Type' => 'Integer', 'Caption' => 'Max. počet bodů cti', 'Default' => 75000),
'StartArenaPoints' => array('Type' => 'Integer', 'Caption' => 'Počáteční počet bodů arén', 'Default' => 0),
'MaxArenaPoints' => array('Type' => 'Integer', 'Caption' => 'Max. počet bodů arén', 'Default' => 5000),
'MaxArenaPoints' => array('Type' => 'Integer', 'Caption' => 'Max. počet bodů arén', 'Default' => 5000),
'InstantLogout' => array('Type' => 'SecurityLevel', 'Caption' => 'Povolit okamžitého odhlášení', 'Default' => 1),
'DisableWaterBreath' => array('Type' => 'SecurityLevel', 'Caption' => 'Zakázat dýchání pod vodou', 'Default' => 1),
'AllFlightPaths' => array('Type' => 'Boolean', 'Caption' => 'Povoleny všechny létací cesty', 'Default' => 0),
'AlwaysMaxSkillForLevel' => array('Type' => 'Boolean', 'Caption' => 'Vždy max. dovednost na úroveň', 'Default' => 0),
'ActivateWeather' => array('Type' => 'Boolean', 'Caption' => 'Aktivní počasí', 'Default' => 1),
'CastUnstuck' => array('Type' => 'Boolean', 'Caption' => 'Povolit odblokovací kouzlo pomocí .start', 'Default' => 1),
'MinPetitionSigns' => array('Type' => 'Integer', 'Caption' => 'Min. počet podpisů k zápisu spolku', 'Default' => 9),
'MaxGroupXPDistance' => array('Type' => 'Integer', 'Caption' => 'Max. rozdíl XP ve skupině', 'Default' => 74),
'MailDeliveryDelay' => array('Type' => 'Integer', 'Caption' => 'Zpoždění doručení pošty', 'Default' => 3600),
'Event_Announce' => array('Type' => 'Boolean', 'Caption' => 'Ohlašování událostí', 'Default' => 0),
'AllowTwoSide_Accounts' => array('Type' => 'Boolean', 'Caption' => 'Povolit účty s postavami obou stran', 'Default' => 0),
'AllowTwoSide_Interaction_Chat' => array('Type' => 'Boolean', 'Caption' => 'Povolit komunikaci mezi stranami', 'Default' => 0),
'AllowTwoSide_Interaction_Channel' => array('Type' => 'Boolean', 'Caption' => 'Povolit kanály mezi stranami', 'Default' => 0),
'AllowTwoSide_WhoList' => array('Type' => 'Boolean', 'Caption' => 'Povolit obě strany v seznamu přítomných', 'Default' => 0),
'Rate_XP_Kill' => array('Type' => 'Integer', 'Caption' => 'Násobek získaných zkušeností za zabití', 'Default' => 1),
'Rate_XP_Quest' => array('Type' => 'Integer', 'Caption' => 'Násobek získaných zkušeností za dokončení výpravy', 'Default' => 1),
'Rate_XP_Explore' => array('Type' => 'Integer', 'Caption' => 'Násobek získaných zkušeností za objevení oblasti', 'Default' => 1),
'Ra_Enable' => array('Type' => 'Boolean', 'Caption' => 'Povolení vzdálená konzoly.', 'Default' => 0),
),
);
function ItemList()
{
if(array_key_exists('Id', $_GET)) $ServerId = $_GET['Id'];
$Realm = new Realm($this->System, 0);
//$Realm->UpdateServerList();
$Output = '
Seznam světů
';
$Table = new Table($this->ItemListFormClass, $this->System);
//$Table->OnRow = array($this, 'ShowRealmListOnRow');
$Table->Definition['Table'] = substr($Table->Definition['Table'], 0, -1).' WHERE `Realm`.`Server`='.$ServerId.')';
$Table->Definition['Items']['Id'] = array('Type' => 'Hidden', 'Caption' => '', 'Default' => '');
$Table->LoadValuesFromDatabase($this->Database);
$Table->Definition['Items']['Actions'] = array('Type' => 'String', 'Caption' => '', 'Default' => '');
foreach($Table->Values as $Index => $Item)
{
$Table->Values[$Index]['Actions'] = 'Podrobnosti';
unset($Table->Values[$Index]['Id']);
}
$Output .= $Table->Show();
if($this->System->Modules['Permission']->Check('Realm', 'Add'))
{
$DbResult = $this->Database->query('SELECT COUNT(*) FROM Realm');
$DbRow = $DbResult->fetch_row();
$RealmCount = $DbRow[0];
//$DbResult = $this->Database->query('SELECT COUNT(*) FROM Realm WHERE Server='.$this->System->Modules['User']->User['Id']);
//$DbRow = $DbResult->fetch_row();
if(($RealmCount < $this->Config['MaxRealmPerServerCount']))
$Output .= '
Vytvořit nový svět';
}
return($Output);
}
function Item()
{
$Id = $_GET['Id'];
$Realm = new Realm($this->System, $Id);
//if(isset($Server->Server))
//{
$Output = '
Podrobnosti světa
';
$Form = new Form($this->System, $this->ItemFormClass);
$Form->LoadValuesFromDatabase($Id);
$Form->Definition['Items']['Uptime'] = array('Type' => 'String', 'Caption' => 'Doba běhu', 'Default' => '');
$Form->Definition['Items']['UsedMemory'] = array('Type' => 'String', 'Caption' => 'Použitá paměť', 'Default' => '');
$RealmStatus = $Realm->GetState();
unset($Form->Definition['Items']['NetworkPortWorldd']);
$Form->Values['Uptime'] = $this->System->AddPrefixMultipliers($RealmStatus['Uptime'], '', 4, 'Time');
//$Form->Values['UsedMemory'] = $this->System->AddPrefixMultipliers($RealmStatus['UsedMemory'] * 1024, 'B', 4, 'Binary');
$Output .= $Form->ShowTable();
$Output .= '
';
return($Output);
}
function Add()
{
if(array_key_exists('Id', $_GET))
{
$ServerId = $_GET['Id'];
$Output = '';
if($this->System->Modules['Permission']->Check('Realm', 'Add'))
{
$DbResult = $this->Database->query('SELECT COUNT(*) FROM Realm');
$DbRow = $DbResult->fetch_row();
$RealmCount = $DbRow[0];
if($RealmCount < $this->Config['MaxRealmCount'])
{
if($this->System->Modules['User']->RealmCount() >= $this->Config['MaxServerCountPerUser'])
$Output .= $this->System->SystemMessage('Nový svět', 'Na jeden účet lze vytvořit maximálně '.
$this->Config['MaxServerCountPerUser'].' světů');
else
{
$Form = new Form($this->System, $this->CreateFormClass);
$Form->LoadValuesFromForm();
$Form->OnSubmit = '?Module=Realm&Action=Create&Id='.$ServerId;
$Output .= 'Tento formulář vám umožní si vytvořit nový svět. Pečlivě vyplňte požadované údaje.';
$Output .= $Form->ShowEditForm();
}
} else $Output .= $this->System->SystemMessage('Nový svět', 'Nelze vytvářet další světyservery');
} else $Output .= USER_BAD_ROLE;
} else $Output = $this->System->SystemMessage('Vytvoření světa', 'Nezadáno Id serveru');
return($Output);
}
function Create()
{
if(array_key_exists('Id', $_GET))
{
$ServerId = $_GET['Id'];
if($this->System->Modules['Permission']->Check('Realm', 'Add'))
{
if($this->System->Modules['User']->RealmCount() >= $this->Config['MaxServerCountPerUser'])
$Output = $this->System->SystemMessage('Nový svět', 'Na jeden účet lze vytvořit maximálně '.
$this->Config['MaxServerCountPerUser'].' světů');
else
{
// Allocate unused network port for realm
$DbResult = $this->Database->query('SELECT MAX(NetworkPortWorldd) FROM Realm');
$DbRow = $DbResult->fetch_row();
$NewPortWorldd = $DbRow[0] + 1;
if($NewPortWorldd < $this->Config['BaseNetworkPortWorldd']) $NewPortWorldd = $this->Config['BaseNetworkPortWorldd'];
$Form = new Form($this->System, $this->CreateFormClass, array());
$Form->LoadValuesFromForm();
$this->Database->insert('Realm', array('Name' => $Form->Values['Name'], 'Description' => $Form->Values['Description'], 'Server' => $ServerId, 'Motd' => $Form->Values['Motd'], 'Homepage' => $Form->Values['Homepage'], 'Type' => $Form->Values['Type'], 'Database' => $Form->Values['Database'], 'NetworkPortWorldd' => $NewPortWorldd, 'Lock' => 1, 'TimeCreate' => 'NOW()'));
$LastInsertId = $this->Database->insert_id;
$Realm = new Realm($this->System, $LastInsertId);
$Realm->CreateDatabase();
$Output = $this->System->SystemMessage('Vytvoření světu', $Realm->ImportDatabase(true));
$TaskView = new TaskView($this->System);
$Output .= $TaskView->ItemList();
//$UserOptions->LoadValuesFromDatabase($this->System->Modules['User']->User['Id']);
//$Form->OnSubmit = '?Action=ServerCreate';
//$Output .= $Form->ShowEditForm();
}
} else $Output = USER_BAD_ROLE;
} else $Output = $this->System->SystemMessage('Vytvoření světa', 'Nezadáno Id serveru');
return($Output);
}
function Save()
{
$Output = '';
$Realm = new Realm($this->System, $_POST['RealmId']);
if($this->System->Modules['Permission']->Check('Realm', 'Save', $Realm->Id))
{
$Form = new Form($this->System, $this->EditFormClass, array());
$Form->LoadValuesFromForm();
$RealmId = $_POST['RealmId'];
unset($Form->Values['RealmId']);
$Output .= $this->System->SystemMessage('Upravit svět', 'Nastavení světa uloženo.');
$Form->SaveValuesToDatabase($_POST['RealmId']);
$Form->OnSubmit = '?Module=Realm&Action=Save';
$Realm = new Realm($this->System, $_POST['RealmId']);
$Realm->SaveConfiguration();
$Form->Values['RealmId'] = $RealmId;
$Output .= $Form->ShowEditForm();
} else $Output = $this->System->SystemMessage('Nastavení serveru', 'Nemáte oprávnění');
return($Output);
}
function Edit()
{
$Output = '';
$Realm = new Realm($this->System, $_GET['Id']);
if($this->System->Modules['Permission']->Check('Realm', 'Edit', $Realm->Id))
{
$Form = new Form($this->System, $this->EditFormClass);
$Form->LoadValuesFromDatabase($_GET['Id']);
$Form->Values['RealmId'] = $_GET['Id'];
$Form->OnSubmit = '?Module=Realm&Action=Save';
$Output .= $Form->ShowEditForm();
} else $Output = $this->System->SystemMessage('Nastavení světa', 'Nemáte oprávnění');
return($Output);
}
function EditDetailed()
{
$Output = '';
$Realm = new Realm($this->System, $_GET['Id']);
if($this->System->Modules['Permission']->Check('Realm', 'EditDetailed', $Realm->Id))
{
$Form = new Form($this->System, $this->SettingDetailedFormClass);
$EmulatorConfig = new MangosConfigurationFile($this->System);
$EmulatorConfig->Load('../realm/'.$Realm->Id.'/etc/mangosd.conf');
$Form->Values = array();
foreach($EmulatorConfig->ParameterList as $Index => $Item)
$Form->Values[str_replace('.', '_', $Index)] = $Item;
$Form->Values['RealmId'] = $_GET['Id'];
$Form->OnSubmit = '?Module=Realm&Action=SaveDetailed';
$Output .= $Form->ShowEditForm();
} else $this->System->SystemMessage('Nastavení světa', 'Nemáte oprávnění');
return($Output);
}
function SaveDetailed()
{
$Output = '';
$Realm = new Realm($this->System, $_POST['RealmId']);
if($this->System->Modules['Permission']->Check('Realm', 'SaveDetailed', $Realm->Id))
{
$Form = new Form($this->System, $this->SettingDetailedFormClass, array());
$Form->LoadValuesFromForm();
$EmulatorConfig = new MangosConfigurationFile($this->System);
$EmulatorConfig->Load('../realm/'.$Realm->Id.'/etc/mangosd.conf');
foreach($Form->Definition['Items'] as $Index => $Item)
{
if(!array_key_exists($Index, $Form->Values))
$Form->Values[$Index] = 0;
$EmulatorConfig->ParameterList[str_replace('_', '.', $Index)] = $Form->Values[$Index];
}
$EmulatorConfig->Save('../realm/'.$Realm->Id.'/etc/mangosd.conf');
$RealmId = $_POST['RealmId'];
unset($Form->Values['RealmId']);
$Output .= $this->System->SystemMessage('Upravit svět', 'Nastavení světa uloženo.');
//$Form->SaveValuesToDatabase($_POST['ServerId']);
$Form->OnSubmit = '?Module=Realm&Action=SaveDetailed';
$Realm = new Realm($this->System, $_POST['RealmId']);
$Realm->SaveConfiguration();
$Form->Values['RealmId'] = $RealmId;
$Output .= $Form->ShowEditForm();
} else $this->System->SystemMessage('Nastavení světa', 'Nemáte oprávnění');
return($Output);
}
function Start()
{
$Output = '';
$Realm = new Realm($this->System, $_GET['Id']);
if($this->System->Modules['Permission']->Check('Realm', 'Start', $Realm->Id))
{
$Output .= $this->System->SystemMessage('Spuštění serveru', $Realm->Start());
$TaskView = new TaskView($this->System);
$Output .= $TaskView->ItemList();;
} else $this->System->Modules['Permission']->AccessDenied();
return($Output);
}
function Stop()
{
$Output = '';
$Realm = new Realm($this->System, $_GET['Id']);
if($this->System->Modules['Permission']->Check('Realm', 'Stop', $Realm->Id))
{
$Output .= $this->System->SystemMessage('Zastavení serveru', $Realm->Stop());
$TaskView = new TaskView($this->System);
$Output .= $TaskView->ItemList();;
} else $this->System->Modules['Permission']->AccessDenied();
return($Output);
}
function InitDatabase()
{
if(array_key_exists('Id', $_GET))
{
$RealmId = $_GET['Id'];
$Realm = new Realm($this->System, $RealmId);
if($this->System->Modules['Permission']->Check('Realm', 'InitDatabase', $Realm->Id))
{
$Output = $this->System->SystemMessage('Vynulování databáze', $Realm->ImportDatabase(true));
$TaskView = new TaskView($this->System);
$Output .= $TaskView->ItemList();
//$UserOptions->LoadValuesFromDatabase($this->System->Modules['User']->User['Id']);
//$Form->OnSubmit = '?Action=ServerCreate';
//$Output .= $Form->ShowEditForm();
} else $this->System->Modules['Permission']->AccessDenied();
} else $Output = $this->System->SystemMessage('Vynulování databáze', 'Nezadáno Id serveru');
return($Output);
}
}