#
# COPYRIGHT:
#
-# This software is Copyright (c) 1996-2012 Best Practical Solutions, LLC
+# This software is Copyright (c) 1996-2015 Best Practical Solutions, LLC
# <sales@bestpractical.com>
#
# (Except where explicitly superseded by other copyright notices)
},
# User overridable options for RT at a glance
- DefaultSummaryRows => {
- Section => 'RT at a glance', #loc
- Overridable => 1,
- SortOrder => 1,
- Widget => '/Widgets/Form/Integer',
- WidgetArguments => {
- Description => 'Number of search results', #loc
- },
- },
HomePageRefreshInterval => {
Section => 'RT at a glance', #loc
Overridable => 1,
Description => 'Date format', #loc
Callback => sub { my $ret = { Values => [], ValuesLabel => {}};
my $date = RT::Date->new($HTML::Mason::Commands::session{'CurrentUser'});
- $date->Set;
+ $date->SetToNow;
foreach my $value ($date->Formatters) {
push @{$ret->{Values}}, $value;
- $ret->{ValuesLabel}{$value} = $date->$value();
+ $ret->{ValuesLabel}{$value} = $date->Get(
+ Format => $value,
+ Timezone => 'user',
+ );
}
return $ret;
},
'The RTAddressRegexp option is not set in the config.'
.' Not setting this option results in additional SQL queries to'
.' check whether each address belongs to RT or not.'
- .' It is especially important to set this option if RT recieves'
+ .' It is especially important to set this option if RT receives'
.' emails on addresses that are not in the database or config.'
);
} elsif (ref $value and ref $value eq "Regexp") {
my $res;
if ( $user && $user->id && $META{$name}->{'Overridable'} ) {
- $user = $user->UserObj if $user->isa('RT::CurrentUser');
my $prefs = $user->Preferences($RT::System);
$res = $prefs->{$name} if $prefs;
}
# if the entry has a trailing '::' then
# it is a link to another name space
if ( substr( $k, -2 ) eq '::') {
- $name = $self->__GetNameByRef( $ref, $k );
+ $name = $self->__GetNameByRef( $ref, $pack eq 'main::'? $k : $pack.$k );
return $name if $name;
}
my $entry = ${$pack}{$k};
next unless $entry;
- # get entry for type we are looking for
- # XXX skip references to scalars or other references.
- # Otherwie 5.10 goes boom. maybe we should skip any
- # reference
- next if ref($entry) eq 'SCALAR' || ref($entry) eq 'REF';
- my $entry_ref = *{$entry}{ ref($ref) };
+ # Inlined constants are simplified in the symbol table --
+ # namely, when possible, you only get a reference back in
+ # $entry, rather than a full GLOB. In 5.10, scalar
+ # constants began being inlined this way; starting in 5.20,
+ # list constants are also inlined. Notably, ref(GLOB) is
+ # undef, but inlined constants are currently either REF,
+ # SCALAR, or ARRAY.
+ next if ref($entry);
+
+ my $ref_type = ref($ref);
+
+ # regex/arrayref/hashref/coderef are stored in SCALAR glob
+ $ref_type = 'SCALAR' if $ref_type eq 'REF';
+
+ my $entry_ref = *{$entry}{ $ref_type };
+ next if ref $entry_ref && ref $entry_ref ne ref $ref;
next unless $entry_ref;
# if references are equal then we've found
if ( $entry_ref == $ref ) {
$last_pack = $pack;
- return ( $REF_SYMBOLS{ ref($ref) } || '*' ) . $pack . $k;
+ return ( $REF_SYMBOLS{ $ref_type } || '*' ) . $pack . $k;
}
}
return '';