lots of operation and auth fixes.
This commit is contained in:
parent
1ab3df1f30
commit
150087f703
19 changed files with 71 additions and 68 deletions
|
|
@ -310,7 +310,7 @@ sub getFieldsList {
|
|||
my $output = '<a href="'.$self->getUrl('op=editProfileSettings').'" class="formLink">'.$i18n->get('Manage Profile Fields').'</a><br /><br />';
|
||||
my %fieldNames;
|
||||
tie %fieldNames, 'Tie::IxHash';
|
||||
foreach my $field (@{WebGUI::ProfileField->getFields}) {
|
||||
foreach my $field (@{WebGUI::ProfileField->new($self->session,'dummy')->getFields}) {
|
||||
my $fieldId = $field->getId;
|
||||
next if $fieldId =~ /contentPositions/;
|
||||
$fieldNames{$fieldId} = $field->getLabel.' ['.$fieldId.']';
|
||||
|
|
@ -708,11 +708,11 @@ sub www_saveUserPrefs {
|
|||
$self->uncacheOverrides;
|
||||
my $i18n = WebGUI::International->new($self->session);
|
||||
my $u = WebGUI::User->new($self->session, $self->discernUserId);
|
||||
foreach my $fieldId ($self->request->params) {
|
||||
foreach my $fieldId ($self->request->param) {
|
||||
my $field = WebGUI::ProfileField->new($self->session,$fieldId);
|
||||
next unless $field;
|
||||
$data{$field->getId} = $field->formProcess;
|
||||
if ($field->getId eq 'email' && WebGUI::Operation::Profile::isDuplicateEmail($data{$field->getId})) {
|
||||
if ($field->getId eq 'email' && WebGUI::Operation::Profile::isDuplicateEmail($self->session,$data{$field->getId})) {
|
||||
return '<li>'.$i18n->get(1072).'</li>';
|
||||
}
|
||||
if ($field->isRequired && !$data{$field->getId}) {
|
||||
|
|
|
|||
|
|
@ -229,7 +229,7 @@ sub view {
|
|||
if($self->session->env->get("REQUEST_METHOD")=~/GET/i || $redirect != 0) { # request_method is also GET after a redirection. Just to make sure we're
|
||||
# not posting the same data over and over again.
|
||||
if($redirect == 0) {
|
||||
foreach my $input_name ($self->session->request->params) {
|
||||
foreach my $input_name ($self->session->request->param) {
|
||||
next if ($input_name !~ /^HttpProxy_/); # Skip non proxied form var's
|
||||
$input_name =~ s/^HttpProxy_//;
|
||||
$proxiedUrl=$self->session->url->append($proxiedUrl,"$input_name=".$self->session->form->process('HttpProxy_'.$input_name));
|
||||
|
|
@ -241,7 +241,7 @@ sub view {
|
|||
my $contentType = 'application/x-www-form-urlencoded'; # default Content Type header
|
||||
|
||||
# Create a %formdata hash to pass key/value pairs to the POST request
|
||||
foreach my $input_name ($self->session->request->params) {
|
||||
foreach my $input_name ($self->session->request->param) {
|
||||
next if ($input_name !~ /^HttpProxy_/); # Skip non proxied form var's
|
||||
$input_name =~ s/^HttpProxy_//;
|
||||
|
||||
|
|
|
|||
|
|
@ -320,7 +320,7 @@ sub _processQuery {
|
|||
if (defined $dbh) {
|
||||
if ($query =~ /^select/i || $query =~ /^show/i || $query =~ /^describe/i) {
|
||||
my $url = $self->getUrl('func=view');
|
||||
foreach ($self->session->request->params) {
|
||||
foreach ($self->session->request->param) {
|
||||
unless ($_ eq "pn" || $_ eq "func" || $_ =~ /identifier/i || $_ =~ /password/i) {
|
||||
$url = $self->session->url->append($url, $self->session->url->escape($_)
|
||||
.'='.$self->session->url->escape($self->session->form->process($_)));
|
||||
|
|
|
|||
|
|
@ -1168,7 +1168,7 @@ sub www_respond {
|
|||
return "" unless ($self->session->scratch->get($varname));
|
||||
my $userId = ($self->get("anonymous")) ? substr(md5_hex($self->session->user->userId),0,8) : $self->session->user->userId;
|
||||
my $terminate = 0;
|
||||
foreach my $key ($self->session->request->params) {
|
||||
foreach my $key ($self->session->request->param) {
|
||||
if ($key =~ /^answerId_(.+)$/) {
|
||||
my $id = $1;
|
||||
my ($previousResponse) = $self->session->db->quickArray("select count(*) from Survey_questionResponse
|
||||
|
|
|
|||
|
|
@ -163,7 +163,7 @@ sub getEditForm {
|
|||
-hoverHelp => $i18n->get('5 description'),
|
||||
-value => $self->get('params'),
|
||||
);
|
||||
if ($self->session->config->('soapHttpHeaderOverride')) {
|
||||
if ($self->session->config->get('soapHttpHeaderOverride')) {
|
||||
$tabform->getTab("properties")->text (
|
||||
-name => 'httpHeader',
|
||||
-label => $i18n->get(16),
|
||||
|
|
@ -245,7 +245,7 @@ sub view {
|
|||
|
||||
# this page, with important params
|
||||
@seen{@exclude_params} = ();
|
||||
foreach ($self->session->request->params) {
|
||||
foreach ($self->session->request->param) {
|
||||
unless (exists $seen{$_}) {
|
||||
$query_string .= $self->session->url->escape($_) . '='
|
||||
. $self->session->url->escape($self->session->form->process($_)) . ';';
|
||||
|
|
|
|||
|
|
@ -319,7 +319,7 @@ sub www_manageClipboard {
|
|||
} else {
|
||||
$ac->addSubmenuItem($self->getUrl('func=manageClipboard;systemClipboard=1'), $i18n->get(954));
|
||||
$ac->addSubmenuItem($self->getUrl('func=emptyClipboard'), $i18n->get(950),
|
||||
'onclick="return window.confirm(\''.$i18n->(951,"WebGUI").'\')"',"Asset");
|
||||
'onclick="return window.confirm(\''.$i18n->get(951,"WebGUI").'\')"',"Asset");
|
||||
$limit = 1;
|
||||
}
|
||||
$self->session->style->setLink($self->session->config->get("extrasURL").'/assetManager/assetManager.css', {rel=>"stylesheet",type=>"text/css"});
|
||||
|
|
|
|||
|
|
@ -191,7 +191,7 @@ sub www_manageTrash {
|
|||
$ac->setHelp("trash manage");
|
||||
if ($self->session->form->process("systemTrash") && $self->session->user->isInGroup(3)) {
|
||||
$header = $i18n->get(965);
|
||||
$ac->addSubmenuItem($self->getUrl('func=manageTrash'), $i18n->(10,"WebGUI"));
|
||||
$ac->addSubmenuItem($self->getUrl('func=manageTrash'), $i18n->get(10,"WebGUI"));
|
||||
} else {
|
||||
$ac->addSubmenuItem($self->getUrl('func=manageTrash;systemTrash=1'), $i18n->get(964));
|
||||
$limit = 1;
|
||||
|
|
|
|||
|
|
@ -199,7 +199,7 @@ sub createAccount {
|
|||
$vars->{'create.form.header'} .= WebGUI::Form::hidden($self->session,{"name"=>"method","value"=>$method});
|
||||
|
||||
#User Defined Options
|
||||
$vars->{'create.form.profile'} = WebGUI::Operation::Profile::getRequiredProfileFields();
|
||||
$vars->{'create.form.profile'} = WebGUI::Operation::Profile::getRequiredProfileFields($self->session);
|
||||
|
||||
$vars->{'create.form.submit'} = WebGUI::Form::submit($self->session,{});
|
||||
$vars->{'create.form.footer'} = WebGUI::Form::formFooter($self->session,);
|
||||
|
|
@ -238,37 +238,39 @@ Hashref of profile values returned by the function WebGUI::Operation::Profile::v
|
|||
=cut
|
||||
|
||||
sub createAccountSave {
|
||||
my $self = shift;
|
||||
my $username = $_[0];
|
||||
my $properties = $_[1];
|
||||
my $password = $_[2];
|
||||
my $profile = $_[3];
|
||||
|
||||
my $self = shift;
|
||||
my $username = $_[0];
|
||||
my $properties = $_[1];
|
||||
my $password = $_[2];
|
||||
my $profile = $_[3];
|
||||
|
||||
my $i18n = WebGUI::International->new($self->session);
|
||||
|
||||
|
||||
my $u = WebGUI::User->new($self->session,"new");
|
||||
$self->user($u);
|
||||
my $userId = $u->userId;
|
||||
$u->username($username);
|
||||
$u->authMethod($self->authMethod);
|
||||
$u->karma($self->session->setting->get("karmaPerLogin"),"Login","Just for logging in.") if ($self->session->setting->get("useKarma"));
|
||||
WebGUI::Operation::Profile::saveProfileFields($u,$profile) if($profile);
|
||||
$self->saveParams($userId,$self->authMethod,$properties);
|
||||
|
||||
if ($self->getSetting("sendWelcomeMessage")){
|
||||
my $authInfo = "\n\n".$i18n->get(50).": ".$username;
|
||||
$authInfo .= "\n".$i18n->get(51).": ".$password if($password);
|
||||
$authInfo .= "\n\n";
|
||||
WebGUI::MessageLog::addEntry($self->userId,"",$i18n->get(870),$self->getSetting("welcomeMessage").$authInfo);
|
||||
}
|
||||
$self->session->user({user=>$u});
|
||||
$self->_logLogin($userId,"success");
|
||||
|
||||
|
||||
my $u = WebGUI::User->new($self->session,"new");
|
||||
$self->user($u);
|
||||
my $userId = $u->userId;
|
||||
$u->username($username);
|
||||
$u->authMethod($self->authMethod);
|
||||
$u->karma($self->session->setting->get("karmaPerLogin"),"Login","Just for logging in.") if ($self->session->setting->get("useKarma"));
|
||||
WebGUI::Operation::Profile::saveProfileFields($self->session,$u,$profile) if($profile);
|
||||
$self->saveParams($userId,$self->authMethod,$properties);
|
||||
|
||||
if ($self->getSetting("sendWelcomeMessage")){
|
||||
my $authInfo = "\n\n".$i18n->get(50).": ".$username;
|
||||
$authInfo .= "\n".$i18n->get(51).": ".$password if($password);
|
||||
$authInfo .= "\n\n";
|
||||
WebGUI::MessageLog::addEntry($self->userId,"",$i18n->get(870),$self->getSetting("welcomeMessage").$authInfo);
|
||||
}
|
||||
$self->session->user({user=>$u});
|
||||
$self->session->var->end($self->session->var->get("sessionId"));
|
||||
$self->session->var->start($userId,$self->session->getId);
|
||||
$self->_logLogin($userId,"success");
|
||||
my $command = $self->session->setting->get("runOnRegistration");
|
||||
WebGUI::Macro::process($self->session,\$command);
|
||||
system($command) if ($self->session->setting->get("runOnRegistration") ne "");
|
||||
WebGUI::MessageLog::addInternationalizedEntry('',$self->session->setting->get("onNewUserAlertGroup"),'',536) if ($self->session->setting->get("alertOnNewUser"));
|
||||
return "";
|
||||
system($command) if ($self->session->setting->get("runOnRegistration") ne "");
|
||||
WebGUI::MessageLog::addInternationalizedEntry('',$self->session->setting->get("onNewUserAlertGroup"),'',536) if ($self->session->setting->get("alertOnNewUser"));
|
||||
return "";
|
||||
}
|
||||
|
||||
#-------------------------------------------------------------------
|
||||
|
|
|
|||
|
|
@ -210,7 +210,7 @@ sub createAccountSave {
|
|||
}
|
||||
}
|
||||
$error .= $self->error unless($self->_isValidPassword($password,$passConfirm));
|
||||
my ($profile, $temp, $warning) = WebGUI::Operation::Profile::validateProfileData();
|
||||
my ($profile, $temp, $warning) = WebGUI::Operation::Profile::validateProfileData($self->session);
|
||||
$error .= $temp;
|
||||
|
||||
return $self->createAccount($error) unless ($error eq "");
|
||||
|
|
|
|||
|
|
@ -200,7 +200,7 @@ The namespace of the plugin.
|
|||
sub init {
|
||||
my ($class, $session, $namespace, $properties);
|
||||
$class = shift;
|
||||
$session = shift;
|
||||
$session = shift; use WebGUI; WebGUI::dumpSession($session);
|
||||
$namespace = shift;
|
||||
|
||||
$properties = $session->db->buildHashRef("select fieldName, fieldValue from commerceSettings where namespace=".$session->db->quote($namespace)." and type='Payment'");
|
||||
|
|
|
|||
|
|
@ -501,8 +501,8 @@ sub confirmTransaction {
|
|||
sub init {
|
||||
my ($class, $self);
|
||||
$class = shift;
|
||||
|
||||
$self = $class->SUPER::init('ITransact');
|
||||
my $session = shift; use WebGUI; WebGUI::dumpSession($session);
|
||||
$self = $class->SUPER::init($session,'ITransact');
|
||||
|
||||
return $self;
|
||||
}
|
||||
|
|
|
|||
|
|
@ -39,8 +39,8 @@ sub _submenu {
|
|||
#-------------------------------------------------------------------
|
||||
sub _clearCheckoutScratch {
|
||||
my $session = shift; use WebGUI; WebGUI::dumpSession($session);
|
||||
_clearShippingScratch();
|
||||
_clearPaymentScratch();
|
||||
_clearShippingScratch($session);
|
||||
_clearPaymentScratch($session);
|
||||
}
|
||||
|
||||
#-------------------------------------------------------------------
|
||||
|
|
@ -107,9 +107,9 @@ sub www_cancelTransaction {
|
|||
#-------------------------------------------------------------------
|
||||
sub www_checkout {
|
||||
my $session = shift; use WebGUI; WebGUI::dumpSession($session);
|
||||
return WebGUI::Operation::execute($session,'selectShippingMethod') unless (_shippingSelected);
|
||||
return WebGUI::Operation::execute($session,'selectShippingMethod') unless (_shippingSelected($session));
|
||||
|
||||
return WebGUI::Operation::execute($session,'selectPaymentGateway') unless (_paymentSelected);
|
||||
return WebGUI::Operation::execute($session,'selectPaymentGateway') unless (_paymentSelected($session));
|
||||
|
||||
return WebGUI::Operation::execute($session,'checkoutConfirm');
|
||||
}
|
||||
|
|
@ -129,7 +129,7 @@ sub www_checkoutConfirm {
|
|||
}
|
||||
|
||||
# If no payment gateway has been selected yet, have the user do so now.
|
||||
return WebGUI::Operation::execute($session,'checkout') unless (_paymentSelected && _shippingSelected);
|
||||
return WebGUI::Operation::execute($session,'checkout') unless (_paymentSelected($session) && _shippingSelected($session));
|
||||
|
||||
$var{errorLoop} = [ map {{message => $_}} @{$errors} ] if $errors;
|
||||
|
||||
|
|
@ -210,7 +210,7 @@ sub www_checkoutSubmit {
|
|||
}
|
||||
|
||||
# Check if a valid payment gateway has bee selected. If not have the user do so.
|
||||
return WebGUI::Operation::execute($session,'checkout') unless (_paymentSelected && _shippingSelected);
|
||||
return WebGUI::Operation::execute($session,'checkout') unless (_paymentSelected($session) && _shippingSelected($session));
|
||||
|
||||
# Load shipping plugin.
|
||||
$shipping = WebGUI::Commerce::Shipping->load($session, $session->scratch->get('shippingMethod'));
|
||||
|
|
@ -315,7 +315,7 @@ sub www_checkoutSubmit {
|
|||
$param{statusExplanation} = $i18n->get('status codes information');
|
||||
$param{resultLoop} = \@resultLoop;
|
||||
|
||||
_clearCheckoutScratch;
|
||||
_clearCheckoutScratch($session);
|
||||
|
||||
# If everythings ok show the purchase history
|
||||
return WebGUI::Operation::execute($session,'viewPurchaseHistory') unless ($checkoutError);
|
||||
|
|
@ -505,7 +505,7 @@ sub www_editCommerceSettings {
|
|||
|
||||
$session->style->setScript($session->config->get("extrasURL").'/swapLayers.js',{type=>"text/javascript"});
|
||||
|
||||
return _submenu($tabform->print, 'edit commerce settings title', 'commerce manage');
|
||||
return _submenu($session,$tabform->print, 'edit commerce settings title', 'commerce manage');
|
||||
}
|
||||
|
||||
#-------------------------------------------------------------------
|
||||
|
|
@ -513,7 +513,7 @@ sub www_editCommerceSettingsSave {
|
|||
my $session = shift; use WebGUI; WebGUI::dumpSession($session);
|
||||
return $session->privilege->adminOnly() unless ($session->user->isInGroup(3));
|
||||
|
||||
foreach ($session->request->params) {
|
||||
foreach ($session->request->param) {
|
||||
# Store the plugin confiuration data in a special table for security and the general settings in the
|
||||
# normal settings table for easy access.
|
||||
if (/~([^~]*)~([^~]*)~([^~]*)/) {
|
||||
|
|
@ -524,7 +524,7 @@ sub www_editCommerceSettingsSave {
|
|||
fieldValue => $session->form->process($_)
|
||||
});
|
||||
} elsif ($_ ne 'op') {
|
||||
WebGUI::Setting::set($_,$session->form->process($_));
|
||||
$session->setting->set($_,$session->form->process($_));
|
||||
}
|
||||
}
|
||||
|
||||
|
|
@ -561,7 +561,7 @@ sub www_listPendingTransactions {
|
|||
$output .= '</table>';
|
||||
$output .= $p->getBarTraditional($session->form->process("pn"));
|
||||
|
||||
_submenu($output, 'list pending transactions', 'list pending transactions');
|
||||
_submenu($session,$output, 'list pending transactions', 'list pending transactions');
|
||||
}
|
||||
|
||||
#-------------------------------------------------------------------
|
||||
|
|
@ -657,7 +657,7 @@ sub www_listTransactions {
|
|||
}
|
||||
$output .= '</table>';
|
||||
|
||||
return _submenu($output, 'list transactions')
|
||||
return _submenu($session,$output, 'list transactions')
|
||||
}
|
||||
|
||||
#-------------------------------------------------------------------
|
||||
|
|
@ -665,7 +665,7 @@ sub www_selectPaymentGateway {
|
|||
my $session = shift; use WebGUI; WebGUI::dumpSession($session);
|
||||
my ($plugins, $f, $i18n, @pluginLoop, %var);
|
||||
|
||||
_clearPaymentScratch;
|
||||
_clearPaymentScratch($session);
|
||||
|
||||
$i18n = WebGUI::International->new($session, 'Commerce');
|
||||
$plugins = WebGUI::Commerce::Payment->getEnabledPlugins($session);
|
||||
|
|
@ -710,7 +710,7 @@ sub www_selectShippingMethod {
|
|||
my $session = shift; use WebGUI; WebGUI::dumpSession($session);
|
||||
my ($plugins, $f, $i18n, @pluginLoop, %var);
|
||||
|
||||
_clearShippingScratch;
|
||||
_clearShippingScratch($session);
|
||||
|
||||
$i18n = WebGUI::International->new($session, 'Commerce');
|
||||
$plugins = WebGUI::Commerce::Shipping->getEnabledPlugins($session);
|
||||
|
|
@ -768,7 +768,7 @@ sub www_updateCart {
|
|||
my $session = shift; use WebGUI; WebGUI::dumpSession($session);
|
||||
my $shoppingCart = WebGUI::Commerce::ShoppingCart->new($session);
|
||||
|
||||
foreach my $formElement ($session->request->params) {
|
||||
foreach my $formElement ($session->request->param) {
|
||||
if ($formElement =~ m/^quantity~([^~]*)~([^~]*)$/) {
|
||||
$shoppingCart->setQuantity($2, $1, $session->form->process($formElement));
|
||||
}
|
||||
|
|
|
|||
|
|
@ -29,7 +29,7 @@ use WebGUI::Operation::Shared;
|
|||
sub getRequiredProfileFields {
|
||||
my $session = shift; use WebGUI; WebGUI::dumpSession($session);
|
||||
my @array;
|
||||
foreach my $field (@{WebGUI::ProfileField->getRequiredFields}) {
|
||||
foreach my $field (@{WebGUI::ProfileField->new($session,'dummy')->getRequiredFields}) {
|
||||
push(@array, {
|
||||
'profile.formElement' => $field->formField,
|
||||
'profile.formElement.label' => $field->getLabel
|
||||
|
|
@ -75,7 +75,7 @@ sub validateProfileData {
|
|||
my $error = "";
|
||||
my $warning = "";
|
||||
my $i18n = WebGUI::International->new($session);
|
||||
foreach my $field (@{WebGUI::ProfileField->getEditableFields}) {
|
||||
foreach my $field (@{WebGUI::ProfileField->new($session,'dummy')->getEditableFields}) {
|
||||
my $fieldValue = $field->formProcess;
|
||||
if (ref $fieldValue eq "ARRAY") {
|
||||
$data{$field->getId} = $$fieldValue[0];
|
||||
|
|
@ -84,7 +84,7 @@ sub validateProfileData {
|
|||
}
|
||||
if ($field->isRequired && !$data{$field->getId}) {
|
||||
$error .= '<li>'.$field->getLabel.' '.$i18n->get(451).'</li>';
|
||||
} elsif ($field->getId eq "email" && isDuplicateEmail($data{$field->getId})) {
|
||||
} elsif ($field->getId eq "email" && isDuplicateEmail($session,$data{$field->getId})) {
|
||||
$warning .= '<li>'.$i18n->get(1072).'</li>';
|
||||
}
|
||||
}
|
||||
|
|
|
|||
|
|
@ -300,10 +300,10 @@ sub www_saveSettings {
|
|||
next;
|
||||
}
|
||||
unless ($key eq "op") {
|
||||
WebGUI::Setting::set($key,$value);
|
||||
$session->setting->set($key,$value);
|
||||
}
|
||||
}
|
||||
return www_editSettings();
|
||||
return www_editSettings($session);
|
||||
}
|
||||
|
||||
1;
|
||||
|
|
|
|||
|
|
@ -65,7 +65,7 @@ sub www_viewStatistics {
|
|||
($data) = $session->db->quickArray("select count(*) from groups");
|
||||
$output .= '<tr><td align="right" class="tableHeader">'.$i18n->get(89).':</td><td class="tableData">'.$data.'</td></tr>';
|
||||
$output .= '</table>';
|
||||
return _submenu($output);
|
||||
return _submenu($session,$output);
|
||||
}
|
||||
|
||||
|
||||
|
|
|
|||
|
|
@ -407,7 +407,7 @@ sub www_editUserSave {
|
|||
my $authInstance = WebGUI::Operation::Auth::getInstance($_,$u->userId);
|
||||
$authInstance->editUserFormSave;
|
||||
}
|
||||
foreach my $field (@{WebGUI::ProfileField->getFields}) {
|
||||
foreach my $field (@{WebGUI::ProfileField->new($session,'dummy')->getFields}) {
|
||||
next if $field->getId =~ /contentPositions/;
|
||||
$u->profileField($field->getId,$field->formProcess);
|
||||
}
|
||||
|
|
|
|||
|
|
@ -173,7 +173,7 @@ Returns the value retrieved from a form post.
|
|||
|
||||
sub formProcess {
|
||||
my $self = shift;
|
||||
my $result = $self->session->form->process($self->getId,$self->get("fieldType"),WebGUI::Operation::Shared::secureEval($self->get("dataDefault")));
|
||||
my $result = $self->session->form->process($self->getId,$self->get("fieldType"),WebGUI::Operation::Shared::secureEval($self->session,$self->get("dataDefault")));
|
||||
if (ref $result eq "ARRAY") {
|
||||
my @results = @$result;
|
||||
for (my $count=0;$count<scalar(@results);$count++) {
|
||||
|
|
|
|||
|
|
@ -128,7 +128,7 @@ sub paramsHashRef {
|
|||
my $self = shift;
|
||||
unless ($self->{_paramsHashRef}) {
|
||||
my $hash;
|
||||
foreach ($self->session->request->params) {
|
||||
foreach ($self->session->request->param) {
|
||||
$hash->{$_} = $self->process($_);
|
||||
}
|
||||
$self->{_paramsHashRef} = $hash;
|
||||
|
|
|
|||
|
|
@ -168,6 +168,7 @@ sub new {
|
|||
$self->{_var} = $session->db->quickHashRef("select * from userSession where sessionId=".$session->db->quote($sessionId));
|
||||
if ($self->{_var}{expires} && $self->{_var}{expires} < $session->datetime->time()) {
|
||||
$self->end;
|
||||
$self->start(1,$sessionId);
|
||||
} elsif ($self->{_var}{sessionId} ne "") {
|
||||
$self->{_var}{lastPageView} = $session->datetime->time();
|
||||
$self->{_var}{lastIP} = $session->env->get("REMOTE_ADDR");
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue