mysql_database.php 9.2 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270
  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("mysql") )
  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 = mysql_connect($db_host, $db_user, $db_pass);
  41. if ( $this->link === FALSE )
  42. return -11;
  43. if ( mysql_select_db($db_name,$this->link) === FALSE )
  44. return -12;
  45. return TRUE;
  46. }
  47. private function listQuery($query) {
  48. if ( !$this->link ) return FALSE;
  49. ++$this->queries_;
  50. $result = mysql_query($query, $this->link);
  51. if ( mysql_errno($this->link) > 0 )
  52. print mysql_error($this->link);
  53. if ( $result === FALSE )
  54. return FALSE;
  55. if ( mysql_num_rows($result) == 0 )
  56. return FALSE;
  57. $results = array();
  58. while ( $row = mysql_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. mysql_real_escape_string($remote_server_id,$this->link),
  74. mysql_real_escape_string($mysql_name,$this->link),
  75. mysql_real_escape_string($mysql_ip,$this->link),
  76. mysql_real_escape_string($mysql_port,$this->link),
  77. mysql_real_escape_string($mysql_root_passwd,$this->link),
  78. mysql_real_escape_string($privilegies_str,$this->link));
  79. ++$this->queries_;
  80. mysql_query($query,$this->link);
  81. if( mysql_errno($this->link) != 0 )
  82. {
  83. return false;
  84. }
  85. return mysql_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. mysql_real_escape_string($remote_server_id,$this->link),
  95. mysql_real_escape_string($mysql_name,$this->link),
  96. mysql_real_escape_string($mysql_ip,$this->link),
  97. mysql_real_escape_string($mysql_port,$this->link),
  98. mysql_real_escape_string($mysql_root_passwd,$this->link),
  99. mysql_real_escape_string($privilegies_str,$this->link),
  100. mysql_real_escape_string($mysql_server_id,$this->link));
  101. ++$this->queries_;
  102. if ( mysql_query($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. mysql_real_escape_string($id,$this->link));
  116. ++$this->queries_;
  117. $result = mysql_query($query, $this->link);
  118. // If there are no servers then we can stop here.
  119. if ( mysql_num_rows($result) != 1 )
  120. return FALSE;
  121. return mysql_fetch_assoc( $result );
  122. }
  123. public function removeMysqlServer($mysql_server_id){
  124. $mysql_server_id = mysql_real_escape_string($mysql_server_id, $this->link);
  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 = mysql_query($query,$this->link);
  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. mysql_real_escape_string($mysql_server_id,$this->link));
  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. mysql_real_escape_string($mysql_server_id,$this->link),
  148. mysql_real_escape_string($home_id,$this->link),
  149. mysql_real_escape_string($db_user,$this->link),
  150. mysql_real_escape_string($db_passwd,$this->link),
  151. mysql_real_escape_string($db_name,$this->link),
  152. mysql_real_escape_string($enabled,$this->link));
  153. ++$this->queries_;
  154. mysql_query($query,$this->link);
  155. if( mysql_errno($this->link) != 0 )
  156. {
  157. return false;
  158. }
  159. return mysql_insert_id($this->link);
  160. }
  161. public function getMysqlDBbyId($db_id){
  162. $query = sprintf('SELECT * FROM `%1$smysql_databases` NATURAL JOIN `%1$smysql_servers` WHERE db_id = %2$d;',
  163. $this->table_prefix,
  164. mysql_real_escape_string($db_id,$this->link));
  165. $db_info = $this->listQuery($query);
  166. return $db_info[0];
  167. }
  168. public function getMysqlDBsbyHomeId($home_id){
  169. $query = sprintf('SELECT * FROM `%1$smysql_databases` WHERE enabled = 1 AND home_id = %2$d;',
  170. $this->table_prefix,
  171. mysql_real_escape_string($home_id,$this->link));
  172. return $this->listQuery($query);
  173. }
  174. public function getMysqlHomeDBbyId($home_id,$db_id){
  175. $query = sprintf('SELECT * FROM `%1$smysql_databases` NATURAL JOIN `%1$smysql_servers` WHERE home_id = %2$d AND db_id = %3$d;',
  176. $this->table_prefix,
  177. mysql_real_escape_string($home_id,$this->link),
  178. mysql_real_escape_string($db_id,$this->link));
  179. $db_info = $this->listQuery($query);
  180. return $db_info[0];
  181. }
  182. public function editMysqlServerDB($db_id, $home_id, $db_user, $db_passwd, $db_name, $enabled)
  183. {
  184. $query = sprintf("UPDATE `%smysql_databases`
  185. SET `home_id`='%d', `db_user`='%s', `db_passwd`='%s', `db_name`='%s',`enabled`='%d'
  186. WHERE `db_id` = '%d';",
  187. $this->table_prefix,
  188. mysql_real_escape_string($home_id, $this->link),
  189. mysql_real_escape_string($db_user, $this->link),
  190. mysql_real_escape_string($db_passwd, $this->link),
  191. mysql_real_escape_string($db_name, $this->link),
  192. mysql_real_escape_string($enabled, $this->link),
  193. mysql_real_escape_string($db_id, $this->link) );
  194. ++$this->queries_;
  195. mysql_query($query,$this->link);
  196. if( mysql_errno($this->link) != 0 )
  197. return FALSE;
  198. return true;
  199. }
  200. public function removeMysqlServerDB($db_id)
  201. {
  202. $query = sprintf("DELETE FROM `%smysql_databases`
  203. WHERE `db_id` = '%d'",
  204. $this->table_prefix,
  205. mysql_real_escape_string($db_id, $this->link));
  206. ++$this->queries_;
  207. if ( mysql_query($query) === FALSE )
  208. return FALSE;
  209. return TRUE;
  210. }
  211. public function getGameHomesByRemoteServerId($remote_server_id){
  212. $query = sprintf('SELECT %1$sserver_homes.*,%1$sremote_servers.*, %1$sconfig_homes.game_name
  213. FROM `%1$sserver_homes` NATURAL JOIN `%1$sconfig_homes` NATURAL JOIN `%1$sremote_servers` WHERE remote_server_id=%2$s;',
  214. $this->table_prefix,
  215. mysql_real_escape_string($remote_server_id,$this->link));
  216. return $this->listQuery($query);
  217. }
  218. }
  219. ?>