package WebGUI::Wobject::UserSubmission; #------------------------------------------------------------------- # WebGUI is Copyright 2001-2002 Plain Black Software. #------------------------------------------------------------------- # Please read the legal notices (docs/legal.txt) and the license # (docs/license.txt) that came with this distribution before using # this software. #------------------------------------------------------------------- # http://www.plainblack.com info@plainblack.com #------------------------------------------------------------------- use strict; use Tie::CPHash; use WebGUI::Attachment; use WebGUI::DateTime; use WebGUI::HTML; use WebGUI::HTMLForm; use WebGUI::Icon; use WebGUI::International; use WebGUI::MessageLog; use WebGUI::Operation; use WebGUI::Paginator; use WebGUI::Privilege; use WebGUI::Session; use WebGUI::SQL; use WebGUI::URL; use WebGUI::Utility; use WebGUI::Wobject; our @ISA = qw(WebGUI::Wobject); our $namespace = "UserSubmission"; our $name = WebGUI::International::get(29,$namespace); #------------------------------------------------------------------- sub duplicate { my ($sth, $file, @row, $newSubmissionId, $w); $w = $_[0]->SUPER::duplicate($_[1]); $w = WebGUI::Wobject::UserSubmission->new({wobjectId=>$w,namespace=>$namespace}); $w->set({ groupToContribute=>$_[0]->get("groupToContribute"), submissionsPerPage=>$_[0]->get("submissionsPerPage"), defaultStatus=>$_[0]->get("defaultStatus"), groupToApprove=>$_[0]->get("groupToApprove") }); $sth = WebGUI::SQL->read("select * from UserSubmission_submission where wobjectId=".$_[0]->get("wobjectId")); while (@row = $sth->array) { $newSubmissionId = getNextId("submissionId"); $file = WebGUI::Attachment->new($row[8],$_[0]->get("wobjectId"),$row[1]); $file->copy($w->get("wobjectId"),$newSubmissionId); WebGUI::SQL->write("insert into UserSubmission_submission values (".$w->get("wobjectId").", $newSubmissionId, ". quote($row[2]).", $row[3], ".quote($row[4]).", '$row[5]', ".quote($row[6]).", ". quote($row[7]).", ".quote($row[8]).", '$row[9]', '$row[10]')"); } $sth->finish; } #------------------------------------------------------------------- sub new { my ($self, $class, $property); $class = shift; $property = shift; $self = WebGUI::Wobject->new($property); bless $self, $class; } #------------------------------------------------------------------- sub purge { WebGUI::SQL->write("delete from UserSubmission_submission where wobjectId=".$_[0]->get("wobjectId")); $_[0]->SUPER::purge(); } #------------------------------------------------------------------- sub set { $_[0]->SUPER::set($_[1],[qw(submissionsPerPage groupToContribute groupToApprove defaultStatus)]); } #------------------------------------------------------------------- sub www_approveSubmission { my (%submission); tie %submission, 'Tie::CPHash'; if (WebGUI::Privilege::isInGroup(4,$session{user}{userId}) || WebGUI::Privilege::isInGroup(3,$session{user}{userId})) { %submission = WebGUI::SQL->quickHash("select * from UserSubmission_submission where submissionId=$session{form}{sid}"); WebGUI::SQL->write("update UserSubmission_submission set status='Approved' where submissionId=$session{form}{sid}"); WebGUI::MessageLog::addEntry($submission{userId},'',WebGUI::URL::page('func=viewSubmission&wid='. $session{form}{wid}.'&sid='.$session{form}{sid}),4,$namespace); WebGUI::MessageLog::completeEntry($session{form}{mlog}); return WebGUI::Operation::www_viewMessageLog(); } else { return WebGUI::Privilege::insufficient(); } } #------------------------------------------------------------------- sub www_copy { if (WebGUI::Privilege::canEditPage()) { $_[0]->duplicate; return ""; } else { return WebGUI::Privilege::insufficient(); } } #------------------------------------------------------------------- sub www_deleteAttachment { my ($owner); ($owner) = WebGUI::SQL->quickArray("select userId from UserSubmission_submission where submissionId=$session{form}{sid}"); if ($owner == $session{user}{userId}) { WebGUI::SQL->write("update UserSubmission_submission set attachment='' where submissionId=$session{form}{sid}"); return $_[0]->www_editSubmission(); } else { return WebGUI::Privilege::insufficient(); } } #------------------------------------------------------------------- sub www_deleteImage { my ($owner); ($owner) = WebGUI::SQL->quickArray("select userId from UserSubmission_submission where submissionId=$session{form}{sid}"); if ($owner == $session{user}{userId}) { WebGUI::SQL->write("update UserSubmission_submission set image='' where submissionId=$session{form}{sid}"); return $_[0]->www_editSubmission(); } else { return WebGUI::Privilege::insufficient(); } } #------------------------------------------------------------------- sub www_deleteSubmission { my ($output, $owner); ($owner) = WebGUI::SQL->quickArray("select userId from UserSubmission_submission where submissionId=$session{form}{sid}"); if ($owner == $session{user}{userId}) { $output = '
'; $output .= '
'; return $output; } else { return WebGUI::Privilege::insufficient(); } } #------------------------------------------------------------------- sub www_deleteSubmissionConfirm { my ($output, $owner, $file); ($owner) = WebGUI::SQL->quickArray("select userId from UserSubmission_submission where submissionId=$session{form}{sid}"); if ($owner == $session{user}{userId}) { WebGUI::SQL->write("delete from UserSubmission_submission where submissionId=$session{form}{sid}"); $file = WebGUI::Attachment->new("",$session{form}{wid},$session{form}{sid}); $file->deleteNode; return ""; } else { return WebGUI::Privilege::insufficient(); } } #------------------------------------------------------------------- sub www_denySubmission { my (%submission); tie %submission, 'Tie::CPHash'; if (WebGUI::Privilege::isInGroup(4,$session{user}{userId}) || WebGUI::Privilege::isInGroup(3,$session{user}{userId})) { %submission = WebGUI::SQL->quickHash("select * from UserSubmission_submission where submissionId=$session{form}{sid}"); WebGUI::SQL->write("update UserSubmission_submission set status='Denied' where submissionId=$session{form}{sid}"); WebGUI::MessageLog::addEntry($submission{userId},'',WebGUI::URL::page('func=viewSubmission&wid='. $session{form}{wid}.'&sid='.$session{form}{sid}),5,$namespace); WebGUI::MessageLog::completeEntry($session{form}{mlog}); return WebGUI::Operation::www_viewMessageLog(); } else { return WebGUI::Privilege::insufficient(); } } #------------------------------------------------------------------- sub www_edit { my ($output, %hash, $f, $defaultStatus, $submissionsPerPage, $groupToApprove); tie %hash, 'Tie::IxHash'; $groupToApprove = $_[0]->get("groupToApprove") || 4; $submissionsPerPage = $_[0]->get("submissionsPerPage") || 50; $defaultStatus = $_[0]->get("defaultStatus") || "Approved"; if (WebGUI::Privilege::canEditPage()) { $output = helpIcon(1,$namespace); $output .= '| '.WebGUI::International::get(20,$namespace).' |
| '.WebGUI::International::get(99). ' | '.WebGUI::International::get(13,$namespace). ' | '.WebGUI::International::get(21,$namespace).' |
| ';
#---header
$output .= ''.WebGUI::International::get(22,$namespace).' '.$submission{username}.' '; $output .= ''.WebGUI::International::get(23,$namespace).' '.epochToHuman($submission{dateSubmitted},"%z %Z")." "; $output .= ''.WebGUI::International::get(14,$namespace).': '.$submission{status}; $output .= ' | ';
#---menu
$output .= ''.WebGUI::International::get(28,$namespace).' '; if ($submission{userId} == $session{user}{userId}) { $output .= ''.WebGUI::International::get(37,$namespace).' '; $output .= ''.WebGUI::International::get(27,$namespace).' '; } if ($submission{status} eq "Pending" && WebGUI::Privilege::isInGroup($_[0]->get("groupToApprove"),$session{user}{userId})) { $output .= ''. WebGUI::International::get(24,$namespace).' '; $output .= ''. WebGUI::International::get(25,$namespace).' '; $output .= ''. WebGUI::International::get(26,$namespace).' '; } $output .= ' |
| ';
#---content
if ($submission{image} ne "") {
$file = WebGUI::Attachment->new($submission{image},$session{form}{wid},$session{form}{sid});
$output .= ' ';
}
if ($submission{convertCarriageReturns}) {
$submission{content} =~ s/\n/\ '; if ($submission{attachment} ne "") { $file = WebGUI::Attachment->new($submission{attachment},$session{form}{wid},$session{form}{sid}); $output .= $file->box; } $output .= ' |