Updated notification system to allow for much more functionality.
This commit is contained in:
parent
2bb835a445
commit
6d574cd0b9
5 changed files with 133 additions and 73 deletions
|
|
@ -42,4 +42,10 @@ INSERT INTO international VALUES (548,'WebGUI','English','Group name');
|
|||
INSERT INTO international VALUES (549,'WebGUI','English','Group description');
|
||||
INSERT INTO international VALUES (550,'WebGUI','English','View Image group');
|
||||
INSERT INTO international VALUES (382,'WebGUI','English','Edit Image');
|
||||
alter table messageLog add column subject varchar(255);
|
||||
alter table messageLog add column status varchar(30) default 'notice';
|
||||
INSERT INTO international VALUES (551,'WebGUI','English','Notice');
|
||||
INSERT INTO international VALUES (552,'WebGUI','English','Pending');
|
||||
INSERT INTO international VALUES (553,'WebGUI','English','Status');
|
||||
|
||||
|
||||
|
|
|
|||
|
|
@ -12,88 +12,99 @@ package WebGUI::MessageLog;
|
|||
|
||||
use strict;
|
||||
use Tie::CPHash;
|
||||
use WebGUI::International;
|
||||
use WebGUI::Macro;
|
||||
use WebGUI::Mail;
|
||||
use WebGUI::Session;
|
||||
use WebGUI::SQL;
|
||||
use WebGUI::URL;
|
||||
use WebGUI::User;
|
||||
|
||||
|
||||
#-------------------------------------------------------------------
|
||||
sub _getUserInfo {
|
||||
my (%default, $key, %user, %profile, $value);
|
||||
tie %user, 'Tie::CPHash';
|
||||
%user = WebGUI::SQL->quickHash("select * from users where userId='$_[0]'");
|
||||
if ($user{userId} ne "") {
|
||||
%profile = WebGUI::SQL->buildHash("select userProfileField.fieldName, userProfileData.fieldData
|
||||
from userProfileData, userProfileField
|
||||
where userProfileData.fieldName=userProfileField.fieldName and userProfileData.userId=$user{userId}");
|
||||
%user = (%user, %profile);
|
||||
%default = WebGUI::SQL->buildHash("select fieldName, dataDefault from userProfileField where profileCategoryId=4");
|
||||
foreach $key (keys %default) {
|
||||
if ($user{$key} eq "") {
|
||||
$value = eval($default{$key});
|
||||
if (ref $value eq "ARRAY") {
|
||||
$user{$key} = $$value[0];
|
||||
} else {
|
||||
$user{$key} = $value;
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
return \%user;
|
||||
sub _notify {
|
||||
my ($u, $message, $subject);
|
||||
$u = $_[0];
|
||||
$subject = $_[1];
|
||||
$message = $_[2];
|
||||
if ($u->profileField("INBOXNotifications") eq "email") {
|
||||
if ($u->profileField("email") ne "") {
|
||||
WebGUI::Mail::send($u->profileField("email"),$subject,$message);
|
||||
}
|
||||
} elsif ($u->profileField("INBOXNotifications") eq "emailToPager") {
|
||||
if ($u->profileField("emailToPagerGateway") ne "") {
|
||||
WebGUI::Mail::send($u->profileField("emailToPagerGateway"),$subject,$message);
|
||||
}
|
||||
} elsif ($u->profileField("INBOXNotifications") eq "icq") {
|
||||
if ($u->profileField("icq")) {
|
||||
WebGUI::Mail::send($u->profileField("icq").'@pager.icq.com',$subject,$message);
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
#-------------------------------------------------------------------
|
||||
sub addEntry {
|
||||
my (@users, $messageLogId,$sth, $user, %message, %subject, $message, $subject, $namespace);
|
||||
my ($u, @users, $messageLogId, $sth, $userId, $groupId, $subject, $message, $url, $status, $user);
|
||||
$messageLogId = getNextId("messageLogId");
|
||||
$namespace = $_[4] || "WebGUI";
|
||||
%message = WebGUI::SQL->buildHash("select language,message from international where internationalId=$_[3] and namespace='$namespace'");
|
||||
%subject = WebGUI::SQL->buildHash("select language,message from international where internationalId=523 and namespace='WebGUI'");
|
||||
if ($_[1] ne "") {
|
||||
@users = WebGUI::SQL->quickArray("select userId from groupings where groupId=$_[1]");
|
||||
$userId = $_[0];
|
||||
$groupId = $_[1];
|
||||
$subject = $_[2];
|
||||
$message = $_[3];
|
||||
$url = $_[4];
|
||||
$status = $_[5];
|
||||
if ($groupId ne "") {
|
||||
@users = WebGUI::SQL->quickArray("select userId from groupings where groupId=$groupId");
|
||||
}
|
||||
@users = ($_[0],@users);
|
||||
@users = ($userId,@users);
|
||||
foreach $user (@users) {
|
||||
$user = _getUserInfo($user);
|
||||
if (${$user}{userId} ne "") {
|
||||
WebGUI::SQL->write("insert into messageLog values ($messageLogId,".${$user}{userId}.",
|
||||
".quote($message{${$user}{language}}).",".quote($_[2]).",".time().")");
|
||||
$subject{${$user}{language}} = $subject{'English'} if ($subject{${$user}{language}} eq "");
|
||||
$subject = $subject{${$user}{language}};
|
||||
$message{${$user}{language}} = $message{'English'} if ($message{${$user}{language}} eq "");
|
||||
$message = WebGUI::Macro::process($message{${$user}{language}});
|
||||
if ($_[2] ne "") {
|
||||
$message .= "\n".WebGUI::URL::append('http://'.$session{env}{HTTP_HOST}.$_[2],'mlog='.$messageLogId);
|
||||
}
|
||||
if (${$user}{INBOXNotifications} eq "email") {
|
||||
if (${$user}{email} ne "") {
|
||||
WebGUI::Mail::send(${$user}{email},$subject,$message);
|
||||
}
|
||||
} elsif (${$user}{INBOXNotifications} eq "emailToPager") {
|
||||
if (${$user}{emailToPagerGateway} ne "") {
|
||||
WebGUI::Mail::send(${$user}{emailToPagerGateway},$subject,$message);
|
||||
}
|
||||
} elsif (${$user}{INBOXNotifications} eq "icq") {
|
||||
if (${$user}{icq}) {
|
||||
WebGUI::Mail::send(${$user}{icq}.'@pager.icq.com',$subject,$message);
|
||||
}
|
||||
$u = WebGUI::User->new($user);
|
||||
if ($u->userId ne "") {
|
||||
WebGUI::SQL->write("insert into messageLog values ($messageLogId,".$u->userId.",
|
||||
".quote($message).",".quote($url).",".time().",".quote($subject).", ".quote($status).")");
|
||||
if ($url ne "") {
|
||||
$message .= "\n".WebGUI::URL::append('http://'.$session{env}{HTTP_HOST}.$url,'mlog='.$messageLogId);
|
||||
}
|
||||
_notify($u,$subject,$message);
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
#-------------------------------------------------------------------
|
||||
sub addInternationalizedEntry {
|
||||
my ($u, $userId, $url, $groupId, $internationalId, @users, $messageLogId,$sth, $user, %message, %subject, $message, $subject, $namespace, $status);
|
||||
$messageLogId = getNextId("messageLogId");
|
||||
$userId = $_[0];
|
||||
$groupId = $_[1];
|
||||
$url = $_[2];
|
||||
$internationalId = $_[3];
|
||||
$namespace = $_[4] || "WebGUI";
|
||||
$status = $_[5] || 'notice';
|
||||
%message = WebGUI::SQL->buildHash("select language,message from international where internationalId=$internationalId and namespace='$namespace'");
|
||||
%subject = WebGUI::SQL->buildHash("select language,message from international where internationalId=523 and namespace='WebGUI'");
|
||||
if ($groupId ne "") {
|
||||
@users = WebGUI::SQL->quickArray("select userId from groupings where groupId=$groupId");
|
||||
}
|
||||
@users = ($userId,@users);
|
||||
foreach $user (@users) {
|
||||
$u = WebGUI::User->new($user);
|
||||
if ($u->userId ne "") {
|
||||
$subject{$u->profileField("language")} = $subject{'English'} if ($subject{$u->profileField("language")} eq "");
|
||||
$subject = $subject{$u->profileField("language")};
|
||||
$message{$u->profileField("language")} = $message{'English'} if ($message{$u->profileField("language")} eq "");
|
||||
$message = WebGUI::Macro::process($message{$u->profileField("language")});
|
||||
WebGUI::SQL->write("insert into messageLog values ($messageLogId,".$u->userId.",
|
||||
".quote($message).",".quote($url).",".time().",".quote($message).",".quote($status).")");
|
||||
if ($url ne "") {
|
||||
$message .= "\n".WebGUI::URL::append('http://'.$session{env}{HTTP_HOST}.$url,'mlog='.$messageLogId);
|
||||
}
|
||||
_notify($u,$subject,$message);
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
#-------------------------------------------------------------------
|
||||
sub completeEntry {
|
||||
my ($sth, @data, $completeMessage);
|
||||
$completeMessage = WebGUI::International::get(350);
|
||||
# unfortunately had to loop through reading and writing because I couldn't
|
||||
# find a concatination function that worked the same in all DB servers
|
||||
$sth = WebGUI::SQL->read("select message,userId from messageLog where messageLogId='$_[0]'");
|
||||
while (@data = $sth->array) {
|
||||
WebGUI::SQL->write("update messageLog set message=".quote($completeMessage.": ".$data[0]).", dateOfEntry=".time()." where messageLogId='$_[0]' and userId=$data[1]");
|
||||
}
|
||||
$sth->finish;
|
||||
WebGUI::SQL->write("update messageLog set status='completed', dateOfEntry=".time()." where messageLogId='$_[0]'");
|
||||
}
|
||||
|
||||
|
||||
|
|
|
|||
|
|
@ -30,7 +30,7 @@ use WebGUI::User;
|
|||
use WebGUI::Utility;
|
||||
|
||||
our @ISA = qw(Exporter);
|
||||
our @EXPORT = qw(&www_viewMessageLog &www_viewProfile &www_editProfile &www_editProfileSave &www_createAccount &www_deactivateAccount &www_deactivateAccountConfirm &www_displayAccount &www_displayLogin &www_login &www_logout &www_recoverPassword &www_recoverPasswordFinish &www_createAccountSave &www_updateAccount);
|
||||
our @EXPORT = qw(&www_viewMessageLogMessage &www_viewMessageLog &www_viewProfile &www_editProfile &www_editProfileSave &www_createAccount &www_deactivateAccount &www_deactivateAccountConfirm &www_displayAccount &www_displayLogin &www_login &www_logout &www_recoverPassword &www_recoverPasswordFinish &www_createAccountSave &www_updateAccount);
|
||||
our %ldapStatusCode = ( 0=>'success (0)', 1=>'Operations Error (1)', 2=>'Protocol Error (2)',
|
||||
3=>'Time Limit Exceeded (3)', 4=>'Size Limit Exceeded (4)', 5=>'Compare False (5)',
|
||||
6=>'Compare True (6)', 7=>'Auth Method Not Supported (7)', 8=>'Strong Auth Required (8)',
|
||||
|
|
@ -253,7 +253,7 @@ sub www_createAccountSave {
|
|||
}
|
||||
WebGUI::Session::start($u->userId);
|
||||
_logLogin($u->userId,"success");
|
||||
WebGUI::MessageLog::addEntry('',$session{setting}{onNewUserAlertGroup},'',536) if ($session{setting}{alertOnNewUser});
|
||||
WebGUI::MessageLog::addInternationalizedEntry('',$session{setting}{onNewUserAlertGroup},'',536) if ($session{setting}{alertOnNewUser});
|
||||
} else {
|
||||
$output = "<h1>".WebGUI::International::get(70)."</h1>".$error.www_createAccount();
|
||||
}
|
||||
|
|
@ -563,27 +563,32 @@ sub www_updateAccount {
|
|||
|
||||
#-------------------------------------------------------------------
|
||||
sub www_viewMessageLog {
|
||||
my (@data, $output, $sth, @row, $i, $p);
|
||||
my (%status, @data, $output, $sth, @row, $i, $p);
|
||||
if (WebGUI::Privilege::isInGroup(2,$session{user}{userId})) {
|
||||
%status = (notice=>WebGUI::International::get(551),pending=>WebGUI::International::get(552),completed=>WebGUI::International::get(350));
|
||||
$output = '<h1>'.WebGUI::International::get(159).'</h1>';
|
||||
$sth = WebGUI::SQL->read("select messageLogId,message,url,dateOfEntry from messageLog where userId=$session{user}{userId} order by dateOfEntry desc");
|
||||
$sth = WebGUI::SQL->read("select messageLogId,subject,url,dateOfEntry,status from messageLog where userId=$session{user}{userId} order by dateOfEntry desc");
|
||||
while (@data = $sth->array) {
|
||||
$row[$i] = '<tr><td class="tableData">';
|
||||
$row[$i] .= '<a href="'.WebGUI::URL::page('op=viewMessageLogMessage&mlog='.$data[0]).'">'.$data[1].'</a>';
|
||||
$row[$i] .= '</td><td class="tableData">';
|
||||
if ($data[2] ne "") {
|
||||
$data[2] = WebGUI::URL::append($data[2],'mlog='.$data[0]);
|
||||
$row[$i] .= '<a href="'.$data[2].'">';
|
||||
}
|
||||
$row[$i] .= $data[1];
|
||||
$row[$i] .= $status{$data[4]};
|
||||
if ($data[2] ne "") {
|
||||
$row[$i] .= '</a>';
|
||||
}
|
||||
$row[$i] .= '</td><td class="tableData">'.epochToHuman($data[3],"%m/%d/%Y @ %H:%n%p").'</td></tr>';
|
||||
$row[$i] .= '</td><td class="tableData">'.epochToHuman($data[3]).'</td></tr>';
|
||||
$i++;
|
||||
}
|
||||
$sth->finish;
|
||||
$p = WebGUI::Paginator->new(WebGUI::URL::page('op=viewMessageLog'),\@row);
|
||||
$output .= '<table width="100%" cellspacing=1 cellpadding=2 border=0>';
|
||||
$output .= '<tr><td class="tableHeader">'.WebGUI::International::get(351).'</td><td class="tableHeader">'.WebGUI::International::get(352).'</td></tr>';
|
||||
$output .= '<tr><td class="tableHeader">'.WebGUI::International::get(351).'</td>
|
||||
<td class="tableHeader">'.WebGUI::International::get(553).'</td>
|
||||
<td class="tableHeader">'.WebGUI::International::get(352).'</td></tr>';
|
||||
if ($p->getPage($session{form}{pn}) eq "") {
|
||||
$output .= '<tr><td rowspan=2 class="tableData">'.WebGUI::International::get(353).'</td></tr>';
|
||||
} else {
|
||||
|
|
@ -598,6 +603,33 @@ sub www_viewMessageLog {
|
|||
return $output;
|
||||
}
|
||||
|
||||
#-------------------------------------------------------------------
|
||||
sub www_viewMessageLogMessage {
|
||||
my (%status, %data, $output, $sth, @row, $i, $p);
|
||||
tie %data, 'Tie::CPHash';
|
||||
if (WebGUI::Privilege::isInGroup(2,$session{user}{userId})) {
|
||||
%status = (notice=>WebGUI::International::get(551),pending=>WebGUI::International::get(552),completed=>WebGUI::International::get(350));
|
||||
$output = '<h1>'.WebGUI::International::get(159).'</h1>';
|
||||
%data = WebGUI::SQL->quickHash("select * from messageLog where messageLogId=$session{form}{mlog} and userId=$session{user}{userId}");
|
||||
$output .= '<b>'.$data{subject}.'</b><br>';
|
||||
$output .= epochToHuman($data{dateOfEntry}).'<br>';
|
||||
if ($data{url} ne "" && $data{status} eq 'pending') {
|
||||
$data{url} = WebGUI::URL::append($data{url},'mlog='.$data{messageLogId});
|
||||
$output .= '<a href="'.$data{url}.'">';
|
||||
}
|
||||
$output .= $status{$data{status}}.'<br>';
|
||||
if ($data{url} ne "") {
|
||||
$output .= '</a>';
|
||||
}
|
||||
$output .= '<br>'.$data{message}.'<p>';
|
||||
$output .= '<a href="'.WebGUI::URL::page('op=viewMessageLog').'">'.WebGUI::International::get(354).'</a><p>';
|
||||
$output .= _accountOptions();
|
||||
} else {
|
||||
$output = WebGUI::Privilege::insufficient();
|
||||
}
|
||||
return $output;
|
||||
}
|
||||
|
||||
#-------------------------------------------------------------------
|
||||
sub www_viewProfile {
|
||||
my ($a, %data, $category, $label, $value, $previousCategory, $output, $u, %gender);
|
||||
|
|
|
|||
|
|
@ -295,7 +295,7 @@ sub ldapURL {
|
|||
=cut
|
||||
|
||||
sub new {
|
||||
my ($class, $userId, %user, %profile);
|
||||
my (%default, $class, $userId, %default, $value, $key, %user, %profile);
|
||||
tie %user, 'Tie::CPHash';
|
||||
$class = shift;
|
||||
$userId = shift || 1;
|
||||
|
|
@ -304,6 +304,17 @@ sub new {
|
|||
%profile = WebGUI::SQL->buildHash("select userProfileField.fieldName, userProfileData.fieldData
|
||||
from userProfileField, userProfileData where userProfileField.fieldName=userProfileData.fieldName and
|
||||
userProfileData.userId='$user{userId}'");
|
||||
# %default = WebGUI::SQL->buildHash("select fieldName, dataDefault from userProfileField where profileCategoryId=4");
|
||||
#foreach $key (keys %default) {
|
||||
# if ($profile{$key} eq "") {
|
||||
# $value = eval($default{$key});
|
||||
# if (ref $value eq "ARRAY") {
|
||||
# $profile{$key} = $$value[0];
|
||||
# } else {
|
||||
# $profile{$key} = $value;
|
||||
# }
|
||||
# }
|
||||
#}
|
||||
bless {_userId => $userId, _user => \%user, _profile =>\%profile }, $class;
|
||||
}
|
||||
|
||||
|
|
|
|||
|
|
@ -265,7 +265,7 @@ sub www_approveSubmission {
|
|||
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='.
|
||||
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();
|
||||
|
|
@ -363,7 +363,7 @@ sub www_denySubmission {
|
|||
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='.
|
||||
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();
|
||||
|
|
@ -520,9 +520,9 @@ sub www_editSubmissionSave {
|
|||
status='".$_[0]->get("defaultStatus")."'
|
||||
where submissionId=$session{form}{sid}");
|
||||
if ($_[0]->get("defaultStatus") ne "Approved") {
|
||||
WebGUI::MessageLog::addEntry('',$_[0]->get("groupToApprove"),
|
||||
WebGUI::MessageLog::addInternationalizedEntry('',$_[0]->get("groupToApprove"),
|
||||
WebGUI::URL::page('func=viewSubmission&wid='.$_[0]->get("wobjectId").'&sid='.
|
||||
$session{form}{sid}),3,$namespace);
|
||||
$session{form}{sid}),3,$namespace,'pending');
|
||||
}
|
||||
return $_[0]->www_viewSubmission();
|
||||
} else {
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue