PageRenderTime 21ms CodeModel.GetById 28ms RepoModel.GetById 0ms app.codeStats 0ms

/apps/frontend/modules/player/actions/actions.class.php

https://github.com/barncow/tf2logs
PHP | 162 lines | 128 code | 19 blank | 15 comment | 23 complexity | f05adb97ffde8df6212132b0baf8944a MD5 | raw file
  1. <?php
  2. /**
  3. * player actions.
  4. *
  5. * @package tf2logs
  6. * @subpackage player
  7. * @author Your name here
  8. * @version SVN: $Id: actions.class.php 23810 2009-11-12 11:07:44Z Kris.Wallsmith $
  9. */
  10. class playerActions extends BasesfPHPOpenIDAuthActions {
  11. public function executeShowNumericSteamId(sfWebRequest $request) {
  12. $this->setTemplate('show');
  13. $this->player = Doctrine::getTable('Player')->getPlayerStatsByNumericSteamid($request->getParameter('id'));
  14. $this->forward404Unless($this->player);
  15. Doctrine::getTable('Player')->incrementViews($request->getParameter('id'));
  16. $this->roles = Doctrine::getTable('Player')->getPlayerRolesByNumericSteamid($request->getParameter('id'));
  17. $this->weapons = Doctrine::getTable('Weapon')->getWeaponsForPlayerId($request->getParameter('id'));
  18. $this->weaponStats = Doctrine::getTable('WeaponStat')->getPlayerWeaponStatsByNumericSteamid($request->getParameter('id'));
  19. $this->slPager = new sfDoctrinePager(
  20. 'Log',
  21. sfConfig::get('app_max_results_per_page')
  22. );
  23. $this->slPager->setQuery(Doctrine::getTable('Log')->getSubmittedLogsByPlayerNumericSteamidQuery($request->getParameter('id')));
  24. $this->slPager->setPage($request->getParameter('slPage', 1));
  25. $this->slPager->init();
  26. $this->numSubmittedLogs = count($this->slPager);
  27. $this->plPager = new sfDoctrinePager(
  28. 'Log',
  29. sfConfig::get('app_max_results_per_page')
  30. );
  31. $this->plPager->setQuery(Doctrine::getTable('Log')->getParticipantLogsByPlayerNumericSteamidQuery($request->getParameter('id')));
  32. $this->plPager->setPage($request->getParameter('plPage', 1));
  33. $this->plPager->init();
  34. }
  35. public function executeSearch(sfWebRequest $request) {
  36. $param = $request->getParameter('param');
  37. if($param === null) {
  38. return;//no param set, just go to search form.
  39. }
  40. if(trim($param) == "") {
  41. $this->getUser()->setFlash('error', 'You must enter search criteria.');
  42. $this->param = "";
  43. return; //no param set, just go to search form.
  44. } else if(is_numeric($param) && strpos($param, "7656119") == 0) {
  45. //numeric steam id given - it is numeric and starts with above string.
  46. $p = Doctrine::getTable('Player')->findOneByNumericSteamid($param);
  47. if($p) {
  48. $this->redirect('@player_by_numeric_steamid?id='.$p->getNumericSteamid());
  49. } else {
  50. $this->getUser()->setFlash('error', 'The player specified could not be found.');
  51. }
  52. } else if(strpos($param, "STEAM_") === 0) {
  53. //steam id string
  54. $p = Doctrine::getTable('Player')->findOneBySteamid($param);
  55. if($p) {
  56. $this->redirect('@player_by_numeric_steamid?id='.$p->getNumericSteamid());
  57. } else {
  58. $this->getUser()->setFlash('error', 'The player specified could not be found.');
  59. }
  60. } else {
  61. //just do a name search.
  62. $this->pager = new sfDoctrinePager(
  63. 'Player',
  64. sfConfig::get('app_max_results_per_page')
  65. );
  66. $this->pager->setQuery(Doctrine::getTable('Player')->findPlayerForGivenNamePartialQuery($param));
  67. $this->pager->setPage($request->getParameter('page', 1));
  68. $this->pager->init();
  69. if(count($this->pager->getResults()) == 1) {
  70. $r = $this->pager->getResults();
  71. $r = $r[0];
  72. $this->getUser()->setFlash('notice', 'Since your search returned only one result, you were automatically sent to it.');
  73. $this->redirect('@player_by_numeric_steamid?id='.$r->getNumericSteamid());
  74. }
  75. if(count($this->pager->getResults()) == 0) {
  76. $this->getUser()->setFlash('error', 'No results found.');
  77. }
  78. }
  79. $this->param = $param;
  80. }
  81. public function executeControlPanel(sfWebRequest $request) {
  82. $playerid = $this->getUser()->getAttribute(sfConfig::get('app_playerid_session_var'));
  83. $this->player = Doctrine::getTable('Player')->findOneById($playerid);
  84. $this->slPager = new sfDoctrinePager(
  85. 'Log',
  86. sfConfig::get('app_max_results_per_page')
  87. );
  88. $this->slPager->setQuery(Doctrine::getTable('Log')->getSubmittedLogsByPlayerIdQuery($playerid));
  89. $this->slPager->setPage($request->getParameter('slPage', 1));
  90. $this->slPager->init();
  91. $this->numSubmittedLogs = count($this->slPager);
  92. }
  93. //////////////////////AUTH ACTIONS///////////////////////////////
  94. public function executeOpenidError() {
  95. $this->error = $this->getRequest()->getErrors();
  96. $this->getResponse()->setCookie('known_openid_identity', '');
  97. }
  98. public function executeLogin() {
  99. $this->getUser()->setFlash('error', 'You must log in to do that action.');
  100. $this->redirect('@homepage');
  101. }
  102. //this will send the user directly to the url, instead of bringing up a page first.
  103. public function executeAutoLogin() {
  104. //todo check if already logged in
  105. $this->getUser()->setAttribute('openid_real_back_url', $this->getRequest()->getReferer());
  106. $this->openID = $this->getRedirectHtml(sfConfig::get('app_steam_openid_url'));
  107. $this->redirect($this->openID['url']);
  108. }
  109. public function executeLogout() {
  110. $this->getUser()->setAuthenticated(false);
  111. $this->getResponse()->setCookie('known_openid_identity', '');
  112. $this->getUser()->setAttribute(sfConfig::get('app_playerid_session_var'), '');
  113. $this->getUser()->clearCredentials();
  114. $this->getUser()->setFlash('notice', 'You were successfully logged out.');
  115. $this->redirect('@homepage');
  116. }
  117. public function openIDCallback($openid_validation_result) {
  118. $parsingUtils = new ParsingUtils();
  119. $steamid = $parsingUtils->getNumericSteamidFromOpenID($openid_validation_result['identity']);
  120. $player = Doctrine::getTable('Player')->findOneByNumericSteamid($steamid);
  121. if(!$player) {
  122. $player = new Player();
  123. $player->setNumericSteamid($steamid);
  124. }
  125. $steamwebapi = new SteamWebAPI();
  126. $name = $steamwebapi->getPlayerName($steamid);
  127. if($name && trim($name) != "") {
  128. $player->setName($name);
  129. }
  130. $player->setLastLogin(date('Y-m-d H:i:s'));
  131. $player->save();
  132. $this->getUser()->addCredential($player->getCredential());
  133. $this->getUser()->setAttribute(sfConfig::get('app_playerid_session_var'), (int)$player->getId());
  134. //symfony credential system should handle what a user has access to. Just assume it's ok.
  135. $this->getUser()->setFlash('notice', 'You were successfully logged in.');
  136. $this->getUser()->setAuthenticated(true);
  137. sfContext::getInstance()->getResponse()->setCookie('known_openid_identity',$openid_validation_result['identity']);
  138. $back = $this->getUser()->getAttribute('openid_real_back_url');
  139. $this->getUser()->getAttributeHolder()->remove('openid_real_back_url');
  140. if (empty($back)) $back = '@controlpanel';
  141. $this->redirect($back);
  142. }
  143. }