@@ -184,7 +184,7 @@ public function createSubdomain($subdomain, $username = '', $subdomain_dir = '',
184184 $ result = $ this ->api2_query ($ username , 'SubDomain ' , 'addsubdomain ' , array (
185185 'domain ' => $ subdomain ,
186186 'rootdomain ' => $ domain ,
187- 'dir ' => ' /public_html/ ' . $ subdomain_dir ,
187+ 'dir ' => $ subdomain_dir ,
188188 'disallowdot ' => 1
189189 )
190190 );
@@ -238,10 +238,12 @@ public function createdb(string $db_name)
238238 return array ('reason ' => $ msg , 'result ' => 0 );
239239 }
240240
241- $ name_length = 54 - strlen ($ this ->username );
241+ $ name_length = 63 ;
242+ if (!$ this ->hasUsernamePrefixed ($ db_name )) {
243+ $ name_length = $ name_length - (strlen ($ this ->username ) + 1 );
244+ }
242245
243- $ db_name = str_replace ($ this ->username . '_ ' , '' , $ this ->slug ($ db_name , '_ ' ));
244- $ database_name = $ this ->username . "_ " . $ db_name ;
246+ $ database_name = $ this ->fixName ($ db_name );
245247
246248 if (strlen ($ db_name ) > $ name_length || strlen ($ db_name ) < 4 ) {
247249 return array ('reason ' => 'Database name should be greater than 4 and less than ' . $ name_length . ' characters. ' , 'result ' => 0 );
@@ -252,6 +254,20 @@ public function createdb(string $db_name)
252254 return $ this ->returnResult ($ result );
253255 }
254256
257+ public function deletedb ($ db_name )
258+ {
259+ if (!isset ($ db_name ) || empty ($ db_name )) {
260+ $ msg = "database name is required. " ;
261+ return array ('reason ' => $ msg , 'result ' => 0 );
262+ }
263+
264+ $ db_name = $ this ->fixName ($ db_name );
265+
266+ $ result = $ this ->api2_query ($ this ->username , "MysqlFE " , "deletedb " , array ('db ' => $ db_name ));
267+
268+ return $ this ->returnResult ($ result );
269+ }
270+
255271 /**
256272 * @param string $db_user
257273 * @return array|mixed
@@ -264,7 +280,7 @@ public function checkdbuser(string $db_user)
264280 return array ('reason ' => $ msg , 'result ' => 0 );
265281 }
266282
267- $ dbuser = $ this ->username . ' _ ' . ( $ db_user ? str_replace ( $ this -> username . ' _ ' , '' , $ db_user ) : " myadmin " );
283+ $ dbuser = $ this ->fixName (( $ db_user ?: ' myadmin ' ) );
268284
269285 $ user = $ this ->api2_query ($ this ->username , "MysqlFE " , "dbuserexists " , array ('dbuser ' => $ dbuser ));
270286
@@ -289,12 +305,15 @@ public function createdbuser($db_user, $db_pass)
289305 return array ('reason ' => 'Please sent database username and password. ' , 'result ' => '0 ' );
290306 }
291307
292- $ user_length = 16 - strlen ($ this ->username );
293- $ db_user = str_replace ($ this ->username . '_ ' , '' , $ this ->slug ($ db_user , '_ ' ));
294- $ dbuser = $ this ->username . "_ " . $ db_user ;
308+ $ name_length = 32 ;
309+ if (!$ this ->hasUsernamePrefixed ($ db_user )) {
310+ $ name_length = $ name_length - (strlen ($ this ->username ) + 1 );
311+ }
312+
313+ $ dbuser = $ this ->fixName ($ db_user );
295314
296- if (strlen ($ db_user ) > $ user_length || strlen ($ db_user ) < 4 ) {
297- return array ('reason ' => 'Database username should be greater than 4 and less than ' . $ user_length . ' characters. ' , 'result ' => 0 );
315+ if (strlen ($ db_user ) > $ name_length || strlen ($ db_user ) < 4 ) {
316+ return array ('reason ' => 'Database username should be greater than 4 and less than ' . $ name_length . ' characters. ' , 'result ' => 0 );
298317 }
299318
300319 $ validate = $ this ->checkPassword ($ db_pass );
@@ -325,7 +344,7 @@ public function createdbuser($db_user, $db_pass)
325344 * @param string $privileges
326345 * @return array|mixed
327346 */
328- protected function setdbuser (string $ db_name , string $ db_user , string $ privileges = '' )
347+ public function setdbuser (string $ db_name , string $ db_user , string $ privileges = '' )
329348 {
330349
331350 if (!isset ($ db_name ) || !isset ($ db_user )) {
@@ -334,8 +353,8 @@ protected function setdbuser(string $db_name, string $db_user, string $privilege
334353 return array ('reason ' => $ msg , 'result ' => 0 );
335354 }
336355
337- $ dbname = $ this ->username . " _ " . str_replace ( $ this -> username . ' _ ' , '' , $ db_name );
338- $ dbuser = $ this ->username . ' _ ' . ($ db_user ? str_replace ( $ this -> username . ' _ ' , '' , $ db_user ) : " myadmin " ); //be careful this can only have a maximum of 7 characters
356+ $ dbname = $ this ->fixName ( $ db_name );
357+ $ dbuser = $ this ->fixName ($ db_user);
339358
340359 if (is_array ($ privileges )) {
341360 $ privileges = implode (', ' , $ privileges );
@@ -369,6 +388,19 @@ public function accountDetials(string $username = '')
369388 return $ this ->accountsummary ($ username );
370389 }
371390
391+ public function createEmailAccount ($ email , $ password , $ quota = 500 , $ main_domain = '' )
392+ {
393+ $ result = $ this ->api2_query ($ this ->username , 'Email ' , 'addpop ' , [
394+ 'domain ' => $ main_domain ,
395+ 'email ' => $ email ,
396+ 'password ' => $ password ,
397+ 'quota ' => $ quota
398+ ]
399+ );
400+
401+ return $ this ->returnResult ($ result );
402+ }
403+
372404 /**
373405 * @param $result
374406 * @return array|mixed
@@ -393,8 +425,8 @@ protected function returnResult($result)
393425 if (isset ($ result ['data ' ])) {
394426 $ data = $ result ['data ' ];
395427 if (is_array ($ data )) {
396- $ reason = (string )$ data ['reason ' ];
397- $ status = (string )$ data ['result ' ];
428+ $ reason = (string )( is_array ( $ data ['reason ' ]) ? implode ( ' , ' , $ data [ ' reason ' ]) : $ data [ ' reason ' ]) ;
429+ $ result = (string )( is_array ( $ data ['result ' ]) ? array_shift ( $ data [ ' result ' ]) : $ data [ ' result ' ]) ;
398430
399431 if (mb_strpos ($ reason , ') ' ) !== false ) {
400432 $ reason = ltrim (strstr ($ reason , ') ' ), ') ' );
@@ -404,7 +436,7 @@ protected function returnResult($result)
404436 $ reason = trim (strstr ($ reason , ' at ' , true ));
405437 }
406438
407- return array ('reason ' => $ reason , 'result ' => (int )$ status );
439+ return array ('reason ' => $ reason , 'result ' => (int )$ result );
408440 } else {
409441 if (isset ($ result ['func ' ])) {
410442 $ function = $ result ['func ' ];
@@ -482,4 +514,25 @@ protected function checkPassword($pwd)
482514
483515 return '' ;
484516 }
517+
518+
519+ /**
520+ * @param $name
521+ * @return bool
522+ */
523+ protected function hasUsernamePrefixed ($ name ): bool
524+ {
525+ if (substr (strtolower ($ name ), 0 , strlen ($ this ->username )) == strtolower ($ this ->username )) {
526+ return true ;
527+ }
528+ return false ;
529+ }
530+
531+ protected function fixName ($ name )
532+ {
533+ if (!$ this ->hasUsernamePrefixed ($ name )) {
534+ $ name = $ this ->username . "_ " . $ name ;
535+ }
536+ return $ name ;
537+ }
485538}
0 commit comments