#!/bin/bash

MW_DIR=/web/wiki.dev.transitionnetwork.org
MW_DOC_ROOT=$MW_DIR/www
MW_REPO=http://svn.wikimedia.org/svnroot/mediawiki/branches
MW_EXTENSIONS=$MW_DOC_ROOT/extensions

# Make sure only root can run our script
if [ "$(id -u)" != "0" ]; then
   echo "This script must be run as root" 1>&2
   exit 1
fi
if [[ $HOME != "/root" ]]; then
   echo "This script must be run as root user not via sudo"  1>&2
   exit 1
fi

# get the version to upgrade to 
if [[ $1 ]]; then
  MW_VERSION=$1
else
  printf "Specify the latest version of Mediawiki in the format 1.16.0:"
  read MW_VERSION 
fi

# backup the mysql databases
echo "Backuping to the databases to /var/backup/mysql"
/usr/local/bin/mysql_backup
echo "Databases backuped to /var/backup/mysql"

# work out which directory the files will be in on http://download.wikimedia.org/mediawiki/
MW_VERSION_DIR=`echo ${MW_VERSION%.*}`

# download and extract
cd $MW_DIR 
wget http://download.wikimedia.org/mediawiki/$MW_VERSION_DIR/mediawiki-$MW_VERSION.tar.gz || echo "There was a problem downloading mediawiki-$MW_VERSION.tar.gz"
wget http://download.wikimedia.org/mediawiki/$MW_VERSION_DIR/mediawiki-$MW_VERSION.tar.gz.sig \
  || echo "There was a problem downloading ediawiki-$MW_VERSION.tar.gz.sig"
gpg --verify mediawiki-$MW_VERSION.tar.gz.sig \
  || echo "There was a problem with the gpg sig"
tar -zxf mediawiki-$MW_VERSION.tar.gz \
  || echo "There was a problem extracting mediawiki-$MW_VERSION.tar.gz" 

# copy the new files over the installed version
chown root:root -R mediawiki-$MW_VERSION/
rsync -a mediawiki-$MW_VERSION/ $MW_DOC_ROOT/ \
  || echo "There was a problem copying the files" 
chown www-data:www-data -R $MW_DOC_ROOT/images

# run the update.php
cd $MW_DOC_ROOT/maintenance/
php update.php \
  || echo "There was a problem running $MW_DOC_ROOT/maintenance/update.php"

echo "Mediawiki upgraded to $MW_VERSION"

# update modules

# we need the version in the format REL1_16 see
# http://svn.wikimedia.org/svnroot/mediawiki/tags/extensions
MW_REPO_VERSION=REL`echo $MW_VERSION_DIR | sed -e 's/\./_/'`

cd $MW_EXTENSIONS

# get the extensions from the mediawiki repo
for e in SyntaxHighlight_GeSHi SpamBlacklist FCKeditor 
do
  echo "Updating $e" 
  cd $e
  svn switch $MW_REPO/$MW_REPO_VERSION/extensions/$e || echo "There was a problem switching $e"
  cd $MW_EXTENSIONS
done

echo "Mediawiki extensions, $e upgraded to versions from $MW_REPO/$MW_REPO_VERSION/extensions/" 

