diff --git a/docs/upgrades/upgrade_4.0.4-4.1.0.sql b/docs/upgrades/upgrade_4.0.4-4.1.0.sql index d30ab0c54..5e0914d4c 100644 --- a/docs/upgrades/upgrade_4.0.4-4.1.0.sql +++ b/docs/upgrades/upgrade_4.0.4-4.1.0.sql @@ -21,5 +21,6 @@ INSERT INTO international VALUES (30,'UserSubmission','English','Karma Per Submi alter table UserSubmission add column karmaPerSubmission int not null default 0; alter table UserSubmission add column karmaPerPost int not null default 0; alter table MessageBoard add column karmaPerPost int not null default 0; +alter table Article add column karmaPerPost int not null default 0; diff --git a/lib/WebGUI/Discussion.pm b/lib/WebGUI/Discussion.pm index 1340bf835..6fcbc6e70 100644 --- a/lib/WebGUI/Discussion.pm +++ b/lib/WebGUI/Discussion.pm @@ -21,6 +21,7 @@ use WebGUI::Search; use WebGUI::Session; use WebGUI::SQL; use WebGUI::URL; +use WebGUI::User; #------------------------------------------------------------------- sub _deleteReplyTree { @@ -172,7 +173,7 @@ sub post { #------------------------------------------------------------------- sub postSave { - my ($rid, $username, $pid); + my ($u, $rid, $username, $pid); if ($session{form}{subject} eq "") { $session{form}{subject} = WebGUI::International::get(232); } @@ -207,6 +208,10 @@ sub postSave { } WebGUI::SQL->write("update discussion set subject=".quote($session{form}{subject}).", message=".quote($session{form}{message}).", dateOfPost=".time()." where messageId=$session{form}{mid}"); + if ($session{setting}{useKarma}) { + $u = WebGUI::User->new($session{user}{userId}); + $u->karma($_[0],"Discussion (".$session{form}{wid}."/".$session{form}{sid}.")","Made a post."); + } return ""; } diff --git a/lib/WebGUI/Wobject/Article.pm b/lib/WebGUI/Wobject/Article.pm index 0603c3f9a..fa7f011ab 100644 --- a/lib/WebGUI/Wobject/Article.pm +++ b/lib/WebGUI/Wobject/Article.pm @@ -65,6 +65,7 @@ sub duplicate { allowDiscussion=>$_[0]->get("allowDiscussion"), groupToPost=>$_[0]->get("groupToPost"), groupToModerate=>$_[0]->get("groupToModerate"), + karmaPerPost=>$_[0]->get("karmaPerPost"), editTimeout=>$_[0]->get("editTimeout") }); WebGUI::Discussion::duplicate($_[0]->get("wobjectId"),$w->get("wobjectId")); @@ -88,7 +89,7 @@ sub purge { #------------------------------------------------------------------- sub set { $_[0]->SUPER::set($_[1], - [qw(image linkTitle linkURL attachment convertCarriageReturns alignImage allowDiscussion groupToPost groupToModerate editTimeout)]); + [qw(karmaPerPost image linkTitle linkURL attachment convertCarriageReturns alignImage allowDiscussion groupToPost groupToModerate editTimeout)]); } #------------------------------------------------------------------- @@ -179,6 +180,11 @@ sub www_edit { $f->group("groupToPost",WebGUI::International::get(19,$namespace),[$_[0]->get("groupToPost")]); $f->group("groupToModerate",WebGUI::International::get(20,$namespace),[$groupToModerate]); $f->integer("editTimeout",WebGUI::International::get(21,$namespace),$editTimeout); + if ($session{setting}{useKarma}) { + $f->integer("karmaPerPost",WebGUI::International::get(541),$_[0]->get("karmaPerPost")); + } else { + $f->hidden("karmaPerPost",$_[0]->get("karmaPerPost")); + } $output .= $_[0]->SUPER::www_edit($f->printRowsOnly); return $output; } else { @@ -203,6 +209,7 @@ sub www_editSave { $property{linkURL} = $session{form}{linkURL}; $property{allowDiscussion} = $session{form}{allowDiscussion}; $property{groupToModerate} = $session{form}{groupToModerate}; + $property{karmaPerPost} = $session{form}{karmaPerPost}; $property{groupToPost} = $session{form}{groupToPost}; $property{editTimeout} = $session{form}{editTimeout}; $_[0]->set(\%property); @@ -224,7 +231,7 @@ sub www_post { #------------------------------------------------------------------- sub www_postSave { if (WebGUI::Privilege::isInGroup($_[0]->get("groupToPost"),$session{user}{userId})) { - WebGUI::Discussion::postSave(); + WebGUI::Discussion::postSave($_[0]->get("karmaPerPost")); return $_[0]->www_showMessage(); } else { return WebGUI::Privilege::insufficient(); diff --git a/lib/WebGUI/Wobject/MessageBoard.pm b/lib/WebGUI/Wobject/MessageBoard.pm index 346950b2f..68cd129ee 100644 --- a/lib/WebGUI/Wobject/MessageBoard.pm +++ b/lib/WebGUI/Wobject/MessageBoard.pm @@ -54,7 +54,8 @@ sub duplicate { groupToPost=>$_[0]->get("groupToPost"), messagesPerPage=>$_[0]->get("messagesPerPage"), editTimeout=>$_[0]->get("editTimeout"), - groupToModerate=>$_[0]->get("groupToModerate") + groupToModerate=>$_[0]->get("groupToModerate"), + karmaPerPost=>$_[0]->get("karmaPerPost") }); WebGUI::Discussion::duplicate($_[0]->get("wobjectId"),$w->get("wobjectId")); } @@ -76,7 +77,7 @@ sub purge { #------------------------------------------------------------------- sub set { - $_[0]->SUPER::set($_[1],[qw(editTimeout groupToPost groupToModerate messagesPerPage)]); + $_[0]->SUPER::set($_[1],[qw(editTimeout karmaPerPost groupToPost groupToModerate messagesPerPage)]); } #------------------------------------------------------------------- @@ -125,6 +126,11 @@ sub www_edit { $f->group("groupToModerate",WebGUI::International::get(21,$namespace),[$groupToModerate]); $f->integer("messagesPerPage",WebGUI::International::get(4,$namespace),$messagesPerPage); $f->integer("editTimeout",WebGUI::International::get(5,$namespace),$editTimeout); + if ($session{setting}{useKarma}) { + $f->integer("karmaPerPost",WebGUI::International::get(541),$_[0]->get("karmaPerPost")); + } else { + $f->hidden("karmaPerPost",$_[0]->get("karmaPerPost")); + } $output .= $_[0]->SUPER::www_edit($f->printRowsOnly); return $output; } else { @@ -141,6 +147,7 @@ sub www_editSave { messagesPerPage=>$session{form}{messagesPerPage}, groupToPost=>$session{form}{groupToPost}, editTimeout=>$session{form}{editTimeout}, + karmaPerPost=>$session{form}{karmaPerPost}, groupToModerate=>$session{form}{groupToModerate} }); return ""; @@ -161,7 +168,7 @@ sub www_post { #------------------------------------------------------------------- sub www_postSave { if (WebGUI::Privilege::isInGroup($_[0]->get("groupToPost"),$session{user}{userId})) { - WebGUI::Discussion::postSave(); + WebGUI::Discussion::postSave($_[0]->get("karmaPerPost")); return $_[0]->www_showMessage(); } else { return WebGUI::Privilege::insufficient(); diff --git a/lib/WebGUI/Wobject/UserSubmission.pm b/lib/WebGUI/Wobject/UserSubmission.pm index 9527e03cf..ece7ce6db 100644 --- a/lib/WebGUI/Wobject/UserSubmission.pm +++ b/lib/WebGUI/Wobject/UserSubmission.pm @@ -26,6 +26,7 @@ use WebGUI::Privilege; use WebGUI::Session; use WebGUI::SQL; use WebGUI::URL; +use WebGUI::User; use WebGUI::Utility; use WebGUI::Wobject; @@ -213,6 +214,8 @@ sub duplicate { groupToApprove=>$_[0]->get("groupToApprove"), allowDiscussion=>$_[0]->get("allowDiscussion"), editTimeout=>$_[0]->get("editTimeout"), + karmaPerPost=>$_[0]->get("karmaPerPost"), + karmaPerSubmission=>$_[0]->get("karmaPerSubmission"), groupToPost=>$_[0]->get("groupToPost"), layout=>$_[0]->get("layout"), displayThumbnails=>$_[0]->get("displayThumbnails"), @@ -252,7 +255,7 @@ sub purge { #------------------------------------------------------------------- sub set { $_[0]->SUPER::set($_[1],[qw(submissionsPerPage groupToContribute groupToApprove defaultStatus groupToModerate - groupToPost displayThumbnails editTimeout layout allowDiscussion)]); + groupToPost displayThumbnails editTimeout karmaPerPost karmaPerSubmission layout allowDiscussion)]); } #------------------------------------------------------------------- @@ -389,11 +392,21 @@ sub www_edit { $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(10,$namespace),[$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->integer("editTimeout",WebGUI::International::get(49,$namespace),$_[0]->get("editTimeout")); $f->group("groupToPost",WebGUI::International::get(50,$namespace),[$_[0]->get("groupToPost")]); $f->group("groupToModerate",WebGUI::International::get(44,$namespace),[$groupToModerate]); + if ($session{setting}{useKarma}) { + $f->integer("karmaPerPost",WebGUI::International::get(541),$_[0]->get("karmaPerPost")); + } else { + $f->hidden("karmaPerPost",$_[0]->get("karmaPerPost")); + } $output .= $_[0]->SUPER::www_edit($f->printRowsOnly); return $output; } else { @@ -412,6 +425,8 @@ sub www_editSave { defaultStatus=>$session{form}{defaultStatus}, groupToModerate=>$session{form}{groupToModerate}, groupToPost=>$session{form}{groupToPost}, + karmaPerPost=>$session{form}{karmaPerPost}, + karmaPerSubmission=>$session{form}{karmaPerSubmission}, editTimeout=>$session{form}{editTimeout}, allowDiscussion=>$session{form}{allowDiscussion}, layout=>$session{form}{layout}, @@ -467,7 +482,7 @@ sub www_editSubmission { #------------------------------------------------------------------- sub www_editSubmissionSave { - my ($sqlAdd,$owner,$image,$attachment,$title); + my ($sqlAdd,$owner,$image,$attachment,$title,$u); ($owner) = WebGUI::SQL->quickArray("select userId from UserSubmission_submission where submissionId='$session{form}{sid}'"); if ($owner == $session{user}{userId} || ($session{form}{sid} eq "new" && WebGUI::Privilege::isInGroup($_[0]->get("groupToContribute"))) @@ -476,6 +491,10 @@ sub www_editSubmissionSave { $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"); @@ -523,7 +542,7 @@ sub www_post { #------------------------------------------------------------------- sub www_postSave { if (WebGUI::Privilege::isInGroup($_[0]->get("groupToPost"),$session{user}{userId})) { - WebGUI::Discussion::postSave(); + WebGUI::Discussion::postSave($_[0]->get("karmaPerPost")); return $_[0]->www_showMessage(); } else { return WebGUI::Privilege::insufficient();