client_edit.php 22.8 KB
Newer Older
1
2
<?php
/*
tbrehm's avatar
tbrehm committed
3
Copyright (c) 2005 - 2012, Till Brehm, projektfarm Gmbh, ISPConfig UG
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
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/client.tform.php";

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

41
42
require_once '../../lib/config.inc.php';
require_once '../../lib/app.inc.php';
43
44
45
46
47
48
49
50
51

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

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

class page_action extends tform_actions {
52
53
	var $_template_additional = array();

54
55
	function onShowNew() {
		global $app, $conf;
56

57
58
		// we will check only users, not admins
		if($_SESSION["s"]["user"]["typ"] == 'user') {
59

60
			// Get the limits of the client
Till Brehm's avatar
Till Brehm committed
61
			$client_group_id = $app->functions->intval($_SESSION["s"]["user"]["default_group"]);
62
			$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);
63

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

73
74
		parent::onShowNew();
	}
75
76


77
78
	function onSubmit() {
		global $app, $conf;
79

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

83
84
			// Get the limits of the client
			$client_group_id = $_SESSION["s"]["user"]["default_group"];
85
			$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);
86

87
88
			// Check if the user may add another website.
			if($client["limit_client"] >= 0) {
89
				$tmp = $app->db->queryOneRecord("SELECT count(client_id) as number FROM client WHERE sys_groupid = ?", $client_group_id);
90
91
92
93
94
				if($tmp["number"] >= $client["limit_client"]) {
					$app->error($app->tform->wordbook["limit_client_txt"]);
				}
			}
		}
95

96
97
98
		//* Resellers shall not be able to create another reseller
		if($_SESSION["s"]["user"]["typ"] == 'user') {
			$this->dataRecord['limit_client'] = 0;
99
100
		} else {
			if($this->dataRecord["reseller"]) {
Sergio's avatar
Sergio committed
101
				$this->dataRecord["limit_client"] = 1; // allow 1 client, template limits will be applied later, if we set -1 it would override template limits
102
			}
103
		}
104
105

		if($this->id != 0) {
106
			$this->oldTemplatesAssigned = $app->db->queryAllRecords('SELECT * FROM `client_template_assigned` WHERE `client_id` = ?', $this->id);
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
			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'] = '';

		parent::onSubmit();
126
127
128
129
130
131
	}

	function onShowEnd() {

		global $app;

132
		$sql = "SELECT template_id,template_name FROM client_template WHERE template_type = 'a' and ".$app->tform->getAuthSQL('r')." ORDER BY template_name ASC";
133
134
135
		$tpls = $app->db->queryAllRecords($sql);
		$option = '';
		$tpl = array();
Till Brehm's avatar
Till Brehm committed
136
		$tpls = $app->functions->htmlentities($tpls);
137
138
139
140
		foreach($tpls as $item){
			$option .= '<option value="' . $item['template_id'] . '|' .  $item['template_name'] . '">' . $item['template_name'] . '</option>';
			$tpl[$item['template_id']] = $item['template_name'];
		}
141
142
143
		$app->tpl->setVar('tpl_add_select', $option);

		// check for new-style records
144
		$result = $app->db->queryAllRecords('SELECT assigned_template_id, client_template_id FROM client_template_assigned WHERE client_id = ?', $this->id);
145
146
147
148
149
150
151
152
		if($result && count($result) > 0) {
			// new style
			$items = array();
			$text = '';
			foreach($result as $item){
				if (trim($item['client_template_id']) != ''){
					if ($text != '') $text .= '';
					$text .= '<li rel="' . $item['assigned_template_id'] . '">' . $tpl[$item['client_template_id']];
153
					$text .= '&nbsp;<a href="#" class="btn btn-danger btn-xs"><span class="glyphicon glyphicon-remove-circle" aria-hidden="true"></a>';
154
155
156
157
					$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
158
					if($tmp->data != '') $text .= '<br /><em>' . $app->functions->htmlentities($tmp->data) . '</em>';
159
160
161
162
163
164
165
166
167
168
169

					$text .= '</li>';
					$items[] = $item['assigned_template_id'] . ':' . $item['client_template_id'];
				}
			}

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

		$app->tpl->setVar('template_additional_list', $text);
183
		$app->tpl->setVar('app_module', 'client');
184
185
186
187
188
189
190
191
192

		// Check wether per domain relaying is enabled or not
		$global_config = $app->getconf->get_global_config('mail');
		if($global_config['show_per_domain_relay_options'] == 'y') {
			$app->tpl->setVar("show_per_domain_relay_options", 1);
		} else {
			$app->tpl->setVar("show_per_domain_relay_options", 0);
		}

193

194
195
		//* Set the 'customer no' default value
		if($this->id == 0) {
196

197
198
199
200
201
202
			if($app->auth->is_admin()) {
				//* Logged in User is admin
				//* get the system config
				$app->uses('getconf');
				$system_config = $app->getconf->get_global_config();
				if($system_config['misc']['customer_no_template'] != '') {
203

204
205
206
207
208
209
210
211
212
					//* 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);
				}
			} else {
				//* Logged in user must be a reseller
				//* get the record of the reseller
				$client_group_id = $app->functions->intval($_SESSION["s"]["user"]["default_group"]);
213
				$reseller = $app->db->queryOneRecord("SELECT client.client_id, client.customer_no_template, client.customer_no_counter, client.customer_no_start FROM sys_group,client WHERE client.client_id = sys_group.client_id and sys_group.groupid = ?", $client_group_id);
214

215
				if($reseller['customer_no_template'] != '') {
Florian Schaal's avatar
Florian Schaal committed
216
217
218
219
220
221
					if(isset($this->dataRecord['customer_no'])&& $this->dataRecord['customer_no']!='') $customer_no_string = $this->dataRecord['customer_no'];
					else {
						//* Set customer no default
						$customer_no = $app->functions->intval($reseller['customer_no_start']+$reseller['customer_no_counter']);
						$customer_no_string = str_replace(array('[CUSTOMER_NO]','[CLIENTID]'),array($customer_no, $reseller['client_id']),$reseller['customer_no_template']);
					}
222
223
224
225
					$app->tpl->setVar('customer_no',$customer_no_string);
				}
			}
		}
226

227
228
		if($app->auth->is_admin()) {
			// Fill the client select field
229
			$sql = "SELECT client.client_id, sys_group.groupid, sys_group.name, CONCAT(IF(client.company_name != '', CONCAT(client.company_name, ' :: '), ''), client.contact_name, ' (', client.username, IF(client.customer_no != '', CONCAT(', ', client.customer_no), ''), ')') as contactname FROM sys_group, client WHERE sys_group.client_id = client.client_id AND sys_group.client_id > 0 AND client.limit_client != 0 ORDER BY client.company_name, client.contact_name, sys_group.name";
230
			$clients = $app->db->queryAllRecords($sql);
Till Brehm's avatar
Till Brehm committed
231
			$clients = $app->functions->htmlentities($clients);
232
233
234
235
236
237
238
239
240
			$client_select = "<option value='0'>- ".$app->tform->lng('none_txt')." -</option>";
			//$tmp_data_record = $app->tform->getDataRecord($this->id);
			if(is_array($clients)) {
				$selected_client_id = 0; // needed to get list of PHP versions
				foreach($clients as $client) {
					if(is_array($this->dataRecord) && ($client["client_id"] == $this->dataRecord['parent_client_id']) && !$selected_client_id) $selected_client_id = $client["client_id"];
					$selected = @(is_array($this->dataRecord) && ($client["client_id"] == $this->dataRecord['parent_client_id']))?'SELECTED':'';
					if($selected == 'SELECTED') $selected_client_id = $client["client_id"];
					$client_select .= "<option value='$client[client_id]' $selected>$client[contactname]</option>\r\n";
241
242
				}
			}
243
			$app->tpl->setVar("parent_client_id", $client_select);
244
		}
245

246
247
248
		parent::onShowEnd();

	}
249

250
251
252
253
254
	/*
	 This function is called automatically right after
	 the data was successful inserted in the database.
	*/
	function onAfterInsert() {
255
		global $app, $conf;
256
		// Create the group for the client
257
		$groupid = $app->db->datalogInsert('sys_group', array("name" => $this->dataRecord["username"], "description" => '', "client_id" => $this->id), 'groupid');
258
		$groups = $groupid;
259

260
261
		$username = $this->dataRecord["username"];
		$password = $this->dataRecord["password"];
262
		$modules = $conf['interface_modules_enabled'];
xaver's avatar
xaver committed
263
		if(isset($this->dataRecord["limit_client"]) && $this->dataRecord["limit_client"] > 0) $modules .= ',client';
264
		$startmodule = (stristr($modules, 'dashboard'))?'dashboard':'client';
Marius Cramer's avatar
Marius Cramer committed
265
		$usertheme = (isset($this->dataRecord["usertheme"]) && $this->dataRecord["usertheme"] != ''? $this->dataRecord["usertheme"] : 'default');
266
267
		$type = 'user';
		$active = 1;
268
		$language = $this->dataRecord["language"];
269
		$password = $app->auth->crypt_password($password);
270

271
		// Create the controlpaneluser for the client
272
		//Generate ssh-rsa-keys
273
274
		$app->uses('functions');
		$app->functions->generate_ssh_key($this->id, $username);
275

276
		// Create the controlpaneluser for the client
277
		$sql = "INSERT INTO sys_user (`username`,`passwort`,`modules`,`startmodule`,`app_theme`,`typ`,`active`,`language`,`groups`,`default_group`,`client_id`)
278
279
		VALUES (?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?)";
		$app->db->query($sql, $username, $password, $modules, $startmodule, $usertheme, $type, $active, $language, $groups, $groupid, $this->id);
280
281

		//* If the user who inserted the client is a reseller (not admin), we will have to add this new client group
282
283
		//* to his groups, so he can administrate the records of this client.
		if($_SESSION['s']['user']['typ'] == 'user') {
284
			$app->auth->add_group_to_user($_SESSION['s']['user']['userid'], $groupid);
285
			$app->db->query("UPDATE client SET parent_client_id = ? WHERE client_id = ?", $_SESSION['s']['user']['client_id'], $this->id);
286
287
288
		} else {
			if($this->dataRecord['parent_client_id'] > 0) {
				//* get userid of the reseller and add it to the group of the client
289
				$tmp = $app->db->queryOneRecord("SELECT sys_user.userid FROM sys_user,sys_group WHERE sys_user.default_group = sys_group.groupid AND sys_group.client_id = ?", $this->dataRecord['parent_client_id']);
290
				$app->auth->add_group_to_user($tmp['userid'], $groupid);
291
				$app->db->query("UPDATE client SET parent_client_id = ? WHERE client_id = ?", $this->dataRecord['parent_client_id'], $this->id);
292
293
				unset($tmp);
			}
294
		}
295

296
		//* Set the default servers
297
298
299
300
301
302
303
304
305
306
307
308
309
310
311
312
313
314
315
316
317
318
319
		$tmp = $app->getconf->get_global_config('mail');
		$default_mailserver = $app->functions->intval($tmp['default_mailserver']);
		if (!$default_mailserver) {
			$tmp = $app->db->queryOneRecord('SELECT server_id FROM server WHERE mail_server = 1 AND mirror_server_id = 0 LIMIT 0,1');
			$default_mailserver = $app->functions->intval($tmp['server_id']);
		}
		$tmp = $app->getconf->get_global_config('sites');
		$default_webserver = $app->functions->intval($tmp['default_webserver']);
		$default_dbserver = $app->functions->intval($tmp['default_dbserver']);
		if (!$default_webserver) {
			$tmp = $app->db->queryOneRecord('SELECT server_id FROM server WHERE web_server = 1 AND mirror_server_id = 0 LIMIT 0,1');
			$default_webserver = $app->functions->intval($tmp['server_id']);
		}
		if (!$default_dbserver) {
			$tmp = $app->db->queryOneRecord('SELECT server_id FROM server WHERE db_server = 1 AND mirror_server_id = 0 LIMIT 0,1');
			$default_dbserver = $app->functions->intval($tmp['server_id']);
		}
		$tmp = $app->getconf->get_global_config('dns');
		$default_dnsserver = $app->functions->intval($tmp['default_dnsserver']);
		if (!$default_dnsserver) {
			$tmp = $app->db->queryOneRecord('SELECT server_id FROM server WHERE dns_server = 1 AND mirror_server_id = 0 LIMIT 0,1');
			$default_dnsserver = $app->functions->intval($tmp['server_id']);
		}
320

321
322
		$sql = "UPDATE client SET mail_servers = ?, web_servers = ?, dns_servers = ?, default_slave_dnsserver = ?, db_servers = ? WHERE client_id = ?";
		$app->db->query($sql, $default_mailserver, $default_webserver, $default_dnsserver, $default_dnsserver, $default_dbserver, $this->id);
323
324
325
326
327

		if(isset($this->dataRecord['template_master'])) {
			$app->uses('client_templates');
			$app->client_templates->update_client_templates($this->id, $this->_template_additional);
		}
328

329
330
331
332
333
334
335
		if($this->dataRecord['customer_no'] == $this->dataRecord['customer_no_org']) {
			if($app->auth->is_admin()) {
				//* Logged in User is admin
				//* get the system config
				$app->uses('getconf');
				$system_config = $app->getconf->get_global_config();
				if($system_config['misc']['customer_no_template'] != '') {
336

337
338
339
					//* save new counter value
					$system_config['misc']['customer_no_counter']++;
					$system_config_str = $app->ini_parser->get_ini_string($system_config);
340
					$app->db->datalogUpdate('sys_ini', array("config" => $system_config_str), 'sysini_id', 1);
341
342
343
344
345
				}
			} else {
				//* Logged in user must be a reseller
				//* get the record of the reseller
				$client_group_id = $app->functions->intval($_SESSION["s"]["user"]["default_group"]);
346
				$reseller = $app->db->queryOneRecord("SELECT client.client_id, client.customer_no_template, client.customer_no_counter, client.customer_no_start FROM sys_group,client WHERE client.client_id = sys_group.client_id and sys_group.groupid = ?", $client_group_id);
347

348
349
350
				if($reseller['customer_no_template'] != '') {
					//* save new counter value
					$customer_no_counter = $app->functions->intval($reseller['customer_no_counter']+1);
351
					$app->db->query("UPDATE client SET customer_no_counter = ? WHERE client_id = ?", $customer_no_counter, $reseller['client_id']);
352
353
354
				}
			}
		}
355

356
357
		//* Send welcome email
		$client_group_id = $app->functions->intval($_SESSION["s"]["user"]["default_group"]);
358
359
		$sql = "SELECT * FROM client_message_template WHERE template_type = 'welcome' AND sys_groupid = ?";
		$email_template = $app->db->queryOneRecord($sql, $client_group_id);
360
		$client = $app->tform->getDataRecord($this->id);
361
		if(is_array($email_template) && $email_template['subject'] != '' && $email_template['message'] != '' && $client['email'] != '') {
362
363
364
365
366
367
368
369
370
371
			//* 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':
372
373
					$message = str_replace('{salutation}', $app->tform->lng('gender_'.$val.'_txt'), $message);
					$subject = str_replace('{salutation}', $app->tform->lng('gender_'.$val.'_txt'), $subject);
374
375
376
377
378
379
					break;
				default:
					$message = str_replace('{'.$key.'}', $val, $message);
					$subject = str_replace('{'.$key.'}', $val, $subject);
				}
			}
380

381
382
383
			//* Get sender address
			if($app->auth->is_admin()) {
				$app->uses('getconf');
384
				$system_config = $app->getconf->get_global_config('mail');
385
386
387
				$from = $system_config['admin_mail'];
			} else {
				$client_group_id = $app->functions->intval($_SESSION["s"]["user"]["default_group"]);
388
				$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);
389
390
391
392
393
394
				$from = $reseller["email"];
			}

			//* Send the email
			$app->functions->mail($client['email'], $subject, $message, $from);
		}
395

396
397
398

		parent::onAfterInsert();
	}
399
400


401
402
403
404
405
	/*
	 This function is called automatically right after
	 the data was successful updated in the database.
	*/
	function onAfterUpdate() {
406
		global $app, $conf;
407
		// username changed
xaver's avatar
xaver committed
408
		if(isset($conf['demo_mode']) && $conf['demo_mode'] != true && isset($this->dataRecord['username']) && $this->dataRecord['username'] != '' && $this->oldDataRecord['username'] != $this->dataRecord['username']) {
409
			$username = $this->dataRecord["username"];
410
			$client_id = $this->id;
411
412
			$sql = "UPDATE sys_user SET username = ? WHERE client_id = ?";
			$app->db->query($sql, $username, $client_id);
413

414
415
			$tmp = $app->db->queryOneRecord("SELECT * FROM sys_group WHERE client_id = ?", $client_id);
			$app->db->datalogUpdate("sys_group", array("name" => $username), 'groupid', $tmp['groupid']);
416
417
			unset($tmp);
		}
418

419
		// password changed
xaver's avatar
xaver committed
420
		if(isset($conf['demo_mode']) && $conf['demo_mode'] != true && isset($this->dataRecord["password"]) && $this->dataRecord["password"] != '') {
421
			$password = $this->dataRecord["password"];
422
			$password = $app->auth->crypt_password($password);
423
			$client_id = $this->id;
424
425
			$sql = "UPDATE sys_user SET passwort = ? WHERE client_id = ?";
			$app->db->query($sql, $password, $client_id);
426
		}
427

428
		// lock and cancel
429
430
431
432
433
434
435
436
437
438
        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 = $app->functions->func_client_lock($this->id,$this->dataRecord["locked"]);
        }

        if(!isset($this->dataRecord['canceled'])) $this->dataRecord['canceled'] = 'n';
        if(isset($conf['demo_mode']) && $conf['demo_mode'] != true && $this->dataRecord["canceled"] != $this->oldDataRecord['canceled']) {
                $cancel = $app->functions->func_client_cancel($this->id,$this->dataRecord["canceled"]);
        }
439

440
		// language changed
xaver's avatar
xaver committed
441
		if(isset($conf['demo_mode']) && $conf['demo_mode'] != true && isset($this->dataRecord['language']) && $this->dataRecord['language'] != '' && $this->oldDataRecord['language'] != $this->dataRecord['language']) {
442
			$language = $this->dataRecord["language"];
443
			$client_id = $this->id;
444
445
			$sql = "UPDATE sys_user SET language = ? WHERE client_id = ?";
			$app->db->query($sql, $language, $client_id);
446
		}
447

448
		//* reseller status changed
449
		if(isset($this->dataRecord["limit_client"]) && $this->dataRecord["limit_client"] != $this->oldDataRecord["limit_client"]) {
450
			$modules = $conf['interface_modules_enabled'];
451
452
			if($this->dataRecord["limit_client"] > 0) $modules .= ',client';
			$client_id = $this->id;
453
454
			$sql = "UPDATE sys_user SET modules = ? WHERE client_id = ?";
			$app->db->query($sql, $modules, $client_id);
455
		}
456

457
458
459
		//* Client has been moved to another reseller
		if($_SESSION['s']['user']['typ'] == 'admin' && isset($this->dataRecord['parent_client_id']) && $this->dataRecord['parent_client_id'] != $this->oldDataRecord['parent_client_id']) {
			//* Get groupid of the client
460
			$tmp = $app->db->queryOneRecord("SELECT groupid FROM sys_group WHERE client_id = ?", $this->id);
461
462
			$groupid = $tmp['groupid'];
			unset($tmp);
463

464
465
466
			//* Remove sys_user of old reseller from client group
			if($this->oldDataRecord['parent_client_id'] > 0) {
				//* get userid of the old reseller remove it from the group of the client
467
				$tmp = $app->db->queryOneRecord("SELECT sys_user.userid FROM sys_user,sys_group WHERE sys_user.default_group = sys_group.groupid AND sys_group.client_id = ?", $this->oldDataRecord['parent_client_id']);
468
469
470
				$app->auth->remove_group_from_user($tmp['userid'], $groupid);
				unset($tmp);
			}
471

472
473
474
			//* Add sys_user of new reseller to client group
			if($this->dataRecord['parent_client_id'] > 0) {
				//* get userid of the reseller and add it to the group of the client
475
				$tmp = $app->db->queryOneRecord("SELECT sys_user.userid, sys_user.default_group FROM sys_user,sys_group WHERE sys_user.default_group = sys_group.groupid AND sys_group.client_id = ?", $this->dataRecord['parent_client_id']);
476
				$app->auth->add_group_to_user($tmp['userid'], $groupid);
477
				$app->db->query("UPDATE client SET sys_userid = ?, sys_groupid = ?, parent_client_id = ? WHERE client_id = ?", $tmp['userid'], $tmp['default_group'], $this->dataRecord['parent_client_id'], $this->id);
478
479
480
				unset($tmp);
			} else {
				//* Client is not assigned to a reseller anymore, so we assign it to the admin
481
				$app->db->query("UPDATE client SET sys_userid = 1, sys_groupid = 1, parent_client_id = 0 WHERE client_id = ?", $this->id);
482
483
			}
		}
484
485
486
487
488
489

		if(isset($this->dataRecord['template_master'])) {
			$app->uses('client_templates');
			$app->client_templates->update_client_templates($this->id, $this->_template_additional);
		}

490
491
		parent::onAfterUpdate();
	}
492

493
494
495
496
497
}

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

498
?>