@@ -167,7 +167,7 @@ function onSubmit() {
167167 if ($ _SESSION ["s " ]["user " ]["typ " ] != 'admin ' ) {
168168 // Get the limits of the client
169169 $ client_group_id = $ _SESSION ["s " ]["user " ]["default_group " ];
170- $ client = $ app ->db ->queryOneRecord ("SELECT db_servers, limit_database, limit_database_quota FROM sys_group, client WHERE sys_group.client_id = client.client_id AND sys_group.groupid = $ client_group_id " );
170+ $ client = $ app ->db ->queryOneRecord ("SELECT db_servers, limit_database, limit_database_quota, parent_client_id FROM sys_group, client WHERE sys_group.client_id = client.client_id AND sys_group.groupid = $ client_group_id " );
171171
172172 // When the record is updated
173173 if ($ this ->id > 0 ) {
@@ -197,6 +197,33 @@ function onSubmit() {
197197 unset($ global_config );
198198 unset($ dbname_prefix );
199199 }
200+
201+ if ($ client ['parent_client_id ' ] > 0 ) {
202+ // Get the limits of the reseller
203+ $ reseller = $ app ->db ->queryOneRecord ("SELECT limit_database, limit_database_quota FROM client WHERE client_id = " .$ client ['parent_client_id ' ]);
204+
205+ //* Check the website quota of the client
206+ if ($ reseller ['limit_database_quota ' ] >= 0 ) {
207+ //* get the database prefix
208+ $ app ->uses ('getconf,tools_sites ' );
209+ $ global_config = $ app ->getconf ->get_global_config ('sites ' );
210+ $ dbname_prefix = $ app ->tools_sites ->replacePrefix ($ global_config ['dbname_prefix ' ], $ this ->dataRecord );
211+ //* get quota from other databases
212+ $ tmp = $ app ->db ->queryOneRecord ("SELECT sum(database_quota) as db_quota FROM web_database, sys_group, client WHERE web_database.sys_groupid=sys_group.groupid AND sys_group.client_id=client.client_id AND ? IN (client.parent_client_id, client.client_id) AND database_name <> ? " , $ client ['parent_client_id ' ], $ dbname_prefix .$ this ->dataRecord ['database_name ' ]);
213+
214+ $ used_quota = $ app ->functions ->intval ($ tmp ['db_quota ' ]);
215+ $ new_db_quota = $ app ->functions ->intval ($ this ->dataRecord ["database_quota " ]);
216+ if (($ used_quota + $ new_db_quota > $ reseller ["limit_database_quota " ]) || ($ new_db_quota < 0 && $ reseller ["limit_database_quota " ] >= 0 )) {
217+ $ max_free_quota = floor ($ reseller ["limit_database_quota " ] - $ used_quota );
218+ if ($ max_free_quota < 0 ) $ max_free_quota = 0 ;
219+ $ app ->tform ->errorMessage .= $ app ->tform ->lng ("limit_database_quota_free_txt " ).": " .$ max_free_quota ." MB<br> " ;
220+ $ this ->dataRecord ["database_quota " ] = $ max_free_quota ;
221+ }
222+ unset($ tmp );
223+ unset($ global_config );
224+ unset($ dbname_prefix );
225+ }
226+ }
200227 // When the record is inserted
201228 } else {
202229 $ client ['db_servers_ids ' ] = explode (', ' , $ client ['db_servers ' ]);
0 commit comments