Subversion Repositories personal-webbase

Rev

Rev 12 | Details | Compare with Previous | Last modification | View Log | RSS feed

Rev Author Line No. Line
12 daniel-mar 1
<?php
2
 
14 daniel-mar 3
if (!defined('WBLEGAL')) die('Kann nicht ohne Personal WebBase ausgef&uuml;hrt werden.');
12 daniel-mar 4
 
5
  if ($aktion == 'dest')
6
  {
14 daniel-mar 7
    if (isset($pwd) && ($pwd != $ib_user_passwort) && ($wb_user_type == 1))
12 daniel-mar 8
      die($header.'<h1>Daten&uuml;bertragung</h1>Es wurde ein falsches Passwort eingegeben.'.$footer);
9
 
10
    if (strtoupper($sic) != 'OK')
11
      die($header.'<h1>Daten&uuml;bertragung</h1>Sie m&uuml;ssen das Sicherheitsfeld ausf&uuml;llen!'.$footer);
12
 
13
    foreach ($tabellen as $m1 => $m2)
14
    {
15
      if (isset($datenbanktabellen[$mysql_zugangsdaten['praefix'].$m2]['user']))
16
      {
17
        db_query("DELETE FROM `".$mysql_zugangsdaten['praefix'].$m2."` WHERE `user` = '".$benutzer['id']."'");
18
        if (db_affected_rows() > 0)
19
          db_query("OPTIMIZE TABLE `".$mysql_zugangsdaten['praefix'].$m2."`");
20
      }
21
    }
22
 
23
    unset($m1);
24
        unset($m2);
25
 
26
    echo $header.'<h1>Daten&uuml;bertragung</h1>Es wurden alle Datens&auml;tze entfernt.'.$footer;
27
  }
28
 
29
  if ($aktion == 'dump')
30
  {
14 daniel-mar 31
    if (isset($pwd) && ($pwd != $ib_user_passwort) && ($wb_user_type == 1))
12 daniel-mar 32
    {
33
      echo $header.'<h1>Daten&uuml;bertragung</h1>Es wurde ein falsches Passwort eingegeben.'.$footer;
34
    }
35
    else
36
    {
37
      if($_FILES['dfile']['tmp_name'])
38
      {
39
          ob_start();
40
          readfile($_FILES['dfile']['tmp_name']);
41
          $inh = ob_get_contents();
42
          ob_end_clean();
43
 
44
          $m = '';
45
 
46
                  // Größten Datensatz finden, um Dateiduplikate zu verhindern
47
                  $max = 0;
48
                  foreach ($tabellen as $m1 => $m2)
49
                  {
50
                    $rs = db_query("SELECT MAX(`id`) AS `ma` FROM `".$mysql_zugangsdaten['praefix'].db_escape($m2)."`");
51
                    $rw = db_fetch($rs);
52
                    if ($rw['ma'] > $max)
53
                      $max = $rw['ma'];
54
                  }
55
 
56
                  unset($m1);
57
                  unset($m2);
58
 
59
                  $warn = '';
60
                  $firstds = true;
61
                  $falsche_rev = false;
62
                  $aktionzeile = 1;
63
                  $inh = str_replace("\r", '', $inh);
64
                  $inh = str_replace("\n", '', $inh);
65
                  $ar1 = explode(";", $inh);
66
                  foreach ($ar1 as $a11 => $a12)
67
                  {
68
                    if ($firstds)
69
                    {
70
                      $firstds = false;
71
                      if ($a12 != 'IRONBASE#1')
72
                      {
73
                        $falsche_rev = true;
74
                        $warn .= '<b>Schwerer Fehler:</b><br><br>Dies ist keine g&uuml;ltige Personal WebBase-Datensicherung. Das Kopfzeilenelement &quot;IRONBASE#1&quot; wurde nicht gefunden.';
75
                      }
76
                    }
77
                    else if ((!$falsche_rev) && ($a12 != ''))
78
                    {
79
                      $aktionzeile++;
80
                      $namen = '';
81
                      $werte = '';
82
                      $ar2 = explode('*', $a12);
83
                      $t = $ar2[0];
84
                      $d = $ar2[1];
85
                      $temp = $tabellen;
86
                      @array_flip($temp);
87
                      if (!array_key_exists($t, $temp))
88
                      {
89
                        $ar3 = explode(',', $d);
90
                        foreach ($ar3 as $a31 => $a32)
91
                        {
92
                          $ar4 = explode('~', $a32);
93
                          $neu_namen = "`".db_escape(base64_decode($ar4[0]))."`, ";
94
                  if (base64_decode($ar4[0]) == 'id')
95
                          {
96
                            $neu_werte = "'".db_escape(base64_decode($ar4[1])+$max)."', ";
97
                          }
98
                          else
99
                          {
100
                            if ((base64_decode($ar4[0]) == 'folder') && (base64_decode($ar4[1]) != 0))
101
                              $neu_werte = "'".db_escape(base64_decode($ar4[1])+$max)."', ";
102
                            else
103
                              $neu_werte = "'".db_escape(base64_decode($ar4[1]))."', ";
104
                          }
105
 
106
                          // Benutzerfeld darf nicht vom Datensatz aus hervorgehen!
107
                          if ($ar4[0] == 'user')
108
                          {
109
                            $warn .= 'Schutzverletzung des Typs B beim Versuch, den Benutzer bei folgender Stelle zu setzen:<br><code>Backup-Zeile: #'.$aktionzeile.'</code><br><br>';
110
                          }
111
                          else
112
                          {
113
                            $namen .= $neu_namen;
114
                            $werte .= $neu_werte;
115
                          }
116
                        }
117
                      }
118
                      else
119
                      {
120
                        $warn .= 'Schutzverletzung des Typs A beim Versuch, Daten in folgende nichtexistente Tabelle einzuf&uuml;gen:<br><code>'.my_htmlentities(base64_decode($t)).'</code><br><br>';
121
                      }
122
                      $sql = "INSERT INTO `".$mysql_zugangsdaten['praefix'].base64_decode($t)."` ($namen`user`) VALUES ($werte'".$benutzer['id']."')";
123
                      // Debug: echo my_htmlentities($sql).'<br><br>';
124
                      if (!db_query($sql))
125
                       $warn .= 'Fehler beim Ausf&uuml;hren des Befehls:<br><code>'.my_htmlentities($sql).'</code><br>MySQL gab folgende Fehlermeldung aus:<br><code>'.mysql_error().'</code><br><br>';
126
                    }
127
                  }
128
                  $m = $warn;
129
 
130
          echo $header;
131
          echo '<h1>Daten&uuml;bertragung</h1>';
132
          if ($m != '')
133
            echo '<b>Bei der Daten&uuml;bertragung sind einige Fehler aufgetreten. Sie sind hier aufgelistet.</b><br><br>'.$m;
134
          else
135
            echo '<b>Die Daten&uuml;bertragung wurde erfolgreich beendet!</b>';
136
          echo $footer;
137
      }
138
      else
139
      {
140
          echo "$headerBitte geben Sie eine Datei an!$footer";
141
      }
142
    }
143
  }
144
 
145
?>