#!/usr/bin/perl

use warnings;
use strict;

use CGI;
use OpenGuides::Config;
use OpenGuides::CGI;
use OpenGuides::Utils;
use OpenGuides::Template;
use URI::Escape;

sub process_moderated;
sub list_moderated;

my $config_file = $ENV{OPENGUIDES_CONFIG_FILE} || "wiki.conf";
my $config = OpenGuides::Config->new( file => $config_file );
my $wiki = OpenGuides::Utils->make_wiki_object( config => $config );
my $cgi = CGI->new();

print "Content-Type: text/html\n\n";
print "<html><head><title>OpenGuides moderation</title></head><body>";
print "OpenGuides moderation<p>\n";

if ($cgi->param('process')) {
    process_moderated($cgi->param('process'), $cgi->param('version'));
} else {
    list_moderated;
}

sub process_moderated($$) {
    my $node = shift;
    my $version = shift;
    my $dbh = $wiki->store->dbh;
    my $sth = $dbh->prepare("UPDATE metadata AS m INNER JOIN node AS n ON ".
                            "(m.node_id = n.id) SET m.metadata_value = ? ".
                            "WHERE m.metadata_type = ? and n.name = ? and ".
                            "m.version = ?");
    $sth->execute(0, "moderated", $node, $version);
    print "Hopefully we updated <a href=\"wiki.cgi?id=".
          uri_escape($node) . "\">that</a>. Now <a href=\"moderate.cgi\">".
          "do some more!</a>\n";
    print "</body></html>";
} 

sub list_moderated {
    my @nodes = $wiki->list_nodes_by_metadata(
                    metadata_type => "moderated",
                    metadata_value => 1
              );


    if (scalar(@nodes) == 0) {
        print "Nothing to moderate, hurrah!\n";
    } else {
        print "Below is a list of nodes waiting to be moderated\n";
        print "<ul>";
        foreach (@nodes) {
            my %node = $wiki->retrieve_node($_);
            my $version = $node{version};
            my $oldversion = $version - 1;
            print "<li><a href=\"wiki.cgi?id=".uri_escape($_).
               ";version=$oldversion;diffversion=$version\">$_</a> ".
               "(<a href=\"moderate.cgi?process=".uri_escape($_).
               ";version=$version\">approve</a>) (<a href=\"wiki.cgi?id=".uri_escape($_).";version=$version;action=delete\">delete this revision</a>)</li>\n";
        }
    }
    print "</body></html>\n";
}



