PageRenderTime 73ms CodeModel.GetById 33ms RepoModel.GetById 0ms app.codeStats 1ms

/includes/user.php

https://bitbucket.org/capi/ogspy
PHP | 2815 lines | 2250 code | 310 blank | 255 comment | 462 complexity | 717bcadf4e5f013a917a6ef8c6a57013 MD5 | raw file

Large files files are truncated, but you can click here to view the full file

  1. <?php
  2. /**
  3. * user.php Fonctions concernant les utilisateurs
  4. * @author Kyser
  5. * @package OGSpy
  6. * @subpackage user
  7. * @copyright Copyright &copy; 2007, http://ogsteam.fr/
  8. * @modified $Date: 2012-08-29 00:22:35 +0200 (Wed, 29 Aug 2012) $
  9. * @author Kyser
  10. * @link $HeadURL: http://svn.ogsteam.fr/trunk/ogspy/includes/user.php $
  11. * @version 3.04b ( $Rev: 7700 $ )
  12. * $Id: user.php 7700 2012-08-28 22:22:35Z darknoon $
  13. */
  14. if (!defined('IN_SPYOGAME')) {
  15. die("Hacking attempt");
  16. }
  17. /**
  18. * Verification des droits utilisateurs sur une action avec redirection le cas echeant
  19. * @param string $action Action verifie
  20. * @param int $user_id identificateur optionnel de l'utilisateur teste
  21. */
  22. function user_check_auth($action, $user_id = null)
  23. {
  24. global $user_data, $user_auth;
  25. switch ($action) {
  26. case "user_create":
  27. case "usergroup_manage":
  28. if ($user_data["user_admin"] != 1 && $user_data["user_coadmin"] != 1 && $user_data["management_user"] !=
  29. 1)
  30. redirection("index.php?action=message&id_message=forbidden&info");
  31. break;
  32. case "user_update":
  33. if ($user_data["user_admin"] != 1 && $user_data["user_coadmin"] != 1 && $user_data["management_user"] !=
  34. 1)
  35. redirection("index.php?action=message&id_message=forbidden&info");
  36. $info_user = user_get($user_id);
  37. if ($info_user === false)
  38. redirection("index.php?action=message&id_message=deleteuser_failed&info");
  39. if (($user_data["user_admin"] != 1 && $user_data["user_coadmin"] != 1 && $user_data["management_user"] !=
  40. 1) || ($info_user[0]["user_admin"] == 1) || (($user_data["user_coadmin"] == 1) &&
  41. ($info_user[0]["user_coadmin"] == 1)) || (($user_data["user_coadmin"] != 1 && $user_data["management_user"] ==
  42. 1) && ($info_user[0]["user_coadmin"] == 1 || $info_user[0]["management_user"] ==
  43. 1))) {
  44. redirection("index.php?action=message&id_message=forbidden&info");
  45. }
  46. break;
  47. default:
  48. redirection("index.php?action=message&id_message=errorfatal&info");
  49. }
  50. }
  51. /**
  52. * Login d'un utilisateur
  53. * @global string $pub_login
  54. * @global string $pub_password
  55. * @global string $pub_goto
  56. * @todo Query : "select user_id, user_active from " . TABLE_USER .
  57. " where user_name = '" . $db->sql_escape_string($pub_login) .
  58. "' and user_password = '" . md5(sha1($pub_password)) . "'";
  59. * @todo Query : "select user_lastvisit from " . TABLE_USER . " where user_id = " . $user_id;
  60. * @todo Query : "update " . TABLE_USER . " set user_lastvisit = " . time() ." where user_id = " . $user_id;
  61. * @todo Query : "update " . TABLE_STATISTIC ." set statistic_value = statistic_value + 1" " where statistic_name = 'connection_server'";
  62. * @todo Query : "insert ignore into " . TABLE_STATISTIC ." values ('connection_server', '1')";
  63. */
  64. function user_login()
  65. {
  66. global $db;
  67. global $pub_login, $pub_password, $pub_goto, $url_append;
  68. if (!check_var($pub_login, "Pseudo_Groupname") || !check_var($pub_password,
  69. "Password") || !check_var($pub_goto, "Special", "#^[\w=&%+]+$#")) {
  70. redirection("index.php?action=message&id_message=errordata&info");
  71. }
  72. if (!isset($pub_login) || !isset($pub_password)) {
  73. redirection("index.php?action=message&id_message=errorfatal&info");
  74. } else {
  75. $request = "select user_id, user_active from " . TABLE_USER .
  76. " where user_name = '" . $db->sql_escape_string($pub_login) .
  77. "' and user_password = '" . md5(sha1($pub_password)) . "'";
  78. $result = $db->sql_query($request);
  79. if (list($user_id, $user_active) = $db->sql_fetch_row($result)) {
  80. if ($user_active == 1) {
  81. $request = "select user_lastvisit from " . TABLE_USER . " where user_id = " . $user_id;
  82. $result = $db->sql_query($request);
  83. list($lastvisit) = $db->sql_fetch_row($result);
  84. $request = "update " . TABLE_USER . " set user_lastvisit = " . time() .
  85. " where user_id = " . $user_id;
  86. $db->sql_query($request);
  87. $request = "update " . TABLE_STATISTIC .
  88. " set statistic_value = statistic_value + 1";
  89. $request .= " where statistic_name = 'connection_server'";
  90. $db->sql_query($request);
  91. if ($db->sql_affectedrows() == 0) {
  92. $request = "insert ignore into " . TABLE_STATISTIC .
  93. " values ('connection_server', '1')";
  94. $db->sql_query($request);
  95. }
  96. session_set_user_id($user_id, $lastvisit);
  97. log_('login');
  98. if(!isset($url_append)){
  99. $url_append="";
  100. }
  101. redirection("index.php?action=" . $pub_goto . "" . $url_append);
  102. } else {
  103. redirection("index.php?action=message&id_message=account_lock&info");
  104. }
  105. } else {
  106. redirection("index.php?action=message&id_message=login_wrong&info");
  107. }
  108. }
  109. }
  110. /**
  111. * Login d'un utilisateur avec redirection
  112. * @global string $pub_login
  113. * @global string $pub_password
  114. * @global string $pub_goto
  115. */
  116. function user_login_redirection()
  117. {
  118. global $pub_login, $pub_password, $pub_goto, $url_append;
  119. if($pub_goto=='galaxy'){
  120. global $pub_galaxy, $pub_system;
  121. $url_append="&galaxy=" . $pub_galaxy . "&system=" . $pub_system;
  122. user_login();
  123. } else {
  124. user_login();
  125. }
  126. }
  127. /**
  128. * Deconnection utilisateur
  129. */
  130. function user_logout()
  131. {
  132. log_("logout");
  133. session_close();
  134. redirection("index.php");
  135. }
  136. /**
  137. * Verification de la validite des inputs utilisateurs
  138. * @param string $type Type de variable verifie (pseudo,groupname,password,galaxy,system)
  139. * @param string $string La chaine teste
  140. * @return false|string
  141. */
  142. function string_check($type, $string)
  143. {
  144. if ($type == "pseudo" || $type == "groupname") {
  145. $length_min = 3;
  146. $length_max = 15;
  147. } elseif ($type = "password") {
  148. $length_min = 6;
  149. $length_max = 15;
  150. } elseif ($type = "galaxy") {
  151. $length_min = 1;
  152. $length_max = 999;
  153. } elseif ($type = "system" || $type = "systems") {
  154. $length_min = 1;
  155. $length_max = 999;
  156. }
  157. $string = trim($string);
  158. if (strlen($string) < $length_min || strlen($string) > $length_max) {
  159. return false;
  160. }
  161. return $string;
  162. }
  163. /**
  164. * Modification des droits ogspy d'un utilisateur par l'admin
  165. */
  166. function admin_user_set()
  167. {
  168. global $user_data;
  169. global $pub_user_id, $pub_active, $pub_user_coadmin, $pub_management_user, $pub_management_ranking;
  170. if (!check_var($pub_user_id, "Num") || !check_var($pub_active, "Num") || !
  171. check_var($pub_user_coadmin, "Num") || !check_var($pub_management_user, "Num") ||
  172. !check_var($pub_management_ranking, "Num")) {
  173. redirection("index.php?action=message&id_message=errordata&info");
  174. }
  175. if (!isset($pub_user_id) || !isset($pub_active)) {
  176. redirection("index.php?action=message&id_message=admin_modifyuser_failed&info");
  177. }
  178. //Vérification des droits
  179. user_check_auth("user_update", $pub_user_id);
  180. if ($user_data["user_admin"] == 1) {
  181. if (!isset($pub_user_coadmin) || !isset($pub_management_user) || !isset($pub_management_ranking)) {
  182. redirection("index.php?action=message&id_message=admin_modifyuser_failed&info");
  183. }
  184. } elseif ($user_data["user_coadmin"] == 1) {
  185. $pub_user_coadmin = null;
  186. if (!isset($pub_management_user) || !isset($pub_management_ranking)) {
  187. redirection("index.php?action=message&id_message=admin_modifyuser_failed&info");
  188. }
  189. } else {
  190. $pub_user_coadmin = $pub_management_user = null;
  191. }
  192. if (user_get($pub_user_id) === false) {
  193. redirection("index.php?action=message&id_message=admin_modifyuser_failed&info");
  194. }
  195. user_set_grant($pub_user_id, null, $pub_active, $pub_user_coadmin, $pub_management_user,
  196. $pub_management_ranking);
  197. redirection("index.php?action=administration&subaction=member");
  198. }
  199. /**
  200. * Generation d'un mot de passe par l'admin pour un utilisateur
  201. */
  202. function admin_regeneratepwd()
  203. {
  204. global $user_data;
  205. global $pub_user_id; // $pub_new_pass;
  206. $pass_id = "pub_pass_" . $pub_user_id;
  207. global $$pass_id;
  208. $new_pass = $$pass_id;
  209. if (!check_var($pub_user_id, "Num")) {
  210. redirection("index.php?action=message&id_message=errordata&info");
  211. }
  212. if (!isset($pub_user_id)) {
  213. redirection("index.php?action=message&id_message=errorfatal&info");
  214. }
  215. user_check_auth("user_update", $pub_user_id);
  216. if (user_get($pub_user_id) === false) {
  217. redirection("index.php?action=message&id_message=regeneratepwd_failed&info");
  218. }
  219. if ($new_pass != "") {
  220. $password = $new_pass;
  221. } else {
  222. $password = password_generator();
  223. }
  224. user_set_general($pub_user_id, null, $password);
  225. $info = $pub_user_id . ":" . $password;
  226. log_("regeneratepwd", $pub_user_id);
  227. redirection("index.php?action=message&id_message=regeneratepwd_success&info=" .
  228. $info);
  229. }
  230. /**
  231. * Modification du profil par un utilisateur
  232. * @todo Query : x11
  233. */
  234. function member_user_set()
  235. {
  236. global $db, $user_data, $user_technology;
  237. global $pub_pseudo, $pub_old_password, $pub_new_password, $pub_new_password2, $pub_galaxy,
  238. $pub_system, $pub_skin, $pub_disable_ip_check, $pub_off_amiral, $pub_off_ingenieur,
  239. $pub_off_geologue, $pub_off_technocrate, $pub_pseudo_ingame;
  240. if (!check_var($pub_pseudo, "Text") || !check_var($pub_old_password, "Text") ||
  241. !check_var($pub_new_password, "Text") || !check_var($pub_new_password2,
  242. "CharNum") || !check_var($pub_galaxy, "Num") || !check_var($pub_system, "Num") ||
  243. !check_var($pub_skin, "URL") || !check_var($pub_disable_ip_check, "Num") || !
  244. check_var($pub_pseudo_ingame, "Pseudo_ingame")) {
  245. redirection("index.php?action=message&id_message=errordata&info");
  246. }
  247. $user_id = $user_data["user_id"];
  248. $user_info = user_get($user_id);
  249. $user_empire = user_get_empire();
  250. $user_technology = $user_empire["technology"];
  251. $password_validated = null;
  252. if (!isset($pub_pseudo) || !isset($pub_old_password) || !isset($pub_new_password) ||
  253. !isset($pub_new_password2) || !isset($pub_galaxy) || !isset($pub_system) || !
  254. isset($pub_skin)) {
  255. redirection("index.php?action=message&id_message=member_modifyuser_failed&info");
  256. }
  257. if ($pub_old_password != "" || $pub_new_password != "" || $pub_new_password2 !=
  258. "") {
  259. if ($pub_old_password == "" || $pub_new_password == "" || $pub_new_password != $pub_new_password2) {
  260. redirection("index.php?action=message&id_message=member_modifyuser_failed_passwordcheck&info");
  261. }
  262. if (md5(sha1($pub_old_password)) != $user_info[0]["user_password"]) {
  263. redirection("index.php?action=message&id_message=member_modifyuser_failed_passwordcheck&info");
  264. }
  265. if (!check_var($pub_new_password, "Password")) {
  266. redirection("index.php?action=message&id_message=member_modifyuser_failed_password&info");
  267. }
  268. }
  269. if (!check_var($pub_pseudo, "Pseudo_Groupname")) {
  270. redirection("index.php?action=message&id_message=member_modifyuser_failed_pseudo&info");
  271. }
  272. //pseudo ingame
  273. if ($user_data["user_stat_name"] !== $pub_pseudo_ingame) {
  274. user_set_stat_name($pub_pseudo_ingame);
  275. }
  276. //compte amiral
  277. if ($user_data['off_amiral'] == "0" && $pub_off_amiral == 1) {
  278. $db->sql_query("UPDATE " . TABLE_USER .
  279. " SET `off_amiral` = '1' WHERE `user_id` = " . $user_id);
  280. }
  281. if ($user_data['off_amiral'] == 1 && (is_null($pub_off_amiral) || $pub_off_amiral !=
  282. 1)) {
  283. $db->sql_query("UPDATE " . TABLE_USER .
  284. " SET `off_amiral` = '0' WHERE `user_id` = " . $user_id);
  285. }
  286. //compte ingenieur
  287. if ($user_data['off_ingenieur'] == "0" && $pub_off_ingenieur == 1) {
  288. $db->sql_query("UPDATE " . TABLE_USER .
  289. " SET `off_ingenieur` = '1' WHERE `user_id` = " . $user_id);
  290. }
  291. if ($user_data['off_ingenieur'] == 1 && (is_null($pub_off_ingenieur) || $pub_off_ingenieur !=
  292. 1)) {
  293. $db->sql_query("UPDATE " . TABLE_USER .
  294. " SET `off_ingenieur` = '0' WHERE `user_id` = " . $user_id);
  295. }
  296. //compte geologue
  297. if ($user_data['off_geologue'] == "0" && $pub_off_geologue == 1) {
  298. $db->sql_query("UPDATE " . TABLE_USER .
  299. " SET `off_geologue` = '1' WHERE `user_id` = " . $user_id);
  300. }
  301. if ($user_data['off_geologue'] == 1 && (is_null($pub_off_geologue) || $pub_off_geologue !=
  302. 1)) {
  303. $db->sql_query("UPDATE " . TABLE_USER .
  304. " SET `off_geologue` = '0' WHERE `user_id` = " . $user_id);
  305. }
  306. //compte technocrate
  307. if ($user_data['off_technocrate'] == "0" && $pub_off_technocrate == 1) {
  308. $db->sql_query("UPDATE " . TABLE_USER .
  309. " SET `off_technocrate` = '1' WHERE `user_id` = " . $user_id);
  310. $tech = $user_technology['Esp'] + 2;
  311. $db->sql_query("UPDATE " . TABLE_USER_TECHNOLOGY . " SET `Esp` = " . $tech .
  312. " WHERE `user_id` = " . $user_id);
  313. }
  314. if ($user_data['off_technocrate'] == 1 && (is_null($pub_off_technocrate) || $pub_off_technocrate !=
  315. 1)) {
  316. $db->sql_query("UPDATE " . TABLE_USER .
  317. " SET `off_technocrate` = '0' WHERE `user_id` = " . $user_id);
  318. $tech = $user_technology['Esp'] - 2;
  319. $db->sql_query("UPDATE " . TABLE_USER_TECHNOLOGY . " SET `Esp` = " . $tech .
  320. " WHERE `user_id` = " . $user_id);
  321. }
  322. //Contrôle que le pseudo ne soit pas déjŕ utilisé
  323. $request = "select * from " . TABLE_USER . " where user_name = '" .
  324. $db->sql_escape_string($pub_pseudo) . "' and user_id <> " . $user_id;
  325. $result = $db->sql_query($request);
  326. if ($db->sql_numrows($result) != 0) {
  327. redirection("index.php?action=message&id_message=member_modifyuser_failed_pseudolocked&info");
  328. }
  329. if (is_null($pub_disable_ip_check) || $pub_disable_ip_check != 1)
  330. $pub_disable_ip_check = 0;
  331. user_set_general($user_id, $pub_pseudo, $pub_new_password, null, $pub_galaxy, $pub_system,
  332. $pub_skin, $pub_disable_ip_check);
  333. redirection("index.php?action=profile");
  334. }
  335. /**
  336. * Entree en BDD de donnees utilisateur
  337. * @todo Query x1
  338. */
  339. function user_set_general($user_id, $user_name = null, $user_password = null, $user_lastvisit = null,
  340. $user_galaxy = null, $user_system = null, $user_skin = null, $disable_ip_check = null)
  341. {
  342. global $db, $user_data, $server_config;
  343. if (!isset($user_id)) {
  344. redirection("index.php?action=message&id_message=errorfatal&info");
  345. }
  346. if (!empty($user_galaxy)) {
  347. $user_galaxy = intval($user_galaxy);
  348. if ($user_galaxy < 1 || $user_galaxy > intval($server_config['num_of_galaxies']))
  349. $user_galaxy = 1;
  350. }
  351. if (!empty($user_system)) {
  352. $user_system = intval($user_system);
  353. if ($user_system < 1 || $user_system > intval($server_config['num_of_systems']))
  354. $user_system = 1;
  355. }
  356. $update = "";
  357. //Pseudo et mot de passe
  358. if (!empty($user_name))
  359. $update .= "user_name = '" . $db->sql_escape_string($user_name) . "'";
  360. if (!empty($user_password))
  361. $update .= ((strlen($update) > 0) ? ", " : "") . "user_password = '" . md5(sha1
  362. ($user_password)) . "'";
  363. //Galaxy et systčme solaire du membre
  364. if (!empty($user_galaxy))
  365. $update .= ((strlen($update) > 0) ? ", " : "") . "user_galaxy = '" . $user_galaxy .
  366. "'";
  367. if (!empty($user_system))
  368. $update .= ((strlen($update) > 0) ? ", " : "") . "user_system = '" . $user_system .
  369. "'";
  370. //Derničre visite
  371. if (!empty($user_lastvisit))
  372. $update .= ((strlen($update) > 0) ? ", " : "") . "user_lastvisit = '" . $user_lastvisit .
  373. "'";
  374. //Skin
  375. if (!is_null($user_skin)) {
  376. if (strlen($user_skin) > 0 && substr($user_skin, strlen($user_skin) - 1) != "/")
  377. $user_skin .= "/";
  378. $update .= ((strlen($update) > 0) ? ", " : "") . "user_skin = '" .
  379. $db->sql_escape_string($user_skin) . "'";
  380. }
  381. //Désactivation de la vérification de l'adresse ip
  382. if (!is_null($disable_ip_check))
  383. $update .= ((strlen($update) > 0) ? ", " : "") . "disable_ip_check = '" . $disable_ip_check .
  384. "'";
  385. $request = "update " . TABLE_USER . " set " . $update . " where user_id = " . $user_id;
  386. $db->sql_query($request);
  387. if ($user_id == $user_data['user_id']) {
  388. log_("modify_account");
  389. } else {
  390. log_("modify_account_admin", $user_id);
  391. }
  392. }
  393. /**
  394. * Enregistrement des droits et status utilisateurs
  395. * @todo Query : x2
  396. */
  397. function user_set_grant($user_id, $user_admin = null, $user_active = null, $user_coadmin = null,
  398. $management_user = null, $management_ranking = null)
  399. {
  400. global $db, $user_data;
  401. if (!isset($user_id)) {
  402. redirection("index.php?action=message&id_message=errorfatal&info");
  403. }
  404. //Vérification des droits
  405. user_check_auth("user_update", $user_id);
  406. $update = "";
  407. //Activation membre
  408. if (!is_null($user_active)) {
  409. $update .= ((strlen($update) > 0) ? ", " : "") . "user_active = '" . intval($user_active) .
  410. "'";
  411. if (intval($user_active) == 0) {
  412. $request = "delete from " . TABLE_SESSIONS . " where session_user_id = " . $user_id;
  413. $db->sql_query($request);
  414. }
  415. }
  416. //Co-administration
  417. if (!is_null($user_coadmin)) {
  418. $update .= ((strlen($update) > 0) ? ", " : "") . "user_coadmin = '" . intval($user_coadmin) .
  419. "'";
  420. }
  421. //Gestion des membres
  422. if (!is_null($management_user)) {
  423. $update .= ((strlen($update) > 0) ? ", " : "") . "management_user = '" . intval($management_user) .
  424. "'";
  425. }
  426. //Gestion des classements
  427. if (!is_null($management_ranking)) {
  428. $update .= ((strlen($update) > 0) ? ", " : "") . "management_ranking = '" .
  429. intval($management_ranking) . "'";
  430. }
  431. $request = "update " . TABLE_USER . " set " . $update . " where user_id = " . $user_id;
  432. $db->sql_query($request);
  433. if ($user_id == $user_data['user_id']) {
  434. log_("modify_account");
  435. } else {
  436. log_("modify_account_admin", $user_id);
  437. }
  438. }
  439. /**
  440. * Enregistrement des statistiques utilisateurs
  441. * @todo Query : x1
  442. */
  443. function user_set_stat($planet_added_web = null, $planet_added_ogs = null, $search = null,
  444. $spy_added_web = null, $spy_added_ogs = null, $rank_added_web = null, $rank_added_ogs = null,
  445. $planet_exported = null, $spy_exported = null, $rank_exported = null)
  446. {
  447. global $db, $user_data;
  448. $update = "";
  449. //Statistiques envoi systčmes solaires et rapports d'espionnage
  450. if (!is_null($planet_added_web))
  451. $update .= ((strlen($update) > 0) ? ", " : "") .
  452. "planet_added_web = planet_added_web + " . $planet_added_web;
  453. if (!is_null($planet_added_ogs))
  454. $update .= ((strlen($update) > 0) ? ", " : "") .
  455. "planet_added_ogs = planet_added_ogs + " . $planet_added_ogs;
  456. if (!is_null($search))
  457. $update .= ((strlen($update) > 0) ? ", " : "") . "search = search + " . $search;
  458. if (!is_null($spy_added_web))
  459. $update .= ((strlen($update) > 0) ? ", " : "") .
  460. "spy_added_web = spy_added_web + " . $spy_added_web;
  461. if (!is_null($spy_added_ogs))
  462. $update .= ((strlen($update) > 0) ? ", " : "") .
  463. "spy_added_ogs = spy_added_ogs + " . $spy_added_ogs;
  464. if (!is_null($rank_added_web))
  465. $update .= ((strlen($update) > 0) ? ", " : "") .
  466. "rank_added_web = rank_added_web + " . $rank_added_web;
  467. if (!is_null($rank_added_ogs))
  468. $update .= ((strlen($update) > 0) ? ", " : "") .
  469. "rank_added_ogs = rank_added_ogs + " . $rank_added_ogs;
  470. if (!is_null($planet_exported))
  471. $update .= ((strlen($update) > 0) ? ", " : "") .
  472. "planet_exported = planet_exported + " . $planet_exported;
  473. if (!is_null($spy_exported))
  474. $update .= ((strlen($update) > 0) ? ", " : "") .
  475. "spy_exported = spy_exported + " . $spy_exported;
  476. if (!is_null($rank_exported))
  477. $update .= ((strlen($update) > 0) ? ", " : "") .
  478. "rank_exported = rank_exported + " . $rank_exported;
  479. $request = "update " . TABLE_USER . " set " . $update . " where user_id = " . $user_data["user_id"];
  480. $db->sql_query($request);
  481. }
  482. /**
  483. * Recuperation d'une ligne d'information utilisateur
  484. * @param int $user_id Identificateur optionnel d'1 utilisateur specifique
  485. * @return Array Liste des utilisateurs ou de l'utilisateur specifique
  486. * @comment Pourrait peut etre avantageusement remplace par select * from TABLE_USER
  487. * @comment pour les eventuels champs supplementaires
  488. * @todo Query : x1
  489. */
  490. function user_get($user_id = false)
  491. {
  492. global $db;
  493. $request = "select user_id, user_name, user_password, user_active, user_regdate, user_lastvisit," .
  494. " user_galaxy, user_system, user_admin, user_coadmin, management_user, management_ranking, disable_ip_check" .
  495. " from " . TABLE_USER;
  496. if ($user_id !== false) {
  497. $request .= " where user_id = " . $user_id;
  498. }
  499. $request .= " order by user_name";
  500. $result = $db->sql_query($request);
  501. $info_users = array();
  502. while ($row = $db->sql_fetch_assoc($result)) {
  503. $info_users[] = $row;
  504. }
  505. if (sizeof($info_users) == 0) {
  506. return false;
  507. }
  508. return $info_users;
  509. }
  510. /**
  511. * Recuperation des droits d'un utilisateur
  512. * @param int $user_id Identificateur de l'utilisateur demande
  513. * @todo Query : x1
  514. * @return Array Tableau des droits
  515. */
  516. function user_get_auth($user_id)
  517. {
  518. global $db;
  519. $user_info = user_get($user_id);
  520. $user_info = $user_info[0];
  521. if ($user_info["user_admin"] == 1 || $user_info["user_coadmin"] == 1) {
  522. $user_auth = array("server_set_system" => 1, "server_set_spy" => 1,
  523. "server_set_rc" => 1, "server_set_ranking" => 1, "server_show_positionhided" =>
  524. 1, "ogs_connection" => 1, "ogs_set_system" => 1, "ogs_get_system" => 1,
  525. "ogs_set_spy" => 1, "ogs_get_spy" => 1, "ogs_set_ranking" => 1,
  526. "ogs_get_ranking" => 1);
  527. return $user_auth;
  528. }
  529. $request = "select server_set_system, server_set_spy, server_set_rc, server_set_ranking, server_show_positionhided,";
  530. $request .= " ogs_connection, ogs_set_system, ogs_get_system, ogs_set_spy, ogs_get_spy, ogs_set_ranking, ogs_get_ranking";
  531. $request .= " from " . TABLE_GROUP . " g, " . TABLE_USER_GROUP . " u";
  532. $request .= " where g.group_id = u.group_id";
  533. $request .= " and user_id = " . $user_id;
  534. $result = $db->sql_query($request);
  535. if ($db->sql_numrows($result) > 0) {
  536. $user_auth = array("server_set_system" => 0, "server_set_spy" => 0,
  537. "server_set_rc" => 0, "server_set_ranking" => 0, "server_show_positionhided" =>
  538. 0, "ogs_connection" => 0, "ogs_set_system" => 0, "ogs_get_system" => 0,
  539. "ogs_set_spy" => 0, "ogs_get_spy" => 0, "ogs_set_ranking" => 0,
  540. "ogs_get_ranking" => 0);
  541. while ($row = $db->sql_fetch_assoc($result)) {
  542. if ($row["server_set_system"] == 1)
  543. $user_auth["server_set_system"] = 1;
  544. if ($row["server_set_spy"] == 1)
  545. $user_auth["server_set_spy"] = 1;
  546. if ($row["server_set_rc"] == 1)
  547. $user_auth["server_set_rc"] = 1;
  548. if ($row["server_set_ranking"] == 1)
  549. $user_auth["server_set_ranking"] = 1;
  550. if ($row["server_show_positionhided"] == 1)
  551. $user_auth["server_show_positionhided"] = 1;
  552. if ($row["ogs_connection"] == 1)
  553. $user_auth["ogs_connection"] = 1;
  554. if ($row["ogs_set_system"] == 1)
  555. $user_auth["ogs_set_system"] = 1;
  556. if ($row["ogs_get_system"] == 1)
  557. $user_auth["ogs_get_system"] = 1;
  558. if ($row["ogs_set_spy"] == 1)
  559. $user_auth["ogs_set_spy"] = 1;
  560. if ($row["ogs_get_spy"] == 1)
  561. $user_auth["ogs_get_spy"] = 1;
  562. if ($row["ogs_set_ranking"] == 1)
  563. $user_auth["ogs_set_ranking"] = 1;
  564. if ($row["ogs_get_ranking"] == 1)
  565. $user_auth["ogs_get_ranking"] = 1;
  566. }
  567. } else {
  568. $user_auth = array("server_set_system" => 0, "server_set_spy" => 0,
  569. "server_set_ranking" => 0, "server_show_positionhided" => 0, "ogs_connection" =>
  570. 0, "ogs_set_system" => 0, "ogs_get_system" => 0, "ogs_set_spy" => 0,
  571. "ogs_get_spy" => 0, "ogs_set_ranking" => 0, "ogs_get_ranking" => 0);
  572. }
  573. return $user_auth;
  574. }
  575. /**
  576. * Creation d'un utilisateur a partir des donnees du formulaire admin
  577. * @comment redirection si erreur de type de donnee
  578. * @todo Query : x3
  579. */
  580. function user_create()
  581. {
  582. global $db, $user_data;
  583. global $pub_pseudo, $pub_user_id, $pub_active, $pub_user_coadmin, $pub_management_user,
  584. $pub_management_ranking, $pub_group_id, $pub_pass;
  585. if (!check_var($pub_pseudo, "Pseudo_Groupname")) {
  586. redirection("index.php?action=message&id_message=errordata&info=1");
  587. }
  588. if (!isset($pub_pseudo)) {
  589. redirection("index.php?action=message&id_message=createuser_failed_general&info");
  590. }
  591. //Vérification des droits
  592. user_check_auth("user_create");
  593. if (!check_var($pub_pseudo, "Pseudo_Groupname")) {
  594. redirection("index.php?action=message&id_message=createuser_failed_pseudo&info=" .
  595. $pub_pseudo);
  596. }
  597. if (!check_var($pub_pass, "Password")) {
  598. redirection("index.php?action=message&id_message=createuser_failed_password&info=" .
  599. $pub_pseudo);
  600. }
  601. if ($pub_pass != "") {
  602. $password = $pub_pass;
  603. } else {
  604. $password = password_generator();
  605. }
  606. //$request = "select user_id from ".TABLE_USER." where user_name = '". $db->sql_escape_string($pub_pseudo)."'";
  607. $request = "select user_id from " . TABLE_USER . " where user_name = '" . $pub_pseudo .
  608. "'";
  609. $result = $db->sql_query($request);
  610. if ($db->sql_numrows($result) == 0) {
  611. //$request = "insert into ".TABLE_USER." (user_name, user_password, user_regdate, user_active)".
  612. //" values ('". $db->sql_escape_string($pub_pseudo)."', '".md5(sha1($password))."', ".time().", '1')";
  613. $request = "insert into " . TABLE_USER .
  614. " (user_name, user_password, user_regdate, user_active)" . " values ('" . $pub_pseudo .
  615. "', '" . md5(sha1($password)) . "', " . time() . ", '1')";
  616. $db->sql_query($request);
  617. $user_id = $db->sql_insertid();
  618. $request = "insert into " . TABLE_USER_GROUP . " (group_id, user_id) values (" .
  619. $pub_group_id . ", " . $user_id . ")";
  620. $db->sql_query($request);
  621. $info = $user_id . ":" . $password;
  622. log_("create_account", $user_id);
  623. user_set_grant($user_id, null, $pub_active, $pub_user_coadmin, $pub_management_user,
  624. $pub_management_ranking);
  625. redirection("index.php?action=message&id_message=createuser_success&info=" . $info);
  626. } else {
  627. redirection("index.php?action=message&id_message=createuser_failed_pseudolocked&info=" .
  628. $pub_pseudo);
  629. }
  630. }
  631. /**
  632. * Suppression d'un utilisateur ($pub_user_id)
  633. * @todo Query : x12
  634. */
  635. function user_delete()
  636. {
  637. global $db, $user_data;
  638. global $pub_user_id;
  639. if (!check_var($pub_user_id, "Num")) {
  640. redirection("index.php?action=message&id_message=errordata&info");
  641. }
  642. if (!isset($pub_user_id)) {
  643. redirection("index.php?action=message&id_message=createuser_failed_general&info");
  644. }
  645. user_check_auth("user_update", $pub_user_id);
  646. log_("delete_account", $pub_user_id);
  647. $request = "delete from " . TABLE_USER . " where user_id = " . $pub_user_id;
  648. $db->sql_query($request);
  649. $request = "delete from " . TABLE_USER_GROUP . " where user_id = " . $pub_user_id;
  650. $db->sql_query($request);
  651. $request = "delete from " . TABLE_USER_BUILDING . " where user_id = " . $pub_user_id;
  652. $db->sql_query($request);
  653. $request = "delete from " . TABLE_USER_FAVORITE . " where user_id = " . $pub_user_id;
  654. $db->sql_query($request);
  655. $request = "delete from " . TABLE_USER_DEFENCE . " where user_id = " . $pub_user_id;
  656. $db->sql_query($request);
  657. $request = "delete from " . TABLE_USER_SPY . " where user_id = " . $pub_user_id;
  658. $db->sql_query($request);
  659. $request = "delete from " . TABLE_USER_TECHNOLOGY . " where user_id = " . $pub_user_id;
  660. $db->sql_query($request);
  661. $request = "update " . TABLE_RANK_PLAYER_FLEET .
  662. " set sender_id = 0 where sender_id = " . $pub_user_id;
  663. $db->sql_query($request);
  664. $request = "update " . TABLE_RANK_PLAYER_POINTS .
  665. " set sender_id = 0 where sender_id = " . $pub_user_id;
  666. $db->sql_query($request);
  667. $request = "update " . TABLE_RANK_PLAYER_RESEARCH .
  668. " set sender_id = 0 where sender_id = " . $pub_user_id;
  669. $db->sql_query($request);
  670. $request = "update " . TABLE_UNIVERSE .
  671. " set last_update_user_id = 0 where last_update_user_id = " . $pub_user_id;
  672. $db->sql_query($request);
  673. session_close($pub_user_id);
  674. redirection("index.php?action=administration&subaction=member");
  675. }
  676. /**
  677. * Recuperation des statistiques
  678. * @todo Query : x1
  679. */
  680. function user_statistic()
  681. {
  682. global $db;
  683. $request = "select user_id, user_name, planet_added_web, planet_added_ogs, search, spy_added_web, spy_added_ogs, rank_added_web, rank_added_ogs, planet_exported, spy_exported, rank_exported, xtense_type, xtense_version";
  684. $request .= " from " . TABLE_USER .
  685. " order by (planet_added_web + planet_added_ogs) desc";
  686. $result = $db->sql_query($request);
  687. $user_statistic = array();
  688. while ($row = $db->sql_fetch_assoc($result)) {
  689. $here = "";
  690. $request = "select session_ogs from " . TABLE_SESSIONS .
  691. " where session_user_id = " . $row["user_id"];
  692. $result_2 = $db->sql_query($request);
  693. if ($db->sql_numrows($result_2) > 0) {
  694. $here = "(*)";
  695. list($session_ogs) = $db->sql_fetch_row($result_2);
  696. if ($session_ogs == 1)
  697. $here = "(**)";
  698. }
  699. $user_statistic[] = array_merge($row, array("here" => $here));
  700. }
  701. return $user_statistic;
  702. }
  703. /**
  704. * Enregistrement des donnees Empires d'un utilisateur
  705. */
  706. function user_set_empire()
  707. {
  708. global $pub_typedata, $pub_data, $pub_planet_id, $pub_planet_name, $pub_fields,
  709. $pub_coordinates, $pub_temperature_min, $pub_temperature_max, $pub_satellite;
  710. if (!isset($pub_typedata) || !isset($pub_data)) {
  711. redirection("index.php?action=message&id_message=errorfatal&info");
  712. }
  713. switch ($pub_typedata) {
  714. case "B":
  715. if (!isset($pub_planet_name) || !isset($pub_fields) || !isset($pub_coordinates) ||
  716. !isset($pub_temperature_min) || !isset($pub_temperature_max) || !isset($pub_satellite)) {
  717. redirection("index.php?action=message&id_message=errorfatal&info");
  718. }
  719. user_set_building($pub_data, $pub_planet_id, $pub_planet_name, $pub_fields, $pub_coordinates,
  720. $pub_temperature_min, $pub_temperature_max, $pub_satellite);
  721. break;
  722. case "T":
  723. user_set_technology($pub_data);
  724. break;
  725. case "D":
  726. if (!isset($pub_planet_name) || !isset($pub_fields) || !isset($pub_coordinates) ||
  727. !isset($pub_temperature_min) || !isset($pub_temperature_max) || !isset($pub_satellite)) {
  728. redirection("index.php?action=message&id_message=errorfatal&info");
  729. }
  730. user_set_defence($pub_data, $pub_planet_id, $pub_planet_name, $pub_fields, $pub_coordinates,
  731. $pub_temperature_min, $pub_temperature_max, $pub_satellite);
  732. break;
  733. case "E":
  734. user_set_all_empire($pub_data);
  735. break;
  736. default:
  737. redirection("index.php?action=message&id_message=errorfatal&info");
  738. break;
  739. }
  740. redirection("index.php?action=home&subaction=empire");
  741. }
  742. /**
  743. * Enregistrement de toutes les données empires
  744. */
  745. function user_set_all_empire($data)
  746. {
  747. global $db, $user_data;
  748. global $pub_view;
  749. require_once ("parameters/lang_empire.php");
  750. $data = str_replace("-", "0", $data);
  751. $data = str_replace(".", "", $data);
  752. $data = stripcslashes($data);
  753. $lines = explode(chr(10), $data);
  754. $OK = false;
  755. $etape = "";
  756. $planetes_total_row = false;
  757. foreach ($lines as $line) {
  758. $arr = array();
  759. $line = trim($line);
  760. if ($line == "Vue d'ensemble de votre empire") {
  761. $OK = true;
  762. continue;
  763. }
  764. if ($OK) {
  765. if (preg_match("#^Coordonnées\s+\[(.*)\]$#", $line, $arr)) {
  766. $coordonnees = preg_split("/\]\s+\[/", $arr[1]);
  767. $planetes_total_row = sizeof($coordonnees) + 1;
  768. if ($planetes_total_row > 10)
  769. return false;
  770. $link_building = array($lang_building["M"] => "M", $lang_building["C"] => "C", $lang_building["D"] =>
  771. "D", $lang_building["CES"] => "CES", $lang_building["CEF"] => "CEF", $lang_building["UdR"] =>
  772. "UdR", $lang_building["UdN"] => "UdN", $lang_building["CSp"] => "CSp", $lang_building["HM"] =>
  773. "HM", $lang_building["HC"] => "HC", $lang_building["HD"] => "HD", $lang_building["Lab"] =>
  774. "Lab", $lang_building["Ter"] => "Ter", $lang_building["Silo"] => "Silo", $lang_building["BaLu"] =>
  775. "BaLu", $lang_building["Pha"] => "Pha", $lang_building["PoSa"] => "PoSa");
  776. $buildings = array("M" => array_fill(0, $planetes_total_row, 0), "C" =>
  777. array_fill(0, $planetes_total_row, 0), "D" => array_fill(0, $planetes_total_row,
  778. 0), "CES" => array_fill(0, $planetes_total_row, 0), "CEF" => array_fill(0, $planetes_total_row,
  779. 0), "UdR" => array_fill(0, $planetes_total_row, 0), "UdN" => array_fill(0, $planetes_total_row,
  780. 0), "CSp" => array_fill(0, $planetes_total_row, 0), "HM" => array_fill(0, $planetes_total_row,
  781. 0), "HC" => array_fill(0, $planetes_total_row, 0), "HD" => array_fill(0, $planetes_total_row,
  782. 0), "Lab" => array_fill(0, $planetes_total_row, 0), "Ter" => array_fill(0, $planetes_total_row,
  783. 0), "Silo" => array_fill(0, $planetes_total_row, 0), "BaLu" => array_fill(0, $planetes_total_row,
  784. 0), "Pha" => array_fill(0, $planetes_total_row, 0), "PoSa" => array_fill(0, $planetes_total_row,
  785. 0));
  786. $link_defence = array($lang_defence["LM"] => "LM", $lang_defence["LLE"] => "LLE",
  787. $lang_defence["LLO"] => "LLO", $lang_defence["CG"] => "CG", $lang_defence["AI"] =>
  788. "AI", $lang_defence["LP"] => "LP", $lang_defence["PB"] => "PB", $lang_defence["GB"] =>
  789. "GB", $lang_defence["MIC"] => "MIC", $lang_defence["MIP"] => "MIP");
  790. $defences = array("LM" => array_fill(0, $planetes_total_row, 0), "LLE" =>
  791. array_fill(0, $planetes_total_row, 0), "LLO" => array_fill(0, $planetes_total_row,
  792. 0), "CG" => array_fill(0, $planetes_total_row, 0), "AI" => array_fill(0, $planetes_total_row,
  793. 0), "LP" => array_fill(0, $planetes_total_row, 0), "PB" => array_fill(0, $planetes_total_row,
  794. 0), "GB" => array_fill(0, $planetes_total_row, 0), "MIC" => array_fill(0, $planetes_total_row,
  795. 0), "MIP" => array_fill(0, $planetes_total_row, 0));
  796. $link_technology = array($lang_technology["Esp"] => "Esp", $lang_technology["Ordi"] =>
  797. "Ordi", $lang_technology["Armes"] => "Armes", $lang_technology["Bouclier"] =>
  798. "Bouclier", $lang_technology["Protection"] => "Protection", $lang_technology["NRJ"] =>
  799. "NRJ", $lang_technology["Hyp"] => "Hyp", $lang_technology["RC"] => "RC", $lang_technology["RI"] =>
  800. "RI", $lang_technology["PH"] => "PH", $lang_technology["Laser"] => "Laser", $lang_technology["Ions"] =>
  801. "Ions", $lang_technology["Plasma"] => "Plasma", $lang_technology["RRI"] => "RRI",
  802. $lang_technology["Graviton"] => "Graviton", $lang_technology["Astrophysique"] =>
  803. "Astrophysique");
  804. $technologies = array("Esp" => 0, "Ordi" => 0, "Armes" => 0, "Bouclier" => 0,
  805. "Protection" => 0, "NRJ" => 0, "Hyp" => 0, "RC" => 0, "RI" => 0, "PH" => 0,
  806. "Laser" => 0, "Ions" => 0, "Plasma" => 0, "RRI" => 0, "Graviton" => 0,
  807. "Astrophysique" => 0);
  808. $satellites = array_fill(0, $planetes_total_row, 0);
  809. $cases = array_fill(0, $planetes_total_row, 0);
  810. // creation du masque ici
  811. $masq = "#^((?:\s?\S+)+)\s+";
  812. for ($i = 0; $i < ($planetes_total_row - 1); $i++) {
  813. $masq .= "(\d+)(?:|\s\d+|\s\(\d+\))\s+";
  814. }
  815. $masq .= "(\d+)(?:\s\d+|\s\(\d+\))*$#";
  816. continue;
  817. }
  818. if ($OK && $planetes_total_row !== false) {
  819. if (preg_match("#^Cases\s+\d+\/((?:\d+\s+(?:\d+)\/(?:\d+)\s*){1," . $planetes_total_row .
  820. "})$#", $line, $arr)) {
  821. $cases = preg_split("/\s+\d+\//", $arr[1]);
  822. if (sizeof($cases) != $planetes_total_row)
  823. return false;
  824. continue;
  825. }
  826. if (preg_match("#^(" . $lang_empire["Batiment"] . "|" . $lang_empire["Recherche"] .
  827. "|" . $lang_empire["Vaisseaux"] . "|" . $lang_empire["Défense"] . ")$#", $line)) {
  828. $etape = $line;
  829. continue;
  830. }
  831. if ($etape != "" && preg_match($masq, $line, $arr)) {
  832. $building = $arr[1];
  833. $levels = array_slice($arr, 2);
  834. switch ($etape) {
  835. case "Bâtiments":
  836. if (isset($link_building[$building])) {
  837. if (sizeof($levels) != $planetes_total_row)
  838. return false;
  839. $buildings[$link_building[$building]] = $levels;
  840. }
  841. break;
  842. case "Recherche":
  843. if (isset($link_technology[$building])) {
  844. if (sizeof($levels) != $planetes_total_row)
  845. return false;
  846. $technologies[$link_technology[$building]] = max($levels);
  847. }
  848. break;
  849. case "Vaisseaux":
  850. if ($building == "Satellite solaire") {
  851. if (sizeof($levels) != $planetes_total_row)
  852. return false;
  853. $satellites = $levels;
  854. }
  855. break;
  856. case "Défense":
  857. if (isset($link_defence[$building])) {
  858. if (sizeof($levels) != $planetes_total_row)
  859. return false;
  860. $defences[$link_defence[$building]] = $levels;
  861. }
  862. break;
  863. default:
  864. redirection("index.php?action=message&id_message=set_empire_failed_data&info");
  865. }
  866. continue;
  867. }
  868. }
  869. }
  870. }
  871. if ($OK && $planetes_total_row !== false) {
  872. $j = 19;
  873. for ($i = 0; $i < $planetes_total_row; $i++) {
  874. if ($pub_view == "moons") {
  875. $request = "select planet_id from " . TABLE_USER_BUILDING .
  876. " where coordinates = '" . $coordonnees[$i] . "' and planet_id > 9";
  877. $result = $db->sql_query($request);
  878. if ($db->sql_numrows($result) > 0) {
  879. list($planete_id) = $db->sql_fetch_row($result);
  880. } else {
  881. $request = "select planet_id from " . TABLE_USER_BUILDING . " where user_id = " .
  882. $user_data["user_id"] . " and coordinates = '" . $coordonnees[$i] . "'";
  883. $result = $db->sql_query($request);
  884. list($planete_id) = $db->sql_fetch_row($result);
  885. if (!$planete_id) {
  886. $planete_id = $j;
  887. $j++;
  888. } else
  889. $planete_id += 9;
  890. }
  891. } else
  892. $planete_id = $i + 1;
  893. if ($pub_view == "planets")
  894. $case = $cases[$i] - 5 * $buildings["Ter"][$i];
  895. else
  896. $case = 1;
  897. $request = "update " . TABLE_USER_BUILDING . " set coordinates = '" . $coordonnees[$i] .
  898. "', `fields` = " . $case . " , Sat = " . $satellites[$i];
  899. $request .= ", M = " . $buildings["M"][$i] . ", C = " . $buildings["C"][$i] .
  900. ", D = " . $buildings["D"][$i];
  901. $request .= ", CES = " . $buildings["CES"][$i] . ", CEF = " . $buildings["CEF"][$i] .
  902. ", UdR = " . $buildings["UdR"][$i];
  903. $request .= ", UdN = " . $buildings["UdN"][$i] . ", CSp = " . $buildings["CSp"][$i] .
  904. ", HM = " . $buildings["HM"][$i];
  905. $request .= ", HC = " . $buildings["HC"][$i] . ", HD = " . $buildings["HD"][$i] .
  906. ", Lab = " . $buildings["Lab"][$i];
  907. $request .= ", Ter = " . $buildings["Ter"][$i] . ", Silo = " . $buildings["Silo"][$i] .
  908. ", BaLu = " . $buildings["BaLu"][$i];
  909. $request .= ", Pha = " . $buildings["Pha"][$i] . ", PoSa = " . $buildings["PoSa"][$i] . ($pub_view ==
  910. 'lunes' ? ', planet_name = \'Lune\'' : '');
  911. $request .= " where user_id = " . $user_data["user_id"] . " and planet_id = " .
  912. $planete_id;
  913. $db->sql_query($request);
  914. if ($db->sql_affectedrows() == 0) {
  915. $request = "insert ignore into " . TABLE_USER_BUILDING .
  916. " (user_id, planet_id, planet_name, coordinates, `fields`, temperature_min, temperature_max, Sat, M, C, D, CES, CEF, UdR, UdN, CSp, HM, HC, HD, Lab, Ter, Silo, BaLu, Pha, PoSa)";
  917. $request .= " values (" . $user_data["user_id"] . ", " . $planete_id . ", '" . ($pub_view ==
  918. 'moons' ? 'Lune' : 'planete ' . $planete_id) . "', '" . $coordonnees[$i] . "', " .
  919. $case . ", 0, " . $satellites[$i];
  920. $request .= ", " . $buildings["M"][$i] . ", " . $buildings["C"][$i] . ", " . $buildings["D"][$i];
  921. $request .= ", " . $buildings["CES"][$i] . ", " . $buildings["CEF"][$i] . ", " .
  922. $buildings["UdR"][$i];
  923. $request .= ", " . $buildings["UdN"][$i] . ", " . $buildings["CSp"][$i] . ", " .
  924. $buildings["HM"][$i];
  925. $request .= ", " . $buildings["HC"][$i] . ", " . $buildings["HD"][$i] . ", " . $buildings["Lab"][$i];
  926. $request .= ", " . $buildings["Ter"][$i] . ", " . $buildings["Silo"][$i] . ", " .
  927. $buildings["BaLu"][$i];
  928. $request .= ", " . $buildings["Pha"][$i] . ", " . $buildings["PoSa"][$i] . ")";
  929. $db->sql_query($request);
  930. }
  931. $request = "delete from " . TABLE_USER_DEFENCE . " where user_id = " . $user_data["user_id"] .
  932. " and planet_id= " . $planete_id;
  933. $db->sql_query($request);
  934. $request = "insert into " . TABLE_USER_DEFENCE .
  935. " (user_id, planet_id, LM, LLE, LLO, CG, AI, LP, PB, GB, MIC, MIP)";
  936. $request .= " values (" . $user_data["user_id"] . ", " . $planete_id . ", " . $defences["LM"][$i] .
  937. ", " . $defences["LLE"][$i] . "," . $defences["LLO"][$i] . ", " . $defences["CG"][$i] .
  938. ", " . $defences["AI"][$i] . ", " . $defences["LP"][$i] . ", " . $defences["PB"][$i] .
  939. ", " . $defences["GB"][$i] . ", " . $defences["MIC"][$i] . ", " . $defences["MIP"][$i] .
  940. ")";
  941. $db->sql_query($request);
  942. }
  943. if ($pub_view == "planets") {
  944. $request = "delete from " . TABLE_USER_TECHNOLOGY . " where user_id = " . $user_data["user_id"];
  945. $db->sql_query($request);
  946. $request = "insert into " . TABLE_USER_TECHNOLOGY .
  947. " (user_id, esp, Ordi, Armes, Bouclier, Protection, NRJ, Hyp, RC, RI, PH, Laser, Ions, Plasma, RRI, Graviton, Astrophysique)";
  948. $request .= " values (" . $user_data["user_id"] . ", " . $technologies["Esp"] .
  949. ", " . $technologies["Ordi"] . "," . $technologies["Armes"] . ", " . $technologies["Bouclier"] .
  950. ", " . $technologies["Protection"] . ", " . $technologies["NRJ"] . ", " . $technologies["Hyp"] .
  951. ", " . $technologies["RC"] . ", " . $technologies["RI"] . ", " . $technologies["PH"] .
  952. ", " . $technologies["Laser"] . ", " . $technologies["Ions"] . ", " . $technologies["Plasma"] .
  953. ", " . $technologies["RRI"] . ", " . $technologies["Graviton"] . ", " . $technologies["Astrophysique"] .
  954. ");";
  955. $db->sql_query($request);
  956. }
  957. if ($pub_view == "planets")
  958. redirection("index.php?action=home&subaction=empire&view=" . $pub_view .
  959. "&alert_empire=true");
  960. else
  961. redirection("index.php?action=home&subaction=empire&view=" . $pub_view);
  962. } else
  963. redirection("index.php?action=message&id_message=set_empire_failed_data&info");
  964. }
  965. /**
  966. * remise en ordre des lunes en fonctions des positions des planetes
  967. */
  968. function user_set_all_empire_resync_moon()
  969. {
  970. global $db, $user_data;
  971. // lews planetes
  972. $request = "select planet_id, coordinates";
  973. $request .= " from " . TABLE_USER_BUILDING;
  974. $request .= " where user_id = " . $user_data["user_id"];
  975. $request .= " and planet_id <= 199";
  976. $request .= " order by planet_id";
  977. $result = $db->sql_query($request);
  978. while (list($planet_id, $coordinates) = $db->sql_fetch_row($result)) {
  979. $planet_position[$coordinates] = $planet_id;
  980. }
  981. // les lunes
  982. $request = "select planet_id, coordinates";
  983. $request .= " from " . TABLE_USER_BUILDING;
  984. $request .= " where user_id = " . $user_data["user_id"];
  985. $request .= " and planet_id > 199";
  986. $request .= " order by planet_id";
  987. $result = $db->sql_query($request);
  988. while (list($planet_id, $coordinates) = $db->sql_fetch_row($result)) {
  989. $moon_position[$coordinates] = $planet_id;
  990. }
  991. // on ressort les complexes planete / lune ayant la meme cle
  992. $complexe = array_intersect_key($planet_position, $moon_position);
  993. /// on passe les id se modifiant a 300
  994. foreach ($complexe as $cle_com => $valeur_com) {
  995. $nouvelle_valeur = $planet_position[$cle_com] + 200;
  996. $request = "UPDATE " . TABLE_USER_DEFENCE . " SET planet_id = " . $nouvelle_valeur .
  997. " WHERE planet_id = " . $moon_position[$cle_com] . " and user_id = " . $user_data["user_id"] .
  998. "";
  999. $db->sql_query($request);
  1000. $request = "UPDATE " . TABLE_USER_BUILDING . " SET planet_id = " . $nouvelle_valeur .
  1001. " WHERE planet_id = " . $moon_position[$cle_com] . " and user_id = " . $user_data["user_id"] .
  1002. "";
  1003. $db->sql_query($request);
  1004. }
  1005. /// on remet le tout a 200 pour lunes
  1006. $request = "UPDATE " . TABLE_USER_BUILDING .
  1007. " SET planet_id = planet_id -100 WHERE planet_id > 299 and user_id = " . $user_data["user_id"] .
  1008. "";
  1009. $db->sql_query($request);
  1010. $request = "UPDATE " . TABLE_USER_DEFENCE .
  1011. " SET planet_id = planet_id -100 WHERE planet_id > 299 and user_id = " . $user_data["user_id"] .
  1012. "";
  1013. $db->sql_query($request);
  1014. }
  1015. /**
  1016. * remise en ordre des planetes sans espaces vides ...
  1017. * ( les id doivent se suivre 101,102,103 etc etc)
  1018. */
  1019. function user_set_all_empire_resync_planet()
  1020. {
  1021. global $db, $user_data;
  1022. $nb_planete = find_nb_planete_user();
  1023. $request = "select planet_id, coordinates";
  1024. $request .= " from " . TABLE_USER_BUILDING;
  1025. $request .= " where user_id = " . $user_data["user_id"];
  1026. $request .= " and planet_id <= 199";
  1027. $request .= " order by planet_id";
  1028. $result = $db->sql_query($request);
  1029. while (list($planet_id, $coordinates) = $db->sql_fetch_row($result)) {
  1030. $planet_position[$coordinates] = $planet_id;
  1031. }
  1032. $i = 101;
  1033. foreach ($planet_position as $cle => $valeur) {
  1034. // planete
  1035. $request = "update " . TABLE_USER_BUILDING . " set planet_id = " . $i .
  1036. " where planet_id = " . $valeur;
  1037. $db->sql_query($request);
  1038. $request = "update " . TABLE_USER_DEFENCE

Large files files are truncated, but you can click here to view the full file