reseller_edit.php 20.2 KB
Newer Older
tbrehm's avatar
tbrehm committed
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
<?php
/*
Copyright (c) 2005 - 2009, Till Brehm, projektfarm Gmbh
All rights reserved.

Redistribution and use in source and binary forms, with or without modification,
are permitted provided that the following conditions are met:

    * Redistributions of source code must retain the above copyright notice,
      this list of conditions and the following disclaimer.
    * Redistributions in binary form must reproduce the above copyright notice,
      this list of conditions and the following disclaimer in the documentation
      and/or other materials provided with the distribution.
    * Neither the name of ISPConfig nor the names of its contributors
      may be used to endorse or promote products derived from this software without
      specific prior written permission.

THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND
ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED
WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED.
IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT,
INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING,
BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY
OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING
NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE,
EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
*/


/******************************************
* Begin Form configuration
******************************************/

$tform_def_file = "form/reseller.tform.php";

/******************************************
* End Form configuration
******************************************/

41
42
require_once '../../lib/config.inc.php';
require_once '../../lib/app.inc.php';
tbrehm's avatar
tbrehm committed
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57

//* Check permissions for module
$app->auth->check_module_permissions('client');

if($_SESSION["s"]["user"]["typ"] != 'admin') die('Access only for administrators.');

// Loading classes
$app->uses('tpl,tform,tform_actions');
$app->load('tform_actions');

class page_action extends tform_actions {


	function onShowNew() {
		global $app, $conf;
58

tbrehm's avatar
tbrehm committed
59
60
		// we will check only users, not admins
		if($_SESSION["s"]["user"]["typ"] == 'user') {
61

tbrehm's avatar
tbrehm committed
62
			// Get the limits of the client
Till Brehm's avatar
Till Brehm committed
63
			$client_group_id = $app->functions->intval($_SESSION["s"]["user"]["default_group"]);
64
			$client = $app->db->queryOneRecord("SELECT limit_client FROM sys_group, client WHERE sys_group.client_id = client.client_id and sys_group.groupid = ?", $client_group_id);
65

tbrehm's avatar
tbrehm committed
66
67
			// Check if the user may add another website.
			if($client["limit_client"] >= 0) {
68
				$tmp = $app->db->queryOneRecord("SELECT count(client_id) as number FROM client WHERE sys_groupid = ?", $client_group_id);
tbrehm's avatar
tbrehm committed
69
70
71
72
73
				if($tmp["number"] >= $client["limit_client"]) {
					$app->error($app->tform->wordbook["limit_client_txt"]);
				}
			}
		}
74

tbrehm's avatar
tbrehm committed
75
76
		parent::onShowNew();
	}
77
78


tbrehm's avatar
tbrehm committed
79
80
	function onSubmit() {
		global $app, $conf;
81

tbrehm's avatar
tbrehm committed
82
83
		// we will check only users, not admins
		if($_SESSION["s"]["user"]["typ"] == 'user' && $this->id == 0) {
84

tbrehm's avatar
tbrehm committed
85
			// Get the limits of the client
Till Brehm's avatar
Till Brehm committed
86
			$client_group_id = $app->functions->intval($_SESSION["s"]["user"]["default_group"]);
87
			$client = $app->db->queryOneRecord("SELECT limit_client FROM sys_group, client WHERE sys_group.client_id = client.client_id and sys_group.groupid = ?", $client_group_id);
88

tbrehm's avatar
tbrehm committed
89
90
			// Check if the user may add another website.
			if($client["limit_client"] >= 0) {
91
				$tmp = $app->db->queryOneRecord("SELECT count(client_id) as number FROM client WHERE sys_groupid = ?", $client_group_id);
tbrehm's avatar
tbrehm committed
92
93
94
95
96
				if($tmp["number"] >= $client["limit_client"]) {
					$app->error($app->tform->wordbook["limit_client_txt"]);
				}
			}
		}
97
98
		
		if($this->id != 0) {
99
			$this->oldTemplatesAssigned = $app->db->queryAllRecords('SELECT * FROM `client_template_assigned` WHERE `client_id` = ?', $this->id);
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
			if(!is_array($this->oldTemplatesAssigned) || count($this->oldTemplatesAssigned) < 1) {
				// check previous type of storing templates
				$tpls = explode('/', $this->oldDataRecord['template_additional']);
				$this->oldTemplatesAssigned = array();
				foreach($tpls as $item) {
					$item = trim($item);
					if(!$item) continue;
					$this->oldTemplatesAssigned[] = array('assigned_template_id' => 0, 'client_template_id' => $item, 'client_id' => $this->id);
				}
				unset($tpls);
			}
		} else {
			$this->oldTemplatesAssigned = array();
		}

		$this->_template_additional = explode('/', $this->dataRecord['template_additional']);
		$this->dataRecord['template_additional'] = '';
117

tbrehm's avatar
tbrehm committed
118
119
120
121
122
123
124
125
		parent::onSubmit();
	}


	function onShowEnd() {

		global $app;

126
		$sql = "SELECT template_id,template_name FROM client_template WHERE template_type = 'a' ORDER BY template_name ASC";
tbrehm's avatar
tbrehm committed
127
128
129
		$tpls = $app->db->queryAllRecords($sql);
		$option = '';
		$tpl = array();
Till Brehm's avatar
Till Brehm committed
130
		$tpls = $app->functions->htmlentities($tpls);
tbrehm's avatar
tbrehm committed
131
132
133
134
		foreach($tpls as $item){
			$option .= '<option value="' . $item['template_id'] . '|' .  $item['template_name'] . '">' . $item['template_name'] . '</option>';
			$tpl[$item['template_id']] = $item['template_name'];
		}
135
136
137
		$app->tpl->setVar('tpl_add_select', $option);

		// check for new-style records
138
		$result = $app->db->queryAllRecords('SELECT assigned_template_id, client_template_id FROM client_template_assigned WHERE client_id = ?', $this->id);
139
140
		if($result && count($result) > 0) {
			// new style
141
			$items = array();
142
143
144
145
			$text = '';
			foreach($result as $item){
				if (trim($item['client_template_id']) != ''){
					if ($text != '') $text .= '';
146
					$text .= '<li rel="' . $item['assigned_template_id'] . '">' . $tpl[$item['client_template_id']];
147
					$text .= '&nbsp;<a href="#" class="btn btn-danger btn-xs"><span class="glyphicon glyphicon-remove-circle" aria-hidden="true"></a>';
148
149
150
151
					$tmp = new stdClass();
					$tmp->id = $item['assigned_template_id'];
					$tmp->data = '';
					$app->plugin->raiseEvent('get_client_template_details', $tmp);
Till Brehm's avatar
Till Brehm committed
152
					if($tmp->data != '') $text .= '<br /><em>' . $app->functions->htmlentities($tmp->data) . '</em>';
153
154
155

					$text .= '</li>';
					$items[] = $item['assigned_template_id'] . ':' . $item['client_template_id'];
156
157
				}
			}
158
159
160
161

			$tmprec = $app->tform->getHTML(array('template_additional' => implode('/', $items)), $this->active_tab, 'EDIT');
			$app->tpl->setVar('template_additional', $tmprec['template_additional']);
			unset($tmprec);
162
163
		} else {
			// old style
164
165
			$sql = "SELECT template_additional FROM client WHERE client_id = ?";
			$result = $app->db->queryOneRecord($sql, $this->id);
166
167
168
169
170
			$tplAdd = explode("/", $result['template_additional']);
			$text = '';
			foreach($tplAdd as $item){
				if (trim($item) != ''){
					if ($text != '') $text .= '';
171
					$text .= '<li>' . $tpl[$item]. '&nbsp;<a href="#" class="btn btn-danger btn-xs"><span class="glyphicon glyphicon-remove-circle" aria-hidden="true"></a></li>';
172
173
174
				}
			}
		}
tbrehm's avatar
tbrehm committed
175
176

		$app->tpl->setVar('template_additional_list', $text);
177
		$app->tpl->setVar('app_module', 'client');
178
179
180
181
182
183
184
185
186
187
188
189
190
191
		
		//* Set the 'customer no' default value
		if($this->id == 0) {
			//* get the system config
			$app->uses('getconf');
			$system_config = $app->getconf->get_global_config();
			if($system_config['misc']['customer_no_template'] != '') {
				
				//* Set customer no default
				$customer_no = $app->functions->intval($system_config['misc']['customer_no_start']+$system_config['misc']['customer_no_counter']);
				$customer_no_string = str_replace('[CUSTOMER_NO]',$customer_no,$system_config['misc']['customer_no_template']);
				$app->tpl->setVar('customer_no',$customer_no_string);
			}
		}
192
		
tbrehm's avatar
tbrehm committed
193
194
195
196
197
198
199
200
201
		parent::onShowEnd();

	}

	/*
	 This function is called automatically right after
	 the data was successful inserted in the database.
	*/
	function onAfterInsert() {
202
		global $app, $conf;
203
204
205
		
		$app->uses('auth');
		
tbrehm's avatar
tbrehm committed
206
		// Create the group for the reseller
207
		$groupid = $app->db->datalogInsert('sys_group', array("name" => $this->dataRecord["username"], "description" => '', "client_id" => $this->id), 'groupid');
tbrehm's avatar
tbrehm committed
208
		$groups = $groupid;
209

210
211
212
		$username = $this->dataRecord["username"];
		$password = $this->dataRecord["password"];
		$modules = $conf['interface_modules_enabled'] . ',client';
213
		$startmodule = (stristr($modules, 'dashboard'))?'dashboard':'client';
214
		$usertheme = $this->dataRecord["usertheme"];
tbrehm's avatar
tbrehm committed
215
216
		$type = 'user';
		$active = 1;
217
		$language = $this->dataRecord["language"];
218

219
220
		$password = $app->auth->crypt_password(stripslashes($password));
		
tbrehm's avatar
tbrehm committed
221
		// Create the controlpaneluser for the reseller
222
		$sql = "INSERT INTO sys_user (`username`,`passwort`,`modules`,`startmodule`,`app_theme`,`typ`, `active`,`language`,`groups`,`default_group`,`client_id`)
223
224
		VALUES (?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?)";
		$app->db->query($sql, $username, $password, $modules, $startmodule, $usertheme, $type, $active, $language, $groups, $groupid, $this->id);
225

tbrehm's avatar
tbrehm committed
226
		//* set the number of clients to 1
227
		$app->db->query("UPDATE client SET limit_client = 1 WHERE client_id = ?", $this->id);
228

229
230
		//* Set the default servers
		$tmp = $app->db->queryOneRecord('SELECT server_id FROM server WHERE mail_server = 1 LIMIT 0,1');
231
		$default_mailserver = $app->functions->intval($tmp['server_id']);
232
		$tmp = $app->db->queryOneRecord('SELECT server_id FROM server WHERE web_server = 1 LIMIT 0,1');
233
		$default_webserver = $app->functions->intval($tmp['server_id']);
234
		$tmp = $app->db->queryOneRecord('SELECT server_id FROM server WHERE dns_server = 1 LIMIT 0,1');
235
		$default_dnsserver = $app->functions->intval($tmp['server_id']);
236
		$tmp = $app->db->queryOneRecord('SELECT server_id FROM server WHERE db_server = 1 LIMIT 0,1');
237
		$default_dbserver = $app->functions->intval($tmp['server_id']);
238

239
240
		$sql = "UPDATE client SET default_mailserver = ?, default_webserver = ?, default_dnsserver = ?, default_slave_dnsserver = ?, default_dbserver = ? WHERE client_id = ?";
		$app->db->query($sql, $default_mailserver, $default_webserver, $default_dnsserver, $default_dnsserver, $default_dbserver, $this->id);
241
		
242
243
244
245
246
		if(isset($this->dataRecord['template_master'])) {
			$app->uses('client_templates');
			$app->client_templates->update_client_templates($this->id, $this->_template_additional);
		}
		
247
248
249
250
251
252
253
254
255
		if($this->dataRecord['customer_no'] == $this->dataRecord['customer_no_org']) {
			//* get the system config
			$app->uses('getconf');
			$system_config = $app->getconf->get_global_config();
			if($system_config['misc']['customer_no_template'] != '') {
				
				//* save new counter value
				$system_config['misc']['customer_no_counter']++;
				$system_config_str = $app->ini_parser->get_ini_string($system_config);
256
				$app->db->datalogUpdate('sys_ini', array("config" => $system_config_str), 'sysini_id', 1);
257
258
259
				
			}
		}
260
261
262
		
		//* Send welcome email
		$client_group_id = $app->functions->intval($_SESSION["s"]["user"]["default_group"]);
263
264
		$sql = "SELECT * FROM client_message_template WHERE template_type = 'welcome' AND sys_groupid = ?";
		$email_template = $app->db->queryOneRecord($sql, $client_group_id);
265
266
267
268
269
270
271
272
273
274
275
276
277
278
279
280
281
282
283
284
285
286
287
288
289
290
291
292
293
		$client = $app->tform->getDataRecord($this->id);

		if(is_array($email_template) && $client['email'] != '') {
			//* Parse client details into message
			$message = $email_template['message'];
			$subject = $email_template['subject'];
			foreach($client as $key => $val) {
				switch ($key) {
				case 'password':
					$message = str_replace('{password}', $this->dataRecord['password'], $message);
					$subject = str_replace('{password}', $this->dataRecord['password'], $subject);
					break;
				case 'gender':
					$message = str_replace('{salutation}', $wb['gender_'.$val.'_txt'], $message);
					$subject = str_replace('{salutation}', $wb['gender_'.$val.'_txt'], $subject);
					break;
				default:
					$message = str_replace('{'.$key.'}', $val, $message);
					$subject = str_replace('{'.$key.'}', $val, $subject);
				}
			}
			
			//* Get sender address
			if($app->auth->is_admin()) {
				$app->uses('getconf');
				$system_config = $app->getconf->get_global_config();
				$from = $system_config['admin_mail'];
			} else {
				$client_group_id = $app->functions->intval($_SESSION["s"]["user"]["default_group"]);
294
				$reseller = $app->db->queryOneRecord("SELECT client.email FROM sys_group,client WHERE client.client_id = sys_group.client_id and sys_group.groupid = ?", $client_group_id);
295
296
297
298
299
300
				$from = $reseller["email"];
			}

			//* Send the email
			$app->functions->mail($client['email'], $subject, $message, $from);
		}
tbrehm's avatar
tbrehm committed
301
302
303

		parent::onAfterInsert();
	}
304
305


tbrehm's avatar
tbrehm committed
306
307
308
309
310
	/*
	 This function is called automatically right after
	 the data was successful updated in the database.
	*/
	function onAfterUpdate() {
311
		global $app, $conf;
312

313
314
		$app->uses('auth');
		
tbrehm's avatar
tbrehm committed
315
		// username changed
316
		if(isset($conf['demo_mode']) && $conf['demo_mode'] != true && isset($this->dataRecord['username']) && $this->dataRecord['username'] != '' && $this->oldDataRecord['username'] != $this->dataRecord['username']) {
317
			$username = $this->dataRecord["username"];
tbrehm's avatar
tbrehm committed
318
			$client_id = $this->id;
319
320
			$sql = "UPDATE sys_user SET username = ? WHERE client_id = ?";
			$app->db->query($sql, $username, $client_id);
321

322
323
			$tmp = $app->db->queryOneRecord("SELECT * FROM sys_group WHERE client_id = ?", $client_id);
			$app->db->datalogUpdate("sys_group", array("name" => $username), 'groupid', $tmp['groupid']);
tbrehm's avatar
tbrehm committed
324
325
			unset($tmp);
		}
326

tbrehm's avatar
tbrehm committed
327
		// password changed
328
		if(isset($conf['demo_mode']) && $conf['demo_mode'] != true && isset($this->dataRecord["password"]) && $this->dataRecord["password"] != '') {
329
			$password = $this->dataRecord["password"];
tbrehm's avatar
tbrehm committed
330
			$client_id = $this->id;
331
332
			
			$password = $app->auth->crypt_password(stripslashes($password));
333
334
			$sql = "UPDATE sys_user SET passwort = ? WHERE client_id = ?";
			$app->db->query($sql, $password, $client_id);
tbrehm's avatar
tbrehm committed
335
		}
336

337
		// language changed
338
		if(isset($conf['demo_mode']) && $conf['demo_mode'] != true && isset($this->dataRecord['language']) && $this->dataRecord['language'] != '' && $this->oldDataRecord['language'] != $this->dataRecord['language']) {
339
			$language = $this->dataRecord["language"];
340
			$client_id = $this->id;
341
342
			$sql = "UPDATE sys_user SET language = ? WHERE client_id = ?";
			$app->db->query($sql, $language, $client_id);
343
		}
344

tbrehm's avatar
tbrehm committed
345
		// ensure that a reseller is not converted to a client in demo mode when client_id <= 2
346
		if(isset($conf['demo_mode']) && $conf['demo_mode'] == true && $this->id <= 2) {
tbrehm's avatar
tbrehm committed
347
			if(isset($this->dataRecord["limit_client"]) && $this->dataRecord["limit_client"] != -1) {
348
				$app->db->query('UPDATE client set limit_client = -1 WHERE client_id = ?', $this->id);
tbrehm's avatar
tbrehm committed
349
350
			}
		}
351

tbrehm's avatar
tbrehm committed
352
353
		// reseller status changed
		if(isset($this->dataRecord["limit_client"]) && $this->dataRecord["limit_client"] != $this->oldDataRecord["limit_client"]) {
354
355
			$modules = $conf['interface_modules_enabled'] . ',client';
			$modules = $modules;
tbrehm's avatar
tbrehm committed
356
			$client_id = $this->id;
357
358
			$sql = "UPDATE sys_user SET modules = ? WHERE client_id = ?";
			$app->db->query($sql, $modules, $client_id);
tbrehm's avatar
tbrehm committed
359
		}
360
361
362
363
364
		
		if(isset($this->dataRecord['template_master'])) {
			$app->uses('client_templates');
			$app->client_templates->update_client_templates($this->id, $this->_template_additional);
		}
365
366
367
368
369
370
371
372
373
374
375
376
377
378
379
380
381
382
383
384
385
386
387
388
389
390
391
392
393
394
395
396
397
398
399
400
401
402
403
404
405
406
407
408
409
410
411
412
413
414
415
416
417
418
419
420
421
422
423
424
425
426
427
428
429
430
431
432
433
434
435
436
437
438
439
440
441
442
443
444
445
446
447
448
449
450
451
452
453
454
455
456
457
458
459
460
461
462
463
464
465
466
467
468
469
470
471
472
473
474
475
476
477
478
479
480
481
482
		
		if(!isset($this->dataRecord['locked'])) $this->dataRecord['locked'] = 'n';
		if(isset($conf['demo_mode']) && $conf['demo_mode'] != true && $this->dataRecord["locked"] != $this->oldDataRecord['locked']) {
			/** lock all the things like web, mail etc. - easy to extend */


			// get tmp_data of client
			$client_data = $app->db->queryOneRecord('SELECT `tmp_data` FROM `client` WHERE `client_id` = ?', $this->id);

			if($client_data['tmp_data'] == '') $tmp_data = array();
			else $tmp_data = unserialize($client_data['tmp_data']);

			if(!is_array($tmp_data)) $tmp_data = array();

			// database tables with their primary key columns
			$to_disable = array('cron' => 'id',
				'ftp_user' => 'ftp_user_id',
				'mail_domain' => 'domain_id',
				'mail_user' => 'mailuser_id',
				'mail_user_smtp' => 'mailuser_id',
				'mail_forwarding' => 'forwarding_id',
				'mail_get' => 'mailget_id',
				'openvz_vm' => 'vm_id',
				'shell_user' => 'shell_user_id',
				'webdav_user' => 'webdav_user_id',
				'web_database' => 'database_id',
				'web_domain' => 'domain_id',
				'web_folder' => 'web_folder_id',
				'web_folder_user' => 'web_folder_user_id'
			);

			$udata = $app->db->queryOneRecord('SELECT `userid` FROM `sys_user` WHERE `client_id` = ?', $this->id);
			$gdata = $app->db->queryOneRecord('SELECT `groupid` FROM `sys_group` WHERE `client_id` = ?', $this->id);
			$sys_groupid = $gdata['groupid'];
			$sys_userid = $udata['userid'];

			$entries = array();
			if($this->dataRecord['locked'] == 'y') {
				$prev_active = array();
				$prev_sysuser = array();
				foreach($to_disable as $current => $keycolumn) {
					$active_col = 'active';
					$reverse = false;
					if($current == 'mail_user') {
						$active_col = 'postfix';
					} elseif($current == 'mail_user_smtp') {
						$current = 'mail_user';
						$active_col = 'disablesmtp';
						$reverse = true;
					}
					
					if(!isset($prev_active[$current])) $prev_active[$current] = array();
					if(!isset($prev_sysuser[$current])) $prev_sysuser[$current] = array();

					$entries = $app->db->queryAllRecords('SELECT ?? as `id`, `sys_userid`, ?? FROM ?? WHERE `sys_groupid` = ?', $keycolumn, $active_col, $current, $sys_groupid);
					foreach($entries as $item) {

						if($item[$active_col] != 'y' && $reverse == false) $prev_active[$current][$item['id']][$active_col] = 'n';
						elseif($item[$active_col] == 'y' && $reverse == true) $prev_active[$current][$item['id']][$active_col] = 'y';
						if($item['sys_userid'] != $sys_userid) $prev_sysuser[$current][$item['id']] = $item['sys_userid'];
						// we don't have to store these if y, as everything without previous state gets enabled later

						$app->db->datalogUpdate($current, array($active_col => ($reverse == true ? 'y' : 'n'), 'sys_userid' => $_SESSION["s"]["user"]["userid"]), $keycolumn, $item['id']);
					}
				}

				$tmp_data['prev_active'] = $prev_active;
				$tmp_data['prev_sys_userid'] = $prev_sysuser;
				$app->db->query("UPDATE `client` SET `tmp_data` = ? WHERE `client_id` = ?", serialize($tmp_data), $this->id);
				unset($prev_active);
				unset($prev_sysuser);
			} elseif($this->dataRecord['locked'] == 'n') {
				foreach($to_disable as $current => $keycolumn) {
					$active_col = 'active';
					$reverse = false;
					if($current == 'mail_user') {
						$active_col = 'postfix';
					} elseif($current == 'mail_user_smtp') {
						$current = 'mail_user';
						$active_col = 'disablesmtp';
						$reverse = true;
					}
					
					$entries = $app->db->queryAllRecords('SELECT ?? as `id` FROM ?? WHERE `sys_groupid` = ?', $keycolumn, $current, $sys_groupid);
					foreach($entries as $item) {
						$set_active = ($reverse == true ? 'n' : 'y');
						$set_inactive = ($reverse == true ? 'y' : 'n');
						$set_sysuser = $sys_userid;
						if(array_key_exists('prev_active', $tmp_data) == true
							&& array_key_exists($current, $tmp_data['prev_active']) == true
							&& array_key_exists($item['id'], $tmp_data['prev_active'][$current]) == true
							&& $tmp_data['prev_active'][$current][$item['id']][$active_col] == $set_inactive) $set_active = $set_inactive;
						if(array_key_exists('prev_sysuser', $tmp_data) == true
							&& array_key_exists($current, $tmp_data['prev_sysuser']) == true
							&& array_key_exists($item['id'], $tmp_data['prev_sysuser'][$current]) == true
							&& $tmp_data['prev_sysuser'][$current][$item['id']] != $sys_userid) $set_sysuser = $tmp_data['prev_sysuser'][$current][$item['id']];

						$app->db->datalogUpdate($current, array($active_col => $set_active, 'sys_userid' => $set_sysuser), $keycolumn, $item['id']);
					}
				}
				if(array_key_exists('prev_active', $tmp_data)) unset($tmp_data['prev_active']);
				$app->db->query("UPDATE `client` SET `tmp_data` = ? WHERE `client_id` = ?", serialize($tmp_data), $this->id);
			}
			unset($tmp_data);
			unset($entries);
			unset($to_disable);
		}
		
		if(!isset($this->dataRecord['canceled'])) $this->dataRecord['canceled'] = 'n';
		if(isset($conf['demo_mode']) && $conf['demo_mode'] != true && $this->dataRecord["canceled"] != $this->oldDataRecord['canceled']) {
			if($this->dataRecord['canceled'] == 'y') {
				$sql = "UPDATE sys_user SET active = '0' WHERE client_id = ?";
				$app->db->query($sql, $this->id);
			} elseif($this->dataRecord['canceled'] == 'n') {
				$sql = "UPDATE sys_user SET active = '1' WHERE client_id = ?";
				$app->db->query($sql, $this->id);
			}
		}
tbrehm's avatar
tbrehm committed
483
484
485

		parent::onAfterUpdate();
	}
486

tbrehm's avatar
tbrehm committed
487
488
489
490
491
}

$page = new page_action;
$page->onLoad();

492
?>