PageRenderTime 46ms CodeModel.GetById 21ms RepoModel.GetById 1ms app.codeStats 0ms

/solar27/include/game/classes/event_creator.php

https://bitbucket.org/sebs/mosolar
PHP | 96 lines | 58 code | 24 blank | 14 comment | 14 complexity | 5f654cf45586e7adb764b3bc462aa41a MD5 | raw file
Possible License(s): LGPL-2.1, AGPL-3.0, BSD-3-Clause, LGPL-2.0, MIT, GPL-2.0
  1. <?php
  2. // Solar Imperium is licensed under GPL2, Check LICENSE.TXT for mode details //
  3. class EventCreator
  4. {
  5. var $DB;
  6. var $type;
  7. var $from;
  8. var $to;
  9. var $params;
  10. var $seen;
  11. var $sticky;
  12. var $height;
  13. var $game_id;
  14. //////////////////////////////////////////////////////////////////////////////
  15. //
  16. //////////////////////////////////////////////////////////////////////////////
  17. function EventCreator($DB)
  18. {
  19. $this->DB = $DB;
  20. $this->sticky = 0;
  21. $this->seen = 0;
  22. $this->height = 160;
  23. $this->game_id = round($_SESSION["game"]);
  24. }
  25. //////////////////////////////////////////////////////////////////////////////
  26. //
  27. //////////////////////////////////////////////////////////////////////////////
  28. function broadcast()
  29. {
  30. $query = "SELECT * FROM game".$this->game_id."_tb_empire WHERE active='1'";
  31. $recipients = $this->DB->Execute($query);
  32. // verify if duplicate are found , if yes skip them
  33. $query = "SELECT COUNT(*) FROM game".$this->game_id."_tb_event WHERE event_type='".$this->type."' AND event_from='".$this->from."' AND params='".$this->params."'";
  34. $rs = $this->DB->Execute($query);
  35. if (!$rs) trigger_error($this->DB->ErrorMsg());
  36. if ($rs->fields[0] != 0) return;
  37. while(!$recipients->EOF)
  38. {
  39. $query = "INSERT INTO game".$this->game_id."_tb_event (event_type,event_from,event_to,params,seen,sticky,date,height) ".
  40. "VALUES('".$this->type."','".$this->from."','".$recipients->fields["id"]."','".addslashes(serialize($this->params))."',".$this->seen.",".$this->sticky.",".time(NULL).",".$this->height.")";
  41. if (!$this->DB->Execute($query)) trigger_error($this->DB->ErrorMsg());
  42. $recipients->MoveNext();
  43. }
  44. // garbage collection
  45. $timeout_unseen = time(NULL) - CONF_UNSEEN_EVENT_TIMEOUT;
  46. $timeout_seen = time(NULL) - CONF_SEEN_EVENT_TIMEOUT;
  47. if (!$this->DB->Execute("DELETE FROM game".$this->game_id."_tb_event WHERE date < $timeout_unseen AND seen='0'")) trigger_error($this->DB->ErrorMsg());
  48. if (!$this->DB->Execute("DELETE FROM game".$this->game_id."_tb_event WHERE date < $timeout_seen AND seen='1'")) trigger_error($this->DB->ErrorMsg());
  49. }
  50. //////////////////////////////////////////////////////////////////////////////
  51. //
  52. //////////////////////////////////////////////////////////////////////////////
  53. function send()
  54. {
  55. global $GAME;
  56. // verify if duplicate are found , if yes skip them
  57. $query = "SELECT COUNT(*) FROM game".$this->game_id."_tb_event WHERE event_type='".$this->type."' AND event_from='".$this->from."' AND params='".$this->params."'";
  58. $rs = $this->DB->Execute($query);
  59. if (!$rs) trigger_error($this->DB->ErrorMsg());
  60. if ($rs->fields[0] != 0) return;
  61. if ((isset($GAME["ai_turn"])) && ($GAME["ai_turn"]==true)) return;
  62. $query = "INSERT INTO game".$this->game_id."_tb_event (event_type,event_from,event_to,params,seen,sticky,date,height) ".
  63. "VALUES('".$this->type."','".$this->from."','".$this->to."','".addslashes(serialize($this->params))."',".$this->seen.",".$this->sticky.",".time(NULL).",".$this->height.")";
  64. if (!$this->DB->Execute($query)) trigger_error($this->DB->ErrorMsg());
  65. // garbage collection
  66. $timeout_unseen = time(NULL) - CONF_UNSEEN_EVENT_TIMEOUT;
  67. $timeout_seen = time(NULL) - CONF_SEEN_EVENT_TIMEOUT;
  68. if (!$this->DB->Execute("DELETE FROM game".$this->game_id."_tb_event WHERE date < $timeout_unseen AND seen='0'")) trigger_error($this->DB->ErrorMsg());
  69. if (!$this->DB->Execute("DELETE FROM game".$this->game_id."_tb_event WHERE date < $timeout_seen AND seen='1'")) trigger_error($this->DB->ErrorMsg());
  70. }
  71. }
  72. ?>