diff --git a/lib/WebGUI/Discussion.pm b/lib/WebGUI/Discussion.pm index 9b1c19552..16a9e39de 100644 --- a/lib/WebGUI/Discussion.pm +++ b/lib/WebGUI/Discussion.pm @@ -44,6 +44,7 @@ sub _deleteReplyTree { #------------------------------------------------------------------- sub _duplicateReplyTree { my ($sth, %data, $newMessageId); + tie %data, 'Tie::CPHash'; $sth = WebGUI::SQL->read("select * from discussion where pid=$_[0] order by messageId"); while (%data = $sth->hash) { $newMessageId = getNextId("messageId"); @@ -137,6 +138,7 @@ sub denyPost { #------------------------------------------------------------------- sub duplicate { my ($sth, %data, $newMessageId, $oldSubId, $newSubId); + tie %data, 'Tie::CPHash'; $oldSubId = $_[2] || 0; $newSubId = $_[3] || 0; $sth = WebGUI::SQL->read("select * from discussion where wobjectId=$_[0] and pid=0 and subId=$oldSubId order by messageId"); @@ -312,7 +314,7 @@ sub postSave { ($session{form}{mid},$session{form}{wid},$session{form}{sid},$rid,$pid,$session{user}{userId}," .quote($username).", '$status')"); } elsif ($session{setting}{addEditStampToPosts}) { - $session{form}{message} = "\n --- (Edited at ".localtime(time)." by $session{user}{username}) --- \n\n" + $session{form}{message} = "\n --- (Edited at ".epochToHuman(time())." by $session{user}{username}) --- \n\n" .$session{form}{message}; } WebGUI::SQL->write("update discussion set subject=".quote($session{form}{subject}).", @@ -515,6 +517,7 @@ sub showReplyTree { #------------------------------------------------------------------- sub showThreads { my ($sth, %data, $html, $sql); + tie %data, 'Tie::CPHash'; $sql = "select * from discussion where wobjectId=$session{form}{wid}"; $sql .= " and subId=$session{form}{sid}" if ($session{form}{sid}); $sql .= " and (status='Approved' or userId=$session{user}{userId})"; diff --git a/lib/WebGUI/ErrorHandler.pm b/lib/WebGUI/ErrorHandler.pm index 45c21f130..11734754c 100644 --- a/lib/WebGUI/ErrorHandler.pm +++ b/lib/WebGUI/ErrorHandler.pm @@ -78,6 +78,19 @@ sub fatalError { print '
'.$session{setting}{companyEmail}; print '
'.$session{setting}{companyURL}; } + print '

Session Variables

'; + while (my ($section, $hash) = each %session) { + while (my ($key, $value) = each %$hash) { + if (ref $value eq 'ARRAY') { + $value = '['.join(', ',@$value).']'; + } elsif (ref $value eq 'HASH') { + $value = '{'.join(', ',map {"$_ => $value->{$_}"} keys %$value).'}'; + } + print ''; + } + print ''; + } + print '
'.$section.'.'.$key.':'.$value.'
  
'; exit; } diff --git a/lib/WebGUI/Macro.pm b/lib/WebGUI/Macro.pm index 25b804a53..d64b36ceb 100644 --- a/lib/WebGUI/Macro.pm +++ b/lib/WebGUI/Macro.pm @@ -34,7 +34,7 @@ sub process { foreach $macro (keys %{$session{macro}}) { $cmd = "WebGUI::Macro::".$macro."::process"; $output = eval{&$cmd($output)}; - WebGUI::ErrorHandler::fatalError("Processing failed on macro: $macro.") if($@); + WebGUI::ErrorHandler::fatalError("Processing failed on macro: $macro: ".$@) if($@); } return $output; } diff --git a/lib/WebGUI/SQL.pm b/lib/WebGUI/SQL.pm index 00c7a808a..35340a920 100644 --- a/lib/WebGUI/SQL.pm +++ b/lib/WebGUI/SQL.pm @@ -271,7 +271,15 @@ sub hash { =cut sub hashRef { - return $_[0]->{_sth}->fetchrow_hashref() or WebGUI::ErrorHandler::fatalError("Couldn't fetch hashref. ".$_[0]->{_sth}->errstr); + my ($hashRef, %hash); + $hashRef = $_[0]->{_sth}->fetchrow_hashref(); + tie %hash, 'Tie::CPHash'; + if (defined $hashRef) { + %hash = %{$hashRef}; + return \%hash; + } else { + return $hashRef; + } } @@ -375,10 +383,13 @@ sub quickHash { =cut sub quickHashRef { - my ($sth, %hash); - tie %hash, "Tie::CPHash"; - %hash = $_[0]->quickHash($_[1],$_[2]); - return \%hash; + my ($sth, $data); + $sth = WebGUI::SQL->new($_[1],$_[2]); + $data = $sth->hashRef; + $sth->finish; + if (defined $data) { + return $data; + } } #------------------------------------------------------------------- diff --git a/lib/WebGUI/Wobject.pm b/lib/WebGUI/Wobject.pm index 92b5de541..0320e9419 100644 --- a/lib/WebGUI/Wobject.pm +++ b/lib/WebGUI/Wobject.pm @@ -277,12 +277,19 @@ sub get { =item keyValue - An integer containing the key value. + An integer containing the key value. If key value is equal to "new" + or null, then an empty hashRef containing only keyName=>"new" will + be returned to avoid strict errors. =cut sub getCollateral { - return WebGUI::SQL->quickHashRef("select * from $_[1] where $_[2]=".quote($_[3])); + my ($class, $tableName, $keyName, $keyValue) = @_; + if ($keyValue eq "new" || $keyValue eq "") { + return {$keyName=>"new"}; + } else { + return WebGUI::SQL->quickHashRef("select * from $tableName where $keyName=".quote($keyValue)); + } } @@ -729,6 +736,11 @@ sub www_editSave { $startDate = setToEpoch($session{form}{startDate}) || $session{page}{startDate}; $endDate = setToEpoch($session{form}{endDate}) || $session{page}{endDate}; $session{form}{description} = WebGUI::HTML::cleanSegment($session{form}{description}); + $session{form}{karmaPerPost} ||= 0; + $session{form}{groupToPost} ||= 2; + $session{form}{editTimeout} = WebGUI::DateTime::intervalToSeconds($session{form}{editTimeout_interval},$session{form}{editTimeout_units}) || 0; + $session{form}{groupToModerate} ||= 3; + $session{form}{moderationType} ||= "after"; $_[0]->set({ title=>$title, displayTitle=>$session{form}{displayTitle}, @@ -740,7 +752,7 @@ sub www_editSave { karmaPerPost=>$session{form}{karmaPerPost}, groupToPost=>$session{form}{groupToPost}, groupToModerate=>$session{form}{groupToModerate}, - editTimeout=>WebGUI::DateTime::intervalToSeconds($session{form}{editTimeout_interval},$session{form}{editTimeout_units}), + editTimeout=>$session{form}{editTimeout}, moderationType=>$session{form}{moderationType} }); return ""; diff --git a/lib/WebGUI/Wobject/DownloadManager.pm b/lib/WebGUI/Wobject/DownloadManager.pm index 94d4e4c24..9479f8321 100644 --- a/lib/WebGUI/Wobject/DownloadManager.pm +++ b/lib/WebGUI/Wobject/DownloadManager.pm @@ -242,8 +242,9 @@ sub www_editDownload { if (WebGUI::Privilege::canEditPage()) { if ($session{form}{did} eq "") { $session{form}{did} = "new"; + } else { + %download = WebGUI::SQL->quickHash("select * from DownloadManager_file where downloadId='$session{form}{did}'"); } - %download = WebGUI::SQL->quickHash("select * from DownloadManager_file where downloadId='$session{form}{did}'"); $output .= helpIcon(2,$namespace); $output .= '

'.WebGUI::International::get(10,$namespace).'

'; $f = WebGUI::HTMLForm->new; diff --git a/lib/WebGUI/Wobject/MessageBoard.pm b/lib/WebGUI/Wobject/MessageBoard.pm index 09205ccec..1aac3de26 100644 --- a/lib/WebGUI/Wobject/MessageBoard.pm +++ b/lib/WebGUI/Wobject/MessageBoard.pm @@ -199,6 +199,7 @@ sub www_unlockThread { #------------------------------------------------------------------- sub www_view { my ($sth, %data, $html, $i, $pn, $lastId, @last, $replies); + tie %data, 'Tie::CPHash'; if ($session{form}{pn} < 1) { $pn = 0; } else { diff --git a/lib/WebGUI/Wobject/Product.pm b/lib/WebGUI/Wobject/Product.pm index 9d5116826..eaa76ee21 100644 --- a/lib/WebGUI/Wobject/Product.pm +++ b/lib/WebGUI/Wobject/Product.pm @@ -527,8 +527,7 @@ sub www_editBenefit { $output .= '

'.WebGUI::International::get(53,$namespace).'

'; $f = WebGUI::HTMLForm->new; $f->hidden("wid",$_[0]->get("wobjectId")); - $session{form}{bid} = "new" if ($session{form}{bid} eq ""); - $f->hidden("bid",$session{form}{bid}); + $f->hidden("bid",$data->{productBenefitId}); $f->hidden("func","editBenefitSave"); $benefits = WebGUI::SQL->buildHashRef("select benefit,benefit from Product_benefit order by benefit"); $f->combo("benefit",$benefits,WebGUI::International::get(51,$namespace),[$data->{benefits}]); @@ -570,8 +569,7 @@ sub www_editFeature { $output .= '

'.WebGUI::International::get(22,$namespace).'

'; $f = WebGUI::HTMLForm->new; $f->hidden("wid",$_[0]->get("wobjectId")); - $session{form}{fid} = "new" if ($session{form}{fid} eq ""); - $f->hidden("fid",$session{form}{fid}); + $f->hidden("fid",$data->{productFeatureId}); $f->hidden("func","editFeatureSave"); $features = WebGUI::SQL->buildHashRef("select feature,feature from Product_feature order by feature"); $f->combo("feature",$features,WebGUI::International::get(23,$namespace),[$data->{feature}]); @@ -613,8 +611,7 @@ sub www_editSpecification { $output .= '

'.WebGUI::International::get(25,$namespace).'

'; $f = WebGUI::HTMLForm->new; $f->hidden("wid",$_[0]->get("wobjectId")); - $session{form}{sid} = "new" if ($session{form}{sid} eq ""); - $f->hidden("sid",$session{form}{sid}); + $f->hidden("sid",$data->{productSpecificationId}); $f->hidden("func","editSpecificationSave"); $hashRef = WebGUI::SQL->buildHashRef("select name,name from Product_specification order by name"); $f->combo("name",$hashRef,WebGUI::International::get(26,$namespace),[$data->{name}]); @@ -662,8 +659,7 @@ sub www_editTemplate { $output .= '

'.WebGUI::International::get(58,$namespace).'

'; $f = WebGUI::HTMLForm->new; $f->hidden("wid",$_[0]->get("wobjectId")); - $session{form}{tid} = "new" if ($session{form}{tid} eq ""); - $f->hidden("tid",$session{form}{tid}); + $f->hidden("tid",$data->{productTemplateId}); $f->hidden("func","editTemplateSave"); $f->text("name",WebGUI::International::get(59,$namespace),$data->{name}); $f->HTMLArea("template",WebGUI::International::get(60,$namespace),$data->{template},'','','',($session{setting}{textAreaRows}+10)); diff --git a/lib/WebGUI/Wobject/UserSubmission.pm b/lib/WebGUI/Wobject/UserSubmission.pm index 3c533d195..16eaecf77 100644 --- a/lib/WebGUI/Wobject/UserSubmission.pm +++ b/lib/WebGUI/Wobject/UserSubmission.pm @@ -428,36 +428,36 @@ sub www_editSave { #------------------------------------------------------------------- sub www_editSubmission { - my ($output, %submission, $f, @submission, $sth); - tie %submission, 'Tie::CPHash'; - %submission = WebGUI::SQL->quickHash("select * from UserSubmission_submission where submissionId='$session{form}{sid}'"); - if ($session{form}{sid} eq "new") { - $submission{convertCarriageReturns} = 1; - $submission{userId} = $session{user}{userId}; + my ($output, $submission, $f, @submission, $sth); + $submission = $_[0]->getCollateral("UserSubmission_submission","submissionId",$session{form}{sid}); + if ($submission->{submissionId} eq "new") { + $submission->{convertCarriageReturns} = 1; + $submission->{userId} = $session{user}{userId}; } if (WebGUI::Privilege::isInGroup($_[0]->get("groupToContribute")) - || $submission{userId} == $session{user}{userId} + || $submission->{userId} == $session{user}{userId} || WebGUI::Privilege::isInGroup($_[0]->get("groupToApprove"))) { $output = '

'.WebGUI::International::get(19,$namespace).'

'; $f = WebGUI::HTMLForm->new; $f->hidden("wid",$session{form}{wid}); - $f->hidden("sid",$session{form}{sid}); + $f->hidden("sid",$submission->{submissionId}); $f->hidden("func","editSubmissionSave"); - $f->text("title",WebGUI::International::get(35,$namespace),$submission{title}); - $f->HTMLArea("content",WebGUI::International::get(31,$namespace),$submission{content}); - if ($submission{image} ne "") { - $f->readOnly('' + $f->text("title",WebGUI::International::get(35,$namespace),$submission->{title}); + $f->HTMLArea("content",WebGUI::International::get(31,$namespace),$submission->{content}); + if ($submission->{image} ne "") { + $f->readOnly('' .WebGUI::International::get(391).'',WebGUI::International::get(32,$namespace)); } else { $f->file("image",WebGUI::International::get(32,$namespace)); } - if ($submission{attachment} ne "") { - $f->readOnly('' + if ($submission->{attachment} ne "") { + $f->readOnly('' .WebGUI::International::get(391).'',WebGUI::International::get(33,$namespace)); } else { $f->file("attachment",WebGUI::International::get(33,$namespace)); } - $f->yesNo("convertCarriageReturns",WebGUI::International::get(34,$namespace),$submission{convertCarriageReturns}, + $f->yesNo("convertCarriageReturns",WebGUI::International::get(34,$namespace),$submission->{convertCarriageReturns}, '','   '.WebGUI::International::get(38,$namespace)); $f->submit; $output .= $f->print; @@ -470,12 +470,11 @@ sub www_editSubmission { #------------------------------------------------------------------- sub www_editSubmissionSave { - 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"))) - || WebGUI::Privilege::isInGroup($_[0]->get("groupToApprove"))) { - if ($session{form}{sid} eq "new") { + my ($sqlAdd,$submission,$image,$attachment,$title,$u); + $submission = $_[0]->getCollateral("UserSubmission_submission","submissionId",$session{form}{sid}); + if ($submission->{owner} == $session{user}{userId} || ($submission->{submissionId} eq "new" + && WebGUI::Privilege::isInGroup($_[0]->get("groupToContribute"))) || WebGUI::Privilege::isInGroup($_[0]->get("groupToApprove"))) { + if ($submission->{submissionId} eq "new") { $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}).")");