diff --git a/docs/upgrades/upgrade_4.7.0-4.8.0.sql b/docs/upgrades/upgrade_4.7.0-4.8.0.sql index 9fb755b8d..b9b256a30 100644 --- a/docs/upgrades/upgrade_4.7.0-4.8.0.sql +++ b/docs/upgrades/upgrade_4.7.0-4.8.0.sql @@ -101,6 +101,38 @@ delete from international where namespace='WebGUI' and internationalId=631; delete from help where namespace='WebGUI' and helpId=26; delete from help where namespace='WebGUI' and helpId=23; delete from help where namespace='WebGUI' and helpId=36; +insert into international (internationalId,languageId,namespace,message,lastUpdated) values (790,1,'WebGUI','Delete this profile category.', 1036964807); +insert into international (internationalId,languageId,namespace,message,lastUpdated) values (789,1,'WebGUI','Edit this profile category.', 1036964795); +insert into international (internationalId,languageId,namespace,message,lastUpdated) values (788,1,'WebGUI','Delete this profile field.', 1036964681); +insert into international (internationalId,languageId,namespace,message,lastUpdated) values (787,1,'WebGUI','Edit this profile field.', 1036964659); +delete from settings where name='imageManagersGroup'; +delete from international where languageId=1 and namespace='WebGUI' and internationalId=586; +insert into international (internationalId,languageId,namespace,message,lastUpdated) values (586,1,'WebGUI','Manage Translations', 1036971445); +delete from international where languageId=1 and namespace='WebGUI' and internationalId=589; +insert into international (internationalId,languageId,namespace,message,lastUpdated) values (589,1,'WebGUI','Edit Translation', 1036971172); +delete from international where languageId=1 and namespace='WebGUI' and internationalId=598; +insert into international (internationalId,languageId,namespace,message,lastUpdated) values (598,1,'WebGUI','Edit this translation.', 1036971142); +delete from international where languageId=1 and namespace='WebGUI' and internationalId=584; +insert into international (internationalId,languageId,namespace,message,lastUpdated) values (584,1,'WebGUI','Add a new translation.', 1036971092); +delete from international where languageId=1 and namespace='WebGUI' and internationalId=718; +insert into international (internationalId,languageId,namespace,message,lastUpdated) values (718,1,'WebGUI','Export this translation.', 1036970877); +delete from international where languageId=1 and namespace='WebGUI' and internationalId=593; +insert into international (internationalId,languageId,namespace,message,lastUpdated) values (593,1,'WebGUI','Submit this translation.', 1036970850); +delete from international where languageId=1 and namespace='WebGUI' and internationalId=791; +insert into international (internationalId,languageId,namespace,message,lastUpdated) values (791,1,'WebGUI','Delete this translation.', 1036970806); +insert into international (internationalId,languageId,namespace,message,lastUpdated) values (802,1,'WebGUI','WebGUI is not currently tracking page statistics. You can enable this feature in the settings.', 1036979395); +insert into international (internationalId,languageId,namespace,message,lastUpdated) values (801,1,'WebGUI','Wobject Interactions', 1036978843); +insert into international (internationalId,languageId,namespace,message,lastUpdated) values (800,1,'WebGUI','Unique Visitors', 1036978829); +insert into international (internationalId,languageId,namespace,message,lastUpdated) values (799,1,'WebGUI','Page Views', 1036978804); +insert into international (internationalId,languageId,namespace,message,lastUpdated) values (798,1,'WebGUI','Page Title', 1036978688); +insert into international (internationalId,languageId,namespace,message,lastUpdated) values (797,1,'WebGUI','View traffic statistics.', 1036978191); +insert into international (internationalId,languageId,namespace,message,lastUpdated) values (796,1,'WebGUI','View page statistics.', 1036978043); +insert into international (internationalId,languageId,namespace,message,lastUpdated) values (795,1,'WebGUI','Roots', 1036972103); +insert into international (internationalId,languageId,namespace,message,lastUpdated) values (794,1,'WebGUI','Packages', 1036971944); +insert into international (internationalId,languageId,namespace,message,lastUpdated) values (793,1,'WebGUI','Pieces of Collateral', 1036971785); +insert into international (internationalId,languageId,namespace,message,lastUpdated) values (792,1,'WebGUI','Templates', 1036971696); + + diff --git a/lib/WebGUI.pm b/lib/WebGUI.pm index 50136e1dd..f1b16b9e3 100644 --- a/lib/WebGUI.pm +++ b/lib/WebGUI.pm @@ -201,7 +201,7 @@ sub _processOperations { if ($session{form}{op} =~ /^[A-Za-z]+$/) { $cmd = "WebGUI::Operation::www_".$session{form}{op}; $output = eval($cmd); - WebGUI::ErrorHandler::security("call a non-existent operation: $session{form}{op}.") if($@); + WebGUI::ErrorHandler::security("call a non-existent operation: $session{form}{op}. Root cause: ".$@) if($@); } else { WebGUI::ErrorHandler::security("execute an invalid operation: ".$session{form}{op}); } diff --git a/lib/WebGUI/Operation/International.pm b/lib/WebGUI/Operation/International.pm index 76732d557..8f0c5fd58 100644 --- a/lib/WebGUI/Operation/International.pm +++ b/lib/WebGUI/Operation/International.pm @@ -58,15 +58,17 @@ sub _export { sub _submenu { my (%menu); tie %menu, 'Tie::IxHash'; + $menu{WebGUI::URL::page('op=editLanguage&lid=new')} = WebGUI::International::get(584); if ($session{form}{lid} == 1) { - $menu{WebGUI::URL::page('op=addInternationalMessage&lid=1')} = "Add new message."; + $menu{WebGUI::URL::page('op=addInternationalMessage&lid=1')} = "Add a new message."; } - if ($session{form}{lid} ne "") { + if ($session{form}{lid} ne "new" && $session{form}{lid} ne "") { $menu{WebGUI::URL::page('op=listInternationalMessages&lid='.$session{form}{lid})} = WebGUI::International::get(594); - $menu{WebGUI::URL::page('op=editLanguage&lid='.$session{form}{lid})} = WebGUI::International::get(598); $menu{WebGUI::URL::page('op=exportTranslation&lid='.$session{form}{lid})} = WebGUI::International::get(718); $menu{WebGUI::URL::page('op=submitTranslation&lid='.$session{form}{lid})} = WebGUI::International::get(593); + $menu{WebGUI::URL::page('op=editLanguage&lid='.$session{form}{lid})} = WebGUI::International::get(598); + $menu{WebGUI::URL::page("op=deleteLanguage&lid=".$session{form}{lid})} = WebGUI::International::get(791); } $menu{WebGUI::URL::page('op=listLanguages')} = WebGUI::International::get(585); return menuWrapper($_[0],\%menu); @@ -103,20 +105,16 @@ sub www_addInternationalMessageSave { #------------------------------------------------------------------- sub www_deleteLanguage { my ($output); - if ($session{form}{lid} < 1000 && $session{form}{lid} > 0) { - return WebGUI::Privilege::vitalComponent(); - } elsif (WebGUI::Privilege::isInGroup(3)) { - $output .= '

'.WebGUI::International::get(42).'

'; - $output .= WebGUI::International::get(587).'

'; - $output .= '

'.WebGUI::International::get(44).''; - $output .= '    '.WebGUI::International::get(45).'
'; - return $output; - } else { - return WebGUI::Privilege::adminOnly(); - } + return WebGUI::Privilege::vitalComponent() if ($session{form}{lid} < 1000 && $session{form}{lid} > 0); + return WebGUI::Privilege::adminOnly() unless (WebGUI::Privilege::isInGroup(3)); + $output .= '

'.WebGUI::International::get(42).'

'; + $output .= WebGUI::International::get(587).'

'; + $output .= '

'.WebGUI::International::get(44).''; + $output .= '    '.WebGUI::International::get(45).'
'; + return _submenu($output); } #------------------------------------------------------------------- @@ -125,8 +123,8 @@ sub www_deleteLanguageConfirm { return WebGUI::Privilege::vitalComponent() if ($session{form}{lid} < 1000 && $session{form}{lid} > 0); WebGUI::SQL->write("delete from language where languageId=".$session{form}{lid}); WebGUI::SQL->write("delete from international where languageId=".$session{form}{lid}); - WebGUI::SQL->write("delete from help where languageId=".$session{form}{lid}); WebGUI::SQL->write("delete from userProfileData where fieldName='language' and fieldData=".$session{form}{lid}); + $session{form}{lid} = ""; return www_listLanguages(); } @@ -308,13 +306,9 @@ sub www_listLanguages { tie %data, 'Tie::CPHash'; return WebGUI::Privilege::adminOnly() unless (WebGUI::Privilege::isInGroup(3)); $output = '

'.WebGUI::International::get(586).'

'; - $output .= ''.WebGUI::International::get(584).''; - $output .= '

'; $sth = WebGUI::SQL->read("select languageId,language from language where languageId<>1 order by language"); while (%data = $sth->hash) { - $output .= deleteIcon("op=deleteLanguage&lid=".$data{languageId}) - .editIcon("op=editLanguage&lid=".$data{languageId}) - .' '.$data{language}.'
'; + $output .= ''.$data{language}.'
'; } $sth->finish; return _submenu($output); diff --git a/lib/WebGUI/Operation/ProfileSettings.pm b/lib/WebGUI/Operation/ProfileSettings.pm index 2c35f97a8..44b1de373 100644 --- a/lib/WebGUI/Operation/ProfileSettings.pm +++ b/lib/WebGUI/Operation/ProfileSettings.pm @@ -17,6 +17,7 @@ use Tie::IxHash; use WebGUI::HTMLForm; use WebGUI::Icon; use WebGUI::International; +use WebGUI::Operation::Shared; use WebGUI::Privilege; use WebGUI::Session; use WebGUI::SQL; @@ -47,200 +48,177 @@ sub _reorderFields { } #------------------------------------------------------------------- -sub _subMenu { - my ($output); - $output = '
'; - $output .= $_[0]; - $output .= ''; - $output .= '
  • '.WebGUI::International::get(490).''; - $output .= '
  • '.WebGUI::International::get(491).''; - $output .= '
  • '.WebGUI::International::get(492).''; - $output .= '
  • '.WebGUI::International::get(493).''; - $output .= '
  • '; - return $output; +sub _submenu { + my (%menu); + tie %menu, 'Tie::IxHash'; + $menu{WebGUI::URL::page("op=editProfileCategory")} = WebGUI::International::get(490); + $menu{WebGUI::URL::page("op=editProfileField")} = WebGUI::International::get(491); + if (($session{form}{op} eq "editProfileField" && $session{form}{fid} ne "new") || $session{form}{op} eq "deleteProfileField") { + $menu{WebGUI::URL::page('op=editProfileField&fid='.$session{form}{fid})} = WebGUI::International::get(787); + $menu{WebGUI::URL::page('op=deleteProfileField&fid='.$session{form}{fid})} = WebGUI::International::get(788); + } + if (($session{form}{op} eq "editProfileCategory" && $session{form}{cid} ne "new") || $session{form}{op} eq "deleteProfileCategory") { + $menu{WebGUI::URL::page('op=editProfileCategory&cid='.$session{form}{cid})} = WebGUI::International::get(789); + $menu{WebGUI::URL::page('op=deleteProfileCategory&cid='.$session{form}{cid})} = WebGUI::International::get(790); + } + $menu{WebGUI::URL::page("op=editProfileSettings")} = WebGUI::International::get(492); + $menu{WebGUI::URL::page('op=manageSettings')} = WebGUI::International::get(4); + return menuWrapper($_[0],\%menu); } #------------------------------------------------------------------- sub www_deleteProfileCategory { + return WebGUI::Privilege::adminOnly() unless (WebGUI::Privilege::isInGroup(3)); my ($output); - if ($session{form}{cid} < 100) { - return WebGUI::Privilege::vitalComponent(); - } elsif (WebGUI::Privilege::isInGroup(3)) { - $output = '

    '.WebGUI::International::get(42).'

    '; - $output .= WebGUI::International::get(466).'

    '; - $output .= '

    '.WebGUI::International::get(44).''; - $output .= '    '. - WebGUI::International::get(45).'
    '; - return _subMenu($output); - } else { - return WebGUI::Privilege::adminOnly(); - } + return WebGUI::Privilege::vitalComponent() if ($session{form}{cid} < 1000); + $output = '

    '.WebGUI::International::get(42).'

    '; + $output .= WebGUI::International::get(466).'

    '; + $output .= '

    '.WebGUI::International::get(44).''; + $output .= '    '. + WebGUI::International::get(45).'
    '; + return _submenu($output); } #------------------------------------------------------------------- sub www_deleteProfileCategoryConfirm { - if ($session{form}{cid} < 100) { - return WebGUI::Privilege::vitalComponent(); - } elsif (WebGUI::Privilege::isInGroup(3)) { - WebGUI::SQL->write("delete from userProfileCategory where profileCategoryId=$session{form}{cid}"); - WebGUI::SQL->write("update userProfileField set profileCategoryId=1 where profileCategoryId=$session{form}{cid}"); - return www_editProfileSettings(); - } else { - return WebGUI::Privilege::adminOnly(); - } + return WebGUI::Privilege::adminOnly() unless (WebGUI::Privilege::isInGroup(3)); + return WebGUI::Privilege::vitalComponent() if ($session{form}{cid} < 1000); + WebGUI::SQL->write("delete from userProfileCategory where profileCategoryId=$session{form}{cid}"); + WebGUI::SQL->write("update userProfileField set profileCategoryId=1 where profileCategoryId=$session{form}{cid}"); + return www_editProfileSettings(); } #------------------------------------------------------------------- sub www_deleteProfileField { + return WebGUI::Privilege::adminOnly() unless (WebGUI::Privilege::isInGroup(3)); my ($output,$protected); ($protected) = WebGUI::SQL->quickArray("select protected from userProfileField where fieldname=".quote($session{form}{fid})); - if ($protected) { - return WebGUI::Privilege::vitalComponent(); - } elsif (WebGUI::Privilege::isInGroup(3)) { - $output = '

    '.WebGUI::International::get(42).'

    '; - $output .= WebGUI::International::get(467).'

    '; - $output .= '

    '.WebGUI::International::get(44).''; - $output .= '    '. - WebGUI::International::get(45).'
    '; - return _subMenu($output); - } else { - return WebGUI::Privilege::adminOnly(); - } + return WebGUI::Privilege::vitalComponent() if ($protected); + $output = '

    '.WebGUI::International::get(42).'

    '; + $output .= WebGUI::International::get(467).'

    '; + $output .= '

    '.WebGUI::International::get(44).''; + $output .= '    '. + WebGUI::International::get(45).'
    '; + return _submenu($output); } #------------------------------------------------------------------- sub www_deleteProfileFieldConfirm { + return WebGUI::Privilege::adminOnly() unless (WebGUI::Privilege::isInGroup(3)); my ($protected); ($protected) = WebGUI::SQL->quickArray("select protected from userProfileField where fieldname=".quote($session{form}{fid})); - if ($protected) { - return WebGUI::Privilege::vitalComponent(); - } elsif (WebGUI::Privilege::isInGroup(3)) { - WebGUI::SQL->write("delete from userProfileField where fieldName=".quote($session{form}{fid})); - WebGUI::SQL->write("delete from userProfileData where fieldName=".quote($session{form}{fid})); - return www_editProfileSettings(); - } else { - return WebGUI::Privilege::adminOnly(); - } + return WebGUI::Privilege::vitalComponent() if ($protected); + WebGUI::SQL->write("delete from userProfileField where fieldName=".quote($session{form}{fid})); + WebGUI::SQL->write("delete from userProfileData where fieldName=".quote($session{form}{fid})); + return www_editProfileSettings(); } #------------------------------------------------------------------- sub www_editProfileCategory { + return WebGUI::Privilege::adminOnly() unless (WebGUI::Privilege::isInGroup(3)); my ($output, $f, %data); tie %data, 'Tie::CPHash'; - if (WebGUI::Privilege::isInGroup(3)) { - $output = '

    '.WebGUI::International::get(468).'

    '; - $f = WebGUI::HTMLForm->new; - $f->hidden("op","editProfileCategorySave"); - if ($session{form}{cid}) { - $f->hidden("cid",$session{form}{cid}); - $f->readOnly($session{form}{cid},WebGUI::International::get(469)); - %data = WebGUI::SQL->quickHash("select * from userProfileCategory where profileCategoryId=$session{form}{cid}"); - } else { - $f->hidden("cid","new"); - } - $f->text("categoryName",WebGUI::International::get(470),$data{categoryName}); - $f->submit; - $output .= $f->print; - return _subMenu($output); - } else { - return WebGUI::Privilege::adminOnly(); - } + $output = '

    '.WebGUI::International::get(468).'

    '; + $f = WebGUI::HTMLForm->new; + $f->hidden("op","editProfileCategorySave"); + if ($session{form}{cid}) { + $f->hidden("cid",$session{form}{cid}); + $f->readOnly($session{form}{cid},WebGUI::International::get(469)); + %data = WebGUI::SQL->quickHash("select * from userProfileCategory where profileCategoryId=$session{form}{cid}"); + } else { + $f->hidden("cid","new"); + } + $f->text("categoryName",WebGUI::International::get(470),$data{categoryName}); + $f->submit; + $output .= $f->print; + return _submenu($output); } #------------------------------------------------------------------- sub www_editProfileCategorySave { + return WebGUI::Privilege::adminOnly() unless (WebGUI::Privilege::isInGroup(3)); my ($categoryId, $sequenceNumber, $test); - if (WebGUI::Privilege::isInGroup(3)) { - $session{form}{categoryName} = 'Unamed' if ($session{form}{categoryName} eq "" || $session{form}{categoryName} eq "''"); - $test = eval($session{form}{categoryName}); - $session{form}{categoryName} = "'".$session{form}{categoryName}."'" if ($test eq ""); - if ($session{form}{cid} eq "new") { - $categoryId = getNextId("profileCategoryId"); - ($sequenceNumber) = WebGUI::SQL->quickArray("select max(sequenceNumber) from userProfileCategory"); - WebGUI::SQL->write("insert into userProfileCategory values ($categoryId, ".quote($session{form}{categoryName}).", - ".($sequenceNumber+1).")"); - } else { - WebGUI::SQL->write("update userProfileCategory set categoryName=".quote($session{form}{categoryName})." where - profileCategoryId=$session{form}{cid}"); - } - return www_editProfileSettings(); - return $test; - } else { - return WebGUI::Privilege::adminOnly(); - } + $session{form}{categoryName} = 'Unamed' if ($session{form}{categoryName} eq "" || $session{form}{categoryName} eq "''"); + $test = eval($session{form}{categoryName}); + $session{form}{categoryName} = "'".$session{form}{categoryName}."'" if ($test eq ""); + if ($session{form}{cid} eq "new") { + $categoryId = getNextId("profileCategoryId"); + ($sequenceNumber) = WebGUI::SQL->quickArray("select max(sequenceNumber) from userProfileCategory"); + WebGUI::SQL->write("insert into userProfileCategory values ($categoryId, ".quote($session{form}{categoryName}).", + ".($sequenceNumber+1).")"); + } else { + WebGUI::SQL->write("update userProfileCategory set categoryName=".quote($session{form}{categoryName})." where + profileCategoryId=$session{form}{cid}"); + } + return www_editProfileSettings(); } #------------------------------------------------------------------- sub www_editProfileField { + return WebGUI::Privilege::adminOnly() unless (WebGUI::Privilege::isInGroup(3)); my ($output, $f, %data, %hash, $key); tie %data, 'Tie::CPHash'; - if (WebGUI::Privilege::isInGroup(3)) { - $output = '

    '.WebGUI::International::get(471).'

    '; - $f = WebGUI::HTMLForm->new; - $f->hidden("op","editProfileFieldSave"); - if ($session{form}{fid}) { - $f->hidden("fid",$session{form}{fid}); - $f->readOnly($session{form}{fid},WebGUI::International::get(470)); - %data = WebGUI::SQL->quickHash("select * from userProfileField where fieldName=".quote($session{form}{fid})); - } else { - $f->hidden("new",1); - $f->text("fid",WebGUI::International::get(470)); - } - $f->text("fieldLabel",WebGUI::International::get(472),$data{fieldLabel}); - $f->yesNo("visible",WebGUI::International::get(473),$data{visible}); - $f->yesNo("required",WebGUI::International::get(474),$data{required}); - tie %hash, 'Tie::IxHash'; - %hash = ( 'text'=>WebGUI::International::get(475), - 'textarea'=>WebGUI::International::get(476), - 'HTMLArea'=>WebGUI::International::get(477), - 'url'=>WebGUI::International::get(478), - 'date'=>WebGUI::International::get(479), - 'email'=>WebGUI::International::get(480), - 'phone'=>WebGUI::International::get(481), - 'integer'=>WebGUI::International::get(482), - 'yesNo'=>WebGUI::International::get(483), - 'select'=>WebGUI::International::get(484) - ); - $f->select("dataType",\%hash,WebGUI::International::get(486),[$data{dataType}]); - $f->textarea("dataValues",WebGUI::International::get(487),$data{dataValues}); - $f->textarea("dataDefault",WebGUI::International::get(488),$data{dataDefault}); - tie %hash, 'Tie::CPHash'; - %hash = WebGUI::SQL->buildHash("select profileCategoryId,categoryName from userProfileCategory order by categoryName"); - foreach $key (keys %hash) { - $hash{$key} = eval $hash{$key}; - } - $f->select("profileCategoryId",\%hash,WebGUI::International::get(489),[$data{profileCategoryId}]); - $f->submit; - $output .= $f->print; - return _subMenu($output); + $output = '

    '.WebGUI::International::get(471).'

    '; + $f = WebGUI::HTMLForm->new; + $f->hidden("op","editProfileFieldSave"); + if ($session{form}{fid}) { + $f->hidden("fid",$session{form}{fid}); + $f->readOnly($session{form}{fid},WebGUI::International::get(470)); + %data = WebGUI::SQL->quickHash("select * from userProfileField where fieldName=".quote($session{form}{fid})); } else { - return WebGUI::Privilege::adminOnly(); - } + $f->hidden("new",1); + $f->text("fid",WebGUI::International::get(470)); + } + $f->text("fieldLabel",WebGUI::International::get(472),$data{fieldLabel}); + $f->yesNo("visible",WebGUI::International::get(473),$data{visible}); + $f->yesNo("required",WebGUI::International::get(474),$data{required}); + tie %hash, 'Tie::IxHash'; + %hash = ( 'text'=>WebGUI::International::get(475), + 'textarea'=>WebGUI::International::get(476), + 'HTMLArea'=>WebGUI::International::get(477), + 'url'=>WebGUI::International::get(478), + 'date'=>WebGUI::International::get(479), + 'email'=>WebGUI::International::get(480), + 'phone'=>WebGUI::International::get(481), + 'integer'=>WebGUI::International::get(482), + 'yesNo'=>WebGUI::International::get(483), + 'select'=>WebGUI::International::get(484) + ); + $f->select("dataType",\%hash,WebGUI::International::get(486),[$data{dataType}]); + $f->textarea("dataValues",WebGUI::International::get(487),$data{dataValues}); + $f->textarea("dataDefault",WebGUI::International::get(488),$data{dataDefault}); + tie %hash, 'Tie::CPHash'; + %hash = WebGUI::SQL->buildHash("select profileCategoryId,categoryName from userProfileCategory order by categoryName"); + foreach $key (keys %hash) { + $hash{$key} = eval $hash{$key}; + } + $f->select("profileCategoryId",\%hash,WebGUI::International::get(489),[$data{profileCategoryId}]); + $f->submit; + $output .= $f->print; + return _submenu($output); } #------------------------------------------------------------------- sub www_editProfileFieldSave { + return WebGUI::Privilege::adminOnly() unless (WebGUI::Privilege::isInGroup(3)); my ($sequenceNumber, $fieldName, $test); - if (WebGUI::Privilege::isInGroup(3)) { - $session{form}{fieldLabel} = 'Unamed' if ($session{form}{fieldLabel} eq "" || $session{form}{fieldLabel} eq "''"); - $test = eval($session{form}{fieldLabel}); - $session{form}{fieldLabel} = "'".$session{form}{fieldLabel}."'" if ($test eq ""); - if ($session{form}{new}) { - ($fieldName) = WebGUI::SQL->quickArray("select count(*) from userProfileField - where fieldName=".quote($session{form}{fid})); - if ($fieldName) { - $session{form}{fid} .= '2'; - } - ($sequenceNumber) = WebGUI::SQL->quickArray("select max(sequenceNumber) - from userProfileField where profileCategoryId=$session{form}{profileCategoryId}"); - WebGUI::SQL->write("insert into userProfileField (fieldName, sequenceNumber, protected) - values (".quote($session{form}{fid}).", ".($sequenceNumber+1).", 0)"); + $session{form}{fieldLabel} = 'Unamed' if ($session{form}{fieldLabel} eq "" || $session{form}{fieldLabel} eq "''"); + $test = eval($session{form}{fieldLabel}); + $session{form}{fieldLabel} = "'".$session{form}{fieldLabel}."'" if ($test eq ""); + if ($session{form}{new}) { + ($fieldName) = WebGUI::SQL->quickArray("select count(*) from userProfileField + where fieldName=".quote($session{form}{fid})); + if ($fieldName) { + $session{form}{fid} .= '2'; } - WebGUI::SQL->write("update userProfileField set + ($sequenceNumber) = WebGUI::SQL->quickArray("select max(sequenceNumber) + from userProfileField where profileCategoryId=$session{form}{profileCategoryId}"); + WebGUI::SQL->write("insert into userProfileField (fieldName, sequenceNumber, protected) + values (".quote($session{form}{fid}).", ".($sequenceNumber+1).", 0)"); + } + WebGUI::SQL->write("update userProfileField set fieldLabel=".quote($session{form}{fieldLabel}).", visible='$session{form}{visible}', required='$session{form}{required}', @@ -249,116 +227,98 @@ sub www_editProfileFieldSave { dataDefault=".quote($session{form}{dataDefault}).", profileCategoryId=".quote($session{form}{profileCategoryId})." where fieldName=".quote($session{form}{fid})); - return www_editProfileSettings(); - } else { - return WebGUI::Privilege::adminOnly(); - } + return www_editProfileSettings(); } #------------------------------------------------------------------- sub www_editProfileSettings { + return WebGUI::Privilege::adminOnly() unless (WebGUI::Privilege::isInGroup(3)); my ($output, $a, %category, %field, $b); tie %category, 'Tie::CPHash'; tie %field, 'Tie::CPHash'; - if (WebGUI::Privilege::isInGroup(3)) { - $output = helpIcon(22); - $output .= '

    '.WebGUI::International::get(308).'

    '; - $a = WebGUI::SQL->read("select * from userProfileCategory order by sequenceNumber"); - while (%category = $a->hash) { - $output .= deleteIcon('op=deleteProfileCategory&cid='.$category{profileCategoryId}); - $output .= editIcon('op=editProfileCategory&cid='.$category{profileCategoryId}); - $output .= moveUpIcon('op=moveProfileCategoryUp&cid='.$category{profileCategoryId}); - $output .= moveDownIcon('op=moveProfileCategoryDown&cid='.$category{profileCategoryId}); - $output .= ' '; - $output .= eval $category{categoryName}; - $output .= '
    '; - $b = WebGUI::SQL->read("select * from userProfileField where - profileCategoryId=$category{profileCategoryId} order by sequenceNumber"); - while (%field = $b->hash) { - $output .= '     '; - $output .= deleteIcon('op=deleteProfileField&fid='.$field{fieldName}); - $output .= editIcon('op=editProfileField&fid='.$field{fieldName}); - $output .= moveUpIcon('op=moveProfileFieldUp&fid='.$field{fieldName}); - $output .= moveDownIcon('op=moveProfileFieldDown&fid='.$field{fieldName}); - $output .= ' '; - $output .= eval $field{fieldLabel}; - $output .= '
    '; - } - $b->finish; + $output = helpIcon(22); + $output .= '

    '.WebGUI::International::get(308).'

    '; + $a = WebGUI::SQL->read("select * from userProfileCategory order by sequenceNumber"); + while (%category = $a->hash) { + $output .= deleteIcon('op=deleteProfileCategory&cid='.$category{profileCategoryId}); + $output .= editIcon('op=editProfileCategory&cid='.$category{profileCategoryId}); + $output .= moveUpIcon('op=moveProfileCategoryUp&cid='.$category{profileCategoryId}); + $output .= moveDownIcon('op=moveProfileCategoryDown&cid='.$category{profileCategoryId}); + $output .= ' '; + $output .= eval $category{categoryName}; + $output .= '
    '; + $b = WebGUI::SQL->read("select * from userProfileField where + profileCategoryId=$category{profileCategoryId} order by sequenceNumber"); + while (%field = $b->hash) { + $output .= '     '; + $output .= deleteIcon('op=deleteProfileField&fid='.$field{fieldName}); + $output .= editIcon('op=editProfileField&fid='.$field{fieldName}); + $output .= moveUpIcon('op=moveProfileFieldUp&fid='.$field{fieldName}); + $output .= moveDownIcon('op=moveProfileFieldDown&fid='.$field{fieldName}); + $output .= ' '; + $output .= eval $field{fieldLabel}; + $output .= '
    '; } - $a->finish; - return _subMenu($output); - } else { - return WebGUI::Privilege::adminOnly(); + $b->finish; } + $a->finish; + return _submenu($output); } #------------------------------------------------------------------- sub www_moveProfileCategoryDown { + return WebGUI::Privilege::adminOnly() unless (WebGUI::Privilege::isInGroup(3)); my ($id, $thisSeq); - if (WebGUI::Privilege::isInGroup(3)) { - ($thisSeq) = WebGUI::SQL->quickArray("select sequenceNumber from userProfileCategory where profileCategoryId=$session{form}{cid}"); - ($id) = WebGUI::SQL->quickArray("select profileCategoryId from userProfileCategory where sequenceNumber=$thisSeq+1"); - if ($id ne "") { - WebGUI::SQL->write("update userProfileCategory set sequenceNumber=sequenceNumber+1 where profileCategoryId=$session{form}{cid}"); - WebGUI::SQL->write("update userProfileCategory set sequenceNumber=sequenceNumber-1 where profileCategoryId=$id"); - _reorderCategories(); - } - return www_editProfileSettings(); - } else { - return WebGUI::Privilege::adminOnly(); + ($thisSeq) = WebGUI::SQL->quickArray("select sequenceNumber from userProfileCategory where profileCategoryId=$session{form}{cid}"); + ($id) = WebGUI::SQL->quickArray("select profileCategoryId from userProfileCategory where sequenceNumber=$thisSeq+1"); + if ($id ne "") { + WebGUI::SQL->write("update userProfileCategory set sequenceNumber=sequenceNumber+1 where profileCategoryId=$session{form}{cid}"); + WebGUI::SQL->write("update userProfileCategory set sequenceNumber=sequenceNumber-1 where profileCategoryId=$id"); + _reorderCategories(); } + return www_editProfileSettings(); } #------------------------------------------------------------------- sub www_moveProfileCategoryUp { + return WebGUI::Privilege::adminOnly() unless (WebGUI::Privilege::isInGroup(3)); my ($id, $thisSeq); - if (WebGUI::Privilege::isInGroup(3)) { - ($thisSeq) = WebGUI::SQL->quickArray("select sequenceNumber from userProfileCategory where profileCategoryId=$session{form}{cid}"); - ($id) = WebGUI::SQL->quickArray("select profileCategoryId from userProfileCategory where sequenceNumber=$thisSeq-1"); - if ($id ne "") { - WebGUI::SQL->write("update userProfileCategory set sequenceNumber=sequenceNumber-1 where profileCategoryId=$session{form}{cid}"); - WebGUI::SQL->write("update userProfileCategory set sequenceNumber=sequenceNumber+1 where profileCategoryId=$id"); - _reorderCategories(); - } - return www_editProfileSettings(); - } else { - return WebGUI::Privilege::adminOnly(); + ($thisSeq) = WebGUI::SQL->quickArray("select sequenceNumber from userProfileCategory where profileCategoryId=$session{form}{cid}"); + ($id) = WebGUI::SQL->quickArray("select profileCategoryId from userProfileCategory where sequenceNumber=$thisSeq-1"); + if ($id ne "") { + WebGUI::SQL->write("update userProfileCategory set sequenceNumber=sequenceNumber-1 where profileCategoryId=$session{form}{cid}"); + WebGUI::SQL->write("update userProfileCategory set sequenceNumber=sequenceNumber+1 where profileCategoryId=$id"); + _reorderCategories(); } + return www_editProfileSettings(); } #------------------------------------------------------------------- sub www_moveProfileFieldDown { + return WebGUI::Privilege::adminOnly() unless (WebGUI::Privilege::isInGroup(3)); my ($id, $thisSeq, $profileCategoryId); - if (WebGUI::Privilege::isInGroup(3)) { - ($thisSeq,$profileCategoryId) = WebGUI::SQL->quickArray("select sequenceNumber,profileCategoryId from userProfileField where fieldName=".quote($session{form}{fid})); - ($id) = WebGUI::SQL->quickArray("select fieldName from userProfileField where profileCategoryId=$profileCategoryId and sequenceNumber=$thisSeq+1"); - if ($id ne "") { - WebGUI::SQL->write("update userProfileField set sequenceNumber=sequenceNumber+1 where fieldName=".quote($session{form}{fid})); - WebGUI::SQL->write("update userProfileField set sequenceNumber=sequenceNumber-1 where fieldName=".quote($id)); - _reorderFields($profileCategoryId); - } - return www_editProfileSettings(); - } else { - return WebGUI::Privilege::adminOnly(); + ($thisSeq,$profileCategoryId) = WebGUI::SQL->quickArray("select sequenceNumber,profileCategoryId from userProfileField where fieldName=".quote($session{form}{fid})); + ($id) = WebGUI::SQL->quickArray("select fieldName from userProfileField where profileCategoryId=$profileCategoryId and sequenceNumber=$thisSeq+1"); + if ($id ne "") { + WebGUI::SQL->write("update userProfileField set sequenceNumber=sequenceNumber+1 where fieldName=".quote($session{form}{fid})); + WebGUI::SQL->write("update userProfileField set sequenceNumber=sequenceNumber-1 where fieldName=".quote($id)); + _reorderFields($profileCategoryId); } + return www_editProfileSettings(); } #------------------------------------------------------------------- sub www_moveProfileFieldUp { + return WebGUI::Privilege::adminOnly() unless (WebGUI::Privilege::isInGroup(3)); my ($id, $thisSeq, $profileCategoryId); - if (WebGUI::Privilege::isInGroup(3)) { - ($thisSeq,$profileCategoryId) = WebGUI::SQL->quickArray("select sequenceNumber,profileCategoryId from userProfileField where fieldName=".quote($session{form}{fid})); - ($id) = WebGUI::SQL->quickArray("select fieldName from userProfileField where profileCategoryId=$profileCategoryId and sequenceNumber=$thisSeq-1"); - if ($id ne "") { - WebGUI::SQL->write("update userProfileField set sequenceNumber=sequenceNumber-1 where fieldName=".quote($session{form}{fid})); - WebGUI::SQL->write("update userProfileField set sequenceNumber=sequenceNumber+1 where fieldName=".quote($id)); - _reorderFields($profileCategoryId); - } - return www_editProfileSettings(); - } else { - return WebGUI::Privilege::adminOnly(); + ($thisSeq,$profileCategoryId) = WebGUI::SQL->quickArray("select sequenceNumber,profileCategoryId from userProfileField where fieldName=".quote($session{form}{fid})); + ($id) = WebGUI::SQL->quickArray("select fieldName from userProfileField where profileCategoryId=$profileCategoryId and sequenceNumber=$thisSeq-1"); + if ($id ne "") { + WebGUI::SQL->write("update userProfileField set sequenceNumber=sequenceNumber-1 where fieldName=".quote($session{form}{fid})); + WebGUI::SQL->write("update userProfileField set sequenceNumber=sequenceNumber+1 where fieldName=".quote($id)); + _reorderFields($profileCategoryId); } + return www_editProfileSettings(); } diff --git a/lib/WebGUI/Operation/Settings.pm b/lib/WebGUI/Operation/Settings.pm index 19a55d68a..093b84c98 100644 --- a/lib/WebGUI/Operation/Settings.pm +++ b/lib/WebGUI/Operation/Settings.pm @@ -16,274 +16,172 @@ use WebGUI::DateTime; use WebGUI::HTMLForm; use WebGUI::Icon; use WebGUI::International; +use WebGUI::Operation::Shared; use WebGUI::Privilege; use WebGUI::Session; use WebGUI::SQL; use WebGUI::URL; our @ISA = qw(Exporter); -our @EXPORT = qw(&www_editUserSettings &www_editUserSettingsSave &www_editCompanyInformation - &www_editCompanyInformationSave &www_editPrivilegeSettings &www_editPrivilegeSettingsSave - &www_editMailSettings &www_editMailSettingsSave &www_editMiscSettings - &www_editContentSettings &www_editContentSettingsSave &www_editMiscSettingsSave &www_manageSettings); +our @EXPORT = qw(&www_saveSettings &www_editUserSettings &www_editCompanyInformation + &www_editPrivilegeSettings &www_editMailSettings &www_editMiscSettings + &www_editContentSettings &www_manageSettings); #------------------------------------------------------------------- -sub _saveSetting { - WebGUI::SQL->write("update settings set value=".quote($session{form}{$_[0]})." where name='$_[0]'"); +sub _submenu { + my (%menu); + tie %menu, 'Tie::IxHash'; + $menu{WebGUI::URL::page('op=manageSettings')} = WebGUI::International::get(4); + return menuWrapper($_[0],\%menu); } #------------------------------------------------------------------- sub www_editUserSettings { + WebGUI::Privilege::adminOnly() unless (WebGUI::Privilege::isInGroup(3)); my ($output, %authMethod, $f); %authMethod = ('WebGUI'=>'WebGUI', 'LDAP'=>'LDAP'); - if (WebGUI::Privilege::isInGroup(3)) { - $output .= helpIcon(2); - $output .= '

    '.WebGUI::International::get(117).'

    '; - $f = WebGUI::HTMLForm->new; - $f->hidden("op","editUserSettingsSave"); - $f->yesNo("anonymousRegistration",WebGUI::International::get(118),$session{setting}{anonymousRegistration}); - $f->text("runOnRegistration",WebGUI::International::get(559),$session{setting}{runOnRegistration}); - $f->yesNo("alertOnNewUser",WebGUI::International::get(534),$session{setting}{alertOnNewUser}); - $f->group("onNewUserAlertGroup",WebGUI::International::get(535),[$session{setting}{onNewUserAlertGroup}]); - $f->yesNo("useKarma",WebGUI::International::get(539),$session{setting}{useKarma}); - $f->integer("karmaPerLogin",WebGUI::International::get(540),$session{setting}{karmaPerLogin}); - $f->interval("sessionTimeout",WebGUI::International::get(142),WebGUI::DateTime::secondsToInterval($session{setting}{sessionTimeout})); - $f->select("authMethod",\%authMethod,WebGUI::International::get(119),[$session{setting}{authMethod}]); - $f->yesNo("usernameBinding",WebGUI::International::get(306),$session{setting}{usernameBinding}); - $f->url("ldapURL",WebGUI::International::get(120),$session{setting}{ldapURL}); - $f->text("ldapId",WebGUI::International::get(121),$session{setting}{ldapId}); - $f->text("ldapIdName",WebGUI::International::get(122),$session{setting}{ldapIdName}); - $f->text("ldapPasswordName",WebGUI::International::get(123),$session{setting}{ldapPasswordName}); - $f->submit; - $output .= $f->print; - } else { - $output = WebGUI::Privilege::adminOnly(); - } - return $output; -} - -#------------------------------------------------------------------- -sub www_editUserSettingsSave { - if (WebGUI::Privilege::isInGroup(3)) { - $session{form}{sessionTimeout} = WebGUI::DateTime::intervalToSeconds($session{form}{sessionTimeout_interval}, - $session{form}{sessionTimeout_units}); - _saveSetting("sessionTimeout"); - _saveSetting("onNewUserAlertGroup"); - _saveSetting("alertOnNewUser"); - _saveSetting("authMethod"); - _saveSetting("useKarma"); - _saveSetting("karmaPerLogin"); - _saveSetting("ldapURL"); - _saveSetting("ldapId"); - _saveSetting("ldapIdName"); - _saveSetting("ldapPasswordName"); - _saveSetting("anonymousRegistration"); - _saveSetting("usernameBinding"); - _saveSetting("runOnRegistration"); - return www_manageSettings(); - } else { - return WebGUI::Privilege::adminOnly(); - } + $output .= helpIcon(2); + $output .= '

    '.WebGUI::International::get(117).'

    '; + $f = WebGUI::HTMLForm->new; + $f->hidden("op","saveSettings"); + $f->yesNo("anonymousRegistration",WebGUI::International::get(118),$session{setting}{anonymousRegistration}); + $f->text("runOnRegistration",WebGUI::International::get(559),$session{setting}{runOnRegistration}); + $f->yesNo("alertOnNewUser",WebGUI::International::get(534),$session{setting}{alertOnNewUser}); + $f->group("onNewUserAlertGroup",WebGUI::International::get(535),[$session{setting}{onNewUserAlertGroup}]); + $f->yesNo("useKarma",WebGUI::International::get(539),$session{setting}{useKarma}); + $f->integer("karmaPerLogin",WebGUI::International::get(540),$session{setting}{karmaPerLogin}); + $f->interval("sessionTimeout",WebGUI::International::get(142),WebGUI::DateTime::secondsToInterval($session{setting}{sessionTimeout})); + $f->select("authMethod",\%authMethod,WebGUI::International::get(119),[$session{setting}{authMethod}]); + $f->yesNo("usernameBinding",WebGUI::International::get(306),$session{setting}{usernameBinding}); + $f->url("ldapURL",WebGUI::International::get(120),$session{setting}{ldapURL}); + $f->text("ldapId",WebGUI::International::get(121),$session{setting}{ldapId}); + $f->text("ldapIdName",WebGUI::International::get(122),$session{setting}{ldapIdName}); + $f->text("ldapPasswordName",WebGUI::International::get(123),$session{setting}{ldapPasswordName}); + $f->submit; + $output .= $f->print; + return _submenu($output); } #------------------------------------------------------------------- sub www_editCompanyInformation { + WebGUI::Privilege::adminOnly() unless (WebGUI::Privilege::isInGroup(3)); my ($output, $f); - if (WebGUI::Privilege::isInGroup(3)) { - $output .= helpIcon(6); - $output .= '

    '.WebGUI::International::get(124).'

    '; - $f = WebGUI::HTMLForm->new; - $f->hidden("op","editCompanyInformationSave"); - $f->text("companyName",WebGUI::International::get(125),$session{setting}{companyName}); - $f->email("companyEmail",WebGUI::International::get(126),$session{setting}{companyEmail}); - $f->url("companyURL",WebGUI::International::get(127),$session{setting}{companyURL}); - $f->submit; - $output .= $f->print; - } else { - $output = WebGUI::Privilege::adminOnly(); - } - return $output; -} - -#------------------------------------------------------------------- -sub www_editCompanyInformationSave { - if (WebGUI::Privilege::isInGroup(3)) { - _saveSetting("companyName"); - _saveSetting("companyEmail"); - _saveSetting("companyURL"); - return www_manageSettings(); - } else { - return WebGUI::Privilege::adminOnly(); - } + $output .= helpIcon(6); + $output .= '

    '.WebGUI::International::get(124).'

    '; + $f = WebGUI::HTMLForm->new; + $f->hidden("op","saveSettings"); + $f->text("companyName",WebGUI::International::get(125),$session{setting}{companyName}); + $f->email("companyEmail",WebGUI::International::get(126),$session{setting}{companyEmail}); + $f->url("companyURL",WebGUI::International::get(127),$session{setting}{companyURL}); + $f->submit; + $output .= $f->print; + return _submenu($output); } #------------------------------------------------------------------- sub www_editContentSettings { + WebGUI::Privilege::adminOnly() unless (WebGUI::Privilege::isInGroup(3)); my ($output, %htmlFilter, %editor, $f, $pages); $pages = WebGUI::SQL->buildHashRef("select pageId,menuTitle from page order by menuTitle"); %htmlFilter = ('none'=>WebGUI::International::get(420), 'most'=>WebGUI::International::get(421), 'javascript'=>WebGUI::International::get(526), 'all'=>WebGUI::International::get(419)); %editor = ('built-in'=>WebGUI::International::get(495), 'edit-on-pro'=>WebGUI::International::get(494)); - if (WebGUI::Privilege::isInGroup(3)) { - $output .= helpIcon(29); - $output .= '

    '.WebGUI::International::get(525).'

    '; - $f = WebGUI::HTMLForm->new; - $f->hidden("op","editContentSettingsSave"); - $f->select("defaultPage",$pages,WebGUI::International::get(527),[$session{setting}{defaultPage}]); - $f->select("notFoundPage",$pages,WebGUI::International::get(141),[$session{setting}{notFoundPage}]); - $f->text("docTypeDec",WebGUI::International::get(398),$session{setting}{docTypeDec}); - $f->yesNo("addEditStampToPosts",WebGUI::International::get(524),$session{setting}{addEditStampToPosts}); - $f->select("filterContributedHTML",\%htmlFilter,WebGUI::International::get(418),[$session{setting}{filterContributedHTML}]); - $f->integer("maxAttachmentSize",WebGUI::International::get(130),$session{setting}{maxAttachmentSize}); - $f->integer("maxImageSize",WebGUI::International::get(583),$session{setting}{maxImageSize}); - $f->integer("thumbnailSize",WebGUI::International::get(406),$session{setting}{thumbnailSize}); - $f->integer("textAreaRows",WebGUI::International::get(463),$session{setting}{textAreaRows}); - $f->integer("textAreaCols",WebGUI::International::get(464),$session{setting}{textAreaCols}); - $f->integer("textBoxSize",WebGUI::International::get(465),$session{setting}{textBoxSize}); - $f->select("richEditor",\%editor,WebGUI::International::get(496),[$session{setting}{richEditor}]); - $f->submit; - $output .= $f->print; - } else { - $output = WebGUI::Privilege::adminOnly(); - } - return $output; -} - -#------------------------------------------------------------------- -sub www_editContentSettingsSave { - if (WebGUI::Privilege::isInGroup(3)) { - _saveSetting("groupToManageImages"); - _saveSetting("addEditStampToPosts"); - _saveSetting("defaultPage"); - _saveSetting("notFoundPage"); - _saveSetting("docTypeDec"); - _saveSetting("filterContributedHTML"); - _saveSetting("textAreaRows"); - _saveSetting("textAreaCols"); - _saveSetting("textBoxSize"); - _saveSetting("richEditor"); - _saveSetting("maxImageSize"); - _saveSetting("maxAttachmentSize"); - _saveSetting("thumbnailSize"); - return www_manageSettings(); - } else { - return WebGUI::Privilege::adminOnly(); - } + $output .= helpIcon(29); + $output .= '

    '.WebGUI::International::get(525).'

    '; + $f = WebGUI::HTMLForm->new; + $f->hidden("op","saveSettings"); + $f->select("defaultPage",$pages,WebGUI::International::get(527),[$session{setting}{defaultPage}]); + $f->select("notFoundPage",$pages,WebGUI::International::get(141),[$session{setting}{notFoundPage}]); + $f->text("docTypeDec",WebGUI::International::get(398),$session{setting}{docTypeDec}); + $f->yesNo("addEditStampToPosts",WebGUI::International::get(524),$session{setting}{addEditStampToPosts}); + $f->select("filterContributedHTML",\%htmlFilter,WebGUI::International::get(418),[$session{setting}{filterContributedHTML}]); + $f->integer("maxAttachmentSize",WebGUI::International::get(130),$session{setting}{maxAttachmentSize}); + $f->integer("maxImageSize",WebGUI::International::get(583),$session{setting}{maxImageSize}); + $f->integer("thumbnailSize",WebGUI::International::get(406),$session{setting}{thumbnailSize}); + $f->integer("textAreaRows",WebGUI::International::get(463),$session{setting}{textAreaRows}); + $f->integer("textAreaCols",WebGUI::International::get(464),$session{setting}{textAreaCols}); + $f->integer("textBoxSize",WebGUI::International::get(465),$session{setting}{textBoxSize}); + $f->select("richEditor",\%editor,WebGUI::International::get(496),[$session{setting}{richEditor}]); + $f->submit; + $output .= $f->print; + return _submenu($output); } #------------------------------------------------------------------- sub www_editMailSettings { + WebGUI::Privilege::adminOnly() unless (WebGUI::Privilege::isInGroup(3)); my ($output, $f); - if (WebGUI::Privilege::isInGroup(3)) { - $output .= helpIcon(13); - $output .= '

    '.WebGUI::International::get(133).'

    '; - $f = WebGUI::HTMLForm->new; - $f->hidden("op","editMailSettingsSave"); - $f->textarea("recoverPasswordEmail",WebGUI::International::get(134),$session{setting}{recoverPasswordEmail}); - $f->text("smtpServer",WebGUI::International::get(135),$session{setting}{smtpServer}); - $f->submit; - $output .= $f->print; - } else { - $output = WebGUI::Privilege::adminOnly(); - } - return $output; -} - -#------------------------------------------------------------------- -sub www_editMailSettingsSave { - if (WebGUI::Privilege::isInGroup(3)) { - _saveSetting("recoverPasswordEmail"); - _saveSetting("smtpServer"); - return www_manageSettings(); - } else { - return WebGUI::Privilege::adminOnly(); - } + $output .= helpIcon(13); + $output .= '

    '.WebGUI::International::get(133).'

    '; + $f = WebGUI::HTMLForm->new; + $f->hidden("op","saveSettings"); + $f->textarea("recoverPasswordEmail",WebGUI::International::get(134),$session{setting}{recoverPasswordEmail}); + $f->text("smtpServer",WebGUI::International::get(135),$session{setting}{smtpServer}); + $f->submit; + $output .= $f->print; + return _submenu($output); } #------------------------------------------------------------------- sub www_editMiscSettings { + WebGUI::Privilege::adminOnly() unless (WebGUI::Privilege::isInGroup(3)); my ($output, $f); - if (WebGUI::Privilege::isInGroup(3)) { - $output .= helpIcon(24); - $output .= '

    '.WebGUI::International::get(140).'

    '; - $f = WebGUI::HTMLForm->new; - $f->hidden("op","editMiscSettingsSave"); - $f->yesNo("preventProxyCache",WebGUI::International::get(400),$session{setting}{preventProxyCache}); - $f->yesNo("showDebug",WebGUI::International::get(707),$session{setting}{showDebug}); - $f->yesNo("trackPageStatistics",WebGUI::International::get(749),$session{setting}{trackPageStatistics}); - $f->submit; - $output .= $f->print; - } else { - $output = WebGUI::Privilege::adminOnly(); - } - return $output; -} - -#------------------------------------------------------------------- -sub www_editMiscSettingsSave { - if (WebGUI::Privilege::isInGroup(3)) { - _saveSetting("preventProxyCache"); - _saveSetting("showDebug"); - _saveSetting("trackPageStatistics"); - return www_manageSettings(); - } else { - return WebGUI::Privilege::adminOnly(); - } + $output .= helpIcon(24); + $output .= '

    '.WebGUI::International::get(140).'

    '; + $f = WebGUI::HTMLForm->new; + $f->hidden("op","saveSettings"); + $f->yesNo("preventProxyCache",WebGUI::International::get(400),$session{setting}{preventProxyCache}); + $f->yesNo("showDebug",WebGUI::International::get(707),$session{setting}{showDebug}); + $f->yesNo("trackPageStatistics",WebGUI::International::get(749),$session{setting}{trackPageStatistics}); + $f->submit; + $output .= $f->print; + return _submenu($output); } #------------------------------------------------------------------- sub www_editPrivilegeSettings { + WebGUI::Privilege::adminOnly() unless (WebGUI::Privilege::isInGroup(3)); my ($output, $f); - if (WebGUI::Privilege::isInGroup(3)) { - $output .= helpIcon(48); - $output .= '

    '.WebGUI::International::get(710).'

    '; - $f = WebGUI::HTMLForm->new; - $f->hidden("op","editPrivilegeSettingsSave"); - $f->group("imageManagersGroup",WebGUI::International::get(711),[$session{setting}{imageManagersGroup}]); - $f->group("styleManagersGroup",WebGUI::International::get(713),[$session{setting}{styleManagersGroup}]); - $f->group("templateManagersGroup",WebGUI::International::get(714),[$session{setting}{templateManagersGroup}]); - $f->submit; - $output .= $f->print; - } else { - $output = WebGUI::Privilege::adminOnly(); - } - return $output; -} - -#------------------------------------------------------------------- -sub www_editPrivilegeSettingsSave { - if (WebGUI::Privilege::isInGroup(3)) { - _saveSetting("imageManagersGroup"); - _saveSetting("styleManagersGroup"); - _saveSetting("templateManagersGroup"); - return www_manageSettings(); - } else { - return WebGUI::Privilege::adminOnly(); - } + $output .= helpIcon(48); + $output .= '

    '.WebGUI::International::get(710).'

    '; + $f = WebGUI::HTMLForm->new; + $f->hidden("op","saveSettings"); + $f->group("styleManagersGroup",WebGUI::International::get(713),[$session{setting}{styleManagersGroup}]); + $f->group("templateManagersGroup",WebGUI::International::get(714),[$session{setting}{templateManagersGroup}]); + $f->submit; + $output .= $f->print; + return _submenu($output); } #------------------------------------------------------------------- sub www_manageSettings { + WebGUI::Privilege::adminOnly() unless (WebGUI::Privilege::isInGroup(3)); my ($output); - if (WebGUI::Privilege::isInGroup(3)) { - $output .= helpIcon(12); - $output .= '

    '.WebGUI::International::get(143).'

    '; - $output .= ''; - } else { - $output = WebGUI::Privilege::adminOnly(); - } - return $output; + $output .= helpIcon(12); + $output .= '

    '.WebGUI::International::get(143).'

    '; + $output .= ''; + return _submenu($output); } - +#------------------------------------------------------------------- +sub www_saveSettings { + WebGUI::Privilege::adminOnly() unless (WebGUI::Privilege::isInGroup(3)); + my ($key); + foreach $key (keys %{$session{form}}) { + unless ($key eq "op") { + WebGUI::SQL->write("update settings set value=".quote($session{form}{$key})." where name='$key'"); + } + } + return www_manageSettings(); +} 1; diff --git a/lib/WebGUI/Operation/Statistics.pm b/lib/WebGUI/Operation/Statistics.pm index 7eadda87a..6a5ca66f8 100644 --- a/lib/WebGUI/Operation/Statistics.pm +++ b/lib/WebGUI/Operation/Statistics.pm @@ -18,6 +18,7 @@ use strict; use WebGUI::DateTime; use WebGUI::Icon; use WebGUI::International; +use WebGUI::Operation::Shared; use WebGUI::Paginator; use WebGUI::Privilege; use WebGUI::Session; @@ -27,159 +28,175 @@ our @ISA = qw(Exporter); our @EXPORT = qw(&www_viewPageReport &www_viewStatistics &www_viewTrafficReport &www_killSession &www_viewLoginHistory &www_viewActiveSessions); +#------------------------------------------------------------------- +sub _submenu { + my (%menu); + tie %menu, 'Tie::IxHash'; + $menu{WebGUI::URL::page("op=viewActiveSessions")} = WebGUI::International::get(423); + $menu{WebGUI::URL::page("op=viewLoginHistory")} = WebGUI::International::get(424); + $menu{WebGUI::URL::page("op=viewPageReport")} = WebGUI::International::get(796); +# $menu{WebGUI::URL::page("op=viewTrafficReport")} = WebGUI::International::get(797); + $menu{WebGUI::URL::page('op=viewStatistics')} = WebGUI::International::get(144); + return menuWrapper($_[0],\%menu); +} + #------------------------------------------------------------------- sub www_killSession { - if (WebGUI::Privilege::isInGroup(3)) { - WebGUI::Session::end($session{form}{sid}); - return www_viewActiveSessions(); - } else { - return WebGUI::Privilege::adminOnly(); - } + return WebGUI::Privilege::adminOnly() unless (WebGUI::Privilege::isInGroup(3)); + WebGUI::Session::end($session{form}{sid}); + return www_viewActiveSessions(); } #------------------------------------------------------------------- sub www_viewActiveSessions { + return WebGUI::Privilege::adminOnly() unless (WebGUI::Privilege::isInGroup(3)); my ($output, $p, @row, $i, $sth, %data); tie %data, 'Tie::CPHash'; - if (WebGUI::Privilege::isInGroup(3)) { - $output = '

    '.WebGUI::International::get(425).'

    '; - $sth = WebGUI::SQL->read("select * from users,userSession where users.userId=userSession.userId"); - while (%data = $sth->hash) { - $row[$i] = ''.$data{username}.' ('.$data{userId}.')'; - $row[$i] .= ''.$data{sessionId}.''; - $row[$i] .= ''.epochToHuman($data{expires},"%H:%n%p %M/%D/%y").''; - $row[$i] .= ''.epochToHuman($data{lastPageView},"%H:%n%p %M/%D/%y").''; - $row[$i] .= ''.$data{lastIP}.''; - $row[$i] .= ''.deleteIcon("op=killSession&sid=$data{sessionId}").''; - $i++; - } - $sth->finish; - $p = WebGUI::Paginator->new(WebGUI::URL::page('op=viewActiveSessions'),\@row); - $output .= ''; - $output .= ''; - $output .= ''; - $output .= ''; - $output .= ''; - $output .= ''; - $output .= ''; - $output .= $p->getPage($session{form}{pn}); - $output .= '
    '.WebGUI::International::get(428).''.WebGUI::International::get(435).''.WebGUI::International::get(432).''.WebGUI::International::get(430).''.WebGUI::International::get(431).''.WebGUI::International::get(436).'
    '; - $output .= $p->getBarTraditional($session{form}{pn}); - } else { - $output = WebGUI::Privilege::adminOnly(); + $output = '

    '.WebGUI::International::get(425).'

    '; + $sth = WebGUI::SQL->read("select * from users,userSession where users.userId=userSession.userId"); + while (%data = $sth->hash) { + $row[$i] = ''.$data{username}.' ('.$data{userId}.')'; + $row[$i] .= ''.$data{sessionId}.''; + $row[$i] .= ''.epochToHuman($data{expires},"%H:%n%p %M/%D/%y").''; + $row[$i] .= ''.epochToHuman($data{lastPageView},"%H:%n%p %M/%D/%y").''; + $row[$i] .= ''.$data{lastIP}.''; + $row[$i] .= ''.deleteIcon("op=killSession&sid=$data{sessionId}").''; + $i++; } - return $output; + $sth->finish; + $p = WebGUI::Paginator->new(WebGUI::URL::page('op=viewActiveSessions'),\@row); + $output .= ''; + $output .= ''; + $output .= ''; + $output .= ''; + $output .= ''; + $output .= ''; + $output .= ''; + $output .= $p->getPage($session{form}{pn}); + $output .= '
    '.WebGUI::International::get(428).''.WebGUI::International::get(435).''.WebGUI::International::get(432).''.WebGUI::International::get(430).''.WebGUI::International::get(431).''.WebGUI::International::get(436).'
    '; + $output .= $p->getBarTraditional($session{form}{pn}); + return _submenu($output); } #------------------------------------------------------------------- sub www_viewLoginHistory { + return WebGUI::Privilege::adminOnly() unless (WebGUI::Privilege::isInGroup(3)); my ($output, $p, @row, $i, $sth, %data); tie %data, 'Tie::CPHash'; - if (WebGUI::Privilege::isInGroup(3)) { - $output = '

    '.WebGUI::International::get(426).'

    '; - $sth = WebGUI::SQL->read("select * from users,userLoginLog where users.userId=userLoginLog.userId order by userLoginLog.timeStamp desc"); - while (%data = $sth->hash) { - $data{username} = 'unknown user' if ($data{userId} == 0); - $row[$i] = ''.$data{username}.' ('.$data{userId}.')'; - $row[$i] .= ''.$data{status}.''; - $row[$i] .= ''.epochToHuman($data{timeStamp},"%H:%n%p %M/%D/%y").''; - $row[$i] .= ''.$data{ipAddress}.''; - $row[$i] .= ''.$data{userAgent}.''; - $i++; - } - $sth->finish; - $p = WebGUI::Paginator->new(WebGUI::URL::page('op=viewLoginHistory'),\@row); - $output .= ''; - $output .= ''; - $output .= ''; - $output .= ''; - $output .= ''; - $output .= ''; - $output .= $p->getPage($session{form}{pn}); - $output .= '
    '.WebGUI::International::get(428).''.WebGUI::International::get(434).''.WebGUI::International::get(429).''.WebGUI::International::get(431).''.WebGUI::International::get(433).'
    '; - $output .= $p->getBar($session{form}{pn}); - } else { - $output = WebGUI::Privilege::adminOnly(); + $output = '

    '.WebGUI::International::get(426).'

    '; + $sth = WebGUI::SQL->read("select * from users,userLoginLog where users.userId=userLoginLog.userId order by userLoginLog.timeStamp desc"); + while (%data = $sth->hash) { + $data{username} = 'unknown user' if ($data{userId} == 0); + $row[$i] = ''.$data{username}.' ('.$data{userId}.')'; + $row[$i] .= ''.$data{status}.''; + $row[$i] .= ''.epochToHuman($data{timeStamp},"%H:%n%p %M/%D/%y").''; + $row[$i] .= ''.$data{ipAddress}.''; + $row[$i] .= ''.$data{userAgent}.''; + $i++; } - return $output; + $sth->finish; + $p = WebGUI::Paginator->new(WebGUI::URL::page('op=viewLoginHistory'),\@row); + $output .= ''; + $output .= ''; + $output .= ''; + $output .= ''; + $output .= ''; + $output .= ''; + $output .= $p->getPage($session{form}{pn}); + $output .= '
    '.WebGUI::International::get(428).''.WebGUI::International::get(434).''.WebGUI::International::get(429).''.WebGUI::International::get(431).''.WebGUI::International::get(433).'
    '; + $output .= $p->getBar($session{form}{pn}); + return _submenu($output); } #------------------------------------------------------------------- sub www_viewPageReport { return WebGUI::Privilege::adminOnly() unless (WebGUI::Privilege::isInGroup(3)); my ($output, $count, $user, $data, $sth, $page, $pageId); - $sth = WebGUI::SQL->read("select pageTitle,pageId,userId,ipAddress,wobjectId from pageStatistics order by pageTitle,userId,ipAddress"); - while ($data = $sth->hashRef) { - if ($data->{userId} == 1) { - $user = $data->{ipAddress}; - } else { - $user = $data->{userId}; - } - $page->{$data->{pageId}}{pageTitle} = $data->{pageTitle}; - $page->{$data->{pageId}}{users}{$user}++; - $page->{$data->{pageId}}{views}++; - $page->{$data->{pageId}}{interact}++ if ($data->{wobjectId}); - } - $sth->finish; $output = '

    Page Statistics

    '; - $output .= ''; - foreach $pageId (keys %{$page}) { - $output .= ''; - $output .= ''; - $count = 0; - foreach (keys %{$page->{$pageId}{users}}) { - $count++; + unless ($session{setting}{trackPageStatistics}) { + $output .= WebGUI::International::get(802); + } else { + $sth = WebGUI::SQL->read("select pageTitle,pageId,userId,ipAddress,wobjectId + from pageStatistics order by pageTitle,userId,ipAddress"); + while ($data = $sth->hashRef) { + if ($data->{userId} == 1) { + $user = $data->{ipAddress}; + } else { + $user = $data->{userId}; + } + $page->{$data->{pageId}}{pageTitle} = $data->{pageTitle}; + $page->{$data->{pageId}}{users}{$user}++; + $page->{$data->{pageId}}{views}++; + $page->{$data->{pageId}}{interact}++ if ($data->{wobjectId}); } - $output .= ''; - $output .= ''; + $sth->finish; + $output .= '
    Page TitlePage ViewsUnique VisitorsWobject Interactions
    '.$page->{$pageId}{pageTitle}.''.$page->{$pageId}{views}.''.$count.''.$page->{$pageId}{interact}.'
    + + + + '; + foreach $pageId (keys %{$page}) { + $output .= ''; + $output .= ''; + $count = 0; + foreach (keys %{$page->{$pageId}{users}}) { + $count++; + } + $output .= ''; + $output .= ''; + } + $output .= '
    '.WebGUI::International::get(798).''.WebGUI::International::get(799).''.WebGUI::International::get(800).''.WebGUI::International::get(801).'
    '.$page->{$pageId}{pageTitle}.''.$page->{$pageId}{views}.''.$count.''.$page->{$pageId}{interact}.'
    '; } - $output .= ''; - return $output; + return _submenu($output); } #------------------------------------------------------------------- sub www_viewStatistics { + return WebGUI::Privilege::adminOnly() unless (WebGUI::Privilege::isInGroup(3)); my ($output, $data, $header, $userAgent, $request, $response, $version, $referer); - if (WebGUI::Privilege::isInGroup(3)) { - $userAgent = new LWP::UserAgent; - $userAgent->agent("WebGUI-Check/2.0"); - $userAgent->timeout(10); - $header = new HTTP::Headers; - $referer = "http://webgui.web.getversion/".$session{env}{SERVER_NAME}.$session{env}{REQUEST_URI}; - chomp $referer; - $header->referer($referer); - $request = new HTTP::Request (GET => "http://www.plainblack.com/downloads/latest-version.txt", $header); - $response = $userAgent->request($request); - $version = $response->content; - chomp $version; - $output .= helpIcon(12); - $output .= '

    '.WebGUI::International::get(437).'

    '; - $output .= ''; - $output .= ''; - ($data) = WebGUI::SQL->quickArray("select count(*) from userSession"); - $output .= ''; - ($data) = WebGUI::SQL->quickArray("select count(*) from page where parentId>25"); - $data++; - $output .= ''; - ($data) = WebGUI::SQL->quickArray("select count(*) from wobject"); - $data--; - $output .= ''; - ($data) = WebGUI::SQL->quickArray("select count(*) from style where styleId>25"); - $output .= ''; - ($data) = WebGUI::SQL->quickArray("select count(*) from users where userId>25"); - $output .= ''; - ($data) = WebGUI::SQL->quickArray("select count(*) from groups where groupId>25"); - $output .= ''; - $output .= '
    '.WebGUI::International::get(145).''.$WebGUI::VERSION.' ('.WebGUI::International::get(349).': '.$version.')
    '.WebGUI::International::get(146).''.$data.' ('.WebGUI::International::get(423).' / '.WebGUI::International::get(424).')
    '.WebGUI::International::get(147).''.$data.'
    '.WebGUI::International::get(148).''.$data.'
    '.WebGUI::International::get(427).''.$data.'
    '.WebGUI::International::get(149).''.$data.'
    '.WebGUI::International::get(89).''.$data.'
    '; - } else { - $output = WebGUI::Privilege::adminOnly(); - } - return $output; + $userAgent = new LWP::UserAgent; + $userAgent->agent("WebGUI-Check/2.0"); + $userAgent->timeout(10); + $header = new HTTP::Headers; + $referer = "http://webgui.web.getversion/".$session{env}{SERVER_NAME}.$session{env}{REQUEST_URI}; + chomp $referer; + $header->referer($referer); + $request = new HTTP::Request (GET => "http://www.plainblack.com/downloads/latest-version.txt", $header); + $response = $userAgent->request($request); + $version = $response->content; + chomp $version; + $output .= helpIcon(12); + $output .= '

    '.WebGUI::International::get(437).'

    '; + $output .= ''; + $output .= ''; + $output .= ''; + ($data) = WebGUI::SQL->quickArray("select count(*) from page where parentId>1000 and parentId<>3"); + $output .= ''; + ($data) = WebGUI::SQL->quickArray("select count(*) from page where parentId>1000 and parentId=0"); + $output .= ''; + ($data) = WebGUI::SQL->quickArray("select count(*) from page where parentId=5"); + $output .= ''; + ($data) = WebGUI::SQL->quickArray("select count(*) from wobject where wobjectId > 0 and pageId<>3"); + $output .= ''; + ($data) = WebGUI::SQL->quickArray("select count(*) from style where styleId>1000"); + $output .= ''; + ($data) = WebGUI::SQL->quickArray("select count(*) from template where templateId>1000"); + $output .= ''; + ($data) = WebGUI::SQL->quickArray("select count(*) from collateral where collateralId>1000"); + $output .= ''; + ($data) = WebGUI::SQL->quickArray("select count(*) from userSession"); + $output .= ''; + ($data) = WebGUI::SQL->quickArray("select count(*) from users where userId>25"); + $output .= ''; + ($data) = WebGUI::SQL->quickArray("select count(*) from groups where groupId>25"); + $output .= ''; + $output .= '
    '.WebGUI::International::get(145).':'.$WebGUI::VERSION.'
    '.WebGUI::International::get(349).':'.$version.'
    '.WebGUI::International::get(147).':'.$data.'
    '.WebGUI::International::get(795).':'.$data.'
    '.WebGUI::International::get(794).':'.$data.'
    '.WebGUI::International::get(148).':'.$data.'
    '.WebGUI::International::get(427).':'.$data.'
    '.WebGUI::International::get(792).':'.$data.'
    '.WebGUI::International::get(793).':'.$data.'
    '.WebGUI::International::get(146).':'.$data.'
    '.WebGUI::International::get(149).':'.$data.'
    '.WebGUI::International::get(89).':'.$data.'
    '; + return _submenu($output); } #------------------------------------------------------------------- sub www_viewTrafficReport { - return WebGUI::Privilege::adminOnly() unless WebGUI::Privilege::isInGroup(3); + return WebGUI::Privilege::adminOnly() unless (WebGUI::Privilege::isInGroup(3)); my ($output, $data); $output = '

    Pages

    '; ($data) = WebGUI::SQL->quickArray("select count(*) from pageStatistics where dateStamp>=".(time()-2592000)); @@ -198,7 +215,7 @@ sub www_viewTrafficReport { ($data) = WebGUI::SQL->quickArray("select count(*) from pageStatistics where dateStamp>=".(time()-86400) ." group by ipAddress,userId"); $output .= "Last 24 hours: ".$data."
    "; - return $output; + return _submenu($output); } 1;