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

/php/utils/EventLogger.php

http://github.com/gabrys/wikidot
PHP | 279 lines | 190 code | 61 blank | 28 comment | 5 complexity | 34efccd385c8fc490b0f43550fe7b162 MD5 | raw file
Possible License(s): LGPL-2.1
  1. <?php
  2. /**
  3. * Wikidot - free wiki collaboration software
  4. * Copyright (c) 2008, Wikidot Inc.
  5. *
  6. * This program is free software: you can redistribute it and/or modify
  7. * it under the terms of the GNU Affero General Public License as
  8. * published by the Free Software Foundation, either version 3 of the
  9. * License, or (at your option) any later version.
  10. *
  11. * This program is distributed in the hope that it will be useful,
  12. * but WITHOUT ANY WARRANTY; without even the implied warranty of
  13. * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
  14. * GNU Affero General Public License for more details.
  15. *
  16. * For more information about licensing visit:
  17. * http://www.wikidot.org/license
  18. *
  19. * @category Wikidot
  20. * @package Wikidot
  21. * @version $Id$
  22. * @copyright Copyright (c) 2008, Wikidot Inc.
  23. * @license http://www.gnu.org/licenses/agpl-3.0.html GNU Affero General Public License
  24. */
  25. class EventLogger {
  26. private static $instance;
  27. public static function instance(){
  28. if(self::$instance == null){
  29. self::$instance = new EventLogger();
  30. }
  31. return self::$instance;
  32. }
  33. public function logLogin(){
  34. $e = $this->newEvent();
  35. $e->setType("LOGIN");
  36. $e->setText("User \"".htmlspecialchars($e->getTemp("user")->getNickName())."\" (".$e->getTemp("user")->getName().") logged in.");
  37. $e->save();
  38. }
  39. public function logFailedLogin($email){
  40. $e = $this->newEvent();
  41. $e->setType("FAILED_LOGIN");
  42. $e->setText("Failed login for username \"$email\"");
  43. $e->save();
  44. }
  45. public function logLogout(){
  46. $e = $this->newEvent();
  47. if($e->getTemp("user") == null){
  48. return;
  49. }
  50. $e->setType("LOGOUT");
  51. $e->setText("User \"".htmlspecialchars($e->getTemp("user")->getNickName())."\" (".$e->getTemp("user")->getName().") logged out.");
  52. $e->save();
  53. }
  54. public function logNewPage($page){
  55. $e = $this->newEvent();
  56. $site = $e->getTemp("site");
  57. $e->setType("PAGE_NEW");
  58. $e->setPageId($page->getPageId());
  59. $e->setRevisionId($page->getRevisionId());
  60. $e->setText('New page "'.htmlspecialchars($page->getUnixName()).'" has been saved on site "'.htmlspecialchars($site->getName()).'".');
  61. $e->save();
  62. }
  63. public function logSavePage($page){
  64. $e = $this->newEvent();
  65. $site = $e->getTemp("site");
  66. $e->setType("PAGE_EDIT");
  67. $e->setPageId($page->getPageId());
  68. $e->setRevisionId($page->getRevisionId());
  69. $e->setText('Page "'.htmlspecialchars($page->getUnixName()).'" has been (edited and) saved on site "'.htmlspecialchars($site->getName()).'".');
  70. $e->save();
  71. }
  72. public function logPageRename($page, $oldName){
  73. $e = $this->newEvent();
  74. $site = $e->getTemp("site");
  75. $e->setType("PAGE_RENAME");
  76. $e->setPageId($page->getPageId());
  77. $e->setRevisionId($page->getRevisionId());
  78. $e->setText('Page "'.htmlspecialchars($oldName).'" has been renamed to "'.htmlspecialchars($page->getUnixName()).'" on site "'.htmlspecialchars($site->getName()).'".');
  79. $e->save();
  80. }
  81. public function logPageParentChange($page, $parentPage){
  82. $e = $this->newEvent();
  83. $site = $e->getTemp("site");
  84. $e->setType("PAGE_PARENT_CHANGE");
  85. $e->setPageId($page->getPageId());
  86. $e->setRevisionId($page->getRevisionId());
  87. $e->setText('Page "'.htmlspecialchars($page->getUnixName()).'" have a new parent: "'.($parentPage?htmlspecialchars($parentPage->getUnixName()):'').'" on site "'.htmlspecialchars($site->getName()).'".');
  88. $e->save();
  89. }
  90. public function logNewThread($thread){
  91. $e = $this->newEvent();
  92. $site = $e->getTemp("site");
  93. $e->setType("THREAD_NEW");
  94. $e->setThreadId($thread->getThreadId());
  95. $e->setText('New thread "'.htmlspecialchars($thread->getTitle()).'" has been created on site "'.htmlspecialchars($site->getName()).'".');
  96. $e->save();
  97. }
  98. public function logNewPost($post){
  99. $e = $this->newEvent();
  100. $site = $e->getTemp("site");
  101. $e->setType("POST_NEW");
  102. $e->setPostId($post->getPostId());
  103. $e->setThreadId($post->getThreadId());
  104. $e->setText('New post "'.htmlspecialchars($post->getTitle()).'" has been saved on site "'.htmlspecialchars($site->getName()).'".');
  105. $e->save();
  106. }
  107. public function logSavePost($post){
  108. $e = $this->newEvent();
  109. $site = $e->getTemp("site");
  110. $e->setType("POST_SAVE");
  111. $e->setPostId($post->getPostId());
  112. $e->setThreadId($post->getThreadId());
  113. $e->setText('Post "'.htmlspecialchars($post->getTitle()).'" has been (edited and) saved on site "'.htmlspecialchars($site->getName()).'".');
  114. $e->save();
  115. }
  116. public function logSaveThreadMeta($thread){
  117. $e = $this->newEvent();
  118. $site = $e->getTemp("site");
  119. $e->setType("THREAD_META_SAVE");
  120. $e->setThreadId($thread->getThreadId());
  121. $e->setText('Thread "'.htmlspecialchars($thread->getTitle()).'" meta has been changed on site "'.htmlspecialchars($site->getName()).'".');
  122. $e->save();
  123. }
  124. public function logSaveThreadStickness($thread){
  125. $e = $this->newEvent();
  126. $site = $e->getTemp("site");
  127. $e->setType("THREAD_STICKNESS_SAVE");
  128. $e->setThreadId($thread->getThreadId());
  129. $e->setText('Thread "'.htmlspecialchars($thread->getTitle()).'" stickness been changed on site "'.htmlspecialchars($site->getName()).'".');
  130. $e->save();
  131. }
  132. public function logSaveThreadBlock($thread){
  133. $e = $this->newEvent();
  134. $site = $e->getTemp("site");
  135. $e->setType("THREAD_BLOCK_SAVE");
  136. $e->setThreadId($thread->getThreadId());
  137. $e->setText('Thread "'.htmlspecialchars($thread->getTitle()).'" block been changed on site "'.htmlspecialchars($site->getName()).'".');
  138. $e->save();
  139. }
  140. public function logThreadMoved($thread, $category){
  141. $e = $this->newEvent();
  142. $site = $e->getTemp("site");
  143. $e->setType("THREAD_MOVED");
  144. $e->setThreadId($thread->getThreadId());
  145. $e->setText('Thread "'.htmlspecialchars($thread->getTitle()).'" been moved to category "'.htmlspecialchars($category->getName()).'" on site "'.htmlspecialchars($site->getName()).'".');
  146. $e->save();
  147. }
  148. public function logPostDelete($thread, $postTitle){
  149. $e = $this->newEvent();
  150. $site = $e->getTemp("site");
  151. $e->setType("POST_DELETED");
  152. $e->setThreadId($thread->getThreadId());
  153. $e->setText('Post "'.htmlspecialchars($postTitle).'" has been deleted in thread "'.htmlspecialchars($thread->getTitle()).'" on site "'.htmlspecialchars($site->getName()).'".');
  154. $e->save();
  155. }
  156. public function logFlagPage($page){
  157. $e = $this->newEvent();
  158. $site = $e->getTemp("site");
  159. $e->setType("ABUSE_PAGE_FLAG");
  160. $e->setText('Path "'.htmlspecialchars($page).'" has been flagged by user "'.htmlspecialchars($e->getTemp("user")->getNickName()).'" on site "'.htmlspecialchars($site->getName()).'".');
  161. $e->save();
  162. }
  163. public function logUnflagPage($page){
  164. $e = $this->newEvent();
  165. $site = $e->getTemp("site");
  166. $e->setType("ABUSE_PAGE_UNFLAG");
  167. $e->setText('Path "'.htmlspecialchars($page).'" has been unflagged by user "'.htmlspecialchars($e->getTemp("user")->getNickName()).'" on site "'.htmlspecialchars($site->getName()).'".');
  168. $e->save();
  169. }
  170. public function logFlagUser($user){
  171. $e = $this->newEvent();
  172. $site = $e->getTemp("site");
  173. $e->setType("ABUSE_USER_FLAG");
  174. $e->setText('User "'.htmlspecialchars($user->getNickName()).'" has been flagged by user "'.htmlspecialchars($e->getTemp("user")->getNickName()).'" on site "'.htmlspecialchars($site->getName()).'".');
  175. $e->save();
  176. }
  177. public function logUnflagUser($user){
  178. $e = $this->newEvent();
  179. $site = $e->getTemp("site");
  180. $e->setType("ABUSE_USER_UNFLAG");
  181. $e->setText('User "'.htmlspecialchars($user->getNickName()).'" has been unflagged by user "'.htmlspecialchars($e->getTemp("user")->getNickName()).'" on site "'.htmlspecialchars($site->getName()).'".');
  182. $e->save();
  183. }
  184. public function logFlagAnonymous($ipstring){
  185. $e = $this->newEvent();
  186. $site = $e->getTemp("site");
  187. $e->setType("ABUSE_ANONYMOUS_FLAG");
  188. $e->setText('Anonymous user "'.htmlspecialchars($ipstring).'" has been flagged by user "'.htmlspecialchars($e->getTemp("user")->getNickName()).'" on site "'.htmlspecialchars($site->getName()).'".');
  189. $e->save();
  190. }
  191. public function logUnflagAnonymous($ipstring){
  192. $e = $this->newEvent();
  193. $site = $e->getTemp("site");
  194. $e->setType("ABUSE_ANONYMOUS_UNFLAG");
  195. $e->setText('Anonymous user "'.htmlspecialchars($ipstring).'" has been unflagged by user "'.htmlspecialchars($e->getTemp("user")->getNickName()).'" on site "'.htmlspecialchars($site->getName()).'".');
  196. $e->save();
  197. }
  198. private function newEvent(){
  199. $event = new DB_LogEvent();
  200. $event->setDate(new ODate());
  201. // now to make things easier dig into some global variables and set what is needed
  202. $runData = OZONE::getRunData();
  203. //site
  204. $site = $runData->getTemp("site");
  205. $event->setSiteId($site->getSiteId());
  206. $event->setTemp("site", $site);
  207. // user_id (if any)
  208. $event->setUserId($runData->getUserId());
  209. $event->setTemp("user", $runData->getUser());
  210. //ip address
  211. list($ip, $proxy) = explode("|", $runData->createIpString());
  212. $event->setIp($ip);
  213. $event->setProxy($proxy);
  214. // user agent
  215. $event->setUserAgent($_SERVER['HTTP_USER_AGENT']);
  216. return $event;
  217. }
  218. }