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