database.php 10 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293
  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 getUsersGroups($user_id);
  68. abstract public function getGameServersWithSamePath($remote_id, $home_path);
  69. abstract public function getUserGroupList($user_id);
  70. /// \return array of users. Array is empty if there is no users available.
  71. abstract public function getAvailableUsersForGroup($group_id);
  72. abstract public function getAvailableSubUsersForGroup($group_id, $user_id);
  73. abstract public function listUsersInGroup($group_id);
  74. abstract public function getUsersSubUsersIds($user_id);
  75. abstract public function getNumberOfOwnedServersPerUser($userID);
  76. abstract public function listServersInGroup($group_id);
  77. abstract public function addUser($username,$password,$user_role,$user_email = "");
  78. abstract public function addUserToGroup($user_id,$group_id);
  79. abstract public function addServerToGroup($rserver_id,$group_id);
  80. abstract public function addGroup($group,$main_user_id);
  81. abstract public function delGroup($group_id);
  82. abstract public function delUserFromGroup($user_id, $group_id);
  83. abstract public function delServerFromGroup($rserver_id,$group_id);
  84. abstract public function delUser($user_id);
  85. /**
  86. * Returns TRUE if user is admin.
  87. * \todo This function might require change as we are creating
  88. * group functionality.
  89. */
  90. abstract public function isAdmin($user_id);
  91. abstract public function getAdmins();
  92. /**
  93. * Returns TRUE if user is admin.
  94. * \todo This function might require change as we are creating
  95. * group functionality.
  96. */
  97. abstract public function isSubUser($user_id);
  98. abstract public function addModule($module_title,$module,$module_version,$db_version);
  99. abstract public function getModuleMenu($module_id);
  100. abstract public function getModuleIDByName($name);
  101. abstract public function getModule($id);
  102. abstract public function addModuleMenu($module_id,$subpage,$group,$name,$pos);
  103. abstract public function delModule($module_id);
  104. abstract public function getMenusForGroup($group);
  105. abstract public function addGameModCfg($game_id,$mod_key,$mod_name);
  106. abstract public function getCurrentHomeConfigMods($clear_all);
  107. abstract public function updateOGPGameModsWithNewIDs($oldModStructure);
  108. abstract public function clearGameCfgs($clear_all);
  109. abstract public function addGameCfg($config);
  110. abstract public function getGameCfgs();
  111. /// \brief Used to make plain query to the database.
  112. /// \return true if success and false otherwise.
  113. /// When false is returned user can check error with getError() function.
  114. abstract public function query( $query );
  115. /// \brief This query return array of values or false on failure.
  116. abstract public function resultQuery( $query );
  117. /// \brief Returns the last error message
  118. abstract public function getError();
  119. // Server module functions
  120. /// \brief Adds remote server to database.
  121. 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);
  122. abstract public function getRemoteServer($id);
  123. /// \brief Get Remote servers
  124. abstract public function getRemoteServers();
  125. abstract public function getRemoteServers_ts3($assign_id);
  126. abstract public function removeRemoteServer($remote_server_id);
  127. abstract public function addRemoteServerIP($remote_server_id, $ip);
  128. /// \brief Get remote server IP's
  129. abstract public function getRemoteServerIPs($server_id);
  130. abstract public function removeRemoteServerIPs($server_id);
  131. /// \brief Change encryption key for remote server.
  132. abstract public function changeRemoteServerSettings($server_id,
  133. $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);
  134. // Gamemanager functions
  135. abstract public function getHomeIpPorts($home_id);
  136. abstract public function getHomesFor($id_type,$assign_id);
  137. abstract public function getHomesFor_limit($id_type,$assign_id,$home_page,$home_limit,$home_cfg_id,$search_field);
  138. abstract public function getHomeMods($home_id);
  139. /// \return FALSE if home is not owned by the user.
  140. /// \return home_id of the home if home owned by the user.
  141. abstract public function isIpPortOwnedByUser($user_id, $ip, $port);
  142. abstract public function getRemoteServerById($remote_server_id);
  143. abstract public function getCfgHomeById($cfgid);
  144. abstract public function getIpPortsForUser($user_id);
  145. abstract public function getIpPortsForUser_limit($user_id,$page_user,$limit_user);
  146. abstract public function getIpPorts_count($id_type,$assign_id);
  147. // Module manager functions
  148. /// \brief Returns the installed modules.
  149. abstract public function getInstalledModules();
  150. /// \brief Returns TRUE if module is installed, FALSE otherwise.
  151. abstract public function isModuleInstalled($module_folder);
  152. // User game functions
  153. /// \brief Assignes a game home to user.
  154. abstract public function assignHomeTo($id_type,$assign_id,$home_id,$access_rights);
  155. abstract public function unassignHomeFrom($id_type,$assign_id,$home_id);
  156. /// \brief Adds game home to database.
  157. /// \return FALSE if failure
  158. /// \return id of the home in case of success.
  159. abstract public function addGameHome($rserver_id,$user_id_main,$home_cfg_id,$game_path,$server_name,$control_password,$ftp_password);
  160. /// \return FALSE if game home does not exist
  161. /// \return array containing the information of the gamehome.
  162. abstract public function getGameHome($home_id);
  163. /// \return FALSE if game home does not exist or user does not have access to it.
  164. /// \return array information of the gamehome.
  165. abstract public function getUserGameHome($user_id, $home_id);
  166. /// \brief Deletes the game home.
  167. abstract public function deleteGameHome($home_id);
  168. /// \brief Adds game mod to home.
  169. abstract public function addModToGameHome($home_id, $mod_cfg_id);
  170. abstract public function delGameMod($mod_id);
  171. abstract public function changeHomePath($home_id,$path);
  172. abstract public function changeUserIdMain($home_id,$userid);
  173. abstract public function changeFtpPassword($home_id,$password);
  174. /// \brief get available mods for game home.
  175. abstract public function getAvailableModsForGameHome($home_id);
  176. abstract public function updateGameModParams($max_players,$extra_params,
  177. $cpu_affinity,$nice,$home_id,$mod_cfg_id);
  178. abstract public function addGameIpPort($home_id, $ip, $port);
  179. abstract public function delGameIpPort($home_id, $ip, $port);
  180. abstract public function changeHomeName($home_id, $name);
  181. abstract public function changeHomeControlPassword($home_id, $control_password);
  182. abstract public function getAvailableHomesFor($id_type,$assign_id);
  183. abstract public function getGameHomes();
  184. abstract public function getGameHomes_limit($page_gameHomes, $limit_gameHomes, $searchType, $searchString);
  185. /// \return true If username and password match.
  186. /// \return false If username and password does not match
  187. abstract public function is_valid_login($username,$password);
  188. abstract public function getTablePrefix();
  189. abstract public function getHomeAffinity($home_id);
  190. }
  191. ?>