From 7e2a3fa28cf3edf250a627386e7199f14cad6cf0 Mon Sep 17 00:00:00 2001
From: Florian Schaal <florian@schaal-24.de>
Date: Sun, 21 Feb 2016 06:58:09 -0500
Subject: [PATCH] Add DB-User limit (Issue #2586)

---
 interface/web/client/lib/lang/hr_reseller.lng                  |    4 
 interface/web/sites/lib/lang/ar_database_user.lng              |    1 
 interface/web/sites/lib/lang/ca_database_user.lng              |    1 
 interface/web/client/lib/lang/cz_reseller.lng                  |    4 
 interface/web/client/lib/lang/en_client.lng                    |    3 
 interface/web/client/lib/lang/nl_client.lng                    |    2 
 interface/web/client/lib/lang/es_reseller.lng                  |    4 
 interface/web/client/lib/lang/tr_client.lng                    |    2 
 install/sql/ispconfig3.sql                                     |    2 
 install/sql/incremental/upd_dev_collection.sql                 |    4 
 interface/web/sites/lib/lang/es_database_user.lng              |    1 
 interface/web/client/lib/lang/se_reseller.lng                  |    4 
 interface/web/sites/database_user_edit.php                     |   16 +++
 interface/web/client/lib/lang/fi_reseller.lng                  |    4 
 interface/web/client/lib/lang/ja_reseller.lng                  |    4 
 interface/web/client/lib/lang/it_client.lng                    |    2 
 interface/web/client/lib/lang/fi_client.lng                    |    2 
 interface/web/client/lib/lang/el_client.lng                    |    2 
 interface/web/client/lib/lang/cz_client.lng                    |    2 
 interface/web/client/lib/lang/ja_client.lng                    |    2 
 interface/web/client/lib/lang/it_reseller.lng                  |    4 
 interface/web/sites/lib/lang/se_database_user.lng              |    1 
 interface/web/client/lib/lang/de_client.lng                    |    2 
 interface/web/client/lib/lang/pl_reseller.lng                  |    4 
 interface/web/client/lib/lang/ro_client.lng                    |    2 
 interface/web/sites/lib/lang/de_database_user.lng              |    1 
 interface/web/sites/lib/lang/fr_database_user.lng              |    1 
 interface/web/client/lib/lang/fr_client.lng                    |    2 
 interface/web/sites/lib/lang/el_database_user.lng              |    1 
 interface/web/sites/lib/lang/tr_database_user.lng              |    1 
 interface/web/client/lib/lang/hr_client.lng                    |    2 
 interface/web/client/form/reseller.tform.php                   |   14 ++
 interface/web/sites/lib/lang/hr_database_user.lng              |    1 
 interface/web/sites/lib/lang/nl_database_user.lng              |    1 
 interface/web/client/lib/lang/es_client.lng                    |    2 
 interface/web/sites/lib/lang/pl_database_user.lng              |    1 
 interface/web/client/lib/lang/hu_reseller.lng                  |    4 
 interface/web/client/lib/lang/tr_reseller.lng                  |    4 
 interface/web/sites/lib/lang/bg_database_user.lng              |    1 
 interface/web/sites/lib/lang/pt_database_user.lng              |    1 
 interface/web/client/lib/lang/ru_reseller.lng                  |    4 
 interface/web/sites/lib/lang/br_database_user.lng              |    1 
 interface/web/client/lib/lang/ar_reseller.lng                  |    4 
 interface/web/client/lib/lang/el_reseller.lng                  |    4 
 interface/web/client/lib/lang/en_reseller.lng                  |    5 +
 interface/web/client/lib/lang/bg_client.lng                    |    2 
 interface/web/client/lib/lang/hu_client.lng                    |    2 
 interface/web/client/lib/lang/se_client.lng                    |    2 
 interface/web/client/lib/lang/bg_reseller.lng                  |    4 
 interface/web/client/lib/lang/ca_reseller.lng                  |    4 
 interface/web/client/lib/lang/pt_reseller.lng                  |    4 
 interface/web/sites/lib/lang/sk_database_user.lng              |    1 
 interface/web/sites/lib/lang/cz_database_user.lng              |    1 
 interface/web/client/lib/lang/ro_reseller.lng                  |    4 
 interface/web/client/templates/reseller_edit_limits.htm        |    3 
 interface/web/client/lib/lang/id_client.lng                    |    2 
 interface/web/sites/lib/lang/ja_database_user.lng              |    1 
 interface/web/client/lib/lang/br_client.lng                    |    2 
 interface/web/sites/lib/lang/id_database_user.lng              |    1 
 interface/web/client/lib/lang/ar_client.lng                    |    2 
 interface/web/client/templates/client_template_edit_limits.htm |    3 
 interface/web/client/lib/lang/br_reseller.lng                  |    4 
 interface/web/client/templates/client_edit_limits.htm          |    3 
 interface/web/client/form/client.tform.php                     |   14 ++
 interface/web/client/lib/lang/ru_client.lng                    |    2 
 interface/web/client/lib/lang/de_reseller.lng                  |    4 
 interface/web/client/lib/lang/nl_reseller.lng                  |    4 
 interface/web/sites/lib/lang/en_database_user.lng              |    1 
 interface/web/sites/lib/lang/fi_database_user.lng              |    1 
 interface/web/client/lib/lang/sk_client.lng                    |    2 
 interface/web/sites/lib/lang/it_database_user.lng              |    1 
 interface/web/sites/lib/lang/hu_database_user.lng              |    1 
 interface/web/client/lib/lang/ca_client.lng                    |    2 
 interface/web/sites/lib/lang/ru_database_user.lng              |    1 
 interface/web/client/lib/lang/pl_client.lng                    |    2 
 interface/web/client/form/client_template.tform.php            |   14 ++
 interface/web/client/lib/lang/sk_reseller.lng                  |    4 
 interface/web/client/lib/lang/fr_reseller.lng                  |    4 
 interface/web/client/lib/lang/id_reseller.lng                  |    4 
 interface/web/sites/lib/lang/ro_database_user.lng              |    1 
 interface/web/client/lib/lang/pt_client.lng                    |    2 
 81 files changed, 243 insertions(+), 0 deletions(-)

diff --git a/install/sql/incremental/upd_dev_collection.sql b/install/sql/incremental/upd_dev_collection.sql
index d834f98..07c5391 100644
--- a/install/sql/incremental/upd_dev_collection.sql
+++ b/install/sql/incremental/upd_dev_collection.sql
@@ -222,3 +222,7 @@
 	ADD COLUMN `lost_password_reqtime` DATETIME NULL default NULL;
 
 ALTER TABLE `web_database` ADD COLUMN `quota_exceeded` enum('n','y') NOT NULL DEFAULT 'n' AFTER `database_quota`;
+
+ALTER TABLE `client` ADD COLUMN `limit_database_users` int(11) NOT NULL DEFAULT '-1' after limit_database;
+ALTER TABLE `client_template` ADD COLUMN `limit_database_users` int(11) NOT NULL DEFAULT '-1' after limit_database;
+	
diff --git a/install/sql/ispconfig3.sql b/install/sql/ispconfig3.sql
index 945b30f..7e706f9 100644
--- a/install/sql/ispconfig3.sql
+++ b/install/sql/ispconfig3.sql
@@ -230,6 +230,7 @@
   `default_dbserver` int(11) NOT NULL DEFAULT '1',
   `dns_servers` blob,
   `limit_database` int(11) NOT NULL DEFAULT '-1',
+  `limit_database_users` int(11) NOT NULL DEFAULT '-1',
   `limit_database_quota` int(11) NOT NULL default '-1',
   `limit_cron` int(11) NOT NULL DEFAULT '0',
   `limit_cron_type` enum('url','chrooted','full') NOT NULL DEFAULT 'url',
@@ -351,6 +352,7 @@
   `limit_dns_slave_zone` int(11) NOT NULL default '-1',
   `limit_dns_record` int(11) NOT NULL default '-1',
   `limit_database` int(11) NOT NULL default '-1',
+  `limit_database_users` int(11) NOT NULL DEFAULT '-1',
   `limit_database_quota` int(11) NOT NULL default '-1',
   `limit_cron` int(11) NOT NULL default '0',
   `limit_cron_type` enum('url','chrooted','full') NOT NULL default 'url',
diff --git a/interface/web/client/form/client.tform.php b/interface/web/client/form/client.tform.php
index 4e972b9..34cdd2e 100644
--- a/interface/web/client/form/client.tform.php
+++ b/interface/web/client/form/client.tform.php
@@ -1262,6 +1262,20 @@
 			'rows'  => '',
 			'cols'  => ''
 		),
+		'limit_database_user' => array (
+			'datatype' => 'INTEGER',
+			'formtype' => 'TEXT',
+			'validators' => array (  0 => array ( 'type' => 'ISINT',
+					'errmsg'=> 'limit_database_user_notint'),
+			),
+			'default' => '-1',
+			'value'  => '',
+			'separator' => '',
+			'width'  => '10',
+			'maxlength' => '10',
+			'rows'  => '',
+			'cols'  => ''
+		),
 		'limit_database_quota' => array (
 			'datatype' => 'INTEGER',
 			'formtype' => 'TEXT',
diff --git a/interface/web/client/form/client_template.tform.php b/interface/web/client/form/client_template.tform.php
index 2da539c..a16d21f 100644
--- a/interface/web/client/form/client_template.tform.php
+++ b/interface/web/client/form/client_template.tform.php
@@ -729,6 +729,20 @@
 			'rows'  => '',
 			'cols'  => ''
 		),
+		'limit_database_user' => array (
+			'datatype' => 'INTEGER',
+			'formtype' => 'TEXT',
+			'validators' => array (  0 => array ( 'type' => 'ISINT',
+					'errmsg'=> 'limit_database_user_error_notint'),
+			),
+			'default' => '0',
+			'value'  => '',
+			'separator' => '',
+			'width'  => '10',
+			'maxlength' => '10',
+			'rows'  => '',
+			'cols'  => ''
+		),
 		'limit_database_quota' => array (
 			'datatype' => 'INTEGER',
 			'formtype' => 'TEXT',
diff --git a/interface/web/client/form/reseller.tform.php b/interface/web/client/form/reseller.tform.php
index 50d5e74..b41cd53 100644
--- a/interface/web/client/form/reseller.tform.php
+++ b/interface/web/client/form/reseller.tform.php
@@ -1261,6 +1261,20 @@
 			'rows'  => '',
 			'cols'  => ''
 		),
+		'limit_database_user' => array (
+			'datatype' => 'INTEGER',
+			'formtype' => 'TEXT',
+			'validators' => array (  0 => array ( 'type' => 'ISINT',
+					'errmsg'=> 'limit_database_user_error_notint'),
+			),
+			'default' => '-1',
+			'value'  => '',
+			'separator' => '',
+			'width'  => '10',
+			'maxlength' => '10',
+			'rows'  => '',
+			'cols'  => ''
+		),
 		'limit_cron' => array (
 			'datatype'  => 'INTEGER',
 			'formtype'  => 'TEXT',
diff --git a/interface/web/client/lib/lang/ar_client.lng b/interface/web/client/lib/lang/ar_client.lng
index 1fd0552..b9735d8 100644
--- a/interface/web/client/lib/lang/ar_client.lng
+++ b/interface/web/client/lib/lang/ar_client.lng
@@ -194,4 +194,6 @@
 $wb['btn_save_txt'] = 'Save';
 $wb['btn_cancel_txt'] = 'Cancel';
 $wb['invalid_vat_id'] = 'The VAT ID is invalid.';
+$wb['limit_database_user_txt'] = 'Max. Database users';
+$wb['limit_database_user_error_notint'] = 'The database user limit must be a number.';
 ?>
diff --git a/interface/web/client/lib/lang/ar_reseller.lng b/interface/web/client/lib/lang/ar_reseller.lng
index adabf8d..e3a764e 100644
--- a/interface/web/client/lib/lang/ar_reseller.lng
+++ b/interface/web/client/lib/lang/ar_reseller.lng
@@ -196,4 +196,8 @@
 $wb['limit_xmpp_proxy_txt'] = 'Bytestream proxy available';
 $wb['limit_xmpp_status_txt'] = 'Status host available';
 $wb['invalid_vat_id'] = 'The VAT ID is invalid.';
+$wb['limit_database_user_txt'] = 'Max. Database users';
+$wb['limit_database_user_error_notint'] = 'The database user limit must be a number.';
+$wb['limit_database_quota_txt'] = 'Database quota';
+$wb['limit_database_quota_error_notint'] = 'The database quota limit must be a number.';
 ?>
diff --git a/interface/web/client/lib/lang/bg_client.lng b/interface/web/client/lib/lang/bg_client.lng
index cb61f56..f81b81a 100644
--- a/interface/web/client/lib/lang/bg_client.lng
+++ b/interface/web/client/lib/lang/bg_client.lng
@@ -194,4 +194,6 @@
 $wb['btn_save_txt'] = 'Save';
 $wb['btn_cancel_txt'] = 'Cancel';
 $wb['invalid_vat_id'] = 'The VAT ID is invalid.';
+$wb['limit_database_user_txt'] = 'Max. Database users';
+$wb['limit_database_user_error_notint'] = 'The database user limit must be a number.';
 ?>
diff --git a/interface/web/client/lib/lang/bg_reseller.lng b/interface/web/client/lib/lang/bg_reseller.lng
index c27de72..a17b3f9 100644
--- a/interface/web/client/lib/lang/bg_reseller.lng
+++ b/interface/web/client/lib/lang/bg_reseller.lng
@@ -196,4 +196,8 @@
 $wb['limit_xmpp_proxy_txt'] = 'Bytestream proxy available';
 $wb['limit_xmpp_status_txt'] = 'Status host available';
 $wb['invalid_vat_id'] = 'The VAT ID is invalid.';
+$wb['limit_database_user_txt'] = 'Max. Database users';
+$wb['limit_database_user_error_notint'] = 'The database user limit must be a number.';
+$wb['limit_database_quota_txt'] = 'Database quota';
+$wb['limit_database_quota_error_notint'] = 'The database quota limit must be a number.';
 ?>
diff --git a/interface/web/client/lib/lang/br_client.lng b/interface/web/client/lib/lang/br_client.lng
index a1f399e..84fc0cb 100644
--- a/interface/web/client/lib/lang/br_client.lng
+++ b/interface/web/client/lib/lang/br_client.lng
@@ -194,4 +194,6 @@
 $wb['btn_save_txt'] = 'Save';
 $wb['btn_cancel_txt'] = 'Cancel';
 $wb['invalid_vat_id'] = 'The VAT ID is invalid.';
+$wb['limit_database_user_txt'] = 'Max. Database users';
+$wb['limit_database_user_error_notint'] = 'The database user limit must be a number.';
 ?>
diff --git a/interface/web/client/lib/lang/br_reseller.lng b/interface/web/client/lib/lang/br_reseller.lng
index 1fa842a..0813b79 100644
--- a/interface/web/client/lib/lang/br_reseller.lng
+++ b/interface/web/client/lib/lang/br_reseller.lng
@@ -196,4 +196,8 @@
 $wb['limit_xmpp_proxy_txt'] = 'Bytestream proxy available';
 $wb['limit_xmpp_status_txt'] = 'Status host available';
 $wb['invalid_vat_id'] = 'The VAT ID is invalid.';
+$wb['limit_database_user_txt'] = 'Max. Database users';
+$wb['limit_database_user_error_notint'] = 'The database user limit must be a number.';
+$wb['limit_database_quota_txt'] = 'Database quota';
+$wb['limit_database_quota_error_notint'] = 'The database quota limit must be a number.';
 ?>
diff --git a/interface/web/client/lib/lang/ca_client.lng b/interface/web/client/lib/lang/ca_client.lng
index 1b76623..21f3778 100644
--- a/interface/web/client/lib/lang/ca_client.lng
+++ b/interface/web/client/lib/lang/ca_client.lng
@@ -194,4 +194,6 @@
 $wb['btn_cancel_txt'] = 'Cancel';
 $wb['invalid_vat_id'] = 'The VAT ID is invalid.';
 $wb['email_error_empty'] = 'Email is empty';
+$wb['limit_database_user_txt'] = 'Max. Database users';
+$wb['limit_database_user_error_notint'] = 'The database user limit must be a number.';
 ?>
diff --git a/interface/web/client/lib/lang/ca_reseller.lng b/interface/web/client/lib/lang/ca_reseller.lng
index 62da031..9f3a816 100644
--- a/interface/web/client/lib/lang/ca_reseller.lng
+++ b/interface/web/client/lib/lang/ca_reseller.lng
@@ -196,4 +196,8 @@
 $wb['btn_save_txt'] = 'Save';
 $wb['btn_cancel_txt'] = 'Cancel';
 $wb['email_error_empty'] = 'Email is empty';
+$wb['limit_database_user_txt'] = 'Max. Database users';
+$wb['limit_database_user_error_notint'] = 'The database user limit must be a number.';
+$wb['limit_database_quota_txt'] = 'Database quota';
+$wb['limit_database_quota_error_notint'] = 'The database quota limit must be a number.';
 ?>
diff --git a/interface/web/client/lib/lang/cz_client.lng b/interface/web/client/lib/lang/cz_client.lng
index d7ec73d..65e8aff 100644
--- a/interface/web/client/lib/lang/cz_client.lng
+++ b/interface/web/client/lib/lang/cz_client.lng
@@ -194,4 +194,6 @@
 $wb['btn_save_txt'] = 'Save';
 $wb['btn_cancel_txt'] = 'Cancel';
 $wb['invalid_vat_id'] = 'The VAT ID is invalid.';
+$wb['limit_database_user_txt'] = 'Max. Database users';
+$wb['limit_database_user_error_notint'] = 'The database user limit must be a number.';
 ?>
diff --git a/interface/web/client/lib/lang/cz_reseller.lng b/interface/web/client/lib/lang/cz_reseller.lng
index 1e0e479..4a4c111 100644
--- a/interface/web/client/lib/lang/cz_reseller.lng
+++ b/interface/web/client/lib/lang/cz_reseller.lng
@@ -196,4 +196,8 @@
 $wb['limit_xmpp_proxy_txt'] = 'Bytestream proxy available';
 $wb['limit_xmpp_status_txt'] = 'Status host available';
 $wb['invalid_vat_id'] = 'The VAT ID is invalid.';
+$wb['limit_database_user_txt'] = 'Max. Database users';
+$wb['limit_database_user_error_notint'] = 'The database user limit must be a number.';
+$wb['limit_database_quota_txt'] = 'Database quota';
+$wb['limit_database_quota_error_notint'] = 'The database quota limit must be a number.';
 ?>
diff --git a/interface/web/client/lib/lang/de_client.lng b/interface/web/client/lib/lang/de_client.lng
index 7036842..d244475 100644
--- a/interface/web/client/lib/lang/de_client.lng
+++ b/interface/web/client/lib/lang/de_client.lng
@@ -196,4 +196,6 @@
 $wb['limit_xmpp_proxy_txt'] = 'Bytestream proxy available';
 $wb['limit_xmpp_status_txt'] = 'Status host available';
 $wb['limit_directive_snippets_txt'] = 'Webserver-Konfigurationsauswahl sichtbar';
+$wb['limit_database_user_txt'] = 'Max. Database users';
+$wb['limit_database_user_error_notint'] = 'The database user limit must be a number.';
 ?>
diff --git a/interface/web/client/lib/lang/de_reseller.lng b/interface/web/client/lib/lang/de_reseller.lng
index 137d206..057a675 100644
--- a/interface/web/client/lib/lang/de_reseller.lng
+++ b/interface/web/client/lib/lang/de_reseller.lng
@@ -198,4 +198,8 @@
 $wb['limit_xmpp_proxy_txt'] = 'Bytestream proxy available';
 $wb['limit_xmpp_status_txt'] = 'Status host available';
 $wb['limit_directive_snippets_txt'] = 'Webserver-Konfigurationsauswahl sichtbar';
+$wb['limit_database_user_txt'] = 'Max. Database users';
+$wb['limit_database_user_error_notint'] = 'The database user limit must be a number.';
+$wb['limit_database_quota_txt'] = 'Database quota';
+$wb['limit_database_quota_error_notint'] = 'The database quota limit must be a number.';
 ?>
diff --git a/interface/web/client/lib/lang/el_client.lng b/interface/web/client/lib/lang/el_client.lng
index 6e4adbf..00dfe60 100644
--- a/interface/web/client/lib/lang/el_client.lng
+++ b/interface/web/client/lib/lang/el_client.lng
@@ -194,4 +194,6 @@
 $wb['btn_save_txt'] = 'Save';
 $wb['btn_cancel_txt'] = 'Cancel';
 $wb['invalid_vat_id'] = 'The VAT ID is invalid.';
+$wb['limit_database_user_txt'] = 'Max. Database users';
+$wb['limit_database_user_error_notint'] = 'The database user limit must be a number.';
 ?>
diff --git a/interface/web/client/lib/lang/el_reseller.lng b/interface/web/client/lib/lang/el_reseller.lng
index f1c1cb8..00302e8 100644
--- a/interface/web/client/lib/lang/el_reseller.lng
+++ b/interface/web/client/lib/lang/el_reseller.lng
@@ -196,4 +196,8 @@
 $wb['limit_xmpp_proxy_txt'] = 'Bytestream proxy available';
 $wb['limit_xmpp_status_txt'] = 'Status host available';
 $wb['invalid_vat_id'] = 'The VAT ID is invalid.';
+$wb['limit_database_user_txt'] = 'Max. Database users';
+$wb['limit_database_user_error_notint'] = 'The database user limit must be a number.';
+$wb['limit_database_quota_txt'] = 'Database quota';
+$wb['limit_database_quota_error_notint'] = 'The database quota limit must be a number.';
 ?>
diff --git a/interface/web/client/lib/lang/en_client.lng b/interface/web/client/lib/lang/en_client.lng
index ac3336d..05cf0f4 100644
--- a/interface/web/client/lib/lang/en_client.lng
+++ b/interface/web/client/lib/lang/en_client.lng
@@ -196,6 +196,9 @@
 $wb['none_txt'] = 'none';
 $wb['limit_database_quota_txt'] = 'Database quota';
 $wb['limit_database_quota_error_notint'] = 'The database quota limit must be a number.';
+$wb['limit_database_user_txt'] = "Max. Database users";
+$wb['limit_database_user_error_notint'] = 'The database user limit must be a number.';
+
 $wb['reseller_txt'] = 'Reseller';
 $wb['btn_save_txt'] = "Save";
 $wb['btn_cancel_txt'] = "Cancel";
diff --git a/interface/web/client/lib/lang/en_reseller.lng b/interface/web/client/lib/lang/en_reseller.lng
index 1cc3e5e..b40219f 100644
--- a/interface/web/client/lib/lang/en_reseller.lng
+++ b/interface/web/client/lib/lang/en_reseller.lng
@@ -42,6 +42,7 @@
 $wb["limit_subdomain_txt"] = 'limit_subdomain';
 $wb["limit_webquota_txt"] = 'limit_webquota';
 $wb["limit_database_txt"] = 'limit_database';
+$wb["limit_database_user_txt"] = "Max. Database users";
 $wb["limit_cron_txt"] = 'Max. number of cron jobs';
 $wb["limit_cron_type_txt"] = 'Max. type of cron jobs (chrooted and full implies url)';
 $wb["limit_cron_frequency_txt"] = 'Min. delay between executions';
@@ -203,4 +204,8 @@
 $wb["email_error_empty"] = "Email is empty";
 $wb['limit_directive_snippets_txt'] = 'Show web server config selection';
 
+$wb['limit_database_user_txt'] = 'Max. Database users';
+$wb['limit_database_user_error_notint'] = 'The database user limit must be a number.';
+$wb['limit_database_quota_txt'] = 'Database quota';
+$wb['limit_database_quota_error_notint'] = 'The database quota limit must be a number.';
 ?>
diff --git a/interface/web/client/lib/lang/es_client.lng b/interface/web/client/lib/lang/es_client.lng
index 10bf552..a4f8a31 100644
--- a/interface/web/client/lib/lang/es_client.lng
+++ b/interface/web/client/lib/lang/es_client.lng
@@ -194,4 +194,6 @@
 $wb['btn_save_txt'] = 'Save';
 $wb['btn_cancel_txt'] = 'Cancel';
 $wb['invalid_vat_id'] = 'The VAT ID is invalid.';
+$wb['limit_database_user_txt'] = 'Max. Database users';
+$wb['limit_database_user_error_notint'] = 'The database user limit must be a number.';
 ?>
diff --git a/interface/web/client/lib/lang/es_reseller.lng b/interface/web/client/lib/lang/es_reseller.lng
index 523c275..cc36835 100644
--- a/interface/web/client/lib/lang/es_reseller.lng
+++ b/interface/web/client/lib/lang/es_reseller.lng
@@ -196,4 +196,8 @@
 $wb['limit_xmpp_proxy_txt'] = 'Bytestream proxy available';
 $wb['limit_xmpp_status_txt'] = 'Status host available';
 $wb['invalid_vat_id'] = 'The VAT ID is invalid.';
+$wb['limit_database_user_txt'] = 'Max. Database users';
+$wb['limit_database_user_error_notint'] = 'The database user limit must be a number.';
+$wb['limit_database_quota_txt'] = 'Database quota';
+$wb['limit_database_quota_error_notint'] = 'The database quota limit must be a number.';
 ?>
diff --git a/interface/web/client/lib/lang/fi_client.lng b/interface/web/client/lib/lang/fi_client.lng
index 0eedd41..e8b8266 100755
--- a/interface/web/client/lib/lang/fi_client.lng
+++ b/interface/web/client/lib/lang/fi_client.lng
@@ -194,4 +194,6 @@
 $wb['btn_save_txt'] = 'Save';
 $wb['btn_cancel_txt'] = 'Cancel';
 $wb['invalid_vat_id'] = 'The VAT ID is invalid.';
+$wb['limit_database_user_txt'] = 'Max. Database users';
+$wb['limit_database_user_error_notint'] = 'The database user limit must be a number.';
 ?>
diff --git a/interface/web/client/lib/lang/fi_reseller.lng b/interface/web/client/lib/lang/fi_reseller.lng
index 588cd6b..2c99b68 100644
--- a/interface/web/client/lib/lang/fi_reseller.lng
+++ b/interface/web/client/lib/lang/fi_reseller.lng
@@ -196,4 +196,8 @@
 $wb['limit_xmpp_proxy_txt'] = 'Bytestream proxy available';
 $wb['limit_xmpp_status_txt'] = 'Status host available';
 $wb['invalid_vat_id'] = 'The VAT ID is invalid.';
+$wb['limit_database_user_txt'] = 'Max. Database users';
+$wb['limit_database_user_error_notint'] = 'The database user limit must be a number.';
+$wb['limit_database_quota_txt'] = 'Database quota';
+$wb['limit_database_quota_error_notint'] = 'The database quota limit must be a number.';
 ?>
diff --git a/interface/web/client/lib/lang/fr_client.lng b/interface/web/client/lib/lang/fr_client.lng
index 1c09968..2fd6e80 100644
--- a/interface/web/client/lib/lang/fr_client.lng
+++ b/interface/web/client/lib/lang/fr_client.lng
@@ -194,4 +194,6 @@
 $wb['btn_cancel_txt'] = 'Cancel';
 $wb['invalid_vat_id'] = 'The VAT ID is invalid.';
 $wb['email_error_empty'] = 'Email is empty';
+$wb['limit_database_user_txt'] = 'Max. Database users';
+$wb['limit_database_user_error_notint'] = 'The database user limit must be a number.';
 ?>
diff --git a/interface/web/client/lib/lang/fr_reseller.lng b/interface/web/client/lib/lang/fr_reseller.lng
index 349f321..5b8784f 100644
--- a/interface/web/client/lib/lang/fr_reseller.lng
+++ b/interface/web/client/lib/lang/fr_reseller.lng
@@ -196,4 +196,8 @@
 $wb['btn_save_txt'] = 'Save';
 $wb['btn_cancel_txt'] = 'Cancel';
 $wb['email_error_empty'] = 'Email is empty';
+$wb['limit_database_user_txt'] = 'Max. Database users';
+$wb['limit_database_user_error_notint'] = 'The database user limit must be a number.';
+$wb['limit_database_quota_txt'] = 'Database quota';
+$wb['limit_database_quota_error_notint'] = 'The database quota limit must be a number.';
 ?>
diff --git a/interface/web/client/lib/lang/hr_client.lng b/interface/web/client/lib/lang/hr_client.lng
index 73f7f8f..168c3d3 100644
--- a/interface/web/client/lib/lang/hr_client.lng
+++ b/interface/web/client/lib/lang/hr_client.lng
@@ -194,4 +194,6 @@
 $wb['btn_save_txt'] = 'Save';
 $wb['btn_cancel_txt'] = 'Cancel';
 $wb['invalid_vat_id'] = 'The VAT ID is invalid.';
+$wb['limit_database_user_txt'] = 'Max. Database users';
+$wb['limit_database_user_error_notint'] = 'The database user limit must be a number.';
 ?>
diff --git a/interface/web/client/lib/lang/hr_reseller.lng b/interface/web/client/lib/lang/hr_reseller.lng
index 9b16473..0b094ed 100644
--- a/interface/web/client/lib/lang/hr_reseller.lng
+++ b/interface/web/client/lib/lang/hr_reseller.lng
@@ -196,4 +196,8 @@
 $wb['limit_xmpp_proxy_txt'] = 'Bytestream proxy available';
 $wb['limit_xmpp_status_txt'] = 'Status host available';
 $wb['invalid_vat_id'] = 'The VAT ID is invalid.';
+$wb['limit_database_user_txt'] = 'Max. Database users';
+$wb['limit_database_user_error_notint'] = 'The database user limit must be a number.';
+$wb['limit_database_quota_txt'] = 'Database quota';
+$wb['limit_database_quota_error_notint'] = 'The database quota limit must be a number.';
 ?>
diff --git a/interface/web/client/lib/lang/hu_client.lng b/interface/web/client/lib/lang/hu_client.lng
index bc81573..a29b59d 100644
--- a/interface/web/client/lib/lang/hu_client.lng
+++ b/interface/web/client/lib/lang/hu_client.lng
@@ -194,4 +194,6 @@
 $wb['btn_save_txt'] = 'Save';
 $wb['btn_cancel_txt'] = 'Cancel';
 $wb['invalid_vat_id'] = 'The VAT ID is invalid.';
+$wb['limit_database_user_txt'] = 'Max. Database users';
+$wb['limit_database_user_error_notint'] = 'The database user limit must be a number.';
 ?>
diff --git a/interface/web/client/lib/lang/hu_reseller.lng b/interface/web/client/lib/lang/hu_reseller.lng
index 1de852e..66956f8 100644
--- a/interface/web/client/lib/lang/hu_reseller.lng
+++ b/interface/web/client/lib/lang/hu_reseller.lng
@@ -196,4 +196,8 @@
 $wb['limit_xmpp_proxy_txt'] = 'Bytestream proxy available';
 $wb['limit_xmpp_status_txt'] = 'Status host available';
 $wb['invalid_vat_id'] = 'The VAT ID is invalid.';
+$wb['limit_database_user_txt'] = 'Max. Database users';
+$wb['limit_database_user_error_notint'] = 'The database user limit must be a number.';
+$wb['limit_database_quota_txt'] = 'Database quota';
+$wb['limit_database_quota_error_notint'] = 'The database quota limit must be a number.';
 ?>
diff --git a/interface/web/client/lib/lang/id_client.lng b/interface/web/client/lib/lang/id_client.lng
index 1b5170f..be5d7d0 100644
--- a/interface/web/client/lib/lang/id_client.lng
+++ b/interface/web/client/lib/lang/id_client.lng
@@ -194,4 +194,6 @@
 $wb['btn_save_txt'] = 'Save';
 $wb['btn_cancel_txt'] = 'Cancel';
 $wb['invalid_vat_id'] = 'The VAT ID is invalid.';
+$wb['limit_database_user_txt'] = 'Max. Database users';
+$wb['limit_database_user_error_notint'] = 'The database user limit must be a number.';
 ?>
diff --git a/interface/web/client/lib/lang/id_reseller.lng b/interface/web/client/lib/lang/id_reseller.lng
index 443c585..3c29130 100644
--- a/interface/web/client/lib/lang/id_reseller.lng
+++ b/interface/web/client/lib/lang/id_reseller.lng
@@ -196,4 +196,8 @@
 $wb['limit_xmpp_proxy_txt'] = 'Bytestream proxy available';
 $wb['limit_xmpp_status_txt'] = 'Status host available';
 $wb['invalid_vat_id'] = 'The VAT ID is invalid.';
+$wb['limit_database_user_txt'] = 'Max. Database users';
+$wb['limit_database_user_error_notint'] = 'The database user limit must be a number.';
+$wb['limit_database_quota_txt'] = 'Database quota';
+$wb['limit_database_quota_error_notint'] = 'The database quota limit must be a number.';
 ?>
diff --git a/interface/web/client/lib/lang/it_client.lng b/interface/web/client/lib/lang/it_client.lng
index 67db0e8..54ee081 100644
--- a/interface/web/client/lib/lang/it_client.lng
+++ b/interface/web/client/lib/lang/it_client.lng
@@ -194,4 +194,6 @@
 $wb['btn_cancel_txt'] = 'Cancel';
 $wb['invalid_vat_id'] = 'The VAT ID is invalid.';
 $wb['email_error_empty'] = 'Email is empty';
+$wb['limit_database_user_txt'] = 'Max. Database users';
+$wb['limit_database_user_error_notint'] = 'The database user limit must be a number.';
 ?>
diff --git a/interface/web/client/lib/lang/it_reseller.lng b/interface/web/client/lib/lang/it_reseller.lng
index eb6ad29..5d343c1 100644
--- a/interface/web/client/lib/lang/it_reseller.lng
+++ b/interface/web/client/lib/lang/it_reseller.lng
@@ -196,4 +196,8 @@
 $wb['btn_save_txt'] = 'Save';
 $wb['btn_cancel_txt'] = 'Cancel';
 $wb['email_error_empty'] = 'Email is empty';
+$wb['limit_database_user_txt'] = 'Max. Database users';
+$wb['limit_database_user_error_notint'] = 'The database user limit must be a number.';
+$wb['limit_database_quota_txt'] = 'Database quota';
+$wb['limit_database_quota_error_notint'] = 'The database quota limit must be a number.';
 ?>
diff --git a/interface/web/client/lib/lang/ja_client.lng b/interface/web/client/lib/lang/ja_client.lng
index fcad2c8..64fdc33 100644
--- a/interface/web/client/lib/lang/ja_client.lng
+++ b/interface/web/client/lib/lang/ja_client.lng
@@ -194,4 +194,6 @@
 $wb['btn_save_txt'] = 'Save';
 $wb['btn_cancel_txt'] = 'Cancel';
 $wb['invalid_vat_id'] = 'The VAT ID is invalid.';
+$wb['limit_database_user_txt'] = 'Max. Database users';
+$wb['limit_database_user_error_notint'] = 'The database user limit must be a number.';
 ?>
diff --git a/interface/web/client/lib/lang/ja_reseller.lng b/interface/web/client/lib/lang/ja_reseller.lng
index 3ae09d4..570f841 100644
--- a/interface/web/client/lib/lang/ja_reseller.lng
+++ b/interface/web/client/lib/lang/ja_reseller.lng
@@ -196,4 +196,8 @@
 $wb['limit_xmpp_proxy_txt'] = 'Bytestream proxy available';
 $wb['limit_xmpp_status_txt'] = 'Status host available';
 $wb['invalid_vat_id'] = 'The VAT ID is invalid.';
+$wb['limit_database_user_txt'] = 'Max. Database users';
+$wb['limit_database_user_error_notint'] = 'The database user limit must be a number.';
+$wb['limit_database_quota_txt'] = 'Database quota';
+$wb['limit_database_quota_error_notint'] = 'The database quota limit must be a number.';
 ?>
diff --git a/interface/web/client/lib/lang/nl_client.lng b/interface/web/client/lib/lang/nl_client.lng
index 85a8da4..6273b3b 100644
--- a/interface/web/client/lib/lang/nl_client.lng
+++ b/interface/web/client/lib/lang/nl_client.lng
@@ -194,4 +194,6 @@
 $wb['btn_save_txt'] = 'Save';
 $wb['btn_cancel_txt'] = 'Cancel';
 $wb['invalid_vat_id'] = 'The VAT ID is invalid.';
+$wb['limit_database_user_txt'] = 'Max. Database users';
+$wb['limit_database_user_error_notint'] = 'The database user limit must be a number.';
 ?>
diff --git a/interface/web/client/lib/lang/nl_reseller.lng b/interface/web/client/lib/lang/nl_reseller.lng
index 75fe763..d01967b 100644
--- a/interface/web/client/lib/lang/nl_reseller.lng
+++ b/interface/web/client/lib/lang/nl_reseller.lng
@@ -196,4 +196,8 @@
 $wb['limit_xmpp_proxy_txt'] = 'Bytestream proxy available';
 $wb['limit_xmpp_status_txt'] = 'Status host available';
 $wb['invalid_vat_id'] = 'The VAT ID is invalid.';
+$wb['limit_database_user_txt'] = 'Max. Database users';
+$wb['limit_database_user_error_notint'] = 'The database user limit must be a number.';
+$wb['limit_database_quota_txt'] = 'Database quota';
+$wb['limit_database_quota_error_notint'] = 'The database quota limit must be a number.';
 ?>
diff --git a/interface/web/client/lib/lang/pl_client.lng b/interface/web/client/lib/lang/pl_client.lng
index 3070af7..9429cb9 100644
--- a/interface/web/client/lib/lang/pl_client.lng
+++ b/interface/web/client/lib/lang/pl_client.lng
@@ -194,4 +194,6 @@
 $wb['btn_save_txt'] = 'Save';
 $wb['btn_cancel_txt'] = 'Cancel';
 $wb['invalid_vat_id'] = 'The VAT ID is invalid.';
+$wb['limit_database_user_txt'] = 'Max. Database users';
+$wb['limit_database_user_error_notint'] = 'The database user limit must be a number.';
 ?>
diff --git a/interface/web/client/lib/lang/pl_reseller.lng b/interface/web/client/lib/lang/pl_reseller.lng
index 37e64c8..a4559dd 100644
--- a/interface/web/client/lib/lang/pl_reseller.lng
+++ b/interface/web/client/lib/lang/pl_reseller.lng
@@ -196,4 +196,8 @@
 $wb['limit_xmpp_proxy_txt'] = 'Bytestream proxy available';
 $wb['limit_xmpp_status_txt'] = 'Status host available';
 $wb['invalid_vat_id'] = 'The VAT ID is invalid.';
+$wb['limit_database_user_txt'] = 'Max. Database users';
+$wb['limit_database_user_error_notint'] = 'The database user limit must be a number.';
+$wb['limit_database_quota_txt'] = 'Database quota';
+$wb['limit_database_quota_error_notint'] = 'The database quota limit must be a number.';
 ?>
diff --git a/interface/web/client/lib/lang/pt_client.lng b/interface/web/client/lib/lang/pt_client.lng
index a77746e..4dcc649 100644
--- a/interface/web/client/lib/lang/pt_client.lng
+++ b/interface/web/client/lib/lang/pt_client.lng
@@ -194,4 +194,6 @@
 $wb['btn_save_txt'] = 'Save';
 $wb['btn_cancel_txt'] = 'Cancel';
 $wb['invalid_vat_id'] = 'The VAT ID is invalid.';
+$wb['limit_database_user_txt'] = 'Max. Database users';
+$wb['limit_database_user_error_notint'] = 'The database user limit must be a number.';
 ?>
diff --git a/interface/web/client/lib/lang/pt_reseller.lng b/interface/web/client/lib/lang/pt_reseller.lng
index 1c7ffc3..46bc4a2 100644
--- a/interface/web/client/lib/lang/pt_reseller.lng
+++ b/interface/web/client/lib/lang/pt_reseller.lng
@@ -196,4 +196,8 @@
 $wb['limit_xmpp_proxy_txt'] = 'Bytestream proxy available';
 $wb['limit_xmpp_status_txt'] = 'Status host available';
 $wb['invalid_vat_id'] = 'The VAT ID is invalid.';
+$wb['limit_database_user_txt'] = 'Max. Database users';
+$wb['limit_database_user_error_notint'] = 'The database user limit must be a number.';
+$wb['limit_database_quota_txt'] = 'Database quota';
+$wb['limit_database_quota_error_notint'] = 'The database quota limit must be a number.';
 ?>
diff --git a/interface/web/client/lib/lang/ro_client.lng b/interface/web/client/lib/lang/ro_client.lng
index a059dec..947bac1 100644
--- a/interface/web/client/lib/lang/ro_client.lng
+++ b/interface/web/client/lib/lang/ro_client.lng
@@ -194,4 +194,6 @@
 $wb['btn_save_txt'] = 'Save';
 $wb['btn_cancel_txt'] = 'Cancel';
 $wb['invalid_vat_id'] = 'The VAT ID is invalid.';
+$wb['limit_database_user_txt'] = 'Max. Database users';
+$wb['limit_database_user_error_notint'] = 'The database user limit must be a number.';
 ?>
diff --git a/interface/web/client/lib/lang/ro_reseller.lng b/interface/web/client/lib/lang/ro_reseller.lng
index adabf8d..e3a764e 100644
--- a/interface/web/client/lib/lang/ro_reseller.lng
+++ b/interface/web/client/lib/lang/ro_reseller.lng
@@ -196,4 +196,8 @@
 $wb['limit_xmpp_proxy_txt'] = 'Bytestream proxy available';
 $wb['limit_xmpp_status_txt'] = 'Status host available';
 $wb['invalid_vat_id'] = 'The VAT ID is invalid.';
+$wb['limit_database_user_txt'] = 'Max. Database users';
+$wb['limit_database_user_error_notint'] = 'The database user limit must be a number.';
+$wb['limit_database_quota_txt'] = 'Database quota';
+$wb['limit_database_quota_error_notint'] = 'The database quota limit must be a number.';
 ?>
diff --git a/interface/web/client/lib/lang/ru_client.lng b/interface/web/client/lib/lang/ru_client.lng
index 3f5de65..f4ca515 100644
--- a/interface/web/client/lib/lang/ru_client.lng
+++ b/interface/web/client/lib/lang/ru_client.lng
@@ -194,4 +194,6 @@
 $wb['btn_save_txt'] = 'Save';
 $wb['btn_cancel_txt'] = 'Cancel';
 $wb['invalid_vat_id'] = 'The VAT ID is invalid.';
+$wb['limit_database_user_txt'] = 'Max. Database users';
+$wb['limit_database_user_error_notint'] = 'The database user limit must be a number.';
 ?>
diff --git a/interface/web/client/lib/lang/ru_reseller.lng b/interface/web/client/lib/lang/ru_reseller.lng
index 66835b9..4328612 100644
--- a/interface/web/client/lib/lang/ru_reseller.lng
+++ b/interface/web/client/lib/lang/ru_reseller.lng
@@ -196,4 +196,8 @@
 $wb['limit_xmpp_proxy_txt'] = 'Bytestream proxy available';
 $wb['limit_xmpp_status_txt'] = 'Status host available';
 $wb['invalid_vat_id'] = 'The VAT ID is invalid.';
+$wb['limit_database_user_txt'] = 'Max. Database users';
+$wb['limit_database_user_error_notint'] = 'The database user limit must be a number.';
+$wb['limit_database_quota_txt'] = 'Database quota';
+$wb['limit_database_quota_error_notint'] = 'The database quota limit must be a number.';
 ?>
diff --git a/interface/web/client/lib/lang/se_client.lng b/interface/web/client/lib/lang/se_client.lng
index 118adcf..4d86df0 100644
--- a/interface/web/client/lib/lang/se_client.lng
+++ b/interface/web/client/lib/lang/se_client.lng
@@ -194,4 +194,6 @@
 $wb['btn_save_txt'] = 'Save';
 $wb['btn_cancel_txt'] = 'Cancel';
 $wb['invalid_vat_id'] = 'The VAT ID is invalid.';
+$wb['limit_database_user_txt'] = 'Max. Database users';
+$wb['limit_database_user_error_notint'] = 'The database user limit must be a number.';
 ?>
diff --git a/interface/web/client/lib/lang/se_reseller.lng b/interface/web/client/lib/lang/se_reseller.lng
index adabf8d..e3a764e 100644
--- a/interface/web/client/lib/lang/se_reseller.lng
+++ b/interface/web/client/lib/lang/se_reseller.lng
@@ -196,4 +196,8 @@
 $wb['limit_xmpp_proxy_txt'] = 'Bytestream proxy available';
 $wb['limit_xmpp_status_txt'] = 'Status host available';
 $wb['invalid_vat_id'] = 'The VAT ID is invalid.';
+$wb['limit_database_user_txt'] = 'Max. Database users';
+$wb['limit_database_user_error_notint'] = 'The database user limit must be a number.';
+$wb['limit_database_quota_txt'] = 'Database quota';
+$wb['limit_database_quota_error_notint'] = 'The database quota limit must be a number.';
 ?>
diff --git a/interface/web/client/lib/lang/sk_client.lng b/interface/web/client/lib/lang/sk_client.lng
index 3311f1b..00e217e 100644
--- a/interface/web/client/lib/lang/sk_client.lng
+++ b/interface/web/client/lib/lang/sk_client.lng
@@ -194,4 +194,6 @@
 $wb['btn_save_txt'] = 'Save';
 $wb['btn_cancel_txt'] = 'Cancel';
 $wb['invalid_vat_id'] = 'The VAT ID is invalid.';
+$wb['limit_database_user_txt'] = 'Max. Database users';
+$wb['limit_database_user_error_notint'] = 'The database user limit must be a number.';
 ?>
diff --git a/interface/web/client/lib/lang/sk_reseller.lng b/interface/web/client/lib/lang/sk_reseller.lng
index 25a1910..977893b 100644
--- a/interface/web/client/lib/lang/sk_reseller.lng
+++ b/interface/web/client/lib/lang/sk_reseller.lng
@@ -196,4 +196,8 @@
 $wb['limit_xmpp_proxy_txt'] = 'Bytestream proxy available';
 $wb['limit_xmpp_status_txt'] = 'Status host available';
 $wb['invalid_vat_id'] = 'The VAT ID is invalid.';
+$wb['limit_database_user_txt'] = 'Max. Database users';
+$wb['limit_database_user_error_notint'] = 'The database user limit must be a number.';
+$wb['limit_database_quota_txt'] = 'Database quota';
+$wb['limit_database_quota_error_notint'] = 'The database quota limit must be a number.';
 ?>
diff --git a/interface/web/client/lib/lang/tr_client.lng b/interface/web/client/lib/lang/tr_client.lng
index c071c74..4c306ac 100644
--- a/interface/web/client/lib/lang/tr_client.lng
+++ b/interface/web/client/lib/lang/tr_client.lng
@@ -194,4 +194,6 @@
 $wb['btn_cancel_txt'] = 'Cancel';
 $wb['invalid_vat_id'] = 'The VAT ID is invalid.';
 $wb['email_error_empty'] = 'Email is empty';
+$wb['limit_database_user_txt'] = 'Max. Database users';
+$wb['limit_database_user_error_notint'] = 'The database user limit must be a number.';
 ?>
diff --git a/interface/web/client/lib/lang/tr_reseller.lng b/interface/web/client/lib/lang/tr_reseller.lng
index 5d3debf..5a72161 100644
--- a/interface/web/client/lib/lang/tr_reseller.lng
+++ b/interface/web/client/lib/lang/tr_reseller.lng
@@ -196,4 +196,8 @@
 $wb['btn_save_txt'] = 'Save';
 $wb['btn_cancel_txt'] = 'Cancel';
 $wb['email_error_empty'] = 'Email is empty';
+$wb['limit_database_user_txt'] = 'Max. Database users';
+$wb['limit_database_user_error_notint'] = 'The database user limit must be a number.';
+$wb['limit_database_quota_txt'] = 'Database quota';
+$wb['limit_database_quota_error_notint'] = 'The database quota limit must be a number.';
 ?>
diff --git a/interface/web/client/templates/client_edit_limits.htm b/interface/web/client/templates/client_edit_limits.htm
index 01b1b8b..1396946 100644
--- a/interface/web/client/templates/client_edit_limits.htm
+++ b/interface/web/client/templates/client_edit_limits.htm
@@ -333,6 +333,9 @@
                 <div class="form-group">
                     <label for="limit_database" class="col-sm-3 control-label">{tmpl_var name='limit_database_txt'}</label>
                     <div class="col-sm-9"><input type="text" name="limit_database" id="limit_database" value="{tmpl_var name='limit_database'}" class="form-control" /></div></div>
+                <div class="form-group">
+                    <label for="limit_database_user" class="col-sm-3 control-label">{tmpl_var name='limit_database_user_txt'}</label>
+                    <div class="col-sm-9"><input type="text" name="limit_database_user" id="limit_database_user" value="{tmpl_var name='limit_database_user'}" class="form-control" /></div></div>
 				<div class="form-group">
 					<label for="limit_database_quota" class="col-sm-3 control-label">{tmpl_var name='limit_database_quota_txt'}</label>
 					<div class="col-sm-6"><input type="text" name="limit_database_quota" id="limit_database_quota" value="{tmpl_var name='limit_database_quota'}" class="form-control" /></div><div class="col-sm-3 input-sm">&nbsp;MB
diff --git a/interface/web/client/templates/client_template_edit_limits.htm b/interface/web/client/templates/client_template_edit_limits.htm
index 09bcce2..5e0abb9 100644
--- a/interface/web/client/templates/client_template_edit_limits.htm
+++ b/interface/web/client/templates/client_template_edit_limits.htm
@@ -266,6 +266,9 @@
                 <div class="form-group">
                     <label for="limit_database" class="col-sm-3 control-label">{tmpl_var name='limit_database_txt'}</label>
                     <div class="col-sm-9"><input type="text" name="limit_database" id="limit_database" value="{tmpl_var name='limit_database'}" class="form-control" /></div></div>
+                <div class="form-group">
+                    <label for="limit_database_user" class="col-sm-3 control-label">{tmpl_var name='limit_database_user_txt'}</label>
+                    <div class="col-sm-9"><input type="text" name="limit_database_user" id="limit_database_user" value="{tmpl_var name='limit_database_user'}" class="form-control" /></div></div>
 				<div class="form-group">
 					<label for="limit_database_quota" class="col-sm-3 control-label">{tmpl_var name='limit_database_quota_txt'}</label>
 					<div class="col-sm-6"><input type="text" name="limit_database_quota" id="limit_database_quota" value="{tmpl_var name='limit_database_quota'}" class="form-control" /></div><div class="col-sm-3 input-sm">&nbsp;MB
diff --git a/interface/web/client/templates/reseller_edit_limits.htm b/interface/web/client/templates/reseller_edit_limits.htm
index 8dc587e..b68fff9 100644
--- a/interface/web/client/templates/reseller_edit_limits.htm
+++ b/interface/web/client/templates/reseller_edit_limits.htm
@@ -335,6 +335,9 @@
                 <div class="form-group">
                     <label for="limit_database" class="col-sm-3 control-label">{tmpl_var name='limit_database_txt'}</label>
                     <div class="col-sm-9"><input type="text" name="limit_database" id="limit_database" value="{tmpl_var name='limit_database'}" class="form-control" /></div></div>
+                <div class="form-group">
+                    <label for="limit_database_user" class="col-sm-3 control-label">{tmpl_var name='limit_database_user_txt'}</label>
+                    <div class="col-sm-9"><input type="text" name="limit_database_user" id="limit_database_user" value="{tmpl_var name='limit_database_user'}" class="form-control" /></div></div>
 				<div class="form-group">
 					<label for="limit_database_quota" class="col-sm-3 control-label">{tmpl_var name='limit_database_quota_txt'}</label>
 					<div class="col-sm-6"><input type="text" name="limit_database_quota" id="limit_database_quota" value="{tmpl_var name='limit_database_quota'}" class="form-control" /></div><div class="col-sm-3 input-sm">&nbsp;MB
diff --git a/interface/web/sites/database_user_edit.php b/interface/web/sites/database_user_edit.php
index 90b28ef..88e05d6 100644
--- a/interface/web/sites/database_user_edit.php
+++ b/interface/web/sites/database_user_edit.php
@@ -50,6 +50,22 @@
 
 class page_action extends tform_actions {
 
+	function onShowNew() {
+		global $app;
+
+		// we will check only users, not admins
+		if($_SESSION['s']['user']['typ'] == 'user') {
+			if(!$app->tform->checkClientLimit('limit_database_users')) {
+				$app->error($app->tform->wordbook["limit_database_user_txt"]);
+			}
+			if(!$app->tform->checkResellerLimit('limit_database_users')) {
+				$app->error('Reseller: '.$app->tform->wordbook["limit_database_user_txt"]);
+			}
+		}
+
+		parent::onShowNew();
+	}
+
 	function onShowEnd() {
 		global $app, $conf, $interfaceConf;
 
diff --git a/interface/web/sites/lib/lang/ar_database_user.lng b/interface/web/sites/lib/lang/ar_database_user.lng
index 66a0718..d00aefe 100644
--- a/interface/web/sites/lib/lang/ar_database_user.lng
+++ b/interface/web/sites/lib/lang/ar_database_user.lng
@@ -20,4 +20,5 @@
 $wb['globalsearch_noresults_limit_txt'] = '0 results';
 $wb['globalsearch_searchfield_watermark_txt'] = 'Search';
 $wb['globalsearch_suggestions_text_txt'] = 'Suggestions';
+$wb['limit_database_user_txt'] = 'The max. number of database users is reached.';
 ?>
diff --git a/interface/web/sites/lib/lang/bg_database_user.lng b/interface/web/sites/lib/lang/bg_database_user.lng
index 66a0718..d00aefe 100644
--- a/interface/web/sites/lib/lang/bg_database_user.lng
+++ b/interface/web/sites/lib/lang/bg_database_user.lng
@@ -20,4 +20,5 @@
 $wb['globalsearch_noresults_limit_txt'] = '0 results';
 $wb['globalsearch_searchfield_watermark_txt'] = 'Search';
 $wb['globalsearch_suggestions_text_txt'] = 'Suggestions';
+$wb['limit_database_user_txt'] = 'The max. number of database users is reached.';
 ?>
diff --git a/interface/web/sites/lib/lang/br_database_user.lng b/interface/web/sites/lib/lang/br_database_user.lng
index 66a0718..d00aefe 100644
--- a/interface/web/sites/lib/lang/br_database_user.lng
+++ b/interface/web/sites/lib/lang/br_database_user.lng
@@ -20,4 +20,5 @@
 $wb['globalsearch_noresults_limit_txt'] = '0 results';
 $wb['globalsearch_searchfield_watermark_txt'] = 'Search';
 $wb['globalsearch_suggestions_text_txt'] = 'Suggestions';
+$wb['limit_database_user_txt'] = 'The max. number of database users is reached.';
 ?>
diff --git a/interface/web/sites/lib/lang/ca_database_user.lng b/interface/web/sites/lib/lang/ca_database_user.lng
index eca5980..ed143d5 100644
--- a/interface/web/sites/lib/lang/ca_database_user.lng
+++ b/interface/web/sites/lib/lang/ca_database_user.lng
@@ -20,4 +20,5 @@
 $wb['globalsearch_noresults_limit_txt'] = '0 resultat';
 $wb['globalsearch_searchfield_watermark_txt'] = 'Search';
 $wb['globalsearch_suggestions_text_txt'] = 'Suggestions';
+$wb['limit_database_user_txt'] = 'The max. number of database users is reached.';
 ?>
diff --git a/interface/web/sites/lib/lang/cz_database_user.lng b/interface/web/sites/lib/lang/cz_database_user.lng
index 13b8782..81c77a1 100644
--- a/interface/web/sites/lib/lang/cz_database_user.lng
+++ b/interface/web/sites/lib/lang/cz_database_user.lng
@@ -20,4 +20,5 @@
 $wb['globalsearch_noresults_limit_txt'] = '0 výsledků';
 $wb['globalsearch_searchfield_watermark_txt'] = 'Hledat';
 $wb['globalsearch_suggestions_text_txt'] = 'Návrhy';
+$wb['limit_database_user_txt'] = 'The max. number of database users is reached.';
 ?>
diff --git a/interface/web/sites/lib/lang/de_database_user.lng b/interface/web/sites/lib/lang/de_database_user.lng
index dc175f1..3c14f27 100644
--- a/interface/web/sites/lib/lang/de_database_user.lng
+++ b/interface/web/sites/lib/lang/de_database_user.lng
@@ -20,4 +20,5 @@
 $wb['globalsearch_noresults_limit_txt'] = '0 Treffer';
 $wb['globalsearch_searchfield_watermark_txt'] = 'Suche';
 $wb['globalsearch_suggestions_text_txt'] = 'Vorschläge';
+$wb['limit_database_user_txt'] = 'The max. number of database users is reached.';
 ?>
diff --git a/interface/web/sites/lib/lang/el_database_user.lng b/interface/web/sites/lib/lang/el_database_user.lng
index 66a0718..d00aefe 100644
--- a/interface/web/sites/lib/lang/el_database_user.lng
+++ b/interface/web/sites/lib/lang/el_database_user.lng
@@ -20,4 +20,5 @@
 $wb['globalsearch_noresults_limit_txt'] = '0 results';
 $wb['globalsearch_searchfield_watermark_txt'] = 'Search';
 $wb['globalsearch_suggestions_text_txt'] = 'Suggestions';
+$wb['limit_database_user_txt'] = 'The max. number of database users is reached.';
 ?>
diff --git a/interface/web/sites/lib/lang/en_database_user.lng b/interface/web/sites/lib/lang/en_database_user.lng
index 6c4ee7c..3f478f1 100644
--- a/interface/web/sites/lib/lang/en_database_user.lng
+++ b/interface/web/sites/lib/lang/en_database_user.lng
@@ -20,4 +20,5 @@
 $wb['globalsearch_noresults_limit_txt'] = "0 results";
 $wb['globalsearch_searchfield_watermark_txt'] = "Search";
 $wb['globalsearch_suggestions_text_txt'] = "Suggestions";
+$wb['limit_database_user_txt'] = "The max. number of database users is reached.";
 ?>
diff --git a/interface/web/sites/lib/lang/es_database_user.lng b/interface/web/sites/lib/lang/es_database_user.lng
index 258e571..eeea4bc 100644
--- a/interface/web/sites/lib/lang/es_database_user.lng
+++ b/interface/web/sites/lib/lang/es_database_user.lng
@@ -20,4 +20,5 @@
 $wb['globalsearch_noresults_limit_txt'] = '0 resultados';
 $wb['globalsearch_searchfield_watermark_txt'] = 'Buscar';
 $wb['globalsearch_suggestions_text_txt'] = 'Sugerencias';
+$wb['limit_database_user_txt'] = 'The max. number of database users is reached.';
 ?>
diff --git a/interface/web/sites/lib/lang/fi_database_user.lng b/interface/web/sites/lib/lang/fi_database_user.lng
index 66a0718..d00aefe 100644
--- a/interface/web/sites/lib/lang/fi_database_user.lng
+++ b/interface/web/sites/lib/lang/fi_database_user.lng
@@ -20,4 +20,5 @@
 $wb['globalsearch_noresults_limit_txt'] = '0 results';
 $wb['globalsearch_searchfield_watermark_txt'] = 'Search';
 $wb['globalsearch_suggestions_text_txt'] = 'Suggestions';
+$wb['limit_database_user_txt'] = 'The max. number of database users is reached.';
 ?>
diff --git a/interface/web/sites/lib/lang/fr_database_user.lng b/interface/web/sites/lib/lang/fr_database_user.lng
index a904ad4..9590351 100644
--- a/interface/web/sites/lib/lang/fr_database_user.lng
+++ b/interface/web/sites/lib/lang/fr_database_user.lng
@@ -20,4 +20,5 @@
 $wb['globalsearch_noresults_limit_txt'] = '0 results';
 $wb['globalsearch_searchfield_watermark_txt'] = 'Search';
 $wb['globalsearch_suggestions_text_txt'] = 'Suggestions';
+$wb['limit_database_user_txt'] = 'The max. number of database users is reached.';
 ?>
diff --git a/interface/web/sites/lib/lang/hr_database_user.lng b/interface/web/sites/lib/lang/hr_database_user.lng
index c4d0339..93f2093 100644
--- a/interface/web/sites/lib/lang/hr_database_user.lng
+++ b/interface/web/sites/lib/lang/hr_database_user.lng
@@ -20,4 +20,5 @@
 $wb['globalsearch_noresults_limit_txt'] = '0 rezultata';
 $wb['globalsearch_searchfield_watermark_txt'] = 'Traži';
 $wb['globalsearch_suggestions_text_txt'] = 'Sugestija';
+$wb['limit_database_user_txt'] = 'The max. number of database users is reached.';
 ?>
diff --git a/interface/web/sites/lib/lang/hu_database_user.lng b/interface/web/sites/lib/lang/hu_database_user.lng
index 66a0718..d00aefe 100644
--- a/interface/web/sites/lib/lang/hu_database_user.lng
+++ b/interface/web/sites/lib/lang/hu_database_user.lng
@@ -20,4 +20,5 @@
 $wb['globalsearch_noresults_limit_txt'] = '0 results';
 $wb['globalsearch_searchfield_watermark_txt'] = 'Search';
 $wb['globalsearch_suggestions_text_txt'] = 'Suggestions';
+$wb['limit_database_user_txt'] = 'The max. number of database users is reached.';
 ?>
diff --git a/interface/web/sites/lib/lang/id_database_user.lng b/interface/web/sites/lib/lang/id_database_user.lng
index 66a0718..d00aefe 100644
--- a/interface/web/sites/lib/lang/id_database_user.lng
+++ b/interface/web/sites/lib/lang/id_database_user.lng
@@ -20,4 +20,5 @@
 $wb['globalsearch_noresults_limit_txt'] = '0 results';
 $wb['globalsearch_searchfield_watermark_txt'] = 'Search';
 $wb['globalsearch_suggestions_text_txt'] = 'Suggestions';
+$wb['limit_database_user_txt'] = 'The max. number of database users is reached.';
 ?>
diff --git a/interface/web/sites/lib/lang/it_database_user.lng b/interface/web/sites/lib/lang/it_database_user.lng
index bb4da9d..82051d9 100644
--- a/interface/web/sites/lib/lang/it_database_user.lng
+++ b/interface/web/sites/lib/lang/it_database_user.lng
@@ -20,4 +20,5 @@
 $wb['globalsearch_noresults_limit_txt'] = '0 results';
 $wb['globalsearch_searchfield_watermark_txt'] = 'Cerca';
 $wb['globalsearch_suggestions_text_txt'] = 'Suggerimenti';
+$wb['limit_database_user_txt'] = 'The max. number of database users is reached.';
 ?>
diff --git a/interface/web/sites/lib/lang/ja_database_user.lng b/interface/web/sites/lib/lang/ja_database_user.lng
index 66a0718..d00aefe 100644
--- a/interface/web/sites/lib/lang/ja_database_user.lng
+++ b/interface/web/sites/lib/lang/ja_database_user.lng
@@ -20,4 +20,5 @@
 $wb['globalsearch_noresults_limit_txt'] = '0 results';
 $wb['globalsearch_searchfield_watermark_txt'] = 'Search';
 $wb['globalsearch_suggestions_text_txt'] = 'Suggestions';
+$wb['limit_database_user_txt'] = 'The max. number of database users is reached.';
 ?>
diff --git a/interface/web/sites/lib/lang/nl_database_user.lng b/interface/web/sites/lib/lang/nl_database_user.lng
index 66a0718..d00aefe 100644
--- a/interface/web/sites/lib/lang/nl_database_user.lng
+++ b/interface/web/sites/lib/lang/nl_database_user.lng
@@ -20,4 +20,5 @@
 $wb['globalsearch_noresults_limit_txt'] = '0 results';
 $wb['globalsearch_searchfield_watermark_txt'] = 'Search';
 $wb['globalsearch_suggestions_text_txt'] = 'Suggestions';
+$wb['limit_database_user_txt'] = 'The max. number of database users is reached.';
 ?>
diff --git a/interface/web/sites/lib/lang/pl_database_user.lng b/interface/web/sites/lib/lang/pl_database_user.lng
index 66a0718..d00aefe 100644
--- a/interface/web/sites/lib/lang/pl_database_user.lng
+++ b/interface/web/sites/lib/lang/pl_database_user.lng
@@ -20,4 +20,5 @@
 $wb['globalsearch_noresults_limit_txt'] = '0 results';
 $wb['globalsearch_searchfield_watermark_txt'] = 'Search';
 $wb['globalsearch_suggestions_text_txt'] = 'Suggestions';
+$wb['limit_database_user_txt'] = 'The max. number of database users is reached.';
 ?>
diff --git a/interface/web/sites/lib/lang/pt_database_user.lng b/interface/web/sites/lib/lang/pt_database_user.lng
index 66a0718..d00aefe 100644
--- a/interface/web/sites/lib/lang/pt_database_user.lng
+++ b/interface/web/sites/lib/lang/pt_database_user.lng
@@ -20,4 +20,5 @@
 $wb['globalsearch_noresults_limit_txt'] = '0 results';
 $wb['globalsearch_searchfield_watermark_txt'] = 'Search';
 $wb['globalsearch_suggestions_text_txt'] = 'Suggestions';
+$wb['limit_database_user_txt'] = 'The max. number of database users is reached.';
 ?>
diff --git a/interface/web/sites/lib/lang/ro_database_user.lng b/interface/web/sites/lib/lang/ro_database_user.lng
index 66a0718..d00aefe 100644
--- a/interface/web/sites/lib/lang/ro_database_user.lng
+++ b/interface/web/sites/lib/lang/ro_database_user.lng
@@ -20,4 +20,5 @@
 $wb['globalsearch_noresults_limit_txt'] = '0 results';
 $wb['globalsearch_searchfield_watermark_txt'] = 'Search';
 $wb['globalsearch_suggestions_text_txt'] = 'Suggestions';
+$wb['limit_database_user_txt'] = 'The max. number of database users is reached.';
 ?>
diff --git a/interface/web/sites/lib/lang/ru_database_user.lng b/interface/web/sites/lib/lang/ru_database_user.lng
index 66a0718..d00aefe 100644
--- a/interface/web/sites/lib/lang/ru_database_user.lng
+++ b/interface/web/sites/lib/lang/ru_database_user.lng
@@ -20,4 +20,5 @@
 $wb['globalsearch_noresults_limit_txt'] = '0 results';
 $wb['globalsearch_searchfield_watermark_txt'] = 'Search';
 $wb['globalsearch_suggestions_text_txt'] = 'Suggestions';
+$wb['limit_database_user_txt'] = 'The max. number of database users is reached.';
 ?>
diff --git a/interface/web/sites/lib/lang/se_database_user.lng b/interface/web/sites/lib/lang/se_database_user.lng
index 2cf9a1a..1b2620f 100644
--- a/interface/web/sites/lib/lang/se_database_user.lng
+++ b/interface/web/sites/lib/lang/se_database_user.lng
@@ -20,4 +20,5 @@
 $wb['globalsearch_noresults_limit_txt'] = '0 resultat';
 $wb['globalsearch_searchfield_watermark_txt'] = 'Sök';
 $wb['globalsearch_suggestions_text_txt'] = 'Förslag';
+$wb['limit_database_user_txt'] = 'The max. number of database users is reached.';
 ?>
diff --git a/interface/web/sites/lib/lang/sk_database_user.lng b/interface/web/sites/lib/lang/sk_database_user.lng
index 66a0718..d00aefe 100644
--- a/interface/web/sites/lib/lang/sk_database_user.lng
+++ b/interface/web/sites/lib/lang/sk_database_user.lng
@@ -20,4 +20,5 @@
 $wb['globalsearch_noresults_limit_txt'] = '0 results';
 $wb['globalsearch_searchfield_watermark_txt'] = 'Search';
 $wb['globalsearch_suggestions_text_txt'] = 'Suggestions';
+$wb['limit_database_user_txt'] = 'The max. number of database users is reached.';
 ?>
diff --git a/interface/web/sites/lib/lang/tr_database_user.lng b/interface/web/sites/lib/lang/tr_database_user.lng
index de46731..2c03022 100644
--- a/interface/web/sites/lib/lang/tr_database_user.lng
+++ b/interface/web/sites/lib/lang/tr_database_user.lng
@@ -20,4 +20,5 @@
 $wb['globalsearch_noresults_limit_txt'] = '0 sonuç';
 $wb['globalsearch_searchfield_watermark_txt'] = 'Arama';
 $wb['globalsearch_suggestions_text_txt'] = 'Öneriler';
+$wb['limit_database_user_txt'] = 'The max. number of database users is reached.';
 ?>

--
Gitblit v1.9.1