MediaWiki How To

How to track answers to Questy Captcha challenges from ConfirmEdit extension

Edit .../extensions/ConfirmEdit/QuestyCaptcha.class.php and add the following line to the beginning of the function keyMatch

wfErrorLog( date('Y-m-d H:i:s') . " - {$_SERVER['REMOTE_ADDR']} - {$_SERVER['REQUEST_URI']} - {$info['question']} Answer \"$answer\"." .
                            "Correct answer(s) - ".(is_array($info['answer'])?implode(",",$info['answer']):$info['answer'])."\n", "/home/'''path'''/logs/questycaptcha.log" );

How to add a Google +1 (Google Plus One) button to every page

Here is how to do it for the default Vector skin.

  • Backup /w/skins/Vector.php
  • In Vector.php, find
 <!-- firstHeading -->
 <h1 id="firstHeading" class="firstHeading"><?php $this->html( 'title' ) ?></h1>

  • Add the following code right below the </h1>:
<g:plusone size="medium"></g:plusone>
<script type="text/javascript">
  (function() {
    var po = document.createElement('script'); po.type = 'text/javascript'; po.async = true;
    po.src = 'https://apis.google.com/js/plusone.js';
    var s = document.getElementsByTagName('script')[0]; s.parentNode.insertBefore(po, s);
  })();
</script>

  • If you use a different skin, try finding your first header and modifying it.

How to automatically generate sitemap for Google

MediaWiki 1.17

Use a new "urlpath" option of the .../maintenance/generateSitemap.php script:

  • Try manually generating a site map like this:

php generateSitemap.php site.name.com --fspath /home/user/public_htmp --server "http://site.name.com" --urlpath "http://site.name.com"

  • Upload the generated file to Google by logging in to Google Webmaster Tools and submitting the sitemap sitemap-index-user_database.xml as the sitemap. Everything should be marked as success.
  • Run:

crontab -e

and add the following crontab entry:

*/45 * * * * /usr/local/bin/php /home/''user''/public_html/wikiengine/maintenance/generateSitemap.php ''site.name.com'' --fspath /home/''user''/public_html/ --server "http://site.name.com" --urlpath "http://site.name.com"

MediaWiki 1.16

First patch up your .../maintenance/generateSitemap.php script with the following patch:

--- generateSitemap.php.bak 2010-09-09 15:50:08.000000000 -0500
+++ generateSitemap.php 2010-09-09 16:53:33.000000000 -0500
@@ -74,6 +74,14 @@
    var $compress;
 
    /**
+    * The server URL to prepend to the filename
+    * Nicola Asuni 2010-05-30
+    *
+    * @var string
+    */
+   var $server;
+
+   /**
     * The number of entries to save in each sitemap file
     *
     * @var array
@@ -147,6 +155,7 @@
        $this->size_limit = pow( 2, 20 ) * 10;
        $this->fspath = self::init_path( $this->getOption( 'fspath', getcwd() ) );
        $this->compress = $this->getOption( 'compress', 'yes' ) !== 'no';
+       $this->server = $this->getOption( 'server', '/' );
        $this->dbr = wfGetDB( DB_SLAVE );
        $this->generateNamespaces();
        $this->timestamp = wfTimestamp( TS_ISO_8601, wfTimestampNow() );
@@ -290,7 +299,7 @@
                    $filename = $this->sitemapFilename( $namespace, $smcount++ );
                    $this->file = $this->open( $this->fspath . $filename, 'wb' );
                    $this->write( $this->file, $this->openFile() );
-                   fwrite( $this->findex, $this->indexEntry( $filename ) );
+                   fwrite( $this->findex, $this->indexEntry( $this->server.'/'.$filename ) );
                    $this->output( "\t$this->fspath$filename\n" );
                    $length = $this->limit[0];
                    $i = 1;
@@ -405,10 +414,11 @@
     * @return string
     */
    function indexEntry( $filename ) {
+       $filename = preg_replace('/[\t\r\n\s]+/i', '', $filename); // Nicola Asuni 2010-05-30
        return
            "\t<sitemap>\n" .
            "\t\t<loc>$filename</loc>\n" .
-           "\t\t<lastmod>{$this->timestamp}</lastmod>\n" .
+           "\t\t<lastmod>".$this->timestamp."</lastmod>\n" .
            "\t</sitemap>\n";
    }
 
@@ -444,11 +454,14 @@
     * @return string
     */
    function fileEntry( $url, $date, $priority ) {
+       $url = preg_replace('/http:\/\/.+?\//', '', $url);
+       $url = $this->server."/".$url; 
+       $url = preg_replace('/[\t\r\n\s]+/i', '', $url); // Nicola Asuni 2010-05-30
        return
            "\t<url>\n" .
-           "\t\t<loc>$url</loc>\n" .
-           "\t\t<lastmod>$date</lastmod>\n" .
-           "\t\t<priority>$priority</priority>\n" .
+           "\t\t<loc>".$url."</loc>\n" .
+           "\t\t<lastmod>".$date."</lastmod>\n" .
+           "\t\t<priority>".$priority."</priority>\n" .
            "\t</url>\n";
    }

  • Save the code above in a text file and patch generateSitemap.php:

patch generateSitemap.php generateSitemap.patch

  • Try manually generating a site map like this:

php generateSitemap.php site.name.com --fspath /home/user/public_htmp --server "http://site.name.com"

  • Upload the generated file to Google by logging in to Google Webmaster Tools and submitting the sitemap sitemap-index-user_database.xml as the sitemap. Everything should be marked as success.

  • Run:

crontab -e

and add the following crontab entry:

*/45 * * * * /usr/local/bin/php /home/''user''/public_html/wikiengine/maintenance/generateSitemap.php tech.ivkin.net --fspath /home/''user''/public_html/ --server "http://tech.ivkin.net"


@HowTo @MediaWiki