From 419403a8957857d5a438860624bf71deed471a58 Mon Sep 17 00:00:00 2001
From: ftimme <ft@falkotimme.com>
Date: Thu, 21 Feb 2013 11:24:39 -0500
Subject: [PATCH] - Fixed FS#2617 - Limit for APS packages missing in client limits.

---
 install/sql/incremental/upd_0048.sql                           |    1 
 interface/web/client/templates/client_edit_limits.htm          |    7 +++
 interface/web/client/form/client.tform.php                     |   14 +++++++
 interface/web/sites/lib/module.conf.php                        |    4 +
 interface/web/client/lib/lang/de_reseller.lng                  |    3 +
 interface/web/client/lib/lang/en_reseller.lng                  |    3 +
 interface/web/client/lib/lang/de_client.lng                    |    3 +
 interface/web/sites/aps_install_package.php                    |   15 +++++++
 interface/web/sites/lib/lang/en_aps.lng                        |    1 
 interface/web/client/lib/lang/en_client.lng                    |    3 +
 interface/web/sites/lib/lang/de_aps.lng                        |    1 
 install/sql/ispconfig3.sql                                     |    2 
 interface/web/client/lib/lang/de_client_template.lng           |    3 +
 interface/web/client/templates/reseller_edit_limits.htm        |    7 +++
 interface/web/client/lib/lang/en_client_template.lng           |    3 +
 interface/web/client/form/client_template.tform.php            |   14 +++++++
 interface/web/client/form/reseller.tform.php                   |   14 +++++++
 interface/web/client/templates/client_template_edit_limits.htm |    7 +++
 18 files changed, 102 insertions(+), 3 deletions(-)

diff --git a/install/sql/incremental/upd_0048.sql b/install/sql/incremental/upd_0048.sql
new file mode 100644
index 0000000..a3cbba6
--- /dev/null
+++ b/install/sql/incremental/upd_0048.sql
@@ -0,0 +1 @@
+ALTER TABLE `client` CHANGE `limit_aps` `limit_aps` INT( 11 ) NOT NULL DEFAULT '-1';
\ No newline at end of file
diff --git a/install/sql/ispconfig3.sql b/install/sql/ispconfig3.sql
index 921c768..828fcf3 100644
--- a/install/sql/ispconfig3.sql
+++ b/install/sql/ispconfig3.sql
@@ -201,7 +201,7 @@
   `limit_shell_user` int(11) NOT NULL DEFAULT '0',
   `ssh_chroot` varchar(255) NOT NULL DEFAULT 'no,jailkit,ssh-chroot',
   `limit_webdav_user` int(11) NOT NULL DEFAULT '0',
-  `limit_aps` int(11) NOT NULL DEFAULT '0',
+  `limit_aps` int(11) NOT NULL DEFAULT '-1',
   `default_dnsserver` int(11) unsigned NOT NULL DEFAULT '1',
   `limit_dns_zone` int(11) NOT NULL DEFAULT '-1',
   `limit_dns_slave_zone` int(11) NOT NULL DEFAULT '-1',
diff --git a/interface/web/client/form/client.tform.php b/interface/web/client/form/client.tform.php
index 25623f4..7d7bf45 100644
--- a/interface/web/client/form/client.tform.php
+++ b/interface/web/client/form/client.tform.php
@@ -1039,6 +1039,20 @@
 									 ),
 			'value'		=> array(0 => ' ')
 		),
+		'limit_aps' => array (
+			'datatype'	=> 'INTEGER',
+			'formtype'	=> 'TEXT',
+			'validators'	=> array ( 	0 => array (	'type'	=> 'ISINT',
+														'errmsg'=> 'limit_aps_error_notint'),
+									),
+			'default'	=> '-1',
+			'value'		=> '',
+			'separator'	=> '',
+			'width'		=> '10',
+			'maxlength'	=> '10',
+			'rows'		=> '',
+			'cols'		=> ''
+		),
 	##################################
 	# END Datatable fields
 	##################################
diff --git a/interface/web/client/form/client_template.tform.php b/interface/web/client/form/client_template.tform.php
index bd98e23..917266e 100644
--- a/interface/web/client/form/client_template.tform.php
+++ b/interface/web/client/form/client_template.tform.php
@@ -616,6 +616,20 @@
 									 ),
 			'value'		=> array(0 => ' ')
 		),
+		'limit_aps' => array (
+			'datatype'	=> 'INTEGER',
+			'formtype'	=> 'TEXT',
+			'validators'	=> array ( 	0 => array (	'type'	=> 'ISINT',
+														'errmsg'=> 'limit_aps_error_notint'),
+									),
+			'default'	=> '-1',
+			'value'		=> '',
+			'separator'	=> '',
+			'width'		=> '10',
+			'maxlength'	=> '10',
+			'rows'		=> '',
+			'cols'		=> ''
+		),
 	##################################
 	# END Datatable fields
 	##################################
diff --git a/interface/web/client/form/reseller.tform.php b/interface/web/client/form/reseller.tform.php
index b6bbe1c..df240e5 100644
--- a/interface/web/client/form/reseller.tform.php
+++ b/interface/web/client/form/reseller.tform.php
@@ -1037,6 +1037,20 @@
 									 ),
 			'value'		=> array(0 => ' ')
 		),
+		'limit_aps' => array (
+			'datatype'	=> 'INTEGER',
+			'formtype'	=> 'TEXT',
+			'validators'	=> array ( 	0 => array (	'type'	=> 'ISINT',
+														'errmsg'=> 'limit_aps_error_notint'),
+									),
+			'default'	=> '-1',
+			'value'		=> '',
+			'separator'	=> '',
+			'width'		=> '10',
+			'maxlength'	=> '10',
+			'rows'		=> '',
+			'cols'		=> ''
+		),
 	##################################
 	# END Datatable fields
 	##################################
diff --git a/interface/web/client/lib/lang/de_client.lng b/interface/web/client/lib/lang/de_client.lng
index 6d4cb7d..40d907a 100644
--- a/interface/web/client/lib/lang/de_client.lng
+++ b/interface/web/client/lib/lang/de_client.lng
@@ -140,4 +140,7 @@
 $wb['paypal_email_error_isemail'] = 'Bitte geben Sie eine gültige PayPal E-Mail Adresse an.';
 $wb['paypal_email_txt'] = 'PayPal E-Mail';
 $wb['err_msg_master_tpl_set'] = 'Die hier eingestellten Werte werden ignoriert, wenn als Mastervorlage nicht  \'Custon\' ausgewählt ist!';
+$wb['aps_limits_txt'] = 'APS Installationsassistent Limits';
+$wb['limit_aps_txt'] = 'Max. Anzahl an APS-Instanzen';
+$wb['limit_aps_error_notint'] = 'Das APS Instanzen Limit muss eine Zahl sein.';
 ?>
diff --git a/interface/web/client/lib/lang/de_client_template.lng b/interface/web/client/lib/lang/de_client_template.lng
index 9188c48..506c61e 100644
--- a/interface/web/client/lib/lang/de_client_template.lng
+++ b/interface/web/client/lib/lang/de_client_template.lng
@@ -84,4 +84,7 @@
 $wb['cron_job_limits_txt'] = 'Cronjob Limits';
 $wb['dns_limits_txt'] = 'DNS Limits';
 $wb['virtualization_limits_txt'] = 'Virtualisierungs Limits';
+$wb['aps_limits_txt'] = 'APS Installationsassistent Limits';
+$wb['limit_aps_txt'] = 'Max. Anzahl an APS-Instanzen';
+$wb['limit_aps_error_notint'] = 'Das APS Instanzen Limit muss eine Zahl sein.';
 ?>
diff --git a/interface/web/client/lib/lang/de_reseller.lng b/interface/web/client/lib/lang/de_reseller.lng
index fefb54c..14cd58a 100644
--- a/interface/web/client/lib/lang/de_reseller.lng
+++ b/interface/web/client/lib/lang/de_reseller.lng
@@ -139,4 +139,7 @@
 $wb['bank_name_txt'] = 'Bank';
 $wb['bank_account_iban_txt'] = 'IBAN';
 $wb['bank_account_swift_txt'] = 'BIC';
+$wb['aps_limits_txt'] = 'APS Installationsassistent Limits';
+$wb['limit_aps_txt'] = 'Max. Anzahl an APS-Instanzen';
+$wb['limit_aps_error_notint'] = 'Das APS Instanzen Limit muss eine Zahl sein.';
 ?>
diff --git a/interface/web/client/lib/lang/en_client.lng b/interface/web/client/lib/lang/en_client.lng
index 62ad841..61a719b 100644
--- a/interface/web/client/lib/lang/en_client.lng
+++ b/interface/web/client/lib/lang/en_client.lng
@@ -143,4 +143,7 @@
 $wb['paypal_email_error_isemail'] = 'Please enter a valid PayPal email address.';
 $wb['paypal_email_txt'] = 'PayPal Email';
 $wb['err_msg_master_tpl_set'] = 'All custom limit settings are ignored if any master template other than "custom" is selected.';
+$wb['aps_limits_txt'] = 'APS Installer Limits';
+$wb['limit_aps_txt'] = 'Max. number of APS instances';
+$wb['limit_aps_error_notint'] = 'The APS instances limit must be a number.';
 ?>
diff --git a/interface/web/client/lib/lang/en_client_template.lng b/interface/web/client/lib/lang/en_client_template.lng
index 434f94e..e7c06a8 100644
--- a/interface/web/client/lib/lang/en_client_template.lng
+++ b/interface/web/client/lib/lang/en_client_template.lng
@@ -85,4 +85,7 @@
 $wb["cron_job_limits_txt"] = 'Cron Job Limits';
 $wb["dns_limits_txt"] = 'DNS Limits';
 $wb["virtualization_limits_txt"] = 'Virtualization Limits';
+$wb['aps_limits_txt'] = 'APS Installer Limits';
+$wb['limit_aps_txt'] = 'Max. number of APS instances';
+$wb['limit_aps_error_notint'] = 'The APS instances limit must be a number.';
 ?>
\ No newline at end of file
diff --git a/interface/web/client/lib/lang/en_reseller.lng b/interface/web/client/lib/lang/en_reseller.lng
index 3d78e3c..711c414 100644
--- a/interface/web/client/lib/lang/en_reseller.lng
+++ b/interface/web/client/lib/lang/en_reseller.lng
@@ -141,4 +141,7 @@
 $wb["bank_name_txt"] = 'Bank name';
 $wb["bank_account_iban_txt"] = 'IBAN';
 $wb["bank_account_swift_txt"] = 'BIC / Swift';
+$wb['aps_limits_txt'] = 'APS Installer Limits';
+$wb['limit_aps_txt'] = 'Max. number of APS instances';
+$wb['limit_aps_error_notint'] = 'The APS instances 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 c05d6bb..c17d778 100644
--- a/interface/web/client/templates/client_edit_limits.htm
+++ b/interface/web/client/templates/client_edit_limits.htm
@@ -278,6 +278,13 @@
                     </select>
                 </div>
             </div>
+			<div class="subsectiontoggle"><span></span>{tmpl_var name='aps_limits_txt'}<em></em></div>
+            <div style="display:none;">
+                <div class="ctrlHolder">
+                    <label for="limit_aps">{tmpl_var name='limit_aps_txt'}</label>
+                    <input name="limit_aps" id="limit_aps" value="{tmpl_var name='limit_aps'}" size="10" maxlength="10" type="text" class="textInput formLengthLimit" />
+                </div>
+            </div>
         </fieldset>
 
         <input type="hidden" name="id" value="{tmpl_var name='id'}">
diff --git a/interface/web/client/templates/client_template_edit_limits.htm b/interface/web/client/templates/client_template_edit_limits.htm
index e7b28f1..18abc9b 100644
--- a/interface/web/client/templates/client_template_edit_limits.htm
+++ b/interface/web/client/templates/client_template_edit_limits.htm
@@ -217,6 +217,13 @@
                     </select>
                 </div>
             </div>
+			<div class="subsectiontoggle"><span></span>{tmpl_var name='aps_limits_txt'}<em></em></div>
+            <div style="display:none;">
+                <div class="ctrlHolder">
+                    <label for="limit_aps">{tmpl_var name='limit_aps_txt'}</label>
+                    <input name="limit_aps" id="limit_aps" value="{tmpl_var name='limit_aps'}" size="10" maxlength="10" type="text" class="textInput formLengthLimit" />
+                </div>
+            </div>
         </fieldset>
 
         <input type="hidden" name="id" value="{tmpl_var name='id'}">
diff --git a/interface/web/client/templates/reseller_edit_limits.htm b/interface/web/client/templates/reseller_edit_limits.htm
index 4c4b06f..468a680 100644
--- a/interface/web/client/templates/reseller_edit_limits.htm
+++ b/interface/web/client/templates/reseller_edit_limits.htm
@@ -266,6 +266,13 @@
                     </select>
                 </div>
             </div>
+			<div class="subsectiontoggle"><span></span>{tmpl_var name='aps_limits_txt'}<em></em></div>
+            <div style="display:none;">
+                <div class="ctrlHolder">
+                    <label for="limit_aps">{tmpl_var name='limit_aps_txt'}</label>
+                    <input name="limit_aps" id="limit_aps" value="{tmpl_var name='limit_aps'}" size="10" maxlength="10" type="text" class="textInput formLengthLimit" />
+                </div>
+            </div>
         </fieldset>
 
         <input type="hidden" name="id" value="{tmpl_var name='id'}">
diff --git a/interface/web/sites/aps_install_package.php b/interface/web/sites/aps_install_package.php
index be60121..b10c686 100644
--- a/interface/web/sites/aps_install_package.php
+++ b/interface/web/sites/aps_install_package.php
@@ -37,7 +37,7 @@
 $app->auth->check_module_permissions('sites');
 
 // Load needed classes
-$app->uses('tpl');
+$app->uses('tpl,tform');
 $app->tpl->newTemplate("form.tpl.htm");
 $app->tpl->setInclude('content_tpl', 'templates/aps_install_package.htm');
 
@@ -47,6 +47,19 @@
 $app->tpl->setVar($wb);
 $app->load_language_file('web/sites/'.$lngfile);
 
+// we will check only users, not admins
+if($_SESSION["s"]["user"]["typ"] == 'user') {		
+	$app->tform->formDef['db_table_idx'] = 'client_id';
+	$app->tform->formDef['db_table'] = 'client';
+	if(!$app->tform->checkClientLimit('limit_aps')) {
+		$app->error($app->lng("limit_aps_txt"));
+	}
+	if(!$app->tform->checkResellerLimit('limit_aps')) {
+		$app->error('Reseller: '.$wb["limit_aps_txt"]);
+	}		
+}
+
+
 $adminflag = ($_SESSION['s']['user']['typ'] == 'admin') ? true : false;
 $gui = new ApsGUIController($app);
 $pkg_id = (isset($_GET['id'])) ? $app->db->quote($_GET['id']) : '';
diff --git a/interface/web/sites/lib/lang/de_aps.lng b/interface/web/sites/lib/lang/de_aps.lng
index 76bd17f..ff8df35 100644
--- a/interface/web/sites/lib/lang/de_aps.lng
+++ b/interface/web/sites/lib/lang/de_aps.lng
@@ -54,4 +54,5 @@
 $wb['installation_success_txt'] = 'Installiert';
 $wb['installation_remove_txt'] = 'Deinstallation vorgemerkt';
 $wb['packagelist_update_finished_txt'] = 'APS Paketlistenupdate beendet.';
+$wb["limit_aps_txt"] = 'Die maximale Anzahl an APS-Instanzen für Ihr Konto wurde erreicht.';
 ?>
diff --git a/interface/web/sites/lib/lang/en_aps.lng b/interface/web/sites/lib/lang/en_aps.lng
index 2ab5402..e240d57 100644
--- a/interface/web/sites/lib/lang/en_aps.lng
+++ b/interface/web/sites/lib/lang/en_aps.lng
@@ -54,4 +54,5 @@
 $wb['installation_success_txt'] = 'Installed';
 $wb['installation_remove_txt'] = 'Removal planned';
 $wb['packagelist_update_finished_txt'] = 'APS Packagelist update finished.';
+$wb["limit_aps_txt"] = 'The max. number of APS instances for your account is reached.';
 ?>
\ No newline at end of file
diff --git a/interface/web/sites/lib/module.conf.php b/interface/web/sites/lib/module.conf.php
index 81d627e..1f7067e 100644
--- a/interface/web/sites/lib/module.conf.php
+++ b/interface/web/sites/lib/module.conf.php
@@ -132,6 +132,8 @@
 }
 
 // APS menu
+if($app->auth->get_client_limit($userid,'aps') != 0)
+{
 $items = array();
 
 $items[] = array(   'title'   => 'Available packages',
@@ -157,7 +159,7 @@
 $module['nav'][] = array(   'title' => 'APS Installer',
                             'open'  => 1,
                             'items' => $items);
-
+}
 
 // Statistics menu
 $items = array();

--
Gitblit v1.9.1