use utf8;
no warnings 'redefine';
use vars qw($sTitle $hrUser @aSelect %hSel @catz @aCats);
$sTitle = translate('userprofile');
$hrUser = $m_oDatabase->fetch_hashref("select * from users where user = '$m_sUser'");
@aSelect = split /\|/, $hrUser->{cats};
$hSel{$_} = 1 foreach @aSelect;
@aCats = $m_oDatabase->fetch_AoH("select * from cats where `right` <= ?", $m_nRight);
for (my $i = 0 ; $i <= $#aCats ; $i++) {
push @catz,
{
-LABEL => qq|<div class ="|
. ($hSel{$aCats[$i]->{name}} ? 'htmlButtonChecked' : 'htmlButton')
. qq|" onclick="checkButton('b$i',this)">$aCats[$i]->{name}</div>|,
-name => $aCats[$i]->{name},
-TYPE => 'checkbox',
-onclick => "checkButton('b$i',this)",
-id => "b$i",
-STYLE_FIELDVALUE => qq{style="visibility:hidden;"},
-class => 'batch',
-selected => $hSel{$aCats[$i]->{name}} ? "selected" : '',
};
}
show_form(
-HEADER => qq(<div class="marginTop">),
-ACCEPT => \&on_valid_form,
-CHECK => (param('checkForm') ? 1 : 0),
-LANGUAGE => $ACCEPT_LANGUAGE,
-ONSUBMIT => "submitForm(this,'dynamicLink','" . translate('profile') . "');return false;",
-FIELDS => [
{
-LABEL => 'Profile',
-HEADLINE => 1,
-COLSPAN => 2,
-END_ROW => 1,
},
{
-LABEL => 'action',
-default => 'profile',
-TYPE => 'hidden',
},
{
-LABEL => 'checkForm',
-default => 'true',
-TYPE => 'hidden',
},
{
-LABEL => 'validate',
-default => 1,
-TYPE => 'hidden',
},
{
-LABEL => translate('firstname'),
-default => $hrUser->{firstname},
-VALIDATE => sub { $_[0] =~ /^\w{2,20}$/; },
},
{
-LABEL => translate('name'),
-default => $hrUser->{name},
-VALIDATE => sub { $_[0] =~ /^\w{2,20}$/; },
},
{
-LABEL => translate('street'),
-default => $hrUser->{street},
},
{
-LABEL => translate('city'),
-default => $hrUser->{city},
},
{
-LABEL => translate('postcode'),
-default => $hrUser->{postcode},
},
{
-LABEL => translate('phone'),
-default => $hrUser->{phone},
},
{
-LABEL => translate('pass'),
-default => '',
-TYPE => 'password_field',
},
{
-LABEL => translate('newpass'),
-default => '',
-TYPE => 'password_field',
},
{
-LABEL => translate('retry'),
-default => '',
-TYPE => 'password_field',
},
{
-LABEL => translate('email'),
-default => $hrUser->{email},
-VALIDATE => sub { $_[0] =~ /^\S{3,100}$/; },
},
{
-LABEL => 'Cats',
-HEADLINE => 1,
-COLSPAN => 2,
-END_ROW => 1,
},
@catz,
],
-BUTTONS => [
{
-name => translate('save'),
},
],
-FOOTER => '</div>',
);
sub on_valid_form {
my $firstname = param(translate('firstname'));
my $name = param(translate('name'));
my $street = param(translate('street'));
my $city = param(translate('city'));
my $postcode = param(translate('postcode'));
my $phone = param(translate('phone'));
my $pass = param(translate('pass'));
my $newpass = param(translate('newpass'));
my $retry = param(translate('retry'));
my $email = param(translate('email'));
my $md5 = new MD5;
$md5->add($m_sUser);
$md5->add($pass);
my $cyrptpass = $md5->hexdigest();
my $pwChanged = 0;
my $list;
for (my $i = 0 ; $i <= $#aCats ; $i++)
{
$list .= '|' unless $i == 0;
$list .= $aCats[$i]->{name} if (param($aCats[$i]->{name}) eq 'on');
}
if ( $m_oDatabase->checkPass($m_sUser, $cyrptpass)
&& $newpass eq $retry
&& $newpass =~ /^\S{2,50}$/) {
$pwChanged = 1;
my $md5 = new MD5;
$md5->add($m_sUser);
$md5->add($newpass);
my $newpass = $md5->hexdigest();
$m_oDatabase->void(
"update `users` set `pass` = '$newpass',`email` = '$email',`name` = '$name',`firstname` ='$firstname',`street` ='$street',`city` = '$city',`postcode` = '$postcode',`phone` ='$phone', cats='$list' where user = '$m_sUser'"
);
$pass = $retry;
} else {
$m_oDatabase->void(
"update `users` set `email` = '$email',`name` = '$name',`firstname` ='$firstname',`street` ='$street',`city` = '$city',`postcode` = '$postcode',`phone` ='$phone' , cats='$list' where user = '$m_sUser' "
);
}
print '<div class="ShowTables marginTop"><b>'
. translate('done')
. '</b><br/><table align="center" border="0" cellpadding="0" cellspacing="0" width="100%" align="center">
<tr><td align="left">'
. translate('firstname')
. '</td><td>'
. $firstname
. '</td></tr><tr><td align="left">'
. translate('name')
. '</td><td>'
. $name
. '</td></tr>
<tr><td align="left">'
. translate('street')
. '</td><td>'
. $street
. '</td></tr><tr><td align="left">'
. translate('city')
. '</td><td>'
. $city
. '</td></tr>
<ttr><td align="left">'
. translate('postcode')
. '</td><td>'
. $postcode
. '</td></tr><tr><td align="left">'
. translate('phone')
. '</td><td>'
. $phone
. '</td></tr>
<tr><td align="left">'
. translate('email') . '</td><td>' . $email . '</td></tr>';
print '<tr><td align="left">' . translate('newpass') . '</td><td>' . $pass . '</td></tr>'
if ($pwChanged);
print '</table>'
. a(
{
href =>
"javascript:requestURI('$m_hrSettings->{cgi}{serverName}$ENV{SCRIPT_NAME}?action=profile','dynamicLink','profile')",
class => 'links'
},
translate('next')
);
print '</div>';
}
1;