database.php 9.2 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266
  1. <?php
  2. /*
  3. *
  4. * OGP - Open Game Panel
  5. * Copyright (C) Copyright (C) 2008 - 2013 The OGP Development Team
  6. *
  7. * http://www.opengamepanel.org/
  8. *
  9. * This program is free software; you can redistribute it and/or
  10. * modify it under the terms of the GNU General Public License
  11. * as published by the Free Software Foundation; either version 2
  12. * of the License, or any later version.
  13. *
  14. * This program is distributed in the hope that it will be useful,
  15. * but WITHOUT ANY WARRANTY; without even the implied warranty of
  16. * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
  17. * GNU General Public License for more details.
  18. *
  19. * You should have received a copy of the GNU General Public License
  20. * along with this program; if not, write to the Free Software
  21. * Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA.
  22. *
  23. */
  24. define("OGP_DB_PREFIX", "OGP_DB_PREFIX");
  25. abstract class OGPDatabase {
  26. protected $queries_ = 0;
  27. public function getNbOfQueries()
  28. {
  29. return $this->queries_;
  30. }
  31. /// \return TRUE if connection was created successfully.
  32. /// \return -1 When host is invalid.
  33. /// \return -11 When connection to database could not be established
  34. /// \return -12 When database was not valid.
  35. abstract public function connect($db_host, $db_user, $db_pass, $db_name, $table_prefix = NULL);
  36. /// Get all available settings
  37. abstract public function getSettings();
  38. /// Get one setting value
  39. /// \return FALSE if setting does not exist.
  40. /// \return setting value if setting exists.
  41. abstract public function getSetting($name);
  42. /// $settings Contains settings in array. Key is the name of the setting
  43. /// and value is the setting value.
  44. abstract public function setSettings($settings);
  45. abstract public function getUser($username);
  46. abstract public function getUserById($user_id);
  47. abstract public function getUserByEmail($email);
  48. abstract public function updateUsersPassword($user_id, $new_password);
  49. abstract public function getGroupById($group_id);
  50. abstract public function getUserList();
  51. abstract public function getUserList_limit($page_user,$limit_user);
  52. abstract public function getGroupList();
  53. abstract public function getUsersGroups($user_id);
  54. abstract public function getUserGroupList($user_id);
  55. /// \return array of users. Array is empty if there is no users available.
  56. abstract public function getAvailableUsersForGroup($group_id);
  57. abstract public function getAvailableSubUsersForGroup($group_id, $user_id);
  58. abstract public function listUsersInGroup($group_id);
  59. abstract public function getUsersSubUsersIds($user_id);
  60. abstract public function getNumberOfOwnedServersPerUser($userID);
  61. abstract public function listServersInGroup($group_id);
  62. abstract public function addUser($username,$password,$user_role,$user_email = "");
  63. abstract public function addUserToGroup($user_id,$group_id);
  64. abstract public function addServerToGroup($rserver_id,$group_id);
  65. abstract public function addGroup($group,$main_user_id);
  66. abstract public function delGroup($group_id);
  67. abstract public function delUserFromGroup($user_id, $group_id);
  68. abstract public function delServerFromGroup($rserver_id,$group_id);
  69. abstract public function delUser($user_id);
  70. /**
  71. * Returns TRUE if user is admin.
  72. * \todo This function might require change as we are creating
  73. * group functionality.
  74. */
  75. abstract public function isAdmin($user_id);
  76. abstract public function getAdmins();
  77. /**
  78. * Returns TRUE if user is admin.
  79. * \todo This function might require change as we are creating
  80. * group functionality.
  81. */
  82. abstract public function isSubUser($user_id);
  83. abstract public function addModule($module_title,$module,$module_version,$db_version);
  84. abstract public function getModuleMenu($module_id);
  85. abstract public function addModuleMenu($module_id,$subpage,$group,$name,$pos);
  86. abstract public function delModule($module_id);
  87. abstract public function getMenusForGroup($group);
  88. abstract public function addGameModCfg($game_id,$mod_key,$mod_name);
  89. abstract public function clearGameCfgs($clear_all);
  90. abstract public function addGameCfg($config);
  91. abstract public function getGameCfgs();
  92. /// \brief Used to make plain query to the database.
  93. /// \return true if success and false otherwise.
  94. /// When false is returned user can check error with getError() function.
  95. abstract public function query( $query );
  96. /// \brief This query return array of values or false on failure.
  97. abstract public function resultQuery( $query );
  98. /// \brief Returns the last error message
  99. abstract public function getError();
  100. // Server module functions
  101. /// \brief Adds remote server to database.
  102. abstract public function addRemoteServer($rhost_ip,$rhost_name,$rhost_user_name,$rhost_port,$rhost_ftp_ip,$rhost_ftp_port,$encryption_key,$rhost_timeout,$use_nat);
  103. abstract public function getRemoteServer($id);
  104. /// \brief Get Remote servers
  105. abstract public function getRemoteServers();
  106. abstract public function getRemoteServers_ts3($assign_id);
  107. abstract public function removeRemoteServer($remote_server_id);
  108. abstract public function addRemoteServerIP($remote_server_id, $ip);
  109. /// \brief Get remote server IP's
  110. abstract public function getRemoteServerIPs($server_id);
  111. abstract public function removeRemoteServerIPs($server_id);
  112. /// \brief Change encryption key for remote server.
  113. abstract public function changeRemoteServerSettings($server_id,
  114. $agent_ip,$agent_port,$remote_server_name,$remote_server_user_name,$remote_host_ftp_ip,$remote_host_ftp_port,$encryption_key,$rhost_timeout,$use_nat);
  115. // Gamemanager functions
  116. abstract public function getHomeIpPorts($home_id);
  117. abstract public function getHomesFor($id_type,$assign_id);
  118. abstract public function getHomesFor_limit($id_type,$assign_id,$home_page,$home_limit);
  119. abstract public function getHomeMods($home_id);
  120. /// \return FALSE if home is not owned by the user.
  121. /// \return home_id of the home if home owned by the user.
  122. abstract public function isIpPortOwnedByUser($user_id, $ip, $port);
  123. abstract public function getRemoteServerById($remote_server_id);
  124. abstract public function getCfgHomeById($cfgid);
  125. abstract public function getIpPortsForUser($user_id);
  126. abstract public function getIpPortsForUser_limit($user_id,$page_user,$limit_user);
  127. abstract public function getIpPorts_count($id_type,$assign_id);
  128. // Module manager functions
  129. /// \brief Returns the installed modules.
  130. abstract public function getInstalledModules();
  131. /// \brief Returns TRUE if module is installed, FALSE otherwise.
  132. abstract public function isModuleInstalled($module_folder);
  133. // User game functions
  134. /// \brief Assignes a game home to user.
  135. abstract public function assignHomeTo($id_type,$assign_id,$home_id,$access_rights);
  136. abstract public function unassignHomeFrom($id_type,$assign_id,$home_id);
  137. /// \brief Adds game home to database.
  138. /// \return FALSE if failure
  139. /// \return id of the home in case of success.
  140. abstract public function addGameHome($rserver_id,$user_id_main,$home_cfg_id,$game_path,$server_name,$control_password,$ftp_password);
  141. /// \return FALSE if game home does not exist
  142. /// \return array containing the information of the gamehome.
  143. abstract public function getGameHome($home_id);
  144. /// \return FALSE if game home does not exist or user does not have access to it.
  145. /// \return array information of the gamehome.
  146. abstract public function getUserGameHome($user_id, $home_id);
  147. /// \brief Deletes the game home.
  148. abstract public function deleteGameHome($home_id);
  149. /// \brief Adds game mod to home.
  150. abstract public function addModToGameHome($home_id, $mod_cfg_id);
  151. abstract public function delGameMod($mod_id);
  152. abstract public function changeHomePath($home_id,$path);
  153. abstract public function changeUserIdMain($home_id,$userid);
  154. abstract public function changeFtpPassword($home_id,$password);
  155. /// \brief get available mods for game home.
  156. abstract public function getAvailableModsForGameHome($home_id);
  157. abstract public function updateGameModParams($max_players,$extra_params,
  158. $cpu_affinity,$nice,$home_id,$mod_cfg_id);
  159. abstract public function addGameIpPort($home_id, $ip, $port);
  160. abstract public function delGameIpPort($home_id, $ip, $port);
  161. abstract public function changeHomeName($home_id, $name);
  162. abstract public function changeHomeControlPassword($home_id, $control_password);
  163. abstract public function getAvailableHomesFor($id_type,$assign_id);
  164. abstract public function getGameHomes();
  165. abstract public function getGameHomes_limit($page_gameHomes,$limit_gameHomes);
  166. /// \return true If username and password match.
  167. /// \return false If username and password does not match
  168. abstract public function is_valid_login($username,$password);
  169. abstract public function getTablePrefix();
  170. abstract public function getHomeAffinity($home_id);
  171. }
  172. ?>