@@ -90,7 +90,7 @@ function calc_user($ts3,$mysqlcon,$lang,$cfg,$dbname,$allclients,$phpcommand,&$d
9090 $ name = $ mysqlcon ->quote ((mb_substr (mb_convert_encoding ($ client ['client_nickname ' ],'UTF-8 ' ,'auto ' ),0 ,30 )), ENT_QUOTES );
9191 $ uid = htmlspecialchars ($ client ['client_unique_identifier ' ], ENT_QUOTES );
9292 $ sgroups = array_flip (explode (", " , $ client ['client_servergroups ' ]));
93- if (strlen ($ client ['client_country ' ]) > 2 || $ client ['client_country ' ] == '' ) $ client ['client_country ' ] = 'XX ' ;
93+ if ($ client [ ' client_country ' ] !== NULL && strlen ($ client ['client_country ' ]) > 2 || $ client ['client_country ' ] === NULL ) $ client ['client_country ' ] = 'XX ' ;
9494 $ client ['client_platform ' ] = mb_substr ($ client ['client_platform ' ],0 ,32 );
9595 $ client ['client_version ' ] = mb_substr ($ client ['client_version ' ],0 ,64 );
9696
@@ -108,17 +108,18 @@ function calc_user($ts3,$mysqlcon,$lang,$cfg,$dbname,$allclients,$phpcommand,&$d
108108 if (isset ($ db_cache ['all_user ' ][$ uid ]['except ' ]) && ($ db_cache ['all_user ' ][$ uid ]['except ' ] == 3 || $ db_cache ['all_user ' ][$ uid ]['except ' ] == 2 ) && $ cfg ['rankup_excepted_mode ' ] == 2 ) {
109109 $ db_cache ['all_user ' ][$ uid ]['count ' ] = 0 ;
110110 $ db_cache ['all_user ' ][$ uid ]['idle ' ] = 0 ;
111- enter_logfile ($ cfg ,5 ,sprintf ($ lang ['resettime ' ], $ name , $ uid , $ client ['client_database_id ' ]));
112- $ sqlexec .= "DELETE FROM ` $ dbname`.`user_snapshot` WHERE `uuid `=' $ uid '; \n" ;
111+ enter_logfile ($ cfg ,5 ,sprintf ($ lang ['resettime ' ], $ client [ ' client_nickname ' ] , $ uid , $ client ['client_database_id ' ]));
112+ $ sqlexec .= "DELETE FROM ` $ dbname`.`user_snapshot` WHERE `cldbid `=' { $ client [ ' client_database_id ' ]} '; \n" ;
113113 }
114114 $ except = 0 ;
115115 }
116116 if (isset ($ db_cache ['all_user ' ][$ uid ])) {
117117 $ idle = $ db_cache ['all_user ' ][$ uid ]['idle ' ] + $ clientidle ;
118118 if ($ db_cache ['all_user ' ][$ uid ]['cldbid ' ] != $ client ['client_database_id ' ] && $ cfg ['rankup_client_database_id_change_switch ' ] == 1 ) {
119- enter_logfile ($ cfg ,5 ,sprintf ($ lang ['changedbid ' ], $ name , $ uid , $ client ['client_database_id ' ], $ db_cache ['all_user ' ][$ uid ]['cldbid ' ]));
119+ enter_logfile ($ cfg ,5 ,sprintf ($ lang ['changedbid ' ], $ client [ ' client_nickname ' ] , $ uid , $ client ['client_database_id ' ], $ db_cache ['all_user ' ][$ uid ]['cldbid ' ]));
120120 $ count = 1 ;
121121 $ idle = 0 ;
122+ $ boosttime = 0 ;
122123 } else {
123124 $ hitboost = 0 ;
124125 $ boosttime = $ db_cache ['all_user ' ][$ uid ]['boosttime ' ];
@@ -129,14 +130,15 @@ function calc_user($ts3,$mysqlcon,$lang,$cfg,$dbname,$allclients,$phpcommand,&$d
129130 if ($ db_cache ['all_user ' ][$ uid ]['boosttime ' ]==0 ) {
130131 $ boosttime = $ nowtime ;
131132 } else {
132- if ($ nowtime > $ db_cache ['all_user ' ][$ uid ]['boosttime ' ] + $ boost ['time ' ]) {
133+ if ($ nowtime > $ db_cache ['all_user ' ][$ uid ]['boosttime ' ] + $ boost ['time ' ] && (! isset ( $ db_cache [ ' all_user ' ][ $ uid ][ ' grouperror ' ]) || $ db_cache [ ' all_user ' ][ $ uid ][ ' grouperror ' ] < ( $ nowtime - 300 )) ) {
133134 usleep ($ cfg ['teamspeak_query_command_delay ' ]);
134135 try {
135136 $ ts3 ->serverGroupClientDel ($ boost ['group ' ], $ client ['client_database_id ' ]);
136137 $ boosttime = 0 ;
137- enter_logfile ($ cfg ,5 ,sprintf ($ lang ['sgrprm ' ], $ db_cache ['groups ' ][$ boost ['group ' ]]['sgidname ' ], $ boost ['group ' ], $ name , $ uid , $ client ['client_database_id ' ]).' [Boost-Group] ' );
138+ enter_logfile ($ cfg ,5 ,sprintf ($ lang ['sgrprm ' ], $ db_cache ['groups ' ][$ boost ['group ' ]]['sgidname ' ], $ boost ['group ' ], $ client [ ' client_nickname ' ] , $ uid , $ client ['client_database_id ' ]).' [Boost-Group] ' );
138139 } catch (Exception $ e ) {
139- enter_logfile ($ cfg ,2 ,"TS3 error: " .$ e ->getCode ().': ' .$ e ->getMessage ()." ; " .sprintf ($ lang ['sgrprerr ' ], $ name , $ uid , $ client ['client_database_id ' ], $ db_cache ['groups ' ][$ db_cache ['all_user ' ][$ uid ]['grpid ' ]]['sgidname ' ], $ db_cache ['all_user ' ][$ uid ]['grpid ' ]));
140+ enter_logfile ($ cfg ,2 ,"TS3 error: " .$ e ->getCode ().': ' .$ e ->getMessage ()." ; " .sprintf ($ lang ['sgrprerr ' ], $ client ['client_nickname ' ], $ uid , $ client ['client_database_id ' ], $ db_cache ['groups ' ][$ db_cache ['all_user ' ][$ uid ]['grpid ' ]]['sgidname ' ], $ db_cache ['all_user ' ][$ uid ]['grpid ' ]));
141+ $ db_cache ['all_user ' ][$ uid ]['grouperror ' ] = $ nowtime ;
140142 }
141143 }
142144 }
@@ -189,31 +191,35 @@ function calc_user($ts3,$mysqlcon,$lang,$cfg,$dbname,$allclients,$phpcommand,&$d
189191 $ donotremove = 1 ; break ;
190192 }
191193 }
192- if ($ donotremove == 0 ) {
194+ if ($ donotremove == 0 && (! isset ( $ db_cache [ ' all_user ' ][ $ uid ][ ' grouperror ' ]) || $ db_cache [ ' all_user ' ][ $ uid ][ ' grouperror ' ] < ( $ nowtime - 300 )) ) {
193195 usleep ($ cfg ['teamspeak_query_command_delay ' ]);
194196 try {
195197 $ ts3 ->serverGroupClientDel ($ db_cache ['all_user ' ][$ uid ]['grpid ' ], $ client ['client_database_id ' ]);
196- enter_logfile ($ cfg ,5 ,sprintf ($ lang ['sgrprm ' ], $ db_cache ['groups ' ][$ db_cache ['all_user ' ][$ uid ]['grpid ' ]]['sgidname ' ], $ db_cache ['all_user ' ][$ uid ]['grpid ' ], $ name , $ uid , $ client ['client_database_id ' ]));
198+ enter_logfile ($ cfg ,5 ,sprintf ($ lang ['sgrprm ' ], $ db_cache ['groups ' ][$ db_cache ['all_user ' ][$ uid ]['grpid ' ]]['sgidname ' ], $ db_cache ['all_user ' ][$ uid ]['grpid ' ], $ client [ ' client_nickname ' ] , $ uid , $ client ['client_database_id ' ]));
197199 if (isset ($ client_groups_rankup [$ db_cache ['all_user ' ][$ uid ]['grpid ' ]])) unset($ client_groups_rankup [$ db_cache ['all_user ' ][$ uid ]['grpid ' ]]);
198200 } catch (Exception $ e ) {
199- enter_logfile ($ cfg ,2 ,"TS3 error: " .$ e ->getCode ().': ' .$ e ->getMessage ()." ; " .sprintf ($ lang ['sgrprerr ' ], $ name , $ uid , $ client ['client_database_id ' ], $ db_cache ['groups ' ][$ db_cache ['all_user ' ][$ uid ]['grpid ' ]]['sgidname ' ], $ db_cache ['all_user ' ][$ uid ]['grpid ' ]));
201+ enter_logfile ($ cfg ,2 ,"TS3 error: " .$ e ->getCode ().': ' .$ e ->getMessage ()." ; " .sprintf ($ lang ['sgrprerr ' ], $ client ['client_nickname ' ], $ uid , $ client ['client_database_id ' ], $ db_cache ['groups ' ][$ db_cache ['all_user ' ][$ uid ]['grpid ' ]]['sgidname ' ], $ db_cache ['all_user ' ][$ uid ]['grpid ' ]));
202+ $ db_cache ['all_user ' ][$ uid ]['grouperror ' ] = $ nowtime ;
200203 }
201204 }
202205 }
203- usleep ($ cfg ['teamspeak_query_command_delay ' ]);
204- try {
205- $ ts3 ->serverGroupClientAdd ($ rank ['group ' ], $ client ['client_database_id ' ]);
206- $ db_cache ['all_user ' ][$ uid ]['grpsince ' ] = $ nowtime ;
207- enter_logfile ($ cfg ,5 ,sprintf ($ lang ['sgrpadd ' ], $ db_cache ['groups ' ][$ rank ['group ' ]]['sgidname ' ], $ rank ['group ' ], $ name , $ uid , $ client ['client_database_id ' ]));
208- if ($ cfg ['rankup_message_to_user_switch ' ] == 1 ) {
209- $ days = $ dtF ->diff ($ dtT )->format ('%a ' );
210- $ hours = $ dtF ->diff ($ dtT )->format ('%h ' );
211- $ mins = $ dtF ->diff ($ dtT )->format ('%i ' );
212- $ secs = $ dtF ->diff ($ dtT )->format ('%s ' );
213- sendmessage ($ ts3 , $ cfg , $ uid , sprintf ($ cfg ['rankup_message_to_user ' ],$ days ,$ hours ,$ mins ,$ secs ,$ db_cache ['groups ' ][$ rank ['group ' ]]['sgidname ' ],$ client ['client_nickname ' ]), 1 , NULL , sprintf ($ lang ['sgrprerr ' ], $ name , $ uid , $ client ['client_database_id ' ], $ db_cache ['groups ' ][$ rank ['group ' ]]['sgidname ' ],$ rank ['group ' ]), 2 );
206+ if (!isset ($ db_cache ['all_user ' ][$ uid ]['grouperror ' ]) || $ db_cache ['all_user ' ][$ uid ]['grouperror ' ] < ($ nowtime - 300 )) {
207+ usleep ($ cfg ['teamspeak_query_command_delay ' ]);
208+ try {
209+ $ ts3 ->serverGroupClientAdd ($ rank ['group ' ], $ client ['client_database_id ' ]);
210+ $ db_cache ['all_user ' ][$ uid ]['grpsince ' ] = $ nowtime ;
211+ enter_logfile ($ cfg ,5 ,sprintf ($ lang ['sgrpadd ' ], $ db_cache ['groups ' ][$ rank ['group ' ]]['sgidname ' ], $ rank ['group ' ], $ client ['client_nickname ' ], $ uid , $ client ['client_database_id ' ]));
212+ if ($ cfg ['rankup_message_to_user_switch ' ] == 1 ) {
213+ $ days = $ dtF ->diff ($ dtT )->format ('%a ' );
214+ $ hours = $ dtF ->diff ($ dtT )->format ('%h ' );
215+ $ mins = $ dtF ->diff ($ dtT )->format ('%i ' );
216+ $ secs = $ dtF ->diff ($ dtT )->format ('%s ' );
217+ sendmessage ($ ts3 , $ cfg , $ uid , sprintf ($ cfg ['rankup_message_to_user ' ],$ days ,$ hours ,$ mins ,$ secs ,$ db_cache ['groups ' ][$ rank ['group ' ]]['sgidname ' ],$ client ['client_nickname ' ]), 1 , NULL , sprintf ($ lang ['sgrprerr ' ], $ name , $ uid , $ client ['client_database_id ' ], $ db_cache ['groups ' ][$ rank ['group ' ]]['sgidname ' ],$ rank ['group ' ]), 2 );
218+ }
219+ } catch (Exception $ e ) {
220+ enter_logfile ($ cfg ,2 ,"TS3 error: " .$ e ->getCode ().': ' .$ e ->getMessage ()." ; " .sprintf ($ lang ['sgrprerr ' ], $ client ['client_nickname ' ], $ uid , $ client ['client_database_id ' ], $ db_cache ['groups ' ][$ rank ['group ' ]]['sgidname ' ], $ rank ['group ' ]));
221+ $ db_cache ['all_user ' ][$ uid ]['grouperror ' ] = $ nowtime ;
214222 }
215- } catch (Exception $ e ) {
216- enter_logfile ($ cfg ,2 ,"TS3 error: " .$ e ->getCode ().': ' .$ e ->getMessage ()." ; " .sprintf ($ lang ['sgrprerr ' ], $ name , $ uid , $ client ['client_database_id ' ], $ db_cache ['groups ' ][$ rank ['group ' ]]['sgidname ' ], $ rank ['group ' ]));
217223 }
218224 }
219225 if ($ grpcount == 1 ) {
@@ -227,13 +233,14 @@ function calc_user($ts3,$mysqlcon,$lang,$cfg,$dbname,$allclients,$phpcommand,&$d
227233 }
228234
229235 foreach ($ client_groups_rankup as $ removegroup => $ dummy ) {
230- if ($ removegroup != NULL && $ removegroup != 0 && $ removegroup != $ db_cache ['all_user ' ][$ uid ]['grpid ' ]){
236+ if ($ removegroup != NULL && $ removegroup != 0 && $ removegroup != $ db_cache ['all_user ' ][$ uid ]['grpid ' ] && (! isset ( $ db_cache [ ' all_user ' ][ $ uid ][ ' grouperror ' ]) || $ db_cache [ ' all_user ' ][ $ uid ][ ' grouperror ' ] < ( $ nowtime - 300 )) ){
231237 try {
232238 usleep ($ cfg ['teamspeak_query_command_delay ' ]);
233239 $ ts3 ->serverGroupClientDel ($ removegroup , $ client ['client_database_id ' ]);
234- enter_logfile ($ cfg ,5 ,sprintf ("Removed WRONG servergroup %s (ID: %s) from user %s (unique Client-ID: %s; Client-database-ID %s). " , $ db_cache ['groups ' ][$ removegroup ]['sgidname ' ], $ removegroup , $ name , $ uid , $ client ['client_database_id ' ]));
240+ enter_logfile ($ cfg ,5 ,sprintf ("Removed WRONG servergroup %s (ID: %s) from user %s (unique Client-ID: %s; Client-database-ID %s). " , $ db_cache ['groups ' ][$ removegroup ]['sgidname ' ], $ removegroup , $ client [ ' client_nickname ' ] , $ uid , $ client ['client_database_id ' ]));
235241 } catch (Exception $ e ) {
236- enter_logfile ($ cfg ,2 ,"TS3 error: " .$ e ->getCode ().': ' .$ e ->getMessage ()." ; " .sprintf ($ lang ['sgrprerr ' ], $ name , $ uid , $ client ['client_database_id ' ], $ db_cache ['groups ' ][$ removegroup ]['sgidname ' ], $ removegroup ));
242+ enter_logfile ($ cfg ,2 ,"TS3 error: " .$ e ->getCode ().': ' .$ e ->getMessage ()." ; " .sprintf ($ lang ['sgrprerr ' ], $ client ['client_nickname ' ], $ uid , $ client ['client_database_id ' ], $ db_cache ['groups ' ][$ removegroup ]['sgidname ' ], $ removegroup ));
243+ $ db_cache ['all_user ' ][$ uid ]['grouperror ' ] = $ nowtime ;
237244 }
238245 }
239246 }
@@ -295,7 +302,7 @@ function calc_user($ts3,$mysqlcon,$lang,$cfg,$dbname,$allclients,$phpcommand,&$d
295302 $ db_cache ['all_user ' ][$ uid ]['boosttime ' ] = 0 ;
296303 $ db_cache ['all_user ' ][$ uid ]['grpsince ' ] = 0 ;
297304 $ db_cache ['all_user ' ][$ uid ]['except ' ] = $ except ;
298- enter_logfile ($ cfg ,5 ,sprintf ($ lang ['adduser ' ], $ name , $ uid , $ client ['client_database_id ' ]));
305+ enter_logfile ($ cfg ,5 ,sprintf ($ lang ['adduser ' ], $ client [ ' client_nickname ' ] , $ uid , $ client ['client_database_id ' ]));
299306 }
300307 $ db_cache ['all_user ' ][$ uid ]['name ' ] = $ client ['client_nickname ' ];
301308 $ db_cache ['all_user ' ][$ uid ]['lastseen ' ] = $ nowtime ;
0 commit comments