Enregistrer dans Special:Log

This page is a translated version of the page Manual:Logging to Special:Log and the translation is 100% complete.

Cette page décrit la manière d'enregistrer les actions dans Special:Log. (enregistrer dans le journal de l'application est discuté sur Manuel:Journalisation structurée ).

Exemple

Ceci illustre comment coder les entrées Special:Log pour les extensions. Les messages du journal apparaissent sur la page Special:Log et peuvent être filtrées par exemple par pseudo de connexion, par utilisateur, par titre ou intervalle de dates.

Dans le fichier de configuration de votre extension

Ceci devrait fonctionner dans extension.json  :

{
    "LogTypes": [ "foo" ],
    "LogNames": {
        "foo": "foo-name"
    },
    "LogHeaders": {
        "foo": "foo-header"
    },
    "LogActionsHandlers": {
        "foo/*": "LogFormatter"
    }
}

Pour les journaux du noyau, la configuration est dans DefaultSettings.php .

$wgLogTypes[] = 'foo';

// You can still set
// $wgLogNames['foo'] = 'foo-name';
// $wgLogHeaders['foo'] = 'foo-header';
// 
// But you don't need to, if you follow this naming convention for your i18n messages:
//
// log-name-foo
//   for the Special:Log log name that appears in the drop-down on the Special:Log page
//
// log-description-foo
//   for the Special:Log description that appears on the Special:Log page when you filter 
//   logs on this specific log name

$wgLogActionsHandlers['foo/bar'] = 'LogFormatter';

// Or if you want catch-all, do:
$wgLogActionsHandlers['foo/*'] = 'LogFormatter';

// Or if you need some extra logic, you can write your own formatter
// (subclassing LogFormatter) and do:
$wgLogActionsHandlers['foo/*'] = 'FooLogFormatter';

Dans le fichier i18n/en.json

{
	"log-name-foo": "Foo log",
	"log-description-foo": "These events track when Foo events happen in the system.",
	"logentry-foo-bar": "$1 {{GENDER:$2|did bar}} to page $3"
}

Documentation des messages (qqq.json):

{
	"log-name-foo": "The Special:Log log name that appears in the drop-down on the Special:Log page",
	"log-description-foo": "The Special:Log description that appears on the Special:Log page when you filter logs on this specific log name",
	"logentry-foo-bar": "The template of the log entry message"
}

Dans le code de l'extension

// Anywhere in your code where you want to generate a log entry

$logEntry = new ManualLogEntry( 'foo', 'bar' ); // Log action 'bar' in the Special:Log for 'foo'
$logEntry->setPerformer( $user ); // User object, the user who performed this action
$logEntry->setTarget( $this ); // The page that this log entry affects, a Title object
$logEntry->setComment( $reason ); // Optional, user provided comment

// Optionally, add additional parameters for use in the log entry’s i18n message.
// Numbering should start from 4 and can be used in the message as $4, $5 and so on.
//
// Indexes $1, $2, and $3 are reserved
// and provide the username and target page parameters for the messages.
// $1 is a reference to the user page and user talk page in the wiki
// $2 is used to determine the gender of the user for any gender specific messages
// $3 is a reference to the page on which the action took place
//
// If you want to store stuff that should not be available in messages, don’t
// prefix the array key with a number and don’t use the colons.
// 
// The format is index:formatspecifier:name.
// Format specifier is currently unused, but in future you could say for example
// that this param is a number, format it according to the user language.
// Name is just for giving identifier for the value, and helps to debug issues
// versus unindexed list of parameters.
$logEntry->setParameters( [
  '4::paramname' => 'customparam',
  'hiddenparam' => 'ugly stuff',
] );

// We're not done yet, we need to insert the log entry into the database.
// Insert adds it to the logging table and returns the id of that log entry.
$logid = $logEntry->insert();

// Optionally, publish the log entry in recent changes and the UDP feed of recent changes
// if we want. UDP feed is mainly used for echoing the recent change items into IRC.
// publish() takes second param with values 'rcandudp' (default), 'rc' and 'udp'.
$logEntry->publish( $logid );

Ajouter des liens

Pour ajouter un lien vers les entrées du journal, vous devez passer le nom de la page etc.. dans les paramètres et formater cela dans votre LogFormatter en utilisant makePageLink(). Avec les autre méthodes, les sorties non-html (comme le flux UDP vers IRC) seront cassées.

Voir TranslateLogFormatter pour un exemple de LogFormatter avec des liens.

Voir aussi