From 057b523210991f8479f63c583e3919443274a269 Mon Sep 17 00:00:00 2001 From: JT Smith Date: Wed, 29 May 2002 02:13:42 +0000 Subject: [PATCH] Added a "views" counter to discussions and user submissions. --- docs/upgrades/upgrade_3.8.0-3.9.0.sql | 4 ++++ lib/WebGUI/Discussion.pm | 25 +++++++++++++++---------- lib/WebGUI/Wobject/MessageBoard.pm | 27 +++++++++++++++------------ lib/WebGUI/Wobject/UserSubmission.pm | 4 +++- 4 files changed, 37 insertions(+), 23 deletions(-) diff --git a/docs/upgrades/upgrade_3.8.0-3.9.0.sql b/docs/upgrades/upgrade_3.8.0-3.9.0.sql index 738f39f2e..add8d26f0 100644 --- a/docs/upgrades/upgrade_3.8.0-3.9.0.sql +++ b/docs/upgrades/upgrade_3.8.0-3.9.0.sql @@ -90,6 +90,10 @@ INSERT INTO international VALUES (513,'WebGUI','English','Previous Thread'); delete from international where internationalId=10 and namespace='MessageBoard'; delete from international where internationalId=14 and namespace='MessageBoard'; INSERT INTO settings VALUES ('addEditStampToPosts','1'); +alter table discussion add column views int not null default 0; +INSERT INTO international VALUES (514,'WebGUI','English','Views'); +INSERT INTO international VALUES (515,'WebGUI','English','Add edit stamp to posts?'); +alter table UserSubmission_submission add column views int not null default 0 diff --git a/lib/WebGUI/Discussion.pm b/lib/WebGUI/Discussion.pm index 6bd79fd04..84d04dfd8 100644 --- a/lib/WebGUI/Discussion.pm +++ b/lib/WebGUI/Discussion.pm @@ -87,10 +87,11 @@ sub deleteMessageConfirm { #------------------------------------------------------------------- sub formatHeader { my $output; - $output = ''.WebGUI::International::get(237).' '.formatSubject($_[0]).'
'; + $output = ''.WebGUI::International::get(237).' '.formatSubject($_[0]).'
' if ($_[0] ne ""); $output .= ''.WebGUI::International::get(238).' - '.$_[2].'
'; - $output .= "".WebGUI::International::get(239)." ".epochToHuman($_[3],"%z %Z")."
"; + '.$_[2].'
' if ($_[1] && $_[2] ne ""); + $output .= "".WebGUI::International::get(239)." ".epochToHuman($_[3],"%z %Z")."
" if ($_[3]); + $output .= "".WebGUI::International::get(514).": ".$_[4]."
" if ($_[4]); return $output; } @@ -129,7 +130,8 @@ sub post { if ($session{form}{replyTo} ne "") { # is a reply $header = WebGUI::International::get(234); %message = getMessage($session{form}{replyTo}); - $footer = formatHeader($message{subject},$message{userId},$message{username},$message{dateOfPost}).'

'.formatMessage($message{message}); + $footer = formatHeader($message{subject},$message{userId},$message{username},$message{dateOfPost},$message{views}) + .'

'.formatMessage($message{message}); $message{message} = ""; $message{subject} = formatSubject("Re: ".$message{subject}); $session{form}{mid} = "new"; @@ -145,7 +147,8 @@ sub post { } else { # is editing an existing message $header = WebGUI::International::get(228); %message = getMessage($session{form}{mid}); - $footer = formatHeader($message{subject},$message{userId},$message{username},$message{dateOfPost}).'

'.formatMessage($message{message}); + $footer = formatHeader($message{subject},$message{userId},$message{username},$message{dateOfPost},$message{views}) + .'

'.formatMessage($message{message}); $message{subject} = formatSubject($message{subject}); } $f->hidden("func","postSave"); @@ -208,18 +211,20 @@ sub purge { #------------------------------------------------------------------- sub showMessage { - my (@data, $html, %message, $defaultMid, $sqlAdd); + my (@data, $html, %message, $sqlAdd); tie %message, 'Tie::CPHash'; if ($session{form}{sid}) { $sqlAdd = " and subId=$session{form}{sid}"; } - ($defaultMid) = WebGUI::SQL->quickArray("select min(messageId) from discussion where wobjectId=$session{form}{wid}".$sqlAdd); - $session{form}{mid} = $defaultMid if ($session{form}{mid} eq ""); + if ($session{form}{mid} eq "") { + ($session{form}{mid}) = WebGUI::SQL->quickArray("select min(messageId) from discussion where wobjectId=$session{form}{wid}".$sqlAdd); + } + WebGUI::SQL->write("update discussion set views=views+1 where messageId=$session{form}{mid}"); %message = getMessage($session{form}{mid}); if ($message{messageId}) { $html .= '

'.$message{subject}.'

'; $html .= ''; $html .= ''; $html .= ''; } diff --git a/lib/WebGUI/Wobject/MessageBoard.pm b/lib/WebGUI/Wobject/MessageBoard.pm index 1cbcaebc9..31b1ec2b2 100644 --- a/lib/WebGUI/Wobject/MessageBoard.pm +++ b/lib/WebGUI/Wobject/MessageBoard.pm @@ -187,7 +187,7 @@ sub www_showMessage { #------------------------------------------------------------------- sub www_view { - my ($sth, @data, $html, $i, $pn, $lastId, @last, $replies); + my ($sth, %data, $html, $i, $pn, $lastId, @last, $replies); if ($session{form}{pn} < 1) { $pn = 0; } else { @@ -204,26 +204,29 @@ sub www_view { $html .= ' + '; - $sth = WebGUI::SQL->read("select messageId,subject,username,dateOfPost,userId + $sth = WebGUI::SQL->read("select messageId,subject,username,dateOfPost,userId,views from discussion where wobjectId=".$_[0]->get("wobjectId")." and pid=0 order by messageId desc"); - while (@data = $sth->array) { - $data[1] = WebGUI::HTML::filter($data[1],'all'); + while (%data = $sth->hash) { + $data{subject} = WebGUI::Discussion::formatSubject($data{subject}); if ($i >= ($_[0]->get("messagesPerPage")*$pn) && $i < ($_[0]->get("messagesPerPage")*($pn+1))) { @last = WebGUI::SQL->quickArray("select messageId,dateOfPost,username,subject,userId - from discussion where wobjectId=".$_[0]->get("wobjectId")." and rid=$data[0] order by dateOfPost desc"); + from discussion where wobjectId=".$_[0]->get("wobjectId")." and rid=$data{messageId} order by dateOfPost desc"); $last[3] = WebGUI::HTML::filter($last[3],'all'); - ($replies) = WebGUI::SQL->quickArray("select count(*) from discussion where rid=$data[0]"); - $replies -= 1; + ($replies) = WebGUI::SQL->quickArray("select count(*) from discussion where rid=$data{messageId}"); + $replies--; $html .= ' - - + href="'.WebGUI::URL::page('func=showMessage&mid='.$data{messageId}.'&wid='.$_[0]->get("wobjectId")) + .'">'.substr($data{subject},0,30).' + + + '; } diff --git a/lib/WebGUI/Wobject/UserSubmission.pm b/lib/WebGUI/Wobject/UserSubmission.pm index e5d3f9df3..e7e3e62e5 100644 --- a/lib/WebGUI/Wobject/UserSubmission.pm +++ b/lib/WebGUI/Wobject/UserSubmission.pm @@ -559,6 +559,7 @@ sub www_view { sub www_viewSubmission { my ($output, %submission, $file, $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}); @@ -570,7 +571,8 @@ sub www_viewSubmission { $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(14,$namespace).': '.$submissionStatus{$submission{status}}.'
'; + $output .= ''.WebGUI::International::get(514).': '.$submission{views}.'
'; $output .= '
'; - $html .= formatHeader($message{subject},$message{userId},$message{username},$message{dateOfPost}); + $html .= formatHeader($message{subject},$message{userId},$message{username},$message{dateOfPost},$message{views}); $html .= ''; $html .= $_[0]; @@ -284,7 +289,7 @@ sub showThreads { if ($session{user}{discussionLayout} eq "flat") { while (%data = $sth->hash) { $html .= '
'; - $html .= formatHeader($data{subject},$data{userId},$data{username},$data{dateOfPost}); + $html .= formatHeader($data{subject},$data{userId},$data{username},$data{dateOfPost},$data{views}); $html .= '
'.formatMessage($data{message}).'
'.WebGUI::International::get(229).' '.WebGUI::International::get(15,$namespace).' '.WebGUI::International::get(18,$namespace).''.WebGUI::International::get(514).' '.WebGUI::International::get(19,$namespace).' '.WebGUI::International::get(20,$namespace).'
'.substr($data[1],0,30).''.$data[2].''.epochToHuman($data[3],"%z %Z").''.$data{username}.''.epochToHuman($data{dateOfPost},"%z %Z").''.$data{views}.' '.$replies.' '.substr($last[3],0,30).' + href="'.WebGUI::URL::page('func=showMessage&mid='.$last[0].'&wid='.$_[0]->get("wobjectId")).'">' + .substr($last[3],0,30).' @ '.epochToHuman($last[1],"%z %Z").' by '.$last[2].'
'; #---menu if ($submission{userId} == $session{user}{userId} && WebGUI::Privilege::isInGroup($_[0]->get("groupToApprove"))) {