@@ -59,16 +59,57 @@ function applyClientTemplates($clientId){
5959 /* maybe the template is deleted in the meantime */
6060 if (is_array ($ addLimits )){
6161 foreach ($ addLimits as $ k => $ v ){
62- if ($ k == 'limit_cron_type ' ) {
63- $ limits [$ k ] = $ v ;
64- } elseif ($ k == 'limit_cron_frequency ' ) {
65- if ($ v < $ limits [$ k ]) $ limits [$ k ] = $ v ;
66- } else {
67- if ($ limits [$ k ] > -1 ){
68- if ($ v == -1 ) {
69- $ limits [$ k ] = -1 ;
70- } else {
71- $ limits [$ k ] += $ v ;
62+ /* we can remove this condition, but it is easier to debug with it (don't add ids and other non-limit values) */
63+ if (strpos ($ k , 'limit ' ) !== false ){
64+ /* process the numerical limits */
65+ if (is_numeric ($ v )){
66+ /* switch for special cases */
67+ switch ($ k ){
68+ case 'limit_cron_frequency ' :
69+ if ($ v < $ limits [$ k ]) $ limits [$ k ] = $ v ;
70+ /* silent adjustment of the minimum cron frequency to 1 minute */
71+ /* maybe this control test should be done via validator definition in tform.php file, but I don't know how */
72+ if ($ limits [$ k ] < 1 ) $ limits [$ k ] = 1 ;
73+ break ;
74+
75+ default :
76+ if ($ limits [$ k ] > -1 ){
77+ if ($ v == -1 ){
78+ $ limits [$ k ] = -1 ;
79+ }
80+ else {
81+ $ limits [$ k ] += $ v ;
82+ }
83+ }
84+ }
85+ }
86+ /* process the string limits (CHECKBOXARRAY, SELECT etc.) */
87+ elseif (is_string ($ v )){
88+ switch ($ app ->tform ->formDef ["tabs " ]["limits " ]["fields " ][$ k ]['formtype ' ]){
89+ case 'CHECKBOXARRAY ' :
90+ if (!isset ($ limits [$ k ])){
91+ $ limits [$ k ] = array ();
92+ }
93+
94+ $ limits_values = $ limits [$ k ];
95+ if (is_string ($ limits [$ k ])){
96+ $ limits_values = explode ($ app ->tform ->formDef ["tabs " ]["limits " ]["fields " ][$ k ]["separator " ],$ limits [$ k ]);
97+ }
98+ $ additional_values = explode ($ app ->tform ->formDef ["tabs " ]["limits " ]["fields " ][$ k ]["separator " ],$ v );
99+
100+ /* unification of limits_values (master template) and additional_values (additional template) */
101+ $ limits_unified = array ();
102+ foreach ($ app ->tform ->formDef ["tabs " ]["limits " ]["fields " ][$ k ]["value " ] as $ key => $ val ){
103+ if (in_array ($ key ,$ limits_values ) || in_array ($ key ,$ additional_values )) $ limits_unified [] = $ key ;
104+ }
105+ $ limits [$ k ] = implode ($ app ->tform ->formDef ["tabs " ]["limits " ]["fields " ][$ k ]["separator " ],$ limits_unified );
106+ break ;
107+
108+ case 'SELECT ' :
109+ $ limit_values = array_keys ($ app ->tform ->formDef ["tabs " ]["limits " ]["fields " ][$ k ]["value " ]);
110+ /* choose the lower index of the two SELECT items */
111+ $ limits [$ k ] = $ limit_values [min (array_search ($ limits [$ k ], $ limit_values ), array_search ($ v , $ limit_values ))];
112+ break ;
72113 }
73114 }
74115 }
@@ -82,7 +123,7 @@ function applyClientTemplates($clientId){
82123 */
83124 $ update = '' ;
84125 foreach ($ limits as $ k => $ v ){
85- if (strpos ($ k , 'limit ' ) !== false && !is_array ($ v )){
126+ if (( strpos ($ k , 'limit ' ) !== false or $ k == ' ssh_chroot ' or $ k == ' web_php_options ' ) && !is_array ($ v )){
86127 if ($ update != '' ) $ update .= ', ' ;
87128 $ update .= '` ' . $ k . "`=' " . $ v . "' " ;
88129 }
0 commit comments