#!/bin/bash
# Completely remove a spam entry from moinmoin
# This is intended to run from <moin_root>/moin/data
# jason@denied.to
#

page=$1
num=$2
rev=$(echo $num | grep ........)

if [ -z "$page" -o -z "$num" ] ; then
   echo "usage: ./purge-spam.sh WikiPageName <revision number>"
   echo "example: ./purge-spam.sh SpamPage 00000001"
   exit 1
fi

if [ ! $rev ] ; then
   echo "must use an 8-digit number. use leading zeros. example: 00000012"
   exit 1
fi

check=$(grep -n $page edit-log | grep $num | tail -1)
line=$(grep -n $page edit-log | grep $num | tail -1 | sed 's/\(^.*\):.*0000.*/\1/')
pageline=$(grep -n $page pages/$page/edit-log | grep $num | tail -1 | sed 's/\(^.*\):.*0000.*/\1/')

if [ ! "$check" ] ; then
   echo "No match"
   exit 1
fi

echo "remove entry: "
echo -e "$check"
echo "[Y/n]:"
read purge

if [ -z "$purge" ] ; then
   purge=y
fi

if [ "$purge" != y ] ; then
   echo bye!
   exit 1
fi

echo "Removing all traces of edit..."
echo $line

# remove from master edit.log (RecentChanges)
sed -i -e "`echo $line`d" edit-log

# remove from page's edit.log
sed -i -e "`echo $pageline`d" pages/$page/edit-log

# remove the revision from history
rm pages/$page/revisions/$num

# last revision number is now the current revision
ls -1 pages/$page/revisions | tail -1 > pages/$page/current

# remove cache of altered page (it regens upon page load)
rm pages/$page/cache/text_html 2>/dev/null

# remove entire page from tree
if [ "$num" == 00000001 ] ; then
   echo -e "You must delete $page if it was a new page.  Delete the page? [y/n]:"
   read del
fi

if [ "$del" == y ] ; then
     rm -irf pages/$page
     echo -e "$page deleted."
  else
     exit 1
fi
