tbrehm
2008-01-06 b5a23a1be34827ba18ca537740edb121e616cd7a
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
44 // Checking module permissions
45 if(!stristr($_SESSION["s"]["user"]["modules"],'dns')) {
46     header("Location: ../index.php");
47     exit;
48 }
49
50 // Loading classes
51 $app->uses('tpl,tform,tform_actions');
52 $app->load('tform_actions');
53
54 class page_action extends tform_actions {
55     
ea3796 56     function onShowNew() {
T 57         global $app, $conf;
58         
59         // we will check only users, not admins
60         if($_SESSION["s"]["user"]["typ"] == 'user') {
61             
62             // Get the limits of the client
63             $client_group_id = $_SESSION["s"]["user"]["default_group"];
64             $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");
65             
66             // Check if the user may add another maildomain.
67             if($client["limit_dns_zone"] >= 0) {
68                 $tmp = $app->db->queryOneRecord("SELECT count(id) as number FROM dns_soa WHERE sys_groupid = $client_group_id");
69                 if($tmp["number"] >= $client["limit_dns_zone"]) {
70                     $app->error($app->tform->wordbook["limit_dns_zone_txt"]);
71                 }
72             }
73         }
74         
75         parent::onShowNew();
76     }
77     
78     function onShowEnd() {
79         global $app, $conf;
80         
81         // If user is admin, we will allow him to select to whom this record belongs
b5a23a 82         if($_SESSION["s"]["user"]["typ"] == 'admin' || $app->auth->has_clients($_SESSION['s']['user']['userid'])) {
ea3796 83             // Getting Domains of the user
T 84             $sql = "SELECT groupid, name FROM sys_group WHERE client_id > 0";
85             $clients = $app->db->queryAllRecords($sql);
b5a23a 86             $client_select = '';
T 87             if($_SESSION["s"]["user"]["typ"] == 'admin') $client_select .= "<option value='0'></option>";
ea3796 88             if(is_array($clients)) {
T 89                 foreach( $clients as $client) {
90                     $selected = ($client["groupid"] == $this->dataRecord["sys_groupid"])?'SELECTED':'';
91                     $client_select .= "<option value='$client[groupid]' $selected>$client[name]</option>\r\n";
92                 }
93             }
94         $app->tpl->setVar("client_group_id",$client_select);
95         }
96         
97         parent::onShowEnd();
98     }
99     
f14188 100     function onSubmit() {
T 101         global $app, $conf;
ea3796 102         
8e23f2 103         if($_SESSION["s"]["user"]["typ"] != 'admin') {
T 104             // Get the limits of the client
105             $client_group_id = $_SESSION["s"]["user"]["default_group"];
106             $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");
107         
108             // When the record is updated
109             if($this->id > 0) {
110                 // restore the server ID if the user is not admin and record is edited
111                 $tmp = $app->db->queryOneRecord("SELECT server_id FROM dns_soa WHERE id = ".intval($this->id));
112                 $this->dataRecord["server_id"] = $tmp["server_id"];
113                 unset($tmp);
114             // When the record is inserted
115             } else {
116                 // set the server ID to the default mailserver of the client
117                 $this->dataRecord["server_id"] = $client["default_dnsserver"];
ea3796 118                 
8e23f2 119                 // Check if the user may add another maildomain.
T 120                 if($client["limit_dns_zone"] >= 0) {
121                     $tmp = $app->db->queryOneRecord("SELECT count(id) as number FROM dns_soa WHERE sys_groupid = $client_group_id");
122                     if($tmp["number"] >= $client["limit_dns_zone"]) {
123                         $app->error($app->tform->wordbook["limit_dns_zone_txt"]);
124                     }
ea3796 125                 }
T 126             }
127         }
f14188 128         
T 129         // Set the serial
130         $this->dataRecord["serial"] = time();
131         
132         parent::onSubmit();
133     }
134     
ea3796 135     function onAfterInsert() {
T 136         global $app, $conf;
137         
b5a23a 138         // make sure that the record belongs to the client group and not the admin group when a dmin inserts it
ea3796 139         if($_SESSION["s"]["user"]["typ"] == 'admin' && isset($this->dataRecord["client_group_id"])) {
b5a23a 140             $client_group_id = intval($this->dataRecord["client_group_id"]);
T 141             $app->db->query("UPDATE dns_soa SET sys_groupid = $client_group_id WHERE id = ".$this->id);
142             // And we want to update all rr records too, that belong to this record
143             $app->db->query("UPDATE dns_rr SET sys_groupid = $client_group_id WHERE zone = ".$this->id);
144         }
145         if($app->auth->has_clients($_SESSION['s']['user']['userid']) && isset($this->dataRecord["client_group_id"])) {
ea3796 146             $client_group_id = intval($this->dataRecord["client_group_id"]);
T 147             $app->db->query("UPDATE dns_soa SET sys_groupid = $client_group_id WHERE id = ".$this->id);
148             // And we want to update all rr records too, that belong to this record
149             $app->db->query("UPDATE dns_rr SET sys_groupid = $client_group_id WHERE zone = ".$this->id);
150         }
151     }
152     
153     function onAfterUpdate() {
154         global $app, $conf;
155         
b5a23a 156         // make sure that the record belongs to the client group and not the admin group when a dmin inserts it
ea3796 157         if($_SESSION["s"]["user"]["typ"] == 'admin' && isset($this->dataRecord["client_group_id"])) {
T 158             $client_group_id = intval($this->dataRecord["client_group_id"]);
159             $app->db->query("UPDATE dns_soa SET sys_groupid = $client_group_id WHERE id = ".$this->id);
160             // And we want to update all rr records too, that belong to this record
161             $app->db->query("UPDATE dns_rr SET sys_groupid = $client_group_id WHERE zone = ".$this->id);
162         }
b5a23a 163         if($app->auth->has_clients($_SESSION['s']['user']['userid']) && isset($this->dataRecord["client_group_id"])) {
T 164             $client_group_id = intval($this->dataRecord["client_group_id"]);
165             $app->db->query("UPDATE dns_soa SET sys_groupid = $client_group_id WHERE id = ".$this->id);
166             // And we want to update all rr records too, that belong to this record
167             $app->db->query("UPDATE dns_rr SET sys_groupid = $client_group_id WHERE zone = ".$this->id);
168         }
ea3796 169     }
T 170     
f14188 171 }
T 172
173 $page = new page_action;
174 $page->onLoad();
175
176 ?>