Speichern der Änderungen möglich
Bernd Wurst

Bernd Wurst commited on 2018-01-24 10:34:58
Zeige 2 geänderte Dateien mit 83 Einfügungen und 9 Löschungen.

... ...
@@ -76,6 +76,16 @@ function get_contacts() {
76 76
     return $ret;
77 77
 }
78 78
 
79
+function have_mailaddress($email) 
80
+{
81
+    $cid = (int) $_SESSION['customerinfo']['customerno'];
82
+    $result = db_query("SELECT id FROM kundendaten.contacts WHERE customer=? AND email=?", array($cid, $email));
83
+    if ($result->rowCount() > 0) {
84
+        return true;
85
+    }
86
+    return false;
87
+}
88
+
79 89
 
80 90
 function get_kundenkontakte() {
81 91
     $cid = (int) $_SESSION['customerinfo']['customerno'];
... ...
@@ -87,6 +97,65 @@ function get_kundenkontakte() {
87 97
     return $ret;
88 98
 }
89 99
 
100
+function save_emailaddress($id, $email) 
101
+{
102
+    // FIXME
103
+}
104
+
105
+function save_contact($c)
106
+{
107
+    for ($i=0;array_key_exists($i, $c);$i++) {
108
+        unset($c[$i]);
109
+    }
110
+    unset($c['state']);
111
+    unset($c['lastchange']);
112
+    unset($c['nic_id']);
113
+    unset($c['nic_handle']);
114
+    unset($c['email']);
115
+    $c['customer'] = (int) $_SESSION['customerinfo']['customerno'];
116
+    if ($c['id']) {
117
+        // Kontakt bestaht schon, Update
118
+        db_query("UPDATE kundendaten.contacts SET company=:company, name=:name, address=:address, zip=:zip, city=:city, country=:country, phone=:phone, mobile=:mobile, fax=:fax, pgp_id=:pgp_id, pgp_key=:pgp_key WHERE id=:id AND customer=:customer", $c);
119
+    } else {
120
+        unset($c['id']);
121
+        // Neu anlegen
122
+        db_query("INSERT INTO kundendaten.contacts (customer, company, name, address, zip, city, country, phone, mobile, fax, pgp_id, pgp_key) VALUES (:customer, :company, :name, :address, :zip, :city, :country, :phone, :mobile, :fax, :pgp_id, :pgp_key)", $c);
123
+        $c['id'] = db_insert_id();
124
+    }
125
+    return $c['id'];
126
+}
127
+
128
+
129
+function send_emailchange_token($id, $email)
130
+{
131
+    if (! check_emailaddr($email)) {
132
+        system_falure("Die E-Mail-Adresse scheint nicht gültig zu sein.");
133
+    }
134
+    $args = array("id" => (int) $id,
135
+        "email" => $email,
136
+        "token" => random_string(20));
137
+
138
+    db_query("INSERT INTO kundendaten.mailaddress_token (token, expire, contact, email) VALUES (:token, NOW() + INTERVAL 1 DAY, :id, :email)" , $args);
139
+    DEBUG('Token erzeugt: '.print_r($args, true));
140
+    $message = 'Diese E-Mail-Adresse wurde angegeben als möglicher Domaininhaber oder Kundenkontakt bei schokokeks.org Hosting.
141
+
142
+Bitte bestätigen Sie mit einem Klick auf den nachfolgenden Link, dass diese E-Mail-Adresse funktioniert und verwendet werden soll:
143
+
144
+    '.config('webinterface_url').'/verify'.$args['token'].'
145
+
146
+Wenn Sie diesen Link nicht innerhalb von 24 Stunden abrufen, wird Ihre Adresse gelöscht und nicht verwendet.
147
+Sollten Sie mit der Verwendung Ihrer E-Mail-Adresse nicht einverstanden sein, so ignorieren Sie daher bitte diese Nachricht oder teilen Sie uns dies mit.
148
+
149
+-- 
150
+schokokeks.org GbR, Bernd Wurst, Johannes Böck
151
+Köchersberg 32, 71540 Murrhardt
152
+
153
+https://schokokeks.org
154
+';
155
+    # send welcome message
156
+    mail($email, '=?UTF-8?Q?Best=C3=A4tigung_Ihrer_E-Mail-Adresse?=', $message, "X-schokokeks-org-message: verify\nFrom: ".config('company_name').' <'.config('adminmail').">\nMIME-Version: 1.0\nContent-Type: text/plain; charset=UTF-8\n");
157
+ 
158
+}
90 159
 
91 160
 function update_pending($contactid) {
92 161
     $contactid = (int) $contactid;
... ...
@@ -57,17 +57,22 @@ $c['fax'] = maybe_null($_REQUEST['telefax']);
57 57
 
58 58
 // FIXME: PGP-ID/Key fehlen
59 59
 
60
+// Zuerst Kontakt speichern und wenn eine Änderung der E-Mail gewünscht war,
61
+// dann hinterher das Token erzeugen und senden. Weil wir für das Token die 
62
+// Contact-ID brauchen und die bekommen wir bei einer Neueintragung erst nach 
63
+// dem Speichern.
60 64
 
61
-if ($c['email'] != $_REQUEST['email']) {
65
+$id = save_contact($c);
66
+$c['id'] = $id;
62 67
 
68
+if ($c['email'] != $_REQUEST['email']) {
69
+    if (have_mailaddress($_REQUEST['email'])) {
70
+        save_emailaddress($c['id'], $_REQUEST['email']);
71
+    } else {
72
+        send_emailchange_token($c['id'], $_REQUEST['email']);
73
+    }
63 74
 }
64
-
65
-// e-mail-Adresse geändert?
66
-// -> token generieren / senden
67
-// ...
68
-// speichern
69
-
70
-
71
-
72 75
 
73 76
 
77
+if (! $debugmode)
78
+    header("Location: list");
74 79