Command line interface to Article::doEdit()
authorTim Starling <tstarling@users.mediawiki.org>
Sat, 16 Dec 2006 06:15:04 +0000 (06:15 +0000)
committerTim Starling <tstarling@users.mediawiki.org>
Sat, 16 Dec 2006 06:15:04 +0000 (06:15 +0000)
includes/DefaultSettings.php
maintenance/edit.php [new file with mode: 0644]

index fb228fc..a260d33 100644 (file)
@@ -2262,7 +2262,7 @@ $wgAllowDisplayTitle = false ;
  * Array of usernames which may not be registered or logged in from
  * Maintenance scripts can still use these
  */
-$wgReservedUsernames = array( 'MediaWiki default', 'Conversion script' );
+$wgReservedUsernames = array( 'MediaWiki default', 'Conversion script', 'Maintenance script' );
 
 /**
  * MediaWiki will reject HTMLesque tags in uploaded files due to idiotic browsers which can't
diff --git a/maintenance/edit.php b/maintenance/edit.php
new file mode 100644 (file)
index 0000000..33e0607
--- /dev/null
@@ -0,0 +1,68 @@
+<?php
+
+$optionsWithArgs = array( 'u', 's' );
+
+require_once( 'commandLine.inc' );
+
+if ( count( $args ) == 0 || isset( $options['help'] ) ) {
+       print <<<EOT
+Edit an article from the command line
+
+Usage: php edit.php [options...] <title>
+
+Options:
+  -u <user>         Username
+  -s <summary>      Edit summary
+  -m                Minor edit
+  -b                Bot (hidden) edit
+  -a                Enable autosummary
+  --no-rc           Do not show the change in recent changes
+
+If the specified user does not exist, it will be created. 
+The text for the edit will be read from stdin.
+
+EOT;
+       exit( 1 );
+}
+
+$userName = isset( $options['u'] ) ? $options['u'] : 'Maintenance script';
+$summary = isset( $options['s'] ) ? $options['s'] : '';
+$minor = isset( $options['m'] );
+$bot = isset( $options['b'] );
+$autoSummary = isset( $options['a'] );
+$noRC = isset( $options['no-rc'] );
+
+$wgUser = User::newFromName( $userName );
+if ( !$wgUser ) {
+       print "Invalid username\n";
+       exit( 1 );
+}
+if ( $wgUser->isAnon() ) {
+       $wgUser->addToDatabase();
+}
+
+$wgTitle = Title::newFromText( $args[0] );
+if ( !$wgTitle ) {
+       print "Invalid title\n";
+       exit( 1 );
+}
+
+$wgArticle = new Article( $wgTitle );
+
+# Read the text
+$text = file_get_contents( 'php://stdin' );
+
+# Do the edit
+print "Saving... ";
+$success = $wgArticle->doEdit( $text, $summary, 
+       ( $minor ? EDIT_MINOR : 0 ) |
+       ( $bot ? EDIT_FORCE_BOT : 0 ) | 
+       ( $autoSummary ? EDIT_AUTOSUMMARY : 0 ) |
+       ( $noRC ? EDIT_SUPPRESS_RC : 0 ) );
+if ( $success ) {
+       print "done\n";
+} else {
+       print "failed\n";
+       exit( 1 );
+}
+?>