1
0

mysqli_database.php 9.4 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280
  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. class MySQLModuleDatabase extends OGPDatabaseMySQL
  25. {
  26. protected $link;
  27. protected $table_prefix;
  28. public function __construct() {
  29. }
  30. public function __destruct() {
  31. parent::__destruct();
  32. }
  33. public function connect($db_host, $db_user, $db_pass, $db_name, $table_prefix = NULL) {
  34. if ( !extension_loaded("mysqli") )
  35. return -99;
  36. $this->table_prefix = $table_prefix;
  37. /// \todo We might want to do other checks here as well?
  38. if ( $db_host === NULL )
  39. return -1;
  40. $this->link = mysqli_connect($db_host, $db_user, $db_pass);
  41. if ( $this->link === FALSE )
  42. return -11;
  43. if ( mysqli_select_db($this->link,$db_name) === FALSE )
  44. return -12;
  45. return TRUE;
  46. }
  47. private function listQuery($query) {
  48. if ( !$this->link ) return FALSE;
  49. ++$this->queries_;
  50. $result = mysqli_query($this->link,$query);
  51. if ( mysqli_errno($this->link) > 0 )
  52. print mysqli_error($this->link);
  53. if ( $result === FALSE )
  54. return FALSE;
  55. if ( mysqli_num_rows($result) == 0 )
  56. return FALSE;
  57. $results = array();
  58. while ( $row = mysqli_fetch_assoc( $result ) )
  59. array_push($results,$row);
  60. return $results;
  61. }
  62. public function addMysqlServer($remote_server_id,$mysql_name,$mysql_ip,$mysql_port,$mysql_root_passwd,$privilegies_str)
  63. {
  64. if ( empty($mysql_ip) )
  65. return false;
  66. else if ( empty($mysql_port) )
  67. return false;
  68. else if ( empty($mysql_root_passwd) )
  69. return false;
  70. $query = sprintf("INSERT INTO `%smysql_servers` (`remote_server_id`,`mysql_name`,`mysql_ip`,`mysql_port`,`mysql_root_passwd`,`privilegies_str`)
  71. VALUES('%s','%s','%s','%s','%s','%s');",
  72. $this->table_prefix,
  73. mysqli_real_escape_string($this->link,$remote_server_id),
  74. mysqli_real_escape_string($this->link,$mysql_name),
  75. mysqli_real_escape_string($this->link,$mysql_ip),
  76. mysqli_real_escape_string($this->link,$mysql_port),
  77. mysqli_real_escape_string($this->link,$mysql_root_passwd),
  78. mysqli_real_escape_string($this->link,$privilegies_str));
  79. ++$this->queries_;
  80. mysqli_query($this->link,$query);
  81. if( mysqli_errno($this->link) != 0 )
  82. {
  83. return false;
  84. }
  85. return mysqli_insert_id($this->link);
  86. }
  87. public function editMysqlServer($mysql_server_id,$remote_server_id,$mysql_name,$mysql_ip,$mysql_port,$mysql_root_passwd,$privilegies_str)
  88. {
  89. $query = sprintf("UPDATE `%smysql_servers` SET `remote_server_id` = '%s',
  90. `mysql_name` = '%s', `mysql_ip` = '%s', `mysql_port` = '%s',
  91. `mysql_root_passwd` = '%s', `privilegies_str` = '%s'
  92. WHERE `mysql_server_id` = %s;",
  93. $this->table_prefix,
  94. mysqli_real_escape_string($this->link,$remote_server_id),
  95. mysqli_real_escape_string($this->link,$mysql_name),
  96. mysqli_real_escape_string($this->link,$mysql_ip),
  97. mysqli_real_escape_string($this->link,$mysql_port),
  98. mysqli_real_escape_string($this->link,$mysql_root_passwd),
  99. mysqli_real_escape_string($this->link,$privilegies_str),
  100. mysqli_real_escape_string($this->link,$mysql_server_id));
  101. ++$this->queries_;
  102. if ( mysqli_query($this->link,$query) === FALSE )
  103. return FALSE;
  104. return TRUE;
  105. }
  106. public function getMysqlServers(){
  107. $query = sprintf("SELECT * FROM %smysql_servers;",
  108. $this->table_prefix);
  109. return $this->listQuery($query);
  110. }
  111. public function getMysqlServer($id) {
  112. if ( !$this->link ) return FALSE;
  113. $query = sprintf("SELECT * FROM `%smysql_servers` WHERE `mysql_server_id` = %d",
  114. $this->table_prefix,
  115. mysqli_real_escape_string($this->link,$id));
  116. ++$this->queries_;
  117. $result = mysqli_query($this->link,$query);
  118. // If there are no servers then we can stop here.
  119. if ( mysqli_num_rows($result) != 1 )
  120. return FALSE;
  121. return mysqli_fetch_assoc( $result );
  122. }
  123. public function removeMysqlServer($mysql_server_id){
  124. $mysql_server_id = mysqli_real_escape_string($this->link,$mysql_server_id);
  125. $return = TRUE;
  126. $queries = array("DELETE FROM `%smysql_databases` WHERE mysql_server_id = %d;",
  127. "DELETE FROM `%smysql_servers` WHERE mysql_server_id = %d;");
  128. foreach ( $queries as $query )
  129. {
  130. $query = sprintf($query,$this->table_prefix,$mysql_server_id);
  131. ++$this->queries_;
  132. $result = mysqli_query($this->link,$query);
  133. $return = ($result === FALSE) ? FALSE : $return;
  134. }
  135. return $return;
  136. }
  137. public function getMysqlServerDBs($mysql_server_id){
  138. $query = sprintf("SELECT * FROM `%smysql_databases` WHERE mysql_server_id = %d;",
  139. $this->table_prefix,
  140. mysqli_real_escape_string($this->link,$mysql_server_id));
  141. return $this->listQuery($query);
  142. }
  143. public function addMysqlServerDB($mysql_server_id, $home_id, $db_user, $db_passwd, $db_name, $enabled){
  144. $query = sprintf("INSERT INTO `%smysql_databases` (`mysql_server_id`, `home_id`, `db_user`, `db_passwd`, `db_name`, `enabled`)
  145. VALUES('%d','%d','%s','%s','%s','%d');",
  146. $this->table_prefix,
  147. mysqli_real_escape_string($this->link,$mysql_server_id),
  148. mysqli_real_escape_string($this->link,$home_id),
  149. mysqli_real_escape_string($this->link,$db_user),
  150. mysqli_real_escape_string($this->link,$db_passwd),
  151. mysqli_real_escape_string($this->link,$db_name),
  152. mysqli_real_escape_string($this->link,$enabled));
  153. ++$this->queries_;
  154. try {
  155. mysqli_query($this->link,$query);
  156. if( mysqli_errno($this->link) != 0 )
  157. {
  158. return false;
  159. }
  160. } catch(Exception $e) {
  161. return false;
  162. }
  163. return mysqli_insert_id($this->link);
  164. }
  165. public function getMysqlDBbyId($db_id){
  166. $query = sprintf('SELECT * FROM `%1$smysql_databases` NATURAL JOIN `%1$smysql_servers` WHERE db_id = %2$d;',
  167. $this->table_prefix,
  168. mysqli_real_escape_string($this->link,$db_id));
  169. $db_info = $this->listQuery($query);
  170. return $db_info[0];
  171. }
  172. public function getMysqlDBsbyHomeId($home_id){
  173. $query = sprintf('SELECT * FROM `%1$smysql_databases` WHERE enabled = 1 AND home_id = %2$d;',
  174. $this->table_prefix,
  175. mysqli_real_escape_string($this->link,$home_id));
  176. return $this->listQuery($query);
  177. }
  178. public function getMysqlHomeDBbyId($home_id,$db_id){
  179. $query = sprintf('SELECT * FROM `%1$smysql_databases` NATURAL JOIN `%1$smysql_servers` WHERE home_id = %2$d AND db_id = %3$d;',
  180. $this->table_prefix,
  181. mysqli_real_escape_string($this->link,$home_id),
  182. mysqli_real_escape_string($this->link,$db_id));
  183. $db_info = $this->listQuery($query);
  184. return $db_info[0];
  185. }
  186. public function editMysqlServerDB($db_id, $home_id, $db_user, $db_passwd, $db_name, $enabled)
  187. {
  188. $query = sprintf("UPDATE `%smysql_databases`
  189. SET `home_id`='%d', `db_user`='%s', `db_passwd`='%s', `db_name`='%s',`enabled`='%d'
  190. WHERE `db_id` = '%d';",
  191. $this->table_prefix,
  192. mysqli_real_escape_string($this->link,$home_id),
  193. mysqli_real_escape_string($this->link,$db_user),
  194. mysqli_real_escape_string($this->link,$db_passwd),
  195. mysqli_real_escape_string($this->link,$db_name),
  196. mysqli_real_escape_string($this->link,$enabled),
  197. mysqli_real_escape_string($this->link,$db_id) );
  198. ++$this->queries_;
  199. try {
  200. mysqli_query($this->link,$query);
  201. if( mysqli_errno($this->link) != 0 )
  202. return FALSE;
  203. } catch(Exception $e) {
  204. return false;
  205. }
  206. return true;
  207. }
  208. public function removeMysqlServerDB($db_id)
  209. {
  210. $query = sprintf("DELETE FROM `%smysql_databases`
  211. WHERE `db_id` = '%d'",
  212. $this->table_prefix,
  213. mysqli_real_escape_string($this->link,$db_id));
  214. ++$this->queries_;
  215. if ( mysqli_query($this->link,$query) === FALSE )
  216. return FALSE;
  217. return TRUE;
  218. }
  219. public function getGameHomesByRemoteServerId($remote_server_id){
  220. $query = sprintf('SELECT %1$sserver_homes.*,%1$sremote_servers.*, %1$sconfig_homes.game_name
  221. FROM `%1$sserver_homes` NATURAL JOIN `%1$sconfig_homes` NATURAL JOIN `%1$sremote_servers` WHERE remote_server_id=%2$s;',
  222. $this->table_prefix,
  223. mysqli_real_escape_string($this->link,$remote_server_id));
  224. return $this->listQuery($query);
  225. }
  226. }
  227. ?>