WebGUI 2.0.0 release

This commit is contained in:
JT Smith 2001-10-06 22:37:00 +00:00
parent 6cf30b32bd
commit 08a5f757da
10 changed files with 101 additions and 32 deletions

View file

@ -195,6 +195,7 @@ CREATE TABLE event (
description text, description text,
startDate int(11) default NULL, startDate int(11) default NULL,
endDate int(11) default NULL, endDate int(11) default NULL,
recurringEventId int(11) NOT NULL default '0',
PRIMARY KEY (eventId) PRIMARY KEY (eventId)
) TYPE=MyISAM; ) TYPE=MyISAM;
@ -370,6 +371,7 @@ INSERT INTO incrementer VALUES ('eventId',1);
INSERT INTO incrementer VALUES ('linkId',1); INSERT INTO incrementer VALUES ('linkId',1);
INSERT INTO incrementer VALUES ('questionId',1); INSERT INTO incrementer VALUES ('questionId',1);
INSERT INTO incrementer VALUES ('submissionId',1); INSERT INTO incrementer VALUES ('submissionId',1);
INSERT INTO incrementer VALUES ('recurringEventId',1);
# #
# Table structure for table 'link' # Table structure for table 'link'
@ -518,7 +520,7 @@ INSERT INTO settings VALUES ('maxAttachmentSize','300');
INSERT INTO settings VALUES ('lib','/extras'); INSERT INTO settings VALUES ('lib','/extras');
INSERT INTO settings VALUES ('sessionTimeout','28000'); INSERT INTO settings VALUES ('sessionTimeout','28000');
INSERT INTO settings VALUES ('attachmentDirectoryLocal','/data/WebGUI/uploads'); INSERT INTO settings VALUES ('attachmentDirectoryLocal','/data/WebGUI/uploads');
INSERT INTO settings VALUES ('smtpServer','smtp.mycompany.com'); INSERT INTO settings VALUES ('smtpServer','localhost');
INSERT INTO settings VALUES ('companyEmail','info@mycompany.com'); INSERT INTO settings VALUES ('companyEmail','info@mycompany.com');
INSERT INTO settings VALUES ('ldapURL','ldap://ldap.mycompany.com:389/o=MyCompany'); INSERT INTO settings VALUES ('ldapURL','ldap://ldap.mycompany.com:389/o=MyCompany');
INSERT INTO settings VALUES ('companyName','My Company'); INSERT INTO settings VALUES ('companyName','My Company');

View file

@ -0,0 +1,2 @@
alter table event add column recurringEventId int not null;
INSERT INTO incrementer VALUES ('recurringEventId',1);

View file

@ -1,5 +1,5 @@
package WebGUI; package WebGUI;
our $VERSION = "1.3.1"; our $VERSION = "2.0.0";
#------------------------------------------------------------------- #-------------------------------------------------------------------
# WebGUI is Copyright 2001 Plain Black Software. # WebGUI is Copyright 2001 Plain Black Software.

View file

@ -10,28 +10,35 @@ package WebGUI::Mail;
# http://www.plainblack.com info@plainblack.com # http://www.plainblack.com info@plainblack.com
#------------------------------------------------------------------- #-------------------------------------------------------------------
use Net::SMTP;
use strict; use strict;
use WebGUI::ErrorHandler;
use WebGUI::Session; use WebGUI::Session;
#------------------------------------------------------------------- #-------------------------------------------------------------------
#eg: send("jt@jt.com","hi, how are you","this is my message","bob@bob.com"); #eg: send("jt@jt.com","hi, how are you","this is my message","bob@bob.com");
#eg: send(to,subject,message,cc);
sub send { sub send {
my ($smtp); my ($smtp);
$smtp = Net::SMTP->new($session{setting}{smtpServer}); # connect to an SMTP server $smtp = Net::SMTP->new($session{setting}{smtpServer}); # connect to an SMTP server
$smtp->mail($session{setting}{companyEmail}); # use the sender's address here if (defined $smtp) {
$smtp->to($_[0]); # recipient's address $smtp->mail($session{setting}{companyEmail}); # use the sender's address here
$smtp->data(); # Start the mail $smtp->to($_[0]); # recipient's address
# Send the header. $smtp->data(); # Start the mail
$smtp->datasend("To: ".$_[0]."\n"); # Send the header.
$smtp->datasend("From: $session{setting}{companyName} <$session{setting}{companyEmail}>\n"); $smtp->datasend("To: ".$_[0]."\n");
$smtp->datasend("CC: $_[3]\n") if ($cc); $smtp->datasend("From: $session{setting}{companyName} <$session{setting}{companyEmail}>\n");
$smtp->datasend("Subject: ".$_[1]."\n"); $smtp->datasend("CC: $_[3]\n") if ($_[3]);
$smtp->datasend("\n"); $smtp->datasend("Subject: ".$_[1]."\n");
# Send the body. $smtp->datasend("\n");
$smtp->datasend($_[2]); # Send the body.
$smtp->datasend("\n\n $session{setting}{companyName}\n $setting{setting}{companyEmail}\n $session{setting}{companyURL}\n"); $smtp->datasend($_[2]);
$smtp->dataend(); # Finish sending the mail $smtp->datasend("\n\n $session{setting}{companyName}\n $session{setting}{companyEmail}\n $session{setting}{companyURL}\n");
$smtp->quit; # Close the SMTP connection $smtp->dataend(); # Finish sending the mail
$smtp->quit; # Close the SMTP connection
} else {
WebGUI::ErrorHandler::warn("Couldn't connect to mail server: ".$session{setting}{smtpServer});
}
} }

View file

@ -15,7 +15,9 @@ use Exporter;
use Net::LDAP; use Net::LDAP;
use strict; use strict;
use URI; use URI;
use WebGUI::ErrorHandler;
use WebGUI::Form; use WebGUI::Form;
use WebGUI::Mail;
use WebGUI::Privilege; use WebGUI::Privilege;
use WebGUI::Session; use WebGUI::Session;
use WebGUI::SQL; use WebGUI::SQL;
@ -84,7 +86,12 @@ sub www_createAccount {
$output .= '<tr><td></td><td>'.WebGUI::Form::submit("create").'</td></tr>'; $output .= '<tr><td></td><td>'.WebGUI::Form::submit("create").'</td></tr>';
$output .= '</table>'; $output .= '</table>';
$output .= '</form> '; $output .= '</form> ';
$output .= '<div class="accountOptions"><ul><li><a href="'.$session{page}{url}.'?op=displayLogin">I already have an account.</a><li><a href="'.$session{page}{url}.'?op=recoverPassword">I forgot my password.</a></ul></div>'; $output .= '<div class="accountOptions"><ul>';
$output .= '<li><a href="'.$session{page}{url}.'?op=displayLogin">I already have an account.</a>';
if ($session{setting}{authMethod} eq "WebGUI") {
$output .= '<li><a href="'.$session{page}{url}.'?op=recoverPassword">I forgot my password.</a>';
}
$output .= '</ul></div>';
} }
return $output; return $output;
} }
@ -167,7 +174,9 @@ sub www_displayLogin {
if ($session{setting}{anonymousRegistration} eq "yes") { if ($session{setting}{anonymousRegistration} eq "yes") {
$output .= '<li><a href="'.$session{page}{url}.'?op=createAccount">Create a new account.</a>'; $output .= '<li><a href="'.$session{page}{url}.'?op=createAccount">Create a new account.</a>';
} }
$output .= '<li><a href="'.$session{page}{url}.'?op=recoverPassword">I forgot my password.</a>'; if ($session{setting}{authMethod} eq "WebGUI") {
$output .= '<li><a href="'.$session{page}{url}.'?op=recoverPassword">I forgot my password.</a>';
}
$output .= '</ul></div>'; $output .= '</ul></div>';
} }
return $output; return $output;
@ -190,8 +199,10 @@ sub www_login {
$ldap->unbind; $ldap->unbind;
if ($auth->code == 48 || $auth->code == 49) { if ($auth->code == 48 || $auth->code == 49) {
$error = "The account information you supplied is invalid. Either the account does not exist or the username/password combination was incorrect."; $error = "The account information you supplied is invalid. Either the account does not exist or the username/password combination was incorrect.";
WebGUI::ErrorHandler::warn("Invalid login for user account: ".$session{form}{username});
} elsif ($auth->code > 0) { } elsif ($auth->code > 0) {
$error .= 'LDAP error "'.$ldapStatusCode{$auth->code}.'" occured. Please contact your system administrator for assistance. '; $error .= 'LDAP error "'.$ldapStatusCode{$auth->code}.'" occured. Please contact your system administrator for assistance. ';
WebGUI::ErrorHandler::warn("LDAP error: ".$ldapStatusCode{$auth->code});
} else { } else {
$success = 1; $success = 1;
} }
@ -200,13 +211,13 @@ sub www_login {
$success = 1; $success = 1;
} else { } else {
$error = "The account information you supplied is invalid. Either the account does not exist or the username/password combination was incorrect."; $error = "The account information you supplied is invalid. Either the account does not exist or the username/password combination was incorrect.";
WebGUI::ErrorHandler::warn("Invalid login for user account: ".$session{form}{username});
} }
} }
if ($success) { if ($success) {
_login($uid,$pass); _login($uid,$pass);
return ""; return "";
} else { } else {
WebGUI::ErrorHandler::warn($error);
return "<h1>Error</h1>".$error.www_displayLogin(); return "<h1>Error</h1>".$error.www_displayLogin();
} }
} }
@ -252,7 +263,7 @@ sub www_recoverPasswordFinish {
$encryptedPassword = Digest::MD5::md5_base64($password); $encryptedPassword = Digest::MD5::md5_base64($password);
WebGUI::SQL->write("update users set identifier='$encryptedPassword' where userId='$userId'",$session{dbh}); WebGUI::SQL->write("update users set identifier='$encryptedPassword' where userId='$userId'",$session{dbh});
$flag = 1; $flag = 1;
$message = 'Someone (probably you) requested your account information be sent. Your password has been reset. The following information represents your new account information:\nUser: '.$username.'\nPass: '.$password.'\n'; $message = "Someone (probably you) requested your account information be sent. Your password has been reset. The following represents your new account information:\nUser: ".$username."\nPass: ".$password."\n";
WebGUI::Mail::send($session{form}{email},"Account Information",$message); WebGUI::Mail::send($session{form}{email},"Account Information",$message);
} }
$sth->finish(); $sth->finish();
@ -292,8 +303,10 @@ sub www_saveAccount {
$auth = $ldap->bind(dn=>$connectDN, password=>$session{form}{ldapPassword}); $auth = $ldap->bind(dn=>$connectDN, password=>$session{form}{ldapPassword});
if ($auth->code == 48 || $auth->code == 49) { if ($auth->code == 48 || $auth->code == 49) {
$error .= "Either your ".$session{setting}{ldapIdName}." or ".$session{setting}{ldapPasswordName}." were invalid. "; $error .= "Either your ".$session{setting}{ldapIdName}." or ".$session{setting}{ldapPasswordName}." were invalid. ";
WebGUI::ErrorHandler::warn("Invalid LDAP information for registration of LDAP ID: ".$session{form}{ldapId});
} elsif ($auth->code > 0) { } elsif ($auth->code > 0) {
$error .= 'LDAP error "'.$ldapStatusCode{$auth->code}.'" occured. Please contact your system administrator for assistance. '; $error .= 'LDAP error "'.$ldapStatusCode{$auth->code}.'" occured. Please contact your system administrator for assistance. ';
WebGUI::ErrorHandler::warn("LDAP error: ".$ldapStatusCode{$auth->code});
} }
$ldap->unbind; $ldap->unbind;
} }
@ -306,7 +319,6 @@ sub www_saveAccount {
$output .= 'Account created successfully!<p>'; $output .= 'Account created successfully!<p>';
$output .= www_displayAccount(); $output .= www_displayAccount();
} else { } else {
WebGUI::ErrorHandler::warn($error);
$output = "<h1>Error</h1>".$error.www_createAccount(); $output = "<h1>Error</h1>".$error.www_createAccount();
} }
return $output; return $output;

View file

@ -18,7 +18,7 @@ use WebGUI::Session;
use WebGUI::SQL; use WebGUI::SQL;
our @ISA = qw(Exporter); our @ISA = qw(Exporter);
our @EXPORT = qw(&getNextId &saveAttachment &round &urlizeTitle &quote); our @EXPORT = qw(&randint &getNextId &saveAttachment &round &urlizeTitle &quote);
#------------------------------------------------------------------- #-------------------------------------------------------------------
sub getNextId { sub getNextId {
@ -35,6 +35,15 @@ sub quote {
return $session{dbh}->quote($value); return $session{dbh}->quote($value);
} }
#-------------------------------------------------------------------
sub randint {
my ($low, $high) = @_;
$low = 0 unless defined $low;
$high = 1 unless defined $high;
($low, $high) = ($high,$low) if $low > $high;
return $low + int( rand( $high - $low + 1 ) );
}
#------------------------------------------------------------------- #-------------------------------------------------------------------
sub round { sub round {
return sprintf("%.0f", $_[0]); return sprintf("%.0f", $_[0]);

View file

@ -65,7 +65,9 @@ sub www_addSave {
#------------------------------------------------------------------- #-------------------------------------------------------------------
sub www_addEvent { sub www_addEvent {
my ($output, $today); my ($output, $today, %recursEvery);
tie %recursEvery, 'Tie::IxHash';
%recursEvery = ('never'=>'Happens Only Once','day'=>'Day','week'=>'Week');
if (WebGUI::Privilege::canEditPage()) { if (WebGUI::Privilege::canEditPage()) {
($today) = epochToSet(time()); ($today) = epochToSet(time());
$output = '<h1>Add Event</h1><form method="post" enctype="multipart/form-data" action="'.$session{page}{url}.'">'; $output = '<h1>Add Event</h1><form method="post" enctype="multipart/form-data" action="'.$session{page}{url}.'">';
@ -76,6 +78,7 @@ sub www_addEvent {
$output .= '<tr><td class="formDescription">Description</td><td>'.WebGUI::Form::textArea("description",'',50,10,1).'</td></tr>'; $output .= '<tr><td class="formDescription">Description</td><td>'.WebGUI::Form::textArea("description",'',50,10,1).'</td></tr>';
$output .= '<tr><td class="formDescription">Start Date</td><td>'.WebGUI::Form::text("startDate",20,30,$today,1).'</td></tr>'; $output .= '<tr><td class="formDescription">Start Date</td><td>'.WebGUI::Form::text("startDate",20,30,$today,1).'</td></tr>';
$output .= '<tr><td class="formDescription">End Date</td><td>'.WebGUI::Form::text("endDate",20,30,$today,1).'</td></tr>'; $output .= '<tr><td class="formDescription">End Date</td><td>'.WebGUI::Form::text("endDate",20,30,$today,1).'</td></tr>';
$output .= '<tr><td class="formDescription">Recurs every</td><td>'.WebGUI::Form::selectList("recursEvery",\%recursEvery).' until '.WebGUI::Form::text("until",20,30,$today,1).'</td></tr>';
$output .= '<tr><td></td><td>'.WebGUI::Form::submit("save").'</td></tr>'; $output .= '<tr><td></td><td>'.WebGUI::Form::submit("save").'</td></tr>';
$output .= '</table></form>'; $output .= '</table></form>';
return $output; return $output;
@ -87,10 +90,36 @@ sub www_addEvent {
#------------------------------------------------------------------- #-------------------------------------------------------------------
sub www_addEventSave { sub www_addEventSave {
my ($eventId); my ($i, $recurringEventId, @startDate, @endDate, @eventId, $until);
if (WebGUI::Privilege::canEditPage()) { if (WebGUI::Privilege::canEditPage()) {
$eventId = getNextId("eventId"); $startDate[0] = setToEpoch($session{form}{startDate});
WebGUI::SQL->write("insert into event values ($eventId, $session{form}{wid}, ".quote($session{form}{name}).", ".quote($session{form}{description}).", '".setToEpoch($session{form}{startDate})."', '".setToEpoch($session{form}{endDate})."')",$session{dbh}); $endDate[0] = setToEpoch($session{form}{endDate});
$until = setToEpoch($session{form}{until});
$eventId[0] = getNextId("eventId");
if ($session{form}{recursEvery} eq "never") {
$recurringEventId = 0;
} elsif ($session{form}{recursEvery} eq "day") {
$recurringEventId = getNextId("recurringEventId");
while ($startDate[$i] < $until) {
$i++;
$eventId[$i] = getNextId("eventId");
$startDate[$i] = $startDate[0] + (86400 * $i);
$endDate[$i] = $endDate[0] + (86400 * $i);
}
} elsif ($session{form}{recursEvery} eq "week") {
$recurringEventId = getNextId("recurringEventId");
while ($startDate[$i] < $until) {
$i++;
$eventId[$i] = getNextId("eventId");
$startDate[$i] = $startDate[0] + (604800 * $i);
$endDate[$i] = $endDate[0] + (604800 * $i);
}
}
$i = 0;
while ($eventId[$i] > 0) {
WebGUI::SQL->write("insert into event values ($eventId[$i], $session{form}{wid}, ".quote($session{form}{name}).", ".quote($session{form}{description}).", '".$startDate[$i]."', '".$endDate[$i]."', $recurringEventId)",$session{dbh});
$i++;
}
return www_edit(); return www_edit();
} else { } else {
return WebGUI::Privilege::insufficient(); return WebGUI::Privilege::insufficient();
@ -102,7 +131,11 @@ sub www_deleteEvent {
my ($output); my ($output);
if (WebGUI::Privilege::canEditPage()) { if (WebGUI::Privilege::canEditPage()) {
$output = '<h1>Please Confirm</h1>'; $output = '<h1>Please Confirm</h1>';
$output = 'Are you certain that you want to delete this event?<p><div align="center"><a href="'.$session{page}{url}.'?func=deleteEventConfirm&wid='.$session{form}{wid}.'&eid='.$session{form}{eid}.'">Yes, I\'m sure.</a> &nbsp; <a href="'.$session{page}{url}.'?func=edit&wid='.$session{form}{wid}.'">No, I made a mistake.</a></div>'; $output .= 'Are you certain that you want to delete this event';
if ($session{form}{rid} > 0) {
$output .= ' <b>and</b> all of its recurring events';
}
$output .= '?<p><div align="center"><a href="'.$session{page}{url}.'?func=deleteEventConfirm&wid='.$session{form}{wid}.'&eid='.$session{form}{eid}.'&rid='.$session{form}{rid}.'">Yes, I\'m sure.</a> &nbsp; <a href="'.$session{page}{url}.'?func=edit&wid='.$session{form}{wid}.'">No, I made a mistake.</a></div>';
return $output; return $output;
} else { } else {
return WebGUI::Privilege::insufficient(); return WebGUI::Privilege::insufficient();
@ -113,7 +146,11 @@ sub www_deleteEvent {
sub www_deleteEventConfirm { sub www_deleteEventConfirm {
my ($output); my ($output);
if (WebGUI::Privilege::canEditPage()) { if (WebGUI::Privilege::canEditPage()) {
WebGUI::SQL->write("delete from event where eventId=$session{form}{eid}",$session{dbh}); if ($session{form}{rid} > 0) {
WebGUI::SQL->write("delete from event where recurringEventId=$session{form}{rid}",$session{dbh});
} else {
WebGUI::SQL->write("delete from event where eventId=$session{form}{eid}",$session{dbh});
}
return www_edit(); return www_edit();
} else { } else {
return WebGUI::Privilege::insufficient(); return WebGUI::Privilege::insufficient();
@ -138,9 +175,9 @@ sub www_edit {
$output .= '</table></form>'; $output .= '</table></form>';
$output .= '<p><a href="'.$session{page}{url}.'?func=addEvent&wid='.$session{form}{wid}.'">Add New Event</a><p>'; $output .= '<p><a href="'.$session{page}{url}.'?func=addEvent&wid='.$session{form}{wid}.'">Add New Event</a><p>';
$output .= '<table border=1 cellpadding=3 cellspacing=0>'; $output .= '<table border=1 cellpadding=3 cellspacing=0>';
$sth = WebGUI::SQL->read("select eventId, name from event where widgetId='$session{form}{wid}' order by startDate",$session{dbh}); $sth = WebGUI::SQL->read("select eventId, name, recurringEventId from event where widgetId='$session{form}{wid}' order by startDate",$session{dbh});
while (@event = $sth->array) { while (@event = $sth->array) {
$output .= '<tr><td><a href="'.$session{page}{url}.'?func=editEvent&wid='.$session{form}{wid}.'&eid='.$event[0].'"><img src="'.$session{setting}{lib}.'/edit.gif" border=0></a><a href="'.$session{page}{url}.'?func=deleteEvent&wid='.$session{form}{wid}.'&eid='.$event[0].'"><img src="'.$session{setting}{lib}.'/delete.gif" border=0></a></td><td>'.$event[1].'</td></tr>'; $output .= '<tr><td><a href="'.$session{page}{url}.'?func=editEvent&wid='.$session{form}{wid}.'&eid='.$event[0].'"><img src="'.$session{setting}{lib}.'/edit.gif" border=0></a><a href="'.$session{page}{url}.'?func=deleteEvent&wid='.$session{form}{wid}.'&eid='.$event[0].'&rid='.$event[2].'"><img src="'.$session{setting}{lib}.'/delete.gif" border=0></a></td><td>'.$event[1].'</td></tr>';
} }
$sth->finish; $sth->finish;
$output .= '</table>'; $output .= '</table>';

View file

@ -110,7 +110,7 @@ sub www_deleteQuestion {
my ($output); my ($output);
if (WebGUI::Privilege::canEditPage()) { if (WebGUI::Privilege::canEditPage()) {
$output = '<h1>Please Confirm</h1>'; $output = '<h1>Please Confirm</h1>';
$output = 'Are you certain that you want to delete this question?<p><div align="center"><a href="'.$session{page}{url}.'?func=deleteQuestionConfirm&wid='.$session{form}{wid}.'&qid='.$session{form}{qid}.'">Yes, I\'m sure.</a> &nbsp; <a href="'.$session{page}{url}.'?func=edit&wid='.$session{form}{wid}.'">No, I made a mistake.</a></div>'; $output .= 'Are you certain that you want to delete this question?<p><div align="center"><a href="'.$session{page}{url}.'?func=deleteQuestionConfirm&wid='.$session{form}{wid}.'&qid='.$session{form}{qid}.'">Yes, I\'m sure.</a> &nbsp; <a href="'.$session{page}{url}.'?func=edit&wid='.$session{form}{wid}.'">No, I made a mistake.</a></div>';
return $output; return $output;
} else { } else {
return WebGUI::Privilege::insufficient(); return WebGUI::Privilege::insufficient();

View file

@ -111,7 +111,7 @@ sub www_deleteLink {
my ($output); my ($output);
if (WebGUI::Privilege::canEditPage()) { if (WebGUI::Privilege::canEditPage()) {
$output = '<h1>Please Confirm</h1>'; $output = '<h1>Please Confirm</h1>';
$output = 'Are you certain that you want to delete this link?<p><div align="center"><a href="'.$session{page}{url}.'?func=deleteLinkConfirm&wid='.$session{form}{wid}.'&lid='.$session{form}{lid}.'">Yes, I\'m sure.</a> &nbsp; <a href="'.$session{page}{url}.'?func=edit&wid='.$session{form}{wid}.'">No, I made a mistake.</a></div>'; $output .= 'Are you certain that you want to delete this link?<p><div align="center"><a href="'.$session{page}{url}.'?func=deleteLinkConfirm&wid='.$session{form}{wid}.'&lid='.$session{form}{lid}.'">Yes, I\'m sure.</a> &nbsp; <a href="'.$session{page}{url}.'?func=edit&wid='.$session{form}{wid}.'">No, I made a mistake.</a></div>';
return $output; return $output;
} else { } else {
return WebGUI::Privilege::insufficient(); return WebGUI::Privilege::insufficient();