-
- # is there a basedir
- if (!-d "$templates") {
- $form->error( $locale->text('Directory')
- . ": $templates "
- . $locale->text('does not exist'));
- }
-
- # add base directory to $form->{templates}
- $form->{templates} = "$templates/$form->{templates}";
-
- $myconfig = new User "$memberfile", "$form->{login}";
-
- # redo acs variable and delete all the acs codes
- @acs = split(/;/, $form->{acs});
-
- $form->{acs} = "";
- foreach $item (@acs) {
- $item = $form->escape($item, 1);
-
- if (!$form->{$item}) {
- $form->{acs} .= $form->unescape($form->unescape($item)) . ";";
- }
- delete $form->{$item};
- }
-
- # check which database was filled in
- if ($form->{dbdriver} eq 'Oracle') {
- $form->{sid} = $form->{Oracle_sid},;
- $form->{dbhost} = $form->{Oracle_dbhost},;
- $form->{dbport} = $form->{Oracle_dbport};
- $form->{dbpasswd} = $form->{Oracle_dbpasswd};
- $form->{dbuser} = $form->{Oracle_dbuser};
- $form->{dbname} = $form->{Oracle_dbuser};
-
- $form->isblank("dbhost", $locale->text('Hostname missing!'));
- $form->isblank("dbport", $locale->text('Port missing!'));
- $form->isblank("dbuser", $locale->text('Dataset missing!'));
- }
- if ($form->{dbdriver} eq 'Pg') {
- $form->{dbhost} = $form->{Pg_dbhost};
- $form->{dbport} = $form->{Pg_dbport};
- $form->{dbpasswd} = $form->{Pg_dbpasswd};
- $form->{dbuser} = $form->{Pg_dbuser};
- $form->{dbname} = $form->{Pg_dbname};
-
- $form->isblank("dbname", $locale->text('Dataset missing!'));
- $form->isblank("dbuser", $locale->text('Database User missing!'));
- }
-
- if ($webdav) {
- @webdavdirs =
- qw(angebote bestellungen rechnungen anfragen lieferantenbestellungen einkaufsrechnungen);
- foreach $directory (@webdavdirs) {
- if ($form->{$directory}) {
- $form->{$directory} = $form->{$directory};
- } else {
- $form->{$directory} = 0;
- }
- }
- }
-
- foreach $item (keys %{$form}) {
- $myconfig->{$item} = $form->{$item};
- }
-
- delete $myconfig->{stylesheet};
- if ($form->{userstylesheet}) {
- $myconfig->{stylesheet} = $form->{userstylesheet};
- }
-
- $myconfig->save_member($memberfile, $userspath);
-
- if ($webdav) {
- @webdavdirs =
- qw(angebote bestellungen rechnungen anfragen lieferantenbestellungen einkaufsrechnungen);
- foreach $directory (@webdavdirs) {
- $file = "webdav/" . $directory . "/webdav-user";
- if ($form->{$directory}) {
- if (open(HTACCESS, "$file")) {
- while (<HTACCESS>) {
- ($login, $password) = split(/:/, $_);
- if ($login ne $form->{login}) {
- $newfile .= $_;
- }
- }
- close(HTACCESS);
- }
- open(HTACCESS, "> $file") or die "cannot open $file $!\n";
- $newfile .= $myconfig->{login} . ":" . $myconfig->{password} . "\n";
- print(HTACCESS $newfile);
- close(HTACCESS);
- } else {
- $form->{$directory} = 0;
- if (open(HTACCESS, "$file")) {
- while (<HTACCESS>) {
- ($login, $password) = split(/:/, $_);
- if ($login ne $form->{login}) {
- $newfile .= $_;
- }
- }
- close(HTACCESS);
- }
- open(HTACCESS, "> $file") or die "cannot open $file $!\n";
- print(HTACCESS $newfile);
- close(HTACCESS);
- }
- }
- }
-
- $form->{templates} =~ s|.*/||;
- $form->{mastertemplates} =~ s|.*/||;
-
- # create user template directory and copy master files
- if (!-d "$form->{templates}") {
- umask(002);
-
- if (mkdir "$form->{templates}", oct("771")) {
-
- umask(007);
-
- # copy templates to the directory
- opendir TEMPLATEDIR, "$templates/." or $form - error("$templates : $!");
- @templates = grep /$form->{mastertemplates}.*?\.(html|tex|sty|xml|txb)$/,
- readdir TEMPLATEDIR;
- closedir TEMPLATEDIR;
-
- foreach $file (@templates) {
- open(TEMP, "$templates/$file")
- or $form->error("$templates/$file : $!");
-
- $file =~ s/$form->{mastertemplates}-//;
- open(NEW, ">$form->{templates}/$file")
- or $form->error("$form->{templates}/$file : $!");
-
- while ($line = <TEMP>) {
- print NEW $line;
- }
- close(TEMP);
- close(NEW);
- }
- } else {
- $form->error("$!: $form->{templates}");
- }
- }
-
- $form->redirect($locale->text('User saved!'));
-
-}
-
-sub delete {
-
- $form->{templates} =
- ($form->{templates})
- ? "$templates/$form->{templates}"
- : "$templates/$form->{login}";
-
- $form->error($locale->text('File locked!')) if (-f ${memberfile} . LCK);
- open(FH, ">${memberfile}.LCK") or $form->error("${memberfile}.LCK : $!");
- close(FH);
-
- open(CONF, "+<$memberfile") or $form->error("$memberfile : $!");
-
- @config = <CONF>;
-
- seek(CONF, 0, 0);
- truncate(CONF, 0);
-
- while ($line = shift @config) {
-
- if ($line =~ /^\[/) {
- last if ($line =~ /\[$form->{login}\]/);
- $login = &login_name($line);
- }
-
- if ($line =~ /^templates=/) {
- $user{$login} = &get_value($line);
- }
-
- print CONF $line;
- }
-
- # remove everything up to next login or EOF
- # and save template variable
- while ($line = shift @config) {
- if ($line =~ /^templates=/) {
- $templatedir = &get_value($line);
- }
- last if ($line =~ /^\[/);
- }
-
- # this one is either the next login or EOF
- print CONF $line;
-
- $login = &login_name($line);
-
- while ($line = shift @config) {
- if ($line =~ /^\[/) {
- $login = &login_name($line);
- }
-
- if ($line =~ /^templates=/) {
- $user{$login} = &get_value($line);
- }
-
- print CONF $line;
- }
-
- close(CONF);
- unlink "${memberfile}.LCK";
-
- # scan %user for $templatedir
- foreach $login (keys %user) {
- last if ($found = ($templatedir eq $user{$login}));
- }
-
- # if found keep directory otherwise delete
- if (!$found) {
-
- # delete it if there is a template directory
- $dir = "$form->{templates}";
- if (-d "$dir") {
- unlink <$dir/*.html>;
- unlink <$dir/*.tex>;
- unlink <$dir/*.sty>;
- rmdir "$dir";
- }
- }
-
- # delete config file for user
- unlink "$userspath/$form->{login}.conf";
-
- $form->redirect($locale->text('User deleted!'));
-
-}
-
-sub login_name {
- my $login = shift;
-
- $login =~ s/\[\]//g;
- return ($login) ? $login : undef;
-
-}
-
-sub get_value {
- my $line = shift;
-
- my ($null, $value) = split(/=/, $line, 2);
-
- # remove comments
- $value =~ s/\s#.*//g;
-
- # remove any trailing whitespace
- $value =~ s/^\s*(.*?)\s*$/$1/;
-
- $value;
-}
-
-sub change_admin_password {
-
- $form->{title} =
- qq|Lx-Office ERP |
- . $locale->text('Administration') . " / "
- . $locale->text('Change Admin Password');
-
- $form->header;
-
- print qq|
-<body class=admin>
-
-
-<h2>| . $locale->text('Change Admin Password') . qq|</h2>
-
-<form method=post action=$form->{script}>
-
-<table>
- <tr>
- <td><b>| . $locale->text('Password') . qq|</b></td>
- <td><input type=password name=password size=8></td>
- </tr>
- <tr>
- <td><b>| . $locale->text('Repeat the password') . qq|</b></td>
- <td><input type=password name=password_again size=8></b></td>
- </tr>
-</table>
-
-<input type=hidden name=rpw value=$form->{rpw}>
-
-<p>
-<input type=submit class=submit name=action value="|
- . $locale->text('Change Password') . qq|">
-
-</form>
-
-</body>
-</html>
-|;
-
-}
-
-sub change_password {
- if ($form->{"password"} ne $form->{"password_again"}) {
- $form->{title} =
- qq|Lx-Office ERP |
- . $locale->text('Administration') . " / "
- . $locale->text('Change Admin Password');
-
- $form->header;
-
- print qq|
-<body class=admin>
-
-
-<h2>| . $locale->text('Change Admin Password') . qq|</h2>
-
-<p>| . $locale->text("The passwords do not match.") . qq|<br>
-<input type="button" onclick="history.back()" value="| . $locale->text("Back") . qq|">|;
- return;
- }
-
- $root->{password} = $form->{password};
-
- $root->{'root login'} = 1;
- $root->save_member($memberfile);
-
- $form->{callback} =
- "$form->{script}?action=list_users&rpw=$root->{password}";
-
- $form->redirect($locale->text('Password changed!'));
-