package WebGUI::Wobject::UserSubmission; #------------------------------------------------------------------- # WebGUI is Copyright 2001-2002 Plain Black LLC. #------------------------------------------------------------------- # 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::Discussion; 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::User; use WebGUI::Utility; use WebGUI::Wobject; our @ISA = qw(WebGUI::Wobject); our $namespace = "UserSubmission"; our $name = WebGUI::International::get(29,$namespace); our %submissionStatus =("Approved"=>WebGUI::International::get(560), "Denied"=>WebGUI::International::get(561), "Pending"=>WebGUI::International::get(562)); #------------------------------------------------------------------- sub _photogalleryView { my (@row, $i, $y, $image, $output, $p, $sth, %submission); tie %submission, 'Tie::CPHash'; $sth = WebGUI::SQL->read("select title, image, submissionId, status, userId from UserSubmission_submission where wobjectId=".$_[0]->get("wobjectId")." and (status='Approved' or userId=$session{user}{userId}) order by dateSubmitted desc"); while (%submission = $sth->hash) { $submission{title} = WebGUI::HTML::filter($submission{title},'all'); if ($y == 0) { $row[$i] .= ''; } $row[$i] .= ''; if ($_[0]->get("displayThumbnails")) { $image = WebGUI::Attachment->new($submission{image},$_[0]->get("wobjectId"),$submission{submissionId}); $row[$i] .= '
'; } $row[$i] .= ''.$submission{title}.''; if ($submission{userId} == $session{user}{userId}) { $row[$i] .= ' ('.$submissionStatus{$submission{status}}.')'; } $row[$i] .= ''; if ($y == 2) { $row[$i] .= ''; $y = -1; } $i++; $y++; } $sth->finish; if (WebGUI::Privilege::isInGroup($_[0]->get("groupToContribute"))) { $output .= '' .WebGUI::International::get(20,$namespace).' · '; } $output .= ''.WebGUI::International::get(364).'

'; $output .= ''; $p = WebGUI::Paginator->new(WebGUI::URL::page(),\@row,$_[0]->get("submissionsPerPage")); $output .= $p->getPage($session{form}{pn}); $output .= '
'; $output .= $p->getBarTraditional($session{form}{pn}); return $output; } #------------------------------------------------------------------- sub _traditionalView { my (@row, $i, $image, $output, $p, $sth, %submission); tie %submission, 'Tie::CPHash'; $sth = WebGUI::SQL->read("select submissionId, title, userId, status, image, dateSubmitted, username from UserSubmission_submission where wobjectId=".$_[0]->get("wobjectId")." and (status='Approved' or userId=$session{user}{userId}) order by dateSubmitted desc"); while (%submission = $sth->hash) { $submission{title} = WebGUI::HTML::filter($submission{title},'all'); $row[$i] = ' '.$submission{title}.''; if ($submission{userId} == $session{user}{userId}) { $row[$i] .= ' ('.$submissionStatus{$submission{status}}.')'; } $row[$i] .= ''; if ($_[0]->get("displayThumbnails")) { if ($submission{image} ne "") { $image = WebGUI::Attachment->new($submission{image},$_[0]->get("wobjectId"),$submission{submissionId}); $row[$i] .= ''; } else { $row[$i] .= ''; } } $row[$i] .= ''.epochToHuman($submission{dateSubmitted},"%z"). ''.$submission{username}.''; $i++; } $sth->finish; $output .= ''. '
'; if (WebGUI::Privilege::isInGroup($_[0]->get("groupToContribute"))) { $output .= ''.WebGUI::International::get(20,$namespace).' · '; } $output .= '' .WebGUI::International::get(364).'
'; $p = WebGUI::Paginator->new(WebGUI::URL::page(),\@row,$_[0]->get("submissionsPerPage")); $output .= ''; $output .= ''; } $output .= ''; $output .= $p->getPage($session{form}{pn}); $output .= '
'.WebGUI::International::get(99); if ($_[0]->get("displayThumbnails")) { $output .= ''.WebGUI::International::get(52,$namespace).''.WebGUI::International::get(13,$namespace). ''.WebGUI::International::get(21,$namespace).'
'; $output .= $p->getBarTraditional($session{form}{pn}); return $output; } #------------------------------------------------------------------- sub _weblogView { my (@row, $i, $image, $output, $p, $sth, %submission, $responses); tie %submission, 'Tie::CPHash'; $sth = WebGUI::SQL->read("select * from UserSubmission_submission where wobjectId=".$_[0]->get("wobjectId")." and (status='Approved' or userId=$session{user}{userId}) order by dateSubmitted desc"); while (%submission = $sth->hash) { $submission{title} = WebGUI::HTML::filter($submission{title},'all'); $submission{content} = WebGUI::HTML::filter($submission{content}); ($submission{content}) = split(/\^\-\;/,$submission{content}); ($responses) = WebGUI::SQL->quickArray("select count(*) from discussion where wobjectId=".$_[0]->get("wobjectId")." and subId=$submission{submissionId}"); $row[$i] = ''.$submission{title}; if ($submission{userId} == $session{user}{userId}) { $row[$i] .= ' ('.$submissionStatus{$submission{status}}.')'; } $row[$i] .= ''; if ($_[0]->get("displayThumbnails")) { if ($submission{image} ne "") { $image = WebGUI::Attachment->new($submission{image},$_[0]->get("wobjectId"),$submission{submissionId}); $row[$i] .= ''; } } $row[$i] .= WebGUI::International::get(40,$namespace) .' '.$submission{username}.'' .' - '.epochToHuman($submission{dateSubmitted},"%z \@ %Z").'
' .$submission{content}.'

('.WebGUI::International::get(46,$namespace) .''; if ($_[0]->get("allowDiscussion")) { $row[$i] .= ' | '.$responses.' '.WebGUI::International::get(57,$namespace) } $row[$i] .= ')

'; $i++; } $sth->finish; if (WebGUI::Privilege::isInGroup($_[0]->get("groupToContribute"))) { $output .= '' .WebGUI::International::get(20,$namespace).' · '; } $output .= ''.WebGUI::International::get(364).'

'; $output .= ''; $p = WebGUI::Paginator->new(WebGUI::URL::page(),\@row,$_[0]->get("submissionsPerPage")); $output .= $p->getPage($session{form}{pn}); $output .= '
'; $output .= $p->getBarSimple($session{form}{pn}); return $output; } #------------------------------------------------------------------- sub duplicate { my ($sth, $file, %row, $newSubmissionId, $w); tie %row, 'Tie::CPHash'; $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"), allowDiscussion=>$_[0]->get("allowDiscussion"), karmaPerSubmission=>$_[0]->get("karmaPerSubmission"), layout=>$_[0]->get("layout"), displayThumbnails=>$_[0]->get("displayThumbnails") }); $sth = WebGUI::SQL->read("select * from UserSubmission_submission where wobjectId=".$_[0]->get("wobjectId")); while (%row = $sth->hash) { $newSubmissionId = getNextId("submissionId"); $file = WebGUI::Attachment->new($row{image},$_[0]->get("wobjectId"),$row{submissionId}); $file->copy($w->get("wobjectId"),$newSubmissionId); $file = WebGUI::Attachment->new($row{attachment},$_[0]->get("wobjectId"),$row{submissionId}); $file->copy($w->get("wobjectId"),$newSubmissionId); WebGUI::SQL->write("insert into UserSubmission_submission values (".$w->get("wobjectId").", $newSubmissionId, ". quote($row{title}).", $row{dateSubmitted}, ".quote($row{username}).", '$row{userId}', ".quote($row{content}).", ". quote($row{image}).", ".quote($row{attachment}).", '$row{status}', '$row{convertCarriageReturns}', '$row{views}')"); WebGUI::Discussion::duplicate($_[0]->get("wobjectId"),$w->get("wobjectId"),$row{submissionId},$newSubmissionId); } $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")); WebGUI::Discussion::purge($_[0]->get("wobjectId")); $_[0]->SUPER::purge(); } #------------------------------------------------------------------- sub set { $_[0]->SUPER::set($_[1],[qw(submissionsPerPage groupToContribute groupToApprove defaultStatus displayThumbnails karmaPerSubmission layout allowDiscussion)]); } #------------------------------------------------------------------- sub www_approvePost { if (WebGUI::Privilege::isInGroup($_[0]->get("groupToModerate"))) { return WebGUI::Discussion::approvePost(); } else { return WebGUI::Privilege::insufficient(); } } #------------------------------------------------------------------- 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::addInternationalizedEntry($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_deleteMessage { if (WebGUI::Discussion::canEditMessage($_[0],$session{form}{mid})) { return WebGUI::Discussion::deleteMessage(); } else { return WebGUI::Privilege::insufficient(); } } #------------------------------------------------------------------- sub www_deleteMessageConfirm { if (WebGUI::Discussion::canEditMessage($_[0],$session{form}{mid})) { return WebGUI::Discussion::deleteMessageConfirm(); } 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} || WebGUI::Privilege::isInGroup($_[0]->get("groupToApprove"))) { $output = '

'.WebGUI::International::get(42).'

'; $output .= WebGUI::International::get(17,$namespace).'

'; $output .= '

'.WebGUI::International::get(44).''; $output .= '   '.WebGUI::International::get(45).'
'; 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::Privilege::isInGroup($_[0]->get("groupToApprove"))) { 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_denyPost { if (WebGUI::Privilege::isInGroup($_[0]->get("groupToModerate"))) { return WebGUI::Discussion::denyPost(); } 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::addInternationalizedEntry($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 (%layout, $layout, $output, $f, $defaultStatus, $submissionsPerPage, $groupToApprove); %layout = (traditional=>WebGUI::International::get(55,$namespace), weblog=>WebGUI::International::get(54,$namespace), photogallery=>WebGUI::International::get(56,$namespace)); $layout = $_[0]->get("layout") || "traditional"; $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(18,$namespace).'

'; $f = WebGUI::HTMLForm->new; $f->select("layout",\%layout,WebGUI::International::get(53,$namespace),[$layout]); $f->group("groupToApprove",WebGUI::International::get(1,$namespace),[$groupToApprove]); $f->group("groupToContribute",WebGUI::International::get(2,$namespace),[$_[0]->get("groupToContribute")]); $f->integer("submissionsPerPage",WebGUI::International::get(6,$namespace),$submissionsPerPage); $f->select("defaultStatus",\%submissionStatus,WebGUI::International::get(563),[$defaultStatus]); if ($session{setting}{useKarma}) { $f->integer("karmaPerSubmission",WebGUI::International::get(30,$namespace),$_[0]->get("karmaPerSubmission")); } else { $f->hidden("karmaPerSubmission",$_[0]->get("karmaPerSubmission")); } $f->yesNo("displayThumbnails",WebGUI::International::get(51,$namespace),$_[0]->get("displayThumbnails")); $f->yesNo("allowDiscussion",WebGUI::International::get(48,$namespace),$_[0]->get("allowDiscussion")); $f->raw($_[0]->SUPER::discussionProperties); $output .= $_[0]->SUPER::www_edit($f->printRowsOnly); return $output; } else { return WebGUI::Privilege::insufficient(); } } #------------------------------------------------------------------- sub www_editSave { if (WebGUI::Privilege::canEditPage()) { $_[0]->SUPER::www_editSave(); $_[0]->set({ submissionsPerPage=>$session{form}{submissionsPerPage}, groupToContribute=>$session{form}{groupToContribute}, groupToApprove=>$session{form}{groupToApprove}, defaultStatus=>$session{form}{defaultStatus}, karmaPerSubmission=>$session{form}{karmaPerSubmission}, allowDiscussion=>$session{form}{allowDiscussion}, layout=>$session{form}{layout}, displayThumbnails=>$session{form}{displayThumbnails} }); return ""; } else { return WebGUI::Privilege::insufficient(); } } #------------------------------------------------------------------- sub www_editSubmission { my ($output, $submission, $f, @submission, $sth); $submission = $_[0]->getCollateral("UserSubmission_submission","submissionId",$session{form}{sid}); if ($submission->{submissionId} eq "new") { $submission->{convertCarriageReturns} = 1; $submission->{userId} = $session{user}{userId}; } if (WebGUI::Privilege::isInGroup($_[0]->get("groupToContribute")) || $submission->{userId} == $session{user}{userId} || WebGUI::Privilege::isInGroup($_[0]->get("groupToApprove"))) { $output = '

'.WebGUI::International::get(19,$namespace).'

'; $f = WebGUI::HTMLForm->new; $f->hidden("wid",$session{form}{wid}); $f->hidden("sid",$submission->{submissionId}); $f->hidden("func","editSubmissionSave"); $f->text("title",WebGUI::International::get(35,$namespace),$submission->{title}); $f->HTMLArea("content",WebGUI::International::get(31,$namespace),$submission->{content}); if ($submission->{image} ne "") { $f->readOnly('' .WebGUI::International::get(391).'',WebGUI::International::get(32,$namespace)); } else { $f->file("image",WebGUI::International::get(32,$namespace)); } if ($submission->{attachment} ne "") { $f->readOnly('' .WebGUI::International::get(391).'',WebGUI::International::get(33,$namespace)); } else { $f->file("attachment",WebGUI::International::get(33,$namespace)); } $f->yesNo("convertCarriageReturns",WebGUI::International::get(34,$namespace),$submission->{convertCarriageReturns}, '','   '.WebGUI::International::get(38,$namespace)); $f->submit; $output .= $f->print; return $output; } else { return WebGUI::Privilege::insufficient(); } return $output; } #------------------------------------------------------------------- sub www_editSubmissionSave { my ($sqlAdd,$submission,$image,$attachment,$title,$u); $submission = $_[0]->getCollateral("UserSubmission_submission","submissionId",$session{form}{sid}); if ($submission->{owner} == $session{user}{userId} || ($submission->{submissionId} eq "new" && WebGUI::Privilege::isInGroup($_[0]->get("groupToContribute"))) || WebGUI::Privilege::isInGroup($_[0]->get("groupToApprove"))) { if ($submission->{submissionId} eq "new") { $session{form}{sid} = getNextId("submissionId"); WebGUI::SQL->write("insert into UserSubmission_submission (wobjectId,submissionId,userId,username) values (".$_[0]->get("wobjectId").",$session{form}{sid},$session{user}{userId},".quote($session{user}{username}).")"); if ($session{setting}{useKarma}) { $u = WebGUI::User->new($session{user}{userId}); $u->karma($_[0]->get("karmaPerSubmission"),$namespace." (".$_[0]->get("wobjectId")."/".$session{form}{sid}.")","User submission."); } } $image = WebGUI::Attachment->new("",$session{form}{wid},$session{form}{sid}); $image->save("image"); if ($image->getFilename ne "") { $sqlAdd = 'image='.quote($image->getFilename).', '; } $attachment = WebGUI::Attachment->new("",$session{form}{wid},$session{form}{sid}); $attachment->save("attachment"); if ($attachment->getFilename ne "") { $sqlAdd .= 'attachment='.quote($attachment->getFilename).', '; } if ($session{form}{title} ne "") { $title = $session{form}{title}; } else { $title = WebGUI::International::get(16,$namespace); } WebGUI::SQL->write("update UserSubmission_submission set dateSubmitted=".time().", convertCarriageReturns=$session{form}{convertCarriageReturns}, title=".quote($title).", content=".quote($session{form}{content}).", ".$sqlAdd." status='".$_[0]->get("defaultStatus")."' where submissionId=$session{form}{sid}"); if ($_[0]->get("defaultStatus") ne "Approved") { WebGUI::MessageLog::addInternationalizedEntry('',$_[0]->get("groupToApprove"), WebGUI::URL::page('func=viewSubmission&wid='.$_[0]->get("wobjectId").'&sid='. $session{form}{sid}),3,$namespace,'pending'); } return $_[0]->www_viewSubmission(); } else { return WebGUI::Privilege::insufficient(); } } #------------------------------------------------------------------- sub www_lockThread { if (WebGUI::Privilege::isInGroup($_[0]->get("groupToModerate"))) { WebGUI::Discussion::lockThread(); return $_[0]->www_showMessage; } else { return WebGUI::Privilege::insufficient(); } } #------------------------------------------------------------------- sub www_post { if (WebGUI::Privilege::isInGroup($_[0]->get("groupToPost"))) { return WebGUI::Discussion::post(); } else { return WebGUI::Privilege::insufficient(); } } #------------------------------------------------------------------- sub www_postSave { if (WebGUI::Privilege::isInGroup($_[0]->get("groupToPost"))) { WebGUI::Discussion::postSave($_[0]); return $_[0]->www_showMessage(); } else { return WebGUI::Privilege::insufficient(); } } #------------------------------------------------------------------- sub www_search { if ($session{form}{sid} ne "") { return WebGUI::Discussion::search(); } else { my ($p, $i, $output, $constraints, $image, $sql, $sth, %submission, @row, $url); $output = WebGUI::Search::form({wid=>"$session{form}{wid}",func=>'search'}); $constraints = WebGUI::Search::buildConstraints([qw(username title content)]); if ($constraints ne "") { tie %submission, 'Tie::CPHash'; $url = WebGUI::URL::page('func=search&wid='.$session{form}{wid} .'&all='.WebGUI::URL::escape($session{form}{all}) .'&exactPhrase='.WebGUI::URL::escape($session{form}{exactPhrase}).'&atLeastOne=' .WebGUI::URL::escape($session{form}{atLeastOne}).'&numResults='.$session{form}{numResults} .'&without='.WebGUI::URL::escape($session{form}{without})); $output .= ''; $output .= ''; } $output .= ''; $sql = "select * from UserSubmission_submission where wobjectId=$session{form}{wid} "; $sql .= " and (status='Approved' or userId=$session{user}{userId}) and ".$constraints." order by dateSubmitted desc"; $sth = WebGUI::SQL->read($sql); while (%submission = $sth->hash) { $submission{title} = WebGUI::HTML::filter($submission{title},'all'); $row[$i] = ''; if ($_[0]->get("displayThumbnails")) { if ($submission{image} ne "") { $image = WebGUI::Attachment->new($submission{image},$_[0]->get("wobjectId"),$submission{submissionId}); $row[$i] .= ''; } else { $row[$i] .= ''; } } $row[$i] .= ''; $i++; } $sth->finish; $p = WebGUI::Paginator->new($url,\@row,$session{form}{numResults}); $output .= $p->getPage($session{form}{pn}); $output .= '
'.WebGUI::International::get(99); if ($_[0]->get("displayThumbnails")) { $output .= ''.WebGUI::International::get(52,$namespace).''.WebGUI::International::get(13,$namespace). ''.WebGUI::International::get(21,$namespace).'
'.$submission{title}.''; if ($submission{userId} == $session{user}{userId}) { $row[$i] .= ' ('.$submissionStatus{$submission{status}}.')'; } $row[$i] .= ''.epochToHuman($submission{dateSubmitted},"%z"). ''.$submission{username}.'
'; $output .= $p->getBarTraditional($session{form}{pn}); } return $output; } } #------------------------------------------------------------------- sub www_showMessage { my ($submenu, $output); $submenu .= ''.WebGUI::International::get(45,$namespace).'
'; $submenu .= ''.WebGUI::International::get(28,$namespace).'
'; $output = WebGUI::Discussion::showMessage($submenu,$_[0]); $output .= WebGUI::Discussion::showThreads(); return $output; } #------------------------------------------------------------------- sub www_unlockThread { if (WebGUI::Privilege::isInGroup($_[0]->get("groupToModerate"))) { WebGUI::Discussion::unlockThread(); return $_[0]->www_showMessage; } else { return WebGUI::Privilege::insufficient(); } } #------------------------------------------------------------------- sub www_view { my ($output); $output = $_[0]->displayTitle; $output .= $_[0]->description; $output = $_[0]->processMacros($output); if ($_[0]->get("layout") eq "weblog") { $output .= $_[0]->_weblogView; } elsif ($_[0]->get("layout") eq "photogallery") { $output .= $_[0]->_photogalleryView; } else { $output .= $_[0]->_traditionalView; } return $output; } #------------------------------------------------------------------- sub www_viewSubmission { my ($output, %submission, $file, @data, $replies); tie %submission, 'Tie::CPHash'; WebGUI::SQL->write("update UserSubmission_submission set views=views+1 where submissionId=$session{form}{sid}"); %submission = WebGUI::SQL->quickHash("select * from UserSubmission_submission where submissionId=$session{form}{sid}"); $submission{title} = WebGUI::HTML::filter($submission{title},'all'); $submission{content} = WebGUI::HTML::filter($submission{content},$session{setting}{filterContributedHTML}); $submission{content} =~ s/\^\-\;//g; $output = "

".$submission{title}."

"; $output .= ''; $output .= '
'; #---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).': '.$submissionStatus{$submission{status}}.'
'; $output .= ''.WebGUI::International::get(514).': '.$submission{views}.'
'; $output .= '
'; #---menu @data = WebGUI::SQL->quickArray("select max(submissionId) from UserSubmission_submission where wobjectId=$submission{wobjectId} and submissionId<$submission{submissionId} and (userId=$submission{userId} or status='Approved')"); if ($data[0] ne "") { $output .= '« '.WebGUI::International::get(58,$namespace).'
'; } @data = WebGUI::SQL->quickArray("select min(submissionId) from UserSubmission_submission where wobjectId=$submission{wobjectId} and submissionId>$submission{submissionId} and (userId=$submission{userId} or status='Approved')"); if ($data[0] ne "") { $output .= ''.WebGUI::International::get(59,$namespace).' »
'; } if ($submission{userId} == $session{user}{userId} || WebGUI::Privilege::isInGroup($_[0]->get("groupToApprove"))) { $output .= ''.WebGUI::International::get(37,$namespace).'
'; $output .= ''.WebGUI::International::get(27,$namespace).'
'; } if ($submission{status} ne "Approved" && WebGUI::Privilege::isInGroup($_[0]->get("groupToApprove"),$session{user}{userId})) { $output .= ''. WebGUI::International::get(572).'
'; $output .= ''. WebGUI::International::get(573).'
'; $output .= ''. WebGUI::International::get(574).'
'; } if ($_[0]->get("allowDiscussion")) { $output .= ''.WebGUI::International::get(47,$namespace).'
'; } $output .= ''.WebGUI::International::get(364).'
'; $output .= ''.WebGUI::International::get(28,$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/\/g; } $output .= $submission{content}.'

'; if ($submission{attachment} ne "") { $file = WebGUI::Attachment->new($submission{attachment},$session{form}{wid},$session{form}{sid}); $output .= $file->box; } $output .= '

'; if ($_[0]->get("allowDiscussion")) { $output .= WebGUI::Discussion::showThreads(); } return $output; } 1;