diff --git a/lib/WebGUI.pm b/lib/WebGUI.pm index dd9191a26..7cc6a416d 100644 --- a/lib/WebGUI.pm +++ b/lib/WebGUI.pm @@ -49,24 +49,29 @@ sub page { } if (exists $session{form}{func} && exists $session{form}{wid}) { if ($session{form}{wid} eq "new") { - $wobject = {wobjectId=>$session{form}{wid},namespace=>$session{form}{namespace},pageId=>$session{page}{pageId}}; + $wobject = {wobjectId=>"new",namespace=>$session{form}{namespace},pageId=>$session{page}{pageId}}; } else { $wobject = WebGUI::SQL->quickHashRef("select * from wobject where wobject.wobjectId=".$session{form}{wid}); - $extra = WebGUI::SQL->quickHashRef("select * from ${$wobject}{namespace} where wobjectId=${$wobject}{wobjectId}"); - tie %hash, 'Tie::CPHash'; - %hash = (%{$wobject},%{$extra}); - $wobject = \%hash; + unless (${$wobject}{namespace} eq "") { + $extra = WebGUI::SQL->quickHashRef("select * from ${$wobject}{namespace} where wobjectId=${$wobject}{wobjectId}"); + tie %hash, 'Tie::CPHash'; + %hash = (%{$wobject},%{$extra}); + $wobject = \%hash; + if (${$wobject}{pageId} != $session{page}{pageId} && ${$wobject}{pageId} != 2) { + $wobjectOutput = WebGUI::International::get(417); + WebGUI::ErrorHandler::warn($session{user}{username}." [".$session{user}{userId}."] attempted to access wobject [".$session{form}{wid}."] on page '".$session{page}{title}."' [".$session{page}{pageId}."]."); + } else { + $cmd = "WebGUI::Wobject::".${$wobject}{namespace}; + $w = $cmd->new($wobject); + $cmd = "www_".$session{form}{func}; + $wobjectOutput = $w->$cmd; + } + # $wobjectOutput = WebGUI::International::get(381); # bad error + } else { + WebGUI::ErrorHandler::warn("Wobject [$session{form}{wid}] appears to be missing or corrupt, but was requested by $session{user}{username} [$session{user}{userId}]."); + $wobject = (); + } } - if (${$wobject}{pageId} != $session{page}{pageId} && ${$wobject}{pageId} != 2) { - $wobjectOutput = WebGUI::International::get(417); - WebGUI::ErrorHandler::warn($session{user}{username}." [".$session{user}{userId}."] attempted to access wobject [".$session{form}{wid}."] on page '".$session{page}{title}."' [".$session{page}{pageId}."]."); - } else { - $cmd = "WebGUI::Wobject::".${$wobject}{namespace}; - $w = $cmd->new($wobject); - $cmd = "www_".$session{form}{func}; - $wobjectOutput = $w->$cmd; - } - # $wobjectOutput = WebGUI::International::get(381); # bad error } if ($operationOutput ne "") { $contentHash{0} = $operationOutput; diff --git a/lib/WebGUI/Session.pm b/lib/WebGUI/Session.pm index 1e9553230..cc0363365 100644 --- a/lib/WebGUI/Session.pm +++ b/lib/WebGUI/Session.pm @@ -75,9 +75,11 @@ sub _getUserInfo { $uid = $_[0] || 1; %user = WebGUI::SQL->quickHash("select * from users where userId='$uid'", $_[1]); if ($user{userId} eq "") { - %user = _getUserInfo("1",$_[1]); + %user = {_getUserInfo("1",$_[1])}; } - %profile = WebGUI::SQL->buildHash("select userProfileField.fieldName, userProfileData.fieldData from userProfileData, userProfileField where userProfileData.fieldName=userProfileField.fieldName and userProfileData.userId=$user{userId}", $_[1]); + %profile = WebGUI::SQL->buildHash("select userProfileField.fieldName, userProfileData.fieldData + from userProfileData, userProfileField where userProfileData.fieldName=userProfileField.fieldName + and userProfileData.userId=$user{userId}", $_[1]); %user = (%user, %profile); %default = WebGUI::SQL->buildHash("select fieldName, dataDefault from userProfileField where profileCategoryId=4", $_[1]); foreach $key (keys %default) {