PageRenderTime 60ms CodeModel.GetById 22ms RepoModel.GetById 0ms app.codeStats 1ms

/includes/user.php

https://bitbucket.org/ogsteam/ogspy
PHP | 2897 lines | 2315 code | 321 blank | 261 comment | 473 complexity | afb8463db4a9648a237b82554e970d08 MD5 | raw file
Possible License(s): GPL-3.0, BSD-3-Clause

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-11-05 13:04:30 +0100 (Mon, 05 Nov 2012) $
  9. * @author Kyser
  10. * @link $HeadURL: http://svn.ogsteam.fr/trunk/ogspy/includes/user.php $
  11. * @version 3.04b ( $Rev: 7752 $ )
  12. * $Id: user.php 7752 2012-11-05 12:04:30Z 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;
  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_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 $pub_user_id; // $pub_new_pass;
  205. $pass_id = "pub_pass_" . $pub_user_id;
  206. global $$pass_id;
  207. $new_pass = $$pass_id;
  208. if (!check_var($pub_user_id, "Num")) {
  209. redirection("index.php?action=message&id_message=errordata&info");
  210. }
  211. if (!isset($pub_user_id)) {
  212. redirection("index.php?action=message&id_message=errorfatal&info");
  213. }
  214. user_check_auth("user_update", $pub_user_id);
  215. if (user_get($pub_user_id) === false) {
  216. redirection("index.php?action=message&id_message=regeneratepwd_failed&info");
  217. }
  218. if ($new_pass != "") {
  219. $password = $new_pass;
  220. } else {
  221. $password = password_generator();
  222. }
  223. user_set_general($pub_user_id, null, $password);
  224. $info = $pub_user_id . ":" . $password;
  225. log_("regeneratepwd", $pub_user_id);
  226. redirection("index.php?action=message&id_message=regeneratepwd_success&info=" .
  227. $info);
  228. }
  229. /**
  230. * Modification du profil par un utilisateur
  231. * @todo Query : x11
  232. */
  233. function member_user_set()
  234. {
  235. global $db, $user_data, $user_technology;
  236. global $pub_pseudo, $pub_old_password, $pub_new_password, $pub_new_password2, $pub_galaxy,
  237. $pub_system, $pub_skin, $pub_disable_ip_check, $pub_off_commandant, $pub_off_amiral, $pub_off_ingenieur,
  238. $pub_off_geologue, $pub_off_technocrate, $pub_pseudo_ingame, $pub_pseudo_email;
  239. if (!check_var($pub_pseudo, "Text") || !check_var($pub_old_password, "Text") ||
  240. !check_var($pub_new_password, "Text") || !check_var($pub_new_password2,
  241. "CharNum") || !check_var($pub_pseudo_email, "Email")
  242. || !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_pseudo_email) || !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 Commandant
  277. if ($user_data['off_commandant'] == "0" && $pub_off_commandant == 1) {
  278. $db->sql_query("UPDATE " . TABLE_USER .
  279. " SET `off_commandant` = '1' WHERE `user_id` = " . $user_id);
  280. }
  281. if ($user_data['off_commandant'] == 1 && (is_null($pub_off_commandant) || $pub_off_commandant !=
  282. 1)) {
  283. $db->sql_query("UPDATE " . TABLE_USER .
  284. " SET `off_commandant` = '0' WHERE `user_id` = " . $user_id);
  285. }
  286. //compte amiral
  287. if ($user_data['off_amiral'] == "0" && $pub_off_amiral == 1) {
  288. $db->sql_query("UPDATE " . TABLE_USER .
  289. " SET `off_amiral` = '1' WHERE `user_id` = " . $user_id);
  290. }
  291. if ($user_data['off_amiral'] == 1 && (is_null($pub_off_amiral) || $pub_off_amiral !=
  292. 1)) {
  293. $db->sql_query("UPDATE " . TABLE_USER .
  294. " SET `off_amiral` = '0' WHERE `user_id` = " . $user_id);
  295. }
  296. //compte ingenieur
  297. if ($user_data['off_ingenieur'] == "0" && $pub_off_ingenieur == 1) {
  298. $db->sql_query("UPDATE " . TABLE_USER .
  299. " SET `off_ingenieur` = '1' WHERE `user_id` = " . $user_id);
  300. }
  301. if ($user_data['off_ingenieur'] == 1 && (is_null($pub_off_ingenieur) || $pub_off_ingenieur !=
  302. 1)) {
  303. $db->sql_query("UPDATE " . TABLE_USER .
  304. " SET `off_ingenieur` = '0' WHERE `user_id` = " . $user_id);
  305. }
  306. //compte geologue
  307. if ($user_data['off_geologue'] == "0" && $pub_off_geologue == 1) {
  308. $db->sql_query("UPDATE " . TABLE_USER .
  309. " SET `off_geologue` = '1' WHERE `user_id` = " . $user_id);
  310. }
  311. if ($user_data['off_geologue'] == 1 && (is_null($pub_off_geologue) || $pub_off_geologue !=
  312. 1)) {
  313. $db->sql_query("UPDATE " . TABLE_USER .
  314. " SET `off_geologue` = '0' WHERE `user_id` = " . $user_id);
  315. }
  316. //compte technocrate
  317. if ($user_data['off_technocrate'] == "0" && $pub_off_technocrate == 1) {
  318. $db->sql_query("UPDATE " . TABLE_USER .
  319. " SET `off_technocrate` = '1' WHERE `user_id` = " . $user_id);
  320. $tech = $user_technology['Esp'] + 2;
  321. $db->sql_query("UPDATE " . TABLE_USER_TECHNOLOGY . " SET `Esp` = " . $tech .
  322. " WHERE `user_id` = " . $user_id);
  323. }
  324. if ($user_data['off_technocrate'] == 1 && (is_null($pub_off_technocrate) || $pub_off_technocrate !=
  325. 1)) {
  326. $db->sql_query("UPDATE " . TABLE_USER .
  327. " SET `off_technocrate` = '0' WHERE `user_id` = " . $user_id);
  328. $tech = $user_technology['Esp'] - 2;
  329. $db->sql_query("UPDATE " . TABLE_USER_TECHNOLOGY . " SET `Esp` = " . $tech .
  330. " WHERE `user_id` = " . $user_id);
  331. }
  332. //Contrôle que le pseudo ne soit pas déjà utilisé
  333. $request = "select * from " . TABLE_USER . " where user_name = '" .
  334. $db->sql_escape_string($pub_pseudo) . "' and user_id <> " . $user_id;
  335. $result = $db->sql_query($request);
  336. if ($db->sql_numrows($result) != 0) {
  337. redirection("index.php?action=message&id_message=member_modifyuser_failed_pseudolocked&info");
  338. }
  339. if (is_null($pub_disable_ip_check) || $pub_disable_ip_check != 1)
  340. $pub_disable_ip_check = 0;
  341. user_set_general($user_id, $pub_pseudo, $pub_new_password, $pub_pseudo_email, null, $pub_galaxy, $pub_system,
  342. $pub_skin, $pub_disable_ip_check);
  343. redirection("index.php?action=profile");
  344. }
  345. /**
  346. * Entree en BDD de donnees utilisateur
  347. * @todo Query x1
  348. */
  349. function user_set_general($user_id, $user_name = null, $user_password = null, $user_email = null, $user_lastvisit = null,
  350. $user_galaxy = null, $user_system = null, $user_skin = null, $disable_ip_check = null)
  351. {
  352. global $db, $user_data, $server_config;
  353. if (!isset($user_id)) {
  354. redirection("index.php?action=message&id_message=errorfatal&info");
  355. }
  356. if (!empty($user_galaxy)) {
  357. $user_galaxy = intval($user_galaxy);
  358. if ($user_galaxy < 1 || $user_galaxy > intval($server_config['num_of_galaxies']))
  359. $user_galaxy = 1;
  360. }
  361. if (!empty($user_system)) {
  362. $user_system = intval($user_system);
  363. if ($user_system < 1 || $user_system > intval($server_config['num_of_systems']))
  364. $user_system = 1;
  365. }
  366. $update = "";
  367. //Pseudo et mot de passe
  368. if (!empty($user_name))
  369. $update .= "user_name = '" . $db->sql_escape_string($user_name) . "'";
  370. if (!empty($user_password))
  371. $update .= ((strlen($update) > 0) ? ", " : "") . "user_password = '" . md5(sha1
  372. ($user_password)) . "'";
  373. //Galaxy et système solaire du membre
  374. if (!empty($user_galaxy))
  375. $update .= ((strlen($update) > 0) ? ", " : "") . "user_galaxy = '" . $user_galaxy .
  376. "'";
  377. if (!empty($user_system))
  378. $update .= ((strlen($update) > 0) ? ", " : "") . "user_system = '" . $user_system .
  379. "'";
  380. //Dernière visite
  381. if (!empty($user_lastvisit))
  382. $update .= ((strlen($update) > 0) ? ", " : "") . "user_lastvisit = '" . $user_lastvisit .
  383. "'";
  384. //Email
  385. if (!empty($user_email))
  386. $update .= ((strlen($update) > 0) ? ", " : "") . "user_email = '" . $user_email .
  387. "'";
  388. //Skin
  389. if (!is_null($user_skin)) {
  390. if (strlen($user_skin) > 0 && substr($user_skin, strlen($user_skin) - 1) != "/")
  391. $user_skin .= "/";
  392. $update .= ((strlen($update) > 0) ? ", " : "") . "user_skin = '" .
  393. $db->sql_escape_string($user_skin) . "'";
  394. }
  395. //Désactivation de la vérification de l'adresse ip
  396. if (!is_null($disable_ip_check))
  397. $update .= ((strlen($update) > 0) ? ", " : "") . "disable_ip_check = '" . $disable_ip_check .
  398. "'";
  399. $request = "update " . TABLE_USER . " set " . $update . " where user_id = " . $user_id;
  400. $db->sql_query($request);
  401. if ($user_id == $user_data['user_id']) {
  402. log_("modify_account");
  403. } else {
  404. log_("modify_account_admin", $user_id);
  405. }
  406. }
  407. /**
  408. * Enregistrement des droits et status utilisateurs
  409. * @todo Query : x2
  410. */
  411. function user_set_grant($user_id, $user_admin = null, $user_active = null, $user_coadmin = null,
  412. $management_user = null, $management_ranking = null)
  413. {
  414. global $db, $user_data;
  415. if (!isset($user_id)) {
  416. redirection("index.php?action=message&id_message=errorfatal&info");
  417. }
  418. //Vérification des droits
  419. user_check_auth("user_update", $user_id);
  420. $update = "";
  421. //Activation membre
  422. if (!is_null($user_active)) {
  423. $update .= ((strlen($update) > 0) ? ", " : "") . "user_active = '" . intval($user_active) .
  424. "'";
  425. if (intval($user_active) == 0) {
  426. $request = "delete from " . TABLE_SESSIONS . " where session_user_id = " . $user_id;
  427. $db->sql_query($request);
  428. }
  429. }
  430. //Co-administration
  431. if (!is_null($user_coadmin)) {
  432. $update .= ((strlen($update) > 0) ? ", " : "") . "user_coadmin = '" . intval($user_coadmin) .
  433. "'";
  434. }
  435. //Gestion des membres
  436. if (!is_null($management_user)) {
  437. $update .= ((strlen($update) > 0) ? ", " : "") . "management_user = '" . intval($management_user) .
  438. "'";
  439. }
  440. //Gestion des classements
  441. if (!is_null($management_ranking)) {
  442. $update .= ((strlen($update) > 0) ? ", " : "") . "management_ranking = '" .
  443. intval($management_ranking) . "'";
  444. }
  445. $request = "update " . TABLE_USER . " set " . $update . " where user_id = " . $user_id;
  446. $db->sql_query($request);
  447. if ($user_id == $user_data['user_id']) {
  448. log_("modify_account");
  449. } else {
  450. log_("modify_account_admin", $user_id);
  451. }
  452. }
  453. /**
  454. * Enregistrement des statistiques utilisateurs
  455. * @todo Query : x1
  456. */
  457. function user_set_stat($planet_added_web = null, $planet_added_ogs = null, $search = null,
  458. $spy_added_web = null, $spy_added_ogs = null, $rank_added_web = null, $rank_added_ogs = null,
  459. $planet_exported = null, $spy_exported = null, $rank_exported = null)
  460. {
  461. global $db, $user_data;
  462. $update = "";
  463. //Statistiques envoi systèmes solaires et rapports d'espionnage
  464. if (!is_null($planet_added_web))
  465. $update .= ((strlen($update) > 0) ? ", " : "") .
  466. "planet_added_web = planet_added_web + " . $planet_added_web;
  467. if (!is_null($planet_added_ogs))
  468. $update .= ((strlen($update) > 0) ? ", " : "") .
  469. "planet_added_ogs = planet_added_ogs + " . $planet_added_ogs;
  470. if (!is_null($search))
  471. $update .= ((strlen($update) > 0) ? ", " : "") . "search = search + " . $search;
  472. if (!is_null($spy_added_web))
  473. $update .= ((strlen($update) > 0) ? ", " : "") .
  474. "spy_added_web = spy_added_web + " . $spy_added_web;
  475. if (!is_null($spy_added_ogs))
  476. $update .= ((strlen($update) > 0) ? ", " : "") .
  477. "spy_added_ogs = spy_added_ogs + " . $spy_added_ogs;
  478. if (!is_null($rank_added_web))
  479. $update .= ((strlen($update) > 0) ? ", " : "") .
  480. "rank_added_web = rank_added_web + " . $rank_added_web;
  481. if (!is_null($rank_added_ogs))
  482. $update .= ((strlen($update) > 0) ? ", " : "") .
  483. "rank_added_ogs = rank_added_ogs + " . $rank_added_ogs;
  484. if (!is_null($planet_exported))
  485. $update .= ((strlen($update) > 0) ? ", " : "") .
  486. "planet_exported = planet_exported + " . $planet_exported;
  487. if (!is_null($spy_exported))
  488. $update .= ((strlen($update) > 0) ? ", " : "") .
  489. "spy_exported = spy_exported + " . $spy_exported;
  490. if (!is_null($rank_exported))
  491. $update .= ((strlen($update) > 0) ? ", " : "") .
  492. "rank_exported = rank_exported + " . $rank_exported;
  493. $request = "update " . TABLE_USER . " set " . $update . " where user_id = " . $user_data["user_id"];
  494. $db->sql_query($request);
  495. }
  496. /**
  497. * Recuperation d'une ligne d'information utilisateur
  498. * @param int $user_id Identificateur optionnel d'1 utilisateur specifique
  499. * @return Array Liste des utilisateurs ou de l'utilisateur specifique
  500. * @comment Pourrait peut etre avantageusement remplace par select * from TABLE_USER
  501. * @comment pour les eventuels champs supplementaires
  502. * @todo Query : x1
  503. */
  504. function user_get($user_id = false)
  505. {
  506. global $db;
  507. $request = "select user_id, user_name, user_password, user_email, user_active, user_regdate, user_lastvisit," .
  508. " user_galaxy, user_system, user_admin, user_coadmin, management_user, management_ranking, disable_ip_check," .
  509. " off_commandant, off_amiral, off_ingenieur, off_geologue, off_technocrate" .
  510. " from " . TABLE_USER;
  511. if ($user_id !== false) {
  512. $request .= " where user_id = " . $user_id;
  513. }
  514. $request .= " order by user_name";
  515. $result = $db->sql_query($request);
  516. $info_users = array();
  517. while ($row = $db->sql_fetch_assoc($result)) {
  518. $info_users[] = $row;
  519. }
  520. if (sizeof($info_users) == 0) {
  521. return false;
  522. }
  523. return $info_users;
  524. }
  525. /**
  526. * Recuperation des droits d'un utilisateur
  527. * @param int $user_id Identificateur de l'utilisateur demande
  528. * @todo Query : x1
  529. * @return Array Tableau des droits
  530. */
  531. function user_get_auth($user_id)
  532. {
  533. global $db;
  534. $user_info = user_get($user_id);
  535. $user_info = $user_info[0];
  536. if ($user_info["user_admin"] == 1 || $user_info["user_coadmin"] == 1) {
  537. $user_auth = array("server_set_system" => 1, "server_set_spy" => 1,
  538. "server_set_rc" => 1, "server_set_ranking" => 1, "server_show_positionhided" =>
  539. 1, "ogs_connection" => 1, "ogs_set_system" => 1, "ogs_get_system" => 1,
  540. "ogs_set_spy" => 1, "ogs_get_spy" => 1, "ogs_set_ranking" => 1,
  541. "ogs_get_ranking" => 1);
  542. return $user_auth;
  543. }
  544. $request = "select server_set_system, server_set_spy, server_set_rc, server_set_ranking, server_show_positionhided,";
  545. $request .= " ogs_connection, ogs_set_system, ogs_get_system, ogs_set_spy, ogs_get_spy, ogs_set_ranking, ogs_get_ranking";
  546. $request .= " from " . TABLE_GROUP . " g, " . TABLE_USER_GROUP . " u";
  547. $request .= " where g.group_id = u.group_id";
  548. $request .= " and user_id = " . $user_id;
  549. $result = $db->sql_query($request);
  550. if ($db->sql_numrows($result) > 0) {
  551. $user_auth = array("server_set_system" => 0, "server_set_spy" => 0,
  552. "server_set_rc" => 0, "server_set_ranking" => 0, "server_show_positionhided" =>
  553. 0, "ogs_connection" => 0, "ogs_set_system" => 0, "ogs_get_system" => 0,
  554. "ogs_set_spy" => 0, "ogs_get_spy" => 0, "ogs_set_ranking" => 0,
  555. "ogs_get_ranking" => 0);
  556. while ($row = $db->sql_fetch_assoc($result)) {
  557. if ($row["server_set_system"] == 1)
  558. $user_auth["server_set_system"] = 1;
  559. if ($row["server_set_spy"] == 1)
  560. $user_auth["server_set_spy"] = 1;
  561. if ($row["server_set_rc"] == 1)
  562. $user_auth["server_set_rc"] = 1;
  563. if ($row["server_set_ranking"] == 1)
  564. $user_auth["server_set_ranking"] = 1;
  565. if ($row["server_show_positionhided"] == 1)
  566. $user_auth["server_show_positionhided"] = 1;
  567. if ($row["ogs_connection"] == 1)
  568. $user_auth["ogs_connection"] = 1;
  569. if ($row["ogs_set_system"] == 1)
  570. $user_auth["ogs_set_system"] = 1;
  571. if ($row["ogs_get_system"] == 1)
  572. $user_auth["ogs_get_system"] = 1;
  573. if ($row["ogs_set_spy"] == 1)
  574. $user_auth["ogs_set_spy"] = 1;
  575. if ($row["ogs_get_spy"] == 1)
  576. $user_auth["ogs_get_spy"] = 1;
  577. if ($row["ogs_set_ranking"] == 1)
  578. $user_auth["ogs_set_ranking"] = 1;
  579. if ($row["ogs_get_ranking"] == 1)
  580. $user_auth["ogs_get_ranking"] = 1;
  581. }
  582. } else {
  583. $user_auth = array("server_set_system" => 0, "server_set_spy" => 0,
  584. "server_set_ranking" => 0, "server_show_positionhided" => 0, "ogs_connection" =>
  585. 0, "ogs_set_system" => 0, "ogs_get_system" => 0, "ogs_set_spy" => 0,
  586. "ogs_get_spy" => 0, "ogs_set_ranking" => 0, "ogs_get_ranking" => 0);
  587. }
  588. return $user_auth;
  589. }
  590. /**
  591. * Creation d'un utilisateur a partir des donnees du formulaire admin
  592. * @comment redirection si erreur de type de donnee
  593. * @todo Query : x3
  594. */
  595. function user_create()
  596. {
  597. global $db, $user_data;
  598. global $pub_pseudo, $pub_user_id, $pub_active, $pub_user_coadmin, $pub_management_user,
  599. $pub_management_ranking, $pub_group_id, $pub_pass;
  600. if (!check_var($pub_pseudo, "Pseudo_Groupname")) {
  601. redirection("index.php?action=message&id_message=errordata&info=1");
  602. }
  603. if (!isset($pub_pseudo)) {
  604. redirection("index.php?action=message&id_message=createuser_failed_general&info");
  605. }
  606. //Vérification des droits
  607. user_check_auth("user_create");
  608. if (!check_var($pub_pseudo, "Pseudo_Groupname")) {
  609. redirection("index.php?action=message&id_message=createuser_failed_pseudo&info=" .
  610. $pub_pseudo);
  611. }
  612. if (!check_var($pub_pass, "Password")) {
  613. redirection("index.php?action=message&id_message=createuser_failed_password&info=" .
  614. $pub_pseudo);
  615. }
  616. if ($pub_pass != "") {
  617. $password = $pub_pass;
  618. } else {
  619. $password = password_generator();
  620. }
  621. //$request = "select user_id from ".TABLE_USER." where user_name = '". $db->sql_escape_string($pub_pseudo)."'";
  622. $request = "select user_id from " . TABLE_USER . " where user_name = '" . $pub_pseudo .
  623. "'";
  624. $result = $db->sql_query($request);
  625. if ($db->sql_numrows($result) == 0) {
  626. $request = "insert into " . TABLE_USER .
  627. " (user_name, user_password, user_regdate, user_active)" . " values ('" . $pub_pseudo .
  628. "', '" . md5(sha1($password)) . "', " . time() . ", '1')";
  629. $db->sql_query($request);
  630. $user_id = $db->sql_insertid();
  631. $request = "insert into " . TABLE_USER_GROUP . " (group_id, user_id) values (" .
  632. $pub_group_id . ", " . $user_id . ")";
  633. $db->sql_query($request);
  634. $info = $user_id . ":" . $password;
  635. log_("create_account", $user_id);
  636. user_set_grant($user_id, null, $pub_active, $pub_user_coadmin, $pub_management_user,
  637. $pub_management_ranking);
  638. redirection("index.php?action=message&id_message=createuser_success&info=" . $info);
  639. } else {
  640. redirection("index.php?action=message&id_message=createuser_failed_pseudolocked&info=" .
  641. $pub_pseudo);
  642. }
  643. }
  644. /**
  645. * Suppression d'un utilisateur ($pub_user_id)
  646. * @todo Query : x12
  647. */
  648. function user_delete()
  649. {
  650. global $db, $user_data;
  651. global $pub_user_id;
  652. if (!check_var($pub_user_id, "Num")) {
  653. redirection("index.php?action=message&id_message=errordata&info");
  654. }
  655. if (!isset($pub_user_id)) {
  656. redirection("index.php?action=message&id_message=createuser_failed_general&info");
  657. }
  658. user_check_auth("user_update", $pub_user_id);
  659. log_("delete_account", $pub_user_id);
  660. $request = "delete from " . TABLE_USER . " where user_id = " . $pub_user_id;
  661. $db->sql_query($request);
  662. $request = "delete from " . TABLE_USER_GROUP . " where user_id = " . $pub_user_id;
  663. $db->sql_query($request);
  664. $request = "delete from " . TABLE_USER_BUILDING . " where user_id = " . $pub_user_id;
  665. $db->sql_query($request);
  666. $request = "delete from " . TABLE_USER_FAVORITE . " where user_id = " . $pub_user_id;
  667. $db->sql_query($request);
  668. $request = "delete from " . TABLE_USER_DEFENCE . " where user_id = " . $pub_user_id;
  669. $db->sql_query($request);
  670. $request = "delete from " . TABLE_USER_SPY . " where user_id = " . $pub_user_id;
  671. $db->sql_query($request);
  672. $request = "delete from " . TABLE_USER_TECHNOLOGY . " where user_id = " . $pub_user_id;
  673. $db->sql_query($request);
  674. $request = "update " . TABLE_RANK_PLAYER_POINTS ." set sender_id = 0 where sender_id = " . $pub_user_id;
  675. $db->sql_query($request);
  676. $request = "update " . TABLE_RANK_PLAYER_ECO ." set sender_id = 0 where sender_id = " . $pub_user_id;
  677. $db->sql_query($request);
  678. $request = "update " . TABLE_RANK_PLAYER_TECHNOLOGY ." set sender_id = 0 where sender_id = " . $pub_user_id;
  679. $db->sql_query($request);
  680. $request = "update " . TABLE_RANK_PLAYER_MILITARY ." set sender_id = 0 where sender_id = " . $pub_user_id;
  681. $db->sql_query($request);
  682. $request = "update " . TABLE_RANK_PLAYER_MILITARY_BUILT ." set sender_id = 0 where sender_id = " . $pub_user_id;
  683. $db->sql_query($request);
  684. $request = "update " . TABLE_RANK_PLAYER_MILITARY_LOOSE ." set sender_id = 0 where sender_id = " . $pub_user_id;
  685. $db->sql_query($request);
  686. $request = "update " . TABLE_RANK_PLAYER_MILITARY_DESTRUCT ." set sender_id = 0 where sender_id = " . $pub_user_id;
  687. $db->sql_query($request);
  688. $request = "update " . TABLE_RANK_PLAYER_HONOR ." set sender_id = 0 where sender_id = " . $pub_user_id;
  689. $db->sql_query($request);
  690. $request = "update " . TABLE_RANK_ALLY_POINTS ." set sender_id = 0 where sender_id = " . $pub_user_id;
  691. $db->sql_query($request);
  692. $request = "update " . TABLE_RANK_ALLY_ECO ." set sender_id = 0 where sender_id = " . $pub_user_id;
  693. $db->sql_query($request);
  694. $request = "update " . TABLE_RANK_ALLY_TECHNOLOGY ." set sender_id = 0 where sender_id = " . $pub_user_id;
  695. $db->sql_query($request);
  696. $request = "update " . TABLE_RANK_ALLY_MILITARY ." set sender_id = 0 where sender_id = " . $pub_user_id;
  697. $db->sql_query($request);
  698. $request = "update " . TABLE_RANK_ALLY_MILITARY_BUILT ." set sender_id = 0 where sender_id = " . $pub_user_id;
  699. $db->sql_query($request);
  700. $request = "update " . TABLE_RANK_ALLY_MILITARY_LOOSE ." set sender_id = 0 where sender_id = " . $pub_user_id;
  701. $db->sql_query($request);
  702. $request = "update " . TABLE_RANK_ALLY_MILITARY_DESTRUCT ." set sender_id = 0 where sender_id = " . $pub_user_id;
  703. $db->sql_query($request);
  704. $request = "update " . TABLE_RANK_ALLY_HONOR ." set sender_id = 0 where sender_id = " . $pub_user_id;
  705. $db->sql_query($request);
  706. $request = "update " . TABLE_UNIVERSE ." set last_update_user_id = 0 where last_update_user_id = " . $pub_user_id;
  707. $db->sql_query($request);
  708. session_close($pub_user_id);
  709. redirection("index.php?action=administration&subaction=member");
  710. }
  711. /**
  712. * Recuperation des statistiques
  713. * @todo Query : x1
  714. */
  715. function user_statistic()
  716. {
  717. global $db;
  718. $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, user_active, user_admin";
  719. $request .= " from " . TABLE_USER .
  720. " order by (planet_added_web + planet_added_ogs) desc";
  721. $result = $db->sql_query($request);
  722. $user_statistic = array();
  723. while ($row = $db->sql_fetch_assoc($result)) {
  724. $here = "";
  725. $request = "select session_ogs from " . TABLE_SESSIONS .
  726. " where session_user_id = " . $row["user_id"];
  727. $result_2 = $db->sql_query($request);
  728. if ($db->sql_numrows($result_2) > 0) {
  729. $here = "(*)";
  730. list($session_ogs) = $db->sql_fetch_row($result_2);
  731. if ($session_ogs == 1)
  732. $here = "(**)";
  733. }
  734. $user_statistic[] = array_merge($row, array("here" => $here));
  735. }
  736. return $user_statistic;
  737. }
  738. /**
  739. * Recuperation du nombres de comptes actifs
  740. * @todo Query : x1
  741. */
  742. function user_get_nb_active_users()
  743. {
  744. global $db;
  745. $request = "SELECT user_id, user_active";
  746. $request .= " FROM ".TABLE_USER;
  747. $request .= " WHERE user_active='1'";
  748. $result = $db->sql_query($request);
  749. $number = $db->sql_numrows();
  750. return($number);
  751. }
  752. /**
  753. * Enregistrement des donnees Empires d'un utilisateur
  754. */
  755. function user_set_empire()
  756. {
  757. global $pub_typedata, $pub_data, $pub_planet_id, $pub_planet_name, $pub_fields,
  758. $pub_coordinates, $pub_temperature_min, $pub_temperature_max, $pub_satellite;
  759. if (!isset($pub_typedata) || !isset($pub_data)) {
  760. redirection("index.php?action=message&id_message=errorfatal&info");
  761. }
  762. switch ($pub_typedata) {
  763. case "B":
  764. if (!isset($pub_planet_name) || !isset($pub_fields) || !isset($pub_coordinates) ||
  765. !isset($pub_temperature_min) || !isset($pub_temperature_max) || !isset($pub_satellite)) {
  766. redirection("index.php?action=message&id_message=errorfatal&info");
  767. }
  768. user_set_building($pub_data, $pub_planet_id, $pub_planet_name, $pub_fields, $pub_coordinates,
  769. $pub_temperature_min, $pub_temperature_max, $pub_satellite);
  770. break;
  771. case "T":
  772. user_set_technology($pub_data);
  773. break;
  774. case "D":
  775. if (!isset($pub_planet_name) || !isset($pub_fields) || !isset($pub_coordinates) ||
  776. !isset($pub_temperature_min) || !isset($pub_temperature_max) || !isset($pub_satellite)) {
  777. redirection("index.php?action=message&id_message=errorfatal&info");
  778. }
  779. user_set_defence($pub_data, $pub_planet_id, $pub_planet_name, $pub_fields, $pub_coordinates,
  780. $pub_temperature_min, $pub_temperature_max, $pub_satellite);
  781. break;
  782. case "E":
  783. user_set_all_empire($pub_data);
  784. break;
  785. default:
  786. redirection("index.php?action=message&id_message=errorfatal&info");
  787. break;
  788. }
  789. redirection("index.php?action=home&subaction=empire");
  790. }
  791. /**
  792. * Enregistrement de toutes les donnees empires
  793. * @param array $data All data related to the empire
  794. * @todo Query : x5
  795. */
  796. function user_set_all_empire($data)
  797. {
  798. global $db, $user_data;
  799. global $pub_view;
  800. require_once ("parameters/lang_empire.php");
  801. $data = str_replace("-", "0", $data);
  802. $data = str_replace(".", "", $data);
  803. $data = stripcslashes($data);
  804. $lines = explode(chr(10), $data);
  805. $OK = false;
  806. $etape = "";
  807. $planetes_total_row = false;
  808. foreach ($lines as $line) {
  809. $arr = array();
  810. $line = trim($line);
  811. if ($line == "Vue d'ensemble de votre empire") {
  812. $OK = true;
  813. continue;
  814. }
  815. if ($OK) {
  816. if (preg_match("#^Coordonnées\s+\[(.*)\]$#", $line, $arr)) {
  817. $coordonnees = preg_split("/\]\s+\[/", $arr[1]);
  818. $planetes_total_row = sizeof($coordonnees) + 1;
  819. if ($planetes_total_row > 10)
  820. return false;
  821. $link_building = array($lang_building["M"] => "M", $lang_building["C"] => "C", $lang_building["D"] =>
  822. "D", $lang_building["CES"] => "CES", $lang_building["CEF"] => "CEF", $lang_building["UdR"] =>
  823. "UdR", $lang_building["UdN"] => "UdN", $lang_building["CSp"] => "CSp", $lang_building["HM"] =>
  824. "HM", $lang_building["HC"] => "HC", $lang_building["HD"] => "HD", $lang_building["Lab"] =>
  825. "Lab", $lang_building["Ter"] => "Ter", $lang_building["Silo"] => "Silo", $lang_building["BaLu"] =>
  826. "BaLu", $lang_building["Pha"] => "Pha", $lang_building["PoSa"] => "PoSa");
  827. $buildings = array("M" => array_fill(0, $planetes_total_row, 0), "C" =>
  828. array_fill(0, $planetes_total_row, 0), "D" => array_fill(0, $planetes_total_row,
  829. 0), "CES" => array_fill(0, $planetes_total_row, 0), "CEF" => array_fill(0, $planetes_total_row,
  830. 0), "UdR" => array_fill(0, $planetes_total_row, 0), "UdN" => array_fill(0, $planetes_total_row,
  831. 0), "CSp" => array_fill(0, $planetes_total_row, 0), "HM" => array_fill(0, $planetes_total_row,
  832. 0), "HC" => array_fill(0, $planetes_total_row, 0), "HD" => array_fill(0, $planetes_total_row,
  833. 0), "Lab" => array_fill(0, $planetes_total_row, 0), "Ter" => array_fill(0, $planetes_total_row,
  834. 0), "Silo" => array_fill(0, $planetes_total_row, 0), "BaLu" => array_fill(0, $planetes_total_row,
  835. 0), "Pha" => array_fill(0, $planetes_total_row, 0), "PoSa" => array_fill(0, $planetes_total_row,
  836. 0));
  837. $link_defence = array($lang_defence["LM"] => "LM", $lang_defence["LLE"] => "LLE",
  838. $lang_defence["LLO"] => "LLO", $lang_defence["CG"] => "CG", $lang_defence["AI"] =>
  839. "AI", $lang_defence["LP"] => "LP", $lang_defence["PB"] => "PB", $lang_defence["GB"] =>
  840. "GB", $lang_defence["MIC"] => "MIC", $lang_defence["MIP"] => "MIP");
  841. $defences = array("LM" => array_fill(0, $planetes_total_row, 0), "LLE" =>
  842. array_fill(0, $planetes_total_row, 0), "LLO" => array_fill(0, $planetes_total_row,
  843. 0), "CG" => array_fill(0, $planetes_total_row, 0), "AI" => array_fill(0, $planetes_total_row,
  844. 0), "LP" => array_fill(0, $planetes_total_row, 0), "PB" => array_fill(0, $planetes_total_row,
  845. 0), "GB" => array_fill(0, $planetes_total_row, 0), "MIC" => array_fill(0, $planetes_total_row,
  846. 0), "MIP" => array_fill(0, $planetes_total_row, 0));
  847. $link_technology = array($lang_technology["Esp"] => "Esp", $lang_technology["Ordi"] =>
  848. "Ordi", $lang_technology["Armes"] => "Armes", $lang_technology["Bouclier"] =>
  849. "Bouclier", $lang_technology["Protection"] => "Protection", $lang_technology["NRJ"] =>
  850. "NRJ", $lang_technology["Hyp"] => "Hyp", $lang_technology["RC"] => "RC", $lang_technology["RI"] =>
  851. "RI", $lang_technology["PH"] => "PH", $lang_technology["Laser"] => "Laser", $lang_technology["Ions"] =>
  852. "Ions", $lang_technology["Plasma"] => "Plasma", $lang_technology["RRI"] => "RRI",
  853. $lang_technology["Graviton"] => "Graviton", $lang_technology["Astrophysique"] =>
  854. "Astrophysique");
  855. $technologies = array("Esp" => 0, "Ordi" => 0, "Armes" => 0, "Bouclier" => 0,
  856. "Protection" => 0, "NRJ" => 0, "Hyp" => 0, "RC" => 0, "RI" => 0, "PH" => 0,
  857. "Laser" => 0, "Ions" => 0, "Plasma" => 0, "RRI" => 0, "Graviton" => 0,
  858. "Astrophysique" => 0);
  859. $satellites = array_fill(0, $planetes_total_row, 0);
  860. $cases = array_fill(0, $planetes_total_row, 0);
  861. // creation du masque ici
  862. $masq = "#^((?:\s?\S+)+)\s+";
  863. for ($i = 0; $i < ($planetes_total_row - 1); $i++) {
  864. $masq .= "(\d+)(?:|\s\d+|\s\(\d+\))\s+";
  865. }
  866. $masq .= "(\d+)(?:\s\d+|\s\(\d+\))*$#";
  867. continue;
  868. }
  869. if ($OK && $planetes_total_row !== false) {
  870. if (preg_match("#^Cases\s+\d+\/((?:\d+\s+(?:\d+)\/(?:\d+)\s*){1," . $planetes_total_row .
  871. "})$#", $line, $arr)) {
  872. $cases = preg_split("/\s+\d+\//", $arr[1]);
  873. if (sizeof($cases) != $planetes_total_row)
  874. return false;
  875. continue;
  876. }
  877. if (preg_match("#^(" . $lang_empire["Batiment"] . "|" . $lang_empire["Recherche"] .
  878. "|" . $lang_empire["Vaisseaux"] . "|" . $lang_empire["Défense"] . ")$#", $line)) {
  879. $etape = $line;
  880. continue;
  881. }
  882. if ($etape != "" && preg_match($masq, $line, $arr)) {
  883. $building = $arr[1];
  884. $levels = array_slice($arr, 2);
  885. switch ($etape) {
  886. case "Bâtiments":
  887. if (isset($link_building[$building])) {
  888. if (sizeof($levels) != $planetes_total_row)
  889. return false;
  890. $buildings[$link_building[$building]] = $levels;
  891. }
  892. break;
  893. case "Recherche":
  894. if (isset($link_technology[$building])) {
  895. if (sizeof($levels) != $planetes_total_row)
  896. return false;
  897. $technologies[$link_technology[$building]] = max($levels);
  898. }
  899. break;
  900. case "Vaisseaux":
  901. if ($building == "Satellite solaire") {
  902. if (sizeof($levels) != $planetes_total_row)
  903. return false;
  904. $satellites = $levels;
  905. }
  906. break;
  907. case "Défense":
  908. if (isset($link_defence[$building])) {
  909. if (sizeof($levels) != $planetes_total_row)
  910. return false;
  911. $defences[$link_defence[$building]] = $levels;
  912. }
  913. break;
  914. default:
  915. redirection("index.php?action=message&id_message=set_empire_failed_data&info");
  916. }
  917. continue;
  918. }
  919. }
  920. }
  921. }
  922. if ($OK && $planetes_total_row !== false) {
  923. $j = 19;
  924. for ($i = 0; $i < $planetes_total_row; $i++) {
  925. if ($pub_view == "moons") {
  926. $request = "select planet_id from " . TABLE_USER_BUILDING .
  927. " where coordinates = '" . $coordonnees[$i] . "' and planet_id > 9";
  928. $result = $db->sql_query($request);
  929. if ($db->sql_numrows($result) > 0) {
  930. list($planete_id) = $db->sql_fetch_row($result);
  931. } else {
  932. $request = "select planet_id from " . TABLE_USER_BUILDING . " where user_id = " .
  933. $user_data["user_id"] . " and coordinates = '" . $coordonnees[$i] . "'";
  934. $result = $db->sql_query($request);
  935. list($planete_id) = $db->sql_fetch_row($result);
  936. if (!$planete_id) {
  937. $planete_id = $j;
  938. $j++;
  939. } else
  940. $planete_id += 9;
  941. }
  942. } else
  943. $planete_id = $i + 1;
  944. if ($pub_view == "planets")
  945. $case = $cases[$i] - 5 * $buildings["Ter"][$i];
  946. else
  947. $case = 1;
  948. $request = "update " . TABLE_USER_BUILDING . " set coordinates = '" . $coordonnees[$i] .
  949. "', `fields` = " . $case . " , Sat = " . $satellites[$i];
  950. $request .= ", M = " . $buildings["M"][$i] . ", C = " . $buildings["C"][$i] .
  951. ", D = " . $buildings["D"][$i];
  952. $request .= ", CES = " . $buildings["CES"][$i] . ", CEF = " . $buildings["CEF"][$i] .
  953. ", UdR = " . $buildings["UdR"][$i];
  954. $request .= ", UdN = " . $buildings["UdN"][$i] . ", CSp = " . $buildings["CSp"][$i] .
  955. ", HM = " . $buildings["HM"][$i];
  956. $request .= ", HC = " . $buildings["HC"][$i] . ", HD = " . $buildings["HD"][$i] .
  957. ", Lab = " . $buildings["Lab"][$i];
  958. $request .= ", Ter = " . $buildings["Ter"][$i] . ", Silo = " . $buildings["Silo"][$i] .
  959. ", BaLu = " . $buildings["BaLu"][$i];
  960. $request .= ", Pha = " . $buildings["Pha"][$i] . ", PoSa = " . $buildings["PoSa"][$i] . ($pub_view ==
  961. 'lunes' ? ', planet_name = \'Lune\'' : '');
  962. $request .= " where user_id = " . $user_data["user_id"] . " and planet_id = " .
  963. $planete_id;
  964. $db->sql_query($request);
  965. if ($db->sql_affectedrows() == 0) {
  966. $request = "insert ignore into " . TABLE_USER_BUILDING .
  967. " (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)";
  968. $request .= " values (" . $user_data["user_id"] . ", " . $planete_id . ", '" . ($pub_view ==
  969. 'moons' ? 'Lune' : 'planete ' . $planete_id) . "', '" . $coordonnees[$i] . "', " .
  970. $case . ", 0, " . $satellites[$i];
  971. $request .= ", " . $buildings["M"][$i] . ", " . $buildings["C"][$i] . ", " . $buildings["D"][$i];
  972. $request .= ", " . $buildings["CES"][$i] . ", " . $buildings["CEF"][$i] . ", " .
  973. $buildings["UdR"][$i];
  974. $request .= ", " . $buildings["UdN"][$i] . ", " . $buildings["CSp"][$i] . ", " .
  975. $buildings["HM"][$i];
  976. $request .= ", " . $buildings["HC"][$i] . ", " . $buildings["HD"][$i] . ", " . $buildings["Lab"][$i];
  977. $request .= ", " . $buildings["Ter"][$i] . ", " . $buildings["Silo"][$i] . ", " .
  978. $buildings["BaLu"][$i];
  979. $request .= ", " . $buildings["Pha"][$i] . ", " . $buildings["PoSa"][$i] . ")";
  980. $db->sql_query($request);
  981. }
  982. $request = "delete from " . TABLE_USER_DEFENCE . " where user_id = " . $user_data["user_id"] .
  983. " and planet_id= " . $planete_id;
  984. $db->sql_query($request);
  985. $request = "insert into " . TABLE_USER_DEFENCE .
  986. " (user_id, planet_id, LM, LLE, LLO, CG, AI, LP, PB, GB, MIC, MIP)";
  987. $request .= " values (" . $user_data["user_id"] . ", " . $planete_id . ", " . $defences["LM"][$i] .
  988. ", " . $defences["LLE"][$i] . "," . $defences["LLO"][$i] . ", " . $defences["CG"][$i] .
  989. ", " . $defences["AI"][$i] . ", " . $defences["LP"][$i] . ", " . $defences["PB"][$i] .
  990. ", " . $defences["GB"][$i] . ", " . $defences["MIC"][$i] . ", " . $defences["MIP"][$i] .
  991. ")";
  992. $db->sql_query($request);
  993. }
  994. if ($pub_view == "planets") {
  995. $request = "delete from " . TABLE_USER_TECHNOLOGY . " where user_id = " . $user_data["user_id"];
  996. $db->sql_query($request);
  997. $request = "insert into " . TABLE_USER_TECHNOLOGY .
  998. " (user_id, esp, Ordi, Armes, Bouclier, Protection, NRJ, Hyp, RC, RI, PH, Laser, Ions, Plasma, RRI, Graviton, Astrophysique)";
  999. $request .= " values (" . $user_data["user_id"] . ", " . $technologies["Esp"] .
  1000. ", " . $technologies["Ordi"] . "," . $technologies["Armes"] . ", " . $technologies["Bouclier"] .
  1001. ", " . $technologies["Protection"] . ", " . $technologies["NRJ"] . ", " . $technologies["Hyp"] .
  1002. ", " . $technologies["RC"] . ", " . $technologies["RI"] . ", " . $technologies["PH"] .
  1003. ", " . $technologies["Laser"] . ", " . $technologies["Ions"] . ", " . $technologies["Plasma"] .
  1004. ", " . $technologies["RRI"] . ", " . $technologies["Graviton"] . ", " . $technologies["Astrophysique"] .
  1005. ");";
  1006. $db->sql_query($request);
  1007. }
  1008. if ($pub_view == "planets")
  1009. redirection("index.php?action=home&subaction=empire&view=" . $pub_view .
  1010. "&alert_empire=true");
  1011. else
  1012. redirection("index.php?action=home&subaction=empire&view=" . $pub_view);
  1013. } else
  1014. redirection("index.php?action=message&id_message=set_empire_failed_data&info");
  1015. }
  1016. /**
  1017. * remise en ordre des lunes en fonctions des positions des planetes
  1018. * @todo Query : x6
  1019. */
  1020. function user_set_all_empire_resync_moon()
  1021. {
  1022. global $db, $user_data;
  1023. // lews planetes
  1024. $request = "select planet_id, coordinates";
  1025. $request .= " from " . TABLE_USER_BUILDING;
  1026. $request .= " where user_id = " . $user_data["user_id"];
  1027. $request .= "…

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