From 596f0b87579008e5aa8e7f854ccee868c178efca Mon Sep 17 00:00:00 2001
From: Sergio Cambra <sergio@programatica.es>
Date: Fri, 04 Jul 2014 10:24:03 -0400
Subject: [PATCH] move code for dns' owner change to plugin
---
interface/lib/plugins/dns_dns_slave_plugin.inc.php | 50 ++++++++++++
interface/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(-)
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 0000000..aa2e20f
--- /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 0000000..1cada0e
--- /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 dfca92e..0cf0067 100644
--- a/interface/web/dns/dns_slave_edit.php
+++ b/interface/web/dns/dns_slave_edit.php
@@ -169,47 +169,6 @@
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 17c704e..85b2270 100644
--- a/interface/web/dns/dns_soa_edit.php
+++ b/interface/web/dns/dns_soa_edit.php
@@ -220,25 +220,6 @@
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;
@@ -254,42 +235,6 @@
}
unset($rec);
}
-}
-
-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);
- }
- }
-
}
}
--
Gitblit v1.9.1