Ignore:
Timestamp:
Aug 4, 2009, 5:32:06 PM (15 years ago)
Author:
george
Message:
  • Opraveno: Dále posunuta funkčnost podpory více světů na server.
File:
1 edited

Legend:

Unmodified
Added
Removed
  • trunk/www/view/server.php

    r56 r57  
    33class ServerView extends Module
    44{
    5   var $ViewFormClass = array(
     5  var $ItemFormClass = array(
    66    'Title' => 'Nastavení',
    77    'Table' => 'Server',
     
    3939      'Description' => array('Type' => 'Text', 'Caption' => 'Popis', 'Default' => ''),
    4040      'Homepage' => array('Type' => 'Hyperlink', 'Caption' => 'Webové stránky', 'Default' => ''),
    41       'Type' => array('Type' => 'ServerType', 'Caption' => 'Typ', 'Default' => 0),
     41      //'Type' => array('Type' => 'ServerType', 'Caption' => 'Typ', 'Default' => 0),
    4242      'Database' => array('Type' => 'Database', 'Caption' => 'Databáze', 'Default' => 0),
    43       'Motd' => array('Type' => 'String', 'Caption' => 'Zpráva dne', 'Default' => 'Vítejte na free WoW serveru'),
     43      //'Motd' => array('Type' => 'String', 'Caption' => 'Zpráva dne', 'Default' => 'Vítejte na free WoW serveru'),
    4444    ),
    4545  );
     
    5252      'Description' => array('Type' => 'Text', 'Caption' => 'Popis', 'Default' => ''),
    5353      'Homepage' => array('Type' => 'Hyperlink', 'Caption' => 'Webové stránky', 'Default' => ''),
    54       'Type' => array('Type' => 'ServerType', 'Caption' => 'Typ', 'Default' => 0),
    55       //'Database' => array('Type' => 'Database', 'Caption' => 'Databáze', 'Default' => 0),
    56       'Motd' => array('Type' => 'String', 'Caption' => 'Zpráva dne', 'Default' => 'Vítejte na free WoW serveru'),
     54      //'Type' => array('Type' => 'ServerType', 'Caption' => 'Typ', 'Default' => 0),
     55      'Database' => array('Type' => 'Database', 'Caption' => 'Databáze', 'Default' => 0),
     56      //'Motd' => array('Type' => 'String', 'Caption' => 'Zpráva dne', 'Default' => 'Vítejte na free WoW serveru'),
    5757      'ServerId' => array('Type' => 'Hidden', 'Caption' => 'Id', 'Default' => 0),
    5858      //'TimeCreation' => array('Type' => 'DateTime', 'Caption' => 'Datum založení', 'Default' => 'NOW()'),
     
    7171    ),
    7272  ); 
    73   var $SettingDetailedFormClass = array(
    74     'Title' => 'Podrobné nastavení serveru',
    75     'Table' => '',
    76     'Items' => array(
    77       'ServerId' => array('Type' => 'Hidden', 'Caption' => 'Id', 'Default' => 0),
    78       'SkipCinematics' => array('Type' => 'SkipCinematics', 'Caption' => 'Zobrazovat úvodní video', 'Default' => ''),
    79       'StartPlayerLevel' => array('Type' => 'Integer', 'Caption' => 'Počáteční úroveň hráčů', 'Default' => 1),
    80       'MaxPlayerLevel' => array('Type' => 'Integer', 'Caption' => 'Max. úroveň hráčů', 'Default' => 80),
    81       'StartHeroicPlayerLevel' => array('Type' => 'Integer', 'Caption' => 'Počáteční úroveň hrdinských postav', 'Default' => 55),
    82       'StartPlayerMoney' => array('Type' => 'Integer', 'Caption' => 'Počáteční množství peněz', 'Default' => 0),
    83       'StartHonorPoints' => array('Type' => 'Integer', 'Caption' => 'Počáteční počet bodů cti', 'Default' => 0),
    84       'MaxHonorPoints' => array('Type' => 'Integer', 'Caption' => 'Max. počet bodů cti', 'Default' => 75000),
    85       'StartArenaPoints' => array('Type' => 'Integer', 'Caption' => 'Počáteční počet bodů arén', 'Default' => 0),
    86       'MaxArenaPoints' => array('Type' => 'Integer', 'Caption' => 'Max. počet bodů arén', 'Default' => 5000),
    87       'MaxArenaPoints' => array('Type' => 'Integer', 'Caption' => 'Max. počet bodů arén', 'Default' => 5000),
    88       'InstantLogout' => array('Type' => 'SecurityLevel', 'Caption' => 'Povolit okamžitého odhlášení', 'Default' => 1),
    89       'DisableWaterBreath' => array('Type' => 'SecurityLevel', 'Caption' => 'Zakázat dýchání pod vodou', 'Default' => 1),         
    90       'AllFlightPaths' => array('Type' => 'Boolean', 'Caption' => 'Povoleny všechny létací cesty', 'Default' => 0),         
    91       'AlwaysMaxSkillForLevel' => array('Type' => 'Boolean', 'Caption' => 'Vždy max. dovednost na úroveň', 'Default' => 0),         
    92       'ActivateWeather' => array('Type' => 'Boolean', 'Caption' => 'Aktivní počasí', 'Default' => 1),         
    93       'CastUnstuck' => array('Type' => 'Boolean', 'Caption' => 'Povolit odblokovací kouzlo pomocí .start', 'Default' => 1),         
    94       'MinPetitionSigns' => array('Type' => 'Integer', 'Caption' => 'Min. počet podpisů k zápisu spolku', 'Default' => 9),         
    95       'MaxGroupXPDistance' => array('Type' => 'Integer', 'Caption' => 'Max. rozdíl XP ve skupině', 'Default' => 74),         
    96       'MailDeliveryDelay' => array('Type' => 'Integer', 'Caption' => 'Zpoždění doručení pošty', 'Default' => 3600),         
    97       'Event.Announce' => array('Type' => 'Boolean', 'Caption' => 'Ohlašování událostí', 'Default' => 0),         
    98       'AllowTwoSide.Accounts' => array('Type' => 'Boolean', 'Caption' => 'Povolit účty s postavami obou stran', 'Default' => 0),         
    99       'AllowTwoSide.Interaction.Chat' => array('Type' => 'Boolean', 'Caption' => 'Povolit komunikaci mezi stranami', 'Default' => 0),         
    100       'AllowTwoSide.Interaction.Channel' => array('Type' => 'Boolean', 'Caption' => 'Povolit kanály mezi stranami', 'Default' => 0),
    101       'AllowTwoSide.WhoList' => array('Type' => 'Boolean', 'Caption' => 'Povolit obě strany v seznamu přítomných', 'Default' => 0),               
    102     ),
    103   ); 
    10473 
    10574  function ShowListOnRow($Row)
     
    11988    $Output = '<h4>Seznam serverů</h4>';
    12089    $Table = new Table($this->ItemListFormClass);
     90    if(array_key_exists('Filter', $_GET))
     91    {
     92      if($_GET['Filter'] == 'User')
     93        $Table->Definition['Table'] = substr($Table->Definition['Table'], 0, -1).' WHERE User='.$this->System->Modules['User']->User['Id'].')';
     94    }
    12195    $Table->OnRow = array($this, 'ShowListOnRow');
    12296    $Table->Definition['Items']['Id'] = array('Type' => 'Hidden', 'Caption' => '', 'Default' => '');
     
    136110      $DbResult = $this->Database->query('SELECT COUNT(*) FROM Server WHERE User='.$this->System->Modules['User']->User['Id']);
    137111      $DbRow = $DbResult->fetch_row();
    138       if(($ServerCount < $Config['MaxServerCount']) and ($DbRow[0] == 0))
     112      if(($ServerCount < $Config['MaxServerCount']) and ($DbRow[0] < $Config['MaxServerCountPerUser']))
    139113        $Output .= '<br /><div style="text-align: center;"><a href="?Action=ServerAdd">Vytvořit nový server</a></dev>';     
    140114    }
     
    151125    {
    152126    $Output = '<h4>Podrobnosti serveru</h4>';
    153     $Form = new Form($this->ViewFormClass);
     127    $Form = new Form($this->ItemFormClass);
    154128    $Form->LoadValuesFromDatabase($Id);
    155129    $Form->Definition['Items']['Realmlist'] = array('Type' => 'String', 'Caption' => 'Adresa k připojení', 'Default' => '');   
     
    176150      {
    177151        $Output .= ' <a href="?Action=ServerEdit&amp;Id='.$Server->Id.'">Upravit základní nastavení</a>';
    178         $Output .= ' <a href="?Action=ServerEditDetailed&amp;Id='.$Server->Id.'">Upravit podrobné nastavení</a>';
    179152      }
    180153      //$Output .= ' <a href="?Action=ServerDatabaseImport&amp;Id='.$Server->Id.'">Načtení čisté databáze</a>';
     154      $Output .= ' <a href="?Action=RealmAdd&amp;Id='.$Server->Id.'">Vytvořit nový svět</a>';
    181155    }
    182156    $Output .= ' <a href="?Action=GameAccountRegister&amp;Id='.$Server->Id.'">Vytvoření herního účtu</a>';
     
    204178        $DbResult = $this->Database->query('SELECT COUNT(*) FROM Server WHERE User='.$this->System->Modules['User']->User['Id']);
    205179        $DbRow = $DbResult->fetch_row();
    206         if($DbRow[0] > 0) $Output .= $this->System->SystemMessage('Nový server', 'Lze vytvořit pouze jeden server pro každý uživatelský účet.');
     180        if($DbRow[0] >= $Config['MaxServerCountPerUser']) $Output .= $this->System->SystemMessage('Nový server', 'Na jeden účet lze vytvořit maximálně '.$Config['MaxServerCountPerUser'].' serverů');
    207181        else
    208182        {
     
    220194  function Create()
    221195  {
     196    global $Config;
     197   
    222198    $Output = '';
    223199    if($this->System->Modules['User']->User['Role'] >= USER_ROLE_USER)
     
    225201      $DbResult = $this->Database->query('SELECT COUNT(*) FROM Server WHERE User='.$this->System->Modules['User']->User['Id']);
    226202      $DbRow = $DbResult->fetch_row();
    227       if($DbRow[0] > 0) $Output .= $this->System->SystemMessage('Nový server', 'Lze vytvořit pouze jeden server pro každý uživatelský účet.');
     203      if($DbRow[0] >= $Config['MaxServerCountPerUser']) $Output .= $this->System->SystemMessage('Nový server', 'Na jeden účet lze vytvořit maximálně '.$Config['MaxServerCountPerUser'].' serverů');
    228204      else
    229205      {
    230         $DbResult = $this->Database->query('SELECT MAX(NetworkPortRealmd), MAX(NetworkPortWorldd) FROM Server');
     206        $DbResult = $this->Database->query('SELECT MAX(NetworkPortRealmd) FROM Server');
    231207        $DbRow = $DbResult->fetch_row();
    232208        $NewPortRealmd = $DbRow[0] + 1;
    233209        if($NewPortRealmd < $Config['BaseNetworkPortRealmd']) $NewPortRealmd = $Config['BaseNetworkPortRealmd'];
    234         $NewPortWorldd = $DbRow[1] + 1;
    235         if($NewPortWorldd < $Config['BaseNetworkPortWorldd']) $NewPortWorldd = $Config['BaseNetworkPortWorldd'];
    236210           
    237211        $Form = new Form($this->CreateFormClass, array());
    238212        $Form->LoadValuesFromForm();
    239         $this->Database->insert('Server', array('Name' => $Form->Values['Name'], 'Description' => $Form->Values['Description'], 'User' => $this->System->Modules['User']->User['Id'], 'Motd' => $Form->Values['Motd'], 'Homepage' => $Form->Values['Homepage'], 'Type' => $Form->Values['Type'], 'Database' => $Form->Values['Database'], 'NetworkPortWorldd' => $NewPortWorldd, 'NetworkPortRealmd' => $NewPortRealmd, 'Lock' => 1, 'TimeCreate' => 'NOW()'));
     213        $this->Database->insert('Server', array('Name' => $Form->Values['Name'], 'Description' => $Form->Values['Description'], 'User' => $this->System->Modules['User']->User['Id'], 'Homepage' => $Form->Values['Homepage'], 'Database' => $Form->Values['Database'], 'NetworkPortRealmd' => $NewPortRealmd, 'Lock' => 1, 'TimeCreate' => 'NOW()'));
    240214        $LastInsertId = $this->Database->insert_id;
    241215        $Server = new Server($this->Database, $LastInsertId);
    242216        $Server->CreateDatabase();           
    243217        $Output .= $this->System->SystemMessage('Vytvoření serveru', $Server->ImportDatabase(true));
    244         $Output .= $this->ShowTaskList();
     218        $TaskView = new TaskView($this->Database, $this->System);
     219        $Output .= $TaskView->ItemList();
    245220        //$UserOptions->LoadValuesFromDatabase($this->System->Modules['User']->User['Id']);
    246221        //$Form->OnSubmit = '?Action=ServerCreate';
     
    284259      $Form->OnSubmit = '?Action=ServerSave';
    285260      $Output .= $Form->ShowEditForm();
    286     } else $Output = $this->SystemMessage('Nastavení serveru', 'Nemáte oprávnění');
    287     return($Output);
    288   }
    289  
    290   function EditDetailed()
    291   {
    292     $Output = '';
    293     $Server = new Server($this->Database, $_GET['Id']);
    294     if(($this->System->Modules['User']->User['Id'] == $Server->Server['User']) or ($this->System->Modules['User']->User['Role'] >= USER_ROLE_ADMINISTRATOR))
    295     {
    296       $Form = new Form($this->$SettingDetailedFormClass);
    297       $EmulatorConfig = new MangosConfigurationFile($this->Database);
    298       $EmulatorConfig->Load('../server/'.$Server->Id.'/etc/mangosd.conf');
    299       $Form->Values = $EmulatorConfig->ParameterList;
    300       $Form->Values['ServerId'] = $_GET['Id'];
    301       $Form->OnSubmit = '?Action=ServerSaveDetailed';
    302       $Output .= $Form->ShowEditForm();
    303     } else $this->System->SystemMessage('Nastavení serveru', 'Nemáte oprávnění');
    304     return($Output);   
    305   }
    306  
    307   function SaveDetailed()
    308   {
    309     $Output = '';
    310     $Server = new Server($this->Database, $_POST['ServerId']);
    311     if(($this->System->Modules['User']->User['Id'] == $Server->Server['User']) or ($this->System->Modules['User']->User['Role'] >= USER_ROLE_ADMINISTRATOR))
    312     {
    313       $Form = new Form($this->$SettingDetailedFormClass, array());
    314       $Form->LoadValuesFromForm();
    315       $EmulatorConfig = new MangosConfigurationFile($this->Database);
    316       $EmulatorConfig->Load('../server/'.$Server->Id.'/etc/mangosd.conf');
    317       foreach($Form->Values as $Index => $Item)
    318         $EmulatorConfig->ParameterList[$Index] = $Item;
    319       $EmulatorConfig->Save('../server/'.$Server->Id.'/etc/mangosd.conf');
    320       $ServerId = $_POST['ServerId'];
    321       unset($Form->Values['ServerId']);
    322       $Output .= $this->System->SystemMessage('Upravit server', 'Nastavení serveru uloženo.');
    323       //$Form->SaveValuesToDatabase($_POST['ServerId']);
    324       $Form->OnSubmit = '?Action=ServerSaveDetailed';
    325        
    326       $Server = new Server($this->Database, $_POST['ServerId']);
    327       $Server->SaveConfiguration();
    328       $Form->Values['ServerId'] = $ServerId;
    329       $Output .= $Form->ShowEditForm();
    330     } else $this->System->SystemMessage('Nastavení serveru', 'Nemáte oprávnění');
    331     return($Output);
    332   }
     261    } else $Output = $this->System->SystemMessage('Nastavení serveru', 'Nemáte oprávnění');
     262    return($Output);
     263  }
    333264 
    334265  function Start()
     
    341272      {
    342273        $Output .= $this->System->SystemMessage('Spuštění serveru', $Server->Start());
    343         $Output .= $this->ShowTaskList();
     274        $TaskView = new TaskView($this->Database, $this->System);
     275        $Output .= $TaskView->ItemList();;
    344276      } else $this->System->SystemMessage('Spuštění serveru', 'Nemáte oprávnění');
    345277    } else $Output .= USER_BAD_ROLE;
     
    356288      {
    357289        $Output .= $this->System->SystemMessage('Zastavení serveru', $Server->Stop());
    358         $Output .= $this->ShowTaskList();
     290        $TaskView = new TaskView($this->Database, $this->System);
     291        $Output .= $TaskView->ItemList();;
    359292      } else $this->System->SystemMessage('Zastavení serveru', 'Nemáte oprávnění');
    360293    } else $Output .= USER_BAD_ROLE;
Note: See TracChangeset for help on using the changeset viewer.