100 lines
4.3 KiB
Perl
100 lines
4.3 KiB
Perl
package WebGUI::MessageLog;
|
|
|
|
#-------------------------------------------------------------------
|
|
# 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::Macro;
|
|
use WebGUI::Mail;
|
|
use WebGUI::Session;
|
|
use WebGUI::SQL;
|
|
use WebGUI::URL;
|
|
|
|
#-------------------------------------------------------------------
|
|
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 addEntry {
|
|
my (@users, $messageLogId,$sth, $user, %message, %subject, $message, $subject, $namespace);
|
|
$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]");
|
|
}
|
|
@users = ($_[0],@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} = "email") {
|
|
if (${$user}{email} ne "") {
|
|
WebGUI::Mail::send(${$user}{email},$subject,$message);
|
|
}
|
|
} elsif (${$user}{INBOXNotifications} = "emailToPager") {
|
|
if (${$user}{emailToPagerGateway} ne "") {
|
|
WebGUI::Mail::send(${$user}{emailToPagerGateway},$subject,$message);
|
|
}
|
|
} elsif (${$user}{INBOXNotifications} = "icq") {
|
|
if (${$user}{icq}) {
|
|
WebGUI::Mail::send(${$user}{icq}.'@pager.icq.com',$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;
|
|
}
|
|
|
|
|
|
1;
|