root/trunk/gui/include/client-functions.php

Revision 1414, 25.8 kB (checked in by scitech, 6 hours ago)

Alias subdomain are not deleted when alais is deleted in same operation. Alias subdomains are not counted. Add support for alias subdomain mail (part III)

Line 
1 <?php
2 /**
3  * ispCP ω (OMEGA) a Virtual Hosting Control System
4  *
5  * @copyright     2001-2006 by moleSoftware GmbH
6  * @copyright     2006-2008 by ispCP | http://isp-control.net
7  * @version        SVN: $Id$
8  * @link         http://isp-control.net
9  * @author         ispCP Team
10  *
11  * @license
12  *   This program is free software; you can redistribute it and/or modify it under
13  *   the terms of the MPL General Public License as published by the Free Software
14  *   Foundation; either version 1.1 of the License, or (at your option) any later
15  *   version.
16  *   You should have received a copy of the MPL Mozilla Public License along with
17  *   this program; if not, write to the Open Source Initiative (OSI)
18  *   http://opensource.org | osi@opensource.org
19  */
20
21 function get_domain_default_props(&$sql, $domain_admin_id, $returnWKeys = false) {
22     $query = <<<SQL_QUERY
23         select
24             domain_id,
25             domain_name,
26             domain_gid,
27             domain_uid,
28             domain_created_id,
29             domain_created,
30             domain_last_modified,
31             domain_mailacc_limit,
32             domain_ftpacc_limit,
33             domain_traffic_limit,
34             domain_sqld_limit,
35             domain_sqlu_limit,
36             domain_status,
37             domain_alias_limit,
38             domain_subd_limit,
39             domain_ip_id,
40             domain_disk_limit,
41             domain_disk_usage,
42             domain_php,
43             domain_cgi
44         from
45             domain
46         where
47             domain_admin_id = ?
48 SQL_QUERY;
49
50     $rs = exec_query($sql, $query, array($domain_admin_id));
51
52     if (!$returnWKeys) {
53         return array(
54             $rs->fields['domain_id'],
55             $rs->fields['domain_name'],
56             $rs->fields['domain_gid'],
57             $rs->fields['domain_uid'],
58             $rs->fields['domain_created_id'],
59             $rs->fields['domain_created'],
60             $rs->fields['domain_last_modified'],
61             $rs->fields['domain_mailacc_limit'],
62             $rs->fields['domain_ftpacc_limit'],
63             $rs->fields['domain_traffic_limit'],
64             $rs->fields['domain_sqld_limit'],
65             $rs->fields['domain_sqlu_limit'],
66             $rs->fields['domain_status'],
67             $rs->fields['domain_alias_limit'],
68             $rs->fields['domain_subd_limit'],
69             $rs->fields['domain_ip_id'],
70             $rs->fields['domain_disk_limit'],
71             $rs->fields['domain_disk_usage'],
72             $rs->fields['domain_php'],
73             $rs->fields['domain_cgi']);
74     } else {
75         return $rs->fields;
76     }
77 }
78
79 function get_domain_running_sub_cnt(&$sql, $domain_id) {
80     $query = <<<SQL_QUERY
81         SELECT
82             COUNT(`subdomain_id`) AS cnt
83         FROM
84             `subdomain`
85         WHERE
86             `domain_id` = ?
87 SQL_QUERY;
88
89     $rs = exec_query($sql, $query, array($domain_id));
90
91     $sub_count = $rs->fields['cnt'];
92
93 $query = <<<SQL_QUERY
94         SELECT
95             COUNT(`subdomain_alias_id`) AS cnt
96         FROM
97             `subdomain_alias`
98         WHERE
99             `alias_id` IN (SELECT `alias_id` FROM `domain_aliasses` WHERE `domain_id`=?)
100 SQL_QUERY;
101
102     $rs = exec_query($sql, $query, array($domain_id));
103
104     $alssub_count = $rs->fields['cnt'];
105
106     return $sub_count+$alssub_count;
107 }
108
109 function get_domain_running_als_cnt(&$sql, $domain_id) {
110     $query = <<<SQL_QUERY
111         SELECT
112             COUNT(alias_id) AS cnt
113         FROM
114             domain_aliasses
115         WHERE
116             domain_id = ?
117
118 SQL_QUERY;
119
120     $rs = exec_query($sql, $query, array($domain_id));
121
122     $als_count = $rs->fields['cnt'];
123
124     return $als_count;
125 }
126
127 function get_domain_running_mail_acc_cnt(&$sql, $domain_id) {
128     $query = <<<SQL_QUERY
129         SELECT
130             COUNT(mail_id) AS cnt
131         FROM
132             mail_users
133         WHERE
134             mail_type RLIKE 'normal_'
135           AND
136             mail_type NOT LIKE 'normal_catchall'
137           AND
138             domain_id = ?
139 SQL_QUERY;
140
141     $rs = exec_query($sql, $query, array($domain_id));
142
143     $dmn_mail_acc = $rs->fields['cnt'];
144
145     $query = <<<SQL_QUERY
146         SELECT
147             COUNT(mail_id) AS cnt
148         FROM
149             mail_users
150         WHERE
151             mail_type RLIKE 'alias_'
152           AND
153             mail_type NOT LIKE 'alias_catchall'
154           AND
155             domain_id = ?
156 SQL_QUERY;
157
158     $rs = exec_query($sql, $query, array($domain_id));
159
160     $als_mail_acc = $rs->fields['cnt'];
161
162     $query = <<<SQL_QUERY
163         SELECT
164             COUNT(mail_id) AS cnt
165         FROM
166             mail_users
167         WHERE
168             mail_type RLIKE 'subdom_'
169         AND
170             mail_type NOT LIKE 'subdom_catchall'
171         AND
172             domain_id = ?
173 SQL_QUERY;
174
175     $rs = exec_query($sql, $query, array($domain_id));
176
177     $sub_mail_acc = $rs->fields['cnt'];
178
179     $query = <<<SQL_QUERY
180         SELECT
181             COUNT(mail_id) AS cnt
182         FROM
183             mail_users
184         WHERE
185             mail_type RLIKE 'alssub_'
186         AND
187             mail_type NOT LIKE 'alssub_catchall'
188         AND
189             domain_id = ?
190 SQL_QUERY;
191
192     $rs = exec_query($sql, $query, array($domain_id));
193
194     $alssub_mail_acc = $rs->fields['cnt'];
195
196     return array($dmn_mail_acc + $als_mail_acc + $sub_mail_acc + $alssub_mail_acc,
197         $dmn_mail_acc,
198         $als_mail_acc,
199         $sub_mail_acc,
200         $alssub_mail_acc);
201 }
202
203 function get_domain_running_dmn_ftp_acc_cnt(&$sql, $domain_id) {
204     $ftp_separator=Config::get('FTP_USERNAME_SEPARATOR');
205
206     $query = <<<SQL_QUERY
207         SELECT
208             domain_name
209         FROM
210             domain
211         WHERE
212             domain_id = ?
213 SQL_QUERY;
214
215     $rs = exec_query($sql, $query, array($domain_id));
216
217     $dmn_name = $rs->fields['domain_name'];
218
219     $query = <<<SQL_QUERY
220         SELECT
221             COUNT(userid) AS cnt
222         FROM
223             ftp_users
224         WHERE
225             userid RLIKE ?
226 SQL_QUERY;
227
228     $rs = exec_query($sql, $query, array($ftp_separator . $dmn_name));
229
230     $dmn_ftp_acc_cnt = $rs->fields['cnt'];
231
232     return $dmn_ftp_acc_cnt;
233 }
234
235 function get_domain_running_sub_ftp_acc_cnt(&$sql, $domain_id) {
236     $ftp_separator=Config::get('FTP_USERNAME_SEPARATOR');
237     $query = <<<SQL_QUERY
238         SELECT
239             subdomain_name
240         FROM
241             subdomain
242         WHERE
243             domain_id = ?
244         ORDER BY
245             subdomain_id
246 SQL_QUERY;
247
248     $query2 = <<<SQL_QUERY
249         SELECT
250             domain_name
251         FROM
252             domain
253         WHERE
254             domain_id = ?
255 SQL_QUERY;
256
257     $dmn = exec_query($sql, $query2, array($domain_id));
258     $rs = exec_query($sql, $query, array($domain_id));
259
260     $sub_ftp_acc_cnt = 0;
261
262     while (!$rs->EOF) {
263         $sub_name = $rs->fields['subdomain_name'];
264
265         $query = <<<SQL_QUERY
266             SELECT
267                 COUNT(userid) AS cnt
268             FROM
269                 ftp_users
270             WHERE
271                 userid RLIKE ?
272 SQL_QUERY;
273
274         $rs_cnt = exec_query($sql, $query, array($ftp_separator . $sub_name . '.' . $dmn->fields['domain_name']));
275
276         $sub_ftp_acc_cnt += $rs_cnt->fields['cnt'];
277
278         $rs->MoveNext();
279     }
280
281     return $sub_ftp_acc_cnt;
282 }
283
284 function get_domain_running_als_ftp_acc_cnt(&$sql, $domain_id) {
285     $ftp_separator=Config::get('FTP_USERNAME_SEPARATOR');
286     $query = <<<SQL_QUERY
287         SELECT
288             alias_name
289         FROM
290             domain_aliasses
291         WHERE
292             domain_id = ?
293         ORDER BY
294             alias_id
295 SQL_QUERY;
296
297     $rs = exec_query($sql, $query, array($domain_id));
298
299     $als_ftp_acc_cnt = 0;
300
301     while (!$rs->EOF) {
302         $als_name = $rs->fields['alias_name'];
303
304         $query = <<<SQL_QUERY
305             SELECT
306                 COUNT(userid) AS cnt
307             FROM
308                 ftp_users
309             WHERE
310                 userid RLIKE ?
311 SQL_QUERY;
312
313         $rs_cnt = exec_query($sql, $query, array($ftp_separator . $als_name));
314
315         $als_ftp_acc_cnt += $rs_cnt->fields['cnt'];
316
317         $rs->MoveNext();
318     }
319
320     return $als_ftp_acc_cnt;
321 }
322
323 function get_domain_running_ftp_acc_cnt(&$sql, $domain_id) {
324
325     $dmn_ftp_acc_cnt = get_domain_running_dmn_ftp_acc_cnt($sql, $domain_id);
326     $sub_ftp_acc_cnt = get_domain_running_sub_ftp_acc_cnt($sql, $domain_id);
327     $als_ftp_acc_cnt = get_domain_running_als_ftp_acc_cnt($sql, $domain_id);
328
329     return array(
330         $dmn_ftp_acc_cnt + $sub_ftp_acc_cnt + $als_ftp_acc_cnt,
331         $dmn_ftp_acc_cnt,
332         $sub_ftp_acc_cnt,
333         $als_ftp_acc_cnt);
334 }
335
336 function get_domain_running_sqld_acc_cnt(&$sql, $domain_id) {
337     $query = <<<SQL_QUERY
338         SELECT
339             COUNT(sqld_id) AS cnt
340         FROM
341             sql_database
342         WHERE
343             domain_id = ?
344 SQL_QUERY;
345
346     $rs = exec_query($sql, $query, array($domain_id));
347
348     $sqld_acc_cnt = $rs->fields['cnt'];
349
350     return $sqld_acc_cnt;
351 }
352
353 function get_domain_running_sqlu_acc_cnt(&$sql, $domain_id) {
354     $query = <<<SQL_QUERY
355         SELECT DISTINCT
356             t1.sqlu_name
357         FROM
358             sql_user AS t1, sql_database AS t2
359         WHERE
360             t2.domain_id = ?
361           AND
362             t2.sqld_id = t1.sqld_id
363 SQL_QUERY;
364
365     $rs = exec_query($sql, $query, array($domain_id));
366
367     $sqlu_acc_cnt = $rs->RecordCount();
368
369     return $sqlu_acc_cnt;
370 }
371
372 function get_domain_running_sql_acc_cnt(&$sql, $domain_id) {
373
374     $sqld_acc_cnt = get_domain_running_sqld_acc_cnt($sql, $domain_id);
375     $sqlu_acc_cnt = get_domain_running_sqlu_acc_cnt($sql, $domain_id);
376
377     return array($sqld_acc_cnt, $sqlu_acc_cnt);
378 }
379
380 function get_domain_running_props_cnt(&$sql, $domain_id) {
381
382     $sub_cnt = get_domain_running_sub_cnt($sql, $domain_id);
383     $als_cnt = get_domain_running_als_cnt($sql, $domain_id);
384
385     list($mail_acc_cnt, $dmn_mail_acc_cnt, $sub_mail_acc_cnt, $als_mail_acc_cnt, $alssub_mail_acc_cnt) = get_domain_running_mail_acc_cnt($sql, $domain_id);
386     list($ftp_acc_cnt, $dmn_ftp_acc_cnt, $sub_ftp_acc_cnt, $als_ftp_acc_cnt) = get_domain_running_ftp_acc_cnt($sql, $domain_id);
387     list($sqld_acc_cnt, $sqlu_acc_cnt) = get_domain_running_sql_acc_cnt($sql, $domain_id);
388
389     return array($sub_cnt, $als_cnt, $mail_acc_cnt, $ftp_acc_cnt, $sqld_acc_cnt, $sqlu_acc_cnt);
390 }
391
392 function gen_client_mainmenu(&$tpl, $menu_file) {
393     $sql = Database::getInstance();
394
395     $tpl->define_dynamic('menu', $menu_file);
396     $tpl->define_dynamic('isactive_awstats', 'menu');
397     $tpl->define_dynamic('isactive_domain', 'menu');
398     $tpl->define_dynamic('isactive_email', 'menu');
399     $tpl->define_dynamic('isactive_ftp', 'menu');
400     $tpl->define_dynamic('isactive_sql', 'menu');
401     $tpl->define_dynamic('isactive_support', 'menu');
402     $tpl->define_dynamic('custom_buttons', 'menu');
403
404     $tpl->assign(
405             array(
406                 'TR_MENU_GENERAL_INFORMATION' => tr('General information'),
407                 'TR_MENU_CHANGE_PASSWORD' => tr('Change password'),
408                 'TR_MENU_CHANGE_PERSONAL_DATA' => tr('Change personal data'),
409                 'TR_MENU_MANAGE_DOMAINS' => tr('Manage domains'),
410                 'TR_MENU_ADD_SUBDOMAIN' => tr('Add subdomain'),
411                 'TR_MENU_MANAGE_USERS' => tr('Email and FTP accounts'),
412                 'TR_MENU_ADD_MAIL_USER' => tr('Add mail user'),
413                 'TR_MENU_ADD_FTP_USER' => tr('Add FTP user'),
414                 'TR_MENU_MANAGE_SQL' => tr('Manage SQL'),
415                 'TR_MENU_ERROR_PAGES' => tr('Error pages'),
416                 'TR_MENU_ADD_SQL_DATABASE' => tr('Add SQL database'),
417                 'TR_MENU_DOMAIN_STATISTICS' => tr('Domain statistics'),
418                 'TR_MENU_DAILY_BACKUP' => tr('Daily backup'),
419                 'TR_MENU_QUESTIONS_AND_COMMENTS' => tr('Support system'),
420                 'TR_MENU_NEW_TICKET' => tr('New ticket'),
421                 'TR_MENU_LOGOUT' => tr('Logout'),
422                 'PHP_MY_ADMIN' => tr('PhpMyAdmin'),
423                 'TR_WEBMAIL' => tr('Webmail'),
424                 'TR_FILEMANAGER' => tr('Filemanager'),
425                 'TR_MENU_WEBTOOLS' => tr('Webtools'),
426                 'TR_HTACCESS' => tr('Protected areas'),
427                 'TR_AWSTATS' => tr('Web statistics'),
428                 'TR_HTACCESS_USER' => tr('Group/User management'),
429                 'TR_MENU_OVERVIEW' => tr('Overview'),
430                 'TR_MENU_EMAIL_ACCOUNTS' => tr('Email Accounts'),
431                 'TR_MENU_FTP_ACCOUNTS' => tr('FTP Accounts'),
432                 'TR_MENU_LANGUAGE' => tr('Language'),
433                 'TR_MENU_CATCH_ALL_MAIL' => tr('Catch all'),
434                 'TR_MENU_ADD_ALIAS' => tr('Add alias'),
435                 'TR_MENU_UPDATE_HP' => tr('Update Hosting Package'),
436                 'SUPPORT_SYSTEM_PATH' => Config::get('ISPCP_SUPPORT_SYSTEM_PATH'),
437                 'SUPPORT_SYSTEM_TARGET' => Config::get('ISPCP_SUPPORT_SYSTEM_TARGET'),
438                 'WEBMAIL_PATH' => Config::get('WEBMAIL_PATH'),
439                 'WEBMAIL_TARGET' => Config::get('WEBMAIL_TARGET'),
440                 'PMA_PATH' => Config::get('PMA_PATH'),
441                 'PMA_TARGET' => Config::get('PMA_TARGET'),
442                 'FILEMANAGER_PATH' => Config::get('FILEMANAGER_PATH'),
443                 'FILEMANAGER_TARGET' => Config::get('FILEMANAGER_TARGET'),
444             )
445         );
446
447     $query = <<<SQL_QUERY
448         SELECT
449             *
450         FROM
451             custom_menus
452         WHERE
453             menu_level = 'user'
454           OR
455             menu_level = 'all'
456 SQL_QUERY;
457
458     $rs = exec_query($sql, $query, array());
459     if ($rs->RecordCount() == 0) {
460         $tpl->assign('CUSTOM_BUTTONS', '');
461     } else {
462         global $i;
463         $i = 100;
464
465         while (!$rs->EOF) {
466             $menu_name = $rs->fields['menu_name'];
467             $menu_link = get_menu_vars($rs->fields['menu_link']);
468             $menu_target = $rs->fields['menu_target'];
469             $menu_link = str_replace('{ispcp_uname}', $_SESSION['user_logged'], $menu_link);
470
471             if ($menu_target === '') {
472                 $menu_target = "";
473             } else {
474                 $menu_target = "target=\"" . $menu_target . "\"";
475             }
476
477             $tpl->assign(
478                     array(
479                         'BUTTON_LINK' => $menu_link,
480                         'BUTTON_NAME' => $menu_name,
481                         'BUTTON_TARGET' => $menu_target,
482                         'BUTTON_ID' => $i,
483                         )
484                 );
485
486             $tpl->parse('CUSTOM_BUTTONS', '.custom_buttons');
487             $rs->MoveNext();
488             $i++;
489         } // end while
490     } // end else
491
492     list($dmn_id, $dmn_name, $dmn_gid, $dmn_uid, $dmn_created_id, $dmn_created, $dmn_last_modified,
493          $dmn_mailacc_limit, $dmn_ftpacc_limit, $dmn_traff_limit, $dmn_sqld_limit, $dmn_sqlu_limit,
494          $dmn_status, $dmn_als_limit, $dmn_subd_limit, $dmn_ip_id, $dmn_disk_limit, $dmn_disk_usage,
495          $dmn_php, $dmn_cgi) = get_domain_default_props($sql, $_SESSION['user_id']);
496
497     if ($dmn_mailacc_limit == -1) $tpl->assign('ISACTIVE_EMAIL', '');
498     if (($dmn_als_limit == -1) && ($dmn_subd_limit == -1)) $tpl->assign('ISACTIVE_DOMAIN', '');
499     if ($dmn_ftpacc_limit == -1) $tpl->assign('ISACTIVE_FTP', '');
500     if ($dmn_sqld_limit == -1) $tpl->assign('ISACTIVE_SQL', '');
501
502     if (!Config::get('ISPCP_SUPPORT_SYSTEM')) {
503         $tpl->assign('ISACTIVE_SUPPORT', '');
504     }
505
506     if (Config::get('AWSTATS_ACTIVE') == 'no') {
507         $tpl->assign('ISACTIVE_AWSTATS', '');
508     } else {
509         $tpl->assign(
510             array(
511                 'AWSTATS_PATH' => 'http://' . $_SESSION['user_logged'] . '/stats/',
512                 'AWSTATS_TARGET' => '_blank'
513                 )
514             );
515     }
516
517     $tpl->parse('MAIN_MENU', 'menu');
518 }
519
520 function gen_client_menu(&$tpl, $menu_file) {
521     $sql = Database::getInstance();
522
523     $tpl->define_dynamic('menu', $menu_file);
524     $tpl->define_dynamic('custom_buttons', 'menu');
525     $tpl->define_dynamic('isactive_update_hp', 'menu');
526
527     $tpl->assign(
528             array(
529                 'TR_MENU_GENERAL_INFORMATION' => tr('General information'),
530                 'TR_MENU_CHANGE_PASSWORD' => tr('Change password'),
531                 'TR_MENU_CHANGE_PERSONAL_DATA' => tr('Change personal data'),
532                 'TR_MENU_MANAGE_DO