database.php 10 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301
  1. <?php
  2. /*
  3. *
  4. * OGP - Open Game Panel
  5. * Copyright (C) 2008 - 2018 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. public function generateMySQLInClause($arrayOfInputs){
  32. $inClause = "IN ('";
  33. for($i = 0; $i < count($arrayOfInputs); $i++){
  34. if($i == 0){
  35. $inClause .= $this->realEscapeSingle($arrayOfInputs[$i]);
  36. }else{
  37. $inClause .= "','" . $this->realEscapeSingle($arrayOfInputs[$i]);
  38. }
  39. }
  40. $inClause .= "')";
  41. return $inClause;
  42. }
  43. /// \return TRUE if connection was created successfully.
  44. /// \return -1 When host is invalid.
  45. /// \return -11 When connection to database could not be established
  46. /// \return -12 When database was not valid.
  47. abstract public function connect($db_host, $db_user, $db_pass, $db_name, $table_prefix = NULL);
  48. /// Get all available settings
  49. abstract public function getSettings();
  50. // Real escape
  51. abstract public function realEscapeSingle($string);
  52. /// Get one setting value
  53. /// \return FALSE if setting does not exist.
  54. /// \return setting value if setting exists.
  55. abstract public function getSetting($name);
  56. /// $settings Contains settings in array. Key is the name of the setting
  57. /// and value is the setting value.
  58. abstract public function setSettings($settings);
  59. abstract public function getUser($username);
  60. abstract public function getUserById($user_id);
  61. abstract public function getUserByEmail($email);
  62. abstract public function updateUsersPassword($user_id, $new_password);
  63. abstract public function getGroupById($group_id);
  64. abstract public function getUserList();
  65. abstract public function getUserList_limit($page_user,$limit_user,$search_field);
  66. abstract public function getGroupList();
  67. abstract public function getGroupByName($group);
  68. abstract public function getUsersGroups($user_id);
  69. abstract public function getGameServersWithSamePath($remote_id, $home_path);
  70. abstract public function getUserGroupList($user_id);
  71. /// \return array of users. Array is empty if there is no users available.
  72. abstract public function getAvailableUsersForGroup($group_id);
  73. abstract public function getAvailableSubUsersForGroup($group_id, $user_id);
  74. abstract public function listUsersInGroup($group_id);
  75. abstract public function getUsersSubUsersIds($user_id);
  76. abstract public function getNumberOfOwnedServersPerUser($userID);
  77. abstract public function listServersInGroup($group_id);
  78. abstract public function addUser($username,$password,$user_role,$user_email = "");
  79. abstract public function addUserToGroup($user_id,$group_id);
  80. abstract public function addServerToGroup($rserver_id,$group_id);
  81. abstract public function addGroup($group,$main_user_id);
  82. abstract public function delGroup($group_id);
  83. abstract public function delUserFromGroup($user_id, $group_id);
  84. abstract public function delServerFromGroup($rserver_id,$group_id);
  85. abstract public function delUser($user_id);
  86. /**
  87. * Returns TRUE if user is admin.
  88. * \todo This function might require change as we are creating
  89. * group functionality.
  90. */
  91. abstract public function isAdmin($user_id);
  92. abstract public function getAdmins();
  93. /**
  94. * Returns TRUE if user is admin.
  95. * \todo This function might require change as we are creating
  96. * group functionality.
  97. */
  98. abstract public function isSubUser($user_id);
  99. abstract public function addModule($module_title,$module,$module_version,$db_version);
  100. abstract public function getModuleMenu($module_id);
  101. abstract public function getModuleIDByName($name);
  102. abstract public function getModule($id);
  103. abstract public function addModuleMenu($module_id,$subpage,$group,$name,$pos);
  104. abstract public function delModule($module_id);
  105. abstract public function getMenusForGroup($group);
  106. abstract public function addGameModCfg($game_id,$mod_key,$mod_name);
  107. abstract public function getCurrentHomeConfigMods($clear_all);
  108. abstract public function updateOGPGameModsWithNewIDs($oldModStructure);
  109. abstract public function clearGameCfgs($clear_all);
  110. abstract public function addGameCfg($config);
  111. abstract public function getGameCfgs();
  112. /// \brief Used to make plain query to the database.
  113. /// \return true if success and false otherwise.
  114. /// When false is returned user can check error with getError() function.
  115. abstract public function query( $query );
  116. /// \brief This query return array of values or false on failure.
  117. abstract public function resultQuery( $query );
  118. /// \brief Returns the last error message
  119. abstract public function getError();
  120. // Server module functions
  121. /// \brief Adds remote server to database.
  122. 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,$display_public_ip);
  123. abstract public function getRemoteServer($id);
  124. /// \brief Get Remote servers
  125. abstract public function getRemoteServers();
  126. abstract public function getRemoteServers_ts3($assign_id);
  127. abstract public function removeRemoteServer($remote_server_id);
  128. abstract public function addRemoteServerIP($remote_server_id, $ip);
  129. /// \brief Get remote server IP's
  130. abstract public function getRemoteServerIPs($server_id);
  131. abstract public function removeRemoteServerIPs($server_id);
  132. /// \brief Change encryption key for remote server.
  133. abstract public function changeRemoteServerSettings($server_id,
  134. $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,$display_public_ip);
  135. // Gamemanager functions
  136. abstract public function getHomeIpPorts($home_id);
  137. abstract public function getHomesFor($id_type,$assign_id);
  138. abstract public function getHomesFor_limit($id_type,$assign_id,$home_page,$home_limit,$home_cfg_id,$search_field);
  139. abstract public function getHomeMods($home_id);
  140. /// \return FALSE if home is not owned by the user.
  141. /// \return home_id of the home if home owned by the user.
  142. abstract public function isIpPortOwnedByUser($user_id, $ip, $port);
  143. abstract public function getRemoteServerById($remote_server_id);
  144. abstract public function getCfgHomeById($cfgid);
  145. abstract public function getIpPortsForUser($user_id);
  146. abstract public function getIpPortsForUser_limit($user_id,$page_user,$limit_user);
  147. abstract public function getIpPorts_count($id_type,$assign_id);
  148. // Module manager functions
  149. /// \brief Returns the installed modules.
  150. abstract public function getInstalledModules();
  151. /// \brief Returns TRUE if module is installed, FALSE otherwise.
  152. abstract public function isModuleInstalled($module_folder);
  153. // User game functions
  154. /// \brief Assignes a game home to user.
  155. abstract public function assignHomeTo($id_type,$assign_id,$home_id,$access_rights);
  156. abstract public function unassignHomeFrom($id_type,$assign_id,$home_id);
  157. /// \brief Adds game home to database.
  158. /// \return FALSE if failure
  159. /// \return id of the home in case of success.
  160. abstract public function addGameHome($rserver_id,$user_id_main,$home_cfg_id,$game_path,$server_name,$control_password,$ftp_password);
  161. /// \return FALSE if game home does not exist
  162. /// \return array containing the information of the gamehome.
  163. abstract public function getGameHome($home_id, $getIPInfo = false);
  164. /// \return FALSE if game home does not exist or user does not have access to it.
  165. /// \return array information of the gamehome.
  166. abstract public function getUserGameHome($user_id, $home_id);
  167. /// \brief Deletes the game home.
  168. abstract public function deleteGameHome($home_id);
  169. /// \brief Adds game mod to home.
  170. abstract public function addModToGameHome($home_id, $mod_cfg_id);
  171. abstract public function delGameMod($mod_id);
  172. abstract public function changeHomePath($home_id,$path);
  173. abstract public function changeUserIdMain($home_id,$userid);
  174. abstract public function changeFtpPassword($home_id,$password);
  175. /// \brief get available mods for game home.
  176. abstract public function getAvailableModsForGameHome($home_id);
  177. abstract public function updateGameModParams($max_players,$extra_params,
  178. $cpu_affinity,$nice,$home_id,$mod_cfg_id);
  179. abstract public function addGameIpPort($home_id, $ip, $port);
  180. abstract public function delGameIpPort($home_id, $ip, $port);
  181. abstract public function changeHomeName($home_id, $name);
  182. abstract public function changeHomeControlPassword($home_id, $control_password);
  183. abstract public function getAvailableHomesFor($id_type,$assign_id);
  184. abstract public function getGameHomes();
  185. abstract public function getGameHomes_limit($page_gameHomes, $limit_gameHomes, $searchType, $searchString);
  186. /// \return true If username and password match.
  187. /// \return false If username and password does not match
  188. abstract public function is_valid_login($username,$password);
  189. abstract public function getTablePrefix();
  190. abstract public function getHomeAffinity($home_id);
  191. abstract public function saveGameServerOrder($order);
  192. abstract public function resetGameServerOrder();
  193. abstract public function runMultiSQLQuery($sql);
  194. }
  195. ?>