From 596f0b87579008e5aa8e7f854ccee868c178efca Mon Sep 17 00:00:00 2001
From: Sergio Cambra <sergio@programatica.es>
Date: Fri, 4 Jul 2014 16:24:03 +0200
Subject: [PATCH] move code for dns' owner change to plugin

---
 .../lib/plugins/dns_dns_slave_plugin.inc.php  | 50 +++++++++++++++
 .../lib/plugins/dns_dns_soa_plugin.inc.php    | 64 +++++++++++++++++++
 interface/web/dns/dns_slave_edit.php          | 41 ------------
 interface/web/dns/dns_soa_edit.php            | 55 ----------------
 4 files changed, 114 insertions(+), 96 deletions(-)
 create mode 100644 interface/lib/plugins/dns_dns_slave_plugin.inc.php
 create mode 100644 interface/lib/plugins/dns_dns_soa_plugin.inc.php

diff --git a/interface/lib/plugins/dns_dns_slave_plugin.inc.php b/interface/lib/plugins/dns_dns_slave_plugin.inc.php
new file mode 100644
index 0000000000..aa2e20f9ab
--- /dev/null
+++ b/interface/lib/plugins/dns_dns_slave_plugin.inc.php
@@ -0,0 +1,50 @@
+<?php
+/**
+ * dns_dns_slave_plugin plugin
+ *
+ * @author Sergio Cambra <sergio@programatica.es> 2014
+ */
+
+
+class dns_dns_slave_plugin {
+
+	var $plugin_name        = 'dns_dns_slave_plugin';
+	var $class_name         = 'dns_dns_slave_plugin';
+
+	/*
+            This function is called when the plugin is loaded
+    */
+	function onLoad() {
+		global $app;
+		//Register for the events
+		$app->plugin->registerEvent('dns:dns_slave:on_after_insert', 'dns_dns_slave_plugin', 'dns_dns_slave_edit');
+		$app->plugin->registerEvent('dns:dns_slave:on_after_update', 'dns_dns_slave_plugin', 'dns_dns_slave_edit');
+	}
+
+	/*
+		Function to change dns slave owner
+    */
+	function dns_dns_slave_edit($event_name, $page_form) {
+		global $app, $conf;
+
+		// make sure that the record belongs to the client group and not the admin group when a dmin inserts it
+		if($_SESSION["s"]["user"]["typ"] == 'admin' && isset($page_form->dataRecord["client_group_id"])) {
+			$client_group_id = $app->functions->intval($page_form->dataRecord["client_group_id"]);
+			$app->db->query("UPDATE dns_slave SET sys_groupid = $client_group_id WHERE id = ".$page_form->id);
+		}
+		if($app->auth->has_clients($_SESSION['s']['user']['userid']) && isset($this->dataRecord["client_group_id"])) {
+			$client_group_id = $app->functions->intval($this->dataRecord["client_group_id"]);
+			$app->db->query("UPDATE dns_slave SET sys_groupid = $client_group_id WHERE id = ".$page_form->id);
+		}
+
+		//** When the client group has changed, change also the owner of the record if the owner is not the admin user
+		if($page_form->oldDataRecord && $page_form->oldDataRecord["client_group_id"] != $page_form->dataRecord["client_group_id"] && $page_form->dataRecord["sys_userid"] != 1) {
+			$client_group_id = $app->functions->intval($page_form->dataRecord["client_group_id"]);
+			$tmp = $app->db->queryOneREcord("SELECT userid FROM sys_user WHERE default_group = ".$client_group_id);
+			if($tmp["userid"] > 0) {
+				$app->db->query("UPDATE dns_slave SET sys_userid = ".$tmp["userid"]." WHERE id = ".$page_form->id);
+			}
+		}
+	}
+
+}
diff --git a/interface/lib/plugins/dns_dns_soa_plugin.inc.php b/interface/lib/plugins/dns_dns_soa_plugin.inc.php
new file mode 100644
index 0000000000..1cada0e932
--- /dev/null
+++ b/interface/lib/plugins/dns_dns_soa_plugin.inc.php
@@ -0,0 +1,64 @@
+<?php
+/**
+ * dns_dns_soa_plugin plugin
+ *
+ * @author Sergio Cambra <sergio@programatica.es> 2014
+ */
+
+
+class dns_dns_soa_plugin {
+
+	var $plugin_name        = 'dns_dns_soa_plugin';
+	var $class_name         = 'dns_dns_soa_plugin';
+
+	/*
+            This function is called when the plugin is loaded
+    */
+	function onLoad() {
+		global $app;
+		//Register for the events
+		$app->plugin->registerEvent('dns:dns_soa:on_after_insert', 'dns_dns_soa_plugin', 'dns_dns_soa_edit');
+		$app->plugin->registerEvent('dns:dns_soa:on_after_update', 'dns_dns_soa_plugin', 'dns_dns_soa_edit');
+	}
+
+	/*
+		Function to change dns soa owner
+    */
+	function dns_dns_soa_edit($event_name, $page_form) {
+		global $app, $conf;
+
+		if ($event_name == 'dns:dns_soa:on_after_update') {
+			$tmp = $app->db->diffrec($page_form->oldDataRecord, $app->tform->getDataRecord($page_form->id));
+			if($tmp['diff_num'] > 0) {
+				// Update the serial number of the SOA record
+				$soa = $app->db->queryOneRecord("SELECT serial FROM dns_soa WHERE id = ".$page_form->id);
+				$app->db->query("UPDATE dns_soa SET serial = '".$app->validate_dns->increase_serial($soa["serial"])."' WHERE id = ".$page_form->id);
+			}
+
+			//** When the client group has changed, change also the owner of the record if the owner is not the admin user
+			if($page_form->oldDataRecord["client_group_id"] != $page_form->dataRecord["client_group_id"] && $page_form->dataRecord["sys_userid"] != 1) {
+				$client_group_id = $app->functions->intval($page_form->dataRecord["client_group_id"]);
+				$tmp = $app->db->queryOneREcord("SELECT userid FROM sys_user WHERE default_group = ".$client_group_id);
+				if($tmp["userid"] > 0) {
+					$app->db->query("UPDATE dns_soa SET sys_userid = ".$tmp["userid"]." WHERE id = ".$page_form->id);
+					$app->db->query("UPDATE dns_rr SET sys_userid = ".$tmp["userid"]." WHERE zone = ".$page_form->id);
+				}
+			}
+		}
+
+		// make sure that the record belongs to the client group and not the admin group when a dmin inserts it
+		if($_SESSION["s"]["user"]["typ"] == 'admin' && isset($page_form->dataRecord["client_group_id"])) {
+			$client_group_id = $app->functions->intval($page_form->dataRecord["client_group_id"]);
+			$app->db->query("UPDATE dns_soa SET sys_groupid = $client_group_id, sys_perm_group = 'ru' WHERE id = ".$page_form->id);
+			// And we want to update all rr records too, that belong to this record
+			$app->db->query("UPDATE dns_rr SET sys_groupid = $client_group_id WHERE zone = ".$page_form->id);
+		}
+		if($app->auth->has_clients($_SESSION['s']['user']['userid']) && isset($page_form->dataRecord["client_group_id"])) {
+			$client_group_id = $app->functions->intval($page_form->dataRecord["client_group_id"]);
+			$app->db->query("UPDATE dns_soa SET sys_groupid = $client_group_id, sys_perm_group = 'riud' WHERE id = ".$page_form->id);
+			// And we want to update all rr records too, that belong to this record
+			$app->db->query("UPDATE dns_rr SET sys_groupid = $client_group_id WHERE zone = ".$page_form->id);
+		}
+	}
+
+}
diff --git a/interface/web/dns/dns_slave_edit.php b/interface/web/dns/dns_slave_edit.php
index dfca92e083..0cf0067577 100644
--- a/interface/web/dns/dns_slave_edit.php
+++ b/interface/web/dns/dns_slave_edit.php
@@ -169,47 +169,6 @@ class page_action extends tform_actions {
 		parent::onInsert();
 	}
 
-	function onAfterInsert() {
-		global $app, $conf;
-
-		// make sure that the record belongs to the client group and not the admin group when a dmin inserts it
-		if($_SESSION["s"]["user"]["typ"] == 'admin' && isset($this->dataRecord["client_group_id"])) {
-			$client_group_id = $app->functions->intval($this->dataRecord["client_group_id"]);
-			$app->db->query("UPDATE dns_slave SET sys_groupid = $client_group_id WHERE id = ".$this->id);
-		}
-		if($app->auth->has_clients($_SESSION['s']['user']['userid']) && isset($this->dataRecord["client_group_id"])) {
-			$client_group_id = $app->functions->intval($this->dataRecord["client_group_id"]);
-			$app->db->query("UPDATE dns_slave SET sys_groupid = $client_group_id WHERE id = ".$this->id);
-		}
-
-	}
-
-	function onAfterUpdate() {
-		global $app, $conf;
-
-		$tmp = $app->db->diffrec($this->oldDataRecord, $app->tform->getDataRecord($this->id));
-
-		// make sure that the record belongs to the client group and not the admin group when a dmin inserts it
-		if($_SESSION["s"]["user"]["typ"] == 'admin' && isset($this->dataRecord["client_group_id"])) {
-			$client_group_id = $app->functions->intval($this->dataRecord["client_group_id"]);
-			$app->db->query("UPDATE dns_slave SET sys_groupid = $client_group_id WHERE id = ".$this->id);
-		}
-		if($app->auth->has_clients($_SESSION['s']['user']['userid']) && isset($this->dataRecord["client_group_id"])) {
-			$client_group_id = $app->functions->intval($this->dataRecord["client_group_id"]);
-			$app->db->query("UPDATE dns_slave SET sys_groupid = $client_group_id WHERE id = ".$this->id);
-		}
-
-		//** When the client group has changed, change also the owner of the record if the owner is not the admin user
-		if($this->oldDataRecord["client_group_id"] != $this->dataRecord["client_group_id"] && $this->dataRecord["sys_userid"] != 1) {
-			$client_group_id = $app->functions->intval($this->dataRecord["client_group_id"]);
-			$tmp = $app->db->queryOneREcord("SELECT userid FROM sys_user WHERE default_group = ".$client_group_id);
-			if($tmp["userid"] > 0) {
-				$app->db->query("UPDATE dns_slave SET sys_userid = ".$tmp["userid"]." WHERE id = ".$this->id);
-			}
-		}
-
-	}
-
 }
 
 $page = new page_action;
diff --git a/interface/web/dns/dns_soa_edit.php b/interface/web/dns/dns_soa_edit.php
index 17c704ed12..85b2270e8e 100644
--- a/interface/web/dns/dns_soa_edit.php
+++ b/interface/web/dns/dns_soa_edit.php
@@ -220,25 +220,6 @@ function onSubmit() {
 	parent::onSubmit();
 }
 
-function onAfterInsert() {
-	global $app, $conf;
-
-	// make sure that the record belongs to the client group and not the admin group when a dmin inserts it
-	if($_SESSION["s"]["user"]["typ"] == 'admin' && isset($this->dataRecord["client_group_id"])) {
-		$client_group_id = $app->functions->intval($this->dataRecord["client_group_id"]);
-		$app->db->query("UPDATE dns_soa SET sys_groupid = $client_group_id, sys_perm_group = 'ru' WHERE id = ".$this->id);
-		// And we want to update all rr records too, that belong to this record
-		$app->db->query("UPDATE dns_rr SET sys_groupid = $client_group_id WHERE zone = ".$this->id);
-	}
-	if($app->auth->has_clients($_SESSION['s']['user']['userid']) && isset($this->dataRecord["client_group_id"])) {
-		$client_group_id = $app->functions->intval($this->dataRecord["client_group_id"]);
-		$app->db->query("UPDATE dns_soa SET sys_groupid = $client_group_id, sys_perm_group = 'riud' WHERE id = ".$this->id);
-		// And we want to update all rr records too, that belong to this record
-		$app->db->query("UPDATE dns_rr SET sys_groupid = $client_group_id WHERE zone = ".$this->id);
-	}
-
-}
-
 function onBeforeUpdate () {
 	global $app, $conf;
 
@@ -256,42 +237,6 @@ function onBeforeUpdate () {
 	}
 }
 
-function onAfterUpdate() {
-	global $app, $conf;
-
-	$tmp = $app->db->diffrec($this->oldDataRecord, $app->tform->getDataRecord($this->id));
-	if($tmp['diff_num'] > 0) {
-		// Update the serial number of the SOA record
-		$soa = $app->db->queryOneRecord("SELECT serial FROM dns_soa WHERE id = ".$this->id);
-		$app->db->query("UPDATE dns_soa SET serial = '".$app->validate_dns->increase_serial($soa["serial"])."' WHERE id = ".$this->id);
-	}
-
-	// make sure that the record belongs to the client group and not the admin group when a dmin inserts it
-	if($_SESSION["s"]["user"]["typ"] == 'admin' && isset($this->dataRecord["client_group_id"])) {
-		$client_group_id = $app->functions->intval($this->dataRecord["client_group_id"]);
-		$app->db->query("UPDATE dns_soa SET sys_groupid = $client_group_id, sys_perm_group = 'ru' WHERE id = ".$this->id);
-		// And we want to update all rr records too, that belong to this record
-		$app->db->query("UPDATE dns_rr SET sys_groupid = $client_group_id WHERE zone = ".$this->id);
-	}
-	if($app->auth->has_clients($_SESSION['s']['user']['userid']) && isset($this->dataRecord["client_group_id"])) {
-		$client_group_id = $app->functions->intval($this->dataRecord["client_group_id"]);
-		$app->db->query("UPDATE dns_soa SET sys_groupid = $client_group_id, sys_perm_group = 'riud' WHERE id = ".$this->id);
-		// And we want to update all rr records too, that belong to this record
-		$app->db->query("UPDATE dns_rr SET sys_groupid = $client_group_id WHERE zone = ".$this->id);
-	}
-
-	//** When the client group has changed, change also the owner of the record if the owner is not the admin user
-	if($this->oldDataRecord["client_group_id"] != $this->dataRecord["client_group_id"] && $this->dataRecord["sys_userid"] != 1) {
-		$client_group_id = $app->functions->intval($this->dataRecord["client_group_id"]);
-		$tmp = $app->db->queryOneREcord("SELECT userid FROM sys_user WHERE default_group = ".$client_group_id);
-		if($tmp["userid"] > 0) {
-			$app->db->query("UPDATE dns_soa SET sys_userid = ".$tmp["userid"]." WHERE id = ".$this->id);
-			$app->db->query("UPDATE dns_rr SET sys_userid = ".$tmp["userid"]." WHERE zone = ".$this->id);
-		}
-	}
-
-}
-
 }
 
 $page = new page_action;
-- 
GitLab