https://www.mediawiki.org/wiki/Special:Code/MediaWiki/108243

Revision: 108243
Author:   ialex
Date:     2012-01-06 15:56:08 +0000 (Fri, 06 Jan 2012)
Log Message:
-----------
* Moved hooks to their own file
* Defer opening of syslog until a message is logged and removed extension 
function
* Made hooks work with current MW; removed all reference in hooks signatures, 
removed no-longer passed (or useless) parameters and added some missing "return 
true;"
* Bump version

Modified Paths:
--------------
    trunk/extensions/Syslog/Syslog.php

Added Paths:
-----------
    trunk/extensions/Syslog/SyslogHooks.php

Modified: trunk/extensions/Syslog/Syslog.php
===================================================================
--- trunk/extensions/Syslog/Syslog.php  2012-01-06 15:38:20 UTC (rev 108242)
+++ trunk/extensions/Syslog/Syslog.php  2012-01-06 15:56:08 UTC (rev 108243)
@@ -1,6 +1,7 @@
 <?php
-/* Syslog.php -- an extension to log events to the system logger
- * Copyright 2004 Evan Prodromou <[email protected]>
+/**
+ * Syslog.php -- an extension to log events to the system logger
+ * Copyright © 2004 Evan Prodromou <[email protected]>
  *
  *  This program is free software; you can redistribute it and/or modify
  *  it under the terms of the GNU General Public License as published by
@@ -17,123 +18,38 @@
  *  Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA  02111-1307  USA
  *
  * @author Evan Prodromou <[email protected]>
+ * @author Alexandre Emsenhuber
  * @ingroup Extensions
  */
 
 if ( !defined( 'MEDIAWIKI' ) ) {
-       die(1);
+       die( 1 );
 }
 
-# Setup globals
-
-$wgSyslogIdentity = false;
-$wgSyslogFacility = LOG_USER;
-
-
-# Hook for article protection
-
-function syslogArticleProtect(&$article, &$user, $protect, &$reason, 
&$moveonly) {
-       $title = $article->mTitle;
-       syslog(LOG_NOTICE, "User '" . $user->getName() . "' " .
-                  (($protect) ? "protected" : "unprotected") . " article '" .
-                  $title->getPrefixedText() .
-                  "' for '" . $reason . "' " . (($moveonly) ? "(moves only)" : 
"") );
-       return true;
-}
-
-# Hook for article deletion
-
-function syslogArticleDelete(&$article, &$user, &$reason) {
-       $title = $article->mTitle;
-       syslog(LOG_NOTICE, "User '" . $user->getName() . "' deleted '" .
-                  $title->getPrefixedText() .
-                  "' for '" . $reason . "' ");
-       return true;
-}
-
-# Hook for article save
-
-function syslogArticleSave(&$article, &$user, &$text, $summary, $isminor, 
$iswatch, $section) {
-       $title = $article->mTitle;
-       syslog(LOG_NOTICE, "User '" . $user->getName() . "' saved '" .
-                  $title->getPrefixedText() .
-                  "' with comment '" . $summary . "' ");
-       return true;
-}
-
-# Hook for IP & user blocks
-
-function syslogBlockIp(&$block, &$user) {
-       syslog(LOG_NOTICE, "User '" . $user->getName() . 
-                  "' blocked '" . (($block->mUser) ? $block->mUser : 
$block->mAddress) .
-                  "' for '" . $block->mReason . "' until '" . $block->mExpiry 
. "'");
-       return true;
-}
-
-function syslogEmailUser(&$to, &$from, &$subject, &$text) {
-       syslog(LOG_INFO, "Email sent from '$from' to '$to' with subject 
'$subject'");
-}
-
-# Hook for unwatch
-
-function syslogUnwatch(&$user, &$article) {
-       syslog(LOG_INFO, "User '" . $user->getName() . "' stopped watching '" .
-                  $article->mTitle->getPrefixedText() . "'");
-}
-
-# Hook for login
-
-function syslogUserLogin(&$user) {
-       syslog(LOG_INFO, "User '" . $user->getName() . "' logged in");
-       return true;
-}
-
-# Hook for logout
-
-function syslogUserLogout(&$user) {
-       syslog(LOG_INFO, "User '" . $user->getName() . "' logged out");
-       return true;
-}
-
-# Hook for watch
-
-function syslogWatch(&$user, &$article) {
-       syslog(LOG_INFO, "User '" . $user->getName() . "' started watching '" .
-                  $article->mTitle->getPrefixedText() . "'");
-}
-
-# Setup -- called once environment is configured
-
-function setupSyslog() {
-       
-       global $wgSyslogIdentity, $wgSyslogFacility, $_syslogId;
-       global $wgHooks, $wgDBname;
-       
-       openlog($wgSyslogIdentity ? $wgSyslogIdentity : $wgDBname, LOG_ODELAY | 
LOG_PID, $wgSyslogFacility);
-       
-       $wgHooks['UserLoginComplete'][] = 'syslogUserLogin';
-       $wgHooks['UserLogout'][] = 'syslogUserLogout';
-       $wgHooks['BlockIpComplete'][] = 'syslogBlockIp';
-       $wgHooks['ArticleProtectComplete'][] = 'syslogArticleProtect';
-       $wgHooks['ArticleDeleteComplete'][] = 'syslogArticleDelete';
-       $wgHooks['ArticleSaveComplete'][] = 'syslogArticleSave';
-       $wgHooks['EmailUserComplete'][] = 'syslogEmailUser';
-       $wgHooks['WatchArticleComplete'][] = 'syslogWatch';
-       $wgHooks['UnwatchArticleComplete'][] = 'syslogUnwatch';
-       
-       return true;
-}
-
-# Add to global list of extensions
-
-$wgExtensionFunctions[] = 'setupSyslog';
-
 $wgExtensionCredits['other'][] = array(
        'path' => __FILE__,
        'name' => 'Syslog',
-       'author' => 'Evan Prodromou',
+       'author' => array( 'Evan Prodromou', 'Alexandre Emsenhuber' ),
        'url' => 'https://www.mediawiki.org/wiki/Extension:Syslog',
        'description' => 'An extension to log events to the system logger',
-       'version' => '1.1'
+       'version' => '1.2'
 );
 
+$wgAutoloadClasses['SyslogHooks'] = dirname( __FILE__ ) . '/SyslogHooks.php';
+
+# Setup globals
+
+$wgSyslogIdentity = false;
+$wgSyslogFacility = LOG_USER;
+
+# Setup hooks
+
+$wgHooks['ArticleDeleteComplete'][] = 'SyslogHooks::onArticleDeleteComplete';
+$wgHooks['ArticleProtectComplete'][] = 'SyslogHooks::onArticleProtectComplete';
+$wgHooks['ArticleSaveComplete'][] = 'SyslogHooks::onArticleSaveComplete';
+$wgHooks['BlockIpComplete'][] = 'SyslogHooks::onBlockIpComplete';
+$wgHooks['EmailUserComplete'][] = 'SyslogHooks::onEmailUserComplete';
+$wgHooks['UnwatchArticleComplete'][] = 'SyslogHooks::onUnwatchArticleComplete';
+$wgHooks['UserLoginComplete'][] = 'SyslogHooks::onUserLoginComplete';
+$wgHooks['UserLogoutComplete'][] = 'SyslogHooks::onUserLogoutComplete';
+$wgHooks['WatchArticleComplete'][] = 'SyslogHooks::onWatchArticleComplete';

Added: trunk/extensions/Syslog/SyslogHooks.php
===================================================================
--- trunk/extensions/Syslog/SyslogHooks.php                             (rev 0)
+++ trunk/extensions/Syslog/SyslogHooks.php     2012-01-06 15:56:08 UTC (rev 
108243)
@@ -0,0 +1,127 @@
+<?php
+
+/**
+ * Hooks for Syslog extension
+ *
+ *  This program is free software; you can redistribute it and/or modify
+ *  it under the terms of the GNU General Public License as published by
+ *  the Free Software Foundation; either version 2 of the License, or
+ *  (at your option) any later version.
+ *
+ * This program is distributed in the hope that it will be useful,
+ *  but WITHOUT ANY WARRANTY; without even the implied warranty of
+ *  MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+ *  GNU General Public License for more details.
+ *
+ *  You should have received a copy of the GNU General Public License
+ *  along with this program; if not, write to the Free Software
+ *  Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA  02111-1307  USA
+ */
+
+class SyslogHooks {
+
+       /**
+        * Log a message in the syslog
+        *
+        * @param $message string
+        */
+       private static function log( $message ) {
+               static $init = false;
+
+               if ( !$init ) {
+                       $init = true;
+
+                       global $wgSyslogIdentity, $wgSyslogFacility, $wgHooks;
+
+                       openlog( $wgSyslogIdentity ? $wgSyslogIdentity : 
wfWikiID(), LOG_ODELAY | LOG_PID, $wgSyslogFacility);
+               }
+
+               syslog( LOG_NOTICE, $message );
+       }
+
+       /**
+        * Hook for article deletion
+        */
+       public static function onArticleDeleteComplete( $article, $user, 
$reason ) {
+               $userName = $user->getName();
+               $pageName = $article->getTitle()->getPrefixedText();
+               self::log( "User '{$userName}' deleted '{$pageName}' for 
'{$reason}'" );
+               return true;
+       }
+
+       /**
+        * Hook for article protection
+        */
+       public static function onArticleProtectComplete( $article, $user, 
$protect, $reason ) {
+               $userName = $user->getName();
+               $pageName = $article->getTitle()->getPrefixedText();
+               $action = count( $protect ) ? 'protected' : 'unprotected';
+               self::log( "User '{$userName}' {$action} '{$pageName}' for 
'{$reason}'" );
+               return true;
+       }
+
+       /**
+        * Hook for article save
+        */
+       public static function onArticleSaveComplete( $article, $user, $text, 
$summary ) {
+               $userName = $user->getName();
+               $pageName = $article->getTitle()->getPrefixedText();
+               self::log( "User '{$userName}' saved '{$pageName}' with comment 
'{$summary}'" );
+               return true;
+       }
+
+       /**
+        * Hook for IP & user blocks
+        */
+       public static function onBlockIpComplete( $block, $user ) {
+               $userName = $user->getName();
+               $target = $block->getTarget();
+               $target = is_object( $target ) ? $target->getName() : $target;
+               self::log( "User '{$userName}' blocked '{$target}' for 
'{$block->mReason}' until '{$block->mExpiry}'" );
+               return true;
+       }
+
+       /**
+        * Hook for Special:Emailuser
+        */
+       public static function onEmailUserComplete( $to, $from, $subject, $text 
) {
+               self::log( "Email sent from '$from' to '$to' with subject 
'$subject'" );
+               return true;
+       }
+
+       /**
+        * Hook for page unwatching
+        */
+       public static function onUnwatchArticleComplete( $user, $article ) {
+               $userName = $user->getName();
+               $pageName = $article->getTitle()->getPrefixedText();
+               self::log( "User '{$userName}' stopped watching '{$pageName}'" 
);
+               return true;
+       }
+
+       /**
+        * Hook for login
+        */
+       public static function onUserLoginComplete( $user ) {
+               self::log( "User '" . $user->getName() . "' logged in" );
+               return true;
+       }
+
+       /**
+        * Hook for logout
+        */
+       public static function onUserLogoutComplete( $user, $inject_html, 
$oldName ) {
+               self::log( "User '" . $oldName . "' logged out" );
+               return true;
+       }
+
+       /**
+        * Hook for watch
+        */
+       public static function onWatchArticleComplete( $user, $article ) {
+               $userName = $user->getName();
+               $pageName = $article->getTitle()->getPrefixedText();
+               self::log( "User '{$userName}' started watching '{$pageName}'" 
);
+               return true;
+       }
+}


Property changes on: trunk/extensions/Syslog/SyslogHooks.php
___________________________________________________________________
Added: svn:eol-style
   + native


_______________________________________________
MediaWiki-CVS mailing list
[email protected]
https://lists.wikimedia.org/mailman/listinfo/mediawiki-cvs

Reply via email to