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