#!%PERL% -w
# Copyright (c) vhffs project and its contributors
# All rights reserved.
#
# Redistribution and use in source and binary forms, with or without 
# modification, are permitted provided that the following conditions 
# are met:
#
# 1. Redistributions of source code must retain the above copyright 
#   notice, this list of conditions and the following disclaimer.
#2. Redistributions in binary form must reproduce the above copyright
#   notice, this list of conditions and the following disclaimer in 
#   the documentation and/or other materials provided with the 
#   distribution.
#3. Neither the name of vhffs nor the names of its contributors 
#   may be used to endorse or promote products derived from this 
#   software without specific prior written permission.
#
#THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS 
#"AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT 
#LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS 
#FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE 
#COPYRIGHT OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, 
#INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, 
#BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; 
#LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER 
#CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT 
# LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN 
# ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE 
# POSSIBILITY OF SUCH DAMAGE.


use utf8;
use POSIX qw(locale_h);
use HTML::Template;
use locale;
use Locale::gettext;
use CGI;
use CGI::Session;
use strict;


use lib '%VHFFS_LIB_DIR%';
use Vhffs::Main;
use Vhffs::Panel::Main;
use Vhffs::Panel::Menu;
use Vhffs::Constants;
use Vhffs::Object;
use Vhffs::ObjectFactory;

my $panel = new Vhffs::Panel::Main();
exit 0 unless $panel;
my $session = $panel->get_session;
exit 0 unless $session;

my $vhffs = $panel->{'vhffs'};
my $maintemplate = $panel->{'template'};
my $user = $panel->{'user'};
my $cgi = $panel->{'cgi'};
my $servername = $cgi->param("name");
my $templatesdir = $vhffs->get_config->get_templatedir;

my $template;

#Use is not allowed to see this page, only MODERATOR and ADMIN
unless( $user->is_moderator || $user->is_admin )
{
	$template = new HTML::Template( filename => $templatesdir.'/panel/misc/simplemsg.tmpl' );
	$template->param( MESSAGE => gettext('You\'re not allowed to do this (ACL rights)') );
}
else
{
	$panel->set_title( gettext('Moderation') );	

	my $objects = Vhffs::Object::getall( $vhffs, undef, Vhffs::Constants::WAITING_FOR_VALIDATION );
	unless( defined $objects )  {
		$template = new HTML::Template( filename => $templatesdir.'/panel/misc/simplemsg.tmpl' );
		$template->param( MESSAGE => gettext('There is nothing to moderate') );
	}
	else  {

		$template = new HTML::Template( filename => $templatesdir.'/panel/admin/misc/moderation.tmpl' );
		$template->param( HEADER_TYPE => gettext('Type') );
		$template->param( HEADER_NAME => gettext('Name') );
		$template->param( HEADER_USER => gettext('User') );
		$template->param( HEADER_GROUP => gettext('Group') );
		$template->param( HEADER_DESCRIPTION => gettext('Description') );
		$template->param( HEADER_ACCEPT => gettext('Accept') );
		$template->param( HEADER_REFUSE => gettext('Refuse') );

		my $output = '';

		foreach ( @{$objects} ) {

			my $subtemplate = new HTML::Template( filename => $templatesdir.'/panel/admin/misc/moderation_part.tmpl' );

			my $user = $_->get_user;
			my $group = $_->get_group;

			my $object = Vhffs::ObjectFactory::fetch_object( $vhffs , $_->{object_id} );
			$subtemplate->param( TYPE => Vhffs::Functions::type_string_from_type_id( $_->{type} ) );
			$subtemplate->param( NAME => $object->get_label );

			$subtemplate->param( OWNER	=> $user->get_username);

			if( $vhffs->get_config->get_users->{'use_notation'} eq 'yes' )
			{
				$subtemplate->param( NOTE	=> $user->get_note );
			}

			$subtemplate->param( GROUP		=> $group->get_groupname );

			$subtemplate->param( OID		=> $_->get_oid );
			$subtemplate->param( DESCRIPTION	=> $_->get_description );
			$subtemplate->param( ACCEPT		=> gettext('Accept') );
			$subtemplate->param( REFUSE		=> gettext('Refuse') );
			$output .= $subtemplate->output;
		}

		$template->param( MODERATION => $output );
	}
}

$panel->build( $template );
$panel->display;
