#!/bin/sh

# Script to update $mediawikioldversion to $mediawikinewversion for debian.
# Takes two arguments: upgrade-$mediawikioldversion php-binary /path/for/dumpfile
# Written by Arnaud Cornet <arnaud.cornet@gmail.com> and Romain Beauxis <toots@rastageeks.org>
# for debian mediawiki package.

# Licence : GPL

#set -e

	PHP=$1
	dumpdir=$2
        mediawikioldversion=$3
	mediawikinewversion=$4

	if [ "$PHP" = "" ] || [ "$dumpdir" = "" ] || [ "$PHP" = "-h" ] || [ "$PHP" = "--help" ]
	then
		echo "Usage: upgrade-mediawiki php-binary /path/for/dumpfile mediawikioldversion  mediawikinewversion"
		exit 1
	fi

	if [ ! -x "$PHP" ]
	then
		echo "PHP binary not executable"
		exit 1
	fi

	if [ "$dumpdir" = "" ] || [ ! -w "$dumpdir" ]
	then
		echo "Dump directory not writable"
		exit 1
	fi

	if [ "`whoami`" != "root" ]
	then
		echo "You need to be root to use this script.."
		exit 1
	fi

        if [ ! -e /var/lib/$mediawikioldversion/LocalSettings.php ]; then
                echo "No LocalSettings.php file has been found for $mediawikioldversion..."
                exit 1
        fi

	# First do the dumping:
	echo "Dumping old $mediawikioldversion"
	cd /usr/share/$mediawikioldversion/maintenance

	dumppath=$dumpdir/$mediawikioldversion-dump\ -\ `date +%Y-%m-%d-%H-%M-%s`.xml

	$PHP dumpBackup.php --full > "$dumppath"
	echo "A database dump of mediawiki has been generated in $dumppath." 

	# Now doing upgrade
	echo "Performing upgrade..."

	MWETC=/etc/$mediawikinewversion
	MWVAR=/var/lib/$mediawikinewversion

	cd $MWVAR/maintenance

	if [ -e $MWETC/LocalSettings.php ]
	then
		echo "$MWETC/LocalSettings.php exists."
		echo "$mediawikinewversion configuration file found."
		echo "I will not overwrite an existing configuration."
		exit 1
	fi

	cp /var/lib/$mediawikioldversion/LocalSettings.php $MWETC
	sed -e s#/var/lib/$mediawikioldversion#/var/lib/$mediawikinewversion#g -i $MWETC/LocalSettings.php	
	if ! egrep -q "define\( *['\"]?MW_INSTALL_PATH" /var/lib/$mediawikinewversion/LocalSettings.php; then
	    sed -e 's#<?php#<?php\ndefine("MW_INSTALL_PATH","/var/lib/$mediawikinewversion");\n#' \
		-i $MWETC/LocalSettings.php
	fi

	$PHP update.php

	# useful ?
	#$PHP rebuildall.php

	if [ -d /var/lib/$mediawikioldversion/upload ]
	then
		cp -rf /var/lib/$mediawikioldversion/upload/* $MWVAR/images || true
	fi

	chmod 640 $MWETC/LocalSettings.php 
	chown www-data:www-data $MWETC/LocalSettings.php 
	if [ -f $MWETC/AdminSettings.php ]
	then
		chmod 640 $MWETC/AdminSettings.php
		chown www-data:www-data $MWETC/AdminSettings.php
	fi

	# Adding custon include to LocalSettings
	CUSTOM_INCLUDE="# debian specific include: 
if (is_file(\"/etc/mediawiki-extensions/extensions.php\")) { 
	include( \"/etc/mediawiki-extensions/extensions.php\" ); 
}

?>"

	if [ "`grep -c 'include( "/etc/mediawiki-extensions/extensions.php" );' /etc/$mediawikinewversion/LocalSettings.php`" = "0" ]; then
		sed -e s#'?>'## -i /etc/$mediawikinewversion/LocalSettings.php
		echo "$CUSTOM_INCLUDE" >> /etc/$mediawikinewversion/LocalSettings.php
	fi

	echo "Done!"
