redray
2008-11-19 7d78160cfc5041e43a330708c264b0de32f08098
commit | author | age
f14188 1 <?php
T 2 /*
3 Copyright (c) 2007, Till Brehm, projektfarm Gmbh
4 All rights reserved.
5
6 Redistribution and use in source and binary forms, with or without modification,
7 are permitted provided that the following conditions are met:
8
9     * Redistributions of source code must retain the above copyright notice,
10       this list of conditions and the following disclaimer.
11     * Redistributions in binary form must reproduce the above copyright notice,
12       this list of conditions and the following disclaimer in the documentation
13       and/or other materials provided with the distribution.
14     * Neither the name of ISPConfig nor the names of its contributors
15       may be used to endorse or promote products derived from this software without
16       specific prior written permission.
17
18 THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND
19 ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED
20 WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED.
21 IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT,
22 INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING,
23 BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
24 DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY
25 OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING
26 NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE,
27 EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
28 */
29
30
31 /******************************************
32 * Begin Form configuration
33 ******************************************/
34
35 $tform_def_file = "form/dns_soa.tform.php";
36
37 /******************************************
38 * End Form configuration
39 ******************************************/
40
41 require_once('../../lib/config.inc.php');
42 require_once('../../lib/app.inc.php');
43
910093 44 //* Check permissions for module
T 45 $app->auth->check_module_permissions('dns');
f14188 46
T 47 // Loading classes
48 $app->uses('tpl,tform,tform_actions');
49 $app->load('tform_actions');
50
51 class page_action extends tform_actions {
52     
ea3796 53     function onShowNew() {
T 54         global $app, $conf;
55         
56         // we will check only users, not admins
57         if($_SESSION["s"]["user"]["typ"] == 'user') {
58             
59             // Get the limits of the client
60             $client_group_id = $_SESSION["s"]["user"]["default_group"];
61             $client = $app->db->queryOneRecord("SELECT limit_dns_zone FROM sys_group, client WHERE sys_group.client_id = client.client_id and sys_group.groupid = $client_group_id");
62             
63             // Check if the user may add another maildomain.
64             if($client["limit_dns_zone"] >= 0) {
65                 $tmp = $app->db->queryOneRecord("SELECT count(id) as number FROM dns_soa WHERE sys_groupid = $client_group_id");
66                 if($tmp["number"] >= $client["limit_dns_zone"]) {
67                     $app->error($app->tform->wordbook["limit_dns_zone_txt"]);
68                 }
69             }
70         }
71         
72         parent::onShowNew();
73     }
74     
75     function onShowEnd() {
76         global $app, $conf;
77         
78         // If user is admin, we will allow him to select to whom this record belongs
b5a23a 79         if($_SESSION["s"]["user"]["typ"] == 'admin' || $app->auth->has_clients($_SESSION['s']['user']['userid'])) {
ea3796 80             // Getting Domains of the user
T 81             $sql = "SELECT groupid, name FROM sys_group WHERE client_id > 0";
82             $clients = $app->db->queryAllRecords($sql);
b5a23a 83             $client_select = '';
T 84             if($_SESSION["s"]["user"]["typ"] == 'admin') $client_select .= "<option value='0'></option>";
ea3796 85             if(is_array($clients)) {
T 86                 foreach( $clients as $client) {
a35d61 87                     $selected = ($client["groupid"] == @$this->dataRecord["sys_groupid"])?'SELECTED':'';
ea3796 88                     $client_select .= "<option value='$client[groupid]' $selected>$client[name]</option>\r\n";
T 89                 }
90             }
91         $app->tpl->setVar("client_group_id",$client_select);
92         }
93         
94         parent::onShowEnd();
95     }
96     
f14188 97     function onSubmit() {
T 98         global $app, $conf;
ea3796 99         
8e23f2 100         if($_SESSION["s"]["user"]["typ"] != 'admin') {
T 101             // Get the limits of the client
102             $client_group_id = $_SESSION["s"]["user"]["default_group"];
103             $client = $app->db->queryOneRecord("SELECT limit_dns_zone, default_dnsserver FROM sys_group, client WHERE sys_group.client_id = client.client_id and sys_group.groupid = $client_group_id");
104         
105             // When the record is updated
106             if($this->id > 0) {
107                 // restore the server ID if the user is not admin and record is edited
108                 $tmp = $app->db->queryOneRecord("SELECT server_id FROM dns_soa WHERE id = ".intval($this->id));
109                 $this->dataRecord["server_id"] = $tmp["server_id"];
110                 unset($tmp);
111             // When the record is inserted
112             } else {
113                 // set the server ID to the default mailserver of the client
114                 $this->dataRecord["server_id"] = $client["default_dnsserver"];
ea3796 115                 
8e23f2 116                 // Check if the user may add another maildomain.
T 117                 if($client["limit_dns_zone"] >= 0) {
118                     $tmp = $app->db->queryOneRecord("SELECT count(id) as number FROM dns_soa WHERE sys_groupid = $client_group_id");
119                     if($tmp["number"] >= $client["limit_dns_zone"]) {
120                         $app->error($app->tform->wordbook["limit_dns_zone_txt"]);
121                     }
ea3796 122                 }
T 123             }
124         }
f14188 125         
T 126         // Set the serial
127         $this->dataRecord["serial"] = time();
128         
129         parent::onSubmit();
130     }
131     
ea3796 132     function onAfterInsert() {
T 133         global $app, $conf;
134         
b5a23a 135         // make sure that the record belongs to the client group and not the admin group when a dmin inserts it
ea3796 136         if($_SESSION["s"]["user"]["typ"] == 'admin' && isset($this->dataRecord["client_group_id"])) {
b5a23a 137             $client_group_id = intval($this->dataRecord["client_group_id"]);
T 138             $app->db->query("UPDATE dns_soa SET sys_groupid = $client_group_id WHERE id = ".$this->id);
139             // And we want to update all rr records too, that belong to this record
140             $app->db->query("UPDATE dns_rr SET sys_groupid = $client_group_id WHERE zone = ".$this->id);
141         }
142         if($app->auth->has_clients($_SESSION['s']['user']['userid']) && isset($this->dataRecord["client_group_id"])) {
ea3796 143             $client_group_id = intval($this->dataRecord["client_group_id"]);
T 144             $app->db->query("UPDATE dns_soa SET sys_groupid = $client_group_id WHERE id = ".$this->id);
145             // And we want to update all rr records too, that belong to this record
146             $app->db->query("UPDATE dns_rr SET sys_groupid = $client_group_id WHERE zone = ".$this->id);
147         }
148     }
149     
150     function onAfterUpdate() {
151         global $app, $conf;
152         
b5a23a 153         // make sure that the record belongs to the client group and not the admin group when a dmin inserts it
ea3796 154         if($_SESSION["s"]["user"]["typ"] == 'admin' && isset($this->dataRecord["client_group_id"])) {
T 155             $client_group_id = intval($this->dataRecord["client_group_id"]);
156             $app->db->query("UPDATE dns_soa SET sys_groupid = $client_group_id WHERE id = ".$this->id);
157             // And we want to update all rr records too, that belong to this record
158             $app->db->query("UPDATE dns_rr SET sys_groupid = $client_group_id WHERE zone = ".$this->id);
159         }
b5a23a 160         if($app->auth->has_clients($_SESSION['s']['user']['userid']) && isset($this->dataRecord["client_group_id"])) {
T 161             $client_group_id = intval($this->dataRecord["client_group_id"]);
162             $app->db->query("UPDATE dns_soa SET sys_groupid = $client_group_id WHERE id = ".$this->id);
163             // And we want to update all rr records too, that belong to this record
164             $app->db->query("UPDATE dns_rr SET sys_groupid = $client_group_id WHERE zone = ".$this->id);
165         }
ea3796 166     }
T 167     
f14188 168 }
T 169
170 $page = new page_action;
171 $page->onLoad();
172
173 ?>