mirror of
https://gerrit.wikimedia.org/r/mediawiki/extensions/Echo
synced 2024-11-27 17:20:40 +00:00
922fbc1e17
Change-Id: I3d613792175f68606483ba729a79b625a7ebcb02
157 lines
5.2 KiB
PHP
157 lines
5.2 KiB
PHP
<?php
|
|
/**
|
|
* MediaWiki Extension: Echo
|
|
*
|
|
* Permission is hereby granted, free of charge, to any person obtaining a copy
|
|
* of this software and associated documentation files (the "Software"), to deal
|
|
* in the Software without restriction, including without limitation the rights
|
|
* to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
|
|
* copies of the Software, and to permit persons to whom the Software is
|
|
* furnished to do so, subject to the following conditions:
|
|
*
|
|
* The above copyright notice and this permission notice shall be included in
|
|
* all copies or substantial portions of the Software.
|
|
*
|
|
* This program is distributed WITHOUT ANY WARRANTY.
|
|
*/
|
|
|
|
/**
|
|
*
|
|
* @file
|
|
* @ingroup Extensions
|
|
* @author Andrew Garrett
|
|
*/
|
|
|
|
# Alert the user that this is not a valid entry point to MediaWiki if they try to access the special pages file directly.
|
|
if ( !defined( 'MEDIAWIKI' ) ) {
|
|
echo <<<EOT
|
|
To install this extension, put the following line in LocalSettings.php:
|
|
require_once( "$IP/extensions/Echo/Echo.php" );
|
|
EOT;
|
|
exit( 1 );
|
|
}
|
|
|
|
// Extension credits that will show up on Special:Version
|
|
$wgExtensionCredits['specialpage'][] = array(
|
|
'path' => __FILE__,
|
|
'name' => 'Echo',
|
|
'url' => 'http://www.mediawiki.org/wiki/Echo_(Notifications)',
|
|
'author' => array(
|
|
'Andrew Garrett',
|
|
),
|
|
'descriptionmsg' => 'echo-desc',
|
|
);
|
|
|
|
$dir = dirname( __FILE__ ) . '/';
|
|
$wgExtensionMessagesFiles['Echo'] = $dir . 'Echo.i18n.php';
|
|
|
|
$wgAutoloadClasses['EchoHooks'] = "$dir/Hooks.php";
|
|
$wgAutoloadClasses['EchoSubscription'] = "$dir/model/Subscription.php";
|
|
$wgAutoloadClasses['EchoEvent'] = "$dir/model/Event.php";
|
|
$wgAutoloadClasses['EchoNotification'] = "$dir/model/Notification.php";
|
|
|
|
// Formatters
|
|
$wgAutoloadClasses['EchoNotificationFormatter'] = "$dir/formatters/NotificationFormatter.php";
|
|
$wgAutoloadClasses['EchoBasicFormatter'] = "$dir/formatters/BasicFormatter.php";
|
|
$wgAutoloadClasses['EchoEditFormatter'] = "$dir/formatters/EditFormatter.php";
|
|
|
|
// Internal stuff
|
|
$wgAutoloadClasses['EchoNotifier'] = "$dir/Notifier.php";
|
|
$wgAutoloadClasses['EchoNotificationController'] = "$dir/controller/NotificationController.php";
|
|
|
|
// Job queue
|
|
$wgAutoloadClasses['EchoNotificationJob'] = "$dir/jobs/NotificationJob.php";
|
|
$wgJobClasses['EchoNotificationJob'] = 'EchoNotificationJob';
|
|
|
|
// API
|
|
$wgAutoloadClasses['ApiEchoNotifications'] = "$dir/api/ApiEchoNotifications.php";
|
|
$wgAPIMetaModules['notifications'] = 'ApiEchoNotifications';
|
|
|
|
// Special page
|
|
$wgAutoloadClasses['SpecialNotifications'] = "$dir/special/SpecialNotifications.php";
|
|
$wgSpecialPages['Notifications'] = 'SpecialNotifications';
|
|
|
|
// Housekeeping hooks
|
|
$wgHooks['LoadExtensionSchemaUpdates'][] = 'EchoHooks::getSchemaUpdates';
|
|
$wgHooks['GetPreferences'][] = 'EchoHooks::getPreferences';
|
|
$wgHooks['PersonalUrls'][] = 'EchoHooks::onPersonalUrls';
|
|
$wgHooks['BeforePageDisplay'][] = 'EchoHooks::beforePageDisplay';
|
|
|
|
$echoResourceTemplate = array(
|
|
'localBasePath' => "$dir/modules",
|
|
'remoteExtPath' => 'Echo/modules',
|
|
'group' => 'ext.echo',
|
|
);
|
|
|
|
$wgResourceModules += array(
|
|
'ext.echo.base' => $echoResourceTemplate + array(
|
|
'styles' => 'base/ext.echo.base.css',
|
|
),
|
|
'ext.echo.overlay' => $echoResourceTemplate + array(
|
|
'scripts' => 'overlay/ext.echo.overlay.js',
|
|
'styles' => 'overlay/ext.echo.overlay.css',
|
|
'dependencies' => array('ext.echo.base', 'mediawiki.api'),
|
|
'messages' => array(
|
|
'echo-link-new',
|
|
'echo-link-none',
|
|
'echo-overlay-title',
|
|
'echo-overlay-link',
|
|
'echo-none',
|
|
),
|
|
),
|
|
'ext.echo.special' => $echoResourceTemplate + array(
|
|
'dependencies' => array('ext.echo.base'),
|
|
),
|
|
);
|
|
|
|
$wgDefaultUserOptions['echo-notify-watchlist'] = true;
|
|
|
|
/**
|
|
* This Echo hook can be used to define users who are by default interested in
|
|
* certain events.
|
|
* For example, it can be used to say that users are by default interested in
|
|
* their own user talk page being edited. In fact, that is what it is used for
|
|
* internally.
|
|
*/
|
|
$wgHooks['EchoGetDefaultNotifiedUsers'] = array('EchoHooks::getDefaultNotifiedUsers');
|
|
$wgHooks['EchoGetNotificationTypes'] = array('EchoHooks::getNotificationTypes');
|
|
|
|
// Hook appropriate events
|
|
$wgHooks['WatchArticleComplete'][] = 'EchoHooks::onWatch';
|
|
$wgHooks['UnwatchArticleComplete'][] = 'EchoHooks::onUnwatch';
|
|
$wgHooks['ArticleSaveComplete'][] = 'EchoHooks::onArticleSaved';
|
|
|
|
// Disable ordinary email notifications
|
|
$wgHooks['AbortEmailNotification'][] = 'EchoHooks::abortEmailNotification';
|
|
|
|
// Configuration
|
|
|
|
$wgEchoDefaultNotificationTypes = array(
|
|
'all' => array(
|
|
'notify' => true,
|
|
'email' => true,
|
|
),
|
|
);
|
|
|
|
$wgEchoNotifiers = array(
|
|
'notify' => array('EchoNotifier', 'notifyWithNotification'),
|
|
'email' => array('EchoNotifier', 'notifyWithEmail'),
|
|
);
|
|
|
|
$wgEchoNotificationFormatters = array(
|
|
'edit-user-talk' => array(
|
|
'type' => 'edit',
|
|
'message-key' => 'notification-edit-talk-page',
|
|
'message-params' => array('agent', 'difflink', 'user'),
|
|
'email-subject-message' => 'notification-edit-talk-page-email-subject',
|
|
'email-body-message' => 'notification-edit-talk-page-email-body',
|
|
),
|
|
'edit' => array(
|
|
'type' => 'edit',
|
|
'message-key' => 'notification-edit',
|
|
'message-params' => array('agent', 'title', 'difflink', 'user'),
|
|
'email-subject-message' => 'notification-edit-email-subject',
|
|
'email-body-message' => 'notification-edit-email-body',
|
|
),
|
|
);
|