From b2cee83e8894e89fd3e0793c84fb92a8cf928613 Mon Sep 17 00:00:00 2001
From: Marius Burkard <m.burkard@pixcept.de>
Date: Tue, 19 Apr 2016 14:17:54 -0400
Subject: [PATCH] - fixed problem on select boxes with hidden options

---
 interface/web/tools/resync.php |  700 ++++++++++++++++++++++++++++++++++++++++++++++++----------
 1 files changed, 577 insertions(+), 123 deletions(-)

diff --git a/interface/web/tools/resync.php b/interface/web/tools/resync.php
index 86ba27d..1b2405d 100644
--- a/interface/web/tools/resync.php
+++ b/interface/web/tools/resync.php
@@ -1,6 +1,6 @@
 <?php
 /*
-Copyright (c) 2012, Till Brehm, projektfarm Gmbh, ISPConfig UG
+Copyright (c) 2014, Florian Schaal, info@schaal-24.de
 All rights reserved.
 
 Redistribution and use in source and binary forms, with or without modification,
@@ -27,140 +27,594 @@
 EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
 */
 
-require_once('../../lib/config.inc.php');
-require_once('../../lib/app.inc.php');
+
+/******************************************
+* Begin Form configuration
+******************************************/
+
+$tform_def_file = 'form/resync.tform.php';
+
+/******************************************
+* End Form configuration
+******************************************/
+
+require_once '../../lib/config.inc.php';
+require_once '../../lib/app.inc.php';
 
 //* Check permissions for module
 $app->auth->check_module_permissions('admin');
 
-//* This is only allowed for administrators
-if(!$app->auth->is_admin()) die('only allowed for administrators.');
+// Loading classes
+$app->uses('tpl,tform,tform_actions');
+$app->load('tform_actions');
 
-$app->uses('tpl,validate_dns');
+class page_action extends tform_actions {
 
-$app->tpl->newTemplate('form.tpl.htm');
-$app->tpl->setInclude('content_tpl', 'templates/resync.htm');
-$msg = '';
-$error = '';
+	//* called during onShowEnd
+	/*
+	* @param array $server_rec
+	* @param string $server_type
+	* @param string or array $search
+	*
+	* @return array
+	*/
 
-//* load language file
-$lng_file = 'lib/lang/'.$_SESSION['s']['language'].'_resync.lng';
-include($lng_file);
-$app->tpl->setVar($wb);
+	private function create_list($server_rec, $server_type, $search) {
 
-//* Resyncing websites
-if(isset($_POST['resync_sites']) && $_POST['resync_sites'] == 1) {
-	$db_table = 'web_domain';
-	$index_field = 'domain_id';
-	$sql = "SELECT * FROM ".$db_table." WHERE active = 'y'";
-	$records = $app->db->queryAllRecords($sql);
-	if(is_array($records)) {
-		foreach($records as $rec) {
-			$app->db->datalogUpdate($db_table, $rec, $index_field, $rec[$index_field], true);
-			$msg .= "Resynced Website: ".$rec['domain'].'<br />';
+		$server_count = 0;
+
+		//* we allow multiple search-pattern - convert string to array
+		if (!is_array($search)) {
+			$_search = $search;
+			$search=array();
+			$search[]=$_search;
 		}
-	}
-}
 
-//* Resyncing ftp
-if(isset($_POST['resync_ftp']) && $_POST['resync_ftp'] == 1) {
-	$db_table = 'ftp_user';
-	$index_field = 'ftp_user_id';
-	$sql = "SELECT * FROM ".$db_table." WHERE active = 'y'";
-	$records = $app->db->queryAllRecords($sql);
-	if(is_array($records)) {
-		foreach($records as $rec) {
-			$app->db->datalogUpdate($db_table, $rec, $index_field, $rec[$index_field], true);
-			$msg .= "Resynced FTP user: ".$rec['username'].'<br />';
-		}
-	}
-}
-
-//* Resyncing shell
-if(isset($_POST['resync_shell']) && $_POST['resync_shell'] == 1) {
-	$db_table = 'shell_user';
-	$index_field = 'shell_user_id';
-	$sql = "SELECT * FROM ".$db_table." WHERE active = 'y'";
-	$records = $app->db->queryAllRecords($sql);
-	if(is_array($records)) {
-		foreach($records as $rec) {
-			$app->db->datalogUpdate($db_table, $rec, $index_field, $rec[$index_field], true);
-			$msg .= "Resynced Shell user: ".$rec['username'].'<br />';
-		}
-	}
-}
-
-//* Resyncing Cronjobs
-if(isset($_POST['resync_cron']) && $_POST['resync_cron'] == 1) {
-	$db_table = 'cron';
-	$index_field = 'id';
-	$sql = "SELECT * FROM ".$db_table." WHERE active = 'y'";
-	$records = $app->db->queryAllRecords($sql);
-	if(is_array($records)) {
-		foreach($records as $rec) {
-			$app->db->datalogUpdate($db_table, $rec, $index_field, $rec[$index_field], true);
-			$msg .= "Resynced Cron: ".$rec['id'].'<br />';
-		}
-	}
-}
-
-//* Resyncing Databases
-if(isset($_POST['resync_db']) && $_POST['resync_db'] == 1) {
-	$db_table = 'web_database';
-	$index_field = 'database_id';
-	$sql = "SELECT * FROM ".$db_table." WHERE active = 'y'";
-	$records = $app->db->queryAllRecords($sql);
-	if(is_array($records)) {
-		foreach($records as $rec) {
-			$app->db->datalogUpdate($db_table, $rec, $index_field, $rec[$index_field], true);
-			$msg .= "Resynced Database: ".$rec['database_name'].'<br />';
-		}
-	}
-}
-
-//* Resyncing Mailboxes
-if(isset($_POST['resync_mailbox']) && $_POST['resync_mailbox'] == 1) {
-	$db_table = 'mail_user';
-	$index_field = 'mailuser_id';
-	$sql = "SELECT * FROM ".$db_table." WHERE active = 'y'";
-	$records = $app->db->queryAllRecords($sql);
-	if(is_array($records)) {
-		foreach($records as $rec) {
-			$app->db->datalogUpdate($db_table, $rec, $index_field, $rec[$index_field], true);
-			$msg .= "Resynced Mailbox: ".$rec['email'].'<br />';
-		}
-	}
-}
-
-
-//* Resyncing dns zones
-if(isset($_POST['resync_dns']) && $_POST['resync_dns'] == 1) {
-	$zones = $app->db->queryAllRecords("SELECT id,origin,serial FROM dns_soa WHERE active = 'Y'");
-	if(is_array($zones) && !empty($zones)) {
-		foreach($zones as $zone) {
-			$records = $app->db->queryAllRecords("SELECT id,serial FROM dns_rr WHERE zone = ".$zone['id']." AND active = 'Y'");
-			if(is_array($records)) {
-				foreach($records as $rec) {
-					$new_serial = $app->validate_dns->increase_serial($rec["serial"]);
-					$app->db->datalogUpdate('dns_rr', "serial = '".$new_serial."'", 'id', $rec['id']);
-					
+		foreach ($server_rec as $server) {
+			//* check the database for existing records
+			$server_data = $this->server_has_data($server_type, $server['server_id']);
+			foreach ($search as $needle) 
+				if (in_array($needle, $server_data) && strpos($options_servers, $server['server_name']) === false) {
+					$options_servers .= "<option value='$server[server_id]'>$server[server_name]</option>";
+					$server_count++;
 				}
-			}
-			$new_serial = $app->validate_dns->increase_serial($zone["serial"]);
-			$app->db->datalogUpdate('dns_soa', "serial = '".$new_serial."'", 'id', $zone['id']);
-			$msg .= "Resynced DNS zone: ".$zone['origin'].'<br />';
 		}
-	} else {
-		$error .= "No zones found to sync.<br />";
+
+		return array($options_servers, $server_count);
 	}
-	
+
+	//* called from create_list
+	private function server_has_data($type, $server) {
+
+		global $app;
+
+		$server_id = $app->functions->intval($server);
+
+		if($type == 'mail') {
+			$server_data = array (
+    			'mail_domain' => array (
+        			'index_field' => 'domain_id',
+        			'server_type' => 'mail',
+					'server_id' => $server_id,
+    			),
+				'mail_get' => array (
+					'index_field' =>  'mailget_id',
+					'server_type' => 'mail',
+					'server_id' => $server_id,
+				),
+    			'mail_mailinglist' => array (
+        			'index_field' =>  'mailinglist_id',
+        			'server_type' => 'mail',
+					'server_id' => $server_id,
+    			),
+    			'mail_user' => array (
+        			'index_field' =>  'mailuser_id',
+        			'server_type' => 'mail',
+					'server_id' => $server_id,
+				),
+			);
+		}
+		if($type == 'mail_filter') {
+			$server_data = array (
+				'mail_access' => array (
+					'index_field' => 'access_id',
+        			'server_type' => 'mail',
+					'server_id' => $server_id,
+    			),
+				'mail_content_filter' => array (
+					'index_field' => 'content_filter_id',
+        			'server_type' => 'mail',
+    			),
+				'mail_user_filter' => array (
+					'index_field' => 'filter_id',
+        			'server_type' => 'mail',
+    			),
+				'spamfilter_policy' => array (
+					'index_field' => 'id',
+					'server_type' => 'mail',
+				),
+				'spamfilter_users' => array (
+					'index_field' => 'id',
+					'server_type' => 'mail',
+					'server_id' => $server_id,
+				),
+				'spamfilter_wblist' => array (
+					'index_field' => 'wblist_id',
+					'server_type' => 'mail',
+					'server_id' => $server_id,
+				),
+			);
+		}
+		if($type == 'web'  ) {
+			$server_data = array (
+    			'web_domain' => array (
+        			'index_field' => 'domain_id',
+        			'server_type' => 'web',
+					'server_id' => $server_id,
+    			),
+    			'shell_user' => array (
+        			'index_field' => 'shell_user_id',
+        			'server_type' => 'web',
+					'server_id' => $server_id,
+    			),
+    			'cron' => array (
+        			'index_field' => 'id',
+        			'server_type' => 'cron',
+					'server_id' => $server_id,
+    			),
+    			'ftp_user' => array (
+        			'index_field' => 'ftp_user_id',
+        			'server_type' => 'web',
+					'server_id' => $server_id,
+    			),
+			);
+		}
+		if($type == 'dns' ) {
+			$server_data = array (
+				'dns_soa' => array (
+					'index_field' => 'id',
+					'server_type' => 'dns',
+					'server_id' => $server_id,
+				),
+			);
+		}
+		if($type == 'file' ) {
+			$server_data = array (
+    			'webdav_user' => array (
+        			'index_field' => 'webdav_user_id',
+        			'server_type' => 'file',
+					'server_id' => $server_id,
+    			),
+			);
+		}
+		if($type == 'db' ) {
+			$server_data = array (
+				'web_database' => array (
+					'index_field' => 'web_database_id',
+					'server_type' => 'db',
+					'server_id' => $server_id,
+				),
+			);
+		}
+		if($type == 'vserver' ) {
+			$server_data = array (
+				'openvz_vm' => array (
+					'index_field' => 'vm_id',
+					'server_type' => 'vserver',
+					'server_id' => $server_id,
+				),
+			);
+		}
+		//* proxy
+		//* firewall
+		$array_out = array();
+		foreach($server_data as $db_table => $data) {
+			$sql = @(isset($data['server_id']))?"SELECT * FROM ?? WHERE server_id = ?":"SELECT * FROM ??";
+			$records = $app->db->queryAllRecords($sql, $db_table, $server_id);
+			if (!empty($records)) array_push($array_out, $db_table);
+		}
+
+		return $array_out;
+	}
+
+	function onShowEnd() {
+		global $app;
+
+		//* fetch all-server
+		$server_rec =  $app->db->queryAllRecords("SELECT server_id, server_name FROM server WHERE active = 1 AND mirror_server_id = 0 ORDER BY active DESC, server_name");
+		$server_count = 0;
+		foreach ($server_rec as $server) {
+			$options_servers .= "<option value='$server[server_id]'>$server[server_name]</option>";
+			$server_count++;
+		}
+		if ($server_count > 1) $options_servers = "<option value='0'>".$app->tform->wordbook['all_active_txt']."</option>" . $options_servers;
+		$app->tpl->setVar('all_server_id', $options_servers);
+		unset($options_servers);
+
+		//* fetch mail-server
+		$mail_server_rec = $app->db->queryAllRecords("SELECT server_id, server_name FROM server WHERE mail_server = 1 AND active = 1 AND mirror_server_id = 0 ORDER BY active DESC, server_name");
+		if (!empty($mail_server_rec)) {
+			$app->tpl->setVar('mail_server_found', 1);
+
+			//* mail-domain
+			$server_list = $this->create_list($mail_server_rec, 'mail', 'mail_domain');
+			$options_servers = $server_list[0];$server_count = $server_list[1];
+			unset($server_list);
+			if (isset($options_servers)) {	//* server with data found
+				if ($server_count > 1) $options_servers = "<option value='0'>".$app->tform->wordbook['all_active_mail_txt']."</option>" . $options_servers;
+				$app->tpl->setVar('mail_server_id', $options_servers);
+				$app->tpl->setVar('mail_domain_found', 1);
+				unset($options_servers);
+			}
+
+			//* mail-get
+			$server_list = $this->create_list($mail_server_rec, 'mail', 'mail_get');
+			$options_servers = $server_list[0];$server_count = $server_list[1];
+			unset($server_list);
+			if (isset($options_servers)) {	//* server with data found
+				if ($server_count > 1) $options_servers = "<option value='0'>".$app->tform->wordbook['all_active_mail_txt']."</option>" . $options_servers;
+				$app->tpl->setVar('mailget_server_id', $options_servers);
+				$app->tpl->setVar('mail_get_found', 1);
+				unset($options_servers);
+			}
+
+			//* mailbox
+			$server_list = $this->create_list($mail_server_rec, 'mail', 'mail_user');
+			$options_servers = $server_list[0];$server_count = $server_list[1];
+			unset($server_list);
+			if (isset($options_servers)) {	//* server with data found
+				if ($server_count > 1) $options_servers = "<option value='0'>".$app->tform->wordbook['all_active_mail_txt']."</option>" . $options_servers;
+				$app->tpl->setVar('mailbox_server_id', $options_servers);
+				$app->tpl->setVar('mail_user_found', 1);
+				unset($options_servers);
+			}
+
+			//* mailfilter
+			$server_list = $this->create_list($mail_server_rec, 'mail_filter', array('mail_access', 'mail_content_filter', 'mail_user_filter','spamfilter_users', 'spamfilter_wblist'));
+			$options_servers = $server_list[0];$server_count = $server_list[1];
+			unset($server_list);
+			if (isset($options_servers)) {	//* server with data found
+				if ($server_count > 1) $options_servers = "<option value='0'>".$app->tform->wordbook['all_active_mail_txt']."</option>" . $options_servers;
+				$app->tpl->setVar('mailfilter_server_id', $options_servers);
+				$app->tpl->setVar('mail_filter_found', 1);
+				unset($options_servers);
+			}
+
+			//* mailinglist
+			$server_list = $this->create_list($mail_server_rec, 'mail', 'mail_mailinglist');
+			$options_servers = $server_list[0];$server_count = $server_list[1];
+			unset($server_list);
+			if (isset($options_servers)) {	//* server with data found
+				if ($server_count > 1) $options_servers = "<option value='0'>".$app->tform->wordbook['all_active_mail_txt']."</option>" . $options_servers;
+				$app->tpl->setVar('mailinglist_server_id', $options_servers);
+				$app->tpl->setVar('mailinglist_found', 1);
+				unset($options_servers);
+			}
+
+		}
+
+		//* fetch web-server
+		$web_server_rec = $app->db->queryAllRecords("SELECT server_id, server_name FROM server WHERE web_server = 1 AND active = 1 AND mirror_server_id = 0 ORDER BY active DESC, server_name");
+		if (!empty($web_server_rec)) {
+			$app->tpl->setVar('web_server_found', 1);
+
+			//* web-domain
+			$server_list = $this->create_list($web_server_rec, 'web', 'web_domain');
+			$options_servers = $server_list[0];$server_count = $server_list[1];
+			unset($server_list);
+			if (isset($options_servers)) {	//* server with data found
+				if ($server_count > 1) $options_servers = "<option value='0'>".$app->tform->wordbook['all_active_web_txt']."</option>" . $options_servers;
+				$app->tpl->setVar('web_server_id', $options_servers);
+				$app->tpl->setVar('web_domain_found', 1);
+				unset($options_servers);
+			}
+
+			//* ftp-user
+			$server_list = $this->create_list($web_server_rec, 'web', 'ftp_user');
+			$options_servers = $server_list[0];$server_count = $server_list[1];
+			unset($server_list);
+			if (isset($options_servers)) {	//* server with data found
+				if ($server_count > 1) $options_servers = "<option value='0'>".$app->tform->wordbook['all_active_web_txt']."</option>" . $options_servers;
+				$app->tpl->setVar('ftp_server_id', $options_servers);
+				$app->tpl->setVar('ftp_user_found', 1);
+				unset($options_servers);
+			}
+
+			//* shell-user
+			$server_list = $this->create_list($web_server_rec, 'web', 'shell_user');
+			$options_servers = $server_list[0];$server_count = $server_list[1];
+			unset($server_list);
+			if (isset($options_servers)) {	//* server with data found
+				if ($server_count > 1) $options_servers = "<option value='0'>".$app->tform->wordbook['all_active_web_txt']."</option>" . $options_servers;
+				$app->tpl->setVar('shell_server_id', $options_servers);
+				$app->tpl->setVar('shell_user_found', 1);
+				unset($options_servers);
+			}
+
+			//* cron
+			$server_list = $this->create_list($web_server_rec, 'web', 'cron');
+			$options_servers = $server_list[0];$server_count = $server_list[1];
+			unset($server_list);
+			if (isset($options_servers)) {	//* server with data found
+				if ($server_count > 1) $options_servers = "<option value='0'>".$app->tform->wordbook['all_active_web_txt']."</option>" . $options_servers;
+				$app->tpl->setVar('cron_server_id', $options_servers);
+				$app->tpl->setVar('cron_found', 1);
+				unset($options_servers);
+			}
+		}
+
+		//* fetch dns-server
+		$dns_server_rec = $app->db->queryAllRecords("SELECT server_id, server_name FROM server WHERE dns_server = 1 AND active = 1 AND mirror_server_id = 0 ORDER BY active DESC, server_name");
+		if (!empty($dns_server_rec)) {
+			$app->tpl->setVar('dns_server_found', 1);
+
+			$server_list = $this->create_list($dns_server_rec, 'dns', 'dns_soa');
+			$options_servers = $server_list[0];$server_count = $server_list[1];
+			unset($server_list);
+			if (isset($options_servers)) {	//* server with data found
+				if ($server_count > 1) $options_servers = "<option value='0'>".$app->tform->wordbook['all_active_dns_txt']."</option>" . $options_servers;
+				$app->tpl->setVar('dns_server_id', $options_servers);
+				$app->tpl->setVar('dns_soa_found', 1);
+				unset($options_servers);
+			}
+		}
+
+		//* fetch webdav-user
+		$file_server_rec = $app->db->queryAllRecords("SELECT server_id, server_name FROM server WHERE file_server = 1 AND active = 1 AND mirror_server_id = 0 ORDER BY active DESC, server_name");
+		if (!empty($file_server_rec)) {
+			$app->tpl->setVar('file_server_found', 1);
+
+			$server_list = $this->create_list($file_server_rec, 'file', 'webdav_user');
+			$options_servers = $server_list[0];$server_count = $server_list[1];
+			unset($server_list);
+			if (isset($options_servers)) {	//* server with data found
+				if ($server_count > 1) $options_servers = "<option value='0'>".$app->tform->wordbook['all_active_file_txt']."</option>" . $options_servers;
+				$app->tpl->setVar('file_server_id', $options_servers);
+				$app->tpl->setVar('webdav_user_found', 1);
+				unset($options_servers);
+			}
+		}
+
+		//* fetch database-server
+		$db_server_rec = $app->db->queryAllRecords("SELECT server_id, server_name FROM server WHERE db_server = 1 AND active = 1 AND mirror_server_id = 0 ORDER BY active DESC, server_name");
+		if (!empty($db_server_rec)) {
+			$app->tpl->setVar('db_server_found', 1);
+
+			$server_list = $this->create_list($db_server_rec, 'db', 'web_database');
+			$options_servers = $server_list[0];$server_count = $server_list[1];
+			unset($server_list);
+			if (isset($options_servers)) {	//* server with data found
+				if ($server_count > 1) $options_servers = "<option value='0'>".$app->tform->wordbook['all_active_db_txt']."</option>" . $options_servers;
+				$app->tpl->setVar('db_server_id', $options_servers);
+				$app->tpl->setVar('client_db_found', 1);
+				unset($options_servers);
+			}
+		}
+
+		//* fetch vserver
+		$v_server_rec = $app->db->queryAllRecords("SELECT server_id, server_name FROM server WHERE vserver_server = 1 AND active = 1 AND mirror_server_id = 0 ORDER BY active DESC, server_name");
+		if (!empty($db_server_rec)) {
+			$app->tpl->setVar('vserver_server_found', 1);
+
+			$server_list = $this->create_list($v_server_rec, 'vserver', 'openvz_vm');
+			$options_servers = $server_list[0];$server_count = $server_list[1];
+			unset($server_list);
+			if (isset($options_servers)) {	//* server with data found
+				if ($server_count > 1) $options_servers = "<option value='0'>".$app->tform->wordbook['all_active_vserver_txt']."</option>" . $options_servers;
+				$app->tpl->setVar('vserver_server_id', $options_servers);
+				$app->tpl->setVar('vserver_found', 1);
+				unset($options_servers);
+			}
+		}
+
+		$csrf_token = $app->auth->csrf_token_get('tools_resync');
+		$app->tpl->setVar('_csrf_id', $csrf_token['csrf_id']);
+		$app->tpl->setVar('_csrf_key', $csrf_token['csrf_key']);
+
+		parent::onShowEnd();
+	}
+			
+	//* fetch values during do_resync
+	private function query_server($db_table, $server_id, $server_type, $active=true, $opt='') {
+		global $app;
+
+		$server_name = array();
+		if ( $server_id == 0 ) { //* resync multiple server
+			$temp = $app->db->queryAllRecords("SELECT server_id, server_name FROM server WHERE ?? = 1 AND active = 1 AND mirror_server_id = 0", $server_type."_server");
+			foreach ($temp as $server) {
+				$temp_id .= $server['server_id'].',';
+				$server_name[$server['server_id']] = $server['server_name'];
+			}
+			if ( isset($temp_id) ) $server_id = rtrim($temp_id,',');
+		} else {
+			$temp = $app->db->queryOneRecord("SELECT server_name FROM server WHERE server_id = ?", $server_id);
+			$server_name[$server_id] = $temp['server_name'];
+		}		
+		unset($temp);
+
+		$sql = "SELECT * FROM ??";
+		if ($db_table != "mail_user_filter" && $db_table != "spamfilter_policy") $sql .= " WHERE server_id IN (".$server_id.") ";
+		$sql .= $opt;
+		if ($active) $sql .= " AND active = 'y'"; 
+		$records = $app->db->queryAllRecords($sql, $db_table);
+
+		return array($records, $server_name);
+	}			
+
+	private function do_resync($db_table, $index_field, $server_type, $server_id, $msg_field, $wordbook, $active=true) {
+        global $app;
+
+		$server_id = $app->functions->intval($server_id);
+		$rec = $this->query_server($db_table, $server_id, $server_type, $active);
+		$records = $rec[0];
+		$server_name = $rec[1];
+		$msg = '<b>'.$wordbook.'</b><br>';
+		if(!empty($records)) 
+			foreach($records as $rec) {
+				$app->db->datalogUpdate($db_table, $rec, $index_field, $rec[$index_field], true);
+				if(!empty($rec[$msg_field])) $msg .= '['.$server_name[$rec['server_id']].'] '.$rec[$msg_field].'<br>';
+			}
+		else $msg .= $app->tform->wordbook['no_results_txt'].'<br>';
+
+		return $msg.'<br>';
+	}
+
+    function onSubmit() {
+        global $app;
+		
+		if(isset($_POST) && count($_POST) > 1) {
+			//* CSRF Check
+			$app->auth->csrf_token_check();
+		}
+		
+		//* all services
+		if($this->dataRecord['resync_all'] == 1) {
+			$this->dataRecord['resync_sites'] = 1;
+			$this->dataRecord['resync_ftp'] = 1;
+			$this->dataRecord['resync_webdav'] = 1;
+			$this->dataRecord['resync_shell'] = 1;
+			$this->dataRecord['resync_cron'] = 1;
+			$this->dataRecord['resync_db'] = 1;
+			$this->dataRecord['resync_mail'] = 1;
+			$this->dataRecord['resync_mailget'] = 1;
+			$this->dataRecord['resync_mailbox'] = 1;
+			$this->dataRecord['resync_mailfilter'] = 1;
+			$this->dataRecord['resync_mailinglist'] = 1;
+			$this->dataRecord['resync_vserver'] = 1;
+			$this->dataRecord['resync_dns'] = 1;
+			$this->dataRecord['resync_client'] = 1;
+			$this->dataRecord['web_server_id'] = $this->dataRecord['all_server_id'];
+			$this->dataRecord['ftp_server_id'] = $this->dataRecord['all_server_id'];
+			$this->dataRecord['webdav_server_id'] = $this->dataRecord['all_server_id'];
+			$this->dataRecord['shell_server_id'] = $this->dataRecord['all_server_id'];
+			$this->dataRecord['cron_server_id'] = $this->dataRecord['all_server_id'];
+			$this->dataRecord['db_server_id'] = $this->dataRecord['all_server_id'];
+			$this->dataRecord['mail_server_id'] = $this->dataRecord['all_server_id'];
+			$this->dataRecord['mailbox_server_id'] = $this->dataRecord['all_server_id'];
+			$this->dataRecord['verserver_server_id'] = $this->dataRecord['all_server_id'];
+			$this->dataRecord['dns_server_id'] = $this->dataRecord['all_server_id'];
+		}
+
+		//* websites
+		if($this->dataRecord['resync_sites'] == 1)
+			$msg .= $this->do_resync('web_domain', 'domain_id', 'web', $this->dataRecord['web_server_id'], 'domain', $app->tform->wordbook['do_sites_txt']);
+
+		//* ftp
+		if($this->dataRecord['resync_ftp'] == 1)
+			$msg .= $this->do_resync('ftp_user', 'ftp_user_id', 'web', $this->dataRecord['ftp_server_id'], 'username',  $app->tform->wordbook['do_ftp_txt']);
+
+		//* webdav
+		if($this->dataRecord['resync_webdav'] == 1) 
+			$msg .= $this->do_resync('webdav_user', 'webdav_user_id', 'file', $this->dataRecord['webdav_server_id'], 'username',  $app->tform->wordbook['do_webdav_txt']);
+
+		//* shell
+		if($this->dataRecord['resync_shell'] == 1) 
+			$msg .= $this->do_resync('shell_user', 'shell_user_id', 'web', $this->dataRecord['shell_server_id'], 'username',  $app->tform->wordbook['do_shell_txt']);
+
+		//* cron
+		if($this->dataRecord['resync_cron'] == 1) 
+			$msg .= $this->do_resync('cron', 'id', 'web', $this->dataRecord['cron_server_id'], 'command',  $app->tform->wordbook['do_cron_txt']);
+
+		//* database
+		if(isset($this->dataRecord['resync_db']) && $this->dataRecord['resync_db'] == 1) {
+			$msg .= $this->do_resync('web_database_user', 'database_user_id', 'db', $this->dataRecord['db_server_id'], 'database_user',  $app->tform->wordbook['do_db_user_txt'], false);
+			$msg .= $this->do_resync('web_database', 'database_id', 'db', $this->dataRecord['db_server_id'], 'database_name',  $app->tform->wordbook['do_db_txt']);
+		}
+
+		//* maildomains
+		if($this->dataRecord['resync_mail'] == 1) {
+			$msg .= $this->do_resync('mail_domain', 'domain_id', 'mail', $this->dataRecord['mail_server_id'], 'domain',  $app->tform->wordbook['do_mail_txt']);
+			$msg .= $this->do_resync('spamfilter_policy', 'id', 'mail', $this->dataRecord['mail_server_id'], '',  $app->tform->wordbook['do_mail_spamfilter_policy_txt'], false);
+		}
+
+		//* mailget
+		if($this->dataRecord['resync_mailget'] == 1) {
+			$msg .= $this->do_resync('mail_get', 'mailget_id', 'mail', $this->dataRecord['mail_server_id'], 'source_username',  $app->tform->wordbook['do_mailget_txt']);
+		}
+
+		//* mailbox
+		if($this->dataRecord['resync_mailbox'] == 1) {
+			$msg .= $this->do_resync('mail_user', 'mailuser_id', 'mail', $this->dataRecord['mailbox_server_id'], 'email',  $app->tform->wordbook['do_mailbox_txt'], false);
+			$msg .= $this->do_resync('mail_forwarding', 'forwarding_id', 'mail', $this->dataRecord['mailbox_server_id'], '',  $app->tform->wordbook['do_mail_alias_txt']);
+		}
+
+		//* mailfilter
+		if($this->dataRecord['resync_mailfilter'] == 1) {
+			$msg .= $this->do_resync('mail_access', 'access_id', 'mail', $this->dataRecord['mailbox_server_id'], '',  $app->tform->wordbook['do_mail_access_txt']);
+			$msg .= $this->do_resync('mail_content_filter', 'content_filter_id', 'mail', $this->dataRecord['mailbox_server_id'], '',  $app->tform->wordbook['do_mail_contentfilter_txt']);
+			$msg .= $this->do_resync('mail_user_filter', 'filter_id', 'mail', $this->dataRecord['mailbox_server_id'], '',  $app->tform->wordbook['do_mail_userfilter_txt'], false);
+			//* spam
+			$msg .= $this->do_resync('spamfilter_users', 'id', 'mail', $this->dataRecord['mailbox_server_id'], '',  $app->tform->wordbook['do_mail_spamfilter_txt'], false);
+			$msg .= $this->do_resync('spamfilter_wblist', 'wblist_id', 'mail', $this->dataRecord['mailbox_server_id'], '',  $app->tform->wordbook['do_mail_spamfilter_txt']) 	;
+		}
+
+		//* mailinglists
+		if($this->dataRecord['resync_mailinglist'] == 1) 
+			$msg .= $this->do_resync('mail_mailinglist', 'mailinglist_id', 'mail', $this->dataRecord['mail_server_id'], 'listname',  $app->tform->wordbook['do_mailinglist_txt'], false);
+
+		//* vserver
+		if($this->dataRecord['resync_vserver'] == 1) 
+			$msg .= $this->do_resync('openvz_vm', 'vm_id', 'vserver', $this->dataRecord['verserver_server_id'], 'hostname',  $app->tform->wordbook['do_vserver_txt']);
+
+		//* dns
+		if($this->dataRecord['resync_dns'] == 1) {
+			$rec=$this->query_server('dns_soa', $this->dataRecord['dns_server_id'], 'dns'); 
+			$soa_records = $rec[0];
+			$server_name = $rec[1];
+			unset($rec);
+			$msg .= '<b>'.$app->tform->wordbook['do_dns_txt'].'</b><br>';
+			if(is_array($soa_records) && !empty($soa_records)) 
+				foreach($soa_records as $soa_rec) {
+					$temp = $this->query_server('dns_rr', $soa_rec['server_id'], 'dns', true, "AND zone = ".$app->functions->intval($soa_rec['id']));
+					$rr_records = $temp[0];
+					if(!empty($rr_records)) {
+						foreach($rr_records as $rec) {
+							$new_serial = $app->validate_dns->increase_serial($rec['serial']);
+							$app->db->datalogUpdate('dns_rr', array("serial" => $new_serial), 'id', $rec['id']);
+						}
+					} else { 
+						$msg .= $app->tform->wordbook['no_results_txt'].'<br>';
+					}
+					$new_serial = $app->validate_dns->increase_serial($soa_rec['serial']);
+					$app->db->datalogUpdate('dns_soa', array("serial" => $new_serial), 'id', $soa_rec['id']);
+					$msg .= '['.$server_name[$soa_rec['server_id']].'] '.$soa_rec['origin'].' ('.count($rr_records).')<br>';
+				}
+			else $msg .= $app->tform->wordbook['no_results_txt'].'<br>'; 
+
+			$msg .= '<br>';
+        }
+
+		//* clients
+		if($this->dataRecord['resync_client'] == 1) {
+        	$db_table = 'client';
+        	$index_field = 'client_id';
+        	$records = $app->db->queryAllRecords("SELECT * FROM ??", $db_table);
+			$msg .= '<b>'.$app->tform->wordbook['do_clients_txt'].'</b><br>';
+			if(!empty($records)) {
+	        	$tform_def_file = '../client/form/client.tform.php';
+    	    	$app->uses('tpl,tform,tform_actions');
+        		$app->load('tform_actions');
+				foreach($records as $rec) {
+					$app->db->datalogUpdate($db_table, $rec, $index_field, $rec[$index_field], true);
+					$tmp = new tform_actions;
+					$tmp->id = $rec[$index_field];
+					$tmp->dataRecord = $rec;
+					$tmp->oldDataRecord = $rec;
+					$app->plugin->raiseEvent('client:client:on_after_update', $tmp);
+					$msg .= $rec['contact_name'].'<br>';
+					unset($tmp);
+				}
+			} else {
+				$msg .= $app->tform->wordbook['no_results_txt'].'<br>'; 
+			}
+			$msg .= '<br>';
+		}
+
+		echo $msg;
+    } //* end onSumbmit
+
 }
 
-$app->tpl->setVar('msg',$msg);
-$app->tpl->setVar('error',$error);
-
-$app->tpl_defaults();
-$app->tpl->pparse();
-
-
-?>
\ No newline at end of file
+$page = new page_action;
+$page->onLoad();
+?>

--
Gitblit v1.9.1