From ebb906e2f2e30a3dda78cc1e245d27673ac163ee Mon Sep 17 00:00:00 2001 From: Ulf Gebhardt Date: Wed, 16 Sep 2015 13:18:08 +0200 Subject: [PATCH] init version 1.1.23 --- autoload.inc | 3 + lib/changelog.txt | 572 ++ lib/docs/html/TeamSpeak.png | Bin 0 -> 7393 bytes lib/docs/html/_adapter_2_abstract_8php.html | 156 + .../html/_adapter_2_abstract_8php_source.html | 282 + ..._adapter_2_blacklist_2_exception_8php.html | 156 + ...r_2_blacklist_2_exception_8php_source.html | 154 + lib/docs/html/_adapter_2_exception_8php.html | 156 + .../_adapter_2_exception_8php_source.html | 154 + ...pter_2_file_transfer_2_exception_8php.html | 156 + ...file_transfer_2_exception_8php_source.html | 154 + ...apter_2_server_query_2_exception_8php.html | 156 + ..._server_query_2_exception_8php_source.html | 154 + ..._adapter_2_t_s_d_n_s_2_exception_8php.html | 156 + ...r_2_t_s_d_n_s_2_exception_8php_source.html | 154 + .../_adapter_2_update_2_exception_8php.html | 156 + ...pter_2_update_2_exception_8php_source.html | 154 + lib/docs/html/_blacklist_8php.html | 156 + lib/docs/html/_blacklist_8php_source.html | 241 + lib/docs/html/_channel_8php.html | 156 + lib/docs/html/_channel_8php_source.html | 710 ++ lib/docs/html/_channelgroup_8php.html | 156 + lib/docs/html/_channelgroup_8php_source.html | 398 + lib/docs/html/_char_8php.html | 156 + lib/docs/html/_char_8php_source.html | 391 + lib/docs/html/_client_8php.html | 156 + lib/docs/html/_client_8php_source.html | 563 ++ lib/docs/html/_convert_8php.html | 156 + lib/docs/html/_convert_8php_source.html | 471 + lib/docs/html/_crypt_8php.html | 156 + lib/docs/html/_crypt_8php_source.html | 604 ++ lib/docs/html/_event_8php.html | 156 + lib/docs/html/_event_8php_source.html | 292 + lib/docs/html/_exception_8php.html | 156 + lib/docs/html/_exception_8php_source.html | 251 + lib/docs/html/_file_transfer_8php.html | 156 + lib/docs/html/_file_transfer_8php_source.html | 312 + lib/docs/html/_handler_8php.html | 156 + lib/docs/html/_handler_8php_source.html | 200 + lib/docs/html/_helper_2_exception_8php.html | 156 + .../html/_helper_2_exception_8php_source.html | 154 + .../_helper_2_profiler_2_exception_8php.html | 156 + ...er_2_profiler_2_exception_8php_source.html | 154 + .../_helper_2_signal_2_exception_8php.html | 156 + ...lper_2_signal_2_exception_8php_source.html | 154 + .../_helper_2_signal_2_interface_8php.html | 156 + ...lper_2_signal_2_interface_8php_source.html | 475 + lib/docs/html/_host_8php.html | 156 + lib/docs/html/_host_8php_source.html | 1315 +++ lib/docs/html/_html_8php.html | 156 + lib/docs/html/_html_8php_source.html | 792 ++ lib/docs/html/_node_2_abstract_8php.html | 156 + .../html/_node_2_abstract_8php_source.html | 747 ++ lib/docs/html/_node_2_exception_8php.html | 156 + .../html/_node_2_exception_8php_source.html | 154 + lib/docs/html/_profiler_8php.html | 156 + lib/docs/html/_profiler_8php_source.html | 223 + lib/docs/html/_reply_8php.html | 156 + lib/docs/html/_reply_8php_source.html | 468 + lib/docs/html/_server_8php.html | 156 + lib/docs/html/_server_8php_source.html | 2658 +++++ lib/docs/html/_server_query_8php.html | 156 + lib/docs/html/_server_query_8php_source.html | 383 + lib/docs/html/_servergroup_8php.html | 156 + lib/docs/html/_servergroup_8php_source.html | 422 + lib/docs/html/_signal_8php.html | 156 + lib/docs/html/_signal_8php_source.html | 335 + lib/docs/html/_string_8php.html | 156 + lib/docs/html/_string_8php_source.html | 1061 ++ lib/docs/html/_t_c_p_8php.html | 156 + lib/docs/html/_t_c_p_8php_source.html | 301 + lib/docs/html/_t_s_d_n_s_8php.html | 156 + lib/docs/html/_t_s_d_n_s_8php_source.html | 217 + lib/docs/html/_team_speak3_8php.html | 156 + lib/docs/html/_team_speak3_8php_source.html | 1103 ++ lib/docs/html/_text_8php.html | 156 + lib/docs/html/_text_8php_source.html | 229 + lib/docs/html/_timer_8php.html | 156 + lib/docs/html/_timer_8php_source.html | 276 + lib/docs/html/_transport_2_abstract_8php.html | 156 + .../_transport_2_abstract_8php_source.html | 390 + .../html/_transport_2_exception_8php.html | 156 + .../_transport_2_exception_8php_source.html | 154 + lib/docs/html/_u_d_p_8php.html | 156 + lib/docs/html/_u_d_p_8php_source.html | 235 + lib/docs/html/_update_8php.html | 156 + lib/docs/html/_update_8php_source.html | 339 + lib/docs/html/_uri_8php.html | 156 + lib/docs/html/_uri_8php_source.html | 839 ++ lib/docs/html/_viewer_2_interface_8php.html | 156 + .../html/_viewer_2_interface_8php_source.html | 164 + lib/docs/html/annotated.html | 172 + lib/docs/html/annotated.js | 48 + lib/docs/html/bc_s.png | Bin 0 -> 684 bytes lib/docs/html/bdwn.png | Bin 0 -> 144 bytes lib/docs/html/class_team_speak3-members.html | 247 + lib/docs/html/class_team_speak3.html | 3070 ++++++ lib/docs/html/class_team_speak3.js | 115 + ...m_speak3___adapter___abstract-members.html | 138 + ...lass_team_speak3___adapter___abstract.html | 511 + .../class_team_speak3___adapter___abstract.js | 15 + ...class_team_speak3___adapter___abstract.png | Bin 0 -> 2074 bytes ..._speak3___adapter___blacklist-members.html | 142 + ...ass_team_speak3___adapter___blacklist.html | 587 ++ ...class_team_speak3___adapter___blacklist.js | 18 + ...lass_team_speak3___adapter___blacklist.png | Bin 0 -> 832 bytes ...apter___blacklist___exception-members.html | 132 + ...ak3___adapter___blacklist___exception.html | 377 + ...peak3___adapter___blacklist___exception.js | 5 + ...eak3___adapter___blacklist___exception.png | Bin 0 -> 1521 bytes ..._speak3___adapter___exception-members.html | 132 + ...ass_team_speak3___adapter___exception.html | 381 + ...class_team_speak3___adapter___exception.js | 5 + ...lass_team_speak3___adapter___exception.png | Bin 0 -> 4041 bytes ...ak3___adapter___file_transfer-members.html | 142 + ...team_speak3___adapter___file_transfer.html | 813 ++ ...s_team_speak3___adapter___file_transfer.js | 18 + ..._team_speak3___adapter___file_transfer.png | Bin 0 -> 879 bytes ...r___file_transfer___exception-members.html | 132 + ...__adapter___file_transfer___exception.html | 377 + ...3___adapter___file_transfer___exception.js | 5 + ...___adapter___file_transfer___exception.png | Bin 0 -> 1762 bytes ...eak3___adapter___server_query-members.html | 149 + ..._team_speak3___adapter___server_query.html | 875 ++ ...ss_team_speak3___adapter___server_query.js | 25 + ...s_team_speak3___adapter___server_query.png | Bin 0 -> 891 bytes ...dapter___server_query___event-members.html | 139 + ...eak3___adapter___server_query___event.html | 507 + ...speak3___adapter___server_query___event.js | 16 + ...peak3___adapter___server_query___event.png | Bin 0 -> 757 bytes ...er___server_query___exception-members.html | 132 + ...___adapter___server_query___exception.html | 377 + ...k3___adapter___server_query___exception.js | 5 + ...3___adapter___server_query___exception.png | Bin 0 -> 1817 bytes ...dapter___server_query___reply-members.html | 145 + ...eak3___adapter___server_query___reply.html | 762 ++ ...speak3___adapter___server_query___reply.js | 22 + ..._speak3___adapter___t_s_d_n_s-members.html | 140 + ...ass_team_speak3___adapter___t_s_d_n_s.html | 576 ++ ...class_team_speak3___adapter___t_s_d_n_s.js | 16 + ...lass_team_speak3___adapter___t_s_d_n_s.png | Bin 0 -> 836 bytes ...apter___t_s_d_n_s___exception-members.html | 132 + ...ak3___adapter___t_s_d_n_s___exception.html | 377 + ...peak3___adapter___t_s_d_n_s___exception.js | 5 + ...eak3___adapter___t_s_d_n_s___exception.png | Bin 0 -> 1517 bytes ...eam_speak3___adapter___update-members.html | 148 + .../class_team_speak3___adapter___update.html | 808 ++ .../class_team_speak3___adapter___update.js | 24 + .../class_team_speak3___adapter___update.png | Bin 0 -> 824 bytes ..._adapter___update___exception-members.html | 132 + ...speak3___adapter___update___exception.html | 377 + ...m_speak3___adapter___update___exception.js | 5 + ..._speak3___adapter___update___exception.png | Bin 0 -> 1510 bytes ...class_team_speak3___exception-members.html | 132 + .../html/class_team_speak3___exception.html | 432 + .../html/class_team_speak3___exception.js | 6 + .../html/class_team_speak3___exception.png | Bin 0 -> 6480 bytes ...s_team_speak3___helper___char-members.html | 146 + .../class_team_speak3___helper___char.html | 730 ++ .../html/class_team_speak3___helper___char.js | 22 + ...eam_speak3___helper___convert-members.html | 138 + .../class_team_speak3___helper___convert.html | 874 ++ ..._team_speak3___helper___crypt-members.html | 136 + .../class_team_speak3___helper___crypt.html | 809 ++ .../class_team_speak3___helper___crypt.js | 13 + ...m_speak3___helper___exception-members.html | 132 + ...lass_team_speak3___helper___exception.html | 378 + .../class_team_speak3___helper___exception.js | 5 + ...class_team_speak3___helper___exception.png | Bin 0 -> 2103 bytes ...am_speak3___helper___profiler-members.html | 131 + ...class_team_speak3___helper___profiler.html | 336 + ...helper___profiler___exception-members.html | 132 + ...peak3___helper___profiler___exception.html | 377 + ..._speak3___helper___profiler___exception.js | 5 + ...speak3___helper___profiler___exception.png | Bin 0 -> 1491 bytes ...3___helper___profiler___timer-members.html | 136 + ...am_speak3___helper___profiler___timer.html | 376 + ...team_speak3___helper___profiler___timer.js | 13 + ...team_speak3___helper___signal-members.html | 137 + .../class_team_speak3___helper___signal.html | 566 ++ .../class_team_speak3___helper___signal.js | 12 + ...__helper___signal___exception-members.html | 132 + ..._speak3___helper___signal___exception.html | 377 + ...am_speak3___helper___signal___exception.js | 5 + ...m_speak3___helper___signal___exception.png | Bin 0 -> 1493 bytes ...3___helper___signal___handler-members.html | 130 + ...am_speak3___helper___signal___handler.html | 243 + ...team_speak3___helper___signal___handler.js | 7 + ...__helper___signal___interface-members.html | 152 + ...team_speak3___helper___string-members.html | 178 + .../class_team_speak3___helper___string.html | 2205 ++++ .../class_team_speak3___helper___string.js | 52 + .../class_team_speak3___helper___string.png | Bin 0 -> 1152 bytes ...ss_team_speak3___helper___uri-members.html | 171 + .../class_team_speak3___helper___uri.html | 1729 ++++ .../html/class_team_speak3___helper___uri.js | 40 + ...team_speak3___node___abstract-members.html | 175 + .../class_team_speak3___node___abstract.html | 1979 ++++ .../class_team_speak3___node___abstract.js | 52 + .../class_team_speak3___node___abstract.png | Bin 0 -> 3048 bytes ..._team_speak3___node___channel-members.html | 208 + .../class_team_speak3___node___channel.html | 3695 +++++++ .../class_team_speak3___node___channel.js | 85 + .../class_team_speak3___node___channel.png | Bin 0 -> 1830 bytes ..._speak3___node___channelgroup-members.html | 189 + ...ass_team_speak3___node___channelgroup.html | 2806 ++++++ ...class_team_speak3___node___channelgroup.js | 66 + ...lass_team_speak3___node___channelgroup.png | Bin 0 -> 1924 bytes ...s_team_speak3___node___client-members.html | 202 + .../class_team_speak3___node___client.html | 3255 ++++++ .../html/class_team_speak3___node___client.js | 79 + .../class_team_speak3___node___client.png | Bin 0 -> 1823 bytes ...eam_speak3___node___exception-members.html | 132 + .../class_team_speak3___node___exception.html | 376 + .../class_team_speak3___node___exception.js | 5 + .../class_team_speak3___node___exception.png | Bin 0 -> 1000 bytes ...ass_team_speak3___node___host-members.html | 245 + .../html/class_team_speak3___node___host.html | 5029 ++++++++++ .../html/class_team_speak3___node___host.js | 122 + .../html/class_team_speak3___node___host.png | Bin 0 -> 1810 bytes ...s_team_speak3___node___server-members.html | 312 + .../class_team_speak3___node___server.html | 8884 +++++++++++++++++ .../html/class_team_speak3___node___server.js | 186 + .../class_team_speak3___node___server.png | Bin 0 -> 1829 bytes ...m_speak3___node___servergroup-members.html | 191 + ...lass_team_speak3___node___servergroup.html | 2890 ++++++ .../class_team_speak3___node___servergroup.js | 68 + ...class_team_speak3___node___servergroup.png | Bin 0 -> 1918 bytes ...speak3___transport___abstract-members.html | 145 + ...ss_team_speak3___transport___abstract.html | 759 ++ ...lass_team_speak3___transport___abstract.js | 22 + ...ass_team_speak3___transport___abstract.png | Bin 0 -> 1084 bytes ...peak3___transport___exception-members.html | 132 + ...s_team_speak3___transport___exception.html | 376 + ...ass_team_speak3___transport___exception.js | 5 + ...ss_team_speak3___transport___exception.png | Bin 0 -> 1053 bytes ...am_speak3___transport___t_c_p-members.html | 147 + ...class_team_speak3___transport___t_c_p.html | 898 ++ .../class_team_speak3___transport___t_c_p.js | 22 + .../class_team_speak3___transport___t_c_p.png | Bin 0 -> 812 bytes ...am_speak3___transport___u_d_p-members.html | 145 + ...class_team_speak3___transport___u_d_p.html | 767 ++ .../class_team_speak3___transport___u_d_p.js | 20 + .../class_team_speak3___transport___u_d_p.png | Bin 0 -> 816 bytes ...s_team_speak3___viewer___html-members.html | 154 + .../class_team_speak3___viewer___html.html | 1321 +++ .../html/class_team_speak3___viewer___html.js | 31 + .../class_team_speak3___viewer___html.png | Bin 0 -> 789 bytes ...m_speak3___viewer___interface-members.html | 127 + ...s_team_speak3___viewer___text-members.html | 131 + .../class_team_speak3___viewer___text.html | 341 + .../html/class_team_speak3___viewer___text.js | 8 + .../class_team_speak3___viewer___text.png | Bin 0 -> 797 bytes lib/docs/html/classes.html | 147 + lib/docs/html/closed.png | Bin 0 -> 132 bytes lib/docs/html/deprecated.html | 150 + .../dir_10d0dafa9b3c98f86f6c3e308f71f5e1.html | 130 + .../dir_10d0dafa9b3c98f86f6c3e308f71f5e1.js | 12 + .../dir_1e759c367c240af77b5353a40d4dc42a.html | 155 + .../dir_1e759c367c240af77b5353a40d4dc42a.js | 29 + .../dir_3d7cd49b95def433e02a0e6f52be25f0.html | 145 + .../dir_3d7cd49b95def433e02a0e6f52be25f0.js | 27 + .../dir_3e66aa12f34129cf2d52c47a74e0508c.html | 152 + .../dir_3e66aa12f34129cf2d52c47a74e0508c.js | 29 + .../dir_4844b50d2d416922f1f8de7560b09faf.html | 127 + .../dir_4844b50d2d416922f1f8de7560b09faf.js | 9 + .../dir_554650cc51f1200e004a96892070fcf9.html | 130 + .../dir_554650cc51f1200e004a96892070fcf9.js | 12 + .../dir_79b267753267ba2a550585ecabe3d90e.html | 124 + .../dir_79b267753267ba2a550585ecabe3d90e.js | 6 + .../dir_8c6eb96e4942c21c15d2738fe9c923ec.html | 140 + .../dir_8c6eb96e4942c21c15d2738fe9c923ec.js | 14 + .../dir_bafc68d5a3d8339df3fadcdecb8cd0fc.html | 130 + .../dir_bafc68d5a3d8339df3fadcdecb8cd0fc.js | 12 + .../dir_bfc25ac9d3f1d0418a4ff48c6329f953.html | 124 + .../dir_bfc25ac9d3f1d0418a4ff48c6329f953.js | 6 + .../dir_d08920670320d734586288a6d43047d3.html | 124 + .../dir_d08920670320d734586288a6d43047d3.js | 6 + .../dir_dadcfc53e6a1230ff2f48f6f7265c16c.html | 124 + .../dir_dadcfc53e6a1230ff2f48f6f7265c16c.js | 6 + .../dir_f603e06b45f250df82d371a578f5098e.html | 133 + .../dir_f603e06b45f250df82d371a578f5098e.js | 15 + lib/docs/html/doxygen.css | 1186 +++ lib/docs/html/doxygen.png | Bin 0 -> 3829 bytes lib/docs/html/dynsections.js | 97 + lib/docs/html/files.html | 182 + lib/docs/html/files.js | 4 + lib/docs/html/ftv2blank.png | Bin 0 -> 86 bytes lib/docs/html/ftv2cl.png | Bin 0 -> 449 bytes lib/docs/html/ftv2doc.png | Bin 0 -> 805 bytes lib/docs/html/ftv2folderclosed.png | Bin 0 -> 635 bytes lib/docs/html/ftv2folderopen.png | Bin 0 -> 635 bytes lib/docs/html/ftv2lastnode.png | Bin 0 -> 86 bytes lib/docs/html/ftv2link.png | Bin 0 -> 805 bytes lib/docs/html/ftv2mlastnode.png | Bin 0 -> 246 bytes lib/docs/html/ftv2mnode.png | Bin 0 -> 246 bytes lib/docs/html/ftv2mo.png | Bin 0 -> 390 bytes lib/docs/html/ftv2node.png | Bin 0 -> 86 bytes lib/docs/html/ftv2ns.png | Bin 0 -> 390 bytes lib/docs/html/ftv2plastnode.png | Bin 0 -> 226 bytes lib/docs/html/ftv2pnode.png | Bin 0 -> 226 bytes lib/docs/html/ftv2splitbar.png | Bin 0 -> 309 bytes lib/docs/html/ftv2vertline.png | Bin 0 -> 86 bytes lib/docs/html/functions.html | 220 + lib/docs/html/functions_0x5f.html | 219 + lib/docs/html/functions_0x61.html | 175 + lib/docs/html/functions_0x62.html | 178 + lib/docs/html/functions_0x63.html | 471 + lib/docs/html/functions_0x64.html | 189 + lib/docs/html/functions_0x65.html | 181 + lib/docs/html/functions_0x66.html | 236 + lib/docs/html/functions_0x67.html | 472 + lib/docs/html/functions_0x68.html | 214 + lib/docs/html/functions_0x69.html | 241 + lib/docs/html/functions_0x6b.html | 170 + lib/docs/html/functions_0x6c.html | 201 + lib/docs/html/functions_0x6d.html | 193 + lib/docs/html/functions_0x6e.html | 167 + lib/docs/html/functions_0x6f.html | 255 + lib/docs/html/functions_0x70.html | 373 + lib/docs/html/functions_0x72.html | 238 + lib/docs/html/functions_0x73.html | 452 + lib/docs/html/functions_0x74.html | 275 + lib/docs/html/functions_0x75.html | 172 + lib/docs/html/functions_0x76.html | 171 + lib/docs/html/functions_0x77.html | 175 + lib/docs/html/functions_dup.js | 26 + lib/docs/html/functions_func.html | 218 + lib/docs/html/functions_func.js | 25 + lib/docs/html/functions_func_0x61.html | 174 + lib/docs/html/functions_func_0x62.html | 177 + lib/docs/html/functions_func_0x63.html | 437 + lib/docs/html/functions_func_0x64.html | 188 + lib/docs/html/functions_func_0x65.html | 174 + lib/docs/html/functions_func_0x66.html | 229 + lib/docs/html/functions_func_0x67.html | 444 + lib/docs/html/functions_func_0x68.html | 192 + lib/docs/html/functions_func_0x69.html | 240 + lib/docs/html/functions_func_0x6b.html | 163 + lib/docs/html/functions_func_0x6c.html | 179 + lib/docs/html/functions_func_0x6d.html | 192 + lib/docs/html/functions_func_0x6e.html | 166 + lib/docs/html/functions_func_0x6f.html | 254 + lib/docs/html/functions_func_0x70.html | 264 + lib/docs/html/functions_func_0x72.html | 198 + lib/docs/html/functions_func_0x73.html | 397 + lib/docs/html/functions_func_0x74.html | 259 + lib/docs/html/functions_func_0x75.html | 171 + lib/docs/html/functions_func_0x76.html | 170 + lib/docs/html/functions_func_0x77.html | 174 + lib/docs/html/functions_vars.html | 589 ++ lib/docs/html/hierarchy.html | 180 + lib/docs/html/hierarchy.js | 68 + lib/docs/html/index.html | 452 + ..._speak3___helper___signal___interface.html | 1178 +++ ...am_speak3___helper___signal___interface.js | 29 + ...face_team_speak3___viewer___interface.html | 195 + ...erface_team_speak3___viewer___interface.js | 4 + ...rface_team_speak3___viewer___interface.png | Bin 0 -> 1056 bytes lib/docs/html/jquery.js | 72 + lib/docs/html/namespace_team_speak3.html | 121 + lib/docs/html/nav_f.png | Bin 0 -> 163 bytes lib/docs/html/nav_g.png | Bin 0 -> 95 bytes lib/docs/html/nav_h.png | Bin 0 -> 95 bytes lib/docs/html/navtree.css | 143 + lib/docs/html/navtree.js | 551 + lib/docs/html/navtreeindex0.js | 253 + lib/docs/html/navtreeindex1.js | 253 + lib/docs/html/navtreeindex2.js | 253 + lib/docs/html/navtreeindex3.js | 253 + lib/docs/html/navtreeindex4.js | 253 + lib/docs/html/navtreeindex5.js | 134 + lib/docs/html/open.png | Bin 0 -> 122 bytes lib/docs/html/pages.html | 121 + lib/docs/html/resize.js | 93 + lib/docs/html/search/all_24.html | 26 + lib/docs/html/search/all_24.js | 24 + lib/docs/html/search/all_5f.html | 26 + lib/docs/html/search/all_5f.js | 11 + lib/docs/html/search/all_61.html | 26 + lib/docs/html/search/all_61.js | 13 + lib/docs/html/search/all_62.html | 26 + lib/docs/html/search/all_62.js | 11 + lib/docs/html/search/all_63.html | 26 + lib/docs/html/search/all_63.js | 109 + lib/docs/html/search/all_64.html | 26 + lib/docs/html/search/all_64.js | 13 + lib/docs/html/search/all_65.html | 26 + lib/docs/html/search/all_65.js | 24 + lib/docs/html/search/all_66.html | 26 + lib/docs/html/search/all_66.js | 26 + lib/docs/html/search/all_67.html | 26 + lib/docs/html/search/all_67.js | 100 + lib/docs/html/search/all_68.html | 26 + lib/docs/html/search/all_68.js | 25 + lib/docs/html/search/all_69.html | 26 + lib/docs/html/search/all_69.js | 31 + lib/docs/html/search/all_6b.html | 26 + lib/docs/html/search/all_6b.js | 7 + lib/docs/html/search/all_6c.html | 26 + lib/docs/html/search/all_6c.js | 17 + lib/docs/html/search/all_6d.html | 26 + lib/docs/html/search/all_6d.js | 12 + lib/docs/html/search/all_6e.html | 26 + lib/docs/html/search/all_6e.js | 6 + lib/docs/html/search/all_6f.html | 26 + lib/docs/html/search/all_6f.js | 33 + lib/docs/html/search/all_70.html | 26 + lib/docs/html/search/all_70.js | 70 + lib/docs/html/search/all_72.html | 26 + lib/docs/html/search/all_72.js | 29 + lib/docs/html/search/all_73.html | 26 + lib/docs/html/search/all_73.js | 102 + lib/docs/html/search/all_74.html | 26 + lib/docs/html/search/all_74.js | 88 + lib/docs/html/search/all_75.html | 26 + lib/docs/html/search/all_75.js | 11 + lib/docs/html/search/all_76.html | 26 + lib/docs/html/search/all_76.js | 7 + lib/docs/html/search/all_77.html | 26 + lib/docs/html/search/all_77.js | 9 + lib/docs/html/search/classes_74.html | 26 + lib/docs/html/search/classes_74.js | 47 + lib/docs/html/search/close.png | Bin 0 -> 273 bytes lib/docs/html/search/files_61.html | 26 + lib/docs/html/search/files_61.js | 6 + lib/docs/html/search/files_62.html | 26 + lib/docs/html/search/files_62.js | 4 + lib/docs/html/search/files_63.html | 26 + lib/docs/html/search/files_63.js | 9 + lib/docs/html/search/files_65.html | 26 + lib/docs/html/search/files_65.js | 16 + lib/docs/html/search/files_66.html | 26 + lib/docs/html/search/files_66.js | 4 + lib/docs/html/search/files_68.html | 26 + lib/docs/html/search/files_68.js | 6 + lib/docs/html/search/files_69.html | 26 + lib/docs/html/search/files_69.js | 5 + lib/docs/html/search/files_70.html | 26 + lib/docs/html/search/files_70.js | 4 + lib/docs/html/search/files_72.html | 26 + lib/docs/html/search/files_72.js | 4 + lib/docs/html/search/files_73.html | 26 + lib/docs/html/search/files_73.js | 8 + lib/docs/html/search/files_74.html | 26 + lib/docs/html/search/files_74.js | 8 + lib/docs/html/search/files_75.html | 26 + lib/docs/html/search/files_75.js | 6 + lib/docs/html/search/functions_5f.html | 26 + lib/docs/html/search/functions_5f.js | 11 + lib/docs/html/search/functions_61.html | 26 + lib/docs/html/search/functions_61.js | 9 + lib/docs/html/search/functions_62.html | 26 + lib/docs/html/search/functions_62.js | 10 + lib/docs/html/search/functions_63.html | 26 + lib/docs/html/search/functions_63.js | 92 + lib/docs/html/search/functions_64.html | 26 + lib/docs/html/search/functions_64.js | 12 + lib/docs/html/search/functions_65.html | 26 + lib/docs/html/search/functions_65.js | 9 + lib/docs/html/search/functions_66.html | 26 + lib/docs/html/search/functions_66.js | 23 + lib/docs/html/search/functions_67.html | 26 + lib/docs/html/search/functions_67.js | 91 + lib/docs/html/search/functions_68.html | 26 + lib/docs/html/search/functions_68.js | 15 + lib/docs/html/search/functions_69.html | 26 + lib/docs/html/search/functions_69.js | 29 + lib/docs/html/search/functions_6b.html | 26 + lib/docs/html/search/functions_6b.js | 5 + lib/docs/html/search/functions_6c.html | 26 + lib/docs/html/search/functions_6c.js | 10 + lib/docs/html/search/functions_6d.html | 26 + lib/docs/html/search/functions_6d.js | 12 + lib/docs/html/search/functions_6e.html | 26 + lib/docs/html/search/functions_6e.js | 6 + lib/docs/html/search/functions_6f.html | 26 + lib/docs/html/search/functions_6f.js | 33 + lib/docs/html/search/functions_70.html | 26 + lib/docs/html/search/functions_70.js | 33 + lib/docs/html/search/functions_72.html | 26 + lib/docs/html/search/functions_72.js | 15 + lib/docs/html/search/functions_73.html | 26 + lib/docs/html/search/functions_73.js | 79 + lib/docs/html/search/functions_74.html | 26 + lib/docs/html/search/functions_74.js | 34 + lib/docs/html/search/functions_75.html | 26 + lib/docs/html/search/functions_75.js | 8 + lib/docs/html/search/functions_76.html | 26 + lib/docs/html/search/functions_76.js | 7 + lib/docs/html/search/functions_77.html | 26 + lib/docs/html/search/functions_77.js | 9 + lib/docs/html/search/mag_sel.png | Bin 0 -> 563 bytes lib/docs/html/search/namespaces_74.html | 26 + lib/docs/html/search/namespaces_74.js | 4 + lib/docs/html/search/nomatches.html | 12 + lib/docs/html/search/pages_61.html | 26 + lib/docs/html/search/pages_61.js | 4 + lib/docs/html/search/pages_64.html | 26 + lib/docs/html/search/pages_64.js | 4 + lib/docs/html/search/search.css | 271 + lib/docs/html/search/search.js | 807 ++ lib/docs/html/search/search_l.png | Bin 0 -> 604 bytes lib/docs/html/search/search_m.png | Bin 0 -> 158 bytes lib/docs/html/search/search_r.png | Bin 0 -> 612 bytes lib/docs/html/search/variables_24.html | 26 + lib/docs/html/search/variables_24.js | 24 + lib/docs/html/search/variables_63.html | 26 + lib/docs/html/search/variables_63.js | 14 + lib/docs/html/search/variables_65.html | 26 + lib/docs/html/search/variables_65.js | 5 + lib/docs/html/search/variables_66.html | 26 + lib/docs/html/search/variables_66.js | 5 + lib/docs/html/search/variables_67.html | 26 + lib/docs/html/search/variables_67.js | 12 + lib/docs/html/search/variables_68.html | 26 + lib/docs/html/search/variables_68.js | 10 + lib/docs/html/search/variables_6b.html | 26 + lib/docs/html/search/variables_6b.js | 5 + lib/docs/html/search/variables_6c.html | 26 + lib/docs/html/search/variables_6c.js | 10 + lib/docs/html/search/variables_70.html | 26 + lib/docs/html/search/variables_70.js | 39 + lib/docs/html/search/variables_72.html | 26 + lib/docs/html/search/variables_72.js | 16 + lib/docs/html/search/variables_73.html | 26 + lib/docs/html/search/variables_73.js | 21 + lib/docs/html/search/variables_74.html | 26 + lib/docs/html/search/variables_74.js | 8 + lib/docs/html/sync_off.png | Bin 0 -> 862 bytes lib/docs/html/sync_on.png | Bin 0 -> 853 bytes lib/docs/html/tab_a.png | Bin 0 -> 140 bytes lib/docs/html/tab_b.png | Bin 0 -> 175 bytes lib/docs/html/tab_h.png | Bin 0 -> 177 bytes lib/docs/html/tab_s.png | Bin 0 -> 201 bytes lib/docs/html/tabs.css | 60 + lib/images/flags/ad.png | Bin 0 -> 643 bytes lib/images/flags/ae.png | Bin 0 -> 408 bytes lib/images/flags/af.png | Bin 0 -> 604 bytes lib/images/flags/ag.png | Bin 0 -> 591 bytes lib/images/flags/ai.png | Bin 0 -> 643 bytes lib/images/flags/al.png | Bin 0 -> 600 bytes lib/images/flags/am.png | Bin 0 -> 497 bytes lib/images/flags/an.png | Bin 0 -> 488 bytes lib/images/flags/ao.png | Bin 0 -> 428 bytes lib/images/flags/ar.png | Bin 0 -> 506 bytes lib/images/flags/as.png | Bin 0 -> 647 bytes lib/images/flags/at.png | Bin 0 -> 403 bytes lib/images/flags/au.png | Bin 0 -> 673 bytes lib/images/flags/aw.png | Bin 0 -> 524 bytes lib/images/flags/ax.png | Bin 0 -> 663 bytes lib/images/flags/az.png | Bin 0 -> 589 bytes lib/images/flags/ba.png | Bin 0 -> 593 bytes lib/images/flags/bb.png | Bin 0 -> 585 bytes lib/images/flags/bd.png | Bin 0 -> 504 bytes lib/images/flags/be.png | Bin 0 -> 449 bytes lib/images/flags/bf.png | Bin 0 -> 497 bytes lib/images/flags/bg.png | Bin 0 -> 462 bytes lib/images/flags/bh.png | Bin 0 -> 457 bytes lib/images/flags/bi.png | Bin 0 -> 675 bytes lib/images/flags/bj.png | Bin 0 -> 486 bytes lib/images/flags/bl.png | Bin 0 -> 545 bytes lib/images/flags/bm.png | Bin 0 -> 611 bytes lib/images/flags/bn.png | Bin 0 -> 639 bytes lib/images/flags/bo.png | Bin 0 -> 500 bytes lib/images/flags/br.png | Bin 0 -> 593 bytes lib/images/flags/bs.png | Bin 0 -> 526 bytes lib/images/flags/bt.png | Bin 0 -> 631 bytes lib/images/flags/bv.png | Bin 0 -> 512 bytes lib/images/flags/bw.png | Bin 0 -> 443 bytes lib/images/flags/by.png | Bin 0 -> 514 bytes lib/images/flags/bz.png | Bin 0 -> 600 bytes lib/images/flags/ca.png | Bin 0 -> 628 bytes lib/images/flags/cc.png | Bin 0 -> 625 bytes lib/images/flags/cd.png | Bin 0 -> 528 bytes lib/images/flags/cf.png | Bin 0 -> 614 bytes lib/images/flags/cg.png | Bin 0 -> 521 bytes lib/images/flags/ch.png | Bin 0 -> 367 bytes lib/images/flags/ci.png | Bin 0 -> 453 bytes lib/images/flags/ck.png | Bin 0 -> 586 bytes lib/images/flags/cl.png | Bin 0 -> 450 bytes lib/images/flags/cm.png | Bin 0 -> 525 bytes lib/images/flags/cn.png | Bin 0 -> 472 bytes lib/images/flags/co.png | Bin 0 -> 483 bytes lib/images/flags/cr.png | Bin 0 -> 477 bytes lib/images/flags/cs.png | Bin 0 -> 439 bytes lib/images/flags/cu.png | Bin 0 -> 563 bytes lib/images/flags/cv.png | Bin 0 -> 529 bytes lib/images/flags/cx.png | Bin 0 -> 608 bytes lib/images/flags/cy.png | Bin 0 -> 428 bytes lib/images/flags/cz.png | Bin 0 -> 476 bytes lib/images/flags/de.png | Bin 0 -> 545 bytes lib/images/flags/dj.png | Bin 0 -> 572 bytes lib/images/flags/dk.png | Bin 0 -> 495 bytes lib/images/flags/dm.png | Bin 0 -> 620 bytes lib/images/flags/do.png | Bin 0 -> 508 bytes lib/images/flags/dz.png | Bin 0 -> 582 bytes lib/images/flags/ec.png | Bin 0 -> 500 bytes lib/images/flags/ee.png | Bin 0 -> 429 bytes lib/images/flags/eg.png | Bin 0 -> 465 bytes lib/images/flags/eh.png | Bin 0 -> 508 bytes lib/images/flags/er.png | Bin 0 -> 653 bytes lib/images/flags/es.png | Bin 0 -> 469 bytes lib/images/flags/et.png | Bin 0 -> 592 bytes lib/images/flags/fi.png | Bin 0 -> 489 bytes lib/images/flags/fj.png | Bin 0 -> 610 bytes lib/images/flags/fk.png | Bin 0 -> 648 bytes lib/images/flags/fm.png | Bin 0 -> 552 bytes lib/images/flags/fo.png | Bin 0 -> 474 bytes lib/images/flags/fr.png | Bin 0 -> 545 bytes lib/images/flags/ga.png | Bin 0 -> 489 bytes lib/images/flags/gb.png | Bin 0 -> 599 bytes lib/images/flags/gd.png | Bin 0 -> 637 bytes lib/images/flags/ge.png | Bin 0 -> 594 bytes lib/images/flags/gf.png | Bin 0 -> 545 bytes lib/images/flags/gg.png | Bin 0 -> 362 bytes lib/images/flags/gh.png | Bin 0 -> 490 bytes lib/images/flags/gi.png | Bin 0 -> 463 bytes lib/images/flags/gl.png | Bin 0 -> 470 bytes lib/images/flags/gm.png | Bin 0 -> 493 bytes lib/images/flags/gn.png | Bin 0 -> 480 bytes lib/images/flags/gp.png | Bin 0 -> 488 bytes lib/images/flags/gq.png | Bin 0 -> 537 bytes lib/images/flags/gr.png | Bin 0 -> 487 bytes lib/images/flags/gs.png | Bin 0 -> 630 bytes lib/images/flags/gt.png | Bin 0 -> 493 bytes lib/images/flags/gu.png | Bin 0 -> 509 bytes lib/images/flags/gw.png | Bin 0 -> 516 bytes lib/images/flags/gy.png | Bin 0 -> 645 bytes lib/images/flags/hk.png | Bin 0 -> 527 bytes lib/images/flags/hm.png | Bin 0 -> 673 bytes lib/images/flags/hn.png | Bin 0 -> 537 bytes lib/images/flags/hr.png | Bin 0 -> 524 bytes lib/images/flags/ht.png | Bin 0 -> 487 bytes lib/images/flags/hu.png | Bin 0 -> 432 bytes lib/images/flags/id.png | Bin 0 -> 430 bytes lib/images/flags/ie.png | Bin 0 -> 481 bytes lib/images/flags/il.png | Bin 0 -> 431 bytes lib/images/flags/im.png | Bin 0 -> 372 bytes lib/images/flags/in.png | Bin 0 -> 503 bytes lib/images/flags/io.png | Bin 0 -> 658 bytes lib/images/flags/iq.png | Bin 0 -> 515 bytes lib/images/flags/ir.png | Bin 0 -> 512 bytes lib/images/flags/is.png | Bin 0 -> 532 bytes lib/images/flags/it.png | Bin 0 -> 420 bytes lib/images/flags/je.png | Bin 0 -> 471 bytes lib/images/flags/jm.png | Bin 0 -> 637 bytes lib/images/flags/jo.png | Bin 0 -> 473 bytes lib/images/flags/jp.png | Bin 0 -> 420 bytes lib/images/flags/ke.png | Bin 0 -> 569 bytes lib/images/flags/kg.png | Bin 0 -> 510 bytes lib/images/flags/kh.png | Bin 0 -> 549 bytes lib/images/flags/ki.png | Bin 0 -> 656 bytes lib/images/flags/km.png | Bin 0 -> 577 bytes lib/images/flags/kn.png | Bin 0 -> 604 bytes lib/images/flags/kp.png | Bin 0 -> 561 bytes lib/images/flags/kr.png | Bin 0 -> 592 bytes lib/images/flags/kw.png | Bin 0 -> 486 bytes lib/images/flags/ky.png | Bin 0 -> 643 bytes lib/images/flags/kz.png | Bin 0 -> 616 bytes lib/images/flags/la.png | Bin 0 -> 563 bytes lib/images/flags/lb.png | Bin 0 -> 517 bytes lib/images/flags/lc.png | Bin 0 -> 520 bytes lib/images/flags/li.png | Bin 0 -> 537 bytes lib/images/flags/lk.png | Bin 0 -> 627 bytes lib/images/flags/lr.png | Bin 0 -> 466 bytes lib/images/flags/ls.png | Bin 0 -> 628 bytes lib/images/flags/lt.png | Bin 0 -> 508 bytes lib/images/flags/lu.png | Bin 0 -> 481 bytes lib/images/flags/lv.png | Bin 0 -> 465 bytes lib/images/flags/ly.png | Bin 0 -> 258 bytes lib/images/flags/ma.png | Bin 0 -> 432 bytes lib/images/flags/mc.png | Bin 0 -> 380 bytes lib/images/flags/md.png | Bin 0 -> 566 bytes lib/images/flags/me.png | Bin 0 -> 448 bytes lib/images/flags/mg.png | Bin 0 -> 453 bytes lib/images/flags/mh.png | Bin 0 -> 628 bytes lib/images/flags/mk.png | Bin 0 -> 664 bytes lib/images/flags/ml.png | Bin 0 -> 474 bytes lib/images/flags/mm.png | Bin 0 -> 483 bytes lib/images/flags/mn.png | Bin 0 -> 492 bytes lib/images/flags/mo.png | Bin 0 -> 588 bytes lib/images/flags/mp.png | Bin 0 -> 597 bytes lib/images/flags/mq.png | Bin 0 -> 655 bytes lib/images/flags/mr.png | Bin 0 -> 569 bytes lib/images/flags/ms.png | Bin 0 -> 614 bytes lib/images/flags/mt.png | Bin 0 -> 420 bytes lib/images/flags/mu.png | Bin 0 -> 496 bytes lib/images/flags/mv.png | Bin 0 -> 542 bytes lib/images/flags/mw.png | Bin 0 -> 529 bytes lib/images/flags/mx.png | Bin 0 -> 574 bytes lib/images/flags/my.png | Bin 0 -> 571 bytes lib/images/flags/mz.png | Bin 0 -> 584 bytes lib/images/flags/na.png | Bin 0 -> 647 bytes lib/images/flags/nc.png | Bin 0 -> 591 bytes lib/images/flags/ne.png | Bin 0 -> 537 bytes lib/images/flags/nf.png | Bin 0 -> 602 bytes lib/images/flags/ng.png | Bin 0 -> 482 bytes lib/images/flags/ni.png | Bin 0 -> 508 bytes lib/images/flags/nl.png | Bin 0 -> 453 bytes lib/images/flags/no.png | Bin 0 -> 512 bytes lib/images/flags/np.png | Bin 0 -> 443 bytes lib/images/flags/nr.png | Bin 0 -> 527 bytes lib/images/flags/nu.png | Bin 0 -> 572 bytes lib/images/flags/nz.png | Bin 0 -> 639 bytes lib/images/flags/om.png | Bin 0 -> 478 bytes lib/images/flags/pa.png | Bin 0 -> 519 bytes lib/images/flags/pe.png | Bin 0 -> 397 bytes lib/images/flags/pf.png | Bin 0 -> 498 bytes lib/images/flags/pg.png | Bin 0 -> 593 bytes lib/images/flags/ph.png | Bin 0 -> 538 bytes lib/images/flags/pk.png | Bin 0 -> 569 bytes lib/images/flags/pl.png | Bin 0 -> 374 bytes lib/images/flags/pm.png | Bin 0 -> 689 bytes lib/images/flags/pn.png | Bin 0 -> 657 bytes lib/images/flags/pr.png | Bin 0 -> 556 bytes lib/images/flags/ps.png | Bin 0 -> 472 bytes lib/images/flags/pt.png | Bin 0 -> 554 bytes lib/images/flags/pw.png | Bin 0 -> 550 bytes lib/images/flags/py.png | Bin 0 -> 473 bytes lib/images/flags/qa.png | Bin 0 -> 450 bytes lib/images/flags/re.png | Bin 0 -> 545 bytes lib/images/flags/ro.png | Bin 0 -> 495 bytes lib/images/flags/rs.png | Bin 0 -> 423 bytes lib/images/flags/ru.png | Bin 0 -> 420 bytes lib/images/flags/rw.png | Bin 0 -> 533 bytes lib/images/flags/sa.png | Bin 0 -> 551 bytes lib/images/flags/sb.png | Bin 0 -> 624 bytes lib/images/flags/sc.png | Bin 0 -> 608 bytes lib/images/flags/sd.png | Bin 0 -> 492 bytes lib/images/flags/se.png | Bin 0 -> 542 bytes lib/images/flags/sg.png | Bin 0 -> 468 bytes lib/images/flags/sh.png | Bin 0 -> 645 bytes lib/images/flags/si.png | Bin 0 -> 510 bytes lib/images/flags/sj.png | Bin 0 -> 512 bytes lib/images/flags/sk.png | Bin 0 -> 562 bytes lib/images/flags/sl.png | Bin 0 -> 436 bytes lib/images/flags/sm.png | Bin 0 -> 502 bytes lib/images/flags/sn.png | Bin 0 -> 532 bytes lib/images/flags/so.png | Bin 0 -> 527 bytes lib/images/flags/sr.png | Bin 0 -> 513 bytes lib/images/flags/st.png | Bin 0 -> 584 bytes lib/images/flags/sv.png | Bin 0 -> 501 bytes lib/images/flags/sy.png | Bin 0 -> 422 bytes lib/images/flags/sz.png | Bin 0 -> 643 bytes lib/images/flags/tc.png | Bin 0 -> 624 bytes lib/images/flags/td.png | Bin 0 -> 570 bytes lib/images/flags/tf.png | Bin 0 -> 527 bytes lib/images/flags/tg.png | Bin 0 -> 562 bytes lib/images/flags/th.png | Bin 0 -> 452 bytes lib/images/flags/tj.png | Bin 0 -> 496 bytes lib/images/flags/tk.png | Bin 0 -> 638 bytes lib/images/flags/tl.png | Bin 0 -> 514 bytes lib/images/flags/tm.png | Bin 0 -> 593 bytes lib/images/flags/tn.png | Bin 0 -> 495 bytes lib/images/flags/to.png | Bin 0 -> 426 bytes lib/images/flags/tr.png | Bin 0 -> 492 bytes lib/images/flags/tt.png | Bin 0 -> 617 bytes lib/images/flags/tv.png | Bin 0 -> 536 bytes lib/images/flags/tw.png | Bin 0 -> 465 bytes lib/images/flags/tz.png | Bin 0 -> 642 bytes lib/images/flags/ua.png | Bin 0 -> 446 bytes lib/images/flags/ug.png | Bin 0 -> 531 bytes lib/images/flags/uk.png | Bin 0 -> 599 bytes lib/images/flags/um.png | Bin 0 -> 571 bytes lib/images/flags/us.png | Bin 0 -> 609 bytes lib/images/flags/uy.png | Bin 0 -> 532 bytes lib/images/flags/uz.png | Bin 0 -> 515 bytes lib/images/flags/va.png | Bin 0 -> 553 bytes lib/images/flags/vc.png | Bin 0 -> 577 bytes lib/images/flags/ve.png | Bin 0 -> 528 bytes lib/images/flags/vg.png | Bin 0 -> 630 bytes lib/images/flags/vi.png | Bin 0 -> 616 bytes lib/images/flags/vn.png | Bin 0 -> 474 bytes lib/images/flags/vu.png | Bin 0 -> 604 bytes lib/images/flags/wf.png | Bin 0 -> 554 bytes lib/images/flags/ws.png | Bin 0 -> 476 bytes lib/images/flags/ye.png | Bin 0 -> 413 bytes lib/images/flags/yt.png | Bin 0 -> 593 bytes lib/images/flags/za.png | Bin 0 -> 642 bytes lib/images/flags/zm.png | Bin 0 -> 500 bytes lib/images/flags/zw.png | Bin 0 -> 574 bytes lib/images/icons/ts3client.ico | Bin 0 -> 70333 bytes lib/images/icons/ts3server.ico | Bin 0 -> 69372 bytes lib/images/viewer/channel_flag_default.png | Bin 0 -> 696 bytes lib/images/viewer/channel_flag_moderated.png | Bin 0 -> 945 bytes lib/images/viewer/channel_flag_music.png | Bin 0 -> 716 bytes lib/images/viewer/channel_flag_password.png | Bin 0 -> 589 bytes lib/images/viewer/channel_full.png | Bin 0 -> 822 bytes lib/images/viewer/channel_open.png | Bin 0 -> 847 bytes lib/images/viewer/channel_pass.png | Bin 0 -> 827 bytes lib/images/viewer/client_away.png | Bin 0 -> 821 bytes lib/images/viewer/client_cc.png | Bin 0 -> 3558 bytes lib/images/viewer/client_cc_idle.png | Bin 0 -> 867 bytes lib/images/viewer/client_cc_talk.png | Bin 0 -> 868 bytes lib/images/viewer/client_idle.png | Bin 0 -> 829 bytes lib/images/viewer/client_mic_disabled.png | Bin 0 -> 977 bytes lib/images/viewer/client_mic_muted.png | Bin 0 -> 906 bytes lib/images/viewer/client_priority.png | Bin 0 -> 1215 bytes lib/images/viewer/client_query.png | Bin 0 -> 901 bytes lib/images/viewer/client_snd_disabled.png | Bin 0 -> 929 bytes lib/images/viewer/client_snd_muted.png | Bin 0 -> 908 bytes lib/images/viewer/client_talk.png | Bin 0 -> 860 bytes lib/images/viewer/client_talker.png | Bin 0 -> 978 bytes lib/images/viewer/client_talker_request.png | Bin 0 -> 1065 bytes lib/images/viewer/group_channel.png | Bin 0 -> 1309 bytes lib/images/viewer/group_icon_0.png | Bin 0 -> 354 bytes lib/images/viewer/group_icon_100.png | Bin 0 -> 809 bytes lib/images/viewer/group_icon_200.png | Bin 0 -> 781 bytes lib/images/viewer/group_icon_300.png | Bin 0 -> 820 bytes lib/images/viewer/group_icon_400.png | Bin 0 -> 1160 bytes lib/images/viewer/group_icon_500.png | Bin 0 -> 803 bytes lib/images/viewer/group_icon_600.png | Bin 0 -> 757 bytes lib/images/viewer/group_server.png | Bin 0 -> 1301 bytes lib/images/viewer/host.png | Bin 0 -> 1067 bytes lib/images/viewer/server_full.png | Bin 0 -> 774 bytes lib/images/viewer/server_open.png | Bin 0 -> 827 bytes lib/images/viewer/server_pass.png | Bin 0 -> 773 bytes lib/images/viewer/spacer_dashdotdotline.gif | Bin 0 -> 58 bytes lib/images/viewer/spacer_dashdotline.gif | Bin 0 -> 54 bytes lib/images/viewer/spacer_dashline.gif | Bin 0 -> 51 bytes lib/images/viewer/spacer_dotline.gif | Bin 0 -> 46 bytes lib/images/viewer/spacer_solidline.gif | Bin 0 -> 45 bytes lib/images/viewer/tree.png | Bin 0 -> 548 bytes lib/images/viewer/tree_blank.png | Bin 0 -> 125 bytes lib/images/viewer/tree_end.gif | Bin 0 -> 61 bytes lib/images/viewer/tree_line.gif | Bin 0 -> 63 bytes lib/images/viewer/tree_mid.gif | Bin 0 -> 64 bytes lib/libraries/TeamSpeak3/Adapter/Abstract.php | 160 + .../TeamSpeak3/Adapter/Blacklist.php | 119 + .../Adapter/Blacklist/Exception.php | 32 + .../TeamSpeak3/Adapter/Exception.php | 32 + .../TeamSpeak3/Adapter/FileTransfer.php | 190 + .../Adapter/FileTransfer/Exception.php | 32 + .../TeamSpeak3/Adapter/ServerQuery.php | 261 + .../TeamSpeak3/Adapter/ServerQuery/Event.php | 170 + .../Adapter/ServerQuery/Exception.php | 32 + .../TeamSpeak3/Adapter/ServerQuery/Reply.php | 346 + lib/libraries/TeamSpeak3/Adapter/TSDNS.php | 95 + .../TeamSpeak3/Adapter/TSDNS/Exception.php | 32 + lib/libraries/TeamSpeak3/Adapter/Update.php | 217 + .../TeamSpeak3/Adapter/Update/Exception.php | 32 + lib/libraries/TeamSpeak3/Exception.php | 129 + lib/libraries/TeamSpeak3/Helper/Char.php | 269 + lib/libraries/TeamSpeak3/Helper/Convert.php | 349 + lib/libraries/TeamSpeak3/Helper/Crypt.php | 482 + lib/libraries/TeamSpeak3/Helper/Exception.php | 32 + lib/libraries/TeamSpeak3/Helper/Profiler.php | 101 + .../TeamSpeak3/Helper/Profiler/Exception.php | 32 + .../TeamSpeak3/Helper/Profiler/Timer.php | 154 + lib/libraries/TeamSpeak3/Helper/Signal.php | 213 + .../TeamSpeak3/Helper/Signal/Exception.php | 32 + .../TeamSpeak3/Helper/Signal/Handler.php | 78 + .../TeamSpeak3/Helper/Signal/Interface.php | 353 + lib/libraries/TeamSpeak3/Helper/String.php | 939 ++ lib/libraries/TeamSpeak3/Helper/Uri.php | 717 ++ lib/libraries/TeamSpeak3/Node/Abstract.php | 625 ++ lib/libraries/TeamSpeak3/Node/Channel.php | 588 ++ .../TeamSpeak3/Node/Channelgroup.php | 276 + lib/libraries/TeamSpeak3/Node/Client.php | 441 + lib/libraries/TeamSpeak3/Node/Exception.php | 32 + lib/libraries/TeamSpeak3/Node/Host.php | 1193 +++ lib/libraries/TeamSpeak3/Node/Server.php | 2536 +++++ lib/libraries/TeamSpeak3/Node/Servergroup.php | 300 + lib/libraries/TeamSpeak3/TeamSpeak3.php | 981 ++ .../TeamSpeak3/Transport/Abstract.php | 268 + .../TeamSpeak3/Transport/Exception.php | 32 + lib/libraries/TeamSpeak3/Transport/TCP.php | 179 + lib/libraries/TeamSpeak3/Transport/UDP.php | 113 + lib/libraries/TeamSpeak3/Viewer/Html.php | 670 ++ lib/libraries/TeamSpeak3/Viewer/Interface.php | 42 + lib/libraries/TeamSpeak3/Viewer/Text.php | 107 + lib/license.txt | 674 ++ lib_ts3.php | 13 + 874 files changed, 127690 insertions(+) create mode 100644 autoload.inc create mode 100644 lib/changelog.txt create mode 100644 lib/docs/html/TeamSpeak.png create mode 100644 lib/docs/html/_adapter_2_abstract_8php.html create mode 100644 lib/docs/html/_adapter_2_abstract_8php_source.html create mode 100644 lib/docs/html/_adapter_2_blacklist_2_exception_8php.html create mode 100644 lib/docs/html/_adapter_2_blacklist_2_exception_8php_source.html create mode 100644 lib/docs/html/_adapter_2_exception_8php.html create mode 100644 lib/docs/html/_adapter_2_exception_8php_source.html create mode 100644 lib/docs/html/_adapter_2_file_transfer_2_exception_8php.html create mode 100644 lib/docs/html/_adapter_2_file_transfer_2_exception_8php_source.html create mode 100644 lib/docs/html/_adapter_2_server_query_2_exception_8php.html create mode 100644 lib/docs/html/_adapter_2_server_query_2_exception_8php_source.html create mode 100644 lib/docs/html/_adapter_2_t_s_d_n_s_2_exception_8php.html create mode 100644 lib/docs/html/_adapter_2_t_s_d_n_s_2_exception_8php_source.html create mode 100644 lib/docs/html/_adapter_2_update_2_exception_8php.html create mode 100644 lib/docs/html/_adapter_2_update_2_exception_8php_source.html create mode 100644 lib/docs/html/_blacklist_8php.html create mode 100644 lib/docs/html/_blacklist_8php_source.html create mode 100644 lib/docs/html/_channel_8php.html create mode 100644 lib/docs/html/_channel_8php_source.html create mode 100644 lib/docs/html/_channelgroup_8php.html create mode 100644 lib/docs/html/_channelgroup_8php_source.html create mode 100644 lib/docs/html/_char_8php.html create mode 100644 lib/docs/html/_char_8php_source.html create mode 100644 lib/docs/html/_client_8php.html create mode 100644 lib/docs/html/_client_8php_source.html create mode 100644 lib/docs/html/_convert_8php.html create mode 100644 lib/docs/html/_convert_8php_source.html create mode 100644 lib/docs/html/_crypt_8php.html create mode 100644 lib/docs/html/_crypt_8php_source.html create mode 100644 lib/docs/html/_event_8php.html create mode 100644 lib/docs/html/_event_8php_source.html create mode 100644 lib/docs/html/_exception_8php.html create mode 100644 lib/docs/html/_exception_8php_source.html create mode 100644 lib/docs/html/_file_transfer_8php.html create mode 100644 lib/docs/html/_file_transfer_8php_source.html create mode 100644 lib/docs/html/_handler_8php.html create mode 100644 lib/docs/html/_handler_8php_source.html create mode 100644 lib/docs/html/_helper_2_exception_8php.html create mode 100644 lib/docs/html/_helper_2_exception_8php_source.html create mode 100644 lib/docs/html/_helper_2_profiler_2_exception_8php.html create mode 100644 lib/docs/html/_helper_2_profiler_2_exception_8php_source.html create mode 100644 lib/docs/html/_helper_2_signal_2_exception_8php.html create mode 100644 lib/docs/html/_helper_2_signal_2_exception_8php_source.html create mode 100644 lib/docs/html/_helper_2_signal_2_interface_8php.html create mode 100644 lib/docs/html/_helper_2_signal_2_interface_8php_source.html create mode 100644 lib/docs/html/_host_8php.html create mode 100644 lib/docs/html/_host_8php_source.html create mode 100644 lib/docs/html/_html_8php.html create mode 100644 lib/docs/html/_html_8php_source.html create mode 100644 lib/docs/html/_node_2_abstract_8php.html create mode 100644 lib/docs/html/_node_2_abstract_8php_source.html create mode 100644 lib/docs/html/_node_2_exception_8php.html create mode 100644 lib/docs/html/_node_2_exception_8php_source.html create mode 100644 lib/docs/html/_profiler_8php.html create mode 100644 lib/docs/html/_profiler_8php_source.html create mode 100644 lib/docs/html/_reply_8php.html create mode 100644 lib/docs/html/_reply_8php_source.html create mode 100644 lib/docs/html/_server_8php.html create mode 100644 lib/docs/html/_server_8php_source.html create mode 100644 lib/docs/html/_server_query_8php.html create mode 100644 lib/docs/html/_server_query_8php_source.html create mode 100644 lib/docs/html/_servergroup_8php.html create mode 100644 lib/docs/html/_servergroup_8php_source.html create mode 100644 lib/docs/html/_signal_8php.html create mode 100644 lib/docs/html/_signal_8php_source.html create mode 100644 lib/docs/html/_string_8php.html create mode 100644 lib/docs/html/_string_8php_source.html create mode 100644 lib/docs/html/_t_c_p_8php.html create mode 100644 lib/docs/html/_t_c_p_8php_source.html create mode 100644 lib/docs/html/_t_s_d_n_s_8php.html create mode 100644 lib/docs/html/_t_s_d_n_s_8php_source.html create mode 100644 lib/docs/html/_team_speak3_8php.html create mode 100644 lib/docs/html/_team_speak3_8php_source.html create mode 100644 lib/docs/html/_text_8php.html create mode 100644 lib/docs/html/_text_8php_source.html create mode 100644 lib/docs/html/_timer_8php.html create mode 100644 lib/docs/html/_timer_8php_source.html create mode 100644 lib/docs/html/_transport_2_abstract_8php.html create mode 100644 lib/docs/html/_transport_2_abstract_8php_source.html create mode 100644 lib/docs/html/_transport_2_exception_8php.html create mode 100644 lib/docs/html/_transport_2_exception_8php_source.html create mode 100644 lib/docs/html/_u_d_p_8php.html create mode 100644 lib/docs/html/_u_d_p_8php_source.html create mode 100644 lib/docs/html/_update_8php.html create mode 100644 lib/docs/html/_update_8php_source.html create mode 100644 lib/docs/html/_uri_8php.html create mode 100644 lib/docs/html/_uri_8php_source.html create mode 100644 lib/docs/html/_viewer_2_interface_8php.html create mode 100644 lib/docs/html/_viewer_2_interface_8php_source.html create mode 100644 lib/docs/html/annotated.html create mode 100644 lib/docs/html/annotated.js create mode 100644 lib/docs/html/bc_s.png create mode 100644 lib/docs/html/bdwn.png create mode 100644 lib/docs/html/class_team_speak3-members.html create mode 100644 lib/docs/html/class_team_speak3.html create mode 100644 lib/docs/html/class_team_speak3.js create mode 100644 lib/docs/html/class_team_speak3___adapter___abstract-members.html create mode 100644 lib/docs/html/class_team_speak3___adapter___abstract.html create mode 100644 lib/docs/html/class_team_speak3___adapter___abstract.js create mode 100644 lib/docs/html/class_team_speak3___adapter___abstract.png create mode 100644 lib/docs/html/class_team_speak3___adapter___blacklist-members.html create mode 100644 lib/docs/html/class_team_speak3___adapter___blacklist.html create mode 100644 lib/docs/html/class_team_speak3___adapter___blacklist.js create mode 100644 lib/docs/html/class_team_speak3___adapter___blacklist.png create mode 100644 lib/docs/html/class_team_speak3___adapter___blacklist___exception-members.html create mode 100644 lib/docs/html/class_team_speak3___adapter___blacklist___exception.html create mode 100644 lib/docs/html/class_team_speak3___adapter___blacklist___exception.js create mode 100644 lib/docs/html/class_team_speak3___adapter___blacklist___exception.png create mode 100644 lib/docs/html/class_team_speak3___adapter___exception-members.html create mode 100644 lib/docs/html/class_team_speak3___adapter___exception.html create mode 100644 lib/docs/html/class_team_speak3___adapter___exception.js create mode 100644 lib/docs/html/class_team_speak3___adapter___exception.png create mode 100644 lib/docs/html/class_team_speak3___adapter___file_transfer-members.html create mode 100644 lib/docs/html/class_team_speak3___adapter___file_transfer.html create mode 100644 lib/docs/html/class_team_speak3___adapter___file_transfer.js create mode 100644 lib/docs/html/class_team_speak3___adapter___file_transfer.png create mode 100644 lib/docs/html/class_team_speak3___adapter___file_transfer___exception-members.html create mode 100644 lib/docs/html/class_team_speak3___adapter___file_transfer___exception.html create mode 100644 lib/docs/html/class_team_speak3___adapter___file_transfer___exception.js create mode 100644 lib/docs/html/class_team_speak3___adapter___file_transfer___exception.png create mode 100644 lib/docs/html/class_team_speak3___adapter___server_query-members.html create mode 100644 lib/docs/html/class_team_speak3___adapter___server_query.html create mode 100644 lib/docs/html/class_team_speak3___adapter___server_query.js create mode 100644 lib/docs/html/class_team_speak3___adapter___server_query.png create mode 100644 lib/docs/html/class_team_speak3___adapter___server_query___event-members.html create mode 100644 lib/docs/html/class_team_speak3___adapter___server_query___event.html create mode 100644 lib/docs/html/class_team_speak3___adapter___server_query___event.js create mode 100644 lib/docs/html/class_team_speak3___adapter___server_query___event.png create mode 100644 lib/docs/html/class_team_speak3___adapter___server_query___exception-members.html create mode 100644 lib/docs/html/class_team_speak3___adapter___server_query___exception.html create mode 100644 lib/docs/html/class_team_speak3___adapter___server_query___exception.js create mode 100644 lib/docs/html/class_team_speak3___adapter___server_query___exception.png create mode 100644 lib/docs/html/class_team_speak3___adapter___server_query___reply-members.html create mode 100644 lib/docs/html/class_team_speak3___adapter___server_query___reply.html create mode 100644 lib/docs/html/class_team_speak3___adapter___server_query___reply.js create mode 100644 lib/docs/html/class_team_speak3___adapter___t_s_d_n_s-members.html create mode 100644 lib/docs/html/class_team_speak3___adapter___t_s_d_n_s.html create mode 100644 lib/docs/html/class_team_speak3___adapter___t_s_d_n_s.js create mode 100644 lib/docs/html/class_team_speak3___adapter___t_s_d_n_s.png create mode 100644 lib/docs/html/class_team_speak3___adapter___t_s_d_n_s___exception-members.html create mode 100644 lib/docs/html/class_team_speak3___adapter___t_s_d_n_s___exception.html create mode 100644 lib/docs/html/class_team_speak3___adapter___t_s_d_n_s___exception.js create mode 100644 lib/docs/html/class_team_speak3___adapter___t_s_d_n_s___exception.png create mode 100644 lib/docs/html/class_team_speak3___adapter___update-members.html create mode 100644 lib/docs/html/class_team_speak3___adapter___update.html create mode 100644 lib/docs/html/class_team_speak3___adapter___update.js create mode 100644 lib/docs/html/class_team_speak3___adapter___update.png create mode 100644 lib/docs/html/class_team_speak3___adapter___update___exception-members.html create mode 100644 lib/docs/html/class_team_speak3___adapter___update___exception.html create mode 100644 lib/docs/html/class_team_speak3___adapter___update___exception.js create mode 100644 lib/docs/html/class_team_speak3___adapter___update___exception.png create mode 100644 lib/docs/html/class_team_speak3___exception-members.html create mode 100644 lib/docs/html/class_team_speak3___exception.html create mode 100644 lib/docs/html/class_team_speak3___exception.js create mode 100644 lib/docs/html/class_team_speak3___exception.png create mode 100644 lib/docs/html/class_team_speak3___helper___char-members.html create mode 100644 lib/docs/html/class_team_speak3___helper___char.html create mode 100644 lib/docs/html/class_team_speak3___helper___char.js create mode 100644 lib/docs/html/class_team_speak3___helper___convert-members.html create mode 100644 lib/docs/html/class_team_speak3___helper___convert.html create mode 100644 lib/docs/html/class_team_speak3___helper___crypt-members.html create mode 100644 lib/docs/html/class_team_speak3___helper___crypt.html create mode 100644 lib/docs/html/class_team_speak3___helper___crypt.js create mode 100644 lib/docs/html/class_team_speak3___helper___exception-members.html create mode 100644 lib/docs/html/class_team_speak3___helper___exception.html create mode 100644 lib/docs/html/class_team_speak3___helper___exception.js create mode 100644 lib/docs/html/class_team_speak3___helper___exception.png create mode 100644 lib/docs/html/class_team_speak3___helper___profiler-members.html create mode 100644 lib/docs/html/class_team_speak3___helper___profiler.html create mode 100644 lib/docs/html/class_team_speak3___helper___profiler___exception-members.html create mode 100644 lib/docs/html/class_team_speak3___helper___profiler___exception.html create mode 100644 lib/docs/html/class_team_speak3___helper___profiler___exception.js create mode 100644 lib/docs/html/class_team_speak3___helper___profiler___exception.png create mode 100644 lib/docs/html/class_team_speak3___helper___profiler___timer-members.html create mode 100644 lib/docs/html/class_team_speak3___helper___profiler___timer.html create mode 100644 lib/docs/html/class_team_speak3___helper___profiler___timer.js create mode 100644 lib/docs/html/class_team_speak3___helper___signal-members.html create mode 100644 lib/docs/html/class_team_speak3___helper___signal.html create mode 100644 lib/docs/html/class_team_speak3___helper___signal.js create mode 100644 lib/docs/html/class_team_speak3___helper___signal___exception-members.html create mode 100644 lib/docs/html/class_team_speak3___helper___signal___exception.html create mode 100644 lib/docs/html/class_team_speak3___helper___signal___exception.js create mode 100644 lib/docs/html/class_team_speak3___helper___signal___exception.png create mode 100644 lib/docs/html/class_team_speak3___helper___signal___handler-members.html create mode 100644 lib/docs/html/class_team_speak3___helper___signal___handler.html create mode 100644 lib/docs/html/class_team_speak3___helper___signal___handler.js create mode 100644 lib/docs/html/class_team_speak3___helper___signal___interface-members.html create mode 100644 lib/docs/html/class_team_speak3___helper___string-members.html create mode 100644 lib/docs/html/class_team_speak3___helper___string.html create mode 100644 lib/docs/html/class_team_speak3___helper___string.js create mode 100644 lib/docs/html/class_team_speak3___helper___string.png create mode 100644 lib/docs/html/class_team_speak3___helper___uri-members.html create mode 100644 lib/docs/html/class_team_speak3___helper___uri.html create mode 100644 lib/docs/html/class_team_speak3___helper___uri.js create mode 100644 lib/docs/html/class_team_speak3___node___abstract-members.html create mode 100644 lib/docs/html/class_team_speak3___node___abstract.html create mode 100644 lib/docs/html/class_team_speak3___node___abstract.js create mode 100644 lib/docs/html/class_team_speak3___node___abstract.png create mode 100644 lib/docs/html/class_team_speak3___node___channel-members.html create mode 100644 lib/docs/html/class_team_speak3___node___channel.html create mode 100644 lib/docs/html/class_team_speak3___node___channel.js create mode 100644 lib/docs/html/class_team_speak3___node___channel.png create mode 100644 lib/docs/html/class_team_speak3___node___channelgroup-members.html create mode 100644 lib/docs/html/class_team_speak3___node___channelgroup.html create mode 100644 lib/docs/html/class_team_speak3___node___channelgroup.js create mode 100644 lib/docs/html/class_team_speak3___node___channelgroup.png create mode 100644 lib/docs/html/class_team_speak3___node___client-members.html create mode 100644 lib/docs/html/class_team_speak3___node___client.html create mode 100644 lib/docs/html/class_team_speak3___node___client.js create mode 100644 lib/docs/html/class_team_speak3___node___client.png create mode 100644 lib/docs/html/class_team_speak3___node___exception-members.html create mode 100644 lib/docs/html/class_team_speak3___node___exception.html create mode 100644 lib/docs/html/class_team_speak3___node___exception.js create mode 100644 lib/docs/html/class_team_speak3___node___exception.png create mode 100644 lib/docs/html/class_team_speak3___node___host-members.html create mode 100644 lib/docs/html/class_team_speak3___node___host.html create mode 100644 lib/docs/html/class_team_speak3___node___host.js create mode 100644 lib/docs/html/class_team_speak3___node___host.png create mode 100644 lib/docs/html/class_team_speak3___node___server-members.html create mode 100644 lib/docs/html/class_team_speak3___node___server.html create mode 100644 lib/docs/html/class_team_speak3___node___server.js create mode 100644 lib/docs/html/class_team_speak3___node___server.png create mode 100644 lib/docs/html/class_team_speak3___node___servergroup-members.html create mode 100644 lib/docs/html/class_team_speak3___node___servergroup.html create mode 100644 lib/docs/html/class_team_speak3___node___servergroup.js create mode 100644 lib/docs/html/class_team_speak3___node___servergroup.png create mode 100644 lib/docs/html/class_team_speak3___transport___abstract-members.html create mode 100644 lib/docs/html/class_team_speak3___transport___abstract.html create mode 100644 lib/docs/html/class_team_speak3___transport___abstract.js create mode 100644 lib/docs/html/class_team_speak3___transport___abstract.png create mode 100644 lib/docs/html/class_team_speak3___transport___exception-members.html create mode 100644 lib/docs/html/class_team_speak3___transport___exception.html create mode 100644 lib/docs/html/class_team_speak3___transport___exception.js create mode 100644 lib/docs/html/class_team_speak3___transport___exception.png create mode 100644 lib/docs/html/class_team_speak3___transport___t_c_p-members.html create mode 100644 lib/docs/html/class_team_speak3___transport___t_c_p.html create mode 100644 lib/docs/html/class_team_speak3___transport___t_c_p.js create mode 100644 lib/docs/html/class_team_speak3___transport___t_c_p.png create mode 100644 lib/docs/html/class_team_speak3___transport___u_d_p-members.html create mode 100644 lib/docs/html/class_team_speak3___transport___u_d_p.html create mode 100644 lib/docs/html/class_team_speak3___transport___u_d_p.js create mode 100644 lib/docs/html/class_team_speak3___transport___u_d_p.png create mode 100644 lib/docs/html/class_team_speak3___viewer___html-members.html create mode 100644 lib/docs/html/class_team_speak3___viewer___html.html create mode 100644 lib/docs/html/class_team_speak3___viewer___html.js create mode 100644 lib/docs/html/class_team_speak3___viewer___html.png create mode 100644 lib/docs/html/class_team_speak3___viewer___interface-members.html create mode 100644 lib/docs/html/class_team_speak3___viewer___text-members.html create mode 100644 lib/docs/html/class_team_speak3___viewer___text.html create mode 100644 lib/docs/html/class_team_speak3___viewer___text.js create mode 100644 lib/docs/html/class_team_speak3___viewer___text.png create mode 100644 lib/docs/html/classes.html create mode 100644 lib/docs/html/closed.png create mode 100644 lib/docs/html/deprecated.html create mode 100644 lib/docs/html/dir_10d0dafa9b3c98f86f6c3e308f71f5e1.html create mode 100644 lib/docs/html/dir_10d0dafa9b3c98f86f6c3e308f71f5e1.js create mode 100644 lib/docs/html/dir_1e759c367c240af77b5353a40d4dc42a.html create mode 100644 lib/docs/html/dir_1e759c367c240af77b5353a40d4dc42a.js create mode 100644 lib/docs/html/dir_3d7cd49b95def433e02a0e6f52be25f0.html create mode 100644 lib/docs/html/dir_3d7cd49b95def433e02a0e6f52be25f0.js create mode 100644 lib/docs/html/dir_3e66aa12f34129cf2d52c47a74e0508c.html create mode 100644 lib/docs/html/dir_3e66aa12f34129cf2d52c47a74e0508c.js create mode 100644 lib/docs/html/dir_4844b50d2d416922f1f8de7560b09faf.html create mode 100644 lib/docs/html/dir_4844b50d2d416922f1f8de7560b09faf.js create mode 100644 lib/docs/html/dir_554650cc51f1200e004a96892070fcf9.html create mode 100644 lib/docs/html/dir_554650cc51f1200e004a96892070fcf9.js create mode 100644 lib/docs/html/dir_79b267753267ba2a550585ecabe3d90e.html create mode 100644 lib/docs/html/dir_79b267753267ba2a550585ecabe3d90e.js create mode 100644 lib/docs/html/dir_8c6eb96e4942c21c15d2738fe9c923ec.html create mode 100644 lib/docs/html/dir_8c6eb96e4942c21c15d2738fe9c923ec.js create mode 100644 lib/docs/html/dir_bafc68d5a3d8339df3fadcdecb8cd0fc.html create mode 100644 lib/docs/html/dir_bafc68d5a3d8339df3fadcdecb8cd0fc.js create mode 100644 lib/docs/html/dir_bfc25ac9d3f1d0418a4ff48c6329f953.html create mode 100644 lib/docs/html/dir_bfc25ac9d3f1d0418a4ff48c6329f953.js create mode 100644 lib/docs/html/dir_d08920670320d734586288a6d43047d3.html create mode 100644 lib/docs/html/dir_d08920670320d734586288a6d43047d3.js create mode 100644 lib/docs/html/dir_dadcfc53e6a1230ff2f48f6f7265c16c.html create mode 100644 lib/docs/html/dir_dadcfc53e6a1230ff2f48f6f7265c16c.js create mode 100644 lib/docs/html/dir_f603e06b45f250df82d371a578f5098e.html create mode 100644 lib/docs/html/dir_f603e06b45f250df82d371a578f5098e.js create mode 100644 lib/docs/html/doxygen.css create mode 100644 lib/docs/html/doxygen.png create mode 100644 lib/docs/html/dynsections.js create mode 100644 lib/docs/html/files.html create mode 100644 lib/docs/html/files.js create mode 100644 lib/docs/html/ftv2blank.png create mode 100644 lib/docs/html/ftv2cl.png create mode 100644 lib/docs/html/ftv2doc.png create mode 100644 lib/docs/html/ftv2folderclosed.png create mode 100644 lib/docs/html/ftv2folderopen.png create mode 100644 lib/docs/html/ftv2lastnode.png create mode 100644 lib/docs/html/ftv2link.png create mode 100644 lib/docs/html/ftv2mlastnode.png create mode 100644 lib/docs/html/ftv2mnode.png create mode 100644 lib/docs/html/ftv2mo.png create mode 100644 lib/docs/html/ftv2node.png create mode 100644 lib/docs/html/ftv2ns.png create mode 100644 lib/docs/html/ftv2plastnode.png create mode 100644 lib/docs/html/ftv2pnode.png create mode 100644 lib/docs/html/ftv2splitbar.png create mode 100644 lib/docs/html/ftv2vertline.png create mode 100644 lib/docs/html/functions.html create mode 100644 lib/docs/html/functions_0x5f.html create mode 100644 lib/docs/html/functions_0x61.html create mode 100644 lib/docs/html/functions_0x62.html create mode 100644 lib/docs/html/functions_0x63.html create mode 100644 lib/docs/html/functions_0x64.html create mode 100644 lib/docs/html/functions_0x65.html create mode 100644 lib/docs/html/functions_0x66.html create mode 100644 lib/docs/html/functions_0x67.html create mode 100644 lib/docs/html/functions_0x68.html create mode 100644 lib/docs/html/functions_0x69.html create mode 100644 lib/docs/html/functions_0x6b.html create mode 100644 lib/docs/html/functions_0x6c.html create mode 100644 lib/docs/html/functions_0x6d.html create mode 100644 lib/docs/html/functions_0x6e.html create mode 100644 lib/docs/html/functions_0x6f.html create mode 100644 lib/docs/html/functions_0x70.html create mode 100644 lib/docs/html/functions_0x72.html create mode 100644 lib/docs/html/functions_0x73.html create mode 100644 lib/docs/html/functions_0x74.html create mode 100644 lib/docs/html/functions_0x75.html create mode 100644 lib/docs/html/functions_0x76.html create mode 100644 lib/docs/html/functions_0x77.html create mode 100644 lib/docs/html/functions_dup.js create mode 100644 lib/docs/html/functions_func.html create mode 100644 lib/docs/html/functions_func.js create mode 100644 lib/docs/html/functions_func_0x61.html create mode 100644 lib/docs/html/functions_func_0x62.html create mode 100644 lib/docs/html/functions_func_0x63.html create mode 100644 lib/docs/html/functions_func_0x64.html create mode 100644 lib/docs/html/functions_func_0x65.html create mode 100644 lib/docs/html/functions_func_0x66.html create mode 100644 lib/docs/html/functions_func_0x67.html create mode 100644 lib/docs/html/functions_func_0x68.html create mode 100644 lib/docs/html/functions_func_0x69.html create mode 100644 lib/docs/html/functions_func_0x6b.html create mode 100644 lib/docs/html/functions_func_0x6c.html create mode 100644 lib/docs/html/functions_func_0x6d.html create mode 100644 lib/docs/html/functions_func_0x6e.html create mode 100644 lib/docs/html/functions_func_0x6f.html create mode 100644 lib/docs/html/functions_func_0x70.html create mode 100644 lib/docs/html/functions_func_0x72.html create mode 100644 lib/docs/html/functions_func_0x73.html create mode 100644 lib/docs/html/functions_func_0x74.html create mode 100644 lib/docs/html/functions_func_0x75.html create mode 100644 lib/docs/html/functions_func_0x76.html create mode 100644 lib/docs/html/functions_func_0x77.html create mode 100644 lib/docs/html/functions_vars.html create mode 100644 lib/docs/html/hierarchy.html create mode 100644 lib/docs/html/hierarchy.js create mode 100644 lib/docs/html/index.html create mode 100644 lib/docs/html/interface_team_speak3___helper___signal___interface.html create mode 100644 lib/docs/html/interface_team_speak3___helper___signal___interface.js create mode 100644 lib/docs/html/interface_team_speak3___viewer___interface.html create mode 100644 lib/docs/html/interface_team_speak3___viewer___interface.js create mode 100644 lib/docs/html/interface_team_speak3___viewer___interface.png create mode 100644 lib/docs/html/jquery.js create mode 100644 lib/docs/html/namespace_team_speak3.html create mode 100644 lib/docs/html/nav_f.png create mode 100644 lib/docs/html/nav_g.png create mode 100644 lib/docs/html/nav_h.png create mode 100644 lib/docs/html/navtree.css create mode 100644 lib/docs/html/navtree.js create mode 100644 lib/docs/html/navtreeindex0.js create mode 100644 lib/docs/html/navtreeindex1.js create mode 100644 lib/docs/html/navtreeindex2.js create mode 100644 lib/docs/html/navtreeindex3.js create mode 100644 lib/docs/html/navtreeindex4.js create mode 100644 lib/docs/html/navtreeindex5.js create mode 100644 lib/docs/html/open.png create mode 100644 lib/docs/html/pages.html create mode 100644 lib/docs/html/resize.js create mode 100644 lib/docs/html/search/all_24.html create mode 100644 lib/docs/html/search/all_24.js create mode 100644 lib/docs/html/search/all_5f.html create mode 100644 lib/docs/html/search/all_5f.js create mode 100644 lib/docs/html/search/all_61.html create mode 100644 lib/docs/html/search/all_61.js create mode 100644 lib/docs/html/search/all_62.html create mode 100644 lib/docs/html/search/all_62.js create mode 100644 lib/docs/html/search/all_63.html create mode 100644 lib/docs/html/search/all_63.js create mode 100644 lib/docs/html/search/all_64.html create mode 100644 lib/docs/html/search/all_64.js create mode 100644 lib/docs/html/search/all_65.html create mode 100644 lib/docs/html/search/all_65.js create mode 100644 lib/docs/html/search/all_66.html create mode 100644 lib/docs/html/search/all_66.js create mode 100644 lib/docs/html/search/all_67.html create mode 100644 lib/docs/html/search/all_67.js create mode 100644 lib/docs/html/search/all_68.html create mode 100644 lib/docs/html/search/all_68.js create mode 100644 lib/docs/html/search/all_69.html create mode 100644 lib/docs/html/search/all_69.js create mode 100644 lib/docs/html/search/all_6b.html create mode 100644 lib/docs/html/search/all_6b.js create mode 100644 lib/docs/html/search/all_6c.html create mode 100644 lib/docs/html/search/all_6c.js create mode 100644 lib/docs/html/search/all_6d.html create mode 100644 lib/docs/html/search/all_6d.js create mode 100644 lib/docs/html/search/all_6e.html create mode 100644 lib/docs/html/search/all_6e.js create mode 100644 lib/docs/html/search/all_6f.html create mode 100644 lib/docs/html/search/all_6f.js create mode 100644 lib/docs/html/search/all_70.html create mode 100644 lib/docs/html/search/all_70.js create mode 100644 lib/docs/html/search/all_72.html create mode 100644 lib/docs/html/search/all_72.js create mode 100644 lib/docs/html/search/all_73.html create mode 100644 lib/docs/html/search/all_73.js create mode 100644 lib/docs/html/search/all_74.html create mode 100644 lib/docs/html/search/all_74.js create mode 100644 lib/docs/html/search/all_75.html create mode 100644 lib/docs/html/search/all_75.js create mode 100644 lib/docs/html/search/all_76.html create mode 100644 lib/docs/html/search/all_76.js create mode 100644 lib/docs/html/search/all_77.html create mode 100644 lib/docs/html/search/all_77.js create mode 100644 lib/docs/html/search/classes_74.html create mode 100644 lib/docs/html/search/classes_74.js create mode 100644 lib/docs/html/search/close.png create mode 100644 lib/docs/html/search/files_61.html create mode 100644 lib/docs/html/search/files_61.js create mode 100644 lib/docs/html/search/files_62.html create mode 100644 lib/docs/html/search/files_62.js create mode 100644 lib/docs/html/search/files_63.html create mode 100644 lib/docs/html/search/files_63.js create mode 100644 lib/docs/html/search/files_65.html create mode 100644 lib/docs/html/search/files_65.js create mode 100644 lib/docs/html/search/files_66.html create mode 100644 lib/docs/html/search/files_66.js create mode 100644 lib/docs/html/search/files_68.html create mode 100644 lib/docs/html/search/files_68.js create mode 100644 lib/docs/html/search/files_69.html create mode 100644 lib/docs/html/search/files_69.js create mode 100644 lib/docs/html/search/files_70.html create mode 100644 lib/docs/html/search/files_70.js create mode 100644 lib/docs/html/search/files_72.html create mode 100644 lib/docs/html/search/files_72.js create mode 100644 lib/docs/html/search/files_73.html create mode 100644 lib/docs/html/search/files_73.js create mode 100644 lib/docs/html/search/files_74.html create mode 100644 lib/docs/html/search/files_74.js create mode 100644 lib/docs/html/search/files_75.html create mode 100644 lib/docs/html/search/files_75.js create mode 100644 lib/docs/html/search/functions_5f.html create mode 100644 lib/docs/html/search/functions_5f.js create mode 100644 lib/docs/html/search/functions_61.html create mode 100644 lib/docs/html/search/functions_61.js create mode 100644 lib/docs/html/search/functions_62.html create mode 100644 lib/docs/html/search/functions_62.js create mode 100644 lib/docs/html/search/functions_63.html create mode 100644 lib/docs/html/search/functions_63.js create mode 100644 lib/docs/html/search/functions_64.html create mode 100644 lib/docs/html/search/functions_64.js create mode 100644 lib/docs/html/search/functions_65.html create mode 100644 lib/docs/html/search/functions_65.js create mode 100644 lib/docs/html/search/functions_66.html create mode 100644 lib/docs/html/search/functions_66.js create mode 100644 lib/docs/html/search/functions_67.html create mode 100644 lib/docs/html/search/functions_67.js create mode 100644 lib/docs/html/search/functions_68.html create mode 100644 lib/docs/html/search/functions_68.js create mode 100644 lib/docs/html/search/functions_69.html create mode 100644 lib/docs/html/search/functions_69.js create mode 100644 lib/docs/html/search/functions_6b.html create mode 100644 lib/docs/html/search/functions_6b.js create mode 100644 lib/docs/html/search/functions_6c.html create mode 100644 lib/docs/html/search/functions_6c.js create mode 100644 lib/docs/html/search/functions_6d.html create mode 100644 lib/docs/html/search/functions_6d.js create mode 100644 lib/docs/html/search/functions_6e.html create mode 100644 lib/docs/html/search/functions_6e.js create mode 100644 lib/docs/html/search/functions_6f.html create mode 100644 lib/docs/html/search/functions_6f.js create mode 100644 lib/docs/html/search/functions_70.html create mode 100644 lib/docs/html/search/functions_70.js create mode 100644 lib/docs/html/search/functions_72.html create mode 100644 lib/docs/html/search/functions_72.js create mode 100644 lib/docs/html/search/functions_73.html create mode 100644 lib/docs/html/search/functions_73.js create mode 100644 lib/docs/html/search/functions_74.html create mode 100644 lib/docs/html/search/functions_74.js create mode 100644 lib/docs/html/search/functions_75.html create mode 100644 lib/docs/html/search/functions_75.js create mode 100644 lib/docs/html/search/functions_76.html create mode 100644 lib/docs/html/search/functions_76.js create mode 100644 lib/docs/html/search/functions_77.html create mode 100644 lib/docs/html/search/functions_77.js create mode 100644 lib/docs/html/search/mag_sel.png create mode 100644 lib/docs/html/search/namespaces_74.html create mode 100644 lib/docs/html/search/namespaces_74.js create mode 100644 lib/docs/html/search/nomatches.html create mode 100644 lib/docs/html/search/pages_61.html create mode 100644 lib/docs/html/search/pages_61.js create mode 100644 lib/docs/html/search/pages_64.html create mode 100644 lib/docs/html/search/pages_64.js create mode 100644 lib/docs/html/search/search.css create mode 100644 lib/docs/html/search/search.js create mode 100644 lib/docs/html/search/search_l.png create mode 100644 lib/docs/html/search/search_m.png create mode 100644 lib/docs/html/search/search_r.png create mode 100644 lib/docs/html/search/variables_24.html create mode 100644 lib/docs/html/search/variables_24.js create mode 100644 lib/docs/html/search/variables_63.html create mode 100644 lib/docs/html/search/variables_63.js create mode 100644 lib/docs/html/search/variables_65.html create mode 100644 lib/docs/html/search/variables_65.js create mode 100644 lib/docs/html/search/variables_66.html create mode 100644 lib/docs/html/search/variables_66.js create mode 100644 lib/docs/html/search/variables_67.html create mode 100644 lib/docs/html/search/variables_67.js create mode 100644 lib/docs/html/search/variables_68.html create mode 100644 lib/docs/html/search/variables_68.js create mode 100644 lib/docs/html/search/variables_6b.html create mode 100644 lib/docs/html/search/variables_6b.js create mode 100644 lib/docs/html/search/variables_6c.html create mode 100644 lib/docs/html/search/variables_6c.js create mode 100644 lib/docs/html/search/variables_70.html create mode 100644 lib/docs/html/search/variables_70.js create mode 100644 lib/docs/html/search/variables_72.html create mode 100644 lib/docs/html/search/variables_72.js create mode 100644 lib/docs/html/search/variables_73.html create mode 100644 lib/docs/html/search/variables_73.js create mode 100644 lib/docs/html/search/variables_74.html create mode 100644 lib/docs/html/search/variables_74.js create mode 100644 lib/docs/html/sync_off.png create mode 100644 lib/docs/html/sync_on.png create mode 100644 lib/docs/html/tab_a.png create mode 100644 lib/docs/html/tab_b.png create mode 100644 lib/docs/html/tab_h.png create mode 100644 lib/docs/html/tab_s.png create mode 100644 lib/docs/html/tabs.css create mode 100644 lib/images/flags/ad.png create mode 100644 lib/images/flags/ae.png create mode 100644 lib/images/flags/af.png create mode 100644 lib/images/flags/ag.png create mode 100644 lib/images/flags/ai.png create mode 100644 lib/images/flags/al.png create mode 100644 lib/images/flags/am.png create mode 100644 lib/images/flags/an.png create mode 100644 lib/images/flags/ao.png create mode 100644 lib/images/flags/ar.png create mode 100644 lib/images/flags/as.png create mode 100644 lib/images/flags/at.png create mode 100644 lib/images/flags/au.png create mode 100644 lib/images/flags/aw.png create mode 100644 lib/images/flags/ax.png create mode 100644 lib/images/flags/az.png create mode 100644 lib/images/flags/ba.png create mode 100644 lib/images/flags/bb.png create mode 100644 lib/images/flags/bd.png create mode 100644 lib/images/flags/be.png create mode 100644 lib/images/flags/bf.png create mode 100644 lib/images/flags/bg.png create mode 100644 lib/images/flags/bh.png create mode 100644 lib/images/flags/bi.png create mode 100644 lib/images/flags/bj.png create mode 100644 lib/images/flags/bl.png create mode 100644 lib/images/flags/bm.png create mode 100644 lib/images/flags/bn.png create mode 100644 lib/images/flags/bo.png create mode 100644 lib/images/flags/br.png create mode 100644 lib/images/flags/bs.png create mode 100644 lib/images/flags/bt.png create mode 100644 lib/images/flags/bv.png create mode 100644 lib/images/flags/bw.png create mode 100644 lib/images/flags/by.png create mode 100644 lib/images/flags/bz.png create mode 100644 lib/images/flags/ca.png create mode 100644 lib/images/flags/cc.png create mode 100644 lib/images/flags/cd.png create mode 100644 lib/images/flags/cf.png create mode 100644 lib/images/flags/cg.png create mode 100644 lib/images/flags/ch.png create mode 100644 lib/images/flags/ci.png create mode 100644 lib/images/flags/ck.png create mode 100644 lib/images/flags/cl.png create mode 100644 lib/images/flags/cm.png create mode 100644 lib/images/flags/cn.png create mode 100644 lib/images/flags/co.png create mode 100644 lib/images/flags/cr.png create mode 100644 lib/images/flags/cs.png create mode 100644 lib/images/flags/cu.png create mode 100644 lib/images/flags/cv.png create mode 100644 lib/images/flags/cx.png create mode 100644 lib/images/flags/cy.png create mode 100644 lib/images/flags/cz.png create mode 100644 lib/images/flags/de.png create mode 100644 lib/images/flags/dj.png create mode 100644 lib/images/flags/dk.png create mode 100644 lib/images/flags/dm.png create mode 100644 lib/images/flags/do.png create mode 100644 lib/images/flags/dz.png create mode 100644 lib/images/flags/ec.png create mode 100644 lib/images/flags/ee.png create mode 100644 lib/images/flags/eg.png create mode 100644 lib/images/flags/eh.png create mode 100644 lib/images/flags/er.png create mode 100644 lib/images/flags/es.png create mode 100644 lib/images/flags/et.png create mode 100644 lib/images/flags/fi.png create mode 100644 lib/images/flags/fj.png create mode 100644 lib/images/flags/fk.png create mode 100644 lib/images/flags/fm.png create mode 100644 lib/images/flags/fo.png create mode 100644 lib/images/flags/fr.png create mode 100644 lib/images/flags/ga.png create mode 100644 lib/images/flags/gb.png create mode 100644 lib/images/flags/gd.png create mode 100644 lib/images/flags/ge.png create mode 100644 lib/images/flags/gf.png create mode 100644 lib/images/flags/gg.png create mode 100644 lib/images/flags/gh.png create mode 100644 lib/images/flags/gi.png create mode 100644 lib/images/flags/gl.png create mode 100644 lib/images/flags/gm.png create mode 100644 lib/images/flags/gn.png create mode 100644 lib/images/flags/gp.png create mode 100644 lib/images/flags/gq.png create mode 100644 lib/images/flags/gr.png create mode 100644 lib/images/flags/gs.png create mode 100644 lib/images/flags/gt.png create mode 100644 lib/images/flags/gu.png create mode 100644 lib/images/flags/gw.png create mode 100644 lib/images/flags/gy.png create mode 100644 lib/images/flags/hk.png create mode 100644 lib/images/flags/hm.png create mode 100644 lib/images/flags/hn.png create mode 100644 lib/images/flags/hr.png create mode 100644 lib/images/flags/ht.png create mode 100644 lib/images/flags/hu.png create mode 100644 lib/images/flags/id.png create mode 100644 lib/images/flags/ie.png create mode 100644 lib/images/flags/il.png create mode 100644 lib/images/flags/im.png create mode 100644 lib/images/flags/in.png create mode 100644 lib/images/flags/io.png create mode 100644 lib/images/flags/iq.png create mode 100644 lib/images/flags/ir.png create mode 100644 lib/images/flags/is.png create mode 100644 lib/images/flags/it.png create mode 100644 lib/images/flags/je.png create mode 100644 lib/images/flags/jm.png create mode 100644 lib/images/flags/jo.png create mode 100644 lib/images/flags/jp.png create mode 100644 lib/images/flags/ke.png create mode 100644 lib/images/flags/kg.png create mode 100644 lib/images/flags/kh.png create mode 100644 lib/images/flags/ki.png create mode 100644 lib/images/flags/km.png create mode 100644 lib/images/flags/kn.png create mode 100644 lib/images/flags/kp.png create mode 100644 lib/images/flags/kr.png create mode 100644 lib/images/flags/kw.png create mode 100644 lib/images/flags/ky.png create mode 100644 lib/images/flags/kz.png create mode 100644 lib/images/flags/la.png create mode 100644 lib/images/flags/lb.png create mode 100644 lib/images/flags/lc.png create mode 100644 lib/images/flags/li.png create mode 100644 lib/images/flags/lk.png create mode 100644 lib/images/flags/lr.png create mode 100644 lib/images/flags/ls.png create mode 100644 lib/images/flags/lt.png create mode 100644 lib/images/flags/lu.png create mode 100644 lib/images/flags/lv.png create mode 100644 lib/images/flags/ly.png create mode 100644 lib/images/flags/ma.png create mode 100644 lib/images/flags/mc.png create mode 100644 lib/images/flags/md.png create mode 100644 lib/images/flags/me.png create mode 100644 lib/images/flags/mg.png create mode 100644 lib/images/flags/mh.png create mode 100644 lib/images/flags/mk.png create mode 100644 lib/images/flags/ml.png create mode 100644 lib/images/flags/mm.png create mode 100644 lib/images/flags/mn.png create mode 100644 lib/images/flags/mo.png create mode 100644 lib/images/flags/mp.png create mode 100644 lib/images/flags/mq.png create mode 100644 lib/images/flags/mr.png create mode 100644 lib/images/flags/ms.png create mode 100644 lib/images/flags/mt.png create mode 100644 lib/images/flags/mu.png create mode 100644 lib/images/flags/mv.png create mode 100644 lib/images/flags/mw.png create mode 100644 lib/images/flags/mx.png create mode 100644 lib/images/flags/my.png create mode 100644 lib/images/flags/mz.png create mode 100644 lib/images/flags/na.png create mode 100644 lib/images/flags/nc.png create mode 100644 lib/images/flags/ne.png create mode 100644 lib/images/flags/nf.png create mode 100644 lib/images/flags/ng.png create mode 100644 lib/images/flags/ni.png create mode 100644 lib/images/flags/nl.png create mode 100644 lib/images/flags/no.png create mode 100644 lib/images/flags/np.png create mode 100644 lib/images/flags/nr.png create mode 100644 lib/images/flags/nu.png create mode 100644 lib/images/flags/nz.png create mode 100644 lib/images/flags/om.png create mode 100644 lib/images/flags/pa.png create mode 100644 lib/images/flags/pe.png create mode 100644 lib/images/flags/pf.png create mode 100644 lib/images/flags/pg.png create mode 100644 lib/images/flags/ph.png create mode 100644 lib/images/flags/pk.png create mode 100644 lib/images/flags/pl.png create mode 100644 lib/images/flags/pm.png create mode 100644 lib/images/flags/pn.png create mode 100644 lib/images/flags/pr.png create mode 100644 lib/images/flags/ps.png create mode 100644 lib/images/flags/pt.png create mode 100644 lib/images/flags/pw.png create mode 100644 lib/images/flags/py.png create mode 100644 lib/images/flags/qa.png create mode 100644 lib/images/flags/re.png create mode 100644 lib/images/flags/ro.png create mode 100644 lib/images/flags/rs.png create mode 100644 lib/images/flags/ru.png create mode 100644 lib/images/flags/rw.png create mode 100644 lib/images/flags/sa.png create mode 100644 lib/images/flags/sb.png create mode 100644 lib/images/flags/sc.png create mode 100644 lib/images/flags/sd.png create mode 100644 lib/images/flags/se.png create mode 100644 lib/images/flags/sg.png create mode 100644 lib/images/flags/sh.png create mode 100644 lib/images/flags/si.png create mode 100644 lib/images/flags/sj.png create mode 100644 lib/images/flags/sk.png create mode 100644 lib/images/flags/sl.png create mode 100644 lib/images/flags/sm.png create mode 100644 lib/images/flags/sn.png create mode 100644 lib/images/flags/so.png create mode 100644 lib/images/flags/sr.png create mode 100644 lib/images/flags/st.png create mode 100644 lib/images/flags/sv.png create mode 100644 lib/images/flags/sy.png create mode 100644 lib/images/flags/sz.png create mode 100644 lib/images/flags/tc.png create mode 100644 lib/images/flags/td.png create mode 100644 lib/images/flags/tf.png create mode 100644 lib/images/flags/tg.png create mode 100644 lib/images/flags/th.png create mode 100644 lib/images/flags/tj.png create mode 100644 lib/images/flags/tk.png create mode 100644 lib/images/flags/tl.png create mode 100644 lib/images/flags/tm.png create mode 100644 lib/images/flags/tn.png create mode 100644 lib/images/flags/to.png create mode 100644 lib/images/flags/tr.png create mode 100644 lib/images/flags/tt.png create mode 100644 lib/images/flags/tv.png create mode 100644 lib/images/flags/tw.png create mode 100644 lib/images/flags/tz.png create mode 100644 lib/images/flags/ua.png create mode 100644 lib/images/flags/ug.png create mode 100644 lib/images/flags/uk.png create mode 100644 lib/images/flags/um.png create mode 100644 lib/images/flags/us.png create mode 100644 lib/images/flags/uy.png create mode 100644 lib/images/flags/uz.png create mode 100644 lib/images/flags/va.png create mode 100644 lib/images/flags/vc.png create mode 100644 lib/images/flags/ve.png create mode 100644 lib/images/flags/vg.png create mode 100644 lib/images/flags/vi.png create mode 100644 lib/images/flags/vn.png create mode 100644 lib/images/flags/vu.png create mode 100644 lib/images/flags/wf.png create mode 100644 lib/images/flags/ws.png create mode 100644 lib/images/flags/ye.png create mode 100644 lib/images/flags/yt.png create mode 100644 lib/images/flags/za.png create mode 100644 lib/images/flags/zm.png create mode 100644 lib/images/flags/zw.png create mode 100644 lib/images/icons/ts3client.ico create mode 100644 lib/images/icons/ts3server.ico create mode 100644 lib/images/viewer/channel_flag_default.png create mode 100644 lib/images/viewer/channel_flag_moderated.png create mode 100644 lib/images/viewer/channel_flag_music.png create mode 100644 lib/images/viewer/channel_flag_password.png create mode 100644 lib/images/viewer/channel_full.png create mode 100644 lib/images/viewer/channel_open.png create mode 100644 lib/images/viewer/channel_pass.png create mode 100644 lib/images/viewer/client_away.png create mode 100644 lib/images/viewer/client_cc.png create mode 100644 lib/images/viewer/client_cc_idle.png create mode 100644 lib/images/viewer/client_cc_talk.png create mode 100644 lib/images/viewer/client_idle.png create mode 100644 lib/images/viewer/client_mic_disabled.png create mode 100644 lib/images/viewer/client_mic_muted.png create mode 100644 lib/images/viewer/client_priority.png create mode 100644 lib/images/viewer/client_query.png create mode 100644 lib/images/viewer/client_snd_disabled.png create mode 100644 lib/images/viewer/client_snd_muted.png create mode 100644 lib/images/viewer/client_talk.png create mode 100644 lib/images/viewer/client_talker.png create mode 100644 lib/images/viewer/client_talker_request.png create mode 100644 lib/images/viewer/group_channel.png create mode 100644 lib/images/viewer/group_icon_0.png create mode 100644 lib/images/viewer/group_icon_100.png create mode 100644 lib/images/viewer/group_icon_200.png create mode 100644 lib/images/viewer/group_icon_300.png create mode 100644 lib/images/viewer/group_icon_400.png create mode 100644 lib/images/viewer/group_icon_500.png create mode 100644 lib/images/viewer/group_icon_600.png create mode 100644 lib/images/viewer/group_server.png create mode 100644 lib/images/viewer/host.png create mode 100644 lib/images/viewer/server_full.png create mode 100644 lib/images/viewer/server_open.png create mode 100644 lib/images/viewer/server_pass.png create mode 100644 lib/images/viewer/spacer_dashdotdotline.gif create mode 100644 lib/images/viewer/spacer_dashdotline.gif create mode 100644 lib/images/viewer/spacer_dashline.gif create mode 100644 lib/images/viewer/spacer_dotline.gif create mode 100644 lib/images/viewer/spacer_solidline.gif create mode 100644 lib/images/viewer/tree.png create mode 100644 lib/images/viewer/tree_blank.png create mode 100644 lib/images/viewer/tree_end.gif create mode 100644 lib/images/viewer/tree_line.gif create mode 100644 lib/images/viewer/tree_mid.gif create mode 100644 lib/libraries/TeamSpeak3/Adapter/Abstract.php create mode 100644 lib/libraries/TeamSpeak3/Adapter/Blacklist.php create mode 100644 lib/libraries/TeamSpeak3/Adapter/Blacklist/Exception.php create mode 100644 lib/libraries/TeamSpeak3/Adapter/Exception.php create mode 100644 lib/libraries/TeamSpeak3/Adapter/FileTransfer.php create mode 100644 lib/libraries/TeamSpeak3/Adapter/FileTransfer/Exception.php create mode 100644 lib/libraries/TeamSpeak3/Adapter/ServerQuery.php create mode 100644 lib/libraries/TeamSpeak3/Adapter/ServerQuery/Event.php create mode 100644 lib/libraries/TeamSpeak3/Adapter/ServerQuery/Exception.php create mode 100644 lib/libraries/TeamSpeak3/Adapter/ServerQuery/Reply.php create mode 100644 lib/libraries/TeamSpeak3/Adapter/TSDNS.php create mode 100644 lib/libraries/TeamSpeak3/Adapter/TSDNS/Exception.php create mode 100644 lib/libraries/TeamSpeak3/Adapter/Update.php create mode 100644 lib/libraries/TeamSpeak3/Adapter/Update/Exception.php create mode 100644 lib/libraries/TeamSpeak3/Exception.php create mode 100644 lib/libraries/TeamSpeak3/Helper/Char.php create mode 100644 lib/libraries/TeamSpeak3/Helper/Convert.php create mode 100644 lib/libraries/TeamSpeak3/Helper/Crypt.php create mode 100644 lib/libraries/TeamSpeak3/Helper/Exception.php create mode 100644 lib/libraries/TeamSpeak3/Helper/Profiler.php create mode 100644 lib/libraries/TeamSpeak3/Helper/Profiler/Exception.php create mode 100644 lib/libraries/TeamSpeak3/Helper/Profiler/Timer.php create mode 100644 lib/libraries/TeamSpeak3/Helper/Signal.php create mode 100644 lib/libraries/TeamSpeak3/Helper/Signal/Exception.php create mode 100644 lib/libraries/TeamSpeak3/Helper/Signal/Handler.php create mode 100644 lib/libraries/TeamSpeak3/Helper/Signal/Interface.php create mode 100644 lib/libraries/TeamSpeak3/Helper/String.php create mode 100644 lib/libraries/TeamSpeak3/Helper/Uri.php create mode 100644 lib/libraries/TeamSpeak3/Node/Abstract.php create mode 100644 lib/libraries/TeamSpeak3/Node/Channel.php create mode 100644 lib/libraries/TeamSpeak3/Node/Channelgroup.php create mode 100644 lib/libraries/TeamSpeak3/Node/Client.php create mode 100644 lib/libraries/TeamSpeak3/Node/Exception.php create mode 100644 lib/libraries/TeamSpeak3/Node/Host.php create mode 100644 lib/libraries/TeamSpeak3/Node/Server.php create mode 100644 lib/libraries/TeamSpeak3/Node/Servergroup.php create mode 100644 lib/libraries/TeamSpeak3/TeamSpeak3.php create mode 100644 lib/libraries/TeamSpeak3/Transport/Abstract.php create mode 100644 lib/libraries/TeamSpeak3/Transport/Exception.php create mode 100644 lib/libraries/TeamSpeak3/Transport/TCP.php create mode 100644 lib/libraries/TeamSpeak3/Transport/UDP.php create mode 100644 lib/libraries/TeamSpeak3/Viewer/Html.php create mode 100644 lib/libraries/TeamSpeak3/Viewer/Interface.php create mode 100644 lib/libraries/TeamSpeak3/Viewer/Text.php create mode 100644 lib/license.txt create mode 100644 lib_ts3.php diff --git a/autoload.inc b/autoload.inc new file mode 100644 index 0000000..4000b72 --- /dev/null +++ b/autoload.inc @@ -0,0 +1,3 @@ += 1378383061) is recommended + + added TeamSpeak3_Helper_Convert::versionShort() + + added icons for server and client applications + * unified UTF-8 encoding in several methods + * TeamSpeak3_Node_Server::clientList() now includes client badges + * public legacy release + +=== Release 1.1.21 - 26 Jul 2013 === + ! updated online and offline docs to Doxygen 1.8.4 + - fixed an issue where TeamSpeak3_Adapter_ServerQuery_Reply::toArray() could + generate elements with an invalid key + + added TeamSpeak3_Node_Server::clientGetByDbid() + + added TeamSpeak3_Node_Server::sendPluginCmd() + + added TeamSpeak3_Node_Channel::sendPluginCmd() + + added TeamSpeak3_Node_Client::sendPluginCmd() + * updated default codec for channel spacers to Opus Voice + * updated country flag images + * public legacy release + +=== Release 1.1.20 - 04 Mar 2013 === + ! updated online and offline docs to Doxygen 1.8.3.1 + - removed outdated example scripts; check documentation instead + * TeamSpeak3_Node_Server::sortFileList() now sorts existing folders first in + alphabetical order + * public legacy release + +=== Release 1.1.19 - 03 Jan 2013 === + + added support for the Opus audio codec + * adjusted output of TeamSpeak3_Helper_Convert::codec() + * TeamSpeak3_Viewer_Html interface now displays music codec status for both + CELT Mono and Opus Music codecs + * internal legacy release + +=== Release 1.1.18 - 13 Nov 2012 === + ! upgrading your servers to 3.0.7 (build >= 1352818893) is recommended + ! TeamSpeak3_Node_Host::permissionList() now respects -new option and converts + the new output containing group_id_end to the old format + + added TeamSpeak3_Node_Host::permissionCats() + + added TeamSpeak3_Node_Host::permissionEnds() + ! TeamSpeak3_Node_Host::permissionGetCategoryById() now determines the servers + permission version and returns the permission category based based on the + group_id_end or the first byte of the specified permission ID + ! TeamSpeak3_Node_Host::permissionGetGrantById() now determines the servers + permission version and returns the ID of the associated needed permission + modify power based on their default mask 0xFF00 or the new 0x8000 + * TeamSpeak3_Node_Host::permissionTree() performance tweaks + * public legacy release + +=== Release 1.1.17 - 05 Oct 2012 === + * TeamSpeak3_Adapter_ServerQuery::request() now allows disabling of exceptions + ! fixed a deadlock in TeamSpeak3_Adapter_ServerQuery_Reply::fetchError() + that was reported by neXXus4tw + * public legacy release + +=== Release 1.1.16 - 13 Sep 2012 === + - fixed a problem in TeamSpeak3_Adapter_ServerQuery_Reply::fetchError() that + could cause an infinite loop when using the permissionlist command + + added TeamSpeak3_Helper_String::transliterate() + + added TeamSpeak3_Helper_String::uriSafe() + + added TeamSpeak3_Viewer_Html::getContainerSummary() + * TeamSpeak3_Viewer_Html interface now indicates insufficient talk power on + clients in moderated channels + * public legacy release + +=== Release 1.1.15 - 23 Aug 2012 === + ! codebase converted to Zend Studio 9.0.3 project + + added TeamSpeak3_Node_Host::serverGroupPermAutoAssign() + + added TeamSpeak3_Node_Host::serverGroupPermAutoRemove() + - fixed a bug where TeamSpeak3_Node_Server::channelGroupListReset() was not + called in several channel group related methods + * public legacy release + +=== Release 1.1.14 - 11 Aug 2012 === + ! updated online and offline docs to Doxygen 1.8.2 + * updated country flag images using files from client 3.0.9 + * public legacy release + +=== Release 1.1.13 - 18 Jun 2012 === + ! upgrading your servers to 3.0.6 (build >= 1339404919) is mandatory + + TeamSpeak3_Node_Server::transferInitUpload() now respects server-side IP + bindings for file transfer interface + + TeamSpeak3_Node_Server::transferInitDownload() now respects server-side IP + bindings for file transfer interface + - fixed missing return value for TeamSpeak3_Node_Server::messageList() + * TeamSpeak3_Node_Server::clientList() now includes client IP addresses + + added TeamSpeak3_Node_Server::tempPasswordList() + + added TeamSpeak3_Node_Server::tempPasswordCreate() + + added TeamSpeak3_Node_Server::tempPasswordDelete() + * internal legacy release + +=== Release 1.1.12 - 18 Feb 2012 === + - TeamSpeak3_Viewer_Html::getCorpusName() no longer truncates name of channel + spacers + - fixed broken TeamSpeak3_Node_Server::snapshotDeploy() method + +=== Release 1.1.11 - 05 Feb 2012 === + ! TeamSpeak3_Node_Server::logView() has been updated and all parameters were + changed to respect the new server-side implementation + - fixed invalid usage of "permsid" instead of "permid" when an array of IDs + was passed to permission related methods + - fixed invalid detection of some channel spacers + - fixed issues when using some UTF-8 encoded strings as command parameters + * TeamSpeak3_Helper_String::isUtf8() now scans the entire string and checks + that it conforms to UTF-8 by searching for non-ascii multibyte sequences + in UTF-8 range + + added TeamSpeak3_Node_Host::permissionGetGrantById() + + added TeamSpeak3_Node_Host::permissionTree() + +=== Release 1.1.10 - 27 Dec 2011 === + ! updated online and offline docs to Doxygen 1.7.6.1 + - fixed object conversion issues in TeamSpeak3_Node_Server::clientMove() + - fixed invalid handling of sortid in TeamSpeak3_Node_Server::sortGroupList() + + added TeamSpeak3_Node_Server::clientCountDb() + * lists generated by TeamSpeak3_Node_Server::channelFileList() now contain + the ID of the selected virtual server + * TeamSpeak3_Node_Server::snapshotDeploy() now returns a new ID and port if + the deploy created a virtual server from scratch + * public stable release + +=== Release 1.1.9-beta - 27 Oct 2011 === + + added TeamSpeak3_Adapter_Update::getClientRev() + + added TeamSpeak3_Adapter_Update::getVersion() + + added TeamSpeak3_Adapter_Update::getClientVersion() + + added TeamSpeak3_Adapter_Update::getServerVersion() + + added TeamSpeak3_Node_Server::clientGetIdsByUid() + * TeamSpeak3_Adapter_Update now supports new update protocol which allows + querying the latest client and server build numbers (UNIX timestamps) and + version strings + * internal release only + +=== Release 1.1.8-beta - 26 Sep 2011 === + + added TeamSpeak3_Helper_Convert::version() + * TeamSpeak3_Viewer_Html interface now respects UNIX timestamps in server + and client version numbers + +=== Release 1.1.7-beta - 25 Sep 2011 === + ! upgrading your servers to 3.0.1 (build >= 1316930695) is mandatory + ! TeamSpeak3_Node_Host::logView() has been updated and all parameters were + changed to respect the new server-side implementation + + added TeamSpeak3_Helper_Convert::logEntry() + * TeamSpeak3_Helper_Convert::logLevel() now supports conversion from string + to level and vice versa + * managing virtual server template settings is now possible by spawning a + TeamSpeak3_Node_Server object using TeamSpeak3_Node_Host::serverGetById(0) + * parameter for TeamSpeak3_Node_Host::serverCreate() is now optional + - minor fixes in online and offline docs + * internal release only + +=== Release 1.1.6-beta - 21 May 2011 === + ! updated online and offline docs to Doxygen 1.7.4 + ! upgrading your servers to 3.0.0-rc1 (build >= 14467) is mandatory + + added TeamSpeak3_Helper_Convert::imageMimeType() + + added constants for different banner display modes + * TeamSpeak3_Viewer_Html interface now supports alternative ftclient option + data:image which allows embedding images directly into HTML output + * internal release only + +=== Release 1.1.5-beta - 19 Mar 2011 === + ! updated online and offline docs to Doxygen 1.7.3 + * TeamSpeak3_Viewer_Html interface is now backwards compatible to servers + running version 3.0.0-beta29 + * TeamSpeak3_Adapter_ServerQuery is now theoretically compatible to the + ClientQuery plugin interface when using available commands + * adjusted exception types in all adapter methods + + added TeamSpeak3_Adapter_Blacklist_Exception + + added TeamSpeak3_Adapter_Update_Exception + + added TeamSpeak3_Adapter_FileTransfer_Exception + + added TeamSpeak3_Adapter_TSDNS_Exception + + added TeamSpeak3_Adapter_TSDNS + + added TeamSpeak3_Helper_String::prepend() + + added TeamSpeak3_Helper_Uri::getFQDNParts() + + added TeamSpeak3_Node_Host::serverGetByTSDNS() + * TeamSpeak3::factory() URIs now supports optional server_tsdns parameter to + identify a virtual server without specifying an ID or port number + +=== Release 1.1.4-beta - 05 Feb 2011 === + ! codebase converted to Zend Studio 8.0.0 project + ! upgrading your servers to 3.0.0-beta31 (build >= 13537) is recommended + + added TeamSpeak3_Node_Server::clientGetNameByUid() + + added TeamSpeak3_Node_Server::clientGetNameByDbid() + + added TeamSpeak3_Node_Server::clientGetServerGroupsByDbid() + + added TeamSpeak3_Node_Server::permRemoveAny() + - fixed internal convert error exception caused internally when using integer + values with more than 16 bits for clientftfid parameters + * several iconDownload() and iconUpload() methods now use random clientftfid + parameter values instead of node IDs + - fixed bug where using exceptions inside uasort() callbacks caused warnings + * TeamSpeak3_Adapter_ServerQuery_Reply::fetchError() now tries to resolve + the permission name for failed_permid values to generate comprehensible + error messages + +=== Release 1.1.3-beta - 15 Jan 2011 === + ! updated online and offline docs to Doxygen 1.7.2 + + added TeamSpeak3_Helper_Signal_Interface which subscribes the layout for + all TeamSpeak3_Helper_Signal callbacks available + + added TeamSpeak3_Node_Host::permissionGetCategoryById() + + added TeamSpeak3_Node_Servergroup::message() + + added TeamSpeak3_Node_Channelgroup::message() + + added TeamSpeak3_Helper_Convert::permissionCategory() + + added new notifyError signal to TeamSpeak3_Adapter_ServerQuery_Reply class + to provide powerful code profiling capabilities + + added additional debugging signals to both TeamSpeak3_Transport_TCP and + TeamSpeak3_Transport_UDP to indicate whenever data has been sent/received + * TeamSpeak3_Adapter_Update::getRev() now supports an additional channel to + query the latest server revision number from the master server + * TeamSpeak3_Node_Host::version() now supports optional parameter to provide + direct access to specific version information such as platform and build + - fixed an issue where flood ban messages sent by 3.0.0-beta30 servers could + could cause timeout exceptions + +=== Release 1.1.2-beta - 03 Dec 2010 === + + added TeamSpeak3_Node_Servergroup::copy() + + added TeamSpeak3_Node_Channelgroup::copy() + - fixed invalid method call in TeamSpeak3_Node_Servergroup::rename() + - fixed invalid method call in TeamSpeak3_Node_Servergroup::delete() + - fixed invalid method call in TeamSpeak3_Node_Channelgroup::rename() + - fixed invalid method call in TeamSpeak3_Node_Channelgroup::delete() + - fixed unnecessary error exception when checking a group with no permissions + assigned in TeamSpeak3_Node_Server::serverGroupGetProfiles() + - fixed invalid $_GET parameter name on clientinfo example page + * hotfix release + +=== Release 1.1.1-beta - 28 Nov 2010 === + ! upgrading your servers to 3.0.0-beta30 (build >= 12910) is recommended + ! example pages have been extended with useful example applications + ! implemented __sleep() and __wakeup() methods for TeamSpeak3_Node_Abstract + objects which makes it possible to serialize and store them into persistent + session values + ! TeamSpeak3_Viewer_Html interface now returns HTML tables instead of div + elements so please make sure that your existing CSS files get updated too + * updated TeamSpeak3_Viewer_Text and TeamSpeak3_Viewer_Html classes with new + customizable output patterns to provide greater flexibility + * changed visibility of all private class methods and properties to protected + to allow modifications through inherited classes + + added constants for different group name display modes + + added TeamSpeak3_Helper_Crypt + + added TeamSpeak3_Exception::prepareCustomMessage() + * custom messages set with TeamSpeak3_Exception::registerCustomMessage() can + now be customized with pre-defined signs %code, %mesg, $file and %line to + provide greater flexibility + * class properties returned by TeamSpeak3_Node_Abstract::getClass() now + respect channel spacers and ServerQuery clients + + added TeamSpeak3_Helper_Uri::getUserParam() + + added TeamSpeak3_Helper_Uri::getHostParam() + + added TeamSpeak3_Helper_Uri::getSessParam() + + added TeamSpeak3_Helper_Uri::getHostUri() + + added TeamSpeak3_Helper_Uri::getBaseUri() + + added TeamSpeak3_Helper_Uri::stripslashesRecursive() + + added TeamSpeak3_Adapter_Abstract::syn() + + added TeamSpeak3_Helper_String::spaceToPercent() + + added TeamSpeak3_Node_Servergroup::privilegeKeyCreate() + + added TeamSpeak3_Node_Servergroup::tokenCreate() + + added TeamSpeak3_Node_Channelgroup::privilegeKeyCreate() + + added TeamSpeak3_Node_Channelgroup::tokenCreate() + + added TeamSpeak3_Node_Server::sortGroupList() + + added TeamSpeak3_Node_Server::isOnline() + + added TeamSpeak3_Node_Host::selfPermCheck() + * TeamSpeak3_Node_Server::serverGroupList() now respects i_group_sort_id + * TeamSpeak3_Node_Server::channelGroupList() now respects i_group_sort_id + * TeamSpeak3_Node_Server::privilegeKeyList() now supports optional resolve + parameter to translate token_id1 and token_id2 into the appropriate group + and/or channel names + - fixed issue in TeamSpeak3_Helper_String::toInt() where integer overflow + did not cast as float + +=== Release 1.0.38-beta - 13 Oct 2010 === + - reverted TeamSpeak3_Node_Host::serverGetByPort() method to 1.0.35-beta + * hotfix release + +=== Release 1.0.37-beta - 12 Oct 2010 === + - fixed broken TeamSpeak3_Node_Host::serverGetByPort() method + * hotfix release + +=== Release 1.0.36-beta - 11 Oct 2010 === + ! upgrading your servers to 3.0.0-beta30 (build >= 12559) is recommended + ! converted online and offline docs to Doxygen 1.7.1 + - fixed a possible timeout issue with 3.0.0-beta30-pre servers + - added missing comments for some undocumented class members + + added TeamSpeak3_Node_Host::serverSelectedPort() + * TeamSpeak3_Node_Host::serverSelectByPort() will not select a virtual server + that is already selected + +=== Release 1.0.35-beta - 05 Oct 2010 === + - fixed invalid method name in TeamSpeak3_Node_Server::privilegeKeyCreate() + - fixed invalid method name in TeamSpeak3_Node_Server::customSearch() + - fixed invalid method name in TeamSpeak3_Node_Server::customInfo() + - fixed several small issues + +=== Release 1.0.34-beta - 29 Sep 2010 === + ! upgrading your servers to 3.0.0-beta29 (build >= 12463) is recommended + + added constants for different codec encryption modes + + added TeamSpeak3_Helper_Signal + + added TeamSpeak3_Helper_Signal_Handler + + added TeamSpeak3_Adapter_ServerQuery_Event + + added TeamSpeak3_Adapter_ServerQuery_Reply::getCommandString() + + added TeamSpeak3_Adapter_ServerQuery_Reply::getNotifyEvents() + + added TeamSpeak3_Adapter_ServerQuery::wait() + + added TeamSpeak3_Adapter_ServerQuery::getQueryLastTimestamp() + + added TeamSpeak3_Node_Server::privilegeKeyList() + + added TeamSpeak3_Node_Server::privilegeKeyCreate() + + added TeamSpeak3_Node_Server::privilegeKeyDelete() + + added TeamSpeak3_Node_Server::privilegeKeyUse() + + added simple console client script to example pages + ! all libraries will now emit signals that you can subscribe to which allows + you to extend the core functionality of the framework with your own code + - fixed regular expressions in TeamSpeak3_Helper_String filter methods + * TeamSpeak3_Node_Host::serverSelect() will not select a virtual server that + is already selected + * new ServerQuery greeting message will now be filtered out of all replies + sent by the server + * TeamSpeak3_Transport_Abstract::getConfig() now accepts a parameter to get + the value of a specified config setting directly + +=== Release 1.0.33-beta - 19 Sep 2010 === + ! upgrading your servers to 3.0.0-beta29 (build >= 12327) is recommended + ! example pages will no longer support outdated Internet Explorer versions + so please be sure to use a modern browser + + added TeamSpeak3_Node_Server::permReset() + - fixed "convert error" issues when using a TeamSpeak3_Node_Abstract object + as command parameter + * TeamSpeak3_Node_Client::getIcon() now respects client_flag_talking again + * TeamSpeak3_Viewer_Html interface now supports client country flags + +=== Release 1.0.32-beta - 25 Aug 2010 === + + added TeamSpeak3_Helper_String::isInt() + + added TeamSpeak3_Node_Host::setLoadClientlistFirst() + * TCP/UDP streams will by default be opened in blocking mode + * factory URI now accepts all flags as options thus supporting multiple flags + at once including both TeamSpeak 3 Client display modes for viewer scripts + - fixed invalid usage of parameter for blocking/non-blocking mode on a stream + - fixed invalid conversion of float values while parsing ServerQuery replies + * internal release only + +=== Release 1.0.31-beta - 12 Aug 2010 === + ! upgrading your servers to 3.0.0-beta26 (build >= 11927) is recommended + ! removed "16x16_" prefix from viewer images and updated several icons + + added some new demo scripts to the example pages + + added TeamSpeak3_Node_Server::serverGroupGetProfiles() + + added TeamSpeak3_Node_Server::connectionInfo() + + added TeamSpeak3_Helper_Convert::logLevel() + * TeamSpeak3_Node_Client::getIcon() now respects channel commander flag + * several node list methods now support additional regexp filter parameters + * exceptions thrown in TeamSpeak3_Adapter_ServerQuery::request() no longer + contain full query command string + * TeamSpeak3::factory() uri now features an optional parameter to enable the + blocking/non-blocking mode on a stream + * TeamSpeak3_Viewer_Html interface now supports all special channel spacers + by using background images + * TeamSpeak3_Viewer_Html interface now returns empty
with invidual CSS + classes for each spacer type instead of
tags + * TeamSpeak3_Helper_Convert::seconds() no longer converts to milliseconds by + default + * TeamSpeak3_Node_Abstract::getInfo() now supports optional auto-conversion + of some properties to human-readable values + * TeamSpeak3_Node_Server::serverGroupList() now returns an empty array when + called on a default group + * TeamSpeak3_Node_Server::channelGroupList() now returns an empty array when + called on a default group + - fixed invalid TeamSpeak3_Adapter_Blacklist::isBlacklisted() return values + when master server is not responding + - fixed a stristr() warning in TeamSpeak3_Helper_String::contains() when + providing an empty search pattern + +=== Release 1.0.30-beta - 10 Jul 2010 === + + added TeamSpeak3_Node_Client::getRev() + * TeamSpeak3_Helper_String::toInt() now handles -1 values properly + - fixed order of grouped or nested parameters in ServerQuery commands + - fixed issues in TeamSpeak3_Helper_Profiler when working with sessions + - fixed download issue in the included file browser example + +=== Release 1.0.29-beta - 03 Jul 2010 === + ! upgrading your servers to 3.0.0-beta26 (build >= 11624) is mandatory + + added TeamSpeak3_Node_Server::serverGroupCopy() + + added TeamSpeak3_Node_Server::channelGroupCopy() + + added TeamSpeak3_Node_Server::clientInfoDb() + + added TeamSpeak3_Node_Host::setUseOfflineAsVirtual() + * TeamSpeak3_Node_Server use methods now respect -virtual option + ! offline virtual servers will no longer be started in virtual mode by + default while several new methods allow changing this behavior + +=== Release 1.0.28-beta - 28 Jun 2010 === + ! upgrading your servers to 3.0.0-beta25 (build >= 11255) is mandatory + + added TeamSpeak3_Node_Server::isOffline() + + added TeamSpeak3_Node_Server::channelSpacerGetAlign() + * TeamSpeak3_Node_Server::serverGroupCreate() now supports type parameter + * TeamSpeak3_Node_Server::channelGroupCreate() now supports type parameter + * TeamSpeak3_Node_Server permlist methods now respect -permsid option + * TeamSpeak3_Viewer_Html interface now supports downloading of remote icons + ! please keep in mind that the TeamSpeak3_Viewer_Html interface is intended + as a proof of concept application and should be modified to cache remote + icons before beeing used in a production environment + - fixed invalid command name in TeamSpeak3_Node_Server::clientDeleteDb() + - removed check for client_flag_talking in TeamSpeak3_Node_Client::getIcon() + * internal release only + +=== Release 1.0.27-beta - 24 May 2010 === + ! upgrading your servers to 3.0.0-beta23 (build >= 11062) is mandatory + ! TeamSpeak3_Adapter_Abstract::__construct() now expects an array of options + instead of a TeamSpeak3_Transport_Abstract object + + added TeamSpeak3_Adapter_Update + + added TeamSpeak3_Adapter_Blacklist + + added TeamSpeak3_Adapter_Abstract::initTransport() + + added TeamSpeak3_Transport_UDP + + added TeamSpeak3_Node_Abstract::getClass() + + added TeamSpeak3_Node_Abstract::serverGroupIdentify() + - fixed invalid return value in TeamSpeak3_Helper_String::resize() + * TeamSpeak3::autoload() no longer loads libraries without the TeamSpeak3 + classname prefix to resolve issues with spl_autoload() implementations from + other frameworks + * TeamSpeak3_Viewer_Html interface now adds custom HTML class properties to + nodes to improve CSS customization options + * TeamSpeak3_Viewer_Html interface now recognizes channel spacers (WIP) + * internal release only + +=== Release 1.0.26-beta - 14 Apr 2010 === + ! codebase converted to Zend Studio 7.1.2 project + + added TeamSpeak3_Node_Server::channelIsSpacer() + + added TeamSpeak3_Node_Server::channelSpacerCreate() + + added TeamSpeak3_Node_Server::channelSpacerGetType() + + added constants for different channel spacer types + - fixed unused parameters in TeamSpeak3_Node_Channel::permRemove() + - fixed unused parameters in TeamSpeak3_Node_Server::channelFileRename() + * TeamSpeak3_Helper_String::contains() now supports RegExp patterns and is + case-insensitive + * lists generated by TeamSpeak3_Node_Server::channelFileList() are now sorted + by filename + * TeamSpeak3_Viewer_Html interface now calculates server uptime correctly + * changed examples to include new features + * internal release only + +=== Release 1.0.25-beta - 1 Apr 2010 === + ! upgrading your servers to 3.0.0-beta21 (build >= 10608) is mandatory + + added TeamSpeak3_Exception::registerCustomMessage() + + added TeamSpeak3_Exception::unregisterCustomMessage() + + added TeamSpeak3_Helper_Convert::groupType() + + added TeamSpeak3_Helper_Convert::permissionType() + + added TeamSpeak3_Helper_Convert::password() + + added TeamSpeak3_Helper_String::filterAlnum() + + added TeamSpeak3_Helper_String::filterAlpha() + + added TeamSpeak3_Helper_String::filterDigits() + + added constants for different group auto-update types + - changed invalid variable name in TeamSpeak3_Adapter_ServerQuery::request() + * TeamSpeak3_Adapter_FileTransfer::download() now supports fpassthru() to + write the results to the PHP output buffer which can be very useful when + transferring large files + * TeamSpeak3_Helper_Convert::seconds() now supports custom output format + * internal release only + +=== Release 1.0.24-beta - 24 Feb 2010 === + ! upgrading your servers to 3.0.0-beta19 (build >= 10368) is mandatory + + added TeamSpeak3_Node_Abstract::iconIsLocal() + + added TeamSpeak3_Node_Abstract::iconGetName() + + added TeamSpeak3_Node_Server::iconDownload() + + added TeamSpeak3_Node_Server::iconUpload() + + added TeamSpeak3_Node_Channel::iconDownload() + + added TeamSpeak3_Node_Client::iconDownload() + + added TeamSpeak3_Node_Servergroup::iconDownload() + + added TeamSpeak3_Node_Channelgroup::iconDownload() + * TeamSpeak3_Transport_TCP methods will now read and write in small packets + of 4096 bytes + * TeamSpeak3_Node_Server snapshot methods now support three different export + formats (SNAPSHOT_STRING, SNAPSHOT_BASE64, SNAPSHOT_HEXDEC) + * internal release only + +=== Release 1.0.23-beta - 28 Jan 2010 === + ! upgrading your servers to 3.0.0-beta17 (build >= 10036) is mandatory + + added TeamSpeak3_Node_Server::customInfo() + + added TeamSpeak3_Node_Client::customInfo() + + added priority speaker information to TeamSpeak3_Viewer_Html interface + * changed fetch mode from toAssocArray() to toArray() in several methods + * spl_autoload_register() is only called once even if TeamSpeak3::init() is + called multiple times + - changed invalid variable name in TeamSpeak3_Node_Server::clientGetByUid() + - changed invalid description for TeamSpeak3_Node_Client::remServerGroup() + +=== Release 1.0.22-beta - 18 Jan 2010 === + ! library now requires PHP version 5.2.1 or newer + ! upgrading your servers to 3.0.0-beta13 (build >= 9802) is mandatory + + added TeamSpeak3_Adapter_Abstract::getProfiler() + + added TeamSpeak3_Adapter_ServerQuery::getQueryCount() + + added TeamSpeak3_Adapter_ServerQuery::getQueryRuntime() + + added TeamSpeak3_Node_Server::customSearch() + * adapter classes will now start their own timer for profiling + * added "-times" to default clientList() parameters + * added optional command parameters "tokendescription" and "tokencustomset" + to TeamSpeak3_Node_Server::tokenCreate() + - fixed error exception in TeamSpeak3_Adapter_ServerQuery destructor + - removed undefined variable in TeamSpeak3_Node_Server::channelFileRename() + +=== Release 1.0.21-beta - 10 Jan 2010 === + ! all thrown TeamSpeak 3 Server error exceptions are now of objects of type + TeamSpeak3_Adapter_ServerQuery_Exception + ! TeamSpeak3_Node_Abstract::offsetSet() is now a wrapper for the modify() + method to allow direct modifications of node properties + + added TeamSpeak3_Helper_Convert::codec() + + added TeamSpeak3_Node_Abstract::toArray() + + added TeamSpeak3_Node_Abstract::toString() + + added TeamSpeak3_Node_Server::clientCount() + + added TeamSpeak3_Node_Server::clientListDb() + + added TeamSpeak3_Node_Server::clientFind() + + added TeamSpeak3_Node_Server::clientFindDb() + + added TeamSpeak3_Node_Host::setPredefinedQueryName() + + added TeamSpeak3_Node_Host::setExcludeQueryClients() + + added optional "timeout" parameter to TeamSpeak3::factory() + + added optional "nickname" parameter to TeamSpeak3::factory() + * error exception messages thrown by TeamSpeak3_Transport_TCP::connect() + will be UTF-8 encoded + * set some fancy titles in TeamSpeak3_Viewer_Html interface + * tweaked some of the implemented RecursiveIterator methods + * using strtr() instead of str_replace() in TeamSpeak3_Helper_String::arg() + * isset($node) no longer queries node information automatically + - fixed error exception when trying to start profiler timer twice + - fixed invalid node list format after reset + +=== Release 1.0.20-beta - 08 Jan 2010 === + ! factory URI now supports #no_query_clients fragment to remove ServerQuery + clients from client lists and viewers + + added TeamSpeak3_Helper_Profiler + + added TeamSpeak3_Helper_Convert + - fixed unnessesary command requests on empty list caches + - fixed recursion bug on empty virtual servers + +=== Release 1.0.19-beta - 07 Jan 2010 === + + added TeamSpeak3_Adapter_Abstract::getTransportHost() + + added TeamSpeak3_Adapter_Abstract::getTransportPort() + + added TeamSpeak3_Node_Host::getAdapterHost() + + added TeamSpeak3_Node_Host::getAdapterPort() + + added TeamSpeak3_Node_Server::snapshotCreate() + + added TeamSpeak3_Node_Server::snapshotDeploy() + + added TeamSpeak3_Node_Server::selfPermOverview() + * given parameter strings will be UTF-8 encoded while commands are prepared + * TeamSpeak3_Node_Host::__toString() now returns hostname or IPv4 address + instead of "TeamSpeak 3 Host" + * public beta release + +=== Release 1.0.18-beta - 06 Jan 2010 === + ! added code examples + ! added online docs (http://docs.planetteamspeak.com/ts3/php/framework/) + + added TeamSpeak3_Node_Client::avatarGetName() + + added TeamSpeak3_Node_Client::avatarDownload() + + added TeamSpeak3_Node_Client::permOverview() + * TeamSpeak3_Viewer_Html constructor now supports custom image paths + * whoami cache will be updated when creating temporary channels + * whoami cache will be updated when moving own client + - fixed "already member of channel" issue when sending two text messages to + the same channel + - ServerQuery adapter no longer tries to quit in desctructor when transport + is not connected + - replaced invalid data types in method descriptions + +=== Release 1.0.17-beta - 05 Jan 2010 === + * internal beta release diff --git a/lib/docs/html/TeamSpeak.png b/lib/docs/html/TeamSpeak.png new file mode 100644 index 0000000000000000000000000000000000000000..32b7b0c253af95fee7a871dbdfd63feda8c511d6 GIT binary patch literal 7393 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 T6cxxz00000NkvXXu0mjfF9aAc literal 0 HcmV?d00001 diff --git a/lib/docs/html/_adapter_2_abstract_8php.html b/lib/docs/html/_adapter_2_abstract_8php.html new file mode 100644 index 0000000..ea449c3 --- /dev/null +++ b/lib/docs/html/_adapter_2_abstract_8php.html @@ -0,0 +1,156 @@ + + + + + + +TeamSpeak 3 PHP Framework: TeamSpeak3/Adapter/Abstract.php File Reference + + + + + + + + + + + + + +
+
+ + + + + + + +
+
TeamSpeak 3 PHP Framework +  1.1.23 +
+
Copyright © Planet TeamSpeak. All rights reserved.
+
+
+ + + + + +
+
+ +
+
+
+ +
+ + + + +
+ +
+ +
+ +
+
Abstract.php File Reference
+
+
+ +

TeamSpeak 3 PHP Framework. +More...

+ +

Go to the source code of this file.

+ + + + + +

+Classes

class  TeamSpeak3_Adapter_Abstract
 Provides low-level methods for concrete adapters to communicate with a TeamSpeak 3 Server. More...
 
+ + + +

+Namespaces

 TeamSpeak3
 
+ + + +

+Constant Groups

 TeamSpeak3
 
+

Detailed Description

+

TeamSpeak 3 PHP Framework.

+
Id:
Abstract.php 10/11/2013 11:35:21 scp
+

This program is free software: you can redistribute it and/or modify it under the terms of the GNU General Public License as published by the Free Software Foundation, either version 3 of the License, or (at your option) any later version.

+

This program is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License for more details.

+

You should have received a copy of the GNU General Public License along with this program. If not, see http://www.gnu.org/licenses/.

+ +

Definition in file Abstract.php.

+
+
+ + + + diff --git a/lib/docs/html/_adapter_2_abstract_8php_source.html b/lib/docs/html/_adapter_2_abstract_8php_source.html new file mode 100644 index 0000000..7508620 --- /dev/null +++ b/lib/docs/html/_adapter_2_abstract_8php_source.html @@ -0,0 +1,282 @@ + + + + + + +TeamSpeak 3 PHP Framework: TeamSpeak3/Adapter/Abstract.php Source File + + + + + + + + + + + + + +
+
+ + + + + + + +
+
TeamSpeak 3 PHP Framework +  1.1.23 +
+
Copyright © Planet TeamSpeak. All rights reserved.
+
+
+ + + + + +
+
+ +
+
+
+ +
+ + + + +
+ +
+ +
+
+
Abstract.php
+
+
+Go to the documentation of this file.
1 <?php
+
2 
+
3 /**
+
4  * @file
+
5  * TeamSpeak 3 PHP Framework
+
6  *
+
7  * $Id: Abstract.php 10/11/2013 11:35:21 scp@orilla $
+
8  *
+
9  * This program is free software: you can redistribute it and/or modify
+
10  * it under the terms of the GNU General Public License as published by
+
11  * the Free Software Foundation, either version 3 of the License, or
+
12  * (at your option) any later version.
+
13  *
+
14  * This program is distributed in the hope that it will be useful,
+
15  * but WITHOUT ANY WARRANTY; without even the implied warranty of
+
16  * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+
17  * GNU General Public License for more details.
+
18  *
+
19  * You should have received a copy of the GNU General Public License
+
20  * along with this program. If not, see <http://www.gnu.org/licenses/>.
+
21  *
+
22  * @package TeamSpeak3
+
23  * @version 1.1.23
+
24  * @author Sven 'ScP' Paulsen
+
25  * @copyright Copyright (c) 2010 by Planet TeamSpeak. All rights reserved.
+
26  */
+
27 
+
28 /**
+
29  * @class TeamSpeak3_Adapter_Abstract
+
30  * @brief Provides low-level methods for concrete adapters to communicate with a TeamSpeak 3 Server.
+
31  */
+ +
33 {
+
34  /**
+
35  * Stores user-provided options.
+
36  *
+
37  * @var array
+
38  */
+
39  protected $options = null;
+
40 
+
41  /**
+
42  * Stores an TeamSpeak3_Transport_Abstract object.
+
43  *
+
44  * @var TeamSpeak3_Transport_Abstract
+
45  */
+
46  protected $transport = null;
+
47 
+
48  /**
+
49  * The TeamSpeak3_Adapter_Abstract constructor.
+
50  *
+
51  * @param array $options
+
52  * @return TeamSpeak3_Adapter_Abstract
+
53  */
+
54  public function __construct(array $options)
+
55  {
+
56  $this->options = $options;
+
57 
+
58  if($this->transport === null)
+
59  {
+
60  $this->syn();
+
61  }
+
62  }
+
63 
+
64  /**
+
65  * The TeamSpeak3_Adapter_Abstract destructor.
+
66  *
+
67  * @return void
+
68  */
+
69  abstract public function __destruct();
+
70 
+
71  /**
+
72  * Connects the TeamSpeak3_Transport_Abstract object and performs initial actions on the remote
+
73  * server.
+
74  *
+
75  * @throws TeamSpeak3_Adapter_Exception
+
76  * @return void
+
77  */
+
78  abstract protected function syn();
+
79 
+
80  /**
+
81  * Commit pending data.
+
82  *
+
83  * @return array
+
84  */
+
85  public function __sleep()
+
86  {
+
87  return array("options");
+
88  }
+
89 
+
90  /**
+
91  * Reconnects to the remote server.
+
92  *
+
93  * @return void
+
94  */
+
95  public function __wakeup()
+
96  {
+
97  $this->syn();
+
98  }
+
99 
+
100  /**
+
101  * Returns the profiler timer used for this connection adapter.
+
102  *
+
103  * @return TeamSpeak3_Helper_Profiler_Timer
+
104  */
+
105  public function getProfiler()
+
106  {
+
107  return TeamSpeak3_Helper_Profiler::get(spl_object_hash($this));
+
108  }
+
109 
+
110  /**
+
111  * Returns the transport object used for this connection adapter.
+
112  *
+
113  * @return TeamSpeak3_Transport_Abstract
+
114  */
+
115  public function getTransport()
+
116  {
+
117  return $this->transport;
+
118  }
+
119 
+
120  /**
+
121  * Loads the transport object object used for the connection adapter and passes a given set
+
122  * of options.
+
123  *
+
124  * @param array $options
+
125  * @param string $transport
+
126  * @throws TeamSpeak3_Adapter_Exception
+
127  * @return void
+
128  */
+
129  protected function initTransport($options, $transport = "TeamSpeak3_Transport_TCP")
+
130  {
+
131  if(!is_array($options))
+
132  {
+
133  throw new TeamSpeak3_Adapter_Exception("transport parameters must provided in an array");
+
134  }
+
135 
+
136  $this->transport = new $transport($options);
+
137  }
+
138 
+
139  /**
+
140  * Returns the hostname or IPv4 address the underlying TeamSpeak3_Transport_Abstract object
+
141  * is connected to.
+
142  *
+
143  * @return string
+
144  */
+
145  public function getTransportHost()
+
146  {
+
147  return $this->getTransport()->getConfig("host", "0.0.0.0");
+
148  }
+
149 
+
150  /**
+
151  * Returns the port number of the server the underlying TeamSpeak3_Transport_Abstract object
+
152  * is connected to.
+
153  *
+
154  * @return string
+
155  */
+
156  public function getTransportPort()
+
157  {
+
158  return $this->getTransport()->getConfig("port", "0");
+
159  }
+
160 }
+
+
+ + + + diff --git a/lib/docs/html/_adapter_2_blacklist_2_exception_8php.html b/lib/docs/html/_adapter_2_blacklist_2_exception_8php.html new file mode 100644 index 0000000..cf91b93 --- /dev/null +++ b/lib/docs/html/_adapter_2_blacklist_2_exception_8php.html @@ -0,0 +1,156 @@ + + + + + + +TeamSpeak 3 PHP Framework: TeamSpeak3/Adapter/Blacklist/Exception.php File Reference + + + + + + + + + + + + + +
+
+ + + + + + + +
+
TeamSpeak 3 PHP Framework +  1.1.23 +
+
Copyright © Planet TeamSpeak. All rights reserved.
+
+
+ + + + + +
+
+ +
+
+
+ +
+ + + + +
+ +
+ +
+ +
+
Exception.php File Reference
+
+
+ +

TeamSpeak 3 PHP Framework. +More...

+ +

Go to the source code of this file.

+ + + + + +

+Classes

class  TeamSpeak3_Adapter_Blacklist_Exception
 Enhanced exception class for TeamSpeak3_Adapter_Blacklist objects. More...
 
+ + + +

+Namespaces

 TeamSpeak3
 
+ + + +

+Constant Groups

 TeamSpeak3
 
+

Detailed Description

+

TeamSpeak 3 PHP Framework.

+
Id:
Exception.php 10/11/2013 11:35:21 scp
+

This program is free software: you can redistribute it and/or modify it under the terms of the GNU General Public License as published by the Free Software Foundation, either version 3 of the License, or (at your option) any later version.

+

This program is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License for more details.

+

You should have received a copy of the GNU General Public License along with this program. If not, see http://www.gnu.org/licenses/.

+ +

Definition in file Exception.php.

+
+
+ + + + diff --git a/lib/docs/html/_adapter_2_blacklist_2_exception_8php_source.html b/lib/docs/html/_adapter_2_blacklist_2_exception_8php_source.html new file mode 100644 index 0000000..e3d6db5 --- /dev/null +++ b/lib/docs/html/_adapter_2_blacklist_2_exception_8php_source.html @@ -0,0 +1,154 @@ + + + + + + +TeamSpeak 3 PHP Framework: TeamSpeak3/Adapter/Blacklist/Exception.php Source File + + + + + + + + + + + + + +
+
+ + + + + + + +
+
TeamSpeak 3 PHP Framework +  1.1.23 +
+
Copyright © Planet TeamSpeak. All rights reserved.
+
+
+ + + + + +
+
+ +
+
+
+ +
+ + + + +
+ +
+ +
+
+
Exception.php
+
+
+Go to the documentation of this file.
1 <?php
+
2 
+
3 /**
+
4  * @file
+
5  * TeamSpeak 3 PHP Framework
+
6  *
+
7  * $Id: Exception.php 10/11/2013 11:35:21 scp@orilla $
+
8  *
+
9  * This program is free software: you can redistribute it and/or modify
+
10  * it under the terms of the GNU General Public License as published by
+
11  * the Free Software Foundation, either version 3 of the License, or
+
12  * (at your option) any later version.
+
13  *
+
14  * This program is distributed in the hope that it will be useful,
+
15  * but WITHOUT ANY WARRANTY; without even the implied warranty of
+
16  * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+
17  * GNU General Public License for more details.
+
18  *
+
19  * You should have received a copy of the GNU General Public License
+
20  * along with this program. If not, see <http://www.gnu.org/licenses/>.
+
21  *
+
22  * @package TeamSpeak3
+
23  * @version 1.1.23
+
24  * @author Sven 'ScP' Paulsen
+
25  * @copyright Copyright (c) 2010 by Planet TeamSpeak. All rights reserved.
+
26  */
+
27 
+
28 /**
+
29  * @class TeamSpeak3_Adapter_Blacklist_Exception
+
30  * @brief Enhanced exception class for TeamSpeak3_Adapter_Blacklist objects.
+
31  */
+ +
+
+ + + + diff --git a/lib/docs/html/_adapter_2_exception_8php.html b/lib/docs/html/_adapter_2_exception_8php.html new file mode 100644 index 0000000..103164d --- /dev/null +++ b/lib/docs/html/_adapter_2_exception_8php.html @@ -0,0 +1,156 @@ + + + + + + +TeamSpeak 3 PHP Framework: TeamSpeak3/Adapter/Exception.php File Reference + + + + + + + + + + + + + +
+
+ + + + + + + +
+
TeamSpeak 3 PHP Framework +  1.1.23 +
+
Copyright © Planet TeamSpeak. All rights reserved.
+
+
+ + + + + +
+
+ +
+
+
+ +
+ + + + +
+ +
+ +
+ +
+
Exception.php File Reference
+
+
+ +

TeamSpeak 3 PHP Framework. +More...

+ +

Go to the source code of this file.

+ + + + + +

+Classes

class  TeamSpeak3_Adapter_Exception
 Enhanced exception class for TeamSpeak3_Adapter_Abstract objects. More...
 
+ + + +

+Namespaces

 TeamSpeak3
 
+ + + +

+Constant Groups

 TeamSpeak3
 
+

Detailed Description

+

TeamSpeak 3 PHP Framework.

+
Id:
Exception.php 10/11/2013 11:35:21 scp
+

This program is free software: you can redistribute it and/or modify it under the terms of the GNU General Public License as published by the Free Software Foundation, either version 3 of the License, or (at your option) any later version.

+

This program is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License for more details.

+

You should have received a copy of the GNU General Public License along with this program. If not, see http://www.gnu.org/licenses/.

+ +

Definition in file Exception.php.

+
+
+ + + + diff --git a/lib/docs/html/_adapter_2_exception_8php_source.html b/lib/docs/html/_adapter_2_exception_8php_source.html new file mode 100644 index 0000000..4d5a351 --- /dev/null +++ b/lib/docs/html/_adapter_2_exception_8php_source.html @@ -0,0 +1,154 @@ + + + + + + +TeamSpeak 3 PHP Framework: TeamSpeak3/Adapter/Exception.php Source File + + + + + + + + + + + + + +
+
+ + + + + + + +
+
TeamSpeak 3 PHP Framework +  1.1.23 +
+
Copyright © Planet TeamSpeak. All rights reserved.
+
+
+ + + + + +
+
+ +
+
+
+ +
+ + + + +
+ +
+ +
+
+
Exception.php
+
+
+Go to the documentation of this file.
1 <?php
+
2 
+
3 /**
+
4  * @file
+
5  * TeamSpeak 3 PHP Framework
+
6  *
+
7  * $Id: Exception.php 10/11/2013 11:35:21 scp@orilla $
+
8  *
+
9  * This program is free software: you can redistribute it and/or modify
+
10  * it under the terms of the GNU General Public License as published by
+
11  * the Free Software Foundation, either version 3 of the License, or
+
12  * (at your option) any later version.
+
13  *
+
14  * This program is distributed in the hope that it will be useful,
+
15  * but WITHOUT ANY WARRANTY; without even the implied warranty of
+
16  * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+
17  * GNU General Public License for more details.
+
18  *
+
19  * You should have received a copy of the GNU General Public License
+
20  * along with this program. If not, see <http://www.gnu.org/licenses/>.
+
21  *
+
22  * @package TeamSpeak3
+
23  * @version 1.1.23
+
24  * @author Sven 'ScP' Paulsen
+
25  * @copyright Copyright (c) 2010 by Planet TeamSpeak. All rights reserved.
+
26  */
+
27 
+
28 /**
+
29  * @class TeamSpeak3_Adapter_Exception
+
30  * @brief Enhanced exception class for TeamSpeak3_Adapter_Abstract objects.
+
31  */
+ +
+
+ + + + diff --git a/lib/docs/html/_adapter_2_file_transfer_2_exception_8php.html b/lib/docs/html/_adapter_2_file_transfer_2_exception_8php.html new file mode 100644 index 0000000..e35ca9f --- /dev/null +++ b/lib/docs/html/_adapter_2_file_transfer_2_exception_8php.html @@ -0,0 +1,156 @@ + + + + + + +TeamSpeak 3 PHP Framework: TeamSpeak3/Adapter/FileTransfer/Exception.php File Reference + + + + + + + + + + + + + +
+
+ + + + + + + +
+
TeamSpeak 3 PHP Framework +  1.1.23 +
+
Copyright © Planet TeamSpeak. All rights reserved.
+
+
+ + + + + +
+
+ +
+
+
+ +
+ + + + +
+ +
+ +
+ +
+
Exception.php File Reference
+
+
+ +

TeamSpeak 3 PHP Framework. +More...

+ +

Go to the source code of this file.

+ + + + + +

+Classes

class  TeamSpeak3_Adapter_FileTransfer_Exception
 Enhanced exception class for TeamSpeak3_Adapter_FileTransfer objects. More...
 
+ + + +

+Namespaces

 TeamSpeak3
 
+ + + +

+Constant Groups

 TeamSpeak3
 
+

Detailed Description

+

TeamSpeak 3 PHP Framework.

+
Id:
Exception.php 10/11/2013 11:35:21 scp
+

This program is free software: you can redistribute it and/or modify it under the terms of the GNU General Public License as published by the Free Software Foundation, either version 3 of the License, or (at your option) any later version.

+

This program is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License for more details.

+

You should have received a copy of the GNU General Public License along with this program. If not, see http://www.gnu.org/licenses/.

+ +

Definition in file Exception.php.

+
+
+ + + + diff --git a/lib/docs/html/_adapter_2_file_transfer_2_exception_8php_source.html b/lib/docs/html/_adapter_2_file_transfer_2_exception_8php_source.html new file mode 100644 index 0000000..42d04fc --- /dev/null +++ b/lib/docs/html/_adapter_2_file_transfer_2_exception_8php_source.html @@ -0,0 +1,154 @@ + + + + + + +TeamSpeak 3 PHP Framework: TeamSpeak3/Adapter/FileTransfer/Exception.php Source File + + + + + + + + + + + + + +
+
+ + + + + + + +
+
TeamSpeak 3 PHP Framework +  1.1.23 +
+
Copyright © Planet TeamSpeak. All rights reserved.
+
+
+ + + + + +
+
+ +
+
+
+ +
+ + + + +
+ +
+ +
+
+
Exception.php
+
+
+Go to the documentation of this file.
1 <?php
+
2 
+
3 /**
+
4  * @file
+
5  * TeamSpeak 3 PHP Framework
+
6  *
+
7  * $Id: Exception.php 10/11/2013 11:35:21 scp@orilla $
+
8  *
+
9  * This program is free software: you can redistribute it and/or modify
+
10  * it under the terms of the GNU General Public License as published by
+
11  * the Free Software Foundation, either version 3 of the License, or
+
12  * (at your option) any later version.
+
13  *
+
14  * This program is distributed in the hope that it will be useful,
+
15  * but WITHOUT ANY WARRANTY; without even the implied warranty of
+
16  * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+
17  * GNU General Public License for more details.
+
18  *
+
19  * You should have received a copy of the GNU General Public License
+
20  * along with this program. If not, see <http://www.gnu.org/licenses/>.
+
21  *
+
22  * @package TeamSpeak3
+
23  * @version 1.1.23
+
24  * @author Sven 'ScP' Paulsen
+
25  * @copyright Copyright (c) 2010 by Planet TeamSpeak. All rights reserved.
+
26  */
+
27 
+
28 /**
+
29  * @class TeamSpeak3_Adapter_FileTransfer_Exception
+
30  * @brief Enhanced exception class for TeamSpeak3_Adapter_FileTransfer objects.
+
31  */
+ +
+
+ + + + diff --git a/lib/docs/html/_adapter_2_server_query_2_exception_8php.html b/lib/docs/html/_adapter_2_server_query_2_exception_8php.html new file mode 100644 index 0000000..fb80e0a --- /dev/null +++ b/lib/docs/html/_adapter_2_server_query_2_exception_8php.html @@ -0,0 +1,156 @@ + + + + + + +TeamSpeak 3 PHP Framework: TeamSpeak3/Adapter/ServerQuery/Exception.php File Reference + + + + + + + + + + + + + +
+
+ + + + + + + +
+
TeamSpeak 3 PHP Framework +  1.1.23 +
+
Copyright © Planet TeamSpeak. All rights reserved.
+
+
+ + + + + +
+
+ +
+
+
+ +
+ + + + +
+ +
+ +
+ +
+
Exception.php File Reference
+
+
+ +

TeamSpeak 3 PHP Framework. +More...

+ +

Go to the source code of this file.

+ + + + + +

+Classes

class  TeamSpeak3_Adapter_ServerQuery_Exception
 Enhanced exception class for TeamSpeak3_Adapter_ServerQuery objects. More...
 
+ + + +

+Namespaces

 TeamSpeak3
 
+ + + +

+Constant Groups

 TeamSpeak3
 
+

Detailed Description

+

TeamSpeak 3 PHP Framework.

+
Id:
Exception.php 10/11/2013 11:35:21 scp
+

This program is free software: you can redistribute it and/or modify it under the terms of the GNU General Public License as published by the Free Software Foundation, either version 3 of the License, or (at your option) any later version.

+

This program is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License for more details.

+

You should have received a copy of the GNU General Public License along with this program. If not, see http://www.gnu.org/licenses/.

+ +

Definition in file Exception.php.

+
+
+ + + + diff --git a/lib/docs/html/_adapter_2_server_query_2_exception_8php_source.html b/lib/docs/html/_adapter_2_server_query_2_exception_8php_source.html new file mode 100644 index 0000000..0f1546f --- /dev/null +++ b/lib/docs/html/_adapter_2_server_query_2_exception_8php_source.html @@ -0,0 +1,154 @@ + + + + + + +TeamSpeak 3 PHP Framework: TeamSpeak3/Adapter/ServerQuery/Exception.php Source File + + + + + + + + + + + + + +
+
+ + + + + + + +
+
TeamSpeak 3 PHP Framework +  1.1.23 +
+
Copyright © Planet TeamSpeak. All rights reserved.
+
+
+ + + + + +
+
+ +
+
+
+ +
+ + + + +
+ +
+ +
+
+
Exception.php
+
+
+Go to the documentation of this file.
1 <?php
+
2 
+
3 /**
+
4  * @file
+
5  * TeamSpeak 3 PHP Framework
+
6  *
+
7  * $Id: Exception.php 10/11/2013 11:35:21 scp@orilla $
+
8  *
+
9  * This program is free software: you can redistribute it and/or modify
+
10  * it under the terms of the GNU General Public License as published by
+
11  * the Free Software Foundation, either version 3 of the License, or
+
12  * (at your option) any later version.
+
13  *
+
14  * This program is distributed in the hope that it will be useful,
+
15  * but WITHOUT ANY WARRANTY; without even the implied warranty of
+
16  * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+
17  * GNU General Public License for more details.
+
18  *
+
19  * You should have received a copy of the GNU General Public License
+
20  * along with this program. If not, see <http://www.gnu.org/licenses/>.
+
21  *
+
22  * @package TeamSpeak3
+
23  * @version 1.1.23
+
24  * @author Sven 'ScP' Paulsen
+
25  * @copyright Copyright (c) 2010 by Planet TeamSpeak. All rights reserved.
+
26  */
+
27 
+
28 /**
+
29  * @class TeamSpeak3_Adapter_ServerQuery_Exception
+
30  * @brief Enhanced exception class for TeamSpeak3_Adapter_ServerQuery objects.
+
31  */
+ +
+
+ + + + diff --git a/lib/docs/html/_adapter_2_t_s_d_n_s_2_exception_8php.html b/lib/docs/html/_adapter_2_t_s_d_n_s_2_exception_8php.html new file mode 100644 index 0000000..2043be4 --- /dev/null +++ b/lib/docs/html/_adapter_2_t_s_d_n_s_2_exception_8php.html @@ -0,0 +1,156 @@ + + + + + + +TeamSpeak 3 PHP Framework: TeamSpeak3/Adapter/TSDNS/Exception.php File Reference + + + + + + + + + + + + + +
+
+ + + + + + + +
+
TeamSpeak 3 PHP Framework +  1.1.23 +
+
Copyright © Planet TeamSpeak. All rights reserved.
+
+
+ + + + + +
+
+ +
+
+
+ +
+ + + + +
+ +
+ +
+ +
+
Exception.php File Reference
+
+
+ +

TeamSpeak 3 PHP Framework. +More...

+ +

Go to the source code of this file.

+ + + + + +

+Classes

class  TeamSpeak3_Adapter_TSDNS_Exception
 Enhanced exception class for TeamSpeak3_Adapter_TSDNS objects. More...
 
+ + + +

+Namespaces

 TeamSpeak3
 
+ + + +

+Constant Groups

 TeamSpeak3
 
+

Detailed Description

+

TeamSpeak 3 PHP Framework.

+
Id:
Exception.php 10/11/2013 11:35:21 scp
+

This program is free software: you can redistribute it and/or modify it under the terms of the GNU General Public License as published by the Free Software Foundation, either version 3 of the License, or (at your option) any later version.

+

This program is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License for more details.

+

You should have received a copy of the GNU General Public License along with this program. If not, see http://www.gnu.org/licenses/.

+ +

Definition in file Exception.php.

+
+
+ + + + diff --git a/lib/docs/html/_adapter_2_t_s_d_n_s_2_exception_8php_source.html b/lib/docs/html/_adapter_2_t_s_d_n_s_2_exception_8php_source.html new file mode 100644 index 0000000..5e1579f --- /dev/null +++ b/lib/docs/html/_adapter_2_t_s_d_n_s_2_exception_8php_source.html @@ -0,0 +1,154 @@ + + + + + + +TeamSpeak 3 PHP Framework: TeamSpeak3/Adapter/TSDNS/Exception.php Source File + + + + + + + + + + + + + +
+
+ + + + + + + +
+
TeamSpeak 3 PHP Framework +  1.1.23 +
+
Copyright © Planet TeamSpeak. All rights reserved.
+
+
+ + + + + +
+
+ +
+
+
+ +
+ + + + +
+ +
+ +
+
+
Exception.php
+
+
+Go to the documentation of this file.
1 <?php
+
2 
+
3 /**
+
4  * @file
+
5  * TeamSpeak 3 PHP Framework
+
6  *
+
7  * $Id: Exception.php 10/11/2013 11:35:21 scp@orilla $
+
8  *
+
9  * This program is free software: you can redistribute it and/or modify
+
10  * it under the terms of the GNU General Public License as published by
+
11  * the Free Software Foundation, either version 3 of the License, or
+
12  * (at your option) any later version.
+
13  *
+
14  * This program is distributed in the hope that it will be useful,
+
15  * but WITHOUT ANY WARRANTY; without even the implied warranty of
+
16  * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+
17  * GNU General Public License for more details.
+
18  *
+
19  * You should have received a copy of the GNU General Public License
+
20  * along with this program. If not, see <http://www.gnu.org/licenses/>.
+
21  *
+
22  * @package TeamSpeak3
+
23  * @version 1.1.23
+
24  * @author Sven 'ScP' Paulsen
+
25  * @copyright Copyright (c) 2010 by Planet TeamSpeak. All rights reserved.
+
26  */
+
27 
+
28 /**
+
29  * @class TeamSpeak3_Adapter_TSDNS_Exception
+
30  * @brief Enhanced exception class for TeamSpeak3_Adapter_TSDNS objects.
+
31  */
+ +
+
+ + + + diff --git a/lib/docs/html/_adapter_2_update_2_exception_8php.html b/lib/docs/html/_adapter_2_update_2_exception_8php.html new file mode 100644 index 0000000..f63a269 --- /dev/null +++ b/lib/docs/html/_adapter_2_update_2_exception_8php.html @@ -0,0 +1,156 @@ + + + + + + +TeamSpeak 3 PHP Framework: TeamSpeak3/Adapter/Update/Exception.php File Reference + + + + + + + + + + + + + +
+
+ + + + + + + +
+
TeamSpeak 3 PHP Framework +  1.1.23 +
+
Copyright © Planet TeamSpeak. All rights reserved.
+
+
+ + + + + +
+
+ +
+
+
+ +
+ + + + +
+ +
+ +
+ +
+
Exception.php File Reference
+
+
+ +

TeamSpeak 3 PHP Framework. +More...

+ +

Go to the source code of this file.

+ + + + + +

+Classes

class  TeamSpeak3_Adapter_Update_Exception
 Enhanced exception class for TeamSpeak3_Adapter_Update objects. More...
 
+ + + +

+Namespaces

 TeamSpeak3
 
+ + + +

+Constant Groups

 TeamSpeak3
 
+

Detailed Description

+

TeamSpeak 3 PHP Framework.

+
Id:
Exception.php 10/11/2013 11:35:21 scp
+

This program is free software: you can redistribute it and/or modify it under the terms of the GNU General Public License as published by the Free Software Foundation, either version 3 of the License, or (at your option) any later version.

+

This program is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License for more details.

+

You should have received a copy of the GNU General Public License along with this program. If not, see http://www.gnu.org/licenses/.

+ +

Definition in file Exception.php.

+
+
+ + + + diff --git a/lib/docs/html/_adapter_2_update_2_exception_8php_source.html b/lib/docs/html/_adapter_2_update_2_exception_8php_source.html new file mode 100644 index 0000000..75c8185 --- /dev/null +++ b/lib/docs/html/_adapter_2_update_2_exception_8php_source.html @@ -0,0 +1,154 @@ + + + + + + +TeamSpeak 3 PHP Framework: TeamSpeak3/Adapter/Update/Exception.php Source File + + + + + + + + + + + + + +
+
+ + + + + + + +
+
TeamSpeak 3 PHP Framework +  1.1.23 +
+
Copyright © Planet TeamSpeak. All rights reserved.
+
+
+ + + + + +
+
+ +
+
+
+ +
+ + + + +
+ +
+ +
+
+
Exception.php
+
+
+Go to the documentation of this file.
1 <?php
+
2 
+
3 /**
+
4  * @file
+
5  * TeamSpeak 3 PHP Framework
+
6  *
+
7  * $Id: Exception.php 10/11/2013 11:35:21 scp@orilla $
+
8  *
+
9  * This program is free software: you can redistribute it and/or modify
+
10  * it under the terms of the GNU General Public License as published by
+
11  * the Free Software Foundation, either version 3 of the License, or
+
12  * (at your option) any later version.
+
13  *
+
14  * This program is distributed in the hope that it will be useful,
+
15  * but WITHOUT ANY WARRANTY; without even the implied warranty of
+
16  * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+
17  * GNU General Public License for more details.
+
18  *
+
19  * You should have received a copy of the GNU General Public License
+
20  * along with this program. If not, see <http://www.gnu.org/licenses/>.
+
21  *
+
22  * @package TeamSpeak3
+
23  * @version 1.1.23
+
24  * @author Sven 'ScP' Paulsen
+
25  * @copyright Copyright (c) 2010 by Planet TeamSpeak. All rights reserved.
+
26  */
+
27 
+
28 /**
+
29  * @class TeamSpeak3_Adapter_Update_Exception
+
30  * @brief Enhanced exception class for TeamSpeak3_Adapter_Update objects.
+
31  */
+ +
+
+ + + + diff --git a/lib/docs/html/_blacklist_8php.html b/lib/docs/html/_blacklist_8php.html new file mode 100644 index 0000000..f164117 --- /dev/null +++ b/lib/docs/html/_blacklist_8php.html @@ -0,0 +1,156 @@ + + + + + + +TeamSpeak 3 PHP Framework: TeamSpeak3/Adapter/Blacklist.php File Reference + + + + + + + + + + + + + +
+
+ + + + + + + +
+
TeamSpeak 3 PHP Framework +  1.1.23 +
+
Copyright © Planet TeamSpeak. All rights reserved.
+
+
+ + + + + +
+
+ +
+
+
+ +
+ + + + +
+ +
+ +
+ +
+
Blacklist.php File Reference
+
+
+ +

TeamSpeak 3 PHP Framework. +More...

+ +

Go to the source code of this file.

+ + + + + +

+Classes

class  TeamSpeak3_Adapter_Blacklist
 Provides methods to check if an IP address is currently blacklisted. More...
 
+ + + +

+Namespaces

 TeamSpeak3
 
+ + + +

+Constant Groups

 TeamSpeak3
 
+

Detailed Description

+

TeamSpeak 3 PHP Framework.

+
Id:
Blacklist.php 10/11/2013 11:35:21 scp
+

This program is free software: you can redistribute it and/or modify it under the terms of the GNU General Public License as published by the Free Software Foundation, either version 3 of the License, or (at your option) any later version.

+

This program is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License for more details.

+

You should have received a copy of the GNU General Public License along with this program. If not, see http://www.gnu.org/licenses/.

+ +

Definition in file Blacklist.php.

+
+
+ + + + diff --git a/lib/docs/html/_blacklist_8php_source.html b/lib/docs/html/_blacklist_8php_source.html new file mode 100644 index 0000000..e1ee5e2 --- /dev/null +++ b/lib/docs/html/_blacklist_8php_source.html @@ -0,0 +1,241 @@ + + + + + + +TeamSpeak 3 PHP Framework: TeamSpeak3/Adapter/Blacklist.php Source File + + + + + + + + + + + + + +
+
+ + + + + + + +
+
TeamSpeak 3 PHP Framework +  1.1.23 +
+
Copyright © Planet TeamSpeak. All rights reserved.
+
+
+ + + + + +
+
+ +
+
+
+ +
+ + + + +
+ +
+ +
+
+
Blacklist.php
+
+
+Go to the documentation of this file.
1 <?php
+
2 
+
3 /**
+
4  * @file
+
5  * TeamSpeak 3 PHP Framework
+
6  *
+
7  * $Id: Blacklist.php 10/11/2013 11:35:21 scp@orilla $
+
8  *
+
9  * This program is free software: you can redistribute it and/or modify
+
10  * it under the terms of the GNU General Public License as published by
+
11  * the Free Software Foundation, either version 3 of the License, or
+
12  * (at your option) any later version.
+
13  *
+
14  * This program is distributed in the hope that it will be useful,
+
15  * but WITHOUT ANY WARRANTY; without even the implied warranty of
+
16  * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+
17  * GNU General Public License for more details.
+
18  *
+
19  * You should have received a copy of the GNU General Public License
+
20  * along with this program. If not, see <http://www.gnu.org/licenses/>.
+
21  *
+
22  * @package TeamSpeak3
+
23  * @version 1.1.23
+
24  * @author Sven 'ScP' Paulsen
+
25  * @copyright Copyright (c) 2010 by Planet TeamSpeak. All rights reserved.
+
26  */
+
27 
+
28 /**
+
29  * @class TeamSpeak3_Adapter_Blacklist
+
30  * @brief Provides methods to check if an IP address is currently blacklisted.
+
31  */
+ +
33 {
+
34  /**
+
35  * The IPv4 address or FQDN of the TeamSpeak Systems update server.
+
36  *
+
37  * @var string
+
38  */
+
39  protected $default_host = "blacklist.teamspeak.com";
+
40 
+
41  /**
+
42  * The UDP port number of the TeamSpeak Systems update server.
+
43  *
+
44  * @var integer
+
45  */
+
46  protected $default_port = 17385;
+
47 
+
48  /**
+
49  * Stores an array containing the latest build numbers.
+
50  *
+
51  * @var array
+
52  */
+
53  protected $build_numbers = null;
+
54 
+
55  /**
+
56  * Connects the TeamSpeak3_Transport_Abstract object and performs initial actions on the remote
+
57  * server.
+
58  *
+
59  * @return void
+
60  */
+
61  public function syn()
+
62  {
+
63  if(!isset($this->options["host"]) || empty($this->options["host"])) $this->options["host"] = $this->default_host;
+
64  if(!isset($this->options["port"]) || empty($this->options["port"])) $this->options["port"] = $this->default_port;
+
65 
+
66  $this->initTransport($this->options, "TeamSpeak3_Transport_UDP");
+
67  $this->transport->setAdapter($this);
+
68 
+
69  TeamSpeak3_Helper_Profiler::init(spl_object_hash($this));
+
70 
+
71  TeamSpeak3_Helper_Signal::getInstance()->emit("blacklistConnected", $this);
+
72  }
+
73 
+
74  /**
+
75  * The TeamSpeak3_Adapter_Blacklist destructor.
+
76  *
+
77  * @return void
+
78  */
+
79  public function __destruct()
+
80  {
+
81  if($this->getTransport() instanceof TeamSpeak3_Transport_Abstract && $this->getTransport()->isConnected())
+
82  {
+
83  $this->getTransport()->disconnect();
+
84  }
+
85  }
+
86 
+
87  /**
+
88  * Returns TRUE if a specified $host IP address is currently blacklisted.
+
89  *
+
90  * @param string $host
+
91  * @throws TeamSpeak3_Adapter_Blacklist_Exception
+
92  * @return boolean
+
93  */
+
94  public function isBlacklisted($host)
+
95  {
+
96  if(ip2long($host) === FALSE)
+
97  {
+
98  $addr = gethostbyname($host);
+
99 
+
100  if($addr == $host)
+
101  {
+
102  throw new TeamSpeak3_Adapter_Blacklist_Exception("unable to resolve IPv4 address (" . $host . ")");
+
103  }
+
104 
+
105  $host = $addr;
+
106  }
+
107 
+
108  $this->getTransport()->send("ip4:" . $host);
+
109  $repl = $this->getTransport()->read(1);
+
110  $this->getTransport()->disconnect();
+
111 
+
112  if(!count($repl))
+
113  {
+
114  return FALSE;
+
115  }
+
116 
+
117  return ($repl->toInt()) ? FALSE : TRUE;
+
118  }
+
119 }
+
+
+ + + + diff --git a/lib/docs/html/_channel_8php.html b/lib/docs/html/_channel_8php.html new file mode 100644 index 0000000..14ba7e0 --- /dev/null +++ b/lib/docs/html/_channel_8php.html @@ -0,0 +1,156 @@ + + + + + + +TeamSpeak 3 PHP Framework: TeamSpeak3/Node/Channel.php File Reference + + + + + + + + + + + + + +
+
+ + + + + + + +
+
TeamSpeak 3 PHP Framework +  1.1.23 +
+
Copyright © Planet TeamSpeak. All rights reserved.
+
+
+ + + + + +
+
+ +
+
+
+ +
+ + + + +
+ +
+ +
+ +
+
Channel.php File Reference
+
+
+ +

TeamSpeak 3 PHP Framework. +More...

+ +

Go to the source code of this file.

+ + + + + +

+Classes

class  TeamSpeak3_Node_Channel
 Class describing a TeamSpeak 3 channel and all it's parameters. More...
 
+ + + +

+Namespaces

 TeamSpeak3
 
+ + + +

+Constant Groups

 TeamSpeak3
 
+

Detailed Description

+

TeamSpeak 3 PHP Framework.

+
Id:
Channel.php 10/11/2013 11:35:21 scp
+

This program is free software: you can redistribute it and/or modify it under the terms of the GNU General Public License as published by the Free Software Foundation, either version 3 of the License, or (at your option) any later version.

+

This program is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License for more details.

+

You should have received a copy of the GNU General Public License along with this program. If not, see http://www.gnu.org/licenses/.

+ +

Definition in file Channel.php.

+
+
+ + + + diff --git a/lib/docs/html/_channel_8php_source.html b/lib/docs/html/_channel_8php_source.html new file mode 100644 index 0000000..0149807 --- /dev/null +++ b/lib/docs/html/_channel_8php_source.html @@ -0,0 +1,710 @@ + + + + + + +TeamSpeak 3 PHP Framework: TeamSpeak3/Node/Channel.php Source File + + + + + + + + + + + + + +
+
+ + + + + + + +
+
TeamSpeak 3 PHP Framework +  1.1.23 +
+
Copyright © Planet TeamSpeak. All rights reserved.
+
+
+ + + + + +
+
+ +
+
+
+ +
+ + + + +
+ +
+ +
+
+
Channel.php
+
+
+Go to the documentation of this file.
1 <?php
+
2 
+
3 /**
+
4  * @file
+
5  * TeamSpeak 3 PHP Framework
+
6  *
+
7  * $Id: Channel.php 10/11/2013 11:35:21 scp@orilla $
+
8  *
+
9  * This program is free software: you can redistribute it and/or modify
+
10  * it under the terms of the GNU General Public License as published by
+
11  * the Free Software Foundation, either version 3 of the License, or
+
12  * (at your option) any later version.
+
13  *
+
14  * This program is distributed in the hope that it will be useful,
+
15  * but WITHOUT ANY WARRANTY; without even the implied warranty of
+
16  * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+
17  * GNU General Public License for more details.
+
18  *
+
19  * You should have received a copy of the GNU General Public License
+
20  * along with this program. If not, see <http://www.gnu.org/licenses/>.
+
21  *
+
22  * @package TeamSpeak3
+
23  * @version 1.1.23
+
24  * @author Sven 'ScP' Paulsen
+
25  * @copyright Copyright (c) 2010 by Planet TeamSpeak. All rights reserved.
+
26  */
+
27 
+
28 /**
+
29  * @class TeamSpeak3_Node_Channel
+
30  * @brief Class describing a TeamSpeak 3 channel and all it's parameters.
+
31  */
+ +
33 {
+
34  /**
+
35  * The TeamSpeak3_Node_Channel constructor.
+
36  *
+
37  * @param TeamSpeak3_Node_Server $server
+
38  * @param array $info
+
39  * @param string $index
+
40  * @throws TeamSpeak3_Adapter_ServerQuery_Exception
+
41  * @return TeamSpeak3_Node_Channel
+
42  */
+
43  public function __construct(TeamSpeak3_Node_Server $server, array $info, $index = "cid")
+
44  {
+
45  $this->parent = $server;
+
46  $this->nodeInfo = $info;
+
47 
+
48  if(!array_key_exists($index, $this->nodeInfo))
+
49  {
+
50  throw new TeamSpeak3_Adapter_ServerQuery_Exception("invalid channelID", 0x300);
+
51  }
+
52 
+
53  $this->nodeId = $this->nodeInfo[$index];
+
54  }
+
55 
+
56  /**
+
57  * Returns an array filled with TeamSpeak3_Node_Channel objects.
+
58  *
+
59  * @param array $filter
+
60  * @return array
+
61  */
+
62  public function subChannelList(array $filter = array())
+
63  {
+
64  $channels = array();
+
65 
+
66  foreach($this->getParent()->channelList() as $channel)
+
67  {
+
68  if($channel["pid"] == $this->getId())
+
69  {
+
70  $channels[$channel->getId()] = $channel;
+
71  }
+
72  }
+
73 
+
74  return $this->filterList($channels, $filter);
+
75  }
+
76 
+
77  /**
+
78  * Returns the TeamSpeak3_Node_Channel object matching the given ID.
+
79  *
+
80  * @param integer $cid
+
81  * @throws TeamSpeak3_Adapter_ServerQuery_Exception
+
82  * @return TeamSpeak3_Node_Channel
+
83  */
+
84  public function subChannelGetById($cid)
+
85  {
+
86  if(!array_key_exists((string) $cid, $this->subChannelList()))
+
87  {
+
88  throw new TeamSpeak3_Adapter_ServerQuery_Exception("invalid channelID", 0x300);
+
89  }
+
90 
+
91  return $this->channelList[(string) $cid];
+
92  }
+
93 
+
94  /**
+
95  * Returns the TeamSpeak3_Node_Channel object matching the given name.
+
96  *
+
97  * @param integer $name
+
98  * @throws TeamSpeak3_Adapter_ServerQuery_Exception
+
99  * @return TeamSpeak3_Node_Channel
+
100  */
+
101  public function subChannelGetByName($name)
+
102  {
+
103  foreach($this->subChannelList() as $channel)
+
104  {
+
105  if($channel["channel_name"] == $name) return $channel;
+
106  }
+
107 
+
108  throw new TeamSpeak3_Adapter_ServerQuery_Exception("invalid channelID", 0x300);
+
109  }
+
110 
+
111  /**
+
112  * Returns an array filled with TeamSpeak3_Node_Client objects.
+
113  *
+
114  * @param array $filter
+
115  * @return array
+
116  */
+
117  public function clientList(array $filter = array())
+
118  {
+
119  $clients = array();
+
120 
+
121  foreach($this->getParent()->clientList() as $client)
+
122  {
+
123  if($client["cid"] == $this->getId())
+
124  {
+
125  $clients[$client->getId()] = $client;
+
126  }
+
127  }
+
128 
+
129  return $this->filterList($clients, $filter);
+
130  }
+
131 
+
132  /**
+
133  * Returns the TeamSpeak3_Node_Client object matching the given ID.
+
134  *
+
135  * @param integer $clid
+
136  * @throws TeamSpeak3_Adapter_ServerQuery_Exception
+
137  * @return TeamSpeak3_Node_Client
+
138  */
+
139  public function clientGetById($clid)
+
140  {
+
141  if(!array_key_exists($clid, $this->clientList()))
+
142  {
+
143  throw new TeamSpeak3_Adapter_ServerQuery_Exception("invalid clientID", 0x200);
+
144  }
+
145 
+
146  return $this->clientList[intval($clid)];
+
147  }
+
148 
+
149  /**
+
150  * Returns the TeamSpeak3_Node_Client object matching the given name.
+
151  *
+
152  * @param integer $name
+
153  * @throws TeamSpeak3_Adapter_ServerQuery_Exception
+
154  * @return TeamSpeak3_Node_Client
+
155  */
+
156  public function clientGetByName($name)
+
157  {
+
158  foreach($this->clientList() as $client)
+
159  {
+
160  if($client["client_nickname"] == $name) return $client;
+
161  }
+
162 
+
163  throw new TeamSpeak3_Adapter_ServerQuery_Exception("invalid clientID", 0x200);
+
164  }
+
165 
+
166  /**
+
167  * Returns a list of permissions defined for a client in the channel.
+
168  *
+
169  * @param integer $cldbid
+
170  * @param boolean $permsid
+
171  * @return void
+
172  */
+
173  public function clientPermList($cldbid, $permsid = FALSE)
+
174  {
+
175  return $this->getParent()->channelClientPermList($this->getId(), $cldbid, $permsid);
+
176  }
+
177 
+
178  /**
+
179  * Adds a set of specified permissions to a client in a specific channel. Multiple permissions can be added by
+
180  * providing the two parameters of each permission.
+
181  *
+
182  * @param integer $cldbid
+
183  * @param integer $permid
+
184  * @param integer $permvalue
+
185  * @return void
+
186  */
+
187  public function clientPermAssign($cldbid, $permid, $permvalue)
+
188  {
+
189  return $this->getParent()->channelClientPermAssign($this->getId(), $cldbid, $permid, $permvalue);
+
190  }
+
191 
+
192  /**
+
193  * Alias for clientPermAssign().
+
194  *
+
195  * @deprecated
+
196  */
+
197  public function clientPermAssignByName($cldbid, $permname, $permvalue)
+
198  {
+
199  return $this->clientPermAssign($cldbid, $permname, $permvalue);
+
200  }
+
201 
+
202  /**
+
203  * Removes a set of specified permissions from a client in the channel. Multiple permissions can be removed at once.
+
204  *
+
205  * @param integer $cldbid
+
206  * @param integer $permid
+
207  * @return void
+
208  */
+
209  public function clientPermRemove($cldbid, $permid)
+
210  {
+
211  return $this->getParent()->channelClientPermRemove($this->getId(), $cldbid, $permid);
+
212  }
+
213 
+
214  /**
+
215  * Alias for clientPermRemove().
+
216  *
+
217  * @deprecated
+
218  */
+
219  public function clientPermRemoveByName($cldbid, $permname)
+
220  {
+
221  return $this->clientPermRemove($cldbid, $permname);
+
222  }
+
223 
+
224  /**
+
225  * Returns a list of permissions defined for the channel.
+
226  *
+
227  * @param boolean $permsid
+
228  * @return array
+
229  */
+
230  public function permList($permsid = FALSE)
+
231  {
+
232  return $this->getParent()->channelPermList($this->getId(), $permsid);
+
233  }
+
234 
+
235  /**
+
236  * Adds a set of specified permissions to the channel. Multiple permissions can be added by
+
237  * providing the two parameters of each permission.
+
238  *
+
239  * @param integer $permid
+
240  * @param integer $permvalue
+
241  * @return void
+
242  */
+
243  public function permAssign($permid, $permvalue)
+
244  {
+
245  return $this->getParent()->channelPermAssign($this->getId(), $permid, $permvalue);
+
246  }
+
247 
+
248  /**
+
249  * Alias for permAssign().
+
250  *
+
251  * @deprecated
+
252  */
+
253  public function permAssignByName($permname, $permvalue)
+
254  {
+
255  return $this->permAssign($permname, $permvalue);
+
256  }
+
257 
+
258  /**
+
259  * Removes a set of specified permissions from the channel. Multiple permissions can be removed at once.
+
260  *
+
261  * @param integer $permid
+
262  * @return void
+
263  */
+
264  public function permRemove($permid)
+
265  {
+
266  return $this->getParent()->channelPermRemove($this->getId(), $permid);
+
267  }
+
268 
+
269  /**
+
270  * Alias for permRemove().
+
271  *
+
272  * @deprecated
+
273  */
+
274  public function permRemoveByName($permname)
+
275  {
+
276  return $this->permRemove($permname);
+
277  }
+
278 
+
279  /**
+
280  * Returns a list of files and directories stored in the channels file repository.
+
281  *
+
282  * @param string $cpw
+
283  * @param string $path
+
284  * @param boolean $recursive
+
285  * @return void
+
286  */
+
287  public function fileList($cpw = "", $path = "/", $recursive = FALSE)
+
288  {
+
289  return $this->getParent()->channelFileList($this->getId(), $cpw, $path, $recursive);
+
290  }
+
291 
+
292  /**
+
293  * Returns detailed information about the specified file stored in the channels file repository.
+
294  *
+
295  * @param string $cpw
+
296  * @param string $name
+
297  * @return array
+
298  */
+
299  public function fileInfo($cpw = "", $name = "/")
+
300  {
+
301  return $this->getParent()->channelFileInfo($this->getId(), $cpw, $name);
+
302  }
+
303 
+
304  /**
+
305  * Renames a file in the channels file repository. If the two parameters $tcid and $tcpw are specified, the file
+
306  * will be moved into another channels file repository.
+
307  *
+
308  * @param string $cpw
+
309  * @param string $oldname
+
310  * @param string $newname
+
311  * @param integer $tcid
+
312  * @param string $tcpw
+
313  * @return void
+
314  */
+
315  public function fileRename($cpw = "", $oldname = "/", $newname = "/", $tcid = null, $tcpw = null)
+
316  {
+
317  return $this->getParent()->channelFileRename($this->getId(), $cpw, $oldname, $newname, $tcid, $tcpw);
+
318  }
+
319 
+
320  /**
+
321  * Deletes one or more files stored in the channels file repository.
+
322  *
+
323  * @param string $cpw
+
324  * @param string $path
+
325  * @return void
+
326  */
+
327  public function fileDelete($cpw = "", $name = "/")
+
328  {
+
329  return $this->getParent()->channelFileDelete($this->getId(), $cpw, $name);
+
330  }
+
331 
+
332  /**
+
333  * Creates new directory in a channels file repository.
+
334  *
+
335  * @param string $cpw
+
336  * @param string $dirname
+
337  * @return void
+
338  */
+
339  public function dirCreate($cpw = "", $dirname = "/")
+
340  {
+
341  return $this->getParent()->channelDirCreate($this->getId(), $cpw, $dirname);
+
342  }
+
343 
+
344  /**
+
345  * Returns the level of the channel.
+
346  *
+
347  * @return integer
+
348  */
+
349  public function getLevel()
+
350  {
+
351  return $this->getParent()->channelGetLevel($this->getId());
+
352  }
+
353 
+
354  /**
+
355  * Returns the pathway of the channel which can be used as a clients default channel.
+
356  *
+
357  * @return string
+
358  */
+
359  public function getPathway()
+
360  {
+
361  return $this->getParent()->channelGetPathway($this->getId());
+
362  }
+
363 
+
364  /**
+
365  * Returns the possible spacer type of the channel.
+
366  *
+
367  * @return integer
+
368  */
+
369  public function spacerGetType()
+
370  {
+
371  return $this->getParent()->channelSpacerGetType($this->getId());
+
372  }
+
373 
+
374  /**
+
375  * Returns the possible spacer alignment of the channel.
+
376  *
+
377  * @return integer
+
378  */
+
379  public function spacerGetAlign()
+
380  {
+
381  return $this->getParent()->channelSpacerGetAlign($this->getId());
+
382  }
+
383 
+
384  /**
+
385  * Returns TRUE if the channel is a spacer.
+
386  *
+
387  * @return boolean
+
388  */
+
389  public function isSpacer()
+
390  {
+
391  return $this->getParent()->channelIsSpacer($this);
+
392  }
+
393 
+
394  /**
+
395  * Downloads and returns the channels icon file content.
+
396  *
+
397  * @return TeamSpeak3_Helper_String
+
398  */
+
399  public function iconDownload()
+
400  {
+
401  if($this->iconIsLocal("channel_icon_id") || $this["channel_icon_id"] == 0) return;
+
402 
+
403  $download = $this->getParent()->transferInitDownload(rand(0x0000, 0xFFFF), 0, $this->iconGetName("channel_icon_id"));
+
404  $transfer = TeamSpeak3::factory("filetransfer://" . $download["host"] . ":" . $download["port"]);
+
405 
+
406  return $transfer->download($download["ftkey"], $download["size"]);
+
407  }
+
408 
+
409  /**
+
410  * Changes the channel configuration using given properties.
+
411  *
+
412  * @param array $properties
+
413  * @return void
+
414  */
+
415  public function modify(array $properties)
+
416  {
+
417  $properties["cid"] = $this->getId();
+
418 
+
419  $this->execute("channeledit", $properties);
+
420  $this->resetNodeInfo();
+
421  }
+
422 
+
423  /**
+
424  * Sends a text message to all clients in the channel.
+
425  *
+
426  * @param string $msg
+
427  * @param string $cpw
+
428  * @return void
+
429  */
+
430  public function message($msg, $cpw = null)
+
431  {
+
432  if($this->getId() != $this->getParent()->whoamiGet("client_channel_id"))
+
433  {
+
434  $this->getParent()->clientMove($this->getParent()->whoamiGet("client_id"), $this->getId(), $cpw);
+
435  }
+
436 
+
437  $this->execute("sendtextmessage", array("msg" => $msg, "target" => $this->getId(), "targetmode" => TeamSpeak3::TEXTMSG_CHANNEL));
+
438  }
+
439 
+
440  /**
+
441  * Deletes the channel.
+
442  *
+
443  * @param boolean $force
+
444  * @return void
+
445  */
+
446  public function delete($force = FALSE)
+
447  {
+
448  $this->getParent()->channelDelete($this->getId(), $force);
+
449 
+
450  unset($this);
+
451  }
+
452 
+
453  /**
+
454  * Moves the channel to the parent channel specified with $pid.
+
455  *
+
456  * @param integer $pid
+
457  * @param integer $order
+
458  * @return void
+
459  */
+
460  public function move($pid, $order = null)
+
461  {
+
462  $this->getParent()->channelMove($this->getId(), $pid, $order);
+
463  }
+
464 
+
465  /**
+
466  * Sends a plugin command to all clients in the channel.
+
467  *
+
468  * @param string $plugin
+
469  * @param string $data
+
470  * @param string $cpw
+
471  * @param boolean $subscribed
+
472  * @return void
+
473  */
+
474  public function sendPluginCmd($plugin, $data, $cpw = null, $subscribed = FALSE)
+
475  {
+
476  if($this->getId() != $this->getParent()->whoamiGet("client_channel_id"))
+
477  {
+
478  $this->getParent()->clientMove($this->getParent()->whoamiGet("client_id"), $this->getId(), $cpw);
+
479  }
+
480 
+
481  $this->execute("plugincmd", array("name" => $plugin, "data" => $data, "targetmode" => $subscribed ? TeamSpeak3::PLUGINCMD_CHANNEL_SUBSCRIBED : TeamSpeak3::PLUGINCMD_CHANNEL));
+
482  }
+
483 
+
484  /**
+
485  * @ignore
+
486  */
+
487  protected function fetchNodeList()
+
488  {
+
489  $this->nodeList = array();
+
490 
+
491  if($this->getParent()->getLoadClientlistFirst())
+
492  {
+
493  foreach($this->clientList() as $client)
+
494  {
+
495  if($client["cid"] == $this->getId())
+
496  {
+
497  $this->nodeList[] = $client;
+
498  }
+
499  }
+
500 
+
501  foreach($this->subChannelList() as $channel)
+
502  {
+
503  if($channel["pid"] == $this->getId())
+
504  {
+
505  $this->nodeList[] = $channel;
+
506  }
+
507  }
+
508  }
+
509  else
+
510  {
+
511  foreach($this->subChannelList() as $channel)
+
512  {
+
513  if($channel["pid"] == $this->getId())
+
514  {
+
515  $this->nodeList[] = $channel;
+
516  }
+
517  }
+
518 
+
519  foreach($this->clientList() as $client)
+
520  {
+
521  if($client["cid"] == $this->getId())
+
522  {
+
523  $this->nodeList[] = $client;
+
524  }
+
525  }
+
526  }
+
527  }
+
528 
+
529  /**
+
530  * @ignore
+
531  */
+
532  protected function fetchNodeInfo()
+
533  {
+
534  $this->nodeInfo = array_merge($this->nodeInfo, $this->execute("channelinfo", array("cid" => $this->getId()))->toList());
+
535  }
+
536 
+
537  /**
+
538  * Returns a unique identifier for the node which can be used as a HTML property.
+
539  *
+
540  * @return string
+
541  */
+
542  public function getUniqueId()
+
543  {
+
544  return $this->getParent()->getUniqueId() . "_ch" . $this->getId();
+
545  }
+
546 
+
547  /**
+
548  * Returns the name of a possible icon to display the node object.
+
549  *
+
550  * @return string
+
551  */
+
552  public function getIcon()
+
553  {
+
554  if($this["channel_maxclients"] != -1 && $this["channel_maxclients"] <= $this["total_clients"])
+
555  {
+
556  return "channel_full";
+
557  }
+
558  elseif($this["channel_flag_password"])
+
559  {
+
560  return "channel_pass";
+
561  }
+
562  else
+
563  {
+
564  return "channel_open";
+
565  }
+
566  }
+
567 
+
568  /**
+
569  * Returns a symbol representing the node.
+
570  *
+
571  * @return string
+
572  */
+
573  public function getSymbol()
+
574  {
+
575  return "#";
+
576  }
+
577 
+
578  /**
+
579  * Returns a string representation of this node.
+
580  *
+
581  * @return string
+
582  */
+
583  public function __toString()
+
584  {
+
585  return (string) $this["channel_name"];
+
586  }
+
587 }
+
588 
+
+
+ + + + diff --git a/lib/docs/html/_channelgroup_8php.html b/lib/docs/html/_channelgroup_8php.html new file mode 100644 index 0000000..584ecc7 --- /dev/null +++ b/lib/docs/html/_channelgroup_8php.html @@ -0,0 +1,156 @@ + + + + + + +TeamSpeak 3 PHP Framework: TeamSpeak3/Node/Channelgroup.php File Reference + + + + + + + + + + + + + +
+
+ + + + + + + +
+
TeamSpeak 3 PHP Framework +  1.1.23 +
+
Copyright © Planet TeamSpeak. All rights reserved.
+
+
+ + + + + +
+
+ +
+
+
+ +
+ + + + +
+ +
+ +
+ +
+
Channelgroup.php File Reference
+
+
+ +

TeamSpeak 3 PHP Framework. +More...

+ +

Go to the source code of this file.

+ + + + + +

+Classes

class  TeamSpeak3_Node_Channelgroup
 Class describing a TeamSpeak 3 channel group and all it's parameters. More...
 
+ + + +

+Namespaces

 TeamSpeak3
 
+ + + +

+Constant Groups

 TeamSpeak3
 
+

Detailed Description

+

TeamSpeak 3 PHP Framework.

+
Id:
Channelgroup.php 10/11/2013 11:35:21 scp
+

This program is free software: you can redistribute it and/or modify it under the terms of the GNU General Public License as published by the Free Software Foundation, either version 3 of the License, or (at your option) any later version.

+

This program is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License for more details.

+

You should have received a copy of the GNU General Public License along with this program. If not, see http://www.gnu.org/licenses/.

+ +

Definition in file Channelgroup.php.

+
+
+ + + + diff --git a/lib/docs/html/_channelgroup_8php_source.html b/lib/docs/html/_channelgroup_8php_source.html new file mode 100644 index 0000000..a93cac5 --- /dev/null +++ b/lib/docs/html/_channelgroup_8php_source.html @@ -0,0 +1,398 @@ + + + + + + +TeamSpeak 3 PHP Framework: TeamSpeak3/Node/Channelgroup.php Source File + + + + + + + + + + + + + +
+
+ + + + + + + +
+
TeamSpeak 3 PHP Framework +  1.1.23 +
+
Copyright © Planet TeamSpeak. All rights reserved.
+
+
+ + + + + +
+
+ +
+
+
+ +
+ + + + +
+ +
+ +
+
+
Channelgroup.php
+
+
+Go to the documentation of this file.
1 <?php
+
2 
+
3 /**
+
4  * @file
+
5  * TeamSpeak 3 PHP Framework
+
6  *
+
7  * $Id: Channelgroup.php 10/11/2013 11:35:21 scp@orilla $
+
8  *
+
9  * This program is free software: you can redistribute it and/or modify
+
10  * it under the terms of the GNU General Public License as published by
+
11  * the Free Software Foundation, either version 3 of the License, or
+
12  * (at your option) any later version.
+
13  *
+
14  * This program is distributed in the hope that it will be useful,
+
15  * but WITHOUT ANY WARRANTY; without even the implied warranty of
+
16  * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+
17  * GNU General Public License for more details.
+
18  *
+
19  * You should have received a copy of the GNU General Public License
+
20  * along with this program. If not, see <http://www.gnu.org/licenses/>.
+
21  *
+
22  * @package TeamSpeak3
+
23  * @version 1.1.23
+
24  * @author Sven 'ScP' Paulsen
+
25  * @copyright Copyright (c) 2010 by Planet TeamSpeak. All rights reserved.
+
26  */
+
27 
+
28 /**
+
29  * @class TeamSpeak3_Node_Channelgroup
+
30  * @brief Class describing a TeamSpeak 3 channel group and all it's parameters.
+
31  */
+ +
33 {
+
34  /**
+
35  * The TeamSpeak3_Node_Channelgroup constructor.
+
36  *
+
37  * @param TeamSpeak3_Node_Server $server
+
38  * @param array $info
+
39  * @param string $index
+
40  * @throws TeamSpeak3_Adapter_ServerQuery_Exception
+
41  * @return TeamSpeak3_Node_Channelgroup
+
42  */
+
43  public function __construct(TeamSpeak3_Node_Server $server, array $info, $index = "cgid")
+
44  {
+
45  $this->parent = $server;
+
46  $this->nodeInfo = $info;
+
47 
+
48  if(!array_key_exists($index, $this->nodeInfo))
+
49  {
+
50  throw new TeamSpeak3_Adapter_ServerQuery_Exception("invalid groupID", 0xA00);
+
51  }
+
52 
+
53  $this->nodeId = $this->nodeInfo[$index];
+
54  }
+
55 
+
56  /**
+
57  * Renames the channel group specified.
+
58  *
+
59  * @param string $name
+
60  * @return void
+
61  */
+
62  public function rename($name)
+
63  {
+
64  return $this->getParent()->channelGroupRename($this->getId(), $name);
+
65  }
+
66 
+
67  /**
+
68  * Deletes the channel group. If $force is set to TRUE, the channel group will be
+
69  * deleted even if there are clients within.
+
70  *
+
71  * @param boolean $force
+
72  * @return void
+
73  */
+
74  public function delete($force = FALSE)
+
75  {
+
76  $this->getParent()->channelGroupDelete($this->getId(), $force);
+
77 
+
78  unset($this);
+
79  }
+
80 
+
81  /**
+
82  * Creates a copy of the channel group and returns the new groups ID.
+
83  *
+
84  * @param string $name
+
85  * @param integer $tcgid
+
86  * @param integer $type
+
87  * @return integer
+
88  */
+
89  public function copy($name = null, $tcgid = 0, $type = TeamSpeak3::GROUP_DBTYPE_REGULAR)
+
90  {
+
91  return $this->getParent()->channelGroupCopy($this->getId(), $name, $tcgid, $type);
+
92  }
+
93 
+
94  /**
+
95  * Returns a list of permissions assigned to the channel group.
+
96  *
+
97  * @param boolean $permsid
+
98  * @return array
+
99  */
+
100  public function permList($permsid = FALSE)
+
101  {
+
102  return $this->getParent()->channelGroupPermList($this->getId(), $permsid);
+
103  }
+
104 
+
105  /**
+
106  * Adds a set of specified permissions to the channel group. Multiple permissions
+
107  * can be added by providing the two parameters of each permission in separate arrays.
+
108  *
+
109  * @param integer $permid
+
110  * @param integer $permvalue
+
111  * @return void
+
112  */
+
113  public function permAssign($permid, $permvalue)
+
114  {
+
115  return $this->getParent()->channelGroupPermAssign($this->getId(), $permid, $permvalue);
+
116  }
+
117 
+
118  /**
+
119  * Alias for permAssign().
+
120  *
+
121  * @deprecated
+
122  */
+
123  public function permAssignByName($permname, $permvalue)
+
124  {
+
125  return $this->permAssign($permname, $permvalue);
+
126  }
+
127 
+
128  /**
+
129  * Removes a set of specified permissions from the channel group. Multiple
+
130  * permissions can be removed at once.
+
131  *
+
132  * @param integer $permid
+
133  * @return void
+
134  */
+
135  public function permRemove($permid)
+
136  {
+
137  return $this->getParent()->channelGroupPermRemove($this->getId(), $permid);
+
138  }
+
139 
+
140  /**
+
141  * Alias for permAssign().
+
142  *
+
143  * @deprecated
+
144  */
+
145  public function permRemoveByName($permname)
+
146  {
+
147  return $this->permRemove($permname);
+
148  }
+
149 
+
150  /**
+
151  * Returns a list of clients assigned to the server group specified.
+
152  *
+
153  * @return array
+
154  */
+
155  public function clientList()
+
156  {
+
157  return $this->getParent()->channelGroupClientList($this->getId());
+
158  }
+
159 
+
160  /**
+
161  * Alias for privilegeKeyCreate().
+
162  *
+
163  * @deprecated
+
164  */
+
165  public function tokenCreate($cid, $description = null, $customset = null)
+
166  {
+
167  return $this->privilegeKeyCreate($cid, $description, $customset);
+
168  }
+
169 
+
170  /**
+
171  * Creates a new privilege key (token) for the channel group and returns the key.
+
172  *
+
173  * @param integer $cid
+
174  * @param string $description
+
175  * @param string $customset
+
176  * @return TeamSpeak3_Helper_String
+
177  */
+
178  public function privilegeKeyCreate($cid, $description = null, $customset = null)
+
179  {
+
180  return $this->getParent()->privilegeKeyCreate(TeamSpeak3::TOKEN_CHANNELGROUP, $this->getId(), $cid, $description, $customset);
+
181  }
+
182 
+
183  /**
+
184  * Sends a text message to all clients residing in the channel group on the virtual server.
+
185  *
+
186  * @param string $msg
+
187  * @return void
+
188  */
+
189  public function message($msg)
+
190  {
+
191  foreach($this as $client)
+
192  {
+
193  try
+
194  {
+
195  $this->execute("sendtextmessage", array("msg" => $msg, "target" => $client, "targetmode" => TeamSpeak3::TEXTMSG_CLIENT));
+
196  }
+ +
198  {
+
199  /* ERROR_client_invalid_id */
+
200  if($e->getCode() != 0x0200) throw $e;
+
201  }
+
202  }
+
203  }
+
204 
+
205  /**
+
206  * Downloads and returns the channel groups icon file content.
+
207  *
+
208  * @return TeamSpeak3_Helper_String
+
209  */
+
210  public function iconDownload()
+
211  {
+
212  if($this->iconIsLocal("iconid") || $this["iconid"] == 0) return;
+
213 
+
214  $download = $this->getParent()->transferInitDownload(rand(0x0000, 0xFFFF), 0, $this->iconGetName("iconid"));
+
215  $transfer = TeamSpeak3::factory("filetransfer://" . $download["host"] . ":" . $download["port"]);
+
216 
+
217  return $transfer->download($download["ftkey"], $download["size"]);
+
218  }
+
219 
+
220  /**
+
221  * @ignore
+
222  */
+
223  protected function fetchNodeList()
+
224  {
+
225  $this->nodeList = array();
+
226 
+
227  foreach($this->getParent()->clientList() as $client)
+
228  {
+
229  if($client["client_channel_group_id"] == $this->getId())
+
230  {
+
231  $this->nodeList[] = $client;
+
232  }
+
233  }
+
234  }
+
235 
+
236  /**
+
237  * Returns a unique identifier for the node which can be used as a HTML property.
+
238  *
+
239  * @return string
+
240  */
+
241  public function getUniqueId()
+
242  {
+
243  return $this->getParent()->getUniqueId() . "_cg" . $this->getId();
+
244  }
+
245 
+
246  /**
+
247  * Returns the name of a possible icon to display the node object.
+
248  *
+
249  * @return string
+
250  */
+
251  public function getIcon()
+
252  {
+
253  return "group_channel";
+
254  }
+
255 
+
256  /**
+
257  * Returns a symbol representing the node.
+
258  *
+
259  * @return string
+
260  */
+
261  public function getSymbol()
+
262  {
+
263  return "%";
+
264  }
+
265 
+
266  /**
+
267  * Returns a string representation of this node.
+
268  *
+
269  * @return string
+
270  */
+
271  public function __toString()
+
272  {
+
273  return (string) $this["name"];
+
274  }
+
275 }
+
276 
+
+
+ + + + diff --git a/lib/docs/html/_char_8php.html b/lib/docs/html/_char_8php.html new file mode 100644 index 0000000..113f966 --- /dev/null +++ b/lib/docs/html/_char_8php.html @@ -0,0 +1,156 @@ + + + + + + +TeamSpeak 3 PHP Framework: TeamSpeak3/Helper/Char.php File Reference + + + + + + + + + + + + + +
+
+ + + + + + + +
+
TeamSpeak 3 PHP Framework +  1.1.23 +
+
Copyright © Planet TeamSpeak. All rights reserved.
+
+
+ + + + + +
+
+ +
+
+
+ +
+ + + + +
+ +
+ +
+ +
+
Char.php File Reference
+
+
+ +

TeamSpeak 3 PHP Framework. +More...

+ +

Go to the source code of this file.

+ + + + + +

+Classes

class  TeamSpeak3_Helper_Char
 Helper class for char handling. More...
 
+ + + +

+Namespaces

 TeamSpeak3
 
+ + + +

+Constant Groups

 TeamSpeak3
 
+

Detailed Description

+

TeamSpeak 3 PHP Framework.

+
Id:
Char.php 10/11/2013 11:35:21 scp
+

This program is free software: you can redistribute it and/or modify it under the terms of the GNU General Public License as published by the Free Software Foundation, either version 3 of the License, or (at your option) any later version.

+

This program is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License for more details.

+

You should have received a copy of the GNU General Public License along with this program. If not, see http://www.gnu.org/licenses/.

+ +

Definition in file Char.php.

+
+
+ + + + diff --git a/lib/docs/html/_char_8php_source.html b/lib/docs/html/_char_8php_source.html new file mode 100644 index 0000000..2ff3c36 --- /dev/null +++ b/lib/docs/html/_char_8php_source.html @@ -0,0 +1,391 @@ + + + + + + +TeamSpeak 3 PHP Framework: TeamSpeak3/Helper/Char.php Source File + + + + + + + + + + + + + +
+
+ + + + + + + +
+
TeamSpeak 3 PHP Framework +  1.1.23 +
+
Copyright © Planet TeamSpeak. All rights reserved.
+
+
+ + + + + +
+
+ +
+
+
+ +
+ + + + +
+ +
+ +
+
+
Char.php
+
+
+Go to the documentation of this file.
1 <?php
+
2 
+
3 /**
+
4  * @file
+
5  * TeamSpeak 3 PHP Framework
+
6  *
+
7  * $Id: Char.php 10/11/2013 11:35:21 scp@orilla $
+
8  *
+
9  * This program is free software: you can redistribute it and/or modify
+
10  * it under the terms of the GNU General Public License as published by
+
11  * the Free Software Foundation, either version 3 of the License, or
+
12  * (at your option) any later version.
+
13  *
+
14  * This program is distributed in the hope that it will be useful,
+
15  * but WITHOUT ANY WARRANTY; without even the implied warranty of
+
16  * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+
17  * GNU General Public License for more details.
+
18  *
+
19  * You should have received a copy of the GNU General Public License
+
20  * along with this program. If not, see <http://www.gnu.org/licenses/>.
+
21  *
+
22  * @package TeamSpeak3
+
23  * @version 1.1.23
+
24  * @author Sven 'ScP' Paulsen
+
25  * @copyright Copyright (c) 2010 by Planet TeamSpeak. All rights reserved.
+
26  */
+
27 
+
28 /**
+
29  * @class TeamSpeak3_Helper_Char
+
30  * @brief Helper class for char handling.
+
31  */
+ +
33 {
+
34  /**
+
35  * Stores the original character.
+
36  *
+
37  * @var string
+
38  */
+
39  protected $char = null;
+
40 
+
41  /**
+
42  * The TeamSpeak3_Helper_Char constructor.
+
43  *
+
44  * @param string $var
+
45  * @throws TeamSpeak3_Helper_Exception
+
46  * @return TeamSpeak3_Helper_Char
+
47  */
+
48  public function __construct($char)
+
49  {
+
50  if(strlen($char) != 1)
+
51  {
+
52  throw new TeamSpeak3_Helper_Exception("char parameter may not contain more or less than one character");
+
53  }
+
54 
+
55  $this->char = strval($char);
+
56  }
+
57 
+
58  /**
+
59  * Returns true if the character is a letter.
+
60  *
+
61  * @return boolean
+
62  */
+
63  public function isLetter()
+
64  {
+
65  return ctype_alpha($this->char);
+
66  }
+
67 
+
68  /**
+
69  * Returns true if the character is a decimal digit.
+
70  *
+
71  * @return boolean
+
72  */
+
73  public function isDigit()
+
74  {
+
75  return ctype_digit($this->char);
+
76  }
+
77 
+
78  /**
+
79  * Returns true if the character is a space.
+
80  *
+
81  * @return boolean
+
82  */
+
83  public function isSpace()
+
84  {
+
85  return ctype_space($this->char);
+
86  }
+
87 
+
88  /**
+
89  * Returns true if the character is a mark.
+
90  *
+
91  * @return boolean
+
92  */
+
93  public function isMark()
+
94  {
+
95  return ctype_punct($this->char);
+
96  }
+
97 
+
98  /**
+
99  * Returns true if the character is a control character (i.e. "\t").
+
100  *
+
101  * @return boolean
+
102  */
+
103  public function isControl()
+
104  {
+
105  return ctype_cntrl($this->char);
+
106  }
+
107 
+
108  /**
+
109  * Returns true if the character is a printable character.
+
110  *
+
111  * @return boolean
+
112  */
+
113  public function isPrintable()
+
114  {
+
115  return ctype_print($this->char);
+
116  }
+
117 
+
118  /**
+
119  * Returns true if the character is the Unicode character 0x0000 ("\0").
+
120  *
+
121  * @return boolean
+
122  */
+
123  public function isNull()
+
124  {
+
125  return ($this->char === "\0") ? TRUE : FALSE;
+
126  }
+
127 
+
128  /**
+
129  * Returns true if the character is an uppercase letter.
+
130  *
+
131  * @return boolean
+
132  */
+
133  public function isUpper()
+
134  {
+
135  return ($this->char === strtoupper($this->char)) ? TRUE : FALSE;
+
136  }
+
137 
+
138  /**
+
139  * Returns true if the character is a lowercase letter.
+
140  *
+
141  * @return boolean
+
142  */
+
143  public function isLower()
+
144  {
+
145  return ($this->char === strtolower($this->char)) ? TRUE : FALSE;
+
146  }
+
147 
+
148  /**
+
149  * Returns the uppercase equivalent if the character is lowercase.
+
150  *
+
151  * @return TeamSpeak3_Helper_Char
+
152  */
+
153  public function toUpper()
+
154  {
+
155  return ($this->isUpper()) ? $this : new self(strtoupper($this));
+
156  }
+
157 
+
158  /**
+
159  * Returns the lowercase equivalent if the character is uppercase.
+
160  *
+
161  * @return TeamSpeak3_Helper_Char
+
162  */
+
163  public function toLower()
+
164  {
+
165  return ($this->isLower()) ? $this : new self(strtolower($this));
+
166  }
+
167 
+
168  /**
+
169  * Returns the ascii value of the character.
+
170  *
+
171  * @return integer
+
172  */
+
173  public function toAscii()
+
174  {
+
175  return ord($this->char);
+
176  }
+
177 
+
178  /**
+
179  * Returns the Unicode value of the character.
+
180  *
+
181  * @return integer
+
182  */
+
183  public function toUnicode()
+
184  {
+
185  $h = ord($this->char{0});
+
186 
+
187  if($h <= 0x7F)
+
188  {
+
189  return $h;
+
190  }
+
191  else if($h < 0xC2)
+
192  {
+
193  return FALSE;
+
194  }
+
195  else if($h <= 0xDF)
+
196  {
+
197  return ($h & 0x1F) << 6 | (ord($this->char{1}) & 0x3F);
+
198  }
+
199  else if($h <= 0xEF)
+
200  {
+
201  return ($h & 0x0F) << 12 | (ord($this->char{1}) & 0x3F) << 6 | (ord($this->char{2}) & 0x3F);
+
202  }
+
203  else if($h <= 0xF4)
+
204  {
+
205  return ($h & 0x0F) << 18 | (ord($this->char{1}) & 0x3F) << 12 | (ord($this->char{2}) & 0x3F) << 6 | (ord($this->char{3}) & 0x3F);
+
206  }
+
207  else
+
208  {
+
209  return FALSE;
+
210  }
+
211  }
+
212 
+
213  /**
+
214  * Returns the hexadecimal value of the char.
+
215  *
+
216  * @return string
+
217  */
+
218  public function toHex()
+
219  {
+
220  return strtoupper(dechex($this->toAscii()));
+
221  }
+
222 
+
223  /**
+
224  * Returns the TeamSpeak3_Helper_Char based on a given hex value.
+
225  *
+
226  * @param string $hex
+
227  * @throws TeamSpeak3_Helper_Exception
+
228  * @return TeamSpeak3_Helper_Char
+
229  */
+
230  public static function fromHex($hex)
+
231  {
+
232  if(strlen($hex) != 2)
+
233  {
+
234  throw new TeamSpeak3_Helper_Exception("given parameter '" . $hex . "' is not a valid hexadecimal number");
+
235  }
+
236 
+
237  return new self(chr(hexdec($hex)));
+
238  }
+
239 
+
240  /**
+
241  * Returns the character as a standard string.
+
242  *
+
243  * @return string
+
244  */
+
245  public function toString()
+
246  {
+
247  return $this->char;
+
248  }
+
249 
+
250  /**
+
251  * Returns the integer value of the character.
+
252  *
+
253  * @return integer
+
254  */
+
255  public function toInt()
+
256  {
+
257  return intval($this->char);
+
258  }
+
259 
+
260  /**
+
261  * Returns the character as a standard string.
+
262  *
+
263  * @return string
+
264  */
+
265  public function __toString()
+
266  {
+
267  return $this->char;
+
268  }
+
269 }
+
+
+ + + + diff --git a/lib/docs/html/_client_8php.html b/lib/docs/html/_client_8php.html new file mode 100644 index 0000000..ecdb41c --- /dev/null +++ b/lib/docs/html/_client_8php.html @@ -0,0 +1,156 @@ + + + + + + +TeamSpeak 3 PHP Framework: TeamSpeak3/Node/Client.php File Reference + + + + + + + + + + + + + +
+
+ + + + + + + +
+
TeamSpeak 3 PHP Framework +  1.1.23 +
+
Copyright © Planet TeamSpeak. All rights reserved.
+
+
+ + + + + +
+
+ +
+
+
+ +
+ + + + +
+ +
+ +
+ +
+
Client.php File Reference
+
+
+ +

TeamSpeak 3 PHP Framework. +More...

+ +

Go to the source code of this file.

+ + + + + +

+Classes

class  TeamSpeak3_Node_Client
 Class describing a TeamSpeak 3 client and all it's parameters. More...
 
+ + + +

+Namespaces

 TeamSpeak3
 
+ + + +

+Constant Groups

 TeamSpeak3
 
+

Detailed Description

+

TeamSpeak 3 PHP Framework.

+
Id:
Client.php 10/11/2013 11:35:21 scp
+

This program is free software: you can redistribute it and/or modify it under the terms of the GNU General Public License as published by the Free Software Foundation, either version 3 of the License, or (at your option) any later version.

+

This program is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License for more details.

+

You should have received a copy of the GNU General Public License along with this program. If not, see http://www.gnu.org/licenses/.

+ +

Definition in file Client.php.

+
+
+ + + + diff --git a/lib/docs/html/_client_8php_source.html b/lib/docs/html/_client_8php_source.html new file mode 100644 index 0000000..6a3fd48 --- /dev/null +++ b/lib/docs/html/_client_8php_source.html @@ -0,0 +1,563 @@ + + + + + + +TeamSpeak 3 PHP Framework: TeamSpeak3/Node/Client.php Source File + + + + + + + + + + + + + +
+
+ + + + + + + +
+
TeamSpeak 3 PHP Framework +  1.1.23 +
+
Copyright © Planet TeamSpeak. All rights reserved.
+
+
+ + + + + +
+
+ +
+
+
+ +
+ + + + +
+ +
+ +
+
+
Client.php
+
+
+Go to the documentation of this file.
1 <?php
+
2 
+
3 /**
+
4  * @file
+
5  * TeamSpeak 3 PHP Framework
+
6  *
+
7  * $Id: Client.php 10/11/2013 11:35:21 scp@orilla $
+
8  *
+
9  * This program is free software: you can redistribute it and/or modify
+
10  * it under the terms of the GNU General Public License as published by
+
11  * the Free Software Foundation, either version 3 of the License, or
+
12  * (at your option) any later version.
+
13  *
+
14  * This program is distributed in the hope that it will be useful,
+
15  * but WITHOUT ANY WARRANTY; without even the implied warranty of
+
16  * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+
17  * GNU General Public License for more details.
+
18  *
+
19  * You should have received a copy of the GNU General Public License
+
20  * along with this program. If not, see <http://www.gnu.org/licenses/>.
+
21  *
+
22  * @package TeamSpeak3
+
23  * @version 1.1.23
+
24  * @author Sven 'ScP' Paulsen
+
25  * @copyright Copyright (c) 2010 by Planet TeamSpeak. All rights reserved.
+
26  */
+
27 
+
28 /**
+
29  * @class TeamSpeak3_Node_Client
+
30  * @brief Class describing a TeamSpeak 3 client and all it's parameters.
+
31  */
+ +
33 {
+
34  /**
+
35  * The TeamSpeak3_Node_Client constructor.
+
36  *
+
37  * @param TeamSpeak3_Node_Server $server
+
38  * @param array $info
+
39  * @param string $index
+
40  * @throws TeamSpeak3_Adapter_ServerQuery_Exception
+
41  * @return TeamSpeak3_Node_Client
+
42  */
+
43  public function __construct(TeamSpeak3_Node_Server $server, array $info, $index = "clid")
+
44  {
+
45  $this->parent = $server;
+
46  $this->nodeInfo = $info;
+
47 
+
48  if(!array_key_exists($index, $this->nodeInfo))
+
49  {
+
50  throw new TeamSpeak3_Adapter_ServerQuery_Exception("invalid clientID", 0x200);
+
51  }
+
52 
+
53  $this->nodeId = $this->nodeInfo[$index];
+
54  }
+
55 
+
56  /**
+
57  * Changes the clients properties using given properties.
+
58  *
+
59  * @param array $properties
+
60  * @return void
+
61  */
+
62  public function modify(array $properties)
+
63  {
+
64  $properties["clid"] = $this->getId();
+
65 
+
66  $this->execute("clientedit", $properties);
+
67  $this->resetNodeInfo();
+
68  }
+
69 
+
70  /**
+
71  * Changes the clients properties using given properties.
+
72  *
+
73  * @param array $properties
+
74  * @return void
+
75  */
+
76  public function modifyDb(array $properties)
+
77  {
+
78  return $this->getParent()->clientModifyDb($this["client_database_id"], $properties);
+
79  }
+
80 
+
81  /**
+
82  * Deletes the clients properties from the database.
+
83  *
+
84  * @return void
+
85  */
+
86  public function deleteDb()
+
87  {
+
88  return $this->getParent()->clientDeleteDb($this["client_database_id"]);
+
89  }
+
90 
+
91  /**
+
92  * Returns a list of properties from the database for the client.
+
93  *
+
94  * @return array
+
95  */
+
96  public function infoDb()
+
97  {
+
98  return $this->getParent()->clientInfoDb($this["client_database_id"]);
+
99  }
+
100 
+
101  /**
+
102  * Sends a text message to the client.
+
103  *
+
104  * @param string $msg
+
105  * @return void
+
106  */
+
107  public function message($msg)
+
108  {
+
109  $this->execute("sendtextmessage", array("msg" => $msg, "target" => $this->getId(), "targetmode" => TeamSpeak3::TEXTMSG_CLIENT));
+
110  }
+
111 
+
112  /**
+
113  * Moves the client to another channel.
+
114  *
+
115  * @param integer $cid
+
116  * @param string $cpw
+
117  * @return void
+
118  */
+
119  public function move($cid, $cpw = null)
+
120  {
+
121  return $this->getParent()->clientMove($this->getId(), $cid, $cpw);
+
122  }
+
123 
+
124  /**
+
125  * Kicks the client from his currently joined channel or from the server.
+
126  *
+
127  * @param integer $reasonid
+
128  * @param string $reasonmsg
+
129  * @return void
+
130  */
+
131  public function kick($reasonid = TeamSpeak3::KICK_CHANNEL, $reasonmsg = null)
+
132  {
+
133  return $this->getParent()->clientKick($this->getId(), $reasonid, $reasonmsg);
+
134  }
+
135 
+
136  /**
+
137  * Sends a poke message to the client.
+
138  *
+
139  * @param string $msg
+
140  * @return void
+
141  */
+
142  public function poke($msg)
+
143  {
+
144  return $this->getParent()->clientPoke($this->getId(), $msg);
+
145  }
+
146 
+
147  /**
+
148  * Bans the client from the server. Please note that this will create two separate
+
149  * ban rules for the targeted clients IP address and his unique identifier.
+
150  *
+
151  * @param integer $timeseconds
+
152  * @param string $reason
+
153  * @return array
+
154  */
+
155  public function ban($timeseconds = null, $reason = null)
+
156  {
+
157  return $this->getParent()->clientBan($this->getId(), $timeseconds, $reason);
+
158  }
+
159 
+
160  /**
+
161  * Returns a list of custom properties for the client.
+
162  *
+
163  * @return array
+
164  */
+
165  public function customInfo()
+
166  {
+
167  return $this->getParent()->customInfo($this["client_database_id"]);
+
168  }
+
169 
+
170  /**
+
171  * Returns an array containing the permission overview of the client.
+
172  *
+
173  * @param integer $cid
+
174  * @return array
+
175  */
+
176  public function permOverview($cid)
+
177  {
+
178  return $this->execute("permoverview", array("cldbid" => $this["client_database_id"], "cid" => $cid, "permid" => 0))->toArray();
+
179  }
+
180 
+
181  /**
+
182  * Returns a list of permissions defined for the client.
+
183  *
+
184  * @param boolean $permsid
+
185  * @return array
+
186  */
+
187  public function permList($permsid = FALSE)
+
188  {
+
189  return $this->getParent()->clientPermList($this["client_database_id"], $permsid);
+
190  }
+
191 
+
192  /**
+
193  * Adds a set of specified permissions to the client. Multiple permissions can be added by providing
+
194  * the three parameters of each permission.
+
195  *
+
196  * @param integer $permid
+
197  * @param integer $permvalue
+
198  * @param integer $permskip
+
199  * @return void
+
200  */
+
201  public function permAssign($permid, $permvalue, $permskip = FALSE)
+
202  {
+
203  return $this->getParent()->clientPermAssign($this["client_database_id"], $permid, $permvalue, $permskip);
+
204  }
+
205 
+
206  /**
+
207  * Alias for permAssign().
+
208  *
+
209  * @deprecated
+
210  */
+
211  public function permAssignByName($permname, $permvalue, $permskip = FALSE)
+
212  {
+
213  return $this->permAssign($permname, $permvalue, $permskip);
+
214  }
+
215 
+
216  /**
+
217  * Removes a set of specified permissions from a client. Multiple permissions can be removed at once.
+
218  *
+
219  * @param integer $permid
+
220  * @return void
+
221  */
+
222  public function permRemove($permid)
+
223  {
+
224  return $this->getParent()->clientPermRemove($this["client_database_id"], $permid);
+
225  }
+
226 
+
227  /**
+
228  * Alias for permRemove().
+
229  *
+
230  * @deprecated
+
231  */
+
232  public function permRemoveByName($permname)
+
233  {
+
234  return $this->permRemove($permname);
+
235  }
+
236 
+
237  /**
+
238  * Sets the channel group of a client to the ID specified.
+
239  *
+
240  * @param integer $cid
+
241  * @param integer $cgid
+
242  * @return void
+
243  */
+
244  public function setChannelGroup($cid, $cgid)
+
245  {
+
246  return $this->getParent()->clientSetChannelGroup($this["client_database_id"], $cid, $cgid);
+
247  }
+
248 
+
249  /**
+
250  * Adds the client to the server group specified with $sgid.
+
251  *
+
252  * @param integer $sgid
+
253  * @return void
+
254  */
+
255  public function addServerGroup($sgid)
+
256  {
+
257  return $this->getParent()->serverGroupClientAdd($sgid, $this["client_database_id"]);
+
258  }
+
259 
+
260  /**
+
261  * Removes the client from the server group specified with $sgid.
+
262  *
+
263  * @param integer $sgid
+
264  * @return void
+
265  */
+
266  public function remServerGroup($sgid)
+
267  {
+
268  return $this->getParent()->serverGroupClientDel($sgid, $this["client_database_id"]);
+
269  }
+
270 
+
271  /**
+
272  * Returns the possible name of the clients avatar.
+
273  *
+
274  * @return TeamSpeak3_Helper_String
+
275  */
+
276  public function avatarGetName()
+
277  {
+
278  return new TeamSpeak3_Helper_String("/avatar_" . $this["client_base64HashClientUID"]);
+
279  }
+
280 
+
281  /**
+
282  * Downloads and returns the clients avatar file content.
+
283  *
+
284  * @return TeamSpeak3_Helper_String
+
285  */
+
286  public function avatarDownload()
+
287  {
+
288  if($this["client_flag_avatar"] == 0) return;
+
289 
+
290  $download = $this->getParent()->transferInitDownload(rand(0x0000, 0xFFFF), 0, $this->avatarGetName());
+
291  $transfer = TeamSpeak3::factory("filetransfer://" . $download["host"] . ":" . $download["port"]);
+
292 
+
293  return $transfer->download($download["ftkey"], $download["size"]);
+
294  }
+
295 
+
296  /**
+
297  * Returns a list of client connections using the same identity as this client.
+
298  *
+
299  * @return array
+
300  */
+
301  public function getClones()
+
302  {
+
303  return $this->execute("clientgetids", array("cluid" => $this["client_unique_identifier"]))->toAssocArray("clid");
+
304  }
+
305 
+
306  /**
+
307  * Returns the revision/build number from the clients version string.
+
308  *
+
309  * @return integer
+
310  */
+
311  public function getRev()
+
312  {
+
313  return $this["client_type"] ? null : $this["client_version"]->section("[", 1)->filterDigits();
+
314  }
+
315 
+
316  /**
+
317  * Returns all server and channel groups the client is currently residing in.
+
318  *
+
319  * @return array
+
320  */
+
321  public function memberOf()
+
322  {
+
323  $groups = array($this->getParent()->channelGroupGetById($this["client_channel_group_id"]));
+
324 
+
325  foreach(explode(",", $this["client_servergroups"]) as $sgid)
+
326  {
+
327  $groups[] = $this->getParent()->serverGroupGetById($sgid);
+
328  }
+
329 
+
330  return $groups;
+
331  }
+
332 
+
333  /**
+
334  * Downloads and returns the clients icon file content.
+
335  *
+
336  * @return TeamSpeak3_Helper_String
+
337  */
+
338  public function iconDownload()
+
339  {
+
340  if($this->iconIsLocal("client_icon_id") || $this["client_icon_id"] == 0) return;
+
341 
+
342  $download = $this->getParent()->transferInitDownload(rand(0x0000, 0xFFFF), 0, $this->iconGetName("client_icon_id"));
+
343  $transfer = TeamSpeak3::factory("filetransfer://" . $download["host"] . ":" . $download["port"]);
+
344 
+
345  return $transfer->download($download["ftkey"], $download["size"]);
+
346  }
+
347 
+
348  /**
+
349  * Sends a plugin command to the client.
+
350  *
+
351  * @param string $plugin
+
352  * @param string $data
+
353  * @return void
+
354  */
+
355  public function sendPluginCmd($plugin, $data)
+
356  {
+
357  $this->execute("plugincmd", array("name" => $plugin, "data" => $data, "targetmode" => TeamSpeak3::PLUGINCMD_CLIENT, "target" => $this->getId()));
+
358  }
+
359 
+
360  /**
+
361  * @ignore
+
362  */
+
363  protected function fetchNodeInfo()
+
364  {
+
365  if($this["client_type"] == 1) return;
+
366 
+
367  $this->nodeInfo = array_merge($this->nodeInfo, $this->execute("clientinfo", array("clid" => $this->getId()))->toList());
+
368  }
+
369 
+
370  /**
+
371  * Returns a unique identifier for the node which can be used as a HTML property.
+
372  *
+
373  * @return string
+
374  */
+
375  public function getUniqueId()
+
376  {
+
377  return $this->getParent()->getUniqueId() . "_cl" . $this->getId();
+
378  }
+
379 
+
380  /**
+
381  * Returns the name of a possible icon to display the node object.
+
382  *
+
383  * @return string
+
384  */
+
385  public function getIcon()
+
386  {
+
387  if($this["client_type"])
+
388  {
+
389  return "client_query";
+
390  }
+
391  elseif($this["client_away"])
+
392  {
+
393  return "client_away";
+
394  }
+
395  elseif(!$this["client_output_hardware"])
+
396  {
+
397  return "client_snd_disabled";
+
398  }
+
399  elseif($this["client_output_muted"])
+
400  {
+
401  return "client_snd_muted";
+
402  }
+
403  elseif(!$this["client_input_hardware"])
+
404  {
+
405  return "client_mic_disabled";
+
406  }
+
407  elseif($this["client_input_muted"])
+
408  {
+
409  return "client_mic_muted";
+
410  }
+
411  elseif($this["client_is_channel_commander"])
+
412  {
+
413  return $this["client_flag_talking"] ? "client_cc_talk" : "client_cc_idle";
+
414  }
+
415  else
+
416  {
+
417  return $this["client_flag_talking"] ? "client_talk" : "client_idle";
+
418  }
+
419  }
+
420 
+
421  /**
+
422  * Returns a symbol representing the node.
+
423  *
+
424  * @return string
+
425  */
+
426  public function getSymbol()
+
427  {
+
428  return "@";
+
429  }
+
430 
+
431  /**
+
432  * Returns a string representation of this node.
+
433  *
+
434  * @return string
+
435  */
+
436  public function __toString()
+
437  {
+
438  return (string) $this["client_nickname"];
+
439  }
+
440 }
+
441 
+
+
+ + + + diff --git a/lib/docs/html/_convert_8php.html b/lib/docs/html/_convert_8php.html new file mode 100644 index 0000000..e388fea --- /dev/null +++ b/lib/docs/html/_convert_8php.html @@ -0,0 +1,156 @@ + + + + + + +TeamSpeak 3 PHP Framework: TeamSpeak3/Helper/Convert.php File Reference + + + + + + + + + + + + + +
+
+ + + + + + + +
+
TeamSpeak 3 PHP Framework +  1.1.23 +
+
Copyright © Planet TeamSpeak. All rights reserved.
+
+
+ + + + + +
+
+ +
+
+
+ +
+ + + + +
+ +
+ +
+ +
+
Convert.php File Reference
+
+
+ +

TeamSpeak 3 PHP Framework. +More...

+ +

Go to the source code of this file.

+ + + + + +

+Classes

class  TeamSpeak3_Helper_Convert
 Helper class for data conversion. More...
 
+ + + +

+Namespaces

 TeamSpeak3
 
+ + + +

+Constant Groups

 TeamSpeak3
 
+

Detailed Description

+

TeamSpeak 3 PHP Framework.

+
Id:
Convert.php 10/11/2013 11:35:21 scp
+

This program is free software: you can redistribute it and/or modify it under the terms of the GNU General Public License as published by the Free Software Foundation, either version 3 of the License, or (at your option) any later version.

+

This program is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License for more details.

+

You should have received a copy of the GNU General Public License along with this program. If not, see http://www.gnu.org/licenses/.

+ +

Definition in file Convert.php.

+
+
+ + + + diff --git a/lib/docs/html/_convert_8php_source.html b/lib/docs/html/_convert_8php_source.html new file mode 100644 index 0000000..53c0b1b --- /dev/null +++ b/lib/docs/html/_convert_8php_source.html @@ -0,0 +1,471 @@ + + + + + + +TeamSpeak 3 PHP Framework: TeamSpeak3/Helper/Convert.php Source File + + + + + + + + + + + + + +
+
+ + + + + + + +
+
TeamSpeak 3 PHP Framework +  1.1.23 +
+
Copyright © Planet TeamSpeak. All rights reserved.
+
+
+ + + + + +
+
+ +
+
+
+ +
+ + + + +
+ +
+ +
+
+
Convert.php
+
+
+Go to the documentation of this file.
1 <?php
+
2 
+
3 /**
+
4  * @file
+
5  * TeamSpeak 3 PHP Framework
+
6  *
+
7  * $Id: Convert.php 10/11/2013 11:35:21 scp@orilla $
+
8  *
+
9  * This program is free software: you can redistribute it and/or modify
+
10  * it under the terms of the GNU General Public License as published by
+
11  * the Free Software Foundation, either version 3 of the License, or
+
12  * (at your option) any later version.
+
13  *
+
14  * This program is distributed in the hope that it will be useful,
+
15  * but WITHOUT ANY WARRANTY; without even the implied warranty of
+
16  * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+
17  * GNU General Public License for more details.
+
18  *
+
19  * You should have received a copy of the GNU General Public License
+
20  * along with this program. If not, see <http://www.gnu.org/licenses/>.
+
21  *
+
22  * @package TeamSpeak3
+
23  * @version 1.1.23
+
24  * @author Sven 'ScP' Paulsen
+
25  * @copyright Copyright (c) 2010 by Planet TeamSpeak. All rights reserved.
+
26  */
+
27 
+
28 /**
+
29  * @class TeamSpeak3_Helper_Convert
+
30  * @brief Helper class for data conversion.
+
31  */
+ +
33 {
+
34  /**
+
35  * Converts bytes to a human readable value.
+
36  *
+
37  * @param integer $bytes
+
38  * @return string
+
39  */
+
40  public static function bytes($bytes)
+
41  {
+
42  $kbytes = sprintf("%.02f", $bytes/1024);
+
43  $mbytes = sprintf("%.02f", $kbytes/1024);
+
44  $gbytes = sprintf("%.02f", $mbytes/1024);
+
45  $tbytes = sprintf("%.02f", $gbytes/1024);
+
46 
+
47  if($tbytes >= 1)
+
48  return $tbytes . " TB";
+
49  if($gbytes >= 1)
+
50  return $gbytes . " GB";
+
51  if($mbytes >= 1)
+
52  return $mbytes . " MB";
+
53  if($kbytes >= 1)
+
54  return $kbytes . " KB";
+
55 
+
56  return $bytes . " B";
+
57  }
+
58 
+
59  /**
+
60  * Converts seconds/milliseconds to a human readable value.
+
61  *
+
62  * @param integer $seconds
+
63  * @param boolean $is_ms
+
64  * @param string $format
+
65  * @return string
+
66  */
+
67  public static function seconds($seconds, $is_ms = FALSE, $format = "%dD %02d:%02d:%02d")
+
68  {
+
69  if($is_ms) $seconds = $seconds/1000;
+
70 
+
71  return sprintf($format, $seconds/60/60/24, ($seconds/60/60)%24, ($seconds/60)%60, $seconds%60);
+
72  }
+
73 
+
74  /**
+
75  * Converts a given codec ID to a human readable name.
+
76  *
+
77  * @param integer $codec
+
78  * @return string
+
79  */
+
80  public static function codec($codec)
+
81  {
+ +
83  return "Speex Narrowband";
+ +
85  return "Speex Wideband";
+ +
87  return "Speex Ultra-Wideband";
+
88  if($codec == TeamSpeak3::CODEC_CELT_MONO)
+
89  return "CELT Mono";
+
90  if($codec == TeamSpeak3::CODEC_OPUS_VOICE)
+
91  return "Opus Voice";
+
92  if($codec == TeamSpeak3::CODEC_OPUS_MUSIC)
+
93  return "Opus Music";
+
94 
+
95  return "Unknown";
+
96  }
+
97 
+
98  /**
+
99  * Converts a given group type ID to a human readable name.
+
100  *
+
101  * @param integer $type
+
102  * @return string
+
103  */
+
104  public static function groupType($type)
+
105  {
+ +
107  return "Template";
+ +
109  return "Regular";
+ +
111  return "ServerQuery";
+
112 
+
113  return "Unknown";
+
114  }
+
115 
+
116  /**
+
117  * Converts a given permission type ID to a human readable name.
+
118  *
+
119  * @param integer $type
+
120  * @return string
+
121  */
+
122  public static function permissionType($type)
+
123  {
+ +
125  return "Server Group";
+
126  if($type == TeamSpeak3::PERM_TYPE_CLIENT)
+
127  return "Client";
+
128  if($type == TeamSpeak3::PERM_TYPE_CHANNEL)
+
129  return "Channel";
+ +
131  return "Channel Group";
+ +
133  return "Channel Client";
+
134 
+
135  return "Unknown";
+
136  }
+
137 
+
138  /**
+
139  * Converts a given permission category value to a human readable name.
+
140  *
+
141  * @param integer $pcat
+
142  * @return string
+
143  */
+
144  public static function permissionCategory($pcat)
+
145  {
+
146  if($pcat == TeamSpeak3::PERM_CAT_GLOBAL)
+
147  return "Global";
+ +
149  return "Global / Information";
+ +
151  return "Global / Virtual Server Management";
+ +
153  return "Global / Administration";
+ +
155  return "Global / Settings";
+
156  if($pcat == TeamSpeak3::PERM_CAT_SERVER)
+
157  return "Virtual Server";
+ +
159  return "Virtual Server / Information";
+ +
161  return "Virtual Server / Administration";
+ +
163  return "Virtual Server / Settings";
+
164  if($pcat == TeamSpeak3::PERM_CAT_CHANNEL)
+
165  return "Channel";
+ +
167  return "Channel / Information";
+ +
169  return "Channel / Create";
+ +
171  return "Channel / Modify";
+ +
173  return "Channel / Delete";
+ +
175  return "Channel / Access";
+
176  if($pcat == TeamSpeak3::PERM_CAT_GROUP)
+
177  return "Group";
+ +
179  return "Group / Information";
+ +
181  return "Group / Create";
+ +
183  return "Group / Modify";
+ +
185  return "Group / Delete";
+
186  if($pcat == TeamSpeak3::PERM_CAT_CLIENT)
+
187  return "Client";
+ +
189  return "Client / Information";
+ +
191  return "Client / Admin";
+ +
193  return "Client / Basics";
+ +
195  return "Client / Modify";
+ +
197  return "File Transfer";
+ +
199  return "Grant";
+
200 
+
201  return "Unknown";
+
202  }
+
203 
+
204  /**
+
205  * Converts a given log level ID to a human readable name and vice versa.
+
206  *
+
207  * @param mixed $level
+
208  * @return string
+
209  */
+
210  public static function logLevel($level)
+
211  {
+
212  if(is_numeric($level))
+
213  {
+
214  if($level == TeamSpeak3::LOGLEVEL_CRITICAL)
+
215  return "CRITICAL";
+
216  if($level == TeamSpeak3::LOGLEVEL_ERROR)
+
217  return "ERROR";
+
218  if($level == TeamSpeak3::LOGLEVEL_DEBUG)
+
219  return "DEBUG";
+
220  if($level == TeamSpeak3::LOGLEVEL_WARNING)
+
221  return "WARNING";
+
222  if($level == TeamSpeak3::LOGLEVEL_INFO)
+
223  return "INFO";
+
224 
+
225  return "DEVELOP";
+
226  }
+
227  else
+
228  {
+
229  if(strtoupper($level) == "CRITICAL")
+ +
231  if(strtoupper($level) == "ERROR")
+ +
233  if(strtoupper($level) == "DEBUG")
+ +
235  if(strtoupper($level) == "WARNING")
+ +
237  if(strtoupper($level) == "INFO")
+ +
239 
+ +
241  }
+
242  }
+
243 
+
244  /**
+
245  * Converts a specified log entry string into an array containing the data.
+
246  *
+
247  * @param string $entry
+
248  * @return array
+
249  */
+
250  public static function logEntry($entry)
+
251  {
+
252  $parts = explode("|", $entry, 5);
+
253  $array = array();
+
254 
+
255  if(count($parts) != 5)
+
256  {
+
257  $array["timestamp"] = 0;
+
258  $array["level"] = TeamSpeak3::LOGLEVEL_ERROR;
+
259  $array["channel"] = "ParamParser";
+
260  $array["server_id"] = "";
+
261  $array["msg"] = TeamSpeak3_Helper_String::factory("convert error (" . trim($entry) . ")");
+
262  $array["msg_plain"] = $entry;
+
263  $array["malformed"] = TRUE;
+
264  }
+
265  else
+
266  {
+
267  $array["timestamp"] = strtotime(trim($parts[0]));
+
268  $array["level"] = self::logLevel(trim($parts[1]));
+
269  $array["channel"] = trim($parts[2]);
+
270  $array["server_id"] = trim($parts[3]);
+
271  $array["msg"] = TeamSpeak3_Helper_String::factory(trim($parts[4]));
+
272  $array["msg_plain"] = $entry;
+
273  $array["malformed"] = FALSE;
+
274  }
+
275 
+
276  return $array;
+
277  }
+
278 
+
279  /**
+
280  * Converts a given string to a ServerQuery password hash.
+
281  *
+
282  * @param string $plain
+
283  * @return string
+
284  */
+
285  public static function password($plain)
+
286  {
+
287  return base64_encode(sha1($plain, TRUE));
+
288  }
+
289 
+
290  /**
+
291  * Returns a client-like formatted version of the TeamSpeak 3 version string.
+
292  *
+
293  * @param string $version
+
294  * @param string $format
+
295  * @return string
+
296  */
+
297  public static function version($version, $format = "Y-m-d h:i:s")
+
298  {
+
299  if(!$version instanceof TeamSpeak3_Helper_String)
+
300  {
+
301  $version = new TeamSpeak3_Helper_String($version);
+
302  }
+
303 
+
304  $buildno = $version->section("[", 1)->filterDigits()->toInt();
+
305 
+
306  return ($buildno <= 15001) ? $version : $version->section("[")->append("(" . date($format, $buildno) . ")");
+
307  }
+
308 
+
309  /**
+
310  * Returns a client-like short-formatted version of the TeamSpeak 3 version string.
+
311  *
+
312  * @param string $version
+
313  * @return string
+
314  */
+
315  public static function versionShort($version)
+
316  {
+
317  if(!$version instanceof TeamSpeak3_Helper_String)
+
318  {
+
319  $version = new TeamSpeak3_Helper_String($version);
+
320  }
+
321 
+
322  return $version->section(" ", 0);
+
323  }
+
324 
+
325  /**
+
326  * Tries to detect the type of an image by a given string and returns it.
+
327  *
+
328  * @param string $binary
+
329  * @return string
+
330  */
+
331  public static function imageMimeType($binary)
+
332  {
+
333  if(!preg_match('/\A(?:(\xff\xd8\xff)|(GIF8[79]a)|(\x89PNG\x0d\x0a)|(BM)|(\x49\x49(\x2a\x00|\x00\x4a))|(FORM.{4}ILBM))/', $binary, $matches))
+
334  {
+
335  return "application/octet-stream";
+
336  }
+
337 
+
338  $type = array(
+
339  1 => "image/jpeg",
+
340  2 => "image/gif",
+
341  3 => "image/png",
+
342  4 => "image/x-windows-bmp",
+
343  5 => "image/tiff",
+
344  6 => "image/x-ilbm",
+
345  );
+
346 
+
347  return $type[count($matches)-1];
+
348  }
+
349 }
+
+
+ + + + diff --git a/lib/docs/html/_crypt_8php.html b/lib/docs/html/_crypt_8php.html new file mode 100644 index 0000000..6c498bf --- /dev/null +++ b/lib/docs/html/_crypt_8php.html @@ -0,0 +1,156 @@ + + + + + + +TeamSpeak 3 PHP Framework: TeamSpeak3/Helper/Crypt.php File Reference + + + + + + + + + + + + + +
+
+ + + + + + + +
+
TeamSpeak 3 PHP Framework +  1.1.23 +
+
Copyright © Planet TeamSpeak. All rights reserved.
+
+
+ + + + + +
+
+ +
+
+
+ +
+ + + + +
+ +
+ +
+ +
+
Crypt.php File Reference
+
+
+ +

TeamSpeak 3 PHP Framework. +More...

+ +

Go to the source code of this file.

+ + + + + +

+Classes

class  TeamSpeak3_Helper_Crypt
 Helper class for data encryption. More...
 
+ + + +

+Namespaces

 TeamSpeak3
 
+ + + +

+Constant Groups

 TeamSpeak3
 
+

Detailed Description

+

TeamSpeak 3 PHP Framework.

+
Id:
Crypt.php 10/11/2013 11:35:21 scp
+

This program is free software: you can redistribute it and/or modify it under the terms of the GNU General Public License as published by the Free Software Foundation, either version 3 of the License, or (at your option) any later version.

+

This program is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License for more details.

+

You should have received a copy of the GNU General Public License along with this program. If not, see http://www.gnu.org/licenses/.

+ +

Definition in file Crypt.php.

+
+
+ + + + diff --git a/lib/docs/html/_crypt_8php_source.html b/lib/docs/html/_crypt_8php_source.html new file mode 100644 index 0000000..064638a --- /dev/null +++ b/lib/docs/html/_crypt_8php_source.html @@ -0,0 +1,604 @@ + + + + + + +TeamSpeak 3 PHP Framework: TeamSpeak3/Helper/Crypt.php Source File + + + + + + + + + + + + + +
+
+ + + + + + + +
+
TeamSpeak 3 PHP Framework +  1.1.23 +
+
Copyright © Planet TeamSpeak. All rights reserved.
+
+
+ + + + + +
+
+ +
+
+
+ +
+ + + + +
+ +
+ +
+
+
Crypt.php
+
+
+Go to the documentation of this file.
1 <?php
+
2 
+
3 /**
+
4  * @file
+
5  * TeamSpeak 3 PHP Framework
+
6  *
+
7  * $Id: Crypt.php 10/11/2013 11:35:21 scp@orilla $
+
8  *
+
9  * This program is free software: you can redistribute it and/or modify
+
10  * it under the terms of the GNU General Public License as published by
+
11  * the Free Software Foundation, either version 3 of the License, or
+
12  * (at your option) any later version.
+
13  *
+
14  * This program is distributed in the hope that it will be useful,
+
15  * but WITHOUT ANY WARRANTY; without even the implied warranty of
+
16  * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+
17  * GNU General Public License for more details.
+
18  *
+
19  * You should have received a copy of the GNU General Public License
+
20  * along with this program. If not, see <http://www.gnu.org/licenses/>.
+
21  *
+
22  * @package TeamSpeak3
+
23  * @version 1.1.23
+
24  * @author Sven 'ScP' Paulsen
+
25  * @copyright Copyright (c) 2010 by Planet TeamSpeak. All rights reserved.
+
26  */
+
27 
+
28 /**
+
29  * @class TeamSpeak3_Helper_Crypt
+
30  * @brief Helper class for data encryption.
+
31  */
+ +
33 {
+
34  /**
+
35  * Stores the secret passphrase to encrypt or decrypt a given string.
+
36  *
+
37  * @var string
+
38  */
+
39  protected $passphrase = null;
+
40 
+
41  /**
+
42  * Stores an array containing 18 32-bit entries.
+
43  *
+
44  * @var array
+
45  */
+
46  protected $p = array();
+
47 
+
48  /**
+
49  * Stores an array containing 4 sub-arrays with 256 32-bit entries.
+
50  *
+
51  * @var array
+
52  */
+
53  protected $s = array();
+
54 
+
55  /**
+
56  * The TeamSpeak3_Helper_Crypt constructor.
+
57  *
+
58  * @param string $secret
+
59  * @return TeamSpeak3_Helper_Crypt
+
60  */
+
61  public function __construct($secret)
+
62  {
+
63  $this->setDefaultKeys();
+
64  $this->setSecretKey($secret);
+
65  }
+
66 
+
67  /**
+
68  * Encrypts a given string.
+
69  *
+
70  * @param string $string
+
71  * @return string
+
72  */
+
73  public function encrypt($string)
+
74  {
+
75  $string = trim($string);
+
76  $encryp = "";
+
77  $length = strlen($string);
+
78  $string .= str_repeat(chr(0), (8-($length%8))%8);
+
79 
+
80  for($i = 0; $i < $length; $i += 8)
+
81  {
+
82  list(,$xl,$xr) = unpack("N2", substr($string, $i, 8));
+
83  $this->encipher($xl, $xr);
+
84  $encryp .= pack("N2", $xl, $xr);
+
85  }
+
86 
+
87  return base64_encode($encryp);
+
88  }
+
89 
+
90  /**
+
91  * Decrypts a given string.
+
92  *
+
93  * @param string $string
+
94  * @return string
+
95  */
+
96  public function decrypt($string)
+
97  {
+
98  $string = base64_decode($string);
+
99  $decryp = "";
+
100  $length = strlen($string);
+
101  $string .= str_repeat(chr(0), (8-($length%8))%8);
+
102 
+
103  for($i = 0; $i < $length; $i += 8)
+
104  {
+
105  list(,$xl,$xr) = unpack("N2", substr($string, $i, 8));
+
106  $this->decipher($xl, $xr);
+
107  $decryp .= pack("N2", $xl, $xr);
+
108  }
+
109 
+
110  return trim($decryp);
+
111  }
+
112 
+
113  /**
+
114  * Enciphers a single 64-bit block.
+
115  *
+
116  * @param integer $xl
+
117  * @param integer $xr
+
118  */
+
119  protected function encipher(&$xl, &$xr)
+
120  {
+
121  for($i = 0; $i < 16; $i++)
+
122  {
+
123  $temp = $xl ^ $this->p[$i];
+
124  $xl = ((($this->s[0][($temp>>24) & 255] + $this->s[1][($temp>>16) & 255]) ^ $this->s[2][($temp>>8) & 255]) + $this->s[3][$temp & 255]) ^ $xr;
+
125  $xr = $temp;
+
126  }
+
127 
+
128  $xr = $xl ^ $this->p[16];
+
129  $xl = $temp ^ $this->p[17];
+
130  }
+
131 
+
132  /**
+
133  * Deciphers a single 64-bit block
+
134  *
+
135  * @param integer $xl
+
136  * @param integer $xr
+
137  * @return void
+
138  */
+
139  protected function decipher(&$xl, &$xr)
+
140  {
+
141  for($i = 17; $i > 1; $i--)
+
142  {
+
143  $temp = $xl ^ $this->p[$i];
+
144  $xl = ((($this->s[0][($temp>>24) & 255] + $this->s[1][($temp>>16) & 255]) ^ $this->s[2][($temp>>8) & 255]) + $this->s[3][$temp & 255]) ^ $xr;
+
145  $xr = $temp;
+
146  }
+
147 
+
148  $xr = $xl ^ $this->p[1];
+
149  $xl = $temp ^ $this->p[0];
+
150  }
+
151 
+
152  /**
+
153  * Sets the secret key using the specified pasphrase.
+
154  *
+
155  * @param string $passphrase
+
156  * @throws Habitat_Exception
+
157  * @return void
+
158  */
+
159  protected function setSecretKey($passphrase)
+
160  {
+
161  $length = strlen($passphrase);
+
162 
+
163  if(strlen($passphrase) < 1 || strlen($passphrase) > 56)
+
164  {
+
165  throw new TeamSpeak3_Helper_Exception("secret passphrase must contain at least one but less than 56 characters");
+
166  }
+
167 
+
168  $k = 0;
+
169  $data = 0;
+
170  $datal = 0;
+
171  $datar = 0;
+
172 
+
173  for($i = 0; $i < 18; $i++)
+
174  {
+
175  $data = 0;
+
176  for($j = 4; $j > 0; $j--)
+
177  {
+
178  $data = $data << 8 | ord($passphrase{$k});
+
179  $k = ($k+1) % $length;
+
180  }
+
181  $this->p[$i] ^= $data;
+
182  }
+
183 
+
184 
+
185  for($i = 0; $i <= 16; $i += 2)
+
186  {
+
187  $this->encipher($datal, $datar);
+
188  $this->p[$i] = $datal;
+
189  $this->p[$i+1] = $datar;
+
190  }
+
191 
+
192  foreach($this->s as $key => $val)
+
193  {
+
194  for ($i = 0; $i < 256; $i += 2)
+
195  {
+
196  $this->encipher($datal, $datar);
+
197  $this->s[$key][$i] = $datal;
+
198  $this->s[$key][$i+1] = $datar;
+
199  }
+
200  }
+
201  }
+
202 
+
203  /**
+
204  * Sets the defult p and s keys.
+
205  *
+
206  * @return void
+
207  */
+
208  protected function setDefaultKeys()
+
209  {
+
210  $this->p = array(
+
211  0x243F6A88, 0x85A308D3, 0x13198A2E, 0x03707344, 0xA4093822, 0x299F31D0,
+
212  0x082EFA98, 0xEC4E6C89, 0x452821E6, 0x38D01377, 0xBE5466CF, 0x34E90C6C,
+
213  0xC0AC29B7, 0xC97C50DD, 0x3F84D5B5, 0xB5470917, 0x9216D5D9, 0x8979FB1B,
+
214  );
+
215  $this->s = array(
+
216  array(
+
217  0xD1310BA6, 0x98DFB5AC, 0x2FFD72DB, 0xD01ADFB7,
+
218  0xB8E1AFED, 0x6A267E96, 0xBA7C9045, 0xF12C7F99,
+
219  0x24A19947, 0xB3916CF7, 0x0801F2E2, 0x858EFC16,
+
220  0x636920D8, 0x71574E69, 0xA458FEA3, 0xF4933D7E,
+
221  0x0D95748F, 0x728EB658, 0x718BCD58, 0x82154AEE,
+
222  0x7B54A41D, 0xC25A59B5, 0x9C30D539, 0x2AF26013,
+
223  0xC5D1B023, 0x286085F0, 0xCA417918, 0xB8DB38EF,
+
224  0x8E79DCB0, 0x603A180E, 0x6C9E0E8B, 0xB01E8A3E,
+
225  0xD71577C1, 0xBD314B27, 0x78AF2FDA, 0x55605C60,
+
226  0xE65525F3, 0xAA55AB94, 0x57489862, 0x63E81440,
+
227  0x55CA396A, 0x2AAB10B6, 0xB4CC5C34, 0x1141E8CE,
+
228  0xA15486AF, 0x7C72E993, 0xB3EE1411, 0x636FBC2A,
+
229  0x2BA9C55D, 0x741831F6, 0xCE5C3E16, 0x9B87931E,
+
230  0xAFD6BA33, 0x6C24CF5C, 0x7A325381, 0x28958677,
+
231  0x3B8F4898, 0x6B4BB9AF, 0xC4BFE81B, 0x66282193,
+
232  0x61D809CC, 0xFB21A991, 0x487CAC60, 0x5DEC8032,
+
233  0xEF845D5D, 0xE98575B1, 0xDC262302, 0xEB651B88,
+
234  0x23893E81, 0xD396ACC5, 0x0F6D6FF3, 0x83F44239,
+
235  0x2E0B4482, 0xA4842004, 0x69C8F04A, 0x9E1F9B5E,
+
236  0x21C66842, 0xF6E96C9A, 0x670C9C61, 0xABD388F0,
+
237  0x6A51A0D2, 0xD8542F68, 0x960FA728, 0xAB5133A3,
+
238  0x6EEF0B6C, 0x137A3BE4, 0xBA3BF050, 0x7EFB2A98,
+
239  0xA1F1651D, 0x39AF0176, 0x66CA593E, 0x82430E88,
+
240  0x8CEE8619, 0x456F9FB4, 0x7D84A5C3, 0x3B8B5EBE,
+
241  0xE06F75D8, 0x85C12073, 0x401A449F, 0x56C16AA6,
+
242  0x4ED3AA62, 0x363F7706, 0x1BFEDF72, 0x429B023D,
+
243  0x37D0D724, 0xD00A1248, 0xDB0FEAD3, 0x49F1C09B,
+
244  0x075372C9, 0x80991B7B, 0x25D479D8, 0xF6E8DEF7,
+
245  0xE3FE501A, 0xB6794C3B, 0x976CE0BD, 0x04C006BA,
+
246  0xC1A94FB6, 0x409F60C4, 0x5E5C9EC2, 0x196A2463,
+
247  0x68FB6FAF, 0x3E6C53B5, 0x1339B2EB, 0x3B52EC6F,
+
248  0x6DFC511F, 0x9B30952C, 0xCC814544, 0xAF5EBD09,
+
249  0xBEE3D004, 0xDE334AFD, 0x660F2807, 0x192E4BB3,
+
250  0xC0CBA857, 0x45C8740F, 0xD20B5F39, 0xB9D3FBDB,
+
251  0x5579C0BD, 0x1A60320A, 0xD6A100C6, 0x402C7279,
+
252  0x679F25FE, 0xFB1FA3CC, 0x8EA5E9F8, 0xDB3222F8,
+
253  0x3C7516DF, 0xFD616B15, 0x2F501EC8, 0xAD0552AB,
+
254  0x323DB5FA, 0xFD238760, 0x53317B48, 0x3E00DF82,
+
255  0x9E5C57BB, 0xCA6F8CA0, 0x1A87562E, 0xDF1769DB,
+
256  0xD542A8F6, 0x287EFFC3, 0xAC6732C6, 0x8C4F5573,
+
257  0x695B27B0, 0xBBCA58C8, 0xE1FFA35D, 0xB8F011A0,
+
258  0x10FA3D98, 0xFD2183B8, 0x4AFCB56C, 0x2DD1D35B,
+
259  0x9A53E479, 0xB6F84565, 0xD28E49BC, 0x4BFB9790,
+
260  0xE1DDF2DA, 0xA4CB7E33, 0x62FB1341, 0xCEE4C6E8,
+
261  0xEF20CADA, 0x36774C01, 0xD07E9EFE, 0x2BF11FB4,
+
262  0x95DBDA4D, 0xAE909198, 0xEAAD8E71, 0x6B93D5A0,
+
263  0xD08ED1D0, 0xAFC725E0, 0x8E3C5B2F, 0x8E7594B7,
+
264  0x8FF6E2FB, 0xF2122B64, 0x8888B812, 0x900DF01C,
+
265  0x4FAD5EA0, 0x688FC31C, 0xD1CFF191, 0xB3A8C1AD,
+
266  0x2F2F2218, 0xBE0E1777, 0xEA752DFE, 0x8B021FA1,
+
267  0xE5A0CC0F, 0xB56F74E8, 0x18ACF3D6, 0xCE89E299,
+
268  0xB4A84FE0, 0xFD13E0B7, 0x7CC43B81, 0xD2ADA8D9,
+
269  0x165FA266, 0x80957705, 0x93CC7314, 0x211A1477,
+
270  0xE6AD2065, 0x77B5FA86, 0xC75442F5, 0xFB9D35CF,
+
271  0xEBCDAF0C, 0x7B3E89A0, 0xD6411BD3, 0xAE1E7E49,
+
272  0x00250E2D, 0x2071B35E, 0x226800BB, 0x57B8E0AF,
+
273  0x2464369B, 0xF009B91E, 0x5563911D, 0x59DFA6AA,
+
274  0x78C14389, 0xD95A537F, 0x207D5BA2, 0x02E5B9C5,
+
275  0x83260376, 0x6295CFA9, 0x11C81968, 0x4E734A41,
+
276  0xB3472DCA, 0x7B14A94A, 0x1B510052, 0x9A532915,
+
277  0xD60F573F, 0xBC9BC6E4, 0x2B60A476, 0x81E67400,
+
278  0x08BA6FB5, 0x571BE91F, 0xF296EC6B, 0x2A0DD915,
+
279  0xB6636521, 0xE7B9F9B6, 0xFF34052E, 0xC5855664,
+
280  0x53B02D5D, 0xA99F8FA1, 0x08BA4799, 0x6E85076A
+
281  ),
+
282  array(
+
283  0x4B7A70E9, 0xB5B32944, 0xDB75092E, 0xC4192623,
+
284  0xAD6EA6B0, 0x49A7DF7D, 0x9CEE60B8, 0x8FEDB266,
+
285  0xECAA8C71, 0x699A17FF, 0x5664526C, 0xC2B19EE1,
+
286  0x193602A5, 0x75094C29, 0xA0591340, 0xE4183A3E,
+
287  0x3F54989A, 0x5B429D65, 0x6B8FE4D6, 0x99F73FD6,
+
288  0xA1D29C07, 0xEFE830F5, 0x4D2D38E6, 0xF0255DC1,
+
289  0x4CDD2086, 0x8470EB26, 0x6382E9C6, 0x021ECC5E,
+
290  0x09686B3F, 0x3EBAEFC9, 0x3C971814, 0x6B6A70A1,
+
291  0x687F3584, 0x52A0E286, 0xB79C5305, 0xAA500737,
+
292  0x3E07841C, 0x7FDEAE5C, 0x8E7D44EC, 0x5716F2B8,
+
293  0xB03ADA37, 0xF0500C0D, 0xF01C1F04, 0x0200B3FF,
+
294  0xAE0CF51A, 0x3CB574B2, 0x25837A58, 0xDC0921BD,
+
295  0xD19113F9, 0x7CA92FF6, 0x94324773, 0x22F54701,
+
296  0x3AE5E581, 0x37C2DADC, 0xC8B57634, 0x9AF3DDA7,
+
297  0xA9446146, 0x0FD0030E, 0xECC8C73E, 0xA4751E41,
+
298  0xE238CD99, 0x3BEA0E2F, 0x3280BBA1, 0x183EB331,
+
299  0x4E548B38, 0x4F6DB908, 0x6F420D03, 0xF60A04BF,
+
300  0x2CB81290, 0x24977C79, 0x5679B072, 0xBCAF89AF,
+
301  0xDE9A771F, 0xD9930810, 0xB38BAE12, 0xDCCF3F2E,
+
302  0x5512721F, 0x2E6B7124, 0x501ADDE6, 0x9F84CD87,
+
303  0x7A584718, 0x7408DA17, 0xBC9F9ABC, 0xE94B7D8C,
+
304  0xEC7AEC3A, 0xDB851DFA, 0x63094366, 0xC464C3D2,
+
305  0xEF1C1847, 0x3215D908, 0xDD433B37, 0x24C2BA16,
+
306  0x12A14D43, 0x2A65C451, 0x50940002, 0x133AE4DD,
+
307  0x71DFF89E, 0x10314E55, 0x81AC77D6, 0x5F11199B,
+
308  0x043556F1, 0xD7A3C76B, 0x3C11183B, 0x5924A509,
+
309  0xF28FE6ED, 0x97F1FBFA, 0x9EBABF2C, 0x1E153C6E,
+
310  0x86E34570, 0xEAE96FB1, 0x860E5E0A, 0x5A3E2AB3,
+
311  0x771FE71C, 0x4E3D06FA, 0x2965DCB9, 0x99E71D0F,
+
312  0x803E89D6, 0x5266C825, 0x2E4CC978, 0x9C10B36A,
+
313  0xC6150EBA, 0x94E2EA78, 0xA5FC3C53, 0x1E0A2DF4,
+
314  0xF2F74EA7, 0x361D2B3D, 0x1939260F, 0x19C27960,
+
315  0x5223A708, 0xF71312B6, 0xEBADFE6E, 0xEAC31F66,
+
316  0xE3BC4595, 0xA67BC883, 0xB17F37D1, 0x018CFF28,
+
317  0xC332DDEF, 0xBE6C5AA5, 0x65582185, 0x68AB9802,
+
318  0xEECEA50F, 0xDB2F953B, 0x2AEF7DAD, 0x5B6E2F84,
+
319  0x1521B628, 0x29076170, 0xECDD4775, 0x619F1510,
+
320  0x13CCA830, 0xEB61BD96, 0x0334FE1E, 0xAA0363CF,
+
321  0xB5735C90, 0x4C70A239, 0xD59E9E0B, 0xCBAADE14,
+
322  0xEECC86BC, 0x60622CA7, 0x9CAB5CAB, 0xB2F3846E,
+
323  0x648B1EAF, 0x19BDF0CA, 0xA02369B9, 0x655ABB50,
+
324  0x40685A32, 0x3C2AB4B3, 0x319EE9D5, 0xC021B8F7,
+
325  0x9B540B19, 0x875FA099, 0x95F7997E, 0x623D7DA8,
+
326  0xF837889A, 0x97E32D77, 0x11ED935F, 0x16681281,
+
327  0x0E358829, 0xC7E61FD6, 0x96DEDFA1, 0x7858BA99,
+
328  0x57F584A5, 0x1B227263, 0x9B83C3FF, 0x1AC24696,
+
329  0xCDB30AEB, 0x532E3054, 0x8FD948E4, 0x6DBC3128,
+
330  0x58EBF2EF, 0x34C6FFEA, 0xFE28ED61, 0xEE7C3C73,
+
331  0x5D4A14D9, 0xE864B7E3, 0x42105D14, 0x203E13E0,
+
332  0x45EEE2B6, 0xA3AAABEA, 0xDB6C4F15, 0xFACB4FD0,
+
333  0xC742F442, 0xEF6ABBB5, 0x654F3B1D, 0x41CD2105,
+
334  0xD81E799E, 0x86854DC7, 0xE44B476A, 0x3D816250,
+
335  0xCF62A1F2, 0x5B8D2646, 0xFC8883A0, 0xC1C7B6A3,
+
336  0x7F1524C3, 0x69CB7492, 0x47848A0B, 0x5692B285,
+
337  0x095BBF00, 0xAD19489D, 0x1462B174, 0x23820E00,
+
338  0x58428D2A, 0x0C55F5EA, 0x1DADF43E, 0x233F7061,
+
339  0x3372F092, 0x8D937E41, 0xD65FECF1, 0x6C223BDB,
+
340  0x7CDE3759, 0xCBEE7460, 0x4085F2A7, 0xCE77326E,
+
341  0xA6078084, 0x19F8509E, 0xE8EFD855, 0x61D99735,
+
342  0xA969A7AA, 0xC50C06C2, 0x5A04ABFC, 0x800BCADC,
+
343  0x9E447A2E, 0xC3453484, 0xFDD56705, 0x0E1E9EC9,
+
344  0xDB73DBD3, 0x105588CD, 0x675FDA79, 0xE3674340,
+
345  0xC5C43465, 0x713E38D8, 0x3D28F89E, 0xF16DFF20,
+
346  0x153E21E7, 0x8FB03D4A, 0xE6E39F2B, 0xDB83ADF7
+
347  ),
+
348  array(
+
349  0xE93D5A68, 0x948140F7, 0xF64C261C, 0x94692934,
+
350  0x411520F7, 0x7602D4F7, 0xBCF46B2E, 0xD4A20068,
+
351  0xD4082471, 0x3320F46A, 0x43B7D4B7, 0x500061AF,
+
352  0x1E39F62E, 0x97244546, 0x14214F74, 0xBF8B8840,
+
353  0x4D95FC1D, 0x96B591AF, 0x70F4DDD3, 0x66A02F45,
+
354  0xBFBC09EC, 0x03BD9785, 0x7FAC6DD0, 0x31CB8504,
+
355  0x96EB27B3, 0x55FD3941, 0xDA2547E6, 0xABCA0A9A,
+
356  0x28507825, 0x530429F4, 0x0A2C86DA, 0xE9B66DFB,
+
357  0x68DC1462, 0xD7486900, 0x680EC0A4, 0x27A18DEE,
+
358  0x4F3FFEA2, 0xE887AD8C, 0xB58CE006, 0x7AF4D6B6,
+
359  0xAACE1E7C, 0xD3375FEC, 0xCE78A399, 0x406B2A42,
+
360  0x20FE9E35, 0xD9F385B9, 0xEE39D7AB, 0x3B124E8B,
+
361  0x1DC9FAF7, 0x4B6D1856, 0x26A36631, 0xEAE397B2,
+
362  0x3A6EFA74, 0xDD5B4332, 0x6841E7F7, 0xCA7820FB,
+
363  0xFB0AF54E, 0xD8FEB397, 0x454056AC, 0xBA489527,
+
364  0x55533A3A, 0x20838D87, 0xFE6BA9B7, 0xD096954B,
+
365  0x55A867BC, 0xA1159A58, 0xCCA92963, 0x99E1DB33,
+
366  0xA62A4A56, 0x3F3125F9, 0x5EF47E1C, 0x9029317C,
+
367  0xFDF8E802, 0x04272F70, 0x80BB155C, 0x05282CE3,
+
368  0x95C11548, 0xE4C66D22, 0x48C1133F, 0xC70F86DC,
+
369  0x07F9C9EE, 0x41041F0F, 0x404779A4, 0x5D886E17,
+
370  0x325F51EB, 0xD59BC0D1, 0xF2BCC18F, 0x41113564,
+
371  0x257B7834, 0x602A9C60, 0xDFF8E8A3, 0x1F636C1B,
+
372  0x0E12B4C2, 0x02E1329E, 0xAF664FD1, 0xCAD18115,
+
373  0x6B2395E0, 0x333E92E1, 0x3B240B62, 0xEEBEB922,
+
374  0x85B2A20E, 0xE6BA0D99, 0xDE720C8C, 0x2DA2F728,
+
375  0xD0127845, 0x95B794FD, 0x647D0862, 0xE7CCF5F0,
+
376  0x5449A36F, 0x877D48FA, 0xC39DFD27, 0xF33E8D1E,
+
377  0x0A476341, 0x992EFF74, 0x3A6F6EAB, 0xF4F8FD37,
+
378  0xA812DC60, 0xA1EBDDF8, 0x991BE14C, 0xDB6E6B0D,
+
379  0xC67B5510, 0x6D672C37, 0x2765D43B, 0xDCD0E804,
+
380  0xF1290DC7, 0xCC00FFA3, 0xB5390F92, 0x690FED0B,
+
381  0x667B9FFB, 0xCEDB7D9C, 0xA091CF0B, 0xD9155EA3,
+
382  0xBB132F88, 0x515BAD24, 0x7B9479BF, 0x763BD6EB,
+
383  0x37392EB3, 0xCC115979, 0x8026E297, 0xF42E312D,
+
384  0x6842ADA7, 0xC66A2B3B, 0x12754CCC, 0x782EF11C,
+
385  0x6A124237, 0xB79251E7, 0x06A1BBE6, 0x4BFB6350,
+
386  0x1A6B1018, 0x11CAEDFA, 0x3D25BDD8, 0xE2E1C3C9,
+
387  0x44421659, 0x0A121386, 0xD90CEC6E, 0xD5ABEA2A,
+
388  0x64AF674E, 0xDA86A85F, 0xBEBFE988, 0x64E4C3FE,
+
389  0x9DBC8057, 0xF0F7C086, 0x60787BF8, 0x6003604D,
+
390  0xD1FD8346, 0xF6381FB0, 0x7745AE04, 0xD736FCCC,
+
391  0x83426B33, 0xF01EAB71, 0xB0804187, 0x3C005E5F,
+
392  0x77A057BE, 0xBDE8AE24, 0x55464299, 0xBF582E61,
+
393  0x4E58F48F, 0xF2DDFDA2, 0xF474EF38, 0x8789BDC2,
+
394  0x5366F9C3, 0xC8B38E74, 0xB475F255, 0x46FCD9B9,
+
395  0x7AEB2661, 0x8B1DDF84, 0x846A0E79, 0x915F95E2,
+
396  0x466E598E, 0x20B45770, 0x8CD55591, 0xC902DE4C,
+
397  0xB90BACE1, 0xBB8205D0, 0x11A86248, 0x7574A99E,
+
398  0xB77F19B6, 0xE0A9DC09, 0x662D09A1, 0xC4324633,
+
399  0xE85A1F02, 0x09F0BE8C, 0x4A99A025, 0x1D6EFE10,
+
400  0x1AB93D1D, 0x0BA5A4DF, 0xA186F20F, 0x2868F169,
+
401  0xDCB7DA83, 0x573906FE, 0xA1E2CE9B, 0x4FCD7F52,
+
402  0x50115E01, 0xA70683FA, 0xA002B5C4, 0x0DE6D027,
+
403  0x9AF88C27, 0x773F8641, 0xC3604C06, 0x61A806B5,
+
404  0xF0177A28, 0xC0F586E0, 0x006058AA, 0x30DC7D62,
+
405  0x11E69ED7, 0x2338EA63, 0x53C2DD94, 0xC2C21634,
+
406  0xBBCBEE56, 0x90BCB6DE, 0xEBFC7DA1, 0xCE591D76,
+
407  0x6F05E409, 0x4B7C0188, 0x39720A3D, 0x7C927C24,
+
408  0x86E3725F, 0x724D9DB9, 0x1AC15BB4, 0xD39EB8FC,
+
409  0xED545578, 0x08FCA5B5, 0xD83D7CD3, 0x4DAD0FC4,
+
410  0x1E50EF5E, 0xB161E6F8, 0xA28514D9, 0x6C51133C,
+
411  0x6FD5C7E7, 0x56E14EC4, 0x362ABFCE, 0xDDC6C837,
+
412  0xD79A3234, 0x92638212, 0x670EFA8E, 0x406000E0
+
413  ),
+
414  array(
+
415  0x3A39CE37, 0xD3FAF5CF, 0xABC27737, 0x5AC52D1B,
+
416  0x5CB0679E, 0x4FA33742, 0xD3822740, 0x99BC9BBE,
+
417  0xD5118E9D, 0xBF0F7315, 0xD62D1C7E, 0xC700C47B,
+
418  0xB78C1B6B, 0x21A19045, 0xB26EB1BE, 0x6A366EB4,
+
419  0x5748AB2F, 0xBC946E79, 0xC6A376D2, 0x6549C2C8,
+
420  0x530FF8EE, 0x468DDE7D, 0xD5730A1D, 0x4CD04DC6,
+
421  0x2939BBDB, 0xA9BA4650, 0xAC9526E8, 0xBE5EE304,
+
422  0xA1FAD5F0, 0x6A2D519A, 0x63EF8CE2, 0x9A86EE22,
+
423  0xC089C2B8, 0x43242EF6, 0xA51E03AA, 0x9CF2D0A4,
+
424  0x83C061BA, 0x9BE96A4D, 0x8FE51550, 0xBA645BD6,
+
425  0x2826A2F9, 0xA73A3AE1, 0x4BA99586, 0xEF5562E9,
+
426  0xC72FEFD3, 0xF752F7DA, 0x3F046F69, 0x77FA0A59,
+
427  0x80E4A915, 0x87B08601, 0x9B09E6AD, 0x3B3EE593,
+
428  0xE990FD5A, 0x9E34D797, 0x2CF0B7D9, 0x022B8B51,
+
429  0x96D5AC3A, 0x017DA67D, 0xD1CF3ED6, 0x7C7D2D28,
+
430  0x1F9F25CF, 0xADF2B89B, 0x5AD6B472, 0x5A88F54C,
+
431  0xE029AC71, 0xE019A5E6, 0x47B0ACFD, 0xED93FA9B,
+
432  0xE8D3C48D, 0x283B57CC, 0xF8D56629, 0x79132E28,
+
433  0x785F0191, 0xED756055, 0xF7960E44, 0xE3D35E8C,
+
434  0x15056DD4, 0x88F46DBA, 0x03A16125, 0x0564F0BD,
+
435  0xC3EB9E15, 0x3C9057A2, 0x97271AEC, 0xA93A072A,
+
436  0x1B3F6D9B, 0x1E6321F5, 0xF59C66FB, 0x26DCF319,
+
437  0x7533D928, 0xB155FDF5, 0x03563482, 0x8ABA3CBB,
+
438  0x28517711, 0xC20AD9F8, 0xABCC5167, 0xCCAD925F,
+
439  0x4DE81751, 0x3830DC8E, 0x379D5862, 0x9320F991,
+
440  0xEA7A90C2, 0xFB3E7BCE, 0x5121CE64, 0x774FBE32,
+
441  0xA8B6E37E, 0xC3293D46, 0x48DE5369, 0x6413E680,
+
442  0xA2AE0810, 0xDD6DB224, 0x69852DFD, 0x09072166,
+
443  0xB39A460A, 0x6445C0DD, 0x586CDECF, 0x1C20C8AE,
+
444  0x5BBEF7DD, 0x1B588D40, 0xCCD2017F, 0x6BB4E3BB,
+
445  0xDDA26A7E, 0x3A59FF45, 0x3E350A44, 0xBCB4CDD5,
+
446  0x72EACEA8, 0xFA6484BB, 0x8D6612AE, 0xBF3C6F47,
+
447  0xD29BE463, 0x542F5D9E, 0xAEC2771B, 0xF64E6370,
+
448  0x740E0D8D, 0xE75B1357, 0xF8721671, 0xAF537D5D,
+
449  0x4040CB08, 0x4EB4E2CC, 0x34D2466A, 0x0115AF84,
+
450  0xE1B00428, 0x95983A1D, 0x06B89FB4, 0xCE6EA048,
+
451  0x6F3F3B82, 0x3520AB82, 0x011A1D4B, 0x277227F8,
+
452  0x611560B1, 0xE7933FDC, 0xBB3A792B, 0x344525BD,
+
453  0xA08839E1, 0x51CE794B, 0x2F32C9B7, 0xA01FBAC9,
+
454  0xE01CC87E, 0xBCC7D1F6, 0xCF0111C3, 0xA1E8AAC7,
+
455  0x1A908749, 0xD44FBD9A, 0xD0DADECB, 0xD50ADA38,
+
456  0x0339C32A, 0xC6913667, 0x8DF9317C, 0xE0B12B4F,
+
457  0xF79E59B7, 0x43F5BB3A, 0xF2D519FF, 0x27D9459C,
+
458  0xBF97222C, 0x15E6FC2A, 0x0F91FC71, 0x9B941525,
+
459  0xFAE59361, 0xCEB69CEB, 0xC2A86459, 0x12BAA8D1,
+
460  0xB6C1075E, 0xE3056A0C, 0x10D25065, 0xCB03A442,
+
461  0xE0EC6E0E, 0x1698DB3B, 0x4C98A0BE, 0x3278E964,
+
462  0x9F1F9532, 0xE0D392DF, 0xD3A0342B, 0x8971F21E,
+
463  0x1B0A7441, 0x4BA3348C, 0xC5BE7120, 0xC37632D8,
+
464  0xDF359F8D, 0x9B992F2E, 0xE60B6F47, 0x0FE3F11D,
+
465  0xE54CDA54, 0x1EDAD891, 0xCE6279CF, 0xCD3E7E6F,
+
466  0x1618B166, 0xFD2C1D05, 0x848FD2C5, 0xF6FB2299,
+
467  0xF523F357, 0xA6327623, 0x93A83531, 0x56CCCD02,
+
468  0xACF08162, 0x5A75EBB5, 0x6E163697, 0x88D273CC,
+
469  0xDE966292, 0x81B949D0, 0x4C50901B, 0x71C65614,
+
470  0xE6C6C7BD, 0x327A140A, 0x45E1D006, 0xC3F27B9A,
+
471  0xC9AA53FD, 0x62A80F00, 0xBB25BFE2, 0x35BDD2F6,
+
472  0x71126905, 0xB2040222, 0xB6CBCF7C, 0xCD769C2B,
+
473  0x53113EC0, 0x1640E3D3, 0x38ABBD60, 0x2547ADF0,
+
474  0xBA38209C, 0xF746CE76, 0x77AFA1C5, 0x20756060,
+
475  0x85CBFE4E, 0x8AE88DD8, 0x7AAAF9B0, 0x4CF9AA7E,
+
476  0x1948C25C, 0x02FB8A8C, 0x01C36AE4, 0xD6EBE1F9,
+
477  0x90D4F869, 0xA65CDEA0, 0x3F09252D, 0xC208E69F,
+
478  0xB74E6132, 0xCE77E25B, 0x578FDFE3, 0x3AC372E6
+
479  )
+
480  );
+
481  }
+
482 }
+
+
+ + + + diff --git a/lib/docs/html/_event_8php.html b/lib/docs/html/_event_8php.html new file mode 100644 index 0000000..4b6f0e2 --- /dev/null +++ b/lib/docs/html/_event_8php.html @@ -0,0 +1,156 @@ + + + + + + +TeamSpeak 3 PHP Framework: TeamSpeak3/Adapter/ServerQuery/Event.php File Reference + + + + + + + + + + + + + +
+
+ + + + + + + +
+
TeamSpeak 3 PHP Framework +  1.1.23 +
+
Copyright © Planet TeamSpeak. All rights reserved.
+
+
+ + + + + +
+
+ +
+
+
+ +
+ + + + +
+ +
+ +
+ +
+
Event.php File Reference
+
+
+ +

TeamSpeak 3 PHP Framework. +More...

+ +

Go to the source code of this file.

+ + + + + +

+Classes

class  TeamSpeak3_Adapter_ServerQuery_Event
 Provides methods to analyze and format a ServerQuery event. More...
 
+ + + +

+Namespaces

 TeamSpeak3
 
+ + + +

+Constant Groups

 TeamSpeak3
 
+

Detailed Description

+

TeamSpeak 3 PHP Framework.

+
Id:
Event.php 10/11/2013 11:35:21 scp
+

This program is free software: you can redistribute it and/or modify it under the terms of the GNU General Public License as published by the Free Software Foundation, either version 3 of the License, or (at your option) any later version.

+

This program is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License for more details.

+

You should have received a copy of the GNU General Public License along with this program. If not, see http://www.gnu.org/licenses/.

+ +

Definition in file Event.php.

+
+
+ + + + diff --git a/lib/docs/html/_event_8php_source.html b/lib/docs/html/_event_8php_source.html new file mode 100644 index 0000000..df05d6f --- /dev/null +++ b/lib/docs/html/_event_8php_source.html @@ -0,0 +1,292 @@ + + + + + + +TeamSpeak 3 PHP Framework: TeamSpeak3/Adapter/ServerQuery/Event.php Source File + + + + + + + + + + + + + +
+
+ + + + + + + +
+
TeamSpeak 3 PHP Framework +  1.1.23 +
+
Copyright © Planet TeamSpeak. All rights reserved.
+
+
+ + + + + +
+
+ +
+
+
+ +
+ + + + +
+ +
+ +
+
+
Event.php
+
+
+Go to the documentation of this file.
1 <?php
+
2 
+
3 /**
+
4  * @file
+
5  * TeamSpeak 3 PHP Framework
+
6  *
+
7  * $Id: Event.php 10/11/2013 11:35:21 scp@orilla $
+
8  *
+
9  * This program is free software: you can redistribute it and/or modify
+
10  * it under the terms of the GNU General Public License as published by
+
11  * the Free Software Foundation, either version 3 of the License, or
+
12  * (at your option) any later version.
+
13  *
+
14  * This program is distributed in the hope that it will be useful,
+
15  * but WITHOUT ANY WARRANTY; without even the implied warranty of
+
16  * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+
17  * GNU General Public License for more details.
+
18  *
+
19  * You should have received a copy of the GNU General Public License
+
20  * along with this program. If not, see <http://www.gnu.org/licenses/>.
+
21  *
+
22  * @package TeamSpeak3
+
23  * @version 1.1.23
+
24  * @author Sven 'ScP' Paulsen
+
25  * @copyright Copyright (c) 2010 by Planet TeamSpeak. All rights reserved.
+
26  */
+
27 
+
28 /**
+
29  * @class TeamSpeak3_Adapter_ServerQuery_Event
+
30  * @brief Provides methods to analyze and format a ServerQuery event.
+
31  */
+
32 class TeamSpeak3_Adapter_ServerQuery_Event implements ArrayAccess
+
33 {
+
34  /**
+
35  * Stores the event type.
+
36  *
+
37  * @var TeamSpeak3_Helper_String
+
38  */
+
39  protected $type = null;
+
40 
+
41  /**
+
42  * Stores the event data.
+
43  *
+
44  * @var array
+
45  */
+
46  protected $data = null;
+
47 
+
48  /**
+
49  * Stores the event data as an unparsed string.
+
50  *
+
51  * @var TeamSpeak3_Helper_String
+
52  */
+
53  protected $mesg = null;
+
54 
+
55  /**
+
56  * Creates a new TeamSpeak3_Adapter_ServerQuery_Event object.
+
57  *
+
58  * @param TeamSpeak3_Helper_String $evt
+
59  * @param TeamSpeak3_Node_Host $con
+
60  * @throws TeamSpeak3_Adapter_Exception
+
61  * @return TeamSpeak3_Adapter_ServerQuery_Event
+
62  */
+
63  public function __construct(TeamSpeak3_Helper_String $evt, TeamSpeak3_Node_Host $con = null)
+
64  {
+
65  if(!$evt->startsWith(TeamSpeak3::EVENT))
+
66  {
+
67  throw new TeamSpeak3_Adapter_Exception("invalid notification event format");
+
68  }
+
69 
+
70  list($type, $data) = $evt->split(TeamSpeak3::SEPARATOR_CELL, 2);
+
71 
+
72  if(empty($data))
+
73  {
+
74  throw new TeamSpeak3_Adapter_Exception("invalid notification event data");
+
75  }
+
76 
+ +
78  $repl = new TeamSpeak3_Adapter_ServerQuery_Reply(array($data, $fake), $type);
+
79 
+
80  $this->type = $type->substr(strlen(TeamSpeak3::EVENT));
+
81  $this->data = $repl->toList();
+
82  $this->mesg = $data;
+
83 
+
84  TeamSpeak3_Helper_Signal::getInstance()->emit("notifyEvent", $this, $con);
+
85  TeamSpeak3_Helper_Signal::getInstance()->emit("notify" . ucfirst($this->type), $this, $con);
+
86  }
+
87 
+
88  /**
+
89  * Returns the event type string.
+
90  *
+
91  * @return TeamSpeak3_Helper_String
+
92  */
+
93  public function getType()
+
94  {
+
95  return $this->type;
+
96  }
+
97 
+
98  /**
+
99  * Returns the event data array.
+
100  *
+
101  * @return array
+
102  */
+
103  public function getData()
+
104  {
+
105  return $this->data;
+
106  }
+
107 
+
108  /**
+
109  * Returns the event data as an unparsed string.
+
110  *
+
111  * @return TeamSpeak3_Helper_String
+
112  */
+
113  public function getMessage()
+
114  {
+
115  return $this->mesg;
+
116  }
+
117 
+
118  /**
+
119  * @ignore
+
120  */
+
121  public function offsetExists($offset)
+
122  {
+
123  return array_key_exists($offset, $this->data) ? TRUE : FALSE;
+
124  }
+
125 
+
126  /**
+
127  * @ignore
+
128  */
+
129  public function offsetGet($offset)
+
130  {
+
131  if(!$this->offsetExists($offset))
+
132  {
+
133  throw new TeamSpeak3_Adapter_ServerQuery_Exception("invalid parameter", 0x602);
+
134  }
+
135 
+
136  return $this->data[$offset];
+
137  }
+
138 
+
139  /**
+
140  * @ignore
+
141  */
+
142  public function offsetSet($offset, $value)
+
143  {
+
144  throw new TeamSpeak3_Node_Exception("event '" . $this->getType() . "' is read only");
+
145  }
+
146 
+
147  /**
+
148  * @ignore
+
149  */
+
150  public function offsetUnset($offset)
+
151  {
+
152  unset($this->data[$offset]);
+
153  }
+
154 
+
155  /**
+
156  * @ignore
+
157  */
+
158  public function __get($offset)
+
159  {
+
160  return $this->offsetGet($offset);
+
161  }
+
162 
+
163  /**
+
164  * @ignore
+
165  */
+
166  public function __set($offset, $value)
+
167  {
+
168  $this->offsetSet($offset, $value);
+
169  }
+
170 }
+
+
+ + + + diff --git a/lib/docs/html/_exception_8php.html b/lib/docs/html/_exception_8php.html new file mode 100644 index 0000000..c97adc1 --- /dev/null +++ b/lib/docs/html/_exception_8php.html @@ -0,0 +1,156 @@ + + + + + + +TeamSpeak 3 PHP Framework: TeamSpeak3/Exception.php File Reference + + + + + + + + + + + + + +
+
+ + + + + + + +
+
TeamSpeak 3 PHP Framework +  1.1.23 +
+
Copyright © Planet TeamSpeak. All rights reserved.
+
+
+ + + + + +
+
+ +
+
+
+ +
+ + + + +
+ +
+ +
+ +
+
Exception.php File Reference
+
+
+ +

TeamSpeak 3 PHP Framework. +More...

+ +

Go to the source code of this file.

+ + + + + +

+Classes

class  TeamSpeak3_Exception
 Enhanced exception class for TeamSpeak3 objects. More...
 
+ + + +

+Namespaces

 TeamSpeak3
 
+ + + +

+Constant Groups

 TeamSpeak3
 
+

Detailed Description

+

TeamSpeak 3 PHP Framework.

+
Id:
Exception.php 10/11/2013 11:35:21 scp
+

This program is free software: you can redistribute it and/or modify it under the terms of the GNU General Public License as published by the Free Software Foundation, either version 3 of the License, or (at your option) any later version.

+

This program is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License for more details.

+

You should have received a copy of the GNU General Public License along with this program. If not, see http://www.gnu.org/licenses/.

+ +

Definition in file Exception.php.

+
+
+ + + + diff --git a/lib/docs/html/_exception_8php_source.html b/lib/docs/html/_exception_8php_source.html new file mode 100644 index 0000000..109e4b9 --- /dev/null +++ b/lib/docs/html/_exception_8php_source.html @@ -0,0 +1,251 @@ + + + + + + +TeamSpeak 3 PHP Framework: TeamSpeak3/Exception.php Source File + + + + + + + + + + + + + +
+
+ + + + + + + +
+
TeamSpeak 3 PHP Framework +  1.1.23 +
+
Copyright © Planet TeamSpeak. All rights reserved.
+
+
+ + + + + +
+
+ +
+
+
+ +
+ + + + +
+ +
+ +
+
+
Exception.php
+
+
+Go to the documentation of this file.
1 <?php
+
2 
+
3 /**
+
4  * @file
+
5  * TeamSpeak 3 PHP Framework
+
6  *
+
7  * $Id: Exception.php 10/11/2013 11:35:21 scp@orilla $
+
8  *
+
9  * This program is free software: you can redistribute it and/or modify
+
10  * it under the terms of the GNU General Public License as published by
+
11  * the Free Software Foundation, either version 3 of the License, or
+
12  * (at your option) any later version.
+
13  *
+
14  * This program is distributed in the hope that it will be useful,
+
15  * but WITHOUT ANY WARRANTY; without even the implied warranty of
+
16  * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+
17  * GNU General Public License for more details.
+
18  *
+
19  * You should have received a copy of the GNU General Public License
+
20  * along with this program. If not, see <http://www.gnu.org/licenses/>.
+
21  *
+
22  * @package TeamSpeak3
+
23  * @version 1.1.23
+
24  * @author Sven 'ScP' Paulsen
+
25  * @copyright Copyright (c) 2010 by Planet TeamSpeak. All rights reserved.
+
26  */
+
27 
+
28 /**
+
29  * @class TeamSpeak3_Exception
+
30  * @brief Enhanced exception class for TeamSpeak3 objects.
+
31  */
+
32 class TeamSpeak3_Exception extends Exception
+
33 {
+
34  /**
+
35  * Stores custom error messages.
+
36  *
+
37  * @var array
+
38  */
+
39  protected static $messages = array();
+
40 
+
41  /**
+
42  * The TeamSpeak3_Exception constructor.
+
43  *
+
44  * @param string $mesg
+
45  * @param integer $code
+
46  * @return TeamSpeak3_Exception
+
47  */
+
48  public function __construct($mesg, $code = 0x00)
+
49  {
+
50  parent::__construct($mesg, $code);
+
51 
+
52  if(array_key_exists((int) $code, self::$messages))
+
53  {
+
54  $this->message = $this->prepareCustomMessage(self::$messages[intval($code)]);
+
55  }
+
56 
+
57  TeamSpeak3_Helper_Signal::getInstance()->emit("errorException", $this);
+
58  }
+
59 
+
60  /**
+
61  * Prepares a custom error message by replacing pre-defined signs with given values.
+
62  *
+
63  * @param TeamSpeak3_Helper_String $mesg
+
64  * @return TeamSpeak3_Helper_String
+
65  */
+ +
67  {
+
68  $args = array(
+
69  "code" => $this->getCode(),
+
70  "mesg" => $this->getMessage(),
+
71  "line" => $this->getLine(),
+
72  "file" => $this->getFile(),
+
73  );
+
74 
+
75  return $mesg->arg($args)->toString();
+
76  }
+
77 
+
78  /**
+
79  * Registers a custom error message to $code.
+
80  *
+
81  * @param integer $code
+
82  * @param string $mesg
+
83  * @throws TeamSpeak3_Exception
+
84  * @return void
+
85  */
+
86  public static function registerCustomMessage($code, $mesg)
+
87  {
+
88  if(array_key_exists((int) $code, self::$messages))
+
89  {
+
90  throw new self("custom message for code 0x" . strtoupper(dechex($code)) . " is already registered");
+
91  }
+
92 
+
93  if(!is_string($mesg))
+
94  {
+
95  throw new self("custom message for code 0x" . strtoupper(dechex($code)) . " must be a string");
+
96  }
+
97 
+
98  self::$messages[(int) $code] = new TeamSpeak3_Helper_String($mesg);
+
99  }
+
100 
+
101  /**
+
102  * Unregisters a custom error message from $code.
+
103  *
+
104  * @param integer $code
+
105  * @throws TeamSpeak3_Exception
+
106  * @return void
+
107  */
+
108  public static function unregisterCustomMessage($code)
+
109  {
+
110  if(!array_key_exists((int) $code, self::$messages))
+
111  {
+
112  throw new self("custom message for code 0x" . strtoupper(dechex($code)) . " is not registered");
+
113  }
+
114 
+
115  unset(self::$messages[intval($code)]);
+
116  }
+
117 
+
118  /**
+
119  * Returns the class from which the exception was thrown.
+
120  *
+
121  * @return string
+
122  */
+
123  public function getSender()
+
124  {
+
125  $trace = $this->getTrace();
+
126 
+
127  return (isset($trace[0]["class"])) ? $trace[0]["class"] : "{main}";
+
128  }
+
129 }
+
+
+ + + + diff --git a/lib/docs/html/_file_transfer_8php.html b/lib/docs/html/_file_transfer_8php.html new file mode 100644 index 0000000..46f9329 --- /dev/null +++ b/lib/docs/html/_file_transfer_8php.html @@ -0,0 +1,156 @@ + + + + + + +TeamSpeak 3 PHP Framework: TeamSpeak3/Adapter/FileTransfer.php File Reference + + + + + + + + + + + + + +
+
+ + + + + + + +
+
TeamSpeak 3 PHP Framework +  1.1.23 +
+
Copyright © Planet TeamSpeak. All rights reserved.
+
+
+ + + + + +
+
+ +
+
+
+ +
+ + + + +
+ +
+ +
+ +
+
FileTransfer.php File Reference
+
+
+ +

TeamSpeak 3 PHP Framework. +More...

+ +

Go to the source code of this file.

+ + + + + +

+Classes

class  TeamSpeak3_Adapter_FileTransfer
 Provides low-level methods for file transfer communication with a TeamSpeak 3 Server. More...
 
+ + + +

+Namespaces

 TeamSpeak3
 
+ + + +

+Constant Groups

 TeamSpeak3
 
+

Detailed Description

+

TeamSpeak 3 PHP Framework.

+
Id:
FileTransfer.php 10/11/2013 11:35:21 scp
+

This program is free software: you can redistribute it and/or modify it under the terms of the GNU General Public License as published by the Free Software Foundation, either version 3 of the License, or (at your option) any later version.

+

This program is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License for more details.

+

You should have received a copy of the GNU General Public License along with this program. If not, see http://www.gnu.org/licenses/.

+ +

Definition in file FileTransfer.php.

+
+
+ + + + diff --git a/lib/docs/html/_file_transfer_8php_source.html b/lib/docs/html/_file_transfer_8php_source.html new file mode 100644 index 0000000..005f9f0 --- /dev/null +++ b/lib/docs/html/_file_transfer_8php_source.html @@ -0,0 +1,312 @@ + + + + + + +TeamSpeak 3 PHP Framework: TeamSpeak3/Adapter/FileTransfer.php Source File + + + + + + + + + + + + + +
+
+ + + + + + + +
+
TeamSpeak 3 PHP Framework +  1.1.23 +
+
Copyright © Planet TeamSpeak. All rights reserved.
+
+
+ + + + + +
+
+ +
+
+
+ +
+ + + + +
+ +
+ +
+
+
FileTransfer.php
+
+
+Go to the documentation of this file.
1 <?php
+
2 
+
3 /**
+
4  * @file
+
5  * TeamSpeak 3 PHP Framework
+
6  *
+
7  * $Id: FileTransfer.php 10/11/2013 11:35:21 scp@orilla $
+
8  *
+
9  * This program is free software: you can redistribute it and/or modify
+
10  * it under the terms of the GNU General Public License as published by
+
11  * the Free Software Foundation, either version 3 of the License, or
+
12  * (at your option) any later version.
+
13  *
+
14  * This program is distributed in the hope that it will be useful,
+
15  * but WITHOUT ANY WARRANTY; without even the implied warranty of
+
16  * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+
17  * GNU General Public License for more details.
+
18  *
+
19  * You should have received a copy of the GNU General Public License
+
20  * along with this program. If not, see <http://www.gnu.org/licenses/>.
+
21  *
+
22  * @package TeamSpeak3
+
23  * @version 1.1.23
+
24  * @author Sven 'ScP' Paulsen
+
25  * @copyright Copyright (c) 2010 by Planet TeamSpeak. All rights reserved.
+
26  */
+
27 
+
28 /**
+
29  * @class TeamSpeak3_Adapter_FileTransfer
+
30  * @brief Provides low-level methods for file transfer communication with a TeamSpeak 3 Server.
+
31  */
+ +
33 {
+
34  /**
+
35  * Connects the TeamSpeak3_Transport_Abstract object and performs initial actions on the remote
+
36  * server.
+
37  *
+
38  * @throws TeamSpeak3_Adapter_Exception
+
39  * @return void
+
40  */
+
41  public function syn()
+
42  {
+
43  $this->initTransport($this->options);
+
44  $this->transport->setAdapter($this);
+
45 
+
46  TeamSpeak3_Helper_Profiler::init(spl_object_hash($this));
+
47 
+
48  TeamSpeak3_Helper_Signal::getInstance()->emit("filetransferConnected", $this);
+
49  }
+
50 
+
51  /**
+
52  * The TeamSpeak3_Adapter_FileTransfer destructor.
+
53  *
+
54  * @return void
+
55  */
+
56  public function __destruct()
+
57  {
+
58  if($this->getTransport() instanceof TeamSpeak3_Transport_Abstract && $this->getTransport()->isConnected())
+
59  {
+
60  $this->getTransport()->disconnect();
+
61  }
+
62  }
+
63 
+
64  /**
+
65  * Sends a valid file transfer key to the server to initialize the file transfer.
+
66  *
+
67  * @param string $ftkey
+
68  * @throws TeamSpeak3_Adapter_FileTransfer_Exception
+
69  * @return void
+
70  */
+
71  protected function init($ftkey)
+
72  {
+
73  if(strlen($ftkey) != 32)
+
74  {
+
75  throw new TeamSpeak3_Adapter_FileTransfer_Exception("invalid file transfer key format");
+
76  }
+
77 
+
78  $this->getProfiler()->start();
+
79  $this->getTransport()->send($ftkey);
+
80 
+
81  TeamSpeak3_Helper_Signal::getInstance()->emit("filetransferHandshake", $this);
+
82  }
+
83 
+
84  /**
+
85  * Sends the content of a file to the server.
+
86  *
+
87  * @param string $ftkey
+
88  * @param integer $seek
+
89  * @param string $data
+
90  * @throws TeamSpeak3_Adapter_FileTransfer_Exception
+
91  * @return void
+
92  */
+
93  public function upload($ftkey, $seek, $data)
+
94  {
+
95  $this->init($ftkey);
+
96 
+
97  $size = strlen($data);
+
98  $seek = intval($seek);
+
99  $pack = 4096;
+
100 
+
101  TeamSpeak3_Helper_Signal::getInstance()->emit("filetransferUploadStarted", $ftkey, $seek, $size);
+
102 
+
103  for(;$seek < $size;)
+
104  {
+
105  $rest = $size-$seek;
+
106  $pack = $rest < $pack ? $rest : $pack;
+
107  $buff = substr($data, $seek, $pack);
+
108  $seek = $seek+$pack;
+
109 
+
110  $this->getTransport()->send($buff);
+
111 
+
112  TeamSpeak3_Helper_Signal::getInstance()->emit("filetransferUploadProgress", $ftkey, $seek, $size);
+
113  }
+
114 
+
115  $this->getProfiler()->stop();
+
116 
+
117  TeamSpeak3_Helper_Signal::getInstance()->emit("filetransferUploadFinished", $ftkey, $seek, $size);
+
118 
+
119  if($seek < $size)
+
120  {
+
121  throw new TeamSpeak3_Adapter_FileTransfer_Exception("incomplete file upload (" . $seek . " of " . $size . " bytes)");
+
122  }
+
123  }
+
124 
+
125  /**
+
126  * Returns the content of a downloaded file as a TeamSpeak3_Helper_String object.
+
127  *
+
128  * @param string $ftkey
+
129  * @param integer $size
+
130  * @param boolean $passthru
+
131  * @throws TeamSpeak3_Adapter_FileTransfer_Exception
+
132  * @return TeamSpeak3_Helper_String
+
133  */
+
134  public function download($ftkey, $size, $passthru = FALSE)
+
135  {
+
136  $this->init($ftkey);
+
137 
+
138  if($passthru)
+
139  {
+
140  return $this->passthru($size);
+
141  }
+
142 
+
143  $buff = new TeamSpeak3_Helper_String("");
+
144  $size = intval($size);
+
145  $pack = 4096;
+
146 
+
147  TeamSpeak3_Helper_Signal::getInstance()->emit("filetransferDownloadStarted", $ftkey, count($buff), $size);
+
148 
+
149  for($seek = 0;$seek < $size;)
+
150  {
+
151  $rest = $size-$seek;
+
152  $pack = $rest < $pack ? $rest : $pack;
+
153  $data = $this->getTransport()->read($rest < $pack ? $rest : $pack);
+
154  $seek = $seek+$pack;
+
155 
+
156  $buff->append($data);
+
157 
+
158  TeamSpeak3_Helper_Signal::getInstance()->emit("filetransferDownloadProgress", $ftkey, count($buff), $size);
+
159  }
+
160 
+
161  $this->getProfiler()->stop();
+
162 
+
163  TeamSpeak3_Helper_Signal::getInstance()->emit("filetransferDownloadFinished", $ftkey, count($buff), $size);
+
164 
+
165  if(strlen($buff) != $size)
+
166  {
+
167  throw new TeamSpeak3_Adapter_FileTransfer_Exception("incomplete file download (" . count($buff) . " of " . $size . " bytes)");
+
168  }
+
169 
+
170  return $buff;
+
171  }
+
172 
+
173  /**
+
174  * Outputs all remaining data on a TeamSpeak 3 file transfer stream using PHP's fpassthru()
+
175  * function.
+
176  *
+
177  * @param integer $size
+
178  * @throws TeamSpeak3_Adapter_FileTransfer_Exception
+
179  * @return void
+
180  */
+
181  protected function passthru($size)
+
182  {
+
183  $buff_size = fpassthru($this->getTransport()->getStream());
+
184 
+
185  if($buff_size != $size)
+
186  {
+
187  throw new TeamSpeak3_Adapter_FileTransfer_Exception("incomplete file download (" . intval($buff_size) . " of " . $size . " bytes)");
+
188  }
+
189  }
+
190 }
+
+
+ + + + diff --git a/lib/docs/html/_handler_8php.html b/lib/docs/html/_handler_8php.html new file mode 100644 index 0000000..c8f1544 --- /dev/null +++ b/lib/docs/html/_handler_8php.html @@ -0,0 +1,156 @@ + + + + + + +TeamSpeak 3 PHP Framework: TeamSpeak3/Helper/Signal/Handler.php File Reference + + + + + + + + + + + + + +
+
+ + + + + + + +
+
TeamSpeak 3 PHP Framework +  1.1.23 +
+
Copyright © Planet TeamSpeak. All rights reserved.
+
+
+ + + + + +
+
+ +
+
+
+ +
+ + + + +
+ +
+ +
+ +
+
Handler.php File Reference
+
+
+ +

TeamSpeak 3 PHP Framework. +More...

+ +

Go to the source code of this file.

+ + + + + +

+Classes

class  TeamSpeak3_Helper_Signal_Handler
 Helper class providing handler functions for signals. More...
 
+ + + +

+Namespaces

 TeamSpeak3
 
+ + + +

+Constant Groups

 TeamSpeak3
 
+

Detailed Description

+

TeamSpeak 3 PHP Framework.

+
Id:
Handler.php 10/11/2013 11:35:21 scp
+

This program is free software: you can redistribute it and/or modify it under the terms of the GNU General Public License as published by the Free Software Foundation, either version 3 of the License, or (at your option) any later version.

+

This program is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License for more details.

+

You should have received a copy of the GNU General Public License along with this program. If not, see http://www.gnu.org/licenses/.

+ +

Definition in file Handler.php.

+
+
+ + + + diff --git a/lib/docs/html/_handler_8php_source.html b/lib/docs/html/_handler_8php_source.html new file mode 100644 index 0000000..bf2cbd0 --- /dev/null +++ b/lib/docs/html/_handler_8php_source.html @@ -0,0 +1,200 @@ + + + + + + +TeamSpeak 3 PHP Framework: TeamSpeak3/Helper/Signal/Handler.php Source File + + + + + + + + + + + + + +
+
+ + + + + + + +
+
TeamSpeak 3 PHP Framework +  1.1.23 +
+
Copyright © Planet TeamSpeak. All rights reserved.
+
+
+ + + + + +
+
+ +
+
+
+ +
+ + + + +
+ +
+ +
+
+
Handler.php
+
+
+Go to the documentation of this file.
1 <?php
+
2 
+
3 /**
+
4  * @file
+
5  * TeamSpeak 3 PHP Framework
+
6  *
+
7  * $Id: Handler.php 10/11/2013 11:35:21 scp@orilla $
+
8  *
+
9  * This program is free software: you can redistribute it and/or modify
+
10  * it under the terms of the GNU General Public License as published by
+
11  * the Free Software Foundation, either version 3 of the License, or
+
12  * (at your option) any later version.
+
13  *
+
14  * This program is distributed in the hope that it will be useful,
+
15  * but WITHOUT ANY WARRANTY; without even the implied warranty of
+
16  * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+
17  * GNU General Public License for more details.
+
18  *
+
19  * You should have received a copy of the GNU General Public License
+
20  * along with this program. If not, see <http://www.gnu.org/licenses/>.
+
21  *
+
22  * @package TeamSpeak3
+
23  * @version 1.1.23
+
24  * @author Sven 'ScP' Paulsen
+
25  * @copyright Copyright (c) 2010 by Planet TeamSpeak. All rights reserved.
+
26  */
+
27 
+
28 /**
+
29  * @class TeamSpeak3_Helper_Signal_Handler
+
30  * @brief Helper class providing handler functions for signals.
+
31  */
+ +
33 {
+
34  /**
+
35  * Stores the name of the subscribed signal.
+
36  *
+
37  * @var string
+
38  */
+
39  protected $signal = null;
+
40 
+
41  /**
+
42  * Stores the callback function for the subscribed signal.
+
43  *
+
44  * @var mixed
+
45  */
+
46  protected $callback = null;
+
47 
+
48  /**
+
49  * The TeamSpeak3_Helper_Signal_Handler constructor.
+
50  *
+
51  * @param string $signal
+
52  * @param mixed $callback
+
53  * @throws TeamSpeak3_Helper_Signal_Exception
+
54  * @return TeamSpeak3_Helper_Signal_Handler
+
55  */
+
56  public function __construct($signal, $callback)
+
57  {
+
58  $this->signal = (string) $signal;
+
59 
+
60  if(!is_callable($callback))
+
61  {
+
62  throw new TeamSpeak3_Helper_Signal_Exception("invalid callback specified for signal '" . $signal . "'");
+
63  }
+
64 
+
65  $this->callback = $callback;
+
66  }
+
67 
+
68  /**
+
69  * Invoke the signal handler.
+
70  *
+
71  * @param array $args
+
72  * @return mixed
+
73  */
+
74  public function call(array $args = array())
+
75  {
+
76  return call_user_func_array($this->callback, $args);
+
77  }
+
78 }
+
+
+ + + + diff --git a/lib/docs/html/_helper_2_exception_8php.html b/lib/docs/html/_helper_2_exception_8php.html new file mode 100644 index 0000000..3cd213d --- /dev/null +++ b/lib/docs/html/_helper_2_exception_8php.html @@ -0,0 +1,156 @@ + + + + + + +TeamSpeak 3 PHP Framework: TeamSpeak3/Helper/Exception.php File Reference + + + + + + + + + + + + + +
+
+ + + + + + + +
+
TeamSpeak 3 PHP Framework +  1.1.23 +
+
Copyright © Planet TeamSpeak. All rights reserved.
+
+
+ + + + + +
+
+ +
+
+
+ +
+ + + + +
+ +
+ +
+ +
+
Exception.php File Reference
+
+
+ +

TeamSpeak 3 PHP Framework. +More...

+ +

Go to the source code of this file.

+ + + + + +

+Classes

class  TeamSpeak3_Helper_Exception
 Enhanced exception class for TeamSpeak3_Helper_* objects. More...
 
+ + + +

+Namespaces

 TeamSpeak3
 
+ + + +

+Constant Groups

 TeamSpeak3
 
+

Detailed Description

+

TeamSpeak 3 PHP Framework.

+
Id:
Exception.php 10/11/2013 11:35:21 scp
+

This program is free software: you can redistribute it and/or modify it under the terms of the GNU General Public License as published by the Free Software Foundation, either version 3 of the License, or (at your option) any later version.

+

This program is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License for more details.

+

You should have received a copy of the GNU General Public License along with this program. If not, see http://www.gnu.org/licenses/.

+ +

Definition in file Exception.php.

+
+
+ + + + diff --git a/lib/docs/html/_helper_2_exception_8php_source.html b/lib/docs/html/_helper_2_exception_8php_source.html new file mode 100644 index 0000000..701b8ff --- /dev/null +++ b/lib/docs/html/_helper_2_exception_8php_source.html @@ -0,0 +1,154 @@ + + + + + + +TeamSpeak 3 PHP Framework: TeamSpeak3/Helper/Exception.php Source File + + + + + + + + + + + + + +
+
+ + + + + + + +
+
TeamSpeak 3 PHP Framework +  1.1.23 +
+
Copyright © Planet TeamSpeak. All rights reserved.
+
+
+ + + + + +
+
+ +
+
+
+ +
+ + + + +
+ +
+ +
+
+
Exception.php
+
+
+Go to the documentation of this file.
1 <?php
+
2 
+
3 /**
+
4  * @file
+
5  * TeamSpeak 3 PHP Framework
+
6  *
+
7  * $Id: Exception.php 10/11/2013 11:35:21 scp@orilla $
+
8  *
+
9  * This program is free software: you can redistribute it and/or modify
+
10  * it under the terms of the GNU General Public License as published by
+
11  * the Free Software Foundation, either version 3 of the License, or
+
12  * (at your option) any later version.
+
13  *
+
14  * This program is distributed in the hope that it will be useful,
+
15  * but WITHOUT ANY WARRANTY; without even the implied warranty of
+
16  * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+
17  * GNU General Public License for more details.
+
18  *
+
19  * You should have received a copy of the GNU General Public License
+
20  * along with this program. If not, see <http://www.gnu.org/licenses/>.
+
21  *
+
22  * @package TeamSpeak3
+
23  * @version 1.1.23
+
24  * @author Sven 'ScP' Paulsen
+
25  * @copyright Copyright (c) 2010 by Planet TeamSpeak. All rights reserved.
+
26  */
+
27 
+
28 /**
+
29  * @class TeamSpeak3_Helper_Exception
+
30  * @brief Enhanced exception class for TeamSpeak3_Helper_* objects.
+
31  */
+ +
+
+ + + + diff --git a/lib/docs/html/_helper_2_profiler_2_exception_8php.html b/lib/docs/html/_helper_2_profiler_2_exception_8php.html new file mode 100644 index 0000000..4526934 --- /dev/null +++ b/lib/docs/html/_helper_2_profiler_2_exception_8php.html @@ -0,0 +1,156 @@ + + + + + + +TeamSpeak 3 PHP Framework: TeamSpeak3/Helper/Profiler/Exception.php File Reference + + + + + + + + + + + + + +
+
+ + + + + + + +
+
TeamSpeak 3 PHP Framework +  1.1.23 +
+
Copyright © Planet TeamSpeak. All rights reserved.
+
+
+ + + + + +
+
+ +
+
+
+ +
+ + + + +
+ +
+ +
+ +
+
Exception.php File Reference
+
+
+ +

TeamSpeak 3 PHP Framework. +More...

+ +

Go to the source code of this file.

+ + + + + +

+Classes

class  TeamSpeak3_Helper_Profiler_Exception
 Enhanced exception class for TeamSpeak3_Helper_Profiler objects. More...
 
+ + + +

+Namespaces

 TeamSpeak3
 
+ + + +

+Constant Groups

 TeamSpeak3
 
+

Detailed Description

+

TeamSpeak 3 PHP Framework.

+
Id:
Exception.php 10/11/2013 11:35:21 scp
+

This program is free software: you can redistribute it and/or modify it under the terms of the GNU General Public License as published by the Free Software Foundation, either version 3 of the License, or (at your option) any later version.

+

This program is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License for more details.

+

You should have received a copy of the GNU General Public License along with this program. If not, see http://www.gnu.org/licenses/.

+ +

Definition in file Exception.php.

+
+
+ + + + diff --git a/lib/docs/html/_helper_2_profiler_2_exception_8php_source.html b/lib/docs/html/_helper_2_profiler_2_exception_8php_source.html new file mode 100644 index 0000000..98861dc --- /dev/null +++ b/lib/docs/html/_helper_2_profiler_2_exception_8php_source.html @@ -0,0 +1,154 @@ + + + + + + +TeamSpeak 3 PHP Framework: TeamSpeak3/Helper/Profiler/Exception.php Source File + + + + + + + + + + + + + +
+
+ + + + + + + +
+
TeamSpeak 3 PHP Framework +  1.1.23 +
+
Copyright © Planet TeamSpeak. All rights reserved.
+
+
+ + + + + +
+
+ +
+
+
+ +
+ + + + +
+ +
+ +
+
+
Exception.php
+
+
+Go to the documentation of this file.
1 <?php
+
2 
+
3 /**
+
4  * @file
+
5  * TeamSpeak 3 PHP Framework
+
6  *
+
7  * $Id: Exception.php 10/11/2013 11:35:21 scp@orilla $
+
8  *
+
9  * This program is free software: you can redistribute it and/or modify
+
10  * it under the terms of the GNU General Public License as published by
+
11  * the Free Software Foundation, either version 3 of the License, or
+
12  * (at your option) any later version.
+
13  *
+
14  * This program is distributed in the hope that it will be useful,
+
15  * but WITHOUT ANY WARRANTY; without even the implied warranty of
+
16  * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+
17  * GNU General Public License for more details.
+
18  *
+
19  * You should have received a copy of the GNU General Public License
+
20  * along with this program. If not, see <http://www.gnu.org/licenses/>.
+
21  *
+
22  * @package TeamSpeak3
+
23  * @version 1.1.23
+
24  * @author Sven 'ScP' Paulsen
+
25  * @copyright Copyright (c) 2010 by Planet TeamSpeak. All rights reserved.
+
26  */
+
27 
+
28 /**
+
29  * @class TeamSpeak3_Helper_Profiler_Exception
+
30  * @brief Enhanced exception class for TeamSpeak3_Helper_Profiler objects.
+
31  */
+ +
+
+ + + + diff --git a/lib/docs/html/_helper_2_signal_2_exception_8php.html b/lib/docs/html/_helper_2_signal_2_exception_8php.html new file mode 100644 index 0000000..186c66c --- /dev/null +++ b/lib/docs/html/_helper_2_signal_2_exception_8php.html @@ -0,0 +1,156 @@ + + + + + + +TeamSpeak 3 PHP Framework: TeamSpeak3/Helper/Signal/Exception.php File Reference + + + + + + + + + + + + + +
+
+ + + + + + + +
+
TeamSpeak 3 PHP Framework +  1.1.23 +
+
Copyright © Planet TeamSpeak. All rights reserved.
+
+
+ + + + + +
+
+ +
+
+
+ +
+ + + + +
+ +
+ +
+ +
+
Exception.php File Reference
+
+
+ +

TeamSpeak 3 PHP Framework. +More...

+ +

Go to the source code of this file.

+ + + + + +

+Classes

class  TeamSpeak3_Helper_Signal_Exception
 Enhanced exception class for TeamSpeak3_Helper_Signal objects. More...
 
+ + + +

+Namespaces

 TeamSpeak3
 
+ + + +

+Constant Groups

 TeamSpeak3
 
+

Detailed Description

+

TeamSpeak 3 PHP Framework.

+
Id:
Exception.php 10/11/2013 11:35:21 scp
+

This program is free software: you can redistribute it and/or modify it under the terms of the GNU General Public License as published by the Free Software Foundation, either version 3 of the License, or (at your option) any later version.

+

This program is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License for more details.

+

You should have received a copy of the GNU General Public License along with this program. If not, see http://www.gnu.org/licenses/.

+ +

Definition in file Exception.php.

+
+
+ + + + diff --git a/lib/docs/html/_helper_2_signal_2_exception_8php_source.html b/lib/docs/html/_helper_2_signal_2_exception_8php_source.html new file mode 100644 index 0000000..79441f3 --- /dev/null +++ b/lib/docs/html/_helper_2_signal_2_exception_8php_source.html @@ -0,0 +1,154 @@ + + + + + + +TeamSpeak 3 PHP Framework: TeamSpeak3/Helper/Signal/Exception.php Source File + + + + + + + + + + + + + +
+
+ + + + + + + +
+
TeamSpeak 3 PHP Framework +  1.1.23 +
+
Copyright © Planet TeamSpeak. All rights reserved.
+
+
+ + + + + +
+
+ +
+
+
+ +
+ + + + +
+ +
+ +
+
+
Exception.php
+
+
+Go to the documentation of this file.
1 <?php
+
2 
+
3 /**
+
4  * @file
+
5  * TeamSpeak 3 PHP Framework
+
6  *
+
7  * $Id: Exception.php 10/11/2013 11:35:21 scp@orilla $
+
8  *
+
9  * This program is free software: you can redistribute it and/or modify
+
10  * it under the terms of the GNU General Public License as published by
+
11  * the Free Software Foundation, either version 3 of the License, or
+
12  * (at your option) any later version.
+
13  *
+
14  * This program is distributed in the hope that it will be useful,
+
15  * but WITHOUT ANY WARRANTY; without even the implied warranty of
+
16  * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+
17  * GNU General Public License for more details.
+
18  *
+
19  * You should have received a copy of the GNU General Public License
+
20  * along with this program. If not, see <http://www.gnu.org/licenses/>.
+
21  *
+
22  * @package TeamSpeak3
+
23  * @version 1.1.23
+
24  * @author Sven 'ScP' Paulsen
+
25  * @copyright Copyright (c) 2010 by Planet TeamSpeak. All rights reserved.
+
26  */
+
27 
+
28 /**
+
29  * @class TeamSpeak3_Helper_Signal_Exception
+
30  * @brief Enhanced exception class for TeamSpeak3_Helper_Signal objects.
+
31  */
+ +
+
+ + + + diff --git a/lib/docs/html/_helper_2_signal_2_interface_8php.html b/lib/docs/html/_helper_2_signal_2_interface_8php.html new file mode 100644 index 0000000..dd3e1dd --- /dev/null +++ b/lib/docs/html/_helper_2_signal_2_interface_8php.html @@ -0,0 +1,156 @@ + + + + + + +TeamSpeak 3 PHP Framework: TeamSpeak3/Helper/Signal/Interface.php File Reference + + + + + + + + + + + + + +
+
+ + + + + + + +
+
TeamSpeak 3 PHP Framework +  1.1.23 +
+
Copyright © Planet TeamSpeak. All rights reserved.
+
+
+ + + + + +
+
+ +
+
+
+ +
+ + + + +
+ +
+ +
+ +
+
Interface.php File Reference
+
+
+ +

TeamSpeak 3 PHP Framework. +More...

+ +

Go to the source code of this file.

+ + + + + +

+Classes

class  TeamSpeak3_Helper_Signal_Interface
 Interface class describing the layout for TeamSpeak3_Helper_Signal callbacks. More...
 
+ + + +

+Namespaces

 TeamSpeak3
 
+ + + +

+Constant Groups

 TeamSpeak3
 
+

Detailed Description

+

TeamSpeak 3 PHP Framework.

+
Id:
Interface.php 10/11/2013 11:35:21 scp
+

This program is free software: you can redistribute it and/or modify it under the terms of the GNU General Public License as published by the Free Software Foundation, either version 3 of the License, or (at your option) any later version.

+

This program is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License for more details.

+

You should have received a copy of the GNU General Public License along with this program. If not, see http://www.gnu.org/licenses/.

+ +

Definition in file Interface.php.

+
+
+ + + + diff --git a/lib/docs/html/_helper_2_signal_2_interface_8php_source.html b/lib/docs/html/_helper_2_signal_2_interface_8php_source.html new file mode 100644 index 0000000..08d1ef1 --- /dev/null +++ b/lib/docs/html/_helper_2_signal_2_interface_8php_source.html @@ -0,0 +1,475 @@ + + + + + + +TeamSpeak 3 PHP Framework: TeamSpeak3/Helper/Signal/Interface.php Source File + + + + + + + + + + + + + +
+
+ + + + + + + +
+
TeamSpeak 3 PHP Framework +  1.1.23 +
+
Copyright © Planet TeamSpeak. All rights reserved.
+
+
+ + + + + +
+
+ +
+
+
+ +
+ + + + +
+ +
+ +
+
+
Interface.php
+
+
+Go to the documentation of this file.
1 <?php
+
2 
+
3 /**
+
4  * @file
+
5  * TeamSpeak 3 PHP Framework
+
6  *
+
7  * $Id: Interface.php 10/11/2013 11:35:21 scp@orilla $
+
8  *
+
9  * This program is free software: you can redistribute it and/or modify
+
10  * it under the terms of the GNU General Public License as published by
+
11  * the Free Software Foundation, either version 3 of the License, or
+
12  * (at your option) any later version.
+
13  *
+
14  * This program is distributed in the hope that it will be useful,
+
15  * but WITHOUT ANY WARRANTY; without even the implied warranty of
+
16  * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+
17  * GNU General Public License for more details.
+
18  *
+
19  * You should have received a copy of the GNU General Public License
+
20  * along with this program. If not, see <http://www.gnu.org/licenses/>.
+
21  *
+
22  * @package TeamSpeak3
+
23  * @version 1.1.23
+
24  * @author Sven 'ScP' Paulsen
+
25  * @copyright Copyright (c) 2010 by Planet TeamSpeak. All rights reserved.
+
26  */
+
27 
+
28 /**
+
29  * @class TeamSpeak3_Helper_Signal_Interface
+
30  * @brief Interface class describing the layout for TeamSpeak3_Helper_Signal callbacks.
+
31  */
+ +
33 {
+
34  /**
+
35  * Possible callback for '<adapter>Connected' signals.
+
36  *
+
37  * === Examples ===
+
38  * - TeamSpeak3_Helper_Signal::getInstance()->subscribe("serverqueryConnected", array($object, "onConnect"));
+
39  * - TeamSpeak3_Helper_Signal::getInstance()->subscribe("filetransferConnected", array($object, "onConnect"));
+
40  * - TeamSpeak3_Helper_Signal::getInstance()->subscribe("blacklistConnected", array($object, "onConnect"));
+
41  * - TeamSpeak3_Helper_Signal::getInstance()->subscribe("updateConnected", array($object, "onConnect"));
+
42  *
+
43  * @param TeamSpeak3_Adapter_Abstract $adapter
+
44  * @return void
+
45  */
+
46  public function onConnect(TeamSpeak3_Adapter_Abstract $adapter);
+
47 
+
48  /**
+
49  * Possible callback for '<adapter>Disconnected' signals.
+
50  *
+
51  * === Examples ===
+
52  * - TeamSpeak3_Helper_Signal::getInstance()->subscribe("serverqueryDisconnected", array($object, "onDisconnect"));
+
53  * - TeamSpeak3_Helper_Signal::getInstance()->subscribe("filetransferDisconnected", array($object, "onDisconnect"));
+
54  * - TeamSpeak3_Helper_Signal::getInstance()->subscribe("blacklistDisconnected", array($object, "onDisconnect"));
+
55  * - TeamSpeak3_Helper_Signal::getInstance()->subscribe("updateDisconnected", array($object, "onDisconnect"));
+
56  *
+
57  * @return void
+
58  */
+
59  public function onDisconnect();
+
60 
+
61  /**
+
62  * Possible callback for 'serverqueryCommandStarted' signals.
+
63  *
+
64  * === Examples ===
+
65  * - TeamSpeak3_Helper_Signal::getInstance()->subscribe("serverqueryCommandStarted", array($object, "onCommandStarted"));
+
66  *
+
67  * @param string $cmd
+
68  * @return void
+
69  */
+
70  public function onCommandStarted($cmd);
+
71 
+
72  /**
+
73  * Possible callback for 'serverqueryCommandFinished' signals.
+
74  *
+
75  * === Examples ===
+
76  * - TeamSpeak3_Helper_Signal::getInstance()->subscribe("serverqueryCommandFinished", array($object, "onCommandFinished"));
+
77  *
+
78  * @param string $cmd
+
79  * @param TeamSpeak3_Adapter_ServerQuery_Reply $reply
+
80  * @return void
+
81  */
+
82  public function onCommandFinished($cmd, TeamSpeak3_Adapter_ServerQuery_Reply $reply);
+
83 
+
84  /**
+
85  * Possible callback for 'notifyEvent' signals.
+
86  *
+
87  * === Examples ===
+
88  * - TeamSpeak3_Helper_Signal::getInstance()->subscribe("notifyEvent", array($object, "onEvent"));
+
89  *
+
90  * @param TeamSpeak3_Adapter_ServerQuery_Event $event
+
91  * @param TeamSpeak3_Node_Host $host
+
92  * @return void
+
93  */
+ +
95 
+
96  /**
+
97  * Possible callback for 'notifyError' signals.
+
98  *
+
99  * === Examples ===
+
100  * - TeamSpeak3_Helper_Signal::getInstance()->subscribe("notifyError", array($object, "onError"));
+
101  *
+
102  * @param TeamSpeak3_Adapter_ServerQuery_Reply $reply
+
103  * @return void
+
104  */
+
105  public function onError(TeamSpeak3_Adapter_ServerQuery_Reply $reply);
+
106 
+
107  /**
+
108  * Possible callback for 'notifyServerselected' signals.
+
109  *
+
110  * === Examples ===
+
111  * - TeamSpeak3_Helper_Signal::getInstance()->subscribe("notifyServerselected", array($object, "onServerselected"));
+
112  *
+
113  * @param TeamSpeak3_Node_Host $host
+
114  * @return void
+
115  */
+
116  public function onServerselected(TeamSpeak3_Node_Host $host);
+
117 
+
118  /**
+
119  * Possible callback for 'notifyServercreated' signals.
+
120  *
+
121  * === Examples ===
+
122  * - TeamSpeak3_Helper_Signal::getInstance()->subscribe("notifyServercreated", array($object, "onServercreated"));
+
123  *
+
124  * @param TeamSpeak3_Node_Host $host
+
125  * @param integer $sid
+
126  * @return void
+
127  */
+
128  public function onServercreated(TeamSpeak3_Node_Host $host, $sid);
+
129 
+
130  /**
+
131  * Possible callback for 'notifyServerdeleted' signals.
+
132  *
+
133  * === Examples ===
+
134  * - TeamSpeak3_Helper_Signal::getInstance()->subscribe("notifyServerdeleted", array($object, "onServerdeleted"));
+
135  *
+
136  * @param TeamSpeak3_Node_Host $host
+
137  * @param integer $sid
+
138  * @return void
+
139  */
+
140  public function onServerdeleted(TeamSpeak3_Node_Host $host, $sid);
+
141 
+
142  /**
+
143  * Possible callback for 'notifyServerstarted' signals.
+
144  *
+
145  * === Examples ===
+
146  * - TeamSpeak3_Helper_Signal::getInstance()->subscribe("notifyServerstarted", array($object, "onServerstarted"));
+
147  *
+
148  * @param TeamSpeak3_Node_Host $host
+
149  * @param integer $sid
+
150  * @return void
+
151  */
+
152  public function onServerstarted(TeamSpeak3_Node_Host $host, $sid);
+
153 
+
154  /**
+
155  * Possible callback for 'notifyServerstopped' signals.
+
156  *
+
157  * === Examples ===
+
158  * - TeamSpeak3_Helper_Signal::getInstance()->subscribe("notifyServerstopped", array($object, "onServerstopped"));
+
159  *
+
160  * @param TeamSpeak3_Node_Host $host
+
161  * @param integer $sid
+
162  * @return void
+
163  */
+
164  public function onServerstopped(TeamSpeak3_Node_Host $host, $sid);
+
165 
+
166  /**
+
167  * Possible callback for 'notifyServershutdown' signals.
+
168  *
+
169  * === Examples ===
+
170  * - TeamSpeak3_Helper_Signal::getInstance()->subscribe("notifyServershutdown", array($object, "onServershutdown"));
+
171  *
+
172  * @param TeamSpeak3_Node_Host $host
+
173  * @return void
+
174  */
+
175  public function onServershutdown(TeamSpeak3_Node_Host $host);
+
176 
+
177  /**
+
178  * Possible callback for 'notifyLogin' signals.
+
179  *
+
180  * === Examples ===
+
181  * - TeamSpeak3_Helper_Signal::getInstance()->subscribe("notifyLogin", array($object, "onLogin"));
+
182  *
+
183  * @param TeamSpeak3_Node_Host $host
+
184  * @return void
+
185  */
+
186  public function onLogin(TeamSpeak3_Node_Host $host);
+
187 
+
188  /**
+
189  * Possible callback for 'notifyLogout' signals.
+
190  *
+
191  * === Examples ===
+
192  * - TeamSpeak3_Helper_Signal::getInstance()->subscribe("notifyLogout", array($object, "onLogout"));
+
193  *
+
194  * @param TeamSpeak3_Node_Host $host
+
195  * @return void
+
196  */
+
197  public function onLogout(TeamSpeak3_Node_Host $host);
+
198 
+
199  /**
+
200  * Possible callback for 'notifyTokencreated' signals.
+
201  *
+
202  * === Examples ===
+
203  * - TeamSpeak3_Helper_Signal::getInstance()->subscribe("notifyTokencreated", array($object, "onTokencreated"));
+
204  *
+
205  * @param TeamSpeak3_Node_Server $server
+
206  * @param string $token
+
207  * @return void
+
208  */
+
209  public function onTokencreated(TeamSpeak3_Node_Server $server, $token);
+
210 
+
211  /**
+
212  * Possible callback for 'filetransferHandshake' signals.
+
213  *
+
214  * === Examples ===
+
215  * - TeamSpeak3_Helper_Signal::getInstance()->subscribe("filetransferHandshake", array($object, "onFtHandshake"));
+
216  *
+
217  * @param TeamSpeak3_Adapter_FileTransfer $adapter
+
218  * @return void
+
219  */
+
220  public function onFtHandshake(TeamSpeak3_Adapter_FileTransfer $adapter);
+
221 
+
222  /**
+
223  * Possible callback for 'filetransferUploadStarted' signals.
+
224  *
+
225  * === Examples ===
+
226  * - TeamSpeak3_Helper_Signal::getInstance()->subscribe("filetransferUploadStarted", array($object, "onFtUploadStarted"));
+
227  *
+
228  * @param string $ftkey
+
229  * @param integer $seek
+
230  * @param integer $size
+
231  * @return void
+
232  */
+
233  public function onFtUploadStarted($ftkey, $seek, $size);
+
234 
+
235  /**
+
236  * Possible callback for 'filetransferUploadProgress' signals.
+
237  *
+
238  * === Examples ===
+
239  * - TeamSpeak3_Helper_Signal::getInstance()->subscribe("filetransferUploadProgress", array($object, "onFtUploadProgress"));
+
240  *
+
241  * @param string $ftkey
+
242  * @param integer $seek
+
243  * @param integer $size
+
244  * @return void
+
245  */
+
246  public function onFtUploadProgress($ftkey, $seek, $size);
+
247 
+
248  /**
+
249  * Possible callback for 'filetransferUploadFinished' signals.
+
250  *
+
251  * === Examples ===
+
252  * - TeamSpeak3_Helper_Signal::getInstance()->subscribe("filetransferUploadFinished", array($object, "onFtUploadFinished"));
+
253  *
+
254  * @param string $ftkey
+
255  * @param integer $seek
+
256  * @param integer $size
+
257  * @return void
+
258  */
+
259  public function onFtUploadFinished($ftkey, $seek, $size);
+
260 
+
261  /**
+
262  * Possible callback for 'filetransferDownloadStarted' signals.
+
263  *
+
264  * === Examples ===
+
265  * - TeamSpeak3_Helper_Signal::getInstance()->subscribe("filetransferDownloadStarted", array($object, "onFtDownloadStarted"));
+
266  *
+
267  * @param string $ftkey
+
268  * @param integer $buff
+
269  * @param integer $size
+
270  * @return void
+
271  */
+
272  public function onFtDownloadStarted($ftkey, $buff, $size);
+
273 
+
274  /**
+
275  * Possible callback for 'filetransferDownloadProgress' signals.
+
276  *
+
277  * === Examples ===
+
278  * - TeamSpeak3_Helper_Signal::getInstance()->subscribe("filetransferDownloadProgress", array($object, "onFtDownloadProgress"));
+
279  *
+
280  * @param string $ftkey
+
281  * @param integer $buff
+
282  * @param integer $size
+
283  * @return void
+
284  */
+
285  public function onFtDownloadProgress($ftkey, $buff, $size);
+
286 
+
287  /**
+
288  * Possible callback for 'filetransferDownloadFinished' signals.
+
289  *
+
290  * === Examples ===
+
291  * - TeamSpeak3_Helper_Signal::getInstance()->subscribe("filetransferDownloadFinished", array($object, "onFtDownloadFinished"));
+
292  *
+
293  * @param string $ftkey
+
294  * @param integer $buff
+
295  * @param integer $size
+
296  * @return void
+
297  */
+
298  public function onFtDownloadFinished($ftkey, $buff, $size);
+
299 
+
300  /**
+
301  * Possible callback for '<adapter>DataRead' signals.
+
302  *
+
303  * === Examples ===
+
304  * - TeamSpeak3_Helper_Signal::getInstance()->subscribe("serverqueryDataRead", array($object, "onDebugDataRead"));
+
305  * - TeamSpeak3_Helper_Signal::getInstance()->subscribe("filetransferDataRead", array($object, "onDebugDataRead"));
+
306  * - TeamSpeak3_Helper_Signal::getInstance()->subscribe("blacklistDataRead", array($object, "onDebugDataRead"));
+
307  * - TeamSpeak3_Helper_Signal::getInstance()->subscribe("updateDataRead", array($object, "onDebugDataRead"));
+
308  *
+
309  * @param string $data
+
310  * @return void
+
311  */
+
312  public function onDebugDataRead($data);
+
313 
+
314  /**
+
315  * Possible callback for '<adapter>DataSend' signals.
+
316  *
+
317  * === Examples ===
+
318  * - TeamSpeak3_Helper_Signal::getInstance()->subscribe("serverqueryDataSend", array($object, "onDebugDataSend"));
+
319  * - TeamSpeak3_Helper_Signal::getInstance()->subscribe("filetransferDataSend", array($object, "onDebugDataSend"));
+
320  * - TeamSpeak3_Helper_Signal::getInstance()->subscribe("blacklistDataSend", array($object, "onDebugDataSend"));
+
321  * - TeamSpeak3_Helper_Signal::getInstance()->subscribe("updateDataSend", array($object, "onDebugDataSend"));
+
322  *
+
323  * @param string $data
+
324  * @return void
+
325  */
+
326  public function onDebugDataSend($data);
+
327 
+
328  /**
+
329  * Possible callback for '<adapter>WaitTimeout' signals.
+
330  *
+
331  * === Examples ===
+
332  * - TeamSpeak3_Helper_Signal::getInstance()->subscribe("serverqueryWaitTimeout", array($object, "onWaitTimeout"));
+
333  * - TeamSpeak3_Helper_Signal::getInstance()->subscribe("filetransferWaitTimeout", array($object, "onWaitTimeout"));
+
334  * - TeamSpeak3_Helper_Signal::getInstance()->subscribe("blacklistWaitTimeout", array($object, "onWaitTimeout"));
+
335  * - TeamSpeak3_Helper_Signal::getInstance()->subscribe("updateWaitTimeout", array($object, "onWaitTimeout"));
+
336  *
+
337  * @param integer $time
+
338  * @param TeamSpeak3_Adapter_Abstract $adapter
+
339  * @return void
+
340  */
+
341  public function onWaitTimeout($time, TeamSpeak3_Adapter_Abstract $adapter);
+
342 
+
343  /**
+
344  * Possible callback for 'errorException' signals.
+
345  *
+
346  * === Examples ===
+
347  * - TeamSpeak3_Helper_Signal::getInstance()->subscribe("errorException", array($object, "onException"));
+
348  *
+
349  * @param TeamSpeak3_Exception $e
+
350  * @return void
+
351  */
+
352  public function onException(TeamSpeak3_Exception $e);
+
353 }
+
+
+ + + + diff --git a/lib/docs/html/_host_8php.html b/lib/docs/html/_host_8php.html new file mode 100644 index 0000000..5788b93 --- /dev/null +++ b/lib/docs/html/_host_8php.html @@ -0,0 +1,156 @@ + + + + + + +TeamSpeak 3 PHP Framework: TeamSpeak3/Node/Host.php File Reference + + + + + + + + + + + + + +
+
+ + + + + + + +
+
TeamSpeak 3 PHP Framework +  1.1.23 +
+
Copyright © Planet TeamSpeak. All rights reserved.
+
+
+ + + + + +
+
+ +
+
+
+ +
+ + + + +
+ +
+ +
+ +
+
Host.php File Reference
+
+
+ +

TeamSpeak 3 PHP Framework. +More...

+ +

Go to the source code of this file.

+ + + + + +

+Classes

class  TeamSpeak3_Node_Host
 Class describing a TeamSpeak 3 server instance and all it's parameters. More...
 
+ + + +

+Namespaces

 TeamSpeak3
 
+ + + +

+Constant Groups

 TeamSpeak3
 
+

Detailed Description

+

TeamSpeak 3 PHP Framework.

+
Id:
Host.php 10/11/2013 11:35:21 scp
+

This program is free software: you can redistribute it and/or modify it under the terms of the GNU General Public License as published by the Free Software Foundation, either version 3 of the License, or (at your option) any later version.

+

This program is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License for more details.

+

You should have received a copy of the GNU General Public License along with this program. If not, see http://www.gnu.org/licenses/.

+ +

Definition in file Host.php.

+
+
+ + + + diff --git a/lib/docs/html/_host_8php_source.html b/lib/docs/html/_host_8php_source.html new file mode 100644 index 0000000..9b32a38 --- /dev/null +++ b/lib/docs/html/_host_8php_source.html @@ -0,0 +1,1315 @@ + + + + + + +TeamSpeak 3 PHP Framework: TeamSpeak3/Node/Host.php Source File + + + + + + + + + + + + + +
+
+ + + + + + + +
+
TeamSpeak 3 PHP Framework +  1.1.23 +
+
Copyright © Planet TeamSpeak. All rights reserved.
+
+
+ + + + + +
+
+ +
+
+
+ +
+ + + + +
+ +
+ +
+
+
Host.php
+
+
+Go to the documentation of this file.
1 <?php
+
2 
+
3 /**
+
4  * @file
+
5  * TeamSpeak 3 PHP Framework
+
6  *
+
7  * $Id: Host.php 10/11/2013 11:35:21 scp@orilla $
+
8  *
+
9  * This program is free software: you can redistribute it and/or modify
+
10  * it under the terms of the GNU General Public License as published by
+
11  * the Free Software Foundation, either version 3 of the License, or
+
12  * (at your option) any later version.
+
13  *
+
14  * This program is distributed in the hope that it will be useful,
+
15  * but WITHOUT ANY WARRANTY; without even the implied warranty of
+
16  * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+
17  * GNU General Public License for more details.
+
18  *
+
19  * You should have received a copy of the GNU General Public License
+
20  * along with this program. If not, see <http://www.gnu.org/licenses/>.
+
21  *
+
22  * @package TeamSpeak3
+
23  * @version 1.1.23
+
24  * @author Sven 'ScP' Paulsen
+
25  * @copyright Copyright (c) 2010 by Planet TeamSpeak. All rights reserved.
+
26  */
+
27 
+
28 /**
+
29  * @class TeamSpeak3_Node_Host
+
30  * @brief Class describing a TeamSpeak 3 server instance and all it's parameters.
+
31  */
+ +
33 {
+
34  /**
+
35  * @ignore
+
36  */
+
37  protected $whoami = null;
+
38 
+
39  /**
+
40  * @ignore
+
41  */
+
42  protected $version = null;
+
43 
+
44  /**
+
45  * @ignore
+
46  */
+
47  protected $serverList = null;
+
48 
+
49  /**
+
50  * @ignore
+
51  */
+
52  protected $permissionEnds = null;
+
53 
+
54  /**
+
55  * @ignore
+
56  */
+
57  protected $permissionList = null;
+
58 
+
59  /**
+
60  * @ignore
+
61  */
+
62  protected $permissionCats = null;
+
63 
+
64  /**
+
65  * @ignore
+
66  */
+
67  protected $predefined_query_name = null;
+
68 
+
69  /**
+
70  * @ignore
+
71  */
+
72  protected $exclude_query_clients = FALSE;
+
73 
+
74  /**
+
75  * @ignore
+
76  */
+
77  protected $start_offline_virtual = FALSE;
+
78 
+
79  /**
+
80  * @ignore
+
81  */
+
82  protected $sort_clients_channels = FALSE;
+
83 
+
84  /**
+
85  * The TeamSpeak3_Node_Host constructor.
+
86  *
+
87  * @param TeamSpeak3_Adapter_ServerQuery $squery
+
88  * @return TeamSpeak3_Node_Host
+
89  */
+ +
91  {
+
92  $this->parent = $squery;
+
93  }
+
94 
+
95  /**
+
96  * Returns the primary ID of the selected virtual server.
+
97  *
+
98  * @return integer
+
99  */
+
100  public function serverSelectedId()
+
101  {
+
102  return $this->whoamiGet("virtualserver_id", 0);
+
103  }
+
104 
+
105  /**
+
106  * Returns the primary UDP port of the selected virtual server.
+
107  *
+
108  * @return integer
+
109  */
+
110  public function serverSelectedPort()
+
111  {
+
112  return $this->whoamiGet("virtualserver_port", 0);
+
113  }
+
114 
+
115  /**
+
116  * Returns the servers version information including platform and build number.
+
117  *
+
118  * @param string $ident
+
119  * @return mixed
+
120  */
+
121  public function version($ident = null)
+
122  {
+
123  if($this->version === null)
+
124  {
+
125  $this->version = $this->request("version")->toList();
+
126  }
+
127 
+
128  return ($ident && array_key_exists($ident, $this->version)) ? $this->version[$ident] : $this->version;
+
129  }
+
130 
+
131  /**
+
132  * Selects a virtual server by ID to allow further interaction.
+
133  *
+
134  * @param integer $sid
+
135  * @param boolean $virtual
+
136  * @return void
+
137  */
+
138  public function serverSelect($sid, $virtual = null)
+
139  {
+
140  if($this->whoami !== null && $this->serverSelectedId() == $sid) return;
+
141 
+
142  $virtual = ($virtual !== null) ? $virtual : $this->start_offline_virtual;
+
143  $getargs = func_get_args();
+
144 
+
145  $this->execute("use", array("sid" => $sid, $virtual ? "-virtual" : null));
+
146 
+
147  if($sid != 0 && $this->predefined_query_name !== null)
+
148  {
+
149  $this->execute("clientupdate", array("client_nickname" => (string) $this->predefined_query_name));
+
150  }
+
151 
+
152  $this->whoamiReset();
+
153 
+
154  $this->setStorage("_server_use", array(__FUNCTION__, $getargs));
+
155 
+
156  TeamSpeak3_Helper_Signal::getInstance()->emit("notifyServerselected", $this);
+
157  }
+
158 
+
159  /**
+
160  * Alias for serverSelect().
+
161  *
+
162  * @param integer $sid
+
163  * @param boolean $virtual
+
164  * @return void
+
165  */
+
166  public function serverSelectById($sid, $virtual = null)
+
167  {
+
168  $this->serverSelect($sid, $virtual);
+
169  }
+
170 
+
171  /**
+
172  * Selects a virtual server by UDP port to allow further interaction.
+
173  *
+
174  * @param integer $port
+
175  * @param boolean $virtual
+
176  * @return void
+
177  */
+
178  public function serverSelectByPort($port, $virtual = null)
+
179  {
+
180  if($this->whoami !== null && $this->serverSelectedPort() == $port) return;
+
181 
+
182  $virtual = ($virtual !== null) ? $virtual : $this->start_offline_virtual;
+
183  $getargs = func_get_args();
+
184 
+
185  $this->execute("use", array("port" => $port, $virtual ? "-virtual" : null));
+
186 
+
187  if($port != 0 && $this->predefined_query_name !== null)
+
188  {
+
189  $this->execute("clientupdate", array("client_nickname" => (string) $this->predefined_query_name));
+
190  }
+
191 
+
192  $this->whoamiReset();
+
193 
+
194  $this->setStorage("_server_use", array(__FUNCTION__, $getargs));
+
195 
+
196  TeamSpeak3_Helper_Signal::getInstance()->emit("notifyServerselected", $this);
+
197  }
+
198 
+
199  /**
+
200  * Deselects the active virtual server.
+
201  *
+
202  * @return void
+
203  */
+
204  public function serverDeselect()
+
205  {
+
206  $this->serverSelect(0);
+
207 
+
208  $this->delStorage("_server_use");
+
209  }
+
210 
+
211  /**
+
212  * Returns the ID of a virtual server matching the given port.
+
213  *
+
214  * @param integer $port
+
215  * @return integer
+
216  */
+
217  public function serverIdGetByPort($port)
+
218  {
+
219  $sid = $this->execute("serveridgetbyport", array("virtualserver_port" => $port))->toList();
+
220 
+
221  return $sid["server_id"];
+
222  }
+
223 
+
224  /**
+
225  * Returns the port of a virtual server matching the given ID.
+
226  *
+
227  * @param integer $sid
+
228  * @return integer
+
229  */
+
230  public function serverGetPortById($sid)
+
231  {
+
232  if(!array_key_exists((string) $sid, $this->serverList()))
+
233  {
+
234  throw new TeamSpeak3_Adapter_ServerQuery_Exception("invalid serverID", 0x400);
+
235  }
+
236 
+
237  return $this->serverList[intval((string) $sid)]["virtualserver_port"];
+
238  }
+
239 
+
240  /**
+
241  * Returns the TeamSpeak3_Node_Server object matching the currently selected ID.
+
242  *
+
243  * @return TeamSpeak3_Node_Server
+
244  */
+
245  public function serverGetSelected()
+
246  {
+
247  return $this->serverGetById($this->serverSelectedId());
+
248  }
+
249 
+
250  /**
+
251  * Returns the TeamSpeak3_Node_Server object matching the given ID.
+
252  *
+
253  * @param integer $sid
+
254  * @return TeamSpeak3_Node_Server
+
255  */
+
256  public function serverGetById($sid)
+
257  {
+
258  $this->serverSelectById($sid);
+
259 
+
260  return new TeamSpeak3_Node_Server($this, array("virtualserver_id" => intval($sid)));
+
261  }
+
262 
+
263  /**
+
264  * Returns the TeamSpeak3_Node_Server object matching the given port number.
+
265  *
+
266  * @param integer $port
+
267  * @return TeamSpeak3_Node_Server
+
268  */
+
269  public function serverGetByPort($port)
+
270  {
+
271  $this->serverSelectByPort($port);
+
272 
+
273  return new TeamSpeak3_Node_Server($this, array("virtualserver_id" => $this->serverSelectedId()));
+
274  }
+
275 
+
276  /**
+
277  * Returns the first TeamSpeak3_Node_Server object matching the given name.
+
278  *
+
279  * @param string $name
+
280  * @throws TeamSpeak3_Adapter_ServerQuery_Exception
+
281  * @return TeamSpeak3_Node_Server
+
282  */
+
283  public function serverGetByName($name)
+
284  {
+
285  foreach($this->serverList() as $server)
+
286  {
+
287  if($server["virtualserver_name"] == $name) return $server;
+
288  }
+
289 
+
290  throw new TeamSpeak3_Adapter_ServerQuery_Exception("invalid serverID", 0x400);
+
291  }
+
292 
+
293  /**
+
294  * Returns the first TeamSpeak3_Node_Server object matching the given unique identifier.
+
295  *
+
296  * @param string $uid
+
297  * @throws TeamSpeak3_Adapter_ServerQuery_Exception
+
298  * @return TeamSpeak3_Node_Server
+
299  */
+
300  public function serverGetByUid($uid)
+
301  {
+
302  foreach($this->serverList() as $server)
+
303  {
+
304  if($server["virtualserver_unique_identifier"] == $uid) return $server;
+
305  }
+
306 
+
307  throw new TeamSpeak3_Adapter_ServerQuery_Exception("invalid serverID", 0x400);
+
308  }
+
309 
+
310  /**
+
311  * Returns the first TeamSpeak3_Node_Server object matching the given TSDNS hostname. Like the
+
312  * TeamSpeak 3 Client, this method will start looking for a TSDNS server on the second-level
+
313  * domain including a fallback to the third-level domain of the specified $tsdns parameter.
+
314  *
+
315  * @param string $tsdns
+
316  * @throws TeamSpeak3_Adapter_ServerQuery_Exception
+
317  * @return TeamSpeak3_Node_Server
+
318  */
+
319  public function serverGetByTSDNS($tsdns)
+
320  {
+
321  $parts = TeamSpeak3_Helper_Uri::getFQDNParts($tsdns);
+
322  $query = TeamSpeak3_Helper_String::factory(array_shift($parts));
+
323 
+
324  while($part = array_shift($parts))
+
325  {
+
326  $query->prepend($part);
+
327 
+
328  try
+
329  {
+
330  $port = TeamSpeak3::factory("tsdns://" . $query . "/?timeout=3")->resolve($tsdns)->section(":", 1);
+
331 
+
332  return $this->serverGetByPort($port == "" ? 9987 : $port);
+
333  }
+ +
335  {
+
336  /* skip "Connection timed out" and "Connection refused" */
+
337  if($e->getCode() != 10060 && $e->getCode() != 10061) throw $e;
+
338  }
+
339  }
+
340 
+
341  throw new TeamSpeak3_Adapter_ServerQuery_Exception("invalid serverID", 0x400);
+
342  }
+
343 
+
344  /**
+
345  * Creates a new virtual server using given properties and returns an assoc
+
346  * array containing the new ID and initial admin token.
+
347  *
+
348  * @param array $properties
+
349  * @return array
+
350  */
+
351  public function serverCreate(array $properties = array())
+
352  {
+
353  $this->serverListReset();
+
354 
+
355  $detail = $this->execute("servercreate", $properties)->toList();
+
356  $server = new TeamSpeak3_Node_Server($this, array("virtualserver_id" => intval($detail["sid"])));
+
357 
+
358  TeamSpeak3_Helper_Signal::getInstance()->emit("notifyServercreated", $this, $detail["sid"]);
+
359  TeamSpeak3_Helper_Signal::getInstance()->emit("notifyTokencreated", $server, $detail["token"]);
+
360 
+
361  return $detail;
+
362  }
+
363 
+
364  /**
+
365  * Deletes the virtual server specified by ID.
+
366  *
+
367  * @param integer $sid
+
368  * @return void
+
369  */
+
370  public function serverDelete($sid)
+
371  {
+
372  $this->serverListReset();
+
373 
+
374  $this->execute("serverdelete", array("sid" => $sid));
+
375 
+
376  TeamSpeak3_Helper_Signal::getInstance()->emit("notifyServerdeleted", $this, $sid);
+
377  }
+
378 
+
379  /**
+
380  * Starts the virtual server specified by ID.
+
381  *
+
382  * @param integer $sid
+
383  * @return void
+
384  */
+
385  public function serverStart($sid)
+
386  {
+
387  if($sid == $this->serverSelectedId())
+
388  {
+
389  $this->serverDeselect();
+
390  }
+
391 
+
392  $this->execute("serverstart", array("sid" => $sid));
+
393  $this->serverListReset();
+
394 
+
395  TeamSpeak3_Helper_Signal::getInstance()->emit("notifyServerstarted", $this, $sid);
+
396  }
+
397 
+
398  /**
+
399  * Stops the virtual server specified by ID.
+
400  *
+
401  * @param integer $sid
+
402  * @return void
+
403  */
+
404  public function serverStop($sid)
+
405  {
+
406  if($sid == $this->serverSelectedId())
+
407  {
+
408  $this->serverDeselect();
+
409  }
+
410 
+
411  $this->execute("serverstop", array("sid" => $sid));
+
412  $this->serverListReset();
+
413 
+
414  TeamSpeak3_Helper_Signal::getInstance()->emit("notifyServerstopped", $this, $sid);
+
415  }
+
416 
+
417  /**
+
418  * Stops the entire TeamSpeak 3 Server instance by shutting down the process.
+
419  *
+
420  * @return void
+
421  */
+
422  public function serverStopProcess()
+
423  {
+
424  TeamSpeak3_Helper_Signal::getInstance()->emit("notifyServershutdown", $this);
+
425 
+
426  $this->execute("serverprocessstop");
+
427  }
+
428 
+
429  /**
+
430  * Returns an array filled with TeamSpeak3_Node_Server objects.
+
431  *
+
432  * @param array $filter
+
433  * @return array
+
434  */
+
435  public function serverList(array $filter = array())
+
436  {
+
437  if($this->serverList === null)
+
438  {
+
439  $servers = $this->request("serverlist -uid")->toAssocArray("virtualserver_id");
+
440 
+
441  $this->serverList = array();
+
442 
+
443  foreach($servers as $sid => $server)
+
444  {
+
445  $this->serverList[$sid] = new TeamSpeak3_Node_Server($this, $server);
+
446  }
+
447 
+
448  $this->resetNodeList();
+
449  }
+
450 
+
451  return $this->filterList($this->serverList, $filter);
+
452  }
+
453 
+
454  /**
+
455  * Resets the list of virtual servers.
+
456  *
+
457  * @return void
+
458  */
+
459  public function serverListReset()
+
460  {
+
461  $this->resetNodeList();
+
462  $this->serverList = null;
+
463  }
+
464 
+
465  /**
+
466  * Returns a list of IP addresses used by the server instance on multi-homed machines.
+
467  *
+
468  * @return array
+
469  */
+
470  public function bindingList()
+
471  {
+
472  return $this->request("bindinglist")->toArray();
+
473  }
+
474 
+
475  /**
+
476  * Returns a list of permissions available on the server instance.
+
477  *
+
478  * @return array
+
479  */
+
480  public function permissionList()
+
481  {
+
482  if($this->permissionList === null)
+
483  {
+
484  $this->fetchPermissionList();
+
485  }
+
486 
+
487  foreach($this->permissionList as $permname => $permdata)
+
488  {
+
489  if(isset($permdata["permcatid"]) && $permdata["permgrant"])
+
490  {
+
491  continue;
+
492  }
+
493 
+
494  $this->permissionList[$permname]["permcatid"] = $this->permissionGetCategoryById($permdata["permid"]);
+
495  $this->permissionList[$permname]["permgrant"] = $this->permissionGetGrantById($permdata["permid"]);
+
496 
+
497  $grantsid = "i_needed_modify_power_" . substr($permname, 2);
+
498 
+
499  if(!$permdata["permname"]->startsWith("i_needed_modify_power_") && !isset($this->permissionList[$grantsid]))
+
500  {
+
501  $this->permissionList[$grantsid]["permid"] = $this->permissionList[$permname]["permgrant"];
+
502  $this->permissionList[$grantsid]["permname"] = TeamSpeak3_Helper_String::factory($grantsid);
+
503  $this->permissionList[$grantsid]["permdesc"] = null;
+
504  $this->permissionList[$grantsid]["permcatid"] = 0xFF;
+
505  $this->permissionList[$grantsid]["permgrant"] = $this->permissionList[$permname]["permgrant"];
+
506  }
+
507  }
+
508 
+
509  return $this->permissionList;
+
510  }
+
511 
+
512  /**
+
513  * Returns a list of permission categories available on the server instance.
+
514  *
+
515  * @return array
+
516  */
+
517  public function permissionCats()
+
518  {
+
519  if($this->permissionCats === null)
+
520  {
+
521  $this->fetchPermissionCats();
+
522  }
+
523 
+
524  return $this->permissionCats;
+
525  }
+
526 
+
527  /**
+
528  * Returns a list of permission category endings available on the server instance.
+
529  *
+
530  * @return array
+
531  */
+
532  public function permissionEnds()
+
533  {
+
534  if($this->permissionEnds === null)
+
535  {
+
536  $this->fetchPermissionList();
+
537  }
+
538 
+
539  return $this->permissionCats;
+
540  }
+
541 
+
542  /**
+
543  * Returns an array filled with all permission categories known to the server including
+
544  * their ID, name and parent.
+
545  *
+
546  * @return array
+
547  */
+
548  public function permissionTree()
+
549  {
+
550  $permtree = array();
+
551 
+
552  foreach($this->permissionCats() as $key => $val)
+
553  {
+
554  $permtree[$val]["permcatid"] = $val;
+
555  $permtree[$val]["permcathex"] = "0x" . dechex($val);
+ +
557  $permtree[$val]["permcatparent"] = $permtree[$val]["permcathex"]{3} == 0 ? 0 : hexdec($permtree[$val]["permcathex"]{2} . 0);
+
558  $permtree[$val]["permcatchilren"] = 0;
+
559  $permtree[$val]["permcatcount"] = 0;
+
560 
+
561  if(isset($permtree[$permtree[$val]["permcatparent"]]))
+
562  {
+
563  $permtree[$permtree[$val]["permcatparent"]]["permcatchilren"]++;
+
564  }
+
565 
+
566  if($permtree[$val]["permcatname"]->contains("/"))
+
567  {
+
568  $permtree[$val]["permcatname"] = $permtree[$val]["permcatname"]->section("/", 1)->trim();
+
569  }
+
570 
+
571  foreach($this->permissionList() as $permission)
+
572  {
+
573  if($permission["permid"]["permcatid"] == $val)
+
574  {
+
575  $permtree[$val]["permcatcount"]++;
+
576  }
+
577  }
+
578  }
+
579 
+
580  return $permtree;
+
581  }
+
582 
+
583  /**
+
584  * Returns the IDs of all clients, channels or groups using the permission with the
+
585  * specified ID.
+
586  *
+
587  * @param integer $permid
+
588  * @return array
+
589  */
+
590  public function permissionFind($permid)
+
591  {
+
592  if(!is_array($permid))
+
593  {
+
594  $permident = (is_numeric($permid)) ? "permid" : "permsid";
+
595  }
+
596  else
+
597  {
+
598  $permident = (is_numeric(current($permid))) ? "permid" : "permsid";
+
599  }
+
600 
+
601  return $this->execute("permfind", array($permident => $permid))->toArray();
+
602  }
+
603 
+
604  /**
+
605  * Returns the ID of the permission matching the given name.
+
606  *
+
607  * @param string $name
+
608  * @throws TeamSpeak3_Adapter_ServerQuery_Exception
+
609  * @return integer
+
610  */
+
611  public function permissionGetIdByName($name)
+
612  {
+
613  if(!array_key_exists((string) $name, $this->permissionList()))
+
614  {
+
615  throw new TeamSpeak3_Adapter_ServerQuery_Exception("invalid permission ID", 0xA02);
+
616  }
+
617 
+
618  return $this->permissionList[(string) $name]["permid"];
+
619  }
+
620 
+
621  /**
+
622  * Returns the name of the permission matching the given ID.
+
623  *
+
624  * @param integer $permid
+
625  * @throws TeamSpeak3_Adapter_ServerQuery_Exception
+
626  * @return TeamSpeak3_Helper_String
+
627  */
+
628  public function permissionGetNameById($permid)
+
629  {
+
630  foreach($this->permissionList() as $name => $perm)
+
631  {
+
632  if($perm["permid"] == $permid) return new TeamSpeak3_Helper_String($name);
+
633  }
+
634 
+
635  throw new TeamSpeak3_Adapter_ServerQuery_Exception("invalid permission ID", 0xA02);
+
636  }
+
637 
+
638  /**
+
639  * Returns the internal category of the permission matching the given ID.
+
640  *
+
641  * All pre-3.0.7 permission IDs are are 2 bytes wide. The first byte identifies the category while
+
642  * the second byte is the permission count within that group.
+
643  *
+
644  * @param integer $permid
+
645  * @return integer
+
646  */
+
647  public function permissionGetCategoryById($permid)
+
648  {
+
649  if(!is_numeric($permid))
+
650  {
+
651  $permid = $this->permissionGetIdByName($permid);
+
652  }
+
653 
+
654  if($permid < 0x1000)
+
655  {
+
656  if($this->permissionEnds === null)
+
657  {
+
658  $this->fetchPermissionList();
+
659  }
+
660 
+
661  if($this->permissionCats === null)
+
662  {
+
663  $this->fetchPermissionCats();
+
664  }
+
665 
+
666  $catids = array_values($this->permissionCats());
+
667 
+
668  foreach($this->permissionEnds as $key => $val)
+
669  {
+
670  if($val >= $permid && isset($catids[$key]))
+
671  {
+
672  return $catids[$key];
+
673  }
+
674  }
+
675 
+
676  return 0;
+
677  }
+
678  else
+
679  {
+
680  return (int) $permid >> 8;
+
681  }
+
682  }
+
683 
+
684  /**
+
685  * Returns the internal ID of the i_needed_modify_power_* or grant permission.
+
686  *
+
687  * Every permission has an associated i_needed_modify_power_* permission, for example b_client_ban_create has an
+
688  * associated permission called i_needed_modify_power_client_ban_create.
+
689  *
+
690  * @param integer $permid
+
691  * @return integer
+
692  */
+
693  public function permissionGetGrantById($permid)
+
694  {
+
695  if(!is_numeric($permid))
+
696  {
+
697  $permid = $this->permissionGetIdByName($permid);
+
698  }
+
699 
+
700  if($permid < 0x1000)
+
701  {
+
702  return (int) $permid+0x8000;
+
703  }
+
704  else
+
705  {
+
706  return (int) bindec(substr(decbin($permid), -8))+0xFF00;
+
707  }
+
708  }
+
709 
+
710  /**
+
711  * Adds a set of specified permissions to all regular server groups on all virtual servers. The target groups will
+
712  * be identified by the value of their i_group_auto_update_type permission specified with $sgtype.
+
713  *
+
714  * @param integer $sgtype
+
715  * @param integer $permid
+
716  * @param integer $permvalue
+
717  * @param integer $permnegated
+
718  * @param integer $permskip
+
719  * @return void
+
720  */
+
721  public function serverGroupPermAutoAssign($sgtype, $permid, $permvalue, $permnegated = FALSE, $permskip = FALSE)
+
722  {
+
723  if(!is_array($permid))
+
724  {
+
725  $permident = (is_numeric($permid)) ? "permid" : "permsid";
+
726  }
+
727  else
+
728  {
+
729  $permident = (is_numeric(current($permid))) ? "permid" : "permsid";
+
730  }
+
731 
+
732  $this->execute("servergroupautoaddperm", array("sgtype" => $sgtype, $permident => $permid, "permvalue" => $permvalue, "permnegated" => $permnegated, "permskip" => $permskip));
+
733  }
+
734 
+
735  /**
+
736  * Removes a set of specified permissions from all regular server groups on all virtual servers. The target groups
+
737  * will be identified by the value of their i_group_auto_update_type permission specified with $sgtype.
+
738  *
+
739  * @param integer $sgtype
+
740  * @param integer $permid
+
741  * @return void
+
742  */
+
743  public function serverGroupPermAutoRemove($sgtype, $permid)
+
744  {
+
745  if(!is_array($permid))
+
746  {
+
747  $permident = (is_numeric($permid)) ? "permid" : "permsid";
+
748  }
+
749  else
+
750  {
+
751  $permident = (is_numeric(current($permid))) ? "permid" : "permsid";
+
752  }
+
753 
+
754  $this->execute("servergroupautodelperm", array("sgtype" => $sgtype, $permident => $permid));
+
755  }
+
756 
+
757  /**
+
758  * Returns an array containing the value of a specified permission for your own client.
+
759  *
+
760  * @param integer $permid
+
761  * @return array
+
762  */
+
763  public function selfPermCheck($permid)
+
764  {
+
765  if(!is_array($permid))
+
766  {
+
767  $permident = (is_numeric($permid)) ? "permid" : "permsid";
+
768  }
+
769  else
+
770  {
+
771  $permident = (is_numeric(current($permid))) ? "permid" : "permsid";
+
772  }
+
773 
+
774  return $this->execute("permget", array($permident => $permid))->toAssocArray("permsid");
+
775  }
+
776 
+
777  /**
+
778  * Changes the server instance configuration using given properties.
+
779  *
+
780  * @param array $properties
+
781  * @return void
+
782  */
+
783  public function modify(array $properties)
+
784  {
+
785  $this->execute("instanceedit", $properties);
+
786  $this->resetNodeInfo();
+
787  }
+
788 
+
789  /**
+
790  * Sends a text message to all clients on all virtual servers in the TeamSpeak 3 Server instance.
+
791  *
+
792  * @param string $msg
+
793  * @return void
+
794  */
+
795  public function message($msg)
+
796  {
+
797  $this->execute("gm", array("msg" => $msg));
+
798  }
+
799 
+
800  /**
+
801  * Displays a specified number of entries (1-100) from the servers log.
+
802  *
+
803  * @param integer $lines
+
804  * @param integer $begin_pos
+
805  * @param boolean $reverse
+
806  * @param boolean $instance
+
807  * @return array
+
808  */
+
809  public function logView($lines = 30, $begin_pos = null, $reverse = null, $instance = TRUE)
+
810  {
+
811  return $this->execute("logview", array("lines" => $lines, "begin_pos" => $begin_pos, "instance" => $instance, "reverse" => $reverse))->toArray();
+
812  }
+
813 
+
814  /**
+
815  * Writes a custom entry into the server instance log.
+
816  *
+
817  * @param string $logmsg
+
818  * @param integer $loglevel
+
819  * @return void
+
820  */
+
821  public function logAdd($logmsg, $loglevel = TeamSpeak3::LOGLEVEL_INFO)
+
822  {
+
823  $sid = $this->serverSelectedId();
+
824 
+
825  $this->serverDeselect();
+
826  $this->execute("logadd", array("logmsg" => $logmsg, "loglevel" => $loglevel));
+
827  $this->serverSelect($sid);
+
828  }
+
829 
+
830  /**
+
831  * Authenticates with the TeamSpeak 3 Server instance using given ServerQuery login credentials.
+
832  *
+
833  * @param string $username
+
834  * @param string $password
+
835  * @return void
+
836  */
+
837  public function login($username, $password)
+
838  {
+
839  $this->execute("login", array("client_login_name" => $username, "client_login_password" => $password));
+
840  $this->whoamiReset();
+
841 
+
842  $crypt = new TeamSpeak3_Helper_Crypt($username);
+
843 
+
844  $this->setStorage("_login_user", $username);
+
845  $this->setStorage("_login_pass", $crypt->encrypt($password));
+
846 
+
847  TeamSpeak3_Helper_Signal::getInstance()->emit("notifyLogin", $this);
+
848  }
+
849 
+
850  /**
+
851  * Deselects the active virtual server and logs out from the server instance.
+
852  *
+
853  * @return void
+
854  */
+
855  public function logout()
+
856  {
+
857  $this->request("logout");
+
858  $this->whoamiReset();
+
859 
+
860  $this->delStorage("_login_user");
+
861  $this->delStorage("_login_pass");
+
862 
+
863  TeamSpeak3_Helper_Signal::getInstance()->emit("notifyLogout", $this);
+
864  }
+
865 
+
866  /**
+
867  * Returns information about your current ServerQuery connection.
+
868  *
+
869  * @return array
+
870  */
+
871  public function whoami()
+
872  {
+
873  if($this->whoami === null)
+
874  {
+
875  $this->whoami = $this->request("whoami")->toList();
+
876  }
+
877 
+
878  return $this->whoami;
+
879  }
+
880 
+
881  /**
+
882  * Returns a single value from the current ServerQuery connection info.
+
883  *
+
884  * @param string $ident
+
885  * @param mixed $default
+
886  * @return mixed
+
887  */
+
888  public function whoamiGet($ident, $default = null)
+
889  {
+
890  if(array_key_exists($ident, $this->whoami()))
+
891  {
+
892  return $this->whoami[$ident];
+
893  }
+
894 
+
895  return $default;
+
896  }
+
897 
+
898  /**
+
899  * Sets a single value in the current ServerQuery connection info.
+
900  *
+
901  * @param string $ident
+
902  * @param mixed $value
+
903  * @return mixed
+
904  */
+
905  public function whoamiSet($ident, $value = null)
+
906  {
+
907  $this->whoami();
+
908 
+
909  $this->whoami[$ident] = (is_numeric($value)) ? intval($value) : TeamSpeak3_Helper_String::factory($value);
+
910  }
+
911 
+
912  /**
+
913  * Resets the current ServerQuery connection info.
+
914  *
+
915  * @return void
+
916  */
+
917  public function whoamiReset()
+
918  {
+
919  $this->whoami = null;
+
920  }
+
921 
+
922  /**
+
923  * Returns the hostname or IPv4 address the adapter is connected to.
+
924  *
+
925  * @return string
+
926  */
+
927  public function getAdapterHost()
+
928  {
+
929  return $this->getParent()->getTransportHost();
+
930  }
+
931 
+
932  /**
+
933  * Returns the network port the adapter is connected to.
+
934  *
+
935  * @return string
+
936  */
+
937  public function getAdapterPort()
+
938  {
+
939  return $this->getParent()->getTransportPort();
+
940  }
+
941 
+
942  /**
+
943  * @ignore
+
944  */
+
945  protected function fetchNodeList()
+
946  {
+
947  $servers = $this->serverList();
+
948 
+
949  foreach($servers as $server)
+
950  {
+
951  $this->nodeList[] = $server;
+
952  }
+
953  }
+
954 
+
955  /**
+
956  * @ignore
+
957  */
+
958  protected function fetchNodeInfo()
+
959  {
+
960  $info1 = $this->request("hostinfo")->toList();
+
961  $info2 = $this->request("instanceinfo")->toList();
+
962 
+
963  $this->nodeInfo = array_merge($this->nodeInfo, $info1, $info2);
+
964  }
+
965 
+
966  /**
+
967  * @ignore
+
968  */
+
969  protected function fetchPermissionList()
+
970  {
+
971  $reply = $this->request("permissionlist -new")->toArray();
+
972  $start = 1;
+
973 
+
974  $this->permissionEnds = array();
+
975  $this->permissionList = array();
+
976 
+
977  foreach($reply as $line)
+
978  {
+
979  if(array_key_exists("group_id_end", $line))
+
980  {
+
981  $this->permissionEnds[] = $line["group_id_end"];
+
982  }
+
983  else
+
984  {
+
985  $this->permissionList[$line["permname"]->toString()] = array_merge(array("permid" => $start++), $line);
+
986  }
+
987  }
+
988  }
+
989 
+
990  /**
+
991  * @ignore
+
992  */
+
993  protected function fetchPermissionCats()
+
994  {
+
995  $permcats = array();
+
996  $reflects = new ReflectionClass("TeamSpeak3");
+
997 
+
998  foreach($reflects->getConstants() as $key => $val)
+
999  {
+
1000  if(!TeamSpeak3_Helper_String::factory($key)->startsWith("PERM_CAT") || $val == 0xFF)
+
1001  {
+
1002  continue;
+
1003  }
+
1004 
+
1005  $permcats[$key] = $val;
+
1006  }
+
1007 
+
1008  $this->permissionCats = $permcats;
+
1009  }
+
1010 
+
1011  /**
+
1012  * Sets a pre-defined nickname for ServerQuery clients which will be used automatically
+
1013  * after selecting a virtual server.
+
1014  *
+
1015  * @param string $name
+
1016  * @return void
+
1017  */
+
1018  public function setPredefinedQueryName($name = null)
+
1019  {
+
1020  $this->setStorage("_query_nick", $name);
+
1021 
+
1022  $this->predefined_query_name = $name;
+
1023  }
+
1024 
+
1025  /**
+
1026  * Returns the pre-defined nickname for ServerQuery clients which will be used automatically
+
1027  * after selecting a virtual server.
+
1028  *
+
1029  * @return string
+
1030  */
+
1031  public function getPredefinedQueryName()
+
1032  {
+ +
1034  }
+
1035 
+
1036  /**
+
1037  * Sets the option to decide whether ServerQuery clients should be excluded from node
+
1038  * lists or not.
+
1039  *
+
1040  * @param boolean $exclude
+
1041  * @return void
+
1042  */
+
1043  public function setExcludeQueryClients($exclude = FALSE)
+
1044  {
+
1045  $this->setStorage("_query_hide", $exclude);
+
1046 
+
1047  $this->exclude_query_clients = $exclude;
+
1048  }
+
1049 
+
1050  /**
+
1051  * Returns the option to decide whether ServerQuery clients should be excluded from node
+
1052  * lists or not.
+
1053  *
+
1054  * @return boolean
+
1055  */
+
1056  public function getExcludeQueryClients()
+
1057  {
+ +
1059  }
+
1060 
+
1061  /**
+
1062  * Sets the option to decide whether offline servers will be started in virtual mode
+
1063  * by default or not.
+
1064  *
+
1065  * @param boolean $virtual
+
1066  * @return void
+
1067  */
+
1068  public function setUseOfflineAsVirtual($virtual = FALSE)
+
1069  {
+
1070  $this->setStorage("_do_virtual", $virtual);
+
1071 
+
1072  $this->start_offline_virtual = $virtual;
+
1073  }
+
1074 
+
1075  /**
+
1076  * Returns the option to decide whether offline servers will be started in virtual mode
+
1077  * by default or not.
+
1078  *
+
1079  * @return boolean
+
1080  */
+
1081  public function getUseOfflineAsVirtual()
+
1082  {
+ +
1084  }
+
1085 
+
1086  /**
+
1087  * Sets the option to decide whether clients should be sorted before sub-channels to support
+
1088  * the new TeamSpeak 3 Client display mode or not.
+
1089  *
+
1090  * @param boolean $first
+
1091  * @return void
+
1092  */
+
1093  public function setLoadClientlistFirst($first = FALSE)
+
1094  {
+
1095  $this->setStorage("_client_top", $first);
+
1096 
+
1097  $this->sort_clients_channels = $first;
+
1098  }
+
1099 
+
1100  /**
+
1101  * Returns the option to decide whether offline servers will be started in virtual mode
+
1102  * by default or not.
+
1103  *
+
1104  * @return boolean
+
1105  */
+
1106  public function getLoadClientlistFirst()
+
1107  {
+ +
1109  }
+
1110 
+
1111  /**
+
1112  * Returns the underlying TeamSpeak3_Adapter_ServerQuery object.
+
1113  *
+
1114  * @return TeamSpeak3_Adapter_ServerQuery
+
1115  */
+
1116  public function getAdapter()
+
1117  {
+
1118  return $this->getParent();
+
1119  }
+
1120 
+
1121  /**
+
1122  * Returns a unique identifier for the node which can be used as a HTML property.
+
1123  *
+
1124  * @return string
+
1125  */
+
1126  public function getUniqueId()
+
1127  {
+
1128  return "ts3_h";
+
1129  }
+
1130 
+
1131  /**
+
1132  * Returns the name of a possible icon to display the node object.
+
1133  *
+
1134  * @return string
+
1135  */
+
1136  public function getIcon()
+
1137  {
+
1138  return "host";
+
1139  }
+
1140 
+
1141  /**
+
1142  * Returns a symbol representing the node.
+
1143  *
+
1144  * @return string
+
1145  */
+
1146  public function getSymbol()
+
1147  {
+
1148  return "+";
+
1149  }
+
1150 
+
1151  /**
+
1152  * Re-authenticates with the TeamSpeak 3 Server instance using given ServerQuery login
+
1153  * credentials and re-selects a previously selected virtual server.
+
1154  *
+
1155  * @return void
+
1156  */
+
1157  public function __wakeup()
+
1158  {
+
1159  $username = $this->getStorage("_login_user");
+
1160  $password = $this->getStorage("_login_pass");
+
1161 
+
1162  if($username && $password)
+
1163  {
+
1164  $crypt = new TeamSpeak3_Helper_Crypt($username);
+
1165 
+
1166  $this->login($username, $crypt->decrypt($password));
+
1167  }
+
1168 
+
1169  $this->predefined_query_name = $this->getStorage("_query_nick");
+
1170  $this->exclude_query_clients = $this->getStorage("_query_hide", FALSE);
+
1171  $this->start_offline_virtual = $this->getStorage("_do_virtual", FALSE);
+
1172  $this->sort_clients_channels = $this->getStorage("_client_top", FALSE);
+
1173 
+
1174  if($server = $this->getStorage("_server_use"))
+
1175  {
+
1176  $func = array_shift($server);
+
1177  $args = array_shift($server);
+
1178 
+
1179  call_user_func_array(array($this, $func), $args);
+
1180  }
+
1181  }
+
1182 
+
1183  /**
+
1184  * Returns a string representation of this node.
+
1185  *
+
1186  * @return string
+
1187  */
+
1188  public function __toString()
+
1189  {
+
1190  return (string) $this->getAdapterHost();
+
1191  }
+
1192 }
+
1193 
+
+
+ + + + diff --git a/lib/docs/html/_html_8php.html b/lib/docs/html/_html_8php.html new file mode 100644 index 0000000..29e53dc --- /dev/null +++ b/lib/docs/html/_html_8php.html @@ -0,0 +1,156 @@ + + + + + + +TeamSpeak 3 PHP Framework: TeamSpeak3/Viewer/Html.php File Reference + + + + + + + + + + + + + +
+
+ + + + + + + +
+
TeamSpeak 3 PHP Framework +  1.1.23 +
+
Copyright © Planet TeamSpeak. All rights reserved.
+
+
+ + + + + +
+
+ +
+
+
+ +
+ + + + +
+ +
+ +
+ +
+
Html.php File Reference
+
+
+ +

TeamSpeak 3 PHP Framework. +More...

+ +

Go to the source code of this file.

+ + + + + +

+Classes

class  TeamSpeak3_Viewer_Html
 Renders nodes used in HTML-based TeamSpeak 3 viewers. More...
 
+ + + +

+Namespaces

 TeamSpeak3
 
+ + + +

+Constant Groups

 TeamSpeak3
 
+

Detailed Description

+

TeamSpeak 3 PHP Framework.

+
Id:
Text.php 10/11/2013 11:35:22 scp
+

This program is free software: you can redistribute it and/or modify it under the terms of the GNU General Public License as published by the Free Software Foundation, either version 3 of the License, or (at your option) any later version.

+

This program is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License for more details.

+

You should have received a copy of the GNU General Public License along with this program. If not, see http://www.gnu.org/licenses/.

+ +

Definition in file Html.php.

+
+
+ + + + diff --git a/lib/docs/html/_html_8php_source.html b/lib/docs/html/_html_8php_source.html new file mode 100644 index 0000000..900f1b8 --- /dev/null +++ b/lib/docs/html/_html_8php_source.html @@ -0,0 +1,792 @@ + + + + + + +TeamSpeak 3 PHP Framework: TeamSpeak3/Viewer/Html.php Source File + + + + + + + + + + + + + +
+
+ + + + + + + +
+
TeamSpeak 3 PHP Framework +  1.1.23 +
+
Copyright © Planet TeamSpeak. All rights reserved.
+
+
+ + + + + +
+
+ +
+
+
+ +
+ + + + +
+ +
+ +
+
+
Html.php
+
+
+Go to the documentation of this file.
1 <?php
+
2 
+
3 /**
+
4  * @file
+
5  * TeamSpeak 3 PHP Framework
+
6  *
+
7  * $Id: Text.php 10/11/2013 11:35:22 scp@orilla $
+
8  *
+
9  * This program is free software: you can redistribute it and/or modify
+
10  * it under the terms of the GNU General Public License as published by
+
11  * the Free Software Foundation, either version 3 of the License, or
+
12  * (at your option) any later version.
+
13  *
+
14  * This program is distributed in the hope that it will be useful,
+
15  * but WITHOUT ANY WARRANTY; without even the implied warranty of
+
16  * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+
17  * GNU General Public License for more details.
+
18  *
+
19  * You should have received a copy of the GNU General Public License
+
20  * along with this program. If not, see <http://www.gnu.org/licenses/>.
+
21  *
+
22  * @package TeamSpeak3
+
23  * @version 1.1.23
+
24  * @author Sven 'ScP' Paulsen
+
25  * @copyright Copyright (c) 2010 by Planet TeamSpeak. All rights reserved.
+
26  */
+
27 
+
28 /**
+
29  * @class TeamSpeak3_Viewer_Html
+
30  * @brief Renders nodes used in HTML-based TeamSpeak 3 viewers.
+
31  */
+ +
33 {
+
34  /**
+
35  * A pre-defined pattern used to display a node in a TeamSpeak 3 viewer.
+
36  *
+
37  * @var string
+
38  */
+
39  protected $pattern = "<table id='%0' class='%1' summary='%2'><tr class='%3'><td class='%4'>%5</td><td class='%6' title='%7'>%8 %9</td><td class='%10'>%11%12</td></tr></table>\n";
+
40 
+
41  /**
+
42  * The TeamSpeak3_Node_Abstract object which is currently processed.
+
43  *
+
44  * @var TeamSpeak3_Node_Abstract
+
45  */
+
46  protected $currObj = null;
+
47 
+
48  /**
+
49  * An array filled with siblingsfor the TeamSpeak3_Node_Abstract object which is currently
+
50  * processed.
+
51  *
+
52  * @var array
+
53  */
+
54  protected $currSib = null;
+
55 
+
56  /**
+
57  * An internal counter indicating the number of fetched TeamSpeak3_Node_Abstract objects.
+
58  *
+
59  * @var integer
+
60  */
+
61  protected $currNum = 0;
+
62 
+
63  /**
+
64  * The relative URI path where the images used by the viewer can be found.
+
65  *
+
66  * @var string
+
67  */
+
68  protected $iconpath = null;
+
69 
+
70  /**
+
71  * The relative URI path where the country flag icons used by the viewer can be found.
+
72  *
+
73  * @var string
+
74  */
+
75  protected $flagpath = null;
+
76 
+
77  /**
+
78  * The relative path of the file transter client script on the server.
+
79  *
+
80  * @var string
+
81  */
+
82  protected $ftclient = null;
+
83 
+
84  /**
+
85  * Stores an array of local icon IDs.
+
86  *
+
87  * @var array
+
88  */
+
89  protected $cachedIcons = array(100, 200, 300, 400, 500, 600);
+
90 
+
91  /**
+
92  * Stores an array of remote icon IDs.
+
93  *
+
94  * @var array
+
95  */
+
96  protected $remoteIcons = array();
+
97 
+
98  /**
+
99  * The TeamSpeak3_Viewer_Html constructor.
+
100  *
+
101  * @param string $iconpath
+
102  * @param string $flagpath
+
103  * @param string $ftclient
+
104  * @param string $pattern
+
105  * @return void
+
106  */
+
107  public function __construct($iconpath = "images/viewer/", $flagpath = null, $ftclient = null, $pattern = null)
+
108  {
+
109  $this->iconpath = $iconpath;
+
110  $this->flagpath = $flagpath;
+
111  $this->ftclient = $ftclient;
+
112 
+
113  if($pattern)
+
114  {
+
115  $this->pattern = $pattern;
+
116  }
+
117  }
+
118 
+
119  /**
+
120  * Returns the code needed to display a node in a TeamSpeak 3 viewer.
+
121  *
+
122  * @param TeamSpeak3_Node_Abstract $node
+
123  * @param array $siblings
+
124  * @return string
+
125  */
+
126  public function fetchObject(TeamSpeak3_Node_Abstract $node, array $siblings = array())
+
127  {
+
128  $this->currObj = $node;
+
129  $this->currSib = $siblings;
+
130 
+
131  $args = array(
+
132  $this->getContainerIdent(),
+
133  $this->getContainerClass(),
+
134  $this->getContainerSummary(),
+
135  $this->getRowClass(),
+
136  $this->getPrefixClass(),
+
137  $this->getPrefix(),
+
138  $this->getCorpusClass(),
+
139  $this->getCorpusTitle(),
+
140  $this->getCorpusIcon(),
+
141  $this->getCorpusName(),
+
142  $this->getSuffixClass(),
+
143  $this->getSuffixIcon(),
+
144  $this->getSuffixFlag(),
+
145  );
+
146 
+
147  return TeamSpeak3_Helper_String::factory($this->pattern)->arg($args);
+
148  }
+
149 
+
150  /**
+
151  * Returns a unique identifier for the current node which can be used as a HTML id
+
152  * property.
+
153  *
+
154  * @return string
+
155  */
+
156  protected function getContainerIdent()
+
157  {
+
158  return $this->currObj->getUniqueId();
+
159  }
+
160 
+
161  /**
+
162  * Returns a dynamic string for the current container element which can be used as
+
163  * a HTML class property.
+
164  *
+
165  * @return string
+
166  */
+
167  protected function getContainerClass()
+
168  {
+
169  return "ts3_viewer " . $this->currObj->getClass(null);
+
170  }
+
171 
+
172  /**
+
173  * Returns the ID of the current node which will be used as a summary element for
+
174  * the container element.
+
175  *
+
176  * @return integer
+
177  */
+
178  protected function getContainerSummary()
+
179  {
+
180  return $this->currObj->getId();
+
181  }
+
182 
+
183  /**
+
184  * Returns a dynamic string for the current row element which can be used as a HTML
+
185  * class property.
+
186  *
+
187  * @return string
+
188  */
+
189  protected function getRowClass()
+
190  {
+
191  return ++$this->currNum%2 ? "row1" : "row2";
+
192  }
+
193 
+
194  /**
+
195  * Returns a string for the current prefix element which can be used as a HTML class
+
196  * property.
+
197  *
+
198  * @return string
+
199  */
+
200  protected function getPrefixClass()
+
201  {
+
202  return "prefix " . $this->currObj->getClass(null);
+
203  }
+
204 
+
205  /**
+
206  * Returns the HTML img tags to display the prefix of the current node.
+
207  *
+
208  * @return string
+
209  */
+
210  protected function getPrefix()
+
211  {
+
212  $prefix = "";
+
213 
+
214  if(count($this->currSib))
+
215  {
+
216  $last = array_pop($this->currSib);
+
217 
+
218  foreach($this->currSib as $sibling)
+
219  {
+
220  $prefix .= ($sibling) ? $this->getImage("tree_line.gif") : $this->getImage("tree_blank.png");
+
221  }
+
222 
+
223  $prefix .= ($last) ? $this->getImage("tree_end.gif") : $this->getImage("tree_mid.gif");
+
224  }
+
225 
+
226  return $prefix;
+
227  }
+
228 
+
229  /**
+
230  * Returns a string for the current corpus element which can be used as a HTML class
+
231  * property. If the current node is a channel spacer the class string will contain
+
232  * additional class names to allow further customization of the content via CSS.
+
233  *
+
234  * @return string
+
235  */
+
236  protected function getCorpusClass()
+
237  {
+
238  $extras = "";
+
239 
+
240  if($this->currObj instanceof TeamSpeak3_Node_Channel && $this->currObj->isSpacer())
+
241  {
+
242  switch($this->currObj->spacerGetType())
+
243  {
+
244  case (string) TeamSpeak3::SPACER_SOLIDLINE:
+
245  $extras .= " solidline";
+
246  break;
+
247 
+
248  case (string) TeamSpeak3::SPACER_DASHLINE:
+
249  $extras .= " dashline";
+
250  break;
+
251 
+
252  case (string) TeamSpeak3::SPACER_DASHDOTLINE:
+
253  $extras .= " dashdotline";
+
254  break;
+
255 
+
256  case (string) TeamSpeak3::SPACER_DASHDOTDOTLINE:
+
257  $extras .= " dashdotdotline";
+
258  break;
+
259 
+
260  case (string) TeamSpeak3::SPACER_DOTLINE:
+
261  $extras .= " dotline";
+
262  break;
+
263  }
+
264 
+
265  switch($this->currObj->spacerGetAlign())
+
266  {
+ +
268  $extras .= " center";
+
269  break;
+
270 
+ +
272  $extras .= " right";
+
273  break;
+
274 
+ +
276  $extras .= " left";
+
277  break;
+
278  }
+
279  }
+
280 
+
281  return "corpus " . $this->currObj->getClass(null) . $extras;
+
282  }
+
283 
+
284  /**
+
285  * Returns the HTML img tags which can be used to display the various icons for a
+
286  * TeamSpeak_Node_Abstract object.
+
287  *
+
288  * @return string
+
289  */
+
290  protected function getCorpusTitle()
+
291  {
+
292  if($this->currObj instanceof TeamSpeak3_Node_Server)
+
293  {
+
294  return "ID: " . $this->currObj->getId() . " | Clients: " . $this->currObj->clientCount() . "/" . $this->currObj["virtualserver_maxclients"] . " | Uptime: " . TeamSpeak3_Helper_Convert::seconds($this->currObj["virtualserver_uptime"]);
+
295  }
+
296  elseif($this->currObj instanceof TeamSpeak3_Node_Channel && !$this->currObj->isSpacer())
+
297  {
+
298  return "ID: " . $this->currObj->getId() . " | Codec: " . TeamSpeak3_Helper_Convert::codec($this->currObj["channel_codec"]) . " | Quality: " . $this->currObj["channel_codec_quality"];
+
299  }
+
300  elseif($this->currObj instanceof TeamSpeak3_Node_Client)
+
301  {
+
302  return "ID: " . $this->currObj->getId() . " | Version: " . TeamSpeak3_Helper_Convert::versionShort($this->currObj["client_version"]) . " | Platform: " . $this->currObj["client_platform"];
+
303  }
+
304  elseif($this->currObj instanceof TeamSpeak3_Node_Servergroup || $this->currObj instanceof TeamSpeak3_Node_Channelgroup)
+
305  {
+
306  return "ID: " . $this->currObj->getId() . " | Type: " . TeamSpeak3_Helper_Convert::groupType($this->currObj["type"]) . " (" . ($this->currObj["savedb"] ? "Permanent" : "Temporary") . ")";
+
307  }
+
308  }
+
309 
+
310  /**
+
311  * Returns a HTML img tag which can be used to display the status icon for a
+
312  * TeamSpeak_Node_Abstract object.
+
313  *
+
314  * @return string
+
315  */
+
316  protected function getCorpusIcon()
+
317  {
+
318  if($this->currObj instanceof TeamSpeak3_Node_Channel && $this->currObj->isSpacer()) return;
+
319 
+
320  return $this->getImage($this->currObj->getIcon() . ".png");
+
321  }
+
322 
+
323  /**
+
324  * Returns a string for the current corpus element which contains the display name
+
325  * for the current TeamSpeak_Node_Abstract object.
+
326  *
+
327  * @return string
+
328  */
+
329  protected function getCorpusName()
+
330  {
+
331  if($this->currObj instanceof TeamSpeak3_Node_Channel && $this->currObj->isSpacer())
+
332  {
+
333  if($this->currObj->spacerGetType() != TeamSpeak3::SPACER_CUSTOM) return;
+
334 
+
335  $string = $this->currObj["channel_name"]->section("]", 1, 99);
+
336 
+
337  if($this->currObj->spacerGetAlign() == TeamSpeak3::SPACER_ALIGN_REPEAT)
+
338  {
+
339  $string->resize(30, $string);
+
340  }
+
341 
+
342  return htmlspecialchars($string);
+
343  }
+
344 
+
345  if($this->currObj instanceof TeamSpeak3_Node_Client)
+
346  {
+
347  $before = array();
+
348  $behind = array();
+
349 
+
350  foreach($this->currObj->memberOf() as $group)
+
351  {
+
352  if($group->getProperty("namemode") == TeamSpeak3::GROUP_NAMEMODE_BEFORE)
+
353  {
+
354  $before[] = "[" . htmlspecialchars($group["name"]) . "]";
+
355  }
+
356  elseif($group->getProperty("namemode") == TeamSpeak3::GROUP_NAMEMODE_BEHIND)
+
357  {
+
358  $behind[] = "[" . htmlspecialchars($group["name"]) . "]";
+
359  }
+
360  }
+
361 
+
362  return implode("", $before) . " " . htmlspecialchars($this->currObj) . " " . implode("", $behind);
+
363  }
+
364 
+
365  return htmlspecialchars($this->currObj);
+
366  }
+
367 
+
368  /**
+
369  * Returns a string for the current suffix element which can be used as a HTML
+
370  * class property.
+
371  *
+
372  * @return string
+
373  */
+
374  protected function getSuffixClass()
+
375  {
+
376  return "suffix " . $this->currObj->getClass(null);
+
377  }
+
378 
+
379  /**
+
380  * Returns the HTML img tags which can be used to display the various icons for a
+
381  * TeamSpeak_Node_Abstract object.
+
382  *
+
383  * @return string
+
384  */
+
385  protected function getSuffixIcon()
+
386  {
+
387  if($this->currObj instanceof TeamSpeak3_Node_Server)
+
388  {
+
389  return $this->getSuffixIconServer();
+
390  }
+
391  elseif($this->currObj instanceof TeamSpeak3_Node_Channel)
+
392  {
+
393  return $this->getSuffixIconChannel();
+
394  }
+
395  elseif($this->currObj instanceof TeamSpeak3_Node_Client)
+
396  {
+
397  return $this->getSuffixIconClient();
+
398  }
+
399  }
+
400 
+
401  /**
+
402  * Returns the HTML img tags which can be used to display the various icons for a
+
403  * TeamSpeak_Node_Server object.
+
404  *
+
405  * @return string
+
406  */
+
407  protected function getSuffixIconServer()
+
408  {
+
409  $html = "";
+
410 
+
411  if($this->currObj["virtualserver_icon_id"])
+
412  {
+
413  if(!$this->currObj->iconIsLocal("virtualserver_icon_id") && $this->ftclient)
+
414  {
+
415  if(!isset($this->cacheIcon[$this->currObj["virtualserver_icon_id"]]))
+
416  {
+
417  $download = $this->currObj->transferInitDownload(rand(0x0000, 0xFFFF), 0, $this->currObj->iconGetName("virtualserver_icon_id"));
+
418 
+
419  if($this->ftclient == "data:image")
+
420  {
+
421  $download = TeamSpeak3::factory("filetransfer://" . $download["host"] . ":" . $download["port"])->download($download["ftkey"], $download["size"]);
+
422  }
+
423 
+
424  $this->cacheIcon[$this->currObj["virtualserver_icon_id"]] = $download;
+
425  }
+
426  else
+
427  {
+
428  $download = $this->cacheIcon[$this->currObj["virtualserver_icon_id"]];
+
429  }
+
430 
+
431  if($this->ftclient == "data:image")
+
432  {
+
433  $html .= $this->getImage("data:" . TeamSpeak3_Helper_Convert::imageMimeType($download) . ";base64," . base64_encode($download), "Server Icon", null, FALSE);
+
434  }
+
435  else
+
436  {
+
437  $html .= $this->getImage($this->ftclient . "?ftdata=" . base64_encode(serialize($download)), "Server Icon", null, FALSE);
+
438  }
+
439  }
+
440  elseif(in_array($this->currObj["virtualserver_icon_id"], $this->cachedIcons))
+
441  {
+
442  $html .= $this->getImage("group_icon_" . $this->currObj["virtualserver_icon_id"] . ".png", "Server Icon");
+
443  }
+
444  }
+
445 
+
446  return $html;
+
447  }
+
448 
+
449  /**
+
450  * Returns the HTML img tags which can be used to display the various icons for a
+
451  * TeamSpeak_Node_Channel object.
+
452  *
+
453  * @return string
+
454  */
+
455  protected function getSuffixIconChannel()
+
456  {
+
457  if($this->currObj instanceof TeamSpeak3_Node_Channel && $this->currObj->isSpacer()) return;
+
458 
+
459  $html = "";
+
460 
+
461  if($this->currObj["channel_flag_default"])
+
462  {
+
463  $html .= $this->getImage("channel_flag_default.png", "Default Channel");
+
464  }
+
465 
+
466  if($this->currObj["channel_flag_password"])
+
467  {
+
468  $html .= $this->getImage("channel_flag_password.png", "Password-protected");
+
469  }
+
470 
+
471  if($this->currObj["channel_codec"] == TeamSpeak3::CODEC_CELT_MONO || $this->currObj["channel_codec"] == TeamSpeak3::CODEC_OPUS_MUSIC)
+
472  {
+
473  $html .= $this->getImage("channel_flag_music.png", "Music Codec");
+
474  }
+
475 
+
476  if($this->currObj["channel_needed_talk_power"])
+
477  {
+
478  $html .= $this->getImage("channel_flag_moderated.png", "Moderated");
+
479  }
+
480 
+
481  if($this->currObj["channel_icon_id"])
+
482  {
+
483  if(!$this->currObj->iconIsLocal("channel_icon_id") && $this->ftclient)
+
484  {
+
485  if(!isset($this->cacheIcon[$this->currObj["channel_icon_id"]]))
+
486  {
+
487  $download = $this->currObj->getParent()->transferInitDownload(rand(0x0000, 0xFFFF), 0, $this->currObj->iconGetName("channel_icon_id"));
+
488 
+
489  if($this->ftclient == "data:image")
+
490  {
+
491  $download = TeamSpeak3::factory("filetransfer://" . $download["host"] . ":" . $download["port"])->download($download["ftkey"], $download["size"]);
+
492  }
+
493 
+
494  $this->cacheIcon[$this->currObj["channel_icon_id"]] = $download;
+
495  }
+
496  else
+
497  {
+
498  $download = $this->cacheIcon[$this->currObj["channel_icon_id"]];
+
499  }
+
500 
+
501  if($this->ftclient == "data:image")
+
502  {
+
503  $html .= $this->getImage("data:" . TeamSpeak3_Helper_Convert::imageMimeType($download) . ";base64," . base64_encode($download), "Channel Icon", null, FALSE);
+
504  }
+
505  else
+
506  {
+
507  $html .= $this->getImage($this->ftclient . "?ftdata=" . base64_encode(serialize($download)), "Channel Icon", null, FALSE);
+
508  }
+
509  }
+
510  elseif(in_array($this->currObj["channel_icon_id"], $this->cachedIcons))
+
511  {
+
512  $html .= $this->getImage("group_icon_" . $this->currObj["channel_icon_id"] . ".png", "Channel Icon");
+
513  }
+
514  }
+
515 
+
516  return $html;
+
517  }
+
518 
+
519  /**
+
520  * Returns the HTML img tags which can be used to display the various icons for a
+
521  * TeamSpeak_Node_Client object.
+
522  *
+
523  * @return string
+
524  */
+
525  protected function getSuffixIconClient()
+
526  {
+
527  $html = "";
+
528 
+
529  if($this->currObj["client_is_priority_speaker"])
+
530  {
+
531  $html .= $this->getImage("client_priority.png", "Priority Speaker");
+
532  }
+
533 
+
534  if($this->currObj["client_is_channel_commander"])
+
535  {
+
536  $html .= $this->getImage("client_cc.png", "Channel Commander");
+
537  }
+
538 
+
539  if($this->currObj["client_is_talker"])
+
540  {
+
541  $html .= $this->getImage("client_talker.png", "Talk Power granted");
+
542  }
+
543  elseif($cntp = $this->currObj->getParent()->channelGetById($this->currObj["cid"])->channel_needed_talk_power)
+
544  {
+
545  if($cntp > $this->currObj["client_talk_power"])
+
546  {
+
547  $html .= $this->getImage("client_mic_muted.png", "Insufficient Talk Power");
+
548  }
+
549  }
+
550 
+
551  foreach($this->currObj->memberOf() as $group)
+
552  {
+
553  if(!$group["iconid"]) continue;
+
554 
+
555  $type = ($group instanceof TeamSpeak3_Node_Servergroup) ? "Server Group" : "Channel Group";
+
556 
+
557  if(!$group->iconIsLocal("iconid") && $this->ftclient)
+
558  {
+
559  if(!isset($this->cacheIcon[$group["iconid"]]))
+
560  {
+
561  $download = $group->getParent()->transferInitDownload(rand(0x0000, 0xFFFF), 0, $group->iconGetName("iconid"));
+
562 
+
563  if($this->ftclient == "data:image")
+
564  {
+
565  $download = TeamSpeak3::factory("filetransfer://" . $download["host"] . ":" . $download["port"])->download($download["ftkey"], $download["size"]);
+
566  }
+
567 
+
568  $this->cacheIcon[$group["iconid"]] = $download;
+
569  }
+
570  else
+
571  {
+
572  $download = $this->cacheIcon[$group["iconid"]];
+
573  }
+
574 
+
575  if($this->ftclient == "data:image")
+
576  {
+
577  $html .= $this->getImage("data:" . TeamSpeak3_Helper_Convert::imageMimeType($download) . ";base64," . base64_encode($download), $group . " [" . $type . "]", null, FALSE);
+
578  }
+
579  else
+
580  {
+
581  $html .= $this->getImage($this->ftclient . "?ftdata=" . base64_encode(serialize($download)), $group . " [" . $type . "]", null, FALSE);
+
582  }
+
583  }
+
584  elseif(in_array($group["iconid"], $this->cachedIcons))
+
585  {
+
586  $html .= $this->getImage("group_icon_" . $group["iconid"] . ".png", $group . " [" . $type . "]");
+
587  }
+
588  }
+
589 
+
590  if($this->currObj["client_icon_id"])
+
591  {
+
592  if(!$this->currObj->iconIsLocal("client_icon_id") && $this->ftclient)
+
593  {
+
594  if(!isset($this->cacheIcon[$this->currObj["client_icon_id"]]))
+
595  {
+
596  $download = $this->currObj->getParent()->transferInitDownload(rand(0x0000, 0xFFFF), 0, $this->currObj->iconGetName("client_icon_id"));
+
597 
+
598  if($this->ftclient == "data:image")
+
599  {
+
600  $download = TeamSpeak3::factory("filetransfer://" . $download["host"] . ":" . $download["port"])->download($download["ftkey"], $download["size"]);
+
601  }
+
602 
+
603  $this->cacheIcon[$this->currObj["client_icon_id"]] = $download;
+
604  }
+
605  else
+
606  {
+
607  $download = $this->cacheIcon[$this->currObj["client_icon_id"]];
+
608  }
+
609 
+
610  if($this->ftclient == "data:image")
+
611  {
+
612  $html .= $this->getImage("data:" . TeamSpeak3_Helper_Convert::imageMimeType($download) . ";base64," . base64_encode($download), "Client Icon", null, FALSE);
+
613  }
+
614  else
+
615  {
+
616  $html .= $this->getImage($this->ftclient . "?ftdata=" . base64_encode(serialize($download)), "Client Icon", null, FALSE);
+
617  }
+
618  }
+
619  elseif(in_array($this->currObj["client_icon_id"], $this->cachedIcons))
+
620  {
+
621  $html .= $this->getImage("group_icon_" . $this->currObj["client_icon_id"] . ".png", "Client Icon");
+
622  }
+
623  }
+
624 
+
625  return $html;
+
626  }
+
627 
+
628  /**
+
629  * Returns a HTML img tag which can be used to display the country flag for a
+
630  * TeamSpeak_Node_Client object.
+
631  *
+
632  * @return string
+
633  */
+
634  protected function getSuffixFlag()
+
635  {
+
636  if(!$this->currObj instanceof TeamSpeak3_Node_Client) return;
+
637 
+
638  if($this->flagpath && $this->currObj["client_country"])
+
639  {
+
640  return $this->getImage($this->currObj["client_country"]->toLower() . ".png", $this->currObj["client_country"], null, FALSE, TRUE);
+
641  }
+
642  }
+
643 
+
644  /**
+
645  * Returns the code to display a custom HTML img tag.
+
646  *
+
647  * @param string $name
+
648  * @param string $text
+
649  * @param string $class
+
650  * @param boolean $iconpath
+
651  * @param boolean $flagpath
+
652  * @return string
+
653  */
+
654  protected function getImage($name, $text = "", $class = null, $iconpath = TRUE, $flagpath = FALSE)
+
655  {
+
656  $src = "";
+
657 
+
658  if($iconpath)
+
659  {
+
660  $src = $this->iconpath;
+
661  }
+
662 
+
663  if($flagpath)
+
664  {
+
665  $src = $this->flagpath;
+
666  }
+
667 
+
668  return "<img src='" . $src . $name . "' title='" . $text . "' alt='' align='top' />";
+
669  }
+
670 }
+
+
+ + + + diff --git a/lib/docs/html/_node_2_abstract_8php.html b/lib/docs/html/_node_2_abstract_8php.html new file mode 100644 index 0000000..0aa7b4f --- /dev/null +++ b/lib/docs/html/_node_2_abstract_8php.html @@ -0,0 +1,156 @@ + + + + + + +TeamSpeak 3 PHP Framework: TeamSpeak3/Node/Abstract.php File Reference + + + + + + + + + + + + + +
+
+ + + + + + + +
+
TeamSpeak 3 PHP Framework +  1.1.23 +
+
Copyright © Planet TeamSpeak. All rights reserved.
+
+
+ + + + + +
+
+ +
+
+
+ +
+ + + + +
+ +
+ +
+ +
+
Abstract.php File Reference
+
+
+ +

TeamSpeak 3 PHP Framework. +More...

+ +

Go to the source code of this file.

+ + + + + +

+Classes

class  TeamSpeak3_Node_Abstract
 Abstract class describing a TeamSpeak 3 node and all it's parameters. More...
 
+ + + +

+Namespaces

 TeamSpeak3
 
+ + + +

+Constant Groups

 TeamSpeak3
 
+

Detailed Description

+

TeamSpeak 3 PHP Framework.

+
Id:
Abstract.php 10/11/2013 11:35:21 scp
+

This program is free software: you can redistribute it and/or modify it under the terms of the GNU General Public License as published by the Free Software Foundation, either version 3 of the License, or (at your option) any later version.

+

This program is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License for more details.

+

You should have received a copy of the GNU General Public License along with this program. If not, see http://www.gnu.org/licenses/.

+ +

Definition in file Abstract.php.

+
+
+ + + + diff --git a/lib/docs/html/_node_2_abstract_8php_source.html b/lib/docs/html/_node_2_abstract_8php_source.html new file mode 100644 index 0000000..75e18b4 --- /dev/null +++ b/lib/docs/html/_node_2_abstract_8php_source.html @@ -0,0 +1,747 @@ + + + + + + +TeamSpeak 3 PHP Framework: TeamSpeak3/Node/Abstract.php Source File + + + + + + + + + + + + + +
+
+ + + + + + + +
+
TeamSpeak 3 PHP Framework +  1.1.23 +
+
Copyright © Planet TeamSpeak. All rights reserved.
+
+
+ + + + + +
+
+ +
+
+
+ +
+ + + + +
+ +
+ +
+
+
Abstract.php
+
+
+Go to the documentation of this file.
1 <?php
+
2 
+
3 /**
+
4  * @file
+
5  * TeamSpeak 3 PHP Framework
+
6  *
+
7  * $Id: Abstract.php 10/11/2013 11:35:21 scp@orilla $
+
8  *
+
9  * This program is free software: you can redistribute it and/or modify
+
10  * it under the terms of the GNU General Public License as published by
+
11  * the Free Software Foundation, either version 3 of the License, or
+
12  * (at your option) any later version.
+
13  *
+
14  * This program is distributed in the hope that it will be useful,
+
15  * but WITHOUT ANY WARRANTY; without even the implied warranty of
+
16  * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+
17  * GNU General Public License for more details.
+
18  *
+
19  * You should have received a copy of the GNU General Public License
+
20  * along with this program. If not, see <http://www.gnu.org/licenses/>.
+
21  *
+
22  * @package TeamSpeak3
+
23  * @version 1.1.23
+
24  * @author Sven 'ScP' Paulsen
+
25  * @copyright Copyright (c) 2010 by Planet TeamSpeak. All rights reserved.
+
26  */
+
27 
+
28 /**
+
29  * @class TeamSpeak3_Node_Abstract
+
30  * @brief Abstract class describing a TeamSpeak 3 node and all it's parameters.
+
31  */
+
32 abstract class TeamSpeak3_Node_Abstract implements RecursiveIterator, ArrayAccess, Countable
+
33 {
+
34  /**
+
35  * @ignore
+
36  */
+
37  protected $parent = null;
+
38 
+
39  /**
+
40  * @ignore
+
41  */
+
42  protected $server = null;
+
43 
+
44  /**
+
45  * @ignore
+
46  */
+
47  protected $nodeId = 0x00;
+
48 
+
49  /**
+
50  * @ignore
+
51  */
+
52  protected $nodeList = null;
+
53 
+
54  /**
+
55  * @ignore
+
56  */
+
57  protected $nodeInfo = array();
+
58 
+
59  /**
+
60  * @ignore
+
61  */
+
62  protected $storage = array();
+
63 
+
64  /**
+
65  * Sends a prepared command to the server and returns the result.
+
66  *
+
67  * @param string $cmd
+
68  * @param boolean $throw
+
69  * @return TeamSpeak3_Adapter_ServerQuery_Reply
+
70  */
+
71  public function request($cmd, $throw = TRUE)
+
72  {
+
73  return $this->getParent()->request($cmd, $throw);
+
74  }
+
75 
+
76  /**
+
77  * Uses given parameters and returns a prepared ServerQuery command.
+
78  *
+
79  * @param string $cmd
+
80  * @param array $params
+
81  * @return TeamSpeak3_Helper_String
+
82  */
+
83  public function prepare($cmd, array $params = array())
+
84  {
+
85  return $this->getParent()->prepare($cmd, $params);
+
86  }
+
87 
+
88  /**
+
89  * Prepares and executes a ServerQuery command and returns the result.
+
90  *
+
91  * @param string $cmd
+
92  * @param array $params
+
93  * @return TeamSpeak3_Adapter_ServerQuery_Reply
+
94  */
+
95  public function execute($cmd, array $params = array())
+
96  {
+
97  return $this->request($this->prepare($cmd, $params));
+
98  }
+
99 
+
100  /**
+
101  * Returns the parent object of the current node.
+
102  *
+
103  * @return TeamSpeak3_Adapter_ServerQuery
+
104  * @return TeamSpeak3_Node_Abstract
+
105  */
+
106  public function getParent()
+
107  {
+
108  return $this->parent;
+
109  }
+
110 
+
111  /**
+
112  * Returns the primary ID of the current node.
+
113  *
+
114  * @return integer
+
115  */
+
116  public function getId()
+
117  {
+
118  return $this->nodeId;
+
119  }
+
120 
+
121  /**
+
122  * Returns TRUE if the node icon has a local source.
+
123  *
+
124  * @param string $key
+
125  * @return boolean
+
126  */
+
127  public function iconIsLocal($key)
+
128  {
+
129  return ($this[$key] > 0 && $this[$key] < 1000) ? TRUE : FALSE;
+
130  }
+
131 
+
132  /**
+
133  * Returns the internal path of the node icon.
+
134  *
+
135  * @param string $key
+
136  * @return TeamSpeak3_Helper_String
+
137  */
+
138  public function iconGetName($key)
+
139  {
+
140  $iconid = ($this[$key] < 0) ? (pow(2, 32))-($this[$key]*-1) : $this[$key];
+
141 
+
142  return new TeamSpeak3_Helper_String("/icon_" . $iconid);
+
143  }
+
144 
+
145  /**
+
146  * Returns a possible classname for the node which can be used as a HTML property.
+
147  *
+
148  * @param string $prefix
+
149  * @return string
+
150  */
+
151  public function getClass($prefix = "ts3_")
+
152  {
+
153  if($this instanceof TeamSpeak3_Node_Channel && $this->isSpacer())
+
154  {
+
155  return $prefix . "spacer";
+
156  }
+
157  elseif($this instanceof TeamSpeak3_Node_Client && $this["client_type"])
+
158  {
+
159  return $prefix . "query";
+
160  }
+
161 
+
162  return $prefix . TeamSpeak3_Helper_String::factory(get_class($this))->section("_", 2)->toLower();
+
163  }
+
164 
+
165  /**
+
166  * Returns a unique identifier for the node which can be used as a HTML property.
+
167  *
+
168  * @return string
+
169  */
+
170  abstract public function getUniqueId();
+
171 
+
172  /**
+
173  * Returns the name of a possible icon to display the node object.
+
174  *
+
175  * @return string
+
176  */
+
177  abstract public function getIcon();
+
178 
+
179  /**
+
180  * Returns a symbol representing the node.
+
181  *
+
182  * @return string
+
183  */
+
184  abstract public function getSymbol();
+
185 
+
186  /**
+
187  * Returns the HTML code to display a TeamSpeak 3 viewer.
+
188  *
+
189  * @param TeamSpeak3_Viewer_Interface $viewer
+
190  * @return string
+
191  */
+
192  public function getViewer(TeamSpeak3_Viewer_Interface $viewer)
+
193  {
+
194  $html = $viewer->fetchObject($this);
+
195 
+
196  $iterator = new RecursiveIteratorIterator($this, RecursiveIteratorIterator::SELF_FIRST);
+
197 
+
198  foreach($iterator as $node)
+
199  {
+
200  $siblings = array();
+
201 
+
202  for($level = 0; $level < $iterator->getDepth(); $level++)
+
203  {
+
204  $siblings[] = ($iterator->getSubIterator($level)->hasNext()) ? 1 : 0;
+
205  }
+
206 
+
207  $siblings[] = (!$iterator->getSubIterator($level)->hasNext()) ? 1 : 0;
+
208 
+
209  $html .= $viewer->fetchObject($node, $siblings);
+
210  }
+
211 
+
212  return $html;
+
213  }
+
214 
+
215  /**
+
216  * Filters given node list array using specified filter rules.
+
217  *
+
218  * @param array $nodes
+
219  * @param array $rules
+
220  * @return array
+
221  */
+
222  protected function filterList(array $nodes = array(), array $rules = array())
+
223  {
+
224  if(!empty($rules))
+
225  {
+
226  foreach($nodes as $node)
+
227  {
+
228  if(!$node instanceof TeamSpeak3_Node_Abstract) continue;
+
229 
+
230  $props = $node->getInfo(FALSE);
+
231  $props = array_intersect_key($props, $rules);
+
232  $match = TRUE;
+
233 
+
234  foreach($props as $key => $val)
+
235  {
+
236  if($val instanceof TeamSpeak3_Helper_String)
+
237  {
+
238  $match = $val->contains($rules[$key], TRUE);
+
239  }
+
240  else
+
241  {
+
242  $match = $val == $rules[$key];
+
243  }
+
244 
+
245  if($match === FALSE)
+
246  {
+
247  unset($nodes[$node->getId()]);
+
248  }
+
249  }
+
250  }
+
251  }
+
252 
+
253  return $nodes;
+
254  }
+
255 
+
256  /**
+
257  * Returns all information available on this node. If $convert is enabled, some property
+
258  * values will be converted to human-readable values.
+
259  *
+
260  * @param boolean $extend
+
261  * @param boolean $convert
+
262  * @return array
+
263  */
+
264  public function getInfo($extend = TRUE, $convert = FALSE)
+
265  {
+
266  if($extend)
+
267  {
+
268  $this->fetchNodeInfo();
+
269  }
+
270 
+
271  if($convert)
+
272  {
+
273  $info = $this->nodeInfo;
+
274 
+
275  foreach($info as $key => $val)
+
276  {
+ +
278 
+
279  if($key->contains("_bytes_"))
+
280  {
+
281  $info[$key->toString()] = TeamSpeak3_Helper_Convert::bytes($val);
+
282  }
+
283  elseif($key->contains("_bandwidth_"))
+
284  {
+
285  $info[$key->toString()] = TeamSpeak3_Helper_Convert::bytes($val) . "/s";
+
286  }
+
287  elseif($key->contains("_packets_"))
+
288  {
+
289  $info[$key->toString()] = number_format($val, null, null, ".");
+
290  }
+
291  elseif($key->contains("_packetloss_"))
+
292  {
+
293  $info[$key->toString()] = sprintf("%01.2f", floatval($val->toString())*100) . "%";
+
294  }
+
295  elseif($key->endsWith("_uptime"))
+
296  {
+
297  $info[$key->toString()] = TeamSpeak3_Helper_Convert::seconds($val);
+
298  }
+
299  elseif($key->endsWith("_version"))
+
300  {
+
301  $info[$key->toString()] = TeamSpeak3_Helper_Convert::version($val);
+
302  }
+
303  elseif($key->endsWith("_icon_id"))
+
304  {
+
305  $info[$key->toString()] = $this->iconGetName($key)->filterDigits();
+
306  }
+
307  }
+
308 
+
309  return $info;
+
310  }
+
311 
+
312  return $this->nodeInfo;
+
313  }
+
314 
+
315  /**
+
316  * Returns the specified property or a pre-defined default value from the node info array.
+
317  *
+
318  * @param string $property
+
319  * @param mixed $default
+
320  * @return mixed
+
321  */
+
322  public function getProperty($property, $default = null)
+
323  {
+
324  if(!$this->offsetExists($property))
+
325  {
+
326  $this->fetchNodeInfo();
+
327  }
+
328 
+
329  if(!$this->offsetExists($property))
+
330  {
+
331  return $default;
+
332  }
+
333 
+
334  return $this->nodeInfo[(string) $property];
+
335  }
+
336 
+
337  /**
+
338  * Returns a string representation of this node.
+
339  *
+
340  * @return string
+
341  */
+
342  public function __toString()
+
343  {
+
344  return get_class($this);
+
345  }
+
346 
+
347  /**
+
348  * Returns a string representation of this node.
+
349  *
+
350  * @return string
+
351  */
+
352  public function toString()
+
353  {
+
354  return $this->__toString();
+
355  }
+
356 
+
357  /**
+
358  * Returns an assoc array filled with current node info properties.
+
359  *
+
360  * @return array
+
361  */
+
362  public function toArray()
+
363  {
+
364  return $this->nodeList;
+
365  }
+
366 
+
367  /**
+
368  * Called whenever we're using an unknown method.
+
369  *
+
370  * @param string $name
+
371  * @param array $args
+
372  * @throws TeamSpeak3_Node_Exception
+
373  * @return mixed
+
374  */
+
375  public function __call($name, array $args)
+
376  {
+
377  if($this->getParent() instanceof TeamSpeak3_Node_Abstract)
+
378  {
+
379  return call_user_func_array(array($this->getParent(), $name), $args);
+
380  }
+
381 
+
382  throw new TeamSpeak3_Node_Exception("node method '" . $name . "()' does not exist");
+
383  }
+
384 
+
385  /**
+
386  * Writes data to the internal storage array.
+
387  *
+
388  * @param string $key
+
389  * @param mixed $val
+
390  * @return void
+
391  */
+
392  protected function setStorage($key, $val)
+
393  {
+
394  $this->storage[$key] = $val;
+
395  }
+
396 
+
397  /**
+
398  * Returns data from the internal storage array.
+
399  *
+
400  * @param string $key
+
401  * @param mixed $default
+
402  * @return mixed
+
403  */
+
404  protected function getStorage($key, $default = null)
+
405  {
+
406  return (array_key_exists($key, $this->storage) && !empty($this->storage[$key])) ? $this->storage[$key] : $default;
+
407  }
+
408 
+
409  /**
+
410  * Deletes data from the internal storage array.
+
411  *
+
412  * @param string $key
+
413  * @return void
+
414  */
+
415  protected function delStorage($key)
+
416  {
+
417  unset($this->storage[$key]);
+
418  }
+
419 
+
420  /**
+
421  * Commit pending data.
+
422  *
+
423  * @return array
+
424  */
+
425  public function __sleep()
+
426  {
+
427  return array("parent", "storage", "nodeId");
+
428  }
+
429 
+
430  /**
+
431  * @ignore
+
432  */
+
433  protected function fetchNodeList()
+
434  {
+
435  $this->nodeList = array();
+
436  }
+
437 
+
438  /**
+
439  * @ignore
+
440  */
+
441  protected function fetchNodeInfo()
+
442  {
+
443  return;
+
444  }
+
445 
+
446  /**
+
447  * @ignore
+
448  */
+
449  protected function resetNodeInfo()
+
450  {
+
451  $this->nodeInfo = array();
+
452  }
+
453 
+
454  /**
+
455  * @ignore
+
456  */
+
457  protected function verifyNodeList()
+
458  {
+
459  if($this->nodeList === null)
+
460  {
+
461  $this->fetchNodeList();
+
462  }
+
463  }
+
464 
+
465  /**
+
466  * @ignore
+
467  */
+
468  protected function resetNodeList()
+
469  {
+
470  $this->nodeList = null;
+
471  }
+
472 
+
473  /**
+
474  * @ignore
+
475  */
+
476  public function count()
+
477  {
+
478  $this->verifyNodeList();
+
479 
+
480  return count($this->nodeList);
+
481  }
+
482 
+
483  /**
+
484  * @ignore
+
485  */
+
486  public function current()
+
487  {
+
488  $this->verifyNodeList();
+
489 
+
490  return current($this->nodeList);
+
491  }
+
492 
+
493  /**
+
494  * @ignore
+
495  */
+
496  public function getChildren()
+
497  {
+
498  $this->verifyNodeList();
+
499 
+
500  return $this->current();
+
501  }
+
502 
+
503  /**
+
504  * @ignore
+
505  */
+
506  public function hasChildren()
+
507  {
+
508  $this->verifyNodeList();
+
509 
+
510  return $this->current()->count() > 0;
+
511  }
+
512 
+
513  /**
+
514  * @ignore
+
515  */
+
516  public function hasNext()
+
517  {
+
518  $this->verifyNodeList();
+
519 
+
520  return $this->key()+1 < $this->count();
+
521  }
+
522 
+
523  /**
+
524  * @ignore
+
525  */
+
526  public function key()
+
527  {
+
528  $this->verifyNodeList();
+
529 
+
530  return key($this->nodeList);
+
531  }
+
532 
+
533  /**
+
534  * @ignore
+
535  */
+
536  public function valid()
+
537  {
+
538  $this->verifyNodeList();
+
539 
+
540  return $this->key() !== null;
+
541  }
+
542 
+
543  /**
+
544  * @ignore
+
545  */
+
546  public function next()
+
547  {
+
548  $this->verifyNodeList();
+
549 
+
550  return next($this->nodeList);
+
551  }
+
552 
+
553  /**
+
554  * @ignore
+
555  */
+
556  public function rewind()
+
557  {
+
558  $this->verifyNodeList();
+
559 
+
560  return reset($this->nodeList);
+
561  }
+
562 
+
563  /**
+
564  * @ignore
+
565  */
+
566  public function offsetExists($offset)
+
567  {
+
568  return array_key_exists((string) $offset, $this->nodeInfo) ? TRUE : FALSE;
+
569  }
+
570 
+
571  /**
+
572  * @ignore
+
573  */
+
574  public function offsetGet($offset)
+
575  {
+
576  if(!$this->offsetExists($offset))
+
577  {
+
578  $this->fetchNodeInfo();
+
579  }
+
580 
+
581  if(!$this->offsetExists($offset))
+
582  {
+
583  throw new TeamSpeak3_Adapter_ServerQuery_Exception("invalid parameter", 0x602);
+
584  }
+
585 
+
586  return $this->nodeInfo[(string) $offset];
+
587  }
+
588 
+
589  /**
+
590  * @ignore
+
591  */
+
592  public function offsetSet($offset, $value)
+
593  {
+
594  if(method_exists($this, "modify"))
+
595  {
+
596  return $this->modify(array((string) $offset => $value));
+
597  }
+
598 
+
599  throw new TeamSpeak3_Node_Exception("node '" . get_class($this) . "' is read only");
+
600  }
+
601 
+
602  /**
+
603  * @ignore
+
604  */
+
605  public function offsetUnset($offset)
+
606  {
+
607  unset($this->nodeInfo[(string) $offset]);
+
608  }
+
609 
+
610  /**
+
611  * @ignore
+
612  */
+
613  public function __get($offset)
+
614  {
+
615  return $this->offsetGet($offset);
+
616  }
+
617 
+
618  /**
+
619  * @ignore
+
620  */
+
621  public function __set($offset, $value)
+
622  {
+
623  $this->offsetSet($offset, $value);
+
624  }
+
625 }
+
+
+ + + + diff --git a/lib/docs/html/_node_2_exception_8php.html b/lib/docs/html/_node_2_exception_8php.html new file mode 100644 index 0000000..12005c7 --- /dev/null +++ b/lib/docs/html/_node_2_exception_8php.html @@ -0,0 +1,156 @@ + + + + + + +TeamSpeak 3 PHP Framework: TeamSpeak3/Node/Exception.php File Reference + + + + + + + + + + + + + +
+
+ + + + + + + +
+
TeamSpeak 3 PHP Framework +  1.1.23 +
+
Copyright © Planet TeamSpeak. All rights reserved.
+
+
+ + + + + +
+
+ +
+
+
+ +
+ + + + +
+ +
+ +
+ +
+
Exception.php File Reference
+
+
+ +

TeamSpeak 3 PHP Framework. +More...

+ +

Go to the source code of this file.

+ + + + + +

+Classes

class  TeamSpeak3_Node_Exception
 Enhanced exception class for TeamSpeak3_Node_Abstract objects. More...
 
+ + + +

+Namespaces

 TeamSpeak3
 
+ + + +

+Constant Groups

 TeamSpeak3
 
+

Detailed Description

+

TeamSpeak 3 PHP Framework.

+
Id:
Exception.php 10/11/2013 11:35:21 scp
+

This program is free software: you can redistribute it and/or modify it under the terms of the GNU General Public License as published by the Free Software Foundation, either version 3 of the License, or (at your option) any later version.

+

This program is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License for more details.

+

You should have received a copy of the GNU General Public License along with this program. If not, see http://www.gnu.org/licenses/.

+ +

Definition in file Exception.php.

+
+
+ + + + diff --git a/lib/docs/html/_node_2_exception_8php_source.html b/lib/docs/html/_node_2_exception_8php_source.html new file mode 100644 index 0000000..483dc70 --- /dev/null +++ b/lib/docs/html/_node_2_exception_8php_source.html @@ -0,0 +1,154 @@ + + + + + + +TeamSpeak 3 PHP Framework: TeamSpeak3/Node/Exception.php Source File + + + + + + + + + + + + + +
+
+ + + + + + + +
+
TeamSpeak 3 PHP Framework +  1.1.23 +
+
Copyright © Planet TeamSpeak. All rights reserved.
+
+
+ + + + + +
+
+ +
+
+
+ +
+ + + + +
+ +
+ +
+
+
Exception.php
+
+
+Go to the documentation of this file.
1 <?php
+
2 
+
3 /**
+
4  * @file
+
5  * TeamSpeak 3 PHP Framework
+
6  *
+
7  * $Id: Exception.php 10/11/2013 11:35:21 scp@orilla $
+
8  *
+
9  * This program is free software: you can redistribute it and/or modify
+
10  * it under the terms of the GNU General Public License as published by
+
11  * the Free Software Foundation, either version 3 of the License, or
+
12  * (at your option) any later version.
+
13  *
+
14  * This program is distributed in the hope that it will be useful,
+
15  * but WITHOUT ANY WARRANTY; without even the implied warranty of
+
16  * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+
17  * GNU General Public License for more details.
+
18  *
+
19  * You should have received a copy of the GNU General Public License
+
20  * along with this program. If not, see <http://www.gnu.org/licenses/>.
+
21  *
+
22  * @package TeamSpeak3
+
23  * @version 1.1.23
+
24  * @author Sven 'ScP' Paulsen
+
25  * @copyright Copyright (c) 2010 by Planet TeamSpeak. All rights reserved.
+
26  */
+
27 
+
28 /**
+
29  * @class TeamSpeak3_Node_Exception
+
30  * @brief Enhanced exception class for TeamSpeak3_Node_Abstract objects.
+
31  */
+ +
+
+ + + + diff --git a/lib/docs/html/_profiler_8php.html b/lib/docs/html/_profiler_8php.html new file mode 100644 index 0000000..733c643 --- /dev/null +++ b/lib/docs/html/_profiler_8php.html @@ -0,0 +1,156 @@ + + + + + + +TeamSpeak 3 PHP Framework: TeamSpeak3/Helper/Profiler.php File Reference + + + + + + + + + + + + + +
+
+ + + + + + + +
+
TeamSpeak 3 PHP Framework +  1.1.23 +
+
Copyright © Planet TeamSpeak. All rights reserved.
+
+
+ + + + + +
+
+ +
+
+
+ +
+ + + + +
+ +
+ +
+ +
+
Profiler.php File Reference
+
+
+ +

TeamSpeak 3 PHP Framework. +More...

+ +

Go to the source code of this file.

+ + + + + +

+Classes

class  TeamSpeak3_Helper_Profiler
 Helper class for profiler handling. More...
 
+ + + +

+Namespaces

 TeamSpeak3
 
+ + + +

+Constant Groups

 TeamSpeak3
 
+

Detailed Description

+

TeamSpeak 3 PHP Framework.

+
Id:
Profiler.php 10/11/2013 11:35:21 scp
+

This program is free software: you can redistribute it and/or modify it under the terms of the GNU General Public License as published by the Free Software Foundation, either version 3 of the License, or (at your option) any later version.

+

This program is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License for more details.

+

You should have received a copy of the GNU General Public License along with this program. If not, see http://www.gnu.org/licenses/.

+ +

Definition in file Profiler.php.

+
+
+ + + + diff --git a/lib/docs/html/_profiler_8php_source.html b/lib/docs/html/_profiler_8php_source.html new file mode 100644 index 0000000..d48d634 --- /dev/null +++ b/lib/docs/html/_profiler_8php_source.html @@ -0,0 +1,223 @@ + + + + + + +TeamSpeak 3 PHP Framework: TeamSpeak3/Helper/Profiler.php Source File + + + + + + + + + + + + + +
+
+ + + + + + + +
+
TeamSpeak 3 PHP Framework +  1.1.23 +
+
Copyright © Planet TeamSpeak. All rights reserved.
+
+
+ + + + + +
+
+ +
+
+
+ +
+ + + + +
+ +
+ +
+
+
Profiler.php
+
+
+Go to the documentation of this file.
1 <?php
+
2 
+
3 /**
+
4  * @file
+
5  * TeamSpeak 3 PHP Framework
+
6  *
+
7  * $Id: Profiler.php 10/11/2013 11:35:21 scp@orilla $
+
8  *
+
9  * This program is free software: you can redistribute it and/or modify
+
10  * it under the terms of the GNU General Public License as published by
+
11  * the Free Software Foundation, either version 3 of the License, or
+
12  * (at your option) any later version.
+
13  *
+
14  * This program is distributed in the hope that it will be useful,
+
15  * but WITHOUT ANY WARRANTY; without even the implied warranty of
+
16  * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+
17  * GNU General Public License for more details.
+
18  *
+
19  * You should have received a copy of the GNU General Public License
+
20  * along with this program. If not, see <http://www.gnu.org/licenses/>.
+
21  *
+
22  * @package TeamSpeak3
+
23  * @version 1.1.23
+
24  * @author Sven 'ScP' Paulsen
+
25  * @copyright Copyright (c) 2010 by Planet TeamSpeak. All rights reserved.
+
26  */
+
27 
+
28 /**
+
29  * @class TeamSpeak3_Helper_Profiler
+
30  * @brief Helper class for profiler handling.
+
31  */
+ +
33 {
+
34  /**
+
35  * Stores various timers for code profiling.
+
36  *
+
37  * @var array
+
38  */
+
39  protected static $timers = array();
+
40 
+
41  /**
+
42  * Inits a timer.
+
43  *
+
44  * @param string $name
+
45  * @return void
+
46  */
+
47  public static function init($name = "default")
+
48  {
+
49  self::$timers[$name] = new TeamSpeak3_Helper_Profiler_Timer($name);
+
50  }
+
51 
+
52  /**
+
53  * Starts a timer.
+
54  *
+
55  * @param string $name
+
56  * @return void
+
57  */
+
58  public static function start($name = "default")
+
59  {
+
60  if(array_key_exists($name, self::$timers))
+
61  {
+
62  self::$timers[$name]->start();
+
63  }
+
64  else
+
65  {
+
66  self::$timers[$name] = new TeamSpeak3_Helper_Profiler_Timer($name);
+
67  }
+
68  }
+
69 
+
70  /**
+
71  * Stops a timer.
+
72  *
+
73  * @param string $name
+
74  * @return void
+
75  */
+
76  public static function stop($name = "default")
+
77  {
+
78  if(!array_key_exists($name, self::$timers))
+
79  {
+
80  self::init($name);
+
81  }
+
82 
+
83  self::$timers[$name]->stop();
+
84  }
+
85 
+
86  /**
+
87  * Returns a timer.
+
88  *
+
89  * @param string $name
+
90  * @return TeamSpeak3_Helper_Profiler_Timer
+
91  */
+
92  public static function get($name = "default")
+
93  {
+
94  if(!array_key_exists($name, self::$timers))
+
95  {
+
96  self::init($name);
+
97  }
+
98 
+
99  return self::$timers[$name];
+
100  }
+
101 }
+
+
+ + + + diff --git a/lib/docs/html/_reply_8php.html b/lib/docs/html/_reply_8php.html new file mode 100644 index 0000000..6573bfe --- /dev/null +++ b/lib/docs/html/_reply_8php.html @@ -0,0 +1,156 @@ + + + + + + +TeamSpeak 3 PHP Framework: TeamSpeak3/Adapter/ServerQuery/Reply.php File Reference + + + + + + + + + + + + + +
+
+ + + + + + + +
+
TeamSpeak 3 PHP Framework +  1.1.23 +
+
Copyright © Planet TeamSpeak. All rights reserved.
+
+
+ + + + + +
+
+ +
+
+
+ +
+ + + + +
+ +
+ +
+ +
+
Reply.php File Reference
+
+
+ +

TeamSpeak 3 PHP Framework. +More...

+ +

Go to the source code of this file.

+ + + + + +

+Classes

class  TeamSpeak3_Adapter_ServerQuery_Reply
 Provides methods to analyze and format a ServerQuery reply. More...
 
+ + + +

+Namespaces

 TeamSpeak3
 
+ + + +

+Constant Groups

 TeamSpeak3
 
+

Detailed Description

+

TeamSpeak 3 PHP Framework.

+
Id:
Reply.php 10/11/2013 11:35:21 scp
+

This program is free software: you can redistribute it and/or modify it under the terms of the GNU General Public License as published by the Free Software Foundation, either version 3 of the License, or (at your option) any later version.

+

This program is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License for more details.

+

You should have received a copy of the GNU General Public License along with this program. If not, see http://www.gnu.org/licenses/.

+ +

Definition in file Reply.php.

+
+
+ + + + diff --git a/lib/docs/html/_reply_8php_source.html b/lib/docs/html/_reply_8php_source.html new file mode 100644 index 0000000..c3927cb --- /dev/null +++ b/lib/docs/html/_reply_8php_source.html @@ -0,0 +1,468 @@ + + + + + + +TeamSpeak 3 PHP Framework: TeamSpeak3/Adapter/ServerQuery/Reply.php Source File + + + + + + + + + + + + + +
+
+ + + + + + + +
+
TeamSpeak 3 PHP Framework +  1.1.23 +
+
Copyright © Planet TeamSpeak. All rights reserved.
+
+
+ + + + + +
+
+ +
+
+
+ +
+ + + + +
+ +
+ +
+
+
Reply.php
+
+
+Go to the documentation of this file.
1 <?php
+
2 
+
3 /**
+
4  * @file
+
5  * TeamSpeak 3 PHP Framework
+
6  *
+
7  * $Id: Reply.php 10/11/2013 11:35:21 scp@orilla $
+
8  *
+
9  * This program is free software: you can redistribute it and/or modify
+
10  * it under the terms of the GNU General Public License as published by
+
11  * the Free Software Foundation, either version 3 of the License, or
+
12  * (at your option) any later version.
+
13  *
+
14  * This program is distributed in the hope that it will be useful,
+
15  * but WITHOUT ANY WARRANTY; without even the implied warranty of
+
16  * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+
17  * GNU General Public License for more details.
+
18  *
+
19  * You should have received a copy of the GNU General Public License
+
20  * along with this program. If not, see <http://www.gnu.org/licenses/>.
+
21  *
+
22  * @package TeamSpeak3
+
23  * @version 1.1.23
+
24  * @author Sven 'ScP' Paulsen
+
25  * @copyright Copyright (c) 2010 by Planet TeamSpeak. All rights reserved.
+
26  */
+
27 
+
28 /**
+
29  * @class TeamSpeak3_Adapter_ServerQuery_Reply
+
30  * @brief Provides methods to analyze and format a ServerQuery reply.
+
31  */
+ +
33 {
+
34  /**
+
35  * Stores the command used to get this reply.
+
36  *
+
37  * @var TeamSpeak3_Helper_String
+
38  */
+
39  protected $cmd = null;
+
40 
+
41  /**
+
42  * Stores the servers reply (if available).
+
43  *
+
44  * @var TeamSpeak3_Helper_String
+
45  */
+
46  protected $rpl = null;
+
47 
+
48  /**
+
49  * Stores connected TeamSpeak3_Node_Host object.
+
50  *
+
51  * @var TeamSpeak3_Node_Host
+
52  */
+
53  protected $con = null;
+
54 
+
55  /**
+
56  * Stores an assoc array containing the error info for this reply.
+
57  *
+
58  * @var array
+
59  */
+
60  protected $err = array();
+
61 
+
62  /**
+
63  * Sotres an array of events that occured before or during this reply.
+
64  *
+
65  * @var array
+
66  */
+
67  protected $evt = array();
+
68 
+
69  /**
+
70  * Indicates whether exceptions should be thrown or not.
+
71  *
+
72  * @var boolean
+
73  */
+
74  protected $exp = TRUE;
+
75 
+
76  /**
+
77  * Creates a new TeamSpeak3_Adapter_ServerQuery_Reply object.
+
78  *
+
79  * @param array $rpl
+
80  * @param string $cmd
+
81  * @param boolean $exp
+
82  * @param TeamSpeak3_Node_Host $con
+
83  * @return TeamSpeak3_Adapter_ServerQuery_Reply
+
84  */
+
85  public function __construct(array $rpl, $cmd = null, TeamSpeak3_Node_Host $con = null, $exp = TRUE)
+
86  {
+
87  $this->cmd = new TeamSpeak3_Helper_String($cmd);
+
88  $this->con = $con;
+
89  $this->exp = (bool) $exp;
+
90 
+
91  $this->fetchError(array_pop($rpl));
+
92  $this->fetchReply($rpl);
+
93  }
+
94 
+
95  /**
+
96  * Returns the reply as an TeamSpeak3_Helper_String object.
+
97  *
+
98  * @return TeamSpeak3_Helper_String
+
99  */
+
100  public function toString()
+
101  {
+
102  return (!func_num_args()) ? $this->rpl->unescape() : $this->rpl;
+
103  }
+
104 
+
105  /**
+
106  * Returns the reply as a standard PHP array where each element represents one item.
+
107  *
+
108  * @return array
+
109  */
+
110  public function toLines()
+
111  {
+
112  if(!count($this->rpl)) return array();
+
113 
+
114  $list = $this->toString(0)->split(TeamSpeak3::SEPARATOR_LIST);
+
115 
+
116  if(!func_num_args())
+
117  {
+
118  for($i = 0; $i < count($list); $i++) $list[$i]->unescape();
+
119  }
+
120 
+
121  return $list;
+
122  }
+
123 
+
124  /**
+
125  * Returns the reply as a standard PHP array where each element represents one item in table format.
+
126  *
+
127  * @return array
+
128  */
+
129  public function toTable()
+
130  {
+
131  $table = array();
+
132 
+
133  foreach($this->toLines(0) as $cells)
+
134  {
+
135  $pairs = $cells->split(TeamSpeak3::SEPARATOR_CELL);
+
136 
+
137  if(!func_num_args())
+
138  {
+
139  for($i = 0; $i < count($pairs); $i++) $pairs[$i]->unescape();
+
140  }
+
141 
+
142  $table[] = $pairs;
+
143  }
+
144 
+
145  return $table;
+
146  }
+
147 
+
148  /**
+
149  * Returns a multi-dimensional array containing the reply splitted in multiple rows and columns.
+
150  *
+
151  * @return array
+
152  */
+
153  public function toArray()
+
154  {
+
155  $array = array();
+
156  $table = $this->toTable(1);
+
157 
+
158  for($i = 0; $i < count($table); $i++)
+
159  {
+
160  foreach($table[$i] as $pair)
+
161  {
+
162  if(!count($pair))
+
163  {
+
164  continue;
+
165  }
+
166 
+
167  if(!$pair->contains(TeamSpeak3::SEPARATOR_PAIR))
+
168  {
+
169  $array[$i][$pair->toString()] = null;
+
170  }
+
171  else
+
172  {
+
173  list($ident, $value) = $pair->split(TeamSpeak3::SEPARATOR_PAIR, 2);
+
174 
+
175  $array[$i][$ident->toString()] = $value->isInt() ? $value->toInt() : (!func_num_args() ? $value->unescape() : $value);
+
176  }
+
177  }
+
178  }
+
179 
+
180  return $array;
+
181  }
+
182 
+
183  /**
+
184  * Returns a multi-dimensional assoc array containing the reply splitted in multiple rows and columns.
+
185  * The identifier specified by key will be used while indexing the array.
+
186  *
+
187  * @param $key
+
188  * @return array
+
189  */
+
190  public function toAssocArray($ident)
+
191  {
+
192  $nodes = (func_num_args() > 1) ? $this->toArray(1) : $this->toArray();
+
193  $array = array();
+
194 
+
195  foreach($nodes as $node)
+
196  {
+
197  if(array_key_exists($ident, $node))
+
198  {
+
199  $array[(is_object($node[$ident])) ? $node[$ident]->toString() : $node[$ident]] = $node;
+
200  }
+
201  else
+
202  {
+
203  throw new TeamSpeak3_Adapter_ServerQuery_Exception("invalid parameter", 0x602);
+
204  }
+
205  }
+
206 
+
207  return $array;
+
208  }
+
209 
+
210  /**
+
211  * Returns an array containing the reply splitted in multiple rows and columns.
+
212  *
+
213  * @return array
+
214  */
+
215  public function toList()
+
216  {
+
217  $array = func_num_args() ? $this->toArray(1) : $this->toArray();
+
218 
+
219  if(count($array) == 1)
+
220  {
+
221  return array_shift($array);
+
222  }
+
223 
+
224  return $array;
+
225  }
+
226 
+
227  /**
+
228  * Returns an array containing stdClass objects.
+
229  *
+
230  * @return ArrayObject
+
231  */
+
232  public function toObjectArray()
+
233  {
+
234  $array = (func_num_args() > 1) ? $this->toArray(1) : $this->toArray();
+
235 
+
236  for($i = 0; $i < count($array); $i++)
+
237  {
+
238  $array[$i] = (object) $array[$i];
+
239  }
+
240 
+
241  return $array;
+
242  }
+
243 
+
244  /**
+
245  * Returns the command used to get this reply.
+
246  *
+
247  * @return TeamSpeak3_Helper_String
+
248  */
+
249  public function getCommandString()
+
250  {
+
251  return new TeamSpeak3_Helper_String($this->cmd);
+
252  }
+
253 
+
254  /**
+
255  * Returns an array of events that occured before or during this reply.
+
256  *
+
257  * @return array
+
258  */
+
259  public function getNotifyEvents()
+
260  {
+
261  return $this->evt;
+
262  }
+
263 
+
264  /**
+
265  * Returns the value for a specified error property.
+
266  *
+
267  * @param string $ident
+
268  * @param mixed $default
+
269  * @return mixed
+
270  */
+
271  public function getErrorProperty($ident, $default = null)
+
272  {
+
273  return (array_key_exists($ident, $this->err)) ? $this->err[$ident] : $default;
+
274  }
+
275 
+
276  /**
+
277  * Parses a ServerQuery error and throws a TeamSpeak3_Adapter_ServerQuery_Exception object if
+
278  * there's an error.
+
279  *
+
280  * @param string $err
+
281  * @throws TeamSpeak3_Adapter_ServerQuery_Exception
+
282  * @return void
+
283  */
+
284  protected function fetchError($err)
+
285  {
+
286  $cells = $err->section(TeamSpeak3::SEPARATOR_CELL, 1, 3);
+
287 
+
288  foreach($cells->split(TeamSpeak3::SEPARATOR_CELL) as $pair)
+
289  {
+
290  list($ident, $value) = $pair->split(TeamSpeak3::SEPARATOR_PAIR);
+
291 
+
292  $this->err[$ident->toString()] = $value->isInt() ? $value->toInt() : $value->unescape();
+
293  }
+
294 
+
295  TeamSpeak3_Helper_Signal::getInstance()->emit("notifyError", $this);
+
296 
+
297  if($this->getErrorProperty("id", 0x00) != 0x00 && $this->exp)
+
298  {
+
299  if($permid = $this->getErrorProperty("failed_permid"))
+
300  {
+
301  if($permsid = key($this->con->request("permget permid=" . $permid, FALSE)->toAssocArray("permsid")))
+
302  {
+
303  $suffix = " (failed on " . $permsid . ")";
+
304  }
+
305  else
+
306  {
+
307  $suffix = " (failed on " . $this->cmd->section(TeamSpeak3::SEPARATOR_CELL) . " " . $permid . "/0x" . strtoupper(dechex($permid)) . ")";
+
308  }
+
309  }
+
310  elseif($details = $this->getErrorProperty("extra_msg"))
+
311  {
+
312  $suffix = " (" . trim($details) . ")";
+
313  }
+
314  else
+
315  {
+
316  $suffix = "";
+
317  }
+
318 
+
319  throw new TeamSpeak3_Adapter_ServerQuery_Exception($this->getErrorProperty("msg") . $suffix, $this->getErrorProperty("id"));
+
320  }
+
321  }
+
322 
+
323  /**
+
324  * Parses a ServerQuery reply and creates a TeamSpeak3_Helper_String object.
+
325  *
+
326  * @param string $rpl
+
327  * @return void
+
328  */
+
329  protected function fetchReply($rpl)
+
330  {
+
331  foreach($rpl as $key => $val)
+
332  {
+
333  if($val->startsWith(TeamSpeak3::GREET))
+
334  {
+
335  unset($rpl[$key]);
+
336  }
+
337  elseif($val->startsWith(TeamSpeak3::EVENT))
+
338  {
+
339  $this->evt[] = new TeamSpeak3_Adapter_ServerQuery_Event($rpl[$key], $this->con);
+
340  unset($rpl[$key]);
+
341  }
+
342  }
+
343 
+
344  $this->rpl = new TeamSpeak3_Helper_String(implode(TeamSpeak3::SEPARATOR_LIST, $rpl));
+
345  }
+
346 }
+
+
+ + + + diff --git a/lib/docs/html/_server_8php.html b/lib/docs/html/_server_8php.html new file mode 100644 index 0000000..cbc6c8f --- /dev/null +++ b/lib/docs/html/_server_8php.html @@ -0,0 +1,156 @@ + + + + + + +TeamSpeak 3 PHP Framework: TeamSpeak3/Node/Server.php File Reference + + + + + + + + + + + + + +
+
+ + + + + + + +
+
TeamSpeak 3 PHP Framework +  1.1.23 +
+
Copyright © Planet TeamSpeak. All rights reserved.
+
+
+ + + + + +
+
+ +
+
+
+ +
+ + + + +
+ +
+ +
+ +
+
Server.php File Reference
+
+
+ +

TeamSpeak 3 PHP Framework. +More...

+ +

Go to the source code of this file.

+ + + + + +

+Classes

class  TeamSpeak3_Node_Server
 Class describing a TeamSpeak 3 virtual server and all it's parameters. More...
 
+ + + +

+Namespaces

 TeamSpeak3
 
+ + + +

+Constant Groups

 TeamSpeak3
 
+

Detailed Description

+

TeamSpeak 3 PHP Framework.

+
Id:
Server.php 10/11/2013 11:35:21 scp
+

This program is free software: you can redistribute it and/or modify it under the terms of the GNU General Public License as published by the Free Software Foundation, either version 3 of the License, or (at your option) any later version.

+

This program is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License for more details.

+

You should have received a copy of the GNU General Public License along with this program. If not, see http://www.gnu.org/licenses/.

+ +

Definition in file Server.php.

+
+
+ + + + diff --git a/lib/docs/html/_server_8php_source.html b/lib/docs/html/_server_8php_source.html new file mode 100644 index 0000000..230989f --- /dev/null +++ b/lib/docs/html/_server_8php_source.html @@ -0,0 +1,2658 @@ + + + + + + +TeamSpeak 3 PHP Framework: TeamSpeak3/Node/Server.php Source File + + + + + + + + + + + + + +
+
+ + + + + + + +
+
TeamSpeak 3 PHP Framework +  1.1.23 +
+
Copyright © Planet TeamSpeak. All rights reserved.
+
+
+ + + + + +
+
+ +
+
+
+ +
+ + + + +
+ +
+ +
+
+
Server.php
+
+
+Go to the documentation of this file.
1 <?php
+
2 
+
3 /**
+
4  * @file
+
5  * TeamSpeak 3 PHP Framework
+
6  *
+
7  * $Id: Server.php 10/11/2013 11:35:21 scp@orilla $
+
8  *
+
9  * This program is free software: you can redistribute it and/or modify
+
10  * it under the terms of the GNU General Public License as published by
+
11  * the Free Software Foundation, either version 3 of the License, or
+
12  * (at your option) any later version.
+
13  *
+
14  * This program is distributed in the hope that it will be useful,
+
15  * but WITHOUT ANY WARRANTY; without even the implied warranty of
+
16  * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+
17  * GNU General Public License for more details.
+
18  *
+
19  * You should have received a copy of the GNU General Public License
+
20  * along with this program. If not, see <http://www.gnu.org/licenses/>.
+
21  *
+
22  * @package TeamSpeak3
+
23  * @version 1.1.23
+
24  * @author Sven 'ScP' Paulsen
+
25  * @copyright Copyright (c) 2010 by Planet TeamSpeak. All rights reserved.
+
26  */
+
27 
+
28 /**
+
29  * @class TeamSpeak3_Node_Server
+
30  * @brief Class describing a TeamSpeak 3 virtual server and all it's parameters.
+
31  */
+ +
33 {
+
34  /**
+
35  * @ignore
+
36  */
+
37  protected $channelList = null;
+
38 
+
39  /**
+
40  * @ignore
+
41  */
+
42  protected $clientList = null;
+
43 
+
44  /**
+
45  * @ignore
+
46  */
+
47  protected $sgroupList = null;
+
48 
+
49  /**
+
50  * @ignore
+
51  */
+
52  protected $cgroupList = null;
+
53 
+
54  /**
+
55  * The TeamSpeak3_Node_Server constructor.
+
56  *
+
57  * @param TeamSpeak3_Node_Host $host
+
58  * @param array $info
+
59  * @param string $index
+
60  * @throws TeamSpeak3_Adapter_ServerQuery_Exception
+
61  * @return TeamSpeak3_Node_Server
+
62  */
+
63  public function __construct(TeamSpeak3_Node_Host $host, array $info, $index = "virtualserver_id")
+
64  {
+
65  $this->parent = $host;
+
66  $this->nodeInfo = $info;
+
67 
+
68  if(!array_key_exists($index, $this->nodeInfo))
+
69  {
+
70  throw new TeamSpeak3_Adapter_ServerQuery_Exception("invalid serverID", 0x400);
+
71  }
+
72 
+
73  $this->nodeId = $this->nodeInfo[$index];
+
74  }
+
75 
+
76  /**
+
77  * Sends a prepared command to the server and returns the result.
+
78  *
+
79  * @param string $cmd
+
80  * @param boolean $throw
+
81  * @return TeamSpeak3_Adapter_ServerQuery_Reply
+
82  */
+
83  public function request($cmd, $throw = TRUE)
+
84  {
+
85  if($this->getId() != $this->getParent()->serverSelectedId())
+
86  {
+
87  $this->getParent()->serverSelect($this->getId());
+
88  }
+
89 
+
90  return $this->getParent()->request($cmd, $throw);
+
91  }
+
92 
+
93  /**
+
94  * Returns an array filled with TeamSpeak3_Node_Channel objects.
+
95  *
+
96  * @param array $filter
+
97  * @return array
+
98  */
+
99  public function channelList(array $filter = array())
+
100  {
+
101  if($this->channelList === null)
+
102  {
+
103  $channels = $this->request("channellist -topic -flags -voice -limits -icon")->toAssocArray("cid");
+
104 
+
105  $this->channelList = array();
+
106 
+
107  foreach($channels as $cid => $channel)
+
108  {
+
109  $this->channelList[$cid] = new TeamSpeak3_Node_Channel($this, $channel);
+
110  }
+
111 
+
112  $this->resetNodeList();
+
113  }
+
114 
+
115  return $this->filterList($this->channelList, $filter);
+
116  }
+
117 
+
118  /**
+
119  * Resets the list of channels online.
+
120  *
+
121  * @return void
+
122  */
+
123  public function channelListReset()
+
124  {
+
125  $this->resetNodeList();
+
126  $this->channelList = null;
+
127  }
+
128 
+
129  /**
+
130  * Creates a new channel using given properties and returns the new ID.
+
131  *
+
132  * @param array $properties
+
133  * @return integer
+
134  */
+
135  public function channelCreate(array $properties)
+
136  {
+
137  $cid = $this->execute("channelcreate", $properties)->toList();
+
138  $this->channelListReset();
+
139 
+
140  if(!isset($properties["client_flag_permanent"]) && !isset($properties["client_flag_semi_permanent"]))
+
141  {
+
142  $this->getParent()->whoamiSet("client_channel_id", $cid["cid"]);
+
143  }
+
144 
+
145  return $cid["cid"];
+
146  }
+
147 
+
148  /**
+
149  * Deletes the channel specified by $cid.
+
150  *
+
151  * @param integer $cid
+
152  * @param boolean $force
+
153  * @return void
+
154  */
+
155  public function channelDelete($cid, $force = FALSE)
+
156  {
+
157  $this->execute("channeldelete", array("cid" => $cid, "force" => $force));
+
158  $this->channelListReset();
+
159 
+
160  if(($cid instanceof TeamSpeak3_Node_Abstract ? $cid->getId() : $cid) == $this->whoamiGet("client_channel_id"))
+
161  {
+
162  $this->getParent()->whoamiReset();
+
163  }
+
164  }
+
165 
+
166  /**
+
167  * Moves the channel specified by $cid to the parent channel specified with $pid.
+
168  *
+
169  * @param integer $cid
+
170  * @param integer $pid
+
171  * @param integer $order
+
172  * @return void
+
173  */
+
174  public function channelMove($cid, $pid, $order = null)
+
175  {
+
176  $this->execute("channelmove", array("cid" => $cid, "cpid" => $pid, "order" => $order));
+
177  $this->channelListReset();
+
178  }
+
179 
+
180  /**
+
181  * Returns TRUE if the given TeamSpeak3_Node_Channel object is a spacer.
+
182  *
+
183  * @param TeamSpeak3_Node_Channel $channel
+
184  * @return boolean
+
185  */
+
186  public function channelIsSpacer(TeamSpeak3_Node_Channel $channel)
+
187  {
+
188  return (preg_match("/\[[^\]]*spacer[^\]]*\]/", $channel) && $channel["channel_flag_permanent"] && !$channel["pid"]) ? TRUE : FALSE;
+
189  }
+
190 
+
191  /**
+
192  * Creates a new channel spacer and returns the new ID. The first parameter $ident is used to create a
+
193  * unique spacer name on the virtual server.
+
194  *
+
195  * @param string $ident
+
196  * @param mixed $type
+
197  * @param integer $align
+
198  * @param integer $order
+
199  * @param integer $maxclients
+
200  * @throws TeamSpeak3_Adapter_ServerQuery_Exception
+
201  * @return integer
+
202  */
+
203  public function channelSpacerCreate($ident, $type = TeamSpeak3::SPACER_SOLIDLINE, $align = TeamSpeak3::SPACER_ALIGN_REPEAT, $order = null, $maxclients = 0)
+
204  {
+
205  $properties = array(
+
206  "channel_name_phonetic" => "channel spacer",
+
207  "channel_codec" => TeamSpeak3::CODEC_OPUS_VOICE,
+
208  "channel_codec_quality" => 0x00,
+
209  "channel_flag_permanent" => TRUE,
+
210  "channel_flag_maxclients_unlimited" => FALSE,
+
211  "channel_flag_maxfamilyclients_unlimited" => FALSE,
+
212  "channel_flag_maxfamilyclients_inherited" => FALSE,
+
213  "channel_maxclients" => $maxclients,
+
214  "channel_order" => $order,
+
215  );
+
216 
+
217  switch($align)
+
218  {
+ +
220  $properties["channel_name"] = "[*spacer" . strval($ident) . "]";
+
221  break;
+
222 
+ +
224  $properties["channel_name"] = "[lspacer" . strval($ident) . "]";
+
225  break;
+
226 
+ +
228  $properties["channel_name"] = "[rspacer" . strval($ident) . "]";
+
229  break;
+
230 
+ +
232  $properties["channel_name"] = "[cspacer" . strval($ident) . "]";
+
233  break;
+
234 
+
235  default:
+
236  throw new TeamSpeak3_Adapter_ServerQuery_Exception("missing required parameter", 0x606);
+
237  break;
+
238  }
+
239 
+
240  switch($type)
+
241  {
+
242  case (string) TeamSpeak3::SPACER_SOLIDLINE:
+
243  $properties["channel_name"] .= "___";
+
244  break;
+
245 
+
246  case (string) TeamSpeak3::SPACER_DASHLINE:
+
247  $properties["channel_name"] .= "---";
+
248  break;
+
249 
+
250  case (string) TeamSpeak3::SPACER_DOTLINE:
+
251  $properties["channel_name"] .= "...";
+
252  break;
+
253 
+
254  case (string) TeamSpeak3::SPACER_DASHDOTLINE:
+
255  $properties["channel_name"] .= "-.-";
+
256  break;
+
257 
+
258  case (string) TeamSpeak3::SPACER_DASHDOTDOTLINE:
+
259  $properties["channel_name"] .= "-..";
+
260  break;
+
261 
+
262  default:
+
263  $properties["channel_name"] .= strval($type);
+
264  break;
+
265  }
+
266 
+
267  return $this->channelCreate($properties);
+
268  }
+
269 
+
270  /**
+
271  * Returns the possible type of a channel spacer.
+
272  *
+
273  * @param integer $cid
+
274  * @throws TeamSpeak3_Adapter_ServerQuery_Exception
+
275  * @return integer
+
276  */
+
277  public function channelSpacerGetType($cid)
+
278  {
+
279  $channel = $this->channelGetById($cid);
+
280 
+
281  if(!$this->channelIsSpacer($channel))
+
282  {
+
283  throw new TeamSpeak3_Adapter_ServerQuery_Exception("invalid channel flags", 0x307);
+
284  }
+
285 
+
286  switch($channel["channel_name"]->section("]", 1))
+
287  {
+
288  case "___":
+ +
290 
+
291  case "---":
+ +
293 
+
294  case "...":
+ +
296 
+
297  case "-.-":
+ +
299 
+
300  case "-..":
+ +
302 
+
303  default:
+ +
305  }
+
306  }
+
307 
+
308  /**
+
309  * Returns the possible alignment of a channel spacer.
+
310  *
+
311  * @param integer $cid
+
312  * @throws TeamSpeak3_Adapter_ServerQuery_Exception
+
313  * @return integer
+
314  */
+
315  public function channelSpacerGetAlign($cid)
+
316  {
+
317  $channel = $this->channelGetById($cid);
+
318 
+
319  if(!$this->channelIsSpacer($channel) || !preg_match("/\[(.*)spacer.*\]/", $channel, $matches) || !isset($matches[1]))
+
320  {
+
321  throw new TeamSpeak3_Adapter_ServerQuery_Exception("invalid channel flags", 0x307);
+
322  }
+
323 
+
324  switch($matches[1])
+
325  {
+
326  case "*":
+ +
328 
+
329  case "c":
+ +
331 
+
332  case "r":
+ +
334 
+
335  default:
+ +
337  }
+
338  }
+
339 
+
340  /**
+
341  * Returns a list of permissions defined for a specific channel.
+
342  *
+
343  * @param integer $cid
+
344  * @param boolean $permsid
+
345  * @return array
+
346  */
+
347  public function channelPermList($cid, $permsid = FALSE)
+
348  {
+
349  return $this->execute("channelpermlist", array("cid" => $cid, $permsid ? "-permsid" : null))->toAssocArray($permsid ? "permsid" : "permid");
+
350  }
+
351 
+
352  /**
+
353  * Adds a set of specified permissions to a channel. Multiple permissions can be added by
+
354  * providing the two parameters of each permission.
+
355  *
+
356  * @param integer $cid
+
357  * @param integer $permid
+
358  * @param integer $permvalue
+
359  * @return void
+
360  */
+
361  public function channelPermAssign($cid, $permid, $permvalue)
+
362  {
+
363  if(!is_array($permid))
+
364  {
+
365  $permident = (is_numeric($permid)) ? "permid" : "permsid";
+
366  }
+
367  else
+
368  {
+
369  $permident = (is_numeric(current($permid))) ? "permid" : "permsid";
+
370  }
+
371 
+
372  $this->execute("channeladdperm", array("cid" => $cid, $permident => $permid, "permvalue" => $permvalue));
+
373  }
+
374 
+
375  /**
+
376  * Removes a set of specified permissions from a channel. Multiple permissions can be removed at once.
+
377  *
+
378  * @param integer $cid
+
379  * @param integer $permid
+
380  * @return void
+
381  */
+
382  public function channelPermRemove($cid, $permid)
+
383  {
+
384  if(!is_array($permid))
+
385  {
+
386  $permident = (is_numeric($permid)) ? "permid" : "permsid";
+
387  }
+
388  else
+
389  {
+
390  $permident = (is_numeric(current($permid))) ? "permid" : "permsid";
+
391  }
+
392 
+
393  $this->execute("channeldelperm", array("cid" => $cid, $permident => $permid));
+
394  }
+
395 
+
396  /**
+
397  * Returns a list of permissions defined for a client in a specific channel.
+
398  *
+
399  * @param integer $cid
+
400  * @param integer $cldbid
+
401  * @param boolean $permsid
+
402  * @return array
+
403  */
+
404  public function channelClientPermList($cid, $cldbid, $permsid = FALSE)
+
405  {
+
406  return $this->execute("channelclientpermlist", array("cid" => $cid, "cldbid" => $cldbid, $permsid ? "-permsid" : null))->toAssocArray($permsid ? "permsid" : "permid");
+
407  }
+
408 
+
409  /**
+
410  * Adds a set of specified permissions to a client in a specific channel. Multiple permissions can be added by
+
411  * providing the two parameters of each permission.
+
412  *
+
413  * @param integer $cid
+
414  * @param integer $cldbid
+
415  * @param integer $permid
+
416  * @param integer $permvalue
+
417  * @return void
+
418  */
+
419  public function channelClientPermAssign($cid, $cldbid, $permid, $permvalue)
+
420  {
+
421  if(!is_array($permid))
+
422  {
+
423  $permident = (is_numeric($permid)) ? "permid" : "permsid";
+
424  }
+
425  else
+
426  {
+
427  $permident = (is_numeric(current($permid))) ? "permid" : "permsid";
+
428  }
+
429 
+
430  $this->execute("channelclientaddperm", array("cid" => $cid, "cldbid" => $cldbid, $permident => $permid, "permvalue" => $permvalue));
+
431  }
+
432 
+
433  /**
+
434  * Removes a set of specified permissions from a client in a specific channel. Multiple permissions can be removed at once.
+
435  *
+
436  * @param integer $cid
+
437  * @param integer $cldbid
+
438  * @param integer $permid
+
439  * @return void
+
440  */
+
441  public function channelClientPermRemove($cid, $cldbid, $permid)
+
442  {
+
443  if(!is_array($permid))
+
444  {
+
445  $permident = (is_numeric($permid)) ? "permid" : "permsid";
+
446  }
+
447  else
+
448  {
+
449  $permident = (is_numeric(current($permid))) ? "permid" : "permsid";
+
450  }
+
451 
+
452  $this->execute("channelclientdelperm", array("cid" => $cid, "cldbid" => $cldbid, $permident => $permid));
+
453  }
+
454 
+
455  /**
+
456  * Returns a list of files and directories stored in the specified channels file repository.
+
457  *
+
458  * @param integer $cid
+
459  * @param string $cpw
+
460  * @param string $path
+
461  * @param boolean $recursive
+
462  * @return array
+
463  */
+
464  public function channelFileList($cid, $cpw = "", $path = "/", $recursive = FALSE)
+
465  {
+
466  $files = $this->execute("ftgetfilelist", array("cid" => $cid, "cpw" => $cpw, "path" => $path))->toArray();
+
467  $count = count($files);
+
468 
+
469  for($i = 0; $i < $count; $i++)
+
470  {
+
471  $files[$i]["sid"] = $this->getId();
+
472  $files[$i]["cid"] = $files[0]["cid"];
+
473  $files[$i]["path"] = $files[0]["path"];
+
474  $files[$i]["src"] = new TeamSpeak3_Helper_String($cid ? $files[$i]["path"] : "/");
+
475 
+
476  if(!$files[$i]["src"]->endsWith("/"))
+
477  {
+
478  $files[$i]["src"]->append("/");
+
479  }
+
480 
+
481  $files[$i]["src"]->append($files[$i]["name"]);
+
482 
+
483  if($recursive && $files[$i]["type"] == TeamSpeak3::FILE_TYPE_DIRECTORY)
+
484  {
+
485  $files = array_merge($files, $this->channelFileList($cid, $cpw, $path . $files[$i]["name"], $recursive));
+
486  }
+
487  }
+
488 
+
489  uasort($files, array(__CLASS__, "sortFileList"));
+
490 
+
491  return $files;
+
492  }
+
493 
+
494  /**
+
495  * Returns detailed information about the specified file stored in a channels file repository.
+
496  *
+
497  * @param integer $cid
+
498  * @param string $cpw
+
499  * @param string $name
+
500  * @return array
+
501  */
+
502  public function channelFileInfo($cid, $cpw = "", $name = "/")
+
503  {
+
504  return array_pop($this->execute("ftgetfileinfo", array("cid" => $cid, "cpw" => $cpw, "name" => $name))->toArray());
+
505  }
+
506 
+
507  /**
+
508  * Renames a file in a channels file repository. If the two parameters $tcid and $tcpw are specified, the file
+
509  * will be moved into another channels file repository.
+
510  *
+
511  * @param integer $cid
+
512  * @param string $cpw
+
513  * @param string $oldname
+
514  * @param string $newname
+
515  * @param integer $tcid
+
516  * @param string $tcpw
+
517  * @return void
+
518  */
+
519  public function channelFileRename($cid, $cpw = "", $oldname = "/", $newname = "/", $tcid = null, $tcpw = null)
+
520  {
+
521  $this->execute("ftrenamefile", array("cid" => $cid, "cpw" => $cpw, "oldname" => $oldname, "newname" => $newname, "tcid" => $tcid, "tcpw" => $tcpw));
+
522  }
+
523 
+
524  /**
+
525  * Deletes one or more files stored in a channels file repository.
+
526  *
+
527  * @param integer $cid
+
528  * @param string $cpw
+
529  * @param string $name
+
530  * @return void
+
531  */
+
532  public function channelFileDelete($cid, $cpw = "", $name = "/")
+
533  {
+
534  $this->execute("ftdeletefile", array("cid" => $cid, "cpw" => $cpw, "name" => $name));
+
535  }
+
536 
+
537  /**
+
538  * Creates new directory in a channels file repository.
+
539  *
+
540  * @param integer $cid
+
541  * @param string $cpw
+
542  * @param string $dirname
+
543  * @return void
+
544  */
+
545  public function channelDirCreate($cid, $cpw = "", $dirname = "/")
+
546  {
+
547  $this->execute("ftcreatedir", array("cid" => $cid, "cpw" => $cpw, "dirname" => $dirname));
+
548  }
+
549 
+
550  /**
+
551  * Returns the level of a channel.
+
552  *
+
553  * @param integer $cid
+
554  * @return integer
+
555  */
+
556  public function channelGetLevel($cid)
+
557  {
+
558  $channel = $this->channelGetById($cid);
+
559  $levelno = 0;
+
560 
+
561  if($channel["pid"])
+
562  {
+
563  $levelno = $this->channelGetLevel($channel["pid"])+1;
+
564  }
+
565 
+
566  return $levelno;
+
567  }
+
568 
+
569  /**
+
570  * Returns the pathway of a channel which can be used as a clients default channel.
+
571  *
+
572  * @param integer $cid
+
573  * @return string
+
574  */
+
575  public function channelGetPathway($cid)
+
576  {
+
577  $channel = $this->channelGetById($cid);
+
578  $pathway = $channel["channel_name"];
+
579 
+
580  if($channel["pid"])
+
581  {
+
582  $pathway = $this->channelGetPathway($channel["pid"]) . "/" . $channel["channel_name"];
+
583  }
+
584 
+
585  return $pathway;
+
586  }
+
587 
+
588  /**
+
589  * Returns the TeamSpeak3_Node_Channel object matching the given ID.
+
590  *
+
591  * @param integer $cid
+
592  * @throws TeamSpeak3_Adapter_ServerQuery_Exception
+
593  * @return TeamSpeak3_Node_Channel
+
594  */
+
595  public function channelGetById($cid)
+
596  {
+
597  if(!array_key_exists((string) $cid, $this->channelList()))
+
598  {
+
599  throw new TeamSpeak3_Adapter_ServerQuery_Exception("invalid channelID", 0x300);
+
600  }
+
601 
+
602  return $this->channelList[intval((string) $cid)];
+
603  }
+
604 
+
605  /**
+
606  * Returns the TeamSpeak3_Node_Channel object matching the given name.
+
607  *
+
608  * @param string $name
+
609  * @throws TeamSpeak3_Adapter_ServerQuery_Exception
+
610  * @return TeamSpeak3_Node_Channel
+
611  */
+
612  public function channelGetByName($name)
+
613  {
+
614  foreach($this->channelList() as $channel)
+
615  {
+
616  if($channel["channel_name"] == $name) return $channel;
+
617  }
+
618 
+
619  throw new TeamSpeak3_Adapter_ServerQuery_Exception("invalid channelID", 0x300);
+
620  }
+
621 
+
622  /**
+
623  * Returns an array filled with TeamSpeak3_Node_Client objects.
+
624  *
+
625  * @param array $filter
+
626  * @return array
+
627  */
+
628  public function clientList(array $filter = array())
+
629  {
+
630  if($this->clientList === null)
+
631  {
+
632  $clients = $this->request("clientlist -uid -away -badges -voice -info -times -groups -icon -country -ip")->toAssocArray("clid");
+
633 
+
634  $this->clientList = array();
+
635 
+
636  foreach($clients as $clid => $client)
+
637  {
+
638  if($this->getParent()->getExcludeQueryClients() && $client["client_type"]) continue;
+
639 
+
640  $this->clientList[$clid] = new TeamSpeak3_Node_Client($this, $client);
+
641  }
+
642 
+
643  uasort($this->clientList, array(__CLASS__, "sortClientList"));
+
644 
+
645  $this->resetNodeList();
+
646  }
+
647 
+
648  return $this->filterList($this->clientList, $filter);
+
649  }
+
650 
+
651  /**
+
652  * Resets the list of clients online.
+
653  *
+
654  * @return void
+
655  */
+
656  public function clientListReset()
+
657  {
+
658  $this->resetNodeList();
+
659  $this->clientList = null;
+
660  }
+
661 
+
662  /**
+
663  * Returns a list of clients matching a given name pattern.
+
664  *
+
665  * @param string $pattern
+
666  * @return array
+
667  */
+
668  public function clientFind($pattern)
+
669  {
+
670  return $this->execute("clientfind", array("pattern" => $pattern))->toAssocArray("clid");
+
671  }
+
672 
+
673  /**
+
674  * Returns a list of client identities known by the virtual server. By default, the server spits out 25 entries
+
675  * at once.
+
676  *
+
677  * @param integer $offset
+
678  * @param integer $limit
+
679  * @return array
+
680  */
+
681  public function clientListDb($offset = null, $limit = null)
+
682  {
+
683  return $this->execute("clientdblist -count", array("start" => $offset, "duration" => $limit))->toAssocArray("cldbid");
+
684  }
+
685 
+
686  /**
+
687  * Returns the number of client identities known by the virtual server.
+
688  *
+
689  * @return integer
+
690  */
+
691  public function clientCountDb()
+
692  {
+
693  return current($this->execute("clientdblist -count", array("duration" => 1))->toList("count"));
+
694  }
+
695 
+
696  /**
+
697  * Returns a list of properties from the database for the client specified by $cldbid.
+
698  *
+
699  * @param integer $cldbid
+
700  * @return array
+
701  */
+
702  public function clientInfoDb($cldbid)
+
703  {
+
704  return $this->execute("clientdbinfo", array("cldbid" => $cldbid))->toList();
+
705  }
+
706 
+
707  /**
+
708  * Returns a list of client database IDs matching a given pattern. You can either search for a clients
+
709  * last known nickname or his unique identity by using the $uid option.
+
710  *
+
711  * @param string $pattern
+
712  * @param boolean $uid
+
713  * @return array
+
714  */
+
715  public function clientFindDb($pattern, $uid = FALSE)
+
716  {
+
717  return array_keys($this->execute("clientdbfind", array("pattern" => $pattern, ($uid) ? "-uid" : null))->toAssocArray("cldbid"));
+
718  }
+
719 
+
720  /**
+
721  * Returns the number of regular clients online.
+
722  *
+
723  * @return integer
+
724  */
+
725  public function clientCount()
+
726  {
+
727  if($this->isOffline()) return 0;
+
728 
+
729  return $this["virtualserver_clientsonline"]-$this["virtualserver_queryclientsonline"];
+
730  }
+
731 
+
732  /**
+
733  * Returns the TeamSpeak3_Node_Client object matching the given ID.
+
734  *
+
735  * @param integer $clid
+
736  * @throws TeamSpeak3_Adapter_ServerQuery_Exception
+
737  * @return TeamSpeak3_Node_Client
+
738  */
+
739  public function clientGetById($clid)
+
740  {
+
741  if(!array_key_exists((string) $clid, $this->clientList()))
+
742  {
+
743  throw new TeamSpeak3_Adapter_ServerQuery_Exception("invalid clientID", 0x200);
+
744  }
+
745 
+
746  return $this->clientList[intval((string) $clid)];
+
747  }
+
748 
+
749  /**
+
750  * Returns the TeamSpeak3_Node_Client object matching the given name.
+
751  *
+
752  * @param string $name
+
753  * @throws TeamSpeak3_Adapter_ServerQuery_Exception
+
754  * @return TeamSpeak3_Node_Client
+
755  */
+
756  public function clientGetByName($name)
+
757  {
+
758  foreach($this->clientList() as $client)
+
759  {
+
760  if($client["client_nickname"] == $name) return $client;
+
761  }
+
762 
+
763  throw new TeamSpeak3_Adapter_ServerQuery_Exception("invalid clientID", 0x200);
+
764  }
+
765 
+
766  /**
+
767  * Returns the TeamSpeak3_Node_Client object matching the given unique identifier.
+
768  *
+
769  * @param string $uid
+
770  * @throws TeamSpeak3_Adapter_ServerQuery_Exception
+
771  * @return TeamSpeak3_Node_Client
+
772  */
+
773  public function clientGetByUid($uid)
+
774  {
+
775  foreach($this->clientList() as $client)
+
776  {
+
777  if($client["client_unique_identifier"] == $uid) return $client;
+
778  }
+
779 
+
780  throw new TeamSpeak3_Adapter_ServerQuery_Exception("invalid clientID", 0x200);
+
781  }
+
782 
+
783  /**
+
784  * Returns the TeamSpeak3_Node_Client object matching the given database ID.
+
785  *
+
786  * @param integer $dbid
+
787  * @throws TeamSpeak3_Adapter_ServerQuery_Exception
+
788  * @return TeamSpeak3_Node_Client
+
789  */
+
790  public function clientGetByDbid($dbid)
+
791  {
+
792  foreach($this->clientList() as $client)
+
793  {
+
794  if($client["client_database_id"] == $dbid) return $client;
+
795  }
+
796 
+
797  throw new TeamSpeak3_Adapter_ServerQuery_Exception("invalid clientID", 0x200);
+
798  }
+
799 
+
800  /**
+
801  * Returns an array containing the last known nickname and the database ID of the client matching
+
802  * the unique identifier specified with $cluid.
+
803  *
+
804  * @param string $cluid
+
805  * @return array
+
806  */
+
807  public function clientGetNameByUid($cluid)
+
808  {
+
809  return $this->execute("clientgetnamefromuid", array("cluid" => $cluid))->toList();
+
810  }
+
811 
+
812  /**
+
813  * Returns an array containing a list of active client connections using the unique identifier
+
814  * specified with $cluid.
+
815  *
+
816  * @param string $cluid
+
817  * @return array
+
818  */
+
819  public function clientGetIdsByUid($cluid)
+
820  {
+
821  return $this->execute("clientgetids", array("cluid" => $cluid))->toAssocArray("clid");
+
822  }
+
823 
+
824  /**
+
825  * Returns an array containing the last known nickname and the unique identifier of the client
+
826  * matching the database ID specified with $cldbid.
+
827  *
+
828  * @param string $cldbid
+
829  * @return array
+
830  */
+
831  public function clientGetNameByDbid($cldbid)
+
832  {
+
833  return $this->execute("clientgetnamefromdbid", array("cldbid" => $cldbid))->toList();
+
834  }
+
835 
+
836  /**
+
837  * Returns an array containing the names and IDs of all server groups the client specified with
+
838  * $cldbid is is currently residing in.
+
839  *
+
840  * @param string $cldbid
+
841  * @return array
+
842  */
+
843  public function clientGetServerGroupsByDbid($cldbid)
+
844  {
+
845  return $this->execute("servergroupsbyclientid", array("cldbid" => $cldbid))->toAssocArray("sgid");
+
846  }
+
847 
+
848  /**
+
849  * Moves a client to another channel.
+
850  *
+
851  * @param integer $clid
+
852  * @param integer $cid
+
853  * @param string $cpw
+
854  * @return void
+
855  */
+
856  public function clientMove($clid, $cid, $cpw = null)
+
857  {
+
858  $this->clientListReset();
+
859 
+
860  $this->execute("clientmove", array("clid" => $clid, "cid" => $cid, "cpw" => $cpw));
+
861 
+
862  if($clid instanceof TeamSpeak3_Node_Abstract)
+
863  {
+
864  $clid = $clid->getId();
+
865  }
+
866 
+
867  if($cid instanceof TeamSpeak3_Node_Abstract)
+
868  {
+
869  $cid = $cid->getId();
+
870  }
+
871 
+
872  if(!is_array($clid) && $clid == $this->whoamiGet("client_id"))
+
873  {
+
874  $this->getParent()->whoamiSet("client_channel_id", $cid);
+
875  }
+
876  }
+
877 
+
878  /**
+
879  * Kicks one or more clients from their currently joined channel or from the server.
+
880  *
+
881  * @param integer $clid
+
882  * @param integer $reasonid
+
883  * @param string $reasonmsg
+
884  * @return void
+
885  */
+
886  public function clientKick($clid, $reasonid = TeamSpeak3::KICK_CHANNEL, $reasonmsg = null)
+
887  {
+
888  $this->clientListReset();
+
889 
+
890  $this->execute("clientkick", array("clid" => $clid, "reasonid" => $reasonid, "reasonmsg" => $reasonmsg));
+
891  }
+
892 
+
893  /**
+
894  * Sends a poke message to a client.
+
895  *
+
896  * @param integer $clid
+
897  * @param string $msg
+
898  * @return void
+
899  */
+
900  public function clientPoke($clid, $msg)
+
901  {
+
902  $this->execute("clientpoke", array("clid" => $clid, "msg" => $msg));
+
903  }
+
904 
+
905  /**
+
906  * Bans the client specified with ID $clid from the server. Please note that this will create two separate
+
907  * ban rules for the targeted clients IP address and his unique identifier.
+
908  *
+
909  * @param integer $clid
+
910  * @param integer $timeseconds
+
911  * @param string $reason
+
912  * @return array
+
913  */
+
914  public function clientBan($clid, $timeseconds = null, $reason = null)
+
915  {
+
916  $this->clientListReset();
+
917 
+
918  $bans = $this->execute("banclient", array("clid" => $clid, "time" => $timeseconds, "banreason" => $reason))->toAssocArray("banid");
+
919 
+
920  return array_keys($bans);
+
921  }
+
922 
+
923  /**
+
924  * Changes the clients properties using given properties.
+
925  *
+
926  * @param string $cldbid
+
927  * @param array $properties
+
928  * @return void
+
929  */
+
930  public function clientModifyDb($cldbid, array $properties)
+
931  {
+
932  $properties["cldbid"] = $cldbid;
+
933 
+
934  $this->execute("clientdbedit", $properties);
+
935  }
+
936 
+
937  /**
+
938  * Deletes a clients properties from the database.
+
939  *
+
940  * @param string $cldbid
+
941  * @return void
+
942  */
+
943  public function clientDeleteDb($cldbid)
+
944  {
+
945  $this->execute("clientdbdelete", array("cldbid" => $cldbid));
+
946  }
+
947 
+
948  /**
+
949  * Sets the channel group of a client to the ID specified.
+
950  *
+
951  * @param integer $cldbid
+
952  * @param integer $cid
+
953  * @param integer $cgid
+
954  * @return void
+
955  */
+
956  public function clientSetChannelGroup($cldbid, $cid, $cgid)
+
957  {
+
958  $this->execute("setclientchannelgroup", array("cldbid" => $cldbid, "cid" => $cid, "cgid" => $cgid));
+
959  }
+
960 
+
961  /**
+
962  * Returns a list of permissions defined for a client.
+
963  *
+
964  * @param integer $cldbid
+
965  * @param boolean $permsid
+
966  * @return array
+
967  */
+
968  public function clientPermList($cldbid, $permsid = FALSE)
+
969  {
+
970  $this->clientListReset();
+
971 
+
972  return $this->execute("clientpermlist", array("cldbid" => $cldbid, $permsid ? "-permsid" : null))->toAssocArray($permsid ? "permsid" : "permid");
+
973  }
+
974 
+
975  /**
+
976  * Adds a set of specified permissions to a client. Multiple permissions can be added by providing
+
977  * the three parameters of each permission.
+
978  *
+
979  * @param integer $cldbid
+
980  * @param integer $permid
+
981  * @param integer $permvalue
+
982  * @param integer $permskip
+
983  * @return void
+
984  */
+
985  public function clientPermAssign($cldbid, $permid, $permvalue, $permskip = FALSE)
+
986  {
+
987  if(!is_array($permid))
+
988  {
+
989  $permident = (is_numeric($permid)) ? "permid" : "permsid";
+
990  }
+
991  else
+
992  {
+
993  $permident = (is_numeric(current($permid))) ? "permid" : "permsid";
+
994  }
+
995 
+
996  $this->execute("clientaddperm", array("cldbid" => $cldbid, $permident => $permid, "permvalue" => $permvalue, "permskip" => $permskip));
+
997  }
+
998 
+
999  /**
+
1000  * Removes a set of specified permissions from a client. Multiple permissions can be removed at once.
+
1001  *
+
1002  * @param integer $cldbid
+
1003  * @param integer $permid
+
1004  * @return void
+
1005  */
+
1006  public function clientPermRemove($cldbid, $permid)
+
1007  {
+
1008  if(!is_array($permid))
+
1009  {
+
1010  $permident = (is_numeric($permid)) ? "permid" : "permsid";
+
1011  }
+
1012  else
+
1013  {
+
1014  $permident = (is_numeric(current($permid))) ? "permid" : "permsid";
+
1015  }
+
1016 
+
1017  $this->execute("clientdelperm", array("cldbid" => $cldbid, $permident => $permid));
+
1018  }
+
1019 
+
1020  /**
+
1021  * Returns a list of server groups available.
+
1022  *
+
1023  * @param filter $filter
+
1024  * @return array
+
1025  */
+
1026  public function serverGroupList(array $filter = array())
+
1027  {
+
1028  if($this->sgroupList === null)
+
1029  {
+
1030  $this->sgroupList = $this->request("servergrouplist")->toAssocArray("sgid");
+
1031 
+
1032  foreach($this->sgroupList as $sgid => $group)
+
1033  {
+
1034  $this->sgroupList[$sgid] = new TeamSpeak3_Node_Servergroup($this, $group);
+
1035  }
+
1036 
+
1037  uasort($this->sgroupList, array(__CLASS__, "sortGroupList"));
+
1038  }
+
1039 
+
1040  return $this->filterList($this->sgroupList, $filter);
+
1041  }
+
1042 
+
1043  /**
+
1044  * Resets the list of server groups.
+
1045  *
+
1046  * @return void
+
1047  */
+
1048  public function serverGroupListReset()
+
1049  {
+
1050  $this->sgroupList = null;
+
1051  }
+
1052 
+
1053  /**
+
1054  * Creates a new server group using the name specified with $name and returns its ID.
+
1055  *
+
1056  * @param string $name
+
1057  * @param integer $type
+
1058  * @return integer
+
1059  */
+
1060  public function serverGroupCreate($name, $type = TeamSpeak3::GROUP_DBTYPE_REGULAR)
+
1061  {
+
1062  $this->serverGroupListReset();
+
1063 
+
1064  $sgid = $this->execute("servergroupadd", array("name" => $name, "type" => $type))->toList();
+
1065 
+
1066  return $sgid["sgid"];
+
1067  }
+
1068 
+
1069  /**
+
1070  * Creates a copy of an existing server group specified by $ssgid and returns the new groups ID.
+
1071  *
+
1072  * @param integer $ssgid
+
1073  * @param string $name
+
1074  * @param integer $tsgid
+
1075  * @param integer $type
+
1076  * @return integer
+
1077  */
+
1078  public function serverGroupCopy($ssgid, $name = null, $tsgid = 0, $type = TeamSpeak3::GROUP_DBTYPE_REGULAR)
+
1079  {
+
1080  $this->serverGroupListReset();
+
1081 
+
1082  $sgid = $this->execute("servergroupcopy", array("ssgid" => $ssgid, "tsgid" => $tsgid, "name" => $name, "type" => $type))->toList();
+
1083 
+
1084  if($tsgid && $name)
+
1085  {
+
1086  $this->serverGroupRename($tsgid, $name);
+
1087  }
+
1088 
+
1089  return count($sgid) ? $sgid["sgid"] : intval($tsgid);
+
1090  }
+
1091 
+
1092  /**
+
1093  * Renames the server group specified with $sgid.
+
1094  *
+
1095  * @param integer $sgid
+
1096  * @param string $name
+
1097  * @return void
+
1098  */
+
1099  public function serverGroupRename($sgid, $name)
+
1100  {
+
1101  $this->serverGroupListReset();
+
1102 
+
1103  $this->execute("servergrouprename", array("sgid" => $sgid, "name" => $name));
+
1104  }
+
1105 
+
1106  /**
+
1107  * Deletes the server group specified with $sgid. If $force is set to 1, the server group
+
1108  * will be deleted even if there are clients within.
+
1109  *
+
1110  * @param integer $sgid
+
1111  * @param boolean $force
+
1112  * @return void
+
1113  */
+
1114  public function serverGroupDelete($sgid, $force = FALSE)
+
1115  {
+
1116  $this->serverGroupListReset();
+
1117 
+
1118  $this->execute("servergroupdel", array("sgid" => $sgid, "force" => $force));
+
1119  }
+
1120 
+
1121  /**
+
1122  * Returns the TeamSpeak3_Node_Servergroup object matching the given ID.
+
1123  *
+
1124  * @param integer $sgid
+
1125  * @throws TeamSpeak3_Adapter_ServerQuery_Exception
+
1126  * @return TeamSpeak3_Node_Servergroup
+
1127  */
+
1128  public function serverGroupGetById($sgid)
+
1129  {
+
1130  if(!array_key_exists((string) $sgid, $this->serverGroupList()))
+
1131  {
+
1132  throw new TeamSpeak3_Adapter_ServerQuery_Exception("invalid groupID", 0xA00);
+
1133  }
+
1134 
+
1135  return $this->sgroupList[intval((string) $sgid)];
+
1136  }
+
1137 
+
1138  /**
+
1139  * Returns the TeamSpeak3_Node_Servergroup object matching the given name.
+
1140  *
+
1141  * @param string $name
+
1142  * @param integer $type
+
1143  * @throws TeamSpeak3_Adapter_ServerQuery_Exception
+
1144  * @return TeamSpeak3_Node_Servergroup
+
1145  */
+ +
1147  {
+
1148  foreach($this->serverGroupList() as $group)
+
1149  {
+
1150  if($group["name"] == $name && $group["type"] == $type) return $group;
+
1151  }
+
1152 
+
1153  throw new TeamSpeak3_Adapter_ServerQuery_Exception("invalid groupID", 0xA00);
+
1154  }
+
1155 
+
1156  /**
+
1157  * Returns a list of permissions assigned to the server group specified.
+
1158  *
+
1159  * @param integer $sgid
+
1160  * @param boolean $permsid
+
1161  * @return array
+
1162  */
+
1163  public function serverGroupPermList($sgid, $permsid = FALSE)
+
1164  {
+
1165  return $this->execute("servergrouppermlist", array("sgid" => $sgid, $permsid ? "-permsid" : null))->toAssocArray($permsid ? "permsid" : "permid");
+
1166  }
+
1167 
+
1168  /**
+
1169  * Adds a set of specified permissions to the server group specified. Multiple permissions
+
1170  * can be added by providing the four parameters of each permission in separate arrays.
+
1171  *
+
1172  * @param integer $sgid
+
1173  * @param integer $permid
+
1174  * @param integer $permvalue
+
1175  * @param integer $permnegated
+
1176  * @param integer $permskip
+
1177  * @return void
+
1178  */
+
1179  public function serverGroupPermAssign($sgid, $permid, $permvalue, $permnegated = FALSE, $permskip = FALSE)
+
1180  {
+
1181  if(!is_array($permid))
+
1182  {
+
1183  $permident = (is_numeric($permid)) ? "permid" : "permsid";
+
1184  }
+
1185  else
+
1186  {
+
1187  $permident = (is_numeric(current($permid))) ? "permid" : "permsid";
+
1188  }
+
1189 
+
1190  $this->execute("servergroupaddperm", array("sgid" => $sgid, $permident => $permid, "permvalue" => $permvalue, "permnegated" => $permnegated, "permskip" => $permskip));
+
1191  }
+
1192 
+
1193  /**
+
1194  * Removes a set of specified permissions from the server group specified with $sgid. Multiple
+
1195  * permissions can be removed at once.
+
1196  *
+
1197  * @param integer $sgid
+
1198  * @param integer $permid
+
1199  * @return void
+
1200  */
+
1201  public function serverGroupPermRemove($sgid, $permid)
+
1202  {
+
1203  if(!is_array($permid))
+
1204  {
+
1205  $permident = (is_numeric($permid)) ? "permid" : "permsid";
+
1206  }
+
1207  else
+
1208  {
+
1209  $permident = (is_numeric(current($permid))) ? "permid" : "permsid";
+
1210  }
+
1211 
+
1212  $this->execute("servergroupdelperm", array("sgid" => $sgid, $permident => $permid));
+
1213  }
+
1214 
+
1215  /**
+
1216  * Returns a list of clients assigned to the server group specified.
+
1217  *
+
1218  * @param integer $sgid
+
1219  * @return array
+
1220  */
+
1221  public function serverGroupClientList($sgid)
+
1222  {
+
1223  if($this["virtualserver_default_server_group"] == $sgid)
+
1224  {
+
1225  return array();
+
1226  }
+
1227 
+
1228  return $this->execute("servergroupclientlist", array("sgid" => $sgid, "-names"))->toAssocArray("cldbid");
+
1229  }
+
1230 
+
1231  /**
+
1232  * Adds a client to the server group specified. Please note that a client cannot be
+
1233  * added to default groups or template groups.
+
1234  *
+
1235  * @param integer $sgid
+
1236  * @param integer $cldbid
+
1237  * @return void
+
1238  */
+
1239  public function serverGroupClientAdd($sgid, $cldbid)
+
1240  {
+
1241  $this->clientListReset();
+
1242 
+
1243  $this->execute("servergroupaddclient", array("sgid" => $sgid, "cldbid" => $cldbid));
+
1244  }
+
1245 
+
1246  /**
+
1247  * Removes a client from the server group specified.
+
1248  *
+
1249  * @param integer $sgid
+
1250  * @param integer $cldbid
+
1251  * @return void
+
1252  */
+
1253  public function serverGroupClientDel($sgid, $cldbid)
+
1254  {
+
1255  $this->execute("servergroupdelclient", array("sgid" => $sgid, "cldbid" => $cldbid));
+
1256  }
+
1257 
+
1258  /**
+
1259  * Returns an ordered array of regular server groups available based on a pre-defined
+
1260  * set of rules.
+
1261  *
+
1262  * @return array
+
1263  */
+
1264  public function serverGroupGetProfiles()
+
1265  {
+
1266  $profiles = array();
+
1267 
+
1268  foreach($this->serverGroupList() as $sgid => $sgroup)
+
1269  {
+
1270  if($sgroup["type"] != TeamSpeak3::GROUP_DBTYPE_REGULAR) continue;
+
1271 
+
1272  $profiles[$sgid] = array(
+
1273  "b_permission_modify_power_ignore" => 0,
+
1274  "i_group_needed_member_add_power" => 0,
+
1275  "i_group_member_add_power" => 0,
+
1276  "i_group_needed_member_remove_power" => 0,
+
1277  "i_group_member_remove_power" => 0,
+
1278  "i_needed_modify_power_count" => 0,
+
1279  "i_needed_modify_power_total" => 0,
+
1280  "i_permission_modify_power" => 0,
+
1281  "i_group_needed_modify_power" => 0,
+
1282  "i_group_modify_power" => 0,
+
1283  "i_client_needed_modify_power" => 0,
+
1284  "i_client_modify_power" => 0,
+
1285  "b_virtualserver_servergroup_create" => 0,
+
1286  "b_virtualserver_servergroup_delete" => 0,
+
1287  "b_client_ignore_bans" => 0,
+
1288  "b_client_ignore_antiflood" => 0,
+
1289  "b_group_is_permanent" => 0,
+
1290  "i_client_needed_ban_power" => 0,
+
1291  "i_client_needed_kick_power" => 0,
+
1292  "i_client_needed_move_power" => 0,
+
1293  "i_client_talk_power" => 0,
+
1294  "__sgid" => $sgid,
+
1295  "__name" => $sgroup->toString(),
+
1296  "__node" => $sgroup,
+
1297  );
+
1298 
+
1299  try
+
1300  {
+
1301  $perms = $this->serverGroupPermList($sgid, TRUE);
+
1302  $grant = isset($perms["i_permission_modify_power"]) ? $perms["i_permission_modify_power"]["permvalue"] : null;
+
1303  }
+ +
1305  {
+
1306  /* ERROR_database_empty_result */
+
1307  if($e->getCode() != 0x501) throw $e;
+
1308 
+
1309  $perms = array();
+
1310  $grant = null;
+
1311  }
+
1312 
+
1313  foreach($perms as $permsid => $perm)
+
1314  {
+
1315  if(in_array($permsid, array_keys($profiles[$sgid])))
+
1316  {
+
1317  $profiles[$sgid][$permsid] = $perm["permvalue"];
+
1318  }
+
1319  elseif(TeamSpeak3_Helper_String::factory($permsid)->startsWith("i_needed_modify_power_"))
+
1320  {
+
1321  if(!$grant || $perm["permvalue"] > $grant) continue;
+
1322 
+
1323  $profiles[$sgid]["i_needed_modify_power_total"] = $profiles[$sgid]["i_needed_modify_power_total"]+$perm["permvalue"];
+
1324  $profiles[$sgid]["i_needed_modify_power_count"]++;
+
1325  }
+
1326  }
+
1327  }
+
1328 
+
1329  array_multisort($profiles, SORT_DESC);
+
1330 
+
1331  return $profiles;
+
1332  }
+
1333 
+
1334  /**
+
1335  * Tries to identify the post powerful/weakest server group on the virtual server and returns
+
1336  * the ID.
+
1337  *
+
1338  * @param integer $mode
+
1339  * @return TeamSpeak3_Node_Servergroup
+
1340  */
+ +
1342  {
+
1343  $profiles = $this->serverGroupGetProfiles();
+
1344 
+
1345  $best_guess_profile = ($mode == TeamSpeak3::GROUP_IDENTIFIY_STRONGEST) ? array_shift($profiles) : array_pop($profiles);
+
1346 
+
1347  return $this->serverGroupGetById($best_guess_profile["__sgid"]);
+
1348  }
+
1349 
+
1350  /**
+
1351  * Returns a list of channel groups available.
+
1352  *
+
1353  * @param array $filter
+
1354  * @return array
+
1355  */
+
1356  public function channelGroupList(array $filter = array())
+
1357  {
+
1358  if($this->cgroupList === null)
+
1359  {
+
1360  $this->cgroupList = $this->request("channelgrouplist")->toAssocArray("cgid");
+
1361 
+
1362  foreach($this->cgroupList as $cgid => $group)
+
1363  {
+
1364  $this->cgroupList[$cgid] = new TeamSpeak3_Node_Channelgroup($this, $group);
+
1365  }
+
1366 
+
1367  uasort($this->cgroupList, array(__CLASS__, "sortGroupList"));
+
1368  }
+
1369 
+
1370  return $this->filterList($this->cgroupList, $filter);
+
1371  }
+
1372 
+
1373  /**
+
1374  * Resets the list of channel groups.
+
1375  *
+
1376  * @return void
+
1377  */
+
1378  public function channelGroupListReset()
+
1379  {
+
1380  $this->cgroupList = null;
+
1381  }
+
1382 
+
1383  /**
+
1384  * Creates a new channel group using the name specified with $name and returns its ID.
+
1385  *
+
1386  * @param string $name
+
1387  * @param integer $type
+
1388  * @return integer
+
1389  */
+ +
1391  {
+
1392  $this->channelGroupListReset();
+
1393 
+
1394  $cgid = $this->execute("channelgroupadd", array("name" => $name, "type" => $type))->toList();
+
1395 
+
1396  return $cgid["cgid"];
+
1397  }
+
1398 
+
1399  /**
+
1400  * Creates a copy of an existing channel group specified by $scgid and returns the new groups ID.
+
1401  *
+
1402  * @param integer $scgid
+
1403  * @param string $name
+
1404  * @param integer $tcgid
+
1405  * @param integer $type
+
1406  * @return integer
+
1407  */
+
1408  public function channelGroupCopy($scgid, $name = null, $tcgid = 0, $type = TeamSpeak3::GROUP_DBTYPE_REGULAR)
+
1409  {
+
1410  $this->channelGroupListReset();
+
1411 
+
1412  $cgid = $this->execute("channelgroupcopy", array("scgid" => $scgid, "tcgid" => $tcgid, "name" => $name, "type" => $type))->toList();
+
1413 
+
1414  if($tcgid && $name)
+
1415  {
+
1416  $this->channelGroupRename($tcgid, $name);
+
1417  }
+
1418 
+
1419  return count($cgid) ? $cgid["cgid"] : intval($tcgid);
+
1420  }
+
1421 
+
1422  /**
+
1423  * Renames the channel group specified with $cgid.
+
1424  *
+
1425  * @param integer $cgid
+
1426  * @param string $name
+
1427  * @return void
+
1428  */
+
1429  public function channelGroupRename($cgid, $name)
+
1430  {
+
1431  $this->channelGroupListReset();
+
1432 
+
1433  $this->execute("channelgrouprename", array("cgid" => $cgid, "name" => $name));
+
1434  }
+
1435 
+
1436  /**
+
1437  * Deletes the channel group specified with $cgid. If $force is set to 1, the channel group
+
1438  * will be deleted even if there are clients within.
+
1439  *
+
1440  * @param integer $sgid
+
1441  * @param boolean $force
+
1442  * @return void
+
1443  */
+
1444  public function channelGroupDelete($cgid, $force = FALSE)
+
1445  {
+
1446  $this->channelGroupListReset();
+
1447 
+
1448  $this->execute("channelgroupdel", array("cgid" => $cgid, "force" => $force));
+
1449  }
+
1450 
+
1451  /**
+
1452  * Returns the TeamSpeak3_Node_Channelgroup object matching the given ID.
+
1453  *
+
1454  * @param integer $cgid
+
1455  * @throws TeamSpeak3_Adapter_ServerQuery_Exception
+
1456  * @return TeamSpeak3_Node_Channelgroup
+
1457  */
+
1458  public function channelGroupGetById($cgid)
+
1459  {
+
1460  if(!array_key_exists((string) $cgid, $this->channelGroupList()))
+
1461  {
+
1462  throw new TeamSpeak3_Adapter_ServerQuery_Exception("invalid groupID", 0xA00);
+
1463  }
+
1464 
+
1465  return $this->cgroupList[intval((string) $cgid)];
+
1466  }
+
1467 
+
1468  /**
+
1469  * Returns the TeamSpeak3_Node_Channelgroup object matching the given name.
+
1470  *
+
1471  * @param string $name
+
1472  * @param integer $type
+
1473  * @throws TeamSpeak3_Adapter_ServerQuery_Exception
+
1474  * @return TeamSpeak3_Node_Channelgroup
+
1475  */
+ +
1477  {
+
1478  foreach($this->channelGroupList() as $group)
+
1479  {
+
1480  if($group["name"] == $name && $group["type"] == $type) return $group;
+
1481  }
+
1482 
+
1483  throw new TeamSpeak3_Adapter_ServerQuery_Exception("invalid groupID", 0xA00);
+
1484  }
+
1485 
+
1486  /**
+
1487  * Returns a list of permissions assigned to the channel group specified.
+
1488  *
+
1489  * @param integer $cgid
+
1490  * @param boolean $permsid
+
1491  * @return array
+
1492  */
+
1493  public function channelGroupPermList($cgid, $permsid = FALSE)
+
1494  {
+
1495  return $this->execute("channelgrouppermlist", array("cgid" => $cgid, $permsid ? "-permsid" : null))->toAssocArray($permsid ? "permsid" : "permid");
+
1496  }
+
1497 
+
1498  /**
+
1499  * Adds a set of specified permissions to the channel group specified. Multiple permissions
+
1500  * can be added by providing the two parameters of each permission in separate arrays.
+
1501  *
+
1502  * @param integer $cgid
+
1503  * @param integer $permid
+
1504  * @param integer $permvalue
+
1505  * @return void
+
1506  */
+
1507  public function channelGroupPermAssign($cgid, $permid, $permvalue)
+
1508  {
+
1509  if(!is_array($permid))
+
1510  {
+
1511  $permident = (is_numeric($permid)) ? "permid" : "permsid";
+
1512  }
+
1513  else
+
1514  {
+
1515  $permident = (is_numeric(current($permid))) ? "permid" : "permsid";
+
1516  }
+
1517 
+
1518  $this->execute("channelgroupaddperm", array("cgid" => $cgid, $permident => $permid, "permvalue" => $permvalue));
+
1519  }
+
1520 
+
1521  /**
+
1522  * Removes a set of specified permissions from the channel group specified with $cgid. Multiple
+
1523  * permissions can be removed at once.
+
1524  *
+
1525  * @param integer $cgid
+
1526  * @param integer $permid
+
1527  * @return void
+
1528  */
+
1529  public function channelGroupPermRemove($cgid, $permid)
+
1530  {
+
1531  if(!is_array($permid))
+
1532  {
+
1533  $permident = (is_numeric($permid)) ? "permid" : "permsid";
+
1534  }
+
1535  else
+
1536  {
+
1537  $permident = (is_numeric(current($permid))) ? "permid" : "permsid";
+
1538  }
+
1539 
+
1540  $this->execute("channelgroupdelperm", array("cgid" => $cgid, $permident => $permid));
+
1541  }
+
1542 
+
1543  /**
+
1544  * Returns all the client and/or channel IDs currently assigned to channel groups. All three
+
1545  * parameters are optional so you're free to choose the most suitable combination for your
+
1546  * requirements.
+
1547  *
+
1548  * @param integer $cgid
+
1549  * @param integer $cid
+
1550  * @param integer $cldbid
+
1551  * @return array
+
1552  */
+
1553  public function channelGroupClientList($cgid = null, $cid = null, $cldbid = null)
+
1554  {
+
1555  if($this["virtualserver_default_channel_group"] == $cgid)
+
1556  {
+
1557  return array();
+
1558  }
+
1559 
+
1560  return $this->execute("channelgroupclientlist", array("cgid" => $cgid, "cid" => $cid, "cldbid" => $cldbid))->toArray();
+
1561  }
+
1562 
+
1563  /**
+
1564  * Restores the default permission settings on the virtual server and returns a new initial
+
1565  * administrator privilege key.
+
1566  *
+
1567  * @return TeamSpeak3_Helper_String
+
1568  */
+
1569  public function permReset()
+
1570  {
+
1571  $token = $this->request("permreset")->toList();
+
1572 
+
1573  TeamSpeak3_Helper_Signal::getInstance()->emit("notifyTokencreated", $this, $token["token"]);
+
1574 
+
1575  return $token["token"];
+
1576  }
+
1577 
+
1578  /**
+
1579  * Removes any assignment of the permission specified with $permid on the selected virtual server
+
1580  * and returns the number of removed assignments on success.
+
1581  *
+
1582  * @param integer $permid
+
1583  * @return integer
+
1584  */
+
1585  public function permRemoveAny($permid)
+
1586  {
+
1587  $assignments = $this->permissionFind($permid);
+
1588 
+
1589  foreach($assignments as $assignment)
+
1590  {
+
1591  switch($assignment["t"])
+
1592  {
+ +
1594  $this->serverGroupPermRemove($assignment["id1"], $assignment["p"]);
+
1595  break;
+
1596 
+ +
1598  $this->clientPermRemove($assignment["id2"], $assignment["p"]);
+
1599  break;
+
1600 
+ +
1602  $this->channelPermRemove($assignment["id2"], $assignment["p"]);
+
1603  break;
+
1604 
+ +
1606  $this->channelGroupPermRemove($assignment["id1"], $assignment["p"]);
+
1607  break;
+
1608 
+ +
1610  $this->channelClientPermRemove($assignment["id2"], $assignment["id1"], $assignment["p"]);
+
1611  break;
+
1612 
+
1613  default:
+
1614  throw new TeamSpeak3_Adapter_ServerQuery_Exception("convert error", 0x604);
+
1615  }
+
1616  }
+
1617 
+
1618  return count($assignments);
+
1619  }
+
1620 
+
1621  /**
+
1622  * Initializes a file transfer upload. $clientftfid is an arbitrary ID to identify the file transfer on client-side.
+
1623  *
+
1624  * @param integer $clientftfid
+
1625  * @param integer $cid
+
1626  * @param string $name
+
1627  * @param integer $size
+
1628  * @param string $cpw
+
1629  * @param boolean $overwrite
+
1630  * @param boolean $resume
+
1631  * @throws TeamSpeak3_Adapter_ServerQuery_Exception
+
1632  * @return array
+
1633  */
+
1634  public function transferInitUpload($clientftfid, $cid, $name, $size, $cpw = "", $overwrite = FALSE, $resume = FALSE)
+
1635  {
+
1636  $upload = $this->execute("ftinitupload", array("clientftfid" => $clientftfid, "cid" => $cid, "name" => $name, "cpw" => $cpw, "size" => $size, "overwrite" => $overwrite, "resume" => $resume))->toList();
+
1637 
+
1638  if(array_key_exists("status", $upload) && $upload["status"] != 0x00)
+
1639  {
+
1640  throw new TeamSpeak3_Adapter_ServerQuery_Exception($upload["msg"], $upload["status"]);
+
1641  }
+
1642 
+
1643  $upload["cid"] = $cid;
+
1644  $upload["file"] = $name;
+
1645 
+
1646  if(!array_key_exists("ip", $upload) || $upload["ip"]->startsWith("0.0.0.0"))
+
1647  {
+
1648  $upload["ip"] = $this->getParent()->getAdapterHost();
+
1649  $upload["host"] = $upload["ip"];
+
1650  }
+
1651  else
+
1652  {
+
1653  $upload["ip"] = $upload["ip"]->section(",");
+
1654  $upload["host"] = $upload["ip"];
+
1655  }
+
1656 
+
1657  TeamSpeak3_Helper_Signal::getInstance()->emit("filetransferUploadInit", $upload["ftkey"], $upload);
+
1658 
+
1659  return $upload;
+
1660  }
+
1661 
+
1662  /**
+
1663  * Initializes a file transfer download. $clientftfid is an arbitrary ID to identify the file transfer on client-side.
+
1664  *
+
1665  * @param integer $clientftfid
+
1666  * @param integer $cid
+
1667  * @param string $name
+
1668  * @param string $cpw
+
1669  * @param integer $seekpos
+
1670  * @throws TeamSpeak3_Adapter_ServerQuery_Exception
+
1671  * @return array
+
1672  */
+
1673  public function transferInitDownload($clientftfid, $cid, $name, $cpw = "", $seekpos = 0)
+
1674  {
+
1675  $download = $this->execute("ftinitdownload", array("clientftfid" => $clientftfid, "cid" => $cid, "name" => $name, "cpw" => $cpw, "seekpos" => $seekpos))->toList();
+
1676 
+
1677  if(array_key_exists("status", $download) && $download["status"] != 0x00)
+
1678  {
+
1679  throw new TeamSpeak3_Adapter_ServerQuery_Exception($download["msg"], $download["status"]);
+
1680  }
+
1681 
+
1682  $download["cid"] = $cid;
+
1683  $download["file"] = $name;
+
1684 
+
1685  if(!array_key_exists("ip", $download) || $download["ip"]->startsWith("0.0.0.0"))
+
1686  {
+
1687  $download["ip"] = $this->getParent()->getAdapterHost();
+
1688  $download["host"] = $download["ip"];
+
1689  }
+
1690  else
+
1691  {
+
1692  $download["ip"] = $download["ip"]->section(",");
+
1693  $download["host"] = $download["ip"];
+
1694  }
+
1695 
+
1696  TeamSpeak3_Helper_Signal::getInstance()->emit("filetransferDownloadInit", $download["ftkey"], $download);
+
1697 
+
1698  return $download;
+
1699  }
+
1700 
+
1701  /**
+
1702  * Displays a list of running file transfers on the selected virtual server. The output contains the path to
+
1703  * which a file is uploaded to, the current transfer rate in bytes per second, etc.
+
1704  *
+
1705  * @return array
+
1706  */
+
1707  public function transferList()
+
1708  {
+
1709  return $this->request("ftlist")->toAssocArray("serverftfid");
+
1710  }
+
1711 
+
1712  /**
+
1713  * Stops the running file transfer with server-side ID $serverftfid.
+
1714  *
+
1715  * @param integer $serverftfid
+
1716  * @param boolean $delete
+
1717  * @return void
+
1718  */
+
1719  public function transferStop($serverftfid, $delete = FALSE)
+
1720  {
+
1721  $this->execute("ftstop", array("serverftfid" => $serverftfid, "delete" => $delete));
+
1722  }
+
1723 
+
1724  /**
+
1725  * Downloads and returns the servers icon file content.
+
1726  *
+
1727  * @return TeamSpeak3_Helper_String
+
1728  */
+
1729  public function iconDownload()
+
1730  {
+
1731  if($this->iconIsLocal("virtualserver_icon_id") || $this["virtualserver_icon_id"] == 0) return;
+
1732 
+
1733  $download = $this->transferInitDownload(rand(0x0000, 0xFFFF), 0, $this->iconGetName("virtualserver_icon_id"));
+
1734  $transfer = TeamSpeak3::factory("filetransfer://" . $download["host"] . ":" . $download["port"]);
+
1735 
+
1736  return $transfer->download($download["ftkey"], $download["size"]);
+
1737  }
+
1738 
+
1739  /**
+
1740  * Uploads a given icon file content to the server and returns the ID of the icon.
+
1741  *
+
1742  * @param string $data
+
1743  * @return integer
+
1744  */
+
1745  public function iconUpload($data)
+
1746  {
+
1747  $crc = crc32($data);
+
1748  $size = strlen($data);
+
1749 
+
1750  $upload = $this->transferInitUpload(rand(0x0000, 0xFFFF), 0, "/icon_" . $crc, $size);
+
1751  $transfer = TeamSpeak3::factory("filetransfer://" . $upload["host"] . ":" . $upload["port"]);
+
1752 
+
1753  $transfer->upload($upload["ftkey"], $upload["seekpos"], $data);
+
1754 
+
1755  return $crc;
+
1756  }
+
1757 
+
1758  /**
+
1759  * Changes the virtual server configuration using given properties.
+
1760  *
+
1761  * @param array $properties
+
1762  * @return void
+
1763  */
+
1764  public function modify(array $properties)
+
1765  {
+
1766  $this->execute("serveredit", $properties);
+
1767  $this->resetNodeInfo();
+
1768  }
+
1769 
+
1770  /**
+
1771  * Sends a text message to all clients on the virtual server.
+
1772  *
+
1773  * @param string $msg
+
1774  * @return void
+
1775  */
+
1776  public function message($msg)
+
1777  {
+
1778  $this->execute("sendtextmessage", array("msg" => $msg, "target" => $this->getId(), "targetmode" => TeamSpeak3::TEXTMSG_SERVER));
+
1779  }
+
1780 
+
1781  /**
+
1782  * Returns a list of offline messages you've received. The output contains the senders unique identifier,
+
1783  * the messages subject, etc.
+
1784  *
+
1785  * @return array
+
1786  */
+
1787  public function messageList()
+
1788  {
+
1789  return $this->request("messagelist")->toAssocArray("msgid");
+
1790  }
+
1791 
+
1792  /**
+
1793  * Sends an offline message to the client specified by $cluid.
+
1794  *
+
1795  * @param string $cluid
+
1796  * @param string $subject
+
1797  * @param string $message
+
1798  * @return void
+
1799  */
+
1800  public function messageCreate($cluid, $subject, $message)
+
1801  {
+
1802  $this->execute("messageadd", array("cluid" => $cluid, "subject" => $subject, "message" => $message));
+
1803  }
+
1804 
+
1805  /**
+
1806  * Deletes an existing offline message with ID $msgid from your inbox.
+
1807  *
+
1808  * @param integer $msgid
+
1809  * @return void
+
1810  */
+
1811  public function messageDelete($msgid)
+
1812  {
+
1813  $this->execute("messagedel", array("msgid" => $msgid));
+
1814  }
+
1815 
+
1816  /**
+
1817  * Returns an existing offline message with ID $msgid from your inbox.
+
1818  *
+
1819  * @param integer $msgid
+
1820  * @param boolean $flag_read
+
1821  * @return array
+
1822  */
+
1823  public function messageRead($msgid, $flag_read = TRUE)
+
1824  {
+
1825  $msg = $this->execute("messageget", array("msgid" => $msgid))->toList();
+
1826 
+
1827  if($flag_read)
+
1828  {
+
1829  $this->execute("messageget", array("msgid" => $msgid, "flag" => $flag_read));
+
1830  }
+
1831 
+
1832  return $msg;
+
1833  }
+
1834 
+
1835  /**
+
1836  * Creates and returns snapshot data for the selected virtual server.
+
1837  *
+
1838  * @param string $mode
+
1839  * @return string
+
1840  */
+ +
1842  {
+
1843  $snapshot = $this->request("serversnapshotcreate")->toString(FALSE);
+
1844 
+
1845  switch($mode)
+
1846  {
+ +
1848  return $snapshot->toBase64();
+
1849  break;
+
1850 
+ +
1852  return $snapshot->toHex();
+
1853  break;
+
1854 
+
1855  default:
+
1856  return (string) $snapshot;
+
1857  break;
+
1858  }
+
1859  }
+
1860 
+
1861  /**
+
1862  * Deploys snapshot data on the selected virtual server. If no virtual server is selected (ID 0),
+
1863  * the data will be used to create a new virtual server from scratch.
+
1864  *
+
1865  * @param string $data
+
1866  * @param string $mode
+
1867  * @return array
+
1868  */
+
1869  public function snapshotDeploy($data, $mode = TeamSpeak3::SNAPSHOT_STRING)
+
1870  {
+
1871  switch($mode)
+
1872  {
+ +
1874  $data = TeamSpeak3_Helper_String::fromBase64($data);
+
1875  break;
+
1876 
+ +
1878  $data = TeamSpeak3_Helper_String::fromHex($data);
+
1879  break;
+
1880 
+
1881  default:
+
1882  $data = TeamSpeak3_Helper_String::factory($data);
+
1883  break;
+
1884  }
+
1885 
+
1886  $detail = $this->request("serversnapshotdeploy " . $data)->toList();
+
1887 
+
1888  if(array_key_exists("sid", $detail))
+
1889  {
+
1890  TeamSpeak3_Helper_Signal::getInstance()->emit("notifyServercreated", $this->getParent(), $detail["sid"]);
+
1891  }
+
1892 
+
1893  return $detail;
+
1894  }
+
1895 
+
1896  /**
+
1897  * Registers for a specified category of events on a virtual server to receive notification
+
1898  * messages. Depending on the notifications you've registered for, the server will send you
+
1899  * a message on every event.
+
1900  *
+
1901  * @param string $event
+
1902  * @param integer $id
+
1903  * @return void
+
1904  */
+
1905  public function notifyRegister($event, $id = 0)
+
1906  {
+
1907  $this->execute("servernotifyregister", array("event" => $event, "id" => $id));
+
1908  }
+
1909 
+
1910  /**
+
1911  * Unregisters all events previously registered with servernotifyregister so you will no
+
1912  * longer receive notification messages.
+
1913  *
+
1914  * @return void
+
1915  */
+
1916  public function notifyUnregister()
+
1917  {
+
1918  $this->request("servernotifyunregister");
+
1919  }
+
1920 
+
1921  /**
+
1922  * Alias for privilegeKeyList().
+
1923  *
+
1924  * @deprecated
+
1925  */
+
1926  public function tokenList($translate = FALSE)
+
1927  {
+
1928  return $this->privilegeKeyList();
+
1929  }
+
1930 
+
1931  /**
+
1932  * Returns a list of privilege keys (tokens) available. If $resolve is set to TRUE the values
+
1933  * of token_id1 and token_id2 will be translated into the appropriate group and/or channel
+
1934  * names.
+
1935  *
+
1936  * @param boolean $resolve
+
1937  * @return array
+
1938  */
+
1939  public function privilegeKeyList($resolve = FALSE)
+
1940  {
+
1941  $tokens = $this->request("privilegekeylist")->toAssocArray("token");
+
1942 
+
1943  if($resolve)
+
1944  {
+
1945  foreach($tokens as $token => $array)
+
1946  {
+
1947  $func = $array["token_type"] ? "channelGroupGetById" : "serverGroupGetById";
+
1948 
+
1949  try
+
1950  {
+
1951  $tokens[$token]["token_id1"] = $this->$func($array["token_id1"])->name;
+
1952  }
+
1953  catch(Exception $e)
+
1954  {
+
1955  /* ERROR_channel_invalid_id */
+
1956  if($e->getCode() != 0xA00) throw $e;
+
1957  }
+
1958 
+
1959  try
+
1960  {
+
1961  if($array["token_type"]) $tokens[$token]["token_id2"] = $this->channelGetById($array["token_id2"])->getPathway();
+
1962  }
+
1963  catch(Exception $e)
+
1964  {
+
1965  /* ERROR_permission_invalid_group_id */
+
1966  if($e->getCode() != 0x300) throw $e;
+
1967  }
+
1968  }
+
1969  }
+
1970 
+
1971  return $tokens;
+
1972  }
+
1973 
+
1974  /**
+
1975  * Alias for privilegeKeyCreate().
+
1976  *
+
1977  * @deprecated
+
1978  */
+
1979  public function tokenCreate($type = TeamSpeak3::TOKEN_SERVERGROUP, $id1, $id2 = 0, $description = null, $customset = null)
+
1980  {
+
1981  return $this->privilegeKeyCreate($type, $id1, $id2, $description, $customset);
+
1982  }
+
1983 
+
1984  /**
+
1985  * Creates a new privilege key (token) and returns the key.
+
1986  *
+
1987  * @param integer $type
+
1988  * @param integer $id1
+
1989  * @param integer $id2
+
1990  * @param string $description
+
1991  * @param string $customset
+
1992  * @return TeamSpeak3_Helper_String
+
1993  */
+
1994  public function privilegeKeyCreate($type = TeamSpeak3::TOKEN_SERVERGROUP, $id1, $id2 = 0, $description = null, $customset = null)
+
1995  {
+
1996  $token = $this->execute("privilegekeyadd", array("tokentype" => $type, "tokenid1" => $id1, "tokenid2" => $id2, "tokendescription" => $description, "tokencustomset" => $customset))->toList();
+
1997 
+
1998  TeamSpeak3_Helper_Signal::getInstance()->emit("notifyTokencreated", $this, $token["token"]);
+
1999 
+
2000  return $token["token"];
+
2001  }
+
2002 
+
2003  /**
+
2004  * Alias for privilegeKeyDelete().
+
2005  *
+
2006  * @deprecated
+
2007  */
+
2008  public function tokenDelete($token)
+
2009  {
+
2010  $this->privilegeKeyDelete($token);
+
2011  }
+
2012 
+
2013  /**
+
2014  * Deletes a token specified by key $token.
+
2015  *
+
2016  * @param string $token
+
2017  * @return void
+
2018  */
+
2019  public function privilegeKeyDelete($token)
+
2020  {
+
2021  $this->execute("privilegekeydelete", array("token" => $token));
+
2022  }
+
2023 
+
2024  /**
+
2025  * Alias for privilegeKeyUse().
+
2026  *
+
2027  * @deprecated
+
2028  */
+
2029  public function tokenUse($token)
+
2030  {
+
2031  $this->privilegeKeyUse($token);
+
2032  }
+
2033 
+
2034  /**
+
2035  * Use a token key gain access to a server or channel group. Please note that the server will
+
2036  * automatically delete the token after it has been used.
+
2037  *
+
2038  * @param string $token
+
2039  * @return void
+
2040  */
+
2041  public function privilegeKeyUse($token)
+
2042  {
+
2043  $this->execute("privilegekeyuse", array("token" => $token));
+
2044  }
+
2045 
+
2046  /**
+
2047  * Returns a list of custom client properties specified by $ident.
+
2048  *
+
2049  * @param string $ident
+
2050  * @param string $pattern
+
2051  * @return array
+
2052  */
+
2053  public function customSearch($ident, $pattern = "%")
+
2054  {
+
2055  return $this->execute("customsearch", array("ident" => $ident, "pattern" => $pattern))->toArray();
+
2056  }
+
2057 
+
2058  /**
+
2059  * Returns a list of custom properties for the client specified by $cldbid.
+
2060  *
+
2061  * @param integer $cldbid
+
2062  * @return array
+
2063  */
+
2064  public function customInfo($cldbid)
+
2065  {
+
2066  return $this->execute("custominfo", array("cldbid" => $cldbid))->toArray();
+
2067  }
+
2068 
+
2069  /**
+
2070  * Returns a list of active bans on the selected virtual server.
+
2071  *
+
2072  * @return array
+
2073  */
+
2074  public function banList()
+
2075  {
+
2076  return $this->request("banlist")->toAssocArray("banid");
+
2077  }
+
2078 
+
2079  /**
+
2080  * Deletes all active ban rules from the server.
+
2081  *
+
2082  * @return void
+
2083  */
+
2084  public function banListClear()
+
2085  {
+
2086  $this->request("bandelall");
+
2087  }
+
2088 
+
2089  /**
+
2090  * Adds a new ban rule on the selected virtual server. All parameters are optional but at least one
+
2091  * of the following rules must be set: ip, name, or uid.
+
2092  *
+
2093  * @param array $rules
+
2094  * @param integer $timeseconds
+
2095  * @param string $reason
+
2096  * @return integer
+
2097  */
+
2098  public function banCreate(array $rules, $timeseconds = null, $reason = null)
+
2099  {
+
2100  $rules["time"] = $timeseconds;
+
2101  $rules["banreason"] = $reason;
+
2102 
+
2103  $banid = $this->execute("banadd", $rules)->toList();
+
2104 
+
2105  return $banid["banid"];
+
2106  }
+
2107 
+
2108  /**
+
2109  * Deletes the specified ban rule from the server.
+
2110  *
+
2111  * @param integer $banid
+
2112  * @return void
+
2113  */
+
2114  public function banDelete($banid)
+
2115  {
+
2116  $this->execute("bandel", array("banid" => $banid));
+
2117  }
+
2118 
+
2119  /**
+
2120  * Returns a list of complaints on the selected virtual server. If $tcldbid is specified, only
+
2121  * complaints about the targeted client will be shown.
+
2122  *
+
2123  * @param integer $tcldbid
+
2124  * @return array
+
2125  */
+
2126  public function complaintList($tcldbid = null)
+
2127  {
+
2128  return $this->execute("complainlist", array("tcldbid" => $tcldbid))->toArray();
+
2129  }
+
2130 
+
2131  /**
+
2132  * Deletes all active complaints about the client with database ID $tcldbid from the server.
+
2133  *
+
2134  * @param integer $tcldbid
+
2135  * @return void
+
2136  */
+
2137  public function complaintListClear($tcldbid)
+
2138  {
+
2139  $this->execute("complaindelall", array("tcldbid" => $tcldbid));
+
2140  }
+
2141 
+
2142  /**
+
2143  * Submits a complaint about the client with database ID $tcldbid to the server.
+
2144  *
+
2145  * @param integer $tcldbid
+
2146  * @param string $message
+
2147  * @return void
+
2148  */
+
2149  public function complaintCreate($tcldbid, $message)
+
2150  {
+
2151  $this->execute("complainadd", array("tcldbid" => $tcldbid, "message" => $message));
+
2152  }
+
2153 
+
2154  /**
+
2155  * Deletes the complaint about the client with ID $tcldbid submitted by the client with ID $fcldbid from the server.
+
2156  *
+
2157  * @param integer $tcldbid
+
2158  * @param integer $fcldbid
+
2159  * @return void
+
2160  */
+
2161  public function complaintDelete($tcldbid, $fcldbid)
+
2162  {
+
2163  $this->execute("complaindel", array("tcldbid" => $tcldbid, "fcldbid" => $fcldbid));
+
2164  }
+
2165 
+
2166  /**
+
2167  * Returns a list of temporary server passwords.
+
2168  *
+
2169  * @param boolean $resolve
+
2170  * @return array
+
2171  */
+
2172  public function tempPasswordList($resolve = FALSE)
+
2173  {
+
2174  $passwords = $this->request("servertemppasswordlist")->toAssocArray("pw_clear");
+
2175 
+
2176  if($resolve)
+
2177  {
+
2178  foreach($passwords as $password => $array)
+
2179  {
+
2180  try
+
2181  {
+
2182  $channel = $this->channelGetById($array["tcid"]);
+
2183 
+
2184  $passwords[$password]["tcname"] = $channel->toString();
+
2185  $passwords[$password]["tcpath"] = $channel->getPathway();
+
2186  }
+
2187  catch(Exception $e)
+
2188  {
+
2189  /* ERROR_channel_invalid_id */
+
2190  if($e->getCode() != 0xA00) throw $e;
+
2191  }
+
2192  }
+
2193  }
+
2194 
+
2195  return $passwords;
+
2196  }
+
2197 
+
2198  /**
+
2199  * Sets a new temporary server password specified with $pw. The temporary password will be
+
2200  * valid for the number of seconds specified with $duration. The client connecting with this
+
2201  * password will automatically join the channel specified with $tcid. If tcid is set to 0,
+
2202  * the client will join the default channel.
+
2203  *
+
2204  * @param string $pw
+
2205  * @param integer $duration
+
2206  * @param integer $tcid
+
2207  * @param string $tcpw
+
2208  * @param string $desc
+
2209  * @return void
+
2210  */
+
2211  public function tempPasswordCreate($pw, $duration, $tcid = 0, $tcpw = "", $desc = "")
+
2212  {
+
2213  $this->execute("servertemppasswordadd", array("pw" => $pw, "duration" => $duration, "tcid" => $tcid, "tcpw" => $tcpw, "desc" => $desc));
+
2214  }
+
2215 
+
2216  /**
+
2217  * Deletes the temporary server password specified with $pw.
+
2218  *
+
2219  * @param string $pw
+
2220  * @return void
+
2221  */
+
2222  public function tempPasswordDelete($pw)
+
2223  {
+
2224  $this->execute("servertemppassworddel", array("pw" => $pw));
+
2225  }
+
2226 
+
2227  /**
+
2228  * Displays a specified number of entries (1-100) from the servers log.
+
2229  *
+
2230  * @param integer $lines
+
2231  * @param integer $begin_pos
+
2232  * @param boolean $reverse
+
2233  * @param boolean $instance
+
2234  * @return array
+
2235  */
+
2236  public function logView($lines = 30, $begin_pos = null, $reverse = null, $instance = null)
+
2237  {
+
2238  return $this->execute("logview", array("lines" => $lines, "begin_pos" => $begin_pos, "instance" => $instance, "reverse" => $reverse))->toArray();
+
2239  }
+
2240 
+
2241  /**
+
2242  * Writes a custom entry into the virtual server log.
+
2243  *
+
2244  * @param string $logmsg
+
2245  * @param integer $loglevel
+
2246  * @return void
+
2247  */
+
2248  public function logAdd($logmsg, $loglevel = TeamSpeak3::LOGLEVEL_INFO)
+
2249  {
+
2250  $this->execute("logadd", array("logmsg" => $logmsg, "loglevel" => $loglevel));
+
2251  }
+
2252 
+
2253  /**
+
2254  * Returns detailed connection information of the virtual server.
+
2255  *
+
2256  * @return array
+
2257  */
+
2258  public function connectionInfo()
+
2259  {
+
2260  return $this->request("serverrequestconnectioninfo")->toList();
+
2261  }
+
2262 
+
2263  /**
+
2264  * Deletes the virtual server.
+
2265  *
+
2266  * @return void
+
2267  */
+
2268  public function delete()
+
2269  {
+
2270  $this->getParent()->serverDelete($this->getId());
+
2271 
+
2272  unset($this);
+
2273  }
+
2274 
+
2275  /**
+
2276  * Starts the virtual server.
+
2277  *
+
2278  * @return void
+
2279  */
+
2280  public function start()
+
2281  {
+
2282  $this->getParent()->serverStart($this->getId());
+
2283  }
+
2284 
+
2285  /**
+
2286  * Stops the virtual server.
+
2287  *
+
2288  * @return void
+
2289  */
+
2290  public function stop()
+
2291  {
+
2292  $this->getParent()->serverStop($this->getId());
+
2293  }
+
2294 
+
2295  /**
+
2296  * Sends a plugin command to all clients connected to the server.
+
2297  *
+
2298  * @param string $plugin
+
2299  * @param string $data
+
2300  * @return void
+
2301  */
+
2302  public function sendPluginCmd($plugin, $data)
+
2303  {
+
2304  $this->execute("plugincmd", array("name" => $plugin, "data" => $data, "targetmode" => TeamSpeak3::PLUGINCMD_SERVER));
+
2305  }
+
2306 
+
2307  /**
+
2308  * Changes the properties of your own client connection.
+
2309  *
+
2310  * @param array $properties
+
2311  * @return void
+
2312  */
+
2313  public function selfUpdate(array $properties)
+
2314  {
+
2315  $this->execute("clientupdate", $properties);
+
2316 
+
2317  foreach($properties as $ident => $value)
+
2318  {
+
2319  $this->whoamiSet($ident, $value);
+
2320  }
+
2321  }
+
2322 
+
2323  /**
+
2324  * Updates your own ServerQuery login credentials using a specified username. The password
+
2325  * will be auto-generated.
+
2326  *
+
2327  * @param string $username
+
2328  * @return TeamSpeak3_Helper_String
+
2329  */
+
2330  public function selfUpdateLogin($username)
+
2331  {
+
2332  $password = $this->execute("clientsetserverquerylogin", array("client_login_name" => $username))->toList();
+
2333 
+
2334  return $password["client_login_password"];
+
2335  }
+
2336 
+
2337  /**
+
2338  * Returns an array containing the permission overview of your own client.
+
2339  *
+
2340  * @return array
+
2341  */
+
2342  public function selfPermOverview()
+
2343  {
+
2344  return $this->execute("permoverview", array("cldbid" => $this->whoamiGet("client_database_id"), "cid" => $this->whoamiGet("client_channel_id"), "permid" => 0))->toArray();
+
2345  }
+
2346 
+
2347  /**
+
2348  * @ignore
+
2349  */
+
2350  protected function fetchNodeList()
+
2351  {
+
2352  $this->nodeList = array();
+
2353 
+
2354  foreach($this->channelList() as $channel)
+
2355  {
+
2356  if($channel["pid"] == 0)
+
2357  {
+
2358  $this->nodeList[] = $channel;
+
2359  }
+
2360  }
+
2361  }
+
2362 
+
2363  /**
+
2364  * @ignore
+
2365  */
+
2366  protected function fetchNodeInfo()
+
2367  {
+
2368  $this->nodeInfo = array_merge($this->nodeInfo, $this->request("serverinfo")->toList());
+
2369  }
+
2370 
+
2371  /**
+
2372  * Internal callback funtion for sorting of client objects.
+
2373  *
+
2374  * @param TeamSpeak3_Node_Client $a
+
2375  * @param TeamSpeak3_Node_Client $b
+
2376  * @return integer
+
2377  */
+ +
2379  {
+
2380  if(get_class($a) != get_class($b))
+
2381  {
+
2382  return 0;
+
2383 
+
2384  /* workaround for PHP bug #50688 */
+
2385  throw new TeamSpeak3_Adapter_ServerQuery_Exception("invalid parameter", 0x602);
+
2386  }
+
2387 
+
2388  if(!$a instanceof TeamSpeak3_Node_Client)
+
2389  {
+
2390  return 0;
+
2391 
+
2392  /* workaround for PHP bug #50688 */
+
2393  throw new TeamSpeak3_Adapter_ServerQuery_Exception("convert error", 0x604);
+
2394  }
+
2395 
+
2396  if($a->getProperty("client_talk_power", 0) != $b->getProperty("client_talk_power", 0))
+
2397  {
+
2398  return ($a->getProperty("client_talk_power", 0) > $b->getProperty("client_talk_power", 0)) ? -1 : 1;
+
2399  }
+
2400 
+
2401  if($a->getProperty("client_is_talker", 0) != $b->getProperty("client_is_talker", 0))
+
2402  {
+
2403  return ($a->getProperty("client_is_talker", 0) > $b->getProperty("client_is_talker", 0)) ? -1 : 1;
+
2404  }
+
2405 
+
2406  return strcmp(strtolower($a["client_nickname"]), strtolower($b["client_nickname"]));
+
2407  }
+
2408 
+
2409  /**
+
2410  * Internal callback funtion for sorting of group objects.
+
2411  *
+
2412  * @param TeamSpeak3_Node_Abstract $a
+
2413  * @param TeamSpeak3_Node_Abstract $b
+
2414  * @return integer
+
2415  */
+ +
2417  {
+
2418  if(get_class($a) != get_class($b))
+
2419  {
+
2420  return 0;
+
2421 
+
2422  /* workaround for PHP bug #50688 */
+
2423  throw new TeamSpeak3_Adapter_ServerQuery_Exception("invalid parameter", 0x602);
+
2424  }
+
2425 
+
2426  if(!$a instanceof TeamSpeak3_Node_Servergroup && !$a instanceof TeamSpeak3_Node_Channelgroup)
+
2427  {
+
2428  return 0;
+
2429 
+
2430  /* workaround for PHP bug #50688 */
+
2431  throw new TeamSpeak3_Adapter_ServerQuery_Exception("convert error", 0x604);
+
2432  }
+
2433 
+
2434  if($a->getProperty("sortid", 0) != $b->getProperty("sortid", 0) && $a->getProperty("sortid", 0) != 0 && $b->getProperty("sortid", 0) != 0)
+
2435  {
+
2436  return ($a->getProperty("sortid", 0) < $b->getProperty("sortid", 0)) ? -1 : 1;
+
2437  }
+
2438 
+
2439  return ($a->getId() < $b->getId()) ? -1 : 1;
+
2440  }
+
2441 
+
2442 /**
+
2443  * Internal callback funtion for sorting of file list items.
+
2444  *
+
2445  * @param array $a
+
2446  * @param array $b
+
2447  * @return integer
+
2448  */
+
2449  protected static function sortFileList(array $a, array $b)
+
2450  {
+
2451  if(!array_key_exists("src", $a) || !array_key_exists("src", $b) || !array_key_exists("type", $a) || !array_key_exists("type", $b))
+
2452  {
+
2453  return 0;
+
2454 
+
2455  throw new TeamSpeak3_Adapter_ServerQuery_Exception("invalid parameter", 0x602);
+
2456  }
+
2457 
+
2458  if($a["type"] != $b["type"])
+
2459  {
+
2460  return ($a["type"] < $b["type"]) ? -1 : 1;
+
2461  }
+
2462 
+
2463  return strcmp(strtolower($a["src"]), strtolower($b["src"]));
+
2464  }
+
2465 
+
2466  /**
+
2467  * Returns TRUE if the virtual server is online.
+
2468  *
+
2469  * @return boolean
+
2470  */
+
2471  public function isOnline()
+
2472  {
+
2473  return ($this["virtualserver_status"] == "online") ? TRUE : FALSE;
+
2474  }
+
2475 
+
2476  /**
+
2477  * Returns TRUE if the virtual server is offline.
+
2478  *
+
2479  * @return boolean
+
2480  */
+
2481  public function isOffline()
+
2482  {
+
2483  return ($this["virtualserver_status"] == "offline") ? TRUE : FALSE;
+
2484  }
+
2485 
+
2486  /**
+
2487  * Returns a unique identifier for the node which can be used as a HTML property.
+
2488  *
+
2489  * @return string
+
2490  */
+
2491  public function getUniqueId()
+
2492  {
+
2493  return $this->getParent()->getUniqueId() . "_s" . $this->getId();
+
2494  }
+
2495 
+
2496  /**
+
2497  * Returns the name of a possible icon to display the node object.
+
2498  *
+
2499  * @return string
+
2500  */
+
2501  public function getIcon()
+
2502  {
+
2503  if($this["virtualserver_clientsonline"]-$this["virtualserver_queryclientsonline"] >= $this["virtualserver_maxclients"])
+
2504  {
+
2505  return "server_full";
+
2506  }
+
2507  elseif($this["virtualserver_flag_password"])
+
2508  {
+
2509  return "server_pass";
+
2510  }
+
2511  else
+
2512  {
+
2513  return "server_open";
+
2514  }
+
2515  }
+
2516 
+
2517  /**
+
2518  * Returns a symbol representing the node.
+
2519  *
+
2520  * @return string
+
2521  */
+
2522  public function getSymbol()
+
2523  {
+
2524  return "$";
+
2525  }
+
2526 
+
2527  /**
+
2528  * Returns a string representation of this node.
+
2529  *
+
2530  * @return string
+
2531  */
+
2532  public function __toString()
+
2533  {
+
2534  return (string) $this["virtualserver_name"];
+
2535  }
+
2536 }
+
+
+ + + + diff --git a/lib/docs/html/_server_query_8php.html b/lib/docs/html/_server_query_8php.html new file mode 100644 index 0000000..cd25428 --- /dev/null +++ b/lib/docs/html/_server_query_8php.html @@ -0,0 +1,156 @@ + + + + + + +TeamSpeak 3 PHP Framework: TeamSpeak3/Adapter/ServerQuery.php File Reference + + + + + + + + + + + + + +
+
+ + + + + + + +
+
TeamSpeak 3 PHP Framework +  1.1.23 +
+
Copyright © Planet TeamSpeak. All rights reserved.
+
+
+ + + + + +
+
+ +
+
+
+ +
+ + + + +
+ +
+ +
+ +
+
ServerQuery.php File Reference
+
+
+ +

TeamSpeak 3 PHP Framework. +More...

+ +

Go to the source code of this file.

+ + + + + +

+Classes

class  TeamSpeak3_Adapter_ServerQuery
 Provides low-level methods for ServerQuery communication with a TeamSpeak 3 Server. More...
 
+ + + +

+Namespaces

 TeamSpeak3
 
+ + + +

+Constant Groups

 TeamSpeak3
 
+

Detailed Description

+

TeamSpeak 3 PHP Framework.

+
Id:
ServerQuery.php 10/11/2013 11:35:21 scp
+

This program is free software: you can redistribute it and/or modify it under the terms of the GNU General Public License as published by the Free Software Foundation, either version 3 of the License, or (at your option) any later version.

+

This program is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License for more details.

+

You should have received a copy of the GNU General Public License along with this program. If not, see http://www.gnu.org/licenses/.

+ +

Definition in file ServerQuery.php.

+
+
+ + + + diff --git a/lib/docs/html/_server_query_8php_source.html b/lib/docs/html/_server_query_8php_source.html new file mode 100644 index 0000000..9c7100e --- /dev/null +++ b/lib/docs/html/_server_query_8php_source.html @@ -0,0 +1,383 @@ + + + + + + +TeamSpeak 3 PHP Framework: TeamSpeak3/Adapter/ServerQuery.php Source File + + + + + + + + + + + + + +
+
+ + + + + + + +
+
TeamSpeak 3 PHP Framework +  1.1.23 +
+
Copyright © Planet TeamSpeak. All rights reserved.
+
+
+ + + + + +
+
+ +
+
+
+ +
+ + + + +
+ +
+ +
+
+
ServerQuery.php
+
+
+Go to the documentation of this file.
1 <?php
+
2 
+
3 /**
+
4  * @file
+
5  * TeamSpeak 3 PHP Framework
+
6  *
+
7  * $Id: ServerQuery.php 10/11/2013 11:35:21 scp@orilla $
+
8  *
+
9  * This program is free software: you can redistribute it and/or modify
+
10  * it under the terms of the GNU General Public License as published by
+
11  * the Free Software Foundation, either version 3 of the License, or
+
12  * (at your option) any later version.
+
13  *
+
14  * This program is distributed in the hope that it will be useful,
+
15  * but WITHOUT ANY WARRANTY; without even the implied warranty of
+
16  * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+
17  * GNU General Public License for more details.
+
18  *
+
19  * You should have received a copy of the GNU General Public License
+
20  * along with this program. If not, see <http://www.gnu.org/licenses/>.
+
21  *
+
22  * @package TeamSpeak3
+
23  * @version 1.1.23
+
24  * @author Sven 'ScP' Paulsen
+
25  * @copyright Copyright (c) 2010 by Planet TeamSpeak. All rights reserved.
+
26  */
+
27 
+
28 /**
+
29  * @class TeamSpeak3_Adapter_ServerQuery
+
30  * @brief Provides low-level methods for ServerQuery communication with a TeamSpeak 3 Server.
+
31  */
+ +
33 {
+
34  /**
+
35  * Stores a singleton instance of the active TeamSpeak3_Node_Host object.
+
36  *
+
37  * @var TeamSpeak3_Node_Host
+
38  */
+
39  protected $host = null;
+
40 
+
41  /**
+
42  * Stores the timestamp of the last command.
+
43  *
+
44  * @var integer
+
45  */
+
46  protected $timer = null;
+
47 
+
48  /**
+
49  * Number of queries executed on the server.
+
50  *
+
51  * @var integer
+
52  */
+
53  protected $count = 0;
+
54 
+
55  /**
+
56  * Stores an array with unsupported commands.
+
57  *
+
58  * @var array
+
59  */
+
60  protected $block = array("help");
+
61 
+
62  /**
+
63  * Connects the TeamSpeak3_Transport_Abstract object and performs initial actions on the remote
+
64  * server.
+
65  *
+
66  * @throws TeamSpeak3_Adapter_Exception
+
67  * @return void
+
68  */
+
69  protected function syn()
+
70  {
+
71  $this->initTransport($this->options);
+
72  $this->transport->setAdapter($this);
+
73 
+
74  TeamSpeak3_Helper_Profiler::init(spl_object_hash($this));
+
75 
+
76  if(!$this->getTransport()->readLine()->startsWith(TeamSpeak3::READY))
+
77  {
+
78  throw new TeamSpeak3_Adapter_Exception("invalid reply from the server");
+
79  }
+
80 
+
81  TeamSpeak3_Helper_Signal::getInstance()->emit("serverqueryConnected", $this);
+
82  }
+
83 
+
84  /**
+
85  * The TeamSpeak3_Adapter_ServerQuery destructor.
+
86  *
+
87  * @return void
+
88  */
+
89  public function __destruct()
+
90  {
+
91  if($this->getTransport() instanceof TeamSpeak3_Transport_Abstract && $this->transport->isConnected())
+
92  {
+
93  try
+
94  {
+
95  $this->request("quit");
+
96  }
+
97  catch(Exception $e)
+
98  {
+
99  return;
+
100  }
+
101  }
+
102  }
+
103 
+
104  /**
+
105  * Sends a prepared command to the server and returns the result.
+
106  *
+
107  * @param string $cmd
+
108  * @param boolean $throw
+
109  * @throws TeamSpeak3_Adapter_Exception
+
110  * @return TeamSpeak3_Adapter_ServerQuery_Reply
+
111  */
+
112  public function request($cmd, $throw = TRUE)
+
113  {
+ +
115 
+
116  if(strstr($cmd, "\r") || strstr($cmd, "\n"))
+
117  {
+
118  throw new TeamSpeak3_Adapter_Exception("illegal characters in command '" . $query . "'");
+
119  }
+
120  elseif(in_array($query, $this->block))
+
121  {
+
122  throw new TeamSpeak3_Adapter_ServerQuery_Exception("command not found", 0x100);
+
123  }
+
124 
+
125  TeamSpeak3_Helper_Signal::getInstance()->emit("serverqueryCommandStarted", $cmd);
+
126 
+
127  $this->getProfiler()->start();
+
128  $this->getTransport()->sendLine($cmd);
+
129  $this->timer = time();
+
130  $this->count++;
+
131 
+
132  $rpl = array();
+
133 
+
134  do {
+
135  $str = $this->getTransport()->readLine();
+
136  $rpl[] = $str;
+ +
138 
+
139  $this->getProfiler()->stop();
+
140 
+
141  $reply = new TeamSpeak3_Adapter_ServerQuery_Reply($rpl, $cmd, $this->getHost(), $throw);
+
142 
+
143  TeamSpeak3_Helper_Signal::getInstance()->emit("serverqueryCommandFinished", $cmd, $reply);
+
144 
+
145  return $reply;
+
146  }
+
147 
+
148  /**
+
149  * Waits for the server to send a notification message and returns the result.
+
150  *
+
151  * @throws TeamSpeak3_Adapter_Exception
+
152  * @return TeamSpeak3_Adapter_ServerQuery_Event
+
153  */
+
154  public function wait()
+
155  {
+
156  if($this->getTransport()->getConfig("blocking"))
+
157  {
+
158  throw new TeamSpeak3_Adapter_Exception("only available in non-blocking mode");
+
159  }
+
160 
+
161  do {
+
162  $evt = $this->getTransport()->readLine();
+
163  } while($evt instanceof TeamSpeak3_Helper_String && !$evt->section(TeamSpeak3::SEPARATOR_CELL)->startsWith(TeamSpeak3::EVENT));
+
164 
+
165  return new TeamSpeak3_Adapter_ServerQuery_Event($evt, $this->getHost());
+
166  }
+
167 
+
168  /**
+
169  * Uses given parameters and returns a prepared ServerQuery command.
+
170  *
+
171  * @param string $cmd
+
172  * @param array $params
+
173  * @return string
+
174  */
+
175  public function prepare($cmd, array $params = array())
+
176  {
+
177  $args = array();
+
178  $cells = array();
+
179 
+
180  foreach($params as $ident => $value)
+
181  {
+
182  $ident = is_numeric($ident) ? "" : strtolower($ident) . TeamSpeak3::SEPARATOR_PAIR;
+
183 
+
184  if(is_array($value))
+
185  {
+
186  $value = array_values($value);
+
187 
+
188  for($i = 0; $i < count($value); $i++)
+
189  {
+
190  if($value[$i] === null) continue;
+
191  elseif($value[$i] === FALSE) $value[$i] = 0x00;
+
192  elseif($value[$i] === TRUE) $value[$i] = 0x01;
+
193  elseif($value[$i] instanceof TeamSpeak3_Node_Abstract) $value[$i] = $value[$i]->getId();
+
194 
+
195  $cells[$i][] = $ident . TeamSpeak3_Helper_String::factory($value[$i])->escape()->toUtf8();
+
196  }
+
197  }
+
198  else
+
199  {
+
200  if($value === null) continue;
+
201  elseif($value === FALSE) $value = 0x00;
+
202  elseif($value === TRUE) $value = 0x01;
+
203  elseif($value instanceof TeamSpeak3_Node_Abstract) $value = $value->getId();
+
204 
+
205  $args[] = $ident . TeamSpeak3_Helper_String::factory($value)->escape()->toUtf8();
+
206  }
+
207  }
+
208 
+
209  foreach(array_keys($cells) as $ident) $cells[$ident] = implode(TeamSpeak3::SEPARATOR_CELL, $cells[$ident]);
+
210 
+
211  if(count($args)) $cmd .= " " . implode(TeamSpeak3::SEPARATOR_CELL, $args);
+
212  if(count($cells)) $cmd .= " " . implode(TeamSpeak3::SEPARATOR_LIST, $cells);
+
213 
+
214  return trim($cmd);
+
215  }
+
216 
+
217  /**
+
218  * Returns the timestamp of the last command.
+
219  *
+
220  * @return integer
+
221  */
+
222  public function getQueryLastTimestamp()
+
223  {
+
224  return $this->timer;
+
225  }
+
226 
+
227  /**
+
228  * Returns the number of queries executed on the server.
+
229  *
+
230  * @return integer
+
231  */
+
232  public function getQueryCount()
+
233  {
+
234  return $this->count;
+
235  }
+
236 
+
237  /**
+
238  * Returns the total runtime of all queries.
+
239  *
+
240  * @return mixed
+
241  */
+
242  public function getQueryRuntime()
+
243  {
+
244  return $this->getProfiler()->getRuntime();
+
245  }
+
246 
+
247  /**
+
248  * Returns the TeamSpeak3_Node_Host object of the current connection.
+
249  *
+
250  * @return TeamSpeak3_Node_Host
+
251  */
+
252  public function getHost()
+
253  {
+
254  if($this->host === null)
+
255  {
+
256  $this->host = new TeamSpeak3_Node_Host($this);
+
257  }
+
258 
+
259  return $this->host;
+
260  }
+
261 }
+
+
+ + + + diff --git a/lib/docs/html/_servergroup_8php.html b/lib/docs/html/_servergroup_8php.html new file mode 100644 index 0000000..326312f --- /dev/null +++ b/lib/docs/html/_servergroup_8php.html @@ -0,0 +1,156 @@ + + + + + + +TeamSpeak 3 PHP Framework: TeamSpeak3/Node/Servergroup.php File Reference + + + + + + + + + + + + + +
+
+ + + + + + + +
+
TeamSpeak 3 PHP Framework +  1.1.23 +
+
Copyright © Planet TeamSpeak. All rights reserved.
+
+
+ + + + + +
+
+ +
+
+
+ +
+ + + + +
+ +
+ +
+ +
+
Servergroup.php File Reference
+
+
+ +

TeamSpeak 3 PHP Framework. +More...

+ +

Go to the source code of this file.

+ + + + + +

+Classes

class  TeamSpeak3_Node_Servergroup
 Class describing a TeamSpeak 3 server group and all it's parameters. More...
 
+ + + +

+Namespaces

 TeamSpeak3
 
+ + + +

+Constant Groups

 TeamSpeak3
 
+

Detailed Description

+

TeamSpeak 3 PHP Framework.

+
Id:
Servergroup.php 10/11/2013 11:35:21 scp
+

This program is free software: you can redistribute it and/or modify it under the terms of the GNU General Public License as published by the Free Software Foundation, either version 3 of the License, or (at your option) any later version.

+

This program is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License for more details.

+

You should have received a copy of the GNU General Public License along with this program. If not, see http://www.gnu.org/licenses/.

+ +

Definition in file Servergroup.php.

+
+
+ + + + diff --git a/lib/docs/html/_servergroup_8php_source.html b/lib/docs/html/_servergroup_8php_source.html new file mode 100644 index 0000000..44d56b4 --- /dev/null +++ b/lib/docs/html/_servergroup_8php_source.html @@ -0,0 +1,422 @@ + + + + + + +TeamSpeak 3 PHP Framework: TeamSpeak3/Node/Servergroup.php Source File + + + + + + + + + + + + + +
+
+ + + + + + + +
+
TeamSpeak 3 PHP Framework +  1.1.23 +
+
Copyright © Planet TeamSpeak. All rights reserved.
+
+
+ + + + + +
+
+ +
+
+
+ +
+ + + + +
+ +
+ +
+
+
Servergroup.php
+
+
+Go to the documentation of this file.
1 <?php
+
2 
+
3 /**
+
4  * @file
+
5  * TeamSpeak 3 PHP Framework
+
6  *
+
7  * $Id: Servergroup.php 10/11/2013 11:35:21 scp@orilla $
+
8  *
+
9  * This program is free software: you can redistribute it and/or modify
+
10  * it under the terms of the GNU General Public License as published by
+
11  * the Free Software Foundation, either version 3 of the License, or
+
12  * (at your option) any later version.
+
13  *
+
14  * This program is distributed in the hope that it will be useful,
+
15  * but WITHOUT ANY WARRANTY; without even the implied warranty of
+
16  * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+
17  * GNU General Public License for more details.
+
18  *
+
19  * You should have received a copy of the GNU General Public License
+
20  * along with this program. If not, see <http://www.gnu.org/licenses/>.
+
21  *
+
22  * @package TeamSpeak3
+
23  * @version 1.1.23
+
24  * @author Sven 'ScP' Paulsen
+
25  * @copyright Copyright (c) 2010 by Planet TeamSpeak. All rights reserved.
+
26  */
+
27 
+
28 /**
+
29  * @class TeamSpeak3_Node_Servergroup
+
30  * @brief Class describing a TeamSpeak 3 server group and all it's parameters.
+
31  */
+ +
33 {
+
34  /**
+
35  * The TeamSpeak3_Node_Servergroup constructor.
+
36  *
+
37  * @param TeamSpeak3_Node_Server $server
+
38  * @param array $info
+
39  * @param string $index
+
40  * @throws TeamSpeak3_Node_Exception
+
41  * @return TeamSpeak3_Node_Servergroup
+
42  */
+
43  public function __construct(TeamSpeak3_Node_Server $server, array $info, $index = "sgid")
+
44  {
+
45  $this->parent = $server;
+
46  $this->nodeInfo = $info;
+
47 
+
48  if(!array_key_exists($index, $this->nodeInfo))
+
49  {
+
50  throw new TeamSpeak3_Node_Exception("invalid groupID", 0xA00);
+
51  }
+
52 
+
53  $this->nodeId = $this->nodeInfo[$index];
+
54  }
+
55 
+
56  /**
+
57  * Renames the server group specified.
+
58  *
+
59  * @param string $name
+
60  * @return void
+
61  */
+
62  public function rename($name)
+
63  {
+
64  return $this->getParent()->serverGroupRename($this->getId(), $name);
+
65  }
+
66 
+
67  /**
+
68  * Deletes the server group. If $force is set to 1, the server group will be
+
69  * deleted even if there are clients within.
+
70  *
+
71  * @param boolean $force
+
72  * @return void
+
73  */
+
74  public function delete($force = FALSE)
+
75  {
+
76  $this->getParent()->serverGroupDelete($this->getId(), $force);
+
77 
+
78  unset($this);
+
79  }
+
80 
+
81  /**
+
82  * Creates a copy of the server group and returns the new groups ID.
+
83  *
+
84  * @param string $name
+
85  * @param integer $tsgid
+
86  * @param integer $type
+
87  * @return integer
+
88  */
+
89  public function copy($name = null, $tsgid = 0, $type = TeamSpeak3::GROUP_DBTYPE_REGULAR)
+
90  {
+
91  return $this->getParent()->serverGroupCopy($this->getId(), $name, $tsgid, $type);
+
92  }
+
93 
+
94  /**
+
95  * Returns a list of permissions assigned to the server group.
+
96  *
+
97  * @param boolean $permsid
+
98  * @return array
+
99  */
+
100  public function permList($permsid = FALSE)
+
101  {
+
102  return $this->getParent()->serverGroupPermList($this->getId(), $permsid);
+
103  }
+
104 
+
105  /**
+
106  * Adds a set of specified permissions to the server group. Multiple permissions
+
107  * can be added by providing the four parameters of each permission in separate arrays.
+
108  *
+
109  * @param integer $permid
+
110  * @param integer $permvalue
+
111  * @param integer $permnegated
+
112  * @param integer $permskip
+
113  * @return void
+
114  */
+
115  public function permAssign($permid, $permvalue, $permnegated = FALSE, $permskip = FALSE)
+
116  {
+
117  return $this->getParent()->serverGroupPermAssign($this->getId(), $permid, $permvalue, $permnegated, $permskip);
+
118  }
+
119 
+
120  /**
+
121  * Alias for permAssign().
+
122  *
+
123  * @deprecated
+
124  */
+
125  public function permAssignByName($permname, $permvalue, $permnegated = FALSE, $permskip = FALSE)
+
126  {
+
127  return $this->permAssign($permname, $permvalue, $permnegated, $permskip);
+
128  }
+
129 
+
130  /**
+
131  * Removes a set of specified permissions from the server group. Multiple
+
132  * permissions can be removed at once.
+
133  *
+
134  * @param integer $permid
+
135  * @return void
+
136  */
+
137  public function permRemove($permid)
+
138  {
+
139  return $this->getParent()->serverGroupPermRemove($this->getId(), $permid);
+
140  }
+
141 
+
142  /**
+
143  * Alias for permRemove().
+
144  *
+
145  * @deprecated
+
146  */
+
147  public function permRemoveByName($permname)
+
148  {
+
149  return $this->permRemove($permname);
+
150  }
+
151 
+
152  /**
+
153  * Returns a list of clients assigned to the server group specified.
+
154  *
+
155  * @return array
+
156  */
+
157  public function clientList()
+
158  {
+
159  return $this->getParent()->serverGroupClientList($this->getId());
+
160  }
+
161 
+
162  /**
+
163  * Adds a client to the server group specified. Please note that a client cannot be
+
164  * added to default groups or template groups.
+
165  *
+
166  * @param integer $cldbid
+
167  * @return void
+
168  */
+
169  public function clientAdd($cldbid)
+
170  {
+
171  return $this->getParent()->serverGroupClientAdd($this->getId(), $cldbid);
+
172  }
+
173 
+
174  /**
+
175  * Removes a client from the server group.
+
176  *
+
177  * @param integer $cldbid
+
178  * @return void
+
179  */
+
180  public function clientDel($cldbid)
+
181  {
+
182  return $this->getParent()->serverGroupClientDel($this->getId(), $cldbid);
+
183  }
+
184 
+
185  /**
+
186  * Alias for privilegeKeyCreate().
+
187  *
+
188  * @deprecated
+
189  */
+
190  public function tokenCreate($description = null, $customset = null)
+
191  {
+
192  return $this->privilegeKeyCreate($description, $customset);
+
193  }
+
194 
+
195  /**
+
196  * Creates a new privilege key (token) for the server group and returns the key.
+
197  *
+
198  * @param string $description
+
199  * @param string $customset
+
200  * @return TeamSpeak3_Helper_String
+
201  */
+
202  public function privilegeKeyCreate($description = null, $customset = null)
+
203  {
+
204  return $this->getParent()->privilegeKeyCreate(TeamSpeak3::TOKEN_SERVERGROUP, $this->getId(), 0, $description, $customset);
+
205  }
+
206 
+
207  /**
+
208  * Sends a text message to all clients residing in the server group on the virtual server.
+
209  *
+
210  * @param string $msg
+
211  * @return void
+
212  */
+
213  public function message($msg)
+
214  {
+
215  foreach($this as $client)
+
216  {
+
217  try
+
218  {
+
219  $this->execute("sendtextmessage", array("msg" => $msg, "target" => $client, "targetmode" => TeamSpeak3::TEXTMSG_CLIENT));
+
220  }
+ +
222  {
+
223  /* ERROR_client_invalid_id */
+
224  if($e->getCode() != 0x0200) throw $e;
+
225  }
+
226  }
+
227  }
+
228 
+
229  /**
+
230  * Downloads and returns the server groups icon file content.
+
231  *
+
232  * @return TeamSpeak3_Helper_String
+
233  */
+
234  public function iconDownload()
+
235  {
+
236  if($this->iconIsLocal("iconid") || $this["iconid"] == 0) return;
+
237 
+
238  $download = $this->getParent()->transferInitDownload(rand(0x0000, 0xFFFF), 0, $this->iconGetName("iconid"));
+
239  $transfer = TeamSpeak3::factory("filetransfer://" . $download["host"] . ":" . $download["port"]);
+
240 
+
241  return $transfer->download($download["ftkey"], $download["size"]);
+
242  }
+
243 
+
244  /**
+
245  * @ignore
+
246  */
+
247  protected function fetchNodeList()
+
248  {
+
249  $this->nodeList = array();
+
250 
+
251  foreach($this->getParent()->clientList() as $client)
+
252  {
+
253  if(in_array($this->getId(), explode(",", $client["client_servergroups"])))
+
254  {
+
255  $this->nodeList[] = $client;
+
256  }
+
257  }
+
258  }
+
259 
+
260  /**
+
261  * Returns a unique identifier for the node which can be used as a HTML property.
+
262  *
+
263  * @return string
+
264  */
+
265  public function getUniqueId()
+
266  {
+
267  return $this->getParent()->getUniqueId() . "_sg" . $this->getId();
+
268  }
+
269 
+
270  /**
+
271  * Returns the name of a possible icon to display the node object.
+
272  *
+
273  * @return string
+
274  */
+
275  public function getIcon()
+
276  {
+
277  return "group_server";
+
278  }
+
279 
+
280  /**
+
281  * Returns a symbol representing the node.
+
282  *
+
283  * @return string
+
284  */
+
285  public function getSymbol()
+
286  {
+
287  return "%";
+
288  }
+
289 
+
290  /**
+
291  * Returns a string representation of this node.
+
292  *
+
293  * @return string
+
294  */
+
295  public function __toString()
+
296  {
+
297  return (string) $this["name"];
+
298  }
+
299 }
+
300 
+
+
+ + + + diff --git a/lib/docs/html/_signal_8php.html b/lib/docs/html/_signal_8php.html new file mode 100644 index 0000000..279b90b --- /dev/null +++ b/lib/docs/html/_signal_8php.html @@ -0,0 +1,156 @@ + + + + + + +TeamSpeak 3 PHP Framework: TeamSpeak3/Helper/Signal.php File Reference + + + + + + + + + + + + + +
+
+ + + + + + + +
+
TeamSpeak 3 PHP Framework +  1.1.23 +
+
Copyright © Planet TeamSpeak. All rights reserved.
+
+
+ + + + + +
+
+ +
+
+
+ +
+ + + + +
+ +
+ +
+ +
+
Signal.php File Reference
+
+
+ +

TeamSpeak 3 PHP Framework. +More...

+ +

Go to the source code of this file.

+ + + + + +

+Classes

class  TeamSpeak3_Helper_Signal
 Helper class for signal slots. More...
 
+ + + +

+Namespaces

 TeamSpeak3
 
+ + + +

+Constant Groups

 TeamSpeak3
 
+

Detailed Description

+

TeamSpeak 3 PHP Framework.

+
Id:
Signal.php 10/11/2013 11:35:21 scp
+

This program is free software: you can redistribute it and/or modify it under the terms of the GNU General Public License as published by the Free Software Foundation, either version 3 of the License, or (at your option) any later version.

+

This program is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License for more details.

+

You should have received a copy of the GNU General Public License along with this program. If not, see http://www.gnu.org/licenses/.

+ +

Definition in file Signal.php.

+
+
+ + + + diff --git a/lib/docs/html/_signal_8php_source.html b/lib/docs/html/_signal_8php_source.html new file mode 100644 index 0000000..ef9d954 --- /dev/null +++ b/lib/docs/html/_signal_8php_source.html @@ -0,0 +1,335 @@ + + + + + + +TeamSpeak 3 PHP Framework: TeamSpeak3/Helper/Signal.php Source File + + + + + + + + + + + + + +
+
+ + + + + + + +
+
TeamSpeak 3 PHP Framework +  1.1.23 +
+
Copyright © Planet TeamSpeak. All rights reserved.
+
+
+ + + + + +
+
+ +
+
+
+ +
+ + + + +
+ +
+ +
+
+
Signal.php
+
+
+Go to the documentation of this file.
1 <?php
+
2 
+
3 /**
+
4  * @file
+
5  * TeamSpeak 3 PHP Framework
+
6  *
+
7  * $Id: Signal.php 10/11/2013 11:35:21 scp@orilla $
+
8  *
+
9  * This program is free software: you can redistribute it and/or modify
+
10  * it under the terms of the GNU General Public License as published by
+
11  * the Free Software Foundation, either version 3 of the License, or
+
12  * (at your option) any later version.
+
13  *
+
14  * This program is distributed in the hope that it will be useful,
+
15  * but WITHOUT ANY WARRANTY; without even the implied warranty of
+
16  * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+
17  * GNU General Public License for more details.
+
18  *
+
19  * You should have received a copy of the GNU General Public License
+
20  * along with this program. If not, see <http://www.gnu.org/licenses/>.
+
21  *
+
22  * @package TeamSpeak3
+
23  * @version 1.1.23
+
24  * @author Sven 'ScP' Paulsen
+
25  * @copyright Copyright (c) 2010 by Planet TeamSpeak. All rights reserved.
+
26  */
+
27 
+
28 /**
+
29  * @class TeamSpeak3_Helper_Signal
+
30  * @brief Helper class for signal slots.
+
31  */
+ +
33 {
+
34  /**
+
35  * Stores the TeamSpeak3_Helper_Signal object.
+
36  *
+
37  * @var TeamSpeak3_Helper_Signal
+
38  */
+
39  protected static $instance = null;
+
40 
+
41  /**
+
42  * Stores subscribed signals and their slots.
+
43  *
+
44  * @var array
+
45  */
+
46  protected $sigslots = array();
+
47 
+
48  /**
+
49  * Emits a signal with a given set of parameters.
+
50  *
+
51  * @param string $signal
+
52  * @param mixed $params
+
53  * @return mixed
+
54  */
+
55  public function emit($signal, $params = null)
+
56  {
+
57  if(!$this->hasHandlers($signal))
+
58  {
+
59  return;
+
60  }
+
61 
+
62  if(!is_array($params))
+
63  {
+
64  $params = func_get_args();
+
65  $params = array_slice($params, 1);
+
66  }
+
67 
+
68  foreach($this->sigslots[$signal] as $slot)
+
69  {
+
70  $return = $slot->call($params);
+
71  }
+
72 
+
73  return $return;
+
74  }
+
75 
+
76  /**
+
77  * Generates a MD5 hash based on a given callback.
+
78  *
+
79  * @param mixed $callback
+
80  * @param string
+
81  * @return void
+
82  */
+
83  public function getCallbackHash($callback)
+
84  {
+
85  if(!is_callable($callback, TRUE, $callable_name))
+
86  {
+
87  throw new TeamSpeak3_Helper_Signal_Exception("invalid callback specified");
+
88  }
+
89 
+
90  return md5($callable_name);
+
91  }
+
92 
+
93  /**
+
94  * Subscribes to a signal and returns the signal handler.
+
95  *
+
96  * @param string $signal
+
97  * @param mixed $callback
+
98  * @return TeamSpeak3_Helper_Signal_Handler
+
99  */
+
100  public function subscribe($signal, $callback)
+
101  {
+
102  if(empty($this->sigslots[$signal]))
+
103  {
+
104  $this->sigslots[$signal] = array();
+
105  }
+
106 
+
107  $index = $this->getCallbackHash($callback);
+
108 
+
109  if(!array_key_exists($index, $this->sigslots[$signal]))
+
110  {
+
111  $this->sigslots[$signal][$index] = new TeamSpeak3_Helper_Signal_Handler($signal, $callback);
+
112  }
+
113 
+
114  return $this->sigslots[$signal][$index];
+
115  }
+
116 
+
117  /**
+
118  * Unsubscribes from a signal.
+
119  *
+
120  * @param string $signal
+
121  * @param mixed $callback
+
122  * @return void
+
123  */
+
124  public function unsubscribe($signal, $callback = null)
+
125  {
+
126  if(!$this->hasHandlers($signal))
+
127  {
+
128  return;
+
129  }
+
130 
+
131  if($callback !== null)
+
132  {
+
133  $index = $this->getCallbackHash($callback);
+
134 
+
135  if(!array_key_exists($index, $this->sigslots[$signal]))
+
136  {
+
137  return;
+
138  }
+
139 
+
140  unset($this->sigslots[$signal][$index]);
+
141  }
+
142  else
+
143  {
+
144  unset($this->sigslots[$signal]);
+
145  }
+
146  }
+
147 
+
148  /**
+
149  * Returns all registered signals.
+
150  *
+
151  * @return array
+
152  */
+
153  public function getSignals()
+
154  {
+
155  return array_keys($this->sigslots);
+
156  }
+
157 
+
158  /**
+
159  * Returns TRUE there are slots subscribed for a specified signal.
+
160  *
+
161  * @param string $signal
+
162  * @return boolean
+
163  */
+
164  public function hasHandlers($signal)
+
165  {
+
166  return empty($this->sigslots[$signal]) ? FALSE : TRUE;
+
167  }
+
168 
+
169  /**
+
170  * Returns all slots for a specified signal.
+
171  *
+
172  * @param string $signal
+
173  * @return array
+
174  */
+
175  public function getHandlers($signal)
+
176  {
+
177  if(!$this->hasHandlers($signal))
+
178  {
+
179  return $this->sigslots[$signal];
+
180  }
+
181 
+
182  return array();
+
183  }
+
184 
+
185  /**
+
186  * Clears all slots for a specified signal.
+
187  *
+
188  * @param string $signal
+
189  * @return void
+
190  */
+
191  public function clearHandlers($signal)
+
192  {
+
193  if(!$this->hasHandlers($signal))
+
194  {
+
195  unset($this->sigslots[$signal]);
+
196  }
+
197  }
+
198 
+
199  /**
+
200  * Returns a singleton instance of TeamSpeak3_Helper_Signal.
+
201  *
+
202  * @return TeamSpeak3_Helper_Signal
+
203  */
+
204  public static function getInstance()
+
205  {
+
206  if(self::$instance === null)
+
207  {
+
208  self::$instance = new self();
+
209  }
+
210 
+
211  return self::$instance;
+
212  }
+
213 }
+
+
+ + + + diff --git a/lib/docs/html/_string_8php.html b/lib/docs/html/_string_8php.html new file mode 100644 index 0000000..4e2ae62 --- /dev/null +++ b/lib/docs/html/_string_8php.html @@ -0,0 +1,156 @@ + + + + + + +TeamSpeak 3 PHP Framework: TeamSpeak3/Helper/String.php File Reference + + + + + + + + + + + + + +
+
+ + + + + + + +
+
TeamSpeak 3 PHP Framework +  1.1.23 +
+
Copyright © Planet TeamSpeak. All rights reserved.
+
+
+ + + + + +
+
+ +
+
+
+ +
+ + + + +
+ +
+ +
+ +
+
String.php File Reference
+
+
+ +

TeamSpeak 3 PHP Framework. +More...

+ +

Go to the source code of this file.

+ + + + + +

+Classes

class  TeamSpeak3_Helper_String
 Helper class for string handling. More...
 
+ + + +

+Namespaces

 TeamSpeak3
 
+ + + +

+Constant Groups

 TeamSpeak3
 
+

Detailed Description

+

TeamSpeak 3 PHP Framework.

+
Id:
String.php 10/11/2013 11:35:21 scp
+

This program is free software: you can redistribute it and/or modify it under the terms of the GNU General Public License as published by the Free Software Foundation, either version 3 of the License, or (at your option) any later version.

+

This program is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License for more details.

+

You should have received a copy of the GNU General Public License along with this program. If not, see http://www.gnu.org/licenses/.

+ +

Definition in file String.php.

+
+
+ + + + diff --git a/lib/docs/html/_string_8php_source.html b/lib/docs/html/_string_8php_source.html new file mode 100644 index 0000000..476bd54 --- /dev/null +++ b/lib/docs/html/_string_8php_source.html @@ -0,0 +1,1061 @@ + + + + + + +TeamSpeak 3 PHP Framework: TeamSpeak3/Helper/String.php Source File + + + + + + + + + + + + + +
+
+ + + + + + + +
+
TeamSpeak 3 PHP Framework +  1.1.23 +
+
Copyright © Planet TeamSpeak. All rights reserved.
+
+
+ + + + + +
+
+ +
+
+
+ +
+ + + + +
+ +
+ +
+
+
String.php
+
+
+Go to the documentation of this file.
1 <?php
+
2 
+
3 /**
+
4  * @file
+
5  * TeamSpeak 3 PHP Framework
+
6  *
+
7  * $Id: String.php 10/11/2013 11:35:21 scp@orilla $
+
8  *
+
9  * This program is free software: you can redistribute it and/or modify
+
10  * it under the terms of the GNU General Public License as published by
+
11  * the Free Software Foundation, either version 3 of the License, or
+
12  * (at your option) any later version.
+
13  *
+
14  * This program is distributed in the hope that it will be useful,
+
15  * but WITHOUT ANY WARRANTY; without even the implied warranty of
+
16  * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+
17  * GNU General Public License for more details.
+
18  *
+
19  * You should have received a copy of the GNU General Public License
+
20  * along with this program. If not, see <http://www.gnu.org/licenses/>.
+
21  *
+
22  * @package TeamSpeak3
+
23  * @version 1.1.23
+
24  * @author Sven 'ScP' Paulsen
+
25  * @copyright Copyright (c) 2010 by Planet TeamSpeak. All rights reserved.
+
26  */
+
27 
+
28 /**
+
29  * @class TeamSpeak3_Helper_String
+
30  * @brief Helper class for string handling.
+
31  */
+
32 class TeamSpeak3_Helper_String implements ArrayAccess, Iterator, Countable
+
33 {
+
34  /**
+
35  * Stores the original string.
+
36  *
+
37  * @var string
+
38  */
+
39  protected $string;
+
40 
+
41  /**
+
42  * @ignore
+
43  */
+
44  protected $position = 0;
+
45 
+
46  /**
+
47  * The TeamSpeak3_Helper_String constructor.
+
48  *
+
49  * @param string $string
+
50  * @return TeamSpeak3_Helper_String
+
51  */
+
52  public function __construct($string)
+
53  {
+
54  $this->string = strval($string);
+
55  }
+
56 
+
57  /**
+
58  * Returns a TeamSpeak3_Helper_String object for thegiven string.
+
59  *
+
60  * @param string $string
+
61  * @return TeamSpeak3_Helper_String
+
62  */
+
63  public static function factory($string)
+
64  {
+
65  return new self($string);
+
66  }
+
67 
+
68  /**
+
69  * Replaces every occurrence of the string $search with the string $replace.
+
70  *
+
71  * @param string $search
+
72  * @param string $replace
+
73  * @param boolean $caseSensitivity
+
74  * @return TeamSpeak3_Helper_String
+
75  */
+
76  public function replace($search, $replace, $caseSensitivity = TRUE)
+
77  {
+
78  if($caseSensitivity)
+
79  {
+
80  $this->string = str_replace($search, $replace, $this->string);
+
81  }
+
82  else
+
83  {
+
84  $this->string = str_ireplace($search, $replace, $this->string);
+
85  }
+
86 
+
87  return $this;
+
88  }
+
89 
+
90  /**
+
91  * This function replaces indexed or associative signs with given values.
+
92  *
+
93  * @param array $args
+
94  * @param string $char
+
95  * @return TeamSpeak3_Helper_String
+
96  */
+
97  public function arg(array $args, $char = "%")
+
98  {
+
99  $args = array_reverse($args, TRUE);
+
100 
+
101  foreach($args as $key => $val)
+
102  {
+
103  $args[$char . $key] = $val;
+
104  unset($args[$key]);
+
105  }
+
106 
+
107  $this->string = strtr($this->string, $args);
+
108 
+
109  return $this;
+
110  }
+
111 
+
112  /**
+
113  * Returns true if the string starts with $pattern.
+
114  *
+
115  * @param string $pattern
+
116  * @return boolean
+
117  */
+
118  public function startsWith($pattern)
+
119  {
+
120  return (substr($this->string, 0, strlen($pattern)) == $pattern) ? TRUE : FALSE;
+
121  }
+
122 
+
123  /**
+
124  * Returns true if the string ends with $pattern.
+
125  *
+
126  * @param string $pattern
+
127  * @return boolean
+
128  */
+
129  public function endsWith($pattern)
+
130  {
+
131  return (substr($this->string, strlen($pattern)*-1) == $pattern) ? TRUE : FALSE;
+
132  }
+
133 
+
134  /**
+
135  * Returns the position of the first occurrence of a char in a string.
+
136  *
+
137  * @param string $needle
+
138  * @return integer
+
139  */
+
140  public function findFirst($needle)
+
141  {
+
142  return strpos($this->string, $needle);
+
143  }
+
144 
+
145  /**
+
146  * Returns the position of the last occurrence of a char in a string.
+
147  *
+
148  * @param string $needle
+
149  * @return integer
+
150  */
+
151  public function findLast($needle)
+
152  {
+
153  return strrpos($this->string, $needle);
+
154  }
+
155 
+
156  /**
+
157  * Returns the lowercased string.
+
158  *
+
159  * @return TeamSpeak3_Helper_String
+
160  */
+
161  public function toLower()
+
162  {
+
163  return new self(strtolower($this->string));
+
164  }
+
165 
+
166  /**
+
167  * Returns the uppercased string.
+
168  *
+
169  * @return TeamSpeak3_Helper_String
+
170  */
+
171  public function toUpper()
+
172  {
+
173  return new self(strtoupper($this->string));
+
174  }
+
175 
+
176  /**
+
177  * Returns true if the string contains $pattern.
+
178  *
+
179  * @param string $pattern
+
180  * @param booean $regexp
+
181  * @return boolean
+
182  */
+
183  public function contains($pattern, $regexp = FALSE)
+
184  {
+
185  if(empty($pattern))
+
186  {
+
187  return TRUE;
+
188  }
+
189 
+
190  if($regexp)
+
191  {
+
192  return (preg_match("/" . $pattern . "/i", $this->string)) ? TRUE : FALSE;
+
193  }
+
194  else
+
195  {
+
196  return (stristr($this->string, $pattern) !== FALSE) ? TRUE : FALSE;
+
197  }
+
198  }
+
199 
+
200  /**
+
201  * Returns part of a string.
+
202  *
+
203  * @param integer $start
+
204  * @param integer $length
+
205  * @return TeamSpeak3_Helper_String
+
206  */
+
207  public function substr($start, $length = null)
+
208  {
+
209  $string = ($length !== null) ? substr($this->string, $start, $length) : substr($this->string, $start);
+
210 
+
211  return new self($string);
+
212  }
+
213 
+
214  /**
+
215  * Splits the string into substrings wherever $separator occurs.
+
216  *
+
217  * @param string $separator
+
218  * @param integer $limit
+
219  * @return array
+
220  */
+
221  public function split($separator, $limit = 0)
+
222  {
+
223  $parts = explode($separator, $this->string, ($limit) ? intval($limit) : $this->count());
+
224 
+
225  foreach($parts as $key => $val)
+
226  {
+
227  $parts[$key] = new self($val);
+
228  }
+
229 
+
230  return $parts;
+
231  }
+
232 
+
233  /**
+
234  * Appends $part to the string.
+
235  *
+
236  * @param string $part
+
237  * @return TeamSpeak3_Helper_String
+
238  */
+
239  public function append($part)
+
240  {
+
241  $this->string = $this->string . strval($part);
+
242 
+
243  return $this;
+
244  }
+
245 
+
246  /**
+
247  * Prepends $part to the string.
+
248  *
+
249  * @param string $part
+
250  * @return TeamSpeak3_Helper_String
+
251  */
+
252  public function prepend($part)
+
253  {
+
254  $this->string = strval($part) . $this->string;
+
255 
+
256  return $this;
+
257  }
+
258 
+
259  /**
+
260  * Returns a section of the string.
+
261  *
+
262  * @param string $separator
+
263  * @param integer $first
+
264  * @param integer $last
+
265  * @return TeamSpeak3_Helper_String
+
266  */
+
267  public function section($separator, $first = 0, $last = 0)
+
268  {
+
269  $sections = explode($separator, $this->string);
+
270 
+
271  $total = count($sections);
+
272  $first = intval($first);
+
273  $last = intval($last);
+
274 
+
275  if($first > $total) return null;
+
276  if($first > $last) $last = $first;
+
277 
+
278  for($i = 0; $i < $total; $i++)
+
279  {
+
280  if($i < $first || $i > $last)
+
281  {
+
282  unset($sections[$i]);
+
283  }
+
284  }
+
285 
+
286  $string = implode($separator, $sections);
+
287 
+
288  return new self($string);
+
289  }
+
290 
+
291  /**
+
292  * Sets the size of the string to $size characters.
+
293  *
+
294  * @param integer $size
+
295  * @param string $char
+
296  * @return TeamSpeak3_Helper_String
+
297  */
+
298  public function resize($size, $char = "\0")
+
299  {
+
300  $chars = ($size - $this->count());
+
301 
+
302  if($chars < 0)
+
303  {
+
304  $this->string = substr($this->string, 0, $chars);
+
305  }
+
306  elseif($chars > 0)
+
307  {
+
308  $this->string = str_pad($this->string, $size, strval($char));
+
309  }
+
310 
+
311  return $this;
+
312  }
+
313 
+
314  /**
+
315  * Strips whitespaces (or other characters) from the beginning and end of the string.
+
316  *
+
317  * @return TeamSpeak3_Helper_String
+
318  */
+
319  public function trim()
+
320  {
+
321  $this->string = trim($this->string);
+
322 
+
323  return $this;
+
324  }
+
325 
+
326  /**
+
327  * Escapes a string using the TeamSpeak 3 escape patterns.
+
328  *
+
329  * @return TeamSpeak3_Helper_String
+
330  */
+
331  public function escape()
+
332  {
+
333  foreach(TeamSpeak3::getEscapePatterns() as $search => $replace)
+
334  {
+
335  $this->string = str_replace($search, $replace, $this->string);
+
336  }
+
337 
+
338  return $this;
+
339  }
+
340 
+
341  /**
+
342  * Unescapes a string using the TeamSpeak 3 escape patterns.
+
343  *
+
344  * @return TeamSpeak3_Helper_String
+
345  */
+
346  public function unescape()
+
347  {
+
348  $this->string = strtr($this->string, array_flip(TeamSpeak3::getEscapePatterns()));
+
349 
+
350  return $this;
+
351  }
+
352 
+
353  /**
+
354  * Removes any non alphanumeric characters from the string.
+
355  *
+
356  * @return TeamSpeak3_Helper_String
+
357  */
+
358  public function filterAlnum()
+
359  {
+
360  $this->string = preg_replace("/[^[:alnum:]]/", "", $this->string);
+
361 
+
362  return $this;
+
363  }
+
364 
+
365  /**
+
366  * Removes any non alphabetic characters from the string.
+
367  *
+
368  * @return TeamSpeak3_Helper_String
+
369  */
+
370  public function filterAlpha()
+
371  {
+
372  $this->string = preg_replace("/[^[:alpha:]]/", "", $this->string);
+
373 
+
374  return $this;
+
375  }
+
376 
+
377  /**
+
378  * Removes any non numeric characters from the string.
+
379  *
+
380  * @return TeamSpeak3_Helper_String
+
381  */
+
382  public function filterDigits()
+
383  {
+
384  $this->string = preg_replace("/[^[:digit:]]/", "", $this->string);
+
385 
+
386  return $this;
+
387  }
+
388 
+
389  /**
+
390  * Returns TRUE if the string is a numeric value.
+
391  *
+
392  * @return boolean
+
393  */
+
394  public function isInt()
+
395  {
+
396  return (is_numeric($this->string) && !$this->contains(".")) ? TRUE : FALSE;
+
397  }
+
398 
+
399  /**
+
400  * Returns the integer value of the string.
+
401  *
+
402  * @return float
+
403  * @return integer
+
404  */
+
405  public function toInt()
+
406  {
+
407  if($this->string == pow(2, 63) || $this->string == pow(2, 64))
+
408  {
+
409  return -1;
+
410  }
+
411 
+
412  return ($this->string > pow(2, 31)) ? floatval($this->string) : intval($this->string);
+
413  }
+
414 
+
415  /**
+
416  * Calculates and returns the crc32 polynomial of the string.
+
417  *
+
418  * @return string
+
419  */
+
420  public function toCrc32()
+
421  {
+
422  return crc32($this->string);
+
423  }
+
424 
+
425  /**
+
426  * Calculates and returns the md5 checksum of the string.
+
427  *
+
428  * @return string
+
429  */
+
430  public function toMd5()
+
431  {
+
432  return md5($this->string);
+
433  }
+
434 
+
435  /**
+
436  * Calculates and returns the sha1 checksum of the string.
+
437  *
+
438  * @return string
+
439  */
+
440  public function toSha1()
+
441  {
+
442  return sha1($this->string);
+
443  }
+
444 
+
445  /**
+
446  * Returns TRUE if the string is UTF-8 encoded. This method searches for non-ascii multibyte
+
447  * sequences in the UTF-8 range.
+
448  *
+
449  * @return boolean
+
450  */
+
451  public function isUtf8()
+
452  {
+
453  $pattern = array();
+
454 
+
455  $pattern[] = "[\xC2-\xDF][\x80-\xBF]"; // non-overlong 2-byte
+
456  $pattern[] = "\xE0[\xA0-\xBF][\x80-\xBF]"; // excluding overlongs
+
457  $pattern[] = "[\xE1-\xEC\xEE\xEF][\x80-\xBF]{2}"; // straight 3-byte
+
458  $pattern[] = "\xED[\x80-\x9F][\x80-\xBF]"; // excluding surrogates
+
459  $pattern[] = "\xF0[\x90-\xBF][\x80-\xBF]{2}"; // planes 1-3
+
460  $pattern[] = "[\xF1-\xF3][\x80-\xBF]{3}"; // planes 4-15
+
461  $pattern[] = "\xF4[\x80-\x8F][\x80-\xBF]{2}"; // plane 16
+
462 
+
463  return preg_match("%(?:" . implode("|", $pattern) . ")+%xs", $this->string);
+
464  }
+
465 
+
466  /**
+
467  * Converts the string to UTF-8.
+
468  *
+
469  * @return TeamSpeak3_Helper_String
+
470  */
+
471  public function toUtf8()
+
472  {
+
473  if(!$this->isUtf8())
+
474  {
+
475  $this->string = utf8_encode($this->string);
+
476  }
+
477 
+
478  return $this;
+
479  }
+
480 
+
481  /**
+
482  * Encodes the string with MIME base64 and returns the result.
+
483  *
+
484  * @return string
+
485  */
+
486  public function toBase64()
+
487  {
+
488  return base64_encode($this->string);
+
489  }
+
490 
+
491  /**
+
492  * Decodes the string with MIME base64 and returns the result as an TeamSpeak3_Helper_String
+
493  *
+
494  * @param string
+
495  * @return TeamSpeak3_Helper_String
+
496  */
+
497  public static function fromBase64($base64)
+
498  {
+
499  return new self(base64_decode($base64));
+
500  }
+
501 
+
502  /**
+
503  * Returns the hexadecimal value of the string.
+
504  *
+
505  * @return string
+
506  */
+
507  public function toHex()
+
508  {
+
509  $hex = "";
+
510 
+
511  foreach($this as $char)
+
512  {
+
513  $hex .= $char->toHex();
+
514  }
+
515 
+
516  return $hex;
+
517  }
+
518 
+
519  /**
+
520  * Returns the TeamSpeak3_Helper_String based on a given hex value.
+
521  *
+
522  * @param string
+
523  * @throws TeamSpeak3_Helper_Exception
+
524  * @return TeamSpeak3_Helper_String
+
525  */
+
526  public static function fromHex($hex)
+
527  {
+
528  $string = "";
+
529 
+
530  if(strlen($hex)%2 == 1)
+
531  {
+
532  throw new TeamSpeak3_Helper_Exception("given parameter '" . $hex . "' is not a valid hexadecimal number");
+
533  }
+
534 
+
535  foreach(str_split($hex, 2) as $chunk)
+
536  {
+
537  $string .= chr(hexdec($chunk));
+
538  }
+
539 
+
540  return new self($string);
+
541  }
+
542 
+
543  /**
+
544  * Returns the string transliterated from UTF-8 to Latin.
+
545  *
+
546  * @return TeamSpeak3_Helper_String
+
547  */
+
548  public function transliterate()
+
549  {
+
550  $utf8_accents = array(
+
551  "à" => "a",
+
552  "ô" => "o",
+
553  "Ä?" => "d",
+
554  "ḟ" => "f",
+
555  "ë" => "e",
+
556  "Å¡" => "s",
+
557  "Æ¡" => "o",
+
558  "ß" => "ss",
+
559  "ă" => "a",
+
560  "Å™" => "r",
+
561  "È›" => "t",
+
562  "ň" => "n",
+
563  "Ä?" => "a",
+
564  "Ä·" => "k",
+
565  "Å?" => "s",
+
566  "ỳ" => "y",
+
567  "ņ" => "n",
+
568  "ĺ" => "l",
+
569  "ħ" => "h",
+
570  "á¹—" => "p",
+
571  "ó" => "o",
+
572  "ú" => "u",
+
573  "Ä›" => "e",
+
574  "é" => "e",
+
575  "ç" => "c",
+
576  "áº?" => "w",
+
577  "Ä‹" => "c",
+
578  "õ" => "o",
+
579  "ṡ" => "s",
+
580  "ø" => "o",
+
581  "Ä£" => "g",
+
582  "ŧ" => "t",
+
583  "È™" => "s",
+
584  "Ä—" => "e",
+
585  "ĉ" => "c",
+
586  "Å›" => "s",
+
587  "î" => "i",
+
588  "ű" => "u",
+
589  "ć" => "c",
+
590  "Ä™" => "e",
+
591  "ŵ" => "w",
+
592  "ṫ" => "t",
+
593  "Å«" => "u",
+
594  "Ä?" => "c",
+
595  "ö" => "oe",
+
596  "è" => "e",
+
597  "Å·" => "y",
+
598  "Ä…" => "a",
+
599  "Å‚" => "l",
+
600  "ų" => "u",
+
601  "ů" => "u",
+
602  "ÅŸ" => "s",
+
603  "ÄŸ" => "g",
+
604  "ļ" => "l",
+
605  "Æ’" => "f",
+
606  "ž" => "z",
+
607  "ẃ" => "w",
+
608  "ḃ" => "b",
+
609  "Ã¥" => "a",
+
610  "ì" => "i",
+
611  "ï" => "i",
+
612  "ḋ" => "d",
+
613  "Å¥" => "t",
+
614  "Å—" => "r",
+
615  "ä" => "ae",
+
616  "í" => "i",
+
617  "Å•" => "r",
+
618  "ê" => "e",
+
619  "ü" => "ue",
+
620  "ò" => "o",
+
621  "Ä“" => "e",
+
622  "ñ" => "n",
+
623  "Å„" => "n",
+
624  "Ä¥" => "h",
+
625  "Ä?" => "g",
+
626  "Ä‘" => "d",
+
627  "ĵ" => "j",
+
628  "ÿ" => "y",
+
629  "Å©" => "u",
+
630  "Å­" => "u",
+
631  "ư" => "u",
+
632  "Å£" => "t",
+
633  "ý" => "y",
+
634  "Å‘" => "o",
+
635  "â" => "a",
+
636  "ľ" => "l",
+
637  "ẅ" => "w",
+
638  "ż" => "z",
+
639  "Ä«" => "i",
+
640  "ã" => "a",
+
641  "Ä¡" => "g",
+
642  "á¹?" => "m",
+
643  "Å?" => "o",
+
644  "Ä©" => "i",
+
645  "ù" => "u",
+
646  "į" => "i",
+
647  "ź" => "z",
+
648  "á" => "a",
+
649  "û" => "u",
+
650  "þ" => "th",
+
651  "ð" => "dh",
+
652  "æ" => "ae",
+
653  "µ" => "u",
+
654  "Ä•" => "e",
+
655  "Å“" => "oe",
+
656  "À" => "A",
+
657  "Ô" => "O",
+
658  "ÄŽ" => "D",
+
659  "Ḟ" => "F",
+
660  "Ë" => "E",
+
661  "Å " => "S",
+
662  "Æ " => "O",
+
663  "Ä‚" => "A",
+
664  "Ř" => "R",
+
665  "Èš" => "T",
+
666  "Ň" => "N",
+
667  "Ä€" => "A",
+
668  "Ķ" => "K",
+
669  "Åœ" => "S",
+
670  "Ỳ" => "Y",
+
671  "Å…" => "N",
+
672  "Ĺ" => "L",
+
673  "Ħ" => "H",
+
674  "á¹–" => "P",
+
675  "Ó" => "O",
+
676  "Ú" => "U",
+
677  "Äš" => "E",
+
678  "É" => "E",
+
679  "Ç" => "C",
+
680  "Ẁ" => "W",
+
681  "ÄŠ" => "C",
+
682  "Õ" => "O",
+
683  "á¹ " => "S",
+
684  "Ø" => "O",
+
685  "Ä¢" => "G",
+
686  "Ŧ" => "T",
+
687  "Ș" => "S",
+
688  "Ä–" => "E",
+
689  "Ĉ" => "C",
+
690  "Åš" => "S",
+
691  "ÃŽ" => "I",
+
692  "Ű" => "U",
+
693  "Ć" => "C",
+
694  "Ę" => "E",
+
695  "Å´" => "W",
+
696  "Ṫ" => "T",
+
697  "Ū" => "U",
+
698  "ÄŒ" => "C",
+
699  "Ö" => "Oe",
+
700  "È" => "E",
+
701  "Ŷ" => "Y",
+
702  "Ä„" => "A",
+
703  "Å?" => "L",
+
704  "Ų" => "U",
+
705  "Å®" => "U",
+
706  "Åž" => "S",
+
707  "Äž" => "G",
+
708  "Ä»" => "L",
+
709  "Æ‘" => "F",
+
710  "Ž" => "Z",
+
711  "Ẃ" => "W",
+
712  "Ḃ" => "B",
+
713  "Ã…" => "A",
+
714  "ÃŒ" => "I",
+
715  "Ã?" => "I",
+
716  "Ḋ" => "D",
+
717  "Ť" => "T",
+
718  "Å–" => "R",
+
719  "Ä" => "Ae",
+
720  "Ã?" => "I",
+
721  "Å”" => "R",
+
722  "Ê" => "E",
+
723  "Ü" => "Ue",
+
724  "Ã’" => "O",
+
725  "Ä’" => "E",
+
726  "Ñ" => "N",
+
727  "Ń" => "N",
+
728  "Ĥ" => "H",
+
729  "Äœ" => "G",
+
730  "Ä?" => "D",
+
731  "Ä´" => "J",
+
732  "Ÿ" => "Y",
+
733  "Ũ" => "U",
+
734  "Ŭ" => "U",
+
735  "Ư" => "U",
+
736  "Å¢" => "T",
+
737  "Ã?" => "Y",
+
738  "Å?" => "O",
+
739  "Â" => "A",
+
740  "Ľ" => "L",
+
741  "Ẅ" => "W",
+
742  "Å»" => "Z",
+
743  "Ī" => "I",
+
744  "Ã" => "A",
+
745  "Ä " => "G",
+
746  "á¹€" => "M",
+
747  "ÅŒ" => "O",
+
748  "Ĩ" => "I",
+
749  "Ù" => "U",
+
750  "Ä®" => "I",
+
751  "Ź" => "Z",
+
752  "Ã?" => "A",
+
753  "Û" => "U",
+
754  "Þ" => "Th",
+
755  "Ã?" => "Dh",
+
756  "Æ" => "Ae",
+
757  "Ä”" => "E",
+
758  "Å’" => "Oe",
+
759  );
+
760 
+
761  return new self($this->toUtf8()->replace(array_keys($utf8_accents), array_values($utf8_accents)));
+
762  }
+
763 
+
764  /**
+
765  * Processes the string and replaces all accented UTF-8 characters by unaccented ASCII-7 "equivalents",
+
766  * whitespaces are replaced by a pre-defined spacer and the string is lowercase.
+
767  *
+
768  * @param string $spacer
+
769  * @return TeamSpeak3_Helper_String
+
770  */
+
771  public function uriSafe($spacer = "-")
+
772  {
+
773  $this->string = str_replace($spacer, " ", $this->string);
+
774  $this->string = $this->transliterate();
+
775  $this->string = preg_replace("/(\s|[^A-Za-z0-9\-])+/", $spacer, trim(strtolower($this->string)));
+
776  $this->string = trim($this->string, $spacer);
+
777 
+
778  return new self($this->string);
+
779  }
+
780 
+
781  /**
+
782  * Replaces space characters with percent encoded strings.
+
783  *
+
784  * @return string
+
785  */
+
786  public function spaceToPercent()
+
787  {
+
788  return str_replace(" ", "%20", $this->string);
+
789  }
+
790 
+
791  /**
+
792  * Returns the string as a standard string
+
793  *
+
794  * @return string
+
795  */
+
796  public function toString()
+
797  {
+
798  return $this->string;
+
799  }
+
800 
+
801  /**
+
802  * Magical function that allows you to call PHP's built-in string functions on the TeamSpeak3_Helper_String object.
+
803  *
+
804  * @param string $function
+
805  * @param array $args
+
806  * @throws TeamSpeak3_Helper_Exception
+
807  * @return TeamSpeak3_Helper_String
+
808  */
+
809  public function __call($function, $args)
+
810  {
+
811  if(!function_exists($function))
+
812  {
+
813  throw new TeamSpeak3_Helper_Exception("cannot call undefined function '" . $function . "' on this object");
+
814  }
+
815 
+
816  if(count($args))
+
817  {
+
818  if(($key = array_search($this, $args, TRUE)) !== FALSE)
+
819  {
+
820  $args[$key] = $this->string;
+
821  }
+
822  else
+
823  {
+
824  throw new TeamSpeak3_Helper_Exception("cannot call undefined function '" . $function . "' without the " . __CLASS__ . " object parameter");
+
825  }
+
826 
+
827  $return = call_user_func_array($function, $args);
+
828  }
+
829  else
+
830  {
+
831  $return = call_user_func($function, $this->string);
+
832  }
+
833 
+
834  if(is_string($return))
+
835  {
+
836  $this->string = $return;
+
837  }
+
838  else
+
839  {
+
840  return $return;
+
841  }
+
842 
+
843  return $this;
+
844  }
+
845 
+
846  /**
+
847  * Returns the character as a standard string.
+
848  *
+
849  * @return string
+
850  */
+
851  public function __toString()
+
852  {
+
853  return (string) $this->string;
+
854  }
+
855 
+
856  /**
+
857  * @ignore
+
858  */
+
859  public function count()
+
860  {
+
861  return strlen($this->string);
+
862  }
+
863 
+
864  /**
+
865  * @ignore
+
866  */
+
867  public function rewind()
+
868  {
+
869  $this->position = 0;
+
870  }
+
871 
+
872  /**
+
873  * @ignore
+
874  */
+
875  public function valid()
+
876  {
+
877  return $this->position < $this->count();
+
878  }
+
879 
+
880  /**
+
881  * @ignore
+
882  */
+
883  public function key()
+
884  {
+
885  return $this->position;
+
886  }
+
887 
+
888  /**
+
889  * @ignore
+
890  */
+
891  public function current()
+
892  {
+
893  return new TeamSpeak3_Helper_Char($this->string{$this->position});
+
894  }
+
895 
+
896  /**
+
897  * @ignore
+
898  */
+
899  public function next()
+
900  {
+
901  $this->position++;
+
902  }
+
903 
+
904  /**
+
905  * @ignore
+
906  */
+
907  public function offsetExists($offset)
+
908  {
+
909  return ($offset < strlen($this->string)) ? TRUE : FALSE;
+
910  }
+
911 
+
912  /**
+
913  * @ignore
+
914  */
+
915  public function offsetGet($offset)
+
916  {
+
917  return ($this->offsetExists($offset)) ? new TeamSpeak3_Helper_Char($this->string{$offset}) : null;
+
918  }
+
919 
+
920  /**
+
921  * @ignore
+
922  */
+
923  public function offsetSet($offset, $value)
+
924  {
+
925  if(!$this->offsetExists($offset)) return;
+
926 
+
927  $this->string{$offset} = strval($value);
+
928  }
+
929 
+
930  /**
+
931  * @ignore
+
932  */
+
933  public function offsetUnset($offset)
+
934  {
+
935  if(!$this->offsetExists($offset)) return;
+
936 
+
937  $this->string = substr_replace($this->string, "", $offset, 1);
+
938  }
+
939 }
+
+
+ + + + diff --git a/lib/docs/html/_t_c_p_8php.html b/lib/docs/html/_t_c_p_8php.html new file mode 100644 index 0000000..8fd9930 --- /dev/null +++ b/lib/docs/html/_t_c_p_8php.html @@ -0,0 +1,156 @@ + + + + + + +TeamSpeak 3 PHP Framework: TeamSpeak3/Transport/TCP.php File Reference + + + + + + + + + + + + + +
+
+ + + + + + + +
+
TeamSpeak 3 PHP Framework +  1.1.23 +
+
Copyright © Planet TeamSpeak. All rights reserved.
+
+
+ + + + + +
+
+ +
+
+
+ +
+ + + + +
+ +
+ +
+ +
+
TCP.php File Reference
+
+
+ +

TeamSpeak 3 PHP Framework. +More...

+ +

Go to the source code of this file.

+ + + + + +

+Classes

class  TeamSpeak3_Transport_TCP
 Class for connecting to a remote server through TCP. More...
 
+ + + +

+Namespaces

 TeamSpeak3
 
+ + + +

+Constant Groups

 TeamSpeak3
 
+

Detailed Description

+

TeamSpeak 3 PHP Framework.

+
Id:
TCP.php 10/11/2013 11:35:22 scp
+

This program is free software: you can redistribute it and/or modify it under the terms of the GNU General Public License as published by the Free Software Foundation, either version 3 of the License, or (at your option) any later version.

+

This program is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License for more details.

+

You should have received a copy of the GNU General Public License along with this program. If not, see http://www.gnu.org/licenses/.

+ +

Definition in file TCP.php.

+
+
+ + + + diff --git a/lib/docs/html/_t_c_p_8php_source.html b/lib/docs/html/_t_c_p_8php_source.html new file mode 100644 index 0000000..797ebee --- /dev/null +++ b/lib/docs/html/_t_c_p_8php_source.html @@ -0,0 +1,301 @@ + + + + + + +TeamSpeak 3 PHP Framework: TeamSpeak3/Transport/TCP.php Source File + + + + + + + + + + + + + +
+
+ + + + + + + +
+
TeamSpeak 3 PHP Framework +  1.1.23 +
+
Copyright © Planet TeamSpeak. All rights reserved.
+
+
+ + + + + +
+
+ +
+
+
+ +
+ + + + +
+ +
+ +
+
+
TCP.php
+
+
+Go to the documentation of this file.
1 <?php
+
2 
+
3 /**
+
4  * @file
+
5  * TeamSpeak 3 PHP Framework
+
6  *
+
7  * $Id: TCP.php 10/11/2013 11:35:22 scp@orilla $
+
8  *
+
9  * This program is free software: you can redistribute it and/or modify
+
10  * it under the terms of the GNU General Public License as published by
+
11  * the Free Software Foundation, either version 3 of the License, or
+
12  * (at your option) any later version.
+
13  *
+
14  * This program is distributed in the hope that it will be useful,
+
15  * but WITHOUT ANY WARRANTY; without even the implied warranty of
+
16  * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+
17  * GNU General Public License for more details.
+
18  *
+
19  * You should have received a copy of the GNU General Public License
+
20  * along with this program. If not, see <http://www.gnu.org/licenses/>.
+
21  *
+
22  * @package TeamSpeak3
+
23  * @version 1.1.23
+
24  * @author Sven 'ScP' Paulsen
+
25  * @copyright Copyright (c) 2010 by Planet TeamSpeak. All rights reserved.
+
26  */
+
27 
+
28 /**
+
29  * @class TeamSpeak3_Transport_TCP
+
30  * @brief Class for connecting to a remote server through TCP.
+
31  */
+ +
33 {
+
34  /**
+
35  * Connects to a remote server.
+
36  *
+
37  * @throws TeamSpeak3_Transport_Exception
+
38  * @return void
+
39  */
+
40  public function connect()
+
41  {
+
42  if($this->stream !== null) return;
+
43 
+
44  $host = strval($this->config["host"]);
+
45  $port = strval($this->config["port"]);
+
46 
+
47  $address = "tcp://" . $host . ":" . $port;
+
48  $timeout = intval($this->config["timeout"]);
+
49 
+
50  $this->stream = @stream_socket_client($address, $errno, $errstr, $timeout);
+
51 
+
52  if($this->stream === FALSE)
+
53  {
+
54  throw new TeamSpeak3_Transport_Exception(TeamSpeak3_Helper_String::factory($errstr)->toUtf8()->toString(), $errno);
+
55  }
+
56 
+
57  @stream_set_timeout($this->stream, $timeout);
+
58  @stream_set_blocking($this->stream, $this->config["blocking"] ? 1 : 0);
+
59  }
+
60 
+
61  /**
+
62  * Disconnects from a remote server.
+
63  *
+
64  * @return void
+
65  */
+
66  public function disconnect()
+
67  {
+
68  if($this->stream === null) return;
+
69 
+
70  $this->stream = null;
+
71 
+
72  TeamSpeak3_Helper_Signal::getInstance()->emit(strtolower($this->getAdapterType()) . "Disconnected");
+
73  }
+
74 
+
75  /**
+
76  * Reads data from the stream.
+
77  *
+
78  * @param integer $length
+
79  * @throws TeamSpeak3_Transport_Exception
+
80  * @return TeamSpeak3_Helper_String
+
81  */
+
82  public function read($length = 4096)
+
83  {
+
84  $this->connect();
+
85  $this->waitForReadyRead();
+
86 
+
87  $data = @stream_get_contents($this->stream, $length);
+
88 
+
89  TeamSpeak3_Helper_Signal::getInstance()->emit(strtolower($this->getAdapterType()) . "DataRead", $data);
+
90 
+
91  if($data === FALSE)
+
92  {
+
93  throw new TeamSpeak3_Transport_Exception("connection to server '" . $this->config["host"] . ":" . $this->config["port"] . "' lost");
+
94  }
+
95 
+
96  return new TeamSpeak3_Helper_String($data);
+
97  }
+
98 
+
99  /**
+
100  * Reads a single line of data from the stream.
+
101  *
+
102  * @param string $token
+
103  * @throws TeamSpeak3_Transport_Exception
+
104  * @return TeamSpeak3_Helper_String
+
105  */
+
106  public function readLine($token = "\n")
+
107  {
+
108  $this->connect();
+
109 
+ +
111 
+
112  while(!$line->endsWith($token))
+
113  {
+
114  $this->waitForReadyRead();
+
115 
+
116  $data = @fgets($this->stream, 4096);
+
117 
+
118  TeamSpeak3_Helper_Signal::getInstance()->emit(strtolower($this->getAdapterType()) . "DataRead", $data);
+
119 
+
120  if($data === FALSE)
+
121  {
+
122  if($line->count())
+
123  {
+
124  $line->append($token);
+
125  }
+
126  else
+
127  {
+
128  throw new TeamSpeak3_Transport_Exception("connection to server '" . $this->config["host"] . ":" . $this->config["port"] . "' lost");
+
129  }
+
130  }
+
131  else
+
132  {
+
133  $line->append($data);
+
134  }
+
135  }
+
136 
+
137  return $line->trim();
+
138  }
+
139 
+
140  /**
+
141  * Writes data to the stream.
+
142  *
+
143  * @param string $data
+
144  * @return void
+
145  */
+
146  public function send($data)
+
147  {
+
148  $this->connect();
+
149 
+
150  @stream_socket_sendto($this->stream, $data);
+
151 
+
152  TeamSpeak3_Helper_Signal::getInstance()->emit(strtolower($this->getAdapterType()) . "DataSend", $data);
+
153  }
+
154 
+
155  /**
+
156  * Writes a line of data to the stream.
+
157  *
+
158  * @param string $data
+
159  * @param string $separator
+
160  * @return void
+
161  */
+
162  public function sendLine($data, $separator = "\n")
+
163  {
+
164  $size = strlen($data);
+
165  $pack = 4096;
+
166 
+
167  for($seek = 0 ;$seek < $size;)
+
168  {
+
169  $rest = $size-$seek;
+
170  $pack = $rest < $pack ? $rest : $pack;
+
171  $buff = substr($data, $seek, $pack);
+
172  $seek = $seek+$pack;
+
173 
+
174  if($seek >= $size) $buff .= $separator;
+
175 
+
176  $this->send($buff);
+
177  }
+
178  }
+
179 }
+
+
+ + + + diff --git a/lib/docs/html/_t_s_d_n_s_8php.html b/lib/docs/html/_t_s_d_n_s_8php.html new file mode 100644 index 0000000..632492a --- /dev/null +++ b/lib/docs/html/_t_s_d_n_s_8php.html @@ -0,0 +1,156 @@ + + + + + + +TeamSpeak 3 PHP Framework: TeamSpeak3/Adapter/TSDNS.php File Reference + + + + + + + + + + + + + +
+
+ + + + + + + +
+
TeamSpeak 3 PHP Framework +  1.1.23 +
+
Copyright © Planet TeamSpeak. All rights reserved.
+
+
+ + + + + +
+
+ +
+
+
+ +
+ + + + +
+ +
+ +
+ +
+
TSDNS.php File Reference
+
+
+ +

TeamSpeak 3 PHP Framework. +More...

+ +

Go to the source code of this file.

+ + + + + +

+Classes

class  TeamSpeak3_Adapter_TSDNS
 Provides methods to query a TSDNS server. More...
 
+ + + +

+Namespaces

 TeamSpeak3
 
+ + + +

+Constant Groups

 TeamSpeak3
 
+

Detailed Description

+

TeamSpeak 3 PHP Framework.

+
Id:
TSDNS.php 10/11/2013 11:35:21 scp
+

This program is free software: you can redistribute it and/or modify it under the terms of the GNU General Public License as published by the Free Software Foundation, either version 3 of the License, or (at your option) any later version.

+

This program is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License for more details.

+

You should have received a copy of the GNU General Public License along with this program. If not, see http://www.gnu.org/licenses/.

+ +

Definition in file TSDNS.php.

+
+
+ + + + diff --git a/lib/docs/html/_t_s_d_n_s_8php_source.html b/lib/docs/html/_t_s_d_n_s_8php_source.html new file mode 100644 index 0000000..e5a758a --- /dev/null +++ b/lib/docs/html/_t_s_d_n_s_8php_source.html @@ -0,0 +1,217 @@ + + + + + + +TeamSpeak 3 PHP Framework: TeamSpeak3/Adapter/TSDNS.php Source File + + + + + + + + + + + + + +
+
+ + + + + + + +
+
TeamSpeak 3 PHP Framework +  1.1.23 +
+
Copyright © Planet TeamSpeak. All rights reserved.
+
+
+ + + + + +
+
+ +
+
+
+ +
+ + + + +
+ +
+ +
+
+
TSDNS.php
+
+
+Go to the documentation of this file.
1 <?php
+
2 
+
3 /**
+
4  * @file
+
5  * TeamSpeak 3 PHP Framework
+
6  *
+
7  * $Id: TSDNS.php 10/11/2013 11:35:21 scp@orilla $
+
8  *
+
9  * This program is free software: you can redistribute it and/or modify
+
10  * it under the terms of the GNU General Public License as published by
+
11  * the Free Software Foundation, either version 3 of the License, or
+
12  * (at your option) any later version.
+
13  *
+
14  * This program is distributed in the hope that it will be useful,
+
15  * but WITHOUT ANY WARRANTY; without even the implied warranty of
+
16  * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+
17  * GNU General Public License for more details.
+
18  *
+
19  * You should have received a copy of the GNU General Public License
+
20  * along with this program. If not, see <http://www.gnu.org/licenses/>.
+
21  *
+
22  * @package TeamSpeak3
+
23  * @version 1.1.23
+
24  * @author Sven 'ScP' Paulsen
+
25  * @copyright Copyright (c) 2010 by Planet TeamSpeak. All rights reserved.
+
26  */
+
27 
+
28 /**
+
29  * @class TeamSpeak3_Adapter_TSDNS
+
30  * @brief Provides methods to query a TSDNS server.
+
31  */
+ +
33 {
+
34  /**
+
35  * The TCP port number used by any TSDNS server.
+
36  *
+
37  * @var integer
+
38  */
+
39  protected $default_port = 41144;
+
40 
+
41  /**
+
42  * Connects the TeamSpeak3_Transport_Abstract object and performs initial actions on the remote
+
43  * server.
+
44  *
+
45  * @throws TeamSpeak3_Adapter_Exception
+
46  * @return void
+
47  */
+
48  public function syn()
+
49  {
+
50  if(!isset($this->options["port"]) || empty($this->options["port"])) $this->options["port"] = $this->default_port;
+
51 
+
52  $this->initTransport($this->options);
+
53  $this->transport->setAdapter($this);
+
54 
+
55  TeamSpeak3_Helper_Profiler::init(spl_object_hash($this));
+
56 
+
57  TeamSpeak3_Helper_Signal::getInstance()->emit("tsdnsConnected", $this);
+
58  }
+
59 
+
60  /**
+
61  * The TeamSpeak3_Adapter_FileTransfer destructor.
+
62  *
+
63  * @return void
+
64  */
+
65  public function __destruct()
+
66  {
+
67  if($this->getTransport() instanceof TeamSpeak3_Transport_Abstract && $this->getTransport()->isConnected())
+
68  {
+
69  $this->getTransport()->disconnect();
+
70  }
+
71  }
+
72 
+
73  /**
+
74  * Queries the TSDNS server for a specified virtual hostname and returns the result.
+
75  *
+
76  * @param string $tsdns
+
77  * @throws TeamSpeak3_Adapter_TSDNS_Exception
+
78  * @return TeamSpeak3_Helper_String
+
79  */
+
80  public function resolve($tsdns)
+
81  {
+
82  $this->getTransport()->sendLine($tsdns);
+
83  $repl = $this->getTransport()->readLine();
+
84  $this->getTransport()->disconnect();
+
85 
+
86  if($repl->section(":", 0)->toInt() == 404)
+
87  {
+
88  throw new TeamSpeak3_Adapter_TSDNS_Exception("unable to resolve TSDNS hostname (" . $tsdns . ")");
+
89  }
+
90 
+
91  TeamSpeak3_Helper_Signal::getInstance()->emit("tsdnsResolved", $tsdns, $repl);
+
92 
+
93  return $repl;
+
94  }
+
95 }
+
+
+ + + + diff --git a/lib/docs/html/_team_speak3_8php.html b/lib/docs/html/_team_speak3_8php.html new file mode 100644 index 0000000..3bc177e --- /dev/null +++ b/lib/docs/html/_team_speak3_8php.html @@ -0,0 +1,156 @@ + + + + + + +TeamSpeak 3 PHP Framework: TeamSpeak3/TeamSpeak3.php File Reference + + + + + + + + + + + + + +
+
+ + + + + + + +
+
TeamSpeak 3 PHP Framework +  1.1.23 +
+
Copyright © Planet TeamSpeak. All rights reserved.
+
+
+ + + + + +
+
+ +
+
+
+ +
+ + + + +
+ +
+ +
+ +
+
TeamSpeak3.php File Reference
+
+
+ +

TeamSpeak 3 PHP Framework. +More...

+ +

Go to the source code of this file.

+ + + + + +

+Classes

class  TeamSpeak3
 Factory class all for TeamSpeak 3 PHP Framework objects. More...
 
+ + + +

+Namespaces

 TeamSpeak3
 
+ + + +

+Constant Groups

 TeamSpeak3
 
+

Detailed Description

+

TeamSpeak 3 PHP Framework.

+
Id:
TeamSpeak3.php 10/11/2013 11:35:21 scp
+

This program is free software: you can redistribute it and/or modify it under the terms of the GNU General Public License as published by the Free Software Foundation, either version 3 of the License, or (at your option) any later version.

+

This program is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License for more details.

+

You should have received a copy of the GNU General Public License along with this program. If not, see http://www.gnu.org/licenses/.

+ +

Definition in file TeamSpeak3.php.

+
+
+ + + + diff --git a/lib/docs/html/_team_speak3_8php_source.html b/lib/docs/html/_team_speak3_8php_source.html new file mode 100644 index 0000000..77ee66a --- /dev/null +++ b/lib/docs/html/_team_speak3_8php_source.html @@ -0,0 +1,1103 @@ + + + + + + +TeamSpeak 3 PHP Framework: TeamSpeak3/TeamSpeak3.php Source File + + + + + + + + + + + + + +
+
+ + + + + + + +
+
TeamSpeak 3 PHP Framework +  1.1.23 +
+
Copyright © Planet TeamSpeak. All rights reserved.
+
+
+ + + + + +
+
+ +
+
+
+ +
+ + + + +
+ +
+ +
+
+
TeamSpeak3.php
+
+
+Go to the documentation of this file.
1 <?php
+
2 
+
3 /**
+
4  * @file
+
5  * TeamSpeak 3 PHP Framework
+
6  *
+
7  * $Id: TeamSpeak3.php 10/11/2013 11:35:21 scp@orilla $
+
8  *
+
9  * This program is free software: you can redistribute it and/or modify
+
10  * it under the terms of the GNU General Public License as published by
+
11  * the Free Software Foundation, either version 3 of the License, or
+
12  * (at your option) any later version.
+
13  *
+
14  * This program is distributed in the hope that it will be useful,
+
15  * but WITHOUT ANY WARRANTY; without even the implied warranty of
+
16  * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+
17  * GNU General Public License for more details.
+
18  *
+
19  * You should have received a copy of the GNU General Public License
+
20  * along with this program. If not, see <http://www.gnu.org/licenses/>.
+
21  *
+
22  * @package TeamSpeak3
+
23  * @version 1.1.23
+
24  * @author Sven 'ScP' Paulsen
+
25  * @copyright Copyright (c) 2010 by Planet TeamSpeak. All rights reserved.
+
26  */
+
27 
+
28 /**
+
29  * @class TeamSpeak3
+
30  * @brief Factory class all for TeamSpeak 3 PHP Framework objects.
+
31  */
+ +
33 {
+
34  /**
+
35  * TeamSpeak 3 protocol welcome message.
+
36  */
+
37  const READY = "TS3";
+
38 
+
39  /**
+
40  * TeamSpeak 3 protocol greeting message prefix.
+
41  */
+
42  const GREET = "Welcome";
+
43 
+
44  /**
+
45  * TeamSpeak 3 protocol error message prefix.
+
46  */
+
47  const ERROR = "error";
+
48 
+
49  /**
+
50  * TeamSpeak 3 protocol event message prefix.
+
51  */
+
52  const EVENT = "notify";
+
53 
+
54  /**
+
55  * TeamSpeak 3 protocol server connection handler ID prefix.
+
56  */
+
57  const SCHID = "selected";
+
58 
+
59  /**
+
60  * TeamSpeak 3 PHP Framework version.
+
61  */
+
62  const LIB_VERSION = "1.1.23";
+
63 
+
64  /*@
+
65  * TeamSpeak 3 protocol separators.
+
66  */
+
67  const SEPARATOR_LINE = "\n"; //!< protocol line separator
+
68  const SEPARATOR_LIST = "|"; //!< protocol list separator
+
69  const SEPARATOR_CELL = " "; //!< protocol cell separator
+
70  const SEPARATOR_PAIR = "="; //!< protocol pair separator
+
71 
+
72  /*@
+
73  * TeamSpeak 3 log levels.
+
74  */
+
75  const LOGLEVEL_CRITICAL = 0x00; //!< 0: these messages stop the program
+
76  const LOGLEVEL_ERROR = 0x01; //!< 1: everything that is really bad
+
77  const LOGLEVEL_WARNING = 0x02; //!< 2: everything that might be bad
+
78  const LOGLEVEL_DEBUG = 0x03; //!< 3: output that might help find a problem
+
79  const LOGLEVEL_INFO = 0x04; //!< 4: informational output
+
80  const LOGLEVEL_DEVEL = 0x05; //!< 5: development output
+
81 
+
82  /*@
+
83  * TeamSpeak 3 token types.
+
84  */
+
85  const TOKEN_SERVERGROUP = 0x00; //!< 0: server group token (id1={groupID} id2=0)
+
86  const TOKEN_CHANNELGROUP = 0x01; //!< 1: channel group token (id1={groupID} id2={channelID})
+
87 
+
88  /*@
+
89  * TeamSpeak 3 codec identifiers.
+
90  */
+
91  const CODEC_SPEEX_NARROWBAND = 0x00; //!< 0: speex narrowband (mono, 16bit, 8kHz)
+
92  const CODEC_SPEEX_WIDEBAND = 0x01; //!< 1: speex wideband (mono, 16bit, 16kHz)
+
93  const CODEC_SPEEX_ULTRAWIDEBAND = 0x02; //!< 2: speex ultra-wideband (mono, 16bit, 32kHz)
+
94  const CODEC_CELT_MONO = 0x03; //!< 3: celt mono (mono, 16bit, 48kHz)
+
95  const CODEC_OPUS_VOICE = 0x04; //!< 3: opus voice (interactive)
+
96  const CODEC_OPUS_MUSIC = 0x05; //!< 3: opus music (interactive)
+
97 
+
98  /*@
+
99  * TeamSpeak 3 codec encryption modes.
+
100  */
+
101  const CODEC_CRYPT_INDIVIDUAL = 0x00; //!< 0: configure per channel
+
102  const CODEC_CRYPT_DISABLED = 0x01; //!< 1: globally disabled
+
103  const CODEC_CRYPT_ENABLED = 0x02; //!< 2: globally enabled
+
104 
+
105  /*@
+
106  * TeamSpeak 3 kick reason types.
+
107  */
+
108  const KICK_CHANNEL = 0x04; //!< 4: kick client from channel
+
109  const KICK_SERVER = 0x05; //!< 5: kick client from server
+
110 
+
111  /*@
+
112  * TeamSpeak 3 text message target modes.
+
113  */
+
114  const TEXTMSG_CLIENT = 0x01; //!< 1: target is a client
+
115  const TEXTMSG_CHANNEL = 0x02; //!< 2: target is a channel
+
116  const TEXTMSG_SERVER = 0x03; //!< 3: target is a virtual server
+
117 
+
118  /*@
+
119  * TeamSpeak 3 plugin command target modes.
+
120  */
+
121  const PLUGINCMD_CHANNEL = 0x01; //!< 1: send plugincmd to all clients in current channel
+
122  const PLUGINCMD_SERVER = 0x02; //!< 2: send plugincmd to all clients on server
+
123  const PLUGINCMD_CLIENT = 0x03; //!< 3: send plugincmd to all given client ids
+
124  const PLUGINCMD_CHANNEL_SUBSCRIBED = 0x04; //!< 4: send plugincmd to all subscribed clients in current channel
+
125 
+
126  /*@
+
127  * TeamSpeak 3 host message modes.
+
128  */
+
129  const HOSTMSG_NONE = 0x00; //!< 0: display no message
+
130  const HOSTMSG_LOG = 0x01; //!< 1: display message in chatlog
+
131  const HOSTMSG_MODAL = 0x02; //!< 2: display message in modal dialog
+
132  const HOSTMSG_MODALQUIT = 0x03; //!< 3: display message in modal dialog and close connection
+
133 
+
134  /*@
+
135  * TeamSpeak 3 host banner modes.
+
136  */
+
137  const HOSTBANNER_NO_ADJUST = 0x00; //!< 0: do not adjust
+
138  const HOSTBANNER_IGNORE_ASPECT = 0x01; //!< 1: adjust but ignore aspect ratio
+
139  const HOSTBANNER_KEEP_ASPECT = 0x02; //!< 2: adjust and keep aspect ratio
+
140 
+
141  /*@
+
142  * TeamSpeak 3 client identification types.
+
143  */
+
144  const CLIENT_TYPE_REGULAR = 0x00; //!< 0: regular client
+
145  const CLIENT_TYPE_SERVERQUERY = 0x01; //!< 1: query client
+
146 
+
147  /*@
+
148  * TeamSpeak 3 permission group database types.
+
149  */
+
150  const GROUP_DBTYPE_TEMPLATE = 0x00; //!< 0: template group (used for new virtual servers)
+
151  const GROUP_DBTYPE_REGULAR = 0x01; //!< 1: regular group (used for regular clients)
+
152  const GROUP_DBTYPE_SERVERQUERY = 0x02; //!< 2: global query group (used for ServerQuery clients)
+
153 
+
154  /*@
+
155  * TeamSpeak 3 permission group name modes.
+
156  */
+
157  const GROUP_NAMEMODE_HIDDEN = 0x00; //!< 0: display no name
+
158  const GROUP_NAMEMODE_BEFORE = 0x01; //!< 1: display name before client nickname
+
159  const GROUP_NAMEMODE_BEHIND = 0x02; //!< 2: display name after client nickname
+
160 
+
161  /*@
+
162  * TeamSpeak 3 permission group identification types.
+
163  */
+
164  const GROUP_IDENTIFIY_STRONGEST = 0x01; //!< 1: identify most powerful group
+
165  const GROUP_IDENTIFIY_WEAKEST = 0x02; //!< 2: identify weakest group
+
166 
+
167  /*@
+
168  * TeamSpeak 3 permission types.
+
169  */
+
170  const PERM_TYPE_SERVERGROUP = 0x00; //!< 0: server group permission
+
171  const PERM_TYPE_CLIENT = 0x01; //!< 1: client specific permission
+
172  const PERM_TYPE_CHANNEL = 0x02; //!< 2: channel specific permission
+
173  const PERM_TYPE_CHANNELGROUP = 0x03; //!< 3: channel group permission
+
174  const PERM_TYPE_CHANNELCLIENT = 0x04; //!< 4: channel-client specific permission
+
175 
+
176  /*@
+
177  * TeamSpeak 3 permission categories.
+
178  */
+
179  const PERM_CAT_GLOBAL = 0x10; //!< 00010000: global permissions
+
180  const PERM_CAT_GLOBAL_INFORMATION = 0x11; //!< 00010001: global permissions -> global information
+
181  const PERM_CAT_GLOBAL_SERVER_MGMT = 0x12; //!< 00010010: global permissions -> virtual server management
+
182  const PERM_CAT_GLOBAL_ADM_ACTIONS = 0x13; //!< 00010011: global permissions -> global administrative actions
+
183  const PERM_CAT_GLOBAL_SETTINGS = 0x14; //!< 00010100: global permissions -> global settings
+
184  const PERM_CAT_SERVER = 0x20; //!< 00100000: virtual server permissions
+
185  const PERM_CAT_SERVER_INFORMATION = 0x21; //!< 00100001: virtual server permissions -> virtual server information
+
186  const PERM_CAT_SERVER_ADM_ACTIONS = 0x22; //!< 00100010: virtual server permissions -> virtual server administrative actions
+
187  const PERM_CAT_SERVER_SETTINGS = 0x23; //!< 00100011: virtual server permissions -> virtual server settings
+
188  const PERM_CAT_CHANNEL = 0x30; //!< 00110000: channel permissions
+
189  const PERM_CAT_CHANNEL_INFORMATION = 0x31; //!< 00110001: channel permissions -> channel information
+
190  const PERM_CAT_CHANNEL_CREATE = 0x32; //!< 00110010: channel permissions -> create channels
+
191  const PERM_CAT_CHANNEL_MODIFY = 0x33; //!< 00110011: channel permissions -> edit channels
+
192  const PERM_CAT_CHANNEL_DELETE = 0x34; //!< 00110100: channel permissions -> delete channels
+
193  const PERM_CAT_CHANNEL_ACCESS = 0x35; //!< 00110101: channel permissions -> access channels
+
194  const PERM_CAT_GROUP = 0x40; //!< 01000000: group permissions
+
195  const PERM_CAT_GROUP_INFORMATION = 0x41; //!< 01000001: group permissions -> group information
+
196  const PERM_CAT_GROUP_CREATE = 0x42; //!< 01000010: group permissions -> create groups
+
197  const PERM_CAT_GROUP_MODIFY = 0x43; //!< 01000011: group permissions -> edit groups
+
198  const PERM_CAT_GROUP_DELETE = 0x44; //!< 01000100: group permissions -> delete groups
+
199  const PERM_CAT_CLIENT = 0x50; //!< 01010000: client permissions
+
200  const PERM_CAT_CLIENT_INFORMATION = 0x51; //!< 01010001: client permissions -> client information
+
201  const PERM_CAT_CLIENT_ADM_ACTIONS = 0x52; //!< 01010010: client permissions -> client administrative actions
+
202  const PERM_CAT_CLIENT_BASICS = 0x53; //!< 01010011: client permissions -> client basic communication
+
203  const PERM_CAT_CLIENT_MODIFY = 0x54; //!< 01010100: client permissions -> edit clients
+
204  const PERM_CAT_FILETRANSFER = 0x60; //!< 01100000: file transfer permissions
+
205  const PERM_CAT_NEEDED_MODIFY_POWER = 0xFF; //!< 11111111: needed permission modify power (grant) permissions
+
206 
+
207  /*@
+
208  * TeamSpeak 3 file types.
+
209  */
+
210  const FILE_TYPE_DIRECTORY = 0x00; //!< 0: file is directory
+
211  const FILE_TYPE_REGULAR = 0x01; //!< 1: file is regular
+
212 
+
213  /*@
+
214  * TeamSpeak 3 server snapshot types.
+
215  */
+
216  const SNAPSHOT_STRING = 0x00; //!< 0: default string
+
217  const SNAPSHOT_BASE64 = 0x01; //!< 1: base64 string
+
218  const SNAPSHOT_HEXDEC = 0x02; //!< 2: hexadecimal string
+
219 
+
220  /*@
+
221  * TeamSpeak 3 channel spacer types.
+
222  */
+
223  const SPACER_SOLIDLINE = 0x00; //!< 0: solid line
+
224  const SPACER_DASHLINE = 0x01; //!< 1: dash line
+
225  const SPACER_DOTLINE = 0x02; //!< 2: dot line
+
226  const SPACER_DASHDOTLINE = 0x03; //!< 3: dash dot line
+
227  const SPACER_DASHDOTDOTLINE = 0x04; //!< 4: dash dot dot line
+
228  const SPACER_CUSTOM = 0x05; //!< 5: custom format
+
229 
+
230  /*@
+
231  * TeamSpeak 3 channel spacer alignments.
+
232  */
+
233  const SPACER_ALIGN_LEFT = 0x00; //!< 0: alignment left
+
234  const SPACER_ALIGN_RIGHT = 0x01; //!< 1: alignment right
+
235  const SPACER_ALIGN_CENTER = 0x02; //!< 2: alignment center
+
236  const SPACER_ALIGN_REPEAT = 0x03; //!< 3: repeat until the whole line is filled
+
237 
+
238  /*@
+
239  * TeamSpeak 3 reason identifiers.
+
240  */
+
241  const REASON_NONE = 0x00; //!< 0: no reason
+
242  const REASON_MOVE = 0x01; //!< 1: channel switched or moved
+
243  const REASON_SUBSCRIPTION = 0x02; //!< 2: subscription added or removed
+
244  const REASON_TIMEOUT = 0x03; //!< 3: client connection timed out
+
245  const REASON_CHANNEL_KICK = 0x04; //!< 4: client kicked from channel
+
246  const REASON_SERVER_KICK = 0x05; //!< 5: client kicked from server
+
247  const REASON_SERVER_BAN = 0x06; //!< 6: client banned from server
+
248  const REASON_SERVER_STOP = 0x07; //!< 7: server stopped
+
249  const REASON_DISCONNECT = 0x08; //!< 8: client disconnected
+
250  const REASON_CHANNEL_UPDATE = 0x09; //!< 9: channel information updated
+
251  const REASON_CHANNEL_EDIT = 0x0A; //!< 10: channel information edited
+
252  const REASON_DISCONNECT_SHUTDOWN = 0x0B; //!< 11: client disconnected on server shutdown
+
253 
+
254  /**
+
255  * Stores an array containing various chars which need to be escaped while communicating
+
256  * with a TeamSpeak 3 Server.
+
257  *
+
258  * @var array
+
259  */
+
260  protected static $escape_patterns = array(
+
261  "\\" => "\\\\", // backslash
+
262  "/" => "\\/", // slash
+
263  " " => "\\s", // whitespace
+
264  "|" => "\\p", // pipe
+
265  ";" => "\\;", // semicolon
+
266  "\a" => "\\a", // bell
+
267  "\b" => "\\b", // backspace
+
268  "\f" => "\\f", // formfeed
+
269  "\n" => "\\n", // newline
+
270  "\r" => "\\r", // carriage return
+
271  "\t" => "\\t", // horizontal tab
+
272  "\v" => "\\v" // vertical tab
+
273  );
+
274 
+
275  /**
+
276  * Factory for TeamSpeak3_Adapter_Abstract classes. $uri must be formatted as
+
277  * "<adapter>://<user>:<pass>@<host>:<port>/<options>#<flags>". All parameters
+
278  * except adapter, host and port are optional.
+
279  *
+
280  * === Supported Options ===
+
281  * - timeout
+
282  * - blocking
+
283  * - nickname
+
284  * - no_query_clients
+
285  * - use_offline_as_virtual
+
286  * - clients_before_channels
+
287  * - server_id|server_uid|server_port|server_name|server_tsdns
+
288  * - channel_id|channel_name
+
289  * - client_id|client_uid|client_name
+
290  *
+
291  * === Supported Flags (only one per $uri) ===
+
292  * - no_query_clients
+
293  * - use_offline_as_virtual
+
294  * - clients_before_channels
+
295  *
+
296  * === URI Examples ===
+
297  * - serverquery://127.0.0.1:10011/
+
298  * - serverquery://127.0.0.1:10011/?server_port=9987&channel_id=1
+
299  * - serverquery://127.0.0.1:10011/?server_port=9987&channel_id=1#no_query_clients
+
300  * - serverquery://127.0.0.1:10011/?server_port=9987&client_name=ScP
+
301  * - filetransfer://127.0.0.1:30011/
+
302  * - blacklist
+
303  * - update
+
304  *
+
305  * @param string $uri
+
306  * @return TeamSpeak3_Adapter_Abstract
+
307  * @return TeamSpeak3_Node_Abstract
+
308  */
+
309  public static function factory($uri)
+
310  {
+
311  self::init();
+
312 
+
313  $uri = new TeamSpeak3_Helper_Uri($uri);
+
314 
+
315  $adapter = self::getAdapterName($uri->getScheme());
+
316  $options = array("host" => $uri->getHost(), "port" => $uri->getPort(), "timeout" => intval($uri->getQueryVar("timeout", 10)), "blocking" => intval($uri->getQueryVar("blocking", 1)));
+
317 
+
318  self::loadClass($adapter);
+
319 
+
320  $object = new $adapter($options);
+
321 
+
322  if($object instanceof TeamSpeak3_Adapter_ServerQuery)
+
323  {
+
324  $node = $object->getHost();
+
325 
+
326  if($uri->hasUser() && $uri->hasPass())
+
327  {
+
328  $node->login($uri->getUser(), $uri->getPass());
+
329  }
+
330 
+
331  /* option to pre-define nickname */
+
332  if($uri->hasQueryVar("nickname"))
+
333  {
+
334  $node->setPredefinedQueryName($uri->getQueryVar("nickname"));
+
335  }
+
336 
+
337  /* flag to use offline servers in virtual mode */
+
338  if($uri->getFragment() == "use_offline_as_virtual")
+
339  {
+
340  $node->setUseOfflineAsVirtual(TRUE);
+
341  }
+
342  elseif($uri->hasQueryVar("use_offline_as_virtual"))
+
343  {
+
344  $node->setUseOfflineAsVirtual($uri->getQueryVar("use_offline_as_virtual") ? TRUE : FALSE);
+
345  }
+
346 
+
347  /* flag to fetch clients before sub-channels */
+
348  if($uri->getFragment() == "clients_before_channels")
+
349  {
+
350  $node->setLoadClientlistFirst(TRUE);
+
351  }
+
352  elseif($uri->hasQueryVar("clients_before_channels"))
+
353  {
+
354  $node->setLoadClientlistFirst($uri->getQueryVar("clients_before_channels") ? TRUE : FALSE);
+
355  }
+
356 
+
357  /* flag to hide ServerQuery clients */
+
358  if($uri->getFragment() == "no_query_clients")
+
359  {
+
360  $node->setExcludeQueryClients(TRUE);
+
361  }
+
362  elseif($uri->hasQueryVar("no_query_clients"))
+
363  {
+
364  $node->setExcludeQueryClients($uri->getQueryVar("no_query_clients") ? TRUE : FALSE);
+
365  }
+
366 
+
367  /* access server node object */
+
368  if($uri->hasQueryVar("server_id"))
+
369  {
+
370  $node = $node->serverGetById($uri->getQueryVar("server_id"));
+
371  }
+
372  elseif($uri->hasQueryVar("server_uid"))
+
373  {
+
374  $node = $node->serverGetByUid($uri->getQueryVar("server_uid"));
+
375  }
+
376  elseif($uri->hasQueryVar("server_port"))
+
377  {
+
378  $node = $node->serverGetByPort($uri->getQueryVar("server_port"));
+
379  }
+
380  elseif($uri->hasQueryVar("server_name"))
+
381  {
+
382  $node = $node->serverGetByName($uri->getQueryVar("server_name"));
+
383  }
+
384  elseif($uri->hasQueryVar("server_tsdns"))
+
385  {
+
386  $node = $node->serverGetByTSDNS($uri->getQueryVar("server_tsdns"));
+
387  }
+
388 
+
389  /* direct access to node objects */
+
390  if($node instanceof TeamSpeak3_Node_Server)
+
391  {
+
392  /* access channel node object */
+
393  if($uri->hasQueryVar("channel_id"))
+
394  {
+
395  $node = $node->channelGetById($uri->getQueryVar("channel_id"));
+
396  }
+
397  elseif($uri->hasQueryVar("channel_name"))
+
398  {
+
399  $node = $node->channelGetByName($uri->getQueryVar("channel_name"));
+
400  }
+
401 
+
402  /* access client node object */
+
403  if($uri->hasQueryVar("client_id"))
+
404  {
+
405  $node = $node->clientGetById($uri->getQueryVar("client_id"));
+
406  }
+
407  if($uri->hasQueryVar("client_uid"))
+
408  {
+
409  $node = $node->clientGetByUid($uri->getQueryVar("client_uid"));
+
410  }
+
411  elseif($uri->hasQueryVar("client_name"))
+
412  {
+
413  $node = $node->clientGetByName($uri->getQueryVar("client_name"));
+
414  }
+
415  }
+
416 
+
417  return $node;
+
418  }
+
419 
+
420  return $object;
+
421  }
+
422 
+
423  /**
+
424  * Loads a class from a PHP file. The filename must be formatted as "$class.php".
+
425  *
+
426  * include() is not prefixed with the @ operator because if the file is loaded and
+
427  * contains a parse error, execution will halt silently and this is difficult to debug.
+
428  *
+
429  * @param string $class
+
430  * @throws LogicException
+
431  * @return boolean
+
432  */
+
433  protected static function loadClass($class)
+
434  {
+
435  if(class_exists($class, FALSE) || interface_exists($class, FALSE))
+
436  {
+
437  return;
+
438  }
+
439 
+
440  if(preg_match("/[^a-z0-9\\/\\\\_.-]/i", $class))
+
441  {
+
442  throw new LogicException("illegal characters in classname '" . $class . "'");
+
443  }
+
444 
+
445  $file = self::getFilePath($class) . ".php";
+
446 
+
447  if(!file_exists($file) || !is_readable($file))
+
448  {
+
449  throw new LogicException("file '" . $file . "' does not exist or is not readable");
+
450  }
+
451 
+
452  if(class_exists($class, FALSE) || interface_exists($class, FALSE))
+
453  {
+
454  throw new LogicException("class '" . $class . "' does not exist");
+
455  }
+
456 
+
457  return include_once($file);
+
458  }
+
459 
+
460  /**
+
461  * Generates a possible file path for $name.
+
462  *
+
463  * @param string $name
+
464  * @return string
+
465  */
+
466  protected static function getFilePath($name)
+
467  {
+
468  $path = str_replace("_", DIRECTORY_SEPARATOR, $name);
+
469  $path = str_replace(__CLASS__, dirname(__FILE__), $path);
+
470 
+
471  return $path;
+
472  }
+
473 
+
474  /**
+
475  * Returns the name of an adapter class by $name.
+
476  *
+
477  * @param string $name
+
478  * @param string $namespace
+
479  * @throws TeamSpeak3_Adapter_Exception
+
480  * @return string
+
481  */
+
482  protected static function getAdapterName($name, $namespace = "TeamSpeak3_Adapter_")
+
483  {
+
484  $path = self::getFilePath($namespace);
+
485  $scan = scandir($path);
+
486 
+
487  foreach($scan as $node)
+
488  {
+
489  $file = TeamSpeak3_Helper_String::factory($node)->toLower();
+
490 
+
491  if($file->startsWith($name) && $file->endsWith(".php"))
+
492  {
+
493  return $namespace . str_replace(".php", "", $node);
+
494  }
+
495  }
+
496 
+
497  throw new TeamSpeak3_Adapter_Exception("adapter '" . $name . "' does not exist");
+
498  }
+
499 
+
500  /**
+
501  * spl_autoload() suitable implementation for supporting class autoloading.
+
502  *
+
503  * @param string $class
+
504  * @return boolean
+
505  */
+
506  public static function autoload($class)
+
507  {
+
508  if(substr($class, 0, strlen(__CLASS__)) != __CLASS__) return;
+
509 
+
510  try
+
511  {
+
512  self::loadClass($class);
+
513 
+
514  return TRUE;
+
515  }
+
516  catch(Exception $e)
+
517  {
+
518  return FALSE;
+
519  }
+
520  }
+
521 
+
522  /**
+
523  * Checks for required PHP features, enables autoloading and starts a default profiler.
+
524  *
+
525  * @throws LogicException
+
526  * @return void
+
527  */
+
528  public static function init()
+
529  {
+
530  if(version_compare(phpversion(), "5.2.1") == -1)
+
531  {
+
532  throw new LogicException("this particular software cannot be used with the installed version of PHP");
+
533  }
+
534 
+
535  if(!function_exists("stream_socket_client"))
+
536  {
+
537  throw new LogicException("network functions are not available in this PHP installation");
+
538  }
+
539 
+
540  if(!function_exists("spl_autoload_register"))
+
541  {
+
542  throw new LogicException("autoload functions are not available in this PHP installation");
+
543  }
+
544 
+
545  if(!class_exists("TeamSpeak3_Helper_Profiler"))
+
546  {
+
547  spl_autoload_register(array(__CLASS__, "autoload"));
+
548  }
+
549 
+ +
551  }
+
552 
+
553  /**
+
554  * Returns an assoc array containing all escape patterns available on a TeamSpeak 3
+
555  * Server.
+
556  *
+
557  * @return array
+
558  */
+
559  public static function getEscapePatterns()
+
560  {
+
561  return self::$escape_patterns;
+
562  }
+
563 
+
564  /**
+
565  * Debug helper function. This is a wrapper for var_dump() that adds the pre-format tags,
+
566  * cleans up newlines and indents, and runs htmlentities() before output.
+
567  *
+
568  * @param mixed $var
+
569  * @param bool $echo
+
570  * @return string
+
571  */
+
572  public static function dump($var, $echo = TRUE)
+
573  {
+
574  ob_start();
+
575  var_dump($var);
+
576 
+
577  $output = ob_get_clean();
+
578  $output = preg_replace("/\]\=>\n(\s+)/m", "] => ", $output);
+
579 
+
580  if(PHP_SAPI == "cli")
+
581  {
+
582  $output = PHP_EOL . PHP_EOL . $output . PHP_EOL;
+
583  }
+
584  else
+
585  {
+
586  $output = "<pre>" . htmlspecialchars($output, ENT_QUOTES) . "</pre>";
+
587  }
+
588 
+
589  if($echo) echo($output);
+
590 
+
591  return $output;
+
592  }
+
593 }
+
594 
+
595 /*!
+
596  * \mainpage API Documentation
+
597  *
+
598  * \section welcome_sec Introduction
+
599  *
+
600  * \subsection welcome1 What is the TS3 PHP Framework?
+
601  * Initially released in January 2010, the TS3 PHP Framework is a powerful, open source, object-oriented framework
+
602  * implemented in PHP 5 and licensed under the GNU General Public License. It's based on simplicity and a rigorously
+
603  * tested agile codebase. Extend the functionality of your servers with scripts or create powerful web applications
+
604  * to manage all features of your TeamSpeak 3 Server instances.
+
605  *
+
606  * Tested. Thoroughly. Enterprise-ready and built with agile methods, the TS3 PHP Framework has been unit-tested from
+
607  * the start to ensure that all code remains stable and easy for you to extend, re-test with your extensions, and
+
608  * further maintain.
+
609  *
+
610  * \subsection welcome2 Why should I use the TS3 PHP Framework rather than other PHP libraries?
+
611  * The TS3 PHP Framework is a is a modern use-at-will framework that provides individual components to communicate
+
612  * with the TeamSpeak 3 Server.
+
613  *
+
614  * There are lots of arguments for the TS3 PHP Framework in comparison with other PHP based libraries. It is the most
+
615  * dynamic and feature-rich piece of software in its class. In addition, it's always up-to-date and 100% compatible to
+
616  * almost any TeamSpeak 3 Server version available.
+
617  *
+
618  * \section sysreqs_sec Requirements
+
619  * The TS3 PHP Framework currently supports PHP 5.2.1 or later, but we strongly recommend the most current release of
+
620  * PHP for critical security and performance enhancements. If you want to create a web application using the TS3 PHP
+
621  * Framework, you need a PHP 5 interpreter with a web server configured to handle PHP scripts correctly.
+
622  *
+
623  * Note that the majority of TS3 PHP Framework development and deployment is done on nginx, so there is more community
+
624  * experience and testing performed on nginx than on other web servers.
+
625  *
+
626  * \section feature_sec Features
+
627  * Features of the TS3 PHP Framework include:
+
628  *
+
629  * - Fully object-oriented PHP 5 and E_STRICT compliant components
+
630  * - Access to all TeamSpeak 3 Server features via ServerQuery
+
631  * - Integrated full featured and customizable TSViewer interfaces
+
632  * - Full support for file transfers to up- and /or download custom icons and other stuff
+
633  * - Powerful error handling capablities using exceptions and customizable error messages
+
634  * - Query mechanisms for several official services such as the blacklist and auto-update servers
+
635  * - Dynamic signal slots for event based scripting
+
636  * - ...
+
637  *
+
638  * \section example_sec Usage Examples
+
639  *
+
640  * \subsection example1 1. Kick a single Client from a Virtual Server
+
641  * @code
+
642  * // load framework files
+
643  * require_once("libraries/TeamSpeak3/TeamSpeak3.php");
+
644  *
+
645  * // connect to local server, authenticate and spawn an object for the virtual server on port 9987
+
646  * $ts3_VirtualServer = TeamSpeak3::factory("serverquery://username:password@127.0.0.1:10011/?server_port=9987");
+
647  *
+
648  * // kick the client with ID 123 from the server
+
649  * $ts3_VirtualServer->clientKick(123, TeamSpeak3::KICK_SERVER, "evil kick XD");
+
650  *
+
651  * // spawn an object for the client by unique identifier and do the kick
+
652  * $ts3_VirtualServer->clientGetByUid("FPMPSC6MXqXq751dX7BKV0JniSo=")->kick(TeamSpeak3::KICK_SERVER, "evil kick XD");
+
653  *
+
654  * // spawn an object for the client by current nickname and do the kick
+
655  * $ts3_VirtualServer->clientGetByName("ScP")->kick(TeamSpeak3::KICK_SERVER, "evil kick XD");
+
656  * @endcode
+
657  *
+
658  * \subsection example2 2. Kick all Clients from a Virtual Server
+
659  * @code
+
660  * // load framework files
+
661  * require_once("libraries/TeamSpeak3/TeamSpeak3.php");
+
662  *
+
663  * // connect to local server, authenticate and spawn an object for the virtual server on port 9987
+
664  * $ts3_VirtualServer = TeamSpeak3::factory("serverquery://username:password@127.0.0.1:10011/?server_port=9987");
+
665  *
+
666  * // query clientlist from virtual server
+
667  * $arr_ClientList = $ts3_VirtualServer->clientList();
+
668  *
+
669  * // kick all clients online with a single command
+
670  * $ts3_VirtualServer->clientKick($arr_ClientList, TeamSpeak3::KICK_SERVER, "evil kick XD");
+
671  * @endcode
+
672  *
+
673  * \subsection example3 3. Print the Nicknames of connected Android Clients
+
674  * @code
+
675  * // load framework files
+
676  * require_once("libraries/TeamSpeak3/TeamSpeak3.php");
+
677  *
+
678  * // connect to local server, authenticate and spawn an object for the virtual server on port 9987
+
679  * $ts3_VirtualServer = TeamSpeak3::factory("serverquery://username:password@127.0.0.1:10011/?server_port=9987");
+
680  *
+
681  * // query clientlist from virtual server and filter by platform
+
682  * $arr_ClientList = $ts3_VirtualServer->clientList(array("client_platform" => "Android"));
+
683  *
+
684  * // walk through list of clients
+
685  * foreach($arr_ClientList as $ts3_Client)
+
686  * {
+
687  * echo $ts3_Client . " is using " . $ts3_Client["client_platform"] . "<br />\n";
+
688  * }
+
689  * @endcode
+
690  *
+
691  * \subsection example4 4. Modify the Settings of each Virtual Server
+
692  * @code
+
693  * // load framework files
+
694  * require_once("libraries/TeamSpeak3/TeamSpeak3.php");
+
695  *
+
696  * // connect to local server, authenticate and spawn an object for the server instance
+
697  * $ts3_ServerInstance = TeamSpeak3::factory("serverquery://username:password@127.0.0.1:10011/");
+
698  *
+
699  * // walk through list of virtual servers
+
700  * foreach($ts3_ServerInstance as $ts3_VirtualServer)
+
701  * {
+
702  * // modify the virtual servers hostbanner URL only using the ArrayAccess interface
+
703  * $ts3_VirtualServer["virtualserver_hostbanner_gfx_url"] = "http://www.example.com/banners/banner01_468x60.jpg";
+
704  *
+
705  * // modify the virtual servers hostbanner URL only using property overloading
+
706  * $ts3_VirtualServer->virtualserver_hostbanner_gfx_url = "http://www.example.com/banners/banner01_468x60.jpg";
+
707  *
+
708  * // modify multiple virtual server properties at once
+
709  * $ts3_VirtualServer->modify(array(
+
710  * "virtualserver_hostbutton_tooltip" => "My Company",
+
711  * "virtualserver_hostbutton_url" => "http://www.example.com",
+
712  * "virtualserver_hostbutton_gfx_url" => "http://www.example.com/buttons/button01_24x24.jpg",
+
713  * ));
+
714  * }
+
715  * @endcode
+
716  *
+
717  * \subsection example5 5. Create a Privilege Key for a Server Group
+
718  * @code
+
719  * // load framework files
+
720  * require_once("libraries/TeamSpeak3/TeamSpeak3.php");
+
721  *
+
722  * // connect to local server, authenticate and spawn an object for the virtual server on port 9987
+
723  * $ts3_VirtualServer = TeamSpeak3::factory("serverquery://username:password@127.0.0.1:10011/?server_port=9987");
+
724  *
+
725  * // spawn an object for the group using a specified name
+
726  * $arr_ServerGroup = $ts3_VirtualServer->serverGroupGetByName("Admins");
+
727  *
+
728  * // create the privilege key
+
729  * $ts3_PrivilegeKey = $arr_ServerGroup->privilegeKeyCreate();
+
730  * @endcode
+
731  *
+
732  * \subsection example6 6. Modify the Permissions of Admins on each Virtual Server
+
733  * @code
+
734  * // load framework files
+
735  * require_once("libraries/TeamSpeak3/TeamSpeak3.php");
+
736  *
+
737  * // connect to local server, authenticate and spawn an object for the server instance
+
738  * $ts3_ServerInstance = TeamSpeak3::factory("serverquery://username:password@127.0.0.1:10011/");
+
739  *
+
740  * // walk through list of virtual servers
+
741  * foreach($ts3_ServerInstance as $ts3_VirtualServer)
+
742  * {
+
743  * // identify the most powerful group on the virtual server
+
744  * $ts3_ServerGroup = $ts3_VirtualServer->serverGroupIdentify();
+
745  *
+
746  * // assign a new permission
+
747  * $ts3_ServerGroup->permAssign("b_virtualserver_modify_hostbanner", TRUE);
+
748  *
+
749  * // revoke an existing permission
+
750  * $ts3_ServerGroup->permRemove("b_virtualserver_modify_maxclients");
+
751  * }
+
752  * @endcode
+
753  *
+
754  * \subsection example7 7. Create a new Virtual Server
+
755  * @code
+
756  * // load framework files
+
757  * require_once("libraries/TeamSpeak3/TeamSpeak3.php");
+
758  *
+
759  * // connect to local server, authenticate and spawn an object for the server instance
+
760  * $ts3_ServerInstance = TeamSpeak3::factory("serverquery://username:password@127.0.0.1:10011/");
+
761  *
+
762  * // create a virtual server and get its ID
+
763  * $new_sid = $ts3_ServerInstance->serverCreate(array(
+
764  * "virtualserver_name" => "My TeamSpeak 3 Server",
+
765  * "virtualserver_maxclients" => 64,
+
766  * "virtualserver_hostbutton_tooltip" => "My Company",
+
767  * "virtualserver_hostbutton_url" => "http://www.example.com",
+
768  * "virtualserver_hostbutton_gfx_url" => "http://www.example.com/buttons/button01_24x24.jpg",
+
769  * ));
+
770  * @endcode
+
771  *
+
772  * \subsection example8 8. Create a hierarchical Channel Stucture
+
773  * @code
+
774  * // load framework files
+
775  * require_once("libraries/TeamSpeak3/TeamSpeak3.php");
+
776  *
+
777  * // connect to local server, authenticate and spawn an object for the virtual server on port 9987
+
778  * $ts3_VirtualServer = TeamSpeak3::factory("serverquery://username:password@127.0.0.1:10011/?server_port=9987");
+
779  *
+
780  * // create a top-level channel and get its ID
+
781  * $top_cid = $ts3_VirtualServer->channelCreate(array(
+
782  * "channel_name" => "My Channel",
+
783  * "channel_topic" => "This is a top-level channel",
+
784  * "channel_codec" => TeamSpeak3::CODEC_SPEEX_WIDEBAND,
+
785  * "channel_flag_permanent" => TRUE,
+
786  * ));
+
787  *
+
788  * // create a sub-level channel and get its ID
+
789  * $sub_cid = $ts3_VirtualServer->channelCreate(array(
+
790  * "channel_name" => "My Sub-Channel",
+
791  * "channel_topic" => "This is a sub-level channel",
+
792  * "channel_codec" => TeamSpeak3::CODEC_SPEEX_NARROWBAND,
+
793  * "channel_flag_permanent" => TRUE,
+
794  * "cpid" => $top_cid,
+
795  * ));
+
796  * @endcode
+
797  *
+
798  * \subsection example9 9. Send a Text Message to outdated Clients
+
799  * @code
+
800  * // load framework files
+
801  * require_once("libraries/TeamSpeak3/TeamSpeak3.php");
+
802  *
+
803  * // connect to local server, authenticate and spawn an object for the virtual server on port 9987
+
804  * $ts3_VirtualServer = TeamSpeak3::factory("serverquery://username:password@127.0.0.1:10011/?server_port=9987");
+
805  *
+
806  * // connect to default update server
+
807  * $ts3_UpdateServer = TeamSpeak3::factory("update");
+
808  *
+
809  * // walk through list of clients on virtual server
+
810  * foreach($ts3_VirtualServer->clientList() as $ts3_Client)
+
811  * {
+
812  * // skip query clients
+
813  * if($ts3_Client["client_type"]) continue;
+
814  *
+
815  * // send test message if client build is outdated
+
816  * if($ts3_Client->getRev() < $ts3_UpdateServer->getClientRev())
+
817  * {
+
818  * $ts3_Client->message("[COLOR=red]your client is [B]outdated[/B]... update to [U]" . $ts3_UpdateServer->getClientVersion() . "[/U] now![/COLOR]");
+
819  * }
+
820  * }
+
821  * @endcode
+
822  *
+
823  * \subsection example10 10. Check if the Server Instance is Outdated or Blacklisted
+
824  * @code
+
825  * // load framework files
+
826  * require_once("libraries/TeamSpeak3/TeamSpeak3.php");
+
827  *
+
828  * // connect to local server, authenticate and spawn an object for the server instance
+
829  * $ts3_ServerInstance = TeamSpeak3::factory("serverquery://username:password@127.0.0.1:10011/");
+
830  *
+
831  * // connect to default update server
+
832  * $ts3_UpdateServer = TeamSpeak3::factory("update");
+
833  *
+
834  * // send global text message if the server is outdated
+
835  * if($ts3_ServerInstance->version("build") < $ts3_UpdateServer->getServerRev())
+
836  * {
+
837  * $ts3_ServerInstance->message("[COLOR=red]your server is [B]outdated[/B]... update to [U]" . $ts3_UpdateServer->getServerVersion() . "[/U] now![/COLOR]");
+
838  * }
+
839  *
+
840  * // connect to default blacklist server
+
841  * $ts3_BlacklistServer = TeamSpeak3::factory("blacklist");
+
842  *
+
843  * // send global text message if the server is blacklisted
+
844  * if($ts3_BlacklistServer->isBlacklisted($ts3_ServerInstance))
+
845  * {
+
846  * $ts3_ServerInstance->message("[COLOR=red]your server is [B]blacklisted[/B]... disconnect now![/COLOR]");
+
847  * }
+
848  * @endcode
+
849  *
+
850  * \subsection example11 11. Create a simple TSViewer for your Website
+
851  * @code
+
852  * // load framework files
+
853  * require_once("libraries/TeamSpeak3/TeamSpeak3.php");
+
854  *
+
855  * // connect to local server, authenticate and spawn an object for the virtual server on port 9987
+
856  * $ts3_VirtualServer = TeamSpeak3::factory("serverquery://username:password@127.0.0.1:10011/?server_port=9987");
+
857  *
+
858  * // build and display HTML treeview using custom image paths (remote icons will be embedded using data URI sheme)
+
859  * echo $ts3_VirtualServer->getViewer(new TeamSpeak3_Viewer_Html("images/viewericons/", "images/countryflags/", "data:image"));
+
860  * @endcode
+
861  *
+
862  * \subsection example12 12. Update all outdated Audio Codecs to their Opus equivalent
+
863  * @code
+
864  * // load framework files
+
865  * require_once("libraries/TeamSpeak3/TeamSpeak3.php");
+
866  *
+
867  * // connect to local server, authenticate and spawn an object for the virtual server on port 9987
+
868  * $ts3_VirtualServer = TeamSpeak3::factory("serverquery://username:password@127.0.0.1:10011/?server_port=9987");
+
869  *
+
870  * // walk through list of chanels
+
871  * foreach($ts3_VirtualServer->channelList() as $ts3_Channel)
+
872  * {
+
873  * if($ts3_Channel["channel_codec"] == TeamSpeak3::CODEC_CELT_MONO)
+
874  * {
+
875  * $ts3_Channel["channel_codec"] = TeamSpeak3::CODEC_OPUS_MUSIC;
+
876  * }
+
877  * elseif($ts3_Channel["channel_codec"] != TeamSpeak3::CODEC_OPUS_MUSIC)
+
878  * {
+
879  * $ts3_Channel["channel_codec"] = TeamSpeak3::CODEC_OPUS_VOICE;
+
880  * }
+
881  * }
+
882  * @endcode
+
883  *
+
884  * \subsection example13 13. Display the Avatar of a connected User
+
885  * @code
+
886  * // load framework files
+
887  * require_once("libraries/TeamSpeak3/TeamSpeak3.php");
+
888  *
+
889  * // connect to local server, authenticate and spawn an object for the virtual server on port 9987
+
890  * $ts3_VirtualServer = TeamSpeak3::factory("serverquery://username:password@127.0.0.1:10011/?server_port=9987");
+
891  *
+
892  * // spawn an object for the client using a specified nickname
+
893  * $ts3_Client = $ts3_VirtualServer->clientGetByName("John Doe");
+
894  *
+
895  * // download the clients avatar file
+
896  * $avatar = $ts3_Client->avatarDownload();
+
897  *
+
898  * // send header and display image
+
899  * header("Content-Type: " . TeamSpeak3_Helper_Convert::imageMimeType($avatar));
+
900  * echo $avatar;
+
901  * @endcode
+
902  *
+
903  * \subsection example14 14. Create a Simple Bot waiting for Events
+
904  * @code
+
905  * // load framework files
+
906  * require_once("libraries/TeamSpeak3/TeamSpeak3.php");
+
907  *
+
908  * // connect to local server in non-blocking mode, authenticate and spawn an object for the virtual server on port 9987
+
909  * $ts3_VirtualServer = TeamSpeak3::factory("serverquery://username:password@127.0.0.1:10011/?server_port=9987&blocking=0");
+
910  *
+
911  * // get notified on incoming private messages
+
912  * $ts3_VirtualServer->notifyRegister("textprivate");
+
913  *
+
914  * // register a callback for notifyTextmessage events
+
915  * TeamSpeak3_Helper_Signal::getInstance()->subscribe("notifyTextmessage", "onTextmessage");
+
916  *
+
917  * // wait for events
+
918  * while(1) $ts3_VirtualServer->getAdapter()->wait();
+
919  *
+
920  * // define a callback function
+
921  * function onTextmessage(TeamSpeak3_Adapter_ServerQuery_Event $event, TeamSpeak3_Node_Host $host)
+
922  * {
+
923  * echo "Client " . $event["invokername"] . " sent textmessage: " . $event["msg"];
+
924  * }
+
925  * @endcode
+
926  *
+
927  * \subsection example15 15. Handle Errors using Exceptions and Custom Error Messages
+
928  * @code
+
929  * // load framework files
+
930  * require_once("libraries/TeamSpeak3/TeamSpeak3.php");
+
931  *
+
932  * // register custom error message (supported placeholders are: %file, %line, %code and %mesg)
+
933  * TeamSpeak3_Exception::registerCustomMessage(0x300, "The specified channel does not exist; server said: %mesg");
+
934  *
+
935  * try
+
936  * {
+
937  * // connect to local server, authenticate and spawn an object for the virtual server on port 9987
+
938  * $ts3_VirtualServer = TeamSpeak3::factory("serverquery://username:password@127.0.0.1:10011/?server_port=9987");
+
939  *
+
940  * // spawn an object for the channel using a specified name
+
941  * $ts3_Channel = $ts3_VirtualServer->channelGetByName("I do not exist");
+
942  * }
+
943  * catch(TeamSpeak3_Exception $e)
+
944  * {
+
945  * // print the error message returned by the server
+
946  * echo "Error " . $e->getCode() . ": " . $e->getMessage();
+
947  * }
+
948  * @endcode
+
949  *
+
950  * \subsection example16 16. Save Connection State in Persistent Session Variable
+
951  * @code
+
952  * // load framework files
+
953  * require_once("libraries/TeamSpeak3/TeamSpeak3.php");
+
954  *
+
955  * // start a PHP session
+
956  * session_start();
+
957  *
+
958  * // connect to local server, authenticate and spawn an object for the virtual server on port 9987
+
959  * $ts3_VirtualServer = TeamSpeak3::factory("serverquery://username:password@127.0.0.1:10011/?server_port=9987");
+
960  *
+
961  * // save connection state (including login and selected virtual server)
+
962  * $_SESSION["_TS3"] = serialize($ts3_VirtualServer);
+
963  * @endcode
+
964  *
+
965  * \subsection example17 17. Restore Connection State from Persistent Session Variable
+
966  * @code
+
967  * // load framework files
+
968  * require_once("libraries/TeamSpeak3/TeamSpeak3.php");
+
969  *
+
970  * // start a PHP session
+
971  * session_start();
+
972  *
+
973  * // restore connection state
+
974  * $ts3_VirtualServer = unserialize($_SESSION["_TS3"]);
+
975  *
+
976  * // send a text message to the server
+
977  * $ts3_VirtualServer->message("Hello World!");
+
978  * @endcode
+
979  *
+
980  * Speed up new development and reduce maintenance costs by using the TS3 PHP Framework!
+
981  */
+
+
+ + + + diff --git a/lib/docs/html/_text_8php.html b/lib/docs/html/_text_8php.html new file mode 100644 index 0000000..32cf5f4 --- /dev/null +++ b/lib/docs/html/_text_8php.html @@ -0,0 +1,156 @@ + + + + + + +TeamSpeak 3 PHP Framework: TeamSpeak3/Viewer/Text.php File Reference + + + + + + + + + + + + + +
+
+ + + + + + + +
+
TeamSpeak 3 PHP Framework +  1.1.23 +
+
Copyright © Planet TeamSpeak. All rights reserved.
+
+
+ + + + + +
+
+ +
+
+
+ +
+ + + + +
+ +
+ +
+ +
+
Text.php File Reference
+
+
+ +

TeamSpeak 3 PHP Framework. +More...

+ +

Go to the source code of this file.

+ + + + + +

+Classes

class  TeamSpeak3_Viewer_Text
 Renders nodes used in ASCII-based TeamSpeak 3 viewers. More...
 
+ + + +

+Namespaces

 TeamSpeak3
 
+ + + +

+Constant Groups

 TeamSpeak3
 
+

Detailed Description

+

TeamSpeak 3 PHP Framework.

+
Id:
Text.php 10/11/2013 11:35:22 scp
+

This program is free software: you can redistribute it and/or modify it under the terms of the GNU General Public License as published by the Free Software Foundation, either version 3 of the License, or (at your option) any later version.

+

This program is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License for more details.

+

You should have received a copy of the GNU General Public License along with this program. If not, see http://www.gnu.org/licenses/.

+ +

Definition in file Text.php.

+
+
+ + + + diff --git a/lib/docs/html/_text_8php_source.html b/lib/docs/html/_text_8php_source.html new file mode 100644 index 0000000..21891ec --- /dev/null +++ b/lib/docs/html/_text_8php_source.html @@ -0,0 +1,229 @@ + + + + + + +TeamSpeak 3 PHP Framework: TeamSpeak3/Viewer/Text.php Source File + + + + + + + + + + + + + +
+
+ + + + + + + +
+
TeamSpeak 3 PHP Framework +  1.1.23 +
+
Copyright © Planet TeamSpeak. All rights reserved.
+
+
+ + + + + +
+
+ +
+
+
+ +
+ + + + +
+ +
+ +
+
+
Text.php
+
+
+Go to the documentation of this file.
1 <?php
+
2 
+
3 /**
+
4  * @file
+
5  * TeamSpeak 3 PHP Framework
+
6  *
+
7  * $Id: Text.php 10/11/2013 11:35:22 scp@orilla $
+
8  *
+
9  * This program is free software: you can redistribute it and/or modify
+
10  * it under the terms of the GNU General Public License as published by
+
11  * the Free Software Foundation, either version 3 of the License, or
+
12  * (at your option) any later version.
+
13  *
+
14  * This program is distributed in the hope that it will be useful,
+
15  * but WITHOUT ANY WARRANTY; without even the implied warranty of
+
16  * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+
17  * GNU General Public License for more details.
+
18  *
+
19  * You should have received a copy of the GNU General Public License
+
20  * along with this program. If not, see <http://www.gnu.org/licenses/>.
+
21  *
+
22  * @package TeamSpeak3
+
23  * @version 1.1.23
+
24  * @author Sven 'ScP' Paulsen
+
25  * @copyright Copyright (c) 2010 by Planet TeamSpeak. All rights reserved.
+
26  */
+
27 
+
28 /**
+
29  * @class TeamSpeak3_Viewer_Text
+
30  * @brief Renders nodes used in ASCII-based TeamSpeak 3 viewers.
+
31  */
+ +
33 {
+
34  /**
+
35  * A pre-defined pattern used to display a node in a TeamSpeak 3 viewer.
+
36  *
+
37  * @var string
+
38  */
+
39  protected $pattern = "%0%1 %2\n";
+
40 
+
41  /**
+
42  * Returns the code needed to display a node in a TeamSpeak 3 viewer.
+
43  *
+
44  * @param TeamSpeak3_Node_Abstract $node
+
45  * @param array $siblings
+
46  * @return string
+
47  */
+
48  public function fetchObject(TeamSpeak3_Node_Abstract $node, array $siblings = array())
+
49  {
+
50  $this->currObj = $node;
+
51  $this->currSib = $siblings;
+
52 
+
53  $args = array(
+
54  $this->getPrefix(),
+
55  $this->getCorpusIcon(),
+
56  $this->getCorpusName(),
+
57  );
+
58 
+
59  return TeamSpeak3_Helper_String::factory($this->pattern)->arg($args);
+
60  }
+
61 
+
62  /**
+
63  * Returns the ASCII string to display the prefix of the current node.
+
64  *
+
65  * @return string
+
66  */
+
67  protected function getPrefix()
+
68  {
+
69  $prefix = "";
+
70 
+
71  if(count($this->currSib))
+
72  {
+
73  $last = array_pop($this->currSib);
+
74 
+
75  foreach($this->currSib as $sibling)
+
76  {
+
77  $prefix .= ($sibling) ? "| " : " ";
+
78  }
+
79 
+
80  $prefix .= ($last) ? "\\-" : "|-";
+
81  }
+
82 
+
83  return $prefix;
+
84  }
+
85 
+
86  /**
+
87  * Returns an ASCII string which can be used to display the status icon for a
+
88  * TeamSpeak_Node_Abstract object.
+
89  *
+
90  * @return string
+
91  */
+
92  protected function getCorpusIcon()
+
93  {
+
94  return $this->currObj->getSymbol();
+
95  }
+
96 
+
97  /**
+
98  * Returns a string for the current corpus element which contains the display name
+
99  * for the current TeamSpeak_Node_Abstract object.
+
100  *
+
101  * @return string
+
102  */
+
103  protected function getCorpusName()
+
104  {
+
105  return $this->currObj;
+
106  }
+
107 }
+
+
+ + + + diff --git a/lib/docs/html/_timer_8php.html b/lib/docs/html/_timer_8php.html new file mode 100644 index 0000000..ff37539 --- /dev/null +++ b/lib/docs/html/_timer_8php.html @@ -0,0 +1,156 @@ + + + + + + +TeamSpeak 3 PHP Framework: TeamSpeak3/Helper/Profiler/Timer.php File Reference + + + + + + + + + + + + + +
+
+ + + + + + + +
+
TeamSpeak 3 PHP Framework +  1.1.23 +
+
Copyright © Planet TeamSpeak. All rights reserved.
+
+
+ + + + + +
+
+ +
+
+
+ +
+ + + + +
+ +
+ +
+ +
+
Timer.php File Reference
+
+
+ +

TeamSpeak 3 PHP Framework. +More...

+ +

Go to the source code of this file.

+ + + + + +

+Classes

class  TeamSpeak3_Helper_Profiler_Timer
 Helper class providing profiler timers. More...
 
+ + + +

+Namespaces

 TeamSpeak3
 
+ + + +

+Constant Groups

 TeamSpeak3
 
+

Detailed Description

+

TeamSpeak 3 PHP Framework.

+
Id:
Timer.php 10/11/2013 11:35:21 scp
+

This program is free software: you can redistribute it and/or modify it under the terms of the GNU General Public License as published by the Free Software Foundation, either version 3 of the License, or (at your option) any later version.

+

This program is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License for more details.

+

You should have received a copy of the GNU General Public License along with this program. If not, see http://www.gnu.org/licenses/.

+ +

Definition in file Timer.php.

+
+
+ + + + diff --git a/lib/docs/html/_timer_8php_source.html b/lib/docs/html/_timer_8php_source.html new file mode 100644 index 0000000..4807736 --- /dev/null +++ b/lib/docs/html/_timer_8php_source.html @@ -0,0 +1,276 @@ + + + + + + +TeamSpeak 3 PHP Framework: TeamSpeak3/Helper/Profiler/Timer.php Source File + + + + + + + + + + + + + +
+
+ + + + + + + +
+
TeamSpeak 3 PHP Framework +  1.1.23 +
+
Copyright © Planet TeamSpeak. All rights reserved.
+
+
+ + + + + +
+
+ +
+
+
+ +
+ + + + +
+ +
+ +
+
+
Timer.php
+
+
+Go to the documentation of this file.
1 <?php
+
2 
+
3 /**
+
4  * @file
+
5  * TeamSpeak 3 PHP Framework
+
6  *
+
7  * $Id: Timer.php 10/11/2013 11:35:21 scp@orilla $
+
8  *
+
9  * This program is free software: you can redistribute it and/or modify
+
10  * it under the terms of the GNU General Public License as published by
+
11  * the Free Software Foundation, either version 3 of the License, or
+
12  * (at your option) any later version.
+
13  *
+
14  * This program is distributed in the hope that it will be useful,
+
15  * but WITHOUT ANY WARRANTY; without even the implied warranty of
+
16  * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+
17  * GNU General Public License for more details.
+
18  *
+
19  * You should have received a copy of the GNU General Public License
+
20  * along with this program. If not, see <http://www.gnu.org/licenses/>.
+
21  *
+
22  * @package TeamSpeak3
+
23  * @version 1.1.23
+
24  * @author Sven 'ScP' Paulsen
+
25  * @copyright Copyright (c) 2010 by Planet TeamSpeak. All rights reserved.
+
26  */
+
27 
+
28 /**
+
29  * @class TeamSpeak3_Helper_Profiler_Timer
+
30  * @brief Helper class providing profiler timers.
+
31  */
+ +
33 {
+
34  /**
+
35  * Indicates wether the timer is running or not.
+
36  *
+
37  * @var boolean
+
38  */
+
39  protected $running = FALSE;
+
40 
+
41  /**
+
42  * Stores the timestamp when the timer was last started.
+
43  *
+
44  * @var integer
+
45  */
+
46  protected $started = 0;
+
47 
+
48  /**
+
49  * Stores the timer name.
+
50  *
+
51  * @var string
+
52  */
+
53  protected $name = null;
+
54 
+
55  /**
+
56  * Stores various information about the server environment.
+
57  *
+
58  * @var array
+
59  */
+
60  protected $data = array();
+
61 
+
62  /**
+
63  * The TeamSpeak3_Helper_Profiler_Timer constructor.
+
64  *
+
65  * @param string $name
+
66  * @return TeamSpeak3_Helper_Profiler_Timer
+
67  */
+
68  public function __construct($name)
+
69  {
+
70  $this->name = (string) $name;
+
71 
+
72  $this->data["runtime"] = 0;
+
73  $this->data["realmem"] = 0;
+
74  $this->data["emalloc"] = 0;
+
75 
+
76  $this->start();
+
77  }
+
78 
+
79  /**
+
80  * Starts the timer.
+
81  *
+
82  * @return void
+
83  */
+
84  public function start()
+
85  {
+
86  if($this->isRunning()) return;
+
87 
+
88  $this->data["realmem_start"] = memory_get_usage(TRUE);
+
89  $this->data["emalloc_start"] = memory_get_usage();
+
90 
+
91  $this->started = microtime(TRUE);
+
92  $this->running = TRUE;
+
93  }
+
94 
+
95  /**
+
96  * Stops the timer.
+
97  *
+
98  * @return void
+
99  */
+
100  public function stop()
+
101  {
+
102  if(!$this->isRunning()) return;
+
103 
+
104  $this->data["runtime"] += microtime(TRUE) - $this->started;
+
105  $this->data["realmem"] += memory_get_usage(TRUE) - $this->data["realmem_start"];
+
106  $this->data["emalloc"] += memory_get_usage() - $this->data["emalloc_start"];
+
107 
+
108  $this->started = 0;
+
109  $this->running = FALSE;
+
110  }
+
111 
+
112  /**
+
113  * Return the timer runtime.
+
114  *
+
115  * @return mixed
+
116  */
+
117  public function getRuntime()
+
118  {
+
119  if($this->isRunning())
+
120  {
+
121  $this->stop();
+
122  $this->start();
+
123  }
+
124 
+
125  return $this->data["runtime"];
+
126  }
+
127 
+
128  /**
+
129  * Returns the amount of memory allocated to PHP in bytes.
+
130  *
+
131  * @param boolean $realmem
+
132  * @return integer
+
133  */
+
134  public function getMemUsage($realmem = FALSE)
+
135  {
+
136  if($this->isRunning())
+
137  {
+
138  $this->stop();
+
139  $this->start();
+
140  }
+
141 
+
142  return ($realmem !== FALSE) ? $this->data["realmem"] : $this->data["emalloc"];
+
143  }
+
144 
+
145  /**
+
146  * Returns TRUE if the timer is running.
+
147  *
+
148  * @return boolean
+
149  */
+
150  public function isRunning()
+
151  {
+
152  return $this->running;
+
153  }
+
154 }
+
+
+ + + + diff --git a/lib/docs/html/_transport_2_abstract_8php.html b/lib/docs/html/_transport_2_abstract_8php.html new file mode 100644 index 0000000..e12d4a0 --- /dev/null +++ b/lib/docs/html/_transport_2_abstract_8php.html @@ -0,0 +1,156 @@ + + + + + + +TeamSpeak 3 PHP Framework: TeamSpeak3/Transport/Abstract.php File Reference + + + + + + + + + + + + + +
+
+ + + + + + + +
+
TeamSpeak 3 PHP Framework +  1.1.23 +
+
Copyright © Planet TeamSpeak. All rights reserved.
+
+
+ + + + + +
+
+ +
+
+
+ +
+ + + + +
+ +
+ +
+ +
+
Abstract.php File Reference
+
+
+ +

TeamSpeak 3 PHP Framework. +More...

+ +

Go to the source code of this file.

+ + + + + +

+Classes

class  TeamSpeak3_Transport_Abstract
 Abstract class for connecting to a TeamSpeak 3 Server through different ways of transport. More...
 
+ + + +

+Namespaces

 TeamSpeak3
 
+ + + +

+Constant Groups

 TeamSpeak3
 
+

Detailed Description

+

TeamSpeak 3 PHP Framework.

+
Id:
Abstract.php 10/11/2013 11:35:22 scp
+

This program is free software: you can redistribute it and/or modify it under the terms of the GNU General Public License as published by the Free Software Foundation, either version 3 of the License, or (at your option) any later version.

+

This program is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License for more details.

+

You should have received a copy of the GNU General Public License along with this program. If not, see http://www.gnu.org/licenses/.

+ +

Definition in file Abstract.php.

+
+
+ + + + diff --git a/lib/docs/html/_transport_2_abstract_8php_source.html b/lib/docs/html/_transport_2_abstract_8php_source.html new file mode 100644 index 0000000..578abe6 --- /dev/null +++ b/lib/docs/html/_transport_2_abstract_8php_source.html @@ -0,0 +1,390 @@ + + + + + + +TeamSpeak 3 PHP Framework: TeamSpeak3/Transport/Abstract.php Source File + + + + + + + + + + + + + +
+
+ + + + + + + +
+
TeamSpeak 3 PHP Framework +  1.1.23 +
+
Copyright © Planet TeamSpeak. All rights reserved.
+
+
+ + + + + +
+
+ +
+
+
+ +
+ + + + +
+ +
+ +
+
+
Abstract.php
+
+
+Go to the documentation of this file.
1 <?php
+
2 
+
3 /**
+
4  * @file
+
5  * TeamSpeak 3 PHP Framework
+
6  *
+
7  * $Id: Abstract.php 10/11/2013 11:35:22 scp@orilla $
+
8  *
+
9  * This program is free software: you can redistribute it and/or modify
+
10  * it under the terms of the GNU General Public License as published by
+
11  * the Free Software Foundation, either version 3 of the License, or
+
12  * (at your option) any later version.
+
13  *
+
14  * This program is distributed in the hope that it will be useful,
+
15  * but WITHOUT ANY WARRANTY; without even the implied warranty of
+
16  * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+
17  * GNU General Public License for more details.
+
18  *
+
19  * You should have received a copy of the GNU General Public License
+
20  * along with this program. If not, see <http://www.gnu.org/licenses/>.
+
21  *
+
22  * @package TeamSpeak3
+
23  * @version 1.1.23
+
24  * @author Sven 'ScP' Paulsen
+
25  * @copyright Copyright (c) 2010 by Planet TeamSpeak. All rights reserved.
+
26  */
+
27 
+
28 /**
+
29  * @class TeamSpeak3_Transport_Abstract
+
30  * @brief Abstract class for connecting to a TeamSpeak 3 Server through different ways of transport.
+
31  */
+ +
33 {
+
34  /**
+
35  * Stores user-provided configuration settings.
+
36  *
+
37  * @var array
+
38  */
+
39  protected $config = null;
+
40 
+
41  /**
+
42  * Stores the stream resource of the connection.
+
43  *
+
44  * @var resource
+
45  */
+
46  protected $stream = null;
+
47 
+
48  /**
+
49  * Stores the TeamSpeak3_Adapter_Abstract object using this transport.
+
50  *
+
51  * @var TeamSpeak3_Adapter_Abstract
+
52  */
+
53  protected $adapter = null;
+
54 
+
55  /**
+
56  * The TeamSpeak3_Transport_Abstract constructor.
+
57  *
+
58  * @param array $config
+
59  * @throws TeamSpeak3_Transport_Exception
+
60  * @return TeamSpeak3_Transport_Abstract
+
61  */
+
62  public function __construct(array $config)
+
63  {
+
64  if(!array_key_exists("host", $config))
+
65  {
+
66  throw new TeamSpeak3_Transport_Exception("config must have a key for 'host' which specifies the server host name");
+
67  }
+
68 
+
69  if(!array_key_exists("port", $config))
+
70  {
+
71  throw new TeamSpeak3_Transport_Exception("config must have a key for 'port' which specifies the server port number");
+
72  }
+
73 
+
74  if(!array_key_exists("timeout", $config))
+
75  {
+
76  $config["timeout"] = 10;
+
77  }
+
78 
+
79  if(!array_key_exists("blocking", $config))
+
80  {
+
81  $config["blocking"] = 1;
+
82  }
+
83 
+
84  $this->config = $config;
+
85  }
+
86 
+
87  /**
+
88  * Commit pending data.
+
89  *
+
90  * @return array
+
91  */
+
92  public function __sleep()
+
93  {
+
94  return array("config");
+
95  }
+
96 
+
97  /**
+
98  * Reconnects to the remote server.
+
99  *
+
100  * @return void
+
101  */
+
102  public function __wakeup()
+
103  {
+
104  $this->connect();
+
105  }
+
106 
+
107  /**
+
108  * The TeamSpeak3_Transport_Abstract destructor.
+
109  *
+
110  * @return void
+
111  */
+
112  public function __destruct()
+
113  {
+
114  if($this->adapter instanceof TeamSpeak3_Adapter_Abstract)
+
115  {
+
116  $this->adapter->__destruct();
+
117  }
+
118 
+
119  $this->disconnect();
+
120  }
+
121 
+
122  /**
+
123  * Connects to a remote server.
+
124  *
+
125  * @throws TeamSpeak3_Transport_Exception
+
126  * @return void
+
127  */
+
128  abstract public function connect();
+
129 
+
130  /**
+
131  * Disconnects from a remote server.
+
132  *
+
133  * @return void
+
134  */
+
135  abstract public function disconnect();
+
136 
+
137  /**
+
138  * Reads data from the stream.
+
139  *
+
140  * @param integer $length
+
141  * @throws TeamSpeak3_Transport_Exception
+
142  * @return TeamSpeak3_Helper_String
+
143  */
+
144  abstract public function read($length = 4096);
+
145 
+
146  /**
+
147  * Writes data to the stream.
+
148  *
+
149  * @param string $data
+
150  * @return void
+
151  */
+
152  abstract public function send($data);
+
153 
+
154  /**
+
155  * Returns the underlying stream resource.
+
156  *
+
157  * @return resource
+
158  */
+
159  public function getStream()
+
160  {
+
161  return $this->stream;
+
162  }
+
163 
+
164  /**
+
165  * Returns the configuration variables in this adapter.
+
166  *
+
167  * @param string $key
+
168  * @param mixed $default
+
169  * @return array
+
170  */
+
171  public function getConfig($key = null, $default = null)
+
172  {
+
173  if($key !== null)
+
174  {
+
175  return array_key_exists($key, $this->config) ? $this->config[$key] : $default;
+
176  }
+
177 
+
178  return $this->config;
+
179  }
+
180 
+
181  /**
+
182  * Sets the TeamSpeak3_Adapter_Abstract object using this transport.
+
183  *
+
184  * @param TeamSpeak3_Adapter_Abstract $adapter
+
185  * @return void
+
186  */
+
187  public function setAdapter(TeamSpeak3_Adapter_Abstract $adapter)
+
188  {
+
189  $this->adapter = $adapter;
+
190  }
+
191 
+
192  /**
+
193  * Returns the TeamSpeak3_Adapter_Abstract object using this transport.
+
194  *
+
195  * @return TeamSpeak3_Adapter_Abstract
+
196  */
+
197  public function getAdapter()
+
198  {
+
199  return $this->adapter;
+
200  }
+
201 
+
202  /**
+
203  * Returns the adapter type.
+
204  *
+
205  * @return string
+
206  */
+
207  public function getAdapterType()
+
208  {
+
209  if($this->adapter instanceof TeamSpeak3_Adapter_Abstract)
+
210  {
+
211  $string = TeamSpeak3_Helper_String::factory(get_class($this->adapter));
+
212 
+
213  return $string->substr($string->findLast("_"))->replace(array("_", " "), "")->toString();
+
214  }
+
215 
+
216  return "Unknown";
+
217  }
+
218 
+
219  /**
+
220  * Returns header/meta data from stream pointer.
+
221  *
+
222  * @throws TeamSpeak3_Transport_Exception
+
223  * @return array
+
224  */
+
225  public function getMetaData()
+
226  {
+
227  if($this->stream === null)
+
228  {
+
229  throw new TeamSpeak3_Transport_Exception("unable to retrieve header/meta data from stream pointer");
+
230  }
+
231 
+
232  return stream_get_meta_data($this->stream);
+
233  }
+
234 
+
235  /**
+
236  * Returns TRUE if the transport is connected.
+
237  *
+
238  * @return boolean
+
239  */
+
240  public function isConnected()
+
241  {
+
242  return (is_resource($this->stream)) ? TRUE : FALSE;
+
243  }
+
244 
+
245  /**
+
246  * Blocks a stream until data is available for reading if the stream is connected
+
247  * in non-blocking mode.
+
248  *
+
249  * @param integer $time
+
250  * @return void
+
251  */
+
252  protected function waitForReadyRead($time = 0)
+
253  {
+
254  if(!$this->isConnected() || $this->config["blocking"]) return;
+
255 
+
256  do {
+
257  $read = array($this->stream);
+
258  $null = null;
+
259 
+
260  if($time)
+
261  {
+
262  TeamSpeak3_Helper_Signal::getInstance()->emit(strtolower($this->getAdapterType()) . "WaitTimeout", $time, $this->getAdapter());
+
263  }
+
264 
+
265  $time = $time+$this->config["timeout"];
+
266  } while(@stream_select($read, $null, $null, $this->config["timeout"]) == 0);
+
267  }
+
268 }
+
+
+ + + + diff --git a/lib/docs/html/_transport_2_exception_8php.html b/lib/docs/html/_transport_2_exception_8php.html new file mode 100644 index 0000000..f001c4d --- /dev/null +++ b/lib/docs/html/_transport_2_exception_8php.html @@ -0,0 +1,156 @@ + + + + + + +TeamSpeak 3 PHP Framework: TeamSpeak3/Transport/Exception.php File Reference + + + + + + + + + + + + + +
+
+ + + + + + + +
+
TeamSpeak 3 PHP Framework +  1.1.23 +
+
Copyright © Planet TeamSpeak. All rights reserved.
+
+
+ + + + + +
+
+ +
+
+
+ +
+ + + + +
+ +
+ +
+ +
+
Exception.php File Reference
+
+
+ +

TeamSpeak 3 PHP Framework. +More...

+ +

Go to the source code of this file.

+ + + + + +

+Classes

class  TeamSpeak3_Transport_Exception
 Enhanced exception class for TeamSpeak3_Transport_Abstract objects. More...
 
+ + + +

+Namespaces

 TeamSpeak3
 
+ + + +

+Constant Groups

 TeamSpeak3
 
+

Detailed Description

+

TeamSpeak 3 PHP Framework.

+
Id:
Exception.php 10/11/2013 11:35:22 scp
+

This program is free software: you can redistribute it and/or modify it under the terms of the GNU General Public License as published by the Free Software Foundation, either version 3 of the License, or (at your option) any later version.

+

This program is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License for more details.

+

You should have received a copy of the GNU General Public License along with this program. If not, see http://www.gnu.org/licenses/.

+ +

Definition in file Exception.php.

+
+
+ + + + diff --git a/lib/docs/html/_transport_2_exception_8php_source.html b/lib/docs/html/_transport_2_exception_8php_source.html new file mode 100644 index 0000000..b3e1d72 --- /dev/null +++ b/lib/docs/html/_transport_2_exception_8php_source.html @@ -0,0 +1,154 @@ + + + + + + +TeamSpeak 3 PHP Framework: TeamSpeak3/Transport/Exception.php Source File + + + + + + + + + + + + + +
+
+ + + + + + + +
+
TeamSpeak 3 PHP Framework +  1.1.23 +
+
Copyright © Planet TeamSpeak. All rights reserved.
+
+
+ + + + + +
+
+ +
+
+
+ +
+ + + + +
+ +
+ +
+
+
Exception.php
+
+
+Go to the documentation of this file.
1 <?php
+
2 
+
3 /**
+
4  * @file
+
5  * TeamSpeak 3 PHP Framework
+
6  *
+
7  * $Id: Exception.php 10/11/2013 11:35:22 scp@orilla $
+
8  *
+
9  * This program is free software: you can redistribute it and/or modify
+
10  * it under the terms of the GNU General Public License as published by
+
11  * the Free Software Foundation, either version 3 of the License, or
+
12  * (at your option) any later version.
+
13  *
+
14  * This program is distributed in the hope that it will be useful,
+
15  * but WITHOUT ANY WARRANTY; without even the implied warranty of
+
16  * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+
17  * GNU General Public License for more details.
+
18  *
+
19  * You should have received a copy of the GNU General Public License
+
20  * along with this program. If not, see <http://www.gnu.org/licenses/>.
+
21  *
+
22  * @package TeamSpeak3
+
23  * @version 1.1.23
+
24  * @author Sven 'ScP' Paulsen
+
25  * @copyright Copyright (c) 2010 by Planet TeamSpeak. All rights reserved.
+
26  */
+
27 
+
28 /**
+
29  * @class TeamSpeak3_Transport_Exception
+
30  * @brief Enhanced exception class for TeamSpeak3_Transport_Abstract objects.
+
31  */
+ +
+
+ + + + diff --git a/lib/docs/html/_u_d_p_8php.html b/lib/docs/html/_u_d_p_8php.html new file mode 100644 index 0000000..b86d036 --- /dev/null +++ b/lib/docs/html/_u_d_p_8php.html @@ -0,0 +1,156 @@ + + + + + + +TeamSpeak 3 PHP Framework: TeamSpeak3/Transport/UDP.php File Reference + + + + + + + + + + + + + +
+
+ + + + + + + +
+
TeamSpeak 3 PHP Framework +  1.1.23 +
+
Copyright © Planet TeamSpeak. All rights reserved.
+
+
+ + + + + +
+
+ +
+
+
+ +
+ + + + +
+ +
+ +
+ +
+
UDP.php File Reference
+
+
+ +

TeamSpeak 3 PHP Framework. +More...

+ +

Go to the source code of this file.

+ + + + + +

+Classes

class  TeamSpeak3_Transport_UDP
 Class for connecting to a remote server through UDP. More...
 
+ + + +

+Namespaces

 TeamSpeak3
 
+ + + +

+Constant Groups

 TeamSpeak3
 
+

Detailed Description

+

TeamSpeak 3 PHP Framework.

+
Id:
UDP.php 10/11/2013 11:35:22 scp
+

This program is free software: you can redistribute it and/or modify it under the terms of the GNU General Public License as published by the Free Software Foundation, either version 3 of the License, or (at your option) any later version.

+

This program is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License for more details.

+

You should have received a copy of the GNU General Public License along with this program. If not, see http://www.gnu.org/licenses/.

+ +

Definition in file UDP.php.

+
+
+ + + + diff --git a/lib/docs/html/_u_d_p_8php_source.html b/lib/docs/html/_u_d_p_8php_source.html new file mode 100644 index 0000000..465d38e --- /dev/null +++ b/lib/docs/html/_u_d_p_8php_source.html @@ -0,0 +1,235 @@ + + + + + + +TeamSpeak 3 PHP Framework: TeamSpeak3/Transport/UDP.php Source File + + + + + + + + + + + + + +
+
+ + + + + + + +
+
TeamSpeak 3 PHP Framework +  1.1.23 +
+
Copyright © Planet TeamSpeak. All rights reserved.
+
+
+ + + + + +
+
+ +
+
+
+ +
+ + + + +
+ +
+ +
+
+
UDP.php
+
+
+Go to the documentation of this file.
1 <?php
+
2 
+
3 /**
+
4  * @file
+
5  * TeamSpeak 3 PHP Framework
+
6  *
+
7  * $Id: UDP.php 10/11/2013 11:35:22 scp@orilla $
+
8  *
+
9  * This program is free software: you can redistribute it and/or modify
+
10  * it under the terms of the GNU General Public License as published by
+
11  * the Free Software Foundation, either version 3 of the License, or
+
12  * (at your option) any later version.
+
13  *
+
14  * This program is distributed in the hope that it will be useful,
+
15  * but WITHOUT ANY WARRANTY; without even the implied warranty of
+
16  * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+
17  * GNU General Public License for more details.
+
18  *
+
19  * You should have received a copy of the GNU General Public License
+
20  * along with this program. If not, see <http://www.gnu.org/licenses/>.
+
21  *
+
22  * @package TeamSpeak3
+
23  * @version 1.1.23
+
24  * @author Sven 'ScP' Paulsen
+
25  * @copyright Copyright (c) 2010 by Planet TeamSpeak. All rights reserved.
+
26  */
+
27 
+
28 /**
+
29  * @class TeamSpeak3_Transport_UDP
+
30  * @brief Class for connecting to a remote server through UDP.
+
31  */
+ +
33 {
+
34  /**
+
35  * Connects to a remote server.
+
36  *
+
37  * @throws TeamSpeak3_Transport_Exception
+
38  * @return void
+
39  */
+
40  public function connect()
+
41  {
+
42  if($this->stream !== null) return;
+
43 
+
44  $host = strval($this->config["host"]);
+
45  $port = strval($this->config["port"]);
+
46 
+
47  $address = "udp://" . $host . ":" . $port;
+
48  $timeout = intval($this->config["timeout"]);
+
49 
+
50  $this->stream = @stream_socket_client($address, $errno, $errstr, $timeout);
+
51 
+
52  if($this->stream === FALSE)
+
53  {
+
54  throw new TeamSpeak3_Transport_Exception(TeamSpeak3_Helper_String::factory($errstr)->toUtf8()->toString(), $errno);
+
55  }
+
56 
+
57  @stream_set_timeout($this->stream, $timeout);
+
58  @stream_set_blocking($this->stream, $this->config["blocking"] ? 1 : 0);
+
59  }
+
60 
+
61  /**
+
62  * Disconnects from a remote server.
+
63  *
+
64  * @return void
+
65  */
+
66  public function disconnect()
+
67  {
+
68  if($this->stream === null) return;
+
69 
+
70  $this->stream = null;
+
71 
+
72  TeamSpeak3_Helper_Signal::getInstance()->emit(strtolower($this->getAdapterType()) . "Disconnected");
+
73  }
+
74 
+
75  /**
+
76  * Reads data from the stream.
+
77  *
+
78  * @param integer $length
+
79  * @throws TeamSpeak3_Transport_Exception
+
80  * @return TeamSpeak3_Helper_String
+
81  */
+
82  public function read($length = 4096)
+
83  {
+
84  $this->connect();
+
85  $this->waitForReadyRead();
+
86 
+
87  $data = @fread($this->stream, $length);
+
88 
+
89  TeamSpeak3_Helper_Signal::getInstance()->emit(strtolower($this->getAdapterType()) . "DataRead", $data);
+
90 
+
91  if($data === FALSE)
+
92  {
+
93  throw new TeamSpeak3_Transport_Exception("connection to server '" . $this->config["host"] . ":" . $this->config["port"] . "' lost");
+
94  }
+
95 
+
96  return new TeamSpeak3_Helper_String($data);
+
97  }
+
98 
+
99  /**
+
100  * Writes data to the stream.
+
101  *
+
102  * @param string $data
+
103  * @return void
+
104  */
+
105  public function send($data)
+
106  {
+
107  $this->connect();
+
108 
+
109  @stream_socket_sendto($this->stream, $data);
+
110 
+
111  TeamSpeak3_Helper_Signal::getInstance()->emit(strtolower($this->getAdapterType()) . "DataSend", $data);
+
112  }
+
113 }
+
+
+ + + + diff --git a/lib/docs/html/_update_8php.html b/lib/docs/html/_update_8php.html new file mode 100644 index 0000000..fb52561 --- /dev/null +++ b/lib/docs/html/_update_8php.html @@ -0,0 +1,156 @@ + + + + + + +TeamSpeak 3 PHP Framework: TeamSpeak3/Adapter/Update.php File Reference + + + + + + + + + + + + + +
+
+ + + + + + + +
+
TeamSpeak 3 PHP Framework +  1.1.23 +
+
Copyright © Planet TeamSpeak. All rights reserved.
+
+
+ + + + + +
+
+ +
+
+
+ +
+ + + + +
+ +
+ +
+ +
+
Update.php File Reference
+
+
+ +

TeamSpeak 3 PHP Framework. +More...

+ +

Go to the source code of this file.

+ + + + + +

+Classes

class  TeamSpeak3_Adapter_Update
 Provides methods to query the latest TeamSpeak 3 build numbers from the master server. More...
 
+ + + +

+Namespaces

 TeamSpeak3
 
+ + + +

+Constant Groups

 TeamSpeak3
 
+

Detailed Description

+

TeamSpeak 3 PHP Framework.

+
Id:
Update.php 10/11/2013 11:35:21 scp
+

This program is free software: you can redistribute it and/or modify it under the terms of the GNU General Public License as published by the Free Software Foundation, either version 3 of the License, or (at your option) any later version.

+

This program is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License for more details.

+

You should have received a copy of the GNU General Public License along with this program. If not, see http://www.gnu.org/licenses/.

+ +

Definition in file Update.php.

+
+
+ + + + diff --git a/lib/docs/html/_update_8php_source.html b/lib/docs/html/_update_8php_source.html new file mode 100644 index 0000000..00df594 --- /dev/null +++ b/lib/docs/html/_update_8php_source.html @@ -0,0 +1,339 @@ + + + + + + +TeamSpeak 3 PHP Framework: TeamSpeak3/Adapter/Update.php Source File + + + + + + + + + + + + + +
+
+ + + + + + + +
+
TeamSpeak 3 PHP Framework +  1.1.23 +
+
Copyright © Planet TeamSpeak. All rights reserved.
+
+
+ + + + + +
+
+ +
+
+
+ +
+ + + + +
+ +
+ +
+
+
Update.php
+
+
+Go to the documentation of this file.
1 <?php
+
2 
+
3 /**
+
4  * @file
+
5  * TeamSpeak 3 PHP Framework
+
6  *
+
7  * $Id: Update.php 10/11/2013 11:35:21 scp@orilla $
+
8  *
+
9  * This program is free software: you can redistribute it and/or modify
+
10  * it under the terms of the GNU General Public License as published by
+
11  * the Free Software Foundation, either version 3 of the License, or
+
12  * (at your option) any later version.
+
13  *
+
14  * This program is distributed in the hope that it will be useful,
+
15  * but WITHOUT ANY WARRANTY; without even the implied warranty of
+
16  * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+
17  * GNU General Public License for more details.
+
18  *
+
19  * You should have received a copy of the GNU General Public License
+
20  * along with this program. If not, see <http://www.gnu.org/licenses/>.
+
21  *
+
22  * @package TeamSpeak3
+
23  * @version 1.1.23
+
24  * @author Sven 'ScP' Paulsen
+
25  * @copyright Copyright (c) 2010 by Planet TeamSpeak. All rights reserved.
+
26  */
+
27 
+
28 /**
+
29  * @class TeamSpeak3_Adapter_Update
+
30  * @brief Provides methods to query the latest TeamSpeak 3 build numbers from the master server.
+
31  */
+ +
33 {
+
34  /**
+
35  * The IPv4 address or FQDN of the TeamSpeak Systems update server.
+
36  *
+
37  * @var string
+
38  */
+
39  protected $default_host = "update.teamspeak.com";
+
40 
+
41  /**
+
42  * The UDP port number of the TeamSpeak Systems update server.
+
43  *
+
44  * @var integer
+
45  */
+
46  protected $default_port = 17384;
+
47 
+
48  /**
+
49  * Stores an array containing the latest build numbers (integer timestamps).
+
50  *
+
51  * @var array
+
52  */
+
53  protected $build_datetimes = null;
+
54 
+
55  /**
+
56  * Stores an array containing the latest version strings.
+
57  *
+
58  * @var array
+
59  */
+
60  protected $version_strings = null;
+
61 
+
62  /**
+
63  * Connects the TeamSpeak3_Transport_Abstract object and performs initial actions on the remote
+
64  * server.
+
65  *
+
66  * @throws TeamSpeak3_Adapter_Update_Exception
+
67  * @return void
+
68  */
+
69  public function syn()
+
70  {
+
71  if(!isset($this->options["host"]) || empty($this->options["host"])) $this->options["host"] = $this->default_host;
+
72  if(!isset($this->options["port"]) || empty($this->options["port"])) $this->options["port"] = $this->default_port;
+
73 
+
74  $this->initTransport($this->options, "TeamSpeak3_Transport_UDP");
+
75  $this->transport->setAdapter($this);
+
76 
+
77  TeamSpeak3_Helper_Profiler::init(spl_object_hash($this));
+
78 
+ +
80 
+
81  if(!preg_match_all("/,?(\d+)#([0-9a-zA-Z\._-]+),?/", $this->getTransport()->read(96), $matches) || !isset($matches[1]) || !isset($matches[2]))
+
82  {
+
83  throw new TeamSpeak3_Adapter_Update_Exception("invalid reply from the server");
+
84  }
+
85 
+
86  $this->build_datetimes = $matches[1];
+
87  $this->version_strings = $matches[2];
+
88 
+
89  TeamSpeak3_Helper_Signal::getInstance()->emit("updateConnected", $this);
+
90  }
+
91 
+
92  /**
+
93  * The TeamSpeak3_Adapter_Update destructor.
+
94  *
+
95  * @return void
+
96  */
+
97  public function __destruct()
+
98  {
+
99  if($this->getTransport() instanceof TeamSpeak3_Transport_Abstract && $this->getTransport()->isConnected())
+
100  {
+
101  $this->getTransport()->disconnect();
+
102  }
+
103  }
+
104 
+
105  /**
+
106  * Returns the current build number for a specified update channel. Note that since version
+
107  * 3.0.0, the build number represents an integer timestamp. $channel must be set to one of
+
108  * the following values:
+
109  *
+
110  * - stable
+
111  * - beta
+
112  * - alpha
+
113  * - server
+
114  *
+
115  * @param string $channel
+
116  * @throws TeamSpeak3_Adapter_Update_Exception
+
117  * @return integer
+
118  */
+
119  public function getRev($channel = "stable")
+
120  {
+
121  switch($channel)
+
122  {
+
123  case "stable":
+
124  return isset($this->build_datetimes[0]) ? $this->build_datetimes[0] : null;
+
125 
+
126  case "beta":
+
127  return isset($this->build_datetimes[1]) ? $this->build_datetimes[1] : null;
+
128 
+
129  case "alpha":
+
130  return isset($this->build_datetimes[2]) ? $this->build_datetimes[2] : null;
+
131 
+
132  case "server":
+
133  return isset($this->build_datetimes[3]) ? $this->build_datetimes[3] : null;
+
134 
+
135  default:
+
136  throw new TeamSpeak3_Adapter_Update_Exception("invalid update channel identifier (" . $channel . ")");
+
137  }
+
138  }
+
139 
+
140  /**
+
141  * Returns the current version string for a specified update channel. $channel must be set to
+
142  * one of the following values:
+
143  *
+
144  * - stable
+
145  * - beta
+
146  * - alpha
+
147  * - server
+
148  *
+
149  * @param string $channel
+
150  * @throws TeamSpeak3_Adapter_Update_Exception
+
151  * @return integer
+
152  */
+
153  public function getVersion($channel = "stable")
+
154  {
+
155  switch($channel)
+
156  {
+
157  case "stable":
+
158  return isset($this->version_strings[0]) ? $this->version_strings[0] : null;
+
159 
+
160  case "beta":
+
161  return isset($this->version_strings[1]) ? $this->version_strings[1] : null;
+
162 
+
163  case "alpha":
+
164  return isset($this->version_strings[2]) ? $this->version_strings[2] : null;
+
165 
+
166  case "server":
+
167  return isset($this->version_strings[3]) ? $this->version_strings[3] : null;
+
168 
+
169  default:
+
170  throw new TeamSpeak3_Adapter_Update_Exception("invalid update channel identifier (" . $channel . ")");
+
171  }
+
172  }
+
173 
+
174  /**
+
175  * Alias for getRev() using the 'stable' update channel.
+
176  *
+
177  * @param string $channel
+
178  * @return integer
+
179  */
+
180  public function getClientRev()
+
181  {
+
182  return $this->getRev("stable");
+
183  }
+
184 
+
185  /**
+
186  * Alias for getRev() using the 'server' update channel.
+
187  *
+
188  * @param string $channel
+
189  * @return integer
+
190  */
+
191  public function getServerRev()
+
192  {
+
193  return $this->getRev("server");
+
194  }
+
195 
+
196  /**
+
197  * Alias for getVersion() using the 'stable' update channel.
+
198  *
+
199  * @param string $channel
+
200  * @return integer
+
201  */
+
202  public function getClientVersion()
+
203  {
+
204  return $this->getVersion("stable");
+
205  }
+
206 
+
207  /**
+
208  * Alias for getVersion() using the 'server' update channel.
+
209  *
+
210  * @param string $channel
+
211  * @return integer
+
212  */
+
213  public function getServerVersion()
+
214  {
+
215  return $this->getVersion("server");
+
216  }
+
217 }
+
+
+ + + + diff --git a/lib/docs/html/_uri_8php.html b/lib/docs/html/_uri_8php.html new file mode 100644 index 0000000..e61edc4 --- /dev/null +++ b/lib/docs/html/_uri_8php.html @@ -0,0 +1,156 @@ + + + + + + +TeamSpeak 3 PHP Framework: TeamSpeak3/Helper/Uri.php File Reference + + + + + + + + + + + + + +
+
+ + + + + + + +
+
TeamSpeak 3 PHP Framework +  1.1.23 +
+
Copyright © Planet TeamSpeak. All rights reserved.
+
+
+ + + + + +
+
+ +
+
+
+ +
+ + + + +
+ +
+ +
+ +
+
Uri.php File Reference
+
+
+ +

TeamSpeak 3 PHP Framework. +More...

+ +

Go to the source code of this file.

+ + + + + +

+Classes

class  TeamSpeak3_Helper_Uri
 Helper class for URI handling. More...
 
+ + + +

+Namespaces

 TeamSpeak3
 
+ + + +

+Constant Groups

 TeamSpeak3
 
+

Detailed Description

+

TeamSpeak 3 PHP Framework.

+
Id:
Uri.php 10/11/2013 11:35:21 scp
+

This program is free software: you can redistribute it and/or modify it under the terms of the GNU General Public License as published by the Free Software Foundation, either version 3 of the License, or (at your option) any later version.

+

This program is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License for more details.

+

You should have received a copy of the GNU General Public License along with this program. If not, see http://www.gnu.org/licenses/.

+ +

Definition in file Uri.php.

+
+
+ + + + diff --git a/lib/docs/html/_uri_8php_source.html b/lib/docs/html/_uri_8php_source.html new file mode 100644 index 0000000..b384ea1 --- /dev/null +++ b/lib/docs/html/_uri_8php_source.html @@ -0,0 +1,839 @@ + + + + + + +TeamSpeak 3 PHP Framework: TeamSpeak3/Helper/Uri.php Source File + + + + + + + + + + + + + +
+
+ + + + + + + +
+
TeamSpeak 3 PHP Framework +  1.1.23 +
+
Copyright © Planet TeamSpeak. All rights reserved.
+
+
+ + + + + +
+
+ +
+
+
+ +
+ + + + +
+ +
+ +
+
+
Uri.php
+
+
+Go to the documentation of this file.
1 <?php
+
2 
+
3 /**
+
4  * @file
+
5  * TeamSpeak 3 PHP Framework
+
6  *
+
7  * $Id: Uri.php 10/11/2013 11:35:21 scp@orilla $
+
8  *
+
9  * This program is free software: you can redistribute it and/or modify
+
10  * it under the terms of the GNU General Public License as published by
+
11  * the Free Software Foundation, either version 3 of the License, or
+
12  * (at your option) any later version.
+
13  *
+
14  * This program is distributed in the hope that it will be useful,
+
15  * but WITHOUT ANY WARRANTY; without even the implied warranty of
+
16  * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+
17  * GNU General Public License for more details.
+
18  *
+
19  * You should have received a copy of the GNU General Public License
+
20  * along with this program. If not, see <http://www.gnu.org/licenses/>.
+
21  *
+
22  * @package TeamSpeak3
+
23  * @version 1.1.23
+
24  * @author Sven 'ScP' Paulsen
+
25  * @copyright Copyright (c) 2010 by Planet TeamSpeak. All rights reserved.
+
26  */
+
27 
+
28 /**
+
29  * @class TeamSpeak3_Helper_Uri
+
30  * @brief Helper class for URI handling.
+
31  */
+ +
33 {
+
34  /**
+
35  * Stores the URI scheme.
+
36  *
+
37  * @var string
+
38  */
+
39  protected $scheme = null;
+
40 
+
41  /**
+
42  * Stores the URI username
+
43  *
+
44  * @var string
+
45  */
+
46  protected $user = null;
+
47 
+
48  /**
+
49  * Stores the URI password.
+
50  *
+
51  * @var string
+
52  */
+
53  protected $pass = null;
+
54 
+
55  /**
+
56  * Stores the URI host.
+
57  *
+
58  * @var string
+
59  */
+
60  protected $host = null;
+
61 
+
62  /**
+
63  * Stores the URI port.
+
64  *
+
65  * @var string
+
66  */
+
67  protected $port = null;
+
68 
+
69  /**
+
70  * Stores the URI path.
+
71  *
+
72  * @var string
+
73  */
+
74  protected $path = null;
+
75 
+
76  /**
+
77  * Stores the URI query string.
+
78  *
+
79  * @var string
+
80  */
+
81  protected $query = null;
+
82 
+
83  /**
+
84  * Stores the URI fragment string.
+
85  *
+
86  * @var string
+
87  */
+
88  protected $fragment = null;
+
89 
+
90  /**
+
91  * Stores grammar rules for validation via regex.
+
92  *
+
93  * @var array
+
94  */
+
95  protected $regex = array();
+
96 
+
97  /**
+
98  * The TeamSpeak3_Helper_Uri constructor.
+
99  *
+
100  * @param string $uri
+
101  * @throws TeamSpeak3_Helper_Exception
+
102  * @return TeamSpeak3_Helper_Uri
+
103  */
+
104  public function __construct($uri)
+
105  {
+
106  $uri = explode(":", strval($uri), 2);
+
107 
+
108  $this->scheme = strtolower($uri[0]);
+
109  $uriString = isset($uri[1]) ? $uri[1] : "";
+
110 
+
111  if(!ctype_alnum($this->scheme))
+
112  {
+
113  throw new TeamSpeak3_Helper_Exception("invalid URI scheme '" . $this->scheme . "' supplied");
+
114  }
+
115 
+
116  /* grammar rules for validation */
+
117  $this->regex["alphanum"] = "[^\W_]";
+
118  $this->regex["escaped"] = "(?:%[\da-fA-F]{2})";
+
119  $this->regex["mark"] = "[-_.!~*'()\[\]]";
+
120  $this->regex["reserved"] = "[;\/?:@&=+$,]";
+
121  $this->regex["unreserved"] = "(?:" . $this->regex["alphanum"] . "|" . $this->regex["mark"] . ")";
+
122  $this->regex["segment"] = "(?:(?:" . $this->regex["unreserved"] . "|" . $this->regex["escaped"] . "|[:@&=+$,;])*)";
+
123  $this->regex["path"] = "(?:\/" . $this->regex["segment"] . "?)+";
+
124  $this->regex["uric"] = "(?:" . $this->regex["reserved"] . "|" . $this->regex["unreserved"] . "|" . $this->regex["escaped"] . ")";
+
125 
+
126  if(strlen($uriString) > 0)
+
127  {
+
128  $this->parseUri($uriString);
+
129  }
+
130 
+
131  if(!$this->isValid())
+
132  {
+
133  throw new TeamSpeak3_Helper_Exception("invalid URI supplied");
+
134  }
+
135  }
+
136 
+
137  /**
+
138  * Parses the scheme-specific portion of the URI and place its parts into instance variables.
+
139  *
+
140  * @throws TeamSpeak3_Helper_Exception
+
141  * @return void
+
142  */
+
143  protected function parseUri($uriString = '')
+
144  {
+
145  $status = @preg_match("~^((//)([^/?#]*))([^?#]*)(\?([^#]*))?(#(.*))?$~", $uriString, $matches);
+
146 
+
147  if($status === FALSE)
+
148  {
+
149  throw new TeamSpeak3_Helper_Exception("URI scheme-specific decomposition failed");
+
150  }
+
151 
+
152  if(!$status) return;
+
153 
+
154  $this->path = (isset($matches[4])) ? $matches[4] : '';
+
155  $this->query = (isset($matches[6])) ? $matches[6] : '';
+
156  $this->fragment = (isset($matches[8])) ? $matches[8] : '';
+
157 
+
158  $status = @preg_match("~^(([^:@]*)(:([^@]*))?@)?([^:]+)(:(.*))?$~", (isset($matches[3])) ? $matches[3] : "", $matches);
+
159 
+
160  if($status === FALSE)
+
161  {
+
162  throw new TeamSpeak3_Helper_Exception("URI scheme-specific authority decomposition failed");
+
163  }
+
164 
+
165  if(!$status) return;
+
166 
+
167  $this->user = isset($matches[2]) ? $matches[2] : "";
+
168  $this->pass = isset($matches[4]) ? $matches[4] : "";
+
169  $this->host = isset($matches[5]) ? $matches[5] : "";
+
170  $this->port = isset($matches[7]) ? $matches[7] : "";
+
171  }
+
172 
+
173  /**
+
174  * Validate the current URI from the instance variables.
+
175  *
+
176  * @return boolean
+
177  */
+
178  public function isValid()
+
179  {
+
180  return ($this->checkUser() && $this->checkPass() && $this->checkHost() && $this->checkPort() && $this->checkPath() && $this->checkQuery() && $this->checkFragment());
+
181  }
+
182 
+
183  /**
+
184  * Returns TRUE if a given URI is valid.
+
185  *
+
186  * @param string $uri
+
187  * @return boolean
+
188  */
+
189  public static function check($uri)
+
190  {
+
191  try
+
192  {
+
193  $uri = new self(strval($uri));
+
194  }
+
195  catch(Exception $e)
+
196  {
+
197  return FALSE;
+
198  }
+
199 
+
200  return $uri->valid();
+
201  }
+
202 
+
203  /**
+
204  * Returns TRUE if the URI has a scheme.
+
205  *
+
206  * @return boolean
+
207  */
+
208  public function hasScheme()
+
209  {
+
210  return strlen($this->scheme) ? TRUE : FALSE;
+
211  }
+
212 
+
213  /**
+
214  * Returns the scheme.
+
215  *
+
216  * @param mixed default
+
217  * @return TeamSpeak3_Helper_String
+
218  */
+
219  public function getScheme($default = null)
+
220  {
+
221  return ($this->hasScheme()) ? new TeamSpeak3_Helper_String($this->scheme) : $default;
+
222  }
+
223 
+
224  /**
+
225  * Returns TRUE if the username is valid.
+
226  *
+
227  * @param string $username
+
228  * @throws TeamSpeak3_Helper_Exception
+
229  * @return boolean
+
230  */
+
231  public function checkUser($username = null)
+
232  {
+
233  if($username === null)
+
234  {
+
235  $username = $this->user;
+
236  }
+
237 
+
238  if(strlen($username) == 0)
+
239  {
+
240  return TRUE;
+
241  }
+
242 
+
243  $pattern = "/^(" . $this->regex["alphanum"] . "|" . $this->regex["mark"] . "|" . $this->regex["escaped"] . "|[;:&=+$,])+$/";
+
244  $status = @preg_match($pattern, $username);
+
245 
+
246  if($status === FALSE)
+
247  {
+
248  throw new TeamSpeak3_Helper_Exception("URI username validation failed");
+
249  }
+
250 
+
251  return ($status == 1);
+
252  }
+
253 
+
254  /**
+
255  * Returns TRUE if the URI has a username.
+
256  *
+
257  * @return boolean
+
258  */
+
259  public function hasUser()
+
260  {
+
261  return strlen($this->user) ? TRUE : FALSE;
+
262  }
+
263 
+
264  /**
+
265  * Returns the username.
+
266  *
+
267  * @param mixed default
+
268  * @return TeamSpeak3_Helper_String
+
269  */
+
270  public function getUser($default = null)
+
271  {
+
272  return ($this->hasUser()) ? new TeamSpeak3_Helper_String($this->user) : $default;
+
273  }
+
274 
+
275  /**
+
276  * Returns TRUE if the password is valid.
+
277  *
+
278  * @param string $password
+
279  * @throws TeamSpeak3_Helper_Exception
+
280  * @return boolean
+
281  */
+
282  public function checkPass($password = null)
+
283  {
+
284  if($password === null) {
+
285  $password = $this->pass;
+
286  }
+
287 
+
288  if(strlen($password) == 0)
+
289  {
+
290  return TRUE;
+
291  }
+
292 
+
293  $pattern = "/^(" . $this->regex["alphanum"] . "|" . $this->regex["mark"] . "|" . $this->regex["escaped"] . "|[;:&=+$,])+$/";
+
294  $status = @preg_match($pattern, $password);
+
295 
+
296  if($status === FALSE)
+
297  {
+
298  throw new TeamSpeak3_Helper_Exception("URI password validation failed");
+
299  }
+
300 
+
301  return ($status == 1);
+
302  }
+
303 
+
304  /**
+
305  * Returns TRUE if the URI has a password.
+
306  *
+
307  * @return boolean
+
308  */
+
309  public function hasPass()
+
310  {
+
311  return strlen($this->pass) ? TRUE : FALSE;
+
312  }
+
313 
+
314  /**
+
315  * Returns the password.
+
316  *
+
317  * @param mixed default
+
318  * @return TeamSpeak3_Helper_String
+
319  */
+
320  public function getPass($default = null)
+
321  {
+
322  return ($this->hasPass()) ? new TeamSpeak3_Helper_String($this->pass) : $default;
+
323  }
+
324 
+
325  /**
+
326  * Returns TRUE if the host is valid.
+
327  *
+
328  * @param string $host
+
329  * @return boolean
+
330  */
+
331  public function checkHost($host = null)
+
332  {
+
333  if($host === null)
+
334  {
+
335  $host = $this->host;
+
336  }
+
337 
+
338  return TRUE;
+
339  }
+
340 
+
341  /**
+
342  * Returns TRUE if the URI has a host.
+
343  *
+
344  * @return boolean
+
345  */
+
346  public function hasHost()
+
347  {
+
348  return strlen($this->host) ? TRUE : FALSE;
+
349  }
+
350 
+
351  /**
+
352  * Returns the host.
+
353  *
+
354  * @param mixed default
+
355  * @return TeamSpeak3_Helper_String
+
356  */
+
357  public function getHost($default = null)
+
358  {
+
359  return ($this->hasHost()) ? new TeamSpeak3_Helper_String($this->host) : $default;
+
360  }
+
361 
+
362  /**
+
363  * Returns TRUE if the port is valid.
+
364  *
+
365  * @param integer $port
+
366  * @return boolean
+
367  */
+
368  public function checkPort($port = null)
+
369  {
+
370  if($port === null)
+
371  {
+
372  $port = $this->port;
+
373  }
+
374 
+
375  return TRUE;
+
376  }
+
377 
+
378  /**
+
379  * Returns TRUE if the URI has a port.
+
380  *
+
381  * @return boolean
+
382  */
+
383  public function hasPort()
+
384  {
+
385  return strlen($this->port) ? TRUE : FALSE;
+
386  }
+
387 
+
388  /**
+
389  * Returns the port.
+
390  *
+
391  * @param mixed default
+
392  * @return integer
+
393  */
+
394  public function getPort($default = null)
+
395  {
+
396  return ($this->hasPort()) ? intval($this->port) : $default;
+
397  }
+
398 
+
399  /**
+
400  * Returns TRUE if the path is valid.
+
401  *
+
402  * @param string $path
+
403  * @throws TeamSpeak3_Helper_Exception
+
404  * @return boolean
+
405  */
+
406  public function checkPath($path = null)
+
407  {
+
408  if($path === null)
+
409  {
+
410  $path = $this->path;
+
411  }
+
412 
+
413  if(strlen($path) == 0)
+
414  {
+
415  return TRUE;
+
416  }
+
417 
+
418  $pattern = "/^" . $this->regex["path"] . "$/";
+
419  $status = @preg_match($pattern, $path);
+
420 
+
421  if($status === FALSE)
+
422  {
+
423  throw new TeamSpeak3_Helper_Exception("URI path validation failed");
+
424  }
+
425 
+
426  return ($status == 1);
+
427  }
+
428 
+
429  /**
+
430  * Returns TRUE if the URI has a path.
+
431  *
+
432  * @return boolean
+
433  */
+
434  public function hasPath()
+
435  {
+
436  return strlen($this->path) ? TRUE : FALSE;
+
437  }
+
438 
+
439  /**
+
440  * Returns the path.
+
441  *
+
442  * @param mixed default
+
443  * @return TeamSpeak3_Helper_String
+
444  */
+
445  public function getPath($default = null)
+
446  {
+
447  return ($this->hasPath()) ? new TeamSpeak3_Helper_String($this->path) : $default;
+
448  }
+
449 
+
450  /**
+
451  * Returns TRUE if the query string is valid.
+
452  *
+
453  * @param string $query
+
454  * @throws TeamSpeak3_Helper_Exception
+
455  * @return boolean
+
456  */
+
457  public function checkQuery($query = null)
+
458  {
+
459  if($query === null)
+
460  {
+
461  $query = $this->query;
+
462  }
+
463 
+
464  if(strlen($query) == 0)
+
465  {
+
466  return TRUE;
+
467  }
+
468 
+
469  $pattern = "/^" . $this->regex["uric"] . "*$/";
+
470  $status = @preg_match($pattern, $query);
+
471 
+
472  if($status === FALSE)
+
473  {
+
474  throw new TeamSpeak3_Helper_Exception("URI query string validation failed");
+
475  }
+
476 
+
477  return ($status == 1);
+
478  }
+
479 
+
480  /**
+
481  * Returns TRUE if the URI has a query string.
+
482  *
+
483  * @return boolean
+
484  */
+
485  public function hasQuery()
+
486  {
+
487  return strlen($this->query) ? TRUE : FALSE;
+
488  }
+
489 
+
490  /**
+
491  * Returns an array containing the query string elements.
+
492  *
+
493  * @param mixed $default
+
494  * @return array
+
495  */
+
496  public function getQuery($default = array())
+
497  {
+
498  if(!$this->hasQuery())
+
499  {
+
500  return $default;
+
501  }
+
502 
+
503  parse_str($this->query, $queryArray);
+
504 
+
505  return $queryArray;
+
506  }
+
507 
+
508  /**
+
509  * Returns TRUE if the URI has a query variable.
+
510  *
+
511  * @return boolean
+
512  */
+
513  public function hasQueryVar($key)
+
514  {
+
515  if(!$this->hasQuery()) return FALSE;
+
516 
+
517  parse_str($this->query, $queryArray);
+
518 
+
519  return array_key_exists($key, $queryArray) ? TRUE : FALSE;
+
520  }
+
521 
+
522  /**
+
523  * Returns a single variable from the query string.
+
524  *
+
525  * @param string $key
+
526  * @param mixed $default
+
527  * @return mixed
+
528  */
+
529  public function getQueryVar($key, $default = null)
+
530  {
+
531  if(!$this->hasQuery()) return $default;
+
532 
+
533  parse_str($this->query, $queryArray);
+
534 
+
535  if(array_key_exists($key, $queryArray))
+
536  {
+
537  $val = $queryArray[$key];
+
538 
+
539  if(ctype_digit($val))
+
540  {
+
541  return intval($val);
+
542  }
+
543  elseif(is_string($val))
+
544  {
+
545  return new TeamSpeak3_Helper_String($val);
+
546  }
+
547  else
+
548  {
+
549  return $val;
+
550  }
+
551  }
+
552 
+
553  return $default;
+
554  }
+
555 
+
556  /**
+
557  * Returns TRUE if the fragment string is valid.
+
558  *
+
559  * @param string $fragment
+
560  * @throws TeamSpeak3_Helper_Exception
+
561  * @return boolean
+
562  */
+
563  public function checkFragment($fragment = null)
+
564  {
+
565  if($fragment === null)
+
566  {
+
567  $fragment = $this->fragment;
+
568  }
+
569 
+
570  if(strlen($fragment) == 0)
+
571  {
+
572  return TRUE;
+
573  }
+
574 
+
575  $pattern = "/^" . $this->regex["uric"] . "*$/";
+
576  $status = @preg_match($pattern, $fragment);
+
577 
+
578  if($status === FALSE)
+
579  {
+
580  throw new TeamSpeak3_Helper_Exception("URI fragment validation failed");
+
581  }
+
582 
+
583  return ($status == 1);
+
584  }
+
585 
+
586  /**
+
587  * Returns TRUE if the URI has a fragment string.
+
588  *
+
589  * @return boolean
+
590  */
+
591  public function hasFragment()
+
592  {
+
593  return strlen($this->fragment) ? TRUE : FALSE;
+
594  }
+
595 
+
596  /**
+
597  * Returns the fragment.
+
598  *
+
599  * @param mixed default
+
600  * @return TeamSpeak3_Helper_String
+
601  */
+
602  public function getFragment($default = null)
+
603  {
+
604  return ($this->hasFragment()) ? new TeamSpeak3_Helper_String($this->fragment) : $default;
+
605  }
+
606 
+
607  /**
+
608  * Returns a specified instance parameter from the $_REQUEST array.
+
609  *
+
610  * @param string $key
+
611  * @param mixed $default
+
612  * @return mixed
+
613  */
+
614  public static function getUserParam($key, $default = null)
+
615  {
+
616  return (array_key_exists($key, $_REQUEST) && !empty($_REQUEST[$key])) ? self::stripslashesRecursive($_REQUEST[$key]) : $default;
+
617  }
+
618 
+
619  /**
+
620  * Returns a specified environment parameter from the $_SERVER array.
+
621  *
+
622  * @param string $key
+
623  * @param mixed $default
+
624  * @return mixed
+
625  */
+
626  public static function getHostParam($key, $default = null)
+
627  {
+
628  return (array_key_exists($key, $_SERVER) && !empty($_SERVER[$key])) ? $_SERVER[$key] : $default;
+
629  }
+
630 
+
631  /**
+
632  * Returns a specified session parameter from the $_SESSION array.
+
633  *
+
634  * @param string $key
+
635  * @param mixed $default
+
636  * @return mixed
+
637  */
+
638  public static function getSessParam($key, $default = null)
+
639  {
+
640  return (array_key_exists($key, $_SESSION) && !empty($_SESSION[$key])) ? $_SESSION[$key] : $default;
+
641  }
+
642 
+
643  /**
+
644  * Returns an array containing the three main parts of a FQDN (Fully Qualified Domain Name), including the
+
645  * top-level domain, the second-level domains or hostname and the third-level domain.
+
646  *
+
647  * @param string $hostname
+
648  * @return array
+
649  */
+
650  public static function getFQDNParts($hostname)
+
651  {
+
652  if(!preg_match("/^([a-z0-9][a-z0-9-]{0,62}\.)*([a-z0-9][a-z0-9-]{0,62}\.)+([a-z]{2,6})$/i", $hostname, $matches))
+
653  {
+
654  return array();
+
655  }
+
656 
+
657  $parts["tld"] = $matches[3];
+
658  $parts["2nd"] = $matches[2];
+
659  $parts["3rd"] = $matches[1];
+
660 
+
661  return $parts;
+
662  }
+
663 
+
664  /**
+
665  * Returns the applications host address.
+
666  *
+
667  * @return TeamSpeak3_Helper_String
+
668  */
+
669  public static function getHostUri()
+
670  {
+
671  $sheme = (self::getHostParam("HTTPS") == "on") ? "https" : "http";
+
672 
+
673  $serverName = new TeamSpeak3_Helper_String(self::getHostParam("HTTP_HOST"));
+
674  $serverPort = self::getHostParam("SERVER_PORT");
+
675  $serverPort = ($serverPort != 80 && $serverPort != 443) ? ":" . $serverPort : "";
+
676 
+
677  if($serverName->endsWith($serverPort))
+
678  {
+
679  $serverName = $serverName->replace($serverPort, "");
+
680  }
+
681 
+
682  return new TeamSpeak3_Helper_String($sheme . "://" . $serverName . $serverPort);
+
683  }
+
684 
+
685  /**
+
686  * Returns the applications base address.
+
687  *
+
688  * @return string
+
689  */
+
690  public static function getBaseUri()
+
691  {
+
692  $scriptPath = new TeamSpeak3_Helper_String(dirname(self::getHostParam("SCRIPT_NAME")));
+
693 
+
694  return self::getHostUri()->append(($scriptPath == DIRECTORY_SEPARATOR ? "" : $scriptPath) . "/");
+
695  }
+
696 
+
697  /**
+
698  * Strips slashes from each element of an array using stripslashes().
+
699  *
+
700  * @param mixed $var
+
701  * @return mixed
+
702  */
+
703  protected static function stripslashesRecursive($var)
+
704  {
+
705  if(!is_array($var))
+
706  {
+
707  return stripslashes(strval($var));
+
708  }
+
709 
+
710  foreach($var as $key => $val)
+
711  {
+
712  $var[$key] = (is_array($val)) ? stripslashesRecursive($val) : stripslashes(strval($val));
+
713  }
+
714 
+
715  return $var;
+
716  }
+
717 }
+
+
+ + + + diff --git a/lib/docs/html/_viewer_2_interface_8php.html b/lib/docs/html/_viewer_2_interface_8php.html new file mode 100644 index 0000000..4b772bd --- /dev/null +++ b/lib/docs/html/_viewer_2_interface_8php.html @@ -0,0 +1,156 @@ + + + + + + +TeamSpeak 3 PHP Framework: TeamSpeak3/Viewer/Interface.php File Reference + + + + + + + + + + + + + +
+
+ + + + + + + +
+
TeamSpeak 3 PHP Framework +  1.1.23 +
+
Copyright © Planet TeamSpeak. All rights reserved.
+
+
+ + + + + +
+
+ +
+
+
+ +
+ + + + +
+ +
+ +
+ +
+
Interface.php File Reference
+
+
+ +

TeamSpeak 3 PHP Framework. +More...

+ +

Go to the source code of this file.

+ + + + + +

+Classes

class  TeamSpeak3_Viewer_Interface
 Interface class describing a TeamSpeak 3 viewer. More...
 
+ + + +

+Namespaces

 TeamSpeak3
 
+ + + +

+Constant Groups

 TeamSpeak3
 
+

Detailed Description

+

TeamSpeak 3 PHP Framework.

+
Id:
Interface.php 10/11/2013 11:35:22 scp
+

This program is free software: you can redistribute it and/or modify it under the terms of the GNU General Public License as published by the Free Software Foundation, either version 3 of the License, or (at your option) any later version.

+

This program is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License for more details.

+

You should have received a copy of the GNU General Public License along with this program. If not, see http://www.gnu.org/licenses/.

+ +

Definition in file Interface.php.

+
+
+ + + + diff --git a/lib/docs/html/_viewer_2_interface_8php_source.html b/lib/docs/html/_viewer_2_interface_8php_source.html new file mode 100644 index 0000000..8eca36d --- /dev/null +++ b/lib/docs/html/_viewer_2_interface_8php_source.html @@ -0,0 +1,164 @@ + + + + + + +TeamSpeak 3 PHP Framework: TeamSpeak3/Viewer/Interface.php Source File + + + + + + + + + + + + + +
+
+ + + + + + + +
+
TeamSpeak 3 PHP Framework +  1.1.23 +
+
Copyright © Planet TeamSpeak. All rights reserved.
+
+
+ + + + + +
+
+ +
+
+
+ +
+ + + + +
+ +
+ +
+
+
Interface.php
+
+
+Go to the documentation of this file.
1 <?php
+
2 
+
3 /**
+
4  * @file
+
5  * TeamSpeak 3 PHP Framework
+
6  *
+
7  * $Id: Interface.php 10/11/2013 11:35:22 scp@orilla $
+
8  *
+
9  * This program is free software: you can redistribute it and/or modify
+
10  * it under the terms of the GNU General Public License as published by
+
11  * the Free Software Foundation, either version 3 of the License, or
+
12  * (at your option) any later version.
+
13  *
+
14  * This program is distributed in the hope that it will be useful,
+
15  * but WITHOUT ANY WARRANTY; without even the implied warranty of
+
16  * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+
17  * GNU General Public License for more details.
+
18  *
+
19  * You should have received a copy of the GNU General Public License
+
20  * along with this program. If not, see <http://www.gnu.org/licenses/>.
+
21  *
+
22  * @package TeamSpeak3
+
23  * @version 1.1.23
+
24  * @author Sven 'ScP' Paulsen
+
25  * @copyright Copyright (c) 2010 by Planet TeamSpeak. All rights reserved.
+
26  */
+
27 
+
28 /**
+
29  * @class TeamSpeak3_Viewer_Interface
+
30  * @brief Interface class describing a TeamSpeak 3 viewer.
+
31  */
+ +
33 {
+
34  /**
+
35  * Returns the code needed to display a node in a TeamSpeak 3 viewer.
+
36  *
+
37  * @param TeamSpeak3_Node_Abstract $node
+
38  * @param array $siblings
+
39  * @return string
+
40  */
+
41  public function fetchObject(TeamSpeak3_Node_Abstract $node, array $siblings = array());
+
42 }
+
+
+ + + + diff --git a/lib/docs/html/annotated.html b/lib/docs/html/annotated.html new file mode 100644 index 0000000..12b2b06 --- /dev/null +++ b/lib/docs/html/annotated.html @@ -0,0 +1,172 @@ + + + + + + +TeamSpeak 3 PHP Framework: Class List + + + + + + + + + + + + + +
+
+ + + + + + + +
+
TeamSpeak 3 PHP Framework +  1.1.23 +
+
Copyright © Planet TeamSpeak. All rights reserved.
+
+
+ + + + + +
+
+ +
+
+
+ +
+ + + + +
+ +
+ +
+
+
Class List
+
+
+
Here are the classes, structs, unions and interfaces with brief descriptions:
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
oNTeamSpeak3
oCTeamSpeak3Factory class all for TeamSpeak 3 PHP Framework objects
oCTeamSpeak3_Adapter_AbstractProvides low-level methods for concrete adapters to communicate with a TeamSpeak 3 Server
oCTeamSpeak3_Adapter_BlacklistProvides methods to check if an IP address is currently blacklisted
oCTeamSpeak3_Adapter_Blacklist_ExceptionEnhanced exception class for TeamSpeak3_Adapter_Blacklist objects
oCTeamSpeak3_Adapter_ExceptionEnhanced exception class for TeamSpeak3_Adapter_Abstract objects
oCTeamSpeak3_Adapter_FileTransferProvides low-level methods for file transfer communication with a TeamSpeak 3 Server
oCTeamSpeak3_Adapter_FileTransfer_ExceptionEnhanced exception class for TeamSpeak3_Adapter_FileTransfer objects
oCTeamSpeak3_Adapter_ServerQueryProvides low-level methods for ServerQuery communication with a TeamSpeak 3 Server
oCTeamSpeak3_Adapter_ServerQuery_EventProvides methods to analyze and format a ServerQuery event
oCTeamSpeak3_Adapter_ServerQuery_ExceptionEnhanced exception class for TeamSpeak3_Adapter_ServerQuery objects
oCTeamSpeak3_Adapter_ServerQuery_ReplyProvides methods to analyze and format a ServerQuery reply
oCTeamSpeak3_Adapter_TSDNSProvides methods to query a TSDNS server
oCTeamSpeak3_Adapter_TSDNS_ExceptionEnhanced exception class for TeamSpeak3_Adapter_TSDNS objects
oCTeamSpeak3_Adapter_UpdateProvides methods to query the latest TeamSpeak 3 build numbers from the master server
oCTeamSpeak3_Adapter_Update_ExceptionEnhanced exception class for TeamSpeak3_Adapter_Update objects
oCTeamSpeak3_ExceptionEnhanced exception class for TeamSpeak3 objects
oCTeamSpeak3_Helper_CharHelper class for char handling
oCTeamSpeak3_Helper_ConvertHelper class for data conversion
oCTeamSpeak3_Helper_CryptHelper class for data encryption
oCTeamSpeak3_Helper_ExceptionEnhanced exception class for TeamSpeak3_Helper_* objects
oCTeamSpeak3_Helper_ProfilerHelper class for profiler handling
oCTeamSpeak3_Helper_Profiler_ExceptionEnhanced exception class for TeamSpeak3_Helper_Profiler objects
oCTeamSpeak3_Helper_Profiler_TimerHelper class providing profiler timers
oCTeamSpeak3_Helper_SignalHelper class for signal slots
oCTeamSpeak3_Helper_Signal_ExceptionEnhanced exception class for TeamSpeak3_Helper_Signal objects
oCTeamSpeak3_Helper_Signal_HandlerHelper class providing handler functions for signals
oCTeamSpeak3_Helper_Signal_InterfaceInterface class describing the layout for TeamSpeak3_Helper_Signal callbacks
oCTeamSpeak3_Helper_StringHelper class for string handling
oCTeamSpeak3_Helper_UriHelper class for URI handling
oCTeamSpeak3_Node_AbstractAbstract class describing a TeamSpeak 3 node and all it's parameters
oCTeamSpeak3_Node_ChannelClass describing a TeamSpeak 3 channel and all it's parameters
oCTeamSpeak3_Node_ChannelgroupClass describing a TeamSpeak 3 channel group and all it's parameters
oCTeamSpeak3_Node_ClientClass describing a TeamSpeak 3 client and all it's parameters
oCTeamSpeak3_Node_ExceptionEnhanced exception class for TeamSpeak3_Node_Abstract objects
oCTeamSpeak3_Node_HostClass describing a TeamSpeak 3 server instance and all it's parameters
oCTeamSpeak3_Node_ServerClass describing a TeamSpeak 3 virtual server and all it's parameters
oCTeamSpeak3_Node_ServergroupClass describing a TeamSpeak 3 server group and all it's parameters
oCTeamSpeak3_Transport_AbstractAbstract class for connecting to a TeamSpeak 3 Server through different ways of transport
oCTeamSpeak3_Transport_ExceptionEnhanced exception class for TeamSpeak3_Transport_Abstract objects
oCTeamSpeak3_Transport_TCPClass for connecting to a remote server through TCP
oCTeamSpeak3_Transport_UDPClass for connecting to a remote server through UDP
oCTeamSpeak3_Viewer_HtmlRenders nodes used in HTML-based TeamSpeak 3 viewers
oCTeamSpeak3_Viewer_InterfaceInterface class describing a TeamSpeak 3 viewer
\CTeamSpeak3_Viewer_TextRenders nodes used in ASCII-based TeamSpeak 3 viewers
+
+
+
+ + + + diff --git a/lib/docs/html/annotated.js b/lib/docs/html/annotated.js new file mode 100644 index 0000000..04f4e55 --- /dev/null +++ b/lib/docs/html/annotated.js @@ -0,0 +1,48 @@ +var annotated = +[ + [ "TeamSpeak3", "namespace_team_speak3.html", null ], + [ "TeamSpeak3", "class_team_speak3.html", "class_team_speak3" ], + [ "TeamSpeak3_Adapter_Abstract", "class_team_speak3___adapter___abstract.html", "class_team_speak3___adapter___abstract" ], + [ "TeamSpeak3_Adapter_Blacklist", "class_team_speak3___adapter___blacklist.html", "class_team_speak3___adapter___blacklist" ], + [ "TeamSpeak3_Adapter_Blacklist_Exception", "class_team_speak3___adapter___blacklist___exception.html", "class_team_speak3___adapter___blacklist___exception" ], + [ "TeamSpeak3_Adapter_Exception", "class_team_speak3___adapter___exception.html", "class_team_speak3___adapter___exception" ], + [ "TeamSpeak3_Adapter_FileTransfer", "class_team_speak3___adapter___file_transfer.html", "class_team_speak3___adapter___file_transfer" ], + [ "TeamSpeak3_Adapter_FileTransfer_Exception", "class_team_speak3___adapter___file_transfer___exception.html", "class_team_speak3___adapter___file_transfer___exception" ], + [ "TeamSpeak3_Adapter_ServerQuery", "class_team_speak3___adapter___server_query.html", "class_team_speak3___adapter___server_query" ], + [ "TeamSpeak3_Adapter_ServerQuery_Event", "class_team_speak3___adapter___server_query___event.html", "class_team_speak3___adapter___server_query___event" ], + [ "TeamSpeak3_Adapter_ServerQuery_Exception", "class_team_speak3___adapter___server_query___exception.html", "class_team_speak3___adapter___server_query___exception" ], + [ "TeamSpeak3_Adapter_ServerQuery_Reply", "class_team_speak3___adapter___server_query___reply.html", "class_team_speak3___adapter___server_query___reply" ], + [ "TeamSpeak3_Adapter_TSDNS", "class_team_speak3___adapter___t_s_d_n_s.html", "class_team_speak3___adapter___t_s_d_n_s" ], + [ "TeamSpeak3_Adapter_TSDNS_Exception", "class_team_speak3___adapter___t_s_d_n_s___exception.html", "class_team_speak3___adapter___t_s_d_n_s___exception" ], + [ "TeamSpeak3_Adapter_Update", "class_team_speak3___adapter___update.html", "class_team_speak3___adapter___update" ], + [ "TeamSpeak3_Adapter_Update_Exception", "class_team_speak3___adapter___update___exception.html", "class_team_speak3___adapter___update___exception" ], + [ "TeamSpeak3_Exception", "class_team_speak3___exception.html", "class_team_speak3___exception" ], + [ "TeamSpeak3_Helper_Char", "class_team_speak3___helper___char.html", "class_team_speak3___helper___char" ], + [ "TeamSpeak3_Helper_Convert", "class_team_speak3___helper___convert.html", null ], + [ "TeamSpeak3_Helper_Crypt", "class_team_speak3___helper___crypt.html", "class_team_speak3___helper___crypt" ], + [ "TeamSpeak3_Helper_Exception", "class_team_speak3___helper___exception.html", "class_team_speak3___helper___exception" ], + [ "TeamSpeak3_Helper_Profiler", "class_team_speak3___helper___profiler.html", null ], + [ "TeamSpeak3_Helper_Profiler_Exception", "class_team_speak3___helper___profiler___exception.html", "class_team_speak3___helper___profiler___exception" ], + [ "TeamSpeak3_Helper_Profiler_Timer", "class_team_speak3___helper___profiler___timer.html", "class_team_speak3___helper___profiler___timer" ], + [ "TeamSpeak3_Helper_Signal", "class_team_speak3___helper___signal.html", "class_team_speak3___helper___signal" ], + [ "TeamSpeak3_Helper_Signal_Exception", "class_team_speak3___helper___signal___exception.html", "class_team_speak3___helper___signal___exception" ], + [ "TeamSpeak3_Helper_Signal_Handler", "class_team_speak3___helper___signal___handler.html", "class_team_speak3___helper___signal___handler" ], + [ "TeamSpeak3_Helper_Signal_Interface", "interface_team_speak3___helper___signal___interface.html", "interface_team_speak3___helper___signal___interface" ], + [ "TeamSpeak3_Helper_String", "class_team_speak3___helper___string.html", "class_team_speak3___helper___string" ], + [ "TeamSpeak3_Helper_Uri", "class_team_speak3___helper___uri.html", "class_team_speak3___helper___uri" ], + [ "TeamSpeak3_Node_Abstract", "class_team_speak3___node___abstract.html", "class_team_speak3___node___abstract" ], + [ "TeamSpeak3_Node_Channel", "class_team_speak3___node___channel.html", "class_team_speak3___node___channel" ], + [ "TeamSpeak3_Node_Channelgroup", "class_team_speak3___node___channelgroup.html", "class_team_speak3___node___channelgroup" ], + [ "TeamSpeak3_Node_Client", "class_team_speak3___node___client.html", "class_team_speak3___node___client" ], + [ "TeamSpeak3_Node_Exception", "class_team_speak3___node___exception.html", "class_team_speak3___node___exception" ], + [ "TeamSpeak3_Node_Host", "class_team_speak3___node___host.html", "class_team_speak3___node___host" ], + [ "TeamSpeak3_Node_Server", "class_team_speak3___node___server.html", "class_team_speak3___node___server" ], + [ "TeamSpeak3_Node_Servergroup", "class_team_speak3___node___servergroup.html", "class_team_speak3___node___servergroup" ], + [ "TeamSpeak3_Transport_Abstract", "class_team_speak3___transport___abstract.html", "class_team_speak3___transport___abstract" ], + [ "TeamSpeak3_Transport_Exception", "class_team_speak3___transport___exception.html", "class_team_speak3___transport___exception" ], + [ "TeamSpeak3_Transport_TCP", "class_team_speak3___transport___t_c_p.html", "class_team_speak3___transport___t_c_p" ], + [ "TeamSpeak3_Transport_UDP", "class_team_speak3___transport___u_d_p.html", "class_team_speak3___transport___u_d_p" ], + [ "TeamSpeak3_Viewer_Html", "class_team_speak3___viewer___html.html", "class_team_speak3___viewer___html" ], + [ "TeamSpeak3_Viewer_Interface", "interface_team_speak3___viewer___interface.html", "interface_team_speak3___viewer___interface" ], + [ "TeamSpeak3_Viewer_Text", "class_team_speak3___viewer___text.html", "class_team_speak3___viewer___text" ] +]; \ No newline at end of file diff --git a/lib/docs/html/bc_s.png b/lib/docs/html/bc_s.png new file mode 100644 index 0000000000000000000000000000000000000000..3d1d5bf9e2a8cd71f9fc91e911fd5905c4afcc0f GIT binary patch literal 684 zcmV;d0#p5oP)wobS2k!@Y3s`2(=_if6Wb zc^0VQ_6$ZM06+=%w)J-wI;29`$aQ-Lzg+_WN?3ilzs$h1JwMhPQ$$E}yc{db!k_xbYYR6P$?ySphJfV6Dz+D&LXq6*~q0)j(h9Ow#^+kM1VCRK6 zphcU@E^M~S{Cn?Ev@r>6KmR)66&*{4OY%)I)h`|JMQ7u{)^ok7pX@GlWaNqIx;q2I z(e^m7rS(-RP^k{PROp8aKk5s7*@J5v9svNQPq_}e zz_H|rKQP&g700?$hZQLE<^CIeI@aG$Ar$ zPRA0>7mQC##19x(*LNm>)4XV{vC8TGU~s%9c@O1>ZzsIps^scf7Hg)00Z$TGb?BB> zt60u(*KEt4`x+WsM&0DfgEzI>C77KB23~h>Iy`!v0?H2DFe72cEQ(v}bEd8*4ss&LRj82Z!0RSZ|t!*C_v-5eDA=NXJ{s91>#1fX9N5q-$Vc$PPEq()bA+e`4 Sx#Fq-0000_E)H!3HEvS)PKZa8DP+_Z`pk*J0xQ<5a-h-6nbdzTydcpcM?Bu6{1-oD!MZX4 literal 0 HcmV?d00001 diff --git a/lib/docs/html/class_team_speak3-members.html b/lib/docs/html/class_team_speak3-members.html new file mode 100644 index 0000000..ee3ea32 --- /dev/null +++ b/lib/docs/html/class_team_speak3-members.html @@ -0,0 +1,247 @@ + + + + + + +TeamSpeak 3 PHP Framework: Member List + + + + + + + + + + + + + +
+
+ + + + + + + +
+
TeamSpeak 3 PHP Framework +  1.1.23 +
+
Copyright © Planet TeamSpeak. All rights reserved.
+
+
+ + + + + +
+
+ +
+
+
+ +
+ + + + +
+ +
+ +
+
+
TeamSpeak3 Member List
+
+
+ +

This is the complete list of members for TeamSpeak3, including all inherited members.

+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
$escape_patterns (defined in TeamSpeak3)TeamSpeak3protectedstatic
autoload($class)TeamSpeak3static
CLIENT_TYPE_REGULARTeamSpeak3
CLIENT_TYPE_SERVERQUERYTeamSpeak3
CODEC_CELT_MONOTeamSpeak3
CODEC_CRYPT_DISABLEDTeamSpeak3
CODEC_CRYPT_ENABLEDTeamSpeak3
CODEC_CRYPT_INDIVIDUALTeamSpeak3
CODEC_OPUS_MUSICTeamSpeak3
CODEC_OPUS_VOICETeamSpeak3
CODEC_SPEEX_NARROWBANDTeamSpeak3
CODEC_SPEEX_ULTRAWIDEBANDTeamSpeak3
CODEC_SPEEX_WIDEBANDTeamSpeak3
dump($var, $echo=TRUE)TeamSpeak3static
ERRORTeamSpeak3
EVENTTeamSpeak3
factory($uri)TeamSpeak3static
FILE_TYPE_DIRECTORYTeamSpeak3
FILE_TYPE_REGULARTeamSpeak3
getAdapterName($name, $namespace="TeamSpeak3_Adapter_")TeamSpeak3protectedstatic
getEscapePatterns()TeamSpeak3static
getFilePath($name)TeamSpeak3protectedstatic
GREETTeamSpeak3
GROUP_DBTYPE_REGULARTeamSpeak3
GROUP_DBTYPE_SERVERQUERYTeamSpeak3
GROUP_DBTYPE_TEMPLATETeamSpeak3
GROUP_IDENTIFIY_STRONGESTTeamSpeak3
GROUP_IDENTIFIY_WEAKESTTeamSpeak3
GROUP_NAMEMODE_BEFORETeamSpeak3
GROUP_NAMEMODE_BEHINDTeamSpeak3
GROUP_NAMEMODE_HIDDENTeamSpeak3
HOSTBANNER_IGNORE_ASPECTTeamSpeak3
HOSTBANNER_KEEP_ASPECTTeamSpeak3
HOSTBANNER_NO_ADJUSTTeamSpeak3
HOSTMSG_LOGTeamSpeak3
HOSTMSG_MODALTeamSpeak3
HOSTMSG_MODALQUITTeamSpeak3
HOSTMSG_NONETeamSpeak3
init()TeamSpeak3static
KICK_CHANNELTeamSpeak3
KICK_SERVERTeamSpeak3
LIB_VERSIONTeamSpeak3
loadClass($class)TeamSpeak3protectedstatic
LOGLEVEL_CRITICALTeamSpeak3
LOGLEVEL_DEBUGTeamSpeak3
LOGLEVEL_DEVELTeamSpeak3
LOGLEVEL_ERRORTeamSpeak3
LOGLEVEL_INFOTeamSpeak3
LOGLEVEL_WARNINGTeamSpeak3
PERM_CAT_CHANNELTeamSpeak3
PERM_CAT_CHANNEL_ACCESSTeamSpeak3
PERM_CAT_CHANNEL_CREATETeamSpeak3
PERM_CAT_CHANNEL_DELETETeamSpeak3
PERM_CAT_CHANNEL_INFORMATIONTeamSpeak3
PERM_CAT_CHANNEL_MODIFYTeamSpeak3
PERM_CAT_CLIENTTeamSpeak3
PERM_CAT_CLIENT_ADM_ACTIONSTeamSpeak3
PERM_CAT_CLIENT_BASICSTeamSpeak3
PERM_CAT_CLIENT_INFORMATIONTeamSpeak3
PERM_CAT_CLIENT_MODIFYTeamSpeak3
PERM_CAT_FILETRANSFERTeamSpeak3
PERM_CAT_GLOBALTeamSpeak3
PERM_CAT_GLOBAL_ADM_ACTIONSTeamSpeak3
PERM_CAT_GLOBAL_INFORMATIONTeamSpeak3
PERM_CAT_GLOBAL_SERVER_MGMTTeamSpeak3
PERM_CAT_GLOBAL_SETTINGSTeamSpeak3
PERM_CAT_GROUPTeamSpeak3
PERM_CAT_GROUP_CREATETeamSpeak3
PERM_CAT_GROUP_DELETETeamSpeak3
PERM_CAT_GROUP_INFORMATIONTeamSpeak3
PERM_CAT_GROUP_MODIFYTeamSpeak3
PERM_CAT_NEEDED_MODIFY_POWERTeamSpeak3
PERM_CAT_SERVERTeamSpeak3
PERM_CAT_SERVER_ADM_ACTIONSTeamSpeak3
PERM_CAT_SERVER_INFORMATIONTeamSpeak3
PERM_CAT_SERVER_SETTINGSTeamSpeak3
PERM_TYPE_CHANNELTeamSpeak3
PERM_TYPE_CHANNELCLIENTTeamSpeak3
PERM_TYPE_CHANNELGROUPTeamSpeak3
PERM_TYPE_CLIENTTeamSpeak3
PERM_TYPE_SERVERGROUPTeamSpeak3
PLUGINCMD_CHANNELTeamSpeak3
PLUGINCMD_CHANNEL_SUBSCRIBEDTeamSpeak3
PLUGINCMD_CLIENTTeamSpeak3
PLUGINCMD_SERVERTeamSpeak3
READYTeamSpeak3
REASON_CHANNEL_EDITTeamSpeak3
REASON_CHANNEL_KICKTeamSpeak3
REASON_CHANNEL_UPDATETeamSpeak3
REASON_DISCONNECTTeamSpeak3
REASON_DISCONNECT_SHUTDOWNTeamSpeak3
REASON_MOVETeamSpeak3
REASON_NONETeamSpeak3
REASON_SERVER_BANTeamSpeak3
REASON_SERVER_KICKTeamSpeak3
REASON_SERVER_STOPTeamSpeak3
REASON_SUBSCRIPTIONTeamSpeak3
REASON_TIMEOUTTeamSpeak3
SCHIDTeamSpeak3
SEPARATOR_CELLTeamSpeak3
SEPARATOR_LINETeamSpeak3
SEPARATOR_LISTTeamSpeak3
SEPARATOR_PAIRTeamSpeak3
SNAPSHOT_BASE64TeamSpeak3
SNAPSHOT_HEXDECTeamSpeak3
SNAPSHOT_STRINGTeamSpeak3
SPACER_ALIGN_CENTERTeamSpeak3
SPACER_ALIGN_LEFTTeamSpeak3
SPACER_ALIGN_REPEATTeamSpeak3
SPACER_ALIGN_RIGHTTeamSpeak3
SPACER_CUSTOMTeamSpeak3
SPACER_DASHDOTDOTLINETeamSpeak3
SPACER_DASHDOTLINETeamSpeak3
SPACER_DASHLINETeamSpeak3
SPACER_DOTLINETeamSpeak3
SPACER_SOLIDLINETeamSpeak3
TEXTMSG_CHANNELTeamSpeak3
TEXTMSG_CLIENTTeamSpeak3
TEXTMSG_SERVERTeamSpeak3
TOKEN_CHANNELGROUPTeamSpeak3
TOKEN_SERVERGROUPTeamSpeak3
+
+ + + + diff --git a/lib/docs/html/class_team_speak3.html b/lib/docs/html/class_team_speak3.html new file mode 100644 index 0000000..2e8a25d --- /dev/null +++ b/lib/docs/html/class_team_speak3.html @@ -0,0 +1,3070 @@ + + + + + + +TeamSpeak 3 PHP Framework: TeamSpeak3 Class Reference + + + + + + + + + + + + + +
+
+ + + + + + + +
+
TeamSpeak 3 PHP Framework +  1.1.23 +
+
Copyright © Planet TeamSpeak. All rights reserved.
+
+
+ + + + + +
+
+ +
+
+
+ +
+ + + + +
+ +
+ + +
+ +

Factory class all for TeamSpeak 3 PHP Framework objects. + More...

+ + + + + + + + + + + + + + + + + +

+Static Public Member Functions

static factory ($uri)
 Factory for TeamSpeak3_Adapter_Abstract classes. More...
 
static autoload ($class)
 spl_autoload() suitable implementation for supporting class autoloading. More...
 
static init ()
 Checks for required PHP features, enables autoloading and starts a default profiler. More...
 
static getEscapePatterns ()
 Returns an assoc array containing all escape patterns available on a TeamSpeak 3 Server. More...
 
static dump ($var, $echo=TRUE)
 Debug helper function. More...
 
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +

+Public Attributes

const READY = "TS3"
 TeamSpeak 3 protocol welcome message. More...
 
const GREET = "Welcome"
 TeamSpeak 3 protocol greeting message prefix. More...
 
const ERROR = "error"
 TeamSpeak 3 protocol error message prefix. More...
 
const EVENT = "notify"
 TeamSpeak 3 protocol event message prefix. More...
 
const SCHID = "selected"
 TeamSpeak 3 protocol server connection handler ID prefix. More...
 
const LIB_VERSION = "1.1.23"
 TeamSpeak 3 PHP Framework version. More...
 
const SEPARATOR_LINE = "\n"
 protocol line separator More...
 
const SEPARATOR_LIST = "|"
 protocol list separator More...
 
const SEPARATOR_CELL = " "
 protocol cell separator More...
 
const SEPARATOR_PAIR = "="
 protocol pair separator More...
 
const LOGLEVEL_CRITICAL = 0x00
 0: these messages stop the program More...
 
const LOGLEVEL_ERROR = 0x01
 1: everything that is really bad More...
 
const LOGLEVEL_WARNING = 0x02
 2: everything that might be bad More...
 
const LOGLEVEL_DEBUG = 0x03
 3: output that might help find a problem More...
 
const LOGLEVEL_INFO = 0x04
 4: informational output More...
 
const LOGLEVEL_DEVEL = 0x05
 5: development output More...
 
const TOKEN_SERVERGROUP = 0x00
 0: server group token (id1={groupID} id2=0) More...
 
const TOKEN_CHANNELGROUP = 0x01
 1: channel group token (id1={groupID} id2={channelID}) More...
 
const CODEC_SPEEX_NARROWBAND = 0x00
 0: speex narrowband (mono, 16bit, 8kHz) More...
 
const CODEC_SPEEX_WIDEBAND = 0x01
 1: speex wideband (mono, 16bit, 16kHz) More...
 
const CODEC_SPEEX_ULTRAWIDEBAND = 0x02
 2: speex ultra-wideband (mono, 16bit, 32kHz) More...
 
const CODEC_CELT_MONO = 0x03
 3: celt mono (mono, 16bit, 48kHz) More...
 
const CODEC_OPUS_VOICE = 0x04
 3: opus voice (interactive) More...
 
const CODEC_OPUS_MUSIC = 0x05
 3: opus music (interactive) More...
 
const CODEC_CRYPT_INDIVIDUAL = 0x00
 0: configure per channel More...
 
const CODEC_CRYPT_DISABLED = 0x01
 1: globally disabled More...
 
const CODEC_CRYPT_ENABLED = 0x02
 2: globally enabled More...
 
const KICK_CHANNEL = 0x04
 4: kick client from channel More...
 
const KICK_SERVER = 0x05
 5: kick client from server More...
 
const TEXTMSG_CLIENT = 0x01
 1: target is a client More...
 
const TEXTMSG_CHANNEL = 0x02
 2: target is a channel More...
 
const TEXTMSG_SERVER = 0x03
 3: target is a virtual server More...
 
const PLUGINCMD_CHANNEL = 0x01
 1: send plugincmd to all clients in current channel More...
 
const PLUGINCMD_SERVER = 0x02
 2: send plugincmd to all clients on server More...
 
const PLUGINCMD_CLIENT = 0x03
 3: send plugincmd to all given client ids More...
 
const PLUGINCMD_CHANNEL_SUBSCRIBED = 0x04
 4: send plugincmd to all subscribed clients in current channel More...
 
const HOSTMSG_NONE = 0x00
 0: display no message More...
 
const HOSTMSG_LOG = 0x01
 1: display message in chatlog More...
 
const HOSTMSG_MODAL = 0x02
 2: display message in modal dialog More...
 
const HOSTMSG_MODALQUIT = 0x03
 3: display message in modal dialog and close connection More...
 
const HOSTBANNER_NO_ADJUST = 0x00
 0: do not adjust More...
 
const HOSTBANNER_IGNORE_ASPECT = 0x01
 1: adjust but ignore aspect ratio More...
 
const HOSTBANNER_KEEP_ASPECT = 0x02
 2: adjust and keep aspect ratio More...
 
const CLIENT_TYPE_REGULAR = 0x00
 0: regular client More...
 
const CLIENT_TYPE_SERVERQUERY = 0x01
 1: query client More...
 
const GROUP_DBTYPE_TEMPLATE = 0x00
 0: template group (used for new virtual servers) More...
 
const GROUP_DBTYPE_REGULAR = 0x01
 1: regular group (used for regular clients) More...
 
const GROUP_DBTYPE_SERVERQUERY = 0x02
 2: global query group (used for ServerQuery clients) More...
 
const GROUP_NAMEMODE_HIDDEN = 0x00
 0: display no name More...
 
const GROUP_NAMEMODE_BEFORE = 0x01
 1: display name before client nickname More...
 
const GROUP_NAMEMODE_BEHIND = 0x02
 2: display name after client nickname More...
 
const GROUP_IDENTIFIY_STRONGEST = 0x01
 1: identify most powerful group More...
 
const GROUP_IDENTIFIY_WEAKEST = 0x02
 2: identify weakest group More...
 
const PERM_TYPE_SERVERGROUP = 0x00
 0: server group permission More...
 
const PERM_TYPE_CLIENT = 0x01
 1: client specific permission More...
 
const PERM_TYPE_CHANNEL = 0x02
 2: channel specific permission More...
 
const PERM_TYPE_CHANNELGROUP = 0x03
 3: channel group permission More...
 
const PERM_TYPE_CHANNELCLIENT = 0x04
 4: channel-client specific permission More...
 
const PERM_CAT_GLOBAL = 0x10
 00010000: global permissions More...
 
const PERM_CAT_GLOBAL_INFORMATION = 0x11
 00010001: global permissions -> global information More...
 
const PERM_CAT_GLOBAL_SERVER_MGMT = 0x12
 00010010: global permissions -> virtual server management More...
 
const PERM_CAT_GLOBAL_ADM_ACTIONS = 0x13
 00010011: global permissions -> global administrative actions More...
 
const PERM_CAT_GLOBAL_SETTINGS = 0x14
 00010100: global permissions -> global settings More...
 
const PERM_CAT_SERVER = 0x20
 00100000: virtual server permissions More...
 
const PERM_CAT_SERVER_INFORMATION = 0x21
 00100001: virtual server permissions -> virtual server information More...
 
const PERM_CAT_SERVER_ADM_ACTIONS = 0x22
 00100010: virtual server permissions -> virtual server administrative actions More...
 
const PERM_CAT_SERVER_SETTINGS = 0x23
 00100011: virtual server permissions -> virtual server settings More...
 
const PERM_CAT_CHANNEL = 0x30
 00110000: channel permissions More...
 
const PERM_CAT_CHANNEL_INFORMATION = 0x31
 00110001: channel permissions -> channel information More...
 
const PERM_CAT_CHANNEL_CREATE = 0x32
 00110010: channel permissions -> create channels More...
 
const PERM_CAT_CHANNEL_MODIFY = 0x33
 00110011: channel permissions -> edit channels More...
 
const PERM_CAT_CHANNEL_DELETE = 0x34
 00110100: channel permissions -> delete channels More...
 
const PERM_CAT_CHANNEL_ACCESS = 0x35
 00110101: channel permissions -> access channels More...
 
const PERM_CAT_GROUP = 0x40
 01000000: group permissions More...
 
const PERM_CAT_GROUP_INFORMATION = 0x41
 01000001: group permissions -> group information More...
 
const PERM_CAT_GROUP_CREATE = 0x42
 01000010: group permissions -> create groups More...
 
const PERM_CAT_GROUP_MODIFY = 0x43
 01000011: group permissions -> edit groups More...
 
const PERM_CAT_GROUP_DELETE = 0x44
 01000100: group permissions -> delete groups More...
 
const PERM_CAT_CLIENT = 0x50
 01010000: client permissions More...
 
const PERM_CAT_CLIENT_INFORMATION = 0x51
 01010001: client permissions -> client information More...
 
const PERM_CAT_CLIENT_ADM_ACTIONS = 0x52
 01010010: client permissions -> client administrative actions More...
 
const PERM_CAT_CLIENT_BASICS = 0x53
 01010011: client permissions -> client basic communication More...
 
const PERM_CAT_CLIENT_MODIFY = 0x54
 01010100: client permissions -> edit clients More...
 
const PERM_CAT_FILETRANSFER = 0x60
 01100000: file transfer permissions More...
 
const PERM_CAT_NEEDED_MODIFY_POWER = 0xFF
 11111111: needed permission modify power (grant) permissions More...
 
const FILE_TYPE_DIRECTORY = 0x00
 0: file is directory More...
 
const FILE_TYPE_REGULAR = 0x01
 1: file is regular More...
 
const SNAPSHOT_STRING = 0x00
 0: default string More...
 
const SNAPSHOT_BASE64 = 0x01
 1: base64 string More...
 
const SNAPSHOT_HEXDEC = 0x02
 2: hexadecimal string More...
 
const SPACER_SOLIDLINE = 0x00
 0: solid line More...
 
const SPACER_DASHLINE = 0x01
 1: dash line More...
 
const SPACER_DOTLINE = 0x02
 2: dot line More...
 
const SPACER_DASHDOTLINE = 0x03
 3: dash dot line More...
 
const SPACER_DASHDOTDOTLINE = 0x04
 4: dash dot dot line More...
 
const SPACER_CUSTOM = 0x05
 5: custom format More...
 
const SPACER_ALIGN_LEFT = 0x00
 0: alignment left More...
 
const SPACER_ALIGN_RIGHT = 0x01
 1: alignment right More...
 
const SPACER_ALIGN_CENTER = 0x02
 2: alignment center More...
 
const SPACER_ALIGN_REPEAT = 0x03
 3: repeat until the whole line is filled More...
 
const REASON_NONE = 0x00
 0: no reason More...
 
const REASON_MOVE = 0x01
 1: channel switched or moved More...
 
const REASON_SUBSCRIPTION = 0x02
 2: subscription added or removed More...
 
const REASON_TIMEOUT = 0x03
 3: client connection timed out More...
 
const REASON_CHANNEL_KICK = 0x04
 4: client kicked from channel More...
 
const REASON_SERVER_KICK = 0x05
 5: client kicked from server More...
 
const REASON_SERVER_BAN = 0x06
 6: client banned from server More...
 
const REASON_SERVER_STOP = 0x07
 7: server stopped More...
 
const REASON_DISCONNECT = 0x08
 8: client disconnected More...
 
const REASON_CHANNEL_UPDATE = 0x09
 9: channel information updated More...
 
const REASON_CHANNEL_EDIT = 0x0A
 10: channel information edited More...
 
const REASON_DISCONNECT_SHUTDOWN = 0x0B
 11: client disconnected on server shutdown More...
 
+ + + + + + + + + + +

+Static Protected Member Functions

static loadClass ($class)
 Loads a class from a PHP file. More...
 
static getFilePath ($name)
 Generates a possible file path for $name. More...
 
static getAdapterName ($name, $namespace="TeamSpeak3_Adapter_")
 Returns the name of an adapter class by $name. More...
 
+ + + +

+Static Protected Attributes

static $escape_patterns
 
+

Detailed Description

+

Factory class all for TeamSpeak 3 PHP Framework objects.

+ +

Definition at line 32 of file TeamSpeak3.php.

+

Member Function Documentation

+ +
+
+ + + + + +
+ + + + + + + + +
static TeamSpeak3::factory ( $uri)
+
+static
+
+ +

Factory for TeamSpeak3_Adapter_Abstract classes.

+

$uri must be formatted as "<adapter>://<user>:<pass>@<host>:<port>/<options>#<flags>". All parameters except adapter, host and port are optional.

+

=== Supported Options ===

+
    +
  • timeout
  • +
  • blocking
  • +
  • nickname
  • +
  • no_query_clients
  • +
  • use_offline_as_virtual
  • +
  • clients_before_channels
  • +
  • server_id|server_uid|server_port|server_name|server_tsdns
  • +
  • channel_id|channel_name
  • +
  • client_id|client_uid|client_name
  • +
+

=== Supported Flags (only one per $uri) ===

+
    +
  • no_query_clients
  • +
  • use_offline_as_virtual
  • +
  • clients_before_channels
  • +
+

=== URI Examples ===

+
    +
  • serverquery://127.0.0.1:10011/
  • +
  • serverquery://127.0.0.1:10011/?server_port=9987&channel_id=1
  • +
  • serverquery://127.0.0.1:10011/?server_port=9987&channel_id=1#no_query_clients
  • +
  • serverquery://127.0.0.1:10011/?server_port=9987&client_name=ScP
  • +
  • filetransfer://127.0.0.1:30011/
  • +
  • blacklist
  • +
  • update
  • +
+
Parameters
+ + +
string$uri
+
+
+
Returns
TeamSpeak3_Adapter_Abstract
+
+TeamSpeak3_Node_Abstract
+ +

Definition at line 309 of file TeamSpeak3.php.

+ +

Referenced by TeamSpeak3_Node_Client\avatarDownload(), TeamSpeak3_Viewer_Html\getSuffixIconChannel(), TeamSpeak3_Viewer_Html\getSuffixIconClient(), TeamSpeak3_Viewer_Html\getSuffixIconServer(), TeamSpeak3_Node_Channelgroup\iconDownload(), TeamSpeak3_Node_Servergroup\iconDownload(), TeamSpeak3_Node_Client\iconDownload(), TeamSpeak3_Node_Channel\iconDownload(), TeamSpeak3_Node_Server\iconDownload(), TeamSpeak3_Node_Server\iconUpload(), and TeamSpeak3_Node_Host\serverGetByTSDNS().

+
310  {
+
311  self::init();
+
312 
+
313  $uri = new TeamSpeak3_Helper_Uri($uri);
+
314 
+
315  $adapter = self::getAdapterName($uri->getScheme());
+
316  $options = array("host" => $uri->getHost(), "port" => $uri->getPort(), "timeout" => intval($uri->getQueryVar("timeout", 10)), "blocking" => intval($uri->getQueryVar("blocking", 1)));
+
317 
+
318  self::loadClass($adapter);
+
319 
+
320  $object = new $adapter($options);
+
321 
+
322  if($object instanceof TeamSpeak3_Adapter_ServerQuery)
+
323  {
+
324  $node = $object->getHost();
+
325 
+
326  if($uri->hasUser() && $uri->hasPass())
+
327  {
+
328  $node->login($uri->getUser(), $uri->getPass());
+
329  }
+
330 
+
331  /* option to pre-define nickname */
+
332  if($uri->hasQueryVar("nickname"))
+
333  {
+
334  $node->setPredefinedQueryName($uri->getQueryVar("nickname"));
+
335  }
+
336 
+
337  /* flag to use offline servers in virtual mode */
+
338  if($uri->getFragment() == "use_offline_as_virtual")
+
339  {
+
340  $node->setUseOfflineAsVirtual(TRUE);
+
341  }
+
342  elseif($uri->hasQueryVar("use_offline_as_virtual"))
+
343  {
+
344  $node->setUseOfflineAsVirtual($uri->getQueryVar("use_offline_as_virtual") ? TRUE : FALSE);
+
345  }
+
346 
+
347  /* flag to fetch clients before sub-channels */
+
348  if($uri->getFragment() == "clients_before_channels")
+
349  {
+
350  $node->setLoadClientlistFirst(TRUE);
+
351  }
+
352  elseif($uri->hasQueryVar("clients_before_channels"))
+
353  {
+
354  $node->setLoadClientlistFirst($uri->getQueryVar("clients_before_channels") ? TRUE : FALSE);
+
355  }
+
356 
+
357  /* flag to hide ServerQuery clients */
+
358  if($uri->getFragment() == "no_query_clients")
+
359  {
+
360  $node->setExcludeQueryClients(TRUE);
+
361  }
+
362  elseif($uri->hasQueryVar("no_query_clients"))
+
363  {
+
364  $node->setExcludeQueryClients($uri->getQueryVar("no_query_clients") ? TRUE : FALSE);
+
365  }
+
366 
+
367  /* access server node object */
+
368  if($uri->hasQueryVar("server_id"))
+
369  {
+
370  $node = $node->serverGetById($uri->getQueryVar("server_id"));
+
371  }
+
372  elseif($uri->hasQueryVar("server_uid"))
+
373  {
+
374  $node = $node->serverGetByUid($uri->getQueryVar("server_uid"));
+
375  }
+
376  elseif($uri->hasQueryVar("server_port"))
+
377  {
+
378  $node = $node->serverGetByPort($uri->getQueryVar("server_port"));
+
379  }
+
380  elseif($uri->hasQueryVar("server_name"))
+
381  {
+
382  $node = $node->serverGetByName($uri->getQueryVar("server_name"));
+
383  }
+
384  elseif($uri->hasQueryVar("server_tsdns"))
+
385  {
+
386  $node = $node->serverGetByTSDNS($uri->getQueryVar("server_tsdns"));
+
387  }
+
388 
+
389  /* direct access to node objects */
+
390  if($node instanceof TeamSpeak3_Node_Server)
+
391  {
+
392  /* access channel node object */
+
393  if($uri->hasQueryVar("channel_id"))
+
394  {
+
395  $node = $node->channelGetById($uri->getQueryVar("channel_id"));
+
396  }
+
397  elseif($uri->hasQueryVar("channel_name"))
+
398  {
+
399  $node = $node->channelGetByName($uri->getQueryVar("channel_name"));
+
400  }
+
401 
+
402  /* access client node object */
+
403  if($uri->hasQueryVar("client_id"))
+
404  {
+
405  $node = $node->clientGetById($uri->getQueryVar("client_id"));
+
406  }
+
407  if($uri->hasQueryVar("client_uid"))
+
408  {
+
409  $node = $node->clientGetByUid($uri->getQueryVar("client_uid"));
+
410  }
+
411  elseif($uri->hasQueryVar("client_name"))
+
412  {
+
413  $node = $node->clientGetByName($uri->getQueryVar("client_name"));
+
414  }
+
415  }
+
416 
+
417  return $node;
+
418  }
+
419 
+
420  return $object;
+
421  }
+
+
+
+ +
+
+ + + + + +
+ + + + + + + + +
static TeamSpeak3::loadClass ( $class)
+
+staticprotected
+
+ +

Loads a class from a PHP file.

+

The filename must be formatted as "$class.php".

+

include() is not prefixed with the @ operator because if the file is loaded and contains a parse error, execution will halt silently and this is difficult to debug.

+
Parameters
+ + +
string$class
+
+
+
Exceptions
+ + +
LogicException
+
+
+
Returns
boolean
+ +

Definition at line 433 of file TeamSpeak3.php.

+
434  {
+
435  if(class_exists($class, FALSE) || interface_exists($class, FALSE))
+
436  {
+
437  return;
+
438  }
+
439 
+
440  if(preg_match("/[^a-z0-9\\/\\\\_.-]/i", $class))
+
441  {
+
442  throw new LogicException("illegal characters in classname '" . $class . "'");
+
443  }
+
444 
+
445  $file = self::getFilePath($class) . ".php";
+
446 
+
447  if(!file_exists($file) || !is_readable($file))
+
448  {
+
449  throw new LogicException("file '" . $file . "' does not exist or is not readable");
+
450  }
+
451 
+
452  if(class_exists($class, FALSE) || interface_exists($class, FALSE))
+
453  {
+
454  throw new LogicException("class '" . $class . "' does not exist");
+
455  }
+
456 
+
457  return include_once($file);
+
458  }
+
+
+
+ +
+
+ + + + + +
+ + + + + + + + +
static TeamSpeak3::getFilePath ( $name)
+
+staticprotected
+
+ +

Generates a possible file path for $name.

+
Parameters
+ + +
string$name
+
+
+
Returns
string
+ +

Definition at line 466 of file TeamSpeak3.php.

+
467  {
+
468  $path = str_replace("_", DIRECTORY_SEPARATOR, $name);
+
469  $path = str_replace(__CLASS__, dirname(__FILE__), $path);
+
470 
+
471  return $path;
+
472  }
+
+
+
+ +
+
+ + + + + +
+ + + + + + + + + + + + + + + + + + +
static TeamSpeak3::getAdapterName ( $name,
 $namespace = "TeamSpeak3_Adapter_" 
)
+
+staticprotected
+
+ +

Returns the name of an adapter class by $name.

+
Parameters
+ + + +
string$name
string$namespace
+
+
+
Exceptions
+ + +
TeamSpeak3_Adapter_Exception
+
+
+
Returns
string
+ +

Definition at line 482 of file TeamSpeak3.php.

+ +

References TeamSpeak3_Helper_String\factory().

+
483  {
+
484  $path = self::getFilePath($namespace);
+
485  $scan = scandir($path);
+
486 
+
487  foreach($scan as $node)
+
488  {
+
489  $file = TeamSpeak3_Helper_String::factory($node)->toLower();
+
490 
+
491  if($file->startsWith($name) && $file->endsWith(".php"))
+
492  {
+
493  return $namespace . str_replace(".php", "", $node);
+
494  }
+
495  }
+
496 
+
497  throw new TeamSpeak3_Adapter_Exception("adapter '" . $name . "' does not exist");
+
498  }
+
+
+
+ +
+
+ + + + + +
+ + + + + + + + +
static TeamSpeak3::autoload ( $class)
+
+static
+
+ +

spl_autoload() suitable implementation for supporting class autoloading.

+
Parameters
+ + +
string$class
+
+
+
Returns
boolean
+ +

Definition at line 506 of file TeamSpeak3.php.

+
507  {
+
508  if(substr($class, 0, strlen(__CLASS__)) != __CLASS__) return;
+
509 
+
510  try
+
511  {
+
512  self::loadClass($class);
+
513 
+
514  return TRUE;
+
515  }
+
516  catch(Exception $e)
+
517  {
+
518  return FALSE;
+
519  }
+
520  }
+
+
+
+ +
+
+ + + + + +
+ + + + + + + +
static TeamSpeak3::init ()
+
+static
+
+ +

Checks for required PHP features, enables autoloading and starts a default profiler.

+
Exceptions
+ + +
LogicException
+
+
+
Returns
void
+ +

Definition at line 528 of file TeamSpeak3.php.

+ +

References TeamSpeak3_Helper_Profiler\start().

+
529  {
+
530  if(version_compare(phpversion(), "5.2.1") == -1)
+
531  {
+
532  throw new LogicException("this particular software cannot be used with the installed version of PHP");
+
533  }
+
534 
+
535  if(!function_exists("stream_socket_client"))
+
536  {
+
537  throw new LogicException("network functions are not available in this PHP installation");
+
538  }
+
539 
+
540  if(!function_exists("spl_autoload_register"))
+
541  {
+
542  throw new LogicException("autoload functions are not available in this PHP installation");
+
543  }
+
544 
+
545  if(!class_exists("TeamSpeak3_Helper_Profiler"))
+
546  {
+
547  spl_autoload_register(array(__CLASS__, "autoload"));
+
548  }
+
549 
+ +
551  }
+
+
+
+ +
+
+ + + + + +
+ + + + + + + +
static TeamSpeak3::getEscapePatterns ()
+
+static
+
+ +

Returns an assoc array containing all escape patterns available on a TeamSpeak 3 Server.

+
Returns
array
+ +

Definition at line 559 of file TeamSpeak3.php.

+ +

Referenced by TeamSpeak3_Helper_String\escape(), and TeamSpeak3_Helper_String\unescape().

+
560  {
+
561  return self::$escape_patterns;
+
562  }
+
+
+
+ +
+
+ + + + + +
+ + + + + + + + + + + + + + + + + + +
static TeamSpeak3::dump ( $var,
 $echo = TRUE 
)
+
+static
+
+ +

Debug helper function.

+

This is a wrapper for var_dump() that adds the pre-format tags, cleans up newlines and indents, and runs htmlentities() before output.

+
Parameters
+ + + +
mixed$var
bool$echo
+
+
+
Returns
string
+ +

Definition at line 572 of file TeamSpeak3.php.

+
573  {
+
574  ob_start();
+
575  var_dump($var);
+
576 
+
577  $output = ob_get_clean();
+
578  $output = preg_replace("/\]\=>\n(\s+)/m", "] => ", $output);
+
579 
+
580  if(PHP_SAPI == "cli")
+
581  {
+
582  $output = PHP_EOL . PHP_EOL . $output . PHP_EOL;
+
583  }
+
584  else
+
585  {
+
586  $output = "<pre>" . htmlspecialchars($output, ENT_QUOTES) . "</pre>";
+
587  }
+
588 
+
589  if($echo) echo($output);
+
590 
+
591  return $output;
+
592  }
+
+
+
+

Member Data Documentation

+ +
+
+ + + + +
const TeamSpeak3::READY = "TS3"
+
+ +

TeamSpeak 3 protocol welcome message.

+ +

Definition at line 37 of file TeamSpeak3.php.

+ +

Referenced by TeamSpeak3_Adapter_ServerQuery\syn().

+ +
+
+ +
+
+ + + + +
const TeamSpeak3::GREET = "Welcome"
+
+ +

TeamSpeak 3 protocol greeting message prefix.

+ +

Definition at line 42 of file TeamSpeak3.php.

+ +

Referenced by TeamSpeak3_Adapter_ServerQuery_Reply\fetchReply().

+ +
+
+ +
+
+ + + + +
const TeamSpeak3::ERROR = "error"
+
+ +

TeamSpeak 3 protocol error message prefix.

+ +

Definition at line 47 of file TeamSpeak3.php.

+ +

Referenced by TeamSpeak3_Adapter_ServerQuery_Event\__construct(), and TeamSpeak3_Adapter_ServerQuery\request().

+ +
+
+ +
+
+ + + + +
const TeamSpeak3::EVENT = "notify"
+
+ +

TeamSpeak 3 protocol event message prefix.

+ +

Definition at line 52 of file TeamSpeak3.php.

+ +

Referenced by TeamSpeak3_Adapter_ServerQuery_Event\__construct(), TeamSpeak3_Adapter_ServerQuery_Reply\fetchReply(), and TeamSpeak3_Adapter_ServerQuery\wait().

+ +
+
+ +
+
+ + + + +
const TeamSpeak3::SCHID = "selected"
+
+ +

TeamSpeak 3 protocol server connection handler ID prefix.

+ +

Definition at line 57 of file TeamSpeak3.php.

+ +
+
+ +
+
+ + + + +
const TeamSpeak3::LIB_VERSION = "1.1.23"
+
+ +

TeamSpeak 3 PHP Framework version.

+ +

Definition at line 62 of file TeamSpeak3.php.

+ +
+
+ +
+
+ + + + +
const TeamSpeak3::SEPARATOR_LINE = "\n"
+
+ +

protocol line separator

+ +

Definition at line 67 of file TeamSpeak3.php.

+ +
+
+ +
+
+ + + + +
const TeamSpeak3::SEPARATOR_LIST = "|"
+
+
+ + + +
+
+ + + + +
const TeamSpeak3::SEPARATOR_PAIR = "="
+
+
+ +
+
+ + + + +
const TeamSpeak3::LOGLEVEL_CRITICAL = 0x00
+
+ +

0: these messages stop the program

+ +

Definition at line 75 of file TeamSpeak3.php.

+ +

Referenced by TeamSpeak3_Helper_Convert\logLevel().

+ +
+
+ +
+
+ + + + +
const TeamSpeak3::LOGLEVEL_ERROR = 0x01
+
+ +

1: everything that is really bad

+ +

Definition at line 76 of file TeamSpeak3.php.

+ +

Referenced by TeamSpeak3_Helper_Convert\logEntry(), and TeamSpeak3_Helper_Convert\logLevel().

+ +
+
+ +
+
+ + + + +
const TeamSpeak3::LOGLEVEL_WARNING = 0x02
+
+ +

2: everything that might be bad

+ +

Definition at line 77 of file TeamSpeak3.php.

+ +

Referenced by TeamSpeak3_Helper_Convert\logLevel().

+ +
+
+ +
+
+ + + + +
const TeamSpeak3::LOGLEVEL_DEBUG = 0x03
+
+ +

3: output that might help find a problem

+ +

Definition at line 78 of file TeamSpeak3.php.

+ +

Referenced by TeamSpeak3_Helper_Convert\logLevel().

+ +
+
+ +
+
+ + + + +
const TeamSpeak3::LOGLEVEL_INFO = 0x04
+
+ +

4: informational output

+ +

Definition at line 79 of file TeamSpeak3.php.

+ +

Referenced by TeamSpeak3_Helper_Convert\logLevel().

+ +
+
+ +
+
+ + + + +
const TeamSpeak3::LOGLEVEL_DEVEL = 0x05
+
+ +

5: development output

+ +

Definition at line 80 of file TeamSpeak3.php.

+ +

Referenced by TeamSpeak3_Helper_Convert\logLevel().

+ +
+
+ +
+
+ + + + +
const TeamSpeak3::TOKEN_SERVERGROUP = 0x00
+
+ +

0: server group token (id1={groupID} id2=0)

+ +

Definition at line 85 of file TeamSpeak3.php.

+ +

Referenced by TeamSpeak3_Node_Servergroup\privilegeKeyCreate().

+ +
+
+ +
+
+ + + + +
const TeamSpeak3::TOKEN_CHANNELGROUP = 0x01
+
+ +

1: channel group token (id1={groupID} id2={channelID})

+ +

Definition at line 86 of file TeamSpeak3.php.

+ +

Referenced by TeamSpeak3_Node_Channelgroup\privilegeKeyCreate().

+ +
+
+ +
+
+ + + + +
const TeamSpeak3::CODEC_SPEEX_NARROWBAND = 0x00
+
+ +

0: speex narrowband (mono, 16bit, 8kHz)

+ +

Definition at line 91 of file TeamSpeak3.php.

+ +

Referenced by TeamSpeak3_Helper_Convert\codec().

+ +
+
+ +
+
+ + + + +
const TeamSpeak3::CODEC_SPEEX_WIDEBAND = 0x01
+
+ +

1: speex wideband (mono, 16bit, 16kHz)

+ +

Definition at line 92 of file TeamSpeak3.php.

+ +

Referenced by TeamSpeak3_Helper_Convert\codec().

+ +
+
+ +
+
+ + + + +
const TeamSpeak3::CODEC_SPEEX_ULTRAWIDEBAND = 0x02
+
+ +

2: speex ultra-wideband (mono, 16bit, 32kHz)

+ +

Definition at line 93 of file TeamSpeak3.php.

+ +

Referenced by TeamSpeak3_Helper_Convert\codec().

+ +
+
+ +
+
+ + + + +
const TeamSpeak3::CODEC_CELT_MONO = 0x03
+
+ +

3: celt mono (mono, 16bit, 48kHz)

+ +

Definition at line 94 of file TeamSpeak3.php.

+ +

Referenced by TeamSpeak3_Helper_Convert\codec(), and TeamSpeak3_Viewer_Html\getSuffixIconChannel().

+ +
+
+ +
+
+ + + + +
const TeamSpeak3::CODEC_OPUS_VOICE = 0x04
+
+ +

3: opus voice (interactive)

+ +

Definition at line 95 of file TeamSpeak3.php.

+ +

Referenced by TeamSpeak3_Node_Server\channelSpacerCreate(), and TeamSpeak3_Helper_Convert\codec().

+ +
+
+ +
+
+ + + + +
const TeamSpeak3::CODEC_OPUS_MUSIC = 0x05
+
+ +

3: opus music (interactive)

+ +

Definition at line 96 of file TeamSpeak3.php.

+ +

Referenced by TeamSpeak3_Helper_Convert\codec(), and TeamSpeak3_Viewer_Html\getSuffixIconChannel().

+ +
+
+ +
+
+ + + + +
const TeamSpeak3::CODEC_CRYPT_INDIVIDUAL = 0x00
+
+ +

0: configure per channel

+ +

Definition at line 101 of file TeamSpeak3.php.

+ +
+
+ +
+
+ + + + +
const TeamSpeak3::CODEC_CRYPT_DISABLED = 0x01
+
+ +

1: globally disabled

+ +

Definition at line 102 of file TeamSpeak3.php.

+ +
+
+ +
+
+ + + + +
const TeamSpeak3::CODEC_CRYPT_ENABLED = 0x02
+
+ +

2: globally enabled

+ +

Definition at line 103 of file TeamSpeak3.php.

+ +
+
+ +
+
+ + + + +
const TeamSpeak3::KICK_CHANNEL = 0x04
+
+ +

4: kick client from channel

+ +

Definition at line 108 of file TeamSpeak3.php.

+ +
+
+ +
+
+ + + + +
const TeamSpeak3::KICK_SERVER = 0x05
+
+ +

5: kick client from server

+ +

Definition at line 109 of file TeamSpeak3.php.

+ +
+
+ +
+
+ + + + +
const TeamSpeak3::TEXTMSG_CLIENT = 0x01
+
+ +

1: target is a client

+ +

Definition at line 114 of file TeamSpeak3.php.

+ +

Referenced by TeamSpeak3_Node_Client\message(), TeamSpeak3_Node_Channelgroup\message(), and TeamSpeak3_Node_Servergroup\message().

+ +
+
+ +
+
+ + + + +
const TeamSpeak3::TEXTMSG_CHANNEL = 0x02
+
+ +

2: target is a channel

+ +

Definition at line 115 of file TeamSpeak3.php.

+ +

Referenced by TeamSpeak3_Node_Channel\message().

+ +
+
+ +
+
+ + + + +
const TeamSpeak3::TEXTMSG_SERVER = 0x03
+
+ +

3: target is a virtual server

+ +

Definition at line 116 of file TeamSpeak3.php.

+ +

Referenced by TeamSpeak3_Node_Server\message().

+ +
+
+ +
+
+ + + + +
const TeamSpeak3::PLUGINCMD_CHANNEL = 0x01
+
+ +

1: send plugincmd to all clients in current channel

+ +

Definition at line 121 of file TeamSpeak3.php.

+ +

Referenced by TeamSpeak3_Node_Channel\sendPluginCmd().

+ +
+
+ +
+
+ + + + +
const TeamSpeak3::PLUGINCMD_SERVER = 0x02
+
+ +

2: send plugincmd to all clients on server

+ +

Definition at line 122 of file TeamSpeak3.php.

+ +

Referenced by TeamSpeak3_Node_Server\sendPluginCmd().

+ +
+
+ +
+
+ + + + +
const TeamSpeak3::PLUGINCMD_CLIENT = 0x03
+
+ +

3: send plugincmd to all given client ids

+ +

Definition at line 123 of file TeamSpeak3.php.

+ +

Referenced by TeamSpeak3_Node_Client\sendPluginCmd().

+ +
+
+ +
+
+ + + + +
const TeamSpeak3::PLUGINCMD_CHANNEL_SUBSCRIBED = 0x04
+
+ +

4: send plugincmd to all subscribed clients in current channel

+ +

Definition at line 124 of file TeamSpeak3.php.

+ +

Referenced by TeamSpeak3_Node_Channel\sendPluginCmd().

+ +
+
+ +
+
+ + + + +
const TeamSpeak3::HOSTMSG_NONE = 0x00
+
+ +

0: display no message

+ +

Definition at line 129 of file TeamSpeak3.php.

+ +
+
+ +
+
+ + + + +
const TeamSpeak3::HOSTMSG_LOG = 0x01
+
+ +

1: display message in chatlog

+ +

Definition at line 130 of file TeamSpeak3.php.

+ +
+
+ +
+
+ + + + +
const TeamSpeak3::HOSTMSG_MODAL = 0x02
+
+ +

2: display message in modal dialog

+ +

Definition at line 131 of file TeamSpeak3.php.

+ +
+
+ +
+
+ + + + +
const TeamSpeak3::HOSTMSG_MODALQUIT = 0x03
+
+ +

3: display message in modal dialog and close connection

+ +

Definition at line 132 of file TeamSpeak3.php.

+ +
+
+ +
+
+ + + + +
const TeamSpeak3::HOSTBANNER_NO_ADJUST = 0x00
+
+ +

0: do not adjust

+ +

Definition at line 137 of file TeamSpeak3.php.

+ +
+
+ +
+
+ + + + +
const TeamSpeak3::HOSTBANNER_IGNORE_ASPECT = 0x01
+
+ +

1: adjust but ignore aspect ratio

+ +

Definition at line 138 of file TeamSpeak3.php.

+ +
+
+ +
+
+ + + + +
const TeamSpeak3::HOSTBANNER_KEEP_ASPECT = 0x02
+
+ +

2: adjust and keep aspect ratio

+ +

Definition at line 139 of file TeamSpeak3.php.

+ +
+
+ +
+
+ + + + +
const TeamSpeak3::CLIENT_TYPE_REGULAR = 0x00
+
+ +

0: regular client

+ +

Definition at line 144 of file TeamSpeak3.php.

+ +
+
+ +
+
+ + + + +
const TeamSpeak3::CLIENT_TYPE_SERVERQUERY = 0x01
+
+ +

1: query client

+ +

Definition at line 145 of file TeamSpeak3.php.

+ +
+
+ +
+
+ + + + +
const TeamSpeak3::GROUP_DBTYPE_TEMPLATE = 0x00
+
+ +

0: template group (used for new virtual servers)

+ +

Definition at line 150 of file TeamSpeak3.php.

+ +

Referenced by TeamSpeak3_Helper_Convert\groupType().

+ +
+
+ +
+
+ + + + +
const TeamSpeak3::GROUP_DBTYPE_REGULAR = 0x01
+
+ +

1: regular group (used for regular clients)

+ +

Definition at line 151 of file TeamSpeak3.php.

+ +

Referenced by TeamSpeak3_Helper_Convert\groupType(), and TeamSpeak3_Node_Server\serverGroupGetProfiles().

+ +
+
+ +
+
+ + + + +
const TeamSpeak3::GROUP_DBTYPE_SERVERQUERY = 0x02
+
+ +

2: global query group (used for ServerQuery clients)

+ +

Definition at line 152 of file TeamSpeak3.php.

+ +

Referenced by TeamSpeak3_Helper_Convert\groupType().

+ +
+
+ +
+
+ + + + +
const TeamSpeak3::GROUP_NAMEMODE_HIDDEN = 0x00
+
+ +

0: display no name

+ +

Definition at line 157 of file TeamSpeak3.php.

+ +
+
+ +
+
+ + + + +
const TeamSpeak3::GROUP_NAMEMODE_BEFORE = 0x01
+
+ +

1: display name before client nickname

+ +

Definition at line 158 of file TeamSpeak3.php.

+ +

Referenced by TeamSpeak3_Viewer_Html\getCorpusName().

+ +
+
+ +
+
+ + + + +
const TeamSpeak3::GROUP_NAMEMODE_BEHIND = 0x02
+
+ +

2: display name after client nickname

+ +

Definition at line 159 of file TeamSpeak3.php.

+ +

Referenced by TeamSpeak3_Viewer_Html\getCorpusName().

+ +
+
+ +
+
+ + + + +
const TeamSpeak3::GROUP_IDENTIFIY_STRONGEST = 0x01
+
+ +

1: identify most powerful group

+ +

Definition at line 164 of file TeamSpeak3.php.

+ +

Referenced by TeamSpeak3_Node_Server\serverGroupIdentify().

+ +
+
+ +
+
+ + + + +
const TeamSpeak3::GROUP_IDENTIFIY_WEAKEST = 0x02
+
+ +

2: identify weakest group

+ +

Definition at line 165 of file TeamSpeak3.php.

+ +
+
+ +
+
+ + + + +
const TeamSpeak3::PERM_TYPE_SERVERGROUP = 0x00
+
+ +

0: server group permission

+ +

Definition at line 170 of file TeamSpeak3.php.

+ +

Referenced by TeamSpeak3_Helper_Convert\permissionType(), and TeamSpeak3_Node_Server\permRemoveAny().

+ +
+
+ +
+
+ + + + +
const TeamSpeak3::PERM_TYPE_CLIENT = 0x01
+
+ +

1: client specific permission

+ +

Definition at line 171 of file TeamSpeak3.php.

+ +

Referenced by TeamSpeak3_Helper_Convert\permissionType(), and TeamSpeak3_Node_Server\permRemoveAny().

+ +
+
+ +
+
+ + + + +
const TeamSpeak3::PERM_TYPE_CHANNEL = 0x02
+
+ +

2: channel specific permission

+ +

Definition at line 172 of file TeamSpeak3.php.

+ +

Referenced by TeamSpeak3_Helper_Convert\permissionType(), and TeamSpeak3_Node_Server\permRemoveAny().

+ +
+
+ +
+
+ + + + +
const TeamSpeak3::PERM_TYPE_CHANNELGROUP = 0x03
+
+ +

3: channel group permission

+ +

Definition at line 173 of file TeamSpeak3.php.

+ +

Referenced by TeamSpeak3_Helper_Convert\permissionType(), and TeamSpeak3_Node_Server\permRemoveAny().

+ +
+
+ +
+
+ + + + +
const TeamSpeak3::PERM_TYPE_CHANNELCLIENT = 0x04
+
+ +

4: channel-client specific permission

+ +

Definition at line 174 of file TeamSpeak3.php.

+ +

Referenced by TeamSpeak3_Helper_Convert\permissionType(), and TeamSpeak3_Node_Server\permRemoveAny().

+ +
+
+ +
+
+ + + + +
const TeamSpeak3::PERM_CAT_GLOBAL = 0x10
+
+ +

00010000: global permissions

+ +

Definition at line 179 of file TeamSpeak3.php.

+ +

Referenced by TeamSpeak3_Helper_Convert\permissionCategory().

+ +
+
+ +
+
+ + + + +
const TeamSpeak3::PERM_CAT_GLOBAL_INFORMATION = 0x11
+
+ +

00010001: global permissions -> global information

+ +

Definition at line 180 of file TeamSpeak3.php.

+ +

Referenced by TeamSpeak3_Helper_Convert\permissionCategory().

+ +
+
+ +
+
+ + + + +
const TeamSpeak3::PERM_CAT_GLOBAL_SERVER_MGMT = 0x12
+
+ +

00010010: global permissions -> virtual server management

+ +

Definition at line 181 of file TeamSpeak3.php.

+ +

Referenced by TeamSpeak3_Helper_Convert\permissionCategory().

+ +
+
+ +
+
+ + + + +
const TeamSpeak3::PERM_CAT_GLOBAL_ADM_ACTIONS = 0x13
+
+ +

00010011: global permissions -> global administrative actions

+ +

Definition at line 182 of file TeamSpeak3.php.

+ +

Referenced by TeamSpeak3_Helper_Convert\permissionCategory().

+ +
+
+ +
+
+ + + + +
const TeamSpeak3::PERM_CAT_GLOBAL_SETTINGS = 0x14
+
+ +

00010100: global permissions -> global settings

+ +

Definition at line 183 of file TeamSpeak3.php.

+ +

Referenced by TeamSpeak3_Helper_Convert\permissionCategory().

+ +
+
+ +
+
+ + + + +
const TeamSpeak3::PERM_CAT_SERVER = 0x20
+
+ +

00100000: virtual server permissions

+ +

Definition at line 184 of file TeamSpeak3.php.

+ +

Referenced by TeamSpeak3_Helper_Convert\permissionCategory().

+ +
+
+ +
+
+ + + + +
const TeamSpeak3::PERM_CAT_SERVER_INFORMATION = 0x21
+
+ +

00100001: virtual server permissions -> virtual server information

+ +

Definition at line 185 of file TeamSpeak3.php.

+ +

Referenced by TeamSpeak3_Helper_Convert\permissionCategory().

+ +
+
+ +
+
+ + + + +
const TeamSpeak3::PERM_CAT_SERVER_ADM_ACTIONS = 0x22
+
+ +

00100010: virtual server permissions -> virtual server administrative actions

+ +

Definition at line 186 of file TeamSpeak3.php.

+ +

Referenced by TeamSpeak3_Helper_Convert\permissionCategory().

+ +
+
+ +
+
+ + + + +
const TeamSpeak3::PERM_CAT_SERVER_SETTINGS = 0x23
+
+ +

00100011: virtual server permissions -> virtual server settings

+ +

Definition at line 187 of file TeamSpeak3.php.

+ +

Referenced by TeamSpeak3_Helper_Convert\permissionCategory().

+ +
+
+ +
+
+ + + + +
const TeamSpeak3::PERM_CAT_CHANNEL = 0x30
+
+ +

00110000: channel permissions

+ +

Definition at line 188 of file TeamSpeak3.php.

+ +

Referenced by TeamSpeak3_Helper_Convert\permissionCategory().

+ +
+
+ +
+
+ + + + +
const TeamSpeak3::PERM_CAT_CHANNEL_INFORMATION = 0x31
+
+ +

00110001: channel permissions -> channel information

+ +

Definition at line 189 of file TeamSpeak3.php.

+ +

Referenced by TeamSpeak3_Helper_Convert\permissionCategory().

+ +
+
+ +
+
+ + + + +
const TeamSpeak3::PERM_CAT_CHANNEL_CREATE = 0x32
+
+ +

00110010: channel permissions -> create channels

+ +

Definition at line 190 of file TeamSpeak3.php.

+ +

Referenced by TeamSpeak3_Helper_Convert\permissionCategory().

+ +
+
+ +
+
+ + + + +
const TeamSpeak3::PERM_CAT_CHANNEL_MODIFY = 0x33
+
+ +

00110011: channel permissions -> edit channels

+ +

Definition at line 191 of file TeamSpeak3.php.

+ +

Referenced by TeamSpeak3_Helper_Convert\permissionCategory().

+ +
+
+ +
+
+ + + + +
const TeamSpeak3::PERM_CAT_CHANNEL_DELETE = 0x34
+
+ +

00110100: channel permissions -> delete channels

+ +

Definition at line 192 of file TeamSpeak3.php.

+ +

Referenced by TeamSpeak3_Helper_Convert\permissionCategory().

+ +
+
+ +
+
+ + + + +
const TeamSpeak3::PERM_CAT_CHANNEL_ACCESS = 0x35
+
+ +

00110101: channel permissions -> access channels

+ +

Definition at line 193 of file TeamSpeak3.php.

+ +

Referenced by TeamSpeak3_Helper_Convert\permissionCategory().

+ +
+
+ +
+
+ + + + +
const TeamSpeak3::PERM_CAT_GROUP = 0x40
+
+ +

01000000: group permissions

+ +

Definition at line 194 of file TeamSpeak3.php.

+ +

Referenced by TeamSpeak3_Helper_Convert\permissionCategory().

+ +
+
+ +
+
+ + + + +
const TeamSpeak3::PERM_CAT_GROUP_INFORMATION = 0x41
+
+ +

01000001: group permissions -> group information

+ +

Definition at line 195 of file TeamSpeak3.php.

+ +

Referenced by TeamSpeak3_Helper_Convert\permissionCategory().

+ +
+
+ +
+
+ + + + +
const TeamSpeak3::PERM_CAT_GROUP_CREATE = 0x42
+
+ +

01000010: group permissions -> create groups

+ +

Definition at line 196 of file TeamSpeak3.php.

+ +

Referenced by TeamSpeak3_Helper_Convert\permissionCategory().

+ +
+
+ +
+
+ + + + +
const TeamSpeak3::PERM_CAT_GROUP_MODIFY = 0x43
+
+ +

01000011: group permissions -> edit groups

+ +

Definition at line 197 of file TeamSpeak3.php.

+ +

Referenced by TeamSpeak3_Helper_Convert\permissionCategory().

+ +
+
+ +
+
+ + + + +
const TeamSpeak3::PERM_CAT_GROUP_DELETE = 0x44
+
+ +

01000100: group permissions -> delete groups

+ +

Definition at line 198 of file TeamSpeak3.php.

+ +

Referenced by TeamSpeak3_Helper_Convert\permissionCategory().

+ +
+
+ +
+
+ + + + +
const TeamSpeak3::PERM_CAT_CLIENT = 0x50
+
+ +

01010000: client permissions

+ +

Definition at line 199 of file TeamSpeak3.php.

+ +

Referenced by TeamSpeak3_Helper_Convert\permissionCategory().

+ +
+
+ +
+
+ + + + +
const TeamSpeak3::PERM_CAT_CLIENT_INFORMATION = 0x51
+
+ +

01010001: client permissions -> client information

+ +

Definition at line 200 of file TeamSpeak3.php.

+ +

Referenced by TeamSpeak3_Helper_Convert\permissionCategory().

+ +
+
+ +
+
+ + + + +
const TeamSpeak3::PERM_CAT_CLIENT_ADM_ACTIONS = 0x52
+
+ +

01010010: client permissions -> client administrative actions

+ +

Definition at line 201 of file TeamSpeak3.php.

+ +

Referenced by TeamSpeak3_Helper_Convert\permissionCategory().

+ +
+
+ +
+
+ + + + +
const TeamSpeak3::PERM_CAT_CLIENT_BASICS = 0x53
+
+ +

01010011: client permissions -> client basic communication

+ +

Definition at line 202 of file TeamSpeak3.php.

+ +

Referenced by TeamSpeak3_Helper_Convert\permissionCategory().

+ +
+
+ +
+
+ + + + +
const TeamSpeak3::PERM_CAT_CLIENT_MODIFY = 0x54
+
+ +

01010100: client permissions -> edit clients

+ +

Definition at line 203 of file TeamSpeak3.php.

+ +

Referenced by TeamSpeak3_Helper_Convert\permissionCategory().

+ +
+
+ +
+
+ + + + +
const TeamSpeak3::PERM_CAT_FILETRANSFER = 0x60
+
+ +

01100000: file transfer permissions

+ +

Definition at line 204 of file TeamSpeak3.php.

+ +

Referenced by TeamSpeak3_Helper_Convert\permissionCategory().

+ +
+
+ +
+
+ + + + +
const TeamSpeak3::PERM_CAT_NEEDED_MODIFY_POWER = 0xFF
+
+ +

11111111: needed permission modify power (grant) permissions

+ +

Definition at line 205 of file TeamSpeak3.php.

+ +

Referenced by TeamSpeak3_Helper_Convert\permissionCategory().

+ +
+
+ +
+
+ + + + +
const TeamSpeak3::FILE_TYPE_DIRECTORY = 0x00
+
+ +

0: file is directory

+ +

Definition at line 210 of file TeamSpeak3.php.

+ +

Referenced by TeamSpeak3_Node_Server\channelFileList().

+ +
+
+ +
+
+ + + + +
const TeamSpeak3::FILE_TYPE_REGULAR = 0x01
+
+ +

1: file is regular

+ +

Definition at line 211 of file TeamSpeak3.php.

+ +
+
+ +
+
+ + + + +
const TeamSpeak3::SNAPSHOT_STRING = 0x00
+
+ +

0: default string

+ +

Definition at line 216 of file TeamSpeak3.php.

+ +
+
+ +
+
+ + + + +
const TeamSpeak3::SNAPSHOT_BASE64 = 0x01
+
+ +

1: base64 string

+ +

Definition at line 217 of file TeamSpeak3.php.

+ +

Referenced by TeamSpeak3_Node_Server\snapshotCreate(), and TeamSpeak3_Node_Server\snapshotDeploy().

+ +
+
+ +
+
+ + + + +
const TeamSpeak3::SNAPSHOT_HEXDEC = 0x02
+
+ +

2: hexadecimal string

+ +

Definition at line 218 of file TeamSpeak3.php.

+ +

Referenced by TeamSpeak3_Node_Server\snapshotCreate(), and TeamSpeak3_Node_Server\snapshotDeploy().

+ +
+
+ +
+
+ + + + +
const TeamSpeak3::SPACER_SOLIDLINE = 0x00
+
+
+ +
+
+ + + + +
const TeamSpeak3::SPACER_DASHLINE = 0x01
+
+
+ +
+
+ + + + +
const TeamSpeak3::SPACER_DOTLINE = 0x02
+
+
+ +
+
+ + + + +
const TeamSpeak3::SPACER_DASHDOTLINE = 0x03
+
+
+ +
+
+ + + + +
const TeamSpeak3::SPACER_DASHDOTDOTLINE = 0x04
+
+
+ +
+
+ + + + +
const TeamSpeak3::SPACER_CUSTOM = 0x05
+
+ +

5: custom format

+ +

Definition at line 228 of file TeamSpeak3.php.

+ +

Referenced by TeamSpeak3_Node_Server\channelSpacerGetType(), and TeamSpeak3_Viewer_Html\getCorpusName().

+ +
+
+ +
+
+ + + + +
const TeamSpeak3::SPACER_ALIGN_LEFT = 0x00
+
+
+ +
+
+ + + + +
const TeamSpeak3::SPACER_ALIGN_RIGHT = 0x01
+
+
+ +
+
+ + + + +
const TeamSpeak3::SPACER_ALIGN_CENTER = 0x02
+
+
+ +
+
+ + + + +
const TeamSpeak3::SPACER_ALIGN_REPEAT = 0x03
+
+ +

3: repeat until the whole line is filled

+ +

Definition at line 236 of file TeamSpeak3.php.

+ +

Referenced by TeamSpeak3_Node_Server\channelSpacerCreate(), TeamSpeak3_Node_Server\channelSpacerGetAlign(), and TeamSpeak3_Viewer_Html\getCorpusName().

+ +
+
+ +
+
+ + + + +
const TeamSpeak3::REASON_NONE = 0x00
+
+ +

0: no reason

+ +

Definition at line 241 of file TeamSpeak3.php.

+ +
+
+ +
+
+ + + + +
const TeamSpeak3::REASON_MOVE = 0x01
+
+ +

1: channel switched or moved

+ +

Definition at line 242 of file TeamSpeak3.php.

+ +
+
+ +
+
+ + + + +
const TeamSpeak3::REASON_SUBSCRIPTION = 0x02
+
+ +

2: subscription added or removed

+ +

Definition at line 243 of file TeamSpeak3.php.

+ +
+
+ +
+
+ + + + +
const TeamSpeak3::REASON_TIMEOUT = 0x03
+
+ +

3: client connection timed out

+ +

Definition at line 244 of file TeamSpeak3.php.

+ +
+
+ +
+
+ + + + +
const TeamSpeak3::REASON_CHANNEL_KICK = 0x04
+
+ +

4: client kicked from channel

+ +

Definition at line 245 of file TeamSpeak3.php.

+ +
+
+ +
+
+ + + + +
const TeamSpeak3::REASON_SERVER_KICK = 0x05
+
+ +

5: client kicked from server

+ +

Definition at line 246 of file TeamSpeak3.php.

+ +
+
+ +
+
+ + + + +
const TeamSpeak3::REASON_SERVER_BAN = 0x06
+
+ +

6: client banned from server

+ +

Definition at line 247 of file TeamSpeak3.php.

+ +
+
+ +
+
+ + + + +
const TeamSpeak3::REASON_SERVER_STOP = 0x07
+
+ +

7: server stopped

+ +

Definition at line 248 of file TeamSpeak3.php.

+ +
+
+ +
+
+ + + + +
const TeamSpeak3::REASON_DISCONNECT = 0x08
+
+ +

8: client disconnected

+ +

Definition at line 249 of file TeamSpeak3.php.

+ +
+
+ +
+
+ + + + +
const TeamSpeak3::REASON_CHANNEL_UPDATE = 0x09
+
+ +

9: channel information updated

+ +

Definition at line 250 of file TeamSpeak3.php.

+ +
+
+ +
+
+ + + + +
const TeamSpeak3::REASON_CHANNEL_EDIT = 0x0A
+
+ +

10: channel information edited

+ +

Definition at line 251 of file TeamSpeak3.php.

+ +
+
+ +
+
+ + + + +
const TeamSpeak3::REASON_DISCONNECT_SHUTDOWN = 0x0B
+
+ +

11: client disconnected on server shutdown

+ +

Definition at line 252 of file TeamSpeak3.php.

+ +
+
+ +
+
+ + + + + +
+ + + + +
TeamSpeak3::$escape_patterns
+
+staticprotected
+
+Initial value:
= array(
+
"\\" => "\\\\",
+
"/" => "\\/",
+
" " => "\\s",
+
"|" => "\\p",
+
";" => "\\;",
+
"\a" => "\\a",
+
"\b" => "\\b",
+
"\f" => "\\f",
+
"\n" => "\\n",
+
"\r" => "\\r",
+
"\t" => "\\t",
+
"\v" => "\\v"
+
)
+
+

Definition at line 260 of file TeamSpeak3.php.

+ +
+
+
The documentation for this class was generated from the following file: +
+
+ + + + diff --git a/lib/docs/html/class_team_speak3.js b/lib/docs/html/class_team_speak3.js new file mode 100644 index 0000000..b9a1869 --- /dev/null +++ b/lib/docs/html/class_team_speak3.js @@ -0,0 +1,115 @@ +var class_team_speak3 = +[ + [ "READY", "class_team_speak3.html#ae31cefccb5993d1b5fa8fa9f52180bfe", null ], + [ "GREET", "class_team_speak3.html#a483d97eee2596af11821f74c6d1b83e0", null ], + [ "ERROR", "class_team_speak3.html#a5e20ff014c021e5dc0f04777b272ec84", null ], + [ "EVENT", "class_team_speak3.html#a4dbceb88091137f08da2f78d893a22c9", null ], + [ "SCHID", "class_team_speak3.html#a19d4d49947f93c087729848de6d71986", null ], + [ "LIB_VERSION", "class_team_speak3.html#a7d31dad145adb2a70ac9ae92adeebb5b", null ], + [ "SEPARATOR_LINE", "class_team_speak3.html#a1a5f95e94ebee25f7a7de47186fd7acc", null ], + [ "SEPARATOR_LIST", "class_team_speak3.html#a407829d390331e34c6f90d9df78ae6c5", null ], + [ "SEPARATOR_CELL", "class_team_speak3.html#a68cea90e6bd99a1aaf9b19325d0f02bb", null ], + [ "SEPARATOR_PAIR", "class_team_speak3.html#ac9b701c7439f38c391baba51f9b6d1da", null ], + [ "LOGLEVEL_CRITICAL", "class_team_speak3.html#a7febc9b704013d3a218171fbf5230998", null ], + [ "LOGLEVEL_ERROR", "class_team_speak3.html#a978acb82eda7f57b72a15c231ed7de26", null ], + [ "LOGLEVEL_WARNING", "class_team_speak3.html#a9ac856cab800709d07bc6b53b84d404f", null ], + [ "LOGLEVEL_DEBUG", "class_team_speak3.html#aa157f891770ebc32c3387769419f8bcf", null ], + [ "LOGLEVEL_INFO", "class_team_speak3.html#a4b19b7a03ed2787450ea21229854ced8", null ], + [ "LOGLEVEL_DEVEL", "class_team_speak3.html#a0ac677fa9a62b01a3a2619f874278654", null ], + [ "TOKEN_SERVERGROUP", "class_team_speak3.html#add756e636bc8ea39128fdf8361ffd54c", null ], + [ "TOKEN_CHANNELGROUP", "class_team_speak3.html#ae900e81e1e6607ad4294b17f62112685", null ], + [ "CODEC_SPEEX_NARROWBAND", "class_team_speak3.html#a73cb8b928682f11db10d5f4bf92c579d", null ], + [ "CODEC_SPEEX_WIDEBAND", "class_team_speak3.html#a7e144effeaf513a660467a0dadd1ae97", null ], + [ "CODEC_SPEEX_ULTRAWIDEBAND", "class_team_speak3.html#ab1b79661570e52e80cb9382286c3f0a6", null ], + [ "CODEC_CELT_MONO", "class_team_speak3.html#a8706d107a6d0bd56003436cf91931015", null ], + [ "CODEC_OPUS_VOICE", "class_team_speak3.html#ac8a12a60994f2949c63e21d8915c8afa", null ], + [ "CODEC_OPUS_MUSIC", "class_team_speak3.html#ad86387b6183780d2af6a1918552fc00b", null ], + [ "CODEC_CRYPT_INDIVIDUAL", "class_team_speak3.html#af4beb7ff503847abc4d8f00fa4a14929", null ], + [ "CODEC_CRYPT_DISABLED", "class_team_speak3.html#a204ba3447155504ad79532e02b0047c8", null ], + [ "CODEC_CRYPT_ENABLED", "class_team_speak3.html#af264159fd49c066ad3e88b475a168e45", null ], + [ "KICK_CHANNEL", "class_team_speak3.html#ab6a4d55688e33c16004508fff14c81da", null ], + [ "KICK_SERVER", "class_team_speak3.html#ae9df1f0980b1d3e9638b3a8084cc5234", null ], + [ "TEXTMSG_CLIENT", "class_team_speak3.html#a1882bc1d9fcbcc353d04d308194010bf", null ], + [ "TEXTMSG_CHANNEL", "class_team_speak3.html#a69511dec19c2f8ed1268267f09e88124", null ], + [ "TEXTMSG_SERVER", "class_team_speak3.html#a9f1020035b40674a589647e5dc90c95b", null ], + [ "PLUGINCMD_CHANNEL", "class_team_speak3.html#a1017b9d565da82a1a360ecd1074ef882", null ], + [ "PLUGINCMD_SERVER", "class_team_speak3.html#a908573c6bc67e85396a4af21972bfeae", null ], + [ "PLUGINCMD_CLIENT", "class_team_speak3.html#a2bd847d0f20f1d827238304dedaa6b77", null ], + [ "PLUGINCMD_CHANNEL_SUBSCRIBED", "class_team_speak3.html#ac5519852d33570fbd89e171937f553c2", null ], + [ "HOSTMSG_NONE", "class_team_speak3.html#a4350e9a5261f832d44d3b416d5bdcb50", null ], + [ "HOSTMSG_LOG", "class_team_speak3.html#a6c155661d55cd61ef79b1fd6413e5880", null ], + [ "HOSTMSG_MODAL", "class_team_speak3.html#a7d044183051509b77831a5546748245e", null ], + [ "HOSTMSG_MODALQUIT", "class_team_speak3.html#ad1956014c2a37cf8883bc6e845991597", null ], + [ "HOSTBANNER_NO_ADJUST", "class_team_speak3.html#a5a13321bcb3eff4b51cbe56eb342b701", null ], + [ "HOSTBANNER_IGNORE_ASPECT", "class_team_speak3.html#a0948f6a231bacd72d3455adc3314aadb", null ], + [ "HOSTBANNER_KEEP_ASPECT", "class_team_speak3.html#aa9e2a430fd552f4a0c3dec0855a4f8ad", null ], + [ "CLIENT_TYPE_REGULAR", "class_team_speak3.html#ae2f58969a8868c4793c485d63e6e7f05", null ], + [ "CLIENT_TYPE_SERVERQUERY", "class_team_speak3.html#a3c3b0109548e9a41717d64db57f54b6a", null ], + [ "GROUP_DBTYPE_TEMPLATE", "class_team_speak3.html#aeeab1204791458d7e543aedf5c4c8699", null ], + [ "GROUP_DBTYPE_REGULAR", "class_team_speak3.html#a6e018ed33e01f80861a9649f5fbdcb05", null ], + [ "GROUP_DBTYPE_SERVERQUERY", "class_team_speak3.html#a197a03a9e83e5663d0f071df18fb127d", null ], + [ "GROUP_NAMEMODE_HIDDEN", "class_team_speak3.html#a9bfa984813e9074be19a7cba3a8673d3", null ], + [ "GROUP_NAMEMODE_BEFORE", "class_team_speak3.html#ac9179c4a74a5c0cd269e6639868f3b57", null ], + [ "GROUP_NAMEMODE_BEHIND", "class_team_speak3.html#af93218df38a498fd730ad2f2676f6567", null ], + [ "GROUP_IDENTIFIY_STRONGEST", "class_team_speak3.html#ac8dbaaf31bc8b339287692ae80abae94", null ], + [ "GROUP_IDENTIFIY_WEAKEST", "class_team_speak3.html#a7e2d5457e1faace304311ca1617c283b", null ], + [ "PERM_TYPE_SERVERGROUP", "class_team_speak3.html#a0772e3a79ac03d3acb657e07dad63a0e", null ], + [ "PERM_TYPE_CLIENT", "class_team_speak3.html#a9ea90147fb0486786931015e4d64abba", null ], + [ "PERM_TYPE_CHANNEL", "class_team_speak3.html#a57fa7853513872a96f0adf9d3329c59b", null ], + [ "PERM_TYPE_CHANNELGROUP", "class_team_speak3.html#a2a930337bd67c2c2893b3afad902b440", null ], + [ "PERM_TYPE_CHANNELCLIENT", "class_team_speak3.html#a5324e065c2ed9c98c0931654d388610f", null ], + [ "PERM_CAT_GLOBAL", "class_team_speak3.html#aa5aba89a9024b4e7c7845b115f8e9c40", null ], + [ "PERM_CAT_GLOBAL_INFORMATION", "class_team_speak3.html#ac1329c48f57dcee568be69b33c778c99", null ], + [ "PERM_CAT_GLOBAL_SERVER_MGMT", "class_team_speak3.html#a0f7b0579cd636c1ea7fe5bcdd92dbc09", null ], + [ "PERM_CAT_GLOBAL_ADM_ACTIONS", "class_team_speak3.html#a4fa166aef3d0ba5f2204d8b9a257a23b", null ], + [ "PERM_CAT_GLOBAL_SETTINGS", "class_team_speak3.html#a5d9945d86f2ab5f1a4934e2604652503", null ], + [ "PERM_CAT_SERVER", "class_team_speak3.html#aa639ddfd900cc55961633d2e3ca03168", null ], + [ "PERM_CAT_SERVER_INFORMATION", "class_team_speak3.html#adab57311071c4b74b2f221dd747d9f54", null ], + [ "PERM_CAT_SERVER_ADM_ACTIONS", "class_team_speak3.html#a2237bc5075c3c354764e42f40a045179", null ], + [ "PERM_CAT_SERVER_SETTINGS", "class_team_speak3.html#a6dd546e23743326565a82accf7d793f6", null ], + [ "PERM_CAT_CHANNEL", "class_team_speak3.html#a0f7b54be70a8c790115ca92e98bcbee5", null ], + [ "PERM_CAT_CHANNEL_INFORMATION", "class_team_speak3.html#ae70bc3d695fcfe6db61c86fb58c076bd", null ], + [ "PERM_CAT_CHANNEL_CREATE", "class_team_speak3.html#aff66f6e403b88244a46c5cddefd63853", null ], + [ "PERM_CAT_CHANNEL_MODIFY", "class_team_speak3.html#a511bfe0b317d488a475c044baf3e490a", null ], + [ "PERM_CAT_CHANNEL_DELETE", "class_team_speak3.html#a2615a76afeecf68eae3ba5f2e908373c", null ], + [ "PERM_CAT_CHANNEL_ACCESS", "class_team_speak3.html#ac3b12e51946589138a84fdf2c653c9f6", null ], + [ "PERM_CAT_GROUP", "class_team_speak3.html#a8cd0b0d4c26e955f67be448039c4a4e2", null ], + [ "PERM_CAT_GROUP_INFORMATION", "class_team_speak3.html#aec5b4d0b149798108c05580399923757", null ], + [ "PERM_CAT_GROUP_CREATE", "class_team_speak3.html#ab413bc7287c76152eb9c51a74385b8a5", null ], + [ "PERM_CAT_GROUP_MODIFY", "class_team_speak3.html#aae3f41d88cbf9fbadb9f38dd67027168", null ], + [ "PERM_CAT_GROUP_DELETE", "class_team_speak3.html#a2d89a707e37e81732d9e9ba827cd8dd5", null ], + [ "PERM_CAT_CLIENT", "class_team_speak3.html#a47cc2fc667c048d716b054b21ccba9c0", null ], + [ "PERM_CAT_CLIENT_INFORMATION", "class_team_speak3.html#a745423668d892edf35aff2dc1d802649", null ], + [ "PERM_CAT_CLIENT_ADM_ACTIONS", "class_team_speak3.html#aab7ee7ef3548dce162310f5b58e22bce", null ], + [ "PERM_CAT_CLIENT_BASICS", "class_team_speak3.html#ab5e4b438da7c292ea5985eed88396f4d", null ], + [ "PERM_CAT_CLIENT_MODIFY", "class_team_speak3.html#a36c30eb13e8fe039e4c06a45e3e5f35a", null ], + [ "PERM_CAT_FILETRANSFER", "class_team_speak3.html#a1fa36fce856fa4d8ee9af0d2147d398a", null ], + [ "PERM_CAT_NEEDED_MODIFY_POWER", "class_team_speak3.html#aa534b78937197a0a0739f1fa3c98a8d1", null ], + [ "FILE_TYPE_DIRECTORY", "class_team_speak3.html#a0dfea6a5fe76141895e0f2900e8e4e52", null ], + [ "FILE_TYPE_REGULAR", "class_team_speak3.html#aec926b29e75ca080eb7fb8fbf69f9ab9", null ], + [ "SNAPSHOT_STRING", "class_team_speak3.html#af9a20a17b3aaaf60621e4f471f7e300a", null ], + [ "SNAPSHOT_BASE64", "class_team_speak3.html#ac9535ce5e98c480aea71d0f149a7c2cb", null ], + [ "SNAPSHOT_HEXDEC", "class_team_speak3.html#a7dfffb36f25a89a472b60275fc3fc4e7", null ], + [ "SPACER_SOLIDLINE", "class_team_speak3.html#abe21c7855096b6b8d86613897ed1a4bd", null ], + [ "SPACER_DASHLINE", "class_team_speak3.html#ae0f64ba57dfa729092ae07f0508ad20c", null ], + [ "SPACER_DOTLINE", "class_team_speak3.html#a1b97ddf3ea3bfb3bac4167cc9853bcf5", null ], + [ "SPACER_DASHDOTLINE", "class_team_speak3.html#ab5f7f692edb611a09be65dbe1cc22fd3", null ], + [ "SPACER_DASHDOTDOTLINE", "class_team_speak3.html#a8a46203c06bf7b769b1245eee8c71eca", null ], + [ "SPACER_CUSTOM", "class_team_speak3.html#a12e9d78448fe9a2fc19f71a19db33b24", null ], + [ "SPACER_ALIGN_LEFT", "class_team_speak3.html#ad7a9fe53817b1d8441eafe1cfed2570e", null ], + [ "SPACER_ALIGN_RIGHT", "class_team_speak3.html#ace570a7b5abdbfd89f20145f2757bbcd", null ], + [ "SPACER_ALIGN_CENTER", "class_team_speak3.html#aaffe4f52d9d9009a8fd90fb2683e18ce", null ], + [ "SPACER_ALIGN_REPEAT", "class_team_speak3.html#a7aa076becfafe9cfb5a6b9eae4c72831", null ], + [ "REASON_NONE", "class_team_speak3.html#afb77656b36c45073e770f13bf0a90e5d", null ], + [ "REASON_MOVE", "class_team_speak3.html#aad9bd5c1089efa20620cab286052b0f3", null ], + [ "REASON_SUBSCRIPTION", "class_team_speak3.html#a328b7a4eeed0ecd61865be986aa79f9c", null ], + [ "REASON_TIMEOUT", "class_team_speak3.html#aea8db94828ad856d0a207d228145e41a", null ], + [ "REASON_CHANNEL_KICK", "class_team_speak3.html#a3c394288b3b45df4a039127d1e119517", null ], + [ "REASON_SERVER_KICK", "class_team_speak3.html#a931e59afb66273ee4255e43676812726", null ], + [ "REASON_SERVER_BAN", "class_team_speak3.html#ad9dc7ed023c1a9be4504ba894a63bee1", null ], + [ "REASON_SERVER_STOP", "class_team_speak3.html#ac48ef3e11414170eecffcd252a637062", null ], + [ "REASON_DISCONNECT", "class_team_speak3.html#ae10cf1e6e6a365cf61eb7e38f6a2315b", null ], + [ "REASON_CHANNEL_UPDATE", "class_team_speak3.html#a7d82c5b03e862e2f53313363e1423535", null ], + [ "REASON_CHANNEL_EDIT", "class_team_speak3.html#a47403f14dad07252a387b8cc7e5d816f", null ], + [ "REASON_DISCONNECT_SHUTDOWN", "class_team_speak3.html#a9dcf492812b8b16ffbebcd05ffa1e6bf", null ] +]; \ No newline at end of file diff --git a/lib/docs/html/class_team_speak3___adapter___abstract-members.html b/lib/docs/html/class_team_speak3___adapter___abstract-members.html new file mode 100644 index 0000000..f4d6751 --- /dev/null +++ b/lib/docs/html/class_team_speak3___adapter___abstract-members.html @@ -0,0 +1,138 @@ + + + + + + +TeamSpeak 3 PHP Framework: Member List + + + + + + + + + + + + + +
+
+ + + + + + + +
+
TeamSpeak 3 PHP Framework +  1.1.23 +
+
Copyright © Planet TeamSpeak. All rights reserved.
+
+
+ + + + + +
+
+ +
+
+
+ + + + + + diff --git a/lib/docs/html/class_team_speak3___adapter___abstract.html b/lib/docs/html/class_team_speak3___adapter___abstract.html new file mode 100644 index 0000000..42de574 --- /dev/null +++ b/lib/docs/html/class_team_speak3___adapter___abstract.html @@ -0,0 +1,511 @@ + + + + + + +TeamSpeak 3 PHP Framework: TeamSpeak3_Adapter_Abstract Class Reference + + + + + + + + + + + + + +
+
+ + + + + + + +
+
TeamSpeak 3 PHP Framework +  1.1.23 +
+
Copyright © Planet TeamSpeak. All rights reserved.
+
+
+ + + + + +
+
+ +
+
+
+ +
+ + + + +
+ +
+ +
+ +
+
TeamSpeak3_Adapter_Abstract Class Reference
+
+
+ +

Provides low-level methods for concrete adapters to communicate with a TeamSpeak 3 Server. + More...

+
+ + Inheritance diagram for TeamSpeak3_Adapter_Abstract:
+
+
+ + + + + + + + + + + + + + + + + + + + + + + + + + + +

+Public Member Functions

 __construct (array $options)
 The TeamSpeak3_Adapter_Abstract constructor. More...
 
 __destruct ()
 The TeamSpeak3_Adapter_Abstract destructor. More...
 
 __sleep ()
 Commit pending data. More...
 
 __wakeup ()
 Reconnects to the remote server. More...
 
 getProfiler ()
 Returns the profiler timer used for this connection adapter. More...
 
 getTransport ()
 Returns the transport object used for this connection adapter. More...
 
 getTransportHost ()
 Returns the hostname or IPv4 address the underlying TeamSpeak3_Transport_Abstract object is connected to. More...
 
 getTransportPort ()
 Returns the port number of the server the underlying TeamSpeak3_Transport_Abstract object is connected to. More...
 
+ + + + + + + +

+Protected Member Functions

 syn ()
 Connects the TeamSpeak3_Transport_Abstract object and performs initial actions on the remote server. More...
 
 initTransport ($options, $transport="TeamSpeak3_Transport_TCP")
 Loads the transport object object used for the connection adapter and passes a given set of options. More...
 
+ + + + + +

+Protected Attributes

$options = null
 
$transport = null
 
+

Detailed Description

+

Provides low-level methods for concrete adapters to communicate with a TeamSpeak 3 Server.

+ +

Definition at line 32 of file Abstract.php.

+

Constructor & Destructor Documentation

+ +
+
+ + + + + + + + +
TeamSpeak3_Adapter_Abstract::__construct (array $options)
+
+ +

The TeamSpeak3_Adapter_Abstract constructor.

+
Parameters
+ + +
array$options
+
+
+
Returns
TeamSpeak3_Adapter_Abstract
+ +

Definition at line 54 of file Abstract.php.

+ +

References syn().

+
55  {
+
56  $this->options = $options;
+
57 
+
58  if($this->transport === null)
+
59  {
+
60  $this->syn();
+
61  }
+
62  }
+
+
+
+ +
+
+ + + + + +
+ + + + + + + +
TeamSpeak3_Adapter_Abstract::__destruct ()
+
+abstract
+
+ +

The TeamSpeak3_Adapter_Abstract destructor.

+
Returns
void
+ +
+
+

Member Function Documentation

+ +
+
+ + + + + +
+ + + + + + + +
TeamSpeak3_Adapter_Abstract::syn ()
+
+abstractprotected
+
+ +

Connects the TeamSpeak3_Transport_Abstract object and performs initial actions on the remote server.

+
Exceptions
+ + +
TeamSpeak3_Adapter_Exception
+
+
+
Returns
void
+ +

Referenced by __construct(), and __wakeup().

+ +
+
+ +
+
+ + + + + + + +
TeamSpeak3_Adapter_Abstract::__sleep ()
+
+ +

Commit pending data.

+
Returns
array
+ +

Definition at line 85 of file Abstract.php.

+
86  {
+
87  return array("options");
+
88  }
+
+
+
+ +
+
+ + + + + + + +
TeamSpeak3_Adapter_Abstract::__wakeup ()
+
+ +

Reconnects to the remote server.

+
Returns
void
+ +

Definition at line 95 of file Abstract.php.

+ +

References syn().

+
96  {
+
97  $this->syn();
+
98  }
+
+
+
+ +
+
+ + + + + + + +
TeamSpeak3_Adapter_Abstract::getProfiler ()
+
+ +

Returns the profiler timer used for this connection adapter.

+
Returns
TeamSpeak3_Helper_Profiler_Timer
+ +

Definition at line 105 of file Abstract.php.

+ +

References TeamSpeak3_Helper_Profiler\get().

+ +

Referenced by TeamSpeak3_Adapter_FileTransfer\download(), TeamSpeak3_Adapter_ServerQuery\getQueryRuntime(), TeamSpeak3_Adapter_FileTransfer\init(), TeamSpeak3_Adapter_ServerQuery\request(), and TeamSpeak3_Adapter_FileTransfer\upload().

+
106  {
+
107  return TeamSpeak3_Helper_Profiler::get(spl_object_hash($this));
+
108  }
+
+
+
+ + + +
+
+ + + + + +
+ + + + + + + + + + + + + + + + + + +
TeamSpeak3_Adapter_Abstract::initTransport ( $options,
 $transport = "TeamSpeak3_Transport_TCP" 
)
+
+protected
+
+ +

Loads the transport object object used for the connection adapter and passes a given set of options.

+
Parameters
+ + + +
array$options
string$transport
+
+
+
Exceptions
+ + +
TeamSpeak3_Adapter_Exception
+
+
+
Returns
void
+ +

Definition at line 129 of file Abstract.php.

+ +

Referenced by TeamSpeak3_Adapter_FileTransfer\syn(), TeamSpeak3_Adapter_TSDNS\syn(), TeamSpeak3_Adapter_Blacklist\syn(), TeamSpeak3_Adapter_ServerQuery\syn(), and TeamSpeak3_Adapter_Update\syn().

+
130  {
+
131  if(!is_array($options))
+
132  {
+
133  throw new TeamSpeak3_Adapter_Exception("transport parameters must provided in an array");
+
134  }
+
135 
+
136  $this->transport = new $transport($options);
+
137  }
+
+
+
+ +
+
+ + + + + + + +
TeamSpeak3_Adapter_Abstract::getTransportHost ()
+
+ +

Returns the hostname or IPv4 address the underlying TeamSpeak3_Transport_Abstract object is connected to.

+
Returns
string
+ +

Definition at line 145 of file Abstract.php.

+ +

References getTransport().

+
146  {
+
147  return $this->getTransport()->getConfig("host", "0.0.0.0");
+
148  }
+
+
+
+ +
+
+ + + + + + + +
TeamSpeak3_Adapter_Abstract::getTransportPort ()
+
+ +

Returns the port number of the server the underlying TeamSpeak3_Transport_Abstract object is connected to.

+
Returns
string
+ +

Definition at line 156 of file Abstract.php.

+ +

References getTransport().

+
157  {
+
158  return $this->getTransport()->getConfig("port", "0");
+
159  }
+
+
+
+
The documentation for this class was generated from the following file: +
+
+ + + + diff --git a/lib/docs/html/class_team_speak3___adapter___abstract.js b/lib/docs/html/class_team_speak3___adapter___abstract.js new file mode 100644 index 0000000..be3c4a3 --- /dev/null +++ b/lib/docs/html/class_team_speak3___adapter___abstract.js @@ -0,0 +1,15 @@ +var class_team_speak3___adapter___abstract = +[ + [ "__construct", "class_team_speak3___adapter___abstract.html#a775cec95b7fc371b9155383a29888932", null ], + [ "__destruct", "class_team_speak3___adapter___abstract.html#ac2edb7dbc9a488a6d772cb6397fab128", null ], + [ "syn", "class_team_speak3___adapter___abstract.html#aa57e551da82adf543957163f0a6d1c6e", null ], + [ "__sleep", "class_team_speak3___adapter___abstract.html#afa29be26280db12e38aef59d90f7c6ac", null ], + [ "__wakeup", "class_team_speak3___adapter___abstract.html#aaa3c73f10edd73494087a7a523726a89", null ], + [ "getProfiler", "class_team_speak3___adapter___abstract.html#ab1bd002b22a8121e8efa5ab4ccd36fa5", null ], + [ "getTransport", "class_team_speak3___adapter___abstract.html#a538e98e6dcc6a2ad7fdcb4913f6f7c52", null ], + [ "initTransport", "class_team_speak3___adapter___abstract.html#a87920747e1eb4a25396c5b5e5567094b", null ], + [ "getTransportHost", "class_team_speak3___adapter___abstract.html#adcf5e760b6d6d3e42f11d8b1bc5d87cc", null ], + [ "getTransportPort", "class_team_speak3___adapter___abstract.html#a5eb0b19787ec6f719d8f19bcd7182461", null ], + [ "$options", "class_team_speak3___adapter___abstract.html#a94b75d4f99ef639e5cb39e900d38e56a", null ], + [ "$transport", "class_team_speak3___adapter___abstract.html#a257acaf2793889d1e75364d40e7fa15d", null ] +]; \ No newline at end of file diff --git a/lib/docs/html/class_team_speak3___adapter___abstract.png b/lib/docs/html/class_team_speak3___adapter___abstract.png new file mode 100644 index 0000000000000000000000000000000000000000..7a28cd1862507174d4e34445918381b76f510205 GIT binary patch literal 2074 zcmbtVX;4#H7LF{!u*lfu*dQofO&V}P)+hl92#5vrY`*%l2 z2Nm^<2D*v_w2KD>1W7MWAI1a%QD7kLFJs~lEslL5@-2>CnarLsj+b0TghIUAqk2QN z$_SNjWkx8|_si#Ay4lPYx>T~4<&^Xv-<92N)T_tH${&j|dvXHwWr&ZZo?FL}M>x<^ z;@v~59&@ufWLX>cz3Z>mylMBT#(*2fcf8k=P2N3CXdw!5jKfO$6Cq25Jy#Xh8y0v3V@Xx7!<;Ngf4Yt9tOR0jq$ ztCE%aVK30UpIPZfDKpNI0?q)MC2*~$}00h{WsS6Vk zLlvSFIu^!O+~<0GrUX|psK@6z!!iKsH#E4wN&vjCWtR@_^(W%;-GO^DO6Ig+;KrE} zPu5yo*?bo6w<3XvOT_IIhWI&g%qm{5o#EIVlGkGCaFVrz8Cb+e@t&sZ=FCp_le*^W z7m7bQX_72%Dr}u=Q!&lM13`r|SW6Ufkvrfi%^j~P{$wv+4EX4Ec%M(%dkSxZeUa|`TJ??3zQ|`7WYUc>KOi$U~bZU`u+-zFi<}Eg^oFbg~&xJ>6Vwd z-65&Oo9KPW#4eoPzYj{bJlF&6bT#&)uzhUgAH!`QfGR(}ds1IIxns4m2f+WeS^iYp zM#}q-!T7%IWW=|#!tI-dgR`;G2>PIc%*$NTWaxE`64DtRf|G&vn(M7!#HTqnO&EvI z^ghKgbiabg1B^Pth79tK?o^uCHoaTDERjahsstwx%*Y%vXiOfmmPRqMW9a`Y)k={{ zr_rAJY=C+iz0~ALr_qA#Ev>YGEeG*~Ogr+P1AoSeJbvw#Gg-WS(PU)x2V^Ct3pz(f zqsRoOh+)v`%ZG|Q03`Uwp>N8y)(R-Q3(C)gX*(~lg!TJ@D*`!v73Ix$i$ zt|irSMq83?Fe)2vFg_~R@KY{@Ccm@6x*KmY9NG$Zg89)z8(+r)u66ji8Ej zdrzhiX2{b=4M*D6{$+iMV9AQ$`pPx5lA%t%eOr{XyAeP$WBaH1QA48U+LSH(687OY zV}D;L%;T#HM{TwQ^tT!G=Eb-SzK8{sX`-hXrhp^?Ja!qA0Lt7oi5yyb{<8LI3Y zV&KB){NW|%C`Y~*`CNQCtuxi20ks>FloM1;eA)uQO(x8dY%_Xj>p$~Jo)Q>G>qH`A z;76G76Lj&5GLVpA3jZ5RfGheHYU+z-E%=*VY~y{;j(DnKVR>59JA9b9{?)wq=3C{z zi0rxlz^vY%)z1^|~;QDLN2_F3;J|NW^rXat%rOki5 zls3xPN)8KTu`HPUOip~@g$ey`su#AdYxO>kABQqYvcj;2Ut#5|aY3nOmLXOncQ{(= zQTz!MdvUl$Jwg~6@TFIf+uZsUu?w?7oM zSI0fyn&jd&oraz33xl^?CEC*E1|GY!=Bah@zOCi7&Fjq@yC$y*36qoxaRvZ4A|xpn z0HMo9$e?6!t?TQvUx4Iifg4$zt{4EdXKGN&39>Wh{wFiDn%Rf3+o zO-KPsI7*v89%wlKvYcjT*F>!tv(yYrqNljSmTT+T(1^hq6(pbQ!-4jiE~ynj2e(JX z$QU}8Vu-}H-mb;>@Gf`MFm#c{U%N_P8cYrTvgen(z@)i0jek29)R~JwuAWE&z}nU& zv`$%<&b>lhma-@n*v`tqSJ9ve9qof%R-U;~wXJ*U;sLNl6&6m_QYU6H;3uB(ni`;s zJhg(B(7jOPR>Se8WaMh`es7a>0uB7g1V?GppXNZ3P4AAQ$l$5-pZ5N5#~aYV-q*-2 zCm}GVDxE85Ln(Omv`H_tMtXqy&a7Y0mUei}=ipMYQ3m)Uhaj)G*#Bnh|MR~A{x}ep literal 0 HcmV?d00001 diff --git a/lib/docs/html/class_team_speak3___adapter___blacklist-members.html b/lib/docs/html/class_team_speak3___adapter___blacklist-members.html new file mode 100644 index 0000000..38b8032 --- /dev/null +++ b/lib/docs/html/class_team_speak3___adapter___blacklist-members.html @@ -0,0 +1,142 @@ + + + + + + +TeamSpeak 3 PHP Framework: Member List + + + + + + + + + + + + + +
+
+ + + + + + + +
+
TeamSpeak 3 PHP Framework +  1.1.23 +
+
Copyright © Planet TeamSpeak. All rights reserved.
+
+
+ + + + + +
+
+ +
+
+
+ + + + + + diff --git a/lib/docs/html/class_team_speak3___adapter___blacklist.html b/lib/docs/html/class_team_speak3___adapter___blacklist.html new file mode 100644 index 0000000..622256c --- /dev/null +++ b/lib/docs/html/class_team_speak3___adapter___blacklist.html @@ -0,0 +1,587 @@ + + + + + + +TeamSpeak 3 PHP Framework: TeamSpeak3_Adapter_Blacklist Class Reference + + + + + + + + + + + + + +
+
+ + + + + + + +
+
TeamSpeak 3 PHP Framework +  1.1.23 +
+
Copyright © Planet TeamSpeak. All rights reserved.
+
+
+ + + + + +
+
+ +
+
+
+ +
+ + + + +
+ +
+ +
+ +
+
TeamSpeak3_Adapter_Blacklist Class Reference
+
+
+ +

Provides methods to check if an IP address is currently blacklisted. + More...

+
+ + Inheritance diagram for TeamSpeak3_Adapter_Blacklist:
+
+
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +

+Public Member Functions

 syn ()
 Connects the TeamSpeak3_Transport_Abstract object and performs initial actions on the remote server. More...
 
 __destruct ()
 The TeamSpeak3_Adapter_Blacklist destructor. More...
 
 isBlacklisted ($host)
 Returns TRUE if a specified $host IP address is currently blacklisted. More...
 
 __sleep ()
 Commit pending data. More...
 
 __wakeup ()
 Reconnects to the remote server. More...
 
 getProfiler ()
 Returns the profiler timer used for this connection adapter. More...
 
 getTransport ()
 Returns the transport object used for this connection adapter. More...
 
 getTransportHost ()
 Returns the hostname or IPv4 address the underlying TeamSpeak3_Transport_Abstract object is connected to. More...
 
 getTransportPort ()
 Returns the port number of the server the underlying TeamSpeak3_Transport_Abstract object is connected to. More...
 
+ + + + +

+Protected Member Functions

 initTransport ($options, $transport="TeamSpeak3_Transport_TCP")
 Loads the transport object object used for the connection adapter and passes a given set of options. More...
 
+ + + + + + + + + + + +

+Protected Attributes

$default_host = "blacklist.teamspeak.com"
 
$default_port = 17385
 
$build_numbers = null
 
$options = null
 
$transport = null
 
+

Detailed Description

+

Provides methods to check if an IP address is currently blacklisted.

+ +

Definition at line 32 of file Blacklist.php.

+

Constructor & Destructor Documentation

+ +
+
+ + + + + + + +
TeamSpeak3_Adapter_Blacklist::__destruct ()
+
+ +

The TeamSpeak3_Adapter_Blacklist destructor.

+
Returns
void
+ +

Definition at line 79 of file Blacklist.php.

+ +

References TeamSpeak3_Adapter_Abstract\getTransport().

+
80  {
+
81  if($this->getTransport() instanceof TeamSpeak3_Transport_Abstract && $this->getTransport()->isConnected())
+
82  {
+
83  $this->getTransport()->disconnect();
+
84  }
+
85  }
+
+
+
+

Member Function Documentation

+ +
+
+ + + + + + + +
TeamSpeak3_Adapter_Blacklist::syn ()
+
+ +

Connects the TeamSpeak3_Transport_Abstract object and performs initial actions on the remote server.

+
Returns
void
+ +

Definition at line 61 of file Blacklist.php.

+ +

References TeamSpeak3_Helper_Signal\getInstance(), TeamSpeak3_Helper_Profiler\init(), and TeamSpeak3_Adapter_Abstract\initTransport().

+
62  {
+
63  if(!isset($this->options["host"]) || empty($this->options["host"])) $this->options["host"] = $this->default_host;
+
64  if(!isset($this->options["port"]) || empty($this->options["port"])) $this->options["port"] = $this->default_port;
+
65 
+
66  $this->initTransport($this->options, "TeamSpeak3_Transport_UDP");
+
67  $this->transport->setAdapter($this);
+
68 
+
69  TeamSpeak3_Helper_Profiler::init(spl_object_hash($this));
+
70 
+
71  TeamSpeak3_Helper_Signal::getInstance()->emit("blacklistConnected", $this);
+
72  }
+
+
+
+ +
+
+ + + + + + + + +
TeamSpeak3_Adapter_Blacklist::isBlacklisted ( $host)
+
+ +

Returns TRUE if a specified $host IP address is currently blacklisted.

+
Parameters
+ + +
string$host
+
+
+
Exceptions
+ + +
TeamSpeak3_Adapter_Blacklist_Exception
+
+
+
Returns
boolean
+ +

Definition at line 94 of file Blacklist.php.

+ +

References TeamSpeak3_Adapter_Abstract\getTransport().

+
95  {
+
96  if(ip2long($host) === FALSE)
+
97  {
+
98  $addr = gethostbyname($host);
+
99 
+
100  if($addr == $host)
+
101  {
+
102  throw new TeamSpeak3_Adapter_Blacklist_Exception("unable to resolve IPv4 address (" . $host . ")");
+
103  }
+
104 
+
105  $host = $addr;
+
106  }
+
107 
+
108  $this->getTransport()->send("ip4:" . $host);
+
109  $repl = $this->getTransport()->read(1);
+
110  $this->getTransport()->disconnect();
+
111 
+
112  if(!count($repl))
+
113  {
+
114  return FALSE;
+
115  }
+
116 
+
117  return ($repl->toInt()) ? FALSE : TRUE;
+
118  }
+
+
+
+ +
+
+ + + + + +
+ + + + + + + +
TeamSpeak3_Adapter_Abstract::__sleep ()
+
+inherited
+
+ +

Commit pending data.

+
Returns
array
+ +

Definition at line 85 of file Abstract.php.

+
86  {
+
87  return array("options");
+
88  }
+
+
+
+ +
+
+ + + + + +
+ + + + + + + +
TeamSpeak3_Adapter_Abstract::__wakeup ()
+
+inherited
+
+ +

Reconnects to the remote server.

+
Returns
void
+ +

Definition at line 95 of file Abstract.php.

+ +

References TeamSpeak3_Adapter_Abstract\syn().

+
96  {
+
97  $this->syn();
+
98  }
+
+
+
+ +
+
+ + + + + +
+ + + + + + + +
TeamSpeak3_Adapter_Abstract::getProfiler ()
+
+inherited
+
+ +

Returns the profiler timer used for this connection adapter.

+
Returns
TeamSpeak3_Helper_Profiler_Timer
+ +

Definition at line 105 of file Abstract.php.

+ +

References TeamSpeak3_Helper_Profiler\get().

+ +

Referenced by TeamSpeak3_Adapter_FileTransfer\download(), TeamSpeak3_Adapter_ServerQuery\getQueryRuntime(), TeamSpeak3_Adapter_FileTransfer\init(), TeamSpeak3_Adapter_ServerQuery\request(), and TeamSpeak3_Adapter_FileTransfer\upload().

+
106  {
+
107  return TeamSpeak3_Helper_Profiler::get(spl_object_hash($this));
+
108  }
+
+
+
+ + + +
+
+ + + + + +
+ + + + + + + + + + + + + + + + + + +
TeamSpeak3_Adapter_Abstract::initTransport ( $options,
 $transport = "TeamSpeak3_Transport_TCP" 
)
+
+protectedinherited
+
+ +

Loads the transport object object used for the connection adapter and passes a given set of options.

+
Parameters
+ + + +
array$options
string$transport
+
+
+
Exceptions
+ + +
TeamSpeak3_Adapter_Exception
+
+
+
Returns
void
+ +

Definition at line 129 of file Abstract.php.

+ +

Referenced by TeamSpeak3_Adapter_FileTransfer\syn(), TeamSpeak3_Adapter_TSDNS\syn(), syn(), TeamSpeak3_Adapter_ServerQuery\syn(), and TeamSpeak3_Adapter_Update\syn().

+
130  {
+
131  if(!is_array($options))
+
132  {
+
133  throw new TeamSpeak3_Adapter_Exception("transport parameters must provided in an array");
+
134  }
+
135 
+
136  $this->transport = new $transport($options);
+
137  }
+
+
+
+ +
+
+ + + + + +
+ + + + + + + +
TeamSpeak3_Adapter_Abstract::getTransportHost ()
+
+inherited
+
+ +

Returns the hostname or IPv4 address the underlying TeamSpeak3_Transport_Abstract object is connected to.

+
Returns
string
+ +

Definition at line 145 of file Abstract.php.

+ +

References TeamSpeak3_Adapter_Abstract\getTransport().

+
146  {
+
147  return $this->getTransport()->getConfig("host", "0.0.0.0");
+
148  }
+
+
+
+ +
+
+ + + + + +
+ + + + + + + +
TeamSpeak3_Adapter_Abstract::getTransportPort ()
+
+inherited
+
+ +

Returns the port number of the server the underlying TeamSpeak3_Transport_Abstract object is connected to.

+
Returns
string
+ +

Definition at line 156 of file Abstract.php.

+ +

References TeamSpeak3_Adapter_Abstract\getTransport().

+
157  {
+
158  return $this->getTransport()->getConfig("port", "0");
+
159  }
+
+
+
+
The documentation for this class was generated from the following file: +
+
+ + + + diff --git a/lib/docs/html/class_team_speak3___adapter___blacklist.js b/lib/docs/html/class_team_speak3___adapter___blacklist.js new file mode 100644 index 0000000..e7f1dc9 --- /dev/null +++ b/lib/docs/html/class_team_speak3___adapter___blacklist.js @@ -0,0 +1,18 @@ +var class_team_speak3___adapter___blacklist = +[ + [ "__destruct", "class_team_speak3___adapter___blacklist.html#ac513e62c024049632e52ad13c7db5baf", null ], + [ "syn", "class_team_speak3___adapter___blacklist.html#a1fa14a98fd62612e9a23357da08fa2a1", null ], + [ "isBlacklisted", "class_team_speak3___adapter___blacklist.html#a810eeede201a669baae7c2cfb394c47f", null ], + [ "__sleep", "class_team_speak3___adapter___blacklist.html#afa29be26280db12e38aef59d90f7c6ac", null ], + [ "__wakeup", "class_team_speak3___adapter___blacklist.html#aaa3c73f10edd73494087a7a523726a89", null ], + [ "getProfiler", "class_team_speak3___adapter___blacklist.html#ab1bd002b22a8121e8efa5ab4ccd36fa5", null ], + [ "getTransport", "class_team_speak3___adapter___blacklist.html#a538e98e6dcc6a2ad7fdcb4913f6f7c52", null ], + [ "initTransport", "class_team_speak3___adapter___blacklist.html#a87920747e1eb4a25396c5b5e5567094b", null ], + [ "getTransportHost", "class_team_speak3___adapter___blacklist.html#adcf5e760b6d6d3e42f11d8b1bc5d87cc", null ], + [ "getTransportPort", "class_team_speak3___adapter___blacklist.html#a5eb0b19787ec6f719d8f19bcd7182461", null ], + [ "$default_host", "class_team_speak3___adapter___blacklist.html#aba663e2f5471242ff2e6a3026f023de7", null ], + [ "$default_port", "class_team_speak3___adapter___blacklist.html#ae7279a881556b519a57869112e40fac7", null ], + [ "$build_numbers", "class_team_speak3___adapter___blacklist.html#a6a58a76417afbcced149786dc0b1eba2", null ], + [ "$options", "class_team_speak3___adapter___blacklist.html#a94b75d4f99ef639e5cb39e900d38e56a", null ], + [ "$transport", "class_team_speak3___adapter___blacklist.html#a257acaf2793889d1e75364d40e7fa15d", null ] +]; \ No newline at end of file diff --git a/lib/docs/html/class_team_speak3___adapter___blacklist.png b/lib/docs/html/class_team_speak3___adapter___blacklist.png new file mode 100644 index 0000000000000000000000000000000000000000..834c95dac23b7df150cff405a7bd23ba2cc684e0 GIT binary patch literal 832 zcmV-G1Hb%vH``)mBX<{S7qho8$G z&T_qeFy`V_3J~DGTy7@~`1USu?k)|!hF9Nv53{FMy2Up*w^!X=S*%$v)#%bwqck5) zQtTr8n|BQMe8SHkYk<6ukD*>sml$s!u*HvW+3f3z-_*Io&u8>=vG~3!&MU-Mmy%JR zLTewdvG_H@1HQ|Hzk{xHu6aC5$y{IaE+?Zk{!4huCcWR`$GzX4aKHO=???Da#J*bm zaqrvnt#hZ=KAJow_ipZ+zO9qz{x3&SCr@v z?)B67lc#rRm_6}DLN=rGpQ!N(Uccl@30@Djj@)RXX?pt90-IR_WjatkS^;Sfzsx zuu2CXV3iI&z)&frw6912yXxQrtkS^;SS7{RgA5Sq$(RkTNB!2Vj6*5G!2R`JEc(G@ z|EUbOZRAj*JCCQx1N;`U-(ZTLbEtX9(Tuw>7q3!)u&$p78u0C1-g*Gtu-~9qOre9- z2Kl|U?yfA>te0wZ`KeKwk0vQ*k-?8PNMK)2_%4uv^I_F1>JsDa1Gf0X-Zw>UZtMYH zLwpL{+-gmt^9u0|iwmeh`*YefPmEvFILf}uvbh6aRO{8J(hZB~Vsi4_JO$FGe$qTc z{J1sS6Ye*9?)@2lg77t+JUVx3F{8;-Q)7>=8K!me-2ct=81>s{nQcJVJpJSWnCZKZ z=%0SX|1|#O=^YwoPkexZepmJZ{wE!LfK@v90IT$Vj--^*uKEN0>nH(jY&Z@80000< KMNUMnLSTZc9;n&? literal 0 HcmV?d00001 diff --git a/lib/docs/html/class_team_speak3___adapter___blacklist___exception-members.html b/lib/docs/html/class_team_speak3___adapter___blacklist___exception-members.html new file mode 100644 index 0000000..f091e76 --- /dev/null +++ b/lib/docs/html/class_team_speak3___adapter___blacklist___exception-members.html @@ -0,0 +1,132 @@ + + + + + + +TeamSpeak 3 PHP Framework: Member List + + + + + + + + + + + + + +
+
+ + + + + + + +
+
TeamSpeak 3 PHP Framework +  1.1.23 +
+
Copyright © Planet TeamSpeak. All rights reserved.
+
+
+ + + + + +
+
+ +
+
+
+ +
+ + + + +
+ +
+ +
+
+
TeamSpeak3_Adapter_Blacklist_Exception Member List
+
+
+ +

This is the complete list of members for TeamSpeak3_Adapter_Blacklist_Exception, including all inherited members.

+ + + + + + + +
$messages (defined in TeamSpeak3_Exception)TeamSpeak3_Exceptionprotectedstatic
__construct($mesg, $code=0x00)TeamSpeak3_Exception
getSender()TeamSpeak3_Exception
prepareCustomMessage(TeamSpeak3_Helper_String $mesg)TeamSpeak3_Exceptionprotected
registerCustomMessage($code, $mesg)TeamSpeak3_Exceptionstatic
unregisterCustomMessage($code)TeamSpeak3_Exceptionstatic
+
+ + + + diff --git a/lib/docs/html/class_team_speak3___adapter___blacklist___exception.html b/lib/docs/html/class_team_speak3___adapter___blacklist___exception.html new file mode 100644 index 0000000..27ca4ca --- /dev/null +++ b/lib/docs/html/class_team_speak3___adapter___blacklist___exception.html @@ -0,0 +1,377 @@ + + + + + + +TeamSpeak 3 PHP Framework: TeamSpeak3_Adapter_Blacklist_Exception Class Reference + + + + + + + + + + + + + +
+
+ + + + + + + +
+
TeamSpeak 3 PHP Framework +  1.1.23 +
+
Copyright © Planet TeamSpeak. All rights reserved.
+
+
+ + + + + +
+
+ +
+
+
+ +
+ + + + +
+ +
+ + +
+ +

Enhanced exception class for TeamSpeak3_Adapter_Blacklist objects. + More...

+
+ + Inheritance diagram for TeamSpeak3_Adapter_Blacklist_Exception:
+
+
+ + + + + + +

+Public Member Functions

 getSender ()
 Returns the class from which the exception was thrown. More...
 
+ + + + + + + +

+Static Public Member Functions

static registerCustomMessage ($code, $mesg)
 Registers a custom error message to $code. More...
 
static unregisterCustomMessage ($code)
 Unregisters a custom error message from $code. More...
 
+ + + + +

+Protected Member Functions

 prepareCustomMessage (TeamSpeak3_Helper_String $mesg)
 Prepares a custom error message by replacing pre-defined signs with given values. More...
 
+ + + +

+Static Protected Attributes

+static $messages = array()
 
+

Detailed Description

+

Enhanced exception class for TeamSpeak3_Adapter_Blacklist objects.

+ +

Definition at line 32 of file Exception.php.

+

Member Function Documentation

+ +
+
+ + + + + +
+ + + + + + + + +
TeamSpeak3_Exception::prepareCustomMessage (TeamSpeak3_Helper_String $mesg)
+
+protectedinherited
+
+ +

Prepares a custom error message by replacing pre-defined signs with given values.

+
Parameters
+ + +
TeamSpeak3_Helper_String$mesg
+
+
+
Returns
TeamSpeak3_Helper_String
+ +

Definition at line 66 of file Exception.php.

+ +

References TeamSpeak3_Helper_String\arg().

+ +

Referenced by TeamSpeak3_Exception\__construct().

+
67  {
+
68  $args = array(
+
69  "code" => $this->getCode(),
+
70  "mesg" => $this->getMessage(),
+
71  "line" => $this->getLine(),
+
72  "file" => $this->getFile(),
+
73  );
+
74 
+
75  return $mesg->arg($args)->toString();
+
76  }
+
+
+
+ +
+
+ + + + + +
+ + + + + + + + + + + + + + + + + + +
static TeamSpeak3_Exception::registerCustomMessage ( $code,
 $mesg 
)
+
+staticinherited
+
+ +

Registers a custom error message to $code.

+
Parameters
+ + + +
integer$code
string$mesg
+
+
+
Exceptions
+ + +
TeamSpeak3_Exception
+
+
+
Returns
void
+ +

Definition at line 86 of file Exception.php.

+
87  {
+
88  if(array_key_exists((int) $code, self::$messages))
+
89  {
+
90  throw new self("custom message for code 0x" . strtoupper(dechex($code)) . " is already registered");
+
91  }
+
92 
+
93  if(!is_string($mesg))
+
94  {
+
95  throw new self("custom message for code 0x" . strtoupper(dechex($code)) . " must be a string");
+
96  }
+
97 
+
98  self::$messages[(int) $code] = new TeamSpeak3_Helper_String($mesg);
+
99  }
+
+
+
+ +
+
+ + + + + +
+ + + + + + + + +
static TeamSpeak3_Exception::unregisterCustomMessage ( $code)
+
+staticinherited
+
+ +

Unregisters a custom error message from $code.

+
Parameters
+ + +
integer$code
+
+
+
Exceptions
+ + +
TeamSpeak3_Exception
+
+
+
Returns
void
+ +

Definition at line 108 of file Exception.php.

+
109  {
+
110  if(!array_key_exists((int) $code, self::$messages))
+
111  {
+
112  throw new self("custom message for code 0x" . strtoupper(dechex($code)) . " is not registered");
+
113  }
+
114 
+
115  unset(self::$messages[intval($code)]);
+
116  }
+
+
+
+ +
+
+ + + + + +
+ + + + + + + +
TeamSpeak3_Exception::getSender ()
+
+inherited
+
+ +

Returns the class from which the exception was thrown.

+
Returns
string
+ +

Definition at line 123 of file Exception.php.

+
124  {
+
125  $trace = $this->getTrace();
+
126 
+
127  return (isset($trace[0]["class"])) ? $trace[0]["class"] : "{main}";
+
128  }
+
+
+
+
The documentation for this class was generated from the following file: +
+
+ + + + diff --git a/lib/docs/html/class_team_speak3___adapter___blacklist___exception.js b/lib/docs/html/class_team_speak3___adapter___blacklist___exception.js new file mode 100644 index 0000000..18092fe --- /dev/null +++ b/lib/docs/html/class_team_speak3___adapter___blacklist___exception.js @@ -0,0 +1,5 @@ +var class_team_speak3___adapter___blacklist___exception = +[ + [ "prepareCustomMessage", "class_team_speak3___adapter___blacklist___exception.html#a3bfcdf7b85a393b7a8b05b048ae3279c", null ], + [ "getSender", "class_team_speak3___adapter___blacklist___exception.html#ae7d4b369dd11d3cf56d120acae0cf1db", null ] +]; \ No newline at end of file diff --git a/lib/docs/html/class_team_speak3___adapter___blacklist___exception.png b/lib/docs/html/class_team_speak3___adapter___blacklist___exception.png new file mode 100644 index 0000000000000000000000000000000000000000..748694569236a45cd7d2a9699d5e4f3878890ac4 GIT binary patch literal 1521 zcma)+c~H`M7{*DKEDg&x?J(0OkF`QgQ!B4*B}6ktU0XB4$|&8GO2q^5HfC#;qKwp4 zX7fG}(Deqi)HP2gT|-nvZ43_*6~&dG%CgNg`)}Ww&-1?T%=e%7eP*6ty)Pr68izDM zAP^Mk=IW!WfQr@~V3n?FPb*aAfcGUoxKgQ9wIZ?1J&yBK)qSD0wKdzbE=M))i1fMa z3sQah?+tbPS%E;1B&4g0U(B}8dG8+ zA%>-DH5l^;li(W6`?j|TEYE589#ogs9j7)*OrFIOeEsL0PeJOckS4PtVh z(n#(S63RQ2zeZdMV-P0TN)TT3jBk#KUMuBYseS`&7V`M!O(Gl0%GpiRW+UOC?|7FN zk)<@07mbUtiCJjM!YsAgV}Shs=2^s?VzXkI=MHWc*O8E zMc*+0+nIpn6o+UWH$iHY1yc)S-0{fAC4l7i`t!m+`nTi29QbB!?pb`4Y1(Le1Q;2* z>Mi8`-hT_Ry+=m&!lC9E2!ZkJH5x>D7=X!o!ZJlaq751*`$A7_CT)gV>Cv^EE9=Rq z#~&Qlo{b$@?KhgeM6R)a8B0H;(3m3e1NHB*f3gr>p`z@{Ok$W9pKVNUx(~3N`o_~H z-i;*HsX^-sYr^&Al2jQNR%`K>A&e6F+KY+nsW+axiK9P~RCM`cFk5&wO~{m*Bp48A zVI)!299<3{Q;4d%7=PMDUbgH zkr5%~jO2)wtLJed!B+UI-x-+$1Q>Bz5AUk0UgJa@xgM545XbU0WH1wc5o=O zqVIGdhJ|0f^q1Glw*3}q8>2S^n_~!jSrs-ZVA;Ibb}F9MDfDtE1+r6PCGUbX>8vxd z_|}AdchM8cY_&hnWi~%qeA!;BR`2a!Fb}q42ZR+FER=S%%`LXY0mJG{^9D?iUP#?5 zj3D;2|NOB7)hdIoLWz*2wt2diZCBOxCWd)IIOUcB%)1qXMv-J1|MaLw^p3|w1k

?hflp;H)PBM*Ho?(`8Er$eTvikzp?BO;frA3! zwWML7{p`kvixo1aF5exlkck))&w>+(HsyCE)9Rx=z zMC%~(e19kpi|M|9*Y + + + + + +TeamSpeak 3 PHP Framework: Member List + + + + + + + + + + + + + +
+
+ + + + + + + +
+
TeamSpeak 3 PHP Framework +  1.1.23 +
+
Copyright © Planet TeamSpeak. All rights reserved.
+
+
+ + + + + +
+
+ +
+
+
+ +
+ + + + +
+ +
+ +
+
+
TeamSpeak3_Adapter_Exception Member List
+
+
+ +

This is the complete list of members for TeamSpeak3_Adapter_Exception, including all inherited members.

+ + + + + + + +
$messages (defined in TeamSpeak3_Exception)TeamSpeak3_Exceptionprotectedstatic
__construct($mesg, $code=0x00)TeamSpeak3_Exception
getSender()TeamSpeak3_Exception
prepareCustomMessage(TeamSpeak3_Helper_String $mesg)TeamSpeak3_Exceptionprotected
registerCustomMessage($code, $mesg)TeamSpeak3_Exceptionstatic
unregisterCustomMessage($code)TeamSpeak3_Exceptionstatic
+
+ + + + diff --git a/lib/docs/html/class_team_speak3___adapter___exception.html b/lib/docs/html/class_team_speak3___adapter___exception.html new file mode 100644 index 0000000..64f7fb6 --- /dev/null +++ b/lib/docs/html/class_team_speak3___adapter___exception.html @@ -0,0 +1,381 @@ + + + + + + +TeamSpeak 3 PHP Framework: TeamSpeak3_Adapter_Exception Class Reference + + + + + + + + + + + + + +
+
+ + + + + + + +
+
TeamSpeak 3 PHP Framework +  1.1.23 +
+
Copyright © Planet TeamSpeak. All rights reserved.
+
+
+ + + + + +
+
+ +
+
+
+ +
+ + + + +
+ +
+ + +
+ +

Enhanced exception class for TeamSpeak3_Adapter_Abstract objects. + More...

+
+ + Inheritance diagram for TeamSpeak3_Adapter_Exception:
+
+
+ + + + + + +

+Public Member Functions

 getSender ()
 Returns the class from which the exception was thrown. More...
 
+ + + + + + + +

+Static Public Member Functions

static registerCustomMessage ($code, $mesg)
 Registers a custom error message to $code. More...
 
static unregisterCustomMessage ($code)
 Unregisters a custom error message from $code. More...
 
+ + + + +

+Protected Member Functions

 prepareCustomMessage (TeamSpeak3_Helper_String $mesg)
 Prepares a custom error message by replacing pre-defined signs with given values. More...
 
+ + + +

+Static Protected Attributes

+static $messages = array()
 
+

Detailed Description

+

Enhanced exception class for TeamSpeak3_Adapter_Abstract objects.

+ +

Definition at line 32 of file Exception.php.

+

Member Function Documentation

+ +
+
+ + + + + +
+ + + + + + + + +
TeamSpeak3_Exception::prepareCustomMessage (TeamSpeak3_Helper_String $mesg)
+
+protectedinherited
+
+ +

Prepares a custom error message by replacing pre-defined signs with given values.

+
Parameters
+ + +
TeamSpeak3_Helper_String$mesg
+
+
+
Returns
TeamSpeak3_Helper_String
+ +

Definition at line 66 of file Exception.php.

+ +

References TeamSpeak3_Helper_String\arg().

+ +

Referenced by TeamSpeak3_Exception\__construct().

+
67  {
+
68  $args = array(
+
69  "code" => $this->getCode(),
+
70  "mesg" => $this->getMessage(),
+
71  "line" => $this->getLine(),
+
72  "file" => $this->getFile(),
+
73  );
+
74 
+
75  return $mesg->arg($args)->toString();
+
76  }
+
+
+
+ +
+
+ + + + + +
+ + + + + + + + + + + + + + + + + + +
static TeamSpeak3_Exception::registerCustomMessage ( $code,
 $mesg 
)
+
+staticinherited
+
+ +

Registers a custom error message to $code.

+
Parameters
+ + + +
integer$code
string$mesg
+
+
+
Exceptions
+ + +
TeamSpeak3_Exception
+
+
+
Returns
void
+ +

Definition at line 86 of file Exception.php.

+
87  {
+
88  if(array_key_exists((int) $code, self::$messages))
+
89  {
+
90  throw new self("custom message for code 0x" . strtoupper(dechex($code)) . " is already registered");
+
91  }
+
92 
+
93  if(!is_string($mesg))
+
94  {
+
95  throw new self("custom message for code 0x" . strtoupper(dechex($code)) . " must be a string");
+
96  }
+
97 
+
98  self::$messages[(int) $code] = new TeamSpeak3_Helper_String($mesg);
+
99  }
+
+
+
+ +
+
+ + + + + +
+ + + + + + + + +
static TeamSpeak3_Exception::unregisterCustomMessage ( $code)
+
+staticinherited
+
+ +

Unregisters a custom error message from $code.

+
Parameters
+ + +
integer$code
+
+
+
Exceptions
+ + +
TeamSpeak3_Exception
+
+
+
Returns
void
+ +

Definition at line 108 of file Exception.php.

+
109  {
+
110  if(!array_key_exists((int) $code, self::$messages))
+
111  {
+
112  throw new self("custom message for code 0x" . strtoupper(dechex($code)) . " is not registered");
+
113  }
+
114 
+
115  unset(self::$messages[intval($code)]);
+
116  }
+
+
+
+ +
+
+ + + + + +
+ + + + + + + +
TeamSpeak3_Exception::getSender ()
+
+inherited
+
+ +

Returns the class from which the exception was thrown.

+
Returns
string
+ +

Definition at line 123 of file Exception.php.

+
124  {
+
125  $trace = $this->getTrace();
+
126 
+
127  return (isset($trace[0]["class"])) ? $trace[0]["class"] : "{main}";
+
128  }
+
+
+
+
The documentation for this class was generated from the following file: +
+
+ + + + diff --git a/lib/docs/html/class_team_speak3___adapter___exception.js b/lib/docs/html/class_team_speak3___adapter___exception.js new file mode 100644 index 0000000..71419c6 --- /dev/null +++ b/lib/docs/html/class_team_speak3___adapter___exception.js @@ -0,0 +1,5 @@ +var class_team_speak3___adapter___exception = +[ + [ "prepareCustomMessage", "class_team_speak3___adapter___exception.html#a3bfcdf7b85a393b7a8b05b048ae3279c", null ], + [ "getSender", "class_team_speak3___adapter___exception.html#ae7d4b369dd11d3cf56d120acae0cf1db", null ] +]; \ No newline at end of file diff --git a/lib/docs/html/class_team_speak3___adapter___exception.png b/lib/docs/html/class_team_speak3___adapter___exception.png new file mode 100644 index 0000000000000000000000000000000000000000..bea71aca14a74da4caa2afd7a1c4bae8d77489d5 GIT binary patch literal 4041 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 literal 0 HcmV?d00001 diff --git a/lib/docs/html/class_team_speak3___adapter___file_transfer-members.html b/lib/docs/html/class_team_speak3___adapter___file_transfer-members.html new file mode 100644 index 0000000..75e17ce --- /dev/null +++ b/lib/docs/html/class_team_speak3___adapter___file_transfer-members.html @@ -0,0 +1,142 @@ + + + + + + +TeamSpeak 3 PHP Framework: Member List + + + + + + + + + + + + + +
+
+ + + + + + + +
+
TeamSpeak 3 PHP Framework +  1.1.23 +
+
Copyright © Planet TeamSpeak. All rights reserved.
+
+
+ + + + + +
+
+ +
+
+
+ + + + + + diff --git a/lib/docs/html/class_team_speak3___adapter___file_transfer.html b/lib/docs/html/class_team_speak3___adapter___file_transfer.html new file mode 100644 index 0000000..d810707 --- /dev/null +++ b/lib/docs/html/class_team_speak3___adapter___file_transfer.html @@ -0,0 +1,813 @@ + + + + + + +TeamSpeak 3 PHP Framework: TeamSpeak3_Adapter_FileTransfer Class Reference + + + + + + + + + + + + + +
+
+ + + + + + + +
+
TeamSpeak 3 PHP Framework +  1.1.23 +
+
Copyright © Planet TeamSpeak. All rights reserved.
+
+
+ + + + + +
+
+ +
+
+
+ +
+ + + + +
+ +
+ +
+ +
+
TeamSpeak3_Adapter_FileTransfer Class Reference
+
+
+ +

Provides low-level methods for file transfer communication with a TeamSpeak 3 Server. + More...

+
+ + Inheritance diagram for TeamSpeak3_Adapter_FileTransfer:
+
+
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +

+Public Member Functions

 syn ()
 Connects the TeamSpeak3_Transport_Abstract object and performs initial actions on the remote server. More...
 
 __destruct ()
 The TeamSpeak3_Adapter_FileTransfer destructor. More...
 
 upload ($ftkey, $seek, $data)
 Sends the content of a file to the server. More...
 
 download ($ftkey, $size, $passthru=FALSE)
 Returns the content of a downloaded file as a TeamSpeak3_Helper_String object. More...
 
 __sleep ()
 Commit pending data. More...
 
 __wakeup ()
 Reconnects to the remote server. More...
 
 getProfiler ()
 Returns the profiler timer used for this connection adapter. More...
 
 getTransport ()
 Returns the transport object used for this connection adapter. More...
 
 getTransportHost ()
 Returns the hostname or IPv4 address the underlying TeamSpeak3_Transport_Abstract object is connected to. More...
 
 getTransportPort ()
 Returns the port number of the server the underlying TeamSpeak3_Transport_Abstract object is connected to. More...
 
+ + + + + + + + + + +

+Protected Member Functions

 init ($ftkey)
 Sends a valid file transfer key to the server to initialize the file transfer. More...
 
 passthru ($size)
 Outputs all remaining data on a TeamSpeak 3 file transfer stream using PHP's fpassthru() function. More...
 
 initTransport ($options, $transport="TeamSpeak3_Transport_TCP")
 Loads the transport object object used for the connection adapter and passes a given set of options. More...
 
+ + + + + +

+Protected Attributes

$options = null
 
$transport = null
 
+

Detailed Description

+

Provides low-level methods for file transfer communication with a TeamSpeak 3 Server.

+ +

Definition at line 32 of file FileTransfer.php.

+

Constructor & Destructor Documentation

+ +
+
+ + + + + + + +
TeamSpeak3_Adapter_FileTransfer::__destruct ()
+
+ +

The TeamSpeak3_Adapter_FileTransfer destructor.

+
Returns
void
+ +

Definition at line 56 of file FileTransfer.php.

+ +

References TeamSpeak3_Adapter_Abstract\getTransport().

+
57  {
+
58  if($this->getTransport() instanceof TeamSpeak3_Transport_Abstract && $this->getTransport()->isConnected())
+
59  {
+
60  $this->getTransport()->disconnect();
+
61  }
+
62  }
+
+
+
+

Member Function Documentation

+ +
+
+ + + + + + + +
TeamSpeak3_Adapter_FileTransfer::syn ()
+
+ +

Connects the TeamSpeak3_Transport_Abstract object and performs initial actions on the remote server.

+
Exceptions
+ + +
TeamSpeak3_Adapter_Exception
+
+
+
Returns
void
+ +

Definition at line 41 of file FileTransfer.php.

+ +

References TeamSpeak3_Helper_Signal\getInstance(), TeamSpeak3_Helper_Profiler\init(), and TeamSpeak3_Adapter_Abstract\initTransport().

+
42  {
+
43  $this->initTransport($this->options);
+
44  $this->transport->setAdapter($this);
+
45 
+
46  TeamSpeak3_Helper_Profiler::init(spl_object_hash($this));
+
47 
+
48  TeamSpeak3_Helper_Signal::getInstance()->emit("filetransferConnected", $this);
+
49  }
+
+
+
+ +
+
+ + + + + +
+ + + + + + + + +
TeamSpeak3_Adapter_FileTransfer::init ( $ftkey)
+
+protected
+
+ +

Sends a valid file transfer key to the server to initialize the file transfer.

+
Parameters
+ + +
string$ftkey
+
+
+
Exceptions
+ + +
TeamSpeak3_Adapter_FileTransfer_Exception
+
+
+
Returns
void
+ +

Definition at line 71 of file FileTransfer.php.

+ +

References TeamSpeak3_Helper_Signal\getInstance(), TeamSpeak3_Adapter_Abstract\getProfiler(), and TeamSpeak3_Adapter_Abstract\getTransport().

+ +

Referenced by download(), and upload().

+
72  {
+
73  if(strlen($ftkey) != 32)
+
74  {
+
75  throw new TeamSpeak3_Adapter_FileTransfer_Exception("invalid file transfer key format");
+
76  }
+
77 
+
78  $this->getProfiler()->start();
+
79  $this->getTransport()->send($ftkey);
+
80 
+
81  TeamSpeak3_Helper_Signal::getInstance()->emit("filetransferHandshake", $this);
+
82  }
+
+
+
+ +
+
+ + + + + + + + + + + + + + + + + + + + + + + + +
TeamSpeak3_Adapter_FileTransfer::upload ( $ftkey,
 $seek,
 $data 
)
+
+ +

Sends the content of a file to the server.

+
Parameters
+ + + + +
string$ftkey
integer$seek
string$data
+
+
+
Exceptions
+ + +
TeamSpeak3_Adapter_FileTransfer_Exception
+
+
+
Returns
void
+ +

Definition at line 93 of file FileTransfer.php.

+ +

References TeamSpeak3_Helper_Signal\getInstance(), TeamSpeak3_Adapter_Abstract\getProfiler(), TeamSpeak3_Adapter_Abstract\getTransport(), and init().

+
94  {
+
95  $this->init($ftkey);
+
96 
+
97  $size = strlen($data);
+
98  $seek = intval($seek);
+
99  $pack = 4096;
+
100 
+
101  TeamSpeak3_Helper_Signal::getInstance()->emit("filetransferUploadStarted", $ftkey, $seek, $size);
+
102 
+
103  for(;$seek < $size;)
+
104  {
+
105  $rest = $size-$seek;
+
106  $pack = $rest < $pack ? $rest : $pack;
+
107  $buff = substr($data, $seek, $pack);
+
108  $seek = $seek+$pack;
+
109 
+
110  $this->getTransport()->send($buff);
+
111 
+
112  TeamSpeak3_Helper_Signal::getInstance()->emit("filetransferUploadProgress", $ftkey, $seek, $size);
+
113  }
+
114 
+
115  $this->getProfiler()->stop();
+
116 
+
117  TeamSpeak3_Helper_Signal::getInstance()->emit("filetransferUploadFinished", $ftkey, $seek, $size);
+
118 
+
119  if($seek < $size)
+
120  {
+
121  throw new TeamSpeak3_Adapter_FileTransfer_Exception("incomplete file upload (" . $seek . " of " . $size . " bytes)");
+
122  }
+
123  }
+
+
+
+ +
+
+ + + + + + + + + + + + + + + + + + + + + + + + +
TeamSpeak3_Adapter_FileTransfer::download ( $ftkey,
 $size,
 $passthru = FALSE 
)
+
+ +

Returns the content of a downloaded file as a TeamSpeak3_Helper_String object.

+
Parameters
+ + + + +
string$ftkey
integer$size
boolean$passthru
+
+
+
Exceptions
+ + +
TeamSpeak3_Adapter_FileTransfer_Exception
+
+
+
Returns
TeamSpeak3_Helper_String
+ +

Definition at line 134 of file FileTransfer.php.

+ +

References TeamSpeak3_Helper_Signal\getInstance(), TeamSpeak3_Adapter_Abstract\getProfiler(), TeamSpeak3_Adapter_Abstract\getTransport(), init(), and passthru().

+
135  {
+
136  $this->init($ftkey);
+
137 
+
138  if($passthru)
+
139  {
+
140  return $this->passthru($size);
+
141  }
+
142 
+
143  $buff = new TeamSpeak3_Helper_String("");
+
144  $size = intval($size);
+
145  $pack = 4096;
+
146 
+
147  TeamSpeak3_Helper_Signal::getInstance()->emit("filetransferDownloadStarted", $ftkey, count($buff), $size);
+
148 
+
149  for($seek = 0;$seek < $size;)
+
150  {
+
151  $rest = $size-$seek;
+
152  $pack = $rest < $pack ? $rest : $pack;
+
153  $data = $this->getTransport()->read($rest < $pack ? $rest : $pack);
+
154  $seek = $seek+$pack;
+
155 
+
156  $buff->append($data);
+
157 
+
158  TeamSpeak3_Helper_Signal::getInstance()->emit("filetransferDownloadProgress", $ftkey, count($buff), $size);
+
159  }
+
160 
+
161  $this->getProfiler()->stop();
+
162 
+
163  TeamSpeak3_Helper_Signal::getInstance()->emit("filetransferDownloadFinished", $ftkey, count($buff), $size);
+
164 
+
165  if(strlen($buff) != $size)
+
166  {
+
167  throw new TeamSpeak3_Adapter_FileTransfer_Exception("incomplete file download (" . count($buff) . " of " . $size . " bytes)");
+
168  }
+
169 
+
170  return $buff;
+
171  }
+
+
+
+ +
+
+ + + + + +
+ + + + + + + + +
TeamSpeak3_Adapter_FileTransfer::passthru ( $size)
+
+protected
+
+ +

Outputs all remaining data on a TeamSpeak 3 file transfer stream using PHP's fpassthru() function.

+
Parameters
+ + +
integer$size
+
+
+
Exceptions
+ + +
TeamSpeak3_Adapter_FileTransfer_Exception
+
+
+
Returns
void
+ +

Definition at line 181 of file FileTransfer.php.

+ +

References TeamSpeak3_Adapter_Abstract\getTransport().

+ +

Referenced by download().

+
182  {
+
183  $buff_size = fpassthru($this->getTransport()->getStream());
+
184 
+
185  if($buff_size != $size)
+
186  {
+
187  throw new TeamSpeak3_Adapter_FileTransfer_Exception("incomplete file download (" . intval($buff_size) . " of " . $size . " bytes)");
+
188  }
+
189  }
+
+
+
+ +
+
+ + + + + +
+ + + + + + + +
TeamSpeak3_Adapter_Abstract::__sleep ()
+
+inherited
+
+ +

Commit pending data.

+
Returns
array
+ +

Definition at line 85 of file Abstract.php.

+
86  {
+
87  return array("options");
+
88  }
+
+
+
+ +
+
+ + + + + +
+ + + + + + + +
TeamSpeak3_Adapter_Abstract::__wakeup ()
+
+inherited
+
+ +

Reconnects to the remote server.

+
Returns
void
+ +

Definition at line 95 of file Abstract.php.

+ +

References TeamSpeak3_Adapter_Abstract\syn().

+
96  {
+
97  $this->syn();
+
98  }
+
+
+
+ +
+
+ + + + + +
+ + + + + + + +
TeamSpeak3_Adapter_Abstract::getProfiler ()
+
+inherited
+
+ +

Returns the profiler timer used for this connection adapter.

+
Returns
TeamSpeak3_Helper_Profiler_Timer
+ +

Definition at line 105 of file Abstract.php.

+ +

References TeamSpeak3_Helper_Profiler\get().

+ +

Referenced by download(), TeamSpeak3_Adapter_ServerQuery\getQueryRuntime(), init(), TeamSpeak3_Adapter_ServerQuery\request(), and upload().

+
106  {
+
107  return TeamSpeak3_Helper_Profiler::get(spl_object_hash($this));
+
108  }
+
+
+
+ + + +
+
+ + + + + +
+ + + + + + + + + + + + + + + + + + +
TeamSpeak3_Adapter_Abstract::initTransport ( $options,
 $transport = "TeamSpeak3_Transport_TCP" 
)
+
+protectedinherited
+
+ +

Loads the transport object object used for the connection adapter and passes a given set of options.

+
Parameters
+ + + +
array$options
string$transport
+
+
+
Exceptions
+ + +
TeamSpeak3_Adapter_Exception
+
+
+
Returns
void
+ +

Definition at line 129 of file Abstract.php.

+ +

Referenced by syn(), TeamSpeak3_Adapter_TSDNS\syn(), TeamSpeak3_Adapter_Blacklist\syn(), TeamSpeak3_Adapter_ServerQuery\syn(), and TeamSpeak3_Adapter_Update\syn().

+
130  {
+
131  if(!is_array($options))
+
132  {
+
133  throw new TeamSpeak3_Adapter_Exception("transport parameters must provided in an array");
+
134  }
+
135 
+
136  $this->transport = new $transport($options);
+
137  }
+
+
+
+ +
+
+ + + + + +
+ + + + + + + +
TeamSpeak3_Adapter_Abstract::getTransportHost ()
+
+inherited
+
+ +

Returns the hostname or IPv4 address the underlying TeamSpeak3_Transport_Abstract object is connected to.

+
Returns
string
+ +

Definition at line 145 of file Abstract.php.

+ +

References TeamSpeak3_Adapter_Abstract\getTransport().

+
146  {
+
147  return $this->getTransport()->getConfig("host", "0.0.0.0");
+
148  }
+
+
+
+ +
+
+ + + + + +
+ + + + + + + +
TeamSpeak3_Adapter_Abstract::getTransportPort ()
+
+inherited
+
+ +

Returns the port number of the server the underlying TeamSpeak3_Transport_Abstract object is connected to.

+
Returns
string
+ +

Definition at line 156 of file Abstract.php.

+ +

References TeamSpeak3_Adapter_Abstract\getTransport().

+
157  {
+
158  return $this->getTransport()->getConfig("port", "0");
+
159  }
+
+
+
+
The documentation for this class was generated from the following file: +
+
+ + + + diff --git a/lib/docs/html/class_team_speak3___adapter___file_transfer.js b/lib/docs/html/class_team_speak3___adapter___file_transfer.js new file mode 100644 index 0000000..6f8e4c5 --- /dev/null +++ b/lib/docs/html/class_team_speak3___adapter___file_transfer.js @@ -0,0 +1,18 @@ +var class_team_speak3___adapter___file_transfer = +[ + [ "__destruct", "class_team_speak3___adapter___file_transfer.html#a9f273fc582708000a67db6626573a1de", null ], + [ "syn", "class_team_speak3___adapter___file_transfer.html#a6af2972c287ac831c1a3922cadb2d86b", null ], + [ "init", "class_team_speak3___adapter___file_transfer.html#a56c9d8b7f347dcc70787956d8a389a17", null ], + [ "upload", "class_team_speak3___adapter___file_transfer.html#a9cf1d5542573d87ad5513e4e3eed6b8a", null ], + [ "download", "class_team_speak3___adapter___file_transfer.html#a731600b40702660abb06dcbcbc791d50", null ], + [ "passthru", "class_team_speak3___adapter___file_transfer.html#a69cc29e5d15d47c56f55bcd14503905f", null ], + [ "__sleep", "class_team_speak3___adapter___file_transfer.html#afa29be26280db12e38aef59d90f7c6ac", null ], + [ "__wakeup", "class_team_speak3___adapter___file_transfer.html#aaa3c73f10edd73494087a7a523726a89", null ], + [ "getProfiler", "class_team_speak3___adapter___file_transfer.html#ab1bd002b22a8121e8efa5ab4ccd36fa5", null ], + [ "getTransport", "class_team_speak3___adapter___file_transfer.html#a538e98e6dcc6a2ad7fdcb4913f6f7c52", null ], + [ "initTransport", "class_team_speak3___adapter___file_transfer.html#a87920747e1eb4a25396c5b5e5567094b", null ], + [ "getTransportHost", "class_team_speak3___adapter___file_transfer.html#adcf5e760b6d6d3e42f11d8b1bc5d87cc", null ], + [ "getTransportPort", "class_team_speak3___adapter___file_transfer.html#a5eb0b19787ec6f719d8f19bcd7182461", null ], + [ "$options", "class_team_speak3___adapter___file_transfer.html#a94b75d4f99ef639e5cb39e900d38e56a", null ], + [ "$transport", "class_team_speak3___adapter___file_transfer.html#a257acaf2793889d1e75364d40e7fa15d", null ] +]; \ No newline at end of file diff --git a/lib/docs/html/class_team_speak3___adapter___file_transfer.png b/lib/docs/html/class_team_speak3___adapter___file_transfer.png new file mode 100644 index 0000000000000000000000000000000000000000..cb4399c26736f3bc07ebe1d50b3f01db6e29fa60 GIT binary patch literal 879 zcmeAS@N?(olHy`uVBq!ia0vp^SAaNxgBeJMDXxA3q$C1-LR|m<{|{u|fBxC4YVQOf z3ycpOI55+9+bkfLqa?^Lm;tB=1g@S6F=Aj~`seB57*fIbcJAw<#RfdB_VQ`J{`K$C zOo%qxMSK2`||#z-rn{$GhyeNZK^YgUd z-;M~ndieN~m~%Gky+6kO{>kAzZGCL<$&mBM?tfYS{qoFR6S~q@-Bq_+_R+_6$)pr} z-If07r{2xj^E>Oi%kA}7PUfl@^Oyd9`#<%==WpFYf!pIfPrg)Kf6;vVe3iS2U-Tv~ zvHo)({RiVLN6B`)o!lj+SLX&Zj3HnmNra z`N>XatuTr0K`MJ?YL`9T@g_+6?dwKC@wGu~Hn8*Y-+Z{e>?haG=f>xyp1e;AZr1SM zv;Nw0&LZ=bhEt=Y3-^UAJe~0M(jSwRMsD*$PA;|n`RK@;;F?ko%lm36=hd=ZYoGCb z7Tv*;{Cv6hD$V5EUw!Q>gKln=ym?^$buQ1V9L2_!L2h#4TKXK$rz{OK^J-kD7Ks|} zxux>++h@UP9=H5>jjrbJPvGBax6|j(hQGU(Jerxc_qX$LV^gK8Az3AFRs@x;e|k53 zxB9KRrGD>9layB8&i{YD_wlUPbKhQ{7k+#F*HjP2I}epp8`$i(vhO&aKlxU=S;fiz sH~BdXc86CXhvL5bZJJBJ==@=1O4pgM^L0-OFn2I`y85}Sb4q9e08Emcr2qf` literal 0 HcmV?d00001 diff --git a/lib/docs/html/class_team_speak3___adapter___file_transfer___exception-members.html b/lib/docs/html/class_team_speak3___adapter___file_transfer___exception-members.html new file mode 100644 index 0000000..c42524c --- /dev/null +++ b/lib/docs/html/class_team_speak3___adapter___file_transfer___exception-members.html @@ -0,0 +1,132 @@ + + + + + + +TeamSpeak 3 PHP Framework: Member List + + + + + + + + + + + + + +
+
+ + + + + + + +
+
TeamSpeak 3 PHP Framework +  1.1.23 +
+
Copyright © Planet TeamSpeak. All rights reserved.
+
+
+ + + + + +
+
+ +
+
+
+ +
+ + + + +
+ +
+ +
+
+
TeamSpeak3_Adapter_FileTransfer_Exception Member List
+
+
+ +

This is the complete list of members for TeamSpeak3_Adapter_FileTransfer_Exception, including all inherited members.

+ + + + + + + +
$messages (defined in TeamSpeak3_Exception)TeamSpeak3_Exceptionprotectedstatic
__construct($mesg, $code=0x00)TeamSpeak3_Exception
getSender()TeamSpeak3_Exception
prepareCustomMessage(TeamSpeak3_Helper_String $mesg)TeamSpeak3_Exceptionprotected
registerCustomMessage($code, $mesg)TeamSpeak3_Exceptionstatic
unregisterCustomMessage($code)TeamSpeak3_Exceptionstatic
+
+ + + + diff --git a/lib/docs/html/class_team_speak3___adapter___file_transfer___exception.html b/lib/docs/html/class_team_speak3___adapter___file_transfer___exception.html new file mode 100644 index 0000000..36cfc93 --- /dev/null +++ b/lib/docs/html/class_team_speak3___adapter___file_transfer___exception.html @@ -0,0 +1,377 @@ + + + + + + +TeamSpeak 3 PHP Framework: TeamSpeak3_Adapter_FileTransfer_Exception Class Reference + + + + + + + + + + + + + +
+
+ + + + + + + +
+
TeamSpeak 3 PHP Framework +  1.1.23 +
+
Copyright © Planet TeamSpeak. All rights reserved.
+
+
+ + + + + +
+
+ +
+
+
+ +
+ + + + +
+ +
+ + +
+ +

Enhanced exception class for TeamSpeak3_Adapter_FileTransfer objects. + More...

+
+ + Inheritance diagram for TeamSpeak3_Adapter_FileTransfer_Exception:
+
+
+ + + + + + +

+Public Member Functions

 getSender ()
 Returns the class from which the exception was thrown. More...
 
+ + + + + + + +

+Static Public Member Functions

static registerCustomMessage ($code, $mesg)
 Registers a custom error message to $code. More...
 
static unregisterCustomMessage ($code)
 Unregisters a custom error message from $code. More...
 
+ + + + +

+Protected Member Functions

 prepareCustomMessage (TeamSpeak3_Helper_String $mesg)
 Prepares a custom error message by replacing pre-defined signs with given values. More...
 
+ + + +

+Static Protected Attributes

+static $messages = array()
 
+

Detailed Description

+

Enhanced exception class for TeamSpeak3_Adapter_FileTransfer objects.

+ +

Definition at line 32 of file Exception.php.

+

Member Function Documentation

+ +
+
+ + + + + +
+ + + + + + + + +
TeamSpeak3_Exception::prepareCustomMessage (TeamSpeak3_Helper_String $mesg)
+
+protectedinherited
+
+ +

Prepares a custom error message by replacing pre-defined signs with given values.

+
Parameters
+ + +
TeamSpeak3_Helper_String$mesg
+
+
+
Returns
TeamSpeak3_Helper_String
+ +

Definition at line 66 of file Exception.php.

+ +

References TeamSpeak3_Helper_String\arg().

+ +

Referenced by TeamSpeak3_Exception\__construct().

+
67  {
+
68  $args = array(
+
69  "code" => $this->getCode(),
+
70  "mesg" => $this->getMessage(),
+
71  "line" => $this->getLine(),
+
72  "file" => $this->getFile(),
+
73  );
+
74 
+
75  return $mesg->arg($args)->toString();
+
76  }
+
+
+
+ +
+
+ + + + + +
+ + + + + + + + + + + + + + + + + + +
static TeamSpeak3_Exception::registerCustomMessage ( $code,
 $mesg 
)
+
+staticinherited
+
+ +

Registers a custom error message to $code.

+
Parameters
+ + + +
integer$code
string$mesg
+
+
+
Exceptions
+ + +
TeamSpeak3_Exception
+
+
+
Returns
void
+ +

Definition at line 86 of file Exception.php.

+
87  {
+
88  if(array_key_exists((int) $code, self::$messages))
+
89  {
+
90  throw new self("custom message for code 0x" . strtoupper(dechex($code)) . " is already registered");
+
91  }
+
92 
+
93  if(!is_string($mesg))
+
94  {
+
95  throw new self("custom message for code 0x" . strtoupper(dechex($code)) . " must be a string");
+
96  }
+
97 
+
98  self::$messages[(int) $code] = new TeamSpeak3_Helper_String($mesg);
+
99  }
+
+
+
+ +
+
+ + + + + +
+ + + + + + + + +
static TeamSpeak3_Exception::unregisterCustomMessage ( $code)
+
+staticinherited
+
+ +

Unregisters a custom error message from $code.

+
Parameters
+ + +
integer$code
+
+
+
Exceptions
+ + +
TeamSpeak3_Exception
+
+
+
Returns
void
+ +

Definition at line 108 of file Exception.php.

+
109  {
+
110  if(!array_key_exists((int) $code, self::$messages))
+
111  {
+
112  throw new self("custom message for code 0x" . strtoupper(dechex($code)) . " is not registered");
+
113  }
+
114 
+
115  unset(self::$messages[intval($code)]);
+
116  }
+
+
+
+ +
+
+ + + + + +
+ + + + + + + +
TeamSpeak3_Exception::getSender ()
+
+inherited
+
+ +

Returns the class from which the exception was thrown.

+
Returns
string
+ +

Definition at line 123 of file Exception.php.

+
124  {
+
125  $trace = $this->getTrace();
+
126 
+
127  return (isset($trace[0]["class"])) ? $trace[0]["class"] : "{main}";
+
128  }
+
+
+
+
The documentation for this class was generated from the following file: +
+
+ + + + diff --git a/lib/docs/html/class_team_speak3___adapter___file_transfer___exception.js b/lib/docs/html/class_team_speak3___adapter___file_transfer___exception.js new file mode 100644 index 0000000..e0be742 --- /dev/null +++ b/lib/docs/html/class_team_speak3___adapter___file_transfer___exception.js @@ -0,0 +1,5 @@ +var class_team_speak3___adapter___file_transfer___exception = +[ + [ "prepareCustomMessage", "class_team_speak3___adapter___file_transfer___exception.html#a3bfcdf7b85a393b7a8b05b048ae3279c", null ], + [ "getSender", "class_team_speak3___adapter___file_transfer___exception.html#ae7d4b369dd11d3cf56d120acae0cf1db", null ] +]; \ No newline at end of file diff --git a/lib/docs/html/class_team_speak3___adapter___file_transfer___exception.png b/lib/docs/html/class_team_speak3___adapter___file_transfer___exception.png new file mode 100644 index 0000000000000000000000000000000000000000..c5729f068faad62d51f3c17e11d9e78e2fd49327 GIT binary patch literal 1762 zcmb`Ic~DbV6vkhaRzzh9;|w5(NTQ%3i|hnM4d8n$0uojsAYiN^G8jR&khmd~O&<}; z5}=4t1Be(QDqDaSCZGYK?3+c1vIL5efFPuyV`uE&_RidUzVFVNId{(Q-nq%HE)F~7 z)Z_pF*a4ozx&r_LDb-xr&C*qJUj3>xsJJ?L*hwT3sT_MRf@14#OVvM<%jM=cSLaHt z>}7YC(||N-WAwCn7y-bK5g_)MM>ImnAVu9XP?Sj#Sa+<2*QOg5{dkp;;aoegkFKGu zWqd#AQ+AL_V(0GdI9!l*aS5v}31%J8hFGjrokuLAdOw~=cPUH$MfLgzBT5a-Vv!Rp zNz{`(;f$UJGc~6^ac1e0MCe5>XH5?+KRT2%ny&j{lKAjKhrk!tb7dj8YNB9s%6{c% zY#eUU|BJVtAv%*OIm1)CqVKcrfL{8zg4O%1KzGvT@zO=&H*@9<0U)kNN#7`Qqx!~i zqS0s^PT!X9fm3yJ$Aw}+++8KHh&d0OAwO^U@bZV~)r@ z0s*F2S(*|Wu%`nmZkqzJTfg5dSVAok>L=n1Ab0N!ojWLP2*pc6f=0zyIJLsv$mtd; z(t=oP=AE&nc_iFweh;Ymb{l&lEP+#fPriGR(^1u`+_=6|lX`+jAw8%F3TTU2>D%Tk z>LP-4f5EG%C#s7HQ{vJW`@lj$>0M*3Q6|MIT)ANzTkx4k8fMyZBzvj|WM|l>9q)ej zjWHrF%u#N3?B@NfLmVOHN*LHh_w~0Bky)eZ!AfWIex}vmXWS3y=9K|lyim&$MZr>EzVj!ZosjkBi zTrt2u#KOB5(Cl^Ah$n1Wn+xk&@oUxy5Nb-P!7&+CXX&;Vw5OkhmC$eqHW{Vrg??wA z{;LHLaDAI?5|XBUINKaCC?#T5VLvW&p09)GSJe7HxkxFu%;>1LMr;>0>VVQ)EamYH zp3w&(zsQ5rmwKba`^DZ=;oPjkVxZj8t`4h{U0U;em`xZNOt*CE8?zbO-Mlj6gN85j z_s7Sd;ZYdO3O{dB*}ss|VPdx5gBUJnwB4a&xQuF*xq4q12!BFpp6x=Sk*Lr#JhC_LYrarZlIF9bX$g&WsCU$!-@SfF)9qZ}CBM0WKH5<%Z zl~>N88FoI7qd~M*h)?7t9Kn~)UHAQH4Gmfzoi`(nE=A=>ek8?^Oa+md&(~i6es&JeN>X(eN9;f6Lpe!`&C2WQDW9V*3Git^Z^ZY&DYcII}OVgn{CDiP1+PKlx zQaD1rwNo9aX#8Ohb}LsY+c6&ys-kHOFYSm;#soSLmZS)1LqMty!k}1&n}qy+^DdIU zz1iS~I1rF^PRDKylot8=o(&J?r0CgZuv_Aqt6NuyR|wRHF>>8Mt!i-*Yc01ppM&L} zPJDVn(3o>Kv*z2|xOUC|Wne(lJ2kN$VV;*fHsXTk^qTh0++@Z~RiPj=2~$ac7>m`{ z^e2ms%$H)QhnLDSy&tQmndncNvZSPcdkN(#hI7i5^n3=5JMhGN<&9r4XCCzNY$~YT zRT9H*u5_6zymi#`>^&*!{&u8#NkY5*cr__TqHs6N{rqaZxW(7l#DdMh>KCWMp(uRk z>#z;tYGe6@HhIjthNomo7`=bb>%AHolTcJ1;}X$mMcNZUCIAL8#d&rURI9e+I%dUYtNXB??61%R_t_%@;=! zw=4me*GGaWY$Q!NAt(#@67?UpkD + + + + + +TeamSpeak 3 PHP Framework: Member List + + + + + + + + + + + + + +
+
+ + + + + + + +
+
TeamSpeak 3 PHP Framework +  1.1.23 +
+
Copyright © Planet TeamSpeak. All rights reserved.
+
+
+ + + + + +
+
+ +
+
+
+ +
+ + + + +
+ +
+ +
+
+
TeamSpeak3_Adapter_ServerQuery Member List
+
+
+ +

This is the complete list of members for TeamSpeak3_Adapter_ServerQuery, including all inherited members.

+ + + + + + + + + + + + + + + + + + + + + + + + +
$block (defined in TeamSpeak3_Adapter_ServerQuery)TeamSpeak3_Adapter_ServerQueryprotected
$count (defined in TeamSpeak3_Adapter_ServerQuery)TeamSpeak3_Adapter_ServerQueryprotected
$host (defined in TeamSpeak3_Adapter_ServerQuery)TeamSpeak3_Adapter_ServerQueryprotected
$options (defined in TeamSpeak3_Adapter_Abstract)TeamSpeak3_Adapter_Abstractprotected
$timer (defined in TeamSpeak3_Adapter_ServerQuery)TeamSpeak3_Adapter_ServerQueryprotected
$transport (defined in TeamSpeak3_Adapter_Abstract)TeamSpeak3_Adapter_Abstractprotected
__construct(array $options)TeamSpeak3_Adapter_Abstract
__destruct()TeamSpeak3_Adapter_ServerQuery
__sleep()TeamSpeak3_Adapter_Abstract
__wakeup()TeamSpeak3_Adapter_Abstract
getHost()TeamSpeak3_Adapter_ServerQuery
getProfiler()TeamSpeak3_Adapter_Abstract
getQueryCount()TeamSpeak3_Adapter_ServerQuery
getQueryLastTimestamp()TeamSpeak3_Adapter_ServerQuery
getQueryRuntime()TeamSpeak3_Adapter_ServerQuery
getTransport()TeamSpeak3_Adapter_Abstract
getTransportHost()TeamSpeak3_Adapter_Abstract
getTransportPort()TeamSpeak3_Adapter_Abstract
initTransport($options, $transport="TeamSpeak3_Transport_TCP")TeamSpeak3_Adapter_Abstractprotected
prepare($cmd, array $params=array())TeamSpeak3_Adapter_ServerQuery
request($cmd, $throw=TRUE)TeamSpeak3_Adapter_ServerQuery
syn()TeamSpeak3_Adapter_ServerQueryprotected
wait()TeamSpeak3_Adapter_ServerQuery
+
+ + + + diff --git a/lib/docs/html/class_team_speak3___adapter___server_query.html b/lib/docs/html/class_team_speak3___adapter___server_query.html new file mode 100644 index 0000000..4851c63 --- /dev/null +++ b/lib/docs/html/class_team_speak3___adapter___server_query.html @@ -0,0 +1,875 @@ + + + + + + +TeamSpeak 3 PHP Framework: TeamSpeak3_Adapter_ServerQuery Class Reference + + + + + + + + + + + + + +
+
+ + + + + + + +
+
TeamSpeak 3 PHP Framework +  1.1.23 +
+
Copyright © Planet TeamSpeak. All rights reserved.
+
+
+ + + + + +
+
+ +
+
+
+ +
+ + + + +
+ +
+ +
+ +
+
TeamSpeak3_Adapter_ServerQuery Class Reference
+
+
+ +

Provides low-level methods for ServerQuery communication with a TeamSpeak 3 Server. + More...

+
+ + Inheritance diagram for TeamSpeak3_Adapter_ServerQuery:
+
+
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +

+Public Member Functions

 __destruct ()
 The TeamSpeak3_Adapter_ServerQuery destructor. More...
 
 request ($cmd, $throw=TRUE)
 Sends a prepared command to the server and returns the result. More...
 
 wait ()
 Waits for the server to send a notification message and returns the result. More...
 
 prepare ($cmd, array $params=array())
 Uses given parameters and returns a prepared ServerQuery command. More...
 
 getQueryLastTimestamp ()
 Returns the timestamp of the last command. More...
 
 getQueryCount ()
 Returns the number of queries executed on the server. More...
 
 getQueryRuntime ()
 Returns the total runtime of all queries. More...
 
 getHost ()
 Returns the TeamSpeak3_Node_Host object of the current connection. More...
 
 __sleep ()
 Commit pending data. More...
 
 __wakeup ()
 Reconnects to the remote server. More...
 
 getProfiler ()
 Returns the profiler timer used for this connection adapter. More...
 
 getTransport ()
 Returns the transport object used for this connection adapter. More...
 
 getTransportHost ()
 Returns the hostname or IPv4 address the underlying TeamSpeak3_Transport_Abstract object is connected to. More...
 
 getTransportPort ()
 Returns the port number of the server the underlying TeamSpeak3_Transport_Abstract object is connected to. More...
 
+ + + + + + + +

+Protected Member Functions

 syn ()
 Connects the TeamSpeak3_Transport_Abstract object and performs initial actions on the remote server. More...
 
 initTransport ($options, $transport="TeamSpeak3_Transport_TCP")
 Loads the transport object object used for the connection adapter and passes a given set of options. More...
 
+ + + + + + + + + + + + + +

+Protected Attributes

$host = null
 
$timer = null
 
$count = 0
 
$block = array("help")
 
$options = null
 
$transport = null
 
+

Detailed Description

+

Provides low-level methods for ServerQuery communication with a TeamSpeak 3 Server.

+ +

Definition at line 32 of file ServerQuery.php.

+

Constructor & Destructor Documentation

+ +
+
+ + + + + + + +
TeamSpeak3_Adapter_ServerQuery::__destruct ()
+
+ +

The TeamSpeak3_Adapter_ServerQuery destructor.

+
Returns
void
+ +

Definition at line 89 of file ServerQuery.php.

+ +

References TeamSpeak3_Adapter_Abstract\getTransport(), TeamSpeak3_Transport_Abstract\isConnected(), and request().

+
90  {
+
91  if($this->getTransport() instanceof TeamSpeak3_Transport_Abstract && $this->transport->isConnected())
+
92  {
+
93  try
+
94  {
+
95  $this->request("quit");
+
96  }
+
97  catch(Exception $e)
+
98  {
+
99  return;
+
100  }
+
101  }
+
102  }
+
+
+
+

Member Function Documentation

+ +
+
+ + + + + +
+ + + + + + + +
TeamSpeak3_Adapter_ServerQuery::syn ()
+
+protected
+
+ +

Connects the TeamSpeak3_Transport_Abstract object and performs initial actions on the remote server.

+
Exceptions
+ + +
TeamSpeak3_Adapter_Exception
+
+
+
Returns
void
+ +

Definition at line 69 of file ServerQuery.php.

+ +

References TeamSpeak3_Helper_Signal\getInstance(), TeamSpeak3_Adapter_Abstract\getTransport(), TeamSpeak3_Helper_Profiler\init(), TeamSpeak3_Adapter_Abstract\initTransport(), and TeamSpeak3\READY.

+
70  {
+
71  $this->initTransport($this->options);
+
72  $this->transport->setAdapter($this);
+
73 
+
74  TeamSpeak3_Helper_Profiler::init(spl_object_hash($this));
+
75 
+
76  if(!$this->getTransport()->readLine()->startsWith(TeamSpeak3::READY))
+
77  {
+
78  throw new TeamSpeak3_Adapter_Exception("invalid reply from the server");
+
79  }
+
80 
+
81  TeamSpeak3_Helper_Signal::getInstance()->emit("serverqueryConnected", $this);
+
82  }
+
+
+
+ +
+
+ + + + + + + + + + + + + + + + + + +
TeamSpeak3_Adapter_ServerQuery::request ( $cmd,
 $throw = TRUE 
)
+
+ +

Sends a prepared command to the server and returns the result.

+
Parameters
+ + + +
string$cmd
boolean$throw
+
+
+
Exceptions
+ + +
TeamSpeak3_Adapter_Exception
+
+
+
Returns
TeamSpeak3_Adapter_ServerQuery_Reply
+ +

Definition at line 112 of file ServerQuery.php.

+ +

References TeamSpeak3\ERROR, TeamSpeak3_Helper_String\factory(), getHost(), TeamSpeak3_Helper_Signal\getInstance(), TeamSpeak3_Adapter_Abstract\getProfiler(), TeamSpeak3_Adapter_Abstract\getTransport(), TeamSpeak3_Helper_String\section(), and TeamSpeak3\SEPARATOR_CELL.

+ +

Referenced by __destruct().

+
113  {
+ +
115 
+
116  if(strstr($cmd, "\r") || strstr($cmd, "\n"))
+
117  {
+
118  throw new TeamSpeak3_Adapter_Exception("illegal characters in command '" . $query . "'");
+
119  }
+
120  elseif(in_array($query, $this->block))
+
121  {
+
122  throw new TeamSpeak3_Adapter_ServerQuery_Exception("command not found", 0x100);
+
123  }
+
124 
+
125  TeamSpeak3_Helper_Signal::getInstance()->emit("serverqueryCommandStarted", $cmd);
+
126 
+
127  $this->getProfiler()->start();
+
128  $this->getTransport()->sendLine($cmd);
+
129  $this->timer = time();
+
130  $this->count++;
+
131 
+
132  $rpl = array();
+
133 
+
134  do {
+
135  $str = $this->getTransport()->readLine();
+
136  $rpl[] = $str;
+ +
138 
+
139  $this->getProfiler()->stop();
+
140 
+
141  $reply = new TeamSpeak3_Adapter_ServerQuery_Reply($rpl, $cmd, $this->getHost(), $throw);
+
142 
+
143  TeamSpeak3_Helper_Signal::getInstance()->emit("serverqueryCommandFinished", $cmd, $reply);
+
144 
+
145  return $reply;
+
146  }
+
+
+
+ +
+
+ + + + + + + +
TeamSpeak3_Adapter_ServerQuery::wait ()
+
+ +

Waits for the server to send a notification message and returns the result.

+
Exceptions
+ + +
TeamSpeak3_Adapter_Exception
+
+
+
Returns
TeamSpeak3_Adapter_ServerQuery_Event
+ +

Definition at line 154 of file ServerQuery.php.

+ +

References TeamSpeak3\EVENT, getHost(), TeamSpeak3_Adapter_Abstract\getTransport(), TeamSpeak3_Helper_String\section(), and TeamSpeak3\SEPARATOR_CELL.

+
155  {
+
156  if($this->getTransport()->getConfig("blocking"))
+
157  {
+
158  throw new TeamSpeak3_Adapter_Exception("only available in non-blocking mode");
+
159  }
+
160 
+
161  do {
+
162  $evt = $this->getTransport()->readLine();
+
163  } while($evt instanceof TeamSpeak3_Helper_String && !$evt->section(TeamSpeak3::SEPARATOR_CELL)->startsWith(TeamSpeak3::EVENT));
+
164 
+
165  return new TeamSpeak3_Adapter_ServerQuery_Event($evt, $this->getHost());
+
166  }
+
+
+
+ +
+
+ + + + + + + + + + + + + + + + + + +
TeamSpeak3_Adapter_ServerQuery::prepare ( $cmd,
array $params = array() 
)
+
+ +

Uses given parameters and returns a prepared ServerQuery command.

+
Parameters
+ + + +
string$cmd
array$params
+
+
+
Returns
string
+ +

Definition at line 175 of file ServerQuery.php.

+ +

References TeamSpeak3_Helper_String\factory(), TeamSpeak3\SEPARATOR_CELL, TeamSpeak3\SEPARATOR_LIST, and TeamSpeak3\SEPARATOR_PAIR.

+
176  {
+
177  $args = array();
+
178  $cells = array();
+
179 
+
180  foreach($params as $ident => $value)
+
181  {
+
182  $ident = is_numeric($ident) ? "" : strtolower($ident) . TeamSpeak3::SEPARATOR_PAIR;
+
183 
+
184  if(is_array($value))
+
185  {
+
186  $value = array_values($value);
+
187 
+
188  for($i = 0; $i < count($value); $i++)
+
189  {
+
190  if($value[$i] === null) continue;
+
191  elseif($value[$i] === FALSE) $value[$i] = 0x00;
+
192  elseif($value[$i] === TRUE) $value[$i] = 0x01;
+
193  elseif($value[$i] instanceof TeamSpeak3_Node_Abstract) $value[$i] = $value[$i]->getId();
+
194 
+
195  $cells[$i][] = $ident . TeamSpeak3_Helper_String::factory($value[$i])->escape()->toUtf8();
+
196  }
+
197  }
+
198  else
+
199  {
+
200  if($value === null) continue;
+
201  elseif($value === FALSE) $value = 0x00;
+
202  elseif($value === TRUE) $value = 0x01;
+
203  elseif($value instanceof TeamSpeak3_Node_Abstract) $value = $value->getId();
+
204 
+
205  $args[] = $ident . TeamSpeak3_Helper_String::factory($value)->escape()->toUtf8();
+
206  }
+
207  }
+
208 
+
209  foreach(array_keys($cells) as $ident) $cells[$ident] = implode(TeamSpeak3::SEPARATOR_CELL, $cells[$ident]);
+
210 
+
211  if(count($args)) $cmd .= " " . implode(TeamSpeak3::SEPARATOR_CELL, $args);
+
212  if(count($cells)) $cmd .= " " . implode(TeamSpeak3::SEPARATOR_LIST, $cells);
+
213 
+
214  return trim($cmd);
+
215  }
+
+
+
+ +
+
+ + + + + + + +
TeamSpeak3_Adapter_ServerQuery::getQueryLastTimestamp ()
+
+ +

Returns the timestamp of the last command.

+
Returns
integer
+ +

Definition at line 222 of file ServerQuery.php.

+
223  {
+
224  return $this->timer;
+
225  }
+
+
+
+ +
+
+ + + + + + + +
TeamSpeak3_Adapter_ServerQuery::getQueryCount ()
+
+ +

Returns the number of queries executed on the server.

+
Returns
integer
+ +

Definition at line 232 of file ServerQuery.php.

+
233  {
+
234  return $this->count;
+
235  }
+
+
+
+ +
+
+ + + + + + + +
TeamSpeak3_Adapter_ServerQuery::getQueryRuntime ()
+
+ +

Returns the total runtime of all queries.

+
Returns
mixed
+ +

Definition at line 242 of file ServerQuery.php.

+ +

References TeamSpeak3_Adapter_Abstract\getProfiler().

+
243  {
+
244  return $this->getProfiler()->getRuntime();
+
245  }
+
+
+
+ +
+
+ + + + + + + +
TeamSpeak3_Adapter_ServerQuery::getHost ()
+
+ +

Returns the TeamSpeak3_Node_Host object of the current connection.

+
Returns
TeamSpeak3_Node_Host
+ +

Definition at line 252 of file ServerQuery.php.

+ +

Referenced by request(), and wait().

+
253  {
+
254  if($this->host === null)
+
255  {
+
256  $this->host = new TeamSpeak3_Node_Host($this);
+
257  }
+
258 
+
259  return $this->host;
+
260  }
+
+
+
+ +
+
+ + + + + +
+ + + + + + + +
TeamSpeak3_Adapter_Abstract::__sleep ()
+
+inherited
+
+ +

Commit pending data.

+
Returns
array
+ +

Definition at line 85 of file Abstract.php.

+
86  {
+
87  return array("options");
+
88  }
+
+
+
+ +
+
+ + + + + +
+ + + + + + + +
TeamSpeak3_Adapter_Abstract::__wakeup ()
+
+inherited
+
+ +

Reconnects to the remote server.

+
Returns
void
+ +

Definition at line 95 of file Abstract.php.

+ +

References TeamSpeak3_Adapter_Abstract\syn().

+
96  {
+
97  $this->syn();
+
98  }
+
+
+
+ +
+
+ + + + + +
+ + + + + + + +
TeamSpeak3_Adapter_Abstract::getProfiler ()
+
+inherited
+
+ +

Returns the profiler timer used for this connection adapter.

+
Returns
TeamSpeak3_Helper_Profiler_Timer
+ +

Definition at line 105 of file Abstract.php.

+ +

References TeamSpeak3_Helper_Profiler\get().

+ +

Referenced by TeamSpeak3_Adapter_FileTransfer\download(), getQueryRuntime(), TeamSpeak3_Adapter_FileTransfer\init(), request(), and TeamSpeak3_Adapter_FileTransfer\upload().

+
106  {
+
107  return TeamSpeak3_Helper_Profiler::get(spl_object_hash($this));
+
108  }
+
+
+
+ + + +
+
+ + + + + +
+ + + + + + + + + + + + + + + + + + +
TeamSpeak3_Adapter_Abstract::initTransport ( $options,
 $transport = "TeamSpeak3_Transport_TCP" 
)
+
+protectedinherited
+
+ +

Loads the transport object object used for the connection adapter and passes a given set of options.

+
Parameters
+ + + +
array$options
string$transport
+
+
+
Exceptions
+ + +
TeamSpeak3_Adapter_Exception
+
+
+
Returns
void
+ +

Definition at line 129 of file Abstract.php.

+ +

Referenced by TeamSpeak3_Adapter_FileTransfer\syn(), TeamSpeak3_Adapter_TSDNS\syn(), TeamSpeak3_Adapter_Blacklist\syn(), syn(), and TeamSpeak3_Adapter_Update\syn().

+
130  {
+
131  if(!is_array($options))
+
132  {
+
133  throw new TeamSpeak3_Adapter_Exception("transport parameters must provided in an array");
+
134  }
+
135 
+
136  $this->transport = new $transport($options);
+
137  }
+
+
+
+ +
+
+ + + + + +
+ + + + + + + +
TeamSpeak3_Adapter_Abstract::getTransportHost ()
+
+inherited
+
+ +

Returns the hostname or IPv4 address the underlying TeamSpeak3_Transport_Abstract object is connected to.

+
Returns
string
+ +

Definition at line 145 of file Abstract.php.

+ +

References TeamSpeak3_Adapter_Abstract\getTransport().

+
146  {
+
147  return $this->getTransport()->getConfig("host", "0.0.0.0");
+
148  }
+
+
+
+ +
+
+ + + + + +
+ + + + + + + +
TeamSpeak3_Adapter_Abstract::getTransportPort ()
+
+inherited
+
+ +

Returns the port number of the server the underlying TeamSpeak3_Transport_Abstract object is connected to.

+
Returns
string
+ +

Definition at line 156 of file Abstract.php.

+ +

References TeamSpeak3_Adapter_Abstract\getTransport().

+
157  {
+
158  return $this->getTransport()->getConfig("port", "0");
+
159  }
+
+
+
+
The documentation for this class was generated from the following file: +
+
+ + + + diff --git a/lib/docs/html/class_team_speak3___adapter___server_query.js b/lib/docs/html/class_team_speak3___adapter___server_query.js new file mode 100644 index 0000000..2ea7b7a --- /dev/null +++ b/lib/docs/html/class_team_speak3___adapter___server_query.js @@ -0,0 +1,25 @@ +var class_team_speak3___adapter___server_query = +[ + [ "__destruct", "class_team_speak3___adapter___server_query.html#abe0dc4f73909ab01d000059967bccd64", null ], + [ "syn", "class_team_speak3___adapter___server_query.html#a1104e77bfcf0fea456b64a275f122ed5", null ], + [ "request", "class_team_speak3___adapter___server_query.html#af153378a3e5668d2aa9ef43eac7de36a", null ], + [ "wait", "class_team_speak3___adapter___server_query.html#a9c0096841e9ffc4adabce05b7ee1df37", null ], + [ "prepare", "class_team_speak3___adapter___server_query.html#a922a436f8224dffa4272244efb026383", null ], + [ "getQueryLastTimestamp", "class_team_speak3___adapter___server_query.html#a1c156818989d1377763503849dd3d933", null ], + [ "getQueryCount", "class_team_speak3___adapter___server_query.html#a20e3c73543f989c2955cbcab6069c1a0", null ], + [ "getQueryRuntime", "class_team_speak3___adapter___server_query.html#afaf3a140c05ee3bb840a4f20c050cfaa", null ], + [ "getHost", "class_team_speak3___adapter___server_query.html#a948c56497ac50d138169101f4b7b97b8", null ], + [ "__sleep", "class_team_speak3___adapter___server_query.html#afa29be26280db12e38aef59d90f7c6ac", null ], + [ "__wakeup", "class_team_speak3___adapter___server_query.html#aaa3c73f10edd73494087a7a523726a89", null ], + [ "getProfiler", "class_team_speak3___adapter___server_query.html#ab1bd002b22a8121e8efa5ab4ccd36fa5", null ], + [ "getTransport", "class_team_speak3___adapter___server_query.html#a538e98e6dcc6a2ad7fdcb4913f6f7c52", null ], + [ "initTransport", "class_team_speak3___adapter___server_query.html#a87920747e1eb4a25396c5b5e5567094b", null ], + [ "getTransportHost", "class_team_speak3___adapter___server_query.html#adcf5e760b6d6d3e42f11d8b1bc5d87cc", null ], + [ "getTransportPort", "class_team_speak3___adapter___server_query.html#a5eb0b19787ec6f719d8f19bcd7182461", null ], + [ "$host", "class_team_speak3___adapter___server_query.html#af3e836f70ff0d7559072522ff3cdc3ab", null ], + [ "$timer", "class_team_speak3___adapter___server_query.html#a2a57bbee0ce18e8c75cd6e93e1755bc5", null ], + [ "$count", "class_team_speak3___adapter___server_query.html#ac5bdb0f16db16f5b706d7ee9a3322a64", null ], + [ "$block", "class_team_speak3___adapter___server_query.html#a019993dea141dc6cd47ad0698c5552b6", null ], + [ "$options", "class_team_speak3___adapter___server_query.html#a94b75d4f99ef639e5cb39e900d38e56a", null ], + [ "$transport", "class_team_speak3___adapter___server_query.html#a257acaf2793889d1e75364d40e7fa15d", null ] +]; \ No newline at end of file diff --git a/lib/docs/html/class_team_speak3___adapter___server_query.png b/lib/docs/html/class_team_speak3___adapter___server_query.png new file mode 100644 index 0000000000000000000000000000000000000000..53595b419443f01bfc6b3ccb87dd02e7b2d921e2 GIT binary patch literal 891 zcmeAS@N?(olHy`uVBq!ia0vp^w}3c+gBeJAyqFyhq$C1-LR|m<{|{u|fBxC4YVQOf z3ycpOI55+9+bkfLqa?^Lm;tB=1g@S6F=Aj~=JIrL45?szJNI?bYXgoJ`-e04{a2oU zWEzXdk4fLQ7++fP@>pM_q8Q`9)7x@y&q)v#oGIu%tK&pQ#3dIOH)kDP*?J`<#dSS5 zFBp9Z-~Q>?RO91!KD>Ona_;L>+l-rzB};nN+fJKy{m-N=bACVGl%JYhXKV26)GBsy zkLtj(pu!(%*Y&3}DzDw4f2Wpzb9#*P^-Df0cC+`cIg)wy=_0r1zI#o!t0k6AtbNvb zaGsJ9ubk)U?XPT(Klm#i7E;;vR(9K^MDj&P37GHSzmQO`%m`2)2wxC_nl%iWuN)@t>4)V zhZCe`i%xG~E5GOQK)~~~ZdJ@0llobGqF&k}x>EXQZ_IWpS{8L~?JEVT>oN~lZavL? z_xZ_9zm!)jy?QNg!g@1?^rE+mzn5{b{9)gF&9l3D?Oe0CTczudUb^z+m&@h*-#^YZ zvHtCqwq@QT&dAHJ;>^+%UbNh?-}>-$#OwRv=bju6ihI2KVRa@$`Hv2s3lEmRX3YDL zed*h@vV2B||IUZcN;N#+U~71N<<5COnxzviv+yYTT8FsCqh My85}Sb4q9e0JChZ;Q#;t literal 0 HcmV?d00001 diff --git a/lib/docs/html/class_team_speak3___adapter___server_query___event-members.html b/lib/docs/html/class_team_speak3___adapter___server_query___event-members.html new file mode 100644 index 0000000..4e632e3 --- /dev/null +++ b/lib/docs/html/class_team_speak3___adapter___server_query___event-members.html @@ -0,0 +1,139 @@ + + + + + + +TeamSpeak 3 PHP Framework: Member List + + + + + + + + + + + + + +
+
+ + + + + + + +
+
TeamSpeak 3 PHP Framework +  1.1.23 +
+
Copyright © Planet TeamSpeak. All rights reserved.
+
+
+ + + + + +
+
+ +
+
+
+ + + + + + diff --git a/lib/docs/html/class_team_speak3___adapter___server_query___event.html b/lib/docs/html/class_team_speak3___adapter___server_query___event.html new file mode 100644 index 0000000..23f1288 --- /dev/null +++ b/lib/docs/html/class_team_speak3___adapter___server_query___event.html @@ -0,0 +1,507 @@ + + + + + + +TeamSpeak 3 PHP Framework: TeamSpeak3_Adapter_ServerQuery_Event Class Reference + + + + + + + + + + + + + +
+
+ + + + + + + +
+
TeamSpeak 3 PHP Framework +  1.1.23 +
+
Copyright © Planet TeamSpeak. All rights reserved.
+
+
+ + + + + +
+
+ +
+
+
+ +
+ + + + +
+ +
+ +
+ +
+
TeamSpeak3_Adapter_ServerQuery_Event Class Reference
+
+
+ +

Provides methods to analyze and format a ServerQuery event. + More...

+
+ + Inheritance diagram for TeamSpeak3_Adapter_ServerQuery_Event:
+
+
+ + + + + + + + + + + + + + + + + + + + + + + + + + + +

+Public Member Functions

 __construct (TeamSpeak3_Helper_String $evt, TeamSpeak3_Node_Host $con=null)
 Creates a new TeamSpeak3_Adapter_ServerQuery_Event object. More...
 
 getType ()
 Returns the event type string. More...
 
 getData ()
 Returns the event data array. More...
 
 getMessage ()
 Returns the event data as an unparsed string. More...
 
 offsetExists ($offset)
 
 offsetGet ($offset)
 
 offsetSet ($offset, $value)
 
 offsetUnset ($offset)
 
 __get ($offset)
 
 __set ($offset, $value)
 
+ + + + + + + +

+Protected Attributes

$type = null
 
$data = null
 
$mesg = null
 
+

Detailed Description

+

Provides methods to analyze and format a ServerQuery event.

+ +

Definition at line 32 of file Event.php.

+

Constructor & Destructor Documentation

+ +
+
+ + + + + + + + + + + + + + + + + + +
TeamSpeak3_Adapter_ServerQuery_Event::__construct (TeamSpeak3_Helper_String $evt,
TeamSpeak3_Node_Host $con = null 
)
+
+ +

Creates a new TeamSpeak3_Adapter_ServerQuery_Event object.

+
Parameters
+ + + +
TeamSpeak3_Helper_String$evt
TeamSpeak3_Node_Host$con
+
+
+
Exceptions
+ + +
TeamSpeak3_Adapter_Exception
+
+
+
Returns
TeamSpeak3_Adapter_ServerQuery_Event
+ +

Definition at line 63 of file Event.php.

+ +

References TeamSpeak3\ERROR, TeamSpeak3\EVENT, TeamSpeak3_Helper_Signal\getInstance(), TeamSpeak3\SEPARATOR_CELL, TeamSpeak3\SEPARATOR_PAIR, TeamSpeak3_Helper_String\split(), and TeamSpeak3_Helper_String\startsWith().

+
64  {
+
65  if(!$evt->startsWith(TeamSpeak3::EVENT))
+
66  {
+
67  throw new TeamSpeak3_Adapter_Exception("invalid notification event format");
+
68  }
+
69 
+
70  list($type, $data) = $evt->split(TeamSpeak3::SEPARATOR_CELL, 2);
+
71 
+
72  if(empty($data))
+
73  {
+
74  throw new TeamSpeak3_Adapter_Exception("invalid notification event data");
+
75  }
+
76 
+ +
78  $repl = new TeamSpeak3_Adapter_ServerQuery_Reply(array($data, $fake), $type);
+
79 
+
80  $this->type = $type->substr(strlen(TeamSpeak3::EVENT));
+
81  $this->data = $repl->toList();
+
82  $this->mesg = $data;
+
83 
+
84  TeamSpeak3_Helper_Signal::getInstance()->emit("notifyEvent", $this, $con);
+
85  TeamSpeak3_Helper_Signal::getInstance()->emit("notify" . ucfirst($this->type), $this, $con);
+
86  }
+
+
+
+

Member Function Documentation

+ +
+
+ + + + + + + +
TeamSpeak3_Adapter_ServerQuery_Event::getType ()
+
+ +

Returns the event type string.

+
Returns
TeamSpeak3_Helper_String
+ +

Definition at line 93 of file Event.php.

+ +

Referenced by offsetSet().

+
94  {
+
95  return $this->type;
+
96  }
+
+
+
+ +
+
+ + + + + + + +
TeamSpeak3_Adapter_ServerQuery_Event::getData ()
+
+ +

Returns the event data array.

+
Returns
array
+ +

Definition at line 103 of file Event.php.

+
104  {
+
105  return $this->data;
+
106  }
+
+
+
+ +
+
+ + + + + + + +
TeamSpeak3_Adapter_ServerQuery_Event::getMessage ()
+
+ +

Returns the event data as an unparsed string.

+
Returns
TeamSpeak3_Helper_String
+ +

Definition at line 113 of file Event.php.

+
114  {
+
115  return $this->mesg;
+
116  }
+
+
+
+ +
+
+ + + + + + + + +
TeamSpeak3_Adapter_ServerQuery_Event::offsetExists ( $offset)
+
+ +

+ +

Definition at line 121 of file Event.php.

+ +

Referenced by offsetGet().

+
122  {
+
123  return array_key_exists($offset, $this->data) ? TRUE : FALSE;
+
124  }
+
+
+
+ +
+
+ + + + + + + + +
TeamSpeak3_Adapter_ServerQuery_Event::offsetGet ( $offset)
+
+ +

+ +

Definition at line 129 of file Event.php.

+ +

References offsetExists().

+ +

Referenced by __get().

+
130  {
+
131  if(!$this->offsetExists($offset))
+
132  {
+
133  throw new TeamSpeak3_Adapter_ServerQuery_Exception("invalid parameter", 0x602);
+
134  }
+
135 
+
136  return $this->data[$offset];
+
137  }
+
+
+
+ +
+
+ + + + + + + + + + + + + + + + + + +
TeamSpeak3_Adapter_ServerQuery_Event::offsetSet ( $offset,
 $value 
)
+
+ +

+ +

Definition at line 142 of file Event.php.

+ +

References getType().

+ +

Referenced by __set().

+
143  {
+
144  throw new TeamSpeak3_Node_Exception("event '" . $this->getType() . "' is read only");
+
145  }
+
+
+
+ +
+
+ + + + + + + + +
TeamSpeak3_Adapter_ServerQuery_Event::offsetUnset ( $offset)
+
+ +

+ +

Definition at line 150 of file Event.php.

+
151  {
+
152  unset($this->data[$offset]);
+
153  }
+
+
+
+ +
+
+ + + + + + + + +
TeamSpeak3_Adapter_ServerQuery_Event::__get ( $offset)
+
+ +

+ +

Definition at line 158 of file Event.php.

+ +

References offsetGet().

+
159  {
+
160  return $this->offsetGet($offset);
+
161  }
+
+
+
+ +
+
+ + + + + + + + + + + + + + + + + + +
TeamSpeak3_Adapter_ServerQuery_Event::__set ( $offset,
 $value 
)
+
+ +

+ +

Definition at line 166 of file Event.php.

+ +

References offsetSet().

+
167  {
+
168  $this->offsetSet($offset, $value);
+
169  }
+
+
+
+
The documentation for this class was generated from the following file: +
+
+ + + + diff --git a/lib/docs/html/class_team_speak3___adapter___server_query___event.js b/lib/docs/html/class_team_speak3___adapter___server_query___event.js new file mode 100644 index 0000000..89737e9 --- /dev/null +++ b/lib/docs/html/class_team_speak3___adapter___server_query___event.js @@ -0,0 +1,16 @@ +var class_team_speak3___adapter___server_query___event = +[ + [ "__construct", "class_team_speak3___adapter___server_query___event.html#ab847f72f60d9a87e577455a326b97d35", null ], + [ "getType", "class_team_speak3___adapter___server_query___event.html#aba87307c13aaa64c3c91e4fa398517ef", null ], + [ "getData", "class_team_speak3___adapter___server_query___event.html#a476acf6ce132b0a3d0b4fc9b22e7405e", null ], + [ "getMessage", "class_team_speak3___adapter___server_query___event.html#aec6954f96cbc4a229348ae31f9b289e7", null ], + [ "offsetExists", "class_team_speak3___adapter___server_query___event.html#a57ae033a9a2926762f557fb8705d8a15", null ], + [ "offsetGet", "class_team_speak3___adapter___server_query___event.html#a6c3c6a21f1f6dd8e594669868c310c81", null ], + [ "offsetSet", "class_team_speak3___adapter___server_query___event.html#a9eb8d547545fa1e17f70c8ee5ba33a9c", null ], + [ "offsetUnset", "class_team_speak3___adapter___server_query___event.html#a41ef812dbfe2d1e1b517bd123fc960f6", null ], + [ "__get", "class_team_speak3___adapter___server_query___event.html#a496f7adbe81710f97848608dc3b29265", null ], + [ "__set", "class_team_speak3___adapter___server_query___event.html#a8c466fb68578cc95504035aae3785759", null ], + [ "$type", "class_team_speak3___adapter___server_query___event.html#ae37c57dcc407345531912b3687ffdee9", null ], + [ "$data", "class_team_speak3___adapter___server_query___event.html#a57104b2b838c8a4ba3b7b65b9d91205b", null ], + [ "$mesg", "class_team_speak3___adapter___server_query___event.html#a5486d8a3491e6096e4fdfd39ea2149d6", null ] +]; \ No newline at end of file diff --git a/lib/docs/html/class_team_speak3___adapter___server_query___event.png b/lib/docs/html/class_team_speak3___adapter___server_query___event.png new file mode 100644 index 0000000000000000000000000000000000000000..0882b1228b74494bc950d1e43b0aa7f076dcaa63 GIT binary patch literal 757 zcmeAS@N?(olHy`uVBq!ia0y~yU}OZc12~w0q~3G`O&}!^;1lBd|Nnm=^ZxVCUR8T1 z09jys;J|^IzT0L2xf~@ye!&btMIdnXREQA+15=Bqi(^Oy9Wg!KP^G&i(IaLia!aQk^(fnW&GfVmtsN%AiQJaX@y&#|}v z5(~6v!Rl+Fq2G7*9EfFzaeH9Kpl8FnYE`)a=L81M2?r)ObeuTF)ZqP zS2H#A72TS4RwH9muk+q@TaRlL*JEw^!562Cmqo(%nHt2rqI4iee&u&Zh=(7$CEN2%vGN|8YeWE?^Mr4??b2<>dpKl7%&Wyy&TZ?ge&5t| zeQ)LJd1>#PzQk9B)HCrU_WJwmHB-3aT-X?r_dexeaQt6w&*1aroshk6 z!s5CY*GzrhF*d9}{p+W=a@{Stiuy)#PKE>Roh%*=EFKR$9b8gU|1zt@&-IF!nePlt OqYR#|elF{r5}E)2k54@S literal 0 HcmV?d00001 diff --git a/lib/docs/html/class_team_speak3___adapter___server_query___exception-members.html b/lib/docs/html/class_team_speak3___adapter___server_query___exception-members.html new file mode 100644 index 0000000..9782f5e --- /dev/null +++ b/lib/docs/html/class_team_speak3___adapter___server_query___exception-members.html @@ -0,0 +1,132 @@ + + + + + + +TeamSpeak 3 PHP Framework: Member List + + + + + + + + + + + + + +
+
+ + + + + + + +
+
TeamSpeak 3 PHP Framework +  1.1.23 +
+
Copyright © Planet TeamSpeak. All rights reserved.
+
+
+ + + + + +
+
+ +
+
+
+ +
+ + + + +
+ +
+ +
+
+
TeamSpeak3_Adapter_ServerQuery_Exception Member List
+
+
+ +

This is the complete list of members for TeamSpeak3_Adapter_ServerQuery_Exception, including all inherited members.

+ + + + + + + +
$messages (defined in TeamSpeak3_Exception)TeamSpeak3_Exceptionprotectedstatic
__construct($mesg, $code=0x00)TeamSpeak3_Exception
getSender()TeamSpeak3_Exception
prepareCustomMessage(TeamSpeak3_Helper_String $mesg)TeamSpeak3_Exceptionprotected
registerCustomMessage($code, $mesg)TeamSpeak3_Exceptionstatic
unregisterCustomMessage($code)TeamSpeak3_Exceptionstatic
+
+ + + + diff --git a/lib/docs/html/class_team_speak3___adapter___server_query___exception.html b/lib/docs/html/class_team_speak3___adapter___server_query___exception.html new file mode 100644 index 0000000..dce41e4 --- /dev/null +++ b/lib/docs/html/class_team_speak3___adapter___server_query___exception.html @@ -0,0 +1,377 @@ + + + + + + +TeamSpeak 3 PHP Framework: TeamSpeak3_Adapter_ServerQuery_Exception Class Reference + + + + + + + + + + + + + +
+
+ + + + + + + +
+
TeamSpeak 3 PHP Framework +  1.1.23 +
+
Copyright © Planet TeamSpeak. All rights reserved.
+
+
+ + + + + +
+
+ +
+
+
+ +
+ + + + +
+ +
+ + +
+ +

Enhanced exception class for TeamSpeak3_Adapter_ServerQuery objects. + More...

+
+ + Inheritance diagram for TeamSpeak3_Adapter_ServerQuery_Exception:
+
+
+ + + + + + +

+Public Member Functions

 getSender ()
 Returns the class from which the exception was thrown. More...
 
+ + + + + + + +

+Static Public Member Functions

static registerCustomMessage ($code, $mesg)
 Registers a custom error message to $code. More...
 
static unregisterCustomMessage ($code)
 Unregisters a custom error message from $code. More...
 
+ + + + +

+Protected Member Functions

 prepareCustomMessage (TeamSpeak3_Helper_String $mesg)
 Prepares a custom error message by replacing pre-defined signs with given values. More...
 
+ + + +

+Static Protected Attributes

+static $messages = array()
 
+

Detailed Description

+

Enhanced exception class for TeamSpeak3_Adapter_ServerQuery objects.

+ +

Definition at line 32 of file Exception.php.

+

Member Function Documentation

+ +
+
+ + + + + +
+ + + + + + + + +
TeamSpeak3_Exception::prepareCustomMessage (TeamSpeak3_Helper_String $mesg)
+
+protectedinherited
+
+ +

Prepares a custom error message by replacing pre-defined signs with given values.

+
Parameters
+ + +
TeamSpeak3_Helper_String$mesg
+
+
+
Returns
TeamSpeak3_Helper_String
+ +

Definition at line 66 of file Exception.php.

+ +

References TeamSpeak3_Helper_String\arg().

+ +

Referenced by TeamSpeak3_Exception\__construct().

+
67  {
+
68  $args = array(
+
69  "code" => $this->getCode(),
+
70  "mesg" => $this->getMessage(),
+
71  "line" => $this->getLine(),
+
72  "file" => $this->getFile(),
+
73  );
+
74 
+
75  return $mesg->arg($args)->toString();
+
76  }
+
+
+
+ +
+
+ + + + + +
+ + + + + + + + + + + + + + + + + + +
static TeamSpeak3_Exception::registerCustomMessage ( $code,
 $mesg 
)
+
+staticinherited
+
+ +

Registers a custom error message to $code.

+
Parameters
+ + + +
integer$code
string$mesg
+
+
+
Exceptions
+ + +
TeamSpeak3_Exception
+
+
+
Returns
void
+ +

Definition at line 86 of file Exception.php.

+
87  {
+
88  if(array_key_exists((int) $code, self::$messages))
+
89  {
+
90  throw new self("custom message for code 0x" . strtoupper(dechex($code)) . " is already registered");
+
91  }
+
92 
+
93  if(!is_string($mesg))
+
94  {
+
95  throw new self("custom message for code 0x" . strtoupper(dechex($code)) . " must be a string");
+
96  }
+
97 
+
98  self::$messages[(int) $code] = new TeamSpeak3_Helper_String($mesg);
+
99  }
+
+
+
+ +
+
+ + + + + +
+ + + + + + + + +
static TeamSpeak3_Exception::unregisterCustomMessage ( $code)
+
+staticinherited
+
+ +

Unregisters a custom error message from $code.

+
Parameters
+ + +
integer$code
+
+
+
Exceptions
+ + +
TeamSpeak3_Exception
+
+
+
Returns
void
+ +

Definition at line 108 of file Exception.php.

+
109  {
+
110  if(!array_key_exists((int) $code, self::$messages))
+
111  {
+
112  throw new self("custom message for code 0x" . strtoupper(dechex($code)) . " is not registered");
+
113  }
+
114 
+
115  unset(self::$messages[intval($code)]);
+
116  }
+
+
+
+ +
+
+ + + + + +
+ + + + + + + +
TeamSpeak3_Exception::getSender ()
+
+inherited
+
+ +

Returns the class from which the exception was thrown.

+
Returns
string
+ +

Definition at line 123 of file Exception.php.

+
124  {
+
125  $trace = $this->getTrace();
+
126 
+
127  return (isset($trace[0]["class"])) ? $trace[0]["class"] : "{main}";
+
128  }
+
+
+
+
The documentation for this class was generated from the following file: +
+
+ + + + diff --git a/lib/docs/html/class_team_speak3___adapter___server_query___exception.js b/lib/docs/html/class_team_speak3___adapter___server_query___exception.js new file mode 100644 index 0000000..c13abf4 --- /dev/null +++ b/lib/docs/html/class_team_speak3___adapter___server_query___exception.js @@ -0,0 +1,5 @@ +var class_team_speak3___adapter___server_query___exception = +[ + [ "prepareCustomMessage", "class_team_speak3___adapter___server_query___exception.html#a3bfcdf7b85a393b7a8b05b048ae3279c", null ], + [ "getSender", "class_team_speak3___adapter___server_query___exception.html#ae7d4b369dd11d3cf56d120acae0cf1db", null ] +]; \ No newline at end of file diff --git a/lib/docs/html/class_team_speak3___adapter___server_query___exception.png b/lib/docs/html/class_team_speak3___adapter___server_query___exception.png new file mode 100644 index 0000000000000000000000000000000000000000..50e985332bdefed4b8a19a668cf372617d9a30c9 GIT binary patch literal 1817 zcmb`Ik2lk69LK*)q2iXS*hH=w?vBVRxzSXt&17O!e$(6(GeUm7E8yjF88lQ7aXvqcB|Kjm@C4>ehxKzDH zban&4OAJyRWZNU?FJ(WGwFQx%*F|Y*%w{z| z7OIi7Jdr_hg+3!|TvC`|DP3o-H^bBKR=)4#T=`JpXASTMxaQsfq7&wK0|5pDl{$fE zCgzgha5bbc{OPxFRm05@iAS>4fM#`lU^~y@CgkPZY+eu$QvppwYaa|&4lot~9>kq# z1_A&|RQtX*T+J7Gk%{DLLwCF*LLGNA4`IJaZJL4t*;)F5%h?>N!H9D#N7AE&m?R&! z3hcqgQ*3s4JWNe#$WWkzP9s@rDdgGc=5x3n#lBd zwUm=iRxjjlYuclittj?$2_e~0)-RXg3%FPUy^PnJ3413ZB$f^r{jkajypNJl66L}Y z1Umip?%M9l9^zIn^O{roGX4>J`*^>@qYBN#HI(t7QmlTzQQz?WYj0Nk4TT3nOz$)Z zKioa4HKY>K#m$;r%85Q3axhy`_`2@K2)FsD372RpUroxdP|WzC=+|=Y($+IqA0uE= zmo7ST{NhFh6yMao;YvfSZv*3@&GPwLDJ3AhP37bk3pxo{OiHSNrRgD+19}B#m=FdY z1r&+41UR4o>K>)hg!_@Y{&cbo2ul&R@? z-$B^ZDd8M|w;nZxMJ@8l5?5a2`dn?!&r{-Z5@NDc;ki=8kTA{e%Evyz{LQa*dy9&W zV7rXQbn0T3VJ*qOq{`u4hEIH%Hu)9pD~}mrcf{#+@zu2-Zi(H@p%(W3M|-L zOARe~Vbb%`b_kvEYH%5jnzN1$6B;bIuF8gXd<1!F$nj^7LRv61&p*%a-gP(rz`JJQ z2hRHWe1(WHw5Lz8Oc2mVU+|VXIw9EzcEKS#h(j9K#Wueq55WUAlov4&M`jqlt{G&h z__F?ZyEB602?3j0J;Ya78hsT+vayN>V zJ-td8x;`zIE{yR*(b-ux>X&GbNdvh>)1z0K7N0;D3Eq{xJzZB~>gy7Z-5`*3I_yb7 z_gS|dUAOIcQ0U(uK{S3ALkN5YO(qz>W6J#4qe$DIgcG4M`Bi2+sfSF{?qgD|n$4uG zDSBBj_1pc7Kvc5K?*hAJd)S4LUAphDco&{utl97`@!`;C7xu-l*Z=l + + + + + +TeamSpeak 3 PHP Framework: Member List + + + + + + + + + + + + + +
+
+ + + + + + + +
+
TeamSpeak 3 PHP Framework +  1.1.23 +
+
Copyright © Planet TeamSpeak. All rights reserved.
+
+
+ + + + + +
+
+ +
+
+
+ +
+ + + + +
+ +
+ +
+
+
TeamSpeak3_Adapter_ServerQuery_Reply Member List
+
+ +
+ + + + diff --git a/lib/docs/html/class_team_speak3___adapter___server_query___reply.html b/lib/docs/html/class_team_speak3___adapter___server_query___reply.html new file mode 100644 index 0000000..f1485eb --- /dev/null +++ b/lib/docs/html/class_team_speak3___adapter___server_query___reply.html @@ -0,0 +1,762 @@ + + + + + + +TeamSpeak 3 PHP Framework: TeamSpeak3_Adapter_ServerQuery_Reply Class Reference + + + + + + + + + + + + + +
+
+ + + + + + + +
+
TeamSpeak 3 PHP Framework +  1.1.23 +
+
Copyright © Planet TeamSpeak. All rights reserved.
+
+
+ + + + + +
+
+ +
+
+
+ +
+ + + + +
+ +
+ +
+ +
+
TeamSpeak3_Adapter_ServerQuery_Reply Class Reference
+
+
+ +

Provides methods to analyze and format a ServerQuery reply. + More...

+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +

+Public Member Functions

 __construct (array $rpl, $cmd=null, TeamSpeak3_Node_Host $con=null, $exp=TRUE)
 Creates a new TeamSpeak3_Adapter_ServerQuery_Reply object. More...
 
 toString ()
 Returns the reply as an TeamSpeak3_Helper_String object. More...
 
 toLines ()
 Returns the reply as a standard PHP array where each element represents one item. More...
 
 toTable ()
 Returns the reply as a standard PHP array where each element represents one item in table format. More...
 
 toArray ()
 Returns a multi-dimensional array containing the reply splitted in multiple rows and columns. More...
 
 toAssocArray ($ident)
 Returns a multi-dimensional assoc array containing the reply splitted in multiple rows and columns. More...
 
 toList ()
 Returns an array containing the reply splitted in multiple rows and columns. More...
 
 toObjectArray ()
 Returns an array containing stdClass objects. More...
 
 getCommandString ()
 Returns the command used to get this reply. More...
 
 getNotifyEvents ()
 Returns an array of events that occured before or during this reply. More...
 
 getErrorProperty ($ident, $default=null)
 Returns the value for a specified error property. More...
 
+ + + + + + + +

+Protected Member Functions

 fetchError ($err)
 Parses a ServerQuery error and throws a TeamSpeak3_Adapter_ServerQuery_Exception object if there's an error. More...
 
 fetchReply ($rpl)
 Parses a ServerQuery reply and creates a TeamSpeak3_Helper_String object. More...
 
+ + + + + + + + + + + + + +

+Protected Attributes

$cmd = null
 
$rpl = null
 
$con = null
 
$err = array()
 
$evt = array()
 
$exp = TRUE
 
+

Detailed Description

+

Provides methods to analyze and format a ServerQuery reply.

+ +

Definition at line 32 of file Reply.php.

+

Constructor & Destructor Documentation

+ +
+
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
TeamSpeak3_Adapter_ServerQuery_Reply::__construct (array $rpl,
 $cmd = null,
TeamSpeak3_Node_Host $con = null,
 $exp = TRUE 
)
+
+ +

Creates a new TeamSpeak3_Adapter_ServerQuery_Reply object.

+
Parameters
+ + + + + +
array$rpl
string$cmd
boolean$exp
TeamSpeak3_Node_Host$con
+
+
+
Returns
TeamSpeak3_Adapter_ServerQuery_Reply
+ +

Definition at line 85 of file Reply.php.

+ +

References fetchError(), and fetchReply().

+
86  {
+
87  $this->cmd = new TeamSpeak3_Helper_String($cmd);
+
88  $this->con = $con;
+
89  $this->exp = (bool) $exp;
+
90 
+
91  $this->fetchError(array_pop($rpl));
+
92  $this->fetchReply($rpl);
+
93  }
+
+
+
+

Member Function Documentation

+ +
+
+ + + + + + + +
TeamSpeak3_Adapter_ServerQuery_Reply::toString ()
+
+ +

Returns the reply as an TeamSpeak3_Helper_String object.

+
Returns
TeamSpeak3_Helper_String
+ +

Definition at line 100 of file Reply.php.

+ +

Referenced by toAssocArray(), and toLines().

+
101  {
+
102  return (!func_num_args()) ? $this->rpl->unescape() : $this->rpl;
+
103  }
+
+
+
+ +
+
+ + + + + + + +
TeamSpeak3_Adapter_ServerQuery_Reply::toLines ()
+
+ +

Returns the reply as a standard PHP array where each element represents one item.

+
Returns
array
+ +

Definition at line 110 of file Reply.php.

+ +

References TeamSpeak3\SEPARATOR_LIST, and toString().

+ +

Referenced by toTable().

+
111  {
+
112  if(!count($this->rpl)) return array();
+
113 
+
114  $list = $this->toString(0)->split(TeamSpeak3::SEPARATOR_LIST);
+
115 
+
116  if(!func_num_args())
+
117  {
+
118  for($i = 0; $i < count($list); $i++) $list[$i]->unescape();
+
119  }
+
120 
+
121  return $list;
+
122  }
+
+
+
+ +
+
+ + + + + + + +
TeamSpeak3_Adapter_ServerQuery_Reply::toTable ()
+
+ +

Returns the reply as a standard PHP array where each element represents one item in table format.

+
Returns
array
+ +

Definition at line 129 of file Reply.php.

+ +

References TeamSpeak3\SEPARATOR_CELL, and toLines().

+ +

Referenced by toArray().

+
130  {
+
131  $table = array();
+
132 
+
133  foreach($this->toLines(0) as $cells)
+
134  {
+
135  $pairs = $cells->split(TeamSpeak3::SEPARATOR_CELL);
+
136 
+
137  if(!func_num_args())
+
138  {
+
139  for($i = 0; $i < count($pairs); $i++) $pairs[$i]->unescape();
+
140  }
+
141 
+
142  $table[] = $pairs;
+
143  }
+
144 
+
145  return $table;
+
146  }
+
+
+
+ +
+
+ + + + + + + +
TeamSpeak3_Adapter_ServerQuery_Reply::toArray ()
+
+ +

Returns a multi-dimensional array containing the reply splitted in multiple rows and columns.

+
Returns
array
+ +

Definition at line 153 of file Reply.php.

+ +

References TeamSpeak3\SEPARATOR_PAIR, and toTable().

+ +

Referenced by toAssocArray(), toList(), and toObjectArray().

+
154  {
+
155  $array = array();
+
156  $table = $this->toTable(1);
+
157 
+
158  for($i = 0; $i < count($table); $i++)
+
159  {
+
160  foreach($table[$i] as $pair)
+
161  {
+
162  if(!count($pair))
+
163  {
+
164  continue;
+
165  }
+
166 
+
167  if(!$pair->contains(TeamSpeak3::SEPARATOR_PAIR))
+
168  {
+
169  $array[$i][$pair->toString()] = null;
+
170  }
+
171  else
+
172  {
+
173  list($ident, $value) = $pair->split(TeamSpeak3::SEPARATOR_PAIR, 2);
+
174 
+
175  $array[$i][$ident->toString()] = $value->isInt() ? $value->toInt() : (!func_num_args() ? $value->unescape() : $value);
+
176  }
+
177  }
+
178  }
+
179 
+
180  return $array;
+
181  }
+
+
+
+ +
+
+ + + + + + + + +
TeamSpeak3_Adapter_ServerQuery_Reply::toAssocArray ( $ident)
+
+ +

Returns a multi-dimensional assoc array containing the reply splitted in multiple rows and columns.

+

The identifier specified by key will be used while indexing the array.

+
Parameters
+ + +
$key
+
+
+
Returns
array
+ +

Definition at line 190 of file Reply.php.

+ +

References toArray(), and toString().

+
191  {
+
192  $nodes = (func_num_args() > 1) ? $this->toArray(1) : $this->toArray();
+
193  $array = array();
+
194 
+
195  foreach($nodes as $node)
+
196  {
+
197  if(array_key_exists($ident, $node))
+
198  {
+
199  $array[(is_object($node[$ident])) ? $node[$ident]->toString() : $node[$ident]] = $node;
+
200  }
+
201  else
+
202  {
+
203  throw new TeamSpeak3_Adapter_ServerQuery_Exception("invalid parameter", 0x602);
+
204  }
+
205  }
+
206 
+
207  return $array;
+
208  }
+
+
+
+ +
+
+ + + + + + + +
TeamSpeak3_Adapter_ServerQuery_Reply::toList ()
+
+ +

Returns an array containing the reply splitted in multiple rows and columns.

+
Returns
array
+ +

Definition at line 215 of file Reply.php.

+ +

References toArray().

+
216  {
+
217  $array = func_num_args() ? $this->toArray(1) : $this->toArray();
+
218 
+
219  if(count($array) == 1)
+
220  {
+
221  return array_shift($array);
+
222  }
+
223 
+
224  return $array;
+
225  }
+
+
+
+ +
+
+ + + + + + + +
TeamSpeak3_Adapter_ServerQuery_Reply::toObjectArray ()
+
+ +

Returns an array containing stdClass objects.

+
Returns
ArrayObject
+ +

Definition at line 232 of file Reply.php.

+ +

References toArray().

+
233  {
+
234  $array = (func_num_args() > 1) ? $this->toArray(1) : $this->toArray();
+
235 
+
236  for($i = 0; $i < count($array); $i++)
+
237  {
+
238  $array[$i] = (object) $array[$i];
+
239  }
+
240 
+
241  return $array;
+
242  }
+
+
+
+ +
+
+ + + + + + + +
TeamSpeak3_Adapter_ServerQuery_Reply::getCommandString ()
+
+ +

Returns the command used to get this reply.

+
Returns
TeamSpeak3_Helper_String
+ +

Definition at line 249 of file Reply.php.

+
250  {
+
251  return new TeamSpeak3_Helper_String($this->cmd);
+
252  }
+
+
+
+ +
+
+ + + + + + + +
TeamSpeak3_Adapter_ServerQuery_Reply::getNotifyEvents ()
+
+ +

Returns an array of events that occured before or during this reply.

+
Returns
array
+ +

Definition at line 259 of file Reply.php.

+
260  {
+
261  return $this->evt;
+
262  }
+
+
+
+ +
+
+ + + + + + + + + + + + + + + + + + +
TeamSpeak3_Adapter_ServerQuery_Reply::getErrorProperty ( $ident,
 $default = null 
)
+
+ +

Returns the value for a specified error property.

+
Parameters
+ + + +
string$ident
mixed$default
+
+
+
Returns
mixed
+ +

Definition at line 271 of file Reply.php.

+ +

Referenced by fetchError().

+
272  {
+
273  return (array_key_exists($ident, $this->err)) ? $this->err[$ident] : $default;
+
274  }
+
+
+
+ +
+
+ + + + + +
+ + + + + + + + +
TeamSpeak3_Adapter_ServerQuery_Reply::fetchError ( $err)
+
+protected
+
+ +

Parses a ServerQuery error and throws a TeamSpeak3_Adapter_ServerQuery_Exception object if there's an error.

+
Parameters
+ + +
string$err
+
+
+
Exceptions
+ + +
TeamSpeak3_Adapter_ServerQuery_Exception
+
+
+
Returns
void
+ +

Definition at line 284 of file Reply.php.

+ +

References getErrorProperty(), TeamSpeak3_Helper_Signal\getInstance(), TeamSpeak3\SEPARATOR_CELL, and TeamSpeak3\SEPARATOR_PAIR.

+ +

Referenced by __construct().

+
285  {
+
286  $cells = $err->section(TeamSpeak3::SEPARATOR_CELL, 1, 3);
+
287 
+
288  foreach($cells->split(TeamSpeak3::SEPARATOR_CELL) as $pair)
+
289  {
+
290  list($ident, $value) = $pair->split(TeamSpeak3::SEPARATOR_PAIR);
+
291 
+
292  $this->err[$ident->toString()] = $value->isInt() ? $value->toInt() : $value->unescape();
+
293  }
+
294 
+
295  TeamSpeak3_Helper_Signal::getInstance()->emit("notifyError", $this);
+
296 
+
297  if($this->getErrorProperty("id", 0x00) != 0x00 && $this->exp)
+
298  {
+
299  if($permid = $this->getErrorProperty("failed_permid"))
+
300  {
+
301  if($permsid = key($this->con->request("permget permid=" . $permid, FALSE)->toAssocArray("permsid")))
+
302  {
+
303  $suffix = " (failed on " . $permsid . ")";
+
304  }
+
305  else
+
306  {
+
307  $suffix = " (failed on " . $this->cmd->section(TeamSpeak3::SEPARATOR_CELL) . " " . $permid . "/0x" . strtoupper(dechex($permid)) . ")";
+
308  }
+
309  }
+
310  elseif($details = $this->getErrorProperty("extra_msg"))
+
311  {
+
312  $suffix = " (" . trim($details) . ")";
+
313  }
+
314  else
+
315  {
+
316  $suffix = "";
+
317  }
+
318 
+
319  throw new TeamSpeak3_Adapter_ServerQuery_Exception($this->getErrorProperty("msg") . $suffix, $this->getErrorProperty("id"));
+
320  }
+
321  }
+
+
+
+ +
+
+ + + + + +
+ + + + + + + + +
TeamSpeak3_Adapter_ServerQuery_Reply::fetchReply ( $rpl)
+
+protected
+
+ +

Parses a ServerQuery reply and creates a TeamSpeak3_Helper_String object.

+
Parameters
+ + +
string$rpl
+
+
+
Returns
void
+ +

Definition at line 329 of file Reply.php.

+ +

References TeamSpeak3\EVENT, TeamSpeak3\GREET, and TeamSpeak3\SEPARATOR_LIST.

+ +

Referenced by __construct().

+
330  {
+
331  foreach($rpl as $key => $val)
+
332  {
+
333  if($val->startsWith(TeamSpeak3::GREET))
+
334  {
+
335  unset($rpl[$key]);
+
336  }
+
337  elseif($val->startsWith(TeamSpeak3::EVENT))
+
338  {
+
339  $this->evt[] = new TeamSpeak3_Adapter_ServerQuery_Event($rpl[$key], $this->con);
+
340  unset($rpl[$key]);
+
341  }
+
342  }
+
343 
+
344  $this->rpl = new TeamSpeak3_Helper_String(implode(TeamSpeak3::SEPARATOR_LIST, $rpl));
+
345  }
+
+
+
+
The documentation for this class was generated from the following file: +
+
+ + + + diff --git a/lib/docs/html/class_team_speak3___adapter___server_query___reply.js b/lib/docs/html/class_team_speak3___adapter___server_query___reply.js new file mode 100644 index 0000000..4ad32ad --- /dev/null +++ b/lib/docs/html/class_team_speak3___adapter___server_query___reply.js @@ -0,0 +1,22 @@ +var class_team_speak3___adapter___server_query___reply = +[ + [ "__construct", "class_team_speak3___adapter___server_query___reply.html#abe1a1d307cebcdcd28dfbf9aa9323366", null ], + [ "toString", "class_team_speak3___adapter___server_query___reply.html#ab5d3913ad84e8fed62c0abe93eb442ee", null ], + [ "toLines", "class_team_speak3___adapter___server_query___reply.html#a7bc11136eadd47197965af56e562ba05", null ], + [ "toTable", "class_team_speak3___adapter___server_query___reply.html#a807bfd4ee64768a8d329cf98e539272d", null ], + [ "toArray", "class_team_speak3___adapter___server_query___reply.html#adafc81235a78cff6fdd21e32266dc83e", null ], + [ "toAssocArray", "class_team_speak3___adapter___server_query___reply.html#a697c2727c161d53dfd7b46ab3ba63395", null ], + [ "toList", "class_team_speak3___adapter___server_query___reply.html#a6e92cc7ce61c856c87fb286ee116ff0b", null ], + [ "toObjectArray", "class_team_speak3___adapter___server_query___reply.html#a38c121c24afb5ace90f0fe742a16ae0c", null ], + [ "getCommandString", "class_team_speak3___adapter___server_query___reply.html#a9084e31d5fe7e0dcc7a4247662578935", null ], + [ "getNotifyEvents", "class_team_speak3___adapter___server_query___reply.html#a2810d0ec7a80446851fd9af783eaadb1", null ], + [ "getErrorProperty", "class_team_speak3___adapter___server_query___reply.html#a1a681042ce8d5d653d77a1f7db8cdc42", null ], + [ "fetchError", "class_team_speak3___adapter___server_query___reply.html#a1f7f7344c8059b9b591e05ea30b352ad", null ], + [ "fetchReply", "class_team_speak3___adapter___server_query___reply.html#ab6891908584fcfb9cd14bda568eeb51d", null ], + [ "$cmd", "class_team_speak3___adapter___server_query___reply.html#ad877781490287318a2d4ac8b39dafd47", null ], + [ "$rpl", "class_team_speak3___adapter___server_query___reply.html#ab2364d1752a2793f0f507d5ad182466f", null ], + [ "$con", "class_team_speak3___adapter___server_query___reply.html#a2cdd115c2240dfbb14ea86262125b703", null ], + [ "$err", "class_team_speak3___adapter___server_query___reply.html#a34bf1240e1057fc75b9ab65707fcf60c", null ], + [ "$evt", "class_team_speak3___adapter___server_query___reply.html#a9925fa2fcaa8c093d7e083c94f89af3b", null ], + [ "$exp", "class_team_speak3___adapter___server_query___reply.html#ae32d5d30bc966b9872cc63968a503253", null ] +]; \ No newline at end of file diff --git a/lib/docs/html/class_team_speak3___adapter___t_s_d_n_s-members.html b/lib/docs/html/class_team_speak3___adapter___t_s_d_n_s-members.html new file mode 100644 index 0000000..c68e505 --- /dev/null +++ b/lib/docs/html/class_team_speak3___adapter___t_s_d_n_s-members.html @@ -0,0 +1,140 @@ + + + + + + +TeamSpeak 3 PHP Framework: Member List + + + + + + + + + + + + + +
+
+ + + + + + + +
+
TeamSpeak 3 PHP Framework +  1.1.23 +
+
Copyright © Planet TeamSpeak. All rights reserved.
+
+
+ + + + + +
+
+ +
+
+
+ + + + + + diff --git a/lib/docs/html/class_team_speak3___adapter___t_s_d_n_s.html b/lib/docs/html/class_team_speak3___adapter___t_s_d_n_s.html new file mode 100644 index 0000000..bff52bd --- /dev/null +++ b/lib/docs/html/class_team_speak3___adapter___t_s_d_n_s.html @@ -0,0 +1,576 @@ + + + + + + +TeamSpeak 3 PHP Framework: TeamSpeak3_Adapter_TSDNS Class Reference + + + + + + + + + + + + + +
+
+ + + + + + + +
+
TeamSpeak 3 PHP Framework +  1.1.23 +
+
Copyright © Planet TeamSpeak. All rights reserved.
+
+
+ + + + + +
+
+ +
+
+
+ +
+ + + + +
+ +
+ +
+ +
+
TeamSpeak3_Adapter_TSDNS Class Reference
+
+
+ +

Provides methods to query a TSDNS server. + More...

+
+ + Inheritance diagram for TeamSpeak3_Adapter_TSDNS:
+
+
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +

+Public Member Functions

 syn ()
 Connects the TeamSpeak3_Transport_Abstract object and performs initial actions on the remote server. More...
 
 __destruct ()
 The TeamSpeak3_Adapter_FileTransfer destructor. More...
 
 resolve ($tsdns)
 Queries the TSDNS server for a specified virtual hostname and returns the result. More...
 
 __sleep ()
 Commit pending data. More...
 
 __wakeup ()
 Reconnects to the remote server. More...
 
 getProfiler ()
 Returns the profiler timer used for this connection adapter. More...
 
 getTransport ()
 Returns the transport object used for this connection adapter. More...
 
 getTransportHost ()
 Returns the hostname or IPv4 address the underlying TeamSpeak3_Transport_Abstract object is connected to. More...
 
 getTransportPort ()
 Returns the port number of the server the underlying TeamSpeak3_Transport_Abstract object is connected to. More...
 
+ + + + +

+Protected Member Functions

 initTransport ($options, $transport="TeamSpeak3_Transport_TCP")
 Loads the transport object object used for the connection adapter and passes a given set of options. More...
 
+ + + + + + + +

+Protected Attributes

$default_port = 41144
 
$options = null
 
$transport = null
 
+

Detailed Description

+

Provides methods to query a TSDNS server.

+ +

Definition at line 32 of file TSDNS.php.

+

Constructor & Destructor Documentation

+ +
+
+ + + + + + + +
TeamSpeak3_Adapter_TSDNS::__destruct ()
+
+ +

The TeamSpeak3_Adapter_FileTransfer destructor.

+
Returns
void
+ +

Definition at line 65 of file TSDNS.php.

+ +

References TeamSpeak3_Adapter_Abstract\getTransport().

+
66  {
+
67  if($this->getTransport() instanceof TeamSpeak3_Transport_Abstract && $this->getTransport()->isConnected())
+
68  {
+
69  $this->getTransport()->disconnect();
+
70  }
+
71  }
+
+
+
+

Member Function Documentation

+ +
+
+ + + + + + + +
TeamSpeak3_Adapter_TSDNS::syn ()
+
+ +

Connects the TeamSpeak3_Transport_Abstract object and performs initial actions on the remote server.

+
Exceptions
+ + +
TeamSpeak3_Adapter_Exception
+
+
+
Returns
void
+ +

Definition at line 48 of file TSDNS.php.

+ +

References TeamSpeak3_Helper_Signal\getInstance(), TeamSpeak3_Helper_Profiler\init(), and TeamSpeak3_Adapter_Abstract\initTransport().

+
49  {
+
50  if(!isset($this->options["port"]) || empty($this->options["port"])) $this->options["port"] = $this->default_port;
+
51 
+
52  $this->initTransport($this->options);
+
53  $this->transport->setAdapter($this);
+
54 
+
55  TeamSpeak3_Helper_Profiler::init(spl_object_hash($this));
+
56 
+
57  TeamSpeak3_Helper_Signal::getInstance()->emit("tsdnsConnected", $this);
+
58  }
+
+
+
+ +
+
+ + + + + + + + +
TeamSpeak3_Adapter_TSDNS::resolve ( $tsdns)
+
+ +

Queries the TSDNS server for a specified virtual hostname and returns the result.

+
Parameters
+ + +
string$tsdns
+
+
+
Exceptions
+ + +
TeamSpeak3_Adapter_TSDNS_Exception
+
+
+
Returns
TeamSpeak3_Helper_String
+ +

Definition at line 80 of file TSDNS.php.

+ +

References TeamSpeak3_Helper_Signal\getInstance(), and TeamSpeak3_Adapter_Abstract\getTransport().

+
81  {
+
82  $this->getTransport()->sendLine($tsdns);
+
83  $repl = $this->getTransport()->readLine();
+
84  $this->getTransport()->disconnect();
+
85 
+
86  if($repl->section(":", 0)->toInt() == 404)
+
87  {
+
88  throw new TeamSpeak3_Adapter_TSDNS_Exception("unable to resolve TSDNS hostname (" . $tsdns . ")");
+
89  }
+
90 
+
91  TeamSpeak3_Helper_Signal::getInstance()->emit("tsdnsResolved", $tsdns, $repl);
+
92 
+
93  return $repl;
+
94  }
+
+
+
+ +
+
+ + + + + +
+ + + + + + + +
TeamSpeak3_Adapter_Abstract::__sleep ()
+
+inherited
+
+ +

Commit pending data.

+
Returns
array
+ +

Definition at line 85 of file Abstract.php.

+
86  {
+
87  return array("options");
+
88  }
+
+
+
+ +
+
+ + + + + +
+ + + + + + + +
TeamSpeak3_Adapter_Abstract::__wakeup ()
+
+inherited
+
+ +

Reconnects to the remote server.

+
Returns
void
+ +

Definition at line 95 of file Abstract.php.

+ +

References TeamSpeak3_Adapter_Abstract\syn().

+
96  {
+
97  $this->syn();
+
98  }
+
+
+
+ +
+
+ + + + + +
+ + + + + + + +
TeamSpeak3_Adapter_Abstract::getProfiler ()
+
+inherited
+
+ +

Returns the profiler timer used for this connection adapter.

+
Returns
TeamSpeak3_Helper_Profiler_Timer
+ +

Definition at line 105 of file Abstract.php.

+ +

References TeamSpeak3_Helper_Profiler\get().

+ +

Referenced by TeamSpeak3_Adapter_FileTransfer\download(), TeamSpeak3_Adapter_ServerQuery\getQueryRuntime(), TeamSpeak3_Adapter_FileTransfer\init(), TeamSpeak3_Adapter_ServerQuery\request(), and TeamSpeak3_Adapter_FileTransfer\upload().

+
106  {
+
107  return TeamSpeak3_Helper_Profiler::get(spl_object_hash($this));
+
108  }
+
+
+
+ + + +
+
+ + + + + +
+ + + + + + + + + + + + + + + + + + +
TeamSpeak3_Adapter_Abstract::initTransport ( $options,
 $transport = "TeamSpeak3_Transport_TCP" 
)
+
+protectedinherited
+
+ +

Loads the transport object object used for the connection adapter and passes a given set of options.

+
Parameters
+ + + +
array$options
string$transport
+
+
+
Exceptions
+ + +
TeamSpeak3_Adapter_Exception
+
+
+
Returns
void
+ +

Definition at line 129 of file Abstract.php.

+ +

Referenced by TeamSpeak3_Adapter_FileTransfer\syn(), syn(), TeamSpeak3_Adapter_Blacklist\syn(), TeamSpeak3_Adapter_ServerQuery\syn(), and TeamSpeak3_Adapter_Update\syn().

+
130  {
+
131  if(!is_array($options))
+
132  {
+
133  throw new TeamSpeak3_Adapter_Exception("transport parameters must provided in an array");
+
134  }
+
135 
+
136  $this->transport = new $transport($options);
+
137  }
+
+
+
+ +
+
+ + + + + +
+ + + + + + + +
TeamSpeak3_Adapter_Abstract::getTransportHost ()
+
+inherited
+
+ +

Returns the hostname or IPv4 address the underlying TeamSpeak3_Transport_Abstract object is connected to.

+
Returns
string
+ +

Definition at line 145 of file Abstract.php.

+ +

References TeamSpeak3_Adapter_Abstract\getTransport().

+
146  {
+
147  return $this->getTransport()->getConfig("host", "0.0.0.0");
+
148  }
+
+
+
+ +
+
+ + + + + +
+ + + + + + + +
TeamSpeak3_Adapter_Abstract::getTransportPort ()
+
+inherited
+
+ +

Returns the port number of the server the underlying TeamSpeak3_Transport_Abstract object is connected to.

+
Returns
string
+ +

Definition at line 156 of file Abstract.php.

+ +

References TeamSpeak3_Adapter_Abstract\getTransport().

+
157  {
+
158  return $this->getTransport()->getConfig("port", "0");
+
159  }
+
+
+
+
The documentation for this class was generated from the following file: +
+
+ + + + diff --git a/lib/docs/html/class_team_speak3___adapter___t_s_d_n_s.js b/lib/docs/html/class_team_speak3___adapter___t_s_d_n_s.js new file mode 100644 index 0000000..4b791ba --- /dev/null +++ b/lib/docs/html/class_team_speak3___adapter___t_s_d_n_s.js @@ -0,0 +1,16 @@ +var class_team_speak3___adapter___t_s_d_n_s = +[ + [ "__destruct", "class_team_speak3___adapter___t_s_d_n_s.html#ae37dd4961f9b941cf86f4dbc811b1ed2", null ], + [ "syn", "class_team_speak3___adapter___t_s_d_n_s.html#afa6858becde424aac96a14931b6b1d64", null ], + [ "resolve", "class_team_speak3___adapter___t_s_d_n_s.html#aa92c579a298da3aaa9e78bef922c484f", null ], + [ "__sleep", "class_team_speak3___adapter___t_s_d_n_s.html#afa29be26280db12e38aef59d90f7c6ac", null ], + [ "__wakeup", "class_team_speak3___adapter___t_s_d_n_s.html#aaa3c73f10edd73494087a7a523726a89", null ], + [ "getProfiler", "class_team_speak3___adapter___t_s_d_n_s.html#ab1bd002b22a8121e8efa5ab4ccd36fa5", null ], + [ "getTransport", "class_team_speak3___adapter___t_s_d_n_s.html#a538e98e6dcc6a2ad7fdcb4913f6f7c52", null ], + [ "initTransport", "class_team_speak3___adapter___t_s_d_n_s.html#a87920747e1eb4a25396c5b5e5567094b", null ], + [ "getTransportHost", "class_team_speak3___adapter___t_s_d_n_s.html#adcf5e760b6d6d3e42f11d8b1bc5d87cc", null ], + [ "getTransportPort", "class_team_speak3___adapter___t_s_d_n_s.html#a5eb0b19787ec6f719d8f19bcd7182461", null ], + [ "$default_port", "class_team_speak3___adapter___t_s_d_n_s.html#af8df959a8c1ea98eed074cc606362331", null ], + [ "$options", "class_team_speak3___adapter___t_s_d_n_s.html#a94b75d4f99ef639e5cb39e900d38e56a", null ], + [ "$transport", "class_team_speak3___adapter___t_s_d_n_s.html#a257acaf2793889d1e75364d40e7fa15d", null ] +]; \ No newline at end of file diff --git a/lib/docs/html/class_team_speak3___adapter___t_s_d_n_s.png b/lib/docs/html/class_team_speak3___adapter___t_s_d_n_s.png new file mode 100644 index 0000000000000000000000000000000000000000..490b101ac9c039f3681ab0aa9763e4aec5262de3 GIT binary patch literal 836 zcmeAS@N?(olHy`uVBq!ia0vp^`+zurgBeIpcw!$5q$C1-LR|m<{|{u|fBxC4YVQP) z90(scaA2nIwpl<{nLYd>c9tj9WhDyh~q)ap0*KtBevu>B2lF~xA-kl4# zuJDgN&mO+ca@*N_-*4}47T=!h*qf;vRQt=I?%ikBKXVShF59&^X1(~boe@(xIX=Xz zEuUyrvt7?VZwg!d-PLa;4M5jo#%g*V_oewg)e!g=0&UFfwsVBVJA zAr%{$v$-@rXVvysOMhlhx>UMqqg745&4KlsL)q4L=BcR|m)77d9ufW4&75b;+8`a_`H!^8?zm@9R8b`IZ&lyY*G@%_HyfZGCr?%KrO& zt@lvGpNhBJt@q6Q`S8|%ho^?S-w983chAwv3#iPB{qXwI6x+2n&%?Jb(0-+RsQyZA zgL>`PDgUko|6~6k@Av*=A@>K)zdPSB|B-@)+LyYHB~vb~`o&(rq5f9vr~hkUl4tOA L^>bP0l+XkK<_@Nv literal 0 HcmV?d00001 diff --git a/lib/docs/html/class_team_speak3___adapter___t_s_d_n_s___exception-members.html b/lib/docs/html/class_team_speak3___adapter___t_s_d_n_s___exception-members.html new file mode 100644 index 0000000..1da55c1 --- /dev/null +++ b/lib/docs/html/class_team_speak3___adapter___t_s_d_n_s___exception-members.html @@ -0,0 +1,132 @@ + + + + + + +TeamSpeak 3 PHP Framework: Member List + + + + + + + + + + + + + +
+
+ + + + + + + +
+
TeamSpeak 3 PHP Framework +  1.1.23 +
+
Copyright © Planet TeamSpeak. All rights reserved.
+
+
+ + + + + +
+
+ +
+
+
+ +
+ + + + +
+ +
+ +
+
+
TeamSpeak3_Adapter_TSDNS_Exception Member List
+
+
+ +

This is the complete list of members for TeamSpeak3_Adapter_TSDNS_Exception, including all inherited members.

+ + + + + + + +
$messages (defined in TeamSpeak3_Exception)TeamSpeak3_Exceptionprotectedstatic
__construct($mesg, $code=0x00)TeamSpeak3_Exception
getSender()TeamSpeak3_Exception
prepareCustomMessage(TeamSpeak3_Helper_String $mesg)TeamSpeak3_Exceptionprotected
registerCustomMessage($code, $mesg)TeamSpeak3_Exceptionstatic
unregisterCustomMessage($code)TeamSpeak3_Exceptionstatic
+
+ + + + diff --git a/lib/docs/html/class_team_speak3___adapter___t_s_d_n_s___exception.html b/lib/docs/html/class_team_speak3___adapter___t_s_d_n_s___exception.html new file mode 100644 index 0000000..1c2385b --- /dev/null +++ b/lib/docs/html/class_team_speak3___adapter___t_s_d_n_s___exception.html @@ -0,0 +1,377 @@ + + + + + + +TeamSpeak 3 PHP Framework: TeamSpeak3_Adapter_TSDNS_Exception Class Reference + + + + + + + + + + + + + +
+
+ + + + + + + +
+
TeamSpeak 3 PHP Framework +  1.1.23 +
+
Copyright © Planet TeamSpeak. All rights reserved.
+
+
+ + + + + +
+
+ +
+
+
+ +
+ + + + +
+ +
+ + +
+ +

Enhanced exception class for TeamSpeak3_Adapter_TSDNS objects. + More...

+
+ + Inheritance diagram for TeamSpeak3_Adapter_TSDNS_Exception:
+
+
+ + + + + + +

+Public Member Functions

 getSender ()
 Returns the class from which the exception was thrown. More...
 
+ + + + + + + +

+Static Public Member Functions

static registerCustomMessage ($code, $mesg)
 Registers a custom error message to $code. More...
 
static unregisterCustomMessage ($code)
 Unregisters a custom error message from $code. More...
 
+ + + + +

+Protected Member Functions

 prepareCustomMessage (TeamSpeak3_Helper_String $mesg)
 Prepares a custom error message by replacing pre-defined signs with given values. More...
 
+ + + +

+Static Protected Attributes

+static $messages = array()
 
+

Detailed Description

+

Enhanced exception class for TeamSpeak3_Adapter_TSDNS objects.

+ +

Definition at line 32 of file Exception.php.

+

Member Function Documentation

+ +
+
+ + + + + +
+ + + + + + + + +
TeamSpeak3_Exception::prepareCustomMessage (TeamSpeak3_Helper_String $mesg)
+
+protectedinherited
+
+ +

Prepares a custom error message by replacing pre-defined signs with given values.

+
Parameters
+ + +
TeamSpeak3_Helper_String$mesg
+
+
+
Returns
TeamSpeak3_Helper_String
+ +

Definition at line 66 of file Exception.php.

+ +

References TeamSpeak3_Helper_String\arg().

+ +

Referenced by TeamSpeak3_Exception\__construct().

+
67  {
+
68  $args = array(
+
69  "code" => $this->getCode(),
+
70  "mesg" => $this->getMessage(),
+
71  "line" => $this->getLine(),
+
72  "file" => $this->getFile(),
+
73  );
+
74 
+
75  return $mesg->arg($args)->toString();
+
76  }
+
+
+
+ +
+
+ + + + + +
+ + + + + + + + + + + + + + + + + + +
static TeamSpeak3_Exception::registerCustomMessage ( $code,
 $mesg 
)
+
+staticinherited
+
+ +

Registers a custom error message to $code.

+
Parameters
+ + + +
integer$code
string$mesg
+
+
+
Exceptions
+ + +
TeamSpeak3_Exception
+
+
+
Returns
void
+ +

Definition at line 86 of file Exception.php.

+
87  {
+
88  if(array_key_exists((int) $code, self::$messages))
+
89  {
+
90  throw new self("custom message for code 0x" . strtoupper(dechex($code)) . " is already registered");
+
91  }
+
92 
+
93  if(!is_string($mesg))
+
94  {
+
95  throw new self("custom message for code 0x" . strtoupper(dechex($code)) . " must be a string");
+
96  }
+
97 
+
98  self::$messages[(int) $code] = new TeamSpeak3_Helper_String($mesg);
+
99  }
+
+
+
+ +
+
+ + + + + +
+ + + + + + + + +
static TeamSpeak3_Exception::unregisterCustomMessage ( $code)
+
+staticinherited
+
+ +

Unregisters a custom error message from $code.

+
Parameters
+ + +
integer$code
+
+
+
Exceptions
+ + +
TeamSpeak3_Exception
+
+
+
Returns
void
+ +

Definition at line 108 of file Exception.php.

+
109  {
+
110  if(!array_key_exists((int) $code, self::$messages))
+
111  {
+
112  throw new self("custom message for code 0x" . strtoupper(dechex($code)) . " is not registered");
+
113  }
+
114 
+
115  unset(self::$messages[intval($code)]);
+
116  }
+
+
+
+ +
+
+ + + + + +
+ + + + + + + +
TeamSpeak3_Exception::getSender ()
+
+inherited
+
+ +

Returns the class from which the exception was thrown.

+
Returns
string
+ +

Definition at line 123 of file Exception.php.

+
124  {
+
125  $trace = $this->getTrace();
+
126 
+
127  return (isset($trace[0]["class"])) ? $trace[0]["class"] : "{main}";
+
128  }
+
+
+
+
The documentation for this class was generated from the following file: +
+
+ + + + diff --git a/lib/docs/html/class_team_speak3___adapter___t_s_d_n_s___exception.js b/lib/docs/html/class_team_speak3___adapter___t_s_d_n_s___exception.js new file mode 100644 index 0000000..ddf3d6f --- /dev/null +++ b/lib/docs/html/class_team_speak3___adapter___t_s_d_n_s___exception.js @@ -0,0 +1,5 @@ +var class_team_speak3___adapter___t_s_d_n_s___exception = +[ + [ "prepareCustomMessage", "class_team_speak3___adapter___t_s_d_n_s___exception.html#a3bfcdf7b85a393b7a8b05b048ae3279c", null ], + [ "getSender", "class_team_speak3___adapter___t_s_d_n_s___exception.html#ae7d4b369dd11d3cf56d120acae0cf1db", null ] +]; \ No newline at end of file diff --git a/lib/docs/html/class_team_speak3___adapter___t_s_d_n_s___exception.png b/lib/docs/html/class_team_speak3___adapter___t_s_d_n_s___exception.png new file mode 100644 index 0000000000000000000000000000000000000000..1d8db741fb8d3d531c0e4cba8f39168b3ed0a8f5 GIT binary patch literal 1517 zcmb7^{WlYO9LMMGW(nOyay_4GyOKO~9rLU>T#b;2k~CwEQJc}lJhV|M%)?}gbQ-mb zC9&;}VNBzCNQv8oVZ({it|150jcs?_f1vw4=k@-6zTflt>HYqk5Aj@pkLCgW0{{R( z6L!WcSb0m8@b&|h3RuPZDpl{?*-&qVLZK{Y7uS6=xp$S-9y}he(x3fM`P`op91sFf zHtn9VSE0WE0Q>MTFOSf4m1Rl-Zpl=`i$1XEwLQD$CsXO^CymyL(Y52+=BB5^zFVt^ z*2_&t+S(P?^+N3mse7_IP-RK0oP4svO*|+!V7wU`-jr)@K_%kN(s8Htb#&W{#nn-p z2^30NoQYsBQe1QHPegq*+5I47&QC`E7LI)Tee_W+JJ#x`!3ZwLE$=4)E_Mkbqa$q~ z%RQ5FGr@YUd;NlmNf%k6hOuLr$pllx1e6rDuMcXstp#CMhU@H!h?y6y*P}K^O9AH7 z9tc_^&a6BTr2U;Q^kA~cz}_Gv(CdHDd4ArJwAOnJ_V%8Dtm93zf(314NTTIsHBH0L z6{P<6-6^jb$v_yV#wK=qD6f9?WfWHN<+<+B8@?DX=($tI@G0@Mw`&gsyBQ zI8Db2-0LX$XZY)xD!4WFAd&8|uDW@_P4a41hil)UFpxrRNS&$ti1y;7w!so}MIggP zt-iMYI(v)Mx@TZG29Z4B9NC&oCx<;9<`RMj(M;j$5m=@tqNlvZCvy!UoH-eKD{CYHxYXF-}a$yko95FHo#{DDWgRvGuO-By;thR(lRI4g$*m zy;n7#`t77Q^j|ZaCkBzJ7EFjm!Qlup^^=y=RsjnRi=+4rj8o-P#gf2H-ksRF_M2eE z<(JY)e8_BRw@|(&w#xmwbes*QELnVvV^pM%&<9gTlK*qKGl$?%Sv0P8>iKIQ8)tNW zYt;$==|QmgTo}`+zxnKDX6$FtQUeak8ViRa;I^X2`qRVuISVGI=wPEyFbOIZH1;)^ z&!5a0=1`IfMM~f63C7M^r8Q>oerwBC;$)lXQYtg7jC{U&gPrZd>7LQt(Ul|=8D(@l zZk?hv-D`)lrA*hEg@J}DwQk27zIb#r~lre0@D`Nl=V96Di zthz=OndyFz*{bC--!86h-NCNBfd-f@eQ{Plc#Eovx{S6-tn<752z ziNQ#}VCBGrz26#LHyk+m2$1FLa3j5dNa(n;Kq3-oq?blIE|yNG4I$9eI^Pa2!d~Og zLxCCq<-7xec4AnsD_U4s~dkM`nB17UDSePzO)Qaj@3r^6;EE$=hsqDqnh)nai8aPt8Jc;|*Q6w?r_u)2c;Edvkn6bV{|A$u>I zFyOKHBz6gt;C9(ef*lHg(AA-f!=jej2LXzuXpHrTM)eWlwE2Df_2LbNim})t=0k>5IOU|O(?d()8~{1*}Q*8UO$Q literal 0 HcmV?d00001 diff --git a/lib/docs/html/class_team_speak3___adapter___update-members.html b/lib/docs/html/class_team_speak3___adapter___update-members.html new file mode 100644 index 0000000..93427e0 --- /dev/null +++ b/lib/docs/html/class_team_speak3___adapter___update-members.html @@ -0,0 +1,148 @@ + + + + + + +TeamSpeak 3 PHP Framework: Member List + + + + + + + + + + + + + +
+
+ + + + + + + +
+
TeamSpeak 3 PHP Framework +  1.1.23 +
+
Copyright © Planet TeamSpeak. All rights reserved.
+
+
+ + + + + +
+
+ +
+
+
+ +
+ + + + +
+ +
+ +
+
+
TeamSpeak3_Adapter_Update Member List
+
+ +
+ + + + diff --git a/lib/docs/html/class_team_speak3___adapter___update.html b/lib/docs/html/class_team_speak3___adapter___update.html new file mode 100644 index 0000000..9d6eaaa --- /dev/null +++ b/lib/docs/html/class_team_speak3___adapter___update.html @@ -0,0 +1,808 @@ + + + + + + +TeamSpeak 3 PHP Framework: TeamSpeak3_Adapter_Update Class Reference + + + + + + + + + + + + + +
+
+ + + + + + + +
+
TeamSpeak 3 PHP Framework +  1.1.23 +
+
Copyright © Planet TeamSpeak. All rights reserved.
+
+
+ + + + + +
+
+ +
+
+
+ +
+ + + + +
+ +
+ +
+ +
+
TeamSpeak3_Adapter_Update Class Reference
+
+
+ +

Provides methods to query the latest TeamSpeak 3 build numbers from the master server. + More...

+
+ + Inheritance diagram for TeamSpeak3_Adapter_Update:
+
+
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +

+Public Member Functions

 syn ()
 Connects the TeamSpeak3_Transport_Abstract object and performs initial actions on the remote server. More...
 
 __destruct ()
 The TeamSpeak3_Adapter_Update destructor. More...
 
 getRev ($channel="stable")
 Returns the current build number for a specified update channel. More...
 
 getVersion ($channel="stable")
 Returns the current version string for a specified update channel. More...
 
 getClientRev ()
 Alias for getRev() using the 'stable' update channel. More...
 
 getServerRev ()
 Alias for getRev() using the 'server' update channel. More...
 
 getClientVersion ()
 Alias for getVersion() using the 'stable' update channel. More...
 
 getServerVersion ()
 Alias for getVersion() using the 'server' update channel. More...
 
 __sleep ()
 Commit pending data. More...
 
 __wakeup ()
 Reconnects to the remote server. More...
 
 getProfiler ()
 Returns the profiler timer used for this connection adapter. More...
 
 getTransport ()
 Returns the transport object used for this connection adapter. More...
 
 getTransportHost ()
 Returns the hostname or IPv4 address the underlying TeamSpeak3_Transport_Abstract object is connected to. More...
 
 getTransportPort ()
 Returns the port number of the server the underlying TeamSpeak3_Transport_Abstract object is connected to. More...
 
+ + + + +

+Protected Member Functions

 initTransport ($options, $transport="TeamSpeak3_Transport_TCP")
 Loads the transport object object used for the connection adapter and passes a given set of options. More...
 
+ + + + + + + + + + + + + +

+Protected Attributes

$default_host = "update.teamspeak.com"
 
$default_port = 17384
 
$build_datetimes = null
 
$version_strings = null
 
$options = null
 
$transport = null
 
+

Detailed Description

+

Provides methods to query the latest TeamSpeak 3 build numbers from the master server.

+ +

Definition at line 32 of file Update.php.

+

Constructor & Destructor Documentation

+ +
+
+ + + + + + + +
TeamSpeak3_Adapter_Update::__destruct ()
+
+ +

The TeamSpeak3_Adapter_Update destructor.

+
Returns
void
+ +

Definition at line 97 of file Update.php.

+ +

References TeamSpeak3_Adapter_Abstract\getTransport().

+
98  {
+
99  if($this->getTransport() instanceof TeamSpeak3_Transport_Abstract && $this->getTransport()->isConnected())
+
100  {
+
101  $this->getTransport()->disconnect();
+
102  }
+
103  }
+
+
+
+

Member Function Documentation

+ +
+
+ + + + + + + +
TeamSpeak3_Adapter_Update::syn ()
+
+ +

Connects the TeamSpeak3_Transport_Abstract object and performs initial actions on the remote server.

+
Exceptions
+ + +
TeamSpeak3_Adapter_Update_Exception
+
+
+
Returns
void
+ +

Definition at line 69 of file Update.php.

+ +

References TeamSpeak3_Helper_String\fromHex(), TeamSpeak3_Helper_Signal\getInstance(), TeamSpeak3_Adapter_Abstract\getTransport(), TeamSpeak3_Helper_Profiler\init(), and TeamSpeak3_Adapter_Abstract\initTransport().

+
70  {
+
71  if(!isset($this->options["host"]) || empty($this->options["host"])) $this->options["host"] = $this->default_host;
+
72  if(!isset($this->options["port"]) || empty($this->options["port"])) $this->options["port"] = $this->default_port;
+
73 
+
74  $this->initTransport($this->options, "TeamSpeak3_Transport_UDP");
+
75  $this->transport->setAdapter($this);
+
76 
+
77  TeamSpeak3_Helper_Profiler::init(spl_object_hash($this));
+
78 
+ +
80 
+
81  if(!preg_match_all("/,?(\d+)#([0-9a-zA-Z\._-]+),?/", $this->getTransport()->read(96), $matches) || !isset($matches[1]) || !isset($matches[2]))
+
82  {
+
83  throw new TeamSpeak3_Adapter_Update_Exception("invalid reply from the server");
+
84  }
+
85 
+
86  $this->build_datetimes = $matches[1];
+
87  $this->version_strings = $matches[2];
+
88 
+
89  TeamSpeak3_Helper_Signal::getInstance()->emit("updateConnected", $this);
+
90  }
+
+
+
+ +
+
+ + + + + + + + +
TeamSpeak3_Adapter_Update::getRev ( $channel = "stable")
+
+ +

Returns the current build number for a specified update channel.

+

Note that since version 3.0.0, the build number represents an integer timestamp. $channel must be set to one of the following values:

+
    +
  • stable
  • +
  • beta
  • +
  • alpha
  • +
  • server
  • +
+
Parameters
+ + +
string$channel
+
+
+
Exceptions
+ + +
TeamSpeak3_Adapter_Update_Exception
+
+
+
Returns
integer
+ +

Definition at line 119 of file Update.php.

+ +

Referenced by getClientRev(), and getServerRev().

+
120  {
+
121  switch($channel)
+
122  {
+
123  case "stable":
+
124  return isset($this->build_datetimes[0]) ? $this->build_datetimes[0] : null;
+
125 
+
126  case "beta":
+
127  return isset($this->build_datetimes[1]) ? $this->build_datetimes[1] : null;
+
128 
+
129  case "alpha":
+
130  return isset($this->build_datetimes[2]) ? $this->build_datetimes[2] : null;
+
131 
+
132  case "server":
+
133  return isset($this->build_datetimes[3]) ? $this->build_datetimes[3] : null;
+
134 
+
135  default:
+
136  throw new TeamSpeak3_Adapter_Update_Exception("invalid update channel identifier (" . $channel . ")");
+
137  }
+
138  }
+
+
+
+ +
+
+ + + + + + + + +
TeamSpeak3_Adapter_Update::getVersion ( $channel = "stable")
+
+ +

Returns the current version string for a specified update channel.

+

$channel must be set to one of the following values:

+
    +
  • stable
  • +
  • beta
  • +
  • alpha
  • +
  • server
  • +
+
Parameters
+ + +
string$channel
+
+
+
Exceptions
+ + +
TeamSpeak3_Adapter_Update_Exception
+
+
+
Returns
integer
+ +

Definition at line 153 of file Update.php.

+ +

Referenced by getClientVersion(), and getServerVersion().

+
154  {
+
155  switch($channel)
+
156  {
+
157  case "stable":
+
158  return isset($this->version_strings[0]) ? $this->version_strings[0] : null;
+
159 
+
160  case "beta":
+
161  return isset($this->version_strings[1]) ? $this->version_strings[1] : null;
+
162 
+
163  case "alpha":
+
164  return isset($this->version_strings[2]) ? $this->version_strings[2] : null;
+
165 
+
166  case "server":
+
167  return isset($this->version_strings[3]) ? $this->version_strings[3] : null;
+
168 
+
169  default:
+
170  throw new TeamSpeak3_Adapter_Update_Exception("invalid update channel identifier (" . $channel . ")");
+
171  }
+
172  }
+
+
+
+ +
+
+ + + + + + + +
TeamSpeak3_Adapter_Update::getClientRev ()
+
+ +

Alias for getRev() using the 'stable' update channel.

+
Parameters
+ + +
string$channel
+
+
+
Returns
integer
+ +

Definition at line 180 of file Update.php.

+ +

References getRev().

+
181  {
+
182  return $this->getRev("stable");
+
183  }
+
+
+
+ +
+
+ + + + + + + +
TeamSpeak3_Adapter_Update::getServerRev ()
+
+ +

Alias for getRev() using the 'server' update channel.

+
Parameters
+ + +
string$channel
+
+
+
Returns
integer
+ +

Definition at line 191 of file Update.php.

+ +

References getRev().

+
192  {
+
193  return $this->getRev("server");
+
194  }
+
+
+
+ +
+
+ + + + + + + +
TeamSpeak3_Adapter_Update::getClientVersion ()
+
+ +

Alias for getVersion() using the 'stable' update channel.

+
Parameters
+ + +
string$channel
+
+
+
Returns
integer
+ +

Definition at line 202 of file Update.php.

+ +

References getVersion().

+
203  {
+
204  return $this->getVersion("stable");
+
205  }
+
+
+
+ +
+
+ + + + + + + +
TeamSpeak3_Adapter_Update::getServerVersion ()
+
+ +

Alias for getVersion() using the 'server' update channel.

+
Parameters
+ + +
string$channel
+
+
+
Returns
integer
+ +

Definition at line 213 of file Update.php.

+ +

References getVersion().

+
214  {
+
215  return $this->getVersion("server");
+
216  }
+
+
+
+ +
+
+ + + + + +
+ + + + + + + +
TeamSpeak3_Adapter_Abstract::__sleep ()
+
+inherited
+
+ +

Commit pending data.

+
Returns
array
+ +

Definition at line 85 of file Abstract.php.

+
86  {
+
87  return array("options");
+
88  }
+
+
+
+ +
+
+ + + + + +
+ + + + + + + +
TeamSpeak3_Adapter_Abstract::__wakeup ()
+
+inherited
+
+ +

Reconnects to the remote server.

+
Returns
void
+ +

Definition at line 95 of file Abstract.php.

+ +

References TeamSpeak3_Adapter_Abstract\syn().

+
96  {
+
97  $this->syn();
+
98  }
+
+
+
+ +
+
+ + + + + +
+ + + + + + + +
TeamSpeak3_Adapter_Abstract::getProfiler ()
+
+inherited
+
+ +

Returns the profiler timer used for this connection adapter.

+
Returns
TeamSpeak3_Helper_Profiler_Timer
+ +

Definition at line 105 of file Abstract.php.

+ +

References TeamSpeak3_Helper_Profiler\get().

+ +

Referenced by TeamSpeak3_Adapter_FileTransfer\download(), TeamSpeak3_Adapter_ServerQuery\getQueryRuntime(), TeamSpeak3_Adapter_FileTransfer\init(), TeamSpeak3_Adapter_ServerQuery\request(), and TeamSpeak3_Adapter_FileTransfer\upload().

+
106  {
+
107  return TeamSpeak3_Helper_Profiler::get(spl_object_hash($this));
+
108  }
+
+
+
+ + + +
+
+ + + + + +
+ + + + + + + + + + + + + + + + + + +
TeamSpeak3_Adapter_Abstract::initTransport ( $options,
 $transport = "TeamSpeak3_Transport_TCP" 
)
+
+protectedinherited
+
+ +

Loads the transport object object used for the connection adapter and passes a given set of options.

+
Parameters
+ + + +
array$options
string$transport
+
+
+
Exceptions
+ + +
TeamSpeak3_Adapter_Exception
+
+
+
Returns
void
+ +

Definition at line 129 of file Abstract.php.

+ +

Referenced by TeamSpeak3_Adapter_FileTransfer\syn(), TeamSpeak3_Adapter_TSDNS\syn(), TeamSpeak3_Adapter_Blacklist\syn(), TeamSpeak3_Adapter_ServerQuery\syn(), and syn().

+
130  {
+
131  if(!is_array($options))
+
132  {
+
133  throw new TeamSpeak3_Adapter_Exception("transport parameters must provided in an array");
+
134  }
+
135 
+
136  $this->transport = new $transport($options);
+
137  }
+
+
+
+ +
+
+ + + + + +
+ + + + + + + +
TeamSpeak3_Adapter_Abstract::getTransportHost ()
+
+inherited
+
+ +

Returns the hostname or IPv4 address the underlying TeamSpeak3_Transport_Abstract object is connected to.

+
Returns
string
+ +

Definition at line 145 of file Abstract.php.

+ +

References TeamSpeak3_Adapter_Abstract\getTransport().

+
146  {
+
147  return $this->getTransport()->getConfig("host", "0.0.0.0");
+
148  }
+
+
+
+ +
+
+ + + + + +
+ + + + + + + +
TeamSpeak3_Adapter_Abstract::getTransportPort ()
+
+inherited
+
+ +

Returns the port number of the server the underlying TeamSpeak3_Transport_Abstract object is connected to.

+
Returns
string
+ +

Definition at line 156 of file Abstract.php.

+ +

References TeamSpeak3_Adapter_Abstract\getTransport().

+
157  {
+
158  return $this->getTransport()->getConfig("port", "0");
+
159  }
+
+
+
+
The documentation for this class was generated from the following file: +
+
+ + + + diff --git a/lib/docs/html/class_team_speak3___adapter___update.js b/lib/docs/html/class_team_speak3___adapter___update.js new file mode 100644 index 0000000..a8d255d --- /dev/null +++ b/lib/docs/html/class_team_speak3___adapter___update.js @@ -0,0 +1,24 @@ +var class_team_speak3___adapter___update = +[ + [ "__destruct", "class_team_speak3___adapter___update.html#a09d4e6b18f2475adfc1f5a74c6478421", null ], + [ "syn", "class_team_speak3___adapter___update.html#aff480ecd1d746c8014242bee9ff15a42", null ], + [ "getRev", "class_team_speak3___adapter___update.html#aacf23e72f0978884a9b44c7e6679a06d", null ], + [ "getVersion", "class_team_speak3___adapter___update.html#ac25205f46f31a8de30454d499e6aaa04", null ], + [ "getClientRev", "class_team_speak3___adapter___update.html#af42f2e98ffbecdbc375304737a54a4a0", null ], + [ "getServerRev", "class_team_speak3___adapter___update.html#a3e1f0776fc33efb9ac61336ae59faa80", null ], + [ "getClientVersion", "class_team_speak3___adapter___update.html#aa1c205259b8912526ad533ed17acd564", null ], + [ "getServerVersion", "class_team_speak3___adapter___update.html#a116864fefa2a1cf7fb5fef1847320e60", null ], + [ "__sleep", "class_team_speak3___adapter___update.html#afa29be26280db12e38aef59d90f7c6ac", null ], + [ "__wakeup", "class_team_speak3___adapter___update.html#aaa3c73f10edd73494087a7a523726a89", null ], + [ "getProfiler", "class_team_speak3___adapter___update.html#ab1bd002b22a8121e8efa5ab4ccd36fa5", null ], + [ "getTransport", "class_team_speak3___adapter___update.html#a538e98e6dcc6a2ad7fdcb4913f6f7c52", null ], + [ "initTransport", "class_team_speak3___adapter___update.html#a87920747e1eb4a25396c5b5e5567094b", null ], + [ "getTransportHost", "class_team_speak3___adapter___update.html#adcf5e760b6d6d3e42f11d8b1bc5d87cc", null ], + [ "getTransportPort", "class_team_speak3___adapter___update.html#a5eb0b19787ec6f719d8f19bcd7182461", null ], + [ "$default_host", "class_team_speak3___adapter___update.html#aff0d4389ef94200093e46352325b662d", null ], + [ "$default_port", "class_team_speak3___adapter___update.html#a97aee7ab17ceb200cbda0e044722067e", null ], + [ "$build_datetimes", "class_team_speak3___adapter___update.html#a54aadf28b42c9ae4443c03ae1ab80a0d", null ], + [ "$version_strings", "class_team_speak3___adapter___update.html#a172f895cafdc41dc38d0d3dcad40daf4", null ], + [ "$options", "class_team_speak3___adapter___update.html#a94b75d4f99ef639e5cb39e900d38e56a", null ], + [ "$transport", "class_team_speak3___adapter___update.html#a257acaf2793889d1e75364d40e7fa15d", null ] +]; \ No newline at end of file diff --git a/lib/docs/html/class_team_speak3___adapter___update.png b/lib/docs/html/class_team_speak3___adapter___update.png new file mode 100644 index 0000000000000000000000000000000000000000..9b06d9698b2d8c52bb819d6fa8bb80ba53d8b7f1 GIT binary patch literal 824 zcmeAS@N?(olHy`uVBq!ia0vp^`+zurgBeIpcw!$5q$C1-LR|m<{|{u|fBxC4YVQP) z90(scaA2nIwpl^__&@pF|3A^Z zaEFJ&<1@=*r$*kYDNEuk)M@;2x=`l$u15lbk)hJ@E-GGNg4KTSKNpvnvpqL2RBwqt zd}4OMu{Xb;E!X;e{msp?rx%`Gkz4t*A8-t}pkkTJpm2*UZwAXLBAt zU$5&h@Axr|xO-ZG_skOd-|ycv>$=GP)t?*Ye}D0M*~i?_p6T83Fr3G?G}!AdE)dx{F|#w-DIbS_woxYB_0>7oDvijuF?>?^&{h=EkL~F0YVxADfHZwqLg?f76HpWAoS7vj2a7ecwCHrSG?JRn1-gY~Sh}U$@ut&+Bil-};%S zz58-y$njrKuKfKnqb~c;?8$#v{+)gKR_d2w;|~U5)^zy?+cO?ByJQ0K%Sy2&Q!cIg a#q61){%PNn2w7k + + + + + +TeamSpeak 3 PHP Framework: Member List + + + + + + + + + + + + + +
+
+ + + + + + + +
+
TeamSpeak 3 PHP Framework +  1.1.23 +
+
Copyright © Planet TeamSpeak. All rights reserved.
+
+
+ + + + + +
+
+ +
+
+
+ +
+ + + + +
+ +
+ +
+
+
TeamSpeak3_Adapter_Update_Exception Member List
+
+
+ +

This is the complete list of members for TeamSpeak3_Adapter_Update_Exception, including all inherited members.

+ + + + + + + +
$messages (defined in TeamSpeak3_Exception)TeamSpeak3_Exceptionprotectedstatic
__construct($mesg, $code=0x00)TeamSpeak3_Exception
getSender()TeamSpeak3_Exception
prepareCustomMessage(TeamSpeak3_Helper_String $mesg)TeamSpeak3_Exceptionprotected
registerCustomMessage($code, $mesg)TeamSpeak3_Exceptionstatic
unregisterCustomMessage($code)TeamSpeak3_Exceptionstatic
+
+ + + + diff --git a/lib/docs/html/class_team_speak3___adapter___update___exception.html b/lib/docs/html/class_team_speak3___adapter___update___exception.html new file mode 100644 index 0000000..97367d5 --- /dev/null +++ b/lib/docs/html/class_team_speak3___adapter___update___exception.html @@ -0,0 +1,377 @@ + + + + + + +TeamSpeak 3 PHP Framework: TeamSpeak3_Adapter_Update_Exception Class Reference + + + + + + + + + + + + + +
+
+ + + + + + + +
+
TeamSpeak 3 PHP Framework +  1.1.23 +
+
Copyright © Planet TeamSpeak. All rights reserved.
+
+
+ + + + + +
+
+ +
+
+
+ +
+ + + + +
+ +
+ + +
+ +

Enhanced exception class for TeamSpeak3_Adapter_Update objects. + More...

+
+ + Inheritance diagram for TeamSpeak3_Adapter_Update_Exception:
+
+
+ + + + + + +

+Public Member Functions

 getSender ()
 Returns the class from which the exception was thrown. More...
 
+ + + + + + + +

+Static Public Member Functions

static registerCustomMessage ($code, $mesg)
 Registers a custom error message to $code. More...
 
static unregisterCustomMessage ($code)
 Unregisters a custom error message from $code. More...
 
+ + + + +

+Protected Member Functions

 prepareCustomMessage (TeamSpeak3_Helper_String $mesg)
 Prepares a custom error message by replacing pre-defined signs with given values. More...
 
+ + + +

+Static Protected Attributes

+static $messages = array()
 
+

Detailed Description

+

Enhanced exception class for TeamSpeak3_Adapter_Update objects.

+ +

Definition at line 32 of file Exception.php.

+

Member Function Documentation

+ +
+
+ + + + + +
+ + + + + + + + +
TeamSpeak3_Exception::prepareCustomMessage (TeamSpeak3_Helper_String $mesg)
+
+protectedinherited
+
+ +

Prepares a custom error message by replacing pre-defined signs with given values.

+
Parameters
+ + +
TeamSpeak3_Helper_String$mesg
+
+
+
Returns
TeamSpeak3_Helper_String
+ +

Definition at line 66 of file Exception.php.

+ +

References TeamSpeak3_Helper_String\arg().

+ +

Referenced by TeamSpeak3_Exception\__construct().

+
67  {
+
68  $args = array(
+
69  "code" => $this->getCode(),
+
70  "mesg" => $this->getMessage(),
+
71  "line" => $this->getLine(),
+
72  "file" => $this->getFile(),
+
73  );
+
74 
+
75  return $mesg->arg($args)->toString();
+
76  }
+
+
+
+ +
+
+ + + + + +
+ + + + + + + + + + + + + + + + + + +
static TeamSpeak3_Exception::registerCustomMessage ( $code,
 $mesg 
)
+
+staticinherited
+
+ +

Registers a custom error message to $code.

+
Parameters
+ + + +
integer$code
string$mesg
+
+
+
Exceptions
+ + +
TeamSpeak3_Exception
+
+
+
Returns
void
+ +

Definition at line 86 of file Exception.php.

+
87  {
+
88  if(array_key_exists((int) $code, self::$messages))
+
89  {
+
90  throw new self("custom message for code 0x" . strtoupper(dechex($code)) . " is already registered");
+
91  }
+
92 
+
93  if(!is_string($mesg))
+
94  {
+
95  throw new self("custom message for code 0x" . strtoupper(dechex($code)) . " must be a string");
+
96  }
+
97 
+
98  self::$messages[(int) $code] = new TeamSpeak3_Helper_String($mesg);
+
99  }
+
+
+
+ +
+
+ + + + + +
+ + + + + + + + +
static TeamSpeak3_Exception::unregisterCustomMessage ( $code)
+
+staticinherited
+
+ +

Unregisters a custom error message from $code.

+
Parameters
+ + +
integer$code
+
+
+
Exceptions
+ + +
TeamSpeak3_Exception
+
+
+
Returns
void
+ +

Definition at line 108 of file Exception.php.

+
109  {
+
110  if(!array_key_exists((int) $code, self::$messages))
+
111  {
+
112  throw new self("custom message for code 0x" . strtoupper(dechex($code)) . " is not registered");
+
113  }
+
114 
+
115  unset(self::$messages[intval($code)]);
+
116  }
+
+
+
+ +
+
+ + + + + +
+ + + + + + + +
TeamSpeak3_Exception::getSender ()
+
+inherited
+
+ +

Returns the class from which the exception was thrown.

+
Returns
string
+ +

Definition at line 123 of file Exception.php.

+
124  {
+
125  $trace = $this->getTrace();
+
126 
+
127  return (isset($trace[0]["class"])) ? $trace[0]["class"] : "{main}";
+
128  }
+
+
+
+
The documentation for this class was generated from the following file: +
+
+ + + + diff --git a/lib/docs/html/class_team_speak3___adapter___update___exception.js b/lib/docs/html/class_team_speak3___adapter___update___exception.js new file mode 100644 index 0000000..322979e --- /dev/null +++ b/lib/docs/html/class_team_speak3___adapter___update___exception.js @@ -0,0 +1,5 @@ +var class_team_speak3___adapter___update___exception = +[ + [ "prepareCustomMessage", "class_team_speak3___adapter___update___exception.html#a3bfcdf7b85a393b7a8b05b048ae3279c", null ], + [ "getSender", "class_team_speak3___adapter___update___exception.html#ae7d4b369dd11d3cf56d120acae0cf1db", null ] +]; \ No newline at end of file diff --git a/lib/docs/html/class_team_speak3___adapter___update___exception.png b/lib/docs/html/class_team_speak3___adapter___update___exception.png new file mode 100644 index 0000000000000000000000000000000000000000..8908fee73e48aa218cd829691560e562490ea73a GIT binary patch literal 1510 zcmcJPX;9J$7{>o?g0Qx3V0wivA|4Guc%&dwT%d9$?MY#J`9zF?C4zB8kOZ)^Pw|2 z>{+a<0Tbg@xY28_j^@QCiAGAz1Lx|{(y>O?*&33loKwLMP))+>Nus$TeHztKUCgZ_ zx9ZMdhV@IdwakW@I+b>wP?e^6e;Z+7TcwS<`;s+oZ9kWon`n8v;22beJWQ4*7h9dL(Xe8i!?0W6Zok z=S^bfbf^(pUmXlOEqtH9HTxT7&(W58c=W(FT}*So+l{9cw$*dpd0hp-oZn;L^J%gN ze+?X}@D|D}5Gidj9oz+?$9Q3?%PYZ41Xz@oUgmE{%1~vkC*VLt@A$$L|EF-h`v{}Z z6O5B3iE+JFtylQhJ0?43u&f+fBxI$ssb!fW-H?|68!N1C&uNboSMhTwMmo50XE;iq5|s`~^WTmvCi~&XmO;kp*$L$cv+HdYT)^ zknIvP$#K4g-F&&FA%V@Zxm9aGWrLiSNh@zKIQHMO4@+}ydS;n_tn>jUrtNiSPDd;3 zbB$VqBohJ;x>8PPZgb zXH6j}w@?`6tKPNC8x%zUU#WOCU+=xNZVF=toeKQ~TrH6Rk^hM#w?x;&P|=4`;T8$= z2uNvx=IZ!e$-9>-4BJdZ+4A0}(~tUs;M|2AhJ4p^r0O_KD}Hy3RPexu6+|ByndON( z6GjbPxX~xPpiy7+MSnY0Cub=#qa0J2dH+&t(Fo126?rXp^~tZ_-WkVKW!N1w*LUzM z8sS8%)@8y4`A$OH(Q>M^gvxN7XLln~&1HFKrKcdN`@14Wo(v{K8w0N4U#E_|{D>k$ zo99y~2QLqLtL)T4C(5{#jCS2`RkM;Ae*ZLz96XavbtyLjYS$#g>3yRS7N(fc^paU@ z?Wuw}tV{TqPtUTF^E7gt>+?n{S$; + + + + + +TeamSpeak 3 PHP Framework: Member List + + + + + + + + + + + + + +
+
+ + + + + + + +
+
TeamSpeak 3 PHP Framework +  1.1.23 +
+
Copyright © Planet TeamSpeak. All rights reserved.
+
+
+ + + + + +
+
+ +
+
+
+ +
+ + + + +
+ +
+ +
+
+
TeamSpeak3_Exception Member List
+
+
+ +

This is the complete list of members for TeamSpeak3_Exception, including all inherited members.

+ + + + + + + +
$messages (defined in TeamSpeak3_Exception)TeamSpeak3_Exceptionprotectedstatic
__construct($mesg, $code=0x00)TeamSpeak3_Exception
getSender()TeamSpeak3_Exception
prepareCustomMessage(TeamSpeak3_Helper_String $mesg)TeamSpeak3_Exceptionprotected
registerCustomMessage($code, $mesg)TeamSpeak3_Exceptionstatic
unregisterCustomMessage($code)TeamSpeak3_Exceptionstatic
+
+ + + + diff --git a/lib/docs/html/class_team_speak3___exception.html b/lib/docs/html/class_team_speak3___exception.html new file mode 100644 index 0000000..1655b1a --- /dev/null +++ b/lib/docs/html/class_team_speak3___exception.html @@ -0,0 +1,432 @@ + + + + + + +TeamSpeak 3 PHP Framework: TeamSpeak3_Exception Class Reference + + + + + + + + + + + + + +
+
+ + + + + + + +
+
TeamSpeak 3 PHP Framework +  1.1.23 +
+
Copyright © Planet TeamSpeak. All rights reserved.
+
+
+ + + + + +
+
+ +
+
+
+ +
+ + + + +
+ +
+ + +
+ +

Enhanced exception class for TeamSpeak3 objects. + More...

+
+ + Inheritance diagram for TeamSpeak3_Exception:
+
+
+ + + + + + + + + +

+Public Member Functions

 __construct ($mesg, $code=0x00)
 The TeamSpeak3_Exception constructor. More...
 
 getSender ()
 Returns the class from which the exception was thrown. More...
 
+ + + + + + + +

+Static Public Member Functions

static registerCustomMessage ($code, $mesg)
 Registers a custom error message to $code. More...
 
static unregisterCustomMessage ($code)
 Unregisters a custom error message from $code. More...
 
+ + + + +

+Protected Member Functions

 prepareCustomMessage (TeamSpeak3_Helper_String $mesg)
 Prepares a custom error message by replacing pre-defined signs with given values. More...
 
+ + + +

+Static Protected Attributes

+static $messages = array()
 
+

Detailed Description

+

Enhanced exception class for TeamSpeak3 objects.

+ +

Definition at line 32 of file Exception.php.

+

Constructor & Destructor Documentation

+ +
+
+ + + + + + + + + + + + + + + + + + +
TeamSpeak3_Exception::__construct ( $mesg,
 $code = 0x00 
)
+
+ +

The TeamSpeak3_Exception constructor.

+
Parameters
+ + + +
string$mesg
integer$code
+
+
+
Returns
TeamSpeak3_Exception
+ +

Definition at line 48 of file Exception.php.

+ +

References TeamSpeak3_Helper_Signal\getInstance(), and prepareCustomMessage().

+
49  {
+
50  parent::__construct($mesg, $code);
+
51 
+
52  if(array_key_exists((int) $code, self::$messages))
+
53  {
+
54  $this->message = $this->prepareCustomMessage(self::$messages[intval($code)]);
+
55  }
+
56 
+
57  TeamSpeak3_Helper_Signal::getInstance()->emit("errorException", $this);
+
58  }
+
+
+
+

Member Function Documentation

+ +
+
+ + + + + +
+ + + + + + + + +
TeamSpeak3_Exception::prepareCustomMessage (TeamSpeak3_Helper_String $mesg)
+
+protected
+
+ +

Prepares a custom error message by replacing pre-defined signs with given values.

+
Parameters
+ + +
TeamSpeak3_Helper_String$mesg
+
+
+
Returns
TeamSpeak3_Helper_String
+ +

Definition at line 66 of file Exception.php.

+ +

References TeamSpeak3_Helper_String\arg().

+ +

Referenced by __construct().

+
67  {
+
68  $args = array(
+
69  "code" => $this->getCode(),
+
70  "mesg" => $this->getMessage(),
+
71  "line" => $this->getLine(),
+
72  "file" => $this->getFile(),
+
73  );
+
74 
+
75  return $mesg->arg($args)->toString();
+
76  }
+
+
+
+ +
+
+ + + + + +
+ + + + + + + + + + + + + + + + + + +
static TeamSpeak3_Exception::registerCustomMessage ( $code,
 $mesg 
)
+
+static
+
+ +

Registers a custom error message to $code.

+
Parameters
+ + + +
integer$code
string$mesg
+
+
+
Exceptions
+ + +
TeamSpeak3_Exception
+
+
+
Returns
void
+ +

Definition at line 86 of file Exception.php.

+
87  {
+
88  if(array_key_exists((int) $code, self::$messages))
+
89  {
+
90  throw new self("custom message for code 0x" . strtoupper(dechex($code)) . " is already registered");
+
91  }
+
92 
+
93  if(!is_string($mesg))
+
94  {
+
95  throw new self("custom message for code 0x" . strtoupper(dechex($code)) . " must be a string");
+
96  }
+
97 
+
98  self::$messages[(int) $code] = new TeamSpeak3_Helper_String($mesg);
+
99  }
+
+
+
+ +
+
+ + + + + +
+ + + + + + + + +
static TeamSpeak3_Exception::unregisterCustomMessage ( $code)
+
+static
+
+ +

Unregisters a custom error message from $code.

+
Parameters
+ + +
integer$code
+
+
+
Exceptions
+ + +
TeamSpeak3_Exception
+
+
+
Returns
void
+ +

Definition at line 108 of file Exception.php.

+
109  {
+
110  if(!array_key_exists((int) $code, self::$messages))
+
111  {
+
112  throw new self("custom message for code 0x" . strtoupper(dechex($code)) . " is not registered");
+
113  }
+
114 
+
115  unset(self::$messages[intval($code)]);
+
116  }
+
+
+
+ +
+
+ + + + + + + +
TeamSpeak3_Exception::getSender ()
+
+ +

Returns the class from which the exception was thrown.

+
Returns
string
+ +

Definition at line 123 of file Exception.php.

+
124  {
+
125  $trace = $this->getTrace();
+
126 
+
127  return (isset($trace[0]["class"])) ? $trace[0]["class"] : "{main}";
+
128  }
+
+
+
+
The documentation for this class was generated from the following file: +
+
+ + + + diff --git a/lib/docs/html/class_team_speak3___exception.js b/lib/docs/html/class_team_speak3___exception.js new file mode 100644 index 0000000..67c9966 --- /dev/null +++ b/lib/docs/html/class_team_speak3___exception.js @@ -0,0 +1,6 @@ +var class_team_speak3___exception = +[ + [ "__construct", "class_team_speak3___exception.html#a9872c9261e67090a2b5b7e0748a89ff6", null ], + [ "prepareCustomMessage", "class_team_speak3___exception.html#a3bfcdf7b85a393b7a8b05b048ae3279c", null ], + [ "getSender", "class_team_speak3___exception.html#ae7d4b369dd11d3cf56d120acae0cf1db", null ] +]; \ No newline at end of file diff --git a/lib/docs/html/class_team_speak3___exception.png b/lib/docs/html/class_team_speak3___exception.png new file mode 100644 index 0000000000000000000000000000000000000000..87386d28aa7021405e9da3822a3803e0d8646e74 GIT binary patch literal 6480 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 V#;wf*|NdBHXY0JL)aKZa{{S4KggO8K literal 0 HcmV?d00001 diff --git a/lib/docs/html/class_team_speak3___helper___char-members.html b/lib/docs/html/class_team_speak3___helper___char-members.html new file mode 100644 index 0000000..57c8527 --- /dev/null +++ b/lib/docs/html/class_team_speak3___helper___char-members.html @@ -0,0 +1,146 @@ + + + + + + +TeamSpeak 3 PHP Framework: Member List + + + + + + + + + + + + + +
+
+ + + + + + + +
+
TeamSpeak 3 PHP Framework +  1.1.23 +
+
Copyright © Planet TeamSpeak. All rights reserved.
+
+
+ + + + + +
+
+ +
+
+
+ + + + + + diff --git a/lib/docs/html/class_team_speak3___helper___char.html b/lib/docs/html/class_team_speak3___helper___char.html new file mode 100644 index 0000000..ad99f9a --- /dev/null +++ b/lib/docs/html/class_team_speak3___helper___char.html @@ -0,0 +1,730 @@ + + + + + + +TeamSpeak 3 PHP Framework: TeamSpeak3_Helper_Char Class Reference + + + + + + + + + + + + + +
+
+ + + + + + + +
+
TeamSpeak 3 PHP Framework +  1.1.23 +
+
Copyright © Planet TeamSpeak. All rights reserved.
+
+
+ + + + + +
+
+ +
+
+
+ +
+ + + + +
+ +
+ + +
+ +

Helper class for char handling. + More...

+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +

+Public Member Functions

 __construct ($char)
 The TeamSpeak3_Helper_Char constructor. More...
 
 isLetter ()
 Returns true if the character is a letter. More...
 
 isDigit ()
 Returns true if the character is a decimal digit. More...
 
 isSpace ()
 Returns true if the character is a space. More...
 
 isMark ()
 Returns true if the character is a mark. More...
 
 isControl ()
 Returns true if the character is a control character (i.e. More...
 
 isPrintable ()
 Returns true if the character is a printable character. More...
 
 isNull ()
 Returns true if the character is the Unicode character 0x0000 ("\0"). More...
 
 isUpper ()
 Returns true if the character is an uppercase letter. More...
 
 isLower ()
 Returns true if the character is a lowercase letter. More...
 
 toUpper ()
 Returns the uppercase equivalent if the character is lowercase. More...
 
 toLower ()
 Returns the lowercase equivalent if the character is uppercase. More...
 
 toAscii ()
 Returns the ascii value of the character. More...
 
 toUnicode ()
 Returns the Unicode value of the character. More...
 
 toHex ()
 Returns the hexadecimal value of the char. More...
 
 toString ()
 Returns the character as a standard string. More...
 
 toInt ()
 Returns the integer value of the character. More...
 
 __toString ()
 Returns the character as a standard string. More...
 
+ + + + +

+Static Public Member Functions

static fromHex ($hex)
 Returns the TeamSpeak3_Helper_Char based on a given hex value. More...
 
+ + + +

+Protected Attributes

$char = null
 
+

Detailed Description

+

Helper class for char handling.

+ +

Definition at line 32 of file Char.php.

+

Constructor & Destructor Documentation

+ +
+
+ + + + + + + + +
TeamSpeak3_Helper_Char::__construct ( $char)
+
+ +

The TeamSpeak3_Helper_Char constructor.

+
Parameters
+ + +
string$var
+
+
+
Exceptions
+ + +
TeamSpeak3_Helper_Exception
+
+
+
Returns
TeamSpeak3_Helper_Char
+ +

Definition at line 48 of file Char.php.

+
49  {
+
50  if(strlen($char) != 1)
+
51  {
+
52  throw new TeamSpeak3_Helper_Exception("char parameter may not contain more or less than one character");
+
53  }
+
54 
+
55  $this->char = strval($char);
+
56  }
+
+
+
+

Member Function Documentation

+ +
+
+ + + + + + + +
TeamSpeak3_Helper_Char::isLetter ()
+
+ +

Returns true if the character is a letter.

+
Returns
boolean
+ +

Definition at line 63 of file Char.php.

+
64  {
+
65  return ctype_alpha($this->char);
+
66  }
+
+
+
+ +
+
+ + + + + + + +
TeamSpeak3_Helper_Char::isDigit ()
+
+ +

Returns true if the character is a decimal digit.

+
Returns
boolean
+ +

Definition at line 73 of file Char.php.

+
74  {
+
75  return ctype_digit($this->char);
+
76  }
+
+
+
+ +
+
+ + + + + + + +
TeamSpeak3_Helper_Char::isSpace ()
+
+ +

Returns true if the character is a space.

+
Returns
boolean
+ +

Definition at line 83 of file Char.php.

+
84  {
+
85  return ctype_space($this->char);
+
86  }
+
+
+
+ +
+
+ + + + + + + +
TeamSpeak3_Helper_Char::isMark ()
+
+ +

Returns true if the character is a mark.

+
Returns
boolean
+ +

Definition at line 93 of file Char.php.

+
94  {
+
95  return ctype_punct($this->char);
+
96  }
+
+
+
+ +
+
+ + + + + + + +
TeamSpeak3_Helper_Char::isControl ()
+
+ +

Returns true if the character is a control character (i.e.

+

"\t").

+
Returns
boolean
+ +

Definition at line 103 of file Char.php.

+
104  {
+
105  return ctype_cntrl($this->char);
+
106  }
+
+
+
+ +
+
+ + + + + + + +
TeamSpeak3_Helper_Char::isPrintable ()
+
+ +

Returns true if the character is a printable character.

+
Returns
boolean
+ +

Definition at line 113 of file Char.php.

+
114  {
+
115  return ctype_print($this->char);
+
116  }
+
+
+
+ +
+
+ + + + + + + +
TeamSpeak3_Helper_Char::isNull ()
+
+ +

Returns true if the character is the Unicode character 0x0000 ("\0").

+
Returns
boolean
+ +

Definition at line 123 of file Char.php.

+
124  {
+
125  return ($this->char === "\0") ? TRUE : FALSE;
+
126  }
+
+
+
+ +
+
+ + + + + + + +
TeamSpeak3_Helper_Char::isUpper ()
+
+ +

Returns true if the character is an uppercase letter.

+
Returns
boolean
+ +

Definition at line 133 of file Char.php.

+ +

Referenced by toUpper().

+
134  {
+
135  return ($this->char === strtoupper($this->char)) ? TRUE : FALSE;
+
136  }
+
+
+
+ +
+
+ + + + + + + +
TeamSpeak3_Helper_Char::isLower ()
+
+ +

Returns true if the character is a lowercase letter.

+
Returns
boolean
+ +

Definition at line 143 of file Char.php.

+ +

Referenced by toLower().

+
144  {
+
145  return ($this->char === strtolower($this->char)) ? TRUE : FALSE;
+
146  }
+
+
+
+ +
+
+ + + + + + + +
TeamSpeak3_Helper_Char::toUpper ()
+
+ +

Returns the uppercase equivalent if the character is lowercase.

+
Returns
TeamSpeak3_Helper_Char
+ +

Definition at line 153 of file Char.php.

+ +

References isUpper().

+
154  {
+
155  return ($this->isUpper()) ? $this : new self(strtoupper($this));
+
156  }
+
+
+
+ +
+
+ + + + + + + +
TeamSpeak3_Helper_Char::toLower ()
+
+ +

Returns the lowercase equivalent if the character is uppercase.

+
Returns
TeamSpeak3_Helper_Char
+ +

Definition at line 163 of file Char.php.

+ +

References isLower().

+
164  {
+
165  return ($this->isLower()) ? $this : new self(strtolower($this));
+
166  }
+
+
+
+ +
+
+ + + + + + + +
TeamSpeak3_Helper_Char::toAscii ()
+
+ +

Returns the ascii value of the character.

+
Returns
integer
+ +

Definition at line 173 of file Char.php.

+ +

Referenced by toHex().

+
174  {
+
175  return ord($this->char);
+
176  }
+
+
+
+ +
+
+ + + + + + + +
TeamSpeak3_Helper_Char::toUnicode ()
+
+ +

Returns the Unicode value of the character.

+
Returns
integer
+ +

Definition at line 183 of file Char.php.

+
184  {
+
185  $h = ord($this->char{0});
+
186 
+
187  if($h <= 0x7F)
+
188  {
+
189  return $h;
+
190  }
+
191  else if($h < 0xC2)
+
192  {
+
193  return FALSE;
+
194  }
+
195  else if($h <= 0xDF)
+
196  {
+
197  return ($h & 0x1F) << 6 | (ord($this->char{1}) & 0x3F);
+
198  }
+
199  else if($h <= 0xEF)
+
200  {
+
201  return ($h & 0x0F) << 12 | (ord($this->char{1}) & 0x3F) << 6 | (ord($this->char{2}) & 0x3F);
+
202  }
+
203  else if($h <= 0xF4)
+
204  {
+
205  return ($h & 0x0F) << 18 | (ord($this->char{1}) & 0x3F) << 12 | (ord($this->char{2}) & 0x3F) << 6 | (ord($this->char{3}) & 0x3F);
+
206  }
+
207  else
+
208  {
+
209  return FALSE;
+
210  }
+
211  }
+
+
+
+ +
+
+ + + + + + + +
TeamSpeak3_Helper_Char::toHex ()
+
+ +

Returns the hexadecimal value of the char.

+
Returns
string
+ +

Definition at line 218 of file Char.php.

+ +

References toAscii().

+
219  {
+
220  return strtoupper(dechex($this->toAscii()));
+
221  }
+
+
+
+ +
+
+ + + + + +
+ + + + + + + + +
static TeamSpeak3_Helper_Char::fromHex ( $hex)
+
+static
+
+ +

Returns the TeamSpeak3_Helper_Char based on a given hex value.

+
Parameters
+ + +
string$hex
+
+
+
Exceptions
+ + +
TeamSpeak3_Helper_Exception
+
+
+
Returns
TeamSpeak3_Helper_Char
+ +

Definition at line 230 of file Char.php.

+
231  {
+
232  if(strlen($hex) != 2)
+
233  {
+
234  throw new TeamSpeak3_Helper_Exception("given parameter '" . $hex . "' is not a valid hexadecimal number");
+
235  }
+
236 
+
237  return new self(chr(hexdec($hex)));
+
238  }
+
+
+
+ +
+
+ + + + + + + +
TeamSpeak3_Helper_Char::toString ()
+
+ +

Returns the character as a standard string.

+
Returns
string
+ +

Definition at line 245 of file Char.php.

+
246  {
+
247  return $this->char;
+
248  }
+
+
+
+ +
+
+ + + + + + + +
TeamSpeak3_Helper_Char::toInt ()
+
+ +

Returns the integer value of the character.

+
Returns
integer
+ +

Definition at line 255 of file Char.php.

+
256  {
+
257  return intval($this->char);
+
258  }
+
+
+
+ +
+
+ + + + + + + +
TeamSpeak3_Helper_Char::__toString ()
+
+ +

Returns the character as a standard string.

+
Returns
string
+ +

Definition at line 265 of file Char.php.

+
266  {
+
267  return $this->char;
+
268  }
+
+
+
+
The documentation for this class was generated from the following file: +
+
+ + + + diff --git a/lib/docs/html/class_team_speak3___helper___char.js b/lib/docs/html/class_team_speak3___helper___char.js new file mode 100644 index 0000000..f86f986 --- /dev/null +++ b/lib/docs/html/class_team_speak3___helper___char.js @@ -0,0 +1,22 @@ +var class_team_speak3___helper___char = +[ + [ "__construct", "class_team_speak3___helper___char.html#add1580b3f4a63d2bcf7e65b9c08278cc", null ], + [ "isLetter", "class_team_speak3___helper___char.html#af5e38bffad5f3337a0a098595c3cc1dc", null ], + [ "isDigit", "class_team_speak3___helper___char.html#a516ba12f480718c4f629bc80b4534e45", null ], + [ "isSpace", "class_team_speak3___helper___char.html#a9eaa5eb7af273164e78a1ad9abba4925", null ], + [ "isMark", "class_team_speak3___helper___char.html#a7b0af0f517fad3d463e37a73f0d0e6aa", null ], + [ "isControl", "class_team_speak3___helper___char.html#a22df6b40aceb46041f0d54cdb94e207c", null ], + [ "isPrintable", "class_team_speak3___helper___char.html#af3db051fe9effcc66181cfffbe6adb43", null ], + [ "isNull", "class_team_speak3___helper___char.html#ac9d4e8d53dc1b48df16a9e966ec5ffac", null ], + [ "isUpper", "class_team_speak3___helper___char.html#aab4f8858c8fd20453808c19d31e7f9e3", null ], + [ "isLower", "class_team_speak3___helper___char.html#af1a9090eb45deefe6337137af4cdb9fb", null ], + [ "toUpper", "class_team_speak3___helper___char.html#ad1502b588adf85b1426a1cad68062b51", null ], + [ "toLower", "class_team_speak3___helper___char.html#abd5079c69e66bd654d1ad0507e70bfda", null ], + [ "toAscii", "class_team_speak3___helper___char.html#a3f656ef26e882b1c73859da05e74b087", null ], + [ "toUnicode", "class_team_speak3___helper___char.html#a2832c6d619a29a2e48c83ac49b126a0e", null ], + [ "toHex", "class_team_speak3___helper___char.html#af53e59a23a72e44096133355f77e3406", null ], + [ "toString", "class_team_speak3___helper___char.html#a8bb75339d12739d859b81bd1f14f6b48", null ], + [ "toInt", "class_team_speak3___helper___char.html#ae9f5d53be88f2669c99a13e9e428c2ee", null ], + [ "__toString", "class_team_speak3___helper___char.html#a09f3c3116f003edfd555082f6dbe4abf", null ], + [ "$char", "class_team_speak3___helper___char.html#a31902835e68b11855ae1c5681f69de65", null ] +]; \ No newline at end of file diff --git a/lib/docs/html/class_team_speak3___helper___convert-members.html b/lib/docs/html/class_team_speak3___helper___convert-members.html new file mode 100644 index 0000000..3746c6c --- /dev/null +++ b/lib/docs/html/class_team_speak3___helper___convert-members.html @@ -0,0 +1,138 @@ + + + + + + +TeamSpeak 3 PHP Framework: Member List + + + + + + + + + + + + + +
+
+ + + + + + + +
+
TeamSpeak 3 PHP Framework +  1.1.23 +
+
Copyright © Planet TeamSpeak. All rights reserved.
+
+
+ + + + + +
+
+ +
+
+
+ +
+ + + + +
+ +
+ +
+
+
TeamSpeak3_Helper_Convert Member List
+
+
+ +

This is the complete list of members for TeamSpeak3_Helper_Convert, including all inherited members.

+ + + + + + + + + + + + + +
bytes($bytes)TeamSpeak3_Helper_Convertstatic
codec($codec)TeamSpeak3_Helper_Convertstatic
groupType($type)TeamSpeak3_Helper_Convertstatic
imageMimeType($binary)TeamSpeak3_Helper_Convertstatic
logEntry($entry)TeamSpeak3_Helper_Convertstatic
logLevel($level)TeamSpeak3_Helper_Convertstatic
password($plain)TeamSpeak3_Helper_Convertstatic
permissionCategory($pcat)TeamSpeak3_Helper_Convertstatic
permissionType($type)TeamSpeak3_Helper_Convertstatic
seconds($seconds, $is_ms=FALSE, $format="%dD %02d:%02d:%02d")TeamSpeak3_Helper_Convertstatic
version($version, $format="Y-m-d h:i:s")TeamSpeak3_Helper_Convertstatic
versionShort($version)TeamSpeak3_Helper_Convertstatic
+
+ + + + diff --git a/lib/docs/html/class_team_speak3___helper___convert.html b/lib/docs/html/class_team_speak3___helper___convert.html new file mode 100644 index 0000000..b4fa07e --- /dev/null +++ b/lib/docs/html/class_team_speak3___helper___convert.html @@ -0,0 +1,874 @@ + + + + + + +TeamSpeak 3 PHP Framework: TeamSpeak3_Helper_Convert Class Reference + + + + + + + + + + + + + +
+
+ + + + + + + +
+
TeamSpeak 3 PHP Framework +  1.1.23 +
+
Copyright © Planet TeamSpeak. All rights reserved.
+
+
+ + + + + +
+
+ +
+
+
+ +
+ + + + +
+ +
+ +
+ +
+
TeamSpeak3_Helper_Convert Class Reference
+
+
+ +

Helper class for data conversion. + More...

+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +

+Static Public Member Functions

static bytes ($bytes)
 Converts bytes to a human readable value. More...
 
static seconds ($seconds, $is_ms=FALSE, $format="%dD %02d:%02d:%02d")
 Converts seconds/milliseconds to a human readable value. More...
 
static codec ($codec)
 Converts a given codec ID to a human readable name. More...
 
static groupType ($type)
 Converts a given group type ID to a human readable name. More...
 
static permissionType ($type)
 Converts a given permission type ID to a human readable name. More...
 
static permissionCategory ($pcat)
 Converts a given permission category value to a human readable name. More...
 
static logLevel ($level)
 Converts a given log level ID to a human readable name and vice versa. More...
 
static logEntry ($entry)
 Converts a specified log entry string into an array containing the data. More...
 
static password ($plain)
 Converts a given string to a ServerQuery password hash. More...
 
static version ($version, $format="Y-m-d h:i:s")
 Returns a client-like formatted version of the TeamSpeak 3 version string. More...
 
static versionShort ($version)
 Returns a client-like short-formatted version of the TeamSpeak 3 version string. More...
 
static imageMimeType ($binary)
 Tries to detect the type of an image by a given string and returns it. More...
 
+

Detailed Description

+

Helper class for data conversion.

+ +

Definition at line 32 of file Convert.php.

+

Member Function Documentation

+ +
+
+ + + + + +
+ + + + + + + + +
static TeamSpeak3_Helper_Convert::bytes ( $bytes)
+
+static
+
+ +

Converts bytes to a human readable value.

+
Parameters
+ + +
integer$bytes
+
+
+
Returns
string
+ +

Definition at line 40 of file Convert.php.

+ +

Referenced by TeamSpeak3_Node_Abstract\getInfo().

+
41  {
+
42  $kbytes = sprintf("%.02f", $bytes/1024);
+
43  $mbytes = sprintf("%.02f", $kbytes/1024);
+
44  $gbytes = sprintf("%.02f", $mbytes/1024);
+
45  $tbytes = sprintf("%.02f", $gbytes/1024);
+
46 
+
47  if($tbytes >= 1)
+
48  return $tbytes . " TB";
+
49  if($gbytes >= 1)
+
50  return $gbytes . " GB";
+
51  if($mbytes >= 1)
+
52  return $mbytes . " MB";
+
53  if($kbytes >= 1)
+
54  return $kbytes . " KB";
+
55 
+
56  return $bytes . " B";
+
57  }
+
+
+
+ +
+
+ + + + + +
+ + + + + + + + + + + + + + + + + + + + + + + + +
static TeamSpeak3_Helper_Convert::seconds ( $seconds,
 $is_ms = FALSE,
 $format = "%dD %02d:%02d:%02d" 
)
+
+static
+
+ +

Converts seconds/milliseconds to a human readable value.

+
Parameters
+ + + + +
integer$seconds
boolean$is_ms
string$format
+
+
+
Returns
string
+ +

Definition at line 67 of file Convert.php.

+ +

Referenced by TeamSpeak3_Viewer_Html\getCorpusTitle(), and TeamSpeak3_Node_Abstract\getInfo().

+
67  :%02d:%02d")
+
68  {
+
69  if($is_ms) $seconds = $seconds/1000;
+
70 
+
71  return sprintf($format, $seconds/60/60/24, ($seconds/60/60)%24, ($seconds/60)%60, $seconds%60);
+
72  }
+
+
+
+ +
+
+ + + + + +
+ + + + + + + + +
static TeamSpeak3_Helper_Convert::codec ( $codec)
+
+static
+
+ +

Converts a given codec ID to a human readable name.

+
Parameters
+ + +
integer$codec
+
+
+
Returns
string
+ +

Definition at line 80 of file Convert.php.

+ +

References TeamSpeak3\CODEC_CELT_MONO, TeamSpeak3\CODEC_OPUS_MUSIC, TeamSpeak3\CODEC_OPUS_VOICE, TeamSpeak3\CODEC_SPEEX_NARROWBAND, TeamSpeak3\CODEC_SPEEX_ULTRAWIDEBAND, and TeamSpeak3\CODEC_SPEEX_WIDEBAND.

+ +

Referenced by TeamSpeak3_Viewer_Html\getCorpusTitle().

+
81  {
+ +
83  return "Speex Narrowband";
+ +
85  return "Speex Wideband";
+ +
87  return "Speex Ultra-Wideband";
+
88  if($codec == TeamSpeak3::CODEC_CELT_MONO)
+
89  return "CELT Mono";
+
90  if($codec == TeamSpeak3::CODEC_OPUS_VOICE)
+
91  return "Opus Voice";
+
92  if($codec == TeamSpeak3::CODEC_OPUS_MUSIC)
+
93  return "Opus Music";
+
94 
+
95  return "Unknown";
+
96  }
+
+
+
+ +
+
+ + + + + +
+ + + + + + + + +
static TeamSpeak3_Helper_Convert::groupType ( $type)
+
+static
+
+ +

Converts a given group type ID to a human readable name.

+
Parameters
+ + +
integer$type
+
+
+
Returns
string
+ +

Definition at line 104 of file Convert.php.

+ +

References TeamSpeak3\GROUP_DBTYPE_REGULAR, TeamSpeak3\GROUP_DBTYPE_SERVERQUERY, and TeamSpeak3\GROUP_DBTYPE_TEMPLATE.

+ +

Referenced by TeamSpeak3_Viewer_Html\getCorpusTitle().

+
105  {
+ +
107  return "Template";
+ +
109  return "Regular";
+ +
111  return "ServerQuery";
+
112 
+
113  return "Unknown";
+
114  }
+
+
+
+ +
+
+ + + + + +
+ + + + + + + + +
static TeamSpeak3_Helper_Convert::permissionType ( $type)
+
+static
+
+ +

Converts a given permission type ID to a human readable name.

+
Parameters
+ + +
integer$type
+
+
+
Returns
string
+ +

Definition at line 122 of file Convert.php.

+ +

References TeamSpeak3\PERM_TYPE_CHANNEL, TeamSpeak3\PERM_TYPE_CHANNELCLIENT, TeamSpeak3\PERM_TYPE_CHANNELGROUP, TeamSpeak3\PERM_TYPE_CLIENT, and TeamSpeak3\PERM_TYPE_SERVERGROUP.

+
123  {
+ +
125  return "Server Group";
+
126  if($type == TeamSpeak3::PERM_TYPE_CLIENT)
+
127  return "Client";
+
128  if($type == TeamSpeak3::PERM_TYPE_CHANNEL)
+
129  return "Channel";
+ +
131  return "Channel Group";
+ +
133  return "Channel Client";
+
134 
+
135  return "Unknown";
+
136  }
+
+
+
+ +
+
+ + + + + +
+ + + + + + + + +
static TeamSpeak3_Helper_Convert::permissionCategory ( $pcat)
+
+static
+
+ +

Converts a given permission category value to a human readable name.

+
Parameters
+ + +
integer$pcat
+
+
+
Returns
string
+ +

Definition at line 144 of file Convert.php.

+ +

References TeamSpeak3\PERM_CAT_CHANNEL, TeamSpeak3\PERM_CAT_CHANNEL_ACCESS, TeamSpeak3\PERM_CAT_CHANNEL_CREATE, TeamSpeak3\PERM_CAT_CHANNEL_DELETE, TeamSpeak3\PERM_CAT_CHANNEL_INFORMATION, TeamSpeak3\PERM_CAT_CHANNEL_MODIFY, TeamSpeak3\PERM_CAT_CLIENT, TeamSpeak3\PERM_CAT_CLIENT_ADM_ACTIONS, TeamSpeak3\PERM_CAT_CLIENT_BASICS, TeamSpeak3\PERM_CAT_CLIENT_INFORMATION, TeamSpeak3\PERM_CAT_CLIENT_MODIFY, TeamSpeak3\PERM_CAT_FILETRANSFER, TeamSpeak3\PERM_CAT_GLOBAL, TeamSpeak3\PERM_CAT_GLOBAL_ADM_ACTIONS, TeamSpeak3\PERM_CAT_GLOBAL_INFORMATION, TeamSpeak3\PERM_CAT_GLOBAL_SERVER_MGMT, TeamSpeak3\PERM_CAT_GLOBAL_SETTINGS, TeamSpeak3\PERM_CAT_GROUP, TeamSpeak3\PERM_CAT_GROUP_CREATE, TeamSpeak3\PERM_CAT_GROUP_DELETE, TeamSpeak3\PERM_CAT_GROUP_INFORMATION, TeamSpeak3\PERM_CAT_GROUP_MODIFY, TeamSpeak3\PERM_CAT_NEEDED_MODIFY_POWER, TeamSpeak3\PERM_CAT_SERVER, TeamSpeak3\PERM_CAT_SERVER_ADM_ACTIONS, TeamSpeak3\PERM_CAT_SERVER_INFORMATION, and TeamSpeak3\PERM_CAT_SERVER_SETTINGS.

+ +

Referenced by TeamSpeak3_Node_Host\permissionTree().

+
145  {
+
146  if($pcat == TeamSpeak3::PERM_CAT_GLOBAL)
+
147  return "Global";
+ +
149  return "Global / Information";
+ +
151  return "Global / Virtual Server Management";
+ +
153  return "Global / Administration";
+ +
155  return "Global / Settings";
+
156  if($pcat == TeamSpeak3::PERM_CAT_SERVER)
+
157  return "Virtual Server";
+ +
159  return "Virtual Server / Information";
+ +
161  return "Virtual Server / Administration";
+ +
163  return "Virtual Server / Settings";
+
164  if($pcat == TeamSpeak3::PERM_CAT_CHANNEL)
+
165  return "Channel";
+ +
167  return "Channel / Information";
+ +
169  return "Channel / Create";
+ +
171  return "Channel / Modify";
+ +
173  return "Channel / Delete";
+ +
175  return "Channel / Access";
+
176  if($pcat == TeamSpeak3::PERM_CAT_GROUP)
+
177  return "Group";
+ +
179  return "Group / Information";
+ +
181  return "Group / Create";
+ +
183  return "Group / Modify";
+ +
185  return "Group / Delete";
+
186  if($pcat == TeamSpeak3::PERM_CAT_CLIENT)
+
187  return "Client";
+ +
189  return "Client / Information";
+ +
191  return "Client / Admin";
+ +
193  return "Client / Basics";
+ +
195  return "Client / Modify";
+ +
197  return "File Transfer";
+ +
199  return "Grant";
+
200 
+
201  return "Unknown";
+
202  }
+
+
+
+ +
+
+ + + + + +
+ + + + + + + + +
static TeamSpeak3_Helper_Convert::logLevel ( $level)
+
+static
+
+ +

Converts a given log level ID to a human readable name and vice versa.

+
Parameters
+ + +
mixed$level
+
+
+
Returns
string
+ +

Definition at line 210 of file Convert.php.

+ +

References TeamSpeak3\LOGLEVEL_CRITICAL, TeamSpeak3\LOGLEVEL_DEBUG, TeamSpeak3\LOGLEVEL_DEVEL, TeamSpeak3\LOGLEVEL_ERROR, TeamSpeak3\LOGLEVEL_INFO, and TeamSpeak3\LOGLEVEL_WARNING.

+
211  {
+
212  if(is_numeric($level))
+
213  {
+
214  if($level == TeamSpeak3::LOGLEVEL_CRITICAL)
+
215  return "CRITICAL";
+
216  if($level == TeamSpeak3::LOGLEVEL_ERROR)
+
217  return "ERROR";
+
218  if($level == TeamSpeak3::LOGLEVEL_DEBUG)
+
219  return "DEBUG";
+
220  if($level == TeamSpeak3::LOGLEVEL_WARNING)
+
221  return "WARNING";
+
222  if($level == TeamSpeak3::LOGLEVEL_INFO)
+
223  return "INFO";
+
224 
+
225  return "DEVELOP";
+
226  }
+
227  else
+
228  {
+
229  if(strtoupper($level) == "CRITICAL")
+ +
231  if(strtoupper($level) == "ERROR")
+ +
233  if(strtoupper($level) == "DEBUG")
+ +
235  if(strtoupper($level) == "WARNING")
+ +
237  if(strtoupper($level) == "INFO")
+ +
239 
+ +
241  }
+
242  }
+
+
+
+ +
+
+ + + + + +
+ + + + + + + + +
static TeamSpeak3_Helper_Convert::logEntry ( $entry)
+
+static
+
+ +

Converts a specified log entry string into an array containing the data.

+
Parameters
+ + +
string$entry
+
+
+
Returns
array
+ +

Definition at line 250 of file Convert.php.

+ +

References TeamSpeak3_Helper_String\factory(), and TeamSpeak3\LOGLEVEL_ERROR.

+
251  {
+
252  $parts = explode("|", $entry, 5);
+
253  $array = array();
+
254 
+
255  if(count($parts) != 5)
+
256  {
+
257  $array["timestamp"] = 0;
+
258  $array["level"] = TeamSpeak3::LOGLEVEL_ERROR;
+
259  $array["channel"] = "ParamParser";
+
260  $array["server_id"] = "";
+
261  $array["msg"] = TeamSpeak3_Helper_String::factory("convert error (" . trim($entry) . ")");
+
262  $array["msg_plain"] = $entry;
+
263  $array["malformed"] = TRUE;
+
264  }
+
265  else
+
266  {
+
267  $array["timestamp"] = strtotime(trim($parts[0]));
+
268  $array["level"] = self::logLevel(trim($parts[1]));
+
269  $array["channel"] = trim($parts[2]);
+
270  $array["server_id"] = trim($parts[3]);
+
271  $array["msg"] = TeamSpeak3_Helper_String::factory(trim($parts[4]));
+
272  $array["msg_plain"] = $entry;
+
273  $array["malformed"] = FALSE;
+
274  }
+
275 
+
276  return $array;
+
277  }
+
+
+
+ +
+
+ + + + + +
+ + + + + + + + +
static TeamSpeak3_Helper_Convert::password ( $plain)
+
+static
+
+ +

Converts a given string to a ServerQuery password hash.

+
Parameters
+ + +
string$plain
+
+
+
Returns
string
+ +

Definition at line 285 of file Convert.php.

+
286  {
+
287  return base64_encode(sha1($plain, TRUE));
+
288  }
+
+
+
+ +
+
+ + + + + +
+ + + + + + + + + + + + + + + + + + +
static TeamSpeak3_Helper_Convert::version ( $version,
 $format = "Y-m-d h:i:s" 
)
+
+static
+
+ +

Returns a client-like formatted version of the TeamSpeak 3 version string.

+
Parameters
+ + + +
string$version
string$format
+
+
+
Returns
string
+ +

Definition at line 297 of file Convert.php.

+ +

Referenced by TeamSpeak3_Node_Abstract\getInfo().

+
297  :i:s")
+
298  {
+
299  if(!$version instanceof TeamSpeak3_Helper_String)
+
300  {
+
301  $version = new TeamSpeak3_Helper_String($version);
+
302  }
+
303 
+
304  $buildno = $version->section("[", 1)->filterDigits()->toInt();
+
305 
+
306  return ($buildno <= 15001) ? $version : $version->section("[")->append("(" . date($format, $buildno) . ")");
+
307  }
+
+
+
+ +
+
+ + + + + +
+ + + + + + + + +
static TeamSpeak3_Helper_Convert::versionShort ( $version)
+
+static
+
+ +

Returns a client-like short-formatted version of the TeamSpeak 3 version string.

+
Parameters
+ + +
string$version
+
+
+
Returns
string
+ +

Definition at line 315 of file Convert.php.

+ +

Referenced by TeamSpeak3_Viewer_Html\getCorpusTitle().

+
316  {
+
317  if(!$version instanceof TeamSpeak3_Helper_String)
+
318  {
+
319  $version = new TeamSpeak3_Helper_String($version);
+
320  }
+
321 
+
322  return $version->section(" ", 0);
+
323  }
+
+
+
+ +
+
+ + + + + +
+ + + + + + + + +
static TeamSpeak3_Helper_Convert::imageMimeType ( $binary)
+
+static
+
+ +

Tries to detect the type of an image by a given string and returns it.

+
Parameters
+ + +
string$binary
+
+
+
Returns
string
+ +

Definition at line 331 of file Convert.php.

+ +

Referenced by TeamSpeak3_Viewer_Html\getSuffixIconChannel(), TeamSpeak3_Viewer_Html\getSuffixIconClient(), and TeamSpeak3_Viewer_Html\getSuffixIconServer().

+
332  {
+
333  if(!preg_match('/\A(?:(\xff\xd8\xff)|(GIF8[79]a)|(\x89PNG\x0d\x0a)|(BM)|(\x49\x49(\x2a\x00|\x00\x4a))|(FORM.{4}ILBM))/', $binary, $matches))
+
334  {
+
335  return "application/octet-stream";
+
336  }
+
337 
+
338  $type = array(
+
339  1 => "image/jpeg",
+
340  2 => "image/gif",
+
341  3 => "image/png",
+
342  4 => "image/x-windows-bmp",
+
343  5 => "image/tiff",
+
344  6 => "image/x-ilbm",
+
345  );
+
346 
+
347  return $type[count($matches)-1];
+
348  }
+
+
+
+
The documentation for this class was generated from the following file: +
+
+ + + + diff --git a/lib/docs/html/class_team_speak3___helper___crypt-members.html b/lib/docs/html/class_team_speak3___helper___crypt-members.html new file mode 100644 index 0000000..15441c5 --- /dev/null +++ b/lib/docs/html/class_team_speak3___helper___crypt-members.html @@ -0,0 +1,136 @@ + + + + + + +TeamSpeak 3 PHP Framework: Member List + + + + + + + + + + + + + +
+
+ + + + + + + +
+
TeamSpeak 3 PHP Framework +  1.1.23 +
+
Copyright © Planet TeamSpeak. All rights reserved.
+
+
+ + + + + +
+
+ +
+
+
+ +
+ + + + +
+ +
+ +
+
+
TeamSpeak3_Helper_Crypt Member List
+
+
+ +

This is the complete list of members for TeamSpeak3_Helper_Crypt, including all inherited members.

+ + + + + + + + + + + +
$p (defined in TeamSpeak3_Helper_Crypt)TeamSpeak3_Helper_Cryptprotected
$passphrase (defined in TeamSpeak3_Helper_Crypt)TeamSpeak3_Helper_Cryptprotected
$s (defined in TeamSpeak3_Helper_Crypt)TeamSpeak3_Helper_Cryptprotected
__construct($secret)TeamSpeak3_Helper_Crypt
decipher(&$xl, &$xr)TeamSpeak3_Helper_Cryptprotected
decrypt($string)TeamSpeak3_Helper_Crypt
encipher(&$xl, &$xr)TeamSpeak3_Helper_Cryptprotected
encrypt($string)TeamSpeak3_Helper_Crypt
setDefaultKeys()TeamSpeak3_Helper_Cryptprotected
setSecretKey($passphrase)TeamSpeak3_Helper_Cryptprotected
+
+ + + + diff --git a/lib/docs/html/class_team_speak3___helper___crypt.html b/lib/docs/html/class_team_speak3___helper___crypt.html new file mode 100644 index 0000000..1e60ea4 --- /dev/null +++ b/lib/docs/html/class_team_speak3___helper___crypt.html @@ -0,0 +1,809 @@ + + + + + + +TeamSpeak 3 PHP Framework: TeamSpeak3_Helper_Crypt Class Reference + + + + + + + + + + + + + +
+
+ + + + + + + +
+
TeamSpeak 3 PHP Framework +  1.1.23 +
+
Copyright © Planet TeamSpeak. All rights reserved.
+
+
+ + + + + +
+
+ +
+
+
+ +
+ + + + +
+ +
+ +
+ +
+
TeamSpeak3_Helper_Crypt Class Reference
+
+
+ +

Helper class for data encryption. + More...

+ + + + + + + + + + + +

+Public Member Functions

 __construct ($secret)
 The TeamSpeak3_Helper_Crypt constructor. More...
 
 encrypt ($string)
 Encrypts a given string. More...
 
 decrypt ($string)
 Decrypts a given string. More...
 
+ + + + + + + + + + + + + +

+Protected Member Functions

 encipher (&$xl, &$xr)
 Enciphers a single 64-bit block. More...
 
 decipher (&$xl, &$xr)
 Deciphers a single 64-bit block. More...
 
 setSecretKey ($passphrase)
 Sets the secret key using the specified pasphrase. More...
 
 setDefaultKeys ()
 Sets the defult p and s keys. More...
 
+ + + + + + + +

+Protected Attributes

$passphrase = null
 
$p = array()
 
$s = array()
 
+

Detailed Description

+

Helper class for data encryption.

+ +

Definition at line 32 of file Crypt.php.

+

Constructor & Destructor Documentation

+ +
+
+ + + + + + + + +
TeamSpeak3_Helper_Crypt::__construct ( $secret)
+
+ +

The TeamSpeak3_Helper_Crypt constructor.

+
Parameters
+ + +
string$secret
+
+
+
Returns
TeamSpeak3_Helper_Crypt
+ +

Definition at line 61 of file Crypt.php.

+ +

References setDefaultKeys(), and setSecretKey().

+
62  {
+
63  $this->setDefaultKeys();
+
64  $this->setSecretKey($secret);
+
65  }
+
+
+
+

Member Function Documentation

+ +
+
+ + + + + + + + +
TeamSpeak3_Helper_Crypt::encrypt ( $string)
+
+ +

Encrypts a given string.

+
Parameters
+ + +
string$string
+
+
+
Returns
string
+ +

Definition at line 73 of file Crypt.php.

+ +

References encipher().

+
74  {
+
75  $string = trim($string);
+
76  $encryp = "";
+
77  $length = strlen($string);
+
78  $string .= str_repeat(chr(0), (8-($length%8))%8);
+
79 
+
80  for($i = 0; $i < $length; $i += 8)
+
81  {
+
82  list(,$xl,$xr) = unpack("N2", substr($string, $i, 8));
+
83  $this->encipher($xl, $xr);
+
84  $encryp .= pack("N2", $xl, $xr);
+
85  }
+
86 
+
87  return base64_encode($encryp);
+
88  }
+
+
+
+ +
+
+ + + + + + + + +
TeamSpeak3_Helper_Crypt::decrypt ( $string)
+
+ +

Decrypts a given string.

+
Parameters
+ + +
string$string
+
+
+
Returns
string
+ +

Definition at line 96 of file Crypt.php.

+ +

References decipher().

+
97  {
+
98  $string = base64_decode($string);
+
99  $decryp = "";
+
100  $length = strlen($string);
+
101  $string .= str_repeat(chr(0), (8-($length%8))%8);
+
102 
+
103  for($i = 0; $i < $length; $i += 8)
+
104  {
+
105  list(,$xl,$xr) = unpack("N2", substr($string, $i, 8));
+
106  $this->decipher($xl, $xr);
+
107  $decryp .= pack("N2", $xl, $xr);
+
108  }
+
109 
+
110  return trim($decryp);
+
111  }
+
+
+
+ +
+
+ + + + + +
+ + + + + + + + + + + + + + + + + + +
TeamSpeak3_Helper_Crypt::encipher ($xl,
$xr 
)
+
+protected
+
+ +

Enciphers a single 64-bit block.

+
Parameters
+ + + +
integer$xl
integer$xr
+
+
+ +

Definition at line 119 of file Crypt.php.

+ +

Referenced by encrypt(), and setSecretKey().

+
120  {
+
121  for($i = 0; $i < 16; $i++)
+
122  {
+
123  $temp = $xl ^ $this->p[$i];
+
124  $xl = ((($this->s[0][($temp>>24) & 255] + $this->s[1][($temp>>16) & 255]) ^ $this->s[2][($temp>>8) & 255]) + $this->s[3][$temp & 255]) ^ $xr;
+
125  $xr = $temp;
+
126  }
+
127 
+
128  $xr = $xl ^ $this->p[16];
+
129  $xl = $temp ^ $this->p[17];
+
130  }
+
+
+
+ +
+
+ + + + + +
+ + + + + + + + + + + + + + + + + + +
TeamSpeak3_Helper_Crypt::decipher ($xl,
$xr 
)
+
+protected
+
+ +

Deciphers a single 64-bit block.

+
Parameters
+ + + +
integer$xl
integer$xr
+
+
+
Returns
void
+ +

Definition at line 139 of file Crypt.php.

+ +

Referenced by decrypt().

+
140  {
+
141  for($i = 17; $i > 1; $i--)
+
142  {
+
143  $temp = $xl ^ $this->p[$i];
+
144  $xl = ((($this->s[0][($temp>>24) & 255] + $this->s[1][($temp>>16) & 255]) ^ $this->s[2][($temp>>8) & 255]) + $this->s[3][$temp & 255]) ^ $xr;
+
145  $xr = $temp;
+
146  }
+
147 
+
148  $xr = $xl ^ $this->p[1];
+
149  $xl = $temp ^ $this->p[0];
+
150  }
+
+
+
+ +
+
+ + + + + +
+ + + + + + + + +
TeamSpeak3_Helper_Crypt::setSecretKey ( $passphrase)
+
+protected
+
+ +

Sets the secret key using the specified pasphrase.

+
Parameters
+ + +
string$passphrase
+
+
+
Exceptions
+ + +
Habitat_Exception
+
+
+
Returns
void
+ +

Definition at line 159 of file Crypt.php.

+ +

References encipher().

+ +

Referenced by __construct().

+
160  {
+
161  $length = strlen($passphrase);
+
162 
+
163  if(strlen($passphrase) < 1 || strlen($passphrase) > 56)
+
164  {
+
165  throw new TeamSpeak3_Helper_Exception("secret passphrase must contain at least one but less than 56 characters");
+
166  }
+
167 
+
168  $k = 0;
+
169  $data = 0;
+
170  $datal = 0;
+
171  $datar = 0;
+
172 
+
173  for($i = 0; $i < 18; $i++)
+
174  {
+
175  $data = 0;
+
176  for($j = 4; $j > 0; $j--)
+
177  {
+
178  $data = $data << 8 | ord($passphrase{$k});
+
179  $k = ($k+1) % $length;
+
180  }
+
181  $this->p[$i] ^= $data;
+
182  }
+
183 
+
184 
+
185  for($i = 0; $i <= 16; $i += 2)
+
186  {
+
187  $this->encipher($datal, $datar);
+
188  $this->p[$i] = $datal;
+
189  $this->p[$i+1] = $datar;
+
190  }
+
191 
+
192  foreach($this->s as $key => $val)
+
193  {
+
194  for ($i = 0; $i < 256; $i += 2)
+
195  {
+
196  $this->encipher($datal, $datar);
+
197  $this->s[$key][$i] = $datal;
+
198  $this->s[$key][$i+1] = $datar;
+
199  }
+
200  }
+
201  }
+
+
+
+ +
+
+ + + + + +
+ + + + + + + +
TeamSpeak3_Helper_Crypt::setDefaultKeys ()
+
+protected
+
+ +

Sets the defult p and s keys.

+
Returns
void
+ +

Definition at line 208 of file Crypt.php.

+ +

Referenced by __construct().

+
209  {
+
210  $this->p = array(
+
211  0x243F6A88, 0x85A308D3, 0x13198A2E, 0x03707344, 0xA4093822, 0x299F31D0,
+
212  0x082EFA98, 0xEC4E6C89, 0x452821E6, 0x38D01377, 0xBE5466CF, 0x34E90C6C,
+
213  0xC0AC29B7, 0xC97C50DD, 0x3F84D5B5, 0xB5470917, 0x9216D5D9, 0x8979FB1B,
+
214  );
+
215  $this->s = array(
+
216  array(
+
217  0xD1310BA6, 0x98DFB5AC, 0x2FFD72DB, 0xD01ADFB7,
+
218  0xB8E1AFED, 0x6A267E96, 0xBA7C9045, 0xF12C7F99,
+
219  0x24A19947, 0xB3916CF7, 0x0801F2E2, 0x858EFC16,
+
220  0x636920D8, 0x71574E69, 0xA458FEA3, 0xF4933D7E,
+
221  0x0D95748F, 0x728EB658, 0x718BCD58, 0x82154AEE,
+
222  0x7B54A41D, 0xC25A59B5, 0x9C30D539, 0x2AF26013,
+
223  0xC5D1B023, 0x286085F0, 0xCA417918, 0xB8DB38EF,
+
224  0x8E79DCB0, 0x603A180E, 0x6C9E0E8B, 0xB01E8A3E,
+
225  0xD71577C1, 0xBD314B27, 0x78AF2FDA, 0x55605C60,
+
226  0xE65525F3, 0xAA55AB94, 0x57489862, 0x63E81440,
+
227  0x55CA396A, 0x2AAB10B6, 0xB4CC5C34, 0x1141E8CE,
+
228  0xA15486AF, 0x7C72E993, 0xB3EE1411, 0x636FBC2A,
+
229  0x2BA9C55D, 0x741831F6, 0xCE5C3E16, 0x9B87931E,
+
230  0xAFD6BA33, 0x6C24CF5C, 0x7A325381, 0x28958677,
+
231  0x3B8F4898, 0x6B4BB9AF, 0xC4BFE81B, 0x66282193,
+
232  0x61D809CC, 0xFB21A991, 0x487CAC60, 0x5DEC8032,
+
233  0xEF845D5D, 0xE98575B1, 0xDC262302, 0xEB651B88,
+
234  0x23893E81, 0xD396ACC5, 0x0F6D6FF3, 0x83F44239,
+
235  0x2E0B4482, 0xA4842004, 0x69C8F04A, 0x9E1F9B5E,
+
236  0x21C66842, 0xF6E96C9A, 0x670C9C61, 0xABD388F0,
+
237  0x6A51A0D2, 0xD8542F68, 0x960FA728, 0xAB5133A3,
+
238  0x6EEF0B6C, 0x137A3BE4, 0xBA3BF050, 0x7EFB2A98,
+
239  0xA1F1651D, 0x39AF0176, 0x66CA593E, 0x82430E88,
+
240  0x8CEE8619, 0x456F9FB4, 0x7D84A5C3, 0x3B8B5EBE,
+
241  0xE06F75D8, 0x85C12073, 0x401A449F, 0x56C16AA6,
+
242  0x4ED3AA62, 0x363F7706, 0x1BFEDF72, 0x429B023D,
+
243  0x37D0D724, 0xD00A1248, 0xDB0FEAD3, 0x49F1C09B,
+
244  0x075372C9, 0x80991B7B, 0x25D479D8, 0xF6E8DEF7,
+
245  0xE3FE501A, 0xB6794C3B, 0x976CE0BD, 0x04C006BA,
+
246  0xC1A94FB6, 0x409F60C4, 0x5E5C9EC2, 0x196A2463,
+
247  0x68FB6FAF, 0x3E6C53B5, 0x1339B2EB, 0x3B52EC6F,
+
248  0x6DFC511F, 0x9B30952C, 0xCC814544, 0xAF5EBD09,
+
249  0xBEE3D004, 0xDE334AFD, 0x660F2807, 0x192E4BB3,
+
250  0xC0CBA857, 0x45C8740F, 0xD20B5F39, 0xB9D3FBDB,
+
251  0x5579C0BD, 0x1A60320A, 0xD6A100C6, 0x402C7279,
+
252  0x679F25FE, 0xFB1FA3CC, 0x8EA5E9F8, 0xDB3222F8,
+
253  0x3C7516DF, 0xFD616B15, 0x2F501EC8, 0xAD0552AB,
+
254  0x323DB5FA, 0xFD238760, 0x53317B48, 0x3E00DF82,
+
255  0x9E5C57BB, 0xCA6F8CA0, 0x1A87562E, 0xDF1769DB,
+
256  0xD542A8F6, 0x287EFFC3, 0xAC6732C6, 0x8C4F5573,
+
257  0x695B27B0, 0xBBCA58C8, 0xE1FFA35D, 0xB8F011A0,
+
258  0x10FA3D98, 0xFD2183B8, 0x4AFCB56C, 0x2DD1D35B,
+
259  0x9A53E479, 0xB6F84565, 0xD28E49BC, 0x4BFB9790,
+
260  0xE1DDF2DA, 0xA4CB7E33, 0x62FB1341, 0xCEE4C6E8,
+
261  0xEF20CADA, 0x36774C01, 0xD07E9EFE, 0x2BF11FB4,
+
262  0x95DBDA4D, 0xAE909198, 0xEAAD8E71, 0x6B93D5A0,
+
263  0xD08ED1D0, 0xAFC725E0, 0x8E3C5B2F, 0x8E7594B7,
+
264  0x8FF6E2FB, 0xF2122B64, 0x8888B812, 0x900DF01C,
+
265  0x4FAD5EA0, 0x688FC31C, 0xD1CFF191, 0xB3A8C1AD,
+
266  0x2F2F2218, 0xBE0E1777, 0xEA752DFE, 0x8B021FA1,
+
267  0xE5A0CC0F, 0xB56F74E8, 0x18ACF3D6, 0xCE89E299,
+
268  0xB4A84FE0, 0xFD13E0B7, 0x7CC43B81, 0xD2ADA8D9,
+
269  0x165FA266, 0x80957705, 0x93CC7314, 0x211A1477,
+
270  0xE6AD2065, 0x77B5FA86, 0xC75442F5, 0xFB9D35CF,
+
271  0xEBCDAF0C, 0x7B3E89A0, 0xD6411BD3, 0xAE1E7E49,
+
272  0x00250E2D, 0x2071B35E, 0x226800BB, 0x57B8E0AF,
+
273  0x2464369B, 0xF009B91E, 0x5563911D, 0x59DFA6AA,
+
274  0x78C14389, 0xD95A537F, 0x207D5BA2, 0x02E5B9C5,
+
275  0x83260376, 0x6295CFA9, 0x11C81968, 0x4E734A41,
+
276  0xB3472DCA, 0x7B14A94A, 0x1B510052, 0x9A532915,
+
277  0xD60F573F, 0xBC9BC6E4, 0x2B60A476, 0x81E67400,
+
278  0x08BA6FB5, 0x571BE91F, 0xF296EC6B, 0x2A0DD915,
+
279  0xB6636521, 0xE7B9F9B6, 0xFF34052E, 0xC5855664,
+
280  0x53B02D5D, 0xA99F8FA1, 0x08BA4799, 0x6E85076A
+
281  ),
+
282  array(
+
283  0x4B7A70E9, 0xB5B32944, 0xDB75092E, 0xC4192623,
+
284  0xAD6EA6B0, 0x49A7DF7D, 0x9CEE60B8, 0x8FEDB266,
+
285  0xECAA8C71, 0x699A17FF, 0x5664526C, 0xC2B19EE1,
+
286  0x193602A5, 0x75094C29, 0xA0591340, 0xE4183A3E,
+
287  0x3F54989A, 0x5B429D65, 0x6B8FE4D6, 0x99F73FD6,
+
288  0xA1D29C07, 0xEFE830F5, 0x4D2D38E6, 0xF0255DC1,
+
289  0x4CDD2086, 0x8470EB26, 0x6382E9C6, 0x021ECC5E,
+
290  0x09686B3F, 0x3EBAEFC9, 0x3C971814, 0x6B6A70A1,
+
291  0x687F3584, 0x52A0E286, 0xB79C5305, 0xAA500737,
+
292  0x3E07841C, 0x7FDEAE5C, 0x8E7D44EC, 0x5716F2B8,
+
293  0xB03ADA37, 0xF0500C0D, 0xF01C1F04, 0x0200B3FF,
+
294  0xAE0CF51A, 0x3CB574B2, 0x25837A58, 0xDC0921BD,
+
295  0xD19113F9, 0x7CA92FF6, 0x94324773, 0x22F54701,
+
296  0x3AE5E581, 0x37C2DADC, 0xC8B57634, 0x9AF3DDA7,
+
297  0xA9446146, 0x0FD0030E, 0xECC8C73E, 0xA4751E41,
+
298  0xE238CD99, 0x3BEA0E2F, 0x3280BBA1, 0x183EB331,
+
299  0x4E548B38, 0x4F6DB908, 0x6F420D03, 0xF60A04BF,
+
300  0x2CB81290, 0x24977C79, 0x5679B072, 0xBCAF89AF,
+
301  0xDE9A771F, 0xD9930810, 0xB38BAE12, 0xDCCF3F2E,
+
302  0x5512721F, 0x2E6B7124, 0x501ADDE6, 0x9F84CD87,
+
303  0x7A584718, 0x7408DA17, 0xBC9F9ABC, 0xE94B7D8C,
+
304  0xEC7AEC3A, 0xDB851DFA, 0x63094366, 0xC464C3D2,
+
305  0xEF1C1847, 0x3215D908, 0xDD433B37, 0x24C2BA16,
+
306  0x12A14D43, 0x2A65C451, 0x50940002, 0x133AE4DD,
+
307  0x71DFF89E, 0x10314E55, 0x81AC77D6, 0x5F11199B,
+
308  0x043556F1, 0xD7A3C76B, 0x3C11183B, 0x5924A509,
+
309  0xF28FE6ED, 0x97F1FBFA, 0x9EBABF2C, 0x1E153C6E,
+
310  0x86E34570, 0xEAE96FB1, 0x860E5E0A, 0x5A3E2AB3,
+
311  0x771FE71C, 0x4E3D06FA, 0x2965DCB9, 0x99E71D0F,
+
312  0x803E89D6, 0x5266C825, 0x2E4CC978, 0x9C10B36A,
+
313  0xC6150EBA, 0x94E2EA78, 0xA5FC3C53, 0x1E0A2DF4,
+
314  0xF2F74EA7, 0x361D2B3D, 0x1939260F, 0x19C27960,
+
315  0x5223A708, 0xF71312B6, 0xEBADFE6E, 0xEAC31F66,
+
316  0xE3BC4595, 0xA67BC883, 0xB17F37D1, 0x018CFF28,
+
317  0xC332DDEF, 0xBE6C5AA5, 0x65582185, 0x68AB9802,
+
318  0xEECEA50F, 0xDB2F953B, 0x2AEF7DAD, 0x5B6E2F84,
+
319  0x1521B628, 0x29076170, 0xECDD4775, 0x619F1510,
+
320  0x13CCA830, 0xEB61BD96, 0x0334FE1E, 0xAA0363CF,
+
321  0xB5735C90, 0x4C70A239, 0xD59E9E0B, 0xCBAADE14,
+
322  0xEECC86BC, 0x60622CA7, 0x9CAB5CAB, 0xB2F3846E,
+
323  0x648B1EAF, 0x19BDF0CA, 0xA02369B9, 0x655ABB50,
+
324  0x40685A32, 0x3C2AB4B3, 0x319EE9D5, 0xC021B8F7,
+
325  0x9B540B19, 0x875FA099, 0x95F7997E, 0x623D7DA8,
+
326  0xF837889A, 0x97E32D77, 0x11ED935F, 0x16681281,
+
327  0x0E358829, 0xC7E61FD6, 0x96DEDFA1, 0x7858BA99,
+
328  0x57F584A5, 0x1B227263, 0x9B83C3FF, 0x1AC24696,
+
329  0xCDB30AEB, 0x532E3054, 0x8FD948E4, 0x6DBC3128,
+
330  0x58EBF2EF, 0x34C6FFEA, 0xFE28ED61, 0xEE7C3C73,
+
331  0x5D4A14D9, 0xE864B7E3, 0x42105D14, 0x203E13E0,
+
332  0x45EEE2B6, 0xA3AAABEA, 0xDB6C4F15, 0xFACB4FD0,
+
333  0xC742F442, 0xEF6ABBB5, 0x654F3B1D, 0x41CD2105,
+
334  0xD81E799E, 0x86854DC7, 0xE44B476A, 0x3D816250,
+
335  0xCF62A1F2, 0x5B8D2646, 0xFC8883A0, 0xC1C7B6A3,
+
336  0x7F1524C3, 0x69CB7492, 0x47848A0B, 0x5692B285,
+
337  0x095BBF00, 0xAD19489D, 0x1462B174, 0x23820E00,
+
338  0x58428D2A, 0x0C55F5EA, 0x1DADF43E, 0x233F7061,
+
339  0x3372F092, 0x8D937E41, 0xD65FECF1, 0x6C223BDB,
+
340  0x7CDE3759, 0xCBEE7460, 0x4085F2A7, 0xCE77326E,
+
341  0xA6078084, 0x19F8509E, 0xE8EFD855, 0x61D99735,
+
342  0xA969A7AA, 0xC50C06C2, 0x5A04ABFC, 0x800BCADC,
+
343  0x9E447A2E, 0xC3453484, 0xFDD56705, 0x0E1E9EC9,
+
344  0xDB73DBD3, 0x105588CD, 0x675FDA79, 0xE3674340,
+
345  0xC5C43465, 0x713E38D8, 0x3D28F89E, 0xF16DFF20,
+
346  0x153E21E7, 0x8FB03D4A, 0xE6E39F2B, 0xDB83ADF7
+
347  ),
+
348  array(
+
349  0xE93D5A68, 0x948140F7, 0xF64C261C, 0x94692934,
+
350  0x411520F7, 0x7602D4F7, 0xBCF46B2E, 0xD4A20068,
+
351  0xD4082471, 0x3320F46A, 0x43B7D4B7, 0x500061AF,
+
352  0x1E39F62E, 0x97244546, 0x14214F74, 0xBF8B8840,
+
353  0x4D95FC1D, 0x96B591AF, 0x70F4DDD3, 0x66A02F45,
+
354  0xBFBC09EC, 0x03BD9785, 0x7FAC6DD0, 0x31CB8504,
+
355  0x96EB27B3, 0x55FD3941, 0xDA2547E6, 0xABCA0A9A,
+
356  0x28507825, 0x530429F4, 0x0A2C86DA, 0xE9B66DFB,
+
357  0x68DC1462, 0xD7486900, 0x680EC0A4, 0x27A18DEE,
+
358  0x4F3FFEA2, 0xE887AD8C, 0xB58CE006, 0x7AF4D6B6,
+
359  0xAACE1E7C, 0xD3375FEC, 0xCE78A399, 0x406B2A42,
+
360  0x20FE9E35, 0xD9F385B9, 0xEE39D7AB, 0x3B124E8B,
+
361  0x1DC9FAF7, 0x4B6D1856, 0x26A36631, 0xEAE397B2,
+
362  0x3A6EFA74, 0xDD5B4332, 0x6841E7F7, 0xCA7820FB,
+
363  0xFB0AF54E, 0xD8FEB397, 0x454056AC, 0xBA489527,
+
364  0x55533A3A, 0x20838D87, 0xFE6BA9B7, 0xD096954B,
+
365  0x55A867BC, 0xA1159A58, 0xCCA92963, 0x99E1DB33,
+
366  0xA62A4A56, 0x3F3125F9, 0x5EF47E1C, 0x9029317C,
+
367  0xFDF8E802, 0x04272F70, 0x80BB155C, 0x05282CE3,
+
368  0x95C11548, 0xE4C66D22, 0x48C1133F, 0xC70F86DC,
+
369  0x07F9C9EE, 0x41041F0F, 0x404779A4, 0x5D886E17,
+
370  0x325F51EB, 0xD59BC0D1, 0xF2BCC18F, 0x41113564,
+
371  0x257B7834, 0x602A9C60, 0xDFF8E8A3, 0x1F636C1B,
+
372  0x0E12B4C2, 0x02E1329E, 0xAF664FD1, 0xCAD18115,
+
373  0x6B2395E0, 0x333E92E1, 0x3B240B62, 0xEEBEB922,
+
374  0x85B2A20E, 0xE6BA0D99, 0xDE720C8C, 0x2DA2F728,
+
375  0xD0127845, 0x95B794FD, 0x647D0862, 0xE7CCF5F0,
+
376  0x5449A36F, 0x877D48FA, 0xC39DFD27, 0xF33E8D1E,
+
377  0x0A476341, 0x992EFF74, 0x3A6F6EAB, 0xF4F8FD37,
+
378  0xA812DC60, 0xA1EBDDF8, 0x991BE14C, 0xDB6E6B0D,
+
379  0xC67B5510, 0x6D672C37, 0x2765D43B, 0xDCD0E804,
+
380  0xF1290DC7, 0xCC00FFA3, 0xB5390F92, 0x690FED0B,
+
381  0x667B9FFB, 0xCEDB7D9C, 0xA091CF0B, 0xD9155EA3,
+
382  0xBB132F88, 0x515BAD24, 0x7B9479BF, 0x763BD6EB,
+
383  0x37392EB3, 0xCC115979, 0x8026E297, 0xF42E312D,
+
384  0x6842ADA7, 0xC66A2B3B, 0x12754CCC, 0x782EF11C,
+
385  0x6A124237, 0xB79251E7, 0x06A1BBE6, 0x4BFB6350,
+
386  0x1A6B1018, 0x11CAEDFA, 0x3D25BDD8, 0xE2E1C3C9,
+
387  0x44421659, 0x0A121386, 0xD90CEC6E, 0xD5ABEA2A,
+
388  0x64AF674E, 0xDA86A85F, 0xBEBFE988, 0x64E4C3FE,
+
389  0x9DBC8057, 0xF0F7C086, 0x60787BF8, 0x6003604D,
+
390  0xD1FD8346, 0xF6381FB0, 0x7745AE04, 0xD736FCCC,
+
391  0x83426B33, 0xF01EAB71, 0xB0804187, 0x3C005E5F,
+
392  0x77A057BE, 0xBDE8AE24, 0x55464299, 0xBF582E61,
+
393  0x4E58F48F, 0xF2DDFDA2, 0xF474EF38, 0x8789BDC2,
+
394  0x5366F9C3, 0xC8B38E74, 0xB475F255, 0x46FCD9B9,
+
395  0x7AEB2661, 0x8B1DDF84, 0x846A0E79, 0x915F95E2,
+
396  0x466E598E, 0x20B45770, 0x8CD55591, 0xC902DE4C,
+
397  0xB90BACE1, 0xBB8205D0, 0x11A86248, 0x7574A99E,
+
398  0xB77F19B6, 0xE0A9DC09, 0x662D09A1, 0xC4324633,
+
399  0xE85A1F02, 0x09F0BE8C, 0x4A99A025, 0x1D6EFE10,
+
400  0x1AB93D1D, 0x0BA5A4DF, 0xA186F20F, 0x2868F169,
+
401  0xDCB7DA83, 0x573906FE, 0xA1E2CE9B, 0x4FCD7F52,
+
402  0x50115E01, 0xA70683FA, 0xA002B5C4, 0x0DE6D027,
+
403  0x9AF88C27, 0x773F8641, 0xC3604C06, 0x61A806B5,
+
404  0xF0177A28, 0xC0F586E0, 0x006058AA, 0x30DC7D62,
+
405  0x11E69ED7, 0x2338EA63, 0x53C2DD94, 0xC2C21634,
+
406  0xBBCBEE56, 0x90BCB6DE, 0xEBFC7DA1, 0xCE591D76,
+
407  0x6F05E409, 0x4B7C0188, 0x39720A3D, 0x7C927C24,
+
408  0x86E3725F, 0x724D9DB9, 0x1AC15BB4, 0xD39EB8FC,
+
409  0xED545578, 0x08FCA5B5, 0xD83D7CD3, 0x4DAD0FC4,
+
410  0x1E50EF5E, 0xB161E6F8, 0xA28514D9, 0x6C51133C,
+
411  0x6FD5C7E7, 0x56E14EC4, 0x362ABFCE, 0xDDC6C837,
+
412  0xD79A3234, 0x92638212, 0x670EFA8E, 0x406000E0
+
413  ),
+
414  array(
+
415  0x3A39CE37, 0xD3FAF5CF, 0xABC27737, 0x5AC52D1B,
+
416  0x5CB0679E, 0x4FA33742, 0xD3822740, 0x99BC9BBE,
+
417  0xD5118E9D, 0xBF0F7315, 0xD62D1C7E, 0xC700C47B,
+
418  0xB78C1B6B, 0x21A19045, 0xB26EB1BE, 0x6A366EB4,
+
419  0x5748AB2F, 0xBC946E79, 0xC6A376D2, 0x6549C2C8,
+
420  0x530FF8EE, 0x468DDE7D, 0xD5730A1D, 0x4CD04DC6,
+
421  0x2939BBDB, 0xA9BA4650, 0xAC9526E8, 0xBE5EE304,
+
422  0xA1FAD5F0, 0x6A2D519A, 0x63EF8CE2, 0x9A86EE22,
+
423  0xC089C2B8, 0x43242EF6, 0xA51E03AA, 0x9CF2D0A4,
+
424  0x83C061BA, 0x9BE96A4D, 0x8FE51550, 0xBA645BD6,
+
425  0x2826A2F9, 0xA73A3AE1, 0x4BA99586, 0xEF5562E9,
+
426  0xC72FEFD3, 0xF752F7DA, 0x3F046F69, 0x77FA0A59,
+
427  0x80E4A915, 0x87B08601, 0x9B09E6AD, 0x3B3EE593,
+
428  0xE990FD5A, 0x9E34D797, 0x2CF0B7D9, 0x022B8B51,
+
429  0x96D5AC3A, 0x017DA67D, 0xD1CF3ED6, 0x7C7D2D28,
+
430  0x1F9F25CF, 0xADF2B89B, 0x5AD6B472, 0x5A88F54C,
+
431  0xE029AC71, 0xE019A5E6, 0x47B0ACFD, 0xED93FA9B,
+
432  0xE8D3C48D, 0x283B57CC, 0xF8D56629, 0x79132E28,
+
433  0x785F0191, 0xED756055, 0xF7960E44, 0xE3D35E8C,
+
434  0x15056DD4, 0x88F46DBA, 0x03A16125, 0x0564F0BD,
+
435  0xC3EB9E15, 0x3C9057A2, 0x97271AEC, 0xA93A072A,
+
436  0x1B3F6D9B, 0x1E6321F5, 0xF59C66FB, 0x26DCF319,
+
437  0x7533D928, 0xB155FDF5, 0x03563482, 0x8ABA3CBB,
+
438  0x28517711, 0xC20AD9F8, 0xABCC5167, 0xCCAD925F,
+
439  0x4DE81751, 0x3830DC8E, 0x379D5862, 0x9320F991,
+
440  0xEA7A90C2, 0xFB3E7BCE, 0x5121CE64, 0x774FBE32,
+
441  0xA8B6E37E, 0xC3293D46, 0x48DE5369, 0x6413E680,
+
442  0xA2AE0810, 0xDD6DB224, 0x69852DFD, 0x09072166,
+
443  0xB39A460A, 0x6445C0DD, 0x586CDECF, 0x1C20C8AE,
+
444  0x5BBEF7DD, 0x1B588D40, 0xCCD2017F, 0x6BB4E3BB,
+
445  0xDDA26A7E, 0x3A59FF45, 0x3E350A44, 0xBCB4CDD5,
+
446  0x72EACEA8, 0xFA6484BB, 0x8D6612AE, 0xBF3C6F47,
+
447  0xD29BE463, 0x542F5D9E, 0xAEC2771B, 0xF64E6370,
+
448  0x740E0D8D, 0xE75B1357, 0xF8721671, 0xAF537D5D,
+
449  0x4040CB08, 0x4EB4E2CC, 0x34D2466A, 0x0115AF84,
+
450  0xE1B00428, 0x95983A1D, 0x06B89FB4, 0xCE6EA048,
+
451  0x6F3F3B82, 0x3520AB82, 0x011A1D4B, 0x277227F8,
+
452  0x611560B1, 0xE7933FDC, 0xBB3A792B, 0x344525BD,
+
453  0xA08839E1, 0x51CE794B, 0x2F32C9B7, 0xA01FBAC9,
+
454  0xE01CC87E, 0xBCC7D1F6, 0xCF0111C3, 0xA1E8AAC7,
+
455  0x1A908749, 0xD44FBD9A, 0xD0DADECB, 0xD50ADA38,
+
456  0x0339C32A, 0xC6913667, 0x8DF9317C, 0xE0B12B4F,
+
457  0xF79E59B7, 0x43F5BB3A, 0xF2D519FF, 0x27D9459C,
+
458  0xBF97222C, 0x15E6FC2A, 0x0F91FC71, 0x9B941525,
+
459  0xFAE59361, 0xCEB69CEB, 0xC2A86459, 0x12BAA8D1,
+
460  0xB6C1075E, 0xE3056A0C, 0x10D25065, 0xCB03A442,
+
461  0xE0EC6E0E, 0x1698DB3B, 0x4C98A0BE, 0x3278E964,
+
462  0x9F1F9532, 0xE0D392DF, 0xD3A0342B, 0x8971F21E,
+
463  0x1B0A7441, 0x4BA3348C, 0xC5BE7120, 0xC37632D8,
+
464  0xDF359F8D, 0x9B992F2E, 0xE60B6F47, 0x0FE3F11D,
+
465  0xE54CDA54, 0x1EDAD891, 0xCE6279CF, 0xCD3E7E6F,
+
466  0x1618B166, 0xFD2C1D05, 0x848FD2C5, 0xF6FB2299,
+
467  0xF523F357, 0xA6327623, 0x93A83531, 0x56CCCD02,
+
468  0xACF08162, 0x5A75EBB5, 0x6E163697, 0x88D273CC,
+
469  0xDE966292, 0x81B949D0, 0x4C50901B, 0x71C65614,
+
470  0xE6C6C7BD, 0x327A140A, 0x45E1D006, 0xC3F27B9A,
+
471  0xC9AA53FD, 0x62A80F00, 0xBB25BFE2, 0x35BDD2F6,
+
472  0x71126905, 0xB2040222, 0xB6CBCF7C, 0xCD769C2B,
+
473  0x53113EC0, 0x1640E3D3, 0x38ABBD60, 0x2547ADF0,
+
474  0xBA38209C, 0xF746CE76, 0x77AFA1C5, 0x20756060,
+
475  0x85CBFE4E, 0x8AE88DD8, 0x7AAAF9B0, 0x4CF9AA7E,
+
476  0x1948C25C, 0x02FB8A8C, 0x01C36AE4, 0xD6EBE1F9,
+
477  0x90D4F869, 0xA65CDEA0, 0x3F09252D, 0xC208E69F,
+
478  0xB74E6132, 0xCE77E25B, 0x578FDFE3, 0x3AC372E6
+
479  )
+
480  );
+
481  }
+
+
+
+
The documentation for this class was generated from the following file: +
+
+ + + + diff --git a/lib/docs/html/class_team_speak3___helper___crypt.js b/lib/docs/html/class_team_speak3___helper___crypt.js new file mode 100644 index 0000000..b786e12 --- /dev/null +++ b/lib/docs/html/class_team_speak3___helper___crypt.js @@ -0,0 +1,13 @@ +var class_team_speak3___helper___crypt = +[ + [ "__construct", "class_team_speak3___helper___crypt.html#aec18b53e735ecb9077edf004898d32d3", null ], + [ "encrypt", "class_team_speak3___helper___crypt.html#a23ce290df045657a686c2802fe826a74", null ], + [ "decrypt", "class_team_speak3___helper___crypt.html#a38a8da0e26045f49f76c718aaaceab60", null ], + [ "encipher", "class_team_speak3___helper___crypt.html#a0795a29c94afaf2e8642d7b9fe8aa0e7", null ], + [ "decipher", "class_team_speak3___helper___crypt.html#a7c0b9b5e2877bed5ad1147e46d44ee43", null ], + [ "setSecretKey", "class_team_speak3___helper___crypt.html#ade43c86c7fe887013b88f9f6a2e3011f", null ], + [ "setDefaultKeys", "class_team_speak3___helper___crypt.html#ad2d0754d453e7a5f638979f153489a21", null ], + [ "$passphrase", "class_team_speak3___helper___crypt.html#a533f9b405f3bb18a8c12e4270f354459", null ], + [ "$p", "class_team_speak3___helper___crypt.html#a4f951fb74cdb008df2f9edc3b5dcacd0", null ], + [ "$s", "class_team_speak3___helper___crypt.html#a5e753459986408209ed7a553d16c0d6e", null ] +]; \ No newline at end of file diff --git a/lib/docs/html/class_team_speak3___helper___exception-members.html b/lib/docs/html/class_team_speak3___helper___exception-members.html new file mode 100644 index 0000000..9327262 --- /dev/null +++ b/lib/docs/html/class_team_speak3___helper___exception-members.html @@ -0,0 +1,132 @@ + + + + + + +TeamSpeak 3 PHP Framework: Member List + + + + + + + + + + + + + +
+
+ + + + + + + +
+
TeamSpeak 3 PHP Framework +  1.1.23 +
+
Copyright © Planet TeamSpeak. All rights reserved.
+
+
+ + + + + +
+
+ +
+
+
+ +
+ + + + +
+ +
+ +
+
+
TeamSpeak3_Helper_Exception Member List
+
+
+ +

This is the complete list of members for TeamSpeak3_Helper_Exception, including all inherited members.

+ + + + + + + +
$messages (defined in TeamSpeak3_Exception)TeamSpeak3_Exceptionprotectedstatic
__construct($mesg, $code=0x00)TeamSpeak3_Exception
getSender()TeamSpeak3_Exception
prepareCustomMessage(TeamSpeak3_Helper_String $mesg)TeamSpeak3_Exceptionprotected
registerCustomMessage($code, $mesg)TeamSpeak3_Exceptionstatic
unregisterCustomMessage($code)TeamSpeak3_Exceptionstatic
+
+ + + + diff --git a/lib/docs/html/class_team_speak3___helper___exception.html b/lib/docs/html/class_team_speak3___helper___exception.html new file mode 100644 index 0000000..24acee6 --- /dev/null +++ b/lib/docs/html/class_team_speak3___helper___exception.html @@ -0,0 +1,378 @@ + + + + + + +TeamSpeak 3 PHP Framework: TeamSpeak3_Helper_Exception Class Reference + + + + + + + + + + + + + +
+
+ + + + + + + +
+
TeamSpeak 3 PHP Framework +  1.1.23 +
+
Copyright © Planet TeamSpeak. All rights reserved.
+
+
+ + + + + +
+
+ +
+
+
+ +
+ + + + +
+ +
+ + +
+ +

Enhanced exception class for TeamSpeak3_Helper_* objects. + More...

+
+ + Inheritance diagram for TeamSpeak3_Helper_Exception:
+
+
+ + + + + + +

+Public Member Functions

 getSender ()
 Returns the class from which the exception was thrown. More...
 
+ + + + + + + +

+Static Public Member Functions

static registerCustomMessage ($code, $mesg)
 Registers a custom error message to $code. More...
 
static unregisterCustomMessage ($code)
 Unregisters a custom error message from $code. More...
 
+ + + + +

+Protected Member Functions

 prepareCustomMessage (TeamSpeak3_Helper_String $mesg)
 Prepares a custom error message by replacing pre-defined signs with given values. More...
 
+ + + +

+Static Protected Attributes

+static $messages = array()
 
+

Detailed Description

+

Enhanced exception class for TeamSpeak3_Helper_* objects.

+ +

Definition at line 32 of file Exception.php.

+

Member Function Documentation

+ +
+
+ + + + + +
+ + + + + + + + +
TeamSpeak3_Exception::prepareCustomMessage (TeamSpeak3_Helper_String $mesg)
+
+protectedinherited
+
+ +

Prepares a custom error message by replacing pre-defined signs with given values.

+
Parameters
+ + +
TeamSpeak3_Helper_String$mesg
+
+
+
Returns
TeamSpeak3_Helper_String
+ +

Definition at line 66 of file Exception.php.

+ +

References TeamSpeak3_Helper_String\arg().

+ +

Referenced by TeamSpeak3_Exception\__construct().

+
67  {
+
68  $args = array(
+
69  "code" => $this->getCode(),
+
70  "mesg" => $this->getMessage(),
+
71  "line" => $this->getLine(),
+
72  "file" => $this->getFile(),
+
73  );
+
74 
+
75  return $mesg->arg($args)->toString();
+
76  }
+
+
+
+ +
+
+ + + + + +
+ + + + + + + + + + + + + + + + + + +
static TeamSpeak3_Exception::registerCustomMessage ( $code,
 $mesg 
)
+
+staticinherited
+
+ +

Registers a custom error message to $code.

+
Parameters
+ + + +
integer$code
string$mesg
+
+
+
Exceptions
+ + +
TeamSpeak3_Exception
+
+
+
Returns
void
+ +

Definition at line 86 of file Exception.php.

+
87  {
+
88  if(array_key_exists((int) $code, self::$messages))
+
89  {
+
90  throw new self("custom message for code 0x" . strtoupper(dechex($code)) . " is already registered");
+
91  }
+
92 
+
93  if(!is_string($mesg))
+
94  {
+
95  throw new self("custom message for code 0x" . strtoupper(dechex($code)) . " must be a string");
+
96  }
+
97 
+
98  self::$messages[(int) $code] = new TeamSpeak3_Helper_String($mesg);
+
99  }
+
+
+
+ +
+
+ + + + + +
+ + + + + + + + +
static TeamSpeak3_Exception::unregisterCustomMessage ( $code)
+
+staticinherited
+
+ +

Unregisters a custom error message from $code.

+
Parameters
+ + +
integer$code
+
+
+
Exceptions
+ + +
TeamSpeak3_Exception
+
+
+
Returns
void
+ +

Definition at line 108 of file Exception.php.

+
109  {
+
110  if(!array_key_exists((int) $code, self::$messages))
+
111  {
+
112  throw new self("custom message for code 0x" . strtoupper(dechex($code)) . " is not registered");
+
113  }
+
114 
+
115  unset(self::$messages[intval($code)]);
+
116  }
+
+
+
+ +
+
+ + + + + +
+ + + + + + + +
TeamSpeak3_Exception::getSender ()
+
+inherited
+
+ +

Returns the class from which the exception was thrown.

+
Returns
string
+ +

Definition at line 123 of file Exception.php.

+
124  {
+
125  $trace = $this->getTrace();
+
126 
+
127  return (isset($trace[0]["class"])) ? $trace[0]["class"] : "{main}";
+
128  }
+
+
+
+
The documentation for this class was generated from the following file: +
+
+ + + + diff --git a/lib/docs/html/class_team_speak3___helper___exception.js b/lib/docs/html/class_team_speak3___helper___exception.js new file mode 100644 index 0000000..2032d0c --- /dev/null +++ b/lib/docs/html/class_team_speak3___helper___exception.js @@ -0,0 +1,5 @@ +var class_team_speak3___helper___exception = +[ + [ "prepareCustomMessage", "class_team_speak3___helper___exception.html#a3bfcdf7b85a393b7a8b05b048ae3279c", null ], + [ "getSender", "class_team_speak3___helper___exception.html#ae7d4b369dd11d3cf56d120acae0cf1db", null ] +]; \ No newline at end of file diff --git a/lib/docs/html/class_team_speak3___helper___exception.png b/lib/docs/html/class_team_speak3___helper___exception.png new file mode 100644 index 0000000000000000000000000000000000000000..e53c39fe67aaf2452921a492af3504ac4948ea09 GIT binary patch literal 2103 zcmcIlc~nzZ9)6e_1VxI{N`nHE0WG2+Dxpx8+6EykAp=R+mjP4=n+TMx5D-fBU;z^l zT!2~#ge)YA!LWr`3RVVi1fDQ#iBO7-KvEe9g~ZIo`KM?4&zw2ach0--ckg%4@AvNg zzVF_v1iZVRE=m`IAU&K1)(?WTWFQvrLV#Aa`u8R9F(P;q-832v2qlZFp4r{yAbR_X z#p0VjZMQ&oSDGK*9|DuMA9#Rx5`wh*ao97&Os(abj=5jH1`z>i1*hC*(I_ms@JP;MALJ<(PIfPB$swaV9-&8a_am%Etjh# zM1wRQ)Nm;Sh+tu=&{@}gnr17YYA%1n!_S6;x5>qKsB z1=@YG?-`Hqu5Psq3Saj{4fRS~C`Ogkud~srHMJeLu-&L!~!8!WaV#ekaFZ)M~1);{Q6-&y|B{xRd!qy2&T!)57p*OUG+%?gx=^*(~|A!3; zMU6RM4AzucbfP4EDe?_=vN3+>cRt##1?Q9)=b(Ndj}{c{^j8 zOv2j}1xv`z#MQiN5<-P+0UUJs3(VC|`4pUI0m;ixmlI3_^w26UkFmBy^8H$okW2qg zF{DZdJRzz|!Vu^p462~E`DWLSS+aE*eZ}sBhIi4PN7^2Yy6oQ-XaWf z#(#`B5x==ujmao&X-zKB=Miqn9@X9f66OyP+goR+v`u_TmAzz1Z*at^yn@SFIKW-&(5RYFPC)$4;Kfj&6 zu4+a0rEIM;`&YI8G+Yv3ML#HHb5W7>Xjby#Pa8t&+An`AZCaTQbFZXl*-jWb8dB+< zLiVDX*jLFJajsK?l??MZ>LZ0+H@0NgfRYfkrh1G|wM+srEANEZiA#jQkmbMI+4A6Y zu<2-MkNB|=GRp5MB_U#@m+r;qzXME*Y-wCZN#(%tIDYJZVPkQVFx0xL0g6E<|261; z^1MP&smzs73%w*t^#PBr*TComU~;G5nj9P{IL}AS4&yf-BS&*;81+|;-Z6S?;(4_yyi zOO*Mtr`94=Zti7C;2KL7_uzb;Q_?7gk||_X)lDjC zKS|_32GrZ8Owbzr=do`oWUXw8e6frU`Id`;Myt^aUEf|y`Vrjn5Y7#cZTU3v^1lEW CckRjm literal 0 HcmV?d00001 diff --git a/lib/docs/html/class_team_speak3___helper___profiler-members.html b/lib/docs/html/class_team_speak3___helper___profiler-members.html new file mode 100644 index 0000000..e5f9f03 --- /dev/null +++ b/lib/docs/html/class_team_speak3___helper___profiler-members.html @@ -0,0 +1,131 @@ + + + + + + +TeamSpeak 3 PHP Framework: Member List + + + + + + + + + + + + + +
+
+ + + + + + + +
+
TeamSpeak 3 PHP Framework +  1.1.23 +
+
Copyright © Planet TeamSpeak. All rights reserved.
+
+
+ + + + + +
+
+ +
+
+
+ +
+ + + + +
+ +
+ +
+
+
TeamSpeak3_Helper_Profiler Member List
+
+
+ +

This is the complete list of members for TeamSpeak3_Helper_Profiler, including all inherited members.

+ + + + + + +
$timers (defined in TeamSpeak3_Helper_Profiler)TeamSpeak3_Helper_Profilerprotectedstatic
get($name="default")TeamSpeak3_Helper_Profilerstatic
init($name="default")TeamSpeak3_Helper_Profilerstatic
start($name="default")TeamSpeak3_Helper_Profilerstatic
stop($name="default")TeamSpeak3_Helper_Profilerstatic
+
+ + + + diff --git a/lib/docs/html/class_team_speak3___helper___profiler.html b/lib/docs/html/class_team_speak3___helper___profiler.html new file mode 100644 index 0000000..9be108f --- /dev/null +++ b/lib/docs/html/class_team_speak3___helper___profiler.html @@ -0,0 +1,336 @@ + + + + + + +TeamSpeak 3 PHP Framework: TeamSpeak3_Helper_Profiler Class Reference + + + + + + + + + + + + + +
+
+ + + + + + + +
+
TeamSpeak 3 PHP Framework +  1.1.23 +
+
Copyright © Planet TeamSpeak. All rights reserved.
+
+
+ + + + + +
+
+ +
+
+
+ +
+ + + + +
+ +
+ +
+ +
+
TeamSpeak3_Helper_Profiler Class Reference
+
+
+ +

Helper class for profiler handling. + More...

+ + + + + + + + + + + + + + +

+Static Public Member Functions

static init ($name="default")
 Inits a timer. More...
 
static start ($name="default")
 Starts a timer. More...
 
static stop ($name="default")
 Stops a timer. More...
 
static get ($name="default")
 Returns a timer. More...
 
+ + + +

+Static Protected Attributes

+static $timers = array()
 
+

Detailed Description

+

Helper class for profiler handling.

+ +

Definition at line 32 of file Profiler.php.

+

Member Function Documentation

+ +
+
+ + + + + +
+ + + + + + + + +
static TeamSpeak3_Helper_Profiler::init ( $name = "default")
+
+static
+
+ +

Inits a timer.

+
Parameters
+ + +
string$name
+
+
+
Returns
void
+ +

Definition at line 47 of file Profiler.php.

+ +

Referenced by TeamSpeak3_Adapter_FileTransfer\syn(), TeamSpeak3_Adapter_TSDNS\syn(), TeamSpeak3_Adapter_Blacklist\syn(), TeamSpeak3_Adapter_ServerQuery\syn(), and TeamSpeak3_Adapter_Update\syn().

+
48  {
+
49  self::$timers[$name] = new TeamSpeak3_Helper_Profiler_Timer($name);
+
50  }
+
+
+
+ +
+
+ + + + + +
+ + + + + + + + +
static TeamSpeak3_Helper_Profiler::start ( $name = "default")
+
+static
+
+ +

Starts a timer.

+
Parameters
+ + +
string$name
+
+
+
Returns
void
+ +

Definition at line 58 of file Profiler.php.

+ +

Referenced by TeamSpeak3\init().

+
59  {
+
60  if(array_key_exists($name, self::$timers))
+
61  {
+
62  self::$timers[$name]->start();
+
63  }
+
64  else
+
65  {
+
66  self::$timers[$name] = new TeamSpeak3_Helper_Profiler_Timer($name);
+
67  }
+
68  }
+
+
+
+ +
+
+ + + + + +
+ + + + + + + + +
static TeamSpeak3_Helper_Profiler::stop ( $name = "default")
+
+static
+
+ +

Stops a timer.

+
Parameters
+ + +
string$name
+
+
+
Returns
void
+ +

Definition at line 76 of file Profiler.php.

+
77  {
+
78  if(!array_key_exists($name, self::$timers))
+
79  {
+
80  self::init($name);
+
81  }
+
82 
+
83  self::$timers[$name]->stop();
+
84  }
+
+
+
+ +
+
+ + + + + +
+ + + + + + + + +
static TeamSpeak3_Helper_Profiler::get ( $name = "default")
+
+static
+
+ +

Returns a timer.

+
Parameters
+ + +
string$name
+
+
+
Returns
TeamSpeak3_Helper_Profiler_Timer
+ +

Definition at line 92 of file Profiler.php.

+ +

Referenced by TeamSpeak3_Adapter_Abstract\getProfiler().

+
93  {
+
94  if(!array_key_exists($name, self::$timers))
+
95  {
+
96  self::init($name);
+
97  }
+
98 
+
99  return self::$timers[$name];
+
100  }
+
+
+
+
The documentation for this class was generated from the following file: +
+
+ + + + diff --git a/lib/docs/html/class_team_speak3___helper___profiler___exception-members.html b/lib/docs/html/class_team_speak3___helper___profiler___exception-members.html new file mode 100644 index 0000000..ddf1c61 --- /dev/null +++ b/lib/docs/html/class_team_speak3___helper___profiler___exception-members.html @@ -0,0 +1,132 @@ + + + + + + +TeamSpeak 3 PHP Framework: Member List + + + + + + + + + + + + + +
+
+ + + + + + + +
+
TeamSpeak 3 PHP Framework +  1.1.23 +
+
Copyright © Planet TeamSpeak. All rights reserved.
+
+
+ + + + + +
+
+ +
+
+
+ +
+ + + + +
+ +
+ +
+
+
TeamSpeak3_Helper_Profiler_Exception Member List
+
+
+ +

This is the complete list of members for TeamSpeak3_Helper_Profiler_Exception, including all inherited members.

+ + + + + + + +
$messages (defined in TeamSpeak3_Exception)TeamSpeak3_Exceptionprotectedstatic
__construct($mesg, $code=0x00)TeamSpeak3_Exception
getSender()TeamSpeak3_Exception
prepareCustomMessage(TeamSpeak3_Helper_String $mesg)TeamSpeak3_Exceptionprotected
registerCustomMessage($code, $mesg)TeamSpeak3_Exceptionstatic
unregisterCustomMessage($code)TeamSpeak3_Exceptionstatic
+
+ + + + diff --git a/lib/docs/html/class_team_speak3___helper___profiler___exception.html b/lib/docs/html/class_team_speak3___helper___profiler___exception.html new file mode 100644 index 0000000..f857460 --- /dev/null +++ b/lib/docs/html/class_team_speak3___helper___profiler___exception.html @@ -0,0 +1,377 @@ + + + + + + +TeamSpeak 3 PHP Framework: TeamSpeak3_Helper_Profiler_Exception Class Reference + + + + + + + + + + + + + +
+
+ + + + + + + +
+
TeamSpeak 3 PHP Framework +  1.1.23 +
+
Copyright © Planet TeamSpeak. All rights reserved.
+
+
+ + + + + +
+
+ +
+
+
+ +
+ + + + +
+ +
+ + +
+ +

Enhanced exception class for TeamSpeak3_Helper_Profiler objects. + More...

+
+ + Inheritance diagram for TeamSpeak3_Helper_Profiler_Exception:
+
+
+ + + + + + +

+Public Member Functions

 getSender ()
 Returns the class from which the exception was thrown. More...
 
+ + + + + + + +

+Static Public Member Functions

static registerCustomMessage ($code, $mesg)
 Registers a custom error message to $code. More...
 
static unregisterCustomMessage ($code)
 Unregisters a custom error message from $code. More...
 
+ + + + +

+Protected Member Functions

 prepareCustomMessage (TeamSpeak3_Helper_String $mesg)
 Prepares a custom error message by replacing pre-defined signs with given values. More...
 
+ + + +

+Static Protected Attributes

+static $messages = array()
 
+

Detailed Description

+

Enhanced exception class for TeamSpeak3_Helper_Profiler objects.

+ +

Definition at line 32 of file Exception.php.

+

Member Function Documentation

+ +
+
+ + + + + +
+ + + + + + + + +
TeamSpeak3_Exception::prepareCustomMessage (TeamSpeak3_Helper_String $mesg)
+
+protectedinherited
+
+ +

Prepares a custom error message by replacing pre-defined signs with given values.

+
Parameters
+ + +
TeamSpeak3_Helper_String$mesg
+
+
+
Returns
TeamSpeak3_Helper_String
+ +

Definition at line 66 of file Exception.php.

+ +

References TeamSpeak3_Helper_String\arg().

+ +

Referenced by TeamSpeak3_Exception\__construct().

+
67  {
+
68  $args = array(
+
69  "code" => $this->getCode(),
+
70  "mesg" => $this->getMessage(),
+
71  "line" => $this->getLine(),
+
72  "file" => $this->getFile(),
+
73  );
+
74 
+
75  return $mesg->arg($args)->toString();
+
76  }
+
+
+
+ +
+
+ + + + + +
+ + + + + + + + + + + + + + + + + + +
static TeamSpeak3_Exception::registerCustomMessage ( $code,
 $mesg 
)
+
+staticinherited
+
+ +

Registers a custom error message to $code.

+
Parameters
+ + + +
integer$code
string$mesg
+
+
+
Exceptions
+ + +
TeamSpeak3_Exception
+
+
+
Returns
void
+ +

Definition at line 86 of file Exception.php.

+
87  {
+
88  if(array_key_exists((int) $code, self::$messages))
+
89  {
+
90  throw new self("custom message for code 0x" . strtoupper(dechex($code)) . " is already registered");
+
91  }
+
92 
+
93  if(!is_string($mesg))
+
94  {
+
95  throw new self("custom message for code 0x" . strtoupper(dechex($code)) . " must be a string");
+
96  }
+
97 
+
98  self::$messages[(int) $code] = new TeamSpeak3_Helper_String($mesg);
+
99  }
+
+
+
+ +
+
+ + + + + +
+ + + + + + + + +
static TeamSpeak3_Exception::unregisterCustomMessage ( $code)
+
+staticinherited
+
+ +

Unregisters a custom error message from $code.

+
Parameters
+ + +
integer$code
+
+
+
Exceptions
+ + +
TeamSpeak3_Exception
+
+
+
Returns
void
+ +

Definition at line 108 of file Exception.php.

+
109  {
+
110  if(!array_key_exists((int) $code, self::$messages))
+
111  {
+
112  throw new self("custom message for code 0x" . strtoupper(dechex($code)) . " is not registered");
+
113  }
+
114 
+
115  unset(self::$messages[intval($code)]);
+
116  }
+
+
+
+ +
+
+ + + + + +
+ + + + + + + +
TeamSpeak3_Exception::getSender ()
+
+inherited
+
+ +

Returns the class from which the exception was thrown.

+
Returns
string
+ +

Definition at line 123 of file Exception.php.

+
124  {
+
125  $trace = $this->getTrace();
+
126 
+
127  return (isset($trace[0]["class"])) ? $trace[0]["class"] : "{main}";
+
128  }
+
+
+
+
The documentation for this class was generated from the following file: +
+
+ + + + diff --git a/lib/docs/html/class_team_speak3___helper___profiler___exception.js b/lib/docs/html/class_team_speak3___helper___profiler___exception.js new file mode 100644 index 0000000..ed0fc9b --- /dev/null +++ b/lib/docs/html/class_team_speak3___helper___profiler___exception.js @@ -0,0 +1,5 @@ +var class_team_speak3___helper___profiler___exception = +[ + [ "prepareCustomMessage", "class_team_speak3___helper___profiler___exception.html#a3bfcdf7b85a393b7a8b05b048ae3279c", null ], + [ "getSender", "class_team_speak3___helper___profiler___exception.html#ae7d4b369dd11d3cf56d120acae0cf1db", null ] +]; \ No newline at end of file diff --git a/lib/docs/html/class_team_speak3___helper___profiler___exception.png b/lib/docs/html/class_team_speak3___helper___profiler___exception.png new file mode 100644 index 0000000000000000000000000000000000000000..6065cca80c6355092dc9ab39fca5c6772fcc6eca GIT binary patch literal 1491 zcmb7^Sx}Q#6vw|L6Hp9sss%)hJQzzLvKa|t5EnKhkRXdJQUp{|z_Lg}B7y`&sZxTC zARt48f`fvjYGe~5UyDKkfi@t7vV|gq03QjEurCcfboyBD%?C$J9KpUD>)_+cnvrp@zb zs}@@=Q1;Xi3&Nx`>}u$k-&Uwc*;+Xf1m6x+_>8SqC%1j%FlM&bX)Mkxn~ZuvGOPZf z&Y{eWdzJ*jkjPPo*AAs-1>W*o`ub96Xnjffv?8EB>$XJ~oUav|kh(PGr3U3fQ8!YHp z_K82W3yoA733Uvoegj28wfW!E>|z(h;&}kU`T_!qV)ixh-s8w?IQGG20o<2sJDCqQ zC=Za`F#0t6(V5F{Y^KDgxV*^~9XtQE;J(=0#`>GI%-uM7VIo2ikR!7?bj6p*G{k*u z#_L@7R6WTm_mdViC4I=n3d;=PdO)Vzab8o^7~N}ZG&^H*)@n`jS;9R_a{M_tj6d%$ z=^{}_`*~#O|rYOSbfjGy>FvO^f!CD&;d;2)icC~IH~c+A_G9NF+K?{mM^{Vjx$P4xAXn)c zwG{VGhFDDksM*KkVv&c)9ZIsg|JeB7kE3llBjTTcbq8xUuggFIb?e7Ofy}{oKhz;O zX4;YqFqFja{}X+?F=pS5UBy^cG4K$pR*yXUoc5p5TCU}3&eJIAE+YPP_a#m8r`Vr= zbKY%t^#)o$Qk$jg%jKx{LU=H?thDFFfOY(WI(LcEkt{Kl|k*0>QH=3@@`Y1KQb3iWWT(ll44 z!fQCD0zv=q>qerg!WbJyEluted58C?%7p%)jll<3@2evz=fRBBH4VivAu?7NBCD+M zXOvucX(}|jI9UiAiY)kQK_fv5rPq)o<09al4hZnR0H5#n+$l1$1eC>qhT{1qNLE-d zV7g^<%Z@kmFmYL}vWwamLnV^T#dMrW!jWGas-*XayVmk@$*Q@8oMQ! zHfh8*2y20guBY_~p)Sl#WDUk$sg{UkSTn_P$!t%n{`6!n1(GXn=0qZ-Y`2`iq2XI* z1^JN4MWh8t5Pn8wbx=cKl!@lUat+FWeqnc<0@M#GC&2U&h^g@dc$A`7D+o~A8t7PF ec2zGWWpPqDUvbi2Gi64-fdR53#esi1DCHkXNXFd& literal 0 HcmV?d00001 diff --git a/lib/docs/html/class_team_speak3___helper___profiler___timer-members.html b/lib/docs/html/class_team_speak3___helper___profiler___timer-members.html new file mode 100644 index 0000000..467da81 --- /dev/null +++ b/lib/docs/html/class_team_speak3___helper___profiler___timer-members.html @@ -0,0 +1,136 @@ + + + + + + +TeamSpeak 3 PHP Framework: Member List + + + + + + + + + + + + + +
+
+ + + + + + + +
+
TeamSpeak 3 PHP Framework +  1.1.23 +
+
Copyright © Planet TeamSpeak. All rights reserved.
+
+
+ + + + + +
+
+ +
+
+
+ + + + + + diff --git a/lib/docs/html/class_team_speak3___helper___profiler___timer.html b/lib/docs/html/class_team_speak3___helper___profiler___timer.html new file mode 100644 index 0000000..47a5959 --- /dev/null +++ b/lib/docs/html/class_team_speak3___helper___profiler___timer.html @@ -0,0 +1,376 @@ + + + + + + +TeamSpeak 3 PHP Framework: TeamSpeak3_Helper_Profiler_Timer Class Reference + + + + + + + + + + + + + +
+
+ + + + + + + +
+
TeamSpeak 3 PHP Framework +  1.1.23 +
+
Copyright © Planet TeamSpeak. All rights reserved.
+
+
+ + + + + +
+
+ +
+
+
+ +
+ + + + +
+ +
+ +
+ +
+
TeamSpeak3_Helper_Profiler_Timer Class Reference
+
+
+ +

Helper class providing profiler timers. + More...

+ + + + + + + + + + + + + + + + + + + + +

+Public Member Functions

 __construct ($name)
 The TeamSpeak3_Helper_Profiler_Timer constructor. More...
 
 start ()
 Starts the timer. More...
 
 stop ()
 Stops the timer. More...
 
 getRuntime ()
 Return the timer runtime. More...
 
 getMemUsage ($realmem=FALSE)
 Returns the amount of memory allocated to PHP in bytes. More...
 
 isRunning ()
 Returns TRUE if the timer is running. More...
 
+ + + + + + + + + +

+Protected Attributes

$running = FALSE
 
$started = 0
 
$name = null
 
$data = array()
 
+

Detailed Description

+

Helper class providing profiler timers.

+ +

Definition at line 32 of file Timer.php.

+

Constructor & Destructor Documentation

+ +
+
+ + + + + + + + +
TeamSpeak3_Helper_Profiler_Timer::__construct ( $name)
+
+ +

The TeamSpeak3_Helper_Profiler_Timer constructor.

+
Parameters
+ + +
string$name
+
+
+
Returns
TeamSpeak3_Helper_Profiler_Timer
+ +

Definition at line 68 of file Timer.php.

+ +

References start().

+
69  {
+
70  $this->name = (string) $name;
+
71 
+
72  $this->data["runtime"] = 0;
+
73  $this->data["realmem"] = 0;
+
74  $this->data["emalloc"] = 0;
+
75 
+
76  $this->start();
+
77  }
+
+
+
+

Member Function Documentation

+ +
+
+ + + + + + + +
TeamSpeak3_Helper_Profiler_Timer::start ()
+
+ +

Starts the timer.

+
Returns
void
+ +

Definition at line 84 of file Timer.php.

+ +

References isRunning().

+ +

Referenced by __construct(), getMemUsage(), and getRuntime().

+
85  {
+
86  if($this->isRunning()) return;
+
87 
+
88  $this->data["realmem_start"] = memory_get_usage(TRUE);
+
89  $this->data["emalloc_start"] = memory_get_usage();
+
90 
+
91  $this->started = microtime(TRUE);
+
92  $this->running = TRUE;
+
93  }
+
+
+
+ +
+
+ + + + + + + +
TeamSpeak3_Helper_Profiler_Timer::stop ()
+
+ +

Stops the timer.

+
Returns
void
+ +

Definition at line 100 of file Timer.php.

+ +

References isRunning().

+ +

Referenced by getMemUsage(), and getRuntime().

+
101  {
+
102  if(!$this->isRunning()) return;
+
103 
+
104  $this->data["runtime"] += microtime(TRUE) - $this->started;
+
105  $this->data["realmem"] += memory_get_usage(TRUE) - $this->data["realmem_start"];
+
106  $this->data["emalloc"] += memory_get_usage() - $this->data["emalloc_start"];
+
107 
+
108  $this->started = 0;
+
109  $this->running = FALSE;
+
110  }
+
+
+
+ +
+
+ + + + + + + +
TeamSpeak3_Helper_Profiler_Timer::getRuntime ()
+
+ +

Return the timer runtime.

+
Returns
mixed
+ +

Definition at line 117 of file Timer.php.

+ +

References isRunning(), start(), and stop().

+
118  {
+
119  if($this->isRunning())
+
120  {
+
121  $this->stop();
+
122  $this->start();
+
123  }
+
124 
+
125  return $this->data["runtime"];
+
126  }
+
+
+
+ +
+
+ + + + + + + + +
TeamSpeak3_Helper_Profiler_Timer::getMemUsage ( $realmem = FALSE)
+
+ +

Returns the amount of memory allocated to PHP in bytes.

+
Parameters
+ + +
boolean$realmem
+
+
+
Returns
integer
+ +

Definition at line 134 of file Timer.php.

+ +

References isRunning(), start(), and stop().

+
135  {
+
136  if($this->isRunning())
+
137  {
+
138  $this->stop();
+
139  $this->start();
+
140  }
+
141 
+
142  return ($realmem !== FALSE) ? $this->data["realmem"] : $this->data["emalloc"];
+
143  }
+
+
+
+ +
+
+ + + + + + + +
TeamSpeak3_Helper_Profiler_Timer::isRunning ()
+
+ +

Returns TRUE if the timer is running.

+
Returns
boolean
+ +

Definition at line 150 of file Timer.php.

+ +

Referenced by getMemUsage(), getRuntime(), start(), and stop().

+
151  {
+
152  return $this->running;
+
153  }
+
+
+
+
The documentation for this class was generated from the following file: +
+
+ + + + diff --git a/lib/docs/html/class_team_speak3___helper___profiler___timer.js b/lib/docs/html/class_team_speak3___helper___profiler___timer.js new file mode 100644 index 0000000..a71fec1 --- /dev/null +++ b/lib/docs/html/class_team_speak3___helper___profiler___timer.js @@ -0,0 +1,13 @@ +var class_team_speak3___helper___profiler___timer = +[ + [ "__construct", "class_team_speak3___helper___profiler___timer.html#a92400f1247e08c23460749de0d4cad51", null ], + [ "start", "class_team_speak3___helper___profiler___timer.html#a29e06cc21d560576abec2678108078c2", null ], + [ "stop", "class_team_speak3___helper___profiler___timer.html#a9df478674ef00e29adbc12cc103390a7", null ], + [ "getRuntime", "class_team_speak3___helper___profiler___timer.html#a40449e19407ff9b99cadd30be99a1763", null ], + [ "getMemUsage", "class_team_speak3___helper___profiler___timer.html#adaeee8c828e9f9b5408f92399184b934", null ], + [ "isRunning", "class_team_speak3___helper___profiler___timer.html#abdffbfefcc30c448ddf20552a6c0503e", null ], + [ "$running", "class_team_speak3___helper___profiler___timer.html#a14f870400b41a4b1ff688ee9641ccb24", null ], + [ "$started", "class_team_speak3___helper___profiler___timer.html#ae93d5374f58e03b28324f6e3f6feba70", null ], + [ "$name", "class_team_speak3___helper___profiler___timer.html#ab5a96392a6b5a84b2bf5c2c289979a59", null ], + [ "$data", "class_team_speak3___helper___profiler___timer.html#ad8a6bd88869c1473cc2f9a79b6fa89b6", null ] +]; \ No newline at end of file diff --git a/lib/docs/html/class_team_speak3___helper___signal-members.html b/lib/docs/html/class_team_speak3___helper___signal-members.html new file mode 100644 index 0000000..e776b5c --- /dev/null +++ b/lib/docs/html/class_team_speak3___helper___signal-members.html @@ -0,0 +1,137 @@ + + + + + + +TeamSpeak 3 PHP Framework: Member List + + + + + + + + + + + + + +
+
+ + + + + + + +
+
TeamSpeak 3 PHP Framework +  1.1.23 +
+
Copyright © Planet TeamSpeak. All rights reserved.
+
+
+ + + + + +
+
+ +
+
+
+ +
+ + + + +
+ +
+ +
+
+
TeamSpeak3_Helper_Signal Member List
+
+
+ +

This is the complete list of members for TeamSpeak3_Helper_Signal, including all inherited members.

+ + + + + + + + + + + + +
$instance (defined in TeamSpeak3_Helper_Signal)TeamSpeak3_Helper_Signalprotectedstatic
$sigslots (defined in TeamSpeak3_Helper_Signal)TeamSpeak3_Helper_Signalprotected
clearHandlers($signal)TeamSpeak3_Helper_Signal
emit($signal, $params=null)TeamSpeak3_Helper_Signal
getCallbackHash($callback)TeamSpeak3_Helper_Signal
getHandlers($signal)TeamSpeak3_Helper_Signal
getInstance()TeamSpeak3_Helper_Signalstatic
getSignals()TeamSpeak3_Helper_Signal
hasHandlers($signal)TeamSpeak3_Helper_Signal
subscribe($signal, $callback)TeamSpeak3_Helper_Signal
unsubscribe($signal, $callback=null)TeamSpeak3_Helper_Signal
+
+ + + + diff --git a/lib/docs/html/class_team_speak3___helper___signal.html b/lib/docs/html/class_team_speak3___helper___signal.html new file mode 100644 index 0000000..d26fbec --- /dev/null +++ b/lib/docs/html/class_team_speak3___helper___signal.html @@ -0,0 +1,566 @@ + + + + + + +TeamSpeak 3 PHP Framework: TeamSpeak3_Helper_Signal Class Reference + + + + + + + + + + + + + +
+
+ + + + + + + +
+
TeamSpeak 3 PHP Framework +  1.1.23 +
+
Copyright © Planet TeamSpeak. All rights reserved.
+
+
+ + + + + +
+
+ +
+
+
+ +
+ + + + +
+ +
+ + +
+ +

Helper class for signal slots. + More...

+ + + + + + + + + + + + + + + + + + + + + + + + + + +

+Public Member Functions

 emit ($signal, $params=null)
 Emits a signal with a given set of parameters. More...
 
 getCallbackHash ($callback)
 Generates a MD5 hash based on a given callback. More...
 
 subscribe ($signal, $callback)
 Subscribes to a signal and returns the signal handler. More...
 
 unsubscribe ($signal, $callback=null)
 Unsubscribes from a signal. More...
 
 getSignals ()
 Returns all registered signals. More...
 
 hasHandlers ($signal)
 Returns TRUE there are slots subscribed for a specified signal. More...
 
 getHandlers ($signal)
 Returns all slots for a specified signal. More...
 
 clearHandlers ($signal)
 Clears all slots for a specified signal. More...
 
+ + + + +

+Static Public Member Functions

static getInstance ()
 Returns a singleton instance of TeamSpeak3_Helper_Signal. More...
 
+ + + +

+Protected Attributes

$sigslots = array()
 
+ + + +

+Static Protected Attributes

+static $instance = null
 
+

Detailed Description

+

Helper class for signal slots.

+ +

Definition at line 32 of file Signal.php.

+

Member Function Documentation

+ +
+
+ + + + + + + + + + + + + + + + + + +
TeamSpeak3_Helper_Signal::emit ( $signal,
 $params = null 
)
+
+ +

Emits a signal with a given set of parameters.

+
Parameters
+ + + +
string$signal
mixed$params
+
+
+
Returns
mixed
+ +

Definition at line 55 of file Signal.php.

+ +

References hasHandlers().

+
56  {
+
57  if(!$this->hasHandlers($signal))
+
58  {
+
59  return;
+
60  }
+
61 
+
62  if(!is_array($params))
+
63  {
+
64  $params = func_get_args();
+
65  $params = array_slice($params, 1);
+
66  }
+
67 
+
68  foreach($this->sigslots[$signal] as $slot)
+
69  {
+
70  $return = $slot->call($params);
+
71  }
+
72 
+
73  return $return;
+
74  }
+
+
+
+ +
+
+ + + + + + + + +
TeamSpeak3_Helper_Signal::getCallbackHash ( $callback)
+
+ +

Generates a MD5 hash based on a given callback.

+
Parameters
+ + + +
mixed$callback
string
+
+
+
Returns
void
+ +

Definition at line 83 of file Signal.php.

+ +

Referenced by subscribe(), and unsubscribe().

+
84  {
+
85  if(!is_callable($callback, TRUE, $callable_name))
+
86  {
+
87  throw new TeamSpeak3_Helper_Signal_Exception("invalid callback specified");
+
88  }
+
89 
+
90  return md5($callable_name);
+
91  }
+
+
+
+ +
+
+ + + + + + + + + + + + + + + + + + +
TeamSpeak3_Helper_Signal::subscribe ( $signal,
 $callback 
)
+
+ +

Subscribes to a signal and returns the signal handler.

+
Parameters
+ + + +
string$signal
mixed$callback
+
+
+
Returns
TeamSpeak3_Helper_Signal_Handler
+ +

Definition at line 100 of file Signal.php.

+ +

References getCallbackHash().

+
101  {
+
102  if(empty($this->sigslots[$signal]))
+
103  {
+
104  $this->sigslots[$signal] = array();
+
105  }
+
106 
+
107  $index = $this->getCallbackHash($callback);
+
108 
+
109  if(!array_key_exists($index, $this->sigslots[$signal]))
+
110  {
+
111  $this->sigslots[$signal][$index] = new TeamSpeak3_Helper_Signal_Handler($signal, $callback);
+
112  }
+
113 
+
114  return $this->sigslots[$signal][$index];
+
115  }
+
+
+
+ +
+
+ + + + + + + + + + + + + + + + + + +
TeamSpeak3_Helper_Signal::unsubscribe ( $signal,
 $callback = null 
)
+
+ +

Unsubscribes from a signal.

+
Parameters
+ + + +
string$signal
mixed$callback
+
+
+
Returns
void
+ +

Definition at line 124 of file Signal.php.

+ +

References getCallbackHash(), and hasHandlers().

+
125  {
+
126  if(!$this->hasHandlers($signal))
+
127  {
+
128  return;
+
129  }
+
130 
+
131  if($callback !== null)
+
132  {
+
133  $index = $this->getCallbackHash($callback);
+
134 
+
135  if(!array_key_exists($index, $this->sigslots[$signal]))
+
136  {
+
137  return;
+
138  }
+
139 
+
140  unset($this->sigslots[$signal][$index]);
+
141  }
+
142  else
+
143  {
+
144  unset($this->sigslots[$signal]);
+
145  }
+
146  }
+
+
+
+ +
+
+ + + + + + + +
TeamSpeak3_Helper_Signal::getSignals ()
+
+ +

Returns all registered signals.

+
Returns
array
+ +

Definition at line 153 of file Signal.php.

+
154  {
+
155  return array_keys($this->sigslots);
+
156  }
+
+
+
+ +
+
+ + + + + + + + +
TeamSpeak3_Helper_Signal::hasHandlers ( $signal)
+
+ +

Returns TRUE there are slots subscribed for a specified signal.

+
Parameters
+ + +
string$signal
+
+
+
Returns
boolean
+ +

Definition at line 164 of file Signal.php.

+ +

Referenced by clearHandlers(), emit(), getHandlers(), and unsubscribe().

+
165  {
+
166  return empty($this->sigslots[$signal]) ? FALSE : TRUE;
+
167  }
+
+
+
+ +
+
+ + + + + + + + +
TeamSpeak3_Helper_Signal::getHandlers ( $signal)
+
+ +

Returns all slots for a specified signal.

+
Parameters
+ + +
string$signal
+
+
+
Returns
array
+ +

Definition at line 175 of file Signal.php.

+ +

References hasHandlers().

+
176  {
+
177  if(!$this->hasHandlers($signal))
+
178  {
+
179  return $this->sigslots[$signal];
+
180  }
+
181 
+
182  return array();
+
183  }
+
+
+
+ +
+
+ + + + + + + + +
TeamSpeak3_Helper_Signal::clearHandlers ( $signal)
+
+ +

Clears all slots for a specified signal.

+
Parameters
+ + +
string$signal
+
+
+
Returns
void
+ +

Definition at line 191 of file Signal.php.

+ +

References hasHandlers().

+
192  {
+
193  if(!$this->hasHandlers($signal))
+
194  {
+
195  unset($this->sigslots[$signal]);
+
196  }
+
197  }
+
+
+
+ +
+
+ + + + + +
+ + + + + + + +
static TeamSpeak3_Helper_Signal::getInstance ()
+
+static
+
+ +

Returns a singleton instance of TeamSpeak3_Helper_Signal.

+
Returns
TeamSpeak3_Helper_Signal
+ +

Definition at line 204 of file Signal.php.

+ +

Referenced by TeamSpeak3_Exception\__construct(), TeamSpeak3_Adapter_ServerQuery_Event\__construct(), TeamSpeak3_Transport_UDP\disconnect(), TeamSpeak3_Transport_TCP\disconnect(), TeamSpeak3_Adapter_FileTransfer\download(), TeamSpeak3_Adapter_ServerQuery_Reply\fetchError(), TeamSpeak3_Adapter_FileTransfer\init(), TeamSpeak3_Node_Host\login(), TeamSpeak3_Node_Host\logout(), TeamSpeak3_Node_Server\permReset(), TeamSpeak3_Node_Server\privilegeKeyCreate(), TeamSpeak3_Transport_UDP\read(), TeamSpeak3_Transport_TCP\read(), TeamSpeak3_Transport_TCP\readLine(), TeamSpeak3_Adapter_ServerQuery\request(), TeamSpeak3_Adapter_TSDNS\resolve(), TeamSpeak3_Transport_UDP\send(), TeamSpeak3_Transport_TCP\send(), TeamSpeak3_Node_Host\serverCreate(), TeamSpeak3_Node_Host\serverDelete(), TeamSpeak3_Node_Host\serverSelect(), TeamSpeak3_Node_Host\serverSelectByPort(), TeamSpeak3_Node_Host\serverStart(), TeamSpeak3_Node_Host\serverStop(), TeamSpeak3_Node_Host\serverStopProcess(), TeamSpeak3_Node_Server\snapshotDeploy(), TeamSpeak3_Adapter_FileTransfer\syn(), TeamSpeak3_Adapter_TSDNS\syn(), TeamSpeak3_Adapter_Blacklist\syn(), TeamSpeak3_Adapter_ServerQuery\syn(), TeamSpeak3_Adapter_Update\syn(), TeamSpeak3_Node_Server\transferInitDownload(), TeamSpeak3_Node_Server\transferInitUpload(), TeamSpeak3_Adapter_FileTransfer\upload(), and TeamSpeak3_Transport_Abstract\waitForReadyRead().

+
205  {
+
206  if(self::$instance === null)
+
207  {
+
208  self::$instance = new self();
+
209  }
+
210 
+
211  return self::$instance;
+
212  }
+
+
+
+
The documentation for this class was generated from the following file: +
+
+ + + + diff --git a/lib/docs/html/class_team_speak3___helper___signal.js b/lib/docs/html/class_team_speak3___helper___signal.js new file mode 100644 index 0000000..176d0cc --- /dev/null +++ b/lib/docs/html/class_team_speak3___helper___signal.js @@ -0,0 +1,12 @@ +var class_team_speak3___helper___signal = +[ + [ "emit", "class_team_speak3___helper___signal.html#a26e8fc61637d146b0347b7c9e09587ab", null ], + [ "getCallbackHash", "class_team_speak3___helper___signal.html#ada301980bc0f9b8f310e8656972b6a35", null ], + [ "subscribe", "class_team_speak3___helper___signal.html#a058ad6105e05a7b8c620b9446c545984", null ], + [ "unsubscribe", "class_team_speak3___helper___signal.html#a74e337835a70aa10894202bb43d8c30b", null ], + [ "getSignals", "class_team_speak3___helper___signal.html#aa690a091efef853c4a47d7b7e7363c03", null ], + [ "hasHandlers", "class_team_speak3___helper___signal.html#a840339183812e5e51d9c3b1beb9d1fd3", null ], + [ "getHandlers", "class_team_speak3___helper___signal.html#af414b1e8d18081c374a852c12c0b5cb6", null ], + [ "clearHandlers", "class_team_speak3___helper___signal.html#a8610e4f73d3f5b564edd1dfa81f1ac28", null ], + [ "$sigslots", "class_team_speak3___helper___signal.html#a11b8fbdbfd24afb14ac47262aba4c2c6", null ] +]; \ No newline at end of file diff --git a/lib/docs/html/class_team_speak3___helper___signal___exception-members.html b/lib/docs/html/class_team_speak3___helper___signal___exception-members.html new file mode 100644 index 0000000..2109bc4 --- /dev/null +++ b/lib/docs/html/class_team_speak3___helper___signal___exception-members.html @@ -0,0 +1,132 @@ + + + + + + +TeamSpeak 3 PHP Framework: Member List + + + + + + + + + + + + + +
+
+ + + + + + + +
+
TeamSpeak 3 PHP Framework +  1.1.23 +
+
Copyright © Planet TeamSpeak. All rights reserved.
+
+
+ + + + + +
+
+ +
+
+
+ +
+ + + + +
+ +
+ +
+
+
TeamSpeak3_Helper_Signal_Exception Member List
+
+
+ +

This is the complete list of members for TeamSpeak3_Helper_Signal_Exception, including all inherited members.

+ + + + + + + +
$messages (defined in TeamSpeak3_Exception)TeamSpeak3_Exceptionprotectedstatic
__construct($mesg, $code=0x00)TeamSpeak3_Exception
getSender()TeamSpeak3_Exception
prepareCustomMessage(TeamSpeak3_Helper_String $mesg)TeamSpeak3_Exceptionprotected
registerCustomMessage($code, $mesg)TeamSpeak3_Exceptionstatic
unregisterCustomMessage($code)TeamSpeak3_Exceptionstatic
+
+ + + + diff --git a/lib/docs/html/class_team_speak3___helper___signal___exception.html b/lib/docs/html/class_team_speak3___helper___signal___exception.html new file mode 100644 index 0000000..90b54b4 --- /dev/null +++ b/lib/docs/html/class_team_speak3___helper___signal___exception.html @@ -0,0 +1,377 @@ + + + + + + +TeamSpeak 3 PHP Framework: TeamSpeak3_Helper_Signal_Exception Class Reference + + + + + + + + + + + + + +
+
+ + + + + + + +
+
TeamSpeak 3 PHP Framework +  1.1.23 +
+
Copyright © Planet TeamSpeak. All rights reserved.
+
+
+ + + + + +
+
+ +
+
+
+ +
+ + + + +
+ +
+ + +
+ +

Enhanced exception class for TeamSpeak3_Helper_Signal objects. + More...

+
+ + Inheritance diagram for TeamSpeak3_Helper_Signal_Exception:
+
+
+ + + + + + +

+Public Member Functions

 getSender ()
 Returns the class from which the exception was thrown. More...
 
+ + + + + + + +

+Static Public Member Functions

static registerCustomMessage ($code, $mesg)
 Registers a custom error message to $code. More...
 
static unregisterCustomMessage ($code)
 Unregisters a custom error message from $code. More...
 
+ + + + +

+Protected Member Functions

 prepareCustomMessage (TeamSpeak3_Helper_String $mesg)
 Prepares a custom error message by replacing pre-defined signs with given values. More...
 
+ + + +

+Static Protected Attributes

+static $messages = array()
 
+

Detailed Description

+

Enhanced exception class for TeamSpeak3_Helper_Signal objects.

+ +

Definition at line 32 of file Exception.php.

+

Member Function Documentation

+ +
+
+ + + + + +
+ + + + + + + + +
TeamSpeak3_Exception::prepareCustomMessage (TeamSpeak3_Helper_String $mesg)
+
+protectedinherited
+
+ +

Prepares a custom error message by replacing pre-defined signs with given values.

+
Parameters
+ + +
TeamSpeak3_Helper_String$mesg
+
+
+
Returns
TeamSpeak3_Helper_String
+ +

Definition at line 66 of file Exception.php.

+ +

References TeamSpeak3_Helper_String\arg().

+ +

Referenced by TeamSpeak3_Exception\__construct().

+
67  {
+
68  $args = array(
+
69  "code" => $this->getCode(),
+
70  "mesg" => $this->getMessage(),
+
71  "line" => $this->getLine(),
+
72  "file" => $this->getFile(),
+
73  );
+
74 
+
75  return $mesg->arg($args)->toString();
+
76  }
+
+
+
+ +
+
+ + + + + +
+ + + + + + + + + + + + + + + + + + +
static TeamSpeak3_Exception::registerCustomMessage ( $code,
 $mesg 
)
+
+staticinherited
+
+ +

Registers a custom error message to $code.

+
Parameters
+ + + +
integer$code
string$mesg
+
+
+
Exceptions
+ + +
TeamSpeak3_Exception
+
+
+
Returns
void
+ +

Definition at line 86 of file Exception.php.

+
87  {
+
88  if(array_key_exists((int) $code, self::$messages))
+
89  {
+
90  throw new self("custom message for code 0x" . strtoupper(dechex($code)) . " is already registered");
+
91  }
+
92 
+
93  if(!is_string($mesg))
+
94  {
+
95  throw new self("custom message for code 0x" . strtoupper(dechex($code)) . " must be a string");
+
96  }
+
97 
+
98  self::$messages[(int) $code] = new TeamSpeak3_Helper_String($mesg);
+
99  }
+
+
+
+ +
+
+ + + + + +
+ + + + + + + + +
static TeamSpeak3_Exception::unregisterCustomMessage ( $code)
+
+staticinherited
+
+ +

Unregisters a custom error message from $code.

+
Parameters
+ + +
integer$code
+
+
+
Exceptions
+ + +
TeamSpeak3_Exception
+
+
+
Returns
void
+ +

Definition at line 108 of file Exception.php.

+
109  {
+
110  if(!array_key_exists((int) $code, self::$messages))
+
111  {
+
112  throw new self("custom message for code 0x" . strtoupper(dechex($code)) . " is not registered");
+
113  }
+
114 
+
115  unset(self::$messages[intval($code)]);
+
116  }
+
+
+
+ +
+
+ + + + + +
+ + + + + + + +
TeamSpeak3_Exception::getSender ()
+
+inherited
+
+ +

Returns the class from which the exception was thrown.

+
Returns
string
+ +

Definition at line 123 of file Exception.php.

+
124  {
+
125  $trace = $this->getTrace();
+
126 
+
127  return (isset($trace[0]["class"])) ? $trace[0]["class"] : "{main}";
+
128  }
+
+
+
+
The documentation for this class was generated from the following file: +
+
+ + + + diff --git a/lib/docs/html/class_team_speak3___helper___signal___exception.js b/lib/docs/html/class_team_speak3___helper___signal___exception.js new file mode 100644 index 0000000..0375a8d --- /dev/null +++ b/lib/docs/html/class_team_speak3___helper___signal___exception.js @@ -0,0 +1,5 @@ +var class_team_speak3___helper___signal___exception = +[ + [ "prepareCustomMessage", "class_team_speak3___helper___signal___exception.html#a3bfcdf7b85a393b7a8b05b048ae3279c", null ], + [ "getSender", "class_team_speak3___helper___signal___exception.html#ae7d4b369dd11d3cf56d120acae0cf1db", null ] +]; \ No newline at end of file diff --git a/lib/docs/html/class_team_speak3___helper___signal___exception.png b/lib/docs/html/class_team_speak3___helper___signal___exception.png new file mode 100644 index 0000000000000000000000000000000000000000..cc17554eac5da6fa633ea74c6af15ced81c3ddac GIT binary patch literal 1493 zcmah}do;IBl4bdDmlBd@>7^$hPKQY z8dl!rF{&XIvOfl+yeeZbW@6T07(4B0&uPz|vwP3E_kO+=mZHC$!C(+P8;H{9)_89( zA3$34*#=*t4+DVQ1%&f)bdn5@G?zd6y|R2}AIF)$+1axuKRg_pkQeV;-UZdU1h}NH z7u@lll?4fY3O8s3g6Y$N*RM7CmLzvFVMJHNLSfhFl+aL4n&23o5x>65Zi%=`Es5VG zNgO2ANnxSOs*W{ONSzeGD!FjVk$Kdj)<%$e#Ucya=lLfI8Pq)eJR1!&vq0|ebTkZ$^PCqwg`;zX92 zoB;lh?{ty5^0PN`%HV*^IU|I$9r}#Bj_`Mq2kcFa_l}1tmvFMt2nN(4dU^9&EmRe=pllnLa7np1E7Ro8g z$6TVdtQI#!#w>@Yp-_=ARhPv(bP)wBWE#w2N@JWcq`WxpNo}=PTaxyhv$BH%3X48> z4KH*DO&2K7%#p!w$eoQzv%lfcKIP%H}5HF!Dw5a zqCu$|;D;<9$Z{k1!M?EUxF0plH!Rw1b&^Q|plWj?S;4-R8m6Bec^?G!iKd5WaV?6habu)*~sbh{Vh~6 z*Yqv45oV-Wp&$}!P_UC{jA9(AbaqhzOG4He8sj-Q&{~_#thXB=G;)vzTy+$l1-siP zTDw9Wazzdi4&TO!2_WhR3pOZP4mV<)d2Z@=G(W z$C+lF%Hr!qGE6dA#jJs3`rz!W4~2T)Dfc(%Hi=vO$e=s!W`3zS>(}IL|HgW3Nyu!Q zcsFWNJWS$(MBaIh@5j2iZNt6357XwY`�)y4Y|!B62=Xl`dxWV^`|Nc=k_<=L>R6 z(|%4gqzr~EoNA4?OidgtLpHn)&Yz8OL8WPI?&;ck zLh0eC55j9)YtM}N1zQYNRH`?4)Q1ywH17Rbd;8WdTw5^v1Xs4O+*f)@66>CiV_^ Wa*g4?<3pr37(l?ioU48azV;`F8uc9j literal 0 HcmV?d00001 diff --git a/lib/docs/html/class_team_speak3___helper___signal___handler-members.html b/lib/docs/html/class_team_speak3___helper___signal___handler-members.html new file mode 100644 index 0000000..2449d9c --- /dev/null +++ b/lib/docs/html/class_team_speak3___helper___signal___handler-members.html @@ -0,0 +1,130 @@ + + + + + + +TeamSpeak 3 PHP Framework: Member List + + + + + + + + + + + + + +
+
+ + + + + + + +
+
TeamSpeak 3 PHP Framework +  1.1.23 +
+
Copyright © Planet TeamSpeak. All rights reserved.
+
+
+ + + + + +
+
+ +
+
+
+ +
+ + + + +
+ +
+ +
+
+
TeamSpeak3_Helper_Signal_Handler Member List
+
+
+ +

This is the complete list of members for TeamSpeak3_Helper_Signal_Handler, including all inherited members.

+ + + + + +
$callback (defined in TeamSpeak3_Helper_Signal_Handler)TeamSpeak3_Helper_Signal_Handlerprotected
$signal (defined in TeamSpeak3_Helper_Signal_Handler)TeamSpeak3_Helper_Signal_Handlerprotected
__construct($signal, $callback)TeamSpeak3_Helper_Signal_Handler
call(array $args=array())TeamSpeak3_Helper_Signal_Handler
+
+ + + + diff --git a/lib/docs/html/class_team_speak3___helper___signal___handler.html b/lib/docs/html/class_team_speak3___helper___signal___handler.html new file mode 100644 index 0000000..cada06f --- /dev/null +++ b/lib/docs/html/class_team_speak3___helper___signal___handler.html @@ -0,0 +1,243 @@ + + + + + + +TeamSpeak 3 PHP Framework: TeamSpeak3_Helper_Signal_Handler Class Reference + + + + + + + + + + + + + +
+
+ + + + + + + +
+
TeamSpeak 3 PHP Framework +  1.1.23 +
+
Copyright © Planet TeamSpeak. All rights reserved.
+
+
+ + + + + +
+
+ +
+
+
+ +
+ + + + +
+ +
+ +
+ +
+
TeamSpeak3_Helper_Signal_Handler Class Reference
+
+
+ +

Helper class providing handler functions for signals. + More...

+ + + + + + + + +

+Public Member Functions

 __construct ($signal, $callback)
 The TeamSpeak3_Helper_Signal_Handler constructor. More...
 
 call (array $args=array())
 Invoke the signal handler. More...
 
+ + + + + +

+Protected Attributes

$signal = null
 
$callback = null
 
+

Detailed Description

+

Helper class providing handler functions for signals.

+ +

Definition at line 32 of file Handler.php.

+

Constructor & Destructor Documentation

+ +
+
+ + + + + + + + + + + + + + + + + + +
TeamSpeak3_Helper_Signal_Handler::__construct ( $signal,
 $callback 
)
+
+ +

The TeamSpeak3_Helper_Signal_Handler constructor.

+
Parameters
+ + + +
string$signal
mixed$callback
+
+
+
Exceptions
+ + +
TeamSpeak3_Helper_Signal_Exception
+
+
+
Returns
TeamSpeak3_Helper_Signal_Handler
+ +

Definition at line 56 of file Handler.php.

+
57  {
+
58  $this->signal = (string) $signal;
+
59 
+
60  if(!is_callable($callback))
+
61  {
+
62  throw new TeamSpeak3_Helper_Signal_Exception("invalid callback specified for signal '" . $signal . "'");
+
63  }
+
64 
+
65  $this->callback = $callback;
+
66  }
+
+
+
+

Member Function Documentation

+ +
+
+ + + + + + + + +
TeamSpeak3_Helper_Signal_Handler::call (array $args = array())
+
+ +

Invoke the signal handler.

+
Parameters
+ + +
array$args
+
+
+
Returns
mixed
+ +

Definition at line 74 of file Handler.php.

+
75  {
+
76  return call_user_func_array($this->callback, $args);
+
77  }
+
+
+
+
The documentation for this class was generated from the following file: +
+
+ + + + diff --git a/lib/docs/html/class_team_speak3___helper___signal___handler.js b/lib/docs/html/class_team_speak3___helper___signal___handler.js new file mode 100644 index 0000000..0e68bcf --- /dev/null +++ b/lib/docs/html/class_team_speak3___helper___signal___handler.js @@ -0,0 +1,7 @@ +var class_team_speak3___helper___signal___handler = +[ + [ "__construct", "class_team_speak3___helper___signal___handler.html#acaeace4c6fe538813ae52b7f9283c063", null ], + [ "call", "class_team_speak3___helper___signal___handler.html#a1c3e62b60b8459ffe70bf25bc9064375", null ], + [ "$signal", "class_team_speak3___helper___signal___handler.html#a50cd43219ff631c81f9c7b48a993a658", null ], + [ "$callback", "class_team_speak3___helper___signal___handler.html#a241f3b1383b2ae44da3824baba0f44d3", null ] +]; \ No newline at end of file diff --git a/lib/docs/html/class_team_speak3___helper___signal___interface-members.html b/lib/docs/html/class_team_speak3___helper___signal___interface-members.html new file mode 100644 index 0000000..6429ecc --- /dev/null +++ b/lib/docs/html/class_team_speak3___helper___signal___interface-members.html @@ -0,0 +1,152 @@ + + + + + + +TeamSpeak 3 PHP Framework: Member List + + + + + + + + + + + + + +
+
+ + + + + + + +
+
TeamSpeak 3 PHP Framework +  1.1.23 +
+
Copyright © Planet TeamSpeak. All rights reserved.
+
+
+ + + + + +
+
+ +
+
+
+ +
+ + + + +
+ +
+ +
+
+
TeamSpeak3_Helper_Signal_Interface Member List
+
+
+ +

This is the complete list of members for TeamSpeak3_Helper_Signal_Interface, including all inherited members.

+ + + + + + + + + + + + + + + + + + + + + + + + + + + +
onCommandFinished($cmd, TeamSpeak3_Adapter_ServerQuery_Reply $reply)TeamSpeak3_Helper_Signal_Interface
onCommandStarted($cmd)TeamSpeak3_Helper_Signal_Interface
onConnect(TeamSpeak3_Adapter_Abstract $adapter)TeamSpeak3_Helper_Signal_Interface
onDebugDataRead($data)TeamSpeak3_Helper_Signal_Interface
onDebugDataSend($data)TeamSpeak3_Helper_Signal_Interface
onDisconnect()TeamSpeak3_Helper_Signal_Interface
onError(TeamSpeak3_Adapter_ServerQuery_Reply $reply)TeamSpeak3_Helper_Signal_Interface
onEvent(TeamSpeak3_Adapter_ServerQuery_Event $event, TeamSpeak3_Node_Host $host)TeamSpeak3_Helper_Signal_Interface
onException(TeamSpeak3_Exception $e)TeamSpeak3_Helper_Signal_Interface
onFtDownloadFinished($ftkey, $buff, $size)TeamSpeak3_Helper_Signal_Interface
onFtDownloadProgress($ftkey, $buff, $size)TeamSpeak3_Helper_Signal_Interface
onFtDownloadStarted($ftkey, $buff, $size)TeamSpeak3_Helper_Signal_Interface
onFtHandshake(TeamSpeak3_Adapter_FileTransfer $adapter)TeamSpeak3_Helper_Signal_Interface
onFtUploadFinished($ftkey, $seek, $size)TeamSpeak3_Helper_Signal_Interface
onFtUploadProgress($ftkey, $seek, $size)TeamSpeak3_Helper_Signal_Interface
onFtUploadStarted($ftkey, $seek, $size)TeamSpeak3_Helper_Signal_Interface
onLogin(TeamSpeak3_Node_Host $host)TeamSpeak3_Helper_Signal_Interface
onLogout(TeamSpeak3_Node_Host $host)TeamSpeak3_Helper_Signal_Interface
onServercreated(TeamSpeak3_Node_Host $host, $sid)TeamSpeak3_Helper_Signal_Interface
onServerdeleted(TeamSpeak3_Node_Host $host, $sid)TeamSpeak3_Helper_Signal_Interface
onServerselected(TeamSpeak3_Node_Host $host)TeamSpeak3_Helper_Signal_Interface
onServershutdown(TeamSpeak3_Node_Host $host)TeamSpeak3_Helper_Signal_Interface
onServerstarted(TeamSpeak3_Node_Host $host, $sid)TeamSpeak3_Helper_Signal_Interface
onServerstopped(TeamSpeak3_Node_Host $host, $sid)TeamSpeak3_Helper_Signal_Interface
onTokencreated(TeamSpeak3_Node_Server $server, $token)TeamSpeak3_Helper_Signal_Interface
onWaitTimeout($time, TeamSpeak3_Adapter_Abstract $adapter)TeamSpeak3_Helper_Signal_Interface
+
+ + + + diff --git a/lib/docs/html/class_team_speak3___helper___string-members.html b/lib/docs/html/class_team_speak3___helper___string-members.html new file mode 100644 index 0000000..bfcf911 --- /dev/null +++ b/lib/docs/html/class_team_speak3___helper___string-members.html @@ -0,0 +1,178 @@ + + + + + + +TeamSpeak 3 PHP Framework: Member List + + + + + + + + + + + + + +
+
+ + + + + + + +
+
TeamSpeak 3 PHP Framework +  1.1.23 +
+
Copyright © Planet TeamSpeak. All rights reserved.
+
+
+ + + + + +
+
+ +
+
+
+ +
+ + + + +
+ +
+ +
+
+
TeamSpeak3_Helper_String Member List
+
+
+ +

This is the complete list of members for TeamSpeak3_Helper_String, including all inherited members.

+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
$positionTeamSpeak3_Helper_Stringprotected
$string (defined in TeamSpeak3_Helper_String)TeamSpeak3_Helper_Stringprotected
__call($function, $args)TeamSpeak3_Helper_String
__construct($string)TeamSpeak3_Helper_String
__toString()TeamSpeak3_Helper_String
append($part)TeamSpeak3_Helper_String
arg(array $args, $char="%")TeamSpeak3_Helper_String
contains($pattern, $regexp=FALSE)TeamSpeak3_Helper_String
count()TeamSpeak3_Helper_String
current()TeamSpeak3_Helper_String
endsWith($pattern)TeamSpeak3_Helper_String
escape()TeamSpeak3_Helper_String
factory($string)TeamSpeak3_Helper_Stringstatic
filterAlnum()TeamSpeak3_Helper_String
filterAlpha()TeamSpeak3_Helper_String
filterDigits()TeamSpeak3_Helper_String
findFirst($needle)TeamSpeak3_Helper_String
findLast($needle)TeamSpeak3_Helper_String
fromBase64($base64)TeamSpeak3_Helper_Stringstatic
fromHex($hex)TeamSpeak3_Helper_Stringstatic
isInt()TeamSpeak3_Helper_String
isUtf8()TeamSpeak3_Helper_String
key()TeamSpeak3_Helper_String
next()TeamSpeak3_Helper_String
offsetExists($offset)TeamSpeak3_Helper_String
offsetGet($offset)TeamSpeak3_Helper_String
offsetSet($offset, $value)TeamSpeak3_Helper_String
offsetUnset($offset)TeamSpeak3_Helper_String
prepend($part)TeamSpeak3_Helper_String
replace($search, $replace, $caseSensitivity=TRUE)TeamSpeak3_Helper_String
resize($size, $char="\0")TeamSpeak3_Helper_String
rewind()TeamSpeak3_Helper_String
section($separator, $first=0, $last=0)TeamSpeak3_Helper_String
spaceToPercent()TeamSpeak3_Helper_String
split($separator, $limit=0)TeamSpeak3_Helper_String
startsWith($pattern)TeamSpeak3_Helper_String
substr($start, $length=null)TeamSpeak3_Helper_String
toBase64()TeamSpeak3_Helper_String
toCrc32()TeamSpeak3_Helper_String
toHex()TeamSpeak3_Helper_String
toInt()TeamSpeak3_Helper_String
toLower()TeamSpeak3_Helper_String
toMd5()TeamSpeak3_Helper_String
toSha1()TeamSpeak3_Helper_String
toString()TeamSpeak3_Helper_String
toUpper()TeamSpeak3_Helper_String
toUtf8()TeamSpeak3_Helper_String
transliterate()TeamSpeak3_Helper_String
trim()TeamSpeak3_Helper_String
unescape()TeamSpeak3_Helper_String
uriSafe($spacer="-")TeamSpeak3_Helper_String
valid()TeamSpeak3_Helper_String
+
+ + + + diff --git a/lib/docs/html/class_team_speak3___helper___string.html b/lib/docs/html/class_team_speak3___helper___string.html new file mode 100644 index 0000000..bbd96a0 --- /dev/null +++ b/lib/docs/html/class_team_speak3___helper___string.html @@ -0,0 +1,2205 @@ + + + + + + +TeamSpeak 3 PHP Framework: TeamSpeak3_Helper_String Class Reference + + + + + + + + + + + + + +
+
+ + + + + + + +
+
TeamSpeak 3 PHP Framework +  1.1.23 +
+
Copyright © Planet TeamSpeak. All rights reserved.
+
+
+ + + + + +
+
+ +
+
+
+ +
+ + + + +
+ +
+ +
+ +
+
TeamSpeak3_Helper_String Class Reference
+
+
+ +

Helper class for string handling. + More...

+
+ + Inheritance diagram for TeamSpeak3_Helper_String:
+
+
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +

+Public Member Functions

 __construct ($string)
 The TeamSpeak3_Helper_String constructor. More...
 
 replace ($search, $replace, $caseSensitivity=TRUE)
 Replaces every occurrence of the string $search with the string $replace. More...
 
 arg (array $args, $char="%")
 This function replaces indexed or associative signs with given values. More...
 
 startsWith ($pattern)
 Returns true if the string starts with $pattern. More...
 
 endsWith ($pattern)
 Returns true if the string ends with $pattern. More...
 
 findFirst ($needle)
 Returns the position of the first occurrence of a char in a string. More...
 
 findLast ($needle)
 Returns the position of the last occurrence of a char in a string. More...
 
 toLower ()
 Returns the lowercased string. More...
 
 toUpper ()
 Returns the uppercased string. More...
 
 contains ($pattern, $regexp=FALSE)
 Returns true if the string contains $pattern. More...
 
 substr ($start, $length=null)
 Returns part of a string. More...
 
 split ($separator, $limit=0)
 Splits the string into substrings wherever $separator occurs. More...
 
 append ($part)
 Appends $part to the string. More...
 
 prepend ($part)
 Prepends $part to the string. More...
 
 section ($separator, $first=0, $last=0)
 Returns a section of the string. More...
 
 resize ($size, $char="\0")
 Sets the size of the string to $size characters. More...
 
 trim ()
 Strips whitespaces (or other characters) from the beginning and end of the string. More...
 
 escape ()
 Escapes a string using the TeamSpeak 3 escape patterns. More...
 
 unescape ()
 Unescapes a string using the TeamSpeak 3 escape patterns. More...
 
 filterAlnum ()
 Removes any non alphanumeric characters from the string. More...
 
 filterAlpha ()
 Removes any non alphabetic characters from the string. More...
 
 filterDigits ()
 Removes any non numeric characters from the string. More...
 
 isInt ()
 Returns TRUE if the string is a numeric value. More...
 
 toInt ()
 Returns the integer value of the string. More...
 
 toCrc32 ()
 Calculates and returns the crc32 polynomial of the string. More...
 
 toMd5 ()
 Calculates and returns the md5 checksum of the string. More...
 
 toSha1 ()
 Calculates and returns the sha1 checksum of the string. More...
 
 isUtf8 ()
 Returns TRUE if the string is UTF-8 encoded. More...
 
 toUtf8 ()
 Converts the string to UTF-8. More...
 
 toBase64 ()
 Encodes the string with MIME base64 and returns the result. More...
 
 toHex ()
 Returns the hexadecimal value of the string. More...
 
 transliterate ()
 Returns the string transliterated from UTF-8 to Latin. More...
 
 uriSafe ($spacer="-")
 Processes the string and replaces all accented UTF-8 characters by unaccented ASCII-7 "equivalents", whitespaces are replaced by a pre-defined spacer and the string is lowercase. More...
 
 spaceToPercent ()
 Replaces space characters with percent encoded strings. More...
 
 toString ()
 Returns the string as a standard string. More...
 
 __call ($function, $args)
 Magical function that allows you to call PHP's built-in string functions on the TeamSpeak3_Helper_String object. More...
 
 __toString ()
 Returns the character as a standard string. More...
 
 count ()
 
 rewind ()
 
 valid ()
 
 key ()
 
 current ()
 
 next ()
 
 offsetExists ($offset)
 
 offsetGet ($offset)
 
 offsetSet ($offset, $value)
 
 offsetUnset ($offset)
 
+ + + + + + + + + + +

+Static Public Member Functions

static factory ($string)
 Returns a TeamSpeak3_Helper_String object for thegiven string. More...
 
static fromBase64 ($base64)
 Decodes the string with MIME base64 and returns the result as an TeamSpeak3_Helper_String. More...
 
static fromHex ($hex)
 Returns the TeamSpeak3_Helper_String based on a given hex value. More...
 
+ + + + + +

+Protected Attributes

$string
 
 $position = 0
 
+

Detailed Description

+

Helper class for string handling.

+ +

Definition at line 32 of file String.php.

+

Constructor & Destructor Documentation

+ +
+
+ + + + + + + + +
TeamSpeak3_Helper_String::__construct ( $string)
+
+ +

The TeamSpeak3_Helper_String constructor.

+
Parameters
+ + +
string$string
+
+
+
Returns
TeamSpeak3_Helper_String
+ +

Definition at line 52 of file String.php.

+
53  {
+
54  $this->string = strval($string);
+
55  }
+
+
+
+

Member Function Documentation

+ + + +
+
+ + + + + + + + + + + + + + + + + + + + + + + + +
TeamSpeak3_Helper_String::replace ( $search,
 $replace,
 $caseSensitivity = TRUE 
)
+
+ +

Replaces every occurrence of the string $search with the string $replace.

+
Parameters
+ + + + +
string$search
string$replace
boolean$caseSensitivity
+
+
+
Returns
TeamSpeak3_Helper_String
+ +

Definition at line 76 of file String.php.

+
77  {
+
78  if($caseSensitivity)
+
79  {
+
80  $this->string = str_replace($search, $replace, $this->string);
+
81  }
+
82  else
+
83  {
+
84  $this->string = str_ireplace($search, $replace, $this->string);
+
85  }
+
86 
+
87  return $this;
+
88  }
+
+
+
+ +
+
+ + + + + + + + + + + + + + + + + + +
TeamSpeak3_Helper_String::arg (array $args,
 $char = "%" 
)
+
+ +

This function replaces indexed or associative signs with given values.

+
Parameters
+ + + +
array$args
string$char
+
+
+
Returns
TeamSpeak3_Helper_String
+ +

Definition at line 97 of file String.php.

+ +

Referenced by TeamSpeak3_Exception\prepareCustomMessage().

+
98  {
+
99  $args = array_reverse($args, TRUE);
+
100 
+
101  foreach($args as $key => $val)
+
102  {
+
103  $args[$char . $key] = $val;
+
104  unset($args[$key]);
+
105  }
+
106 
+
107  $this->string = strtr($this->string, $args);
+
108 
+
109  return $this;
+
110  }
+
+
+
+ +
+
+ + + + + + + + +
TeamSpeak3_Helper_String::startsWith ( $pattern)
+
+ +

Returns true if the string starts with $pattern.

+
Parameters
+ + +
string$pattern
+
+
+
Returns
boolean
+ +

Definition at line 118 of file String.php.

+ +

References substr().

+ +

Referenced by TeamSpeak3_Adapter_ServerQuery_Event\__construct().

+
119  {
+
120  return (substr($this->string, 0, strlen($pattern)) == $pattern) ? TRUE : FALSE;
+
121  }
+
+
+
+ +
+
+ + + + + + + + +
TeamSpeak3_Helper_String::endsWith ( $pattern)
+
+ +

Returns true if the string ends with $pattern.

+
Parameters
+ + +
string$pattern
+
+
+
Returns
boolean
+ +

Definition at line 129 of file String.php.

+ +

References substr().

+
130  {
+
131  return (substr($this->string, strlen($pattern)*-1) == $pattern) ? TRUE : FALSE;
+
132  }
+
+
+
+ +
+
+ + + + + + + + +
TeamSpeak3_Helper_String::findFirst ( $needle)
+
+ +

Returns the position of the first occurrence of a char in a string.

+
Parameters
+ + +
string$needle
+
+
+
Returns
integer
+ +

Definition at line 140 of file String.php.

+
141  {
+
142  return strpos($this->string, $needle);
+
143  }
+
+
+
+ +
+
+ + + + + + + + +
TeamSpeak3_Helper_String::findLast ( $needle)
+
+ +

Returns the position of the last occurrence of a char in a string.

+
Parameters
+ + +
string$needle
+
+
+
Returns
integer
+ +

Definition at line 151 of file String.php.

+
152  {
+
153  return strrpos($this->string, $needle);
+
154  }
+
+
+
+ +
+
+ + + + + + + +
TeamSpeak3_Helper_String::toLower ()
+
+ +

Returns the lowercased string.

+
Returns
TeamSpeak3_Helper_String
+ +

Definition at line 161 of file String.php.

+
162  {
+
163  return new self(strtolower($this->string));
+
164  }
+
+
+
+ +
+
+ + + + + + + +
TeamSpeak3_Helper_String::toUpper ()
+
+ +

Returns the uppercased string.

+
Returns
TeamSpeak3_Helper_String
+ +

Definition at line 171 of file String.php.

+
172  {
+
173  return new self(strtoupper($this->string));
+
174  }
+
+
+
+ +
+
+ + + + + + + + + + + + + + + + + + +
TeamSpeak3_Helper_String::contains ( $pattern,
 $regexp = FALSE 
)
+
+ +

Returns true if the string contains $pattern.

+
Parameters
+ + + +
string$pattern
booean$regexp
+
+
+
Returns
boolean
+ +

Definition at line 183 of file String.php.

+ +

Referenced by isInt().

+
184  {
+
185  if(empty($pattern))
+
186  {
+
187  return TRUE;
+
188  }
+
189 
+
190  if($regexp)
+
191  {
+
192  return (preg_match("/" . $pattern . "/i", $this->string)) ? TRUE : FALSE;
+
193  }
+
194  else
+
195  {
+
196  return (stristr($this->string, $pattern) !== FALSE) ? TRUE : FALSE;
+
197  }
+
198  }
+
+
+
+ +
+
+ + + + + + + + + + + + + + + + + + +
TeamSpeak3_Helper_String::substr ( $start,
 $length = null 
)
+
+ +

Returns part of a string.

+
Parameters
+ + + +
integer$start
integer$length
+
+
+
Returns
TeamSpeak3_Helper_String
+ +

Definition at line 207 of file String.php.

+ +

Referenced by endsWith(), resize(), and startsWith().

+
208  {
+
209  $string = ($length !== null) ? substr($this->string, $start, $length) : substr($this->string, $start);
+
210 
+
211  return new self($string);
+
212  }
+
+
+
+ +
+
+ + + + + + + + + + + + + + + + + + +
TeamSpeak3_Helper_String::split ( $separator,
 $limit = 0 
)
+
+ +

Splits the string into substrings wherever $separator occurs.

+
Parameters
+ + + +
string$separator
integer$limit
+
+
+
Returns
array
+ +

Definition at line 221 of file String.php.

+ +

References count().

+ +

Referenced by TeamSpeak3_Adapter_ServerQuery_Event\__construct().

+
222  {
+
223  $parts = explode($separator, $this->string, ($limit) ? intval($limit) : $this->count());
+
224 
+
225  foreach($parts as $key => $val)
+
226  {
+
227  $parts[$key] = new self($val);
+
228  }
+
229 
+
230  return $parts;
+
231  }
+
+
+
+ +
+
+ + + + + + + + +
TeamSpeak3_Helper_String::append ( $part)
+
+ +

Appends $part to the string.

+
Parameters
+ + +
string$part
+
+
+
Returns
TeamSpeak3_Helper_String
+ +

Definition at line 239 of file String.php.

+
240  {
+
241  $this->string = $this->string . strval($part);
+
242 
+
243  return $this;
+
244  }
+
+
+
+ +
+
+ + + + + + + + +
TeamSpeak3_Helper_String::prepend ( $part)
+
+ +

Prepends $part to the string.

+
Parameters
+ + +
string$part
+
+
+
Returns
TeamSpeak3_Helper_String
+ +

Definition at line 252 of file String.php.

+
253  {
+
254  $this->string = strval($part) . $this->string;
+
255 
+
256  return $this;
+
257  }
+
+
+
+ +
+
+ + + + + + + + + + + + + + + + + + + + + + + + +
TeamSpeak3_Helper_String::section ( $separator,
 $first = 0,
 $last = 0 
)
+
+ +

Returns a section of the string.

+
Parameters
+ + + + +
string$separator
integer$first
integer$last
+
+
+
Returns
TeamSpeak3_Helper_String
+ +

Definition at line 267 of file String.php.

+ +

References count().

+ +

Referenced by TeamSpeak3_Adapter_ServerQuery\request(), and TeamSpeak3_Adapter_ServerQuery\wait().

+
268  {
+
269  $sections = explode($separator, $this->string);
+
270 
+
271  $total = count($sections);
+
272  $first = intval($first);
+
273  $last = intval($last);
+
274 
+
275  if($first > $total) return null;
+
276  if($first > $last) $last = $first;
+
277 
+
278  for($i = 0; $i < $total; $i++)
+
279  {
+
280  if($i < $first || $i > $last)
+
281  {
+
282  unset($sections[$i]);
+
283  }
+
284  }
+
285 
+
286  $string = implode($separator, $sections);
+
287 
+
288  return new self($string);
+
289  }
+
+
+
+ +
+
+ + + + + + + + + + + + + + + + + + +
TeamSpeak3_Helper_String::resize ( $size,
 $char = "\0" 
)
+
+ +

Sets the size of the string to $size characters.

+
Parameters
+ + + +
integer$size
string$char
+
+
+
Returns
TeamSpeak3_Helper_String
+ +

Definition at line 298 of file String.php.

+ +

References count(), and substr().

+
299  {
+
300  $chars = ($size - $this->count());
+
301 
+
302  if($chars < 0)
+
303  {
+
304  $this->string = substr($this->string, 0, $chars);
+
305  }
+
306  elseif($chars > 0)
+
307  {
+
308  $this->string = str_pad($this->string, $size, strval($char));
+
309  }
+
310 
+
311  return $this;
+
312  }
+
+
+
+ +
+
+ + + + + + + +
TeamSpeak3_Helper_String::trim ()
+
+ +

Strips whitespaces (or other characters) from the beginning and end of the string.

+
Returns
TeamSpeak3_Helper_String
+ +

Definition at line 319 of file String.php.

+ +

Referenced by uriSafe().

+
320  {
+
321  $this->string = trim($this->string);
+
322 
+
323  return $this;
+
324  }
+
+
+
+ +
+
+ + + + + + + +
TeamSpeak3_Helper_String::escape ()
+
+ +

Escapes a string using the TeamSpeak 3 escape patterns.

+
Returns
TeamSpeak3_Helper_String
+ +

Definition at line 331 of file String.php.

+ +

References TeamSpeak3\getEscapePatterns().

+
332  {
+
333  foreach(TeamSpeak3::getEscapePatterns() as $search => $replace)
+
334  {
+
335  $this->string = str_replace($search, $replace, $this->string);
+
336  }
+
337 
+
338  return $this;
+
339  }
+
+
+
+ +
+
+ + + + + + + +
TeamSpeak3_Helper_String::unescape ()
+
+ +

Unescapes a string using the TeamSpeak 3 escape patterns.

+
Returns
TeamSpeak3_Helper_String
+ +

Definition at line 346 of file String.php.

+ +

References TeamSpeak3\getEscapePatterns().

+
347  {
+
348  $this->string = strtr($this->string, array_flip(TeamSpeak3::getEscapePatterns()));
+
349 
+
350  return $this;
+
351  }
+
+
+
+ +
+
+ + + + + + + +
TeamSpeak3_Helper_String::filterAlnum ()
+
+ +

Removes any non alphanumeric characters from the string.

+
Returns
TeamSpeak3_Helper_String
+ +

Definition at line 358 of file String.php.

+
359  {
+
360  $this->string = preg_replace("/[^[:alnum:]]/", "", $this->string);
+
361 
+
362  return $this;
+
363  }
+
+
+
+ +
+
+ + + + + + + +
TeamSpeak3_Helper_String::filterAlpha ()
+
+ +

Removes any non alphabetic characters from the string.

+
Returns
TeamSpeak3_Helper_String
+ +

Definition at line 370 of file String.php.

+
371  {
+
372  $this->string = preg_replace("/[^[:alpha:]]/", "", $this->string);
+
373 
+
374  return $this;
+
375  }
+
+
+
+ +
+
+ + + + + + + +
TeamSpeak3_Helper_String::filterDigits ()
+
+ +

Removes any non numeric characters from the string.

+
Returns
TeamSpeak3_Helper_String
+ +

Definition at line 382 of file String.php.

+
383  {
+
384  $this->string = preg_replace("/[^[:digit:]]/", "", $this->string);
+
385 
+
386  return $this;
+
387  }
+
+
+
+ +
+
+ + + + + + + +
TeamSpeak3_Helper_String::isInt ()
+
+ +

Returns TRUE if the string is a numeric value.

+
Returns
boolean
+ +

Definition at line 394 of file String.php.

+ +

References contains().

+
395  {
+
396  return (is_numeric($this->string) && !$this->contains(".")) ? TRUE : FALSE;
+
397  }
+
+
+
+ +
+
+ + + + + + + +
TeamSpeak3_Helper_String::toInt ()
+
+ +

Returns the integer value of the string.

+
Returns
float
+
+integer
+ +

Definition at line 405 of file String.php.

+
406  {
+
407  if($this->string == pow(2, 63) || $this->string == pow(2, 64))
+
408  {
+
409  return -1;
+
410  }
+
411 
+
412  return ($this->string > pow(2, 31)) ? floatval($this->string) : intval($this->string);
+
413  }
+
+
+
+ +
+
+ + + + + + + +
TeamSpeak3_Helper_String::toCrc32 ()
+
+ +

Calculates and returns the crc32 polynomial of the string.

+
Returns
string
+ +

Definition at line 420 of file String.php.

+
421  {
+
422  return crc32($this->string);
+
423  }
+
+
+
+ +
+
+ + + + + + + +
TeamSpeak3_Helper_String::toMd5 ()
+
+ +

Calculates and returns the md5 checksum of the string.

+
Returns
string
+ +

Definition at line 430 of file String.php.

+
431  {
+
432  return md5($this->string);
+
433  }
+
+
+
+ +
+
+ + + + + + + +
TeamSpeak3_Helper_String::toSha1 ()
+
+ +

Calculates and returns the sha1 checksum of the string.

+
Returns
string
+ +

Definition at line 440 of file String.php.

+
441  {
+
442  return sha1($this->string);
+
443  }
+
+
+
+ +
+
+ + + + + + + +
TeamSpeak3_Helper_String::isUtf8 ()
+
+ +

Returns TRUE if the string is UTF-8 encoded.

+

This method searches for non-ascii multibyte sequences in the UTF-8 range.

+
Returns
boolean
+ +

Definition at line 451 of file String.php.

+ +

Referenced by toUtf8().

+
452  {
+
453  $pattern = array();
+
454 
+
455  $pattern[] = "[\xC2-\xDF][\x80-\xBF]"; // non-overlong 2-byte
+
456  $pattern[] = "\xE0[\xA0-\xBF][\x80-\xBF]"; // excluding overlongs
+
457  $pattern[] = "[\xE1-\xEC\xEE\xEF][\x80-\xBF]{2}"; // straight 3-byte
+
458  $pattern[] = "\xED[\x80-\x9F][\x80-\xBF]"; // excluding surrogates
+
459  $pattern[] = "\xF0[\x90-\xBF][\x80-\xBF]{2}"; // planes 1-3
+
460  $pattern[] = "[\xF1-\xF3][\x80-\xBF]{3}"; // planes 4-15
+
461  $pattern[] = "\xF4[\x80-\x8F][\x80-\xBF]{2}"; // plane 16
+
462 
+
463  return preg_match("%(?:" . implode("|", $pattern) . ")+%xs", $this->string);
+
464  }
+
+
+
+ +
+
+ + + + + + + +
TeamSpeak3_Helper_String::toUtf8 ()
+
+ +

Converts the string to UTF-8.

+
Returns
TeamSpeak3_Helper_String
+ +

Definition at line 471 of file String.php.

+ +

References isUtf8().

+ +

Referenced by transliterate().

+
472  {
+
473  if(!$this->isUtf8())
+
474  {
+
475  $this->string = utf8_encode($this->string);
+
476  }
+
477 
+
478  return $this;
+
479  }
+
+
+
+ +
+
+ + + + + + + +
TeamSpeak3_Helper_String::toBase64 ()
+
+ +

Encodes the string with MIME base64 and returns the result.

+
Returns
string
+ +

Definition at line 486 of file String.php.

+
487  {
+
488  return base64_encode($this->string);
+
489  }
+
+
+
+ +
+
+ + + + + +
+ + + + + + + + +
static TeamSpeak3_Helper_String::fromBase64 ( $base64)
+
+static
+
+ +

Decodes the string with MIME base64 and returns the result as an TeamSpeak3_Helper_String.

+
Parameters
+ + +
string
+
+
+
Returns
TeamSpeak3_Helper_String
+ +

Definition at line 497 of file String.php.

+ +

Referenced by TeamSpeak3_Node_Server\snapshotDeploy().

+
498  {
+
499  return new self(base64_decode($base64));
+
500  }
+
+
+
+ +
+
+ + + + + + + +
TeamSpeak3_Helper_String::toHex ()
+
+ +

Returns the hexadecimal value of the string.

+
Returns
string
+ +

Definition at line 507 of file String.php.

+
508  {
+
509  $hex = "";
+
510 
+
511  foreach($this as $char)
+
512  {
+
513  $hex .= $char->toHex();
+
514  }
+
515 
+
516  return $hex;
+
517  }
+
+
+
+ +
+
+ + + + + +
+ + + + + + + + +
static TeamSpeak3_Helper_String::fromHex ( $hex)
+
+static
+
+ +

Returns the TeamSpeak3_Helper_String based on a given hex value.

+
Parameters
+ + +
string
+
+
+
Exceptions
+ + +
TeamSpeak3_Helper_Exception
+
+
+
Returns
TeamSpeak3_Helper_String
+ +

Definition at line 526 of file String.php.

+ +

Referenced by TeamSpeak3_Node_Server\snapshotDeploy(), and TeamSpeak3_Adapter_Update\syn().

+
527  {
+
528  $string = "";
+
529 
+
530  if(strlen($hex)%2 == 1)
+
531  {
+
532  throw new TeamSpeak3_Helper_Exception("given parameter '" . $hex . "' is not a valid hexadecimal number");
+
533  }
+
534 
+
535  foreach(str_split($hex, 2) as $chunk)
+
536  {
+
537  $string .= chr(hexdec($chunk));
+
538  }
+
539 
+
540  return new self($string);
+
541  }
+
+
+
+ +
+
+ + + + + + + +
TeamSpeak3_Helper_String::transliterate ()
+
+ +

Returns the string transliterated from UTF-8 to Latin.

+
Returns
TeamSpeak3_Helper_String
+ +

Definition at line 548 of file String.php.

+ +

References toUtf8().

+ +

Referenced by uriSafe().

+
549  {
+
550  $utf8_accents = array(
+
551  "à" => "a",
+
552  "ô" => "o",
+
553  "Ä?" => "d",
+
554  "ḟ" => "f",
+
555  "ë" => "e",
+
556  "Å¡" => "s",
+
557  "Æ¡" => "o",
+
558  "ß" => "ss",
+
559  "ă" => "a",
+
560  "Å™" => "r",
+
561  "È›" => "t",
+
562  "ň" => "n",
+
563  "Ä?" => "a",
+
564  "Ä·" => "k",
+
565  "Å?" => "s",
+
566  "ỳ" => "y",
+
567  "ņ" => "n",
+
568  "ĺ" => "l",
+
569  "ħ" => "h",
+
570  "á¹—" => "p",
+
571  "ó" => "o",
+
572  "ú" => "u",
+
573  "Ä›" => "e",
+
574  "é" => "e",
+
575  "ç" => "c",
+
576  "áº?" => "w",
+
577  "Ä‹" => "c",
+
578  "õ" => "o",
+
579  "ṡ" => "s",
+
580  "ø" => "o",
+
581  "Ä£" => "g",
+
582  "ŧ" => "t",
+
583  "È™" => "s",
+
584  "Ä—" => "e",
+
585  "ĉ" => "c",
+
586  "Å›" => "s",
+
587  "î" => "i",
+
588  "ű" => "u",
+
589  "ć" => "c",
+
590  "Ä™" => "e",
+
591  "ŵ" => "w",
+
592  "ṫ" => "t",
+
593  "Å«" => "u",
+
594  "Ä?" => "c",
+
595  "ö" => "oe",
+
596  "è" => "e",
+
597  "Å·" => "y",
+
598  "Ä…" => "a",
+
599  "Å‚" => "l",
+
600  "ų" => "u",
+
601  "ů" => "u",
+
602  "ÅŸ" => "s",
+
603  "ÄŸ" => "g",
+
604  "ļ" => "l",
+
605  "Æ’" => "f",
+
606  "ž" => "z",
+
607  "ẃ" => "w",
+
608  "ḃ" => "b",
+
609  "Ã¥" => "a",
+
610  "ì" => "i",
+
611  "ï" => "i",
+
612  "ḋ" => "d",
+
613  "Å¥" => "t",
+
614  "Å—" => "r",
+
615  "ä" => "ae",
+
616  "í" => "i",
+
617  "Å•" => "r",
+
618  "ê" => "e",
+
619  "ü" => "ue",
+
620  "ò" => "o",
+
621  "Ä“" => "e",
+
622  "ñ" => "n",
+
623  "Å„" => "n",
+
624  "Ä¥" => "h",
+
625  "Ä?" => "g",
+
626  "Ä‘" => "d",
+
627  "ĵ" => "j",
+
628  "ÿ" => "y",
+
629  "Å©" => "u",
+
630  "Å­" => "u",
+
631  "ư" => "u",
+
632  "Å£" => "t",
+
633  "ý" => "y",
+
634  "Å‘" => "o",
+
635  "â" => "a",
+
636  "ľ" => "l",
+
637  "ẅ" => "w",
+
638  "ż" => "z",
+
639  "Ä«" => "i",
+
640  "ã" => "a",
+
641  "Ä¡" => "g",
+
642  "á¹?" => "m",
+
643  "Å?" => "o",
+
644  "Ä©" => "i",
+
645  "ù" => "u",
+
646  "į" => "i",
+
647  "ź" => "z",
+
648  "á" => "a",
+
649  "û" => "u",
+
650  "þ" => "th",
+
651  "ð" => "dh",
+
652  "æ" => "ae",
+
653  "µ" => "u",
+
654  "Ä•" => "e",
+
655  "Å“" => "oe",
+
656  "À" => "A",
+
657  "Ô" => "O",
+
658  "ÄŽ" => "D",
+
659  "Ḟ" => "F",
+
660  "Ë" => "E",
+
661  "Å " => "S",
+
662  "Æ " => "O",
+
663  "Ä‚" => "A",
+
664  "Ř" => "R",
+
665  "Èš" => "T",
+
666  "Ň" => "N",
+
667  "Ä€" => "A",
+
668  "Ķ" => "K",
+
669  "Åœ" => "S",
+
670  "Ỳ" => "Y",
+
671  "Å…" => "N",
+
672  "Ĺ" => "L",
+
673  "Ħ" => "H",
+
674  "á¹–" => "P",
+
675  "Ó" => "O",
+
676  "Ú" => "U",
+
677  "Äš" => "E",
+
678  "É" => "E",
+
679  "Ç" => "C",
+
680  "Ẁ" => "W",
+
681  "ÄŠ" => "C",
+
682  "Õ" => "O",
+
683  "á¹ " => "S",
+
684  "Ø" => "O",
+
685  "Ä¢" => "G",
+
686  "Ŧ" => "T",
+
687  "Ș" => "S",
+
688  "Ä–" => "E",
+
689  "Ĉ" => "C",
+
690  "Åš" => "S",
+
691  "ÃŽ" => "I",
+
692  "Ű" => "U",
+
693  "Ć" => "C",
+
694  "Ę" => "E",
+
695  "Å´" => "W",
+
696  "Ṫ" => "T",
+
697  "Ū" => "U",
+
698  "ÄŒ" => "C",
+
699  "Ö" => "Oe",
+
700  "È" => "E",
+
701  "Ŷ" => "Y",
+
702  "Ä„" => "A",
+
703  "Å?" => "L",
+
704  "Ų" => "U",
+
705  "Å®" => "U",
+
706  "Åž" => "S",
+
707  "Äž" => "G",
+
708  "Ä»" => "L",
+
709  "Æ‘" => "F",
+
710  "Ž" => "Z",
+
711  "Ẃ" => "W",
+
712  "Ḃ" => "B",
+
713  "Ã…" => "A",
+
714  "ÃŒ" => "I",
+
715  "Ã?" => "I",
+
716  "Ḋ" => "D",
+
717  "Ť" => "T",
+
718  "Å–" => "R",
+
719  "Ä" => "Ae",
+
720  "Ã?" => "I",
+
721  "Å”" => "R",
+
722  "Ê" => "E",
+
723  "Ü" => "Ue",
+
724  "Ã’" => "O",
+
725  "Ä’" => "E",
+
726  "Ñ" => "N",
+
727  "Ń" => "N",
+
728  "Ĥ" => "H",
+
729  "Äœ" => "G",
+
730  "Ä?" => "D",
+
731  "Ä´" => "J",
+
732  "Ÿ" => "Y",
+
733  "Ũ" => "U",
+
734  "Ŭ" => "U",
+
735  "Ư" => "U",
+
736  "Å¢" => "T",
+
737  "Ã?" => "Y",
+
738  "Å?" => "O",
+
739  "Â" => "A",
+
740  "Ľ" => "L",
+
741  "Ẅ" => "W",
+
742  "Å»" => "Z",
+
743  "Ī" => "I",
+
744  "Ã" => "A",
+
745  "Ä " => "G",
+
746  "á¹€" => "M",
+
747  "ÅŒ" => "O",
+
748  "Ĩ" => "I",
+
749  "Ù" => "U",
+
750  "Ä®" => "I",
+
751  "Ź" => "Z",
+
752  "Ã?" => "A",
+
753  "Û" => "U",
+
754  "Þ" => "Th",
+
755  "Ã?" => "Dh",
+
756  "Æ" => "Ae",
+
757  "Ä”" => "E",
+
758  "Å’" => "Oe",
+
759  );
+
760 
+
761  return new self($this->toUtf8()->replace(array_keys($utf8_accents), array_values($utf8_accents)));
+
762  }
+
+
+
+ +
+
+ + + + + + + + +
TeamSpeak3_Helper_String::uriSafe ( $spacer = "-")
+
+ +

Processes the string and replaces all accented UTF-8 characters by unaccented ASCII-7 "equivalents", whitespaces are replaced by a pre-defined spacer and the string is lowercase.

+
Parameters
+ + +
string$spacer
+
+
+
Returns
TeamSpeak3_Helper_String
+ +

Definition at line 771 of file String.php.

+ +

References transliterate(), and trim().

+
772  {
+
773  $this->string = str_replace($spacer, " ", $this->string);
+
774  $this->string = $this->transliterate();
+
775  $this->string = preg_replace("/(\s|[^A-Za-z0-9\-])+/", $spacer, trim(strtolower($this->string)));
+
776  $this->string = trim($this->string, $spacer);
+
777 
+
778  return new self($this->string);
+
779  }
+
+
+
+ +
+
+ + + + + + + +
TeamSpeak3_Helper_String::spaceToPercent ()
+
+ +

Replaces space characters with percent encoded strings.

+
Returns
string
+ +

Definition at line 786 of file String.php.

+
787  {
+
788  return str_replace(" ", "%20", $this->string);
+
789  }
+
+
+
+ +
+
+ + + + + + + +
TeamSpeak3_Helper_String::toString ()
+
+ +

Returns the string as a standard string.

+
Returns
string
+ +

Definition at line 796 of file String.php.

+
797  {
+
798  return $this->string;
+
799  }
+
+
+
+ +
+
+ + + + + + + + + + + + + + + + + + +
TeamSpeak3_Helper_String::__call ( $function,
 $args 
)
+
+ +

Magical function that allows you to call PHP's built-in string functions on the TeamSpeak3_Helper_String object.

+
Parameters
+ + + +
string$function
array$args
+
+
+
Exceptions
+ + +
TeamSpeak3_Helper_Exception
+
+
+
Returns
TeamSpeak3_Helper_String
+ +

Definition at line 809 of file String.php.

+ +

References count().

+
810  {
+
811  if(!function_exists($function))
+
812  {
+
813  throw new TeamSpeak3_Helper_Exception("cannot call undefined function '" . $function . "' on this object");
+
814  }
+
815 
+
816  if(count($args))
+
817  {
+
818  if(($key = array_search($this, $args, TRUE)) !== FALSE)
+
819  {
+
820  $args[$key] = $this->string;
+
821  }
+
822  else
+
823  {
+
824  throw new TeamSpeak3_Helper_Exception("cannot call undefined function '" . $function . "' without the " . __CLASS__ . " object parameter");
+
825  }
+
826 
+
827  $return = call_user_func_array($function, $args);
+
828  }
+
829  else
+
830  {
+
831  $return = call_user_func($function, $this->string);
+
832  }
+
833 
+
834  if(is_string($return))
+
835  {
+
836  $this->string = $return;
+
837  }
+
838  else
+
839  {
+
840  return $return;
+
841  }
+
842 
+
843  return $this;
+
844  }
+
+
+
+ +
+
+ + + + + + + +
TeamSpeak3_Helper_String::__toString ()
+
+ +

Returns the character as a standard string.

+
Returns
string
+ +

Definition at line 851 of file String.php.

+
852  {
+
853  return (string) $this->string;
+
854  }
+
+
+
+ +
+
+ + + + + + + +
TeamSpeak3_Helper_String::count ()
+
+ +

+ +

Definition at line 859 of file String.php.

+ +

Referenced by __call(), resize(), section(), split(), and valid().

+
860  {
+
861  return strlen($this->string);
+
862  }
+
+
+
+ +
+
+ + + + + + + +
TeamSpeak3_Helper_String::rewind ()
+
+ +

+ +

Definition at line 867 of file String.php.

+
868  {
+
869  $this->position = 0;
+
870  }
+
+
+
+ +
+
+ + + + + + + +
TeamSpeak3_Helper_String::valid ()
+
+ +

+ +

Definition at line 875 of file String.php.

+ +

References count().

+
876  {
+
877  return $this->position < $this->count();
+
878  }
+
+
+
+ +
+
+ + + + + + + +
TeamSpeak3_Helper_String::key ()
+
+ +

+ +

Definition at line 883 of file String.php.

+ +

References $position.

+
884  {
+
885  return $this->position;
+
886  }
+
+
+
+ +
+
+ + + + + + + +
TeamSpeak3_Helper_String::current ()
+
+ +

+ +

Definition at line 891 of file String.php.

+
892  {
+
893  return new TeamSpeak3_Helper_Char($this->string{$this->position});
+
894  }
+
+
+
+ +
+
+ + + + + + + +
TeamSpeak3_Helper_String::next ()
+
+ +

+ +

Definition at line 899 of file String.php.

+
900  {
+
901  $this->position++;
+
902  }
+
+
+
+ +
+
+ + + + + + + + +
TeamSpeak3_Helper_String::offsetExists ( $offset)
+
+ +

+ +

Definition at line 907 of file String.php.

+ +

Referenced by offsetGet(), offsetSet(), and offsetUnset().

+
908  {
+
909  return ($offset < strlen($this->string)) ? TRUE : FALSE;
+
910  }
+
+
+
+ +
+
+ + + + + + + + +
TeamSpeak3_Helper_String::offsetGet ( $offset)
+
+ +

+ +

Definition at line 915 of file String.php.

+ +

References offsetExists().

+
916  {
+
917  return ($this->offsetExists($offset)) ? new TeamSpeak3_Helper_Char($this->string{$offset}) : null;
+
918  }
+
+
+
+ +
+
+ + + + + + + + + + + + + + + + + + +
TeamSpeak3_Helper_String::offsetSet ( $offset,
 $value 
)
+
+ +

+ +

Definition at line 923 of file String.php.

+ +

References offsetExists().

+
924  {
+
925  if(!$this->offsetExists($offset)) return;
+
926 
+
927  $this->string{$offset} = strval($value);
+
928  }
+
+
+
+ +
+
+ + + + + + + + +
TeamSpeak3_Helper_String::offsetUnset ( $offset)
+
+ +

+ +

Definition at line 933 of file String.php.

+ +

References offsetExists().

+
934  {
+
935  if(!$this->offsetExists($offset)) return;
+
936 
+
937  $this->string = substr_replace($this->string, "", $offset, 1);
+
938  }
+
+
+
+

Member Data Documentation

+ +
+
+ + + + + +
+ + + + +
TeamSpeak3_Helper_String::$position = 0
+
+protected
+
+ +

+ +

Definition at line 44 of file String.php.

+ +

Referenced by key().

+ +
+
+
The documentation for this class was generated from the following file: +
+
+ + + + diff --git a/lib/docs/html/class_team_speak3___helper___string.js b/lib/docs/html/class_team_speak3___helper___string.js new file mode 100644 index 0000000..873ebd3 --- /dev/null +++ b/lib/docs/html/class_team_speak3___helper___string.js @@ -0,0 +1,52 @@ +var class_team_speak3___helper___string = +[ + [ "__construct", "class_team_speak3___helper___string.html#abc3280155219f30593f8af00249ad155", null ], + [ "replace", "class_team_speak3___helper___string.html#a630942cbba0367ad2e93fea368924b52", null ], + [ "arg", "class_team_speak3___helper___string.html#aa53d94bf82f2f1d3e091a1fe6912cfa3", null ], + [ "startsWith", "class_team_speak3___helper___string.html#a1589e49036cbc501ad58a6a5f88a07b3", null ], + [ "endsWith", "class_team_speak3___helper___string.html#ab368725237c5ebff2116de6a8ba36c59", null ], + [ "findFirst", "class_team_speak3___helper___string.html#ad848ed7a9e1f42a5f5dfcbbce9b3e29e", null ], + [ "findLast", "class_team_speak3___helper___string.html#a87beac9c37d88273dddc7d4fb0da7422", null ], + [ "toLower", "class_team_speak3___helper___string.html#a43f910629395c91dd4e69871a9dacb18", null ], + [ "toUpper", "class_team_speak3___helper___string.html#a196292e46e6047abe24a355502461e5b", null ], + [ "contains", "class_team_speak3___helper___string.html#add153e99069f5f3a34f45c236f9e1bb3", null ], + [ "substr", "class_team_speak3___helper___string.html#af2f7ef460aa783b02432c5b9c24b35f4", null ], + [ "split", "class_team_speak3___helper___string.html#a597f8498c9a870605f55de5401e8fe89", null ], + [ "append", "class_team_speak3___helper___string.html#a3ec8659b47a91c14a35cdfb681d18c61", null ], + [ "prepend", "class_team_speak3___helper___string.html#a73b077cc95e1365974644eebc1e48cf0", null ], + [ "section", "class_team_speak3___helper___string.html#a7c683564011d15bc53fb14634adbc72c", null ], + [ "resize", "class_team_speak3___helper___string.html#a8162f80058e9efeb6458e960acc04af9", null ], + [ "trim", "class_team_speak3___helper___string.html#a1d7e859160a5a625a42449e6975b79cc", null ], + [ "escape", "class_team_speak3___helper___string.html#ad1a297278673af0f99df8c8e2af09e9a", null ], + [ "unescape", "class_team_speak3___helper___string.html#a6cf18e37472a24ad987dc40220082540", null ], + [ "filterAlnum", "class_team_speak3___helper___string.html#a9bf5a109e41a1fd7dfb158a5fdd682b1", null ], + [ "filterAlpha", "class_team_speak3___helper___string.html#a02f3181ad499d5c501aa53e797453e9c", null ], + [ "filterDigits", "class_team_speak3___helper___string.html#a8c80e5bb8f27193646a53d404bf94887", null ], + [ "isInt", "class_team_speak3___helper___string.html#abd90cc6d33ba2a43f86b988f7596c5cd", null ], + [ "toInt", "class_team_speak3___helper___string.html#af3c8429a224fa716177fe6b90a629a0f", null ], + [ "toCrc32", "class_team_speak3___helper___string.html#a64e335d45cf24774118f5efbefd27f0c", null ], + [ "toMd5", "class_team_speak3___helper___string.html#a500a1b5f6bf0793705b55dd34b9b72f9", null ], + [ "toSha1", "class_team_speak3___helper___string.html#af520ab5ce16e0fad306d9d57431570ec", null ], + [ "isUtf8", "class_team_speak3___helper___string.html#a6d8411e44090161070e4c016ef4cb2ef", null ], + [ "toUtf8", "class_team_speak3___helper___string.html#a16f6035d961abe9878a780d6cfbc0bc5", null ], + [ "toBase64", "class_team_speak3___helper___string.html#a85229b107f448ca9387e894c8d718e25", null ], + [ "toHex", "class_team_speak3___helper___string.html#a5730d6f1b9666890431635bf73da0320", null ], + [ "transliterate", "class_team_speak3___helper___string.html#ad26d639f401f7d2766dbbd7e7d6e7c47", null ], + [ "uriSafe", "class_team_speak3___helper___string.html#a4a27f0518592b80e80b561157c638ad7", null ], + [ "spaceToPercent", "class_team_speak3___helper___string.html#a14c8b3fce8c0074f1d180a7b764838e8", null ], + [ "toString", "class_team_speak3___helper___string.html#a1e174bac87ff8ac91d305c708dfc5a87", null ], + [ "__call", "class_team_speak3___helper___string.html#a000fbe55814c81bb9df49f9e493fa2f0", null ], + [ "__toString", "class_team_speak3___helper___string.html#a99fcbce6b1675e69ec80c51b1f58cc1b", null ], + [ "count", "class_team_speak3___helper___string.html#a832580003f635cae85236bf7602fd24f", null ], + [ "rewind", "class_team_speak3___helper___string.html#ad1b30c6035e3eaf0f3cc8a7b484fc05e", null ], + [ "valid", "class_team_speak3___helper___string.html#adb5081e7fc4aa675d04735a2f4710548", null ], + [ "key", "class_team_speak3___helper___string.html#ae3d33b1f4304a9e15f23797f792b2c8a", null ], + [ "current", "class_team_speak3___helper___string.html#aeefa9ad9fcadd61a3ecf1d30cbed9efe", null ], + [ "next", "class_team_speak3___helper___string.html#a41ed82694722a57dab947a95be55da8a", null ], + [ "offsetExists", "class_team_speak3___helper___string.html#afb284716b9af4a0f062161a5d97a78f9", null ], + [ "offsetGet", "class_team_speak3___helper___string.html#aca8a008c7bc517c801cb20584f413d64", null ], + [ "offsetSet", "class_team_speak3___helper___string.html#ac27cbee392b09ccbbc421a1487740418", null ], + [ "offsetUnset", "class_team_speak3___helper___string.html#afd4c1631d11a6b4b8471b22a682c3b29", null ], + [ "$string", "class_team_speak3___helper___string.html#a480a2c527bda902f6f42dbc90b393bc9", null ], + [ "$position", "class_team_speak3___helper___string.html#a4b151b1096800c2e319ae82007808683", null ] +]; \ No newline at end of file diff --git a/lib/docs/html/class_team_speak3___helper___string.png b/lib/docs/html/class_team_speak3___helper___string.png new file mode 100644 index 0000000000000000000000000000000000000000..f42d13bd5942179e16013cd8c4bb76e4ee70382c GIT binary patch literal 1152 zcmeAS@N?(olHy`uVBq!ia0y~yVB!a|12~w0Y9}nodDE<-nkcWL$@yEs^X8mS53j3A=GUhd*2``9-;*u8U+w9q&y$zfZj=7} z|6XmQvE7vW|6Z+UoK!O9|JC-wr;DG)KRsMA_n#zh+zlqRjkiyKTd%VB)K0k z_`8Vz@|j8Zg)aQqaHj5PrJ=lF^t^|nyFMkJ-BYRSX?3Phej9(y*TiJ)lnL7{IsCVF z%=vd=k5jwd8$XXrnwx4XCVc4JQhdI9{nx~`MRys#)o`@_z5TBsJMiq8ODCu8{`%DV zT=&Y&X6rAU^SV^I&a={X-t|+aVm>qdRo9-<^K7?#*Q{du=v2BV*JCevm6yyVGe5P? zT()luC{)*dQT#slZL>;h@!Lv8&&V6>o~Mr4c?1c4bDT5@6!g77MJlkMpDiyBj3o9| zkER8A@t4dsI^fE~Q2THS+zFbB*Q301{_#y^%^Ei3N%k6R&7UuS>`&F!Uv=pCw7|C!FZeI({}8x-?C;w7`-F4k z8SI=MAKuda*z}jcZ?}$HpA#o9tqO|ZzM{M;NuJ?f)9-%*WlMvU@`7bc|DSFDoRput zcmLVTZ)~9`I5N)Yx_=H`DYCh-&gT_e+NdvPm{BCS2`T5k=-j=PUe5XGaUza#$p8&M?$U>|An>Ev~-(qj*FI>yNUEkKED?NKYOL+Dh z<^#uny!*G|CC~| + + + + + +TeamSpeak 3 PHP Framework: Member List + + + + + + + + + + + + + +
+
+ + + + + + + +
+
TeamSpeak 3 PHP Framework +  1.1.23 +
+
Copyright © Planet TeamSpeak. All rights reserved.
+
+
+ + + + + +
+
+ +
+
+
+ +
+ + + + +
+ +
+ +
+
+
TeamSpeak3_Helper_Uri Member List
+
+
+ +

This is the complete list of members for TeamSpeak3_Helper_Uri, including all inherited members.

+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
$fragment (defined in TeamSpeak3_Helper_Uri)TeamSpeak3_Helper_Uriprotected
$host (defined in TeamSpeak3_Helper_Uri)TeamSpeak3_Helper_Uriprotected
$pass (defined in TeamSpeak3_Helper_Uri)TeamSpeak3_Helper_Uriprotected
$path (defined in TeamSpeak3_Helper_Uri)TeamSpeak3_Helper_Uriprotected
$port (defined in TeamSpeak3_Helper_Uri)TeamSpeak3_Helper_Uriprotected
$query (defined in TeamSpeak3_Helper_Uri)TeamSpeak3_Helper_Uriprotected
$regex (defined in TeamSpeak3_Helper_Uri)TeamSpeak3_Helper_Uriprotected
$scheme (defined in TeamSpeak3_Helper_Uri)TeamSpeak3_Helper_Uriprotected
$user (defined in TeamSpeak3_Helper_Uri)TeamSpeak3_Helper_Uriprotected
__construct($uri)TeamSpeak3_Helper_Uri
check($uri)TeamSpeak3_Helper_Uristatic
checkFragment($fragment=null)TeamSpeak3_Helper_Uri
checkHost($host=null)TeamSpeak3_Helper_Uri
checkPass($password=null)TeamSpeak3_Helper_Uri
checkPath($path=null)TeamSpeak3_Helper_Uri
checkPort($port=null)TeamSpeak3_Helper_Uri
checkQuery($query=null)TeamSpeak3_Helper_Uri
checkUser($username=null)TeamSpeak3_Helper_Uri
getBaseUri()TeamSpeak3_Helper_Uristatic
getFQDNParts($hostname)TeamSpeak3_Helper_Uristatic
getFragment($default=null)TeamSpeak3_Helper_Uri
getHost($default=null)TeamSpeak3_Helper_Uri
getHostParam($key, $default=null)TeamSpeak3_Helper_Uristatic
getHostUri()TeamSpeak3_Helper_Uristatic
getPass($default=null)TeamSpeak3_Helper_Uri
getPath($default=null)TeamSpeak3_Helper_Uri
getPort($default=null)TeamSpeak3_Helper_Uri
getQuery($default=array())TeamSpeak3_Helper_Uri
getQueryVar($key, $default=null)TeamSpeak3_Helper_Uri
getScheme($default=null)TeamSpeak3_Helper_Uri
getSessParam($key, $default=null)TeamSpeak3_Helper_Uristatic
getUser($default=null)TeamSpeak3_Helper_Uri
getUserParam($key, $default=null)TeamSpeak3_Helper_Uristatic
hasFragment()TeamSpeak3_Helper_Uri
hasHost()TeamSpeak3_Helper_Uri
hasPass()TeamSpeak3_Helper_Uri
hasPath()TeamSpeak3_Helper_Uri
hasPort()TeamSpeak3_Helper_Uri
hasQuery()TeamSpeak3_Helper_Uri
hasQueryVar($key)TeamSpeak3_Helper_Uri
hasScheme()TeamSpeak3_Helper_Uri
hasUser()TeamSpeak3_Helper_Uri
isValid()TeamSpeak3_Helper_Uri
parseUri($uriString= '')TeamSpeak3_Helper_Uriprotected
stripslashesRecursive($var)TeamSpeak3_Helper_Uriprotectedstatic
+
+ + + + diff --git a/lib/docs/html/class_team_speak3___helper___uri.html b/lib/docs/html/class_team_speak3___helper___uri.html new file mode 100644 index 0000000..fd9f899 --- /dev/null +++ b/lib/docs/html/class_team_speak3___helper___uri.html @@ -0,0 +1,1729 @@ + + + + + + +TeamSpeak 3 PHP Framework: TeamSpeak3_Helper_Uri Class Reference + + + + + + + + + + + + + +
+
+ + + + + + + +
+
TeamSpeak 3 PHP Framework +  1.1.23 +
+
Copyright © Planet TeamSpeak. All rights reserved.
+
+
+ + + + + +
+
+ +
+
+
+ +
+ + + + +
+ +
+ + +
+ +

Helper class for URI handling. + More...

+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +

+Public Member Functions

 __construct ($uri)
 The TeamSpeak3_Helper_Uri constructor. More...
 
 isValid ()
 Validate the current URI from the instance variables. More...
 
 hasScheme ()
 Returns TRUE if the URI has a scheme. More...
 
 getScheme ($default=null)
 Returns the scheme. More...
 
 checkUser ($username=null)
 Returns TRUE if the username is valid. More...
 
 hasUser ()
 Returns TRUE if the URI has a username. More...
 
 getUser ($default=null)
 Returns the username. More...
 
 checkPass ($password=null)
 Returns TRUE if the password is valid. More...
 
 hasPass ()
 Returns TRUE if the URI has a password. More...
 
 getPass ($default=null)
 Returns the password. More...
 
 checkHost ($host=null)
 Returns TRUE if the host is valid. More...
 
 hasHost ()
 Returns TRUE if the URI has a host. More...
 
 getHost ($default=null)
 Returns the host. More...
 
 checkPort ($port=null)
 Returns TRUE if the port is valid. More...
 
 hasPort ()
 Returns TRUE if the URI has a port. More...
 
 getPort ($default=null)
 Returns the port. More...
 
 checkPath ($path=null)
 Returns TRUE if the path is valid. More...
 
 hasPath ()
 Returns TRUE if the URI has a path. More...
 
 getPath ($default=null)
 Returns the path. More...
 
 checkQuery ($query=null)
 Returns TRUE if the query string is valid. More...
 
 hasQuery ()
 Returns TRUE if the URI has a query string. More...
 
 getQuery ($default=array())
 Returns an array containing the query string elements. More...
 
 hasQueryVar ($key)
 Returns TRUE if the URI has a query variable. More...
 
 getQueryVar ($key, $default=null)
 Returns a single variable from the query string. More...
 
 checkFragment ($fragment=null)
 Returns TRUE if the fragment string is valid. More...
 
 hasFragment ()
 Returns TRUE if the URI has a fragment string. More...
 
 getFragment ($default=null)
 Returns the fragment. More...
 
+ + + + + + + + + + + + + + + + + + + + + + +

+Static Public Member Functions

static check ($uri)
 Returns TRUE if a given URI is valid. More...
 
static getUserParam ($key, $default=null)
 Returns a specified instance parameter from the $_REQUEST array. More...
 
static getHostParam ($key, $default=null)
 Returns a specified environment parameter from the $_SERVER array. More...
 
static getSessParam ($key, $default=null)
 Returns a specified session parameter from the $_SESSION array. More...
 
static getFQDNParts ($hostname)
 Returns an array containing the three main parts of a FQDN (Fully Qualified Domain Name), including the top-level domain, the second-level domains or hostname and the third-level domain. More...
 
static getHostUri ()
 Returns the applications host address. More...
 
static getBaseUri ()
 Returns the applications base address. More...
 
+ + + + +

+Protected Member Functions

 parseUri ($uriString= '')
 Parses the scheme-specific portion of the URI and place its parts into instance variables. More...
 
+ + + + +

+Static Protected Member Functions

static stripslashesRecursive ($var)
 Strips slashes from each element of an array using stripslashes(). More...
 
+ + + + + + + + + + + + + + + + + + + +

+Protected Attributes

$scheme = null
 
$user = null
 
$pass = null
 
$host = null
 
$port = null
 
$path = null
 
$query = null
 
$fragment = null
 
$regex = array()
 
+

Detailed Description

+

Helper class for URI handling.

+ +

Definition at line 32 of file Uri.php.

+

Constructor & Destructor Documentation

+ +
+
+ + + + + + + + +
TeamSpeak3_Helper_Uri::__construct ( $uri)
+
+ +

The TeamSpeak3_Helper_Uri constructor.

+
Parameters
+ + +
string$uri
+
+
+
Exceptions
+ + +
TeamSpeak3_Helper_Exception
+
+
+
Returns
TeamSpeak3_Helper_Uri
+ +

Definition at line 104 of file Uri.php.

+ +

References isValid(), and parseUri().

+
105  {
+
106  $uri = explode(":", strval($uri), 2);
+
107 
+
108  $this->scheme = strtolower($uri[0]);
+
109  $uriString = isset($uri[1]) ? $uri[1] : "";
+
110 
+
111  if(!ctype_alnum($this->scheme))
+
112  {
+
113  throw new TeamSpeak3_Helper_Exception("invalid URI scheme '" . $this->scheme . "' supplied");
+
114  }
+
115 
+
116  /* grammar rules for validation */
+
117  $this->regex["alphanum"] = "[^\W_]";
+
118  $this->regex["escaped"] = "(?:%[\da-fA-F]{2})";
+
119  $this->regex["mark"] = "[-_.!~*'()\[\]]";
+
120  $this->regex["reserved"] = "[;\/?:@&=+$,]";
+
121  $this->regex["unreserved"] = "(?:" . $this->regex["alphanum"] . "|" . $this->regex["mark"] . ")";
+
122  $this->regex["segment"] = "(?:(?:" . $this->regex["unreserved"] . "|" . $this->regex["escaped"] . "|[:@&=+$,;])*)";
+
123  $this->regex["path"] = "(?:\/" . $this->regex["segment"] . "?)+";
+
124  $this->regex["uric"] = "(?:" . $this->regex["reserved"] . "|" . $this->regex["unreserved"] . "|" . $this->regex["escaped"] . ")";
+
125 
+
126  if(strlen($uriString) > 0)
+
127  {
+
128  $this->parseUri($uriString);
+
129  }
+
130 
+
131  if(!$this->isValid())
+
132  {
+
133  throw new TeamSpeak3_Helper_Exception("invalid URI supplied");
+
134  }
+
135  }
+
+
+
+

Member Function Documentation

+ +
+
+ + + + + +
+ + + + + + + + +
TeamSpeak3_Helper_Uri::parseUri ( $uriString = '')
+
+protected
+
+ +

Parses the scheme-specific portion of the URI and place its parts into instance variables.

+
Exceptions
+ + +
TeamSpeak3_Helper_Exception
+
+
+
Returns
void
+ +

Definition at line 143 of file Uri.php.

+ +

Referenced by __construct().

+
144  {
+
145  $status = @preg_match("~^((//)([^/?#]*))([^?#]*)(\?([^#]*))?(#(.*))?$~", $uriString, $matches);
+
146 
+
147  if($status === FALSE)
+
148  {
+
149  throw new TeamSpeak3_Helper_Exception("URI scheme-specific decomposition failed");
+
150  }
+
151 
+
152  if(!$status) return;
+
153 
+
154  $this->path = (isset($matches[4])) ? $matches[4] : '';
+
155  $this->query = (isset($matches[6])) ? $matches[6] : '';
+
156  $this->fragment = (isset($matches[8])) ? $matches[8] : '';
+
157 
+
158  $status = @preg_match("~^(([^:@]*)(:([^@]*))?@)?([^:]+)(:(.*))?$~", (isset($matches[3])) ? $matches[3] : "", $matches);
+
159 
+
160  if($status === FALSE)
+
161  {
+
162  throw new TeamSpeak3_Helper_Exception("URI scheme-specific authority decomposition failed");
+
163  }
+
164 
+
165  if(!$status) return;
+
166 
+
167  $this->user = isset($matches[2]) ? $matches[2] : "";
+
168  $this->pass = isset($matches[4]) ? $matches[4] : "";
+
169  $this->host = isset($matches[5]) ? $matches[5] : "";
+
170  $this->port = isset($matches[7]) ? $matches[7] : "";
+
171  }
+
+
+
+ +
+
+ + + + + + + +
TeamSpeak3_Helper_Uri::isValid ()
+
+ +

Validate the current URI from the instance variables.

+
Returns
boolean
+ +

Definition at line 178 of file Uri.php.

+ +

References checkFragment(), checkHost(), checkPass(), checkPath(), checkPort(), checkQuery(), and checkUser().

+ +

Referenced by __construct().

+
179  {
+
180  return ($this->checkUser() && $this->checkPass() && $this->checkHost() && $this->checkPort() && $this->checkPath() && $this->checkQuery() && $this->checkFragment());
+
181  }
+
+
+
+ +
+
+ + + + + +
+ + + + + + + + +
static TeamSpeak3_Helper_Uri::check ( $uri)
+
+static
+
+ +

Returns TRUE if a given URI is valid.

+
Parameters
+ + +
string$uri
+
+
+
Returns
boolean
+ +

Definition at line 189 of file Uri.php.

+
190  {
+
191  try
+
192  {
+
193  $uri = new self(strval($uri));
+
194  }
+
195  catch(Exception $e)
+
196  {
+
197  return FALSE;
+
198  }
+
199 
+
200  return $uri->valid();
+
201  }
+
+
+
+ +
+
+ + + + + + + +
TeamSpeak3_Helper_Uri::hasScheme ()
+
+ +

Returns TRUE if the URI has a scheme.

+
Returns
boolean
+ +

Definition at line 208 of file Uri.php.

+ +

Referenced by getScheme().

+
209  {
+
210  return strlen($this->scheme) ? TRUE : FALSE;
+
211  }
+
+
+
+ +
+
+ + + + + + + + +
TeamSpeak3_Helper_Uri::getScheme ( $default = null)
+
+ +

Returns the scheme.

+
Parameters
+ + +
mixeddefault
+
+
+
Returns
TeamSpeak3_Helper_String
+ +

Definition at line 219 of file Uri.php.

+ +

References hasScheme().

+
220  {
+
221  return ($this->hasScheme()) ? new TeamSpeak3_Helper_String($this->scheme) : $default;
+
222  }
+
+
+
+ +
+
+ + + + + + + + +
TeamSpeak3_Helper_Uri::checkUser ( $username = null)
+
+ +

Returns TRUE if the username is valid.

+
Parameters
+ + +
string$username
+
+
+
Exceptions
+ + +
TeamSpeak3_Helper_Exception
+
+
+
Returns
boolean
+ +

Definition at line 231 of file Uri.php.

+ +

Referenced by isValid().

+
232  {
+
233  if($username === null)
+
234  {
+
235  $username = $this->user;
+
236  }
+
237 
+
238  if(strlen($username) == 0)
+
239  {
+
240  return TRUE;
+
241  }
+
242 
+
243  $pattern = "/^(" . $this->regex["alphanum"] . "|" . $this->regex["mark"] . "|" . $this->regex["escaped"] . "|[;:&=+$,])+$/";
+
244  $status = @preg_match($pattern, $username);
+
245 
+
246  if($status === FALSE)
+
247  {
+
248  throw new TeamSpeak3_Helper_Exception("URI username validation failed");
+
249  }
+
250 
+
251  return ($status == 1);
+
252  }
+
+
+
+ +
+
+ + + + + + + +
TeamSpeak3_Helper_Uri::hasUser ()
+
+ +

Returns TRUE if the URI has a username.

+
Returns
boolean
+ +

Definition at line 259 of file Uri.php.

+ +

Referenced by getUser().

+
260  {
+
261  return strlen($this->user) ? TRUE : FALSE;
+
262  }
+
+
+
+ +
+
+ + + + + + + + +
TeamSpeak3_Helper_Uri::getUser ( $default = null)
+
+ +

Returns the username.

+
Parameters
+ + +
mixeddefault
+
+
+
Returns
TeamSpeak3_Helper_String
+ +

Definition at line 270 of file Uri.php.

+ +

References hasUser().

+
271  {
+
272  return ($this->hasUser()) ? new TeamSpeak3_Helper_String($this->user) : $default;
+
273  }
+
+
+
+ +
+
+ + + + + + + + +
TeamSpeak3_Helper_Uri::checkPass ( $password = null)
+
+ +

Returns TRUE if the password is valid.

+
Parameters
+ + +
string$password
+
+
+
Exceptions
+ + +
TeamSpeak3_Helper_Exception
+
+
+
Returns
boolean
+ +

Definition at line 282 of file Uri.php.

+ +

Referenced by isValid().

+
283  {
+
284  if($password === null) {
+
285  $password = $this->pass;
+
286  }
+
287 
+
288  if(strlen($password) == 0)
+
289  {
+
290  return TRUE;
+
291  }
+
292 
+
293  $pattern = "/^(" . $this->regex["alphanum"] . "|" . $this->regex["mark"] . "|" . $this->regex["escaped"] . "|[;:&=+$,])+$/";
+
294  $status = @preg_match($pattern, $password);
+
295 
+
296  if($status === FALSE)
+
297  {
+
298  throw new TeamSpeak3_Helper_Exception("URI password validation failed");
+
299  }
+
300 
+
301  return ($status == 1);
+
302  }
+
+
+
+ +
+
+ + + + + + + +
TeamSpeak3_Helper_Uri::hasPass ()
+
+ +

Returns TRUE if the URI has a password.

+
Returns
boolean
+ +

Definition at line 309 of file Uri.php.

+ +

Referenced by getPass().

+
310  {
+
311  return strlen($this->pass) ? TRUE : FALSE;
+
312  }
+
+
+
+ +
+
+ + + + + + + + +
TeamSpeak3_Helper_Uri::getPass ( $default = null)
+
+ +

Returns the password.

+
Parameters
+ + +
mixeddefault
+
+
+
Returns
TeamSpeak3_Helper_String
+ +

Definition at line 320 of file Uri.php.

+ +

References hasPass().

+
321  {
+
322  return ($this->hasPass()) ? new TeamSpeak3_Helper_String($this->pass) : $default;
+
323  }
+
+
+
+ +
+
+ + + + + + + + +
TeamSpeak3_Helper_Uri::checkHost ( $host = null)
+
+ +

Returns TRUE if the host is valid.

+
Parameters
+ + +
string$host
+
+
+
Returns
boolean
+ +

Definition at line 331 of file Uri.php.

+ +

Referenced by isValid().

+
332  {
+
333  if($host === null)
+
334  {
+
335  $host = $this->host;
+
336  }
+
337 
+
338  return TRUE;
+
339  }
+
+
+
+ +
+
+ + + + + + + +
TeamSpeak3_Helper_Uri::hasHost ()
+
+ +

Returns TRUE if the URI has a host.

+
Returns
boolean
+ +

Definition at line 346 of file Uri.php.

+ +

Referenced by getHost().

+
347  {
+
348  return strlen($this->host) ? TRUE : FALSE;
+
349  }
+
+
+
+ +
+
+ + + + + + + + +
TeamSpeak3_Helper_Uri::getHost ( $default = null)
+
+ +

Returns the host.

+
Parameters
+ + +
mixeddefault
+
+
+
Returns
TeamSpeak3_Helper_String
+ +

Definition at line 357 of file Uri.php.

+ +

References hasHost().

+
358  {
+
359  return ($this->hasHost()) ? new TeamSpeak3_Helper_String($this->host) : $default;
+
360  }
+
+
+
+ +
+
+ + + + + + + + +
TeamSpeak3_Helper_Uri::checkPort ( $port = null)
+
+ +

Returns TRUE if the port is valid.

+
Parameters
+ + +
integer$port
+
+
+
Returns
boolean
+ +

Definition at line 368 of file Uri.php.

+ +

Referenced by isValid().

+
369  {
+
370  if($port === null)
+
371  {
+
372  $port = $this->port;
+
373  }
+
374 
+
375  return TRUE;
+
376  }
+
+
+
+ +
+
+ + + + + + + +
TeamSpeak3_Helper_Uri::hasPort ()
+
+ +

Returns TRUE if the URI has a port.

+
Returns
boolean
+ +

Definition at line 383 of file Uri.php.

+ +

Referenced by getPort().

+
384  {
+
385  return strlen($this->port) ? TRUE : FALSE;
+
386  }
+
+
+
+ +
+
+ + + + + + + + +
TeamSpeak3_Helper_Uri::getPort ( $default = null)
+
+ +

Returns the port.

+
Parameters
+ + +
mixeddefault
+
+
+
Returns
integer
+ +

Definition at line 394 of file Uri.php.

+ +

References hasPort().

+
395  {
+
396  return ($this->hasPort()) ? intval($this->port) : $default;
+
397  }
+
+
+
+ +
+
+ + + + + + + + +
TeamSpeak3_Helper_Uri::checkPath ( $path = null)
+
+ +

Returns TRUE if the path is valid.

+
Parameters
+ + +
string$path
+
+
+
Exceptions
+ + +
TeamSpeak3_Helper_Exception
+
+
+
Returns
boolean
+ +

Definition at line 406 of file Uri.php.

+ +

Referenced by isValid().

+
407  {
+
408  if($path === null)
+
409  {
+
410  $path = $this->path;
+
411  }
+
412 
+
413  if(strlen($path) == 0)
+
414  {
+
415  return TRUE;
+
416  }
+
417 
+
418  $pattern = "/^" . $this->regex["path"] . "$/";
+
419  $status = @preg_match($pattern, $path);
+
420 
+
421  if($status === FALSE)
+
422  {
+
423  throw new TeamSpeak3_Helper_Exception("URI path validation failed");
+
424  }
+
425 
+
426  return ($status == 1);
+
427  }
+
+
+
+ +
+
+ + + + + + + +
TeamSpeak3_Helper_Uri::hasPath ()
+
+ +

Returns TRUE if the URI has a path.

+
Returns
boolean
+ +

Definition at line 434 of file Uri.php.

+ +

Referenced by getPath().

+
435  {
+
436  return strlen($this->path) ? TRUE : FALSE;
+
437  }
+
+
+
+ +
+
+ + + + + + + + +
TeamSpeak3_Helper_Uri::getPath ( $default = null)
+
+ +

Returns the path.

+
Parameters
+ + +
mixeddefault
+
+
+
Returns
TeamSpeak3_Helper_String
+ +

Definition at line 445 of file Uri.php.

+ +

References hasPath().

+
446  {
+
447  return ($this->hasPath()) ? new TeamSpeak3_Helper_String($this->path) : $default;
+
448  }
+
+
+
+ +
+
+ + + + + + + + +
TeamSpeak3_Helper_Uri::checkQuery ( $query = null)
+
+ +

Returns TRUE if the query string is valid.

+
Parameters
+ + +
string$query
+
+
+
Exceptions
+ + +
TeamSpeak3_Helper_Exception
+
+
+
Returns
boolean
+ +

Definition at line 457 of file Uri.php.

+ +

Referenced by isValid().

+
458  {
+
459  if($query === null)
+
460  {
+
461  $query = $this->query;
+
462  }
+
463 
+
464  if(strlen($query) == 0)
+
465  {
+
466  return TRUE;
+
467  }
+
468 
+
469  $pattern = "/^" . $this->regex["uric"] . "*$/";
+
470  $status = @preg_match($pattern, $query);
+
471 
+
472  if($status === FALSE)
+
473  {
+
474  throw new TeamSpeak3_Helper_Exception("URI query string validation failed");
+
475  }
+
476 
+
477  return ($status == 1);
+
478  }
+
+
+
+ +
+
+ + + + + + + +
TeamSpeak3_Helper_Uri::hasQuery ()
+
+ +

Returns TRUE if the URI has a query string.

+
Returns
boolean
+ +

Definition at line 485 of file Uri.php.

+ +

Referenced by getQuery(), getQueryVar(), and hasQueryVar().

+
486  {
+
487  return strlen($this->query) ? TRUE : FALSE;
+
488  }
+
+
+
+ +
+
+ + + + + + + + +
TeamSpeak3_Helper_Uri::getQuery ( $default = array())
+
+ +

Returns an array containing the query string elements.

+
Parameters
+ + +
mixed$default
+
+
+
Returns
array
+ +

Definition at line 496 of file Uri.php.

+ +

References hasQuery().

+
497  {
+
498  if(!$this->hasQuery())
+
499  {
+
500  return $default;
+
501  }
+
502 
+
503  parse_str($this->query, $queryArray);
+
504 
+
505  return $queryArray;
+
506  }
+
+
+
+ +
+
+ + + + + + + + +
TeamSpeak3_Helper_Uri::hasQueryVar ( $key)
+
+ +

Returns TRUE if the URI has a query variable.

+
Returns
boolean
+ +

Definition at line 513 of file Uri.php.

+ +

References hasQuery().

+
514  {
+
515  if(!$this->hasQuery()) return FALSE;
+
516 
+
517  parse_str($this->query, $queryArray);
+
518 
+
519  return array_key_exists($key, $queryArray) ? TRUE : FALSE;
+
520  }
+
+
+
+ +
+
+ + + + + + + + + + + + + + + + + + +
TeamSpeak3_Helper_Uri::getQueryVar ( $key,
 $default = null 
)
+
+ +

Returns a single variable from the query string.

+
Parameters
+ + + +
string$key
mixed$default
+
+
+
Returns
mixed
+ +

Definition at line 529 of file Uri.php.

+ +

References hasQuery().

+
530  {
+
531  if(!$this->hasQuery()) return $default;
+
532 
+
533  parse_str($this->query, $queryArray);
+
534 
+
535  if(array_key_exists($key, $queryArray))
+
536  {
+
537  $val = $queryArray[$key];
+
538 
+
539  if(ctype_digit($val))
+
540  {
+
541  return intval($val);
+
542  }
+
543  elseif(is_string($val))
+
544  {
+
545  return new TeamSpeak3_Helper_String($val);
+
546  }
+
547  else
+
548  {
+
549  return $val;
+
550  }
+
551  }
+
552 
+
553  return $default;
+
554  }
+
+
+
+ +
+
+ + + + + + + + +
TeamSpeak3_Helper_Uri::checkFragment ( $fragment = null)
+
+ +

Returns TRUE if the fragment string is valid.

+
Parameters
+ + +
string$fragment
+
+
+
Exceptions
+ + +
TeamSpeak3_Helper_Exception
+
+
+
Returns
boolean
+ +

Definition at line 563 of file Uri.php.

+ +

Referenced by isValid().

+
564  {
+
565  if($fragment === null)
+
566  {
+
567  $fragment = $this->fragment;
+
568  }
+
569 
+
570  if(strlen($fragment) == 0)
+
571  {
+
572  return TRUE;
+
573  }
+
574 
+
575  $pattern = "/^" . $this->regex["uric"] . "*$/";
+
576  $status = @preg_match($pattern, $fragment);
+
577 
+
578  if($status === FALSE)
+
579  {
+
580  throw new TeamSpeak3_Helper_Exception("URI fragment validation failed");
+
581  }
+
582 
+
583  return ($status == 1);
+
584  }
+
+
+
+ +
+
+ + + + + + + +
TeamSpeak3_Helper_Uri::hasFragment ()
+
+ +

Returns TRUE if the URI has a fragment string.

+
Returns
boolean
+ +

Definition at line 591 of file Uri.php.

+ +

Referenced by getFragment().

+
592  {
+
593  return strlen($this->fragment) ? TRUE : FALSE;
+
594  }
+
+
+
+ +
+
+ + + + + + + + +
TeamSpeak3_Helper_Uri::getFragment ( $default = null)
+
+ +

Returns the fragment.

+
Parameters
+ + +
mixeddefault
+
+
+
Returns
TeamSpeak3_Helper_String
+ +

Definition at line 602 of file Uri.php.

+ +

References hasFragment().

+
603  {
+
604  return ($this->hasFragment()) ? new TeamSpeak3_Helper_String($this->fragment) : $default;
+
605  }
+
+
+
+ +
+
+ + + + + +
+ + + + + + + + + + + + + + + + + + +
static TeamSpeak3_Helper_Uri::getUserParam ( $key,
 $default = null 
)
+
+static
+
+ +

Returns a specified instance parameter from the $_REQUEST array.

+
Parameters
+ + + +
string$key
mixed$default
+
+
+
Returns
mixed
+ +

Definition at line 614 of file Uri.php.

+
615  {
+
616  return (array_key_exists($key, $_REQUEST) && !empty($_REQUEST[$key])) ? self::stripslashesRecursive($_REQUEST[$key]) : $default;
+
617  }
+
+
+
+ +
+
+ + + + + +
+ + + + + + + + + + + + + + + + + + +
static TeamSpeak3_Helper_Uri::getHostParam ( $key,
 $default = null 
)
+
+static
+
+ +

Returns a specified environment parameter from the $_SERVER array.

+
Parameters
+ + + +
string$key
mixed$default
+
+
+
Returns
mixed
+ +

Definition at line 626 of file Uri.php.

+
627  {
+
628  return (array_key_exists($key, $_SERVER) && !empty($_SERVER[$key])) ? $_SERVER[$key] : $default;
+
629  }
+
+
+
+ +
+
+ + + + + +
+ + + + + + + + + + + + + + + + + + +
static TeamSpeak3_Helper_Uri::getSessParam ( $key,
 $default = null 
)
+
+static
+
+ +

Returns a specified session parameter from the $_SESSION array.

+
Parameters
+ + + +
string$key
mixed$default
+
+
+
Returns
mixed
+ +

Definition at line 638 of file Uri.php.

+
639  {
+
640  return (array_key_exists($key, $_SESSION) && !empty($_SESSION[$key])) ? $_SESSION[$key] : $default;
+
641  }
+
+
+
+ +
+
+ + + + + +
+ + + + + + + + +
static TeamSpeak3_Helper_Uri::getFQDNParts ( $hostname)
+
+static
+
+ +

Returns an array containing the three main parts of a FQDN (Fully Qualified Domain Name), including the top-level domain, the second-level domains or hostname and the third-level domain.

+
Parameters
+ + +
string$hostname
+
+
+
Returns
array
+ +

Definition at line 650 of file Uri.php.

+ +

Referenced by TeamSpeak3_Node_Host\serverGetByTSDNS().

+
651  {
+
652  if(!preg_match("/^([a-z0-9][a-z0-9-]{0,62}\.)*([a-z0-9][a-z0-9-]{0,62}\.)+([a-z]{2,6})$/i", $hostname, $matches))
+
653  {
+
654  return array();
+
655  }
+
656 
+
657  $parts["tld"] = $matches[3];
+
658  $parts["2nd"] = $matches[2];
+
659  $parts["3rd"] = $matches[1];
+
660 
+
661  return $parts;
+
662  }
+
+
+
+ +
+
+ + + + + +
+ + + + + + + +
static TeamSpeak3_Helper_Uri::getHostUri ()
+
+static
+
+ +

Returns the applications host address.

+
Returns
TeamSpeak3_Helper_String
+ +

Definition at line 669 of file Uri.php.

+
670  {
+
671  $sheme = (self::getHostParam("HTTPS") == "on") ? "https" : "http";
+
672 
+
673  $serverName = new TeamSpeak3_Helper_String(self::getHostParam("HTTP_HOST"));
+
674  $serverPort = self::getHostParam("SERVER_PORT");
+
675  $serverPort = ($serverPort != 80 && $serverPort != 443) ? ":" . $serverPort : "";
+
676 
+
677  if($serverName->endsWith($serverPort))
+
678  {
+
679  $serverName = $serverName->replace($serverPort, "");
+
680  }
+
681 
+
682  return new TeamSpeak3_Helper_String($sheme . "://" . $serverName . $serverPort);
+
683  }
+
+
+
+ +
+
+ + + + + +
+ + + + + + + +
static TeamSpeak3_Helper_Uri::getBaseUri ()
+
+static
+
+ +

Returns the applications base address.

+
Returns
string
+ +

Definition at line 690 of file Uri.php.

+
691  {
+
692  $scriptPath = new TeamSpeak3_Helper_String(dirname(self::getHostParam("SCRIPT_NAME")));
+
693 
+
694  return self::getHostUri()->append(($scriptPath == DIRECTORY_SEPARATOR ? "" : $scriptPath) . "/");
+
695  }
+
+
+
+ +
+
+ + + + + +
+ + + + + + + + +
static TeamSpeak3_Helper_Uri::stripslashesRecursive ( $var)
+
+staticprotected
+
+ +

Strips slashes from each element of an array using stripslashes().

+
Parameters
+ + +
mixed$var
+
+
+
Returns
mixed
+ +

Definition at line 703 of file Uri.php.

+
704  {
+
705  if(!is_array($var))
+
706  {
+
707  return stripslashes(strval($var));
+
708  }
+
709 
+
710  foreach($var as $key => $val)
+
711  {
+
712  $var[$key] = (is_array($val)) ? stripslashesRecursive($val) : stripslashes(strval($val));
+
713  }
+
714 
+
715  return $var;
+
716  }
+
+
+
+
The documentation for this class was generated from the following file: +
+
+ + + + diff --git a/lib/docs/html/class_team_speak3___helper___uri.js b/lib/docs/html/class_team_speak3___helper___uri.js new file mode 100644 index 0000000..4b8022b --- /dev/null +++ b/lib/docs/html/class_team_speak3___helper___uri.js @@ -0,0 +1,40 @@ +var class_team_speak3___helper___uri = +[ + [ "__construct", "class_team_speak3___helper___uri.html#a90842c65bae8ffcf088b1dd12def7ff1", null ], + [ "parseUri", "class_team_speak3___helper___uri.html#a7f6c35d4a2161270b8edcff45b48fda1", null ], + [ "isValid", "class_team_speak3___helper___uri.html#a32584b89b4cfeaaa09948b5b1fc67916", null ], + [ "hasScheme", "class_team_speak3___helper___uri.html#a489f79eec547a0c9ca9fc6befebcc0f3", null ], + [ "getScheme", "class_team_speak3___helper___uri.html#af47ad30cc5c9a600ee2a6c7de6e1aa83", null ], + [ "checkUser", "class_team_speak3___helper___uri.html#a2b8d5365651a38c00ba1393559ba9efd", null ], + [ "hasUser", "class_team_speak3___helper___uri.html#a24fab900cd8e2b43e253f85d6925f7b7", null ], + [ "getUser", "class_team_speak3___helper___uri.html#ab685d3e39922aa170d2d6b06a6304084", null ], + [ "checkPass", "class_team_speak3___helper___uri.html#ac9dff5b48e963efca445427a2ec602ca", null ], + [ "hasPass", "class_team_speak3___helper___uri.html#aa496602a698ed5690d48ec4326f8c793", null ], + [ "getPass", "class_team_speak3___helper___uri.html#a6d9477823c4f20b2daa98a9153326463", null ], + [ "checkHost", "class_team_speak3___helper___uri.html#acaa2c62eecb695f7a7ea1e6484b4b169", null ], + [ "hasHost", "class_team_speak3___helper___uri.html#adb9f6e1df57af8b47e94d6d581475eb1", null ], + [ "getHost", "class_team_speak3___helper___uri.html#aca4bbb23cafa5833af4565d23f0b57c6", null ], + [ "checkPort", "class_team_speak3___helper___uri.html#a9878d6f37ef25b9e0666cf8cd9043515", null ], + [ "hasPort", "class_team_speak3___helper___uri.html#aada4ff6119919a87251a4569b54f3b4a", null ], + [ "getPort", "class_team_speak3___helper___uri.html#aa7b59f4a3528141842fcdda1af6920cc", null ], + [ "checkPath", "class_team_speak3___helper___uri.html#abcfb777bab47406a328776f47f6a96a0", null ], + [ "hasPath", "class_team_speak3___helper___uri.html#a0f72daa8e78e5cc5ca345af3602cc6a1", null ], + [ "getPath", "class_team_speak3___helper___uri.html#a848e4a9bd0caa493f064b98cf4e24906", null ], + [ "checkQuery", "class_team_speak3___helper___uri.html#a36a08a673b6b108db27c880ad8d42031", null ], + [ "hasQuery", "class_team_speak3___helper___uri.html#ad53c6db20a03e53f9568e8ca1ab91744", null ], + [ "getQuery", "class_team_speak3___helper___uri.html#a0a56de9c6bd0fbf00098dc6b7db1840c", null ], + [ "hasQueryVar", "class_team_speak3___helper___uri.html#a17cd4b5e0108e858bb51167e0046f0c4", null ], + [ "getQueryVar", "class_team_speak3___helper___uri.html#a7e23bd80c39a9cf8b286f08cf177331e", null ], + [ "checkFragment", "class_team_speak3___helper___uri.html#a94c765c6262844caad188417a77adda8", null ], + [ "hasFragment", "class_team_speak3___helper___uri.html#a91539b2925a03129637bd3f3efec42a6", null ], + [ "getFragment", "class_team_speak3___helper___uri.html#ad32a11cb34f078847033407ba3b95eb7", null ], + [ "$scheme", "class_team_speak3___helper___uri.html#af9c01d661b2be87a9c5dfc8575d8e698", null ], + [ "$user", "class_team_speak3___helper___uri.html#aa60355cb6dee8fac8ad14a171c6b36ab", null ], + [ "$pass", "class_team_speak3___helper___uri.html#a459e667293a0266cd96fb6467b6501fe", null ], + [ "$host", "class_team_speak3___helper___uri.html#a49e5219ee9fc09dde979006b2a5a10fd", null ], + [ "$port", "class_team_speak3___helper___uri.html#afe80af6ca2a866c8adc018665a1ebbf2", null ], + [ "$path", "class_team_speak3___helper___uri.html#a14310050ea38dcaad50edba0b67d9d1b", null ], + [ "$query", "class_team_speak3___helper___uri.html#af05706ac9c905ef59109cfa310b7af17", null ], + [ "$fragment", "class_team_speak3___helper___uri.html#a66616fce653cffd2499e83438cc37e81", null ], + [ "$regex", "class_team_speak3___helper___uri.html#a9119d1fb0ecb143d0b8ef596c2bf3c76", null ] +]; \ No newline at end of file diff --git a/lib/docs/html/class_team_speak3___node___abstract-members.html b/lib/docs/html/class_team_speak3___node___abstract-members.html new file mode 100644 index 0000000..b7372bb --- /dev/null +++ b/lib/docs/html/class_team_speak3___node___abstract-members.html @@ -0,0 +1,175 @@ + + + + + + +TeamSpeak 3 PHP Framework: Member List + + + + + + + + + + + + + +
+
+ + + + + + + +
+
TeamSpeak 3 PHP Framework +  1.1.23 +
+
Copyright © Planet TeamSpeak. All rights reserved.
+
+
+ + + + + +
+
+ +
+
+
+ +
+ + + + +
+ +
+ +
+
+
TeamSpeak3_Node_Abstract Member List
+
+
+ +

This is the complete list of members for TeamSpeak3_Node_Abstract, including all inherited members.

+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
$nodeIdTeamSpeak3_Node_Abstractprotected
$nodeInfoTeamSpeak3_Node_Abstractprotected
$nodeListTeamSpeak3_Node_Abstractprotected
$parentTeamSpeak3_Node_Abstractprotected
$serverTeamSpeak3_Node_Abstractprotected
$storageTeamSpeak3_Node_Abstractprotected
__call($name, array $args)TeamSpeak3_Node_Abstract
__get($offset)TeamSpeak3_Node_Abstract
__set($offset, $value)TeamSpeak3_Node_Abstract
__sleep()TeamSpeak3_Node_Abstract
__toString()TeamSpeak3_Node_Abstract
count()TeamSpeak3_Node_Abstract
current()TeamSpeak3_Node_Abstract
delStorage($key)TeamSpeak3_Node_Abstractprotected
execute($cmd, array $params=array())TeamSpeak3_Node_Abstract
fetchNodeInfo()TeamSpeak3_Node_Abstractprotected
fetchNodeList()TeamSpeak3_Node_Abstractprotected
filterList(array $nodes=array(), array $rules=array())TeamSpeak3_Node_Abstractprotected
getChildren()TeamSpeak3_Node_Abstract
getClass($prefix="ts3_")TeamSpeak3_Node_Abstract
getIcon()TeamSpeak3_Node_Abstract
getId()TeamSpeak3_Node_Abstract
getInfo($extend=TRUE, $convert=FALSE)TeamSpeak3_Node_Abstract
getParent()TeamSpeak3_Node_Abstract
getProperty($property, $default=null)TeamSpeak3_Node_Abstract
getStorage($key, $default=null)TeamSpeak3_Node_Abstractprotected
getSymbol()TeamSpeak3_Node_Abstract
getUniqueId()TeamSpeak3_Node_Abstract
getViewer(TeamSpeak3_Viewer_Interface $viewer)TeamSpeak3_Node_Abstract
hasChildren()TeamSpeak3_Node_Abstract
hasNext()TeamSpeak3_Node_Abstract
iconGetName($key)TeamSpeak3_Node_Abstract
iconIsLocal($key)TeamSpeak3_Node_Abstract
key()TeamSpeak3_Node_Abstract
next()TeamSpeak3_Node_Abstract
offsetExists($offset)TeamSpeak3_Node_Abstract
offsetGet($offset)TeamSpeak3_Node_Abstract
offsetSet($offset, $value)TeamSpeak3_Node_Abstract
offsetUnset($offset)TeamSpeak3_Node_Abstract
prepare($cmd, array $params=array())TeamSpeak3_Node_Abstract
request($cmd, $throw=TRUE)TeamSpeak3_Node_Abstract
resetNodeInfo()TeamSpeak3_Node_Abstractprotected
resetNodeList()TeamSpeak3_Node_Abstractprotected
rewind()TeamSpeak3_Node_Abstract
setStorage($key, $val)TeamSpeak3_Node_Abstractprotected
toArray()TeamSpeak3_Node_Abstract
toString()TeamSpeak3_Node_Abstract
valid()TeamSpeak3_Node_Abstract
verifyNodeList()TeamSpeak3_Node_Abstractprotected
+
+ + + + diff --git a/lib/docs/html/class_team_speak3___node___abstract.html b/lib/docs/html/class_team_speak3___node___abstract.html new file mode 100644 index 0000000..37c5298 --- /dev/null +++ b/lib/docs/html/class_team_speak3___node___abstract.html @@ -0,0 +1,1979 @@ + + + + + + +TeamSpeak 3 PHP Framework: TeamSpeak3_Node_Abstract Class Reference + + + + + + + + + + + + + +
+
+ + + + + + + +
+
TeamSpeak 3 PHP Framework +  1.1.23 +
+
Copyright © Planet TeamSpeak. All rights reserved.
+
+
+ + + + + +
+
+ +
+
+
+ +
+ + + + +
+ +
+ +
+ +
+
TeamSpeak3_Node_Abstract Class Reference
+
+
+ +

Abstract class describing a TeamSpeak 3 node and all it's parameters. + More...

+
+ + Inheritance diagram for TeamSpeak3_Node_Abstract:
+
+
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +

+Public Member Functions

 request ($cmd, $throw=TRUE)
 Sends a prepared command to the server and returns the result. More...
 
 prepare ($cmd, array $params=array())
 Uses given parameters and returns a prepared ServerQuery command. More...
 
 execute ($cmd, array $params=array())
 Prepares and executes a ServerQuery command and returns the result. More...
 
 getParent ()
 Returns the parent object of the current node. More...
 
 getId ()
 Returns the primary ID of the current node. More...
 
 iconIsLocal ($key)
 Returns TRUE if the node icon has a local source. More...
 
 iconGetName ($key)
 Returns the internal path of the node icon. More...
 
 getClass ($prefix="ts3_")
 Returns a possible classname for the node which can be used as a HTML property. More...
 
 getUniqueId ()
 Returns a unique identifier for the node which can be used as a HTML property. More...
 
 getIcon ()
 Returns the name of a possible icon to display the node object. More...
 
 getSymbol ()
 Returns a symbol representing the node. More...
 
 getViewer (TeamSpeak3_Viewer_Interface $viewer)
 Returns the HTML code to display a TeamSpeak 3 viewer. More...
 
 getInfo ($extend=TRUE, $convert=FALSE)
 Returns all information available on this node. More...
 
 getProperty ($property, $default=null)
 Returns the specified property or a pre-defined default value from the node info array. More...
 
 __toString ()
 Returns a string representation of this node. More...
 
 toString ()
 Returns a string representation of this node. More...
 
 toArray ()
 Returns an assoc array filled with current node info properties. More...
 
 __call ($name, array $args)
 Called whenever we're using an unknown method. More...
 
 __sleep ()
 Commit pending data. More...
 
 count ()
 
 current ()
 
 getChildren ()
 
 hasChildren ()
 
 hasNext ()
 
 key ()
 
 valid ()
 
 next ()
 
 rewind ()
 
 offsetExists ($offset)
 
 offsetGet ($offset)
 
 offsetSet ($offset, $value)
 
 offsetUnset ($offset)
 
 __get ($offset)
 
 __set ($offset, $value)
 
+ + + + + + + + + + + + + + + + + + + + + + + +

+Protected Member Functions

 filterList (array $nodes=array(), array $rules=array())
 Filters given node list array using specified filter rules. More...
 
 setStorage ($key, $val)
 Writes data to the internal storage array. More...
 
 getStorage ($key, $default=null)
 Returns data from the internal storage array. More...
 
 delStorage ($key)
 Deletes data from the internal storage array. More...
 
 fetchNodeList ()
 
 fetchNodeInfo ()
 
 resetNodeInfo ()
 
 verifyNodeList ()
 
 resetNodeList ()
 
+ + + + + + + + + + + + + +

+Protected Attributes

 $parent = null
 
 $server = null
 
 $nodeId = 0x00
 
 $nodeList = null
 
 $nodeInfo = array()
 
 $storage = array()
 
+

Detailed Description

+

Abstract class describing a TeamSpeak 3 node and all it's parameters.

+ +

Definition at line 32 of file Abstract.php.

+

Member Function Documentation

+ +
+
+ + + + + + + + + + + + + + + + + + +
TeamSpeak3_Node_Abstract::request ( $cmd,
 $throw = TRUE 
)
+
+ +

Sends a prepared command to the server and returns the result.

+
Parameters
+ + + +
string$cmd
boolean$throw
+
+
+
Returns
TeamSpeak3_Adapter_ServerQuery_Reply
+ +

Definition at line 71 of file Abstract.php.

+ +

References getParent().

+ +

Referenced by TeamSpeak3_Node_Host\bindingList(), execute(), TeamSpeak3_Node_Host\fetchNodeInfo(), TeamSpeak3_Node_Host\fetchPermissionList(), TeamSpeak3_Node_Host\logout(), TeamSpeak3_Node_Host\serverList(), TeamSpeak3_Node_Host\version(), and TeamSpeak3_Node_Host\whoami().

+
72  {
+
73  return $this->getParent()->request($cmd, $throw);
+
74  }
+
+
+
+ +
+
+ + + + + + + + + + + + + + + + + + +
TeamSpeak3_Node_Abstract::prepare ( $cmd,
array $params = array() 
)
+
+ +

Uses given parameters and returns a prepared ServerQuery command.

+
Parameters
+ + + +
string$cmd
array$params
+
+
+
Returns
TeamSpeak3_Helper_String
+ +

Definition at line 83 of file Abstract.php.

+ +

References getParent().

+ +

Referenced by execute().

+
84  {
+
85  return $this->getParent()->prepare($cmd, $params);
+
86  }
+
+
+
+ +
+
+ + + + + + + + + + + + + + + + + + +
TeamSpeak3_Node_Abstract::execute ( $cmd,
array $params = array() 
)
+
+ +

Prepares and executes a ServerQuery command and returns the result.

+
Parameters
+ + + +
string$cmd
array$params
+
+
+
Returns
TeamSpeak3_Adapter_ServerQuery_Reply
+ +

Definition at line 95 of file Abstract.php.

+ +

References prepare(), and request().

+ +

Referenced by TeamSpeak3_Node_Server\banCreate(), TeamSpeak3_Node_Server\banDelete(), TeamSpeak3_Node_Server\channelClientPermAssign(), TeamSpeak3_Node_Server\channelClientPermList(), TeamSpeak3_Node_Server\channelClientPermRemove(), TeamSpeak3_Node_Server\channelCreate(), TeamSpeak3_Node_Server\channelDelete(), TeamSpeak3_Node_Server\channelDirCreate(), TeamSpeak3_Node_Server\channelFileDelete(), TeamSpeak3_Node_Server\channelFileInfo(), TeamSpeak3_Node_Server\channelFileList(), TeamSpeak3_Node_Server\channelFileRename(), TeamSpeak3_Node_Server\channelGroupClientList(), TeamSpeak3_Node_Server\channelGroupCopy(), TeamSpeak3_Node_Server\channelGroupCreate(), TeamSpeak3_Node_Server\channelGroupDelete(), TeamSpeak3_Node_Server\channelGroupPermAssign(), TeamSpeak3_Node_Server\channelGroupPermList(), TeamSpeak3_Node_Server\channelGroupPermRemove(), TeamSpeak3_Node_Server\channelGroupRename(), TeamSpeak3_Node_Server\channelMove(), TeamSpeak3_Node_Server\channelPermAssign(), TeamSpeak3_Node_Server\channelPermList(), TeamSpeak3_Node_Server\channelPermRemove(), TeamSpeak3_Node_Server\clientBan(), TeamSpeak3_Node_Server\clientCountDb(), TeamSpeak3_Node_Server\clientDeleteDb(), TeamSpeak3_Node_Server\clientFind(), TeamSpeak3_Node_Server\clientFindDb(), TeamSpeak3_Node_Server\clientGetIdsByUid(), TeamSpeak3_Node_Server\clientGetNameByDbid(), TeamSpeak3_Node_Server\clientGetNameByUid(), TeamSpeak3_Node_Server\clientGetServerGroupsByDbid(), TeamSpeak3_Node_Server\clientInfoDb(), TeamSpeak3_Node_Server\clientKick(), TeamSpeak3_Node_Server\clientListDb(), TeamSpeak3_Node_Server\clientModifyDb(), TeamSpeak3_Node_Server\clientMove(), TeamSpeak3_Node_Server\clientPermAssign(), TeamSpeak3_Node_Server\clientPermList(), TeamSpeak3_Node_Server\clientPermRemove(), TeamSpeak3_Node_Server\clientPoke(), TeamSpeak3_Node_Server\clientSetChannelGroup(), TeamSpeak3_Node_Server\complaintCreate(), TeamSpeak3_Node_Server\complaintDelete(), TeamSpeak3_Node_Server\complaintList(), TeamSpeak3_Node_Server\complaintListClear(), TeamSpeak3_Node_Server\customInfo(), TeamSpeak3_Node_Server\customSearch(), TeamSpeak3_Node_Client\fetchNodeInfo(), TeamSpeak3_Node_Channel\fetchNodeInfo(), TeamSpeak3_Node_Client\getClones(), TeamSpeak3_Node_Host\logAdd(), TeamSpeak3_Node_Server\logAdd(), TeamSpeak3_Node_Host\login(), TeamSpeak3_Node_Host\logView(), TeamSpeak3_Node_Server\logView(), TeamSpeak3_Node_Client\message(), TeamSpeak3_Node_Channelgroup\message(), TeamSpeak3_Node_Servergroup\message(), TeamSpeak3_Node_Channel\message(), TeamSpeak3_Node_Host\message(), TeamSpeak3_Node_Server\message(), TeamSpeak3_Node_Server\messageCreate(), TeamSpeak3_Node_Server\messageDelete(), TeamSpeak3_Node_Server\messageRead(), TeamSpeak3_Node_Client\modify(), TeamSpeak3_Node_Channel\modify(), TeamSpeak3_Node_Host\modify(), TeamSpeak3_Node_Server\modify(), TeamSpeak3_Node_Server\notifyRegister(), TeamSpeak3_Node_Host\permissionFind(), TeamSpeak3_Node_Client\permOverview(), TeamSpeak3_Node_Server\privilegeKeyCreate(), TeamSpeak3_Node_Server\privilegeKeyDelete(), TeamSpeak3_Node_Server\privilegeKeyUse(), TeamSpeak3_Node_Host\selfPermCheck(), TeamSpeak3_Node_Server\selfPermOverview(), TeamSpeak3_Node_Server\selfUpdate(), TeamSpeak3_Node_Server\selfUpdateLogin(), TeamSpeak3_Node_Client\sendPluginCmd(), TeamSpeak3_Node_Channel\sendPluginCmd(), TeamSpeak3_Node_Server\sendPluginCmd(), TeamSpeak3_Node_Host\serverCreate(), TeamSpeak3_Node_Host\serverDelete(), TeamSpeak3_Node_Server\serverGroupClientAdd(), TeamSpeak3_Node_Server\serverGroupClientDel(), TeamSpeak3_Node_Server\serverGroupClientList(), TeamSpeak3_Node_Server\serverGroupCopy(), TeamSpeak3_Node_Server\serverGroupCreate(), TeamSpeak3_Node_Server\serverGroupDelete(), TeamSpeak3_Node_Server\serverGroupPermAssign(), TeamSpeak3_Node_Host\serverGroupPermAutoAssign(), TeamSpeak3_Node_Host\serverGroupPermAutoRemove(), TeamSpeak3_Node_Server\serverGroupPermList(), TeamSpeak3_Node_Server\serverGroupPermRemove(), TeamSpeak3_Node_Server\serverGroupRename(), TeamSpeak3_Node_Host\serverIdGetByPort(), TeamSpeak3_Node_Host\serverSelect(), TeamSpeak3_Node_Host\serverSelectByPort(), TeamSpeak3_Node_Host\serverStart(), TeamSpeak3_Node_Host\serverStop(), TeamSpeak3_Node_Host\serverStopProcess(), TeamSpeak3_Node_Server\tempPasswordCreate(), TeamSpeak3_Node_Server\tempPasswordDelete(), TeamSpeak3_Node_Server\transferInitDownload(), TeamSpeak3_Node_Server\transferInitUpload(), and TeamSpeak3_Node_Server\transferStop().

+
96  {
+
97  return $this->request($this->prepare($cmd, $params));
+
98  }
+
+
+
+ +
+
+ + + + + + + +
TeamSpeak3_Node_Abstract::getParent ()
+
+ +

Returns the parent object of the current node.

+
Returns
TeamSpeak3_Adapter_ServerQuery
+
+TeamSpeak3_Node_Abstract
+ +

Definition at line 106 of file Abstract.php.

+ +

References $parent.

+ +

Referenced by __call(), TeamSpeak3_Node_Client\addServerGroup(), TeamSpeak3_Node_Client\avatarDownload(), TeamSpeak3_Node_Client\ban(), TeamSpeak3_Node_Server\channelCreate(), TeamSpeak3_Node_Server\channelDelete(), TeamSpeak3_Node_Servergroup\clientAdd(), TeamSpeak3_Node_Servergroup\clientDel(), TeamSpeak3_Node_Channel\clientList(), TeamSpeak3_Node_Channelgroup\clientList(), TeamSpeak3_Node_Servergroup\clientList(), TeamSpeak3_Node_Server\clientList(), TeamSpeak3_Node_Server\clientMove(), TeamSpeak3_Node_Channel\clientPermAssign(), TeamSpeak3_Node_Channel\clientPermList(), TeamSpeak3_Node_Channel\clientPermRemove(), TeamSpeak3_Node_Servergroup\copy(), TeamSpeak3_Node_Channelgroup\copy(), TeamSpeak3_Node_Client\customInfo(), TeamSpeak3_Node_Servergroup\delete(), TeamSpeak3_Node_Channelgroup\delete(), TeamSpeak3_Node_Channel\delete(), TeamSpeak3_Node_Server\delete(), TeamSpeak3_Node_Client\deleteDb(), TeamSpeak3_Node_Channel\dirCreate(), TeamSpeak3_Node_Channelgroup\fetchNodeList(), TeamSpeak3_Node_Servergroup\fetchNodeList(), TeamSpeak3_Node_Channel\fetchNodeList(), TeamSpeak3_Node_Channel\fileDelete(), TeamSpeak3_Node_Channel\fileInfo(), TeamSpeak3_Node_Channel\fileList(), TeamSpeak3_Node_Channel\fileRename(), TeamSpeak3_Node_Host\getAdapter(), TeamSpeak3_Node_Host\getAdapterHost(), TeamSpeak3_Node_Host\getAdapterPort(), TeamSpeak3_Node_Channel\getLevel(), TeamSpeak3_Node_Channel\getPathway(), TeamSpeak3_Node_Channelgroup\getUniqueId(), TeamSpeak3_Node_Servergroup\getUniqueId(), TeamSpeak3_Node_Client\getUniqueId(), TeamSpeak3_Node_Channel\getUniqueId(), TeamSpeak3_Node_Server\getUniqueId(), TeamSpeak3_Node_Channelgroup\iconDownload(), TeamSpeak3_Node_Servergroup\iconDownload(), TeamSpeak3_Node_Client\iconDownload(), TeamSpeak3_Node_Channel\iconDownload(), TeamSpeak3_Node_Client\infoDb(), TeamSpeak3_Node_Channel\isSpacer(), TeamSpeak3_Node_Client\kick(), TeamSpeak3_Node_Client\memberOf(), TeamSpeak3_Node_Channel\message(), TeamSpeak3_Node_Client\modifyDb(), TeamSpeak3_Node_Client\move(), TeamSpeak3_Node_Channel\move(), TeamSpeak3_Node_Channelgroup\permAssign(), TeamSpeak3_Node_Servergroup\permAssign(), TeamSpeak3_Node_Client\permAssign(), TeamSpeak3_Node_Channel\permAssign(), TeamSpeak3_Node_Servergroup\permList(), TeamSpeak3_Node_Channelgroup\permList(), TeamSpeak3_Node_Client\permList(), TeamSpeak3_Node_Channel\permList(), TeamSpeak3_Node_Channelgroup\permRemove(), TeamSpeak3_Node_Servergroup\permRemove(), TeamSpeak3_Node_Client\permRemove(), TeamSpeak3_Node_Channel\permRemove(), TeamSpeak3_Node_Client\poke(), prepare(), TeamSpeak3_Node_Channelgroup\privilegeKeyCreate(), TeamSpeak3_Node_Servergroup\privilegeKeyCreate(), TeamSpeak3_Node_Client\remServerGroup(), TeamSpeak3_Node_Channelgroup\rename(), TeamSpeak3_Node_Servergroup\rename(), request(), TeamSpeak3_Node_Server\request(), TeamSpeak3_Node_Channel\sendPluginCmd(), TeamSpeak3_Node_Client\setChannelGroup(), TeamSpeak3_Node_Server\snapshotDeploy(), TeamSpeak3_Node_Channel\spacerGetAlign(), TeamSpeak3_Node_Channel\spacerGetType(), TeamSpeak3_Node_Server\start(), TeamSpeak3_Node_Server\stop(), TeamSpeak3_Node_Channel\subChannelList(), TeamSpeak3_Node_Server\transferInitDownload(), and TeamSpeak3_Node_Server\transferInitUpload().

+
107  {
+
108  return $this->parent;
+
109  }
+
+
+
+ +
+
+ + + + + + + +
TeamSpeak3_Node_Abstract::getId ()
+
+ +

Returns the primary ID of the current node.

+
Returns
integer
+ +

Definition at line 116 of file Abstract.php.

+ +

References $nodeId.

+ +

Referenced by TeamSpeak3_Node_Client\ban(), TeamSpeak3_Node_Server\channelDelete(), TeamSpeak3_Node_Server\channelFileList(), TeamSpeak3_Node_Servergroup\clientAdd(), TeamSpeak3_Node_Servergroup\clientDel(), TeamSpeak3_Node_Channel\clientList(), TeamSpeak3_Node_Channelgroup\clientList(), TeamSpeak3_Node_Servergroup\clientList(), TeamSpeak3_Node_Channel\clientPermAssign(), TeamSpeak3_Node_Channel\clientPermList(), TeamSpeak3_Node_Channel\clientPermRemove(), TeamSpeak3_Node_Servergroup\copy(), TeamSpeak3_Node_Channelgroup\copy(), TeamSpeak3_Node_Channelgroup\delete(), TeamSpeak3_Node_Servergroup\delete(), TeamSpeak3_Node_Channel\delete(), TeamSpeak3_Node_Server\delete(), TeamSpeak3_Node_Channel\dirCreate(), TeamSpeak3_Node_Client\fetchNodeInfo(), TeamSpeak3_Node_Channel\fetchNodeInfo(), TeamSpeak3_Node_Channelgroup\fetchNodeList(), TeamSpeak3_Node_Servergroup\fetchNodeList(), TeamSpeak3_Node_Channel\fetchNodeList(), TeamSpeak3_Node_Channel\fileDelete(), TeamSpeak3_Node_Channel\fileInfo(), TeamSpeak3_Node_Channel\fileList(), TeamSpeak3_Node_Channel\fileRename(), TeamSpeak3_Node_Channel\getLevel(), TeamSpeak3_Node_Channel\getPathway(), TeamSpeak3_Node_Channelgroup\getUniqueId(), TeamSpeak3_Node_Servergroup\getUniqueId(), TeamSpeak3_Node_Client\getUniqueId(), TeamSpeak3_Node_Channel\getUniqueId(), TeamSpeak3_Node_Server\getUniqueId(), TeamSpeak3_Node_Client\kick(), TeamSpeak3_Node_Client\message(), TeamSpeak3_Node_Channel\message(), TeamSpeak3_Node_Server\message(), TeamSpeak3_Node_Client\modify(), TeamSpeak3_Node_Channel\modify(), TeamSpeak3_Node_Client\move(), TeamSpeak3_Node_Channel\move(), TeamSpeak3_Node_Channelgroup\permAssign(), TeamSpeak3_Node_Servergroup\permAssign(), TeamSpeak3_Node_Channel\permAssign(), TeamSpeak3_Node_Channelgroup\permList(), TeamSpeak3_Node_Servergroup\permList(), TeamSpeak3_Node_Channel\permList(), TeamSpeak3_Node_Channelgroup\permRemove(), TeamSpeak3_Node_Servergroup\permRemove(), TeamSpeak3_Node_Channel\permRemove(), TeamSpeak3_Node_Client\poke(), TeamSpeak3_Node_Channelgroup\privilegeKeyCreate(), TeamSpeak3_Node_Servergroup\privilegeKeyCreate(), TeamSpeak3_Node_Channelgroup\rename(), TeamSpeak3_Node_Servergroup\rename(), TeamSpeak3_Node_Server\request(), TeamSpeak3_Node_Client\sendPluginCmd(), TeamSpeak3_Node_Channel\sendPluginCmd(), TeamSpeak3_Node_Server\sortGroupList(), TeamSpeak3_Node_Channel\spacerGetAlign(), TeamSpeak3_Node_Channel\spacerGetType(), TeamSpeak3_Node_Server\start(), TeamSpeak3_Node_Server\stop(), and TeamSpeak3_Node_Channel\subChannelList().

+
117  {
+
118  return $this->nodeId;
+
119  }
+
+
+
+ +
+
+ + + + + + + + +
TeamSpeak3_Node_Abstract::iconIsLocal ( $key)
+
+ +

Returns TRUE if the node icon has a local source.

+
Parameters
+ + +
string$key
+
+
+
Returns
boolean
+ +

Definition at line 127 of file Abstract.php.

+ +

Referenced by TeamSpeak3_Node_Channelgroup\iconDownload(), TeamSpeak3_Node_Servergroup\iconDownload(), TeamSpeak3_Node_Client\iconDownload(), TeamSpeak3_Node_Channel\iconDownload(), and TeamSpeak3_Node_Server\iconDownload().

+
128  {
+
129  return ($this[$key] > 0 && $this[$key] < 1000) ? TRUE : FALSE;
+
130  }
+
+
+
+ +
+
+ + + + + + + + +
TeamSpeak3_Node_Abstract::iconGetName ( $key)
+
+ +

Returns the internal path of the node icon.

+
Parameters
+ + +
string$key
+
+
+
Returns
TeamSpeak3_Helper_String
+ +

Definition at line 138 of file Abstract.php.

+ +

Referenced by getInfo(), TeamSpeak3_Node_Channelgroup\iconDownload(), TeamSpeak3_Node_Servergroup\iconDownload(), TeamSpeak3_Node_Client\iconDownload(), TeamSpeak3_Node_Channel\iconDownload(), and TeamSpeak3_Node_Server\iconDownload().

+
139  {
+
140  $iconid = ($this[$key] < 0) ? (pow(2, 32))-($this[$key]*-1) : $this[$key];
+
141 
+
142  return new TeamSpeak3_Helper_String("/icon_" . $iconid);
+
143  }
+
+
+
+ +
+
+ + + + + + + + +
TeamSpeak3_Node_Abstract::getClass ( $prefix = "ts3_")
+
+ +

Returns a possible classname for the node which can be used as a HTML property.

+
Parameters
+ + +
string$prefix
+
+
+
Returns
string
+ +

Definition at line 151 of file Abstract.php.

+ +

References TeamSpeak3_Helper_String\factory().

+
152  {
+
153  if($this instanceof TeamSpeak3_Node_Channel && $this->isSpacer())
+
154  {
+
155  return $prefix . "spacer";
+
156  }
+
157  elseif($this instanceof TeamSpeak3_Node_Client && $this["client_type"])
+
158  {
+
159  return $prefix . "query";
+
160  }
+
161 
+
162  return $prefix . TeamSpeak3_Helper_String::factory(get_class($this))->section("_", 2)->toLower();
+
163  }
+
+
+
+ +
+
+ + + + + +
+ + + + + + + +
TeamSpeak3_Node_Abstract::getUniqueId ()
+
+abstract
+
+ +

Returns a unique identifier for the node which can be used as a HTML property.

+
Returns
string
+ +
+
+ +
+
+ + + + + +
+ + + + + + + +
TeamSpeak3_Node_Abstract::getIcon ()
+
+abstract
+
+ +

Returns the name of a possible icon to display the node object.

+
Returns
string
+ +
+
+ +
+
+ + + + + +
+ + + + + + + +
TeamSpeak3_Node_Abstract::getSymbol ()
+
+abstract
+
+ +

Returns a symbol representing the node.

+
Returns
string
+ +
+
+ +
+
+ + + + + + + + +
TeamSpeak3_Node_Abstract::getViewer (TeamSpeak3_Viewer_Interface $viewer)
+
+ +

Returns the HTML code to display a TeamSpeak 3 viewer.

+
Parameters
+ + +
TeamSpeak3_Viewer_Interface$viewer
+
+
+
Returns
string
+ +

Definition at line 192 of file Abstract.php.

+ +

References TeamSpeak3_Viewer_Interface\fetchObject().

+
193  {
+
194  $html = $viewer->fetchObject($this);
+
195 
+
196  $iterator = new RecursiveIteratorIterator($this, RecursiveIteratorIterator::SELF_FIRST);
+
197 
+
198  foreach($iterator as $node)
+
199  {
+
200  $siblings = array();
+
201 
+
202  for($level = 0; $level < $iterator->getDepth(); $level++)
+
203  {
+
204  $siblings[] = ($iterator->getSubIterator($level)->hasNext()) ? 1 : 0;
+
205  }
+
206 
+
207  $siblings[] = (!$iterator->getSubIterator($level)->hasNext()) ? 1 : 0;
+
208 
+
209  $html .= $viewer->fetchObject($node, $siblings);
+
210  }
+
211 
+
212  return $html;
+
213  }
+
+
+
+ +
+
+ + + + + +
+ + + + + + + + + + + + + + + + + + +
TeamSpeak3_Node_Abstract::filterList (array $nodes = array(),
array $rules = array() 
)
+
+protected
+
+ +

Filters given node list array using specified filter rules.

+
Parameters
+ + + +
array$nodes
array$rules
+
+
+
Returns
array
+ +

Definition at line 222 of file Abstract.php.

+ +

Referenced by TeamSpeak3_Node_Server\channelGroupList(), TeamSpeak3_Node_Server\channelList(), TeamSpeak3_Node_Channel\clientList(), TeamSpeak3_Node_Server\clientList(), TeamSpeak3_Node_Server\serverGroupList(), TeamSpeak3_Node_Host\serverList(), and TeamSpeak3_Node_Channel\subChannelList().

+
223  {
+
224  if(!empty($rules))
+
225  {
+
226  foreach($nodes as $node)
+
227  {
+
228  if(!$node instanceof TeamSpeak3_Node_Abstract) continue;
+
229 
+
230  $props = $node->getInfo(FALSE);
+
231  $props = array_intersect_key($props, $rules);
+
232  $match = TRUE;
+
233 
+
234  foreach($props as $key => $val)
+
235  {
+
236  if($val instanceof TeamSpeak3_Helper_String)
+
237  {
+
238  $match = $val->contains($rules[$key], TRUE);
+
239  }
+
240  else
+
241  {
+
242  $match = $val == $rules[$key];
+
243  }
+
244 
+
245  if($match === FALSE)
+
246  {
+
247  unset($nodes[$node->getId()]);
+
248  }
+
249  }
+
250  }
+
251  }
+
252 
+
253  return $nodes;
+
254  }
+
+
+
+ +
+
+ + + + + + + + + + + + + + + + + + +
TeamSpeak3_Node_Abstract::getInfo ( $extend = TRUE,
 $convert = FALSE 
)
+
+ +

Returns all information available on this node.

+

If $convert is enabled, some property values will be converted to human-readable values.

+
Parameters
+ + + +
boolean$extend
boolean$convert
+
+
+
Returns
array
+ +

Definition at line 264 of file Abstract.php.

+ +

References $nodeInfo, TeamSpeak3_Helper_Convert\bytes(), TeamSpeak3_Helper_String\factory(), fetchNodeInfo(), iconGetName(), TeamSpeak3_Helper_Convert\seconds(), and TeamSpeak3_Helper_Convert\version().

+
265  {
+
266  if($extend)
+
267  {
+
268  $this->fetchNodeInfo();
+
269  }
+
270 
+
271  if($convert)
+
272  {
+
273  $info = $this->nodeInfo;
+
274 
+
275  foreach($info as $key => $val)
+
276  {
+ +
278 
+
279  if($key->contains("_bytes_"))
+
280  {
+
281  $info[$key->toString()] = TeamSpeak3_Helper_Convert::bytes($val);
+
282  }
+
283  elseif($key->contains("_bandwidth_"))
+
284  {
+
285  $info[$key->toString()] = TeamSpeak3_Helper_Convert::bytes($val) . "/s";
+
286  }
+
287  elseif($key->contains("_packets_"))
+
288  {
+
289  $info[$key->toString()] = number_format($val, null, null, ".");
+
290  }
+
291  elseif($key->contains("_packetloss_"))
+
292  {
+
293  $info[$key->toString()] = sprintf("%01.2f", floatval($val->toString())*100) . "%";
+
294  }
+
295  elseif($key->endsWith("_uptime"))
+
296  {
+
297  $info[$key->toString()] = TeamSpeak3_Helper_Convert::seconds($val);
+
298  }
+
299  elseif($key->endsWith("_version"))
+
300  {
+
301  $info[$key->toString()] = TeamSpeak3_Helper_Convert::version($val);
+
302  }
+
303  elseif($key->endsWith("_icon_id"))
+
304  {
+
305  $info[$key->toString()] = $this->iconGetName($key)->filterDigits();
+
306  }
+
307  }
+
308 
+
309  return $info;
+
310  }
+
311 
+
312  return $this->nodeInfo;
+
313  }
+
+
+
+ +
+
+ + + + + + + + + + + + + + + + + + +
TeamSpeak3_Node_Abstract::getProperty ( $property,
 $default = null 
)
+
+ +

Returns the specified property or a pre-defined default value from the node info array.

+
Parameters
+ + + +
string$property
mixed$default
+
+
+
Returns
mixed
+ +

Definition at line 322 of file Abstract.php.

+ +

References fetchNodeInfo(), and offsetExists().

+ +

Referenced by TeamSpeak3_Node_Server\sortClientList(), and TeamSpeak3_Node_Server\sortGroupList().

+
323  {
+
324  if(!$this->offsetExists($property))
+
325  {
+
326  $this->fetchNodeInfo();
+
327  }
+
328 
+
329  if(!$this->offsetExists($property))
+
330  {
+
331  return $default;
+
332  }
+
333 
+
334  return $this->nodeInfo[(string) $property];
+
335  }
+
+
+
+ +
+
+ + + + + + + +
TeamSpeak3_Node_Abstract::__toString ()
+
+ +

Returns a string representation of this node.

+
Returns
string
+ +

Definition at line 342 of file Abstract.php.

+ +

Referenced by toString().

+
343  {
+
344  return get_class($this);
+
345  }
+
+
+
+ +
+
+ + + + + + + +
TeamSpeak3_Node_Abstract::toString ()
+
+ +

Returns a string representation of this node.

+
Returns
string
+ +

Definition at line 352 of file Abstract.php.

+ +

References __toString().

+
353  {
+
354  return $this->__toString();
+
355  }
+
+
+
+ +
+
+ + + + + + + +
TeamSpeak3_Node_Abstract::toArray ()
+
+ +

Returns an assoc array filled with current node info properties.

+
Returns
array
+ +

Definition at line 362 of file Abstract.php.

+ +

References $nodeList.

+ +

Referenced by TeamSpeak3_Node_Server\channelFileInfo().

+
363  {
+
364  return $this->nodeList;
+
365  }
+
+
+
+ +
+
+ + + + + + + + + + + + + + + + + + +
TeamSpeak3_Node_Abstract::__call ( $name,
array $args 
)
+
+ +

Called whenever we're using an unknown method.

+
Parameters
+ + + +
string$name
array$args
+
+
+
Exceptions
+ + +
TeamSpeak3_Node_Exception
+
+
+
Returns
mixed
+ +

Definition at line 375 of file Abstract.php.

+ +

References getParent().

+
376  {
+
377  if($this->getParent() instanceof TeamSpeak3_Node_Abstract)
+
378  {
+
379  return call_user_func_array(array($this->getParent(), $name), $args);
+
380  }
+
381 
+
382  throw new TeamSpeak3_Node_Exception("node method '" . $name . "()' does not exist");
+
383  }
+
+
+
+ +
+
+ + + + + +
+ + + + + + + + + + + + + + + + + + +
TeamSpeak3_Node_Abstract::setStorage ( $key,
 $val 
)
+
+protected
+
+ +

Writes data to the internal storage array.

+
Parameters
+ + + +
string$key
mixed$val
+
+
+
Returns
void
+ +

Definition at line 392 of file Abstract.php.

+ +

Referenced by TeamSpeak3_Node_Host\login(), TeamSpeak3_Node_Host\serverSelect(), TeamSpeak3_Node_Host\serverSelectByPort(), TeamSpeak3_Node_Host\setExcludeQueryClients(), TeamSpeak3_Node_Host\setLoadClientlistFirst(), TeamSpeak3_Node_Host\setPredefinedQueryName(), and TeamSpeak3_Node_Host\setUseOfflineAsVirtual().

+
393  {
+
394  $this->storage[$key] = $val;
+
395  }
+
+
+
+ +
+
+ + + + + +
+ + + + + + + + + + + + + + + + + + +
TeamSpeak3_Node_Abstract::getStorage ( $key,
 $default = null 
)
+
+protected
+
+ +

Returns data from the internal storage array.

+
Parameters
+ + + +
string$key
mixed$default
+
+
+
Returns
mixed
+ +

Definition at line 404 of file Abstract.php.

+ +

Referenced by TeamSpeak3_Node_Host\__wakeup().

+
405  {
+
406  return (array_key_exists($key, $this->storage) && !empty($this->storage[$key])) ? $this->storage[$key] : $default;
+
407  }
+
+
+
+ +
+
+ + + + + +
+ + + + + + + + +
TeamSpeak3_Node_Abstract::delStorage ( $key)
+
+protected
+
+ +

Deletes data from the internal storage array.

+
Parameters
+ + +
string$key
+
+
+
Returns
void
+ +

Definition at line 415 of file Abstract.php.

+ +

Referenced by TeamSpeak3_Node_Host\logout(), and TeamSpeak3_Node_Host\serverDeselect().

+
416  {
+
417  unset($this->storage[$key]);
+
418  }
+
+
+
+ +
+
+ + + + + + + +
TeamSpeak3_Node_Abstract::__sleep ()
+
+ +

Commit pending data.

+
Returns
array
+ +

Definition at line 425 of file Abstract.php.

+
426  {
+
427  return array("parent", "storage", "nodeId");
+
428  }
+
+
+
+ +
+
+ + + + + +
+ + + + + + + +
TeamSpeak3_Node_Abstract::fetchNodeList ()
+
+protected
+
+ +

+ +

Definition at line 433 of file Abstract.php.

+ +

Referenced by verifyNodeList().

+
434  {
+
435  $this->nodeList = array();
+
436  }
+
+
+
+ +
+
+ + + + + +
+ + + + + + + +
TeamSpeak3_Node_Abstract::fetchNodeInfo ()
+
+protected
+
+ +

+ +

Definition at line 441 of file Abstract.php.

+ +

Referenced by getInfo(), getProperty(), and offsetGet().

+
442  {
+
443  return;
+
444  }
+
+
+
+ +
+
+ + + + + +
+ + + + + + + +
TeamSpeak3_Node_Abstract::resetNodeInfo ()
+
+protected
+
+ +

+ +

Definition at line 449 of file Abstract.php.

+ +

Referenced by TeamSpeak3_Node_Client\modify(), TeamSpeak3_Node_Channel\modify(), TeamSpeak3_Node_Host\modify(), and TeamSpeak3_Node_Server\modify().

+
450  {
+
451  $this->nodeInfo = array();
+
452  }
+
+
+
+ +
+
+ + + + + +
+ + + + + + + +
TeamSpeak3_Node_Abstract::verifyNodeList ()
+
+protected
+
+ +

+ +

Definition at line 457 of file Abstract.php.

+ +

References fetchNodeList().

+ +

Referenced by count(), current(), getChildren(), hasChildren(), hasNext(), key(), next(), rewind(), and valid().

+
458  {
+
459  if($this->nodeList === null)
+
460  {
+
461  $this->fetchNodeList();
+
462  }
+
463  }
+
+
+
+ +
+
+ + + + + +
+ + + + + + + +
TeamSpeak3_Node_Abstract::resetNodeList ()
+
+protected
+
+
+ +
+
+ + + + + + + +
TeamSpeak3_Node_Abstract::count ()
+
+ +

+ +

Definition at line 476 of file Abstract.php.

+ +

References verifyNodeList().

+ +

Referenced by TeamSpeak3_Node_Server\channelFileList(), TeamSpeak3_Node_Server\channelGroupCopy(), hasNext(), TeamSpeak3_Node_Server\permRemoveAny(), and TeamSpeak3_Node_Server\serverGroupCopy().

+
477  {
+
478  $this->verifyNodeList();
+
479 
+
480  return count($this->nodeList);
+
481  }
+
+
+
+ + + +
+
+ + + + + + + +
TeamSpeak3_Node_Abstract::getChildren ()
+
+ +

+ +

Definition at line 496 of file Abstract.php.

+ +

References current(), and verifyNodeList().

+
497  {
+
498  $this->verifyNodeList();
+
499 
+
500  return $this->current();
+
501  }
+
+
+
+ +
+
+ + + + + + + +
TeamSpeak3_Node_Abstract::hasChildren ()
+
+ +

+ +

Definition at line 506 of file Abstract.php.

+ +

References current(), and verifyNodeList().

+
507  {
+
508  $this->verifyNodeList();
+
509 
+
510  return $this->current()->count() > 0;
+
511  }
+
+
+
+ +
+
+ + + + + + + +
TeamSpeak3_Node_Abstract::hasNext ()
+
+ +

+ +

Definition at line 516 of file Abstract.php.

+ +

References count(), key(), and verifyNodeList().

+
517  {
+
518  $this->verifyNodeList();
+
519 
+
520  return $this->key()+1 < $this->count();
+
521  }
+
+
+
+ +
+
+ + + + + + + +
TeamSpeak3_Node_Abstract::key ()
+
+ +

+ +

Definition at line 526 of file Abstract.php.

+ +

References verifyNodeList().

+ +

Referenced by hasNext(), and valid().

+
527  {
+
528  $this->verifyNodeList();
+
529 
+
530  return key($this->nodeList);
+
531  }
+
+
+
+ +
+
+ + + + + + + +
TeamSpeak3_Node_Abstract::valid ()
+
+ +

+ +

Definition at line 536 of file Abstract.php.

+ +

References key(), and verifyNodeList().

+
537  {
+
538  $this->verifyNodeList();
+
539 
+
540  return $this->key() !== null;
+
541  }
+
+
+
+ +
+
+ + + + + + + +
TeamSpeak3_Node_Abstract::next ()
+
+ +

+ +

Definition at line 546 of file Abstract.php.

+ +

References verifyNodeList().

+
547  {
+
548  $this->verifyNodeList();
+
549 
+
550  return next($this->nodeList);
+
551  }
+
+
+
+ +
+
+ + + + + + + +
TeamSpeak3_Node_Abstract::rewind ()
+
+ +

+ +

Definition at line 556 of file Abstract.php.

+ +

References verifyNodeList().

+
557  {
+
558  $this->verifyNodeList();
+
559 
+
560  return reset($this->nodeList);
+
561  }
+
+
+
+ +
+
+ + + + + + + + +
TeamSpeak3_Node_Abstract::offsetExists ( $offset)
+
+ +

+ +

Definition at line 566 of file Abstract.php.

+ +

Referenced by getProperty(), and offsetGet().

+
567  {
+
568  return array_key_exists((string) $offset, $this->nodeInfo) ? TRUE : FALSE;
+
569  }
+
+
+
+ +
+
+ + + + + + + + +
TeamSpeak3_Node_Abstract::offsetGet ( $offset)
+
+ +

+ +

Definition at line 574 of file Abstract.php.

+ +

References fetchNodeInfo(), and offsetExists().

+ +

Referenced by __get().

+
575  {
+
576  if(!$this->offsetExists($offset))
+
577  {
+
578  $this->fetchNodeInfo();
+
579  }
+
580 
+
581  if(!$this->offsetExists($offset))
+
582  {
+
583  throw new TeamSpeak3_Adapter_ServerQuery_Exception("invalid parameter", 0x602);
+
584  }
+
585 
+
586  return $this->nodeInfo[(string) $offset];
+
587  }
+
+
+
+ +
+
+ + + + + + + + + + + + + + + + + + +
TeamSpeak3_Node_Abstract::offsetSet ( $offset,
 $value 
)
+
+ +

+ +

Definition at line 592 of file Abstract.php.

+ +

Referenced by __set().

+
593  {
+
594  if(method_exists($this, "modify"))
+
595  {
+
596  return $this->modify(array((string) $offset => $value));
+
597  }
+
598 
+
599  throw new TeamSpeak3_Node_Exception("node '" . get_class($this) . "' is read only");
+
600  }
+
+
+
+ +
+
+ + + + + + + + +
TeamSpeak3_Node_Abstract::offsetUnset ( $offset)
+
+ +

+ +

Definition at line 605 of file Abstract.php.

+
606  {
+
607  unset($this->nodeInfo[(string) $offset]);
+
608  }
+
+
+
+ +
+
+ + + + + + + + +
TeamSpeak3_Node_Abstract::__get ( $offset)
+
+ +

+ +

Definition at line 613 of file Abstract.php.

+ +

References offsetGet().

+
614  {
+
615  return $this->offsetGet($offset);
+
616  }
+
+
+
+ +
+
+ + + + + + + + + + + + + + + + + + +
TeamSpeak3_Node_Abstract::__set ( $offset,
 $value 
)
+
+ +

+ +

Definition at line 621 of file Abstract.php.

+ +

References offsetSet().

+
622  {
+
623  $this->offsetSet($offset, $value);
+
624  }
+
+
+
+

Member Data Documentation

+ +
+
+ + + + + +
+ + + + +
TeamSpeak3_Node_Abstract::$parent = null
+
+protected
+
+ +

+ +

Definition at line 37 of file Abstract.php.

+ +

Referenced by getParent().

+ +
+
+ + + +
+
+ + + + + +
+ + + + +
TeamSpeak3_Node_Abstract::$nodeId = 0x00
+
+protected
+
+ +

+ +

Definition at line 47 of file Abstract.php.

+ +

Referenced by getId().

+ +
+
+ +
+
+ + + + + +
+ + + + +
TeamSpeak3_Node_Abstract::$nodeList = null
+
+protected
+
+ +

+ +

Definition at line 52 of file Abstract.php.

+ +

Referenced by toArray().

+ +
+
+ +
+
+ + + + + +
+ + + + +
TeamSpeak3_Node_Abstract::$nodeInfo = array()
+
+protected
+
+ +

+ +

Definition at line 57 of file Abstract.php.

+ +

Referenced by getInfo().

+ +
+
+ +
+
+ + + + + +
+ + + + +
TeamSpeak3_Node_Abstract::$storage = array()
+
+protected
+
+ +

+ +

Definition at line 62 of file Abstract.php.

+ +
+
+
The documentation for this class was generated from the following file: +
+
+ + + + diff --git a/lib/docs/html/class_team_speak3___node___abstract.js b/lib/docs/html/class_team_speak3___node___abstract.js new file mode 100644 index 0000000..fbe22c4 --- /dev/null +++ b/lib/docs/html/class_team_speak3___node___abstract.js @@ -0,0 +1,52 @@ +var class_team_speak3___node___abstract = +[ + [ "request", "class_team_speak3___node___abstract.html#a35dcdb8a7b62d7990307bfb95ce3937c", null ], + [ "prepare", "class_team_speak3___node___abstract.html#a6589a4fedd410e9cdb55fe20abc410c0", null ], + [ "execute", "class_team_speak3___node___abstract.html#af6811efc5065b8aadfd6792334ea6977", null ], + [ "getParent", "class_team_speak3___node___abstract.html#a44618fb948562e89515330e65d08da9a", null ], + [ "getId", "class_team_speak3___node___abstract.html#a4a0a5545abc2460d1d9b3d6b52d07cbe", null ], + [ "iconIsLocal", "class_team_speak3___node___abstract.html#aa78cba098574598dd9c0331cac1f39a1", null ], + [ "iconGetName", "class_team_speak3___node___abstract.html#a02ce34dce8fbf7881ce2323f7af0dca3", null ], + [ "getClass", "class_team_speak3___node___abstract.html#af6e1416ad2e568f48ff0d85b15b2a673", null ], + [ "getUniqueId", "class_team_speak3___node___abstract.html#a4a68d64cff73a4f67859e28a89b3c511", null ], + [ "getIcon", "class_team_speak3___node___abstract.html#a84162e45950d55298791eb5771fd315d", null ], + [ "getSymbol", "class_team_speak3___node___abstract.html#aaa53c7a8efa4739c50619e5b52a176e5", null ], + [ "getViewer", "class_team_speak3___node___abstract.html#a3d3f27dab5569edf3a737be080e7c8bc", null ], + [ "filterList", "class_team_speak3___node___abstract.html#ad826df3c71029ca48839dbe9aa3559b8", null ], + [ "getInfo", "class_team_speak3___node___abstract.html#af63ae54f10c02ec6b1033425f795fef4", null ], + [ "getProperty", "class_team_speak3___node___abstract.html#a585728537b56194aeab30b0316126b89", null ], + [ "__toString", "class_team_speak3___node___abstract.html#a89d26184ecd8790f8b930e5eceaddc29", null ], + [ "toString", "class_team_speak3___node___abstract.html#ac1b521aa7f9871103da5cbb5d3330125", null ], + [ "toArray", "class_team_speak3___node___abstract.html#acf3c56763859b8adb21379f0cc6394ad", null ], + [ "__call", "class_team_speak3___node___abstract.html#a63fb203f511e99625428f70f0525950c", null ], + [ "setStorage", "class_team_speak3___node___abstract.html#a13303ca9275df184348ed7363d9d7c9a", null ], + [ "getStorage", "class_team_speak3___node___abstract.html#a5a6888304aca8d5f12fecb460b0ef6d2", null ], + [ "delStorage", "class_team_speak3___node___abstract.html#afbed20ee78d7e5a38097078dd91e70fd", null ], + [ "__sleep", "class_team_speak3___node___abstract.html#a19b5c8aaac5ef0af2f1393bffea186c5", null ], + [ "fetchNodeList", "class_team_speak3___node___abstract.html#ab78c8a0a0bcd7458d310a9e05f012409", null ], + [ "fetchNodeInfo", "class_team_speak3___node___abstract.html#a10158df40ca8030d5d0e3c464154b988", null ], + [ "resetNodeInfo", "class_team_speak3___node___abstract.html#a266578bece0506453e1f1bfba1f08966", null ], + [ "verifyNodeList", "class_team_speak3___node___abstract.html#ac66aeb30418e385a5727c191bb8df87d", null ], + [ "resetNodeList", "class_team_speak3___node___abstract.html#a9ead519e8396990ba30d79d6bed9d286", null ], + [ "count", "class_team_speak3___node___abstract.html#ad22d04a2800ae672f6117de3afb0e9c4", null ], + [ "current", "class_team_speak3___node___abstract.html#a1c78dbb54df73f8c5dabe41ebd476207", null ], + [ "getChildren", "class_team_speak3___node___abstract.html#a4b9dee48bb72f0eab8b9d4b0ea25c5f4", null ], + [ "hasChildren", "class_team_speak3___node___abstract.html#a7769506879dac3170344d8e59218b644", null ], + [ "hasNext", "class_team_speak3___node___abstract.html#ad9aee4153360fd8139f6b0d68efff56f", null ], + [ "key", "class_team_speak3___node___abstract.html#adb87ddbef3247f346c2623f4d91981a1", null ], + [ "valid", "class_team_speak3___node___abstract.html#a1b0100e4a548e9464d75dcbfe6ac297a", null ], + [ "next", "class_team_speak3___node___abstract.html#a3273e5078ee49a4bd55620327ed09a5e", null ], + [ "rewind", "class_team_speak3___node___abstract.html#a9c416b77eeea1ecec6652936703d9ff7", null ], + [ "offsetExists", "class_team_speak3___node___abstract.html#ad0d64388e2a374203fa16760b923b087", null ], + [ "offsetGet", "class_team_speak3___node___abstract.html#a716e7512816cf490e5a16ec307f7d889", null ], + [ "offsetSet", "class_team_speak3___node___abstract.html#a5e9be0418e0cc969d47f4b7475adb21d", null ], + [ "offsetUnset", "class_team_speak3___node___abstract.html#a732408c9a027db531af8ecce82401c07", null ], + [ "__get", "class_team_speak3___node___abstract.html#ac8ab685826ff08e853de2aebad9df459", null ], + [ "__set", "class_team_speak3___node___abstract.html#a14930274e5498a5a8816ef751ff87946", null ], + [ "$parent", "class_team_speak3___node___abstract.html#a14a79cc9ca202ba4dbfc054f0c18583f", null ], + [ "$server", "class_team_speak3___node___abstract.html#acadc746cd7eb244d61f195494924f6b8", null ], + [ "$nodeId", "class_team_speak3___node___abstract.html#ac1bdee23c7d066edf3d6cb8e75999887", null ], + [ "$nodeList", "class_team_speak3___node___abstract.html#a37b39fa104ce36c0f0ea142934c05346", null ], + [ "$nodeInfo", "class_team_speak3___node___abstract.html#a50699be5fe1e43f7ae2e528db3c1098b", null ], + [ "$storage", "class_team_speak3___node___abstract.html#a33efbacf1a9aa094ccc39b0b25f3d369", null ] +]; \ No newline at end of file diff --git a/lib/docs/html/class_team_speak3___node___abstract.png b/lib/docs/html/class_team_speak3___node___abstract.png new file mode 100644 index 0000000000000000000000000000000000000000..846e2a8a4721d55654a13c2dd48b49c6e4598d37 GIT binary patch literal 3048 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 cHbU7yuYP@H`@? + + + + + +TeamSpeak 3 PHP Framework: Member List + + + + + + + + + + + + + +
+
+ + + + + + + +
+
TeamSpeak 3 PHP Framework +  1.1.23 +
+
Copyright © Planet TeamSpeak. All rights reserved.
+
+
+ + + + + +
+
+ +
+
+
+ +
+ + + + +
+ +
+ +
+
+
TeamSpeak3_Node_Channel Member List
+
+
+ +

This is the complete list of members for TeamSpeak3_Node_Channel, including all inherited members.

+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
$nodeIdTeamSpeak3_Node_Abstractprotected
$nodeInfoTeamSpeak3_Node_Abstractprotected
$nodeListTeamSpeak3_Node_Abstractprotected
$parentTeamSpeak3_Node_Abstractprotected
$serverTeamSpeak3_Node_Abstractprotected
$storageTeamSpeak3_Node_Abstractprotected
__call($name, array $args)TeamSpeak3_Node_Abstract
__construct(TeamSpeak3_Node_Server $server, array $info, $index="cid")TeamSpeak3_Node_Channel
__get($offset)TeamSpeak3_Node_Abstract
__set($offset, $value)TeamSpeak3_Node_Abstract
__sleep()TeamSpeak3_Node_Abstract
__toString()TeamSpeak3_Node_Channel
clientGetById($clid)TeamSpeak3_Node_Channel
clientGetByName($name)TeamSpeak3_Node_Channel
clientList(array $filter=array())TeamSpeak3_Node_Channel
clientPermAssign($cldbid, $permid, $permvalue)TeamSpeak3_Node_Channel
clientPermAssignByName($cldbid, $permname, $permvalue)TeamSpeak3_Node_Channel
clientPermList($cldbid, $permsid=FALSE)TeamSpeak3_Node_Channel
clientPermRemove($cldbid, $permid)TeamSpeak3_Node_Channel
clientPermRemoveByName($cldbid, $permname)TeamSpeak3_Node_Channel
count()TeamSpeak3_Node_Abstract
current()TeamSpeak3_Node_Abstract
delete($force=FALSE)TeamSpeak3_Node_Channel
delStorage($key)TeamSpeak3_Node_Abstractprotected
dirCreate($cpw="", $dirname="/")TeamSpeak3_Node_Channel
execute($cmd, array $params=array())TeamSpeak3_Node_Abstract
fetchNodeInfo()TeamSpeak3_Node_Channelprotected
fetchNodeList()TeamSpeak3_Node_Channelprotected
fileDelete($cpw="", $name="/")TeamSpeak3_Node_Channel
fileInfo($cpw="", $name="/")TeamSpeak3_Node_Channel
fileList($cpw="", $path="/", $recursive=FALSE)TeamSpeak3_Node_Channel
fileRename($cpw="", $oldname="/", $newname="/", $tcid=null, $tcpw=null)TeamSpeak3_Node_Channel
filterList(array $nodes=array(), array $rules=array())TeamSpeak3_Node_Abstractprotected
getChildren()TeamSpeak3_Node_Abstract
getClass($prefix="ts3_")TeamSpeak3_Node_Abstract
getIcon()TeamSpeak3_Node_Channel
getId()TeamSpeak3_Node_Abstract
getInfo($extend=TRUE, $convert=FALSE)TeamSpeak3_Node_Abstract
getLevel()TeamSpeak3_Node_Channel
getParent()TeamSpeak3_Node_Abstract
getPathway()TeamSpeak3_Node_Channel
getProperty($property, $default=null)TeamSpeak3_Node_Abstract
getStorage($key, $default=null)TeamSpeak3_Node_Abstractprotected
getSymbol()TeamSpeak3_Node_Channel
getUniqueId()TeamSpeak3_Node_Channel
getViewer(TeamSpeak3_Viewer_Interface $viewer)TeamSpeak3_Node_Abstract
hasChildren()TeamSpeak3_Node_Abstract
hasNext()TeamSpeak3_Node_Abstract
iconDownload()TeamSpeak3_Node_Channel
iconGetName($key)TeamSpeak3_Node_Abstract
iconIsLocal($key)TeamSpeak3_Node_Abstract
isSpacer()TeamSpeak3_Node_Channel
key()TeamSpeak3_Node_Abstract
message($msg, $cpw=null)TeamSpeak3_Node_Channel
modify(array $properties)TeamSpeak3_Node_Channel
move($pid, $order=null)TeamSpeak3_Node_Channel
next()TeamSpeak3_Node_Abstract
offsetExists($offset)TeamSpeak3_Node_Abstract
offsetGet($offset)TeamSpeak3_Node_Abstract
offsetSet($offset, $value)TeamSpeak3_Node_Abstract
offsetUnset($offset)TeamSpeak3_Node_Abstract
permAssign($permid, $permvalue)TeamSpeak3_Node_Channel
permAssignByName($permname, $permvalue)TeamSpeak3_Node_Channel
permList($permsid=FALSE)TeamSpeak3_Node_Channel
permRemove($permid)TeamSpeak3_Node_Channel
permRemoveByName($permname)TeamSpeak3_Node_Channel
prepare($cmd, array $params=array())TeamSpeak3_Node_Abstract
request($cmd, $throw=TRUE)TeamSpeak3_Node_Abstract
resetNodeInfo()TeamSpeak3_Node_Abstractprotected
resetNodeList()TeamSpeak3_Node_Abstractprotected
rewind()TeamSpeak3_Node_Abstract
sendPluginCmd($plugin, $data, $cpw=null, $subscribed=FALSE)TeamSpeak3_Node_Channel
setStorage($key, $val)TeamSpeak3_Node_Abstractprotected
spacerGetAlign()TeamSpeak3_Node_Channel
spacerGetType()TeamSpeak3_Node_Channel
subChannelGetById($cid)TeamSpeak3_Node_Channel
subChannelGetByName($name)TeamSpeak3_Node_Channel
subChannelList(array $filter=array())TeamSpeak3_Node_Channel
toArray()TeamSpeak3_Node_Abstract
toString()TeamSpeak3_Node_Abstract
valid()TeamSpeak3_Node_Abstract
verifyNodeList()TeamSpeak3_Node_Abstractprotected
+
+ + + + diff --git a/lib/docs/html/class_team_speak3___node___channel.html b/lib/docs/html/class_team_speak3___node___channel.html new file mode 100644 index 0000000..1537c0e --- /dev/null +++ b/lib/docs/html/class_team_speak3___node___channel.html @@ -0,0 +1,3695 @@ + + + + + + +TeamSpeak 3 PHP Framework: TeamSpeak3_Node_Channel Class Reference + + + + + + + + + + + + + +
+
+ + + + + + + +
+
TeamSpeak 3 PHP Framework +  1.1.23 +
+
Copyright © Planet TeamSpeak. All rights reserved.
+
+
+ + + + + +
+
+ +
+
+
+ +
+ + + + +
+ +
+ +
+ +
+
TeamSpeak3_Node_Channel Class Reference
+
+
+ +

Class describing a TeamSpeak 3 channel and all it's parameters. + More...

+
+ + Inheritance diagram for TeamSpeak3_Node_Channel:
+
+
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +

+Public Member Functions

 __construct (TeamSpeak3_Node_Server $server, array $info, $index="cid")
 The TeamSpeak3_Node_Channel constructor. More...
 
 subChannelList (array $filter=array())
 Returns an array filled with TeamSpeak3_Node_Channel objects. More...
 
 subChannelGetById ($cid)
 Returns the TeamSpeak3_Node_Channel object matching the given ID. More...
 
 subChannelGetByName ($name)
 Returns the TeamSpeak3_Node_Channel object matching the given name. More...
 
 clientList (array $filter=array())
 Returns an array filled with TeamSpeak3_Node_Client objects. More...
 
 clientGetById ($clid)
 Returns the TeamSpeak3_Node_Client object matching the given ID. More...
 
 clientGetByName ($name)
 Returns the TeamSpeak3_Node_Client object matching the given name. More...
 
 clientPermList ($cldbid, $permsid=FALSE)
 Returns a list of permissions defined for a client in the channel. More...
 
 clientPermAssign ($cldbid, $permid, $permvalue)
 Adds a set of specified permissions to a client in a specific channel. More...
 
 clientPermAssignByName ($cldbid, $permname, $permvalue)
 Alias for clientPermAssign(). More...
 
 clientPermRemove ($cldbid, $permid)
 Removes a set of specified permissions from a client in the channel. More...
 
 clientPermRemoveByName ($cldbid, $permname)
 Alias for clientPermRemove(). More...
 
 permList ($permsid=FALSE)
 Returns a list of permissions defined for the channel. More...
 
 permAssign ($permid, $permvalue)
 Adds a set of specified permissions to the channel. More...
 
 permAssignByName ($permname, $permvalue)
 Alias for permAssign(). More...
 
 permRemove ($permid)
 Removes a set of specified permissions from the channel. More...
 
 permRemoveByName ($permname)
 Alias for permRemove(). More...
 
 fileList ($cpw="", $path="/", $recursive=FALSE)
 Returns a list of files and directories stored in the channels file repository. More...
 
 fileInfo ($cpw="", $name="/")
 Returns detailed information about the specified file stored in the channels file repository. More...
 
 fileRename ($cpw="", $oldname="/", $newname="/", $tcid=null, $tcpw=null)
 Renames a file in the channels file repository. More...
 
 fileDelete ($cpw="", $name="/")
 Deletes one or more files stored in the channels file repository. More...
 
 dirCreate ($cpw="", $dirname="/")
 Creates new directory in a channels file repository. More...
 
 getLevel ()
 Returns the level of the channel. More...
 
 getPathway ()
 Returns the pathway of the channel which can be used as a clients default channel. More...
 
 spacerGetType ()
 Returns the possible spacer type of the channel. More...
 
 spacerGetAlign ()
 Returns the possible spacer alignment of the channel. More...
 
 isSpacer ()
 Returns TRUE if the channel is a spacer. More...
 
 iconDownload ()
 Downloads and returns the channels icon file content. More...
 
 modify (array $properties)
 Changes the channel configuration using given properties. More...
 
 message ($msg, $cpw=null)
 Sends a text message to all clients in the channel. More...
 
 delete ($force=FALSE)
 Deletes the channel. More...
 
 move ($pid, $order=null)
 Moves the channel to the parent channel specified with $pid. More...
 
 sendPluginCmd ($plugin, $data, $cpw=null, $subscribed=FALSE)
 Sends a plugin command to all clients in the channel. More...
 
 getUniqueId ()
 Returns a unique identifier for the node which can be used as a HTML property. More...
 
 getIcon ()
 Returns the name of a possible icon to display the node object. More...
 
 getSymbol ()
 Returns a symbol representing the node. More...
 
 __toString ()
 Returns a string representation of this node. More...
 
 request ($cmd, $throw=TRUE)
 Sends a prepared command to the server and returns the result. More...
 
 prepare ($cmd, array $params=array())
 Uses given parameters and returns a prepared ServerQuery command. More...
 
 execute ($cmd, array $params=array())
 Prepares and executes a ServerQuery command and returns the result. More...
 
 getParent ()
 Returns the parent object of the current node. More...
 
 getId ()
 Returns the primary ID of the current node. More...
 
 iconIsLocal ($key)
 Returns TRUE if the node icon has a local source. More...
 
 iconGetName ($key)
 Returns the internal path of the node icon. More...
 
 getClass ($prefix="ts3_")
 Returns a possible classname for the node which can be used as a HTML property. More...
 
 getViewer (TeamSpeak3_Viewer_Interface $viewer)
 Returns the HTML code to display a TeamSpeak 3 viewer. More...
 
 getInfo ($extend=TRUE, $convert=FALSE)
 Returns all information available on this node. More...
 
 getProperty ($property, $default=null)
 Returns the specified property or a pre-defined default value from the node info array. More...
 
 toString ()
 Returns a string representation of this node. More...
 
 toArray ()
 Returns an assoc array filled with current node info properties. More...
 
 __call ($name, array $args)
 Called whenever we're using an unknown method. More...
 
 __sleep ()
 Commit pending data. More...
 
 count ()
 
 current ()
 
 getChildren ()
 
 hasChildren ()
 
 hasNext ()
 
 key ()
 
 valid ()
 
 next ()
 
 rewind ()
 
 offsetExists ($offset)
 
 offsetGet ($offset)
 
 offsetSet ($offset, $value)
 
 offsetUnset ($offset)
 
 __get ($offset)
 
 __set ($offset, $value)
 
+ + + + + + + + + + + + + + + + + + + + + + + +

+Protected Member Functions

 fetchNodeList ()
 
 fetchNodeInfo ()
 
 filterList (array $nodes=array(), array $rules=array())
 Filters given node list array using specified filter rules. More...
 
 setStorage ($key, $val)
 Writes data to the internal storage array. More...
 
 getStorage ($key, $default=null)
 Returns data from the internal storage array. More...
 
 delStorage ($key)
 Deletes data from the internal storage array. More...
 
 resetNodeInfo ()
 
 verifyNodeList ()
 
 resetNodeList ()
 
+ + + + + + + + + + + + + +

+Protected Attributes

 $parent = null
 
 $server = null
 
 $nodeId = 0x00
 
 $nodeList = null
 
 $nodeInfo = array()
 
 $storage = array()
 
+

Detailed Description

+

Class describing a TeamSpeak 3 channel and all it's parameters.

+ +

Definition at line 32 of file Channel.php.

+

Constructor & Destructor Documentation

+ +
+
+ + + + + + + + + + + + + + + + + + + + + + + + +
TeamSpeak3_Node_Channel::__construct (TeamSpeak3_Node_Server $server,
array $info,
 $index = "cid" 
)
+
+ +

The TeamSpeak3_Node_Channel constructor.

+
Parameters
+ + + + +
TeamSpeak3_Node_Server$server
array$info
string$index
+
+
+
Exceptions
+ + +
TeamSpeak3_Adapter_ServerQuery_Exception
+
+
+
Returns
TeamSpeak3_Node_Channel
+ +

Definition at line 43 of file Channel.php.

+ +

References TeamSpeak3_Node_Abstract\$server.

+
44  {
+
45  $this->parent = $server;
+
46  $this->nodeInfo = $info;
+
47 
+
48  if(!array_key_exists($index, $this->nodeInfo))
+
49  {
+
50  throw new TeamSpeak3_Adapter_ServerQuery_Exception("invalid channelID", 0x300);
+
51  }
+
52 
+
53  $this->nodeId = $this->nodeInfo[$index];
+
54  }
+
+
+
+

Member Function Documentation

+ +
+
+ + + + + + + + +
TeamSpeak3_Node_Channel::subChannelList (array $filter = array())
+
+ +

Returns an array filled with TeamSpeak3_Node_Channel objects.

+
Parameters
+ + +
array$filter
+
+
+
Returns
array
+ +

Definition at line 62 of file Channel.php.

+ +

References TeamSpeak3_Node_Abstract\filterList(), TeamSpeak3_Node_Abstract\getId(), and TeamSpeak3_Node_Abstract\getParent().

+ +

Referenced by fetchNodeList(), subChannelGetById(), and subChannelGetByName().

+
63  {
+
64  $channels = array();
+
65 
+
66  foreach($this->getParent()->channelList() as $channel)
+
67  {
+
68  if($channel["pid"] == $this->getId())
+
69  {
+
70  $channels[$channel->getId()] = $channel;
+
71  }
+
72  }
+
73 
+
74  return $this->filterList($channels, $filter);
+
75  }
+
+
+
+ +
+
+ + + + + + + + +
TeamSpeak3_Node_Channel::subChannelGetById ( $cid)
+
+ +

Returns the TeamSpeak3_Node_Channel object matching the given ID.

+
Parameters
+ + +
integer$cid
+
+
+
Exceptions
+ + +
TeamSpeak3_Adapter_ServerQuery_Exception
+
+
+
Returns
TeamSpeak3_Node_Channel
+ +

Definition at line 84 of file Channel.php.

+ +

References subChannelList().

+
85  {
+
86  if(!array_key_exists((string) $cid, $this->subChannelList()))
+
87  {
+
88  throw new TeamSpeak3_Adapter_ServerQuery_Exception("invalid channelID", 0x300);
+
89  }
+
90 
+
91  return $this->channelList[(string) $cid];
+
92  }
+
+
+
+ +
+
+ + + + + + + + +
TeamSpeak3_Node_Channel::subChannelGetByName ( $name)
+
+ +

Returns the TeamSpeak3_Node_Channel object matching the given name.

+
Parameters
+ + +
integer$name
+
+
+
Exceptions
+ + +
TeamSpeak3_Adapter_ServerQuery_Exception
+
+
+
Returns
TeamSpeak3_Node_Channel
+ +

Definition at line 101 of file Channel.php.

+ +

References subChannelList().

+
102  {
+
103  foreach($this->subChannelList() as $channel)
+
104  {
+
105  if($channel["channel_name"] == $name) return $channel;
+
106  }
+
107 
+
108  throw new TeamSpeak3_Adapter_ServerQuery_Exception("invalid channelID", 0x300);
+
109  }
+
+
+
+ +
+
+ + + + + + + + +
TeamSpeak3_Node_Channel::clientList (array $filter = array())
+
+ +

Returns an array filled with TeamSpeak3_Node_Client objects.

+
Parameters
+ + +
array$filter
+
+
+
Returns
array
+ +

Definition at line 117 of file Channel.php.

+ +

References TeamSpeak3_Node_Abstract\filterList(), TeamSpeak3_Node_Abstract\getId(), and TeamSpeak3_Node_Abstract\getParent().

+ +

Referenced by clientGetById(), clientGetByName(), and fetchNodeList().

+
118  {
+
119  $clients = array();
+
120 
+
121  foreach($this->getParent()->clientList() as $client)
+
122  {
+
123  if($client["cid"] == $this->getId())
+
124  {
+
125  $clients[$client->getId()] = $client;
+
126  }
+
127  }
+
128 
+
129  return $this->filterList($clients, $filter);
+
130  }
+
+
+
+ +
+
+ + + + + + + + +
TeamSpeak3_Node_Channel::clientGetById ( $clid)
+
+ +

Returns the TeamSpeak3_Node_Client object matching the given ID.

+
Parameters
+ + +
integer$clid
+
+
+
Exceptions
+ + +
TeamSpeak3_Adapter_ServerQuery_Exception
+
+
+
Returns
TeamSpeak3_Node_Client
+ +

Definition at line 139 of file Channel.php.

+ +

References clientList().

+
140  {
+
141  if(!array_key_exists($clid, $this->clientList()))
+
142  {
+
143  throw new TeamSpeak3_Adapter_ServerQuery_Exception("invalid clientID", 0x200);
+
144  }
+
145 
+
146  return $this->clientList[intval($clid)];
+
147  }
+
+
+
+ +
+
+ + + + + + + + +
TeamSpeak3_Node_Channel::clientGetByName ( $name)
+
+ +

Returns the TeamSpeak3_Node_Client object matching the given name.

+
Parameters
+ + +
integer$name
+
+
+
Exceptions
+ + +
TeamSpeak3_Adapter_ServerQuery_Exception
+
+
+
Returns
TeamSpeak3_Node_Client
+ +

Definition at line 156 of file Channel.php.

+ +

References clientList().

+
157  {
+
158  foreach($this->clientList() as $client)
+
159  {
+
160  if($client["client_nickname"] == $name) return $client;
+
161  }
+
162 
+
163  throw new TeamSpeak3_Adapter_ServerQuery_Exception("invalid clientID", 0x200);
+
164  }
+
+
+
+ +
+
+ + + + + + + + + + + + + + + + + + +
TeamSpeak3_Node_Channel::clientPermList ( $cldbid,
 $permsid = FALSE 
)
+
+ +

Returns a list of permissions defined for a client in the channel.

+
Parameters
+ + + +
integer$cldbid
boolean$permsid
+
+
+
Returns
void
+ +

Definition at line 173 of file Channel.php.

+ +

References TeamSpeak3_Node_Abstract\getId(), and TeamSpeak3_Node_Abstract\getParent().

+
174  {
+
175  return $this->getParent()->channelClientPermList($this->getId(), $cldbid, $permsid);
+
176  }
+
+
+
+ +
+
+ + + + + + + + + + + + + + + + + + + + + + + + +
TeamSpeak3_Node_Channel::clientPermAssign ( $cldbid,
 $permid,
 $permvalue 
)
+
+ +

Adds a set of specified permissions to a client in a specific channel.

+

Multiple permissions can be added by providing the two parameters of each permission.

+
Parameters
+ + + + +
integer$cldbid
integer$permid
integer$permvalue
+
+
+
Returns
void
+ +

Definition at line 187 of file Channel.php.

+ +

References TeamSpeak3_Node_Abstract\getId(), and TeamSpeak3_Node_Abstract\getParent().

+ +

Referenced by clientPermAssignByName().

+
188  {
+
189  return $this->getParent()->channelClientPermAssign($this->getId(), $cldbid, $permid, $permvalue);
+
190  }
+
+
+
+ +
+
+ + + + + + + + + + + + + + + + + + + + + + + + +
TeamSpeak3_Node_Channel::clientPermAssignByName ( $cldbid,
 $permname,
 $permvalue 
)
+
+ +

Alias for clientPermAssign().

+
Deprecated:
+ +

Definition at line 197 of file Channel.php.

+ +

References clientPermAssign().

+
198  {
+
199  return $this->clientPermAssign($cldbid, $permname, $permvalue);
+
200  }
+
+
+
+ +
+
+ + + + + + + + + + + + + + + + + + +
TeamSpeak3_Node_Channel::clientPermRemove ( $cldbid,
 $permid 
)
+
+ +

Removes a set of specified permissions from a client in the channel.

+

Multiple permissions can be removed at once.

+
Parameters
+ + + +
integer$cldbid
integer$permid
+
+
+
Returns
void
+ +

Definition at line 209 of file Channel.php.

+ +

References TeamSpeak3_Node_Abstract\getId(), and TeamSpeak3_Node_Abstract\getParent().

+ +

Referenced by clientPermRemoveByName().

+
210  {
+
211  return $this->getParent()->channelClientPermRemove($this->getId(), $cldbid, $permid);
+
212  }
+
+
+
+ +
+
+ + + + + + + + + + + + + + + + + + +
TeamSpeak3_Node_Channel::clientPermRemoveByName ( $cldbid,
 $permname 
)
+
+ +

Alias for clientPermRemove().

+
Deprecated:
+ +

Definition at line 219 of file Channel.php.

+ +

References clientPermRemove().

+
220  {
+
221  return $this->clientPermRemove($cldbid, $permname);
+
222  }
+
+
+
+ +
+
+ + + + + + + + +
TeamSpeak3_Node_Channel::permList ( $permsid = FALSE)
+
+ +

Returns a list of permissions defined for the channel.

+
Parameters
+ + +
boolean$permsid
+
+
+
Returns
array
+ +

Definition at line 230 of file Channel.php.

+ +

References TeamSpeak3_Node_Abstract\getId(), and TeamSpeak3_Node_Abstract\getParent().

+
231  {
+
232  return $this->getParent()->channelPermList($this->getId(), $permsid);
+
233  }
+
+
+
+ +
+
+ + + + + + + + + + + + + + + + + + +
TeamSpeak3_Node_Channel::permAssign ( $permid,
 $permvalue 
)
+
+ +

Adds a set of specified permissions to the channel.

+

Multiple permissions can be added by providing the two parameters of each permission.

+
Parameters
+ + + +
integer$permid
integer$permvalue
+
+
+
Returns
void
+ +

Definition at line 243 of file Channel.php.

+ +

References TeamSpeak3_Node_Abstract\getId(), and TeamSpeak3_Node_Abstract\getParent().

+ +

Referenced by permAssignByName().

+
244  {
+
245  return $this->getParent()->channelPermAssign($this->getId(), $permid, $permvalue);
+
246  }
+
+
+
+ +
+
+ + + + + + + + + + + + + + + + + + +
TeamSpeak3_Node_Channel::permAssignByName ( $permname,
 $permvalue 
)
+
+ +

Alias for permAssign().

+
Deprecated:
+ +

Definition at line 253 of file Channel.php.

+ +

References permAssign().

+
254  {
+
255  return $this->permAssign($permname, $permvalue);
+
256  }
+
+
+
+ +
+
+ + + + + + + + +
TeamSpeak3_Node_Channel::permRemove ( $permid)
+
+ +

Removes a set of specified permissions from the channel.

+

Multiple permissions can be removed at once.

+
Parameters
+ + +
integer$permid
+
+
+
Returns
void
+ +

Definition at line 264 of file Channel.php.

+ +

References TeamSpeak3_Node_Abstract\getId(), and TeamSpeak3_Node_Abstract\getParent().

+ +

Referenced by permRemoveByName().

+
265  {
+
266  return $this->getParent()->channelPermRemove($this->getId(), $permid);
+
267  }
+
+
+
+ +
+
+ + + + + + + + +
TeamSpeak3_Node_Channel::permRemoveByName ( $permname)
+
+ +

Alias for permRemove().

+
Deprecated:
+ +

Definition at line 274 of file Channel.php.

+ +

References permRemove().

+
275  {
+
276  return $this->permRemove($permname);
+
277  }
+
+
+
+ +
+
+ + + + + + + + + + + + + + + + + + + + + + + + +
TeamSpeak3_Node_Channel::fileList ( $cpw = "",
 $path = "/",
 $recursive = FALSE 
)
+
+ +

Returns a list of files and directories stored in the channels file repository.

+
Parameters
+ + + + +
string$cpw
string$path
boolean$recursive
+
+
+
Returns
void
+ +

Definition at line 287 of file Channel.php.

+ +

References TeamSpeak3_Node_Abstract\getId(), and TeamSpeak3_Node_Abstract\getParent().

+
288  {
+
289  return $this->getParent()->channelFileList($this->getId(), $cpw, $path, $recursive);
+
290  }
+
+
+
+ +
+
+ + + + + + + + + + + + + + + + + + +
TeamSpeak3_Node_Channel::fileInfo ( $cpw = "",
 $name = "/" 
)
+
+ +

Returns detailed information about the specified file stored in the channels file repository.

+
Parameters
+ + + +
string$cpw
string$name
+
+
+
Returns
array
+ +

Definition at line 299 of file Channel.php.

+ +

References TeamSpeak3_Node_Abstract\getId(), and TeamSpeak3_Node_Abstract\getParent().

+
300  {
+
301  return $this->getParent()->channelFileInfo($this->getId(), $cpw, $name);
+
302  }
+
+
+
+ +
+
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
TeamSpeak3_Node_Channel::fileRename ( $cpw = "",
 $oldname = "/",
 $newname = "/",
 $tcid = null,
 $tcpw = null 
)
+
+ +

Renames a file in the channels file repository.

+

If the two parameters $tcid and $tcpw are specified, the file will be moved into another channels file repository.

+
Parameters
+ + + + + + +
string$cpw
string$oldname
string$newname
integer$tcid
string$tcpw
+
+
+
Returns
void
+ +

Definition at line 315 of file Channel.php.

+ +

References TeamSpeak3_Node_Abstract\getId(), and TeamSpeak3_Node_Abstract\getParent().

+
316  {
+
317  return $this->getParent()->channelFileRename($this->getId(), $cpw, $oldname, $newname, $tcid, $tcpw);
+
318  }
+
+
+
+ +
+
+ + + + + + + + + + + + + + + + + + +
TeamSpeak3_Node_Channel::fileDelete ( $cpw = "",
 $name = "/" 
)
+
+ +

Deletes one or more files stored in the channels file repository.

+
Parameters
+ + + +
string$cpw
string$path
+
+
+
Returns
void
+ +

Definition at line 327 of file Channel.php.

+ +

References TeamSpeak3_Node_Abstract\getId(), and TeamSpeak3_Node_Abstract\getParent().

+
328  {
+
329  return $this->getParent()->channelFileDelete($this->getId(), $cpw, $name);
+
330  }
+
+
+
+ +
+
+ + + + + + + + + + + + + + + + + + +
TeamSpeak3_Node_Channel::dirCreate ( $cpw = "",
 $dirname = "/" 
)
+
+ +

Creates new directory in a channels file repository.

+
Parameters
+ + + +
string$cpw
string$dirname
+
+
+
Returns
void
+ +

Definition at line 339 of file Channel.php.

+ +

References TeamSpeak3_Node_Abstract\getId(), and TeamSpeak3_Node_Abstract\getParent().

+
340  {
+
341  return $this->getParent()->channelDirCreate($this->getId(), $cpw, $dirname);
+
342  }
+
+
+
+ +
+
+ + + + + + + +
TeamSpeak3_Node_Channel::getLevel ()
+
+ +

Returns the level of the channel.

+
Returns
integer
+ +

Definition at line 349 of file Channel.php.

+ +

References TeamSpeak3_Node_Abstract\getId(), and TeamSpeak3_Node_Abstract\getParent().

+
350  {
+
351  return $this->getParent()->channelGetLevel($this->getId());
+
352  }
+
+
+
+ +
+
+ + + + + + + +
TeamSpeak3_Node_Channel::getPathway ()
+
+ +

Returns the pathway of the channel which can be used as a clients default channel.

+
Returns
string
+ +

Definition at line 359 of file Channel.php.

+ +

References TeamSpeak3_Node_Abstract\getId(), and TeamSpeak3_Node_Abstract\getParent().

+
360  {
+
361  return $this->getParent()->channelGetPathway($this->getId());
+
362  }
+
+
+
+ +
+
+ + + + + + + +
TeamSpeak3_Node_Channel::spacerGetType ()
+
+ +

Returns the possible spacer type of the channel.

+
Returns
integer
+ +

Definition at line 369 of file Channel.php.

+ +

References TeamSpeak3_Node_Abstract\getId(), and TeamSpeak3_Node_Abstract\getParent().

+
370  {
+
371  return $this->getParent()->channelSpacerGetType($this->getId());
+
372  }
+
+
+
+ +
+
+ + + + + + + +
TeamSpeak3_Node_Channel::spacerGetAlign ()
+
+ +

Returns the possible spacer alignment of the channel.

+
Returns
integer
+ +

Definition at line 379 of file Channel.php.

+ +

References TeamSpeak3_Node_Abstract\getId(), and TeamSpeak3_Node_Abstract\getParent().

+
380  {
+
381  return $this->getParent()->channelSpacerGetAlign($this->getId());
+
382  }
+
+
+
+ +
+
+ + + + + + + +
TeamSpeak3_Node_Channel::isSpacer ()
+
+ +

Returns TRUE if the channel is a spacer.

+
Returns
boolean
+ +

Definition at line 389 of file Channel.php.

+ +

References TeamSpeak3_Node_Abstract\getParent().

+ +

Referenced by TeamSpeak3_Viewer_Html\getCorpusClass(), TeamSpeak3_Viewer_Html\getCorpusIcon(), TeamSpeak3_Viewer_Html\getCorpusName(), TeamSpeak3_Viewer_Html\getCorpusTitle(), and TeamSpeak3_Viewer_Html\getSuffixIconChannel().

+
390  {
+
391  return $this->getParent()->channelIsSpacer($this);
+
392  }
+
+
+
+ +
+
+ + + + + + + +
TeamSpeak3_Node_Channel::iconDownload ()
+
+ +

Downloads and returns the channels icon file content.

+
Returns
TeamSpeak3_Helper_String
+ +

Definition at line 399 of file Channel.php.

+ +

References TeamSpeak3\factory(), TeamSpeak3_Node_Abstract\getParent(), TeamSpeak3_Node_Abstract\iconGetName(), and TeamSpeak3_Node_Abstract\iconIsLocal().

+
400  {
+
401  if($this->iconIsLocal("channel_icon_id") || $this["channel_icon_id"] == 0) return;
+
402 
+
403  $download = $this->getParent()->transferInitDownload(rand(0x0000, 0xFFFF), 0, $this->iconGetName("channel_icon_id"));
+
404  $transfer = TeamSpeak3::factory("filetransfer://" . $download["host"] . ":" . $download["port"]);
+
405 
+
406  return $transfer->download($download["ftkey"], $download["size"]);
+
407  }
+
+
+
+ +
+
+ + + + + + + + +
TeamSpeak3_Node_Channel::modify (array $properties)
+
+ +

Changes the channel configuration using given properties.

+
Parameters
+ + +
array$properties
+
+
+
Returns
void
+ +

Definition at line 415 of file Channel.php.

+ +

References TeamSpeak3_Node_Abstract\execute(), TeamSpeak3_Node_Abstract\getId(), and TeamSpeak3_Node_Abstract\resetNodeInfo().

+
416  {
+
417  $properties["cid"] = $this->getId();
+
418 
+
419  $this->execute("channeledit", $properties);
+
420  $this->resetNodeInfo();
+
421  }
+
+
+
+ +
+
+ + + + + + + + + + + + + + + + + + +
TeamSpeak3_Node_Channel::message ( $msg,
 $cpw = null 
)
+
+ +

Sends a text message to all clients in the channel.

+
Parameters
+ + + +
string$msg
string$cpw
+
+
+
Returns
void
+ +

Definition at line 430 of file Channel.php.

+ +

References TeamSpeak3_Node_Abstract\execute(), TeamSpeak3_Node_Abstract\getId(), TeamSpeak3_Node_Abstract\getParent(), and TeamSpeak3\TEXTMSG_CHANNEL.

+
431  {
+
432  if($this->getId() != $this->getParent()->whoamiGet("client_channel_id"))
+
433  {
+
434  $this->getParent()->clientMove($this->getParent()->whoamiGet("client_id"), $this->getId(), $cpw);
+
435  }
+
436 
+
437  $this->execute("sendtextmessage", array("msg" => $msg, "target" => $this->getId(), "targetmode" => TeamSpeak3::TEXTMSG_CHANNEL));
+
438  }
+
+
+
+ +
+
+ + + + + + + + +
TeamSpeak3_Node_Channel::delete ( $force = FALSE)
+
+ +

Deletes the channel.

+
Parameters
+ + +
boolean$force
+
+
+
Returns
void
+ +

Definition at line 446 of file Channel.php.

+ +

References TeamSpeak3_Node_Abstract\getId(), and TeamSpeak3_Node_Abstract\getParent().

+
447  {
+
448  $this->getParent()->channelDelete($this->getId(), $force);
+
449 
+
450  unset($this);
+
451  }
+
+
+
+ +
+
+ + + + + + + + + + + + + + + + + + +
TeamSpeak3_Node_Channel::move ( $pid,
 $order = null 
)
+
+ +

Moves the channel to the parent channel specified with $pid.

+
Parameters
+ + + +
integer$pid
integer$order
+
+
+
Returns
void
+ +

Definition at line 460 of file Channel.php.

+ +

References TeamSpeak3_Node_Abstract\getId(), and TeamSpeak3_Node_Abstract\getParent().

+
461  {
+
462  $this->getParent()->channelMove($this->getId(), $pid, $order);
+
463  }
+
+
+
+ +
+
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
TeamSpeak3_Node_Channel::sendPluginCmd ( $plugin,
 $data,
 $cpw = null,
 $subscribed = FALSE 
)
+
+ +

Sends a plugin command to all clients in the channel.

+
Parameters
+ + + + + +
string$plugin
string$data
string$cpw
boolean$subscribed
+
+
+
Returns
void
+ +

Definition at line 474 of file Channel.php.

+ +

References TeamSpeak3_Node_Abstract\execute(), TeamSpeak3_Node_Abstract\getId(), TeamSpeak3_Node_Abstract\getParent(), TeamSpeak3\PLUGINCMD_CHANNEL, and TeamSpeak3\PLUGINCMD_CHANNEL_SUBSCRIBED.

+
475  {
+
476  if($this->getId() != $this->getParent()->whoamiGet("client_channel_id"))
+
477  {
+
478  $this->getParent()->clientMove($this->getParent()->whoamiGet("client_id"), $this->getId(), $cpw);
+
479  }
+
480 
+
481  $this->execute("plugincmd", array("name" => $plugin, "data" => $data, "targetmode" => $subscribed ? TeamSpeak3::PLUGINCMD_CHANNEL_SUBSCRIBED : TeamSpeak3::PLUGINCMD_CHANNEL));
+
482  }
+
+
+
+ +
+
+ + + + + +
+ + + + + + + +
TeamSpeak3_Node_Channel::fetchNodeList ()
+
+protected
+
+ +

+ +

Definition at line 487 of file Channel.php.

+ +

References clientList(), TeamSpeak3_Node_Abstract\getId(), TeamSpeak3_Node_Abstract\getParent(), and subChannelList().

+
488  {
+
489  $this->nodeList = array();
+
490 
+
491  if($this->getParent()->getLoadClientlistFirst())
+
492  {
+
493  foreach($this->clientList() as $client)
+
494  {
+
495  if($client["cid"] == $this->getId())
+
496  {
+
497  $this->nodeList[] = $client;
+
498  }
+
499  }
+
500 
+
501  foreach($this->subChannelList() as $channel)
+
502  {
+
503  if($channel["pid"] == $this->getId())
+
504  {
+
505  $this->nodeList[] = $channel;
+
506  }
+
507  }
+
508  }
+
509  else
+
510  {
+
511  foreach($this->subChannelList() as $channel)
+
512  {
+
513  if($channel["pid"] == $this->getId())
+
514  {
+
515  $this->nodeList[] = $channel;
+
516  }
+
517  }
+
518 
+
519  foreach($this->clientList() as $client)
+
520  {
+
521  if($client["cid"] == $this->getId())
+
522  {
+
523  $this->nodeList[] = $client;
+
524  }
+
525  }
+
526  }
+
527  }
+
+
+
+ +
+
+ + + + + +
+ + + + + + + +
TeamSpeak3_Node_Channel::fetchNodeInfo ()
+
+protected
+
+ +

+ +

Definition at line 532 of file Channel.php.

+ +

References TeamSpeak3_Node_Abstract\execute(), and TeamSpeak3_Node_Abstract\getId().

+
533  {
+
534  $this->nodeInfo = array_merge($this->nodeInfo, $this->execute("channelinfo", array("cid" => $this->getId()))->toList());
+
535  }
+
+
+
+ +
+
+ + + + + + + +
TeamSpeak3_Node_Channel::getUniqueId ()
+
+ +

Returns a unique identifier for the node which can be used as a HTML property.

+
Returns
string
+ +

Definition at line 542 of file Channel.php.

+ +

References TeamSpeak3_Node_Abstract\getId(), and TeamSpeak3_Node_Abstract\getParent().

+
543  {
+
544  return $this->getParent()->getUniqueId() . "_ch" . $this->getId();
+
545  }
+
+
+
+ +
+
+ + + + + + + +
TeamSpeak3_Node_Channel::getIcon ()
+
+ +

Returns the name of a possible icon to display the node object.

+
Returns
string
+ +

Definition at line 552 of file Channel.php.

+
553  {
+
554  if($this["channel_maxclients"] != -1 && $this["channel_maxclients"] <= $this["total_clients"])
+
555  {
+
556  return "channel_full";
+
557  }
+
558  elseif($this["channel_flag_password"])
+
559  {
+
560  return "channel_pass";
+
561  }
+
562  else
+
563  {
+
564  return "channel_open";
+
565  }
+
566  }
+
+
+
+ +
+
+ + + + + + + +
TeamSpeak3_Node_Channel::getSymbol ()
+
+ +

Returns a symbol representing the node.

+
Returns
string
+ +

Definition at line 573 of file Channel.php.

+
574  {
+
575  return "#";
+
576  }
+
+
+
+ +
+
+ + + + + + + +
TeamSpeak3_Node_Channel::__toString ()
+
+ +

Returns a string representation of this node.

+
Returns
string
+ +

Definition at line 583 of file Channel.php.

+
584  {
+
585  return (string) $this["channel_name"];
+
586  }
+
+
+
+ +
+
+ + + + + +
+ + + + + + + + + + + + + + + + + + +
TeamSpeak3_Node_Abstract::request ( $cmd,
 $throw = TRUE 
)
+
+inherited
+
+ +

Sends a prepared command to the server and returns the result.

+
Parameters
+ + + +
string$cmd
boolean$throw
+
+
+
Returns
TeamSpeak3_Adapter_ServerQuery_Reply
+ +

Definition at line 71 of file Abstract.php.

+ +

References TeamSpeak3_Node_Abstract\getParent().

+ +

Referenced by TeamSpeak3_Node_Host\bindingList(), TeamSpeak3_Node_Abstract\execute(), TeamSpeak3_Node_Host\fetchNodeInfo(), TeamSpeak3_Node_Host\fetchPermissionList(), TeamSpeak3_Node_Host\logout(), TeamSpeak3_Node_Host\serverList(), TeamSpeak3_Node_Host\version(), and TeamSpeak3_Node_Host\whoami().

+
72  {
+
73  return $this->getParent()->request($cmd, $throw);
+
74  }
+
+
+
+ +
+
+ + + + + +
+ + + + + + + + + + + + + + + + + + +
TeamSpeak3_Node_Abstract::prepare ( $cmd,
array $params = array() 
)
+
+inherited
+
+ +

Uses given parameters and returns a prepared ServerQuery command.

+
Parameters
+ + + +
string$cmd
array$params
+
+
+
Returns
TeamSpeak3_Helper_String
+ +

Definition at line 83 of file Abstract.php.

+ +

References TeamSpeak3_Node_Abstract\getParent().

+ +

Referenced by TeamSpeak3_Node_Abstract\execute().

+
84  {
+
85  return $this->getParent()->prepare($cmd, $params);
+
86  }
+
+
+
+ +
+
+ + + + + +
+ + + + + + + + + + + + + + + + + + +
TeamSpeak3_Node_Abstract::execute ( $cmd,
array $params = array() 
)
+
+inherited
+
+ +

Prepares and executes a ServerQuery command and returns the result.

+
Parameters
+ + + +
string$cmd
array$params
+
+
+
Returns
TeamSpeak3_Adapter_ServerQuery_Reply
+ +

Definition at line 95 of file Abstract.php.

+ +

References TeamSpeak3_Node_Abstract\prepare(), and TeamSpeak3_Node_Abstract\request().

+ +

Referenced by TeamSpeak3_Node_Server\banCreate(), TeamSpeak3_Node_Server\banDelete(), TeamSpeak3_Node_Server\channelClientPermAssign(), TeamSpeak3_Node_Server\channelClientPermList(), TeamSpeak3_Node_Server\channelClientPermRemove(), TeamSpeak3_Node_Server\channelCreate(), TeamSpeak3_Node_Server\channelDelete(), TeamSpeak3_Node_Server\channelDirCreate(), TeamSpeak3_Node_Server\channelFileDelete(), TeamSpeak3_Node_Server\channelFileInfo(), TeamSpeak3_Node_Server\channelFileList(), TeamSpeak3_Node_Server\channelFileRename(), TeamSpeak3_Node_Server\channelGroupClientList(), TeamSpeak3_Node_Server\channelGroupCopy(), TeamSpeak3_Node_Server\channelGroupCreate(), TeamSpeak3_Node_Server\channelGroupDelete(), TeamSpeak3_Node_Server\channelGroupPermAssign(), TeamSpeak3_Node_Server\channelGroupPermList(), TeamSpeak3_Node_Server\channelGroupPermRemove(), TeamSpeak3_Node_Server\channelGroupRename(), TeamSpeak3_Node_Server\channelMove(), TeamSpeak3_Node_Server\channelPermAssign(), TeamSpeak3_Node_Server\channelPermList(), TeamSpeak3_Node_Server\channelPermRemove(), TeamSpeak3_Node_Server\clientBan(), TeamSpeak3_Node_Server\clientCountDb(), TeamSpeak3_Node_Server\clientDeleteDb(), TeamSpeak3_Node_Server\clientFind(), TeamSpeak3_Node_Server\clientFindDb(), TeamSpeak3_Node_Server\clientGetIdsByUid(), TeamSpeak3_Node_Server\clientGetNameByDbid(), TeamSpeak3_Node_Server\clientGetNameByUid(), TeamSpeak3_Node_Server\clientGetServerGroupsByDbid(), TeamSpeak3_Node_Server\clientInfoDb(), TeamSpeak3_Node_Server\clientKick(), TeamSpeak3_Node_Server\clientListDb(), TeamSpeak3_Node_Server\clientModifyDb(), TeamSpeak3_Node_Server\clientMove(), TeamSpeak3_Node_Server\clientPermAssign(), TeamSpeak3_Node_Server\clientPermList(), TeamSpeak3_Node_Server\clientPermRemove(), TeamSpeak3_Node_Server\clientPoke(), TeamSpeak3_Node_Server\clientSetChannelGroup(), TeamSpeak3_Node_Server\complaintCreate(), TeamSpeak3_Node_Server\complaintDelete(), TeamSpeak3_Node_Server\complaintList(), TeamSpeak3_Node_Server\complaintListClear(), TeamSpeak3_Node_Server\customInfo(), TeamSpeak3_Node_Server\customSearch(), TeamSpeak3_Node_Client\fetchNodeInfo(), fetchNodeInfo(), TeamSpeak3_Node_Client\getClones(), TeamSpeak3_Node_Host\logAdd(), TeamSpeak3_Node_Server\logAdd(), TeamSpeak3_Node_Host\login(), TeamSpeak3_Node_Host\logView(), TeamSpeak3_Node_Server\logView(), TeamSpeak3_Node_Client\message(), TeamSpeak3_Node_Channelgroup\message(), TeamSpeak3_Node_Servergroup\message(), message(), TeamSpeak3_Node_Host\message(), TeamSpeak3_Node_Server\message(), TeamSpeak3_Node_Server\messageCreate(), TeamSpeak3_Node_Server\messageDelete(), TeamSpeak3_Node_Server\messageRead(), TeamSpeak3_Node_Client\modify(), modify(), TeamSpeak3_Node_Host\modify(), TeamSpeak3_Node_Server\modify(), TeamSpeak3_Node_Server\notifyRegister(), TeamSpeak3_Node_Host\permissionFind(), TeamSpeak3_Node_Client\permOverview(), TeamSpeak3_Node_Server\privilegeKeyCreate(), TeamSpeak3_Node_Server\privilegeKeyDelete(), TeamSpeak3_Node_Server\privilegeKeyUse(), TeamSpeak3_Node_Host\selfPermCheck(), TeamSpeak3_Node_Server\selfPermOverview(), TeamSpeak3_Node_Server\selfUpdate(), TeamSpeak3_Node_Server\selfUpdateLogin(), TeamSpeak3_Node_Client\sendPluginCmd(), sendPluginCmd(), TeamSpeak3_Node_Server\sendPluginCmd(), TeamSpeak3_Node_Host\serverCreate(), TeamSpeak3_Node_Host\serverDelete(), TeamSpeak3_Node_Server\serverGroupClientAdd(), TeamSpeak3_Node_Server\serverGroupClientDel(), TeamSpeak3_Node_Server\serverGroupClientList(), TeamSpeak3_Node_Server\serverGroupCopy(), TeamSpeak3_Node_Server\serverGroupCreate(), TeamSpeak3_Node_Server\serverGroupDelete(), TeamSpeak3_Node_Server\serverGroupPermAssign(), TeamSpeak3_Node_Host\serverGroupPermAutoAssign(), TeamSpeak3_Node_Host\serverGroupPermAutoRemove(), TeamSpeak3_Node_Server\serverGroupPermList(), TeamSpeak3_Node_Server\serverGroupPermRemove(), TeamSpeak3_Node_Server\serverGroupRename(), TeamSpeak3_Node_Host\serverIdGetByPort(), TeamSpeak3_Node_Host\serverSelect(), TeamSpeak3_Node_Host\serverSelectByPort(), TeamSpeak3_Node_Host\serverStart(), TeamSpeak3_Node_Host\serverStop(), TeamSpeak3_Node_Host\serverStopProcess(), TeamSpeak3_Node_Server\tempPasswordCreate(), TeamSpeak3_Node_Server\tempPasswordDelete(), TeamSpeak3_Node_Server\transferInitDownload(), TeamSpeak3_Node_Server\transferInitUpload(), and TeamSpeak3_Node_Server\transferStop().

+
96  {
+
97  return $this->request($this->prepare($cmd, $params));
+
98  }
+
+
+
+ +
+
+ + + + + +
+ + + + + + + +
TeamSpeak3_Node_Abstract::getParent ()
+
+inherited
+
+ +

Returns the parent object of the current node.

+
Returns
TeamSpeak3_Adapter_ServerQuery
+
+TeamSpeak3_Node_Abstract
+ +

Definition at line 106 of file Abstract.php.

+ +

References TeamSpeak3_Node_Abstract\$parent.

+ +

Referenced by TeamSpeak3_Node_Abstract\__call(), TeamSpeak3_Node_Client\addServerGroup(), TeamSpeak3_Node_Client\avatarDownload(), TeamSpeak3_Node_Client\ban(), TeamSpeak3_Node_Server\channelCreate(), TeamSpeak3_Node_Server\channelDelete(), TeamSpeak3_Node_Servergroup\clientAdd(), TeamSpeak3_Node_Servergroup\clientDel(), clientList(), TeamSpeak3_Node_Channelgroup\clientList(), TeamSpeak3_Node_Servergroup\clientList(), TeamSpeak3_Node_Server\clientList(), TeamSpeak3_Node_Server\clientMove(), clientPermAssign(), clientPermList(), clientPermRemove(), TeamSpeak3_Node_Servergroup\copy(), TeamSpeak3_Node_Channelgroup\copy(), TeamSpeak3_Node_Client\customInfo(), TeamSpeak3_Node_Servergroup\delete(), TeamSpeak3_Node_Channelgroup\delete(), delete(), TeamSpeak3_Node_Server\delete(), TeamSpeak3_Node_Client\deleteDb(), dirCreate(), TeamSpeak3_Node_Channelgroup\fetchNodeList(), TeamSpeak3_Node_Servergroup\fetchNodeList(), fetchNodeList(), fileDelete(), fileInfo(), fileList(), fileRename(), TeamSpeak3_Node_Host\getAdapter(), TeamSpeak3_Node_Host\getAdapterHost(), TeamSpeak3_Node_Host\getAdapterPort(), getLevel(), getPathway(), TeamSpeak3_Node_Channelgroup\getUniqueId(), TeamSpeak3_Node_Servergroup\getUniqueId(), TeamSpeak3_Node_Client\getUniqueId(), getUniqueId(), TeamSpeak3_Node_Server\getUniqueId(), TeamSpeak3_Node_Channelgroup\iconDownload(), TeamSpeak3_Node_Servergroup\iconDownload(), TeamSpeak3_Node_Client\iconDownload(), iconDownload(), TeamSpeak3_Node_Client\infoDb(), isSpacer(), TeamSpeak3_Node_Client\kick(), TeamSpeak3_Node_Client\memberOf(), message(), TeamSpeak3_Node_Client\modifyDb(), TeamSpeak3_Node_Client\move(), move(), TeamSpeak3_Node_Channelgroup\permAssign(), TeamSpeak3_Node_Servergroup\permAssign(), TeamSpeak3_Node_Client\permAssign(), permAssign(), TeamSpeak3_Node_Servergroup\permList(), TeamSpeak3_Node_Channelgroup\permList(), TeamSpeak3_Node_Client\permList(), permList(), TeamSpeak3_Node_Channelgroup\permRemove(), TeamSpeak3_Node_Servergroup\permRemove(), TeamSpeak3_Node_Client\permRemove(), permRemove(), TeamSpeak3_Node_Client\poke(), TeamSpeak3_Node_Abstract\prepare(), TeamSpeak3_Node_Channelgroup\privilegeKeyCreate(), TeamSpeak3_Node_Servergroup\privilegeKeyCreate(), TeamSpeak3_Node_Client\remServerGroup(), TeamSpeak3_Node_Channelgroup\rename(), TeamSpeak3_Node_Servergroup\rename(), TeamSpeak3_Node_Abstract\request(), TeamSpeak3_Node_Server\request(), sendPluginCmd(), TeamSpeak3_Node_Client\setChannelGroup(), TeamSpeak3_Node_Server\snapshotDeploy(), spacerGetAlign(), spacerGetType(), TeamSpeak3_Node_Server\start(), TeamSpeak3_Node_Server\stop(), subChannelList(), TeamSpeak3_Node_Server\transferInitDownload(), and TeamSpeak3_Node_Server\transferInitUpload().

+
107  {
+
108  return $this->parent;
+
109  }
+
+
+
+ +
+
+ + + + + +
+ + + + + + + +
TeamSpeak3_Node_Abstract::getId ()
+
+inherited
+
+ +

Returns the primary ID of the current node.

+
Returns
integer
+ +

Definition at line 116 of file Abstract.php.

+ +

References TeamSpeak3_Node_Abstract\$nodeId.

+ +

Referenced by TeamSpeak3_Node_Client\ban(), TeamSpeak3_Node_Server\channelDelete(), TeamSpeak3_Node_Server\channelFileList(), TeamSpeak3_Node_Servergroup\clientAdd(), TeamSpeak3_Node_Servergroup\clientDel(), clientList(), TeamSpeak3_Node_Channelgroup\clientList(), TeamSpeak3_Node_Servergroup\clientList(), clientPermAssign(), clientPermList(), clientPermRemove(), TeamSpeak3_Node_Servergroup\copy(), TeamSpeak3_Node_Channelgroup\copy(), TeamSpeak3_Node_Channelgroup\delete(), TeamSpeak3_Node_Servergroup\delete(), delete(), TeamSpeak3_Node_Server\delete(), dirCreate(), TeamSpeak3_Node_Client\fetchNodeInfo(), fetchNodeInfo(), TeamSpeak3_Node_Channelgroup\fetchNodeList(), TeamSpeak3_Node_Servergroup\fetchNodeList(), fetchNodeList(), fileDelete(), fileInfo(), fileList(), fileRename(), getLevel(), getPathway(), TeamSpeak3_Node_Channelgroup\getUniqueId(), TeamSpeak3_Node_Servergroup\getUniqueId(), TeamSpeak3_Node_Client\getUniqueId(), getUniqueId(), TeamSpeak3_Node_Server\getUniqueId(), TeamSpeak3_Node_Client\kick(), TeamSpeak3_Node_Client\message(), message(), TeamSpeak3_Node_Server\message(), TeamSpeak3_Node_Client\modify(), modify(), TeamSpeak3_Node_Client\move(), move(), TeamSpeak3_Node_Channelgroup\permAssign(), TeamSpeak3_Node_Servergroup\permAssign(), permAssign(), TeamSpeak3_Node_Channelgroup\permList(), TeamSpeak3_Node_Servergroup\permList(), permList(), TeamSpeak3_Node_Channelgroup\permRemove(), TeamSpeak3_Node_Servergroup\permRemove(), permRemove(), TeamSpeak3_Node_Client\poke(), TeamSpeak3_Node_Channelgroup\privilegeKeyCreate(), TeamSpeak3_Node_Servergroup\privilegeKeyCreate(), TeamSpeak3_Node_Channelgroup\rename(), TeamSpeak3_Node_Servergroup\rename(), TeamSpeak3_Node_Server\request(), TeamSpeak3_Node_Client\sendPluginCmd(), sendPluginCmd(), TeamSpeak3_Node_Server\sortGroupList(), spacerGetAlign(), spacerGetType(), TeamSpeak3_Node_Server\start(), TeamSpeak3_Node_Server\stop(), and subChannelList().

+
117  {
+
118  return $this->nodeId;
+
119  }
+
+
+
+ +
+
+ + + + + +
+ + + + + + + + +
TeamSpeak3_Node_Abstract::iconIsLocal ( $key)
+
+inherited
+
+ +

Returns TRUE if the node icon has a local source.

+
Parameters
+ + +
string$key
+
+
+
Returns
boolean
+ +

Definition at line 127 of file Abstract.php.

+ +

Referenced by TeamSpeak3_Node_Channelgroup\iconDownload(), TeamSpeak3_Node_Servergroup\iconDownload(), TeamSpeak3_Node_Client\iconDownload(), iconDownload(), and TeamSpeak3_Node_Server\iconDownload().

+
128  {
+
129  return ($this[$key] > 0 && $this[$key] < 1000) ? TRUE : FALSE;
+
130  }
+
+
+
+ +
+
+ + + + + +
+ + + + + + + + +
TeamSpeak3_Node_Abstract::iconGetName ( $key)
+
+inherited
+
+ +

Returns the internal path of the node icon.

+
Parameters
+ + +
string$key
+
+
+
Returns
TeamSpeak3_Helper_String
+ +

Definition at line 138 of file Abstract.php.

+ +

Referenced by TeamSpeak3_Node_Abstract\getInfo(), TeamSpeak3_Node_Channelgroup\iconDownload(), TeamSpeak3_Node_Servergroup\iconDownload(), TeamSpeak3_Node_Client\iconDownload(), iconDownload(), and TeamSpeak3_Node_Server\iconDownload().

+
139  {
+
140  $iconid = ($this[$key] < 0) ? (pow(2, 32))-($this[$key]*-1) : $this[$key];
+
141 
+
142  return new TeamSpeak3_Helper_String("/icon_" . $iconid);
+
143  }
+
+
+
+ +
+
+ + + + + +
+ + + + + + + + +
TeamSpeak3_Node_Abstract::getClass ( $prefix = "ts3_")
+
+inherited
+
+ +

Returns a possible classname for the node which can be used as a HTML property.

+
Parameters
+ + +
string$prefix
+
+
+
Returns
string
+ +

Definition at line 151 of file Abstract.php.

+ +

References TeamSpeak3_Helper_String\factory().

+
152  {
+
153  if($this instanceof TeamSpeak3_Node_Channel && $this->isSpacer())
+
154  {
+
155  return $prefix . "spacer";
+
156  }
+
157  elseif($this instanceof TeamSpeak3_Node_Client && $this["client_type"])
+
158  {
+
159  return $prefix . "query";
+
160  }
+
161 
+
162  return $prefix . TeamSpeak3_Helper_String::factory(get_class($this))->section("_", 2)->toLower();
+
163  }
+
+
+
+ +
+
+ + + + + +
+ + + + + + + + +
TeamSpeak3_Node_Abstract::getViewer (TeamSpeak3_Viewer_Interface $viewer)
+
+inherited
+
+ +

Returns the HTML code to display a TeamSpeak 3 viewer.

+
Parameters
+ + +
TeamSpeak3_Viewer_Interface$viewer
+
+
+
Returns
string
+ +

Definition at line 192 of file Abstract.php.

+ +

References TeamSpeak3_Viewer_Interface\fetchObject().

+
193  {
+
194  $html = $viewer->fetchObject($this);
+
195 
+
196  $iterator = new RecursiveIteratorIterator($this, RecursiveIteratorIterator::SELF_FIRST);
+
197 
+
198  foreach($iterator as $node)
+
199  {
+
200  $siblings = array();
+
201 
+
202  for($level = 0; $level < $iterator->getDepth(); $level++)
+
203  {
+
204  $siblings[] = ($iterator->getSubIterator($level)->hasNext()) ? 1 : 0;
+
205  }
+
206 
+
207  $siblings[] = (!$iterator->getSubIterator($level)->hasNext()) ? 1 : 0;
+
208 
+
209  $html .= $viewer->fetchObject($node, $siblings);
+
210  }
+
211 
+
212  return $html;
+
213  }
+
+
+
+ +
+
+ + + + + +
+ + + + + + + + + + + + + + + + + + +
TeamSpeak3_Node_Abstract::filterList (array $nodes = array(),
array $rules = array() 
)
+
+protectedinherited
+
+ +

Filters given node list array using specified filter rules.

+
Parameters
+ + + +
array$nodes
array$rules
+
+
+
Returns
array
+ +

Definition at line 222 of file Abstract.php.

+ +

Referenced by TeamSpeak3_Node_Server\channelGroupList(), TeamSpeak3_Node_Server\channelList(), clientList(), TeamSpeak3_Node_Server\clientList(), TeamSpeak3_Node_Server\serverGroupList(), TeamSpeak3_Node_Host\serverList(), and subChannelList().

+
223  {
+
224  if(!empty($rules))
+
225  {
+
226  foreach($nodes as $node)
+
227  {
+
228  if(!$node instanceof TeamSpeak3_Node_Abstract) continue;
+
229 
+
230  $props = $node->getInfo(FALSE);
+
231  $props = array_intersect_key($props, $rules);
+
232  $match = TRUE;
+
233 
+
234  foreach($props as $key => $val)
+
235  {
+
236  if($val instanceof TeamSpeak3_Helper_String)
+
237  {
+
238  $match = $val->contains($rules[$key], TRUE);
+
239  }
+
240  else
+
241  {
+
242  $match = $val == $rules[$key];
+
243  }
+
244 
+
245  if($match === FALSE)
+
246  {
+
247  unset($nodes[$node->getId()]);
+
248  }
+
249  }
+
250  }
+
251  }
+
252 
+
253  return $nodes;
+
254  }
+
+
+
+ +
+
+ + + + + +
+ + + + + + + + + + + + + + + + + + +
TeamSpeak3_Node_Abstract::getInfo ( $extend = TRUE,
 $convert = FALSE 
)
+
+inherited
+
+ +

Returns all information available on this node.

+

If $convert is enabled, some property values will be converted to human-readable values.

+
Parameters
+ + + +
boolean$extend
boolean$convert
+
+
+
Returns
array
+ +

Definition at line 264 of file Abstract.php.

+ +

References TeamSpeak3_Node_Abstract\$nodeInfo, TeamSpeak3_Helper_Convert\bytes(), TeamSpeak3_Helper_String\factory(), TeamSpeak3_Node_Abstract\fetchNodeInfo(), TeamSpeak3_Node_Abstract\iconGetName(), TeamSpeak3_Helper_Convert\seconds(), and TeamSpeak3_Helper_Convert\version().

+
265  {
+
266  if($extend)
+
267  {
+
268  $this->fetchNodeInfo();
+
269  }
+
270 
+
271  if($convert)
+
272  {
+
273  $info = $this->nodeInfo;
+
274 
+
275  foreach($info as $key => $val)
+
276  {
+ +
278 
+
279  if($key->contains("_bytes_"))
+
280  {
+
281  $info[$key->toString()] = TeamSpeak3_Helper_Convert::bytes($val);
+
282  }
+
283  elseif($key->contains("_bandwidth_"))
+
284  {
+
285  $info[$key->toString()] = TeamSpeak3_Helper_Convert::bytes($val) . "/s";
+
286  }
+
287  elseif($key->contains("_packets_"))
+
288  {
+
289  $info[$key->toString()] = number_format($val, null, null, ".");
+
290  }
+
291  elseif($key->contains("_packetloss_"))
+
292  {
+
293  $info[$key->toString()] = sprintf("%01.2f", floatval($val->toString())*100) . "%";
+
294  }
+
295  elseif($key->endsWith("_uptime"))
+
296  {
+
297  $info[$key->toString()] = TeamSpeak3_Helper_Convert::seconds($val);
+
298  }
+
299  elseif($key->endsWith("_version"))
+
300  {
+
301  $info[$key->toString()] = TeamSpeak3_Helper_Convert::version($val);
+
302  }
+
303  elseif($key->endsWith("_icon_id"))
+
304  {
+
305  $info[$key->toString()] = $this->iconGetName($key)->filterDigits();
+
306  }
+
307  }
+
308 
+
309  return $info;
+
310  }
+
311 
+
312  return $this->nodeInfo;
+
313  }
+
+
+
+ +
+
+ + + + + +
+ + + + + + + + + + + + + + + + + + +
TeamSpeak3_Node_Abstract::getProperty ( $property,
 $default = null 
)
+
+inherited
+
+ +

Returns the specified property or a pre-defined default value from the node info array.

+
Parameters
+ + + +
string$property
mixed$default
+
+
+
Returns
mixed
+ +

Definition at line 322 of file Abstract.php.

+ +

References TeamSpeak3_Node_Abstract\fetchNodeInfo(), and TeamSpeak3_Node_Abstract\offsetExists().

+ +

Referenced by TeamSpeak3_Node_Server\sortClientList(), and TeamSpeak3_Node_Server\sortGroupList().

+
323  {
+
324  if(!$this->offsetExists($property))
+
325  {
+
326  $this->fetchNodeInfo();
+
327  }
+
328 
+
329  if(!$this->offsetExists($property))
+
330  {
+
331  return $default;
+
332  }
+
333 
+
334  return $this->nodeInfo[(string) $property];
+
335  }
+
+
+
+ +
+
+ + + + + +
+ + + + + + + +
TeamSpeak3_Node_Abstract::toString ()
+
+inherited
+
+ +

Returns a string representation of this node.

+
Returns
string
+ +

Definition at line 352 of file Abstract.php.

+ +

References TeamSpeak3_Node_Abstract\__toString().

+
353  {
+
354  return $this->__toString();
+
355  }
+
+
+
+ +
+
+ + + + + +
+ + + + + + + +
TeamSpeak3_Node_Abstract::toArray ()
+
+inherited
+
+ +

Returns an assoc array filled with current node info properties.

+
Returns
array
+ +

Definition at line 362 of file Abstract.php.

+ +

References TeamSpeak3_Node_Abstract\$nodeList.

+ +

Referenced by TeamSpeak3_Node_Server\channelFileInfo().

+
363  {
+
364  return $this->nodeList;
+
365  }
+
+
+
+ +
+
+ + + + + +
+ + + + + + + + + + + + + + + + + + +
TeamSpeak3_Node_Abstract::__call ( $name,
array $args 
)
+
+inherited
+
+ +

Called whenever we're using an unknown method.

+
Parameters
+ + + +
string$name
array$args
+
+
+
Exceptions
+ + +
TeamSpeak3_Node_Exception
+
+
+
Returns
mixed
+ +

Definition at line 375 of file Abstract.php.

+ +

References TeamSpeak3_Node_Abstract\getParent().

+
376  {
+
377  if($this->getParent() instanceof TeamSpeak3_Node_Abstract)
+
378  {
+
379  return call_user_func_array(array($this->getParent(), $name), $args);
+
380  }
+
381 
+
382  throw new TeamSpeak3_Node_Exception("node method '" . $name . "()' does not exist");
+
383  }
+
+
+
+ +
+
+ + + + + +
+ + + + + + + + + + + + + + + + + + +
TeamSpeak3_Node_Abstract::setStorage ( $key,
 $val 
)
+
+protectedinherited
+
+ +

Writes data to the internal storage array.

+
Parameters
+ + + +
string$key
mixed$val
+
+
+
Returns
void
+ +

Definition at line 392 of file Abstract.php.

+ +

Referenced by TeamSpeak3_Node_Host\login(), TeamSpeak3_Node_Host\serverSelect(), TeamSpeak3_Node_Host\serverSelectByPort(), TeamSpeak3_Node_Host\setExcludeQueryClients(), TeamSpeak3_Node_Host\setLoadClientlistFirst(), TeamSpeak3_Node_Host\setPredefinedQueryName(), and TeamSpeak3_Node_Host\setUseOfflineAsVirtual().

+
393  {
+
394  $this->storage[$key] = $val;
+
395  }
+
+
+
+ +
+
+ + + + + +
+ + + + + + + + + + + + + + + + + + +
TeamSpeak3_Node_Abstract::getStorage ( $key,
 $default = null 
)
+
+protectedinherited
+
+ +

Returns data from the internal storage array.

+
Parameters
+ + + +
string$key
mixed$default
+
+
+
Returns
mixed
+ +

Definition at line 404 of file Abstract.php.

+ +

Referenced by TeamSpeak3_Node_Host\__wakeup().

+
405  {
+
406  return (array_key_exists($key, $this->storage) && !empty($this->storage[$key])) ? $this->storage[$key] : $default;
+
407  }
+
+
+
+ +
+
+ + + + + +
+ + + + + + + + +
TeamSpeak3_Node_Abstract::delStorage ( $key)
+
+protectedinherited
+
+ +

Deletes data from the internal storage array.

+
Parameters
+ + +
string$key
+
+
+
Returns
void
+ +

Definition at line 415 of file Abstract.php.

+ +

Referenced by TeamSpeak3_Node_Host\logout(), and TeamSpeak3_Node_Host\serverDeselect().

+
416  {
+
417  unset($this->storage[$key]);
+
418  }
+
+
+
+ +
+
+ + + + + +
+ + + + + + + +
TeamSpeak3_Node_Abstract::__sleep ()
+
+inherited
+
+ +

Commit pending data.

+
Returns
array
+ +

Definition at line 425 of file Abstract.php.

+
426  {
+
427  return array("parent", "storage", "nodeId");
+
428  }
+
+
+
+ +
+
+ + + + + +
+ + + + + + + +
TeamSpeak3_Node_Abstract::resetNodeInfo ()
+
+protectedinherited
+
+ +

+ +

Definition at line 449 of file Abstract.php.

+ +

Referenced by TeamSpeak3_Node_Client\modify(), modify(), TeamSpeak3_Node_Host\modify(), and TeamSpeak3_Node_Server\modify().

+
450  {
+
451  $this->nodeInfo = array();
+
452  }
+
+
+
+ +
+
+ + + + + +
+ + + + + + + +
TeamSpeak3_Node_Abstract::verifyNodeList ()
+
+protectedinherited
+
+
+ +
+
+ + + + + +
+ + + + + + + +
TeamSpeak3_Node_Abstract::resetNodeList ()
+
+protectedinherited
+
+
+ +
+
+ + + + + +
+ + + + + + + +
TeamSpeak3_Node_Abstract::count ()
+
+inherited
+
+
+ + + +
+
+ + + + + +
+ + + + + + + +
TeamSpeak3_Node_Abstract::getChildren ()
+
+inherited
+
+ +

+ +

Definition at line 496 of file Abstract.php.

+ +

References TeamSpeak3_Node_Abstract\current(), and TeamSpeak3_Node_Abstract\verifyNodeList().

+
497  {
+
498  $this->verifyNodeList();
+
499 
+
500  return $this->current();
+
501  }
+
+
+
+ +
+
+ + + + + +
+ + + + + + + +
TeamSpeak3_Node_Abstract::hasChildren ()
+
+inherited
+
+ +

+ +

Definition at line 506 of file Abstract.php.

+ +

References TeamSpeak3_Node_Abstract\current(), and TeamSpeak3_Node_Abstract\verifyNodeList().

+
507  {
+
508  $this->verifyNodeList();
+
509 
+
510  return $this->current()->count() > 0;
+
511  }
+
+
+
+ +
+
+ + + + + +
+ + + + + + + +
TeamSpeak3_Node_Abstract::hasNext ()
+
+inherited
+
+ +

+ +

Definition at line 516 of file Abstract.php.

+ +

References TeamSpeak3_Node_Abstract\count(), TeamSpeak3_Node_Abstract\key(), and TeamSpeak3_Node_Abstract\verifyNodeList().

+
517  {
+
518  $this->verifyNodeList();
+
519 
+
520  return $this->key()+1 < $this->count();
+
521  }
+
+
+
+ +
+
+ + + + + +
+ + + + + + + +
TeamSpeak3_Node_Abstract::key ()
+
+inherited
+
+ +

+ +

Definition at line 526 of file Abstract.php.

+ +

References TeamSpeak3_Node_Abstract\verifyNodeList().

+ +

Referenced by TeamSpeak3_Node_Abstract\hasNext(), and TeamSpeak3_Node_Abstract\valid().

+
527  {
+
528  $this->verifyNodeList();
+
529 
+
530  return key($this->nodeList);
+
531  }
+
+
+
+ +
+
+ + + + + +
+ + + + + + + +
TeamSpeak3_Node_Abstract::valid ()
+
+inherited
+
+ +

+ +

Definition at line 536 of file Abstract.php.

+ +

References TeamSpeak3_Node_Abstract\key(), and TeamSpeak3_Node_Abstract\verifyNodeList().

+
537  {
+
538  $this->verifyNodeList();
+
539 
+
540  return $this->key() !== null;
+
541  }
+
+
+
+ +
+
+ + + + + +
+ + + + + + + +
TeamSpeak3_Node_Abstract::next ()
+
+inherited
+
+ +

+ +

Definition at line 546 of file Abstract.php.

+ +

References TeamSpeak3_Node_Abstract\verifyNodeList().

+
547  {
+
548  $this->verifyNodeList();
+
549 
+
550  return next($this->nodeList);
+
551  }
+
+
+
+ +
+
+ + + + + +
+ + + + + + + +
TeamSpeak3_Node_Abstract::rewind ()
+
+inherited
+
+ +

+ +

Definition at line 556 of file Abstract.php.

+ +

References TeamSpeak3_Node_Abstract\verifyNodeList().

+
557  {
+
558  $this->verifyNodeList();
+
559 
+
560  return reset($this->nodeList);
+
561  }
+
+
+
+ +
+
+ + + + + +
+ + + + + + + + +
TeamSpeak3_Node_Abstract::offsetExists ( $offset)
+
+inherited
+
+ +

+ +

Definition at line 566 of file Abstract.php.

+ +

Referenced by TeamSpeak3_Node_Abstract\getProperty(), and TeamSpeak3_Node_Abstract\offsetGet().

+
567  {
+
568  return array_key_exists((string) $offset, $this->nodeInfo) ? TRUE : FALSE;
+
569  }
+
+
+
+ +
+
+ + + + + +
+ + + + + + + + +
TeamSpeak3_Node_Abstract::offsetGet ( $offset)
+
+inherited
+
+ +

+ +

Definition at line 574 of file Abstract.php.

+ +

References TeamSpeak3_Node_Abstract\fetchNodeInfo(), and TeamSpeak3_Node_Abstract\offsetExists().

+ +

Referenced by TeamSpeak3_Node_Abstract\__get().

+
575  {
+
576  if(!$this->offsetExists($offset))
+
577  {
+
578  $this->fetchNodeInfo();
+
579  }
+
580 
+
581  if(!$this->offsetExists($offset))
+
582  {
+
583  throw new TeamSpeak3_Adapter_ServerQuery_Exception("invalid parameter", 0x602);
+
584  }
+
585 
+
586  return $this->nodeInfo[(string) $offset];
+
587  }
+
+
+
+ +
+
+ + + + + +
+ + + + + + + + + + + + + + + + + + +
TeamSpeak3_Node_Abstract::offsetSet ( $offset,
 $value 
)
+
+inherited
+
+ +

+ +

Definition at line 592 of file Abstract.php.

+ +

Referenced by TeamSpeak3_Node_Abstract\__set().

+
593  {
+
594  if(method_exists($this, "modify"))
+
595  {
+
596  return $this->modify(array((string) $offset => $value));
+
597  }
+
598 
+
599  throw new TeamSpeak3_Node_Exception("node '" . get_class($this) . "' is read only");
+
600  }
+
+
+
+ +
+
+ + + + + +
+ + + + + + + + +
TeamSpeak3_Node_Abstract::offsetUnset ( $offset)
+
+inherited
+
+ +

+ +

Definition at line 605 of file Abstract.php.

+
606  {
+
607  unset($this->nodeInfo[(string) $offset]);
+
608  }
+
+
+
+ +
+
+ + + + + +
+ + + + + + + + +
TeamSpeak3_Node_Abstract::__get ( $offset)
+
+inherited
+
+ +

+ +

Definition at line 613 of file Abstract.php.

+ +

References TeamSpeak3_Node_Abstract\offsetGet().

+
614  {
+
615  return $this->offsetGet($offset);
+
616  }
+
+
+
+ +
+
+ + + + + +
+ + + + + + + + + + + + + + + + + + +
TeamSpeak3_Node_Abstract::__set ( $offset,
 $value 
)
+
+inherited
+
+ +

+ +

Definition at line 621 of file Abstract.php.

+ +

References TeamSpeak3_Node_Abstract\offsetSet().

+
622  {
+
623  $this->offsetSet($offset, $value);
+
624  }
+
+
+
+

Member Data Documentation

+ +
+
+ + + + + +
+ + + + +
TeamSpeak3_Node_Abstract::$parent = null
+
+protectedinherited
+
+ +

+ +

Definition at line 37 of file Abstract.php.

+ +

Referenced by TeamSpeak3_Node_Abstract\getParent().

+ +
+
+ + + +
+
+ + + + + +
+ + + + +
TeamSpeak3_Node_Abstract::$nodeId = 0x00
+
+protectedinherited
+
+ +

+ +

Definition at line 47 of file Abstract.php.

+ +

Referenced by TeamSpeak3_Node_Abstract\getId().

+ +
+
+ +
+
+ + + + + +
+ + + + +
TeamSpeak3_Node_Abstract::$nodeList = null
+
+protectedinherited
+
+ +

+ +

Definition at line 52 of file Abstract.php.

+ +

Referenced by TeamSpeak3_Node_Abstract\toArray().

+ +
+
+ +
+
+ + + + + +
+ + + + +
TeamSpeak3_Node_Abstract::$nodeInfo = array()
+
+protectedinherited
+
+ +

+ +

Definition at line 57 of file Abstract.php.

+ +

Referenced by TeamSpeak3_Node_Abstract\getInfo().

+ +
+
+ +
+
+ + + + + +
+ + + + +
TeamSpeak3_Node_Abstract::$storage = array()
+
+protectedinherited
+
+ +

+ +

Definition at line 62 of file Abstract.php.

+ +
+
+
The documentation for this class was generated from the following file: +
+
+ + + + diff --git a/lib/docs/html/class_team_speak3___node___channel.js b/lib/docs/html/class_team_speak3___node___channel.js new file mode 100644 index 0000000..9a2d12c --- /dev/null +++ b/lib/docs/html/class_team_speak3___node___channel.js @@ -0,0 +1,85 @@ +var class_team_speak3___node___channel = +[ + [ "__construct", "class_team_speak3___node___channel.html#a7e20bbf057d5934b61e5c024240204d9", null ], + [ "subChannelList", "class_team_speak3___node___channel.html#a3305e870508db6fc6346ac326d843f89", null ], + [ "subChannelGetById", "class_team_speak3___node___channel.html#add4dacca0d0c83837598b948401a40b4", null ], + [ "subChannelGetByName", "class_team_speak3___node___channel.html#ac41f8c7054b457df5716641df29608c0", null ], + [ "clientList", "class_team_speak3___node___channel.html#a10413785d241a007e16d961cb996606d", null ], + [ "clientGetById", "class_team_speak3___node___channel.html#a65e29a83a86be282c518beb2de18b09c", null ], + [ "clientGetByName", "class_team_speak3___node___channel.html#a551d0330e564f9cc5ab3352f17f82854", null ], + [ "clientPermList", "class_team_speak3___node___channel.html#aaecc89ca9afaafa7f5a34581e44b871c", null ], + [ "clientPermAssign", "class_team_speak3___node___channel.html#a0563e887ab93925f4c6a5a7028564406", null ], + [ "clientPermAssignByName", "class_team_speak3___node___channel.html#a49536704a62df7ce862c8b49a34133f1", null ], + [ "clientPermRemove", "class_team_speak3___node___channel.html#a22162cfd2c6c996a04e46acd90ff653d", null ], + [ "clientPermRemoveByName", "class_team_speak3___node___channel.html#af2d943d5b6b6b9bf051195f2d4396e3f", null ], + [ "permList", "class_team_speak3___node___channel.html#aeb434341ab27daa223feaa6947d1eb84", null ], + [ "permAssign", "class_team_speak3___node___channel.html#a718a79bb14289ba6a52cf13264f1e3d9", null ], + [ "permAssignByName", "class_team_speak3___node___channel.html#abb025af29045d589a709fd54908a265e", null ], + [ "permRemove", "class_team_speak3___node___channel.html#ad5b12fe78a6882e82e09cfcfe4c0a5a4", null ], + [ "permRemoveByName", "class_team_speak3___node___channel.html#a23153430a3dcb5ac300f488a5ca96ac1", null ], + [ "fileList", "class_team_speak3___node___channel.html#a36efedde38452a8f789d75da1ba57d27", null ], + [ "fileInfo", "class_team_speak3___node___channel.html#af80055c43aa221cfc9fb77ebe909e883", null ], + [ "fileRename", "class_team_speak3___node___channel.html#a0a91f8d1922a0987d619b2b999b20ed7", null ], + [ "fileDelete", "class_team_speak3___node___channel.html#a795adb2d08b347a25aef05ecb6d1388b", null ], + [ "dirCreate", "class_team_speak3___node___channel.html#ab34961db39c511984fc05c4b28517596", null ], + [ "getLevel", "class_team_speak3___node___channel.html#a2f42245368e047bee70760ecb1aaada2", null ], + [ "getPathway", "class_team_speak3___node___channel.html#aecd920dea71369198d448f808c9b3810", null ], + [ "spacerGetType", "class_team_speak3___node___channel.html#a52fe3494554137418c85446de9d93d25", null ], + [ "spacerGetAlign", "class_team_speak3___node___channel.html#a9d3afd421f9957b18fae15dd2fb70a59", null ], + [ "isSpacer", "class_team_speak3___node___channel.html#a403b689f8fa9fd61744186f8c94c8a19", null ], + [ "iconDownload", "class_team_speak3___node___channel.html#a014365ed1cbed74e25efd721ce495868", null ], + [ "modify", "class_team_speak3___node___channel.html#a9ed93a66fb5e503bcd556d54f53b2e7d", null ], + [ "message", "class_team_speak3___node___channel.html#abb90a093d39070b66f903c29aee75eb7", null ], + [ "delete", "class_team_speak3___node___channel.html#a1dde358f63d3ac8c2298fd21142dac27", null ], + [ "move", "class_team_speak3___node___channel.html#ac6c3d3563ea70b58e5d06504cea1dc40", null ], + [ "sendPluginCmd", "class_team_speak3___node___channel.html#abb2adcb5338c4e1a9bb4ab1009c977d7", null ], + [ "fetchNodeList", "class_team_speak3___node___channel.html#a81bb1307281b161103c7578cb27883cb", null ], + [ "fetchNodeInfo", "class_team_speak3___node___channel.html#a0309efb6b6ba7612c0298edb3f411fd3", null ], + [ "getUniqueId", "class_team_speak3___node___channel.html#a44bfe5d3b60bf1126fe64a3ab26d9b97", null ], + [ "getIcon", "class_team_speak3___node___channel.html#a8cc6d7499a4556e2cfa42d8a9f9b63c0", null ], + [ "getSymbol", "class_team_speak3___node___channel.html#abbfb1e4be497e07c1a25e9bd6047035a", null ], + [ "__toString", "class_team_speak3___node___channel.html#a2fbf4302a79b8e3cfab59c23e7c5f5ef", null ], + [ "request", "class_team_speak3___node___channel.html#a35dcdb8a7b62d7990307bfb95ce3937c", null ], + [ "prepare", "class_team_speak3___node___channel.html#a6589a4fedd410e9cdb55fe20abc410c0", null ], + [ "execute", "class_team_speak3___node___channel.html#af6811efc5065b8aadfd6792334ea6977", null ], + [ "getParent", "class_team_speak3___node___channel.html#a44618fb948562e89515330e65d08da9a", null ], + [ "getId", "class_team_speak3___node___channel.html#a4a0a5545abc2460d1d9b3d6b52d07cbe", null ], + [ "iconIsLocal", "class_team_speak3___node___channel.html#aa78cba098574598dd9c0331cac1f39a1", null ], + [ "iconGetName", "class_team_speak3___node___channel.html#a02ce34dce8fbf7881ce2323f7af0dca3", null ], + [ "getClass", "class_team_speak3___node___channel.html#af6e1416ad2e568f48ff0d85b15b2a673", null ], + [ "getViewer", "class_team_speak3___node___channel.html#a3d3f27dab5569edf3a737be080e7c8bc", null ], + [ "filterList", "class_team_speak3___node___channel.html#ad826df3c71029ca48839dbe9aa3559b8", null ], + [ "getInfo", "class_team_speak3___node___channel.html#af63ae54f10c02ec6b1033425f795fef4", null ], + [ "getProperty", "class_team_speak3___node___channel.html#a585728537b56194aeab30b0316126b89", null ], + [ "toString", "class_team_speak3___node___channel.html#ac1b521aa7f9871103da5cbb5d3330125", null ], + [ "toArray", "class_team_speak3___node___channel.html#acf3c56763859b8adb21379f0cc6394ad", null ], + [ "__call", "class_team_speak3___node___channel.html#a63fb203f511e99625428f70f0525950c", null ], + [ "setStorage", "class_team_speak3___node___channel.html#a13303ca9275df184348ed7363d9d7c9a", null ], + [ "getStorage", "class_team_speak3___node___channel.html#a5a6888304aca8d5f12fecb460b0ef6d2", null ], + [ "delStorage", "class_team_speak3___node___channel.html#afbed20ee78d7e5a38097078dd91e70fd", null ], + [ "__sleep", "class_team_speak3___node___channel.html#a19b5c8aaac5ef0af2f1393bffea186c5", null ], + [ "resetNodeInfo", "class_team_speak3___node___channel.html#a266578bece0506453e1f1bfba1f08966", null ], + [ "verifyNodeList", "class_team_speak3___node___channel.html#ac66aeb30418e385a5727c191bb8df87d", null ], + [ "resetNodeList", "class_team_speak3___node___channel.html#a9ead519e8396990ba30d79d6bed9d286", null ], + [ "count", "class_team_speak3___node___channel.html#ad22d04a2800ae672f6117de3afb0e9c4", null ], + [ "current", "class_team_speak3___node___channel.html#a1c78dbb54df73f8c5dabe41ebd476207", null ], + [ "getChildren", "class_team_speak3___node___channel.html#a4b9dee48bb72f0eab8b9d4b0ea25c5f4", null ], + [ "hasChildren", "class_team_speak3___node___channel.html#a7769506879dac3170344d8e59218b644", null ], + [ "hasNext", "class_team_speak3___node___channel.html#ad9aee4153360fd8139f6b0d68efff56f", null ], + [ "key", "class_team_speak3___node___channel.html#adb87ddbef3247f346c2623f4d91981a1", null ], + [ "valid", "class_team_speak3___node___channel.html#a1b0100e4a548e9464d75dcbfe6ac297a", null ], + [ "next", "class_team_speak3___node___channel.html#a3273e5078ee49a4bd55620327ed09a5e", null ], + [ "rewind", "class_team_speak3___node___channel.html#a9c416b77eeea1ecec6652936703d9ff7", null ], + [ "offsetExists", "class_team_speak3___node___channel.html#ad0d64388e2a374203fa16760b923b087", null ], + [ "offsetGet", "class_team_speak3___node___channel.html#a716e7512816cf490e5a16ec307f7d889", null ], + [ "offsetSet", "class_team_speak3___node___channel.html#a5e9be0418e0cc969d47f4b7475adb21d", null ], + [ "offsetUnset", "class_team_speak3___node___channel.html#a732408c9a027db531af8ecce82401c07", null ], + [ "__get", "class_team_speak3___node___channel.html#ac8ab685826ff08e853de2aebad9df459", null ], + [ "__set", "class_team_speak3___node___channel.html#a14930274e5498a5a8816ef751ff87946", null ], + [ "$parent", "class_team_speak3___node___channel.html#a14a79cc9ca202ba4dbfc054f0c18583f", null ], + [ "$server", "class_team_speak3___node___channel.html#acadc746cd7eb244d61f195494924f6b8", null ], + [ "$nodeId", "class_team_speak3___node___channel.html#ac1bdee23c7d066edf3d6cb8e75999887", null ], + [ "$nodeList", "class_team_speak3___node___channel.html#a37b39fa104ce36c0f0ea142934c05346", null ], + [ "$nodeInfo", "class_team_speak3___node___channel.html#a50699be5fe1e43f7ae2e528db3c1098b", null ], + [ "$storage", "class_team_speak3___node___channel.html#a33efbacf1a9aa094ccc39b0b25f3d369", null ] +]; \ No newline at end of file diff --git a/lib/docs/html/class_team_speak3___node___channel.png b/lib/docs/html/class_team_speak3___node___channel.png new file mode 100644 index 0000000000000000000000000000000000000000..5b36321e458cfd4af3dcddd27b4e9a5e571a8bc4 GIT binary patch literal 1830 zcmb7FeKga17$3Q{GNw20Z@-Fl?PB9U3lmff#gw||^_&%Mt%zvuUSe&>0<=lgp;pXd8!?DFx@ zSz^2dfk5bZdE$H#2u%pY7my2pUx*iQ!OL)$w?AI3R)es2P_`q!mIb1}p1Qg^HlZpD zKxC}1j~@ag&6%*-e*>tl^ulfPkJA|K8Hq03tcUMI`$`hkPOkliF;`SL!a{s2UPv>Rjs`7e0X?c$#N3$gt1S}_!=%e+{l24M6(OPxqOShKm`}7 zm-`Xri_@;VVY*~F&t8%-GaZ3${`^d%iQPumv^$b)r|o;~2Hq9S?xdq~UF02SVHgv4 z6|%V2XJJo?o_1V!0Dqk+z0$#$`sg~U|4<=I=hif{#2ciQEjtftiuln+*Z4$Y?^`^* z#B}dHWmZ37`!S424#V;EF_ZGjpup|IvYE)Vkf44lQFupnxWHg3^Jr0icv}j2qM?u+ z(G+<&t=nQ5nJ7o~+EKa?0XvJ~;Ko5Z^;6F0P8dd?W zHfLtYl?)pn1IMM+N!5P)oWdF^a~-nNq4rEp+E!5r_tV;-qKRcu6%s!z{b_axQiXkw zVsCyN5oi0BJDKEDV$-%e#-#J=Y&LCZW+Gd7DMplOV=LfR za8!r$DT|P6*cjC3XCxmD_8fsll}$R22^J$+Q(^ugh@VR7DGmwhNV$5Z>s={~)=aR$^^I7Zp1F9D%mi;#N2e%&?!{g~Zhf%Y}}V3Xf51 zS364LaMTV|GP&$qdF9^-X0I7 zN8%CBc%(|7xBgJqccpW}_^gf(e^kTFs!I7xy2HM*zPRwm_laVwlbl}ZLVK;m)MFCW zEA17aW%q!VR-8PeS(WfTk_i;DGaig@OzF)=5YC%s6gXUv&Q@xTZK$B_-e+Gbz@>)p M!u#M#e+oMHC$CytD*ylh literal 0 HcmV?d00001 diff --git a/lib/docs/html/class_team_speak3___node___channelgroup-members.html b/lib/docs/html/class_team_speak3___node___channelgroup-members.html new file mode 100644 index 0000000..007b505 --- /dev/null +++ b/lib/docs/html/class_team_speak3___node___channelgroup-members.html @@ -0,0 +1,189 @@ + + + + + + +TeamSpeak 3 PHP Framework: Member List + + + + + + + + + + + + + +
+
+ + + + + + + +
+
TeamSpeak 3 PHP Framework +  1.1.23 +
+
Copyright © Planet TeamSpeak. All rights reserved.
+
+
+ + + + + +
+
+ +
+
+
+ +
+ + + + +
+ +
+ +
+
+
TeamSpeak3_Node_Channelgroup Member List
+
+
+ +

This is the complete list of members for TeamSpeak3_Node_Channelgroup, including all inherited members.

+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
$nodeIdTeamSpeak3_Node_Abstractprotected
$nodeInfoTeamSpeak3_Node_Abstractprotected
$nodeListTeamSpeak3_Node_Abstractprotected
$parentTeamSpeak3_Node_Abstractprotected
$serverTeamSpeak3_Node_Abstractprotected
$storageTeamSpeak3_Node_Abstractprotected
__call($name, array $args)TeamSpeak3_Node_Abstract
__construct(TeamSpeak3_Node_Server $server, array $info, $index="cgid")TeamSpeak3_Node_Channelgroup
__get($offset)TeamSpeak3_Node_Abstract
__set($offset, $value)TeamSpeak3_Node_Abstract
__sleep()TeamSpeak3_Node_Abstract
__toString()TeamSpeak3_Node_Channelgroup
clientList()TeamSpeak3_Node_Channelgroup
copy($name=null, $tcgid=0, $type=TeamSpeak3::GROUP_DBTYPE_REGULAR)TeamSpeak3_Node_Channelgroup
count()TeamSpeak3_Node_Abstract
current()TeamSpeak3_Node_Abstract
delete($force=FALSE)TeamSpeak3_Node_Channelgroup
delStorage($key)TeamSpeak3_Node_Abstractprotected
execute($cmd, array $params=array())TeamSpeak3_Node_Abstract
fetchNodeInfo()TeamSpeak3_Node_Abstractprotected
fetchNodeList()TeamSpeak3_Node_Channelgroupprotected
filterList(array $nodes=array(), array $rules=array())TeamSpeak3_Node_Abstractprotected
getChildren()TeamSpeak3_Node_Abstract
getClass($prefix="ts3_")TeamSpeak3_Node_Abstract
getIcon()TeamSpeak3_Node_Channelgroup
getId()TeamSpeak3_Node_Abstract
getInfo($extend=TRUE, $convert=FALSE)TeamSpeak3_Node_Abstract
getParent()TeamSpeak3_Node_Abstract
getProperty($property, $default=null)TeamSpeak3_Node_Abstract
getStorage($key, $default=null)TeamSpeak3_Node_Abstractprotected
getSymbol()TeamSpeak3_Node_Channelgroup
getUniqueId()TeamSpeak3_Node_Channelgroup
getViewer(TeamSpeak3_Viewer_Interface $viewer)TeamSpeak3_Node_Abstract
hasChildren()TeamSpeak3_Node_Abstract
hasNext()TeamSpeak3_Node_Abstract
iconDownload()TeamSpeak3_Node_Channelgroup
iconGetName($key)TeamSpeak3_Node_Abstract
iconIsLocal($key)TeamSpeak3_Node_Abstract
key()TeamSpeak3_Node_Abstract
message($msg)TeamSpeak3_Node_Channelgroup
next()TeamSpeak3_Node_Abstract
offsetExists($offset)TeamSpeak3_Node_Abstract
offsetGet($offset)TeamSpeak3_Node_Abstract
offsetSet($offset, $value)TeamSpeak3_Node_Abstract
offsetUnset($offset)TeamSpeak3_Node_Abstract
permAssign($permid, $permvalue)TeamSpeak3_Node_Channelgroup
permAssignByName($permname, $permvalue)TeamSpeak3_Node_Channelgroup
permList($permsid=FALSE)TeamSpeak3_Node_Channelgroup
permRemove($permid)TeamSpeak3_Node_Channelgroup
permRemoveByName($permname)TeamSpeak3_Node_Channelgroup
prepare($cmd, array $params=array())TeamSpeak3_Node_Abstract
privilegeKeyCreate($cid, $description=null, $customset=null)TeamSpeak3_Node_Channelgroup
rename($name)TeamSpeak3_Node_Channelgroup
request($cmd, $throw=TRUE)TeamSpeak3_Node_Abstract
resetNodeInfo()TeamSpeak3_Node_Abstractprotected
resetNodeList()TeamSpeak3_Node_Abstractprotected
rewind()TeamSpeak3_Node_Abstract
setStorage($key, $val)TeamSpeak3_Node_Abstractprotected
toArray()TeamSpeak3_Node_Abstract
tokenCreate($cid, $description=null, $customset=null)TeamSpeak3_Node_Channelgroup
toString()TeamSpeak3_Node_Abstract
valid()TeamSpeak3_Node_Abstract
verifyNodeList()TeamSpeak3_Node_Abstractprotected
+
+ + + + diff --git a/lib/docs/html/class_team_speak3___node___channelgroup.html b/lib/docs/html/class_team_speak3___node___channelgroup.html new file mode 100644 index 0000000..35afbfd --- /dev/null +++ b/lib/docs/html/class_team_speak3___node___channelgroup.html @@ -0,0 +1,2806 @@ + + + + + + +TeamSpeak 3 PHP Framework: TeamSpeak3_Node_Channelgroup Class Reference + + + + + + + + + + + + + +
+
+ + + + + + + +
+
TeamSpeak 3 PHP Framework +  1.1.23 +
+
Copyright © Planet TeamSpeak. All rights reserved.
+
+
+ + + + + +
+
+ +
+
+
+ +
+ + + + +
+ +
+ +
+ +
+
TeamSpeak3_Node_Channelgroup Class Reference
+
+
+ +

Class describing a TeamSpeak 3 channel group and all it's parameters. + More...

+
+ + Inheritance diagram for TeamSpeak3_Node_Channelgroup:
+
+
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +

+Public Member Functions

 __construct (TeamSpeak3_Node_Server $server, array $info, $index="cgid")
 The TeamSpeak3_Node_Channelgroup constructor. More...
 
 rename ($name)
 Renames the channel group specified. More...
 
 delete ($force=FALSE)
 Deletes the channel group. More...
 
 copy ($name=null, $tcgid=0, $type=TeamSpeak3::GROUP_DBTYPE_REGULAR)
 Creates a copy of the channel group and returns the new groups ID. More...
 
 permList ($permsid=FALSE)
 Returns a list of permissions assigned to the channel group. More...
 
 permAssign ($permid, $permvalue)
 Adds a set of specified permissions to the channel group. More...
 
 permAssignByName ($permname, $permvalue)
 Alias for permAssign(). More...
 
 permRemove ($permid)
 Removes a set of specified permissions from the channel group. More...
 
 permRemoveByName ($permname)
 Alias for permAssign(). More...
 
 clientList ()
 Returns a list of clients assigned to the server group specified. More...
 
 tokenCreate ($cid, $description=null, $customset=null)
 Alias for privilegeKeyCreate(). More...
 
 privilegeKeyCreate ($cid, $description=null, $customset=null)
 Creates a new privilege key (token) for the channel group and returns the key. More...
 
 message ($msg)
 Sends a text message to all clients residing in the channel group on the virtual server. More...
 
 iconDownload ()
 Downloads and returns the channel groups icon file content. More...
 
 getUniqueId ()
 Returns a unique identifier for the node which can be used as a HTML property. More...
 
 getIcon ()
 Returns the name of a possible icon to display the node object. More...
 
 getSymbol ()
 Returns a symbol representing the node. More...
 
 __toString ()
 Returns a string representation of this node. More...
 
 request ($cmd, $throw=TRUE)
 Sends a prepared command to the server and returns the result. More...
 
 prepare ($cmd, array $params=array())
 Uses given parameters and returns a prepared ServerQuery command. More...
 
 execute ($cmd, array $params=array())
 Prepares and executes a ServerQuery command and returns the result. More...
 
 getParent ()
 Returns the parent object of the current node. More...
 
 getId ()
 Returns the primary ID of the current node. More...
 
 iconIsLocal ($key)
 Returns TRUE if the node icon has a local source. More...
 
 iconGetName ($key)
 Returns the internal path of the node icon. More...
 
 getClass ($prefix="ts3_")
 Returns a possible classname for the node which can be used as a HTML property. More...
 
 getViewer (TeamSpeak3_Viewer_Interface $viewer)
 Returns the HTML code to display a TeamSpeak 3 viewer. More...
 
 getInfo ($extend=TRUE, $convert=FALSE)
 Returns all information available on this node. More...
 
 getProperty ($property, $default=null)
 Returns the specified property or a pre-defined default value from the node info array. More...
 
 toString ()
 Returns a string representation of this node. More...
 
 toArray ()
 Returns an assoc array filled with current node info properties. More...
 
 __call ($name, array $args)
 Called whenever we're using an unknown method. More...
 
 __sleep ()
 Commit pending data. More...
 
 count ()
 
 current ()
 
 getChildren ()
 
 hasChildren ()
 
 hasNext ()
 
 key ()
 
 valid ()
 
 next ()
 
 rewind ()
 
 offsetExists ($offset)
 
 offsetGet ($offset)
 
 offsetSet ($offset, $value)
 
 offsetUnset ($offset)
 
 __get ($offset)
 
 __set ($offset, $value)
 
+ + + + + + + + + + + + + + + + + + + + + + + +

+Protected Member Functions

 fetchNodeList ()
 
 filterList (array $nodes=array(), array $rules=array())
 Filters given node list array using specified filter rules. More...
 
 setStorage ($key, $val)
 Writes data to the internal storage array. More...
 
 getStorage ($key, $default=null)
 Returns data from the internal storage array. More...
 
 delStorage ($key)
 Deletes data from the internal storage array. More...
 
 fetchNodeInfo ()
 
 resetNodeInfo ()
 
 verifyNodeList ()
 
 resetNodeList ()
 
+ + + + + + + + + + + + + +

+Protected Attributes

 $parent = null
 
 $server = null
 
 $nodeId = 0x00
 
 $nodeList = null
 
 $nodeInfo = array()
 
 $storage = array()
 
+

Detailed Description

+

Class describing a TeamSpeak 3 channel group and all it's parameters.

+ +

Definition at line 32 of file Channelgroup.php.

+

Constructor & Destructor Documentation

+ +
+
+ + + + + + + + + + + + + + + + + + + + + + + + +
TeamSpeak3_Node_Channelgroup::__construct (TeamSpeak3_Node_Server $server,
array $info,
 $index = "cgid" 
)
+
+ +

The TeamSpeak3_Node_Channelgroup constructor.

+
Parameters
+ + + + +
TeamSpeak3_Node_Server$server
array$info
string$index
+
+
+
Exceptions
+ + +
TeamSpeak3_Adapter_ServerQuery_Exception
+
+
+
Returns
TeamSpeak3_Node_Channelgroup
+ +

Definition at line 43 of file Channelgroup.php.

+ +

References TeamSpeak3_Node_Abstract\$server.

+
44  {
+
45  $this->parent = $server;
+
46  $this->nodeInfo = $info;
+
47 
+
48  if(!array_key_exists($index, $this->nodeInfo))
+
49  {
+
50  throw new TeamSpeak3_Adapter_ServerQuery_Exception("invalid groupID", 0xA00);
+
51  }
+
52 
+
53  $this->nodeId = $this->nodeInfo[$index];
+
54  }
+
+
+
+

Member Function Documentation

+ +
+
+ + + + + + + + +
TeamSpeak3_Node_Channelgroup::rename ( $name)
+
+ +

Renames the channel group specified.

+
Parameters
+ + +
string$name
+
+
+
Returns
void
+ +

Definition at line 62 of file Channelgroup.php.

+ +

References TeamSpeak3_Node_Abstract\getId(), and TeamSpeak3_Node_Abstract\getParent().

+
63  {
+
64  return $this->getParent()->channelGroupRename($this->getId(), $name);
+
65  }
+
+
+
+ +
+
+ + + + + + + + +
TeamSpeak3_Node_Channelgroup::delete ( $force = FALSE)
+
+ +

Deletes the channel group.

+

If $force is set to TRUE, the channel group will be deleted even if there are clients within.

+
Parameters
+ + +
boolean$force
+
+
+
Returns
void
+ +

Definition at line 74 of file Channelgroup.php.

+ +

References TeamSpeak3_Node_Abstract\getId(), and TeamSpeak3_Node_Abstract\getParent().

+
75  {
+
76  $this->getParent()->channelGroupDelete($this->getId(), $force);
+
77 
+
78  unset($this);
+
79  }
+
+
+
+ +
+
+ + + + + + + + + + + + + + + + + + + + + + + + +
TeamSpeak3_Node_Channelgroup::copy ( $name = null,
 $tcgid = 0,
 $type = TeamSpeak3::GROUP_DBTYPE_REGULAR 
)
+
+ +

Creates a copy of the channel group and returns the new groups ID.

+
Parameters
+ + + + +
string$name
integer$tcgid
integer$type
+
+
+
Returns
integer
+ +

Definition at line 89 of file Channelgroup.php.

+ +

References TeamSpeak3_Node_Abstract\getId(), and TeamSpeak3_Node_Abstract\getParent().

+
90  {
+
91  return $this->getParent()->channelGroupCopy($this->getId(), $name, $tcgid, $type);
+
92  }
+
+
+
+ +
+
+ + + + + + + + +
TeamSpeak3_Node_Channelgroup::permList ( $permsid = FALSE)
+
+ +

Returns a list of permissions assigned to the channel group.

+
Parameters
+ + +
boolean$permsid
+
+
+
Returns
array
+ +

Definition at line 100 of file Channelgroup.php.

+ +

References TeamSpeak3_Node_Abstract\getId(), and TeamSpeak3_Node_Abstract\getParent().

+
101  {
+
102  return $this->getParent()->channelGroupPermList($this->getId(), $permsid);
+
103  }
+
+
+
+ +
+
+ + + + + + + + + + + + + + + + + + +
TeamSpeak3_Node_Channelgroup::permAssign ( $permid,
 $permvalue 
)
+
+ +

Adds a set of specified permissions to the channel group.

+

Multiple permissions can be added by providing the two parameters of each permission in separate arrays.

+
Parameters
+ + + +
integer$permid
integer$permvalue
+
+
+
Returns
void
+ +

Definition at line 113 of file Channelgroup.php.

+ +

References TeamSpeak3_Node_Abstract\getId(), and TeamSpeak3_Node_Abstract\getParent().

+ +

Referenced by permAssignByName().

+
114  {
+
115  return $this->getParent()->channelGroupPermAssign($this->getId(), $permid, $permvalue);
+
116  }
+
+
+
+ +
+
+ + + + + + + + + + + + + + + + + + +
TeamSpeak3_Node_Channelgroup::permAssignByName ( $permname,
 $permvalue 
)
+
+ +

Alias for permAssign().

+
Deprecated:
+ +

Definition at line 123 of file Channelgroup.php.

+ +

References permAssign().

+
124  {
+
125  return $this->permAssign($permname, $permvalue);
+
126  }
+
+
+
+ +
+
+ + + + + + + + +
TeamSpeak3_Node_Channelgroup::permRemove ( $permid)
+
+ +

Removes a set of specified permissions from the channel group.

+

Multiple permissions can be removed at once.

+
Parameters
+ + +
integer$permid
+
+
+
Returns
void
+ +

Definition at line 135 of file Channelgroup.php.

+ +

References TeamSpeak3_Node_Abstract\getId(), and TeamSpeak3_Node_Abstract\getParent().

+ +

Referenced by permRemoveByName().

+
136  {
+
137  return $this->getParent()->channelGroupPermRemove($this->getId(), $permid);
+
138  }
+
+
+
+ +
+
+ + + + + + + + +
TeamSpeak3_Node_Channelgroup::permRemoveByName ( $permname)
+
+ +

Alias for permAssign().

+
Deprecated:
+ +

Definition at line 145 of file Channelgroup.php.

+ +

References permRemove().

+
146  {
+
147  return $this->permRemove($permname);
+
148  }
+
+
+
+ +
+
+ + + + + + + +
TeamSpeak3_Node_Channelgroup::clientList ()
+
+ +

Returns a list of clients assigned to the server group specified.

+
Returns
array
+ +

Definition at line 155 of file Channelgroup.php.

+ +

References TeamSpeak3_Node_Abstract\getId(), and TeamSpeak3_Node_Abstract\getParent().

+ +

Referenced by fetchNodeList().

+
156  {
+
157  return $this->getParent()->channelGroupClientList($this->getId());
+
158  }
+
+
+
+ +
+
+ + + + + + + + + + + + + + + + + + + + + + + + +
TeamSpeak3_Node_Channelgroup::tokenCreate ( $cid,
 $description = null,
 $customset = null 
)
+
+ +

Alias for privilegeKeyCreate().

+
Deprecated:
+ +

Definition at line 165 of file Channelgroup.php.

+ +

References privilegeKeyCreate().

+
166  {
+
167  return $this->privilegeKeyCreate($cid, $description, $customset);
+
168  }
+
+
+
+ +
+
+ + + + + + + + + + + + + + + + + + + + + + + + +
TeamSpeak3_Node_Channelgroup::privilegeKeyCreate ( $cid,
 $description = null,
 $customset = null 
)
+
+ +

Creates a new privilege key (token) for the channel group and returns the key.

+
Parameters
+ + + + +
integer$cid
string$description
string$customset
+
+
+
Returns
TeamSpeak3_Helper_String
+ +

Definition at line 178 of file Channelgroup.php.

+ +

References TeamSpeak3_Node_Abstract\getId(), TeamSpeak3_Node_Abstract\getParent(), and TeamSpeak3\TOKEN_CHANNELGROUP.

+ +

Referenced by tokenCreate().

+
179  {
+
180  return $this->getParent()->privilegeKeyCreate(TeamSpeak3::TOKEN_CHANNELGROUP, $this->getId(), $cid, $description, $customset);
+
181  }
+
+
+
+ +
+
+ + + + + + + + +
TeamSpeak3_Node_Channelgroup::message ( $msg)
+
+ +

Sends a text message to all clients residing in the channel group on the virtual server.

+
Parameters
+ + +
string$msg
+
+
+
Returns
void
+ +

Definition at line 189 of file Channelgroup.php.

+ +

References TeamSpeak3_Node_Abstract\execute(), and TeamSpeak3\TEXTMSG_CLIENT.

+
190  {
+
191  foreach($this as $client)
+
192  {
+
193  try
+
194  {
+
195  $this->execute("sendtextmessage", array("msg" => $msg, "target" => $client, "targetmode" => TeamSpeak3::TEXTMSG_CLIENT));
+
196  }
+ +
198  {
+
199  /* ERROR_client_invalid_id */
+
200  if($e->getCode() != 0x0200) throw $e;
+
201  }
+
202  }
+
203  }
+
+
+
+ +
+
+ + + + + + + +
TeamSpeak3_Node_Channelgroup::iconDownload ()
+
+ +

Downloads and returns the channel groups icon file content.

+
Returns
TeamSpeak3_Helper_String
+ +

Definition at line 210 of file Channelgroup.php.

+ +

References TeamSpeak3\factory(), TeamSpeak3_Node_Abstract\getParent(), TeamSpeak3_Node_Abstract\iconGetName(), and TeamSpeak3_Node_Abstract\iconIsLocal().

+
211  {
+
212  if($this->iconIsLocal("iconid") || $this["iconid"] == 0) return;
+
213 
+
214  $download = $this->getParent()->transferInitDownload(rand(0x0000, 0xFFFF), 0, $this->iconGetName("iconid"));
+
215  $transfer = TeamSpeak3::factory("filetransfer://" . $download["host"] . ":" . $download["port"]);
+
216 
+
217  return $transfer->download($download["ftkey"], $download["size"]);
+
218  }
+
+
+
+ +
+
+ + + + + +
+ + + + + + + +
TeamSpeak3_Node_Channelgroup::fetchNodeList ()
+
+protected
+
+ +

+ +

Definition at line 223 of file Channelgroup.php.

+ +

References clientList(), TeamSpeak3_Node_Abstract\getId(), and TeamSpeak3_Node_Abstract\getParent().

+
224  {
+
225  $this->nodeList = array();
+
226 
+
227  foreach($this->getParent()->clientList() as $client)
+
228  {
+
229  if($client["client_channel_group_id"] == $this->getId())
+
230  {
+
231  $this->nodeList[] = $client;
+
232  }
+
233  }
+
234  }
+
+
+
+ +
+
+ + + + + + + +
TeamSpeak3_Node_Channelgroup::getUniqueId ()
+
+ +

Returns a unique identifier for the node which can be used as a HTML property.

+
Returns
string
+ +

Definition at line 241 of file Channelgroup.php.

+ +

References TeamSpeak3_Node_Abstract\getId(), and TeamSpeak3_Node_Abstract\getParent().

+
242  {
+
243  return $this->getParent()->getUniqueId() . "_cg" . $this->getId();
+
244  }
+
+
+
+ +
+
+ + + + + + + +
TeamSpeak3_Node_Channelgroup::getIcon ()
+
+ +

Returns the name of a possible icon to display the node object.

+
Returns
string
+ +

Definition at line 251 of file Channelgroup.php.

+
252  {
+
253  return "group_channel";
+
254  }
+
+
+
+ +
+
+ + + + + + + +
TeamSpeak3_Node_Channelgroup::getSymbol ()
+
+ +

Returns a symbol representing the node.

+
Returns
string
+ +

Definition at line 261 of file Channelgroup.php.

+
262  {
+
263  return "%";
+
264  }
+
+
+
+ +
+
+ + + + + + + +
TeamSpeak3_Node_Channelgroup::__toString ()
+
+ +

Returns a string representation of this node.

+
Returns
string
+ +

Definition at line 271 of file Channelgroup.php.

+
272  {
+
273  return (string) $this["name"];
+
274  }
+
+
+
+ +
+
+ + + + + +
+ + + + + + + + + + + + + + + + + + +
TeamSpeak3_Node_Abstract::request ( $cmd,
 $throw = TRUE 
)
+
+inherited
+
+ +

Sends a prepared command to the server and returns the result.

+
Parameters
+ + + +
string$cmd
boolean$throw
+
+
+
Returns
TeamSpeak3_Adapter_ServerQuery_Reply
+ +

Definition at line 71 of file Abstract.php.

+ +

References TeamSpeak3_Node_Abstract\getParent().

+ +

Referenced by TeamSpeak3_Node_Host\bindingList(), TeamSpeak3_Node_Abstract\execute(), TeamSpeak3_Node_Host\fetchNodeInfo(), TeamSpeak3_Node_Host\fetchPermissionList(), TeamSpeak3_Node_Host\logout(), TeamSpeak3_Node_Host\serverList(), TeamSpeak3_Node_Host\version(), and TeamSpeak3_Node_Host\whoami().

+
72  {
+
73  return $this->getParent()->request($cmd, $throw);
+
74  }
+
+
+
+ +
+
+ + + + + +
+ + + + + + + + + + + + + + + + + + +
TeamSpeak3_Node_Abstract::prepare ( $cmd,
array $params = array() 
)
+
+inherited
+
+ +

Uses given parameters and returns a prepared ServerQuery command.

+
Parameters
+ + + +
string$cmd
array$params
+
+
+
Returns
TeamSpeak3_Helper_String
+ +

Definition at line 83 of file Abstract.php.

+ +

References TeamSpeak3_Node_Abstract\getParent().

+ +

Referenced by TeamSpeak3_Node_Abstract\execute().

+
84  {
+
85  return $this->getParent()->prepare($cmd, $params);
+
86  }
+
+
+
+ +
+
+ + + + + +
+ + + + + + + + + + + + + + + + + + +
TeamSpeak3_Node_Abstract::execute ( $cmd,
array $params = array() 
)
+
+inherited
+
+ +

Prepares and executes a ServerQuery command and returns the result.

+
Parameters
+ + + +
string$cmd
array$params
+
+
+
Returns
TeamSpeak3_Adapter_ServerQuery_Reply
+ +

Definition at line 95 of file Abstract.php.

+ +

References TeamSpeak3_Node_Abstract\prepare(), and TeamSpeak3_Node_Abstract\request().

+ +

Referenced by TeamSpeak3_Node_Server\banCreate(), TeamSpeak3_Node_Server\banDelete(), TeamSpeak3_Node_Server\channelClientPermAssign(), TeamSpeak3_Node_Server\channelClientPermList(), TeamSpeak3_Node_Server\channelClientPermRemove(), TeamSpeak3_Node_Server\channelCreate(), TeamSpeak3_Node_Server\channelDelete(), TeamSpeak3_Node_Server\channelDirCreate(), TeamSpeak3_Node_Server\channelFileDelete(), TeamSpeak3_Node_Server\channelFileInfo(), TeamSpeak3_Node_Server\channelFileList(), TeamSpeak3_Node_Server\channelFileRename(), TeamSpeak3_Node_Server\channelGroupClientList(), TeamSpeak3_Node_Server\channelGroupCopy(), TeamSpeak3_Node_Server\channelGroupCreate(), TeamSpeak3_Node_Server\channelGroupDelete(), TeamSpeak3_Node_Server\channelGroupPermAssign(), TeamSpeak3_Node_Server\channelGroupPermList(), TeamSpeak3_Node_Server\channelGroupPermRemove(), TeamSpeak3_Node_Server\channelGroupRename(), TeamSpeak3_Node_Server\channelMove(), TeamSpeak3_Node_Server\channelPermAssign(), TeamSpeak3_Node_Server\channelPermList(), TeamSpeak3_Node_Server\channelPermRemove(), TeamSpeak3_Node_Server\clientBan(), TeamSpeak3_Node_Server\clientCountDb(), TeamSpeak3_Node_Server\clientDeleteDb(), TeamSpeak3_Node_Server\clientFind(), TeamSpeak3_Node_Server\clientFindDb(), TeamSpeak3_Node_Server\clientGetIdsByUid(), TeamSpeak3_Node_Server\clientGetNameByDbid(), TeamSpeak3_Node_Server\clientGetNameByUid(), TeamSpeak3_Node_Server\clientGetServerGroupsByDbid(), TeamSpeak3_Node_Server\clientInfoDb(), TeamSpeak3_Node_Server\clientKick(), TeamSpeak3_Node_Server\clientListDb(), TeamSpeak3_Node_Server\clientModifyDb(), TeamSpeak3_Node_Server\clientMove(), TeamSpeak3_Node_Server\clientPermAssign(), TeamSpeak3_Node_Server\clientPermList(), TeamSpeak3_Node_Server\clientPermRemove(), TeamSpeak3_Node_Server\clientPoke(), TeamSpeak3_Node_Server\clientSetChannelGroup(), TeamSpeak3_Node_Server\complaintCreate(), TeamSpeak3_Node_Server\complaintDelete(), TeamSpeak3_Node_Server\complaintList(), TeamSpeak3_Node_Server\complaintListClear(), TeamSpeak3_Node_Server\customInfo(), TeamSpeak3_Node_Server\customSearch(), TeamSpeak3_Node_Client\fetchNodeInfo(), TeamSpeak3_Node_Channel\fetchNodeInfo(), TeamSpeak3_Node_Client\getClones(), TeamSpeak3_Node_Host\logAdd(), TeamSpeak3_Node_Server\logAdd(), TeamSpeak3_Node_Host\login(), TeamSpeak3_Node_Host\logView(), TeamSpeak3_Node_Server\logView(), TeamSpeak3_Node_Client\message(), message(), TeamSpeak3_Node_Servergroup\message(), TeamSpeak3_Node_Channel\message(), TeamSpeak3_Node_Host\message(), TeamSpeak3_Node_Server\message(), TeamSpeak3_Node_Server\messageCreate(), TeamSpeak3_Node_Server\messageDelete(), TeamSpeak3_Node_Server\messageRead(), TeamSpeak3_Node_Client\modify(), TeamSpeak3_Node_Channel\modify(), TeamSpeak3_Node_Host\modify(), TeamSpeak3_Node_Server\modify(), TeamSpeak3_Node_Server\notifyRegister(), TeamSpeak3_Node_Host\permissionFind(), TeamSpeak3_Node_Client\permOverview(), TeamSpeak3_Node_Server\privilegeKeyCreate(), TeamSpeak3_Node_Server\privilegeKeyDelete(), TeamSpeak3_Node_Server\privilegeKeyUse(), TeamSpeak3_Node_Host\selfPermCheck(), TeamSpeak3_Node_Server\selfPermOverview(), TeamSpeak3_Node_Server\selfUpdate(), TeamSpeak3_Node_Server\selfUpdateLogin(), TeamSpeak3_Node_Client\sendPluginCmd(), TeamSpeak3_Node_Channel\sendPluginCmd(), TeamSpeak3_Node_Server\sendPluginCmd(), TeamSpeak3_Node_Host\serverCreate(), TeamSpeak3_Node_Host\serverDelete(), TeamSpeak3_Node_Server\serverGroupClientAdd(), TeamSpeak3_Node_Server\serverGroupClientDel(), TeamSpeak3_Node_Server\serverGroupClientList(), TeamSpeak3_Node_Server\serverGroupCopy(), TeamSpeak3_Node_Server\serverGroupCreate(), TeamSpeak3_Node_Server\serverGroupDelete(), TeamSpeak3_Node_Server\serverGroupPermAssign(), TeamSpeak3_Node_Host\serverGroupPermAutoAssign(), TeamSpeak3_Node_Host\serverGroupPermAutoRemove(), TeamSpeak3_Node_Server\serverGroupPermList(), TeamSpeak3_Node_Server\serverGroupPermRemove(), TeamSpeak3_Node_Server\serverGroupRename(), TeamSpeak3_Node_Host\serverIdGetByPort(), TeamSpeak3_Node_Host\serverSelect(), TeamSpeak3_Node_Host\serverSelectByPort(), TeamSpeak3_Node_Host\serverStart(), TeamSpeak3_Node_Host\serverStop(), TeamSpeak3_Node_Host\serverStopProcess(), TeamSpeak3_Node_Server\tempPasswordCreate(), TeamSpeak3_Node_Server\tempPasswordDelete(), TeamSpeak3_Node_Server\transferInitDownload(), TeamSpeak3_Node_Server\transferInitUpload(), and TeamSpeak3_Node_Server\transferStop().

+
96  {
+
97  return $this->request($this->prepare($cmd, $params));
+
98  }
+
+
+
+ +
+
+ + + + + +
+ + + + + + + +
TeamSpeak3_Node_Abstract::getParent ()
+
+inherited
+
+ +

Returns the parent object of the current node.

+
Returns
TeamSpeak3_Adapter_ServerQuery
+
+TeamSpeak3_Node_Abstract
+ +

Definition at line 106 of file Abstract.php.

+ +

References TeamSpeak3_Node_Abstract\$parent.

+ +

Referenced by TeamSpeak3_Node_Abstract\__call(), TeamSpeak3_Node_Client\addServerGroup(), TeamSpeak3_Node_Client\avatarDownload(), TeamSpeak3_Node_Client\ban(), TeamSpeak3_Node_Server\channelCreate(), TeamSpeak3_Node_Server\channelDelete(), TeamSpeak3_Node_Servergroup\clientAdd(), TeamSpeak3_Node_Servergroup\clientDel(), TeamSpeak3_Node_Channel\clientList(), clientList(), TeamSpeak3_Node_Servergroup\clientList(), TeamSpeak3_Node_Server\clientList(), TeamSpeak3_Node_Server\clientMove(), TeamSpeak3_Node_Channel\clientPermAssign(), TeamSpeak3_Node_Channel\clientPermList(), TeamSpeak3_Node_Channel\clientPermRemove(), TeamSpeak3_Node_Servergroup\copy(), copy(), TeamSpeak3_Node_Client\customInfo(), TeamSpeak3_Node_Servergroup\delete(), delete(), TeamSpeak3_Node_Channel\delete(), TeamSpeak3_Node_Server\delete(), TeamSpeak3_Node_Client\deleteDb(), TeamSpeak3_Node_Channel\dirCreate(), fetchNodeList(), TeamSpeak3_Node_Servergroup\fetchNodeList(), TeamSpeak3_Node_Channel\fetchNodeList(), TeamSpeak3_Node_Channel\fileDelete(), TeamSpeak3_Node_Channel\fileInfo(), TeamSpeak3_Node_Channel\fileList(), TeamSpeak3_Node_Channel\fileRename(), TeamSpeak3_Node_Host\getAdapter(), TeamSpeak3_Node_Host\getAdapterHost(), TeamSpeak3_Node_Host\getAdapterPort(), TeamSpeak3_Node_Channel\getLevel(), TeamSpeak3_Node_Channel\getPathway(), getUniqueId(), TeamSpeak3_Node_Servergroup\getUniqueId(), TeamSpeak3_Node_Client\getUniqueId(), TeamSpeak3_Node_Channel\getUniqueId(), TeamSpeak3_Node_Server\getUniqueId(), iconDownload(), TeamSpeak3_Node_Servergroup\iconDownload(), TeamSpeak3_Node_Client\iconDownload(), TeamSpeak3_Node_Channel\iconDownload(), TeamSpeak3_Node_Client\infoDb(), TeamSpeak3_Node_Channel\isSpacer(), TeamSpeak3_Node_Client\kick(), TeamSpeak3_Node_Client\memberOf(), TeamSpeak3_Node_Channel\message(), TeamSpeak3_Node_Client\modifyDb(), TeamSpeak3_Node_Client\move(), TeamSpeak3_Node_Channel\move(), permAssign(), TeamSpeak3_Node_Servergroup\permAssign(), TeamSpeak3_Node_Client\permAssign(), TeamSpeak3_Node_Channel\permAssign(), TeamSpeak3_Node_Servergroup\permList(), permList(), TeamSpeak3_Node_Client\permList(), TeamSpeak3_Node_Channel\permList(), permRemove(), TeamSpeak3_Node_Servergroup\permRemove(), TeamSpeak3_Node_Client\permRemove(), TeamSpeak3_Node_Channel\permRemove(), TeamSpeak3_Node_Client\poke(), TeamSpeak3_Node_Abstract\prepare(), privilegeKeyCreate(), TeamSpeak3_Node_Servergroup\privilegeKeyCreate(), TeamSpeak3_Node_Client\remServerGroup(), rename(), TeamSpeak3_Node_Servergroup\rename(), TeamSpeak3_Node_Abstract\request(), TeamSpeak3_Node_Server\request(), TeamSpeak3_Node_Channel\sendPluginCmd(), TeamSpeak3_Node_Client\setChannelGroup(), TeamSpeak3_Node_Server\snapshotDeploy(), TeamSpeak3_Node_Channel\spacerGetAlign(), TeamSpeak3_Node_Channel\spacerGetType(), TeamSpeak3_Node_Server\start(), TeamSpeak3_Node_Server\stop(), TeamSpeak3_Node_Channel\subChannelList(), TeamSpeak3_Node_Server\transferInitDownload(), and TeamSpeak3_Node_Server\transferInitUpload().

+
107  {
+
108  return $this->parent;
+
109  }
+
+
+
+ +
+
+ + + + + +
+ + + + + + + +
TeamSpeak3_Node_Abstract::getId ()
+
+inherited
+
+ +

Returns the primary ID of the current node.

+
Returns
integer
+ +

Definition at line 116 of file Abstract.php.

+ +

References TeamSpeak3_Node_Abstract\$nodeId.

+ +

Referenced by TeamSpeak3_Node_Client\ban(), TeamSpeak3_Node_Server\channelDelete(), TeamSpeak3_Node_Server\channelFileList(), TeamSpeak3_Node_Servergroup\clientAdd(), TeamSpeak3_Node_Servergroup\clientDel(), TeamSpeak3_Node_Channel\clientList(), clientList(), TeamSpeak3_Node_Servergroup\clientList(), TeamSpeak3_Node_Channel\clientPermAssign(), TeamSpeak3_Node_Channel\clientPermList(), TeamSpeak3_Node_Channel\clientPermRemove(), TeamSpeak3_Node_Servergroup\copy(), copy(), delete(), TeamSpeak3_Node_Servergroup\delete(), TeamSpeak3_Node_Channel\delete(), TeamSpeak3_Node_Server\delete(), TeamSpeak3_Node_Channel\dirCreate(), TeamSpeak3_Node_Client\fetchNodeInfo(), TeamSpeak3_Node_Channel\fetchNodeInfo(), fetchNodeList(), TeamSpeak3_Node_Servergroup\fetchNodeList(), TeamSpeak3_Node_Channel\fetchNodeList(), TeamSpeak3_Node_Channel\fileDelete(), TeamSpeak3_Node_Channel\fileInfo(), TeamSpeak3_Node_Channel\fileList(), TeamSpeak3_Node_Channel\fileRename(), TeamSpeak3_Node_Channel\getLevel(), TeamSpeak3_Node_Channel\getPathway(), getUniqueId(), TeamSpeak3_Node_Servergroup\getUniqueId(), TeamSpeak3_Node_Client\getUniqueId(), TeamSpeak3_Node_Channel\getUniqueId(), TeamSpeak3_Node_Server\getUniqueId(), TeamSpeak3_Node_Client\kick(), TeamSpeak3_Node_Client\message(), TeamSpeak3_Node_Channel\message(), TeamSpeak3_Node_Server\message(), TeamSpeak3_Node_Client\modify(), TeamSpeak3_Node_Channel\modify(), TeamSpeak3_Node_Client\move(), TeamSpeak3_Node_Channel\move(), permAssign(), TeamSpeak3_Node_Servergroup\permAssign(), TeamSpeak3_Node_Channel\permAssign(), permList(), TeamSpeak3_Node_Servergroup\permList(), TeamSpeak3_Node_Channel\permList(), permRemove(), TeamSpeak3_Node_Servergroup\permRemove(), TeamSpeak3_Node_Channel\permRemove(), TeamSpeak3_Node_Client\poke(), privilegeKeyCreate(), TeamSpeak3_Node_Servergroup\privilegeKeyCreate(), rename(), TeamSpeak3_Node_Servergroup\rename(), TeamSpeak3_Node_Server\request(), TeamSpeak3_Node_Client\sendPluginCmd(), TeamSpeak3_Node_Channel\sendPluginCmd(), TeamSpeak3_Node_Server\sortGroupList(), TeamSpeak3_Node_Channel\spacerGetAlign(), TeamSpeak3_Node_Channel\spacerGetType(), TeamSpeak3_Node_Server\start(), TeamSpeak3_Node_Server\stop(), and TeamSpeak3_Node_Channel\subChannelList().

+
117  {
+
118  return $this->nodeId;
+
119  }
+
+
+
+ +
+
+ + + + + +
+ + + + + + + + +
TeamSpeak3_Node_Abstract::iconIsLocal ( $key)
+
+inherited
+
+ +

Returns TRUE if the node icon has a local source.

+
Parameters
+ + +
string$key
+
+
+
Returns
boolean
+ +

Definition at line 127 of file Abstract.php.

+ +

Referenced by iconDownload(), TeamSpeak3_Node_Servergroup\iconDownload(), TeamSpeak3_Node_Client\iconDownload(), TeamSpeak3_Node_Channel\iconDownload(), and TeamSpeak3_Node_Server\iconDownload().

+
128  {
+
129  return ($this[$key] > 0 && $this[$key] < 1000) ? TRUE : FALSE;
+
130  }
+
+
+
+ +
+
+ + + + + +
+ + + + + + + + +
TeamSpeak3_Node_Abstract::iconGetName ( $key)
+
+inherited
+
+ +

Returns the internal path of the node icon.

+
Parameters
+ + +
string$key
+
+
+
Returns
TeamSpeak3_Helper_String
+ +

Definition at line 138 of file Abstract.php.

+ +

Referenced by TeamSpeak3_Node_Abstract\getInfo(), iconDownload(), TeamSpeak3_Node_Servergroup\iconDownload(), TeamSpeak3_Node_Client\iconDownload(), TeamSpeak3_Node_Channel\iconDownload(), and TeamSpeak3_Node_Server\iconDownload().

+
139  {
+
140  $iconid = ($this[$key] < 0) ? (pow(2, 32))-($this[$key]*-1) : $this[$key];
+
141 
+
142  return new TeamSpeak3_Helper_String("/icon_" . $iconid);
+
143  }
+
+
+
+ +
+
+ + + + + +
+ + + + + + + + +
TeamSpeak3_Node_Abstract::getClass ( $prefix = "ts3_")
+
+inherited
+
+ +

Returns a possible classname for the node which can be used as a HTML property.

+
Parameters
+ + +
string$prefix
+
+
+
Returns
string
+ +

Definition at line 151 of file Abstract.php.

+ +

References TeamSpeak3_Helper_String\factory().

+
152  {
+
153  if($this instanceof TeamSpeak3_Node_Channel && $this->isSpacer())
+
154  {
+
155  return $prefix . "spacer";
+
156  }
+
157  elseif($this instanceof TeamSpeak3_Node_Client && $this["client_type"])
+
158  {
+
159  return $prefix . "query";
+
160  }
+
161 
+
162  return $prefix . TeamSpeak3_Helper_String::factory(get_class($this))->section("_", 2)->toLower();
+
163  }
+
+
+
+ +
+
+ + + + + +
+ + + + + + + + +
TeamSpeak3_Node_Abstract::getViewer (TeamSpeak3_Viewer_Interface $viewer)
+
+inherited
+
+ +

Returns the HTML code to display a TeamSpeak 3 viewer.

+
Parameters
+ + +
TeamSpeak3_Viewer_Interface$viewer
+
+
+
Returns
string
+ +

Definition at line 192 of file Abstract.php.

+ +

References TeamSpeak3_Viewer_Interface\fetchObject().

+
193  {
+
194  $html = $viewer->fetchObject($this);
+
195 
+
196  $iterator = new RecursiveIteratorIterator($this, RecursiveIteratorIterator::SELF_FIRST);
+
197 
+
198  foreach($iterator as $node)
+
199  {
+
200  $siblings = array();
+
201 
+
202  for($level = 0; $level < $iterator->getDepth(); $level++)
+
203  {
+
204  $siblings[] = ($iterator->getSubIterator($level)->hasNext()) ? 1 : 0;
+
205  }
+
206 
+
207  $siblings[] = (!$iterator->getSubIterator($level)->hasNext()) ? 1 : 0;
+
208 
+
209  $html .= $viewer->fetchObject($node, $siblings);
+
210  }
+
211 
+
212  return $html;
+
213  }
+
+
+
+ +
+
+ + + + + +
+ + + + + + + + + + + + + + + + + + +
TeamSpeak3_Node_Abstract::filterList (array $nodes = array(),
array $rules = array() 
)
+
+protectedinherited
+
+ +

Filters given node list array using specified filter rules.

+
Parameters
+ + + +
array$nodes
array$rules
+
+
+
Returns
array
+ +

Definition at line 222 of file Abstract.php.

+ +

Referenced by TeamSpeak3_Node_Server\channelGroupList(), TeamSpeak3_Node_Server\channelList(), TeamSpeak3_Node_Channel\clientList(), TeamSpeak3_Node_Server\clientList(), TeamSpeak3_Node_Server\serverGroupList(), TeamSpeak3_Node_Host\serverList(), and TeamSpeak3_Node_Channel\subChannelList().

+
223  {
+
224  if(!empty($rules))
+
225  {
+
226  foreach($nodes as $node)
+
227  {
+
228  if(!$node instanceof TeamSpeak3_Node_Abstract) continue;
+
229 
+
230  $props = $node->getInfo(FALSE);
+
231  $props = array_intersect_key($props, $rules);
+
232  $match = TRUE;
+
233 
+
234  foreach($props as $key => $val)
+
235  {
+
236  if($val instanceof TeamSpeak3_Helper_String)
+
237  {
+
238  $match = $val->contains($rules[$key], TRUE);
+
239  }
+
240  else
+
241  {
+
242  $match = $val == $rules[$key];
+
243  }
+
244 
+
245  if($match === FALSE)
+
246  {
+
247  unset($nodes[$node->getId()]);
+
248  }
+
249  }
+
250  }
+
251  }
+
252 
+
253  return $nodes;
+
254  }
+
+
+
+ +
+
+ + + + + +
+ + + + + + + + + + + + + + + + + + +
TeamSpeak3_Node_Abstract::getInfo ( $extend = TRUE,
 $convert = FALSE 
)
+
+inherited
+
+ +

Returns all information available on this node.

+

If $convert is enabled, some property values will be converted to human-readable values.

+
Parameters
+ + + +
boolean$extend
boolean$convert
+
+
+
Returns
array
+ +

Definition at line 264 of file Abstract.php.

+ +

References TeamSpeak3_Node_Abstract\$nodeInfo, TeamSpeak3_Helper_Convert\bytes(), TeamSpeak3_Helper_String\factory(), TeamSpeak3_Node_Abstract\fetchNodeInfo(), TeamSpeak3_Node_Abstract\iconGetName(), TeamSpeak3_Helper_Convert\seconds(), and TeamSpeak3_Helper_Convert\version().

+
265  {
+
266  if($extend)
+
267  {
+
268  $this->fetchNodeInfo();
+
269  }
+
270 
+
271  if($convert)
+
272  {
+
273  $info = $this->nodeInfo;
+
274 
+
275  foreach($info as $key => $val)
+
276  {
+ +
278 
+
279  if($key->contains("_bytes_"))
+
280  {
+
281  $info[$key->toString()] = TeamSpeak3_Helper_Convert::bytes($val);
+
282  }
+
283  elseif($key->contains("_bandwidth_"))
+
284  {
+
285  $info[$key->toString()] = TeamSpeak3_Helper_Convert::bytes($val) . "/s";
+
286  }
+
287  elseif($key->contains("_packets_"))
+
288  {
+
289  $info[$key->toString()] = number_format($val, null, null, ".");
+
290  }
+
291  elseif($key->contains("_packetloss_"))
+
292  {
+
293  $info[$key->toString()] = sprintf("%01.2f", floatval($val->toString())*100) . "%";
+
294  }
+
295  elseif($key->endsWith("_uptime"))
+
296  {
+
297  $info[$key->toString()] = TeamSpeak3_Helper_Convert::seconds($val);
+
298  }
+
299  elseif($key->endsWith("_version"))
+
300  {
+
301  $info[$key->toString()] = TeamSpeak3_Helper_Convert::version($val);
+
302  }
+
303  elseif($key->endsWith("_icon_id"))
+
304  {
+
305  $info[$key->toString()] = $this->iconGetName($key)->filterDigits();
+
306  }
+
307  }
+
308 
+
309  return $info;
+
310  }
+
311 
+
312  return $this->nodeInfo;
+
313  }
+
+
+
+ +
+
+ + + + + +
+ + + + + + + + + + + + + + + + + + +
TeamSpeak3_Node_Abstract::getProperty ( $property,
 $default = null 
)
+
+inherited
+
+ +

Returns the specified property or a pre-defined default value from the node info array.

+
Parameters
+ + + +
string$property
mixed$default
+
+
+
Returns
mixed
+ +

Definition at line 322 of file Abstract.php.

+ +

References TeamSpeak3_Node_Abstract\fetchNodeInfo(), and TeamSpeak3_Node_Abstract\offsetExists().

+ +

Referenced by TeamSpeak3_Node_Server\sortClientList(), and TeamSpeak3_Node_Server\sortGroupList().

+
323  {
+
324  if(!$this->offsetExists($property))
+
325  {
+
326  $this->fetchNodeInfo();
+
327  }
+
328 
+
329  if(!$this->offsetExists($property))
+
330  {
+
331  return $default;
+
332  }
+
333 
+
334  return $this->nodeInfo[(string) $property];
+
335  }
+
+
+
+ +
+
+ + + + + +
+ + + + + + + +
TeamSpeak3_Node_Abstract::toString ()
+
+inherited
+
+ +

Returns a string representation of this node.

+
Returns
string
+ +

Definition at line 352 of file Abstract.php.

+ +

References TeamSpeak3_Node_Abstract\__toString().

+
353  {
+
354  return $this->__toString();
+
355  }
+
+
+
+ +
+
+ + + + + +
+ + + + + + + +
TeamSpeak3_Node_Abstract::toArray ()
+
+inherited
+
+ +

Returns an assoc array filled with current node info properties.

+
Returns
array
+ +

Definition at line 362 of file Abstract.php.

+ +

References TeamSpeak3_Node_Abstract\$nodeList.

+ +

Referenced by TeamSpeak3_Node_Server\channelFileInfo().

+
363  {
+
364  return $this->nodeList;
+
365  }
+
+
+
+ +
+
+ + + + + +
+ + + + + + + + + + + + + + + + + + +
TeamSpeak3_Node_Abstract::__call ( $name,
array $args 
)
+
+inherited
+
+ +

Called whenever we're using an unknown method.

+
Parameters
+ + + +
string$name
array$args
+
+
+
Exceptions
+ + +
TeamSpeak3_Node_Exception
+
+
+
Returns
mixed
+ +

Definition at line 375 of file Abstract.php.

+ +

References TeamSpeak3_Node_Abstract\getParent().

+
376  {
+
377  if($this->getParent() instanceof TeamSpeak3_Node_Abstract)
+
378  {
+
379  return call_user_func_array(array($this->getParent(), $name), $args);
+
380  }
+
381 
+
382  throw new TeamSpeak3_Node_Exception("node method '" . $name . "()' does not exist");
+
383  }
+
+
+
+ +
+
+ + + + + +
+ + + + + + + + + + + + + + + + + + +
TeamSpeak3_Node_Abstract::setStorage ( $key,
 $val 
)
+
+protectedinherited
+
+ +

Writes data to the internal storage array.

+
Parameters
+ + + +
string$key
mixed$val
+
+
+
Returns
void
+ +

Definition at line 392 of file Abstract.php.

+ +

Referenced by TeamSpeak3_Node_Host\login(), TeamSpeak3_Node_Host\serverSelect(), TeamSpeak3_Node_Host\serverSelectByPort(), TeamSpeak3_Node_Host\setExcludeQueryClients(), TeamSpeak3_Node_Host\setLoadClientlistFirst(), TeamSpeak3_Node_Host\setPredefinedQueryName(), and TeamSpeak3_Node_Host\setUseOfflineAsVirtual().

+
393  {
+
394  $this->storage[$key] = $val;
+
395  }
+
+
+
+ +
+
+ + + + + +
+ + + + + + + + + + + + + + + + + + +
TeamSpeak3_Node_Abstract::getStorage ( $key,
 $default = null 
)
+
+protectedinherited
+
+ +

Returns data from the internal storage array.

+
Parameters
+ + + +
string$key
mixed$default
+
+
+
Returns
mixed
+ +

Definition at line 404 of file Abstract.php.

+ +

Referenced by TeamSpeak3_Node_Host\__wakeup().

+
405  {
+
406  return (array_key_exists($key, $this->storage) && !empty($this->storage[$key])) ? $this->storage[$key] : $default;
+
407  }
+
+
+
+ +
+
+ + + + + +
+ + + + + + + + +
TeamSpeak3_Node_Abstract::delStorage ( $key)
+
+protectedinherited
+
+ +

Deletes data from the internal storage array.

+
Parameters
+ + +
string$key
+
+
+
Returns
void
+ +

Definition at line 415 of file Abstract.php.

+ +

Referenced by TeamSpeak3_Node_Host\logout(), and TeamSpeak3_Node_Host\serverDeselect().

+
416  {
+
417  unset($this->storage[$key]);
+
418  }
+
+
+
+ +
+
+ + + + + +
+ + + + + + + +
TeamSpeak3_Node_Abstract::__sleep ()
+
+inherited
+
+ +

Commit pending data.

+
Returns
array
+ +

Definition at line 425 of file Abstract.php.

+
426  {
+
427  return array("parent", "storage", "nodeId");
+
428  }
+
+
+
+ +
+
+ + + + + +
+ + + + + + + +
TeamSpeak3_Node_Abstract::fetchNodeInfo ()
+
+protectedinherited
+
+ +

+ +

Definition at line 441 of file Abstract.php.

+ +

Referenced by TeamSpeak3_Node_Abstract\getInfo(), TeamSpeak3_Node_Abstract\getProperty(), and TeamSpeak3_Node_Abstract\offsetGet().

+
442  {
+
443  return;
+
444  }
+
+
+
+ +
+
+ + + + + +
+ + + + + + + +
TeamSpeak3_Node_Abstract::resetNodeInfo ()
+
+protectedinherited
+
+ +

+ +

Definition at line 449 of file Abstract.php.

+ +

Referenced by TeamSpeak3_Node_Client\modify(), TeamSpeak3_Node_Channel\modify(), TeamSpeak3_Node_Host\modify(), and TeamSpeak3_Node_Server\modify().

+
450  {
+
451  $this->nodeInfo = array();
+
452  }
+
+
+
+ +
+
+ + + + + +
+ + + + + + + +
TeamSpeak3_Node_Abstract::verifyNodeList ()
+
+protectedinherited
+
+
+ +
+
+ + + + + +
+ + + + + + + +
TeamSpeak3_Node_Abstract::resetNodeList ()
+
+protectedinherited
+
+
+ +
+
+ + + + + +
+ + + + + + + +
TeamSpeak3_Node_Abstract::count ()
+
+inherited
+
+
+ + + +
+
+ + + + + +
+ + + + + + + +
TeamSpeak3_Node_Abstract::getChildren ()
+
+inherited
+
+ +

+ +

Definition at line 496 of file Abstract.php.

+ +

References TeamSpeak3_Node_Abstract\current(), and TeamSpeak3_Node_Abstract\verifyNodeList().

+
497  {
+
498  $this->verifyNodeList();
+
499 
+
500  return $this->current();
+
501  }
+
+
+
+ +
+
+ + + + + +
+ + + + + + + +
TeamSpeak3_Node_Abstract::hasChildren ()
+
+inherited
+
+ +

+ +

Definition at line 506 of file Abstract.php.

+ +

References TeamSpeak3_Node_Abstract\current(), and TeamSpeak3_Node_Abstract\verifyNodeList().

+
507  {
+
508  $this->verifyNodeList();
+
509 
+
510  return $this->current()->count() > 0;
+
511  }
+
+
+
+ +
+
+ + + + + +
+ + + + + + + +
TeamSpeak3_Node_Abstract::hasNext ()
+
+inherited
+
+ +

+ +

Definition at line 516 of file Abstract.php.

+ +

References TeamSpeak3_Node_Abstract\count(), TeamSpeak3_Node_Abstract\key(), and TeamSpeak3_Node_Abstract\verifyNodeList().

+
517  {
+
518  $this->verifyNodeList();
+
519 
+
520  return $this->key()+1 < $this->count();
+
521  }
+
+
+
+ +
+
+ + + + + +
+ + + + + + + +
TeamSpeak3_Node_Abstract::key ()
+
+inherited
+
+ +

+ +

Definition at line 526 of file Abstract.php.

+ +

References TeamSpeak3_Node_Abstract\verifyNodeList().

+ +

Referenced by TeamSpeak3_Node_Abstract\hasNext(), and TeamSpeak3_Node_Abstract\valid().

+
527  {
+
528  $this->verifyNodeList();
+
529 
+
530  return key($this->nodeList);
+
531  }
+
+
+
+ +
+
+ + + + + +
+ + + + + + + +
TeamSpeak3_Node_Abstract::valid ()
+
+inherited
+
+ +

+ +

Definition at line 536 of file Abstract.php.

+ +

References TeamSpeak3_Node_Abstract\key(), and TeamSpeak3_Node_Abstract\verifyNodeList().

+
537  {
+
538  $this->verifyNodeList();
+
539 
+
540  return $this->key() !== null;
+
541  }
+
+
+
+ +
+
+ + + + + +
+ + + + + + + +
TeamSpeak3_Node_Abstract::next ()
+
+inherited
+
+ +

+ +

Definition at line 546 of file Abstract.php.

+ +

References TeamSpeak3_Node_Abstract\verifyNodeList().

+
547  {
+
548  $this->verifyNodeList();
+
549 
+
550  return next($this->nodeList);
+
551  }
+
+
+
+ +
+
+ + + + + +
+ + + + + + + +
TeamSpeak3_Node_Abstract::rewind ()
+
+inherited
+
+ +

+ +

Definition at line 556 of file Abstract.php.

+ +

References TeamSpeak3_Node_Abstract\verifyNodeList().

+
557  {
+
558  $this->verifyNodeList();
+
559 
+
560  return reset($this->nodeList);
+
561  }
+
+
+
+ +
+
+ + + + + +
+ + + + + + + + +
TeamSpeak3_Node_Abstract::offsetExists ( $offset)
+
+inherited
+
+ +

+ +

Definition at line 566 of file Abstract.php.

+ +

Referenced by TeamSpeak3_Node_Abstract\getProperty(), and TeamSpeak3_Node_Abstract\offsetGet().

+
567  {
+
568  return array_key_exists((string) $offset, $this->nodeInfo) ? TRUE : FALSE;
+
569  }
+
+
+
+ +
+
+ + + + + +
+ + + + + + + + +
TeamSpeak3_Node_Abstract::offsetGet ( $offset)
+
+inherited
+
+ +

+ +

Definition at line 574 of file Abstract.php.

+ +

References TeamSpeak3_Node_Abstract\fetchNodeInfo(), and TeamSpeak3_Node_Abstract\offsetExists().

+ +

Referenced by TeamSpeak3_Node_Abstract\__get().

+
575  {
+
576  if(!$this->offsetExists($offset))
+
577  {
+
578  $this->fetchNodeInfo();
+
579  }
+
580 
+
581  if(!$this->offsetExists($offset))
+
582  {
+
583  throw new TeamSpeak3_Adapter_ServerQuery_Exception("invalid parameter", 0x602);
+
584  }
+
585 
+
586  return $this->nodeInfo[(string) $offset];
+
587  }
+
+
+
+ +
+
+ + + + + +
+ + + + + + + + + + + + + + + + + + +
TeamSpeak3_Node_Abstract::offsetSet ( $offset,
 $value 
)
+
+inherited
+
+ +

+ +

Definition at line 592 of file Abstract.php.

+ +

Referenced by TeamSpeak3_Node_Abstract\__set().

+
593  {
+
594  if(method_exists($this, "modify"))
+
595  {
+
596  return $this->modify(array((string) $offset => $value));
+
597  }
+
598 
+
599  throw new TeamSpeak3_Node_Exception("node '" . get_class($this) . "' is read only");
+
600  }
+
+
+
+ +
+
+ + + + + +
+ + + + + + + + +
TeamSpeak3_Node_Abstract::offsetUnset ( $offset)
+
+inherited
+
+ +

+ +

Definition at line 605 of file Abstract.php.

+
606  {
+
607  unset($this->nodeInfo[(string) $offset]);
+
608  }
+
+
+
+ +
+
+ + + + + +
+ + + + + + + + +
TeamSpeak3_Node_Abstract::__get ( $offset)
+
+inherited
+
+ +

+ +

Definition at line 613 of file Abstract.php.

+ +

References TeamSpeak3_Node_Abstract\offsetGet().

+
614  {
+
615  return $this->offsetGet($offset);
+
616  }
+
+
+
+ +
+
+ + + + + +
+ + + + + + + + + + + + + + + + + + +
TeamSpeak3_Node_Abstract::__set ( $offset,
 $value 
)
+
+inherited
+
+ +

+ +

Definition at line 621 of file Abstract.php.

+ +

References TeamSpeak3_Node_Abstract\offsetSet().

+
622  {
+
623  $this->offsetSet($offset, $value);
+
624  }
+
+
+
+

Member Data Documentation

+ +
+
+ + + + + +
+ + + + +
TeamSpeak3_Node_Abstract::$parent = null
+
+protectedinherited
+
+ +

+ +

Definition at line 37 of file Abstract.php.

+ +

Referenced by TeamSpeak3_Node_Abstract\getParent().

+ +
+
+ + + +
+
+ + + + + +
+ + + + +
TeamSpeak3_Node_Abstract::$nodeId = 0x00
+
+protectedinherited
+
+ +

+ +

Definition at line 47 of file Abstract.php.

+ +

Referenced by TeamSpeak3_Node_Abstract\getId().

+ +
+
+ +
+
+ + + + + +
+ + + + +
TeamSpeak3_Node_Abstract::$nodeList = null
+
+protectedinherited
+
+ +

+ +

Definition at line 52 of file Abstract.php.

+ +

Referenced by TeamSpeak3_Node_Abstract\toArray().

+ +
+
+ +
+
+ + + + + +
+ + + + +
TeamSpeak3_Node_Abstract::$nodeInfo = array()
+
+protectedinherited
+
+ +

+ +

Definition at line 57 of file Abstract.php.

+ +

Referenced by TeamSpeak3_Node_Abstract\getInfo().

+ +
+
+ +
+
+ + + + + +
+ + + + +
TeamSpeak3_Node_Abstract::$storage = array()
+
+protectedinherited
+
+ +

+ +

Definition at line 62 of file Abstract.php.

+ +
+
+
The documentation for this class was generated from the following file: +
+
+ + + + diff --git a/lib/docs/html/class_team_speak3___node___channelgroup.js b/lib/docs/html/class_team_speak3___node___channelgroup.js new file mode 100644 index 0000000..2282582 --- /dev/null +++ b/lib/docs/html/class_team_speak3___node___channelgroup.js @@ -0,0 +1,66 @@ +var class_team_speak3___node___channelgroup = +[ + [ "__construct", "class_team_speak3___node___channelgroup.html#a1ff88f65f4b500b3cd187ce454b7e913", null ], + [ "rename", "class_team_speak3___node___channelgroup.html#a11ced87a844806dd40f6c51efb1e3e15", null ], + [ "delete", "class_team_speak3___node___channelgroup.html#a1e4959ff64841c33000f63b36eced974", null ], + [ "copy", "class_team_speak3___node___channelgroup.html#a338c5784a7d15055685065da491bcc1b", null ], + [ "permList", "class_team_speak3___node___channelgroup.html#af7b11f19a1f547f247e32d4f70c42119", null ], + [ "permAssign", "class_team_speak3___node___channelgroup.html#a272eceba9a34038a77e9a3ba64459e9c", null ], + [ "permAssignByName", "class_team_speak3___node___channelgroup.html#a9c4b8d414bda3f3abb8b6921a7f70a07", null ], + [ "permRemove", "class_team_speak3___node___channelgroup.html#a534837db1e4d6add77dedcb5a3ddf1eb", null ], + [ "permRemoveByName", "class_team_speak3___node___channelgroup.html#a242cba4ec6265ae655433b3a3d13f24b", null ], + [ "clientList", "class_team_speak3___node___channelgroup.html#a2ba7fddc0192be2c8f58a643d706780c", null ], + [ "tokenCreate", "class_team_speak3___node___channelgroup.html#a02e50c4cf44fa59fe42494f168fea441", null ], + [ "privilegeKeyCreate", "class_team_speak3___node___channelgroup.html#a70accf5a9d96f0dbe91ee28541bd5eba", null ], + [ "message", "class_team_speak3___node___channelgroup.html#ac37f09fe4b9291a0b2062e910d617b83", null ], + [ "iconDownload", "class_team_speak3___node___channelgroup.html#a981a4c5601d67abd85b1a8dd41faf445", null ], + [ "fetchNodeList", "class_team_speak3___node___channelgroup.html#aa4c0c3d9766097b60e5a6e2a4937bd7c", null ], + [ "getUniqueId", "class_team_speak3___node___channelgroup.html#a9a64eeb8d1df8872244cd8875460047a", null ], + [ "getIcon", "class_team_speak3___node___channelgroup.html#a9c90aaa04b378dab3f24eb297a9951d3", null ], + [ "getSymbol", "class_team_speak3___node___channelgroup.html#ae0bc51c79f86fc58f7900d67fe86ae8a", null ], + [ "__toString", "class_team_speak3___node___channelgroup.html#a07f4314251dafde96cf16462786c91de", null ], + [ "request", "class_team_speak3___node___channelgroup.html#a35dcdb8a7b62d7990307bfb95ce3937c", null ], + [ "prepare", "class_team_speak3___node___channelgroup.html#a6589a4fedd410e9cdb55fe20abc410c0", null ], + [ "execute", "class_team_speak3___node___channelgroup.html#af6811efc5065b8aadfd6792334ea6977", null ], + [ "getParent", "class_team_speak3___node___channelgroup.html#a44618fb948562e89515330e65d08da9a", null ], + [ "getId", "class_team_speak3___node___channelgroup.html#a4a0a5545abc2460d1d9b3d6b52d07cbe", null ], + [ "iconIsLocal", "class_team_speak3___node___channelgroup.html#aa78cba098574598dd9c0331cac1f39a1", null ], + [ "iconGetName", "class_team_speak3___node___channelgroup.html#a02ce34dce8fbf7881ce2323f7af0dca3", null ], + [ "getClass", "class_team_speak3___node___channelgroup.html#af6e1416ad2e568f48ff0d85b15b2a673", null ], + [ "getViewer", "class_team_speak3___node___channelgroup.html#a3d3f27dab5569edf3a737be080e7c8bc", null ], + [ "filterList", "class_team_speak3___node___channelgroup.html#ad826df3c71029ca48839dbe9aa3559b8", null ], + [ "getInfo", "class_team_speak3___node___channelgroup.html#af63ae54f10c02ec6b1033425f795fef4", null ], + [ "getProperty", "class_team_speak3___node___channelgroup.html#a585728537b56194aeab30b0316126b89", null ], + [ "toString", "class_team_speak3___node___channelgroup.html#ac1b521aa7f9871103da5cbb5d3330125", null ], + [ "toArray", "class_team_speak3___node___channelgroup.html#acf3c56763859b8adb21379f0cc6394ad", null ], + [ "__call", "class_team_speak3___node___channelgroup.html#a63fb203f511e99625428f70f0525950c", null ], + [ "setStorage", "class_team_speak3___node___channelgroup.html#a13303ca9275df184348ed7363d9d7c9a", null ], + [ "getStorage", "class_team_speak3___node___channelgroup.html#a5a6888304aca8d5f12fecb460b0ef6d2", null ], + [ "delStorage", "class_team_speak3___node___channelgroup.html#afbed20ee78d7e5a38097078dd91e70fd", null ], + [ "__sleep", "class_team_speak3___node___channelgroup.html#a19b5c8aaac5ef0af2f1393bffea186c5", null ], + [ "fetchNodeInfo", "class_team_speak3___node___channelgroup.html#a10158df40ca8030d5d0e3c464154b988", null ], + [ "resetNodeInfo", "class_team_speak3___node___channelgroup.html#a266578bece0506453e1f1bfba1f08966", null ], + [ "verifyNodeList", "class_team_speak3___node___channelgroup.html#ac66aeb30418e385a5727c191bb8df87d", null ], + [ "resetNodeList", "class_team_speak3___node___channelgroup.html#a9ead519e8396990ba30d79d6bed9d286", null ], + [ "count", "class_team_speak3___node___channelgroup.html#ad22d04a2800ae672f6117de3afb0e9c4", null ], + [ "current", "class_team_speak3___node___channelgroup.html#a1c78dbb54df73f8c5dabe41ebd476207", null ], + [ "getChildren", "class_team_speak3___node___channelgroup.html#a4b9dee48bb72f0eab8b9d4b0ea25c5f4", null ], + [ "hasChildren", "class_team_speak3___node___channelgroup.html#a7769506879dac3170344d8e59218b644", null ], + [ "hasNext", "class_team_speak3___node___channelgroup.html#ad9aee4153360fd8139f6b0d68efff56f", null ], + [ "key", "class_team_speak3___node___channelgroup.html#adb87ddbef3247f346c2623f4d91981a1", null ], + [ "valid", "class_team_speak3___node___channelgroup.html#a1b0100e4a548e9464d75dcbfe6ac297a", null ], + [ "next", "class_team_speak3___node___channelgroup.html#a3273e5078ee49a4bd55620327ed09a5e", null ], + [ "rewind", "class_team_speak3___node___channelgroup.html#a9c416b77eeea1ecec6652936703d9ff7", null ], + [ "offsetExists", "class_team_speak3___node___channelgroup.html#ad0d64388e2a374203fa16760b923b087", null ], + [ "offsetGet", "class_team_speak3___node___channelgroup.html#a716e7512816cf490e5a16ec307f7d889", null ], + [ "offsetSet", "class_team_speak3___node___channelgroup.html#a5e9be0418e0cc969d47f4b7475adb21d", null ], + [ "offsetUnset", "class_team_speak3___node___channelgroup.html#a732408c9a027db531af8ecce82401c07", null ], + [ "__get", "class_team_speak3___node___channelgroup.html#ac8ab685826ff08e853de2aebad9df459", null ], + [ "__set", "class_team_speak3___node___channelgroup.html#a14930274e5498a5a8816ef751ff87946", null ], + [ "$parent", "class_team_speak3___node___channelgroup.html#a14a79cc9ca202ba4dbfc054f0c18583f", null ], + [ "$server", "class_team_speak3___node___channelgroup.html#acadc746cd7eb244d61f195494924f6b8", null ], + [ "$nodeId", "class_team_speak3___node___channelgroup.html#ac1bdee23c7d066edf3d6cb8e75999887", null ], + [ "$nodeList", "class_team_speak3___node___channelgroup.html#a37b39fa104ce36c0f0ea142934c05346", null ], + [ "$nodeInfo", "class_team_speak3___node___channelgroup.html#a50699be5fe1e43f7ae2e528db3c1098b", null ], + [ "$storage", "class_team_speak3___node___channelgroup.html#a33efbacf1a9aa094ccc39b0b25f3d369", null ] +]; \ No newline at end of file diff --git a/lib/docs/html/class_team_speak3___node___channelgroup.png b/lib/docs/html/class_team_speak3___node___channelgroup.png new file mode 100644 index 0000000000000000000000000000000000000000..77b6bca2f15da41757211f43cb9143fb42197017 GIT binary patch literal 1924 zcmbuAeKga19LJaHGAgX=P_|uWGY^&Lta1u%*K90Vveqa?&$1y#N$OWE3gszzNJ=zM zT|*;ALsQE`$wfuYZpaezOltSH&OP`3)9u`I?&qA}@B8_F&gXN!pU?O8KIePMgW|GW zeYH9S0$J`##Ct*@Dgfwn)E0w(S6g)paMAN{+d)t$6rlTdaDo(Bn+ST}zWVz5boa^| z;8rcvlR|}nNlNQ{y2Ba*QC;bZciO>TG}0>z?#F34O4=woU%m#_ES^R682cM*5&G`p zw400dqh8D()w>{Zqxm*iE<4!Yh}B1-TDPWiIh+aRKvDn~h1zIj zIO~W|BUJUbU|e(>lP^G_vhT;ub+8;hVYZBjsZ*h;H?8{vVW(4@ryfmyK;(b904S>S z1Za46pzN?CzR{eW2HZ3*(}m_MZlB}@p9q|<45c6*gdxK;i@u)1@42xG)IYnKoIeEMR8<0YW5^W-m?{ z&jr5R2VR$dGAH00$+Nzg%p(&FgUSu2=whQ$yVDV;K97?znU%Y4(2iGb7QK2_i|`R? zVi+qK`Rh>qn3{o&eJN*pquWbLP0U=nSop>*@>e^G^Nw9*P9%6CLk9QRZ3V|Tgpv5U z;2Xv4D?mnca+bH3`b>2eL8!Xw-UPl>_FWqB5a>7{JBL_U);~zX zou0q=xhjc(UqGAs;T!A5q;%;ccFK$T$o6-;ZkkuDAsVLf!#O=q&HhZ0tmY3KdVc6!hO+v1hItlEIOG>Rom z%9?6@n&gD_=jK>=IuD(7SQYAYR~L%)*Lew=n+sx&u86@=U>Udl#- zOeVX%O zD^zXr0p{^+BCeBnG9=_qxon$@oPCKND|uX^A983e5G#R&Ch#p7YsT+u0tR6$QKu?L_`uWmmpXSqPBZ&1ANpZSTO-V9sq0 z$xOINzA9n(IWB&`zVd!&NbKV4UKRQx)|>IX9B?d)M3{4szY?Z=EmXvUN9%$od=K3z z&@!P!gP2$ibfTk%lC@46nGP}r6|{sd7dI_}N9+7=ZTv?GeJ^d(1wXykCFpi- zte6g7Q?z_W7e3z8@WDyPswH+R%JPxzi0-pFE(09?@wJM!7vU$TP4?;>zrxp; za}#bb!2k*?eQ18?xIicr(=b z&L^Ziv|`xLW^aS!v_Z`AZX!F%J#ej`PXxDMKeSMM%4RGE5OY5pni^)NL}7}88EhK1 z_Oe;$EW^2Iv>4FLpjRYoQJN$t7CeNi;UDGhyVENAUxz(82rG&Eh{-(4BB^DSRgv>$ z8&bJV{~X~ULbWOXMpVF!K)HeopGuNFX6@hyFk0uzhAoYX;W!^5^c9S&oaifR0Di6 OA+7`pzQlR&**^hwt#l^< literal 0 HcmV?d00001 diff --git a/lib/docs/html/class_team_speak3___node___client-members.html b/lib/docs/html/class_team_speak3___node___client-members.html new file mode 100644 index 0000000..f05d886 --- /dev/null +++ b/lib/docs/html/class_team_speak3___node___client-members.html @@ -0,0 +1,202 @@ + + + + + + +TeamSpeak 3 PHP Framework: Member List + + + + + + + + + + + + + +
+
+ + + + + + + +
+
TeamSpeak 3 PHP Framework +  1.1.23 +
+
Copyright © Planet TeamSpeak. All rights reserved.
+
+
+ + + + + +
+
+ +
+
+
+ +
+ + + + +
+ +
+ +
+
+
TeamSpeak3_Node_Client Member List
+
+
+ +

This is the complete list of members for TeamSpeak3_Node_Client, including all inherited members.

+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
$nodeIdTeamSpeak3_Node_Abstractprotected
$nodeInfoTeamSpeak3_Node_Abstractprotected
$nodeListTeamSpeak3_Node_Abstractprotected
$parentTeamSpeak3_Node_Abstractprotected
$serverTeamSpeak3_Node_Abstractprotected
$storageTeamSpeak3_Node_Abstractprotected
__call($name, array $args)TeamSpeak3_Node_Abstract
__construct(TeamSpeak3_Node_Server $server, array $info, $index="clid")TeamSpeak3_Node_Client
__get($offset)TeamSpeak3_Node_Abstract
__set($offset, $value)TeamSpeak3_Node_Abstract
__sleep()TeamSpeak3_Node_Abstract
__toString()TeamSpeak3_Node_Client
addServerGroup($sgid)TeamSpeak3_Node_Client
avatarDownload()TeamSpeak3_Node_Client
avatarGetName()TeamSpeak3_Node_Client
ban($timeseconds=null, $reason=null)TeamSpeak3_Node_Client
count()TeamSpeak3_Node_Abstract
current()TeamSpeak3_Node_Abstract
customInfo()TeamSpeak3_Node_Client
deleteDb()TeamSpeak3_Node_Client
delStorage($key)TeamSpeak3_Node_Abstractprotected
execute($cmd, array $params=array())TeamSpeak3_Node_Abstract
fetchNodeInfo()TeamSpeak3_Node_Clientprotected
fetchNodeList()TeamSpeak3_Node_Abstractprotected
filterList(array $nodes=array(), array $rules=array())TeamSpeak3_Node_Abstractprotected
getChildren()TeamSpeak3_Node_Abstract
getClass($prefix="ts3_")TeamSpeak3_Node_Abstract
getClones()TeamSpeak3_Node_Client
getIcon()TeamSpeak3_Node_Client
getId()TeamSpeak3_Node_Abstract
getInfo($extend=TRUE, $convert=FALSE)TeamSpeak3_Node_Abstract
getParent()TeamSpeak3_Node_Abstract
getProperty($property, $default=null)TeamSpeak3_Node_Abstract
getRev()TeamSpeak3_Node_Client
getStorage($key, $default=null)TeamSpeak3_Node_Abstractprotected
getSymbol()TeamSpeak3_Node_Client
getUniqueId()TeamSpeak3_Node_Client
getViewer(TeamSpeak3_Viewer_Interface $viewer)TeamSpeak3_Node_Abstract
hasChildren()TeamSpeak3_Node_Abstract
hasNext()TeamSpeak3_Node_Abstract
iconDownload()TeamSpeak3_Node_Client
iconGetName($key)TeamSpeak3_Node_Abstract
iconIsLocal($key)TeamSpeak3_Node_Abstract
infoDb()TeamSpeak3_Node_Client
key()TeamSpeak3_Node_Abstract
kick($reasonid=TeamSpeak3::KICK_CHANNEL, $reasonmsg=null)TeamSpeak3_Node_Client
memberOf()TeamSpeak3_Node_Client
message($msg)TeamSpeak3_Node_Client
modify(array $properties)TeamSpeak3_Node_Client
modifyDb(array $properties)TeamSpeak3_Node_Client
move($cid, $cpw=null)TeamSpeak3_Node_Client
next()TeamSpeak3_Node_Abstract
offsetExists($offset)TeamSpeak3_Node_Abstract
offsetGet($offset)TeamSpeak3_Node_Abstract
offsetSet($offset, $value)TeamSpeak3_Node_Abstract
offsetUnset($offset)TeamSpeak3_Node_Abstract
permAssign($permid, $permvalue, $permskip=FALSE)TeamSpeak3_Node_Client
permAssignByName($permname, $permvalue, $permskip=FALSE)TeamSpeak3_Node_Client
permList($permsid=FALSE)TeamSpeak3_Node_Client
permOverview($cid)TeamSpeak3_Node_Client
permRemove($permid)TeamSpeak3_Node_Client
permRemoveByName($permname)TeamSpeak3_Node_Client
poke($msg)TeamSpeak3_Node_Client
prepare($cmd, array $params=array())TeamSpeak3_Node_Abstract
remServerGroup($sgid)TeamSpeak3_Node_Client
request($cmd, $throw=TRUE)TeamSpeak3_Node_Abstract
resetNodeInfo()TeamSpeak3_Node_Abstractprotected
resetNodeList()TeamSpeak3_Node_Abstractprotected
rewind()TeamSpeak3_Node_Abstract
sendPluginCmd($plugin, $data)TeamSpeak3_Node_Client
setChannelGroup($cid, $cgid)TeamSpeak3_Node_Client
setStorage($key, $val)TeamSpeak3_Node_Abstractprotected
toArray()TeamSpeak3_Node_Abstract
toString()TeamSpeak3_Node_Abstract
valid()TeamSpeak3_Node_Abstract
verifyNodeList()TeamSpeak3_Node_Abstractprotected
+
+ + + + diff --git a/lib/docs/html/class_team_speak3___node___client.html b/lib/docs/html/class_team_speak3___node___client.html new file mode 100644 index 0000000..156a674 --- /dev/null +++ b/lib/docs/html/class_team_speak3___node___client.html @@ -0,0 +1,3255 @@ + + + + + + +TeamSpeak 3 PHP Framework: TeamSpeak3_Node_Client Class Reference + + + + + + + + + + + + + +
+
+ + + + + + + +
+
TeamSpeak 3 PHP Framework +  1.1.23 +
+
Copyright © Planet TeamSpeak. All rights reserved.
+
+
+ + + + + +
+
+ +
+
+
+ +
+ + + + +
+ +
+ +
+ +
+
TeamSpeak3_Node_Client Class Reference
+
+
+ +

Class describing a TeamSpeak 3 client and all it's parameters. + More...

+
+ + Inheritance diagram for TeamSpeak3_Node_Client:
+
+
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +

+Public Member Functions

 __construct (TeamSpeak3_Node_Server $server, array $info, $index="clid")
 The TeamSpeak3_Node_Client constructor. More...
 
 modify (array $properties)
 Changes the clients properties using given properties. More...
 
 modifyDb (array $properties)
 Changes the clients properties using given properties. More...
 
 deleteDb ()
 Deletes the clients properties from the database. More...
 
 infoDb ()
 Returns a list of properties from the database for the client. More...
 
 message ($msg)
 Sends a text message to the client. More...
 
 move ($cid, $cpw=null)
 Moves the client to another channel. More...
 
 kick ($reasonid=TeamSpeak3::KICK_CHANNEL, $reasonmsg=null)
 Kicks the client from his currently joined channel or from the server. More...
 
 poke ($msg)
 Sends a poke message to the client. More...
 
 ban ($timeseconds=null, $reason=null)
 Bans the client from the server. More...
 
 customInfo ()
 Returns a list of custom properties for the client. More...
 
 permOverview ($cid)
 Returns an array containing the permission overview of the client. More...
 
 permList ($permsid=FALSE)
 Returns a list of permissions defined for the client. More...
 
 permAssign ($permid, $permvalue, $permskip=FALSE)
 Adds a set of specified permissions to the client. More...
 
 permAssignByName ($permname, $permvalue, $permskip=FALSE)
 Alias for permAssign(). More...
 
 permRemove ($permid)
 Removes a set of specified permissions from a client. More...
 
 permRemoveByName ($permname)
 Alias for permRemove(). More...
 
 setChannelGroup ($cid, $cgid)
 Sets the channel group of a client to the ID specified. More...
 
 addServerGroup ($sgid)
 Adds the client to the server group specified with $sgid. More...
 
 remServerGroup ($sgid)
 Removes the client from the server group specified with $sgid. More...
 
 avatarGetName ()
 Returns the possible name of the clients avatar. More...
 
 avatarDownload ()
 Downloads and returns the clients avatar file content. More...
 
 getClones ()
 Returns a list of client connections using the same identity as this client. More...
 
 getRev ()
 Returns the revision/build number from the clients version string. More...
 
 memberOf ()
 Returns all server and channel groups the client is currently residing in. More...
 
 iconDownload ()
 Downloads and returns the clients icon file content. More...
 
 sendPluginCmd ($plugin, $data)
 Sends a plugin command to the client. More...
 
 getUniqueId ()
 Returns a unique identifier for the node which can be used as a HTML property. More...
 
 getIcon ()
 Returns the name of a possible icon to display the node object. More...
 
 getSymbol ()
 Returns a symbol representing the node. More...
 
 __toString ()
 Returns a string representation of this node. More...
 
 request ($cmd, $throw=TRUE)
 Sends a prepared command to the server and returns the result. More...
 
 prepare ($cmd, array $params=array())
 Uses given parameters and returns a prepared ServerQuery command. More...
 
 execute ($cmd, array $params=array())
 Prepares and executes a ServerQuery command and returns the result. More...
 
 getParent ()
 Returns the parent object of the current node. More...
 
 getId ()
 Returns the primary ID of the current node. More...
 
 iconIsLocal ($key)
 Returns TRUE if the node icon has a local source. More...
 
 iconGetName ($key)
 Returns the internal path of the node icon. More...
 
 getClass ($prefix="ts3_")
 Returns a possible classname for the node which can be used as a HTML property. More...
 
 getViewer (TeamSpeak3_Viewer_Interface $viewer)
 Returns the HTML code to display a TeamSpeak 3 viewer. More...
 
 getInfo ($extend=TRUE, $convert=FALSE)
 Returns all information available on this node. More...
 
 getProperty ($property, $default=null)
 Returns the specified property or a pre-defined default value from the node info array. More...
 
 toString ()
 Returns a string representation of this node. More...
 
 toArray ()
 Returns an assoc array filled with current node info properties. More...
 
 __call ($name, array $args)
 Called whenever we're using an unknown method. More...
 
 __sleep ()
 Commit pending data. More...
 
 count ()
 
 current ()
 
 getChildren ()
 
 hasChildren ()
 
 hasNext ()
 
 key ()
 
 valid ()
 
 next ()
 
 rewind ()
 
 offsetExists ($offset)
 
 offsetGet ($offset)
 
 offsetSet ($offset, $value)
 
 offsetUnset ($offset)
 
 __get ($offset)
 
 __set ($offset, $value)
 
+ + + + + + + + + + + + + + + + + + + + + + + +

+Protected Member Functions

 fetchNodeInfo ()
 
 filterList (array $nodes=array(), array $rules=array())
 Filters given node list array using specified filter rules. More...
 
 setStorage ($key, $val)
 Writes data to the internal storage array. More...
 
 getStorage ($key, $default=null)
 Returns data from the internal storage array. More...
 
 delStorage ($key)
 Deletes data from the internal storage array. More...
 
 fetchNodeList ()
 
 resetNodeInfo ()
 
 verifyNodeList ()
 
 resetNodeList ()
 
+ + + + + + + + + + + + + +

+Protected Attributes

 $parent = null
 
 $server = null
 
 $nodeId = 0x00
 
 $nodeList = null
 
 $nodeInfo = array()
 
 $storage = array()
 
+

Detailed Description

+

Class describing a TeamSpeak 3 client and all it's parameters.

+ +

Definition at line 32 of file Client.php.

+

Constructor & Destructor Documentation

+ +
+
+ + + + + + + + + + + + + + + + + + + + + + + + +
TeamSpeak3_Node_Client::__construct (TeamSpeak3_Node_Server $server,
array $info,
 $index = "clid" 
)
+
+ +

The TeamSpeak3_Node_Client constructor.

+
Parameters
+ + + + +
TeamSpeak3_Node_Server$server
array$info
string$index
+
+
+
Exceptions
+ + +
TeamSpeak3_Adapter_ServerQuery_Exception
+
+
+
Returns
TeamSpeak3_Node_Client
+ +

Definition at line 43 of file Client.php.

+ +

References TeamSpeak3_Node_Abstract\$server.

+
44  {
+
45  $this->parent = $server;
+
46  $this->nodeInfo = $info;
+
47 
+
48  if(!array_key_exists($index, $this->nodeInfo))
+
49  {
+
50  throw new TeamSpeak3_Adapter_ServerQuery_Exception("invalid clientID", 0x200);
+
51  }
+
52 
+
53  $this->nodeId = $this->nodeInfo[$index];
+
54  }
+
+
+
+

Member Function Documentation

+ +
+
+ + + + + + + + +
TeamSpeak3_Node_Client::modify (array $properties)
+
+ +

Changes the clients properties using given properties.

+
Parameters
+ + +
array$properties
+
+
+
Returns
void
+ +

Definition at line 62 of file Client.php.

+ +

References TeamSpeak3_Node_Abstract\execute(), TeamSpeak3_Node_Abstract\getId(), and TeamSpeak3_Node_Abstract\resetNodeInfo().

+
63  {
+
64  $properties["clid"] = $this->getId();
+
65 
+
66  $this->execute("clientedit", $properties);
+
67  $this->resetNodeInfo();
+
68  }
+
+
+
+ +
+
+ + + + + + + + +
TeamSpeak3_Node_Client::modifyDb (array $properties)
+
+ +

Changes the clients properties using given properties.

+
Parameters
+ + +
array$properties
+
+
+
Returns
void
+ +

Definition at line 76 of file Client.php.

+ +

References TeamSpeak3_Node_Abstract\getParent().

+
77  {
+
78  return $this->getParent()->clientModifyDb($this["client_database_id"], $properties);
+
79  }
+
+
+
+ +
+
+ + + + + + + +
TeamSpeak3_Node_Client::deleteDb ()
+
+ +

Deletes the clients properties from the database.

+
Returns
void
+ +

Definition at line 86 of file Client.php.

+ +

References TeamSpeak3_Node_Abstract\getParent().

+
87  {
+
88  return $this->getParent()->clientDeleteDb($this["client_database_id"]);
+
89  }
+
+
+
+ +
+
+ + + + + + + +
TeamSpeak3_Node_Client::infoDb ()
+
+ +

Returns a list of properties from the database for the client.

+
Returns
array
+ +

Definition at line 96 of file Client.php.

+ +

References TeamSpeak3_Node_Abstract\getParent().

+
97  {
+
98  return $this->getParent()->clientInfoDb($this["client_database_id"]);
+
99  }
+
+
+
+ +
+
+ + + + + + + + +
TeamSpeak3_Node_Client::message ( $msg)
+
+ +

Sends a text message to the client.

+
Parameters
+ + +
string$msg
+
+
+
Returns
void
+ +

Definition at line 107 of file Client.php.

+ +

References TeamSpeak3_Node_Abstract\execute(), TeamSpeak3_Node_Abstract\getId(), and TeamSpeak3\TEXTMSG_CLIENT.

+
108  {
+
109  $this->execute("sendtextmessage", array("msg" => $msg, "target" => $this->getId(), "targetmode" => TeamSpeak3::TEXTMSG_CLIENT));
+
110  }
+
+
+
+ +
+
+ + + + + + + + + + + + + + + + + + +
TeamSpeak3_Node_Client::move ( $cid,
 $cpw = null 
)
+
+ +

Moves the client to another channel.

+
Parameters
+ + + +
integer$cid
string$cpw
+
+
+
Returns
void
+ +

Definition at line 119 of file Client.php.

+ +

References TeamSpeak3_Node_Abstract\getId(), and TeamSpeak3_Node_Abstract\getParent().

+
120  {
+
121  return $this->getParent()->clientMove($this->getId(), $cid, $cpw);
+
122  }
+
+
+
+ +
+
+ + + + + + + + + + + + + + + + + + +
TeamSpeak3_Node_Client::kick ( $reasonid = TeamSpeak3::KICK_CHANNEL,
 $reasonmsg = null 
)
+
+ +

Kicks the client from his currently joined channel or from the server.

+
Parameters
+ + + +
integer$reasonid
string$reasonmsg
+
+
+
Returns
void
+ +

Definition at line 131 of file Client.php.

+ +

References TeamSpeak3_Node_Abstract\getId(), and TeamSpeak3_Node_Abstract\getParent().

+
132  {
+
133  return $this->getParent()->clientKick($this->getId(), $reasonid, $reasonmsg);
+
134  }
+
+
+
+ +
+
+ + + + + + + + +
TeamSpeak3_Node_Client::poke ( $msg)
+
+ +

Sends a poke message to the client.

+
Parameters
+ + +
string$msg
+
+
+
Returns
void
+ +

Definition at line 142 of file Client.php.

+ +

References TeamSpeak3_Node_Abstract\getId(), and TeamSpeak3_Node_Abstract\getParent().

+
143  {
+
144  return $this->getParent()->clientPoke($this->getId(), $msg);
+
145  }
+
+
+
+ +
+
+ + + + + + + + + + + + + + + + + + +
TeamSpeak3_Node_Client::ban ( $timeseconds = null,
 $reason = null 
)
+
+ +

Bans the client from the server.

+

Please note that this will create two separate ban rules for the targeted clients IP address and his unique identifier.

+
Parameters
+ + + +
integer$timeseconds
string$reason
+
+
+
Returns
array
+ +

Definition at line 155 of file Client.php.

+ +

References TeamSpeak3_Node_Abstract\getId(), and TeamSpeak3_Node_Abstract\getParent().

+
156  {
+
157  return $this->getParent()->clientBan($this->getId(), $timeseconds, $reason);
+
158  }
+
+
+
+ +
+
+ + + + + + + +
TeamSpeak3_Node_Client::customInfo ()
+
+ +

Returns a list of custom properties for the client.

+
Returns
array
+ +

Definition at line 165 of file Client.php.

+ +

References TeamSpeak3_Node_Abstract\getParent().

+
166  {
+
167  return $this->getParent()->customInfo($this["client_database_id"]);
+
168  }
+
+
+
+ +
+
+ + + + + + + + +
TeamSpeak3_Node_Client::permOverview ( $cid)
+
+ +

Returns an array containing the permission overview of the client.

+
Parameters
+ + +
integer$cid
+
+
+
Returns
array
+ +

Definition at line 176 of file Client.php.

+ +

References TeamSpeak3_Node_Abstract\execute().

+
177  {
+
178  return $this->execute("permoverview", array("cldbid" => $this["client_database_id"], "cid" => $cid, "permid" => 0))->toArray();
+
179  }
+
+
+
+ +
+
+ + + + + + + + +
TeamSpeak3_Node_Client::permList ( $permsid = FALSE)
+
+ +

Returns a list of permissions defined for the client.

+
Parameters
+ + +
boolean$permsid
+
+
+
Returns
array
+ +

Definition at line 187 of file Client.php.

+ +

References TeamSpeak3_Node_Abstract\getParent().

+
188  {
+
189  return $this->getParent()->clientPermList($this["client_database_id"], $permsid);
+
190  }
+
+
+
+ +
+
+ + + + + + + + + + + + + + + + + + + + + + + + +
TeamSpeak3_Node_Client::permAssign ( $permid,
 $permvalue,
 $permskip = FALSE 
)
+
+ +

Adds a set of specified permissions to the client.

+

Multiple permissions can be added by providing the three parameters of each permission.

+
Parameters
+ + + + +
integer$permid
integer$permvalue
integer$permskip
+
+
+
Returns
void
+ +

Definition at line 201 of file Client.php.

+ +

References TeamSpeak3_Node_Abstract\getParent().

+ +

Referenced by permAssignByName().

+
202  {
+
203  return $this->getParent()->clientPermAssign($this["client_database_id"], $permid, $permvalue, $permskip);
+
204  }
+
+
+
+ +
+
+ + + + + + + + + + + + + + + + + + + + + + + + +
TeamSpeak3_Node_Client::permAssignByName ( $permname,
 $permvalue,
 $permskip = FALSE 
)
+
+ +

Alias for permAssign().

+
Deprecated:
+ +

Definition at line 211 of file Client.php.

+ +

References permAssign().

+
212  {
+
213  return $this->permAssign($permname, $permvalue, $permskip);
+
214  }
+
+
+
+ +
+
+ + + + + + + + +
TeamSpeak3_Node_Client::permRemove ( $permid)
+
+ +

Removes a set of specified permissions from a client.

+

Multiple permissions can be removed at once.

+
Parameters
+ + +
integer$permid
+
+
+
Returns
void
+ +

Definition at line 222 of file Client.php.

+ +

References TeamSpeak3_Node_Abstract\getParent().

+ +

Referenced by permRemoveByName().

+
223  {
+
224  return $this->getParent()->clientPermRemove($this["client_database_id"], $permid);
+
225  }
+
+
+
+ +
+
+ + + + + + + + +
TeamSpeak3_Node_Client::permRemoveByName ( $permname)
+
+ +

Alias for permRemove().

+
Deprecated:
+ +

Definition at line 232 of file Client.php.

+ +

References permRemove().

+
233  {
+
234  return $this->permRemove($permname);
+
235  }
+
+
+
+ +
+
+ + + + + + + + + + + + + + + + + + +
TeamSpeak3_Node_Client::setChannelGroup ( $cid,
 $cgid 
)
+
+ +

Sets the channel group of a client to the ID specified.

+
Parameters
+ + + +
integer$cid
integer$cgid
+
+
+
Returns
void
+ +

Definition at line 244 of file Client.php.

+ +

References TeamSpeak3_Node_Abstract\getParent().

+
245  {
+
246  return $this->getParent()->clientSetChannelGroup($this["client_database_id"], $cid, $cgid);
+
247  }
+
+
+
+ +
+
+ + + + + + + + +
TeamSpeak3_Node_Client::addServerGroup ( $sgid)
+
+ +

Adds the client to the server group specified with $sgid.

+
Parameters
+ + +
integer$sgid
+
+
+
Returns
void
+ +

Definition at line 255 of file Client.php.

+ +

References TeamSpeak3_Node_Abstract\getParent().

+
256  {
+
257  return $this->getParent()->serverGroupClientAdd($sgid, $this["client_database_id"]);
+
258  }
+
+
+
+ +
+
+ + + + + + + + +
TeamSpeak3_Node_Client::remServerGroup ( $sgid)
+
+ +

Removes the client from the server group specified with $sgid.

+
Parameters
+ + +
integer$sgid
+
+
+
Returns
void
+ +

Definition at line 266 of file Client.php.

+ +

References TeamSpeak3_Node_Abstract\getParent().

+
267  {
+
268  return $this->getParent()->serverGroupClientDel($sgid, $this["client_database_id"]);
+
269  }
+
+
+
+ +
+
+ + + + + + + +
TeamSpeak3_Node_Client::avatarGetName ()
+
+ +

Returns the possible name of the clients avatar.

+
Returns
TeamSpeak3_Helper_String
+ +

Definition at line 276 of file Client.php.

+ +

Referenced by avatarDownload().

+
277  {
+
278  return new TeamSpeak3_Helper_String("/avatar_" . $this["client_base64HashClientUID"]);
+
279  }
+
+
+
+ +
+
+ + + + + + + +
TeamSpeak3_Node_Client::avatarDownload ()
+
+ +

Downloads and returns the clients avatar file content.

+
Returns
TeamSpeak3_Helper_String
+ +

Definition at line 286 of file Client.php.

+ +

References avatarGetName(), TeamSpeak3\factory(), and TeamSpeak3_Node_Abstract\getParent().

+
287  {
+
288  if($this["client_flag_avatar"] == 0) return;
+
289 
+
290  $download = $this->getParent()->transferInitDownload(rand(0x0000, 0xFFFF), 0, $this->avatarGetName());
+
291  $transfer = TeamSpeak3::factory("filetransfer://" . $download["host"] . ":" . $download["port"]);
+
292 
+
293  return $transfer->download($download["ftkey"], $download["size"]);
+
294  }
+
+
+
+ +
+
+ + + + + + + +
TeamSpeak3_Node_Client::getClones ()
+
+ +

Returns a list of client connections using the same identity as this client.

+
Returns
array
+ +

Definition at line 301 of file Client.php.

+ +

References TeamSpeak3_Node_Abstract\execute().

+
302  {
+
303  return $this->execute("clientgetids", array("cluid" => $this["client_unique_identifier"]))->toAssocArray("clid");
+
304  }
+
+
+
+ +
+
+ + + + + + + +
TeamSpeak3_Node_Client::getRev ()
+
+ +

Returns the revision/build number from the clients version string.

+
Returns
integer
+ +

Definition at line 311 of file Client.php.

+
312  {
+
313  return $this["client_type"] ? null : $this["client_version"]->section("[", 1)->filterDigits();
+
314  }
+
+
+
+ +
+
+ + + + + + + +
TeamSpeak3_Node_Client::memberOf ()
+
+ +

Returns all server and channel groups the client is currently residing in.

+
Returns
array
+ +

Definition at line 321 of file Client.php.

+ +

References TeamSpeak3_Node_Abstract\getParent().

+
322  {
+
323  $groups = array($this->getParent()->channelGroupGetById($this["client_channel_group_id"]));
+
324 
+
325  foreach(explode(",", $this["client_servergroups"]) as $sgid)
+
326  {
+
327  $groups[] = $this->getParent()->serverGroupGetById($sgid);
+
328  }
+
329 
+
330  return $groups;
+
331  }
+
+
+
+ +
+
+ + + + + + + +
TeamSpeak3_Node_Client::iconDownload ()
+
+ +

Downloads and returns the clients icon file content.

+
Returns
TeamSpeak3_Helper_String
+ +

Definition at line 338 of file Client.php.

+ +

References TeamSpeak3\factory(), TeamSpeak3_Node_Abstract\getParent(), TeamSpeak3_Node_Abstract\iconGetName(), and TeamSpeak3_Node_Abstract\iconIsLocal().

+
339  {
+
340  if($this->iconIsLocal("client_icon_id") || $this["client_icon_id"] == 0) return;
+
341 
+
342  $download = $this->getParent()->transferInitDownload(rand(0x0000, 0xFFFF), 0, $this->iconGetName("client_icon_id"));
+
343  $transfer = TeamSpeak3::factory("filetransfer://" . $download["host"] . ":" . $download["port"]);
+
344 
+
345  return $transfer->download($download["ftkey"], $download["size"]);
+
346  }
+
+
+
+ +
+
+ + + + + + + + + + + + + + + + + + +
TeamSpeak3_Node_Client::sendPluginCmd ( $plugin,
 $data 
)
+
+ +

Sends a plugin command to the client.

+
Parameters
+ + + +
string$plugin
string$data
+
+
+
Returns
void
+ +

Definition at line 355 of file Client.php.

+ +

References TeamSpeak3_Node_Abstract\execute(), TeamSpeak3_Node_Abstract\getId(), and TeamSpeak3\PLUGINCMD_CLIENT.

+
356  {
+
357  $this->execute("plugincmd", array("name" => $plugin, "data" => $data, "targetmode" => TeamSpeak3::PLUGINCMD_CLIENT, "target" => $this->getId()));
+
358  }
+
+
+
+ +
+
+ + + + + +
+ + + + + + + +
TeamSpeak3_Node_Client::fetchNodeInfo ()
+
+protected
+
+ +

+ +

Definition at line 363 of file Client.php.

+ +

References TeamSpeak3_Node_Abstract\execute(), and TeamSpeak3_Node_Abstract\getId().

+
364  {
+
365  if($this["client_type"] == 1) return;
+
366 
+
367  $this->nodeInfo = array_merge($this->nodeInfo, $this->execute("clientinfo", array("clid" => $this->getId()))->toList());
+
368  }
+
+
+
+ +
+
+ + + + + + + +
TeamSpeak3_Node_Client::getUniqueId ()
+
+ +

Returns a unique identifier for the node which can be used as a HTML property.

+
Returns
string
+ +

Definition at line 375 of file Client.php.

+ +

References TeamSpeak3_Node_Abstract\getId(), and TeamSpeak3_Node_Abstract\getParent().

+
376  {
+
377  return $this->getParent()->getUniqueId() . "_cl" . $this->getId();
+
378  }
+
+
+
+ +
+
+ + + + + + + +
TeamSpeak3_Node_Client::getIcon ()
+
+ +

Returns the name of a possible icon to display the node object.

+
Returns
string
+ +

Definition at line 385 of file Client.php.

+
386  {
+
387  if($this["client_type"])
+
388  {
+
389  return "client_query";
+
390  }
+
391  elseif($this["client_away"])
+
392  {
+
393  return "client_away";
+
394  }
+
395  elseif(!$this["client_output_hardware"])
+
396  {
+
397  return "client_snd_disabled";
+
398  }
+
399  elseif($this["client_output_muted"])
+
400  {
+
401  return "client_snd_muted";
+
402  }
+
403  elseif(!$this["client_input_hardware"])
+
404  {
+
405  return "client_mic_disabled";
+
406  }
+
407  elseif($this["client_input_muted"])
+
408  {
+
409  return "client_mic_muted";
+
410  }
+
411  elseif($this["client_is_channel_commander"])
+
412  {
+
413  return $this["client_flag_talking"] ? "client_cc_talk" : "client_cc_idle";
+
414  }
+
415  else
+
416  {
+
417  return $this["client_flag_talking"] ? "client_talk" : "client_idle";
+
418  }
+
419  }
+
+
+
+ +
+
+ + + + + + + +
TeamSpeak3_Node_Client::getSymbol ()
+
+ +

Returns a symbol representing the node.

+
Returns
string
+ +

Definition at line 426 of file Client.php.

+
427  {
+
428  return "@";
+
429  }
+
+
+
+ +
+
+ + + + + + + +
TeamSpeak3_Node_Client::__toString ()
+
+ +

Returns a string representation of this node.

+
Returns
string
+ +

Definition at line 436 of file Client.php.

+
437  {
+
438  return (string) $this["client_nickname"];
+
439  }
+
+
+
+ +
+
+ + + + + +
+ + + + + + + + + + + + + + + + + + +
TeamSpeak3_Node_Abstract::request ( $cmd,
 $throw = TRUE 
)
+
+inherited
+
+ +

Sends a prepared command to the server and returns the result.

+
Parameters
+ + + +
string$cmd
boolean$throw
+
+
+
Returns
TeamSpeak3_Adapter_ServerQuery_Reply
+ +

Definition at line 71 of file Abstract.php.

+ +

References TeamSpeak3_Node_Abstract\getParent().

+ +

Referenced by TeamSpeak3_Node_Host\bindingList(), TeamSpeak3_Node_Abstract\execute(), TeamSpeak3_Node_Host\fetchNodeInfo(), TeamSpeak3_Node_Host\fetchPermissionList(), TeamSpeak3_Node_Host\logout(), TeamSpeak3_Node_Host\serverList(), TeamSpeak3_Node_Host\version(), and TeamSpeak3_Node_Host\whoami().

+
72  {
+
73  return $this->getParent()->request($cmd, $throw);
+
74  }
+
+
+
+ +
+
+ + + + + +
+ + + + + + + + + + + + + + + + + + +
TeamSpeak3_Node_Abstract::prepare ( $cmd,
array $params = array() 
)
+
+inherited
+
+ +

Uses given parameters and returns a prepared ServerQuery command.

+
Parameters
+ + + +
string$cmd
array$params
+
+
+
Returns
TeamSpeak3_Helper_String
+ +

Definition at line 83 of file Abstract.php.

+ +

References TeamSpeak3_Node_Abstract\getParent().

+ +

Referenced by TeamSpeak3_Node_Abstract\execute().

+
84  {
+
85  return $this->getParent()->prepare($cmd, $params);
+
86  }
+
+
+
+ +
+
+ + + + + +
+ + + + + + + + + + + + + + + + + + +
TeamSpeak3_Node_Abstract::execute ( $cmd,
array $params = array() 
)
+
+inherited
+
+ +

Prepares and executes a ServerQuery command and returns the result.

+
Parameters
+ + + +
string$cmd
array$params
+
+
+
Returns
TeamSpeak3_Adapter_ServerQuery_Reply
+ +

Definition at line 95 of file Abstract.php.

+ +

References TeamSpeak3_Node_Abstract\prepare(), and TeamSpeak3_Node_Abstract\request().

+ +

Referenced by TeamSpeak3_Node_Server\banCreate(), TeamSpeak3_Node_Server\banDelete(), TeamSpeak3_Node_Server\channelClientPermAssign(), TeamSpeak3_Node_Server\channelClientPermList(), TeamSpeak3_Node_Server\channelClientPermRemove(), TeamSpeak3_Node_Server\channelCreate(), TeamSpeak3_Node_Server\channelDelete(), TeamSpeak3_Node_Server\channelDirCreate(), TeamSpeak3_Node_Server\channelFileDelete(), TeamSpeak3_Node_Server\channelFileInfo(), TeamSpeak3_Node_Server\channelFileList(), TeamSpeak3_Node_Server\channelFileRename(), TeamSpeak3_Node_Server\channelGroupClientList(), TeamSpeak3_Node_Server\channelGroupCopy(), TeamSpeak3_Node_Server\channelGroupCreate(), TeamSpeak3_Node_Server\channelGroupDelete(), TeamSpeak3_Node_Server\channelGroupPermAssign(), TeamSpeak3_Node_Server\channelGroupPermList(), TeamSpeak3_Node_Server\channelGroupPermRemove(), TeamSpeak3_Node_Server\channelGroupRename(), TeamSpeak3_Node_Server\channelMove(), TeamSpeak3_Node_Server\channelPermAssign(), TeamSpeak3_Node_Server\channelPermList(), TeamSpeak3_Node_Server\channelPermRemove(), TeamSpeak3_Node_Server\clientBan(), TeamSpeak3_Node_Server\clientCountDb(), TeamSpeak3_Node_Server\clientDeleteDb(), TeamSpeak3_Node_Server\clientFind(), TeamSpeak3_Node_Server\clientFindDb(), TeamSpeak3_Node_Server\clientGetIdsByUid(), TeamSpeak3_Node_Server\clientGetNameByDbid(), TeamSpeak3_Node_Server\clientGetNameByUid(), TeamSpeak3_Node_Server\clientGetServerGroupsByDbid(), TeamSpeak3_Node_Server\clientInfoDb(), TeamSpeak3_Node_Server\clientKick(), TeamSpeak3_Node_Server\clientListDb(), TeamSpeak3_Node_Server\clientModifyDb(), TeamSpeak3_Node_Server\clientMove(), TeamSpeak3_Node_Server\clientPermAssign(), TeamSpeak3_Node_Server\clientPermList(), TeamSpeak3_Node_Server\clientPermRemove(), TeamSpeak3_Node_Server\clientPoke(), TeamSpeak3_Node_Server\clientSetChannelGroup(), TeamSpeak3_Node_Server\complaintCreate(), TeamSpeak3_Node_Server\complaintDelete(), TeamSpeak3_Node_Server\complaintList(), TeamSpeak3_Node_Server\complaintListClear(), TeamSpeak3_Node_Server\customInfo(), TeamSpeak3_Node_Server\customSearch(), fetchNodeInfo(), TeamSpeak3_Node_Channel\fetchNodeInfo(), getClones(), TeamSpeak3_Node_Host\logAdd(), TeamSpeak3_Node_Server\logAdd(), TeamSpeak3_Node_Host\login(), TeamSpeak3_Node_Host\logView(), TeamSpeak3_Node_Server\logView(), message(), TeamSpeak3_Node_Channelgroup\message(), TeamSpeak3_Node_Servergroup\message(), TeamSpeak3_Node_Channel\message(), TeamSpeak3_Node_Host\message(), TeamSpeak3_Node_Server\message(), TeamSpeak3_Node_Server\messageCreate(), TeamSpeak3_Node_Server\messageDelete(), TeamSpeak3_Node_Server\messageRead(), modify(), TeamSpeak3_Node_Channel\modify(), TeamSpeak3_Node_Host\modify(), TeamSpeak3_Node_Server\modify(), TeamSpeak3_Node_Server\notifyRegister(), TeamSpeak3_Node_Host\permissionFind(), permOverview(), TeamSpeak3_Node_Server\privilegeKeyCreate(), TeamSpeak3_Node_Server\privilegeKeyDelete(), TeamSpeak3_Node_Server\privilegeKeyUse(), TeamSpeak3_Node_Host\selfPermCheck(), TeamSpeak3_Node_Server\selfPermOverview(), TeamSpeak3_Node_Server\selfUpdate(), TeamSpeak3_Node_Server\selfUpdateLogin(), sendPluginCmd(), TeamSpeak3_Node_Channel\sendPluginCmd(), TeamSpeak3_Node_Server\sendPluginCmd(), TeamSpeak3_Node_Host\serverCreate(), TeamSpeak3_Node_Host\serverDelete(), TeamSpeak3_Node_Server\serverGroupClientAdd(), TeamSpeak3_Node_Server\serverGroupClientDel(), TeamSpeak3_Node_Server\serverGroupClientList(), TeamSpeak3_Node_Server\serverGroupCopy(), TeamSpeak3_Node_Server\serverGroupCreate(), TeamSpeak3_Node_Server\serverGroupDelete(), TeamSpeak3_Node_Server\serverGroupPermAssign(), TeamSpeak3_Node_Host\serverGroupPermAutoAssign(), TeamSpeak3_Node_Host\serverGroupPermAutoRemove(), TeamSpeak3_Node_Server\serverGroupPermList(), TeamSpeak3_Node_Server\serverGroupPermRemove(), TeamSpeak3_Node_Server\serverGroupRename(), TeamSpeak3_Node_Host\serverIdGetByPort(), TeamSpeak3_Node_Host\serverSelect(), TeamSpeak3_Node_Host\serverSelectByPort(), TeamSpeak3_Node_Host\serverStart(), TeamSpeak3_Node_Host\serverStop(), TeamSpeak3_Node_Host\serverStopProcess(), TeamSpeak3_Node_Server\tempPasswordCreate(), TeamSpeak3_Node_Server\tempPasswordDelete(), TeamSpeak3_Node_Server\transferInitDownload(), TeamSpeak3_Node_Server\transferInitUpload(), and TeamSpeak3_Node_Server\transferStop().

+
96  {
+
97  return $this->request($this->prepare($cmd, $params));
+
98  }
+
+
+
+ +
+
+ + + + + +
+ + + + + + + +
TeamSpeak3_Node_Abstract::getParent ()
+
+inherited
+
+ +

Returns the parent object of the current node.

+
Returns
TeamSpeak3_Adapter_ServerQuery
+
+TeamSpeak3_Node_Abstract
+ +

Definition at line 106 of file Abstract.php.

+ +

References TeamSpeak3_Node_Abstract\$parent.

+ +

Referenced by TeamSpeak3_Node_Abstract\__call(), addServerGroup(), avatarDownload(), ban(), TeamSpeak3_Node_Server\channelCreate(), TeamSpeak3_Node_Server\channelDelete(), TeamSpeak3_Node_Servergroup\clientAdd(), TeamSpeak3_Node_Servergroup\clientDel(), TeamSpeak3_Node_Channel\clientList(), TeamSpeak3_Node_Channelgroup\clientList(), TeamSpeak3_Node_Servergroup\clientList(), TeamSpeak3_Node_Server\clientList(), TeamSpeak3_Node_Server\clientMove(), TeamSpeak3_Node_Channel\clientPermAssign(), TeamSpeak3_Node_Channel\clientPermList(), TeamSpeak3_Node_Channel\clientPermRemove(), TeamSpeak3_Node_Servergroup\copy(), TeamSpeak3_Node_Channelgroup\copy(), customInfo(), TeamSpeak3_Node_Servergroup\delete(), TeamSpeak3_Node_Channelgroup\delete(), TeamSpeak3_Node_Channel\delete(), TeamSpeak3_Node_Server\delete(), deleteDb(), TeamSpeak3_Node_Channel\dirCreate(), TeamSpeak3_Node_Channelgroup\fetchNodeList(), TeamSpeak3_Node_Servergroup\fetchNodeList(), TeamSpeak3_Node_Channel\fetchNodeList(), TeamSpeak3_Node_Channel\fileDelete(), TeamSpeak3_Node_Channel\fileInfo(), TeamSpeak3_Node_Channel\fileList(), TeamSpeak3_Node_Channel\fileRename(), TeamSpeak3_Node_Host\getAdapter(), TeamSpeak3_Node_Host\getAdapterHost(), TeamSpeak3_Node_Host\getAdapterPort(), TeamSpeak3_Node_Channel\getLevel(), TeamSpeak3_Node_Channel\getPathway(), TeamSpeak3_Node_Channelgroup\getUniqueId(), TeamSpeak3_Node_Servergroup\getUniqueId(), getUniqueId(), TeamSpeak3_Node_Channel\getUniqueId(), TeamSpeak3_Node_Server\getUniqueId(), TeamSpeak3_Node_Channelgroup\iconDownload(), TeamSpeak3_Node_Servergroup\iconDownload(), iconDownload(), TeamSpeak3_Node_Channel\iconDownload(), infoDb(), TeamSpeak3_Node_Channel\isSpacer(), kick(), memberOf(), TeamSpeak3_Node_Channel\message(), modifyDb(), move(), TeamSpeak3_Node_Channel\move(), TeamSpeak3_Node_Channelgroup\permAssign(), TeamSpeak3_Node_Servergroup\permAssign(), permAssign(), TeamSpeak3_Node_Channel\permAssign(), TeamSpeak3_Node_Servergroup\permList(), TeamSpeak3_Node_Channelgroup\permList(), permList(), TeamSpeak3_Node_Channel\permList(), TeamSpeak3_Node_Channelgroup\permRemove(), TeamSpeak3_Node_Servergroup\permRemove(), permRemove(), TeamSpeak3_Node_Channel\permRemove(), poke(), TeamSpeak3_Node_Abstract\prepare(), TeamSpeak3_Node_Channelgroup\privilegeKeyCreate(), TeamSpeak3_Node_Servergroup\privilegeKeyCreate(), remServerGroup(), TeamSpeak3_Node_Channelgroup\rename(), TeamSpeak3_Node_Servergroup\rename(), TeamSpeak3_Node_Abstract\request(), TeamSpeak3_Node_Server\request(), TeamSpeak3_Node_Channel\sendPluginCmd(), setChannelGroup(), TeamSpeak3_Node_Server\snapshotDeploy(), TeamSpeak3_Node_Channel\spacerGetAlign(), TeamSpeak3_Node_Channel\spacerGetType(), TeamSpeak3_Node_Server\start(), TeamSpeak3_Node_Server\stop(), TeamSpeak3_Node_Channel\subChannelList(), TeamSpeak3_Node_Server\transferInitDownload(), and TeamSpeak3_Node_Server\transferInitUpload().

+
107  {
+
108  return $this->parent;
+
109  }
+
+
+
+ +
+
+ + + + + +
+ + + + + + + +
TeamSpeak3_Node_Abstract::getId ()
+
+inherited
+
+ +

Returns the primary ID of the current node.

+
Returns
integer
+ +

Definition at line 116 of file Abstract.php.

+ +

References TeamSpeak3_Node_Abstract\$nodeId.

+ +

Referenced by ban(), TeamSpeak3_Node_Server\channelDelete(), TeamSpeak3_Node_Server\channelFileList(), TeamSpeak3_Node_Servergroup\clientAdd(), TeamSpeak3_Node_Servergroup\clientDel(), TeamSpeak3_Node_Channel\clientList(), TeamSpeak3_Node_Channelgroup\clientList(), TeamSpeak3_Node_Servergroup\clientList(), TeamSpeak3_Node_Channel\clientPermAssign(), TeamSpeak3_Node_Channel\clientPermList(), TeamSpeak3_Node_Channel\clientPermRemove(), TeamSpeak3_Node_Servergroup\copy(), TeamSpeak3_Node_Channelgroup\copy(), TeamSpeak3_Node_Channelgroup\delete(), TeamSpeak3_Node_Servergroup\delete(), TeamSpeak3_Node_Channel\delete(), TeamSpeak3_Node_Server\delete(), TeamSpeak3_Node_Channel\dirCreate(), fetchNodeInfo(), TeamSpeak3_Node_Channel\fetchNodeInfo(), TeamSpeak3_Node_Channelgroup\fetchNodeList(), TeamSpeak3_Node_Servergroup\fetchNodeList(), TeamSpeak3_Node_Channel\fetchNodeList(), TeamSpeak3_Node_Channel\fileDelete(), TeamSpeak3_Node_Channel\fileInfo(), TeamSpeak3_Node_Channel\fileList(), TeamSpeak3_Node_Channel\fileRename(), TeamSpeak3_Node_Channel\getLevel(), TeamSpeak3_Node_Channel\getPathway(), TeamSpeak3_Node_Channelgroup\getUniqueId(), TeamSpeak3_Node_Servergroup\getUniqueId(), getUniqueId(), TeamSpeak3_Node_Channel\getUniqueId(), TeamSpeak3_Node_Server\getUniqueId(), kick(), message(), TeamSpeak3_Node_Channel\message(), TeamSpeak3_Node_Server\message(), modify(), TeamSpeak3_Node_Channel\modify(), move(), TeamSpeak3_Node_Channel\move(), TeamSpeak3_Node_Channelgroup\permAssign(), TeamSpeak3_Node_Servergroup\permAssign(), TeamSpeak3_Node_Channel\permAssign(), TeamSpeak3_Node_Channelgroup\permList(), TeamSpeak3_Node_Servergroup\permList(), TeamSpeak3_Node_Channel\permList(), TeamSpeak3_Node_Channelgroup\permRemove(), TeamSpeak3_Node_Servergroup\permRemove(), TeamSpeak3_Node_Channel\permRemove(), poke(), TeamSpeak3_Node_Channelgroup\privilegeKeyCreate(), TeamSpeak3_Node_Servergroup\privilegeKeyCreate(), TeamSpeak3_Node_Channelgroup\rename(), TeamSpeak3_Node_Servergroup\rename(), TeamSpeak3_Node_Server\request(), sendPluginCmd(), TeamSpeak3_Node_Channel\sendPluginCmd(), TeamSpeak3_Node_Server\sortGroupList(), TeamSpeak3_Node_Channel\spacerGetAlign(), TeamSpeak3_Node_Channel\spacerGetType(), TeamSpeak3_Node_Server\start(), TeamSpeak3_Node_Server\stop(), and TeamSpeak3_Node_Channel\subChannelList().

+
117  {
+
118  return $this->nodeId;
+
119  }
+
+
+
+ +
+
+ + + + + +
+ + + + + + + + +
TeamSpeak3_Node_Abstract::iconIsLocal ( $key)
+
+inherited
+
+ +

Returns TRUE if the node icon has a local source.

+
Parameters
+ + +
string$key
+
+
+
Returns
boolean
+ +

Definition at line 127 of file Abstract.php.

+ +

Referenced by TeamSpeak3_Node_Channelgroup\iconDownload(), TeamSpeak3_Node_Servergroup\iconDownload(), iconDownload(), TeamSpeak3_Node_Channel\iconDownload(), and TeamSpeak3_Node_Server\iconDownload().

+
128  {
+
129  return ($this[$key] > 0 && $this[$key] < 1000) ? TRUE : FALSE;
+
130  }
+
+
+
+ +
+
+ + + + + +
+ + + + + + + + +
TeamSpeak3_Node_Abstract::iconGetName ( $key)
+
+inherited
+
+ +

Returns the internal path of the node icon.

+
Parameters
+ + +
string$key
+
+
+
Returns
TeamSpeak3_Helper_String
+ +

Definition at line 138 of file Abstract.php.

+ +

Referenced by TeamSpeak3_Node_Abstract\getInfo(), TeamSpeak3_Node_Channelgroup\iconDownload(), TeamSpeak3_Node_Servergroup\iconDownload(), iconDownload(), TeamSpeak3_Node_Channel\iconDownload(), and TeamSpeak3_Node_Server\iconDownload().

+
139  {
+
140  $iconid = ($this[$key] < 0) ? (pow(2, 32))-($this[$key]*-1) : $this[$key];
+
141 
+
142  return new TeamSpeak3_Helper_String("/icon_" . $iconid);
+
143  }
+
+
+
+ +
+
+ + + + + +
+ + + + + + + + +
TeamSpeak3_Node_Abstract::getClass ( $prefix = "ts3_")
+
+inherited
+
+ +

Returns a possible classname for the node which can be used as a HTML property.

+
Parameters
+ + +
string$prefix
+
+
+
Returns
string
+ +

Definition at line 151 of file Abstract.php.

+ +

References TeamSpeak3_Helper_String\factory().

+
152  {
+
153  if($this instanceof TeamSpeak3_Node_Channel && $this->isSpacer())
+
154  {
+
155  return $prefix . "spacer";
+
156  }
+
157  elseif($this instanceof TeamSpeak3_Node_Client && $this["client_type"])
+
158  {
+
159  return $prefix . "query";
+
160  }
+
161 
+
162  return $prefix . TeamSpeak3_Helper_String::factory(get_class($this))->section("_", 2)->toLower();
+
163  }
+
+
+
+ +
+
+ + + + + +
+ + + + + + + + +
TeamSpeak3_Node_Abstract::getViewer (TeamSpeak3_Viewer_Interface $viewer)
+
+inherited
+
+ +

Returns the HTML code to display a TeamSpeak 3 viewer.

+
Parameters
+ + +
TeamSpeak3_Viewer_Interface$viewer
+
+
+
Returns
string
+ +

Definition at line 192 of file Abstract.php.

+ +

References TeamSpeak3_Viewer_Interface\fetchObject().

+
193  {
+
194  $html = $viewer->fetchObject($this);
+
195 
+
196  $iterator = new RecursiveIteratorIterator($this, RecursiveIteratorIterator::SELF_FIRST);
+
197 
+
198  foreach($iterator as $node)
+
199  {
+
200  $siblings = array();
+
201 
+
202  for($level = 0; $level < $iterator->getDepth(); $level++)
+
203  {
+
204  $siblings[] = ($iterator->getSubIterator($level)->hasNext()) ? 1 : 0;
+
205  }
+
206 
+
207  $siblings[] = (!$iterator->getSubIterator($level)->hasNext()) ? 1 : 0;
+
208 
+
209  $html .= $viewer->fetchObject($node, $siblings);
+
210  }
+
211 
+
212  return $html;
+
213  }
+
+
+
+ +
+
+ + + + + +
+ + + + + + + + + + + + + + + + + + +
TeamSpeak3_Node_Abstract::filterList (array $nodes = array(),
array $rules = array() 
)
+
+protectedinherited
+
+ +

Filters given node list array using specified filter rules.

+
Parameters
+ + + +
array$nodes
array$rules
+
+
+
Returns
array
+ +

Definition at line 222 of file Abstract.php.

+ +

Referenced by TeamSpeak3_Node_Server\channelGroupList(), TeamSpeak3_Node_Server\channelList(), TeamSpeak3_Node_Channel\clientList(), TeamSpeak3_Node_Server\clientList(), TeamSpeak3_Node_Server\serverGroupList(), TeamSpeak3_Node_Host\serverList(), and TeamSpeak3_Node_Channel\subChannelList().

+
223  {
+
224  if(!empty($rules))
+
225  {
+
226  foreach($nodes as $node)
+
227  {
+
228  if(!$node instanceof TeamSpeak3_Node_Abstract) continue;
+
229 
+
230  $props = $node->getInfo(FALSE);
+
231  $props = array_intersect_key($props, $rules);
+
232  $match = TRUE;
+
233 
+
234  foreach($props as $key => $val)
+
235  {
+
236  if($val instanceof TeamSpeak3_Helper_String)
+
237  {
+
238  $match = $val->contains($rules[$key], TRUE);
+
239  }
+
240  else
+
241  {
+
242  $match = $val == $rules[$key];
+
243  }
+
244 
+
245  if($match === FALSE)
+
246  {
+
247  unset($nodes[$node->getId()]);
+
248  }
+
249  }
+
250  }
+
251  }
+
252 
+
253  return $nodes;
+
254  }
+
+
+
+ +
+
+ + + + + +
+ + + + + + + + + + + + + + + + + + +
TeamSpeak3_Node_Abstract::getInfo ( $extend = TRUE,
 $convert = FALSE 
)
+
+inherited
+
+ +

Returns all information available on this node.

+

If $convert is enabled, some property values will be converted to human-readable values.

+
Parameters
+ + + +
boolean$extend
boolean$convert
+
+
+
Returns
array
+ +

Definition at line 264 of file Abstract.php.

+ +

References TeamSpeak3_Node_Abstract\$nodeInfo, TeamSpeak3_Helper_Convert\bytes(), TeamSpeak3_Helper_String\factory(), TeamSpeak3_Node_Abstract\fetchNodeInfo(), TeamSpeak3_Node_Abstract\iconGetName(), TeamSpeak3_Helper_Convert\seconds(), and TeamSpeak3_Helper_Convert\version().

+
265  {
+
266  if($extend)
+
267  {
+
268  $this->fetchNodeInfo();
+
269  }
+
270 
+
271  if($convert)
+
272  {
+
273  $info = $this->nodeInfo;
+
274 
+
275  foreach($info as $key => $val)
+
276  {
+ +
278 
+
279  if($key->contains("_bytes_"))
+
280  {
+
281  $info[$key->toString()] = TeamSpeak3_Helper_Convert::bytes($val);
+
282  }
+
283  elseif($key->contains("_bandwidth_"))
+
284  {
+
285  $info[$key->toString()] = TeamSpeak3_Helper_Convert::bytes($val) . "/s";
+
286  }
+
287  elseif($key->contains("_packets_"))
+
288  {
+
289  $info[$key->toString()] = number_format($val, null, null, ".");
+
290  }
+
291  elseif($key->contains("_packetloss_"))
+
292  {
+
293  $info[$key->toString()] = sprintf("%01.2f", floatval($val->toString())*100) . "%";
+
294  }
+
295  elseif($key->endsWith("_uptime"))
+
296  {
+
297  $info[$key->toString()] = TeamSpeak3_Helper_Convert::seconds($val);
+
298  }
+
299  elseif($key->endsWith("_version"))
+
300  {
+
301  $info[$key->toString()] = TeamSpeak3_Helper_Convert::version($val);
+
302  }
+
303  elseif($key->endsWith("_icon_id"))
+
304  {
+
305  $info[$key->toString()] = $this->iconGetName($key)->filterDigits();
+
306  }
+
307  }
+
308 
+
309  return $info;
+
310  }
+
311 
+
312  return $this->nodeInfo;
+
313  }
+
+
+
+ +
+
+ + + + + +
+ + + + + + + + + + + + + + + + + + +
TeamSpeak3_Node_Abstract::getProperty ( $property,
 $default = null 
)
+
+inherited
+
+ +

Returns the specified property or a pre-defined default value from the node info array.

+
Parameters
+ + + +
string$property
mixed$default
+
+
+
Returns
mixed
+ +

Definition at line 322 of file Abstract.php.

+ +

References TeamSpeak3_Node_Abstract\fetchNodeInfo(), and TeamSpeak3_Node_Abstract\offsetExists().

+ +

Referenced by TeamSpeak3_Node_Server\sortClientList(), and TeamSpeak3_Node_Server\sortGroupList().

+
323  {
+
324  if(!$this->offsetExists($property))
+
325  {
+
326  $this->fetchNodeInfo();
+
327  }
+
328 
+
329  if(!$this->offsetExists($property))
+
330  {
+
331  return $default;
+
332  }
+
333 
+
334  return $this->nodeInfo[(string) $property];
+
335  }
+
+
+
+ +
+
+ + + + + +
+ + + + + + + +
TeamSpeak3_Node_Abstract::toString ()
+
+inherited
+
+ +

Returns a string representation of this node.

+
Returns
string
+ +

Definition at line 352 of file Abstract.php.

+ +

References TeamSpeak3_Node_Abstract\__toString().

+
353  {
+
354  return $this->__toString();
+
355  }
+
+
+
+ +
+
+ + + + + +
+ + + + + + + +
TeamSpeak3_Node_Abstract::toArray ()
+
+inherited
+
+ +

Returns an assoc array filled with current node info properties.

+
Returns
array
+ +

Definition at line 362 of file Abstract.php.

+ +

References TeamSpeak3_Node_Abstract\$nodeList.

+ +

Referenced by TeamSpeak3_Node_Server\channelFileInfo().

+
363  {
+
364  return $this->nodeList;
+
365  }
+
+
+
+ +
+
+ + + + + +
+ + + + + + + + + + + + + + + + + + +
TeamSpeak3_Node_Abstract::__call ( $name,
array $args 
)
+
+inherited
+
+ +

Called whenever we're using an unknown method.

+
Parameters
+ + + +
string$name
array$args
+
+
+
Exceptions
+ + +
TeamSpeak3_Node_Exception
+
+
+
Returns
mixed
+ +

Definition at line 375 of file Abstract.php.

+ +

References TeamSpeak3_Node_Abstract\getParent().

+
376  {
+
377  if($this->getParent() instanceof TeamSpeak3_Node_Abstract)
+
378  {
+
379  return call_user_func_array(array($this->getParent(), $name), $args);
+
380  }
+
381 
+
382  throw new TeamSpeak3_Node_Exception("node method '" . $name . "()' does not exist");
+
383  }
+
+
+
+ +
+
+ + + + + +
+ + + + + + + + + + + + + + + + + + +
TeamSpeak3_Node_Abstract::setStorage ( $key,
 $val 
)
+
+protectedinherited
+
+ +

Writes data to the internal storage array.

+
Parameters
+ + + +
string$key
mixed$val
+
+
+
Returns
void
+ +

Definition at line 392 of file Abstract.php.

+ +

Referenced by TeamSpeak3_Node_Host\login(), TeamSpeak3_Node_Host\serverSelect(), TeamSpeak3_Node_Host\serverSelectByPort(), TeamSpeak3_Node_Host\setExcludeQueryClients(), TeamSpeak3_Node_Host\setLoadClientlistFirst(), TeamSpeak3_Node_Host\setPredefinedQueryName(), and TeamSpeak3_Node_Host\setUseOfflineAsVirtual().

+
393  {
+
394  $this->storage[$key] = $val;
+
395  }
+
+
+
+ +
+
+ + + + + +
+ + + + + + + + + + + + + + + + + + +
TeamSpeak3_Node_Abstract::getStorage ( $key,
 $default = null 
)
+
+protectedinherited
+
+ +

Returns data from the internal storage array.

+
Parameters
+ + + +
string$key
mixed$default
+
+
+
Returns
mixed
+ +

Definition at line 404 of file Abstract.php.

+ +

Referenced by TeamSpeak3_Node_Host\__wakeup().

+
405  {
+
406  return (array_key_exists($key, $this->storage) && !empty($this->storage[$key])) ? $this->storage[$key] : $default;
+
407  }
+
+
+
+ +
+
+ + + + + +
+ + + + + + + + +
TeamSpeak3_Node_Abstract::delStorage ( $key)
+
+protectedinherited
+
+ +

Deletes data from the internal storage array.

+
Parameters
+ + +
string$key
+
+
+
Returns
void
+ +

Definition at line 415 of file Abstract.php.

+ +

Referenced by TeamSpeak3_Node_Host\logout(), and TeamSpeak3_Node_Host\serverDeselect().

+
416  {
+
417  unset($this->storage[$key]);
+
418  }
+
+
+
+ +
+
+ + + + + +
+ + + + + + + +
TeamSpeak3_Node_Abstract::__sleep ()
+
+inherited
+
+ +

Commit pending data.

+
Returns
array
+ +

Definition at line 425 of file Abstract.php.

+
426  {
+
427  return array("parent", "storage", "nodeId");
+
428  }
+
+
+
+ +
+
+ + + + + +
+ + + + + + + +
TeamSpeak3_Node_Abstract::fetchNodeList ()
+
+protectedinherited
+
+ +

+ +

Definition at line 433 of file Abstract.php.

+ +

Referenced by TeamSpeak3_Node_Abstract\verifyNodeList().

+
434  {
+
435  $this->nodeList = array();
+
436  }
+
+
+
+ +
+
+ + + + + +
+ + + + + + + +
TeamSpeak3_Node_Abstract::resetNodeInfo ()
+
+protectedinherited
+
+ +

+ +

Definition at line 449 of file Abstract.php.

+ +

Referenced by modify(), TeamSpeak3_Node_Channel\modify(), TeamSpeak3_Node_Host\modify(), and TeamSpeak3_Node_Server\modify().

+
450  {
+
451  $this->nodeInfo = array();
+
452  }
+
+
+
+ +
+
+ + + + + +
+ + + + + + + +
TeamSpeak3_Node_Abstract::verifyNodeList ()
+
+protectedinherited
+
+
+ +
+
+ + + + + +
+ + + + + + + +
TeamSpeak3_Node_Abstract::resetNodeList ()
+
+protectedinherited
+
+
+ +
+
+ + + + + +
+ + + + + + + +
TeamSpeak3_Node_Abstract::count ()
+
+inherited
+
+
+ + + +
+
+ + + + + +
+ + + + + + + +
TeamSpeak3_Node_Abstract::getChildren ()
+
+inherited
+
+ +

+ +

Definition at line 496 of file Abstract.php.

+ +

References TeamSpeak3_Node_Abstract\current(), and TeamSpeak3_Node_Abstract\verifyNodeList().

+
497  {
+
498  $this->verifyNodeList();
+
499 
+
500  return $this->current();
+
501  }
+
+
+
+ +
+
+ + + + + +
+ + + + + + + +
TeamSpeak3_Node_Abstract::hasChildren ()
+
+inherited
+
+ +

+ +

Definition at line 506 of file Abstract.php.

+ +

References TeamSpeak3_Node_Abstract\current(), and TeamSpeak3_Node_Abstract\verifyNodeList().

+
507  {
+
508  $this->verifyNodeList();
+
509 
+
510  return $this->current()->count() > 0;
+
511  }
+
+
+
+ +
+
+ + + + + +
+ + + + + + + +
TeamSpeak3_Node_Abstract::hasNext ()
+
+inherited
+
+ +

+ +

Definition at line 516 of file Abstract.php.

+ +

References TeamSpeak3_Node_Abstract\count(), TeamSpeak3_Node_Abstract\key(), and TeamSpeak3_Node_Abstract\verifyNodeList().

+
517  {
+
518  $this->verifyNodeList();
+
519 
+
520  return $this->key()+1 < $this->count();
+
521  }
+
+
+
+ +
+
+ + + + + +
+ + + + + + + +
TeamSpeak3_Node_Abstract::key ()
+
+inherited
+
+ +

+ +

Definition at line 526 of file Abstract.php.

+ +

References TeamSpeak3_Node_Abstract\verifyNodeList().

+ +

Referenced by TeamSpeak3_Node_Abstract\hasNext(), and TeamSpeak3_Node_Abstract\valid().

+
527  {
+
528  $this->verifyNodeList();
+
529 
+
530  return key($this->nodeList);
+
531  }
+
+
+
+ +
+
+ + + + + +
+ + + + + + + +
TeamSpeak3_Node_Abstract::valid ()
+
+inherited
+
+ +

+ +

Definition at line 536 of file Abstract.php.

+ +

References TeamSpeak3_Node_Abstract\key(), and TeamSpeak3_Node_Abstract\verifyNodeList().

+
537  {
+
538  $this->verifyNodeList();
+
539 
+
540  return $this->key() !== null;
+
541  }
+
+
+
+ +
+
+ + + + + +
+ + + + + + + +
TeamSpeak3_Node_Abstract::next ()
+
+inherited
+
+ +

+ +

Definition at line 546 of file Abstract.php.

+ +

References TeamSpeak3_Node_Abstract\verifyNodeList().

+
547  {
+
548  $this->verifyNodeList();
+
549 
+
550  return next($this->nodeList);
+
551  }
+
+
+
+ +
+
+ + + + + +
+ + + + + + + +
TeamSpeak3_Node_Abstract::rewind ()
+
+inherited
+
+ +

+ +

Definition at line 556 of file Abstract.php.

+ +

References TeamSpeak3_Node_Abstract\verifyNodeList().

+
557  {
+
558  $this->verifyNodeList();
+
559 
+
560  return reset($this->nodeList);
+
561  }
+
+
+
+ +
+
+ + + + + +
+ + + + + + + + +
TeamSpeak3_Node_Abstract::offsetExists ( $offset)
+
+inherited
+
+ +

+ +

Definition at line 566 of file Abstract.php.

+ +

Referenced by TeamSpeak3_Node_Abstract\getProperty(), and TeamSpeak3_Node_Abstract\offsetGet().

+
567  {
+
568  return array_key_exists((string) $offset, $this->nodeInfo) ? TRUE : FALSE;
+
569  }
+
+
+
+ +
+
+ + + + + +
+ + + + + + + + +
TeamSpeak3_Node_Abstract::offsetGet ( $offset)
+
+inherited
+
+ +

+ +

Definition at line 574 of file Abstract.php.

+ +

References TeamSpeak3_Node_Abstract\fetchNodeInfo(), and TeamSpeak3_Node_Abstract\offsetExists().

+ +

Referenced by TeamSpeak3_Node_Abstract\__get().

+
575  {
+
576  if(!$this->offsetExists($offset))
+
577  {
+
578  $this->fetchNodeInfo();
+
579  }
+
580 
+
581  if(!$this->offsetExists($offset))
+
582  {
+
583  throw new TeamSpeak3_Adapter_ServerQuery_Exception("invalid parameter", 0x602);
+
584  }
+
585 
+
586  return $this->nodeInfo[(string) $offset];
+
587  }
+
+
+
+ +
+
+ + + + + +
+ + + + + + + + + + + + + + + + + + +
TeamSpeak3_Node_Abstract::offsetSet ( $offset,
 $value 
)
+
+inherited
+
+ +

+ +

Definition at line 592 of file Abstract.php.

+ +

Referenced by TeamSpeak3_Node_Abstract\__set().

+
593  {
+
594  if(method_exists($this, "modify"))
+
595  {
+
596  return $this->modify(array((string) $offset => $value));
+
597  }
+
598 
+
599  throw new TeamSpeak3_Node_Exception("node '" . get_class($this) . "' is read only");
+
600  }
+
+
+
+ +
+
+ + + + + +
+ + + + + + + + +
TeamSpeak3_Node_Abstract::offsetUnset ( $offset)
+
+inherited
+
+ +

+ +

Definition at line 605 of file Abstract.php.

+
606  {
+
607  unset($this->nodeInfo[(string) $offset]);
+
608  }
+
+
+
+ +
+
+ + + + + +
+ + + + + + + + +
TeamSpeak3_Node_Abstract::__get ( $offset)
+
+inherited
+
+ +

+ +

Definition at line 613 of file Abstract.php.

+ +

References TeamSpeak3_Node_Abstract\offsetGet().

+
614  {
+
615  return $this->offsetGet($offset);
+
616  }
+
+
+
+ +
+
+ + + + + +
+ + + + + + + + + + + + + + + + + + +
TeamSpeak3_Node_Abstract::__set ( $offset,
 $value 
)
+
+inherited
+
+ +

+ +

Definition at line 621 of file Abstract.php.

+ +

References TeamSpeak3_Node_Abstract\offsetSet().

+
622  {
+
623  $this->offsetSet($offset, $value);
+
624  }
+
+
+
+

Member Data Documentation

+ +
+
+ + + + + +
+ + + + +
TeamSpeak3_Node_Abstract::$parent = null
+
+protectedinherited
+
+ +

+ +

Definition at line 37 of file Abstract.php.

+ +

Referenced by TeamSpeak3_Node_Abstract\getParent().

+ +
+
+ + + +
+
+ + + + + +
+ + + + +
TeamSpeak3_Node_Abstract::$nodeId = 0x00
+
+protectedinherited
+
+ +

+ +

Definition at line 47 of file Abstract.php.

+ +

Referenced by TeamSpeak3_Node_Abstract\getId().

+ +
+
+ +
+
+ + + + + +
+ + + + +
TeamSpeak3_Node_Abstract::$nodeList = null
+
+protectedinherited
+
+ +

+ +

Definition at line 52 of file Abstract.php.

+ +

Referenced by TeamSpeak3_Node_Abstract\toArray().

+ +
+
+ +
+
+ + + + + +
+ + + + +
TeamSpeak3_Node_Abstract::$nodeInfo = array()
+
+protectedinherited
+
+ +

+ +

Definition at line 57 of file Abstract.php.

+ +

Referenced by TeamSpeak3_Node_Abstract\getInfo().

+ +
+
+ +
+
+ + + + + +
+ + + + +
TeamSpeak3_Node_Abstract::$storage = array()
+
+protectedinherited
+
+ +

+ +

Definition at line 62 of file Abstract.php.

+ +
+
+
The documentation for this class was generated from the following file: +
+
+ + + + diff --git a/lib/docs/html/class_team_speak3___node___client.js b/lib/docs/html/class_team_speak3___node___client.js new file mode 100644 index 0000000..0169967 --- /dev/null +++ b/lib/docs/html/class_team_speak3___node___client.js @@ -0,0 +1,79 @@ +var class_team_speak3___node___client = +[ + [ "__construct", "class_team_speak3___node___client.html#a0d9eac93fcf1b8efae5eb00feefc250c", null ], + [ "modify", "class_team_speak3___node___client.html#a9bec04a0c6f0174811830bd5048ef78e", null ], + [ "modifyDb", "class_team_speak3___node___client.html#a8b4bf4bb745a772274d71b40f90b8dc7", null ], + [ "deleteDb", "class_team_speak3___node___client.html#a0ee114d931783274bcbb344c8beccf91", null ], + [ "infoDb", "class_team_speak3___node___client.html#a63fd3d66404a46a1ca7fb0795a83818e", null ], + [ "message", "class_team_speak3___node___client.html#a0e64a76b7a553a83145cd9b42e6d3041", null ], + [ "move", "class_team_speak3___node___client.html#aac47e6e99aa14a5e33696b67854f4d36", null ], + [ "kick", "class_team_speak3___node___client.html#ade2debd43e978373134575711c85dd17", null ], + [ "poke", "class_team_speak3___node___client.html#a0bffc69732548b99511434e22caf17ec", null ], + [ "ban", "class_team_speak3___node___client.html#acd8e79afa687108fcdbee4dad7a3cde0", null ], + [ "customInfo", "class_team_speak3___node___client.html#adab4e78a0ba4366b8d73d50993bbec49", null ], + [ "permOverview", "class_team_speak3___node___client.html#ab7f8adc763cf45dd64b51bae0e17d884", null ], + [ "permList", "class_team_speak3___node___client.html#a501fc3581568d70b327416f47b12520a", null ], + [ "permAssign", "class_team_speak3___node___client.html#af26bd82c2d6b4e42304d828a4a8ba4f8", null ], + [ "permAssignByName", "class_team_speak3___node___client.html#a3debc27139d7a9af950f0db6f47c47c8", null ], + [ "permRemove", "class_team_speak3___node___client.html#ae4dbe8372c97ad18ffb930022ba7e01d", null ], + [ "permRemoveByName", "class_team_speak3___node___client.html#a94a311c81d0e6e5f94e9c0470cd8d054", null ], + [ "setChannelGroup", "class_team_speak3___node___client.html#a7231a1c384650d2588b4aec4d3977f6d", null ], + [ "addServerGroup", "class_team_speak3___node___client.html#a70f773eefe1d4f67f5c15974ca609a6d", null ], + [ "remServerGroup", "class_team_speak3___node___client.html#a5ec1034f4f801800ab5a86741c66bbd0", null ], + [ "avatarGetName", "class_team_speak3___node___client.html#a1c1b0fa71731df7ac3d4098b046938c7", null ], + [ "avatarDownload", "class_team_speak3___node___client.html#a7101c45f9e7aa653b572de8b2f41109b", null ], + [ "getClones", "class_team_speak3___node___client.html#a1b028c8df6a52433a3e6b2f8ab302553", null ], + [ "getRev", "class_team_speak3___node___client.html#a4a941f045f697ed0ed494e9d785b037b", null ], + [ "memberOf", "class_team_speak3___node___client.html#a9d9a31c0821e3dc13da505000b0adcbf", null ], + [ "iconDownload", "class_team_speak3___node___client.html#a165635e00e068e1f35ae2f32082334b2", null ], + [ "sendPluginCmd", "class_team_speak3___node___client.html#ac6bd2a4585bfe075d794a6fb5842fdba", null ], + [ "fetchNodeInfo", "class_team_speak3___node___client.html#ac3e560bcb715c46919000cd1820f7382", null ], + [ "getUniqueId", "class_team_speak3___node___client.html#a62a1fed92852d1b91b7a5f6036a867f3", null ], + [ "getIcon", "class_team_speak3___node___client.html#a0ba0213562c9ca67efa1507076ca3079", null ], + [ "getSymbol", "class_team_speak3___node___client.html#a66d8bd549b7add92ad2e0046a9fa9889", null ], + [ "__toString", "class_team_speak3___node___client.html#a1cde3ec654c5ee8e9c6aaf187f9f037b", null ], + [ "request", "class_team_speak3___node___client.html#a35dcdb8a7b62d7990307bfb95ce3937c", null ], + [ "prepare", "class_team_speak3___node___client.html#a6589a4fedd410e9cdb55fe20abc410c0", null ], + [ "execute", "class_team_speak3___node___client.html#af6811efc5065b8aadfd6792334ea6977", null ], + [ "getParent", "class_team_speak3___node___client.html#a44618fb948562e89515330e65d08da9a", null ], + [ "getId", "class_team_speak3___node___client.html#a4a0a5545abc2460d1d9b3d6b52d07cbe", null ], + [ "iconIsLocal", "class_team_speak3___node___client.html#aa78cba098574598dd9c0331cac1f39a1", null ], + [ "iconGetName", "class_team_speak3___node___client.html#a02ce34dce8fbf7881ce2323f7af0dca3", null ], + [ "getClass", "class_team_speak3___node___client.html#af6e1416ad2e568f48ff0d85b15b2a673", null ], + [ "getViewer", "class_team_speak3___node___client.html#a3d3f27dab5569edf3a737be080e7c8bc", null ], + [ "filterList", "class_team_speak3___node___client.html#ad826df3c71029ca48839dbe9aa3559b8", null ], + [ "getInfo", "class_team_speak3___node___client.html#af63ae54f10c02ec6b1033425f795fef4", null ], + [ "getProperty", "class_team_speak3___node___client.html#a585728537b56194aeab30b0316126b89", null ], + [ "toString", "class_team_speak3___node___client.html#ac1b521aa7f9871103da5cbb5d3330125", null ], + [ "toArray", "class_team_speak3___node___client.html#acf3c56763859b8adb21379f0cc6394ad", null ], + [ "__call", "class_team_speak3___node___client.html#a63fb203f511e99625428f70f0525950c", null ], + [ "setStorage", "class_team_speak3___node___client.html#a13303ca9275df184348ed7363d9d7c9a", null ], + [ "getStorage", "class_team_speak3___node___client.html#a5a6888304aca8d5f12fecb460b0ef6d2", null ], + [ "delStorage", "class_team_speak3___node___client.html#afbed20ee78d7e5a38097078dd91e70fd", null ], + [ "__sleep", "class_team_speak3___node___client.html#a19b5c8aaac5ef0af2f1393bffea186c5", null ], + [ "fetchNodeList", "class_team_speak3___node___client.html#ab78c8a0a0bcd7458d310a9e05f012409", null ], + [ "resetNodeInfo", "class_team_speak3___node___client.html#a266578bece0506453e1f1bfba1f08966", null ], + [ "verifyNodeList", "class_team_speak3___node___client.html#ac66aeb30418e385a5727c191bb8df87d", null ], + [ "resetNodeList", "class_team_speak3___node___client.html#a9ead519e8396990ba30d79d6bed9d286", null ], + [ "count", "class_team_speak3___node___client.html#ad22d04a2800ae672f6117de3afb0e9c4", null ], + [ "current", "class_team_speak3___node___client.html#a1c78dbb54df73f8c5dabe41ebd476207", null ], + [ "getChildren", "class_team_speak3___node___client.html#a4b9dee48bb72f0eab8b9d4b0ea25c5f4", null ], + [ "hasChildren", "class_team_speak3___node___client.html#a7769506879dac3170344d8e59218b644", null ], + [ "hasNext", "class_team_speak3___node___client.html#ad9aee4153360fd8139f6b0d68efff56f", null ], + [ "key", "class_team_speak3___node___client.html#adb87ddbef3247f346c2623f4d91981a1", null ], + [ "valid", "class_team_speak3___node___client.html#a1b0100e4a548e9464d75dcbfe6ac297a", null ], + [ "next", "class_team_speak3___node___client.html#a3273e5078ee49a4bd55620327ed09a5e", null ], + [ "rewind", "class_team_speak3___node___client.html#a9c416b77eeea1ecec6652936703d9ff7", null ], + [ "offsetExists", "class_team_speak3___node___client.html#ad0d64388e2a374203fa16760b923b087", null ], + [ "offsetGet", "class_team_speak3___node___client.html#a716e7512816cf490e5a16ec307f7d889", null ], + [ "offsetSet", "class_team_speak3___node___client.html#a5e9be0418e0cc969d47f4b7475adb21d", null ], + [ "offsetUnset", "class_team_speak3___node___client.html#a732408c9a027db531af8ecce82401c07", null ], + [ "__get", "class_team_speak3___node___client.html#ac8ab685826ff08e853de2aebad9df459", null ], + [ "__set", "class_team_speak3___node___client.html#a14930274e5498a5a8816ef751ff87946", null ], + [ "$parent", "class_team_speak3___node___client.html#a14a79cc9ca202ba4dbfc054f0c18583f", null ], + [ "$server", "class_team_speak3___node___client.html#acadc746cd7eb244d61f195494924f6b8", null ], + [ "$nodeId", "class_team_speak3___node___client.html#ac1bdee23c7d066edf3d6cb8e75999887", null ], + [ "$nodeList", "class_team_speak3___node___client.html#a37b39fa104ce36c0f0ea142934c05346", null ], + [ "$nodeInfo", "class_team_speak3___node___client.html#a50699be5fe1e43f7ae2e528db3c1098b", null ], + [ "$storage", "class_team_speak3___node___client.html#a33efbacf1a9aa094ccc39b0b25f3d369", null ] +]; \ No newline at end of file diff --git a/lib/docs/html/class_team_speak3___node___client.png b/lib/docs/html/class_team_speak3___node___client.png new file mode 100644 index 0000000000000000000000000000000000000000..26917fd0eefb80b46ac473e855da054e96b9d1f1 GIT binary patch literal 1823 zcma)-3s4hR6oz?KQVoW|X-yyzQt{DNf`2x1qs$WtYP6bMnOs1XI^Eh4lHPz%IT zNI~RbEzzw&8|9T4LIDL#A)xYVjFA?EN`M$b35O+~@BU}zoV|C?_ut)Y zf8V_(tIb#I>FJqxe(ZigPtO1kbQZ!8%&R;^Ja9w%dk1(dEiC~l8=KjeEMNik`f6@& zF7l}>1|j0y0pEjqAZdB@JqRFz>S|B--2sXElhVlp6VAvz!&~T;yd{dO+YD|!Ng5vC zefMg0U4=Cde$k$dr&4iQU~>6K z{T0r|Ld^O=YTuTUBVoqB4!Gps6#A+-fs6i&O0KXrDS z7!$)%1*k&xy9ps}tak0_H0I&f){0NPWxm-pa5A&TLfKze*-fc^GDFyLJb6PRZMse% zq{U&udwzAsF(O!WL7GEr9HL!_Wfvt}hIFW;(%bySP0KqOV+K$cU1f#iFpS$(l3Dgi zBDD`?2F)YPAQ(d|lr^j~Z;xgudq?bly3~*+r9I^B-dMd@a>AbJMl0N)49Yt(wZA!d)Zw=% z5r>J)p|qQ7GRbIST!wa7a8dG5xRz1LzVUqycHdGrmghpjaE+uJr%+FKMl=z?6Vyz` z2f8qJE!XSRptm?PP8rdW{B5;Voz-_O8cUi!Er0qm+936WIWaZVi`17!t93egbFMCv zF(KuhJ>Joukt%k+!vPsiXr;P1Hw97)K3(5Oim2aL{{Yy!*hox!^aAw=LbYiHt1vJKMn(w|DZ9zc)pD#kP;yE>#yi8lhVO*tt$iH&#u@<{2Ea=+ENYlwpX*wNqH=S>Oo^ z;Fmd}OTn4kRNSDq?S3zdp(l(c#@o_TT+0~e7gQ=`m+IDQBXDnOQi}Q?5US`qTrB%L z^YIgOUOcC_n>AaJ(_{vEYl-20D5=zGx#InjeU_&#n2p9l#S}l_?mH$)DL(B2yjD0z zfKPWs + + + + + +TeamSpeak 3 PHP Framework: Member List + + + + + + + + + + + + + +
+
+ + + + + + + +
+
TeamSpeak 3 PHP Framework +  1.1.23 +
+
Copyright © Planet TeamSpeak. All rights reserved.
+
+
+ + + + + +
+
+ +
+
+
+ +
+ + + + +
+ +
+ +
+
+
TeamSpeak3_Node_Exception Member List
+
+
+ +

This is the complete list of members for TeamSpeak3_Node_Exception, including all inherited members.

+ + + + + + + +
$messages (defined in TeamSpeak3_Exception)TeamSpeak3_Exceptionprotectedstatic
__construct($mesg, $code=0x00)TeamSpeak3_Exception
getSender()TeamSpeak3_Exception
prepareCustomMessage(TeamSpeak3_Helper_String $mesg)TeamSpeak3_Exceptionprotected
registerCustomMessage($code, $mesg)TeamSpeak3_Exceptionstatic
unregisterCustomMessage($code)TeamSpeak3_Exceptionstatic
+
+ + + + diff --git a/lib/docs/html/class_team_speak3___node___exception.html b/lib/docs/html/class_team_speak3___node___exception.html new file mode 100644 index 0000000..13c819f --- /dev/null +++ b/lib/docs/html/class_team_speak3___node___exception.html @@ -0,0 +1,376 @@ + + + + + + +TeamSpeak 3 PHP Framework: TeamSpeak3_Node_Exception Class Reference + + + + + + + + + + + + + +
+
+ + + + + + + +
+
TeamSpeak 3 PHP Framework +  1.1.23 +
+
Copyright © Planet TeamSpeak. All rights reserved.
+
+
+ + + + + +
+
+ +
+
+
+ +
+ + + + +
+ +
+ + +
+ +

Enhanced exception class for TeamSpeak3_Node_Abstract objects. + More...

+
+ + Inheritance diagram for TeamSpeak3_Node_Exception:
+
+
+ + + + + + +

+Public Member Functions

 getSender ()
 Returns the class from which the exception was thrown. More...
 
+ + + + + + + +

+Static Public Member Functions

static registerCustomMessage ($code, $mesg)
 Registers a custom error message to $code. More...
 
static unregisterCustomMessage ($code)
 Unregisters a custom error message from $code. More...
 
+ + + + +

+Protected Member Functions

 prepareCustomMessage (TeamSpeak3_Helper_String $mesg)
 Prepares a custom error message by replacing pre-defined signs with given values. More...
 
+ + + +

+Static Protected Attributes

+static $messages = array()
 
+

Detailed Description

+

Enhanced exception class for TeamSpeak3_Node_Abstract objects.

+ +

Definition at line 32 of file Exception.php.

+

Member Function Documentation

+ +
+
+ + + + + +
+ + + + + + + + +
TeamSpeak3_Exception::prepareCustomMessage (TeamSpeak3_Helper_String $mesg)
+
+protectedinherited
+
+ +

Prepares a custom error message by replacing pre-defined signs with given values.

+
Parameters
+ + +
TeamSpeak3_Helper_String$mesg
+
+
+
Returns
TeamSpeak3_Helper_String
+ +

Definition at line 66 of file Exception.php.

+ +

References TeamSpeak3_Helper_String\arg().

+ +

Referenced by TeamSpeak3_Exception\__construct().

+
67  {
+
68  $args = array(
+
69  "code" => $this->getCode(),
+
70  "mesg" => $this->getMessage(),
+
71  "line" => $this->getLine(),
+
72  "file" => $this->getFile(),
+
73  );
+
74 
+
75  return $mesg->arg($args)->toString();
+
76  }
+
+
+
+ +
+
+ + + + + +
+ + + + + + + + + + + + + + + + + + +
static TeamSpeak3_Exception::registerCustomMessage ( $code,
 $mesg 
)
+
+staticinherited
+
+ +

Registers a custom error message to $code.

+
Parameters
+ + + +
integer$code
string$mesg
+
+
+
Exceptions
+ + +
TeamSpeak3_Exception
+
+
+
Returns
void
+ +

Definition at line 86 of file Exception.php.

+
87  {
+
88  if(array_key_exists((int) $code, self::$messages))
+
89  {
+
90  throw new self("custom message for code 0x" . strtoupper(dechex($code)) . " is already registered");
+
91  }
+
92 
+
93  if(!is_string($mesg))
+
94  {
+
95  throw new self("custom message for code 0x" . strtoupper(dechex($code)) . " must be a string");
+
96  }
+
97 
+
98  self::$messages[(int) $code] = new TeamSpeak3_Helper_String($mesg);
+
99  }
+
+
+
+ +
+
+ + + + + +
+ + + + + + + + +
static TeamSpeak3_Exception::unregisterCustomMessage ( $code)
+
+staticinherited
+
+ +

Unregisters a custom error message from $code.

+
Parameters
+ + +
integer$code
+
+
+
Exceptions
+ + +
TeamSpeak3_Exception
+
+
+
Returns
void
+ +

Definition at line 108 of file Exception.php.

+
109  {
+
110  if(!array_key_exists((int) $code, self::$messages))
+
111  {
+
112  throw new self("custom message for code 0x" . strtoupper(dechex($code)) . " is not registered");
+
113  }
+
114 
+
115  unset(self::$messages[intval($code)]);
+
116  }
+
+
+
+ +
+
+ + + + + +
+ + + + + + + +
TeamSpeak3_Exception::getSender ()
+
+inherited
+
+ +

Returns the class from which the exception was thrown.

+
Returns
string
+ +

Definition at line 123 of file Exception.php.

+
124  {
+
125  $trace = $this->getTrace();
+
126 
+
127  return (isset($trace[0]["class"])) ? $trace[0]["class"] : "{main}";
+
128  }
+
+
+
+
The documentation for this class was generated from the following file: +
+
+ + + + diff --git a/lib/docs/html/class_team_speak3___node___exception.js b/lib/docs/html/class_team_speak3___node___exception.js new file mode 100644 index 0000000..c067eed --- /dev/null +++ b/lib/docs/html/class_team_speak3___node___exception.js @@ -0,0 +1,5 @@ +var class_team_speak3___node___exception = +[ + [ "prepareCustomMessage", "class_team_speak3___node___exception.html#a3bfcdf7b85a393b7a8b05b048ae3279c", null ], + [ "getSender", "class_team_speak3___node___exception.html#ae7d4b369dd11d3cf56d120acae0cf1db", null ] +]; \ No newline at end of file diff --git a/lib/docs/html/class_team_speak3___node___exception.png b/lib/docs/html/class_team_speak3___node___exception.png new file mode 100644 index 0000000000000000000000000000000000000000..8ffe846db9bb3ff5242bd4cf76ef8613531f4530 GIT binary patch literal 1000 zcmeAS@N?(olHy`uVBq!ia0vp^+kv=)gBeIpn$vX^NJ#|vgt-3y{~yS_|NOI8)!qp} z78oBmaA2nIwplt z+kXAll9FXAN|zqCeK(7lD!O~(C#lkH-ChbNXRh6!OeSQD*ev4vP zmtTKsC!DX2|NE|P_4bYvqW=#@yF9TM0C~1$dq;_gsFP@TpcTA$G~gm+6`6=gAt= zdkfygx*CU-zR~r6yUNVjO#jxedr8}8T377;cuy%*cw4oK{`|LBzpq=B^Zn7f>Zf~o zeHX=q-}~(;{ne`BZR)f~hom*aqt%bIneVaQtQ)<2|Bt_y?mm6HV&C)!=C6L=xSjXP zG=8a4)pJkD4fS>N=c?~i^E)^B*VcXJ2Sn@a*NH3JzODVbyL$KJ&E^M`ZC>+!5QT=< i@$(<&1$iC*$bRkPWZ~N>(}jWAlEKr}&t;ucLK6TXaskf( literal 0 HcmV?d00001 diff --git a/lib/docs/html/class_team_speak3___node___host-members.html b/lib/docs/html/class_team_speak3___node___host-members.html new file mode 100644 index 0000000..980dada --- /dev/null +++ b/lib/docs/html/class_team_speak3___node___host-members.html @@ -0,0 +1,245 @@ + + + + + + +TeamSpeak 3 PHP Framework: Member List + + + + + + + + + + + + + +
+
+ + + + + + + +
+
TeamSpeak 3 PHP Framework +  1.1.23 +
+
Copyright © Planet TeamSpeak. All rights reserved.
+
+
+ + + + + +
+
+ +
+
+
+ +
+ + + + +
+ +
+ +
+
+
TeamSpeak3_Node_Host Member List
+
+
+ +

This is the complete list of members for TeamSpeak3_Node_Host, including all inherited members.

+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
$exclude_query_clientsTeamSpeak3_Node_Hostprotected
$nodeIdTeamSpeak3_Node_Abstractprotected
$nodeInfoTeamSpeak3_Node_Abstractprotected
$nodeListTeamSpeak3_Node_Abstractprotected
$parentTeamSpeak3_Node_Abstractprotected
$permissionCatsTeamSpeak3_Node_Hostprotected
$permissionEndsTeamSpeak3_Node_Hostprotected
$permissionListTeamSpeak3_Node_Hostprotected
$predefined_query_nameTeamSpeak3_Node_Hostprotected
$serverTeamSpeak3_Node_Abstractprotected
$serverListTeamSpeak3_Node_Hostprotected
$sort_clients_channelsTeamSpeak3_Node_Hostprotected
$start_offline_virtualTeamSpeak3_Node_Hostprotected
$storageTeamSpeak3_Node_Abstractprotected
$versionTeamSpeak3_Node_Hostprotected
$whoamiTeamSpeak3_Node_Hostprotected
__call($name, array $args)TeamSpeak3_Node_Abstract
__construct(TeamSpeak3_Adapter_ServerQuery $squery)TeamSpeak3_Node_Host
__get($offset)TeamSpeak3_Node_Abstract
__set($offset, $value)TeamSpeak3_Node_Abstract
__sleep()TeamSpeak3_Node_Abstract
__toString()TeamSpeak3_Node_Host
__wakeup()TeamSpeak3_Node_Host
bindingList()TeamSpeak3_Node_Host
count()TeamSpeak3_Node_Abstract
current()TeamSpeak3_Node_Abstract
delStorage($key)TeamSpeak3_Node_Abstractprotected
execute($cmd, array $params=array())TeamSpeak3_Node_Abstract
fetchNodeInfo()TeamSpeak3_Node_Hostprotected
fetchNodeList()TeamSpeak3_Node_Hostprotected
fetchPermissionCats()TeamSpeak3_Node_Hostprotected
fetchPermissionList()TeamSpeak3_Node_Hostprotected
filterList(array $nodes=array(), array $rules=array())TeamSpeak3_Node_Abstractprotected
getAdapter()TeamSpeak3_Node_Host
getAdapterHost()TeamSpeak3_Node_Host
getAdapterPort()TeamSpeak3_Node_Host
getChildren()TeamSpeak3_Node_Abstract
getClass($prefix="ts3_")TeamSpeak3_Node_Abstract
getExcludeQueryClients()TeamSpeak3_Node_Host
getIcon()TeamSpeak3_Node_Host
getId()TeamSpeak3_Node_Abstract
getInfo($extend=TRUE, $convert=FALSE)TeamSpeak3_Node_Abstract
getLoadClientlistFirst()TeamSpeak3_Node_Host
getParent()TeamSpeak3_Node_Abstract
getPredefinedQueryName()TeamSpeak3_Node_Host
getProperty($property, $default=null)TeamSpeak3_Node_Abstract
getStorage($key, $default=null)TeamSpeak3_Node_Abstractprotected
getSymbol()TeamSpeak3_Node_Host
getUniqueId()TeamSpeak3_Node_Host
getUseOfflineAsVirtual()TeamSpeak3_Node_Host
getViewer(TeamSpeak3_Viewer_Interface $viewer)TeamSpeak3_Node_Abstract
hasChildren()TeamSpeak3_Node_Abstract
hasNext()TeamSpeak3_Node_Abstract
iconGetName($key)TeamSpeak3_Node_Abstract
iconIsLocal($key)TeamSpeak3_Node_Abstract
key()TeamSpeak3_Node_Abstract
logAdd($logmsg, $loglevel=TeamSpeak3::LOGLEVEL_INFO)TeamSpeak3_Node_Host
login($username, $password)TeamSpeak3_Node_Host
logout()TeamSpeak3_Node_Host
logView($lines=30, $begin_pos=null, $reverse=null, $instance=TRUE)TeamSpeak3_Node_Host
message($msg)TeamSpeak3_Node_Host
modify(array $properties)TeamSpeak3_Node_Host
next()TeamSpeak3_Node_Abstract
offsetExists($offset)TeamSpeak3_Node_Abstract
offsetGet($offset)TeamSpeak3_Node_Abstract
offsetSet($offset, $value)TeamSpeak3_Node_Abstract
offsetUnset($offset)TeamSpeak3_Node_Abstract
permissionCats()TeamSpeak3_Node_Host
permissionEnds()TeamSpeak3_Node_Host
permissionFind($permid)TeamSpeak3_Node_Host
permissionGetCategoryById($permid)TeamSpeak3_Node_Host
permissionGetGrantById($permid)TeamSpeak3_Node_Host
permissionGetIdByName($name)TeamSpeak3_Node_Host
permissionGetNameById($permid)TeamSpeak3_Node_Host
permissionList()TeamSpeak3_Node_Host
permissionTree()TeamSpeak3_Node_Host
prepare($cmd, array $params=array())TeamSpeak3_Node_Abstract
request($cmd, $throw=TRUE)TeamSpeak3_Node_Abstract
resetNodeInfo()TeamSpeak3_Node_Abstractprotected
resetNodeList()TeamSpeak3_Node_Abstractprotected
rewind()TeamSpeak3_Node_Abstract
selfPermCheck($permid)TeamSpeak3_Node_Host
serverCreate(array $properties=array())TeamSpeak3_Node_Host
serverDelete($sid)TeamSpeak3_Node_Host
serverDeselect()TeamSpeak3_Node_Host
serverGetById($sid)TeamSpeak3_Node_Host
serverGetByName($name)TeamSpeak3_Node_Host
serverGetByPort($port)TeamSpeak3_Node_Host
serverGetByTSDNS($tsdns)TeamSpeak3_Node_Host
serverGetByUid($uid)TeamSpeak3_Node_Host
serverGetPortById($sid)TeamSpeak3_Node_Host
serverGetSelected()TeamSpeak3_Node_Host
serverGroupPermAutoAssign($sgtype, $permid, $permvalue, $permnegated=FALSE, $permskip=FALSE)TeamSpeak3_Node_Host
serverGroupPermAutoRemove($sgtype, $permid)TeamSpeak3_Node_Host
serverIdGetByPort($port)TeamSpeak3_Node_Host
serverList(array $filter=array())TeamSpeak3_Node_Host
serverListReset()TeamSpeak3_Node_Host
serverSelect($sid, $virtual =null)TeamSpeak3_Node_Host
serverSelectById($sid, $virtual =null)TeamSpeak3_Node_Host
serverSelectByPort($port, $virtual =null)TeamSpeak3_Node_Host
serverSelectedId()TeamSpeak3_Node_Host
serverSelectedPort()TeamSpeak3_Node_Host
serverStart($sid)TeamSpeak3_Node_Host
serverStop($sid)TeamSpeak3_Node_Host
serverStopProcess()TeamSpeak3_Node_Host
setExcludeQueryClients($exclude=FALSE)TeamSpeak3_Node_Host
setLoadClientlistFirst($first=FALSE)TeamSpeak3_Node_Host
setPredefinedQueryName($name=null)TeamSpeak3_Node_Host
setStorage($key, $val)TeamSpeak3_Node_Abstractprotected
setUseOfflineAsVirtual($virtual =FALSE)TeamSpeak3_Node_Host
toArray()TeamSpeak3_Node_Abstract
toString()TeamSpeak3_Node_Abstract
valid()TeamSpeak3_Node_Abstract
verifyNodeList()TeamSpeak3_Node_Abstractprotected
version($ident=null)TeamSpeak3_Node_Host
whoami()TeamSpeak3_Node_Host
whoamiGet($ident, $default=null)TeamSpeak3_Node_Host
whoamiReset()TeamSpeak3_Node_Host
whoamiSet($ident, $value=null)TeamSpeak3_Node_Host
+
+ + + + diff --git a/lib/docs/html/class_team_speak3___node___host.html b/lib/docs/html/class_team_speak3___node___host.html new file mode 100644 index 0000000..129ef2a --- /dev/null +++ b/lib/docs/html/class_team_speak3___node___host.html @@ -0,0 +1,5029 @@ + + + + + + +TeamSpeak 3 PHP Framework: TeamSpeak3_Node_Host Class Reference + + + + + + + + + + + + + +
+
+ + + + + + + +
+
TeamSpeak 3 PHP Framework +  1.1.23 +
+
Copyright © Planet TeamSpeak. All rights reserved.
+
+
+ + + + + +
+
+ +
+
+
+ +
+ + + + +
+ +
+ + +
+ +

Class describing a TeamSpeak 3 server instance and all it's parameters. + More...

+
+ + Inheritance diagram for TeamSpeak3_Node_Host:
+
+
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +

+Public Member Functions

 __construct (TeamSpeak3_Adapter_ServerQuery $squery)
 The TeamSpeak3_Node_Host constructor. More...
 
 serverSelectedId ()
 Returns the primary ID of the selected virtual server. More...
 
 serverSelectedPort ()
 Returns the primary UDP port of the selected virtual server. More...
 
 version ($ident=null)
 Returns the servers version information including platform and build number. More...
 
 serverSelect ($sid, $virtual =null)
 Selects a virtual server by ID to allow further interaction. More...
 
 serverSelectById ($sid, $virtual =null)
 Alias for serverSelect(). More...
 
 serverSelectByPort ($port, $virtual =null)
 Selects a virtual server by UDP port to allow further interaction. More...
 
 serverDeselect ()
 Deselects the active virtual server. More...
 
 serverIdGetByPort ($port)
 Returns the ID of a virtual server matching the given port. More...
 
 serverGetPortById ($sid)
 Returns the port of a virtual server matching the given ID. More...
 
 serverGetSelected ()
 Returns the TeamSpeak3_Node_Server object matching the currently selected ID. More...
 
 serverGetById ($sid)
 Returns the TeamSpeak3_Node_Server object matching the given ID. More...
 
 serverGetByPort ($port)
 Returns the TeamSpeak3_Node_Server object matching the given port number. More...
 
 serverGetByName ($name)
 Returns the first TeamSpeak3_Node_Server object matching the given name. More...
 
 serverGetByUid ($uid)
 Returns the first TeamSpeak3_Node_Server object matching the given unique identifier. More...
 
 serverGetByTSDNS ($tsdns)
 Returns the first TeamSpeak3_Node_Server object matching the given TSDNS hostname. More...
 
 serverCreate (array $properties=array())
 Creates a new virtual server using given properties and returns an assoc array containing the new ID and initial admin token. More...
 
 serverDelete ($sid)
 Deletes the virtual server specified by ID. More...
 
 serverStart ($sid)
 Starts the virtual server specified by ID. More...
 
 serverStop ($sid)
 Stops the virtual server specified by ID. More...
 
 serverStopProcess ()
 Stops the entire TeamSpeak 3 Server instance by shutting down the process. More...
 
 serverList (array $filter=array())
 Returns an array filled with TeamSpeak3_Node_Server objects. More...
 
 serverListReset ()
 Resets the list of virtual servers. More...
 
 bindingList ()
 Returns a list of IP addresses used by the server instance on multi-homed machines. More...
 
 permissionList ()
 Returns a list of permissions available on the server instance. More...
 
 permissionCats ()
 Returns a list of permission categories available on the server instance. More...
 
 permissionEnds ()
 Returns a list of permission category endings available on the server instance. More...
 
 permissionTree ()
 Returns an array filled with all permission categories known to the server including their ID, name and parent. More...
 
 permissionFind ($permid)
 Returns the IDs of all clients, channels or groups using the permission with the specified ID. More...
 
 permissionGetIdByName ($name)
 Returns the ID of the permission matching the given name. More...
 
 permissionGetNameById ($permid)
 Returns the name of the permission matching the given ID. More...
 
 permissionGetCategoryById ($permid)
 Returns the internal category of the permission matching the given ID. More...
 
 permissionGetGrantById ($permid)
 Returns the internal ID of the i_needed_modify_power_* or grant permission. More...
 
 serverGroupPermAutoAssign ($sgtype, $permid, $permvalue, $permnegated=FALSE, $permskip=FALSE)
 Adds a set of specified permissions to all regular server groups on all virtual servers. More...
 
 serverGroupPermAutoRemove ($sgtype, $permid)
 Removes a set of specified permissions from all regular server groups on all virtual servers. More...
 
 selfPermCheck ($permid)
 Returns an array containing the value of a specified permission for your own client. More...
 
 modify (array $properties)
 Changes the server instance configuration using given properties. More...
 
 message ($msg)
 Sends a text message to all clients on all virtual servers in the TeamSpeak 3 Server instance. More...
 
 logView ($lines=30, $begin_pos=null, $reverse=null, $instance=TRUE)
 Displays a specified number of entries (1-100) from the servers log. More...
 
 logAdd ($logmsg, $loglevel=TeamSpeak3::LOGLEVEL_INFO)
 Writes a custom entry into the server instance log. More...
 
 login ($username, $password)
 Authenticates with the TeamSpeak 3 Server instance using given ServerQuery login credentials. More...
 
 logout ()
 Deselects the active virtual server and logs out from the server instance. More...
 
 whoami ()
 Returns information about your current ServerQuery connection. More...
 
 whoamiGet ($ident, $default=null)
 Returns a single value from the current ServerQuery connection info. More...
 
 whoamiSet ($ident, $value=null)
 Sets a single value in the current ServerQuery connection info. More...
 
 whoamiReset ()
 Resets the current ServerQuery connection info. More...
 
 getAdapterHost ()
 Returns the hostname or IPv4 address the adapter is connected to. More...
 
 getAdapterPort ()
 Returns the network port the adapter is connected to. More...
 
 setPredefinedQueryName ($name=null)
 Sets a pre-defined nickname for ServerQuery clients which will be used automatically after selecting a virtual server. More...
 
 getPredefinedQueryName ()
 Returns the pre-defined nickname for ServerQuery clients which will be used automatically after selecting a virtual server. More...
 
 setExcludeQueryClients ($exclude=FALSE)
 Sets the option to decide whether ServerQuery clients should be excluded from node lists or not. More...
 
 getExcludeQueryClients ()
 Returns the option to decide whether ServerQuery clients should be excluded from node lists or not. More...
 
 setUseOfflineAsVirtual ($virtual =FALSE)
 Sets the option to decide whether offline servers will be started in virtual mode by default or not. More...
 
 getUseOfflineAsVirtual ()
 Returns the option to decide whether offline servers will be started in virtual mode by default or not. More...
 
 setLoadClientlistFirst ($first=FALSE)
 Sets the option to decide whether clients should be sorted before sub-channels to support the new TeamSpeak 3 Client display mode or not. More...
 
 getLoadClientlistFirst ()
 Returns the option to decide whether offline servers will be started in virtual mode by default or not. More...
 
 getAdapter ()
 Returns the underlying TeamSpeak3_Adapter_ServerQuery object. More...
 
 getUniqueId ()
 Returns a unique identifier for the node which can be used as a HTML property. More...
 
 getIcon ()
 Returns the name of a possible icon to display the node object. More...
 
 getSymbol ()
 Returns a symbol representing the node. More...
 
 __wakeup ()
 Re-authenticates with the TeamSpeak 3 Server instance using given ServerQuery login credentials and re-selects a previously selected virtual server. More...
 
 __toString ()
 Returns a string representation of this node. More...
 
 request ($cmd, $throw=TRUE)
 Sends a prepared command to the server and returns the result. More...
 
 prepare ($cmd, array $params=array())
 Uses given parameters and returns a prepared ServerQuery command. More...
 
 execute ($cmd, array $params=array())
 Prepares and executes a ServerQuery command and returns the result. More...
 
 getParent ()
 Returns the parent object of the current node. More...
 
 getId ()
 Returns the primary ID of the current node. More...
 
 iconIsLocal ($key)
 Returns TRUE if the node icon has a local source. More...
 
 iconGetName ($key)
 Returns the internal path of the node icon. More...
 
 getClass ($prefix="ts3_")
 Returns a possible classname for the node which can be used as a HTML property. More...
 
 getViewer (TeamSpeak3_Viewer_Interface $viewer)
 Returns the HTML code to display a TeamSpeak 3 viewer. More...
 
 getInfo ($extend=TRUE, $convert=FALSE)
 Returns all information available on this node. More...
 
 getProperty ($property, $default=null)
 Returns the specified property or a pre-defined default value from the node info array. More...
 
 toString ()
 Returns a string representation of this node. More...
 
 toArray ()
 Returns an assoc array filled with current node info properties. More...
 
 __call ($name, array $args)
 Called whenever we're using an unknown method. More...
 
 __sleep ()
 Commit pending data. More...
 
 count ()
 
 current ()
 
 getChildren ()
 
 hasChildren ()
 
 hasNext ()
 
 key ()
 
 valid ()
 
 next ()
 
 rewind ()
 
 offsetExists ($offset)
 
 offsetGet ($offset)
 
 offsetSet ($offset, $value)
 
 offsetUnset ($offset)
 
 __get ($offset)
 
 __set ($offset, $value)
 
+ + + + + + + + + + + + + + + + + + + + + + + + + + + +

+Protected Member Functions

 fetchNodeList ()
 
 fetchNodeInfo ()
 
 fetchPermissionList ()
 
 fetchPermissionCats ()
 
 filterList (array $nodes=array(), array $rules=array())
 Filters given node list array using specified filter rules. More...
 
 setStorage ($key, $val)
 Writes data to the internal storage array. More...
 
 getStorage ($key, $default=null)
 Returns data from the internal storage array. More...
 
 delStorage ($key)
 Deletes data from the internal storage array. More...
 
 resetNodeInfo ()
 
 verifyNodeList ()
 
 resetNodeList ()
 
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +

+Protected Attributes

 $whoami = null
 
 $version = null
 
 $serverList = null
 
 $permissionEnds = null
 
 $permissionList = null
 
 $permissionCats = null
 
 $predefined_query_name = null
 
 $exclude_query_clients = FALSE
 
 $start_offline_virtual = FALSE
 
 $sort_clients_channels = FALSE
 
 $parent = null
 
 $server = null
 
 $nodeId = 0x00
 
 $nodeList = null
 
 $nodeInfo = array()
 
 $storage = array()
 
+

Detailed Description

+

Class describing a TeamSpeak 3 server instance and all it's parameters.

+ +

Definition at line 32 of file Host.php.

+

Constructor & Destructor Documentation

+ +
+
+ + + + + + + + +
TeamSpeak3_Node_Host::__construct (TeamSpeak3_Adapter_ServerQuery $squery)
+
+ +

The TeamSpeak3_Node_Host constructor.

+
Parameters
+ + +
TeamSpeak3_Adapter_ServerQuery$squery
+
+
+
Returns
TeamSpeak3_Node_Host
+ +

Definition at line 90 of file Host.php.

+
91  {
+
92  $this->parent = $squery;
+
93  }
+
+
+
+

Member Function Documentation

+ +
+
+ + + + + + + +
TeamSpeak3_Node_Host::serverSelectedId ()
+
+ +

Returns the primary ID of the selected virtual server.

+
Returns
integer
+ +

Definition at line 100 of file Host.php.

+ +

References whoamiGet().

+ +

Referenced by logAdd(), serverGetByPort(), serverGetSelected(), serverSelect(), serverStart(), and serverStop().

+
101  {
+
102  return $this->whoamiGet("virtualserver_id", 0);
+
103  }
+
+
+
+ +
+
+ + + + + + + +
TeamSpeak3_Node_Host::serverSelectedPort ()
+
+ +

Returns the primary UDP port of the selected virtual server.

+
Returns
integer
+ +

Definition at line 110 of file Host.php.

+ +

References whoamiGet().

+ +

Referenced by serverSelectByPort().

+
111  {
+
112  return $this->whoamiGet("virtualserver_port", 0);
+
113  }
+
+
+
+ +
+
+ + + + + + + + +
TeamSpeak3_Node_Host::version ( $ident = null)
+
+ +

Returns the servers version information including platform and build number.

+
Parameters
+ + +
string$ident
+
+
+
Returns
mixed
+ +

Definition at line 121 of file Host.php.

+ +

References $version, and TeamSpeak3_Node_Abstract\request().

+
122  {
+
123  if($this->version === null)
+
124  {
+
125  $this->version = $this->request("version")->toList();
+
126  }
+
127 
+
128  return ($ident && array_key_exists($ident, $this->version)) ? $this->version[$ident] : $this->version;
+
129  }
+
+
+
+ +
+
+ + + + + + + + + + + + + + + + + + +
TeamSpeak3_Node_Host::serverSelect ( $sid,
 $virtual = null 
)
+
+ +

Selects a virtual server by ID to allow further interaction.

+
Parameters
+ + + +
integer$sid
boolean$virtual
+
+
+
Returns
void
+ +

Definition at line 138 of file Host.php.

+ +

References TeamSpeak3_Node_Abstract\execute(), TeamSpeak3_Helper_Signal\getInstance(), serverSelectedId(), TeamSpeak3_Node_Abstract\setStorage(), whoami(), and whoamiReset().

+ +

Referenced by logAdd(), serverDeselect(), and serverSelectById().

+
139  {
+
140  if($this->whoami !== null && $this->serverSelectedId() == $sid) return;
+
141 
+
142  $virtual = ($virtual !== null) ? $virtual : $this->start_offline_virtual;
+
143  $getargs = func_get_args();
+
144 
+
145  $this->execute("use", array("sid" => $sid, $virtual ? "-virtual" : null));
+
146 
+
147  if($sid != 0 && $this->predefined_query_name !== null)
+
148  {
+
149  $this->execute("clientupdate", array("client_nickname" => (string) $this->predefined_query_name));
+
150  }
+
151 
+
152  $this->whoamiReset();
+
153 
+
154  $this->setStorage("_server_use", array(__FUNCTION__, $getargs));
+
155 
+
156  TeamSpeak3_Helper_Signal::getInstance()->emit("notifyServerselected", $this);
+
157  }
+
+
+
+ +
+
+ + + + + + + + + + + + + + + + + + +
TeamSpeak3_Node_Host::serverSelectById ( $sid,
 $virtual = null 
)
+
+ +

Alias for serverSelect().

+
Parameters
+ + + +
integer$sid
boolean$virtual
+
+
+
Returns
void
+ +

Definition at line 166 of file Host.php.

+ +

References serverSelect().

+ +

Referenced by serverGetById().

+
167  {
+
168  $this->serverSelect($sid, $virtual);
+
169  }
+
+
+
+ +
+
+ + + + + + + + + + + + + + + + + + +
TeamSpeak3_Node_Host::serverSelectByPort ( $port,
 $virtual = null 
)
+
+ +

Selects a virtual server by UDP port to allow further interaction.

+
Parameters
+ + + +
integer$port
boolean$virtual
+
+
+
Returns
void
+ +

Definition at line 178 of file Host.php.

+ +

References TeamSpeak3_Node_Abstract\execute(), TeamSpeak3_Helper_Signal\getInstance(), serverSelectedPort(), TeamSpeak3_Node_Abstract\setStorage(), whoami(), and whoamiReset().

+ +

Referenced by serverGetByPort().

+
179  {
+
180  if($this->whoami !== null && $this->serverSelectedPort() == $port) return;
+
181 
+
182  $virtual = ($virtual !== null) ? $virtual : $this->start_offline_virtual;
+
183  $getargs = func_get_args();
+
184 
+
185  $this->execute("use", array("port" => $port, $virtual ? "-virtual" : null));
+
186 
+
187  if($port != 0 && $this->predefined_query_name !== null)
+
188  {
+
189  $this->execute("clientupdate", array("client_nickname" => (string) $this->predefined_query_name));
+
190  }
+
191 
+
192  $this->whoamiReset();
+
193 
+
194  $this->setStorage("_server_use", array(__FUNCTION__, $getargs));
+
195 
+
196  TeamSpeak3_Helper_Signal::getInstance()->emit("notifyServerselected", $this);
+
197  }
+
+
+
+ +
+
+ + + + + + + +
TeamSpeak3_Node_Host::serverDeselect ()
+
+ +

Deselects the active virtual server.

+
Returns
void
+ +

Definition at line 204 of file Host.php.

+ +

References TeamSpeak3_Node_Abstract\delStorage(), and serverSelect().

+ +

Referenced by logAdd(), serverStart(), and serverStop().

+
205  {
+
206  $this->serverSelect(0);
+
207 
+
208  $this->delStorage("_server_use");
+
209  }
+
+
+
+ +
+
+ + + + + + + + +
TeamSpeak3_Node_Host::serverIdGetByPort ( $port)
+
+ +

Returns the ID of a virtual server matching the given port.

+
Parameters
+ + +
integer$port
+
+
+
Returns
integer
+ +

Definition at line 217 of file Host.php.

+ +

References TeamSpeak3_Node_Abstract\execute().

+
218  {
+
219  $sid = $this->execute("serveridgetbyport", array("virtualserver_port" => $port))->toList();
+
220 
+
221  return $sid["server_id"];
+
222  }
+
+
+
+ +
+
+ + + + + + + + +
TeamSpeak3_Node_Host::serverGetPortById ( $sid)
+
+ +

Returns the port of a virtual server matching the given ID.

+
Parameters
+ + +
integer$sid
+
+
+
Returns
integer
+ +

Definition at line 230 of file Host.php.

+ +

References serverList().

+
231  {
+
232  if(!array_key_exists((string) $sid, $this->serverList()))
+
233  {
+
234  throw new TeamSpeak3_Adapter_ServerQuery_Exception("invalid serverID", 0x400);
+
235  }
+
236 
+
237  return $this->serverList[intval((string) $sid)]["virtualserver_port"];
+
238  }
+
+
+
+ +
+
+ + + + + + + +
TeamSpeak3_Node_Host::serverGetSelected ()
+
+ +

Returns the TeamSpeak3_Node_Server object matching the currently selected ID.

+
Returns
TeamSpeak3_Node_Server
+ +

Definition at line 245 of file Host.php.

+ +

References serverGetById(), and serverSelectedId().

+
246  {
+
247  return $this->serverGetById($this->serverSelectedId());
+
248  }
+
+
+
+ +
+
+ + + + + + + + +
TeamSpeak3_Node_Host::serverGetById ( $sid)
+
+ +

Returns the TeamSpeak3_Node_Server object matching the given ID.

+
Parameters
+ + +
integer$sid
+
+
+
Returns
TeamSpeak3_Node_Server
+ +

Definition at line 256 of file Host.php.

+ +

References serverSelectById().

+ +

Referenced by serverGetSelected().

+
257  {
+
258  $this->serverSelectById($sid);
+
259 
+
260  return new TeamSpeak3_Node_Server($this, array("virtualserver_id" => intval($sid)));
+
261  }
+
+
+
+ +
+
+ + + + + + + + +
TeamSpeak3_Node_Host::serverGetByPort ( $port)
+
+ +

Returns the TeamSpeak3_Node_Server object matching the given port number.

+
Parameters
+ + +
integer$port
+
+
+
Returns
TeamSpeak3_Node_Server
+ +

Definition at line 269 of file Host.php.

+ +

References serverSelectByPort(), and serverSelectedId().

+ +

Referenced by serverGetByTSDNS().

+
270  {
+
271  $this->serverSelectByPort($port);
+
272 
+
273  return new TeamSpeak3_Node_Server($this, array("virtualserver_id" => $this->serverSelectedId()));
+
274  }
+
+
+
+ +
+
+ + + + + + + + +
TeamSpeak3_Node_Host::serverGetByName ( $name)
+
+ +

Returns the first TeamSpeak3_Node_Server object matching the given name.

+
Parameters
+ + +
string$name
+
+
+
Exceptions
+ + +
TeamSpeak3_Adapter_ServerQuery_Exception
+
+
+
Returns
TeamSpeak3_Node_Server
+ +

Definition at line 283 of file Host.php.

+ +

References TeamSpeak3_Node_Abstract\$server, and serverList().

+
284  {
+
285  foreach($this->serverList() as $server)
+
286  {
+
287  if($server["virtualserver_name"] == $name) return $server;
+
288  }
+
289 
+
290  throw new TeamSpeak3_Adapter_ServerQuery_Exception("invalid serverID", 0x400);
+
291  }
+
+
+
+ +
+
+ + + + + + + + +
TeamSpeak3_Node_Host::serverGetByUid ( $uid)
+
+ +

Returns the first TeamSpeak3_Node_Server object matching the given unique identifier.

+
Parameters
+ + +
string$uid
+
+
+
Exceptions
+ + +
TeamSpeak3_Adapter_ServerQuery_Exception
+
+
+
Returns
TeamSpeak3_Node_Server
+ +

Definition at line 300 of file Host.php.

+ +

References TeamSpeak3_Node_Abstract\$server, and serverList().

+
301  {
+
302  foreach($this->serverList() as $server)
+
303  {
+
304  if($server["virtualserver_unique_identifier"] == $uid) return $server;
+
305  }
+
306 
+
307  throw new TeamSpeak3_Adapter_ServerQuery_Exception("invalid serverID", 0x400);
+
308  }
+
+
+
+ +
+
+ + + + + + + + +
TeamSpeak3_Node_Host::serverGetByTSDNS ( $tsdns)
+
+ +

Returns the first TeamSpeak3_Node_Server object matching the given TSDNS hostname.

+

Like the TeamSpeak 3 Client, this method will start looking for a TSDNS server on the second-level domain including a fallback to the third-level domain of the specified $tsdns parameter.

+
Parameters
+ + +
string$tsdns
+
+
+
Exceptions
+ + +
TeamSpeak3_Adapter_ServerQuery_Exception
+
+
+
Returns
TeamSpeak3_Node_Server
+ +

Definition at line 319 of file Host.php.

+ +

References TeamSpeak3_Helper_String\factory(), TeamSpeak3\factory(), TeamSpeak3_Helper_Uri\getFQDNParts(), and serverGetByPort().

+
320  {
+
321  $parts = TeamSpeak3_Helper_Uri::getFQDNParts($tsdns);
+
322  $query = TeamSpeak3_Helper_String::factory(array_shift($parts));
+
323 
+
324  while($part = array_shift($parts))
+
325  {
+
326  $query->prepend($part);
+
327 
+
328  try
+
329  {
+
330  $port = TeamSpeak3::factory("tsdns://" . $query . "/?timeout=3")->resolve($tsdns)->section(":", 1);
+
331 
+
332  return $this->serverGetByPort($port == "" ? 9987 : $port);
+
333  }
+ +
335  {
+
336  /* skip "Connection timed out" and "Connection refused" */
+
337  if($e->getCode() != 10060 && $e->getCode() != 10061) throw $e;
+
338  }
+
339  }
+
340 
+
341  throw new TeamSpeak3_Adapter_ServerQuery_Exception("invalid serverID", 0x400);
+
342  }
+
+
+
+ +
+
+ + + + + + + + +
TeamSpeak3_Node_Host::serverCreate (array $properties = array())
+
+ +

Creates a new virtual server using given properties and returns an assoc array containing the new ID and initial admin token.

+
Parameters
+ + +
array$properties
+
+
+
Returns
array
+ +

Definition at line 351 of file Host.php.

+ +

References TeamSpeak3_Node_Abstract\$server, TeamSpeak3_Node_Abstract\execute(), TeamSpeak3_Helper_Signal\getInstance(), and serverListReset().

+
352  {
+
353  $this->serverListReset();
+
354 
+
355  $detail = $this->execute("servercreate", $properties)->toList();
+
356  $server = new TeamSpeak3_Node_Server($this, array("virtualserver_id" => intval($detail["sid"])));
+
357 
+
358  TeamSpeak3_Helper_Signal::getInstance()->emit("notifyServercreated", $this, $detail["sid"]);
+
359  TeamSpeak3_Helper_Signal::getInstance()->emit("notifyTokencreated", $server, $detail["token"]);
+
360 
+
361  return $detail;
+
362  }
+
+
+
+ +
+
+ + + + + + + + +
TeamSpeak3_Node_Host::serverDelete ( $sid)
+
+ +

Deletes the virtual server specified by ID.

+
Parameters
+ + +
integer$sid
+
+
+
Returns
void
+ +

Definition at line 370 of file Host.php.

+ +

References TeamSpeak3_Node_Abstract\execute(), TeamSpeak3_Helper_Signal\getInstance(), and serverListReset().

+
371  {
+
372  $this->serverListReset();
+
373 
+
374  $this->execute("serverdelete", array("sid" => $sid));
+
375 
+
376  TeamSpeak3_Helper_Signal::getInstance()->emit("notifyServerdeleted", $this, $sid);
+
377  }
+
+
+
+ +
+
+ + + + + + + + +
TeamSpeak3_Node_Host::serverStart ( $sid)
+
+ +

Starts the virtual server specified by ID.

+
Parameters
+ + +
integer$sid
+
+
+
Returns
void
+ +

Definition at line 385 of file Host.php.

+ +

References TeamSpeak3_Node_Abstract\execute(), TeamSpeak3_Helper_Signal\getInstance(), serverDeselect(), serverListReset(), and serverSelectedId().

+
386  {
+
387  if($sid == $this->serverSelectedId())
+
388  {
+
389  $this->serverDeselect();
+
390  }
+
391 
+
392  $this->execute("serverstart", array("sid" => $sid));
+
393  $this->serverListReset();
+
394 
+
395  TeamSpeak3_Helper_Signal::getInstance()->emit("notifyServerstarted", $this, $sid);
+
396  }
+
+
+
+ +
+
+ + + + + + + + +
TeamSpeak3_Node_Host::serverStop ( $sid)
+
+ +

Stops the virtual server specified by ID.

+
Parameters
+ + +
integer$sid
+
+
+
Returns
void
+ +

Definition at line 404 of file Host.php.

+ +

References TeamSpeak3_Node_Abstract\execute(), TeamSpeak3_Helper_Signal\getInstance(), serverDeselect(), serverListReset(), and serverSelectedId().

+
405  {
+
406  if($sid == $this->serverSelectedId())
+
407  {
+
408  $this->serverDeselect();
+
409  }
+
410 
+
411  $this->execute("serverstop", array("sid" => $sid));
+
412  $this->serverListReset();
+
413 
+
414  TeamSpeak3_Helper_Signal::getInstance()->emit("notifyServerstopped", $this, $sid);
+
415  }
+
+
+
+ +
+
+ + + + + + + +
TeamSpeak3_Node_Host::serverStopProcess ()
+
+ +

Stops the entire TeamSpeak 3 Server instance by shutting down the process.

+
Returns
void
+ +

Definition at line 422 of file Host.php.

+ +

References TeamSpeak3_Node_Abstract\execute(), and TeamSpeak3_Helper_Signal\getInstance().

+
423  {
+
424  TeamSpeak3_Helper_Signal::getInstance()->emit("notifyServershutdown", $this);
+
425 
+
426  $this->execute("serverprocessstop");
+
427  }
+
+
+
+ +
+
+ + + + + + + + +
TeamSpeak3_Node_Host::serverList (array $filter = array())
+
+ +

Returns an array filled with TeamSpeak3_Node_Server objects.

+
Parameters
+ + +
array$filter
+
+
+
Returns
array
+ +

Definition at line 435 of file Host.php.

+ +

References TeamSpeak3_Node_Abstract\$server, TeamSpeak3_Node_Abstract\filterList(), TeamSpeak3_Node_Abstract\request(), and TeamSpeak3_Node_Abstract\resetNodeList().

+ +

Referenced by fetchNodeList(), serverGetByName(), serverGetByUid(), serverGetPortById(), and serverListReset().

+
436  {
+
437  if($this->serverList === null)
+
438  {
+
439  $servers = $this->request("serverlist -uid")->toAssocArray("virtualserver_id");
+
440 
+
441  $this->serverList = array();
+
442 
+
443  foreach($servers as $sid => $server)
+
444  {
+
445  $this->serverList[$sid] = new TeamSpeak3_Node_Server($this, $server);
+
446  }
+
447 
+
448  $this->resetNodeList();
+
449  }
+
450 
+
451  return $this->filterList($this->serverList, $filter);
+
452  }
+
+
+
+ +
+
+ + + + + + + +
TeamSpeak3_Node_Host::serverListReset ()
+
+ +

Resets the list of virtual servers.

+
Returns
void
+ +

Definition at line 459 of file Host.php.

+ +

References TeamSpeak3_Node_Abstract\resetNodeList(), and serverList().

+ +

Referenced by serverCreate(), serverDelete(), serverStart(), and serverStop().

+
460  {
+
461  $this->resetNodeList();
+
462  $this->serverList = null;
+
463  }
+
+
+
+ +
+
+ + + + + + + +
TeamSpeak3_Node_Host::bindingList ()
+
+ +

Returns a list of IP addresses used by the server instance on multi-homed machines.

+
Returns
array
+ +

Definition at line 470 of file Host.php.

+ +

References TeamSpeak3_Node_Abstract\request().

+
471  {
+
472  return $this->request("bindinglist")->toArray();
+
473  }
+
+
+
+ +
+
+ + + + + + + +
TeamSpeak3_Node_Host::permissionList ()
+
+ +

Returns a list of permissions available on the server instance.

+
Returns
array
+ +

Definition at line 480 of file Host.php.

+ +

References $permissionList, TeamSpeak3_Helper_String\factory(), fetchPermissionList(), permissionGetCategoryById(), and permissionGetGrantById().

+ +

Referenced by fetchPermissionList(), permissionGetIdByName(), permissionGetNameById(), and permissionTree().

+
481  {
+
482  if($this->permissionList === null)
+
483  {
+
484  $this->fetchPermissionList();
+
485  }
+
486 
+
487  foreach($this->permissionList as $permname => $permdata)
+
488  {
+
489  if(isset($permdata["permcatid"]) && $permdata["permgrant"])
+
490  {
+
491  continue;
+
492  }
+
493 
+
494  $this->permissionList[$permname]["permcatid"] = $this->permissionGetCategoryById($permdata["permid"]);
+
495  $this->permissionList[$permname]["permgrant"] = $this->permissionGetGrantById($permdata["permid"]);
+
496 
+
497  $grantsid = "i_needed_modify_power_" . substr($permname, 2);
+
498 
+
499  if(!$permdata["permname"]->startsWith("i_needed_modify_power_") && !isset($this->permissionList[$grantsid]))
+
500  {
+
501  $this->permissionList[$grantsid]["permid"] = $this->permissionList[$permname]["permgrant"];
+
502  $this->permissionList[$grantsid]["permname"] = TeamSpeak3_Helper_String::factory($grantsid);
+
503  $this->permissionList[$grantsid]["permdesc"] = null;
+
504  $this->permissionList[$grantsid]["permcatid"] = 0xFF;
+
505  $this->permissionList[$grantsid]["permgrant"] = $this->permissionList[$permname]["permgrant"];
+
506  }
+
507  }
+
508 
+
509  return $this->permissionList;
+
510  }
+
+
+
+ +
+
+ + + + + + + +
TeamSpeak3_Node_Host::permissionCats ()
+
+ +

Returns a list of permission categories available on the server instance.

+
Returns
array
+ +

Definition at line 517 of file Host.php.

+ +

References $permissionCats, and fetchPermissionCats().

+ +

Referenced by fetchPermissionCats(), permissionGetCategoryById(), and permissionTree().

+
518  {
+
519  if($this->permissionCats === null)
+
520  {
+
521  $this->fetchPermissionCats();
+
522  }
+
523 
+
524  return $this->permissionCats;
+
525  }
+
+
+
+ +
+
+ + + + + + + +
TeamSpeak3_Node_Host::permissionEnds ()
+
+ +

Returns a list of permission category endings available on the server instance.

+
Returns
array
+ +

Definition at line 532 of file Host.php.

+ +

References $permissionCats, and fetchPermissionList().

+ +

Referenced by fetchPermissionList(), and permissionGetCategoryById().

+
533  {
+
534  if($this->permissionEnds === null)
+
535  {
+
536  $this->fetchPermissionList();
+
537  }
+
538 
+
539  return $this->permissionCats;
+
540  }
+
+
+
+ +
+
+ + + + + + + +
TeamSpeak3_Node_Host::permissionTree ()
+
+ +

Returns an array filled with all permission categories known to the server including their ID, name and parent.

+
Returns
array
+ +

Definition at line 548 of file Host.php.

+ +

References TeamSpeak3_Helper_String\factory(), TeamSpeak3_Helper_Convert\permissionCategory(), permissionCats(), and permissionList().

+
549  {
+
550  $permtree = array();
+
551 
+
552  foreach($this->permissionCats() as $key => $val)
+
553  {
+
554  $permtree[$val]["permcatid"] = $val;
+
555  $permtree[$val]["permcathex"] = "0x" . dechex($val);
+ +
557  $permtree[$val]["permcatparent"] = $permtree[$val]["permcathex"]{3} == 0 ? 0 : hexdec($permtree[$val]["permcathex"]{2} . 0);
+
558  $permtree[$val]["permcatchilren"] = 0;
+
559  $permtree[$val]["permcatcount"] = 0;
+
560 
+
561  if(isset($permtree[$permtree[$val]["permcatparent"]]))
+
562  {
+
563  $permtree[$permtree[$val]["permcatparent"]]["permcatchilren"]++;
+
564  }
+
565 
+
566  if($permtree[$val]["permcatname"]->contains("/"))
+
567  {
+
568  $permtree[$val]["permcatname"] = $permtree[$val]["permcatname"]->section("/", 1)->trim();
+
569  }
+
570 
+
571  foreach($this->permissionList() as $permission)
+
572  {
+
573  if($permission["permid"]["permcatid"] == $val)
+
574  {
+
575  $permtree[$val]["permcatcount"]++;
+
576  }
+
577  }
+
578  }
+
579 
+
580  return $permtree;
+
581  }
+
+
+
+ +
+
+ + + + + + + + +
TeamSpeak3_Node_Host::permissionFind ( $permid)
+
+ +

Returns the IDs of all clients, channels or groups using the permission with the specified ID.

+
Parameters
+ + +
integer$permid
+
+
+
Returns
array
+ +

Definition at line 590 of file Host.php.

+ +

References TeamSpeak3_Node_Abstract\current(), and TeamSpeak3_Node_Abstract\execute().

+
591  {
+
592  if(!is_array($permid))
+
593  {
+
594  $permident = (is_numeric($permid)) ? "permid" : "permsid";
+
595  }
+
596  else
+
597  {
+
598  $permident = (is_numeric(current($permid))) ? "permid" : "permsid";
+
599  }
+
600 
+
601  return $this->execute("permfind", array($permident => $permid))->toArray();
+
602  }
+
+
+
+ +
+
+ + + + + + + + +
TeamSpeak3_Node_Host::permissionGetIdByName ( $name)
+
+ +

Returns the ID of the permission matching the given name.

+
Parameters
+ + +
string$name
+
+
+
Exceptions
+ + +
TeamSpeak3_Adapter_ServerQuery_Exception
+
+
+
Returns
integer
+ +

Definition at line 611 of file Host.php.

+ +

References permissionList().

+ +

Referenced by permissionGetCategoryById(), and permissionGetGrantById().

+
612  {
+
613  if(!array_key_exists((string) $name, $this->permissionList()))
+
614  {
+
615  throw new TeamSpeak3_Adapter_ServerQuery_Exception("invalid permission ID", 0xA02);
+
616  }
+
617 
+
618  return $this->permissionList[(string) $name]["permid"];
+
619  }
+
+
+
+ +
+
+ + + + + + + + +
TeamSpeak3_Node_Host::permissionGetNameById ( $permid)
+
+ +

Returns the name of the permission matching the given ID.

+
Parameters
+ + +
integer$permid
+
+
+
Exceptions
+ + +
TeamSpeak3_Adapter_ServerQuery_Exception
+
+
+
Returns
TeamSpeak3_Helper_String
+ +

Definition at line 628 of file Host.php.

+ +

References permissionList().

+
629  {
+
630  foreach($this->permissionList() as $name => $perm)
+
631  {
+
632  if($perm["permid"] == $permid) return new TeamSpeak3_Helper_String($name);
+
633  }
+
634 
+
635  throw new TeamSpeak3_Adapter_ServerQuery_Exception("invalid permission ID", 0xA02);
+
636  }
+
+
+
+ +
+
+ + + + + + + + +
TeamSpeak3_Node_Host::permissionGetCategoryById ( $permid)
+
+ +

Returns the internal category of the permission matching the given ID.

+

All pre-3.0.7 permission IDs are are 2 bytes wide. The first byte identifies the category while the second byte is the permission count within that group.

+
Parameters
+ + +
integer$permid
+
+
+
Returns
integer
+ +

Definition at line 647 of file Host.php.

+ +

References fetchPermissionCats(), fetchPermissionList(), permissionCats(), permissionEnds(), and permissionGetIdByName().

+ +

Referenced by permissionList().

+
648  {
+
649  if(!is_numeric($permid))
+
650  {
+
651  $permid = $this->permissionGetIdByName($permid);
+
652  }
+
653 
+
654  if($permid < 0x1000)
+
655  {
+
656  if($this->permissionEnds === null)
+
657  {
+
658  $this->fetchPermissionList();
+
659  }
+
660 
+
661  if($this->permissionCats === null)
+
662  {
+
663  $this->fetchPermissionCats();
+
664  }
+
665 
+
666  $catids = array_values($this->permissionCats());
+
667 
+
668  foreach($this->permissionEnds as $key => $val)
+
669  {
+
670  if($val >= $permid && isset($catids[$key]))
+
671  {
+
672  return $catids[$key];
+
673  }
+
674  }
+
675 
+
676  return 0;
+
677  }
+
678  else
+
679  {
+
680  return (int) $permid >> 8;
+
681  }
+
682  }
+
+
+
+ +
+
+ + + + + + + + +
TeamSpeak3_Node_Host::permissionGetGrantById ( $permid)
+
+ +

Returns the internal ID of the i_needed_modify_power_* or grant permission.

+

Every permission has an associated i_needed_modify_power_* permission, for example b_client_ban_create has an associated permission called i_needed_modify_power_client_ban_create.

+
Parameters
+ + +
integer$permid
+
+
+
Returns
integer
+ +

Definition at line 693 of file Host.php.

+ +

References permissionGetIdByName().

+ +

Referenced by permissionList().

+
694  {
+
695  if(!is_numeric($permid))
+
696  {
+
697  $permid = $this->permissionGetIdByName($permid);
+
698  }
+
699 
+
700  if($permid < 0x1000)
+
701  {
+
702  return (int) $permid+0x8000;
+
703  }
+
704  else
+
705  {
+
706  return (int) bindec(substr(decbin($permid), -8))+0xFF00;
+
707  }
+
708  }
+
+
+
+ +
+
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
TeamSpeak3_Node_Host::serverGroupPermAutoAssign ( $sgtype,
 $permid,
 $permvalue,
 $permnegated = FALSE,
 $permskip = FALSE 
)
+
+ +

Adds a set of specified permissions to all regular server groups on all virtual servers.

+

The target groups will be identified by the value of their i_group_auto_update_type permission specified with $sgtype.

+
Parameters
+ + + + + + +
integer$sgtype
integer$permid
integer$permvalue
integer$permnegated
integer$permskip
+
+
+
Returns
void
+ +

Definition at line 721 of file Host.php.

+ +

References TeamSpeak3_Node_Abstract\current(), and TeamSpeak3_Node_Abstract\execute().

+
722  {
+
723  if(!is_array($permid))
+
724  {
+
725  $permident = (is_numeric($permid)) ? "permid" : "permsid";
+
726  }
+
727  else
+
728  {
+
729  $permident = (is_numeric(current($permid))) ? "permid" : "permsid";
+
730  }
+
731 
+
732  $this->execute("servergroupautoaddperm", array("sgtype" => $sgtype, $permident => $permid, "permvalue" => $permvalue, "permnegated" => $permnegated, "permskip" => $permskip));
+
733  }
+
+
+
+ +
+
+ + + + + + + + + + + + + + + + + + +
TeamSpeak3_Node_Host::serverGroupPermAutoRemove ( $sgtype,
 $permid 
)
+
+ +

Removes a set of specified permissions from all regular server groups on all virtual servers.

+

The target groups will be identified by the value of their i_group_auto_update_type permission specified with $sgtype.

+
Parameters
+ + + +
integer$sgtype
integer$permid
+
+
+
Returns
void
+ +

Definition at line 743 of file Host.php.

+ +

References TeamSpeak3_Node_Abstract\current(), and TeamSpeak3_Node_Abstract\execute().

+
744  {
+
745  if(!is_array($permid))
+
746  {
+
747  $permident = (is_numeric($permid)) ? "permid" : "permsid";
+
748  }
+
749  else
+
750  {
+
751  $permident = (is_numeric(current($permid))) ? "permid" : "permsid";
+
752  }
+
753 
+
754  $this->execute("servergroupautodelperm", array("sgtype" => $sgtype, $permident => $permid));
+
755  }
+
+
+
+ +
+
+ + + + + + + + +
TeamSpeak3_Node_Host::selfPermCheck ( $permid)
+
+ +

Returns an array containing the value of a specified permission for your own client.

+
Parameters
+ + +
integer$permid
+
+
+
Returns
array
+ +

Definition at line 763 of file Host.php.

+ +

References TeamSpeak3_Node_Abstract\current(), and TeamSpeak3_Node_Abstract\execute().

+
764  {
+
765  if(!is_array($permid))
+
766  {
+
767  $permident = (is_numeric($permid)) ? "permid" : "permsid";
+
768  }
+
769  else
+
770  {
+
771  $permident = (is_numeric(current($permid))) ? "permid" : "permsid";
+
772  }
+
773 
+
774  return $this->execute("permget", array($permident => $permid))->toAssocArray("permsid");
+
775  }
+
+
+
+ +
+
+ + + + + + + + +
TeamSpeak3_Node_Host::modify (array $properties)
+
+ +

Changes the server instance configuration using given properties.

+
Parameters
+ + +
array$properties
+
+
+
Returns
void
+ +

Definition at line 783 of file Host.php.

+ +

References TeamSpeak3_Node_Abstract\execute(), and TeamSpeak3_Node_Abstract\resetNodeInfo().

+
784  {
+
785  $this->execute("instanceedit", $properties);
+
786  $this->resetNodeInfo();
+
787  }
+
+
+
+ +
+
+ + + + + + + + +
TeamSpeak3_Node_Host::message ( $msg)
+
+ +

Sends a text message to all clients on all virtual servers in the TeamSpeak 3 Server instance.

+
Parameters
+ + +
string$msg
+
+
+
Returns
void
+ +

Definition at line 795 of file Host.php.

+ +

References TeamSpeak3_Node_Abstract\execute().

+
796  {
+
797  $this->execute("gm", array("msg" => $msg));
+
798  }
+
+
+
+ +
+
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
TeamSpeak3_Node_Host::logView ( $lines = 30,
 $begin_pos = null,
 $reverse = null,
 $instance = TRUE 
)
+
+ +

Displays a specified number of entries (1-100) from the servers log.

+
Parameters
+ + + + + +
integer$lines
integer$begin_pos
boolean$reverse
boolean$instance
+
+
+
Returns
array
+ +

Definition at line 809 of file Host.php.

+ +

References TeamSpeak3_Node_Abstract\execute().

+
810  {
+
811  return $this->execute("logview", array("lines" => $lines, "begin_pos" => $begin_pos, "instance" => $instance, "reverse" => $reverse))->toArray();
+
812  }
+
+
+
+ +
+
+ + + + + + + + + + + + + + + + + + +
TeamSpeak3_Node_Host::logAdd ( $logmsg,
 $loglevel = TeamSpeak3::LOGLEVEL_INFO 
)
+
+ +

Writes a custom entry into the server instance log.

+
Parameters
+ + + +
string$logmsg
integer$loglevel
+
+
+
Returns
void
+ +

Definition at line 821 of file Host.php.

+ +

References TeamSpeak3_Node_Abstract\execute(), serverDeselect(), serverSelect(), and serverSelectedId().

+
822  {
+
823  $sid = $this->serverSelectedId();
+
824 
+
825  $this->serverDeselect();
+
826  $this->execute("logadd", array("logmsg" => $logmsg, "loglevel" => $loglevel));
+
827  $this->serverSelect($sid);
+
828  }
+
+
+
+ +
+
+ + + + + + + + + + + + + + + + + + +
TeamSpeak3_Node_Host::login ( $username,
 $password 
)
+
+ +

Authenticates with the TeamSpeak 3 Server instance using given ServerQuery login credentials.

+
Parameters
+ + + +
string$username
string$password
+
+
+
Returns
void
+ +

Definition at line 837 of file Host.php.

+ +

References TeamSpeak3_Node_Abstract\execute(), TeamSpeak3_Helper_Signal\getInstance(), TeamSpeak3_Node_Abstract\setStorage(), and whoamiReset().

+ +

Referenced by __wakeup().

+
838  {
+
839  $this->execute("login", array("client_login_name" => $username, "client_login_password" => $password));
+
840  $this->whoamiReset();
+
841 
+
842  $crypt = new TeamSpeak3_Helper_Crypt($username);
+
843 
+
844  $this->setStorage("_login_user", $username);
+
845  $this->setStorage("_login_pass", $crypt->encrypt($password));
+
846 
+
847  TeamSpeak3_Helper_Signal::getInstance()->emit("notifyLogin", $this);
+
848  }
+
+
+
+ +
+
+ + + + + + + +
TeamSpeak3_Node_Host::logout ()
+
+ +

Deselects the active virtual server and logs out from the server instance.

+
Returns
void
+ +

Definition at line 855 of file Host.php.

+ +

References TeamSpeak3_Node_Abstract\delStorage(), TeamSpeak3_Helper_Signal\getInstance(), TeamSpeak3_Node_Abstract\request(), and whoamiReset().

+
856  {
+
857  $this->request("logout");
+
858  $this->whoamiReset();
+
859 
+
860  $this->delStorage("_login_user");
+
861  $this->delStorage("_login_pass");
+
862 
+
863  TeamSpeak3_Helper_Signal::getInstance()->emit("notifyLogout", $this);
+
864  }
+
+
+
+ +
+
+ + + + + + + +
TeamSpeak3_Node_Host::whoami ()
+
+ +

Returns information about your current ServerQuery connection.

+
Returns
array
+ +

Definition at line 871 of file Host.php.

+ +

References $whoami, and TeamSpeak3_Node_Abstract\request().

+ +

Referenced by serverSelect(), serverSelectByPort(), whoamiGet(), whoamiReset(), and whoamiSet().

+
872  {
+
873  if($this->whoami === null)
+
874  {
+
875  $this->whoami = $this->request("whoami")->toList();
+
876  }
+
877 
+
878  return $this->whoami;
+
879  }
+
+
+
+ +
+
+ + + + + + + + + + + + + + + + + + +
TeamSpeak3_Node_Host::whoamiGet ( $ident,
 $default = null 
)
+
+ +

Returns a single value from the current ServerQuery connection info.

+
Parameters
+ + + +
string$ident
mixed$default
+
+
+
Returns
mixed
+ +

Definition at line 888 of file Host.php.

+ +

References whoami().

+ +

Referenced by serverSelectedId(), and serverSelectedPort().

+
889  {
+
890  if(array_key_exists($ident, $this->whoami()))
+
891  {
+
892  return $this->whoami[$ident];
+
893  }
+
894 
+
895  return $default;
+
896  }
+
+
+
+ +
+
+ + + + + + + + + + + + + + + + + + +
TeamSpeak3_Node_Host::whoamiSet ( $ident,
 $value = null 
)
+
+ +

Sets a single value in the current ServerQuery connection info.

+
Parameters
+ + + +
string$ident
mixed$value
+
+
+
Returns
mixed
+ +

Definition at line 905 of file Host.php.

+ +

References TeamSpeak3_Helper_String\factory(), and whoami().

+
906  {
+
907  $this->whoami();
+
908 
+
909  $this->whoami[$ident] = (is_numeric($value)) ? intval($value) : TeamSpeak3_Helper_String::factory($value);
+
910  }
+
+
+
+ +
+
+ + + + + + + +
TeamSpeak3_Node_Host::whoamiReset ()
+
+ +

Resets the current ServerQuery connection info.

+
Returns
void
+ +

Definition at line 917 of file Host.php.

+ +

References whoami().

+ +

Referenced by login(), logout(), serverSelect(), and serverSelectByPort().

+
918  {
+
919  $this->whoami = null;
+
920  }
+
+
+
+ +
+
+ + + + + + + +
TeamSpeak3_Node_Host::getAdapterHost ()
+
+ +

Returns the hostname or IPv4 address the adapter is connected to.

+
Returns
string
+ +

Definition at line 927 of file Host.php.

+ +

References TeamSpeak3_Node_Abstract\getParent().

+ +

Referenced by __toString().

+
928  {
+
929  return $this->getParent()->getTransportHost();
+
930  }
+
+
+
+ +
+
+ + + + + + + +
TeamSpeak3_Node_Host::getAdapterPort ()
+
+ +

Returns the network port the adapter is connected to.

+
Returns
string
+ +

Definition at line 937 of file Host.php.

+ +

References TeamSpeak3_Node_Abstract\getParent().

+
938  {
+
939  return $this->getParent()->getTransportPort();
+
940  }
+
+
+
+ +
+
+ + + + + +
+ + + + + + + +
TeamSpeak3_Node_Host::fetchNodeList ()
+
+protected
+
+ +

+ +

Definition at line 945 of file Host.php.

+ +

References TeamSpeak3_Node_Abstract\$server, and serverList().

+
946  {
+
947  $servers = $this->serverList();
+
948 
+
949  foreach($servers as $server)
+
950  {
+
951  $this->nodeList[] = $server;
+
952  }
+
953  }
+
+
+
+ +
+
+ + + + + +
+ + + + + + + +
TeamSpeak3_Node_Host::fetchNodeInfo ()
+
+protected
+
+ +

+ +

Definition at line 958 of file Host.php.

+ +

References TeamSpeak3_Node_Abstract\request().

+
959  {
+
960  $info1 = $this->request("hostinfo")->toList();
+
961  $info2 = $this->request("instanceinfo")->toList();
+
962 
+
963  $this->nodeInfo = array_merge($this->nodeInfo, $info1, $info2);
+
964  }
+
+
+
+ +
+
+ + + + + +
+ + + + + + + +
TeamSpeak3_Node_Host::fetchPermissionList ()
+
+protected
+
+ +

+ +

Definition at line 969 of file Host.php.

+ +

References permissionEnds(), permissionList(), and TeamSpeak3_Node_Abstract\request().

+ +

Referenced by permissionEnds(), permissionGetCategoryById(), and permissionList().

+
970  {
+
971  $reply = $this->request("permissionlist -new")->toArray();
+
972  $start = 1;
+
973 
+
974  $this->permissionEnds = array();
+
975  $this->permissionList = array();
+
976 
+
977  foreach($reply as $line)
+
978  {
+
979  if(array_key_exists("group_id_end", $line))
+
980  {
+
981  $this->permissionEnds[] = $line["group_id_end"];
+
982  }
+
983  else
+
984  {
+
985  $this->permissionList[$line["permname"]->toString()] = array_merge(array("permid" => $start++), $line);
+
986  }
+
987  }
+
988  }
+
+
+
+ +
+
+ + + + + +
+ + + + + + + +
TeamSpeak3_Node_Host::fetchPermissionCats ()
+
+protected
+
+ +

+ +

Definition at line 993 of file Host.php.

+ +

References TeamSpeak3_Helper_String\factory(), and permissionCats().

+ +

Referenced by permissionCats(), and permissionGetCategoryById().

+
994  {
+
995  $permcats = array();
+
996  $reflects = new ReflectionClass("TeamSpeak3");
+
997 
+
998  foreach($reflects->getConstants() as $key => $val)
+
999  {
+
1000  if(!TeamSpeak3_Helper_String::factory($key)->startsWith("PERM_CAT") || $val == 0xFF)
+
1001  {
+
1002  continue;
+
1003  }
+
1004 
+
1005  $permcats[$key] = $val;
+
1006  }
+
1007 
+
1008  $this->permissionCats = $permcats;
+
1009  }
+
+
+
+ +
+
+ + + + + + + + +
TeamSpeak3_Node_Host::setPredefinedQueryName ( $name = null)
+
+ +

Sets a pre-defined nickname for ServerQuery clients which will be used automatically after selecting a virtual server.

+
Parameters
+ + +
string$name
+
+
+
Returns
void
+ +

Definition at line 1018 of file Host.php.

+ +

References TeamSpeak3_Node_Abstract\setStorage().

+
1019  {
+
1020  $this->setStorage("_query_nick", $name);
+
1021 
+
1022  $this->predefined_query_name = $name;
+
1023  }
+
+
+
+ +
+
+ + + + + + + +
TeamSpeak3_Node_Host::getPredefinedQueryName ()
+
+ +

Returns the pre-defined nickname for ServerQuery clients which will be used automatically after selecting a virtual server.

+
Returns
string
+ +

Definition at line 1031 of file Host.php.

+ +

References $predefined_query_name.

+
1032  {
+ +
1034  }
+
+
+
+ +
+
+ + + + + + + + +
TeamSpeak3_Node_Host::setExcludeQueryClients ( $exclude = FALSE)
+
+ +

Sets the option to decide whether ServerQuery clients should be excluded from node lists or not.

+
Parameters
+ + +
boolean$exclude
+
+
+
Returns
void
+ +

Definition at line 1043 of file Host.php.

+ +

References TeamSpeak3_Node_Abstract\setStorage().

+
1044  {
+
1045  $this->setStorage("_query_hide", $exclude);
+
1046 
+
1047  $this->exclude_query_clients = $exclude;
+
1048  }
+
+
+
+ +
+
+ + + + + + + +
TeamSpeak3_Node_Host::getExcludeQueryClients ()
+
+ +

Returns the option to decide whether ServerQuery clients should be excluded from node lists or not.

+
Returns
boolean
+ +

Definition at line 1056 of file Host.php.

+ +

References $exclude_query_clients.

+
1057  {
+ +
1059  }
+
+
+
+ +
+
+ + + + + + + + +
TeamSpeak3_Node_Host::setUseOfflineAsVirtual ( $virtual = FALSE)
+
+ +

Sets the option to decide whether offline servers will be started in virtual mode by default or not.

+
Parameters
+ + +
boolean$virtual
+
+
+
Returns
void
+ +

Definition at line 1068 of file Host.php.

+ +

References TeamSpeak3_Node_Abstract\setStorage().

+
1069  {
+
1070  $this->setStorage("_do_virtual", $virtual);
+
1071 
+
1072  $this->start_offline_virtual = $virtual;
+
1073  }
+
+
+
+ +
+
+ + + + + + + +
TeamSpeak3_Node_Host::getUseOfflineAsVirtual ()
+
+ +

Returns the option to decide whether offline servers will be started in virtual mode by default or not.

+
Returns
boolean
+ +

Definition at line 1081 of file Host.php.

+ +

References $start_offline_virtual.

+
1082  {
+ +
1084  }
+
+
+
+ +
+
+ + + + + + + + +
TeamSpeak3_Node_Host::setLoadClientlistFirst ( $first = FALSE)
+
+ +

Sets the option to decide whether clients should be sorted before sub-channels to support the new TeamSpeak 3 Client display mode or not.

+
Parameters
+ + +
boolean$first
+
+
+
Returns
void
+ +

Definition at line 1093 of file Host.php.

+ +

References TeamSpeak3_Node_Abstract\setStorage().

+
1094  {
+
1095  $this->setStorage("_client_top", $first);
+
1096 
+
1097  $this->sort_clients_channels = $first;
+
1098  }
+
+
+
+ +
+
+ + + + + + + +
TeamSpeak3_Node_Host::getLoadClientlistFirst ()
+
+ +

Returns the option to decide whether offline servers will be started in virtual mode by default or not.

+
Returns
boolean
+ +

Definition at line 1106 of file Host.php.

+ +

References $sort_clients_channels.

+
1107  {
+ +
1109  }
+
+
+
+ +
+
+ + + + + + + +
TeamSpeak3_Node_Host::getAdapter ()
+
+ +

Returns the underlying TeamSpeak3_Adapter_ServerQuery object.

+
Returns
TeamSpeak3_Adapter_ServerQuery
+ +

Definition at line 1116 of file Host.php.

+ +

References TeamSpeak3_Node_Abstract\getParent().

+
1117  {
+
1118  return $this->getParent();
+
1119  }
+
+
+
+ +
+
+ + + + + + + +
TeamSpeak3_Node_Host::getUniqueId ()
+
+ +

Returns a unique identifier for the node which can be used as a HTML property.

+
Returns
string
+ +

Definition at line 1126 of file Host.php.

+
1127  {
+
1128  return "ts3_h";
+
1129  }
+
+
+
+ +
+
+ + + + + + + +
TeamSpeak3_Node_Host::getIcon ()
+
+ +

Returns the name of a possible icon to display the node object.

+
Returns
string
+ +

Definition at line 1136 of file Host.php.

+
1137  {
+
1138  return "host";
+
1139  }
+
+
+
+ +
+
+ + + + + + + +
TeamSpeak3_Node_Host::getSymbol ()
+
+ +

Returns a symbol representing the node.

+
Returns
string
+ +

Definition at line 1146 of file Host.php.

+
1147  {
+
1148  return "+";
+
1149  }
+
+
+
+ +
+
+ + + + + + + +
TeamSpeak3_Node_Host::__wakeup ()
+
+ +

Re-authenticates with the TeamSpeak 3 Server instance using given ServerQuery login credentials and re-selects a previously selected virtual server.

+
Returns
void
+ +

Definition at line 1157 of file Host.php.

+ +

References TeamSpeak3_Node_Abstract\$server, TeamSpeak3_Node_Abstract\getStorage(), and login().

+
1158  {
+
1159  $username = $this->getStorage("_login_user");
+
1160  $password = $this->getStorage("_login_pass");
+
1161 
+
1162  if($username && $password)
+
1163  {
+
1164  $crypt = new TeamSpeak3_Helper_Crypt($username);
+
1165 
+
1166  $this->login($username, $crypt->decrypt($password));
+
1167  }
+
1168 
+
1169  $this->predefined_query_name = $this->getStorage("_query_nick");
+
1170  $this->exclude_query_clients = $this->getStorage("_query_hide", FALSE);
+
1171  $this->start_offline_virtual = $this->getStorage("_do_virtual", FALSE);
+
1172  $this->sort_clients_channels = $this->getStorage("_client_top", FALSE);
+
1173 
+
1174  if($server = $this->getStorage("_server_use"))
+
1175  {
+
1176  $func = array_shift($server);
+
1177  $args = array_shift($server);
+
1178 
+
1179  call_user_func_array(array($this, $func), $args);
+
1180  }
+
1181  }
+
+
+
+ +
+
+ + + + + + + +
TeamSpeak3_Node_Host::__toString ()
+
+ +

Returns a string representation of this node.

+
Returns
string
+ +

Definition at line 1188 of file Host.php.

+ +

References getAdapterHost().

+
1189  {
+
1190  return (string) $this->getAdapterHost();
+
1191  }
+
+
+
+ +
+
+ + + + + +
+ + + + + + + + + + + + + + + + + + +
TeamSpeak3_Node_Abstract::request ( $cmd,
 $throw = TRUE 
)
+
+inherited
+
+ +

Sends a prepared command to the server and returns the result.

+
Parameters
+ + + +
string$cmd
boolean$throw
+
+
+
Returns
TeamSpeak3_Adapter_ServerQuery_Reply
+ +

Definition at line 71 of file Abstract.php.

+ +

References TeamSpeak3_Node_Abstract\getParent().

+ +

Referenced by bindingList(), TeamSpeak3_Node_Abstract\execute(), fetchNodeInfo(), fetchPermissionList(), logout(), serverList(), version(), and whoami().

+
72  {
+
73  return $this->getParent()->request($cmd, $throw);
+
74  }
+
+
+
+ +
+
+ + + + + +
+ + + + + + + + + + + + + + + + + + +
TeamSpeak3_Node_Abstract::prepare ( $cmd,
array $params = array() 
)
+
+inherited
+
+ +

Uses given parameters and returns a prepared ServerQuery command.

+
Parameters
+ + + +
string$cmd
array$params
+
+
+
Returns
TeamSpeak3_Helper_String
+ +

Definition at line 83 of file Abstract.php.

+ +

References TeamSpeak3_Node_Abstract\getParent().

+ +

Referenced by TeamSpeak3_Node_Abstract\execute().

+
84  {
+
85  return $this->getParent()->prepare($cmd, $params);
+
86  }
+
+
+
+ +
+
+ + + + + +
+ + + + + + + + + + + + + + + + + + +
TeamSpeak3_Node_Abstract::execute ( $cmd,
array $params = array() 
)
+
+inherited
+
+ +

Prepares and executes a ServerQuery command and returns the result.

+
Parameters
+ + + +
string$cmd
array$params
+
+
+
Returns
TeamSpeak3_Adapter_ServerQuery_Reply
+ +

Definition at line 95 of file Abstract.php.

+ +

References TeamSpeak3_Node_Abstract\prepare(), and TeamSpeak3_Node_Abstract\request().

+ +

Referenced by TeamSpeak3_Node_Server\banCreate(), TeamSpeak3_Node_Server\banDelete(), TeamSpeak3_Node_Server\channelClientPermAssign(), TeamSpeak3_Node_Server\channelClientPermList(), TeamSpeak3_Node_Server\channelClientPermRemove(), TeamSpeak3_Node_Server\channelCreate(), TeamSpeak3_Node_Server\channelDelete(), TeamSpeak3_Node_Server\channelDirCreate(), TeamSpeak3_Node_Server\channelFileDelete(), TeamSpeak3_Node_Server\channelFileInfo(), TeamSpeak3_Node_Server\channelFileList(), TeamSpeak3_Node_Server\channelFileRename(), TeamSpeak3_Node_Server\channelGroupClientList(), TeamSpeak3_Node_Server\channelGroupCopy(), TeamSpeak3_Node_Server\channelGroupCreate(), TeamSpeak3_Node_Server\channelGroupDelete(), TeamSpeak3_Node_Server\channelGroupPermAssign(), TeamSpeak3_Node_Server\channelGroupPermList(), TeamSpeak3_Node_Server\channelGroupPermRemove(), TeamSpeak3_Node_Server\channelGroupRename(), TeamSpeak3_Node_Server\channelMove(), TeamSpeak3_Node_Server\channelPermAssign(), TeamSpeak3_Node_Server\channelPermList(), TeamSpeak3_Node_Server\channelPermRemove(), TeamSpeak3_Node_Server\clientBan(), TeamSpeak3_Node_Server\clientCountDb(), TeamSpeak3_Node_Server\clientDeleteDb(), TeamSpeak3_Node_Server\clientFind(), TeamSpeak3_Node_Server\clientFindDb(), TeamSpeak3_Node_Server\clientGetIdsByUid(), TeamSpeak3_Node_Server\clientGetNameByDbid(), TeamSpeak3_Node_Server\clientGetNameByUid(), TeamSpeak3_Node_Server\clientGetServerGroupsByDbid(), TeamSpeak3_Node_Server\clientInfoDb(), TeamSpeak3_Node_Server\clientKick(), TeamSpeak3_Node_Server\clientListDb(), TeamSpeak3_Node_Server\clientModifyDb(), TeamSpeak3_Node_Server\clientMove(), TeamSpeak3_Node_Server\clientPermAssign(), TeamSpeak3_Node_Server\clientPermList(), TeamSpeak3_Node_Server\clientPermRemove(), TeamSpeak3_Node_Server\clientPoke(), TeamSpeak3_Node_Server\clientSetChannelGroup(), TeamSpeak3_Node_Server\complaintCreate(), TeamSpeak3_Node_Server\complaintDelete(), TeamSpeak3_Node_Server\complaintList(), TeamSpeak3_Node_Server\complaintListClear(), TeamSpeak3_Node_Server\customInfo(), TeamSpeak3_Node_Server\customSearch(), TeamSpeak3_Node_Client\fetchNodeInfo(), TeamSpeak3_Node_Channel\fetchNodeInfo(), TeamSpeak3_Node_Client\getClones(), logAdd(), TeamSpeak3_Node_Server\logAdd(), login(), logView(), TeamSpeak3_Node_Server\logView(), TeamSpeak3_Node_Client\message(), TeamSpeak3_Node_Channelgroup\message(), TeamSpeak3_Node_Servergroup\message(), TeamSpeak3_Node_Channel\message(), message(), TeamSpeak3_Node_Server\message(), TeamSpeak3_Node_Server\messageCreate(), TeamSpeak3_Node_Server\messageDelete(), TeamSpeak3_Node_Server\messageRead(), TeamSpeak3_Node_Client\modify(), TeamSpeak3_Node_Channel\modify(), modify(), TeamSpeak3_Node_Server\modify(), TeamSpeak3_Node_Server\notifyRegister(), permissionFind(), TeamSpeak3_Node_Client\permOverview(), TeamSpeak3_Node_Server\privilegeKeyCreate(), TeamSpeak3_Node_Server\privilegeKeyDelete(), TeamSpeak3_Node_Server\privilegeKeyUse(), selfPermCheck(), TeamSpeak3_Node_Server\selfPermOverview(), TeamSpeak3_Node_Server\selfUpdate(), TeamSpeak3_Node_Server\selfUpdateLogin(), TeamSpeak3_Node_Client\sendPluginCmd(), TeamSpeak3_Node_Channel\sendPluginCmd(), TeamSpeak3_Node_Server\sendPluginCmd(), serverCreate(), serverDelete(), TeamSpeak3_Node_Server\serverGroupClientAdd(), TeamSpeak3_Node_Server\serverGroupClientDel(), TeamSpeak3_Node_Server\serverGroupClientList(), TeamSpeak3_Node_Server\serverGroupCopy(), TeamSpeak3_Node_Server\serverGroupCreate(), TeamSpeak3_Node_Server\serverGroupDelete(), TeamSpeak3_Node_Server\serverGroupPermAssign(), serverGroupPermAutoAssign(), serverGroupPermAutoRemove(), TeamSpeak3_Node_Server\serverGroupPermList(), TeamSpeak3_Node_Server\serverGroupPermRemove(), TeamSpeak3_Node_Server\serverGroupRename(), serverIdGetByPort(), serverSelect(), serverSelectByPort(), serverStart(), serverStop(), serverStopProcess(), TeamSpeak3_Node_Server\tempPasswordCreate(), TeamSpeak3_Node_Server\tempPasswordDelete(), TeamSpeak3_Node_Server\transferInitDownload(), TeamSpeak3_Node_Server\transferInitUpload(), and TeamSpeak3_Node_Server\transferStop().

+
96  {
+
97  return $this->request($this->prepare($cmd, $params));
+
98  }
+
+
+
+ +
+
+ + + + + +
+ + + + + + + +
TeamSpeak3_Node_Abstract::getParent ()
+
+inherited
+
+ +

Returns the parent object of the current node.

+
Returns
TeamSpeak3_Adapter_ServerQuery
+
+TeamSpeak3_Node_Abstract
+ +

Definition at line 106 of file Abstract.php.

+ +

References TeamSpeak3_Node_Abstract\$parent.

+ +

Referenced by TeamSpeak3_Node_Abstract\__call(), TeamSpeak3_Node_Client\addServerGroup(), TeamSpeak3_Node_Client\avatarDownload(), TeamSpeak3_Node_Client\ban(), TeamSpeak3_Node_Server\channelCreate(), TeamSpeak3_Node_Server\channelDelete(), TeamSpeak3_Node_Servergroup\clientAdd(), TeamSpeak3_Node_Servergroup\clientDel(), TeamSpeak3_Node_Channel\clientList(), TeamSpeak3_Node_Channelgroup\clientList(), TeamSpeak3_Node_Servergroup\clientList(), TeamSpeak3_Node_Server\clientList(), TeamSpeak3_Node_Server\clientMove(), TeamSpeak3_Node_Channel\clientPermAssign(), TeamSpeak3_Node_Channel\clientPermList(), TeamSpeak3_Node_Channel\clientPermRemove(), TeamSpeak3_Node_Servergroup\copy(), TeamSpeak3_Node_Channelgroup\copy(), TeamSpeak3_Node_Client\customInfo(), TeamSpeak3_Node_Servergroup\delete(), TeamSpeak3_Node_Channelgroup\delete(), TeamSpeak3_Node_Channel\delete(), TeamSpeak3_Node_Server\delete(), TeamSpeak3_Node_Client\deleteDb(), TeamSpeak3_Node_Channel\dirCreate(), TeamSpeak3_Node_Channelgroup\fetchNodeList(), TeamSpeak3_Node_Servergroup\fetchNodeList(), TeamSpeak3_Node_Channel\fetchNodeList(), TeamSpeak3_Node_Channel\fileDelete(), TeamSpeak3_Node_Channel\fileInfo(), TeamSpeak3_Node_Channel\fileList(), TeamSpeak3_Node_Channel\fileRename(), getAdapter(), getAdapterHost(), getAdapterPort(), TeamSpeak3_Node_Channel\getLevel(), TeamSpeak3_Node_Channel\getPathway(), TeamSpeak3_Node_Channelgroup\getUniqueId(), TeamSpeak3_Node_Servergroup\getUniqueId(), TeamSpeak3_Node_Client\getUniqueId(), TeamSpeak3_Node_Channel\getUniqueId(), TeamSpeak3_Node_Server\getUniqueId(), TeamSpeak3_Node_Channelgroup\iconDownload(), TeamSpeak3_Node_Servergroup\iconDownload(), TeamSpeak3_Node_Client\iconDownload(), TeamSpeak3_Node_Channel\iconDownload(), TeamSpeak3_Node_Client\infoDb(), TeamSpeak3_Node_Channel\isSpacer(), TeamSpeak3_Node_Client\kick(), TeamSpeak3_Node_Client\memberOf(), TeamSpeak3_Node_Channel\message(), TeamSpeak3_Node_Client\modifyDb(), TeamSpeak3_Node_Client\move(), TeamSpeak3_Node_Channel\move(), TeamSpeak3_Node_Channelgroup\permAssign(), TeamSpeak3_Node_Servergroup\permAssign(), TeamSpeak3_Node_Client\permAssign(), TeamSpeak3_Node_Channel\permAssign(), TeamSpeak3_Node_Servergroup\permList(), TeamSpeak3_Node_Channelgroup\permList(), TeamSpeak3_Node_Client\permList(), TeamSpeak3_Node_Channel\permList(), TeamSpeak3_Node_Channelgroup\permRemove(), TeamSpeak3_Node_Servergroup\permRemove(), TeamSpeak3_Node_Client\permRemove(), TeamSpeak3_Node_Channel\permRemove(), TeamSpeak3_Node_Client\poke(), TeamSpeak3_Node_Abstract\prepare(), TeamSpeak3_Node_Channelgroup\privilegeKeyCreate(), TeamSpeak3_Node_Servergroup\privilegeKeyCreate(), TeamSpeak3_Node_Client\remServerGroup(), TeamSpeak3_Node_Channelgroup\rename(), TeamSpeak3_Node_Servergroup\rename(), TeamSpeak3_Node_Abstract\request(), TeamSpeak3_Node_Server\request(), TeamSpeak3_Node_Channel\sendPluginCmd(), TeamSpeak3_Node_Client\setChannelGroup(), TeamSpeak3_Node_Server\snapshotDeploy(), TeamSpeak3_Node_Channel\spacerGetAlign(), TeamSpeak3_Node_Channel\spacerGetType(), TeamSpeak3_Node_Server\start(), TeamSpeak3_Node_Server\stop(), TeamSpeak3_Node_Channel\subChannelList(), TeamSpeak3_Node_Server\transferInitDownload(), and TeamSpeak3_Node_Server\transferInitUpload().

+
107  {
+
108  return $this->parent;
+
109  }
+
+
+
+ +
+
+ + + + + +
+ + + + + + + +
TeamSpeak3_Node_Abstract::getId ()
+
+inherited
+
+ +

Returns the primary ID of the current node.

+
Returns
integer
+ +

Definition at line 116 of file Abstract.php.

+ +

References TeamSpeak3_Node_Abstract\$nodeId.

+ +

Referenced by TeamSpeak3_Node_Client\ban(), TeamSpeak3_Node_Server\channelDelete(), TeamSpeak3_Node_Server\channelFileList(), TeamSpeak3_Node_Servergroup\clientAdd(), TeamSpeak3_Node_Servergroup\clientDel(), TeamSpeak3_Node_Channel\clientList(), TeamSpeak3_Node_Channelgroup\clientList(), TeamSpeak3_Node_Servergroup\clientList(), TeamSpeak3_Node_Channel\clientPermAssign(), TeamSpeak3_Node_Channel\clientPermList(), TeamSpeak3_Node_Channel\clientPermRemove(), TeamSpeak3_Node_Servergroup\copy(), TeamSpeak3_Node_Channelgroup\copy(), TeamSpeak3_Node_Channelgroup\delete(), TeamSpeak3_Node_Servergroup\delete(), TeamSpeak3_Node_Channel\delete(), TeamSpeak3_Node_Server\delete(), TeamSpeak3_Node_Channel\dirCreate(), TeamSpeak3_Node_Client\fetchNodeInfo(), TeamSpeak3_Node_Channel\fetchNodeInfo(), TeamSpeak3_Node_Channelgroup\fetchNodeList(), TeamSpeak3_Node_Servergroup\fetchNodeList(), TeamSpeak3_Node_Channel\fetchNodeList(), TeamSpeak3_Node_Channel\fileDelete(), TeamSpeak3_Node_Channel\fileInfo(), TeamSpeak3_Node_Channel\fileList(), TeamSpeak3_Node_Channel\fileRename(), TeamSpeak3_Node_Channel\getLevel(), TeamSpeak3_Node_Channel\getPathway(), TeamSpeak3_Node_Channelgroup\getUniqueId(), TeamSpeak3_Node_Servergroup\getUniqueId(), TeamSpeak3_Node_Client\getUniqueId(), TeamSpeak3_Node_Channel\getUniqueId(), TeamSpeak3_Node_Server\getUniqueId(), TeamSpeak3_Node_Client\kick(), TeamSpeak3_Node_Client\message(), TeamSpeak3_Node_Channel\message(), TeamSpeak3_Node_Server\message(), TeamSpeak3_Node_Client\modify(), TeamSpeak3_Node_Channel\modify(), TeamSpeak3_Node_Client\move(), TeamSpeak3_Node_Channel\move(), TeamSpeak3_Node_Channelgroup\permAssign(), TeamSpeak3_Node_Servergroup\permAssign(), TeamSpeak3_Node_Channel\permAssign(), TeamSpeak3_Node_Channelgroup\permList(), TeamSpeak3_Node_Servergroup\permList(), TeamSpeak3_Node_Channel\permList(), TeamSpeak3_Node_Channelgroup\permRemove(), TeamSpeak3_Node_Servergroup\permRemove(), TeamSpeak3_Node_Channel\permRemove(), TeamSpeak3_Node_Client\poke(), TeamSpeak3_Node_Channelgroup\privilegeKeyCreate(), TeamSpeak3_Node_Servergroup\privilegeKeyCreate(), TeamSpeak3_Node_Channelgroup\rename(), TeamSpeak3_Node_Servergroup\rename(), TeamSpeak3_Node_Server\request(), TeamSpeak3_Node_Client\sendPluginCmd(), TeamSpeak3_Node_Channel\sendPluginCmd(), TeamSpeak3_Node_Server\sortGroupList(), TeamSpeak3_Node_Channel\spacerGetAlign(), TeamSpeak3_Node_Channel\spacerGetType(), TeamSpeak3_Node_Server\start(), TeamSpeak3_Node_Server\stop(), and TeamSpeak3_Node_Channel\subChannelList().

+
117  {
+
118  return $this->nodeId;
+
119  }
+
+
+
+ +
+
+ + + + + +
+ + + + + + + + +
TeamSpeak3_Node_Abstract::iconIsLocal ( $key)
+
+inherited
+
+ +

Returns TRUE if the node icon has a local source.

+
Parameters
+ + +
string$key
+
+
+
Returns
boolean
+ +

Definition at line 127 of file Abstract.php.

+ +

Referenced by TeamSpeak3_Node_Channelgroup\iconDownload(), TeamSpeak3_Node_Servergroup\iconDownload(), TeamSpeak3_Node_Client\iconDownload(), TeamSpeak3_Node_Channel\iconDownload(), and TeamSpeak3_Node_Server\iconDownload().

+
128  {
+
129  return ($this[$key] > 0 && $this[$key] < 1000) ? TRUE : FALSE;
+
130  }
+
+
+
+ +
+
+ + + + + +
+ + + + + + + + +
TeamSpeak3_Node_Abstract::iconGetName ( $key)
+
+inherited
+
+ +

Returns the internal path of the node icon.

+
Parameters
+ + +
string$key
+
+
+
Returns
TeamSpeak3_Helper_String
+ +

Definition at line 138 of file Abstract.php.

+ +

Referenced by TeamSpeak3_Node_Abstract\getInfo(), TeamSpeak3_Node_Channelgroup\iconDownload(), TeamSpeak3_Node_Servergroup\iconDownload(), TeamSpeak3_Node_Client\iconDownload(), TeamSpeak3_Node_Channel\iconDownload(), and TeamSpeak3_Node_Server\iconDownload().

+
139  {
+
140  $iconid = ($this[$key] < 0) ? (pow(2, 32))-($this[$key]*-1) : $this[$key];
+
141 
+
142  return new TeamSpeak3_Helper_String("/icon_" . $iconid);
+
143  }
+
+
+
+ +
+
+ + + + + +
+ + + + + + + + +
TeamSpeak3_Node_Abstract::getClass ( $prefix = "ts3_")
+
+inherited
+
+ +

Returns a possible classname for the node which can be used as a HTML property.

+
Parameters
+ + +
string$prefix
+
+
+
Returns
string
+ +

Definition at line 151 of file Abstract.php.

+ +

References TeamSpeak3_Helper_String\factory().

+
152  {
+
153  if($this instanceof TeamSpeak3_Node_Channel && $this->isSpacer())
+
154  {
+
155  return $prefix . "spacer";
+
156  }
+
157  elseif($this instanceof TeamSpeak3_Node_Client && $this["client_type"])
+
158  {
+
159  return $prefix . "query";
+
160  }
+
161 
+
162  return $prefix . TeamSpeak3_Helper_String::factory(get_class($this))->section("_", 2)->toLower();
+
163  }
+
+
+
+ +
+
+ + + + + +
+ + + + + + + + +
TeamSpeak3_Node_Abstract::getViewer (TeamSpeak3_Viewer_Interface $viewer)
+
+inherited
+
+ +

Returns the HTML code to display a TeamSpeak 3 viewer.

+
Parameters
+ + +
TeamSpeak3_Viewer_Interface$viewer
+
+
+
Returns
string
+ +

Definition at line 192 of file Abstract.php.

+ +

References TeamSpeak3_Viewer_Interface\fetchObject().

+
193  {
+
194  $html = $viewer->fetchObject($this);
+
195 
+
196  $iterator = new RecursiveIteratorIterator($this, RecursiveIteratorIterator::SELF_FIRST);
+
197 
+
198  foreach($iterator as $node)
+
199  {
+
200  $siblings = array();
+
201 
+
202  for($level = 0; $level < $iterator->getDepth(); $level++)
+
203  {
+
204  $siblings[] = ($iterator->getSubIterator($level)->hasNext()) ? 1 : 0;
+
205  }
+
206 
+
207  $siblings[] = (!$iterator->getSubIterator($level)->hasNext()) ? 1 : 0;
+
208 
+
209  $html .= $viewer->fetchObject($node, $siblings);
+
210  }
+
211 
+
212  return $html;
+
213  }
+
+
+
+ +
+
+ + + + + +
+ + + + + + + + + + + + + + + + + + +
TeamSpeak3_Node_Abstract::filterList (array $nodes = array(),
array $rules = array() 
)
+
+protectedinherited
+
+ +

Filters given node list array using specified filter rules.

+
Parameters
+ + + +
array$nodes
array$rules
+
+
+
Returns
array
+ +

Definition at line 222 of file Abstract.php.

+ +

Referenced by TeamSpeak3_Node_Server\channelGroupList(), TeamSpeak3_Node_Server\channelList(), TeamSpeak3_Node_Channel\clientList(), TeamSpeak3_Node_Server\clientList(), TeamSpeak3_Node_Server\serverGroupList(), serverList(), and TeamSpeak3_Node_Channel\subChannelList().

+
223  {
+
224  if(!empty($rules))
+
225  {
+
226  foreach($nodes as $node)
+
227  {
+
228  if(!$node instanceof TeamSpeak3_Node_Abstract) continue;
+
229 
+
230  $props = $node->getInfo(FALSE);
+
231  $props = array_intersect_key($props, $rules);
+
232  $match = TRUE;
+
233 
+
234  foreach($props as $key => $val)
+
235  {
+
236  if($val instanceof TeamSpeak3_Helper_String)
+
237  {
+
238  $match = $val->contains($rules[$key], TRUE);
+
239  }
+
240  else
+
241  {
+
242  $match = $val == $rules[$key];
+
243  }
+
244 
+
245  if($match === FALSE)
+
246  {
+
247  unset($nodes[$node->getId()]);
+
248  }
+
249  }
+
250  }
+
251  }
+
252 
+
253  return $nodes;
+
254  }
+
+
+
+ +
+
+ + + + + +
+ + + + + + + + + + + + + + + + + + +
TeamSpeak3_Node_Abstract::getInfo ( $extend = TRUE,
 $convert = FALSE 
)
+
+inherited
+
+ +

Returns all information available on this node.

+

If $convert is enabled, some property values will be converted to human-readable values.

+
Parameters
+ + + +
boolean$extend
boolean$convert
+
+
+
Returns
array
+ +

Definition at line 264 of file Abstract.php.

+ +

References TeamSpeak3_Node_Abstract\$nodeInfo, TeamSpeak3_Helper_Convert\bytes(), TeamSpeak3_Helper_String\factory(), TeamSpeak3_Node_Abstract\fetchNodeInfo(), TeamSpeak3_Node_Abstract\iconGetName(), TeamSpeak3_Helper_Convert\seconds(), and TeamSpeak3_Helper_Convert\version().

+
265  {
+
266  if($extend)
+
267  {
+
268  $this->fetchNodeInfo();
+
269  }
+
270 
+
271  if($convert)
+
272  {
+
273  $info = $this->nodeInfo;
+
274 
+
275  foreach($info as $key => $val)
+
276  {
+ +
278 
+
279  if($key->contains("_bytes_"))
+
280  {
+
281  $info[$key->toString()] = TeamSpeak3_Helper_Convert::bytes($val);
+
282  }
+
283  elseif($key->contains("_bandwidth_"))
+
284  {
+
285  $info[$key->toString()] = TeamSpeak3_Helper_Convert::bytes($val) . "/s";
+
286  }
+
287  elseif($key->contains("_packets_"))
+
288  {
+
289  $info[$key->toString()] = number_format($val, null, null, ".");
+
290  }
+
291  elseif($key->contains("_packetloss_"))
+
292  {
+
293  $info[$key->toString()] = sprintf("%01.2f", floatval($val->toString())*100) . "%";
+
294  }
+
295  elseif($key->endsWith("_uptime"))
+
296  {
+
297  $info[$key->toString()] = TeamSpeak3_Helper_Convert::seconds($val);
+
298  }
+
299  elseif($key->endsWith("_version"))
+
300  {
+
301  $info[$key->toString()] = TeamSpeak3_Helper_Convert::version($val);
+
302  }
+
303  elseif($key->endsWith("_icon_id"))
+
304  {
+
305  $info[$key->toString()] = $this->iconGetName($key)->filterDigits();
+
306  }
+
307  }
+
308 
+
309  return $info;
+
310  }
+
311 
+
312  return $this->nodeInfo;
+
313  }
+
+
+
+ +
+
+ + + + + +
+ + + + + + + + + + + + + + + + + + +
TeamSpeak3_Node_Abstract::getProperty ( $property,
 $default = null 
)
+
+inherited
+
+ +

Returns the specified property or a pre-defined default value from the node info array.

+
Parameters
+ + + +
string$property
mixed$default
+
+
+
Returns
mixed
+ +

Definition at line 322 of file Abstract.php.

+ +

References TeamSpeak3_Node_Abstract\fetchNodeInfo(), and TeamSpeak3_Node_Abstract\offsetExists().

+ +

Referenced by TeamSpeak3_Node_Server\sortClientList(), and TeamSpeak3_Node_Server\sortGroupList().

+
323  {
+
324  if(!$this->offsetExists($property))
+
325  {
+
326  $this->fetchNodeInfo();
+
327  }
+
328 
+
329  if(!$this->offsetExists($property))
+
330  {
+
331  return $default;
+
332  }
+
333 
+
334  return $this->nodeInfo[(string) $property];
+
335  }
+
+
+
+ +
+
+ + + + + +
+ + + + + + + +
TeamSpeak3_Node_Abstract::toString ()
+
+inherited
+
+ +

Returns a string representation of this node.

+
Returns
string
+ +

Definition at line 352 of file Abstract.php.

+ +

References TeamSpeak3_Node_Abstract\__toString().

+
353  {
+
354  return $this->__toString();
+
355  }
+
+
+
+ +
+
+ + + + + +
+ + + + + + + +
TeamSpeak3_Node_Abstract::toArray ()
+
+inherited
+
+ +

Returns an assoc array filled with current node info properties.

+
Returns
array
+ +

Definition at line 362 of file Abstract.php.

+ +

References TeamSpeak3_Node_Abstract\$nodeList.

+ +

Referenced by TeamSpeak3_Node_Server\channelFileInfo().

+
363  {
+
364  return $this->nodeList;
+
365  }
+
+
+
+ +
+
+ + + + + +
+ + + + + + + + + + + + + + + + + + +
TeamSpeak3_Node_Abstract::__call ( $name,
array $args 
)
+
+inherited
+
+ +

Called whenever we're using an unknown method.

+
Parameters
+ + + +
string$name
array$args
+
+
+
Exceptions
+ + +
TeamSpeak3_Node_Exception
+
+
+
Returns
mixed
+ +

Definition at line 375 of file Abstract.php.

+ +

References TeamSpeak3_Node_Abstract\getParent().

+
376  {
+
377  if($this->getParent() instanceof TeamSpeak3_Node_Abstract)
+
378  {
+
379  return call_user_func_array(array($this->getParent(), $name), $args);
+
380  }
+
381 
+
382  throw new TeamSpeak3_Node_Exception("node method '" . $name . "()' does not exist");
+
383  }
+
+
+
+ +
+
+ + + + + +
+ + + + + + + + + + + + + + + + + + +
TeamSpeak3_Node_Abstract::setStorage ( $key,
 $val 
)
+
+protectedinherited
+
+ +

Writes data to the internal storage array.

+
Parameters
+ + + +
string$key
mixed$val
+
+
+
Returns
void
+ +

Definition at line 392 of file Abstract.php.

+ +

Referenced by login(), serverSelect(), serverSelectByPort(), setExcludeQueryClients(), setLoadClientlistFirst(), setPredefinedQueryName(), and setUseOfflineAsVirtual().

+
393  {
+
394  $this->storage[$key] = $val;
+
395  }
+
+
+
+ +
+
+ + + + + +
+ + + + + + + + + + + + + + + + + + +
TeamSpeak3_Node_Abstract::getStorage ( $key,
 $default = null 
)
+
+protectedinherited
+
+ +

Returns data from the internal storage array.

+
Parameters
+ + + +
string$key
mixed$default
+
+
+
Returns
mixed
+ +

Definition at line 404 of file Abstract.php.

+ +

Referenced by __wakeup().

+
405  {
+
406  return (array_key_exists($key, $this->storage) && !empty($this->storage[$key])) ? $this->storage[$key] : $default;
+
407  }
+
+
+
+ +
+
+ + + + + +
+ + + + + + + + +
TeamSpeak3_Node_Abstract::delStorage ( $key)
+
+protectedinherited
+
+ +

Deletes data from the internal storage array.

+
Parameters
+ + +
string$key
+
+
+
Returns
void
+ +

Definition at line 415 of file Abstract.php.

+ +

Referenced by logout(), and serverDeselect().

+
416  {
+
417  unset($this->storage[$key]);
+
418  }
+
+
+
+ +
+
+ + + + + +
+ + + + + + + +
TeamSpeak3_Node_Abstract::__sleep ()
+
+inherited
+
+ +

Commit pending data.

+
Returns
array
+ +

Definition at line 425 of file Abstract.php.

+
426  {
+
427  return array("parent", "storage", "nodeId");
+
428  }
+
+
+
+ +
+
+ + + + + +
+ + + + + + + +
TeamSpeak3_Node_Abstract::resetNodeInfo ()
+
+protectedinherited
+
+ +

+ +

Definition at line 449 of file Abstract.php.

+ +

Referenced by TeamSpeak3_Node_Client\modify(), TeamSpeak3_Node_Channel\modify(), modify(), and TeamSpeak3_Node_Server\modify().

+
450  {
+
451  $this->nodeInfo = array();
+
452  }
+
+
+
+ +
+
+ + + + + +
+ + + + + + + +
TeamSpeak3_Node_Abstract::verifyNodeList ()
+
+protectedinherited
+
+
+ +
+
+ + + + + +
+ + + + + + + +
TeamSpeak3_Node_Abstract::resetNodeList ()
+
+protectedinherited
+
+
+ +
+
+ + + + + +
+ + + + + + + +
TeamSpeak3_Node_Abstract::count ()
+
+inherited
+
+
+ + + +
+
+ + + + + +
+ + + + + + + +
TeamSpeak3_Node_Abstract::getChildren ()
+
+inherited
+
+ +

+ +

Definition at line 496 of file Abstract.php.

+ +

References TeamSpeak3_Node_Abstract\current(), and TeamSpeak3_Node_Abstract\verifyNodeList().

+
497  {
+
498  $this->verifyNodeList();
+
499 
+
500  return $this->current();
+
501  }
+
+
+
+ +
+
+ + + + + +
+ + + + + + + +
TeamSpeak3_Node_Abstract::hasChildren ()
+
+inherited
+
+ +

+ +

Definition at line 506 of file Abstract.php.

+ +

References TeamSpeak3_Node_Abstract\current(), and TeamSpeak3_Node_Abstract\verifyNodeList().

+
507  {
+
508  $this->verifyNodeList();
+
509 
+
510  return $this->current()->count() > 0;
+
511  }
+
+
+
+ +
+
+ + + + + +
+ + + + + + + +
TeamSpeak3_Node_Abstract::hasNext ()
+
+inherited
+
+ +

+ +

Definition at line 516 of file Abstract.php.

+ +

References TeamSpeak3_Node_Abstract\count(), TeamSpeak3_Node_Abstract\key(), and TeamSpeak3_Node_Abstract\verifyNodeList().

+
517  {
+
518  $this->verifyNodeList();
+
519 
+
520  return $this->key()+1 < $this->count();
+
521  }
+
+
+
+ +
+
+ + + + + +
+ + + + + + + +
TeamSpeak3_Node_Abstract::key ()
+
+inherited
+
+ +

+ +

Definition at line 526 of file Abstract.php.

+ +

References TeamSpeak3_Node_Abstract\verifyNodeList().

+ +

Referenced by TeamSpeak3_Node_Abstract\hasNext(), and TeamSpeak3_Node_Abstract\valid().

+
527  {
+
528  $this->verifyNodeList();
+
529 
+
530  return key($this->nodeList);
+
531  }
+
+
+
+ +
+
+ + + + + +
+ + + + + + + +
TeamSpeak3_Node_Abstract::valid ()
+
+inherited
+
+ +

+ +

Definition at line 536 of file Abstract.php.

+ +

References TeamSpeak3_Node_Abstract\key(), and TeamSpeak3_Node_Abstract\verifyNodeList().

+
537  {
+
538  $this->verifyNodeList();
+
539 
+
540  return $this->key() !== null;
+
541  }
+
+
+
+ +
+
+ + + + + +
+ + + + + + + +
TeamSpeak3_Node_Abstract::next ()
+
+inherited
+
+ +

+ +

Definition at line 546 of file Abstract.php.

+ +

References TeamSpeak3_Node_Abstract\verifyNodeList().

+
547  {
+
548  $this->verifyNodeList();
+
549 
+
550  return next($this->nodeList);
+
551  }
+
+
+
+ +
+
+ + + + + +
+ + + + + + + +
TeamSpeak3_Node_Abstract::rewind ()
+
+inherited
+
+ +

+ +

Definition at line 556 of file Abstract.php.

+ +

References TeamSpeak3_Node_Abstract\verifyNodeList().

+
557  {
+
558  $this->verifyNodeList();
+
559 
+
560  return reset($this->nodeList);
+
561  }
+
+
+
+ +
+
+ + + + + +
+ + + + + + + + +
TeamSpeak3_Node_Abstract::offsetExists ( $offset)
+
+inherited
+
+ +

+ +

Definition at line 566 of file Abstract.php.

+ +

Referenced by TeamSpeak3_Node_Abstract\getProperty(), and TeamSpeak3_Node_Abstract\offsetGet().

+
567  {
+
568  return array_key_exists((string) $offset, $this->nodeInfo) ? TRUE : FALSE;
+
569  }
+
+
+
+ +
+
+ + + + + +
+ + + + + + + + +
TeamSpeak3_Node_Abstract::offsetGet ( $offset)
+
+inherited
+
+ +

+ +

Definition at line 574 of file Abstract.php.

+ +

References TeamSpeak3_Node_Abstract\fetchNodeInfo(), and TeamSpeak3_Node_Abstract\offsetExists().

+ +

Referenced by TeamSpeak3_Node_Abstract\__get().

+
575  {
+
576  if(!$this->offsetExists($offset))
+
577  {
+
578  $this->fetchNodeInfo();
+
579  }
+
580 
+
581  if(!$this->offsetExists($offset))
+
582  {
+
583  throw new TeamSpeak3_Adapter_ServerQuery_Exception("invalid parameter", 0x602);
+
584  }
+
585 
+
586  return $this->nodeInfo[(string) $offset];
+
587  }
+
+
+
+ +
+
+ + + + + +
+ + + + + + + + + + + + + + + + + + +
TeamSpeak3_Node_Abstract::offsetSet ( $offset,
 $value 
)
+
+inherited
+
+ +

+ +

Definition at line 592 of file Abstract.php.

+ +

Referenced by TeamSpeak3_Node_Abstract\__set().

+
593  {
+
594  if(method_exists($this, "modify"))
+
595  {
+
596  return $this->modify(array((string) $offset => $value));
+
597  }
+
598 
+
599  throw new TeamSpeak3_Node_Exception("node '" . get_class($this) . "' is read only");
+
600  }
+
+
+
+ +
+
+ + + + + +
+ + + + + + + + +
TeamSpeak3_Node_Abstract::offsetUnset ( $offset)
+
+inherited
+
+ +

+ +

Definition at line 605 of file Abstract.php.

+
606  {
+
607  unset($this->nodeInfo[(string) $offset]);
+
608  }
+
+
+
+ +
+
+ + + + + +
+ + + + + + + + +
TeamSpeak3_Node_Abstract::__get ( $offset)
+
+inherited
+
+ +

+ +

Definition at line 613 of file Abstract.php.

+ +

References TeamSpeak3_Node_Abstract\offsetGet().

+
614  {
+
615  return $this->offsetGet($offset);
+
616  }
+
+
+
+ +
+
+ + + + + +
+ + + + + + + + + + + + + + + + + + +
TeamSpeak3_Node_Abstract::__set ( $offset,
 $value 
)
+
+inherited
+
+ +

+ +

Definition at line 621 of file Abstract.php.

+ +

References TeamSpeak3_Node_Abstract\offsetSet().

+
622  {
+
623  $this->offsetSet($offset, $value);
+
624  }
+
+
+
+

Member Data Documentation

+ +
+
+ + + + + +
+ + + + +
TeamSpeak3_Node_Host::$whoami = null
+
+protected
+
+ +

+ +

Definition at line 37 of file Host.php.

+ +

Referenced by whoami().

+ +
+
+ +
+
+ + + + + +
+ + + + +
TeamSpeak3_Node_Host::$version = null
+
+protected
+
+ +

+ +

Definition at line 42 of file Host.php.

+ +

Referenced by version().

+ +
+
+ +
+
+ + + + + +
+ + + + +
TeamSpeak3_Node_Host::$serverList = null
+
+protected
+
+ +

+ +

Definition at line 47 of file Host.php.

+ +
+
+ +
+
+ + + + + +
+ + + + +
TeamSpeak3_Node_Host::$permissionEnds = null
+
+protected
+
+ +

+ +

Definition at line 52 of file Host.php.

+ +
+
+ +
+
+ + + + + +
+ + + + +
TeamSpeak3_Node_Host::$permissionList = null
+
+protected
+
+ +

+ +

Definition at line 57 of file Host.php.

+ +

Referenced by permissionList().

+ +
+
+ +
+
+ + + + + +
+ + + + +
TeamSpeak3_Node_Host::$permissionCats = null
+
+protected
+
+ +

+ +

Definition at line 62 of file Host.php.

+ +

Referenced by permissionCats(), and permissionEnds().

+ +
+
+ +
+
+ + + + + +
+ + + + +
TeamSpeak3_Node_Host::$predefined_query_name = null
+
+protected
+
+ +

+ +

Definition at line 67 of file Host.php.

+ +

Referenced by getPredefinedQueryName().

+ +
+
+ +
+
+ + + + + +
+ + + + +
TeamSpeak3_Node_Host::$exclude_query_clients = FALSE
+
+protected
+
+ +

+ +

Definition at line 72 of file Host.php.

+ +

Referenced by getExcludeQueryClients().

+ +
+
+ +
+
+ + + + + +
+ + + + +
TeamSpeak3_Node_Host::$start_offline_virtual = FALSE
+
+protected
+
+ +

+ +

Definition at line 77 of file Host.php.

+ +

Referenced by getUseOfflineAsVirtual().

+ +
+
+ +
+
+ + + + + +
+ + + + +
TeamSpeak3_Node_Host::$sort_clients_channels = FALSE
+
+protected
+
+ +

+ +

Definition at line 82 of file Host.php.

+ +

Referenced by getLoadClientlistFirst().

+ +
+
+ +
+
+ + + + + +
+ + + + +
TeamSpeak3_Node_Abstract::$parent = null
+
+protectedinherited
+
+ +

+ +

Definition at line 37 of file Abstract.php.

+ +

Referenced by TeamSpeak3_Node_Abstract\getParent().

+ +
+
+ +
+
+ + + + + +
+ + + + +
TeamSpeak3_Node_Abstract::$server = null
+
+protectedinherited
+
+
+ +
+
+ + + + + +
+ + + + +
TeamSpeak3_Node_Abstract::$nodeId = 0x00
+
+protectedinherited
+
+ +

+ +

Definition at line 47 of file Abstract.php.

+ +

Referenced by TeamSpeak3_Node_Abstract\getId().

+ +
+
+ +
+
+ + + + + +
+ + + + +
TeamSpeak3_Node_Abstract::$nodeList = null
+
+protectedinherited
+
+ +

+ +

Definition at line 52 of file Abstract.php.

+ +

Referenced by TeamSpeak3_Node_Abstract\toArray().

+ +
+
+ +
+
+ + + + + +
+ + + + +
TeamSpeak3_Node_Abstract::$nodeInfo = array()
+
+protectedinherited
+
+ +

+ +

Definition at line 57 of file Abstract.php.

+ +

Referenced by TeamSpeak3_Node_Abstract\getInfo().

+ +
+
+ +
+
+ + + + + +
+ + + + +
TeamSpeak3_Node_Abstract::$storage = array()
+
+protectedinherited
+
+ +

+ +

Definition at line 62 of file Abstract.php.

+ +
+
+
The documentation for this class was generated from the following file: +
+
+ + + + diff --git a/lib/docs/html/class_team_speak3___node___host.js b/lib/docs/html/class_team_speak3___node___host.js new file mode 100644 index 0000000..c53c425 --- /dev/null +++ b/lib/docs/html/class_team_speak3___node___host.js @@ -0,0 +1,122 @@ +var class_team_speak3___node___host = +[ + [ "__construct", "class_team_speak3___node___host.html#af3c2ddcc3d5e62711d1b889446bfdd7e", null ], + [ "serverSelectedId", "class_team_speak3___node___host.html#a690b4c2d08d8fb0da6d89936b01fc66a", null ], + [ "serverSelectedPort", "class_team_speak3___node___host.html#a1d69e0f2faa753ead87cb3262cbdbe4e", null ], + [ "version", "class_team_speak3___node___host.html#a46731245bd45599ef4d68cef0b4ca416", null ], + [ "serverSelect", "class_team_speak3___node___host.html#a458a95deb930c6a8fad35c74ed1e24b7", null ], + [ "serverSelectById", "class_team_speak3___node___host.html#af40f36410c5e022810e3f1546e420eee", null ], + [ "serverSelectByPort", "class_team_speak3___node___host.html#a1735a2cfe745783b5d1aed7d74733e3d", null ], + [ "serverDeselect", "class_team_speak3___node___host.html#a7cdbb02364fbdcde55f6931ecfed32e6", null ], + [ "serverIdGetByPort", "class_team_speak3___node___host.html#ad18fcacc29347482852bc26404f0afeb", null ], + [ "serverGetPortById", "class_team_speak3___node___host.html#a9afa569106eacc750249e699dc138937", null ], + [ "serverGetSelected", "class_team_speak3___node___host.html#a1cd8d3f3f4457d827bd8aa7af6b6d457", null ], + [ "serverGetById", "class_team_speak3___node___host.html#aebc3e06e7bffcc0dc0f725b1d60bbcc8", null ], + [ "serverGetByPort", "class_team_speak3___node___host.html#a0c41dd934b1d3cf696f0d9ad68b9b4f1", null ], + [ "serverGetByName", "class_team_speak3___node___host.html#ad03325cb5a05509eb1a73ae947f3b899", null ], + [ "serverGetByUid", "class_team_speak3___node___host.html#a3684344def5e16f20bd246cca546d54f", null ], + [ "serverGetByTSDNS", "class_team_speak3___node___host.html#acc10ad7c83e424cb785656695f2ad5ff", null ], + [ "serverCreate", "class_team_speak3___node___host.html#a1a3e7ae9444d37169d52376d5bde2b03", null ], + [ "serverDelete", "class_team_speak3___node___host.html#add283a1e8d0938064cd37168af0eacda", null ], + [ "serverStart", "class_team_speak3___node___host.html#a884c27a8e4fdc135b3a71c2c3d833271", null ], + [ "serverStop", "class_team_speak3___node___host.html#af51beeafd1f513a233308775278f5bc1", null ], + [ "serverStopProcess", "class_team_speak3___node___host.html#ab34c49d39d9e87f25168ea654005e893", null ], + [ "serverList", "class_team_speak3___node___host.html#af60cb13dd90638c36de581f61ca8c92d", null ], + [ "serverListReset", "class_team_speak3___node___host.html#a62c9504f6d6e9128a2ef2cbc34f257b6", null ], + [ "bindingList", "class_team_speak3___node___host.html#ab185118ab245fbd1068b2b0301dd21e7", null ], + [ "permissionList", "class_team_speak3___node___host.html#a8495ade30f51bda37e41b719ed183092", null ], + [ "permissionCats", "class_team_speak3___node___host.html#a9a998c77512d885b738aa02871f5f36d", null ], + [ "permissionEnds", "class_team_speak3___node___host.html#a02d37eda05e217d66ab8aaed01e32203", null ], + [ "permissionTree", "class_team_speak3___node___host.html#a2fc2c5feb088d545c4d4140a1bed1993", null ], + [ "permissionFind", "class_team_speak3___node___host.html#a47648cae36cfe3c602bb02ef3eb840e2", null ], + [ "permissionGetIdByName", "class_team_speak3___node___host.html#a3303cb17f6a97ff39b6ecfd0cf88f3c1", null ], + [ "permissionGetNameById", "class_team_speak3___node___host.html#a6c2afc0481179435222ed45aebd088fa", null ], + [ "permissionGetCategoryById", "class_team_speak3___node___host.html#a211d5a64cffe5619b24380332e61075a", null ], + [ "permissionGetGrantById", "class_team_speak3___node___host.html#a54992d4abd6db0b12dc8aa4aac76b14d", null ], + [ "serverGroupPermAutoAssign", "class_team_speak3___node___host.html#a4bdd23ed10633b2a3b42231f1642abfc", null ], + [ "serverGroupPermAutoRemove", "class_team_speak3___node___host.html#aebce552f43d459d24b80a1b667480b5a", null ], + [ "selfPermCheck", "class_team_speak3___node___host.html#ae93b20cc3d56984e87836bd0985f93d3", null ], + [ "modify", "class_team_speak3___node___host.html#a1f26a3c66014960c1782bbaffc904cde", null ], + [ "message", "class_team_speak3___node___host.html#a45450f27e3765893b912407ce640280f", null ], + [ "logView", "class_team_speak3___node___host.html#aee901f59e9bb4d87530d6b8a152b89be", null ], + [ "logAdd", "class_team_speak3___node___host.html#a107c77c012604e9c2964f72871da1a23", null ], + [ "login", "class_team_speak3___node___host.html#a277d0e0f1bc4e1a1353b339c99202cfa", null ], + [ "logout", "class_team_speak3___node___host.html#a4384f0b7ab08fd30f446a936a882fc71", null ], + [ "whoami", "class_team_speak3___node___host.html#a1dd45d32e7e7771ff4edbde1d0617c5e", null ], + [ "whoamiGet", "class_team_speak3___node___host.html#a53a9e8c477b07c1096cab13aa9c9b344", null ], + [ "whoamiSet", "class_team_speak3___node___host.html#abaf68b9f5b0f6b650148ed9898b2a21a", null ], + [ "whoamiReset", "class_team_speak3___node___host.html#a2abc65f1b0da4b3bc64dbda8d47c0f67", null ], + [ "getAdapterHost", "class_team_speak3___node___host.html#a7496a4bd1c575563b502e21b4c866415", null ], + [ "getAdapterPort", "class_team_speak3___node___host.html#ab7453505efd28bab00fd4d72ded0c7ba", null ], + [ "fetchNodeList", "class_team_speak3___node___host.html#ad672c568344dc5941225d92a87a537e2", null ], + [ "fetchNodeInfo", "class_team_speak3___node___host.html#af215b492a79130730f05b1ce52cc1212", null ], + [ "fetchPermissionList", "class_team_speak3___node___host.html#a505bafb855213b5b46de201237ed0c9f", null ], + [ "fetchPermissionCats", "class_team_speak3___node___host.html#a48619bb6662f66495e7b16378d3ff914", null ], + [ "setPredefinedQueryName", "class_team_speak3___node___host.html#a08abe8ba2f675d88656445bcdbd7d87a", null ], + [ "getPredefinedQueryName", "class_team_speak3___node___host.html#ac61eb4d34ca8848758aad2721eb9083f", null ], + [ "setExcludeQueryClients", "class_team_speak3___node___host.html#a49a89cf6d6be89d27c56849efd3b21b9", null ], + [ "getExcludeQueryClients", "class_team_speak3___node___host.html#aed2480265ca34df1548b35b95f4ec3d1", null ], + [ "setUseOfflineAsVirtual", "class_team_speak3___node___host.html#a7b360313c50361ead406fa45564d100f", null ], + [ "getUseOfflineAsVirtual", "class_team_speak3___node___host.html#a8ae0e012a6b44b8957ee2266eff8df9b", null ], + [ "setLoadClientlistFirst", "class_team_speak3___node___host.html#ab878e12266917938b1f36830534f52b7", null ], + [ "getLoadClientlistFirst", "class_team_speak3___node___host.html#afcdeba4b4a628d5a5d093ccad862681f", null ], + [ "getAdapter", "class_team_speak3___node___host.html#a3e2fffb397ede4f85bf1d97ad309874d", null ], + [ "getUniqueId", "class_team_speak3___node___host.html#a901cadb5fd29aee73d4e86bb92db58c6", null ], + [ "getIcon", "class_team_speak3___node___host.html#aa158b0568f696c2b5cb780c24b8d1410", null ], + [ "getSymbol", "class_team_speak3___node___host.html#a4ac8fb7a2f5b33ff5a0c0ca9eedfe642", null ], + [ "__wakeup", "class_team_speak3___node___host.html#a0abbd00f4d554a868c936f252eeda695", null ], + [ "__toString", "class_team_speak3___node___host.html#a657d0a513ca87fbce0c095c3235be2ec", null ], + [ "request", "class_team_speak3___node___host.html#a35dcdb8a7b62d7990307bfb95ce3937c", null ], + [ "prepare", "class_team_speak3___node___host.html#a6589a4fedd410e9cdb55fe20abc410c0", null ], + [ "execute", "class_team_speak3___node___host.html#af6811efc5065b8aadfd6792334ea6977", null ], + [ "getParent", "class_team_speak3___node___host.html#a44618fb948562e89515330e65d08da9a", null ], + [ "getId", "class_team_speak3___node___host.html#a4a0a5545abc2460d1d9b3d6b52d07cbe", null ], + [ "iconIsLocal", "class_team_speak3___node___host.html#aa78cba098574598dd9c0331cac1f39a1", null ], + [ "iconGetName", "class_team_speak3___node___host.html#a02ce34dce8fbf7881ce2323f7af0dca3", null ], + [ "getClass", "class_team_speak3___node___host.html#af6e1416ad2e568f48ff0d85b15b2a673", null ], + [ "getViewer", "class_team_speak3___node___host.html#a3d3f27dab5569edf3a737be080e7c8bc", null ], + [ "filterList", "class_team_speak3___node___host.html#ad826df3c71029ca48839dbe9aa3559b8", null ], + [ "getInfo", "class_team_speak3___node___host.html#af63ae54f10c02ec6b1033425f795fef4", null ], + [ "getProperty", "class_team_speak3___node___host.html#a585728537b56194aeab30b0316126b89", null ], + [ "toString", "class_team_speak3___node___host.html#ac1b521aa7f9871103da5cbb5d3330125", null ], + [ "toArray", "class_team_speak3___node___host.html#acf3c56763859b8adb21379f0cc6394ad", null ], + [ "__call", "class_team_speak3___node___host.html#a63fb203f511e99625428f70f0525950c", null ], + [ "setStorage", "class_team_speak3___node___host.html#a13303ca9275df184348ed7363d9d7c9a", null ], + [ "getStorage", "class_team_speak3___node___host.html#a5a6888304aca8d5f12fecb460b0ef6d2", null ], + [ "delStorage", "class_team_speak3___node___host.html#afbed20ee78d7e5a38097078dd91e70fd", null ], + [ "__sleep", "class_team_speak3___node___host.html#a19b5c8aaac5ef0af2f1393bffea186c5", null ], + [ "resetNodeInfo", "class_team_speak3___node___host.html#a266578bece0506453e1f1bfba1f08966", null ], + [ "verifyNodeList", "class_team_speak3___node___host.html#ac66aeb30418e385a5727c191bb8df87d", null ], + [ "resetNodeList", "class_team_speak3___node___host.html#a9ead519e8396990ba30d79d6bed9d286", null ], + [ "count", "class_team_speak3___node___host.html#ad22d04a2800ae672f6117de3afb0e9c4", null ], + [ "current", "class_team_speak3___node___host.html#a1c78dbb54df73f8c5dabe41ebd476207", null ], + [ "getChildren", "class_team_speak3___node___host.html#a4b9dee48bb72f0eab8b9d4b0ea25c5f4", null ], + [ "hasChildren", "class_team_speak3___node___host.html#a7769506879dac3170344d8e59218b644", null ], + [ "hasNext", "class_team_speak3___node___host.html#ad9aee4153360fd8139f6b0d68efff56f", null ], + [ "key", "class_team_speak3___node___host.html#adb87ddbef3247f346c2623f4d91981a1", null ], + [ "valid", "class_team_speak3___node___host.html#a1b0100e4a548e9464d75dcbfe6ac297a", null ], + [ "next", "class_team_speak3___node___host.html#a3273e5078ee49a4bd55620327ed09a5e", null ], + [ "rewind", "class_team_speak3___node___host.html#a9c416b77eeea1ecec6652936703d9ff7", null ], + [ "offsetExists", "class_team_speak3___node___host.html#ad0d64388e2a374203fa16760b923b087", null ], + [ "offsetGet", "class_team_speak3___node___host.html#a716e7512816cf490e5a16ec307f7d889", null ], + [ "offsetSet", "class_team_speak3___node___host.html#a5e9be0418e0cc969d47f4b7475adb21d", null ], + [ "offsetUnset", "class_team_speak3___node___host.html#a732408c9a027db531af8ecce82401c07", null ], + [ "__get", "class_team_speak3___node___host.html#ac8ab685826ff08e853de2aebad9df459", null ], + [ "__set", "class_team_speak3___node___host.html#a14930274e5498a5a8816ef751ff87946", null ], + [ "$whoami", "class_team_speak3___node___host.html#ab91d6f68668f2680f1703a17eaf04594", null ], + [ "$version", "class_team_speak3___node___host.html#a8f92fb11501c8888349123fb04dae58c", null ], + [ "$serverList", "class_team_speak3___node___host.html#a657df059e9d5c25b8106dea2823270d2", null ], + [ "$permissionEnds", "class_team_speak3___node___host.html#a8875fdbef6f0a4e1948206d21b149454", null ], + [ "$permissionList", "class_team_speak3___node___host.html#af95c28ba0639e7d70276129a84e7d8a3", null ], + [ "$permissionCats", "class_team_speak3___node___host.html#a1cad8d64ec44907edc6931b1875bfa41", null ], + [ "$predefined_query_name", "class_team_speak3___node___host.html#ac85d68211e51360f42e0d188f7f15e69", null ], + [ "$exclude_query_clients", "class_team_speak3___node___host.html#aebf44520f2388654542193cbaeb1ffe6", null ], + [ "$start_offline_virtual", "class_team_speak3___node___host.html#ad68c4cece91f5ad117e157fa1bd176ba", null ], + [ "$sort_clients_channels", "class_team_speak3___node___host.html#a9fdc4c2abeecfaef1b677c072f0f0cb2", null ], + [ "$parent", "class_team_speak3___node___host.html#a14a79cc9ca202ba4dbfc054f0c18583f", null ], + [ "$server", "class_team_speak3___node___host.html#acadc746cd7eb244d61f195494924f6b8", null ], + [ "$nodeId", "class_team_speak3___node___host.html#ac1bdee23c7d066edf3d6cb8e75999887", null ], + [ "$nodeList", "class_team_speak3___node___host.html#a37b39fa104ce36c0f0ea142934c05346", null ], + [ "$nodeInfo", "class_team_speak3___node___host.html#a50699be5fe1e43f7ae2e528db3c1098b", null ], + [ "$storage", "class_team_speak3___node___host.html#a33efbacf1a9aa094ccc39b0b25f3d369", null ] +]; \ No newline at end of file diff --git a/lib/docs/html/class_team_speak3___node___host.png b/lib/docs/html/class_team_speak3___node___host.png new file mode 100644 index 0000000000000000000000000000000000000000..cb763c2da7b3a63bc2ea6cf93268c62132cfdc61 GIT binary patch literal 1810 zcmbVNdop4%3RM&W^(t zqSZE<-o|6Zh{J4Ch_GW~C~tW)<27c#s?$H!IeYed&hLKj=l8w$o_p`-`=B2sIbpWo zw;&J*jPn7a8v>yK0X+kS1agyupbAX5qlY{kto$ zx{=%wz-WDRJn5kqf3oA zXvY)$?KA_Wlj#>?RhXXR1B4lqUXBkkHo3+%2Q0^DE*OkoEKiY;BkCpPtTD}126O>A zQ7JxCEf|R|Vtc|JyAs5VM;k>ZtdgNhovhTWLKbW1QZ~JpxF`S55*AfE;j+HX@(oO- zr4W*)H+aI<^}EqtM!cb5*sN!!4B~Q!lQ^s~caW)h4;C%Nj>je$_0)#(6J4`xAG26N zi@sQ|yv~X8*n;Pcg^2@YOKgG8PTv52)cIqVB?c=25%u8`ab=)3{{HVl1&hGp+$7Ut zwMt2%J(MR7onqc(Eo-iki^_N0#YgE!uNW#7z3IIMD#;{Vw{(RU3|cgz^hd9aa22$C z_Ryj1DM6P;+xPW8g5ztJdNr&ujhaY4RdizSR9jSb`BTI8a(eb0XF?XxB@2T)JXb3q zftO@>GC?qu6gOyihU+jno18ODjuAz=!3*f*$OCZ4_|iS1Cp@t@Xtml~SISDdh$A>M zaBi?!n)u-Sogj$j0b}|a=vjc+S`zvu3-7!x>^_LMke7?eEeY9+JzR7nB(J$%URT#Y zT*1@$yY5GXvuWl4Wpk}JDQ{FuYZHT5e}EJ-ZQEoWRC4At&TcDayM?&!NOvg!`vIUs z#wqX3{84D#&FLHTo*Q4nDIodpLg~?Xh^Y5|SD_ri;8vp?LEu-)eX-6(kX->zVZ(BR zGOAUdW|v}PqNp%Whm;GCpi>cv{wT!}ReRmfo5;WH1%srhh-(yCwakTNK*r3E!d2o4 zK00$&Ej~76Z?zbeu4E}WKC+cQp4?2(wD&Uz#m3!gx-a?8uXI-J=dwW;`;unMCgsKS zid~dZ#jgJ1l<-mcAyYx5|rbvq;^ei5(_82~h z#Ac&&hvTTXtph}&>OD!v(5d}rBXiSfRuy}d)cI|SF($G?nMi^W5&=QXN6-{oX8tms z7gJDuge?ev5%tU2?s~QEn!WQ3v*2AJaneA+{hc)4@niNwarw3W$u3Xltgt)4kEBk9 z)c3)-Drli}6>bH6z6gqT#sY$B0{H;CtjGVT?Qv8p)lx;d?~S*vT?!KLdbZNL2oS0Q z2+grgBdVZUA;7p(1NMJW{~vb8CrxTH#C>|>h+>!{fGZL>1Hesj^OjPv9+`E4?761SM literal 0 HcmV?d00001 diff --git a/lib/docs/html/class_team_speak3___node___server-members.html b/lib/docs/html/class_team_speak3___node___server-members.html new file mode 100644 index 0000000..8f474c3 --- /dev/null +++ b/lib/docs/html/class_team_speak3___node___server-members.html @@ -0,0 +1,312 @@ + + + + + + +TeamSpeak 3 PHP Framework: Member List + + + + + + + + + + + + + +
+
+ + + + + + + +
+
TeamSpeak 3 PHP Framework +  1.1.23 +
+
Copyright © Planet TeamSpeak. All rights reserved.
+
+
+ + + + + +
+
+ +
+
+
+ +
+ + + + +
+ +
+ +
+
+
TeamSpeak3_Node_Server Member List
+
+
+ +

This is the complete list of members for TeamSpeak3_Node_Server, including all inherited members.

+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
$cgroupListTeamSpeak3_Node_Serverprotected
$channelListTeamSpeak3_Node_Serverprotected
$clientListTeamSpeak3_Node_Serverprotected
$nodeIdTeamSpeak3_Node_Abstractprotected
$nodeInfoTeamSpeak3_Node_Abstractprotected
$nodeListTeamSpeak3_Node_Abstractprotected
$parentTeamSpeak3_Node_Abstractprotected
$serverTeamSpeak3_Node_Abstractprotected
$sgroupListTeamSpeak3_Node_Serverprotected
$storageTeamSpeak3_Node_Abstractprotected
__call($name, array $args)TeamSpeak3_Node_Abstract
__construct(TeamSpeak3_Node_Host $host, array $info, $index="virtualserver_id")TeamSpeak3_Node_Server
__get($offset)TeamSpeak3_Node_Abstract
__set($offset, $value)TeamSpeak3_Node_Abstract
__sleep()TeamSpeak3_Node_Abstract
__toString()TeamSpeak3_Node_Server
banCreate(array $rules, $timeseconds=null, $reason=null)TeamSpeak3_Node_Server
banDelete($banid)TeamSpeak3_Node_Server
banList()TeamSpeak3_Node_Server
banListClear()TeamSpeak3_Node_Server
channelClientPermAssign($cid, $cldbid, $permid, $permvalue)TeamSpeak3_Node_Server
channelClientPermList($cid, $cldbid, $permsid=FALSE)TeamSpeak3_Node_Server
channelClientPermRemove($cid, $cldbid, $permid)TeamSpeak3_Node_Server
channelCreate(array $properties)TeamSpeak3_Node_Server
channelDelete($cid, $force=FALSE)TeamSpeak3_Node_Server
channelDirCreate($cid, $cpw="", $dirname="/")TeamSpeak3_Node_Server
channelFileDelete($cid, $cpw="", $name="/")TeamSpeak3_Node_Server
channelFileInfo($cid, $cpw="", $name="/")TeamSpeak3_Node_Server
channelFileList($cid, $cpw="", $path="/", $recursive=FALSE)TeamSpeak3_Node_Server
channelFileRename($cid, $cpw="", $oldname="/", $newname="/", $tcid=null, $tcpw=null)TeamSpeak3_Node_Server
channelGetById($cid)TeamSpeak3_Node_Server
channelGetByName($name)TeamSpeak3_Node_Server
channelGetLevel($cid)TeamSpeak3_Node_Server
channelGetPathway($cid)TeamSpeak3_Node_Server
channelGroupClientList($cgid=null, $cid=null, $cldbid=null)TeamSpeak3_Node_Server
channelGroupCopy($scgid, $name=null, $tcgid=0, $type=TeamSpeak3::GROUP_DBTYPE_REGULAR)TeamSpeak3_Node_Server
channelGroupCreate($name, $type=TeamSpeak3::GROUP_DBTYPE_REGULAR)TeamSpeak3_Node_Server
channelGroupDelete($cgid, $force=FALSE)TeamSpeak3_Node_Server
channelGroupGetById($cgid)TeamSpeak3_Node_Server
channelGroupGetByName($name, $type=TeamSpeak3::GROUP_DBTYPE_REGULAR)TeamSpeak3_Node_Server
channelGroupList(array $filter=array())TeamSpeak3_Node_Server
channelGroupListReset()TeamSpeak3_Node_Server
channelGroupPermAssign($cgid, $permid, $permvalue)TeamSpeak3_Node_Server
channelGroupPermList($cgid, $permsid=FALSE)TeamSpeak3_Node_Server
channelGroupPermRemove($cgid, $permid)TeamSpeak3_Node_Server
channelGroupRename($cgid, $name)TeamSpeak3_Node_Server
channelIsSpacer(TeamSpeak3_Node_Channel $channel)TeamSpeak3_Node_Server
channelList(array $filter=array())TeamSpeak3_Node_Server
channelListReset()TeamSpeak3_Node_Server
channelMove($cid, $pid, $order=null)TeamSpeak3_Node_Server
channelPermAssign($cid, $permid, $permvalue)TeamSpeak3_Node_Server
channelPermList($cid, $permsid=FALSE)TeamSpeak3_Node_Server
channelPermRemove($cid, $permid)TeamSpeak3_Node_Server
channelSpacerCreate($ident, $type=TeamSpeak3::SPACER_SOLIDLINE, $align=TeamSpeak3::SPACER_ALIGN_REPEAT, $order=null, $maxclients=0)TeamSpeak3_Node_Server
channelSpacerGetAlign($cid)TeamSpeak3_Node_Server
channelSpacerGetType($cid)TeamSpeak3_Node_Server
clientBan($clid, $timeseconds=null, $reason=null)TeamSpeak3_Node_Server
clientCount()TeamSpeak3_Node_Server
clientCountDb()TeamSpeak3_Node_Server
clientDeleteDb($cldbid)TeamSpeak3_Node_Server
clientFind($pattern)TeamSpeak3_Node_Server
clientFindDb($pattern, $uid=FALSE)TeamSpeak3_Node_Server
clientGetByDbid($dbid)TeamSpeak3_Node_Server
clientGetById($clid)TeamSpeak3_Node_Server
clientGetByName($name)TeamSpeak3_Node_Server
clientGetByUid($uid)TeamSpeak3_Node_Server
clientGetIdsByUid($cluid)TeamSpeak3_Node_Server
clientGetNameByDbid($cldbid)TeamSpeak3_Node_Server
clientGetNameByUid($cluid)TeamSpeak3_Node_Server
clientGetServerGroupsByDbid($cldbid)TeamSpeak3_Node_Server
clientInfoDb($cldbid)TeamSpeak3_Node_Server
clientKick($clid, $reasonid=TeamSpeak3::KICK_CHANNEL, $reasonmsg=null)TeamSpeak3_Node_Server
clientList(array $filter=array())TeamSpeak3_Node_Server
clientListDb($offset=null, $limit=null)TeamSpeak3_Node_Server
clientListReset()TeamSpeak3_Node_Server
clientModifyDb($cldbid, array $properties)TeamSpeak3_Node_Server
clientMove($clid, $cid, $cpw=null)TeamSpeak3_Node_Server
clientPermAssign($cldbid, $permid, $permvalue, $permskip=FALSE)TeamSpeak3_Node_Server
clientPermList($cldbid, $permsid=FALSE)TeamSpeak3_Node_Server
clientPermRemove($cldbid, $permid)TeamSpeak3_Node_Server
clientPoke($clid, $msg)TeamSpeak3_Node_Server
clientSetChannelGroup($cldbid, $cid, $cgid)TeamSpeak3_Node_Server
complaintCreate($tcldbid, $message)TeamSpeak3_Node_Server
complaintDelete($tcldbid, $fcldbid)TeamSpeak3_Node_Server
complaintList($tcldbid=null)TeamSpeak3_Node_Server
complaintListClear($tcldbid)TeamSpeak3_Node_Server
connectionInfo()TeamSpeak3_Node_Server
count()TeamSpeak3_Node_Abstract
current()TeamSpeak3_Node_Abstract
customInfo($cldbid)TeamSpeak3_Node_Server
customSearch($ident, $pattern="%")TeamSpeak3_Node_Server
delete()TeamSpeak3_Node_Server
delStorage($key)TeamSpeak3_Node_Abstractprotected
execute($cmd, array $params=array())TeamSpeak3_Node_Abstract
fetchNodeInfo()TeamSpeak3_Node_Serverprotected
fetchNodeList()TeamSpeak3_Node_Serverprotected
filterList(array $nodes=array(), array $rules=array())TeamSpeak3_Node_Abstractprotected
getChildren()TeamSpeak3_Node_Abstract
getClass($prefix="ts3_")TeamSpeak3_Node_Abstract
getIcon()TeamSpeak3_Node_Server
getId()TeamSpeak3_Node_Abstract
getInfo($extend=TRUE, $convert=FALSE)TeamSpeak3_Node_Abstract
getParent()TeamSpeak3_Node_Abstract
getProperty($property, $default=null)TeamSpeak3_Node_Abstract
getStorage($key, $default=null)TeamSpeak3_Node_Abstractprotected
getSymbol()TeamSpeak3_Node_Server
getUniqueId()TeamSpeak3_Node_Server
getViewer(TeamSpeak3_Viewer_Interface $viewer)TeamSpeak3_Node_Abstract
hasChildren()TeamSpeak3_Node_Abstract
hasNext()TeamSpeak3_Node_Abstract
iconDownload()TeamSpeak3_Node_Server
iconGetName($key)TeamSpeak3_Node_Abstract
iconIsLocal($key)TeamSpeak3_Node_Abstract
iconUpload($data)TeamSpeak3_Node_Server
isOffline()TeamSpeak3_Node_Server
isOnline()TeamSpeak3_Node_Server
key()TeamSpeak3_Node_Abstract
logAdd($logmsg, $loglevel=TeamSpeak3::LOGLEVEL_INFO)TeamSpeak3_Node_Server
logView($lines=30, $begin_pos=null, $reverse=null, $instance=null)TeamSpeak3_Node_Server
message($msg)TeamSpeak3_Node_Server
messageCreate($cluid, $subject, $message)TeamSpeak3_Node_Server
messageDelete($msgid)TeamSpeak3_Node_Server
messageList()TeamSpeak3_Node_Server
messageRead($msgid, $flag_read=TRUE)TeamSpeak3_Node_Server
modify(array $properties)TeamSpeak3_Node_Server
next()TeamSpeak3_Node_Abstract
notifyRegister($event, $id=0)TeamSpeak3_Node_Server
notifyUnregister()TeamSpeak3_Node_Server
offsetExists($offset)TeamSpeak3_Node_Abstract
offsetGet($offset)TeamSpeak3_Node_Abstract
offsetSet($offset, $value)TeamSpeak3_Node_Abstract
offsetUnset($offset)TeamSpeak3_Node_Abstract
permRemoveAny($permid)TeamSpeak3_Node_Server
permReset()TeamSpeak3_Node_Server
prepare($cmd, array $params=array())TeamSpeak3_Node_Abstract
privilegeKeyCreate($type=TeamSpeak3::TOKEN_SERVERGROUP, $id1, $id2=0, $description=null, $customset=null)TeamSpeak3_Node_Server
privilegeKeyDelete($token)TeamSpeak3_Node_Server
privilegeKeyList($resolve=FALSE)TeamSpeak3_Node_Server
privilegeKeyUse($token)TeamSpeak3_Node_Server
request($cmd, $throw=TRUE)TeamSpeak3_Node_Server
resetNodeInfo()TeamSpeak3_Node_Abstractprotected
resetNodeList()TeamSpeak3_Node_Abstractprotected
rewind()TeamSpeak3_Node_Abstract
selfPermOverview()TeamSpeak3_Node_Server
selfUpdate(array $properties)TeamSpeak3_Node_Server
selfUpdateLogin($username)TeamSpeak3_Node_Server
sendPluginCmd($plugin, $data)TeamSpeak3_Node_Server
serverGroupClientAdd($sgid, $cldbid)TeamSpeak3_Node_Server
serverGroupClientDel($sgid, $cldbid)TeamSpeak3_Node_Server
serverGroupClientList($sgid)TeamSpeak3_Node_Server
serverGroupCopy($ssgid, $name=null, $tsgid=0, $type=TeamSpeak3::GROUP_DBTYPE_REGULAR)TeamSpeak3_Node_Server
serverGroupCreate($name, $type=TeamSpeak3::GROUP_DBTYPE_REGULAR)TeamSpeak3_Node_Server
serverGroupDelete($sgid, $force=FALSE)TeamSpeak3_Node_Server
serverGroupGetById($sgid)TeamSpeak3_Node_Server
serverGroupGetByName($name, $type=TeamSpeak3::GROUP_DBTYPE_REGULAR)TeamSpeak3_Node_Server
serverGroupGetProfiles()TeamSpeak3_Node_Server
serverGroupIdentify($mode=TeamSpeak3::GROUP_IDENTIFIY_STRONGEST)TeamSpeak3_Node_Server
serverGroupList(array $filter=array())TeamSpeak3_Node_Server
serverGroupListReset()TeamSpeak3_Node_Server
serverGroupPermAssign($sgid, $permid, $permvalue, $permnegated=FALSE, $permskip=FALSE)TeamSpeak3_Node_Server
serverGroupPermList($sgid, $permsid=FALSE)TeamSpeak3_Node_Server
serverGroupPermRemove($sgid, $permid)TeamSpeak3_Node_Server
serverGroupRename($sgid, $name)TeamSpeak3_Node_Server
setStorage($key, $val)TeamSpeak3_Node_Abstractprotected
snapshotCreate($mode=TeamSpeak3::SNAPSHOT_STRING)TeamSpeak3_Node_Server
snapshotDeploy($data, $mode=TeamSpeak3::SNAPSHOT_STRING)TeamSpeak3_Node_Server
sortClientList(TeamSpeak3_Node_Client $a, TeamSpeak3_Node_Client $b)TeamSpeak3_Node_Serverprotectedstatic
sortFileList(array $a, array $b)TeamSpeak3_Node_Serverprotectedstatic
sortGroupList(TeamSpeak3_Node_Abstract $a, TeamSpeak3_Node_Abstract $b)TeamSpeak3_Node_Serverprotectedstatic
start()TeamSpeak3_Node_Server
stop()TeamSpeak3_Node_Server
tempPasswordCreate($pw, $duration, $tcid=0, $tcpw="", $desc="")TeamSpeak3_Node_Server
tempPasswordDelete($pw)TeamSpeak3_Node_Server
tempPasswordList($resolve=FALSE)TeamSpeak3_Node_Server
toArray()TeamSpeak3_Node_Abstract
tokenCreate($type=TeamSpeak3::TOKEN_SERVERGROUP, $id1, $id2=0, $description=null, $customset=null)TeamSpeak3_Node_Server
tokenDelete($token)TeamSpeak3_Node_Server
tokenList($translate=FALSE)TeamSpeak3_Node_Server
tokenUse($token)TeamSpeak3_Node_Server
toString()TeamSpeak3_Node_Abstract
transferInitDownload($clientftfid, $cid, $name, $cpw="", $seekpos=0)TeamSpeak3_Node_Server
transferInitUpload($clientftfid, $cid, $name, $size, $cpw="", $overwrite=FALSE, $resume=FALSE)TeamSpeak3_Node_Server
transferList()TeamSpeak3_Node_Server
transferStop($serverftfid, $delete=FALSE)TeamSpeak3_Node_Server
valid()TeamSpeak3_Node_Abstract
verifyNodeList()TeamSpeak3_Node_Abstractprotected
+
+ + + + diff --git a/lib/docs/html/class_team_speak3___node___server.html b/lib/docs/html/class_team_speak3___node___server.html new file mode 100644 index 0000000..39d241d --- /dev/null +++ b/lib/docs/html/class_team_speak3___node___server.html @@ -0,0 +1,8884 @@ + + + + + + +TeamSpeak 3 PHP Framework: TeamSpeak3_Node_Server Class Reference + + + + + + + + + + + + + +
+
+ + + + + + + +
+
TeamSpeak 3 PHP Framework +  1.1.23 +
+
Copyright © Planet TeamSpeak. All rights reserved.
+
+
+ + + + + +
+
+ +
+
+
+ +
+ + + + +
+ +
+ + +
+ +

Class describing a TeamSpeak 3 virtual server and all it's parameters. + More...

+
+ + Inheritance diagram for TeamSpeak3_Node_Server:
+
+
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +

+Public Member Functions

 __construct (TeamSpeak3_Node_Host $host, array $info, $index="virtualserver_id")
 The TeamSpeak3_Node_Server constructor. More...
 
 request ($cmd, $throw=TRUE)
 Sends a prepared command to the server and returns the result. More...
 
 channelList (array $filter=array())
 Returns an array filled with TeamSpeak3_Node_Channel objects. More...
 
 channelListReset ()
 Resets the list of channels online. More...
 
 channelCreate (array $properties)
 Creates a new channel using given properties and returns the new ID. More...
 
 channelDelete ($cid, $force=FALSE)
 Deletes the channel specified by $cid. More...
 
 channelMove ($cid, $pid, $order=null)
 Moves the channel specified by $cid to the parent channel specified with $pid. More...
 
 channelIsSpacer (TeamSpeak3_Node_Channel $channel)
 Returns TRUE if the given TeamSpeak3_Node_Channel object is a spacer. More...
 
 channelSpacerCreate ($ident, $type=TeamSpeak3::SPACER_SOLIDLINE, $align=TeamSpeak3::SPACER_ALIGN_REPEAT, $order=null, $maxclients=0)
 Creates a new channel spacer and returns the new ID. More...
 
 channelSpacerGetType ($cid)
 Returns the possible type of a channel spacer. More...
 
 channelSpacerGetAlign ($cid)
 Returns the possible alignment of a channel spacer. More...
 
 channelPermList ($cid, $permsid=FALSE)
 Returns a list of permissions defined for a specific channel. More...
 
 channelPermAssign ($cid, $permid, $permvalue)
 Adds a set of specified permissions to a channel. More...
 
 channelPermRemove ($cid, $permid)
 Removes a set of specified permissions from a channel. More...
 
 channelClientPermList ($cid, $cldbid, $permsid=FALSE)
 Returns a list of permissions defined for a client in a specific channel. More...
 
 channelClientPermAssign ($cid, $cldbid, $permid, $permvalue)
 Adds a set of specified permissions to a client in a specific channel. More...
 
 channelClientPermRemove ($cid, $cldbid, $permid)
 Removes a set of specified permissions from a client in a specific channel. More...
 
 channelFileList ($cid, $cpw="", $path="/", $recursive=FALSE)
 Returns a list of files and directories stored in the specified channels file repository. More...
 
 channelFileInfo ($cid, $cpw="", $name="/")
 Returns detailed information about the specified file stored in a channels file repository. More...
 
 channelFileRename ($cid, $cpw="", $oldname="/", $newname="/", $tcid=null, $tcpw=null)
 Renames a file in a channels file repository. More...
 
 channelFileDelete ($cid, $cpw="", $name="/")
 Deletes one or more files stored in a channels file repository. More...
 
 channelDirCreate ($cid, $cpw="", $dirname="/")
 Creates new directory in a channels file repository. More...
 
 channelGetLevel ($cid)
 Returns the level of a channel. More...
 
 channelGetPathway ($cid)
 Returns the pathway of a channel which can be used as a clients default channel. More...
 
 channelGetById ($cid)
 Returns the TeamSpeak3_Node_Channel object matching the given ID. More...
 
 channelGetByName ($name)
 Returns the TeamSpeak3_Node_Channel object matching the given name. More...
 
 clientList (array $filter=array())
 Returns an array filled with TeamSpeak3_Node_Client objects. More...
 
 clientListReset ()
 Resets the list of clients online. More...
 
 clientFind ($pattern)
 Returns a list of clients matching a given name pattern. More...
 
 clientListDb ($offset=null, $limit=null)
 Returns a list of client identities known by the virtual server. More...
 
 clientCountDb ()
 Returns the number of client identities known by the virtual server. More...
 
 clientInfoDb ($cldbid)
 Returns a list of properties from the database for the client specified by $cldbid. More...
 
 clientFindDb ($pattern, $uid=FALSE)
 Returns a list of client database IDs matching a given pattern. More...
 
 clientCount ()
 Returns the number of regular clients online. More...
 
 clientGetById ($clid)
 Returns the TeamSpeak3_Node_Client object matching the given ID. More...
 
 clientGetByName ($name)
 Returns the TeamSpeak3_Node_Client object matching the given name. More...
 
 clientGetByUid ($uid)
 Returns the TeamSpeak3_Node_Client object matching the given unique identifier. More...
 
 clientGetByDbid ($dbid)
 Returns the TeamSpeak3_Node_Client object matching the given database ID. More...
 
 clientGetNameByUid ($cluid)
 Returns an array containing the last known nickname and the database ID of the client matching the unique identifier specified with $cluid. More...
 
 clientGetIdsByUid ($cluid)
 Returns an array containing a list of active client connections using the unique identifier specified with $cluid. More...
 
 clientGetNameByDbid ($cldbid)
 Returns an array containing the last known nickname and the unique identifier of the client matching the database ID specified with $cldbid. More...
 
 clientGetServerGroupsByDbid ($cldbid)
 Returns an array containing the names and IDs of all server groups the client specified with $cldbid is is currently residing in. More...
 
 clientMove ($clid, $cid, $cpw=null)
 Moves a client to another channel. More...
 
 clientKick ($clid, $reasonid=TeamSpeak3::KICK_CHANNEL, $reasonmsg=null)
 Kicks one or more clients from their currently joined channel or from the server. More...
 
 clientPoke ($clid, $msg)
 Sends a poke message to a client. More...
 
 clientBan ($clid, $timeseconds=null, $reason=null)
 Bans the client specified with ID $clid from the server. More...
 
 clientModifyDb ($cldbid, array $properties)
 Changes the clients properties using given properties. More...
 
 clientDeleteDb ($cldbid)
 Deletes a clients properties from the database. More...
 
 clientSetChannelGroup ($cldbid, $cid, $cgid)
 Sets the channel group of a client to the ID specified. More...
 
 clientPermList ($cldbid, $permsid=FALSE)
 Returns a list of permissions defined for a client. More...
 
 clientPermAssign ($cldbid, $permid, $permvalue, $permskip=FALSE)
 Adds a set of specified permissions to a client. More...
 
 clientPermRemove ($cldbid, $permid)
 Removes a set of specified permissions from a client. More...
 
 serverGroupList (array $filter=array())
 Returns a list of server groups available. More...
 
 serverGroupListReset ()
 Resets the list of server groups. More...
 
 serverGroupCreate ($name, $type=TeamSpeak3::GROUP_DBTYPE_REGULAR)
 Creates a new server group using the name specified with $name and returns its ID. More...
 
 serverGroupCopy ($ssgid, $name=null, $tsgid=0, $type=TeamSpeak3::GROUP_DBTYPE_REGULAR)
 Creates a copy of an existing server group specified by $ssgid and returns the new groups ID. More...
 
 serverGroupRename ($sgid, $name)
 Renames the server group specified with $sgid. More...
 
 serverGroupDelete ($sgid, $force=FALSE)
 Deletes the server group specified with $sgid. More...
 
 serverGroupGetById ($sgid)
 Returns the TeamSpeak3_Node_Servergroup object matching the given ID. More...
 
 serverGroupGetByName ($name, $type=TeamSpeak3::GROUP_DBTYPE_REGULAR)
 Returns the TeamSpeak3_Node_Servergroup object matching the given name. More...
 
 serverGroupPermList ($sgid, $permsid=FALSE)
 Returns a list of permissions assigned to the server group specified. More...
 
 serverGroupPermAssign ($sgid, $permid, $permvalue, $permnegated=FALSE, $permskip=FALSE)
 Adds a set of specified permissions to the server group specified. More...
 
 serverGroupPermRemove ($sgid, $permid)
 Removes a set of specified permissions from the server group specified with $sgid. More...
 
 serverGroupClientList ($sgid)
 Returns a list of clients assigned to the server group specified. More...
 
 serverGroupClientAdd ($sgid, $cldbid)
 Adds a client to the server group specified. More...
 
 serverGroupClientDel ($sgid, $cldbid)
 Removes a client from the server group specified. More...
 
 serverGroupGetProfiles ()
 Returns an ordered array of regular server groups available based on a pre-defined set of rules. More...
 
 serverGroupIdentify ($mode=TeamSpeak3::GROUP_IDENTIFIY_STRONGEST)
 Tries to identify the post powerful/weakest server group on the virtual server and returns the ID. More...
 
 channelGroupList (array $filter=array())
 Returns a list of channel groups available. More...
 
 channelGroupListReset ()
 Resets the list of channel groups. More...
 
 channelGroupCreate ($name, $type=TeamSpeak3::GROUP_DBTYPE_REGULAR)
 Creates a new channel group using the name specified with $name and returns its ID. More...
 
 channelGroupCopy ($scgid, $name=null, $tcgid=0, $type=TeamSpeak3::GROUP_DBTYPE_REGULAR)
 Creates a copy of an existing channel group specified by $scgid and returns the new groups ID. More...
 
 channelGroupRename ($cgid, $name)
 Renames the channel group specified with $cgid. More...
 
 channelGroupDelete ($cgid, $force=FALSE)
 Deletes the channel group specified with $cgid. More...
 
 channelGroupGetById ($cgid)
 Returns the TeamSpeak3_Node_Channelgroup object matching the given ID. More...
 
 channelGroupGetByName ($name, $type=TeamSpeak3::GROUP_DBTYPE_REGULAR)
 Returns the TeamSpeak3_Node_Channelgroup object matching the given name. More...
 
 channelGroupPermList ($cgid, $permsid=FALSE)
 Returns a list of permissions assigned to the channel group specified. More...
 
 channelGroupPermAssign ($cgid, $permid, $permvalue)
 Adds a set of specified permissions to the channel group specified. More...
 
 channelGroupPermRemove ($cgid, $permid)
 Removes a set of specified permissions from the channel group specified with $cgid. More...
 
 channelGroupClientList ($cgid=null, $cid=null, $cldbid=null)
 Returns all the client and/or channel IDs currently assigned to channel groups. More...
 
 permReset ()
 Restores the default permission settings on the virtual server and returns a new initial administrator privilege key. More...
 
 permRemoveAny ($permid)
 Removes any assignment of the permission specified with $permid on the selected virtual server and returns the number of removed assignments on success. More...
 
 transferInitUpload ($clientftfid, $cid, $name, $size, $cpw="", $overwrite=FALSE, $resume=FALSE)
 Initializes a file transfer upload. More...
 
 transferInitDownload ($clientftfid, $cid, $name, $cpw="", $seekpos=0)
 Initializes a file transfer download. More...
 
 transferList ()
 Displays a list of running file transfers on the selected virtual server. More...
 
 transferStop ($serverftfid, $delete=FALSE)
 Stops the running file transfer with server-side ID $serverftfid. More...
 
 iconDownload ()
 Downloads and returns the servers icon file content. More...
 
 iconUpload ($data)
 Uploads a given icon file content to the server and returns the ID of the icon. More...
 
 modify (array $properties)
 Changes the virtual server configuration using given properties. More...
 
 message ($msg)
 Sends a text message to all clients on the virtual server. More...
 
 messageList ()
 Returns a list of offline messages you've received. More...
 
 messageCreate ($cluid, $subject, $message)
 Sends an offline message to the client specified by $cluid. More...
 
 messageDelete ($msgid)
 Deletes an existing offline message with ID $msgid from your inbox. More...
 
 messageRead ($msgid, $flag_read=TRUE)
 Returns an existing offline message with ID $msgid from your inbox. More...
 
 snapshotCreate ($mode=TeamSpeak3::SNAPSHOT_STRING)
 Creates and returns snapshot data for the selected virtual server. More...
 
 snapshotDeploy ($data, $mode=TeamSpeak3::SNAPSHOT_STRING)
 Deploys snapshot data on the selected virtual server. More...
 
 notifyRegister ($event, $id=0)
 Registers for a specified category of events on a virtual server to receive notification messages. More...
 
 notifyUnregister ()
 Unregisters all events previously registered with servernotifyregister so you will no longer receive notification messages. More...
 
 tokenList ($translate=FALSE)
 Alias for privilegeKeyList(). More...
 
 privilegeKeyList ($resolve=FALSE)
 Returns a list of privilege keys (tokens) available. More...
 
 tokenCreate ($type=TeamSpeak3::TOKEN_SERVERGROUP, $id1, $id2=0, $description=null, $customset=null)
 Alias for privilegeKeyCreate(). More...
 
 privilegeKeyCreate ($type=TeamSpeak3::TOKEN_SERVERGROUP, $id1, $id2=0, $description=null, $customset=null)
 Creates a new privilege key (token) and returns the key. More...
 
 tokenDelete ($token)
 Alias for privilegeKeyDelete(). More...
 
 privilegeKeyDelete ($token)
 Deletes a token specified by key $token. More...
 
 tokenUse ($token)
 Alias for privilegeKeyUse(). More...
 
 privilegeKeyUse ($token)
 Use a token key gain access to a server or channel group. More...
 
 customSearch ($ident, $pattern="%")
 Returns a list of custom client properties specified by $ident. More...
 
 customInfo ($cldbid)
 Returns a list of custom properties for the client specified by $cldbid. More...
 
 banList ()
 Returns a list of active bans on the selected virtual server. More...
 
 banListClear ()
 Deletes all active ban rules from the server. More...
 
 banCreate (array $rules, $timeseconds=null, $reason=null)
 Adds a new ban rule on the selected virtual server. More...
 
 banDelete ($banid)
 Deletes the specified ban rule from the server. More...
 
 complaintList ($tcldbid=null)
 Returns a list of complaints on the selected virtual server. More...
 
 complaintListClear ($tcldbid)
 Deletes all active complaints about the client with database ID $tcldbid from the server. More...
 
 complaintCreate ($tcldbid, $message)
 Submits a complaint about the client with database ID $tcldbid to the server. More...
 
 complaintDelete ($tcldbid, $fcldbid)
 Deletes the complaint about the client with ID $tcldbid submitted by the client with ID $fcldbid from the server. More...
 
 tempPasswordList ($resolve=FALSE)
 Returns a list of temporary server passwords. More...
 
 tempPasswordCreate ($pw, $duration, $tcid=0, $tcpw="", $desc="")
 Sets a new temporary server password specified with $pw. More...
 
 tempPasswordDelete ($pw)
 Deletes the temporary server password specified with $pw. More...
 
 logView ($lines=30, $begin_pos=null, $reverse=null, $instance=null)
 Displays a specified number of entries (1-100) from the servers log. More...
 
 logAdd ($logmsg, $loglevel=TeamSpeak3::LOGLEVEL_INFO)
 Writes a custom entry into the virtual server log. More...
 
 connectionInfo ()
 Returns detailed connection information of the virtual server. More...
 
 delete ()
 Deletes the virtual server. More...
 
 start ()
 Starts the virtual server. More...
 
 stop ()
 Stops the virtual server. More...
 
 sendPluginCmd ($plugin, $data)
 Sends a plugin command to all clients connected to the server. More...
 
 selfUpdate (array $properties)
 Changes the properties of your own client connection. More...
 
 selfUpdateLogin ($username)
 Updates your own ServerQuery login credentials using a specified username. More...
 
 selfPermOverview ()
 Returns an array containing the permission overview of your own client. More...
 
 isOnline ()
 Returns TRUE if the virtual server is online. More...
 
 isOffline ()
 Returns TRUE if the virtual server is offline. More...
 
 getUniqueId ()
 Returns a unique identifier for the node which can be used as a HTML property. More...
 
 getIcon ()
 Returns the name of a possible icon to display the node object. More...
 
 getSymbol ()
 Returns a symbol representing the node. More...
 
 __toString ()
 Returns a string representation of this node. More...
 
 prepare ($cmd, array $params=array())
 Uses given parameters and returns a prepared ServerQuery command. More...
 
 execute ($cmd, array $params=array())
 Prepares and executes a ServerQuery command and returns the result. More...
 
 getParent ()
 Returns the parent object of the current node. More...
 
 getId ()
 Returns the primary ID of the current node. More...
 
 iconIsLocal ($key)
 Returns TRUE if the node icon has a local source. More...
 
 iconGetName ($key)
 Returns the internal path of the node icon. More...
 
 getClass ($prefix="ts3_")
 Returns a possible classname for the node which can be used as a HTML property. More...
 
 getViewer (TeamSpeak3_Viewer_Interface $viewer)
 Returns the HTML code to display a TeamSpeak 3 viewer. More...
 
 getInfo ($extend=TRUE, $convert=FALSE)
 Returns all information available on this node. More...
 
 getProperty ($property, $default=null)
 Returns the specified property or a pre-defined default value from the node info array. More...
 
 toString ()
 Returns a string representation of this node. More...
 
 toArray ()
 Returns an assoc array filled with current node info properties. More...
 
 __call ($name, array $args)
 Called whenever we're using an unknown method. More...
 
 __sleep ()
 Commit pending data. More...
 
 count ()
 
 current ()
 
 getChildren ()
 
 hasChildren ()
 
 hasNext ()
 
 key ()
 
 valid ()
 
 next ()
 
 rewind ()
 
 offsetExists ($offset)
 
 offsetGet ($offset)
 
 offsetSet ($offset, $value)
 
 offsetUnset ($offset)
 
 __get ($offset)
 
 __set ($offset, $value)
 
+ + + + + + + + + + + + + + + + + + + + + + + +

+Protected Member Functions

 fetchNodeList ()
 
 fetchNodeInfo ()
 
 filterList (array $nodes=array(), array $rules=array())
 Filters given node list array using specified filter rules. More...
 
 setStorage ($key, $val)
 Writes data to the internal storage array. More...
 
 getStorage ($key, $default=null)
 Returns data from the internal storage array. More...
 
 delStorage ($key)
 Deletes data from the internal storage array. More...
 
 resetNodeInfo ()
 
 verifyNodeList ()
 
 resetNodeList ()
 
+ + + + + + + + + + +

+Static Protected Member Functions

static sortClientList (TeamSpeak3_Node_Client $a, TeamSpeak3_Node_Client $b)
 Internal callback funtion for sorting of client objects. More...
 
static sortGroupList (TeamSpeak3_Node_Abstract $a, TeamSpeak3_Node_Abstract $b)
 Internal callback funtion for sorting of group objects. More...
 
static sortFileList (array $a, array $b)
 Internal callback funtion for sorting of file list items. More...
 
+ + + + + + + + + + + + + + + + + + + + + +

+Protected Attributes

 $channelList = null
 
 $clientList = null
 
 $sgroupList = null
 
 $cgroupList = null
 
 $parent = null
 
 $server = null
 
 $nodeId = 0x00
 
 $nodeList = null
 
 $nodeInfo = array()
 
 $storage = array()
 
+

Detailed Description

+

Class describing a TeamSpeak 3 virtual server and all it's parameters.

+ +

Definition at line 32 of file Server.php.

+

Constructor & Destructor Documentation

+ +
+
+ + + + + + + + + + + + + + + + + + + + + + + + +
TeamSpeak3_Node_Server::__construct (TeamSpeak3_Node_Host $host,
array $info,
 $index = "virtualserver_id" 
)
+
+ +

The TeamSpeak3_Node_Server constructor.

+
Parameters
+ + + + +
TeamSpeak3_Node_Host$host
array$info
string$index
+
+
+
Exceptions
+ + +
TeamSpeak3_Adapter_ServerQuery_Exception
+
+
+
Returns
TeamSpeak3_Node_Server
+ +

Definition at line 63 of file Server.php.

+
64  {
+
65  $this->parent = $host;
+
66  $this->nodeInfo = $info;
+
67 
+
68  if(!array_key_exists($index, $this->nodeInfo))
+
69  {
+
70  throw new TeamSpeak3_Adapter_ServerQuery_Exception("invalid serverID", 0x400);
+
71  }
+
72 
+
73  $this->nodeId = $this->nodeInfo[$index];
+
74  }
+
+
+
+

Member Function Documentation

+ +
+
+ + + + + + + + + + + + + + + + + + +
TeamSpeak3_Node_Server::request ( $cmd,
 $throw = TRUE 
)
+
+ +

Sends a prepared command to the server and returns the result.

+
Parameters
+ + + +
string$cmd
boolean$throw
+
+
+
Returns
TeamSpeak3_Adapter_ServerQuery_Reply
+ +

Definition at line 83 of file Server.php.

+ +

References TeamSpeak3_Node_Abstract\getId(), and TeamSpeak3_Node_Abstract\getParent().

+ +

Referenced by banList(), banListClear(), channelGroupList(), channelList(), clientList(), connectionInfo(), fetchNodeInfo(), messageList(), notifyUnregister(), permReset(), privilegeKeyList(), serverGroupList(), snapshotCreate(), snapshotDeploy(), tempPasswordList(), and transferList().

+
84  {
+
85  if($this->getId() != $this->getParent()->serverSelectedId())
+
86  {
+
87  $this->getParent()->serverSelect($this->getId());
+
88  }
+
89 
+
90  return $this->getParent()->request($cmd, $throw);
+
91  }
+
+
+
+ +
+
+ + + + + + + + +
TeamSpeak3_Node_Server::channelList (array $filter = array())
+
+ +

Returns an array filled with TeamSpeak3_Node_Channel objects.

+
Parameters
+ + +
array$filter
+
+
+
Returns
array
+ +

Definition at line 99 of file Server.php.

+ +

References TeamSpeak3_Node_Abstract\filterList(), request(), and TeamSpeak3_Node_Abstract\resetNodeList().

+ +

Referenced by channelGetById(), channelGetByName(), channelListReset(), and fetchNodeList().

+
100  {
+
101  if($this->channelList === null)
+
102  {
+
103  $channels = $this->request("channellist -topic -flags -voice -limits -icon")->toAssocArray("cid");
+
104 
+
105  $this->channelList = array();
+
106 
+
107  foreach($channels as $cid => $channel)
+
108  {
+
109  $this->channelList[$cid] = new TeamSpeak3_Node_Channel($this, $channel);
+
110  }
+
111 
+
112  $this->resetNodeList();
+
113  }
+
114 
+
115  return $this->filterList($this->channelList, $filter);
+
116  }
+
+
+
+ +
+
+ + + + + + + +
TeamSpeak3_Node_Server::channelListReset ()
+
+ +

Resets the list of channels online.

+
Returns
void
+ +

Definition at line 123 of file Server.php.

+ +

References channelList(), and TeamSpeak3_Node_Abstract\resetNodeList().

+ +

Referenced by channelCreate(), channelDelete(), and channelMove().

+
124  {
+
125  $this->resetNodeList();
+
126  $this->channelList = null;
+
127  }
+
+
+
+ +
+
+ + + + + + + + +
TeamSpeak3_Node_Server::channelCreate (array $properties)
+
+ +

Creates a new channel using given properties and returns the new ID.

+
Parameters
+ + +
array$properties
+
+
+
Returns
integer
+ +

Definition at line 135 of file Server.php.

+ +

References channelListReset(), TeamSpeak3_Node_Abstract\execute(), and TeamSpeak3_Node_Abstract\getParent().

+ +

Referenced by channelSpacerCreate().

+
136  {
+
137  $cid = $this->execute("channelcreate", $properties)->toList();
+
138  $this->channelListReset();
+
139 
+
140  if(!isset($properties["client_flag_permanent"]) && !isset($properties["client_flag_semi_permanent"]))
+
141  {
+
142  $this->getParent()->whoamiSet("client_channel_id", $cid["cid"]);
+
143  }
+
144 
+
145  return $cid["cid"];
+
146  }
+
+
+
+ +
+
+ + + + + + + + + + + + + + + + + + +
TeamSpeak3_Node_Server::channelDelete ( $cid,
 $force = FALSE 
)
+
+ +

Deletes the channel specified by $cid.

+
Parameters
+ + + +
integer$cid
boolean$force
+
+
+
Returns
void
+ +

Definition at line 155 of file Server.php.

+ +

References channelListReset(), TeamSpeak3_Node_Abstract\execute(), TeamSpeak3_Node_Abstract\getId(), and TeamSpeak3_Node_Abstract\getParent().

+
156  {
+
157  $this->execute("channeldelete", array("cid" => $cid, "force" => $force));
+
158  $this->channelListReset();
+
159 
+
160  if(($cid instanceof TeamSpeak3_Node_Abstract ? $cid->getId() : $cid) == $this->whoamiGet("client_channel_id"))
+
161  {
+
162  $this->getParent()->whoamiReset();
+
163  }
+
164  }
+
+
+
+ +
+
+ + + + + + + + + + + + + + + + + + + + + + + + +
TeamSpeak3_Node_Server::channelMove ( $cid,
 $pid,
 $order = null 
)
+
+ +

Moves the channel specified by $cid to the parent channel specified with $pid.

+
Parameters
+ + + + +
integer$cid
integer$pid
integer$order
+
+
+
Returns
void
+ +

Definition at line 174 of file Server.php.

+ +

References channelListReset(), and TeamSpeak3_Node_Abstract\execute().

+
175  {
+
176  $this->execute("channelmove", array("cid" => $cid, "cpid" => $pid, "order" => $order));
+
177  $this->channelListReset();
+
178  }
+
+
+
+ +
+
+ + + + + + + + +
TeamSpeak3_Node_Server::channelIsSpacer (TeamSpeak3_Node_Channel $channel)
+
+ +

Returns TRUE if the given TeamSpeak3_Node_Channel object is a spacer.

+
Parameters
+ + +
TeamSpeak3_Node_Channel$channel
+
+
+
Returns
boolean
+ +

Definition at line 186 of file Server.php.

+ +

Referenced by channelSpacerGetAlign(), and channelSpacerGetType().

+
187  {
+
188  return (preg_match("/\[[^\]]*spacer[^\]]*\]/", $channel) && $channel["channel_flag_permanent"] && !$channel["pid"]) ? TRUE : FALSE;
+
189  }
+
+
+
+ +
+
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
TeamSpeak3_Node_Server::channelSpacerCreate ( $ident,
 $type = TeamSpeak3::SPACER_SOLIDLINE,
 $align = TeamSpeak3::SPACER_ALIGN_REPEAT,
 $order = null,
 $maxclients = 0 
)
+
+ +

Creates a new channel spacer and returns the new ID.

+

The first parameter $ident is used to create a unique spacer name on the virtual server.

+
Parameters
+ + + + + + +
string$ident
mixed$type
integer$align
integer$order
integer$maxclients
+
+
+
Exceptions
+ + +
TeamSpeak3_Adapter_ServerQuery_Exception
+
+
+
Returns
integer
+ +

Definition at line 203 of file Server.php.

+ +

References channelCreate(), TeamSpeak3\CODEC_OPUS_VOICE, TeamSpeak3\SPACER_ALIGN_CENTER, TeamSpeak3\SPACER_ALIGN_LEFT, TeamSpeak3\SPACER_ALIGN_REPEAT, TeamSpeak3\SPACER_ALIGN_RIGHT, TeamSpeak3\SPACER_DASHDOTDOTLINE, TeamSpeak3\SPACER_DASHDOTLINE, TeamSpeak3\SPACER_DASHLINE, TeamSpeak3\SPACER_DOTLINE, and TeamSpeak3\SPACER_SOLIDLINE.

+
204  {
+
205  $properties = array(
+
206  "channel_name_phonetic" => "channel spacer",
+
207  "channel_codec" => TeamSpeak3::CODEC_OPUS_VOICE,
+
208  "channel_codec_quality" => 0x00,
+
209  "channel_flag_permanent" => TRUE,
+
210  "channel_flag_maxclients_unlimited" => FALSE,
+
211  "channel_flag_maxfamilyclients_unlimited" => FALSE,
+
212  "channel_flag_maxfamilyclients_inherited" => FALSE,
+
213  "channel_maxclients" => $maxclients,
+
214  "channel_order" => $order,
+
215  );
+
216 
+
217  switch($align)
+
218  {
+ +
220  $properties["channel_name"] = "[*spacer" . strval($ident) . "]";
+
221  break;
+
222 
+ +
224  $properties["channel_name"] = "[lspacer" . strval($ident) . "]";
+
225  break;
+
226 
+ +
228  $properties["channel_name"] = "[rspacer" . strval($ident) . "]";
+
229  break;
+
230 
+ +
232  $properties["channel_name"] = "[cspacer" . strval($ident) . "]";
+
233  break;
+
234 
+
235  default:
+
236  throw new TeamSpeak3_Adapter_ServerQuery_Exception("missing required parameter", 0x606);
+
237  break;
+
238  }
+
239 
+
240  switch($type)
+
241  {
+
242  case (string) TeamSpeak3::SPACER_SOLIDLINE:
+
243  $properties["channel_name"] .= "___";
+
244  break;
+
245 
+
246  case (string) TeamSpeak3::SPACER_DASHLINE:
+
247  $properties["channel_name"] .= "---";
+
248  break;
+
249 
+
250  case (string) TeamSpeak3::SPACER_DOTLINE:
+
251  $properties["channel_name"] .= "...";
+
252  break;
+
253 
+
254  case (string) TeamSpeak3::SPACER_DASHDOTLINE:
+
255  $properties["channel_name"] .= "-.-";
+
256  break;
+
257 
+
258  case (string) TeamSpeak3::SPACER_DASHDOTDOTLINE:
+
259  $properties["channel_name"] .= "-..";
+
260  break;
+
261 
+
262  default:
+
263  $properties["channel_name"] .= strval($type);
+
264  break;
+
265  }
+
266 
+
267  return $this->channelCreate($properties);
+
268  }
+
+
+
+ +
+
+ + + + + + + + +
TeamSpeak3_Node_Server::channelSpacerGetType ( $cid)
+
+ +

Returns the possible type of a channel spacer.

+
Parameters
+ + +
integer$cid
+
+
+
Exceptions
+ + +
TeamSpeak3_Adapter_ServerQuery_Exception
+
+
+
Returns
integer
+ +

Definition at line 277 of file Server.php.

+ +

References channelGetById(), channelIsSpacer(), TeamSpeak3\SPACER_CUSTOM, TeamSpeak3\SPACER_DASHDOTDOTLINE, TeamSpeak3\SPACER_DASHDOTLINE, TeamSpeak3\SPACER_DASHLINE, TeamSpeak3\SPACER_DOTLINE, and TeamSpeak3\SPACER_SOLIDLINE.

+
278  {
+
279  $channel = $this->channelGetById($cid);
+
280 
+
281  if(!$this->channelIsSpacer($channel))
+
282  {
+
283  throw new TeamSpeak3_Adapter_ServerQuery_Exception("invalid channel flags", 0x307);
+
284  }
+
285 
+
286  switch($channel["channel_name"]->section("]", 1))
+
287  {
+
288  case "___":
+ +
290 
+
291  case "---":
+ +
293 
+
294  case "...":
+ +
296 
+
297  case "-.-":
+ +
299 
+
300  case "-..":
+ +
302 
+
303  default:
+ +
305  }
+
306  }
+
+
+
+ +
+
+ + + + + + + + +
TeamSpeak3_Node_Server::channelSpacerGetAlign ( $cid)
+
+ +

Returns the possible alignment of a channel spacer.

+
Parameters
+ + +
integer$cid
+
+
+
Exceptions
+ + +
TeamSpeak3_Adapter_ServerQuery_Exception
+
+
+
Returns
integer
+ +

Definition at line 315 of file Server.php.

+ +

References channelGetById(), channelIsSpacer(), TeamSpeak3\SPACER_ALIGN_CENTER, TeamSpeak3\SPACER_ALIGN_LEFT, TeamSpeak3\SPACER_ALIGN_REPEAT, and TeamSpeak3\SPACER_ALIGN_RIGHT.

+
316  {
+
317  $channel = $this->channelGetById($cid);
+
318 
+
319  if(!$this->channelIsSpacer($channel) || !preg_match("/\[(.*)spacer.*\]/", $channel, $matches) || !isset($matches[1]))
+
320  {
+
321  throw new TeamSpeak3_Adapter_ServerQuery_Exception("invalid channel flags", 0x307);
+
322  }
+
323 
+
324  switch($matches[1])
+
325  {
+
326  case "*":
+ +
328 
+
329  case "c":
+ +
331 
+
332  case "r":
+ +
334 
+
335  default:
+ +
337  }
+
338  }
+
+
+
+ +
+
+ + + + + + + + + + + + + + + + + + +
TeamSpeak3_Node_Server::channelPermList ( $cid,
 $permsid = FALSE 
)
+
+ +

Returns a list of permissions defined for a specific channel.

+
Parameters
+ + + +
integer$cid
boolean$permsid
+
+
+
Returns
array
+ +

Definition at line 347 of file Server.php.

+ +

References TeamSpeak3_Node_Abstract\execute().

+
348  {
+
349  return $this->execute("channelpermlist", array("cid" => $cid, $permsid ? "-permsid" : null))->toAssocArray($permsid ? "permsid" : "permid");
+
350  }
+
+
+
+ +
+
+ + + + + + + + + + + + + + + + + + + + + + + + +
TeamSpeak3_Node_Server::channelPermAssign ( $cid,
 $permid,
 $permvalue 
)
+
+ +

Adds a set of specified permissions to a channel.

+

Multiple permissions can be added by providing the two parameters of each permission.

+
Parameters
+ + + + +
integer$cid
integer$permid
integer$permvalue
+
+
+
Returns
void
+ +

Definition at line 361 of file Server.php.

+ +

References TeamSpeak3_Node_Abstract\current(), and TeamSpeak3_Node_Abstract\execute().

+
362  {
+
363  if(!is_array($permid))
+
364  {
+
365  $permident = (is_numeric($permid)) ? "permid" : "permsid";
+
366  }
+
367  else
+
368  {
+
369  $permident = (is_numeric(current($permid))) ? "permid" : "permsid";
+
370  }
+
371 
+
372  $this->execute("channeladdperm", array("cid" => $cid, $permident => $permid, "permvalue" => $permvalue));
+
373  }
+
+
+
+ +
+
+ + + + + + + + + + + + + + + + + + +
TeamSpeak3_Node_Server::channelPermRemove ( $cid,
 $permid 
)
+
+ +

Removes a set of specified permissions from a channel.

+

Multiple permissions can be removed at once.

+
Parameters
+ + + +
integer$cid
integer$permid
+
+
+
Returns
void
+ +

Definition at line 382 of file Server.php.

+ +

References TeamSpeak3_Node_Abstract\current(), and TeamSpeak3_Node_Abstract\execute().

+ +

Referenced by permRemoveAny().

+
383  {
+
384  if(!is_array($permid))
+
385  {
+
386  $permident = (is_numeric($permid)) ? "permid" : "permsid";
+
387  }
+
388  else
+
389  {
+
390  $permident = (is_numeric(current($permid))) ? "permid" : "permsid";
+
391  }
+
392 
+
393  $this->execute("channeldelperm", array("cid" => $cid, $permident => $permid));
+
394  }
+
+
+
+ +
+
+ + + + + + + + + + + + + + + + + + + + + + + + +
TeamSpeak3_Node_Server::channelClientPermList ( $cid,
 $cldbid,
 $permsid = FALSE 
)
+
+ +

Returns a list of permissions defined for a client in a specific channel.

+
Parameters
+ + + + +
integer$cid
integer$cldbid
boolean$permsid
+
+
+
Returns
array
+ +

Definition at line 404 of file Server.php.

+ +

References TeamSpeak3_Node_Abstract\execute().

+
405  {
+
406  return $this->execute("channelclientpermlist", array("cid" => $cid, "cldbid" => $cldbid, $permsid ? "-permsid" : null))->toAssocArray($permsid ? "permsid" : "permid");
+
407  }
+
+
+
+ +
+
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
TeamSpeak3_Node_Server::channelClientPermAssign ( $cid,
 $cldbid,
 $permid,
 $permvalue 
)
+
+ +

Adds a set of specified permissions to a client in a specific channel.

+

Multiple permissions can be added by providing the two parameters of each permission.

+
Parameters
+ + + + + +
integer$cid
integer$cldbid
integer$permid
integer$permvalue
+
+
+
Returns
void
+ +

Definition at line 419 of file Server.php.

+ +

References TeamSpeak3_Node_Abstract\current(), and TeamSpeak3_Node_Abstract\execute().

+
420  {
+
421  if(!is_array($permid))
+
422  {
+
423  $permident = (is_numeric($permid)) ? "permid" : "permsid";
+
424  }
+
425  else
+
426  {
+
427  $permident = (is_numeric(current($permid))) ? "permid" : "permsid";
+
428  }
+
429 
+
430  $this->execute("channelclientaddperm", array("cid" => $cid, "cldbid" => $cldbid, $permident => $permid, "permvalue" => $permvalue));
+
431  }
+
+
+
+ +
+
+ + + + + + + + + + + + + + + + + + + + + + + + +
TeamSpeak3_Node_Server::channelClientPermRemove ( $cid,
 $cldbid,
 $permid 
)
+
+ +

Removes a set of specified permissions from a client in a specific channel.

+

Multiple permissions can be removed at once.

+
Parameters
+ + + + +
integer$cid
integer$cldbid
integer$permid
+
+
+
Returns
void
+ +

Definition at line 441 of file Server.php.

+ +

References TeamSpeak3_Node_Abstract\current(), and TeamSpeak3_Node_Abstract\execute().

+ +

Referenced by permRemoveAny().

+
442  {
+
443  if(!is_array($permid))
+
444  {
+
445  $permident = (is_numeric($permid)) ? "permid" : "permsid";
+
446  }
+
447  else
+
448  {
+
449  $permident = (is_numeric(current($permid))) ? "permid" : "permsid";
+
450  }
+
451 
+
452  $this->execute("channelclientdelperm", array("cid" => $cid, "cldbid" => $cldbid, $permident => $permid));
+
453  }
+
+
+
+ +
+
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
TeamSpeak3_Node_Server::channelFileList ( $cid,
 $cpw = "",
 $path = "/",
 $recursive = FALSE 
)
+
+ +

Returns a list of files and directories stored in the specified channels file repository.

+
Parameters
+ + + + + +
integer$cid
string$cpw
string$path
boolean$recursive
+
+
+
Returns
array
+ +

Definition at line 464 of file Server.php.

+ +

References TeamSpeak3_Node_Abstract\count(), TeamSpeak3_Node_Abstract\execute(), TeamSpeak3\FILE_TYPE_DIRECTORY, and TeamSpeak3_Node_Abstract\getId().

+
465  {
+
466  $files = $this->execute("ftgetfilelist", array("cid" => $cid, "cpw" => $cpw, "path" => $path))->toArray();
+
467  $count = count($files);
+
468 
+
469  for($i = 0; $i < $count; $i++)
+
470  {
+
471  $files[$i]["sid"] = $this->getId();
+
472  $files[$i]["cid"] = $files[0]["cid"];
+
473  $files[$i]["path"] = $files[0]["path"];
+
474  $files[$i]["src"] = new TeamSpeak3_Helper_String($cid ? $files[$i]["path"] : "/");
+
475 
+
476  if(!$files[$i]["src"]->endsWith("/"))
+
477  {
+
478  $files[$i]["src"]->append("/");
+
479  }
+
480 
+
481  $files[$i]["src"]->append($files[$i]["name"]);
+
482 
+
483  if($recursive && $files[$i]["type"] == TeamSpeak3::FILE_TYPE_DIRECTORY)
+
484  {
+
485  $files = array_merge($files, $this->channelFileList($cid, $cpw, $path . $files[$i]["name"], $recursive));
+
486  }
+
487  }
+
488 
+
489  uasort($files, array(__CLASS__, "sortFileList"));
+
490 
+
491  return $files;
+
492  }
+
+
+
+ +
+
+ + + + + + + + + + + + + + + + + + + + + + + + +
TeamSpeak3_Node_Server::channelFileInfo ( $cid,
 $cpw = "",
 $name = "/" 
)
+
+ +

Returns detailed information about the specified file stored in a channels file repository.

+
Parameters
+ + + + +
integer$cid
string$cpw
string$name
+
+
+
Returns
array
+ +

Definition at line 502 of file Server.php.

+ +

References TeamSpeak3_Node_Abstract\execute(), and TeamSpeak3_Node_Abstract\toArray().

+
503  {
+
504  return array_pop($this->execute("ftgetfileinfo", array("cid" => $cid, "cpw" => $cpw, "name" => $name))->toArray());
+
505  }
+
+
+
+ +
+
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
TeamSpeak3_Node_Server::channelFileRename ( $cid,
 $cpw = "",
 $oldname = "/",
 $newname = "/",
 $tcid = null,
 $tcpw = null 
)
+
+ +

Renames a file in a channels file repository.

+

If the two parameters $tcid and $tcpw are specified, the file will be moved into another channels file repository.

+
Parameters
+ + + + + + + +
integer$cid
string$cpw
string$oldname
string$newname
integer$tcid
string$tcpw
+
+
+
Returns
void
+ +

Definition at line 519 of file Server.php.

+ +

References TeamSpeak3_Node_Abstract\execute().

+
520  {
+
521  $this->execute("ftrenamefile", array("cid" => $cid, "cpw" => $cpw, "oldname" => $oldname, "newname" => $newname, "tcid" => $tcid, "tcpw" => $tcpw));
+
522  }
+
+
+
+ +
+
+ + + + + + + + + + + + + + + + + + + + + + + + +
TeamSpeak3_Node_Server::channelFileDelete ( $cid,
 $cpw = "",
 $name = "/" 
)
+
+ +

Deletes one or more files stored in a channels file repository.

+
Parameters
+ + + + +
integer$cid
string$cpw
string$name
+
+
+
Returns
void
+ +

Definition at line 532 of file Server.php.

+ +

References TeamSpeak3_Node_Abstract\execute().

+
533  {
+
534  $this->execute("ftdeletefile", array("cid" => $cid, "cpw" => $cpw, "name" => $name));
+
535  }
+
+
+
+ +
+
+ + + + + + + + + + + + + + + + + + + + + + + + +
TeamSpeak3_Node_Server::channelDirCreate ( $cid,
 $cpw = "",
 $dirname = "/" 
)
+
+ +

Creates new directory in a channels file repository.

+
Parameters
+ + + + +
integer$cid
string$cpw
string$dirname
+
+
+
Returns
void
+ +

Definition at line 545 of file Server.php.

+ +

References TeamSpeak3_Node_Abstract\execute().

+
546  {
+
547  $this->execute("ftcreatedir", array("cid" => $cid, "cpw" => $cpw, "dirname" => $dirname));
+
548  }
+
+
+
+ +
+
+ + + + + + + + +
TeamSpeak3_Node_Server::channelGetLevel ( $cid)
+
+ +

Returns the level of a channel.

+
Parameters
+ + +
integer$cid
+
+
+
Returns
integer
+ +

Definition at line 556 of file Server.php.

+ +

References channelGetById().

+
557  {
+
558  $channel = $this->channelGetById($cid);
+
559  $levelno = 0;
+
560 
+
561  if($channel["pid"])
+
562  {
+
563  $levelno = $this->channelGetLevel($channel["pid"])+1;
+
564  }
+
565 
+
566  return $levelno;
+
567  }
+
+
+
+ +
+
+ + + + + + + + +
TeamSpeak3_Node_Server::channelGetPathway ( $cid)
+
+ +

Returns the pathway of a channel which can be used as a clients default channel.

+
Parameters
+ + +
integer$cid
+
+
+
Returns
string
+ +

Definition at line 575 of file Server.php.

+ +

References channelGetById().

+
576  {
+
577  $channel = $this->channelGetById($cid);
+
578  $pathway = $channel["channel_name"];
+
579 
+
580  if($channel["pid"])
+
581  {
+
582  $pathway = $this->channelGetPathway($channel["pid"]) . "/" . $channel["channel_name"];
+
583  }
+
584 
+
585  return $pathway;
+
586  }
+
+
+
+ +
+
+ + + + + + + + +
TeamSpeak3_Node_Server::channelGetById ( $cid)
+
+ +

Returns the TeamSpeak3_Node_Channel object matching the given ID.

+
Parameters
+ + +
integer$cid
+
+
+
Exceptions
+ + +
TeamSpeak3_Adapter_ServerQuery_Exception
+
+
+
Returns
TeamSpeak3_Node_Channel
+ +

Definition at line 595 of file Server.php.

+ +

References channelList().

+ +

Referenced by channelGetLevel(), channelGetPathway(), channelSpacerGetAlign(), channelSpacerGetType(), privilegeKeyList(), and tempPasswordList().

+
596  {
+
597  if(!array_key_exists((string) $cid, $this->channelList()))
+
598  {
+
599  throw new TeamSpeak3_Adapter_ServerQuery_Exception("invalid channelID", 0x300);
+
600  }
+
601 
+
602  return $this->channelList[intval((string) $cid)];
+
603  }
+
+
+
+ +
+
+ + + + + + + + +
TeamSpeak3_Node_Server::channelGetByName ( $name)
+
+ +

Returns the TeamSpeak3_Node_Channel object matching the given name.

+
Parameters
+ + +
string$name
+
+
+
Exceptions
+ + +
TeamSpeak3_Adapter_ServerQuery_Exception
+
+
+
Returns
TeamSpeak3_Node_Channel
+ +

Definition at line 612 of file Server.php.

+ +

References channelList().

+
613  {
+
614  foreach($this->channelList() as $channel)
+
615  {
+
616  if($channel["channel_name"] == $name) return $channel;
+
617  }
+
618 
+
619  throw new TeamSpeak3_Adapter_ServerQuery_Exception("invalid channelID", 0x300);
+
620  }
+
+
+
+ +
+
+ + + + + + + + +
TeamSpeak3_Node_Server::clientList (array $filter = array())
+
+ +

Returns an array filled with TeamSpeak3_Node_Client objects.

+
Parameters
+ + +
array$filter
+
+
+
Returns
array
+ +

Definition at line 628 of file Server.php.

+ +

References TeamSpeak3_Node_Abstract\filterList(), TeamSpeak3_Node_Abstract\getParent(), request(), and TeamSpeak3_Node_Abstract\resetNodeList().

+ +

Referenced by clientGetByDbid(), clientGetById(), clientGetByName(), clientGetByUid(), and clientListReset().

+
629  {
+
630  if($this->clientList === null)
+
631  {
+
632  $clients = $this->request("clientlist -uid -away -badges -voice -info -times -groups -icon -country -ip")->toAssocArray("clid");
+
633 
+
634  $this->clientList = array();
+
635 
+
636  foreach($clients as $clid => $client)
+
637  {
+
638  if($this->getParent()->getExcludeQueryClients() && $client["client_type"]) continue;
+
639 
+
640  $this->clientList[$clid] = new TeamSpeak3_Node_Client($this, $client);
+
641  }
+
642 
+
643  uasort($this->clientList, array(__CLASS__, "sortClientList"));
+
644 
+
645  $this->resetNodeList();
+
646  }
+
647 
+
648  return $this->filterList($this->clientList, $filter);
+
649  }
+
+
+
+ +
+
+ + + + + + + +
TeamSpeak3_Node_Server::clientListReset ()
+
+ +

Resets the list of clients online.

+
Returns
void
+ +

Definition at line 656 of file Server.php.

+ +

References clientList(), and TeamSpeak3_Node_Abstract\resetNodeList().

+ +

Referenced by clientBan(), clientKick(), clientMove(), clientPermList(), and serverGroupClientAdd().

+
657  {
+
658  $this->resetNodeList();
+
659  $this->clientList = null;
+
660  }
+
+
+
+ +
+
+ + + + + + + + +
TeamSpeak3_Node_Server::clientFind ( $pattern)
+
+ +

Returns a list of clients matching a given name pattern.

+
Parameters
+ + +
string$pattern
+
+
+
Returns
array
+ +

Definition at line 668 of file Server.php.

+ +

References TeamSpeak3_Node_Abstract\execute().

+
669  {
+
670  return $this->execute("clientfind", array("pattern" => $pattern))->toAssocArray("clid");
+
671  }
+
+
+
+ +
+
+ + + + + + + + + + + + + + + + + + +
TeamSpeak3_Node_Server::clientListDb ( $offset = null,
 $limit = null 
)
+
+ +

Returns a list of client identities known by the virtual server.

+

By default, the server spits out 25 entries at once.

+
Parameters
+ + + +
integer$offset
integer$limit
+
+
+
Returns
array
+ +

Definition at line 681 of file Server.php.

+ +

References TeamSpeak3_Node_Abstract\execute().

+
682  {
+
683  return $this->execute("clientdblist -count", array("start" => $offset, "duration" => $limit))->toAssocArray("cldbid");
+
684  }
+
+
+
+ +
+
+ + + + + + + +
TeamSpeak3_Node_Server::clientCountDb ()
+
+ +

Returns the number of client identities known by the virtual server.

+
Returns
integer
+ +

Definition at line 691 of file Server.php.

+ +

References TeamSpeak3_Node_Abstract\current(), and TeamSpeak3_Node_Abstract\execute().

+
692  {
+
693  return current($this->execute("clientdblist -count", array("duration" => 1))->toList("count"));
+
694  }
+
+
+
+ +
+
+ + + + + + + + +
TeamSpeak3_Node_Server::clientInfoDb ( $cldbid)
+
+ +

Returns a list of properties from the database for the client specified by $cldbid.

+
Parameters
+ + +
integer$cldbid
+
+
+
Returns
array
+ +

Definition at line 702 of file Server.php.

+ +

References TeamSpeak3_Node_Abstract\execute().

+
703  {
+
704  return $this->execute("clientdbinfo", array("cldbid" => $cldbid))->toList();
+
705  }
+
+
+
+ +
+
+ + + + + + + + + + + + + + + + + + +
TeamSpeak3_Node_Server::clientFindDb ( $pattern,
 $uid = FALSE 
)
+
+ +

Returns a list of client database IDs matching a given pattern.

+

You can either search for a clients last known nickname or his unique identity by using the $uid option.

+
Parameters
+ + + +
string$pattern
boolean$uid
+
+
+
Returns
array
+ +

Definition at line 715 of file Server.php.

+ +

References TeamSpeak3_Node_Abstract\execute().

+
716  {
+
717  return array_keys($this->execute("clientdbfind", array("pattern" => $pattern, ($uid) ? "-uid" : null))->toAssocArray("cldbid"));
+
718  }
+
+
+
+ +
+
+ + + + + + + +
TeamSpeak3_Node_Server::clientCount ()
+
+ +

Returns the number of regular clients online.

+
Returns
integer
+ +

Definition at line 725 of file Server.php.

+ +

References isOffline().

+
726  {
+
727  if($this->isOffline()) return 0;
+
728 
+
729  return $this["virtualserver_clientsonline"]-$this["virtualserver_queryclientsonline"];
+
730  }
+
+
+
+ +
+
+ + + + + + + + +
TeamSpeak3_Node_Server::clientGetById ( $clid)
+
+ +

Returns the TeamSpeak3_Node_Client object matching the given ID.

+
Parameters
+ + +
integer$clid
+
+
+
Exceptions
+ + +
TeamSpeak3_Adapter_ServerQuery_Exception
+
+
+
Returns
TeamSpeak3_Node_Client
+ +

Definition at line 739 of file Server.php.

+ +

References clientList().

+
740  {
+
741  if(!array_key_exists((string) $clid, $this->clientList()))
+
742  {
+
743  throw new TeamSpeak3_Adapter_ServerQuery_Exception("invalid clientID", 0x200);
+
744  }
+
745 
+
746  return $this->clientList[intval((string) $clid)];
+
747  }
+
+
+
+ +
+
+ + + + + + + + +
TeamSpeak3_Node_Server::clientGetByName ( $name)
+
+ +

Returns the TeamSpeak3_Node_Client object matching the given name.

+
Parameters
+ + +
string$name
+
+
+
Exceptions
+ + +
TeamSpeak3_Adapter_ServerQuery_Exception
+
+
+
Returns
TeamSpeak3_Node_Client
+ +

Definition at line 756 of file Server.php.

+ +

References clientList().

+
757  {
+
758  foreach($this->clientList() as $client)
+
759  {
+
760  if($client["client_nickname"] == $name) return $client;
+
761  }
+
762 
+
763  throw new TeamSpeak3_Adapter_ServerQuery_Exception("invalid clientID", 0x200);
+
764  }
+
+
+
+ +
+
+ + + + + + + + +
TeamSpeak3_Node_Server::clientGetByUid ( $uid)
+
+ +

Returns the TeamSpeak3_Node_Client object matching the given unique identifier.

+
Parameters
+ + +
string$uid
+
+
+
Exceptions
+ + +
TeamSpeak3_Adapter_ServerQuery_Exception
+
+
+
Returns
TeamSpeak3_Node_Client
+ +

Definition at line 773 of file Server.php.

+ +

References clientList().

+
774  {
+
775  foreach($this->clientList() as $client)
+
776  {
+
777  if($client["client_unique_identifier"] == $uid) return $client;
+
778  }
+
779 
+
780  throw new TeamSpeak3_Adapter_ServerQuery_Exception("invalid clientID", 0x200);
+
781  }
+
+
+
+ +
+
+ + + + + + + + +
TeamSpeak3_Node_Server::clientGetByDbid ( $dbid)
+
+ +

Returns the TeamSpeak3_Node_Client object matching the given database ID.

+
Parameters
+ + +
integer$dbid
+
+
+
Exceptions
+ + +
TeamSpeak3_Adapter_ServerQuery_Exception
+
+
+
Returns
TeamSpeak3_Node_Client
+ +

Definition at line 790 of file Server.php.

+ +

References clientList().

+
791  {
+
792  foreach($this->clientList() as $client)
+
793  {
+
794  if($client["client_database_id"] == $dbid) return $client;
+
795  }
+
796 
+
797  throw new TeamSpeak3_Adapter_ServerQuery_Exception("invalid clientID", 0x200);
+
798  }
+
+
+
+ +
+
+ + + + + + + + +
TeamSpeak3_Node_Server::clientGetNameByUid ( $cluid)
+
+ +

Returns an array containing the last known nickname and the database ID of the client matching the unique identifier specified with $cluid.

+
Parameters
+ + +
string$cluid
+
+
+
Returns
array
+ +

Definition at line 807 of file Server.php.

+ +

References TeamSpeak3_Node_Abstract\execute().

+
808  {
+
809  return $this->execute("clientgetnamefromuid", array("cluid" => $cluid))->toList();
+
810  }
+
+
+
+ +
+
+ + + + + + + + +
TeamSpeak3_Node_Server::clientGetIdsByUid ( $cluid)
+
+ +

Returns an array containing a list of active client connections using the unique identifier specified with $cluid.

+
Parameters
+ + +
string$cluid
+
+
+
Returns
array
+ +

Definition at line 819 of file Server.php.

+ +

References TeamSpeak3_Node_Abstract\execute().

+
820  {
+
821  return $this->execute("clientgetids", array("cluid" => $cluid))->toAssocArray("clid");
+
822  }
+
+
+
+ +
+
+ + + + + + + + +
TeamSpeak3_Node_Server::clientGetNameByDbid ( $cldbid)
+
+ +

Returns an array containing the last known nickname and the unique identifier of the client matching the database ID specified with $cldbid.

+
Parameters
+ + +
string$cldbid
+
+
+
Returns
array
+ +

Definition at line 831 of file Server.php.

+ +

References TeamSpeak3_Node_Abstract\execute().

+
832  {
+
833  return $this->execute("clientgetnamefromdbid", array("cldbid" => $cldbid))->toList();
+
834  }
+
+
+
+ +
+
+ + + + + + + + +
TeamSpeak3_Node_Server::clientGetServerGroupsByDbid ( $cldbid)
+
+ +

Returns an array containing the names and IDs of all server groups the client specified with $cldbid is is currently residing in.

+
Parameters
+ + +
string$cldbid
+
+
+
Returns
array
+ +

Definition at line 843 of file Server.php.

+ +

References TeamSpeak3_Node_Abstract\execute().

+
844  {
+
845  return $this->execute("servergroupsbyclientid", array("cldbid" => $cldbid))->toAssocArray("sgid");
+
846  }
+
+
+
+ +
+
+ + + + + + + + + + + + + + + + + + + + + + + + +
TeamSpeak3_Node_Server::clientMove ( $clid,
 $cid,
 $cpw = null 
)
+
+ +

Moves a client to another channel.

+
Parameters
+ + + + +
integer$clid
integer$cid
string$cpw
+
+
+
Returns
void
+ +

Definition at line 856 of file Server.php.

+ +

References clientListReset(), TeamSpeak3_Node_Abstract\execute(), and TeamSpeak3_Node_Abstract\getParent().

+
857  {
+
858  $this->clientListReset();
+
859 
+
860  $this->execute("clientmove", array("clid" => $clid, "cid" => $cid, "cpw" => $cpw));
+
861 
+
862  if($clid instanceof TeamSpeak3_Node_Abstract)
+
863  {
+
864  $clid = $clid->getId();
+
865  }
+
866 
+
867  if($cid instanceof TeamSpeak3_Node_Abstract)
+
868  {
+
869  $cid = $cid->getId();
+
870  }
+
871 
+
872  if(!is_array($clid) && $clid == $this->whoamiGet("client_id"))
+
873  {
+
874  $this->getParent()->whoamiSet("client_channel_id", $cid);
+
875  }
+
876  }
+
+
+
+ +
+
+ + + + + + + + + + + + + + + + + + + + + + + + +
TeamSpeak3_Node_Server::clientKick ( $clid,
 $reasonid = TeamSpeak3::KICK_CHANNEL,
 $reasonmsg = null 
)
+
+ +

Kicks one or more clients from their currently joined channel or from the server.

+
Parameters
+ + + + +
integer$clid
integer$reasonid
string$reasonmsg
+
+
+
Returns
void
+ +

Definition at line 886 of file Server.php.

+ +

References clientListReset(), and TeamSpeak3_Node_Abstract\execute().

+
887  {
+
888  $this->clientListReset();
+
889 
+
890  $this->execute("clientkick", array("clid" => $clid, "reasonid" => $reasonid, "reasonmsg" => $reasonmsg));
+
891  }
+
+
+
+ +
+
+ + + + + + + + + + + + + + + + + + +
TeamSpeak3_Node_Server::clientPoke ( $clid,
 $msg 
)
+
+ +

Sends a poke message to a client.

+
Parameters
+ + + +
integer$clid
string$msg
+
+
+
Returns
void
+ +

Definition at line 900 of file Server.php.

+ +

References TeamSpeak3_Node_Abstract\execute().

+
901  {
+
902  $this->execute("clientpoke", array("clid" => $clid, "msg" => $msg));
+
903  }
+
+
+
+ +
+
+ + + + + + + + + + + + + + + + + + + + + + + + +
TeamSpeak3_Node_Server::clientBan ( $clid,
 $timeseconds = null,
 $reason = null 
)
+
+ +

Bans the client specified with ID $clid from the server.

+

Please note that this will create two separate ban rules for the targeted clients IP address and his unique identifier.

+
Parameters
+ + + + +
integer$clid
integer$timeseconds
string$reason
+
+
+
Returns
array
+ +

Definition at line 914 of file Server.php.

+ +

References clientListReset(), and TeamSpeak3_Node_Abstract\execute().

+
915  {
+
916  $this->clientListReset();
+
917 
+
918  $bans = $this->execute("banclient", array("clid" => $clid, "time" => $timeseconds, "banreason" => $reason))->toAssocArray("banid");
+
919 
+
920  return array_keys($bans);
+
921  }
+
+
+
+ +
+
+ + + + + + + + + + + + + + + + + + +
TeamSpeak3_Node_Server::clientModifyDb ( $cldbid,
array $properties 
)
+
+ +

Changes the clients properties using given properties.

+
Parameters
+ + + +
string$cldbid
array$properties
+
+
+
Returns
void
+ +

Definition at line 930 of file Server.php.

+ +

References TeamSpeak3_Node_Abstract\execute().

+
931  {
+
932  $properties["cldbid"] = $cldbid;
+
933 
+
934  $this->execute("clientdbedit", $properties);
+
935  }
+
+
+
+ +
+
+ + + + + + + + +
TeamSpeak3_Node_Server::clientDeleteDb ( $cldbid)
+
+ +

Deletes a clients properties from the database.

+
Parameters
+ + +
string$cldbid
+
+
+
Returns
void
+ +

Definition at line 943 of file Server.php.

+ +

References TeamSpeak3_Node_Abstract\execute().

+
944  {
+
945  $this->execute("clientdbdelete", array("cldbid" => $cldbid));
+
946  }
+
+
+
+ +
+
+ + + + + + + + + + + + + + + + + + + + + + + + +
TeamSpeak3_Node_Server::clientSetChannelGroup ( $cldbid,
 $cid,
 $cgid 
)
+
+ +

Sets the channel group of a client to the ID specified.

+
Parameters
+ + + + +
integer$cldbid
integer$cid
integer$cgid
+
+
+
Returns
void
+ +

Definition at line 956 of file Server.php.

+ +

References TeamSpeak3_Node_Abstract\execute().

+
957  {
+
958  $this->execute("setclientchannelgroup", array("cldbid" => $cldbid, "cid" => $cid, "cgid" => $cgid));
+
959  }
+
+
+
+ +
+
+ + + + + + + + + + + + + + + + + + +
TeamSpeak3_Node_Server::clientPermList ( $cldbid,
 $permsid = FALSE 
)
+
+ +

Returns a list of permissions defined for a client.

+
Parameters
+ + + +
integer$cldbid
boolean$permsid
+
+
+
Returns
array
+ +

Definition at line 968 of file Server.php.

+ +

References clientListReset(), and TeamSpeak3_Node_Abstract\execute().

+
969  {
+
970  $this->clientListReset();
+
971 
+
972  return $this->execute("clientpermlist", array("cldbid" => $cldbid, $permsid ? "-permsid" : null))->toAssocArray($permsid ? "permsid" : "permid");
+
973  }
+
+
+
+ +
+
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
TeamSpeak3_Node_Server::clientPermAssign ( $cldbid,
 $permid,
 $permvalue,
 $permskip = FALSE 
)
+
+ +

Adds a set of specified permissions to a client.

+

Multiple permissions can be added by providing the three parameters of each permission.

+
Parameters
+ + + + + +
integer$cldbid
integer$permid
integer$permvalue
integer$permskip
+
+
+
Returns
void
+ +

Definition at line 985 of file Server.php.

+ +

References TeamSpeak3_Node_Abstract\current(), and TeamSpeak3_Node_Abstract\execute().

+
986  {
+
987  if(!is_array($permid))
+
988  {
+
989  $permident = (is_numeric($permid)) ? "permid" : "permsid";
+
990  }
+
991  else
+
992  {
+
993  $permident = (is_numeric(current($permid))) ? "permid" : "permsid";
+
994  }
+
995 
+
996  $this->execute("clientaddperm", array("cldbid" => $cldbid, $permident => $permid, "permvalue" => $permvalue, "permskip" => $permskip));
+
997  }
+
+
+
+ +
+
+ + + + + + + + + + + + + + + + + + +
TeamSpeak3_Node_Server::clientPermRemove ( $cldbid,
 $permid 
)
+
+ +

Removes a set of specified permissions from a client.

+

Multiple permissions can be removed at once.

+
Parameters
+ + + +
integer$cldbid
integer$permid
+
+
+
Returns
void
+ +

Definition at line 1006 of file Server.php.

+ +

References TeamSpeak3_Node_Abstract\current(), and TeamSpeak3_Node_Abstract\execute().

+ +

Referenced by permRemoveAny().

+
1007  {
+
1008  if(!is_array($permid))
+
1009  {
+
1010  $permident = (is_numeric($permid)) ? "permid" : "permsid";
+
1011  }
+
1012  else
+
1013  {
+
1014  $permident = (is_numeric(current($permid))) ? "permid" : "permsid";
+
1015  }
+
1016 
+
1017  $this->execute("clientdelperm", array("cldbid" => $cldbid, $permident => $permid));
+
1018  }
+
+
+
+ +
+
+ + + + + + + + +
TeamSpeak3_Node_Server::serverGroupList (array $filter = array())
+
+ +

Returns a list of server groups available.

+
Parameters
+ + +
filter$filter
+
+
+
Returns
array
+ +

Definition at line 1026 of file Server.php.

+ +

References TeamSpeak3_Node_Abstract\filterList(), and request().

+ +

Referenced by serverGroupGetById(), serverGroupGetByName(), and serverGroupGetProfiles().

+
1027  {
+
1028  if($this->sgroupList === null)
+
1029  {
+
1030  $this->sgroupList = $this->request("servergrouplist")->toAssocArray("sgid");
+
1031 
+
1032  foreach($this->sgroupList as $sgid => $group)
+
1033  {
+
1034  $this->sgroupList[$sgid] = new TeamSpeak3_Node_Servergroup($this, $group);
+
1035  }
+
1036 
+
1037  uasort($this->sgroupList, array(__CLASS__, "sortGroupList"));
+
1038  }
+
1039 
+
1040  return $this->filterList($this->sgroupList, $filter);
+
1041  }
+
+
+
+ +
+
+ + + + + + + +
TeamSpeak3_Node_Server::serverGroupListReset ()
+
+ +

Resets the list of server groups.

+
Returns
void
+ +

Definition at line 1048 of file Server.php.

+ +

Referenced by serverGroupCopy(), serverGroupCreate(), serverGroupDelete(), and serverGroupRename().

+
1049  {
+
1050  $this->sgroupList = null;
+
1051  }
+
+
+
+ +
+
+ + + + + + + + + + + + + + + + + + +
TeamSpeak3_Node_Server::serverGroupCreate ( $name,
 $type = TeamSpeak3::GROUP_DBTYPE_REGULAR 
)
+
+ +

Creates a new server group using the name specified with $name and returns its ID.

+
Parameters
+ + + +
string$name
integer$type
+
+
+
Returns
integer
+ +

Definition at line 1060 of file Server.php.

+ +

References TeamSpeak3_Node_Abstract\execute(), and serverGroupListReset().

+
1061  {
+
1062  $this->serverGroupListReset();
+
1063 
+
1064  $sgid = $this->execute("servergroupadd", array("name" => $name, "type" => $type))->toList();
+
1065 
+
1066  return $sgid["sgid"];
+
1067  }
+
+
+
+ +
+
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
TeamSpeak3_Node_Server::serverGroupCopy ( $ssgid,
 $name = null,
 $tsgid = 0,
 $type = TeamSpeak3::GROUP_DBTYPE_REGULAR 
)
+
+ +

Creates a copy of an existing server group specified by $ssgid and returns the new groups ID.

+
Parameters
+ + + + + +
integer$ssgid
string$name
integer$tsgid
integer$type
+
+
+
Returns
integer
+ +

Definition at line 1078 of file Server.php.

+ +

References TeamSpeak3_Node_Abstract\count(), TeamSpeak3_Node_Abstract\execute(), serverGroupListReset(), and serverGroupRename().

+
1079  {
+
1080  $this->serverGroupListReset();
+
1081 
+
1082  $sgid = $this->execute("servergroupcopy", array("ssgid" => $ssgid, "tsgid" => $tsgid, "name" => $name, "type" => $type))->toList();
+
1083 
+
1084  if($tsgid && $name)
+
1085  {
+
1086  $this->serverGroupRename($tsgid, $name);
+
1087  }
+
1088 
+
1089  return count($sgid) ? $sgid["sgid"] : intval($tsgid);
+
1090  }
+
+
+
+ +
+
+ + + + + + + + + + + + + + + + + + +
TeamSpeak3_Node_Server::serverGroupRename ( $sgid,
 $name 
)
+
+ +

Renames the server group specified with $sgid.

+
Parameters
+ + + +
integer$sgid
string$name
+
+
+
Returns
void
+ +

Definition at line 1099 of file Server.php.

+ +

References TeamSpeak3_Node_Abstract\execute(), and serverGroupListReset().

+ +

Referenced by serverGroupCopy().

+
1100  {
+
1101  $this->serverGroupListReset();
+
1102 
+
1103  $this->execute("servergrouprename", array("sgid" => $sgid, "name" => $name));
+
1104  }
+
+
+
+ +
+
+ + + + + + + + + + + + + + + + + + +
TeamSpeak3_Node_Server::serverGroupDelete ( $sgid,
 $force = FALSE 
)
+
+ +

Deletes the server group specified with $sgid.

+

If $force is set to 1, the server group will be deleted even if there are clients within.

+
Parameters
+ + + +
integer$sgid
boolean$force
+
+
+
Returns
void
+ +

Definition at line 1114 of file Server.php.

+ +

References TeamSpeak3_Node_Abstract\execute(), and serverGroupListReset().

+
1115  {
+
1116  $this->serverGroupListReset();
+
1117 
+
1118  $this->execute("servergroupdel", array("sgid" => $sgid, "force" => $force));
+
1119  }
+
+
+
+ +
+
+ + + + + + + + +
TeamSpeak3_Node_Server::serverGroupGetById ( $sgid)
+
+ +

Returns the TeamSpeak3_Node_Servergroup object matching the given ID.

+
Parameters
+ + +
integer$sgid
+
+
+
Exceptions
+ + +
TeamSpeak3_Adapter_ServerQuery_Exception
+
+
+
Returns
TeamSpeak3_Node_Servergroup
+ +

Definition at line 1128 of file Server.php.

+ +

References serverGroupList().

+ +

Referenced by serverGroupIdentify().

+
1129  {
+
1130  if(!array_key_exists((string) $sgid, $this->serverGroupList()))
+
1131  {
+
1132  throw new TeamSpeak3_Adapter_ServerQuery_Exception("invalid groupID", 0xA00);
+
1133  }
+
1134 
+
1135  return $this->sgroupList[intval((string) $sgid)];
+
1136  }
+
+
+
+ +
+
+ + + + + + + + + + + + + + + + + + +
TeamSpeak3_Node_Server::serverGroupGetByName ( $name,
 $type = TeamSpeak3::GROUP_DBTYPE_REGULAR 
)
+
+ +

Returns the TeamSpeak3_Node_Servergroup object matching the given name.

+
Parameters
+ + + +
string$name
integer$type
+
+
+
Exceptions
+ + +
TeamSpeak3_Adapter_ServerQuery_Exception
+
+
+
Returns
TeamSpeak3_Node_Servergroup
+ +

Definition at line 1146 of file Server.php.

+ +

References serverGroupList().

+
1147  {
+
1148  foreach($this->serverGroupList() as $group)
+
1149  {
+
1150  if($group["name"] == $name && $group["type"] == $type) return $group;
+
1151  }
+
1152 
+
1153  throw new TeamSpeak3_Adapter_ServerQuery_Exception("invalid groupID", 0xA00);
+
1154  }
+
+
+
+ +
+
+ + + + + + + + + + + + + + + + + + +
TeamSpeak3_Node_Server::serverGroupPermList ( $sgid,
 $permsid = FALSE 
)
+
+ +

Returns a list of permissions assigned to the server group specified.

+
Parameters
+ + + +
integer$sgid
boolean$permsid
+
+
+
Returns
array
+ +

Definition at line 1163 of file Server.php.

+ +

References TeamSpeak3_Node_Abstract\execute().

+ +

Referenced by serverGroupGetProfiles().

+
1164  {
+
1165  return $this->execute("servergrouppermlist", array("sgid" => $sgid, $permsid ? "-permsid" : null))->toAssocArray($permsid ? "permsid" : "permid");
+
1166  }
+
+
+
+ +
+
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
TeamSpeak3_Node_Server::serverGroupPermAssign ( $sgid,
 $permid,
 $permvalue,
 $permnegated = FALSE,
 $permskip = FALSE 
)
+
+ +

Adds a set of specified permissions to the server group specified.

+

Multiple permissions can be added by providing the four parameters of each permission in separate arrays.

+
Parameters
+ + + + + + +
integer$sgid
integer$permid
integer$permvalue
integer$permnegated
integer$permskip
+
+
+
Returns
void
+ +

Definition at line 1179 of file Server.php.

+ +

References TeamSpeak3_Node_Abstract\current(), and TeamSpeak3_Node_Abstract\execute().

+
1180  {
+
1181  if(!is_array($permid))
+
1182  {
+
1183  $permident = (is_numeric($permid)) ? "permid" : "permsid";
+
1184  }
+
1185  else
+
1186  {
+
1187  $permident = (is_numeric(current($permid))) ? "permid" : "permsid";
+
1188  }
+
1189 
+
1190  $this->execute("servergroupaddperm", array("sgid" => $sgid, $permident => $permid, "permvalue" => $permvalue, "permnegated" => $permnegated, "permskip" => $permskip));
+
1191  }
+
+
+
+ +
+
+ + + + + + + + + + + + + + + + + + +
TeamSpeak3_Node_Server::serverGroupPermRemove ( $sgid,
 $permid 
)
+
+ +

Removes a set of specified permissions from the server group specified with $sgid.

+

Multiple permissions can be removed at once.

+
Parameters
+ + + +
integer$sgid
integer$permid
+
+
+
Returns
void
+ +

Definition at line 1201 of file Server.php.

+ +

References TeamSpeak3_Node_Abstract\current(), and TeamSpeak3_Node_Abstract\execute().

+ +

Referenced by permRemoveAny().

+
1202  {
+
1203  if(!is_array($permid))
+
1204  {
+
1205  $permident = (is_numeric($permid)) ? "permid" : "permsid";
+
1206  }
+
1207  else
+
1208  {
+
1209  $permident = (is_numeric(current($permid))) ? "permid" : "permsid";
+
1210  }
+
1211 
+
1212  $this->execute("servergroupdelperm", array("sgid" => $sgid, $permident => $permid));
+
1213  }
+
+
+
+ +
+
+ + + + + + + + +
TeamSpeak3_Node_Server::serverGroupClientList ( $sgid)
+
+ +

Returns a list of clients assigned to the server group specified.

+
Parameters
+ + +
integer$sgid
+
+
+
Returns
array
+ +

Definition at line 1221 of file Server.php.

+ +

References TeamSpeak3_Node_Abstract\execute().

+
1222  {
+
1223  if($this["virtualserver_default_server_group"] == $sgid)
+
1224  {
+
1225  return array();
+
1226  }
+
1227 
+
1228  return $this->execute("servergroupclientlist", array("sgid" => $sgid, "-names"))->toAssocArray("cldbid");
+
1229  }
+
+
+
+ +
+
+ + + + + + + + + + + + + + + + + + +
TeamSpeak3_Node_Server::serverGroupClientAdd ( $sgid,
 $cldbid 
)
+
+ +

Adds a client to the server group specified.

+

Please note that a client cannot be added to default groups or template groups.

+
Parameters
+ + + +
integer$sgid
integer$cldbid
+
+
+
Returns
void
+ +

Definition at line 1239 of file Server.php.

+ +

References clientListReset(), and TeamSpeak3_Node_Abstract\execute().

+
1240  {
+
1241  $this->clientListReset();
+
1242 
+
1243  $this->execute("servergroupaddclient", array("sgid" => $sgid, "cldbid" => $cldbid));
+
1244  }
+
+
+
+ +
+
+ + + + + + + + + + + + + + + + + + +
TeamSpeak3_Node_Server::serverGroupClientDel ( $sgid,
 $cldbid 
)
+
+ +

Removes a client from the server group specified.

+
Parameters
+ + + +
integer$sgid
integer$cldbid
+
+
+
Returns
void
+ +

Definition at line 1253 of file Server.php.

+ +

References TeamSpeak3_Node_Abstract\execute().

+
1254  {
+
1255  $this->execute("servergroupdelclient", array("sgid" => $sgid, "cldbid" => $cldbid));
+
1256  }
+
+
+
+ +
+
+ + + + + + + +
TeamSpeak3_Node_Server::serverGroupGetProfiles ()
+
+ +

Returns an ordered array of regular server groups available based on a pre-defined set of rules.

+
Returns
array
+ +

Definition at line 1264 of file Server.php.

+ +

References TeamSpeak3_Helper_String\factory(), TeamSpeak3\GROUP_DBTYPE_REGULAR, serverGroupList(), and serverGroupPermList().

+ +

Referenced by serverGroupIdentify().

+
1265  {
+
1266  $profiles = array();
+
1267 
+
1268  foreach($this->serverGroupList() as $sgid => $sgroup)
+
1269  {
+
1270  if($sgroup["type"] != TeamSpeak3::GROUP_DBTYPE_REGULAR) continue;
+
1271 
+
1272  $profiles[$sgid] = array(
+
1273  "b_permission_modify_power_ignore" => 0,
+
1274  "i_group_needed_member_add_power" => 0,
+
1275  "i_group_member_add_power" => 0,
+
1276  "i_group_needed_member_remove_power" => 0,
+
1277  "i_group_member_remove_power" => 0,
+
1278  "i_needed_modify_power_count" => 0,
+
1279  "i_needed_modify_power_total" => 0,
+
1280  "i_permission_modify_power" => 0,
+
1281  "i_group_needed_modify_power" => 0,
+
1282  "i_group_modify_power" => 0,
+
1283  "i_client_needed_modify_power" => 0,
+
1284  "i_client_modify_power" => 0,
+
1285  "b_virtualserver_servergroup_create" => 0,
+
1286  "b_virtualserver_servergroup_delete" => 0,
+
1287  "b_client_ignore_bans" => 0,
+
1288  "b_client_ignore_antiflood" => 0,
+
1289  "b_group_is_permanent" => 0,
+
1290  "i_client_needed_ban_power" => 0,
+
1291  "i_client_needed_kick_power" => 0,
+
1292  "i_client_needed_move_power" => 0,
+
1293  "i_client_talk_power" => 0,
+
1294  "__sgid" => $sgid,
+
1295  "__name" => $sgroup->toString(),
+
1296  "__node" => $sgroup,
+
1297  );
+
1298 
+
1299  try
+
1300  {
+
1301  $perms = $this->serverGroupPermList($sgid, TRUE);
+
1302  $grant = isset($perms["i_permission_modify_power"]) ? $perms["i_permission_modify_power"]["permvalue"] : null;
+
1303  }
+ +
1305  {
+
1306  /* ERROR_database_empty_result */
+
1307  if($e->getCode() != 0x501) throw $e;
+
1308 
+
1309  $perms = array();
+
1310  $grant = null;
+
1311  }
+
1312 
+
1313  foreach($perms as $permsid => $perm)
+
1314  {
+
1315  if(in_array($permsid, array_keys($profiles[$sgid])))
+
1316  {
+
1317  $profiles[$sgid][$permsid] = $perm["permvalue"];
+
1318  }
+
1319  elseif(TeamSpeak3_Helper_String::factory($permsid)->startsWith("i_needed_modify_power_"))
+
1320  {
+
1321  if(!$grant || $perm["permvalue"] > $grant) continue;
+
1322 
+
1323  $profiles[$sgid]["i_needed_modify_power_total"] = $profiles[$sgid]["i_needed_modify_power_total"]+$perm["permvalue"];
+
1324  $profiles[$sgid]["i_needed_modify_power_count"]++;
+
1325  }
+
1326  }
+
1327  }
+
1328 
+
1329  array_multisort($profiles, SORT_DESC);
+
1330 
+
1331  return $profiles;
+
1332  }
+
+
+
+ +
+
+ + + + + + + + +
TeamSpeak3_Node_Server::serverGroupIdentify ( $mode = TeamSpeak3::GROUP_IDENTIFIY_STRONGEST)
+
+ +

Tries to identify the post powerful/weakest server group on the virtual server and returns the ID.

+
Parameters
+ + +
integer$mode
+
+
+
Returns
TeamSpeak3_Node_Servergroup
+ +

Definition at line 1341 of file Server.php.

+ +

References TeamSpeak3\GROUP_IDENTIFIY_STRONGEST, serverGroupGetById(), and serverGroupGetProfiles().

+
1342  {
+
1343  $profiles = $this->serverGroupGetProfiles();
+
1344 
+
1345  $best_guess_profile = ($mode == TeamSpeak3::GROUP_IDENTIFIY_STRONGEST) ? array_shift($profiles) : array_pop($profiles);
+
1346 
+
1347  return $this->serverGroupGetById($best_guess_profile["__sgid"]);
+
1348  }
+
+
+
+ +
+
+ + + + + + + + +
TeamSpeak3_Node_Server::channelGroupList (array $filter = array())
+
+ +

Returns a list of channel groups available.

+
Parameters
+ + +
array$filter
+
+
+
Returns
array
+ +

Definition at line 1356 of file Server.php.

+ +

References TeamSpeak3_Node_Abstract\filterList(), and request().

+ +

Referenced by channelGroupGetById(), and channelGroupGetByName().

+
1357  {
+
1358  if($this->cgroupList === null)
+
1359  {
+
1360  $this->cgroupList = $this->request("channelgrouplist")->toAssocArray("cgid");
+
1361 
+
1362  foreach($this->cgroupList as $cgid => $group)
+
1363  {
+
1364  $this->cgroupList[$cgid] = new TeamSpeak3_Node_Channelgroup($this, $group);
+
1365  }
+
1366 
+
1367  uasort($this->cgroupList, array(__CLASS__, "sortGroupList"));
+
1368  }
+
1369 
+
1370  return $this->filterList($this->cgroupList, $filter);
+
1371  }
+
+
+
+ +
+
+ + + + + + + +
TeamSpeak3_Node_Server::channelGroupListReset ()
+
+ +

Resets the list of channel groups.

+
Returns
void
+ +

Definition at line 1378 of file Server.php.

+ +

Referenced by channelGroupCopy(), channelGroupCreate(), channelGroupDelete(), and channelGroupRename().

+
1379  {
+
1380  $this->cgroupList = null;
+
1381  }
+
+
+
+ +
+
+ + + + + + + + + + + + + + + + + + +
TeamSpeak3_Node_Server::channelGroupCreate ( $name,
 $type = TeamSpeak3::GROUP_DBTYPE_REGULAR 
)
+
+ +

Creates a new channel group using the name specified with $name and returns its ID.

+
Parameters
+ + + +
string$name
integer$type
+
+
+
Returns
integer
+ +

Definition at line 1390 of file Server.php.

+ +

References channelGroupListReset(), and TeamSpeak3_Node_Abstract\execute().

+
1391  {
+
1392  $this->channelGroupListReset();
+
1393 
+
1394  $cgid = $this->execute("channelgroupadd", array("name" => $name, "type" => $type))->toList();
+
1395 
+
1396  return $cgid["cgid"];
+
1397  }
+
+
+
+ +
+
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
TeamSpeak3_Node_Server::channelGroupCopy ( $scgid,
 $name = null,
 $tcgid = 0,
 $type = TeamSpeak3::GROUP_DBTYPE_REGULAR 
)
+
+ +

Creates a copy of an existing channel group specified by $scgid and returns the new groups ID.

+
Parameters
+ + + + + +
integer$scgid
string$name
integer$tcgid
integer$type
+
+
+
Returns
integer
+ +

Definition at line 1408 of file Server.php.

+ +

References channelGroupListReset(), channelGroupRename(), TeamSpeak3_Node_Abstract\count(), and TeamSpeak3_Node_Abstract\execute().

+
1409  {
+
1410  $this->channelGroupListReset();
+
1411 
+
1412  $cgid = $this->execute("channelgroupcopy", array("scgid" => $scgid, "tcgid" => $tcgid, "name" => $name, "type" => $type))->toList();
+
1413 
+
1414  if($tcgid && $name)
+
1415  {
+
1416  $this->channelGroupRename($tcgid, $name);
+
1417  }
+
1418 
+
1419  return count($cgid) ? $cgid["cgid"] : intval($tcgid);
+
1420  }
+
+
+
+ +
+
+ + + + + + + + + + + + + + + + + + +
TeamSpeak3_Node_Server::channelGroupRename ( $cgid,
 $name 
)
+
+ +

Renames the channel group specified with $cgid.

+
Parameters
+ + + +
integer$cgid
string$name
+
+
+
Returns
void
+ +

Definition at line 1429 of file Server.php.

+ +

References channelGroupListReset(), and TeamSpeak3_Node_Abstract\execute().

+ +

Referenced by channelGroupCopy().

+
1430  {
+
1431  $this->channelGroupListReset();
+
1432 
+
1433  $this->execute("channelgrouprename", array("cgid" => $cgid, "name" => $name));
+
1434  }
+
+
+
+ +
+
+ + + + + + + + + + + + + + + + + + +
TeamSpeak3_Node_Server::channelGroupDelete ( $cgid,
 $force = FALSE 
)
+
+ +

Deletes the channel group specified with $cgid.

+

If $force is set to 1, the channel group will be deleted even if there are clients within.

+
Parameters
+ + + +
integer$sgid
boolean$force
+
+
+
Returns
void
+ +

Definition at line 1444 of file Server.php.

+ +

References channelGroupListReset(), and TeamSpeak3_Node_Abstract\execute().

+
1445  {
+
1446  $this->channelGroupListReset();
+
1447 
+
1448  $this->execute("channelgroupdel", array("cgid" => $cgid, "force" => $force));
+
1449  }
+
+
+
+ +
+
+ + + + + + + + +
TeamSpeak3_Node_Server::channelGroupGetById ( $cgid)
+
+ +

Returns the TeamSpeak3_Node_Channelgroup object matching the given ID.

+
Parameters
+ + +
integer$cgid
+
+
+
Exceptions
+ + +
TeamSpeak3_Adapter_ServerQuery_Exception
+
+
+
Returns
TeamSpeak3_Node_Channelgroup
+ +

Definition at line 1458 of file Server.php.

+ +

References channelGroupList().

+
1459  {
+
1460  if(!array_key_exists((string) $cgid, $this->channelGroupList()))
+
1461  {
+
1462  throw new TeamSpeak3_Adapter_ServerQuery_Exception("invalid groupID", 0xA00);
+
1463  }
+
1464 
+
1465  return $this->cgroupList[intval((string) $cgid)];
+
1466  }
+
+
+
+ +
+
+ + + + + + + + + + + + + + + + + + +
TeamSpeak3_Node_Server::channelGroupGetByName ( $name,
 $type = TeamSpeak3::GROUP_DBTYPE_REGULAR 
)
+
+ +

Returns the TeamSpeak3_Node_Channelgroup object matching the given name.

+
Parameters
+ + + +
string$name
integer$type
+
+
+
Exceptions
+ + +
TeamSpeak3_Adapter_ServerQuery_Exception
+
+
+
Returns
TeamSpeak3_Node_Channelgroup
+ +

Definition at line 1476 of file Server.php.

+ +

References channelGroupList().

+
1477  {
+
1478  foreach($this->channelGroupList() as $group)
+
1479  {
+
1480  if($group["name"] == $name && $group["type"] == $type) return $group;
+
1481  }
+
1482 
+
1483  throw new TeamSpeak3_Adapter_ServerQuery_Exception("invalid groupID", 0xA00);
+
1484  }
+
+
+
+ +
+
+ + + + + + + + + + + + + + + + + + +
TeamSpeak3_Node_Server::channelGroupPermList ( $cgid,
 $permsid = FALSE 
)
+
+ +

Returns a list of permissions assigned to the channel group specified.

+
Parameters
+ + + +
integer$cgid
boolean$permsid
+
+
+
Returns
array
+ +

Definition at line 1493 of file Server.php.

+ +

References TeamSpeak3_Node_Abstract\execute().

+
1494  {
+
1495  return $this->execute("channelgrouppermlist", array("cgid" => $cgid, $permsid ? "-permsid" : null))->toAssocArray($permsid ? "permsid" : "permid");
+
1496  }
+
+
+
+ +
+
+ + + + + + + + + + + + + + + + + + + + + + + + +
TeamSpeak3_Node_Server::channelGroupPermAssign ( $cgid,
 $permid,
 $permvalue 
)
+
+ +

Adds a set of specified permissions to the channel group specified.

+

Multiple permissions can be added by providing the two parameters of each permission in separate arrays.

+
Parameters
+ + + + +
integer$cgid
integer$permid
integer$permvalue
+
+
+
Returns
void
+ +

Definition at line 1507 of file Server.php.

+ +

References TeamSpeak3_Node_Abstract\current(), and TeamSpeak3_Node_Abstract\execute().

+
1508  {
+
1509  if(!is_array($permid))
+
1510  {
+
1511  $permident = (is_numeric($permid)) ? "permid" : "permsid";
+
1512  }
+
1513  else
+
1514  {
+
1515  $permident = (is_numeric(current($permid))) ? "permid" : "permsid";
+
1516  }
+
1517 
+
1518  $this->execute("channelgroupaddperm", array("cgid" => $cgid, $permident => $permid, "permvalue" => $permvalue));
+
1519  }
+
+
+
+ +
+
+ + + + + + + + + + + + + + + + + + +
TeamSpeak3_Node_Server::channelGroupPermRemove ( $cgid,
 $permid 
)
+
+ +

Removes a set of specified permissions from the channel group specified with $cgid.

+

Multiple permissions can be removed at once.

+
Parameters
+ + + +
integer$cgid
integer$permid
+
+
+
Returns
void
+ +

Definition at line 1529 of file Server.php.

+ +

References TeamSpeak3_Node_Abstract\current(), and TeamSpeak3_Node_Abstract\execute().

+ +

Referenced by permRemoveAny().

+
1530  {
+
1531  if(!is_array($permid))
+
1532  {
+
1533  $permident = (is_numeric($permid)) ? "permid" : "permsid";
+
1534  }
+
1535  else
+
1536  {
+
1537  $permident = (is_numeric(current($permid))) ? "permid" : "permsid";
+
1538  }
+
1539 
+
1540  $this->execute("channelgroupdelperm", array("cgid" => $cgid, $permident => $permid));
+
1541  }
+
+
+
+ +
+
+ + + + + + + + + + + + + + + + + + + + + + + + +
TeamSpeak3_Node_Server::channelGroupClientList ( $cgid = null,
 $cid = null,
 $cldbid = null 
)
+
+ +

Returns all the client and/or channel IDs currently assigned to channel groups.

+

All three parameters are optional so you're free to choose the most suitable combination for your requirements.

+
Parameters
+ + + + +
integer$cgid
integer$cid
integer$cldbid
+
+
+
Returns
array
+ +

Definition at line 1553 of file Server.php.

+ +

References TeamSpeak3_Node_Abstract\execute().

+
1554  {
+
1555  if($this["virtualserver_default_channel_group"] == $cgid)
+
1556  {
+
1557  return array();
+
1558  }
+
1559 
+
1560  return $this->execute("channelgroupclientlist", array("cgid" => $cgid, "cid" => $cid, "cldbid" => $cldbid))->toArray();
+
1561  }
+
+
+
+ +
+
+ + + + + + + +
TeamSpeak3_Node_Server::permReset ()
+
+ +

Restores the default permission settings on the virtual server and returns a new initial administrator privilege key.

+
Returns
TeamSpeak3_Helper_String
+ +

Definition at line 1569 of file Server.php.

+ +

References TeamSpeak3_Helper_Signal\getInstance(), and request().

+
1570  {
+
1571  $token = $this->request("permreset")->toList();
+
1572 
+
1573  TeamSpeak3_Helper_Signal::getInstance()->emit("notifyTokencreated", $this, $token["token"]);
+
1574 
+
1575  return $token["token"];
+
1576  }
+
+
+
+ +
+
+ + + + + + + + +
TeamSpeak3_Node_Server::permRemoveAny ( $permid)
+
+ +

Removes any assignment of the permission specified with $permid on the selected virtual server and returns the number of removed assignments on success.

+
Parameters
+ + +
integer$permid
+
+
+
Returns
integer
+ +

Definition at line 1585 of file Server.php.

+ +

References channelClientPermRemove(), channelGroupPermRemove(), channelPermRemove(), clientPermRemove(), TeamSpeak3_Node_Abstract\count(), TeamSpeak3\PERM_TYPE_CHANNEL, TeamSpeak3\PERM_TYPE_CHANNELCLIENT, TeamSpeak3\PERM_TYPE_CHANNELGROUP, TeamSpeak3\PERM_TYPE_CLIENT, TeamSpeak3\PERM_TYPE_SERVERGROUP, and serverGroupPermRemove().

+
1586  {
+
1587  $assignments = $this->permissionFind($permid);
+
1588 
+
1589  foreach($assignments as $assignment)
+
1590  {
+
1591  switch($assignment["t"])
+
1592  {
+ +
1594  $this->serverGroupPermRemove($assignment["id1"], $assignment["p"]);
+
1595  break;
+
1596 
+ +
1598  $this->clientPermRemove($assignment["id2"], $assignment["p"]);
+
1599  break;
+
1600 
+ +
1602  $this->channelPermRemove($assignment["id2"], $assignment["p"]);
+
1603  break;
+
1604 
+ +
1606  $this->channelGroupPermRemove($assignment["id1"], $assignment["p"]);
+
1607  break;
+
1608 
+ +
1610  $this->channelClientPermRemove($assignment["id2"], $assignment["id1"], $assignment["p"]);
+
1611  break;
+
1612 
+
1613  default:
+
1614  throw new TeamSpeak3_Adapter_ServerQuery_Exception("convert error", 0x604);
+
1615  }
+
1616  }
+
1617 
+
1618  return count($assignments);
+
1619  }
+
+
+
+ +
+
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
TeamSpeak3_Node_Server::transferInitUpload ( $clientftfid,
 $cid,
 $name,
 $size,
 $cpw = "",
 $overwrite = FALSE,
 $resume = FALSE 
)
+
+ +

Initializes a file transfer upload.

+

$clientftfid is an arbitrary ID to identify the file transfer on client-side.

+
Parameters
+ + + + + + + + +
integer$clientftfid
integer$cid
string$name
integer$size
string$cpw
boolean$overwrite
boolean$resume
+
+
+
Exceptions
+ + +
TeamSpeak3_Adapter_ServerQuery_Exception
+
+
+
Returns
array
+ +

Definition at line 1634 of file Server.php.

+ +

References TeamSpeak3_Node_Abstract\execute(), TeamSpeak3_Helper_Signal\getInstance(), and TeamSpeak3_Node_Abstract\getParent().

+ +

Referenced by iconUpload().

+
1635  {
+
1636  $upload = $this->execute("ftinitupload", array("clientftfid" => $clientftfid, "cid" => $cid, "name" => $name, "cpw" => $cpw, "size" => $size, "overwrite" => $overwrite, "resume" => $resume))->toList();
+
1637 
+
1638  if(array_key_exists("status", $upload) && $upload["status"] != 0x00)
+
1639  {
+
1640  throw new TeamSpeak3_Adapter_ServerQuery_Exception($upload["msg"], $upload["status"]);
+
1641  }
+
1642 
+
1643  $upload["cid"] = $cid;
+
1644  $upload["file"] = $name;
+
1645 
+
1646  if(!array_key_exists("ip", $upload) || $upload["ip"]->startsWith("0.0.0.0"))
+
1647  {
+
1648  $upload["ip"] = $this->getParent()->getAdapterHost();
+
1649  $upload["host"] = $upload["ip"];
+
1650  }
+
1651  else
+
1652  {
+
1653  $upload["ip"] = $upload["ip"]->section(",");
+
1654  $upload["host"] = $upload["ip"];
+
1655  }
+
1656 
+
1657  TeamSpeak3_Helper_Signal::getInstance()->emit("filetransferUploadInit", $upload["ftkey"], $upload);
+
1658 
+
1659  return $upload;
+
1660  }
+
+
+
+ +
+
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
TeamSpeak3_Node_Server::transferInitDownload ( $clientftfid,
 $cid,
 $name,
 $cpw = "",
 $seekpos = 0 
)
+
+ +

Initializes a file transfer download.

+

$clientftfid is an arbitrary ID to identify the file transfer on client-side.

+
Parameters
+ + + + + + +
integer$clientftfid
integer$cid
string$name
string$cpw
integer$seekpos
+
+
+
Exceptions
+ + +
TeamSpeak3_Adapter_ServerQuery_Exception
+
+
+
Returns
array
+ +

Definition at line 1673 of file Server.php.

+ +

References TeamSpeak3_Node_Abstract\execute(), TeamSpeak3_Helper_Signal\getInstance(), and TeamSpeak3_Node_Abstract\getParent().

+ +

Referenced by iconDownload().

+
1674  {
+
1675  $download = $this->execute("ftinitdownload", array("clientftfid" => $clientftfid, "cid" => $cid, "name" => $name, "cpw" => $cpw, "seekpos" => $seekpos))->toList();
+
1676 
+
1677  if(array_key_exists("status", $download) && $download["status"] != 0x00)
+
1678  {
+
1679  throw new TeamSpeak3_Adapter_ServerQuery_Exception($download["msg"], $download["status"]);
+
1680  }
+
1681 
+
1682  $download["cid"] = $cid;
+
1683  $download["file"] = $name;
+
1684 
+
1685  if(!array_key_exists("ip", $download) || $download["ip"]->startsWith("0.0.0.0"))
+
1686  {
+
1687  $download["ip"] = $this->getParent()->getAdapterHost();
+
1688  $download["host"] = $download["ip"];
+
1689  }
+
1690  else
+
1691  {
+
1692  $download["ip"] = $download["ip"]->section(",");
+
1693  $download["host"] = $download["ip"];
+
1694  }
+
1695 
+
1696  TeamSpeak3_Helper_Signal::getInstance()->emit("filetransferDownloadInit", $download["ftkey"], $download);
+
1697 
+
1698  return $download;
+
1699  }
+
+
+
+ +
+
+ + + + + + + +
TeamSpeak3_Node_Server::transferList ()
+
+ +

Displays a list of running file transfers on the selected virtual server.

+

The output contains the path to which a file is uploaded to, the current transfer rate in bytes per second, etc.

+
Returns
array
+ +

Definition at line 1707 of file Server.php.

+ +

References request().

+
1708  {
+
1709  return $this->request("ftlist")->toAssocArray("serverftfid");
+
1710  }
+
+
+
+ +
+
+ + + + + + + + + + + + + + + + + + +
TeamSpeak3_Node_Server::transferStop ( $serverftfid,
 $delete = FALSE 
)
+
+ +

Stops the running file transfer with server-side ID $serverftfid.

+
Parameters
+ + + +
integer$serverftfid
boolean$delete
+
+
+
Returns
void
+ +

Definition at line 1719 of file Server.php.

+ +

References TeamSpeak3_Node_Abstract\execute().

+
1720  {
+
1721  $this->execute("ftstop", array("serverftfid" => $serverftfid, "delete" => $delete));
+
1722  }
+
+
+
+ +
+
+ + + + + + + +
TeamSpeak3_Node_Server::iconDownload ()
+
+ +

Downloads and returns the servers icon file content.

+
Returns
TeamSpeak3_Helper_String
+ +

Definition at line 1729 of file Server.php.

+ +

References TeamSpeak3\factory(), TeamSpeak3_Node_Abstract\iconGetName(), TeamSpeak3_Node_Abstract\iconIsLocal(), and transferInitDownload().

+
1730  {
+
1731  if($this->iconIsLocal("virtualserver_icon_id") || $this["virtualserver_icon_id"] == 0) return;
+
1732 
+
1733  $download = $this->transferInitDownload(rand(0x0000, 0xFFFF), 0, $this->iconGetName("virtualserver_icon_id"));
+
1734  $transfer = TeamSpeak3::factory("filetransfer://" . $download["host"] . ":" . $download["port"]);
+
1735 
+
1736  return $transfer->download($download["ftkey"], $download["size"]);
+
1737  }
+
+
+
+ +
+
+ + + + + + + + +
TeamSpeak3_Node_Server::iconUpload ( $data)
+
+ +

Uploads a given icon file content to the server and returns the ID of the icon.

+
Parameters
+ + +
string$data
+
+
+
Returns
integer
+ +

Definition at line 1745 of file Server.php.

+ +

References TeamSpeak3\factory(), and transferInitUpload().

+
1746  {
+
1747  $crc = crc32($data);
+
1748  $size = strlen($data);
+
1749 
+
1750  $upload = $this->transferInitUpload(rand(0x0000, 0xFFFF), 0, "/icon_" . $crc, $size);
+
1751  $transfer = TeamSpeak3::factory("filetransfer://" . $upload["host"] . ":" . $upload["port"]);
+
1752 
+
1753  $transfer->upload($upload["ftkey"], $upload["seekpos"], $data);
+
1754 
+
1755  return $crc;
+
1756  }
+
+
+
+ +
+
+ + + + + + + + +
TeamSpeak3_Node_Server::modify (array $properties)
+
+ +

Changes the virtual server configuration using given properties.

+
Parameters
+ + +
array$properties
+
+
+
Returns
void
+ +

Definition at line 1764 of file Server.php.

+ +

References TeamSpeak3_Node_Abstract\execute(), and TeamSpeak3_Node_Abstract\resetNodeInfo().

+
1765  {
+
1766  $this->execute("serveredit", $properties);
+
1767  $this->resetNodeInfo();
+
1768  }
+
+
+
+ +
+
+ + + + + + + + +
TeamSpeak3_Node_Server::message ( $msg)
+
+ +

Sends a text message to all clients on the virtual server.

+
Parameters
+ + +
string$msg
+
+
+
Returns
void
+ +

Definition at line 1776 of file Server.php.

+ +

References TeamSpeak3_Node_Abstract\execute(), TeamSpeak3_Node_Abstract\getId(), and TeamSpeak3\TEXTMSG_SERVER.

+
1777  {
+
1778  $this->execute("sendtextmessage", array("msg" => $msg, "target" => $this->getId(), "targetmode" => TeamSpeak3::TEXTMSG_SERVER));
+
1779  }
+
+
+
+ +
+
+ + + + + + + +
TeamSpeak3_Node_Server::messageList ()
+
+ +

Returns a list of offline messages you've received.

+

The output contains the senders unique identifier, the messages subject, etc.

+
Returns
array
+ +

Definition at line 1787 of file Server.php.

+ +

References request().

+
1788  {
+
1789  return $this->request("messagelist")->toAssocArray("msgid");
+
1790  }
+
+
+
+ +
+
+ + + + + + + + + + + + + + + + + + + + + + + + +
TeamSpeak3_Node_Server::messageCreate ( $cluid,
 $subject,
 $message 
)
+
+ +

Sends an offline message to the client specified by $cluid.

+
Parameters
+ + + + +
string$cluid
string$subject
string$message
+
+
+
Returns
void
+ +

Definition at line 1800 of file Server.php.

+ +

References TeamSpeak3_Node_Abstract\execute().

+
1801  {
+
1802  $this->execute("messageadd", array("cluid" => $cluid, "subject" => $subject, "message" => $message));
+
1803  }
+
+
+
+ +
+
+ + + + + + + + +
TeamSpeak3_Node_Server::messageDelete ( $msgid)
+
+ +

Deletes an existing offline message with ID $msgid from your inbox.

+
Parameters
+ + +
integer$msgid
+
+
+
Returns
void
+ +

Definition at line 1811 of file Server.php.

+ +

References TeamSpeak3_Node_Abstract\execute().

+
1812  {
+
1813  $this->execute("messagedel", array("msgid" => $msgid));
+
1814  }
+
+
+
+ +
+
+ + + + + + + + + + + + + + + + + + +
TeamSpeak3_Node_Server::messageRead ( $msgid,
 $flag_read = TRUE 
)
+
+ +

Returns an existing offline message with ID $msgid from your inbox.

+
Parameters
+ + + +
integer$msgid
boolean$flag_read
+
+
+
Returns
array
+ +

Definition at line 1823 of file Server.php.

+ +

References TeamSpeak3_Node_Abstract\execute().

+
1824  {
+
1825  $msg = $this->execute("messageget", array("msgid" => $msgid))->toList();
+
1826 
+
1827  if($flag_read)
+
1828  {
+
1829  $this->execute("messageget", array("msgid" => $msgid, "flag" => $flag_read));
+
1830  }
+
1831 
+
1832  return $msg;
+
1833  }
+
+
+
+ +
+
+ + + + + + + + +
TeamSpeak3_Node_Server::snapshotCreate ( $mode = TeamSpeak3::SNAPSHOT_STRING)
+
+ +

Creates and returns snapshot data for the selected virtual server.

+
Parameters
+ + +
string$mode
+
+
+
Returns
string
+ +

Definition at line 1841 of file Server.php.

+ +

References request(), TeamSpeak3\SNAPSHOT_BASE64, and TeamSpeak3\SNAPSHOT_HEXDEC.

+
1842  {
+
1843  $snapshot = $this->request("serversnapshotcreate")->toString(FALSE);
+
1844 
+
1845  switch($mode)
+
1846  {
+ +
1848  return $snapshot->toBase64();
+
1849  break;
+
1850 
+ +
1852  return $snapshot->toHex();
+
1853  break;
+
1854 
+
1855  default:
+
1856  return (string) $snapshot;
+
1857  break;
+
1858  }
+
1859  }
+
+
+
+ +
+
+ + + + + + + + + + + + + + + + + + +
TeamSpeak3_Node_Server::snapshotDeploy ( $data,
 $mode = TeamSpeak3::SNAPSHOT_STRING 
)
+
+ +

Deploys snapshot data on the selected virtual server.

+

If no virtual server is selected (ID 0), the data will be used to create a new virtual server from scratch.

+
Parameters
+ + + +
string$data
string$mode
+
+
+
Returns
array
+ +

Definition at line 1869 of file Server.php.

+ +

References TeamSpeak3_Helper_String\factory(), TeamSpeak3_Helper_String\fromBase64(), TeamSpeak3_Helper_String\fromHex(), TeamSpeak3_Helper_Signal\getInstance(), TeamSpeak3_Node_Abstract\getParent(), request(), TeamSpeak3\SNAPSHOT_BASE64, and TeamSpeak3\SNAPSHOT_HEXDEC.

+
1870  {
+
1871  switch($mode)
+
1872  {
+ +
1874  $data = TeamSpeak3_Helper_String::fromBase64($data);
+
1875  break;
+
1876 
+ +
1878  $data = TeamSpeak3_Helper_String::fromHex($data);
+
1879  break;
+
1880 
+
1881  default:
+
1882  $data = TeamSpeak3_Helper_String::factory($data);
+
1883  break;
+
1884  }
+
1885 
+
1886  $detail = $this->request("serversnapshotdeploy " . $data)->toList();
+
1887 
+
1888  if(array_key_exists("sid", $detail))
+
1889  {
+
1890  TeamSpeak3_Helper_Signal::getInstance()->emit("notifyServercreated", $this->getParent(), $detail["sid"]);
+
1891  }
+
1892 
+
1893  return $detail;
+
1894  }
+
+
+
+ +
+
+ + + + + + + + + + + + + + + + + + +
TeamSpeak3_Node_Server::notifyRegister ( $event,
 $id = 0 
)
+
+ +

Registers for a specified category of events on a virtual server to receive notification messages.

+

Depending on the notifications you've registered for, the server will send you a message on every event.

+
Parameters
+ + + +
string$event
integer$id
+
+
+
Returns
void
+ +

Definition at line 1905 of file Server.php.

+ +

References TeamSpeak3_Node_Abstract\execute().

+
1906  {
+
1907  $this->execute("servernotifyregister", array("event" => $event, "id" => $id));
+
1908  }
+
+
+
+ +
+
+ + + + + + + +
TeamSpeak3_Node_Server::notifyUnregister ()
+
+ +

Unregisters all events previously registered with servernotifyregister so you will no longer receive notification messages.

+
Returns
void
+ +

Definition at line 1916 of file Server.php.

+ +

References request().

+
1917  {
+
1918  $this->request("servernotifyunregister");
+
1919  }
+
+
+
+ +
+
+ + + + + + + + +
TeamSpeak3_Node_Server::tokenList ( $translate = FALSE)
+
+ +

Alias for privilegeKeyList().

+
Deprecated:
+ +

Definition at line 1926 of file Server.php.

+ +

References privilegeKeyList().

+
1927  {
+
1928  return $this->privilegeKeyList();
+
1929  }
+
+
+
+ +
+
+ + + + + + + + +
TeamSpeak3_Node_Server::privilegeKeyList ( $resolve = FALSE)
+
+ +

Returns a list of privilege keys (tokens) available.

+

If $resolve is set to TRUE the values of token_id1 and token_id2 will be translated into the appropriate group and/or channel names.

+
Parameters
+ + +
boolean$resolve
+
+
+
Returns
array
+ +

Definition at line 1939 of file Server.php.

+ +

References channelGetById(), and request().

+ +

Referenced by tokenList().

+
1940  {
+
1941  $tokens = $this->request("privilegekeylist")->toAssocArray("token");
+
1942 
+
1943  if($resolve)
+
1944  {
+
1945  foreach($tokens as $token => $array)
+
1946  {
+
1947  $func = $array["token_type"] ? "channelGroupGetById" : "serverGroupGetById";
+
1948 
+
1949  try
+
1950  {
+
1951  $tokens[$token]["token_id1"] = $this->$func($array["token_id1"])->name;
+
1952  }
+
1953  catch(Exception $e)
+
1954  {
+
1955  /* ERROR_channel_invalid_id */
+
1956  if($e->getCode() != 0xA00) throw $e;
+
1957  }
+
1958 
+
1959  try
+
1960  {
+
1961  if($array["token_type"]) $tokens[$token]["token_id2"] = $this->channelGetById($array["token_id2"])->getPathway();
+
1962  }
+
1963  catch(Exception $e)
+
1964  {
+
1965  /* ERROR_permission_invalid_group_id */
+
1966  if($e->getCode() != 0x300) throw $e;
+
1967  }
+
1968  }
+
1969  }
+
1970 
+
1971  return $tokens;
+
1972  }
+
+
+
+ +
+
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
TeamSpeak3_Node_Server::tokenCreate ( $type = TeamSpeak3::TOKEN_SERVERGROUP,
 $id1,
 $id2 = 0,
 $description = null,
 $customset = null 
)
+
+ +

Alias for privilegeKeyCreate().

+
Deprecated:
+ +

Definition at line 1979 of file Server.php.

+ +

References privilegeKeyCreate().

+
1980  {
+
1981  return $this->privilegeKeyCreate($type, $id1, $id2, $description, $customset);
+
1982  }
+
+
+
+ +
+
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
TeamSpeak3_Node_Server::privilegeKeyCreate ( $type = TeamSpeak3::TOKEN_SERVERGROUP,
 $id1,
 $id2 = 0,
 $description = null,
 $customset = null 
)
+
+ +

Creates a new privilege key (token) and returns the key.

+
Parameters
+ + + + + + +
integer$type
integer$id1
integer$id2
string$description
string$customset
+
+
+
Returns
TeamSpeak3_Helper_String
+ +

Definition at line 1994 of file Server.php.

+ +

References TeamSpeak3_Node_Abstract\execute(), and TeamSpeak3_Helper_Signal\getInstance().

+ +

Referenced by tokenCreate().

+
1995  {
+
1996  $token = $this->execute("privilegekeyadd", array("tokentype" => $type, "tokenid1" => $id1, "tokenid2" => $id2, "tokendescription" => $description, "tokencustomset" => $customset))->toList();
+
1997 
+
1998  TeamSpeak3_Helper_Signal::getInstance()->emit("notifyTokencreated", $this, $token["token"]);
+
1999 
+
2000  return $token["token"];
+
2001  }
+
+
+
+ +
+
+ + + + + + + + +
TeamSpeak3_Node_Server::tokenDelete ( $token)
+
+ +

Alias for privilegeKeyDelete().

+
Deprecated:
+ +

Definition at line 2008 of file Server.php.

+ +

References privilegeKeyDelete().

+
2009  {
+
2010  $this->privilegeKeyDelete($token);
+
2011  }
+
+
+
+ +
+
+ + + + + + + + +
TeamSpeak3_Node_Server::privilegeKeyDelete ( $token)
+
+ +

Deletes a token specified by key $token.

+
Parameters
+ + +
string$token
+
+
+
Returns
void
+ +

Definition at line 2019 of file Server.php.

+ +

References TeamSpeak3_Node_Abstract\execute().

+ +

Referenced by tokenDelete().

+
2020  {
+
2021  $this->execute("privilegekeydelete", array("token" => $token));
+
2022  }
+
+
+
+ +
+
+ + + + + + + + +
TeamSpeak3_Node_Server::tokenUse ( $token)
+
+ +

Alias for privilegeKeyUse().

+
Deprecated:
+ +

Definition at line 2029 of file Server.php.

+ +

References privilegeKeyUse().

+
2030  {
+
2031  $this->privilegeKeyUse($token);
+
2032  }
+
+
+
+ +
+
+ + + + + + + + +
TeamSpeak3_Node_Server::privilegeKeyUse ( $token)
+
+ +

Use a token key gain access to a server or channel group.

+

Please note that the server will automatically delete the token after it has been used.

+
Parameters
+ + +
string$token
+
+
+
Returns
void
+ +

Definition at line 2041 of file Server.php.

+ +

References TeamSpeak3_Node_Abstract\execute().

+ +

Referenced by tokenUse().

+
2042  {
+
2043  $this->execute("privilegekeyuse", array("token" => $token));
+
2044  }
+
+
+
+ +
+
+ + + + + + + + + + + + + + + + + + +
TeamSpeak3_Node_Server::customSearch ( $ident,
 $pattern = "%" 
)
+
+ +

Returns a list of custom client properties specified by $ident.

+
Parameters
+ + + +
string$ident
string$pattern
+
+
+
Returns
array
+ +

Definition at line 2053 of file Server.php.

+ +

References TeamSpeak3_Node_Abstract\execute().

+
2054  {
+
2055  return $this->execute("customsearch", array("ident" => $ident, "pattern" => $pattern))->toArray();
+
2056  }
+
+
+
+ +
+
+ + + + + + + + +
TeamSpeak3_Node_Server::customInfo ( $cldbid)
+
+ +

Returns a list of custom properties for the client specified by $cldbid.

+
Parameters
+ + +
integer$cldbid
+
+
+
Returns
array
+ +

Definition at line 2064 of file Server.php.

+ +

References TeamSpeak3_Node_Abstract\execute().

+
2065  {
+
2066  return $this->execute("custominfo", array("cldbid" => $cldbid))->toArray();
+
2067  }
+
+
+
+ +
+
+ + + + + + + +
TeamSpeak3_Node_Server::banList ()
+
+ +

Returns a list of active bans on the selected virtual server.

+
Returns
array
+ +

Definition at line 2074 of file Server.php.

+ +

References request().

+
2075  {
+
2076  return $this->request("banlist")->toAssocArray("banid");
+
2077  }
+
+
+
+ +
+
+ + + + + + + +
TeamSpeak3_Node_Server::banListClear ()
+
+ +

Deletes all active ban rules from the server.

+
Returns
void
+ +

Definition at line 2084 of file Server.php.

+ +

References request().

+
2085  {
+
2086  $this->request("bandelall");
+
2087  }
+
+
+
+ +
+
+ + + + + + + + + + + + + + + + + + + + + + + + +
TeamSpeak3_Node_Server::banCreate (array $rules,
 $timeseconds = null,
 $reason = null 
)
+
+ +

Adds a new ban rule on the selected virtual server.

+

All parameters are optional but at least one of the following rules must be set: ip, name, or uid.

+
Parameters
+ + + + +
array$rules
integer$timeseconds
string$reason
+
+
+
Returns
integer
+ +

Definition at line 2098 of file Server.php.

+ +

References TeamSpeak3_Node_Abstract\execute().

+
2099  {
+
2100  $rules["time"] = $timeseconds;
+
2101  $rules["banreason"] = $reason;
+
2102 
+
2103  $banid = $this->execute("banadd", $rules)->toList();
+
2104 
+
2105  return $banid["banid"];
+
2106  }
+
+
+
+ +
+
+ + + + + + + + +
TeamSpeak3_Node_Server::banDelete ( $banid)
+
+ +

Deletes the specified ban rule from the server.

+
Parameters
+ + +
integer$banid
+
+
+
Returns
void
+ +

Definition at line 2114 of file Server.php.

+ +

References TeamSpeak3_Node_Abstract\execute().

+
2115  {
+
2116  $this->execute("bandel", array("banid" => $banid));
+
2117  }
+
+
+
+ +
+
+ + + + + + + + +
TeamSpeak3_Node_Server::complaintList ( $tcldbid = null)
+
+ +

Returns a list of complaints on the selected virtual server.

+

If $tcldbid is specified, only complaints about the targeted client will be shown.

+
Parameters
+ + +
integer$tcldbid
+
+
+
Returns
array
+ +

Definition at line 2126 of file Server.php.

+ +

References TeamSpeak3_Node_Abstract\execute().

+
2127  {
+
2128  return $this->execute("complainlist", array("tcldbid" => $tcldbid))->toArray();
+
2129  }
+
+
+
+ +
+
+ + + + + + + + +
TeamSpeak3_Node_Server::complaintListClear ( $tcldbid)
+
+ +

Deletes all active complaints about the client with database ID $tcldbid from the server.

+
Parameters
+ + +
integer$tcldbid
+
+
+
Returns
void
+ +

Definition at line 2137 of file Server.php.

+ +

References TeamSpeak3_Node_Abstract\execute().

+
2138  {
+
2139  $this->execute("complaindelall", array("tcldbid" => $tcldbid));
+
2140  }
+
+
+
+ +
+
+ + + + + + + + + + + + + + + + + + +
TeamSpeak3_Node_Server::complaintCreate ( $tcldbid,
 $message 
)
+
+ +

Submits a complaint about the client with database ID $tcldbid to the server.

+
Parameters
+ + + +
integer$tcldbid
string$message
+
+
+
Returns
void
+ +

Definition at line 2149 of file Server.php.

+ +

References TeamSpeak3_Node_Abstract\execute().

+
2150  {
+
2151  $this->execute("complainadd", array("tcldbid" => $tcldbid, "message" => $message));
+
2152  }
+
+
+
+ +
+
+ + + + + + + + + + + + + + + + + + +
TeamSpeak3_Node_Server::complaintDelete ( $tcldbid,
 $fcldbid 
)
+
+ +

Deletes the complaint about the client with ID $tcldbid submitted by the client with ID $fcldbid from the server.

+
Parameters
+ + + +
integer$tcldbid
integer$fcldbid
+
+
+
Returns
void
+ +

Definition at line 2161 of file Server.php.

+ +

References TeamSpeak3_Node_Abstract\execute().

+
2162  {
+
2163  $this->execute("complaindel", array("tcldbid" => $tcldbid, "fcldbid" => $fcldbid));
+
2164  }
+
+
+
+ +
+
+ + + + + + + + +
TeamSpeak3_Node_Server::tempPasswordList ( $resolve = FALSE)
+
+ +

Returns a list of temporary server passwords.

+
Parameters
+ + +
boolean$resolve
+
+
+
Returns
array
+ +

Definition at line 2172 of file Server.php.

+ +

References channelGetById(), and request().

+
2173  {
+
2174  $passwords = $this->request("servertemppasswordlist")->toAssocArray("pw_clear");
+
2175 
+
2176  if($resolve)
+
2177  {
+
2178  foreach($passwords as $password => $array)
+
2179  {
+
2180  try
+
2181  {
+
2182  $channel = $this->channelGetById($array["tcid"]);
+
2183 
+
2184  $passwords[$password]["tcname"] = $channel->toString();
+
2185  $passwords[$password]["tcpath"] = $channel->getPathway();
+
2186  }
+
2187  catch(Exception $e)
+
2188  {
+
2189  /* ERROR_channel_invalid_id */
+
2190  if($e->getCode() != 0xA00) throw $e;
+
2191  }
+
2192  }
+
2193  }
+
2194 
+
2195  return $passwords;
+
2196  }
+
+
+
+ +
+
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
TeamSpeak3_Node_Server::tempPasswordCreate ( $pw,
 $duration,
 $tcid = 0,
 $tcpw = "",
 $desc = "" 
)
+
+ +

Sets a new temporary server password specified with $pw.

+

The temporary password will be valid for the number of seconds specified with $duration. The client connecting with this password will automatically join the channel specified with $tcid. If tcid is set to 0, the client will join the default channel.

+
Parameters
+ + + + + + +
string$pw
integer$duration
integer$tcid
string$tcpw
string$desc
+
+
+
Returns
void
+ +

Definition at line 2211 of file Server.php.

+ +

References TeamSpeak3_Node_Abstract\execute().

+
2212  {
+
2213  $this->execute("servertemppasswordadd", array("pw" => $pw, "duration" => $duration, "tcid" => $tcid, "tcpw" => $tcpw, "desc" => $desc));
+
2214  }
+
+
+
+ +
+
+ + + + + + + + +
TeamSpeak3_Node_Server::tempPasswordDelete ( $pw)
+
+ +

Deletes the temporary server password specified with $pw.

+
Parameters
+ + +
string$pw
+
+
+
Returns
void
+ +

Definition at line 2222 of file Server.php.

+ +

References TeamSpeak3_Node_Abstract\execute().

+
2223  {
+
2224  $this->execute("servertemppassworddel", array("pw" => $pw));
+
2225  }
+
+
+
+ +
+
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
TeamSpeak3_Node_Server::logView ( $lines = 30,
 $begin_pos = null,
 $reverse = null,
 $instance = null 
)
+
+ +

Displays a specified number of entries (1-100) from the servers log.

+
Parameters
+ + + + + +
integer$lines
integer$begin_pos
boolean$reverse
boolean$instance
+
+
+
Returns
array
+ +

Definition at line 2236 of file Server.php.

+ +

References TeamSpeak3_Node_Abstract\execute().

+
2237  {
+
2238  return $this->execute("logview", array("lines" => $lines, "begin_pos" => $begin_pos, "instance" => $instance, "reverse" => $reverse))->toArray();
+
2239  }
+
+
+
+ +
+
+ + + + + + + + + + + + + + + + + + +
TeamSpeak3_Node_Server::logAdd ( $logmsg,
 $loglevel = TeamSpeak3::LOGLEVEL_INFO 
)
+
+ +

Writes a custom entry into the virtual server log.

+
Parameters
+ + + +
string$logmsg
integer$loglevel
+
+
+
Returns
void
+ +

Definition at line 2248 of file Server.php.

+ +

References TeamSpeak3_Node_Abstract\execute().

+
2249  {
+
2250  $this->execute("logadd", array("logmsg" => $logmsg, "loglevel" => $loglevel));
+
2251  }
+
+
+
+ +
+
+ + + + + + + +
TeamSpeak3_Node_Server::connectionInfo ()
+
+ +

Returns detailed connection information of the virtual server.

+
Returns
array
+ +

Definition at line 2258 of file Server.php.

+ +

References request().

+
2259  {
+
2260  return $this->request("serverrequestconnectioninfo")->toList();
+
2261  }
+
+
+
+ +
+
+ + + + + + + +
TeamSpeak3_Node_Server::delete ()
+
+ +

Deletes the virtual server.

+
Returns
void
+ +

Definition at line 2268 of file Server.php.

+ +

References TeamSpeak3_Node_Abstract\getId(), and TeamSpeak3_Node_Abstract\getParent().

+
2269  {
+
2270  $this->getParent()->serverDelete($this->getId());
+
2271 
+
2272  unset($this);
+
2273  }
+
+
+
+ +
+
+ + + + + + + +
TeamSpeak3_Node_Server::start ()
+
+ +

Starts the virtual server.

+
Returns
void
+ +

Definition at line 2280 of file Server.php.

+ +

References TeamSpeak3_Node_Abstract\getId(), and TeamSpeak3_Node_Abstract\getParent().

+
2281  {
+
2282  $this->getParent()->serverStart($this->getId());
+
2283  }
+
+
+
+ +
+
+ + + + + + + +
TeamSpeak3_Node_Server::stop ()
+
+ +

Stops the virtual server.

+
Returns
void
+ +

Definition at line 2290 of file Server.php.

+ +

References TeamSpeak3_Node_Abstract\getId(), and TeamSpeak3_Node_Abstract\getParent().

+
2291  {
+
2292  $this->getParent()->serverStop($this->getId());
+
2293  }
+
+
+
+ +
+
+ + + + + + + + + + + + + + + + + + +
TeamSpeak3_Node_Server::sendPluginCmd ( $plugin,
 $data 
)
+
+ +

Sends a plugin command to all clients connected to the server.

+
Parameters
+ + + +
string$plugin
string$data
+
+
+
Returns
void
+ +

Definition at line 2302 of file Server.php.

+ +

References TeamSpeak3_Node_Abstract\execute(), and TeamSpeak3\PLUGINCMD_SERVER.

+
2303  {
+
2304  $this->execute("plugincmd", array("name" => $plugin, "data" => $data, "targetmode" => TeamSpeak3::PLUGINCMD_SERVER));
+
2305  }
+
+
+
+ +
+
+ + + + + + + + +
TeamSpeak3_Node_Server::selfUpdate (array $properties)
+
+ +

Changes the properties of your own client connection.

+
Parameters
+ + +
array$properties
+
+
+
Returns
void
+ +

Definition at line 2313 of file Server.php.

+ +

References TeamSpeak3_Node_Abstract\execute().

+
2314  {
+
2315  $this->execute("clientupdate", $properties);
+
2316 
+
2317  foreach($properties as $ident => $value)
+
2318  {
+
2319  $this->whoamiSet($ident, $value);
+
2320  }
+
2321  }
+
+
+
+ +
+
+ + + + + + + + +
TeamSpeak3_Node_Server::selfUpdateLogin ( $username)
+
+ +

Updates your own ServerQuery login credentials using a specified username.

+

The password will be auto-generated.

+
Parameters
+ + +
string$username
+
+
+
Returns
TeamSpeak3_Helper_String
+ +

Definition at line 2330 of file Server.php.

+ +

References TeamSpeak3_Node_Abstract\execute().

+
2331  {
+
2332  $password = $this->execute("clientsetserverquerylogin", array("client_login_name" => $username))->toList();
+
2333 
+
2334  return $password["client_login_password"];
+
2335  }
+
+
+
+ +
+
+ + + + + + + +
TeamSpeak3_Node_Server::selfPermOverview ()
+
+ +

Returns an array containing the permission overview of your own client.

+
Returns
array
+ +

Definition at line 2342 of file Server.php.

+ +

References TeamSpeak3_Node_Abstract\execute().

+
2343  {
+
2344  return $this->execute("permoverview", array("cldbid" => $this->whoamiGet("client_database_id"), "cid" => $this->whoamiGet("client_channel_id"), "permid" => 0))->toArray();
+
2345  }
+
+
+
+ +
+
+ + + + + +
+ + + + + + + +
TeamSpeak3_Node_Server::fetchNodeList ()
+
+protected
+
+ +

+ +

Definition at line 2350 of file Server.php.

+ +

References channelList().

+
2351  {
+
2352  $this->nodeList = array();
+
2353 
+
2354  foreach($this->channelList() as $channel)
+
2355  {
+
2356  if($channel["pid"] == 0)
+
2357  {
+
2358  $this->nodeList[] = $channel;
+
2359  }
+
2360  }
+
2361  }
+
+
+
+ +
+
+ + + + + +
+ + + + + + + +
TeamSpeak3_Node_Server::fetchNodeInfo ()
+
+protected
+
+ +

+ +

Definition at line 2366 of file Server.php.

+ +

References request().

+
2367  {
+
2368  $this->nodeInfo = array_merge($this->nodeInfo, $this->request("serverinfo")->toList());
+
2369  }
+
+
+
+ +
+
+ + + + + +
+ + + + + + + + + + + + + + + + + + +
static TeamSpeak3_Node_Server::sortClientList (TeamSpeak3_Node_Client $a,
TeamSpeak3_Node_Client $b 
)
+
+staticprotected
+
+ +

Internal callback funtion for sorting of client objects.

+
Parameters
+ + + +
TeamSpeak3_Node_Client$a
TeamSpeak3_Node_Client$b
+
+
+
Returns
integer
+ +

Definition at line 2378 of file Server.php.

+ +

References TeamSpeak3_Node_Abstract\getProperty().

+
2379  {
+
2380  if(get_class($a) != get_class($b))
+
2381  {
+
2382  return 0;
+
2383 
+
2384  /* workaround for PHP bug #50688 */
+
2385  throw new TeamSpeak3_Adapter_ServerQuery_Exception("invalid parameter", 0x602);
+
2386  }
+
2387 
+
2388  if(!$a instanceof TeamSpeak3_Node_Client)
+
2389  {
+
2390  return 0;
+
2391 
+
2392  /* workaround for PHP bug #50688 */
+
2393  throw new TeamSpeak3_Adapter_ServerQuery_Exception("convert error", 0x604);
+
2394  }
+
2395 
+
2396  if($a->getProperty("client_talk_power", 0) != $b->getProperty("client_talk_power", 0))
+
2397  {
+
2398  return ($a->getProperty("client_talk_power", 0) > $b->getProperty("client_talk_power", 0)) ? -1 : 1;
+
2399  }
+
2400 
+
2401  if($a->getProperty("client_is_talker", 0) != $b->getProperty("client_is_talker", 0))
+
2402  {
+
2403  return ($a->getProperty("client_is_talker", 0) > $b->getProperty("client_is_talker", 0)) ? -1 : 1;
+
2404  }
+
2405 
+
2406  return strcmp(strtolower($a["client_nickname"]), strtolower($b["client_nickname"]));
+
2407  }
+
+
+
+ +
+
+ + + + + +
+ + + + + + + + + + + + + + + + + + +
static TeamSpeak3_Node_Server::sortGroupList (TeamSpeak3_Node_Abstract $a,
TeamSpeak3_Node_Abstract $b 
)
+
+staticprotected
+
+ +

Internal callback funtion for sorting of group objects.

+
Parameters
+ + + +
TeamSpeak3_Node_Abstract$a
TeamSpeak3_Node_Abstract$b
+
+
+
Returns
integer
+ +

Definition at line 2416 of file Server.php.

+ +

References TeamSpeak3_Node_Abstract\getId(), and TeamSpeak3_Node_Abstract\getProperty().

+
2417  {
+
2418  if(get_class($a) != get_class($b))
+
2419  {
+
2420  return 0;
+
2421 
+
2422  /* workaround for PHP bug #50688 */
+
2423  throw new TeamSpeak3_Adapter_ServerQuery_Exception("invalid parameter", 0x602);
+
2424  }
+
2425 
+
2426  if(!$a instanceof TeamSpeak3_Node_Servergroup && !$a instanceof TeamSpeak3_Node_Channelgroup)
+
2427  {
+
2428  return 0;
+
2429 
+
2430  /* workaround for PHP bug #50688 */
+
2431  throw new TeamSpeak3_Adapter_ServerQuery_Exception("convert error", 0x604);
+
2432  }
+
2433 
+
2434  if($a->getProperty("sortid", 0) != $b->getProperty("sortid", 0) && $a->getProperty("sortid", 0) != 0 && $b->getProperty("sortid", 0) != 0)
+
2435  {
+
2436  return ($a->getProperty("sortid", 0) < $b->getProperty("sortid", 0)) ? -1 : 1;
+
2437  }
+
2438 
+
2439  return ($a->getId() < $b->getId()) ? -1 : 1;
+
2440  }
+
+
+
+ +
+
+ + + + + +
+ + + + + + + + + + + + + + + + + + +
static TeamSpeak3_Node_Server::sortFileList (array $a,
array $b 
)
+
+staticprotected
+
+ +

Internal callback funtion for sorting of file list items.

+
Parameters
+ + + +
array$a
array$b
+
+
+
Returns
integer
+ +

Definition at line 2449 of file Server.php.

+
2450  {
+
2451  if(!array_key_exists("src", $a) || !array_key_exists("src", $b) || !array_key_exists("type", $a) || !array_key_exists("type", $b))
+
2452  {
+
2453  return 0;
+
2454 
+
2455  throw new TeamSpeak3_Adapter_ServerQuery_Exception("invalid parameter", 0x602);
+
2456  }
+
2457 
+
2458  if($a["type"] != $b["type"])
+
2459  {
+
2460  return ($a["type"] < $b["type"]) ? -1 : 1;
+
2461  }
+
2462 
+
2463  return strcmp(strtolower($a["src"]), strtolower($b["src"]));
+
2464  }
+
+
+
+ +
+
+ + + + + + + +
TeamSpeak3_Node_Server::isOnline ()
+
+ +

Returns TRUE if the virtual server is online.

+
Returns
boolean
+ +

Definition at line 2471 of file Server.php.

+
2472  {
+
2473  return ($this["virtualserver_status"] == "online") ? TRUE : FALSE;
+
2474  }
+
+
+
+ +
+
+ + + + + + + +
TeamSpeak3_Node_Server::isOffline ()
+
+ +

Returns TRUE if the virtual server is offline.

+
Returns
boolean
+ +

Definition at line 2481 of file Server.php.

+ +

Referenced by clientCount().

+
2482  {
+
2483  return ($this["virtualserver_status"] == "offline") ? TRUE : FALSE;
+
2484  }
+
+
+
+ +
+
+ + + + + + + +
TeamSpeak3_Node_Server::getUniqueId ()
+
+ +

Returns a unique identifier for the node which can be used as a HTML property.

+
Returns
string
+ +

Definition at line 2491 of file Server.php.

+ +

References TeamSpeak3_Node_Abstract\getId(), and TeamSpeak3_Node_Abstract\getParent().

+
2492  {
+
2493  return $this->getParent()->getUniqueId() . "_s" . $this->getId();
+
2494  }
+
+
+
+ +
+
+ + + + + + + +
TeamSpeak3_Node_Server::getIcon ()
+
+ +

Returns the name of a possible icon to display the node object.

+
Returns
string
+ +

Definition at line 2501 of file Server.php.

+
2502  {
+
2503  if($this["virtualserver_clientsonline"]-$this["virtualserver_queryclientsonline"] >= $this["virtualserver_maxclients"])
+
2504  {
+
2505  return "server_full";
+
2506  }
+
2507  elseif($this["virtualserver_flag_password"])
+
2508  {
+
2509  return "server_pass";
+
2510  }
+
2511  else
+
2512  {
+
2513  return "server_open";
+
2514  }
+
2515  }
+
+
+
+ +
+
+ + + + + + + +
TeamSpeak3_Node_Server::getSymbol ()
+
+ +

Returns a symbol representing the node.

+
Returns
string
+ +

Definition at line 2522 of file Server.php.

+
2523  {
+
2524  return "$";
+
2525  }
+
+
+
+ +
+
+ + + + + + + +
TeamSpeak3_Node_Server::__toString ()
+
+ +

Returns a string representation of this node.

+
Returns
string
+ +

Definition at line 2532 of file Server.php.

+
2533  {
+
2534  return (string) $this["virtualserver_name"];
+
2535  }
+
+
+
+ +
+
+ + + + + +
+ + + + + + + + + + + + + + + + + + +
TeamSpeak3_Node_Abstract::prepare ( $cmd,
array $params = array() 
)
+
+inherited
+
+ +

Uses given parameters and returns a prepared ServerQuery command.

+
Parameters
+ + + +
string$cmd
array$params
+
+
+
Returns
TeamSpeak3_Helper_String
+ +

Definition at line 83 of file Abstract.php.

+ +

References TeamSpeak3_Node_Abstract\getParent().

+ +

Referenced by TeamSpeak3_Node_Abstract\execute().

+
84  {
+
85  return $this->getParent()->prepare($cmd, $params);
+
86  }
+
+
+
+ +
+
+ + + + + +
+ + + + + + + + + + + + + + + + + + +
TeamSpeak3_Node_Abstract::execute ( $cmd,
array $params = array() 
)
+
+inherited
+
+ +

Prepares and executes a ServerQuery command and returns the result.

+
Parameters
+ + + +
string$cmd
array$params
+
+
+
Returns
TeamSpeak3_Adapter_ServerQuery_Reply
+ +

Definition at line 95 of file Abstract.php.

+ +

References TeamSpeak3_Node_Abstract\prepare(), and TeamSpeak3_Node_Abstract\request().

+ +

Referenced by banCreate(), banDelete(), channelClientPermAssign(), channelClientPermList(), channelClientPermRemove(), channelCreate(), channelDelete(), channelDirCreate(), channelFileDelete(), channelFileInfo(), channelFileList(), channelFileRename(), channelGroupClientList(), channelGroupCopy(), channelGroupCreate(), channelGroupDelete(), channelGroupPermAssign(), channelGroupPermList(), channelGroupPermRemove(), channelGroupRename(), channelMove(), channelPermAssign(), channelPermList(), channelPermRemove(), clientBan(), clientCountDb(), clientDeleteDb(), clientFind(), clientFindDb(), clientGetIdsByUid(), clientGetNameByDbid(), clientGetNameByUid(), clientGetServerGroupsByDbid(), clientInfoDb(), clientKick(), clientListDb(), clientModifyDb(), clientMove(), clientPermAssign(), clientPermList(), clientPermRemove(), clientPoke(), clientSetChannelGroup(), complaintCreate(), complaintDelete(), complaintList(), complaintListClear(), customInfo(), customSearch(), TeamSpeak3_Node_Client\fetchNodeInfo(), TeamSpeak3_Node_Channel\fetchNodeInfo(), TeamSpeak3_Node_Client\getClones(), TeamSpeak3_Node_Host\logAdd(), logAdd(), TeamSpeak3_Node_Host\login(), TeamSpeak3_Node_Host\logView(), logView(), TeamSpeak3_Node_Client\message(), TeamSpeak3_Node_Channelgroup\message(), TeamSpeak3_Node_Servergroup\message(), TeamSpeak3_Node_Channel\message(), TeamSpeak3_Node_Host\message(), message(), messageCreate(), messageDelete(), messageRead(), TeamSpeak3_Node_Client\modify(), TeamSpeak3_Node_Channel\modify(), TeamSpeak3_Node_Host\modify(), modify(), notifyRegister(), TeamSpeak3_Node_Host\permissionFind(), TeamSpeak3_Node_Client\permOverview(), privilegeKeyCreate(), privilegeKeyDelete(), privilegeKeyUse(), TeamSpeak3_Node_Host\selfPermCheck(), selfPermOverview(), selfUpdate(), selfUpdateLogin(), TeamSpeak3_Node_Client\sendPluginCmd(), TeamSpeak3_Node_Channel\sendPluginCmd(), sendPluginCmd(), TeamSpeak3_Node_Host\serverCreate(), TeamSpeak3_Node_Host\serverDelete(), serverGroupClientAdd(), serverGroupClientDel(), serverGroupClientList(), serverGroupCopy(), serverGroupCreate(), serverGroupDelete(), serverGroupPermAssign(), TeamSpeak3_Node_Host\serverGroupPermAutoAssign(), TeamSpeak3_Node_Host\serverGroupPermAutoRemove(), serverGroupPermList(), serverGroupPermRemove(), serverGroupRename(), TeamSpeak3_Node_Host\serverIdGetByPort(), TeamSpeak3_Node_Host\serverSelect(), TeamSpeak3_Node_Host\serverSelectByPort(), TeamSpeak3_Node_Host\serverStart(), TeamSpeak3_Node_Host\serverStop(), TeamSpeak3_Node_Host\serverStopProcess(), tempPasswordCreate(), tempPasswordDelete(), transferInitDownload(), transferInitUpload(), and transferStop().

+
96  {
+
97  return $this->request($this->prepare($cmd, $params));
+
98  }
+
+
+
+ +
+
+ + + + + +
+ + + + + + + +
TeamSpeak3_Node_Abstract::getParent ()
+
+inherited
+
+ +

Returns the parent object of the current node.

+
Returns
TeamSpeak3_Adapter_ServerQuery
+
+TeamSpeak3_Node_Abstract
+ +

Definition at line 106 of file Abstract.php.

+ +

References TeamSpeak3_Node_Abstract\$parent.

+ +

Referenced by TeamSpeak3_Node_Abstract\__call(), TeamSpeak3_Node_Client\addServerGroup(), TeamSpeak3_Node_Client\avatarDownload(), TeamSpeak3_Node_Client\ban(), channelCreate(), channelDelete(), TeamSpeak3_Node_Servergroup\clientAdd(), TeamSpeak3_Node_Servergroup\clientDel(), TeamSpeak3_Node_Channel\clientList(), TeamSpeak3_Node_Channelgroup\clientList(), TeamSpeak3_Node_Servergroup\clientList(), clientList(), clientMove(), TeamSpeak3_Node_Channel\clientPermAssign(), TeamSpeak3_Node_Channel\clientPermList(), TeamSpeak3_Node_Channel\clientPermRemove(), TeamSpeak3_Node_Servergroup\copy(), TeamSpeak3_Node_Channelgroup\copy(), TeamSpeak3_Node_Client\customInfo(), TeamSpeak3_Node_Servergroup\delete(), TeamSpeak3_Node_Channelgroup\delete(), TeamSpeak3_Node_Channel\delete(), delete(), TeamSpeak3_Node_Client\deleteDb(), TeamSpeak3_Node_Channel\dirCreate(), TeamSpeak3_Node_Channelgroup\fetchNodeList(), TeamSpeak3_Node_Servergroup\fetchNodeList(), TeamSpeak3_Node_Channel\fetchNodeList(), TeamSpeak3_Node_Channel\fileDelete(), TeamSpeak3_Node_Channel\fileInfo(), TeamSpeak3_Node_Channel\fileList(), TeamSpeak3_Node_Channel\fileRename(), TeamSpeak3_Node_Host\getAdapter(), TeamSpeak3_Node_Host\getAdapterHost(), TeamSpeak3_Node_Host\getAdapterPort(), TeamSpeak3_Node_Channel\getLevel(), TeamSpeak3_Node_Channel\getPathway(), TeamSpeak3_Node_Channelgroup\getUniqueId(), TeamSpeak3_Node_Servergroup\getUniqueId(), TeamSpeak3_Node_Client\getUniqueId(), TeamSpeak3_Node_Channel\getUniqueId(), getUniqueId(), TeamSpeak3_Node_Channelgroup\iconDownload(), TeamSpeak3_Node_Servergroup\iconDownload(), TeamSpeak3_Node_Client\iconDownload(), TeamSpeak3_Node_Channel\iconDownload(), TeamSpeak3_Node_Client\infoDb(), TeamSpeak3_Node_Channel\isSpacer(), TeamSpeak3_Node_Client\kick(), TeamSpeak3_Node_Client\memberOf(), TeamSpeak3_Node_Channel\message(), TeamSpeak3_Node_Client\modifyDb(), TeamSpeak3_Node_Client\move(), TeamSpeak3_Node_Channel\move(), TeamSpeak3_Node_Channelgroup\permAssign(), TeamSpeak3_Node_Servergroup\permAssign(), TeamSpeak3_Node_Client\permAssign(), TeamSpeak3_Node_Channel\permAssign(), TeamSpeak3_Node_Servergroup\permList(), TeamSpeak3_Node_Channelgroup\permList(), TeamSpeak3_Node_Client\permList(), TeamSpeak3_Node_Channel\permList(), TeamSpeak3_Node_Channelgroup\permRemove(), TeamSpeak3_Node_Servergroup\permRemove(), TeamSpeak3_Node_Client\permRemove(), TeamSpeak3_Node_Channel\permRemove(), TeamSpeak3_Node_Client\poke(), TeamSpeak3_Node_Abstract\prepare(), TeamSpeak3_Node_Channelgroup\privilegeKeyCreate(), TeamSpeak3_Node_Servergroup\privilegeKeyCreate(), TeamSpeak3_Node_Client\remServerGroup(), TeamSpeak3_Node_Channelgroup\rename(), TeamSpeak3_Node_Servergroup\rename(), TeamSpeak3_Node_Abstract\request(), request(), TeamSpeak3_Node_Channel\sendPluginCmd(), TeamSpeak3_Node_Client\setChannelGroup(), snapshotDeploy(), TeamSpeak3_Node_Channel\spacerGetAlign(), TeamSpeak3_Node_Channel\spacerGetType(), start(), stop(), TeamSpeak3_Node_Channel\subChannelList(), transferInitDownload(), and transferInitUpload().

+
107  {
+
108  return $this->parent;
+
109  }
+
+
+
+ +
+
+ + + + + +
+ + + + + + + +
TeamSpeak3_Node_Abstract::getId ()
+
+inherited
+
+ +

Returns the primary ID of the current node.

+
Returns
integer
+ +

Definition at line 116 of file Abstract.php.

+ +

References TeamSpeak3_Node_Abstract\$nodeId.

+ +

Referenced by TeamSpeak3_Node_Client\ban(), channelDelete(), channelFileList(), TeamSpeak3_Node_Servergroup\clientAdd(), TeamSpeak3_Node_Servergroup\clientDel(), TeamSpeak3_Node_Channel\clientList(), TeamSpeak3_Node_Channelgroup\clientList(), TeamSpeak3_Node_Servergroup\clientList(), TeamSpeak3_Node_Channel\clientPermAssign(), TeamSpeak3_Node_Channel\clientPermList(), TeamSpeak3_Node_Channel\clientPermRemove(), TeamSpeak3_Node_Servergroup\copy(), TeamSpeak3_Node_Channelgroup\copy(), TeamSpeak3_Node_Channelgroup\delete(), TeamSpeak3_Node_Servergroup\delete(), TeamSpeak3_Node_Channel\delete(), delete(), TeamSpeak3_Node_Channel\dirCreate(), TeamSpeak3_Node_Client\fetchNodeInfo(), TeamSpeak3_Node_Channel\fetchNodeInfo(), TeamSpeak3_Node_Channelgroup\fetchNodeList(), TeamSpeak3_Node_Servergroup\fetchNodeList(), TeamSpeak3_Node_Channel\fetchNodeList(), TeamSpeak3_Node_Channel\fileDelete(), TeamSpeak3_Node_Channel\fileInfo(), TeamSpeak3_Node_Channel\fileList(), TeamSpeak3_Node_Channel\fileRename(), TeamSpeak3_Node_Channel\getLevel(), TeamSpeak3_Node_Channel\getPathway(), TeamSpeak3_Node_Channelgroup\getUniqueId(), TeamSpeak3_Node_Servergroup\getUniqueId(), TeamSpeak3_Node_Client\getUniqueId(), TeamSpeak3_Node_Channel\getUniqueId(), getUniqueId(), TeamSpeak3_Node_Client\kick(), TeamSpeak3_Node_Client\message(), TeamSpeak3_Node_Channel\message(), message(), TeamSpeak3_Node_Client\modify(), TeamSpeak3_Node_Channel\modify(), TeamSpeak3_Node_Client\move(), TeamSpeak3_Node_Channel\move(), TeamSpeak3_Node_Channelgroup\permAssign(), TeamSpeak3_Node_Servergroup\permAssign(), TeamSpeak3_Node_Channel\permAssign(), TeamSpeak3_Node_Channelgroup\permList(), TeamSpeak3_Node_Servergroup\permList(), TeamSpeak3_Node_Channel\permList(), TeamSpeak3_Node_Channelgroup\permRemove(), TeamSpeak3_Node_Servergroup\permRemove(), TeamSpeak3_Node_Channel\permRemove(), TeamSpeak3_Node_Client\poke(), TeamSpeak3_Node_Channelgroup\privilegeKeyCreate(), TeamSpeak3_Node_Servergroup\privilegeKeyCreate(), TeamSpeak3_Node_Channelgroup\rename(), TeamSpeak3_Node_Servergroup\rename(), request(), TeamSpeak3_Node_Client\sendPluginCmd(), TeamSpeak3_Node_Channel\sendPluginCmd(), sortGroupList(), TeamSpeak3_Node_Channel\spacerGetAlign(), TeamSpeak3_Node_Channel\spacerGetType(), start(), stop(), and TeamSpeak3_Node_Channel\subChannelList().

+
117  {
+
118  return $this->nodeId;
+
119  }
+
+
+
+ +
+
+ + + + + +
+ + + + + + + + +
TeamSpeak3_Node_Abstract::iconIsLocal ( $key)
+
+inherited
+
+ +

Returns TRUE if the node icon has a local source.

+
Parameters
+ + +
string$key
+
+
+
Returns
boolean
+ +

Definition at line 127 of file Abstract.php.

+ +

Referenced by TeamSpeak3_Node_Channelgroup\iconDownload(), TeamSpeak3_Node_Servergroup\iconDownload(), TeamSpeak3_Node_Client\iconDownload(), TeamSpeak3_Node_Channel\iconDownload(), and iconDownload().

+
128  {
+
129  return ($this[$key] > 0 && $this[$key] < 1000) ? TRUE : FALSE;
+
130  }
+
+
+
+ +
+
+ + + + + +
+ + + + + + + + +
TeamSpeak3_Node_Abstract::iconGetName ( $key)
+
+inherited
+
+ +

Returns the internal path of the node icon.

+
Parameters
+ + +
string$key
+
+
+
Returns
TeamSpeak3_Helper_String
+ +

Definition at line 138 of file Abstract.php.

+ +

Referenced by TeamSpeak3_Node_Abstract\getInfo(), TeamSpeak3_Node_Channelgroup\iconDownload(), TeamSpeak3_Node_Servergroup\iconDownload(), TeamSpeak3_Node_Client\iconDownload(), TeamSpeak3_Node_Channel\iconDownload(), and iconDownload().

+
139  {
+
140  $iconid = ($this[$key] < 0) ? (pow(2, 32))-($this[$key]*-1) : $this[$key];
+
141 
+
142  return new TeamSpeak3_Helper_String("/icon_" . $iconid);
+
143  }
+
+
+
+ +
+
+ + + + + +
+ + + + + + + + +
TeamSpeak3_Node_Abstract::getClass ( $prefix = "ts3_")
+
+inherited
+
+ +

Returns a possible classname for the node which can be used as a HTML property.

+
Parameters
+ + +
string$prefix
+
+
+
Returns
string
+ +

Definition at line 151 of file Abstract.php.

+ +

References TeamSpeak3_Helper_String\factory().

+
152  {
+
153  if($this instanceof TeamSpeak3_Node_Channel && $this->isSpacer())
+
154  {
+
155  return $prefix . "spacer";
+
156  }
+
157  elseif($this instanceof TeamSpeak3_Node_Client && $this["client_type"])
+
158  {
+
159  return $prefix . "query";
+
160  }
+
161 
+
162  return $prefix . TeamSpeak3_Helper_String::factory(get_class($this))->section("_", 2)->toLower();
+
163  }
+
+
+
+ +
+
+ + + + + +
+ + + + + + + + +
TeamSpeak3_Node_Abstract::getViewer (TeamSpeak3_Viewer_Interface $viewer)
+
+inherited
+
+ +

Returns the HTML code to display a TeamSpeak 3 viewer.

+
Parameters
+ + +
TeamSpeak3_Viewer_Interface$viewer
+
+
+
Returns
string
+ +

Definition at line 192 of file Abstract.php.

+ +

References TeamSpeak3_Viewer_Interface\fetchObject().

+
193  {
+
194  $html = $viewer->fetchObject($this);
+
195 
+
196  $iterator = new RecursiveIteratorIterator($this, RecursiveIteratorIterator::SELF_FIRST);
+
197 
+
198  foreach($iterator as $node)
+
199  {
+
200  $siblings = array();
+
201 
+
202  for($level = 0; $level < $iterator->getDepth(); $level++)
+
203  {
+
204  $siblings[] = ($iterator->getSubIterator($level)->hasNext()) ? 1 : 0;
+
205  }
+
206 
+
207  $siblings[] = (!$iterator->getSubIterator($level)->hasNext()) ? 1 : 0;
+
208 
+
209  $html .= $viewer->fetchObject($node, $siblings);
+
210  }
+
211 
+
212  return $html;
+
213  }
+
+
+
+ +
+
+ + + + + +
+ + + + + + + + + + + + + + + + + + +
TeamSpeak3_Node_Abstract::filterList (array $nodes = array(),
array $rules = array() 
)
+
+protectedinherited
+
+ +

Filters given node list array using specified filter rules.

+
Parameters
+ + + +
array$nodes
array$rules
+
+
+
Returns
array
+ +

Definition at line 222 of file Abstract.php.

+ +

Referenced by channelGroupList(), channelList(), TeamSpeak3_Node_Channel\clientList(), clientList(), serverGroupList(), TeamSpeak3_Node_Host\serverList(), and TeamSpeak3_Node_Channel\subChannelList().

+
223  {
+
224  if(!empty($rules))
+
225  {
+
226  foreach($nodes as $node)
+
227  {
+
228  if(!$node instanceof TeamSpeak3_Node_Abstract) continue;
+
229 
+
230  $props = $node->getInfo(FALSE);
+
231  $props = array_intersect_key($props, $rules);
+
232  $match = TRUE;
+
233 
+
234  foreach($props as $key => $val)
+
235  {
+
236  if($val instanceof TeamSpeak3_Helper_String)
+
237  {
+
238  $match = $val->contains($rules[$key], TRUE);
+
239  }
+
240  else
+
241  {
+
242  $match = $val == $rules[$key];
+
243  }
+
244 
+
245  if($match === FALSE)
+
246  {
+
247  unset($nodes[$node->getId()]);
+
248  }
+
249  }
+
250  }
+
251  }
+
252 
+
253  return $nodes;
+
254  }
+
+
+
+ +
+
+ + + + + +
+ + + + + + + + + + + + + + + + + + +
TeamSpeak3_Node_Abstract::getInfo ( $extend = TRUE,
 $convert = FALSE 
)
+
+inherited
+
+ +

Returns all information available on this node.

+

If $convert is enabled, some property values will be converted to human-readable values.

+
Parameters
+ + + +
boolean$extend
boolean$convert
+
+
+
Returns
array
+ +

Definition at line 264 of file Abstract.php.

+ +

References TeamSpeak3_Node_Abstract\$nodeInfo, TeamSpeak3_Helper_Convert\bytes(), TeamSpeak3_Helper_String\factory(), TeamSpeak3_Node_Abstract\fetchNodeInfo(), TeamSpeak3_Node_Abstract\iconGetName(), TeamSpeak3_Helper_Convert\seconds(), and TeamSpeak3_Helper_Convert\version().

+
265  {
+
266  if($extend)
+
267  {
+
268  $this->fetchNodeInfo();
+
269  }
+
270 
+
271  if($convert)
+
272  {
+
273  $info = $this->nodeInfo;
+
274 
+
275  foreach($info as $key => $val)
+
276  {
+ +
278 
+
279  if($key->contains("_bytes_"))
+
280  {
+
281  $info[$key->toString()] = TeamSpeak3_Helper_Convert::bytes($val);
+
282  }
+
283  elseif($key->contains("_bandwidth_"))
+
284  {
+
285  $info[$key->toString()] = TeamSpeak3_Helper_Convert::bytes($val) . "/s";
+
286  }
+
287  elseif($key->contains("_packets_"))
+
288  {
+
289  $info[$key->toString()] = number_format($val, null, null, ".");
+
290  }
+
291  elseif($key->contains("_packetloss_"))
+
292  {
+
293  $info[$key->toString()] = sprintf("%01.2f", floatval($val->toString())*100) . "%";
+
294  }
+
295  elseif($key->endsWith("_uptime"))
+
296  {
+
297  $info[$key->toString()] = TeamSpeak3_Helper_Convert::seconds($val);
+
298  }
+
299  elseif($key->endsWith("_version"))
+
300  {
+
301  $info[$key->toString()] = TeamSpeak3_Helper_Convert::version($val);
+
302  }
+
303  elseif($key->endsWith("_icon_id"))
+
304  {
+
305  $info[$key->toString()] = $this->iconGetName($key)->filterDigits();
+
306  }
+
307  }
+
308 
+
309  return $info;
+
310  }
+
311 
+
312  return $this->nodeInfo;
+
313  }
+
+
+
+ +
+
+ + + + + +
+ + + + + + + + + + + + + + + + + + +
TeamSpeak3_Node_Abstract::getProperty ( $property,
 $default = null 
)
+
+inherited
+
+ +

Returns the specified property or a pre-defined default value from the node info array.

+
Parameters
+ + + +
string$property
mixed$default
+
+
+
Returns
mixed
+ +

Definition at line 322 of file Abstract.php.

+ +

References TeamSpeak3_Node_Abstract\fetchNodeInfo(), and TeamSpeak3_Node_Abstract\offsetExists().

+ +

Referenced by sortClientList(), and sortGroupList().

+
323  {
+
324  if(!$this->offsetExists($property))
+
325  {
+
326  $this->fetchNodeInfo();
+
327  }
+
328 
+
329  if(!$this->offsetExists($property))
+
330  {
+
331  return $default;
+
332  }
+
333 
+
334  return $this->nodeInfo[(string) $property];
+
335  }
+
+
+
+ +
+
+ + + + + +
+ + + + + + + +
TeamSpeak3_Node_Abstract::toString ()
+
+inherited
+
+ +

Returns a string representation of this node.

+
Returns
string
+ +

Definition at line 352 of file Abstract.php.

+ +

References TeamSpeak3_Node_Abstract\__toString().

+
353  {
+
354  return $this->__toString();
+
355  }
+
+
+
+ +
+
+ + + + + +
+ + + + + + + +
TeamSpeak3_Node_Abstract::toArray ()
+
+inherited
+
+ +

Returns an assoc array filled with current node info properties.

+
Returns
array
+ +

Definition at line 362 of file Abstract.php.

+ +

References TeamSpeak3_Node_Abstract\$nodeList.

+ +

Referenced by channelFileInfo().

+
363  {
+
364  return $this->nodeList;
+
365  }
+
+
+
+ +
+
+ + + + + +
+ + + + + + + + + + + + + + + + + + +
TeamSpeak3_Node_Abstract::__call ( $name,
array $args 
)
+
+inherited
+
+ +

Called whenever we're using an unknown method.

+
Parameters
+ + + +
string$name
array$args
+
+
+
Exceptions
+ + +
TeamSpeak3_Node_Exception
+
+
+
Returns
mixed
+ +

Definition at line 375 of file Abstract.php.

+ +

References TeamSpeak3_Node_Abstract\getParent().

+
376  {
+
377  if($this->getParent() instanceof TeamSpeak3_Node_Abstract)
+
378  {
+
379  return call_user_func_array(array($this->getParent(), $name), $args);
+
380  }
+
381 
+
382  throw new TeamSpeak3_Node_Exception("node method '" . $name . "()' does not exist");
+
383  }
+
+
+
+ +
+
+ + + + + +
+ + + + + + + + + + + + + + + + + + +
TeamSpeak3_Node_Abstract::setStorage ( $key,
 $val 
)
+
+protectedinherited
+
+ +

Writes data to the internal storage array.

+
Parameters
+ + + +
string$key
mixed$val
+
+
+
Returns
void
+ +

Definition at line 392 of file Abstract.php.

+ +

Referenced by TeamSpeak3_Node_Host\login(), TeamSpeak3_Node_Host\serverSelect(), TeamSpeak3_Node_Host\serverSelectByPort(), TeamSpeak3_Node_Host\setExcludeQueryClients(), TeamSpeak3_Node_Host\setLoadClientlistFirst(), TeamSpeak3_Node_Host\setPredefinedQueryName(), and TeamSpeak3_Node_Host\setUseOfflineAsVirtual().

+
393  {
+
394  $this->storage[$key] = $val;
+
395  }
+
+
+
+ +
+
+ + + + + +
+ + + + + + + + + + + + + + + + + + +
TeamSpeak3_Node_Abstract::getStorage ( $key,
 $default = null 
)
+
+protectedinherited
+
+ +

Returns data from the internal storage array.

+
Parameters
+ + + +
string$key
mixed$default
+
+
+
Returns
mixed
+ +

Definition at line 404 of file Abstract.php.

+ +

Referenced by TeamSpeak3_Node_Host\__wakeup().

+
405  {
+
406  return (array_key_exists($key, $this->storage) && !empty($this->storage[$key])) ? $this->storage[$key] : $default;
+
407  }
+
+
+
+ +
+
+ + + + + +
+ + + + + + + + +
TeamSpeak3_Node_Abstract::delStorage ( $key)
+
+protectedinherited
+
+ +

Deletes data from the internal storage array.

+
Parameters
+ + +
string$key
+
+
+
Returns
void
+ +

Definition at line 415 of file Abstract.php.

+ +

Referenced by TeamSpeak3_Node_Host\logout(), and TeamSpeak3_Node_Host\serverDeselect().

+
416  {
+
417  unset($this->storage[$key]);
+
418  }
+
+
+
+ +
+
+ + + + + +
+ + + + + + + +
TeamSpeak3_Node_Abstract::__sleep ()
+
+inherited
+
+ +

Commit pending data.

+
Returns
array
+ +

Definition at line 425 of file Abstract.php.

+
426  {
+
427  return array("parent", "storage", "nodeId");
+
428  }
+
+
+
+ +
+
+ + + + + +
+ + + + + + + +
TeamSpeak3_Node_Abstract::resetNodeInfo ()
+
+protectedinherited
+
+ +

+ +

Definition at line 449 of file Abstract.php.

+ +

Referenced by TeamSpeak3_Node_Client\modify(), TeamSpeak3_Node_Channel\modify(), TeamSpeak3_Node_Host\modify(), and modify().

+
450  {
+
451  $this->nodeInfo = array();
+
452  }
+
+
+
+ +
+
+ + + + + +
+ + + + + + + +
TeamSpeak3_Node_Abstract::verifyNodeList ()
+
+protectedinherited
+
+
+ +
+
+ + + + + +
+ + + + + + + +
TeamSpeak3_Node_Abstract::resetNodeList ()
+
+protectedinherited
+
+ +

+ +

Definition at line 468 of file Abstract.php.

+ +

Referenced by channelList(), channelListReset(), clientList(), clientListReset(), TeamSpeak3_Node_Host\serverList(), and TeamSpeak3_Node_Host\serverListReset().

+
469  {
+
470  $this->nodeList = null;
+
471  }
+
+
+
+ +
+
+ + + + + +
+ + + + + + + +
TeamSpeak3_Node_Abstract::count ()
+
+inherited
+
+ +

+ +

Definition at line 476 of file Abstract.php.

+ +

References TeamSpeak3_Node_Abstract\verifyNodeList().

+ +

Referenced by channelFileList(), channelGroupCopy(), TeamSpeak3_Node_Abstract\hasNext(), permRemoveAny(), and serverGroupCopy().

+
477  {
+
478  $this->verifyNodeList();
+
479 
+
480  return count($this->nodeList);
+
481  }
+
+
+
+ + + +
+
+ + + + + +
+ + + + + + + +
TeamSpeak3_Node_Abstract::getChildren ()
+
+inherited
+
+ +

+ +

Definition at line 496 of file Abstract.php.

+ +

References TeamSpeak3_Node_Abstract\current(), and TeamSpeak3_Node_Abstract\verifyNodeList().

+
497  {
+
498  $this->verifyNodeList();
+
499 
+
500  return $this->current();
+
501  }
+
+
+
+ +
+
+ + + + + +
+ + + + + + + +
TeamSpeak3_Node_Abstract::hasChildren ()
+
+inherited
+
+ +

+ +

Definition at line 506 of file Abstract.php.

+ +

References TeamSpeak3_Node_Abstract\current(), and TeamSpeak3_Node_Abstract\verifyNodeList().

+
507  {
+
508  $this->verifyNodeList();
+
509 
+
510  return $this->current()->count() > 0;
+
511  }
+
+
+
+ +
+
+ + + + + +
+ + + + + + + +
TeamSpeak3_Node_Abstract::hasNext ()
+
+inherited
+
+ +

+ +

Definition at line 516 of file Abstract.php.

+ +

References TeamSpeak3_Node_Abstract\count(), TeamSpeak3_Node_Abstract\key(), and TeamSpeak3_Node_Abstract\verifyNodeList().

+
517  {
+
518  $this->verifyNodeList();
+
519 
+
520  return $this->key()+1 < $this->count();
+
521  }
+
+
+
+ +
+
+ + + + + +
+ + + + + + + +
TeamSpeak3_Node_Abstract::key ()
+
+inherited
+
+ +

+ +

Definition at line 526 of file Abstract.php.

+ +

References TeamSpeak3_Node_Abstract\verifyNodeList().

+ +

Referenced by TeamSpeak3_Node_Abstract\hasNext(), and TeamSpeak3_Node_Abstract\valid().

+
527  {
+
528  $this->verifyNodeList();
+
529 
+
530  return key($this->nodeList);
+
531  }
+
+
+
+ +
+
+ + + + + +
+ + + + + + + +
TeamSpeak3_Node_Abstract::valid ()
+
+inherited
+
+ +

+ +

Definition at line 536 of file Abstract.php.

+ +

References TeamSpeak3_Node_Abstract\key(), and TeamSpeak3_Node_Abstract\verifyNodeList().

+
537  {
+
538  $this->verifyNodeList();
+
539 
+
540  return $this->key() !== null;
+
541  }
+
+
+
+ +
+
+ + + + + +
+ + + + + + + +
TeamSpeak3_Node_Abstract::next ()
+
+inherited
+
+ +

+ +

Definition at line 546 of file Abstract.php.

+ +

References TeamSpeak3_Node_Abstract\verifyNodeList().

+
547  {
+
548  $this->verifyNodeList();
+
549 
+
550  return next($this->nodeList);
+
551  }
+
+
+
+ +
+
+ + + + + +
+ + + + + + + +
TeamSpeak3_Node_Abstract::rewind ()
+
+inherited
+
+ +

+ +

Definition at line 556 of file Abstract.php.

+ +

References TeamSpeak3_Node_Abstract\verifyNodeList().

+
557  {
+
558  $this->verifyNodeList();
+
559 
+
560  return reset($this->nodeList);
+
561  }
+
+
+
+ +
+
+ + + + + +
+ + + + + + + + +
TeamSpeak3_Node_Abstract::offsetExists ( $offset)
+
+inherited
+
+ +

+ +

Definition at line 566 of file Abstract.php.

+ +

Referenced by TeamSpeak3_Node_Abstract\getProperty(), and TeamSpeak3_Node_Abstract\offsetGet().

+
567  {
+
568  return array_key_exists((string) $offset, $this->nodeInfo) ? TRUE : FALSE;
+
569  }
+
+
+
+ +
+
+ + + + + +
+ + + + + + + + +
TeamSpeak3_Node_Abstract::offsetGet ( $offset)
+
+inherited
+
+ +

+ +

Definition at line 574 of file Abstract.php.

+ +

References TeamSpeak3_Node_Abstract\fetchNodeInfo(), and TeamSpeak3_Node_Abstract\offsetExists().

+ +

Referenced by TeamSpeak3_Node_Abstract\__get().

+
575  {
+
576  if(!$this->offsetExists($offset))
+
577  {
+
578  $this->fetchNodeInfo();
+
579  }
+
580 
+
581  if(!$this->offsetExists($offset))
+
582  {
+
583  throw new TeamSpeak3_Adapter_ServerQuery_Exception("invalid parameter", 0x602);
+
584  }
+
585 
+
586  return $this->nodeInfo[(string) $offset];
+
587  }
+
+
+
+ +
+
+ + + + + +
+ + + + + + + + + + + + + + + + + + +
TeamSpeak3_Node_Abstract::offsetSet ( $offset,
 $value 
)
+
+inherited
+
+ +

+ +

Definition at line 592 of file Abstract.php.

+ +

Referenced by TeamSpeak3_Node_Abstract\__set().

+
593  {
+
594  if(method_exists($this, "modify"))
+
595  {
+
596  return $this->modify(array((string) $offset => $value));
+
597  }
+
598 
+
599  throw new TeamSpeak3_Node_Exception("node '" . get_class($this) . "' is read only");
+
600  }
+
+
+
+ +
+
+ + + + + +
+ + + + + + + + +
TeamSpeak3_Node_Abstract::offsetUnset ( $offset)
+
+inherited
+
+ +

+ +

Definition at line 605 of file Abstract.php.

+
606  {
+
607  unset($this->nodeInfo[(string) $offset]);
+
608  }
+
+
+
+ +
+
+ + + + + +
+ + + + + + + + +
TeamSpeak3_Node_Abstract::__get ( $offset)
+
+inherited
+
+ +

+ +

Definition at line 613 of file Abstract.php.

+ +

References TeamSpeak3_Node_Abstract\offsetGet().

+
614  {
+
615  return $this->offsetGet($offset);
+
616  }
+
+
+
+ +
+
+ + + + + +
+ + + + + + + + + + + + + + + + + + +
TeamSpeak3_Node_Abstract::__set ( $offset,
 $value 
)
+
+inherited
+
+ +

+ +

Definition at line 621 of file Abstract.php.

+ +

References TeamSpeak3_Node_Abstract\offsetSet().

+
622  {
+
623  $this->offsetSet($offset, $value);
+
624  }
+
+
+
+

Member Data Documentation

+ +
+
+ + + + + +
+ + + + +
TeamSpeak3_Node_Server::$channelList = null
+
+protected
+
+ +

+ +

Definition at line 37 of file Server.php.

+ +
+
+ +
+
+ + + + + +
+ + + + +
TeamSpeak3_Node_Server::$clientList = null
+
+protected
+
+ +

+ +

Definition at line 42 of file Server.php.

+ +
+
+ +
+
+ + + + + +
+ + + + +
TeamSpeak3_Node_Server::$sgroupList = null
+
+protected
+
+ +

+ +

Definition at line 47 of file Server.php.

+ +
+
+ +
+
+ + + + + +
+ + + + +
TeamSpeak3_Node_Server::$cgroupList = null
+
+protected
+
+ +

+ +

Definition at line 52 of file Server.php.

+ +
+
+ +
+
+ + + + + +
+ + + + +
TeamSpeak3_Node_Abstract::$parent = null
+
+protectedinherited
+
+ +

+ +

Definition at line 37 of file Abstract.php.

+ +

Referenced by TeamSpeak3_Node_Abstract\getParent().

+ +
+
+ + + +
+
+ + + + + +
+ + + + +
TeamSpeak3_Node_Abstract::$nodeId = 0x00
+
+protectedinherited
+
+ +

+ +

Definition at line 47 of file Abstract.php.

+ +

Referenced by TeamSpeak3_Node_Abstract\getId().

+ +
+
+ +
+
+ + + + + +
+ + + + +
TeamSpeak3_Node_Abstract::$nodeList = null
+
+protectedinherited
+
+ +

+ +

Definition at line 52 of file Abstract.php.

+ +

Referenced by TeamSpeak3_Node_Abstract\toArray().

+ +
+
+ +
+
+ + + + + +
+ + + + +
TeamSpeak3_Node_Abstract::$nodeInfo = array()
+
+protectedinherited
+
+ +

+ +

Definition at line 57 of file Abstract.php.

+ +

Referenced by TeamSpeak3_Node_Abstract\getInfo().

+ +
+
+ +
+
+ + + + + +
+ + + + +
TeamSpeak3_Node_Abstract::$storage = array()
+
+protectedinherited
+
+ +

+ +

Definition at line 62 of file Abstract.php.

+ +
+
+
The documentation for this class was generated from the following file: +
+
+ + + + diff --git a/lib/docs/html/class_team_speak3___node___server.js b/lib/docs/html/class_team_speak3___node___server.js new file mode 100644 index 0000000..debdf8a --- /dev/null +++ b/lib/docs/html/class_team_speak3___node___server.js @@ -0,0 +1,186 @@ +var class_team_speak3___node___server = +[ + [ "__construct", "class_team_speak3___node___server.html#a5daf725f479aa4f401739c6af5b86ea2", null ], + [ "request", "class_team_speak3___node___server.html#ad690f9ace5a0cb9f3789158b77c8d1f6", null ], + [ "channelList", "class_team_speak3___node___server.html#af89e63cf4213e41524cfcf522f46493d", null ], + [ "channelListReset", "class_team_speak3___node___server.html#aa6e9bfacd257844a49eb0e2444f468bb", null ], + [ "channelCreate", "class_team_speak3___node___server.html#ad99b7e328bc70ad4fdbf623d4bc0ec08", null ], + [ "channelDelete", "class_team_speak3___node___server.html#a2fda0933d13a8ffad575bf5c33be6aaa", null ], + [ "channelMove", "class_team_speak3___node___server.html#a318977af4cbbe51289e68bdbd57a9342", null ], + [ "channelIsSpacer", "class_team_speak3___node___server.html#af1ace8782c92dabd6bf1d5fc2476295a", null ], + [ "channelSpacerCreate", "class_team_speak3___node___server.html#aba6de5270fed2d117ad5cdb3f5503b43", null ], + [ "channelSpacerGetType", "class_team_speak3___node___server.html#a4b65797b14ce1dbc5ab123840216d8d5", null ], + [ "channelSpacerGetAlign", "class_team_speak3___node___server.html#a34911a30ab894a628124c6e8ec3131f1", null ], + [ "channelPermList", "class_team_speak3___node___server.html#abf2cdfe68a150d47712165b91db12bbc", null ], + [ "channelPermAssign", "class_team_speak3___node___server.html#a912200d0dad1ac57581786d8f09948e4", null ], + [ "channelPermRemove", "class_team_speak3___node___server.html#a7d88676f4ef80466b1a24945c49a006b", null ], + [ "channelClientPermList", "class_team_speak3___node___server.html#a3bfc6b821cabd6b26dfdc32f70111161", null ], + [ "channelClientPermAssign", "class_team_speak3___node___server.html#a4a88f38a81880b5c6a33cb5d084eb56a", null ], + [ "channelClientPermRemove", "class_team_speak3___node___server.html#a16866a89acc0ebab56ac281fd481fa5c", null ], + [ "channelFileList", "class_team_speak3___node___server.html#ade91ccd595c575785b73e6676195375d", null ], + [ "channelFileInfo", "class_team_speak3___node___server.html#a42480bcff5af21ef8cc4af469636eadd", null ], + [ "channelFileRename", "class_team_speak3___node___server.html#a2005bdcfe3f564880c3be8d9249f9419", null ], + [ "channelFileDelete", "class_team_speak3___node___server.html#adf66cf57917238b350e42f121bed7b12", null ], + [ "channelDirCreate", "class_team_speak3___node___server.html#a8ec028d2a9dbd36794015e8614831c8d", null ], + [ "channelGetLevel", "class_team_speak3___node___server.html#aac1d19d84aba2017c807ab3ccabe9d6b", null ], + [ "channelGetPathway", "class_team_speak3___node___server.html#a9f0d8234a8274bef62c40954c4dab731", null ], + [ "channelGetById", "class_team_speak3___node___server.html#ab384bb6d76c0dfb582c877852ddba1dc", null ], + [ "channelGetByName", "class_team_speak3___node___server.html#a93c751a3d29014c0c7c6ec67ad4ae15a", null ], + [ "clientList", "class_team_speak3___node___server.html#a194c9f52336862f3168c408c413d4279", null ], + [ "clientListReset", "class_team_speak3___node___server.html#acc00747588b6b1320c7f08f872f65fcf", null ], + [ "clientFind", "class_team_speak3___node___server.html#ac42ed34f0e7faeea2f5c8a56196f2eef", null ], + [ "clientListDb", "class_team_speak3___node___server.html#ab2f0462d9820e266e91bccb67529311d", null ], + [ "clientCountDb", "class_team_speak3___node___server.html#a899389702e061146235d7204bc56a332", null ], + [ "clientInfoDb", "class_team_speak3___node___server.html#a3938d6ae2889a541277558b87d21991f", null ], + [ "clientFindDb", "class_team_speak3___node___server.html#ae8648992f4e8d470f474b280870243a8", null ], + [ "clientCount", "class_team_speak3___node___server.html#ae23d433b89992fa85371562db35763c1", null ], + [ "clientGetById", "class_team_speak3___node___server.html#ad7c9c04b99162b40afe39178a0d39632", null ], + [ "clientGetByName", "class_team_speak3___node___server.html#a3bd7e2be71de3187099ef1446f1a186b", null ], + [ "clientGetByUid", "class_team_speak3___node___server.html#ad6e7bf183d0e904b1507c375e3aabde8", null ], + [ "clientGetByDbid", "class_team_speak3___node___server.html#acdaab3b579e68badc7849f615cf1f1c2", null ], + [ "clientGetNameByUid", "class_team_speak3___node___server.html#a0a49ab51e9518d50606299944c143a9b", null ], + [ "clientGetIdsByUid", "class_team_speak3___node___server.html#a8aaa42f632bbf8760d1666756cd4b744", null ], + [ "clientGetNameByDbid", "class_team_speak3___node___server.html#a149e1b1857e51c8b9ebfb0818b5bc2f7", null ], + [ "clientGetServerGroupsByDbid", "class_team_speak3___node___server.html#a454f7bcafaf0bf2aa4c073d5267eb2c3", null ], + [ "clientMove", "class_team_speak3___node___server.html#a35aee62e8ba86d0ea80ea5cafd9c5801", null ], + [ "clientKick", "class_team_speak3___node___server.html#a8ddb527606200718f41d0ef06beb40b8", null ], + [ "clientPoke", "class_team_speak3___node___server.html#a2bd6ce432c9dd08e550289b1cc0a16bd", null ], + [ "clientBan", "class_team_speak3___node___server.html#aec861d4290728b6048fea64db528fc7a", null ], + [ "clientModifyDb", "class_team_speak3___node___server.html#acb9a0d106c96e3367b3c7484519b5cbb", null ], + [ "clientDeleteDb", "class_team_speak3___node___server.html#a5ca709d4b3a73686459ef0b09bd7d71a", null ], + [ "clientSetChannelGroup", "class_team_speak3___node___server.html#a101d9234082d47f359ea39ca7bc1c0bf", null ], + [ "clientPermList", "class_team_speak3___node___server.html#aa2f308ca18a93f602af0e38155c48deb", null ], + [ "clientPermAssign", "class_team_speak3___node___server.html#a387de111424128521346a04cd7be8710", null ], + [ "clientPermRemove", "class_team_speak3___node___server.html#a7ff9f7bff622429c810933b53454adb3", null ], + [ "serverGroupList", "class_team_speak3___node___server.html#a0d3b40b9337ff37e5b2164d60ddd4e28", null ], + [ "serverGroupListReset", "class_team_speak3___node___server.html#aec6950365d137da98fb2acd94102f231", null ], + [ "serverGroupCreate", "class_team_speak3___node___server.html#a086d6141683f7aa0a6addbe13ae6da58", null ], + [ "serverGroupCopy", "class_team_speak3___node___server.html#aadd60ec1808c607b6ad6a62d95f8bacf", null ], + [ "serverGroupRename", "class_team_speak3___node___server.html#a593ea60776cecfce292855f8fdce050d", null ], + [ "serverGroupDelete", "class_team_speak3___node___server.html#a347baec8fce678ab8a8f464f0398ebed", null ], + [ "serverGroupGetById", "class_team_speak3___node___server.html#a8c8a3d44efa6582d80da3e647d934429", null ], + [ "serverGroupGetByName", "class_team_speak3___node___server.html#af44dad10a4123fa928deda53a1452df2", null ], + [ "serverGroupPermList", "class_team_speak3___node___server.html#a2406d3d74974d39b296ec5af4b7643c4", null ], + [ "serverGroupPermAssign", "class_team_speak3___node___server.html#a1625df1060f7b19b5e607174df29406b", null ], + [ "serverGroupPermRemove", "class_team_speak3___node___server.html#a3b7ead504bbc7f2070f46d19e072afd9", null ], + [ "serverGroupClientList", "class_team_speak3___node___server.html#a69f43173d45cc599b05a4e6f9bef5baa", null ], + [ "serverGroupClientAdd", "class_team_speak3___node___server.html#a8d2a092fb314a86b304ad3eb7d0d295b", null ], + [ "serverGroupClientDel", "class_team_speak3___node___server.html#acbd1a4c797a041242eeb5f0ead1e7667", null ], + [ "serverGroupGetProfiles", "class_team_speak3___node___server.html#a78d5842c3b8e9248f8a46df03d041d77", null ], + [ "serverGroupIdentify", "class_team_speak3___node___server.html#aee3bf51303b69cbf9d50202a4864a38b", null ], + [ "channelGroupList", "class_team_speak3___node___server.html#a442c9127e61b6e1d31e368af71443b1a", null ], + [ "channelGroupListReset", "class_team_speak3___node___server.html#a529b1954afa6d9c93eb1c75e4b529a2d", null ], + [ "channelGroupCreate", "class_team_speak3___node___server.html#a9cbda0c1f2afcd8fdcf8b558b7d03e56", null ], + [ "channelGroupCopy", "class_team_speak3___node___server.html#ae4ec84a2bad70c6bc88b13656d2bbea6", null ], + [ "channelGroupRename", "class_team_speak3___node___server.html#a87eed3ba8fc9c48f40b84fb54fbf3584", null ], + [ "channelGroupDelete", "class_team_speak3___node___server.html#aab0725d35c8c4f8c075e85418b9b5955", null ], + [ "channelGroupGetById", "class_team_speak3___node___server.html#a7ddb6b6324cf20c1ec0166d98914670e", null ], + [ "channelGroupGetByName", "class_team_speak3___node___server.html#a12649be6d62d7aa194323bdd144a42c7", null ], + [ "channelGroupPermList", "class_team_speak3___node___server.html#a6866211126530af14d9c60976960b39f", null ], + [ "channelGroupPermAssign", "class_team_speak3___node___server.html#a96f49940c54b63c3611702d701f4d32f", null ], + [ "channelGroupPermRemove", "class_team_speak3___node___server.html#aa16f874d9d2403b4d4182bfb39729ced", null ], + [ "channelGroupClientList", "class_team_speak3___node___server.html#a6a560f0bf64a8c22c1b2542874093ba0", null ], + [ "permReset", "class_team_speak3___node___server.html#a6ee64afd6c312ff8644725823ab0b078", null ], + [ "permRemoveAny", "class_team_speak3___node___server.html#a4064b80b0f7796367e61438ae9a0cd5a", null ], + [ "transferInitUpload", "class_team_speak3___node___server.html#a276cde0701f7051fd3cc33e8f1d304c2", null ], + [ "transferInitDownload", "class_team_speak3___node___server.html#a4e8e46758ad2c7a502c04f22af3e47ca", null ], + [ "transferList", "class_team_speak3___node___server.html#a54a998325257872475957ca2ba62faea", null ], + [ "transferStop", "class_team_speak3___node___server.html#a6c7e742fb77bb0affe7d25dbc5aa1561", null ], + [ "iconDownload", "class_team_speak3___node___server.html#aaeffd8b897c67a8b483eba32d2c63c9c", null ], + [ "iconUpload", "class_team_speak3___node___server.html#aa09963df399797506a9f5107541f826d", null ], + [ "modify", "class_team_speak3___node___server.html#a4829c324cac2866b7748b9ba48ee17e1", null ], + [ "message", "class_team_speak3___node___server.html#a0bbeea2377896171ec7d971de382528f", null ], + [ "messageList", "class_team_speak3___node___server.html#a094080732e7f39c9ac07fbefdcbf5d6e", null ], + [ "messageCreate", "class_team_speak3___node___server.html#af229175f84fc35b20a7e74542b4f48c0", null ], + [ "messageDelete", "class_team_speak3___node___server.html#af5f666e5496fed200ffe2ab4c7da2e70", null ], + [ "messageRead", "class_team_speak3___node___server.html#aba2804d7bb9a1b9994af24c35fcc9484", null ], + [ "snapshotCreate", "class_team_speak3___node___server.html#a2f9a35ca93ed9d7341e131142779acbe", null ], + [ "snapshotDeploy", "class_team_speak3___node___server.html#a30215b7852290912517096a1555ba7ee", null ], + [ "notifyRegister", "class_team_speak3___node___server.html#ab6042c937b2e0b7eccd7dca9c98fe8b6", null ], + [ "notifyUnregister", "class_team_speak3___node___server.html#a46509385b685f0154e04c2774d74652a", null ], + [ "tokenList", "class_team_speak3___node___server.html#a6e9970aec423b74cf392c7259853557b", null ], + [ "privilegeKeyList", "class_team_speak3___node___server.html#ae79c8994a9fa524016a141aad5b14e31", null ], + [ "tokenCreate", "class_team_speak3___node___server.html#a9a0e159ffbacd9bf36a791862732f525", null ], + [ "privilegeKeyCreate", "class_team_speak3___node___server.html#a65f5b13eca06755b6ef96e6bbe80947b", null ], + [ "tokenDelete", "class_team_speak3___node___server.html#a46e722bae91524ef2d2b80a9f4b02cd8", null ], + [ "privilegeKeyDelete", "class_team_speak3___node___server.html#a06d451d9f1f484da9e902eadb52739e4", null ], + [ "tokenUse", "class_team_speak3___node___server.html#a96197181eefbe0489b88294fe46ef715", null ], + [ "privilegeKeyUse", "class_team_speak3___node___server.html#a6cdf7f6012d20caf6b2be3b42ffb5c21", null ], + [ "customSearch", "class_team_speak3___node___server.html#ac81f6d268d0bd65d62adf54fdfb6f74c", null ], + [ "customInfo", "class_team_speak3___node___server.html#ab607dab98be8ad823c6ea639045ceadd", null ], + [ "banList", "class_team_speak3___node___server.html#a6d0211802f5d1248bc69c4fdefa3d417", null ], + [ "banListClear", "class_team_speak3___node___server.html#ad61bc446498a29aeb0f035c8316ee743", null ], + [ "banCreate", "class_team_speak3___node___server.html#a0a2c9e20c88b81275222acdd61a5f8c4", null ], + [ "banDelete", "class_team_speak3___node___server.html#a953aaca1b1d5e024b37221146d04b296", null ], + [ "complaintList", "class_team_speak3___node___server.html#af44418304dbbe76dca50be38e7e394de", null ], + [ "complaintListClear", "class_team_speak3___node___server.html#a2a6d384cf01078cb72cd9f9670cebb57", null ], + [ "complaintCreate", "class_team_speak3___node___server.html#a7d683c16389f1b1d72e38b783638c3c4", null ], + [ "complaintDelete", "class_team_speak3___node___server.html#a72cfe9527297ec1e6536b9c073c0858b", null ], + [ "tempPasswordList", "class_team_speak3___node___server.html#a162441d331999a7fdfc7d8fcd2d8978b", null ], + [ "tempPasswordCreate", "class_team_speak3___node___server.html#a6498965a34fe39e72abc006cfdcf04b8", null ], + [ "tempPasswordDelete", "class_team_speak3___node___server.html#a176d8a85e03314cbe7422749006122b9", null ], + [ "logView", "class_team_speak3___node___server.html#a5a61fde00711fbde340c0917c738d19d", null ], + [ "logAdd", "class_team_speak3___node___server.html#a5a35cfb06bb9e8fbf8d8716a8de1c047", null ], + [ "connectionInfo", "class_team_speak3___node___server.html#a4c13644c69f768e0a449d5d0b7bcd1a9", null ], + [ "delete", "class_team_speak3___node___server.html#ac159e3dff47e2dca9b7baabcd75265a7", null ], + [ "start", "class_team_speak3___node___server.html#a21ce82924bf869c8033ef3fcde598795", null ], + [ "stop", "class_team_speak3___node___server.html#a63a380c17cc49c30093672163b164502", null ], + [ "sendPluginCmd", "class_team_speak3___node___server.html#a7ad80214abca716151ed418dd0a65129", null ], + [ "selfUpdate", "class_team_speak3___node___server.html#a5c94f444f21e92a1a8045256dbe8eda6", null ], + [ "selfUpdateLogin", "class_team_speak3___node___server.html#a3bf58118ecbc54cde9cd4a652d139352", null ], + [ "selfPermOverview", "class_team_speak3___node___server.html#a766abde5e479d793ba266dd680b5ca7b", null ], + [ "fetchNodeList", "class_team_speak3___node___server.html#a3ef412bad6efe2bde9d5ebcf17a7e113", null ], + [ "fetchNodeInfo", "class_team_speak3___node___server.html#a1cf6d79bee67d387752af85f28901dac", null ], + [ "isOnline", "class_team_speak3___node___server.html#adc8a77671ffbf1c7c699da1f3d4d0d12", null ], + [ "isOffline", "class_team_speak3___node___server.html#a55f06b4b0c636dcc41a877edc5a3a7d7", null ], + [ "getUniqueId", "class_team_speak3___node___server.html#a175e7b6d81e8e6c363df445874e5932b", null ], + [ "getIcon", "class_team_speak3___node___server.html#aa2d9831041f8a981349f4a5b92729efe", null ], + [ "getSymbol", "class_team_speak3___node___server.html#a1cc7958a2d747a65c877408a2e0772f2", null ], + [ "__toString", "class_team_speak3___node___server.html#a50f029dcd7ba276c8b9c40c99c50f38d", null ], + [ "prepare", "class_team_speak3___node___server.html#a6589a4fedd410e9cdb55fe20abc410c0", null ], + [ "execute", "class_team_speak3___node___server.html#af6811efc5065b8aadfd6792334ea6977", null ], + [ "getParent", "class_team_speak3___node___server.html#a44618fb948562e89515330e65d08da9a", null ], + [ "getId", "class_team_speak3___node___server.html#a4a0a5545abc2460d1d9b3d6b52d07cbe", null ], + [ "iconIsLocal", "class_team_speak3___node___server.html#aa78cba098574598dd9c0331cac1f39a1", null ], + [ "iconGetName", "class_team_speak3___node___server.html#a02ce34dce8fbf7881ce2323f7af0dca3", null ], + [ "getClass", "class_team_speak3___node___server.html#af6e1416ad2e568f48ff0d85b15b2a673", null ], + [ "getViewer", "class_team_speak3___node___server.html#a3d3f27dab5569edf3a737be080e7c8bc", null ], + [ "filterList", "class_team_speak3___node___server.html#ad826df3c71029ca48839dbe9aa3559b8", null ], + [ "getInfo", "class_team_speak3___node___server.html#af63ae54f10c02ec6b1033425f795fef4", null ], + [ "getProperty", "class_team_speak3___node___server.html#a585728537b56194aeab30b0316126b89", null ], + [ "toString", "class_team_speak3___node___server.html#ac1b521aa7f9871103da5cbb5d3330125", null ], + [ "toArray", "class_team_speak3___node___server.html#acf3c56763859b8adb21379f0cc6394ad", null ], + [ "__call", "class_team_speak3___node___server.html#a63fb203f511e99625428f70f0525950c", null ], + [ "setStorage", "class_team_speak3___node___server.html#a13303ca9275df184348ed7363d9d7c9a", null ], + [ "getStorage", "class_team_speak3___node___server.html#a5a6888304aca8d5f12fecb460b0ef6d2", null ], + [ "delStorage", "class_team_speak3___node___server.html#afbed20ee78d7e5a38097078dd91e70fd", null ], + [ "__sleep", "class_team_speak3___node___server.html#a19b5c8aaac5ef0af2f1393bffea186c5", null ], + [ "resetNodeInfo", "class_team_speak3___node___server.html#a266578bece0506453e1f1bfba1f08966", null ], + [ "verifyNodeList", "class_team_speak3___node___server.html#ac66aeb30418e385a5727c191bb8df87d", null ], + [ "resetNodeList", "class_team_speak3___node___server.html#a9ead519e8396990ba30d79d6bed9d286", null ], + [ "count", "class_team_speak3___node___server.html#ad22d04a2800ae672f6117de3afb0e9c4", null ], + [ "current", "class_team_speak3___node___server.html#a1c78dbb54df73f8c5dabe41ebd476207", null ], + [ "getChildren", "class_team_speak3___node___server.html#a4b9dee48bb72f0eab8b9d4b0ea25c5f4", null ], + [ "hasChildren", "class_team_speak3___node___server.html#a7769506879dac3170344d8e59218b644", null ], + [ "hasNext", "class_team_speak3___node___server.html#ad9aee4153360fd8139f6b0d68efff56f", null ], + [ "key", "class_team_speak3___node___server.html#adb87ddbef3247f346c2623f4d91981a1", null ], + [ "valid", "class_team_speak3___node___server.html#a1b0100e4a548e9464d75dcbfe6ac297a", null ], + [ "next", "class_team_speak3___node___server.html#a3273e5078ee49a4bd55620327ed09a5e", null ], + [ "rewind", "class_team_speak3___node___server.html#a9c416b77eeea1ecec6652936703d9ff7", null ], + [ "offsetExists", "class_team_speak3___node___server.html#ad0d64388e2a374203fa16760b923b087", null ], + [ "offsetGet", "class_team_speak3___node___server.html#a716e7512816cf490e5a16ec307f7d889", null ], + [ "offsetSet", "class_team_speak3___node___server.html#a5e9be0418e0cc969d47f4b7475adb21d", null ], + [ "offsetUnset", "class_team_speak3___node___server.html#a732408c9a027db531af8ecce82401c07", null ], + [ "__get", "class_team_speak3___node___server.html#ac8ab685826ff08e853de2aebad9df459", null ], + [ "__set", "class_team_speak3___node___server.html#a14930274e5498a5a8816ef751ff87946", null ], + [ "$channelList", "class_team_speak3___node___server.html#aec962cb88b2aff33e055e9d62992bbd8", null ], + [ "$clientList", "class_team_speak3___node___server.html#a3f25f20028741a14cc652779159707cb", null ], + [ "$sgroupList", "class_team_speak3___node___server.html#a9c4ce4a5649ba8aa595a7f2fdafdf951", null ], + [ "$cgroupList", "class_team_speak3___node___server.html#ae5a5b2061a93f754afbb410f28e09415", null ], + [ "$parent", "class_team_speak3___node___server.html#a14a79cc9ca202ba4dbfc054f0c18583f", null ], + [ "$server", "class_team_speak3___node___server.html#acadc746cd7eb244d61f195494924f6b8", null ], + [ "$nodeId", "class_team_speak3___node___server.html#ac1bdee23c7d066edf3d6cb8e75999887", null ], + [ "$nodeList", "class_team_speak3___node___server.html#a37b39fa104ce36c0f0ea142934c05346", null ], + [ "$nodeInfo", "class_team_speak3___node___server.html#a50699be5fe1e43f7ae2e528db3c1098b", null ], + [ "$storage", "class_team_speak3___node___server.html#a33efbacf1a9aa094ccc39b0b25f3d369", null ] +]; \ No newline at end of file diff --git a/lib/docs/html/class_team_speak3___node___server.png b/lib/docs/html/class_team_speak3___node___server.png new file mode 100644 index 0000000000000000000000000000000000000000..17defb29af00395e01f6ecca9bfcd70d1d20595a GIT binary patch literal 1829 zcmb7FdstFu7)Pf@4TNlunKq5)axH6O-qY0Zf_b6LGpAN)npSGwh$1z0E6h!ktaM&7 zmz8!}+Dvpxq?Jn+c}Wu#3&)f&74a5|DC~1>`={;M_C3#e&+m86`@PTmyuaT$U)C-^ zPxK1I6$k_Z?L~C+M<6tD0G~y^2cnKUw-MY7cKHOjtJP`%2PD%wPqG;R{eCq!Hy8TW z6#^CZ9$?5_24a}7A5A$=)IEO*rN5H0f;-&b!FCSP zCU*0vJ^jL=R#kN4u)|7Thm~)4mYwWj1q^q0ZfJx@tV&LZyeLpl?kWNd>tI3f(EAg; zrBkzXA3h1{FO{e_5Kk5vf~qHu5#;(Y+{&V&rqm?V*v#ip>XS5|nGFvUHd{kZQ$q#! zCWd7;LtzIqUzq5Tp*JhY77_M{;_Fb)OtXYO)?V5wgkg-rh9ICg<0A&XZ&ENR>N~jH z;>48Yx8VJvXzPfL!L!F@`0^ZAB`0JuB(90Pa1O`)G}u?b94lzBo)xA^F4B&0>YS7< zfe`y)bj4GV)S)+dI9kXTZrlUCv0bQli*paP9&#O#2d;JNYug3A(e_x=C9Q-{UgD!@ zjF~&HS!lb)cs)Ytm4c=yVw92b&c{&NbrrHOv6v^&w+YVe$>xhqBRFu2NaK z)OE)km5|RIDNv|=P8iT-}* z%~vf9{Ff~Z7+$#$a5c^Gef%}}2*S*dg1QOMCmbL`J;bGe_$$1n?J*o+4B8<*C*N+0 zu?nNFJJ71#PSn?Zk9alA)GTC9oY>_PC9+62HS|cVIin65x8HjC%p*kJA%mY4`lq^r z0l@;|h04%~c$=n22t@?hq1I*5&$nO=T>dD9*V1A9vF|miVegiLco53d5zgLvXpQ+6 zEV9##?vlP8ucbMYg~OJSP#K8S14ymmRfKgeR}3`&Ic0%7A(zXk>(@0~2w%}kNd#2J z5AT%gXk)yV7fNX3Q_tGOkGK3PKjwVR*43;^U2@%)-uwm6aB6R^Sa>%*wxIrO@#ZUr zmd7H`;U+MXp&b9^N86M-bs_4C@&>lY?Sn&MqXP|@b%DzWyt0rM>4P@H_}~F#_Q5#f z-9eeMMmiR3Skylo$)Z_AMCbnyo6~DvB)O@G4xiP1j5YA)GsL5H2e~TQaj7wLoEAb5 zERLgJtmz8AQyqj6Zv?FvqZ&@-Q{y=I>&C9m0~=RnX3SP99ep?Vp@R5W!Y_O~9^<9= zOJd?D3f7)TvT^Ae%Z_PzJuf>pCMhB1b5w?iLMp7FJK8(wF5~!XQSpmqi?yi)o87-R z$zj$G6epv5+b=}(PqK1?{TP0<-W~n72r!pHz@<5p}VAt zI5BHIw#*Z#yHADGb6@9@3A8O;>HIGu{|6uZpA_|KpKhzmNTfw}lGyR@8js>CC`y-t z+@o7;sVnQNmAKaB+fz)(&f+Zc_q96<(r1%9G;NH62UQOln5Z*OU>05Y2->Zd|g2|C)=9jvrqOm^^`wKVLfQg8Q5ki%8*;qn`NE&q4^*I8>bZ1 zd^2KHv#s1%XWWG4#}Bwtw~5|d-C2!e**2VyXc~xpKADpiiL7g)@?JGw2HuiQ&Mf`U zE|d?(r<-dZUOjC(JW1@kOvP)R$}Pw7r%uI + + + + + +TeamSpeak 3 PHP Framework: Member List + + + + + + + + + + + + + +
+
+ + + + + + + +
+
TeamSpeak 3 PHP Framework +  1.1.23 +
+
Copyright © Planet TeamSpeak. All rights reserved.
+
+
+ + + + + +
+
+ +
+
+
+ +
+ + + + +
+ +
+ +
+
+
TeamSpeak3_Node_Servergroup Member List
+
+
+ +

This is the complete list of members for TeamSpeak3_Node_Servergroup, including all inherited members.

+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
$nodeIdTeamSpeak3_Node_Abstractprotected
$nodeInfoTeamSpeak3_Node_Abstractprotected
$nodeListTeamSpeak3_Node_Abstractprotected
$parentTeamSpeak3_Node_Abstractprotected
$serverTeamSpeak3_Node_Abstractprotected
$storageTeamSpeak3_Node_Abstractprotected
__call($name, array $args)TeamSpeak3_Node_Abstract
__construct(TeamSpeak3_Node_Server $server, array $info, $index="sgid")TeamSpeak3_Node_Servergroup
__get($offset)TeamSpeak3_Node_Abstract
__set($offset, $value)TeamSpeak3_Node_Abstract
__sleep()TeamSpeak3_Node_Abstract
__toString()TeamSpeak3_Node_Servergroup
clientAdd($cldbid)TeamSpeak3_Node_Servergroup
clientDel($cldbid)TeamSpeak3_Node_Servergroup
clientList()TeamSpeak3_Node_Servergroup
copy($name=null, $tsgid=0, $type=TeamSpeak3::GROUP_DBTYPE_REGULAR)TeamSpeak3_Node_Servergroup
count()TeamSpeak3_Node_Abstract
current()TeamSpeak3_Node_Abstract
delete($force=FALSE)TeamSpeak3_Node_Servergroup
delStorage($key)TeamSpeak3_Node_Abstractprotected
execute($cmd, array $params=array())TeamSpeak3_Node_Abstract
fetchNodeInfo()TeamSpeak3_Node_Abstractprotected
fetchNodeList()TeamSpeak3_Node_Servergroupprotected
filterList(array $nodes=array(), array $rules=array())TeamSpeak3_Node_Abstractprotected
getChildren()TeamSpeak3_Node_Abstract
getClass($prefix="ts3_")TeamSpeak3_Node_Abstract
getIcon()TeamSpeak3_Node_Servergroup
getId()TeamSpeak3_Node_Abstract
getInfo($extend=TRUE, $convert=FALSE)TeamSpeak3_Node_Abstract
getParent()TeamSpeak3_Node_Abstract
getProperty($property, $default=null)TeamSpeak3_Node_Abstract
getStorage($key, $default=null)TeamSpeak3_Node_Abstractprotected
getSymbol()TeamSpeak3_Node_Servergroup
getUniqueId()TeamSpeak3_Node_Servergroup
getViewer(TeamSpeak3_Viewer_Interface $viewer)TeamSpeak3_Node_Abstract
hasChildren()TeamSpeak3_Node_Abstract
hasNext()TeamSpeak3_Node_Abstract
iconDownload()TeamSpeak3_Node_Servergroup
iconGetName($key)TeamSpeak3_Node_Abstract
iconIsLocal($key)TeamSpeak3_Node_Abstract
key()TeamSpeak3_Node_Abstract
message($msg)TeamSpeak3_Node_Servergroup
next()TeamSpeak3_Node_Abstract
offsetExists($offset)TeamSpeak3_Node_Abstract
offsetGet($offset)TeamSpeak3_Node_Abstract
offsetSet($offset, $value)TeamSpeak3_Node_Abstract
offsetUnset($offset)TeamSpeak3_Node_Abstract
permAssign($permid, $permvalue, $permnegated=FALSE, $permskip=FALSE)TeamSpeak3_Node_Servergroup
permAssignByName($permname, $permvalue, $permnegated=FALSE, $permskip=FALSE)TeamSpeak3_Node_Servergroup
permList($permsid=FALSE)TeamSpeak3_Node_Servergroup
permRemove($permid)TeamSpeak3_Node_Servergroup
permRemoveByName($permname)TeamSpeak3_Node_Servergroup
prepare($cmd, array $params=array())TeamSpeak3_Node_Abstract
privilegeKeyCreate($description=null, $customset=null)TeamSpeak3_Node_Servergroup
rename($name)TeamSpeak3_Node_Servergroup
request($cmd, $throw=TRUE)TeamSpeak3_Node_Abstract
resetNodeInfo()TeamSpeak3_Node_Abstractprotected
resetNodeList()TeamSpeak3_Node_Abstractprotected
rewind()TeamSpeak3_Node_Abstract
setStorage($key, $val)TeamSpeak3_Node_Abstractprotected
toArray()TeamSpeak3_Node_Abstract
tokenCreate($description=null, $customset=null)TeamSpeak3_Node_Servergroup
toString()TeamSpeak3_Node_Abstract
valid()TeamSpeak3_Node_Abstract
verifyNodeList()TeamSpeak3_Node_Abstractprotected
+
+ + + + diff --git a/lib/docs/html/class_team_speak3___node___servergroup.html b/lib/docs/html/class_team_speak3___node___servergroup.html new file mode 100644 index 0000000..34e53db --- /dev/null +++ b/lib/docs/html/class_team_speak3___node___servergroup.html @@ -0,0 +1,2890 @@ + + + + + + +TeamSpeak 3 PHP Framework: TeamSpeak3_Node_Servergroup Class Reference + + + + + + + + + + + + + +
+
+ + + + + + + +
+
TeamSpeak 3 PHP Framework +  1.1.23 +
+
Copyright © Planet TeamSpeak. All rights reserved.
+
+
+ + + + + +
+
+ +
+
+
+ +
+ + + + +
+ +
+ +
+ +
+
TeamSpeak3_Node_Servergroup Class Reference
+
+
+ +

Class describing a TeamSpeak 3 server group and all it's parameters. + More...

+
+ + Inheritance diagram for TeamSpeak3_Node_Servergroup:
+
+
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +

+Public Member Functions

 __construct (TeamSpeak3_Node_Server $server, array $info, $index="sgid")
 The TeamSpeak3_Node_Servergroup constructor. More...
 
 rename ($name)
 Renames the server group specified. More...
 
 delete ($force=FALSE)
 Deletes the server group. More...
 
 copy ($name=null, $tsgid=0, $type=TeamSpeak3::GROUP_DBTYPE_REGULAR)
 Creates a copy of the server group and returns the new groups ID. More...
 
 permList ($permsid=FALSE)
 Returns a list of permissions assigned to the server group. More...
 
 permAssign ($permid, $permvalue, $permnegated=FALSE, $permskip=FALSE)
 Adds a set of specified permissions to the server group. More...
 
 permAssignByName ($permname, $permvalue, $permnegated=FALSE, $permskip=FALSE)
 Alias for permAssign(). More...
 
 permRemove ($permid)
 Removes a set of specified permissions from the server group. More...
 
 permRemoveByName ($permname)
 Alias for permRemove(). More...
 
 clientList ()
 Returns a list of clients assigned to the server group specified. More...
 
 clientAdd ($cldbid)
 Adds a client to the server group specified. More...
 
 clientDel ($cldbid)
 Removes a client from the server group. More...
 
 tokenCreate ($description=null, $customset=null)
 Alias for privilegeKeyCreate(). More...
 
 privilegeKeyCreate ($description=null, $customset=null)
 Creates a new privilege key (token) for the server group and returns the key. More...
 
 message ($msg)
 Sends a text message to all clients residing in the server group on the virtual server. More...
 
 iconDownload ()
 Downloads and returns the server groups icon file content. More...
 
 getUniqueId ()
 Returns a unique identifier for the node which can be used as a HTML property. More...
 
 getIcon ()
 Returns the name of a possible icon to display the node object. More...
 
 getSymbol ()
 Returns a symbol representing the node. More...
 
 __toString ()
 Returns a string representation of this node. More...
 
 request ($cmd, $throw=TRUE)
 Sends a prepared command to the server and returns the result. More...
 
 prepare ($cmd, array $params=array())
 Uses given parameters and returns a prepared ServerQuery command. More...
 
 execute ($cmd, array $params=array())
 Prepares and executes a ServerQuery command and returns the result. More...
 
 getParent ()
 Returns the parent object of the current node. More...
 
 getId ()
 Returns the primary ID of the current node. More...
 
 iconIsLocal ($key)
 Returns TRUE if the node icon has a local source. More...
 
 iconGetName ($key)
 Returns the internal path of the node icon. More...
 
 getClass ($prefix="ts3_")
 Returns a possible classname for the node which can be used as a HTML property. More...
 
 getViewer (TeamSpeak3_Viewer_Interface $viewer)
 Returns the HTML code to display a TeamSpeak 3 viewer. More...
 
 getInfo ($extend=TRUE, $convert=FALSE)
 Returns all information available on this node. More...
 
 getProperty ($property, $default=null)
 Returns the specified property or a pre-defined default value from the node info array. More...
 
 toString ()
 Returns a string representation of this node. More...
 
 toArray ()
 Returns an assoc array filled with current node info properties. More...
 
 __call ($name, array $args)
 Called whenever we're using an unknown method. More...
 
 __sleep ()
 Commit pending data. More...
 
 count ()
 
 current ()
 
 getChildren ()
 
 hasChildren ()
 
 hasNext ()
 
 key ()
 
 valid ()
 
 next ()
 
 rewind ()
 
 offsetExists ($offset)
 
 offsetGet ($offset)
 
 offsetSet ($offset, $value)
 
 offsetUnset ($offset)
 
 __get ($offset)
 
 __set ($offset, $value)
 
+ + + + + + + + + + + + + + + + + + + + + + + +

+Protected Member Functions

 fetchNodeList ()
 
 filterList (array $nodes=array(), array $rules=array())
 Filters given node list array using specified filter rules. More...
 
 setStorage ($key, $val)
 Writes data to the internal storage array. More...
 
 getStorage ($key, $default=null)
 Returns data from the internal storage array. More...
 
 delStorage ($key)
 Deletes data from the internal storage array. More...
 
 fetchNodeInfo ()
 
 resetNodeInfo ()
 
 verifyNodeList ()
 
 resetNodeList ()
 
+ + + + + + + + + + + + + +

+Protected Attributes

 $parent = null
 
 $server = null
 
 $nodeId = 0x00
 
 $nodeList = null
 
 $nodeInfo = array()
 
 $storage = array()
 
+

Detailed Description

+

Class describing a TeamSpeak 3 server group and all it's parameters.

+ +

Definition at line 32 of file Servergroup.php.

+

Constructor & Destructor Documentation

+ +
+
+ + + + + + + + + + + + + + + + + + + + + + + + +
TeamSpeak3_Node_Servergroup::__construct (TeamSpeak3_Node_Server $server,
array $info,
 $index = "sgid" 
)
+
+ +

The TeamSpeak3_Node_Servergroup constructor.

+
Parameters
+ + + + +
TeamSpeak3_Node_Server$server
array$info
string$index
+
+
+
Exceptions
+ + +
TeamSpeak3_Node_Exception
+
+
+
Returns
TeamSpeak3_Node_Servergroup
+ +

Definition at line 43 of file Servergroup.php.

+ +

References TeamSpeak3_Node_Abstract\$server.

+
44  {
+
45  $this->parent = $server;
+
46  $this->nodeInfo = $info;
+
47 
+
48  if(!array_key_exists($index, $this->nodeInfo))
+
49  {
+
50  throw new TeamSpeak3_Node_Exception("invalid groupID", 0xA00);
+
51  }
+
52 
+
53  $this->nodeId = $this->nodeInfo[$index];
+
54  }
+
+
+
+

Member Function Documentation

+ +
+
+ + + + + + + + +
TeamSpeak3_Node_Servergroup::rename ( $name)
+
+ +

Renames the server group specified.

+
Parameters
+ + +
string$name
+
+
+
Returns
void
+ +

Definition at line 62 of file Servergroup.php.

+ +

References TeamSpeak3_Node_Abstract\getId(), and TeamSpeak3_Node_Abstract\getParent().

+
63  {
+
64  return $this->getParent()->serverGroupRename($this->getId(), $name);
+
65  }
+
+
+
+ +
+
+ + + + + + + + +
TeamSpeak3_Node_Servergroup::delete ( $force = FALSE)
+
+ +

Deletes the server group.

+

If $force is set to 1, the server group will be deleted even if there are clients within.

+
Parameters
+ + +
boolean$force
+
+
+
Returns
void
+ +

Definition at line 74 of file Servergroup.php.

+ +

References TeamSpeak3_Node_Abstract\getId(), and TeamSpeak3_Node_Abstract\getParent().

+
75  {
+
76  $this->getParent()->serverGroupDelete($this->getId(), $force);
+
77 
+
78  unset($this);
+
79  }
+
+
+
+ +
+
+ + + + + + + + + + + + + + + + + + + + + + + + +
TeamSpeak3_Node_Servergroup::copy ( $name = null,
 $tsgid = 0,
 $type = TeamSpeak3::GROUP_DBTYPE_REGULAR 
)
+
+ +

Creates a copy of the server group and returns the new groups ID.

+
Parameters
+ + + + +
string$name
integer$tsgid
integer$type
+
+
+
Returns
integer
+ +

Definition at line 89 of file Servergroup.php.

+ +

References TeamSpeak3_Node_Abstract\getId(), and TeamSpeak3_Node_Abstract\getParent().

+
90  {
+
91  return $this->getParent()->serverGroupCopy($this->getId(), $name, $tsgid, $type);
+
92  }
+
+
+
+ +
+
+ + + + + + + + +
TeamSpeak3_Node_Servergroup::permList ( $permsid = FALSE)
+
+ +

Returns a list of permissions assigned to the server group.

+
Parameters
+ + +
boolean$permsid
+
+
+
Returns
array
+ +

Definition at line 100 of file Servergroup.php.

+ +

References TeamSpeak3_Node_Abstract\getId(), and TeamSpeak3_Node_Abstract\getParent().

+
101  {
+
102  return $this->getParent()->serverGroupPermList($this->getId(), $permsid);
+
103  }
+
+
+
+ +
+
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
TeamSpeak3_Node_Servergroup::permAssign ( $permid,
 $permvalue,
 $permnegated = FALSE,
 $permskip = FALSE 
)
+
+ +

Adds a set of specified permissions to the server group.

+

Multiple permissions can be added by providing the four parameters of each permission in separate arrays.

+
Parameters
+ + + + + +
integer$permid
integer$permvalue
integer$permnegated
integer$permskip
+
+
+
Returns
void
+ +

Definition at line 115 of file Servergroup.php.

+ +

References TeamSpeak3_Node_Abstract\getId(), and TeamSpeak3_Node_Abstract\getParent().

+ +

Referenced by permAssignByName().

+
116  {
+
117  return $this->getParent()->serverGroupPermAssign($this->getId(), $permid, $permvalue, $permnegated, $permskip);
+
118  }
+
+
+
+ +
+
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
TeamSpeak3_Node_Servergroup::permAssignByName ( $permname,
 $permvalue,
 $permnegated = FALSE,
 $permskip = FALSE 
)
+
+ +

Alias for permAssign().

+
Deprecated:
+ +

Definition at line 125 of file Servergroup.php.

+ +

References permAssign().

+
126  {
+
127  return $this->permAssign($permname, $permvalue, $permnegated, $permskip);
+
128  }
+
+
+
+ +
+
+ + + + + + + + +
TeamSpeak3_Node_Servergroup::permRemove ( $permid)
+
+ +

Removes a set of specified permissions from the server group.

+

Multiple permissions can be removed at once.

+
Parameters
+ + +
integer$permid
+
+
+
Returns
void
+ +

Definition at line 137 of file Servergroup.php.

+ +

References TeamSpeak3_Node_Abstract\getId(), and TeamSpeak3_Node_Abstract\getParent().

+ +

Referenced by permRemoveByName().

+
138  {
+
139  return $this->getParent()->serverGroupPermRemove($this->getId(), $permid);
+
140  }
+
+
+
+ +
+
+ + + + + + + + +
TeamSpeak3_Node_Servergroup::permRemoveByName ( $permname)
+
+ +

Alias for permRemove().

+
Deprecated:
+ +

Definition at line 147 of file Servergroup.php.

+ +

References permRemove().

+
148  {
+
149  return $this->permRemove($permname);
+
150  }
+
+
+
+ +
+
+ + + + + + + +
TeamSpeak3_Node_Servergroup::clientList ()
+
+ +

Returns a list of clients assigned to the server group specified.

+
Returns
array
+ +

Definition at line 157 of file Servergroup.php.

+ +

References TeamSpeak3_Node_Abstract\getId(), and TeamSpeak3_Node_Abstract\getParent().

+ +

Referenced by fetchNodeList().

+
158  {
+
159  return $this->getParent()->serverGroupClientList($this->getId());
+
160  }
+
+
+
+ +
+
+ + + + + + + + +
TeamSpeak3_Node_Servergroup::clientAdd ( $cldbid)
+
+ +

Adds a client to the server group specified.

+

Please note that a client cannot be added to default groups or template groups.

+
Parameters
+ + +
integer$cldbid
+
+
+
Returns
void
+ +

Definition at line 169 of file Servergroup.php.

+ +

References TeamSpeak3_Node_Abstract\getId(), and TeamSpeak3_Node_Abstract\getParent().

+
170  {
+
171  return $this->getParent()->serverGroupClientAdd($this->getId(), $cldbid);
+
172  }
+
+
+
+ +
+
+ + + + + + + + +
TeamSpeak3_Node_Servergroup::clientDel ( $cldbid)
+
+ +

Removes a client from the server group.

+
Parameters
+ + +
integer$cldbid
+
+
+
Returns
void
+ +

Definition at line 180 of file Servergroup.php.

+ +

References TeamSpeak3_Node_Abstract\getId(), and TeamSpeak3_Node_Abstract\getParent().

+
181  {
+
182  return $this->getParent()->serverGroupClientDel($this->getId(), $cldbid);
+
183  }
+
+
+
+ +
+
+ + + + + + + + + + + + + + + + + + +
TeamSpeak3_Node_Servergroup::tokenCreate ( $description = null,
 $customset = null 
)
+
+ +

Alias for privilegeKeyCreate().

+
Deprecated:
+ +

Definition at line 190 of file Servergroup.php.

+ +

References privilegeKeyCreate().

+
191  {
+
192  return $this->privilegeKeyCreate($description, $customset);
+
193  }
+
+
+
+ +
+
+ + + + + + + + + + + + + + + + + + +
TeamSpeak3_Node_Servergroup::privilegeKeyCreate ( $description = null,
 $customset = null 
)
+
+ +

Creates a new privilege key (token) for the server group and returns the key.

+
Parameters
+ + + +
string$description
string$customset
+
+
+
Returns
TeamSpeak3_Helper_String
+ +

Definition at line 202 of file Servergroup.php.

+ +

References TeamSpeak3_Node_Abstract\getId(), TeamSpeak3_Node_Abstract\getParent(), and TeamSpeak3\TOKEN_SERVERGROUP.

+ +

Referenced by tokenCreate().

+
203  {
+
204  return $this->getParent()->privilegeKeyCreate(TeamSpeak3::TOKEN_SERVERGROUP, $this->getId(), 0, $description, $customset);
+
205  }
+
+
+
+ +
+
+ + + + + + + + +
TeamSpeak3_Node_Servergroup::message ( $msg)
+
+ +

Sends a text message to all clients residing in the server group on the virtual server.

+
Parameters
+ + +
string$msg
+
+
+
Returns
void
+ +

Definition at line 213 of file Servergroup.php.

+ +

References TeamSpeak3_Node_Abstract\execute(), and TeamSpeak3\TEXTMSG_CLIENT.

+
214  {
+
215  foreach($this as $client)
+
216  {
+
217  try
+
218  {
+
219  $this->execute("sendtextmessage", array("msg" => $msg, "target" => $client, "targetmode" => TeamSpeak3::TEXTMSG_CLIENT));
+
220  }
+ +
222  {
+
223  /* ERROR_client_invalid_id */
+
224  if($e->getCode() != 0x0200) throw $e;
+
225  }
+
226  }
+
227  }
+
+
+
+ +
+
+ + + + + + + +
TeamSpeak3_Node_Servergroup::iconDownload ()
+
+ +

Downloads and returns the server groups icon file content.

+
Returns
TeamSpeak3_Helper_String
+ +

Definition at line 234 of file Servergroup.php.

+ +

References TeamSpeak3\factory(), TeamSpeak3_Node_Abstract\getParent(), TeamSpeak3_Node_Abstract\iconGetName(), and TeamSpeak3_Node_Abstract\iconIsLocal().

+
235  {
+
236  if($this->iconIsLocal("iconid") || $this["iconid"] == 0) return;
+
237 
+
238  $download = $this->getParent()->transferInitDownload(rand(0x0000, 0xFFFF), 0, $this->iconGetName("iconid"));
+
239  $transfer = TeamSpeak3::factory("filetransfer://" . $download["host"] . ":" . $download["port"]);
+
240 
+
241  return $transfer->download($download["ftkey"], $download["size"]);
+
242  }
+
+
+
+ +
+
+ + + + + +
+ + + + + + + +
TeamSpeak3_Node_Servergroup::fetchNodeList ()
+
+protected
+
+ +

+ +

Definition at line 247 of file Servergroup.php.

+ +

References clientList(), TeamSpeak3_Node_Abstract\getId(), and TeamSpeak3_Node_Abstract\getParent().

+
248  {
+
249  $this->nodeList = array();
+
250 
+
251  foreach($this->getParent()->clientList() as $client)
+
252  {
+
253  if(in_array($this->getId(), explode(",", $client["client_servergroups"])))
+
254  {
+
255  $this->nodeList[] = $client;
+
256  }
+
257  }
+
258  }
+
+
+
+ +
+
+ + + + + + + +
TeamSpeak3_Node_Servergroup::getUniqueId ()
+
+ +

Returns a unique identifier for the node which can be used as a HTML property.

+
Returns
string
+ +

Definition at line 265 of file Servergroup.php.

+ +

References TeamSpeak3_Node_Abstract\getId(), and TeamSpeak3_Node_Abstract\getParent().

+
266  {
+
267  return $this->getParent()->getUniqueId() . "_sg" . $this->getId();
+
268  }
+
+
+
+ +
+
+ + + + + + + +
TeamSpeak3_Node_Servergroup::getIcon ()
+
+ +

Returns the name of a possible icon to display the node object.

+
Returns
string
+ +

Definition at line 275 of file Servergroup.php.

+
276  {
+
277  return "group_server";
+
278  }
+
+
+
+ +
+
+ + + + + + + +
TeamSpeak3_Node_Servergroup::getSymbol ()
+
+ +

Returns a symbol representing the node.

+
Returns
string
+ +

Definition at line 285 of file Servergroup.php.

+
286  {
+
287  return "%";
+
288  }
+
+
+
+ +
+
+ + + + + + + +
TeamSpeak3_Node_Servergroup::__toString ()
+
+ +

Returns a string representation of this node.

+
Returns
string
+ +

Definition at line 295 of file Servergroup.php.

+
296  {
+
297  return (string) $this["name"];
+
298  }
+
+
+
+ +
+
+ + + + + +
+ + + + + + + + + + + + + + + + + + +
TeamSpeak3_Node_Abstract::request ( $cmd,
 $throw = TRUE 
)
+
+inherited
+
+ +

Sends a prepared command to the server and returns the result.

+
Parameters
+ + + +
string$cmd
boolean$throw
+
+
+
Returns
TeamSpeak3_Adapter_ServerQuery_Reply
+ +

Definition at line 71 of file Abstract.php.

+ +

References TeamSpeak3_Node_Abstract\getParent().

+ +

Referenced by TeamSpeak3_Node_Host\bindingList(), TeamSpeak3_Node_Abstract\execute(), TeamSpeak3_Node_Host\fetchNodeInfo(), TeamSpeak3_Node_Host\fetchPermissionList(), TeamSpeak3_Node_Host\logout(), TeamSpeak3_Node_Host\serverList(), TeamSpeak3_Node_Host\version(), and TeamSpeak3_Node_Host\whoami().

+
72  {
+
73  return $this->getParent()->request($cmd, $throw);
+
74  }
+
+
+
+ +
+
+ + + + + +
+ + + + + + + + + + + + + + + + + + +
TeamSpeak3_Node_Abstract::prepare ( $cmd,
array $params = array() 
)
+
+inherited
+
+ +

Uses given parameters and returns a prepared ServerQuery command.

+
Parameters
+ + + +
string$cmd
array$params
+
+
+
Returns
TeamSpeak3_Helper_String
+ +

Definition at line 83 of file Abstract.php.

+ +

References TeamSpeak3_Node_Abstract\getParent().

+ +

Referenced by TeamSpeak3_Node_Abstract\execute().

+
84  {
+
85  return $this->getParent()->prepare($cmd, $params);
+
86  }
+
+
+
+ +
+
+ + + + + +
+ + + + + + + + + + + + + + + + + + +
TeamSpeak3_Node_Abstract::execute ( $cmd,
array $params = array() 
)
+
+inherited
+
+ +

Prepares and executes a ServerQuery command and returns the result.

+
Parameters
+ + + +
string$cmd
array$params
+
+
+
Returns
TeamSpeak3_Adapter_ServerQuery_Reply
+ +

Definition at line 95 of file Abstract.php.

+ +

References TeamSpeak3_Node_Abstract\prepare(), and TeamSpeak3_Node_Abstract\request().

+ +

Referenced by TeamSpeak3_Node_Server\banCreate(), TeamSpeak3_Node_Server\banDelete(), TeamSpeak3_Node_Server\channelClientPermAssign(), TeamSpeak3_Node_Server\channelClientPermList(), TeamSpeak3_Node_Server\channelClientPermRemove(), TeamSpeak3_Node_Server\channelCreate(), TeamSpeak3_Node_Server\channelDelete(), TeamSpeak3_Node_Server\channelDirCreate(), TeamSpeak3_Node_Server\channelFileDelete(), TeamSpeak3_Node_Server\channelFileInfo(), TeamSpeak3_Node_Server\channelFileList(), TeamSpeak3_Node_Server\channelFileRename(), TeamSpeak3_Node_Server\channelGroupClientList(), TeamSpeak3_Node_Server\channelGroupCopy(), TeamSpeak3_Node_Server\channelGroupCreate(), TeamSpeak3_Node_Server\channelGroupDelete(), TeamSpeak3_Node_Server\channelGroupPermAssign(), TeamSpeak3_Node_Server\channelGroupPermList(), TeamSpeak3_Node_Server\channelGroupPermRemove(), TeamSpeak3_Node_Server\channelGroupRename(), TeamSpeak3_Node_Server\channelMove(), TeamSpeak3_Node_Server\channelPermAssign(), TeamSpeak3_Node_Server\channelPermList(), TeamSpeak3_Node_Server\channelPermRemove(), TeamSpeak3_Node_Server\clientBan(), TeamSpeak3_Node_Server\clientCountDb(), TeamSpeak3_Node_Server\clientDeleteDb(), TeamSpeak3_Node_Server\clientFind(), TeamSpeak3_Node_Server\clientFindDb(), TeamSpeak3_Node_Server\clientGetIdsByUid(), TeamSpeak3_Node_Server\clientGetNameByDbid(), TeamSpeak3_Node_Server\clientGetNameByUid(), TeamSpeak3_Node_Server\clientGetServerGroupsByDbid(), TeamSpeak3_Node_Server\clientInfoDb(), TeamSpeak3_Node_Server\clientKick(), TeamSpeak3_Node_Server\clientListDb(), TeamSpeak3_Node_Server\clientModifyDb(), TeamSpeak3_Node_Server\clientMove(), TeamSpeak3_Node_Server\clientPermAssign(), TeamSpeak3_Node_Server\clientPermList(), TeamSpeak3_Node_Server\clientPermRemove(), TeamSpeak3_Node_Server\clientPoke(), TeamSpeak3_Node_Server\clientSetChannelGroup(), TeamSpeak3_Node_Server\complaintCreate(), TeamSpeak3_Node_Server\complaintDelete(), TeamSpeak3_Node_Server\complaintList(), TeamSpeak3_Node_Server\complaintListClear(), TeamSpeak3_Node_Server\customInfo(), TeamSpeak3_Node_Server\customSearch(), TeamSpeak3_Node_Client\fetchNodeInfo(), TeamSpeak3_Node_Channel\fetchNodeInfo(), TeamSpeak3_Node_Client\getClones(), TeamSpeak3_Node_Host\logAdd(), TeamSpeak3_Node_Server\logAdd(), TeamSpeak3_Node_Host\login(), TeamSpeak3_Node_Host\logView(), TeamSpeak3_Node_Server\logView(), TeamSpeak3_Node_Client\message(), TeamSpeak3_Node_Channelgroup\message(), message(), TeamSpeak3_Node_Channel\message(), TeamSpeak3_Node_Host\message(), TeamSpeak3_Node_Server\message(), TeamSpeak3_Node_Server\messageCreate(), TeamSpeak3_Node_Server\messageDelete(), TeamSpeak3_Node_Server\messageRead(), TeamSpeak3_Node_Client\modify(), TeamSpeak3_Node_Channel\modify(), TeamSpeak3_Node_Host\modify(), TeamSpeak3_Node_Server\modify(), TeamSpeak3_Node_Server\notifyRegister(), TeamSpeak3_Node_Host\permissionFind(), TeamSpeak3_Node_Client\permOverview(), TeamSpeak3_Node_Server\privilegeKeyCreate(), TeamSpeak3_Node_Server\privilegeKeyDelete(), TeamSpeak3_Node_Server\privilegeKeyUse(), TeamSpeak3_Node_Host\selfPermCheck(), TeamSpeak3_Node_Server\selfPermOverview(), TeamSpeak3_Node_Server\selfUpdate(), TeamSpeak3_Node_Server\selfUpdateLogin(), TeamSpeak3_Node_Client\sendPluginCmd(), TeamSpeak3_Node_Channel\sendPluginCmd(), TeamSpeak3_Node_Server\sendPluginCmd(), TeamSpeak3_Node_Host\serverCreate(), TeamSpeak3_Node_Host\serverDelete(), TeamSpeak3_Node_Server\serverGroupClientAdd(), TeamSpeak3_Node_Server\serverGroupClientDel(), TeamSpeak3_Node_Server\serverGroupClientList(), TeamSpeak3_Node_Server\serverGroupCopy(), TeamSpeak3_Node_Server\serverGroupCreate(), TeamSpeak3_Node_Server\serverGroupDelete(), TeamSpeak3_Node_Server\serverGroupPermAssign(), TeamSpeak3_Node_Host\serverGroupPermAutoAssign(), TeamSpeak3_Node_Host\serverGroupPermAutoRemove(), TeamSpeak3_Node_Server\serverGroupPermList(), TeamSpeak3_Node_Server\serverGroupPermRemove(), TeamSpeak3_Node_Server\serverGroupRename(), TeamSpeak3_Node_Host\serverIdGetByPort(), TeamSpeak3_Node_Host\serverSelect(), TeamSpeak3_Node_Host\serverSelectByPort(), TeamSpeak3_Node_Host\serverStart(), TeamSpeak3_Node_Host\serverStop(), TeamSpeak3_Node_Host\serverStopProcess(), TeamSpeak3_Node_Server\tempPasswordCreate(), TeamSpeak3_Node_Server\tempPasswordDelete(), TeamSpeak3_Node_Server\transferInitDownload(), TeamSpeak3_Node_Server\transferInitUpload(), and TeamSpeak3_Node_Server\transferStop().

+
96  {
+
97  return $this->request($this->prepare($cmd, $params));
+
98  }
+
+
+
+ +
+
+ + + + + +
+ + + + + + + +
TeamSpeak3_Node_Abstract::getParent ()
+
+inherited
+
+ +

Returns the parent object of the current node.

+
Returns
TeamSpeak3_Adapter_ServerQuery
+
+TeamSpeak3_Node_Abstract
+ +

Definition at line 106 of file Abstract.php.

+ +

References TeamSpeak3_Node_Abstract\$parent.

+ +

Referenced by TeamSpeak3_Node_Abstract\__call(), TeamSpeak3_Node_Client\addServerGroup(), TeamSpeak3_Node_Client\avatarDownload(), TeamSpeak3_Node_Client\ban(), TeamSpeak3_Node_Server\channelCreate(), TeamSpeak3_Node_Server\channelDelete(), clientAdd(), clientDel(), TeamSpeak3_Node_Channel\clientList(), TeamSpeak3_Node_Channelgroup\clientList(), clientList(), TeamSpeak3_Node_Server\clientList(), TeamSpeak3_Node_Server\clientMove(), TeamSpeak3_Node_Channel\clientPermAssign(), TeamSpeak3_Node_Channel\clientPermList(), TeamSpeak3_Node_Channel\clientPermRemove(), copy(), TeamSpeak3_Node_Channelgroup\copy(), TeamSpeak3_Node_Client\customInfo(), delete(), TeamSpeak3_Node_Channelgroup\delete(), TeamSpeak3_Node_Channel\delete(), TeamSpeak3_Node_Server\delete(), TeamSpeak3_Node_Client\deleteDb(), TeamSpeak3_Node_Channel\dirCreate(), TeamSpeak3_Node_Channelgroup\fetchNodeList(), fetchNodeList(), TeamSpeak3_Node_Channel\fetchNodeList(), TeamSpeak3_Node_Channel\fileDelete(), TeamSpeak3_Node_Channel\fileInfo(), TeamSpeak3_Node_Channel\fileList(), TeamSpeak3_Node_Channel\fileRename(), TeamSpeak3_Node_Host\getAdapter(), TeamSpeak3_Node_Host\getAdapterHost(), TeamSpeak3_Node_Host\getAdapterPort(), TeamSpeak3_Node_Channel\getLevel(), TeamSpeak3_Node_Channel\getPathway(), TeamSpeak3_Node_Channelgroup\getUniqueId(), getUniqueId(), TeamSpeak3_Node_Client\getUniqueId(), TeamSpeak3_Node_Channel\getUniqueId(), TeamSpeak3_Node_Server\getUniqueId(), TeamSpeak3_Node_Channelgroup\iconDownload(), iconDownload(), TeamSpeak3_Node_Client\iconDownload(), TeamSpeak3_Node_Channel\iconDownload(), TeamSpeak3_Node_Client\infoDb(), TeamSpeak3_Node_Channel\isSpacer(), TeamSpeak3_Node_Client\kick(), TeamSpeak3_Node_Client\memberOf(), TeamSpeak3_Node_Channel\message(), TeamSpeak3_Node_Client\modifyDb(), TeamSpeak3_Node_Client\move(), TeamSpeak3_Node_Channel\move(), TeamSpeak3_Node_Channelgroup\permAssign(), permAssign(), TeamSpeak3_Node_Client\permAssign(), TeamSpeak3_Node_Channel\permAssign(), permList(), TeamSpeak3_Node_Channelgroup\permList(), TeamSpeak3_Node_Client\permList(), TeamSpeak3_Node_Channel\permList(), TeamSpeak3_Node_Channelgroup\permRemove(), permRemove(), TeamSpeak3_Node_Client\permRemove(), TeamSpeak3_Node_Channel\permRemove(), TeamSpeak3_Node_Client\poke(), TeamSpeak3_Node_Abstract\prepare(), TeamSpeak3_Node_Channelgroup\privilegeKeyCreate(), privilegeKeyCreate(), TeamSpeak3_Node_Client\remServerGroup(), TeamSpeak3_Node_Channelgroup\rename(), rename(), TeamSpeak3_Node_Abstract\request(), TeamSpeak3_Node_Server\request(), TeamSpeak3_Node_Channel\sendPluginCmd(), TeamSpeak3_Node_Client\setChannelGroup(), TeamSpeak3_Node_Server\snapshotDeploy(), TeamSpeak3_Node_Channel\spacerGetAlign(), TeamSpeak3_Node_Channel\spacerGetType(), TeamSpeak3_Node_Server\start(), TeamSpeak3_Node_Server\stop(), TeamSpeak3_Node_Channel\subChannelList(), TeamSpeak3_Node_Server\transferInitDownload(), and TeamSpeak3_Node_Server\transferInitUpload().

+
107  {
+
108  return $this->parent;
+
109  }
+
+
+
+ +
+
+ + + + + +
+ + + + + + + +
TeamSpeak3_Node_Abstract::getId ()
+
+inherited
+
+ +

Returns the primary ID of the current node.

+
Returns
integer
+ +

Definition at line 116 of file Abstract.php.

+ +

References TeamSpeak3_Node_Abstract\$nodeId.

+ +

Referenced by TeamSpeak3_Node_Client\ban(), TeamSpeak3_Node_Server\channelDelete(), TeamSpeak3_Node_Server\channelFileList(), clientAdd(), clientDel(), TeamSpeak3_Node_Channel\clientList(), TeamSpeak3_Node_Channelgroup\clientList(), clientList(), TeamSpeak3_Node_Channel\clientPermAssign(), TeamSpeak3_Node_Channel\clientPermList(), TeamSpeak3_Node_Channel\clientPermRemove(), copy(), TeamSpeak3_Node_Channelgroup\copy(), TeamSpeak3_Node_Channelgroup\delete(), delete(), TeamSpeak3_Node_Channel\delete(), TeamSpeak3_Node_Server\delete(), TeamSpeak3_Node_Channel\dirCreate(), TeamSpeak3_Node_Client\fetchNodeInfo(), TeamSpeak3_Node_Channel\fetchNodeInfo(), TeamSpeak3_Node_Channelgroup\fetchNodeList(), fetchNodeList(), TeamSpeak3_Node_Channel\fetchNodeList(), TeamSpeak3_Node_Channel\fileDelete(), TeamSpeak3_Node_Channel\fileInfo(), TeamSpeak3_Node_Channel\fileList(), TeamSpeak3_Node_Channel\fileRename(), TeamSpeak3_Node_Channel\getLevel(), TeamSpeak3_Node_Channel\getPathway(), TeamSpeak3_Node_Channelgroup\getUniqueId(), getUniqueId(), TeamSpeak3_Node_Client\getUniqueId(), TeamSpeak3_Node_Channel\getUniqueId(), TeamSpeak3_Node_Server\getUniqueId(), TeamSpeak3_Node_Client\kick(), TeamSpeak3_Node_Client\message(), TeamSpeak3_Node_Channel\message(), TeamSpeak3_Node_Server\message(), TeamSpeak3_Node_Client\modify(), TeamSpeak3_Node_Channel\modify(), TeamSpeak3_Node_Client\move(), TeamSpeak3_Node_Channel\move(), TeamSpeak3_Node_Channelgroup\permAssign(), permAssign(), TeamSpeak3_Node_Channel\permAssign(), TeamSpeak3_Node_Channelgroup\permList(), permList(), TeamSpeak3_Node_Channel\permList(), TeamSpeak3_Node_Channelgroup\permRemove(), permRemove(), TeamSpeak3_Node_Channel\permRemove(), TeamSpeak3_Node_Client\poke(), TeamSpeak3_Node_Channelgroup\privilegeKeyCreate(), privilegeKeyCreate(), TeamSpeak3_Node_Channelgroup\rename(), rename(), TeamSpeak3_Node_Server\request(), TeamSpeak3_Node_Client\sendPluginCmd(), TeamSpeak3_Node_Channel\sendPluginCmd(), TeamSpeak3_Node_Server\sortGroupList(), TeamSpeak3_Node_Channel\spacerGetAlign(), TeamSpeak3_Node_Channel\spacerGetType(), TeamSpeak3_Node_Server\start(), TeamSpeak3_Node_Server\stop(), and TeamSpeak3_Node_Channel\subChannelList().

+
117  {
+
118  return $this->nodeId;
+
119  }
+
+
+
+ +
+
+ + + + + +
+ + + + + + + + +
TeamSpeak3_Node_Abstract::iconIsLocal ( $key)
+
+inherited
+
+ +

Returns TRUE if the node icon has a local source.

+
Parameters
+ + +
string$key
+
+
+
Returns
boolean
+ +

Definition at line 127 of file Abstract.php.

+ +

Referenced by TeamSpeak3_Node_Channelgroup\iconDownload(), iconDownload(), TeamSpeak3_Node_Client\iconDownload(), TeamSpeak3_Node_Channel\iconDownload(), and TeamSpeak3_Node_Server\iconDownload().

+
128  {
+
129  return ($this[$key] > 0 && $this[$key] < 1000) ? TRUE : FALSE;
+
130  }
+
+
+
+ +
+
+ + + + + +
+ + + + + + + + +
TeamSpeak3_Node_Abstract::iconGetName ( $key)
+
+inherited
+
+ +

Returns the internal path of the node icon.

+
Parameters
+ + +
string$key
+
+
+
Returns
TeamSpeak3_Helper_String
+ +

Definition at line 138 of file Abstract.php.

+ +

Referenced by TeamSpeak3_Node_Abstract\getInfo(), TeamSpeak3_Node_Channelgroup\iconDownload(), iconDownload(), TeamSpeak3_Node_Client\iconDownload(), TeamSpeak3_Node_Channel\iconDownload(), and TeamSpeak3_Node_Server\iconDownload().

+
139  {
+
140  $iconid = ($this[$key] < 0) ? (pow(2, 32))-($this[$key]*-1) : $this[$key];
+
141 
+
142  return new TeamSpeak3_Helper_String("/icon_" . $iconid);
+
143  }
+
+
+
+ +
+
+ + + + + +
+ + + + + + + + +
TeamSpeak3_Node_Abstract::getClass ( $prefix = "ts3_")
+
+inherited
+
+ +

Returns a possible classname for the node which can be used as a HTML property.

+
Parameters
+ + +
string$prefix
+
+
+
Returns
string
+ +

Definition at line 151 of file Abstract.php.

+ +

References TeamSpeak3_Helper_String\factory().

+
152  {
+
153  if($this instanceof TeamSpeak3_Node_Channel && $this->isSpacer())
+
154  {
+
155  return $prefix . "spacer";
+
156  }
+
157  elseif($this instanceof TeamSpeak3_Node_Client && $this["client_type"])
+
158  {
+
159  return $prefix . "query";
+
160  }
+
161 
+
162  return $prefix . TeamSpeak3_Helper_String::factory(get_class($this))->section("_", 2)->toLower();
+
163  }
+
+
+
+ +
+
+ + + + + +
+ + + + + + + + +
TeamSpeak3_Node_Abstract::getViewer (TeamSpeak3_Viewer_Interface $viewer)
+
+inherited
+
+ +

Returns the HTML code to display a TeamSpeak 3 viewer.

+
Parameters
+ + +
TeamSpeak3_Viewer_Interface$viewer
+
+
+
Returns
string
+ +

Definition at line 192 of file Abstract.php.

+ +

References TeamSpeak3_Viewer_Interface\fetchObject().

+
193  {
+
194  $html = $viewer->fetchObject($this);
+
195 
+
196  $iterator = new RecursiveIteratorIterator($this, RecursiveIteratorIterator::SELF_FIRST);
+
197 
+
198  foreach($iterator as $node)
+
199  {
+
200  $siblings = array();
+
201 
+
202  for($level = 0; $level < $iterator->getDepth(); $level++)
+
203  {
+
204  $siblings[] = ($iterator->getSubIterator($level)->hasNext()) ? 1 : 0;
+
205  }
+
206 
+
207  $siblings[] = (!$iterator->getSubIterator($level)->hasNext()) ? 1 : 0;
+
208 
+
209  $html .= $viewer->fetchObject($node, $siblings);
+
210  }
+
211 
+
212  return $html;
+
213  }
+
+
+
+ +
+
+ + + + + +
+ + + + + + + + + + + + + + + + + + +
TeamSpeak3_Node_Abstract::filterList (array $nodes = array(),
array $rules = array() 
)
+
+protectedinherited
+
+ +

Filters given node list array using specified filter rules.

+
Parameters
+ + + +
array$nodes
array$rules
+
+
+
Returns
array
+ +

Definition at line 222 of file Abstract.php.

+ +

Referenced by TeamSpeak3_Node_Server\channelGroupList(), TeamSpeak3_Node_Server\channelList(), TeamSpeak3_Node_Channel\clientList(), TeamSpeak3_Node_Server\clientList(), TeamSpeak3_Node_Server\serverGroupList(), TeamSpeak3_Node_Host\serverList(), and TeamSpeak3_Node_Channel\subChannelList().

+
223  {
+
224  if(!empty($rules))
+
225  {
+
226  foreach($nodes as $node)
+
227  {
+
228  if(!$node instanceof TeamSpeak3_Node_Abstract) continue;
+
229 
+
230  $props = $node->getInfo(FALSE);
+
231  $props = array_intersect_key($props, $rules);
+
232  $match = TRUE;
+
233 
+
234  foreach($props as $key => $val)
+
235  {
+
236  if($val instanceof TeamSpeak3_Helper_String)
+
237  {
+
238  $match = $val->contains($rules[$key], TRUE);
+
239  }
+
240  else
+
241  {
+
242  $match = $val == $rules[$key];
+
243  }
+
244 
+
245  if($match === FALSE)
+
246  {
+
247  unset($nodes[$node->getId()]);
+
248  }
+
249  }
+
250  }
+
251  }
+
252 
+
253  return $nodes;
+
254  }
+
+
+
+ +
+
+ + + + + +
+ + + + + + + + + + + + + + + + + + +
TeamSpeak3_Node_Abstract::getInfo ( $extend = TRUE,
 $convert = FALSE 
)
+
+inherited
+
+ +

Returns all information available on this node.

+

If $convert is enabled, some property values will be converted to human-readable values.

+
Parameters
+ + + +
boolean$extend
boolean$convert
+
+
+
Returns
array
+ +

Definition at line 264 of file Abstract.php.

+ +

References TeamSpeak3_Node_Abstract\$nodeInfo, TeamSpeak3_Helper_Convert\bytes(), TeamSpeak3_Helper_String\factory(), TeamSpeak3_Node_Abstract\fetchNodeInfo(), TeamSpeak3_Node_Abstract\iconGetName(), TeamSpeak3_Helper_Convert\seconds(), and TeamSpeak3_Helper_Convert\version().

+
265  {
+
266  if($extend)
+
267  {
+
268  $this->fetchNodeInfo();
+
269  }
+
270 
+
271  if($convert)
+
272  {
+
273  $info = $this->nodeInfo;
+
274 
+
275  foreach($info as $key => $val)
+
276  {
+ +
278 
+
279  if($key->contains("_bytes_"))
+
280  {
+
281  $info[$key->toString()] = TeamSpeak3_Helper_Convert::bytes($val);
+
282  }
+
283  elseif($key->contains("_bandwidth_"))
+
284  {
+
285  $info[$key->toString()] = TeamSpeak3_Helper_Convert::bytes($val) . "/s";
+
286  }
+
287  elseif($key->contains("_packets_"))
+
288  {
+
289  $info[$key->toString()] = number_format($val, null, null, ".");
+
290  }
+
291  elseif($key->contains("_packetloss_"))
+
292  {
+
293  $info[$key->toString()] = sprintf("%01.2f", floatval($val->toString())*100) . "%";
+
294  }
+
295  elseif($key->endsWith("_uptime"))
+
296  {
+
297  $info[$key->toString()] = TeamSpeak3_Helper_Convert::seconds($val);
+
298  }
+
299  elseif($key->endsWith("_version"))
+
300  {
+
301  $info[$key->toString()] = TeamSpeak3_Helper_Convert::version($val);
+
302  }
+
303  elseif($key->endsWith("_icon_id"))
+
304  {
+
305  $info[$key->toString()] = $this->iconGetName($key)->filterDigits();
+
306  }
+
307  }
+
308 
+
309  return $info;
+
310  }
+
311 
+
312  return $this->nodeInfo;
+
313  }
+
+
+
+ +
+
+ + + + + +
+ + + + + + + + + + + + + + + + + + +
TeamSpeak3_Node_Abstract::getProperty ( $property,
 $default = null 
)
+
+inherited
+
+ +

Returns the specified property or a pre-defined default value from the node info array.

+
Parameters
+ + + +
string$property
mixed$default
+
+
+
Returns
mixed
+ +

Definition at line 322 of file Abstract.php.

+ +

References TeamSpeak3_Node_Abstract\fetchNodeInfo(), and TeamSpeak3_Node_Abstract\offsetExists().

+ +

Referenced by TeamSpeak3_Node_Server\sortClientList(), and TeamSpeak3_Node_Server\sortGroupList().

+
323  {
+
324  if(!$this->offsetExists($property))
+
325  {
+
326  $this->fetchNodeInfo();
+
327  }
+
328 
+
329  if(!$this->offsetExists($property))
+
330  {
+
331  return $default;
+
332  }
+
333 
+
334  return $this->nodeInfo[(string) $property];
+
335  }
+
+
+
+ +
+
+ + + + + +
+ + + + + + + +
TeamSpeak3_Node_Abstract::toString ()
+
+inherited
+
+ +

Returns a string representation of this node.

+
Returns
string
+ +

Definition at line 352 of file Abstract.php.

+ +

References TeamSpeak3_Node_Abstract\__toString().

+
353  {
+
354  return $this->__toString();
+
355  }
+
+
+
+ +
+
+ + + + + +
+ + + + + + + +
TeamSpeak3_Node_Abstract::toArray ()
+
+inherited
+
+ +

Returns an assoc array filled with current node info properties.

+
Returns
array
+ +

Definition at line 362 of file Abstract.php.

+ +

References TeamSpeak3_Node_Abstract\$nodeList.

+ +

Referenced by TeamSpeak3_Node_Server\channelFileInfo().

+
363  {
+
364  return $this->nodeList;
+
365  }
+
+
+
+ +
+
+ + + + + +
+ + + + + + + + + + + + + + + + + + +
TeamSpeak3_Node_Abstract::__call ( $name,
array $args 
)
+
+inherited
+
+ +

Called whenever we're using an unknown method.

+
Parameters
+ + + +
string$name
array$args
+
+
+
Exceptions
+ + +
TeamSpeak3_Node_Exception
+
+
+
Returns
mixed
+ +

Definition at line 375 of file Abstract.php.

+ +

References TeamSpeak3_Node_Abstract\getParent().

+
376  {
+
377  if($this->getParent() instanceof TeamSpeak3_Node_Abstract)
+
378  {
+
379  return call_user_func_array(array($this->getParent(), $name), $args);
+
380  }
+
381 
+
382  throw new TeamSpeak3_Node_Exception("node method '" . $name . "()' does not exist");
+
383  }
+
+
+
+ +
+
+ + + + + +
+ + + + + + + + + + + + + + + + + + +
TeamSpeak3_Node_Abstract::setStorage ( $key,
 $val 
)
+
+protectedinherited
+
+ +

Writes data to the internal storage array.

+
Parameters
+ + + +
string$key
mixed$val
+
+
+
Returns
void
+ +

Definition at line 392 of file Abstract.php.

+ +

Referenced by TeamSpeak3_Node_Host\login(), TeamSpeak3_Node_Host\serverSelect(), TeamSpeak3_Node_Host\serverSelectByPort(), TeamSpeak3_Node_Host\setExcludeQueryClients(), TeamSpeak3_Node_Host\setLoadClientlistFirst(), TeamSpeak3_Node_Host\setPredefinedQueryName(), and TeamSpeak3_Node_Host\setUseOfflineAsVirtual().

+
393  {
+
394  $this->storage[$key] = $val;
+
395  }
+
+
+
+ +
+
+ + + + + +
+ + + + + + + + + + + + + + + + + + +
TeamSpeak3_Node_Abstract::getStorage ( $key,
 $default = null 
)
+
+protectedinherited
+
+ +

Returns data from the internal storage array.

+
Parameters
+ + + +
string$key
mixed$default
+
+
+
Returns
mixed
+ +

Definition at line 404 of file Abstract.php.

+ +

Referenced by TeamSpeak3_Node_Host\__wakeup().

+
405  {
+
406  return (array_key_exists($key, $this->storage) && !empty($this->storage[$key])) ? $this->storage[$key] : $default;
+
407  }
+
+
+
+ +
+
+ + + + + +
+ + + + + + + + +
TeamSpeak3_Node_Abstract::delStorage ( $key)
+
+protectedinherited
+
+ +

Deletes data from the internal storage array.

+
Parameters
+ + +
string$key
+
+
+
Returns
void
+ +

Definition at line 415 of file Abstract.php.

+ +

Referenced by TeamSpeak3_Node_Host\logout(), and TeamSpeak3_Node_Host\serverDeselect().

+
416  {
+
417  unset($this->storage[$key]);
+
418  }
+
+
+
+ +
+
+ + + + + +
+ + + + + + + +
TeamSpeak3_Node_Abstract::__sleep ()
+
+inherited
+
+ +

Commit pending data.

+
Returns
array
+ +

Definition at line 425 of file Abstract.php.

+
426  {
+
427  return array("parent", "storage", "nodeId");
+
428  }
+
+
+
+ +
+
+ + + + + +
+ + + + + + + +
TeamSpeak3_Node_Abstract::fetchNodeInfo ()
+
+protectedinherited
+
+ +

+ +

Definition at line 441 of file Abstract.php.

+ +

Referenced by TeamSpeak3_Node_Abstract\getInfo(), TeamSpeak3_Node_Abstract\getProperty(), and TeamSpeak3_Node_Abstract\offsetGet().

+
442  {
+
443  return;
+
444  }
+
+
+
+ +
+
+ + + + + +
+ + + + + + + +
TeamSpeak3_Node_Abstract::resetNodeInfo ()
+
+protectedinherited
+
+ +

+ +

Definition at line 449 of file Abstract.php.

+ +

Referenced by TeamSpeak3_Node_Client\modify(), TeamSpeak3_Node_Channel\modify(), TeamSpeak3_Node_Host\modify(), and TeamSpeak3_Node_Server\modify().

+
450  {
+
451  $this->nodeInfo = array();
+
452  }
+
+
+
+ +
+
+ + + + + +
+ + + + + + + +
TeamSpeak3_Node_Abstract::verifyNodeList ()
+
+protectedinherited
+
+
+ +
+
+ + + + + +
+ + + + + + + +
TeamSpeak3_Node_Abstract::resetNodeList ()
+
+protectedinherited
+
+
+ +
+
+ + + + + +
+ + + + + + + +
TeamSpeak3_Node_Abstract::count ()
+
+inherited
+
+
+ + + +
+
+ + + + + +
+ + + + + + + +
TeamSpeak3_Node_Abstract::getChildren ()
+
+inherited
+
+ +

+ +

Definition at line 496 of file Abstract.php.

+ +

References TeamSpeak3_Node_Abstract\current(), and TeamSpeak3_Node_Abstract\verifyNodeList().

+
497  {
+
498  $this->verifyNodeList();
+
499 
+
500  return $this->current();
+
501  }
+
+
+
+ +
+
+ + + + + +
+ + + + + + + +
TeamSpeak3_Node_Abstract::hasChildren ()
+
+inherited
+
+ +

+ +

Definition at line 506 of file Abstract.php.

+ +

References TeamSpeak3_Node_Abstract\current(), and TeamSpeak3_Node_Abstract\verifyNodeList().

+
507  {
+
508  $this->verifyNodeList();
+
509 
+
510  return $this->current()->count() > 0;
+
511  }
+
+
+
+ +
+
+ + + + + +
+ + + + + + + +
TeamSpeak3_Node_Abstract::hasNext ()
+
+inherited
+
+ +

+ +

Definition at line 516 of file Abstract.php.

+ +

References TeamSpeak3_Node_Abstract\count(), TeamSpeak3_Node_Abstract\key(), and TeamSpeak3_Node_Abstract\verifyNodeList().

+
517  {
+
518  $this->verifyNodeList();
+
519 
+
520  return $this->key()+1 < $this->count();
+
521  }
+
+
+
+ +
+
+ + + + + +
+ + + + + + + +
TeamSpeak3_Node_Abstract::key ()
+
+inherited
+
+ +

+ +

Definition at line 526 of file Abstract.php.

+ +

References TeamSpeak3_Node_Abstract\verifyNodeList().

+ +

Referenced by TeamSpeak3_Node_Abstract\hasNext(), and TeamSpeak3_Node_Abstract\valid().

+
527  {
+
528  $this->verifyNodeList();
+
529 
+
530  return key($this->nodeList);
+
531  }
+
+
+
+ +
+
+ + + + + +
+ + + + + + + +
TeamSpeak3_Node_Abstract::valid ()
+
+inherited
+
+ +

+ +

Definition at line 536 of file Abstract.php.

+ +

References TeamSpeak3_Node_Abstract\key(), and TeamSpeak3_Node_Abstract\verifyNodeList().

+
537  {
+
538  $this->verifyNodeList();
+
539 
+
540  return $this->key() !== null;
+
541  }
+
+
+
+ +
+
+ + + + + +
+ + + + + + + +
TeamSpeak3_Node_Abstract::next ()
+
+inherited
+
+ +

+ +

Definition at line 546 of file Abstract.php.

+ +

References TeamSpeak3_Node_Abstract\verifyNodeList().

+
547  {
+
548  $this->verifyNodeList();
+
549 
+
550  return next($this->nodeList);
+
551  }
+
+
+
+ +
+
+ + + + + +
+ + + + + + + +
TeamSpeak3_Node_Abstract::rewind ()
+
+inherited
+
+ +

+ +

Definition at line 556 of file Abstract.php.

+ +

References TeamSpeak3_Node_Abstract\verifyNodeList().

+
557  {
+
558  $this->verifyNodeList();
+
559 
+
560  return reset($this->nodeList);
+
561  }
+
+
+
+ +
+
+ + + + + +
+ + + + + + + + +
TeamSpeak3_Node_Abstract::offsetExists ( $offset)
+
+inherited
+
+ +

+ +

Definition at line 566 of file Abstract.php.

+ +

Referenced by TeamSpeak3_Node_Abstract\getProperty(), and TeamSpeak3_Node_Abstract\offsetGet().

+
567  {
+
568  return array_key_exists((string) $offset, $this->nodeInfo) ? TRUE : FALSE;
+
569  }
+
+
+
+ +
+
+ + + + + +
+ + + + + + + + +
TeamSpeak3_Node_Abstract::offsetGet ( $offset)
+
+inherited
+
+ +

+ +

Definition at line 574 of file Abstract.php.

+ +

References TeamSpeak3_Node_Abstract\fetchNodeInfo(), and TeamSpeak3_Node_Abstract\offsetExists().

+ +

Referenced by TeamSpeak3_Node_Abstract\__get().

+
575  {
+
576  if(!$this->offsetExists($offset))
+
577  {
+
578  $this->fetchNodeInfo();
+
579  }
+
580 
+
581  if(!$this->offsetExists($offset))
+
582  {
+
583  throw new TeamSpeak3_Adapter_ServerQuery_Exception("invalid parameter", 0x602);
+
584  }
+
585 
+
586  return $this->nodeInfo[(string) $offset];
+
587  }
+
+
+
+ +
+
+ + + + + +
+ + + + + + + + + + + + + + + + + + +
TeamSpeak3_Node_Abstract::offsetSet ( $offset,
 $value 
)
+
+inherited
+
+ +

+ +

Definition at line 592 of file Abstract.php.

+ +

Referenced by TeamSpeak3_Node_Abstract\__set().

+
593  {
+
594  if(method_exists($this, "modify"))
+
595  {
+
596  return $this->modify(array((string) $offset => $value));
+
597  }
+
598 
+
599  throw new TeamSpeak3_Node_Exception("node '" . get_class($this) . "' is read only");
+
600  }
+
+
+
+ +
+
+ + + + + +
+ + + + + + + + +
TeamSpeak3_Node_Abstract::offsetUnset ( $offset)
+
+inherited
+
+ +

+ +

Definition at line 605 of file Abstract.php.

+
606  {
+
607  unset($this->nodeInfo[(string) $offset]);
+
608  }
+
+
+
+ +
+
+ + + + + +
+ + + + + + + + +
TeamSpeak3_Node_Abstract::__get ( $offset)
+
+inherited
+
+ +

+ +

Definition at line 613 of file Abstract.php.

+ +

References TeamSpeak3_Node_Abstract\offsetGet().

+
614  {
+
615  return $this->offsetGet($offset);
+
616  }
+
+
+
+ +
+
+ + + + + +
+ + + + + + + + + + + + + + + + + + +
TeamSpeak3_Node_Abstract::__set ( $offset,
 $value 
)
+
+inherited
+
+ +

+ +

Definition at line 621 of file Abstract.php.

+ +

References TeamSpeak3_Node_Abstract\offsetSet().

+
622  {
+
623  $this->offsetSet($offset, $value);
+
624  }
+
+
+
+

Member Data Documentation

+ +
+
+ + + + + +
+ + + + +
TeamSpeak3_Node_Abstract::$parent = null
+
+protectedinherited
+
+ +

+ +

Definition at line 37 of file Abstract.php.

+ +

Referenced by TeamSpeak3_Node_Abstract\getParent().

+ +
+
+ + + +
+
+ + + + + +
+ + + + +
TeamSpeak3_Node_Abstract::$nodeId = 0x00
+
+protectedinherited
+
+ +

+ +

Definition at line 47 of file Abstract.php.

+ +

Referenced by TeamSpeak3_Node_Abstract\getId().

+ +
+
+ +
+
+ + + + + +
+ + + + +
TeamSpeak3_Node_Abstract::$nodeList = null
+
+protectedinherited
+
+ +

+ +

Definition at line 52 of file Abstract.php.

+ +

Referenced by TeamSpeak3_Node_Abstract\toArray().

+ +
+
+ +
+
+ + + + + +
+ + + + +
TeamSpeak3_Node_Abstract::$nodeInfo = array()
+
+protectedinherited
+
+ +

+ +

Definition at line 57 of file Abstract.php.

+ +

Referenced by TeamSpeak3_Node_Abstract\getInfo().

+ +
+
+ +
+
+ + + + + +
+ + + + +
TeamSpeak3_Node_Abstract::$storage = array()
+
+protectedinherited
+
+ +

+ +

Definition at line 62 of file Abstract.php.

+ +
+
+
The documentation for this class was generated from the following file: +
+
+ + + + diff --git a/lib/docs/html/class_team_speak3___node___servergroup.js b/lib/docs/html/class_team_speak3___node___servergroup.js new file mode 100644 index 0000000..b056820 --- /dev/null +++ b/lib/docs/html/class_team_speak3___node___servergroup.js @@ -0,0 +1,68 @@ +var class_team_speak3___node___servergroup = +[ + [ "__construct", "class_team_speak3___node___servergroup.html#ad1a97ccd0e411e13b5a2606e194ba0e7", null ], + [ "rename", "class_team_speak3___node___servergroup.html#a87a40f934f6c820ce708c66c48489f30", null ], + [ "delete", "class_team_speak3___node___servergroup.html#a1e6e04273af312581c41532a8d7619a7", null ], + [ "copy", "class_team_speak3___node___servergroup.html#a983da0dbb46af94f89732173f0cb0cfc", null ], + [ "permList", "class_team_speak3___node___servergroup.html#a2750690a96f7d3ce4c8b2f200a2187b6", null ], + [ "permAssign", "class_team_speak3___node___servergroup.html#a1e091222c4fdfa646cf820002239189a", null ], + [ "permAssignByName", "class_team_speak3___node___servergroup.html#ac1734ec88fe5dfd5add66a85d2cd030c", null ], + [ "permRemove", "class_team_speak3___node___servergroup.html#aa310bbb6ff4e1a90e76689ce99a009e2", null ], + [ "permRemoveByName", "class_team_speak3___node___servergroup.html#af0231024657d4b1be8b646062d1ffe4b", null ], + [ "clientList", "class_team_speak3___node___servergroup.html#abeba8c4874c822b84705abbf40c8d14f", null ], + [ "clientAdd", "class_team_speak3___node___servergroup.html#ad5dbfe856a87929927fccfeea2426dc7", null ], + [ "clientDel", "class_team_speak3___node___servergroup.html#a631e3c6363451e8ef041752af5ea3492", null ], + [ "tokenCreate", "class_team_speak3___node___servergroup.html#a7168973c0a2c778e118275a0e61ecd1d", null ], + [ "privilegeKeyCreate", "class_team_speak3___node___servergroup.html#ae2995f92fe360459d158373d28436f85", null ], + [ "message", "class_team_speak3___node___servergroup.html#a93b0285425354402633ce17f84722591", null ], + [ "iconDownload", "class_team_speak3___node___servergroup.html#a8fbc1206b06b4ad342591c94cf829335", null ], + [ "fetchNodeList", "class_team_speak3___node___servergroup.html#a5e3cbc007fd9ae9c984fa0a096bf15dd", null ], + [ "getUniqueId", "class_team_speak3___node___servergroup.html#a075a1b37311c84468abae9e4cfcbae08", null ], + [ "getIcon", "class_team_speak3___node___servergroup.html#ac0cac15d7fa05e6685315acdab772750", null ], + [ "getSymbol", "class_team_speak3___node___servergroup.html#a40e50431a4e53f802868312ac8b93cf7", null ], + [ "__toString", "class_team_speak3___node___servergroup.html#a465516dfa0e5c84933704c3f8e803f6b", null ], + [ "request", "class_team_speak3___node___servergroup.html#a35dcdb8a7b62d7990307bfb95ce3937c", null ], + [ "prepare", "class_team_speak3___node___servergroup.html#a6589a4fedd410e9cdb55fe20abc410c0", null ], + [ "execute", "class_team_speak3___node___servergroup.html#af6811efc5065b8aadfd6792334ea6977", null ], + [ "getParent", "class_team_speak3___node___servergroup.html#a44618fb948562e89515330e65d08da9a", null ], + [ "getId", "class_team_speak3___node___servergroup.html#a4a0a5545abc2460d1d9b3d6b52d07cbe", null ], + [ "iconIsLocal", "class_team_speak3___node___servergroup.html#aa78cba098574598dd9c0331cac1f39a1", null ], + [ "iconGetName", "class_team_speak3___node___servergroup.html#a02ce34dce8fbf7881ce2323f7af0dca3", null ], + [ "getClass", "class_team_speak3___node___servergroup.html#af6e1416ad2e568f48ff0d85b15b2a673", null ], + [ "getViewer", "class_team_speak3___node___servergroup.html#a3d3f27dab5569edf3a737be080e7c8bc", null ], + [ "filterList", "class_team_speak3___node___servergroup.html#ad826df3c71029ca48839dbe9aa3559b8", null ], + [ "getInfo", "class_team_speak3___node___servergroup.html#af63ae54f10c02ec6b1033425f795fef4", null ], + [ "getProperty", "class_team_speak3___node___servergroup.html#a585728537b56194aeab30b0316126b89", null ], + [ "toString", "class_team_speak3___node___servergroup.html#ac1b521aa7f9871103da5cbb5d3330125", null ], + [ "toArray", "class_team_speak3___node___servergroup.html#acf3c56763859b8adb21379f0cc6394ad", null ], + [ "__call", "class_team_speak3___node___servergroup.html#a63fb203f511e99625428f70f0525950c", null ], + [ "setStorage", "class_team_speak3___node___servergroup.html#a13303ca9275df184348ed7363d9d7c9a", null ], + [ "getStorage", "class_team_speak3___node___servergroup.html#a5a6888304aca8d5f12fecb460b0ef6d2", null ], + [ "delStorage", "class_team_speak3___node___servergroup.html#afbed20ee78d7e5a38097078dd91e70fd", null ], + [ "__sleep", "class_team_speak3___node___servergroup.html#a19b5c8aaac5ef0af2f1393bffea186c5", null ], + [ "fetchNodeInfo", "class_team_speak3___node___servergroup.html#a10158df40ca8030d5d0e3c464154b988", null ], + [ "resetNodeInfo", "class_team_speak3___node___servergroup.html#a266578bece0506453e1f1bfba1f08966", null ], + [ "verifyNodeList", "class_team_speak3___node___servergroup.html#ac66aeb30418e385a5727c191bb8df87d", null ], + [ "resetNodeList", "class_team_speak3___node___servergroup.html#a9ead519e8396990ba30d79d6bed9d286", null ], + [ "count", "class_team_speak3___node___servergroup.html#ad22d04a2800ae672f6117de3afb0e9c4", null ], + [ "current", "class_team_speak3___node___servergroup.html#a1c78dbb54df73f8c5dabe41ebd476207", null ], + [ "getChildren", "class_team_speak3___node___servergroup.html#a4b9dee48bb72f0eab8b9d4b0ea25c5f4", null ], + [ "hasChildren", "class_team_speak3___node___servergroup.html#a7769506879dac3170344d8e59218b644", null ], + [ "hasNext", "class_team_speak3___node___servergroup.html#ad9aee4153360fd8139f6b0d68efff56f", null ], + [ "key", "class_team_speak3___node___servergroup.html#adb87ddbef3247f346c2623f4d91981a1", null ], + [ "valid", "class_team_speak3___node___servergroup.html#a1b0100e4a548e9464d75dcbfe6ac297a", null ], + [ "next", "class_team_speak3___node___servergroup.html#a3273e5078ee49a4bd55620327ed09a5e", null ], + [ "rewind", "class_team_speak3___node___servergroup.html#a9c416b77eeea1ecec6652936703d9ff7", null ], + [ "offsetExists", "class_team_speak3___node___servergroup.html#ad0d64388e2a374203fa16760b923b087", null ], + [ "offsetGet", "class_team_speak3___node___servergroup.html#a716e7512816cf490e5a16ec307f7d889", null ], + [ "offsetSet", "class_team_speak3___node___servergroup.html#a5e9be0418e0cc969d47f4b7475adb21d", null ], + [ "offsetUnset", "class_team_speak3___node___servergroup.html#a732408c9a027db531af8ecce82401c07", null ], + [ "__get", "class_team_speak3___node___servergroup.html#ac8ab685826ff08e853de2aebad9df459", null ], + [ "__set", "class_team_speak3___node___servergroup.html#a14930274e5498a5a8816ef751ff87946", null ], + [ "$parent", "class_team_speak3___node___servergroup.html#a14a79cc9ca202ba4dbfc054f0c18583f", null ], + [ "$server", "class_team_speak3___node___servergroup.html#acadc746cd7eb244d61f195494924f6b8", null ], + [ "$nodeId", "class_team_speak3___node___servergroup.html#ac1bdee23c7d066edf3d6cb8e75999887", null ], + [ "$nodeList", "class_team_speak3___node___servergroup.html#a37b39fa104ce36c0f0ea142934c05346", null ], + [ "$nodeInfo", "class_team_speak3___node___servergroup.html#a50699be5fe1e43f7ae2e528db3c1098b", null ], + [ "$storage", "class_team_speak3___node___servergroup.html#a33efbacf1a9aa094ccc39b0b25f3d369", null ] +]; \ No newline at end of file diff --git a/lib/docs/html/class_team_speak3___node___servergroup.png b/lib/docs/html/class_team_speak3___node___servergroup.png new file mode 100644 index 0000000000000000000000000000000000000000..ed15119585fbe9db5642e6d0077421b774a1d5d8 GIT binary patch literal 1918 zcmbVNdpMJO9G^=Px zGIQ^uTy|V)p|>%bSh=O>;(p%s&-tg*bDr~kp7;HJzn|at`+c7G_xb#O?^Qd(F}Ug` zRTvBg#~sHKVK8|b6f>0-pf_Fa7#DII?Q9*amY0{Ia6me39a*0YMcjV%K;#1?gsW`54%xrwU({C3{QuRG+OZ}bS0338) z-%_OW;cch}8wF4`yA4jMAPx`q*qy_mB-GQXrR#ktZcTP|V}e6dd1#cxcj1hWWAW$s z1nskeZ2gA1ggAhnUMJ`=AR`cl(|E9`pwWqeU9FiTa731gdYH_{;;S@j%w&tBTl$uv zm1;Bb0A0v0hsmlJ+l;$k&L%asTWEVABkpwDe39b40K7miQE!8D`NjIbO8o;8#A$TA zcQ%*F|d-5TTZ69+V5epo-vt*(~J^l8zD+Gl0@?Jm!3jfVw=KdHvmXuEOtS; zT)>;%Hoj0oIJ%Up2;m?g+V7n$T!!zEuu17r6z!TRY>_223 z?s-4H3ni&K4$-xg?zUL^jl9{!7Ymao(f})LaH|F>RpyVkL0u-gu2?LmkcL1|QXp^! zF9UZJv*{b-UMv1wq7mngk@FHGj3n~Ks4zuJN=bBsseom`sTkh*Pr5WdS01R=cv0xY!JmF=p*r&#Y15#K(6>&OghI%a6M1a!vF!|HMewM?W2rT5vr7AV0jt-5n3+ zg-r?^Tc$H4|XSIs&yrd z@d9zDLDdZN4nF3-Hb@a;afJhg#L!_b>Y=W$o92h#n2{n2t8)XXki^s`&CTSigu4+ zZs&Y<;$;^>{VTsvYjY^m)H2(#=m@$?jo|h>rr9nRU+;*jJ2acF-NQ!nMul1&;9+gR zE)j+`w2w6^fLxy_~|?gdAf{zx2@#=sfGV2nID#&h0exmb9p2q zWzQ{08Q+l~L-0Hx>Y;Yh{$kedvzh8+QHLKsKK5t;`snw2oFmy~oefcPcbt5i@cBBx z!5iug=FpB*{6XiUs{{e`J^FJ(yI@0mn?SvD*;n*$4)=e4R*^ODo?Fq`o;$!{hCqU^ zldGg%HY25b;nHKs!G^kqT<|FG)80h=%IjVfMG>LiY>FS{hXV)U7&d*bhKrWgI=bU$ z8vym#FKfDM;4gm}l)Ex^NwJ2yP4o#(@dZb(5v`EWHTftj`qMP$-L*_7Blyc?;Nkqe zavGViYG8Cb$NrXT67}(%ftUWIAVWz@wip-=U5OJNApd}N@m}XAeJWi1D=n#wRbQ)d z?+Z3u{Cm3w2Fd6ZoXY4?n0|FXm}4(==Vym(GQE1TuigHMStX4uG~-2nbRgZ~Dysyy zae$dlV&uYLc7L*Y?!sMKuM7F4;mfI$7N0C3*++@ + + + + + +TeamSpeak 3 PHP Framework: Member List + + + + + + + + + + + + + +
+
+ + + + + + + +
+
TeamSpeak 3 PHP Framework +  1.1.23 +
+
Copyright © Planet TeamSpeak. All rights reserved.
+
+
+ + + + + +
+
+ +
+
+
+ + + + + + diff --git a/lib/docs/html/class_team_speak3___transport___abstract.html b/lib/docs/html/class_team_speak3___transport___abstract.html new file mode 100644 index 0000000..8ea9c1f --- /dev/null +++ b/lib/docs/html/class_team_speak3___transport___abstract.html @@ -0,0 +1,759 @@ + + + + + + +TeamSpeak 3 PHP Framework: TeamSpeak3_Transport_Abstract Class Reference + + + + + + + + + + + + + +
+
+ + + + + + + +
+
TeamSpeak 3 PHP Framework +  1.1.23 +
+
Copyright © Planet TeamSpeak. All rights reserved.
+
+
+ + + + + +
+
+ +
+
+
+ +
+ + + + +
+ +
+ +
+ +
+
TeamSpeak3_Transport_Abstract Class Reference
+
+
+ +

Abstract class for connecting to a TeamSpeak 3 Server through different ways of transport. + More...

+
+ + Inheritance diagram for TeamSpeak3_Transport_Abstract:
+
+
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +

+Public Member Functions

 __construct (array $config)
 The TeamSpeak3_Transport_Abstract constructor. More...
 
 __sleep ()
 Commit pending data. More...
 
 __wakeup ()
 Reconnects to the remote server. More...
 
 __destruct ()
 The TeamSpeak3_Transport_Abstract destructor. More...
 
 connect ()
 Connects to a remote server. More...
 
 disconnect ()
 Disconnects from a remote server. More...
 
 read ($length=4096)
 Reads data from the stream. More...
 
 send ($data)
 Writes data to the stream. More...
 
 getStream ()
 Returns the underlying stream resource. More...
 
 getConfig ($key=null, $default=null)
 Returns the configuration variables in this adapter. More...
 
 setAdapter (TeamSpeak3_Adapter_Abstract $adapter)
 Sets the TeamSpeak3_Adapter_Abstract object using this transport. More...
 
 getAdapter ()
 Returns the TeamSpeak3_Adapter_Abstract object using this transport. More...
 
 getAdapterType ()
 Returns the adapter type. More...
 
 getMetaData ()
 Returns header/meta data from stream pointer. More...
 
 isConnected ()
 Returns TRUE if the transport is connected. More...
 
+ + + + +

+Protected Member Functions

 waitForReadyRead ($time=0)
 Blocks a stream until data is available for reading if the stream is connected in non-blocking mode. More...
 
+ + + + + + + +

+Protected Attributes

$config = null
 
$stream = null
 
$adapter = null
 
+

Detailed Description

+

Abstract class for connecting to a TeamSpeak 3 Server through different ways of transport.

+ +

Definition at line 32 of file Abstract.php.

+

Constructor & Destructor Documentation

+ +
+
+ + + + + + + + +
TeamSpeak3_Transport_Abstract::__construct (array $config)
+
+ +

The TeamSpeak3_Transport_Abstract constructor.

+
Parameters
+ + +
array$config
+
+
+
Exceptions
+ + +
TeamSpeak3_Transport_Exception
+
+
+
Returns
TeamSpeak3_Transport_Abstract
+ +

Definition at line 62 of file Abstract.php.

+
63  {
+
64  if(!array_key_exists("host", $config))
+
65  {
+
66  throw new TeamSpeak3_Transport_Exception("config must have a key for 'host' which specifies the server host name");
+
67  }
+
68 
+
69  if(!array_key_exists("port", $config))
+
70  {
+
71  throw new TeamSpeak3_Transport_Exception("config must have a key for 'port' which specifies the server port number");
+
72  }
+
73 
+
74  if(!array_key_exists("timeout", $config))
+
75  {
+
76  $config["timeout"] = 10;
+
77  }
+
78 
+
79  if(!array_key_exists("blocking", $config))
+
80  {
+
81  $config["blocking"] = 1;
+
82  }
+
83 
+
84  $this->config = $config;
+
85  }
+
+
+
+ +
+
+ + + + + + + +
TeamSpeak3_Transport_Abstract::__destruct ()
+
+ +

The TeamSpeak3_Transport_Abstract destructor.

+
Returns
void
+ +

Definition at line 112 of file Abstract.php.

+ +

References disconnect().

+
113  {
+
114  if($this->adapter instanceof TeamSpeak3_Adapter_Abstract)
+
115  {
+
116  $this->adapter->__destruct();
+
117  }
+
118 
+
119  $this->disconnect();
+
120  }
+
+
+
+

Member Function Documentation

+ +
+
+ + + + + + + +
TeamSpeak3_Transport_Abstract::__sleep ()
+
+ +

Commit pending data.

+
Returns
array
+ +

Definition at line 92 of file Abstract.php.

+
93  {
+
94  return array("config");
+
95  }
+
+
+
+ +
+
+ + + + + + + +
TeamSpeak3_Transport_Abstract::__wakeup ()
+
+ +

Reconnects to the remote server.

+
Returns
void
+ +

Definition at line 102 of file Abstract.php.

+ +

References connect().

+
103  {
+
104  $this->connect();
+
105  }
+
+
+
+ +
+
+ + + + + +
+ + + + + + + +
TeamSpeak3_Transport_Abstract::connect ()
+
+abstract
+
+ +

Connects to a remote server.

+
Exceptions
+ + +
TeamSpeak3_Transport_Exception
+
+
+
Returns
void
+ +

Referenced by __wakeup().

+ +
+
+ +
+
+ + + + + +
+ + + + + + + +
TeamSpeak3_Transport_Abstract::disconnect ()
+
+abstract
+
+ +

Disconnects from a remote server.

+
Returns
void
+ +

Referenced by __destruct().

+ +
+
+ +
+
+ + + + + +
+ + + + + + + + +
TeamSpeak3_Transport_Abstract::read ( $length = 4096)
+
+abstract
+
+ +

Reads data from the stream.

+
Parameters
+ + +
integer$length
+
+
+
Exceptions
+ + +
TeamSpeak3_Transport_Exception
+
+
+
Returns
TeamSpeak3_Helper_String
+ +
+
+ +
+
+ + + + + +
+ + + + + + + + +
TeamSpeak3_Transport_Abstract::send ( $data)
+
+abstract
+
+ +

Writes data to the stream.

+
Parameters
+ + +
string$data
+
+
+
Returns
void
+ +
+
+ +
+
+ + + + + + + +
TeamSpeak3_Transport_Abstract::getStream ()
+
+ +

Returns the underlying stream resource.

+
Returns
resource
+ +

Definition at line 159 of file Abstract.php.

+
160  {
+
161  return $this->stream;
+
162  }
+
+
+
+ +
+
+ + + + + + + + + + + + + + + + + + +
TeamSpeak3_Transport_Abstract::getConfig ( $key = null,
 $default = null 
)
+
+ +

Returns the configuration variables in this adapter.

+
Parameters
+ + + +
string$key
mixed$default
+
+
+
Returns
array
+ +

Definition at line 171 of file Abstract.php.

+
172  {
+
173  if($key !== null)
+
174  {
+
175  return array_key_exists($key, $this->config) ? $this->config[$key] : $default;
+
176  }
+
177 
+
178  return $this->config;
+
179  }
+
+
+
+ +
+
+ + + + + + + + +
TeamSpeak3_Transport_Abstract::setAdapter (TeamSpeak3_Adapter_Abstract $adapter)
+
+ +

Sets the TeamSpeak3_Adapter_Abstract object using this transport.

+
Parameters
+ + +
TeamSpeak3_Adapter_Abstract$adapter
+
+
+
Returns
void
+ +

Definition at line 187 of file Abstract.php.

+
188  {
+
189  $this->adapter = $adapter;
+
190  }
+
+
+
+ +
+
+ + + + + + + +
TeamSpeak3_Transport_Abstract::getAdapter ()
+
+ +

Returns the TeamSpeak3_Adapter_Abstract object using this transport.

+
Returns
TeamSpeak3_Adapter_Abstract
+ +

Definition at line 197 of file Abstract.php.

+ +

Referenced by waitForReadyRead().

+
198  {
+
199  return $this->adapter;
+
200  }
+
+
+
+ +
+
+ + + + + + + +
TeamSpeak3_Transport_Abstract::getAdapterType ()
+
+ +

Returns the adapter type.

+
Returns
string
+ +

Definition at line 207 of file Abstract.php.

+ +

References TeamSpeak3_Helper_String\factory().

+ +

Referenced by TeamSpeak3_Transport_TCP\disconnect(), TeamSpeak3_Transport_UDP\disconnect(), TeamSpeak3_Transport_UDP\read(), TeamSpeak3_Transport_TCP\read(), TeamSpeak3_Transport_TCP\readLine(), TeamSpeak3_Transport_UDP\send(), TeamSpeak3_Transport_TCP\send(), and waitForReadyRead().

+
208  {
+
209  if($this->adapter instanceof TeamSpeak3_Adapter_Abstract)
+
210  {
+
211  $string = TeamSpeak3_Helper_String::factory(get_class($this->adapter));
+
212 
+
213  return $string->substr($string->findLast("_"))->replace(array("_", " "), "")->toString();
+
214  }
+
215 
+
216  return "Unknown";
+
217  }
+
+
+
+ +
+
+ + + + + + + +
TeamSpeak3_Transport_Abstract::getMetaData ()
+
+ +

Returns header/meta data from stream pointer.

+
Exceptions
+ + +
TeamSpeak3_Transport_Exception
+
+
+
Returns
array
+ +

Definition at line 225 of file Abstract.php.

+
226  {
+
227  if($this->stream === null)
+
228  {
+
229  throw new TeamSpeak3_Transport_Exception("unable to retrieve header/meta data from stream pointer");
+
230  }
+
231 
+
232  return stream_get_meta_data($this->stream);
+
233  }
+
+
+
+ +
+
+ + + + + + + +
TeamSpeak3_Transport_Abstract::isConnected ()
+
+ +

Returns TRUE if the transport is connected.

+
Returns
boolean
+ +

Definition at line 240 of file Abstract.php.

+ +

Referenced by TeamSpeak3_Adapter_ServerQuery\__destruct(), and waitForReadyRead().

+
241  {
+
242  return (is_resource($this->stream)) ? TRUE : FALSE;
+
243  }
+
+
+
+ +
+
+ + + + + +
+ + + + + + + + +
TeamSpeak3_Transport_Abstract::waitForReadyRead ( $time = 0)
+
+protected
+
+ +

Blocks a stream until data is available for reading if the stream is connected in non-blocking mode.

+
Parameters
+ + +
integer$time
+
+
+
Returns
void
+ +

Definition at line 252 of file Abstract.php.

+ +

References getAdapter(), getAdapterType(), TeamSpeak3_Helper_Signal\getInstance(), and isConnected().

+ +

Referenced by TeamSpeak3_Transport_TCP\read(), TeamSpeak3_Transport_UDP\read(), and TeamSpeak3_Transport_TCP\readLine().

+
253  {
+
254  if(!$this->isConnected() || $this->config["blocking"]) return;
+
255 
+
256  do {
+
257  $read = array($this->stream);
+
258  $null = null;
+
259 
+
260  if($time)
+
261  {
+
262  TeamSpeak3_Helper_Signal::getInstance()->emit(strtolower($this->getAdapterType()) . "WaitTimeout", $time, $this->getAdapter());
+
263  }
+
264 
+
265  $time = $time+$this->config["timeout"];
+
266  } while(@stream_select($read, $null, $null, $this->config["timeout"]) == 0);
+
267  }
+
+
+
+
The documentation for this class was generated from the following file: +
+
+ + + + diff --git a/lib/docs/html/class_team_speak3___transport___abstract.js b/lib/docs/html/class_team_speak3___transport___abstract.js new file mode 100644 index 0000000..afbf745 --- /dev/null +++ b/lib/docs/html/class_team_speak3___transport___abstract.js @@ -0,0 +1,22 @@ +var class_team_speak3___transport___abstract = +[ + [ "__construct", "class_team_speak3___transport___abstract.html#a99016d25e5f209d03be313b5c3c6cbf3", null ], + [ "__destruct", "class_team_speak3___transport___abstract.html#a8a116dd471039a09e64cf1bc1cb3530a", null ], + [ "__sleep", "class_team_speak3___transport___abstract.html#ad9ad59b6ff973ab97cb4e2ec75b6b9b1", null ], + [ "__wakeup", "class_team_speak3___transport___abstract.html#af9947fe29ce0055f9a6e9c5bd7cff1be", null ], + [ "connect", "class_team_speak3___transport___abstract.html#a496c0c50f4a9921e86b0b13798b4f157", null ], + [ "disconnect", "class_team_speak3___transport___abstract.html#a87c023f67f2467aaf865dba35285b4d8", null ], + [ "read", "class_team_speak3___transport___abstract.html#a611fde17c19d0fc02564acf80d322df0", null ], + [ "send", "class_team_speak3___transport___abstract.html#aa96e8e6fa360d0b9e1db0eaeae858520", null ], + [ "getStream", "class_team_speak3___transport___abstract.html#a847453109ae2d41b4b119aa802f05e64", null ], + [ "getConfig", "class_team_speak3___transport___abstract.html#ac9bec37a13a1483833c80ffd008d4596", null ], + [ "setAdapter", "class_team_speak3___transport___abstract.html#a68321617cad0b775bb941f19fabea6b5", null ], + [ "getAdapter", "class_team_speak3___transport___abstract.html#a4ccffaa9c25155aee837d4e6dee8a037", null ], + [ "getAdapterType", "class_team_speak3___transport___abstract.html#a4cbdd67c5590f756a4fb5ddd5d53bbe1", null ], + [ "getMetaData", "class_team_speak3___transport___abstract.html#a9d3e42ebfb02f2f9b4af8e80f2209b28", null ], + [ "isConnected", "class_team_speak3___transport___abstract.html#a2b1d6d9d2f48fae3165cd5a863cdefe1", null ], + [ "waitForReadyRead", "class_team_speak3___transport___abstract.html#a9826487851b638f3ad942847eae49c58", null ], + [ "$config", "class_team_speak3___transport___abstract.html#a4ca555c5c0936eb5404d3900ca5f8edc", null ], + [ "$stream", "class_team_speak3___transport___abstract.html#a7fcce47a6397f0b924a592493d9b2ba1", null ], + [ "$adapter", "class_team_speak3___transport___abstract.html#a98783cbca81a252f760577a711e84864", null ] +]; \ No newline at end of file diff --git a/lib/docs/html/class_team_speak3___transport___abstract.png b/lib/docs/html/class_team_speak3___transport___abstract.png new file mode 100644 index 0000000000000000000000000000000000000000..9b55a983fde94b92d482d3a9879996f75d3fca4c GIT binary patch literal 1084 zcmeAS@N?(olHy`uVBq!ia0y~yV4MMD2XHV0Nny>&API>8pAgso|NjG-_n&|Es@gjN z$O7X72M)~i-8Kuzks4l}=YqP7^y_^yKSP{R7c6mSyf@WcdC_PIadQL-P(Kd?)P8mVXR9mRUW# zsYfEM8m4Jk)vf-#)4!SdPIt_uz+CU!aR43&TI}Jp1EcpXOxIo3C8XTHe_6?)<59C;lEiqMTYg zCF#}N5ZAe#Cr@rWTdt(`RK7&>a_!_9StqaMwLN#YJ9TXO|AN`2&jT;-?3FrJw{S+* zJt@P-*2^sK@g41XKSS0~c*^|3UF!ut7yB(azDfAgTIv4DYj^f^J-_|n)B8i0c7~{X zy}vCxc~Mul{j%=ZaiVAK*r@F#=e)o{A93T&^KVVVAxh*$nb4Ox;b+KpEz?uf4ex4#S3H!U1v%V0MZ2T z2d2+9=f5*OV7rs2x*I8?kRy!{d(YAZ0!}|tpMi*X;QO0=O$kP3(so9FWSdGy8j*HS* zugCw{eQYy~8l@LTS>r zf6=>a(!@j0C)7)shJOESYG?M!+kKK$oWSSptY4Gj_9ef{-o9pWTt(=WNLkC9+rr|7 zl|7l~2_-LF@Ud^=l39~wgL#9eT+*9V^}PT6sfVlHoa?(U0+j4N5^~t2w5R{cH!s^& z$u%nSYtH=_|NNXav~^46eBsZVy)P$6T4Zk6arLoT{^Cc41|HX2m(Gn>&sukDOVi~Q zldgR3k&tE;ReySJZ@q%sq;ofBD|uFRdJE0%n7G7vjp&!`Ql0EYaha2@81__b`)qx5 z&rXH=hUT{oC#AG=AMuzZ8`GmAdE}_aBu6+yF3E}G;b+YwEdqz0f9Cf+8gf0x!X_D* P)fqfp{an^LB{Ts5z0c|= literal 0 HcmV?d00001 diff --git a/lib/docs/html/class_team_speak3___transport___exception-members.html b/lib/docs/html/class_team_speak3___transport___exception-members.html new file mode 100644 index 0000000..89f16c5 --- /dev/null +++ b/lib/docs/html/class_team_speak3___transport___exception-members.html @@ -0,0 +1,132 @@ + + + + + + +TeamSpeak 3 PHP Framework: Member List + + + + + + + + + + + + + +
+
+ + + + + + + +
+
TeamSpeak 3 PHP Framework +  1.1.23 +
+
Copyright © Planet TeamSpeak. All rights reserved.
+
+
+ + + + + +
+
+ +
+
+
+ +
+ + + + +
+ +
+ +
+
+
TeamSpeak3_Transport_Exception Member List
+
+
+ +

This is the complete list of members for TeamSpeak3_Transport_Exception, including all inherited members.

+ + + + + + + +
$messages (defined in TeamSpeak3_Exception)TeamSpeak3_Exceptionprotectedstatic
__construct($mesg, $code=0x00)TeamSpeak3_Exception
getSender()TeamSpeak3_Exception
prepareCustomMessage(TeamSpeak3_Helper_String $mesg)TeamSpeak3_Exceptionprotected
registerCustomMessage($code, $mesg)TeamSpeak3_Exceptionstatic
unregisterCustomMessage($code)TeamSpeak3_Exceptionstatic
+
+ + + + diff --git a/lib/docs/html/class_team_speak3___transport___exception.html b/lib/docs/html/class_team_speak3___transport___exception.html new file mode 100644 index 0000000..4e85e55 --- /dev/null +++ b/lib/docs/html/class_team_speak3___transport___exception.html @@ -0,0 +1,376 @@ + + + + + + +TeamSpeak 3 PHP Framework: TeamSpeak3_Transport_Exception Class Reference + + + + + + + + + + + + + +
+
+ + + + + + + +
+
TeamSpeak 3 PHP Framework +  1.1.23 +
+
Copyright © Planet TeamSpeak. All rights reserved.
+
+
+ + + + + +
+
+ +
+
+
+ +
+ + + + +
+ +
+ + +
+ +

Enhanced exception class for TeamSpeak3_Transport_Abstract objects. + More...

+
+ + Inheritance diagram for TeamSpeak3_Transport_Exception:
+
+
+ + + + + + +

+Public Member Functions

 getSender ()
 Returns the class from which the exception was thrown. More...
 
+ + + + + + + +

+Static Public Member Functions

static registerCustomMessage ($code, $mesg)
 Registers a custom error message to $code. More...
 
static unregisterCustomMessage ($code)
 Unregisters a custom error message from $code. More...
 
+ + + + +

+Protected Member Functions

 prepareCustomMessage (TeamSpeak3_Helper_String $mesg)
 Prepares a custom error message by replacing pre-defined signs with given values. More...
 
+ + + +

+Static Protected Attributes

+static $messages = array()
 
+

Detailed Description

+

Enhanced exception class for TeamSpeak3_Transport_Abstract objects.

+ +

Definition at line 32 of file Exception.php.

+

Member Function Documentation

+ +
+
+ + + + + +
+ + + + + + + + +
TeamSpeak3_Exception::prepareCustomMessage (TeamSpeak3_Helper_String $mesg)
+
+protectedinherited
+
+ +

Prepares a custom error message by replacing pre-defined signs with given values.

+
Parameters
+ + +
TeamSpeak3_Helper_String$mesg
+
+
+
Returns
TeamSpeak3_Helper_String
+ +

Definition at line 66 of file Exception.php.

+ +

References TeamSpeak3_Helper_String\arg().

+ +

Referenced by TeamSpeak3_Exception\__construct().

+
67  {
+
68  $args = array(
+
69  "code" => $this->getCode(),
+
70  "mesg" => $this->getMessage(),
+
71  "line" => $this->getLine(),
+
72  "file" => $this->getFile(),
+
73  );
+
74 
+
75  return $mesg->arg($args)->toString();
+
76  }
+
+
+
+ +
+
+ + + + + +
+ + + + + + + + + + + + + + + + + + +
static TeamSpeak3_Exception::registerCustomMessage ( $code,
 $mesg 
)
+
+staticinherited
+
+ +

Registers a custom error message to $code.

+
Parameters
+ + + +
integer$code
string$mesg
+
+
+
Exceptions
+ + +
TeamSpeak3_Exception
+
+
+
Returns
void
+ +

Definition at line 86 of file Exception.php.

+
87  {
+
88  if(array_key_exists((int) $code, self::$messages))
+
89  {
+
90  throw new self("custom message for code 0x" . strtoupper(dechex($code)) . " is already registered");
+
91  }
+
92 
+
93  if(!is_string($mesg))
+
94  {
+
95  throw new self("custom message for code 0x" . strtoupper(dechex($code)) . " must be a string");
+
96  }
+
97 
+
98  self::$messages[(int) $code] = new TeamSpeak3_Helper_String($mesg);
+
99  }
+
+
+
+ +
+
+ + + + + +
+ + + + + + + + +
static TeamSpeak3_Exception::unregisterCustomMessage ( $code)
+
+staticinherited
+
+ +

Unregisters a custom error message from $code.

+
Parameters
+ + +
integer$code
+
+
+
Exceptions
+ + +
TeamSpeak3_Exception
+
+
+
Returns
void
+ +

Definition at line 108 of file Exception.php.

+
109  {
+
110  if(!array_key_exists((int) $code, self::$messages))
+
111  {
+
112  throw new self("custom message for code 0x" . strtoupper(dechex($code)) . " is not registered");
+
113  }
+
114 
+
115  unset(self::$messages[intval($code)]);
+
116  }
+
+
+
+ +
+
+ + + + + +
+ + + + + + + +
TeamSpeak3_Exception::getSender ()
+
+inherited
+
+ +

Returns the class from which the exception was thrown.

+
Returns
string
+ +

Definition at line 123 of file Exception.php.

+
124  {
+
125  $trace = $this->getTrace();
+
126 
+
127  return (isset($trace[0]["class"])) ? $trace[0]["class"] : "{main}";
+
128  }
+
+
+
+
The documentation for this class was generated from the following file: +
+
+ + + + diff --git a/lib/docs/html/class_team_speak3___transport___exception.js b/lib/docs/html/class_team_speak3___transport___exception.js new file mode 100644 index 0000000..b80cb85 --- /dev/null +++ b/lib/docs/html/class_team_speak3___transport___exception.js @@ -0,0 +1,5 @@ +var class_team_speak3___transport___exception = +[ + [ "prepareCustomMessage", "class_team_speak3___transport___exception.html#a3bfcdf7b85a393b7a8b05b048ae3279c", null ], + [ "getSender", "class_team_speak3___transport___exception.html#ae7d4b369dd11d3cf56d120acae0cf1db", null ] +]; \ No newline at end of file diff --git a/lib/docs/html/class_team_speak3___transport___exception.png b/lib/docs/html/class_team_speak3___transport___exception.png new file mode 100644 index 0000000000000000000000000000000000000000..b84126e546c945be693a7c879456c89c2c505681 GIT binary patch literal 1053 zcmeAS@N?(olHy`uVBq!ia0vp^=YhC`gBeJcGx_fXQW60^A+G=b{|7SfKmY7iwRZxL z1;z&s9GL05Z5EKrQ4-`A%m7pb0#{Fk7%?y~ukmzo45?szJNNab)jB*5;)Tm9|C|3? zqal9O+jeWb*<|B&Z&x~`uy)jQDz@|~tXNgn{CmZ!TSsd{Lf?K$oga}L5?U@9E${Pi zJ5Z#*vdrG*vGLt|+=AD&?j5S=|3AM@^n6I@{v*z>h0R0f6z*cZ`blfv%2jpk%g>#k z^H(MEW^PDm=>EgO&zFDd?5n@2?!RlRPyM;{b?oBj`b+2U*v|Lr_HX~l`#C^6-+i1c zzO#STE8VKkfuXfB-vdLpc7vRf`UU8+I))#t`VDt3$ioO^Z8oubE9 zKhOSiT(YMtT}es(&Zm{jg3fH47vc4UV8g(``-utzfFQ>oG<^A2dxk$v;tuX5&puauRlPFv{EEv{1M=+?n4PZ8NhLd0i}$kahdDL3+y7$B#?( zYZ&@&&Od!B-Op!_@7kv>$Jt$rUrn91BJpQlY}46hsm4{j0dC%hS8JSZU)Fc$gXS}H z-r4I?g+7Lv=x@KX2n9f9o@`4Un|P+wpH1w_-yefu@P^+%dF)K z$-h=ocgcGD%)Aw5wLwd?1YcWT-FvPkXv3Z>$L%85Xqi7vivJp^zBnN2`Hp+}Z>uiE zTzTtr%P!QaJgw~D@`E@8G&!0EH4;Guebl20lS6Ai#Y&~1G z;pMjA`>S%Lzh85#J)N30wf7MFgPwkSEe72@b}Pvrx$|e-`aI)p|L@j=_TLzHG)?@< nXwVBypr8KPv + + + + + +TeamSpeak 3 PHP Framework: Member List + + + + + + + + + + + + + +
+
+ + + + + + + +
+
TeamSpeak 3 PHP Framework +  1.1.23 +
+
Copyright © Planet TeamSpeak. All rights reserved.
+
+
+ + + + + +
+
+ +
+
+
+ + + + + + diff --git a/lib/docs/html/class_team_speak3___transport___t_c_p.html b/lib/docs/html/class_team_speak3___transport___t_c_p.html new file mode 100644 index 0000000..e5f4919 --- /dev/null +++ b/lib/docs/html/class_team_speak3___transport___t_c_p.html @@ -0,0 +1,898 @@ + + + + + + +TeamSpeak 3 PHP Framework: TeamSpeak3_Transport_TCP Class Reference + + + + + + + + + + + + + +
+
+ + + + + + + +
+
TeamSpeak 3 PHP Framework +  1.1.23 +
+
Copyright © Planet TeamSpeak. All rights reserved.
+
+
+ + + + + +
+
+ +
+
+
+ +
+ + + + +
+ +
+ +
+ +
+
TeamSpeak3_Transport_TCP Class Reference
+
+
+ +

Class for connecting to a remote server through TCP. + More...

+
+ + Inheritance diagram for TeamSpeak3_Transport_TCP:
+
+
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +

+Public Member Functions

 connect ()
 Connects to a remote server. More...
 
 disconnect ()
 Disconnects from a remote server. More...
 
 read ($length=4096)
 Reads data from the stream. More...
 
 readLine ($token="\n")
 Reads a single line of data from the stream. More...
 
 send ($data)
 Writes data to the stream. More...
 
 sendLine ($data, $separator="\n")
 Writes a line of data to the stream. More...
 
 __sleep ()
 Commit pending data. More...
 
 __wakeup ()
 Reconnects to the remote server. More...
 
 getStream ()
 Returns the underlying stream resource. More...
 
 getConfig ($key=null, $default=null)
 Returns the configuration variables in this adapter. More...
 
 setAdapter (TeamSpeak3_Adapter_Abstract $adapter)
 Sets the TeamSpeak3_Adapter_Abstract object using this transport. More...
 
 getAdapter ()
 Returns the TeamSpeak3_Adapter_Abstract object using this transport. More...
 
 getAdapterType ()
 Returns the adapter type. More...
 
 getMetaData ()
 Returns header/meta data from stream pointer. More...
 
 isConnected ()
 Returns TRUE if the transport is connected. More...
 
+ + + + +

+Protected Member Functions

 waitForReadyRead ($time=0)
 Blocks a stream until data is available for reading if the stream is connected in non-blocking mode. More...
 
+ + + + + + + +

+Protected Attributes

$config = null
 
$stream = null
 
$adapter = null
 
+

Detailed Description

+

Class for connecting to a remote server through TCP.

+ +

Definition at line 32 of file TCP.php.

+

Member Function Documentation

+ +
+
+ + + + + + + +
TeamSpeak3_Transport_TCP::connect ()
+
+ +

Connects to a remote server.

+
Exceptions
+ + +
TeamSpeak3_Transport_Exception
+
+
+
Returns
void
+ +

Definition at line 40 of file TCP.php.

+ +

References TeamSpeak3_Helper_String\factory().

+ +

Referenced by read(), readLine(), and send().

+
41  {
+
42  if($this->stream !== null) return;
+
43 
+
44  $host = strval($this->config["host"]);
+
45  $port = strval($this->config["port"]);
+
46 
+
47  $address = "tcp://" . $host . ":" . $port;
+
48  $timeout = intval($this->config["timeout"]);
+
49 
+
50  $this->stream = @stream_socket_client($address, $errno, $errstr, $timeout);
+
51 
+
52  if($this->stream === FALSE)
+
53  {
+
54  throw new TeamSpeak3_Transport_Exception(TeamSpeak3_Helper_String::factory($errstr)->toUtf8()->toString(), $errno);
+
55  }
+
56 
+
57  @stream_set_timeout($this->stream, $timeout);
+
58  @stream_set_blocking($this->stream, $this->config["blocking"] ? 1 : 0);
+
59  }
+
+
+
+ +
+
+ + + + + + + +
TeamSpeak3_Transport_TCP::disconnect ()
+
+ +

Disconnects from a remote server.

+
Returns
void
+ +

Definition at line 66 of file TCP.php.

+ +

References TeamSpeak3_Transport_Abstract\getAdapterType(), and TeamSpeak3_Helper_Signal\getInstance().

+
67  {
+
68  if($this->stream === null) return;
+
69 
+
70  $this->stream = null;
+
71 
+
72  TeamSpeak3_Helper_Signal::getInstance()->emit(strtolower($this->getAdapterType()) . "Disconnected");
+
73  }
+
+
+
+ +
+
+ + + + + + + + +
TeamSpeak3_Transport_TCP::read ( $length = 4096)
+
+ +

Reads data from the stream.

+
Parameters
+ + +
integer$length
+
+
+
Exceptions
+ + +
TeamSpeak3_Transport_Exception
+
+
+
Returns
TeamSpeak3_Helper_String
+ +

Definition at line 82 of file TCP.php.

+ +

References connect(), TeamSpeak3_Transport_Abstract\getAdapterType(), TeamSpeak3_Helper_Signal\getInstance(), and TeamSpeak3_Transport_Abstract\waitForReadyRead().

+
83  {
+
84  $this->connect();
+
85  $this->waitForReadyRead();
+
86 
+
87  $data = @stream_get_contents($this->stream, $length);
+
88 
+
89  TeamSpeak3_Helper_Signal::getInstance()->emit(strtolower($this->getAdapterType()) . "DataRead", $data);
+
90 
+
91  if($data === FALSE)
+
92  {
+
93  throw new TeamSpeak3_Transport_Exception("connection to server '" . $this->config["host"] . ":" . $this->config["port"] . "' lost");
+
94  }
+
95 
+
96  return new TeamSpeak3_Helper_String($data);
+
97  }
+
+
+
+ +
+
+ + + + + + + + +
TeamSpeak3_Transport_TCP::readLine ( $token = "\n")
+
+ +

Reads a single line of data from the stream.

+
Parameters
+ + +
string$token
+
+
+
Exceptions
+ + +
TeamSpeak3_Transport_Exception
+
+
+
Returns
TeamSpeak3_Helper_String
+ +

Definition at line 106 of file TCP.php.

+ +

References connect(), TeamSpeak3_Helper_String\factory(), TeamSpeak3_Transport_Abstract\getAdapterType(), TeamSpeak3_Helper_Signal\getInstance(), and TeamSpeak3_Transport_Abstract\waitForReadyRead().

+
107  {
+
108  $this->connect();
+
109 
+ +
111 
+
112  while(!$line->endsWith($token))
+
113  {
+
114  $this->waitForReadyRead();
+
115 
+
116  $data = @fgets($this->stream, 4096);
+
117 
+
118  TeamSpeak3_Helper_Signal::getInstance()->emit(strtolower($this->getAdapterType()) . "DataRead", $data);
+
119 
+
120  if($data === FALSE)
+
121  {
+
122  if($line->count())
+
123  {
+
124  $line->append($token);
+
125  }
+
126  else
+
127  {
+
128  throw new TeamSpeak3_Transport_Exception("connection to server '" . $this->config["host"] . ":" . $this->config["port"] . "' lost");
+
129  }
+
130  }
+
131  else
+
132  {
+
133  $line->append($data);
+
134  }
+
135  }
+
136 
+
137  return $line->trim();
+
138  }
+
+
+
+ +
+
+ + + + + + + + +
TeamSpeak3_Transport_TCP::send ( $data)
+
+ +

Writes data to the stream.

+
Parameters
+ + +
string$data
+
+
+
Returns
void
+ +

Definition at line 146 of file TCP.php.

+ +

References connect(), TeamSpeak3_Transport_Abstract\getAdapterType(), and TeamSpeak3_Helper_Signal\getInstance().

+ +

Referenced by sendLine().

+
147  {
+
148  $this->connect();
+
149 
+
150  @stream_socket_sendto($this->stream, $data);
+
151 
+
152  TeamSpeak3_Helper_Signal::getInstance()->emit(strtolower($this->getAdapterType()) . "DataSend", $data);
+
153  }
+
+
+
+ +
+
+ + + + + + + + + + + + + + + + + + +
TeamSpeak3_Transport_TCP::sendLine ( $data,
 $separator = "\n" 
)
+
+ +

Writes a line of data to the stream.

+
Parameters
+ + + +
string$data
string$separator
+
+
+
Returns
void
+ +

Definition at line 162 of file TCP.php.

+ +

References send().

+
163  {
+
164  $size = strlen($data);
+
165  $pack = 4096;
+
166 
+
167  for($seek = 0 ;$seek < $size;)
+
168  {
+
169  $rest = $size-$seek;
+
170  $pack = $rest < $pack ? $rest : $pack;
+
171  $buff = substr($data, $seek, $pack);
+
172  $seek = $seek+$pack;
+
173 
+
174  if($seek >= $size) $buff .= $separator;
+
175 
+
176  $this->send($buff);
+
177  }
+
178  }
+
+
+
+ +
+
+ + + + + +
+ + + + + + + +
TeamSpeak3_Transport_Abstract::__sleep ()
+
+inherited
+
+ +

Commit pending data.

+
Returns
array
+ +

Definition at line 92 of file Abstract.php.

+
93  {
+
94  return array("config");
+
95  }
+
+
+
+ +
+
+ + + + + +
+ + + + + + + +
TeamSpeak3_Transport_Abstract::__wakeup ()
+
+inherited
+
+ +

Reconnects to the remote server.

+
Returns
void
+ +

Definition at line 102 of file Abstract.php.

+ +

References TeamSpeak3_Transport_Abstract\connect().

+
103  {
+
104  $this->connect();
+
105  }
+
+
+
+ +
+
+ + + + + +
+ + + + + + + +
TeamSpeak3_Transport_Abstract::getStream ()
+
+inherited
+
+ +

Returns the underlying stream resource.

+
Returns
resource
+ +

Definition at line 159 of file Abstract.php.

+
160  {
+
161  return $this->stream;
+
162  }
+
+
+
+ +
+
+ + + + + +
+ + + + + + + + + + + + + + + + + + +
TeamSpeak3_Transport_Abstract::getConfig ( $key = null,
 $default = null 
)
+
+inherited
+
+ +

Returns the configuration variables in this adapter.

+
Parameters
+ + + +
string$key
mixed$default
+
+
+
Returns
array
+ +

Definition at line 171 of file Abstract.php.

+
172  {
+
173  if($key !== null)
+
174  {
+
175  return array_key_exists($key, $this->config) ? $this->config[$key] : $default;
+
176  }
+
177 
+
178  return $this->config;
+
179  }
+
+
+
+ +
+
+ + + + + +
+ + + + + + + + +
TeamSpeak3_Transport_Abstract::setAdapter (TeamSpeak3_Adapter_Abstract $adapter)
+
+inherited
+
+ +

Sets the TeamSpeak3_Adapter_Abstract object using this transport.

+
Parameters
+ + +
TeamSpeak3_Adapter_Abstract$adapter
+
+
+
Returns
void
+ +

Definition at line 187 of file Abstract.php.

+
188  {
+
189  $this->adapter = $adapter;
+
190  }
+
+
+
+ +
+
+ + + + + +
+ + + + + + + +
TeamSpeak3_Transport_Abstract::getAdapter ()
+
+inherited
+
+ +

Returns the TeamSpeak3_Adapter_Abstract object using this transport.

+
Returns
TeamSpeak3_Adapter_Abstract
+ +

Definition at line 197 of file Abstract.php.

+ +

Referenced by TeamSpeak3_Transport_Abstract\waitForReadyRead().

+
198  {
+
199  return $this->adapter;
+
200  }
+
+
+
+ +
+
+ + + + + +
+ + + + + + + +
TeamSpeak3_Transport_Abstract::getAdapterType ()
+
+inherited
+
+ +

Returns the adapter type.

+
Returns
string
+ +

Definition at line 207 of file Abstract.php.

+ +

References TeamSpeak3_Helper_String\factory().

+ +

Referenced by disconnect(), TeamSpeak3_Transport_UDP\disconnect(), read(), TeamSpeak3_Transport_UDP\read(), readLine(), TeamSpeak3_Transport_UDP\send(), send(), and TeamSpeak3_Transport_Abstract\waitForReadyRead().

+
208  {
+
209  if($this->adapter instanceof TeamSpeak3_Adapter_Abstract)
+
210  {
+
211  $string = TeamSpeak3_Helper_String::factory(get_class($this->adapter));
+
212 
+
213  return $string->substr($string->findLast("_"))->replace(array("_", " "), "")->toString();
+
214  }
+
215 
+
216  return "Unknown";
+
217  }
+
+
+
+ +
+
+ + + + + +
+ + + + + + + +
TeamSpeak3_Transport_Abstract::getMetaData ()
+
+inherited
+
+ +

Returns header/meta data from stream pointer.

+
Exceptions
+ + +
TeamSpeak3_Transport_Exception
+
+
+
Returns
array
+ +

Definition at line 225 of file Abstract.php.

+
226  {
+
227  if($this->stream === null)
+
228  {
+
229  throw new TeamSpeak3_Transport_Exception("unable to retrieve header/meta data from stream pointer");
+
230  }
+
231 
+
232  return stream_get_meta_data($this->stream);
+
233  }
+
+
+
+ +
+
+ + + + + +
+ + + + + + + +
TeamSpeak3_Transport_Abstract::isConnected ()
+
+inherited
+
+ +

Returns TRUE if the transport is connected.

+
Returns
boolean
+ +

Definition at line 240 of file Abstract.php.

+ +

Referenced by TeamSpeak3_Adapter_ServerQuery\__destruct(), and TeamSpeak3_Transport_Abstract\waitForReadyRead().

+
241  {
+
242  return (is_resource($this->stream)) ? TRUE : FALSE;
+
243  }
+
+
+
+ +
+
+ + + + + +
+ + + + + + + + +
TeamSpeak3_Transport_Abstract::waitForReadyRead ( $time = 0)
+
+protectedinherited
+
+ +

Blocks a stream until data is available for reading if the stream is connected in non-blocking mode.

+
Parameters
+ + +
integer$time
+
+
+
Returns
void
+ +

Definition at line 252 of file Abstract.php.

+ +

References TeamSpeak3_Transport_Abstract\getAdapter(), TeamSpeak3_Transport_Abstract\getAdapterType(), TeamSpeak3_Helper_Signal\getInstance(), and TeamSpeak3_Transport_Abstract\isConnected().

+ +

Referenced by read(), TeamSpeak3_Transport_UDP\read(), and readLine().

+
253  {
+
254  if(!$this->isConnected() || $this->config["blocking"]) return;
+
255 
+
256  do {
+
257  $read = array($this->stream);
+
258  $null = null;
+
259 
+
260  if($time)
+
261  {
+
262  TeamSpeak3_Helper_Signal::getInstance()->emit(strtolower($this->getAdapterType()) . "WaitTimeout", $time, $this->getAdapter());
+
263  }
+
264 
+
265  $time = $time+$this->config["timeout"];
+
266  } while(@stream_select($read, $null, $null, $this->config["timeout"]) == 0);
+
267  }
+
+
+
+
The documentation for this class was generated from the following file: +
+
+ + + + diff --git a/lib/docs/html/class_team_speak3___transport___t_c_p.js b/lib/docs/html/class_team_speak3___transport___t_c_p.js new file mode 100644 index 0000000..ad4035b --- /dev/null +++ b/lib/docs/html/class_team_speak3___transport___t_c_p.js @@ -0,0 +1,22 @@ +var class_team_speak3___transport___t_c_p = +[ + [ "connect", "class_team_speak3___transport___t_c_p.html#a86ca484fe7ecbde46d21757208aa67cb", null ], + [ "disconnect", "class_team_speak3___transport___t_c_p.html#ac2c0b51f286a8f71aa04bf73555b75c6", null ], + [ "read", "class_team_speak3___transport___t_c_p.html#ae6a9841ecb355b2596aa8c2da53a3e11", null ], + [ "readLine", "class_team_speak3___transport___t_c_p.html#aa5c19e01f8f6bfd2d3cfc9a2ea64a26e", null ], + [ "send", "class_team_speak3___transport___t_c_p.html#a65ae7814e6733bd7967f0421baa88cec", null ], + [ "sendLine", "class_team_speak3___transport___t_c_p.html#a70b9a5c409d0c481ef980aa8b2723d1e", null ], + [ "__sleep", "class_team_speak3___transport___t_c_p.html#ad9ad59b6ff973ab97cb4e2ec75b6b9b1", null ], + [ "__wakeup", "class_team_speak3___transport___t_c_p.html#af9947fe29ce0055f9a6e9c5bd7cff1be", null ], + [ "getStream", "class_team_speak3___transport___t_c_p.html#a847453109ae2d41b4b119aa802f05e64", null ], + [ "getConfig", "class_team_speak3___transport___t_c_p.html#ac9bec37a13a1483833c80ffd008d4596", null ], + [ "setAdapter", "class_team_speak3___transport___t_c_p.html#a68321617cad0b775bb941f19fabea6b5", null ], + [ "getAdapter", "class_team_speak3___transport___t_c_p.html#a4ccffaa9c25155aee837d4e6dee8a037", null ], + [ "getAdapterType", "class_team_speak3___transport___t_c_p.html#a4cbdd67c5590f756a4fb5ddd5d53bbe1", null ], + [ "getMetaData", "class_team_speak3___transport___t_c_p.html#a9d3e42ebfb02f2f9b4af8e80f2209b28", null ], + [ "isConnected", "class_team_speak3___transport___t_c_p.html#a2b1d6d9d2f48fae3165cd5a863cdefe1", null ], + [ "waitForReadyRead", "class_team_speak3___transport___t_c_p.html#a9826487851b638f3ad942847eae49c58", null ], + [ "$config", "class_team_speak3___transport___t_c_p.html#a4ca555c5c0936eb5404d3900ca5f8edc", null ], + [ "$stream", "class_team_speak3___transport___t_c_p.html#a7fcce47a6397f0b924a592493d9b2ba1", null ], + [ "$adapter", "class_team_speak3___transport___t_c_p.html#a98783cbca81a252f760577a711e84864", null ] +]; \ No newline at end of file diff --git a/lib/docs/html/class_team_speak3___transport___t_c_p.png b/lib/docs/html/class_team_speak3___transport___t_c_p.png new file mode 100644 index 0000000000000000000000000000000000000000..16f32fb5e56e408794ab40c044f9618d438464e2 GIT binary patch literal 812 zcmeAS@N?(olHy`uVBq!ia0vp^$ALJ2gBeK9+A)zINJ#|vgt-3y{~yS_|NOI8)!qp} z78oBmaA2nIwpl%dK zkLd{8^d+I;i*~LtIwjU~_F!LSYV7r|Y)Mm>tiS$b!jeK0OO;HS)V|dJla~bSJ!z7t zd+v^BkZ$_k{~T>9JJow<)qGi$SA3qQZ^pGprX6X8(jQIxO1ge$7pI&5kTAG>bk!1- z1;6K>J$Gr*fxxLB4i)O$eAc_$WJ1_gnY8%XSHC@Za56DDv`^v0q~d8}JLQk=JzQ}3 zm>I{t#~%OX_)Zz_`f!|W{`13D#`pFtUZt`6;kJU=LKzl8b>F8y{ZLsHmM(Mj=EPgV zeQ)d|lJ1sT+-aP0kw=U<>p}MQnp3lp?{ODBWyS?huzgd6(d3t)2itDc#i(lDI zU&3w0TmMywUw56}v?X5uGwoC|J$(5*rQ9bwPdaw7IT;vYzga(A|HZhYG4IgF&&B)` zW*68P9e9JU*rBli&Iojbqn% zc{Q#5b1p4CGw{I*uO0V)N(00GHrqCJ_WSW^R{Q%-ev4SMdCQ5v8t-O1|6n*i@q&7~a4=g6+C?PXTD;As~l(Ht~?<@(h> ztobM32zhqDV26RI`=8n?ZxQQ5PhR2yj3_XiaG8**N=`T!;oVNbD{grc? Vy*F7^ynsoY!PC{xWt~$(699;5h^znr literal 0 HcmV?d00001 diff --git a/lib/docs/html/class_team_speak3___transport___u_d_p-members.html b/lib/docs/html/class_team_speak3___transport___u_d_p-members.html new file mode 100644 index 0000000..d5dd714 --- /dev/null +++ b/lib/docs/html/class_team_speak3___transport___u_d_p-members.html @@ -0,0 +1,145 @@ + + + + + + +TeamSpeak 3 PHP Framework: Member List + + + + + + + + + + + + + +
+
+ + + + + + + +
+
TeamSpeak 3 PHP Framework +  1.1.23 +
+
Copyright © Planet TeamSpeak. All rights reserved.
+
+
+ + + + + +
+
+ +
+
+
+ + + + + + diff --git a/lib/docs/html/class_team_speak3___transport___u_d_p.html b/lib/docs/html/class_team_speak3___transport___u_d_p.html new file mode 100644 index 0000000..2135d71 --- /dev/null +++ b/lib/docs/html/class_team_speak3___transport___u_d_p.html @@ -0,0 +1,767 @@ + + + + + + +TeamSpeak 3 PHP Framework: TeamSpeak3_Transport_UDP Class Reference + + + + + + + + + + + + + +
+
+ + + + + + + +
+
TeamSpeak 3 PHP Framework +  1.1.23 +
+
Copyright © Planet TeamSpeak. All rights reserved.
+
+
+ + + + + +
+
+ +
+
+
+ +
+ + + + +
+ +
+ +
+ +
+
TeamSpeak3_Transport_UDP Class Reference
+
+
+ +

Class for connecting to a remote server through UDP. + More...

+
+ + Inheritance diagram for TeamSpeak3_Transport_UDP:
+
+
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +

+Public Member Functions

 connect ()
 Connects to a remote server. More...
 
 disconnect ()
 Disconnects from a remote server. More...
 
 read ($length=4096)
 Reads data from the stream. More...
 
 send ($data)
 Writes data to the stream. More...
 
 __sleep ()
 Commit pending data. More...
 
 __wakeup ()
 Reconnects to the remote server. More...
 
 getStream ()
 Returns the underlying stream resource. More...
 
 getConfig ($key=null, $default=null)
 Returns the configuration variables in this adapter. More...
 
 setAdapter (TeamSpeak3_Adapter_Abstract $adapter)
 Sets the TeamSpeak3_Adapter_Abstract object using this transport. More...
 
 getAdapter ()
 Returns the TeamSpeak3_Adapter_Abstract object using this transport. More...
 
 getAdapterType ()
 Returns the adapter type. More...
 
 getMetaData ()
 Returns header/meta data from stream pointer. More...
 
 isConnected ()
 Returns TRUE if the transport is connected. More...
 
+ + + + +

+Protected Member Functions

 waitForReadyRead ($time=0)
 Blocks a stream until data is available for reading if the stream is connected in non-blocking mode. More...
 
+ + + + + + + +

+Protected Attributes

$config = null
 
$stream = null
 
$adapter = null
 
+

Detailed Description

+

Class for connecting to a remote server through UDP.

+ +

Definition at line 32 of file UDP.php.

+

Member Function Documentation

+ +
+
+ + + + + + + +
TeamSpeak3_Transport_UDP::connect ()
+
+ +

Connects to a remote server.

+
Exceptions
+ + +
TeamSpeak3_Transport_Exception
+
+
+
Returns
void
+ +

Definition at line 40 of file UDP.php.

+ +

References TeamSpeak3_Helper_String\factory().

+ +

Referenced by read(), and send().

+
41  {
+
42  if($this->stream !== null) return;
+
43 
+
44  $host = strval($this->config["host"]);
+
45  $port = strval($this->config["port"]);
+
46 
+
47  $address = "udp://" . $host . ":" . $port;
+
48  $timeout = intval($this->config["timeout"]);
+
49 
+
50  $this->stream = @stream_socket_client($address, $errno, $errstr, $timeout);
+
51 
+
52  if($this->stream === FALSE)
+
53  {
+
54  throw new TeamSpeak3_Transport_Exception(TeamSpeak3_Helper_String::factory($errstr)->toUtf8()->toString(), $errno);
+
55  }
+
56 
+
57  @stream_set_timeout($this->stream, $timeout);
+
58  @stream_set_blocking($this->stream, $this->config["blocking"] ? 1 : 0);
+
59  }
+
+
+
+ +
+
+ + + + + + + +
TeamSpeak3_Transport_UDP::disconnect ()
+
+ +

Disconnects from a remote server.

+
Returns
void
+ +

Definition at line 66 of file UDP.php.

+ +

References TeamSpeak3_Transport_Abstract\getAdapterType(), and TeamSpeak3_Helper_Signal\getInstance().

+
67  {
+
68  if($this->stream === null) return;
+
69 
+
70  $this->stream = null;
+
71 
+
72  TeamSpeak3_Helper_Signal::getInstance()->emit(strtolower($this->getAdapterType()) . "Disconnected");
+
73  }
+
+
+
+ +
+
+ + + + + + + + +
TeamSpeak3_Transport_UDP::read ( $length = 4096)
+
+ +

Reads data from the stream.

+
Parameters
+ + +
integer$length
+
+
+
Exceptions
+ + +
TeamSpeak3_Transport_Exception
+
+
+
Returns
TeamSpeak3_Helper_String
+ +

Definition at line 82 of file UDP.php.

+ +

References connect(), TeamSpeak3_Transport_Abstract\getAdapterType(), TeamSpeak3_Helper_Signal\getInstance(), and TeamSpeak3_Transport_Abstract\waitForReadyRead().

+
83  {
+
84  $this->connect();
+
85  $this->waitForReadyRead();
+
86 
+
87  $data = @fread($this->stream, $length);
+
88 
+
89  TeamSpeak3_Helper_Signal::getInstance()->emit(strtolower($this->getAdapterType()) . "DataRead", $data);
+
90 
+
91  if($data === FALSE)
+
92  {
+
93  throw new TeamSpeak3_Transport_Exception("connection to server '" . $this->config["host"] . ":" . $this->config["port"] . "' lost");
+
94  }
+
95 
+
96  return new TeamSpeak3_Helper_String($data);
+
97  }
+
+
+
+ +
+
+ + + + + + + + +
TeamSpeak3_Transport_UDP::send ( $data)
+
+ +

Writes data to the stream.

+
Parameters
+ + +
string$data
+
+
+
Returns
void
+ +

Definition at line 105 of file UDP.php.

+ +

References connect(), TeamSpeak3_Transport_Abstract\getAdapterType(), and TeamSpeak3_Helper_Signal\getInstance().

+
106  {
+
107  $this->connect();
+
108 
+
109  @stream_socket_sendto($this->stream, $data);
+
110 
+
111  TeamSpeak3_Helper_Signal::getInstance()->emit(strtolower($this->getAdapterType()) . "DataSend", $data);
+
112  }
+
+
+
+ +
+
+ + + + + +
+ + + + + + + +
TeamSpeak3_Transport_Abstract::__sleep ()
+
+inherited
+
+ +

Commit pending data.

+
Returns
array
+ +

Definition at line 92 of file Abstract.php.

+
93  {
+
94  return array("config");
+
95  }
+
+
+
+ +
+
+ + + + + +
+ + + + + + + +
TeamSpeak3_Transport_Abstract::__wakeup ()
+
+inherited
+
+ +

Reconnects to the remote server.

+
Returns
void
+ +

Definition at line 102 of file Abstract.php.

+ +

References TeamSpeak3_Transport_Abstract\connect().

+
103  {
+
104  $this->connect();
+
105  }
+
+
+
+ +
+
+ + + + + +
+ + + + + + + +
TeamSpeak3_Transport_Abstract::getStream ()
+
+inherited
+
+ +

Returns the underlying stream resource.

+
Returns
resource
+ +

Definition at line 159 of file Abstract.php.

+
160  {
+
161  return $this->stream;
+
162  }
+
+
+
+ +
+
+ + + + + +
+ + + + + + + + + + + + + + + + + + +
TeamSpeak3_Transport_Abstract::getConfig ( $key = null,
 $default = null 
)
+
+inherited
+
+ +

Returns the configuration variables in this adapter.

+
Parameters
+ + + +
string$key
mixed$default
+
+
+
Returns
array
+ +

Definition at line 171 of file Abstract.php.

+
172  {
+
173  if($key !== null)
+
174  {
+
175  return array_key_exists($key, $this->config) ? $this->config[$key] : $default;
+
176  }
+
177 
+
178  return $this->config;
+
179  }
+
+
+
+ +
+
+ + + + + +
+ + + + + + + + +
TeamSpeak3_Transport_Abstract::setAdapter (TeamSpeak3_Adapter_Abstract $adapter)
+
+inherited
+
+ +

Sets the TeamSpeak3_Adapter_Abstract object using this transport.

+
Parameters
+ + +
TeamSpeak3_Adapter_Abstract$adapter
+
+
+
Returns
void
+ +

Definition at line 187 of file Abstract.php.

+
188  {
+
189  $this->adapter = $adapter;
+
190  }
+
+
+
+ +
+
+ + + + + +
+ + + + + + + +
TeamSpeak3_Transport_Abstract::getAdapter ()
+
+inherited
+
+ +

Returns the TeamSpeak3_Adapter_Abstract object using this transport.

+
Returns
TeamSpeak3_Adapter_Abstract
+ +

Definition at line 197 of file Abstract.php.

+ +

Referenced by TeamSpeak3_Transport_Abstract\waitForReadyRead().

+
198  {
+
199  return $this->adapter;
+
200  }
+
+
+
+ +
+
+ + + + + +
+ + + + + + + +
TeamSpeak3_Transport_Abstract::getAdapterType ()
+
+inherited
+
+ +

Returns the adapter type.

+
Returns
string
+ +

Definition at line 207 of file Abstract.php.

+ +

References TeamSpeak3_Helper_String\factory().

+ +

Referenced by TeamSpeak3_Transport_TCP\disconnect(), disconnect(), read(), TeamSpeak3_Transport_TCP\read(), TeamSpeak3_Transport_TCP\readLine(), send(), TeamSpeak3_Transport_TCP\send(), and TeamSpeak3_Transport_Abstract\waitForReadyRead().

+
208  {
+
209  if($this->adapter instanceof TeamSpeak3_Adapter_Abstract)
+
210  {
+
211  $string = TeamSpeak3_Helper_String::factory(get_class($this->adapter));
+
212 
+
213  return $string->substr($string->findLast("_"))->replace(array("_", " "), "")->toString();
+
214  }
+
215 
+
216  return "Unknown";
+
217  }
+
+
+
+ +
+
+ + + + + +
+ + + + + + + +
TeamSpeak3_Transport_Abstract::getMetaData ()
+
+inherited
+
+ +

Returns header/meta data from stream pointer.

+
Exceptions
+ + +
TeamSpeak3_Transport_Exception
+
+
+
Returns
array
+ +

Definition at line 225 of file Abstract.php.

+
226  {
+
227  if($this->stream === null)
+
228  {
+
229  throw new TeamSpeak3_Transport_Exception("unable to retrieve header/meta data from stream pointer");
+
230  }
+
231 
+
232  return stream_get_meta_data($this->stream);
+
233  }
+
+
+
+ +
+
+ + + + + +
+ + + + + + + +
TeamSpeak3_Transport_Abstract::isConnected ()
+
+inherited
+
+ +

Returns TRUE if the transport is connected.

+
Returns
boolean
+ +

Definition at line 240 of file Abstract.php.

+ +

Referenced by TeamSpeak3_Adapter_ServerQuery\__destruct(), and TeamSpeak3_Transport_Abstract\waitForReadyRead().

+
241  {
+
242  return (is_resource($this->stream)) ? TRUE : FALSE;
+
243  }
+
+
+
+ +
+
+ + + + + +
+ + + + + + + + +
TeamSpeak3_Transport_Abstract::waitForReadyRead ( $time = 0)
+
+protectedinherited
+
+ +

Blocks a stream until data is available for reading if the stream is connected in non-blocking mode.

+
Parameters
+ + +
integer$time
+
+
+
Returns
void
+ +

Definition at line 252 of file Abstract.php.

+ +

References TeamSpeak3_Transport_Abstract\getAdapter(), TeamSpeak3_Transport_Abstract\getAdapterType(), TeamSpeak3_Helper_Signal\getInstance(), and TeamSpeak3_Transport_Abstract\isConnected().

+ +

Referenced by TeamSpeak3_Transport_TCP\read(), read(), and TeamSpeak3_Transport_TCP\readLine().

+
253  {
+
254  if(!$this->isConnected() || $this->config["blocking"]) return;
+
255 
+
256  do {
+
257  $read = array($this->stream);
+
258  $null = null;
+
259 
+
260  if($time)
+
261  {
+
262  TeamSpeak3_Helper_Signal::getInstance()->emit(strtolower($this->getAdapterType()) . "WaitTimeout", $time, $this->getAdapter());
+
263  }
+
264 
+
265  $time = $time+$this->config["timeout"];
+
266  } while(@stream_select($read, $null, $null, $this->config["timeout"]) == 0);
+
267  }
+
+
+
+
The documentation for this class was generated from the following file: +
+
+ + + + diff --git a/lib/docs/html/class_team_speak3___transport___u_d_p.js b/lib/docs/html/class_team_speak3___transport___u_d_p.js new file mode 100644 index 0000000..64c869b --- /dev/null +++ b/lib/docs/html/class_team_speak3___transport___u_d_p.js @@ -0,0 +1,20 @@ +var class_team_speak3___transport___u_d_p = +[ + [ "connect", "class_team_speak3___transport___u_d_p.html#a38cf41fc697a8a79220b8dcc8307faef", null ], + [ "disconnect", "class_team_speak3___transport___u_d_p.html#ab47ad7c8e213167430b4a495ec9f7b21", null ], + [ "read", "class_team_speak3___transport___u_d_p.html#af854c17875858a0a57cfa08a20786836", null ], + [ "send", "class_team_speak3___transport___u_d_p.html#a3fd9e15b4b86ff749033c12610563f10", null ], + [ "__sleep", "class_team_speak3___transport___u_d_p.html#ad9ad59b6ff973ab97cb4e2ec75b6b9b1", null ], + [ "__wakeup", "class_team_speak3___transport___u_d_p.html#af9947fe29ce0055f9a6e9c5bd7cff1be", null ], + [ "getStream", "class_team_speak3___transport___u_d_p.html#a847453109ae2d41b4b119aa802f05e64", null ], + [ "getConfig", "class_team_speak3___transport___u_d_p.html#ac9bec37a13a1483833c80ffd008d4596", null ], + [ "setAdapter", "class_team_speak3___transport___u_d_p.html#a68321617cad0b775bb941f19fabea6b5", null ], + [ "getAdapter", "class_team_speak3___transport___u_d_p.html#a4ccffaa9c25155aee837d4e6dee8a037", null ], + [ "getAdapterType", "class_team_speak3___transport___u_d_p.html#a4cbdd67c5590f756a4fb5ddd5d53bbe1", null ], + [ "getMetaData", "class_team_speak3___transport___u_d_p.html#a9d3e42ebfb02f2f9b4af8e80f2209b28", null ], + [ "isConnected", "class_team_speak3___transport___u_d_p.html#a2b1d6d9d2f48fae3165cd5a863cdefe1", null ], + [ "waitForReadyRead", "class_team_speak3___transport___u_d_p.html#a9826487851b638f3ad942847eae49c58", null ], + [ "$config", "class_team_speak3___transport___u_d_p.html#a4ca555c5c0936eb5404d3900ca5f8edc", null ], + [ "$stream", "class_team_speak3___transport___u_d_p.html#a7fcce47a6397f0b924a592493d9b2ba1", null ], + [ "$adapter", "class_team_speak3___transport___u_d_p.html#a98783cbca81a252f760577a711e84864", null ] +]; \ No newline at end of file diff --git a/lib/docs/html/class_team_speak3___transport___u_d_p.png b/lib/docs/html/class_team_speak3___transport___u_d_p.png new file mode 100644 index 0000000000000000000000000000000000000000..1fb2ef6be7a285707e600f100417a5e6d08fd4cd GIT binary patch literal 816 zcmeAS@N?(olHy`uVBq!ia0vp^$ALJ2gBeK9+A)zINJ#|vgt-3y{~yS_|NOI8)!qp} z78oBmaA2nIwplS+=&gChJ5sg!e*9i>`=FrvpV~JCK9g!6 z6{P>wDqp>}X;EG1rog-6`_|=LI#hRc+VfeNmmi&~T(?(!`Zx9OKW|TOQgQvY+2Lxf zo~L-pu0L11ZMN)qrQy?%!8A@A-Z41KYnc>}bq8^s(X& z^Aj~0|DNcEJFUrIv>WD`STOv$_<-Ssdo%L_pq7R@f&$&MmSyg0oWW2R2h$=_@Pv&) z;AMu9Z$$Uz0*0+U<-dZH-mr9kF5HsU$8#Y=w*K!{vHayW4+;uzH@M5(=1g(keeik1 zOuaBwRmQtj>&}^TJP~?lAtR75kC|`t`c&rAlf~oX)2#MyJNYdlXTy^xbyGfA|NNoe zceb88{94YMKaOTs)6A01pIdx;eX3TYp|a0n((zxLWbFLUz3N%aay#g^8oR^l$u&Dt zdAw?u?SlsT%=-@uPKU^R{2sWySs57YJ1(qe*rWGt^_{ibxVnCYo^%U61PSe@w^}rB zFYf#Qv-aOg`G(8$S$-)UhXk + + + + + +TeamSpeak 3 PHP Framework: Member List + + + + + + + + + + + + + +
+
+ + + + + + + +
+
TeamSpeak 3 PHP Framework +  1.1.23 +
+
Copyright © Planet TeamSpeak. All rights reserved.
+
+
+ + + + + +
+
+ +
+
+
+ +
+ + + + +
+ +
+ +
+
+
TeamSpeak3_Viewer_Html Member List
+
+
+ +

This is the complete list of members for TeamSpeak3_Viewer_Html, including all inherited members.

+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
$cachedIcons (defined in TeamSpeak3_Viewer_Html)TeamSpeak3_Viewer_Htmlprotected
$currNum (defined in TeamSpeak3_Viewer_Html)TeamSpeak3_Viewer_Htmlprotected
$currObj (defined in TeamSpeak3_Viewer_Html)TeamSpeak3_Viewer_Htmlprotected
$currSib (defined in TeamSpeak3_Viewer_Html)TeamSpeak3_Viewer_Htmlprotected
$flagpath (defined in TeamSpeak3_Viewer_Html)TeamSpeak3_Viewer_Htmlprotected
$ftclient (defined in TeamSpeak3_Viewer_Html)TeamSpeak3_Viewer_Htmlprotected
$iconpath (defined in TeamSpeak3_Viewer_Html)TeamSpeak3_Viewer_Htmlprotected
$pattern (defined in TeamSpeak3_Viewer_Html)TeamSpeak3_Viewer_Htmlprotected
$remoteIcons (defined in TeamSpeak3_Viewer_Html)TeamSpeak3_Viewer_Htmlprotected
__construct($iconpath="images/viewer/", $flagpath=null, $ftclient=null, $pattern=null)TeamSpeak3_Viewer_Html
fetchObject(TeamSpeak3_Node_Abstract $node, array $siblings=array())TeamSpeak3_Viewer_Html
getContainerClass()TeamSpeak3_Viewer_Htmlprotected
getContainerIdent()TeamSpeak3_Viewer_Htmlprotected
getContainerSummary()TeamSpeak3_Viewer_Htmlprotected
getCorpusClass()TeamSpeak3_Viewer_Htmlprotected
getCorpusIcon()TeamSpeak3_Viewer_Htmlprotected
getCorpusName()TeamSpeak3_Viewer_Htmlprotected
getCorpusTitle()TeamSpeak3_Viewer_Htmlprotected
getImage($name, $text="", $class=null, $iconpath=TRUE, $flagpath=FALSE)TeamSpeak3_Viewer_Htmlprotected
getPrefix()TeamSpeak3_Viewer_Htmlprotected
getPrefixClass()TeamSpeak3_Viewer_Htmlprotected
getRowClass()TeamSpeak3_Viewer_Htmlprotected
getSuffixClass()TeamSpeak3_Viewer_Htmlprotected
getSuffixFlag()TeamSpeak3_Viewer_Htmlprotected
getSuffixIcon()TeamSpeak3_Viewer_Htmlprotected
getSuffixIconChannel()TeamSpeak3_Viewer_Htmlprotected
getSuffixIconClient()TeamSpeak3_Viewer_Htmlprotected
getSuffixIconServer()TeamSpeak3_Viewer_Htmlprotected
+
+ + + + diff --git a/lib/docs/html/class_team_speak3___viewer___html.html b/lib/docs/html/class_team_speak3___viewer___html.html new file mode 100644 index 0000000..9ce9e53 --- /dev/null +++ b/lib/docs/html/class_team_speak3___viewer___html.html @@ -0,0 +1,1321 @@ + + + + + + +TeamSpeak 3 PHP Framework: TeamSpeak3_Viewer_Html Class Reference + + + + + + + + + + + + + +
+
+ + + + + + + +
+
TeamSpeak 3 PHP Framework +  1.1.23 +
+
Copyright © Planet TeamSpeak. All rights reserved.
+
+
+ + + + + +
+
+ +
+
+
+ +
+ + + + +
+ +
+ +
+ +
+
TeamSpeak3_Viewer_Html Class Reference
+
+
+ +

Renders nodes used in HTML-based TeamSpeak 3 viewers. + More...

+
+ + Inheritance diagram for TeamSpeak3_Viewer_Html:
+
+
+ + + + + + + + + +

+Public Member Functions

 __construct ($iconpath="images/viewer/", $flagpath=null, $ftclient=null, $pattern=null)
 The TeamSpeak3_Viewer_Html constructor. More...
 
 fetchObject (TeamSpeak3_Node_Abstract $node, array $siblings=array())
 Returns the code needed to display a node in a TeamSpeak 3 viewer. More...
 
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +

+Protected Member Functions

 getContainerIdent ()
 Returns a unique identifier for the current node which can be used as a HTML id property. More...
 
 getContainerClass ()
 Returns a dynamic string for the current container element which can be used as a HTML class property. More...
 
 getContainerSummary ()
 Returns the ID of the current node which will be used as a summary element for the container element. More...
 
 getRowClass ()
 Returns a dynamic string for the current row element which can be used as a HTML class property. More...
 
 getPrefixClass ()
 Returns a string for the current prefix element which can be used as a HTML class property. More...
 
 getPrefix ()
 Returns the HTML img tags to display the prefix of the current node. More...
 
 getCorpusClass ()
 Returns a string for the current corpus element which can be used as a HTML class property. More...
 
 getCorpusTitle ()
 Returns the HTML img tags which can be used to display the various icons for a TeamSpeak_Node_Abstract object. More...
 
 getCorpusIcon ()
 Returns a HTML img tag which can be used to display the status icon for a TeamSpeak_Node_Abstract object. More...
 
 getCorpusName ()
 Returns a string for the current corpus element which contains the display name for the current TeamSpeak_Node_Abstract object. More...
 
 getSuffixClass ()
 Returns a string for the current suffix element which can be used as a HTML class property. More...
 
 getSuffixIcon ()
 Returns the HTML img tags which can be used to display the various icons for a TeamSpeak_Node_Abstract object. More...
 
 getSuffixIconServer ()
 Returns the HTML img tags which can be used to display the various icons for a TeamSpeak_Node_Server object. More...
 
 getSuffixIconChannel ()
 Returns the HTML img tags which can be used to display the various icons for a TeamSpeak_Node_Channel object. More...
 
 getSuffixIconClient ()
 Returns the HTML img tags which can be used to display the various icons for a TeamSpeak_Node_Client object. More...
 
 getSuffixFlag ()
 Returns a HTML img tag which can be used to display the country flag for a TeamSpeak_Node_Client object. More...
 
 getImage ($name, $text="", $class=null, $iconpath=TRUE, $flagpath=FALSE)
 Returns the code to display a custom HTML img tag. More...
 
+ + + + + + + + + + + + + + + + + + + +

+Protected Attributes

$pattern = "<table id='%0' class='%1' summary='%2'><tr class='%3'><td class='%4'>%5</td><td class='%6' title='%7'>%8 %9</td><td class='%10'>%11%12</td></tr></table>\n"
 
$currObj = null
 
$currSib = null
 
$currNum = 0
 
$iconpath = null
 
$flagpath = null
 
$ftclient = null
 
$cachedIcons = array(100, 200, 300, 400, 500, 600)
 
$remoteIcons = array()
 
+

Detailed Description

+

Renders nodes used in HTML-based TeamSpeak 3 viewers.

+ +

Definition at line 32 of file Html.php.

+

Constructor & Destructor Documentation

+ +
+
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
TeamSpeak3_Viewer_Html::__construct ( $iconpath = "images/viewer/",
 $flagpath = null,
 $ftclient = null,
 $pattern = null 
)
+
+ +

The TeamSpeak3_Viewer_Html constructor.

+
Parameters
+ + + + + +
string$iconpath
string$flagpath
string$ftclient
string$pattern
+
+
+
Returns
void
+ +

Definition at line 107 of file Html.php.

+
108  {
+
109  $this->iconpath = $iconpath;
+
110  $this->flagpath = $flagpath;
+
111  $this->ftclient = $ftclient;
+
112 
+
113  if($pattern)
+
114  {
+
115  $this->pattern = $pattern;
+
116  }
+
117  }
+
+
+
+

Member Function Documentation

+ +
+
+ + + + + + + + + + + + + + + + + + +
TeamSpeak3_Viewer_Html::fetchObject (TeamSpeak3_Node_Abstract $node,
array $siblings = array() 
)
+
+ +

Returns the code needed to display a node in a TeamSpeak 3 viewer.

+
Parameters
+ + + +
TeamSpeak3_Node_Abstract$node
array$siblings
+
+
+
Returns
string
+ +

Definition at line 126 of file Html.php.

+ +

References TeamSpeak3_Helper_String\factory(), getContainerClass(), getContainerIdent(), getContainerSummary(), getCorpusClass(), getCorpusIcon(), getCorpusName(), getCorpusTitle(), getPrefix(), getPrefixClass(), getRowClass(), getSuffixClass(), getSuffixFlag(), and getSuffixIcon().

+
127  {
+
128  $this->currObj = $node;
+
129  $this->currSib = $siblings;
+
130 
+
131  $args = array(
+
132  $this->getContainerIdent(),
+
133  $this->getContainerClass(),
+
134  $this->getContainerSummary(),
+
135  $this->getRowClass(),
+
136  $this->getPrefixClass(),
+
137  $this->getPrefix(),
+
138  $this->getCorpusClass(),
+
139  $this->getCorpusTitle(),
+
140  $this->getCorpusIcon(),
+
141  $this->getCorpusName(),
+
142  $this->getSuffixClass(),
+
143  $this->getSuffixIcon(),
+
144  $this->getSuffixFlag(),
+
145  );
+
146 
+
147  return TeamSpeak3_Helper_String::factory($this->pattern)->arg($args);
+
148  }
+
+
+
+ +
+
+ + + + + +
+ + + + + + + +
TeamSpeak3_Viewer_Html::getContainerIdent ()
+
+protected
+
+ +

Returns a unique identifier for the current node which can be used as a HTML id property.

+
Returns
string
+ +

Definition at line 156 of file Html.php.

+ +

Referenced by fetchObject().

+
157  {
+
158  return $this->currObj->getUniqueId();
+
159  }
+
+
+
+ +
+
+ + + + + +
+ + + + + + + +
TeamSpeak3_Viewer_Html::getContainerClass ()
+
+protected
+
+ +

Returns a dynamic string for the current container element which can be used as a HTML class property.

+
Returns
string
+ +

Definition at line 167 of file Html.php.

+ +

Referenced by fetchObject().

+
168  {
+
169  return "ts3_viewer " . $this->currObj->getClass(null);
+
170  }
+
+
+
+ +
+
+ + + + + +
+ + + + + + + +
TeamSpeak3_Viewer_Html::getContainerSummary ()
+
+protected
+
+ +

Returns the ID of the current node which will be used as a summary element for the container element.

+
Returns
integer
+ +

Definition at line 178 of file Html.php.

+ +

Referenced by fetchObject().

+
179  {
+
180  return $this->currObj->getId();
+
181  }
+
+
+
+ +
+
+ + + + + +
+ + + + + + + +
TeamSpeak3_Viewer_Html::getRowClass ()
+
+protected
+
+ +

Returns a dynamic string for the current row element which can be used as a HTML class property.

+
Returns
string
+ +

Definition at line 189 of file Html.php.

+ +

Referenced by fetchObject().

+
190  {
+
191  return ++$this->currNum%2 ? "row1" : "row2";
+
192  }
+
+
+
+ +
+
+ + + + + +
+ + + + + + + +
TeamSpeak3_Viewer_Html::getPrefixClass ()
+
+protected
+
+ +

Returns a string for the current prefix element which can be used as a HTML class property.

+
Returns
string
+ +

Definition at line 200 of file Html.php.

+ +

Referenced by fetchObject().

+
201  {
+
202  return "prefix " . $this->currObj->getClass(null);
+
203  }
+
+
+
+ +
+
+ + + + + +
+ + + + + + + +
TeamSpeak3_Viewer_Html::getPrefix ()
+
+protected
+
+ +

Returns the HTML img tags to display the prefix of the current node.

+
Returns
string
+ +

Definition at line 210 of file Html.php.

+ +

References getImage().

+ +

Referenced by fetchObject().

+
211  {
+
212  $prefix = "";
+
213 
+
214  if(count($this->currSib))
+
215  {
+
216  $last = array_pop($this->currSib);
+
217 
+
218  foreach($this->currSib as $sibling)
+
219  {
+
220  $prefix .= ($sibling) ? $this->getImage("tree_line.gif") : $this->getImage("tree_blank.png");
+
221  }
+
222 
+
223  $prefix .= ($last) ? $this->getImage("tree_end.gif") : $this->getImage("tree_mid.gif");
+
224  }
+
225 
+
226  return $prefix;
+
227  }
+
+
+
+ +
+
+ + + + + +
+ + + + + + + +
TeamSpeak3_Viewer_Html::getCorpusClass ()
+
+protected
+
+ +

Returns a string for the current corpus element which can be used as a HTML class property.

+

If the current node is a channel spacer the class string will contain additional class names to allow further customization of the content via CSS.

+
Returns
string
+ +

Definition at line 236 of file Html.php.

+ +

References TeamSpeak3_Node_Channel\isSpacer(), TeamSpeak3\SPACER_ALIGN_CENTER, TeamSpeak3\SPACER_ALIGN_LEFT, TeamSpeak3\SPACER_ALIGN_RIGHT, TeamSpeak3\SPACER_DASHDOTDOTLINE, TeamSpeak3\SPACER_DASHDOTLINE, TeamSpeak3\SPACER_DASHLINE, TeamSpeak3\SPACER_DOTLINE, and TeamSpeak3\SPACER_SOLIDLINE.

+ +

Referenced by fetchObject().

+
237  {
+
238  $extras = "";
+
239 
+
240  if($this->currObj instanceof TeamSpeak3_Node_Channel && $this->currObj->isSpacer())
+
241  {
+
242  switch($this->currObj->spacerGetType())
+
243  {
+
244  case (string) TeamSpeak3::SPACER_SOLIDLINE:
+
245  $extras .= " solidline";
+
246  break;
+
247 
+
248  case (string) TeamSpeak3::SPACER_DASHLINE:
+
249  $extras .= " dashline";
+
250  break;
+
251 
+
252  case (string) TeamSpeak3::SPACER_DASHDOTLINE:
+
253  $extras .= " dashdotline";
+
254  break;
+
255 
+
256  case (string) TeamSpeak3::SPACER_DASHDOTDOTLINE:
+
257  $extras .= " dashdotdotline";
+
258  break;
+
259 
+
260  case (string) TeamSpeak3::SPACER_DOTLINE:
+
261  $extras .= " dotline";
+
262  break;
+
263  }
+
264 
+
265  switch($this->currObj->spacerGetAlign())
+
266  {
+ +
268  $extras .= " center";
+
269  break;
+
270 
+ +
272  $extras .= " right";
+
273  break;
+
274 
+ +
276  $extras .= " left";
+
277  break;
+
278  }
+
279  }
+
280 
+
281  return "corpus " . $this->currObj->getClass(null) . $extras;
+
282  }
+
+
+
+ +
+
+ + + + + +
+ + + + + + + +
TeamSpeak3_Viewer_Html::getCorpusTitle ()
+
+protected
+
+ +

Returns the HTML img tags which can be used to display the various icons for a TeamSpeak_Node_Abstract object.

+
Returns
string
+ +

Definition at line 290 of file Html.php.

+ +

References TeamSpeak3_Helper_Convert\codec(), TeamSpeak3_Helper_Convert\groupType(), TeamSpeak3_Node_Channel\isSpacer(), TeamSpeak3_Helper_Convert\seconds(), and TeamSpeak3_Helper_Convert\versionShort().

+ +

Referenced by fetchObject().

+
291  {
+
292  if($this->currObj instanceof TeamSpeak3_Node_Server)
+
293  {
+
294  return "ID: " . $this->currObj->getId() . " | Clients: " . $this->currObj->clientCount() . "/" . $this->currObj["virtualserver_maxclients"] . " | Uptime: " . TeamSpeak3_Helper_Convert::seconds($this->currObj["virtualserver_uptime"]);
+
295  }
+
296  elseif($this->currObj instanceof TeamSpeak3_Node_Channel && !$this->currObj->isSpacer())
+
297  {
+
298  return "ID: " . $this->currObj->getId() . " | Codec: " . TeamSpeak3_Helper_Convert::codec($this->currObj["channel_codec"]) . " | Quality: " . $this->currObj["channel_codec_quality"];
+
299  }
+
300  elseif($this->currObj instanceof TeamSpeak3_Node_Client)
+
301  {
+
302  return "ID: " . $this->currObj->getId() . " | Version: " . TeamSpeak3_Helper_Convert::versionShort($this->currObj["client_version"]) . " | Platform: " . $this->currObj["client_platform"];
+
303  }
+
304  elseif($this->currObj instanceof TeamSpeak3_Node_Servergroup || $this->currObj instanceof TeamSpeak3_Node_Channelgroup)
+
305  {
+
306  return "ID: " . $this->currObj->getId() . " | Type: " . TeamSpeak3_Helper_Convert::groupType($this->currObj["type"]) . " (" . ($this->currObj["savedb"] ? "Permanent" : "Temporary") . ")";
+
307  }
+
308  }
+
+
+
+ +
+
+ + + + + +
+ + + + + + + +
TeamSpeak3_Viewer_Html::getCorpusIcon ()
+
+protected
+
+ +

Returns a HTML img tag which can be used to display the status icon for a TeamSpeak_Node_Abstract object.

+
Returns
string
+ +

Definition at line 316 of file Html.php.

+ +

References getImage(), and TeamSpeak3_Node_Channel\isSpacer().

+ +

Referenced by fetchObject().

+
317  {
+
318  if($this->currObj instanceof TeamSpeak3_Node_Channel && $this->currObj->isSpacer()) return;
+
319 
+
320  return $this->getImage($this->currObj->getIcon() . ".png");
+
321  }
+
+
+
+ +
+
+ + + + + +
+ + + + + + + +
TeamSpeak3_Viewer_Html::getCorpusName ()
+
+protected
+
+ +

Returns a string for the current corpus element which contains the display name for the current TeamSpeak_Node_Abstract object.

+
Returns
string
+ +

Definition at line 329 of file Html.php.

+ +

References TeamSpeak3\GROUP_NAMEMODE_BEFORE, TeamSpeak3\GROUP_NAMEMODE_BEHIND, TeamSpeak3_Node_Channel\isSpacer(), TeamSpeak3\SPACER_ALIGN_REPEAT, and TeamSpeak3\SPACER_CUSTOM.

+ +

Referenced by fetchObject().

+
330  {
+
331  if($this->currObj instanceof TeamSpeak3_Node_Channel && $this->currObj->isSpacer())
+
332  {
+
333  if($this->currObj->spacerGetType() != TeamSpeak3::SPACER_CUSTOM) return;
+
334 
+
335  $string = $this->currObj["channel_name"]->section("]", 1, 99);
+
336 
+
337  if($this->currObj->spacerGetAlign() == TeamSpeak3::SPACER_ALIGN_REPEAT)
+
338  {
+
339  $string->resize(30, $string);
+
340  }
+
341 
+
342  return htmlspecialchars($string);
+
343  }
+
344 
+
345  if($this->currObj instanceof TeamSpeak3_Node_Client)
+
346  {
+
347  $before = array();
+
348  $behind = array();
+
349 
+
350  foreach($this->currObj->memberOf() as $group)
+
351  {
+
352  if($group->getProperty("namemode") == TeamSpeak3::GROUP_NAMEMODE_BEFORE)
+
353  {
+
354  $before[] = "[" . htmlspecialchars($group["name"]) . "]";
+
355  }
+
356  elseif($group->getProperty("namemode") == TeamSpeak3::GROUP_NAMEMODE_BEHIND)
+
357  {
+
358  $behind[] = "[" . htmlspecialchars($group["name"]) . "]";
+
359  }
+
360  }
+
361 
+
362  return implode("", $before) . " " . htmlspecialchars($this->currObj) . " " . implode("", $behind);
+
363  }
+
364 
+
365  return htmlspecialchars($this->currObj);
+
366  }
+
+
+
+ +
+
+ + + + + +
+ + + + + + + +
TeamSpeak3_Viewer_Html::getSuffixClass ()
+
+protected
+
+ +

Returns a string for the current suffix element which can be used as a HTML class property.

+
Returns
string
+ +

Definition at line 374 of file Html.php.

+ +

Referenced by fetchObject().

+
375  {
+
376  return "suffix " . $this->currObj->getClass(null);
+
377  }
+
+
+
+ +
+
+ + + + + +
+ + + + + + + +
TeamSpeak3_Viewer_Html::getSuffixIcon ()
+
+protected
+
+ +

Returns the HTML img tags which can be used to display the various icons for a TeamSpeak_Node_Abstract object.

+
Returns
string
+ +

Definition at line 385 of file Html.php.

+ +

References getSuffixIconChannel(), getSuffixIconClient(), and getSuffixIconServer().

+ +

Referenced by fetchObject().

+
386  {
+
387  if($this->currObj instanceof TeamSpeak3_Node_Server)
+
388  {
+
389  return $this->getSuffixIconServer();
+
390  }
+
391  elseif($this->currObj instanceof TeamSpeak3_Node_Channel)
+
392  {
+
393  return $this->getSuffixIconChannel();
+
394  }
+
395  elseif($this->currObj instanceof TeamSpeak3_Node_Client)
+
396  {
+
397  return $this->getSuffixIconClient();
+
398  }
+
399  }
+
+
+
+ +
+
+ + + + + +
+ + + + + + + +
TeamSpeak3_Viewer_Html::getSuffixIconServer ()
+
+protected
+
+ +

Returns the HTML img tags which can be used to display the various icons for a TeamSpeak_Node_Server object.

+
Returns
string
+ +

Definition at line 407 of file Html.php.

+ +

References TeamSpeak3\factory(), getImage(), and TeamSpeak3_Helper_Convert\imageMimeType().

+ +

Referenced by getSuffixIcon().

+
408  {
+
409  $html = "";
+
410 
+
411  if($this->currObj["virtualserver_icon_id"])
+
412  {
+
413  if(!$this->currObj->iconIsLocal("virtualserver_icon_id") && $this->ftclient)
+
414  {
+
415  if(!isset($this->cacheIcon[$this->currObj["virtualserver_icon_id"]]))
+
416  {
+
417  $download = $this->currObj->transferInitDownload(rand(0x0000, 0xFFFF), 0, $this->currObj->iconGetName("virtualserver_icon_id"));
+
418 
+
419  if($this->ftclient == "data:image")
+
420  {
+
421  $download = TeamSpeak3::factory("filetransfer://" . $download["host"] . ":" . $download["port"])->download($download["ftkey"], $download["size"]);
+
422  }
+
423 
+
424  $this->cacheIcon[$this->currObj["virtualserver_icon_id"]] = $download;
+
425  }
+
426  else
+
427  {
+
428  $download = $this->cacheIcon[$this->currObj["virtualserver_icon_id"]];
+
429  }
+
430 
+
431  if($this->ftclient == "data:image")
+
432  {
+
433  $html .= $this->getImage("data:" . TeamSpeak3_Helper_Convert::imageMimeType($download) . ";base64," . base64_encode($download), "Server Icon", null, FALSE);
+
434  }
+
435  else
+
436  {
+
437  $html .= $this->getImage($this->ftclient . "?ftdata=" . base64_encode(serialize($download)), "Server Icon", null, FALSE);
+
438  }
+
439  }
+
440  elseif(in_array($this->currObj["virtualserver_icon_id"], $this->cachedIcons))
+
441  {
+
442  $html .= $this->getImage("group_icon_" . $this->currObj["virtualserver_icon_id"] . ".png", "Server Icon");
+
443  }
+
444  }
+
445 
+
446  return $html;
+
447  }
+
+
+
+ +
+
+ + + + + +
+ + + + + + + +
TeamSpeak3_Viewer_Html::getSuffixIconChannel ()
+
+protected
+
+ +

Returns the HTML img tags which can be used to display the various icons for a TeamSpeak_Node_Channel object.

+
Returns
string
+ +

Definition at line 455 of file Html.php.

+ +

References TeamSpeak3\CODEC_CELT_MONO, TeamSpeak3\CODEC_OPUS_MUSIC, TeamSpeak3\factory(), getImage(), TeamSpeak3_Helper_Convert\imageMimeType(), and TeamSpeak3_Node_Channel\isSpacer().

+ +

Referenced by getSuffixIcon().

+
456  {
+
457  if($this->currObj instanceof TeamSpeak3_Node_Channel && $this->currObj->isSpacer()) return;
+
458 
+
459  $html = "";
+
460 
+
461  if($this->currObj["channel_flag_default"])
+
462  {
+
463  $html .= $this->getImage("channel_flag_default.png", "Default Channel");
+
464  }
+
465 
+
466  if($this->currObj["channel_flag_password"])
+
467  {
+
468  $html .= $this->getImage("channel_flag_password.png", "Password-protected");
+
469  }
+
470 
+
471  if($this->currObj["channel_codec"] == TeamSpeak3::CODEC_CELT_MONO || $this->currObj["channel_codec"] == TeamSpeak3::CODEC_OPUS_MUSIC)
+
472  {
+
473  $html .= $this->getImage("channel_flag_music.png", "Music Codec");
+
474  }
+
475 
+
476  if($this->currObj["channel_needed_talk_power"])
+
477  {
+
478  $html .= $this->getImage("channel_flag_moderated.png", "Moderated");
+
479  }
+
480 
+
481  if($this->currObj["channel_icon_id"])
+
482  {
+
483  if(!$this->currObj->iconIsLocal("channel_icon_id") && $this->ftclient)
+
484  {
+
485  if(!isset($this->cacheIcon[$this->currObj["channel_icon_id"]]))
+
486  {
+
487  $download = $this->currObj->getParent()->transferInitDownload(rand(0x0000, 0xFFFF), 0, $this->currObj->iconGetName("channel_icon_id"));
+
488 
+
489  if($this->ftclient == "data:image")
+
490  {
+
491  $download = TeamSpeak3::factory("filetransfer://" . $download["host"] . ":" . $download["port"])->download($download["ftkey"], $download["size"]);
+
492  }
+
493 
+
494  $this->cacheIcon[$this->currObj["channel_icon_id"]] = $download;
+
495  }
+
496  else
+
497  {
+
498  $download = $this->cacheIcon[$this->currObj["channel_icon_id"]];
+
499  }
+
500 
+
501  if($this->ftclient == "data:image")
+
502  {
+
503  $html .= $this->getImage("data:" . TeamSpeak3_Helper_Convert::imageMimeType($download) . ";base64," . base64_encode($download), "Channel Icon", null, FALSE);
+
504  }
+
505  else
+
506  {
+
507  $html .= $this->getImage($this->ftclient . "?ftdata=" . base64_encode(serialize($download)), "Channel Icon", null, FALSE);
+
508  }
+
509  }
+
510  elseif(in_array($this->currObj["channel_icon_id"], $this->cachedIcons))
+
511  {
+
512  $html .= $this->getImage("group_icon_" . $this->currObj["channel_icon_id"] . ".png", "Channel Icon");
+
513  }
+
514  }
+
515 
+
516  return $html;
+
517  }
+
+
+
+ +
+
+ + + + + +
+ + + + + + + +
TeamSpeak3_Viewer_Html::getSuffixIconClient ()
+
+protected
+
+ +

Returns the HTML img tags which can be used to display the various icons for a TeamSpeak_Node_Client object.

+
Returns
string
+ +

Definition at line 525 of file Html.php.

+ +

References TeamSpeak3\factory(), getImage(), and TeamSpeak3_Helper_Convert\imageMimeType().

+ +

Referenced by getSuffixIcon().

+
526  {
+
527  $html = "";
+
528 
+
529  if($this->currObj["client_is_priority_speaker"])
+
530  {
+
531  $html .= $this->getImage("client_priority.png", "Priority Speaker");
+
532  }
+
533 
+
534  if($this->currObj["client_is_channel_commander"])
+
535  {
+
536  $html .= $this->getImage("client_cc.png", "Channel Commander");
+
537  }
+
538 
+
539  if($this->currObj["client_is_talker"])
+
540  {
+
541  $html .= $this->getImage("client_talker.png", "Talk Power granted");
+
542  }
+
543  elseif($cntp = $this->currObj->getParent()->channelGetById($this->currObj["cid"])->channel_needed_talk_power)
+
544  {
+
545  if($cntp > $this->currObj["client_talk_power"])
+
546  {
+
547  $html .= $this->getImage("client_mic_muted.png", "Insufficient Talk Power");
+
548  }
+
549  }
+
550 
+
551  foreach($this->currObj->memberOf() as $group)
+
552  {
+
553  if(!$group["iconid"]) continue;
+
554 
+
555  $type = ($group instanceof TeamSpeak3_Node_Servergroup) ? "Server Group" : "Channel Group";
+
556 
+
557  if(!$group->iconIsLocal("iconid") && $this->ftclient)
+
558  {
+
559  if(!isset($this->cacheIcon[$group["iconid"]]))
+
560  {
+
561  $download = $group->getParent()->transferInitDownload(rand(0x0000, 0xFFFF), 0, $group->iconGetName("iconid"));
+
562 
+
563  if($this->ftclient == "data:image")
+
564  {
+
565  $download = TeamSpeak3::factory("filetransfer://" . $download["host"] . ":" . $download["port"])->download($download["ftkey"], $download["size"]);
+
566  }
+
567 
+
568  $this->cacheIcon[$group["iconid"]] = $download;
+
569  }
+
570  else
+
571  {
+
572  $download = $this->cacheIcon[$group["iconid"]];
+
573  }
+
574 
+
575  if($this->ftclient == "data:image")
+
576  {
+
577  $html .= $this->getImage("data:" . TeamSpeak3_Helper_Convert::imageMimeType($download) . ";base64," . base64_encode($download), $group . " [" . $type . "]", null, FALSE);
+
578  }
+
579  else
+
580  {
+
581  $html .= $this->getImage($this->ftclient . "?ftdata=" . base64_encode(serialize($download)), $group . " [" . $type . "]", null, FALSE);
+
582  }
+
583  }
+
584  elseif(in_array($group["iconid"], $this->cachedIcons))
+
585  {
+
586  $html .= $this->getImage("group_icon_" . $group["iconid"] . ".png", $group . " [" . $type . "]");
+
587  }
+
588  }
+
589 
+
590  if($this->currObj["client_icon_id"])
+
591  {
+
592  if(!$this->currObj->iconIsLocal("client_icon_id") && $this->ftclient)
+
593  {
+
594  if(!isset($this->cacheIcon[$this->currObj["client_icon_id"]]))
+
595  {
+
596  $download = $this->currObj->getParent()->transferInitDownload(rand(0x0000, 0xFFFF), 0, $this->currObj->iconGetName("client_icon_id"));
+
597 
+
598  if($this->ftclient == "data:image")
+
599  {
+
600  $download = TeamSpeak3::factory("filetransfer://" . $download["host"] . ":" . $download["port"])->download($download["ftkey"], $download["size"]);
+
601  }
+
602 
+
603  $this->cacheIcon[$this->currObj["client_icon_id"]] = $download;
+
604  }
+
605  else
+
606  {
+
607  $download = $this->cacheIcon[$this->currObj["client_icon_id"]];
+
608  }
+
609 
+
610  if($this->ftclient == "data:image")
+
611  {
+
612  $html .= $this->getImage("data:" . TeamSpeak3_Helper_Convert::imageMimeType($download) . ";base64," . base64_encode($download), "Client Icon", null, FALSE);
+
613  }
+
614  else
+
615  {
+
616  $html .= $this->getImage($this->ftclient . "?ftdata=" . base64_encode(serialize($download)), "Client Icon", null, FALSE);
+
617  }
+
618  }
+
619  elseif(in_array($this->currObj["client_icon_id"], $this->cachedIcons))
+
620  {
+
621  $html .= $this->getImage("group_icon_" . $this->currObj["client_icon_id"] . ".png", "Client Icon");
+
622  }
+
623  }
+
624 
+
625  return $html;
+
626  }
+
+
+
+ +
+
+ + + + + +
+ + + + + + + +
TeamSpeak3_Viewer_Html::getSuffixFlag ()
+
+protected
+
+ +

Returns a HTML img tag which can be used to display the country flag for a TeamSpeak_Node_Client object.

+
Returns
string
+ +

Definition at line 634 of file Html.php.

+ +

References getImage().

+ +

Referenced by fetchObject().

+
635  {
+
636  if(!$this->currObj instanceof TeamSpeak3_Node_Client) return;
+
637 
+
638  if($this->flagpath && $this->currObj["client_country"])
+
639  {
+
640  return $this->getImage($this->currObj["client_country"]->toLower() . ".png", $this->currObj["client_country"], null, FALSE, TRUE);
+
641  }
+
642  }
+
+
+
+ +
+
+ + + + + +
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
TeamSpeak3_Viewer_Html::getImage ( $name,
 $text = "",
 $class = null,
 $iconpath = TRUE,
 $flagpath = FALSE 
)
+
+protected
+
+ +

Returns the code to display a custom HTML img tag.

+
Parameters
+ + + + + + +
string$name
string$text
string$class
boolean$iconpath
boolean$flagpath
+
+
+
Returns
string
+ +

Definition at line 654 of file Html.php.

+ +

Referenced by getCorpusIcon(), getPrefix(), getSuffixFlag(), getSuffixIconChannel(), getSuffixIconClient(), and getSuffixIconServer().

+
655  {
+
656  $src = "";
+
657 
+
658  if($iconpath)
+
659  {
+
660  $src = $this->iconpath;
+
661  }
+
662 
+
663  if($flagpath)
+
664  {
+
665  $src = $this->flagpath;
+
666  }
+
667 
+
668  return "<img src='" . $src . $name . "' title='" . $text . "' alt='' align='top' />";
+
669  }
+
+
+
+
The documentation for this class was generated from the following file: +
+
+ + + + diff --git a/lib/docs/html/class_team_speak3___viewer___html.js b/lib/docs/html/class_team_speak3___viewer___html.js new file mode 100644 index 0000000..76763b2 --- /dev/null +++ b/lib/docs/html/class_team_speak3___viewer___html.js @@ -0,0 +1,31 @@ +var class_team_speak3___viewer___html = +[ + [ "__construct", "class_team_speak3___viewer___html.html#a425d8c4c94925133b9aeb99e23de4a9d", null ], + [ "fetchObject", "class_team_speak3___viewer___html.html#a52d2ea098679874eb120da38727324c5", null ], + [ "getContainerIdent", "class_team_speak3___viewer___html.html#a85e30363f2ec479353bc9101f42dab87", null ], + [ "getContainerClass", "class_team_speak3___viewer___html.html#a1264b2938ad89a3688b6b86f81d91640", null ], + [ "getContainerSummary", "class_team_speak3___viewer___html.html#aca40f5b5b2a6f778e7913a9ed203a316", null ], + [ "getRowClass", "class_team_speak3___viewer___html.html#a766b7745f531b280aad2bfc6754d5134", null ], + [ "getPrefixClass", "class_team_speak3___viewer___html.html#ad929c3202591daf32252e51637487d7b", null ], + [ "getPrefix", "class_team_speak3___viewer___html.html#a835b464739dd5af836b1b9d4f4b5d4d8", null ], + [ "getCorpusClass", "class_team_speak3___viewer___html.html#a2d994d1abe066712d74d9bdef2f1a579", null ], + [ "getCorpusTitle", "class_team_speak3___viewer___html.html#afd13c192016d147b8fc43284395d4140", null ], + [ "getCorpusIcon", "class_team_speak3___viewer___html.html#a89ad59f4d773c0ad5d99e6fd45f27d99", null ], + [ "getCorpusName", "class_team_speak3___viewer___html.html#a3b70618ebebf0ad552f983340d72bacb", null ], + [ "getSuffixClass", "class_team_speak3___viewer___html.html#a5538c134542e5edae2a0a8607241d63f", null ], + [ "getSuffixIcon", "class_team_speak3___viewer___html.html#a60f60532cd44e2e259e3ed120208ce2f", null ], + [ "getSuffixIconServer", "class_team_speak3___viewer___html.html#a1c3ac91d48f71be186f661dee7158d64", null ], + [ "getSuffixIconChannel", "class_team_speak3___viewer___html.html#ac7d4636a787439c500691818edeae752", null ], + [ "getSuffixIconClient", "class_team_speak3___viewer___html.html#a9d56bf81f140772079751f2361b3ffc2", null ], + [ "getSuffixFlag", "class_team_speak3___viewer___html.html#ac4ba12c86e5f692f1bcabee7741c9efb", null ], + [ "getImage", "class_team_speak3___viewer___html.html#a74577ba126405e719950f41278d23137", null ], + [ "$pattern", "class_team_speak3___viewer___html.html#a230f3d98fcff537c2d75675ac367c58d", null ], + [ "$currObj", "class_team_speak3___viewer___html.html#a9ea4502a15adc19b6b8dc244ab5db3c0", null ], + [ "$currSib", "class_team_speak3___viewer___html.html#a3bd048a41ad30081e3e39fd8bcf46e02", null ], + [ "$currNum", "class_team_speak3___viewer___html.html#a8fc6567d31c471e370003f143774539f", null ], + [ "$iconpath", "class_team_speak3___viewer___html.html#a2d2f8fba681f5afb15543a5504980bc8", null ], + [ "$flagpath", "class_team_speak3___viewer___html.html#a7efd02e4723bc602658b4a87ddc79e09", null ], + [ "$ftclient", "class_team_speak3___viewer___html.html#ab0a31c8ffe8228951e5e948d44126b2c", null ], + [ "$cachedIcons", "class_team_speak3___viewer___html.html#a75553137aa5bf9383be83f9eb3d9db55", null ], + [ "$remoteIcons", "class_team_speak3___viewer___html.html#ae5dee56bf71a5dbba3e78ed29cc29a54", null ] +]; \ No newline at end of file diff --git a/lib/docs/html/class_team_speak3___viewer___html.png b/lib/docs/html/class_team_speak3___viewer___html.png new file mode 100644 index 0000000000000000000000000000000000000000..1fee1ffef64e9d26b51ebd4754f8e31da6b9261c GIT binary patch literal 789 zcmeAS@N?(olHy`uVBq!ia0vp^dw@8AgBeIp5qzHjq$C1-LR|m<{|{u|fBxC4YVQOf z3ycpOI55+9+bkfLqa?^Lm;tB=1g@S6F=Aj~TH@*A7*fIbcJ9SVOB8rq`LD0~`QJaz zy_Kcs*5=!>I;JIs(cJ3_cog?-(m8FkDncdG$G5`s)k02vPunREFaMjoB%r+cxWm&M z`Pcuy)@;^XwcBR3%F&{U`=isOcN>XZ5I&s!r2NBn<2eudf4rSOC3*Vu2l5^z6s$wV&51Oq083bxP6deX#7$%Nsk-U3ES;|H0!q`RBjxj8gNQ80R^A zdhtE^mojSJ6IR@svSWKZQ@CUC*9|5+`u40hJNJIq;w)uP|Eiq@-j|Ml&HJ%jf2+#< zx{T>hZs&LHQTb~>>%*ig&cbn%sxn&Rr=?1UFvwpKKd?ed^55(1gkKXMhJP!3+1@t) zD%*m7H5&(h---sgSsxf|O&&5NIJ^G4QkK{>Lr<^M44v z^Q!Vy%|}QGuPXV$@#m=Da~{qjJDa3XR!@f|+YkM=nshjYQz&${(D!fN541AY=}ntG zePVg{KNh(Mo_F`3m2a*86~w&n?}dNe%KR5XVWCi4pAqDh>GPMdSV}$IJ+b)(Fby+! My85}Sb4q9e07^iB`Tzg` literal 0 HcmV?d00001 diff --git a/lib/docs/html/class_team_speak3___viewer___interface-members.html b/lib/docs/html/class_team_speak3___viewer___interface-members.html new file mode 100644 index 0000000..96899f4 --- /dev/null +++ b/lib/docs/html/class_team_speak3___viewer___interface-members.html @@ -0,0 +1,127 @@ + + + + + + +TeamSpeak 3 PHP Framework: Member List + + + + + + + + + + + + + +
+
+ + + + + + + +
+
TeamSpeak 3 PHP Framework +  1.1.23 +
+
Copyright © Planet TeamSpeak. All rights reserved.
+
+
+ + + + + +
+
+ +
+
+
+ +
+ + + + +
+ +
+ +
+
+
TeamSpeak3_Viewer_Interface Member List
+
+
+ +

This is the complete list of members for TeamSpeak3_Viewer_Interface, including all inherited members.

+ + +
fetchObject(TeamSpeak3_Node_Abstract $node, array $siblings=array())TeamSpeak3_Viewer_Interface
+
+ + + + diff --git a/lib/docs/html/class_team_speak3___viewer___text-members.html b/lib/docs/html/class_team_speak3___viewer___text-members.html new file mode 100644 index 0000000..4fba238 --- /dev/null +++ b/lib/docs/html/class_team_speak3___viewer___text-members.html @@ -0,0 +1,131 @@ + + + + + + +TeamSpeak 3 PHP Framework: Member List + + + + + + + + + + + + + +
+
+ + + + + + + +
+
TeamSpeak 3 PHP Framework +  1.1.23 +
+
Copyright © Planet TeamSpeak. All rights reserved.
+
+
+ + + + + +
+
+ +
+
+
+ +
+ + + + +
+ +
+ +
+
+
TeamSpeak3_Viewer_Text Member List
+
+
+ +

This is the complete list of members for TeamSpeak3_Viewer_Text, including all inherited members.

+ + + + + + +
$pattern (defined in TeamSpeak3_Viewer_Text)TeamSpeak3_Viewer_Textprotected
fetchObject(TeamSpeak3_Node_Abstract $node, array $siblings=array())TeamSpeak3_Viewer_Text
getCorpusIcon()TeamSpeak3_Viewer_Textprotected
getCorpusName()TeamSpeak3_Viewer_Textprotected
getPrefix()TeamSpeak3_Viewer_Textprotected
+
+ + + + diff --git a/lib/docs/html/class_team_speak3___viewer___text.html b/lib/docs/html/class_team_speak3___viewer___text.html new file mode 100644 index 0000000..1422d7b --- /dev/null +++ b/lib/docs/html/class_team_speak3___viewer___text.html @@ -0,0 +1,341 @@ + + + + + + +TeamSpeak 3 PHP Framework: TeamSpeak3_Viewer_Text Class Reference + + + + + + + + + + + + + +
+
+ + + + + + + +
+
TeamSpeak 3 PHP Framework +  1.1.23 +
+
Copyright © Planet TeamSpeak. All rights reserved.
+
+
+ + + + + +
+
+ +
+
+
+ +
+ + + + +
+ +
+ +
+ +
+
TeamSpeak3_Viewer_Text Class Reference
+
+
+ +

Renders nodes used in ASCII-based TeamSpeak 3 viewers. + More...

+
+ + Inheritance diagram for TeamSpeak3_Viewer_Text:
+
+
+ + + + + + +

+Public Member Functions

 fetchObject (TeamSpeak3_Node_Abstract $node, array $siblings=array())
 Returns the code needed to display a node in a TeamSpeak 3 viewer. More...
 
+ + + + + + + + + + +

+Protected Member Functions

 getPrefix ()
 Returns the ASCII string to display the prefix of the current node. More...
 
 getCorpusIcon ()
 Returns an ASCII string which can be used to display the status icon for a TeamSpeak_Node_Abstract object. More...
 
 getCorpusName ()
 Returns a string for the current corpus element which contains the display name for the current TeamSpeak_Node_Abstract object. More...
 
+ + + +

+Protected Attributes

$pattern = "%0%1 %2\n"
 
+

Detailed Description

+

Renders nodes used in ASCII-based TeamSpeak 3 viewers.

+ +

Definition at line 32 of file Text.php.

+

Member Function Documentation

+ +
+
+ + + + + + + + + + + + + + + + + + +
TeamSpeak3_Viewer_Text::fetchObject (TeamSpeak3_Node_Abstract $node,
array $siblings = array() 
)
+
+ +

Returns the code needed to display a node in a TeamSpeak 3 viewer.

+
Parameters
+ + + +
TeamSpeak3_Node_Abstract$node
array$siblings
+
+
+
Returns
string
+ +

Definition at line 48 of file Text.php.

+ +

References TeamSpeak3_Helper_String\factory(), getCorpusIcon(), getCorpusName(), and getPrefix().

+
49  {
+
50  $this->currObj = $node;
+
51  $this->currSib = $siblings;
+
52 
+
53  $args = array(
+
54  $this->getPrefix(),
+
55  $this->getCorpusIcon(),
+
56  $this->getCorpusName(),
+
57  );
+
58 
+
59  return TeamSpeak3_Helper_String::factory($this->pattern)->arg($args);
+
60  }
+
+
+
+ +
+
+ + + + + +
+ + + + + + + +
TeamSpeak3_Viewer_Text::getPrefix ()
+
+protected
+
+ +

Returns the ASCII string to display the prefix of the current node.

+
Returns
string
+ +

Definition at line 67 of file Text.php.

+ +

Referenced by fetchObject().

+
68  {
+
69  $prefix = "";
+
70 
+
71  if(count($this->currSib))
+
72  {
+
73  $last = array_pop($this->currSib);
+
74 
+
75  foreach($this->currSib as $sibling)
+
76  {
+
77  $prefix .= ($sibling) ? "| " : " ";
+
78  }
+
79 
+
80  $prefix .= ($last) ? "\\-" : "|-";
+
81  }
+
82 
+
83  return $prefix;
+
84  }
+
+
+
+ +
+
+ + + + + +
+ + + + + + + +
TeamSpeak3_Viewer_Text::getCorpusIcon ()
+
+protected
+
+ +

Returns an ASCII string which can be used to display the status icon for a TeamSpeak_Node_Abstract object.

+
Returns
string
+ +

Definition at line 92 of file Text.php.

+ +

Referenced by fetchObject().

+
93  {
+
94  return $this->currObj->getSymbol();
+
95  }
+
+
+
+ +
+
+ + + + + +
+ + + + + + + +
TeamSpeak3_Viewer_Text::getCorpusName ()
+
+protected
+
+ +

Returns a string for the current corpus element which contains the display name for the current TeamSpeak_Node_Abstract object.

+
Returns
string
+ +

Definition at line 103 of file Text.php.

+ +

Referenced by fetchObject().

+
104  {
+
105  return $this->currObj;
+
106  }
+
+
+
+
The documentation for this class was generated from the following file: +
+
+ + + + diff --git a/lib/docs/html/class_team_speak3___viewer___text.js b/lib/docs/html/class_team_speak3___viewer___text.js new file mode 100644 index 0000000..bc854ad --- /dev/null +++ b/lib/docs/html/class_team_speak3___viewer___text.js @@ -0,0 +1,8 @@ +var class_team_speak3___viewer___text = +[ + [ "fetchObject", "class_team_speak3___viewer___text.html#a8fb29a4ed7e5a605bd59bed82fd912bc", null ], + [ "getPrefix", "class_team_speak3___viewer___text.html#acd7d9ebbae3700e38b0bcb6767728936", null ], + [ "getCorpusIcon", "class_team_speak3___viewer___text.html#a7bf9b2137c14dad13c8fd2e2df33615c", null ], + [ "getCorpusName", "class_team_speak3___viewer___text.html#a8d6fcf3812bf72c81214263da3e6f555", null ], + [ "$pattern", "class_team_speak3___viewer___text.html#aa39cd6d4d771d9c4d94e368e1b548405", null ] +]; \ No newline at end of file diff --git a/lib/docs/html/class_team_speak3___viewer___text.png b/lib/docs/html/class_team_speak3___viewer___text.png new file mode 100644 index 0000000000000000000000000000000000000000..289ae441b6ea13fa058573d6f8aa7ee4a4c67b8f GIT binary patch literal 797 zcmeAS@N?(olHy`uVBq!ia0vp^dw@8AgBeIp5qzHjq$C1-LR|m<{|{u|fBxC4YVQOf z3ycpOI55+9+bkfLqa?^Lm;tB=1g@S6F=Aj~TI1>B7*fIbcJ9TzCki~S{N_Rb|4%NT z#j@ex$t8E!Mue=oqt+x{b4=p-)ZE+KB9E$h7H1vwzQmzh;VHF{XMUf(Cs(O?rJu#| zk3W9Z?@igzQhjQ*SCG!+pSuly-gx=-!xgZO)UlM&mcJ&t9)>EY5rW%BHS-{e#zjrXT9u=V&*b{~dVu>#6+sgR_4! zrT%u}lSsYy^vs9fYd5b`m@c-DZ;JDk_mj`pl;fGgfvii5Gfvib+e-zvGncMFk`*F75O0LSwxpL-tp1%tJX8$OU&+`2C zYf-FQRA2tT*ff2KVAO|6CQkZ4fC1&n`l0z3!;Dbl!}T>jKK90cx@+Tpt$Y~1 zol#;jE5Csgw_HMtn9TuTFg5^nF(_|&!0487kh$kV6T8GhGzAfwOHEdLFaX0HDlcF+ zKefT5eDd>_VwwK+|NDhR-T3eCIrS%YM(w*(0S>*3`xtEk^8d2^nc47oTeR-g>;pdH z;hy{A*S@%%#`fv<+WQvkxBU{kci>Inx9s@WF?W2QN6+nf;4O7)`L+DG9a=loKWt4n ztz~)gY?_Sy#``bty}kC?^_rXhMus`>9-e<|m1oCV1`g`PRlDPUzMcKzesg){=Rf=6 z)@Ywv+PI$isX(dvrp|xnsl}Y~*K4ZR{mz@&;1T%cpGp1V+fQJ@dt1(j{p{VPVeWG( zZ|DB0{3jlNiS#%oXvp%Sm=DY`7hWj)9){%p0v8ZS4G2HU|MGI MboFyt=akR{0126lzW@LL literal 0 HcmV?d00001 diff --git a/lib/docs/html/classes.html b/lib/docs/html/classes.html new file mode 100644 index 0000000..9be0878 --- /dev/null +++ b/lib/docs/html/classes.html @@ -0,0 +1,147 @@ + + + + + + +TeamSpeak 3 PHP Framework: Class Index + + + + + + + + + + + + + +
+
+ + + + + + + +
+
TeamSpeak 3 PHP Framework +  1.1.23 +
+
Copyright © Planet TeamSpeak. All rights reserved.
+
+
+ + + + + +
+
+ +
+
+
+ +
+ + + + +
+ +
+ +
+
+
Class Index
+
+
+
A | E | H | N | T | V
+ + + + + + + + + + + + + + + +
  A  
+
TeamSpeak3_Adapter_TSDNS   TeamSpeak3_Helper_Exception   TeamSpeak3_Node_Channel   TeamSpeak3_Transport_TCP   
TeamSpeak3_Adapter_TSDNS_Exception   TeamSpeak3_Helper_Profiler   TeamSpeak3_Node_Channelgroup   TeamSpeak3_Transport_UDP   
TeamSpeak3_Adapter_Abstract   TeamSpeak3_Adapter_Update   TeamSpeak3_Helper_Profiler_Exception   TeamSpeak3_Node_Client   
  V  
+
TeamSpeak3_Adapter_Blacklist   TeamSpeak3_Adapter_Update_Exception   TeamSpeak3_Helper_Profiler_Timer   TeamSpeak3_Node_Exception   
TeamSpeak3_Adapter_Blacklist_Exception   
  E  
+
TeamSpeak3_Helper_Signal   TeamSpeak3_Node_Host   TeamSpeak3_Viewer_Html   
TeamSpeak3_Adapter_Exception   TeamSpeak3_Helper_Signal_Exception   TeamSpeak3_Node_Server   TeamSpeak3_Viewer_Interface   
TeamSpeak3_Adapter_FileTransfer   TeamSpeak3_Exception   TeamSpeak3_Helper_Signal_Handler   TeamSpeak3_Node_Servergroup   TeamSpeak3_Viewer_Text   
TeamSpeak3_Adapter_FileTransfer_Exception   
  H  
+
TeamSpeak3_Helper_Signal_Interface   
  T  
+
TeamSpeak3_Adapter_ServerQuery   TeamSpeak3_Helper_String   
TeamSpeak3_Adapter_ServerQuery_Event   TeamSpeak3_Helper_Char   TeamSpeak3_Helper_Uri   TeamSpeak3   
TeamSpeak3_Adapter_ServerQuery_Exception   TeamSpeak3_Helper_Convert   
  N  
+
TeamSpeak3_Transport_Abstract   
TeamSpeak3_Adapter_ServerQuery_Reply   TeamSpeak3_Helper_Crypt   TeamSpeak3_Transport_Exception   
TeamSpeak3_Node_Abstract   
+
A | E | H | N | T | V
+
+
+ + + + diff --git a/lib/docs/html/closed.png b/lib/docs/html/closed.png new file mode 100644 index 0000000000000000000000000000000000000000..e4f630748de1e3888ae4c5d4849e607de49fe833 GIT binary patch literal 132 zcmeAS@N?(olHy`uVBq!ia0vp^oFL4>1|%O$WD@{V-kvUwAr*{o?|SnxDDt>ow>gA#j f%b4eRG<{VojuH`YU-C;IXe@)LtDnm{r-UW|cNr_R literal 0 HcmV?d00001 diff --git a/lib/docs/html/deprecated.html b/lib/docs/html/deprecated.html new file mode 100644 index 0000000..726facb --- /dev/null +++ b/lib/docs/html/deprecated.html @@ -0,0 +1,150 @@ + + + + + + +TeamSpeak 3 PHP Framework: Deprecated List + + + + + + + + + + + + + +
+
+ + + + + + + +
+
TeamSpeak 3 PHP Framework +  1.1.23 +
+
Copyright © Planet TeamSpeak. All rights reserved.
+
+
+ + + + +
+
+ +
+
+
+ +
+ + + + +
+ +
+ +
+
+
Deprecated List
+
+
+
+
Member TeamSpeak3_Node_Channel::clientPermAssignByName ($cldbid, $permname, $permvalue)
+
+
Member TeamSpeak3_Node_Channel::clientPermRemoveByName ($cldbid, $permname)
+
+
Member TeamSpeak3_Node_Channel::permAssignByName ($permname, $permvalue)
+
+
Member TeamSpeak3_Node_Channel::permRemoveByName ($permname)
+
+
Member TeamSpeak3_Node_Channelgroup::permAssignByName ($permname, $permvalue)
+
+
Member TeamSpeak3_Node_Channelgroup::permRemoveByName ($permname)
+
+
Member TeamSpeak3_Node_Channelgroup::tokenCreate ($cid, $description=null, $customset=null)
+
+
Member TeamSpeak3_Node_Client::permAssignByName ($permname, $permvalue, $permskip=FALSE)
+
+
Member TeamSpeak3_Node_Client::permRemoveByName ($permname)
+
+
Member TeamSpeak3_Node_Server::tokenCreate ($type=TeamSpeak3::TOKEN_SERVERGROUP, $id1, $id2=0, $description=null, $customset=null)
+
+
Member TeamSpeak3_Node_Server::tokenDelete ($token)
+
+
Member TeamSpeak3_Node_Server::tokenList ($translate=FALSE)
+
+
Member TeamSpeak3_Node_Server::tokenUse ($token)
+
+
Member TeamSpeak3_Node_Servergroup::permAssignByName ($permname, $permvalue, $permnegated=FALSE, $permskip=FALSE)
+
+
Member TeamSpeak3_Node_Servergroup::permRemoveByName ($permname)
+
+
Member TeamSpeak3_Node_Servergroup::tokenCreate ($description=null, $customset=null)
+
+
+
+
+ + + + diff --git a/lib/docs/html/dir_10d0dafa9b3c98f86f6c3e308f71f5e1.html b/lib/docs/html/dir_10d0dafa9b3c98f86f6c3e308f71f5e1.html new file mode 100644 index 0000000..b95ef85 --- /dev/null +++ b/lib/docs/html/dir_10d0dafa9b3c98f86f6c3e308f71f5e1.html @@ -0,0 +1,130 @@ + + + + + + +TeamSpeak 3 PHP Framework: TeamSpeak3/Helper/Signal Directory Reference + + + + + + + + + + + + + +
+
+ + + + + + + +
+
TeamSpeak 3 PHP Framework +  1.1.23 +
+
Copyright © Planet TeamSpeak. All rights reserved.
+
+
+ + + + +
+
+ +
+
+
+ +
+ + + + +
+ +
+ +
+
+
Signal Directory Reference
+
+
+ + + + + + + + + + + +

+Files

file  Exception.php [code]
 TeamSpeak 3 PHP Framework.
 
file  Handler.php [code]
 TeamSpeak 3 PHP Framework.
 
file  Interface.php [code]
 TeamSpeak 3 PHP Framework.
 
+
+
+ + + + diff --git a/lib/docs/html/dir_10d0dafa9b3c98f86f6c3e308f71f5e1.js b/lib/docs/html/dir_10d0dafa9b3c98f86f6c3e308f71f5e1.js new file mode 100644 index 0000000..76bb5a5 --- /dev/null +++ b/lib/docs/html/dir_10d0dafa9b3c98f86f6c3e308f71f5e1.js @@ -0,0 +1,12 @@ +var dir_10d0dafa9b3c98f86f6c3e308f71f5e1 = +[ + [ "Exception.php", "_helper_2_signal_2_exception_8php.html", [ + [ "TeamSpeak3_Helper_Signal_Exception", "class_team_speak3___helper___signal___exception.html", "class_team_speak3___helper___signal___exception" ] + ] ], + [ "Handler.php", "_handler_8php.html", [ + [ "TeamSpeak3_Helper_Signal_Handler", "class_team_speak3___helper___signal___handler.html", "class_team_speak3___helper___signal___handler" ] + ] ], + [ "Interface.php", "_helper_2_signal_2_interface_8php.html", [ + [ "TeamSpeak3_Helper_Signal_Interface", "interface_team_speak3___helper___signal___interface.html", "interface_team_speak3___helper___signal___interface" ] + ] ] +]; \ No newline at end of file diff --git a/lib/docs/html/dir_1e759c367c240af77b5353a40d4dc42a.html b/lib/docs/html/dir_1e759c367c240af77b5353a40d4dc42a.html new file mode 100644 index 0000000..504c77b --- /dev/null +++ b/lib/docs/html/dir_1e759c367c240af77b5353a40d4dc42a.html @@ -0,0 +1,155 @@ + + + + + + +TeamSpeak 3 PHP Framework: TeamSpeak3/Adapter Directory Reference + + + + + + + + + + + + + +
+
+ + + + + + + +
+
TeamSpeak 3 PHP Framework +  1.1.23 +
+
Copyright © Planet TeamSpeak. All rights reserved.
+
+
+ + + + +
+
+ +
+
+
+ +
+ + + + +
+ +
+ +
+
+
Adapter Directory Reference
+
+
+ + + + + + + + + + + + +

+Directories

directory  Blacklist
 
directory  FileTransfer
 
directory  ServerQuery
 
directory  TSDNS
 
directory  Update
 
+ + + + + + + + + + + + + + + + + + + + + + +

+Files

file  Abstract.php [code]
 TeamSpeak 3 PHP Framework.
 
file  Blacklist.php [code]
 TeamSpeak 3 PHP Framework.
 
file  Exception.php [code]
 TeamSpeak 3 PHP Framework.
 
file  FileTransfer.php [code]
 TeamSpeak 3 PHP Framework.
 
file  ServerQuery.php [code]
 TeamSpeak 3 PHP Framework.
 
file  TSDNS.php [code]
 TeamSpeak 3 PHP Framework.
 
file  Update.php [code]
 TeamSpeak 3 PHP Framework.
 
+
+
+ + + + diff --git a/lib/docs/html/dir_1e759c367c240af77b5353a40d4dc42a.js b/lib/docs/html/dir_1e759c367c240af77b5353a40d4dc42a.js new file mode 100644 index 0000000..478c63e --- /dev/null +++ b/lib/docs/html/dir_1e759c367c240af77b5353a40d4dc42a.js @@ -0,0 +1,29 @@ +var dir_1e759c367c240af77b5353a40d4dc42a = +[ + [ "Blacklist", "dir_d08920670320d734586288a6d43047d3.html", "dir_d08920670320d734586288a6d43047d3" ], + [ "FileTransfer", "dir_dadcfc53e6a1230ff2f48f6f7265c16c.html", "dir_dadcfc53e6a1230ff2f48f6f7265c16c" ], + [ "ServerQuery", "dir_bafc68d5a3d8339df3fadcdecb8cd0fc.html", "dir_bafc68d5a3d8339df3fadcdecb8cd0fc" ], + [ "TSDNS", "dir_79b267753267ba2a550585ecabe3d90e.html", "dir_79b267753267ba2a550585ecabe3d90e" ], + [ "Update", "dir_bfc25ac9d3f1d0418a4ff48c6329f953.html", "dir_bfc25ac9d3f1d0418a4ff48c6329f953" ], + [ "Abstract.php", "_adapter_2_abstract_8php.html", [ + [ "TeamSpeak3_Adapter_Abstract", "class_team_speak3___adapter___abstract.html", "class_team_speak3___adapter___abstract" ] + ] ], + [ "Blacklist.php", "_blacklist_8php.html", [ + [ "TeamSpeak3_Adapter_Blacklist", "class_team_speak3___adapter___blacklist.html", "class_team_speak3___adapter___blacklist" ] + ] ], + [ "Exception.php", "_adapter_2_exception_8php.html", [ + [ "TeamSpeak3_Adapter_Exception", "class_team_speak3___adapter___exception.html", "class_team_speak3___adapter___exception" ] + ] ], + [ "FileTransfer.php", "_file_transfer_8php.html", [ + [ "TeamSpeak3_Adapter_FileTransfer", "class_team_speak3___adapter___file_transfer.html", "class_team_speak3___adapter___file_transfer" ] + ] ], + [ "ServerQuery.php", "_server_query_8php.html", [ + [ "TeamSpeak3_Adapter_ServerQuery", "class_team_speak3___adapter___server_query.html", "class_team_speak3___adapter___server_query" ] + ] ], + [ "TSDNS.php", "_t_s_d_n_s_8php.html", [ + [ "TeamSpeak3_Adapter_TSDNS", "class_team_speak3___adapter___t_s_d_n_s.html", "class_team_speak3___adapter___t_s_d_n_s" ] + ] ], + [ "Update.php", "_update_8php.html", [ + [ "TeamSpeak3_Adapter_Update", "class_team_speak3___adapter___update.html", "class_team_speak3___adapter___update" ] + ] ] +]; \ No newline at end of file diff --git a/lib/docs/html/dir_3d7cd49b95def433e02a0e6f52be25f0.html b/lib/docs/html/dir_3d7cd49b95def433e02a0e6f52be25f0.html new file mode 100644 index 0000000..dd27710 --- /dev/null +++ b/lib/docs/html/dir_3d7cd49b95def433e02a0e6f52be25f0.html @@ -0,0 +1,145 @@ + + + + + + +TeamSpeak 3 PHP Framework: TeamSpeak3/Node Directory Reference + + + + + + + + + + + + + +
+
+ + + + + + + +
+
TeamSpeak 3 PHP Framework +  1.1.23 +
+
Copyright © Planet TeamSpeak. All rights reserved.
+
+
+ + + + +
+
+ +
+
+
+ +
+ + + + +
+ +
+ +
+
+
Node Directory Reference
+
+
+ + + + + + + + + + + + + + + + + + + + + + + + + + +

+Files

file  Abstract.php [code]
 TeamSpeak 3 PHP Framework.
 
file  Channel.php [code]
 TeamSpeak 3 PHP Framework.
 
file  Channelgroup.php [code]
 TeamSpeak 3 PHP Framework.
 
file  Client.php [code]
 TeamSpeak 3 PHP Framework.
 
file  Exception.php [code]
 TeamSpeak 3 PHP Framework.
 
file  Host.php [code]
 TeamSpeak 3 PHP Framework.
 
file  Server.php [code]
 TeamSpeak 3 PHP Framework.
 
file  Servergroup.php [code]
 TeamSpeak 3 PHP Framework.
 
+
+
+ + + + diff --git a/lib/docs/html/dir_3d7cd49b95def433e02a0e6f52be25f0.js b/lib/docs/html/dir_3d7cd49b95def433e02a0e6f52be25f0.js new file mode 100644 index 0000000..a60bd86 --- /dev/null +++ b/lib/docs/html/dir_3d7cd49b95def433e02a0e6f52be25f0.js @@ -0,0 +1,27 @@ +var dir_3d7cd49b95def433e02a0e6f52be25f0 = +[ + [ "Abstract.php", "_node_2_abstract_8php.html", [ + [ "TeamSpeak3_Node_Abstract", "class_team_speak3___node___abstract.html", "class_team_speak3___node___abstract" ] + ] ], + [ "Channel.php", "_channel_8php.html", [ + [ "TeamSpeak3_Node_Channel", "class_team_speak3___node___channel.html", "class_team_speak3___node___channel" ] + ] ], + [ "Channelgroup.php", "_channelgroup_8php.html", [ + [ "TeamSpeak3_Node_Channelgroup", "class_team_speak3___node___channelgroup.html", "class_team_speak3___node___channelgroup" ] + ] ], + [ "Client.php", "_client_8php.html", [ + [ "TeamSpeak3_Node_Client", "class_team_speak3___node___client.html", "class_team_speak3___node___client" ] + ] ], + [ "Exception.php", "_node_2_exception_8php.html", [ + [ "TeamSpeak3_Node_Exception", "class_team_speak3___node___exception.html", "class_team_speak3___node___exception" ] + ] ], + [ "Host.php", "_host_8php.html", [ + [ "TeamSpeak3_Node_Host", "class_team_speak3___node___host.html", "class_team_speak3___node___host" ] + ] ], + [ "Server.php", "_server_8php.html", [ + [ "TeamSpeak3_Node_Server", "class_team_speak3___node___server.html", "class_team_speak3___node___server" ] + ] ], + [ "Servergroup.php", "_servergroup_8php.html", [ + [ "TeamSpeak3_Node_Servergroup", "class_team_speak3___node___servergroup.html", "class_team_speak3___node___servergroup" ] + ] ] +]; \ No newline at end of file diff --git a/lib/docs/html/dir_3e66aa12f34129cf2d52c47a74e0508c.html b/lib/docs/html/dir_3e66aa12f34129cf2d52c47a74e0508c.html new file mode 100644 index 0000000..c4e55c5 --- /dev/null +++ b/lib/docs/html/dir_3e66aa12f34129cf2d52c47a74e0508c.html @@ -0,0 +1,152 @@ + + + + + + +TeamSpeak 3 PHP Framework: TeamSpeak3/Helper Directory Reference + + + + + + + + + + + + + +
+
+ + + + + + + +
+
TeamSpeak 3 PHP Framework +  1.1.23 +
+
Copyright © Planet TeamSpeak. All rights reserved.
+
+
+ + + + +
+
+ +
+
+
+ +
+ + + + +
+ +
+ +
+
+
Helper Directory Reference
+
+
+ + + + + + +

+Directories

directory  Profiler
 
directory  Signal
 
+ + + + + + + + + + + + + + + + + + + + + + + + + +

+Files

file  Char.php [code]
 TeamSpeak 3 PHP Framework.
 
file  Convert.php [code]
 TeamSpeak 3 PHP Framework.
 
file  Crypt.php [code]
 TeamSpeak 3 PHP Framework.
 
file  Exception.php [code]
 TeamSpeak 3 PHP Framework.
 
file  Profiler.php [code]
 TeamSpeak 3 PHP Framework.
 
file  Signal.php [code]
 TeamSpeak 3 PHP Framework.
 
file  String.php [code]
 TeamSpeak 3 PHP Framework.
 
file  Uri.php [code]
 TeamSpeak 3 PHP Framework.
 
+
+
+ + + + diff --git a/lib/docs/html/dir_3e66aa12f34129cf2d52c47a74e0508c.js b/lib/docs/html/dir_3e66aa12f34129cf2d52c47a74e0508c.js new file mode 100644 index 0000000..49801da --- /dev/null +++ b/lib/docs/html/dir_3e66aa12f34129cf2d52c47a74e0508c.js @@ -0,0 +1,29 @@ +var dir_3e66aa12f34129cf2d52c47a74e0508c = +[ + [ "Profiler", "dir_4844b50d2d416922f1f8de7560b09faf.html", "dir_4844b50d2d416922f1f8de7560b09faf" ], + [ "Signal", "dir_10d0dafa9b3c98f86f6c3e308f71f5e1.html", "dir_10d0dafa9b3c98f86f6c3e308f71f5e1" ], + [ "Char.php", "_char_8php.html", [ + [ "TeamSpeak3_Helper_Char", "class_team_speak3___helper___char.html", "class_team_speak3___helper___char" ] + ] ], + [ "Convert.php", "_convert_8php.html", [ + [ "TeamSpeak3_Helper_Convert", "class_team_speak3___helper___convert.html", null ] + ] ], + [ "Crypt.php", "_crypt_8php.html", [ + [ "TeamSpeak3_Helper_Crypt", "class_team_speak3___helper___crypt.html", "class_team_speak3___helper___crypt" ] + ] ], + [ "Exception.php", "_helper_2_exception_8php.html", [ + [ "TeamSpeak3_Helper_Exception", "class_team_speak3___helper___exception.html", "class_team_speak3___helper___exception" ] + ] ], + [ "Profiler.php", "_profiler_8php.html", [ + [ "TeamSpeak3_Helper_Profiler", "class_team_speak3___helper___profiler.html", null ] + ] ], + [ "Signal.php", "_signal_8php.html", [ + [ "TeamSpeak3_Helper_Signal", "class_team_speak3___helper___signal.html", "class_team_speak3___helper___signal" ] + ] ], + [ "String.php", "_string_8php.html", [ + [ "TeamSpeak3_Helper_String", "class_team_speak3___helper___string.html", "class_team_speak3___helper___string" ] + ] ], + [ "Uri.php", "_uri_8php.html", [ + [ "TeamSpeak3_Helper_Uri", "class_team_speak3___helper___uri.html", "class_team_speak3___helper___uri" ] + ] ] +]; \ No newline at end of file diff --git a/lib/docs/html/dir_4844b50d2d416922f1f8de7560b09faf.html b/lib/docs/html/dir_4844b50d2d416922f1f8de7560b09faf.html new file mode 100644 index 0000000..b7e23dc --- /dev/null +++ b/lib/docs/html/dir_4844b50d2d416922f1f8de7560b09faf.html @@ -0,0 +1,127 @@ + + + + + + +TeamSpeak 3 PHP Framework: TeamSpeak3/Helper/Profiler Directory Reference + + + + + + + + + + + + + +
+
+ + + + + + + +
+
TeamSpeak 3 PHP Framework +  1.1.23 +
+
Copyright © Planet TeamSpeak. All rights reserved.
+
+
+ + + + +
+
+ +
+
+
+ +
+ + + + +
+ +
+ +
+
+
Profiler Directory Reference
+
+
+ + + + + + + + +

+Files

file  Exception.php [code]
 TeamSpeak 3 PHP Framework.
 
file  Timer.php [code]
 TeamSpeak 3 PHP Framework.
 
+
+
+ + + + diff --git a/lib/docs/html/dir_4844b50d2d416922f1f8de7560b09faf.js b/lib/docs/html/dir_4844b50d2d416922f1f8de7560b09faf.js new file mode 100644 index 0000000..64e4bdb --- /dev/null +++ b/lib/docs/html/dir_4844b50d2d416922f1f8de7560b09faf.js @@ -0,0 +1,9 @@ +var dir_4844b50d2d416922f1f8de7560b09faf = +[ + [ "Exception.php", "_helper_2_profiler_2_exception_8php.html", [ + [ "TeamSpeak3_Helper_Profiler_Exception", "class_team_speak3___helper___profiler___exception.html", "class_team_speak3___helper___profiler___exception" ] + ] ], + [ "Timer.php", "_timer_8php.html", [ + [ "TeamSpeak3_Helper_Profiler_Timer", "class_team_speak3___helper___profiler___timer.html", "class_team_speak3___helper___profiler___timer" ] + ] ] +]; \ No newline at end of file diff --git a/lib/docs/html/dir_554650cc51f1200e004a96892070fcf9.html b/lib/docs/html/dir_554650cc51f1200e004a96892070fcf9.html new file mode 100644 index 0000000..b2f8d9d --- /dev/null +++ b/lib/docs/html/dir_554650cc51f1200e004a96892070fcf9.html @@ -0,0 +1,130 @@ + + + + + + +TeamSpeak 3 PHP Framework: TeamSpeak3/Viewer Directory Reference + + + + + + + + + + + + + +
+
+ + + + + + + +
+
TeamSpeak 3 PHP Framework +  1.1.23 +
+
Copyright © Planet TeamSpeak. All rights reserved.
+
+
+ + + + +
+
+ +
+
+
+ +
+ + + + +
+ +
+ +
+
+
Viewer Directory Reference
+
+
+ + + + + + + + + + + +

+Files

file  Html.php [code]
 TeamSpeak 3 PHP Framework.
 
file  Interface.php [code]
 TeamSpeak 3 PHP Framework.
 
file  Text.php [code]
 TeamSpeak 3 PHP Framework.
 
+
+
+ + + + diff --git a/lib/docs/html/dir_554650cc51f1200e004a96892070fcf9.js b/lib/docs/html/dir_554650cc51f1200e004a96892070fcf9.js new file mode 100644 index 0000000..972ee7b --- /dev/null +++ b/lib/docs/html/dir_554650cc51f1200e004a96892070fcf9.js @@ -0,0 +1,12 @@ +var dir_554650cc51f1200e004a96892070fcf9 = +[ + [ "Html.php", "_html_8php.html", [ + [ "TeamSpeak3_Viewer_Html", "class_team_speak3___viewer___html.html", "class_team_speak3___viewer___html" ] + ] ], + [ "Interface.php", "_viewer_2_interface_8php.html", [ + [ "TeamSpeak3_Viewer_Interface", "interface_team_speak3___viewer___interface.html", "interface_team_speak3___viewer___interface" ] + ] ], + [ "Text.php", "_text_8php.html", [ + [ "TeamSpeak3_Viewer_Text", "class_team_speak3___viewer___text.html", "class_team_speak3___viewer___text" ] + ] ] +]; \ No newline at end of file diff --git a/lib/docs/html/dir_79b267753267ba2a550585ecabe3d90e.html b/lib/docs/html/dir_79b267753267ba2a550585ecabe3d90e.html new file mode 100644 index 0000000..f48ddf2 --- /dev/null +++ b/lib/docs/html/dir_79b267753267ba2a550585ecabe3d90e.html @@ -0,0 +1,124 @@ + + + + + + +TeamSpeak 3 PHP Framework: TeamSpeak3/Adapter/TSDNS Directory Reference + + + + + + + + + + + + + +
+
+ + + + + + + +
+
TeamSpeak 3 PHP Framework +  1.1.23 +
+
Copyright © Planet TeamSpeak. All rights reserved.
+
+
+ + + + +
+
+ +
+
+
+ +
+ + + + +
+ +
+ +
+
+
TSDNS Directory Reference
+
+
+ + + + + +

+Files

file  Exception.php [code]
 TeamSpeak 3 PHP Framework.
 
+
+
+ + + + diff --git a/lib/docs/html/dir_79b267753267ba2a550585ecabe3d90e.js b/lib/docs/html/dir_79b267753267ba2a550585ecabe3d90e.js new file mode 100644 index 0000000..87873d5 --- /dev/null +++ b/lib/docs/html/dir_79b267753267ba2a550585ecabe3d90e.js @@ -0,0 +1,6 @@ +var dir_79b267753267ba2a550585ecabe3d90e = +[ + [ "Exception.php", "_adapter_2_t_s_d_n_s_2_exception_8php.html", [ + [ "TeamSpeak3_Adapter_TSDNS_Exception", "class_team_speak3___adapter___t_s_d_n_s___exception.html", "class_team_speak3___adapter___t_s_d_n_s___exception" ] + ] ] +]; \ No newline at end of file diff --git a/lib/docs/html/dir_8c6eb96e4942c21c15d2738fe9c923ec.html b/lib/docs/html/dir_8c6eb96e4942c21c15d2738fe9c923ec.html new file mode 100644 index 0000000..9ba9683 --- /dev/null +++ b/lib/docs/html/dir_8c6eb96e4942c21c15d2738fe9c923ec.html @@ -0,0 +1,140 @@ + + + + + + +TeamSpeak 3 PHP Framework: TeamSpeak3 Directory Reference + + + + + + + + + + + + + +
+
+ + + + + + + +
+
TeamSpeak 3 PHP Framework +  1.1.23 +
+
Copyright © Planet TeamSpeak. All rights reserved.
+
+
+ + + + +
+
+ +
+
+
+ +
+ + + + +
+ +
+ +
+
+
TeamSpeak3 Directory Reference
+
+
+ + + + + + + + + + + + +

+Directories

directory  Adapter
 
directory  Helper
 
directory  Node
 
directory  Transport
 
directory  Viewer
 
+ + + + + + + +

+Files

file  Exception.php [code]
 TeamSpeak 3 PHP Framework.
 
file  TeamSpeak3.php [code]
 TeamSpeak 3 PHP Framework.
 
+
+
+ + + + diff --git a/lib/docs/html/dir_8c6eb96e4942c21c15d2738fe9c923ec.js b/lib/docs/html/dir_8c6eb96e4942c21c15d2738fe9c923ec.js new file mode 100644 index 0000000..3b1da84 --- /dev/null +++ b/lib/docs/html/dir_8c6eb96e4942c21c15d2738fe9c923ec.js @@ -0,0 +1,14 @@ +var dir_8c6eb96e4942c21c15d2738fe9c923ec = +[ + [ "Adapter", "dir_1e759c367c240af77b5353a40d4dc42a.html", "dir_1e759c367c240af77b5353a40d4dc42a" ], + [ "Helper", "dir_3e66aa12f34129cf2d52c47a74e0508c.html", "dir_3e66aa12f34129cf2d52c47a74e0508c" ], + [ "Node", "dir_3d7cd49b95def433e02a0e6f52be25f0.html", "dir_3d7cd49b95def433e02a0e6f52be25f0" ], + [ "Transport", "dir_f603e06b45f250df82d371a578f5098e.html", "dir_f603e06b45f250df82d371a578f5098e" ], + [ "Viewer", "dir_554650cc51f1200e004a96892070fcf9.html", "dir_554650cc51f1200e004a96892070fcf9" ], + [ "Exception.php", "_exception_8php.html", [ + [ "TeamSpeak3_Exception", "class_team_speak3___exception.html", "class_team_speak3___exception" ] + ] ], + [ "TeamSpeak3.php", "_team_speak3_8php.html", [ + [ "TeamSpeak3", "class_team_speak3.html", "class_team_speak3" ] + ] ] +]; \ No newline at end of file diff --git a/lib/docs/html/dir_bafc68d5a3d8339df3fadcdecb8cd0fc.html b/lib/docs/html/dir_bafc68d5a3d8339df3fadcdecb8cd0fc.html new file mode 100644 index 0000000..683e8db --- /dev/null +++ b/lib/docs/html/dir_bafc68d5a3d8339df3fadcdecb8cd0fc.html @@ -0,0 +1,130 @@ + + + + + + +TeamSpeak 3 PHP Framework: TeamSpeak3/Adapter/ServerQuery Directory Reference + + + + + + + + + + + + + +
+
+ + + + + + + +
+
TeamSpeak 3 PHP Framework +  1.1.23 +
+
Copyright © Planet TeamSpeak. All rights reserved.
+
+
+ + + + +
+
+ +
+
+
+ +
+ + + + +
+ +
+ +
+
+
ServerQuery Directory Reference
+
+
+ + + + + + + + + + + +

+Files

file  Event.php [code]
 TeamSpeak 3 PHP Framework.
 
file  Exception.php [code]
 TeamSpeak 3 PHP Framework.
 
file  Reply.php [code]
 TeamSpeak 3 PHP Framework.
 
+
+
+ + + + diff --git a/lib/docs/html/dir_bafc68d5a3d8339df3fadcdecb8cd0fc.js b/lib/docs/html/dir_bafc68d5a3d8339df3fadcdecb8cd0fc.js new file mode 100644 index 0000000..13d2920 --- /dev/null +++ b/lib/docs/html/dir_bafc68d5a3d8339df3fadcdecb8cd0fc.js @@ -0,0 +1,12 @@ +var dir_bafc68d5a3d8339df3fadcdecb8cd0fc = +[ + [ "Event.php", "_event_8php.html", [ + [ "TeamSpeak3_Adapter_ServerQuery_Event", "class_team_speak3___adapter___server_query___event.html", "class_team_speak3___adapter___server_query___event" ] + ] ], + [ "Exception.php", "_adapter_2_server_query_2_exception_8php.html", [ + [ "TeamSpeak3_Adapter_ServerQuery_Exception", "class_team_speak3___adapter___server_query___exception.html", "class_team_speak3___adapter___server_query___exception" ] + ] ], + [ "Reply.php", "_reply_8php.html", [ + [ "TeamSpeak3_Adapter_ServerQuery_Reply", "class_team_speak3___adapter___server_query___reply.html", "class_team_speak3___adapter___server_query___reply" ] + ] ] +]; \ No newline at end of file diff --git a/lib/docs/html/dir_bfc25ac9d3f1d0418a4ff48c6329f953.html b/lib/docs/html/dir_bfc25ac9d3f1d0418a4ff48c6329f953.html new file mode 100644 index 0000000..4de3b6d --- /dev/null +++ b/lib/docs/html/dir_bfc25ac9d3f1d0418a4ff48c6329f953.html @@ -0,0 +1,124 @@ + + + + + + +TeamSpeak 3 PHP Framework: TeamSpeak3/Adapter/Update Directory Reference + + + + + + + + + + + + + +
+
+ + + + + + + +
+
TeamSpeak 3 PHP Framework +  1.1.23 +
+
Copyright © Planet TeamSpeak. All rights reserved.
+
+
+ + + + +
+
+ +
+
+
+ +
+ + + + +
+ +
+ +
+
+
Update Directory Reference
+
+
+ + + + + +

+Files

file  Exception.php [code]
 TeamSpeak 3 PHP Framework.
 
+
+
+ + + + diff --git a/lib/docs/html/dir_bfc25ac9d3f1d0418a4ff48c6329f953.js b/lib/docs/html/dir_bfc25ac9d3f1d0418a4ff48c6329f953.js new file mode 100644 index 0000000..2456622 --- /dev/null +++ b/lib/docs/html/dir_bfc25ac9d3f1d0418a4ff48c6329f953.js @@ -0,0 +1,6 @@ +var dir_bfc25ac9d3f1d0418a4ff48c6329f953 = +[ + [ "Exception.php", "_adapter_2_update_2_exception_8php.html", [ + [ "TeamSpeak3_Adapter_Update_Exception", "class_team_speak3___adapter___update___exception.html", "class_team_speak3___adapter___update___exception" ] + ] ] +]; \ No newline at end of file diff --git a/lib/docs/html/dir_d08920670320d734586288a6d43047d3.html b/lib/docs/html/dir_d08920670320d734586288a6d43047d3.html new file mode 100644 index 0000000..8be7d5e --- /dev/null +++ b/lib/docs/html/dir_d08920670320d734586288a6d43047d3.html @@ -0,0 +1,124 @@ + + + + + + +TeamSpeak 3 PHP Framework: TeamSpeak3/Adapter/Blacklist Directory Reference + + + + + + + + + + + + + +
+
+ + + + + + + +
+
TeamSpeak 3 PHP Framework +  1.1.23 +
+
Copyright © Planet TeamSpeak. All rights reserved.
+
+
+ + + + +
+
+ +
+
+
+ +
+ + + + +
+ +
+ +
+
+
Blacklist Directory Reference
+
+
+ + + + + +

+Files

file  Exception.php [code]
 TeamSpeak 3 PHP Framework.
 
+
+
+ + + + diff --git a/lib/docs/html/dir_d08920670320d734586288a6d43047d3.js b/lib/docs/html/dir_d08920670320d734586288a6d43047d3.js new file mode 100644 index 0000000..0db4fed --- /dev/null +++ b/lib/docs/html/dir_d08920670320d734586288a6d43047d3.js @@ -0,0 +1,6 @@ +var dir_d08920670320d734586288a6d43047d3 = +[ + [ "Exception.php", "_adapter_2_blacklist_2_exception_8php.html", [ + [ "TeamSpeak3_Adapter_Blacklist_Exception", "class_team_speak3___adapter___blacklist___exception.html", "class_team_speak3___adapter___blacklist___exception" ] + ] ] +]; \ No newline at end of file diff --git a/lib/docs/html/dir_dadcfc53e6a1230ff2f48f6f7265c16c.html b/lib/docs/html/dir_dadcfc53e6a1230ff2f48f6f7265c16c.html new file mode 100644 index 0000000..564e3d2 --- /dev/null +++ b/lib/docs/html/dir_dadcfc53e6a1230ff2f48f6f7265c16c.html @@ -0,0 +1,124 @@ + + + + + + +TeamSpeak 3 PHP Framework: TeamSpeak3/Adapter/FileTransfer Directory Reference + + + + + + + + + + + + + +
+
+ + + + + + + +
+
TeamSpeak 3 PHP Framework +  1.1.23 +
+
Copyright © Planet TeamSpeak. All rights reserved.
+
+
+ + + + +
+
+ +
+
+
+ +
+ + + + +
+ +
+ +
+
+
FileTransfer Directory Reference
+
+
+ + + + + +

+Files

file  Exception.php [code]
 TeamSpeak 3 PHP Framework.
 
+
+
+ + + + diff --git a/lib/docs/html/dir_dadcfc53e6a1230ff2f48f6f7265c16c.js b/lib/docs/html/dir_dadcfc53e6a1230ff2f48f6f7265c16c.js new file mode 100644 index 0000000..aa606d9 --- /dev/null +++ b/lib/docs/html/dir_dadcfc53e6a1230ff2f48f6f7265c16c.js @@ -0,0 +1,6 @@ +var dir_dadcfc53e6a1230ff2f48f6f7265c16c = +[ + [ "Exception.php", "_adapter_2_file_transfer_2_exception_8php.html", [ + [ "TeamSpeak3_Adapter_FileTransfer_Exception", "class_team_speak3___adapter___file_transfer___exception.html", "class_team_speak3___adapter___file_transfer___exception" ] + ] ] +]; \ No newline at end of file diff --git a/lib/docs/html/dir_f603e06b45f250df82d371a578f5098e.html b/lib/docs/html/dir_f603e06b45f250df82d371a578f5098e.html new file mode 100644 index 0000000..6e44787 --- /dev/null +++ b/lib/docs/html/dir_f603e06b45f250df82d371a578f5098e.html @@ -0,0 +1,133 @@ + + + + + + +TeamSpeak 3 PHP Framework: TeamSpeak3/Transport Directory Reference + + + + + + + + + + + + + +
+
+ + + + + + + +
+
TeamSpeak 3 PHP Framework +  1.1.23 +
+
Copyright © Planet TeamSpeak. All rights reserved.
+
+
+ + + + +
+
+ +
+
+
+ +
+ + + + +
+ +
+ +
+
+
Transport Directory Reference
+
+
+ + + + + + + + + + + + + + +

+Files

file  Abstract.php [code]
 TeamSpeak 3 PHP Framework.
 
file  Exception.php [code]
 TeamSpeak 3 PHP Framework.
 
file  TCP.php [code]
 TeamSpeak 3 PHP Framework.
 
file  UDP.php [code]
 TeamSpeak 3 PHP Framework.
 
+
+
+ + + + diff --git a/lib/docs/html/dir_f603e06b45f250df82d371a578f5098e.js b/lib/docs/html/dir_f603e06b45f250df82d371a578f5098e.js new file mode 100644 index 0000000..dedb0d1 --- /dev/null +++ b/lib/docs/html/dir_f603e06b45f250df82d371a578f5098e.js @@ -0,0 +1,15 @@ +var dir_f603e06b45f250df82d371a578f5098e = +[ + [ "Abstract.php", "_transport_2_abstract_8php.html", [ + [ "TeamSpeak3_Transport_Abstract", "class_team_speak3___transport___abstract.html", "class_team_speak3___transport___abstract" ] + ] ], + [ "Exception.php", "_transport_2_exception_8php.html", [ + [ "TeamSpeak3_Transport_Exception", "class_team_speak3___transport___exception.html", "class_team_speak3___transport___exception" ] + ] ], + [ "TCP.php", "_t_c_p_8php.html", [ + [ "TeamSpeak3_Transport_TCP", "class_team_speak3___transport___t_c_p.html", "class_team_speak3___transport___t_c_p" ] + ] ], + [ "UDP.php", "_u_d_p_8php.html", [ + [ "TeamSpeak3_Transport_UDP", "class_team_speak3___transport___u_d_p.html", "class_team_speak3___transport___u_d_p" ] + ] ] +]; \ No newline at end of file diff --git a/lib/docs/html/doxygen.css b/lib/docs/html/doxygen.css new file mode 100644 index 0000000..cdf0a3b --- /dev/null +++ b/lib/docs/html/doxygen.css @@ -0,0 +1,1186 @@ +/* The standard CSS for doxygen 1.8.4 */ + +body, table, div, p, dl { + font: 400 14px/22px Roboto,sans-serif; +} + +/* @group Heading Levels */ + +h1.groupheader { + font-size: 150%; +} + +.title { + font: 400 14px/28px Roboto,sans-serif; + font-size: 150%; + font-weight: bold; + margin: 10px 2px; +} + +h2.groupheader { + border-bottom: 1px solid #618BC6; + color: #20395B; + font-size: 150%; + font-weight: normal; + margin-top: 1.75em; + padding-top: 8px; + padding-bottom: 4px; + width: 100%; +} + +h3.groupheader { + font-size: 100%; +} + +h1, h2, h3, h4, h5, h6 { + -webkit-transition: text-shadow 0.5s linear; + -moz-transition: text-shadow 0.5s linear; + -ms-transition: text-shadow 0.5s linear; + -o-transition: text-shadow 0.5s linear; + transition: text-shadow 0.5s linear; + margin-right: 15px; +} + +h1.glow, h2.glow, h3.glow, h4.glow, h5.glow, h6.glow { + text-shadow: 0 0 15px cyan; +} + +dt { + font-weight: bold; +} + +div.multicol { + -moz-column-gap: 1em; + -webkit-column-gap: 1em; + -moz-column-count: 3; + -webkit-column-count: 3; +} + +p.startli, p.startdd, p.starttd { + margin-top: 2px; +} + +p.endli { + margin-bottom: 0px; +} + +p.enddd { + margin-bottom: 4px; +} + +p.endtd { + margin-bottom: 2px; +} + +/* @end */ + +caption { + font-weight: bold; +} + +span.legend { + font-size: 70%; + text-align: center; +} + +h3.version { + font-size: 90%; + text-align: center; +} + +div.qindex, div.navtab{ + background-color: #E4EBF5; + border: 1px solid #84A4D2; + text-align: center; +} + +div.qindex, div.navpath { + width: 100%; + line-height: 140%; +} + +div.navtab { + margin-right: 15px; +} + +/* @group Link Styling */ + +a { + color: #27436C; + font-weight: normal; + text-decoration: none; +} + +.contents a:visited { + color: #2F5283; +} + +a:hover { + text-decoration: underline; +} + +a.qindex { + font-weight: bold; +} + +a.qindexHL { + font-weight: bold; + background-color: #7B9ECF; + color: #ffffff; + border: 1px double #5F8AC5; +} + +.contents a.qindexHL:visited { + color: #ffffff; +} + +a.el { + font-weight: bold; +} + +a.elRef { +} + +a.code, a.code:visited { + color: #4665A2; +} + +a.codeRef, a.codeRef:visited { + color: #4665A2; +} + +/* @end */ + +dl.el { + margin-left: -1cm; +} + +pre.fragment { + border: 1px solid #C4CFE5; + background-color: #FBFCFD; + padding: 4px 6px; + margin: 4px 8px 4px 2px; + overflow: auto; + word-wrap: break-word; + font-size: 9pt; + line-height: 125%; + font-family: monospace, fixed; + font-size: 105%; +} + +div.fragment { + padding: 0px; + margin: 0px; + background-color: #FAFBFD; + border: 1px solid #AFC4E2; +} + +div.line { + font-family: monospace, fixed; + font-size: 13px; + min-height: 13px; + line-height: 1.0; + text-wrap: unrestricted; + white-space: -moz-pre-wrap; /* Moz */ + white-space: -pre-wrap; /* Opera 4-6 */ + white-space: -o-pre-wrap; /* Opera 7 */ + white-space: pre-wrap; /* CSS3 */ + word-wrap: break-word; /* IE 5.5+ */ + text-indent: -53px; + padding-left: 53px; + padding-bottom: 0px; + margin: 0px; + -webkit-transition-property: background-color, box-shadow; + -webkit-transition-duration: 0.5s; + -moz-transition-property: background-color, box-shadow; + -moz-transition-duration: 0.5s; + -ms-transition-property: background-color, box-shadow; + -ms-transition-duration: 0.5s; + -o-transition-property: background-color, box-shadow; + -o-transition-duration: 0.5s; + transition-property: background-color, box-shadow; + transition-duration: 0.5s; +} + +div.line.glow { + background-color: cyan; + box-shadow: 0 0 10px cyan; +} + + +span.lineno { + padding-right: 4px; + text-align: right; + border-right: 2px solid #0F0; + background-color: #E8E8E8; + white-space: pre; +} +span.lineno a { + background-color: #D8D8D8; +} + +span.lineno a:hover { + background-color: #C8C8C8; +} + +div.ah { + background-color: black; + font-weight: bold; + color: #ffffff; + margin-bottom: 3px; + margin-top: 3px; + padding: 0.2em; + border: solid thin #333; + border-radius: 0.5em; + -webkit-border-radius: .5em; + -moz-border-radius: .5em; + box-shadow: 2px 2px 3px #999; + -webkit-box-shadow: 2px 2px 3px #999; + -moz-box-shadow: rgba(0, 0, 0, 0.15) 2px 2px 2px; + background-image: -webkit-gradient(linear, left top, left bottom, from(#eee), to(#000),color-stop(0.3, #444)); + background-image: -moz-linear-gradient(center top, #eee 0%, #444 40%, #000); +} + +div.groupHeader { + margin-left: 16px; + margin-top: 12px; + font-weight: bold; +} + +div.groupText { + margin-left: 16px; + font-style: italic; +} + +body { + background-color: white; + color: black; + margin: 0; +} + +div.contents { + margin-top: 10px; + margin-left: 12px; + margin-right: 8px; +} + +td.indexkey { + background-color: #E4EBF5; + font-weight: bold; + border: 1px solid #AFC4E2; + margin: 2px 0px 2px 0; + padding: 2px 10px; + white-space: nowrap; + vertical-align: top; +} + +td.indexvalue { + background-color: #E4EBF5; + border: 1px solid #AFC4E2; + padding: 2px 10px; + margin: 2px 0px; +} + +tr.memlist { + background-color: #E7EDF6; +} + +p.formulaDsp { + text-align: center; +} + +img.formulaDsp { + +} + +img.formulaInl { + vertical-align: middle; +} + +div.center { + text-align: center; + margin-top: 0px; + margin-bottom: 0px; + padding: 0px; +} + +div.center img { + border: 0px; +} + +address.footer { + text-align: right; + padding-right: 12px; +} + +img.footer { + border: 0px; + vertical-align: middle; +} + +/* @group Code Colorization */ + +span.keyword { + color: #008000 +} + +span.keywordtype { + color: #604020 +} + +span.keywordflow { + color: #e08000 +} + +span.comment { + color: #800000 +} + +span.preprocessor { + color: #806020 +} + +span.stringliteral { + color: #002080 +} + +span.charliteral { + color: #008080 +} + +span.vhdldigit { + color: #ff00ff +} + +span.vhdlchar { + color: #000000 +} + +span.vhdlkeyword { + color: #700070 +} + +span.vhdllogic { + color: #ff0000 +} + +blockquote { + background-color: #F3F6FB; + border-left: 2px solid #7B9ECF; + margin: 0 24px 0 4px; + padding: 0 12px 0 16px; +} + +/* @end */ + +/* +.search { + color: #003399; + font-weight: bold; +} + +form.search { + margin-bottom: 0px; + margin-top: 0px; +} + +input.search { + font-size: 75%; + color: #000080; + font-weight: normal; + background-color: #e8eef2; +} +*/ + +td.tiny { + font-size: 75%; +} + +.dirtab { + padding: 4px; + border-collapse: collapse; + border: 1px solid #84A4D2; +} + +th.dirtab { + background: #E4EBF5; + font-weight: bold; +} + +hr { + height: 0px; + border: none; + border-top: 1px solid #32588C; +} + +hr.footer { + height: 1px; +} + +/* @group Member Descriptions */ + +table.memberdecls { + border-spacing: 0px; + padding: 0px; +} + +.memberdecls td, .fieldtable tr { + -webkit-transition-property: background-color, box-shadow; + -webkit-transition-duration: 0.5s; + -moz-transition-property: background-color, box-shadow; + -moz-transition-duration: 0.5s; + -ms-transition-property: background-color, box-shadow; + -ms-transition-duration: 0.5s; + -o-transition-property: background-color, box-shadow; + -o-transition-duration: 0.5s; + transition-property: background-color, box-shadow; + transition-duration: 0.5s; +} + +.memberdecls td.glow, .fieldtable tr.glow { + background-color: cyan; + box-shadow: 0 0 15px cyan; +} + +.mdescLeft, .mdescRight, +.memItemLeft, .memItemRight, +.memTemplItemLeft, .memTemplItemRight, .memTemplParams { + background-color: #F7F9FC; + border: none; + margin: 4px; + padding: 1px 0 0 8px; +} + +.mdescLeft, .mdescRight { + padding: 0px 8px 4px 8px; + color: #555; +} + +.memSeparator { + border-bottom: 1px solid #DEE4F0; + line-height: 1px; + margin: 0px; + padding: 0px; +} + +.memItemLeft, .memTemplItemLeft { + white-space: nowrap; +} + +.memItemRight { + width: 100%; +} + +.memTemplParams { + color: #2F5283; + white-space: nowrap; + font-size: 80%; +} + +/* @end */ + +/* @group Member Details */ + +/* Styles for detailed member documentation */ + +.memtemplate { + font-size: 80%; + color: #2F5283; + font-weight: normal; + margin-left: 9px; +} + +.memnav { + background-color: #E4EBF5; + border: 1px solid #84A4D2; + text-align: center; + margin: 2px; + margin-right: 15px; + padding: 2px; +} + +.mempage { + width: 100%; +} + +.memitem { + padding: 0; + margin-bottom: 10px; + margin-right: 5px; + -webkit-transition: box-shadow 0.5s linear; + -moz-transition: box-shadow 0.5s linear; + -ms-transition: box-shadow 0.5s linear; + -o-transition: box-shadow 0.5s linear; + transition: box-shadow 0.5s linear; + display: table !important; + width: 100%; +} + +.memitem.glow { + box-shadow: 0 0 15px cyan; +} + +.memname { + font-weight: bold; + margin-left: 6px; +} + +.memname td { + vertical-align: bottom; +} + +.memproto, dl.reflist dt { + border-top: 1px solid #8AA9D4; + border-left: 1px solid #8AA9D4; + border-right: 1px solid #8AA9D4; + padding: 6px 0px 6px 0px; + color: #142237; + font-weight: bold; + text-shadow: 0px 1px 1px rgba(255, 255, 255, 0.9); + background-image:url('nav_f.png'); + background-repeat:repeat-x; + background-color: #D7E2F0; + /* opera specific markup */ + box-shadow: 5px 5px 5px rgba(0, 0, 0, 0.15); + border-top-right-radius: 4px; + border-top-left-radius: 4px; + /* firefox specific markup */ + -moz-box-shadow: rgba(0, 0, 0, 0.15) 5px 5px 5px; + -moz-border-radius-topright: 4px; + -moz-border-radius-topleft: 4px; + /* webkit specific markup */ + -webkit-box-shadow: 5px 5px 5px rgba(0, 0, 0, 0.15); + -webkit-border-top-right-radius: 4px; + -webkit-border-top-left-radius: 4px; + +} + +.memdoc, dl.reflist dd { + border-bottom: 1px solid #8AA9D4; + border-left: 1px solid #8AA9D4; + border-right: 1px solid #8AA9D4; + padding: 6px 10px 2px 10px; + background-color: #FAFBFD; + border-top-width: 0; + background-image:url('nav_g.png'); + background-repeat:repeat-x; + background-color: #FFFFFF; + /* opera specific markup */ + border-bottom-left-radius: 4px; + border-bottom-right-radius: 4px; + box-shadow: 5px 5px 5px rgba(0, 0, 0, 0.15); + /* firefox specific markup */ + -moz-border-radius-bottomleft: 4px; + -moz-border-radius-bottomright: 4px; + -moz-box-shadow: rgba(0, 0, 0, 0.15) 5px 5px 5px; + /* webkit specific markup */ + -webkit-border-bottom-left-radius: 4px; + -webkit-border-bottom-right-radius: 4px; + -webkit-box-shadow: 5px 5px 5px rgba(0, 0, 0, 0.15); +} + +dl.reflist dt { + padding: 5px; +} + +dl.reflist dd { + margin: 0px 0px 10px 0px; + padding: 5px; +} + +.paramkey { + text-align: right; +} + +.paramtype { + white-space: nowrap; +} + +.paramname { + color: #602020; + white-space: nowrap; +} +.paramname em { + font-style: normal; +} +.paramname code { + line-height: 14px; +} + +.params, .retval, .exception, .tparams { + margin-left: 0px; + padding-left: 0px; +} + +.params .paramname, .retval .paramname { + font-weight: bold; + vertical-align: top; +} + +.params .paramtype { + font-style: italic; + vertical-align: top; +} + +.params .paramdir { + font-family: "courier new",courier,monospace; + vertical-align: top; +} + +table.mlabels { + border-spacing: 0px; +} + +td.mlabels-left { + width: 100%; + padding: 0px; +} + +td.mlabels-right { + vertical-align: bottom; + padding: 0px; + white-space: nowrap; +} + +span.mlabels { + margin-left: 8px; +} + +span.mlabel { + background-color: #4778BC; + border-top:1px solid #37619B; + border-left:1px solid #37619B; + border-right:1px solid #AFC4E2; + border-bottom:1px solid #AFC4E2; + text-shadow: none; + color: white; + margin-right: 4px; + padding: 2px 3px; + border-radius: 3px; + font-size: 7pt; + white-space: nowrap; + vertical-align: middle; +} + + + +/* @end */ + +/* these are for tree view when not used as main index */ + +div.directory { + margin: 10px 0px; + border-top: 1px solid #A8B8D9; + border-bottom: 1px solid #A8B8D9; + width: 100%; +} + +.directory table { + border-collapse:collapse; +} + +.directory td { + margin: 0px; + padding: 0px; + vertical-align: top; +} + +.directory td.entry { + white-space: nowrap; + padding-right: 6px; + padding-top: 3px; +} + +.directory td.entry a { + outline:none; +} + +.directory td.entry a img { + border: none; +} + +.directory td.desc { + width: 100%; + padding-left: 6px; + padding-right: 6px; + padding-top: 3px; + border-left: 1px solid rgba(0,0,0,0.05); +} + +.directory tr.even { + padding-left: 6px; + background-color: #F3F6FB; +} + +.directory img { + vertical-align: -30%; +} + +.directory .levels { + white-space: nowrap; + width: 100%; + text-align: right; + font-size: 9pt; +} + +.directory .levels span { + cursor: pointer; + padding-left: 2px; + padding-right: 2px; + color: #27436C; +} + +div.dynheader { + margin-top: 8px; + -webkit-touch-callout: none; + -webkit-user-select: none; + -khtml-user-select: none; + -moz-user-select: none; + -ms-user-select: none; + user-select: none; +} + +address { + font-style: normal; + color: #182943; +} + +table.doxtable { + border-collapse:collapse; + margin-top: 4px; + margin-bottom: 4px; +} + +table.doxtable td, table.doxtable th { + border: 1px solid #1A2D48; + padding: 3px 7px 2px; +} + +table.doxtable th { + background-color: #223B5F; + color: #FFFFFF; + font-size: 110%; + padding-bottom: 4px; + padding-top: 5px; +} + +table.fieldtable { + /*width: 100%;*/ + margin-bottom: 10px; + border: 1px solid #8AA9D4; + border-spacing: 0px; + -moz-border-radius: 4px; + -webkit-border-radius: 4px; + border-radius: 4px; + -moz-box-shadow: rgba(0, 0, 0, 0.15) 2px 2px 2px; + -webkit-box-shadow: 2px 2px 2px rgba(0, 0, 0, 0.15); + box-shadow: 2px 2px 2px rgba(0, 0, 0, 0.15); +} + +.fieldtable td, .fieldtable th { + padding: 3px 7px 2px; +} + +.fieldtable td.fieldtype, .fieldtable td.fieldname { + white-space: nowrap; + border-right: 1px solid #8AA9D4; + border-bottom: 1px solid #8AA9D4; + vertical-align: top; +} + +.fieldtable td.fieldname { + padding-top: 3px; +} + +.fieldtable td.fielddoc { + border-bottom: 1px solid #8AA9D4; + /*width: 100%;*/ +} + +.fieldtable td.fielddoc p:first-child { + margin-top: 0px; +} + +.fieldtable td.fielddoc p:last-child { + margin-bottom: 2px; +} + +.fieldtable tr:last-child td { + border-bottom: none; +} + +.fieldtable th { + background-image:url('nav_f.png'); + background-repeat:repeat-x; + background-color: #D7E2F0; + font-size: 90%; + color: #142237; + padding-bottom: 4px; + padding-top: 5px; + text-align:left; + -moz-border-radius-topleft: 4px; + -moz-border-radius-topright: 4px; + -webkit-border-top-left-radius: 4px; + -webkit-border-top-right-radius: 4px; + border-top-left-radius: 4px; + border-top-right-radius: 4px; + border-bottom: 1px solid #8AA9D4; +} + + +.tabsearch { + top: 0px; + left: 10px; + height: 36px; + background-image: url('tab_b.png'); + z-index: 101; + overflow: hidden; + font-size: 13px; +} + +.navpath ul +{ + font-size: 11px; + background-image:url('tab_b.png'); + background-repeat:repeat-x; + background-position: 0 -5px; + height:30px; + line-height:30px; + color:#648DC7; + border:solid 1px #ACC2E1; + overflow:hidden; + margin:0px; + padding:0px; +} + +.navpath li +{ + list-style-type:none; + float:left; + padding-left:10px; + padding-right:15px; + background-image:url('bc_s.png'); + background-repeat:no-repeat; + background-position:right; + color:#213A5C; +} + +.navpath li.navelem a +{ + height:32px; + display:block; + text-decoration: none; + outline: none; + color: #16273E; + font-family: 'Lucida Grande',Geneva,Helvetica,Arial,sans-serif; + text-shadow: 0px 1px 1px rgba(255, 255, 255, 0.9); + text-decoration: none; +} + +.navpath li.navelem a:hover +{ + color:#4070B3; +} + +.navpath li.footer +{ + list-style-type:none; + float:right; + padding-left:10px; + padding-right:15px; + background-image:none; + background-repeat:no-repeat; + background-position:right; + color:#213A5C; + font-size: 8pt; +} + + +div.summary +{ + float: right; + font-size: 8pt; + padding-right: 5px; + width: 50%; + text-align: right; +} + +div.summary a +{ + white-space: nowrap; +} + +div.ingroups +{ + font-size: 8pt; + width: 50%; + text-align: left; +} + +div.ingroups a +{ + white-space: nowrap; +} + +div.header +{ + background-image:url('nav_h.png'); + background-repeat:repeat-x; + background-color: #F7F9FC; + margin: 0px; + border-bottom: 1px solid #AFC4E2; +} + +div.headertitle +{ + padding: 5px 5px 5px 10px; +} + +dl +{ + padding: 0 0 0 10px; +} + +/* dl.note, dl.warning, dl.attention, dl.pre, dl.post, dl.invariant, dl.deprecated, dl.todo, dl.test, dl.bug */ +dl.section +{ + margin-left: 0px; + padding-left: 0px; +} + +dl.note +{ + margin-left:-7px; + padding-left: 3px; + border-left:4px solid; + border-color: #D0C000; +} + +dl.warning, dl.attention +{ + margin-left:-7px; + padding-left: 3px; + border-left:4px solid; + border-color: #FF0000; +} + +dl.pre, dl.post, dl.invariant +{ + margin-left:-7px; + padding-left: 3px; + border-left:4px solid; + border-color: #00D000; +} + +dl.deprecated +{ + margin-left:-7px; + padding-left: 3px; + border-left:4px solid; + border-color: #505050; +} + +dl.todo +{ + margin-left:-7px; + padding-left: 3px; + border-left:4px solid; + border-color: #00C0E0; +} + +dl.test +{ + margin-left:-7px; + padding-left: 3px; + border-left:4px solid; + border-color: #3030E0; +} + +dl.bug +{ + margin-left:-7px; + padding-left: 3px; + border-left:4px solid; + border-color: #C08050; +} + +dl.section dd { + margin-bottom: 6px; +} + + +#projectlogo +{ + text-align: center; + vertical-align: bottom; + border-collapse: separate; +} + +#projectlogo img +{ + border: 0px none; +} + +#projectname +{ + font: 300% Tahoma, Arial,sans-serif; + margin: 0px; + padding: 2px 0px; +} + +#projectbrief +{ + font: 120% Tahoma, Arial,sans-serif; + margin: 0px; + padding: 0px; +} + +#projectnumber +{ + font: 50% Tahoma, Arial,sans-serif; + margin: 0px; + padding: 0px; +} + +#titlearea +{ + padding: 0px; + margin: 0px; + width: 100%; + border-bottom: 1px solid #37619B; +} + +.image +{ + text-align: center; +} + +.dotgraph +{ + text-align: center; +} + +.mscgraph +{ + text-align: center; +} + +.caption +{ + font-weight: bold; +} + +div.zoom +{ + border: 1px solid #6B93C9; +} + +dl.citelist { + margin-bottom:50px; +} + +dl.citelist dt { + color:#1E3555; + float:left; + font-weight:bold; + margin-right:10px; + padding:5px; +} + +dl.citelist dd { + margin:2px 0; + padding:5px 0; +} + +div.toc { + padding: 14px 25px; + background-color: #F0F4F9; + border: 1px solid #C9D7EB; + border-radius: 7px 7px 7px 7px; + float: right; + height: auto; + margin: 0 20px 10px 10px; + width: 200px; +} + +div.toc li { + background: url("bdwn.png") no-repeat scroll 0 5px transparent; + font: 10px/1.2 Verdana,DejaVu Sans,Geneva,sans-serif; + margin-top: 5px; + padding-left: 10px; + padding-top: 2px; +} + +div.toc h3 { + font: bold 12px/1.2 Arial,FreeSans,sans-serif; + color: #2F5283; + border-bottom: 0 none; + margin: 0; +} + +div.toc ul { + list-style: none outside none; + border: medium none; + padding: 0px; +} + +div.toc li.level1 { + margin-left: 0px; +} + +div.toc li.level2 { + margin-left: 15px; +} + +div.toc li.level3 { + margin-left: 30px; +} + +div.toc li.level4 { + margin-left: 45px; +} + +.inherit_header { + font-weight: bold; + color: gray; + cursor: pointer; + -webkit-touch-callout: none; + -webkit-user-select: none; + -khtml-user-select: none; + -moz-user-select: none; + -ms-user-select: none; + user-select: none; +} + +.inherit_header td { + padding: 6px 0px 2px 5px; +} + +.inherit { + display: none; +} + +tr.heading h2 { + margin-top: 12px; + margin-bottom: 4px; +} + +@media print +{ + #top { display: none; } + #side-nav { display: none; } + #nav-path { display: none; } + body { overflow:visible; } + h1, h2, h3, h4, h5, h6 { page-break-after: avoid; } + .summary { display: none; } + .memitem { page-break-inside: avoid; } + #doc-content + { + margin-left:0 !important; + height:auto !important; + width:auto !important; + overflow:inherit; + display:inline; + } +} + diff --git a/lib/docs/html/doxygen.png b/lib/docs/html/doxygen.png new file mode 100644 index 0000000000000000000000000000000000000000..8f089d5e170af979fa997a34ccf5e54b72f43b7d GIT binary patch literal 3829 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 + + + + + +TeamSpeak 3 PHP Framework: File List + + + + + + + + + + + + + +
+
+ + + + + + + +
+
TeamSpeak 3 PHP Framework +  1.1.23 +
+
Copyright © Planet TeamSpeak. All rights reserved.
+
+
+ + + + + +
+
+ +
+
+
+ +
+ + + + +
+ +
+ +
+
+
File List
+
+
+
Here is a list of all documented files with brief descriptions:
+
[detail level 1234]
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
\-TeamSpeak3
 o-Adapter
 |o-Blacklist
 ||\*Exception.phpTeamSpeak 3 PHP Framework
 |o-FileTransfer
 ||\*Exception.phpTeamSpeak 3 PHP Framework
 |o-ServerQuery
 ||o*Event.phpTeamSpeak 3 PHP Framework
 ||o*Exception.phpTeamSpeak 3 PHP Framework
 ||\*Reply.phpTeamSpeak 3 PHP Framework
 |o-TSDNS
 ||\*Exception.phpTeamSpeak 3 PHP Framework
 |o-Update
 ||\*Exception.phpTeamSpeak 3 PHP Framework
 |o*Abstract.phpTeamSpeak 3 PHP Framework
 |o*Blacklist.phpTeamSpeak 3 PHP Framework
 |o*Exception.phpTeamSpeak 3 PHP Framework
 |o*FileTransfer.phpTeamSpeak 3 PHP Framework
 |o*ServerQuery.phpTeamSpeak 3 PHP Framework
 |o*TSDNS.phpTeamSpeak 3 PHP Framework
 |\*Update.phpTeamSpeak 3 PHP Framework
 o-Helper
 |o-Profiler
 ||o*Exception.phpTeamSpeak 3 PHP Framework
 ||\*Timer.phpTeamSpeak 3 PHP Framework
 |o-Signal
 ||o*Exception.phpTeamSpeak 3 PHP Framework
 ||o*Handler.phpTeamSpeak 3 PHP Framework
 ||\*Interface.phpTeamSpeak 3 PHP Framework
 |o*Char.phpTeamSpeak 3 PHP Framework
 |o*Convert.phpTeamSpeak 3 PHP Framework
 |o*Crypt.phpTeamSpeak 3 PHP Framework
 |o*Exception.phpTeamSpeak 3 PHP Framework
 |o*Profiler.phpTeamSpeak 3 PHP Framework
 |o*Signal.phpTeamSpeak 3 PHP Framework
 |o*String.phpTeamSpeak 3 PHP Framework
 |\*Uri.phpTeamSpeak 3 PHP Framework
 o-Node
 |o*Abstract.phpTeamSpeak 3 PHP Framework
 |o*Channel.phpTeamSpeak 3 PHP Framework
 |o*Channelgroup.phpTeamSpeak 3 PHP Framework
 |o*Client.phpTeamSpeak 3 PHP Framework
 |o*Exception.phpTeamSpeak 3 PHP Framework
 |o*Host.phpTeamSpeak 3 PHP Framework
 |o*Server.phpTeamSpeak 3 PHP Framework
 |\*Servergroup.phpTeamSpeak 3 PHP Framework
 o-Transport
 |o*Abstract.phpTeamSpeak 3 PHP Framework
 |o*Exception.phpTeamSpeak 3 PHP Framework
 |o*TCP.phpTeamSpeak 3 PHP Framework
 |\*UDP.phpTeamSpeak 3 PHP Framework
 o-Viewer
 |o*Html.phpTeamSpeak 3 PHP Framework
 |o*Interface.phpTeamSpeak 3 PHP Framework
 |\*Text.phpTeamSpeak 3 PHP Framework
 o*Exception.phpTeamSpeak 3 PHP Framework
 \*TeamSpeak3.phpTeamSpeak 3 PHP Framework
+
+
+
+ + + + diff --git a/lib/docs/html/files.js b/lib/docs/html/files.js new file mode 100644 index 0000000..775f3d8 --- /dev/null +++ b/lib/docs/html/files.js @@ -0,0 +1,4 @@ +var files = +[ + [ "TeamSpeak3", "dir_8c6eb96e4942c21c15d2738fe9c923ec.html", "dir_8c6eb96e4942c21c15d2738fe9c923ec" ] +]; \ No newline at end of file diff --git a/lib/docs/html/ftv2blank.png b/lib/docs/html/ftv2blank.png new file mode 100644 index 0000000000000000000000000000000000000000..63c605bb4c3d941c921a4b6cfa74951e946bcb48 GIT binary patch literal 86 zcmeAS@N?(olHy`uVBq!ia0vp^0zfRr!3HExu9B$%QnH>djv*C{Z|`mdau^P8_z}#X h?B8GEpdi4(BFDx$je&7RrDQEg&ePS;Wt~$(69Dh@6T1Ka literal 0 HcmV?d00001 diff --git a/lib/docs/html/ftv2cl.png b/lib/docs/html/ftv2cl.png new file mode 100644 index 0000000000000000000000000000000000000000..efaf94fac73cd69d8be025eeaddd736e2bbe47c9 GIT binary patch literal 449 zcmV;y0Y3hTP)(fQ1_X6}<*)0C`#jP?0kbYrQ58ug9;0 rtOCG-_H~+W1E@HD|Iq-f*dFi>o4#Ewbh0Mo00000NkvXXu0mjf^sd4^ literal 0 HcmV?d00001 diff --git a/lib/docs/html/ftv2doc.png b/lib/docs/html/ftv2doc.png new file mode 100644 index 0000000000000000000000000000000000000000..bd8a25dafb1c55f1a51db7524e9fe713e59f83b9 GIT binary patch literal 805 zcmV+=1KRwFP)wNxEsOX^d`N3>&sa_uV&5 z6PIpG2#JqqEQ%3BsZASDbR6Cw3Ge0Wiaw z&1M1KqIV#djfXr0JPv#x+3~n-DyY|O=lSF!TLLc9TdU}Oki%}%vf*lXH-Hg_C9+#B zShX^m#e&OjB_JmcRyowE{~4Pj9j&5$Z-~Bu9QU70ns$n*2XZp3dZKk4vewn;B^nx? zReSU#9hnHXALse+#k^q>(*!oFCQ39FSpAo$+iAt;v6BpY`RVcmp*ut4_8~CiTh6|m|TsixxQmMBvfDxt&%EM;i>djI5|DIGH42{lIcyRdh ztpKK&rha`@=pLLq*2Kw!^@bj(iI;r36v?)jj0*+Er`n^YO75 zn~Zwb52H~k8DB?+3G}v0?LR?HT@#_?CvS+PS{2cBnY!&6!trKye)*l6YJiOxdLYAP j>FW3$;Jx|qKbijnW~sy018iv$00000NkvXXu0mjfBR7SL literal 0 HcmV?d00001 diff --git a/lib/docs/html/ftv2folderclosed.png b/lib/docs/html/ftv2folderclosed.png new file mode 100644 index 0000000000000000000000000000000000000000..1107725f4b25cd11196e226cbd3c43262c277246 GIT binary patch literal 635 zcmV->0)+jEP)HU%TxV=(+O-!SMF3z&FuF~?z4D*C@orNK z47SM)WY7Am&wfw!*wJHoMn5uF9O>u5%~EW^tk>&67%PuA>UXYBGkG}6#Gx$X2eV#& zW_p;iK2_!T5anYzN|OW3YRpUwP|}#6%JJm+d#+Ur_x{+TPhT3k>aen)>PFM<fHD+?+1oGnMk5=dCzJUJ}ZduQ0 z3d!RFTF~zt5Ju7iy=hDLQ_Kr`EH^TETG~*#xh-amxL)u5 z%A+DOHuWA62V#+Ga^%Izq=r2#))~*XQuyd zCIp0V{pFj;J!=~f9Y?QL#GwA{K7be!KNa&+gF{zO7uBWmm|9vGQy1p)s&=ZN&dui4 z*-~CrPmX$dZLXk}<_qeg#^uVmx>6~s^D`rAc>kW&ZBKAybnh*IzlDGQAFbyCzW`zK VCn6zFs3iaZ002ovPDHLkV1gzSGt&S7 literal 0 HcmV?d00001 diff --git a/lib/docs/html/ftv2folderopen.png b/lib/docs/html/ftv2folderopen.png new file mode 100644 index 0000000000000000000000000000000000000000..132f62476668f0a618f61a68c2c1a15e06ea0a3e GIT binary patch literal 635 zcmV->0)+jEP)c+#uz5WR?q zJt(LIf>MR*((VsucK6xc?529K2SIql%r)|rUJlW+P_bb0f01n z^={jH{`LzT*TbIe!ggGoTPox7psE1CpV~|U2JhAj$m<&PtmeOaEI#7t%dtNd#0!IAIjfDCf~Kj-YmI4wYgK#e$B>wuLLh z`dt8+Hf4HDZ$EtDO}<(L8a%sU;JKi3xloiKQ9fsr4E`+lEH>tG|K=#BB%$EJ=9YQs zw1HM7k2Yo64t!H>_Xn#+0P?V8^nluEBuG?6}#Swd0Uc z%spVws#H>C)BChLn;_srJC=j2Mm6CYQUe)OmSxWeqVk0Act3p!Ns|mo0y=2zIMsBuM;S{WKjZq~X$lfkbmPtwZ=qW7 zXFJ-1AZq}T#oxI8lK9i-?|5|YT5O6^6oBgNV%KKr`@k}ues-w-(X#+zYvxUk0?q=D zDvIv;Ey33NF@VUDs1h+PCO?0)1OPEhTr|2c)wQ#2abdM7&ac$PnWdT-EY`%SlZII7 z7-D&$BKloJ43}$S*sF_CzacITT4HV37NcHStaeJ92P(KeYTg2Xzh(dbXaI1a{R9R@ V5T9`vB830|002ovPDHLkV1o41Ft-2z literal 0 HcmV?d00001 diff --git a/lib/docs/html/ftv2lastnode.png b/lib/docs/html/ftv2lastnode.png new file mode 100644 index 0000000000000000000000000000000000000000..63c605bb4c3d941c921a4b6cfa74951e946bcb48 GIT binary patch literal 86 zcmeAS@N?(olHy`uVBq!ia0vp^0zfRr!3HExu9B$%QnH>djv*C{Z|`mdau^P8_z}#X h?B8GEpdi4(BFDx$je&7RrDQEg&ePS;Wt~$(69Dh@6T1Ka literal 0 HcmV?d00001 diff --git a/lib/docs/html/ftv2link.png b/lib/docs/html/ftv2link.png new file mode 100644 index 0000000000000000000000000000000000000000..bd8a25dafb1c55f1a51db7524e9fe713e59f83b9 GIT binary patch literal 805 zcmV+=1KRwFP)wNxEsOX^d`N3>&sa_uV&5 z6PIpG2#JqqEQ%3BsZASDbR6Cw3Ge0Wiaw z&1M1KqIV#djfXr0JPv#x+3~n-DyY|O=lSF!TLLc9TdU}Oki%}%vf*lXH-Hg_C9+#B zShX^m#e&OjB_JmcRyowE{~4Pj9j&5$Z-~Bu9QU70ns$n*2XZp3dZKk4vewn;B^nx? zReSU#9hnHXALse+#k^q>(*!oFCQ39FSpAo$+iAt;v6BpY`RVcmp*ut4_8~CiTh6|m|TsixxQmMBvfDxt&%EM;i>djI5|DIGH42{lIcyRdh ztpKK&rha`@=pLLq*2Kw!^@bj(iI;r36v?)jj0*+Er`n^YO75 zn~Zwb52H~k8DB?+3G}v0?LR?HT@#_?CvS+PS{2cBnY!&6!trKye)*l6YJiOxdLYAP j>FW3$;Jx|qKbijnW~sy018iv$00000NkvXXu0mjfBR7SL literal 0 HcmV?d00001 diff --git a/lib/docs/html/ftv2mlastnode.png b/lib/docs/html/ftv2mlastnode.png new file mode 100644 index 0000000000000000000000000000000000000000..13ec34bc564921f4b2556a5ce4a3369367e38c85 GIT binary patch literal 246 zcmV41eq=%?RafY6P6Oc*>2+SHB39h;xgQ%`)g218R0Q3U&Xu|fx?UdaSfIu|) z-+VJW+4tZ4yX!}7+rp1Ig5Piu{DENH-OT3C+r$J0c)M?=C$%TIh6)!bsu0A!Ogusl z4>^BAQGGMG3Log!duU*vZ-R8$B<|3yn_T~z4-^zb>_~1i(6cO$!)x{n=%e-;FT-az wham<9>AFswCSPEP>W7q@S5V{dGyMm_4nu?`k8wQF8vp41eq=%?RafY6P6Oc*>2+SHB39h;xgQ%`)g218R0Q3U&Xu|fx?UdaSfIu|) z-+VJW+4tZ4yX!}7+rp1Ig5Piu{DENH-OT3C+r$J0c)M?=C$%TIh6)!bsu0A!Ogusl z4>^BAQGGMG3Log!duU*vZ-R8$B<|3yn_T~z4-^zb>_~1i(6cO$!)x{n=%e-;FT-az wham<9>AFswCSPEP>W7q@S5V{dGyMm_4nu?`k8wQF8vp(}+1Ni{7qcfU0mN`C zoL-!4-2m9o5y<4*VlIUmuxvqnb0uS{05(jD4gnI77mfgI7=e+ zxDLwZa}Gc%996Dm+duqv;{@8hY`i&uI7|d}fP@?a*wEEfJgG|*Z(boA0EpqktEOiF kHgt*rvf}@rXqgLq0TRh!DCa?36#xJL07*qoM6N<$f}v@q&;S4c literal 0 HcmV?d00001 diff --git a/lib/docs/html/ftv2node.png b/lib/docs/html/ftv2node.png new file mode 100644 index 0000000000000000000000000000000000000000..63c605bb4c3d941c921a4b6cfa74951e946bcb48 GIT binary patch literal 86 zcmeAS@N?(olHy`uVBq!ia0vp^0zfRr!3HExu9B$%QnH>djv*C{Z|`mdau^P8_z}#X h?B8GEpdi4(BFDx$je&7RrDQEg&ePS;Wt~$(69Dh@6T1Ka literal 0 HcmV?d00001 diff --git a/lib/docs/html/ftv2ns.png b/lib/docs/html/ftv2ns.png new file mode 100644 index 0000000000000000000000000000000000000000..283055e4749ec8253314c8a984408273ef5f8df6 GIT binary patch literal 390 zcmV;10eSw3P)IlKvW8P1&S*qA}*p4 zv?mCcDA$|G?j|SMne1M+GuhA0WHWnj-^}D~n{r(jATf0SNlH9GgFl#DKOd8BNelrP z+=_#Xy_p*T8=Zmt`J8l@Vi_2=P;-j%%rtjkh0-Q>Z(b{3}k0cv7AMe`F`S~AT5u^9t&WE$C68~}(dIHo|=b@%k4 zmuV#52@qRo2BqguiVtskTuYG93{=}bzUO3foTjuol>pHh_u%Wh!s*p3Ky1bgR69H? zQRr#Y`vDM@AK+cIKE9My*#M}rwto%qR~f*@Um^z}qFn$Roq?19N8Y^R6|yvd!H-u> kj{s~^|6eo!lf(o30!8{qNP@O|H2?qr07*qoM6N<$f}`Z06#xJL literal 0 HcmV?d00001 diff --git a/lib/docs/html/ftv2plastnode.png b/lib/docs/html/ftv2plastnode.png new file mode 100644 index 0000000000000000000000000000000000000000..dd02e84a0a6648b4a4af4b1128f06c97c0f2213f GIT binary patch literal 226 zcmV<803H8{P)Pi6vpwt#>6$GG;so>y$x{%2cWfd0a?NkH0lHKLJ9x6D;JRpsPdxT^bWuwU?bjPMRhK@cFib zxttY}$p)ZJ$P!obQb-Ko3JJ(%t4Fy5xO_XPtCGPxxXH4sxov{7?|0A$P-D=$AOA+c cI{y#&0Q=APx#07*qoM6N<$g0&u57XSbN literal 0 HcmV?d00001 diff --git a/lib/docs/html/ftv2pnode.png b/lib/docs/html/ftv2pnode.png new file mode 100644 index 0000000000000000000000000000000000000000..dd02e84a0a6648b4a4af4b1128f06c97c0f2213f GIT binary patch literal 226 zcmV<803H8{P)Pi6vpwt#>6$GG;so>y$x{%2cWfd0a?NkH0lHKLJ9x6D;JRpsPdxT^bWuwU?bjPMRhK@cFib zxttY}$p)ZJ$P!obQb-Ko3JJ(%t4Fy5xO_XPtCGPxxXH4sxov{7?|0A$P-D=$AOA+c cI{y#&0Q=APx#07*qoM6N<$g0&u57XSbN literal 0 HcmV?d00001 diff --git a/lib/docs/html/ftv2splitbar.png b/lib/docs/html/ftv2splitbar.png new file mode 100644 index 0000000000000000000000000000000000000000..8e6d8fe8e83aff7e62cd4f7ae5d8dc7fe62105f1 GIT binary patch literal 309 zcmeAS@N?(olHy`uVBq!ia0vp^Yzz!63>-{AmhX=Jf@Vh3;o0rL>eAG z|IcaCR3g;4Lb}l@C3*8p9=GL-1@5d7*vYViQ9``I{2}Wfx8{@U4!SWW7UwO$k@5ap zox08MLpRUyu9+LNE^poW`}_Wve0Wyz{^`Yc58GAGh`UO-3c3Zh1d1ez5X1EMFpsaZ zIWvEM{{Krw8!Pti|9ausv0pcLKkuG=`s(p;Yw`K}_ui=6_Uqs4m-V)n?*9F||Ek~m tePvrX7Hb^R=rZV1>RCh_^B4bL#&ywl0X^5Z>Hx!m!PC{xWt~$(6998&gTMd) literal 0 HcmV?d00001 diff --git a/lib/docs/html/ftv2vertline.png b/lib/docs/html/ftv2vertline.png new file mode 100644 index 0000000000000000000000000000000000000000..63c605bb4c3d941c921a4b6cfa74951e946bcb48 GIT binary patch literal 86 zcmeAS@N?(olHy`uVBq!ia0vp^0zfRr!3HExu9B$%QnH>djv*C{Z|`mdau^P8_z}#X h?B8GEpdi4(BFDx$je&7RrDQEg&ePS;Wt~$(69Dh@6T1Ka literal 0 HcmV?d00001 diff --git a/lib/docs/html/functions.html b/lib/docs/html/functions.html new file mode 100644 index 0000000..6d82634 --- /dev/null +++ b/lib/docs/html/functions.html @@ -0,0 +1,220 @@ + + + + + + +TeamSpeak 3 PHP Framework: Class Members + + + + + + + + + + + + + +
+
+ + + + + + + +
+
TeamSpeak 3 PHP Framework +  1.1.23 +
+
Copyright © Planet TeamSpeak. All rights reserved.
+
+
+ + + + + + + +
+
+ +
+
+
+ +
+ + + + +
+ +
+ +
+
Here is a list of all documented class members with links to the class documentation for each member:
+ +

- $ -

+
+
+ + + + diff --git a/lib/docs/html/functions_0x5f.html b/lib/docs/html/functions_0x5f.html new file mode 100644 index 0000000..3db502c --- /dev/null +++ b/lib/docs/html/functions_0x5f.html @@ -0,0 +1,219 @@ + + + + + + +TeamSpeak 3 PHP Framework: Class Members + + + + + + + + + + + + + +
+
+ + + + + + + +
+
TeamSpeak 3 PHP Framework +  1.1.23 +
+
Copyright © Planet TeamSpeak. All rights reserved.
+
+
+ + + + + + + +
+
+ +
+
+
+ +
+ + + + +
+ +
+ +
+
Here is a list of all documented class members with links to the class documentation for each member:
+ +

- _ -

+
+
+ + + + diff --git a/lib/docs/html/functions_0x61.html b/lib/docs/html/functions_0x61.html new file mode 100644 index 0000000..d7fec33 --- /dev/null +++ b/lib/docs/html/functions_0x61.html @@ -0,0 +1,175 @@ + + + + + + +TeamSpeak 3 PHP Framework: Class Members + + + + + + + + + + + + + +
+
+ + + + + + + +
+
TeamSpeak 3 PHP Framework +  1.1.23 +
+
Copyright © Planet TeamSpeak. All rights reserved.
+
+
+ + + + + + + +
+
+ +
+
+
+ +
+ + + + +
+ +
+ +
+
Here is a list of all documented class members with links to the class documentation for each member:
+ +

- a -

+
+
+ + + + diff --git a/lib/docs/html/functions_0x62.html b/lib/docs/html/functions_0x62.html new file mode 100644 index 0000000..529c93b --- /dev/null +++ b/lib/docs/html/functions_0x62.html @@ -0,0 +1,178 @@ + + + + + + +TeamSpeak 3 PHP Framework: Class Members + + + + + + + + + + + + + +
+
+ + + + + + + +
+
TeamSpeak 3 PHP Framework +  1.1.23 +
+
Copyright © Planet TeamSpeak. All rights reserved.
+
+
+ + + + + + + +
+
+ +
+
+
+ +
+ + + + +
+ +
+ +
+
Here is a list of all documented class members with links to the class documentation for each member:
+ +

- b -

+
+
+ + + + diff --git a/lib/docs/html/functions_0x63.html b/lib/docs/html/functions_0x63.html new file mode 100644 index 0000000..d97dde9 --- /dev/null +++ b/lib/docs/html/functions_0x63.html @@ -0,0 +1,471 @@ + + + + + + +TeamSpeak 3 PHP Framework: Class Members + + + + + + + + + + + + + +
+
+ + + + + + + +
+
TeamSpeak 3 PHP Framework +  1.1.23 +
+
Copyright © Planet TeamSpeak. All rights reserved.
+
+
+ + + + + + + +
+
+ +
+
+
+ +
+ + + + +
+ +
+ +
+
Here is a list of all documented class members with links to the class documentation for each member:
+ +

- c -

+
+
+ + + + diff --git a/lib/docs/html/functions_0x64.html b/lib/docs/html/functions_0x64.html new file mode 100644 index 0000000..8f612dd --- /dev/null +++ b/lib/docs/html/functions_0x64.html @@ -0,0 +1,189 @@ + + + + + + +TeamSpeak 3 PHP Framework: Class Members + + + + + + + + + + + + + +
+
+ + + + + + + +
+
TeamSpeak 3 PHP Framework +  1.1.23 +
+
Copyright © Planet TeamSpeak. All rights reserved.
+
+
+ + + + + + + +
+
+ +
+
+
+ +
+ + + + +
+ +
+ +
+
Here is a list of all documented class members with links to the class documentation for each member:
+ +

- d -

+
+
+ + + + diff --git a/lib/docs/html/functions_0x65.html b/lib/docs/html/functions_0x65.html new file mode 100644 index 0000000..20e517e --- /dev/null +++ b/lib/docs/html/functions_0x65.html @@ -0,0 +1,181 @@ + + + + + + +TeamSpeak 3 PHP Framework: Class Members + + + + + + + + + + + + + +
+
+ + + + + + + +
+
TeamSpeak 3 PHP Framework +  1.1.23 +
+
Copyright © Planet TeamSpeak. All rights reserved.
+
+
+ + + + + + + +
+
+ +
+
+
+ +
+ + + + +
+ +
+ +
+
Here is a list of all documented class members with links to the class documentation for each member:
+ +

- e -

+
+
+ + + + diff --git a/lib/docs/html/functions_0x66.html b/lib/docs/html/functions_0x66.html new file mode 100644 index 0000000..7c837de --- /dev/null +++ b/lib/docs/html/functions_0x66.html @@ -0,0 +1,236 @@ + + + + + + +TeamSpeak 3 PHP Framework: Class Members + + + + + + + + + + + + + +
+
+ + + + + + + +
+
TeamSpeak 3 PHP Framework +  1.1.23 +
+
Copyright © Planet TeamSpeak. All rights reserved.
+
+
+ + + + + + + +
+
+ +
+
+
+ +
+ + + + +
+ +
+ +
+
Here is a list of all documented class members with links to the class documentation for each member:
+ +

- f -

+
+
+ + + + diff --git a/lib/docs/html/functions_0x67.html b/lib/docs/html/functions_0x67.html new file mode 100644 index 0000000..56111d2 --- /dev/null +++ b/lib/docs/html/functions_0x67.html @@ -0,0 +1,472 @@ + + + + + + +TeamSpeak 3 PHP Framework: Class Members + + + + + + + + + + + + + +
+
+ + + + + + + +
+
TeamSpeak 3 PHP Framework +  1.1.23 +
+
Copyright © Planet TeamSpeak. All rights reserved.
+
+
+ + + + + + + +
+
+ +
+
+
+ +
+ + + + +
+ +
+ +
+
Here is a list of all documented class members with links to the class documentation for each member:
+ +

- g -

+
+
+ + + + diff --git a/lib/docs/html/functions_0x68.html b/lib/docs/html/functions_0x68.html new file mode 100644 index 0000000..dd751f8 --- /dev/null +++ b/lib/docs/html/functions_0x68.html @@ -0,0 +1,214 @@ + + + + + + +TeamSpeak 3 PHP Framework: Class Members + + + + + + + + + + + + + +
+
+ + + + + + + +
+
TeamSpeak 3 PHP Framework +  1.1.23 +
+
Copyright © Planet TeamSpeak. All rights reserved.
+
+
+ + + + + + + +
+
+ +
+
+
+ +
+ + + + +
+ +
+ +
+
Here is a list of all documented class members with links to the class documentation for each member:
+ +

- h -

+
+
+ + + + diff --git a/lib/docs/html/functions_0x69.html b/lib/docs/html/functions_0x69.html new file mode 100644 index 0000000..357520d --- /dev/null +++ b/lib/docs/html/functions_0x69.html @@ -0,0 +1,241 @@ + + + + + + +TeamSpeak 3 PHP Framework: Class Members + + + + + + + + + + + + + +
+
+ + + + + + + +
+
TeamSpeak 3 PHP Framework +  1.1.23 +
+
Copyright © Planet TeamSpeak. All rights reserved.
+
+
+ + + + + + + +
+
+ +
+
+
+ +
+ + + + +
+ +
+ +
+
Here is a list of all documented class members with links to the class documentation for each member:
+ +

- i -

+
+
+ + + + diff --git a/lib/docs/html/functions_0x6b.html b/lib/docs/html/functions_0x6b.html new file mode 100644 index 0000000..b866cbc --- /dev/null +++ b/lib/docs/html/functions_0x6b.html @@ -0,0 +1,170 @@ + + + + + + +TeamSpeak 3 PHP Framework: Class Members + + + + + + + + + + + + + +
+
+ + + + + + + +
+
TeamSpeak 3 PHP Framework +  1.1.23 +
+
Copyright © Planet TeamSpeak. All rights reserved.
+
+
+ + + + + + + +
+
+ +
+
+
+ +
+ + + + +
+ +
+ +
+
Here is a list of all documented class members with links to the class documentation for each member:
+ +

- k -

+
+
+ + + + diff --git a/lib/docs/html/functions_0x6c.html b/lib/docs/html/functions_0x6c.html new file mode 100644 index 0000000..312929c --- /dev/null +++ b/lib/docs/html/functions_0x6c.html @@ -0,0 +1,201 @@ + + + + + + +TeamSpeak 3 PHP Framework: Class Members + + + + + + + + + + + + + +
+
+ + + + + + + +
+
TeamSpeak 3 PHP Framework +  1.1.23 +
+
Copyright © Planet TeamSpeak. All rights reserved.
+
+
+ + + + + + + +
+
+ +
+
+
+ +
+ + + + +
+ +
+ +
+
Here is a list of all documented class members with links to the class documentation for each member:
+ +

- l -

+
+
+ + + + diff --git a/lib/docs/html/functions_0x6d.html b/lib/docs/html/functions_0x6d.html new file mode 100644 index 0000000..df788a9 --- /dev/null +++ b/lib/docs/html/functions_0x6d.html @@ -0,0 +1,193 @@ + + + + + + +TeamSpeak 3 PHP Framework: Class Members + + + + + + + + + + + + + +
+
+ + + + + + + +
+
TeamSpeak 3 PHP Framework +  1.1.23 +
+
Copyright © Planet TeamSpeak. All rights reserved.
+
+
+ + + + + + + +
+
+ +
+
+
+ +
+ + + + +
+ +
+ +
+
Here is a list of all documented class members with links to the class documentation for each member:
+ +

- m -

+
+
+ + + + diff --git a/lib/docs/html/functions_0x6e.html b/lib/docs/html/functions_0x6e.html new file mode 100644 index 0000000..c189e57 --- /dev/null +++ b/lib/docs/html/functions_0x6e.html @@ -0,0 +1,167 @@ + + + + + + +TeamSpeak 3 PHP Framework: Class Members + + + + + + + + + + + + + +
+
+ + + + + + + +
+
TeamSpeak 3 PHP Framework +  1.1.23 +
+
Copyright © Planet TeamSpeak. All rights reserved.
+
+
+ + + + + + + +
+
+ +
+
+
+ +
+ + + + +
+ +
+ +
+
Here is a list of all documented class members with links to the class documentation for each member:
+ +

- n -

+
+
+ + + + diff --git a/lib/docs/html/functions_0x6f.html b/lib/docs/html/functions_0x6f.html new file mode 100644 index 0000000..13a27b3 --- /dev/null +++ b/lib/docs/html/functions_0x6f.html @@ -0,0 +1,255 @@ + + + + + + +TeamSpeak 3 PHP Framework: Class Members + + + + + + + + + + + + + +
+
+ + + + + + + +
+
TeamSpeak 3 PHP Framework +  1.1.23 +
+
Copyright © Planet TeamSpeak. All rights reserved.
+
+
+ + + + + + + +
+
+ +
+
+
+ +
+ + + + +
+ +
+ +
+
Here is a list of all documented class members with links to the class documentation for each member:
+ +

- o -

+
+
+ + + + diff --git a/lib/docs/html/functions_0x70.html b/lib/docs/html/functions_0x70.html new file mode 100644 index 0000000..0d4ce35 --- /dev/null +++ b/lib/docs/html/functions_0x70.html @@ -0,0 +1,373 @@ + + + + + + +TeamSpeak 3 PHP Framework: Class Members + + + + + + + + + + + + + +
+
+ + + + + + + +
+
TeamSpeak 3 PHP Framework +  1.1.23 +
+
Copyright © Planet TeamSpeak. All rights reserved.
+
+
+ + + + + + + +
+
+ +
+
+
+ +
+ + + + +
+ +
+ +
+
Here is a list of all documented class members with links to the class documentation for each member:
+ +

- p -

+
+
+ + + + diff --git a/lib/docs/html/functions_0x72.html b/lib/docs/html/functions_0x72.html new file mode 100644 index 0000000..1c2831e --- /dev/null +++ b/lib/docs/html/functions_0x72.html @@ -0,0 +1,238 @@ + + + + + + +TeamSpeak 3 PHP Framework: Class Members + + + + + + + + + + + + + +
+
+ + + + + + + +
+
TeamSpeak 3 PHP Framework +  1.1.23 +
+
Copyright © Planet TeamSpeak. All rights reserved.
+
+
+ + + + + + + +
+
+ +
+
+
+ +
+ + + + +
+ +
+ +
+
Here is a list of all documented class members with links to the class documentation for each member:
+ +

- r -

+
+
+ + + + diff --git a/lib/docs/html/functions_0x73.html b/lib/docs/html/functions_0x73.html new file mode 100644 index 0000000..39a4691 --- /dev/null +++ b/lib/docs/html/functions_0x73.html @@ -0,0 +1,452 @@ + + + + + + +TeamSpeak 3 PHP Framework: Class Members + + + + + + + + + + + + + +
+
+ + + + + + + +
+
TeamSpeak 3 PHP Framework +  1.1.23 +
+
Copyright © Planet TeamSpeak. All rights reserved.
+
+
+ + + + + + + +
+
+ +
+
+
+ +
+ + + + +
+ +
+ +
+
Here is a list of all documented class members with links to the class documentation for each member:
+ +

- s -

+
+
+ + + + diff --git a/lib/docs/html/functions_0x74.html b/lib/docs/html/functions_0x74.html new file mode 100644 index 0000000..c7f6e77 --- /dev/null +++ b/lib/docs/html/functions_0x74.html @@ -0,0 +1,275 @@ + + + + + + +TeamSpeak 3 PHP Framework: Class Members + + + + + + + + + + + + + +
+
+ + + + + + + +
+
TeamSpeak 3 PHP Framework +  1.1.23 +
+
Copyright © Planet TeamSpeak. All rights reserved.
+
+
+ + + + + + + +
+
+ +
+
+
+ +
+ + + + +
+ +
+ +
+
Here is a list of all documented class members with links to the class documentation for each member:
+ +

- t -

+
+
+ + + + diff --git a/lib/docs/html/functions_0x75.html b/lib/docs/html/functions_0x75.html new file mode 100644 index 0000000..ecdf3e5 --- /dev/null +++ b/lib/docs/html/functions_0x75.html @@ -0,0 +1,172 @@ + + + + + + +TeamSpeak 3 PHP Framework: Class Members + + + + + + + + + + + + + +
+
+ + + + + + + +
+
TeamSpeak 3 PHP Framework +  1.1.23 +
+
Copyright © Planet TeamSpeak. All rights reserved.
+
+
+ + + + + + + +
+
+ +
+
+
+ +
+ + + + +
+ +
+ +
+
Here is a list of all documented class members with links to the class documentation for each member:
+ +

- u -

+
+
+ + + + diff --git a/lib/docs/html/functions_0x76.html b/lib/docs/html/functions_0x76.html new file mode 100644 index 0000000..71719c8 --- /dev/null +++ b/lib/docs/html/functions_0x76.html @@ -0,0 +1,171 @@ + + + + + + +TeamSpeak 3 PHP Framework: Class Members + + + + + + + + + + + + + +
+
+ + + + + + + +
+
TeamSpeak 3 PHP Framework +  1.1.23 +
+
Copyright © Planet TeamSpeak. All rights reserved.
+
+
+ + + + + + + +
+
+ +
+
+
+ +
+ + + + +
+ +
+ +
+
Here is a list of all documented class members with links to the class documentation for each member:
+ +

- v -

+
+
+ + + + diff --git a/lib/docs/html/functions_0x77.html b/lib/docs/html/functions_0x77.html new file mode 100644 index 0000000..62c33a0 --- /dev/null +++ b/lib/docs/html/functions_0x77.html @@ -0,0 +1,175 @@ + + + + + + +TeamSpeak 3 PHP Framework: Class Members + + + + + + + + + + + + + +
+
+ + + + + + + +
+
TeamSpeak 3 PHP Framework +  1.1.23 +
+
Copyright © Planet TeamSpeak. All rights reserved.
+
+
+ + + + + + + +
+
+ +
+
+
+ +
+ + + + +
+ +
+ +
+
Here is a list of all documented class members with links to the class documentation for each member:
+ +

- w -

+
+
+ + + + diff --git a/lib/docs/html/functions_dup.js b/lib/docs/html/functions_dup.js new file mode 100644 index 0000000..bd0c222 --- /dev/null +++ b/lib/docs/html/functions_dup.js @@ -0,0 +1,26 @@ +var functions_dup = +[ + [ "$", "functions.html", null ], + [ "_", "functions_0x5f.html", null ], + [ "a", "functions_0x61.html", null ], + [ "b", "functions_0x62.html", null ], + [ "c", "functions_0x63.html", null ], + [ "d", "functions_0x64.html", null ], + [ "e", "functions_0x65.html", null ], + [ "f", "functions_0x66.html", null ], + [ "g", "functions_0x67.html", null ], + [ "h", "functions_0x68.html", null ], + [ "i", "functions_0x69.html", null ], + [ "k", "functions_0x6b.html", null ], + [ "l", "functions_0x6c.html", null ], + [ "m", "functions_0x6d.html", null ], + [ "n", "functions_0x6e.html", null ], + [ "o", "functions_0x6f.html", null ], + [ "p", "functions_0x70.html", null ], + [ "r", "functions_0x72.html", null ], + [ "s", "functions_0x73.html", null ], + [ "t", "functions_0x74.html", null ], + [ "u", "functions_0x75.html", null ], + [ "v", "functions_0x76.html", null ], + [ "w", "functions_0x77.html", null ] +]; \ No newline at end of file diff --git a/lib/docs/html/functions_func.html b/lib/docs/html/functions_func.html new file mode 100644 index 0000000..2c2ad62 --- /dev/null +++ b/lib/docs/html/functions_func.html @@ -0,0 +1,218 @@ + + + + + + +TeamSpeak 3 PHP Framework: Class Members - Functions + + + + + + + + + + + + + +
+
+ + + + + + + +
+
TeamSpeak 3 PHP Framework +  1.1.23 +
+
Copyright © Planet TeamSpeak. All rights reserved.
+
+
+ + + + + + + +
+
+ +
+
+
+ +
+ + + + +
+ +
+ +
+  + +

- _ -

+
+
+ + + + diff --git a/lib/docs/html/functions_func.js b/lib/docs/html/functions_func.js new file mode 100644 index 0000000..0a375e9 --- /dev/null +++ b/lib/docs/html/functions_func.js @@ -0,0 +1,25 @@ +var functions_func = +[ + [ "_", "functions_func.html", null ], + [ "a", "functions_func_0x61.html", null ], + [ "b", "functions_func_0x62.html", null ], + [ "c", "functions_func_0x63.html", null ], + [ "d", "functions_func_0x64.html", null ], + [ "e", "functions_func_0x65.html", null ], + [ "f", "functions_func_0x66.html", null ], + [ "g", "functions_func_0x67.html", null ], + [ "h", "functions_func_0x68.html", null ], + [ "i", "functions_func_0x69.html", null ], + [ "k", "functions_func_0x6b.html", null ], + [ "l", "functions_func_0x6c.html", null ], + [ "m", "functions_func_0x6d.html", null ], + [ "n", "functions_func_0x6e.html", null ], + [ "o", "functions_func_0x6f.html", null ], + [ "p", "functions_func_0x70.html", null ], + [ "r", "functions_func_0x72.html", null ], + [ "s", "functions_func_0x73.html", null ], + [ "t", "functions_func_0x74.html", null ], + [ "u", "functions_func_0x75.html", null ], + [ "v", "functions_func_0x76.html", null ], + [ "w", "functions_func_0x77.html", null ] +]; \ No newline at end of file diff --git a/lib/docs/html/functions_func_0x61.html b/lib/docs/html/functions_func_0x61.html new file mode 100644 index 0000000..214f081 --- /dev/null +++ b/lib/docs/html/functions_func_0x61.html @@ -0,0 +1,174 @@ + + + + + + +TeamSpeak 3 PHP Framework: Class Members - Functions + + + + + + + + + + + + + +
+
+ + + + + + + +
+
TeamSpeak 3 PHP Framework +  1.1.23 +
+
Copyright © Planet TeamSpeak. All rights reserved.
+
+
+ + + + + + + +
+
+ +
+
+
+ +
+ + + + +
+ +
+ +
+  + +

- a -

+
+
+ + + + diff --git a/lib/docs/html/functions_func_0x62.html b/lib/docs/html/functions_func_0x62.html new file mode 100644 index 0000000..32f2025 --- /dev/null +++ b/lib/docs/html/functions_func_0x62.html @@ -0,0 +1,177 @@ + + + + + + +TeamSpeak 3 PHP Framework: Class Members - Functions + + + + + + + + + + + + + +
+
+ + + + + + + +
+
TeamSpeak 3 PHP Framework +  1.1.23 +
+
Copyright © Planet TeamSpeak. All rights reserved.
+
+
+ + + + + + + +
+
+ +
+
+
+ +
+ + + + +
+ +
+ +
+  + +

- b -

+
+
+ + + + diff --git a/lib/docs/html/functions_func_0x63.html b/lib/docs/html/functions_func_0x63.html new file mode 100644 index 0000000..0c104d1 --- /dev/null +++ b/lib/docs/html/functions_func_0x63.html @@ -0,0 +1,437 @@ + + + + + + +TeamSpeak 3 PHP Framework: Class Members - Functions + + + + + + + + + + + + + +
+
+ + + + + + + +
+
TeamSpeak 3 PHP Framework +  1.1.23 +
+
Copyright © Planet TeamSpeak. All rights reserved.
+
+
+ + + + + + + +
+
+ +
+
+
+ +
+ + + + +
+ +
+ +
+  + +

- c -

+
+
+ + + + diff --git a/lib/docs/html/functions_func_0x64.html b/lib/docs/html/functions_func_0x64.html new file mode 100644 index 0000000..6ae8455 --- /dev/null +++ b/lib/docs/html/functions_func_0x64.html @@ -0,0 +1,188 @@ + + + + + + +TeamSpeak 3 PHP Framework: Class Members - Functions + + + + + + + + + + + + + +
+
+ + + + + + + +
+
TeamSpeak 3 PHP Framework +  1.1.23 +
+
Copyright © Planet TeamSpeak. All rights reserved.
+
+
+ + + + + + + +
+
+ +
+
+
+ + + + + + diff --git a/lib/docs/html/functions_func_0x65.html b/lib/docs/html/functions_func_0x65.html new file mode 100644 index 0000000..d5fa80d --- /dev/null +++ b/lib/docs/html/functions_func_0x65.html @@ -0,0 +1,174 @@ + + + + + + +TeamSpeak 3 PHP Framework: Class Members - Functions + + + + + + + + + + + + + +
+
+ + + + + + + +
+
TeamSpeak 3 PHP Framework +  1.1.23 +
+
Copyright © Planet TeamSpeak. All rights reserved.
+
+
+ + + + + + + +
+
+ +
+
+
+ +
+ + + + +
+ +
+ +
+  + +

- e -

+
+
+ + + + diff --git a/lib/docs/html/functions_func_0x66.html b/lib/docs/html/functions_func_0x66.html new file mode 100644 index 0000000..98fad55 --- /dev/null +++ b/lib/docs/html/functions_func_0x66.html @@ -0,0 +1,229 @@ + + + + + + +TeamSpeak 3 PHP Framework: Class Members - Functions + + + + + + + + + + + + + +
+
+ + + + + + + +
+
TeamSpeak 3 PHP Framework +  1.1.23 +
+
Copyright © Planet TeamSpeak. All rights reserved.
+
+
+ + + + + + + +
+
+ +
+
+
+ + + + + + diff --git a/lib/docs/html/functions_func_0x67.html b/lib/docs/html/functions_func_0x67.html new file mode 100644 index 0000000..7a3c13f --- /dev/null +++ b/lib/docs/html/functions_func_0x67.html @@ -0,0 +1,444 @@ + + + + + + +TeamSpeak 3 PHP Framework: Class Members - Functions + + + + + + + + + + + + + +
+
+ + + + + + + +
+
TeamSpeak 3 PHP Framework +  1.1.23 +
+
Copyright © Planet TeamSpeak. All rights reserved.
+
+
+ + + + + + + +
+
+ +
+
+
+ +
+ + + + +
+ +
+ +
+  + +

- g -

+
+
+ + + + diff --git a/lib/docs/html/functions_func_0x68.html b/lib/docs/html/functions_func_0x68.html new file mode 100644 index 0000000..33f6af4 --- /dev/null +++ b/lib/docs/html/functions_func_0x68.html @@ -0,0 +1,192 @@ + + + + + + +TeamSpeak 3 PHP Framework: Class Members - Functions + + + + + + + + + + + + + +
+
+ + + + + + + +
+
TeamSpeak 3 PHP Framework +  1.1.23 +
+
Copyright © Planet TeamSpeak. All rights reserved.
+
+
+ + + + + + + +
+
+ +
+
+
+ +
+ + + + +
+ +
+ +
+  + +

- h -

+
+
+ + + + diff --git a/lib/docs/html/functions_func_0x69.html b/lib/docs/html/functions_func_0x69.html new file mode 100644 index 0000000..cceed1f --- /dev/null +++ b/lib/docs/html/functions_func_0x69.html @@ -0,0 +1,240 @@ + + + + + + +TeamSpeak 3 PHP Framework: Class Members - Functions + + + + + + + + + + + + + +
+
+ + + + + + + +
+
TeamSpeak 3 PHP Framework +  1.1.23 +
+
Copyright © Planet TeamSpeak. All rights reserved.
+
+
+ + + + + + + +
+
+ +
+
+
+ +
+ + + + +
+ +
+ +
+  + +

- i -

+
+
+ + + + diff --git a/lib/docs/html/functions_func_0x6b.html b/lib/docs/html/functions_func_0x6b.html new file mode 100644 index 0000000..a82b674 --- /dev/null +++ b/lib/docs/html/functions_func_0x6b.html @@ -0,0 +1,163 @@ + + + + + + +TeamSpeak 3 PHP Framework: Class Members - Functions + + + + + + + + + + + + + +
+
+ + + + + + + +
+
TeamSpeak 3 PHP Framework +  1.1.23 +
+
Copyright © Planet TeamSpeak. All rights reserved.
+
+
+ + + + + + + +
+
+ +
+
+
+ + + + + + diff --git a/lib/docs/html/functions_func_0x6c.html b/lib/docs/html/functions_func_0x6c.html new file mode 100644 index 0000000..ebd0cb7 --- /dev/null +++ b/lib/docs/html/functions_func_0x6c.html @@ -0,0 +1,179 @@ + + + + + + +TeamSpeak 3 PHP Framework: Class Members - Functions + + + + + + + + + + + + + +
+
+ + + + + + + +
+
TeamSpeak 3 PHP Framework +  1.1.23 +
+
Copyright © Planet TeamSpeak. All rights reserved.
+
+
+ + + + + + + +
+
+ +
+
+
+ +
+ + + + +
+ +
+ +
+  + +

- l -

+
+
+ + + + diff --git a/lib/docs/html/functions_func_0x6d.html b/lib/docs/html/functions_func_0x6d.html new file mode 100644 index 0000000..c5e22db --- /dev/null +++ b/lib/docs/html/functions_func_0x6d.html @@ -0,0 +1,192 @@ + + + + + + +TeamSpeak 3 PHP Framework: Class Members - Functions + + + + + + + + + + + + + +
+
+ + + + + + + +
+
TeamSpeak 3 PHP Framework +  1.1.23 +
+
Copyright © Planet TeamSpeak. All rights reserved.
+
+
+ + + + + + + +
+
+ +
+
+
+ + + + + + diff --git a/lib/docs/html/functions_func_0x6e.html b/lib/docs/html/functions_func_0x6e.html new file mode 100644 index 0000000..ff333d6 --- /dev/null +++ b/lib/docs/html/functions_func_0x6e.html @@ -0,0 +1,166 @@ + + + + + + +TeamSpeak 3 PHP Framework: Class Members - Functions + + + + + + + + + + + + + +
+
+ + + + + + + +
+
TeamSpeak 3 PHP Framework +  1.1.23 +
+
Copyright © Planet TeamSpeak. All rights reserved.
+
+
+ + + + + + + +
+
+ +
+
+
+ +
+ + + + +
+ +
+ +
+  + +

- n -

+
+
+ + + + diff --git a/lib/docs/html/functions_func_0x6f.html b/lib/docs/html/functions_func_0x6f.html new file mode 100644 index 0000000..043be3a --- /dev/null +++ b/lib/docs/html/functions_func_0x6f.html @@ -0,0 +1,254 @@ + + + + + + +TeamSpeak 3 PHP Framework: Class Members - Functions + + + + + + + + + + + + + +
+
+ + + + + + + +
+
TeamSpeak 3 PHP Framework +  1.1.23 +
+
Copyright © Planet TeamSpeak. All rights reserved.
+
+
+ + + + + + + +
+
+ +
+
+
+ +
+ + + + +
+ +
+ +
+  + +

- o -

+
+
+ + + + diff --git a/lib/docs/html/functions_func_0x70.html b/lib/docs/html/functions_func_0x70.html new file mode 100644 index 0000000..76da23b --- /dev/null +++ b/lib/docs/html/functions_func_0x70.html @@ -0,0 +1,264 @@ + + + + + + +TeamSpeak 3 PHP Framework: Class Members - Functions + + + + + + + + + + + + + +
+
+ + + + + + + +
+
TeamSpeak 3 PHP Framework +  1.1.23 +
+
Copyright © Planet TeamSpeak. All rights reserved.
+
+
+ + + + + + + +
+
+ +
+
+
+ +
+ + + + +
+ +
+ +
+  + +

- p -

+
+
+ + + + diff --git a/lib/docs/html/functions_func_0x72.html b/lib/docs/html/functions_func_0x72.html new file mode 100644 index 0000000..135a96f --- /dev/null +++ b/lib/docs/html/functions_func_0x72.html @@ -0,0 +1,198 @@ + + + + + + +TeamSpeak 3 PHP Framework: Class Members - Functions + + + + + + + + + + + + + +
+
+ + + + + + + +
+
TeamSpeak 3 PHP Framework +  1.1.23 +
+
Copyright © Planet TeamSpeak. All rights reserved.
+
+
+ + + + + + + +
+
+ +
+
+
+ + + + + + diff --git a/lib/docs/html/functions_func_0x73.html b/lib/docs/html/functions_func_0x73.html new file mode 100644 index 0000000..f19ef55 --- /dev/null +++ b/lib/docs/html/functions_func_0x73.html @@ -0,0 +1,397 @@ + + + + + + +TeamSpeak 3 PHP Framework: Class Members - Functions + + + + + + + + + + + + + +
+
+ + + + + + + +
+
TeamSpeak 3 PHP Framework +  1.1.23 +
+
Copyright © Planet TeamSpeak. All rights reserved.
+
+
+ + + + + + + +
+
+ +
+
+
+ +
+ + + + +
+ +
+ +
+  + +

- s -

+
+
+ + + + diff --git a/lib/docs/html/functions_func_0x74.html b/lib/docs/html/functions_func_0x74.html new file mode 100644 index 0000000..8435e38 --- /dev/null +++ b/lib/docs/html/functions_func_0x74.html @@ -0,0 +1,259 @@ + + + + + + +TeamSpeak 3 PHP Framework: Class Members - Functions + + + + + + + + + + + + + +
+
+ + + + + + + +
+
TeamSpeak 3 PHP Framework +  1.1.23 +
+
Copyright © Planet TeamSpeak. All rights reserved.
+
+
+ + + + + + + +
+
+ +
+
+
+ +
+ + + + +
+ +
+ +
+  + +

- t -

+
+
+ + + + diff --git a/lib/docs/html/functions_func_0x75.html b/lib/docs/html/functions_func_0x75.html new file mode 100644 index 0000000..2f2c8d7 --- /dev/null +++ b/lib/docs/html/functions_func_0x75.html @@ -0,0 +1,171 @@ + + + + + + +TeamSpeak 3 PHP Framework: Class Members - Functions + + + + + + + + + + + + + +
+
+ + + + + + + +
+
TeamSpeak 3 PHP Framework +  1.1.23 +
+
Copyright © Planet TeamSpeak. All rights reserved.
+
+
+ + + + + + + +
+
+ +
+
+
+ +
+ + + + +
+ +
+ +
+  + +

- u -

+
+
+ + + + diff --git a/lib/docs/html/functions_func_0x76.html b/lib/docs/html/functions_func_0x76.html new file mode 100644 index 0000000..daca846 --- /dev/null +++ b/lib/docs/html/functions_func_0x76.html @@ -0,0 +1,170 @@ + + + + + + +TeamSpeak 3 PHP Framework: Class Members - Functions + + + + + + + + + + + + + +
+
+ + + + + + + +
+
TeamSpeak 3 PHP Framework +  1.1.23 +
+
Copyright © Planet TeamSpeak. All rights reserved.
+
+
+ + + + + + + +
+
+ +
+
+
+ + + + + + diff --git a/lib/docs/html/functions_func_0x77.html b/lib/docs/html/functions_func_0x77.html new file mode 100644 index 0000000..a8fc57d --- /dev/null +++ b/lib/docs/html/functions_func_0x77.html @@ -0,0 +1,174 @@ + + + + + + +TeamSpeak 3 PHP Framework: Class Members - Functions + + + + + + + + + + + + + +
+
+ + + + + + + +
+
TeamSpeak 3 PHP Framework +  1.1.23 +
+
Copyright © Planet TeamSpeak. All rights reserved.
+
+
+ + + + + + + +
+
+ +
+
+
+ +
+ + + + +
+ +
+ +
+  + +

- w -

+
+
+ + + + diff --git a/lib/docs/html/functions_vars.html b/lib/docs/html/functions_vars.html new file mode 100644 index 0000000..897f52c --- /dev/null +++ b/lib/docs/html/functions_vars.html @@ -0,0 +1,589 @@ + + + + + + +TeamSpeak 3 PHP Framework: Class Members - Variables + + + + + + + + + + + + + +
+
+ + + + + + + +
+
TeamSpeak 3 PHP Framework +  1.1.23 +
+
Copyright © Planet TeamSpeak. All rights reserved.
+
+
+ + + + + + + +
+
+ +
+
+
+ +
+ + + + +
+ +
+ +
+  + +

- $ -

+ + +

- c -

+ + +

- e -

+ + +

- f -

+ + +

- g -

+ + +

- h -

+ + +

- k -

+ + +

- l -

+ + +

- p -

+ + +

- r -

+ + +

- s -

+ + +

- t -

+
+
+ + + + diff --git a/lib/docs/html/hierarchy.html b/lib/docs/html/hierarchy.html new file mode 100644 index 0000000..01da899 --- /dev/null +++ b/lib/docs/html/hierarchy.html @@ -0,0 +1,180 @@ + + + + + + +TeamSpeak 3 PHP Framework: Class Hierarchy + + + + + + + + + + + + + +
+
+ + + + + + + +
+
TeamSpeak 3 PHP Framework +  1.1.23 +
+
Copyright © Planet TeamSpeak. All rights reserved.
+
+
+ + + + + +
+
+ +
+
+
+ +
+ + + + +
+ +
+ +
+
+
Class Hierarchy
+
+
+
This inheritance list is sorted roughly, but not completely, alphabetically:
+
[detail level 1234]
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
oCArrayAccess
|oCTeamSpeak3_Adapter_ServerQuery_EventProvides methods to analyze and format a ServerQuery event
|oCTeamSpeak3_Helper_StringHelper class for string handling
|\CTeamSpeak3_Node_AbstractAbstract class describing a TeamSpeak 3 node and all it's parameters
| oCTeamSpeak3_Node_ChannelClass describing a TeamSpeak 3 channel and all it's parameters
| oCTeamSpeak3_Node_ChannelgroupClass describing a TeamSpeak 3 channel group and all it's parameters
| oCTeamSpeak3_Node_ClientClass describing a TeamSpeak 3 client and all it's parameters
| oCTeamSpeak3_Node_HostClass describing a TeamSpeak 3 server instance and all it's parameters
| oCTeamSpeak3_Node_ServerClass describing a TeamSpeak 3 virtual server and all it's parameters
| \CTeamSpeak3_Node_ServergroupClass describing a TeamSpeak 3 server group and all it's parameters
oCCountable
|oCTeamSpeak3_Helper_StringHelper class for string handling
|\CTeamSpeak3_Node_AbstractAbstract class describing a TeamSpeak 3 node and all it's parameters
oCException
|\CTeamSpeak3_ExceptionEnhanced exception class for TeamSpeak3 objects
| oCTeamSpeak3_Adapter_ExceptionEnhanced exception class for TeamSpeak3_Adapter_Abstract objects
| |oCTeamSpeak3_Adapter_Blacklist_ExceptionEnhanced exception class for TeamSpeak3_Adapter_Blacklist objects
| |oCTeamSpeak3_Adapter_FileTransfer_ExceptionEnhanced exception class for TeamSpeak3_Adapter_FileTransfer objects
| |oCTeamSpeak3_Adapter_ServerQuery_ExceptionEnhanced exception class for TeamSpeak3_Adapter_ServerQuery objects
| |oCTeamSpeak3_Adapter_TSDNS_ExceptionEnhanced exception class for TeamSpeak3_Adapter_TSDNS objects
| |\CTeamSpeak3_Adapter_Update_ExceptionEnhanced exception class for TeamSpeak3_Adapter_Update objects
| oCTeamSpeak3_Helper_ExceptionEnhanced exception class for TeamSpeak3_Helper_* objects
| |oCTeamSpeak3_Helper_Profiler_ExceptionEnhanced exception class for TeamSpeak3_Helper_Profiler objects
| |\CTeamSpeak3_Helper_Signal_ExceptionEnhanced exception class for TeamSpeak3_Helper_Signal objects
| oCTeamSpeak3_Node_ExceptionEnhanced exception class for TeamSpeak3_Node_Abstract objects
| \CTeamSpeak3_Transport_ExceptionEnhanced exception class for TeamSpeak3_Transport_Abstract objects
oCIterator
|\CTeamSpeak3_Helper_StringHelper class for string handling
oCRecursiveIterator
|\CTeamSpeak3_Node_AbstractAbstract class describing a TeamSpeak 3 node and all it's parameters
oCTeamSpeak3Factory class all for TeamSpeak 3 PHP Framework objects
oCTeamSpeak3_Adapter_AbstractProvides low-level methods for concrete adapters to communicate with a TeamSpeak 3 Server
|oCTeamSpeak3_Adapter_BlacklistProvides methods to check if an IP address is currently blacklisted
|oCTeamSpeak3_Adapter_FileTransferProvides low-level methods for file transfer communication with a TeamSpeak 3 Server
|oCTeamSpeak3_Adapter_ServerQueryProvides low-level methods for ServerQuery communication with a TeamSpeak 3 Server
|oCTeamSpeak3_Adapter_TSDNSProvides methods to query a TSDNS server
|\CTeamSpeak3_Adapter_UpdateProvides methods to query the latest TeamSpeak 3 build numbers from the master server
oCTeamSpeak3_Adapter_ServerQuery_ReplyProvides methods to analyze and format a ServerQuery reply
oCTeamSpeak3_Helper_CharHelper class for char handling
oCTeamSpeak3_Helper_ConvertHelper class for data conversion
oCTeamSpeak3_Helper_CryptHelper class for data encryption
oCTeamSpeak3_Helper_ProfilerHelper class for profiler handling
oCTeamSpeak3_Helper_Profiler_TimerHelper class providing profiler timers
oCTeamSpeak3_Helper_SignalHelper class for signal slots
oCTeamSpeak3_Helper_Signal_HandlerHelper class providing handler functions for signals
oCTeamSpeak3_Helper_Signal_InterfaceInterface class describing the layout for TeamSpeak3_Helper_Signal callbacks
oCTeamSpeak3_Helper_UriHelper class for URI handling
oCTeamSpeak3_Transport_AbstractAbstract class for connecting to a TeamSpeak 3 Server through different ways of transport
|oCTeamSpeak3_Transport_TCPClass for connecting to a remote server through TCP
|\CTeamSpeak3_Transport_UDPClass for connecting to a remote server through UDP
\CTeamSpeak3_Viewer_InterfaceInterface class describing a TeamSpeak 3 viewer
 oCTeamSpeak3_Viewer_HtmlRenders nodes used in HTML-based TeamSpeak 3 viewers
 \CTeamSpeak3_Viewer_TextRenders nodes used in ASCII-based TeamSpeak 3 viewers
+
+
+
+ + + + diff --git a/lib/docs/html/hierarchy.js b/lib/docs/html/hierarchy.js new file mode 100644 index 0000000..63f4727 --- /dev/null +++ b/lib/docs/html/hierarchy.js @@ -0,0 +1,68 @@ +var hierarchy = +[ + [ "ArrayAccess", null, [ + [ "TeamSpeak3_Adapter_ServerQuery_Event", "class_team_speak3___adapter___server_query___event.html", null ], + [ "TeamSpeak3_Helper_String", "class_team_speak3___helper___string.html", null ], + [ "TeamSpeak3_Node_Abstract", "class_team_speak3___node___abstract.html", [ + [ "TeamSpeak3_Node_Channel", "class_team_speak3___node___channel.html", null ], + [ "TeamSpeak3_Node_Channelgroup", "class_team_speak3___node___channelgroup.html", null ], + [ "TeamSpeak3_Node_Client", "class_team_speak3___node___client.html", null ], + [ "TeamSpeak3_Node_Host", "class_team_speak3___node___host.html", null ], + [ "TeamSpeak3_Node_Server", "class_team_speak3___node___server.html", null ], + [ "TeamSpeak3_Node_Servergroup", "class_team_speak3___node___servergroup.html", null ] + ] ] + ] ], + [ "Countable", null, [ + [ "TeamSpeak3_Helper_String", "class_team_speak3___helper___string.html", null ], + [ "TeamSpeak3_Node_Abstract", "class_team_speak3___node___abstract.html", null ] + ] ], + [ "Exception", null, [ + [ "TeamSpeak3_Exception", "class_team_speak3___exception.html", [ + [ "TeamSpeak3_Adapter_Exception", "class_team_speak3___adapter___exception.html", [ + [ "TeamSpeak3_Adapter_Blacklist_Exception", "class_team_speak3___adapter___blacklist___exception.html", null ], + [ "TeamSpeak3_Adapter_FileTransfer_Exception", "class_team_speak3___adapter___file_transfer___exception.html", null ], + [ "TeamSpeak3_Adapter_ServerQuery_Exception", "class_team_speak3___adapter___server_query___exception.html", null ], + [ "TeamSpeak3_Adapter_TSDNS_Exception", "class_team_speak3___adapter___t_s_d_n_s___exception.html", null ], + [ "TeamSpeak3_Adapter_Update_Exception", "class_team_speak3___adapter___update___exception.html", null ] + ] ], + [ "TeamSpeak3_Helper_Exception", "class_team_speak3___helper___exception.html", [ + [ "TeamSpeak3_Helper_Profiler_Exception", "class_team_speak3___helper___profiler___exception.html", null ], + [ "TeamSpeak3_Helper_Signal_Exception", "class_team_speak3___helper___signal___exception.html", null ] + ] ], + [ "TeamSpeak3_Node_Exception", "class_team_speak3___node___exception.html", null ], + [ "TeamSpeak3_Transport_Exception", "class_team_speak3___transport___exception.html", null ] + ] ] + ] ], + [ "Iterator", null, [ + [ "TeamSpeak3_Helper_String", "class_team_speak3___helper___string.html", null ] + ] ], + [ "RecursiveIterator", null, [ + [ "TeamSpeak3_Node_Abstract", "class_team_speak3___node___abstract.html", null ] + ] ], + [ "TeamSpeak3", "class_team_speak3.html", null ], + [ "TeamSpeak3_Adapter_Abstract", "class_team_speak3___adapter___abstract.html", [ + [ "TeamSpeak3_Adapter_Blacklist", "class_team_speak3___adapter___blacklist.html", null ], + [ "TeamSpeak3_Adapter_FileTransfer", "class_team_speak3___adapter___file_transfer.html", null ], + [ "TeamSpeak3_Adapter_ServerQuery", "class_team_speak3___adapter___server_query.html", null ], + [ "TeamSpeak3_Adapter_TSDNS", "class_team_speak3___adapter___t_s_d_n_s.html", null ], + [ "TeamSpeak3_Adapter_Update", "class_team_speak3___adapter___update.html", null ] + ] ], + [ "TeamSpeak3_Adapter_ServerQuery_Reply", "class_team_speak3___adapter___server_query___reply.html", null ], + [ "TeamSpeak3_Helper_Char", "class_team_speak3___helper___char.html", null ], + [ "TeamSpeak3_Helper_Convert", "class_team_speak3___helper___convert.html", null ], + [ "TeamSpeak3_Helper_Crypt", "class_team_speak3___helper___crypt.html", null ], + [ "TeamSpeak3_Helper_Profiler", "class_team_speak3___helper___profiler.html", null ], + [ "TeamSpeak3_Helper_Profiler_Timer", "class_team_speak3___helper___profiler___timer.html", null ], + [ "TeamSpeak3_Helper_Signal", "class_team_speak3___helper___signal.html", null ], + [ "TeamSpeak3_Helper_Signal_Handler", "class_team_speak3___helper___signal___handler.html", null ], + [ "TeamSpeak3_Helper_Signal_Interface", "interface_team_speak3___helper___signal___interface.html", null ], + [ "TeamSpeak3_Helper_Uri", "class_team_speak3___helper___uri.html", null ], + [ "TeamSpeak3_Transport_Abstract", "class_team_speak3___transport___abstract.html", [ + [ "TeamSpeak3_Transport_TCP", "class_team_speak3___transport___t_c_p.html", null ], + [ "TeamSpeak3_Transport_UDP", "class_team_speak3___transport___u_d_p.html", null ] + ] ], + [ "TeamSpeak3_Viewer_Interface", "interface_team_speak3___viewer___interface.html", [ + [ "TeamSpeak3_Viewer_Html", "class_team_speak3___viewer___html.html", null ], + [ "TeamSpeak3_Viewer_Text", "class_team_speak3___viewer___text.html", null ] + ] ] +]; \ No newline at end of file diff --git a/lib/docs/html/index.html b/lib/docs/html/index.html new file mode 100644 index 0000000..75825b1 --- /dev/null +++ b/lib/docs/html/index.html @@ -0,0 +1,452 @@ + + + + + + +TeamSpeak 3 PHP Framework: API Documentation + + + + + + + + + + + + + +
+
+ + + + + + + +
+
TeamSpeak 3 PHP Framework +  1.1.23 +
+
Copyright © Planet TeamSpeak. All rights reserved.
+
+
+ + + + +
+
+ +
+
+
+ +
+ + + + +
+ +
+ +
+
+
API Documentation
+
+
+

+Introduction

+

+What is the TS3 PHP Framework?

+

Initially released in January 2010, the TS3 PHP Framework is a powerful, open source, object-oriented framework implemented in PHP 5 and licensed under the GNU General Public License. It's based on simplicity and a rigorously tested agile codebase. Extend the functionality of your servers with scripts or create powerful web applications to manage all features of your TeamSpeak 3 Server instances.

+

Tested. Thoroughly. Enterprise-ready and built with agile methods, the TS3 PHP Framework has been unit-tested from the start to ensure that all code remains stable and easy for you to extend, re-test with your extensions, and further maintain.

+

+Why should I use the TS3 PHP Framework rather than other PHP libraries?

+

The TS3 PHP Framework is a is a modern use-at-will framework that provides individual components to communicate with the TeamSpeak 3 Server.

+

There are lots of arguments for the TS3 PHP Framework in comparison with other PHP based libraries. It is the most dynamic and feature-rich piece of software in its class. In addition, it's always up-to-date and 100% compatible to almost any TeamSpeak 3 Server version available.

+

+Requirements

+

The TS3 PHP Framework currently supports PHP 5.2.1 or later, but we strongly recommend the most current release of PHP for critical security and performance enhancements. If you want to create a web application using the TS3 PHP Framework, you need a PHP 5 interpreter with a web server configured to handle PHP scripts correctly.

+

Note that the majority of TS3 PHP Framework development and deployment is done on nginx, so there is more community experience and testing performed on nginx than on other web servers.

+

+Features

+

Features of the TS3 PHP Framework include:

+
    +
  • Fully object-oriented PHP 5 and E_STRICT compliant components
  • +
  • Access to all TeamSpeak 3 Server features via ServerQuery
  • +
  • Integrated full featured and customizable TSViewer interfaces
  • +
  • Full support for file transfers to up- and /or download custom icons and other stuff
  • +
  • Powerful error handling capablities using exceptions and customizable error messages
  • +
  • Query mechanisms for several official services such as the blacklist and auto-update servers
  • +
  • Dynamic signal slots for event based scripting
  • +
  • ...
  • +
+

+Usage Examples

+

+1. Kick a single Client from a Virtual Server

+
// load framework files
+
require_once("libraries/TeamSpeak3/TeamSpeak3.php");
+
+
// connect to local server, authenticate and spawn an object for the virtual server on port 9987
+
$ts3_VirtualServer = TeamSpeak3::factory("serverquery://username:password@127.0.0.1:10011/?server_port=9987");
+
+
// kick the client with ID 123 from the server
+
$ts3_VirtualServer->clientKick(123, TeamSpeak3::KICK_SERVER, "evil kick XD");
+
+
// spawn an object for the client by unique identifier and do the kick
+
$ts3_VirtualServer->clientGetByUid("FPMPSC6MXqXq751dX7BKV0JniSo=")->kick(TeamSpeak3::KICK_SERVER, "evil kick XD");
+
+
// spawn an object for the client by current nickname and do the kick
+
$ts3_VirtualServer->clientGetByName("ScP")->kick(TeamSpeak3::KICK_SERVER, "evil kick XD");
+

+2. Kick all Clients from a Virtual Server

+
// load framework files
+
require_once("libraries/TeamSpeak3/TeamSpeak3.php");
+
+
// connect to local server, authenticate and spawn an object for the virtual server on port 9987
+
$ts3_VirtualServer = TeamSpeak3::factory("serverquery://username:password@127.0.0.1:10011/?server_port=9987");
+
+
// query clientlist from virtual server
+
$arr_ClientList = $ts3_VirtualServer->clientList();
+
+
// kick all clients online with a single command
+
$ts3_VirtualServer->clientKick($arr_ClientList, TeamSpeak3::KICK_SERVER, "evil kick XD");
+

+3. Print the Nicknames of connected Android Clients

+
// load framework files
+
require_once("libraries/TeamSpeak3/TeamSpeak3.php");
+
+
// connect to local server, authenticate and spawn an object for the virtual server on port 9987
+
$ts3_VirtualServer = TeamSpeak3::factory("serverquery://username:password@127.0.0.1:10011/?server_port=9987");
+
+
// query clientlist from virtual server and filter by platform
+
$arr_ClientList = $ts3_VirtualServer->clientList(array("client_platform" => "Android"));
+
+
// walk through list of clients
+
foreach($arr_ClientList as $ts3_Client)
+
{
+
echo $ts3_Client . " is using " . $ts3_Client["client_platform"] . "<br />\n";
+
}
+

+4. Modify the Settings of each Virtual Server

+
// load framework files
+
require_once("libraries/TeamSpeak3/TeamSpeak3.php");
+
+
// connect to local server, authenticate and spawn an object for the server instance
+
$ts3_ServerInstance = TeamSpeak3::factory("serverquery://username:password@127.0.0.1:10011/");
+
+
// walk through list of virtual servers
+
foreach($ts3_ServerInstance as $ts3_VirtualServer)
+
{
+
// modify the virtual servers hostbanner URL only using the ArrayAccess interface
+
$ts3_VirtualServer["virtualserver_hostbanner_gfx_url"] = "http://www.example.com/banners/banner01_468x60.jpg";
+
+
// modify the virtual servers hostbanner URL only using property overloading
+
$ts3_VirtualServer->virtualserver_hostbanner_gfx_url = "http://www.example.com/banners/banner01_468x60.jpg";
+
+
// modify multiple virtual server properties at once
+
$ts3_VirtualServer->modify(array(
+
"virtualserver_hostbutton_tooltip" => "My Company",
+
"virtualserver_hostbutton_url" => "http://www.example.com",
+
"virtualserver_hostbutton_gfx_url" => "http://www.example.com/buttons/button01_24x24.jpg",
+
));
+
}
+

+5. Create a Privilege Key for a Server Group

+
// load framework files
+
require_once("libraries/TeamSpeak3/TeamSpeak3.php");
+
+
// connect to local server, authenticate and spawn an object for the virtual server on port 9987
+
$ts3_VirtualServer = TeamSpeak3::factory("serverquery://username:password@127.0.0.1:10011/?server_port=9987");
+
+
// spawn an object for the group using a specified name
+
$arr_ServerGroup = $ts3_VirtualServer->serverGroupGetByName("Admins");
+
+
// create the privilege key
+
$ts3_PrivilegeKey = $arr_ServerGroup->privilegeKeyCreate();
+

+6. Modify the Permissions of Admins on each Virtual Server

+
// load framework files
+
require_once("libraries/TeamSpeak3/TeamSpeak3.php");
+
+
// connect to local server, authenticate and spawn an object for the server instance
+
$ts3_ServerInstance = TeamSpeak3::factory("serverquery://username:password@127.0.0.1:10011/");
+
+
// walk through list of virtual servers
+
foreach($ts3_ServerInstance as $ts3_VirtualServer)
+
{
+
// identify the most powerful group on the virtual server
+
$ts3_ServerGroup = $ts3_VirtualServer->serverGroupIdentify();
+
+
// assign a new permission
+
$ts3_ServerGroup->permAssign("b_virtualserver_modify_hostbanner", TRUE);
+
+
// revoke an existing permission
+
$ts3_ServerGroup->permRemove("b_virtualserver_modify_maxclients");
+
}
+

+7. Create a new Virtual Server

+
// load framework files
+
require_once("libraries/TeamSpeak3/TeamSpeak3.php");
+
+
// connect to local server, authenticate and spawn an object for the server instance
+
$ts3_ServerInstance = TeamSpeak3::factory("serverquery://username:password@127.0.0.1:10011/");
+
+
// create a virtual server and get its ID
+
$new_sid = $ts3_ServerInstance->serverCreate(array(
+
"virtualserver_name" => "My TeamSpeak 3 Server",
+
"virtualserver_maxclients" => 64,
+
"virtualserver_hostbutton_tooltip" => "My Company",
+
"virtualserver_hostbutton_url" => "http://www.example.com",
+
"virtualserver_hostbutton_gfx_url" => "http://www.example.com/buttons/button01_24x24.jpg",
+
));
+

+8. Create a hierarchical Channel Stucture

+
// load framework files
+
require_once("libraries/TeamSpeak3/TeamSpeak3.php");
+
+
// connect to local server, authenticate and spawn an object for the virtual server on port 9987
+
$ts3_VirtualServer = TeamSpeak3::factory("serverquery://username:password@127.0.0.1:10011/?server_port=9987");
+
+
// create a top-level channel and get its ID
+
$top_cid = $ts3_VirtualServer->channelCreate(array(
+
"channel_name" => "My Channel",
+
"channel_topic" => "This is a top-level channel",
+ +
"channel_flag_permanent" => TRUE,
+
));
+
+
// create a sub-level channel and get its ID
+
$sub_cid = $ts3_VirtualServer->channelCreate(array(
+
"channel_name" => "My Sub-Channel",
+
"channel_topic" => "This is a sub-level channel",
+ +
"channel_flag_permanent" => TRUE,
+
"cpid" => $top_cid,
+
));
+

+9. Send a Text Message to outdated Clients

+
// load framework files
+
require_once("libraries/TeamSpeak3/TeamSpeak3.php");
+
+
// connect to local server, authenticate and spawn an object for the virtual server on port 9987
+
$ts3_VirtualServer = TeamSpeak3::factory("serverquery://username:password@127.0.0.1:10011/?server_port=9987");
+
+
// connect to default update server
+
$ts3_UpdateServer = TeamSpeak3::factory("update");
+
+
// walk through list of clients on virtual server
+
foreach($ts3_VirtualServer->clientList() as $ts3_Client)
+
{
+
// skip query clients
+
if($ts3_Client["client_type"]) continue;
+
+
// send test message if client build is outdated
+
if($ts3_Client->getRev() < $ts3_UpdateServer->getClientRev())
+
{
+
$ts3_Client->message("[COLOR=red]your client is [B]outdated[/B]... update to [U]" . $ts3_UpdateServer->getClientVersion() . "[/U] now![/COLOR]");
+
}
+
}
+

+10. Check if the Server Instance is Outdated or Blacklisted

+
// load framework files
+
require_once("libraries/TeamSpeak3/TeamSpeak3.php");
+
+
// connect to local server, authenticate and spawn an object for the server instance
+
$ts3_ServerInstance = TeamSpeak3::factory("serverquery://username:password@127.0.0.1:10011/");
+
+
// connect to default update server
+
$ts3_UpdateServer = TeamSpeak3::factory("update");
+
+
// send global text message if the server is outdated
+
if($ts3_ServerInstance->version("build") < $ts3_UpdateServer->getServerRev())
+
{
+
$ts3_ServerInstance->message("[COLOR=red]your server is [B]outdated[/B]... update to [U]" . $ts3_UpdateServer->getServerVersion() . "[/U] now![/COLOR]");
+
}
+
+
// connect to default blacklist server
+
$ts3_BlacklistServer = TeamSpeak3::factory("blacklist");
+
+
// send global text message if the server is blacklisted
+
if($ts3_BlacklistServer->isBlacklisted($ts3_ServerInstance))
+
{
+
$ts3_ServerInstance->message("[COLOR=red]your server is [B]blacklisted[/B]... disconnect now![/COLOR]");
+
}
+

+11. Create a simple TSViewer for your Website

+
// load framework files
+
require_once("libraries/TeamSpeak3/TeamSpeak3.php");
+
+
// connect to local server, authenticate and spawn an object for the virtual server on port 9987
+
$ts3_VirtualServer = TeamSpeak3::factory("serverquery://username:password@127.0.0.1:10011/?server_port=9987");
+
+
// build and display HTML treeview using custom image paths (remote icons will be embedded using data URI sheme)
+
echo $ts3_VirtualServer->getViewer(new TeamSpeak3_Viewer_Html("images/viewericons/", "images/countryflags/", "data:image"));
+

+12. Update all outdated Audio Codecs to their Opus equivalent

+
// load framework files
+
require_once("libraries/TeamSpeak3/TeamSpeak3.php");
+
+
// connect to local server, authenticate and spawn an object for the virtual server on port 9987
+
$ts3_VirtualServer = TeamSpeak3::factory("serverquery://username:password@127.0.0.1:10011/?server_port=9987");
+
+
// walk through list of chanels
+
foreach($ts3_VirtualServer->channelList() as $ts3_Channel)
+
{
+
if($ts3_Channel["channel_codec"] == TeamSpeak3::CODEC_CELT_MONO)
+
{
+
$ts3_Channel["channel_codec"] = TeamSpeak3::CODEC_OPUS_MUSIC;
+
}
+
elseif($ts3_Channel["channel_codec"] != TeamSpeak3::CODEC_OPUS_MUSIC)
+
{
+
$ts3_Channel["channel_codec"] = TeamSpeak3::CODEC_OPUS_VOICE;
+
}
+
}
+

+13. Display the Avatar of a connected User

+
// load framework files
+
require_once("libraries/TeamSpeak3/TeamSpeak3.php");
+
+
// connect to local server, authenticate and spawn an object for the virtual server on port 9987
+
$ts3_VirtualServer = TeamSpeak3::factory("serverquery://username:password@127.0.0.1:10011/?server_port=9987");
+
+
// spawn an object for the client using a specified nickname
+
$ts3_Client = $ts3_VirtualServer->clientGetByName("John Doe");
+
+
// download the clients avatar file
+
$avatar = $ts3_Client->avatarDownload();
+
+
// send header and display image
+
header("Content-Type: " . TeamSpeak3_Helper_Convert::imageMimeType($avatar));
+
echo $avatar;
+

+14. Create a Simple Bot waiting for Events

+
// load framework files
+
require_once("libraries/TeamSpeak3/TeamSpeak3.php");
+
+
// connect to local server in non-blocking mode, authenticate and spawn an object for the virtual server on port 9987
+
$ts3_VirtualServer = TeamSpeak3::factory("serverquery://username:password@127.0.0.1:10011/?server_port=9987&blocking=0");
+
+
// get notified on incoming private messages
+
$ts3_VirtualServer->notifyRegister("textprivate");
+
+
// register a callback for notifyTextmessage events
+
TeamSpeak3_Helper_Signal::getInstance()->subscribe("notifyTextmessage", "onTextmessage");
+
+
// wait for events
+
while(1) $ts3_VirtualServer->getAdapter()->wait();
+
+
// define a callback function
+
function onTextmessage(TeamSpeak3_Adapter_ServerQuery_Event $event, TeamSpeak3_Node_Host $host)
+
{
+
echo "Client " . $event["invokername"] . " sent textmessage: " . $event["msg"];
+
}
+

+15. Handle Errors using Exceptions and Custom Error Messages

+
// load framework files
+
require_once("libraries/TeamSpeak3/TeamSpeak3.php");
+
+
// register custom error message (supported placeholders are: %file, %line, %code and %mesg)
+
TeamSpeak3_Exception::registerCustomMessage(0x300, "The specified channel does not exist; server said: %mesg");
+
+
try
+
{
+
// connect to local server, authenticate and spawn an object for the virtual server on port 9987
+
$ts3_VirtualServer = TeamSpeak3::factory("serverquery://username:password@127.0.0.1:10011/?server_port=9987");
+
+
// spawn an object for the channel using a specified name
+
$ts3_Channel = $ts3_VirtualServer->channelGetByName("I do not exist");
+
}
+ +
{
+
// print the error message returned by the server
+
echo "Error " . $e->getCode() . ": " . $e->getMessage();
+
}
+

+16. Save Connection State in Persistent Session Variable

+
// load framework files
+
require_once("libraries/TeamSpeak3/TeamSpeak3.php");
+
+
// start a PHP session
+
session_start();
+
+
// connect to local server, authenticate and spawn an object for the virtual server on port 9987
+
$ts3_VirtualServer = TeamSpeak3::factory("serverquery://username:password@127.0.0.1:10011/?server_port=9987");
+
+
// save connection state (including login and selected virtual server)
+
$_SESSION["_TS3"] = serialize($ts3_VirtualServer);
+

+17. Restore Connection State from Persistent Session Variable

+
// load framework files
+
require_once("libraries/TeamSpeak3/TeamSpeak3.php");
+
+
// start a PHP session
+
session_start();
+
+
// restore connection state
+
$ts3_VirtualServer = unserialize($_SESSION["_TS3"]);
+
+
// send a text message to the server
+
$ts3_VirtualServer->message("Hello World!");
+

Speed up new development and reduce maintenance costs by using the TS3 PHP Framework!

+
+
+ + + + diff --git a/lib/docs/html/interface_team_speak3___helper___signal___interface.html b/lib/docs/html/interface_team_speak3___helper___signal___interface.html new file mode 100644 index 0000000..c671c8a --- /dev/null +++ b/lib/docs/html/interface_team_speak3___helper___signal___interface.html @@ -0,0 +1,1178 @@ + + + + + + +TeamSpeak 3 PHP Framework: TeamSpeak3_Helper_Signal_Interface Class Reference + + + + + + + + + + + + + +
+
+ + + + + + + +
+
TeamSpeak 3 PHP Framework +  1.1.23 +
+
Copyright © Planet TeamSpeak. All rights reserved.
+
+
+ + + + + +
+
+ +
+
+
+ +
+ + + + +
+ +
+ +
+ +
+
TeamSpeak3_Helper_Signal_Interface Class Reference
+
+
+ +

Interface class describing the layout for TeamSpeak3_Helper_Signal callbacks. + More...

+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +

+Public Member Functions

 onConnect (TeamSpeak3_Adapter_Abstract $adapter)
 Possible callback for '<adapter>Connected' signals. More...
 
 onDisconnect ()
 Possible callback for '<adapter>Disconnected' signals. More...
 
 onCommandStarted ($cmd)
 Possible callback for 'serverqueryCommandStarted' signals. More...
 
 onCommandFinished ($cmd, TeamSpeak3_Adapter_ServerQuery_Reply $reply)
 Possible callback for 'serverqueryCommandFinished' signals. More...
 
 onEvent (TeamSpeak3_Adapter_ServerQuery_Event $event, TeamSpeak3_Node_Host $host)
 Possible callback for 'notifyEvent' signals. More...
 
 onError (TeamSpeak3_Adapter_ServerQuery_Reply $reply)
 Possible callback for 'notifyError' signals. More...
 
 onServerselected (TeamSpeak3_Node_Host $host)
 Possible callback for 'notifyServerselected' signals. More...
 
 onServercreated (TeamSpeak3_Node_Host $host, $sid)
 Possible callback for 'notifyServercreated' signals. More...
 
 onServerdeleted (TeamSpeak3_Node_Host $host, $sid)
 Possible callback for 'notifyServerdeleted' signals. More...
 
 onServerstarted (TeamSpeak3_Node_Host $host, $sid)
 Possible callback for 'notifyServerstarted' signals. More...
 
 onServerstopped (TeamSpeak3_Node_Host $host, $sid)
 Possible callback for 'notifyServerstopped' signals. More...
 
 onServershutdown (TeamSpeak3_Node_Host $host)
 Possible callback for 'notifyServershutdown' signals. More...
 
 onLogin (TeamSpeak3_Node_Host $host)
 Possible callback for 'notifyLogin' signals. More...
 
 onLogout (TeamSpeak3_Node_Host $host)
 Possible callback for 'notifyLogout' signals. More...
 
 onTokencreated (TeamSpeak3_Node_Server $server, $token)
 Possible callback for 'notifyTokencreated' signals. More...
 
 onFtHandshake (TeamSpeak3_Adapter_FileTransfer $adapter)
 Possible callback for 'filetransferHandshake' signals. More...
 
 onFtUploadStarted ($ftkey, $seek, $size)
 Possible callback for 'filetransferUploadStarted' signals. More...
 
 onFtUploadProgress ($ftkey, $seek, $size)
 Possible callback for 'filetransferUploadProgress' signals. More...
 
 onFtUploadFinished ($ftkey, $seek, $size)
 Possible callback for 'filetransferUploadFinished' signals. More...
 
 onFtDownloadStarted ($ftkey, $buff, $size)
 Possible callback for 'filetransferDownloadStarted' signals. More...
 
 onFtDownloadProgress ($ftkey, $buff, $size)
 Possible callback for 'filetransferDownloadProgress' signals. More...
 
 onFtDownloadFinished ($ftkey, $buff, $size)
 Possible callback for 'filetransferDownloadFinished' signals. More...
 
 onDebugDataRead ($data)
 Possible callback for '<adapter>DataRead' signals. More...
 
 onDebugDataSend ($data)
 Possible callback for '<adapter>DataSend' signals. More...
 
 onWaitTimeout ($time, TeamSpeak3_Adapter_Abstract $adapter)
 Possible callback for '<adapter>WaitTimeout' signals. More...
 
 onException (TeamSpeak3_Exception $e)
 Possible callback for 'errorException' signals. More...
 
+

Detailed Description

+

Interface class describing the layout for TeamSpeak3_Helper_Signal callbacks.

+ +

Definition at line 32 of file Interface.php.

+

Member Function Documentation

+ +
+
+ + + + + + + + +
TeamSpeak3_Helper_Signal_Interface::onConnect (TeamSpeak3_Adapter_Abstract $adapter)
+
+ +

Possible callback for '<adapter>Connected' signals.

+

=== Examples ===

+ +
Parameters
+ + +
TeamSpeak3_Adapter_Abstract$adapter
+
+
+
Returns
void
+ +
+
+ +
+
+ + + + + + + +
TeamSpeak3_Helper_Signal_Interface::onDisconnect ()
+
+ +

Possible callback for '<adapter>Disconnected' signals.

+

=== Examples ===

+ +
Returns
void
+ +
+
+ +
+
+ + + + + + + + +
TeamSpeak3_Helper_Signal_Interface::onCommandStarted ( $cmd)
+
+ +

Possible callback for 'serverqueryCommandStarted' signals.

+

=== Examples ===

+ +
Parameters
+ + +
string$cmd
+
+
+
Returns
void
+ +
+
+ +
+
+ + + + + + + + + + + + + + + + + + +
TeamSpeak3_Helper_Signal_Interface::onCommandFinished ( $cmd,
TeamSpeak3_Adapter_ServerQuery_Reply $reply 
)
+
+ +

Possible callback for 'serverqueryCommandFinished' signals.

+

=== Examples ===

+ +
Parameters
+ + + +
string$cmd
TeamSpeak3_Adapter_ServerQuery_Reply$reply
+
+
+
Returns
void
+ +
+
+ +
+
+ + + + + + + + + + + + + + + + + + +
TeamSpeak3_Helper_Signal_Interface::onEvent (TeamSpeak3_Adapter_ServerQuery_Event $event,
TeamSpeak3_Node_Host $host 
)
+
+ +

Possible callback for 'notifyEvent' signals.

+

=== Examples ===

+ +
Parameters
+ + + +
TeamSpeak3_Adapter_ServerQuery_Event$event
TeamSpeak3_Node_Host$host
+
+
+
Returns
void
+ +
+
+ +
+
+ + + + + + + + +
TeamSpeak3_Helper_Signal_Interface::onError (TeamSpeak3_Adapter_ServerQuery_Reply $reply)
+
+ +

Possible callback for 'notifyError' signals.

+

=== Examples ===

+ +
Parameters
+ + +
TeamSpeak3_Adapter_ServerQuery_Reply$reply
+
+
+
Returns
void
+ +
+
+ +
+
+ + + + + + + + +
TeamSpeak3_Helper_Signal_Interface::onServerselected (TeamSpeak3_Node_Host $host)
+
+ +

Possible callback for 'notifyServerselected' signals.

+

=== Examples ===

+ +
Parameters
+ + +
TeamSpeak3_Node_Host$host
+
+
+
Returns
void
+ +
+
+ +
+
+ + + + + + + + + + + + + + + + + + +
TeamSpeak3_Helper_Signal_Interface::onServercreated (TeamSpeak3_Node_Host $host,
 $sid 
)
+
+ +

Possible callback for 'notifyServercreated' signals.

+

=== Examples ===

+ +
Parameters
+ + + +
TeamSpeak3_Node_Host$host
integer$sid
+
+
+
Returns
void
+ +
+
+ +
+
+ + + + + + + + + + + + + + + + + + +
TeamSpeak3_Helper_Signal_Interface::onServerdeleted (TeamSpeak3_Node_Host $host,
 $sid 
)
+
+ +

Possible callback for 'notifyServerdeleted' signals.

+

=== Examples ===

+ +
Parameters
+ + + +
TeamSpeak3_Node_Host$host
integer$sid
+
+
+
Returns
void
+ +
+
+ +
+
+ + + + + + + + + + + + + + + + + + +
TeamSpeak3_Helper_Signal_Interface::onServerstarted (TeamSpeak3_Node_Host $host,
 $sid 
)
+
+ +

Possible callback for 'notifyServerstarted' signals.

+

=== Examples ===

+ +
Parameters
+ + + +
TeamSpeak3_Node_Host$host
integer$sid
+
+
+
Returns
void
+ +
+
+ +
+
+ + + + + + + + + + + + + + + + + + +
TeamSpeak3_Helper_Signal_Interface::onServerstopped (TeamSpeak3_Node_Host $host,
 $sid 
)
+
+ +

Possible callback for 'notifyServerstopped' signals.

+

=== Examples ===

+ +
Parameters
+ + + +
TeamSpeak3_Node_Host$host
integer$sid
+
+
+
Returns
void
+ +
+
+ +
+
+ + + + + + + + +
TeamSpeak3_Helper_Signal_Interface::onServershutdown (TeamSpeak3_Node_Host $host)
+
+ +

Possible callback for 'notifyServershutdown' signals.

+

=== Examples ===

+ +
Parameters
+ + +
TeamSpeak3_Node_Host$host
+
+
+
Returns
void
+ +
+
+ +
+
+ + + + + + + + +
TeamSpeak3_Helper_Signal_Interface::onLogin (TeamSpeak3_Node_Host $host)
+
+ +

Possible callback for 'notifyLogin' signals.

+

=== Examples ===

+ +
Parameters
+ + +
TeamSpeak3_Node_Host$host
+
+
+
Returns
void
+ +
+
+ +
+
+ + + + + + + + +
TeamSpeak3_Helper_Signal_Interface::onLogout (TeamSpeak3_Node_Host $host)
+
+ +

Possible callback for 'notifyLogout' signals.

+

=== Examples ===

+ +
Parameters
+ + +
TeamSpeak3_Node_Host$host
+
+
+
Returns
void
+ +
+
+ +
+
+ + + + + + + + + + + + + + + + + + +
TeamSpeak3_Helper_Signal_Interface::onTokencreated (TeamSpeak3_Node_Server $server,
 $token 
)
+
+ +

Possible callback for 'notifyTokencreated' signals.

+

=== Examples ===

+ +
Parameters
+ + + +
TeamSpeak3_Node_Server$server
string$token
+
+
+
Returns
void
+ +
+
+ +
+
+ + + + + + + + +
TeamSpeak3_Helper_Signal_Interface::onFtHandshake (TeamSpeak3_Adapter_FileTransfer $adapter)
+
+ +

Possible callback for 'filetransferHandshake' signals.

+

=== Examples ===

+ +
Parameters
+ + +
TeamSpeak3_Adapter_FileTransfer$adapter
+
+
+
Returns
void
+ +
+
+ +
+
+ + + + + + + + + + + + + + + + + + + + + + + + +
TeamSpeak3_Helper_Signal_Interface::onFtUploadStarted ( $ftkey,
 $seek,
 $size 
)
+
+ +

Possible callback for 'filetransferUploadStarted' signals.

+

=== Examples ===

+ +
Parameters
+ + + + +
string$ftkey
integer$seek
integer$size
+
+
+
Returns
void
+ +
+
+ +
+
+ + + + + + + + + + + + + + + + + + + + + + + + +
TeamSpeak3_Helper_Signal_Interface::onFtUploadProgress ( $ftkey,
 $seek,
 $size 
)
+
+ +

Possible callback for 'filetransferUploadProgress' signals.

+

=== Examples ===

+ +
Parameters
+ + + + +
string$ftkey
integer$seek
integer$size
+
+
+
Returns
void
+ +
+
+ +
+
+ + + + + + + + + + + + + + + + + + + + + + + + +
TeamSpeak3_Helper_Signal_Interface::onFtUploadFinished ( $ftkey,
 $seek,
 $size 
)
+
+ +

Possible callback for 'filetransferUploadFinished' signals.

+

=== Examples ===

+ +
Parameters
+ + + + +
string$ftkey
integer$seek
integer$size
+
+
+
Returns
void
+ +
+
+ +
+
+ + + + + + + + + + + + + + + + + + + + + + + + +
TeamSpeak3_Helper_Signal_Interface::onFtDownloadStarted ( $ftkey,
 $buff,
 $size 
)
+
+ +

Possible callback for 'filetransferDownloadStarted' signals.

+

=== Examples ===

+ +
Parameters
+ + + + +
string$ftkey
integer$buff
integer$size
+
+
+
Returns
void
+ +
+
+ +
+
+ + + + + + + + + + + + + + + + + + + + + + + + +
TeamSpeak3_Helper_Signal_Interface::onFtDownloadProgress ( $ftkey,
 $buff,
 $size 
)
+
+ +

Possible callback for 'filetransferDownloadProgress' signals.

+

=== Examples ===

+ +
Parameters
+ + + + +
string$ftkey
integer$buff
integer$size
+
+
+
Returns
void
+ +
+
+ +
+
+ + + + + + + + + + + + + + + + + + + + + + + + +
TeamSpeak3_Helper_Signal_Interface::onFtDownloadFinished ( $ftkey,
 $buff,
 $size 
)
+
+ +

Possible callback for 'filetransferDownloadFinished' signals.

+

=== Examples ===

+ +
Parameters
+ + + + +
string$ftkey
integer$buff
integer$size
+
+
+
Returns
void
+ +
+
+ +
+
+ + + + + + + + +
TeamSpeak3_Helper_Signal_Interface::onDebugDataRead ( $data)
+
+ +

Possible callback for '<adapter>DataRead' signals.

+

=== Examples ===

+ +
Parameters
+ + +
string$data
+
+
+
Returns
void
+ +
+
+ +
+
+ + + + + + + + +
TeamSpeak3_Helper_Signal_Interface::onDebugDataSend ( $data)
+
+ +

Possible callback for '<adapter>DataSend' signals.

+

=== Examples ===

+ +
Parameters
+ + +
string$data
+
+
+
Returns
void
+ +
+
+ +
+
+ + + + + + + + + + + + + + + + + + +
TeamSpeak3_Helper_Signal_Interface::onWaitTimeout ( $time,
TeamSpeak3_Adapter_Abstract $adapter 
)
+
+ +

Possible callback for '<adapter>WaitTimeout' signals.

+

=== Examples ===

+ +
Parameters
+ + + +
integer$time
TeamSpeak3_Adapter_Abstract$adapter
+
+
+
Returns
void
+ +
+
+ +
+
+ + + + + + + + +
TeamSpeak3_Helper_Signal_Interface::onException (TeamSpeak3_Exception $e)
+
+ +

Possible callback for 'errorException' signals.

+

=== Examples ===

+ +
Parameters
+ + +
TeamSpeak3_Exception$e
+
+
+
Returns
void
+ +
+
+
The documentation for this class was generated from the following file: +
+
+ + + + diff --git a/lib/docs/html/interface_team_speak3___helper___signal___interface.js b/lib/docs/html/interface_team_speak3___helper___signal___interface.js new file mode 100644 index 0000000..b29312c --- /dev/null +++ b/lib/docs/html/interface_team_speak3___helper___signal___interface.js @@ -0,0 +1,29 @@ +var interface_team_speak3___helper___signal___interface = +[ + [ "onConnect", "interface_team_speak3___helper___signal___interface.html#a7e066d5cc94154739471a627b7d6f63f", null ], + [ "onDisconnect", "interface_team_speak3___helper___signal___interface.html#a81a002eceee16a9558a68c849f22e581", null ], + [ "onCommandStarted", "interface_team_speak3___helper___signal___interface.html#a4e4f17bf4f8c4e59e083f30bd6fcd12a", null ], + [ "onCommandFinished", "interface_team_speak3___helper___signal___interface.html#a848c46c0b32516d82a89826246932bbb", null ], + [ "onEvent", "interface_team_speak3___helper___signal___interface.html#a3dbd81b8eb9416d5b4305877eb48153f", null ], + [ "onError", "interface_team_speak3___helper___signal___interface.html#a7925e6a3080092bb6da831dd616769a3", null ], + [ "onServerselected", "interface_team_speak3___helper___signal___interface.html#a15d6588ecad8073457490522fa6e42b1", null ], + [ "onServercreated", "interface_team_speak3___helper___signal___interface.html#a2f3816f32fcdcc1cfd2dc202a018a5d4", null ], + [ "onServerdeleted", "interface_team_speak3___helper___signal___interface.html#a8d9f2e3a80bb4312338db8f282cf1fad", null ], + [ "onServerstarted", "interface_team_speak3___helper___signal___interface.html#a129f0620c8ca72cc49744412ca400af8", null ], + [ "onServerstopped", "interface_team_speak3___helper___signal___interface.html#ad57f648650d5f17dc8dc8acfb196b425", null ], + [ "onServershutdown", "interface_team_speak3___helper___signal___interface.html#aad9e6d52b8747271c2ce2d4770d7ea6d", null ], + [ "onLogin", "interface_team_speak3___helper___signal___interface.html#a437bf9fda2ce442d55aba119d8a2a472", null ], + [ "onLogout", "interface_team_speak3___helper___signal___interface.html#a323953d09e67d3bba06ce54e0a46bd90", null ], + [ "onTokencreated", "interface_team_speak3___helper___signal___interface.html#a4bcd3c19b7adbd37800dc941794a1847", null ], + [ "onFtHandshake", "interface_team_speak3___helper___signal___interface.html#aa1c0d664a04ef2ef284933473fbaeb4e", null ], + [ "onFtUploadStarted", "interface_team_speak3___helper___signal___interface.html#a264e6acfa718799d1f0702d9d378d4bf", null ], + [ "onFtUploadProgress", "interface_team_speak3___helper___signal___interface.html#a2c7b2aa9fbbac68849b1cb6727751941", null ], + [ "onFtUploadFinished", "interface_team_speak3___helper___signal___interface.html#a8bf3a9eeea9253d41d4b0ae8ee3816a2", null ], + [ "onFtDownloadStarted", "interface_team_speak3___helper___signal___interface.html#ad12f5a3d0810a3647295141095fe1bcb", null ], + [ "onFtDownloadProgress", "interface_team_speak3___helper___signal___interface.html#a5a21094dc110e60bd165703df58f6a6f", null ], + [ "onFtDownloadFinished", "interface_team_speak3___helper___signal___interface.html#a822d76c4cc0a50360066b54bfaf15df2", null ], + [ "onDebugDataRead", "interface_team_speak3___helper___signal___interface.html#af6c4a98cf159e1ae41d08d2f94ea901c", null ], + [ "onDebugDataSend", "interface_team_speak3___helper___signal___interface.html#a3ce1e6fb65555f153b8313938fc6f14a", null ], + [ "onWaitTimeout", "interface_team_speak3___helper___signal___interface.html#a539e6ca40f293c37a73ac296f4a97141", null ], + [ "onException", "interface_team_speak3___helper___signal___interface.html#ab65b20dc52d7165455b0ebb5bdc851ed", null ] +]; \ No newline at end of file diff --git a/lib/docs/html/interface_team_speak3___viewer___interface.html b/lib/docs/html/interface_team_speak3___viewer___interface.html new file mode 100644 index 0000000..5a28c86 --- /dev/null +++ b/lib/docs/html/interface_team_speak3___viewer___interface.html @@ -0,0 +1,195 @@ + + + + + + +TeamSpeak 3 PHP Framework: TeamSpeak3_Viewer_Interface Class Reference + + + + + + + + + + + + + +
+
+ + + + + + + +
+
TeamSpeak 3 PHP Framework +  1.1.23 +
+
Copyright © Planet TeamSpeak. All rights reserved.
+
+
+ + + + + +
+
+ +
+
+
+ +
+ + + + +
+ +
+ +
+ +
+
TeamSpeak3_Viewer_Interface Class Reference
+
+
+ +

Interface class describing a TeamSpeak 3 viewer. + More...

+
+ + Inheritance diagram for TeamSpeak3_Viewer_Interface:
+
+
+ + + + + + +

+Public Member Functions

 fetchObject (TeamSpeak3_Node_Abstract $node, array $siblings=array())
 Returns the code needed to display a node in a TeamSpeak 3 viewer. More...
 
+

Detailed Description

+

Interface class describing a TeamSpeak 3 viewer.

+ +

Definition at line 32 of file Interface.php.

+

Member Function Documentation

+ +
+
+ + + + + + + + + + + + + + + + + + +
TeamSpeak3_Viewer_Interface::fetchObject (TeamSpeak3_Node_Abstract $node,
array $siblings = array() 
)
+
+ +

Returns the code needed to display a node in a TeamSpeak 3 viewer.

+
Parameters
+ + + +
TeamSpeak3_Node_Abstract$node
array$siblings
+
+
+
Returns
string
+ +

Referenced by TeamSpeak3_Node_Abstract\getViewer().

+ +
+
+
The documentation for this class was generated from the following file: +
+
+ + + + diff --git a/lib/docs/html/interface_team_speak3___viewer___interface.js b/lib/docs/html/interface_team_speak3___viewer___interface.js new file mode 100644 index 0000000..91a55a9 --- /dev/null +++ b/lib/docs/html/interface_team_speak3___viewer___interface.js @@ -0,0 +1,4 @@ +var interface_team_speak3___viewer___interface = +[ + [ "fetchObject", "interface_team_speak3___viewer___interface.html#ad06c809a76558069871ba9aa16f66e79", null ] +]; \ No newline at end of file diff --git a/lib/docs/html/interface_team_speak3___viewer___interface.png b/lib/docs/html/interface_team_speak3___viewer___interface.png new file mode 100644 index 0000000000000000000000000000000000000000..d7f43b85554fa55b6cf0bbd17bc46e413ddd4976 GIT binary patch literal 1056 zcmeAS@N?(olHy`uVBq!ia0y~yU~B@i12~w0r1H`xZ6GBP;1lBd|Nnm=^ZxVCUR8T1 z09jys;J|^IzT0L2xf~@ye!&btMIdnXREQA+1M_-M7srqa#wczV}~s zen_kQu^;*6E?Rxe7b;#t!?mv5ahuS!lQduNx{x3IHj ziCY)U+IVqmX7v8dWA8emwO6oL-h5PfIDh&=y;OVdSJ_*S_?8H7?aVZOdygyY-FlHN zH!r%BuAi)Go>fx&>3TJnPp#yXycUZNTA9Qp4uNQIu*0-wm#@c(99sh2`emL{_&#CBba+c>81?4WD_L+Hwe_+6( zvj;cLXWhC~?ViZ=y1eBK4@CE8Us}kJaJD3J-6h6^cKtTyZ=9?Q>;8DMGVE_h3NRrq zhM1kbO^Fh1-An=uG6qa63~?Vz5pRaTx3d>VAo<&3@j|L?Q!m~G^GUt6{2K)Kl6d%NS` zr5+442SvK%ip~|OlfF#K4|-tJ9ruErORV>E_KDS#q^m?`yb=oC7H~TX67QyV=f6g7 ze))x&)oyb})p_6V>4gRr#xqtwA3lvMtz&#S|}vBghI{JVPd-JIp~wF_n)UG{yi z@*7#!G{;r9&fY1yl4bmzeZAw?$oHR$diW;Qs;qqI%~e+=w)&oT{G=-dYZ5%?UTwOu zxaypv^i}Dad!eSg?0&xf7yCh$t0ryZ%fH5~y?@L8g~ zq)[^>]*$|#([\w\-]*)$)/,bM=/\S/,bI=/^\s+/,bE=/\s+$/,bA=/^<(\w+)\s*\/?>(?:<\/\1>)?$/,bN=/^[\],:{}\s]*$/,bW=/\\(?:["\\\/bfnrt]|u[0-9a-fA-F]{4})/g,bP=/"[^"\\\n\r]*"|true|false|null|-?\d+(?:\.\d*)?(?:[eE][+\-]?\d+)?/g,bJ=/(?:^|:|,)(?:\s*\[)+/g,by=/(webkit)[ \/]([\w.]+)/,bR=/(opera)(?:.*version)?[ \/]([\w.]+)/,bQ=/(msie) ([\w.]+)/,bS=/(mozilla)(?:.*? rv:([\w.]+))?/,bB=/-([a-z]|[0-9])/ig,bZ=/^-ms-/,bT=function(b0,b1){return(b1+"").toUpperCase()},bX=bu.userAgent,bV,bC,e,bL=Object.prototype.toString,bG=Object.prototype.hasOwnProperty,bz=Array.prototype.push,bK=Array.prototype.slice,bO=String.prototype.trim,bv=Array.prototype.indexOf,bx={};bF.fn=bF.prototype={constructor:bF,init:function(b0,b4,b3){var b2,b5,b1,b6;if(!b0){return this}if(b0.nodeType){this.context=this[0]=b0;this.length=1;return this}if(b0==="body"&&!b4&&av.body){this.context=av;this[0]=av.body;this.selector=b0;this.length=1;return this}if(typeof b0==="string"){if(b0.charAt(0)==="<"&&b0.charAt(b0.length-1)===">"&&b0.length>=3){b2=[null,b0,null]}else{b2=bY.exec(b0)}if(b2&&(b2[1]||!b4)){if(b2[1]){b4=b4 instanceof bF?b4[0]:b4;b6=(b4?b4.ownerDocument||b4:av);b1=bA.exec(b0);if(b1){if(bF.isPlainObject(b4)){b0=[av.createElement(b1[1])];bF.fn.attr.call(b0,b4,true)}else{b0=[b6.createElement(b1[1])]}}else{b1=bF.buildFragment([b2[1]],[b6]);b0=(b1.cacheable?bF.clone(b1.fragment):b1.fragment).childNodes}return bF.merge(this,b0)}else{b5=av.getElementById(b2[2]);if(b5&&b5.parentNode){if(b5.id!==b2[2]){return b3.find(b0)}this.length=1;this[0]=b5}this.context=av;this.selector=b0;return this}}else{if(!b4||b4.jquery){return(b4||b3).find(b0)}else{return this.constructor(b4).find(b0)}}}else{if(bF.isFunction(b0)){return b3.ready(b0)}}if(b0.selector!==L){this.selector=b0.selector;this.context=b0.context}return bF.makeArray(b0,this)},selector:"",jquery:"1.7.1",length:0,size:function(){return this.length},toArray:function(){return bK.call(this,0)},get:function(b0){return b0==null?this.toArray():(b0<0?this[this.length+b0]:this[b0])},pushStack:function(b1,b3,b0){var b2=this.constructor();if(bF.isArray(b1)){bz.apply(b2,b1)}else{bF.merge(b2,b1)}b2.prevObject=this;b2.context=this.context;if(b3==="find"){b2.selector=this.selector+(this.selector?" ":"")+b0}else{if(b3){b2.selector=this.selector+"."+b3+"("+b0+")"}}return b2},each:function(b1,b0){return bF.each(this,b1,b0)},ready:function(b0){bF.bindReady();bC.add(b0);return this},eq:function(b0){b0=+b0;return b0===-1?this.slice(b0):this.slice(b0,b0+1)},first:function(){return this.eq(0)},last:function(){return this.eq(-1)},slice:function(){return this.pushStack(bK.apply(this,arguments),"slice",bK.call(arguments).join(","))},map:function(b0){return this.pushStack(bF.map(this,function(b2,b1){return b0.call(b2,b1,b2)}))},end:function(){return this.prevObject||this.constructor(null)},push:bz,sort:[].sort,splice:[].splice};bF.fn.init.prototype=bF.fn;bF.extend=bF.fn.extend=function(){var b9,b2,b0,b1,b6,b7,b5=arguments[0]||{},b4=1,b3=arguments.length,b8=false;if(typeof b5==="boolean"){b8=b5;b5=arguments[1]||{};b4=2}if(typeof b5!=="object"&&!bF.isFunction(b5)){b5={}}if(b3===b4){b5=this;--b4}for(;b40){return}bC.fireWith(av,[bF]);if(bF.fn.trigger){bF(av).trigger("ready").off("ready")}}},bindReady:function(){if(bC){return}bC=bF.Callbacks("once memory");if(av.readyState==="complete"){return setTimeout(bF.ready,1)}if(av.addEventListener){av.addEventListener("DOMContentLoaded",e,false);bb.addEventListener("load",bF.ready,false)}else{if(av.attachEvent){av.attachEvent("onreadystatechange",e);bb.attachEvent("onload",bF.ready);var b0=false;try{b0=bb.frameElement==null}catch(b1){}if(av.documentElement.doScroll&&b0){bw()}}}},isFunction:function(b0){return bF.type(b0)==="function"},isArray:Array.isArray||function(b0){return bF.type(b0)==="array"},isWindow:function(b0){return b0&&typeof b0==="object"&&"setInterval" in b0},isNumeric:function(b0){return !isNaN(parseFloat(b0))&&isFinite(b0)},type:function(b0){return b0==null?String(b0):bx[bL.call(b0)]||"object"},isPlainObject:function(b2){if(!b2||bF.type(b2)!=="object"||b2.nodeType||bF.isWindow(b2)){return false}try{if(b2.constructor&&!bG.call(b2,"constructor")&&!bG.call(b2.constructor.prototype,"isPrototypeOf")){return false}}catch(b1){return false}var b0;for(b0 in b2){}return b0===L||bG.call(b2,b0)},isEmptyObject:function(b1){for(var b0 in b1){return false}return true},error:function(b0){throw new Error(b0)},parseJSON:function(b0){if(typeof b0!=="string"||!b0){return null}b0=bF.trim(b0);if(bb.JSON&&bb.JSON.parse){return bb.JSON.parse(b0)}if(bN.test(b0.replace(bW,"@").replace(bP,"]").replace(bJ,""))){return(new Function("return "+b0))()}bF.error("Invalid JSON: "+b0)},parseXML:function(b2){var b0,b1;try{if(bb.DOMParser){b1=new DOMParser();b0=b1.parseFromString(b2,"text/xml")}else{b0=new ActiveXObject("Microsoft.XMLDOM");b0.async="false";b0.loadXML(b2)}}catch(b3){b0=L}if(!b0||!b0.documentElement||b0.getElementsByTagName("parsererror").length){bF.error("Invalid XML: "+b2)}return b0},noop:function(){},globalEval:function(b0){if(b0&&bM.test(b0)){(bb.execScript||function(b1){bb["eval"].call(bb,b1)})(b0)}},camelCase:function(b0){return b0.replace(bZ,"ms-").replace(bB,bT)},nodeName:function(b1,b0){return b1.nodeName&&b1.nodeName.toUpperCase()===b0.toUpperCase()},each:function(b3,b6,b2){var b1,b4=0,b5=b3.length,b0=b5===L||bF.isFunction(b3);if(b2){if(b0){for(b1 in b3){if(b6.apply(b3[b1],b2)===false){break}}}else{for(;b40&&b0[0]&&b0[b1-1])||b1===0||bF.isArray(b0));if(b3){for(;b21?aJ.call(arguments,0):bG;if(!(--bw)){bC.resolveWith(bC,bx)}}}function bz(bF){return function(bG){bB[bF]=arguments.length>1?aJ.call(arguments,0):bG;bC.notifyWith(bE,bB)}}if(e>1){for(;bv
a";bI=bv.getElementsByTagName("*");bF=bv.getElementsByTagName("a")[0];if(!bI||!bI.length||!bF){return{}}bG=av.createElement("select");bx=bG.appendChild(av.createElement("option"));bE=bv.getElementsByTagName("input")[0];bJ={leadingWhitespace:(bv.firstChild.nodeType===3),tbody:!bv.getElementsByTagName("tbody").length,htmlSerialize:!!bv.getElementsByTagName("link").length,style:/top/.test(bF.getAttribute("style")),hrefNormalized:(bF.getAttribute("href")==="/a"),opacity:/^0.55/.test(bF.style.opacity),cssFloat:!!bF.style.cssFloat,checkOn:(bE.value==="on"),optSelected:bx.selected,getSetAttribute:bv.className!=="t",enctype:!!av.createElement("form").enctype,html5Clone:av.createElement("nav").cloneNode(true).outerHTML!=="<:nav>",submitBubbles:true,changeBubbles:true,focusinBubbles:false,deleteExpando:true,noCloneEvent:true,inlineBlockNeedsLayout:false,shrinkWrapBlocks:false,reliableMarginRight:true};bE.checked=true;bJ.noCloneChecked=bE.cloneNode(true).checked;bG.disabled=true;bJ.optDisabled=!bx.disabled;try{delete bv.test}catch(bC){bJ.deleteExpando=false}if(!bv.addEventListener&&bv.attachEvent&&bv.fireEvent){bv.attachEvent("onclick",function(){bJ.noCloneEvent=false});bv.cloneNode(true).fireEvent("onclick")}bE=av.createElement("input");bE.value="t";bE.setAttribute("type","radio");bJ.radioValue=bE.value==="t";bE.setAttribute("checked","checked");bv.appendChild(bE);bD=av.createDocumentFragment();bD.appendChild(bv.lastChild);bJ.checkClone=bD.cloneNode(true).cloneNode(true).lastChild.checked;bJ.appendChecked=bE.checked;bD.removeChild(bE);bD.appendChild(bv);bv.innerHTML="";if(bb.getComputedStyle){bA=av.createElement("div");bA.style.width="0";bA.style.marginRight="0";bv.style.width="2px";bv.appendChild(bA);bJ.reliableMarginRight=(parseInt((bb.getComputedStyle(bA,null)||{marginRight:0}).marginRight,10)||0)===0}if(bv.attachEvent){for(by in {submit:1,change:1,focusin:1}){bB="on"+by;bw=(bB in bv);if(!bw){bv.setAttribute(bB,"return;");bw=(typeof bv[bB]==="function")}bJ[by+"Bubbles"]=bw}}bD.removeChild(bv);bD=bG=bx=bA=bv=bE=null;b(function(){var bM,bU,bV,bT,bN,bO,bL,bS,bR,e,bP,bQ=av.getElementsByTagName("body")[0];if(!bQ){return}bL=1;bS="position:absolute;top:0;left:0;width:1px;height:1px;margin:0;";bR="visibility:hidden;border:0;";e="style='"+bS+"border:5px solid #000;padding:0;'";bP="
";bM=av.createElement("div");bM.style.cssText=bR+"width:0;height:0;position:static;top:0;margin-top:"+bL+"px";bQ.insertBefore(bM,bQ.firstChild);bv=av.createElement("div");bM.appendChild(bv);bv.innerHTML="
t
";bz=bv.getElementsByTagName("td");bw=(bz[0].offsetHeight===0);bz[0].style.display="";bz[1].style.display="none";bJ.reliableHiddenOffsets=bw&&(bz[0].offsetHeight===0);bv.innerHTML="";bv.style.width=bv.style.paddingLeft="1px";b.boxModel=bJ.boxModel=bv.offsetWidth===2;if(typeof bv.style.zoom!=="undefined"){bv.style.display="inline";bv.style.zoom=1;bJ.inlineBlockNeedsLayout=(bv.offsetWidth===2);bv.style.display="";bv.innerHTML="
";bJ.shrinkWrapBlocks=(bv.offsetWidth!==2)}bv.style.cssText=bS+bR;bv.innerHTML=bP;bU=bv.firstChild;bV=bU.firstChild;bN=bU.nextSibling.firstChild.firstChild;bO={doesNotAddBorder:(bV.offsetTop!==5),doesAddBorderForTableAndCells:(bN.offsetTop===5)};bV.style.position="fixed";bV.style.top="20px";bO.fixedPosition=(bV.offsetTop===20||bV.offsetTop===15);bV.style.position=bV.style.top="";bU.style.overflow="hidden";bU.style.position="relative";bO.subtractsBorderForOverflowNotVisible=(bV.offsetTop===-5);bO.doesNotIncludeMarginInBodyOffset=(bQ.offsetTop!==bL);bQ.removeChild(bM);bv=bM=null;b.extend(bJ,bO)});return bJ})();var aS=/^(?:\{.*\}|\[.*\])$/,aA=/([A-Z])/g;b.extend({cache:{},uuid:0,expando:"jQuery"+(b.fn.jquery+Math.random()).replace(/\D/g,""),noData:{embed:true,object:"clsid:D27CDB6E-AE6D-11cf-96B8-444553540000",applet:true},hasData:function(e){e=e.nodeType?b.cache[e[b.expando]]:e[b.expando];return !!e&&!S(e)},data:function(bx,bv,bz,by){if(!b.acceptData(bx)){return}var bG,bA,bD,bE=b.expando,bC=typeof bv==="string",bF=bx.nodeType,e=bF?b.cache:bx,bw=bF?bx[bE]:bx[bE]&&bE,bB=bv==="events";if((!bw||!e[bw]||(!bB&&!by&&!e[bw].data))&&bC&&bz===L){return}if(!bw){if(bF){bx[bE]=bw=++b.uuid}else{bw=bE}}if(!e[bw]){e[bw]={};if(!bF){e[bw].toJSON=b.noop}}if(typeof bv==="object"||typeof bv==="function"){if(by){e[bw]=b.extend(e[bw],bv)}else{e[bw].data=b.extend(e[bw].data,bv)}}bG=bA=e[bw];if(!by){if(!bA.data){bA.data={}}bA=bA.data}if(bz!==L){bA[b.camelCase(bv)]=bz}if(bB&&!bA[bv]){return bG.events}if(bC){bD=bA[bv];if(bD==null){bD=bA[b.camelCase(bv)]}}else{bD=bA}return bD},removeData:function(bx,bv,by){if(!b.acceptData(bx)){return}var bB,bA,bz,bC=b.expando,bD=bx.nodeType,e=bD?b.cache:bx,bw=bD?bx[bC]:bC;if(!e[bw]){return}if(bv){bB=by?e[bw]:e[bw].data;if(bB){if(!b.isArray(bv)){if(bv in bB){bv=[bv]}else{bv=b.camelCase(bv);if(bv in bB){bv=[bv]}else{bv=bv.split(" ")}}}for(bA=0,bz=bv.length;bA-1){return true}}return false},val:function(bx){var e,bv,by,bw=this[0];if(!arguments.length){if(bw){e=b.valHooks[bw.nodeName.toLowerCase()]||b.valHooks[bw.type];if(e&&"get" in e&&(bv=e.get(bw,"value"))!==L){return bv}bv=bw.value;return typeof bv==="string"?bv.replace(aU,""):bv==null?"":bv}return}by=b.isFunction(bx);return this.each(function(bA){var bz=b(this),bB;if(this.nodeType!==1){return}if(by){bB=bx.call(this,bA,bz.val())}else{bB=bx}if(bB==null){bB=""}else{if(typeof bB==="number"){bB+=""}else{if(b.isArray(bB)){bB=b.map(bB,function(bC){return bC==null?"":bC+""})}}}e=b.valHooks[this.nodeName.toLowerCase()]||b.valHooks[this.type];if(!e||!("set" in e)||e.set(this,bB,"value")===L){this.value=bB}})}});b.extend({valHooks:{option:{get:function(e){var bv=e.attributes.value;return !bv||bv.specified?e.value:e.text}},select:{get:function(e){var bA,bv,bz,bx,by=e.selectedIndex,bB=[],bC=e.options,bw=e.type==="select-one";if(by<0){return null}bv=bw?by:0;bz=bw?by+1:bC.length;for(;bv=0});if(!e.length){bv.selectedIndex=-1}return e}}},attrFn:{val:true,css:true,html:true,text:true,data:true,width:true,height:true,offset:true},attr:function(bA,bx,bB,bz){var bw,e,by,bv=bA.nodeType; +if(!bA||bv===3||bv===8||bv===2){return}if(bz&&bx in b.attrFn){return b(bA)[bx](bB)}if(typeof bA.getAttribute==="undefined"){return b.prop(bA,bx,bB)}by=bv!==1||!b.isXMLDoc(bA);if(by){bx=bx.toLowerCase();e=b.attrHooks[bx]||(ao.test(bx)?aY:be)}if(bB!==L){if(bB===null){b.removeAttr(bA,bx);return}else{if(e&&"set" in e&&by&&(bw=e.set(bA,bB,bx))!==L){return bw}else{bA.setAttribute(bx,""+bB);return bB}}}else{if(e&&"get" in e&&by&&(bw=e.get(bA,bx))!==null){return bw}else{bw=bA.getAttribute(bx);return bw===null?L:bw}}},removeAttr:function(bx,bz){var by,bA,bv,e,bw=0;if(bz&&bx.nodeType===1){bA=bz.toLowerCase().split(af);e=bA.length;for(;bw=0)}}})});var bd=/^(?:textarea|input|select)$/i,n=/^([^\.]*)?(?:\.(.+))?$/,J=/\bhover(\.\S+)?\b/,aO=/^key/,bf=/^(?:mouse|contextmenu)|click/,T=/^(?:focusinfocus|focusoutblur)$/,U=/^(\w*)(?:#([\w\-]+))?(?:\.([\w\-]+))?$/,Y=function(e){var bv=U.exec(e);if(bv){bv[1]=(bv[1]||"").toLowerCase();bv[3]=bv[3]&&new RegExp("(?:^|\\s)"+bv[3]+"(?:\\s|$)")}return bv},j=function(bw,e){var bv=bw.attributes||{};return((!e[1]||bw.nodeName.toLowerCase()===e[1])&&(!e[2]||(bv.id||{}).value===e[2])&&(!e[3]||e[3].test((bv["class"]||{}).value)))},bt=function(e){return b.event.special.hover?e:e.replace(J,"mouseenter$1 mouseleave$1")};b.event={add:function(bx,bC,bJ,bA,by){var bD,bB,bK,bI,bH,bF,e,bG,bv,bz,bw,bE;if(bx.nodeType===3||bx.nodeType===8||!bC||!bJ||!(bD=b._data(bx))){return}if(bJ.handler){bv=bJ;bJ=bv.handler}if(!bJ.guid){bJ.guid=b.guid++}bK=bD.events;if(!bK){bD.events=bK={}}bB=bD.handle;if(!bB){bD.handle=bB=function(bL){return typeof b!=="undefined"&&(!bL||b.event.triggered!==bL.type)?b.event.dispatch.apply(bB.elem,arguments):L};bB.elem=bx}bC=b.trim(bt(bC)).split(" ");for(bI=0;bI=0){bG=bG.slice(0,-1);bw=true}if(bG.indexOf(".")>=0){bx=bG.split(".");bG=bx.shift();bx.sort()}if((!bA||b.event.customEvent[bG])&&!b.event.global[bG]){return}bv=typeof bv==="object"?bv[b.expando]?bv:new b.Event(bG,bv):new b.Event(bG);bv.type=bG;bv.isTrigger=true;bv.exclusive=bw;bv.namespace=bx.join(".");bv.namespace_re=bv.namespace?new RegExp("(^|\\.)"+bx.join("\\.(?:.*\\.)?")+"(\\.|$)"):null;by=bG.indexOf(":")<0?"on"+bG:"";if(!bA){e=b.cache;for(bC in e){if(e[bC].events&&e[bC].events[bG]){b.event.trigger(bv,bD,e[bC].handle.elem,true)}}return}bv.result=L;if(!bv.target){bv.target=bA}bD=bD!=null?b.makeArray(bD):[];bD.unshift(bv);bF=b.event.special[bG]||{};if(bF.trigger&&bF.trigger.apply(bA,bD)===false){return}bB=[[bA,bF.bindType||bG]];if(!bJ&&!bF.noBubble&&!b.isWindow(bA)){bI=bF.delegateType||bG;bH=T.test(bI+bG)?bA:bA.parentNode;bz=null;for(;bH;bH=bH.parentNode){bB.push([bH,bI]);bz=bH}if(bz&&bz===bA.ownerDocument){bB.push([bz.defaultView||bz.parentWindow||bb,bI])}}for(bC=0;bCbA){bH.push({elem:this,matches:bz.slice(bA)})}for(bC=0;bC0?this.on(e,null,bx,bw):this.trigger(e)};if(b.attrFn){b.attrFn[e]=true}if(aO.test(e)){b.event.fixHooks[e]=b.event.keyHooks}if(bf.test(e)){b.event.fixHooks[e]=b.event.mouseHooks}}); +/*! + * Sizzle CSS Selector Engine + * Copyright 2011, The Dojo Foundation + * Released under the MIT, BSD, and GPL Licenses. + * More information: http://sizzlejs.com/ + */ +(function(){var bH=/((?:\((?:\([^()]+\)|[^()]+)+\)|\[(?:\[[^\[\]]*\]|['"][^'"]*['"]|[^\[\]'"]+)+\]|\\.|[^ >+~,(\[\\]+)+|[>+~])(\s*,\s*)?((?:.|\r|\n)*)/g,bC="sizcache"+(Math.random()+"").replace(".",""),bI=0,bL=Object.prototype.toString,bB=false,bA=true,bK=/\\/g,bO=/\r\n/g,bQ=/\W/;[0,0].sort(function(){bA=false;return 0});var by=function(bV,e,bY,bZ){bY=bY||[];e=e||av;var b1=e;if(e.nodeType!==1&&e.nodeType!==9){return[]}if(!bV||typeof bV!=="string"){return bY}var bS,b3,b6,bR,b2,b5,b4,bX,bU=true,bT=by.isXML(e),bW=[],b0=bV;do{bH.exec("");bS=bH.exec(b0);if(bS){b0=bS[3];bW.push(bS[1]);if(bS[2]){bR=bS[3];break}}}while(bS);if(bW.length>1&&bD.exec(bV)){if(bW.length===2&&bE.relative[bW[0]]){b3=bM(bW[0]+bW[1],e,bZ)}else{b3=bE.relative[bW[0]]?[e]:by(bW.shift(),e);while(bW.length){bV=bW.shift();if(bE.relative[bV]){bV+=bW.shift()}b3=bM(bV,b3,bZ)}}}else{if(!bZ&&bW.length>1&&e.nodeType===9&&!bT&&bE.match.ID.test(bW[0])&&!bE.match.ID.test(bW[bW.length-1])){b2=by.find(bW.shift(),e,bT);e=b2.expr?by.filter(b2.expr,b2.set)[0]:b2.set[0]}if(e){b2=bZ?{expr:bW.pop(),set:bF(bZ)}:by.find(bW.pop(),bW.length===1&&(bW[0]==="~"||bW[0]==="+")&&e.parentNode?e.parentNode:e,bT);b3=b2.expr?by.filter(b2.expr,b2.set):b2.set;if(bW.length>0){b6=bF(b3)}else{bU=false}while(bW.length){b5=bW.pop();b4=b5;if(!bE.relative[b5]){b5=""}else{b4=bW.pop()}if(b4==null){b4=e}bE.relative[b5](b6,b4,bT)}}else{b6=bW=[]}}if(!b6){b6=b3}if(!b6){by.error(b5||bV)}if(bL.call(b6)==="[object Array]"){if(!bU){bY.push.apply(bY,b6)}else{if(e&&e.nodeType===1){for(bX=0;b6[bX]!=null;bX++){if(b6[bX]&&(b6[bX]===true||b6[bX].nodeType===1&&by.contains(e,b6[bX]))){bY.push(b3[bX])}}}else{for(bX=0;b6[bX]!=null;bX++){if(b6[bX]&&b6[bX].nodeType===1){bY.push(b3[bX])}}}}}else{bF(b6,bY)}if(bR){by(bR,b1,bY,bZ);by.uniqueSort(bY)}return bY};by.uniqueSort=function(bR){if(bJ){bB=bA;bR.sort(bJ);if(bB){for(var e=1;e0};by.find=function(bX,e,bY){var bW,bS,bU,bT,bV,bR;if(!bX){return[]}for(bS=0,bU=bE.order.length;bS":function(bW,bR){var bV,bU=typeof bR==="string",bS=0,e=bW.length;if(bU&&!bQ.test(bR)){bR=bR.toLowerCase();for(;bS=0)){if(!bS){e.push(bV)}}else{if(bS){bR[bU]=false}}}}return false},ID:function(e){return e[1].replace(bK,"")},TAG:function(bR,e){return bR[1].replace(bK,"").toLowerCase()},CHILD:function(e){if(e[1]==="nth"){if(!e[2]){by.error(e[0])}e[2]=e[2].replace(/^\+|\s*/g,"");var bR=/(-?)(\d*)(?:n([+\-]?\d*))?/.exec(e[2]==="even"&&"2n"||e[2]==="odd"&&"2n+1"||!/\D/.test(e[2])&&"0n+"+e[2]||e[2]);e[2]=(bR[1]+(bR[2]||1))-0;e[3]=bR[3]-0}else{if(e[2]){by.error(e[0])}}e[0]=bI++;return e},ATTR:function(bU,bR,bS,e,bV,bW){var bT=bU[1]=bU[1].replace(bK,"");if(!bW&&bE.attrMap[bT]){bU[1]=bE.attrMap[bT]}bU[4]=(bU[4]||bU[5]||"").replace(bK,"");if(bU[2]==="~="){bU[4]=" "+bU[4]+" "}return bU},PSEUDO:function(bU,bR,bS,e,bV){if(bU[1]==="not"){if((bH.exec(bU[3])||"").length>1||/^\w/.test(bU[3])){bU[3]=by(bU[3],null,null,bR)}else{var bT=by.filter(bU[3],bR,bS,true^bV);if(!bS){e.push.apply(e,bT)}return false}}else{if(bE.match.POS.test(bU[0])||bE.match.CHILD.test(bU[0])){return true}}return bU},POS:function(e){e.unshift(true);return e}},filters:{enabled:function(e){return e.disabled===false&&e.type!=="hidden"},disabled:function(e){return e.disabled===true},checked:function(e){return e.checked===true},selected:function(e){if(e.parentNode){e.parentNode.selectedIndex}return e.selected===true},parent:function(e){return !!e.firstChild},empty:function(e){return !e.firstChild},has:function(bS,bR,e){return !!by(e[3],bS).length},header:function(e){return(/h\d/i).test(e.nodeName)},text:function(bS){var e=bS.getAttribute("type"),bR=bS.type;return bS.nodeName.toLowerCase()==="input"&&"text"===bR&&(e===bR||e===null)},radio:function(e){return e.nodeName.toLowerCase()==="input"&&"radio"===e.type},checkbox:function(e){return e.nodeName.toLowerCase()==="input"&&"checkbox"===e.type},file:function(e){return e.nodeName.toLowerCase()==="input"&&"file"===e.type},password:function(e){return e.nodeName.toLowerCase()==="input"&&"password"===e.type},submit:function(bR){var e=bR.nodeName.toLowerCase();return(e==="input"||e==="button")&&"submit"===bR.type},image:function(e){return e.nodeName.toLowerCase()==="input"&&"image"===e.type},reset:function(bR){var e=bR.nodeName.toLowerCase();return(e==="input"||e==="button")&&"reset"===bR.type},button:function(bR){var e=bR.nodeName.toLowerCase();return e==="input"&&"button"===bR.type||e==="button"},input:function(e){return(/input|select|textarea|button/i).test(e.nodeName)},focus:function(e){return e===e.ownerDocument.activeElement}},setFilters:{first:function(bR,e){return e===0},last:function(bS,bR,e,bT){return bR===bT.length-1},even:function(bR,e){return e%2===0},odd:function(bR,e){return e%2===1 +},lt:function(bS,bR,e){return bRe[3]-0},nth:function(bS,bR,e){return e[3]-0===bR},eq:function(bS,bR,e){return e[3]-0===bR}},filter:{PSEUDO:function(bS,bX,bW,bY){var e=bX[1],bR=bE.filters[e];if(bR){return bR(bS,bW,bX,bY)}else{if(e==="contains"){return(bS.textContent||bS.innerText||bw([bS])||"").indexOf(bX[3])>=0}else{if(e==="not"){var bT=bX[3];for(var bV=0,bU=bT.length;bV=0)}}},ID:function(bR,e){return bR.nodeType===1&&bR.getAttribute("id")===e},TAG:function(bR,e){return(e==="*"&&bR.nodeType===1)||!!bR.nodeName&&bR.nodeName.toLowerCase()===e},CLASS:function(bR,e){return(" "+(bR.className||bR.getAttribute("class"))+" ").indexOf(e)>-1},ATTR:function(bV,bT){var bS=bT[1],e=by.attr?by.attr(bV,bS):bE.attrHandle[bS]?bE.attrHandle[bS](bV):bV[bS]!=null?bV[bS]:bV.getAttribute(bS),bW=e+"",bU=bT[2],bR=bT[4];return e==null?bU==="!=":!bU&&by.attr?e!=null:bU==="="?bW===bR:bU==="*="?bW.indexOf(bR)>=0:bU==="~="?(" "+bW+" ").indexOf(bR)>=0:!bR?bW&&e!==false:bU==="!="?bW!==bR:bU==="^="?bW.indexOf(bR)===0:bU==="$="?bW.substr(bW.length-bR.length)===bR:bU==="|="?bW===bR||bW.substr(0,bR.length+1)===bR+"-":false},POS:function(bU,bR,bS,bV){var e=bR[2],bT=bE.setFilters[e];if(bT){return bT(bU,bS,bR,bV)}}}};var bD=bE.match.POS,bx=function(bR,e){return"\\"+(e-0+1)};for(var bz in bE.match){bE.match[bz]=new RegExp(bE.match[bz].source+(/(?![^\[]*\])(?![^\(]*\))/.source));bE.leftMatch[bz]=new RegExp(/(^(?:.|\r|\n)*?)/.source+bE.match[bz].source.replace(/\\(\d+)/g,bx))}var bF=function(bR,e){bR=Array.prototype.slice.call(bR,0);if(e){e.push.apply(e,bR);return e}return bR};try{Array.prototype.slice.call(av.documentElement.childNodes,0)[0].nodeType}catch(bP){bF=function(bU,bT){var bS=0,bR=bT||[];if(bL.call(bU)==="[object Array]"){Array.prototype.push.apply(bR,bU)}else{if(typeof bU.length==="number"){for(var e=bU.length;bS";e.insertBefore(bR,e.firstChild);if(av.getElementById(bS)){bE.find.ID=function(bU,bV,bW){if(typeof bV.getElementById!=="undefined"&&!bW){var bT=bV.getElementById(bU[1]);return bT?bT.id===bU[1]||typeof bT.getAttributeNode!=="undefined"&&bT.getAttributeNode("id").nodeValue===bU[1]?[bT]:L:[]}};bE.filter.ID=function(bV,bT){var bU=typeof bV.getAttributeNode!=="undefined"&&bV.getAttributeNode("id");return bV.nodeType===1&&bU&&bU.nodeValue===bT}}e.removeChild(bR);e=bR=null})();(function(){var e=av.createElement("div");e.appendChild(av.createComment(""));if(e.getElementsByTagName("*").length>0){bE.find.TAG=function(bR,bV){var bU=bV.getElementsByTagName(bR[1]);if(bR[1]==="*"){var bT=[];for(var bS=0;bU[bS];bS++){if(bU[bS].nodeType===1){bT.push(bU[bS])}}bU=bT}return bU}}e.innerHTML="";if(e.firstChild&&typeof e.firstChild.getAttribute!=="undefined"&&e.firstChild.getAttribute("href")!=="#"){bE.attrHandle.href=function(bR){return bR.getAttribute("href",2)}}e=null})();if(av.querySelectorAll){(function(){var e=by,bT=av.createElement("div"),bS="__sizzle__";bT.innerHTML="

";if(bT.querySelectorAll&&bT.querySelectorAll(".TEST").length===0){return}by=function(b4,bV,bZ,b3){bV=bV||av;if(!b3&&!by.isXML(bV)){var b2=/^(\w+$)|^\.([\w\-]+$)|^#([\w\-]+$)/.exec(b4);if(b2&&(bV.nodeType===1||bV.nodeType===9)){if(b2[1]){return bF(bV.getElementsByTagName(b4),bZ)}else{if(b2[2]&&bE.find.CLASS&&bV.getElementsByClassName){return bF(bV.getElementsByClassName(b2[2]),bZ)}}}if(bV.nodeType===9){if(b4==="body"&&bV.body){return bF([bV.body],bZ)}else{if(b2&&b2[3]){var bY=bV.getElementById(b2[3]);if(bY&&bY.parentNode){if(bY.id===b2[3]){return bF([bY],bZ)}}else{return bF([],bZ)}}}try{return bF(bV.querySelectorAll(b4),bZ)}catch(b0){}}else{if(bV.nodeType===1&&bV.nodeName.toLowerCase()!=="object"){var bW=bV,bX=bV.getAttribute("id"),bU=bX||bS,b6=bV.parentNode,b5=/^\s*[+~]/.test(b4);if(!bX){bV.setAttribute("id",bU)}else{bU=bU.replace(/'/g,"\\$&")}if(b5&&b6){bV=bV.parentNode}try{if(!b5||b6){return bF(bV.querySelectorAll("[id='"+bU+"'] "+b4),bZ)}}catch(b1){}finally{if(!bX){bW.removeAttribute("id")}}}}}return e(b4,bV,bZ,b3)};for(var bR in e){by[bR]=e[bR]}bT=null})()}(function(){var e=av.documentElement,bS=e.matchesSelector||e.mozMatchesSelector||e.webkitMatchesSelector||e.msMatchesSelector;if(bS){var bU=!bS.call(av.createElement("div"),"div"),bR=false;try{bS.call(av.documentElement,"[test!='']:sizzle")}catch(bT){bR=true}by.matchesSelector=function(bW,bY){bY=bY.replace(/\=\s*([^'"\]]*)\s*\]/g,"='$1']");if(!by.isXML(bW)){try{if(bR||!bE.match.PSEUDO.test(bY)&&!/!=/.test(bY)){var bV=bS.call(bW,bY);if(bV||!bU||bW.document&&bW.document.nodeType!==11){return bV}}}catch(bX){}}return by(bY,null,null,[bW]).length>0}}})();(function(){var e=av.createElement("div");e.innerHTML="
";if(!e.getElementsByClassName||e.getElementsByClassName("e").length===0){return}e.lastChild.className="e";if(e.getElementsByClassName("e").length===1){return}bE.order.splice(1,0,"CLASS");bE.find.CLASS=function(bR,bS,bT){if(typeof bS.getElementsByClassName!=="undefined"&&!bT){return bS.getElementsByClassName(bR[1])}};e=null})();function bv(bR,bW,bV,bZ,bX,bY){for(var bT=0,bS=bZ.length;bT0){bU=e;break}}}e=e[bR]}bZ[bT]=bU}}}if(av.documentElement.contains){by.contains=function(bR,e){return bR!==e&&(bR.contains?bR.contains(e):true)}}else{if(av.documentElement.compareDocumentPosition){by.contains=function(bR,e){return !!(bR.compareDocumentPosition(e)&16)}}else{by.contains=function(){return false}}}by.isXML=function(e){var bR=(e?e.ownerDocument||e:0).documentElement;return bR?bR.nodeName!=="HTML":false};var bM=function(bS,e,bW){var bV,bX=[],bU="",bY=e.nodeType?[e]:e;while((bV=bE.match.PSEUDO.exec(bS))){bU+=bV[0];bS=bS.replace(bE.match.PSEUDO,"")}bS=bE.relative[bS]?bS+"*":bS;for(var bT=0,bR=bY.length;bT0){for(bB=bA;bB=0:b.filter(e,this).length>0:this.filter(e).length>0)},closest:function(by,bx){var bv=[],bw,e,bz=this[0];if(b.isArray(by)){var bB=1;while(bz&&bz.ownerDocument&&bz!==bx){for(bw=0;bw-1:b.find.matchesSelector(bz,by)){bv.push(bz);break}else{bz=bz.parentNode;if(!bz||!bz.ownerDocument||bz===bx||bz.nodeType===11){break}}}}bv=bv.length>1?b.unique(bv):bv;return this.pushStack(bv,"closest",by)},index:function(e){if(!e){return(this[0]&&this[0].parentNode)?this.prevAll().length:-1}if(typeof e==="string"){return b.inArray(this[0],b(e))}return b.inArray(e.jquery?e[0]:e,this)},add:function(e,bv){var bx=typeof e==="string"?b(e,bv):b.makeArray(e&&e.nodeType?[e]:e),bw=b.merge(this.get(),bx);return this.pushStack(C(bx[0])||C(bw[0])?bw:b.unique(bw))},andSelf:function(){return this.add(this.prevObject)}});function C(e){return !e||!e.parentNode||e.parentNode.nodeType===11}b.each({parent:function(bv){var e=bv.parentNode;return e&&e.nodeType!==11?e:null},parents:function(e){return b.dir(e,"parentNode")},parentsUntil:function(bv,e,bw){return b.dir(bv,"parentNode",bw)},next:function(e){return b.nth(e,2,"nextSibling")},prev:function(e){return b.nth(e,2,"previousSibling")},nextAll:function(e){return b.dir(e,"nextSibling")},prevAll:function(e){return b.dir(e,"previousSibling")},nextUntil:function(bv,e,bw){return b.dir(bv,"nextSibling",bw)},prevUntil:function(bv,e,bw){return b.dir(bv,"previousSibling",bw)},siblings:function(e){return b.sibling(e.parentNode.firstChild,e)},children:function(e){return b.sibling(e.firstChild)},contents:function(e){return b.nodeName(e,"iframe")?e.contentDocument||e.contentWindow.document:b.makeArray(e.childNodes)}},function(e,bv){b.fn[e]=function(by,bw){var bx=b.map(this,bv,by);if(!ab.test(e)){bw=by}if(bw&&typeof bw==="string"){bx=b.filter(bw,bx)}bx=this.length>1&&!ay[e]?b.unique(bx):bx;if((this.length>1||a9.test(bw))&&aq.test(e)){bx=bx.reverse()}return this.pushStack(bx,e,P.call(arguments).join(","))}});b.extend({filter:function(bw,e,bv){if(bv){bw=":not("+bw+")"}return e.length===1?b.find.matchesSelector(e[0],bw)?[e[0]]:[]:b.find.matches(bw,e)},dir:function(bw,bv,by){var e=[],bx=bw[bv];while(bx&&bx.nodeType!==9&&(by===L||bx.nodeType!==1||!b(bx).is(by))){if(bx.nodeType===1){e.push(bx)}bx=bx[bv]}return e},nth:function(by,e,bw,bx){e=e||1;var bv=0;for(;by;by=by[bw]){if(by.nodeType===1&&++bv===e){break}}return by},sibling:function(bw,bv){var e=[];for(;bw;bw=bw.nextSibling){if(bw.nodeType===1&&bw!==bv){e.push(bw)}}return e}});function aG(bx,bw,e){bw=bw||0;if(b.isFunction(bw)){return b.grep(bx,function(bz,by){var bA=!!bw.call(bz,by,bz);return bA===e})}else{if(bw.nodeType){return b.grep(bx,function(bz,by){return(bz===bw)===e})}else{if(typeof bw==="string"){var bv=b.grep(bx,function(by){return by.nodeType===1});if(bp.test(bw)){return b.filter(bw,bv,!e)}else{bw=b.filter(bw,bv)}}}}return b.grep(bx,function(bz,by){return(b.inArray(bz,bw)>=0)===e})}function a(e){var bw=aR.split("|"),bv=e.createDocumentFragment();if(bv.createElement){while(bw.length){bv.createElement(bw.pop())}}return bv}var aR="abbr|article|aside|audio|canvas|datalist|details|figcaption|figure|footer|header|hgroup|mark|meter|nav|output|progress|section|summary|time|video",ag=/ jQuery\d+="(?:\d+|null)"/g,ar=/^\s+/,R=/<(?!area|br|col|embed|hr|img|input|link|meta|param)(([\w:]+)[^>]*)\/>/ig,d=/<([\w:]+)/,w=/",""],legend:[1,"
","
"],thead:[1,"","
"],tr:[2,"","
"],td:[3,"","
"],col:[2,"","
"],area:[1,"",""],_default:[0,"",""]},ac=a(av); +ax.optgroup=ax.option;ax.tbody=ax.tfoot=ax.colgroup=ax.caption=ax.thead;ax.th=ax.td;if(!b.support.htmlSerialize){ax._default=[1,"div
","
"]}b.fn.extend({text:function(e){if(b.isFunction(e)){return this.each(function(bw){var bv=b(this);bv.text(e.call(this,bw,bv.text()))})}if(typeof e!=="object"&&e!==L){return this.empty().append((this[0]&&this[0].ownerDocument||av).createTextNode(e))}return b.text(this)},wrapAll:function(e){if(b.isFunction(e)){return this.each(function(bw){b(this).wrapAll(e.call(this,bw))})}if(this[0]){var bv=b(e,this[0].ownerDocument).eq(0).clone(true);if(this[0].parentNode){bv.insertBefore(this[0])}bv.map(function(){var bw=this;while(bw.firstChild&&bw.firstChild.nodeType===1){bw=bw.firstChild}return bw}).append(this)}return this},wrapInner:function(e){if(b.isFunction(e)){return this.each(function(bv){b(this).wrapInner(e.call(this,bv))})}return this.each(function(){var bv=b(this),bw=bv.contents();if(bw.length){bw.wrapAll(e)}else{bv.append(e)}})},wrap:function(e){var bv=b.isFunction(e);return this.each(function(bw){b(this).wrapAll(bv?e.call(this,bw):e)})},unwrap:function(){return this.parent().each(function(){if(!b.nodeName(this,"body")){b(this).replaceWith(this.childNodes)}}).end()},append:function(){return this.domManip(arguments,true,function(e){if(this.nodeType===1){this.appendChild(e)}})},prepend:function(){return this.domManip(arguments,true,function(e){if(this.nodeType===1){this.insertBefore(e,this.firstChild)}})},before:function(){if(this[0]&&this[0].parentNode){return this.domManip(arguments,false,function(bv){this.parentNode.insertBefore(bv,this)})}else{if(arguments.length){var e=b.clean(arguments);e.push.apply(e,this.toArray());return this.pushStack(e,"before",arguments)}}},after:function(){if(this[0]&&this[0].parentNode){return this.domManip(arguments,false,function(bv){this.parentNode.insertBefore(bv,this.nextSibling)})}else{if(arguments.length){var e=this.pushStack(this,"after",arguments);e.push.apply(e,b.clean(arguments));return e}}},remove:function(e,bx){for(var bv=0,bw;(bw=this[bv])!=null;bv++){if(!e||b.filter(e,[bw]).length){if(!bx&&bw.nodeType===1){b.cleanData(bw.getElementsByTagName("*"));b.cleanData([bw])}if(bw.parentNode){bw.parentNode.removeChild(bw)}}}return this},empty:function(){for(var e=0,bv;(bv=this[e])!=null;e++){if(bv.nodeType===1){b.cleanData(bv.getElementsByTagName("*"))}while(bv.firstChild){bv.removeChild(bv.firstChild)}}return this},clone:function(bv,e){bv=bv==null?false:bv;e=e==null?bv:e;return this.map(function(){return b.clone(this,bv,e)})},html:function(bx){if(bx===L){return this[0]&&this[0].nodeType===1?this[0].innerHTML.replace(ag,""):null}else{if(typeof bx==="string"&&!ae.test(bx)&&(b.support.leadingWhitespace||!ar.test(bx))&&!ax[(d.exec(bx)||["",""])[1].toLowerCase()]){bx=bx.replace(R,"<$1>");try{for(var bw=0,bv=this.length;bw1&&bw0?this.clone(true):this).get();b(bC[bA])[bv](by);bz=bz.concat(by)}return this.pushStack(bz,e,bC.selector)}}});function bg(e){if(typeof e.getElementsByTagName!=="undefined"){return e.getElementsByTagName("*")}else{if(typeof e.querySelectorAll!=="undefined"){return e.querySelectorAll("*")}else{return[]}}}function az(e){if(e.type==="checkbox"||e.type==="radio"){e.defaultChecked=e.checked}}function E(e){var bv=(e.nodeName||"").toLowerCase();if(bv==="input"){az(e)}else{if(bv!=="script"&&typeof e.getElementsByTagName!=="undefined"){b.grep(e.getElementsByTagName("input"),az)}}}function al(e){var bv=av.createElement("div");ac.appendChild(bv);bv.innerHTML=e.outerHTML;return bv.firstChild}b.extend({clone:function(by,bA,bw){var e,bv,bx,bz=b.support.html5Clone||!ah.test("<"+by.nodeName)?by.cloneNode(true):al(by);if((!b.support.noCloneEvent||!b.support.noCloneChecked)&&(by.nodeType===1||by.nodeType===11)&&!b.isXMLDoc(by)){ai(by,bz);e=bg(by);bv=bg(bz);for(bx=0;e[bx];++bx){if(bv[bx]){ai(e[bx],bv[bx])}}}if(bA){t(by,bz);if(bw){e=bg(by);bv=bg(bz);for(bx=0;e[bx];++bx){t(e[bx],bv[bx])}}}e=bv=null;return bz},clean:function(bw,by,bH,bA){var bF;by=by||av;if(typeof by.createElement==="undefined"){by=by.ownerDocument||by[0]&&by[0].ownerDocument||av}var bI=[],bB;for(var bE=0,bz;(bz=bw[bE])!=null;bE++){if(typeof bz==="number"){bz+=""}if(!bz){continue}if(typeof bz==="string"){if(!W.test(bz)){bz=by.createTextNode(bz)}else{bz=bz.replace(R,"<$1>");var bK=(d.exec(bz)||["",""])[1].toLowerCase(),bx=ax[bK]||ax._default,bD=bx[0],bv=by.createElement("div");if(by===av){ac.appendChild(bv)}else{a(by).appendChild(bv)}bv.innerHTML=bx[1]+bz+bx[2];while(bD--){bv=bv.lastChild}if(!b.support.tbody){var e=w.test(bz),bC=bK==="table"&&!e?bv.firstChild&&bv.firstChild.childNodes:bx[1]===""&&!e?bv.childNodes:[];for(bB=bC.length-1;bB>=0;--bB){if(b.nodeName(bC[bB],"tbody")&&!bC[bB].childNodes.length){bC[bB].parentNode.removeChild(bC[bB])}}}if(!b.support.leadingWhitespace&&ar.test(bz)){bv.insertBefore(by.createTextNode(ar.exec(bz)[0]),bv.firstChild)}bz=bv.childNodes}}var bG;if(!b.support.appendChecked){if(bz[0]&&typeof(bG=bz.length)==="number"){for(bB=0;bB=0){return bx+"px"}}else{return bx}}}});if(!b.support.opacity){b.cssHooks.opacity={get:function(bv,e){return au.test((e&&bv.currentStyle?bv.currentStyle.filter:bv.style.filter)||"")?(parseFloat(RegExp.$1)/100)+"":e?"1":""},set:function(by,bz){var bx=by.style,bv=by.currentStyle,e=b.isNumeric(bz)?"alpha(opacity="+bz*100+")":"",bw=bv&&bv.filter||bx.filter||"";bx.zoom=1;if(bz>=1&&b.trim(bw.replace(ak,""))===""){bx.removeAttribute("filter");if(bv&&!bv.filter){return}}bx.filter=ak.test(bw)?bw.replace(ak,e):bw+" "+e}}}b(function(){if(!b.support.reliableMarginRight){b.cssHooks.marginRight={get:function(bw,bv){var e;b.swap(bw,{display:"inline-block"},function(){if(bv){e=Z(bw,"margin-right","marginRight")}else{e=bw.style.marginRight}});return e}}}});if(av.defaultView&&av.defaultView.getComputedStyle){aI=function(by,bw){var bv,bx,e;bw=bw.replace(z,"-$1").toLowerCase();if((bx=by.ownerDocument.defaultView)&&(e=bx.getComputedStyle(by,null))){bv=e.getPropertyValue(bw);if(bv===""&&!b.contains(by.ownerDocument.documentElement,by)){bv=b.style(by,bw)}}return bv}}if(av.documentElement.currentStyle){aX=function(bz,bw){var bA,e,by,bv=bz.currentStyle&&bz.currentStyle[bw],bx=bz.style;if(bv===null&&bx&&(by=bx[bw])){bv=by}if(!bc.test(bv)&&bn.test(bv)){bA=bx.left;e=bz.runtimeStyle&&bz.runtimeStyle.left;if(e){bz.runtimeStyle.left=bz.currentStyle.left}bx.left=bw==="fontSize"?"1em":(bv||0);bv=bx.pixelLeft+"px";bx.left=bA;if(e){bz.runtimeStyle.left=e}}return bv===""?"auto":bv}}Z=aI||aX;function p(by,bw,bv){var bA=bw==="width"?by.offsetWidth:by.offsetHeight,bz=bw==="width"?an:a1,bx=0,e=bz.length; +if(bA>0){if(bv!=="border"){for(;bx)<[^<]*)*<\/script>/gi,q=/^(?:select|textarea)/i,h=/\s+/,br=/([?&])_=[^&]*/,K=/^([\w\+\.\-]+:)(?:\/\/([^\/?#:]*)(?::(\d+))?)?/,A=b.fn.load,aa={},r={},aE,s,aV=["*/"]+["*"];try{aE=bl.href}catch(aw){aE=av.createElement("a");aE.href="";aE=aE.href}s=K.exec(aE.toLowerCase())||[];function f(e){return function(by,bA){if(typeof by!=="string"){bA=by;by="*"}if(b.isFunction(bA)){var bx=by.toLowerCase().split(h),bw=0,bz=bx.length,bv,bB,bC;for(;bw=0){var e=bw.slice(by,bw.length);bw=bw.slice(0,by)}var bx="GET";if(bz){if(b.isFunction(bz)){bA=bz;bz=L}else{if(typeof bz==="object"){bz=b.param(bz,b.ajaxSettings.traditional);bx="POST"}}}var bv=this;b.ajax({url:bw,type:bx,dataType:"html",data:bz,complete:function(bC,bB,bD){bD=bC.responseText;if(bC.isResolved()){bC.done(function(bE){bD=bE});bv.html(e?b("
").append(bD.replace(a6,"")).find(e):bD)}if(bA){bv.each(bA,[bD,bB,bC])}}});return this},serialize:function(){return b.param(this.serializeArray())},serializeArray:function(){return this.map(function(){return this.elements?b.makeArray(this.elements):this}).filter(function(){return this.name&&!this.disabled&&(this.checked||q.test(this.nodeName)||aZ.test(this.type))}).map(function(e,bv){var bw=b(this).val();return bw==null?null:b.isArray(bw)?b.map(bw,function(by,bx){return{name:bv.name,value:by.replace(bs,"\r\n")}}):{name:bv.name,value:bw.replace(bs,"\r\n")}}).get()}});b.each("ajaxStart ajaxStop ajaxComplete ajaxError ajaxSuccess ajaxSend".split(" "),function(e,bv){b.fn[bv]=function(bw){return this.on(bv,bw)}});b.each(["get","post"],function(e,bv){b[bv]=function(bw,by,bz,bx){if(b.isFunction(by)){bx=bx||bz;bz=by;by=L}return b.ajax({type:bv,url:bw,data:by,success:bz,dataType:bx})}});b.extend({getScript:function(e,bv){return b.get(e,L,bv,"script")},getJSON:function(e,bv,bw){return b.get(e,bv,bw,"json")},ajaxSetup:function(bv,e){if(e){am(bv,b.ajaxSettings)}else{e=bv;bv=b.ajaxSettings}am(bv,e);return bv},ajaxSettings:{url:aE,isLocal:aM.test(s[1]),global:true,type:"GET",contentType:"application/x-www-form-urlencoded",processData:true,async:true,accepts:{xml:"application/xml, text/xml",html:"text/html",text:"text/plain",json:"application/json, text/javascript","*":aV},contents:{xml:/xml/,html:/html/,json:/json/},responseFields:{xml:"responseXML",text:"responseText"},converters:{"* text":bb.String,"text html":true,"text json":b.parseJSON,"text xml":b.parseXML},flatOptions:{context:true,url:true}},ajaxPrefilter:f(aa),ajaxTransport:f(r),ajax:function(bz,bx){if(typeof bz==="object"){bx=bz;bz=L}bx=bx||{};var bD=b.ajaxSetup({},bx),bS=bD.context||bD,bG=bS!==bD&&(bS.nodeType||bS instanceof b)?b(bS):b.event,bR=b.Deferred(),bN=b.Callbacks("once memory"),bB=bD.statusCode||{},bC,bH={},bO={},bQ,by,bL,bE,bI,bA=0,bw,bK,bJ={readyState:0,setRequestHeader:function(bT,bU){if(!bA){var e=bT.toLowerCase();bT=bO[e]=bO[e]||bT;bH[bT]=bU}return this},getAllResponseHeaders:function(){return bA===2?bQ:null},getResponseHeader:function(bT){var e;if(bA===2){if(!by){by={};while((e=aD.exec(bQ))){by[e[1].toLowerCase()]=e[2]}}e=by[bT.toLowerCase()]}return e===L?null:e},overrideMimeType:function(e){if(!bA){bD.mimeType=e}return this},abort:function(e){e=e||"abort";if(bL){bL.abort(e)}bF(0,e);return this}};function bF(bZ,bU,b0,bW){if(bA===2){return}bA=2;if(bE){clearTimeout(bE)}bL=L;bQ=bW||"";bJ.readyState=bZ>0?4:0;var bT,b4,b3,bX=bU,bY=b0?bj(bD,bJ,b0):L,bV,b2;if(bZ>=200&&bZ<300||bZ===304){if(bD.ifModified){if((bV=bJ.getResponseHeader("Last-Modified"))){b.lastModified[bC]=bV}if((b2=bJ.getResponseHeader("Etag"))){b.etag[bC]=b2}}if(bZ===304){bX="notmodified";bT=true}else{try{b4=G(bD,bY);bX="success";bT=true}catch(b1){bX="parsererror";b3=b1}}}else{b3=bX;if(!bX||bZ){bX="error";if(bZ<0){bZ=0}}}bJ.status=bZ;bJ.statusText=""+(bU||bX);if(bT){bR.resolveWith(bS,[b4,bX,bJ])}else{bR.rejectWith(bS,[bJ,bX,b3])}bJ.statusCode(bB);bB=L;if(bw){bG.trigger("ajax"+(bT?"Success":"Error"),[bJ,bD,bT?b4:b3])}bN.fireWith(bS,[bJ,bX]);if(bw){bG.trigger("ajaxComplete",[bJ,bD]);if(!(--b.active)){b.event.trigger("ajaxStop")}}}bR.promise(bJ);bJ.success=bJ.done;bJ.error=bJ.fail;bJ.complete=bN.add;bJ.statusCode=function(bT){if(bT){var e;if(bA<2){for(e in bT){bB[e]=[bB[e],bT[e]]}}else{e=bT[bJ.status];bJ.then(e,e)}}return this};bD.url=((bz||bD.url)+"").replace(bq,"").replace(c,s[1]+"//");bD.dataTypes=b.trim(bD.dataType||"*").toLowerCase().split(h);if(bD.crossDomain==null){bI=K.exec(bD.url.toLowerCase());bD.crossDomain=!!(bI&&(bI[1]!=s[1]||bI[2]!=s[2]||(bI[3]||(bI[1]==="http:"?80:443))!=(s[3]||(s[1]==="http:"?80:443))))}if(bD.data&&bD.processData&&typeof bD.data!=="string"){bD.data=b.param(bD.data,bD.traditional)}aW(aa,bD,bx,bJ);if(bA===2){return false}bw=bD.global;bD.type=bD.type.toUpperCase();bD.hasContent=!aQ.test(bD.type);if(bw&&b.active++===0){b.event.trigger("ajaxStart")}if(!bD.hasContent){if(bD.data){bD.url+=(M.test(bD.url)?"&":"?")+bD.data;delete bD.data}bC=bD.url;if(bD.cache===false){var bv=b.now(),bP=bD.url.replace(br,"$1_="+bv);bD.url=bP+((bP===bD.url)?(M.test(bD.url)?"&":"?")+"_="+bv:"")}}if(bD.data&&bD.hasContent&&bD.contentType!==false||bx.contentType){bJ.setRequestHeader("Content-Type",bD.contentType)}if(bD.ifModified){bC=bC||bD.url;if(b.lastModified[bC]){bJ.setRequestHeader("If-Modified-Since",b.lastModified[bC])}if(b.etag[bC]){bJ.setRequestHeader("If-None-Match",b.etag[bC])}}bJ.setRequestHeader("Accept",bD.dataTypes[0]&&bD.accepts[bD.dataTypes[0]]?bD.accepts[bD.dataTypes[0]]+(bD.dataTypes[0]!=="*"?", "+aV+"; q=0.01":""):bD.accepts["*"]);for(bK in bD.headers){bJ.setRequestHeader(bK,bD.headers[bK])}if(bD.beforeSend&&(bD.beforeSend.call(bS,bJ,bD)===false||bA===2)){bJ.abort();return false}for(bK in {success:1,error:1,complete:1}){bJ[bK](bD[bK])}bL=aW(r,bD,bx,bJ);if(!bL){bF(-1,"No Transport")}else{bJ.readyState=1;if(bw){bG.trigger("ajaxSend",[bJ,bD])}if(bD.async&&bD.timeout>0){bE=setTimeout(function(){bJ.abort("timeout")},bD.timeout)}try{bA=1;bL.send(bH,bF)}catch(bM){if(bA<2){bF(-1,bM)}else{throw bM}}}return bJ},param:function(e,bw){var bv=[],by=function(bz,bA){bA=b.isFunction(bA)?bA():bA;bv[bv.length]=encodeURIComponent(bz)+"="+encodeURIComponent(bA)};if(bw===L){bw=b.ajaxSettings.traditional}if(b.isArray(e)||(e.jquery&&!b.isPlainObject(e))){b.each(e,function(){by(this.name,this.value)})}else{for(var bx in e){v(bx,e[bx],bw,by)}}return bv.join("&").replace(k,"+")}});function v(bw,by,bv,bx){if(b.isArray(by)){b.each(by,function(bA,bz){if(bv||ap.test(bw)){bx(bw,bz)}else{v(bw+"["+(typeof bz==="object"||b.isArray(bz)?bA:"")+"]",bz,bv,bx)}})}else{if(!bv&&by!=null&&typeof by==="object"){for(var e in by){v(bw+"["+e+"]",by[e],bv,bx)}}else{bx(bw,by)}}}b.extend({active:0,lastModified:{},etag:{}});function bj(bD,bC,bz){var bv=bD.contents,bB=bD.dataTypes,bw=bD.responseFields,by,bA,bx,e;for(bA in bw){if(bA in bz){bC[bw[bA]]=bz[bA]}}while(bB[0]==="*"){bB.shift();if(by===L){by=bD.mimeType||bC.getResponseHeader("content-type")}}if(by){for(bA in bv){if(bv[bA]&&bv[bA].test(by)){bB.unshift(bA);break}}}if(bB[0] in bz){bx=bB[0]}else{for(bA in bz){if(!bB[0]||bD.converters[bA+" "+bB[0]]){bx=bA;break}if(!e){e=bA}}bx=bx||e}if(bx){if(bx!==bB[0]){bB.unshift(bx)}return bz[bx]}}function G(bH,bz){if(bH.dataFilter){bz=bH.dataFilter(bz,bH.dataType)}var bD=bH.dataTypes,bG={},bA,bE,bw=bD.length,bB,bC=bD[0],bx,by,bF,bv,e;for(bA=1;bA=bw.duration+this.startTime){this.now=this.end;this.pos=this.state=1;this.update();bw.animatedProperties[this.prop]=true;for(bA in bw.animatedProperties){if(bw.animatedProperties[bA]!==true){e=false}}if(e){if(bw.overflow!=null&&!b.support.shrinkWrapBlocks){b.each(["","X","Y"],function(bC,bD){bz.style["overflow"+bD]=bw.overflow[bC]})}if(bw.hide){b(bz).hide()}if(bw.hide||bw.show){for(bA in bw.animatedProperties){b.style(bz,bA,bw.orig[bA]);b.removeData(bz,"fxshow"+bA,true);b.removeData(bz,"toggle"+bA,true)}}bv=bw.complete;if(bv){bw.complete=false;bv.call(bz)}}return false}else{if(bw.duration==Infinity){this.now=bx}else{bB=bx-this.startTime;this.state=bB/bw.duration;this.pos=b.easing[bw.animatedProperties[this.prop]](this.state,bB,0,1,bw.duration);this.now=this.start+((this.end-this.start)*this.pos)}this.update()}return true}};b.extend(b.fx,{tick:function(){var bw,bv=b.timers,e=0;for(;e").appendTo(e),bw=bv.css("display");bv.remove();if(bw==="none"||bw===""){if(!a8){a8=av.createElement("iframe");a8.frameBorder=a8.width=a8.height=0}e.appendChild(a8);if(!m||!a8.createElement){m=(a8.contentWindow||a8.contentDocument).document;m.write((av.compatMode==="CSS1Compat"?"":"")+"");m.close()}bv=m.createElement(bx);m.body.appendChild(bv);bw=b.css(bv,"display");e.removeChild(a8)}Q[bx]=bw}return Q[bx]}var V=/^t(?:able|d|h)$/i,ad=/^(?:body|html)$/i;if("getBoundingClientRect" in av.documentElement){b.fn.offset=function(bI){var by=this[0],bB;if(bI){return this.each(function(e){b.offset.setOffset(this,bI,e)})}if(!by||!by.ownerDocument){return null}if(by===by.ownerDocument.body){return b.offset.bodyOffset(by)}try{bB=by.getBoundingClientRect()}catch(bF){}var bH=by.ownerDocument,bw=bH.documentElement;if(!bB||!b.contains(bw,by)){return bB?{top:bB.top,left:bB.left}:{top:0,left:0}}var bC=bH.body,bD=aK(bH),bA=bw.clientTop||bC.clientTop||0,bE=bw.clientLeft||bC.clientLeft||0,bv=bD.pageYOffset||b.support.boxModel&&bw.scrollTop||bC.scrollTop,bz=bD.pageXOffset||b.support.boxModel&&bw.scrollLeft||bC.scrollLeft,bG=bB.top+bv-bA,bx=bB.left+bz-bE;return{top:bG,left:bx}}}else{b.fn.offset=function(bF){var bz=this[0];if(bF){return this.each(function(bG){b.offset.setOffset(this,bF,bG)})}if(!bz||!bz.ownerDocument){return null}if(bz===bz.ownerDocument.body){return b.offset.bodyOffset(bz)}var bC,bw=bz.offsetParent,bv=bz,bE=bz.ownerDocument,bx=bE.documentElement,bA=bE.body,bB=bE.defaultView,e=bB?bB.getComputedStyle(bz,null):bz.currentStyle,bD=bz.offsetTop,by=bz.offsetLeft;while((bz=bz.parentNode)&&bz!==bA&&bz!==bx){if(b.support.fixedPosition&&e.position==="fixed"){break}bC=bB?bB.getComputedStyle(bz,null):bz.currentStyle;bD-=bz.scrollTop;by-=bz.scrollLeft;if(bz===bw){bD+=bz.offsetTop;by+=bz.offsetLeft;if(b.support.doesNotAddBorder&&!(b.support.doesAddBorderForTableAndCells&&V.test(bz.nodeName))){bD+=parseFloat(bC.borderTopWidth)||0;by+=parseFloat(bC.borderLeftWidth)||0}bv=bw;bw=bz.offsetParent}if(b.support.subtractsBorderForOverflowNotVisible&&bC.overflow!=="visible"){bD+=parseFloat(bC.borderTopWidth)||0;by+=parseFloat(bC.borderLeftWidth)||0}e=bC}if(e.position==="relative"||e.position==="static"){bD+=bA.offsetTop;by+=bA.offsetLeft}if(b.support.fixedPosition&&e.position==="fixed"){bD+=Math.max(bx.scrollTop,bA.scrollTop);by+=Math.max(bx.scrollLeft,bA.scrollLeft)}return{top:bD,left:by}}}b.offset={bodyOffset:function(e){var bw=e.offsetTop,bv=e.offsetLeft;if(b.support.doesNotIncludeMarginInBodyOffset){bw+=parseFloat(b.css(e,"marginTop"))||0;bv+=parseFloat(b.css(e,"marginLeft"))||0}return{top:bw,left:bv}},setOffset:function(bx,bG,bA){var bB=b.css(bx,"position");if(bB==="static"){bx.style.position="relative"}var bz=b(bx),bv=bz.offset(),e=b.css(bx,"top"),bE=b.css(bx,"left"),bF=(bB==="absolute"||bB==="fixed")&&b.inArray("auto",[e,bE])>-1,bD={},bC={},bw,by;if(bF){bC=bz.position();bw=bC.top;by=bC.left}else{bw=parseFloat(e)||0;by=parseFloat(bE)||0}if(b.isFunction(bG)){bG=bG.call(bx,bA,bv)}if(bG.top!=null){bD.top=(bG.top-bv.top)+bw}if(bG.left!=null){bD.left=(bG.left-bv.left)+by}if("using" in bG){bG.using.call(bx,bD)}else{bz.css(bD)}}};b.fn.extend({position:function(){if(!this[0]){return null}var bw=this[0],bv=this.offsetParent(),bx=this.offset(),e=ad.test(bv[0].nodeName)?{top:0,left:0}:bv.offset();bx.top-=parseFloat(b.css(bw,"marginTop"))||0;bx.left-=parseFloat(b.css(bw,"marginLeft"))||0;e.top+=parseFloat(b.css(bv[0],"borderTopWidth"))||0;e.left+=parseFloat(b.css(bv[0],"borderLeftWidth"))||0;return{top:bx.top-e.top,left:bx.left-e.left}},offsetParent:function(){return this.map(function(){var e=this.offsetParent||av.body;while(e&&(!ad.test(e.nodeName)&&b.css(e,"position")==="static")){e=e.offsetParent}return e})}});b.each(["Left","Top"],function(bv,e){var bw="scroll"+e;b.fn[bw]=function(bz){var bx,by;if(bz===L){bx=this[0];if(!bx){return null}by=aK(bx);return by?("pageXOffset" in by)?by[bv?"pageYOffset":"pageXOffset"]:b.support.boxModel&&by.document.documentElement[bw]||by.document.body[bw]:bx[bw]}return this.each(function(){by=aK(this);if(by){by.scrollTo(!bv?bz:b(by).scrollLeft(),bv?bz:b(by).scrollTop())}else{this[bw]=bz}})}});function aK(e){return b.isWindow(e)?e:e.nodeType===9?e.defaultView||e.parentWindow:false}b.each(["Height","Width"],function(bv,e){var bw=e.toLowerCase();b.fn["inner"+e]=function(){var bx=this[0];return bx?bx.style?parseFloat(b.css(bx,bw,"padding")):this[bw]():null};b.fn["outer"+e]=function(by){var bx=this[0];return bx?bx.style?parseFloat(b.css(bx,bw,by?"margin":"border")):this[bw]():null};b.fn[bw]=function(bz){var bA=this[0];if(!bA){return bz==null?null:this}if(b.isFunction(bz)){return this.each(function(bE){var bD=b(this);bD[bw](bz.call(this,bE,bD[bw]()))})}if(b.isWindow(bA)){var bB=bA.document.documentElement["client"+e],bx=bA.document.body;return bA.document.compatMode==="CSS1Compat"&&bB||bx&&bx["client"+e]||bB}else{if(bA.nodeType===9){return Math.max(bA.documentElement["client"+e],bA.body["scroll"+e],bA.documentElement["scroll"+e],bA.body["offset"+e],bA.documentElement["offset"+e])}else{if(bz===L){var bC=b.css(bA,bw),by=parseFloat(bC);return b.isNumeric(by)?by:bC}else{return this.css(bw,typeof bz==="string"?bz:bz+"px")}}}}});bb.jQuery=bb.$=b;if(typeof define==="function"&&define.amd&&define.amd.jQuery){define("jquery",[],function(){return b +})}})(window); +/*! + * jQuery UI 1.8.18 + * + * Copyright 2011, AUTHORS.txt (http://jqueryui.com/about) + * Dual licensed under the MIT or GPL Version 2 licenses. + * http://jquery.org/license + * + * http://docs.jquery.com/UI + */ +(function(a,d){a.ui=a.ui||{};if(a.ui.version){return}a.extend(a.ui,{version:"1.8.18",keyCode:{ALT:18,BACKSPACE:8,CAPS_LOCK:20,COMMA:188,COMMAND:91,COMMAND_LEFT:91,COMMAND_RIGHT:93,CONTROL:17,DELETE:46,DOWN:40,END:35,ENTER:13,ESCAPE:27,HOME:36,INSERT:45,LEFT:37,MENU:93,NUMPAD_ADD:107,NUMPAD_DECIMAL:110,NUMPAD_DIVIDE:111,NUMPAD_ENTER:108,NUMPAD_MULTIPLY:106,NUMPAD_SUBTRACT:109,PAGE_DOWN:34,PAGE_UP:33,PERIOD:190,RIGHT:39,SHIFT:16,SPACE:32,TAB:9,UP:38,WINDOWS:91}});a.fn.extend({propAttr:a.fn.prop||a.fn.attr,_focus:a.fn.focus,focus:function(e,f){return typeof e==="number"?this.each(function(){var g=this;setTimeout(function(){a(g).focus();if(f){f.call(g)}},e)}):this._focus.apply(this,arguments)},scrollParent:function(){var e;if((a.browser.msie&&(/(static|relative)/).test(this.css("position")))||(/absolute/).test(this.css("position"))){e=this.parents().filter(function(){return(/(relative|absolute|fixed)/).test(a.curCSS(this,"position",1))&&(/(auto|scroll)/).test(a.curCSS(this,"overflow",1)+a.curCSS(this,"overflow-y",1)+a.curCSS(this,"overflow-x",1))}).eq(0)}else{e=this.parents().filter(function(){return(/(auto|scroll)/).test(a.curCSS(this,"overflow",1)+a.curCSS(this,"overflow-y",1)+a.curCSS(this,"overflow-x",1))}).eq(0)}return(/fixed/).test(this.css("position"))||!e.length?a(document):e},zIndex:function(h){if(h!==d){return this.css("zIndex",h)}if(this.length){var f=a(this[0]),e,g;while(f.length&&f[0]!==document){e=f.css("position");if(e==="absolute"||e==="relative"||e==="fixed"){g=parseInt(f.css("zIndex"),10);if(!isNaN(g)&&g!==0){return g}}f=f.parent()}}return 0},disableSelection:function(){return this.bind((a.support.selectstart?"selectstart":"mousedown")+".ui-disableSelection",function(e){e.preventDefault()})},enableSelection:function(){return this.unbind(".ui-disableSelection")}});a.each(["Width","Height"],function(g,e){var f=e==="Width"?["Left","Right"]:["Top","Bottom"],h=e.toLowerCase(),k={innerWidth:a.fn.innerWidth,innerHeight:a.fn.innerHeight,outerWidth:a.fn.outerWidth,outerHeight:a.fn.outerHeight};function j(m,l,i,n){a.each(f,function(){l-=parseFloat(a.curCSS(m,"padding"+this,true))||0;if(i){l-=parseFloat(a.curCSS(m,"border"+this+"Width",true))||0}if(n){l-=parseFloat(a.curCSS(m,"margin"+this,true))||0}});return l}a.fn["inner"+e]=function(i){if(i===d){return k["inner"+e].call(this)}return this.each(function(){a(this).css(h,j(this,i)+"px")})};a.fn["outer"+e]=function(i,l){if(typeof i!=="number"){return k["outer"+e].call(this,i)}return this.each(function(){a(this).css(h,j(this,i,true,l)+"px")})}});function c(g,e){var j=g.nodeName.toLowerCase();if("area"===j){var i=g.parentNode,h=i.name,f;if(!g.href||!h||i.nodeName.toLowerCase()!=="map"){return false}f=a("img[usemap=#"+h+"]")[0];return !!f&&b(f)}return(/input|select|textarea|button|object/.test(j)?!g.disabled:"a"==j?g.href||e:e)&&b(g)}function b(e){return !a(e).parents().andSelf().filter(function(){return a.curCSS(this,"visibility")==="hidden"||a.expr.filters.hidden(this)}).length}a.extend(a.expr[":"],{data:function(g,f,e){return !!a.data(g,e[3])},focusable:function(e){return c(e,!isNaN(a.attr(e,"tabindex")))},tabbable:function(g){var e=a.attr(g,"tabindex"),f=isNaN(e);return(f||e>=0)&&c(g,!f)}});a(function(){var e=document.body,f=e.appendChild(f=document.createElement("div"));f.offsetHeight;a.extend(f.style,{minHeight:"100px",height:"auto",padding:0,borderWidth:0});a.support.minHeight=f.offsetHeight===100;a.support.selectstart="onselectstart" in f;e.removeChild(f).style.display="none"});a.extend(a.ui,{plugin:{add:function(f,g,j){var h=a.ui[f].prototype;for(var e in j){h.plugins[e]=h.plugins[e]||[];h.plugins[e].push([g,j[e]])}},call:function(e,g,f){var j=e.plugins[g];if(!j||!e.element[0].parentNode){return}for(var h=0;h0){return true}h[e]=1;g=(h[e]>0);h[e]=0;return g},isOverAxis:function(f,e,g){return(f>e)&&(f<(e+g))},isOver:function(j,f,i,h,e,g){return a.ui.isOverAxis(j,i,e)&&a.ui.isOverAxis(f,h,g)}})})(jQuery);/*! + * jQuery UI Widget 1.8.18 + * + * Copyright 2011, AUTHORS.txt (http://jqueryui.com/about) + * Dual licensed under the MIT or GPL Version 2 licenses. + * http://jquery.org/license + * + * http://docs.jquery.com/UI/Widget + */ +(function(b,d){if(b.cleanData){var c=b.cleanData;b.cleanData=function(f){for(var g=0,h;(h=f[g])!=null;g++){try{b(h).triggerHandler("remove")}catch(j){}}c(f)}}else{var a=b.fn.remove;b.fn.remove=function(e,f){return this.each(function(){if(!f){if(!e||b.filter(e,[this]).length){b("*",this).add([this]).each(function(){try{b(this).triggerHandler("remove")}catch(g){}})}}return a.call(b(this),e,f)})}}b.widget=function(f,h,e){var g=f.split(".")[0],j;f=f.split(".")[1];j=g+"-"+f;if(!e){e=h;h=b.Widget}b.expr[":"][j]=function(k){return !!b.data(k,f)};b[g]=b[g]||{};b[g][f]=function(k,l){if(arguments.length){this._createWidget(k,l)}};var i=new h();i.options=b.extend(true,{},i.options);b[g][f].prototype=b.extend(true,i,{namespace:g,widgetName:f,widgetEventPrefix:b[g][f].prototype.widgetEventPrefix||f,widgetBaseClass:j},e);b.widget.bridge(f,b[g][f])};b.widget.bridge=function(f,e){b.fn[f]=function(i){var g=typeof i==="string",h=Array.prototype.slice.call(arguments,1),j=this;i=!g&&h.length?b.extend.apply(null,[true,i].concat(h)):i;if(g&&i.charAt(0)==="_"){return j}if(g){this.each(function(){var k=b.data(this,f),l=k&&b.isFunction(k[i])?k[i].apply(k,h):k;if(l!==k&&l!==d){j=l;return false}})}else{this.each(function(){var k=b.data(this,f);if(k){k.option(i||{})._init()}else{b.data(this,f,new e(i,this))}})}return j}};b.Widget=function(e,f){if(arguments.length){this._createWidget(e,f)}};b.Widget.prototype={widgetName:"widget",widgetEventPrefix:"",options:{disabled:false},_createWidget:function(f,g){b.data(g,this.widgetName,this);this.element=b(g);this.options=b.extend(true,{},this.options,this._getCreateOptions(),f);var e=this;this.element.bind("remove."+this.widgetName,function(){e.destroy()});this._create();this._trigger("create");this._init()},_getCreateOptions:function(){return b.metadata&&b.metadata.get(this.element[0])[this.widgetName]},_create:function(){},_init:function(){},destroy:function(){this.element.unbind("."+this.widgetName).removeData(this.widgetName);this.widget().unbind("."+this.widgetName).removeAttr("aria-disabled").removeClass(this.widgetBaseClass+"-disabled ui-state-disabled")},widget:function(){return this.element},option:function(f,g){var e=f;if(arguments.length===0){return b.extend({},this.options)}if(typeof f==="string"){if(g===d){return this.options[f]}e={};e[f]=g}this._setOptions(e);return this},_setOptions:function(f){var e=this;b.each(f,function(g,h){e._setOption(g,h)});return this},_setOption:function(e,f){this.options[e]=f;if(e==="disabled"){this.widget()[f?"addClass":"removeClass"](this.widgetBaseClass+"-disabled ui-state-disabled").attr("aria-disabled",f)}return this},enable:function(){return this._setOption("disabled",false)},disable:function(){return this._setOption("disabled",true)},_trigger:function(e,f,g){var j,i,h=this.options[e];g=g||{};f=b.Event(f);f.type=(e===this.widgetEventPrefix?e:this.widgetEventPrefix+e).toLowerCase();f.target=this.element[0];i=f.originalEvent;if(i){for(j in i){if(!(j in f)){f[j]=i[j]}}}this.element.trigger(f,g);return !(b.isFunction(h)&&h.call(this.element[0],f,g)===false||f.isDefaultPrevented())}}})(jQuery);/*! + * jQuery UI Mouse 1.8.18 + * + * Copyright 2011, AUTHORS.txt (http://jqueryui.com/about) + * Dual licensed under the MIT or GPL Version 2 licenses. + * http://jquery.org/license + * + * http://docs.jquery.com/UI/Mouse + * + * Depends: + * jquery.ui.widget.js + */ +(function(b,c){var a=false;b(document).mouseup(function(d){a=false});b.widget("ui.mouse",{options:{cancel:":input,option",distance:1,delay:0},_mouseInit:function(){var d=this;this.element.bind("mousedown."+this.widgetName,function(e){return d._mouseDown(e)}).bind("click."+this.widgetName,function(e){if(true===b.data(e.target,d.widgetName+".preventClickEvent")){b.removeData(e.target,d.widgetName+".preventClickEvent");e.stopImmediatePropagation();return false}});this.started=false},_mouseDestroy:function(){this.element.unbind("."+this.widgetName)},_mouseDown:function(f){if(a){return}(this._mouseStarted&&this._mouseUp(f));this._mouseDownEvent=f;var e=this,g=(f.which==1),d=(typeof this.options.cancel=="string"&&f.target.nodeName?b(f.target).closest(this.options.cancel).length:false);if(!g||d||!this._mouseCapture(f)){return true}this.mouseDelayMet=!this.options.delay;if(!this.mouseDelayMet){this._mouseDelayTimer=setTimeout(function(){e.mouseDelayMet=true},this.options.delay)}if(this._mouseDistanceMet(f)&&this._mouseDelayMet(f)){this._mouseStarted=(this._mouseStart(f)!==false);if(!this._mouseStarted){f.preventDefault();return true}}if(true===b.data(f.target,this.widgetName+".preventClickEvent")){b.removeData(f.target,this.widgetName+".preventClickEvent")}this._mouseMoveDelegate=function(h){return e._mouseMove(h)};this._mouseUpDelegate=function(h){return e._mouseUp(h)};b(document).bind("mousemove."+this.widgetName,this._mouseMoveDelegate).bind("mouseup."+this.widgetName,this._mouseUpDelegate);f.preventDefault();a=true;return true},_mouseMove:function(d){if(b.browser.msie&&!(document.documentMode>=9)&&!d.button){return this._mouseUp(d)}if(this._mouseStarted){this._mouseDrag(d);return d.preventDefault()}if(this._mouseDistanceMet(d)&&this._mouseDelayMet(d)){this._mouseStarted=(this._mouseStart(this._mouseDownEvent,d)!==false);(this._mouseStarted?this._mouseDrag(d):this._mouseUp(d))}return !this._mouseStarted},_mouseUp:function(d){b(document).unbind("mousemove."+this.widgetName,this._mouseMoveDelegate).unbind("mouseup."+this.widgetName,this._mouseUpDelegate);if(this._mouseStarted){this._mouseStarted=false;if(d.target==this._mouseDownEvent.target){b.data(d.target,this.widgetName+".preventClickEvent",true)}this._mouseStop(d)}return false},_mouseDistanceMet:function(d){return(Math.max(Math.abs(this._mouseDownEvent.pageX-d.pageX),Math.abs(this._mouseDownEvent.pageY-d.pageY))>=this.options.distance)},_mouseDelayMet:function(d){return this.mouseDelayMet},_mouseStart:function(d){},_mouseDrag:function(d){},_mouseStop:function(d){},_mouseCapture:function(d){return true}})})(jQuery);(function(c,d){c.widget("ui.resizable",c.ui.mouse,{widgetEventPrefix:"resize",options:{alsoResize:false,animate:false,animateDuration:"slow",animateEasing:"swing",aspectRatio:false,autoHide:false,containment:false,ghost:false,grid:false,handles:"e,s,se",helper:false,maxHeight:null,maxWidth:null,minHeight:10,minWidth:10,zIndex:1000},_create:function(){var f=this,k=this.options;this.element.addClass("ui-resizable");c.extend(this,{_aspectRatio:!!(k.aspectRatio),aspectRatio:k.aspectRatio,originalElement:this.element,_proportionallyResizeElements:[],_helper:k.helper||k.ghost||k.animate?k.helper||"ui-resizable-helper":null});if(this.element[0].nodeName.match(/canvas|textarea|input|select|button|img/i)){this.element.wrap(c('
').css({position:this.element.css("position"),width:this.element.outerWidth(),height:this.element.outerHeight(),top:this.element.css("top"),left:this.element.css("left")}));this.element=this.element.parent().data("resizable",this.element.data("resizable"));this.elementIsWrapper=true;this.element.css({marginLeft:this.originalElement.css("marginLeft"),marginTop:this.originalElement.css("marginTop"),marginRight:this.originalElement.css("marginRight"),marginBottom:this.originalElement.css("marginBottom")});this.originalElement.css({marginLeft:0,marginTop:0,marginRight:0,marginBottom:0});this.originalResizeStyle=this.originalElement.css("resize");this.originalElement.css("resize","none");this._proportionallyResizeElements.push(this.originalElement.css({position:"static",zoom:1,display:"block"}));this.originalElement.css({margin:this.originalElement.css("margin")});this._proportionallyResize()}this.handles=k.handles||(!c(".ui-resizable-handle",this.element).length?"e,s,se":{n:".ui-resizable-n",e:".ui-resizable-e",s:".ui-resizable-s",w:".ui-resizable-w",se:".ui-resizable-se",sw:".ui-resizable-sw",ne:".ui-resizable-ne",nw:".ui-resizable-nw"});if(this.handles.constructor==String){if(this.handles=="all"){this.handles="n,e,s,w,se,sw,ne,nw"}var l=this.handles.split(",");this.handles={};for(var g=0;g
');if(/sw|se|ne|nw/.test(j)){h.css({zIndex:++k.zIndex})}if("se"==j){h.addClass("ui-icon ui-icon-gripsmall-diagonal-se")}this.handles[j]=".ui-resizable-"+j;this.element.append(h)}}this._renderAxis=function(q){q=q||this.element;for(var n in this.handles){if(this.handles[n].constructor==String){this.handles[n]=c(this.handles[n],this.element).show()}if(this.elementIsWrapper&&this.originalElement[0].nodeName.match(/textarea|input|select|button/i)){var o=c(this.handles[n],this.element),p=0;p=/sw|ne|nw|se|n|s/.test(n)?o.outerHeight():o.outerWidth();var m=["padding",/ne|nw|n/.test(n)?"Top":/se|sw|s/.test(n)?"Bottom":/^e$/.test(n)?"Right":"Left"].join("");q.css(m,p);this._proportionallyResize()}if(!c(this.handles[n]).length){continue}}};this._renderAxis(this.element);this._handles=c(".ui-resizable-handle",this.element).disableSelection();this._handles.mouseover(function(){if(!f.resizing){if(this.className){var i=this.className.match(/ui-resizable-(se|sw|ne|nw|n|e|s|w)/i)}f.axis=i&&i[1]?i[1]:"se"}});if(k.autoHide){this._handles.hide();c(this.element).addClass("ui-resizable-autohide").hover(function(){if(k.disabled){return}c(this).removeClass("ui-resizable-autohide");f._handles.show()},function(){if(k.disabled){return}if(!f.resizing){c(this).addClass("ui-resizable-autohide");f._handles.hide()}})}this._mouseInit()},destroy:function(){this._mouseDestroy();var e=function(g){c(g).removeClass("ui-resizable ui-resizable-disabled ui-resizable-resizing").removeData("resizable").unbind(".resizable").find(".ui-resizable-handle").remove()};if(this.elementIsWrapper){e(this.element);var f=this.element;f.after(this.originalElement.css({position:f.css("position"),width:f.outerWidth(),height:f.outerHeight(),top:f.css("top"),left:f.css("left")})).remove()}this.originalElement.css("resize",this.originalResizeStyle);e(this.originalElement);return this},_mouseCapture:function(f){var g=false;for(var e in this.handles){if(c(this.handles[e])[0]==f.target){g=true}}return !this.options.disabled&&g},_mouseStart:function(g){var j=this.options,f=this.element.position(),e=this.element;this.resizing=true;this.documentScroll={top:c(document).scrollTop(),left:c(document).scrollLeft()};if(e.is(".ui-draggable")||(/absolute/).test(e.css("position"))){e.css({position:"absolute",top:f.top,left:f.left})}this._renderProxy();var k=b(this.helper.css("left")),h=b(this.helper.css("top"));if(j.containment){k+=c(j.containment).scrollLeft()||0;h+=c(j.containment).scrollTop()||0}this.offset=this.helper.offset();this.position={left:k,top:h};this.size=this._helper?{width:e.outerWidth(),height:e.outerHeight()}:{width:e.width(),height:e.height()};this.originalSize=this._helper?{width:e.outerWidth(),height:e.outerHeight()}:{width:e.width(),height:e.height()};this.originalPosition={left:k,top:h};this.sizeDiff={width:e.outerWidth()-e.width(),height:e.outerHeight()-e.height()};this.originalMousePosition={left:g.pageX,top:g.pageY};this.aspectRatio=(typeof j.aspectRatio=="number")?j.aspectRatio:((this.originalSize.width/this.originalSize.height)||1);var i=c(".ui-resizable-"+this.axis).css("cursor");c("body").css("cursor",i=="auto"?this.axis+"-resize":i);e.addClass("ui-resizable-resizing");this._propagate("start",g);return true},_mouseDrag:function(e){var h=this.helper,g=this.options,m={},q=this,j=this.originalMousePosition,n=this.axis;var r=(e.pageX-j.left)||0,p=(e.pageY-j.top)||0;var i=this._change[n];if(!i){return false}var l=i.apply(this,[e,r,p]),k=c.browser.msie&&c.browser.version<7,f=this.sizeDiff;this._updateVirtualBoundaries(e.shiftKey);if(this._aspectRatio||e.shiftKey){l=this._updateRatio(l,e)}l=this._respectSize(l,e);this._propagate("resize",e);h.css({top:this.position.top+"px",left:this.position.left+"px",width:this.size.width+"px",height:this.size.height+"px"});if(!this._helper&&this._proportionallyResizeElements.length){this._proportionallyResize()}this._updateCache(l);this._trigger("resize",e,this.ui());return false},_mouseStop:function(h){this.resizing=false;var i=this.options,m=this;if(this._helper){var g=this._proportionallyResizeElements,e=g.length&&(/textarea/i).test(g[0].nodeName),f=e&&c.ui.hasScroll(g[0],"left")?0:m.sizeDiff.height,k=e?0:m.sizeDiff.width;var n={width:(m.helper.width()-k),height:(m.helper.height()-f)},j=(parseInt(m.element.css("left"),10)+(m.position.left-m.originalPosition.left))||null,l=(parseInt(m.element.css("top"),10)+(m.position.top-m.originalPosition.top))||null;if(!i.animate){this.element.css(c.extend(n,{top:l,left:j}))}m.helper.height(m.size.height);m.helper.width(m.size.width);if(this._helper&&!i.animate){this._proportionallyResize()}}c("body").css("cursor","auto");this.element.removeClass("ui-resizable-resizing");this._propagate("stop",h);if(this._helper){this.helper.remove()}return false},_updateVirtualBoundaries:function(g){var j=this.options,i,h,f,k,e;e={minWidth:a(j.minWidth)?j.minWidth:0,maxWidth:a(j.maxWidth)?j.maxWidth:Infinity,minHeight:a(j.minHeight)?j.minHeight:0,maxHeight:a(j.maxHeight)?j.maxHeight:Infinity};if(this._aspectRatio||g){i=e.minHeight*this.aspectRatio;f=e.minWidth/this.aspectRatio;h=e.maxHeight*this.aspectRatio;k=e.maxWidth/this.aspectRatio;if(i>e.minWidth){e.minWidth=i}if(f>e.minHeight){e.minHeight=f}if(hl.width),s=a(l.height)&&i.minHeight&&(i.minHeight>l.height);if(h){l.width=i.minWidth}if(s){l.height=i.minHeight}if(t){l.width=i.maxWidth}if(m){l.height=i.maxHeight}var f=this.originalPosition.left+this.originalSize.width,p=this.position.top+this.size.height;var k=/sw|nw|w/.test(q),e=/nw|ne|n/.test(q);if(h&&k){l.left=f-i.minWidth}if(t&&k){l.left=f-i.maxWidth}if(s&&e){l.top=p-i.minHeight}if(m&&e){l.top=p-i.maxHeight}var n=!l.width&&!l.height;if(n&&!l.left&&l.top){l.top=null}else{if(n&&!l.top&&l.left){l.left=null}}return l},_proportionallyResize:function(){var k=this.options;if(!this._proportionallyResizeElements.length){return}var g=this.helper||this.element;for(var f=0;f');var e=c.browser.msie&&c.browser.version<7,g=(e?1:0),h=(e?2:-1);this.helper.addClass(this._helper).css({width:this.element.outerWidth()+h,height:this.element.outerHeight()+h,position:"absolute",left:this.elementOffset.left-g+"px",top:this.elementOffset.top-g+"px",zIndex:++i.zIndex});this.helper.appendTo("body").disableSelection()}else{this.helper=this.element}},_change:{e:function(g,f,e){return{width:this.originalSize.width+f}},w:function(h,f,e){var j=this.options,g=this.originalSize,i=this.originalPosition;return{left:i.left+f,width:g.width-f}},n:function(h,f,e){var j=this.options,g=this.originalSize,i=this.originalPosition;return{top:i.top+e,height:g.height-e}},s:function(g,f,e){return{height:this.originalSize.height+e}},se:function(g,f,e){return c.extend(this._change.s.apply(this,arguments),this._change.e.apply(this,[g,f,e]))},sw:function(g,f,e){return c.extend(this._change.s.apply(this,arguments),this._change.w.apply(this,[g,f,e]))},ne:function(g,f,e){return c.extend(this._change.n.apply(this,arguments),this._change.e.apply(this,[g,f,e]))},nw:function(g,f,e){return c.extend(this._change.n.apply(this,arguments),this._change.w.apply(this,[g,f,e]))}},_propagate:function(f,e){c.ui.plugin.call(this,f,[e,this.ui()]);(f!="resize"&&this._trigger(f,e,this.ui()))},plugins:{},ui:function(){return{originalElement:this.originalElement,element:this.element,helper:this.helper,position:this.position,size:this.size,originalSize:this.originalSize,originalPosition:this.originalPosition}}});c.extend(c.ui.resizable,{version:"1.8.18"});c.ui.plugin.add("resizable","alsoResize",{start:function(f,g){var e=c(this).data("resizable"),i=e.options;var h=function(j){c(j).each(function(){var k=c(this);k.data("resizable-alsoresize",{width:parseInt(k.width(),10),height:parseInt(k.height(),10),left:parseInt(k.css("left"),10),top:parseInt(k.css("top"),10)})})};if(typeof(i.alsoResize)=="object"&&!i.alsoResize.parentNode){if(i.alsoResize.length){i.alsoResize=i.alsoResize[0];h(i.alsoResize)}else{c.each(i.alsoResize,function(j){h(j)})}}else{h(i.alsoResize)}},resize:function(g,i){var f=c(this).data("resizable"),j=f.options,h=f.originalSize,l=f.originalPosition;var k={height:(f.size.height-h.height)||0,width:(f.size.width-h.width)||0,top:(f.position.top-l.top)||0,left:(f.position.left-l.left)||0},e=function(m,n){c(m).each(function(){var q=c(this),r=c(this).data("resizable-alsoresize"),p={},o=n&&n.length?n:q.parents(i.originalElement[0]).length?["width","height"]:["width","height","top","left"];c.each(o,function(s,u){var t=(r[u]||0)+(k[u]||0);if(t&&t>=0){p[u]=t||null}});q.css(p)})};if(typeof(j.alsoResize)=="object"&&!j.alsoResize.nodeType){c.each(j.alsoResize,function(m,n){e(m,n)})}else{e(j.alsoResize)}},stop:function(e,f){c(this).removeData("resizable-alsoresize")}});c.ui.plugin.add("resizable","animate",{stop:function(i,n){var p=c(this).data("resizable"),j=p.options;var h=p._proportionallyResizeElements,e=h.length&&(/textarea/i).test(h[0].nodeName),f=e&&c.ui.hasScroll(h[0],"left")?0:p.sizeDiff.height,l=e?0:p.sizeDiff.width;var g={width:(p.size.width-l),height:(p.size.height-f)},k=(parseInt(p.element.css("left"),10)+(p.position.left-p.originalPosition.left))||null,m=(parseInt(p.element.css("top"),10)+(p.position.top-p.originalPosition.top))||null; +p.element.animate(c.extend(g,m&&k?{top:m,left:k}:{}),{duration:j.animateDuration,easing:j.animateEasing,step:function(){var o={width:parseInt(p.element.css("width"),10),height:parseInt(p.element.css("height"),10),top:parseInt(p.element.css("top"),10),left:parseInt(p.element.css("left"),10)};if(h&&h.length){c(h[0]).css({width:o.width,height:o.height})}p._updateCache(o);p._propagate("resize",i)}})}});c.ui.plugin.add("resizable","containment",{start:function(f,r){var t=c(this).data("resizable"),j=t.options,l=t.element;var g=j.containment,k=(g instanceof c)?g.get(0):(/parent/.test(g))?l.parent().get(0):g;if(!k){return}t.containerElement=c(k);if(/document/.test(g)||g==document){t.containerOffset={left:0,top:0};t.containerPosition={left:0,top:0};t.parentData={element:c(document),left:0,top:0,width:c(document).width(),height:c(document).height()||document.body.parentNode.scrollHeight}}else{var n=c(k),i=[];c(["Top","Right","Left","Bottom"]).each(function(p,o){i[p]=b(n.css("padding"+o))});t.containerOffset=n.offset();t.containerPosition=n.position();t.containerSize={height:(n.innerHeight()-i[3]),width:(n.innerWidth()-i[1])};var q=t.containerOffset,e=t.containerSize.height,m=t.containerSize.width,h=(c.ui.hasScroll(k,"left")?k.scrollWidth:m),s=(c.ui.hasScroll(k)?k.scrollHeight:e);t.parentData={element:k,left:q.left,top:q.top,width:h,height:s}}},resize:function(g,q){var t=c(this).data("resizable"),i=t.options,f=t.containerSize,p=t.containerOffset,m=t.size,n=t.position,r=t._aspectRatio||g.shiftKey,e={top:0,left:0},h=t.containerElement;if(h[0]!=document&&(/static/).test(h.css("position"))){e=p}if(n.left<(t._helper?p.left:0)){t.size.width=t.size.width+(t._helper?(t.position.left-p.left):(t.position.left-e.left));if(r){t.size.height=t.size.width/i.aspectRatio}t.position.left=i.helper?p.left:0}if(n.top<(t._helper?p.top:0)){t.size.height=t.size.height+(t._helper?(t.position.top-p.top):t.position.top);if(r){t.size.width=t.size.height*i.aspectRatio}t.position.top=t._helper?p.top:0}t.offset.left=t.parentData.left+t.position.left;t.offset.top=t.parentData.top+t.position.top;var l=Math.abs((t._helper?t.offset.left-e.left:(t.offset.left-e.left))+t.sizeDiff.width),s=Math.abs((t._helper?t.offset.top-e.top:(t.offset.top-p.top))+t.sizeDiff.height);var k=t.containerElement.get(0)==t.element.parent().get(0),j=/relative|absolute/.test(t.containerElement.css("position"));if(k&&j){l-=t.parentData.left}if(l+t.size.width>=t.parentData.width){t.size.width=t.parentData.width-l;if(r){t.size.height=t.size.width/t.aspectRatio}}if(s+t.size.height>=t.parentData.height){t.size.height=t.parentData.height-s;if(r){t.size.width=t.size.height*t.aspectRatio}}},stop:function(f,n){var q=c(this).data("resizable"),g=q.options,l=q.position,m=q.containerOffset,e=q.containerPosition,i=q.containerElement;var j=c(q.helper),r=j.offset(),p=j.outerWidth()-q.sizeDiff.width,k=j.outerHeight()-q.sizeDiff.height;if(q._helper&&!g.animate&&(/relative/).test(i.css("position"))){c(this).css({left:r.left-e.left-m.left,width:p,height:k})}if(q._helper&&!g.animate&&(/static/).test(i.css("position"))){c(this).css({left:r.left-e.left-m.left,width:p,height:k})}}});c.ui.plugin.add("resizable","ghost",{start:function(g,h){var e=c(this).data("resizable"),i=e.options,f=e.size;e.ghost=e.originalElement.clone();e.ghost.css({opacity:0.25,display:"block",position:"relative",height:f.height,width:f.width,margin:0,left:0,top:0}).addClass("ui-resizable-ghost").addClass(typeof i.ghost=="string"?i.ghost:"");e.ghost.appendTo(e.helper)},resize:function(f,g){var e=c(this).data("resizable"),h=e.options;if(e.ghost){e.ghost.css({position:"relative",height:e.size.height,width:e.size.width})}},stop:function(f,g){var e=c(this).data("resizable"),h=e.options;if(e.ghost&&e.helper){e.helper.get(0).removeChild(e.ghost.get(0))}}});c.ui.plugin.add("resizable","grid",{resize:function(e,m){var p=c(this).data("resizable"),h=p.options,k=p.size,i=p.originalSize,j=p.originalPosition,n=p.axis,l=h._aspectRatio||e.shiftKey;h.grid=typeof h.grid=="number"?[h.grid,h.grid]:h.grid;var g=Math.round((k.width-i.width)/(h.grid[0]||1))*(h.grid[0]||1),f=Math.round((k.height-i.height)/(h.grid[1]||1))*(h.grid[1]||1);if(/^(se|s|e)$/.test(n)){p.size.width=i.width+g;p.size.height=i.height+f}else{if(/^(ne)$/.test(n)){p.size.width=i.width+g;p.size.height=i.height+f;p.position.top=j.top-f}else{if(/^(sw)$/.test(n)){p.size.width=i.width+g;p.size.height=i.height+f;p.position.left=j.left-g}else{p.size.width=i.width+g;p.size.height=i.height+f;p.position.top=j.top-f;p.position.left=j.left-g}}}}});var b=function(e){return parseInt(e,10)||0};var a=function(e){return !isNaN(parseInt(e,10))}})(jQuery);/*! + * jQuery hashchange event - v1.3 - 7/21/2010 + * http://benalman.com/projects/jquery-hashchange-plugin/ + * + * Copyright (c) 2010 "Cowboy" Ben Alman + * Dual licensed under the MIT and GPL licenses. + * http://benalman.com/about/license/ + */ +(function($,e,b){var c="hashchange",h=document,f,g=$.event.special,i=h.documentMode,d="on"+c in e&&(i===b||i>7);function a(j){j=j||location.href;return"#"+j.replace(/^[^#]*#?(.*)$/,"$1")}$.fn[c]=function(j){return j?this.bind(c,j):this.trigger(c)};$.fn[c].delay=50;g[c]=$.extend(g[c],{setup:function(){if(d){return false}$(f.start)},teardown:function(){if(d){return false}$(f.stop)}});f=(function(){var j={},p,m=a(),k=function(q){return q},l=k,o=k;j.start=function(){p||n()};j.stop=function(){p&&clearTimeout(p);p=b};function n(){var r=a(),q=o(m);if(r!==m){l(m=r,q);$(e).trigger(c)}else{if(q!==m){location.href=location.href.replace(/#.*/,"")+q}}p=setTimeout(n,$.fn[c].delay)}$.browser.msie&&!d&&(function(){var q,r;j.start=function(){if(!q){r=$.fn[c].src;r=r&&r+a();q=$(' + + +
+
+
TeamSpeak3 Namespace Reference
+
+
+

Detailed Description

+
Version
1.1.23
+
Author
Sven 'ScP' Paulsen
+ +
+ + + + + diff --git a/lib/docs/html/nav_f.png b/lib/docs/html/nav_f.png new file mode 100644 index 0000000000000000000000000000000000000000..b1de1cf0f54ce589bf9ed19efac639195f395b56 GIT binary patch literal 163 zcmeAS@N?(olHy`uVBq!ia0vp^j6iI`!2~2XGqLUlQdyoZjv*C{Z|7R`9WoGL%{}k? za#2H)O!eDX>*a2X7B+UY^|x3Y5?O5ip6^}J-i6x&a|249OB8Y^M5~`pnCd5_Jk?Lf z?aZ-Fub3ZCnezDDPQ&*{j%^9yE9N}6b3ezu{X74ENdLUL{^p_U-}&xzDLCf)UseLz O%HZkh=d#Wzp$PzUK0yBf literal 0 HcmV?d00001 diff --git a/lib/docs/html/nav_g.png b/lib/docs/html/nav_g.png new file mode 100644 index 0000000000000000000000000000000000000000..2093a237a94f6c83e19ec6e5fd42f7ddabdafa81 GIT binary patch literal 95 zcmeAS@N?(olHy`uVBq!ia0vp^j6lrB!3HFm1ilyoDK$?Q$B+ufw|5PB85lU25BhtE tr?otc=hd~V+ws&_A@j8Fiv!K s!{zNP8kaxB93wOH0M(1}%^lPgg&ebxsLQ0P$-YMgRZ+ literal 0 HcmV?d00001 diff --git a/lib/docs/html/navtree.css b/lib/docs/html/navtree.css new file mode 100644 index 0000000..8b86d81 --- /dev/null +++ b/lib/docs/html/navtree.css @@ -0,0 +1,143 @@ +#nav-tree .children_ul { + margin:0; + padding:4px; +} + +#nav-tree ul { + list-style:none outside none; + margin:0px; + padding:0px; +} + +#nav-tree li { + white-space:nowrap; + margin:0px; + padding:0px; +} + +#nav-tree .plus { + margin:0px; +} + +#nav-tree .selected { + background-image: url('tab_a.png'); + background-repeat:repeat-x; + color: #fff; + text-shadow: 0px 1px 1px rgba(0, 0, 0, 1.0); +} + +#nav-tree img { + margin:0px; + padding:0px; + border:0px; + vertical-align: middle; +} + +#nav-tree a { + text-decoration:none; + padding:0px; + margin:0px; + outline:none; +} + +#nav-tree .label { + margin:0px; + padding:0px; + font: 12px 'Lucida Grande',Geneva,Helvetica,Arial,sans-serif; +} + +#nav-tree .label a { + padding:2px; +} + +#nav-tree .selected a { + text-decoration:none; + color:#fff; +} + +#nav-tree .children_ul { + margin:0px; + padding:0px; +} + +#nav-tree .item { + margin:0px; + padding:0px; +} + +#nav-tree { + padding: 0px 0px; + background-color: #FAFAFF; + font-size:14px; + overflow:auto; +} + +#doc-content { + overflow:auto; + display:block; + padding:0px; + margin:0px; + -webkit-overflow-scrolling : touch; /* iOS 5+ */ +} + +#side-nav { + padding:0 6px 0 0; + margin: 0px; + display:block; + position: absolute; + left: 0px; + width: 250px; +} + +.ui-resizable .ui-resizable-handle { + display:block; +} + +.ui-resizable-e { + background:url("ftv2splitbar.png") repeat scroll right center transparent; + cursor:e-resize; + height:100%; + right:0; + top:0; + width:6px; +} + +.ui-resizable-handle { + display:none; + font-size:0.1px; + position:absolute; + z-index:1; +} + +#nav-tree-contents { + margin: 6px 0px 0px 0px; +} + +#nav-tree { + background-image:url('nav_h.png'); + background-repeat:repeat-x; + background-color: #F7F9FC; + -webkit-overflow-scrolling : touch; /* iOS 5+ */ +} + +#nav-sync { + position:absolute; + top:5px; + right:24px; + z-index:0; +} + +#nav-sync img { + opacity:0.3; +} + +#nav-sync img:hover { + opacity:0.9; +} + +@media print +{ + #nav-tree { display: none; } + div.ui-resizable-handle { display: none; position: relative; } +} + diff --git a/lib/docs/html/navtree.js b/lib/docs/html/navtree.js new file mode 100644 index 0000000..a14b147 --- /dev/null +++ b/lib/docs/html/navtree.js @@ -0,0 +1,551 @@ +var NAVTREE = +[ + [ "TeamSpeak 3 PHP Framework", "index.html", [ + [ "API Documentation", "index.html", [ + [ "Introduction", "index.html#welcome_sec", [ + [ "What is the TS3 PHP Framework?", "index.html#welcome1", null ], + [ "Why should I use the TS3 PHP Framework rather than other PHP libraries?", "index.html#welcome2", null ] + ] ], + [ "Requirements", "index.html#sysreqs_sec", null ], + [ "Features", "index.html#feature_sec", null ], + [ "Usage Examples", "index.html#example_sec", [ + [ "1. Kick a single Client from a Virtual Server", "index.html#example1", null ], + [ "2. Kick all Clients from a Virtual Server", "index.html#example2", null ], + [ "3. Print the Nicknames of connected Android Clients", "index.html#example3", null ], + [ "4. Modify the Settings of each Virtual Server", "index.html#example4", null ], + [ "5. Create a Privilege Key for a Server Group", "index.html#example5", null ], + [ "6. Modify the Permissions of Admins on each Virtual Server", "index.html#example6", null ], + [ "7. Create a new Virtual Server", "index.html#example7", null ], + [ "8. Create a hierarchical Channel Stucture", "index.html#example8", null ], + [ "9. Send a Text Message to outdated Clients", "index.html#example9", null ], + [ "10. Check if the Server Instance is Outdated or Blacklisted", "index.html#example10", null ], + [ "11. Create a simple TSViewer for your Website", "index.html#example11", null ], + [ "12. Update all outdated Audio Codecs to their Opus equivalent", "index.html#example12", null ], + [ "13. Display the Avatar of a connected User", "index.html#example13", null ], + [ "14. Create a Simple Bot waiting for Events", "index.html#example14", null ], + [ "15. Handle Errors using Exceptions and Custom Error Messages", "index.html#example15", null ], + [ "16. Save Connection State in Persistent Session Variable", "index.html#example16", null ], + [ "17. Restore Connection State from Persistent Session Variable", "index.html#example17", null ] + ] ] + ] ], + [ "Deprecated List", "deprecated.html", null ], + [ "Classes", null, [ + [ "Class List", "annotated.html", "annotated" ], + [ "Class Hierarchy", "hierarchy.html", "hierarchy" ], + [ "Class Members", "functions.html", [ + [ "All", "functions.html", "functions_dup" ], + [ "Functions", "functions_func.html", "functions_func" ], + [ "Variables", "functions_vars.html", null ] + ] ] + ] ], + [ "Files", null, [ + [ "File List", "files.html", "files" ] + ] ] + ] ] +]; + +var NAVTREEINDEX = +[ +"_adapter_2_abstract_8php.html", +"class_team_speak3___adapter___file_transfer.html#ab1bd002b22a8121e8efa5ab4ccd36fa5", +"class_team_speak3___helper___uri.html#a94c765c6262844caad188417a77adda8", +"class_team_speak3___node___client.html#a63fb203f511e99625428f70f0525950c", +"class_team_speak3___node___server.html#a6866211126530af14d9c60976960b39f", +"class_team_speak3___viewer___html.html#ac7d4636a787439c500691818edeae752" +]; + +var SYNCONMSG = 'click to disable panel synchronisation'; +var SYNCOFFMSG = 'click to enable panel synchronisation'; +var navTreeSubIndices = new Array(); + +function getData(varName) +{ + var i = varName.lastIndexOf('/'); + var n = i>=0 ? varName.substring(i+1) : varName; + return eval(n.replace(/\-/g,'_')); +} + +function stripPath(uri) +{ + return uri.substring(uri.lastIndexOf('/')+1); +} + +function stripPath2(uri) +{ + var i = uri.lastIndexOf('/'); + var s = uri.substring(i+1); + var m = uri.substring(0,i+1).match(/\/d\w\/d\w\w\/$/); + return m ? uri.substring(i-6) : s; +} + +function localStorageSupported() +{ + try { + return 'localStorage' in window && window['localStorage'] !== null && window.localStorage.getItem; + } + catch(e) { + return false; + } +} + + +function storeLink(link) +{ + if (!$("#nav-sync").hasClass('sync') && localStorageSupported()) { + window.localStorage.setItem('navpath',link); + } +} + +function deleteLink() +{ + if (localStorageSupported()) { + window.localStorage.setItem('navpath',''); + } +} + +function cachedLink() +{ + if (localStorageSupported()) { + return window.localStorage.getItem('navpath'); + } else { + return ''; + } +} + +function getScript(scriptName,func,show) +{ + var head = document.getElementsByTagName("head")[0]; + var script = document.createElement('script'); + script.id = scriptName; + script.type = 'text/javascript'; + script.onload = func; + script.src = scriptName+'.js'; + if ($.browser.msie && $.browser.version<=8) { + // script.onload does not work with older versions of IE + script.onreadystatechange = function() { + if (script.readyState=='complete' || script.readyState=='loaded') { + func(); if (show) showRoot(); + } + } + } + head.appendChild(script); +} + +function createIndent(o,domNode,node,level) +{ + var level=-1; + var n = node; + while (n.parentNode) { level++; n=n.parentNode; } + var imgNode = document.createElement("img"); + imgNode.style.paddingLeft=(16*level).toString()+'px'; + imgNode.width = 16; + imgNode.height = 22; + imgNode.border = 0; + if (node.childrenData) { + node.plus_img = imgNode; + node.expandToggle = document.createElement("a"); + node.expandToggle.href = "javascript:void(0)"; + node.expandToggle.onclick = function() { + if (node.expanded) { + $(node.getChildrenUL()).slideUp("fast"); + node.plus_img.src = node.relpath+"ftv2pnode.png"; + node.expanded = false; + } else { + expandNode(o, node, false, false); + } + } + node.expandToggle.appendChild(imgNode); + domNode.appendChild(node.expandToggle); + imgNode.src = node.relpath+"ftv2pnode.png"; + } else { + imgNode.src = node.relpath+"ftv2node.png"; + domNode.appendChild(imgNode); + } +} + +var animationInProgress = false; + +function gotoAnchor(anchor,aname,updateLocation) +{ + var pos, docContent = $('#doc-content'); + if (anchor.parent().attr('class')=='memItemLeft' || + anchor.parent().attr('class')=='fieldtype' || + anchor.parent().is(':header')) + { + pos = anchor.parent().position().top; + } else if (anchor.position()) { + pos = anchor.position().top; + } + if (pos) { + var dist = Math.abs(Math.min( + pos-docContent.offset().top, + docContent[0].scrollHeight- + docContent.height()-docContent.scrollTop())); + animationInProgress=true; + docContent.animate({ + scrollTop: pos + docContent.scrollTop() - docContent.offset().top + },Math.max(50,Math.min(500,dist)),function(){ + if (updateLocation) window.location.href=aname; + animationInProgress=false; + }); + } +} + +function newNode(o, po, text, link, childrenData, lastNode) +{ + var node = new Object(); + node.children = Array(); + node.childrenData = childrenData; + node.depth = po.depth + 1; + node.relpath = po.relpath; + node.isLast = lastNode; + + node.li = document.createElement("li"); + po.getChildrenUL().appendChild(node.li); + node.parentNode = po; + + node.itemDiv = document.createElement("div"); + node.itemDiv.className = "item"; + + node.labelSpan = document.createElement("span"); + node.labelSpan.className = "label"; + + createIndent(o,node.itemDiv,node,0); + node.itemDiv.appendChild(node.labelSpan); + node.li.appendChild(node.itemDiv); + + var a = document.createElement("a"); + node.labelSpan.appendChild(a); + node.label = document.createTextNode(text); + node.expanded = false; + a.appendChild(node.label); + if (link) { + var url; + if (link.substring(0,1)=='^') { + url = link.substring(1); + link = url; + } else { + url = node.relpath+link; + } + a.className = stripPath(link.replace('#',':')); + if (link.indexOf('#')!=-1) { + var aname = '#'+link.split('#')[1]; + var srcPage = stripPath($(location).attr('pathname')); + var targetPage = stripPath(link.split('#')[0]); + a.href = srcPage!=targetPage ? url : "javascript:void(0)"; + a.onclick = function(){ + storeLink(link); + if (!$(a).parent().parent().hasClass('selected')) + { + $('.item').removeClass('selected'); + $('.item').removeAttr('id'); + $(a).parent().parent().addClass('selected'); + $(a).parent().parent().attr('id','selected'); + } + var anchor = $(aname); + gotoAnchor(anchor,aname,true); + }; + } else { + a.href = url; + a.onclick = function() { storeLink(link); } + } + } else { + if (childrenData != null) + { + a.className = "nolink"; + a.href = "javascript:void(0)"; + a.onclick = node.expandToggle.onclick; + } + } + + node.childrenUL = null; + node.getChildrenUL = function() { + if (!node.childrenUL) { + node.childrenUL = document.createElement("ul"); + node.childrenUL.className = "children_ul"; + node.childrenUL.style.display = "none"; + node.li.appendChild(node.childrenUL); + } + return node.childrenUL; + }; + + return node; +} + +function showRoot() +{ + var headerHeight = $("#top").height(); + var footerHeight = $("#nav-path").height(); + var windowHeight = $(window).height() - headerHeight - footerHeight; + (function (){ // retry until we can scroll to the selected item + try { + var navtree=$('#nav-tree'); + navtree.scrollTo('#selected',0,{offset:-windowHeight/2}); + } catch (err) { + setTimeout(arguments.callee, 0); + } + })(); +} + +function expandNode(o, node, imm, showRoot) +{ + if (node.childrenData && !node.expanded) { + if (typeof(node.childrenData)==='string') { + var varName = node.childrenData; + getScript(node.relpath+varName,function(){ + node.childrenData = getData(varName); + expandNode(o, node, imm, showRoot); + }, showRoot); + } else { + if (!node.childrenVisited) { + getNode(o, node); + } if (imm || ($.browser.msie && $.browser.version>8)) { + // somehow slideDown jumps to the start of tree for IE9 :-( + $(node.getChildrenUL()).show(); + } else { + $(node.getChildrenUL()).slideDown("fast"); + } + if (node.isLast) { + node.plus_img.src = node.relpath+"ftv2mlastnode.png"; + } else { + node.plus_img.src = node.relpath+"ftv2mnode.png"; + } + node.expanded = true; + } + } +} + +function glowEffect(n,duration) +{ + n.addClass('glow').delay(duration).queue(function(next){ + $(this).removeClass('glow');next(); + }); +} + +function highlightAnchor() +{ + var aname = $(location).attr('hash'); + var anchor = $(aname); + if (anchor.parent().attr('class')=='memItemLeft'){ + var rows = $('.memberdecls tr[class$="'+ + window.location.hash.substring(1)+'"]'); + glowEffect(rows.children(),300); // member without details + } else if (anchor.parents().slice(2).prop('tagName')=='TR') { + glowEffect(anchor.parents('div.memitem'),1000); // enum value + } else if (anchor.parent().attr('class')=='fieldtype'){ + glowEffect(anchor.parent().parent(),1000); // struct field + } else if (anchor.parent().is(":header")) { + glowEffect(anchor.parent(),1000); // section header + } else { + glowEffect(anchor.next(),1000); // normal member + } + gotoAnchor(anchor,aname,false); +} + +function selectAndHighlight(hash,n) +{ + var a; + if (hash) { + var link=stripPath($(location).attr('pathname'))+':'+hash.substring(1); + a=$('.item a[class$="'+link+'"]'); + } + if (a && a.length) { + a.parent().parent().addClass('selected'); + a.parent().parent().attr('id','selected'); + highlightAnchor(); + } else if (n) { + $(n.itemDiv).addClass('selected'); + $(n.itemDiv).attr('id','selected'); + } + if ($('#nav-tree-contents .item:first').hasClass('selected')) { + $('#nav-sync').css('top','30px'); + } else { + $('#nav-sync').css('top','5px'); + } + showRoot(); +} + +function showNode(o, node, index, hash) +{ + if (node && node.childrenData) { + if (typeof(node.childrenData)==='string') { + var varName = node.childrenData; + getScript(node.relpath+varName,function(){ + node.childrenData = getData(varName); + showNode(o,node,index,hash); + },true); + } else { + if (!node.childrenVisited) { + getNode(o, node); + } + $(node.getChildrenUL()).show(); + if (node.isLast) { + node.plus_img.src = node.relpath+"ftv2mlastnode.png"; + } else { + node.plus_img.src = node.relpath+"ftv2mnode.png"; + } + node.expanded = true; + var n = node.children[o.breadcrumbs[index]]; + if (index+11) hash = '#'+parts[1]; + else hash=''; + } + if (hash.match(/^#l\d+$/)) { + var anchor=$('a[name='+hash.substring(1)+']'); + glowEffect(anchor.parent(),1000); // line number + hash=''; // strip line number anchors + //root=root.replace(/_source\./,'.'); // source link to doc link + } + var url=root+hash; + var i=-1; + while (NAVTREEINDEX[i+1]<=url) i++; + if (i==-1) { i=0; root=NAVTREE[0][1]; } // fallback: show index + if (navTreeSubIndices[i]) { + gotoNode(o,i,root,hash,relpath) + } else { + getScript(relpath+'navtreeindex'+i,function(){ + navTreeSubIndices[i] = eval('NAVTREEINDEX'+i); + if (navTreeSubIndices[i]) { + gotoNode(o,i,root,hash,relpath); + } + },true); + } +} + +function showSyncOff(n,relpath) +{ + n.html(''); +} + +function showSyncOn(n,relpath) +{ + n.html(''); +} + +function toggleSyncButton(relpath) +{ + var navSync = $('#nav-sync'); + if (navSync.hasClass('sync')) { + navSync.removeClass('sync'); + showSyncOff(navSync,relpath); + storeLink(stripPath2($(location).attr('pathname'))+$(location).attr('hash')); + } else { + navSync.addClass('sync'); + showSyncOn(navSync,relpath); + deleteLink(); + } +} + +function initNavTree(toroot,relpath) +{ + var o = new Object(); + o.toroot = toroot; + o.node = new Object(); + o.node.li = document.getElementById("nav-tree-contents"); + o.node.childrenData = NAVTREE; + o.node.children = new Array(); + o.node.childrenUL = document.createElement("ul"); + o.node.getChildrenUL = function() { return o.node.childrenUL; }; + o.node.li.appendChild(o.node.childrenUL); + o.node.depth = 0; + o.node.relpath = relpath; + o.node.expanded = false; + o.node.isLast = true; + o.node.plus_img = document.createElement("img"); + o.node.plus_img.src = relpath+"ftv2pnode.png"; + o.node.plus_img.width = 16; + o.node.plus_img.height = 22; + + if (localStorageSupported()) { + var navSync = $('#nav-sync'); + if (cachedLink()) { + showSyncOff(navSync,relpath); + navSync.removeClass('sync'); + } else { + showSyncOn(navSync,relpath); + } + navSync.click(function(){ toggleSyncButton(relpath); }); + } + + navTo(o,toroot,window.location.hash,relpath); + + $(window).bind('hashchange', function(){ + if (window.location.hash && window.location.hash.length>1){ + var a; + if ($(location).attr('hash')){ + var clslink=stripPath($(location).attr('pathname'))+':'+ + $(location).attr('hash').substring(1); + a=$('.item a[class$="'+clslink+'"]'); + } + if (a==null || !$(a).parent().parent().hasClass('selected')){ + $('.item').removeClass('selected'); + $('.item').removeAttr('id'); + } + var link=stripPath2($(location).attr('pathname')); + navTo(o,link,$(location).attr('hash'),relpath); + } else if (!animationInProgress) { + $('#doc-content').scrollTop(0); + $('.item').removeClass('selected'); + $('.item').removeAttr('id'); + navTo(o,toroot,window.location.hash,relpath); + } + }) + + $(window).load(showRoot); +} + diff --git a/lib/docs/html/navtreeindex0.js b/lib/docs/html/navtreeindex0.js new file mode 100644 index 0000000..7cca62e --- /dev/null +++ b/lib/docs/html/navtreeindex0.js @@ -0,0 +1,253 @@ +var NAVTREEINDEX0 = +{ +"_adapter_2_abstract_8php.html":[3,0,0,0,5], +"_adapter_2_abstract_8php_source.html":[3,0,0,0,5], +"_adapter_2_blacklist_2_exception_8php.html":[3,0,0,0,0,0], +"_adapter_2_blacklist_2_exception_8php_source.html":[3,0,0,0,0,0], +"_adapter_2_exception_8php.html":[3,0,0,0,7], +"_adapter_2_exception_8php_source.html":[3,0,0,0,7], +"_adapter_2_file_transfer_2_exception_8php.html":[3,0,0,0,1,0], +"_adapter_2_file_transfer_2_exception_8php_source.html":[3,0,0,0,1,0], +"_adapter_2_server_query_2_exception_8php.html":[3,0,0,0,2,1], +"_adapter_2_server_query_2_exception_8php_source.html":[3,0,0,0,2,1], +"_adapter_2_t_s_d_n_s_2_exception_8php.html":[3,0,0,0,3,0], +"_adapter_2_t_s_d_n_s_2_exception_8php_source.html":[3,0,0,0,3,0], +"_adapter_2_update_2_exception_8php.html":[3,0,0,0,4,0], +"_adapter_2_update_2_exception_8php_source.html":[3,0,0,0,4,0], +"_blacklist_8php.html":[3,0,0,0,6], +"_blacklist_8php_source.html":[3,0,0,0,6], +"_channel_8php.html":[3,0,0,2,1], +"_channel_8php_source.html":[3,0,0,2,1], +"_channelgroup_8php.html":[3,0,0,2,2], +"_channelgroup_8php_source.html":[3,0,0,2,2], +"_char_8php.html":[3,0,0,1,2], +"_char_8php_source.html":[3,0,0,1,2], +"_client_8php.html":[3,0,0,2,3], +"_client_8php_source.html":[3,0,0,2,3], +"_convert_8php.html":[3,0,0,1,3], +"_convert_8php_source.html":[3,0,0,1,3], +"_crypt_8php.html":[3,0,0,1,4], +"_crypt_8php_source.html":[3,0,0,1,4], +"_event_8php.html":[3,0,0,0,2,0], +"_event_8php_source.html":[3,0,0,0,2,0], +"_exception_8php.html":[3,0,0,5], +"_exception_8php_source.html":[3,0,0,5], +"_file_transfer_8php.html":[3,0,0,0,8], +"_file_transfer_8php_source.html":[3,0,0,0,8], +"_handler_8php.html":[3,0,0,1,1,1], +"_handler_8php_source.html":[3,0,0,1,1,1], +"_helper_2_exception_8php.html":[3,0,0,1,5], +"_helper_2_exception_8php_source.html":[3,0,0,1,5], +"_helper_2_profiler_2_exception_8php.html":[3,0,0,1,0,0], +"_helper_2_profiler_2_exception_8php_source.html":[3,0,0,1,0,0], +"_helper_2_signal_2_exception_8php.html":[3,0,0,1,1,0], +"_helper_2_signal_2_exception_8php_source.html":[3,0,0,1,1,0], +"_helper_2_signal_2_interface_8php.html":[3,0,0,1,1,2], +"_helper_2_signal_2_interface_8php_source.html":[3,0,0,1,1,2], +"_host_8php.html":[3,0,0,2,5], +"_host_8php_source.html":[3,0,0,2,5], +"_html_8php.html":[3,0,0,4,0], +"_html_8php_source.html":[3,0,0,4,0], +"_node_2_abstract_8php.html":[3,0,0,2,0], +"_node_2_abstract_8php_source.html":[3,0,0,2,0], +"_node_2_exception_8php.html":[3,0,0,2,4], +"_node_2_exception_8php_source.html":[3,0,0,2,4], +"_profiler_8php.html":[3,0,0,1,6], +"_profiler_8php_source.html":[3,0,0,1,6], +"_reply_8php.html":[3,0,0,0,2,2], +"_reply_8php_source.html":[3,0,0,0,2,2], +"_server_8php.html":[3,0,0,2,6], +"_server_8php_source.html":[3,0,0,2,6], +"_server_query_8php.html":[3,0,0,0,9], +"_server_query_8php_source.html":[3,0,0,0,9], +"_servergroup_8php.html":[3,0,0,2,7], +"_servergroup_8php_source.html":[3,0,0,2,7], +"_signal_8php.html":[3,0,0,1,7], +"_signal_8php_source.html":[3,0,0,1,7], +"_string_8php.html":[3,0,0,1,8], +"_string_8php_source.html":[3,0,0,1,8], +"_t_c_p_8php.html":[3,0,0,3,2], +"_t_c_p_8php_source.html":[3,0,0,3,2], +"_t_s_d_n_s_8php.html":[3,0,0,0,10], +"_t_s_d_n_s_8php_source.html":[3,0,0,0,10], +"_team_speak3_8php.html":[3,0,0,6], +"_team_speak3_8php_source.html":[3,0,0,6], +"_text_8php.html":[3,0,0,4,2], +"_text_8php_source.html":[3,0,0,4,2], +"_timer_8php.html":[3,0,0,1,0,1], +"_timer_8php_source.html":[3,0,0,1,0,1], +"_transport_2_abstract_8php.html":[3,0,0,3,0], +"_transport_2_abstract_8php_source.html":[3,0,0,3,0], +"_transport_2_exception_8php.html":[3,0,0,3,1], +"_transport_2_exception_8php_source.html":[3,0,0,3,1], +"_u_d_p_8php.html":[3,0,0,3,3], +"_u_d_p_8php_source.html":[3,0,0,3,3], +"_update_8php.html":[3,0,0,0,11], +"_update_8php_source.html":[3,0,0,0,11], +"_uri_8php.html":[3,0,0,1,9], +"_uri_8php_source.html":[3,0,0,1,9], +"_viewer_2_interface_8php.html":[3,0,0,4,1], +"_viewer_2_interface_8php_source.html":[3,0,0,4,1], +"annotated.html":[2,0], +"class_team_speak3.html":[2,0,1], +"class_team_speak3.html#a0772e3a79ac03d3acb657e07dad63a0e":[2,0,1,53], +"class_team_speak3.html#a0948f6a231bacd72d3455adc3314aadb":[2,0,1,41], +"class_team_speak3.html#a0ac677fa9a62b01a3a2619f874278654":[2,0,1,15], +"class_team_speak3.html#a0dfea6a5fe76141895e0f2900e8e4e52":[2,0,1,85], +"class_team_speak3.html#a0f7b0579cd636c1ea7fe5bcdd92dbc09":[2,0,1,60], +"class_team_speak3.html#a0f7b54be70a8c790115ca92e98bcbee5":[2,0,1,67], +"class_team_speak3.html#a1017b9d565da82a1a360ecd1074ef882":[2,0,1,32], +"class_team_speak3.html#a12e9d78448fe9a2fc19f71a19db33b24":[2,0,1,95], +"class_team_speak3.html#a1882bc1d9fcbcc353d04d308194010bf":[2,0,1,29], +"class_team_speak3.html#a197a03a9e83e5663d0f071df18fb127d":[2,0,1,47], +"class_team_speak3.html#a19d4d49947f93c087729848de6d71986":[2,0,1,4], +"class_team_speak3.html#a1a5f95e94ebee25f7a7de47186fd7acc":[2,0,1,6], +"class_team_speak3.html#a1b97ddf3ea3bfb3bac4167cc9853bcf5":[2,0,1,92], +"class_team_speak3.html#a1fa36fce856fa4d8ee9af0d2147d398a":[2,0,1,83], +"class_team_speak3.html#a204ba3447155504ad79532e02b0047c8":[2,0,1,25], +"class_team_speak3.html#a2237bc5075c3c354764e42f40a045179":[2,0,1,65], +"class_team_speak3.html#a2615a76afeecf68eae3ba5f2e908373c":[2,0,1,71], +"class_team_speak3.html#a2a930337bd67c2c2893b3afad902b440":[2,0,1,56], +"class_team_speak3.html#a2bd847d0f20f1d827238304dedaa6b77":[2,0,1,34], +"class_team_speak3.html#a2d89a707e37e81732d9e9ba827cd8dd5":[2,0,1,77], +"class_team_speak3.html#a328b7a4eeed0ecd61865be986aa79f9c":[2,0,1,102], +"class_team_speak3.html#a36c30eb13e8fe039e4c06a45e3e5f35a":[2,0,1,82], +"class_team_speak3.html#a3c394288b3b45df4a039127d1e119517":[2,0,1,104], +"class_team_speak3.html#a3c3b0109548e9a41717d64db57f54b6a":[2,0,1,44], +"class_team_speak3.html#a407829d390331e34c6f90d9df78ae6c5":[2,0,1,7], +"class_team_speak3.html#a4350e9a5261f832d44d3b416d5bdcb50":[2,0,1,36], +"class_team_speak3.html#a47403f14dad07252a387b8cc7e5d816f":[2,0,1,110], +"class_team_speak3.html#a47cc2fc667c048d716b054b21ccba9c0":[2,0,1,78], +"class_team_speak3.html#a483d97eee2596af11821f74c6d1b83e0":[2,0,1,1], +"class_team_speak3.html#a4b19b7a03ed2787450ea21229854ced8":[2,0,1,14], +"class_team_speak3.html#a4dbceb88091137f08da2f78d893a22c9":[2,0,1,3], +"class_team_speak3.html#a4fa166aef3d0ba5f2204d8b9a257a23b":[2,0,1,61], +"class_team_speak3.html#a511bfe0b317d488a475c044baf3e490a":[2,0,1,70], +"class_team_speak3.html#a5324e065c2ed9c98c0931654d388610f":[2,0,1,57], +"class_team_speak3.html#a57fa7853513872a96f0adf9d3329c59b":[2,0,1,55], +"class_team_speak3.html#a5a13321bcb3eff4b51cbe56eb342b701":[2,0,1,40], +"class_team_speak3.html#a5d9945d86f2ab5f1a4934e2604652503":[2,0,1,62], +"class_team_speak3.html#a5e20ff014c021e5dc0f04777b272ec84":[2,0,1,2], +"class_team_speak3.html#a68cea90e6bd99a1aaf9b19325d0f02bb":[2,0,1,8], +"class_team_speak3.html#a69511dec19c2f8ed1268267f09e88124":[2,0,1,30], +"class_team_speak3.html#a6c155661d55cd61ef79b1fd6413e5880":[2,0,1,37], +"class_team_speak3.html#a6dd546e23743326565a82accf7d793f6":[2,0,1,66], +"class_team_speak3.html#a6e018ed33e01f80861a9649f5fbdcb05":[2,0,1,46], +"class_team_speak3.html#a73cb8b928682f11db10d5f4bf92c579d":[2,0,1,18], +"class_team_speak3.html#a745423668d892edf35aff2dc1d802649":[2,0,1,79], +"class_team_speak3.html#a7aa076becfafe9cfb5a6b9eae4c72831":[2,0,1,99], +"class_team_speak3.html#a7d044183051509b77831a5546748245e":[2,0,1,38], +"class_team_speak3.html#a7d31dad145adb2a70ac9ae92adeebb5b":[2,0,1,5], +"class_team_speak3.html#a7d82c5b03e862e2f53313363e1423535":[2,0,1,109], +"class_team_speak3.html#a7dfffb36f25a89a472b60275fc3fc4e7":[2,0,1,89], +"class_team_speak3.html#a7e144effeaf513a660467a0dadd1ae97":[2,0,1,19], +"class_team_speak3.html#a7e2d5457e1faace304311ca1617c283b":[2,0,1,52], +"class_team_speak3.html#a7febc9b704013d3a218171fbf5230998":[2,0,1,10], +"class_team_speak3.html#a8706d107a6d0bd56003436cf91931015":[2,0,1,21], +"class_team_speak3.html#a8a46203c06bf7b769b1245eee8c71eca":[2,0,1,94], +"class_team_speak3.html#a8cd0b0d4c26e955f67be448039c4a4e2":[2,0,1,73], +"class_team_speak3.html#a908573c6bc67e85396a4af21972bfeae":[2,0,1,33], +"class_team_speak3.html#a931e59afb66273ee4255e43676812726":[2,0,1,105], +"class_team_speak3.html#a978acb82eda7f57b72a15c231ed7de26":[2,0,1,11], +"class_team_speak3.html#a9ac856cab800709d07bc6b53b84d404f":[2,0,1,12], +"class_team_speak3.html#a9bfa984813e9074be19a7cba3a8673d3":[2,0,1,48], +"class_team_speak3.html#a9dcf492812b8b16ffbebcd05ffa1e6bf":[2,0,1,111], +"class_team_speak3.html#a9ea90147fb0486786931015e4d64abba":[2,0,1,54], +"class_team_speak3.html#a9f1020035b40674a589647e5dc90c95b":[2,0,1,31], +"class_team_speak3.html#aa157f891770ebc32c3387769419f8bcf":[2,0,1,13], +"class_team_speak3.html#aa534b78937197a0a0739f1fa3c98a8d1":[2,0,1,84], +"class_team_speak3.html#aa5aba89a9024b4e7c7845b115f8e9c40":[2,0,1,58], +"class_team_speak3.html#aa639ddfd900cc55961633d2e3ca03168":[2,0,1,63], +"class_team_speak3.html#aa9e2a430fd552f4a0c3dec0855a4f8ad":[2,0,1,42], +"class_team_speak3.html#aab7ee7ef3548dce162310f5b58e22bce":[2,0,1,80], +"class_team_speak3.html#aad9bd5c1089efa20620cab286052b0f3":[2,0,1,101], +"class_team_speak3.html#aae3f41d88cbf9fbadb9f38dd67027168":[2,0,1,76], +"class_team_speak3.html#aaffe4f52d9d9009a8fd90fb2683e18ce":[2,0,1,98], +"class_team_speak3.html#ab1b79661570e52e80cb9382286c3f0a6":[2,0,1,20], +"class_team_speak3.html#ab413bc7287c76152eb9c51a74385b8a5":[2,0,1,75], +"class_team_speak3.html#ab5e4b438da7c292ea5985eed88396f4d":[2,0,1,81], +"class_team_speak3.html#ab5f7f692edb611a09be65dbe1cc22fd3":[2,0,1,93], +"class_team_speak3.html#ab6a4d55688e33c16004508fff14c81da":[2,0,1,27], +"class_team_speak3.html#abe21c7855096b6b8d86613897ed1a4bd":[2,0,1,90], +"class_team_speak3.html#ac1329c48f57dcee568be69b33c778c99":[2,0,1,59], +"class_team_speak3.html#ac3b12e51946589138a84fdf2c653c9f6":[2,0,1,72], +"class_team_speak3.html#ac48ef3e11414170eecffcd252a637062":[2,0,1,107], +"class_team_speak3.html#ac5519852d33570fbd89e171937f553c2":[2,0,1,35], +"class_team_speak3.html#ac8a12a60994f2949c63e21d8915c8afa":[2,0,1,22], +"class_team_speak3.html#ac8dbaaf31bc8b339287692ae80abae94":[2,0,1,51], +"class_team_speak3.html#ac9179c4a74a5c0cd269e6639868f3b57":[2,0,1,49], +"class_team_speak3.html#ac9535ce5e98c480aea71d0f149a7c2cb":[2,0,1,88], +"class_team_speak3.html#ac9b701c7439f38c391baba51f9b6d1da":[2,0,1,9], +"class_team_speak3.html#ace570a7b5abdbfd89f20145f2757bbcd":[2,0,1,97], +"class_team_speak3.html#ad1956014c2a37cf8883bc6e845991597":[2,0,1,39], +"class_team_speak3.html#ad7a9fe53817b1d8441eafe1cfed2570e":[2,0,1,96], +"class_team_speak3.html#ad86387b6183780d2af6a1918552fc00b":[2,0,1,23], +"class_team_speak3.html#ad9dc7ed023c1a9be4504ba894a63bee1":[2,0,1,106], +"class_team_speak3.html#adab57311071c4b74b2f221dd747d9f54":[2,0,1,64], +"class_team_speak3.html#add756e636bc8ea39128fdf8361ffd54c":[2,0,1,16], +"class_team_speak3.html#ae0f64ba57dfa729092ae07f0508ad20c":[2,0,1,91], +"class_team_speak3.html#ae10cf1e6e6a365cf61eb7e38f6a2315b":[2,0,1,108], +"class_team_speak3.html#ae2f58969a8868c4793c485d63e6e7f05":[2,0,1,43], +"class_team_speak3.html#ae31cefccb5993d1b5fa8fa9f52180bfe":[2,0,1,0], +"class_team_speak3.html#ae70bc3d695fcfe6db61c86fb58c076bd":[2,0,1,68], +"class_team_speak3.html#ae900e81e1e6607ad4294b17f62112685":[2,0,1,17], +"class_team_speak3.html#ae9df1f0980b1d3e9638b3a8084cc5234":[2,0,1,28], +"class_team_speak3.html#aea8db94828ad856d0a207d228145e41a":[2,0,1,103], +"class_team_speak3.html#aec5b4d0b149798108c05580399923757":[2,0,1,74], +"class_team_speak3.html#aec926b29e75ca080eb7fb8fbf69f9ab9":[2,0,1,86], +"class_team_speak3.html#aeeab1204791458d7e543aedf5c4c8699":[2,0,1,45], +"class_team_speak3.html#af264159fd49c066ad3e88b475a168e45":[2,0,1,26], +"class_team_speak3.html#af4beb7ff503847abc4d8f00fa4a14929":[2,0,1,24], +"class_team_speak3.html#af93218df38a498fd730ad2f2676f6567":[2,0,1,50], +"class_team_speak3.html#af9a20a17b3aaaf60621e4f471f7e300a":[2,0,1,87], +"class_team_speak3.html#afb77656b36c45073e770f13bf0a90e5d":[2,0,1,100], +"class_team_speak3.html#aff66f6e403b88244a46c5cddefd63853":[2,0,1,69], +"class_team_speak3___adapter___abstract.html":[2,0,2], +"class_team_speak3___adapter___abstract.html#a257acaf2793889d1e75364d40e7fa15d":[2,0,2,11], +"class_team_speak3___adapter___abstract.html#a538e98e6dcc6a2ad7fdcb4913f6f7c52":[2,0,2,6], +"class_team_speak3___adapter___abstract.html#a5eb0b19787ec6f719d8f19bcd7182461":[2,0,2,9], +"class_team_speak3___adapter___abstract.html#a775cec95b7fc371b9155383a29888932":[2,0,2,0], +"class_team_speak3___adapter___abstract.html#a87920747e1eb4a25396c5b5e5567094b":[2,0,2,7], +"class_team_speak3___adapter___abstract.html#a94b75d4f99ef639e5cb39e900d38e56a":[2,0,2,10], +"class_team_speak3___adapter___abstract.html#aa57e551da82adf543957163f0a6d1c6e":[2,0,2,2], +"class_team_speak3___adapter___abstract.html#aaa3c73f10edd73494087a7a523726a89":[2,0,2,4], +"class_team_speak3___adapter___abstract.html#ab1bd002b22a8121e8efa5ab4ccd36fa5":[2,0,2,5], +"class_team_speak3___adapter___abstract.html#ac2edb7dbc9a488a6d772cb6397fab128":[2,0,2,1], +"class_team_speak3___adapter___abstract.html#adcf5e760b6d6d3e42f11d8b1bc5d87cc":[2,0,2,8], +"class_team_speak3___adapter___abstract.html#afa29be26280db12e38aef59d90f7c6ac":[2,0,2,3], +"class_team_speak3___adapter___blacklist.html":[2,0,3], +"class_team_speak3___adapter___blacklist.html#a1fa14a98fd62612e9a23357da08fa2a1":[2,0,3,1], +"class_team_speak3___adapter___blacklist.html#a257acaf2793889d1e75364d40e7fa15d":[2,0,3,14], +"class_team_speak3___adapter___blacklist.html#a538e98e6dcc6a2ad7fdcb4913f6f7c52":[2,0,3,6], +"class_team_speak3___adapter___blacklist.html#a5eb0b19787ec6f719d8f19bcd7182461":[2,0,3,9], +"class_team_speak3___adapter___blacklist.html#a6a58a76417afbcced149786dc0b1eba2":[2,0,3,12], +"class_team_speak3___adapter___blacklist.html#a810eeede201a669baae7c2cfb394c47f":[2,0,3,2], +"class_team_speak3___adapter___blacklist.html#a87920747e1eb4a25396c5b5e5567094b":[2,0,3,7], +"class_team_speak3___adapter___blacklist.html#a94b75d4f99ef639e5cb39e900d38e56a":[2,0,3,13], +"class_team_speak3___adapter___blacklist.html#aaa3c73f10edd73494087a7a523726a89":[2,0,3,4], +"class_team_speak3___adapter___blacklist.html#ab1bd002b22a8121e8efa5ab4ccd36fa5":[2,0,3,5], +"class_team_speak3___adapter___blacklist.html#aba663e2f5471242ff2e6a3026f023de7":[2,0,3,10], +"class_team_speak3___adapter___blacklist.html#ac513e62c024049632e52ad13c7db5baf":[2,0,3,0], +"class_team_speak3___adapter___blacklist.html#adcf5e760b6d6d3e42f11d8b1bc5d87cc":[2,0,3,8], +"class_team_speak3___adapter___blacklist.html#ae7279a881556b519a57869112e40fac7":[2,0,3,11], +"class_team_speak3___adapter___blacklist.html#afa29be26280db12e38aef59d90f7c6ac":[2,0,3,3], +"class_team_speak3___adapter___blacklist___exception.html":[2,0,4], +"class_team_speak3___adapter___blacklist___exception.html#a3bfcdf7b85a393b7a8b05b048ae3279c":[2,0,4,0], +"class_team_speak3___adapter___blacklist___exception.html#ae7d4b369dd11d3cf56d120acae0cf1db":[2,0,4,1], +"class_team_speak3___adapter___exception.html":[2,0,5], +"class_team_speak3___adapter___exception.html#a3bfcdf7b85a393b7a8b05b048ae3279c":[2,0,5,0], +"class_team_speak3___adapter___exception.html#ae7d4b369dd11d3cf56d120acae0cf1db":[2,0,5,1], +"class_team_speak3___adapter___file_transfer.html":[2,0,6], +"class_team_speak3___adapter___file_transfer.html#a257acaf2793889d1e75364d40e7fa15d":[2,0,6,14], +"class_team_speak3___adapter___file_transfer.html#a538e98e6dcc6a2ad7fdcb4913f6f7c52":[2,0,6,9], +"class_team_speak3___adapter___file_transfer.html#a56c9d8b7f347dcc70787956d8a389a17":[2,0,6,2], +"class_team_speak3___adapter___file_transfer.html#a5eb0b19787ec6f719d8f19bcd7182461":[2,0,6,12], +"class_team_speak3___adapter___file_transfer.html#a69cc29e5d15d47c56f55bcd14503905f":[2,0,6,5], +"class_team_speak3___adapter___file_transfer.html#a6af2972c287ac831c1a3922cadb2d86b":[2,0,6,1], +"class_team_speak3___adapter___file_transfer.html#a731600b40702660abb06dcbcbc791d50":[2,0,6,4], +"class_team_speak3___adapter___file_transfer.html#a87920747e1eb4a25396c5b5e5567094b":[2,0,6,10], +"class_team_speak3___adapter___file_transfer.html#a94b75d4f99ef639e5cb39e900d38e56a":[2,0,6,13], +"class_team_speak3___adapter___file_transfer.html#a9cf1d5542573d87ad5513e4e3eed6b8a":[2,0,6,3], +"class_team_speak3___adapter___file_transfer.html#a9f273fc582708000a67db6626573a1de":[2,0,6,0], +"class_team_speak3___adapter___file_transfer.html#aaa3c73f10edd73494087a7a523726a89":[2,0,6,7] +}; diff --git a/lib/docs/html/navtreeindex1.js b/lib/docs/html/navtreeindex1.js new file mode 100644 index 0000000..449eb20 --- /dev/null +++ b/lib/docs/html/navtreeindex1.js @@ -0,0 +1,253 @@ +var NAVTREEINDEX1 = +{ +"class_team_speak3___adapter___file_transfer.html#ab1bd002b22a8121e8efa5ab4ccd36fa5":[2,0,6,8], +"class_team_speak3___adapter___file_transfer.html#adcf5e760b6d6d3e42f11d8b1bc5d87cc":[2,0,6,11], +"class_team_speak3___adapter___file_transfer.html#afa29be26280db12e38aef59d90f7c6ac":[2,0,6,6], +"class_team_speak3___adapter___file_transfer___exception.html":[2,0,7], +"class_team_speak3___adapter___file_transfer___exception.html#a3bfcdf7b85a393b7a8b05b048ae3279c":[2,0,7,0], +"class_team_speak3___adapter___file_transfer___exception.html#ae7d4b369dd11d3cf56d120acae0cf1db":[2,0,7,1], +"class_team_speak3___adapter___server_query.html":[2,0,8], +"class_team_speak3___adapter___server_query.html#a019993dea141dc6cd47ad0698c5552b6":[2,0,8,19], +"class_team_speak3___adapter___server_query.html#a1104e77bfcf0fea456b64a275f122ed5":[2,0,8,1], +"class_team_speak3___adapter___server_query.html#a1c156818989d1377763503849dd3d933":[2,0,8,5], +"class_team_speak3___adapter___server_query.html#a20e3c73543f989c2955cbcab6069c1a0":[2,0,8,6], +"class_team_speak3___adapter___server_query.html#a257acaf2793889d1e75364d40e7fa15d":[2,0,8,21], +"class_team_speak3___adapter___server_query.html#a2a57bbee0ce18e8c75cd6e93e1755bc5":[2,0,8,17], +"class_team_speak3___adapter___server_query.html#a538e98e6dcc6a2ad7fdcb4913f6f7c52":[2,0,8,12], +"class_team_speak3___adapter___server_query.html#a5eb0b19787ec6f719d8f19bcd7182461":[2,0,8,15], +"class_team_speak3___adapter___server_query.html#a87920747e1eb4a25396c5b5e5567094b":[2,0,8,13], +"class_team_speak3___adapter___server_query.html#a922a436f8224dffa4272244efb026383":[2,0,8,4], +"class_team_speak3___adapter___server_query.html#a948c56497ac50d138169101f4b7b97b8":[2,0,8,8], +"class_team_speak3___adapter___server_query.html#a94b75d4f99ef639e5cb39e900d38e56a":[2,0,8,20], +"class_team_speak3___adapter___server_query.html#a9c0096841e9ffc4adabce05b7ee1df37":[2,0,8,3], +"class_team_speak3___adapter___server_query.html#aaa3c73f10edd73494087a7a523726a89":[2,0,8,10], +"class_team_speak3___adapter___server_query.html#ab1bd002b22a8121e8efa5ab4ccd36fa5":[2,0,8,11], +"class_team_speak3___adapter___server_query.html#abe0dc4f73909ab01d000059967bccd64":[2,0,8,0], +"class_team_speak3___adapter___server_query.html#ac5bdb0f16db16f5b706d7ee9a3322a64":[2,0,8,18], +"class_team_speak3___adapter___server_query.html#adcf5e760b6d6d3e42f11d8b1bc5d87cc":[2,0,8,14], +"class_team_speak3___adapter___server_query.html#af153378a3e5668d2aa9ef43eac7de36a":[2,0,8,2], +"class_team_speak3___adapter___server_query.html#af3e836f70ff0d7559072522ff3cdc3ab":[2,0,8,16], +"class_team_speak3___adapter___server_query.html#afa29be26280db12e38aef59d90f7c6ac":[2,0,8,9], +"class_team_speak3___adapter___server_query.html#afaf3a140c05ee3bb840a4f20c050cfaa":[2,0,8,7], +"class_team_speak3___adapter___server_query___event.html":[2,0,9], +"class_team_speak3___adapter___server_query___event.html#a41ef812dbfe2d1e1b517bd123fc960f6":[2,0,9,7], +"class_team_speak3___adapter___server_query___event.html#a476acf6ce132b0a3d0b4fc9b22e7405e":[2,0,9,2], +"class_team_speak3___adapter___server_query___event.html#a496f7adbe81710f97848608dc3b29265":[2,0,9,8], +"class_team_speak3___adapter___server_query___event.html#a5486d8a3491e6096e4fdfd39ea2149d6":[2,0,9,12], +"class_team_speak3___adapter___server_query___event.html#a57104b2b838c8a4ba3b7b65b9d91205b":[2,0,9,11], +"class_team_speak3___adapter___server_query___event.html#a57ae033a9a2926762f557fb8705d8a15":[2,0,9,4], +"class_team_speak3___adapter___server_query___event.html#a6c3c6a21f1f6dd8e594669868c310c81":[2,0,9,5], +"class_team_speak3___adapter___server_query___event.html#a8c466fb68578cc95504035aae3785759":[2,0,9,9], +"class_team_speak3___adapter___server_query___event.html#a9eb8d547545fa1e17f70c8ee5ba33a9c":[2,0,9,6], +"class_team_speak3___adapter___server_query___event.html#ab847f72f60d9a87e577455a326b97d35":[2,0,9,0], +"class_team_speak3___adapter___server_query___event.html#aba87307c13aaa64c3c91e4fa398517ef":[2,0,9,1], +"class_team_speak3___adapter___server_query___event.html#ae37c57dcc407345531912b3687ffdee9":[2,0,9,10], +"class_team_speak3___adapter___server_query___event.html#aec6954f96cbc4a229348ae31f9b289e7":[2,0,9,3], +"class_team_speak3___adapter___server_query___exception.html":[2,0,10], +"class_team_speak3___adapter___server_query___exception.html#a3bfcdf7b85a393b7a8b05b048ae3279c":[2,0,10,0], +"class_team_speak3___adapter___server_query___exception.html#ae7d4b369dd11d3cf56d120acae0cf1db":[2,0,10,1], +"class_team_speak3___adapter___server_query___reply.html":[2,0,11], +"class_team_speak3___adapter___server_query___reply.html#a1a681042ce8d5d653d77a1f7db8cdc42":[2,0,11,10], +"class_team_speak3___adapter___server_query___reply.html#a1f7f7344c8059b9b591e05ea30b352ad":[2,0,11,11], +"class_team_speak3___adapter___server_query___reply.html#a2810d0ec7a80446851fd9af783eaadb1":[2,0,11,9], +"class_team_speak3___adapter___server_query___reply.html#a2cdd115c2240dfbb14ea86262125b703":[2,0,11,15], +"class_team_speak3___adapter___server_query___reply.html#a34bf1240e1057fc75b9ab65707fcf60c":[2,0,11,16], +"class_team_speak3___adapter___server_query___reply.html#a38c121c24afb5ace90f0fe742a16ae0c":[2,0,11,7], +"class_team_speak3___adapter___server_query___reply.html#a697c2727c161d53dfd7b46ab3ba63395":[2,0,11,5], +"class_team_speak3___adapter___server_query___reply.html#a6e92cc7ce61c856c87fb286ee116ff0b":[2,0,11,6], +"class_team_speak3___adapter___server_query___reply.html#a7bc11136eadd47197965af56e562ba05":[2,0,11,2], +"class_team_speak3___adapter___server_query___reply.html#a807bfd4ee64768a8d329cf98e539272d":[2,0,11,3], +"class_team_speak3___adapter___server_query___reply.html#a9084e31d5fe7e0dcc7a4247662578935":[2,0,11,8], +"class_team_speak3___adapter___server_query___reply.html#a9925fa2fcaa8c093d7e083c94f89af3b":[2,0,11,17], +"class_team_speak3___adapter___server_query___reply.html#ab2364d1752a2793f0f507d5ad182466f":[2,0,11,14], +"class_team_speak3___adapter___server_query___reply.html#ab5d3913ad84e8fed62c0abe93eb442ee":[2,0,11,1], +"class_team_speak3___adapter___server_query___reply.html#ab6891908584fcfb9cd14bda568eeb51d":[2,0,11,12], +"class_team_speak3___adapter___server_query___reply.html#abe1a1d307cebcdcd28dfbf9aa9323366":[2,0,11,0], +"class_team_speak3___adapter___server_query___reply.html#ad877781490287318a2d4ac8b39dafd47":[2,0,11,13], +"class_team_speak3___adapter___server_query___reply.html#adafc81235a78cff6fdd21e32266dc83e":[2,0,11,4], +"class_team_speak3___adapter___server_query___reply.html#ae32d5d30bc966b9872cc63968a503253":[2,0,11,18], +"class_team_speak3___adapter___t_s_d_n_s.html":[2,0,12], +"class_team_speak3___adapter___t_s_d_n_s.html#a257acaf2793889d1e75364d40e7fa15d":[2,0,12,12], +"class_team_speak3___adapter___t_s_d_n_s.html#a538e98e6dcc6a2ad7fdcb4913f6f7c52":[2,0,12,6], +"class_team_speak3___adapter___t_s_d_n_s.html#a5eb0b19787ec6f719d8f19bcd7182461":[2,0,12,9], +"class_team_speak3___adapter___t_s_d_n_s.html#a87920747e1eb4a25396c5b5e5567094b":[2,0,12,7], +"class_team_speak3___adapter___t_s_d_n_s.html#a94b75d4f99ef639e5cb39e900d38e56a":[2,0,12,11], +"class_team_speak3___adapter___t_s_d_n_s.html#aa92c579a298da3aaa9e78bef922c484f":[2,0,12,2], +"class_team_speak3___adapter___t_s_d_n_s.html#aaa3c73f10edd73494087a7a523726a89":[2,0,12,4], +"class_team_speak3___adapter___t_s_d_n_s.html#ab1bd002b22a8121e8efa5ab4ccd36fa5":[2,0,12,5], +"class_team_speak3___adapter___t_s_d_n_s.html#adcf5e760b6d6d3e42f11d8b1bc5d87cc":[2,0,12,8], +"class_team_speak3___adapter___t_s_d_n_s.html#ae37dd4961f9b941cf86f4dbc811b1ed2":[2,0,12,0], +"class_team_speak3___adapter___t_s_d_n_s.html#af8df959a8c1ea98eed074cc606362331":[2,0,12,10], +"class_team_speak3___adapter___t_s_d_n_s.html#afa29be26280db12e38aef59d90f7c6ac":[2,0,12,3], +"class_team_speak3___adapter___t_s_d_n_s.html#afa6858becde424aac96a14931b6b1d64":[2,0,12,1], +"class_team_speak3___adapter___t_s_d_n_s___exception.html":[2,0,13], +"class_team_speak3___adapter___t_s_d_n_s___exception.html#a3bfcdf7b85a393b7a8b05b048ae3279c":[2,0,13,0], +"class_team_speak3___adapter___t_s_d_n_s___exception.html#ae7d4b369dd11d3cf56d120acae0cf1db":[2,0,13,1], +"class_team_speak3___adapter___update.html":[2,0,14], +"class_team_speak3___adapter___update.html#a09d4e6b18f2475adfc1f5a74c6478421":[2,0,14,0], +"class_team_speak3___adapter___update.html#a116864fefa2a1cf7fb5fef1847320e60":[2,0,14,7], +"class_team_speak3___adapter___update.html#a172f895cafdc41dc38d0d3dcad40daf4":[2,0,14,18], +"class_team_speak3___adapter___update.html#a257acaf2793889d1e75364d40e7fa15d":[2,0,14,20], +"class_team_speak3___adapter___update.html#a3e1f0776fc33efb9ac61336ae59faa80":[2,0,14,5], +"class_team_speak3___adapter___update.html#a538e98e6dcc6a2ad7fdcb4913f6f7c52":[2,0,14,11], +"class_team_speak3___adapter___update.html#a54aadf28b42c9ae4443c03ae1ab80a0d":[2,0,14,17], +"class_team_speak3___adapter___update.html#a5eb0b19787ec6f719d8f19bcd7182461":[2,0,14,14], +"class_team_speak3___adapter___update.html#a87920747e1eb4a25396c5b5e5567094b":[2,0,14,12], +"class_team_speak3___adapter___update.html#a94b75d4f99ef639e5cb39e900d38e56a":[2,0,14,19], +"class_team_speak3___adapter___update.html#a97aee7ab17ceb200cbda0e044722067e":[2,0,14,16], +"class_team_speak3___adapter___update.html#aa1c205259b8912526ad533ed17acd564":[2,0,14,6], +"class_team_speak3___adapter___update.html#aaa3c73f10edd73494087a7a523726a89":[2,0,14,9], +"class_team_speak3___adapter___update.html#aacf23e72f0978884a9b44c7e6679a06d":[2,0,14,2], +"class_team_speak3___adapter___update.html#ab1bd002b22a8121e8efa5ab4ccd36fa5":[2,0,14,10], +"class_team_speak3___adapter___update.html#ac25205f46f31a8de30454d499e6aaa04":[2,0,14,3], +"class_team_speak3___adapter___update.html#adcf5e760b6d6d3e42f11d8b1bc5d87cc":[2,0,14,13], +"class_team_speak3___adapter___update.html#af42f2e98ffbecdbc375304737a54a4a0":[2,0,14,4], +"class_team_speak3___adapter___update.html#afa29be26280db12e38aef59d90f7c6ac":[2,0,14,8], +"class_team_speak3___adapter___update.html#aff0d4389ef94200093e46352325b662d":[2,0,14,15], +"class_team_speak3___adapter___update.html#aff480ecd1d746c8014242bee9ff15a42":[2,0,14,1], +"class_team_speak3___adapter___update___exception.html":[2,0,15], +"class_team_speak3___adapter___update___exception.html#a3bfcdf7b85a393b7a8b05b048ae3279c":[2,0,15,0], +"class_team_speak3___adapter___update___exception.html#ae7d4b369dd11d3cf56d120acae0cf1db":[2,0,15,1], +"class_team_speak3___exception.html":[2,0,16], +"class_team_speak3___exception.html#a3bfcdf7b85a393b7a8b05b048ae3279c":[2,0,16,1], +"class_team_speak3___exception.html#a9872c9261e67090a2b5b7e0748a89ff6":[2,0,16,0], +"class_team_speak3___exception.html#ae7d4b369dd11d3cf56d120acae0cf1db":[2,0,16,2], +"class_team_speak3___helper___char.html":[2,0,17], +"class_team_speak3___helper___char.html#a09f3c3116f003edfd555082f6dbe4abf":[2,0,17,17], +"class_team_speak3___helper___char.html#a22df6b40aceb46041f0d54cdb94e207c":[2,0,17,5], +"class_team_speak3___helper___char.html#a2832c6d619a29a2e48c83ac49b126a0e":[2,0,17,13], +"class_team_speak3___helper___char.html#a31902835e68b11855ae1c5681f69de65":[2,0,17,18], +"class_team_speak3___helper___char.html#a3f656ef26e882b1c73859da05e74b087":[2,0,17,12], +"class_team_speak3___helper___char.html#a516ba12f480718c4f629bc80b4534e45":[2,0,17,2], +"class_team_speak3___helper___char.html#a7b0af0f517fad3d463e37a73f0d0e6aa":[2,0,17,4], +"class_team_speak3___helper___char.html#a8bb75339d12739d859b81bd1f14f6b48":[2,0,17,15], +"class_team_speak3___helper___char.html#a9eaa5eb7af273164e78a1ad9abba4925":[2,0,17,3], +"class_team_speak3___helper___char.html#aab4f8858c8fd20453808c19d31e7f9e3":[2,0,17,8], +"class_team_speak3___helper___char.html#abd5079c69e66bd654d1ad0507e70bfda":[2,0,17,11], +"class_team_speak3___helper___char.html#ac9d4e8d53dc1b48df16a9e966ec5ffac":[2,0,17,7], +"class_team_speak3___helper___char.html#ad1502b588adf85b1426a1cad68062b51":[2,0,17,10], +"class_team_speak3___helper___char.html#add1580b3f4a63d2bcf7e65b9c08278cc":[2,0,17,0], +"class_team_speak3___helper___char.html#ae9f5d53be88f2669c99a13e9e428c2ee":[2,0,17,16], +"class_team_speak3___helper___char.html#af1a9090eb45deefe6337137af4cdb9fb":[2,0,17,9], +"class_team_speak3___helper___char.html#af3db051fe9effcc66181cfffbe6adb43":[2,0,17,6], +"class_team_speak3___helper___char.html#af53e59a23a72e44096133355f77e3406":[2,0,17,14], +"class_team_speak3___helper___char.html#af5e38bffad5f3337a0a098595c3cc1dc":[2,0,17,1], +"class_team_speak3___helper___convert.html":[2,0,18], +"class_team_speak3___helper___crypt.html":[2,0,19], +"class_team_speak3___helper___crypt.html#a0795a29c94afaf2e8642d7b9fe8aa0e7":[2,0,19,3], +"class_team_speak3___helper___crypt.html#a23ce290df045657a686c2802fe826a74":[2,0,19,1], +"class_team_speak3___helper___crypt.html#a38a8da0e26045f49f76c718aaaceab60":[2,0,19,2], +"class_team_speak3___helper___crypt.html#a4f951fb74cdb008df2f9edc3b5dcacd0":[2,0,19,8], +"class_team_speak3___helper___crypt.html#a533f9b405f3bb18a8c12e4270f354459":[2,0,19,7], +"class_team_speak3___helper___crypt.html#a5e753459986408209ed7a553d16c0d6e":[2,0,19,9], +"class_team_speak3___helper___crypt.html#a7c0b9b5e2877bed5ad1147e46d44ee43":[2,0,19,4], +"class_team_speak3___helper___crypt.html#ad2d0754d453e7a5f638979f153489a21":[2,0,19,6], +"class_team_speak3___helper___crypt.html#ade43c86c7fe887013b88f9f6a2e3011f":[2,0,19,5], +"class_team_speak3___helper___crypt.html#aec18b53e735ecb9077edf004898d32d3":[2,0,19,0], +"class_team_speak3___helper___exception.html":[2,0,20], +"class_team_speak3___helper___exception.html#a3bfcdf7b85a393b7a8b05b048ae3279c":[2,0,20,0], +"class_team_speak3___helper___exception.html#ae7d4b369dd11d3cf56d120acae0cf1db":[2,0,20,1], +"class_team_speak3___helper___profiler.html":[2,0,21], +"class_team_speak3___helper___profiler___exception.html":[2,0,22], +"class_team_speak3___helper___profiler___exception.html#a3bfcdf7b85a393b7a8b05b048ae3279c":[2,0,22,0], +"class_team_speak3___helper___profiler___exception.html#ae7d4b369dd11d3cf56d120acae0cf1db":[2,0,22,1], +"class_team_speak3___helper___profiler___timer.html":[2,0,23], +"class_team_speak3___helper___profiler___timer.html#a14f870400b41a4b1ff688ee9641ccb24":[2,0,23,6], +"class_team_speak3___helper___profiler___timer.html#a29e06cc21d560576abec2678108078c2":[2,0,23,1], +"class_team_speak3___helper___profiler___timer.html#a40449e19407ff9b99cadd30be99a1763":[2,0,23,3], +"class_team_speak3___helper___profiler___timer.html#a92400f1247e08c23460749de0d4cad51":[2,0,23,0], +"class_team_speak3___helper___profiler___timer.html#a9df478674ef00e29adbc12cc103390a7":[2,0,23,2], +"class_team_speak3___helper___profiler___timer.html#ab5a96392a6b5a84b2bf5c2c289979a59":[2,0,23,8], +"class_team_speak3___helper___profiler___timer.html#abdffbfefcc30c448ddf20552a6c0503e":[2,0,23,5], +"class_team_speak3___helper___profiler___timer.html#ad8a6bd88869c1473cc2f9a79b6fa89b6":[2,0,23,9], +"class_team_speak3___helper___profiler___timer.html#adaeee8c828e9f9b5408f92399184b934":[2,0,23,4], +"class_team_speak3___helper___profiler___timer.html#ae93d5374f58e03b28324f6e3f6feba70":[2,0,23,7], +"class_team_speak3___helper___signal.html":[2,0,24], +"class_team_speak3___helper___signal.html#a058ad6105e05a7b8c620b9446c545984":[2,0,24,2], +"class_team_speak3___helper___signal.html#a11b8fbdbfd24afb14ac47262aba4c2c6":[2,0,24,8], +"class_team_speak3___helper___signal.html#a26e8fc61637d146b0347b7c9e09587ab":[2,0,24,0], +"class_team_speak3___helper___signal.html#a74e337835a70aa10894202bb43d8c30b":[2,0,24,3], +"class_team_speak3___helper___signal.html#a840339183812e5e51d9c3b1beb9d1fd3":[2,0,24,5], +"class_team_speak3___helper___signal.html#a8610e4f73d3f5b564edd1dfa81f1ac28":[2,0,24,7], +"class_team_speak3___helper___signal.html#aa690a091efef853c4a47d7b7e7363c03":[2,0,24,4], +"class_team_speak3___helper___signal.html#ada301980bc0f9b8f310e8656972b6a35":[2,0,24,1], +"class_team_speak3___helper___signal.html#af414b1e8d18081c374a852c12c0b5cb6":[2,0,24,6], +"class_team_speak3___helper___signal___exception.html":[2,0,25], +"class_team_speak3___helper___signal___exception.html#a3bfcdf7b85a393b7a8b05b048ae3279c":[2,0,25,0], +"class_team_speak3___helper___signal___exception.html#ae7d4b369dd11d3cf56d120acae0cf1db":[2,0,25,1], +"class_team_speak3___helper___signal___handler.html":[2,0,26], +"class_team_speak3___helper___signal___handler.html#a1c3e62b60b8459ffe70bf25bc9064375":[2,0,26,1], +"class_team_speak3___helper___signal___handler.html#a241f3b1383b2ae44da3824baba0f44d3":[2,0,26,3], +"class_team_speak3___helper___signal___handler.html#a50cd43219ff631c81f9c7b48a993a658":[2,0,26,2], +"class_team_speak3___helper___signal___handler.html#acaeace4c6fe538813ae52b7f9283c063":[2,0,26,0], +"class_team_speak3___helper___string.html":[2,0,28], +"class_team_speak3___helper___string.html#a000fbe55814c81bb9df49f9e493fa2f0":[2,0,28,35], +"class_team_speak3___helper___string.html#a02f3181ad499d5c501aa53e797453e9c":[2,0,28,20], +"class_team_speak3___helper___string.html#a14c8b3fce8c0074f1d180a7b764838e8":[2,0,28,33], +"class_team_speak3___helper___string.html#a1589e49036cbc501ad58a6a5f88a07b3":[2,0,28,3], +"class_team_speak3___helper___string.html#a16f6035d961abe9878a780d6cfbc0bc5":[2,0,28,28], +"class_team_speak3___helper___string.html#a196292e46e6047abe24a355502461e5b":[2,0,28,8], +"class_team_speak3___helper___string.html#a1d7e859160a5a625a42449e6975b79cc":[2,0,28,16], +"class_team_speak3___helper___string.html#a1e174bac87ff8ac91d305c708dfc5a87":[2,0,28,34], +"class_team_speak3___helper___string.html#a3ec8659b47a91c14a35cdfb681d18c61":[2,0,28,12], +"class_team_speak3___helper___string.html#a41ed82694722a57dab947a95be55da8a":[2,0,28,42], +"class_team_speak3___helper___string.html#a43f910629395c91dd4e69871a9dacb18":[2,0,28,7], +"class_team_speak3___helper___string.html#a480a2c527bda902f6f42dbc90b393bc9":[2,0,28,47], +"class_team_speak3___helper___string.html#a4a27f0518592b80e80b561157c638ad7":[2,0,28,32], +"class_team_speak3___helper___string.html#a4b151b1096800c2e319ae82007808683":[2,0,28,48], +"class_team_speak3___helper___string.html#a500a1b5f6bf0793705b55dd34b9b72f9":[2,0,28,25], +"class_team_speak3___helper___string.html#a5730d6f1b9666890431635bf73da0320":[2,0,28,30], +"class_team_speak3___helper___string.html#a597f8498c9a870605f55de5401e8fe89":[2,0,28,11], +"class_team_speak3___helper___string.html#a630942cbba0367ad2e93fea368924b52":[2,0,28,1], +"class_team_speak3___helper___string.html#a64e335d45cf24774118f5efbefd27f0c":[2,0,28,24], +"class_team_speak3___helper___string.html#a6cf18e37472a24ad987dc40220082540":[2,0,28,18], +"class_team_speak3___helper___string.html#a6d8411e44090161070e4c016ef4cb2ef":[2,0,28,27], +"class_team_speak3___helper___string.html#a73b077cc95e1365974644eebc1e48cf0":[2,0,28,13], +"class_team_speak3___helper___string.html#a7c683564011d15bc53fb14634adbc72c":[2,0,28,14], +"class_team_speak3___helper___string.html#a8162f80058e9efeb6458e960acc04af9":[2,0,28,15], +"class_team_speak3___helper___string.html#a832580003f635cae85236bf7602fd24f":[2,0,28,37], +"class_team_speak3___helper___string.html#a85229b107f448ca9387e894c8d718e25":[2,0,28,29], +"class_team_speak3___helper___string.html#a87beac9c37d88273dddc7d4fb0da7422":[2,0,28,6], +"class_team_speak3___helper___string.html#a8c80e5bb8f27193646a53d404bf94887":[2,0,28,21], +"class_team_speak3___helper___string.html#a99fcbce6b1675e69ec80c51b1f58cc1b":[2,0,28,36], +"class_team_speak3___helper___string.html#a9bf5a109e41a1fd7dfb158a5fdd682b1":[2,0,28,19], +"class_team_speak3___helper___string.html#aa53d94bf82f2f1d3e091a1fe6912cfa3":[2,0,28,2], +"class_team_speak3___helper___string.html#ab368725237c5ebff2116de6a8ba36c59":[2,0,28,4], +"class_team_speak3___helper___string.html#abc3280155219f30593f8af00249ad155":[2,0,28,0], +"class_team_speak3___helper___string.html#abd90cc6d33ba2a43f86b988f7596c5cd":[2,0,28,22], +"class_team_speak3___helper___string.html#ac27cbee392b09ccbbc421a1487740418":[2,0,28,45], +"class_team_speak3___helper___string.html#aca8a008c7bc517c801cb20584f413d64":[2,0,28,44], +"class_team_speak3___helper___string.html#ad1a297278673af0f99df8c8e2af09e9a":[2,0,28,17], +"class_team_speak3___helper___string.html#ad1b30c6035e3eaf0f3cc8a7b484fc05e":[2,0,28,38], +"class_team_speak3___helper___string.html#ad26d639f401f7d2766dbbd7e7d6e7c47":[2,0,28,31], +"class_team_speak3___helper___string.html#ad848ed7a9e1f42a5f5dfcbbce9b3e29e":[2,0,28,5], +"class_team_speak3___helper___string.html#adb5081e7fc4aa675d04735a2f4710548":[2,0,28,39], +"class_team_speak3___helper___string.html#add153e99069f5f3a34f45c236f9e1bb3":[2,0,28,9], +"class_team_speak3___helper___string.html#ae3d33b1f4304a9e15f23797f792b2c8a":[2,0,28,40], +"class_team_speak3___helper___string.html#aeefa9ad9fcadd61a3ecf1d30cbed9efe":[2,0,28,41], +"class_team_speak3___helper___string.html#af2f7ef460aa783b02432c5b9c24b35f4":[2,0,28,10], +"class_team_speak3___helper___string.html#af3c8429a224fa716177fe6b90a629a0f":[2,0,28,23], +"class_team_speak3___helper___string.html#af520ab5ce16e0fad306d9d57431570ec":[2,0,28,26], +"class_team_speak3___helper___string.html#afb284716b9af4a0f062161a5d97a78f9":[2,0,28,43], +"class_team_speak3___helper___string.html#afd4c1631d11a6b4b8471b22a682c3b29":[2,0,28,46], +"class_team_speak3___helper___uri.html":[2,0,29], +"class_team_speak3___helper___uri.html#a0a56de9c6bd0fbf00098dc6b7db1840c":[2,0,29,22], +"class_team_speak3___helper___uri.html#a0f72daa8e78e5cc5ca345af3602cc6a1":[2,0,29,18], +"class_team_speak3___helper___uri.html#a14310050ea38dcaad50edba0b67d9d1b":[2,0,29,33], +"class_team_speak3___helper___uri.html#a17cd4b5e0108e858bb51167e0046f0c4":[2,0,29,23], +"class_team_speak3___helper___uri.html#a24fab900cd8e2b43e253f85d6925f7b7":[2,0,29,6], +"class_team_speak3___helper___uri.html#a2b8d5365651a38c00ba1393559ba9efd":[2,0,29,5], +"class_team_speak3___helper___uri.html#a32584b89b4cfeaaa09948b5b1fc67916":[2,0,29,2], +"class_team_speak3___helper___uri.html#a36a08a673b6b108db27c880ad8d42031":[2,0,29,20], +"class_team_speak3___helper___uri.html#a459e667293a0266cd96fb6467b6501fe":[2,0,29,30], +"class_team_speak3___helper___uri.html#a489f79eec547a0c9ca9fc6befebcc0f3":[2,0,29,3], +"class_team_speak3___helper___uri.html#a49e5219ee9fc09dde979006b2a5a10fd":[2,0,29,31], +"class_team_speak3___helper___uri.html#a66616fce653cffd2499e83438cc37e81":[2,0,29,35], +"class_team_speak3___helper___uri.html#a6d9477823c4f20b2daa98a9153326463":[2,0,29,10], +"class_team_speak3___helper___uri.html#a7e23bd80c39a9cf8b286f08cf177331e":[2,0,29,24], +"class_team_speak3___helper___uri.html#a7f6c35d4a2161270b8edcff45b48fda1":[2,0,29,1], +"class_team_speak3___helper___uri.html#a848e4a9bd0caa493f064b98cf4e24906":[2,0,29,19], +"class_team_speak3___helper___uri.html#a90842c65bae8ffcf088b1dd12def7ff1":[2,0,29,0], +"class_team_speak3___helper___uri.html#a9119d1fb0ecb143d0b8ef596c2bf3c76":[2,0,29,36], +"class_team_speak3___helper___uri.html#a91539b2925a03129637bd3f3efec42a6":[2,0,29,26] +}; diff --git a/lib/docs/html/navtreeindex2.js b/lib/docs/html/navtreeindex2.js new file mode 100644 index 0000000..b1155f0 --- /dev/null +++ b/lib/docs/html/navtreeindex2.js @@ -0,0 +1,253 @@ +var NAVTREEINDEX2 = +{ +"class_team_speak3___helper___uri.html#a94c765c6262844caad188417a77adda8":[2,0,29,25], +"class_team_speak3___helper___uri.html#a9878d6f37ef25b9e0666cf8cd9043515":[2,0,29,14], +"class_team_speak3___helper___uri.html#aa496602a698ed5690d48ec4326f8c793":[2,0,29,9], +"class_team_speak3___helper___uri.html#aa60355cb6dee8fac8ad14a171c6b36ab":[2,0,29,29], +"class_team_speak3___helper___uri.html#aa7b59f4a3528141842fcdda1af6920cc":[2,0,29,16], +"class_team_speak3___helper___uri.html#aada4ff6119919a87251a4569b54f3b4a":[2,0,29,15], +"class_team_speak3___helper___uri.html#ab685d3e39922aa170d2d6b06a6304084":[2,0,29,7], +"class_team_speak3___helper___uri.html#abcfb777bab47406a328776f47f6a96a0":[2,0,29,17], +"class_team_speak3___helper___uri.html#ac9dff5b48e963efca445427a2ec602ca":[2,0,29,8], +"class_team_speak3___helper___uri.html#aca4bbb23cafa5833af4565d23f0b57c6":[2,0,29,13], +"class_team_speak3___helper___uri.html#acaa2c62eecb695f7a7ea1e6484b4b169":[2,0,29,11], +"class_team_speak3___helper___uri.html#ad32a11cb34f078847033407ba3b95eb7":[2,0,29,27], +"class_team_speak3___helper___uri.html#ad53c6db20a03e53f9568e8ca1ab91744":[2,0,29,21], +"class_team_speak3___helper___uri.html#adb9f6e1df57af8b47e94d6d581475eb1":[2,0,29,12], +"class_team_speak3___helper___uri.html#af05706ac9c905ef59109cfa310b7af17":[2,0,29,34], +"class_team_speak3___helper___uri.html#af47ad30cc5c9a600ee2a6c7de6e1aa83":[2,0,29,4], +"class_team_speak3___helper___uri.html#af9c01d661b2be87a9c5dfc8575d8e698":[2,0,29,28], +"class_team_speak3___helper___uri.html#afe80af6ca2a866c8adc018665a1ebbf2":[2,0,29,32], +"class_team_speak3___node___abstract.html":[2,0,30], +"class_team_speak3___node___abstract.html#a02ce34dce8fbf7881ce2323f7af0dca3":[2,0,30,6], +"class_team_speak3___node___abstract.html#a10158df40ca8030d5d0e3c464154b988":[2,0,30,24], +"class_team_speak3___node___abstract.html#a13303ca9275df184348ed7363d9d7c9a":[2,0,30,19], +"class_team_speak3___node___abstract.html#a14930274e5498a5a8816ef751ff87946":[2,0,30,42], +"class_team_speak3___node___abstract.html#a14a79cc9ca202ba4dbfc054f0c18583f":[2,0,30,43], +"class_team_speak3___node___abstract.html#a19b5c8aaac5ef0af2f1393bffea186c5":[2,0,30,22], +"class_team_speak3___node___abstract.html#a1b0100e4a548e9464d75dcbfe6ac297a":[2,0,30,34], +"class_team_speak3___node___abstract.html#a1c78dbb54df73f8c5dabe41ebd476207":[2,0,30,29], +"class_team_speak3___node___abstract.html#a266578bece0506453e1f1bfba1f08966":[2,0,30,25], +"class_team_speak3___node___abstract.html#a3273e5078ee49a4bd55620327ed09a5e":[2,0,30,35], +"class_team_speak3___node___abstract.html#a33efbacf1a9aa094ccc39b0b25f3d369":[2,0,30,48], +"class_team_speak3___node___abstract.html#a35dcdb8a7b62d7990307bfb95ce3937c":[2,0,30,0], +"class_team_speak3___node___abstract.html#a37b39fa104ce36c0f0ea142934c05346":[2,0,30,46], +"class_team_speak3___node___abstract.html#a3d3f27dab5569edf3a737be080e7c8bc":[2,0,30,11], +"class_team_speak3___node___abstract.html#a44618fb948562e89515330e65d08da9a":[2,0,30,3], +"class_team_speak3___node___abstract.html#a4a0a5545abc2460d1d9b3d6b52d07cbe":[2,0,30,4], +"class_team_speak3___node___abstract.html#a4a68d64cff73a4f67859e28a89b3c511":[2,0,30,8], +"class_team_speak3___node___abstract.html#a4b9dee48bb72f0eab8b9d4b0ea25c5f4":[2,0,30,30], +"class_team_speak3___node___abstract.html#a50699be5fe1e43f7ae2e528db3c1098b":[2,0,30,47], +"class_team_speak3___node___abstract.html#a585728537b56194aeab30b0316126b89":[2,0,30,14], +"class_team_speak3___node___abstract.html#a5a6888304aca8d5f12fecb460b0ef6d2":[2,0,30,20], +"class_team_speak3___node___abstract.html#a5e9be0418e0cc969d47f4b7475adb21d":[2,0,30,39], +"class_team_speak3___node___abstract.html#a63fb203f511e99625428f70f0525950c":[2,0,30,18], +"class_team_speak3___node___abstract.html#a6589a4fedd410e9cdb55fe20abc410c0":[2,0,30,1], +"class_team_speak3___node___abstract.html#a716e7512816cf490e5a16ec307f7d889":[2,0,30,38], +"class_team_speak3___node___abstract.html#a732408c9a027db531af8ecce82401c07":[2,0,30,40], +"class_team_speak3___node___abstract.html#a7769506879dac3170344d8e59218b644":[2,0,30,31], +"class_team_speak3___node___abstract.html#a84162e45950d55298791eb5771fd315d":[2,0,30,9], +"class_team_speak3___node___abstract.html#a89d26184ecd8790f8b930e5eceaddc29":[2,0,30,15], +"class_team_speak3___node___abstract.html#a9c416b77eeea1ecec6652936703d9ff7":[2,0,30,36], +"class_team_speak3___node___abstract.html#a9ead519e8396990ba30d79d6bed9d286":[2,0,30,27], +"class_team_speak3___node___abstract.html#aa78cba098574598dd9c0331cac1f39a1":[2,0,30,5], +"class_team_speak3___node___abstract.html#aaa53c7a8efa4739c50619e5b52a176e5":[2,0,30,10], +"class_team_speak3___node___abstract.html#ab78c8a0a0bcd7458d310a9e05f012409":[2,0,30,23], +"class_team_speak3___node___abstract.html#ac1b521aa7f9871103da5cbb5d3330125":[2,0,30,16], +"class_team_speak3___node___abstract.html#ac1bdee23c7d066edf3d6cb8e75999887":[2,0,30,45], +"class_team_speak3___node___abstract.html#ac66aeb30418e385a5727c191bb8df87d":[2,0,30,26], +"class_team_speak3___node___abstract.html#ac8ab685826ff08e853de2aebad9df459":[2,0,30,41], +"class_team_speak3___node___abstract.html#acadc746cd7eb244d61f195494924f6b8":[2,0,30,44], +"class_team_speak3___node___abstract.html#acf3c56763859b8adb21379f0cc6394ad":[2,0,30,17], +"class_team_speak3___node___abstract.html#ad0d64388e2a374203fa16760b923b087":[2,0,30,37], +"class_team_speak3___node___abstract.html#ad22d04a2800ae672f6117de3afb0e9c4":[2,0,30,28], +"class_team_speak3___node___abstract.html#ad826df3c71029ca48839dbe9aa3559b8":[2,0,30,12], +"class_team_speak3___node___abstract.html#ad9aee4153360fd8139f6b0d68efff56f":[2,0,30,32], +"class_team_speak3___node___abstract.html#adb87ddbef3247f346c2623f4d91981a1":[2,0,30,33], +"class_team_speak3___node___abstract.html#af63ae54f10c02ec6b1033425f795fef4":[2,0,30,13], +"class_team_speak3___node___abstract.html#af6811efc5065b8aadfd6792334ea6977":[2,0,30,2], +"class_team_speak3___node___abstract.html#af6e1416ad2e568f48ff0d85b15b2a673":[2,0,30,7], +"class_team_speak3___node___abstract.html#afbed20ee78d7e5a38097078dd91e70fd":[2,0,30,21], +"class_team_speak3___node___channel.html":[2,0,31], +"class_team_speak3___node___channel.html#a014365ed1cbed74e25efd721ce495868":[2,0,31,27], +"class_team_speak3___node___channel.html#a02ce34dce8fbf7881ce2323f7af0dca3":[2,0,31,45], +"class_team_speak3___node___channel.html#a0309efb6b6ba7612c0298edb3f411fd3":[2,0,31,34], +"class_team_speak3___node___channel.html#a0563e887ab93925f4c6a5a7028564406":[2,0,31,8], +"class_team_speak3___node___channel.html#a0a91f8d1922a0987d619b2b999b20ed7":[2,0,31,19], +"class_team_speak3___node___channel.html#a10413785d241a007e16d961cb996606d":[2,0,31,4], +"class_team_speak3___node___channel.html#a13303ca9275df184348ed7363d9d7c9a":[2,0,31,54], +"class_team_speak3___node___channel.html#a14930274e5498a5a8816ef751ff87946":[2,0,31,75], +"class_team_speak3___node___channel.html#a14a79cc9ca202ba4dbfc054f0c18583f":[2,0,31,76], +"class_team_speak3___node___channel.html#a19b5c8aaac5ef0af2f1393bffea186c5":[2,0,31,57], +"class_team_speak3___node___channel.html#a1b0100e4a548e9464d75dcbfe6ac297a":[2,0,31,67], +"class_team_speak3___node___channel.html#a1c78dbb54df73f8c5dabe41ebd476207":[2,0,31,62], +"class_team_speak3___node___channel.html#a1dde358f63d3ac8c2298fd21142dac27":[2,0,31,30], +"class_team_speak3___node___channel.html#a22162cfd2c6c996a04e46acd90ff653d":[2,0,31,10], +"class_team_speak3___node___channel.html#a23153430a3dcb5ac300f488a5ca96ac1":[2,0,31,16], +"class_team_speak3___node___channel.html#a266578bece0506453e1f1bfba1f08966":[2,0,31,58], +"class_team_speak3___node___channel.html#a2f42245368e047bee70760ecb1aaada2":[2,0,31,22], +"class_team_speak3___node___channel.html#a2fbf4302a79b8e3cfab59c23e7c5f5ef":[2,0,31,38], +"class_team_speak3___node___channel.html#a3273e5078ee49a4bd55620327ed09a5e":[2,0,31,68], +"class_team_speak3___node___channel.html#a3305e870508db6fc6346ac326d843f89":[2,0,31,1], +"class_team_speak3___node___channel.html#a33efbacf1a9aa094ccc39b0b25f3d369":[2,0,31,81], +"class_team_speak3___node___channel.html#a35dcdb8a7b62d7990307bfb95ce3937c":[2,0,31,39], +"class_team_speak3___node___channel.html#a36efedde38452a8f789d75da1ba57d27":[2,0,31,17], +"class_team_speak3___node___channel.html#a37b39fa104ce36c0f0ea142934c05346":[2,0,31,79], +"class_team_speak3___node___channel.html#a3d3f27dab5569edf3a737be080e7c8bc":[2,0,31,47], +"class_team_speak3___node___channel.html#a403b689f8fa9fd61744186f8c94c8a19":[2,0,31,26], +"class_team_speak3___node___channel.html#a44618fb948562e89515330e65d08da9a":[2,0,31,42], +"class_team_speak3___node___channel.html#a44bfe5d3b60bf1126fe64a3ab26d9b97":[2,0,31,35], +"class_team_speak3___node___channel.html#a49536704a62df7ce862c8b49a34133f1":[2,0,31,9], +"class_team_speak3___node___channel.html#a4a0a5545abc2460d1d9b3d6b52d07cbe":[2,0,31,43], +"class_team_speak3___node___channel.html#a4b9dee48bb72f0eab8b9d4b0ea25c5f4":[2,0,31,63], +"class_team_speak3___node___channel.html#a50699be5fe1e43f7ae2e528db3c1098b":[2,0,31,80], +"class_team_speak3___node___channel.html#a52fe3494554137418c85446de9d93d25":[2,0,31,24], +"class_team_speak3___node___channel.html#a551d0330e564f9cc5ab3352f17f82854":[2,0,31,6], +"class_team_speak3___node___channel.html#a585728537b56194aeab30b0316126b89":[2,0,31,50], +"class_team_speak3___node___channel.html#a5a6888304aca8d5f12fecb460b0ef6d2":[2,0,31,55], +"class_team_speak3___node___channel.html#a5e9be0418e0cc969d47f4b7475adb21d":[2,0,31,72], +"class_team_speak3___node___channel.html#a63fb203f511e99625428f70f0525950c":[2,0,31,53], +"class_team_speak3___node___channel.html#a6589a4fedd410e9cdb55fe20abc410c0":[2,0,31,40], +"class_team_speak3___node___channel.html#a65e29a83a86be282c518beb2de18b09c":[2,0,31,5], +"class_team_speak3___node___channel.html#a716e7512816cf490e5a16ec307f7d889":[2,0,31,71], +"class_team_speak3___node___channel.html#a718a79bb14289ba6a52cf13264f1e3d9":[2,0,31,13], +"class_team_speak3___node___channel.html#a732408c9a027db531af8ecce82401c07":[2,0,31,73], +"class_team_speak3___node___channel.html#a7769506879dac3170344d8e59218b644":[2,0,31,64], +"class_team_speak3___node___channel.html#a795adb2d08b347a25aef05ecb6d1388b":[2,0,31,20], +"class_team_speak3___node___channel.html#a7e20bbf057d5934b61e5c024240204d9":[2,0,31,0], +"class_team_speak3___node___channel.html#a81bb1307281b161103c7578cb27883cb":[2,0,31,33], +"class_team_speak3___node___channel.html#a8cc6d7499a4556e2cfa42d8a9f9b63c0":[2,0,31,36], +"class_team_speak3___node___channel.html#a9c416b77eeea1ecec6652936703d9ff7":[2,0,31,69], +"class_team_speak3___node___channel.html#a9d3afd421f9957b18fae15dd2fb70a59":[2,0,31,25], +"class_team_speak3___node___channel.html#a9ead519e8396990ba30d79d6bed9d286":[2,0,31,60], +"class_team_speak3___node___channel.html#a9ed93a66fb5e503bcd556d54f53b2e7d":[2,0,31,28], +"class_team_speak3___node___channel.html#aa78cba098574598dd9c0331cac1f39a1":[2,0,31,44], +"class_team_speak3___node___channel.html#aaecc89ca9afaafa7f5a34581e44b871c":[2,0,31,7], +"class_team_speak3___node___channel.html#ab34961db39c511984fc05c4b28517596":[2,0,31,21], +"class_team_speak3___node___channel.html#abb025af29045d589a709fd54908a265e":[2,0,31,14], +"class_team_speak3___node___channel.html#abb2adcb5338c4e1a9bb4ab1009c977d7":[2,0,31,32], +"class_team_speak3___node___channel.html#abb90a093d39070b66f903c29aee75eb7":[2,0,31,29], +"class_team_speak3___node___channel.html#abbfb1e4be497e07c1a25e9bd6047035a":[2,0,31,37], +"class_team_speak3___node___channel.html#ac1b521aa7f9871103da5cbb5d3330125":[2,0,31,51], +"class_team_speak3___node___channel.html#ac1bdee23c7d066edf3d6cb8e75999887":[2,0,31,78], +"class_team_speak3___node___channel.html#ac41f8c7054b457df5716641df29608c0":[2,0,31,3], +"class_team_speak3___node___channel.html#ac66aeb30418e385a5727c191bb8df87d":[2,0,31,59], +"class_team_speak3___node___channel.html#ac6c3d3563ea70b58e5d06504cea1dc40":[2,0,31,31], +"class_team_speak3___node___channel.html#ac8ab685826ff08e853de2aebad9df459":[2,0,31,74], +"class_team_speak3___node___channel.html#acadc746cd7eb244d61f195494924f6b8":[2,0,31,77], +"class_team_speak3___node___channel.html#acf3c56763859b8adb21379f0cc6394ad":[2,0,31,52], +"class_team_speak3___node___channel.html#ad0d64388e2a374203fa16760b923b087":[2,0,31,70], +"class_team_speak3___node___channel.html#ad22d04a2800ae672f6117de3afb0e9c4":[2,0,31,61], +"class_team_speak3___node___channel.html#ad5b12fe78a6882e82e09cfcfe4c0a5a4":[2,0,31,15], +"class_team_speak3___node___channel.html#ad826df3c71029ca48839dbe9aa3559b8":[2,0,31,48], +"class_team_speak3___node___channel.html#ad9aee4153360fd8139f6b0d68efff56f":[2,0,31,65], +"class_team_speak3___node___channel.html#adb87ddbef3247f346c2623f4d91981a1":[2,0,31,66], +"class_team_speak3___node___channel.html#add4dacca0d0c83837598b948401a40b4":[2,0,31,2], +"class_team_speak3___node___channel.html#aeb434341ab27daa223feaa6947d1eb84":[2,0,31,12], +"class_team_speak3___node___channel.html#aecd920dea71369198d448f808c9b3810":[2,0,31,23], +"class_team_speak3___node___channel.html#af2d943d5b6b6b9bf051195f2d4396e3f":[2,0,31,11], +"class_team_speak3___node___channel.html#af63ae54f10c02ec6b1033425f795fef4":[2,0,31,49], +"class_team_speak3___node___channel.html#af6811efc5065b8aadfd6792334ea6977":[2,0,31,41], +"class_team_speak3___node___channel.html#af6e1416ad2e568f48ff0d85b15b2a673":[2,0,31,46], +"class_team_speak3___node___channel.html#af80055c43aa221cfc9fb77ebe909e883":[2,0,31,18], +"class_team_speak3___node___channel.html#afbed20ee78d7e5a38097078dd91e70fd":[2,0,31,56], +"class_team_speak3___node___channelgroup.html":[2,0,32], +"class_team_speak3___node___channelgroup.html#a02ce34dce8fbf7881ce2323f7af0dca3":[2,0,32,25], +"class_team_speak3___node___channelgroup.html#a02e50c4cf44fa59fe42494f168fea441":[2,0,32,10], +"class_team_speak3___node___channelgroup.html#a07f4314251dafde96cf16462786c91de":[2,0,32,18], +"class_team_speak3___node___channelgroup.html#a10158df40ca8030d5d0e3c464154b988":[2,0,32,38], +"class_team_speak3___node___channelgroup.html#a11ced87a844806dd40f6c51efb1e3e15":[2,0,32,1], +"class_team_speak3___node___channelgroup.html#a13303ca9275df184348ed7363d9d7c9a":[2,0,32,34], +"class_team_speak3___node___channelgroup.html#a14930274e5498a5a8816ef751ff87946":[2,0,32,56], +"class_team_speak3___node___channelgroup.html#a14a79cc9ca202ba4dbfc054f0c18583f":[2,0,32,57], +"class_team_speak3___node___channelgroup.html#a19b5c8aaac5ef0af2f1393bffea186c5":[2,0,32,37], +"class_team_speak3___node___channelgroup.html#a1b0100e4a548e9464d75dcbfe6ac297a":[2,0,32,48], +"class_team_speak3___node___channelgroup.html#a1c78dbb54df73f8c5dabe41ebd476207":[2,0,32,43], +"class_team_speak3___node___channelgroup.html#a1e4959ff64841c33000f63b36eced974":[2,0,32,2], +"class_team_speak3___node___channelgroup.html#a1ff88f65f4b500b3cd187ce454b7e913":[2,0,32,0], +"class_team_speak3___node___channelgroup.html#a242cba4ec6265ae655433b3a3d13f24b":[2,0,32,8], +"class_team_speak3___node___channelgroup.html#a266578bece0506453e1f1bfba1f08966":[2,0,32,39], +"class_team_speak3___node___channelgroup.html#a272eceba9a34038a77e9a3ba64459e9c":[2,0,32,5], +"class_team_speak3___node___channelgroup.html#a2ba7fddc0192be2c8f58a643d706780c":[2,0,32,9], +"class_team_speak3___node___channelgroup.html#a3273e5078ee49a4bd55620327ed09a5e":[2,0,32,49], +"class_team_speak3___node___channelgroup.html#a338c5784a7d15055685065da491bcc1b":[2,0,32,3], +"class_team_speak3___node___channelgroup.html#a33efbacf1a9aa094ccc39b0b25f3d369":[2,0,32,62], +"class_team_speak3___node___channelgroup.html#a35dcdb8a7b62d7990307bfb95ce3937c":[2,0,32,19], +"class_team_speak3___node___channelgroup.html#a37b39fa104ce36c0f0ea142934c05346":[2,0,32,60], +"class_team_speak3___node___channelgroup.html#a3d3f27dab5569edf3a737be080e7c8bc":[2,0,32,27], +"class_team_speak3___node___channelgroup.html#a44618fb948562e89515330e65d08da9a":[2,0,32,22], +"class_team_speak3___node___channelgroup.html#a4a0a5545abc2460d1d9b3d6b52d07cbe":[2,0,32,23], +"class_team_speak3___node___channelgroup.html#a4b9dee48bb72f0eab8b9d4b0ea25c5f4":[2,0,32,44], +"class_team_speak3___node___channelgroup.html#a50699be5fe1e43f7ae2e528db3c1098b":[2,0,32,61], +"class_team_speak3___node___channelgroup.html#a534837db1e4d6add77dedcb5a3ddf1eb":[2,0,32,7], +"class_team_speak3___node___channelgroup.html#a585728537b56194aeab30b0316126b89":[2,0,32,30], +"class_team_speak3___node___channelgroup.html#a5a6888304aca8d5f12fecb460b0ef6d2":[2,0,32,35], +"class_team_speak3___node___channelgroup.html#a5e9be0418e0cc969d47f4b7475adb21d":[2,0,32,53], +"class_team_speak3___node___channelgroup.html#a63fb203f511e99625428f70f0525950c":[2,0,32,33], +"class_team_speak3___node___channelgroup.html#a6589a4fedd410e9cdb55fe20abc410c0":[2,0,32,20], +"class_team_speak3___node___channelgroup.html#a70accf5a9d96f0dbe91ee28541bd5eba":[2,0,32,11], +"class_team_speak3___node___channelgroup.html#a716e7512816cf490e5a16ec307f7d889":[2,0,32,52], +"class_team_speak3___node___channelgroup.html#a732408c9a027db531af8ecce82401c07":[2,0,32,54], +"class_team_speak3___node___channelgroup.html#a7769506879dac3170344d8e59218b644":[2,0,32,45], +"class_team_speak3___node___channelgroup.html#a981a4c5601d67abd85b1a8dd41faf445":[2,0,32,13], +"class_team_speak3___node___channelgroup.html#a9a64eeb8d1df8872244cd8875460047a":[2,0,32,15], +"class_team_speak3___node___channelgroup.html#a9c416b77eeea1ecec6652936703d9ff7":[2,0,32,50], +"class_team_speak3___node___channelgroup.html#a9c4b8d414bda3f3abb8b6921a7f70a07":[2,0,32,6], +"class_team_speak3___node___channelgroup.html#a9c90aaa04b378dab3f24eb297a9951d3":[2,0,32,16], +"class_team_speak3___node___channelgroup.html#a9ead519e8396990ba30d79d6bed9d286":[2,0,32,41], +"class_team_speak3___node___channelgroup.html#aa4c0c3d9766097b60e5a6e2a4937bd7c":[2,0,32,14], +"class_team_speak3___node___channelgroup.html#aa78cba098574598dd9c0331cac1f39a1":[2,0,32,24], +"class_team_speak3___node___channelgroup.html#ac1b521aa7f9871103da5cbb5d3330125":[2,0,32,31], +"class_team_speak3___node___channelgroup.html#ac1bdee23c7d066edf3d6cb8e75999887":[2,0,32,59], +"class_team_speak3___node___channelgroup.html#ac37f09fe4b9291a0b2062e910d617b83":[2,0,32,12], +"class_team_speak3___node___channelgroup.html#ac66aeb30418e385a5727c191bb8df87d":[2,0,32,40], +"class_team_speak3___node___channelgroup.html#ac8ab685826ff08e853de2aebad9df459":[2,0,32,55], +"class_team_speak3___node___channelgroup.html#acadc746cd7eb244d61f195494924f6b8":[2,0,32,58], +"class_team_speak3___node___channelgroup.html#acf3c56763859b8adb21379f0cc6394ad":[2,0,32,32], +"class_team_speak3___node___channelgroup.html#ad0d64388e2a374203fa16760b923b087":[2,0,32,51], +"class_team_speak3___node___channelgroup.html#ad22d04a2800ae672f6117de3afb0e9c4":[2,0,32,42], +"class_team_speak3___node___channelgroup.html#ad826df3c71029ca48839dbe9aa3559b8":[2,0,32,28], +"class_team_speak3___node___channelgroup.html#ad9aee4153360fd8139f6b0d68efff56f":[2,0,32,46], +"class_team_speak3___node___channelgroup.html#adb87ddbef3247f346c2623f4d91981a1":[2,0,32,47], +"class_team_speak3___node___channelgroup.html#ae0bc51c79f86fc58f7900d67fe86ae8a":[2,0,32,17], +"class_team_speak3___node___channelgroup.html#af63ae54f10c02ec6b1033425f795fef4":[2,0,32,29], +"class_team_speak3___node___channelgroup.html#af6811efc5065b8aadfd6792334ea6977":[2,0,32,21], +"class_team_speak3___node___channelgroup.html#af6e1416ad2e568f48ff0d85b15b2a673":[2,0,32,26], +"class_team_speak3___node___channelgroup.html#af7b11f19a1f547f247e32d4f70c42119":[2,0,32,4], +"class_team_speak3___node___channelgroup.html#afbed20ee78d7e5a38097078dd91e70fd":[2,0,32,36], +"class_team_speak3___node___client.html":[2,0,33], +"class_team_speak3___node___client.html#a02ce34dce8fbf7881ce2323f7af0dca3":[2,0,33,38], +"class_team_speak3___node___client.html#a0ba0213562c9ca67efa1507076ca3079":[2,0,33,29], +"class_team_speak3___node___client.html#a0bffc69732548b99511434e22caf17ec":[2,0,33,8], +"class_team_speak3___node___client.html#a0d9eac93fcf1b8efae5eb00feefc250c":[2,0,33,0], +"class_team_speak3___node___client.html#a0e64a76b7a553a83145cd9b42e6d3041":[2,0,33,5], +"class_team_speak3___node___client.html#a0ee114d931783274bcbb344c8beccf91":[2,0,33,3], +"class_team_speak3___node___client.html#a13303ca9275df184348ed7363d9d7c9a":[2,0,33,47], +"class_team_speak3___node___client.html#a14930274e5498a5a8816ef751ff87946":[2,0,33,69], +"class_team_speak3___node___client.html#a14a79cc9ca202ba4dbfc054f0c18583f":[2,0,33,70], +"class_team_speak3___node___client.html#a165635e00e068e1f35ae2f32082334b2":[2,0,33,25], +"class_team_speak3___node___client.html#a19b5c8aaac5ef0af2f1393bffea186c5":[2,0,33,50], +"class_team_speak3___node___client.html#a1b0100e4a548e9464d75dcbfe6ac297a":[2,0,33,61], +"class_team_speak3___node___client.html#a1b028c8df6a52433a3e6b2f8ab302553":[2,0,33,22], +"class_team_speak3___node___client.html#a1c1b0fa71731df7ac3d4098b046938c7":[2,0,33,20], +"class_team_speak3___node___client.html#a1c78dbb54df73f8c5dabe41ebd476207":[2,0,33,56], +"class_team_speak3___node___client.html#a1cde3ec654c5ee8e9c6aaf187f9f037b":[2,0,33,31], +"class_team_speak3___node___client.html#a266578bece0506453e1f1bfba1f08966":[2,0,33,52], +"class_team_speak3___node___client.html#a3273e5078ee49a4bd55620327ed09a5e":[2,0,33,62], +"class_team_speak3___node___client.html#a33efbacf1a9aa094ccc39b0b25f3d369":[2,0,33,75], +"class_team_speak3___node___client.html#a35dcdb8a7b62d7990307bfb95ce3937c":[2,0,33,32], +"class_team_speak3___node___client.html#a37b39fa104ce36c0f0ea142934c05346":[2,0,33,73], +"class_team_speak3___node___client.html#a3d3f27dab5569edf3a737be080e7c8bc":[2,0,33,40], +"class_team_speak3___node___client.html#a3debc27139d7a9af950f0db6f47c47c8":[2,0,33,14], +"class_team_speak3___node___client.html#a44618fb948562e89515330e65d08da9a":[2,0,33,35], +"class_team_speak3___node___client.html#a4a0a5545abc2460d1d9b3d6b52d07cbe":[2,0,33,36], +"class_team_speak3___node___client.html#a4a941f045f697ed0ed494e9d785b037b":[2,0,33,23], +"class_team_speak3___node___client.html#a4b9dee48bb72f0eab8b9d4b0ea25c5f4":[2,0,33,57], +"class_team_speak3___node___client.html#a501fc3581568d70b327416f47b12520a":[2,0,33,12], +"class_team_speak3___node___client.html#a50699be5fe1e43f7ae2e528db3c1098b":[2,0,33,74], +"class_team_speak3___node___client.html#a585728537b56194aeab30b0316126b89":[2,0,33,43], +"class_team_speak3___node___client.html#a5a6888304aca8d5f12fecb460b0ef6d2":[2,0,33,48], +"class_team_speak3___node___client.html#a5e9be0418e0cc969d47f4b7475adb21d":[2,0,33,66], +"class_team_speak3___node___client.html#a5ec1034f4f801800ab5a86741c66bbd0":[2,0,33,19], +"class_team_speak3___node___client.html#a62a1fed92852d1b91b7a5f6036a867f3":[2,0,33,28] +}; diff --git a/lib/docs/html/navtreeindex3.js b/lib/docs/html/navtreeindex3.js new file mode 100644 index 0000000..7f0bb00 --- /dev/null +++ b/lib/docs/html/navtreeindex3.js @@ -0,0 +1,253 @@ +var NAVTREEINDEX3 = +{ +"class_team_speak3___node___client.html#a63fb203f511e99625428f70f0525950c":[2,0,33,46], +"class_team_speak3___node___client.html#a63fd3d66404a46a1ca7fb0795a83818e":[2,0,33,4], +"class_team_speak3___node___client.html#a6589a4fedd410e9cdb55fe20abc410c0":[2,0,33,33], +"class_team_speak3___node___client.html#a66d8bd549b7add92ad2e0046a9fa9889":[2,0,33,30], +"class_team_speak3___node___client.html#a70f773eefe1d4f67f5c15974ca609a6d":[2,0,33,18], +"class_team_speak3___node___client.html#a7101c45f9e7aa653b572de8b2f41109b":[2,0,33,21], +"class_team_speak3___node___client.html#a716e7512816cf490e5a16ec307f7d889":[2,0,33,65], +"class_team_speak3___node___client.html#a7231a1c384650d2588b4aec4d3977f6d":[2,0,33,17], +"class_team_speak3___node___client.html#a732408c9a027db531af8ecce82401c07":[2,0,33,67], +"class_team_speak3___node___client.html#a7769506879dac3170344d8e59218b644":[2,0,33,58], +"class_team_speak3___node___client.html#a8b4bf4bb745a772274d71b40f90b8dc7":[2,0,33,2], +"class_team_speak3___node___client.html#a94a311c81d0e6e5f94e9c0470cd8d054":[2,0,33,16], +"class_team_speak3___node___client.html#a9bec04a0c6f0174811830bd5048ef78e":[2,0,33,1], +"class_team_speak3___node___client.html#a9c416b77eeea1ecec6652936703d9ff7":[2,0,33,63], +"class_team_speak3___node___client.html#a9d9a31c0821e3dc13da505000b0adcbf":[2,0,33,24], +"class_team_speak3___node___client.html#a9ead519e8396990ba30d79d6bed9d286":[2,0,33,54], +"class_team_speak3___node___client.html#aa78cba098574598dd9c0331cac1f39a1":[2,0,33,37], +"class_team_speak3___node___client.html#aac47e6e99aa14a5e33696b67854f4d36":[2,0,33,6], +"class_team_speak3___node___client.html#ab78c8a0a0bcd7458d310a9e05f012409":[2,0,33,51], +"class_team_speak3___node___client.html#ab7f8adc763cf45dd64b51bae0e17d884":[2,0,33,11], +"class_team_speak3___node___client.html#ac1b521aa7f9871103da5cbb5d3330125":[2,0,33,44], +"class_team_speak3___node___client.html#ac1bdee23c7d066edf3d6cb8e75999887":[2,0,33,72], +"class_team_speak3___node___client.html#ac3e560bcb715c46919000cd1820f7382":[2,0,33,27], +"class_team_speak3___node___client.html#ac66aeb30418e385a5727c191bb8df87d":[2,0,33,53], +"class_team_speak3___node___client.html#ac6bd2a4585bfe075d794a6fb5842fdba":[2,0,33,26], +"class_team_speak3___node___client.html#ac8ab685826ff08e853de2aebad9df459":[2,0,33,68], +"class_team_speak3___node___client.html#acadc746cd7eb244d61f195494924f6b8":[2,0,33,71], +"class_team_speak3___node___client.html#acd8e79afa687108fcdbee4dad7a3cde0":[2,0,33,9], +"class_team_speak3___node___client.html#acf3c56763859b8adb21379f0cc6394ad":[2,0,33,45], +"class_team_speak3___node___client.html#ad0d64388e2a374203fa16760b923b087":[2,0,33,64], +"class_team_speak3___node___client.html#ad22d04a2800ae672f6117de3afb0e9c4":[2,0,33,55], +"class_team_speak3___node___client.html#ad826df3c71029ca48839dbe9aa3559b8":[2,0,33,41], +"class_team_speak3___node___client.html#ad9aee4153360fd8139f6b0d68efff56f":[2,0,33,59], +"class_team_speak3___node___client.html#adab4e78a0ba4366b8d73d50993bbec49":[2,0,33,10], +"class_team_speak3___node___client.html#adb87ddbef3247f346c2623f4d91981a1":[2,0,33,60], +"class_team_speak3___node___client.html#ade2debd43e978373134575711c85dd17":[2,0,33,7], +"class_team_speak3___node___client.html#ae4dbe8372c97ad18ffb930022ba7e01d":[2,0,33,15], +"class_team_speak3___node___client.html#af26bd82c2d6b4e42304d828a4a8ba4f8":[2,0,33,13], +"class_team_speak3___node___client.html#af63ae54f10c02ec6b1033425f795fef4":[2,0,33,42], +"class_team_speak3___node___client.html#af6811efc5065b8aadfd6792334ea6977":[2,0,33,34], +"class_team_speak3___node___client.html#af6e1416ad2e568f48ff0d85b15b2a673":[2,0,33,39], +"class_team_speak3___node___client.html#afbed20ee78d7e5a38097078dd91e70fd":[2,0,33,49], +"class_team_speak3___node___exception.html":[2,0,34], +"class_team_speak3___node___exception.html#a3bfcdf7b85a393b7a8b05b048ae3279c":[2,0,34,0], +"class_team_speak3___node___exception.html#ae7d4b369dd11d3cf56d120acae0cf1db":[2,0,34,1], +"class_team_speak3___node___host.html":[2,0,35], +"class_team_speak3___node___host.html#a02ce34dce8fbf7881ce2323f7af0dca3":[2,0,35,72], +"class_team_speak3___node___host.html#a02d37eda05e217d66ab8aaed01e32203":[2,0,35,26], +"class_team_speak3___node___host.html#a08abe8ba2f675d88656445bcdbd7d87a":[2,0,35,52], +"class_team_speak3___node___host.html#a0abbd00f4d554a868c936f252eeda695":[2,0,35,64], +"class_team_speak3___node___host.html#a0c41dd934b1d3cf696f0d9ad68b9b4f1":[2,0,35,12], +"class_team_speak3___node___host.html#a107c77c012604e9c2964f72871da1a23":[2,0,35,39], +"class_team_speak3___node___host.html#a13303ca9275df184348ed7363d9d7c9a":[2,0,35,81], +"class_team_speak3___node___host.html#a14930274e5498a5a8816ef751ff87946":[2,0,35,102], +"class_team_speak3___node___host.html#a14a79cc9ca202ba4dbfc054f0c18583f":[2,0,35,113], +"class_team_speak3___node___host.html#a1735a2cfe745783b5d1aed7d74733e3d":[2,0,35,6], +"class_team_speak3___node___host.html#a19b5c8aaac5ef0af2f1393bffea186c5":[2,0,35,84], +"class_team_speak3___node___host.html#a1a3e7ae9444d37169d52376d5bde2b03":[2,0,35,16], +"class_team_speak3___node___host.html#a1b0100e4a548e9464d75dcbfe6ac297a":[2,0,35,94], +"class_team_speak3___node___host.html#a1c78dbb54df73f8c5dabe41ebd476207":[2,0,35,89], +"class_team_speak3___node___host.html#a1cad8d64ec44907edc6931b1875bfa41":[2,0,35,108], +"class_team_speak3___node___host.html#a1cd8d3f3f4457d827bd8aa7af6b6d457":[2,0,35,10], +"class_team_speak3___node___host.html#a1d69e0f2faa753ead87cb3262cbdbe4e":[2,0,35,2], +"class_team_speak3___node___host.html#a1dd45d32e7e7771ff4edbde1d0617c5e":[2,0,35,42], +"class_team_speak3___node___host.html#a1f26a3c66014960c1782bbaffc904cde":[2,0,35,36], +"class_team_speak3___node___host.html#a211d5a64cffe5619b24380332e61075a":[2,0,35,31], +"class_team_speak3___node___host.html#a266578bece0506453e1f1bfba1f08966":[2,0,35,85], +"class_team_speak3___node___host.html#a277d0e0f1bc4e1a1353b339c99202cfa":[2,0,35,40], +"class_team_speak3___node___host.html#a2abc65f1b0da4b3bc64dbda8d47c0f67":[2,0,35,45], +"class_team_speak3___node___host.html#a2fc2c5feb088d545c4d4140a1bed1993":[2,0,35,27], +"class_team_speak3___node___host.html#a3273e5078ee49a4bd55620327ed09a5e":[2,0,35,95], +"class_team_speak3___node___host.html#a3303cb17f6a97ff39b6ecfd0cf88f3c1":[2,0,35,29], +"class_team_speak3___node___host.html#a33efbacf1a9aa094ccc39b0b25f3d369":[2,0,35,118], +"class_team_speak3___node___host.html#a35dcdb8a7b62d7990307bfb95ce3937c":[2,0,35,66], +"class_team_speak3___node___host.html#a3684344def5e16f20bd246cca546d54f":[2,0,35,14], +"class_team_speak3___node___host.html#a37b39fa104ce36c0f0ea142934c05346":[2,0,35,116], +"class_team_speak3___node___host.html#a3d3f27dab5569edf3a737be080e7c8bc":[2,0,35,74], +"class_team_speak3___node___host.html#a3e2fffb397ede4f85bf1d97ad309874d":[2,0,35,60], +"class_team_speak3___node___host.html#a4384f0b7ab08fd30f446a936a882fc71":[2,0,35,41], +"class_team_speak3___node___host.html#a44618fb948562e89515330e65d08da9a":[2,0,35,69], +"class_team_speak3___node___host.html#a45450f27e3765893b912407ce640280f":[2,0,35,37], +"class_team_speak3___node___host.html#a458a95deb930c6a8fad35c74ed1e24b7":[2,0,35,4], +"class_team_speak3___node___host.html#a46731245bd45599ef4d68cef0b4ca416":[2,0,35,3], +"class_team_speak3___node___host.html#a47648cae36cfe3c602bb02ef3eb840e2":[2,0,35,28], +"class_team_speak3___node___host.html#a48619bb6662f66495e7b16378d3ff914":[2,0,35,51], +"class_team_speak3___node___host.html#a49a89cf6d6be89d27c56849efd3b21b9":[2,0,35,54], +"class_team_speak3___node___host.html#a4a0a5545abc2460d1d9b3d6b52d07cbe":[2,0,35,70], +"class_team_speak3___node___host.html#a4ac8fb7a2f5b33ff5a0c0ca9eedfe642":[2,0,35,63], +"class_team_speak3___node___host.html#a4b9dee48bb72f0eab8b9d4b0ea25c5f4":[2,0,35,90], +"class_team_speak3___node___host.html#a4bdd23ed10633b2a3b42231f1642abfc":[2,0,35,33], +"class_team_speak3___node___host.html#a505bafb855213b5b46de201237ed0c9f":[2,0,35,50], +"class_team_speak3___node___host.html#a50699be5fe1e43f7ae2e528db3c1098b":[2,0,35,117], +"class_team_speak3___node___host.html#a53a9e8c477b07c1096cab13aa9c9b344":[2,0,35,43], +"class_team_speak3___node___host.html#a54992d4abd6db0b12dc8aa4aac76b14d":[2,0,35,32], +"class_team_speak3___node___host.html#a585728537b56194aeab30b0316126b89":[2,0,35,77], +"class_team_speak3___node___host.html#a5a6888304aca8d5f12fecb460b0ef6d2":[2,0,35,82], +"class_team_speak3___node___host.html#a5e9be0418e0cc969d47f4b7475adb21d":[2,0,35,99], +"class_team_speak3___node___host.html#a62c9504f6d6e9128a2ef2cbc34f257b6":[2,0,35,22], +"class_team_speak3___node___host.html#a63fb203f511e99625428f70f0525950c":[2,0,35,80], +"class_team_speak3___node___host.html#a657d0a513ca87fbce0c095c3235be2ec":[2,0,35,65], +"class_team_speak3___node___host.html#a657df059e9d5c25b8106dea2823270d2":[2,0,35,105], +"class_team_speak3___node___host.html#a6589a4fedd410e9cdb55fe20abc410c0":[2,0,35,67], +"class_team_speak3___node___host.html#a690b4c2d08d8fb0da6d89936b01fc66a":[2,0,35,1], +"class_team_speak3___node___host.html#a6c2afc0481179435222ed45aebd088fa":[2,0,35,30], +"class_team_speak3___node___host.html#a716e7512816cf490e5a16ec307f7d889":[2,0,35,98], +"class_team_speak3___node___host.html#a732408c9a027db531af8ecce82401c07":[2,0,35,100], +"class_team_speak3___node___host.html#a7496a4bd1c575563b502e21b4c866415":[2,0,35,46], +"class_team_speak3___node___host.html#a7769506879dac3170344d8e59218b644":[2,0,35,91], +"class_team_speak3___node___host.html#a7b360313c50361ead406fa45564d100f":[2,0,35,56], +"class_team_speak3___node___host.html#a7cdbb02364fbdcde55f6931ecfed32e6":[2,0,35,7], +"class_team_speak3___node___host.html#a8495ade30f51bda37e41b719ed183092":[2,0,35,24], +"class_team_speak3___node___host.html#a884c27a8e4fdc135b3a71c2c3d833271":[2,0,35,18], +"class_team_speak3___node___host.html#a8875fdbef6f0a4e1948206d21b149454":[2,0,35,106], +"class_team_speak3___node___host.html#a8ae0e012a6b44b8957ee2266eff8df9b":[2,0,35,57], +"class_team_speak3___node___host.html#a8f92fb11501c8888349123fb04dae58c":[2,0,35,104], +"class_team_speak3___node___host.html#a901cadb5fd29aee73d4e86bb92db58c6":[2,0,35,61], +"class_team_speak3___node___host.html#a9a998c77512d885b738aa02871f5f36d":[2,0,35,25], +"class_team_speak3___node___host.html#a9afa569106eacc750249e699dc138937":[2,0,35,9], +"class_team_speak3___node___host.html#a9c416b77eeea1ecec6652936703d9ff7":[2,0,35,96], +"class_team_speak3___node___host.html#a9ead519e8396990ba30d79d6bed9d286":[2,0,35,87], +"class_team_speak3___node___host.html#a9fdc4c2abeecfaef1b677c072f0f0cb2":[2,0,35,112], +"class_team_speak3___node___host.html#aa158b0568f696c2b5cb780c24b8d1410":[2,0,35,62], +"class_team_speak3___node___host.html#aa78cba098574598dd9c0331cac1f39a1":[2,0,35,71], +"class_team_speak3___node___host.html#ab185118ab245fbd1068b2b0301dd21e7":[2,0,35,23], +"class_team_speak3___node___host.html#ab34c49d39d9e87f25168ea654005e893":[2,0,35,20], +"class_team_speak3___node___host.html#ab7453505efd28bab00fd4d72ded0c7ba":[2,0,35,47], +"class_team_speak3___node___host.html#ab878e12266917938b1f36830534f52b7":[2,0,35,58], +"class_team_speak3___node___host.html#ab91d6f68668f2680f1703a17eaf04594":[2,0,35,103], +"class_team_speak3___node___host.html#abaf68b9f5b0f6b650148ed9898b2a21a":[2,0,35,44], +"class_team_speak3___node___host.html#ac1b521aa7f9871103da5cbb5d3330125":[2,0,35,78], +"class_team_speak3___node___host.html#ac1bdee23c7d066edf3d6cb8e75999887":[2,0,35,115], +"class_team_speak3___node___host.html#ac61eb4d34ca8848758aad2721eb9083f":[2,0,35,53], +"class_team_speak3___node___host.html#ac66aeb30418e385a5727c191bb8df87d":[2,0,35,86], +"class_team_speak3___node___host.html#ac85d68211e51360f42e0d188f7f15e69":[2,0,35,109], +"class_team_speak3___node___host.html#ac8ab685826ff08e853de2aebad9df459":[2,0,35,101], +"class_team_speak3___node___host.html#acadc746cd7eb244d61f195494924f6b8":[2,0,35,114], +"class_team_speak3___node___host.html#acc10ad7c83e424cb785656695f2ad5ff":[2,0,35,15], +"class_team_speak3___node___host.html#acf3c56763859b8adb21379f0cc6394ad":[2,0,35,79], +"class_team_speak3___node___host.html#ad03325cb5a05509eb1a73ae947f3b899":[2,0,35,13], +"class_team_speak3___node___host.html#ad0d64388e2a374203fa16760b923b087":[2,0,35,97], +"class_team_speak3___node___host.html#ad18fcacc29347482852bc26404f0afeb":[2,0,35,8], +"class_team_speak3___node___host.html#ad22d04a2800ae672f6117de3afb0e9c4":[2,0,35,88], +"class_team_speak3___node___host.html#ad672c568344dc5941225d92a87a537e2":[2,0,35,48], +"class_team_speak3___node___host.html#ad68c4cece91f5ad117e157fa1bd176ba":[2,0,35,111], +"class_team_speak3___node___host.html#ad826df3c71029ca48839dbe9aa3559b8":[2,0,35,75], +"class_team_speak3___node___host.html#ad9aee4153360fd8139f6b0d68efff56f":[2,0,35,92], +"class_team_speak3___node___host.html#adb87ddbef3247f346c2623f4d91981a1":[2,0,35,93], +"class_team_speak3___node___host.html#add283a1e8d0938064cd37168af0eacda":[2,0,35,17], +"class_team_speak3___node___host.html#ae93b20cc3d56984e87836bd0985f93d3":[2,0,35,35], +"class_team_speak3___node___host.html#aebc3e06e7bffcc0dc0f725b1d60bbcc8":[2,0,35,11], +"class_team_speak3___node___host.html#aebce552f43d459d24b80a1b667480b5a":[2,0,35,34], +"class_team_speak3___node___host.html#aebf44520f2388654542193cbaeb1ffe6":[2,0,35,110], +"class_team_speak3___node___host.html#aed2480265ca34df1548b35b95f4ec3d1":[2,0,35,55], +"class_team_speak3___node___host.html#aee901f59e9bb4d87530d6b8a152b89be":[2,0,35,38], +"class_team_speak3___node___host.html#af215b492a79130730f05b1ce52cc1212":[2,0,35,49], +"class_team_speak3___node___host.html#af3c2ddcc3d5e62711d1b889446bfdd7e":[2,0,35,0], +"class_team_speak3___node___host.html#af40f36410c5e022810e3f1546e420eee":[2,0,35,5], +"class_team_speak3___node___host.html#af51beeafd1f513a233308775278f5bc1":[2,0,35,19], +"class_team_speak3___node___host.html#af60cb13dd90638c36de581f61ca8c92d":[2,0,35,21], +"class_team_speak3___node___host.html#af63ae54f10c02ec6b1033425f795fef4":[2,0,35,76], +"class_team_speak3___node___host.html#af6811efc5065b8aadfd6792334ea6977":[2,0,35,68], +"class_team_speak3___node___host.html#af6e1416ad2e568f48ff0d85b15b2a673":[2,0,35,73], +"class_team_speak3___node___host.html#af95c28ba0639e7d70276129a84e7d8a3":[2,0,35,107], +"class_team_speak3___node___host.html#afbed20ee78d7e5a38097078dd91e70fd":[2,0,35,83], +"class_team_speak3___node___host.html#afcdeba4b4a628d5a5d093ccad862681f":[2,0,35,59], +"class_team_speak3___node___server.html":[2,0,36], +"class_team_speak3___node___server.html#a02ce34dce8fbf7881ce2323f7af0dca3":[2,0,36,142], +"class_team_speak3___node___server.html#a06d451d9f1f484da9e902eadb52739e4":[2,0,36,103], +"class_team_speak3___node___server.html#a086d6141683f7aa0a6addbe13ae6da58":[2,0,36,54], +"class_team_speak3___node___server.html#a094080732e7f39c9ac07fbefdcbf5d6e":[2,0,36,90], +"class_team_speak3___node___server.html#a0a2c9e20c88b81275222acdd61a5f8c4":[2,0,36,110], +"class_team_speak3___node___server.html#a0a49ab51e9518d50606299944c143a9b":[2,0,36,38], +"class_team_speak3___node___server.html#a0bbeea2377896171ec7d971de382528f":[2,0,36,89], +"class_team_speak3___node___server.html#a0d3b40b9337ff37e5b2164d60ddd4e28":[2,0,36,52], +"class_team_speak3___node___server.html#a101d9234082d47f359ea39ca7bc1c0bf":[2,0,36,48], +"class_team_speak3___node___server.html#a12649be6d62d7aa194323bdd144a42c7":[2,0,36,75], +"class_team_speak3___node___server.html#a13303ca9275df184348ed7363d9d7c9a":[2,0,36,151], +"class_team_speak3___node___server.html#a14930274e5498a5a8816ef751ff87946":[2,0,36,172], +"class_team_speak3___node___server.html#a149e1b1857e51c8b9ebfb0818b5bc2f7":[2,0,36,40], +"class_team_speak3___node___server.html#a14a79cc9ca202ba4dbfc054f0c18583f":[2,0,36,177], +"class_team_speak3___node___server.html#a162441d331999a7fdfc7d8fcd2d8978b":[2,0,36,116], +"class_team_speak3___node___server.html#a1625df1060f7b19b5e607174df29406b":[2,0,36,61], +"class_team_speak3___node___server.html#a16866a89acc0ebab56ac281fd481fa5c":[2,0,36,16], +"class_team_speak3___node___server.html#a175e7b6d81e8e6c363df445874e5932b":[2,0,36,133], +"class_team_speak3___node___server.html#a176d8a85e03314cbe7422749006122b9":[2,0,36,118], +"class_team_speak3___node___server.html#a194c9f52336862f3168c408c413d4279":[2,0,36,26], +"class_team_speak3___node___server.html#a19b5c8aaac5ef0af2f1393bffea186c5":[2,0,36,154], +"class_team_speak3___node___server.html#a1b0100e4a548e9464d75dcbfe6ac297a":[2,0,36,164], +"class_team_speak3___node___server.html#a1c78dbb54df73f8c5dabe41ebd476207":[2,0,36,159], +"class_team_speak3___node___server.html#a1cc7958a2d747a65c877408a2e0772f2":[2,0,36,135], +"class_team_speak3___node___server.html#a1cf6d79bee67d387752af85f28901dac":[2,0,36,130], +"class_team_speak3___node___server.html#a2005bdcfe3f564880c3be8d9249f9419":[2,0,36,19], +"class_team_speak3___node___server.html#a21ce82924bf869c8033ef3fcde598795":[2,0,36,123], +"class_team_speak3___node___server.html#a2406d3d74974d39b296ec5af4b7643c4":[2,0,36,60], +"class_team_speak3___node___server.html#a266578bece0506453e1f1bfba1f08966":[2,0,36,155], +"class_team_speak3___node___server.html#a276cde0701f7051fd3cc33e8f1d304c2":[2,0,36,82], +"class_team_speak3___node___server.html#a2a6d384cf01078cb72cd9f9670cebb57":[2,0,36,113], +"class_team_speak3___node___server.html#a2bd6ce432c9dd08e550289b1cc0a16bd":[2,0,36,44], +"class_team_speak3___node___server.html#a2f9a35ca93ed9d7341e131142779acbe":[2,0,36,94], +"class_team_speak3___node___server.html#a2fda0933d13a8ffad575bf5c33be6aaa":[2,0,36,5], +"class_team_speak3___node___server.html#a30215b7852290912517096a1555ba7ee":[2,0,36,95], +"class_team_speak3___node___server.html#a318977af4cbbe51289e68bdbd57a9342":[2,0,36,6], +"class_team_speak3___node___server.html#a3273e5078ee49a4bd55620327ed09a5e":[2,0,36,165], +"class_team_speak3___node___server.html#a33efbacf1a9aa094ccc39b0b25f3d369":[2,0,36,182], +"class_team_speak3___node___server.html#a347baec8fce678ab8a8f464f0398ebed":[2,0,36,57], +"class_team_speak3___node___server.html#a34911a30ab894a628124c6e8ec3131f1":[2,0,36,10], +"class_team_speak3___node___server.html#a35aee62e8ba86d0ea80ea5cafd9c5801":[2,0,36,42], +"class_team_speak3___node___server.html#a37b39fa104ce36c0f0ea142934c05346":[2,0,36,180], +"class_team_speak3___node___server.html#a387de111424128521346a04cd7be8710":[2,0,36,50], +"class_team_speak3___node___server.html#a3938d6ae2889a541277558b87d21991f":[2,0,36,31], +"class_team_speak3___node___server.html#a3b7ead504bbc7f2070f46d19e072afd9":[2,0,36,62], +"class_team_speak3___node___server.html#a3bd7e2be71de3187099ef1446f1a186b":[2,0,36,35], +"class_team_speak3___node___server.html#a3bf58118ecbc54cde9cd4a652d139352":[2,0,36,127], +"class_team_speak3___node___server.html#a3bfc6b821cabd6b26dfdc32f70111161":[2,0,36,14], +"class_team_speak3___node___server.html#a3d3f27dab5569edf3a737be080e7c8bc":[2,0,36,144], +"class_team_speak3___node___server.html#a3ef412bad6efe2bde9d5ebcf17a7e113":[2,0,36,129], +"class_team_speak3___node___server.html#a3f25f20028741a14cc652779159707cb":[2,0,36,174], +"class_team_speak3___node___server.html#a4064b80b0f7796367e61438ae9a0cd5a":[2,0,36,81], +"class_team_speak3___node___server.html#a42480bcff5af21ef8cc4af469636eadd":[2,0,36,18], +"class_team_speak3___node___server.html#a442c9127e61b6e1d31e368af71443b1a":[2,0,36,68], +"class_team_speak3___node___server.html#a44618fb948562e89515330e65d08da9a":[2,0,36,139], +"class_team_speak3___node___server.html#a454f7bcafaf0bf2aa4c073d5267eb2c3":[2,0,36,41], +"class_team_speak3___node___server.html#a46509385b685f0154e04c2774d74652a":[2,0,36,97], +"class_team_speak3___node___server.html#a46e722bae91524ef2d2b80a9f4b02cd8":[2,0,36,102], +"class_team_speak3___node___server.html#a4829c324cac2866b7748b9ba48ee17e1":[2,0,36,88], +"class_team_speak3___node___server.html#a4a0a5545abc2460d1d9b3d6b52d07cbe":[2,0,36,140], +"class_team_speak3___node___server.html#a4a88f38a81880b5c6a33cb5d084eb56a":[2,0,36,15], +"class_team_speak3___node___server.html#a4b65797b14ce1dbc5ab123840216d8d5":[2,0,36,9], +"class_team_speak3___node___server.html#a4b9dee48bb72f0eab8b9d4b0ea25c5f4":[2,0,36,160], +"class_team_speak3___node___server.html#a4c13644c69f768e0a449d5d0b7bcd1a9":[2,0,36,121], +"class_team_speak3___node___server.html#a4e8e46758ad2c7a502c04f22af3e47ca":[2,0,36,83], +"class_team_speak3___node___server.html#a50699be5fe1e43f7ae2e528db3c1098b":[2,0,36,181], +"class_team_speak3___node___server.html#a50f029dcd7ba276c8b9c40c99c50f38d":[2,0,36,136], +"class_team_speak3___node___server.html#a529b1954afa6d9c93eb1c75e4b529a2d":[2,0,36,69], +"class_team_speak3___node___server.html#a54a998325257872475957ca2ba62faea":[2,0,36,84], +"class_team_speak3___node___server.html#a55f06b4b0c636dcc41a877edc5a3a7d7":[2,0,36,132], +"class_team_speak3___node___server.html#a585728537b56194aeab30b0316126b89":[2,0,36,147], +"class_team_speak3___node___server.html#a593ea60776cecfce292855f8fdce050d":[2,0,36,56], +"class_team_speak3___node___server.html#a5a35cfb06bb9e8fbf8d8716a8de1c047":[2,0,36,120], +"class_team_speak3___node___server.html#a5a61fde00711fbde340c0917c738d19d":[2,0,36,119], +"class_team_speak3___node___server.html#a5a6888304aca8d5f12fecb460b0ef6d2":[2,0,36,152], +"class_team_speak3___node___server.html#a5c94f444f21e92a1a8045256dbe8eda6":[2,0,36,126], +"class_team_speak3___node___server.html#a5ca709d4b3a73686459ef0b09bd7d71a":[2,0,36,47], +"class_team_speak3___node___server.html#a5daf725f479aa4f401739c6af5b86ea2":[2,0,36,0], +"class_team_speak3___node___server.html#a5e9be0418e0cc969d47f4b7475adb21d":[2,0,36,169], +"class_team_speak3___node___server.html#a63a380c17cc49c30093672163b164502":[2,0,36,124], +"class_team_speak3___node___server.html#a63fb203f511e99625428f70f0525950c":[2,0,36,150], +"class_team_speak3___node___server.html#a6498965a34fe39e72abc006cfdcf04b8":[2,0,36,117], +"class_team_speak3___node___server.html#a6589a4fedd410e9cdb55fe20abc410c0":[2,0,36,137], +"class_team_speak3___node___server.html#a65f5b13eca06755b6ef96e6bbe80947b":[2,0,36,101] +}; diff --git a/lib/docs/html/navtreeindex4.js b/lib/docs/html/navtreeindex4.js new file mode 100644 index 0000000..df4f939 --- /dev/null +++ b/lib/docs/html/navtreeindex4.js @@ -0,0 +1,253 @@ +var NAVTREEINDEX4 = +{ +"class_team_speak3___node___server.html#a6866211126530af14d9c60976960b39f":[2,0,36,76], +"class_team_speak3___node___server.html#a69f43173d45cc599b05a4e6f9bef5baa":[2,0,36,63], +"class_team_speak3___node___server.html#a6a560f0bf64a8c22c1b2542874093ba0":[2,0,36,79], +"class_team_speak3___node___server.html#a6c7e742fb77bb0affe7d25dbc5aa1561":[2,0,36,85], +"class_team_speak3___node___server.html#a6cdf7f6012d20caf6b2be3b42ffb5c21":[2,0,36,105], +"class_team_speak3___node___server.html#a6d0211802f5d1248bc69c4fdefa3d417":[2,0,36,108], +"class_team_speak3___node___server.html#a6e9970aec423b74cf392c7259853557b":[2,0,36,98], +"class_team_speak3___node___server.html#a6ee64afd6c312ff8644725823ab0b078":[2,0,36,80], +"class_team_speak3___node___server.html#a716e7512816cf490e5a16ec307f7d889":[2,0,36,168], +"class_team_speak3___node___server.html#a72cfe9527297ec1e6536b9c073c0858b":[2,0,36,115], +"class_team_speak3___node___server.html#a732408c9a027db531af8ecce82401c07":[2,0,36,170], +"class_team_speak3___node___server.html#a766abde5e479d793ba266dd680b5ca7b":[2,0,36,128], +"class_team_speak3___node___server.html#a7769506879dac3170344d8e59218b644":[2,0,36,161], +"class_team_speak3___node___server.html#a78d5842c3b8e9248f8a46df03d041d77":[2,0,36,66], +"class_team_speak3___node___server.html#a7ad80214abca716151ed418dd0a65129":[2,0,36,125], +"class_team_speak3___node___server.html#a7d683c16389f1b1d72e38b783638c3c4":[2,0,36,114], +"class_team_speak3___node___server.html#a7d88676f4ef80466b1a24945c49a006b":[2,0,36,13], +"class_team_speak3___node___server.html#a7ddb6b6324cf20c1ec0166d98914670e":[2,0,36,74], +"class_team_speak3___node___server.html#a7ff9f7bff622429c810933b53454adb3":[2,0,36,51], +"class_team_speak3___node___server.html#a87eed3ba8fc9c48f40b84fb54fbf3584":[2,0,36,72], +"class_team_speak3___node___server.html#a899389702e061146235d7204bc56a332":[2,0,36,30], +"class_team_speak3___node___server.html#a8aaa42f632bbf8760d1666756cd4b744":[2,0,36,39], +"class_team_speak3___node___server.html#a8c8a3d44efa6582d80da3e647d934429":[2,0,36,58], +"class_team_speak3___node___server.html#a8d2a092fb314a86b304ad3eb7d0d295b":[2,0,36,64], +"class_team_speak3___node___server.html#a8ddb527606200718f41d0ef06beb40b8":[2,0,36,43], +"class_team_speak3___node___server.html#a8ec028d2a9dbd36794015e8614831c8d":[2,0,36,21], +"class_team_speak3___node___server.html#a912200d0dad1ac57581786d8f09948e4":[2,0,36,12], +"class_team_speak3___node___server.html#a93c751a3d29014c0c7c6ec67ad4ae15a":[2,0,36,25], +"class_team_speak3___node___server.html#a953aaca1b1d5e024b37221146d04b296":[2,0,36,111], +"class_team_speak3___node___server.html#a96197181eefbe0489b88294fe46ef715":[2,0,36,104], +"class_team_speak3___node___server.html#a96f49940c54b63c3611702d701f4d32f":[2,0,36,77], +"class_team_speak3___node___server.html#a9a0e159ffbacd9bf36a791862732f525":[2,0,36,100], +"class_team_speak3___node___server.html#a9c416b77eeea1ecec6652936703d9ff7":[2,0,36,166], +"class_team_speak3___node___server.html#a9c4ce4a5649ba8aa595a7f2fdafdf951":[2,0,36,175], +"class_team_speak3___node___server.html#a9cbda0c1f2afcd8fdcf8b558b7d03e56":[2,0,36,70], +"class_team_speak3___node___server.html#a9ead519e8396990ba30d79d6bed9d286":[2,0,36,157], +"class_team_speak3___node___server.html#a9f0d8234a8274bef62c40954c4dab731":[2,0,36,23], +"class_team_speak3___node___server.html#aa09963df399797506a9f5107541f826d":[2,0,36,87], +"class_team_speak3___node___server.html#aa16f874d9d2403b4d4182bfb39729ced":[2,0,36,78], +"class_team_speak3___node___server.html#aa2d9831041f8a981349f4a5b92729efe":[2,0,36,134], +"class_team_speak3___node___server.html#aa2f308ca18a93f602af0e38155c48deb":[2,0,36,49], +"class_team_speak3___node___server.html#aa6e9bfacd257844a49eb0e2444f468bb":[2,0,36,3], +"class_team_speak3___node___server.html#aa78cba098574598dd9c0331cac1f39a1":[2,0,36,141], +"class_team_speak3___node___server.html#aab0725d35c8c4f8c075e85418b9b5955":[2,0,36,73], +"class_team_speak3___node___server.html#aac1d19d84aba2017c807ab3ccabe9d6b":[2,0,36,22], +"class_team_speak3___node___server.html#aadd60ec1808c607b6ad6a62d95f8bacf":[2,0,36,55], +"class_team_speak3___node___server.html#aaeffd8b897c67a8b483eba32d2c63c9c":[2,0,36,86], +"class_team_speak3___node___server.html#ab2f0462d9820e266e91bccb67529311d":[2,0,36,29], +"class_team_speak3___node___server.html#ab384bb6d76c0dfb582c877852ddba1dc":[2,0,36,24], +"class_team_speak3___node___server.html#ab6042c937b2e0b7eccd7dca9c98fe8b6":[2,0,36,96], +"class_team_speak3___node___server.html#ab607dab98be8ad823c6ea639045ceadd":[2,0,36,107], +"class_team_speak3___node___server.html#aba2804d7bb9a1b9994af24c35fcc9484":[2,0,36,93], +"class_team_speak3___node___server.html#aba6de5270fed2d117ad5cdb3f5503b43":[2,0,36,8], +"class_team_speak3___node___server.html#abf2cdfe68a150d47712165b91db12bbc":[2,0,36,11], +"class_team_speak3___node___server.html#ac159e3dff47e2dca9b7baabcd75265a7":[2,0,36,122], +"class_team_speak3___node___server.html#ac1b521aa7f9871103da5cbb5d3330125":[2,0,36,148], +"class_team_speak3___node___server.html#ac1bdee23c7d066edf3d6cb8e75999887":[2,0,36,179], +"class_team_speak3___node___server.html#ac42ed34f0e7faeea2f5c8a56196f2eef":[2,0,36,28], +"class_team_speak3___node___server.html#ac66aeb30418e385a5727c191bb8df87d":[2,0,36,156], +"class_team_speak3___node___server.html#ac81f6d268d0bd65d62adf54fdfb6f74c":[2,0,36,106], +"class_team_speak3___node___server.html#ac8ab685826ff08e853de2aebad9df459":[2,0,36,171], +"class_team_speak3___node___server.html#acadc746cd7eb244d61f195494924f6b8":[2,0,36,178], +"class_team_speak3___node___server.html#acb9a0d106c96e3367b3c7484519b5cbb":[2,0,36,46], +"class_team_speak3___node___server.html#acbd1a4c797a041242eeb5f0ead1e7667":[2,0,36,65], +"class_team_speak3___node___server.html#acc00747588b6b1320c7f08f872f65fcf":[2,0,36,27], +"class_team_speak3___node___server.html#acdaab3b579e68badc7849f615cf1f1c2":[2,0,36,37], +"class_team_speak3___node___server.html#acf3c56763859b8adb21379f0cc6394ad":[2,0,36,149], +"class_team_speak3___node___server.html#ad0d64388e2a374203fa16760b923b087":[2,0,36,167], +"class_team_speak3___node___server.html#ad22d04a2800ae672f6117de3afb0e9c4":[2,0,36,158], +"class_team_speak3___node___server.html#ad61bc446498a29aeb0f035c8316ee743":[2,0,36,109], +"class_team_speak3___node___server.html#ad690f9ace5a0cb9f3789158b77c8d1f6":[2,0,36,1], +"class_team_speak3___node___server.html#ad6e7bf183d0e904b1507c375e3aabde8":[2,0,36,36], +"class_team_speak3___node___server.html#ad7c9c04b99162b40afe39178a0d39632":[2,0,36,34], +"class_team_speak3___node___server.html#ad826df3c71029ca48839dbe9aa3559b8":[2,0,36,145], +"class_team_speak3___node___server.html#ad99b7e328bc70ad4fdbf623d4bc0ec08":[2,0,36,4], +"class_team_speak3___node___server.html#ad9aee4153360fd8139f6b0d68efff56f":[2,0,36,162], +"class_team_speak3___node___server.html#adb87ddbef3247f346c2623f4d91981a1":[2,0,36,163], +"class_team_speak3___node___server.html#adc8a77671ffbf1c7c699da1f3d4d0d12":[2,0,36,131], +"class_team_speak3___node___server.html#ade91ccd595c575785b73e6676195375d":[2,0,36,17], +"class_team_speak3___node___server.html#adf66cf57917238b350e42f121bed7b12":[2,0,36,20], +"class_team_speak3___node___server.html#ae23d433b89992fa85371562db35763c1":[2,0,36,33], +"class_team_speak3___node___server.html#ae4ec84a2bad70c6bc88b13656d2bbea6":[2,0,36,71], +"class_team_speak3___node___server.html#ae5a5b2061a93f754afbb410f28e09415":[2,0,36,176], +"class_team_speak3___node___server.html#ae79c8994a9fa524016a141aad5b14e31":[2,0,36,99], +"class_team_speak3___node___server.html#ae8648992f4e8d470f474b280870243a8":[2,0,36,32], +"class_team_speak3___node___server.html#aec6950365d137da98fb2acd94102f231":[2,0,36,53], +"class_team_speak3___node___server.html#aec861d4290728b6048fea64db528fc7a":[2,0,36,45], +"class_team_speak3___node___server.html#aec962cb88b2aff33e055e9d62992bbd8":[2,0,36,173], +"class_team_speak3___node___server.html#aee3bf51303b69cbf9d50202a4864a38b":[2,0,36,67], +"class_team_speak3___node___server.html#af1ace8782c92dabd6bf1d5fc2476295a":[2,0,36,7], +"class_team_speak3___node___server.html#af229175f84fc35b20a7e74542b4f48c0":[2,0,36,91], +"class_team_speak3___node___server.html#af44418304dbbe76dca50be38e7e394de":[2,0,36,112], +"class_team_speak3___node___server.html#af44dad10a4123fa928deda53a1452df2":[2,0,36,59], +"class_team_speak3___node___server.html#af5f666e5496fed200ffe2ab4c7da2e70":[2,0,36,92], +"class_team_speak3___node___server.html#af63ae54f10c02ec6b1033425f795fef4":[2,0,36,146], +"class_team_speak3___node___server.html#af6811efc5065b8aadfd6792334ea6977":[2,0,36,138], +"class_team_speak3___node___server.html#af6e1416ad2e568f48ff0d85b15b2a673":[2,0,36,143], +"class_team_speak3___node___server.html#af89e63cf4213e41524cfcf522f46493d":[2,0,36,2], +"class_team_speak3___node___server.html#afbed20ee78d7e5a38097078dd91e70fd":[2,0,36,153], +"class_team_speak3___node___servergroup.html":[2,0,37], +"class_team_speak3___node___servergroup.html#a02ce34dce8fbf7881ce2323f7af0dca3":[2,0,37,27], +"class_team_speak3___node___servergroup.html#a075a1b37311c84468abae9e4cfcbae08":[2,0,37,17], +"class_team_speak3___node___servergroup.html#a10158df40ca8030d5d0e3c464154b988":[2,0,37,40], +"class_team_speak3___node___servergroup.html#a13303ca9275df184348ed7363d9d7c9a":[2,0,37,36], +"class_team_speak3___node___servergroup.html#a14930274e5498a5a8816ef751ff87946":[2,0,37,58], +"class_team_speak3___node___servergroup.html#a14a79cc9ca202ba4dbfc054f0c18583f":[2,0,37,59], +"class_team_speak3___node___servergroup.html#a19b5c8aaac5ef0af2f1393bffea186c5":[2,0,37,39], +"class_team_speak3___node___servergroup.html#a1b0100e4a548e9464d75dcbfe6ac297a":[2,0,37,50], +"class_team_speak3___node___servergroup.html#a1c78dbb54df73f8c5dabe41ebd476207":[2,0,37,45], +"class_team_speak3___node___servergroup.html#a1e091222c4fdfa646cf820002239189a":[2,0,37,5], +"class_team_speak3___node___servergroup.html#a1e6e04273af312581c41532a8d7619a7":[2,0,37,2], +"class_team_speak3___node___servergroup.html#a266578bece0506453e1f1bfba1f08966":[2,0,37,41], +"class_team_speak3___node___servergroup.html#a2750690a96f7d3ce4c8b2f200a2187b6":[2,0,37,4], +"class_team_speak3___node___servergroup.html#a3273e5078ee49a4bd55620327ed09a5e":[2,0,37,51], +"class_team_speak3___node___servergroup.html#a33efbacf1a9aa094ccc39b0b25f3d369":[2,0,37,64], +"class_team_speak3___node___servergroup.html#a35dcdb8a7b62d7990307bfb95ce3937c":[2,0,37,21], +"class_team_speak3___node___servergroup.html#a37b39fa104ce36c0f0ea142934c05346":[2,0,37,62], +"class_team_speak3___node___servergroup.html#a3d3f27dab5569edf3a737be080e7c8bc":[2,0,37,29], +"class_team_speak3___node___servergroup.html#a40e50431a4e53f802868312ac8b93cf7":[2,0,37,19], +"class_team_speak3___node___servergroup.html#a44618fb948562e89515330e65d08da9a":[2,0,37,24], +"class_team_speak3___node___servergroup.html#a465516dfa0e5c84933704c3f8e803f6b":[2,0,37,20], +"class_team_speak3___node___servergroup.html#a4a0a5545abc2460d1d9b3d6b52d07cbe":[2,0,37,25], +"class_team_speak3___node___servergroup.html#a4b9dee48bb72f0eab8b9d4b0ea25c5f4":[2,0,37,46], +"class_team_speak3___node___servergroup.html#a50699be5fe1e43f7ae2e528db3c1098b":[2,0,37,63], +"class_team_speak3___node___servergroup.html#a585728537b56194aeab30b0316126b89":[2,0,37,32], +"class_team_speak3___node___servergroup.html#a5a6888304aca8d5f12fecb460b0ef6d2":[2,0,37,37], +"class_team_speak3___node___servergroup.html#a5e3cbc007fd9ae9c984fa0a096bf15dd":[2,0,37,16], +"class_team_speak3___node___servergroup.html#a5e9be0418e0cc969d47f4b7475adb21d":[2,0,37,55], +"class_team_speak3___node___servergroup.html#a631e3c6363451e8ef041752af5ea3492":[2,0,37,11], +"class_team_speak3___node___servergroup.html#a63fb203f511e99625428f70f0525950c":[2,0,37,35], +"class_team_speak3___node___servergroup.html#a6589a4fedd410e9cdb55fe20abc410c0":[2,0,37,22], +"class_team_speak3___node___servergroup.html#a7168973c0a2c778e118275a0e61ecd1d":[2,0,37,12], +"class_team_speak3___node___servergroup.html#a716e7512816cf490e5a16ec307f7d889":[2,0,37,54], +"class_team_speak3___node___servergroup.html#a732408c9a027db531af8ecce82401c07":[2,0,37,56], +"class_team_speak3___node___servergroup.html#a7769506879dac3170344d8e59218b644":[2,0,37,47], +"class_team_speak3___node___servergroup.html#a87a40f934f6c820ce708c66c48489f30":[2,0,37,1], +"class_team_speak3___node___servergroup.html#a8fbc1206b06b4ad342591c94cf829335":[2,0,37,15], +"class_team_speak3___node___servergroup.html#a93b0285425354402633ce17f84722591":[2,0,37,14], +"class_team_speak3___node___servergroup.html#a983da0dbb46af94f89732173f0cb0cfc":[2,0,37,3], +"class_team_speak3___node___servergroup.html#a9c416b77eeea1ecec6652936703d9ff7":[2,0,37,52], +"class_team_speak3___node___servergroup.html#a9ead519e8396990ba30d79d6bed9d286":[2,0,37,43], +"class_team_speak3___node___servergroup.html#aa310bbb6ff4e1a90e76689ce99a009e2":[2,0,37,7], +"class_team_speak3___node___servergroup.html#aa78cba098574598dd9c0331cac1f39a1":[2,0,37,26], +"class_team_speak3___node___servergroup.html#abeba8c4874c822b84705abbf40c8d14f":[2,0,37,9], +"class_team_speak3___node___servergroup.html#ac0cac15d7fa05e6685315acdab772750":[2,0,37,18], +"class_team_speak3___node___servergroup.html#ac1734ec88fe5dfd5add66a85d2cd030c":[2,0,37,6], +"class_team_speak3___node___servergroup.html#ac1b521aa7f9871103da5cbb5d3330125":[2,0,37,33], +"class_team_speak3___node___servergroup.html#ac1bdee23c7d066edf3d6cb8e75999887":[2,0,37,61], +"class_team_speak3___node___servergroup.html#ac66aeb30418e385a5727c191bb8df87d":[2,0,37,42], +"class_team_speak3___node___servergroup.html#ac8ab685826ff08e853de2aebad9df459":[2,0,37,57], +"class_team_speak3___node___servergroup.html#acadc746cd7eb244d61f195494924f6b8":[2,0,37,60], +"class_team_speak3___node___servergroup.html#acf3c56763859b8adb21379f0cc6394ad":[2,0,37,34], +"class_team_speak3___node___servergroup.html#ad0d64388e2a374203fa16760b923b087":[2,0,37,53], +"class_team_speak3___node___servergroup.html#ad1a97ccd0e411e13b5a2606e194ba0e7":[2,0,37,0], +"class_team_speak3___node___servergroup.html#ad22d04a2800ae672f6117de3afb0e9c4":[2,0,37,44], +"class_team_speak3___node___servergroup.html#ad5dbfe856a87929927fccfeea2426dc7":[2,0,37,10], +"class_team_speak3___node___servergroup.html#ad826df3c71029ca48839dbe9aa3559b8":[2,0,37,30], +"class_team_speak3___node___servergroup.html#ad9aee4153360fd8139f6b0d68efff56f":[2,0,37,48], +"class_team_speak3___node___servergroup.html#adb87ddbef3247f346c2623f4d91981a1":[2,0,37,49], +"class_team_speak3___node___servergroup.html#ae2995f92fe360459d158373d28436f85":[2,0,37,13], +"class_team_speak3___node___servergroup.html#af0231024657d4b1be8b646062d1ffe4b":[2,0,37,8], +"class_team_speak3___node___servergroup.html#af63ae54f10c02ec6b1033425f795fef4":[2,0,37,31], +"class_team_speak3___node___servergroup.html#af6811efc5065b8aadfd6792334ea6977":[2,0,37,23], +"class_team_speak3___node___servergroup.html#af6e1416ad2e568f48ff0d85b15b2a673":[2,0,37,28], +"class_team_speak3___node___servergroup.html#afbed20ee78d7e5a38097078dd91e70fd":[2,0,37,38], +"class_team_speak3___transport___abstract.html":[2,0,38], +"class_team_speak3___transport___abstract.html#a2b1d6d9d2f48fae3165cd5a863cdefe1":[2,0,38,14], +"class_team_speak3___transport___abstract.html#a496c0c50f4a9921e86b0b13798b4f157":[2,0,38,4], +"class_team_speak3___transport___abstract.html#a4ca555c5c0936eb5404d3900ca5f8edc":[2,0,38,16], +"class_team_speak3___transport___abstract.html#a4cbdd67c5590f756a4fb5ddd5d53bbe1":[2,0,38,12], +"class_team_speak3___transport___abstract.html#a4ccffaa9c25155aee837d4e6dee8a037":[2,0,38,11], +"class_team_speak3___transport___abstract.html#a611fde17c19d0fc02564acf80d322df0":[2,0,38,6], +"class_team_speak3___transport___abstract.html#a68321617cad0b775bb941f19fabea6b5":[2,0,38,10], +"class_team_speak3___transport___abstract.html#a7fcce47a6397f0b924a592493d9b2ba1":[2,0,38,17], +"class_team_speak3___transport___abstract.html#a847453109ae2d41b4b119aa802f05e64":[2,0,38,8], +"class_team_speak3___transport___abstract.html#a87c023f67f2467aaf865dba35285b4d8":[2,0,38,5], +"class_team_speak3___transport___abstract.html#a8a116dd471039a09e64cf1bc1cb3530a":[2,0,38,1], +"class_team_speak3___transport___abstract.html#a9826487851b638f3ad942847eae49c58":[2,0,38,15], +"class_team_speak3___transport___abstract.html#a98783cbca81a252f760577a711e84864":[2,0,38,18], +"class_team_speak3___transport___abstract.html#a99016d25e5f209d03be313b5c3c6cbf3":[2,0,38,0], +"class_team_speak3___transport___abstract.html#a9d3e42ebfb02f2f9b4af8e80f2209b28":[2,0,38,13], +"class_team_speak3___transport___abstract.html#aa96e8e6fa360d0b9e1db0eaeae858520":[2,0,38,7], +"class_team_speak3___transport___abstract.html#ac9bec37a13a1483833c80ffd008d4596":[2,0,38,9], +"class_team_speak3___transport___abstract.html#ad9ad59b6ff973ab97cb4e2ec75b6b9b1":[2,0,38,2], +"class_team_speak3___transport___abstract.html#af9947fe29ce0055f9a6e9c5bd7cff1be":[2,0,38,3], +"class_team_speak3___transport___exception.html":[2,0,39], +"class_team_speak3___transport___exception.html#a3bfcdf7b85a393b7a8b05b048ae3279c":[2,0,39,0], +"class_team_speak3___transport___exception.html#ae7d4b369dd11d3cf56d120acae0cf1db":[2,0,39,1], +"class_team_speak3___transport___t_c_p.html":[2,0,40], +"class_team_speak3___transport___t_c_p.html#a2b1d6d9d2f48fae3165cd5a863cdefe1":[2,0,40,14], +"class_team_speak3___transport___t_c_p.html#a4ca555c5c0936eb5404d3900ca5f8edc":[2,0,40,16], +"class_team_speak3___transport___t_c_p.html#a4cbdd67c5590f756a4fb5ddd5d53bbe1":[2,0,40,12], +"class_team_speak3___transport___t_c_p.html#a4ccffaa9c25155aee837d4e6dee8a037":[2,0,40,11], +"class_team_speak3___transport___t_c_p.html#a65ae7814e6733bd7967f0421baa88cec":[2,0,40,4], +"class_team_speak3___transport___t_c_p.html#a68321617cad0b775bb941f19fabea6b5":[2,0,40,10], +"class_team_speak3___transport___t_c_p.html#a70b9a5c409d0c481ef980aa8b2723d1e":[2,0,40,5], +"class_team_speak3___transport___t_c_p.html#a7fcce47a6397f0b924a592493d9b2ba1":[2,0,40,17], +"class_team_speak3___transport___t_c_p.html#a847453109ae2d41b4b119aa802f05e64":[2,0,40,8], +"class_team_speak3___transport___t_c_p.html#a86ca484fe7ecbde46d21757208aa67cb":[2,0,40,0], +"class_team_speak3___transport___t_c_p.html#a9826487851b638f3ad942847eae49c58":[2,0,40,15], +"class_team_speak3___transport___t_c_p.html#a98783cbca81a252f760577a711e84864":[2,0,40,18], +"class_team_speak3___transport___t_c_p.html#a9d3e42ebfb02f2f9b4af8e80f2209b28":[2,0,40,13], +"class_team_speak3___transport___t_c_p.html#aa5c19e01f8f6bfd2d3cfc9a2ea64a26e":[2,0,40,3], +"class_team_speak3___transport___t_c_p.html#ac2c0b51f286a8f71aa04bf73555b75c6":[2,0,40,1], +"class_team_speak3___transport___t_c_p.html#ac9bec37a13a1483833c80ffd008d4596":[2,0,40,9], +"class_team_speak3___transport___t_c_p.html#ad9ad59b6ff973ab97cb4e2ec75b6b9b1":[2,0,40,6], +"class_team_speak3___transport___t_c_p.html#ae6a9841ecb355b2596aa8c2da53a3e11":[2,0,40,2], +"class_team_speak3___transport___t_c_p.html#af9947fe29ce0055f9a6e9c5bd7cff1be":[2,0,40,7], +"class_team_speak3___transport___u_d_p.html":[2,0,41], +"class_team_speak3___transport___u_d_p.html#a2b1d6d9d2f48fae3165cd5a863cdefe1":[2,0,41,12], +"class_team_speak3___transport___u_d_p.html#a38cf41fc697a8a79220b8dcc8307faef":[2,0,41,0], +"class_team_speak3___transport___u_d_p.html#a3fd9e15b4b86ff749033c12610563f10":[2,0,41,3], +"class_team_speak3___transport___u_d_p.html#a4ca555c5c0936eb5404d3900ca5f8edc":[2,0,41,14], +"class_team_speak3___transport___u_d_p.html#a4cbdd67c5590f756a4fb5ddd5d53bbe1":[2,0,41,10], +"class_team_speak3___transport___u_d_p.html#a4ccffaa9c25155aee837d4e6dee8a037":[2,0,41,9], +"class_team_speak3___transport___u_d_p.html#a68321617cad0b775bb941f19fabea6b5":[2,0,41,8], +"class_team_speak3___transport___u_d_p.html#a7fcce47a6397f0b924a592493d9b2ba1":[2,0,41,15], +"class_team_speak3___transport___u_d_p.html#a847453109ae2d41b4b119aa802f05e64":[2,0,41,6], +"class_team_speak3___transport___u_d_p.html#a9826487851b638f3ad942847eae49c58":[2,0,41,13], +"class_team_speak3___transport___u_d_p.html#a98783cbca81a252f760577a711e84864":[2,0,41,16], +"class_team_speak3___transport___u_d_p.html#a9d3e42ebfb02f2f9b4af8e80f2209b28":[2,0,41,11], +"class_team_speak3___transport___u_d_p.html#ab47ad7c8e213167430b4a495ec9f7b21":[2,0,41,1], +"class_team_speak3___transport___u_d_p.html#ac9bec37a13a1483833c80ffd008d4596":[2,0,41,7], +"class_team_speak3___transport___u_d_p.html#ad9ad59b6ff973ab97cb4e2ec75b6b9b1":[2,0,41,4], +"class_team_speak3___transport___u_d_p.html#af854c17875858a0a57cfa08a20786836":[2,0,41,2], +"class_team_speak3___transport___u_d_p.html#af9947fe29ce0055f9a6e9c5bd7cff1be":[2,0,41,5], +"class_team_speak3___viewer___html.html":[2,0,42], +"class_team_speak3___viewer___html.html#a1264b2938ad89a3688b6b86f81d91640":[2,0,42,3], +"class_team_speak3___viewer___html.html#a1c3ac91d48f71be186f661dee7158d64":[2,0,42,14], +"class_team_speak3___viewer___html.html#a230f3d98fcff537c2d75675ac367c58d":[2,0,42,19], +"class_team_speak3___viewer___html.html#a2d2f8fba681f5afb15543a5504980bc8":[2,0,42,23], +"class_team_speak3___viewer___html.html#a2d994d1abe066712d74d9bdef2f1a579":[2,0,42,8], +"class_team_speak3___viewer___html.html#a3b70618ebebf0ad552f983340d72bacb":[2,0,42,11], +"class_team_speak3___viewer___html.html#a3bd048a41ad30081e3e39fd8bcf46e02":[2,0,42,21], +"class_team_speak3___viewer___html.html#a425d8c4c94925133b9aeb99e23de4a9d":[2,0,42,0], +"class_team_speak3___viewer___html.html#a52d2ea098679874eb120da38727324c5":[2,0,42,1], +"class_team_speak3___viewer___html.html#a5538c134542e5edae2a0a8607241d63f":[2,0,42,12], +"class_team_speak3___viewer___html.html#a60f60532cd44e2e259e3ed120208ce2f":[2,0,42,13], +"class_team_speak3___viewer___html.html#a74577ba126405e719950f41278d23137":[2,0,42,18], +"class_team_speak3___viewer___html.html#a75553137aa5bf9383be83f9eb3d9db55":[2,0,42,26], +"class_team_speak3___viewer___html.html#a766b7745f531b280aad2bfc6754d5134":[2,0,42,5], +"class_team_speak3___viewer___html.html#a7efd02e4723bc602658b4a87ddc79e09":[2,0,42,24], +"class_team_speak3___viewer___html.html#a835b464739dd5af836b1b9d4f4b5d4d8":[2,0,42,7], +"class_team_speak3___viewer___html.html#a85e30363f2ec479353bc9101f42dab87":[2,0,42,2], +"class_team_speak3___viewer___html.html#a89ad59f4d773c0ad5d99e6fd45f27d99":[2,0,42,10], +"class_team_speak3___viewer___html.html#a8fc6567d31c471e370003f143774539f":[2,0,42,22], +"class_team_speak3___viewer___html.html#a9d56bf81f140772079751f2361b3ffc2":[2,0,42,16], +"class_team_speak3___viewer___html.html#a9ea4502a15adc19b6b8dc244ab5db3c0":[2,0,42,20], +"class_team_speak3___viewer___html.html#ab0a31c8ffe8228951e5e948d44126b2c":[2,0,42,25], +"class_team_speak3___viewer___html.html#ac4ba12c86e5f692f1bcabee7741c9efb":[2,0,42,17] +}; diff --git a/lib/docs/html/navtreeindex5.js b/lib/docs/html/navtreeindex5.js new file mode 100644 index 0000000..94930f6 --- /dev/null +++ b/lib/docs/html/navtreeindex5.js @@ -0,0 +1,134 @@ +var NAVTREEINDEX5 = +{ +"class_team_speak3___viewer___html.html#ac7d4636a787439c500691818edeae752":[2,0,42,15], +"class_team_speak3___viewer___html.html#aca40f5b5b2a6f778e7913a9ed203a316":[2,0,42,4], +"class_team_speak3___viewer___html.html#ad929c3202591daf32252e51637487d7b":[2,0,42,6], +"class_team_speak3___viewer___html.html#ae5dee56bf71a5dbba3e78ed29cc29a54":[2,0,42,27], +"class_team_speak3___viewer___html.html#afd13c192016d147b8fc43284395d4140":[2,0,42,9], +"class_team_speak3___viewer___text.html":[2,0,44], +"class_team_speak3___viewer___text.html#a7bf9b2137c14dad13c8fd2e2df33615c":[2,0,44,2], +"class_team_speak3___viewer___text.html#a8d6fcf3812bf72c81214263da3e6f555":[2,0,44,3], +"class_team_speak3___viewer___text.html#a8fb29a4ed7e5a605bd59bed82fd912bc":[2,0,44,0], +"class_team_speak3___viewer___text.html#aa39cd6d4d771d9c4d94e368e1b548405":[2,0,44,4], +"class_team_speak3___viewer___text.html#acd7d9ebbae3700e38b0bcb6767728936":[2,0,44,1], +"deprecated.html":[1], +"dir_10d0dafa9b3c98f86f6c3e308f71f5e1.html":[3,0,0,1,1], +"dir_1e759c367c240af77b5353a40d4dc42a.html":[3,0,0,0], +"dir_3d7cd49b95def433e02a0e6f52be25f0.html":[3,0,0,2], +"dir_3e66aa12f34129cf2d52c47a74e0508c.html":[3,0,0,1], +"dir_4844b50d2d416922f1f8de7560b09faf.html":[3,0,0,1,0], +"dir_554650cc51f1200e004a96892070fcf9.html":[3,0,0,4], +"dir_79b267753267ba2a550585ecabe3d90e.html":[3,0,0,0,3], +"dir_8c6eb96e4942c21c15d2738fe9c923ec.html":[3,0,0], +"dir_bafc68d5a3d8339df3fadcdecb8cd0fc.html":[3,0,0,0,2], +"dir_bfc25ac9d3f1d0418a4ff48c6329f953.html":[3,0,0,0,4], +"dir_d08920670320d734586288a6d43047d3.html":[3,0,0,0,0], +"dir_dadcfc53e6a1230ff2f48f6f7265c16c.html":[3,0,0,0,1], +"dir_f603e06b45f250df82d371a578f5098e.html":[3,0,0,3], +"files.html":[3,0], +"functions.html":[2,2,0], +"functions.html":[2,2,0,0], +"functions_0x5f.html":[2,2,0,1], +"functions_0x61.html":[2,2,0,2], +"functions_0x62.html":[2,2,0,3], +"functions_0x63.html":[2,2,0,4], +"functions_0x64.html":[2,2,0,5], +"functions_0x65.html":[2,2,0,6], +"functions_0x66.html":[2,2,0,7], +"functions_0x67.html":[2,2,0,8], +"functions_0x68.html":[2,2,0,9], +"functions_0x69.html":[2,2,0,10], +"functions_0x6b.html":[2,2,0,11], +"functions_0x6c.html":[2,2,0,12], +"functions_0x6d.html":[2,2,0,13], +"functions_0x6e.html":[2,2,0,14], +"functions_0x6f.html":[2,2,0,15], +"functions_0x70.html":[2,2,0,16], +"functions_0x72.html":[2,2,0,17], +"functions_0x73.html":[2,2,0,18], +"functions_0x74.html":[2,2,0,19], +"functions_0x75.html":[2,2,0,20], +"functions_0x76.html":[2,2,0,21], +"functions_0x77.html":[2,2,0,22], +"functions_func.html":[2,2,1,0], +"functions_func.html":[2,2,1], +"functions_func_0x61.html":[2,2,1,1], +"functions_func_0x62.html":[2,2,1,2], +"functions_func_0x63.html":[2,2,1,3], +"functions_func_0x64.html":[2,2,1,4], +"functions_func_0x65.html":[2,2,1,5], +"functions_func_0x66.html":[2,2,1,6], +"functions_func_0x67.html":[2,2,1,7], +"functions_func_0x68.html":[2,2,1,8], +"functions_func_0x69.html":[2,2,1,9], +"functions_func_0x6b.html":[2,2,1,10], +"functions_func_0x6c.html":[2,2,1,11], +"functions_func_0x6d.html":[2,2,1,12], +"functions_func_0x6e.html":[2,2,1,13], +"functions_func_0x6f.html":[2,2,1,14], +"functions_func_0x70.html":[2,2,1,15], +"functions_func_0x72.html":[2,2,1,16], +"functions_func_0x73.html":[2,2,1,17], +"functions_func_0x74.html":[2,2,1,18], +"functions_func_0x75.html":[2,2,1,19], +"functions_func_0x76.html":[2,2,1,20], +"functions_func_0x77.html":[2,2,1,21], +"functions_vars.html":[2,2,2], +"hierarchy.html":[2,1], +"index.html":[], +"index.html":[0], +"index.html#example1":[0,3,0], +"index.html#example10":[0,3,9], +"index.html#example11":[0,3,10], +"index.html#example12":[0,3,11], +"index.html#example13":[0,3,12], +"index.html#example14":[0,3,13], +"index.html#example15":[0,3,14], +"index.html#example16":[0,3,15], +"index.html#example17":[0,3,16], +"index.html#example2":[0,3,1], +"index.html#example3":[0,3,2], +"index.html#example4":[0,3,3], +"index.html#example5":[0,3,4], +"index.html#example6":[0,3,5], +"index.html#example7":[0,3,6], +"index.html#example8":[0,3,7], +"index.html#example9":[0,3,8], +"index.html#example_sec":[0,3], +"index.html#feature_sec":[0,2], +"index.html#sysreqs_sec":[0,1], +"index.html#welcome1":[0,0,0], +"index.html#welcome2":[0,0,1], +"index.html#welcome_sec":[0,0], +"interface_team_speak3___helper___signal___interface.html":[2,0,27], +"interface_team_speak3___helper___signal___interface.html#a129f0620c8ca72cc49744412ca400af8":[2,0,27,9], +"interface_team_speak3___helper___signal___interface.html#a15d6588ecad8073457490522fa6e42b1":[2,0,27,6], +"interface_team_speak3___helper___signal___interface.html#a264e6acfa718799d1f0702d9d378d4bf":[2,0,27,16], +"interface_team_speak3___helper___signal___interface.html#a2c7b2aa9fbbac68849b1cb6727751941":[2,0,27,17], +"interface_team_speak3___helper___signal___interface.html#a2f3816f32fcdcc1cfd2dc202a018a5d4":[2,0,27,7], +"interface_team_speak3___helper___signal___interface.html#a323953d09e67d3bba06ce54e0a46bd90":[2,0,27,13], +"interface_team_speak3___helper___signal___interface.html#a3ce1e6fb65555f153b8313938fc6f14a":[2,0,27,23], +"interface_team_speak3___helper___signal___interface.html#a3dbd81b8eb9416d5b4305877eb48153f":[2,0,27,4], +"interface_team_speak3___helper___signal___interface.html#a437bf9fda2ce442d55aba119d8a2a472":[2,0,27,12], +"interface_team_speak3___helper___signal___interface.html#a4bcd3c19b7adbd37800dc941794a1847":[2,0,27,14], +"interface_team_speak3___helper___signal___interface.html#a4e4f17bf4f8c4e59e083f30bd6fcd12a":[2,0,27,2], +"interface_team_speak3___helper___signal___interface.html#a539e6ca40f293c37a73ac296f4a97141":[2,0,27,24], +"interface_team_speak3___helper___signal___interface.html#a5a21094dc110e60bd165703df58f6a6f":[2,0,27,20], +"interface_team_speak3___helper___signal___interface.html#a7925e6a3080092bb6da831dd616769a3":[2,0,27,5], +"interface_team_speak3___helper___signal___interface.html#a7e066d5cc94154739471a627b7d6f63f":[2,0,27,0], +"interface_team_speak3___helper___signal___interface.html#a81a002eceee16a9558a68c849f22e581":[2,0,27,1], +"interface_team_speak3___helper___signal___interface.html#a822d76c4cc0a50360066b54bfaf15df2":[2,0,27,21], +"interface_team_speak3___helper___signal___interface.html#a848c46c0b32516d82a89826246932bbb":[2,0,27,3], +"interface_team_speak3___helper___signal___interface.html#a8bf3a9eeea9253d41d4b0ae8ee3816a2":[2,0,27,18], +"interface_team_speak3___helper___signal___interface.html#a8d9f2e3a80bb4312338db8f282cf1fad":[2,0,27,8], +"interface_team_speak3___helper___signal___interface.html#aa1c0d664a04ef2ef284933473fbaeb4e":[2,0,27,15], +"interface_team_speak3___helper___signal___interface.html#aad9e6d52b8747271c2ce2d4770d7ea6d":[2,0,27,11], +"interface_team_speak3___helper___signal___interface.html#ab65b20dc52d7165455b0ebb5bdc851ed":[2,0,27,25], +"interface_team_speak3___helper___signal___interface.html#ad12f5a3d0810a3647295141095fe1bcb":[2,0,27,19], +"interface_team_speak3___helper___signal___interface.html#ad57f648650d5f17dc8dc8acfb196b425":[2,0,27,10], +"interface_team_speak3___helper___signal___interface.html#af6c4a98cf159e1ae41d08d2f94ea901c":[2,0,27,22], +"interface_team_speak3___viewer___interface.html":[2,0,43], +"interface_team_speak3___viewer___interface.html#ad06c809a76558069871ba9aa16f66e79":[2,0,43,0], +"namespace_team_speak3.html":[2,0,0], +"pages.html":[] +}; diff --git a/lib/docs/html/open.png b/lib/docs/html/open.png new file mode 100644 index 0000000000000000000000000000000000000000..1d6e4196b6cce4bb3bb71963ac36ec5671ecb965 GIT binary patch literal 122 zcmeAS@N?(olHy`uVBq!ia0vp^oFL4>1|%O$WD@{Vj-D=#Ar*{o?;hlAFyLXmaNXyc z;G7fA>P0N(!8%WrOw;@M?M}9*u>6?4?d@~csTOYeAD-THXRA2>oCDXahh literal 0 HcmV?d00001 diff --git a/lib/docs/html/pages.html b/lib/docs/html/pages.html new file mode 100644 index 0000000..6eed49c --- /dev/null +++ b/lib/docs/html/pages.html @@ -0,0 +1,121 @@ + + + + + + +TeamSpeak 3 PHP Framework: Related Pages + + + + + + + + + + + + + +
+
+
+ + + + + + +
+
TeamSpeak 3 PHP Framework +  1.1.23 +
+
Copyright © Planet TeamSpeak. All rights reserved.
+
+

+ + + + + +
+ +
+
+
+ +
+ + + + +
+ +
+ +
+
+
Related Pages
+
+
+
Here is a list of all related documentation pages:
+
+
+ + + + diff --git a/lib/docs/html/resize.js b/lib/docs/html/resize.js new file mode 100644 index 0000000..a80dece --- /dev/null +++ b/lib/docs/html/resize.js @@ -0,0 +1,93 @@ +var cookie_namespace = 'doxygen'; +var sidenav,navtree,content,header; + +function readCookie(cookie) +{ + var myCookie = cookie_namespace+"_"+cookie+"="; + if (document.cookie) + { + var index = document.cookie.indexOf(myCookie); + if (index != -1) + { + var valStart = index + myCookie.length; + var valEnd = document.cookie.indexOf(";", valStart); + if (valEnd == -1) + { + valEnd = document.cookie.length; + } + var val = document.cookie.substring(valStart, valEnd); + return val; + } + } + return 0; +} + +function writeCookie(cookie, val, expiration) +{ + if (val==undefined) return; + if (expiration == null) + { + var date = new Date(); + date.setTime(date.getTime()+(10*365*24*60*60*1000)); // default expiration is one week + expiration = date.toGMTString(); + } + document.cookie = cookie_namespace + "_" + cookie + "=" + val + "; expires=" + expiration+"; path=/"; +} + +function resizeWidth() +{ + var windowWidth = $(window).width() + "px"; + var sidenavWidth = $(sidenav).outerWidth(); + content.css({marginLeft:parseInt(sidenavWidth)+"px"}); + writeCookie('width',sidenavWidth, null); +} + +function restoreWidth(navWidth) +{ + var windowWidth = $(window).width() + "px"; + content.css({marginLeft:parseInt(navWidth)+6+"px"}); + sidenav.css({width:navWidth + "px"}); +} + +function resizeHeight() +{ + var headerHeight = header.outerHeight(); + var footerHeight = footer.outerHeight(); + var windowHeight = $(window).height() - headerHeight - footerHeight; + content.css({height:windowHeight + "px"}); + navtree.css({height:windowHeight + "px"}); + sidenav.css({height:windowHeight + "px",top: headerHeight+"px"}); +} + +function initResizable() +{ + header = $("#top"); + sidenav = $("#side-nav"); + content = $("#doc-content"); + navtree = $("#nav-tree"); + footer = $("#nav-path"); + $(".side-nav-resizable").resizable({resize: function(e, ui) { resizeWidth(); } }); + $(window).resize(function() { resizeHeight(); }); + var width = readCookie('width'); + if (width) { restoreWidth(width); } else { resizeWidth(); } + resizeHeight(); + var url = location.href; + var i=url.indexOf("#"); + if (i>=0) window.location.hash=url.substr(i); + var _preventDefault = function(evt) { evt.preventDefault(); }; + $("#splitbar").bind("dragstart", _preventDefault).bind("selectstart", _preventDefault); + $(document).bind('touchmove',function(e){ + try { + var target = e.target; + while (target) { + if ($(target).css('-webkit-overflow-scrolling')=='touch') return; + target = target.parentNode; + } + e.preventDefault(); + } catch(err) { + e.preventDefault(); + } + }); +} + + diff --git a/lib/docs/html/search/all_24.html b/lib/docs/html/search/all_24.html new file mode 100644 index 0000000..cffc14d --- /dev/null +++ b/lib/docs/html/search/all_24.html @@ -0,0 +1,26 @@ + + + + + + + + + +
+
Loading...
+
+ +
Searching...
+
No Matches
+ +
+ + diff --git a/lib/docs/html/search/all_24.js b/lib/docs/html/search/all_24.js new file mode 100644 index 0000000..22fbaec --- /dev/null +++ b/lib/docs/html/search/all_24.js @@ -0,0 +1,24 @@ +var searchData= +[ + ['_24cgrouplist',['$cgroupList',['../class_team_speak3___node___server.html#ae5a5b2061a93f754afbb410f28e09415',1,'TeamSpeak3_Node_Server']]], + ['_24channellist',['$channelList',['../class_team_speak3___node___server.html#aec962cb88b2aff33e055e9d62992bbd8',1,'TeamSpeak3_Node_Server']]], + ['_24clientlist',['$clientList',['../class_team_speak3___node___server.html#a3f25f20028741a14cc652779159707cb',1,'TeamSpeak3_Node_Server']]], + ['_24exclude_5fquery_5fclients',['$exclude_query_clients',['../class_team_speak3___node___host.html#aebf44520f2388654542193cbaeb1ffe6',1,'TeamSpeak3_Node_Host']]], + ['_24nodeid',['$nodeId',['../class_team_speak3___node___abstract.html#ac1bdee23c7d066edf3d6cb8e75999887',1,'TeamSpeak3_Node_Abstract']]], + ['_24nodeinfo',['$nodeInfo',['../class_team_speak3___node___abstract.html#a50699be5fe1e43f7ae2e528db3c1098b',1,'TeamSpeak3_Node_Abstract']]], + ['_24nodelist',['$nodeList',['../class_team_speak3___node___abstract.html#a37b39fa104ce36c0f0ea142934c05346',1,'TeamSpeak3_Node_Abstract']]], + ['_24parent',['$parent',['../class_team_speak3___node___abstract.html#a14a79cc9ca202ba4dbfc054f0c18583f',1,'TeamSpeak3_Node_Abstract']]], + ['_24permissioncats',['$permissionCats',['../class_team_speak3___node___host.html#a1cad8d64ec44907edc6931b1875bfa41',1,'TeamSpeak3_Node_Host']]], + ['_24permissionends',['$permissionEnds',['../class_team_speak3___node___host.html#a8875fdbef6f0a4e1948206d21b149454',1,'TeamSpeak3_Node_Host']]], + ['_24permissionlist',['$permissionList',['../class_team_speak3___node___host.html#af95c28ba0639e7d70276129a84e7d8a3',1,'TeamSpeak3_Node_Host']]], + ['_24position',['$position',['../class_team_speak3___helper___string.html#a4b151b1096800c2e319ae82007808683',1,'TeamSpeak3_Helper_String']]], + ['_24predefined_5fquery_5fname',['$predefined_query_name',['../class_team_speak3___node___host.html#ac85d68211e51360f42e0d188f7f15e69',1,'TeamSpeak3_Node_Host']]], + ['_24server',['$server',['../class_team_speak3___node___abstract.html#acadc746cd7eb244d61f195494924f6b8',1,'TeamSpeak3_Node_Abstract']]], + ['_24serverlist',['$serverList',['../class_team_speak3___node___host.html#a657df059e9d5c25b8106dea2823270d2',1,'TeamSpeak3_Node_Host']]], + ['_24sgrouplist',['$sgroupList',['../class_team_speak3___node___server.html#a9c4ce4a5649ba8aa595a7f2fdafdf951',1,'TeamSpeak3_Node_Server']]], + ['_24sort_5fclients_5fchannels',['$sort_clients_channels',['../class_team_speak3___node___host.html#a9fdc4c2abeecfaef1b677c072f0f0cb2',1,'TeamSpeak3_Node_Host']]], + ['_24start_5foffline_5fvirtual',['$start_offline_virtual',['../class_team_speak3___node___host.html#ad68c4cece91f5ad117e157fa1bd176ba',1,'TeamSpeak3_Node_Host']]], + ['_24storage',['$storage',['../class_team_speak3___node___abstract.html#a33efbacf1a9aa094ccc39b0b25f3d369',1,'TeamSpeak3_Node_Abstract']]], + ['_24version',['$version',['../class_team_speak3___node___host.html#a8f92fb11501c8888349123fb04dae58c',1,'TeamSpeak3_Node_Host']]], + ['_24whoami',['$whoami',['../class_team_speak3___node___host.html#ab91d6f68668f2680f1703a17eaf04594',1,'TeamSpeak3_Node_Host']]] +]; diff --git a/lib/docs/html/search/all_5f.html b/lib/docs/html/search/all_5f.html new file mode 100644 index 0000000..4de62cb --- /dev/null +++ b/lib/docs/html/search/all_5f.html @@ -0,0 +1,26 @@ + + + + + + + + + +
+
Loading...
+
+ +
Searching...
+
No Matches
+ +
+ + diff --git a/lib/docs/html/search/all_5f.js b/lib/docs/html/search/all_5f.js new file mode 100644 index 0000000..afe6edd --- /dev/null +++ b/lib/docs/html/search/all_5f.js @@ -0,0 +1,11 @@ +var searchData= +[ + ['_5f_5fcall',['__call',['../class_team_speak3___helper___string.html#a000fbe55814c81bb9df49f9e493fa2f0',1,'TeamSpeak3_Helper_String\__call()'],['../class_team_speak3___node___abstract.html#a63fb203f511e99625428f70f0525950c',1,'TeamSpeak3_Node_Abstract\__call()']]], + ['_5f_5fconstruct',['__construct',['../class_team_speak3___adapter___abstract.html#a775cec95b7fc371b9155383a29888932',1,'TeamSpeak3_Adapter_Abstract\__construct()'],['../class_team_speak3___adapter___server_query___event.html#ab847f72f60d9a87e577455a326b97d35',1,'TeamSpeak3_Adapter_ServerQuery_Event\__construct()'],['../class_team_speak3___adapter___server_query___reply.html#abe1a1d307cebcdcd28dfbf9aa9323366',1,'TeamSpeak3_Adapter_ServerQuery_Reply\__construct()'],['../class_team_speak3___exception.html#a9872c9261e67090a2b5b7e0748a89ff6',1,'TeamSpeak3_Exception\__construct()'],['../class_team_speak3___helper___char.html#add1580b3f4a63d2bcf7e65b9c08278cc',1,'TeamSpeak3_Helper_Char\__construct()'],['../class_team_speak3___helper___crypt.html#aec18b53e735ecb9077edf004898d32d3',1,'TeamSpeak3_Helper_Crypt\__construct()'],['../class_team_speak3___helper___profiler___timer.html#a92400f1247e08c23460749de0d4cad51',1,'TeamSpeak3_Helper_Profiler_Timer\__construct()'],['../class_team_speak3___helper___signal___handler.html#acaeace4c6fe538813ae52b7f9283c063',1,'TeamSpeak3_Helper_Signal_Handler\__construct()'],['../class_team_speak3___helper___string.html#abc3280155219f30593f8af00249ad155',1,'TeamSpeak3_Helper_String\__construct()'],['../class_team_speak3___helper___uri.html#a90842c65bae8ffcf088b1dd12def7ff1',1,'TeamSpeak3_Helper_Uri\__construct()'],['../class_team_speak3___node___channel.html#a7e20bbf057d5934b61e5c024240204d9',1,'TeamSpeak3_Node_Channel\__construct()'],['../class_team_speak3___node___channelgroup.html#a1ff88f65f4b500b3cd187ce454b7e913',1,'TeamSpeak3_Node_Channelgroup\__construct()'],['../class_team_speak3___node___client.html#a0d9eac93fcf1b8efae5eb00feefc250c',1,'TeamSpeak3_Node_Client\__construct()'],['../class_team_speak3___node___host.html#af3c2ddcc3d5e62711d1b889446bfdd7e',1,'TeamSpeak3_Node_Host\__construct()'],['../class_team_speak3___node___server.html#a5daf725f479aa4f401739c6af5b86ea2',1,'TeamSpeak3_Node_Server\__construct()'],['../class_team_speak3___node___servergroup.html#ad1a97ccd0e411e13b5a2606e194ba0e7',1,'TeamSpeak3_Node_Servergroup\__construct()'],['../class_team_speak3___transport___abstract.html#a99016d25e5f209d03be313b5c3c6cbf3',1,'TeamSpeak3_Transport_Abstract\__construct()'],['../class_team_speak3___viewer___html.html#a425d8c4c94925133b9aeb99e23de4a9d',1,'TeamSpeak3_Viewer_Html\__construct()']]], + ['_5f_5fdestruct',['__destruct',['../class_team_speak3___adapter___abstract.html#ac2edb7dbc9a488a6d772cb6397fab128',1,'TeamSpeak3_Adapter_Abstract\__destruct()'],['../class_team_speak3___adapter___blacklist.html#ac513e62c024049632e52ad13c7db5baf',1,'TeamSpeak3_Adapter_Blacklist\__destruct()'],['../class_team_speak3___adapter___file_transfer.html#a9f273fc582708000a67db6626573a1de',1,'TeamSpeak3_Adapter_FileTransfer\__destruct()'],['../class_team_speak3___adapter___server_query.html#abe0dc4f73909ab01d000059967bccd64',1,'TeamSpeak3_Adapter_ServerQuery\__destruct()'],['../class_team_speak3___adapter___t_s_d_n_s.html#ae37dd4961f9b941cf86f4dbc811b1ed2',1,'TeamSpeak3_Adapter_TSDNS\__destruct()'],['../class_team_speak3___adapter___update.html#a09d4e6b18f2475adfc1f5a74c6478421',1,'TeamSpeak3_Adapter_Update\__destruct()'],['../class_team_speak3___transport___abstract.html#a8a116dd471039a09e64cf1bc1cb3530a',1,'TeamSpeak3_Transport_Abstract\__destruct()']]], + ['_5f_5fget',['__get',['../class_team_speak3___adapter___server_query___event.html#a496f7adbe81710f97848608dc3b29265',1,'TeamSpeak3_Adapter_ServerQuery_Event\__get()'],['../class_team_speak3___node___abstract.html#ac8ab685826ff08e853de2aebad9df459',1,'TeamSpeak3_Node_Abstract\__get()']]], + ['_5f_5fset',['__set',['../class_team_speak3___adapter___server_query___event.html#a8c466fb68578cc95504035aae3785759',1,'TeamSpeak3_Adapter_ServerQuery_Event\__set()'],['../class_team_speak3___node___abstract.html#a14930274e5498a5a8816ef751ff87946',1,'TeamSpeak3_Node_Abstract\__set()']]], + ['_5f_5fsleep',['__sleep',['../class_team_speak3___adapter___abstract.html#afa29be26280db12e38aef59d90f7c6ac',1,'TeamSpeak3_Adapter_Abstract\__sleep()'],['../class_team_speak3___node___abstract.html#a19b5c8aaac5ef0af2f1393bffea186c5',1,'TeamSpeak3_Node_Abstract\__sleep()'],['../class_team_speak3___transport___abstract.html#ad9ad59b6ff973ab97cb4e2ec75b6b9b1',1,'TeamSpeak3_Transport_Abstract\__sleep()']]], + ['_5f_5ftostring',['__toString',['../class_team_speak3___helper___char.html#a09f3c3116f003edfd555082f6dbe4abf',1,'TeamSpeak3_Helper_Char\__toString()'],['../class_team_speak3___helper___string.html#a99fcbce6b1675e69ec80c51b1f58cc1b',1,'TeamSpeak3_Helper_String\__toString()'],['../class_team_speak3___node___abstract.html#a89d26184ecd8790f8b930e5eceaddc29',1,'TeamSpeak3_Node_Abstract\__toString()'],['../class_team_speak3___node___channel.html#a2fbf4302a79b8e3cfab59c23e7c5f5ef',1,'TeamSpeak3_Node_Channel\__toString()'],['../class_team_speak3___node___channelgroup.html#a07f4314251dafde96cf16462786c91de',1,'TeamSpeak3_Node_Channelgroup\__toString()'],['../class_team_speak3___node___client.html#a1cde3ec654c5ee8e9c6aaf187f9f037b',1,'TeamSpeak3_Node_Client\__toString()'],['../class_team_speak3___node___host.html#a657d0a513ca87fbce0c095c3235be2ec',1,'TeamSpeak3_Node_Host\__toString()'],['../class_team_speak3___node___server.html#a50f029dcd7ba276c8b9c40c99c50f38d',1,'TeamSpeak3_Node_Server\__toString()'],['../class_team_speak3___node___servergroup.html#a465516dfa0e5c84933704c3f8e803f6b',1,'TeamSpeak3_Node_Servergroup\__toString()']]], + ['_5f_5fwakeup',['__wakeup',['../class_team_speak3___adapter___abstract.html#aaa3c73f10edd73494087a7a523726a89',1,'TeamSpeak3_Adapter_Abstract\__wakeup()'],['../class_team_speak3___node___host.html#a0abbd00f4d554a868c936f252eeda695',1,'TeamSpeak3_Node_Host\__wakeup()'],['../class_team_speak3___transport___abstract.html#af9947fe29ce0055f9a6e9c5bd7cff1be',1,'TeamSpeak3_Transport_Abstract\__wakeup()']]] +]; diff --git a/lib/docs/html/search/all_61.html b/lib/docs/html/search/all_61.html new file mode 100644 index 0000000..a78c8f9 --- /dev/null +++ b/lib/docs/html/search/all_61.html @@ -0,0 +1,26 @@ + + + + + + + + + +
+
Loading...
+
+ +
Searching...
+
No Matches
+ +
+ + diff --git a/lib/docs/html/search/all_61.js b/lib/docs/html/search/all_61.js new file mode 100644 index 0000000..56b4fb1 --- /dev/null +++ b/lib/docs/html/search/all_61.js @@ -0,0 +1,13 @@ +var searchData= +[ + ['abstract_2ephp',['Abstract.php',['../_adapter_2_abstract_8php.html',1,'']]], + ['abstract_2ephp',['Abstract.php',['../_node_2_abstract_8php.html',1,'']]], + ['abstract_2ephp',['Abstract.php',['../_transport_2_abstract_8php.html',1,'']]], + ['addservergroup',['addServerGroup',['../class_team_speak3___node___client.html#a70f773eefe1d4f67f5c15974ca609a6d',1,'TeamSpeak3_Node_Client']]], + ['append',['append',['../class_team_speak3___helper___string.html#a3ec8659b47a91c14a35cdfb681d18c61',1,'TeamSpeak3_Helper_String']]], + ['arg',['arg',['../class_team_speak3___helper___string.html#aa53d94bf82f2f1d3e091a1fe6912cfa3',1,'TeamSpeak3_Helper_String']]], + ['autoload',['autoload',['../class_team_speak3.html#aba738bb754c3d3ae892c65943ca6f082',1,'TeamSpeak3']]], + ['avatardownload',['avatarDownload',['../class_team_speak3___node___client.html#a7101c45f9e7aa653b572de8b2f41109b',1,'TeamSpeak3_Node_Client']]], + ['avatargetname',['avatarGetName',['../class_team_speak3___node___client.html#a1c1b0fa71731df7ac3d4098b046938c7',1,'TeamSpeak3_Node_Client']]], + ['api_20documentation',['API Documentation',['../index.html',1,'']]] +]; diff --git a/lib/docs/html/search/all_62.html b/lib/docs/html/search/all_62.html new file mode 100644 index 0000000..29fe207 --- /dev/null +++ b/lib/docs/html/search/all_62.html @@ -0,0 +1,26 @@ + + + + + + + + + +
+
Loading...
+
+ +
Searching...
+
No Matches
+ +
+ + diff --git a/lib/docs/html/search/all_62.js b/lib/docs/html/search/all_62.js new file mode 100644 index 0000000..d42e6e6 --- /dev/null +++ b/lib/docs/html/search/all_62.js @@ -0,0 +1,11 @@ +var searchData= +[ + ['ban',['ban',['../class_team_speak3___node___client.html#acd8e79afa687108fcdbee4dad7a3cde0',1,'TeamSpeak3_Node_Client']]], + ['bancreate',['banCreate',['../class_team_speak3___node___server.html#a0a2c9e20c88b81275222acdd61a5f8c4',1,'TeamSpeak3_Node_Server']]], + ['bandelete',['banDelete',['../class_team_speak3___node___server.html#a953aaca1b1d5e024b37221146d04b296',1,'TeamSpeak3_Node_Server']]], + ['banlist',['banList',['../class_team_speak3___node___server.html#a6d0211802f5d1248bc69c4fdefa3d417',1,'TeamSpeak3_Node_Server']]], + ['banlistclear',['banListClear',['../class_team_speak3___node___server.html#ad61bc446498a29aeb0f035c8316ee743',1,'TeamSpeak3_Node_Server']]], + ['bindinglist',['bindingList',['../class_team_speak3___node___host.html#ab185118ab245fbd1068b2b0301dd21e7',1,'TeamSpeak3_Node_Host']]], + ['blacklist_2ephp',['Blacklist.php',['../_blacklist_8php.html',1,'']]], + ['bytes',['bytes',['../class_team_speak3___helper___convert.html#ad1dfd12122980ea9b1f53803fe640ef6',1,'TeamSpeak3_Helper_Convert']]] +]; diff --git a/lib/docs/html/search/all_63.html b/lib/docs/html/search/all_63.html new file mode 100644 index 0000000..a46f894 --- /dev/null +++ b/lib/docs/html/search/all_63.html @@ -0,0 +1,26 @@ + + + + + + + + + +
+
Loading...
+
+ +
Searching...
+
No Matches
+ +
+ + diff --git a/lib/docs/html/search/all_63.js b/lib/docs/html/search/all_63.js new file mode 100644 index 0000000..e9f3f9c --- /dev/null +++ b/lib/docs/html/search/all_63.js @@ -0,0 +1,109 @@ +var searchData= +[ + ['call',['call',['../class_team_speak3___helper___signal___handler.html#a1c3e62b60b8459ffe70bf25bc9064375',1,'TeamSpeak3_Helper_Signal_Handler']]], + ['channel_2ephp',['Channel.php',['../_channel_8php.html',1,'']]], + ['channelclientpermassign',['channelClientPermAssign',['../class_team_speak3___node___server.html#a4a88f38a81880b5c6a33cb5d084eb56a',1,'TeamSpeak3_Node_Server']]], + ['channelclientpermlist',['channelClientPermList',['../class_team_speak3___node___server.html#a3bfc6b821cabd6b26dfdc32f70111161',1,'TeamSpeak3_Node_Server']]], + ['channelclientpermremove',['channelClientPermRemove',['../class_team_speak3___node___server.html#a16866a89acc0ebab56ac281fd481fa5c',1,'TeamSpeak3_Node_Server']]], + ['channelcreate',['channelCreate',['../class_team_speak3___node___server.html#ad99b7e328bc70ad4fdbf623d4bc0ec08',1,'TeamSpeak3_Node_Server']]], + ['channeldelete',['channelDelete',['../class_team_speak3___node___server.html#a2fda0933d13a8ffad575bf5c33be6aaa',1,'TeamSpeak3_Node_Server']]], + ['channeldircreate',['channelDirCreate',['../class_team_speak3___node___server.html#a8ec028d2a9dbd36794015e8614831c8d',1,'TeamSpeak3_Node_Server']]], + ['channelfiledelete',['channelFileDelete',['../class_team_speak3___node___server.html#adf66cf57917238b350e42f121bed7b12',1,'TeamSpeak3_Node_Server']]], + ['channelfileinfo',['channelFileInfo',['../class_team_speak3___node___server.html#a42480bcff5af21ef8cc4af469636eadd',1,'TeamSpeak3_Node_Server']]], + ['channelfilelist',['channelFileList',['../class_team_speak3___node___server.html#ade91ccd595c575785b73e6676195375d',1,'TeamSpeak3_Node_Server']]], + ['channelfilerename',['channelFileRename',['../class_team_speak3___node___server.html#a2005bdcfe3f564880c3be8d9249f9419',1,'TeamSpeak3_Node_Server']]], + ['channelgetbyid',['channelGetById',['../class_team_speak3___node___server.html#ab384bb6d76c0dfb582c877852ddba1dc',1,'TeamSpeak3_Node_Server']]], + ['channelgetbyname',['channelGetByName',['../class_team_speak3___node___server.html#a93c751a3d29014c0c7c6ec67ad4ae15a',1,'TeamSpeak3_Node_Server']]], + ['channelgetlevel',['channelGetLevel',['../class_team_speak3___node___server.html#aac1d19d84aba2017c807ab3ccabe9d6b',1,'TeamSpeak3_Node_Server']]], + ['channelgetpathway',['channelGetPathway',['../class_team_speak3___node___server.html#a9f0d8234a8274bef62c40954c4dab731',1,'TeamSpeak3_Node_Server']]], + ['channelgroup_2ephp',['Channelgroup.php',['../_channelgroup_8php.html',1,'']]], + ['channelgroupclientlist',['channelGroupClientList',['../class_team_speak3___node___server.html#a6a560f0bf64a8c22c1b2542874093ba0',1,'TeamSpeak3_Node_Server']]], + ['channelgroupcopy',['channelGroupCopy',['../class_team_speak3___node___server.html#ae4ec84a2bad70c6bc88b13656d2bbea6',1,'TeamSpeak3_Node_Server']]], + ['channelgroupcreate',['channelGroupCreate',['../class_team_speak3___node___server.html#a9cbda0c1f2afcd8fdcf8b558b7d03e56',1,'TeamSpeak3_Node_Server']]], + ['channelgroupdelete',['channelGroupDelete',['../class_team_speak3___node___server.html#aab0725d35c8c4f8c075e85418b9b5955',1,'TeamSpeak3_Node_Server']]], + ['channelgroupgetbyid',['channelGroupGetById',['../class_team_speak3___node___server.html#a7ddb6b6324cf20c1ec0166d98914670e',1,'TeamSpeak3_Node_Server']]], + ['channelgroupgetbyname',['channelGroupGetByName',['../class_team_speak3___node___server.html#a12649be6d62d7aa194323bdd144a42c7',1,'TeamSpeak3_Node_Server']]], + ['channelgrouplist',['channelGroupList',['../class_team_speak3___node___server.html#a442c9127e61b6e1d31e368af71443b1a',1,'TeamSpeak3_Node_Server']]], + ['channelgrouplistreset',['channelGroupListReset',['../class_team_speak3___node___server.html#a529b1954afa6d9c93eb1c75e4b529a2d',1,'TeamSpeak3_Node_Server']]], + ['channelgrouppermassign',['channelGroupPermAssign',['../class_team_speak3___node___server.html#a96f49940c54b63c3611702d701f4d32f',1,'TeamSpeak3_Node_Server']]], + ['channelgrouppermlist',['channelGroupPermList',['../class_team_speak3___node___server.html#a6866211126530af14d9c60976960b39f',1,'TeamSpeak3_Node_Server']]], + ['channelgrouppermremove',['channelGroupPermRemove',['../class_team_speak3___node___server.html#aa16f874d9d2403b4d4182bfb39729ced',1,'TeamSpeak3_Node_Server']]], + ['channelgrouprename',['channelGroupRename',['../class_team_speak3___node___server.html#a87eed3ba8fc9c48f40b84fb54fbf3584',1,'TeamSpeak3_Node_Server']]], + ['channelisspacer',['channelIsSpacer',['../class_team_speak3___node___server.html#af1ace8782c92dabd6bf1d5fc2476295a',1,'TeamSpeak3_Node_Server']]], + ['channellist',['channelList',['../class_team_speak3___node___server.html#af89e63cf4213e41524cfcf522f46493d',1,'TeamSpeak3_Node_Server']]], + ['channellistreset',['channelListReset',['../class_team_speak3___node___server.html#aa6e9bfacd257844a49eb0e2444f468bb',1,'TeamSpeak3_Node_Server']]], + ['channelmove',['channelMove',['../class_team_speak3___node___server.html#a318977af4cbbe51289e68bdbd57a9342',1,'TeamSpeak3_Node_Server']]], + ['channelpermassign',['channelPermAssign',['../class_team_speak3___node___server.html#a912200d0dad1ac57581786d8f09948e4',1,'TeamSpeak3_Node_Server']]], + ['channelpermlist',['channelPermList',['../class_team_speak3___node___server.html#abf2cdfe68a150d47712165b91db12bbc',1,'TeamSpeak3_Node_Server']]], + ['channelpermremove',['channelPermRemove',['../class_team_speak3___node___server.html#a7d88676f4ef80466b1a24945c49a006b',1,'TeamSpeak3_Node_Server']]], + ['channelspacercreate',['channelSpacerCreate',['../class_team_speak3___node___server.html#aba6de5270fed2d117ad5cdb3f5503b43',1,'TeamSpeak3_Node_Server']]], + ['channelspacergetalign',['channelSpacerGetAlign',['../class_team_speak3___node___server.html#a34911a30ab894a628124c6e8ec3131f1',1,'TeamSpeak3_Node_Server']]], + ['channelspacergettype',['channelSpacerGetType',['../class_team_speak3___node___server.html#a4b65797b14ce1dbc5ab123840216d8d5',1,'TeamSpeak3_Node_Server']]], + ['char_2ephp',['Char.php',['../_char_8php.html',1,'']]], + ['check',['check',['../class_team_speak3___helper___uri.html#ac156511bb872b762ea30940a46d1f3d1',1,'TeamSpeak3_Helper_Uri']]], + ['checkfragment',['checkFragment',['../class_team_speak3___helper___uri.html#a94c765c6262844caad188417a77adda8',1,'TeamSpeak3_Helper_Uri']]], + ['checkhost',['checkHost',['../class_team_speak3___helper___uri.html#acaa2c62eecb695f7a7ea1e6484b4b169',1,'TeamSpeak3_Helper_Uri']]], + ['checkpass',['checkPass',['../class_team_speak3___helper___uri.html#ac9dff5b48e963efca445427a2ec602ca',1,'TeamSpeak3_Helper_Uri']]], + ['checkpath',['checkPath',['../class_team_speak3___helper___uri.html#abcfb777bab47406a328776f47f6a96a0',1,'TeamSpeak3_Helper_Uri']]], + ['checkport',['checkPort',['../class_team_speak3___helper___uri.html#a9878d6f37ef25b9e0666cf8cd9043515',1,'TeamSpeak3_Helper_Uri']]], + ['checkquery',['checkQuery',['../class_team_speak3___helper___uri.html#a36a08a673b6b108db27c880ad8d42031',1,'TeamSpeak3_Helper_Uri']]], + ['checkuser',['checkUser',['../class_team_speak3___helper___uri.html#a2b8d5365651a38c00ba1393559ba9efd',1,'TeamSpeak3_Helper_Uri']]], + ['clearhandlers',['clearHandlers',['../class_team_speak3___helper___signal.html#a8610e4f73d3f5b564edd1dfa81f1ac28',1,'TeamSpeak3_Helper_Signal']]], + ['client_2ephp',['Client.php',['../_client_8php.html',1,'']]], + ['client_5ftype_5fregular',['CLIENT_TYPE_REGULAR',['../class_team_speak3.html#ae2f58969a8868c4793c485d63e6e7f05',1,'TeamSpeak3']]], + ['client_5ftype_5fserverquery',['CLIENT_TYPE_SERVERQUERY',['../class_team_speak3.html#a3c3b0109548e9a41717d64db57f54b6a',1,'TeamSpeak3']]], + ['clientadd',['clientAdd',['../class_team_speak3___node___servergroup.html#ad5dbfe856a87929927fccfeea2426dc7',1,'TeamSpeak3_Node_Servergroup']]], + ['clientban',['clientBan',['../class_team_speak3___node___server.html#aec861d4290728b6048fea64db528fc7a',1,'TeamSpeak3_Node_Server']]], + ['clientcount',['clientCount',['../class_team_speak3___node___server.html#ae23d433b89992fa85371562db35763c1',1,'TeamSpeak3_Node_Server']]], + ['clientcountdb',['clientCountDb',['../class_team_speak3___node___server.html#a899389702e061146235d7204bc56a332',1,'TeamSpeak3_Node_Server']]], + ['clientdel',['clientDel',['../class_team_speak3___node___servergroup.html#a631e3c6363451e8ef041752af5ea3492',1,'TeamSpeak3_Node_Servergroup']]], + ['clientdeletedb',['clientDeleteDb',['../class_team_speak3___node___server.html#a5ca709d4b3a73686459ef0b09bd7d71a',1,'TeamSpeak3_Node_Server']]], + ['clientfind',['clientFind',['../class_team_speak3___node___server.html#ac42ed34f0e7faeea2f5c8a56196f2eef',1,'TeamSpeak3_Node_Server']]], + ['clientfinddb',['clientFindDb',['../class_team_speak3___node___server.html#ae8648992f4e8d470f474b280870243a8',1,'TeamSpeak3_Node_Server']]], + ['clientgetbydbid',['clientGetByDbid',['../class_team_speak3___node___server.html#acdaab3b579e68badc7849f615cf1f1c2',1,'TeamSpeak3_Node_Server']]], + ['clientgetbyid',['clientGetById',['../class_team_speak3___node___channel.html#a65e29a83a86be282c518beb2de18b09c',1,'TeamSpeak3_Node_Channel\clientGetById()'],['../class_team_speak3___node___server.html#ad7c9c04b99162b40afe39178a0d39632',1,'TeamSpeak3_Node_Server\clientGetById()']]], + ['clientgetbyname',['clientGetByName',['../class_team_speak3___node___channel.html#a551d0330e564f9cc5ab3352f17f82854',1,'TeamSpeak3_Node_Channel\clientGetByName()'],['../class_team_speak3___node___server.html#a3bd7e2be71de3187099ef1446f1a186b',1,'TeamSpeak3_Node_Server\clientGetByName()']]], + ['clientgetbyuid',['clientGetByUid',['../class_team_speak3___node___server.html#ad6e7bf183d0e904b1507c375e3aabde8',1,'TeamSpeak3_Node_Server']]], + ['clientgetidsbyuid',['clientGetIdsByUid',['../class_team_speak3___node___server.html#a8aaa42f632bbf8760d1666756cd4b744',1,'TeamSpeak3_Node_Server']]], + ['clientgetnamebydbid',['clientGetNameByDbid',['../class_team_speak3___node___server.html#a149e1b1857e51c8b9ebfb0818b5bc2f7',1,'TeamSpeak3_Node_Server']]], + ['clientgetnamebyuid',['clientGetNameByUid',['../class_team_speak3___node___server.html#a0a49ab51e9518d50606299944c143a9b',1,'TeamSpeak3_Node_Server']]], + ['clientgetservergroupsbydbid',['clientGetServerGroupsByDbid',['../class_team_speak3___node___server.html#a454f7bcafaf0bf2aa4c073d5267eb2c3',1,'TeamSpeak3_Node_Server']]], + ['clientinfodb',['clientInfoDb',['../class_team_speak3___node___server.html#a3938d6ae2889a541277558b87d21991f',1,'TeamSpeak3_Node_Server']]], + ['clientkick',['clientKick',['../class_team_speak3___node___server.html#a8ddb527606200718f41d0ef06beb40b8',1,'TeamSpeak3_Node_Server']]], + ['clientlist',['clientList',['../class_team_speak3___node___channel.html#a10413785d241a007e16d961cb996606d',1,'TeamSpeak3_Node_Channel\clientList()'],['../class_team_speak3___node___channelgroup.html#a2ba7fddc0192be2c8f58a643d706780c',1,'TeamSpeak3_Node_Channelgroup\clientList()'],['../class_team_speak3___node___server.html#a194c9f52336862f3168c408c413d4279',1,'TeamSpeak3_Node_Server\clientList()'],['../class_team_speak3___node___servergroup.html#abeba8c4874c822b84705abbf40c8d14f',1,'TeamSpeak3_Node_Servergroup\clientList()']]], + ['clientlistdb',['clientListDb',['../class_team_speak3___node___server.html#ab2f0462d9820e266e91bccb67529311d',1,'TeamSpeak3_Node_Server']]], + ['clientlistreset',['clientListReset',['../class_team_speak3___node___server.html#acc00747588b6b1320c7f08f872f65fcf',1,'TeamSpeak3_Node_Server']]], + ['clientmodifydb',['clientModifyDb',['../class_team_speak3___node___server.html#acb9a0d106c96e3367b3c7484519b5cbb',1,'TeamSpeak3_Node_Server']]], + ['clientmove',['clientMove',['../class_team_speak3___node___server.html#a35aee62e8ba86d0ea80ea5cafd9c5801',1,'TeamSpeak3_Node_Server']]], + ['clientpermassign',['clientPermAssign',['../class_team_speak3___node___channel.html#a0563e887ab93925f4c6a5a7028564406',1,'TeamSpeak3_Node_Channel\clientPermAssign()'],['../class_team_speak3___node___server.html#a387de111424128521346a04cd7be8710',1,'TeamSpeak3_Node_Server\clientPermAssign()']]], + ['clientpermassignbyname',['clientPermAssignByName',['../class_team_speak3___node___channel.html#a49536704a62df7ce862c8b49a34133f1',1,'TeamSpeak3_Node_Channel']]], + ['clientpermlist',['clientPermList',['../class_team_speak3___node___channel.html#aaecc89ca9afaafa7f5a34581e44b871c',1,'TeamSpeak3_Node_Channel\clientPermList()'],['../class_team_speak3___node___server.html#aa2f308ca18a93f602af0e38155c48deb',1,'TeamSpeak3_Node_Server\clientPermList()']]], + ['clientpermremove',['clientPermRemove',['../class_team_speak3___node___channel.html#a22162cfd2c6c996a04e46acd90ff653d',1,'TeamSpeak3_Node_Channel\clientPermRemove()'],['../class_team_speak3___node___server.html#a7ff9f7bff622429c810933b53454adb3',1,'TeamSpeak3_Node_Server\clientPermRemove()']]], + ['clientpermremovebyname',['clientPermRemoveByName',['../class_team_speak3___node___channel.html#af2d943d5b6b6b9bf051195f2d4396e3f',1,'TeamSpeak3_Node_Channel']]], + ['clientpoke',['clientPoke',['../class_team_speak3___node___server.html#a2bd6ce432c9dd08e550289b1cc0a16bd',1,'TeamSpeak3_Node_Server']]], + ['clientsetchannelgroup',['clientSetChannelGroup',['../class_team_speak3___node___server.html#a101d9234082d47f359ea39ca7bc1c0bf',1,'TeamSpeak3_Node_Server']]], + ['codec',['codec',['../class_team_speak3___helper___convert.html#a0bf98d2926ac8d174cd41934bcc2d506',1,'TeamSpeak3_Helper_Convert']]], + ['codec_5fcelt_5fmono',['CODEC_CELT_MONO',['../class_team_speak3.html#a8706d107a6d0bd56003436cf91931015',1,'TeamSpeak3']]], + ['codec_5fcrypt_5fdisabled',['CODEC_CRYPT_DISABLED',['../class_team_speak3.html#a204ba3447155504ad79532e02b0047c8',1,'TeamSpeak3']]], + ['codec_5fcrypt_5fenabled',['CODEC_CRYPT_ENABLED',['../class_team_speak3.html#af264159fd49c066ad3e88b475a168e45',1,'TeamSpeak3']]], + ['codec_5fcrypt_5findividual',['CODEC_CRYPT_INDIVIDUAL',['../class_team_speak3.html#af4beb7ff503847abc4d8f00fa4a14929',1,'TeamSpeak3']]], + ['codec_5fopus_5fmusic',['CODEC_OPUS_MUSIC',['../class_team_speak3.html#ad86387b6183780d2af6a1918552fc00b',1,'TeamSpeak3']]], + ['codec_5fopus_5fvoice',['CODEC_OPUS_VOICE',['../class_team_speak3.html#ac8a12a60994f2949c63e21d8915c8afa',1,'TeamSpeak3']]], + ['codec_5fspeex_5fnarrowband',['CODEC_SPEEX_NARROWBAND',['../class_team_speak3.html#a73cb8b928682f11db10d5f4bf92c579d',1,'TeamSpeak3']]], + ['codec_5fspeex_5fultrawideband',['CODEC_SPEEX_ULTRAWIDEBAND',['../class_team_speak3.html#ab1b79661570e52e80cb9382286c3f0a6',1,'TeamSpeak3']]], + ['codec_5fspeex_5fwideband',['CODEC_SPEEX_WIDEBAND',['../class_team_speak3.html#a7e144effeaf513a660467a0dadd1ae97',1,'TeamSpeak3']]], + ['complaintcreate',['complaintCreate',['../class_team_speak3___node___server.html#a7d683c16389f1b1d72e38b783638c3c4',1,'TeamSpeak3_Node_Server']]], + ['complaintdelete',['complaintDelete',['../class_team_speak3___node___server.html#a72cfe9527297ec1e6536b9c073c0858b',1,'TeamSpeak3_Node_Server']]], + ['complaintlist',['complaintList',['../class_team_speak3___node___server.html#af44418304dbbe76dca50be38e7e394de',1,'TeamSpeak3_Node_Server']]], + ['complaintlistclear',['complaintListClear',['../class_team_speak3___node___server.html#a2a6d384cf01078cb72cd9f9670cebb57',1,'TeamSpeak3_Node_Server']]], + ['connect',['connect',['../class_team_speak3___transport___abstract.html#a496c0c50f4a9921e86b0b13798b4f157',1,'TeamSpeak3_Transport_Abstract\connect()'],['../class_team_speak3___transport___t_c_p.html#a86ca484fe7ecbde46d21757208aa67cb',1,'TeamSpeak3_Transport_TCP\connect()'],['../class_team_speak3___transport___u_d_p.html#a38cf41fc697a8a79220b8dcc8307faef',1,'TeamSpeak3_Transport_UDP\connect()']]], + ['connectioninfo',['connectionInfo',['../class_team_speak3___node___server.html#a4c13644c69f768e0a449d5d0b7bcd1a9',1,'TeamSpeak3_Node_Server']]], + ['contains',['contains',['../class_team_speak3___helper___string.html#add153e99069f5f3a34f45c236f9e1bb3',1,'TeamSpeak3_Helper_String']]], + ['convert_2ephp',['Convert.php',['../_convert_8php.html',1,'']]], + ['copy',['copy',['../class_team_speak3___node___channelgroup.html#a338c5784a7d15055685065da491bcc1b',1,'TeamSpeak3_Node_Channelgroup\copy()'],['../class_team_speak3___node___servergroup.html#a983da0dbb46af94f89732173f0cb0cfc',1,'TeamSpeak3_Node_Servergroup\copy()']]], + ['count',['count',['../class_team_speak3___helper___string.html#a832580003f635cae85236bf7602fd24f',1,'TeamSpeak3_Helper_String\count()'],['../class_team_speak3___node___abstract.html#ad22d04a2800ae672f6117de3afb0e9c4',1,'TeamSpeak3_Node_Abstract\count()']]], + ['crypt_2ephp',['Crypt.php',['../_crypt_8php.html',1,'']]], + ['current',['current',['../class_team_speak3___helper___string.html#aeefa9ad9fcadd61a3ecf1d30cbed9efe',1,'TeamSpeak3_Helper_String\current()'],['../class_team_speak3___node___abstract.html#a1c78dbb54df73f8c5dabe41ebd476207',1,'TeamSpeak3_Node_Abstract\current()']]], + ['custominfo',['customInfo',['../class_team_speak3___node___client.html#adab4e78a0ba4366b8d73d50993bbec49',1,'TeamSpeak3_Node_Client\customInfo()'],['../class_team_speak3___node___server.html#ab607dab98be8ad823c6ea639045ceadd',1,'TeamSpeak3_Node_Server\customInfo()']]], + ['customsearch',['customSearch',['../class_team_speak3___node___server.html#ac81f6d268d0bd65d62adf54fdfb6f74c',1,'TeamSpeak3_Node_Server']]] +]; diff --git a/lib/docs/html/search/all_64.html b/lib/docs/html/search/all_64.html new file mode 100644 index 0000000..6482501 --- /dev/null +++ b/lib/docs/html/search/all_64.html @@ -0,0 +1,26 @@ + + + + + + + + + +
+
Loading...
+
+ +
Searching...
+
No Matches
+ +
+ + diff --git a/lib/docs/html/search/all_64.js b/lib/docs/html/search/all_64.js new file mode 100644 index 0000000..472005f --- /dev/null +++ b/lib/docs/html/search/all_64.js @@ -0,0 +1,13 @@ +var searchData= +[ + ['decipher',['decipher',['../class_team_speak3___helper___crypt.html#a7c0b9b5e2877bed5ad1147e46d44ee43',1,'TeamSpeak3_Helper_Crypt']]], + ['decrypt',['decrypt',['../class_team_speak3___helper___crypt.html#a38a8da0e26045f49f76c718aaaceab60',1,'TeamSpeak3_Helper_Crypt']]], + ['delete',['delete',['../class_team_speak3___node___channel.html#a1dde358f63d3ac8c2298fd21142dac27',1,'TeamSpeak3_Node_Channel\delete()'],['../class_team_speak3___node___channelgroup.html#a1e4959ff64841c33000f63b36eced974',1,'TeamSpeak3_Node_Channelgroup\delete()'],['../class_team_speak3___node___server.html#ac159e3dff47e2dca9b7baabcd75265a7',1,'TeamSpeak3_Node_Server\delete()'],['../class_team_speak3___node___servergroup.html#a1e6e04273af312581c41532a8d7619a7',1,'TeamSpeak3_Node_Servergroup\delete()']]], + ['deletedb',['deleteDb',['../class_team_speak3___node___client.html#a0ee114d931783274bcbb344c8beccf91',1,'TeamSpeak3_Node_Client']]], + ['delstorage',['delStorage',['../class_team_speak3___node___abstract.html#afbed20ee78d7e5a38097078dd91e70fd',1,'TeamSpeak3_Node_Abstract']]], + ['deprecated_20list',['Deprecated List',['../deprecated.html',1,'']]], + ['dircreate',['dirCreate',['../class_team_speak3___node___channel.html#ab34961db39c511984fc05c4b28517596',1,'TeamSpeak3_Node_Channel']]], + ['disconnect',['disconnect',['../class_team_speak3___transport___abstract.html#a87c023f67f2467aaf865dba35285b4d8',1,'TeamSpeak3_Transport_Abstract\disconnect()'],['../class_team_speak3___transport___t_c_p.html#ac2c0b51f286a8f71aa04bf73555b75c6',1,'TeamSpeak3_Transport_TCP\disconnect()'],['../class_team_speak3___transport___u_d_p.html#ab47ad7c8e213167430b4a495ec9f7b21',1,'TeamSpeak3_Transport_UDP\disconnect()']]], + ['download',['download',['../class_team_speak3___adapter___file_transfer.html#a731600b40702660abb06dcbcbc791d50',1,'TeamSpeak3_Adapter_FileTransfer']]], + ['dump',['dump',['../class_team_speak3.html#a152db9cb030dfc497e0b276ee312654d',1,'TeamSpeak3']]] +]; diff --git a/lib/docs/html/search/all_65.html b/lib/docs/html/search/all_65.html new file mode 100644 index 0000000..9004138 --- /dev/null +++ b/lib/docs/html/search/all_65.html @@ -0,0 +1,26 @@ + + + + + + + + + +
+
Loading...
+
+ +
Searching...
+
No Matches
+ +
+ + diff --git a/lib/docs/html/search/all_65.js b/lib/docs/html/search/all_65.js new file mode 100644 index 0000000..1d0a3fc --- /dev/null +++ b/lib/docs/html/search/all_65.js @@ -0,0 +1,24 @@ +var searchData= +[ + ['emit',['emit',['../class_team_speak3___helper___signal.html#a26e8fc61637d146b0347b7c9e09587ab',1,'TeamSpeak3_Helper_Signal']]], + ['encipher',['encipher',['../class_team_speak3___helper___crypt.html#a0795a29c94afaf2e8642d7b9fe8aa0e7',1,'TeamSpeak3_Helper_Crypt']]], + ['encrypt',['encrypt',['../class_team_speak3___helper___crypt.html#a23ce290df045657a686c2802fe826a74',1,'TeamSpeak3_Helper_Crypt']]], + ['endswith',['endsWith',['../class_team_speak3___helper___string.html#ab368725237c5ebff2116de6a8ba36c59',1,'TeamSpeak3_Helper_String']]], + ['error',['ERROR',['../class_team_speak3.html#a5e20ff014c021e5dc0f04777b272ec84',1,'TeamSpeak3']]], + ['escape',['escape',['../class_team_speak3___helper___string.html#ad1a297278673af0f99df8c8e2af09e9a',1,'TeamSpeak3_Helper_String']]], + ['event',['EVENT',['../class_team_speak3.html#a4dbceb88091137f08da2f78d893a22c9',1,'TeamSpeak3']]], + ['event_2ephp',['Event.php',['../_event_8php.html',1,'']]], + ['exception_2ephp',['Exception.php',['../_helper_2_exception_8php.html',1,'']]], + ['exception_2ephp',['Exception.php',['../_adapter_2_update_2_exception_8php.html',1,'']]], + ['exception_2ephp',['Exception.php',['../_transport_2_exception_8php.html',1,'']]], + ['exception_2ephp',['Exception.php',['../_node_2_exception_8php.html',1,'']]], + ['exception_2ephp',['Exception.php',['../_adapter_2_t_s_d_n_s_2_exception_8php.html',1,'']]], + ['exception_2ephp',['Exception.php',['../_helper_2_signal_2_exception_8php.html',1,'']]], + ['exception_2ephp',['Exception.php',['../_helper_2_profiler_2_exception_8php.html',1,'']]], + ['exception_2ephp',['Exception.php',['../_exception_8php.html',1,'']]], + ['exception_2ephp',['Exception.php',['../_adapter_2_file_transfer_2_exception_8php.html',1,'']]], + ['exception_2ephp',['Exception.php',['../_adapter_2_server_query_2_exception_8php.html',1,'']]], + ['exception_2ephp',['Exception.php',['../_adapter_2_exception_8php.html',1,'']]], + ['exception_2ephp',['Exception.php',['../_adapter_2_blacklist_2_exception_8php.html',1,'']]], + ['execute',['execute',['../class_team_speak3___node___abstract.html#af6811efc5065b8aadfd6792334ea6977',1,'TeamSpeak3_Node_Abstract']]] +]; diff --git a/lib/docs/html/search/all_66.html b/lib/docs/html/search/all_66.html new file mode 100644 index 0000000..5e2635f --- /dev/null +++ b/lib/docs/html/search/all_66.html @@ -0,0 +1,26 @@ + + + + + + + + + +
+
Loading...
+
+ +
Searching...
+
No Matches
+ +
+ + diff --git a/lib/docs/html/search/all_66.js b/lib/docs/html/search/all_66.js new file mode 100644 index 0000000..b7728b0 --- /dev/null +++ b/lib/docs/html/search/all_66.js @@ -0,0 +1,26 @@ +var searchData= +[ + ['factory',['factory',['../class_team_speak3___helper___string.html#a475f5a602d67dd0568fb8c86352c88a0',1,'TeamSpeak3_Helper_String\factory()'],['../class_team_speak3.html#aed403cdb559cae556a94a0d9823bcaf4',1,'TeamSpeak3\factory()']]], + ['fetcherror',['fetchError',['../class_team_speak3___adapter___server_query___reply.html#a1f7f7344c8059b9b591e05ea30b352ad',1,'TeamSpeak3_Adapter_ServerQuery_Reply']]], + ['fetchnodeinfo',['fetchNodeInfo',['../class_team_speak3___node___abstract.html#a10158df40ca8030d5d0e3c464154b988',1,'TeamSpeak3_Node_Abstract\fetchNodeInfo()'],['../class_team_speak3___node___channel.html#a0309efb6b6ba7612c0298edb3f411fd3',1,'TeamSpeak3_Node_Channel\fetchNodeInfo()'],['../class_team_speak3___node___client.html#ac3e560bcb715c46919000cd1820f7382',1,'TeamSpeak3_Node_Client\fetchNodeInfo()'],['../class_team_speak3___node___host.html#af215b492a79130730f05b1ce52cc1212',1,'TeamSpeak3_Node_Host\fetchNodeInfo()'],['../class_team_speak3___node___server.html#a1cf6d79bee67d387752af85f28901dac',1,'TeamSpeak3_Node_Server\fetchNodeInfo()']]], + ['fetchnodelist',['fetchNodeList',['../class_team_speak3___node___abstract.html#ab78c8a0a0bcd7458d310a9e05f012409',1,'TeamSpeak3_Node_Abstract\fetchNodeList()'],['../class_team_speak3___node___channel.html#a81bb1307281b161103c7578cb27883cb',1,'TeamSpeak3_Node_Channel\fetchNodeList()'],['../class_team_speak3___node___channelgroup.html#aa4c0c3d9766097b60e5a6e2a4937bd7c',1,'TeamSpeak3_Node_Channelgroup\fetchNodeList()'],['../class_team_speak3___node___host.html#ad672c568344dc5941225d92a87a537e2',1,'TeamSpeak3_Node_Host\fetchNodeList()'],['../class_team_speak3___node___server.html#a3ef412bad6efe2bde9d5ebcf17a7e113',1,'TeamSpeak3_Node_Server\fetchNodeList()'],['../class_team_speak3___node___servergroup.html#a5e3cbc007fd9ae9c984fa0a096bf15dd',1,'TeamSpeak3_Node_Servergroup\fetchNodeList()']]], + ['fetchobject',['fetchObject',['../class_team_speak3___viewer___html.html#a52d2ea098679874eb120da38727324c5',1,'TeamSpeak3_Viewer_Html\fetchObject()'],['../interface_team_speak3___viewer___interface.html#ad06c809a76558069871ba9aa16f66e79',1,'TeamSpeak3_Viewer_Interface\fetchObject()'],['../class_team_speak3___viewer___text.html#a8fb29a4ed7e5a605bd59bed82fd912bc',1,'TeamSpeak3_Viewer_Text\fetchObject()']]], + ['fetchpermissioncats',['fetchPermissionCats',['../class_team_speak3___node___host.html#a48619bb6662f66495e7b16378d3ff914',1,'TeamSpeak3_Node_Host']]], + ['fetchpermissionlist',['fetchPermissionList',['../class_team_speak3___node___host.html#a505bafb855213b5b46de201237ed0c9f',1,'TeamSpeak3_Node_Host']]], + ['fetchreply',['fetchReply',['../class_team_speak3___adapter___server_query___reply.html#ab6891908584fcfb9cd14bda568eeb51d',1,'TeamSpeak3_Adapter_ServerQuery_Reply']]], + ['file_5ftype_5fdirectory',['FILE_TYPE_DIRECTORY',['../class_team_speak3.html#a0dfea6a5fe76141895e0f2900e8e4e52',1,'TeamSpeak3']]], + ['file_5ftype_5fregular',['FILE_TYPE_REGULAR',['../class_team_speak3.html#aec926b29e75ca080eb7fb8fbf69f9ab9',1,'TeamSpeak3']]], + ['filedelete',['fileDelete',['../class_team_speak3___node___channel.html#a795adb2d08b347a25aef05ecb6d1388b',1,'TeamSpeak3_Node_Channel']]], + ['fileinfo',['fileInfo',['../class_team_speak3___node___channel.html#af80055c43aa221cfc9fb77ebe909e883',1,'TeamSpeak3_Node_Channel']]], + ['filelist',['fileList',['../class_team_speak3___node___channel.html#a36efedde38452a8f789d75da1ba57d27',1,'TeamSpeak3_Node_Channel']]], + ['filerename',['fileRename',['../class_team_speak3___node___channel.html#a0a91f8d1922a0987d619b2b999b20ed7',1,'TeamSpeak3_Node_Channel']]], + ['filetransfer_2ephp',['FileTransfer.php',['../_file_transfer_8php.html',1,'']]], + ['filteralnum',['filterAlnum',['../class_team_speak3___helper___string.html#a9bf5a109e41a1fd7dfb158a5fdd682b1',1,'TeamSpeak3_Helper_String']]], + ['filteralpha',['filterAlpha',['../class_team_speak3___helper___string.html#a02f3181ad499d5c501aa53e797453e9c',1,'TeamSpeak3_Helper_String']]], + ['filterdigits',['filterDigits',['../class_team_speak3___helper___string.html#a8c80e5bb8f27193646a53d404bf94887',1,'TeamSpeak3_Helper_String']]], + ['filterlist',['filterList',['../class_team_speak3___node___abstract.html#ad826df3c71029ca48839dbe9aa3559b8',1,'TeamSpeak3_Node_Abstract']]], + ['findfirst',['findFirst',['../class_team_speak3___helper___string.html#ad848ed7a9e1f42a5f5dfcbbce9b3e29e',1,'TeamSpeak3_Helper_String']]], + ['findlast',['findLast',['../class_team_speak3___helper___string.html#a87beac9c37d88273dddc7d4fb0da7422',1,'TeamSpeak3_Helper_String']]], + ['frombase64',['fromBase64',['../class_team_speak3___helper___string.html#ae48a7462ffd80cca1487685e4042c4c3',1,'TeamSpeak3_Helper_String']]], + ['fromhex',['fromHex',['../class_team_speak3___helper___char.html#a3b16631681c415d78734a3b59c2a51ed',1,'TeamSpeak3_Helper_Char\fromHex()'],['../class_team_speak3___helper___string.html#a74f8c216773fe9876fbf60ee02e643ca',1,'TeamSpeak3_Helper_String\fromHex()']]] +]; diff --git a/lib/docs/html/search/all_67.html b/lib/docs/html/search/all_67.html new file mode 100644 index 0000000..1eaa52e --- /dev/null +++ b/lib/docs/html/search/all_67.html @@ -0,0 +1,26 @@ + + + + + + + + + +
+
Loading...
+
+ +
Searching...
+
No Matches
+ +
+ + diff --git a/lib/docs/html/search/all_67.js b/lib/docs/html/search/all_67.js new file mode 100644 index 0000000..b5bf250 --- /dev/null +++ b/lib/docs/html/search/all_67.js @@ -0,0 +1,100 @@ +var searchData= +[ + ['get',['get',['../class_team_speak3___helper___profiler.html#abac13a094b11882d102d24857dd2f678',1,'TeamSpeak3_Helper_Profiler']]], + ['getadapter',['getAdapter',['../class_team_speak3___node___host.html#a3e2fffb397ede4f85bf1d97ad309874d',1,'TeamSpeak3_Node_Host\getAdapter()'],['../class_team_speak3___transport___abstract.html#a4ccffaa9c25155aee837d4e6dee8a037',1,'TeamSpeak3_Transport_Abstract\getAdapter()']]], + ['getadapterhost',['getAdapterHost',['../class_team_speak3___node___host.html#a7496a4bd1c575563b502e21b4c866415',1,'TeamSpeak3_Node_Host']]], + ['getadaptername',['getAdapterName',['../class_team_speak3.html#a222891a8da55aa7c6e7e4cba35d4a8c1',1,'TeamSpeak3']]], + ['getadapterport',['getAdapterPort',['../class_team_speak3___node___host.html#ab7453505efd28bab00fd4d72ded0c7ba',1,'TeamSpeak3_Node_Host']]], + ['getadaptertype',['getAdapterType',['../class_team_speak3___transport___abstract.html#a4cbdd67c5590f756a4fb5ddd5d53bbe1',1,'TeamSpeak3_Transport_Abstract']]], + ['getbaseuri',['getBaseUri',['../class_team_speak3___helper___uri.html#ad7159eaf5d227732ae7b3361dfbf0bfc',1,'TeamSpeak3_Helper_Uri']]], + ['getcallbackhash',['getCallbackHash',['../class_team_speak3___helper___signal.html#ada301980bc0f9b8f310e8656972b6a35',1,'TeamSpeak3_Helper_Signal']]], + ['getchildren',['getChildren',['../class_team_speak3___node___abstract.html#a4b9dee48bb72f0eab8b9d4b0ea25c5f4',1,'TeamSpeak3_Node_Abstract']]], + ['getclass',['getClass',['../class_team_speak3___node___abstract.html#af6e1416ad2e568f48ff0d85b15b2a673',1,'TeamSpeak3_Node_Abstract']]], + ['getclientrev',['getClientRev',['../class_team_speak3___adapter___update.html#af42f2e98ffbecdbc375304737a54a4a0',1,'TeamSpeak3_Adapter_Update']]], + ['getclientversion',['getClientVersion',['../class_team_speak3___adapter___update.html#aa1c205259b8912526ad533ed17acd564',1,'TeamSpeak3_Adapter_Update']]], + ['getclones',['getClones',['../class_team_speak3___node___client.html#a1b028c8df6a52433a3e6b2f8ab302553',1,'TeamSpeak3_Node_Client']]], + ['getcommandstring',['getCommandString',['../class_team_speak3___adapter___server_query___reply.html#a9084e31d5fe7e0dcc7a4247662578935',1,'TeamSpeak3_Adapter_ServerQuery_Reply']]], + ['getconfig',['getConfig',['../class_team_speak3___transport___abstract.html#ac9bec37a13a1483833c80ffd008d4596',1,'TeamSpeak3_Transport_Abstract']]], + ['getcontainerclass',['getContainerClass',['../class_team_speak3___viewer___html.html#a1264b2938ad89a3688b6b86f81d91640',1,'TeamSpeak3_Viewer_Html']]], + ['getcontainerident',['getContainerIdent',['../class_team_speak3___viewer___html.html#a85e30363f2ec479353bc9101f42dab87',1,'TeamSpeak3_Viewer_Html']]], + ['getcontainersummary',['getContainerSummary',['../class_team_speak3___viewer___html.html#aca40f5b5b2a6f778e7913a9ed203a316',1,'TeamSpeak3_Viewer_Html']]], + ['getcorpusclass',['getCorpusClass',['../class_team_speak3___viewer___html.html#a2d994d1abe066712d74d9bdef2f1a579',1,'TeamSpeak3_Viewer_Html']]], + ['getcorpusicon',['getCorpusIcon',['../class_team_speak3___viewer___html.html#a89ad59f4d773c0ad5d99e6fd45f27d99',1,'TeamSpeak3_Viewer_Html\getCorpusIcon()'],['../class_team_speak3___viewer___text.html#a7bf9b2137c14dad13c8fd2e2df33615c',1,'TeamSpeak3_Viewer_Text\getCorpusIcon()']]], + ['getcorpusname',['getCorpusName',['../class_team_speak3___viewer___html.html#a3b70618ebebf0ad552f983340d72bacb',1,'TeamSpeak3_Viewer_Html\getCorpusName()'],['../class_team_speak3___viewer___text.html#a8d6fcf3812bf72c81214263da3e6f555',1,'TeamSpeak3_Viewer_Text\getCorpusName()']]], + ['getcorpustitle',['getCorpusTitle',['../class_team_speak3___viewer___html.html#afd13c192016d147b8fc43284395d4140',1,'TeamSpeak3_Viewer_Html']]], + ['getdata',['getData',['../class_team_speak3___adapter___server_query___event.html#a476acf6ce132b0a3d0b4fc9b22e7405e',1,'TeamSpeak3_Adapter_ServerQuery_Event']]], + ['geterrorproperty',['getErrorProperty',['../class_team_speak3___adapter___server_query___reply.html#a1a681042ce8d5d653d77a1f7db8cdc42',1,'TeamSpeak3_Adapter_ServerQuery_Reply']]], + ['getescapepatterns',['getEscapePatterns',['../class_team_speak3.html#a09e261dfec76e4be66f3fa031a33e12f',1,'TeamSpeak3']]], + ['getexcludequeryclients',['getExcludeQueryClients',['../class_team_speak3___node___host.html#aed2480265ca34df1548b35b95f4ec3d1',1,'TeamSpeak3_Node_Host']]], + ['getfilepath',['getFilePath',['../class_team_speak3.html#a33bc8003224e5d95c46b00ccb1019cd7',1,'TeamSpeak3']]], + ['getfqdnparts',['getFQDNParts',['../class_team_speak3___helper___uri.html#a492df27bfd3856a754ab6aa146731813',1,'TeamSpeak3_Helper_Uri']]], + ['getfragment',['getFragment',['../class_team_speak3___helper___uri.html#ad32a11cb34f078847033407ba3b95eb7',1,'TeamSpeak3_Helper_Uri']]], + ['gethandlers',['getHandlers',['../class_team_speak3___helper___signal.html#af414b1e8d18081c374a852c12c0b5cb6',1,'TeamSpeak3_Helper_Signal']]], + ['gethost',['getHost',['../class_team_speak3___adapter___server_query.html#a948c56497ac50d138169101f4b7b97b8',1,'TeamSpeak3_Adapter_ServerQuery\getHost()'],['../class_team_speak3___helper___uri.html#aca4bbb23cafa5833af4565d23f0b57c6',1,'TeamSpeak3_Helper_Uri\getHost()']]], + ['gethostparam',['getHostParam',['../class_team_speak3___helper___uri.html#a238c6f9d42bf87d768518a17474c9e3c',1,'TeamSpeak3_Helper_Uri']]], + ['gethosturi',['getHostUri',['../class_team_speak3___helper___uri.html#a68713e4238661a758b2f8f18691d05b3',1,'TeamSpeak3_Helper_Uri']]], + ['geticon',['getIcon',['../class_team_speak3___node___abstract.html#a84162e45950d55298791eb5771fd315d',1,'TeamSpeak3_Node_Abstract\getIcon()'],['../class_team_speak3___node___channel.html#a8cc6d7499a4556e2cfa42d8a9f9b63c0',1,'TeamSpeak3_Node_Channel\getIcon()'],['../class_team_speak3___node___channelgroup.html#a9c90aaa04b378dab3f24eb297a9951d3',1,'TeamSpeak3_Node_Channelgroup\getIcon()'],['../class_team_speak3___node___client.html#a0ba0213562c9ca67efa1507076ca3079',1,'TeamSpeak3_Node_Client\getIcon()'],['../class_team_speak3___node___host.html#aa158b0568f696c2b5cb780c24b8d1410',1,'TeamSpeak3_Node_Host\getIcon()'],['../class_team_speak3___node___server.html#aa2d9831041f8a981349f4a5b92729efe',1,'TeamSpeak3_Node_Server\getIcon()'],['../class_team_speak3___node___servergroup.html#ac0cac15d7fa05e6685315acdab772750',1,'TeamSpeak3_Node_Servergroup\getIcon()']]], + ['getid',['getId',['../class_team_speak3___node___abstract.html#a4a0a5545abc2460d1d9b3d6b52d07cbe',1,'TeamSpeak3_Node_Abstract']]], + ['getimage',['getImage',['../class_team_speak3___viewer___html.html#a74577ba126405e719950f41278d23137',1,'TeamSpeak3_Viewer_Html']]], + ['getinfo',['getInfo',['../class_team_speak3___node___abstract.html#af63ae54f10c02ec6b1033425f795fef4',1,'TeamSpeak3_Node_Abstract']]], + ['getinstance',['getInstance',['../class_team_speak3___helper___signal.html#af156036673730a599c10c8cbfd5e50bf',1,'TeamSpeak3_Helper_Signal']]], + ['getlevel',['getLevel',['../class_team_speak3___node___channel.html#a2f42245368e047bee70760ecb1aaada2',1,'TeamSpeak3_Node_Channel']]], + ['getloadclientlistfirst',['getLoadClientlistFirst',['../class_team_speak3___node___host.html#afcdeba4b4a628d5a5d093ccad862681f',1,'TeamSpeak3_Node_Host']]], + ['getmemusage',['getMemUsage',['../class_team_speak3___helper___profiler___timer.html#adaeee8c828e9f9b5408f92399184b934',1,'TeamSpeak3_Helper_Profiler_Timer']]], + ['getmessage',['getMessage',['../class_team_speak3___adapter___server_query___event.html#aec6954f96cbc4a229348ae31f9b289e7',1,'TeamSpeak3_Adapter_ServerQuery_Event']]], + ['getmetadata',['getMetaData',['../class_team_speak3___transport___abstract.html#a9d3e42ebfb02f2f9b4af8e80f2209b28',1,'TeamSpeak3_Transport_Abstract']]], + ['getnotifyevents',['getNotifyEvents',['../class_team_speak3___adapter___server_query___reply.html#a2810d0ec7a80446851fd9af783eaadb1',1,'TeamSpeak3_Adapter_ServerQuery_Reply']]], + ['getparent',['getParent',['../class_team_speak3___node___abstract.html#a44618fb948562e89515330e65d08da9a',1,'TeamSpeak3_Node_Abstract']]], + ['getpass',['getPass',['../class_team_speak3___helper___uri.html#a6d9477823c4f20b2daa98a9153326463',1,'TeamSpeak3_Helper_Uri']]], + ['getpath',['getPath',['../class_team_speak3___helper___uri.html#a848e4a9bd0caa493f064b98cf4e24906',1,'TeamSpeak3_Helper_Uri']]], + ['getpathway',['getPathway',['../class_team_speak3___node___channel.html#aecd920dea71369198d448f808c9b3810',1,'TeamSpeak3_Node_Channel']]], + ['getport',['getPort',['../class_team_speak3___helper___uri.html#aa7b59f4a3528141842fcdda1af6920cc',1,'TeamSpeak3_Helper_Uri']]], + ['getpredefinedqueryname',['getPredefinedQueryName',['../class_team_speak3___node___host.html#ac61eb4d34ca8848758aad2721eb9083f',1,'TeamSpeak3_Node_Host']]], + ['getprefix',['getPrefix',['../class_team_speak3___viewer___html.html#a835b464739dd5af836b1b9d4f4b5d4d8',1,'TeamSpeak3_Viewer_Html\getPrefix()'],['../class_team_speak3___viewer___text.html#acd7d9ebbae3700e38b0bcb6767728936',1,'TeamSpeak3_Viewer_Text\getPrefix()']]], + ['getprefixclass',['getPrefixClass',['../class_team_speak3___viewer___html.html#ad929c3202591daf32252e51637487d7b',1,'TeamSpeak3_Viewer_Html']]], + ['getprofiler',['getProfiler',['../class_team_speak3___adapter___abstract.html#ab1bd002b22a8121e8efa5ab4ccd36fa5',1,'TeamSpeak3_Adapter_Abstract']]], + ['getproperty',['getProperty',['../class_team_speak3___node___abstract.html#a585728537b56194aeab30b0316126b89',1,'TeamSpeak3_Node_Abstract']]], + ['getquery',['getQuery',['../class_team_speak3___helper___uri.html#a0a56de9c6bd0fbf00098dc6b7db1840c',1,'TeamSpeak3_Helper_Uri']]], + ['getquerycount',['getQueryCount',['../class_team_speak3___adapter___server_query.html#a20e3c73543f989c2955cbcab6069c1a0',1,'TeamSpeak3_Adapter_ServerQuery']]], + ['getquerylasttimestamp',['getQueryLastTimestamp',['../class_team_speak3___adapter___server_query.html#a1c156818989d1377763503849dd3d933',1,'TeamSpeak3_Adapter_ServerQuery']]], + ['getqueryruntime',['getQueryRuntime',['../class_team_speak3___adapter___server_query.html#afaf3a140c05ee3bb840a4f20c050cfaa',1,'TeamSpeak3_Adapter_ServerQuery']]], + ['getqueryvar',['getQueryVar',['../class_team_speak3___helper___uri.html#a7e23bd80c39a9cf8b286f08cf177331e',1,'TeamSpeak3_Helper_Uri']]], + ['getrev',['getRev',['../class_team_speak3___adapter___update.html#aacf23e72f0978884a9b44c7e6679a06d',1,'TeamSpeak3_Adapter_Update\getRev()'],['../class_team_speak3___node___client.html#a4a941f045f697ed0ed494e9d785b037b',1,'TeamSpeak3_Node_Client\getRev()']]], + ['getrowclass',['getRowClass',['../class_team_speak3___viewer___html.html#a766b7745f531b280aad2bfc6754d5134',1,'TeamSpeak3_Viewer_Html']]], + ['getruntime',['getRuntime',['../class_team_speak3___helper___profiler___timer.html#a40449e19407ff9b99cadd30be99a1763',1,'TeamSpeak3_Helper_Profiler_Timer']]], + ['getscheme',['getScheme',['../class_team_speak3___helper___uri.html#af47ad30cc5c9a600ee2a6c7de6e1aa83',1,'TeamSpeak3_Helper_Uri']]], + ['getsender',['getSender',['../class_team_speak3___exception.html#ae7d4b369dd11d3cf56d120acae0cf1db',1,'TeamSpeak3_Exception']]], + ['getserverrev',['getServerRev',['../class_team_speak3___adapter___update.html#a3e1f0776fc33efb9ac61336ae59faa80',1,'TeamSpeak3_Adapter_Update']]], + ['getserverversion',['getServerVersion',['../class_team_speak3___adapter___update.html#a116864fefa2a1cf7fb5fef1847320e60',1,'TeamSpeak3_Adapter_Update']]], + ['getsessparam',['getSessParam',['../class_team_speak3___helper___uri.html#ae1f042efd1dce1734bac691a147edc00',1,'TeamSpeak3_Helper_Uri']]], + ['getsignals',['getSignals',['../class_team_speak3___helper___signal.html#aa690a091efef853c4a47d7b7e7363c03',1,'TeamSpeak3_Helper_Signal']]], + ['getstorage',['getStorage',['../class_team_speak3___node___abstract.html#a5a6888304aca8d5f12fecb460b0ef6d2',1,'TeamSpeak3_Node_Abstract']]], + ['getstream',['getStream',['../class_team_speak3___transport___abstract.html#a847453109ae2d41b4b119aa802f05e64',1,'TeamSpeak3_Transport_Abstract']]], + ['getsuffixclass',['getSuffixClass',['../class_team_speak3___viewer___html.html#a5538c134542e5edae2a0a8607241d63f',1,'TeamSpeak3_Viewer_Html']]], + ['getsuffixflag',['getSuffixFlag',['../class_team_speak3___viewer___html.html#ac4ba12c86e5f692f1bcabee7741c9efb',1,'TeamSpeak3_Viewer_Html']]], + ['getsuffixicon',['getSuffixIcon',['../class_team_speak3___viewer___html.html#a60f60532cd44e2e259e3ed120208ce2f',1,'TeamSpeak3_Viewer_Html']]], + ['getsuffixiconchannel',['getSuffixIconChannel',['../class_team_speak3___viewer___html.html#ac7d4636a787439c500691818edeae752',1,'TeamSpeak3_Viewer_Html']]], + ['getsuffixiconclient',['getSuffixIconClient',['../class_team_speak3___viewer___html.html#a9d56bf81f140772079751f2361b3ffc2',1,'TeamSpeak3_Viewer_Html']]], + ['getsuffixiconserver',['getSuffixIconServer',['../class_team_speak3___viewer___html.html#a1c3ac91d48f71be186f661dee7158d64',1,'TeamSpeak3_Viewer_Html']]], + ['getsymbol',['getSymbol',['../class_team_speak3___node___abstract.html#aaa53c7a8efa4739c50619e5b52a176e5',1,'TeamSpeak3_Node_Abstract\getSymbol()'],['../class_team_speak3___node___channel.html#abbfb1e4be497e07c1a25e9bd6047035a',1,'TeamSpeak3_Node_Channel\getSymbol()'],['../class_team_speak3___node___channelgroup.html#ae0bc51c79f86fc58f7900d67fe86ae8a',1,'TeamSpeak3_Node_Channelgroup\getSymbol()'],['../class_team_speak3___node___client.html#a66d8bd549b7add92ad2e0046a9fa9889',1,'TeamSpeak3_Node_Client\getSymbol()'],['../class_team_speak3___node___host.html#a4ac8fb7a2f5b33ff5a0c0ca9eedfe642',1,'TeamSpeak3_Node_Host\getSymbol()'],['../class_team_speak3___node___server.html#a1cc7958a2d747a65c877408a2e0772f2',1,'TeamSpeak3_Node_Server\getSymbol()'],['../class_team_speak3___node___servergroup.html#a40e50431a4e53f802868312ac8b93cf7',1,'TeamSpeak3_Node_Servergroup\getSymbol()']]], + ['gettransport',['getTransport',['../class_team_speak3___adapter___abstract.html#a538e98e6dcc6a2ad7fdcb4913f6f7c52',1,'TeamSpeak3_Adapter_Abstract']]], + ['gettransporthost',['getTransportHost',['../class_team_speak3___adapter___abstract.html#adcf5e760b6d6d3e42f11d8b1bc5d87cc',1,'TeamSpeak3_Adapter_Abstract']]], + ['gettransportport',['getTransportPort',['../class_team_speak3___adapter___abstract.html#a5eb0b19787ec6f719d8f19bcd7182461',1,'TeamSpeak3_Adapter_Abstract']]], + ['gettype',['getType',['../class_team_speak3___adapter___server_query___event.html#aba87307c13aaa64c3c91e4fa398517ef',1,'TeamSpeak3_Adapter_ServerQuery_Event']]], + ['getuniqueid',['getUniqueId',['../class_team_speak3___node___abstract.html#a4a68d64cff73a4f67859e28a89b3c511',1,'TeamSpeak3_Node_Abstract\getUniqueId()'],['../class_team_speak3___node___channel.html#a44bfe5d3b60bf1126fe64a3ab26d9b97',1,'TeamSpeak3_Node_Channel\getUniqueId()'],['../class_team_speak3___node___channelgroup.html#a9a64eeb8d1df8872244cd8875460047a',1,'TeamSpeak3_Node_Channelgroup\getUniqueId()'],['../class_team_speak3___node___client.html#a62a1fed92852d1b91b7a5f6036a867f3',1,'TeamSpeak3_Node_Client\getUniqueId()'],['../class_team_speak3___node___host.html#a901cadb5fd29aee73d4e86bb92db58c6',1,'TeamSpeak3_Node_Host\getUniqueId()'],['../class_team_speak3___node___server.html#a175e7b6d81e8e6c363df445874e5932b',1,'TeamSpeak3_Node_Server\getUniqueId()'],['../class_team_speak3___node___servergroup.html#a075a1b37311c84468abae9e4cfcbae08',1,'TeamSpeak3_Node_Servergroup\getUniqueId()']]], + ['getuseofflineasvirtual',['getUseOfflineAsVirtual',['../class_team_speak3___node___host.html#a8ae0e012a6b44b8957ee2266eff8df9b',1,'TeamSpeak3_Node_Host']]], + ['getuser',['getUser',['../class_team_speak3___helper___uri.html#ab685d3e39922aa170d2d6b06a6304084',1,'TeamSpeak3_Helper_Uri']]], + ['getuserparam',['getUserParam',['../class_team_speak3___helper___uri.html#acfcb54ee4aedfaca04b09151167041cf',1,'TeamSpeak3_Helper_Uri']]], + ['getversion',['getVersion',['../class_team_speak3___adapter___update.html#ac25205f46f31a8de30454d499e6aaa04',1,'TeamSpeak3_Adapter_Update']]], + ['getviewer',['getViewer',['../class_team_speak3___node___abstract.html#a3d3f27dab5569edf3a737be080e7c8bc',1,'TeamSpeak3_Node_Abstract']]], + ['greet',['GREET',['../class_team_speak3.html#a483d97eee2596af11821f74c6d1b83e0',1,'TeamSpeak3']]], + ['group_5fdbtype_5fregular',['GROUP_DBTYPE_REGULAR',['../class_team_speak3.html#a6e018ed33e01f80861a9649f5fbdcb05',1,'TeamSpeak3']]], + ['group_5fdbtype_5fserverquery',['GROUP_DBTYPE_SERVERQUERY',['../class_team_speak3.html#a197a03a9e83e5663d0f071df18fb127d',1,'TeamSpeak3']]], + ['group_5fdbtype_5ftemplate',['GROUP_DBTYPE_TEMPLATE',['../class_team_speak3.html#aeeab1204791458d7e543aedf5c4c8699',1,'TeamSpeak3']]], + ['group_5fidentifiy_5fstrongest',['GROUP_IDENTIFIY_STRONGEST',['../class_team_speak3.html#ac8dbaaf31bc8b339287692ae80abae94',1,'TeamSpeak3']]], + ['group_5fidentifiy_5fweakest',['GROUP_IDENTIFIY_WEAKEST',['../class_team_speak3.html#a7e2d5457e1faace304311ca1617c283b',1,'TeamSpeak3']]], + ['group_5fnamemode_5fbefore',['GROUP_NAMEMODE_BEFORE',['../class_team_speak3.html#ac9179c4a74a5c0cd269e6639868f3b57',1,'TeamSpeak3']]], + ['group_5fnamemode_5fbehind',['GROUP_NAMEMODE_BEHIND',['../class_team_speak3.html#af93218df38a498fd730ad2f2676f6567',1,'TeamSpeak3']]], + ['group_5fnamemode_5fhidden',['GROUP_NAMEMODE_HIDDEN',['../class_team_speak3.html#a9bfa984813e9074be19a7cba3a8673d3',1,'TeamSpeak3']]], + ['grouptype',['groupType',['../class_team_speak3___helper___convert.html#a0ae2e850f20e8f33bdf83bd7f9975f49',1,'TeamSpeak3_Helper_Convert']]] +]; diff --git a/lib/docs/html/search/all_68.html b/lib/docs/html/search/all_68.html new file mode 100644 index 0000000..2db11df --- /dev/null +++ b/lib/docs/html/search/all_68.html @@ -0,0 +1,26 @@ + + + + + + + + + +
+
Loading...
+
+ +
Searching...
+
No Matches
+ +
+ + diff --git a/lib/docs/html/search/all_68.js b/lib/docs/html/search/all_68.js new file mode 100644 index 0000000..1d2994a --- /dev/null +++ b/lib/docs/html/search/all_68.js @@ -0,0 +1,25 @@ +var searchData= +[ + ['handler_2ephp',['Handler.php',['../_handler_8php.html',1,'']]], + ['haschildren',['hasChildren',['../class_team_speak3___node___abstract.html#a7769506879dac3170344d8e59218b644',1,'TeamSpeak3_Node_Abstract']]], + ['hasfragment',['hasFragment',['../class_team_speak3___helper___uri.html#a91539b2925a03129637bd3f3efec42a6',1,'TeamSpeak3_Helper_Uri']]], + ['hashandlers',['hasHandlers',['../class_team_speak3___helper___signal.html#a840339183812e5e51d9c3b1beb9d1fd3',1,'TeamSpeak3_Helper_Signal']]], + ['hashost',['hasHost',['../class_team_speak3___helper___uri.html#adb9f6e1df57af8b47e94d6d581475eb1',1,'TeamSpeak3_Helper_Uri']]], + ['hasnext',['hasNext',['../class_team_speak3___node___abstract.html#ad9aee4153360fd8139f6b0d68efff56f',1,'TeamSpeak3_Node_Abstract']]], + ['haspass',['hasPass',['../class_team_speak3___helper___uri.html#aa496602a698ed5690d48ec4326f8c793',1,'TeamSpeak3_Helper_Uri']]], + ['haspath',['hasPath',['../class_team_speak3___helper___uri.html#a0f72daa8e78e5cc5ca345af3602cc6a1',1,'TeamSpeak3_Helper_Uri']]], + ['hasport',['hasPort',['../class_team_speak3___helper___uri.html#aada4ff6119919a87251a4569b54f3b4a',1,'TeamSpeak3_Helper_Uri']]], + ['hasquery',['hasQuery',['../class_team_speak3___helper___uri.html#ad53c6db20a03e53f9568e8ca1ab91744',1,'TeamSpeak3_Helper_Uri']]], + ['hasqueryvar',['hasQueryVar',['../class_team_speak3___helper___uri.html#a17cd4b5e0108e858bb51167e0046f0c4',1,'TeamSpeak3_Helper_Uri']]], + ['hasscheme',['hasScheme',['../class_team_speak3___helper___uri.html#a489f79eec547a0c9ca9fc6befebcc0f3',1,'TeamSpeak3_Helper_Uri']]], + ['hasuser',['hasUser',['../class_team_speak3___helper___uri.html#a24fab900cd8e2b43e253f85d6925f7b7',1,'TeamSpeak3_Helper_Uri']]], + ['host_2ephp',['Host.php',['../_host_8php.html',1,'']]], + ['hostbanner_5fignore_5faspect',['HOSTBANNER_IGNORE_ASPECT',['../class_team_speak3.html#a0948f6a231bacd72d3455adc3314aadb',1,'TeamSpeak3']]], + ['hostbanner_5fkeep_5faspect',['HOSTBANNER_KEEP_ASPECT',['../class_team_speak3.html#aa9e2a430fd552f4a0c3dec0855a4f8ad',1,'TeamSpeak3']]], + ['hostbanner_5fno_5fadjust',['HOSTBANNER_NO_ADJUST',['../class_team_speak3.html#a5a13321bcb3eff4b51cbe56eb342b701',1,'TeamSpeak3']]], + ['hostmsg_5flog',['HOSTMSG_LOG',['../class_team_speak3.html#a6c155661d55cd61ef79b1fd6413e5880',1,'TeamSpeak3']]], + ['hostmsg_5fmodal',['HOSTMSG_MODAL',['../class_team_speak3.html#a7d044183051509b77831a5546748245e',1,'TeamSpeak3']]], + ['hostmsg_5fmodalquit',['HOSTMSG_MODALQUIT',['../class_team_speak3.html#ad1956014c2a37cf8883bc6e845991597',1,'TeamSpeak3']]], + ['hostmsg_5fnone',['HOSTMSG_NONE',['../class_team_speak3.html#a4350e9a5261f832d44d3b416d5bdcb50',1,'TeamSpeak3']]], + ['html_2ephp',['Html.php',['../_html_8php.html',1,'']]] +]; diff --git a/lib/docs/html/search/all_69.html b/lib/docs/html/search/all_69.html new file mode 100644 index 0000000..b8c8306 --- /dev/null +++ b/lib/docs/html/search/all_69.html @@ -0,0 +1,26 @@ + + + + + + + + + +
+
Loading...
+
+ +
Searching...
+
No Matches
+ +
+ + diff --git a/lib/docs/html/search/all_69.js b/lib/docs/html/search/all_69.js new file mode 100644 index 0000000..1bd46e8 --- /dev/null +++ b/lib/docs/html/search/all_69.js @@ -0,0 +1,31 @@ +var searchData= +[ + ['icondownload',['iconDownload',['../class_team_speak3___node___channel.html#a014365ed1cbed74e25efd721ce495868',1,'TeamSpeak3_Node_Channel\iconDownload()'],['../class_team_speak3___node___channelgroup.html#a981a4c5601d67abd85b1a8dd41faf445',1,'TeamSpeak3_Node_Channelgroup\iconDownload()'],['../class_team_speak3___node___client.html#a165635e00e068e1f35ae2f32082334b2',1,'TeamSpeak3_Node_Client\iconDownload()'],['../class_team_speak3___node___server.html#aaeffd8b897c67a8b483eba32d2c63c9c',1,'TeamSpeak3_Node_Server\iconDownload()'],['../class_team_speak3___node___servergroup.html#a8fbc1206b06b4ad342591c94cf829335',1,'TeamSpeak3_Node_Servergroup\iconDownload()']]], + ['icongetname',['iconGetName',['../class_team_speak3___node___abstract.html#a02ce34dce8fbf7881ce2323f7af0dca3',1,'TeamSpeak3_Node_Abstract']]], + ['iconislocal',['iconIsLocal',['../class_team_speak3___node___abstract.html#aa78cba098574598dd9c0331cac1f39a1',1,'TeamSpeak3_Node_Abstract']]], + ['iconupload',['iconUpload',['../class_team_speak3___node___server.html#aa09963df399797506a9f5107541f826d',1,'TeamSpeak3_Node_Server']]], + ['imagemimetype',['imageMimeType',['../class_team_speak3___helper___convert.html#af9f1557a852d6c51fc71d8f5199594f4',1,'TeamSpeak3_Helper_Convert']]], + ['infodb',['infoDb',['../class_team_speak3___node___client.html#a63fd3d66404a46a1ca7fb0795a83818e',1,'TeamSpeak3_Node_Client']]], + ['init',['init',['../class_team_speak3___adapter___file_transfer.html#a56c9d8b7f347dcc70787956d8a389a17',1,'TeamSpeak3_Adapter_FileTransfer\init()'],['../class_team_speak3___helper___profiler.html#a7761d609ec2deda6d278709293f01d22',1,'TeamSpeak3_Helper_Profiler\init()'],['../class_team_speak3.html#a87bd78e5017a04145076860846395a7d',1,'TeamSpeak3\init()']]], + ['inittransport',['initTransport',['../class_team_speak3___adapter___abstract.html#a87920747e1eb4a25396c5b5e5567094b',1,'TeamSpeak3_Adapter_Abstract']]], + ['interface_2ephp',['Interface.php',['../_viewer_2_interface_8php.html',1,'']]], + ['interface_2ephp',['Interface.php',['../_helper_2_signal_2_interface_8php.html',1,'']]], + ['isblacklisted',['isBlacklisted',['../class_team_speak3___adapter___blacklist.html#a810eeede201a669baae7c2cfb394c47f',1,'TeamSpeak3_Adapter_Blacklist']]], + ['isconnected',['isConnected',['../class_team_speak3___transport___abstract.html#a2b1d6d9d2f48fae3165cd5a863cdefe1',1,'TeamSpeak3_Transport_Abstract']]], + ['iscontrol',['isControl',['../class_team_speak3___helper___char.html#a22df6b40aceb46041f0d54cdb94e207c',1,'TeamSpeak3_Helper_Char']]], + ['isdigit',['isDigit',['../class_team_speak3___helper___char.html#a516ba12f480718c4f629bc80b4534e45',1,'TeamSpeak3_Helper_Char']]], + ['isint',['isInt',['../class_team_speak3___helper___string.html#abd90cc6d33ba2a43f86b988f7596c5cd',1,'TeamSpeak3_Helper_String']]], + ['isletter',['isLetter',['../class_team_speak3___helper___char.html#af5e38bffad5f3337a0a098595c3cc1dc',1,'TeamSpeak3_Helper_Char']]], + ['islower',['isLower',['../class_team_speak3___helper___char.html#af1a9090eb45deefe6337137af4cdb9fb',1,'TeamSpeak3_Helper_Char']]], + ['ismark',['isMark',['../class_team_speak3___helper___char.html#a7b0af0f517fad3d463e37a73f0d0e6aa',1,'TeamSpeak3_Helper_Char']]], + ['isnull',['isNull',['../class_team_speak3___helper___char.html#ac9d4e8d53dc1b48df16a9e966ec5ffac',1,'TeamSpeak3_Helper_Char']]], + ['isoffline',['isOffline',['../class_team_speak3___node___server.html#a55f06b4b0c636dcc41a877edc5a3a7d7',1,'TeamSpeak3_Node_Server']]], + ['isonline',['isOnline',['../class_team_speak3___node___server.html#adc8a77671ffbf1c7c699da1f3d4d0d12',1,'TeamSpeak3_Node_Server']]], + ['isprintable',['isPrintable',['../class_team_speak3___helper___char.html#af3db051fe9effcc66181cfffbe6adb43',1,'TeamSpeak3_Helper_Char']]], + ['isrunning',['isRunning',['../class_team_speak3___helper___profiler___timer.html#abdffbfefcc30c448ddf20552a6c0503e',1,'TeamSpeak3_Helper_Profiler_Timer']]], + ['isspace',['isSpace',['../class_team_speak3___helper___char.html#a9eaa5eb7af273164e78a1ad9abba4925',1,'TeamSpeak3_Helper_Char']]], + ['isspacer',['isSpacer',['../class_team_speak3___node___channel.html#a403b689f8fa9fd61744186f8c94c8a19',1,'TeamSpeak3_Node_Channel']]], + ['isupper',['isUpper',['../class_team_speak3___helper___char.html#aab4f8858c8fd20453808c19d31e7f9e3',1,'TeamSpeak3_Helper_Char']]], + ['isutf8',['isUtf8',['../class_team_speak3___helper___string.html#a6d8411e44090161070e4c016ef4cb2ef',1,'TeamSpeak3_Helper_String']]], + ['isvalid',['isValid',['../class_team_speak3___helper___uri.html#a32584b89b4cfeaaa09948b5b1fc67916',1,'TeamSpeak3_Helper_Uri']]] +]; diff --git a/lib/docs/html/search/all_6b.html b/lib/docs/html/search/all_6b.html new file mode 100644 index 0000000..f4b97ca --- /dev/null +++ b/lib/docs/html/search/all_6b.html @@ -0,0 +1,26 @@ + + + + + + + + + +
+
Loading...
+
+ +
Searching...
+
No Matches
+ +
+ + diff --git a/lib/docs/html/search/all_6b.js b/lib/docs/html/search/all_6b.js new file mode 100644 index 0000000..bb22e7f --- /dev/null +++ b/lib/docs/html/search/all_6b.js @@ -0,0 +1,7 @@ +var searchData= +[ + ['key',['key',['../class_team_speak3___helper___string.html#ae3d33b1f4304a9e15f23797f792b2c8a',1,'TeamSpeak3_Helper_String\key()'],['../class_team_speak3___node___abstract.html#adb87ddbef3247f346c2623f4d91981a1',1,'TeamSpeak3_Node_Abstract\key()']]], + ['kick',['kick',['../class_team_speak3___node___client.html#ade2debd43e978373134575711c85dd17',1,'TeamSpeak3_Node_Client']]], + ['kick_5fchannel',['KICK_CHANNEL',['../class_team_speak3.html#ab6a4d55688e33c16004508fff14c81da',1,'TeamSpeak3']]], + ['kick_5fserver',['KICK_SERVER',['../class_team_speak3.html#ae9df1f0980b1d3e9638b3a8084cc5234',1,'TeamSpeak3']]] +]; diff --git a/lib/docs/html/search/all_6c.html b/lib/docs/html/search/all_6c.html new file mode 100644 index 0000000..131c919 --- /dev/null +++ b/lib/docs/html/search/all_6c.html @@ -0,0 +1,26 @@ + + + + + + + + + +
+
Loading...
+
+ +
Searching...
+
No Matches
+ +
+ + diff --git a/lib/docs/html/search/all_6c.js b/lib/docs/html/search/all_6c.js new file mode 100644 index 0000000..ff262b8 --- /dev/null +++ b/lib/docs/html/search/all_6c.js @@ -0,0 +1,17 @@ +var searchData= +[ + ['lib_5fversion',['LIB_VERSION',['../class_team_speak3.html#a7d31dad145adb2a70ac9ae92adeebb5b',1,'TeamSpeak3']]], + ['loadclass',['loadClass',['../class_team_speak3.html#a743962796b7626d9dbea7195036eecd3',1,'TeamSpeak3']]], + ['logadd',['logAdd',['../class_team_speak3___node___host.html#a107c77c012604e9c2964f72871da1a23',1,'TeamSpeak3_Node_Host\logAdd()'],['../class_team_speak3___node___server.html#a5a35cfb06bb9e8fbf8d8716a8de1c047',1,'TeamSpeak3_Node_Server\logAdd()']]], + ['logentry',['logEntry',['../class_team_speak3___helper___convert.html#a14c4073a5f8b34e3167f419fa4bcedb3',1,'TeamSpeak3_Helper_Convert']]], + ['login',['login',['../class_team_speak3___node___host.html#a277d0e0f1bc4e1a1353b339c99202cfa',1,'TeamSpeak3_Node_Host']]], + ['loglevel',['logLevel',['../class_team_speak3___helper___convert.html#ae9d3940edf6b0a5ab13d2b27c38a99b8',1,'TeamSpeak3_Helper_Convert']]], + ['loglevel_5fcritical',['LOGLEVEL_CRITICAL',['../class_team_speak3.html#a7febc9b704013d3a218171fbf5230998',1,'TeamSpeak3']]], + ['loglevel_5fdebug',['LOGLEVEL_DEBUG',['../class_team_speak3.html#aa157f891770ebc32c3387769419f8bcf',1,'TeamSpeak3']]], + ['loglevel_5fdevel',['LOGLEVEL_DEVEL',['../class_team_speak3.html#a0ac677fa9a62b01a3a2619f874278654',1,'TeamSpeak3']]], + ['loglevel_5ferror',['LOGLEVEL_ERROR',['../class_team_speak3.html#a978acb82eda7f57b72a15c231ed7de26',1,'TeamSpeak3']]], + ['loglevel_5finfo',['LOGLEVEL_INFO',['../class_team_speak3.html#a4b19b7a03ed2787450ea21229854ced8',1,'TeamSpeak3']]], + ['loglevel_5fwarning',['LOGLEVEL_WARNING',['../class_team_speak3.html#a9ac856cab800709d07bc6b53b84d404f',1,'TeamSpeak3']]], + ['logout',['logout',['../class_team_speak3___node___host.html#a4384f0b7ab08fd30f446a936a882fc71',1,'TeamSpeak3_Node_Host']]], + ['logview',['logView',['../class_team_speak3___node___host.html#aee901f59e9bb4d87530d6b8a152b89be',1,'TeamSpeak3_Node_Host\logView()'],['../class_team_speak3___node___server.html#a5a61fde00711fbde340c0917c738d19d',1,'TeamSpeak3_Node_Server\logView()']]] +]; diff --git a/lib/docs/html/search/all_6d.html b/lib/docs/html/search/all_6d.html new file mode 100644 index 0000000..650f040 --- /dev/null +++ b/lib/docs/html/search/all_6d.html @@ -0,0 +1,26 @@ + + + + + + + + + +
+
Loading...
+
+ +
Searching...
+
No Matches
+ +
+ + diff --git a/lib/docs/html/search/all_6d.js b/lib/docs/html/search/all_6d.js new file mode 100644 index 0000000..9da0b84 --- /dev/null +++ b/lib/docs/html/search/all_6d.js @@ -0,0 +1,12 @@ +var searchData= +[ + ['memberof',['memberOf',['../class_team_speak3___node___client.html#a9d9a31c0821e3dc13da505000b0adcbf',1,'TeamSpeak3_Node_Client']]], + ['message',['message',['../class_team_speak3___node___channel.html#abb90a093d39070b66f903c29aee75eb7',1,'TeamSpeak3_Node_Channel\message()'],['../class_team_speak3___node___channelgroup.html#ac37f09fe4b9291a0b2062e910d617b83',1,'TeamSpeak3_Node_Channelgroup\message()'],['../class_team_speak3___node___client.html#a0e64a76b7a553a83145cd9b42e6d3041',1,'TeamSpeak3_Node_Client\message()'],['../class_team_speak3___node___host.html#a45450f27e3765893b912407ce640280f',1,'TeamSpeak3_Node_Host\message()'],['../class_team_speak3___node___server.html#a0bbeea2377896171ec7d971de382528f',1,'TeamSpeak3_Node_Server\message()'],['../class_team_speak3___node___servergroup.html#a93b0285425354402633ce17f84722591',1,'TeamSpeak3_Node_Servergroup\message()']]], + ['messagecreate',['messageCreate',['../class_team_speak3___node___server.html#af229175f84fc35b20a7e74542b4f48c0',1,'TeamSpeak3_Node_Server']]], + ['messagedelete',['messageDelete',['../class_team_speak3___node___server.html#af5f666e5496fed200ffe2ab4c7da2e70',1,'TeamSpeak3_Node_Server']]], + ['messagelist',['messageList',['../class_team_speak3___node___server.html#a094080732e7f39c9ac07fbefdcbf5d6e',1,'TeamSpeak3_Node_Server']]], + ['messageread',['messageRead',['../class_team_speak3___node___server.html#aba2804d7bb9a1b9994af24c35fcc9484',1,'TeamSpeak3_Node_Server']]], + ['modify',['modify',['../class_team_speak3___node___channel.html#a9ed93a66fb5e503bcd556d54f53b2e7d',1,'TeamSpeak3_Node_Channel\modify()'],['../class_team_speak3___node___client.html#a9bec04a0c6f0174811830bd5048ef78e',1,'TeamSpeak3_Node_Client\modify()'],['../class_team_speak3___node___host.html#a1f26a3c66014960c1782bbaffc904cde',1,'TeamSpeak3_Node_Host\modify()'],['../class_team_speak3___node___server.html#a4829c324cac2866b7748b9ba48ee17e1',1,'TeamSpeak3_Node_Server\modify()']]], + ['modifydb',['modifyDb',['../class_team_speak3___node___client.html#a8b4bf4bb745a772274d71b40f90b8dc7',1,'TeamSpeak3_Node_Client']]], + ['move',['move',['../class_team_speak3___node___channel.html#ac6c3d3563ea70b58e5d06504cea1dc40',1,'TeamSpeak3_Node_Channel\move()'],['../class_team_speak3___node___client.html#aac47e6e99aa14a5e33696b67854f4d36',1,'TeamSpeak3_Node_Client\move()']]] +]; diff --git a/lib/docs/html/search/all_6e.html b/lib/docs/html/search/all_6e.html new file mode 100644 index 0000000..114330b --- /dev/null +++ b/lib/docs/html/search/all_6e.html @@ -0,0 +1,26 @@ + + + + + + + + + +
+
Loading...
+
+ +
Searching...
+
No Matches
+ +
+ + diff --git a/lib/docs/html/search/all_6e.js b/lib/docs/html/search/all_6e.js new file mode 100644 index 0000000..032520b --- /dev/null +++ b/lib/docs/html/search/all_6e.js @@ -0,0 +1,6 @@ +var searchData= +[ + ['next',['next',['../class_team_speak3___helper___string.html#a41ed82694722a57dab947a95be55da8a',1,'TeamSpeak3_Helper_String\next()'],['../class_team_speak3___node___abstract.html#a3273e5078ee49a4bd55620327ed09a5e',1,'TeamSpeak3_Node_Abstract\next()']]], + ['notifyregister',['notifyRegister',['../class_team_speak3___node___server.html#ab6042c937b2e0b7eccd7dca9c98fe8b6',1,'TeamSpeak3_Node_Server']]], + ['notifyunregister',['notifyUnregister',['../class_team_speak3___node___server.html#a46509385b685f0154e04c2774d74652a',1,'TeamSpeak3_Node_Server']]] +]; diff --git a/lib/docs/html/search/all_6f.html b/lib/docs/html/search/all_6f.html new file mode 100644 index 0000000..958ab68 --- /dev/null +++ b/lib/docs/html/search/all_6f.html @@ -0,0 +1,26 @@ + + + + + + + + + +
+
Loading...
+
+ +
Searching...
+
No Matches
+ +
+ + diff --git a/lib/docs/html/search/all_6f.js b/lib/docs/html/search/all_6f.js new file mode 100644 index 0000000..4eeb102 --- /dev/null +++ b/lib/docs/html/search/all_6f.js @@ -0,0 +1,33 @@ +var searchData= +[ + ['offsetexists',['offsetExists',['../class_team_speak3___adapter___server_query___event.html#a57ae033a9a2926762f557fb8705d8a15',1,'TeamSpeak3_Adapter_ServerQuery_Event\offsetExists()'],['../class_team_speak3___helper___string.html#afb284716b9af4a0f062161a5d97a78f9',1,'TeamSpeak3_Helper_String\offsetExists()'],['../class_team_speak3___node___abstract.html#ad0d64388e2a374203fa16760b923b087',1,'TeamSpeak3_Node_Abstract\offsetExists()']]], + ['offsetget',['offsetGet',['../class_team_speak3___adapter___server_query___event.html#a6c3c6a21f1f6dd8e594669868c310c81',1,'TeamSpeak3_Adapter_ServerQuery_Event\offsetGet()'],['../class_team_speak3___helper___string.html#aca8a008c7bc517c801cb20584f413d64',1,'TeamSpeak3_Helper_String\offsetGet()'],['../class_team_speak3___node___abstract.html#a716e7512816cf490e5a16ec307f7d889',1,'TeamSpeak3_Node_Abstract\offsetGet()']]], + ['offsetset',['offsetSet',['../class_team_speak3___adapter___server_query___event.html#a9eb8d547545fa1e17f70c8ee5ba33a9c',1,'TeamSpeak3_Adapter_ServerQuery_Event\offsetSet()'],['../class_team_speak3___helper___string.html#ac27cbee392b09ccbbc421a1487740418',1,'TeamSpeak3_Helper_String\offsetSet()'],['../class_team_speak3___node___abstract.html#a5e9be0418e0cc969d47f4b7475adb21d',1,'TeamSpeak3_Node_Abstract\offsetSet()']]], + ['offsetunset',['offsetUnset',['../class_team_speak3___adapter___server_query___event.html#a41ef812dbfe2d1e1b517bd123fc960f6',1,'TeamSpeak3_Adapter_ServerQuery_Event\offsetUnset()'],['../class_team_speak3___helper___string.html#afd4c1631d11a6b4b8471b22a682c3b29',1,'TeamSpeak3_Helper_String\offsetUnset()'],['../class_team_speak3___node___abstract.html#a732408c9a027db531af8ecce82401c07',1,'TeamSpeak3_Node_Abstract\offsetUnset()']]], + ['oncommandfinished',['onCommandFinished',['../interface_team_speak3___helper___signal___interface.html#a848c46c0b32516d82a89826246932bbb',1,'TeamSpeak3_Helper_Signal_Interface']]], + ['oncommandstarted',['onCommandStarted',['../interface_team_speak3___helper___signal___interface.html#a4e4f17bf4f8c4e59e083f30bd6fcd12a',1,'TeamSpeak3_Helper_Signal_Interface']]], + ['onconnect',['onConnect',['../interface_team_speak3___helper___signal___interface.html#a7e066d5cc94154739471a627b7d6f63f',1,'TeamSpeak3_Helper_Signal_Interface']]], + ['ondebugdataread',['onDebugDataRead',['../interface_team_speak3___helper___signal___interface.html#af6c4a98cf159e1ae41d08d2f94ea901c',1,'TeamSpeak3_Helper_Signal_Interface']]], + ['ondebugdatasend',['onDebugDataSend',['../interface_team_speak3___helper___signal___interface.html#a3ce1e6fb65555f153b8313938fc6f14a',1,'TeamSpeak3_Helper_Signal_Interface']]], + ['ondisconnect',['onDisconnect',['../interface_team_speak3___helper___signal___interface.html#a81a002eceee16a9558a68c849f22e581',1,'TeamSpeak3_Helper_Signal_Interface']]], + ['onerror',['onError',['../interface_team_speak3___helper___signal___interface.html#a7925e6a3080092bb6da831dd616769a3',1,'TeamSpeak3_Helper_Signal_Interface']]], + ['onevent',['onEvent',['../interface_team_speak3___helper___signal___interface.html#a3dbd81b8eb9416d5b4305877eb48153f',1,'TeamSpeak3_Helper_Signal_Interface']]], + ['onexception',['onException',['../interface_team_speak3___helper___signal___interface.html#ab65b20dc52d7165455b0ebb5bdc851ed',1,'TeamSpeak3_Helper_Signal_Interface']]], + ['onftdownloadfinished',['onFtDownloadFinished',['../interface_team_speak3___helper___signal___interface.html#a822d76c4cc0a50360066b54bfaf15df2',1,'TeamSpeak3_Helper_Signal_Interface']]], + ['onftdownloadprogress',['onFtDownloadProgress',['../interface_team_speak3___helper___signal___interface.html#a5a21094dc110e60bd165703df58f6a6f',1,'TeamSpeak3_Helper_Signal_Interface']]], + ['onftdownloadstarted',['onFtDownloadStarted',['../interface_team_speak3___helper___signal___interface.html#ad12f5a3d0810a3647295141095fe1bcb',1,'TeamSpeak3_Helper_Signal_Interface']]], + ['onfthandshake',['onFtHandshake',['../interface_team_speak3___helper___signal___interface.html#aa1c0d664a04ef2ef284933473fbaeb4e',1,'TeamSpeak3_Helper_Signal_Interface']]], + ['onftuploadfinished',['onFtUploadFinished',['../interface_team_speak3___helper___signal___interface.html#a8bf3a9eeea9253d41d4b0ae8ee3816a2',1,'TeamSpeak3_Helper_Signal_Interface']]], + ['onftuploadprogress',['onFtUploadProgress',['../interface_team_speak3___helper___signal___interface.html#a2c7b2aa9fbbac68849b1cb6727751941',1,'TeamSpeak3_Helper_Signal_Interface']]], + ['onftuploadstarted',['onFtUploadStarted',['../interface_team_speak3___helper___signal___interface.html#a264e6acfa718799d1f0702d9d378d4bf',1,'TeamSpeak3_Helper_Signal_Interface']]], + ['onlogin',['onLogin',['../interface_team_speak3___helper___signal___interface.html#a437bf9fda2ce442d55aba119d8a2a472',1,'TeamSpeak3_Helper_Signal_Interface']]], + ['onlogout',['onLogout',['../interface_team_speak3___helper___signal___interface.html#a323953d09e67d3bba06ce54e0a46bd90',1,'TeamSpeak3_Helper_Signal_Interface']]], + ['onservercreated',['onServercreated',['../interface_team_speak3___helper___signal___interface.html#a2f3816f32fcdcc1cfd2dc202a018a5d4',1,'TeamSpeak3_Helper_Signal_Interface']]], + ['onserverdeleted',['onServerdeleted',['../interface_team_speak3___helper___signal___interface.html#a8d9f2e3a80bb4312338db8f282cf1fad',1,'TeamSpeak3_Helper_Signal_Interface']]], + ['onserverselected',['onServerselected',['../interface_team_speak3___helper___signal___interface.html#a15d6588ecad8073457490522fa6e42b1',1,'TeamSpeak3_Helper_Signal_Interface']]], + ['onservershutdown',['onServershutdown',['../interface_team_speak3___helper___signal___interface.html#aad9e6d52b8747271c2ce2d4770d7ea6d',1,'TeamSpeak3_Helper_Signal_Interface']]], + ['onserverstarted',['onServerstarted',['../interface_team_speak3___helper___signal___interface.html#a129f0620c8ca72cc49744412ca400af8',1,'TeamSpeak3_Helper_Signal_Interface']]], + ['onserverstopped',['onServerstopped',['../interface_team_speak3___helper___signal___interface.html#ad57f648650d5f17dc8dc8acfb196b425',1,'TeamSpeak3_Helper_Signal_Interface']]], + ['ontokencreated',['onTokencreated',['../interface_team_speak3___helper___signal___interface.html#a4bcd3c19b7adbd37800dc941794a1847',1,'TeamSpeak3_Helper_Signal_Interface']]], + ['onwaittimeout',['onWaitTimeout',['../interface_team_speak3___helper___signal___interface.html#a539e6ca40f293c37a73ac296f4a97141',1,'TeamSpeak3_Helper_Signal_Interface']]] +]; diff --git a/lib/docs/html/search/all_70.html b/lib/docs/html/search/all_70.html new file mode 100644 index 0000000..a28cb54 --- /dev/null +++ b/lib/docs/html/search/all_70.html @@ -0,0 +1,26 @@ + + + + + + + + + +
+
Loading...
+
+ +
Searching...
+
No Matches
+ +
+ + diff --git a/lib/docs/html/search/all_70.js b/lib/docs/html/search/all_70.js new file mode 100644 index 0000000..46c85fb --- /dev/null +++ b/lib/docs/html/search/all_70.js @@ -0,0 +1,70 @@ +var searchData= +[ + ['parseuri',['parseUri',['../class_team_speak3___helper___uri.html#a7f6c35d4a2161270b8edcff45b48fda1',1,'TeamSpeak3_Helper_Uri']]], + ['passthru',['passthru',['../class_team_speak3___adapter___file_transfer.html#a69cc29e5d15d47c56f55bcd14503905f',1,'TeamSpeak3_Adapter_FileTransfer']]], + ['password',['password',['../class_team_speak3___helper___convert.html#aa77db7921a9a7141a363c4a42c3dda26',1,'TeamSpeak3_Helper_Convert']]], + ['perm_5fcat_5fchannel',['PERM_CAT_CHANNEL',['../class_team_speak3.html#a0f7b54be70a8c790115ca92e98bcbee5',1,'TeamSpeak3']]], + ['perm_5fcat_5fchannel_5faccess',['PERM_CAT_CHANNEL_ACCESS',['../class_team_speak3.html#ac3b12e51946589138a84fdf2c653c9f6',1,'TeamSpeak3']]], + ['perm_5fcat_5fchannel_5fcreate',['PERM_CAT_CHANNEL_CREATE',['../class_team_speak3.html#aff66f6e403b88244a46c5cddefd63853',1,'TeamSpeak3']]], + ['perm_5fcat_5fchannel_5fdelete',['PERM_CAT_CHANNEL_DELETE',['../class_team_speak3.html#a2615a76afeecf68eae3ba5f2e908373c',1,'TeamSpeak3']]], + ['perm_5fcat_5fchannel_5finformation',['PERM_CAT_CHANNEL_INFORMATION',['../class_team_speak3.html#ae70bc3d695fcfe6db61c86fb58c076bd',1,'TeamSpeak3']]], + ['perm_5fcat_5fchannel_5fmodify',['PERM_CAT_CHANNEL_MODIFY',['../class_team_speak3.html#a511bfe0b317d488a475c044baf3e490a',1,'TeamSpeak3']]], + ['perm_5fcat_5fclient',['PERM_CAT_CLIENT',['../class_team_speak3.html#a47cc2fc667c048d716b054b21ccba9c0',1,'TeamSpeak3']]], + ['perm_5fcat_5fclient_5fadm_5factions',['PERM_CAT_CLIENT_ADM_ACTIONS',['../class_team_speak3.html#aab7ee7ef3548dce162310f5b58e22bce',1,'TeamSpeak3']]], + ['perm_5fcat_5fclient_5fbasics',['PERM_CAT_CLIENT_BASICS',['../class_team_speak3.html#ab5e4b438da7c292ea5985eed88396f4d',1,'TeamSpeak3']]], + ['perm_5fcat_5fclient_5finformation',['PERM_CAT_CLIENT_INFORMATION',['../class_team_speak3.html#a745423668d892edf35aff2dc1d802649',1,'TeamSpeak3']]], + ['perm_5fcat_5fclient_5fmodify',['PERM_CAT_CLIENT_MODIFY',['../class_team_speak3.html#a36c30eb13e8fe039e4c06a45e3e5f35a',1,'TeamSpeak3']]], + ['perm_5fcat_5ffiletransfer',['PERM_CAT_FILETRANSFER',['../class_team_speak3.html#a1fa36fce856fa4d8ee9af0d2147d398a',1,'TeamSpeak3']]], + ['perm_5fcat_5fglobal',['PERM_CAT_GLOBAL',['../class_team_speak3.html#aa5aba89a9024b4e7c7845b115f8e9c40',1,'TeamSpeak3']]], + ['perm_5fcat_5fglobal_5fadm_5factions',['PERM_CAT_GLOBAL_ADM_ACTIONS',['../class_team_speak3.html#a4fa166aef3d0ba5f2204d8b9a257a23b',1,'TeamSpeak3']]], + ['perm_5fcat_5fglobal_5finformation',['PERM_CAT_GLOBAL_INFORMATION',['../class_team_speak3.html#ac1329c48f57dcee568be69b33c778c99',1,'TeamSpeak3']]], + ['perm_5fcat_5fglobal_5fserver_5fmgmt',['PERM_CAT_GLOBAL_SERVER_MGMT',['../class_team_speak3.html#a0f7b0579cd636c1ea7fe5bcdd92dbc09',1,'TeamSpeak3']]], + ['perm_5fcat_5fglobal_5fsettings',['PERM_CAT_GLOBAL_SETTINGS',['../class_team_speak3.html#a5d9945d86f2ab5f1a4934e2604652503',1,'TeamSpeak3']]], + ['perm_5fcat_5fgroup',['PERM_CAT_GROUP',['../class_team_speak3.html#a8cd0b0d4c26e955f67be448039c4a4e2',1,'TeamSpeak3']]], + ['perm_5fcat_5fgroup_5fcreate',['PERM_CAT_GROUP_CREATE',['../class_team_speak3.html#ab413bc7287c76152eb9c51a74385b8a5',1,'TeamSpeak3']]], + ['perm_5fcat_5fgroup_5fdelete',['PERM_CAT_GROUP_DELETE',['../class_team_speak3.html#a2d89a707e37e81732d9e9ba827cd8dd5',1,'TeamSpeak3']]], + ['perm_5fcat_5fgroup_5finformation',['PERM_CAT_GROUP_INFORMATION',['../class_team_speak3.html#aec5b4d0b149798108c05580399923757',1,'TeamSpeak3']]], + ['perm_5fcat_5fgroup_5fmodify',['PERM_CAT_GROUP_MODIFY',['../class_team_speak3.html#aae3f41d88cbf9fbadb9f38dd67027168',1,'TeamSpeak3']]], + ['perm_5fcat_5fneeded_5fmodify_5fpower',['PERM_CAT_NEEDED_MODIFY_POWER',['../class_team_speak3.html#aa534b78937197a0a0739f1fa3c98a8d1',1,'TeamSpeak3']]], + ['perm_5fcat_5fserver',['PERM_CAT_SERVER',['../class_team_speak3.html#aa639ddfd900cc55961633d2e3ca03168',1,'TeamSpeak3']]], + ['perm_5fcat_5fserver_5fadm_5factions',['PERM_CAT_SERVER_ADM_ACTIONS',['../class_team_speak3.html#a2237bc5075c3c354764e42f40a045179',1,'TeamSpeak3']]], + ['perm_5fcat_5fserver_5finformation',['PERM_CAT_SERVER_INFORMATION',['../class_team_speak3.html#adab57311071c4b74b2f221dd747d9f54',1,'TeamSpeak3']]], + ['perm_5fcat_5fserver_5fsettings',['PERM_CAT_SERVER_SETTINGS',['../class_team_speak3.html#a6dd546e23743326565a82accf7d793f6',1,'TeamSpeak3']]], + ['perm_5ftype_5fchannel',['PERM_TYPE_CHANNEL',['../class_team_speak3.html#a57fa7853513872a96f0adf9d3329c59b',1,'TeamSpeak3']]], + ['perm_5ftype_5fchannelclient',['PERM_TYPE_CHANNELCLIENT',['../class_team_speak3.html#a5324e065c2ed9c98c0931654d388610f',1,'TeamSpeak3']]], + ['perm_5ftype_5fchannelgroup',['PERM_TYPE_CHANNELGROUP',['../class_team_speak3.html#a2a930337bd67c2c2893b3afad902b440',1,'TeamSpeak3']]], + ['perm_5ftype_5fclient',['PERM_TYPE_CLIENT',['../class_team_speak3.html#a9ea90147fb0486786931015e4d64abba',1,'TeamSpeak3']]], + ['perm_5ftype_5fservergroup',['PERM_TYPE_SERVERGROUP',['../class_team_speak3.html#a0772e3a79ac03d3acb657e07dad63a0e',1,'TeamSpeak3']]], + ['permassign',['permAssign',['../class_team_speak3___node___channel.html#a718a79bb14289ba6a52cf13264f1e3d9',1,'TeamSpeak3_Node_Channel\permAssign()'],['../class_team_speak3___node___channelgroup.html#a272eceba9a34038a77e9a3ba64459e9c',1,'TeamSpeak3_Node_Channelgroup\permAssign()'],['../class_team_speak3___node___client.html#af26bd82c2d6b4e42304d828a4a8ba4f8',1,'TeamSpeak3_Node_Client\permAssign()'],['../class_team_speak3___node___servergroup.html#a1e091222c4fdfa646cf820002239189a',1,'TeamSpeak3_Node_Servergroup\permAssign()']]], + ['permassignbyname',['permAssignByName',['../class_team_speak3___node___channel.html#abb025af29045d589a709fd54908a265e',1,'TeamSpeak3_Node_Channel\permAssignByName()'],['../class_team_speak3___node___channelgroup.html#a9c4b8d414bda3f3abb8b6921a7f70a07',1,'TeamSpeak3_Node_Channelgroup\permAssignByName()'],['../class_team_speak3___node___client.html#a3debc27139d7a9af950f0db6f47c47c8',1,'TeamSpeak3_Node_Client\permAssignByName()'],['../class_team_speak3___node___servergroup.html#ac1734ec88fe5dfd5add66a85d2cd030c',1,'TeamSpeak3_Node_Servergroup\permAssignByName()']]], + ['permissioncategory',['permissionCategory',['../class_team_speak3___helper___convert.html#ae7ade0698dc565074b00e5b82ed5790f',1,'TeamSpeak3_Helper_Convert']]], + ['permissioncats',['permissionCats',['../class_team_speak3___node___host.html#a9a998c77512d885b738aa02871f5f36d',1,'TeamSpeak3_Node_Host']]], + ['permissionends',['permissionEnds',['../class_team_speak3___node___host.html#a02d37eda05e217d66ab8aaed01e32203',1,'TeamSpeak3_Node_Host']]], + ['permissionfind',['permissionFind',['../class_team_speak3___node___host.html#a47648cae36cfe3c602bb02ef3eb840e2',1,'TeamSpeak3_Node_Host']]], + ['permissiongetcategorybyid',['permissionGetCategoryById',['../class_team_speak3___node___host.html#a211d5a64cffe5619b24380332e61075a',1,'TeamSpeak3_Node_Host']]], + ['permissiongetgrantbyid',['permissionGetGrantById',['../class_team_speak3___node___host.html#a54992d4abd6db0b12dc8aa4aac76b14d',1,'TeamSpeak3_Node_Host']]], + ['permissiongetidbyname',['permissionGetIdByName',['../class_team_speak3___node___host.html#a3303cb17f6a97ff39b6ecfd0cf88f3c1',1,'TeamSpeak3_Node_Host']]], + ['permissiongetnamebyid',['permissionGetNameById',['../class_team_speak3___node___host.html#a6c2afc0481179435222ed45aebd088fa',1,'TeamSpeak3_Node_Host']]], + ['permissionlist',['permissionList',['../class_team_speak3___node___host.html#a8495ade30f51bda37e41b719ed183092',1,'TeamSpeak3_Node_Host']]], + ['permissiontree',['permissionTree',['../class_team_speak3___node___host.html#a2fc2c5feb088d545c4d4140a1bed1993',1,'TeamSpeak3_Node_Host']]], + ['permissiontype',['permissionType',['../class_team_speak3___helper___convert.html#a4460cbe02a408e1bafeafe7aae418eec',1,'TeamSpeak3_Helper_Convert']]], + ['permlist',['permList',['../class_team_speak3___node___channel.html#aeb434341ab27daa223feaa6947d1eb84',1,'TeamSpeak3_Node_Channel\permList()'],['../class_team_speak3___node___channelgroup.html#af7b11f19a1f547f247e32d4f70c42119',1,'TeamSpeak3_Node_Channelgroup\permList()'],['../class_team_speak3___node___client.html#a501fc3581568d70b327416f47b12520a',1,'TeamSpeak3_Node_Client\permList()'],['../class_team_speak3___node___servergroup.html#a2750690a96f7d3ce4c8b2f200a2187b6',1,'TeamSpeak3_Node_Servergroup\permList()']]], + ['permoverview',['permOverview',['../class_team_speak3___node___client.html#ab7f8adc763cf45dd64b51bae0e17d884',1,'TeamSpeak3_Node_Client']]], + ['permremove',['permRemove',['../class_team_speak3___node___channel.html#ad5b12fe78a6882e82e09cfcfe4c0a5a4',1,'TeamSpeak3_Node_Channel\permRemove()'],['../class_team_speak3___node___channelgroup.html#a534837db1e4d6add77dedcb5a3ddf1eb',1,'TeamSpeak3_Node_Channelgroup\permRemove()'],['../class_team_speak3___node___client.html#ae4dbe8372c97ad18ffb930022ba7e01d',1,'TeamSpeak3_Node_Client\permRemove()'],['../class_team_speak3___node___servergroup.html#aa310bbb6ff4e1a90e76689ce99a009e2',1,'TeamSpeak3_Node_Servergroup\permRemove()']]], + ['permremoveany',['permRemoveAny',['../class_team_speak3___node___server.html#a4064b80b0f7796367e61438ae9a0cd5a',1,'TeamSpeak3_Node_Server']]], + ['permremovebyname',['permRemoveByName',['../class_team_speak3___node___channel.html#a23153430a3dcb5ac300f488a5ca96ac1',1,'TeamSpeak3_Node_Channel\permRemoveByName()'],['../class_team_speak3___node___channelgroup.html#a242cba4ec6265ae655433b3a3d13f24b',1,'TeamSpeak3_Node_Channelgroup\permRemoveByName()'],['../class_team_speak3___node___client.html#a94a311c81d0e6e5f94e9c0470cd8d054',1,'TeamSpeak3_Node_Client\permRemoveByName()'],['../class_team_speak3___node___servergroup.html#af0231024657d4b1be8b646062d1ffe4b',1,'TeamSpeak3_Node_Servergroup\permRemoveByName()']]], + ['permreset',['permReset',['../class_team_speak3___node___server.html#a6ee64afd6c312ff8644725823ab0b078',1,'TeamSpeak3_Node_Server']]], + ['plugincmd_5fchannel',['PLUGINCMD_CHANNEL',['../class_team_speak3.html#a1017b9d565da82a1a360ecd1074ef882',1,'TeamSpeak3']]], + ['plugincmd_5fchannel_5fsubscribed',['PLUGINCMD_CHANNEL_SUBSCRIBED',['../class_team_speak3.html#ac5519852d33570fbd89e171937f553c2',1,'TeamSpeak3']]], + ['plugincmd_5fclient',['PLUGINCMD_CLIENT',['../class_team_speak3.html#a2bd847d0f20f1d827238304dedaa6b77',1,'TeamSpeak3']]], + ['plugincmd_5fserver',['PLUGINCMD_SERVER',['../class_team_speak3.html#a908573c6bc67e85396a4af21972bfeae',1,'TeamSpeak3']]], + ['poke',['poke',['../class_team_speak3___node___client.html#a0bffc69732548b99511434e22caf17ec',1,'TeamSpeak3_Node_Client']]], + ['prepare',['prepare',['../class_team_speak3___adapter___server_query.html#a922a436f8224dffa4272244efb026383',1,'TeamSpeak3_Adapter_ServerQuery\prepare()'],['../class_team_speak3___node___abstract.html#a6589a4fedd410e9cdb55fe20abc410c0',1,'TeamSpeak3_Node_Abstract\prepare()']]], + ['preparecustommessage',['prepareCustomMessage',['../class_team_speak3___exception.html#a3bfcdf7b85a393b7a8b05b048ae3279c',1,'TeamSpeak3_Exception']]], + ['prepend',['prepend',['../class_team_speak3___helper___string.html#a73b077cc95e1365974644eebc1e48cf0',1,'TeamSpeak3_Helper_String']]], + ['privilegekeycreate',['privilegeKeyCreate',['../class_team_speak3___node___channelgroup.html#a70accf5a9d96f0dbe91ee28541bd5eba',1,'TeamSpeak3_Node_Channelgroup\privilegeKeyCreate()'],['../class_team_speak3___node___server.html#a65f5b13eca06755b6ef96e6bbe80947b',1,'TeamSpeak3_Node_Server\privilegeKeyCreate()'],['../class_team_speak3___node___servergroup.html#ae2995f92fe360459d158373d28436f85',1,'TeamSpeak3_Node_Servergroup\privilegeKeyCreate()']]], + ['privilegekeydelete',['privilegeKeyDelete',['../class_team_speak3___node___server.html#a06d451d9f1f484da9e902eadb52739e4',1,'TeamSpeak3_Node_Server']]], + ['privilegekeylist',['privilegeKeyList',['../class_team_speak3___node___server.html#ae79c8994a9fa524016a141aad5b14e31',1,'TeamSpeak3_Node_Server']]], + ['privilegekeyuse',['privilegeKeyUse',['../class_team_speak3___node___server.html#a6cdf7f6012d20caf6b2be3b42ffb5c21',1,'TeamSpeak3_Node_Server']]], + ['profiler_2ephp',['Profiler.php',['../_profiler_8php.html',1,'']]] +]; diff --git a/lib/docs/html/search/all_72.html b/lib/docs/html/search/all_72.html new file mode 100644 index 0000000..d03b8a5 --- /dev/null +++ b/lib/docs/html/search/all_72.html @@ -0,0 +1,26 @@ + + + + + + + + + +
+
Loading...
+
+ +
Searching...
+
No Matches
+ +
+ + diff --git a/lib/docs/html/search/all_72.js b/lib/docs/html/search/all_72.js new file mode 100644 index 0000000..b12cd49 --- /dev/null +++ b/lib/docs/html/search/all_72.js @@ -0,0 +1,29 @@ +var searchData= +[ + ['read',['read',['../class_team_speak3___transport___abstract.html#a611fde17c19d0fc02564acf80d322df0',1,'TeamSpeak3_Transport_Abstract\read()'],['../class_team_speak3___transport___t_c_p.html#ae6a9841ecb355b2596aa8c2da53a3e11',1,'TeamSpeak3_Transport_TCP\read()'],['../class_team_speak3___transport___u_d_p.html#af854c17875858a0a57cfa08a20786836',1,'TeamSpeak3_Transport_UDP\read()']]], + ['readline',['readLine',['../class_team_speak3___transport___t_c_p.html#aa5c19e01f8f6bfd2d3cfc9a2ea64a26e',1,'TeamSpeak3_Transport_TCP']]], + ['ready',['READY',['../class_team_speak3.html#ae31cefccb5993d1b5fa8fa9f52180bfe',1,'TeamSpeak3']]], + ['reason_5fchannel_5fedit',['REASON_CHANNEL_EDIT',['../class_team_speak3.html#a47403f14dad07252a387b8cc7e5d816f',1,'TeamSpeak3']]], + ['reason_5fchannel_5fkick',['REASON_CHANNEL_KICK',['../class_team_speak3.html#a3c394288b3b45df4a039127d1e119517',1,'TeamSpeak3']]], + ['reason_5fchannel_5fupdate',['REASON_CHANNEL_UPDATE',['../class_team_speak3.html#a7d82c5b03e862e2f53313363e1423535',1,'TeamSpeak3']]], + ['reason_5fdisconnect',['REASON_DISCONNECT',['../class_team_speak3.html#ae10cf1e6e6a365cf61eb7e38f6a2315b',1,'TeamSpeak3']]], + ['reason_5fdisconnect_5fshutdown',['REASON_DISCONNECT_SHUTDOWN',['../class_team_speak3.html#a9dcf492812b8b16ffbebcd05ffa1e6bf',1,'TeamSpeak3']]], + ['reason_5fmove',['REASON_MOVE',['../class_team_speak3.html#aad9bd5c1089efa20620cab286052b0f3',1,'TeamSpeak3']]], + ['reason_5fnone',['REASON_NONE',['../class_team_speak3.html#afb77656b36c45073e770f13bf0a90e5d',1,'TeamSpeak3']]], + ['reason_5fserver_5fban',['REASON_SERVER_BAN',['../class_team_speak3.html#ad9dc7ed023c1a9be4504ba894a63bee1',1,'TeamSpeak3']]], + ['reason_5fserver_5fkick',['REASON_SERVER_KICK',['../class_team_speak3.html#a931e59afb66273ee4255e43676812726',1,'TeamSpeak3']]], + ['reason_5fserver_5fstop',['REASON_SERVER_STOP',['../class_team_speak3.html#ac48ef3e11414170eecffcd252a637062',1,'TeamSpeak3']]], + ['reason_5fsubscription',['REASON_SUBSCRIPTION',['../class_team_speak3.html#a328b7a4eeed0ecd61865be986aa79f9c',1,'TeamSpeak3']]], + ['reason_5ftimeout',['REASON_TIMEOUT',['../class_team_speak3.html#aea8db94828ad856d0a207d228145e41a',1,'TeamSpeak3']]], + ['registercustommessage',['registerCustomMessage',['../class_team_speak3___exception.html#a0b2ddaae2a81d54b3f730f7661039c7a',1,'TeamSpeak3_Exception']]], + ['remservergroup',['remServerGroup',['../class_team_speak3___node___client.html#a5ec1034f4f801800ab5a86741c66bbd0',1,'TeamSpeak3_Node_Client']]], + ['rename',['rename',['../class_team_speak3___node___channelgroup.html#a11ced87a844806dd40f6c51efb1e3e15',1,'TeamSpeak3_Node_Channelgroup\rename()'],['../class_team_speak3___node___servergroup.html#a87a40f934f6c820ce708c66c48489f30',1,'TeamSpeak3_Node_Servergroup\rename()']]], + ['replace',['replace',['../class_team_speak3___helper___string.html#a630942cbba0367ad2e93fea368924b52',1,'TeamSpeak3_Helper_String']]], + ['reply_2ephp',['Reply.php',['../_reply_8php.html',1,'']]], + ['request',['request',['../class_team_speak3___adapter___server_query.html#af153378a3e5668d2aa9ef43eac7de36a',1,'TeamSpeak3_Adapter_ServerQuery\request()'],['../class_team_speak3___node___abstract.html#a35dcdb8a7b62d7990307bfb95ce3937c',1,'TeamSpeak3_Node_Abstract\request()'],['../class_team_speak3___node___server.html#ad690f9ace5a0cb9f3789158b77c8d1f6',1,'TeamSpeak3_Node_Server\request()']]], + ['resetnodeinfo',['resetNodeInfo',['../class_team_speak3___node___abstract.html#a266578bece0506453e1f1bfba1f08966',1,'TeamSpeak3_Node_Abstract']]], + ['resetnodelist',['resetNodeList',['../class_team_speak3___node___abstract.html#a9ead519e8396990ba30d79d6bed9d286',1,'TeamSpeak3_Node_Abstract']]], + ['resize',['resize',['../class_team_speak3___helper___string.html#a8162f80058e9efeb6458e960acc04af9',1,'TeamSpeak3_Helper_String']]], + ['resolve',['resolve',['../class_team_speak3___adapter___t_s_d_n_s.html#aa92c579a298da3aaa9e78bef922c484f',1,'TeamSpeak3_Adapter_TSDNS']]], + ['rewind',['rewind',['../class_team_speak3___helper___string.html#ad1b30c6035e3eaf0f3cc8a7b484fc05e',1,'TeamSpeak3_Helper_String\rewind()'],['../class_team_speak3___node___abstract.html#a9c416b77eeea1ecec6652936703d9ff7',1,'TeamSpeak3_Node_Abstract\rewind()']]] +]; diff --git a/lib/docs/html/search/all_73.html b/lib/docs/html/search/all_73.html new file mode 100644 index 0000000..a15b975 --- /dev/null +++ b/lib/docs/html/search/all_73.html @@ -0,0 +1,26 @@ + + + + + + + + + +
+
Loading...
+
+ +
Searching...
+
No Matches
+ +
+ + diff --git a/lib/docs/html/search/all_73.js b/lib/docs/html/search/all_73.js new file mode 100644 index 0000000..2bc387a --- /dev/null +++ b/lib/docs/html/search/all_73.js @@ -0,0 +1,102 @@ +var searchData= +[ + ['schid',['SCHID',['../class_team_speak3.html#a19d4d49947f93c087729848de6d71986',1,'TeamSpeak3']]], + ['seconds',['seconds',['../class_team_speak3___helper___convert.html#af4b40876e521ec4448f6718319ce47b4',1,'TeamSpeak3_Helper_Convert']]], + ['section',['section',['../class_team_speak3___helper___string.html#a7c683564011d15bc53fb14634adbc72c',1,'TeamSpeak3_Helper_String']]], + ['selfpermcheck',['selfPermCheck',['../class_team_speak3___node___host.html#ae93b20cc3d56984e87836bd0985f93d3',1,'TeamSpeak3_Node_Host']]], + ['selfpermoverview',['selfPermOverview',['../class_team_speak3___node___server.html#a766abde5e479d793ba266dd680b5ca7b',1,'TeamSpeak3_Node_Server']]], + ['selfupdate',['selfUpdate',['../class_team_speak3___node___server.html#a5c94f444f21e92a1a8045256dbe8eda6',1,'TeamSpeak3_Node_Server']]], + ['selfupdatelogin',['selfUpdateLogin',['../class_team_speak3___node___server.html#a3bf58118ecbc54cde9cd4a652d139352',1,'TeamSpeak3_Node_Server']]], + ['send',['send',['../class_team_speak3___transport___abstract.html#aa96e8e6fa360d0b9e1db0eaeae858520',1,'TeamSpeak3_Transport_Abstract\send()'],['../class_team_speak3___transport___t_c_p.html#a65ae7814e6733bd7967f0421baa88cec',1,'TeamSpeak3_Transport_TCP\send()'],['../class_team_speak3___transport___u_d_p.html#a3fd9e15b4b86ff749033c12610563f10',1,'TeamSpeak3_Transport_UDP\send()']]], + ['sendline',['sendLine',['../class_team_speak3___transport___t_c_p.html#a70b9a5c409d0c481ef980aa8b2723d1e',1,'TeamSpeak3_Transport_TCP']]], + ['sendplugincmd',['sendPluginCmd',['../class_team_speak3___node___channel.html#abb2adcb5338c4e1a9bb4ab1009c977d7',1,'TeamSpeak3_Node_Channel\sendPluginCmd()'],['../class_team_speak3___node___client.html#ac6bd2a4585bfe075d794a6fb5842fdba',1,'TeamSpeak3_Node_Client\sendPluginCmd()'],['../class_team_speak3___node___server.html#a7ad80214abca716151ed418dd0a65129',1,'TeamSpeak3_Node_Server\sendPluginCmd()']]], + ['separator_5fcell',['SEPARATOR_CELL',['../class_team_speak3.html#a68cea90e6bd99a1aaf9b19325d0f02bb',1,'TeamSpeak3']]], + ['separator_5fline',['SEPARATOR_LINE',['../class_team_speak3.html#a1a5f95e94ebee25f7a7de47186fd7acc',1,'TeamSpeak3']]], + ['separator_5flist',['SEPARATOR_LIST',['../class_team_speak3.html#a407829d390331e34c6f90d9df78ae6c5',1,'TeamSpeak3']]], + ['separator_5fpair',['SEPARATOR_PAIR',['../class_team_speak3.html#ac9b701c7439f38c391baba51f9b6d1da',1,'TeamSpeak3']]], + ['server_2ephp',['Server.php',['../_server_8php.html',1,'']]], + ['servercreate',['serverCreate',['../class_team_speak3___node___host.html#a1a3e7ae9444d37169d52376d5bde2b03',1,'TeamSpeak3_Node_Host']]], + ['serverdelete',['serverDelete',['../class_team_speak3___node___host.html#add283a1e8d0938064cd37168af0eacda',1,'TeamSpeak3_Node_Host']]], + ['serverdeselect',['serverDeselect',['../class_team_speak3___node___host.html#a7cdbb02364fbdcde55f6931ecfed32e6',1,'TeamSpeak3_Node_Host']]], + ['servergetbyid',['serverGetById',['../class_team_speak3___node___host.html#aebc3e06e7bffcc0dc0f725b1d60bbcc8',1,'TeamSpeak3_Node_Host']]], + ['servergetbyname',['serverGetByName',['../class_team_speak3___node___host.html#ad03325cb5a05509eb1a73ae947f3b899',1,'TeamSpeak3_Node_Host']]], + ['servergetbyport',['serverGetByPort',['../class_team_speak3___node___host.html#a0c41dd934b1d3cf696f0d9ad68b9b4f1',1,'TeamSpeak3_Node_Host']]], + ['servergetbytsdns',['serverGetByTSDNS',['../class_team_speak3___node___host.html#acc10ad7c83e424cb785656695f2ad5ff',1,'TeamSpeak3_Node_Host']]], + ['servergetbyuid',['serverGetByUid',['../class_team_speak3___node___host.html#a3684344def5e16f20bd246cca546d54f',1,'TeamSpeak3_Node_Host']]], + ['servergetportbyid',['serverGetPortById',['../class_team_speak3___node___host.html#a9afa569106eacc750249e699dc138937',1,'TeamSpeak3_Node_Host']]], + ['servergetselected',['serverGetSelected',['../class_team_speak3___node___host.html#a1cd8d3f3f4457d827bd8aa7af6b6d457',1,'TeamSpeak3_Node_Host']]], + ['servergroup_2ephp',['Servergroup.php',['../_servergroup_8php.html',1,'']]], + ['servergroupclientadd',['serverGroupClientAdd',['../class_team_speak3___node___server.html#a8d2a092fb314a86b304ad3eb7d0d295b',1,'TeamSpeak3_Node_Server']]], + ['servergroupclientdel',['serverGroupClientDel',['../class_team_speak3___node___server.html#acbd1a4c797a041242eeb5f0ead1e7667',1,'TeamSpeak3_Node_Server']]], + ['servergroupclientlist',['serverGroupClientList',['../class_team_speak3___node___server.html#a69f43173d45cc599b05a4e6f9bef5baa',1,'TeamSpeak3_Node_Server']]], + ['servergroupcopy',['serverGroupCopy',['../class_team_speak3___node___server.html#aadd60ec1808c607b6ad6a62d95f8bacf',1,'TeamSpeak3_Node_Server']]], + ['servergroupcreate',['serverGroupCreate',['../class_team_speak3___node___server.html#a086d6141683f7aa0a6addbe13ae6da58',1,'TeamSpeak3_Node_Server']]], + ['servergroupdelete',['serverGroupDelete',['../class_team_speak3___node___server.html#a347baec8fce678ab8a8f464f0398ebed',1,'TeamSpeak3_Node_Server']]], + ['servergroupgetbyid',['serverGroupGetById',['../class_team_speak3___node___server.html#a8c8a3d44efa6582d80da3e647d934429',1,'TeamSpeak3_Node_Server']]], + ['servergroupgetbyname',['serverGroupGetByName',['../class_team_speak3___node___server.html#af44dad10a4123fa928deda53a1452df2',1,'TeamSpeak3_Node_Server']]], + ['servergroupgetprofiles',['serverGroupGetProfiles',['../class_team_speak3___node___server.html#a78d5842c3b8e9248f8a46df03d041d77',1,'TeamSpeak3_Node_Server']]], + ['servergroupidentify',['serverGroupIdentify',['../class_team_speak3___node___server.html#aee3bf51303b69cbf9d50202a4864a38b',1,'TeamSpeak3_Node_Server']]], + ['servergrouplist',['serverGroupList',['../class_team_speak3___node___server.html#a0d3b40b9337ff37e5b2164d60ddd4e28',1,'TeamSpeak3_Node_Server']]], + ['servergrouplistreset',['serverGroupListReset',['../class_team_speak3___node___server.html#aec6950365d137da98fb2acd94102f231',1,'TeamSpeak3_Node_Server']]], + ['servergrouppermassign',['serverGroupPermAssign',['../class_team_speak3___node___server.html#a1625df1060f7b19b5e607174df29406b',1,'TeamSpeak3_Node_Server']]], + ['servergrouppermautoassign',['serverGroupPermAutoAssign',['../class_team_speak3___node___host.html#a4bdd23ed10633b2a3b42231f1642abfc',1,'TeamSpeak3_Node_Host']]], + ['servergrouppermautoremove',['serverGroupPermAutoRemove',['../class_team_speak3___node___host.html#aebce552f43d459d24b80a1b667480b5a',1,'TeamSpeak3_Node_Host']]], + ['servergrouppermlist',['serverGroupPermList',['../class_team_speak3___node___server.html#a2406d3d74974d39b296ec5af4b7643c4',1,'TeamSpeak3_Node_Server']]], + ['servergrouppermremove',['serverGroupPermRemove',['../class_team_speak3___node___server.html#a3b7ead504bbc7f2070f46d19e072afd9',1,'TeamSpeak3_Node_Server']]], + ['servergrouprename',['serverGroupRename',['../class_team_speak3___node___server.html#a593ea60776cecfce292855f8fdce050d',1,'TeamSpeak3_Node_Server']]], + ['serveridgetbyport',['serverIdGetByPort',['../class_team_speak3___node___host.html#ad18fcacc29347482852bc26404f0afeb',1,'TeamSpeak3_Node_Host']]], + ['serverlist',['serverList',['../class_team_speak3___node___host.html#af60cb13dd90638c36de581f61ca8c92d',1,'TeamSpeak3_Node_Host']]], + ['serverlistreset',['serverListReset',['../class_team_speak3___node___host.html#a62c9504f6d6e9128a2ef2cbc34f257b6',1,'TeamSpeak3_Node_Host']]], + ['serverquery_2ephp',['ServerQuery.php',['../_server_query_8php.html',1,'']]], + ['serverselect',['serverSelect',['../class_team_speak3___node___host.html#a458a95deb930c6a8fad35c74ed1e24b7',1,'TeamSpeak3_Node_Host']]], + ['serverselectbyid',['serverSelectById',['../class_team_speak3___node___host.html#af40f36410c5e022810e3f1546e420eee',1,'TeamSpeak3_Node_Host']]], + ['serverselectbyport',['serverSelectByPort',['../class_team_speak3___node___host.html#a1735a2cfe745783b5d1aed7d74733e3d',1,'TeamSpeak3_Node_Host']]], + ['serverselectedid',['serverSelectedId',['../class_team_speak3___node___host.html#a690b4c2d08d8fb0da6d89936b01fc66a',1,'TeamSpeak3_Node_Host']]], + ['serverselectedport',['serverSelectedPort',['../class_team_speak3___node___host.html#a1d69e0f2faa753ead87cb3262cbdbe4e',1,'TeamSpeak3_Node_Host']]], + ['serverstart',['serverStart',['../class_team_speak3___node___host.html#a884c27a8e4fdc135b3a71c2c3d833271',1,'TeamSpeak3_Node_Host']]], + ['serverstop',['serverStop',['../class_team_speak3___node___host.html#af51beeafd1f513a233308775278f5bc1',1,'TeamSpeak3_Node_Host']]], + ['serverstopprocess',['serverStopProcess',['../class_team_speak3___node___host.html#ab34c49d39d9e87f25168ea654005e893',1,'TeamSpeak3_Node_Host']]], + ['setadapter',['setAdapter',['../class_team_speak3___transport___abstract.html#a68321617cad0b775bb941f19fabea6b5',1,'TeamSpeak3_Transport_Abstract']]], + ['setchannelgroup',['setChannelGroup',['../class_team_speak3___node___client.html#a7231a1c384650d2588b4aec4d3977f6d',1,'TeamSpeak3_Node_Client']]], + ['setdefaultkeys',['setDefaultKeys',['../class_team_speak3___helper___crypt.html#ad2d0754d453e7a5f638979f153489a21',1,'TeamSpeak3_Helper_Crypt']]], + ['setexcludequeryclients',['setExcludeQueryClients',['../class_team_speak3___node___host.html#a49a89cf6d6be89d27c56849efd3b21b9',1,'TeamSpeak3_Node_Host']]], + ['setloadclientlistfirst',['setLoadClientlistFirst',['../class_team_speak3___node___host.html#ab878e12266917938b1f36830534f52b7',1,'TeamSpeak3_Node_Host']]], + ['setpredefinedqueryname',['setPredefinedQueryName',['../class_team_speak3___node___host.html#a08abe8ba2f675d88656445bcdbd7d87a',1,'TeamSpeak3_Node_Host']]], + ['setsecretkey',['setSecretKey',['../class_team_speak3___helper___crypt.html#ade43c86c7fe887013b88f9f6a2e3011f',1,'TeamSpeak3_Helper_Crypt']]], + ['setstorage',['setStorage',['../class_team_speak3___node___abstract.html#a13303ca9275df184348ed7363d9d7c9a',1,'TeamSpeak3_Node_Abstract']]], + ['setuseofflineasvirtual',['setUseOfflineAsVirtual',['../class_team_speak3___node___host.html#a7b360313c50361ead406fa45564d100f',1,'TeamSpeak3_Node_Host']]], + ['signal_2ephp',['Signal.php',['../_signal_8php.html',1,'']]], + ['snapshot_5fbase64',['SNAPSHOT_BASE64',['../class_team_speak3.html#ac9535ce5e98c480aea71d0f149a7c2cb',1,'TeamSpeak3']]], + ['snapshot_5fhexdec',['SNAPSHOT_HEXDEC',['../class_team_speak3.html#a7dfffb36f25a89a472b60275fc3fc4e7',1,'TeamSpeak3']]], + ['snapshot_5fstring',['SNAPSHOT_STRING',['../class_team_speak3.html#af9a20a17b3aaaf60621e4f471f7e300a',1,'TeamSpeak3']]], + ['snapshotcreate',['snapshotCreate',['../class_team_speak3___node___server.html#a2f9a35ca93ed9d7341e131142779acbe',1,'TeamSpeak3_Node_Server']]], + ['snapshotdeploy',['snapshotDeploy',['../class_team_speak3___node___server.html#a30215b7852290912517096a1555ba7ee',1,'TeamSpeak3_Node_Server']]], + ['sortclientlist',['sortClientList',['../class_team_speak3___node___server.html#a011ab27a8853db6f1197eda9bf873de3',1,'TeamSpeak3_Node_Server']]], + ['sortfilelist',['sortFileList',['../class_team_speak3___node___server.html#a3a630027cf54d62e6efad854d4e543c9',1,'TeamSpeak3_Node_Server']]], + ['sortgrouplist',['sortGroupList',['../class_team_speak3___node___server.html#a30149e018f59e136e8d8d2e32c03c30f',1,'TeamSpeak3_Node_Server']]], + ['spacer_5falign_5fcenter',['SPACER_ALIGN_CENTER',['../class_team_speak3.html#aaffe4f52d9d9009a8fd90fb2683e18ce',1,'TeamSpeak3']]], + ['spacer_5falign_5fleft',['SPACER_ALIGN_LEFT',['../class_team_speak3.html#ad7a9fe53817b1d8441eafe1cfed2570e',1,'TeamSpeak3']]], + ['spacer_5falign_5frepeat',['SPACER_ALIGN_REPEAT',['../class_team_speak3.html#a7aa076becfafe9cfb5a6b9eae4c72831',1,'TeamSpeak3']]], + ['spacer_5falign_5fright',['SPACER_ALIGN_RIGHT',['../class_team_speak3.html#ace570a7b5abdbfd89f20145f2757bbcd',1,'TeamSpeak3']]], + ['spacer_5fcustom',['SPACER_CUSTOM',['../class_team_speak3.html#a12e9d78448fe9a2fc19f71a19db33b24',1,'TeamSpeak3']]], + ['spacer_5fdashdotdotline',['SPACER_DASHDOTDOTLINE',['../class_team_speak3.html#a8a46203c06bf7b769b1245eee8c71eca',1,'TeamSpeak3']]], + ['spacer_5fdashdotline',['SPACER_DASHDOTLINE',['../class_team_speak3.html#ab5f7f692edb611a09be65dbe1cc22fd3',1,'TeamSpeak3']]], + ['spacer_5fdashline',['SPACER_DASHLINE',['../class_team_speak3.html#ae0f64ba57dfa729092ae07f0508ad20c',1,'TeamSpeak3']]], + ['spacer_5fdotline',['SPACER_DOTLINE',['../class_team_speak3.html#a1b97ddf3ea3bfb3bac4167cc9853bcf5',1,'TeamSpeak3']]], + ['spacer_5fsolidline',['SPACER_SOLIDLINE',['../class_team_speak3.html#abe21c7855096b6b8d86613897ed1a4bd',1,'TeamSpeak3']]], + ['spacergetalign',['spacerGetAlign',['../class_team_speak3___node___channel.html#a9d3afd421f9957b18fae15dd2fb70a59',1,'TeamSpeak3_Node_Channel']]], + ['spacergettype',['spacerGetType',['../class_team_speak3___node___channel.html#a52fe3494554137418c85446de9d93d25',1,'TeamSpeak3_Node_Channel']]], + ['spacetopercent',['spaceToPercent',['../class_team_speak3___helper___string.html#a14c8b3fce8c0074f1d180a7b764838e8',1,'TeamSpeak3_Helper_String']]], + ['split',['split',['../class_team_speak3___helper___string.html#a597f8498c9a870605f55de5401e8fe89',1,'TeamSpeak3_Helper_String']]], + ['start',['start',['../class_team_speak3___helper___profiler___timer.html#a29e06cc21d560576abec2678108078c2',1,'TeamSpeak3_Helper_Profiler_Timer\start()'],['../class_team_speak3___helper___profiler.html#a58f37c77d468aab64bc832a476d02329',1,'TeamSpeak3_Helper_Profiler\start()'],['../class_team_speak3___node___server.html#a21ce82924bf869c8033ef3fcde598795',1,'TeamSpeak3_Node_Server\start()']]], + ['startswith',['startsWith',['../class_team_speak3___helper___string.html#a1589e49036cbc501ad58a6a5f88a07b3',1,'TeamSpeak3_Helper_String']]], + ['stop',['stop',['../class_team_speak3___helper___profiler___timer.html#a9df478674ef00e29adbc12cc103390a7',1,'TeamSpeak3_Helper_Profiler_Timer\stop()'],['../class_team_speak3___helper___profiler.html#abf21a837d9fd471deb7d841b50375bdc',1,'TeamSpeak3_Helper_Profiler\stop()'],['../class_team_speak3___node___server.html#a63a380c17cc49c30093672163b164502',1,'TeamSpeak3_Node_Server\stop()']]], + ['string_2ephp',['String.php',['../_string_8php.html',1,'']]], + ['stripslashesrecursive',['stripslashesRecursive',['../class_team_speak3___helper___uri.html#aa0cf66fbafbd606bebdcc2c48e90158f',1,'TeamSpeak3_Helper_Uri']]], + ['subchannelgetbyid',['subChannelGetById',['../class_team_speak3___node___channel.html#add4dacca0d0c83837598b948401a40b4',1,'TeamSpeak3_Node_Channel']]], + ['subchannelgetbyname',['subChannelGetByName',['../class_team_speak3___node___channel.html#ac41f8c7054b457df5716641df29608c0',1,'TeamSpeak3_Node_Channel']]], + ['subchannellist',['subChannelList',['../class_team_speak3___node___channel.html#a3305e870508db6fc6346ac326d843f89',1,'TeamSpeak3_Node_Channel']]], + ['subscribe',['subscribe',['../class_team_speak3___helper___signal.html#a058ad6105e05a7b8c620b9446c545984',1,'TeamSpeak3_Helper_Signal']]], + ['substr',['substr',['../class_team_speak3___helper___string.html#af2f7ef460aa783b02432c5b9c24b35f4',1,'TeamSpeak3_Helper_String']]], + ['syn',['syn',['../class_team_speak3___adapter___abstract.html#aa57e551da82adf543957163f0a6d1c6e',1,'TeamSpeak3_Adapter_Abstract\syn()'],['../class_team_speak3___adapter___blacklist.html#a1fa14a98fd62612e9a23357da08fa2a1',1,'TeamSpeak3_Adapter_Blacklist\syn()'],['../class_team_speak3___adapter___file_transfer.html#a6af2972c287ac831c1a3922cadb2d86b',1,'TeamSpeak3_Adapter_FileTransfer\syn()'],['../class_team_speak3___adapter___server_query.html#a1104e77bfcf0fea456b64a275f122ed5',1,'TeamSpeak3_Adapter_ServerQuery\syn()'],['../class_team_speak3___adapter___t_s_d_n_s.html#afa6858becde424aac96a14931b6b1d64',1,'TeamSpeak3_Adapter_TSDNS\syn()'],['../class_team_speak3___adapter___update.html#aff480ecd1d746c8014242bee9ff15a42',1,'TeamSpeak3_Adapter_Update\syn()']]] +]; diff --git a/lib/docs/html/search/all_74.html b/lib/docs/html/search/all_74.html new file mode 100644 index 0000000..d7dabea --- /dev/null +++ b/lib/docs/html/search/all_74.html @@ -0,0 +1,26 @@ + + + + + + + + + +
+
Loading...
+
+ +
Searching...
+
No Matches
+ +
+ + diff --git a/lib/docs/html/search/all_74.js b/lib/docs/html/search/all_74.js new file mode 100644 index 0000000..23a33a6 --- /dev/null +++ b/lib/docs/html/search/all_74.js @@ -0,0 +1,88 @@ +var searchData= +[ + ['tcp_2ephp',['TCP.php',['../_t_c_p_8php.html',1,'']]], + ['teamspeak3',['TeamSpeak3',['../class_team_speak3.html',1,'TeamSpeak3'],['../namespace_team_speak3.html',1,'TeamSpeak3']]], + ['teamspeak3_2ephp',['TeamSpeak3.php',['../_team_speak3_8php.html',1,'']]], + ['teamspeak3_5fadapter_5fabstract',['TeamSpeak3_Adapter_Abstract',['../class_team_speak3___adapter___abstract.html',1,'']]], + ['teamspeak3_5fadapter_5fblacklist',['TeamSpeak3_Adapter_Blacklist',['../class_team_speak3___adapter___blacklist.html',1,'']]], + ['teamspeak3_5fadapter_5fblacklist_5fexception',['TeamSpeak3_Adapter_Blacklist_Exception',['../class_team_speak3___adapter___blacklist___exception.html',1,'']]], + ['teamspeak3_5fadapter_5fexception',['TeamSpeak3_Adapter_Exception',['../class_team_speak3___adapter___exception.html',1,'']]], + ['teamspeak3_5fadapter_5ffiletransfer',['TeamSpeak3_Adapter_FileTransfer',['../class_team_speak3___adapter___file_transfer.html',1,'']]], + ['teamspeak3_5fadapter_5ffiletransfer_5fexception',['TeamSpeak3_Adapter_FileTransfer_Exception',['../class_team_speak3___adapter___file_transfer___exception.html',1,'']]], + ['teamspeak3_5fadapter_5fserverquery',['TeamSpeak3_Adapter_ServerQuery',['../class_team_speak3___adapter___server_query.html',1,'']]], + ['teamspeak3_5fadapter_5fserverquery_5fevent',['TeamSpeak3_Adapter_ServerQuery_Event',['../class_team_speak3___adapter___server_query___event.html',1,'']]], + ['teamspeak3_5fadapter_5fserverquery_5fexception',['TeamSpeak3_Adapter_ServerQuery_Exception',['../class_team_speak3___adapter___server_query___exception.html',1,'']]], + ['teamspeak3_5fadapter_5fserverquery_5freply',['TeamSpeak3_Adapter_ServerQuery_Reply',['../class_team_speak3___adapter___server_query___reply.html',1,'']]], + ['teamspeak3_5fadapter_5ftsdns',['TeamSpeak3_Adapter_TSDNS',['../class_team_speak3___adapter___t_s_d_n_s.html',1,'']]], + ['teamspeak3_5fadapter_5ftsdns_5fexception',['TeamSpeak3_Adapter_TSDNS_Exception',['../class_team_speak3___adapter___t_s_d_n_s___exception.html',1,'']]], + ['teamspeak3_5fadapter_5fupdate',['TeamSpeak3_Adapter_Update',['../class_team_speak3___adapter___update.html',1,'']]], + ['teamspeak3_5fadapter_5fupdate_5fexception',['TeamSpeak3_Adapter_Update_Exception',['../class_team_speak3___adapter___update___exception.html',1,'']]], + ['teamspeak3_5fexception',['TeamSpeak3_Exception',['../class_team_speak3___exception.html',1,'']]], + ['teamspeak3_5fhelper_5fchar',['TeamSpeak3_Helper_Char',['../class_team_speak3___helper___char.html',1,'']]], + ['teamspeak3_5fhelper_5fconvert',['TeamSpeak3_Helper_Convert',['../class_team_speak3___helper___convert.html',1,'']]], + ['teamspeak3_5fhelper_5fcrypt',['TeamSpeak3_Helper_Crypt',['../class_team_speak3___helper___crypt.html',1,'']]], + ['teamspeak3_5fhelper_5fexception',['TeamSpeak3_Helper_Exception',['../class_team_speak3___helper___exception.html',1,'']]], + ['teamspeak3_5fhelper_5fprofiler',['TeamSpeak3_Helper_Profiler',['../class_team_speak3___helper___profiler.html',1,'']]], + ['teamspeak3_5fhelper_5fprofiler_5fexception',['TeamSpeak3_Helper_Profiler_Exception',['../class_team_speak3___helper___profiler___exception.html',1,'']]], + ['teamspeak3_5fhelper_5fprofiler_5ftimer',['TeamSpeak3_Helper_Profiler_Timer',['../class_team_speak3___helper___profiler___timer.html',1,'']]], + ['teamspeak3_5fhelper_5fsignal',['TeamSpeak3_Helper_Signal',['../class_team_speak3___helper___signal.html',1,'']]], + ['teamspeak3_5fhelper_5fsignal_5fexception',['TeamSpeak3_Helper_Signal_Exception',['../class_team_speak3___helper___signal___exception.html',1,'']]], + ['teamspeak3_5fhelper_5fsignal_5fhandler',['TeamSpeak3_Helper_Signal_Handler',['../class_team_speak3___helper___signal___handler.html',1,'']]], + ['teamspeak3_5fhelper_5fsignal_5finterface',['TeamSpeak3_Helper_Signal_Interface',['../interface_team_speak3___helper___signal___interface.html',1,'']]], + ['teamspeak3_5fhelper_5fstring',['TeamSpeak3_Helper_String',['../class_team_speak3___helper___string.html',1,'']]], + ['teamspeak3_5fhelper_5furi',['TeamSpeak3_Helper_Uri',['../class_team_speak3___helper___uri.html',1,'']]], + ['teamspeak3_5fnode_5fabstract',['TeamSpeak3_Node_Abstract',['../class_team_speak3___node___abstract.html',1,'']]], + ['teamspeak3_5fnode_5fchannel',['TeamSpeak3_Node_Channel',['../class_team_speak3___node___channel.html',1,'']]], + ['teamspeak3_5fnode_5fchannelgroup',['TeamSpeak3_Node_Channelgroup',['../class_team_speak3___node___channelgroup.html',1,'']]], + ['teamspeak3_5fnode_5fclient',['TeamSpeak3_Node_Client',['../class_team_speak3___node___client.html',1,'']]], + ['teamspeak3_5fnode_5fexception',['TeamSpeak3_Node_Exception',['../class_team_speak3___node___exception.html',1,'']]], + ['teamspeak3_5fnode_5fhost',['TeamSpeak3_Node_Host',['../class_team_speak3___node___host.html',1,'']]], + ['teamspeak3_5fnode_5fserver',['TeamSpeak3_Node_Server',['../class_team_speak3___node___server.html',1,'']]], + ['teamspeak3_5fnode_5fservergroup',['TeamSpeak3_Node_Servergroup',['../class_team_speak3___node___servergroup.html',1,'']]], + ['teamspeak3_5ftransport_5fabstract',['TeamSpeak3_Transport_Abstract',['../class_team_speak3___transport___abstract.html',1,'']]], + ['teamspeak3_5ftransport_5fexception',['TeamSpeak3_Transport_Exception',['../class_team_speak3___transport___exception.html',1,'']]], + ['teamspeak3_5ftransport_5ftcp',['TeamSpeak3_Transport_TCP',['../class_team_speak3___transport___t_c_p.html',1,'']]], + ['teamspeak3_5ftransport_5fudp',['TeamSpeak3_Transport_UDP',['../class_team_speak3___transport___u_d_p.html',1,'']]], + ['teamspeak3_5fviewer_5fhtml',['TeamSpeak3_Viewer_Html',['../class_team_speak3___viewer___html.html',1,'']]], + ['teamspeak3_5fviewer_5finterface',['TeamSpeak3_Viewer_Interface',['../interface_team_speak3___viewer___interface.html',1,'']]], + ['teamspeak3_5fviewer_5ftext',['TeamSpeak3_Viewer_Text',['../class_team_speak3___viewer___text.html',1,'']]], + ['temppasswordcreate',['tempPasswordCreate',['../class_team_speak3___node___server.html#a6498965a34fe39e72abc006cfdcf04b8',1,'TeamSpeak3_Node_Server']]], + ['temppassworddelete',['tempPasswordDelete',['../class_team_speak3___node___server.html#a176d8a85e03314cbe7422749006122b9',1,'TeamSpeak3_Node_Server']]], + ['temppasswordlist',['tempPasswordList',['../class_team_speak3___node___server.html#a162441d331999a7fdfc7d8fcd2d8978b',1,'TeamSpeak3_Node_Server']]], + ['text_2ephp',['Text.php',['../_text_8php.html',1,'']]], + ['textmsg_5fchannel',['TEXTMSG_CHANNEL',['../class_team_speak3.html#a69511dec19c2f8ed1268267f09e88124',1,'TeamSpeak3']]], + ['textmsg_5fclient',['TEXTMSG_CLIENT',['../class_team_speak3.html#a1882bc1d9fcbcc353d04d308194010bf',1,'TeamSpeak3']]], + ['textmsg_5fserver',['TEXTMSG_SERVER',['../class_team_speak3.html#a9f1020035b40674a589647e5dc90c95b',1,'TeamSpeak3']]], + ['timer_2ephp',['Timer.php',['../_timer_8php.html',1,'']]], + ['toarray',['toArray',['../class_team_speak3___adapter___server_query___reply.html#adafc81235a78cff6fdd21e32266dc83e',1,'TeamSpeak3_Adapter_ServerQuery_Reply\toArray()'],['../class_team_speak3___node___abstract.html#acf3c56763859b8adb21379f0cc6394ad',1,'TeamSpeak3_Node_Abstract\toArray()']]], + ['toascii',['toAscii',['../class_team_speak3___helper___char.html#a3f656ef26e882b1c73859da05e74b087',1,'TeamSpeak3_Helper_Char']]], + ['toassocarray',['toAssocArray',['../class_team_speak3___adapter___server_query___reply.html#a697c2727c161d53dfd7b46ab3ba63395',1,'TeamSpeak3_Adapter_ServerQuery_Reply']]], + ['tobase64',['toBase64',['../class_team_speak3___helper___string.html#a85229b107f448ca9387e894c8d718e25',1,'TeamSpeak3_Helper_String']]], + ['tocrc32',['toCrc32',['../class_team_speak3___helper___string.html#a64e335d45cf24774118f5efbefd27f0c',1,'TeamSpeak3_Helper_String']]], + ['tohex',['toHex',['../class_team_speak3___helper___char.html#af53e59a23a72e44096133355f77e3406',1,'TeamSpeak3_Helper_Char\toHex()'],['../class_team_speak3___helper___string.html#a5730d6f1b9666890431635bf73da0320',1,'TeamSpeak3_Helper_String\toHex()']]], + ['toint',['toInt',['../class_team_speak3___helper___char.html#ae9f5d53be88f2669c99a13e9e428c2ee',1,'TeamSpeak3_Helper_Char\toInt()'],['../class_team_speak3___helper___string.html#af3c8429a224fa716177fe6b90a629a0f',1,'TeamSpeak3_Helper_String\toInt()']]], + ['token_5fchannelgroup',['TOKEN_CHANNELGROUP',['../class_team_speak3.html#ae900e81e1e6607ad4294b17f62112685',1,'TeamSpeak3']]], + ['token_5fservergroup',['TOKEN_SERVERGROUP',['../class_team_speak3.html#add756e636bc8ea39128fdf8361ffd54c',1,'TeamSpeak3']]], + ['tokencreate',['tokenCreate',['../class_team_speak3___node___channelgroup.html#a02e50c4cf44fa59fe42494f168fea441',1,'TeamSpeak3_Node_Channelgroup\tokenCreate()'],['../class_team_speak3___node___server.html#a9a0e159ffbacd9bf36a791862732f525',1,'TeamSpeak3_Node_Server\tokenCreate()'],['../class_team_speak3___node___servergroup.html#a7168973c0a2c778e118275a0e61ecd1d',1,'TeamSpeak3_Node_Servergroup\tokenCreate()']]], + ['tokendelete',['tokenDelete',['../class_team_speak3___node___server.html#a46e722bae91524ef2d2b80a9f4b02cd8',1,'TeamSpeak3_Node_Server']]], + ['tokenlist',['tokenList',['../class_team_speak3___node___server.html#a6e9970aec423b74cf392c7259853557b',1,'TeamSpeak3_Node_Server']]], + ['tokenuse',['tokenUse',['../class_team_speak3___node___server.html#a96197181eefbe0489b88294fe46ef715',1,'TeamSpeak3_Node_Server']]], + ['tolines',['toLines',['../class_team_speak3___adapter___server_query___reply.html#a7bc11136eadd47197965af56e562ba05',1,'TeamSpeak3_Adapter_ServerQuery_Reply']]], + ['tolist',['toList',['../class_team_speak3___adapter___server_query___reply.html#a6e92cc7ce61c856c87fb286ee116ff0b',1,'TeamSpeak3_Adapter_ServerQuery_Reply']]], + ['tolower',['toLower',['../class_team_speak3___helper___char.html#abd5079c69e66bd654d1ad0507e70bfda',1,'TeamSpeak3_Helper_Char\toLower()'],['../class_team_speak3___helper___string.html#a43f910629395c91dd4e69871a9dacb18',1,'TeamSpeak3_Helper_String\toLower()']]], + ['tomd5',['toMd5',['../class_team_speak3___helper___string.html#a500a1b5f6bf0793705b55dd34b9b72f9',1,'TeamSpeak3_Helper_String']]], + ['toobjectarray',['toObjectArray',['../class_team_speak3___adapter___server_query___reply.html#a38c121c24afb5ace90f0fe742a16ae0c',1,'TeamSpeak3_Adapter_ServerQuery_Reply']]], + ['tosha1',['toSha1',['../class_team_speak3___helper___string.html#af520ab5ce16e0fad306d9d57431570ec',1,'TeamSpeak3_Helper_String']]], + ['tostring',['toString',['../class_team_speak3___adapter___server_query___reply.html#ab5d3913ad84e8fed62c0abe93eb442ee',1,'TeamSpeak3_Adapter_ServerQuery_Reply\toString()'],['../class_team_speak3___helper___char.html#a8bb75339d12739d859b81bd1f14f6b48',1,'TeamSpeak3_Helper_Char\toString()'],['../class_team_speak3___helper___string.html#a1e174bac87ff8ac91d305c708dfc5a87',1,'TeamSpeak3_Helper_String\toString()'],['../class_team_speak3___node___abstract.html#ac1b521aa7f9871103da5cbb5d3330125',1,'TeamSpeak3_Node_Abstract\toString()']]], + ['totable',['toTable',['../class_team_speak3___adapter___server_query___reply.html#a807bfd4ee64768a8d329cf98e539272d',1,'TeamSpeak3_Adapter_ServerQuery_Reply']]], + ['tounicode',['toUnicode',['../class_team_speak3___helper___char.html#a2832c6d619a29a2e48c83ac49b126a0e',1,'TeamSpeak3_Helper_Char']]], + ['toupper',['toUpper',['../class_team_speak3___helper___char.html#ad1502b588adf85b1426a1cad68062b51',1,'TeamSpeak3_Helper_Char\toUpper()'],['../class_team_speak3___helper___string.html#a196292e46e6047abe24a355502461e5b',1,'TeamSpeak3_Helper_String\toUpper()']]], + ['toutf8',['toUtf8',['../class_team_speak3___helper___string.html#a16f6035d961abe9878a780d6cfbc0bc5',1,'TeamSpeak3_Helper_String']]], + ['transferinitdownload',['transferInitDownload',['../class_team_speak3___node___server.html#a4e8e46758ad2c7a502c04f22af3e47ca',1,'TeamSpeak3_Node_Server']]], + ['transferinitupload',['transferInitUpload',['../class_team_speak3___node___server.html#a276cde0701f7051fd3cc33e8f1d304c2',1,'TeamSpeak3_Node_Server']]], + ['transferlist',['transferList',['../class_team_speak3___node___server.html#a54a998325257872475957ca2ba62faea',1,'TeamSpeak3_Node_Server']]], + ['transferstop',['transferStop',['../class_team_speak3___node___server.html#a6c7e742fb77bb0affe7d25dbc5aa1561',1,'TeamSpeak3_Node_Server']]], + ['transliterate',['transliterate',['../class_team_speak3___helper___string.html#ad26d639f401f7d2766dbbd7e7d6e7c47',1,'TeamSpeak3_Helper_String']]], + ['trim',['trim',['../class_team_speak3___helper___string.html#a1d7e859160a5a625a42449e6975b79cc',1,'TeamSpeak3_Helper_String']]], + ['tsdns_2ephp',['TSDNS.php',['../_t_s_d_n_s_8php.html',1,'']]] +]; diff --git a/lib/docs/html/search/all_75.html b/lib/docs/html/search/all_75.html new file mode 100644 index 0000000..d99a4c7 --- /dev/null +++ b/lib/docs/html/search/all_75.html @@ -0,0 +1,26 @@ + + + + + + + + + +
+
Loading...
+
+ +
Searching...
+
No Matches
+ +
+ + diff --git a/lib/docs/html/search/all_75.js b/lib/docs/html/search/all_75.js new file mode 100644 index 0000000..c76df9a --- /dev/null +++ b/lib/docs/html/search/all_75.js @@ -0,0 +1,11 @@ +var searchData= +[ + ['udp_2ephp',['UDP.php',['../_u_d_p_8php.html',1,'']]], + ['unescape',['unescape',['../class_team_speak3___helper___string.html#a6cf18e37472a24ad987dc40220082540',1,'TeamSpeak3_Helper_String']]], + ['unregistercustommessage',['unregisterCustomMessage',['../class_team_speak3___exception.html#afcdea3b9b1a7ec267a86dac7f81a7377',1,'TeamSpeak3_Exception']]], + ['unsubscribe',['unsubscribe',['../class_team_speak3___helper___signal.html#a74e337835a70aa10894202bb43d8c30b',1,'TeamSpeak3_Helper_Signal']]], + ['update_2ephp',['Update.php',['../_update_8php.html',1,'']]], + ['upload',['upload',['../class_team_speak3___adapter___file_transfer.html#a9cf1d5542573d87ad5513e4e3eed6b8a',1,'TeamSpeak3_Adapter_FileTransfer']]], + ['uri_2ephp',['Uri.php',['../_uri_8php.html',1,'']]], + ['urisafe',['uriSafe',['../class_team_speak3___helper___string.html#a4a27f0518592b80e80b561157c638ad7',1,'TeamSpeak3_Helper_String']]] +]; diff --git a/lib/docs/html/search/all_76.html b/lib/docs/html/search/all_76.html new file mode 100644 index 0000000..33cae7d --- /dev/null +++ b/lib/docs/html/search/all_76.html @@ -0,0 +1,26 @@ + + + + + + + + + +
+
Loading...
+
+ +
Searching...
+
No Matches
+ +
+ + diff --git a/lib/docs/html/search/all_76.js b/lib/docs/html/search/all_76.js new file mode 100644 index 0000000..6e4873d --- /dev/null +++ b/lib/docs/html/search/all_76.js @@ -0,0 +1,7 @@ +var searchData= +[ + ['valid',['valid',['../class_team_speak3___helper___string.html#adb5081e7fc4aa675d04735a2f4710548',1,'TeamSpeak3_Helper_String\valid()'],['../class_team_speak3___node___abstract.html#a1b0100e4a548e9464d75dcbfe6ac297a',1,'TeamSpeak3_Node_Abstract\valid()']]], + ['verifynodelist',['verifyNodeList',['../class_team_speak3___node___abstract.html#ac66aeb30418e385a5727c191bb8df87d',1,'TeamSpeak3_Node_Abstract']]], + ['version',['version',['../class_team_speak3___helper___convert.html#a3df8e522842d6a197ee095e7e32af88a',1,'TeamSpeak3_Helper_Convert\version()'],['../class_team_speak3___node___host.html#a46731245bd45599ef4d68cef0b4ca416',1,'TeamSpeak3_Node_Host\version()']]], + ['versionshort',['versionShort',['../class_team_speak3___helper___convert.html#a0ce6ada52807c57128bdd7a001f4de43',1,'TeamSpeak3_Helper_Convert']]] +]; diff --git a/lib/docs/html/search/all_77.html b/lib/docs/html/search/all_77.html new file mode 100644 index 0000000..d7ce720 --- /dev/null +++ b/lib/docs/html/search/all_77.html @@ -0,0 +1,26 @@ + + + + + + + + + +
+
Loading...
+
+ +
Searching...
+
No Matches
+ +
+ + diff --git a/lib/docs/html/search/all_77.js b/lib/docs/html/search/all_77.js new file mode 100644 index 0000000..7e1f41a --- /dev/null +++ b/lib/docs/html/search/all_77.js @@ -0,0 +1,9 @@ +var searchData= +[ + ['wait',['wait',['../class_team_speak3___adapter___server_query.html#a9c0096841e9ffc4adabce05b7ee1df37',1,'TeamSpeak3_Adapter_ServerQuery']]], + ['waitforreadyread',['waitForReadyRead',['../class_team_speak3___transport___abstract.html#a9826487851b638f3ad942847eae49c58',1,'TeamSpeak3_Transport_Abstract']]], + ['whoami',['whoami',['../class_team_speak3___node___host.html#a1dd45d32e7e7771ff4edbde1d0617c5e',1,'TeamSpeak3_Node_Host']]], + ['whoamiget',['whoamiGet',['../class_team_speak3___node___host.html#a53a9e8c477b07c1096cab13aa9c9b344',1,'TeamSpeak3_Node_Host']]], + ['whoamireset',['whoamiReset',['../class_team_speak3___node___host.html#a2abc65f1b0da4b3bc64dbda8d47c0f67',1,'TeamSpeak3_Node_Host']]], + ['whoamiset',['whoamiSet',['../class_team_speak3___node___host.html#abaf68b9f5b0f6b650148ed9898b2a21a',1,'TeamSpeak3_Node_Host']]] +]; diff --git a/lib/docs/html/search/classes_74.html b/lib/docs/html/search/classes_74.html new file mode 100644 index 0000000..04220c9 --- /dev/null +++ b/lib/docs/html/search/classes_74.html @@ -0,0 +1,26 @@ + + + + + + + + + +
+
Loading...
+
+ +
Searching...
+
No Matches
+ +
+ + diff --git a/lib/docs/html/search/classes_74.js b/lib/docs/html/search/classes_74.js new file mode 100644 index 0000000..7eb7d92 --- /dev/null +++ b/lib/docs/html/search/classes_74.js @@ -0,0 +1,47 @@ +var searchData= +[ + ['teamspeak3',['TeamSpeak3',['../class_team_speak3.html',1,'']]], + ['teamspeak3_5fadapter_5fabstract',['TeamSpeak3_Adapter_Abstract',['../class_team_speak3___adapter___abstract.html',1,'']]], + ['teamspeak3_5fadapter_5fblacklist',['TeamSpeak3_Adapter_Blacklist',['../class_team_speak3___adapter___blacklist.html',1,'']]], + ['teamspeak3_5fadapter_5fblacklist_5fexception',['TeamSpeak3_Adapter_Blacklist_Exception',['../class_team_speak3___adapter___blacklist___exception.html',1,'']]], + ['teamspeak3_5fadapter_5fexception',['TeamSpeak3_Adapter_Exception',['../class_team_speak3___adapter___exception.html',1,'']]], + ['teamspeak3_5fadapter_5ffiletransfer',['TeamSpeak3_Adapter_FileTransfer',['../class_team_speak3___adapter___file_transfer.html',1,'']]], + ['teamspeak3_5fadapter_5ffiletransfer_5fexception',['TeamSpeak3_Adapter_FileTransfer_Exception',['../class_team_speak3___adapter___file_transfer___exception.html',1,'']]], + ['teamspeak3_5fadapter_5fserverquery',['TeamSpeak3_Adapter_ServerQuery',['../class_team_speak3___adapter___server_query.html',1,'']]], + ['teamspeak3_5fadapter_5fserverquery_5fevent',['TeamSpeak3_Adapter_ServerQuery_Event',['../class_team_speak3___adapter___server_query___event.html',1,'']]], + ['teamspeak3_5fadapter_5fserverquery_5fexception',['TeamSpeak3_Adapter_ServerQuery_Exception',['../class_team_speak3___adapter___server_query___exception.html',1,'']]], + ['teamspeak3_5fadapter_5fserverquery_5freply',['TeamSpeak3_Adapter_ServerQuery_Reply',['../class_team_speak3___adapter___server_query___reply.html',1,'']]], + ['teamspeak3_5fadapter_5ftsdns',['TeamSpeak3_Adapter_TSDNS',['../class_team_speak3___adapter___t_s_d_n_s.html',1,'']]], + ['teamspeak3_5fadapter_5ftsdns_5fexception',['TeamSpeak3_Adapter_TSDNS_Exception',['../class_team_speak3___adapter___t_s_d_n_s___exception.html',1,'']]], + ['teamspeak3_5fadapter_5fupdate',['TeamSpeak3_Adapter_Update',['../class_team_speak3___adapter___update.html',1,'']]], + ['teamspeak3_5fadapter_5fupdate_5fexception',['TeamSpeak3_Adapter_Update_Exception',['../class_team_speak3___adapter___update___exception.html',1,'']]], + ['teamspeak3_5fexception',['TeamSpeak3_Exception',['../class_team_speak3___exception.html',1,'']]], + ['teamspeak3_5fhelper_5fchar',['TeamSpeak3_Helper_Char',['../class_team_speak3___helper___char.html',1,'']]], + ['teamspeak3_5fhelper_5fconvert',['TeamSpeak3_Helper_Convert',['../class_team_speak3___helper___convert.html',1,'']]], + ['teamspeak3_5fhelper_5fcrypt',['TeamSpeak3_Helper_Crypt',['../class_team_speak3___helper___crypt.html',1,'']]], + ['teamspeak3_5fhelper_5fexception',['TeamSpeak3_Helper_Exception',['../class_team_speak3___helper___exception.html',1,'']]], + ['teamspeak3_5fhelper_5fprofiler',['TeamSpeak3_Helper_Profiler',['../class_team_speak3___helper___profiler.html',1,'']]], + ['teamspeak3_5fhelper_5fprofiler_5fexception',['TeamSpeak3_Helper_Profiler_Exception',['../class_team_speak3___helper___profiler___exception.html',1,'']]], + ['teamspeak3_5fhelper_5fprofiler_5ftimer',['TeamSpeak3_Helper_Profiler_Timer',['../class_team_speak3___helper___profiler___timer.html',1,'']]], + ['teamspeak3_5fhelper_5fsignal',['TeamSpeak3_Helper_Signal',['../class_team_speak3___helper___signal.html',1,'']]], + ['teamspeak3_5fhelper_5fsignal_5fexception',['TeamSpeak3_Helper_Signal_Exception',['../class_team_speak3___helper___signal___exception.html',1,'']]], + ['teamspeak3_5fhelper_5fsignal_5fhandler',['TeamSpeak3_Helper_Signal_Handler',['../class_team_speak3___helper___signal___handler.html',1,'']]], + ['teamspeak3_5fhelper_5fsignal_5finterface',['TeamSpeak3_Helper_Signal_Interface',['../interface_team_speak3___helper___signal___interface.html',1,'']]], + ['teamspeak3_5fhelper_5fstring',['TeamSpeak3_Helper_String',['../class_team_speak3___helper___string.html',1,'']]], + ['teamspeak3_5fhelper_5furi',['TeamSpeak3_Helper_Uri',['../class_team_speak3___helper___uri.html',1,'']]], + ['teamspeak3_5fnode_5fabstract',['TeamSpeak3_Node_Abstract',['../class_team_speak3___node___abstract.html',1,'']]], + ['teamspeak3_5fnode_5fchannel',['TeamSpeak3_Node_Channel',['../class_team_speak3___node___channel.html',1,'']]], + ['teamspeak3_5fnode_5fchannelgroup',['TeamSpeak3_Node_Channelgroup',['../class_team_speak3___node___channelgroup.html',1,'']]], + ['teamspeak3_5fnode_5fclient',['TeamSpeak3_Node_Client',['../class_team_speak3___node___client.html',1,'']]], + ['teamspeak3_5fnode_5fexception',['TeamSpeak3_Node_Exception',['../class_team_speak3___node___exception.html',1,'']]], + ['teamspeak3_5fnode_5fhost',['TeamSpeak3_Node_Host',['../class_team_speak3___node___host.html',1,'']]], + ['teamspeak3_5fnode_5fserver',['TeamSpeak3_Node_Server',['../class_team_speak3___node___server.html',1,'']]], + ['teamspeak3_5fnode_5fservergroup',['TeamSpeak3_Node_Servergroup',['../class_team_speak3___node___servergroup.html',1,'']]], + ['teamspeak3_5ftransport_5fabstract',['TeamSpeak3_Transport_Abstract',['../class_team_speak3___transport___abstract.html',1,'']]], + ['teamspeak3_5ftransport_5fexception',['TeamSpeak3_Transport_Exception',['../class_team_speak3___transport___exception.html',1,'']]], + ['teamspeak3_5ftransport_5ftcp',['TeamSpeak3_Transport_TCP',['../class_team_speak3___transport___t_c_p.html',1,'']]], + ['teamspeak3_5ftransport_5fudp',['TeamSpeak3_Transport_UDP',['../class_team_speak3___transport___u_d_p.html',1,'']]], + ['teamspeak3_5fviewer_5fhtml',['TeamSpeak3_Viewer_Html',['../class_team_speak3___viewer___html.html',1,'']]], + ['teamspeak3_5fviewer_5finterface',['TeamSpeak3_Viewer_Interface',['../interface_team_speak3___viewer___interface.html',1,'']]], + ['teamspeak3_5fviewer_5ftext',['TeamSpeak3_Viewer_Text',['../class_team_speak3___viewer___text.html',1,'']]] +]; diff --git a/lib/docs/html/search/close.png b/lib/docs/html/search/close.png new file mode 100644 index 0000000000000000000000000000000000000000..9342d3dfeea7b7c4ee610987e717804b5a42ceb9 GIT binary patch literal 273 zcmV+s0q*{ZP)4(RlMby96)VwnbG{ zbe&}^BDn7x>$<{ck4zAK-=nT;=hHG)kmplIF${xqm8db3oX6wT3bvp`TE@m0cg;b) zBuSL}5?N7O(iZLdAlz@)b)Rd~DnSsSX&P5qC`XwuFwcAYLC+d2>+1(8on;wpt8QIC X2MT$R4iQDd00000NkvXXu0mjfia~GN literal 0 HcmV?d00001 diff --git a/lib/docs/html/search/files_61.html b/lib/docs/html/search/files_61.html new file mode 100644 index 0000000..c7378fc --- /dev/null +++ b/lib/docs/html/search/files_61.html @@ -0,0 +1,26 @@ + + + + + + + + + +
+
Loading...
+
+ +
Searching...
+
No Matches
+ +
+ + diff --git a/lib/docs/html/search/files_61.js b/lib/docs/html/search/files_61.js new file mode 100644 index 0000000..12eb27e --- /dev/null +++ b/lib/docs/html/search/files_61.js @@ -0,0 +1,6 @@ +var searchData= +[ + ['abstract_2ephp',['Abstract.php',['../_adapter_2_abstract_8php.html',1,'']]], + ['abstract_2ephp',['Abstract.php',['../_transport_2_abstract_8php.html',1,'']]], + ['abstract_2ephp',['Abstract.php',['../_node_2_abstract_8php.html',1,'']]] +]; diff --git a/lib/docs/html/search/files_62.html b/lib/docs/html/search/files_62.html new file mode 100644 index 0000000..7a65b0a --- /dev/null +++ b/lib/docs/html/search/files_62.html @@ -0,0 +1,26 @@ + + + + + + + + + +
+
Loading...
+
+ +
Searching...
+
No Matches
+ +
+ + diff --git a/lib/docs/html/search/files_62.js b/lib/docs/html/search/files_62.js new file mode 100644 index 0000000..80be968 --- /dev/null +++ b/lib/docs/html/search/files_62.js @@ -0,0 +1,4 @@ +var searchData= +[ + ['blacklist_2ephp',['Blacklist.php',['../_blacklist_8php.html',1,'']]] +]; diff --git a/lib/docs/html/search/files_63.html b/lib/docs/html/search/files_63.html new file mode 100644 index 0000000..1dd7c8e --- /dev/null +++ b/lib/docs/html/search/files_63.html @@ -0,0 +1,26 @@ + + + + + + + + + +
+
Loading...
+
+ +
Searching...
+
No Matches
+ +
+ + diff --git a/lib/docs/html/search/files_63.js b/lib/docs/html/search/files_63.js new file mode 100644 index 0000000..868b198 --- /dev/null +++ b/lib/docs/html/search/files_63.js @@ -0,0 +1,9 @@ +var searchData= +[ + ['channel_2ephp',['Channel.php',['../_channel_8php.html',1,'']]], + ['channelgroup_2ephp',['Channelgroup.php',['../_channelgroup_8php.html',1,'']]], + ['char_2ephp',['Char.php',['../_char_8php.html',1,'']]], + ['client_2ephp',['Client.php',['../_client_8php.html',1,'']]], + ['convert_2ephp',['Convert.php',['../_convert_8php.html',1,'']]], + ['crypt_2ephp',['Crypt.php',['../_crypt_8php.html',1,'']]] +]; diff --git a/lib/docs/html/search/files_65.html b/lib/docs/html/search/files_65.html new file mode 100644 index 0000000..1edc0ec --- /dev/null +++ b/lib/docs/html/search/files_65.html @@ -0,0 +1,26 @@ + + + + + + + + + +
+
Loading...
+
+ +
Searching...
+
No Matches
+ +
+ + diff --git a/lib/docs/html/search/files_65.js b/lib/docs/html/search/files_65.js new file mode 100644 index 0000000..a927ac5 --- /dev/null +++ b/lib/docs/html/search/files_65.js @@ -0,0 +1,16 @@ +var searchData= +[ + ['event_2ephp',['Event.php',['../_event_8php.html',1,'']]], + ['exception_2ephp',['Exception.php',['../_adapter_2_update_2_exception_8php.html',1,'']]], + ['exception_2ephp',['Exception.php',['../_transport_2_exception_8php.html',1,'']]], + ['exception_2ephp',['Exception.php',['../_node_2_exception_8php.html',1,'']]], + ['exception_2ephp',['Exception.php',['../_helper_2_signal_2_exception_8php.html',1,'']]], + ['exception_2ephp',['Exception.php',['../_helper_2_profiler_2_exception_8php.html',1,'']]], + ['exception_2ephp',['Exception.php',['../_helper_2_exception_8php.html',1,'']]], + ['exception_2ephp',['Exception.php',['../_exception_8php.html',1,'']]], + ['exception_2ephp',['Exception.php',['../_adapter_2_file_transfer_2_exception_8php.html',1,'']]], + ['exception_2ephp',['Exception.php',['../_adapter_2_t_s_d_n_s_2_exception_8php.html',1,'']]], + ['exception_2ephp',['Exception.php',['../_adapter_2_server_query_2_exception_8php.html',1,'']]], + ['exception_2ephp',['Exception.php',['../_adapter_2_blacklist_2_exception_8php.html',1,'']]], + ['exception_2ephp',['Exception.php',['../_adapter_2_exception_8php.html',1,'']]] +]; diff --git a/lib/docs/html/search/files_66.html b/lib/docs/html/search/files_66.html new file mode 100644 index 0000000..0e81487 --- /dev/null +++ b/lib/docs/html/search/files_66.html @@ -0,0 +1,26 @@ + + + + + + + + + +
+
Loading...
+
+ +
Searching...
+
No Matches
+ +
+ + diff --git a/lib/docs/html/search/files_66.js b/lib/docs/html/search/files_66.js new file mode 100644 index 0000000..6bd11fc --- /dev/null +++ b/lib/docs/html/search/files_66.js @@ -0,0 +1,4 @@ +var searchData= +[ + ['filetransfer_2ephp',['FileTransfer.php',['../_file_transfer_8php.html',1,'']]] +]; diff --git a/lib/docs/html/search/files_68.html b/lib/docs/html/search/files_68.html new file mode 100644 index 0000000..0ecafca --- /dev/null +++ b/lib/docs/html/search/files_68.html @@ -0,0 +1,26 @@ + + + + + + + + + +
+
Loading...
+
+ +
Searching...
+
No Matches
+ +
+ + diff --git a/lib/docs/html/search/files_68.js b/lib/docs/html/search/files_68.js new file mode 100644 index 0000000..dbe2565 --- /dev/null +++ b/lib/docs/html/search/files_68.js @@ -0,0 +1,6 @@ +var searchData= +[ + ['handler_2ephp',['Handler.php',['../_handler_8php.html',1,'']]], + ['host_2ephp',['Host.php',['../_host_8php.html',1,'']]], + ['html_2ephp',['Html.php',['../_html_8php.html',1,'']]] +]; diff --git a/lib/docs/html/search/files_69.html b/lib/docs/html/search/files_69.html new file mode 100644 index 0000000..bc34816 --- /dev/null +++ b/lib/docs/html/search/files_69.html @@ -0,0 +1,26 @@ + + + + + + + + + +
+
Loading...
+
+ +
Searching...
+
No Matches
+ +
+ + diff --git a/lib/docs/html/search/files_69.js b/lib/docs/html/search/files_69.js new file mode 100644 index 0000000..54776ce --- /dev/null +++ b/lib/docs/html/search/files_69.js @@ -0,0 +1,5 @@ +var searchData= +[ + ['interface_2ephp',['Interface.php',['../_helper_2_signal_2_interface_8php.html',1,'']]], + ['interface_2ephp',['Interface.php',['../_viewer_2_interface_8php.html',1,'']]] +]; diff --git a/lib/docs/html/search/files_70.html b/lib/docs/html/search/files_70.html new file mode 100644 index 0000000..a053bec --- /dev/null +++ b/lib/docs/html/search/files_70.html @@ -0,0 +1,26 @@ + + + + + + + + + +
+
Loading...
+
+ +
Searching...
+
No Matches
+ +
+ + diff --git a/lib/docs/html/search/files_70.js b/lib/docs/html/search/files_70.js new file mode 100644 index 0000000..4d757d5 --- /dev/null +++ b/lib/docs/html/search/files_70.js @@ -0,0 +1,4 @@ +var searchData= +[ + ['profiler_2ephp',['Profiler.php',['../_profiler_8php.html',1,'']]] +]; diff --git a/lib/docs/html/search/files_72.html b/lib/docs/html/search/files_72.html new file mode 100644 index 0000000..a952842 --- /dev/null +++ b/lib/docs/html/search/files_72.html @@ -0,0 +1,26 @@ + + + + + + + + + +
+
Loading...
+
+ +
Searching...
+
No Matches
+ +
+ + diff --git a/lib/docs/html/search/files_72.js b/lib/docs/html/search/files_72.js new file mode 100644 index 0000000..3d56cbf --- /dev/null +++ b/lib/docs/html/search/files_72.js @@ -0,0 +1,4 @@ +var searchData= +[ + ['reply_2ephp',['Reply.php',['../_reply_8php.html',1,'']]] +]; diff --git a/lib/docs/html/search/files_73.html b/lib/docs/html/search/files_73.html new file mode 100644 index 0000000..6d8f488 --- /dev/null +++ b/lib/docs/html/search/files_73.html @@ -0,0 +1,26 @@ + + + + + + + + + +
+
Loading...
+
+ +
Searching...
+
No Matches
+ +
+ + diff --git a/lib/docs/html/search/files_73.js b/lib/docs/html/search/files_73.js new file mode 100644 index 0000000..07895d5 --- /dev/null +++ b/lib/docs/html/search/files_73.js @@ -0,0 +1,8 @@ +var searchData= +[ + ['server_2ephp',['Server.php',['../_server_8php.html',1,'']]], + ['servergroup_2ephp',['Servergroup.php',['../_servergroup_8php.html',1,'']]], + ['serverquery_2ephp',['ServerQuery.php',['../_server_query_8php.html',1,'']]], + ['signal_2ephp',['Signal.php',['../_signal_8php.html',1,'']]], + ['string_2ephp',['String.php',['../_string_8php.html',1,'']]] +]; diff --git a/lib/docs/html/search/files_74.html b/lib/docs/html/search/files_74.html new file mode 100644 index 0000000..b67c32e --- /dev/null +++ b/lib/docs/html/search/files_74.html @@ -0,0 +1,26 @@ + + + + + + + + + +
+
Loading...
+
+ +
Searching...
+
No Matches
+ +
+ + diff --git a/lib/docs/html/search/files_74.js b/lib/docs/html/search/files_74.js new file mode 100644 index 0000000..cfc0ae1 --- /dev/null +++ b/lib/docs/html/search/files_74.js @@ -0,0 +1,8 @@ +var searchData= +[ + ['tcp_2ephp',['TCP.php',['../_t_c_p_8php.html',1,'']]], + ['teamspeak3_2ephp',['TeamSpeak3.php',['../_team_speak3_8php.html',1,'']]], + ['text_2ephp',['Text.php',['../_text_8php.html',1,'']]], + ['timer_2ephp',['Timer.php',['../_timer_8php.html',1,'']]], + ['tsdns_2ephp',['TSDNS.php',['../_t_s_d_n_s_8php.html',1,'']]] +]; diff --git a/lib/docs/html/search/files_75.html b/lib/docs/html/search/files_75.html new file mode 100644 index 0000000..feb3a94 --- /dev/null +++ b/lib/docs/html/search/files_75.html @@ -0,0 +1,26 @@ + + + + + + + + + +
+
Loading...
+
+ +
Searching...
+
No Matches
+ +
+ + diff --git a/lib/docs/html/search/files_75.js b/lib/docs/html/search/files_75.js new file mode 100644 index 0000000..b3e9cab --- /dev/null +++ b/lib/docs/html/search/files_75.js @@ -0,0 +1,6 @@ +var searchData= +[ + ['udp_2ephp',['UDP.php',['../_u_d_p_8php.html',1,'']]], + ['update_2ephp',['Update.php',['../_update_8php.html',1,'']]], + ['uri_2ephp',['Uri.php',['../_uri_8php.html',1,'']]] +]; diff --git a/lib/docs/html/search/functions_5f.html b/lib/docs/html/search/functions_5f.html new file mode 100644 index 0000000..f0e7c89 --- /dev/null +++ b/lib/docs/html/search/functions_5f.html @@ -0,0 +1,26 @@ + + + + + + + + + +
+
Loading...
+
+ +
Searching...
+
No Matches
+ +
+ + diff --git a/lib/docs/html/search/functions_5f.js b/lib/docs/html/search/functions_5f.js new file mode 100644 index 0000000..afe6edd --- /dev/null +++ b/lib/docs/html/search/functions_5f.js @@ -0,0 +1,11 @@ +var searchData= +[ + ['_5f_5fcall',['__call',['../class_team_speak3___helper___string.html#a000fbe55814c81bb9df49f9e493fa2f0',1,'TeamSpeak3_Helper_String\__call()'],['../class_team_speak3___node___abstract.html#a63fb203f511e99625428f70f0525950c',1,'TeamSpeak3_Node_Abstract\__call()']]], + ['_5f_5fconstruct',['__construct',['../class_team_speak3___adapter___abstract.html#a775cec95b7fc371b9155383a29888932',1,'TeamSpeak3_Adapter_Abstract\__construct()'],['../class_team_speak3___adapter___server_query___event.html#ab847f72f60d9a87e577455a326b97d35',1,'TeamSpeak3_Adapter_ServerQuery_Event\__construct()'],['../class_team_speak3___adapter___server_query___reply.html#abe1a1d307cebcdcd28dfbf9aa9323366',1,'TeamSpeak3_Adapter_ServerQuery_Reply\__construct()'],['../class_team_speak3___exception.html#a9872c9261e67090a2b5b7e0748a89ff6',1,'TeamSpeak3_Exception\__construct()'],['../class_team_speak3___helper___char.html#add1580b3f4a63d2bcf7e65b9c08278cc',1,'TeamSpeak3_Helper_Char\__construct()'],['../class_team_speak3___helper___crypt.html#aec18b53e735ecb9077edf004898d32d3',1,'TeamSpeak3_Helper_Crypt\__construct()'],['../class_team_speak3___helper___profiler___timer.html#a92400f1247e08c23460749de0d4cad51',1,'TeamSpeak3_Helper_Profiler_Timer\__construct()'],['../class_team_speak3___helper___signal___handler.html#acaeace4c6fe538813ae52b7f9283c063',1,'TeamSpeak3_Helper_Signal_Handler\__construct()'],['../class_team_speak3___helper___string.html#abc3280155219f30593f8af00249ad155',1,'TeamSpeak3_Helper_String\__construct()'],['../class_team_speak3___helper___uri.html#a90842c65bae8ffcf088b1dd12def7ff1',1,'TeamSpeak3_Helper_Uri\__construct()'],['../class_team_speak3___node___channel.html#a7e20bbf057d5934b61e5c024240204d9',1,'TeamSpeak3_Node_Channel\__construct()'],['../class_team_speak3___node___channelgroup.html#a1ff88f65f4b500b3cd187ce454b7e913',1,'TeamSpeak3_Node_Channelgroup\__construct()'],['../class_team_speak3___node___client.html#a0d9eac93fcf1b8efae5eb00feefc250c',1,'TeamSpeak3_Node_Client\__construct()'],['../class_team_speak3___node___host.html#af3c2ddcc3d5e62711d1b889446bfdd7e',1,'TeamSpeak3_Node_Host\__construct()'],['../class_team_speak3___node___server.html#a5daf725f479aa4f401739c6af5b86ea2',1,'TeamSpeak3_Node_Server\__construct()'],['../class_team_speak3___node___servergroup.html#ad1a97ccd0e411e13b5a2606e194ba0e7',1,'TeamSpeak3_Node_Servergroup\__construct()'],['../class_team_speak3___transport___abstract.html#a99016d25e5f209d03be313b5c3c6cbf3',1,'TeamSpeak3_Transport_Abstract\__construct()'],['../class_team_speak3___viewer___html.html#a425d8c4c94925133b9aeb99e23de4a9d',1,'TeamSpeak3_Viewer_Html\__construct()']]], + ['_5f_5fdestruct',['__destruct',['../class_team_speak3___adapter___abstract.html#ac2edb7dbc9a488a6d772cb6397fab128',1,'TeamSpeak3_Adapter_Abstract\__destruct()'],['../class_team_speak3___adapter___blacklist.html#ac513e62c024049632e52ad13c7db5baf',1,'TeamSpeak3_Adapter_Blacklist\__destruct()'],['../class_team_speak3___adapter___file_transfer.html#a9f273fc582708000a67db6626573a1de',1,'TeamSpeak3_Adapter_FileTransfer\__destruct()'],['../class_team_speak3___adapter___server_query.html#abe0dc4f73909ab01d000059967bccd64',1,'TeamSpeak3_Adapter_ServerQuery\__destruct()'],['../class_team_speak3___adapter___t_s_d_n_s.html#ae37dd4961f9b941cf86f4dbc811b1ed2',1,'TeamSpeak3_Adapter_TSDNS\__destruct()'],['../class_team_speak3___adapter___update.html#a09d4e6b18f2475adfc1f5a74c6478421',1,'TeamSpeak3_Adapter_Update\__destruct()'],['../class_team_speak3___transport___abstract.html#a8a116dd471039a09e64cf1bc1cb3530a',1,'TeamSpeak3_Transport_Abstract\__destruct()']]], + ['_5f_5fget',['__get',['../class_team_speak3___adapter___server_query___event.html#a496f7adbe81710f97848608dc3b29265',1,'TeamSpeak3_Adapter_ServerQuery_Event\__get()'],['../class_team_speak3___node___abstract.html#ac8ab685826ff08e853de2aebad9df459',1,'TeamSpeak3_Node_Abstract\__get()']]], + ['_5f_5fset',['__set',['../class_team_speak3___adapter___server_query___event.html#a8c466fb68578cc95504035aae3785759',1,'TeamSpeak3_Adapter_ServerQuery_Event\__set()'],['../class_team_speak3___node___abstract.html#a14930274e5498a5a8816ef751ff87946',1,'TeamSpeak3_Node_Abstract\__set()']]], + ['_5f_5fsleep',['__sleep',['../class_team_speak3___adapter___abstract.html#afa29be26280db12e38aef59d90f7c6ac',1,'TeamSpeak3_Adapter_Abstract\__sleep()'],['../class_team_speak3___node___abstract.html#a19b5c8aaac5ef0af2f1393bffea186c5',1,'TeamSpeak3_Node_Abstract\__sleep()'],['../class_team_speak3___transport___abstract.html#ad9ad59b6ff973ab97cb4e2ec75b6b9b1',1,'TeamSpeak3_Transport_Abstract\__sleep()']]], + ['_5f_5ftostring',['__toString',['../class_team_speak3___helper___char.html#a09f3c3116f003edfd555082f6dbe4abf',1,'TeamSpeak3_Helper_Char\__toString()'],['../class_team_speak3___helper___string.html#a99fcbce6b1675e69ec80c51b1f58cc1b',1,'TeamSpeak3_Helper_String\__toString()'],['../class_team_speak3___node___abstract.html#a89d26184ecd8790f8b930e5eceaddc29',1,'TeamSpeak3_Node_Abstract\__toString()'],['../class_team_speak3___node___channel.html#a2fbf4302a79b8e3cfab59c23e7c5f5ef',1,'TeamSpeak3_Node_Channel\__toString()'],['../class_team_speak3___node___channelgroup.html#a07f4314251dafde96cf16462786c91de',1,'TeamSpeak3_Node_Channelgroup\__toString()'],['../class_team_speak3___node___client.html#a1cde3ec654c5ee8e9c6aaf187f9f037b',1,'TeamSpeak3_Node_Client\__toString()'],['../class_team_speak3___node___host.html#a657d0a513ca87fbce0c095c3235be2ec',1,'TeamSpeak3_Node_Host\__toString()'],['../class_team_speak3___node___server.html#a50f029dcd7ba276c8b9c40c99c50f38d',1,'TeamSpeak3_Node_Server\__toString()'],['../class_team_speak3___node___servergroup.html#a465516dfa0e5c84933704c3f8e803f6b',1,'TeamSpeak3_Node_Servergroup\__toString()']]], + ['_5f_5fwakeup',['__wakeup',['../class_team_speak3___adapter___abstract.html#aaa3c73f10edd73494087a7a523726a89',1,'TeamSpeak3_Adapter_Abstract\__wakeup()'],['../class_team_speak3___node___host.html#a0abbd00f4d554a868c936f252eeda695',1,'TeamSpeak3_Node_Host\__wakeup()'],['../class_team_speak3___transport___abstract.html#af9947fe29ce0055f9a6e9c5bd7cff1be',1,'TeamSpeak3_Transport_Abstract\__wakeup()']]] +]; diff --git a/lib/docs/html/search/functions_61.html b/lib/docs/html/search/functions_61.html new file mode 100644 index 0000000..048aaa8 --- /dev/null +++ b/lib/docs/html/search/functions_61.html @@ -0,0 +1,26 @@ + + + + + + + + + +
+
Loading...
+
+ +
Searching...
+
No Matches
+ +
+ + diff --git a/lib/docs/html/search/functions_61.js b/lib/docs/html/search/functions_61.js new file mode 100644 index 0000000..8579a61 --- /dev/null +++ b/lib/docs/html/search/functions_61.js @@ -0,0 +1,9 @@ +var searchData= +[ + ['addservergroup',['addServerGroup',['../class_team_speak3___node___client.html#a70f773eefe1d4f67f5c15974ca609a6d',1,'TeamSpeak3_Node_Client']]], + ['append',['append',['../class_team_speak3___helper___string.html#a3ec8659b47a91c14a35cdfb681d18c61',1,'TeamSpeak3_Helper_String']]], + ['arg',['arg',['../class_team_speak3___helper___string.html#aa53d94bf82f2f1d3e091a1fe6912cfa3',1,'TeamSpeak3_Helper_String']]], + ['autoload',['autoload',['../class_team_speak3.html#aba738bb754c3d3ae892c65943ca6f082',1,'TeamSpeak3']]], + ['avatardownload',['avatarDownload',['../class_team_speak3___node___client.html#a7101c45f9e7aa653b572de8b2f41109b',1,'TeamSpeak3_Node_Client']]], + ['avatargetname',['avatarGetName',['../class_team_speak3___node___client.html#a1c1b0fa71731df7ac3d4098b046938c7',1,'TeamSpeak3_Node_Client']]] +]; diff --git a/lib/docs/html/search/functions_62.html b/lib/docs/html/search/functions_62.html new file mode 100644 index 0000000..4faad6c --- /dev/null +++ b/lib/docs/html/search/functions_62.html @@ -0,0 +1,26 @@ + + + + + + + + + +
+
Loading...
+
+ +
Searching...
+
No Matches
+ +
+ + diff --git a/lib/docs/html/search/functions_62.js b/lib/docs/html/search/functions_62.js new file mode 100644 index 0000000..9990390 --- /dev/null +++ b/lib/docs/html/search/functions_62.js @@ -0,0 +1,10 @@ +var searchData= +[ + ['ban',['ban',['../class_team_speak3___node___client.html#acd8e79afa687108fcdbee4dad7a3cde0',1,'TeamSpeak3_Node_Client']]], + ['bancreate',['banCreate',['../class_team_speak3___node___server.html#a0a2c9e20c88b81275222acdd61a5f8c4',1,'TeamSpeak3_Node_Server']]], + ['bandelete',['banDelete',['../class_team_speak3___node___server.html#a953aaca1b1d5e024b37221146d04b296',1,'TeamSpeak3_Node_Server']]], + ['banlist',['banList',['../class_team_speak3___node___server.html#a6d0211802f5d1248bc69c4fdefa3d417',1,'TeamSpeak3_Node_Server']]], + ['banlistclear',['banListClear',['../class_team_speak3___node___server.html#ad61bc446498a29aeb0f035c8316ee743',1,'TeamSpeak3_Node_Server']]], + ['bindinglist',['bindingList',['../class_team_speak3___node___host.html#ab185118ab245fbd1068b2b0301dd21e7',1,'TeamSpeak3_Node_Host']]], + ['bytes',['bytes',['../class_team_speak3___helper___convert.html#ad1dfd12122980ea9b1f53803fe640ef6',1,'TeamSpeak3_Helper_Convert']]] +]; diff --git a/lib/docs/html/search/functions_63.html b/lib/docs/html/search/functions_63.html new file mode 100644 index 0000000..ec8b6f1 --- /dev/null +++ b/lib/docs/html/search/functions_63.html @@ -0,0 +1,26 @@ + + + + + + + + + +
+
Loading...
+
+ +
Searching...
+
No Matches
+ +
+ + diff --git a/lib/docs/html/search/functions_63.js b/lib/docs/html/search/functions_63.js new file mode 100644 index 0000000..b0b4820 --- /dev/null +++ b/lib/docs/html/search/functions_63.js @@ -0,0 +1,92 @@ +var searchData= +[ + ['call',['call',['../class_team_speak3___helper___signal___handler.html#a1c3e62b60b8459ffe70bf25bc9064375',1,'TeamSpeak3_Helper_Signal_Handler']]], + ['channelclientpermassign',['channelClientPermAssign',['../class_team_speak3___node___server.html#a4a88f38a81880b5c6a33cb5d084eb56a',1,'TeamSpeak3_Node_Server']]], + ['channelclientpermlist',['channelClientPermList',['../class_team_speak3___node___server.html#a3bfc6b821cabd6b26dfdc32f70111161',1,'TeamSpeak3_Node_Server']]], + ['channelclientpermremove',['channelClientPermRemove',['../class_team_speak3___node___server.html#a16866a89acc0ebab56ac281fd481fa5c',1,'TeamSpeak3_Node_Server']]], + ['channelcreate',['channelCreate',['../class_team_speak3___node___server.html#ad99b7e328bc70ad4fdbf623d4bc0ec08',1,'TeamSpeak3_Node_Server']]], + ['channeldelete',['channelDelete',['../class_team_speak3___node___server.html#a2fda0933d13a8ffad575bf5c33be6aaa',1,'TeamSpeak3_Node_Server']]], + ['channeldircreate',['channelDirCreate',['../class_team_speak3___node___server.html#a8ec028d2a9dbd36794015e8614831c8d',1,'TeamSpeak3_Node_Server']]], + ['channelfiledelete',['channelFileDelete',['../class_team_speak3___node___server.html#adf66cf57917238b350e42f121bed7b12',1,'TeamSpeak3_Node_Server']]], + ['channelfileinfo',['channelFileInfo',['../class_team_speak3___node___server.html#a42480bcff5af21ef8cc4af469636eadd',1,'TeamSpeak3_Node_Server']]], + ['channelfilelist',['channelFileList',['../class_team_speak3___node___server.html#ade91ccd595c575785b73e6676195375d',1,'TeamSpeak3_Node_Server']]], + ['channelfilerename',['channelFileRename',['../class_team_speak3___node___server.html#a2005bdcfe3f564880c3be8d9249f9419',1,'TeamSpeak3_Node_Server']]], + ['channelgetbyid',['channelGetById',['../class_team_speak3___node___server.html#ab384bb6d76c0dfb582c877852ddba1dc',1,'TeamSpeak3_Node_Server']]], + ['channelgetbyname',['channelGetByName',['../class_team_speak3___node___server.html#a93c751a3d29014c0c7c6ec67ad4ae15a',1,'TeamSpeak3_Node_Server']]], + ['channelgetlevel',['channelGetLevel',['../class_team_speak3___node___server.html#aac1d19d84aba2017c807ab3ccabe9d6b',1,'TeamSpeak3_Node_Server']]], + ['channelgetpathway',['channelGetPathway',['../class_team_speak3___node___server.html#a9f0d8234a8274bef62c40954c4dab731',1,'TeamSpeak3_Node_Server']]], + ['channelgroupclientlist',['channelGroupClientList',['../class_team_speak3___node___server.html#a6a560f0bf64a8c22c1b2542874093ba0',1,'TeamSpeak3_Node_Server']]], + ['channelgroupcopy',['channelGroupCopy',['../class_team_speak3___node___server.html#ae4ec84a2bad70c6bc88b13656d2bbea6',1,'TeamSpeak3_Node_Server']]], + ['channelgroupcreate',['channelGroupCreate',['../class_team_speak3___node___server.html#a9cbda0c1f2afcd8fdcf8b558b7d03e56',1,'TeamSpeak3_Node_Server']]], + ['channelgroupdelete',['channelGroupDelete',['../class_team_speak3___node___server.html#aab0725d35c8c4f8c075e85418b9b5955',1,'TeamSpeak3_Node_Server']]], + ['channelgroupgetbyid',['channelGroupGetById',['../class_team_speak3___node___server.html#a7ddb6b6324cf20c1ec0166d98914670e',1,'TeamSpeak3_Node_Server']]], + ['channelgroupgetbyname',['channelGroupGetByName',['../class_team_speak3___node___server.html#a12649be6d62d7aa194323bdd144a42c7',1,'TeamSpeak3_Node_Server']]], + ['channelgrouplist',['channelGroupList',['../class_team_speak3___node___server.html#a442c9127e61b6e1d31e368af71443b1a',1,'TeamSpeak3_Node_Server']]], + ['channelgrouplistreset',['channelGroupListReset',['../class_team_speak3___node___server.html#a529b1954afa6d9c93eb1c75e4b529a2d',1,'TeamSpeak3_Node_Server']]], + ['channelgrouppermassign',['channelGroupPermAssign',['../class_team_speak3___node___server.html#a96f49940c54b63c3611702d701f4d32f',1,'TeamSpeak3_Node_Server']]], + ['channelgrouppermlist',['channelGroupPermList',['../class_team_speak3___node___server.html#a6866211126530af14d9c60976960b39f',1,'TeamSpeak3_Node_Server']]], + ['channelgrouppermremove',['channelGroupPermRemove',['../class_team_speak3___node___server.html#aa16f874d9d2403b4d4182bfb39729ced',1,'TeamSpeak3_Node_Server']]], + ['channelgrouprename',['channelGroupRename',['../class_team_speak3___node___server.html#a87eed3ba8fc9c48f40b84fb54fbf3584',1,'TeamSpeak3_Node_Server']]], + ['channelisspacer',['channelIsSpacer',['../class_team_speak3___node___server.html#af1ace8782c92dabd6bf1d5fc2476295a',1,'TeamSpeak3_Node_Server']]], + ['channellist',['channelList',['../class_team_speak3___node___server.html#af89e63cf4213e41524cfcf522f46493d',1,'TeamSpeak3_Node_Server']]], + ['channellistreset',['channelListReset',['../class_team_speak3___node___server.html#aa6e9bfacd257844a49eb0e2444f468bb',1,'TeamSpeak3_Node_Server']]], + ['channelmove',['channelMove',['../class_team_speak3___node___server.html#a318977af4cbbe51289e68bdbd57a9342',1,'TeamSpeak3_Node_Server']]], + ['channelpermassign',['channelPermAssign',['../class_team_speak3___node___server.html#a912200d0dad1ac57581786d8f09948e4',1,'TeamSpeak3_Node_Server']]], + ['channelpermlist',['channelPermList',['../class_team_speak3___node___server.html#abf2cdfe68a150d47712165b91db12bbc',1,'TeamSpeak3_Node_Server']]], + ['channelpermremove',['channelPermRemove',['../class_team_speak3___node___server.html#a7d88676f4ef80466b1a24945c49a006b',1,'TeamSpeak3_Node_Server']]], + ['channelspacercreate',['channelSpacerCreate',['../class_team_speak3___node___server.html#aba6de5270fed2d117ad5cdb3f5503b43',1,'TeamSpeak3_Node_Server']]], + ['channelspacergetalign',['channelSpacerGetAlign',['../class_team_speak3___node___server.html#a34911a30ab894a628124c6e8ec3131f1',1,'TeamSpeak3_Node_Server']]], + ['channelspacergettype',['channelSpacerGetType',['../class_team_speak3___node___server.html#a4b65797b14ce1dbc5ab123840216d8d5',1,'TeamSpeak3_Node_Server']]], + ['check',['check',['../class_team_speak3___helper___uri.html#ac156511bb872b762ea30940a46d1f3d1',1,'TeamSpeak3_Helper_Uri']]], + ['checkfragment',['checkFragment',['../class_team_speak3___helper___uri.html#a94c765c6262844caad188417a77adda8',1,'TeamSpeak3_Helper_Uri']]], + ['checkhost',['checkHost',['../class_team_speak3___helper___uri.html#acaa2c62eecb695f7a7ea1e6484b4b169',1,'TeamSpeak3_Helper_Uri']]], + ['checkpass',['checkPass',['../class_team_speak3___helper___uri.html#ac9dff5b48e963efca445427a2ec602ca',1,'TeamSpeak3_Helper_Uri']]], + ['checkpath',['checkPath',['../class_team_speak3___helper___uri.html#abcfb777bab47406a328776f47f6a96a0',1,'TeamSpeak3_Helper_Uri']]], + ['checkport',['checkPort',['../class_team_speak3___helper___uri.html#a9878d6f37ef25b9e0666cf8cd9043515',1,'TeamSpeak3_Helper_Uri']]], + ['checkquery',['checkQuery',['../class_team_speak3___helper___uri.html#a36a08a673b6b108db27c880ad8d42031',1,'TeamSpeak3_Helper_Uri']]], + ['checkuser',['checkUser',['../class_team_speak3___helper___uri.html#a2b8d5365651a38c00ba1393559ba9efd',1,'TeamSpeak3_Helper_Uri']]], + ['clearhandlers',['clearHandlers',['../class_team_speak3___helper___signal.html#a8610e4f73d3f5b564edd1dfa81f1ac28',1,'TeamSpeak3_Helper_Signal']]], + ['clientadd',['clientAdd',['../class_team_speak3___node___servergroup.html#ad5dbfe856a87929927fccfeea2426dc7',1,'TeamSpeak3_Node_Servergroup']]], + ['clientban',['clientBan',['../class_team_speak3___node___server.html#aec861d4290728b6048fea64db528fc7a',1,'TeamSpeak3_Node_Server']]], + ['clientcount',['clientCount',['../class_team_speak3___node___server.html#ae23d433b89992fa85371562db35763c1',1,'TeamSpeak3_Node_Server']]], + ['clientcountdb',['clientCountDb',['../class_team_speak3___node___server.html#a899389702e061146235d7204bc56a332',1,'TeamSpeak3_Node_Server']]], + ['clientdel',['clientDel',['../class_team_speak3___node___servergroup.html#a631e3c6363451e8ef041752af5ea3492',1,'TeamSpeak3_Node_Servergroup']]], + ['clientdeletedb',['clientDeleteDb',['../class_team_speak3___node___server.html#a5ca709d4b3a73686459ef0b09bd7d71a',1,'TeamSpeak3_Node_Server']]], + ['clientfind',['clientFind',['../class_team_speak3___node___server.html#ac42ed34f0e7faeea2f5c8a56196f2eef',1,'TeamSpeak3_Node_Server']]], + ['clientfinddb',['clientFindDb',['../class_team_speak3___node___server.html#ae8648992f4e8d470f474b280870243a8',1,'TeamSpeak3_Node_Server']]], + ['clientgetbydbid',['clientGetByDbid',['../class_team_speak3___node___server.html#acdaab3b579e68badc7849f615cf1f1c2',1,'TeamSpeak3_Node_Server']]], + ['clientgetbyid',['clientGetById',['../class_team_speak3___node___channel.html#a65e29a83a86be282c518beb2de18b09c',1,'TeamSpeak3_Node_Channel\clientGetById()'],['../class_team_speak3___node___server.html#ad7c9c04b99162b40afe39178a0d39632',1,'TeamSpeak3_Node_Server\clientGetById()']]], + ['clientgetbyname',['clientGetByName',['../class_team_speak3___node___channel.html#a551d0330e564f9cc5ab3352f17f82854',1,'TeamSpeak3_Node_Channel\clientGetByName()'],['../class_team_speak3___node___server.html#a3bd7e2be71de3187099ef1446f1a186b',1,'TeamSpeak3_Node_Server\clientGetByName()']]], + ['clientgetbyuid',['clientGetByUid',['../class_team_speak3___node___server.html#ad6e7bf183d0e904b1507c375e3aabde8',1,'TeamSpeak3_Node_Server']]], + ['clientgetidsbyuid',['clientGetIdsByUid',['../class_team_speak3___node___server.html#a8aaa42f632bbf8760d1666756cd4b744',1,'TeamSpeak3_Node_Server']]], + ['clientgetnamebydbid',['clientGetNameByDbid',['../class_team_speak3___node___server.html#a149e1b1857e51c8b9ebfb0818b5bc2f7',1,'TeamSpeak3_Node_Server']]], + ['clientgetnamebyuid',['clientGetNameByUid',['../class_team_speak3___node___server.html#a0a49ab51e9518d50606299944c143a9b',1,'TeamSpeak3_Node_Server']]], + ['clientgetservergroupsbydbid',['clientGetServerGroupsByDbid',['../class_team_speak3___node___server.html#a454f7bcafaf0bf2aa4c073d5267eb2c3',1,'TeamSpeak3_Node_Server']]], + ['clientinfodb',['clientInfoDb',['../class_team_speak3___node___server.html#a3938d6ae2889a541277558b87d21991f',1,'TeamSpeak3_Node_Server']]], + ['clientkick',['clientKick',['../class_team_speak3___node___server.html#a8ddb527606200718f41d0ef06beb40b8',1,'TeamSpeak3_Node_Server']]], + ['clientlist',['clientList',['../class_team_speak3___node___channel.html#a10413785d241a007e16d961cb996606d',1,'TeamSpeak3_Node_Channel\clientList()'],['../class_team_speak3___node___channelgroup.html#a2ba7fddc0192be2c8f58a643d706780c',1,'TeamSpeak3_Node_Channelgroup\clientList()'],['../class_team_speak3___node___server.html#a194c9f52336862f3168c408c413d4279',1,'TeamSpeak3_Node_Server\clientList()'],['../class_team_speak3___node___servergroup.html#abeba8c4874c822b84705abbf40c8d14f',1,'TeamSpeak3_Node_Servergroup\clientList()']]], + ['clientlistdb',['clientListDb',['../class_team_speak3___node___server.html#ab2f0462d9820e266e91bccb67529311d',1,'TeamSpeak3_Node_Server']]], + ['clientlistreset',['clientListReset',['../class_team_speak3___node___server.html#acc00747588b6b1320c7f08f872f65fcf',1,'TeamSpeak3_Node_Server']]], + ['clientmodifydb',['clientModifyDb',['../class_team_speak3___node___server.html#acb9a0d106c96e3367b3c7484519b5cbb',1,'TeamSpeak3_Node_Server']]], + ['clientmove',['clientMove',['../class_team_speak3___node___server.html#a35aee62e8ba86d0ea80ea5cafd9c5801',1,'TeamSpeak3_Node_Server']]], + ['clientpermassign',['clientPermAssign',['../class_team_speak3___node___channel.html#a0563e887ab93925f4c6a5a7028564406',1,'TeamSpeak3_Node_Channel\clientPermAssign()'],['../class_team_speak3___node___server.html#a387de111424128521346a04cd7be8710',1,'TeamSpeak3_Node_Server\clientPermAssign()']]], + ['clientpermassignbyname',['clientPermAssignByName',['../class_team_speak3___node___channel.html#a49536704a62df7ce862c8b49a34133f1',1,'TeamSpeak3_Node_Channel']]], + ['clientpermlist',['clientPermList',['../class_team_speak3___node___channel.html#aaecc89ca9afaafa7f5a34581e44b871c',1,'TeamSpeak3_Node_Channel\clientPermList()'],['../class_team_speak3___node___server.html#aa2f308ca18a93f602af0e38155c48deb',1,'TeamSpeak3_Node_Server\clientPermList()']]], + ['clientpermremove',['clientPermRemove',['../class_team_speak3___node___channel.html#a22162cfd2c6c996a04e46acd90ff653d',1,'TeamSpeak3_Node_Channel\clientPermRemove()'],['../class_team_speak3___node___server.html#a7ff9f7bff622429c810933b53454adb3',1,'TeamSpeak3_Node_Server\clientPermRemove()']]], + ['clientpermremovebyname',['clientPermRemoveByName',['../class_team_speak3___node___channel.html#af2d943d5b6b6b9bf051195f2d4396e3f',1,'TeamSpeak3_Node_Channel']]], + ['clientpoke',['clientPoke',['../class_team_speak3___node___server.html#a2bd6ce432c9dd08e550289b1cc0a16bd',1,'TeamSpeak3_Node_Server']]], + ['clientsetchannelgroup',['clientSetChannelGroup',['../class_team_speak3___node___server.html#a101d9234082d47f359ea39ca7bc1c0bf',1,'TeamSpeak3_Node_Server']]], + ['codec',['codec',['../class_team_speak3___helper___convert.html#a0bf98d2926ac8d174cd41934bcc2d506',1,'TeamSpeak3_Helper_Convert']]], + ['complaintcreate',['complaintCreate',['../class_team_speak3___node___server.html#a7d683c16389f1b1d72e38b783638c3c4',1,'TeamSpeak3_Node_Server']]], + ['complaintdelete',['complaintDelete',['../class_team_speak3___node___server.html#a72cfe9527297ec1e6536b9c073c0858b',1,'TeamSpeak3_Node_Server']]], + ['complaintlist',['complaintList',['../class_team_speak3___node___server.html#af44418304dbbe76dca50be38e7e394de',1,'TeamSpeak3_Node_Server']]], + ['complaintlistclear',['complaintListClear',['../class_team_speak3___node___server.html#a2a6d384cf01078cb72cd9f9670cebb57',1,'TeamSpeak3_Node_Server']]], + ['connect',['connect',['../class_team_speak3___transport___abstract.html#a496c0c50f4a9921e86b0b13798b4f157',1,'TeamSpeak3_Transport_Abstract\connect()'],['../class_team_speak3___transport___t_c_p.html#a86ca484fe7ecbde46d21757208aa67cb',1,'TeamSpeak3_Transport_TCP\connect()'],['../class_team_speak3___transport___u_d_p.html#a38cf41fc697a8a79220b8dcc8307faef',1,'TeamSpeak3_Transport_UDP\connect()']]], + ['connectioninfo',['connectionInfo',['../class_team_speak3___node___server.html#a4c13644c69f768e0a449d5d0b7bcd1a9',1,'TeamSpeak3_Node_Server']]], + ['contains',['contains',['../class_team_speak3___helper___string.html#add153e99069f5f3a34f45c236f9e1bb3',1,'TeamSpeak3_Helper_String']]], + ['copy',['copy',['../class_team_speak3___node___channelgroup.html#a338c5784a7d15055685065da491bcc1b',1,'TeamSpeak3_Node_Channelgroup\copy()'],['../class_team_speak3___node___servergroup.html#a983da0dbb46af94f89732173f0cb0cfc',1,'TeamSpeak3_Node_Servergroup\copy()']]], + ['count',['count',['../class_team_speak3___helper___string.html#a832580003f635cae85236bf7602fd24f',1,'TeamSpeak3_Helper_String\count()'],['../class_team_speak3___node___abstract.html#ad22d04a2800ae672f6117de3afb0e9c4',1,'TeamSpeak3_Node_Abstract\count()']]], + ['current',['current',['../class_team_speak3___helper___string.html#aeefa9ad9fcadd61a3ecf1d30cbed9efe',1,'TeamSpeak3_Helper_String\current()'],['../class_team_speak3___node___abstract.html#a1c78dbb54df73f8c5dabe41ebd476207',1,'TeamSpeak3_Node_Abstract\current()']]], + ['custominfo',['customInfo',['../class_team_speak3___node___client.html#adab4e78a0ba4366b8d73d50993bbec49',1,'TeamSpeak3_Node_Client\customInfo()'],['../class_team_speak3___node___server.html#ab607dab98be8ad823c6ea639045ceadd',1,'TeamSpeak3_Node_Server\customInfo()']]], + ['customsearch',['customSearch',['../class_team_speak3___node___server.html#ac81f6d268d0bd65d62adf54fdfb6f74c',1,'TeamSpeak3_Node_Server']]] +]; diff --git a/lib/docs/html/search/functions_64.html b/lib/docs/html/search/functions_64.html new file mode 100644 index 0000000..ba9869c --- /dev/null +++ b/lib/docs/html/search/functions_64.html @@ -0,0 +1,26 @@ + + + + + + + + + +
+
Loading...
+
+ +
Searching...
+
No Matches
+ +
+ + diff --git a/lib/docs/html/search/functions_64.js b/lib/docs/html/search/functions_64.js new file mode 100644 index 0000000..55588d4 --- /dev/null +++ b/lib/docs/html/search/functions_64.js @@ -0,0 +1,12 @@ +var searchData= +[ + ['decipher',['decipher',['../class_team_speak3___helper___crypt.html#a7c0b9b5e2877bed5ad1147e46d44ee43',1,'TeamSpeak3_Helper_Crypt']]], + ['decrypt',['decrypt',['../class_team_speak3___helper___crypt.html#a38a8da0e26045f49f76c718aaaceab60',1,'TeamSpeak3_Helper_Crypt']]], + ['delete',['delete',['../class_team_speak3___node___channel.html#a1dde358f63d3ac8c2298fd21142dac27',1,'TeamSpeak3_Node_Channel\delete()'],['../class_team_speak3___node___channelgroup.html#a1e4959ff64841c33000f63b36eced974',1,'TeamSpeak3_Node_Channelgroup\delete()'],['../class_team_speak3___node___server.html#ac159e3dff47e2dca9b7baabcd75265a7',1,'TeamSpeak3_Node_Server\delete()'],['../class_team_speak3___node___servergroup.html#a1e6e04273af312581c41532a8d7619a7',1,'TeamSpeak3_Node_Servergroup\delete()']]], + ['deletedb',['deleteDb',['../class_team_speak3___node___client.html#a0ee114d931783274bcbb344c8beccf91',1,'TeamSpeak3_Node_Client']]], + ['delstorage',['delStorage',['../class_team_speak3___node___abstract.html#afbed20ee78d7e5a38097078dd91e70fd',1,'TeamSpeak3_Node_Abstract']]], + ['dircreate',['dirCreate',['../class_team_speak3___node___channel.html#ab34961db39c511984fc05c4b28517596',1,'TeamSpeak3_Node_Channel']]], + ['disconnect',['disconnect',['../class_team_speak3___transport___abstract.html#a87c023f67f2467aaf865dba35285b4d8',1,'TeamSpeak3_Transport_Abstract\disconnect()'],['../class_team_speak3___transport___t_c_p.html#ac2c0b51f286a8f71aa04bf73555b75c6',1,'TeamSpeak3_Transport_TCP\disconnect()'],['../class_team_speak3___transport___u_d_p.html#ab47ad7c8e213167430b4a495ec9f7b21',1,'TeamSpeak3_Transport_UDP\disconnect()']]], + ['download',['download',['../class_team_speak3___adapter___file_transfer.html#a731600b40702660abb06dcbcbc791d50',1,'TeamSpeak3_Adapter_FileTransfer']]], + ['dump',['dump',['../class_team_speak3.html#a152db9cb030dfc497e0b276ee312654d',1,'TeamSpeak3']]] +]; diff --git a/lib/docs/html/search/functions_65.html b/lib/docs/html/search/functions_65.html new file mode 100644 index 0000000..141d940 --- /dev/null +++ b/lib/docs/html/search/functions_65.html @@ -0,0 +1,26 @@ + + + + + + + + + +
+
Loading...
+
+ +
Searching...
+
No Matches
+ +
+ + diff --git a/lib/docs/html/search/functions_65.js b/lib/docs/html/search/functions_65.js new file mode 100644 index 0000000..7365566 --- /dev/null +++ b/lib/docs/html/search/functions_65.js @@ -0,0 +1,9 @@ +var searchData= +[ + ['emit',['emit',['../class_team_speak3___helper___signal.html#a26e8fc61637d146b0347b7c9e09587ab',1,'TeamSpeak3_Helper_Signal']]], + ['encipher',['encipher',['../class_team_speak3___helper___crypt.html#a0795a29c94afaf2e8642d7b9fe8aa0e7',1,'TeamSpeak3_Helper_Crypt']]], + ['encrypt',['encrypt',['../class_team_speak3___helper___crypt.html#a23ce290df045657a686c2802fe826a74',1,'TeamSpeak3_Helper_Crypt']]], + ['endswith',['endsWith',['../class_team_speak3___helper___string.html#ab368725237c5ebff2116de6a8ba36c59',1,'TeamSpeak3_Helper_String']]], + ['escape',['escape',['../class_team_speak3___helper___string.html#ad1a297278673af0f99df8c8e2af09e9a',1,'TeamSpeak3_Helper_String']]], + ['execute',['execute',['../class_team_speak3___node___abstract.html#af6811efc5065b8aadfd6792334ea6977',1,'TeamSpeak3_Node_Abstract']]] +]; diff --git a/lib/docs/html/search/functions_66.html b/lib/docs/html/search/functions_66.html new file mode 100644 index 0000000..fece19d --- /dev/null +++ b/lib/docs/html/search/functions_66.html @@ -0,0 +1,26 @@ + + + + + + + + + +
+
Loading...
+
+ +
Searching...
+
No Matches
+ +
+ + diff --git a/lib/docs/html/search/functions_66.js b/lib/docs/html/search/functions_66.js new file mode 100644 index 0000000..ddc231d --- /dev/null +++ b/lib/docs/html/search/functions_66.js @@ -0,0 +1,23 @@ +var searchData= +[ + ['factory',['factory',['../class_team_speak3___helper___string.html#a475f5a602d67dd0568fb8c86352c88a0',1,'TeamSpeak3_Helper_String\factory()'],['../class_team_speak3.html#aed403cdb559cae556a94a0d9823bcaf4',1,'TeamSpeak3\factory()']]], + ['fetcherror',['fetchError',['../class_team_speak3___adapter___server_query___reply.html#a1f7f7344c8059b9b591e05ea30b352ad',1,'TeamSpeak3_Adapter_ServerQuery_Reply']]], + ['fetchnodeinfo',['fetchNodeInfo',['../class_team_speak3___node___abstract.html#a10158df40ca8030d5d0e3c464154b988',1,'TeamSpeak3_Node_Abstract\fetchNodeInfo()'],['../class_team_speak3___node___channel.html#a0309efb6b6ba7612c0298edb3f411fd3',1,'TeamSpeak3_Node_Channel\fetchNodeInfo()'],['../class_team_speak3___node___client.html#ac3e560bcb715c46919000cd1820f7382',1,'TeamSpeak3_Node_Client\fetchNodeInfo()'],['../class_team_speak3___node___host.html#af215b492a79130730f05b1ce52cc1212',1,'TeamSpeak3_Node_Host\fetchNodeInfo()'],['../class_team_speak3___node___server.html#a1cf6d79bee67d387752af85f28901dac',1,'TeamSpeak3_Node_Server\fetchNodeInfo()']]], + ['fetchnodelist',['fetchNodeList',['../class_team_speak3___node___abstract.html#ab78c8a0a0bcd7458d310a9e05f012409',1,'TeamSpeak3_Node_Abstract\fetchNodeList()'],['../class_team_speak3___node___channel.html#a81bb1307281b161103c7578cb27883cb',1,'TeamSpeak3_Node_Channel\fetchNodeList()'],['../class_team_speak3___node___channelgroup.html#aa4c0c3d9766097b60e5a6e2a4937bd7c',1,'TeamSpeak3_Node_Channelgroup\fetchNodeList()'],['../class_team_speak3___node___host.html#ad672c568344dc5941225d92a87a537e2',1,'TeamSpeak3_Node_Host\fetchNodeList()'],['../class_team_speak3___node___server.html#a3ef412bad6efe2bde9d5ebcf17a7e113',1,'TeamSpeak3_Node_Server\fetchNodeList()'],['../class_team_speak3___node___servergroup.html#a5e3cbc007fd9ae9c984fa0a096bf15dd',1,'TeamSpeak3_Node_Servergroup\fetchNodeList()']]], + ['fetchobject',['fetchObject',['../class_team_speak3___viewer___html.html#a52d2ea098679874eb120da38727324c5',1,'TeamSpeak3_Viewer_Html\fetchObject()'],['../interface_team_speak3___viewer___interface.html#ad06c809a76558069871ba9aa16f66e79',1,'TeamSpeak3_Viewer_Interface\fetchObject()'],['../class_team_speak3___viewer___text.html#a8fb29a4ed7e5a605bd59bed82fd912bc',1,'TeamSpeak3_Viewer_Text\fetchObject()']]], + ['fetchpermissioncats',['fetchPermissionCats',['../class_team_speak3___node___host.html#a48619bb6662f66495e7b16378d3ff914',1,'TeamSpeak3_Node_Host']]], + ['fetchpermissionlist',['fetchPermissionList',['../class_team_speak3___node___host.html#a505bafb855213b5b46de201237ed0c9f',1,'TeamSpeak3_Node_Host']]], + ['fetchreply',['fetchReply',['../class_team_speak3___adapter___server_query___reply.html#ab6891908584fcfb9cd14bda568eeb51d',1,'TeamSpeak3_Adapter_ServerQuery_Reply']]], + ['filedelete',['fileDelete',['../class_team_speak3___node___channel.html#a795adb2d08b347a25aef05ecb6d1388b',1,'TeamSpeak3_Node_Channel']]], + ['fileinfo',['fileInfo',['../class_team_speak3___node___channel.html#af80055c43aa221cfc9fb77ebe909e883',1,'TeamSpeak3_Node_Channel']]], + ['filelist',['fileList',['../class_team_speak3___node___channel.html#a36efedde38452a8f789d75da1ba57d27',1,'TeamSpeak3_Node_Channel']]], + ['filerename',['fileRename',['../class_team_speak3___node___channel.html#a0a91f8d1922a0987d619b2b999b20ed7',1,'TeamSpeak3_Node_Channel']]], + ['filteralnum',['filterAlnum',['../class_team_speak3___helper___string.html#a9bf5a109e41a1fd7dfb158a5fdd682b1',1,'TeamSpeak3_Helper_String']]], + ['filteralpha',['filterAlpha',['../class_team_speak3___helper___string.html#a02f3181ad499d5c501aa53e797453e9c',1,'TeamSpeak3_Helper_String']]], + ['filterdigits',['filterDigits',['../class_team_speak3___helper___string.html#a8c80e5bb8f27193646a53d404bf94887',1,'TeamSpeak3_Helper_String']]], + ['filterlist',['filterList',['../class_team_speak3___node___abstract.html#ad826df3c71029ca48839dbe9aa3559b8',1,'TeamSpeak3_Node_Abstract']]], + ['findfirst',['findFirst',['../class_team_speak3___helper___string.html#ad848ed7a9e1f42a5f5dfcbbce9b3e29e',1,'TeamSpeak3_Helper_String']]], + ['findlast',['findLast',['../class_team_speak3___helper___string.html#a87beac9c37d88273dddc7d4fb0da7422',1,'TeamSpeak3_Helper_String']]], + ['frombase64',['fromBase64',['../class_team_speak3___helper___string.html#ae48a7462ffd80cca1487685e4042c4c3',1,'TeamSpeak3_Helper_String']]], + ['fromhex',['fromHex',['../class_team_speak3___helper___char.html#a3b16631681c415d78734a3b59c2a51ed',1,'TeamSpeak3_Helper_Char\fromHex()'],['../class_team_speak3___helper___string.html#a74f8c216773fe9876fbf60ee02e643ca',1,'TeamSpeak3_Helper_String\fromHex()']]] +]; diff --git a/lib/docs/html/search/functions_67.html b/lib/docs/html/search/functions_67.html new file mode 100644 index 0000000..ac7e6c4 --- /dev/null +++ b/lib/docs/html/search/functions_67.html @@ -0,0 +1,26 @@ + + + + + + + + + +
+
Loading...
+
+ +
Searching...
+
No Matches
+ +
+ + diff --git a/lib/docs/html/search/functions_67.js b/lib/docs/html/search/functions_67.js new file mode 100644 index 0000000..33e931d --- /dev/null +++ b/lib/docs/html/search/functions_67.js @@ -0,0 +1,91 @@ +var searchData= +[ + ['get',['get',['../class_team_speak3___helper___profiler.html#abac13a094b11882d102d24857dd2f678',1,'TeamSpeak3_Helper_Profiler']]], + ['getadapter',['getAdapter',['../class_team_speak3___node___host.html#a3e2fffb397ede4f85bf1d97ad309874d',1,'TeamSpeak3_Node_Host\getAdapter()'],['../class_team_speak3___transport___abstract.html#a4ccffaa9c25155aee837d4e6dee8a037',1,'TeamSpeak3_Transport_Abstract\getAdapter()']]], + ['getadapterhost',['getAdapterHost',['../class_team_speak3___node___host.html#a7496a4bd1c575563b502e21b4c866415',1,'TeamSpeak3_Node_Host']]], + ['getadaptername',['getAdapterName',['../class_team_speak3.html#a222891a8da55aa7c6e7e4cba35d4a8c1',1,'TeamSpeak3']]], + ['getadapterport',['getAdapterPort',['../class_team_speak3___node___host.html#ab7453505efd28bab00fd4d72ded0c7ba',1,'TeamSpeak3_Node_Host']]], + ['getadaptertype',['getAdapterType',['../class_team_speak3___transport___abstract.html#a4cbdd67c5590f756a4fb5ddd5d53bbe1',1,'TeamSpeak3_Transport_Abstract']]], + ['getbaseuri',['getBaseUri',['../class_team_speak3___helper___uri.html#ad7159eaf5d227732ae7b3361dfbf0bfc',1,'TeamSpeak3_Helper_Uri']]], + ['getcallbackhash',['getCallbackHash',['../class_team_speak3___helper___signal.html#ada301980bc0f9b8f310e8656972b6a35',1,'TeamSpeak3_Helper_Signal']]], + ['getchildren',['getChildren',['../class_team_speak3___node___abstract.html#a4b9dee48bb72f0eab8b9d4b0ea25c5f4',1,'TeamSpeak3_Node_Abstract']]], + ['getclass',['getClass',['../class_team_speak3___node___abstract.html#af6e1416ad2e568f48ff0d85b15b2a673',1,'TeamSpeak3_Node_Abstract']]], + ['getclientrev',['getClientRev',['../class_team_speak3___adapter___update.html#af42f2e98ffbecdbc375304737a54a4a0',1,'TeamSpeak3_Adapter_Update']]], + ['getclientversion',['getClientVersion',['../class_team_speak3___adapter___update.html#aa1c205259b8912526ad533ed17acd564',1,'TeamSpeak3_Adapter_Update']]], + ['getclones',['getClones',['../class_team_speak3___node___client.html#a1b028c8df6a52433a3e6b2f8ab302553',1,'TeamSpeak3_Node_Client']]], + ['getcommandstring',['getCommandString',['../class_team_speak3___adapter___server_query___reply.html#a9084e31d5fe7e0dcc7a4247662578935',1,'TeamSpeak3_Adapter_ServerQuery_Reply']]], + ['getconfig',['getConfig',['../class_team_speak3___transport___abstract.html#ac9bec37a13a1483833c80ffd008d4596',1,'TeamSpeak3_Transport_Abstract']]], + ['getcontainerclass',['getContainerClass',['../class_team_speak3___viewer___html.html#a1264b2938ad89a3688b6b86f81d91640',1,'TeamSpeak3_Viewer_Html']]], + ['getcontainerident',['getContainerIdent',['../class_team_speak3___viewer___html.html#a85e30363f2ec479353bc9101f42dab87',1,'TeamSpeak3_Viewer_Html']]], + ['getcontainersummary',['getContainerSummary',['../class_team_speak3___viewer___html.html#aca40f5b5b2a6f778e7913a9ed203a316',1,'TeamSpeak3_Viewer_Html']]], + ['getcorpusclass',['getCorpusClass',['../class_team_speak3___viewer___html.html#a2d994d1abe066712d74d9bdef2f1a579',1,'TeamSpeak3_Viewer_Html']]], + ['getcorpusicon',['getCorpusIcon',['../class_team_speak3___viewer___html.html#a89ad59f4d773c0ad5d99e6fd45f27d99',1,'TeamSpeak3_Viewer_Html\getCorpusIcon()'],['../class_team_speak3___viewer___text.html#a7bf9b2137c14dad13c8fd2e2df33615c',1,'TeamSpeak3_Viewer_Text\getCorpusIcon()']]], + ['getcorpusname',['getCorpusName',['../class_team_speak3___viewer___html.html#a3b70618ebebf0ad552f983340d72bacb',1,'TeamSpeak3_Viewer_Html\getCorpusName()'],['../class_team_speak3___viewer___text.html#a8d6fcf3812bf72c81214263da3e6f555',1,'TeamSpeak3_Viewer_Text\getCorpusName()']]], + ['getcorpustitle',['getCorpusTitle',['../class_team_speak3___viewer___html.html#afd13c192016d147b8fc43284395d4140',1,'TeamSpeak3_Viewer_Html']]], + ['getdata',['getData',['../class_team_speak3___adapter___server_query___event.html#a476acf6ce132b0a3d0b4fc9b22e7405e',1,'TeamSpeak3_Adapter_ServerQuery_Event']]], + ['geterrorproperty',['getErrorProperty',['../class_team_speak3___adapter___server_query___reply.html#a1a681042ce8d5d653d77a1f7db8cdc42',1,'TeamSpeak3_Adapter_ServerQuery_Reply']]], + ['getescapepatterns',['getEscapePatterns',['../class_team_speak3.html#a09e261dfec76e4be66f3fa031a33e12f',1,'TeamSpeak3']]], + ['getexcludequeryclients',['getExcludeQueryClients',['../class_team_speak3___node___host.html#aed2480265ca34df1548b35b95f4ec3d1',1,'TeamSpeak3_Node_Host']]], + ['getfilepath',['getFilePath',['../class_team_speak3.html#a33bc8003224e5d95c46b00ccb1019cd7',1,'TeamSpeak3']]], + ['getfqdnparts',['getFQDNParts',['../class_team_speak3___helper___uri.html#a492df27bfd3856a754ab6aa146731813',1,'TeamSpeak3_Helper_Uri']]], + ['getfragment',['getFragment',['../class_team_speak3___helper___uri.html#ad32a11cb34f078847033407ba3b95eb7',1,'TeamSpeak3_Helper_Uri']]], + ['gethandlers',['getHandlers',['../class_team_speak3___helper___signal.html#af414b1e8d18081c374a852c12c0b5cb6',1,'TeamSpeak3_Helper_Signal']]], + ['gethost',['getHost',['../class_team_speak3___adapter___server_query.html#a948c56497ac50d138169101f4b7b97b8',1,'TeamSpeak3_Adapter_ServerQuery\getHost()'],['../class_team_speak3___helper___uri.html#aca4bbb23cafa5833af4565d23f0b57c6',1,'TeamSpeak3_Helper_Uri\getHost()']]], + ['gethostparam',['getHostParam',['../class_team_speak3___helper___uri.html#a238c6f9d42bf87d768518a17474c9e3c',1,'TeamSpeak3_Helper_Uri']]], + ['gethosturi',['getHostUri',['../class_team_speak3___helper___uri.html#a68713e4238661a758b2f8f18691d05b3',1,'TeamSpeak3_Helper_Uri']]], + ['geticon',['getIcon',['../class_team_speak3___node___abstract.html#a84162e45950d55298791eb5771fd315d',1,'TeamSpeak3_Node_Abstract\getIcon()'],['../class_team_speak3___node___channel.html#a8cc6d7499a4556e2cfa42d8a9f9b63c0',1,'TeamSpeak3_Node_Channel\getIcon()'],['../class_team_speak3___node___channelgroup.html#a9c90aaa04b378dab3f24eb297a9951d3',1,'TeamSpeak3_Node_Channelgroup\getIcon()'],['../class_team_speak3___node___client.html#a0ba0213562c9ca67efa1507076ca3079',1,'TeamSpeak3_Node_Client\getIcon()'],['../class_team_speak3___node___host.html#aa158b0568f696c2b5cb780c24b8d1410',1,'TeamSpeak3_Node_Host\getIcon()'],['../class_team_speak3___node___server.html#aa2d9831041f8a981349f4a5b92729efe',1,'TeamSpeak3_Node_Server\getIcon()'],['../class_team_speak3___node___servergroup.html#ac0cac15d7fa05e6685315acdab772750',1,'TeamSpeak3_Node_Servergroup\getIcon()']]], + ['getid',['getId',['../class_team_speak3___node___abstract.html#a4a0a5545abc2460d1d9b3d6b52d07cbe',1,'TeamSpeak3_Node_Abstract']]], + ['getimage',['getImage',['../class_team_speak3___viewer___html.html#a74577ba126405e719950f41278d23137',1,'TeamSpeak3_Viewer_Html']]], + ['getinfo',['getInfo',['../class_team_speak3___node___abstract.html#af63ae54f10c02ec6b1033425f795fef4',1,'TeamSpeak3_Node_Abstract']]], + ['getinstance',['getInstance',['../class_team_speak3___helper___signal.html#af156036673730a599c10c8cbfd5e50bf',1,'TeamSpeak3_Helper_Signal']]], + ['getlevel',['getLevel',['../class_team_speak3___node___channel.html#a2f42245368e047bee70760ecb1aaada2',1,'TeamSpeak3_Node_Channel']]], + ['getloadclientlistfirst',['getLoadClientlistFirst',['../class_team_speak3___node___host.html#afcdeba4b4a628d5a5d093ccad862681f',1,'TeamSpeak3_Node_Host']]], + ['getmemusage',['getMemUsage',['../class_team_speak3___helper___profiler___timer.html#adaeee8c828e9f9b5408f92399184b934',1,'TeamSpeak3_Helper_Profiler_Timer']]], + ['getmessage',['getMessage',['../class_team_speak3___adapter___server_query___event.html#aec6954f96cbc4a229348ae31f9b289e7',1,'TeamSpeak3_Adapter_ServerQuery_Event']]], + ['getmetadata',['getMetaData',['../class_team_speak3___transport___abstract.html#a9d3e42ebfb02f2f9b4af8e80f2209b28',1,'TeamSpeak3_Transport_Abstract']]], + ['getnotifyevents',['getNotifyEvents',['../class_team_speak3___adapter___server_query___reply.html#a2810d0ec7a80446851fd9af783eaadb1',1,'TeamSpeak3_Adapter_ServerQuery_Reply']]], + ['getparent',['getParent',['../class_team_speak3___node___abstract.html#a44618fb948562e89515330e65d08da9a',1,'TeamSpeak3_Node_Abstract']]], + ['getpass',['getPass',['../class_team_speak3___helper___uri.html#a6d9477823c4f20b2daa98a9153326463',1,'TeamSpeak3_Helper_Uri']]], + ['getpath',['getPath',['../class_team_speak3___helper___uri.html#a848e4a9bd0caa493f064b98cf4e24906',1,'TeamSpeak3_Helper_Uri']]], + ['getpathway',['getPathway',['../class_team_speak3___node___channel.html#aecd920dea71369198d448f808c9b3810',1,'TeamSpeak3_Node_Channel']]], + ['getport',['getPort',['../class_team_speak3___helper___uri.html#aa7b59f4a3528141842fcdda1af6920cc',1,'TeamSpeak3_Helper_Uri']]], + ['getpredefinedqueryname',['getPredefinedQueryName',['../class_team_speak3___node___host.html#ac61eb4d34ca8848758aad2721eb9083f',1,'TeamSpeak3_Node_Host']]], + ['getprefix',['getPrefix',['../class_team_speak3___viewer___html.html#a835b464739dd5af836b1b9d4f4b5d4d8',1,'TeamSpeak3_Viewer_Html\getPrefix()'],['../class_team_speak3___viewer___text.html#acd7d9ebbae3700e38b0bcb6767728936',1,'TeamSpeak3_Viewer_Text\getPrefix()']]], + ['getprefixclass',['getPrefixClass',['../class_team_speak3___viewer___html.html#ad929c3202591daf32252e51637487d7b',1,'TeamSpeak3_Viewer_Html']]], + ['getprofiler',['getProfiler',['../class_team_speak3___adapter___abstract.html#ab1bd002b22a8121e8efa5ab4ccd36fa5',1,'TeamSpeak3_Adapter_Abstract']]], + ['getproperty',['getProperty',['../class_team_speak3___node___abstract.html#a585728537b56194aeab30b0316126b89',1,'TeamSpeak3_Node_Abstract']]], + ['getquery',['getQuery',['../class_team_speak3___helper___uri.html#a0a56de9c6bd0fbf00098dc6b7db1840c',1,'TeamSpeak3_Helper_Uri']]], + ['getquerycount',['getQueryCount',['../class_team_speak3___adapter___server_query.html#a20e3c73543f989c2955cbcab6069c1a0',1,'TeamSpeak3_Adapter_ServerQuery']]], + ['getquerylasttimestamp',['getQueryLastTimestamp',['../class_team_speak3___adapter___server_query.html#a1c156818989d1377763503849dd3d933',1,'TeamSpeak3_Adapter_ServerQuery']]], + ['getqueryruntime',['getQueryRuntime',['../class_team_speak3___adapter___server_query.html#afaf3a140c05ee3bb840a4f20c050cfaa',1,'TeamSpeak3_Adapter_ServerQuery']]], + ['getqueryvar',['getQueryVar',['../class_team_speak3___helper___uri.html#a7e23bd80c39a9cf8b286f08cf177331e',1,'TeamSpeak3_Helper_Uri']]], + ['getrev',['getRev',['../class_team_speak3___adapter___update.html#aacf23e72f0978884a9b44c7e6679a06d',1,'TeamSpeak3_Adapter_Update\getRev()'],['../class_team_speak3___node___client.html#a4a941f045f697ed0ed494e9d785b037b',1,'TeamSpeak3_Node_Client\getRev()']]], + ['getrowclass',['getRowClass',['../class_team_speak3___viewer___html.html#a766b7745f531b280aad2bfc6754d5134',1,'TeamSpeak3_Viewer_Html']]], + ['getruntime',['getRuntime',['../class_team_speak3___helper___profiler___timer.html#a40449e19407ff9b99cadd30be99a1763',1,'TeamSpeak3_Helper_Profiler_Timer']]], + ['getscheme',['getScheme',['../class_team_speak3___helper___uri.html#af47ad30cc5c9a600ee2a6c7de6e1aa83',1,'TeamSpeak3_Helper_Uri']]], + ['getsender',['getSender',['../class_team_speak3___exception.html#ae7d4b369dd11d3cf56d120acae0cf1db',1,'TeamSpeak3_Exception']]], + ['getserverrev',['getServerRev',['../class_team_speak3___adapter___update.html#a3e1f0776fc33efb9ac61336ae59faa80',1,'TeamSpeak3_Adapter_Update']]], + ['getserverversion',['getServerVersion',['../class_team_speak3___adapter___update.html#a116864fefa2a1cf7fb5fef1847320e60',1,'TeamSpeak3_Adapter_Update']]], + ['getsessparam',['getSessParam',['../class_team_speak3___helper___uri.html#ae1f042efd1dce1734bac691a147edc00',1,'TeamSpeak3_Helper_Uri']]], + ['getsignals',['getSignals',['../class_team_speak3___helper___signal.html#aa690a091efef853c4a47d7b7e7363c03',1,'TeamSpeak3_Helper_Signal']]], + ['getstorage',['getStorage',['../class_team_speak3___node___abstract.html#a5a6888304aca8d5f12fecb460b0ef6d2',1,'TeamSpeak3_Node_Abstract']]], + ['getstream',['getStream',['../class_team_speak3___transport___abstract.html#a847453109ae2d41b4b119aa802f05e64',1,'TeamSpeak3_Transport_Abstract']]], + ['getsuffixclass',['getSuffixClass',['../class_team_speak3___viewer___html.html#a5538c134542e5edae2a0a8607241d63f',1,'TeamSpeak3_Viewer_Html']]], + ['getsuffixflag',['getSuffixFlag',['../class_team_speak3___viewer___html.html#ac4ba12c86e5f692f1bcabee7741c9efb',1,'TeamSpeak3_Viewer_Html']]], + ['getsuffixicon',['getSuffixIcon',['../class_team_speak3___viewer___html.html#a60f60532cd44e2e259e3ed120208ce2f',1,'TeamSpeak3_Viewer_Html']]], + ['getsuffixiconchannel',['getSuffixIconChannel',['../class_team_speak3___viewer___html.html#ac7d4636a787439c500691818edeae752',1,'TeamSpeak3_Viewer_Html']]], + ['getsuffixiconclient',['getSuffixIconClient',['../class_team_speak3___viewer___html.html#a9d56bf81f140772079751f2361b3ffc2',1,'TeamSpeak3_Viewer_Html']]], + ['getsuffixiconserver',['getSuffixIconServer',['../class_team_speak3___viewer___html.html#a1c3ac91d48f71be186f661dee7158d64',1,'TeamSpeak3_Viewer_Html']]], + ['getsymbol',['getSymbol',['../class_team_speak3___node___abstract.html#aaa53c7a8efa4739c50619e5b52a176e5',1,'TeamSpeak3_Node_Abstract\getSymbol()'],['../class_team_speak3___node___channel.html#abbfb1e4be497e07c1a25e9bd6047035a',1,'TeamSpeak3_Node_Channel\getSymbol()'],['../class_team_speak3___node___channelgroup.html#ae0bc51c79f86fc58f7900d67fe86ae8a',1,'TeamSpeak3_Node_Channelgroup\getSymbol()'],['../class_team_speak3___node___client.html#a66d8bd549b7add92ad2e0046a9fa9889',1,'TeamSpeak3_Node_Client\getSymbol()'],['../class_team_speak3___node___host.html#a4ac8fb7a2f5b33ff5a0c0ca9eedfe642',1,'TeamSpeak3_Node_Host\getSymbol()'],['../class_team_speak3___node___server.html#a1cc7958a2d747a65c877408a2e0772f2',1,'TeamSpeak3_Node_Server\getSymbol()'],['../class_team_speak3___node___servergroup.html#a40e50431a4e53f802868312ac8b93cf7',1,'TeamSpeak3_Node_Servergroup\getSymbol()']]], + ['gettransport',['getTransport',['../class_team_speak3___adapter___abstract.html#a538e98e6dcc6a2ad7fdcb4913f6f7c52',1,'TeamSpeak3_Adapter_Abstract']]], + ['gettransporthost',['getTransportHost',['../class_team_speak3___adapter___abstract.html#adcf5e760b6d6d3e42f11d8b1bc5d87cc',1,'TeamSpeak3_Adapter_Abstract']]], + ['gettransportport',['getTransportPort',['../class_team_speak3___adapter___abstract.html#a5eb0b19787ec6f719d8f19bcd7182461',1,'TeamSpeak3_Adapter_Abstract']]], + ['gettype',['getType',['../class_team_speak3___adapter___server_query___event.html#aba87307c13aaa64c3c91e4fa398517ef',1,'TeamSpeak3_Adapter_ServerQuery_Event']]], + ['getuniqueid',['getUniqueId',['../class_team_speak3___node___abstract.html#a4a68d64cff73a4f67859e28a89b3c511',1,'TeamSpeak3_Node_Abstract\getUniqueId()'],['../class_team_speak3___node___channel.html#a44bfe5d3b60bf1126fe64a3ab26d9b97',1,'TeamSpeak3_Node_Channel\getUniqueId()'],['../class_team_speak3___node___channelgroup.html#a9a64eeb8d1df8872244cd8875460047a',1,'TeamSpeak3_Node_Channelgroup\getUniqueId()'],['../class_team_speak3___node___client.html#a62a1fed92852d1b91b7a5f6036a867f3',1,'TeamSpeak3_Node_Client\getUniqueId()'],['../class_team_speak3___node___host.html#a901cadb5fd29aee73d4e86bb92db58c6',1,'TeamSpeak3_Node_Host\getUniqueId()'],['../class_team_speak3___node___server.html#a175e7b6d81e8e6c363df445874e5932b',1,'TeamSpeak3_Node_Server\getUniqueId()'],['../class_team_speak3___node___servergroup.html#a075a1b37311c84468abae9e4cfcbae08',1,'TeamSpeak3_Node_Servergroup\getUniqueId()']]], + ['getuseofflineasvirtual',['getUseOfflineAsVirtual',['../class_team_speak3___node___host.html#a8ae0e012a6b44b8957ee2266eff8df9b',1,'TeamSpeak3_Node_Host']]], + ['getuser',['getUser',['../class_team_speak3___helper___uri.html#ab685d3e39922aa170d2d6b06a6304084',1,'TeamSpeak3_Helper_Uri']]], + ['getuserparam',['getUserParam',['../class_team_speak3___helper___uri.html#acfcb54ee4aedfaca04b09151167041cf',1,'TeamSpeak3_Helper_Uri']]], + ['getversion',['getVersion',['../class_team_speak3___adapter___update.html#ac25205f46f31a8de30454d499e6aaa04',1,'TeamSpeak3_Adapter_Update']]], + ['getviewer',['getViewer',['../class_team_speak3___node___abstract.html#a3d3f27dab5569edf3a737be080e7c8bc',1,'TeamSpeak3_Node_Abstract']]], + ['grouptype',['groupType',['../class_team_speak3___helper___convert.html#a0ae2e850f20e8f33bdf83bd7f9975f49',1,'TeamSpeak3_Helper_Convert']]] +]; diff --git a/lib/docs/html/search/functions_68.html b/lib/docs/html/search/functions_68.html new file mode 100644 index 0000000..ae1417f --- /dev/null +++ b/lib/docs/html/search/functions_68.html @@ -0,0 +1,26 @@ + + + + + + + + + +
+
Loading...
+
+ +
Searching...
+
No Matches
+ +
+ + diff --git a/lib/docs/html/search/functions_68.js b/lib/docs/html/search/functions_68.js new file mode 100644 index 0000000..78fd589 --- /dev/null +++ b/lib/docs/html/search/functions_68.js @@ -0,0 +1,15 @@ +var searchData= +[ + ['haschildren',['hasChildren',['../class_team_speak3___node___abstract.html#a7769506879dac3170344d8e59218b644',1,'TeamSpeak3_Node_Abstract']]], + ['hasfragment',['hasFragment',['../class_team_speak3___helper___uri.html#a91539b2925a03129637bd3f3efec42a6',1,'TeamSpeak3_Helper_Uri']]], + ['hashandlers',['hasHandlers',['../class_team_speak3___helper___signal.html#a840339183812e5e51d9c3b1beb9d1fd3',1,'TeamSpeak3_Helper_Signal']]], + ['hashost',['hasHost',['../class_team_speak3___helper___uri.html#adb9f6e1df57af8b47e94d6d581475eb1',1,'TeamSpeak3_Helper_Uri']]], + ['hasnext',['hasNext',['../class_team_speak3___node___abstract.html#ad9aee4153360fd8139f6b0d68efff56f',1,'TeamSpeak3_Node_Abstract']]], + ['haspass',['hasPass',['../class_team_speak3___helper___uri.html#aa496602a698ed5690d48ec4326f8c793',1,'TeamSpeak3_Helper_Uri']]], + ['haspath',['hasPath',['../class_team_speak3___helper___uri.html#a0f72daa8e78e5cc5ca345af3602cc6a1',1,'TeamSpeak3_Helper_Uri']]], + ['hasport',['hasPort',['../class_team_speak3___helper___uri.html#aada4ff6119919a87251a4569b54f3b4a',1,'TeamSpeak3_Helper_Uri']]], + ['hasquery',['hasQuery',['../class_team_speak3___helper___uri.html#ad53c6db20a03e53f9568e8ca1ab91744',1,'TeamSpeak3_Helper_Uri']]], + ['hasqueryvar',['hasQueryVar',['../class_team_speak3___helper___uri.html#a17cd4b5e0108e858bb51167e0046f0c4',1,'TeamSpeak3_Helper_Uri']]], + ['hasscheme',['hasScheme',['../class_team_speak3___helper___uri.html#a489f79eec547a0c9ca9fc6befebcc0f3',1,'TeamSpeak3_Helper_Uri']]], + ['hasuser',['hasUser',['../class_team_speak3___helper___uri.html#a24fab900cd8e2b43e253f85d6925f7b7',1,'TeamSpeak3_Helper_Uri']]] +]; diff --git a/lib/docs/html/search/functions_69.html b/lib/docs/html/search/functions_69.html new file mode 100644 index 0000000..a38ddf6 --- /dev/null +++ b/lib/docs/html/search/functions_69.html @@ -0,0 +1,26 @@ + + + + + + + + + +
+
Loading...
+
+ +
Searching...
+
No Matches
+ +
+ + diff --git a/lib/docs/html/search/functions_69.js b/lib/docs/html/search/functions_69.js new file mode 100644 index 0000000..2fb0d92 --- /dev/null +++ b/lib/docs/html/search/functions_69.js @@ -0,0 +1,29 @@ +var searchData= +[ + ['icondownload',['iconDownload',['../class_team_speak3___node___channel.html#a014365ed1cbed74e25efd721ce495868',1,'TeamSpeak3_Node_Channel\iconDownload()'],['../class_team_speak3___node___channelgroup.html#a981a4c5601d67abd85b1a8dd41faf445',1,'TeamSpeak3_Node_Channelgroup\iconDownload()'],['../class_team_speak3___node___client.html#a165635e00e068e1f35ae2f32082334b2',1,'TeamSpeak3_Node_Client\iconDownload()'],['../class_team_speak3___node___server.html#aaeffd8b897c67a8b483eba32d2c63c9c',1,'TeamSpeak3_Node_Server\iconDownload()'],['../class_team_speak3___node___servergroup.html#a8fbc1206b06b4ad342591c94cf829335',1,'TeamSpeak3_Node_Servergroup\iconDownload()']]], + ['icongetname',['iconGetName',['../class_team_speak3___node___abstract.html#a02ce34dce8fbf7881ce2323f7af0dca3',1,'TeamSpeak3_Node_Abstract']]], + ['iconislocal',['iconIsLocal',['../class_team_speak3___node___abstract.html#aa78cba098574598dd9c0331cac1f39a1',1,'TeamSpeak3_Node_Abstract']]], + ['iconupload',['iconUpload',['../class_team_speak3___node___server.html#aa09963df399797506a9f5107541f826d',1,'TeamSpeak3_Node_Server']]], + ['imagemimetype',['imageMimeType',['../class_team_speak3___helper___convert.html#af9f1557a852d6c51fc71d8f5199594f4',1,'TeamSpeak3_Helper_Convert']]], + ['infodb',['infoDb',['../class_team_speak3___node___client.html#a63fd3d66404a46a1ca7fb0795a83818e',1,'TeamSpeak3_Node_Client']]], + ['init',['init',['../class_team_speak3___adapter___file_transfer.html#a56c9d8b7f347dcc70787956d8a389a17',1,'TeamSpeak3_Adapter_FileTransfer\init()'],['../class_team_speak3___helper___profiler.html#a7761d609ec2deda6d278709293f01d22',1,'TeamSpeak3_Helper_Profiler\init()'],['../class_team_speak3.html#a87bd78e5017a04145076860846395a7d',1,'TeamSpeak3\init()']]], + ['inittransport',['initTransport',['../class_team_speak3___adapter___abstract.html#a87920747e1eb4a25396c5b5e5567094b',1,'TeamSpeak3_Adapter_Abstract']]], + ['isblacklisted',['isBlacklisted',['../class_team_speak3___adapter___blacklist.html#a810eeede201a669baae7c2cfb394c47f',1,'TeamSpeak3_Adapter_Blacklist']]], + ['isconnected',['isConnected',['../class_team_speak3___transport___abstract.html#a2b1d6d9d2f48fae3165cd5a863cdefe1',1,'TeamSpeak3_Transport_Abstract']]], + ['iscontrol',['isControl',['../class_team_speak3___helper___char.html#a22df6b40aceb46041f0d54cdb94e207c',1,'TeamSpeak3_Helper_Char']]], + ['isdigit',['isDigit',['../class_team_speak3___helper___char.html#a516ba12f480718c4f629bc80b4534e45',1,'TeamSpeak3_Helper_Char']]], + ['isint',['isInt',['../class_team_speak3___helper___string.html#abd90cc6d33ba2a43f86b988f7596c5cd',1,'TeamSpeak3_Helper_String']]], + ['isletter',['isLetter',['../class_team_speak3___helper___char.html#af5e38bffad5f3337a0a098595c3cc1dc',1,'TeamSpeak3_Helper_Char']]], + ['islower',['isLower',['../class_team_speak3___helper___char.html#af1a9090eb45deefe6337137af4cdb9fb',1,'TeamSpeak3_Helper_Char']]], + ['ismark',['isMark',['../class_team_speak3___helper___char.html#a7b0af0f517fad3d463e37a73f0d0e6aa',1,'TeamSpeak3_Helper_Char']]], + ['isnull',['isNull',['../class_team_speak3___helper___char.html#ac9d4e8d53dc1b48df16a9e966ec5ffac',1,'TeamSpeak3_Helper_Char']]], + ['isoffline',['isOffline',['../class_team_speak3___node___server.html#a55f06b4b0c636dcc41a877edc5a3a7d7',1,'TeamSpeak3_Node_Server']]], + ['isonline',['isOnline',['../class_team_speak3___node___server.html#adc8a77671ffbf1c7c699da1f3d4d0d12',1,'TeamSpeak3_Node_Server']]], + ['isprintable',['isPrintable',['../class_team_speak3___helper___char.html#af3db051fe9effcc66181cfffbe6adb43',1,'TeamSpeak3_Helper_Char']]], + ['isrunning',['isRunning',['../class_team_speak3___helper___profiler___timer.html#abdffbfefcc30c448ddf20552a6c0503e',1,'TeamSpeak3_Helper_Profiler_Timer']]], + ['isspace',['isSpace',['../class_team_speak3___helper___char.html#a9eaa5eb7af273164e78a1ad9abba4925',1,'TeamSpeak3_Helper_Char']]], + ['isspacer',['isSpacer',['../class_team_speak3___node___channel.html#a403b689f8fa9fd61744186f8c94c8a19',1,'TeamSpeak3_Node_Channel']]], + ['isupper',['isUpper',['../class_team_speak3___helper___char.html#aab4f8858c8fd20453808c19d31e7f9e3',1,'TeamSpeak3_Helper_Char']]], + ['isutf8',['isUtf8',['../class_team_speak3___helper___string.html#a6d8411e44090161070e4c016ef4cb2ef',1,'TeamSpeak3_Helper_String']]], + ['isvalid',['isValid',['../class_team_speak3___helper___uri.html#a32584b89b4cfeaaa09948b5b1fc67916',1,'TeamSpeak3_Helper_Uri']]] +]; diff --git a/lib/docs/html/search/functions_6b.html b/lib/docs/html/search/functions_6b.html new file mode 100644 index 0000000..3d8acba --- /dev/null +++ b/lib/docs/html/search/functions_6b.html @@ -0,0 +1,26 @@ + + + + + + + + + +
+
Loading...
+
+ +
Searching...
+
No Matches
+ +
+ + diff --git a/lib/docs/html/search/functions_6b.js b/lib/docs/html/search/functions_6b.js new file mode 100644 index 0000000..ff78065 --- /dev/null +++ b/lib/docs/html/search/functions_6b.js @@ -0,0 +1,5 @@ +var searchData= +[ + ['key',['key',['../class_team_speak3___helper___string.html#ae3d33b1f4304a9e15f23797f792b2c8a',1,'TeamSpeak3_Helper_String\key()'],['../class_team_speak3___node___abstract.html#adb87ddbef3247f346c2623f4d91981a1',1,'TeamSpeak3_Node_Abstract\key()']]], + ['kick',['kick',['../class_team_speak3___node___client.html#ade2debd43e978373134575711c85dd17',1,'TeamSpeak3_Node_Client']]] +]; diff --git a/lib/docs/html/search/functions_6c.html b/lib/docs/html/search/functions_6c.html new file mode 100644 index 0000000..039b5ae --- /dev/null +++ b/lib/docs/html/search/functions_6c.html @@ -0,0 +1,26 @@ + + + + + + + + + +
+
Loading...
+
+ +
Searching...
+
No Matches
+ +
+ + diff --git a/lib/docs/html/search/functions_6c.js b/lib/docs/html/search/functions_6c.js new file mode 100644 index 0000000..1b1e6ba --- /dev/null +++ b/lib/docs/html/search/functions_6c.js @@ -0,0 +1,10 @@ +var searchData= +[ + ['loadclass',['loadClass',['../class_team_speak3.html#a743962796b7626d9dbea7195036eecd3',1,'TeamSpeak3']]], + ['logadd',['logAdd',['../class_team_speak3___node___host.html#a107c77c012604e9c2964f72871da1a23',1,'TeamSpeak3_Node_Host\logAdd()'],['../class_team_speak3___node___server.html#a5a35cfb06bb9e8fbf8d8716a8de1c047',1,'TeamSpeak3_Node_Server\logAdd()']]], + ['logentry',['logEntry',['../class_team_speak3___helper___convert.html#a14c4073a5f8b34e3167f419fa4bcedb3',1,'TeamSpeak3_Helper_Convert']]], + ['login',['login',['../class_team_speak3___node___host.html#a277d0e0f1bc4e1a1353b339c99202cfa',1,'TeamSpeak3_Node_Host']]], + ['loglevel',['logLevel',['../class_team_speak3___helper___convert.html#ae9d3940edf6b0a5ab13d2b27c38a99b8',1,'TeamSpeak3_Helper_Convert']]], + ['logout',['logout',['../class_team_speak3___node___host.html#a4384f0b7ab08fd30f446a936a882fc71',1,'TeamSpeak3_Node_Host']]], + ['logview',['logView',['../class_team_speak3___node___host.html#aee901f59e9bb4d87530d6b8a152b89be',1,'TeamSpeak3_Node_Host\logView()'],['../class_team_speak3___node___server.html#a5a61fde00711fbde340c0917c738d19d',1,'TeamSpeak3_Node_Server\logView()']]] +]; diff --git a/lib/docs/html/search/functions_6d.html b/lib/docs/html/search/functions_6d.html new file mode 100644 index 0000000..cc3d484 --- /dev/null +++ b/lib/docs/html/search/functions_6d.html @@ -0,0 +1,26 @@ + + + + + + + + + +
+
Loading...
+
+ +
Searching...
+
No Matches
+ +
+ + diff --git a/lib/docs/html/search/functions_6d.js b/lib/docs/html/search/functions_6d.js new file mode 100644 index 0000000..9da0b84 --- /dev/null +++ b/lib/docs/html/search/functions_6d.js @@ -0,0 +1,12 @@ +var searchData= +[ + ['memberof',['memberOf',['../class_team_speak3___node___client.html#a9d9a31c0821e3dc13da505000b0adcbf',1,'TeamSpeak3_Node_Client']]], + ['message',['message',['../class_team_speak3___node___channel.html#abb90a093d39070b66f903c29aee75eb7',1,'TeamSpeak3_Node_Channel\message()'],['../class_team_speak3___node___channelgroup.html#ac37f09fe4b9291a0b2062e910d617b83',1,'TeamSpeak3_Node_Channelgroup\message()'],['../class_team_speak3___node___client.html#a0e64a76b7a553a83145cd9b42e6d3041',1,'TeamSpeak3_Node_Client\message()'],['../class_team_speak3___node___host.html#a45450f27e3765893b912407ce640280f',1,'TeamSpeak3_Node_Host\message()'],['../class_team_speak3___node___server.html#a0bbeea2377896171ec7d971de382528f',1,'TeamSpeak3_Node_Server\message()'],['../class_team_speak3___node___servergroup.html#a93b0285425354402633ce17f84722591',1,'TeamSpeak3_Node_Servergroup\message()']]], + ['messagecreate',['messageCreate',['../class_team_speak3___node___server.html#af229175f84fc35b20a7e74542b4f48c0',1,'TeamSpeak3_Node_Server']]], + ['messagedelete',['messageDelete',['../class_team_speak3___node___server.html#af5f666e5496fed200ffe2ab4c7da2e70',1,'TeamSpeak3_Node_Server']]], + ['messagelist',['messageList',['../class_team_speak3___node___server.html#a094080732e7f39c9ac07fbefdcbf5d6e',1,'TeamSpeak3_Node_Server']]], + ['messageread',['messageRead',['../class_team_speak3___node___server.html#aba2804d7bb9a1b9994af24c35fcc9484',1,'TeamSpeak3_Node_Server']]], + ['modify',['modify',['../class_team_speak3___node___channel.html#a9ed93a66fb5e503bcd556d54f53b2e7d',1,'TeamSpeak3_Node_Channel\modify()'],['../class_team_speak3___node___client.html#a9bec04a0c6f0174811830bd5048ef78e',1,'TeamSpeak3_Node_Client\modify()'],['../class_team_speak3___node___host.html#a1f26a3c66014960c1782bbaffc904cde',1,'TeamSpeak3_Node_Host\modify()'],['../class_team_speak3___node___server.html#a4829c324cac2866b7748b9ba48ee17e1',1,'TeamSpeak3_Node_Server\modify()']]], + ['modifydb',['modifyDb',['../class_team_speak3___node___client.html#a8b4bf4bb745a772274d71b40f90b8dc7',1,'TeamSpeak3_Node_Client']]], + ['move',['move',['../class_team_speak3___node___channel.html#ac6c3d3563ea70b58e5d06504cea1dc40',1,'TeamSpeak3_Node_Channel\move()'],['../class_team_speak3___node___client.html#aac47e6e99aa14a5e33696b67854f4d36',1,'TeamSpeak3_Node_Client\move()']]] +]; diff --git a/lib/docs/html/search/functions_6e.html b/lib/docs/html/search/functions_6e.html new file mode 100644 index 0000000..cbca3bf --- /dev/null +++ b/lib/docs/html/search/functions_6e.html @@ -0,0 +1,26 @@ + + + + + + + + + +
+
Loading...
+
+ +
Searching...
+
No Matches
+ +
+ + diff --git a/lib/docs/html/search/functions_6e.js b/lib/docs/html/search/functions_6e.js new file mode 100644 index 0000000..032520b --- /dev/null +++ b/lib/docs/html/search/functions_6e.js @@ -0,0 +1,6 @@ +var searchData= +[ + ['next',['next',['../class_team_speak3___helper___string.html#a41ed82694722a57dab947a95be55da8a',1,'TeamSpeak3_Helper_String\next()'],['../class_team_speak3___node___abstract.html#a3273e5078ee49a4bd55620327ed09a5e',1,'TeamSpeak3_Node_Abstract\next()']]], + ['notifyregister',['notifyRegister',['../class_team_speak3___node___server.html#ab6042c937b2e0b7eccd7dca9c98fe8b6',1,'TeamSpeak3_Node_Server']]], + ['notifyunregister',['notifyUnregister',['../class_team_speak3___node___server.html#a46509385b685f0154e04c2774d74652a',1,'TeamSpeak3_Node_Server']]] +]; diff --git a/lib/docs/html/search/functions_6f.html b/lib/docs/html/search/functions_6f.html new file mode 100644 index 0000000..0d02ad8 --- /dev/null +++ b/lib/docs/html/search/functions_6f.html @@ -0,0 +1,26 @@ + + + + + + + + + +
+
Loading...
+
+ +
Searching...
+
No Matches
+ +
+ + diff --git a/lib/docs/html/search/functions_6f.js b/lib/docs/html/search/functions_6f.js new file mode 100644 index 0000000..4eeb102 --- /dev/null +++ b/lib/docs/html/search/functions_6f.js @@ -0,0 +1,33 @@ +var searchData= +[ + ['offsetexists',['offsetExists',['../class_team_speak3___adapter___server_query___event.html#a57ae033a9a2926762f557fb8705d8a15',1,'TeamSpeak3_Adapter_ServerQuery_Event\offsetExists()'],['../class_team_speak3___helper___string.html#afb284716b9af4a0f062161a5d97a78f9',1,'TeamSpeak3_Helper_String\offsetExists()'],['../class_team_speak3___node___abstract.html#ad0d64388e2a374203fa16760b923b087',1,'TeamSpeak3_Node_Abstract\offsetExists()']]], + ['offsetget',['offsetGet',['../class_team_speak3___adapter___server_query___event.html#a6c3c6a21f1f6dd8e594669868c310c81',1,'TeamSpeak3_Adapter_ServerQuery_Event\offsetGet()'],['../class_team_speak3___helper___string.html#aca8a008c7bc517c801cb20584f413d64',1,'TeamSpeak3_Helper_String\offsetGet()'],['../class_team_speak3___node___abstract.html#a716e7512816cf490e5a16ec307f7d889',1,'TeamSpeak3_Node_Abstract\offsetGet()']]], + ['offsetset',['offsetSet',['../class_team_speak3___adapter___server_query___event.html#a9eb8d547545fa1e17f70c8ee5ba33a9c',1,'TeamSpeak3_Adapter_ServerQuery_Event\offsetSet()'],['../class_team_speak3___helper___string.html#ac27cbee392b09ccbbc421a1487740418',1,'TeamSpeak3_Helper_String\offsetSet()'],['../class_team_speak3___node___abstract.html#a5e9be0418e0cc969d47f4b7475adb21d',1,'TeamSpeak3_Node_Abstract\offsetSet()']]], + ['offsetunset',['offsetUnset',['../class_team_speak3___adapter___server_query___event.html#a41ef812dbfe2d1e1b517bd123fc960f6',1,'TeamSpeak3_Adapter_ServerQuery_Event\offsetUnset()'],['../class_team_speak3___helper___string.html#afd4c1631d11a6b4b8471b22a682c3b29',1,'TeamSpeak3_Helper_String\offsetUnset()'],['../class_team_speak3___node___abstract.html#a732408c9a027db531af8ecce82401c07',1,'TeamSpeak3_Node_Abstract\offsetUnset()']]], + ['oncommandfinished',['onCommandFinished',['../interface_team_speak3___helper___signal___interface.html#a848c46c0b32516d82a89826246932bbb',1,'TeamSpeak3_Helper_Signal_Interface']]], + ['oncommandstarted',['onCommandStarted',['../interface_team_speak3___helper___signal___interface.html#a4e4f17bf4f8c4e59e083f30bd6fcd12a',1,'TeamSpeak3_Helper_Signal_Interface']]], + ['onconnect',['onConnect',['../interface_team_speak3___helper___signal___interface.html#a7e066d5cc94154739471a627b7d6f63f',1,'TeamSpeak3_Helper_Signal_Interface']]], + ['ondebugdataread',['onDebugDataRead',['../interface_team_speak3___helper___signal___interface.html#af6c4a98cf159e1ae41d08d2f94ea901c',1,'TeamSpeak3_Helper_Signal_Interface']]], + ['ondebugdatasend',['onDebugDataSend',['../interface_team_speak3___helper___signal___interface.html#a3ce1e6fb65555f153b8313938fc6f14a',1,'TeamSpeak3_Helper_Signal_Interface']]], + ['ondisconnect',['onDisconnect',['../interface_team_speak3___helper___signal___interface.html#a81a002eceee16a9558a68c849f22e581',1,'TeamSpeak3_Helper_Signal_Interface']]], + ['onerror',['onError',['../interface_team_speak3___helper___signal___interface.html#a7925e6a3080092bb6da831dd616769a3',1,'TeamSpeak3_Helper_Signal_Interface']]], + ['onevent',['onEvent',['../interface_team_speak3___helper___signal___interface.html#a3dbd81b8eb9416d5b4305877eb48153f',1,'TeamSpeak3_Helper_Signal_Interface']]], + ['onexception',['onException',['../interface_team_speak3___helper___signal___interface.html#ab65b20dc52d7165455b0ebb5bdc851ed',1,'TeamSpeak3_Helper_Signal_Interface']]], + ['onftdownloadfinished',['onFtDownloadFinished',['../interface_team_speak3___helper___signal___interface.html#a822d76c4cc0a50360066b54bfaf15df2',1,'TeamSpeak3_Helper_Signal_Interface']]], + ['onftdownloadprogress',['onFtDownloadProgress',['../interface_team_speak3___helper___signal___interface.html#a5a21094dc110e60bd165703df58f6a6f',1,'TeamSpeak3_Helper_Signal_Interface']]], + ['onftdownloadstarted',['onFtDownloadStarted',['../interface_team_speak3___helper___signal___interface.html#ad12f5a3d0810a3647295141095fe1bcb',1,'TeamSpeak3_Helper_Signal_Interface']]], + ['onfthandshake',['onFtHandshake',['../interface_team_speak3___helper___signal___interface.html#aa1c0d664a04ef2ef284933473fbaeb4e',1,'TeamSpeak3_Helper_Signal_Interface']]], + ['onftuploadfinished',['onFtUploadFinished',['../interface_team_speak3___helper___signal___interface.html#a8bf3a9eeea9253d41d4b0ae8ee3816a2',1,'TeamSpeak3_Helper_Signal_Interface']]], + ['onftuploadprogress',['onFtUploadProgress',['../interface_team_speak3___helper___signal___interface.html#a2c7b2aa9fbbac68849b1cb6727751941',1,'TeamSpeak3_Helper_Signal_Interface']]], + ['onftuploadstarted',['onFtUploadStarted',['../interface_team_speak3___helper___signal___interface.html#a264e6acfa718799d1f0702d9d378d4bf',1,'TeamSpeak3_Helper_Signal_Interface']]], + ['onlogin',['onLogin',['../interface_team_speak3___helper___signal___interface.html#a437bf9fda2ce442d55aba119d8a2a472',1,'TeamSpeak3_Helper_Signal_Interface']]], + ['onlogout',['onLogout',['../interface_team_speak3___helper___signal___interface.html#a323953d09e67d3bba06ce54e0a46bd90',1,'TeamSpeak3_Helper_Signal_Interface']]], + ['onservercreated',['onServercreated',['../interface_team_speak3___helper___signal___interface.html#a2f3816f32fcdcc1cfd2dc202a018a5d4',1,'TeamSpeak3_Helper_Signal_Interface']]], + ['onserverdeleted',['onServerdeleted',['../interface_team_speak3___helper___signal___interface.html#a8d9f2e3a80bb4312338db8f282cf1fad',1,'TeamSpeak3_Helper_Signal_Interface']]], + ['onserverselected',['onServerselected',['../interface_team_speak3___helper___signal___interface.html#a15d6588ecad8073457490522fa6e42b1',1,'TeamSpeak3_Helper_Signal_Interface']]], + ['onservershutdown',['onServershutdown',['../interface_team_speak3___helper___signal___interface.html#aad9e6d52b8747271c2ce2d4770d7ea6d',1,'TeamSpeak3_Helper_Signal_Interface']]], + ['onserverstarted',['onServerstarted',['../interface_team_speak3___helper___signal___interface.html#a129f0620c8ca72cc49744412ca400af8',1,'TeamSpeak3_Helper_Signal_Interface']]], + ['onserverstopped',['onServerstopped',['../interface_team_speak3___helper___signal___interface.html#ad57f648650d5f17dc8dc8acfb196b425',1,'TeamSpeak3_Helper_Signal_Interface']]], + ['ontokencreated',['onTokencreated',['../interface_team_speak3___helper___signal___interface.html#a4bcd3c19b7adbd37800dc941794a1847',1,'TeamSpeak3_Helper_Signal_Interface']]], + ['onwaittimeout',['onWaitTimeout',['../interface_team_speak3___helper___signal___interface.html#a539e6ca40f293c37a73ac296f4a97141',1,'TeamSpeak3_Helper_Signal_Interface']]] +]; diff --git a/lib/docs/html/search/functions_70.html b/lib/docs/html/search/functions_70.html new file mode 100644 index 0000000..db086b4 --- /dev/null +++ b/lib/docs/html/search/functions_70.html @@ -0,0 +1,26 @@ + + + + + + + + + +
+
Loading...
+
+ +
Searching...
+
No Matches
+ +
+ + diff --git a/lib/docs/html/search/functions_70.js b/lib/docs/html/search/functions_70.js new file mode 100644 index 0000000..bf23fa2 --- /dev/null +++ b/lib/docs/html/search/functions_70.js @@ -0,0 +1,33 @@ +var searchData= +[ + ['parseuri',['parseUri',['../class_team_speak3___helper___uri.html#a7f6c35d4a2161270b8edcff45b48fda1',1,'TeamSpeak3_Helper_Uri']]], + ['passthru',['passthru',['../class_team_speak3___adapter___file_transfer.html#a69cc29e5d15d47c56f55bcd14503905f',1,'TeamSpeak3_Adapter_FileTransfer']]], + ['password',['password',['../class_team_speak3___helper___convert.html#aa77db7921a9a7141a363c4a42c3dda26',1,'TeamSpeak3_Helper_Convert']]], + ['permassign',['permAssign',['../class_team_speak3___node___channel.html#a718a79bb14289ba6a52cf13264f1e3d9',1,'TeamSpeak3_Node_Channel\permAssign()'],['../class_team_speak3___node___channelgroup.html#a272eceba9a34038a77e9a3ba64459e9c',1,'TeamSpeak3_Node_Channelgroup\permAssign()'],['../class_team_speak3___node___client.html#af26bd82c2d6b4e42304d828a4a8ba4f8',1,'TeamSpeak3_Node_Client\permAssign()'],['../class_team_speak3___node___servergroup.html#a1e091222c4fdfa646cf820002239189a',1,'TeamSpeak3_Node_Servergroup\permAssign()']]], + ['permassignbyname',['permAssignByName',['../class_team_speak3___node___channel.html#abb025af29045d589a709fd54908a265e',1,'TeamSpeak3_Node_Channel\permAssignByName()'],['../class_team_speak3___node___channelgroup.html#a9c4b8d414bda3f3abb8b6921a7f70a07',1,'TeamSpeak3_Node_Channelgroup\permAssignByName()'],['../class_team_speak3___node___client.html#a3debc27139d7a9af950f0db6f47c47c8',1,'TeamSpeak3_Node_Client\permAssignByName()'],['../class_team_speak3___node___servergroup.html#ac1734ec88fe5dfd5add66a85d2cd030c',1,'TeamSpeak3_Node_Servergroup\permAssignByName()']]], + ['permissioncategory',['permissionCategory',['../class_team_speak3___helper___convert.html#ae7ade0698dc565074b00e5b82ed5790f',1,'TeamSpeak3_Helper_Convert']]], + ['permissioncats',['permissionCats',['../class_team_speak3___node___host.html#a9a998c77512d885b738aa02871f5f36d',1,'TeamSpeak3_Node_Host']]], + ['permissionends',['permissionEnds',['../class_team_speak3___node___host.html#a02d37eda05e217d66ab8aaed01e32203',1,'TeamSpeak3_Node_Host']]], + ['permissionfind',['permissionFind',['../class_team_speak3___node___host.html#a47648cae36cfe3c602bb02ef3eb840e2',1,'TeamSpeak3_Node_Host']]], + ['permissiongetcategorybyid',['permissionGetCategoryById',['../class_team_speak3___node___host.html#a211d5a64cffe5619b24380332e61075a',1,'TeamSpeak3_Node_Host']]], + ['permissiongetgrantbyid',['permissionGetGrantById',['../class_team_speak3___node___host.html#a54992d4abd6db0b12dc8aa4aac76b14d',1,'TeamSpeak3_Node_Host']]], + ['permissiongetidbyname',['permissionGetIdByName',['../class_team_speak3___node___host.html#a3303cb17f6a97ff39b6ecfd0cf88f3c1',1,'TeamSpeak3_Node_Host']]], + ['permissiongetnamebyid',['permissionGetNameById',['../class_team_speak3___node___host.html#a6c2afc0481179435222ed45aebd088fa',1,'TeamSpeak3_Node_Host']]], + ['permissionlist',['permissionList',['../class_team_speak3___node___host.html#a8495ade30f51bda37e41b719ed183092',1,'TeamSpeak3_Node_Host']]], + ['permissiontree',['permissionTree',['../class_team_speak3___node___host.html#a2fc2c5feb088d545c4d4140a1bed1993',1,'TeamSpeak3_Node_Host']]], + ['permissiontype',['permissionType',['../class_team_speak3___helper___convert.html#a4460cbe02a408e1bafeafe7aae418eec',1,'TeamSpeak3_Helper_Convert']]], + ['permlist',['permList',['../class_team_speak3___node___channel.html#aeb434341ab27daa223feaa6947d1eb84',1,'TeamSpeak3_Node_Channel\permList()'],['../class_team_speak3___node___channelgroup.html#af7b11f19a1f547f247e32d4f70c42119',1,'TeamSpeak3_Node_Channelgroup\permList()'],['../class_team_speak3___node___client.html#a501fc3581568d70b327416f47b12520a',1,'TeamSpeak3_Node_Client\permList()'],['../class_team_speak3___node___servergroup.html#a2750690a96f7d3ce4c8b2f200a2187b6',1,'TeamSpeak3_Node_Servergroup\permList()']]], + ['permoverview',['permOverview',['../class_team_speak3___node___client.html#ab7f8adc763cf45dd64b51bae0e17d884',1,'TeamSpeak3_Node_Client']]], + ['permremove',['permRemove',['../class_team_speak3___node___channel.html#ad5b12fe78a6882e82e09cfcfe4c0a5a4',1,'TeamSpeak3_Node_Channel\permRemove()'],['../class_team_speak3___node___channelgroup.html#a534837db1e4d6add77dedcb5a3ddf1eb',1,'TeamSpeak3_Node_Channelgroup\permRemove()'],['../class_team_speak3___node___client.html#ae4dbe8372c97ad18ffb930022ba7e01d',1,'TeamSpeak3_Node_Client\permRemove()'],['../class_team_speak3___node___servergroup.html#aa310bbb6ff4e1a90e76689ce99a009e2',1,'TeamSpeak3_Node_Servergroup\permRemove()']]], + ['permremoveany',['permRemoveAny',['../class_team_speak3___node___server.html#a4064b80b0f7796367e61438ae9a0cd5a',1,'TeamSpeak3_Node_Server']]], + ['permremovebyname',['permRemoveByName',['../class_team_speak3___node___channel.html#a23153430a3dcb5ac300f488a5ca96ac1',1,'TeamSpeak3_Node_Channel\permRemoveByName()'],['../class_team_speak3___node___channelgroup.html#a242cba4ec6265ae655433b3a3d13f24b',1,'TeamSpeak3_Node_Channelgroup\permRemoveByName()'],['../class_team_speak3___node___client.html#a94a311c81d0e6e5f94e9c0470cd8d054',1,'TeamSpeak3_Node_Client\permRemoveByName()'],['../class_team_speak3___node___servergroup.html#af0231024657d4b1be8b646062d1ffe4b',1,'TeamSpeak3_Node_Servergroup\permRemoveByName()']]], + ['permreset',['permReset',['../class_team_speak3___node___server.html#a6ee64afd6c312ff8644725823ab0b078',1,'TeamSpeak3_Node_Server']]], + ['poke',['poke',['../class_team_speak3___node___client.html#a0bffc69732548b99511434e22caf17ec',1,'TeamSpeak3_Node_Client']]], + ['prepare',['prepare',['../class_team_speak3___adapter___server_query.html#a922a436f8224dffa4272244efb026383',1,'TeamSpeak3_Adapter_ServerQuery\prepare()'],['../class_team_speak3___node___abstract.html#a6589a4fedd410e9cdb55fe20abc410c0',1,'TeamSpeak3_Node_Abstract\prepare()']]], + ['preparecustommessage',['prepareCustomMessage',['../class_team_speak3___exception.html#a3bfcdf7b85a393b7a8b05b048ae3279c',1,'TeamSpeak3_Exception']]], + ['prepend',['prepend',['../class_team_speak3___helper___string.html#a73b077cc95e1365974644eebc1e48cf0',1,'TeamSpeak3_Helper_String']]], + ['privilegekeycreate',['privilegeKeyCreate',['../class_team_speak3___node___channelgroup.html#a70accf5a9d96f0dbe91ee28541bd5eba',1,'TeamSpeak3_Node_Channelgroup\privilegeKeyCreate()'],['../class_team_speak3___node___server.html#a65f5b13eca06755b6ef96e6bbe80947b',1,'TeamSpeak3_Node_Server\privilegeKeyCreate()'],['../class_team_speak3___node___servergroup.html#ae2995f92fe360459d158373d28436f85',1,'TeamSpeak3_Node_Servergroup\privilegeKeyCreate()']]], + ['privilegekeydelete',['privilegeKeyDelete',['../class_team_speak3___node___server.html#a06d451d9f1f484da9e902eadb52739e4',1,'TeamSpeak3_Node_Server']]], + ['privilegekeylist',['privilegeKeyList',['../class_team_speak3___node___server.html#ae79c8994a9fa524016a141aad5b14e31',1,'TeamSpeak3_Node_Server']]], + ['privilegekeyuse',['privilegeKeyUse',['../class_team_speak3___node___server.html#a6cdf7f6012d20caf6b2be3b42ffb5c21',1,'TeamSpeak3_Node_Server']]] +]; diff --git a/lib/docs/html/search/functions_72.html b/lib/docs/html/search/functions_72.html new file mode 100644 index 0000000..387f7a1 --- /dev/null +++ b/lib/docs/html/search/functions_72.html @@ -0,0 +1,26 @@ + + + + + + + + + +
+
Loading...
+
+ +
Searching...
+
No Matches
+ +
+ + diff --git a/lib/docs/html/search/functions_72.js b/lib/docs/html/search/functions_72.js new file mode 100644 index 0000000..d88e916 --- /dev/null +++ b/lib/docs/html/search/functions_72.js @@ -0,0 +1,15 @@ +var searchData= +[ + ['read',['read',['../class_team_speak3___transport___abstract.html#a611fde17c19d0fc02564acf80d322df0',1,'TeamSpeak3_Transport_Abstract\read()'],['../class_team_speak3___transport___t_c_p.html#ae6a9841ecb355b2596aa8c2da53a3e11',1,'TeamSpeak3_Transport_TCP\read()'],['../class_team_speak3___transport___u_d_p.html#af854c17875858a0a57cfa08a20786836',1,'TeamSpeak3_Transport_UDP\read()']]], + ['readline',['readLine',['../class_team_speak3___transport___t_c_p.html#aa5c19e01f8f6bfd2d3cfc9a2ea64a26e',1,'TeamSpeak3_Transport_TCP']]], + ['registercustommessage',['registerCustomMessage',['../class_team_speak3___exception.html#a0b2ddaae2a81d54b3f730f7661039c7a',1,'TeamSpeak3_Exception']]], + ['remservergroup',['remServerGroup',['../class_team_speak3___node___client.html#a5ec1034f4f801800ab5a86741c66bbd0',1,'TeamSpeak3_Node_Client']]], + ['rename',['rename',['../class_team_speak3___node___channelgroup.html#a11ced87a844806dd40f6c51efb1e3e15',1,'TeamSpeak3_Node_Channelgroup\rename()'],['../class_team_speak3___node___servergroup.html#a87a40f934f6c820ce708c66c48489f30',1,'TeamSpeak3_Node_Servergroup\rename()']]], + ['replace',['replace',['../class_team_speak3___helper___string.html#a630942cbba0367ad2e93fea368924b52',1,'TeamSpeak3_Helper_String']]], + ['request',['request',['../class_team_speak3___adapter___server_query.html#af153378a3e5668d2aa9ef43eac7de36a',1,'TeamSpeak3_Adapter_ServerQuery\request()'],['../class_team_speak3___node___abstract.html#a35dcdb8a7b62d7990307bfb95ce3937c',1,'TeamSpeak3_Node_Abstract\request()'],['../class_team_speak3___node___server.html#ad690f9ace5a0cb9f3789158b77c8d1f6',1,'TeamSpeak3_Node_Server\request()']]], + ['resetnodeinfo',['resetNodeInfo',['../class_team_speak3___node___abstract.html#a266578bece0506453e1f1bfba1f08966',1,'TeamSpeak3_Node_Abstract']]], + ['resetnodelist',['resetNodeList',['../class_team_speak3___node___abstract.html#a9ead519e8396990ba30d79d6bed9d286',1,'TeamSpeak3_Node_Abstract']]], + ['resize',['resize',['../class_team_speak3___helper___string.html#a8162f80058e9efeb6458e960acc04af9',1,'TeamSpeak3_Helper_String']]], + ['resolve',['resolve',['../class_team_speak3___adapter___t_s_d_n_s.html#aa92c579a298da3aaa9e78bef922c484f',1,'TeamSpeak3_Adapter_TSDNS']]], + ['rewind',['rewind',['../class_team_speak3___helper___string.html#ad1b30c6035e3eaf0f3cc8a7b484fc05e',1,'TeamSpeak3_Helper_String\rewind()'],['../class_team_speak3___node___abstract.html#a9c416b77eeea1ecec6652936703d9ff7',1,'TeamSpeak3_Node_Abstract\rewind()']]] +]; diff --git a/lib/docs/html/search/functions_73.html b/lib/docs/html/search/functions_73.html new file mode 100644 index 0000000..071b44f --- /dev/null +++ b/lib/docs/html/search/functions_73.html @@ -0,0 +1,26 @@ + + + + + + + + + +
+
Loading...
+
+ +
Searching...
+
No Matches
+ +
+ + diff --git a/lib/docs/html/search/functions_73.js b/lib/docs/html/search/functions_73.js new file mode 100644 index 0000000..177ed75 --- /dev/null +++ b/lib/docs/html/search/functions_73.js @@ -0,0 +1,79 @@ +var searchData= +[ + ['seconds',['seconds',['../class_team_speak3___helper___convert.html#af4b40876e521ec4448f6718319ce47b4',1,'TeamSpeak3_Helper_Convert']]], + ['section',['section',['../class_team_speak3___helper___string.html#a7c683564011d15bc53fb14634adbc72c',1,'TeamSpeak3_Helper_String']]], + ['selfpermcheck',['selfPermCheck',['../class_team_speak3___node___host.html#ae93b20cc3d56984e87836bd0985f93d3',1,'TeamSpeak3_Node_Host']]], + ['selfpermoverview',['selfPermOverview',['../class_team_speak3___node___server.html#a766abde5e479d793ba266dd680b5ca7b',1,'TeamSpeak3_Node_Server']]], + ['selfupdate',['selfUpdate',['../class_team_speak3___node___server.html#a5c94f444f21e92a1a8045256dbe8eda6',1,'TeamSpeak3_Node_Server']]], + ['selfupdatelogin',['selfUpdateLogin',['../class_team_speak3___node___server.html#a3bf58118ecbc54cde9cd4a652d139352',1,'TeamSpeak3_Node_Server']]], + ['send',['send',['../class_team_speak3___transport___abstract.html#aa96e8e6fa360d0b9e1db0eaeae858520',1,'TeamSpeak3_Transport_Abstract\send()'],['../class_team_speak3___transport___t_c_p.html#a65ae7814e6733bd7967f0421baa88cec',1,'TeamSpeak3_Transport_TCP\send()'],['../class_team_speak3___transport___u_d_p.html#a3fd9e15b4b86ff749033c12610563f10',1,'TeamSpeak3_Transport_UDP\send()']]], + ['sendline',['sendLine',['../class_team_speak3___transport___t_c_p.html#a70b9a5c409d0c481ef980aa8b2723d1e',1,'TeamSpeak3_Transport_TCP']]], + ['sendplugincmd',['sendPluginCmd',['../class_team_speak3___node___channel.html#abb2adcb5338c4e1a9bb4ab1009c977d7',1,'TeamSpeak3_Node_Channel\sendPluginCmd()'],['../class_team_speak3___node___client.html#ac6bd2a4585bfe075d794a6fb5842fdba',1,'TeamSpeak3_Node_Client\sendPluginCmd()'],['../class_team_speak3___node___server.html#a7ad80214abca716151ed418dd0a65129',1,'TeamSpeak3_Node_Server\sendPluginCmd()']]], + ['servercreate',['serverCreate',['../class_team_speak3___node___host.html#a1a3e7ae9444d37169d52376d5bde2b03',1,'TeamSpeak3_Node_Host']]], + ['serverdelete',['serverDelete',['../class_team_speak3___node___host.html#add283a1e8d0938064cd37168af0eacda',1,'TeamSpeak3_Node_Host']]], + ['serverdeselect',['serverDeselect',['../class_team_speak3___node___host.html#a7cdbb02364fbdcde55f6931ecfed32e6',1,'TeamSpeak3_Node_Host']]], + ['servergetbyid',['serverGetById',['../class_team_speak3___node___host.html#aebc3e06e7bffcc0dc0f725b1d60bbcc8',1,'TeamSpeak3_Node_Host']]], + ['servergetbyname',['serverGetByName',['../class_team_speak3___node___host.html#ad03325cb5a05509eb1a73ae947f3b899',1,'TeamSpeak3_Node_Host']]], + ['servergetbyport',['serverGetByPort',['../class_team_speak3___node___host.html#a0c41dd934b1d3cf696f0d9ad68b9b4f1',1,'TeamSpeak3_Node_Host']]], + ['servergetbytsdns',['serverGetByTSDNS',['../class_team_speak3___node___host.html#acc10ad7c83e424cb785656695f2ad5ff',1,'TeamSpeak3_Node_Host']]], + ['servergetbyuid',['serverGetByUid',['../class_team_speak3___node___host.html#a3684344def5e16f20bd246cca546d54f',1,'TeamSpeak3_Node_Host']]], + ['servergetportbyid',['serverGetPortById',['../class_team_speak3___node___host.html#a9afa569106eacc750249e699dc138937',1,'TeamSpeak3_Node_Host']]], + ['servergetselected',['serverGetSelected',['../class_team_speak3___node___host.html#a1cd8d3f3f4457d827bd8aa7af6b6d457',1,'TeamSpeak3_Node_Host']]], + ['servergroupclientadd',['serverGroupClientAdd',['../class_team_speak3___node___server.html#a8d2a092fb314a86b304ad3eb7d0d295b',1,'TeamSpeak3_Node_Server']]], + ['servergroupclientdel',['serverGroupClientDel',['../class_team_speak3___node___server.html#acbd1a4c797a041242eeb5f0ead1e7667',1,'TeamSpeak3_Node_Server']]], + ['servergroupclientlist',['serverGroupClientList',['../class_team_speak3___node___server.html#a69f43173d45cc599b05a4e6f9bef5baa',1,'TeamSpeak3_Node_Server']]], + ['servergroupcopy',['serverGroupCopy',['../class_team_speak3___node___server.html#aadd60ec1808c607b6ad6a62d95f8bacf',1,'TeamSpeak3_Node_Server']]], + ['servergroupcreate',['serverGroupCreate',['../class_team_speak3___node___server.html#a086d6141683f7aa0a6addbe13ae6da58',1,'TeamSpeak3_Node_Server']]], + ['servergroupdelete',['serverGroupDelete',['../class_team_speak3___node___server.html#a347baec8fce678ab8a8f464f0398ebed',1,'TeamSpeak3_Node_Server']]], + ['servergroupgetbyid',['serverGroupGetById',['../class_team_speak3___node___server.html#a8c8a3d44efa6582d80da3e647d934429',1,'TeamSpeak3_Node_Server']]], + ['servergroupgetbyname',['serverGroupGetByName',['../class_team_speak3___node___server.html#af44dad10a4123fa928deda53a1452df2',1,'TeamSpeak3_Node_Server']]], + ['servergroupgetprofiles',['serverGroupGetProfiles',['../class_team_speak3___node___server.html#a78d5842c3b8e9248f8a46df03d041d77',1,'TeamSpeak3_Node_Server']]], + ['servergroupidentify',['serverGroupIdentify',['../class_team_speak3___node___server.html#aee3bf51303b69cbf9d50202a4864a38b',1,'TeamSpeak3_Node_Server']]], + ['servergrouplist',['serverGroupList',['../class_team_speak3___node___server.html#a0d3b40b9337ff37e5b2164d60ddd4e28',1,'TeamSpeak3_Node_Server']]], + ['servergrouplistreset',['serverGroupListReset',['../class_team_speak3___node___server.html#aec6950365d137da98fb2acd94102f231',1,'TeamSpeak3_Node_Server']]], + ['servergrouppermassign',['serverGroupPermAssign',['../class_team_speak3___node___server.html#a1625df1060f7b19b5e607174df29406b',1,'TeamSpeak3_Node_Server']]], + ['servergrouppermautoassign',['serverGroupPermAutoAssign',['../class_team_speak3___node___host.html#a4bdd23ed10633b2a3b42231f1642abfc',1,'TeamSpeak3_Node_Host']]], + ['servergrouppermautoremove',['serverGroupPermAutoRemove',['../class_team_speak3___node___host.html#aebce552f43d459d24b80a1b667480b5a',1,'TeamSpeak3_Node_Host']]], + ['servergrouppermlist',['serverGroupPermList',['../class_team_speak3___node___server.html#a2406d3d74974d39b296ec5af4b7643c4',1,'TeamSpeak3_Node_Server']]], + ['servergrouppermremove',['serverGroupPermRemove',['../class_team_speak3___node___server.html#a3b7ead504bbc7f2070f46d19e072afd9',1,'TeamSpeak3_Node_Server']]], + ['servergrouprename',['serverGroupRename',['../class_team_speak3___node___server.html#a593ea60776cecfce292855f8fdce050d',1,'TeamSpeak3_Node_Server']]], + ['serveridgetbyport',['serverIdGetByPort',['../class_team_speak3___node___host.html#ad18fcacc29347482852bc26404f0afeb',1,'TeamSpeak3_Node_Host']]], + ['serverlist',['serverList',['../class_team_speak3___node___host.html#af60cb13dd90638c36de581f61ca8c92d',1,'TeamSpeak3_Node_Host']]], + ['serverlistreset',['serverListReset',['../class_team_speak3___node___host.html#a62c9504f6d6e9128a2ef2cbc34f257b6',1,'TeamSpeak3_Node_Host']]], + ['serverselect',['serverSelect',['../class_team_speak3___node___host.html#a458a95deb930c6a8fad35c74ed1e24b7',1,'TeamSpeak3_Node_Host']]], + ['serverselectbyid',['serverSelectById',['../class_team_speak3___node___host.html#af40f36410c5e022810e3f1546e420eee',1,'TeamSpeak3_Node_Host']]], + ['serverselectbyport',['serverSelectByPort',['../class_team_speak3___node___host.html#a1735a2cfe745783b5d1aed7d74733e3d',1,'TeamSpeak3_Node_Host']]], + ['serverselectedid',['serverSelectedId',['../class_team_speak3___node___host.html#a690b4c2d08d8fb0da6d89936b01fc66a',1,'TeamSpeak3_Node_Host']]], + ['serverselectedport',['serverSelectedPort',['../class_team_speak3___node___host.html#a1d69e0f2faa753ead87cb3262cbdbe4e',1,'TeamSpeak3_Node_Host']]], + ['serverstart',['serverStart',['../class_team_speak3___node___host.html#a884c27a8e4fdc135b3a71c2c3d833271',1,'TeamSpeak3_Node_Host']]], + ['serverstop',['serverStop',['../class_team_speak3___node___host.html#af51beeafd1f513a233308775278f5bc1',1,'TeamSpeak3_Node_Host']]], + ['serverstopprocess',['serverStopProcess',['../class_team_speak3___node___host.html#ab34c49d39d9e87f25168ea654005e893',1,'TeamSpeak3_Node_Host']]], + ['setadapter',['setAdapter',['../class_team_speak3___transport___abstract.html#a68321617cad0b775bb941f19fabea6b5',1,'TeamSpeak3_Transport_Abstract']]], + ['setchannelgroup',['setChannelGroup',['../class_team_speak3___node___client.html#a7231a1c384650d2588b4aec4d3977f6d',1,'TeamSpeak3_Node_Client']]], + ['setdefaultkeys',['setDefaultKeys',['../class_team_speak3___helper___crypt.html#ad2d0754d453e7a5f638979f153489a21',1,'TeamSpeak3_Helper_Crypt']]], + ['setexcludequeryclients',['setExcludeQueryClients',['../class_team_speak3___node___host.html#a49a89cf6d6be89d27c56849efd3b21b9',1,'TeamSpeak3_Node_Host']]], + ['setloadclientlistfirst',['setLoadClientlistFirst',['../class_team_speak3___node___host.html#ab878e12266917938b1f36830534f52b7',1,'TeamSpeak3_Node_Host']]], + ['setpredefinedqueryname',['setPredefinedQueryName',['../class_team_speak3___node___host.html#a08abe8ba2f675d88656445bcdbd7d87a',1,'TeamSpeak3_Node_Host']]], + ['setsecretkey',['setSecretKey',['../class_team_speak3___helper___crypt.html#ade43c86c7fe887013b88f9f6a2e3011f',1,'TeamSpeak3_Helper_Crypt']]], + ['setstorage',['setStorage',['../class_team_speak3___node___abstract.html#a13303ca9275df184348ed7363d9d7c9a',1,'TeamSpeak3_Node_Abstract']]], + ['setuseofflineasvirtual',['setUseOfflineAsVirtual',['../class_team_speak3___node___host.html#a7b360313c50361ead406fa45564d100f',1,'TeamSpeak3_Node_Host']]], + ['snapshotcreate',['snapshotCreate',['../class_team_speak3___node___server.html#a2f9a35ca93ed9d7341e131142779acbe',1,'TeamSpeak3_Node_Server']]], + ['snapshotdeploy',['snapshotDeploy',['../class_team_speak3___node___server.html#a30215b7852290912517096a1555ba7ee',1,'TeamSpeak3_Node_Server']]], + ['sortclientlist',['sortClientList',['../class_team_speak3___node___server.html#a011ab27a8853db6f1197eda9bf873de3',1,'TeamSpeak3_Node_Server']]], + ['sortfilelist',['sortFileList',['../class_team_speak3___node___server.html#a3a630027cf54d62e6efad854d4e543c9',1,'TeamSpeak3_Node_Server']]], + ['sortgrouplist',['sortGroupList',['../class_team_speak3___node___server.html#a30149e018f59e136e8d8d2e32c03c30f',1,'TeamSpeak3_Node_Server']]], + ['spacergetalign',['spacerGetAlign',['../class_team_speak3___node___channel.html#a9d3afd421f9957b18fae15dd2fb70a59',1,'TeamSpeak3_Node_Channel']]], + ['spacergettype',['spacerGetType',['../class_team_speak3___node___channel.html#a52fe3494554137418c85446de9d93d25',1,'TeamSpeak3_Node_Channel']]], + ['spacetopercent',['spaceToPercent',['../class_team_speak3___helper___string.html#a14c8b3fce8c0074f1d180a7b764838e8',1,'TeamSpeak3_Helper_String']]], + ['split',['split',['../class_team_speak3___helper___string.html#a597f8498c9a870605f55de5401e8fe89',1,'TeamSpeak3_Helper_String']]], + ['start',['start',['../class_team_speak3___helper___profiler___timer.html#a29e06cc21d560576abec2678108078c2',1,'TeamSpeak3_Helper_Profiler_Timer\start()'],['../class_team_speak3___helper___profiler.html#a58f37c77d468aab64bc832a476d02329',1,'TeamSpeak3_Helper_Profiler\start()'],['../class_team_speak3___node___server.html#a21ce82924bf869c8033ef3fcde598795',1,'TeamSpeak3_Node_Server\start()']]], + ['startswith',['startsWith',['../class_team_speak3___helper___string.html#a1589e49036cbc501ad58a6a5f88a07b3',1,'TeamSpeak3_Helper_String']]], + ['stop',['stop',['../class_team_speak3___helper___profiler___timer.html#a9df478674ef00e29adbc12cc103390a7',1,'TeamSpeak3_Helper_Profiler_Timer\stop()'],['../class_team_speak3___helper___profiler.html#abf21a837d9fd471deb7d841b50375bdc',1,'TeamSpeak3_Helper_Profiler\stop()'],['../class_team_speak3___node___server.html#a63a380c17cc49c30093672163b164502',1,'TeamSpeak3_Node_Server\stop()']]], + ['stripslashesrecursive',['stripslashesRecursive',['../class_team_speak3___helper___uri.html#aa0cf66fbafbd606bebdcc2c48e90158f',1,'TeamSpeak3_Helper_Uri']]], + ['subchannelgetbyid',['subChannelGetById',['../class_team_speak3___node___channel.html#add4dacca0d0c83837598b948401a40b4',1,'TeamSpeak3_Node_Channel']]], + ['subchannelgetbyname',['subChannelGetByName',['../class_team_speak3___node___channel.html#ac41f8c7054b457df5716641df29608c0',1,'TeamSpeak3_Node_Channel']]], + ['subchannellist',['subChannelList',['../class_team_speak3___node___channel.html#a3305e870508db6fc6346ac326d843f89',1,'TeamSpeak3_Node_Channel']]], + ['subscribe',['subscribe',['../class_team_speak3___helper___signal.html#a058ad6105e05a7b8c620b9446c545984',1,'TeamSpeak3_Helper_Signal']]], + ['substr',['substr',['../class_team_speak3___helper___string.html#af2f7ef460aa783b02432c5b9c24b35f4',1,'TeamSpeak3_Helper_String']]], + ['syn',['syn',['../class_team_speak3___adapter___abstract.html#aa57e551da82adf543957163f0a6d1c6e',1,'TeamSpeak3_Adapter_Abstract\syn()'],['../class_team_speak3___adapter___blacklist.html#a1fa14a98fd62612e9a23357da08fa2a1',1,'TeamSpeak3_Adapter_Blacklist\syn()'],['../class_team_speak3___adapter___file_transfer.html#a6af2972c287ac831c1a3922cadb2d86b',1,'TeamSpeak3_Adapter_FileTransfer\syn()'],['../class_team_speak3___adapter___server_query.html#a1104e77bfcf0fea456b64a275f122ed5',1,'TeamSpeak3_Adapter_ServerQuery\syn()'],['../class_team_speak3___adapter___t_s_d_n_s.html#afa6858becde424aac96a14931b6b1d64',1,'TeamSpeak3_Adapter_TSDNS\syn()'],['../class_team_speak3___adapter___update.html#aff480ecd1d746c8014242bee9ff15a42',1,'TeamSpeak3_Adapter_Update\syn()']]] +]; diff --git a/lib/docs/html/search/functions_74.html b/lib/docs/html/search/functions_74.html new file mode 100644 index 0000000..8309176 --- /dev/null +++ b/lib/docs/html/search/functions_74.html @@ -0,0 +1,26 @@ + + + + + + + + + +
+
Loading...
+
+ +
Searching...
+
No Matches
+ +
+ + diff --git a/lib/docs/html/search/functions_74.js b/lib/docs/html/search/functions_74.js new file mode 100644 index 0000000..17a078e --- /dev/null +++ b/lib/docs/html/search/functions_74.js @@ -0,0 +1,34 @@ +var searchData= +[ + ['temppasswordcreate',['tempPasswordCreate',['../class_team_speak3___node___server.html#a6498965a34fe39e72abc006cfdcf04b8',1,'TeamSpeak3_Node_Server']]], + ['temppassworddelete',['tempPasswordDelete',['../class_team_speak3___node___server.html#a176d8a85e03314cbe7422749006122b9',1,'TeamSpeak3_Node_Server']]], + ['temppasswordlist',['tempPasswordList',['../class_team_speak3___node___server.html#a162441d331999a7fdfc7d8fcd2d8978b',1,'TeamSpeak3_Node_Server']]], + ['toarray',['toArray',['../class_team_speak3___adapter___server_query___reply.html#adafc81235a78cff6fdd21e32266dc83e',1,'TeamSpeak3_Adapter_ServerQuery_Reply\toArray()'],['../class_team_speak3___node___abstract.html#acf3c56763859b8adb21379f0cc6394ad',1,'TeamSpeak3_Node_Abstract\toArray()']]], + ['toascii',['toAscii',['../class_team_speak3___helper___char.html#a3f656ef26e882b1c73859da05e74b087',1,'TeamSpeak3_Helper_Char']]], + ['toassocarray',['toAssocArray',['../class_team_speak3___adapter___server_query___reply.html#a697c2727c161d53dfd7b46ab3ba63395',1,'TeamSpeak3_Adapter_ServerQuery_Reply']]], + ['tobase64',['toBase64',['../class_team_speak3___helper___string.html#a85229b107f448ca9387e894c8d718e25',1,'TeamSpeak3_Helper_String']]], + ['tocrc32',['toCrc32',['../class_team_speak3___helper___string.html#a64e335d45cf24774118f5efbefd27f0c',1,'TeamSpeak3_Helper_String']]], + ['tohex',['toHex',['../class_team_speak3___helper___char.html#af53e59a23a72e44096133355f77e3406',1,'TeamSpeak3_Helper_Char\toHex()'],['../class_team_speak3___helper___string.html#a5730d6f1b9666890431635bf73da0320',1,'TeamSpeak3_Helper_String\toHex()']]], + ['toint',['toInt',['../class_team_speak3___helper___char.html#ae9f5d53be88f2669c99a13e9e428c2ee',1,'TeamSpeak3_Helper_Char\toInt()'],['../class_team_speak3___helper___string.html#af3c8429a224fa716177fe6b90a629a0f',1,'TeamSpeak3_Helper_String\toInt()']]], + ['tokencreate',['tokenCreate',['../class_team_speak3___node___channelgroup.html#a02e50c4cf44fa59fe42494f168fea441',1,'TeamSpeak3_Node_Channelgroup\tokenCreate()'],['../class_team_speak3___node___server.html#a9a0e159ffbacd9bf36a791862732f525',1,'TeamSpeak3_Node_Server\tokenCreate()'],['../class_team_speak3___node___servergroup.html#a7168973c0a2c778e118275a0e61ecd1d',1,'TeamSpeak3_Node_Servergroup\tokenCreate()']]], + ['tokendelete',['tokenDelete',['../class_team_speak3___node___server.html#a46e722bae91524ef2d2b80a9f4b02cd8',1,'TeamSpeak3_Node_Server']]], + ['tokenlist',['tokenList',['../class_team_speak3___node___server.html#a6e9970aec423b74cf392c7259853557b',1,'TeamSpeak3_Node_Server']]], + ['tokenuse',['tokenUse',['../class_team_speak3___node___server.html#a96197181eefbe0489b88294fe46ef715',1,'TeamSpeak3_Node_Server']]], + ['tolines',['toLines',['../class_team_speak3___adapter___server_query___reply.html#a7bc11136eadd47197965af56e562ba05',1,'TeamSpeak3_Adapter_ServerQuery_Reply']]], + ['tolist',['toList',['../class_team_speak3___adapter___server_query___reply.html#a6e92cc7ce61c856c87fb286ee116ff0b',1,'TeamSpeak3_Adapter_ServerQuery_Reply']]], + ['tolower',['toLower',['../class_team_speak3___helper___char.html#abd5079c69e66bd654d1ad0507e70bfda',1,'TeamSpeak3_Helper_Char\toLower()'],['../class_team_speak3___helper___string.html#a43f910629395c91dd4e69871a9dacb18',1,'TeamSpeak3_Helper_String\toLower()']]], + ['tomd5',['toMd5',['../class_team_speak3___helper___string.html#a500a1b5f6bf0793705b55dd34b9b72f9',1,'TeamSpeak3_Helper_String']]], + ['toobjectarray',['toObjectArray',['../class_team_speak3___adapter___server_query___reply.html#a38c121c24afb5ace90f0fe742a16ae0c',1,'TeamSpeak3_Adapter_ServerQuery_Reply']]], + ['tosha1',['toSha1',['../class_team_speak3___helper___string.html#af520ab5ce16e0fad306d9d57431570ec',1,'TeamSpeak3_Helper_String']]], + ['tostring',['toString',['../class_team_speak3___adapter___server_query___reply.html#ab5d3913ad84e8fed62c0abe93eb442ee',1,'TeamSpeak3_Adapter_ServerQuery_Reply\toString()'],['../class_team_speak3___helper___char.html#a8bb75339d12739d859b81bd1f14f6b48',1,'TeamSpeak3_Helper_Char\toString()'],['../class_team_speak3___helper___string.html#a1e174bac87ff8ac91d305c708dfc5a87',1,'TeamSpeak3_Helper_String\toString()'],['../class_team_speak3___node___abstract.html#ac1b521aa7f9871103da5cbb5d3330125',1,'TeamSpeak3_Node_Abstract\toString()']]], + ['totable',['toTable',['../class_team_speak3___adapter___server_query___reply.html#a807bfd4ee64768a8d329cf98e539272d',1,'TeamSpeak3_Adapter_ServerQuery_Reply']]], + ['tounicode',['toUnicode',['../class_team_speak3___helper___char.html#a2832c6d619a29a2e48c83ac49b126a0e',1,'TeamSpeak3_Helper_Char']]], + ['toupper',['toUpper',['../class_team_speak3___helper___char.html#ad1502b588adf85b1426a1cad68062b51',1,'TeamSpeak3_Helper_Char\toUpper()'],['../class_team_speak3___helper___string.html#a196292e46e6047abe24a355502461e5b',1,'TeamSpeak3_Helper_String\toUpper()']]], + ['toutf8',['toUtf8',['../class_team_speak3___helper___string.html#a16f6035d961abe9878a780d6cfbc0bc5',1,'TeamSpeak3_Helper_String']]], + ['transferinitdownload',['transferInitDownload',['../class_team_speak3___node___server.html#a4e8e46758ad2c7a502c04f22af3e47ca',1,'TeamSpeak3_Node_Server']]], + ['transferinitupload',['transferInitUpload',['../class_team_speak3___node___server.html#a276cde0701f7051fd3cc33e8f1d304c2',1,'TeamSpeak3_Node_Server']]], + ['transferlist',['transferList',['../class_team_speak3___node___server.html#a54a998325257872475957ca2ba62faea',1,'TeamSpeak3_Node_Server']]], + ['transferstop',['transferStop',['../class_team_speak3___node___server.html#a6c7e742fb77bb0affe7d25dbc5aa1561',1,'TeamSpeak3_Node_Server']]], + ['transliterate',['transliterate',['../class_team_speak3___helper___string.html#ad26d639f401f7d2766dbbd7e7d6e7c47',1,'TeamSpeak3_Helper_String']]], + ['trim',['trim',['../class_team_speak3___helper___string.html#a1d7e859160a5a625a42449e6975b79cc',1,'TeamSpeak3_Helper_String']]] +]; diff --git a/lib/docs/html/search/functions_75.html b/lib/docs/html/search/functions_75.html new file mode 100644 index 0000000..480dede --- /dev/null +++ b/lib/docs/html/search/functions_75.html @@ -0,0 +1,26 @@ + + + + + + + + + +
+
Loading...
+
+ +
Searching...
+
No Matches
+ +
+ + diff --git a/lib/docs/html/search/functions_75.js b/lib/docs/html/search/functions_75.js new file mode 100644 index 0000000..949c950 --- /dev/null +++ b/lib/docs/html/search/functions_75.js @@ -0,0 +1,8 @@ +var searchData= +[ + ['unescape',['unescape',['../class_team_speak3___helper___string.html#a6cf18e37472a24ad987dc40220082540',1,'TeamSpeak3_Helper_String']]], + ['unregistercustommessage',['unregisterCustomMessage',['../class_team_speak3___exception.html#afcdea3b9b1a7ec267a86dac7f81a7377',1,'TeamSpeak3_Exception']]], + ['unsubscribe',['unsubscribe',['../class_team_speak3___helper___signal.html#a74e337835a70aa10894202bb43d8c30b',1,'TeamSpeak3_Helper_Signal']]], + ['upload',['upload',['../class_team_speak3___adapter___file_transfer.html#a9cf1d5542573d87ad5513e4e3eed6b8a',1,'TeamSpeak3_Adapter_FileTransfer']]], + ['urisafe',['uriSafe',['../class_team_speak3___helper___string.html#a4a27f0518592b80e80b561157c638ad7',1,'TeamSpeak3_Helper_String']]] +]; diff --git a/lib/docs/html/search/functions_76.html b/lib/docs/html/search/functions_76.html new file mode 100644 index 0000000..624bc1d --- /dev/null +++ b/lib/docs/html/search/functions_76.html @@ -0,0 +1,26 @@ + + + + + + + + + +
+
Loading...
+
+ +
Searching...
+
No Matches
+ +
+ + diff --git a/lib/docs/html/search/functions_76.js b/lib/docs/html/search/functions_76.js new file mode 100644 index 0000000..6e4873d --- /dev/null +++ b/lib/docs/html/search/functions_76.js @@ -0,0 +1,7 @@ +var searchData= +[ + ['valid',['valid',['../class_team_speak3___helper___string.html#adb5081e7fc4aa675d04735a2f4710548',1,'TeamSpeak3_Helper_String\valid()'],['../class_team_speak3___node___abstract.html#a1b0100e4a548e9464d75dcbfe6ac297a',1,'TeamSpeak3_Node_Abstract\valid()']]], + ['verifynodelist',['verifyNodeList',['../class_team_speak3___node___abstract.html#ac66aeb30418e385a5727c191bb8df87d',1,'TeamSpeak3_Node_Abstract']]], + ['version',['version',['../class_team_speak3___helper___convert.html#a3df8e522842d6a197ee095e7e32af88a',1,'TeamSpeak3_Helper_Convert\version()'],['../class_team_speak3___node___host.html#a46731245bd45599ef4d68cef0b4ca416',1,'TeamSpeak3_Node_Host\version()']]], + ['versionshort',['versionShort',['../class_team_speak3___helper___convert.html#a0ce6ada52807c57128bdd7a001f4de43',1,'TeamSpeak3_Helper_Convert']]] +]; diff --git a/lib/docs/html/search/functions_77.html b/lib/docs/html/search/functions_77.html new file mode 100644 index 0000000..0dd0710 --- /dev/null +++ b/lib/docs/html/search/functions_77.html @@ -0,0 +1,26 @@ + + + + + + + + + +
+
Loading...
+
+ +
Searching...
+
No Matches
+ +
+ + diff --git a/lib/docs/html/search/functions_77.js b/lib/docs/html/search/functions_77.js new file mode 100644 index 0000000..7e1f41a --- /dev/null +++ b/lib/docs/html/search/functions_77.js @@ -0,0 +1,9 @@ +var searchData= +[ + ['wait',['wait',['../class_team_speak3___adapter___server_query.html#a9c0096841e9ffc4adabce05b7ee1df37',1,'TeamSpeak3_Adapter_ServerQuery']]], + ['waitforreadyread',['waitForReadyRead',['../class_team_speak3___transport___abstract.html#a9826487851b638f3ad942847eae49c58',1,'TeamSpeak3_Transport_Abstract']]], + ['whoami',['whoami',['../class_team_speak3___node___host.html#a1dd45d32e7e7771ff4edbde1d0617c5e',1,'TeamSpeak3_Node_Host']]], + ['whoamiget',['whoamiGet',['../class_team_speak3___node___host.html#a53a9e8c477b07c1096cab13aa9c9b344',1,'TeamSpeak3_Node_Host']]], + ['whoamireset',['whoamiReset',['../class_team_speak3___node___host.html#a2abc65f1b0da4b3bc64dbda8d47c0f67',1,'TeamSpeak3_Node_Host']]], + ['whoamiset',['whoamiSet',['../class_team_speak3___node___host.html#abaf68b9f5b0f6b650148ed9898b2a21a',1,'TeamSpeak3_Node_Host']]] +]; diff --git a/lib/docs/html/search/mag_sel.png b/lib/docs/html/search/mag_sel.png new file mode 100644 index 0000000000000000000000000000000000000000..81f6040a2092402b4d98f9ffa8855d12a0d4ca17 GIT binary patch literal 563 zcmV-30?hr1P)zxx&tqG15pu7)IiiXFflOc2k;dXd>%13GZAy? zRz!q0=|E6a6vV)&ZBS~G9oe0kbqyw1*gvY`{Pop2oKq#FlzgXt@Xh-7fxh>}`Fxg> z$%N%{$!4=5nM{(;=c!aG1Ofr^Do{u%Ih{^&Fc@H2)+a-?TBXrw5DW&z%Nb6mQ!L9O zl}b@6mB?f=tX3;#vl)}ggh(Vpyh(IK z(Mb0D{l{U$FsRjP;!{($+bsaaVi8T#1c0V#qEIOCYa9@UVLV`f__E81L;?WEaRA;Y zUH;rZ;vb;mk7JX|$=i3O~&If0O@oZfLg8gfIjW=dcBsz;gI=!{-r4# z4%6v$&~;q^j7Fo67yJ(NJWuX+I~I!tj^nW3?}^9bq|<3^+vapS5sgM^x7!cs(+mMT z&y%j};&~po+YO)3hoUH4E*E;e9>?R6SS&`X)p`njycAVcg{rEb41T{~Hk(bl-7eSb zmFxA2uIqo#@R?lKm50ND`~6Nfn|-b1|L6O98vt3Tx@gKz#isxO002ovPDHLkV1kyW B_l^Jn literal 0 HcmV?d00001 diff --git a/lib/docs/html/search/namespaces_74.html b/lib/docs/html/search/namespaces_74.html new file mode 100644 index 0000000..117413c --- /dev/null +++ b/lib/docs/html/search/namespaces_74.html @@ -0,0 +1,26 @@ + + + + + + + + + +
+
Loading...
+
+ +
Searching...
+
No Matches
+ +
+ + diff --git a/lib/docs/html/search/namespaces_74.js b/lib/docs/html/search/namespaces_74.js new file mode 100644 index 0000000..dac0260 --- /dev/null +++ b/lib/docs/html/search/namespaces_74.js @@ -0,0 +1,4 @@ +var searchData= +[ + ['teamspeak3',['TeamSpeak3',['../namespace_team_speak3.html',1,'']]] +]; diff --git a/lib/docs/html/search/nomatches.html b/lib/docs/html/search/nomatches.html new file mode 100644 index 0000000..b1ded27 --- /dev/null +++ b/lib/docs/html/search/nomatches.html @@ -0,0 +1,12 @@ + + + + + + + +
+
No Matches
+
+ + diff --git a/lib/docs/html/search/pages_61.html b/lib/docs/html/search/pages_61.html new file mode 100644 index 0000000..3e8e1be --- /dev/null +++ b/lib/docs/html/search/pages_61.html @@ -0,0 +1,26 @@ + + + + + + + + + +
+
Loading...
+
+ +
Searching...
+
No Matches
+ +
+ + diff --git a/lib/docs/html/search/pages_61.js b/lib/docs/html/search/pages_61.js new file mode 100644 index 0000000..bbd2eef --- /dev/null +++ b/lib/docs/html/search/pages_61.js @@ -0,0 +1,4 @@ +var searchData= +[ + ['api_20documentation',['API Documentation',['../index.html',1,'']]] +]; diff --git a/lib/docs/html/search/pages_64.html b/lib/docs/html/search/pages_64.html new file mode 100644 index 0000000..fc94761 --- /dev/null +++ b/lib/docs/html/search/pages_64.html @@ -0,0 +1,26 @@ + + + + + + + + + +
+
Loading...
+
+ +
Searching...
+
No Matches
+ +
+ + diff --git a/lib/docs/html/search/pages_64.js b/lib/docs/html/search/pages_64.js new file mode 100644 index 0000000..038da54 --- /dev/null +++ b/lib/docs/html/search/pages_64.js @@ -0,0 +1,4 @@ +var searchData= +[ + ['deprecated_20list',['Deprecated List',['../deprecated.html',1,'']]] +]; diff --git a/lib/docs/html/search/search.css b/lib/docs/html/search/search.css new file mode 100644 index 0000000..b80e8a7 --- /dev/null +++ b/lib/docs/html/search/search.css @@ -0,0 +1,271 @@ +/*---------------- Search Box */ + +#FSearchBox { + float: left; +} + +#MSearchBox { + white-space : nowrap; + position: absolute; + float: none; + display: inline; + margin-top: 8px; + right: 0px; + width: 170px; + z-index: 102; + background-color: white; +} + +#MSearchBox .left +{ + display:block; + position:absolute; + left:10px; + width:20px; + height:19px; + background:url('search_l.png') no-repeat; + background-position:right; +} + +#MSearchSelect { + display:block; + position:absolute; + width:20px; + height:19px; +} + +.left #MSearchSelect { + left:4px; +} + +.right #MSearchSelect { + right:5px; +} + +#MSearchField { + display:block; + position:absolute; + height:19px; + background:url('search_m.png') repeat-x; + border:none; + width:111px; + margin-left:20px; + padding-left:4px; + color: #909090; + outline: none; + font: 9pt Arial, Verdana, sans-serif; +} + +#FSearchBox #MSearchField { + margin-left:15px; +} + +#MSearchBox .right { + display:block; + position:absolute; + right:10px; + top:0px; + width:20px; + height:19px; + background:url('search_r.png') no-repeat; + background-position:left; +} + +#MSearchClose { + display: none; + position: absolute; + top: 4px; + background : none; + border: none; + margin: 0px 4px 0px 0px; + padding: 0px 0px; + outline: none; +} + +.left #MSearchClose { + left: 6px; +} + +.right #MSearchClose { + right: 2px; +} + +.MSearchBoxActive #MSearchField { + color: #000000; +} + +/*---------------- Search filter selection */ + +#MSearchSelectWindow { + display: none; + position: absolute; + left: 0; top: 0; + border: 1px solid #6B93C9; + background-color: #F7F9FC; + z-index: 1; + padding-top: 4px; + padding-bottom: 4px; + -moz-border-radius: 4px; + -webkit-border-top-left-radius: 4px; + -webkit-border-top-right-radius: 4px; + -webkit-border-bottom-left-radius: 4px; + -webkit-border-bottom-right-radius: 4px; + -webkit-box-shadow: 5px 5px 5px rgba(0, 0, 0, 0.15); +} + +.SelectItem { + font: 8pt Arial, Verdana, sans-serif; + padding-left: 2px; + padding-right: 12px; + border: 0px; +} + +span.SelectionMark { + margin-right: 4px; + font-family: monospace; + outline-style: none; + text-decoration: none; +} + +a.SelectItem { + display: block; + outline-style: none; + color: #000000; + text-decoration: none; + padding-left: 6px; + padding-right: 12px; +} + +a.SelectItem:focus, +a.SelectItem:active { + color: #000000; + outline-style: none; + text-decoration: none; +} + +a.SelectItem:hover { + color: #FFFFFF; + background-color: #27436C; + outline-style: none; + text-decoration: none; + cursor: pointer; + display: block; +} + +/*---------------- Search results window */ + +iframe#MSearchResults { + width: 60ex; + height: 15em; +} + +#MSearchResultsWindow { + display: none; + position: absolute; + left: 0; top: 0; + border: 1px solid #000; + background-color: #E7EDF6; +} + +/* ----------------------------------- */ + + +#SRIndex { + clear:both; + padding-bottom: 15px; +} + +.SREntry { + font-size: 10pt; + padding-left: 1ex; +} + +.SRPage .SREntry { + font-size: 8pt; + padding: 1px 5px; +} + +body.SRPage { + margin: 5px 2px; +} + +.SRChildren { + padding-left: 3ex; padding-bottom: .5em +} + +.SRPage .SRChildren { + display: none; +} + +.SRSymbol { + font-weight: bold; + color: #2B4B78; + font-family: Arial, Verdana, sans-serif; + text-decoration: none; + outline: none; +} + +a.SRScope { + display: block; + color: #2B4B78; + font-family: Arial, Verdana, sans-serif; + text-decoration: none; + outline: none; +} + +a.SRSymbol:focus, a.SRSymbol:active, +a.SRScope:focus, a.SRScope:active { + text-decoration: underline; +} + +span.SRScope { + padding-left: 4px; +} + +.SRPage .SRStatus { + padding: 2px 5px; + font-size: 8pt; + font-style: italic; +} + +.SRResult { + display: none; +} + +DIV.searchresults { + margin-left: 10px; + margin-right: 10px; +} + +/*---------------- External search page results */ + +.searchresult { + background-color: #EAF0F7; +} + +.pages b { + color: white; + padding: 5px 5px 3px 5px; + background-image: url("../tab_a.png"); + background-repeat: repeat-x; + text-shadow: 0 1px 1px #000000; +} + +.pages { + line-height: 17px; + margin-left: 4px; + text-decoration: none; +} + +.hl { + font-weight: bold; +} + +#searchresults { + margin-bottom: 20px; +} + +.searchpages { + margin-top: 10px; +} + diff --git a/lib/docs/html/search/search.js b/lib/docs/html/search/search.js new file mode 100644 index 0000000..4589058 --- /dev/null +++ b/lib/docs/html/search/search.js @@ -0,0 +1,807 @@ +// Search script generated by doxygen +// Copyright (C) 2009 by Dimitri van Heesch. + +// The code in this file is loosly based on main.js, part of Natural Docs, +// which is Copyright (C) 2003-2008 Greg Valure +// Natural Docs is licensed under the GPL. + +var indexSectionsWithContent = +{ + 0: "0000000000000000000000000000000000001000000000000000000000000000000000000000000000000000000000010111111111011111101111110000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000", + 1: "0000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000010000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000", + 2: "0000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000010000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000", + 3: "0000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000111011011000000101111000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000", + 4: "0000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000010111111111011111101111110000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000", + 5: "0000000000000000000000000000000000001000000000000000000000000000000000000000000000000000000000000001011110011000101110000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000", + 6: "0000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000100100000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000" +}; + +var indexSectionNames = +{ + 0: "all", + 1: "classes", + 2: "namespaces", + 3: "files", + 4: "functions", + 5: "variables", + 6: "pages" +}; + +function convertToId(search) +{ + var result = ''; + for (i=0;i do a search + { + this.Search(); + } + } + + this.OnSearchSelectKey = function(evt) + { + var e = (evt) ? evt : window.event; // for IE + if (e.keyCode==40 && this.searchIndex0) // Up + { + this.searchIndex--; + this.OnSelectItem(this.searchIndex); + } + else if (e.keyCode==13 || e.keyCode==27) + { + this.OnSelectItem(this.searchIndex); + this.CloseSelectionWindow(); + this.DOMSearchField().focus(); + } + return false; + } + + // --------- Actions + + // Closes the results window. + this.CloseResultsWindow = function() + { + this.DOMPopupSearchResultsWindow().style.display = 'none'; + this.DOMSearchClose().style.display = 'none'; + this.Activate(false); + } + + this.CloseSelectionWindow = function() + { + this.DOMSearchSelectWindow().style.display = 'none'; + } + + // Performs a search. + this.Search = function() + { + this.keyTimeout = 0; + + // strip leading whitespace + var searchValue = this.DOMSearchField().value.replace(/^ +/, ""); + + var code = searchValue.toLowerCase().charCodeAt(0); + var hexCode; + if (code<16) + { + hexCode="0"+code.toString(16); + } + else + { + hexCode=code.toString(16); + } + + var resultsPage; + var resultsPageWithSearch; + var hasResultsPage; + + if (indexSectionsWithContent[this.searchIndex].charAt(code) == '1') + { + resultsPage = this.resultsPath + '/' + indexSectionNames[this.searchIndex] + '_' + hexCode + '.html'; + resultsPageWithSearch = resultsPage+'?'+escape(searchValue); + hasResultsPage = true; + } + else // nothing available for this search term + { + resultsPage = this.resultsPath + '/nomatches.html'; + resultsPageWithSearch = resultsPage; + hasResultsPage = false; + } + + window.frames.MSearchResults.location = resultsPageWithSearch; + var domPopupSearchResultsWindow = this.DOMPopupSearchResultsWindow(); + + if (domPopupSearchResultsWindow.style.display!='block') + { + var domSearchBox = this.DOMSearchBox(); + this.DOMSearchClose().style.display = 'inline'; + if (this.insideFrame) + { + var domPopupSearchResults = this.DOMPopupSearchResults(); + domPopupSearchResultsWindow.style.position = 'relative'; + domPopupSearchResultsWindow.style.display = 'block'; + var width = document.body.clientWidth - 8; // the -8 is for IE :-( + domPopupSearchResultsWindow.style.width = width + 'px'; + domPopupSearchResults.style.width = width + 'px'; + } + else + { + var domPopupSearchResults = this.DOMPopupSearchResults(); + var left = getXPos(domSearchBox) + 150; // domSearchBox.offsetWidth; + var top = getYPos(domSearchBox) + 20; // domSearchBox.offsetHeight + 1; + domPopupSearchResultsWindow.style.display = 'block'; + left -= domPopupSearchResults.offsetWidth; + domPopupSearchResultsWindow.style.top = top + 'px'; + domPopupSearchResultsWindow.style.left = left + 'px'; + } + } + + this.lastSearchValue = searchValue; + this.lastResultsPage = resultsPage; + } + + // -------- Activation Functions + + // Activates or deactivates the search panel, resetting things to + // their default values if necessary. + this.Activate = function(isActive) + { + if (isActive || // open it + this.DOMPopupSearchResultsWindow().style.display == 'block' + ) + { + this.DOMSearchBox().className = 'MSearchBoxActive'; + + var searchField = this.DOMSearchField(); + + if (searchField.value == this.searchLabel) // clear "Search" term upon entry + { + searchField.value = ''; + this.searchActive = true; + } + } + else if (!isActive) // directly remove the panel + { + this.DOMSearchBox().className = 'MSearchBoxInactive'; + this.DOMSearchField().value = this.searchLabel; + this.searchActive = false; + this.lastSearchValue = '' + this.lastResultsPage = ''; + } + } +} + +// ----------------------------------------------------------------------- + +// The class that handles everything on the search results page. +function SearchResults(name) +{ + // The number of matches from the last run of . + this.lastMatchCount = 0; + this.lastKey = 0; + this.repeatOn = false; + + // Toggles the visibility of the passed element ID. + this.FindChildElement = function(id) + { + var parentElement = document.getElementById(id); + var element = parentElement.firstChild; + + while (element && element!=parentElement) + { + if (element.nodeName == 'DIV' && element.className == 'SRChildren') + { + return element; + } + + if (element.nodeName == 'DIV' && element.hasChildNodes()) + { + element = element.firstChild; + } + else if (element.nextSibling) + { + element = element.nextSibling; + } + else + { + do + { + element = element.parentNode; + } + while (element && element!=parentElement && !element.nextSibling); + + if (element && element!=parentElement) + { + element = element.nextSibling; + } + } + } + } + + this.Toggle = function(id) + { + var element = this.FindChildElement(id); + if (element) + { + if (element.style.display == 'block') + { + element.style.display = 'none'; + } + else + { + element.style.display = 'block'; + } + } + } + + // Searches for the passed string. If there is no parameter, + // it takes it from the URL query. + // + // Always returns true, since other documents may try to call it + // and that may or may not be possible. + this.Search = function(search) + { + if (!search) // get search word from URL + { + search = window.location.search; + search = search.substring(1); // Remove the leading '?' + search = unescape(search); + } + + search = search.replace(/^ +/, ""); // strip leading spaces + search = search.replace(/ +$/, ""); // strip trailing spaces + search = search.toLowerCase(); + search = convertToId(search); + + var resultRows = document.getElementsByTagName("div"); + var matches = 0; + + var i = 0; + while (i < resultRows.length) + { + var row = resultRows.item(i); + if (row.className == "SRResult") + { + var rowMatchName = row.id.toLowerCase(); + rowMatchName = rowMatchName.replace(/^sr\d*_/, ''); // strip 'sr123_' + + if (search.length<=rowMatchName.length && + rowMatchName.substr(0, search.length)==search) + { + row.style.display = 'block'; + matches++; + } + else + { + row.style.display = 'none'; + } + } + i++; + } + document.getElementById("Searching").style.display='none'; + if (matches == 0) // no results + { + document.getElementById("NoMatches").style.display='block'; + } + else // at least one result + { + document.getElementById("NoMatches").style.display='none'; + } + this.lastMatchCount = matches; + return true; + } + + // return the first item with index index or higher that is visible + this.NavNext = function(index) + { + var focusItem; + while (1) + { + var focusName = 'Item'+index; + focusItem = document.getElementById(focusName); + if (focusItem && focusItem.parentNode.parentNode.style.display=='block') + { + break; + } + else if (!focusItem) // last element + { + break; + } + focusItem=null; + index++; + } + return focusItem; + } + + this.NavPrev = function(index) + { + var focusItem; + while (1) + { + var focusName = 'Item'+index; + focusItem = document.getElementById(focusName); + if (focusItem && focusItem.parentNode.parentNode.style.display=='block') + { + break; + } + else if (!focusItem) // last element + { + break; + } + focusItem=null; + index--; + } + return focusItem; + } + + this.ProcessKeys = function(e) + { + if (e.type == "keydown") + { + this.repeatOn = false; + this.lastKey = e.keyCode; + } + else if (e.type == "keypress") + { + if (!this.repeatOn) + { + if (this.lastKey) this.repeatOn = true; + return false; // ignore first keypress after keydown + } + } + else if (e.type == "keyup") + { + this.lastKey = 0; + this.repeatOn = false; + } + return this.lastKey!=0; + } + + this.Nav = function(evt,itemIndex) + { + var e = (evt) ? evt : window.event; // for IE + if (e.keyCode==13) return true; + if (!this.ProcessKeys(e)) return false; + + if (this.lastKey==38) // Up + { + var newIndex = itemIndex-1; + var focusItem = this.NavPrev(newIndex); + if (focusItem) + { + var child = this.FindChildElement(focusItem.parentNode.parentNode.id); + if (child && child.style.display == 'block') // children visible + { + var n=0; + var tmpElem; + while (1) // search for last child + { + tmpElem = document.getElementById('Item'+newIndex+'_c'+n); + if (tmpElem) + { + focusItem = tmpElem; + } + else // found it! + { + break; + } + n++; + } + } + } + if (focusItem) + { + focusItem.focus(); + } + else // return focus to search field + { + parent.document.getElementById("MSearchField").focus(); + } + } + else if (this.lastKey==40) // Down + { + var newIndex = itemIndex+1; + var focusItem; + var item = document.getElementById('Item'+itemIndex); + var elem = this.FindChildElement(item.parentNode.parentNode.id); + if (elem && elem.style.display == 'block') // children visible + { + focusItem = document.getElementById('Item'+itemIndex+'_c0'); + } + if (!focusItem) focusItem = this.NavNext(newIndex); + if (focusItem) focusItem.focus(); + } + else if (this.lastKey==39) // Right + { + var item = document.getElementById('Item'+itemIndex); + var elem = this.FindChildElement(item.parentNode.parentNode.id); + if (elem) elem.style.display = 'block'; + } + else if (this.lastKey==37) // Left + { + var item = document.getElementById('Item'+itemIndex); + var elem = this.FindChildElement(item.parentNode.parentNode.id); + if (elem) elem.style.display = 'none'; + } + else if (this.lastKey==27) // Escape + { + parent.searchBox.CloseResultsWindow(); + parent.document.getElementById("MSearchField").focus(); + } + else if (this.lastKey==13) // Enter + { + return true; + } + return false; + } + + this.NavChild = function(evt,itemIndex,childIndex) + { + var e = (evt) ? evt : window.event; // for IE + if (e.keyCode==13) return true; + if (!this.ProcessKeys(e)) return false; + + if (this.lastKey==38) // Up + { + if (childIndex>0) + { + var newIndex = childIndex-1; + document.getElementById('Item'+itemIndex+'_c'+newIndex).focus(); + } + else // already at first child, jump to parent + { + document.getElementById('Item'+itemIndex).focus(); + } + } + else if (this.lastKey==40) // Down + { + var newIndex = childIndex+1; + var elem = document.getElementById('Item'+itemIndex+'_c'+newIndex); + if (!elem) // last child, jump to parent next parent + { + elem = this.NavNext(itemIndex+1); + } + if (elem) + { + elem.focus(); + } + } + else if (this.lastKey==27) // Escape + { + parent.searchBox.CloseResultsWindow(); + parent.document.getElementById("MSearchField").focus(); + } + else if (this.lastKey==13) // Enter + { + return true; + } + return false; + } +} + +function setKeyActions(elem,action) +{ + elem.setAttribute('onkeydown',action); + elem.setAttribute('onkeypress',action); + elem.setAttribute('onkeyup',action); +} + +function setClassAttr(elem,attr) +{ + elem.setAttribute('class',attr); + elem.setAttribute('className',attr); +} + +function createResults() +{ + var results = document.getElementById("SRResults"); + for (var e=0; ek7RCwB~R6VQOP#AvB$vH7i{6H{96zot$7cZT<7246EF5Np6N}+$IbiG6W zg#87A+NFaX+=_^xM1#gCtshC=E{%9^uQX_%?YwXvo{#q&MnpJ8uh(O?ZRc&~_1%^SsPxG@rfElJg-?U zm!Cz-IOn(qJP3kDp-^~qt+FGbl=5jNli^Wj_xIBG{Rc0en{!oFvyoNC7{V~T8}b>| z=jL2WIReZzX(YN(_9fV;BBD$VXQIxNasAL8ATvEu822WQ%mvv4FO#qs` BFGc_W literal 0 HcmV?d00001 diff --git a/lib/docs/html/search/search_r.png b/lib/docs/html/search/search_r.png new file mode 100644 index 0000000000000000000000000000000000000000..97ee8b439687084201b79c6f776a41f495c6392a GIT binary patch literal 612 zcmV-q0-ODbP)PbXFRCwB?)W514K@j&X?z2*SxFI6-@HT2E2K=9X9%Pb zEK*!TBw&g(DMC;|A)uGlRkOS9vd-?zNs%bR4d$w+ox_iFnE8fvIvv7^5<(>Te12Li z7C)9srCzmK{ZcNM{YIl9j{DePFgOWiS%xG@5CnnnJa4nvY<^glbz7^|-ZY!dUkAwd z{gaTC@_>b5h~;ug#R0wRL0>o5!hxm*s0VW?8dr}O#zXTRTnrQm_Z7z1Mrnx>&p zD4qifUjzLvbVVWi?l?rUzwt^sdb~d!f_LEhsRVIXZtQ=qSxuxqm zEX#tf>$?M_Y1-LSDT)HqG?`%-%ZpY!#{N!rcNIiL;G7F0`l?)mNGTD9;f9F5Up3Kg zw}a<-JylhG&;=!>B+fZaCX+?C+kHYrP%c?X2!Zu_olK|GcS4A70HEy;vn)I0>0kLH z`jc(WIaaHc7!HS@f*^R^Znx8W=_jIl2oWJoQ*h1^$FX!>*PqR1J8k|fw}w_y}TpE>7m8DqDO<3z`OzXt$ccSejbEZCg@0000 + + + + + + + + +
+
Loading...
+
+ +
Searching...
+
No Matches
+ +
+ + diff --git a/lib/docs/html/search/variables_24.js b/lib/docs/html/search/variables_24.js new file mode 100644 index 0000000..22fbaec --- /dev/null +++ b/lib/docs/html/search/variables_24.js @@ -0,0 +1,24 @@ +var searchData= +[ + ['_24cgrouplist',['$cgroupList',['../class_team_speak3___node___server.html#ae5a5b2061a93f754afbb410f28e09415',1,'TeamSpeak3_Node_Server']]], + ['_24channellist',['$channelList',['../class_team_speak3___node___server.html#aec962cb88b2aff33e055e9d62992bbd8',1,'TeamSpeak3_Node_Server']]], + ['_24clientlist',['$clientList',['../class_team_speak3___node___server.html#a3f25f20028741a14cc652779159707cb',1,'TeamSpeak3_Node_Server']]], + ['_24exclude_5fquery_5fclients',['$exclude_query_clients',['../class_team_speak3___node___host.html#aebf44520f2388654542193cbaeb1ffe6',1,'TeamSpeak3_Node_Host']]], + ['_24nodeid',['$nodeId',['../class_team_speak3___node___abstract.html#ac1bdee23c7d066edf3d6cb8e75999887',1,'TeamSpeak3_Node_Abstract']]], + ['_24nodeinfo',['$nodeInfo',['../class_team_speak3___node___abstract.html#a50699be5fe1e43f7ae2e528db3c1098b',1,'TeamSpeak3_Node_Abstract']]], + ['_24nodelist',['$nodeList',['../class_team_speak3___node___abstract.html#a37b39fa104ce36c0f0ea142934c05346',1,'TeamSpeak3_Node_Abstract']]], + ['_24parent',['$parent',['../class_team_speak3___node___abstract.html#a14a79cc9ca202ba4dbfc054f0c18583f',1,'TeamSpeak3_Node_Abstract']]], + ['_24permissioncats',['$permissionCats',['../class_team_speak3___node___host.html#a1cad8d64ec44907edc6931b1875bfa41',1,'TeamSpeak3_Node_Host']]], + ['_24permissionends',['$permissionEnds',['../class_team_speak3___node___host.html#a8875fdbef6f0a4e1948206d21b149454',1,'TeamSpeak3_Node_Host']]], + ['_24permissionlist',['$permissionList',['../class_team_speak3___node___host.html#af95c28ba0639e7d70276129a84e7d8a3',1,'TeamSpeak3_Node_Host']]], + ['_24position',['$position',['../class_team_speak3___helper___string.html#a4b151b1096800c2e319ae82007808683',1,'TeamSpeak3_Helper_String']]], + ['_24predefined_5fquery_5fname',['$predefined_query_name',['../class_team_speak3___node___host.html#ac85d68211e51360f42e0d188f7f15e69',1,'TeamSpeak3_Node_Host']]], + ['_24server',['$server',['../class_team_speak3___node___abstract.html#acadc746cd7eb244d61f195494924f6b8',1,'TeamSpeak3_Node_Abstract']]], + ['_24serverlist',['$serverList',['../class_team_speak3___node___host.html#a657df059e9d5c25b8106dea2823270d2',1,'TeamSpeak3_Node_Host']]], + ['_24sgrouplist',['$sgroupList',['../class_team_speak3___node___server.html#a9c4ce4a5649ba8aa595a7f2fdafdf951',1,'TeamSpeak3_Node_Server']]], + ['_24sort_5fclients_5fchannels',['$sort_clients_channels',['../class_team_speak3___node___host.html#a9fdc4c2abeecfaef1b677c072f0f0cb2',1,'TeamSpeak3_Node_Host']]], + ['_24start_5foffline_5fvirtual',['$start_offline_virtual',['../class_team_speak3___node___host.html#ad68c4cece91f5ad117e157fa1bd176ba',1,'TeamSpeak3_Node_Host']]], + ['_24storage',['$storage',['../class_team_speak3___node___abstract.html#a33efbacf1a9aa094ccc39b0b25f3d369',1,'TeamSpeak3_Node_Abstract']]], + ['_24version',['$version',['../class_team_speak3___node___host.html#a8f92fb11501c8888349123fb04dae58c',1,'TeamSpeak3_Node_Host']]], + ['_24whoami',['$whoami',['../class_team_speak3___node___host.html#ab91d6f68668f2680f1703a17eaf04594',1,'TeamSpeak3_Node_Host']]] +]; diff --git a/lib/docs/html/search/variables_63.html b/lib/docs/html/search/variables_63.html new file mode 100644 index 0000000..ea9fcda --- /dev/null +++ b/lib/docs/html/search/variables_63.html @@ -0,0 +1,26 @@ + + + + + + + + + +
+
Loading...
+
+ +
Searching...
+
No Matches
+ +
+ + diff --git a/lib/docs/html/search/variables_63.js b/lib/docs/html/search/variables_63.js new file mode 100644 index 0000000..d1a9a81 --- /dev/null +++ b/lib/docs/html/search/variables_63.js @@ -0,0 +1,14 @@ +var searchData= +[ + ['client_5ftype_5fregular',['CLIENT_TYPE_REGULAR',['../class_team_speak3.html#ae2f58969a8868c4793c485d63e6e7f05',1,'TeamSpeak3']]], + ['client_5ftype_5fserverquery',['CLIENT_TYPE_SERVERQUERY',['../class_team_speak3.html#a3c3b0109548e9a41717d64db57f54b6a',1,'TeamSpeak3']]], + ['codec_5fcelt_5fmono',['CODEC_CELT_MONO',['../class_team_speak3.html#a8706d107a6d0bd56003436cf91931015',1,'TeamSpeak3']]], + ['codec_5fcrypt_5fdisabled',['CODEC_CRYPT_DISABLED',['../class_team_speak3.html#a204ba3447155504ad79532e02b0047c8',1,'TeamSpeak3']]], + ['codec_5fcrypt_5fenabled',['CODEC_CRYPT_ENABLED',['../class_team_speak3.html#af264159fd49c066ad3e88b475a168e45',1,'TeamSpeak3']]], + ['codec_5fcrypt_5findividual',['CODEC_CRYPT_INDIVIDUAL',['../class_team_speak3.html#af4beb7ff503847abc4d8f00fa4a14929',1,'TeamSpeak3']]], + ['codec_5fopus_5fmusic',['CODEC_OPUS_MUSIC',['../class_team_speak3.html#ad86387b6183780d2af6a1918552fc00b',1,'TeamSpeak3']]], + ['codec_5fopus_5fvoice',['CODEC_OPUS_VOICE',['../class_team_speak3.html#ac8a12a60994f2949c63e21d8915c8afa',1,'TeamSpeak3']]], + ['codec_5fspeex_5fnarrowband',['CODEC_SPEEX_NARROWBAND',['../class_team_speak3.html#a73cb8b928682f11db10d5f4bf92c579d',1,'TeamSpeak3']]], + ['codec_5fspeex_5fultrawideband',['CODEC_SPEEX_ULTRAWIDEBAND',['../class_team_speak3.html#ab1b79661570e52e80cb9382286c3f0a6',1,'TeamSpeak3']]], + ['codec_5fspeex_5fwideband',['CODEC_SPEEX_WIDEBAND',['../class_team_speak3.html#a7e144effeaf513a660467a0dadd1ae97',1,'TeamSpeak3']]] +]; diff --git a/lib/docs/html/search/variables_65.html b/lib/docs/html/search/variables_65.html new file mode 100644 index 0000000..9b98f66 --- /dev/null +++ b/lib/docs/html/search/variables_65.html @@ -0,0 +1,26 @@ + + + + + + + + + +
+
Loading...
+
+ +
Searching...
+
No Matches
+ +
+ + diff --git a/lib/docs/html/search/variables_65.js b/lib/docs/html/search/variables_65.js new file mode 100644 index 0000000..947b4f4 --- /dev/null +++ b/lib/docs/html/search/variables_65.js @@ -0,0 +1,5 @@ +var searchData= +[ + ['error',['ERROR',['../class_team_speak3.html#a5e20ff014c021e5dc0f04777b272ec84',1,'TeamSpeak3']]], + ['event',['EVENT',['../class_team_speak3.html#a4dbceb88091137f08da2f78d893a22c9',1,'TeamSpeak3']]] +]; diff --git a/lib/docs/html/search/variables_66.html b/lib/docs/html/search/variables_66.html new file mode 100644 index 0000000..67d53d8 --- /dev/null +++ b/lib/docs/html/search/variables_66.html @@ -0,0 +1,26 @@ + + + + + + + + + +
+
Loading...
+
+ +
Searching...
+
No Matches
+ +
+ + diff --git a/lib/docs/html/search/variables_66.js b/lib/docs/html/search/variables_66.js new file mode 100644 index 0000000..37d5e26 --- /dev/null +++ b/lib/docs/html/search/variables_66.js @@ -0,0 +1,5 @@ +var searchData= +[ + ['file_5ftype_5fdirectory',['FILE_TYPE_DIRECTORY',['../class_team_speak3.html#a0dfea6a5fe76141895e0f2900e8e4e52',1,'TeamSpeak3']]], + ['file_5ftype_5fregular',['FILE_TYPE_REGULAR',['../class_team_speak3.html#aec926b29e75ca080eb7fb8fbf69f9ab9',1,'TeamSpeak3']]] +]; diff --git a/lib/docs/html/search/variables_67.html b/lib/docs/html/search/variables_67.html new file mode 100644 index 0000000..e68467b --- /dev/null +++ b/lib/docs/html/search/variables_67.html @@ -0,0 +1,26 @@ + + + + + + + + + +
+
Loading...
+
+ +
Searching...
+
No Matches
+ +
+ + diff --git a/lib/docs/html/search/variables_67.js b/lib/docs/html/search/variables_67.js new file mode 100644 index 0000000..9eba776 --- /dev/null +++ b/lib/docs/html/search/variables_67.js @@ -0,0 +1,12 @@ +var searchData= +[ + ['greet',['GREET',['../class_team_speak3.html#a483d97eee2596af11821f74c6d1b83e0',1,'TeamSpeak3']]], + ['group_5fdbtype_5fregular',['GROUP_DBTYPE_REGULAR',['../class_team_speak3.html#a6e018ed33e01f80861a9649f5fbdcb05',1,'TeamSpeak3']]], + ['group_5fdbtype_5fserverquery',['GROUP_DBTYPE_SERVERQUERY',['../class_team_speak3.html#a197a03a9e83e5663d0f071df18fb127d',1,'TeamSpeak3']]], + ['group_5fdbtype_5ftemplate',['GROUP_DBTYPE_TEMPLATE',['../class_team_speak3.html#aeeab1204791458d7e543aedf5c4c8699',1,'TeamSpeak3']]], + ['group_5fidentifiy_5fstrongest',['GROUP_IDENTIFIY_STRONGEST',['../class_team_speak3.html#ac8dbaaf31bc8b339287692ae80abae94',1,'TeamSpeak3']]], + ['group_5fidentifiy_5fweakest',['GROUP_IDENTIFIY_WEAKEST',['../class_team_speak3.html#a7e2d5457e1faace304311ca1617c283b',1,'TeamSpeak3']]], + ['group_5fnamemode_5fbefore',['GROUP_NAMEMODE_BEFORE',['../class_team_speak3.html#ac9179c4a74a5c0cd269e6639868f3b57',1,'TeamSpeak3']]], + ['group_5fnamemode_5fbehind',['GROUP_NAMEMODE_BEHIND',['../class_team_speak3.html#af93218df38a498fd730ad2f2676f6567',1,'TeamSpeak3']]], + ['group_5fnamemode_5fhidden',['GROUP_NAMEMODE_HIDDEN',['../class_team_speak3.html#a9bfa984813e9074be19a7cba3a8673d3',1,'TeamSpeak3']]] +]; diff --git a/lib/docs/html/search/variables_68.html b/lib/docs/html/search/variables_68.html new file mode 100644 index 0000000..cf24dc5 --- /dev/null +++ b/lib/docs/html/search/variables_68.html @@ -0,0 +1,26 @@ + + + + + + + + + +
+
Loading...
+
+ +
Searching...
+
No Matches
+ +
+ + diff --git a/lib/docs/html/search/variables_68.js b/lib/docs/html/search/variables_68.js new file mode 100644 index 0000000..f2e5fe6 --- /dev/null +++ b/lib/docs/html/search/variables_68.js @@ -0,0 +1,10 @@ +var searchData= +[ + ['hostbanner_5fignore_5faspect',['HOSTBANNER_IGNORE_ASPECT',['../class_team_speak3.html#a0948f6a231bacd72d3455adc3314aadb',1,'TeamSpeak3']]], + ['hostbanner_5fkeep_5faspect',['HOSTBANNER_KEEP_ASPECT',['../class_team_speak3.html#aa9e2a430fd552f4a0c3dec0855a4f8ad',1,'TeamSpeak3']]], + ['hostbanner_5fno_5fadjust',['HOSTBANNER_NO_ADJUST',['../class_team_speak3.html#a5a13321bcb3eff4b51cbe56eb342b701',1,'TeamSpeak3']]], + ['hostmsg_5flog',['HOSTMSG_LOG',['../class_team_speak3.html#a6c155661d55cd61ef79b1fd6413e5880',1,'TeamSpeak3']]], + ['hostmsg_5fmodal',['HOSTMSG_MODAL',['../class_team_speak3.html#a7d044183051509b77831a5546748245e',1,'TeamSpeak3']]], + ['hostmsg_5fmodalquit',['HOSTMSG_MODALQUIT',['../class_team_speak3.html#ad1956014c2a37cf8883bc6e845991597',1,'TeamSpeak3']]], + ['hostmsg_5fnone',['HOSTMSG_NONE',['../class_team_speak3.html#a4350e9a5261f832d44d3b416d5bdcb50',1,'TeamSpeak3']]] +]; diff --git a/lib/docs/html/search/variables_6b.html b/lib/docs/html/search/variables_6b.html new file mode 100644 index 0000000..3b5c057 --- /dev/null +++ b/lib/docs/html/search/variables_6b.html @@ -0,0 +1,26 @@ + + + + + + + + + +
+
Loading...
+
+ +
Searching...
+
No Matches
+ +
+ + diff --git a/lib/docs/html/search/variables_6b.js b/lib/docs/html/search/variables_6b.js new file mode 100644 index 0000000..68aae33 --- /dev/null +++ b/lib/docs/html/search/variables_6b.js @@ -0,0 +1,5 @@ +var searchData= +[ + ['kick_5fchannel',['KICK_CHANNEL',['../class_team_speak3.html#ab6a4d55688e33c16004508fff14c81da',1,'TeamSpeak3']]], + ['kick_5fserver',['KICK_SERVER',['../class_team_speak3.html#ae9df1f0980b1d3e9638b3a8084cc5234',1,'TeamSpeak3']]] +]; diff --git a/lib/docs/html/search/variables_6c.html b/lib/docs/html/search/variables_6c.html new file mode 100644 index 0000000..30533ad --- /dev/null +++ b/lib/docs/html/search/variables_6c.html @@ -0,0 +1,26 @@ + + + + + + + + + +
+
Loading...
+
+ +
Searching...
+
No Matches
+ +
+ + diff --git a/lib/docs/html/search/variables_6c.js b/lib/docs/html/search/variables_6c.js new file mode 100644 index 0000000..880772d --- /dev/null +++ b/lib/docs/html/search/variables_6c.js @@ -0,0 +1,10 @@ +var searchData= +[ + ['lib_5fversion',['LIB_VERSION',['../class_team_speak3.html#a7d31dad145adb2a70ac9ae92adeebb5b',1,'TeamSpeak3']]], + ['loglevel_5fcritical',['LOGLEVEL_CRITICAL',['../class_team_speak3.html#a7febc9b704013d3a218171fbf5230998',1,'TeamSpeak3']]], + ['loglevel_5fdebug',['LOGLEVEL_DEBUG',['../class_team_speak3.html#aa157f891770ebc32c3387769419f8bcf',1,'TeamSpeak3']]], + ['loglevel_5fdevel',['LOGLEVEL_DEVEL',['../class_team_speak3.html#a0ac677fa9a62b01a3a2619f874278654',1,'TeamSpeak3']]], + ['loglevel_5ferror',['LOGLEVEL_ERROR',['../class_team_speak3.html#a978acb82eda7f57b72a15c231ed7de26',1,'TeamSpeak3']]], + ['loglevel_5finfo',['LOGLEVEL_INFO',['../class_team_speak3.html#a4b19b7a03ed2787450ea21229854ced8',1,'TeamSpeak3']]], + ['loglevel_5fwarning',['LOGLEVEL_WARNING',['../class_team_speak3.html#a9ac856cab800709d07bc6b53b84d404f',1,'TeamSpeak3']]] +]; diff --git a/lib/docs/html/search/variables_70.html b/lib/docs/html/search/variables_70.html new file mode 100644 index 0000000..091e4bf --- /dev/null +++ b/lib/docs/html/search/variables_70.html @@ -0,0 +1,26 @@ + + + + + + + + + +
+
Loading...
+
+ +
Searching...
+
No Matches
+ +
+ + diff --git a/lib/docs/html/search/variables_70.js b/lib/docs/html/search/variables_70.js new file mode 100644 index 0000000..c312ab3 --- /dev/null +++ b/lib/docs/html/search/variables_70.js @@ -0,0 +1,39 @@ +var searchData= +[ + ['perm_5fcat_5fchannel',['PERM_CAT_CHANNEL',['../class_team_speak3.html#a0f7b54be70a8c790115ca92e98bcbee5',1,'TeamSpeak3']]], + ['perm_5fcat_5fchannel_5faccess',['PERM_CAT_CHANNEL_ACCESS',['../class_team_speak3.html#ac3b12e51946589138a84fdf2c653c9f6',1,'TeamSpeak3']]], + ['perm_5fcat_5fchannel_5fcreate',['PERM_CAT_CHANNEL_CREATE',['../class_team_speak3.html#aff66f6e403b88244a46c5cddefd63853',1,'TeamSpeak3']]], + ['perm_5fcat_5fchannel_5fdelete',['PERM_CAT_CHANNEL_DELETE',['../class_team_speak3.html#a2615a76afeecf68eae3ba5f2e908373c',1,'TeamSpeak3']]], + ['perm_5fcat_5fchannel_5finformation',['PERM_CAT_CHANNEL_INFORMATION',['../class_team_speak3.html#ae70bc3d695fcfe6db61c86fb58c076bd',1,'TeamSpeak3']]], + ['perm_5fcat_5fchannel_5fmodify',['PERM_CAT_CHANNEL_MODIFY',['../class_team_speak3.html#a511bfe0b317d488a475c044baf3e490a',1,'TeamSpeak3']]], + ['perm_5fcat_5fclient',['PERM_CAT_CLIENT',['../class_team_speak3.html#a47cc2fc667c048d716b054b21ccba9c0',1,'TeamSpeak3']]], + ['perm_5fcat_5fclient_5fadm_5factions',['PERM_CAT_CLIENT_ADM_ACTIONS',['../class_team_speak3.html#aab7ee7ef3548dce162310f5b58e22bce',1,'TeamSpeak3']]], + ['perm_5fcat_5fclient_5fbasics',['PERM_CAT_CLIENT_BASICS',['../class_team_speak3.html#ab5e4b438da7c292ea5985eed88396f4d',1,'TeamSpeak3']]], + ['perm_5fcat_5fclient_5finformation',['PERM_CAT_CLIENT_INFORMATION',['../class_team_speak3.html#a745423668d892edf35aff2dc1d802649',1,'TeamSpeak3']]], + ['perm_5fcat_5fclient_5fmodify',['PERM_CAT_CLIENT_MODIFY',['../class_team_speak3.html#a36c30eb13e8fe039e4c06a45e3e5f35a',1,'TeamSpeak3']]], + ['perm_5fcat_5ffiletransfer',['PERM_CAT_FILETRANSFER',['../class_team_speak3.html#a1fa36fce856fa4d8ee9af0d2147d398a',1,'TeamSpeak3']]], + ['perm_5fcat_5fglobal',['PERM_CAT_GLOBAL',['../class_team_speak3.html#aa5aba89a9024b4e7c7845b115f8e9c40',1,'TeamSpeak3']]], + ['perm_5fcat_5fglobal_5fadm_5factions',['PERM_CAT_GLOBAL_ADM_ACTIONS',['../class_team_speak3.html#a4fa166aef3d0ba5f2204d8b9a257a23b',1,'TeamSpeak3']]], + ['perm_5fcat_5fglobal_5finformation',['PERM_CAT_GLOBAL_INFORMATION',['../class_team_speak3.html#ac1329c48f57dcee568be69b33c778c99',1,'TeamSpeak3']]], + ['perm_5fcat_5fglobal_5fserver_5fmgmt',['PERM_CAT_GLOBAL_SERVER_MGMT',['../class_team_speak3.html#a0f7b0579cd636c1ea7fe5bcdd92dbc09',1,'TeamSpeak3']]], + ['perm_5fcat_5fglobal_5fsettings',['PERM_CAT_GLOBAL_SETTINGS',['../class_team_speak3.html#a5d9945d86f2ab5f1a4934e2604652503',1,'TeamSpeak3']]], + ['perm_5fcat_5fgroup',['PERM_CAT_GROUP',['../class_team_speak3.html#a8cd0b0d4c26e955f67be448039c4a4e2',1,'TeamSpeak3']]], + ['perm_5fcat_5fgroup_5fcreate',['PERM_CAT_GROUP_CREATE',['../class_team_speak3.html#ab413bc7287c76152eb9c51a74385b8a5',1,'TeamSpeak3']]], + ['perm_5fcat_5fgroup_5fdelete',['PERM_CAT_GROUP_DELETE',['../class_team_speak3.html#a2d89a707e37e81732d9e9ba827cd8dd5',1,'TeamSpeak3']]], + ['perm_5fcat_5fgroup_5finformation',['PERM_CAT_GROUP_INFORMATION',['../class_team_speak3.html#aec5b4d0b149798108c05580399923757',1,'TeamSpeak3']]], + ['perm_5fcat_5fgroup_5fmodify',['PERM_CAT_GROUP_MODIFY',['../class_team_speak3.html#aae3f41d88cbf9fbadb9f38dd67027168',1,'TeamSpeak3']]], + ['perm_5fcat_5fneeded_5fmodify_5fpower',['PERM_CAT_NEEDED_MODIFY_POWER',['../class_team_speak3.html#aa534b78937197a0a0739f1fa3c98a8d1',1,'TeamSpeak3']]], + ['perm_5fcat_5fserver',['PERM_CAT_SERVER',['../class_team_speak3.html#aa639ddfd900cc55961633d2e3ca03168',1,'TeamSpeak3']]], + ['perm_5fcat_5fserver_5fadm_5factions',['PERM_CAT_SERVER_ADM_ACTIONS',['../class_team_speak3.html#a2237bc5075c3c354764e42f40a045179',1,'TeamSpeak3']]], + ['perm_5fcat_5fserver_5finformation',['PERM_CAT_SERVER_INFORMATION',['../class_team_speak3.html#adab57311071c4b74b2f221dd747d9f54',1,'TeamSpeak3']]], + ['perm_5fcat_5fserver_5fsettings',['PERM_CAT_SERVER_SETTINGS',['../class_team_speak3.html#a6dd546e23743326565a82accf7d793f6',1,'TeamSpeak3']]], + ['perm_5ftype_5fchannel',['PERM_TYPE_CHANNEL',['../class_team_speak3.html#a57fa7853513872a96f0adf9d3329c59b',1,'TeamSpeak3']]], + ['perm_5ftype_5fchannelclient',['PERM_TYPE_CHANNELCLIENT',['../class_team_speak3.html#a5324e065c2ed9c98c0931654d388610f',1,'TeamSpeak3']]], + ['perm_5ftype_5fchannelgroup',['PERM_TYPE_CHANNELGROUP',['../class_team_speak3.html#a2a930337bd67c2c2893b3afad902b440',1,'TeamSpeak3']]], + ['perm_5ftype_5fclient',['PERM_TYPE_CLIENT',['../class_team_speak3.html#a9ea90147fb0486786931015e4d64abba',1,'TeamSpeak3']]], + ['perm_5ftype_5fservergroup',['PERM_TYPE_SERVERGROUP',['../class_team_speak3.html#a0772e3a79ac03d3acb657e07dad63a0e',1,'TeamSpeak3']]], + ['plugincmd_5fchannel',['PLUGINCMD_CHANNEL',['../class_team_speak3.html#a1017b9d565da82a1a360ecd1074ef882',1,'TeamSpeak3']]], + ['plugincmd_5fchannel_5fsubscribed',['PLUGINCMD_CHANNEL_SUBSCRIBED',['../class_team_speak3.html#ac5519852d33570fbd89e171937f553c2',1,'TeamSpeak3']]], + ['plugincmd_5fclient',['PLUGINCMD_CLIENT',['../class_team_speak3.html#a2bd847d0f20f1d827238304dedaa6b77',1,'TeamSpeak3']]], + ['plugincmd_5fserver',['PLUGINCMD_SERVER',['../class_team_speak3.html#a908573c6bc67e85396a4af21972bfeae',1,'TeamSpeak3']]] +]; diff --git a/lib/docs/html/search/variables_72.html b/lib/docs/html/search/variables_72.html new file mode 100644 index 0000000..0e513f2 --- /dev/null +++ b/lib/docs/html/search/variables_72.html @@ -0,0 +1,26 @@ + + + + + + + + + +
+
Loading...
+
+ +
Searching...
+
No Matches
+ +
+ + diff --git a/lib/docs/html/search/variables_72.js b/lib/docs/html/search/variables_72.js new file mode 100644 index 0000000..a8b29b6 --- /dev/null +++ b/lib/docs/html/search/variables_72.js @@ -0,0 +1,16 @@ +var searchData= +[ + ['ready',['READY',['../class_team_speak3.html#ae31cefccb5993d1b5fa8fa9f52180bfe',1,'TeamSpeak3']]], + ['reason_5fchannel_5fedit',['REASON_CHANNEL_EDIT',['../class_team_speak3.html#a47403f14dad07252a387b8cc7e5d816f',1,'TeamSpeak3']]], + ['reason_5fchannel_5fkick',['REASON_CHANNEL_KICK',['../class_team_speak3.html#a3c394288b3b45df4a039127d1e119517',1,'TeamSpeak3']]], + ['reason_5fchannel_5fupdate',['REASON_CHANNEL_UPDATE',['../class_team_speak3.html#a7d82c5b03e862e2f53313363e1423535',1,'TeamSpeak3']]], + ['reason_5fdisconnect',['REASON_DISCONNECT',['../class_team_speak3.html#ae10cf1e6e6a365cf61eb7e38f6a2315b',1,'TeamSpeak3']]], + ['reason_5fdisconnect_5fshutdown',['REASON_DISCONNECT_SHUTDOWN',['../class_team_speak3.html#a9dcf492812b8b16ffbebcd05ffa1e6bf',1,'TeamSpeak3']]], + ['reason_5fmove',['REASON_MOVE',['../class_team_speak3.html#aad9bd5c1089efa20620cab286052b0f3',1,'TeamSpeak3']]], + ['reason_5fnone',['REASON_NONE',['../class_team_speak3.html#afb77656b36c45073e770f13bf0a90e5d',1,'TeamSpeak3']]], + ['reason_5fserver_5fban',['REASON_SERVER_BAN',['../class_team_speak3.html#ad9dc7ed023c1a9be4504ba894a63bee1',1,'TeamSpeak3']]], + ['reason_5fserver_5fkick',['REASON_SERVER_KICK',['../class_team_speak3.html#a931e59afb66273ee4255e43676812726',1,'TeamSpeak3']]], + ['reason_5fserver_5fstop',['REASON_SERVER_STOP',['../class_team_speak3.html#ac48ef3e11414170eecffcd252a637062',1,'TeamSpeak3']]], + ['reason_5fsubscription',['REASON_SUBSCRIPTION',['../class_team_speak3.html#a328b7a4eeed0ecd61865be986aa79f9c',1,'TeamSpeak3']]], + ['reason_5ftimeout',['REASON_TIMEOUT',['../class_team_speak3.html#aea8db94828ad856d0a207d228145e41a',1,'TeamSpeak3']]] +]; diff --git a/lib/docs/html/search/variables_73.html b/lib/docs/html/search/variables_73.html new file mode 100644 index 0000000..3c65150 --- /dev/null +++ b/lib/docs/html/search/variables_73.html @@ -0,0 +1,26 @@ + + + + + + + + + +
+
Loading...
+
+ +
Searching...
+
No Matches
+ +
+ + diff --git a/lib/docs/html/search/variables_73.js b/lib/docs/html/search/variables_73.js new file mode 100644 index 0000000..6c01b60 --- /dev/null +++ b/lib/docs/html/search/variables_73.js @@ -0,0 +1,21 @@ +var searchData= +[ + ['schid',['SCHID',['../class_team_speak3.html#a19d4d49947f93c087729848de6d71986',1,'TeamSpeak3']]], + ['separator_5fcell',['SEPARATOR_CELL',['../class_team_speak3.html#a68cea90e6bd99a1aaf9b19325d0f02bb',1,'TeamSpeak3']]], + ['separator_5fline',['SEPARATOR_LINE',['../class_team_speak3.html#a1a5f95e94ebee25f7a7de47186fd7acc',1,'TeamSpeak3']]], + ['separator_5flist',['SEPARATOR_LIST',['../class_team_speak3.html#a407829d390331e34c6f90d9df78ae6c5',1,'TeamSpeak3']]], + ['separator_5fpair',['SEPARATOR_PAIR',['../class_team_speak3.html#ac9b701c7439f38c391baba51f9b6d1da',1,'TeamSpeak3']]], + ['snapshot_5fbase64',['SNAPSHOT_BASE64',['../class_team_speak3.html#ac9535ce5e98c480aea71d0f149a7c2cb',1,'TeamSpeak3']]], + ['snapshot_5fhexdec',['SNAPSHOT_HEXDEC',['../class_team_speak3.html#a7dfffb36f25a89a472b60275fc3fc4e7',1,'TeamSpeak3']]], + ['snapshot_5fstring',['SNAPSHOT_STRING',['../class_team_speak3.html#af9a20a17b3aaaf60621e4f471f7e300a',1,'TeamSpeak3']]], + ['spacer_5falign_5fcenter',['SPACER_ALIGN_CENTER',['../class_team_speak3.html#aaffe4f52d9d9009a8fd90fb2683e18ce',1,'TeamSpeak3']]], + ['spacer_5falign_5fleft',['SPACER_ALIGN_LEFT',['../class_team_speak3.html#ad7a9fe53817b1d8441eafe1cfed2570e',1,'TeamSpeak3']]], + ['spacer_5falign_5frepeat',['SPACER_ALIGN_REPEAT',['../class_team_speak3.html#a7aa076becfafe9cfb5a6b9eae4c72831',1,'TeamSpeak3']]], + ['spacer_5falign_5fright',['SPACER_ALIGN_RIGHT',['../class_team_speak3.html#ace570a7b5abdbfd89f20145f2757bbcd',1,'TeamSpeak3']]], + ['spacer_5fcustom',['SPACER_CUSTOM',['../class_team_speak3.html#a12e9d78448fe9a2fc19f71a19db33b24',1,'TeamSpeak3']]], + ['spacer_5fdashdotdotline',['SPACER_DASHDOTDOTLINE',['../class_team_speak3.html#a8a46203c06bf7b769b1245eee8c71eca',1,'TeamSpeak3']]], + ['spacer_5fdashdotline',['SPACER_DASHDOTLINE',['../class_team_speak3.html#ab5f7f692edb611a09be65dbe1cc22fd3',1,'TeamSpeak3']]], + ['spacer_5fdashline',['SPACER_DASHLINE',['../class_team_speak3.html#ae0f64ba57dfa729092ae07f0508ad20c',1,'TeamSpeak3']]], + ['spacer_5fdotline',['SPACER_DOTLINE',['../class_team_speak3.html#a1b97ddf3ea3bfb3bac4167cc9853bcf5',1,'TeamSpeak3']]], + ['spacer_5fsolidline',['SPACER_SOLIDLINE',['../class_team_speak3.html#abe21c7855096b6b8d86613897ed1a4bd',1,'TeamSpeak3']]] +]; diff --git a/lib/docs/html/search/variables_74.html b/lib/docs/html/search/variables_74.html new file mode 100644 index 0000000..3a0726b --- /dev/null +++ b/lib/docs/html/search/variables_74.html @@ -0,0 +1,26 @@ + + + + + + + + + +
+
Loading...
+
+ +
Searching...
+
No Matches
+ +
+ + diff --git a/lib/docs/html/search/variables_74.js b/lib/docs/html/search/variables_74.js new file mode 100644 index 0000000..88963d2 --- /dev/null +++ b/lib/docs/html/search/variables_74.js @@ -0,0 +1,8 @@ +var searchData= +[ + ['textmsg_5fchannel',['TEXTMSG_CHANNEL',['../class_team_speak3.html#a69511dec19c2f8ed1268267f09e88124',1,'TeamSpeak3']]], + ['textmsg_5fclient',['TEXTMSG_CLIENT',['../class_team_speak3.html#a1882bc1d9fcbcc353d04d308194010bf',1,'TeamSpeak3']]], + ['textmsg_5fserver',['TEXTMSG_SERVER',['../class_team_speak3.html#a9f1020035b40674a589647e5dc90c95b',1,'TeamSpeak3']]], + ['token_5fchannelgroup',['TOKEN_CHANNELGROUP',['../class_team_speak3.html#ae900e81e1e6607ad4294b17f62112685',1,'TeamSpeak3']]], + ['token_5fservergroup',['TOKEN_SERVERGROUP',['../class_team_speak3.html#add756e636bc8ea39128fdf8361ffd54c',1,'TeamSpeak3']]] +]; diff --git a/lib/docs/html/sync_off.png b/lib/docs/html/sync_off.png new file mode 100644 index 0000000000000000000000000000000000000000..b47312ae7748051bb8bf9758f34c3a5bd02b33f9 GIT binary patch literal 862 zcmV-k1EKthP)t!P;!3$VZZ0JL)L_tMR z!L}jQ2NA&w6-5+9(3ccU1j$3Aq}3oTnuiwZC4?ki$%cMsva>rg&Poiv4(CVC?1b~3 zZ|0ouygHU`zXFg*j#w!^7G+|ZaEbrK9nmS;#eD!fjsyXwiX9>x?E@t8O#CYLiwA(I zB>`AeiK8M9U>tm6qxeiTi&MsjPQcje#npEh+<5uLN%38x04v0a1X%%$*CFwhe&d?G zc)cE7%{&v}Jy4UqB%bIQ>=Z!&E3elJV9S;42C$PR_Nqms0?ZN(fT=kg4z_>s;pnHK znEyYmKuL42>LnlO^7A)vjN7XSTgygDa68}>42$Ks{j@HU1fPLKW(ibn5~xf*!9VR z0FA5Wv3YfgM!z=Jln}0*6T8ovX9 zk99Iwaqi@J?#t(}vfMo5B$tzIwMFb|sOZ-}whG`-y+EezhXUg5+qRq9Ut=Z!R+;JU zSH@EDRHf2#yozV((ls>He#qG*2=GGt+^1JAb2(BNu!0 z)SjzicUC%U^nVD=o52t3<}*1hMZ5p;!aXi`{tfVk{2V{Wnip$*wc38Z*vqwBrh0cr zWzb;^&~^7;n%Z7y-=lEWBvMmUbq08o$36B;Wx4N654{f`1E$uYGANSH?`qQ;pSV*! z>{wsQpAQE(*KS|#OY;LXROPYn^dAfi4gpw&^z%R!xmbaU?PjNobf0HraA?@J04BRV zL?RJJM_vP1{iY5pJwUFwE#m7CVB%CnwSl|zV%Mj(0>FE+OAT&4(as39yi`30n5b59 z;B9Aeqc|*Vs~125YIE&24sJYfj8}K`@R_3al+CdUV0Aq@F}0_Fc(cpEv=YUaqDoAS o9waK@usW^8jp(4-`v$Q3ABr!j^7B5Jy8r+H07*qoM6N<$f>}PA-v9sr literal 0 HcmV?d00001 diff --git a/lib/docs/html/sync_on.png b/lib/docs/html/sync_on.png new file mode 100644 index 0000000000000000000000000000000000000000..426525d0bc1a3fb55cb05db932f1c7913bfea130 GIT binary patch literal 853 zcmV-b1FHOqP)Vx>uHux1<#Dr2o4H9BB8g`SOGwyU}rn4bxUWfA|Gqd5I zd+*$P?yK+h9j5^@DH8Q!g{T%U2*0>3dc*~BM*Ioj#g`$$EYU8SQuhFvJP_ZC&%{l@ z5di>~2604`0!%_wyeHlgZQ_{yM+2}&v-s&L8n<6D@s0Q>Q-amv>kOj;n5_L`v-RMg zzkHLGU3;DnFa@-;KZpTq1RslH056e91i-qzUGU763P&&o{PX-OIcY zp9|pdV)1l#HdPbI4gq*sD=IZXqu10#qftKHvdmcXN)eAnlK>9GBMBO7=WyVIWfaDy z19)lD1g`;(C@YR}czc{z7Zm_Zs8U99Xj`166|(`{8g<3g+TYaGlr#&Xn8T@G|8gu{9f8?R{b;RkFXofxDo5jb)s)TT z-PNURtXp7eTD5@s8fT9KeuLIE6?C-J5(-D|Ssz;ynB6iA!|Wx%^T^K)lI1rZ+iOv; z{H?HFY*G)^hA$JBJ>8diH$H&LX31?9@Hy239cjx*!+I^j|WWsv&wH7=LLFyEZN&FDKi4{^Hbix-Z-S(y_28##e32&3j#CUw+@q&lmq!>w0vu&$|;` zx^|0g2S?2BQ9f@Pp=_iNJ~R0oyV^*ICLMtOWZmSw8;Hepd7o|@F#Mk;lR-SVIUn@!7#~WlCi`n zfS0p+SXl{5#2+FLU*yG>VVig(V4tOd@eFp zFaQs_xpvzdw;wq6>-W^*Gec{c$FU0F_DiZ`x~G72c#XiZ8pS)JLCi`WB$`l{)POjb fYSf%>0Jnbu8?37PyiuzB00000NkvXXu0mjf-L{gh literal 0 HcmV?d00001 diff --git a/lib/docs/html/tab_a.png b/lib/docs/html/tab_a.png new file mode 100644 index 0000000000000000000000000000000000000000..d63fcfc3776939ec330065b6b1827b15a0df38fb GIT binary patch literal 140 zcmeAS@N?(olHy`uVBq!ia0vp^j6kfy!2~3aiye;!Qo)`sjv*C{Z|CmjJ)pqj^8TEX zkmdpp=ecUqDgQ4feGcBX;poY_^J^L|$t~Tib$!{C?v!?iQ{GcJ9p0Z{3E%d*?s!h& q<)8cKrW)Lq{(k6Yb^3GpcQsqrF&^*zw0a%Tcm_{bKbLh*2~7ai);M$k literal 0 HcmV?d00001 diff --git a/lib/docs/html/tab_b.png b/lib/docs/html/tab_b.png new file mode 100644 index 0000000000000000000000000000000000000000..ef257af696fd116d017cce3e7f837f5e36088d5e GIT binary patch literal 175 zcmeAS@N?(olHy`uVBq!ia0vp^j6kfy!2~3aiye;!Qe~bljv*C{Z}0kZ9WoGT{dlsv zS7g%%7r6tW(_??|J6>kV)%0Cb;gJ78)220f0eAk#$Fm>CI>o)`zjp4>RngxsPg&D0;SDo9RmK#!XMtH_PwH bJS1LXBWbitaLad~3m80I{an^LB{Ts5U_wSG literal 0 HcmV?d00001 diff --git a/lib/docs/html/tab_h.png b/lib/docs/html/tab_h.png new file mode 100644 index 0000000000000000000000000000000000000000..0ec5872bd8b0572bc404d6160838beb4c93510b7 GIT binary patch literal 177 zcmeAS@N?(olHy`uVBq!ia0vp^j6kfy!2~3aiye;!QWc&qjv*C{Z}0kZH3dkpe0YEM zgmQ&6|ATe4(dLawodPXwf{yiKYioXeP`bP1cgg&HEaLN$>du_eee(CGQkhtu>$U!g z$8VoFZ0fV>^a7^x=ku0oMXlfBKkw&~H#hzwVW{{cu=H^2!s#gGTwKb7f!MG%~U--Ik&i{v~TCh89yW+ho0&;nxuL7>DujyUP z#d_g=>4x!TKF5D8&;7TxMIhrc$61c4-rgo>*+riy3UN*6yasd|gQu&X%Q~loCIGp; BQ7r%f literal 0 HcmV?d00001 diff --git a/lib/docs/html/tabs.css b/lib/docs/html/tabs.css new file mode 100644 index 0000000..2807fa0 --- /dev/null +++ b/lib/docs/html/tabs.css @@ -0,0 +1,60 @@ +.tabs, .tabs2, .tabs3 { + background-image: url('tab_b.png'); + width: 100%; + z-index: 101; + font-size: 13px; + font-family: 'Lucida Grande',Geneva,Helvetica,Arial,sans-serif; +} + +.tabs2 { + font-size: 10px; +} +.tabs3 { + font-size: 9px; +} + +.tablist { + margin: 0; + padding: 0; + display: table; +} + +.tablist li { + float: left; + display: table-cell; + background-image: url('tab_b.png'); + line-height: 36px; + list-style: none; +} + +.tablist a { + display: block; + padding: 0 20px; + font-weight: bold; + background-image:url('tab_s.png'); + background-repeat:no-repeat; + background-position:right; + color: #16273E; + text-shadow: 0px 1px 1px rgba(255, 255, 255, 0.9); + text-decoration: none; + outline: none; +} + +.tabs3 .tablist a { + padding: 0 10px; +} + +.tablist a:hover { + background-image: url('tab_h.png'); + background-repeat:repeat-x; + color: #fff; + text-shadow: 0px 1px 1px rgba(0, 0, 0, 1.0); + text-decoration: none; +} + +.tablist li.current a { + background-image: url('tab_a.png'); + background-repeat:repeat-x; + color: #fff; + text-shadow: 0px 1px 1px rgba(0, 0, 0, 1.0); +} diff --git a/lib/images/flags/ad.png b/lib/images/flags/ad.png new file mode 100644 index 0000000000000000000000000000000000000000..625ca84f9ec596848d4b967b5556fda897ca7183 GIT binary patch literal 643 zcmV-}0(||6P)S}{rU-#^xW|9%5S{`_G8k=zVG=|5luWB>#JF#yj01oZa& zTu&JQ008~}|NQ&{0055x0sR95`v3p?1_t~7{`v!N`v3d-{`&g=`T6amqXIBA$0h)T zKokWRkpoMx|Go@O4FvhR>O1p+i7`B6t^3)y2dJ<#?4I?d4x-E}Az98Z`2`TmzkmP! z{`(J9{pauh-+zJD{JOYLhW+QSzkh#x`Y&wke*WLjpZ~u9`2XuCr@{^OJ|MkZb_UGR@Z=V>fB*iaq<8P{*B}2u-uMnu#J~U$KrBDL0bT$1_irEqiZcM6WEF7g<|*+% zzkjHi-TwRc=f7_t9|K*?`1?07lmG&V<)V$@{}>pUYZ(~+fDw@M3(WY1!T<=sp}f-o0K!lJ3<>Jc!&VtMslE3ph2^H3FGe(F z4|^}slF1@l1Nxc}^5hjjU=0la|37)k@b@neJ^1|l@87?_{{z(l6@kcKe}Db@_Y267 z<&g#201!YdV6*>2R0EZ*bYA%%2Vi7me5m>mAb?naPGtnD20MY__n-f`0mzg8{s9CK z*hzmtW)s%H$oS{aAAkS?JLxaT`2W9u;n%DD1Q-B%#%TuGpFSS|0000&5HW|5#c7{r(N){s9YCi84$~U|{$Glm>AD0*K|^yLU}ZO+eP) ze;~;4`#0mCzs$dX{r~-&?f370zkUTM{{OB1_1E8DKmYz*JbN)f0I>i8Q1#1Kum1f0 z{pZggpt}FRe*ORX>;JEx|9}4c_w(m__W!pfKK=atLxM{ZXbC_7vHbh@@9*EgK-ECy zzkh)Y{?EYhFEQc&-#`EN9{7Lq7*OE*@9)2U|NQmmC(vO40VtezBLF}U2%?OI(TG)& zJC>!~;SYmN-)zb6gc(7A-^Q(#z0vHb9!CJ#T#ii{@&pjek8j`pfX)5|H00+GpnLvt za{MtfWBC4qk%R63j~{=2{QLgr`wyTb*amx2hce{;{QL3a|BhWh#6A5bKmf5of*%NgdVm^$Zuo!gI_LQd|G=96g51yWl0Agf71rLE? q3XWqq@&Lw?Iyk0*94-cc00RK~MQKxxUU$F%0000= z`}|7!`YQYT5C8xIh~*yx1DgQ1_jkSr_QgN{Gn)!7=zkRT=l(yS{y%^Jd$>%yrP!)vVq~xpZ~xA{{HjZ>hB|)Z~OQoBLBm{yCqA0{k;C`&+mV~|1$jj15^wU zKukakbkF}kzkmk({q_6zmUTZaUWBOraqa5!?(V-pgMR}R{04?0&`AIR#PSE^hrdi> z;*7t4gLVFSJ$J5DTibsorq@%ai5h7B2l^1G@*gM=fUW@uAjYc<48V{DX@ijvE(11_ dg@FMezyQzuBHsGv+i3s*002ovPDHLkV1jTADB=JB literal 0 HcmV?d00001 diff --git a/lib/images/flags/ai.png b/lib/images/flags/ai.png new file mode 100644 index 0000000000000000000000000000000000000000..74ed29d92616c86757d3c0ec04378301c8f591b4 GIT binary patch literal 643 zcmV-}0(||6P)ocPy#thD++(+#W%SS0Qvp^`1%0+_yGC)0QUL-|M&m^ z`T_tk0M7pe&iDc7fh@K74M*k&0{8f*88BG;;GY6ve?;&4{{Q>_{{8&^`u+g@|Ns5} z|C?Nv0*Gb#mu+n4z6ZW~#qjy_|6ji&ZeIEMk16oyzH)i@Pk$MNxLARR?a#kwpMS72 zF)}cG2M8dRUN*~81wCz%$A2$f`_IL|A|w6j^RHtc7{2`lYG-KkQ{(*knSqh%3kzr7 zs%s1kKL7#%F#yj00-^B^D;pD^^AqC)4C(?1m>@q26ceiU4*2{4`u_d~@vQ*ykp&A1 z3h$o${r~^~`vQo?Pm-bY@cm79zVQG5%l!B6)Riap%L`bGemnT<@2|iAfl64!%YWS~ z`p0YY_dig_cYpw5WYAmG*lPLk!;jy8|NZ#~MF0Q%{rCG1ko^Di`(Fhkd3F{?py0c9Vg{{gA~^#>F<|Nj5KapBR^@Bf~CXSi|t;lF=C z8-4)<5DUX^V9+rDCI3RuUy#}V{s46X!}R~}@4ug&fA|+@;n!b(1zCZ900KKMX({{sIILBZE*UQbc|SngJt$+`m9Kz!<;5 dBm+Qz0RWL%NC2%sdjkLf002ovPDHLkV1lARHI@JX literal 0 HcmV?d00001 diff --git a/lib/images/flags/al.png b/lib/images/flags/al.png new file mode 100644 index 0000000000000000000000000000000000000000..92354cb6e257be2cade71cb825027ce8d9efc06d GIT binary patch literal 600 zcmV-e0;m0nP)PbXFRCwBA zyv)hK@{fUmi2(>${xJOc&A`II@PmN?BKC`c;SU)710$d~Kmf4-r6niy16BY3`}g0! ze=L9h&Uybegp-Ns@87v^zGQMU|NZla@z1Y+zkdVKmFbHB0*HkH4F0@)&iwE1;&GRLuzkX(OGXMMa``@o$|Ni_2x(y(Jn3#TnHT?el|IhC;U%pHK`}6Df z@2@|9J^lXU=Z~KvfBzi*^!4A*U;lv`e*Fge3Lt=(82$q_`~m9z|ND;$!(WEqze~6o ze}X|JFO$H(U+VvX#{c{avi3L7@c;n?3L&6l7=Hix`}emN<6i~#|7+iUWBL8-&##}m zKKx5zXJr5LA80nvkwCM6egFs{po9Y?& zL6B;olm7ns#=rm&Kp-3b{RIXY(1{??Ha=$NKfkS+|9@us$Mfg+93j@fzkY#y2y!;i z&kO(o1PWH5>zPHwn7|>;0Mz;WPl13iP!Y(WKYy4&4hBXMSPugOKmaiw2gk!dq!|4J mj$lZE0R~eis zC&uN{cDQ8`!@ZNLOqwtoG6nhzPx}SV-d6yzFfcIz75{(rngJyDkKrFw8iaoThHCr$ zo8k9wMhS^O3=9AP!~%5B|9}4(ASQtkLN$m1CV&5705X362095KfLKJhW;OjWdGY7l zzrX*$DuLu*pcFC#NdEr)SL!$SY=)lz0mSm_*B_u)|AM4JP)(}33zy1Lc&_o7? zKL7y)bkd){fBym<_v`mxpbeRs`+WRVot-5A{r$IX$CJFg13u{3eX_{0R++j zR}GCkSy{&4zk!krKoTg(2n-k?g31B}5JW!NMq0d0000q< zM7LZb@rX?|r)2RP-+aO3(7q?c3+$-Vv0E)PxM3SDV%@s`#GkZvw_x^WBa~uq3^l}t zWdf(j(=(>^SgETc#5#EZT(4ObRkfxbzP9G;yza0;Ygc8-_*?EP(ca#`l6-Z6D0{tL zQ4|~MCSi!9Q9YkW=V$ix#EqZ!rc?eWA0TwdVID+3aqrYUXUhCI)Ad5!(cP!BhhW$Ayb2&r8kK!bz*2`~UE W(Ndrek0Jg50000NL7TW{{R0! zJP>i}(MpzaSkj z=eqvqa`^|6{{QbQRQ11q3~Vg_kG}Z}5I`(hw}ncX8D4$|h64jUK>or*=^r$dfI%n0 z$3MKz;!F0w91GjkkV%_X`@4 wKR^hm`X5LwD9*v?4;TUC6Bz$&3;+QJ0QLcJ=WT{TU;qFB07*qoM6N<$f>3bX%K!iX literal 0 HcmV?d00001 diff --git a/lib/images/flags/as.png b/lib/images/flags/as.png new file mode 100644 index 0000000000000000000000000000000000000000..32f30e4ce4eedd22d4f09c4f3a46c52dd064f113 GIT binary patch literal 647 zcmV;20(kw2P);Rmc0RI30 z|Nj5|{Q>>`0R8>{{QLs@`vM01^D6+%Ap+Y10Qw3Sr3ED)s=c}b05Jg0{{#dC0RR60 z)z$y}`~dv>0Q&p?0Q>ne0Khr|#}EMN1`-ttJvaFq6VTDg`OMJS*4F}vg#m0fQ1$QM z42u6QTCg3Kt8+Li1J#Y_zUd>4Lw{URe1tEjLbKmY(S0M7pd(g2qsJ0|z;{R`~d z`n<6E*3bb41p*Zr{{R344LkeqyaMyV01O!W0PZ0+TjlEQ0st`p&i?@b0Q{Gi0m{n% z`T6-B``1JQx+4kM0{rp_FfRy7P6Qq%_1|&<`|JPx`Uew8u)+%h2+ zdiAI7xt}_}e|$CmbI9$2>u h*D)|iF)#oG7yty8`q2#I8zBGy002ovPDHLkV1j5VEF}N{ literal 0 HcmV?d00001 diff --git a/lib/images/flags/at.png b/lib/images/flags/at.png new file mode 100644 index 0000000000000000000000000000000000000000..0f15f34f2883c4b4360fc871d7105309f1533282 GIT binary patch literal 403 zcmV;E0c`$>P)@|4`Xj5kLT%`al?B=W5I`&prl$WjwHQRjfmQ&G0jUOA z@&|Dug_Rm`2Y251|$~)1M2@@6mI}!8O6olw6y^Q z5X--d7nzS8`+x5q12kBmVFD!~j6c5_fMKno0(1^Q0I>i=is|LjXX40RRttS6cG0UZ?;7002ovPDHLkV1fxUnjZiF literal 0 HcmV?d00001 diff --git a/lib/images/flags/au.png b/lib/images/flags/au.png new file mode 100644 index 0000000000000000000000000000000000000000..a01389a745d51e16b01a9dc0a707572564a17625 GIT binary patch literal 673 zcmV;S0$%-zP)>fJ3En$GhGS>sbE%%m3$AD)q?8M9y>88-}kR7#RKlk!P~Y_PLuF7~U~3`~nC7 zF#yj00ZUDdpLsm{7ajP|&HwoK0Usg|6%f4L_{`Mi{rvv-`ukf=Ed&Gs-sA7L!Q7*a zj{*QO0M7pb%?Sw^g@yy{>ihEY{`vU@3=8@G0rvO$i3mOL`~mv-`W+b$Mmr&io5dg< z5v!7q0*L95jt`TzK8Kd(Utv)OSp_aLv){6ccV+Z`{Q2+asKUU&aO3`Kpz6wW8wp`< z28M3{0mSqnB#A*-c*8%1=RD#sSOwMznKA3=e&iEzwo{cA=PgXK`2OQ}gqId83!|%* zA_Kz@fB*n70M7pdECCwp4H&@R`1|(w-}M5x*74i)0}%fAt;XafA{48))#>Z>?CD#}*e}Ret0tl$#*RMZ7}Jl7Z|M45`5*URzH9L z{rmSnPy;{!u>dsyO%meg+00000NkvXX Hu0mjfN{&}S literal 0 HcmV?d00001 diff --git a/lib/images/flags/aw.png b/lib/images/flags/aw.png new file mode 100644 index 0000000000000000000000000000000000000000..a3579c2d621069c8128d7cf16440d5e45a3ab3cd GIT binary patch literal 524 zcmV+n0`vWeP)^}0h@W9fA9JOn#opKkr#VO<{LPm{QLg}EdH3Vb1Zzpp zqiZ+XNBm%5{`ViKi{bCTe}Dh~2a+HyfB%6Q|9}7eKVjxEfB<6Q<6r}-{{7;G=hB{; zLB+p+|Ni^;|DXT={s75;AoBO$f4@PDf8sps4FCQC1Q64wUw^h*hy4HZXO3U)@85qw zD*pci8U|DWQu_BVi2MUWKoOv;00M{w=;|*lY_o%kegGx^{`&*A{SSok_usF-P)oof z|A86+0*K|;FQAM6fB*FtoEI&bZG5mq328#as{}<$F zWDQ{Ffz1MH001phxCBNdC_2H6U$AI~GQbEJqg*Ti0R{kQ(yH?TRrCY^ O0000^@RCwBA zRL|V|7QjV)*ul;Rlceqc6W0{`~_8AeMg& z|LUXE8U8c=`}dziv6P|mEu%JjM}pqh@65md|Ni~w->=_)fBgZXe?Nc!ot?WGAOHX{ z0M7pe`uG9>{{ZXo`u+d?{`u+u=j#9V2j%Sc^797z|N8p+{rLO+`TP9&`u!FW2mk>3 z0#G;xDFDDQ2vg|)-@5Zw?JVTrAxNs~5&|AZ;5uWfQ`vUsMGm`>aGWoI7=P|oW>%~E z|Kk8dq@aG@HzdsB>fj@shYzX-a%=q<(frSYmfLIv5{HbzQ${~M_P_y6C&m>3uU0*DFd0+8#0#Gk)^|NLQBRAyCBeB9H+Wn{=Mr@*PJ_ZKV< zB>w@GFfafF5Ks>TBP0ZV{bBt5_ve*sKkwd`OiO#eX6=u=cfX!E#rX3NBT(umNC7Yu z0Ro8S7X#4ce?Xr63$phg)Bk64X8r&5``_O`AFf^jc>p5y?+^38KVKLa00M}`wU!~x z=I_1Fe}Df4D*yZI@1I|PfBgnRptt`0`2{iqMpRNPo|?TW>MPOFW(r1_!xlT-yep5|G*@e%^SFxf#DC32@n7=0M7pe00011 zNe=7o{FIuhzQ(sjF~t7>`T+s_0sj00{`>*}`~Uy^|Ni?^Z7Tcx|FW0O0tlpm;s5{T z+df{s^E1rDZN;v4VP>0|8GkY`{`&t1s2YfV{r~st=KUYCl59Xr00M{!Xv@F<41fPH zoWA^R$>xvtF5yd$xc~X{7o-}f=ig7DY9RXc``_>1K-c{N2q2&ahQEIq{`~z1RCDs; zw*~7zIJ!sAKj8J}&!7K)enC|K{|nUc|Mwq|27mwp*#K1f8;Jh=2byv8+}GKw-@AGz z%-rMu^XK3HKtBLA{Qvdq*I%FsKn(x^1k&&qY(LP_Uw?q)|3jz0PF?=a(?4bU?qHzN z5I+E=z&88?2q2IKpz*){`~&I%+VJc5-=Dw#?LYB#!lHLRL7BZ8-NZ5x*TXaKmf6TZ20qEQj`^F;~x-W z05U+*fBxNj@_W(7kJ(ujGnWgh$g%(Z2hso#K#U9wI~hQ+`3Dk_7z`j1tL#*2FTcgW f@C+EF009O7>dRn2w6d?H00000NkvXXu0mjfueTzu literal 0 HcmV?d00001 diff --git a/lib/images/flags/bb.png b/lib/images/flags/bb.png new file mode 100644 index 0000000000000000000000000000000000000000..0df19c71d20d7fdc06e1cba01028983439b2bdae GIT binary patch literal 585 zcmV-P0=E5$P) zj51&U|NhG$_=oZTA7 z0mJ{l|Ns2{|Nr-Y#^3*c{=WU_!>_-;fvROCxPdkR1P~M0Xa=C_KR`47{sXG+pY!Yf zqu=)*{%)W0>;M0szkdJy_507SKYxDz`3KYh5I`&-cY{^``2$3Z|NsB`^ZWO@y}$qd z{r%_nFQBC$4Is{6hz5WF0@(mI8^j0N`~Tl>LzQ1Ye}a&q>MtPo*RQ`|OMu4x1!@2Y zAfSdne}TsT{`c$8-(P?J0c~)w`~?J`zx?#Dg*yp^z&88=2q2IKpt(TRKniTbum8-y z1bBWi0e#F0wgIH{FVJ|Pxj-8L0tgsNfByUdJMs7b-@h3^8h-!E3i%CU{QCW$1*GB6 ze~`2PfHeF82q2&aU>N+96yg32bmdP5238q{|Gydk0=52OVEN6!@<&OA7Z~7wL16>b z@DCt>7#SFn85mf=5eY;LZ#OUe_l@D-2Zn#Y82<4v{9|E|jkRQ8_`$&N0jL_N03g5s XX0T^_9W~6o00000NkvXXu0mjfXpthO literal 0 HcmV?d00001 diff --git a/lib/images/flags/bd.png b/lib/images/flags/bd.png new file mode 100644 index 0000000000000000000000000000000000000000..076a8bf87c0cedcce47099c6b74b59f2c9d1dbce GIT binary patch literal 504 zcmVCcfPV}OzZe+)fYC1)`hmpw%>WR9L@~Dk00x0r!@5ksR;+hV0>ZLfIcBS@orh;x zv}95za5W)x_7^}bV3YqpdH?h;NZnuSC%?V#{+0gl`~RQckJx{&l>NO~;@7XgzkdJz zEh{VwR0LSuiyWGR{aKQ z00-R5+27mwp+3@G@Um)kt zzdstU{yWl9SIB_0ft3II3)BD*KrA2|{``^Tm;4PDy`=a1tTre>fEI#8 u{{2z<2NVVaum*qtVq}m+iAaI~Aiw~?reC_kVQV=60000gsB+3J~Dn`pdxgmx19A{hgns>oXkhsL8>j&wfIu2Rsv+R_ zAB5T1GyoL?1Q1BWpFe+p|Nf1n;TJ-~Kd@?uhChFRHUI<=#0HS!U%!8$YJib28yLY( z0tg_G2B7i3e*FSj@aq@44gY_`jRywQ69xu=0D?FP=vyd&x*M*V6|CV8P{Uu4OBfgc z0tjNmA4y3`us8lPG6H?}8%zRafgb(Cp!5f*6oP{xAq} rF#LPR@IoIX4%E%Yz;K6w0U*EtuUcjA`-_J300000NkvXXu0mjf+>pV; literal 0 HcmV?d00001 diff --git a/lib/images/flags/bf.png b/lib/images/flags/bf.png new file mode 100644 index 0000000000000000000000000000000000000000..ab5ce8fe1237a18d6809a5570024eb108cb14a3e GIT binary patch literal 497 zcmV@|4`Xj5kLT%`al?B=W5I`(ov;U*021-Lr1*!W5(gW7O z@cTDV13&<=05Ky_HBiN$KMcQt819e>gHP`g_|Np;&&;0(C^$RHS>olZ*Q41X9v27}ar6#W9}0h{^{OajIK0?h(y z_zOe~zZd`lhy{p$|NA4!EeST}?;nUxkP49VfMx;1;V%&U|N9rH;SU2q05LM8GXV8K n(H~UyA0);fa6B_H00bBSQ>$p&WfB*UmB!B(-`wPhZ^#?@C^U5EbbPyl_g=3Hc01Sh${{P9=HB%4| z34*<3-m=C?^;L%miR{xQv2*hU;8+Y&0Dxf-W~KjsusWFAC4@j0#9_j;X5z6SjRhH> zd}sd(7FPhVFdSi!*Zj@;_Sc`kfByUdk|3A-`STmZ_yb~qxIp9o{E-p)bLt=iKmf7) z+|Ix(`{&<1pm88mK&}8g1WG~}e||Ik`OB#Cw~m1UAb?na(Zlrn4}+v6P!1@{@CT$5 z&-#|8y{IY2iKmf5omHz(^qAp)ym^JhN+jk7Vet{H$(Z8=>|AV=V zva&!M00M{!p&AHub^kXuF^G#pRQ&(-8^nMkpk@XJfB<6o_wOIv5C1P;X6Wwu|KUB< zc%X*g2-OTg#J~U$KumBafq;(A|A`a+OH08N{X($;=pP0KfB<5Fs|GR7oM!0i{{QYB zSm|$=!=N@Wf}I2qKuka<{f7YtBjf)QCj1u{`~UM7nrdKh0c`*VF+c!8{Q&j%sZ;-Z zd;dRshENS5{{S`og~Sg)05QIL^-54s5b7kL(8GuS8yfz9{>%Ui`+q-vfW*P*^_43C z0mK4S`s2qBh&}(NP5W0_$$%QQ@R)`GfB*vkck5Jby^kNv00000NkvXXu0mjfy0pt~ literal 0 HcmV?d00001 diff --git a/lib/images/flags/bi.png b/lib/images/flags/bi.png new file mode 100644 index 0000000000000000000000000000000000000000..5cc2e30cfc47452d5bef949628e955a522d59e50 GIT binary patch literal 675 zcmV;U0$lxxP)$wbBBJ zMTk#;k4<3e#ePFE;{?TciOx=-NpIdg`t|#dcz^$YFqm+of7AU<7UGr+0t^5F#PsJM z(2)${Jd)SmT+KY5@!|h>po)L5-!r~>3uJux|0`&Jz~QGy6a*CiGyVtq1|Wc#zWw|0 z_y6C2|NnAvaR2)A>-NX%|3Ci{R?!hvH~jzU``ypCK7Rkq&&~h)FDNvCApj5nF#yj0 z0_X_*{{Q{_|NQXv@Av-qBMmR$teo!O*6-%u-J+8r3n~2s`s?uP{Qmp>{`~+900M{! zNC9;}eE(3IS9-C{62AZc<>Jx>%af}0@?r&05Jg0 z{{#T;0Os`NWh`ko4>SM%|Kw(60099Kad7|t0qcf^`tR-^sIP`Fhru7lkI#w#>Hq?W zkzqQ+@08y_|9v}t;{CEE%)%nTc=-MC@P)7S@!~g$((Ud|+28Q224FCZIGXF0FQ1zcbfB*dX_lJRr z;s3wCNa|2D02KoSAbE^!0Dxf-mZ69ApkCb5fP^9ydGO$cm6w`kGj(t#`M{tFlLo%j z*4%mm2&CaJSn02SzkrtfWBLcO;r%bLy5Gnoqrh)qC;lgG%);U`26kn-@hOg zU%!6+4+cOs(0HIde9xZz`}Onxub&LUB0x(30+2WcIRJn#2ut|?gWYu1Cf+!-K%B8# zdf?1WA}#uZ8oj7u>$I1i0Al&`=O0k%-@icgAIJnM0xA6maSq6BK-ECw|NZ*S`0Lj% z1_pot6puj;05Ax`F!=umqj7^frO?t|3^&I1kxUq9yECc+jQpY84SWH_0#pxl$?v~F z@*hy-KN0|X07U)z`4{NpU%#2aHUI<=%a31wK(7Du52Oc(|3O^?R1IN+RRjI-n*kVB z3=9AP#PZ|EACPLGJ%9cJNh|>9B%spYzZw7h1%?tp0I_@ndg9MNE>313@6R75NcceF zkr51-#U+7;F#`Sf7i0rK0I_`g_NQ&ZVKmZT`F#yj00W%wG zw4zx17##T6*Z=hN0Tvey7!|wG?K;V)0{r{_`}_X<{Qmp<|NQ*_`}@YSvI2-@&cAgG z*R?p0?_>V(@&EVlEP?{x|1esA`||VNU68t8zyJRJ_3zg&hTp&0WMzR?0R#}s1|E|% zRV}tRkH6o2#3;(nsVMXI-pgBmh17ms`TzTu!pfBl%*_9R;OEbWDJei#0R#}sGpDd$ z96Spi@~bn7G5z{~^_!ZLy2#s;5B~o8&G`G*|6f0Ap0WS=_rFd2C(ubi4FCZEF#yj0 z1a!1=2e0}MwgDi3SU@2S4mePl{012eQ4J-3 z|Mm`933BS6zyJRJ1;ztF0D(08|NVzmQWB*4&)@%$um=Y`lmy1W-@hDx{{qQh3=9AP x#JH7#;TJ3-|G=X54_FW_j)5c_0|P*S0RT0dOSD~(4;cUe002ovPDHLkV1hfJDkcB` literal 0 HcmV?d00001 diff --git a/lib/images/flags/bn.png b/lib/images/flags/bn.png new file mode 100644 index 0000000000000000000000000000000000000000..8fb09849e9b5712e9cdd8a2c25035da201535cf5 GIT binary patch literal 639 zcmV-_0)YLAP)8n_8%|dG+hlCr-g% z|9<~wU<9iE{r}%DMphZ1Jpcj3%*DZBWo-@72DFWlk(-gj@!ngb-$#D&C_i9e{QvLY zw|{?r|NHlgiHY~?^IHG`05Jg0{{(k=dF}7->+9=cXlNG}79t%T{rC3_t(pA#`tSX# z4jKOh|NsB|;rr`({{a5__y7Wk5omBxQSrlv5B>nb??0VZ8qCZrpS+?}gatn>o%-+B zPl=+||6st##PspQ2Y>)#{Cu5(QJ~_^?faD-pMV;E|7MwLubjQ@B-gLso$mVYgECpU zxpfp2fEt*XnBKpC4-fz`0M7pb@zVeZ8g>5r-~k2r`Sbhd;{WmN02I(80QmHEv)Ik{ z>H7Nm`}_MdF)?FhWi>T50*LYBMFw`s0-y$le?J(QfB$Fr_2c8e-`_!j`0PG|ckZ*_ zzkY$-`sc5Tips@{7Xbo@1sGC5IYwrQfB%2{|MTZR!ygX*-%McG4cZmTY ZzyK0(F$K@T-Dv;-002ovPDHLkV1la=J3;^e literal 0 HcmV?d00001 diff --git a/lib/images/flags/bo.png b/lib/images/flags/bo.png new file mode 100644 index 0000000000000000000000000000000000000000..ce7ba522aa7e948d581478432643c230eed1a658 GIT binary patch literal 500 zcmV^3LvnC{|x`%yaFl$ss8ha0V@6XKS=c-5cwO(_{}IL0ki=i zfLOjo{AE-9^-mn=h(G`Tfz|!{{r?|W+uz?{^yeR#!Nm9NlRN`J0I_^YV&Ikj@%Q)F z|Ns9m{0FN3^Z!3k!*8HnFvf4N5xas50L!z?-wXsAPk7$ ze<1l+iQ((fPYeJ7#KQ200VpKFA^{3Nph^G!{9^b86oDW}(Ek1R7ZiL9e}Ret0*H}e qBRB&8AR!3%7c6cef(%d+Aiw~vBYd|xMihYn0000j-HAXl7XJGjM{~r+i{r~sxzrQwG-&h#_Y&p;L z=ieV7_s^f-zyJOD{rC5(+EoAn1k&)I;s3Kw&;LT?{{2}P{Pq8T&j0^^J4?LvUd;UK z&+k8ffB*XXONL(tXahh1fi?X94^$0Q>Z$uRRO)Y4)uapmB!2(-ul(c1=C+V!kAF`) z$PCo;`_FHns{jIs3Fu;wy-Z(c2YwAz{&V4aXk?bejFO*Op&u`@i~PecqBpL@DIoojb8mb+WHGK%fG2>)a3=iVf_~v+`s?*1;!`?Kmai^I3i*ZIYtpN f{g(k500bBS@Ns{bTs^2gCr95H^s6Fo1}O2_S$Nfl}4;<}o-r{^R8Q_xtzX z|Nnu?|Ni^;2gm@D3=F@4EC#P1& zzuV{ie)#0qf2Lnh)j(~3VeG$ufPMl9Aczeh3x56n#l!R`HRQLfpFjVwfkN;%I39k( zVgne^e?jDThF>oL0*Hk{T6(^^8pGqq44*zhqZ1OZzkZ>_F(mFeH~<0+0A4S6=>Lb* QN&o-=07*qoM6N<$f&=*Yr2qf` literal 0 HcmV?d00001 diff --git a/lib/images/flags/bt.png b/lib/images/flags/bt.png new file mode 100644 index 0000000000000000000000000000000000000000..1d512dfff42db1ea3e7c59fa7dd69319e789ee12 GIT binary patch literal 631 zcmV--0*L*IP)?&DC3JV7l?ccjcgB=Qq4l4w|Q;eOZ4z|IjsEI`#PYSloM|AFHF zfy)2>XZQ=$@t;lU|F1tRzpnmg{PUOLH{-8A|F{4CvUU?d0I>k|0TuuM^_1cNUy$nm zzZn?*{^!*ACzSEy$NyhHzB0Wn`TXRU=!%=n%Ci4h82|!^32gR%glZtk^6USnb00o@ z{`LDW>%U)&BK_|-y-75RkKVi&O=|xC<=6keK+72b0*D2q;Xlai|Ns9mF#h@fM(h;aV>^!x1-zNu02XV-n@ zm3imZ@&EI0hChG)|NZlafdL?Zn1I0yH26P<=DUx29QQsc%}izF;QV-S-hYOl|1V4z zX|a-<=Kf#g*Z)7i{{y|szyJ_HEKEEM|C#>$KmJzoZa)M2-~Wm-e7Cl+vi)L|kY`}} z&A$F20RV*|BkB*O Rz6SsR002ovPDHLkV1m;fPLlut literal 0 HcmV?d00001 diff --git a/lib/images/flags/bv.png b/lib/images/flags/bv.png new file mode 100644 index 0000000000000000000000000000000000000000..160b6b5b79db15e623fa55e5774e5d160b933180 GIT binary patch literal 512 zcmV+b0{{JqP)O=a{vExMP2%`MCSoB^FIcLe_%lf;|~%E5I`(IQNh}3Ao>6Q|DFUXMn*>AqQd`w z|1kXd^B;tM|Njjl{{hM0zwd6?1Q0+hV1xeud-4=Wy?p-%sO`^#2S61Jzk!N?s)6X& zzhA%p|N6}=D+{y%Ab`Lc{sL9~1=0UN4*CD*7s%9KAf+JHKs~=eB-8KTKvw|-5R1&; zzd&a|ob(5%^Z$Q=wHy9p13+aOpFRNu5F>N&`Tk_-7w>=n{RejQzkfh&Kn{rf10?_b z{tFTZibx5v&dxav5I~H7|Ney-|DWN1$%1FyagzUW0464;_wU~W1Q5$TW@eGxtUvee z3vAf*8|igK9~@*rr66bh|NrkNM8z+V zAV?>O@ek;bKfu6d00k6 zPW&$KB`I@TtA?2x@Q~7pdcWi#1>DDZ2>MuG0I@IumHuaV^&7|soAMvT0IK){RtF@1 zgH;3B;_Qq-34j1%{P^)BFE1~|NkA(gBv!!4$aw$$eSiRB1ga=2D|__l(H|iA4T2Ex z>lc`SQ9x2&UjE?0g8%`<0`lvhzd$}*14J4{IhY2@0~G@V5J82%q9;EBlXu0U&@_82I`BfBC|Yn~P8llm?myQ3_K18=`^X_ivyEfB<6p_xd%%#*GZ! z-C&_V5IGPDK|g;X*gypg3;+Sd!XPTj0Q7fK5>&$Y{sHB| zjK9DB00sa3QR4q|tc?L6fSCSm+3>HW`NxbYpP7GsX8sK%KS9yYPfWi)GJ)AFzdp14 z{>t>1fsFwmfLQ*Ci!yxq#8guv=_mQ;-(Rp{AoSPbXFRCwBA z{KboB21 z`ppP*BG3|`!vO*asNvt=e_;3gWsp&PA@E<2jYs6ilRy6-zmSku5?~OOP=5aV@4sI_ zSN#QP00zQ!JD>SpAKYgR_QStF|9~F;2M|Ck zz%U1e+FyoWe;B_0VVclq;}vp_kNy3hKMWrj7*{kqJbMcaQ;_Pve;I)x1Q0+h46j}> zeiN4E1lkA+>|e|*mzJsW^M3)l^W_^hf&c&c`Mv->`48yHFF-%s0|+3-*GLfwiRNz% m3}3(u4lrUsie?}H2rvLBbQv(L;??y40000e`b1WGV} ze#gbd^&bp=ef-GykAYc$@BhDltSqdeSy?RXJpcawy+5fJAb?mHcsPJ&{d@EF@4HtJ z)qno||1xd*zaM|Ot4f#|8A1AQ-~Pubz$7IBv;-i4SQvovfB*ge{fFVtAE4aNE7yPi z`^Eg=5yP(^Ur(Q5`TLjM%#`8#_rHuB|9}1hItd_vSpNO`#qjs<|KGp=|NIHm@MXqK z79K7}ZvOwQ9Df%s{`~lX*xI%KzW-!k{Lc96Cr|@G0I@Lq`0?-epMSr9|NHeD?&umBG}6iH(DSogJte zDERNk_kV0Zng09%Itd_vSb&=T{rt@+B*66dJ0my{fpNkvBm!jpV_;xnVgd@XDk?Dx zh=IJyzyJ_HjJJUrz)|>#fr0nRl^;KTz#|yK`2G9$BS%LzureS32rvK^u`=B;c)+&+ O0000Vbu`-)NXk-Y`p?2$B#e1 z{(buQ`}e;;zyJNd_UF(2w_nb@VUiUP2igD-Kuin_BL6vl`zgIQV*mR8|8G|2U!T7I zn`-)Ow$bxne}9LGfB5z5*XcJ*K(;aeSD>o^0st`p&i@1e@&c~g4N@7~{}B9V!5sbp z`j|K8<@Nq-&kt=P>@pAZ`T7Q#;RiPl^j;kSgdzX}05Jg0{{#R8=f>y-z~LG0`u_d< z{QLg=2?6_k)DH^)`=sFo8YTUi-v;{r`o8J{6Wj>^)c^vB2^cJY|Nnmc_5b@He}DY@ z_51JdufKoSslWR1>-W9)3`r;XfsXn0`_Fc($H!lT!V@5Xn1Igu{qOIuf50&L{qg7D z?|*(LofMGa_%_k-*{}b_0g?9mMSwvE)Bq4bEIr*1})*zF_+U)&LMdEMOb{Nb-vOh6FrNC(tkd{&4;N%g_D$&)>g> z0^hO}m?z%iIsOJ1mka;_#K>R{i_RZNQ42x8VJSe8f#Ern2@qfa%&RHCyvg>Q00000 LNkvXXu0mjf=TkSf literal 0 HcmV?d00001 diff --git a/lib/images/flags/cd.png b/lib/images/flags/cd.png new file mode 100644 index 0000000000000000000000000000000000000000..5e489424884d2ec9e429f70d69af00edf242a077 GIT binary patch literal 528 zcmV+r0`L8aP)JkPqeYl28iLgD=0{><0$P44T5yOrT$dE?(KkwMFdoG^-J zGv9P)Kk|i5`lcNgUUAbboca5{hI)v&h!9!~`Yg)Ld}$VwYqqXn@gVLi>3LSVGm1W? z3qnDJAk6chH(u7f~FohUBCxfQDx8?5BQsCcprAnfVhO SHC~zk0000@|NZ~|iEi8i zh~?j3h8^dV0y&$fY|i?}`2XK;hJSzm|G$6#|L@;V)&KqZ3sU;$?>`_ZF38C6g#jRd z7@s_ODJ3Nev=9gw8UKSQhX4P)z5oCE{eQ>y|1j|H-+x9%#`EXT0R#{W1H*5i5@u$g zs{agN2m-%;fixfipeaCQpFe*F2q2cU!)f`}`5%6M06O*WzrTN({{8*;CkCkD_wPBk z=llWket~@P=ieVecEOTuB>(}$vTge|RYlbYUmpDW_v_E!KfnL|{{8n?G|>28zowm@ z_UrGj-+zAtrGTUoztWctUjPD#h2amw@BhDn5OHz(52cFPg zot=T34qlT?57Mzkg5?0ssOG0Ftp>paW8OyZ`_I07*qoM6N<$f+2k} AjsO4v literal 0 HcmV?d00001 diff --git a/lib/images/flags/cg.png b/lib/images/flags/cg.png new file mode 100644 index 0000000000000000000000000000000000000000..a859792ef32a02b41503b5ab5f216191af397e02 GIT binary patch literal 521 zcmV+k0`~ohP)i@P`2b{=v9^Ktp0uZ001fLMSM)r!?%mH+B91 z=ii?+(ckX8zrd=&8g~5t-|*}I50LQ;KzRlRfB=Hn08;wv->)Q*Kc0LLgTdsU-~VfV z{r~#=|1XdRMzE6r0tlo5X#B6gzhXrG`18Y*0!g6iieLY~Kvgqz}`W zLWO>Z3Lv@r7+CdZpiy8Ae}EeP0z(_<2Y>)#Vfe-1#`njMUlORAfdMG=o8iiD#%aG9 z#Q!h|feZ$rzkeYJ=p=vuV)VVru?7U|?FE@Zm|i>fBlzF zc~M_qKf%h=bAcoS;}NE7f8|yFe%B9?;;8%o@BeG_!|(4qhyo=(h-XBmKHXpc{~y!A z`THH3fsDVeudko)ARzm9UL&JI!+~uEM*rBES1=kd6zV%LH0J*N$gIQAc0y}k9qTFv z4h1oVG?rB#zNY^8{QUp5wE>>R#S4NZQd1i@F)*?OF@6y}@zmk^!Gr7L9asuAf!ae1 z{{CbBBH^Az=(+fAb?mHzA!MjRs*H~|NF=I z{~td;@BjZG-hUVsqZ#w(|L@=b|NQ>{d(*K^00G3pzycQk`jp|{UxvSb;p*Vv_V?Sr z{{Q;@@3$6WKrBG#F*5vR z`2XiW&+Xo6{KsbP_-SF+DJF`pL$*;0gaz z7NKVhyo`U;4*0+SK#>rfFFfafF5DUYXKh;r+@n*scPQUy6`!63S zGXn!71H*qtMn-04W+o=4|487=moEST#KiEAA;m(3;Xgy1iO{3BKc9a12~-UM7^Z`) z1qdLZI~bN-c=z}J|D88K{QmR*&tHcBxB*ZDKmf5Ya0q<-!`is-{h$8~f7m(x{QZSX zH3Jv`1P}|uy*o^wIGI2G`1kie)4zYe_&EQ6|NftW0ohon1}3I|Z{7d|5aVBMp0ssVo0Ek~;W>Z#0SJsA+2j`G% zv|UVeYYs-#Sn6_J90h1VosR?LBU7{U1rQ6+R0f9sPrg3=`~UA>#=n0a|7Q67_y6zT zP{j57|G!`V{{zu)Mn+knB>(|98e;E17s>tTLaMG-~Y>h{r`!g0jL-tfS4HmF#P%V_xIo5zyJLP zk|2W%e*G8w^1X|KC618W{eAoCFX+EI literal 0 HcmV?d00001 diff --git a/lib/images/flags/cn.png b/lib/images/flags/cn.png new file mode 100644 index 0000000000000000000000000000000000000000..89144146219e6fbec7eaa89e1bf4b073d299569e GIT binary patch literal 472 zcmV;}0Vn>6P)$bmtfBa_T{rmsVufH!rO2O)W0!b+P{TrwO zAb?mv&i(NBbu;G`sX*)cv$d*%>MiL-(QdhpkjakVmyu%k;sfcNRj;yhJaxT5MTg0u5&QfH8#Bf O0000XbC_7v4G9~kE;3? z$h?1GrT>4y7{3|*{r>Zd0U&@_82$jY{AFPH^Plk#hy=QU5o|Ds0oDLyFn~2M0QE2c z1P~*G;PKK9g@-SH{rUU<_aC4k|G@~v`1Kn|{`&=C|M{yZ!G37cNq_)iVfexD=MNA8 zh5p0Hf4_c1v;p<}|Ak}_F!%rh2&CcXZ-(!`82&@8$XA^gF6?xq}zd#y5N`WeVBbyB+frxZH0- literal 0 HcmV?d00001 diff --git a/lib/images/flags/cs.png b/lib/images/flags/cs.png new file mode 100644 index 0000000000000000000000000000000000000000..8254790ca72f98d9e79d94bdfcb8839b1fd434ad GIT binary patch literal 439 zcmV;o0Z9IdP)|s3jQ%L{DG0k=ogG+0SLgMnA-pV!aytqt1(q3VU5g2cTadE%W~lnu`}m; z-504zOD10s2K8+~RqF^K7O;8$o;>*sR0>r0`!|sM`x~eNg#P~i_4n8BzrTI~MgGdl z@-i@d0|+1%Q&SyHO(9WHu7Cgk{{@--A8b6x2B1zb1BygNIks=N00WJ{7y^0)%zz1kWJN^&bany+5X-;o*O`wU`+x5q12BMq=+`e0f-vAB ze||Ik`OBc90(3J#0I>iAmFf2%21!Yv97q%>_xm>^i2a8FLV}HlAfRG^0AlbRVNjfdgKH->)<41fMG{Q1Z53yA)}NHF>VM86o=*Z=~EMTLRklg;&|8vY-+ zh5rBh|L@=bKM?ZoKOp1JpMQV<{rmmr|L=eQfFkpA_5cJB<7Wm2?&_*f&z|!oCH%Iq zVPN&@1^xa7gnxhi`TP6#zh6KNfByZH;9_972M|CY z4S#m*VEXjw_teQhfB)LctFzlGTKpda#8eRa1F`|=V+j!s1_l{`0AhU0z`&K2_5c3; z?|=UACdB;@3Hy%?Ffai9!1(6P8-M@;JL%7#4}bn}Wu*W1^8Nqk|9@zxfJk8Yg2Rge z5=!5G`~e6c79IwMkAMHSMfCl8%kXF6O^EHl82Alg`~}6s-@pI={`>#;Kf}J}IRF8~ zc$$I1RCFdZQi0L={}0epF!T#d{sWT?V3G+SzyRi{Q|!NXWpDrh002ovPDHLkV1m+z B7Bv6> literal 0 HcmV?d00001 diff --git a/lib/images/flags/cv.png b/lib/images/flags/cv.png new file mode 100644 index 0000000000000000000000000000000000000000..a63f7eaf63c028615b2ded5878b5e14a7dbe962f GIT binary patch literal 529 zcmV+s0`C2ZP)*82p^=00=`tlmIeOf&y&dk@6oT z&CV8YCOfMzZ7b-;WHc4ffO0*K`UGc#9pHKW{n=1`s=Y4`sB0UGuD|F2(+4xFrs{6A+r|Fh*S$P>SRGs(%l z+O-QHfEa)O{tdAK=ovi517(5A-n@AO5I`)f0sl(Vm><0RZzq2;(QtLuuFT6X6;y@p zb-8u)9gSFj-3}5^z@SqUX4qfA01!aT3<}j|#!Osn3@^V(zxysO&hx#~ZN`f)vS*$d zpLlA?$HBnM&cM&k$j1o^^oKjY0t65vgZ)>ehy*ei5K#*ZyWju7F%Ll?01#jRixNU5 T4U6zw00000NkvXXu0mjf>cZT~ literal 0 HcmV?d00001 diff --git a/lib/images/flags/cx.png b/lib/images/flags/cx.png new file mode 100644 index 0000000000000000000000000000000000000000..48e31adbf4cc0074f40e95f87c1f103b91fe270e GIT binary patch literal 608 zcmV-m0-ybfP)Uz~~Q*L}q{yKmai^Fs!d`Rbj9@@=xl~KZbvQ|NZ^*|L@=bfBpc` zKOp-38^rz{DEepVv)`L`Yyt=%76t}3hHqR?<~aN{I`!9n&u`}MKs~?z|Ni|Cihlk3 z1w?Q7fI4M?HUI<=3&<7!82Y{{Q;@?^mDN?|=V) z{r~^ll=rtu5CcE}F#**BRkyY(adR>Mc_H{~T5^XRV~oVFSgBv#s=t2z{grn0SJIVV z|Ni~D^5u8)5(a<(0%_pmV<{@S{pr)+Nt0E6|KyV7{&xHKulY}Z0S*2Ic2cIyuhSoY z&3*a@=p=vu0%~ALNs$10lZEA9e*W!WzkWV{%9A7hYlh}ewm<)V{rd@2{rBIm&Idr} z{RV0P2mmnv&i?}d08{q%2kh+oUtbt0DGA2L@2{yn^Xv%Q%_4hjZ2Q{KfBuh*0fWjOcoPYi>{Qk`ejtlm`TPy!Q@c0|K1n4Ay00P>u ul!4(JQe+}W>@P40kp+Sq42=5$0t^6?P(4CrvcmZQ0000s1`2Y9I{~ve$KWO@Yukru?KTxgz{s9CK3*7Y} zZC_6Qf4TJkuQ&gHzW)Di+kXz$|9k=eg(Cm|XMz~|=g%L20Ahjo4`KiVr|y5|U;qEV z`p@?NKb!P_9;^R?@o<+hfSm*oKp+h;f&YIQ*bg)L>I;A4WVP82*P-nR{;Wu@%{Vvyu7@~4txIf`R>OD+-01E zIfRil07L2S-Mat*#Q65@TRuKMWMi;}EJy%|ff@h;2;_%%@7_UT@edf{0+7H22rvMY Ws9gjvbyTka0000? z0048MLcfb{@Lpld*gfdL?Z zSQvhRtN^J#x6%GQNHxSfxHgc;AD{-1tAIKH0tl!9q}uD*5!1Kl8Kk6va!f$;fJ%WL z`2Cv^NdEc54D$xi27mx!VfgXqT8ME7!~2)OPy-`SXu#NiAkhzFFflLy1Q-A_8F>@M S6G{sJ0000h<6BFn%a z@b8~2SoNP@zd$;E{sbbRuHQd?{QCI=sNwhbA3*&Qe}GP900=;09NYi^fU@pUdVa9*13;+Sd!tjgXKhXQEMobL97(p6<{RLvMGBN!7 j!N9=G@a-1^K!5=NcXWu!7_DDe00000NkvXXu0mjfeQx^H literal 0 HcmV?d00001 diff --git a/lib/images/flags/dj.png b/lib/images/flags/dj.png new file mode 100644 index 0000000000000000000000000000000000000000..582af364f8a9cb680628beae33cc9a2dbe0559f4 GIT binary patch literal 572 zcmV-C0>k}@P);we;9uK`S<6~zaM{qBL9B<0yBR7V`E_e2q4D) z|Nnpa!Ep64!{fLA8NdLj;oraifB*mg`;Xx-kn#6Fhzn-q&in!pKrBENJRA&WD*ySo z7*5@0`26EP69WTC_22)0z>5C-g{l_hVFa245I`UeKudt6h7^Mc@BgDW81BCO4-x~L z`sXhc{R3+I%fRsKA3y*x{R6rHsA1>M|6jifb2E4w{z{xB{`~z5CPC;Y7bk|9<`c2PXgjR$^CT@Hzz$KrBEfF#?VC z^aSdB^z+g5SJMxCJOGqNsQwQkfr0#&=?~CJ009Kjz|71H^!MIRd#Ajb^76;aUyQ$y z%m(TN#spBq-#`C>zGeUjAdrR+|30kwu=eoBL!3-pGMq9%bs!`E|ACMovw

4;Zk2 z8GbPU1Q5%#7t@Nb6*GKbU;u{yA29j{CVzn$|6qa)V3LCYAiw~8(_SNKujRx50000< KMNUMnLSTY(1rd4x literal 0 HcmV?d00001 diff --git a/lib/images/flags/dk.png b/lib/images/flags/dk.png new file mode 100644 index 0000000000000000000000000000000000000000..e2993d3c59ae78855f777c158a6aae6c1fb5c843 GIT binary patch literal 495 zcmVh!ZNvLM`<}kPiIA3?K?Zl!VJuS0ABN12uI2v;s z000mK68GQM4oDR3?|C6;zBc4LR82Q1eETXSa+3nD0Ad8%4|Ml`Fn}2U{~ypshW{9V zk%{T!hYtV&#KHiVV*o?2zW>+&Bgm+K00G4EikX==E9>w5`yf~S`o*<00G4K6dZ++hy)_Bw{QPEdi2K7 l5H1Kw2asrHVqgFWFaQRwS@oh;XP^K8002ovPDHLkV1foV*8Tth literal 0 HcmV?d00001 diff --git a/lib/images/flags/dm.png b/lib/images/flags/dm.png new file mode 100644 index 0000000000000000000000000000000000000000..5fbffcba3cb0f20016c9717614127b89db4c9664 GIT binary patch literal 620 zcmV-y0+aoTP)yt}{r~U(pZ|aU z{rk@#!dhJXj+vP`D&$&!2yPR?Jud5I`&tqo00z_V3?cpb$_)%#~li z5Bw?p&G@T5&5h~tB<;UIJ-`3_mgbQL+5iwhOdtm^{QZlh+Tg>NcGo{qR#UR9ewx4g zlzHy^uRp(j{rmOj?;oHBfB*n70M7pb{ow!s5r+W$=Kufw0RQ~_o$a1N^GPoTT-yiw z&XGVBSbe$r0&xrf|M~#~9P-zx0st`p&i?@b004Y@cH`sX`~3X;`}>j`1PlZ1WGkKd zF1~FN+w&9T}cJeJULy4V8r?0tNHM6WN&<2126ppbC05A-~q$vMCOd&N)3^rn&3WaiZo>@dB zxpL5=L>h@#UjVT%{Q39iA58Ths0J3s|NohoLF&Lt!8(8c18V>XAjZFc|1vT%{s#lF z^Kb%2CZ>-cJ^%y|<6Q;@;r#qR4;}z*|Nr|B$h_ab1b6QI%fu2>dIV_O?>~RRu82tM4=f|&Ke}8;oX5+eBw}y?G6)5=s|Nnnr@aNATAPEpaEN{Mj=m^OD z&%p5S|G&Tg{{H#<7bL;LEGj9<&cFmz{_j5mJbLs9Ab?m{m{|TZ{D1lB9Z2clKfnI{ z`ThHs^2c9)q;CF`l>Eoa3N#g>nv07INCE^93jWH3lKe}28-VENu!{qxMpm&svFOiawo%#4hT5U&FS z5Yzu(KY%Xz`RDh~-yl6N|NT~b@qz9A2lm1$Hf43G`D-AmnZXVNY5)izCWas1fbRMA z8?52ykLBVV-&q+tkKFpbbOC=r`2SzOfQo=l0_p*hfB*gk2q2IKpzD7Eo%H+Hk6%A8 za57|Q3rv;f;d1r)FDv_xg9F*eKs^8f#KQ37)2~0jMR){${rwHH2k3S7pO3`Z{#jf7 z{|`16Y&=9YkOT-IMh0&|hF9+yelRe6V}O#tcxPkSx96}BCoe=1&?OKCkOT-Y05IoG U$(*n^qyPW_07*qoM6N<$f?|9Y@c;k- literal 0 HcmV?d00001 diff --git a/lib/images/flags/ec.png b/lib/images/flags/ec.png new file mode 100644 index 0000000000000000000000000000000000000000..0caa0b1e785295d003869330fc4e073dce07e7f6 GIT binary patch literal 500 zcmV1sCzZm}g`N!}J$oTi?|G$4gL7*^D3`7C}Kmf5Y{CmeN)&f@km*M|^ zrvE_l-~a!AA&BAspa1{=fXIJ9!9O2vbOQts3j+fX{b%^|8m0my0Yd-4N`WN9@BjaR z=no^SIM8~400P%s(0a|A0FHhM?*o#se9Q zEZ;b|7ytr@MWm#zEz$bb`!9d~{{Q>$@1MW_!07MqKOpw+zkh)g(B$8L|49h*Ov!x= z5I`*NZ%IAX?Fbu$UUAQCA3`wxix_2=I& zAouq_SzðCcuS!~%52Kai0?gF&VORsRAR2~rJG2PFT1^!)w@)C_d-AAkU2Vc75Z z*R<@y`9z1vevIh)-p7{p`5C+7f|6l;f1_&?! X)GmJPc-xs)00000NkvXXu0mjfGFPrC literal 0 HcmV?d00001 diff --git a/lib/images/flags/eg.png b/lib/images/flags/eg.png new file mode 100644 index 0000000000000000000000000000000000000000..8a3f7a10b5757b006948ea4436fb242d02dc9a4e GIT binary patch literal 465 zcmV;?0WSWDP)LAHVtk{r`=k{y)(2e*gi*sIRYISXlV_^=qKp{(!;n-+xj9 zUjemETFMXP0$m6sfwJP_;%#kh009JYeOg-Dy?gh5gTXH_fG|KLm<2Qhs6|CZ<>JMQ z009IFR-loRl9E6vpeV=!FaTTi8)D~Q7yv2;2q2OXK!5=N{?|@pNV(X=00000NkvXX Hu0mjfG@sA` literal 0 HcmV?d00001 diff --git a/lib/images/flags/eh.png b/lib/images/flags/eh.png new file mode 100644 index 0000000000000000000000000000000000000000..90a1195b47a6f12c70d06cb0bd0e4ea88d7bfb03 GIT binary patch literal 508 zcmV`hKmn*~pz%QT=MPXRKmaj;?1ifa0xhloNlE|L zuK&--1mwx?-uoV+`qwW8u#*4+i1F_GyFwg7fByafIr{%Uh)$p>Ae%w(|Nq~=m~|`# z{`_H7QhIal96$iEC^sml1*F~kc<(nb4FCQ91q_kDz!3TkBLDsd`Sky<|4qNomi`s~ z`xoeVfB<3v8uI)9A4wibp!A=AfB%5B0nwj-e?TNKsQ>@@`|oeijK3Q@{{o!^5I~F! y*$fQd7#Mzm(H|HCnf(WhfND7yc3x%x2rvM-AWsdQI)rrq0000&(jx%j7OGE_~DVuFcQkgj@33fJv($pjj zgoNxWFM>pG#K4X+%S_Ys!f>f$mib36%ekHNec$;y5njB{!+Y`YzVGwA&4mTVh%ikU z03gD2Hn&LPeNu%hDG7PUvzrphs|^(-as$IIo1LmPya%Hc0Qn*6qc4XX3oKoa+Z)_XBQk8 znPA)XelBh#6J<)fj|w>7X+~Yun^@Bp4$+N z6L8rb{%QnJN{fql*fJH1L*2YjUlB~CXS&&LY)1V3h&68|x1_5-(4l3HUgs~3JvLXI z$_D=zL{dTnq9RK`-w~w|sCYqqA;@OoAE0!{9Gi+cF%zA>5*8OAiXWs z!A~!@Tb_6WJ;mn(q~>CYJ~Oq(|Mc`miY)G1d$)?S_lf*=dz3nd-8+hwz5w#U=!7L- z+Ve0W8Werm#o=KvYxRVVNtM9!poHk%m;Y{gxKdXC|Y{ fc0^aUlspXz7vm>S7OoCUZUIwXLGJ6E%Z+~lY(hhH literal 0 HcmV?d00001 diff --git a/lib/images/flags/es.png b/lib/images/flags/es.png new file mode 100644 index 0000000000000000000000000000000000000000..c2de2d7111e3cb59cf6511dd2ab045e824bdb43e GIT binary patch literal 469 zcmV;`0V@89P)@|4`Xj5kLT%`al?B=W5I`&pe;NKW0^Ri&h`xRJ_x;0v zUa?=y?0^3M|NZ~}FE9c#{{3cP{Qd6}13&;Vf!z&M{pZWqKYu4MFm$tgedF}w=P#IQ z7-9gT-$11R0mKA$(qEu4%ok$*y!^wMRm*x;`R7|k6yu?K{s8?55I{^|9{?Tjhec2I zv+6&FhFWG_BbNVc|Ns94tNRJp!0`V!Py;{!F#$2enB#XZaohg-5%Tlk#oa&nzQW9g zl0Y{D4gK?n0U&@Fe=;yIr=|V7caH%YEYL84k`Tt9-wc2LGODP&y?7BIfLMT@X8Qey zK~fSFpuiXa$^kk7RCwBA zWQbH``0|MX0{;DB`1Ob3-!Fz=zZw28fY1*HhF@R=VQ?@21P}|ur+3w` z_wT=dfByab`{x&s{PXYspTB>919^Y{{Qd`I{N9v10U&@_7=ExZ{APUe{`KE~Al1MB z{rb!Jhml3<_uqeCzux)%bv7|NkFAvw@aK@N+YWG5`bsF#yj00sZ{|0ReUZ0OJ4u`~d&_lgxzd z_7grGtKje;)ax=32IqJ>VE_O6|Nr{|0Uz@6!2*a0?AgCSJ_s@V{`!jztXlEUzkg2h zOW%AK0ILQg2A~)NKmdU>0L=y=29PKt(~s@sMWK)O87MU|4G0ImPt*+y7s`{{I1L_{;G9FVHyv z0R+;(^!pEkq$JpwzYKqVGyVRp{reTr#sB4{{{Q&{G@Ah!GGGK$3=lw!Ux87Egcwk{ eXi`7`5MTfy3O%OUuKb?>0000FP2AE)Ir2{}>qlLBSs|`Qg(SfB<4)VqlOE;Q=cD|Nnn$ zna02W|Nj1E&`=Tpav_4q;M$#E00G4E4{SI@`q`VGKvVzz{r4XmU}R+c_2(Zz0I~c7 zs`v*r?Dty(;z&PFFXX zRA5t=4x{1SIibD)Vqy6A2V^D4P_SySA|L?j2ip1XFA)9%V~_%1r~w2J3=}{2Oiu1 f7(RXZ0uW#T>&I!FfdIJb00000NkvXXu0mjfj-u42 literal 0 HcmV?d00001 diff --git a/lib/images/flags/fj.png b/lib/images/flags/fj.png new file mode 100644 index 0000000000000000000000000000000000000000..cee998892eb316c3293ef2d52afec9218bdbbc03 GIT binary patch literal 610 zcmV-o0-gPdP)2C05Lr?a%1G+Sb3M_ z-f!*)-&mJ@lxC7weD@!u;s2li|9<}wjr{Zf&o8mqKR`Cn4*&rGF#yj01QaSLwCD}R z0w(ww8v*|PzTN}jB`Pj8{QK|!{{8;|gOCLd|L9jy6{oELG6Dcq@B)aDq496GGsCmb z5T7wXTnzN$?|=Wl{r{i6vr6{G)xV#={AXc)t!L+QBoiQjSb+Zc`=1dU2n>I~p8E|B z6OfY_{`1$ji1Pn`9_T5yZrhJfj0}g~00a;V(9A!7nZZWFG{8az7^c++|9dI@cmDl* z!Nvb)UorrL86bdIfbsI1fk}{;;V;BV|AE?oY(}v2K-{x07*6Kx`SfB<4-V2A|A=r2_C101z~ iU~vp#0R6xN5MThlzdwv9U#bcK0000}CO1*!he@c;k+ zfB*mg{rg{#hxPwIh8G{d0|o#7{Raep|AEAFCm#U_AQp((@4x;AD*Xo({rB(3@4q1y z(m>63@(hzyJPYWMEi%>@iRTXyxzU zAo>qT2S^W413&<={Q1WKlmMyz`(Hzv@8AD_R~~+N^7b200Z@m&0zc4{Q@7rNwftxJ z^$Q??fEu9g1Db8CAq;fMkDq@pJa`8*&sI~^TtyHla^%`8uswf)HUI<=3()%@Pl0^! zf8Ui?K|l%XeRX{Qd(n@juAHz(D*15I`UefB!>$cK-hRUqIf!|Kj}Y zKt+#Ue>r^ZHOMRf{y`i940V72V*2%m0pg)Q5O4ka4>U8*PAAEH2(%ZZ;ol#C0AiF(UW*)& q3=s4Oj6m#vP&UxAe?ZIt5MTgFMVEBke8_SD0000BE0lK=nzFYgc)d0A2*B+AFf z2joHok-@WP&j1351!6Wt`q9fjf1W;g`1ALFY=DuG5oiNI0I|ST{|2JJ|Ni~?`|A$_ zRt*pr0t5gt0M7pe4IJopi4@}M{rvp?{Qds``}+I+|3-D|`uqR;{Qmm<|NHy?`uqO- z{Qn;q1i_Qs0*LV@1A}N|@t-FT{{IC^{`vn0sPGp^)o&2vABgb_!eEtCyu9%!Kmf6* zGhfda5_|CT&#%8A#S0%rhKer*8VNG{57cZ3sU*g7is3Rq0I|G(Bf-nd3vr@r@vHy8 ze*OIQ@9-oMOb-A(eJ@7=Ab?mP;SCW2x*O<#U%#>Y7zqCS`2!F@APw*!ml9!S{vjhP z$_zA&0R;fLP(1(v#Q5^%OL#2G%0Af7VC%@R_vTF*lgG%);U`26kn-@hOg zU%!6+4+cOs(0HIde9xZz`}Onxub&LUB0x(30+2WcIRJn#2ut|?gWYu1Cf+!-K%B8# zdf?1WA}#uZ8oj7u>$I1i0Al&`=O0k%-@icgAIJnM0xA6maSq6BK-ECw|NZ*S`0Lj% z1_pot6puj;05Ax`F!=umqj7^frO?t|3^&I1kxUq9yECc+jQpY84SWH_0#pxl$?v~F z@*hy-KN0|X07U)z`4{NpU%#2aHUI<=%a31wK(7Du52Oc(|3O^?R1IN+RRjI-n*kVB z3=9AP#PZ|EACPLGJ%9cJNh|>9B%spYzZw7h1%?tp0I_@ndg9MNE>313@6R75NcceF zkr51-#U+7;F#`Sf7i0rK0I_`g_NQ&Zk)EZ(2O=d>QH$KN3zEi7S9u{+2K>GX4ds`2QcM z=+A$K-~a!^(JwH9Fn%*K{{Cdb01!YdV9)*qi~a#?`wdg{8%Z^Y!NB>w;@|&31~6!UgVU(k2*|8J(R-+sudaynhucHbwAMTnor{mwqO^w7JHzaBsT z{O^B8RYf5+LvDs&KmRKVd78=o{`1#HTiEo_OolaGleS)G+IQ#sUI`b*pv<`1zCJ=H0jd{{2S>p`ri%{LsXJ%FbMS z$#S`6f|?OG!^Jxczkf6Q`UNF{l0Sd`ad7zm>({^EzyAS6{{CgrkluOb3l1A>ZU2~A zK+FZ=zkmP!`TOVhpFbzBzFaPmD2$N3;+$pK?>zdet`f0002ovPDHLkV1gy;I?Vt8 literal 0 HcmV?d00001 diff --git a/lib/images/flags/gd.png b/lib/images/flags/gd.png new file mode 100644 index 0000000000000000000000000000000000000000..9ab57f5489bb9ebb6450cb27f4efe0cfb466144e GIT binary patch literal 637 zcmV-@0)qXCP)@|2i2MUNJEAGBA`g{QJZ3ub1IpEW7h{~Z4K zJ3#Qa=Q1XS-;5h0el2+U>(Te$zyAID&HDTIKad810Ad2W{jW5`@9y)AKr^5J{4Kqa z;cw*UKQW)B)-pW&@%z{RUqB7N{{H&&_Ycr?fB*vd;rG8kGw%JlqX`uK!_D~nn&&T_ z*-Q+-7;nUX=6mt$`7e;3-;BTi{QC{m01!YRC;j>JdmqEEKMa4Icz%Tm{+4F_^}h({ z_1{sye%WyRp84|E^4Gur0Kxx1e;6150*D2Oe>41%=Kmef^V^IA7&yOx!2%AYU;o*D z%dq`!;`!w)_PhDb-(PS30!;@9Adn3rpZ_$9NHVegX88Y?;V;N+#{WPzFy?-P;*ar< zJ?CFrnZE^h{{CWM00h;Fvzl@K2fHp9I6dqaaxb00=Mu XLcuQ~?TP?t00000NkvXXu0mjf`7udf literal 0 HcmV?d00001 diff --git a/lib/images/flags/ge.png b/lib/images/flags/ge.png new file mode 100644 index 0000000000000000000000000000000000000000..728d97078df1d07241ae605dff2f2cac463be72e GIT binary patch literal 594 zcmV-Y0^8x|9^h-OG^F+g7@$L?BC01YQ`Wbb?43;K=s|G$6#bNnb!1Cx>Qe>QfY2m>?Izi&U8 z1o&Rm*8l_%%a6%3nS?}u4*37)&;Q?l7=Q-<`}?1Z>;KQLY|KmGQ@ZWEch0Jnt zUmm{%2p|@g=ujpTGX@n^21dqzKYxO4`1a@2NuYivJ4XgKw*UYBFf%g!{qd7YP>5~& zE`R_4F#yj00OjT7{QUg;`}^~|xBB|}`T6Q!vcs262Lz;t$n|1+qbnVARhhy8{z5C(*C%JTg?tEV3%;s64O@&5h$(1-*>2%Ak`A87BFlP7^( gh&l)WvH=1N0MfQja}g1cO8@`>07*qoM6N<$g4hNuZ2$lO literal 0 HcmV?d00001 diff --git a/lib/images/flags/gf.png b/lib/images/flags/gf.png new file mode 100644 index 0000000000000000000000000000000000000000..8332c4ec23c853944c29b02d7b32a88033f48a71 GIT binary patch literal 545 zcmV++0^a?JP)lgG%);U`26kn-@hOg zU%!6+4+cOs(0HIde9xZz`}Onxub&LUB0x(30+2WcIRJn#2ut|?gWYu1Cf+!-K%B8# zdf?1WA}#uZ8oj7u>$I1i0Al&`=O0k%-@icgAIJnM0xA6maSq6BK-ECw|NZ*S`0Lj% z1_pot6puj;05Ax`F!=umqj7^frO?t|3^&I1kxUq9yECc+jQpY84SWH_0#pxl$?v~F z@*hy-KN0|X07U)z`4{NpU%#2aHUI<=%a31wK(7Du52Oc(|3O^?R1IN+RRjI-n*kVB z3=9AP#PZ|EACPLGJ%9cJNh|>9B%spYzZw7h1%?tp0I_@ndg9MNE>313@6R75NcceF zkr51-#U+7;F#`Sf7i0rK0I_`g_NQ&Z{Ouh|k{s>tFQ`m@LnIf;Cf*`&?P1`-3%bT6cx$WEgd9G6kVgR==LoAR6di2*BPGS}KaKtENp#5NN9@rPcFv`RCwBA z{Lg>@|4`Xj5kLT%`al?B=W5I`(ov;U*021*0XgD3^5{teN< z@cTDV13&-@;@|`T5QYI@3O)ok?1DO<2trehc#kXh!0Z4iC6of!=I9L4Jz5Qk(jP`l zJOKo8(qFLXAF#IH8`u5XwDI@PAHNy@|4L4RsD^0x1N0+605O4m05bkR14QCiMDQ;; z>0h$aKjWi;+@CNFzZm}i25JBZAQt8_hOB_!_dovn^Y72^zrTL{{r&6TuiuWpfB*e$ zwD}j1{Ph<^0%eu?|D0`P00`k|9}4iHT+`$2p~p=WCoxfpgkZGj{YEt g{DC2GLI4Ob02tU}a;hkw5&!@I07*qoM6N<$g4!w08~^|S literal 0 HcmV?d00001 diff --git a/lib/images/flags/gi.png b/lib/images/flags/gi.png new file mode 100644 index 0000000000000000000000000000000000000000..e76797f62fedcbfca8c83c51951680d6a6e9081f GIT binary patch literal 463 zcmV;=0WkiFP)VoB37QQ+R{;bN6GSUi z+kb{HA3p-oUOth}-@kwP{0U71P%%INK{Y@H82)oDp3V0Dt?T`39Pi$;RTl%zL?{P4 z2_S%&kW~Z0x6qjPzkeV9`s>}VU!Q7P|1&Wm)PrpR2q2b!5Hle5FfeebsWZ)5spT9vc*+3O2}Iw&|Nr{sqx*C2&8&?7c>c4n{QvVC zD9-TjFQbI?+i42`0*K|`>)%Y*uQL4o{r~rGhChE9{`~$Pz`@Ka$@uLpb; literal 0 HcmV?d00001 diff --git a/lib/images/flags/gl.png b/lib/images/flags/gl.png new file mode 100644 index 0000000000000000000000000000000000000000..ef12a73bf9628ff5a67b81bd980d9c5d2b2c0f05 GIT binary patch literal 470 zcmV;{0V)28P)J{teTOL@z0+>00G1VRSiT77W_YWkm2*^|KGm- zfAHXcOY8ruSJ7+$Itd_vn4oTd_U!+mLkz$F{Qvdq|L@-*^6S_C%a&nk00990)`(*=-xesBS%qG0|gf?f~#iu^9N|j9|i`10Ac}ZUz>% literal 0 HcmV?d00001 diff --git a/lib/images/flags/gm.png b/lib/images/flags/gm.png new file mode 100644 index 0000000000000000000000000000000000000000..0720b667aff506d7892c5c301af04e6bbf932751 GIT binary patch literal 493 zcmVwRhhvIeu00_fCKU~B)yH$s9sXS^B!W{?M(W&}hPbMwO z;*cg65E@7haJ!!XVgYOW|Le(9kkY?@fpY);{sqc`6amR!K*q2CzkUI^Y_hUI(*XjA zMdSH%VNp?r|Ns620Z1T|}fB<6Q zlw#oF`Oo_sVk+2%KTsoq3?TP6gz@)3Ki_`_=6?VI#CZSdeQ9y&f57m8xf%uh13`xW zAjrhTbmsgSfB<4-$Y)3kNW1sx-tWJ^f#}!YUqA$5fJva>FJQR-`S({vK;>fVMSuWe z0mcW=Ig;FxKxv@ppTFP`1*!N0BL9M&0|dYz`1hCL7Xv^5F*2kxF#KQuvOqEU3km&! jiTr^fV1zR<00bBS-TrJ5MX@2w00000NkvXXu0mjfGz`_@ literal 0 HcmV?d00001 diff --git a/lib/images/flags/gn.png b/lib/images/flags/gn.png new file mode 100644 index 0000000000000000000000000000000000000000..ea660b01faefde01ad2527a6abcf7d1a5c1b0526 GIT binary patch literal 480 zcmV<60U!Q}P)@|A6>41A`El{SSoRd}EL3@|NdrR`1}9=ZwUJP z@AvHwzkdDu1yn7|BMY<#Ab?oFX8(t({tZ$6>;L~hU=2XVuU~(E|N0Bk07O6y00G1T zbT=bV^`Afg|NLS2{ReI~M8m&-NE-fuGynt;*hzmtW+Q3%1=j#1fvO=I{`~y|)Bq4b zU?=?r84r{KY4``%041R|`~%zYhXEjfz)k`h|LYgXRlk0r+3@c_)IERx{rUUv4^RU@ z0D&|xgN*;p0Mzyy>QQ8EKn=iP{qyfH5CNS85I`UeOuzpyNJ@hA{P_#yFfjaPWc&?| zr{By>f0X$D{QV0G@4r9|{}=!Qi18~pg5ikaD#Jf9Xfy-Svu_Nh0nj)GNi#731Q-A_ W8E1tdJ(&;y0000P)fLk0D%}*I7ff3uKv?i+N*~ULWZ>4 zW5%k%a3T{@*`z6pma6eF$JtK+F@C*&o=d^t|Ns9GOCXH@*Z?CVuP#7nB5Y|1kmu|NQ^=?>FP0zrYX%2q2aZH;)P`n*#-K1r9WbfYOYN z??RUX1P~*`M}`*mir*mb{sxCVG>rbhqT(MY2L1y54rHu+wi6(L7#SX-$0bVa{(;3h egu%oB5MTiLH(5{VMZMqv0000u-`~Ig{`~p> z=MRwl_xtx>F!}G#@4vq{&D;bKKrBFA+{}CzK0Nsg1pog2{{I_D14*DX1pWH^3y6RW zSzcL&Zwvqd#Pa7K10w^wlkmIISh(4kI3GTJhN2$mzJLD! z0*D0|DC|s(0(}1j8UFtJ4HA_S5@P=M@9)2VV#30}-~k05FvNkXnV5ck`2-L^EDTKl zn1259n3DG7^QXUm{{H**3#f!E|`n6Mz6>fhdBj29g(UfB*aM-=Dw#|NaG$fByXc1LXhxFC@THKjjKQ05P&# zA9gbr+SsEBRPB^?1!&T?30hEBFhHFGv5AR^>DH}B00G4E=NHV45I6k$@0N4rAH*g9 z{zDN+_&*OP%Y{RC0Ro8e#fvv0A_7PTA~XKMG0?q08}8kE2oOLl>koag&}IJi^WT4% zN&g{c!yE%t3}J9_Fdy0V1t5S}4xV|TB*XjR%dfvcU;YDm6wdeu;Q~GU4JP)J`S$qz^!f=A3G?{>83*rF;63vB|NHv-`~3j>`uzF%_#GV;x3_Tu z05Jg0{{&$2KZ#9J4f5RdzRdzC6Ae5p=(o+T{uB7y^ZNSwN=h$cVmJ#62-nx+ob%l!TKAE1V~I16T$|E1+i#l`u&y!03t z7ytqQF#yj01Tv_Ick58z;rzG}_y7F-%)*RRAv1X@1^f8;`}+eA4+yBm#PKA>w6y_L zQ&a!|00ICp0M7peY0>I$KneW(?7rp&{QCm?`vUdU)NRiG`uYI-`}gbY@;Dai8vP{| z4h7uY=>Px#0*Hx$0pxvffc*LW3+PFp{}_J#0ty11^n2!vLjod>mX_Jy|Cz2{eHy3% zAb?mH7=HZ$2N_TWSP@V&gaITO7A`uvc=2f<_uIFxDk_pd4FCZI)bI_+mz3lOl7E0f z{^u`PGlT&Y`3GeD{rm6lUtS;y)Bq4bz=+dkVE6#Ehk@Y-82x6z3jhKP0OI&0DF;s+ Q-T(jq07*qoM6N<$f)`^cRsaA1 literal 0 HcmV?d00001 diff --git a/lib/images/flags/gt.png b/lib/images/flags/gt.png new file mode 100644 index 0000000000000000000000000000000000000000..c43a70d36424b66f1627216ad988cd23a4be9285 GIT binary patch literal 493 zcmV|9}7f|M~m>&%ghRD!%{(5DNnfNcHoNKp}=7 ze;EG#|IZ9j4hBF)cVB@t{Qmo2T96TF4?qC109^ty;2+Qi2B0xObN{1)Uw^{8{`KJ4gZ0H zP(J{D2s9NSfWR7{27t^!x8NVhN&g{E`Ueb#e*ggla?+pwj3Cv27=VUhwE^V&zaVoN z82$hR5DUYve}Dck14V%vK+Z)23?LgAK*7ZT@-zbjKmf4-BkT7+CNVw+pd~+kF)%WM zL>VCz0|PT7gS-eZm>Gd?16jcE4PH%g~!@=<9&!2x_@aEGW jS9>vVD)6R*AQp(xFW-Wt{{mJ2|NHk};Jc-)O#kPzME?5A`1{ZQ-#|To{!0im{$XGM z2p}eq*?*y`{{RjC%V7Pj<(}hvo^Z>=hrJ-xK=d0#0&M^~2_S%&fR6tAp8=>2$p8C? z0q7F5H=q9h`}OesIT^OczkdG%sRkpU6i@>|0I@Lq1-k@j0La}yZU2}V|JX_T{{Q!% z>EEtDfBydd!vuBJUq+w?fB<6o2X+#W53~WS;s2M<|9d72Yseq)`11cZJHs!aS-+wF z1}X*!ASNLG{ST%Ze}QTk7ytqY@{}>p)on&BOV)*xm;om>72$%sP!HhqD7ytr@1teTu4J7{m`^Wh2AGglm{~UiA z82u;s5_9PZ|FH1)~3de={)r1*?FgUtsi`kx>?C4?qC1 zfX)8@|LZe*d2K>lZN0{{I4*^b@QIr~;(tA5`a`e}Ddhy$ldQAPvkwr9kh3`~WiS7Zcc2 zh-#qDKOj^7{QC<;3||-k0tlpm>GvN7NlB2NKYyjTe{-?^h8PLd@aHekus?tQg2Ee! zfN=^CK#X6(5e!Gd)(i|h;JEn(j5jcXFhHq*fkB7?Aiw}&uW^ngBcx#f0000J&k9ol;AaCAG*Vvs6lsG2f+AJUecp&K4&zS7@MzJZZ+RCHJO2~-cn~)8*ZB# z%#~(Seaqctb3On>xdArM!+zLfe2=iS%3k1HK82I)yo62#|&;D2*%o~N(LQ$HrxFU=@<#wgQDty7s|5?>qxBTrc>UoBZ!}1le z#)a`Pq~$aEPO=D0fO80I7h5SSMqU=q48*j9Qb*%7#+Pi|ervSf?0bSFwKsAPn1FO| zKH_&kh#AJmvOUSnl~!1AmcaNJM5awz`0DF46>zWZuCh$z(7uBp0to4w2iu-uj zV9oc#M;CkJ!OT_8;~(;r&Cw`0K3r=(%@VWyiIA#;S}+n)^}q>|)QZ|IaYyyY!;frq z6mATysX~aM!z!n$rJ$=27fpoIr3iB{q|Gr32uDRa3PcNj==OQGHve|07^1DbtUgzuEQ=j%rDF literal 0 HcmV?d00001 diff --git a/lib/images/flags/hk.png b/lib/images/flags/hk.png new file mode 100644 index 0000000000000000000000000000000000000000..d5c380ca9d84d30674f05b95c2f645b500626c07 GIT binary patch literal 527 zcmV+q0`UEbP)00;JD`K-EmLvOuK( z0R&e6?>|)a-@i;iz|8zVIqAQ;I)|_@BNM~FU%wy-s0ZjAfB<3vx(uZH&mV?Ae;64V zIcsYEzkmP#{)7J;N}0Ju0muUq%~ z^Jl0Zz)k`PASO^y0(FCg{s2v4J zf4+RlSW)rg;lp2_Kl2?q^5yYkpazCNzyJOD%k=jzP%%INf#Tuc?>~%^l1w0DfWH6z z1E^V4lvz;l%d1x`a&jQQ{ROE8h7C|LKmaj5WMKG(8n4KVKd5of#=rm&U;y%qJ?5>3 RVzdAN002ovPDHLkV1mTk^F06n literal 0 HcmV?d00001 diff --git a/lib/images/flags/hm.png b/lib/images/flags/hm.png new file mode 100644 index 0000000000000000000000000000000000000000..a01389a745d51e16b01a9dc0a707572564a17625 GIT binary patch literal 673 zcmV;S0$%-zP)>fJ3En$GhGS>sbE%%m3$AD)q?8M9y>88-}kR7#RKlk!P~Y_PLuF7~U~3`~nC7 zF#yj00ZUDdpLsm{7ajP|&HwoK0Usg|6%f4L_{`Mi{rvv-`ukf=Ed&Gs-sA7L!Q7*a zj{*QO0M7pb%?Sw^g@yy{>ihEY{`vU@3=8@G0rvO$i3mOL`~mv-`W+b$Mmr&io5dg< z5v!7q0*L95jt`TzK8Kd(Utv)OSp_aLv){6ccV+Z`{Q2+asKUU&aO3`Kpz6wW8wp`< z28M3{0mSqnB#A*-c*8%1=RD#sSOwMznKA3=e&iEzwo{cA=PgXK`2OQ}gqId83!|%* zA_Kz@fB*n70M7pdECCwp4H&@R`1|(w-}M5x*74i)0}%fAt;XafA{48))#>Z>?CD#}*e}Ret0tl$#*RMZ7}Jl7Z|M45`5*URzH9L z{rmSnPy;{!u>dsyO%meg+00000NkvXX Hu0mjfN{&}S literal 0 HcmV?d00001 diff --git a/lib/images/flags/hn.png b/lib/images/flags/hn.png new file mode 100644 index 0000000000000000000000000000000000000000..96f838859fd2aed975f5f4134050fdbc0486ce1e GIT binary patch literal 537 zcmV+!0_OdRP)yNpn^YtfB*U? zE6K^g@B<)#SlTBTcsfda`|@_0R#{e$UZ3l|Ic6l=B#}T zWCl5lg}RFY8S^$g{qgfJOdc2ve*glAv3c@IFK6|y-~NDH^$#cn3{a5k!L9^_5>O@B z$^W^zSlTD;0tg^R28Q0WdbfK|zW)9V43odV{`~*->+kR1AO=tbO#T4}-G3E1?u#4x z0Ro5x7#++k42m+GppXWk{}2W^;6Y*k7i(1vOT1`b$6{=&w9#5#oJ b00=Mu*}Zhb7k&Za00000NkvXXu0mjfKokPk literal 0 HcmV?d00001 diff --git a/lib/images/flags/hr.png b/lib/images/flags/hr.png new file mode 100644 index 0000000000000000000000000000000000000000..696b515460ddb670acb7e9de4438aaf21fc5fb77 GIT binary patch literal 524 zcmV+n0`vWeP)@|4`Xj5kLU3fF!G{fyDoR{}_Q36Vv~H|Ns5{^Z)NZrr*Dqe*gae=g)r_`DNuw zfB*t(VEF(4$y0{Ee}M=nS{mB(NB;kxJOBSE{F_{n`2Y8>|G$0##TjK~fi?gH5EIz! z|8Uj6|NiY-l-<0|OxA@1MWlzkmOI;leLR z$De1;{4g{7^y$;LZ{NOt{rct07a;lk`E!5(f@%OM1_PkhC8`eE9egqWbga z&p;hdpFRZ$Adm)#>fe8W4*Ct02B|hR1*-n0rS<;(dx&bFRY1n$$BzL5h>;=uaC^Mc z(+@v?|NZ~x@4w%F|9yUZW7+yTpo@LH>e(bUfFghX{rmIxzpNnpimU?w0mQ=a>kp9s z8>AGffmuv7DrFgv!3yU7{`2q8f1ngFoPlxn4AoS-S!;e2821p2q{((sbfB+=MK@k8U5Cg$|VB~~? z2XKWZk_lAZtGhi{|56nPieMKY$Bq=4KgZ0muK;2JYWn}5;nka8K-GUCa!{rJenZIL z|9<}gF~mh#ftCOS5DU<%|Ns8~1)2?0{RgZLWF&|Ls)lL+iU2hL1Q5&LKMX(>AUTM^ zNU9+S#0FXN@8@rz^Zx+^5DWL07wmsTIe-5EX@IBzTJ`52%kO`z5F362$-h7b*KaNc zh6exv#P}EJiR%3Sk01R1^NZmZ(C**=fB*Xb3rzn04HN{CU^bJS()(Sf00M~R4FdxY z(0f3MKYtkh0!g5OAQFsz{e$TF`x|H}%fCO*7#IKo2o$W~FaxWA8VofRr202h8w1#j zz=!|{Ah3qte;CCj89_$={rBfLBSbS$5J>(7`GW}-*g)q41Q6q6a2)=FMdm+9l%onl dL?8elzyJ+{hsuy4pm6{I002ovPDHLkV1hP90PyYjz{{0J*12TXlP$`i71!VmC|LYf!%PK1iv=Z0I@Lq zVgLrRB#$I8Q2qeT`3KSlX8!?(3s3+U9e@9T1Mx3N13&;VGFUSJ^?=Y13Wr{r~&-|6d^ahvDC! z|G)qK`}^nrA0Ybu|2K$nd)6X=0AgWa1{?O`IRi-PU$8V7{r&w9sOb0ae<0Pr|Nr{M zEF}%J0U&@_82&N|Y=e#y>zg27mx!0Xgp5*S}vr z{r~fq0csvl>92pk!P<5VDfB!NI2#TFQ3lKnzfB%Al=06ZHfFW+c#KiRe{d<4_V)^&)A0s0pNIe5S)eu>r zF8~6F38(?TQZ#J<0R*xEXct5e0}KG|WIzExE=U%r7$AT^8h-rv@ecwRzz_$3Xaxu` Y0RLik?wUgPu>b%707*qoM6N<$f;0ZTz5oCK literal 0 HcmV?d00001 diff --git a/lib/images/flags/ie.png b/lib/images/flags/ie.png new file mode 100644 index 0000000000000000000000000000000000000000..26baa31e182ddd14106e67de1ac092a7da8e4899 GIT binary patch literal 481 zcmV<70UrK|P)1Ab?mHSU}=WzCQi??=KL1`SXRBmG?g! zeExSVgb4YXfjasA0Ybs`#&c5^XvcLUqDM3{{9AP00d^^H2e48-+%sM)d02u=%hct8G!N( z3;+QH((o5-_OE}xfO;@2_y=+i*h!3FCjkTyNW*WSt$#tPfB*dj3@CIxKqoQ$2DuvO z1O^6x00KJ+r1UogVe!Ksu!etsL5P6?Ab?navG)7lA4zUWkT?GPWdcP410y3N0|YR! zFo-FE!v&-P=p=vuVq_>~VE6=zV^DnmVAx)=U5ZNz6vaS)0m(NHWW2-wfs+9Q00bBS XO2cxg3=*#z00000NkvXXu0mjf|9Z^l literal 0 HcmV?d00001 diff --git a/lib/images/flags/il.png b/lib/images/flags/il.png new file mode 100644 index 0000000000000000000000000000000000000000..2ca772d0b79b255872cde2fb29060bbbbad950f2 GIT binary patch literal 431 zcmV;g0Z{&lP)WlqUuh`uiUU82D1+EBLb>EWz|Nj3k zj6%@>aVJ0ku|Ql5RsEk~{?`9D9{=ZO{V&1vKX2lHHJSgJ0SFC1p8y096I?Y|?05b{XcgblKTHZ zfByjpAQrd=h&?HOAa>`R|6Hv9XB30N3RxDY7$AV4en1PH(j<7uAT&Tc4G=&q@-F{c z8i9e$01Rv(35=ybe;NM%WdxES!M~uG0dj%y@b5pvikg1_0mOLw_HE>d#AF}?ph|!M Z0{|%qc@l5wel7q2002ovPDHLkV1m6PxaI%= literal 0 HcmV?d00001 diff --git a/lib/images/flags/im.png b/lib/images/flags/im.png new file mode 100644 index 0000000000000000000000000000000000000000..7c028b64301d951ec084bb9d10ae4073af46b9fb GIT binary patch literal 372 zcmeAS@N?(olHy`uVBq!ia0vp^0zk~o!3HGD9`RZNDYhhUcNd2LAh=-f^2tCE&H|6f zVxTHv5N2eUHAey{$X?><>&kwIU5Z;q*vsHuEdv81qo<2wh{pNkJ4X+EnBT~BpvC)< zy|D1%cs{-+whao!`({ZQ6>x4c<~WgI_@~q~Jt6J)xetmYqZpxp(-_Pydm=e|h4MQ>V`!SheQBflqIx9~wOPaq_^2aF-Ux00G_5J(nH1W}^IvYRf()C%fvmO1KYTc8*w%maE{{%zpPH7~zuY^=Kcs(hW1H8- z)h6F{=85a$^Rm_w|Ke?reTcp}=SPMMyZpI(DGzMxIoC7xOj+i_aIwWJ!H?Od8W=td Mp00i_>zopr08{CeCjbBd literal 0 HcmV?d00001 diff --git a/lib/images/flags/in.png b/lib/images/flags/in.png new file mode 100644 index 0000000000000000000000000000000000000000..e4d7e81a98d705da8d7054e77e7d311805659678 GIT binary patch literal 503 zcmVl^KlW*80IEmzVa(K3*_6 zG7fg0I9Zj&0woGah`r_&Kwu3FK=xChQigwjfh>?7kc!_h@)sEWW@MKI+5iwhEdRtz z89B8WSj7JS|MwrL=l|b3uZ7Osk^B4auaUxSRgtG4v;Y11_x}$gi|9Y8?EnG9`1|i) zCPv2p|ADsrhuF4k`@Nr^zUpfTpS$xp!A}Wj4A3Yb2~_s}<0pUsVqyY2p8>1`g1&zJ zsVvR4Yya)fUw{4wtNss>0tLxGfB<5GmnRH!zxweH8<(Mq0N7e&^ba6_ z7#WHgIs!VLeti1p-=9B!fB*jb=l8$ge}LrQ-#`%%`S%Y9{re-sFSERHIY0ohF#KVF z2*K4Ml>Ykz*ZJq)UtlmW{9*tIAQm77@e!0?Mfa}mS!7%=x2KmY(S z0M7pbTSu9imq`K?75n7n_u%3MB_szB3#hl|A07@E6$<6-<>30S5egmg@cSkZL+Ix9 z0st`p&i@3O7{&wE8wU3C1oia^`T7CwI=ckcau@Q71iA1L?!*;{7^Nm*&$?GLJd|NjPb3=0E0KfCb4 z#nAu(05Jg0{{-+tQ26`)!^rI-{P_e371QGlF%9qW_x;Sb;QRdk{r*xJJ*zy?_rWgu z&$=$1lYjzR(%pFe+p|Ni$IOoG{eTR0XemVUia$~;LXXZeDO z0096o0M7peXKyl1N+90g@dyY5ARP|N&gc{s2^<#+#>?j*9u48*^A9U5-*(6(kqBPq zC^|QM0*Gbi#3NFYyicBf1{wyk;Wx-spzFb0kX0fvuWZ`CzyHEKd)}3G%ew&r05Jg0 z{{dZPvvzMc=Kqyj=IHYZ2nGGUe(f)J7ZwZK+v5TV s=!a5B6v9X#`iH^&14cjw13-WQ0BQ>oQ(TIK+W-In07*qoM6N<$f`&OQ@|4`Xj5kLT%`al?B=W5P+gNxB&nJfgpGfTOih;e`=>T z5jZ8;?_>v5xi(~iU^udv!6f5$jpNVh2O?$m1OPDr&i?@Y{r&#_{`vm=wBfh>{Qda+ z{Pz3$!R5rm=Ee2+`0e-d?)LGV)1LD5^!4@i=jZ1F2;wA$U5|F$_;B;f&rf1p(qbG! zCte(9VPa-y5lGpbZn4ZFhzcT9$vfdqmuG z@j$ZG>u9())mkwqmYHSd7eFi*FJ3%$?AX0~_kM%HFED^GKqQ#;=g)7T_f%9=fX)F3 zAdr)QMoCIaf{X{6{|BNG$o>N%f#5F;02KoS5XlH2zyJ$0KZ{``H1_}i002ovPDHLk FV1nFR>VE(L literal 0 HcmV?d00001 diff --git a/lib/images/flags/ir.png b/lib/images/flags/ir.png new file mode 100644 index 0000000000000000000000000000000000000000..c5fd136aee534ecb59914e336cad18d18ead2a4a GIT binary patch literal 512 zcmV+b0{{JqP)r;gUH{1e{Y(x2_S%2fSMQ?7@vH7`tSc=xS~J*|Ni>>`_JFszyAFKs{8d9NdA)L zm1AIH00;mv0M7pew_3Ln1`-ek5ajjb8VVZW^Whu|9pCfc910uY_2L}~8{YEX9t$4Z z@!Kj9D)d(L0*LYN-@lBEj6f&-|Nox>4F7-s`Ty{t|Ns8~x3>Pz!S){pfXY67`UDU_ zOc38f#US*GW&hv2{?Eqpf6;>f$N=n5fB<4bR}BO)G5?=F{eR-b|HMQT_5c3^H2?$< zb1geNgNn-kGiMln{`!CM;{TsNL8PAke-;*?JV+Z*eYOvhv$==KunT1sF?AKYlWZiGf7_{AKv_o8k9wMiBcC z1B3*kzkfmK*Ds)AfB<6r3XWMgVnF4hNdW;sfB^vU;z%SnI0)(h00004s{hykP}!$Xp8x`g@iqg4NJaUd z$B+Mm%>4cD_iu*Zzrl=O|9^qF|9<`Y547mdFIIVlOMCYL1Q5sui18rvfj0Ph3vJwt z)dnUeruXmP0|XEYv&@95W{1bGfWG{@sKWZ+FOVO6s`df7U=M&0& zKrFzJ{`2=AL>j0Rra@ocD)4hB}-f* zN`mv#O3D+9QW+dm@{>{(JaZG%Q-e|yQz{EjrrIztFq(O~IEGZ*N=lh=;=qSyMwWku z27eMOW_|f0uQeek^e_9g7KH|eq{JVG0^UaP2Jy4}|L^JL_3uCblfVD@mnS9t`~UCn z|MT(+KT|KOfz%~1cG~~^_2vEk{SFNQ?Cjg~|NsBWy<%2im{vp^YdeS=hk-Cyo6U`Hgs{l4FR(w#{P`G0;a3G2@YSmzI~fu(ZE1> L{an^LB{Ts58L6#6 literal 0 HcmV?d00001 diff --git a/lib/images/flags/je.png b/lib/images/flags/je.png new file mode 100644 index 0000000000000000000000000000000000000000..5849880b2e24b41f0c2493fa056966a89221c3ef GIT binary patch literal 471 zcmV;|0Vw{7P)&`<4h|q`rIrjv$UM3d({qX7E|Nqxg&2GgR|NsC0@5j%tl1lCgXua>7 z4N(cz@c;k+pBJt^G539>ZukA*=||mJPg>HxA3Xg?!{M=+&yRCg;K~^P|NqYb1OI>j z`OrG))4Y|OZng{zjNf-1;!Ow@tSw+KQG^SViWjK+4}4D{Sc9FI}SWlv3_D5 z@bl6QxH4EMO<8bXQ0rxE{@=Inksa{&-G`TP1@{EBK1`Yi)$se_ljq*?52TDfFW-pi zVhH%WV$%aD<7Zy6zaKnid}IdH(8MNz3m?&j7vpMhv*zs?-1g N002ovPDHLkV1hlX?SudT literal 0 HcmV?d00001 diff --git a/lib/images/flags/jm.png b/lib/images/flags/jm.png new file mode 100644 index 0000000000000000000000000000000000000000..7be119e03d203695325568174b72522124bb2f12 GIT binary patch literal 637 zcmV-@0)qXCP){QLU}0{l%6`#}@@_VD{9F|q;xF#yj01gpgWJ+A*m zGUYZW{T>4SpXmF{^Zon(`}_X;`}_MY3j1pm`Wy}V&B*(tydCWT00ICp0M7pd0000m zGd#J&@cQ@tG$8vu6a54J`qTCN{{H)06Z&u*`VIU0o2UAMn)~_v4c^|~0*D2u;qTwS zKYspMz5CDEtAAp>e+Mf5)@1$t_wR2Fu3uNK{_0!&`}CDxK-+|V{{|`s2p}dP{`2SW zZ!oxe=XdSY-}fK=Qse!l!T0O_!(X}WAk`4?=MOLh7ytr@32Xz9{pZ*3U(#Z~DiVIl zOa8j^;n%JAKjo!$j^Xni)Y$z6WB&k?3JlvV7}WR}00ImE Xyv9Bjb9W)}00000NkvXXu0mjf@Xt#6 literal 0 HcmV?d00001 diff --git a/lib/images/flags/jo.png b/lib/images/flags/jo.png new file mode 100644 index 0000000000000000000000000000000000000000..11bd4972b6d5f134045d4e8ce134601ea9b5654f GIT binary patch literal 473 zcmV;~0Ve*5P)M00|Ni~>`!`VeZ#eh`f&K#;fdS|pfB*tJ>FU-06DIsWc#z@uumAs9{`&>~&q~MQB#;&cfB*tH z31sk|Jq+K!KjiuK-^&B5YLK~LCjkTy3s3{|pFco7yH$Tr@L>D>cm1y|D}MvS>F@7f ze}Db{_vg<)5c|)+zsmedM_Y~p1Q1BWd$vDo!X?isvq}Pk|KA^w>VH5L!1(y{_x~TD z9$-NK{r~sxzrPHB7ytr@v6F$JJdlAwh=Ji34E;f3{DCq4fk_4ifB*vkxQ1J~H9>i| P00000NkvXXu0mjf0T$ba literal 0 HcmV?d00001 diff --git a/lib/images/flags/jp.png b/lib/images/flags/jp.png new file mode 100644 index 0000000000000000000000000000000000000000..325fbad3ffd3075a4a84d8d898ad26ef7d3e0d56 GIT binary patch literal 420 zcmV;V0bBlwP)9whYk?f=!Q|Ns8||JN@lTD;`{R1ZWk|EGa3dAO8ObDh3E3Cb;oH_5X#1 z|NHy@|M?558b}5Q|Cf`4hZv9q2p|@?lb|{i68>{>{ol0lx`{mi O0000=G`P)0NEt6k^VGA)9E1hT9ocRoN>wSfaWv)?-raRm?)Slj<6Po6w} z{P+i;{`~nD6~!ec29@~tkBNo($fnHz0mS%{fq}QS{_m4#|Ns2?|K~SQUHy-* z`HU>AfB)8feAoK(-@hL}|Nr_0bQ_Dj+^xMk00K}f2RQ&hFc1JYLgN3=lsJ)M+p3uR zWC5ydAM*!ly4H1hsiEFvIU^1)HH_GYz!QMsIYt5i1c4ZMLC4DfztdU-q)WGxxg;|L zi3%uAJ2fm~N8&I2%AdL;`{4^9#;e!&D=C-&Lk8;9|NlO`c*HPy9@C${KeOWnB;`P2 zATRu9VP-jSWFD-S8kh{*zoh2aO#pT8A2W0o(w3 z|5bef!~)j#|KF3RAf-U``!@sYUq;#A42-}3UHtv;%kTfcfBpOQ3nmTE<|1vNq z0ns0zZx{dq2xP;5h!=kY&G_~A;V*`-zy9<8Vi5ZI|I4p`PkusG11$kMn1KNxfWUtE z{TpHc!>?a|&i!W8{>5bQ`~TnHf3N=fz5nHq%!z>% literal 0 HcmV?d00001 diff --git a/lib/images/flags/kh.png b/lib/images/flags/kh.png new file mode 100644 index 0000000000000000000000000000000000000000..30f6bb1b9b6c5bf355f67a17531fa73beafa6639 GIT binary patch literal 549 zcmV+=0^0qFP)P;@arD~1pHxO_zPr1&>t9y%wPZrAQpyS3=Ms1K-T|%K*j%o>i_=z2W0&D^Y8ax zhQELQ{rLl7|Ns5_-|C4+00M}Gf#D0s|6k8u{RAokD*W^JKSaeZAp18+HBcQ8{rdA) zTAYJ{;SE3lu^j&CtN66?*W<_k{(=kvTJiVSPc{h&pyuy)ZZrJ(`}gOM|G$0#rP$=; zY#H_d1P~L*>3>1SGXDMzbOE=49-9EaM0J&9T`emwH;=g~P!Ocy*DnU30tNVGcpOKXK;IXGH`G*aB%Pig@_cF{AXeP^XnG~{rU5QfdL?ZSim;?VE{Sy z7c(ax6CWR+s|%BWAkauYPfsQR0VXz9sPSMM00M{!7+@fO0fqklmFn#S3Nf;>{s#gU z7DjgV{|pRrOO`MKef9?wUO?vn1P~(w!@{x_lZQ{f0d@UhVEX<0FF08K{sNMJKnNIa zzrX(mdR{@6d*A9+009Ja65pra?7SkZU^!3-{)PrTC`>`Y0b%_6|LHH#J`sQb0@|>a n0T_AEh(trkF%3aX009O7j5IT?Rho+J00000NkvXXu0mjf2r}#E literal 0 HcmV?d00001 diff --git a/lib/images/flags/ki.png b/lib/images/flags/ki.png new file mode 100644 index 0000000000000000000000000000000000000000..2dcce4b33ffe1f40d490cb1a2e03efe22ea56155 GIT binary patch literal 656 zcmV;B0&o3^P)8t@U|NsC0_uv12fBrK4XN%za&+zB_ z{P)aXfBpaa=ii?{|9}7d|NHmt1seeZhy|?e|DWei8UFwK|L5=jKYtkh{P{kK2}m(L z`||tm?|;94|Ns5#-_IY+QnEm+00M{!r2OxHhJR4iK=k+TZ>A77)*#lue}Db^^$Tb= zko*TE|NI8J3LpSOb8Z9x2m%4nC$a{*Gqe90@enzQH`ta%tA$7d{Sv5iP&~x@8dMF~ z(;dfh&fyCHF#yj00oRR-9sTeJMNR(n^YxvS3U`G57YhIQc>VqR{rPSM@(uBDU=5F+ z{|5&5hj_*A{sI6o0M7pbe|x2IYDAmA_)R$v7XIy^!u#*~18PtP{r&xWnDPVw`hiji zey{rM^8J)$5m8%@0*JA9=57`qRaXnayHCFDJ@r1pR}vUfQ&&Fu_xE3Vu+-%{U$!58 zQy3!)avcufO?mzv0@a%gl z1HS+N7!IC&H?5`#AOHX{0M7pb00(zPR4BWp;5AJa{{8^XwcY>#`eSh{`1tyzm&^bF q{8L{tuE6I1;oe7AG|b!z0t^7P6ga05`yJ%~00001r;P)}L!W`0l>rF;|7So3KrTcC!ho;=0*Gbf0S0@;YBwbYEs=i=3_$ev|Np-X41fOr z{{tp}0~v7g%iT=?0mQ<{9!@# z-(SD~{`vL)_wRqdfBpaan?+XX#@15+0mRIp%kY{1qrJR?xs-YLhQhSVzk_f6;`sgh z57Tc3#$ODKzZsZ*F#y?2e^`Y0-&}tV5I|5HD)yDjz7nmS1pU~~aVF#A6wD&YtO00ImETIDprOD_2B P00000NkvXXu0mjfKOhx^ literal 0 HcmV?d00001 diff --git a/lib/images/flags/kn.png b/lib/images/flags/kn.png new file mode 100644 index 0000000000000000000000000000000000000000..febd5b486f3f90056637b23caa26d838fbadd7d0 GIT binary patch literal 604 zcmV-i0;BzjP)h(K@ANy8uaQvQ^_nWcs z*Z-GL)eL_?t_B7*Kmf7KbznHW;LqhtK<$TZ9ej=*TGLweOZn#S|EVB#AOzI#2dDw) z)4xDJ00a;t5ND<*{rU5ogY7p9)8EGU->gS|Gwk>cG!LX2Y%nmu8NlfEl`8-N#0ZOI q248)K1w0H4M?n#d6+r+%fB^s&Q!OA|2rzyC0000Cs@aq@DuRlQczuzDZ5@KTj2q4CTH~*`MftCON|DS>3-+w6c z9|(gO{~7-O`v>9vKX&5_Kmaj*WME|P@B8=S6~kYUnG7sU|G#_z>G}QV|KC3#^7rq5 ze}4b}^_xjb^7)+E00G1Tlwy4KiiwGVIVgltUY_yi&tI!o|Jl8p;n#15-@icU*KbCk z6Mz3^`1ON{fdL?ZnEnBs@%JyYzyH5mxBfr4|7*t%=AfYeY;6C2{Q{!DKY#uG1wwy- z+}}Xm3;+QH(!lWNFN3HElfM4XRjZk-tp4-xFo=l!{|(XrbkBdVP9XXJ&!0aG3;+Sd z1adCWtuJ2w-n@w=AmGpT?F`?)|9k%Y-_M^QML&N+RfBB+Dh3E3pdT0*fp#rf!j_o$ zUs8faP3>oG?f*A#7{O)(oeuE;(0C>wVqgFWAQqr4|9E)*J$m%5y#o|bz~KAxm4S=v zKP&4$usU!k0b}RSKS4oYgaHH)%c-;9wWL`3={r0|OreK!5=N4TMk7RCwBA z{P_JV0}}Z6?;n_iu%H+Q{s1vR05Jij`8c?M=-GouSI=K${m;n9!7aeW#m~(x$j!^i z%zXLG*~fS9it_V|2?zl-00a;V#NgMjUvJ&I^~3uQB4T37ii-d5-u?gQ&wmw_XD?o^ zUAsm=P*7M%NJdr`Xazt3fo%By|Nn;%AAbM-ZD?YwEG7BBxA%WR!T-FR|8><0Vxn$d zUT@yKdH&)BP#Mq$fB<3y`hl076R7Rgt5;mSyo`Gea7>-}|M%}Nf0%y${3VbO@hKwm zAWK?W z+TGp#<;$01Vv<1pdP-ancZ!Qkd3bmLHK?nrgX5I}Ab=R3zkQ1wk#LIP517FKVgLC9 eRt>}e0R{ktF&Q^6#MUGL0000@P)xg`upqGzh6Lx zERQVE2><~E((v!!|G%IA{@M07EI*V_ln=0RjjdN{oM|h)7EO z{{7?6U#34`ML_iD4-=RKMg|km5|FijfgS(|AV#2u+YAh13=HqUkqe1m1{eb(!T=Kl c0)PMm0G()MDW>>^I{*Lx07*qoM6N<$g4p`a`Tzg` literal 0 HcmV?d00001 diff --git a/lib/images/flags/ky.png b/lib/images/flags/ky.png new file mode 100644 index 0000000000000000000000000000000000000000..15c5f8e4775b2b68e0360c1f4ff1f37e61611276 GIT binary patch literal 643 zcmV-}0(||6P)0{QUt82Kj15^L?rd`uqE`oNxjFF#yj0 z1e^fI2i-9Q(8&Vs@%;Dq2on+Z{QuwM00sm0@b~}!1OzrH#hk+X+Tt}E6bb+U_yPbi z0M7pcvI;2tA|wYPA^Z*x0300&EGqR875n@A_WS?(`uvdQq*oFTSt1&p=b-!h{Qv;{ z0st`p&i?}PGCBeX39IA)-~tZg`v#`;6$Tz2`uqI%`ThF(|NnA-^wR?L!uSAshx_~g z0000205Jg0{{tif814-hz}E2g`1#%M`@GEN)${-9=jr|Z1Nim(?*qH%B39iMC&AR2 z>ggNf+PVUWW##cF5^jI~{P}h24a1+`jKBZ?zJB$|uU|aB82|la`WF`1`0wBUe?VZ- zRnf8uXahh1u`n?Z4sYX?@pO{;x_8g;0tl$# z2T+})81L`j|Nel$KOpz_zrTNegN!(Tli}h6pb7teeq#K~3=Aa(fB<4-V9 d!wLWb3;+YKCC*ol*cJc)002ovPDHLkV1loTFLeL_ literal 0 HcmV?d00001 diff --git a/lib/images/flags/kz.png b/lib/images/flags/kz.png new file mode 100644 index 0000000000000000000000000000000000000000..45a8c887424cff6eb0471f5a1535139b965e241e GIT binary patch literal 616 zcmV-u0+;=XP)g01!ZoKn?Fz`<^k#?O_Q1 z`=8<8e}=z6_5c2{{QvRuAM+0emcRf01JR%V|9}7gKjGLHfB<4)U|@L0AiL;yFw=jq zasNSbGXHKG{NMlfpWxpAK41Q^gEaj6FV4=$@arEy05LIu!2gi{Gync$`1$|;-~a#q z|NCw7f0xa__4fbPn*ZDO{onuJ|3JnA^#F|o2q31v4F4ql-&_7K9cVD)|KCjiesKSP ztM&iLe}uy71TZ z|DRv){|H?Bqoe!x=x?wkfBu3(0w91`fMN3Vzue;gQUCt^|MZVr;{RRU{|DCmOS=6} z@%2BU5C8a_|1a6~&;1YB8$b;J0mKBvKpP_e^#OhS_CN2(f86)~DtrE)Yx94t!v9OT z|MTDe69TJd_zQH>zdry01PrBrQvYt3|7!q-C@@&>{!_XBPnqZ6E6@K61pYml`M2uu ze+NdW22lI}1Q5_kK)3wPV4bt}e=;a?{xkdrMUmL?|7pP3c>kYY0b~&4U$AjN34j1% zWLW#P{SRLy(>r)v0s|Y${(}_LK*N79FfcIy1Q-CnX{(%t#68R664G@6GIJN-*24NrwB3rW+v!ydOp^Ef6{n_)(btIFVjHa=pdp6)} zz^!@$h^2tpKUmc4)64h&|Ni?2LVth#{QKwk-@kwU{{Q=j;qSk{fBpc`pWlD@C4}l3 zHUR_xF#yj01d}3g9TFqw{rUX<|NZ>{`TG464+L38761SLpR(uO=J){s0Q&s>`~3bJ z6bIb^kphT`;m^O{e;I!LWBmP>@yDNkj7*H>@iN-VTtHNrD96Ue^ySz8pMMxZ=pRTg zKmaiT)&Bj@@b3@E4ZnZ>72sjw}n?8s2>T{qV)lKMV{%|NQ?241(YPff@h;hz00Cp!a_N2HF7% zr}y9gR8D)C;wJ_Sx5=xYz5MWpi4mv-=yjk&KmiL7K#aZ&_9^w5@1DH=3l15e)xUl~ z-0=7B?|)4HL4sh3f5LL21siGr0*GY=!$H*K#ZR;BJ~dv8zS`wDeeIR3;>1y|KC3hK=RLTAp0Mf zWcc&@%EC-|_DIyI;S5 zZoa(f#*3@};Q;9GfBygi2&4h78pxV*WHQhn|Nk-k{`>pa-{0-~I{v`b{|EZ(4?qC1 zz%@X;G0|`0)6dV-R;K{9rJ5v|%9;KB_nVP{8R7~c2@pVx*BKb3t8)H6dH@UxP=NgY z{qNULVEFv`^^@@rIK+N~gX`}f7I~!;+fM-m5DPFa{(t+%C?E(7W+q^;{`t)a3di3} zzd^yz010JK%>4cT^&8LzfB<5=h#HaqkRlk)Wq^@D01#jR5K~0vg#SK#00000NkvXX Hu0mjf%Ubyh literal 0 HcmV?d00001 diff --git a/lib/images/flags/lc.png b/lib/images/flags/lc.png new file mode 100644 index 0000000000000000000000000000000000000000..a47d065541b0d998da832e1981b479097a9b36aa GIT binary patch literal 520 zcmV+j0{8uiP)#-NSZgwz{Qh@GSmETWyIzrrS!pkkqDDw`CEYY|A1Dxfxke?UP9EWUlaZ{K@! zXYTRdfWyFioqIm+xW_M=V(hYvbO?~5ZHkEt37xh?rY1@PqM%`P+i2w@_wXJJO#nzA zheNt~+w1B3H|fqGMx=x!lms6SMy;uqQ4R``NH&49%B_cditsDHI6DHXLNubec}E0~ zb8dy|txA`rTkZMN{rCM3FV`MqlfuwZrz$X1)+?ntF|UvTkD3M?FxSaem74ag}Vzy5sA+`s~GjvDl6>(E?=UGu{=w?r5#MJIwhn?GrT#s zeRSo}v&#TUmcjL&mxEF>2%EIxN+SI=O=izlM$T5JH;yv-C%^zTfK|9CLa`qJ0000< KMNUMnLSTZ|5$YcR literal 0 HcmV?d00001 diff --git a/lib/images/flags/li.png b/lib/images/flags/li.png new file mode 100644 index 0000000000000000000000000000000000000000..6469909c013eb9b752ca001694620a229f5792c7 GIT binary patch literal 537 zcmV+!0_OdRP)sI{|q~>>TZ2$qp!tjsj_dmuxH+6SkQv+K1^Dpafp!@&+{r#8W&u@@le*a|z zk$)I|{ss9HAb?mjKkZQc#wYOgBhb-*|NQ;?=l9<~e?U(E{r5MB3DgSYf*4|4g1Z=I z0R#}sfv@v<-|;cLeDMG8um8XQ{Qv#?|LOa4L zz5|hefaLFgf557NB#8Tm`R|`M3=9AP!~zPVKOloaN+E`UP5lQo8*B+s^WVQre?jpA z5I`*dz#16EB$cmd~05Jg0{{#R40Cvt10RRAw z`u+d`{`)-+^5ON`yb$y0|Ni^@{rvm=`~3g>{0I^G8ZGb(2;2e)q~Yi9|KETAVEFqN zi2na)xwe&yo%hS1uZ%yx{Q;WF%<}W+mp@!0-yWP|m)B$h2q2(_|NnsK|6hiGKudoE zUGn9{-`6*oEmQ72y~rUb^YQPmzn@?Idwh=T>wA{p3V#3shzY3p@87?_|NZ&@_cy~| zpmRZP`1kJ@JI^@8AFa{s9OeCZO+ts{j1?4b<=-Nd5zA z`2GL?FD{9%H@9*#{QvEce@o8hC9n7wpg7QIfB<3vS^!iHvfyK-U8V5ZH#le}4S|yXQB^Nt}W|`Q?5-JjKDn&hY;a$Df~n9-WqyG5z}b zHWMS`AAkU20!9tv|KD6JO#c`e|FbePFfi-*z4`Hxjg_16|9{rM|5*PsvHt$a@%k1I zzvO#v;hz8j#Q5o)BT__yf)$AVfxHBa6HpujodJ?%_y>%AV59*A7yy`5b5c`Z!JhyC N002ovPDHLkV1l?nIh6na literal 0 HcmV?d00001 diff --git a/lib/images/flags/lr.png b/lib/images/flags/lr.png new file mode 100644 index 0000000000000000000000000000000000000000..89a5bc7e70711575c1ee3b83cc2be7f0e1fb29c5 GIT binary patch literal 466 zcmV;@0WJQCP)2Y|A4{o z-@kwT`t|eY&mTX2eEM}Kp+i!_T03wQQEla((gZiC0cs^;{c3|jAkj>009Kl@aN){ zC);;k0UG-E&);Xo*&wq)roznr3pD=Ezu&)DC1p;}S_BY4jKAN$W)>8Nm;toyKW@Ot z#Ps&Y4S)b*xg;zq)7SR<*)x!NAa?^@4{|ZkY%l|8FPQu15397y$%U%{0*LYZ>zAxx z8}J(slm+_X#f@tK0mO1iR9wET{^!#tU}GSb{Q3uSG}s1+e?a74b~(9Y%Qpf95aZY9 zPuWDo(ENa58%O|%pI^NU5I`*FB&GkLM&}>Ys6}P~0YHEO0B+J}4VS0Fk^lez07*qo IM6N<$g3a05u>b%7 literal 0 HcmV?d00001 diff --git a/lib/images/flags/ls.png b/lib/images/flags/ls.png new file mode 100644 index 0000000000000000000000000000000000000000..33fdef101f74e38e2422bb85dc8a31bbf1da326b GIT binary patch literal 628 zcmV-)0*n2LP)NT^udI6UX~&u_xA`izWBNXkIq%g^6Y%Pu{8|3yZC zlYxl^Ab?nacHcU-^!@XD|Nj5|`r(zVwkHE4BV6^xC+~{3+xxCp=yQ1PA~B|JUd6PoU1p;PCnS`uh0!`Wt}y4#)fi z@&Nb%0tn=Xmv@c{N@*}KFh0M&kIP1>YRmQG4?lbdn);9N*SEXB6{h}Te)Ie9Zy;d! z#Q+chF#yj01pfa18Ye&*C_n-K{_XVnU82h1@caA!0{i;;`V*Y{7}WX#^!xhz{Qms? z{`>&^00Ic4fsvW@|G$6Ruf6C#{P_EiKfi$f`+Dz}{FL7;Z+`vz4fMjFe?Sd?fe5Gp zAb>y`UVr&E@!c&!7K){sO`Ozkh)melY+9 z5KGUl3lpbYV0iHf6xF}JF{n*t;A3C_dhHtn&^!?O1t$N2Nj?UE00RIWZBXJNY9>Gc O0000 zKY#!H`S<7dzuzGA_xCRl`Rmu;Um!M^l;`6=xPSp5fLIuQF#P%V7sv;y25A5(1xW+7 z{Q_w~Xakza@Pz>&fLMUe`uqRSpZ|Y=>VQIE8-4+ehiC(l5cdDyKm=3_5I`(zTN!l! z|Nj0Es0O49Xx6_!5M^MM5b`fj@gGk4KbtNx00a<=83P0Vn?HYFf{Xx4|Nr&tKga?w z11|FC_y0eCSvdcCFfafF5XlYnMRN&=-B{`>{W0U03nA0WvHB!TYz`r< y{$OAL2q4DW;E4VQBmbdt8IZ(*2pDGo0R{jiB6maa(%qQ=0000! literal 0 HcmV?d00001 diff --git a/lib/images/flags/lu.png b/lib/images/flags/lu.png new file mode 100644 index 0000000000000000000000000000000000000000..4cabba98ae70837922beadc41453b5f848f03854 GIT binary patch literal 481 zcmV<70UrK|P)?-#?r-wgj45C|ZESQtLMVW?~Zs{a4) zALIXj41fOq2a1uNeOQW%&E= z|DQh$fB%40fEE4z10q3;-;ClCKpOx8h=su~@}N>;ErcnO|V^hXG82+5i4Q+5aFU0|N&GK!5=N X;lz1sunOP500000NkvXXu0mjf*7env literal 0 HcmV?d00001 diff --git a/lib/images/flags/lv.png b/lib/images/flags/lv.png new file mode 100644 index 0000000000000000000000000000000000000000..49b69981085ff54568907cd51a56a1e5d8b01ada GIT binary patch literal 465 zcmV;?0WSWDP)TuF);jrk;v#5jAUY900)zv`N|Ns31p}&9s{rUUv@1OsF{`>=? z-@pHYNg(_0@82^wZ2|}&78a1v|Gz$Y3Q`J0Kshi8lm?N%fQ(=Ne*FS+xn*U6mIDM3 z3(!4({{8=rtQsf{G!?8Agn$gN2Dab7KQS->1Q6rPlP7uPKoY|E^ZWmwzrbJwx)~sVSb)*-|Mwp*NlCCVfB*i0>4ZfB zFhYR-gakS;`Tzomv6O+~6D%TsAw}vh)M$o8KMw-~K!5=Nd?b|fr64Ht`Q}{`DrEPiAAXl z<>lpinR(g8$%zH2dih1^v)|cB0Tm^Ax;Tbt1Si*=Q}{E#k?FvXz98l@;}5~lm=?U& zG-}|S|Gl`lShA(H^<$er9P_@~-^V_DdmG*6-Y@sigk?QrOiWCI_=%GzADT2wykw9t tC3C|94FSnevC4oHhRgr$|4V2bWZ-9WJz&bE{tsvygQu&X%Q~loCIBwYQ&Ru{ literal 0 HcmV?d00001 diff --git a/lib/images/flags/ma.png b/lib/images/flags/ma.png new file mode 100644 index 0000000000000000000000000000000000000000..f386770280b92a96a02b13032e056c3adfebfa18 GIT binary patch literal 432 zcmV;h0Z;ykP)@|4`Xj5kLT%`al?B=W5I`(ov;U*0{`Ko0*gOW1x?dnY zU=0kve*-lD1P}`lGXhluRs8wG@Eb_}{{H{>S-s!?{`@vR^^5K2FR(pO4M5WY0*DFZ zqCZG(`2G8?)UU4`zrJw%x*-cw4MBhY08Ix7Ah47E{sH^x7s!U+ztwL3`tbkv-#@=J zum1jzWCJ7ENdN%^b`n?!@|4`Xj5kLT%`al?B=W5I`(ov;U*021*0XgD3^5{teN< z@cTDV13&<=05Ky_HBiN$KMcQtBo?#b8i1w)1P}`YD=UMn?0*)P|9^oV_=9jUlG7n1 zgOt?2g9iZui1GF7*Fr)<|ABx33~>V{CZ_AxuLA@S%fEmBAbhajaRP`eP%%INfiyrk z1T_G`pFe*90tjjYTn_{=GBPrt03a7C3lKmc4KH52_yY$2zyM+rgbiXafFO_o^aD@| aAix0StzUbk+v2SN0000M*00(~<{@!wBU}0eR!0_)M!#^$%c|o1wA4mpD0t66HlA)zv9Z3HD2a;wKuKxf3 zKLhV?#{Ykr|9@us&njQ==l`GI|Ns8^_xsQFIm-b82&94GKf}}4zyJRI4@Cd}JZ511 zyk#BtzrVk|eZKww|NG~I-~WGu5Q~)bF9rsH0Ad2#1T-6>`p@704FCVWdiqyE_S>%? zzn?t&`v3p0|G$6zgQ7n`R{;bN6VP4%{xkdmsRoGvjXbc2Q*ib#i+$e?>}LD_@7KRy zzyJOE_4n5=pu>QE00u!g^X8F}1){Re7)$pq2>GzRP>hz5WF0{Q`{ z7%1`&WXbP;Kox)fFb41M1d2p!76A1_RfAN3oCFX+Kn)0M$tdvjY9_8yH^9QVjn@nfZP*{rmI(|3?O9b~d@cVAX$tK?&3V z5I~F!3@gDg2t{v?r~d;6^$&1NgV7;ZP#i-L5C8-i0C2iwRaxXp%>V!Z07*qoM6N<$ Eg62#MXaE2J literal 0 HcmV?d00001 diff --git a/lib/images/flags/me.png b/lib/images/flags/me.png new file mode 100644 index 0000000000000000000000000000000000000000..ac7253558ab939481a85cc06dcc4d73503afb9f0 GIT binary patch literal 448 zcmV;x0YCnUP)l$FJ^m&#tWvBA4C(n)b76qu^ z3TjKJi*u=MzAs;^(tHqT@6cZ|8AHxz+0T%zR}I9mkc`8faCz48MN^H2?$<3((yN)j;^`52o304M1f80R+|X9}Iwu*X+N)@cjDs2c+lU z?_dAGBv9wyKfl@e{~Tjr001}1@4rADVDj%Tpgtwu-=}^u z00a=o2DtG+^6#HtKYxRyQB?o^{pa7Gzs!FaUNHa!5W-0i5^f%h1nT_t=O0kRUm#-m z!vGLKP#fTS#5u+P{rv~@0nkXGhChFS;q~V)5d8o97pUPE13&;VK7Rc89~k`k^9M+( vx2Q8b0Y@nl1JFDW`UNKcfk_?)fB*vkB(P&2-J7g<00000NkvXXu0mjfGX%sy literal 0 HcmV?d00001 diff --git a/lib/images/flags/mh.png b/lib/images/flags/mh.png new file mode 100644 index 0000000000000000000000000000000000000000..fb523a8c39d40401b9abcfb144a73cbb2d76b286 GIT binary patch literal 628 zcmV-)0*n2LP)qpJCu1p{#SASZ=3QjbPhlO05Jg0{{#T~{M_a8tGL(@4F<^6===Qr`uzX+`vVjI z>RSuFND|!tCprH%UjG&-`Tqfgkh}r_F#yj01OWa1_W1j+!`}P+|NQ*@_xS<*{r*D) z#ao8o+xY#_%t@QS?0~yfBW+Wj{_zyJQv%*f2f%)|)v=^uaq0&4j6{l|Ybrbh`TZ`2ITPyN!~wBya;Q+wXO z|N8qsP{n^H7N*~zApZOB??0dhfB*t%@KJoPW~Y4ZyXB%oU++J<@%!g5F#%3te)iws z==lAQ0jwGr+CT&T00a=DyL0x5XB;1||6pKv0FF^K^bd&vjBEyg00RK!=O6aq+V@KU O0000p}y_ZxVsQQo9l8qD!tQ%&&F2zEbEdU-v3mY$p-gb*;wwp?LFG<9EeNpZLj7Q z>zeacpNZ>XJG@0bcmXcALo;Ad(L@#C92p0~G#aM!FfF0T7^YIJVVFaIl|0gRpSyF_ z@0dgJ{oT}qqUk#4;-a-U9Fej5EJ`tIE9)E!qDfL@GEq>vEDI}q@P8EmenIHxu!*Cc zLK?@%1j7u0A`mPlm`kyT;5daWs;EH!+LV0IWO0Zyj4+sHxRqia#e9ki#cu?^6YQn9 zOfZ8&4uw%r9nR_}FG?tJ1sBpnAsdGMh7pA$Mlm3ABvgz9aj&GrxaT8{1^YB+UzPEM zQQ5*0;(QnblJRNh>E*%16wccXl466KPu9Lk=M%$}%9~Z3xs9na6KbZ+^U;AoQ+JVg=BO3kgY$Vuu?iP6r(sQV=EH;Iwf|hcN2Nd zPl_EfW;$kS3zh=H4ojC&X!7Bd!`~OdX{VxLp z5dC3f{KL%rhe`hT|Cm4jfB*jf2Sk3^vlaWpqpU2@27mx!VE|eEAE^2d5dHlPWd8sE>;L~hU=6?i|N8~f1J=Os z`!`SnKmdWv|I6_A575egAcQa*n+Bj_fB<3vdK75(@4vtQ{Do`yh0yRHtQw*LD9^wE z5I`Uef5B$|`u7W{2T22%M6!Vq>?D8y0%`dD|M#!IAl1MB{`!Yz!@u8fUYwuxex*z#9GlH2{4I3~mO10Ac~g+V6jVB)KI)-uUyEi4o|t-;5vX%A}^sE-TCS?;peW@7xO)zGwLT z>;Lb2Aa%cf{|B;v0lB{!Wo3aj00dxJ4sHN|VGstA{YR$4C2D_2_!cBcz(8l;%*ju; z_5-pDt^fjRVEX=(;rPk#zkV}({q}dw+K<0~Gco-B2UY|%8?FIpIzRw{{P+Lo&pY>j zzJB!i)2Bb*-v4F%#qjU=2Y>(qX<+*Ohe1*jY|LMVKOmiqU?UkIBoO`m3qe4|00G4K6*VFmu*EK13J3rK Z3;;9iRuWt9^;rM_002ovPDHLkV1h$@)rkNA literal 0 HcmV?d00001 diff --git a/lib/images/flags/mn.png b/lib/images/flags/mn.png new file mode 100644 index 0000000000000000000000000000000000000000..9396355db45a8ee040c790782209868acaad4b85 GIT binary patch literal 492 zcmV@{}>pU8D26lh`@M2^zAEy;6E4#hyVhJ1te8n&0xjw|I|OmAOC9q@qGTx`1kMs zKYtki{9$JJ&B6L7=Kt^CKt7QCvS|}Q0D(0y{Qoccl;O=^hIfA-|M~k7Bn3tPfBpOS z`}Y4|zknP@Sy`YB00G1VQttboLEtY##9yH3?>`J++5f+PL6rRiQNLgu1_potVgX{t z{eKx$|NOuHhk@zOpC3@OA=>```VZI207MK7009KDfg$woe}>=xgMa@Q`TZMV99$1f z=+7UZ=>P!)^22||KmS$!{Ac;a@cR$YT8L7JY6c`57{N{g2q3VN{s9Bw7X!l|paf9r z=TC&I7$7zP9Rm!dKY#u(FaQJ)NCWfVKmVWoW?%y` zm}dTA_#*kA1?Z>0QqoLZAnySq0pv->KTM2<4My5DUW>hHBSpkmCRUfavf4zkmMxWn=;={POe9 zpZ~vq|NHajABg<@_xGlmn*aic1*nOE;s2AbPk~B-;NSn>+$?|p{{I~>&N%tu*Drs5 zfBO0B*Z*HY)v`RYKsx~fhzW>+Cjb5S_s>6&>Le+qufKnBv&bF%YWVBlABO)w3uGC7 z{rLq%Ks`WL0R#{e(EPs)fB*akI^_5N|9=)g|N8#t9~WuY61}otf4Tqs`!(tD7m$X( zzkdG%X#fZyCZKPCW&?Et`7z=QS^~DI8Yx-=nhgK{7whGvYgWDg!B8&G1k~{7FHk81 zKmY(S0M7pd06qXVA~x>%?)v`v$?y7WENVL!I|c#<=Jn<;5-<%03=swpg4MkH|N9RH z59P$=0*D2u3CIB%01Ag+CC5rQSvY_G`T70NcNRvLcR${}{{9+hIZ*cRKadRo0R++j zv0Gk5I)>DQ+oULEUYSww-@{VeP#&z`*?j4i%tcfB<3v#u_k;CAlSmszIWE zes6rZ@!!9HKqG(r{Q)GE1e8GG4GeUkhF=T-0mR5q%E0gm7LmVTk@^EErhg$tKMw;y afB^u%K|axUkwLit0000IqP)p`2X)eQ1zd`|Kz0p8A$%R z`bTZnZKVTj3KfeK`2Ky*5B&e@&)?sFfZ#7s13&;VG5q=W=RZg_5SU54z5Mv&imk%` z|FW?#NF2HHZpKX|PKHOnfBpIO`|qDW|9~0*0*DFdzkh#$Hv9ux`j_+Xe->2}ZC)XM zHV0!dKPS0Ur}$Y}|Nr_6wBa96o`K;HKmdVl_zUt7(16dMgtTSeTz>rQ?Z?ko?mjsC zklD%d+V79-zd^=BZ2$-$7GT%`Z2%eY=kMmT9MVkp=Y%mFes6g9+4CZ|=Y~?>`*tz_ z9Sja7kOqJN0yzojravHW{k?SeQ|&okK5=fKkARLe6n%c?uEf?;0ubZ>f;9XA2p|@Q zU%!CHiwJW41sn7GB}e}J|9v$?qW1mmH(Bw2pdk4RbO%twKY##YWMEE2jz}>2 jgG53Y5Cqh~01#jRFwa04;J&RL00000NkvXXu0mjf4K^ZQ literal 0 HcmV?d00001 diff --git a/lib/images/flags/mq.png b/lib/images/flags/mq.png new file mode 100644 index 0000000000000000000000000000000000000000..010143b3867f21e7791b8254e806b325c13b2895 GIT binary patch literal 655 zcmV;A0&x9_P)$g8u&g1qF5h0Q6aJN-{1Mbz`Ie0O|k$ z{sM@ZfzzR@(T$Ir&B098+eukMUeMl2+1^x^fq~&CAE%jZ{^O4ipMU-bgNM&P{`mQajg9%ivrm#DT>t+4XJGgP z5I`&pzyAFG^Do#{Ra%^vg_(hwneqG2-w+MozW@IH=Wj)-86P+6=Wo9l8G*Kb0|+3- z*{jc+=}JF+`H7W<>HmKQUT#*P1{)(8poaY?9|3*x^4(W97N$Rc|4EDS&R=&5Ab=SE z{{73y$Ox4F`Rgyx2o@H`|EK_{=f}^#%*+g|tSlctd;ka_mU(L~nd(ak@UpY9GCq0n z(2rN05Jg0{{a96b$W_S@ACL(Rxa}M z`G=gy|Nj54lTiQv|3YG^`}+MH7z}h_G^4TA+~V=RqI&{}iQ&&bpkF?J{dw&CQ*JI+ z5dlsHn4|vw{rBhJzZb8+p1k+fF;B_XE! z42<9q0s8Xa-+!garV_&3Uw`~!Vgv;%KmY+HvKbgYfiyF)F);jMVE6!x-Ip&{0DU4U p=>-f&1_my$6wo1$fFwYG0RX)13*@;vt7rfK002ovPDHLkV1lt{Hh%yB literal 0 HcmV?d00001 diff --git a/lib/images/flags/mr.png b/lib/images/flags/mr.png new file mode 100644 index 0000000000000000000000000000000000000000..319546b100864f32c26f29b54b87fe1aee73af21 GIT binary patch literal 569 zcmV-90>=G`P)rBb0vs`uywH-=91j zzd+y*NDt6q00G1Vbl+cwzkmM!`SbO+m+YTk|9<^u`R%^_m*bXSzgT|#{QE0P`4>nh zQ2ZZA13&;V0loO=-(MgHX#3gMzn3`u{`KzHucyC$Kl}CT<*&8wzt6n|ss8o%*Pp+C zfTjZk5DUl#p#T2<`NjV0^vyqym4EMy|26&E??3;3WoiC?{O#A4)4zWSfZPMI0U&@t z8bCe+8UPFj-d`E(e|zZv%GLeN@c(z$rC;+8f>rHtN0D&|BIS>OtI{AOC zx$tZGDUcCBkzc|7XAeyp!)#=hy@sHz%Z8Nmi!G71?uGb{rk^vkcEsO8W!D1Ad0T=%Vj%gtVfB*vk>3V2g53(}_00000NkvXX Hu0mjfpCtxQ literal 0 HcmV?d00001 diff --git a/lib/images/flags/ms.png b/lib/images/flags/ms.png new file mode 100644 index 0000000000000000000000000000000000000000..d4cbb433d8f9fe49f06585dc46ee15593e3e621c GIT binary patch literal 614 zcmV-s0-61ZP)w!6%f1G{My^>{rmp(`~Up={s8&+{Qm#<{R63-jRF8M0M7pe zp74|h+7SfEy9M#{{`U3;5)b(M0y+2j#`QMv`vWF8IQ;$o{QUp?{QmLR&;S7V0*Gk~ zkHv3!H5OU9Kb*Y(q-ELEH9vC;U*%N({+r?VuV26a{F4-VqagC^H&EN}zd$De1Q633 zj~FHafsLPJA96}RV-#A)X~v?X^MOAye@1K9u&05Jg0{{zeC zH7h(V@9+2F_Xpti2mAc}=j!&)<^S{h0sZ;_Q7ob~2($C-{v8Cq(%>lF*}4LV2^e-j zV}AbzqQAd@=ogUu2Vs2v^{02G<;{1(|2aQ(EV23Z2N=G800M{wXv^O}|A7VrH9+)$ z7=NG)mcRcxm)QV402KN07wDuv009Kl@CPU%A;t|Pff9c}I{*Fo2PXf3L>PYm|M&kd z6T{yxzy1Ri0|XEw14AS%MzNxQNDQDd27mwq0OfZ^Ej7^!+W-In07*qoM6N<$g6Gg9 AMF0Q* literal 0 HcmV?d00001 diff --git a/lib/images/flags/mt.png b/lib/images/flags/mt.png new file mode 100644 index 0000000000000000000000000000000000000000..00af94871de66cd0fbf0ca8e46dc436d66e2f713 GIT binary patch literal 420 zcmV;V0bBlwP)Io>l+&W2PtRx|M&0z2M_*#`0)SN z@BhDl{r~j~sG3n$7H9)N0I@K!uxMy#e*W?mp&AJO{R1fisrv=e1J=Os`!`SnKmf7) z1AD;K%nYO&458rnZ>;h=xCZfJy-Z2&4h30>ylo1|%C8 z!A=4QAQtS#|N9SD2R9xVP=6R000Ic%Boqz*|DhQF2dLpM!{5I^H2?v`f~*=Iag5B& z3^Fndyu3hzLFn&a2m+c75I`Us-n@D94+enNf~Z%o__l08i(?1?2rvLmwOi|Xk;8TX O0000wT1SlAdCl&Y)$gVg>5qW^#Y{{Qp$|KC6V{`~n5M8AIn z$$wxH$UeVm6F>m5>|$VWV&MJy|4IE<4N06-W9 zfN4+=|Nq*iiwn$Q2C&jbT&$=TD3oCSlHOGFpRx(;BY;>KBo9alsWSh04>T2o{{H<9 zq`@}){__Va_~#GM1}QP2gACgN0*LYNU!Z^U|NnpRpWzq7|3Cl#|Nj5~7gmyqN$LIj zQvdWzhA$B4g=Z%5I`U&fgJtk z_g|1x{{H;?U6oxK=&at?J**6@V8K5Oe}Dh~1#%?NbbtT?*#Hy-y7l+}Kff9N{$pgg z_WK6Ie}+7v0!uEdpa1{-Wc>4s0pu$NunhnK1op#kuysJ&8U8Z;`FH#0jm^LQ>Tv2E z__*)izhD3U{sq|pR0FmFAb=oF`osMFS8?ijP~d>v`s?4X6Tl#928Ghke_*>=zWoA* zI8ZS_0I~c5+3<%^Qj!Z4rNibE_6+kRtZU3J46>yw zfWS`r^B2emYGC;Nhw;yEHn21ZK^Q<1%m5k+3<-b$0%`dF7h*inus>j>Kov-;VIf zD*pWek$*v<0SxiK|NjEzfQkVEh>@X`f#DO--wX`DVCWAL;}4AS4@`0~00bBSj-y@M TF2~k{00000NkvXXu0mjf^ET$> literal 0 HcmV?d00001 diff --git a/lib/images/flags/mx.png b/lib/images/flags/mx.png new file mode 100644 index 0000000000000000000000000000000000000000..5bc58ab3e3552b74d990d28a0f500e9eb6209dfe GIT binary patch literal 574 zcmV-E0>S->P)LFc1LT4cKmY-iGBrkbGB7ay`}g

Nzrc?B z!}RAj&|v@p#KiFL&)@$*g@6D2{reke@BjagZ=QH_|HA5tt#{7v1Ul>guV4Ru|Ni&u z_rKqNfHnXG5DUYvUm)ZE{sF26>H%tC6A=5t#K$G4Eg-G_A87rbKVS#^0WyF#00a;d z1Ca3#WHt~1jRI=eclPL04k1AU{avRH{sTG*Y{UOQAO!R;KmY+XFaVtnvEdic(+vNe zOr8IIc?-17*~$Z`|L?Eg|G`fB4^+g!01!YxCouq>54Pd=FQ6a({TC7tjr5F#2GXxz z|3N{=01TJ^fBykB00a<7!|#88#Ce2)8ovGh$;ikEv=>5x7)(s8a literal 0 HcmV?d00001 diff --git a/lib/images/flags/my.png b/lib/images/flags/my.png new file mode 100644 index 0000000000000000000000000000000000000000..9034cbab2c02704b65fba6ecc4a7a1c1d053b6c5 GIT binary patch literal 571 zcmV-B0>u4^P)Z-xKO+5@Bcl`=5c~|G$6#Vc^TNX8-{JF#yj01a@w+002>mTdm0Dxpa1{C#)An)W@eTA0)PNwiNI_f1h_u_DTrb&+z}xv;{Wj zFGj0Cgf$G002ov JPDHLkV1gu%1+M@A literal 0 HcmV?d00001 diff --git a/lib/images/flags/mz.png b/lib/images/flags/mz.png new file mode 100644 index 0000000000000000000000000000000000000000..76405e063d43f2f3b5b9cae4f76d9f1c73cea25b GIT binary patch literal 584 zcmV-O0=NB%P)d!0?ZO;SY>NM!#Sr3j;s^4&s;y01$=&U~zyG1R{bN8&$-J2AZUB z{O~2s*67}BSLujJh!l{(TM_&V!SLx<0I@JIFetqFAHVYHe9OP56#xDPD){#oDEIpx z82$bI>))?me}4fPvfQ#j8vp_bq~ZU+|9p&pvv&RstuJJil>ZL~|9}umff)b({bONa zxh{1bAb?oDF)-ZV`m5;k=ljw>l6BpeezVN}{rlPPKR~N~|N8X{NCKH4>bI<%?516t z00M{!=o3jd#=5m)yzyNB8Nca#eH--U&Fe3(f#?+keR}os(@P+F`}Hl*IRF8~0t}ng zTmN>%etWlrgX7)b6MtD}{$cp_8-#v?7>pqD50GU3{f7;x0U&@Fe=;yIS7rUbaG!zu z&%cJ+j{>}Z{{3SByBg&1|Nj_3~Dr2e;Gh>zZrofD5`!lF#Z7{ z2B7#~hM#}`y~Cfd!0!j9&~4{}>qlfDw=_GI6Spo7yiaSL1(R34j0qF#yj00RRApetkm@ z3-<^I`04Bn_xS?+{Qmv@{`~y?GBy}bOB@O2-v*J4|MK+z`}_2=vH}QbDjOT??*y+^ z9PHma=D0k1DE9l$Z%$6;=mbqObq>D1hX4By|NHgp|L;GHwRPtz;{gH)sDXiz;U6Qz zZ)V2dKoY20MNK$ASA+NcQ;z)f|Igq2|MmO7w9@DL!aL%O?v>U60R+_W>(dw3rWqbw zY+vs`7YYhj_p}$}TRP+a`c40T|N0L!J1pWwjPJac>kgmX!|;RwAb@}x{`~&)@5xJE z5fO>bZXLnj?>WlS|KEEGbn$;~p|4%Vx0QJ+&gI^Ic|%b^5f~5v0R*z)@87>RPSSB9 z(mdPNGA>^D|K~4|Gn`ysXGCuKcCvq8=a*k!egj?m?>8{m00Ic8fvd1cUx@iTXM5HE z^H)FyGjo2eEq-FG+;YA1)Puvn7=8hj{`vO@7;-=x00M~R?)3!82NxK-n*V?K1yZeJ z{HiGaByR2;1J+usHUNMy48Q{FH!M8N)Pwp9Y)wTFo81A^+}-HTA|tp~ zO4-IyLWKVGUAVv#KrFzpU^vb8&*4vW%&*_Sfp-5+Oa#jR{(FIy5oqwQKVTa`BqPut z3=9AP#KLU;d%N^MnR|>Uj{MoN{TEQv&!4|iQhqnS=35v13ux)DKYxDz{qyJVA7#|2T literal 0 HcmV?d00001 diff --git a/lib/images/flags/ne.png b/lib/images/flags/ne.png new file mode 100644 index 0000000000000000000000000000000000000000..d85f424f38da0678471ef4b3dc697675118bc7e0 GIT binary patch literal 537 zcmV+!0_OdRP)pTI(!tjlO;rIXl@1HV&)cpmDGW-GR z`3+L^2aNvy`v2$G|KGnEMPz|W00M~d>&=s#l8OvKbwEpiHvESG2>tK>|GyyO9|$ut zvpzk42q1u17-V!9I61+pfvQ08|BZwH@16Yr=jVTUlmA*S|6zcEk@1g`6+i&7`~&$E zYA%%V^7j8zTmS$3{hyirzos*?2B2bq00L=%yMh7Y5+V8jy0-s+|NJkm_8$o_f}Hjb zAb?n|yt|^zto-ZmuYW+t0)q+&<<KJ>BgrQT zRQ>1Q-#;J~AoS`6pHRCwBA zU~p!DquG0BzkdJv^XJbWKYo1u_VxSs@1MSW+P$@#L70Jomw|zm0SEvBhy{qNbE|>m zzkmO1v}^=;1(+C_zx@3C{m*wPUMbGM98Q`}5v}3B|NZ&>_xGmUO#lG|(!jv*|H=EO zfB*gc{`33)|Nj{n|Mza|{r>BFYe?(AfB!%K_3?Y%L>Z^l>!7{V2qIffI$#e zz5f4~?wt{_jNwA=k=tvV8m;04hxH1ClNsp|jaD0d_yUND;Sa;#|9^ps{`~n3bQJ?5 z!?D}Pp1*tk?A@~oJ0>vvX8@W7)C|%C)&LMdARGSt{R`y$`S<5P0|@TEy!-p_?>~S2 z1lj|1A`hhCuT1`^U1^@yK06yzfAV)~#?EnA(07*qoM6N<$f^cITh5!Hn literal 0 HcmV?d00001 diff --git a/lib/images/flags/ng.png b/lib/images/flags/ng.png new file mode 100644 index 0000000000000000000000000000000000000000..3eea2e020756c41abf81f765659a864c174f89db GIT binary patch literal 482 zcmV<80UiE{P)E-@kt#fq(zr{dlL|rVbPb$^K$sU||3VAQpx%4ArjH z5b1ya|A`BUvomopF#HDspdkBi_LzW}KMcQr|NHa%@9#}BHvt3?3s4hK`pMU)fB*dj z0+88E|KR{Ac>Ck+U;lpn{`Xs!M;2%gKmf4-G0FZ zKmdWv|I6_A&;LJv{(%shYM_N64Szv401;3FKmf4-Jp?oxsQb@fum%PU8~*%)I0>i# zs2CuCKpOsn%?64Bg>X9QKhy?*00Lh)xZD#`v33$e!wuw~|G$AI0?h>~ z1_&UqlR!#;Ll9OQ{s1-n2ZahyF+c#Z0Amdp#**BUAaDHn%gD$G3dPzV3};X@Gl13bFaQJ? Y0MmSSAW;3b&Hw-a07*qoM6N<$g7#LQDb&XuwlP!fzJKM z`1`}(|Np-K;|B=>MS!;cWf13KY+LvSAb?md?)rCHn)&`aU^p;VI>1V00D#b-){yc34R8!1Sqb680000@|4`Xj5kLTv#?55wQzKoX38|NjLffBpXj6#2y{D-E;(Ab?mHL=FGT z$TP6>fK>na1GWK({(upf0nrSU5*Gz(00%w4e}91F-@gjtJbOE500a;V!?RECzy5mt@dro_q~YJM-#~SLe}OeX zNT7y4|NilCvNABd0|+1%hF>6clER!2lYo}|1|zVkK=SXOfB*mf{rC6ZKVbL)odgg- vjKFAPVE6?_e~=h|kVO7~qZmRm0R$KTYszPUy89K;00000NkvXXu0mjfB$dbi literal 0 HcmV?d00001 diff --git a/lib/images/flags/no.png b/lib/images/flags/no.png new file mode 100644 index 0000000000000000000000000000000000000000..160b6b5b79db15e623fa55e5774e5d160b933180 GIT binary patch literal 512 zcmV+b0{{JqP)O=a{vExMP2%`MCSoB^FIcLe_%lf;|~%E5I`(IQNh}3Ao>6Q|DFUXMn*>AqQd`w z|1kXd^B;tM|Njjl{{hM0zwd6?1Q0+hV1xeud-4=Wy?p-%sO`^#2S61Jzk!N?s)6X& zzhA%p|N6}=D+{y%Ab`Lc{sL9~1=0UN4*CD*7s%9KAf+JHKs~=eB-8KTKvw|-5R1&; zzd&a|ob(5%^Z$Q=wHy9p13+aOpFRNu5F>N&`Tk_-7w>=n{RejQzkfh&Kn{rf10?_b z{tFTZibx5v&dxav5I~H7|Ney-|DWN1$%1FyagzUW0464;_wU~W1Q5$TW@eGxtUvee z3vAf*8|igK9~@*rr66bh|NrkNM8z+V zAV?>O@ek;bKfu6d00KAO>U2WB)$@6+CBT{3ok>^7H@y{~6FRKmalQ{r8#S z4^Xx6Je&%q%J2@E@iKAb=Rv<(vO+e^|@#56B5{*~0Mg z>UitA{$OPI`~Tk`F#7!u z%=q{3H<BYX7n!%ts-g52=?&#%8AHvnDo=g*(t zU{@(f3Lcro01!Y-3_uV4{%5PNloM>zp5gQNALI8Qf4=|z|KsPsAHV+n`1$wy&wt;4 zfzU5-=mP{0FqD1)U3&iJ)0b~Q-+l7x$B&=CVSxxV`w!S3U{3%6(9;Y60R+_W0~jFx z85t(6Ir{$dcL`zMKcF!E2U7}WK$QOlX#fZyMg|5;)aZo7D4hMD0TloQ7ytwk}@P)zKX@%&%DST%gMqDF&nJ<9}^SM9e)7=i1G97Xij+!pc8>s z0}TKw06GH{9{>J;c@WiqflO8wrXNp!0t65X1H*raF>uuoM}q1_&UQ zzyE+PV}l7nR6|1@Xe}f}K_mmn5Fh~%KtLN9K+(a>4Du5*FzA2|{m;zE0Q4slD+}03 zKxJTefLQ+k0*D1@+|Oq}Kt_TL2e}yHXa<;L{(_vY&wh05Jg0 z{{*4}t^?F62l4F%@9_Wk_yrLV`1}4n_xiEzG57obO$p>A_3H5V5SZl@9UBk;0Q>>~ zF#yj00jE58tx;oDUfVAO7ZA^g)(IQ}Y8G-;ZB^s|2r!a55}@Ef&J{K=uDyPxdE3 z4FCZEF#yj011R$m=m{0X((d>7`QGgNy~*X%==~K4{m|+BO$p;F|LeE!5zX@o6aMwK z|0Cnry8?)1@m-dDW`RF^3@85Z{`vj)H~*iTuYX^D_V?HC|LG63e*OOQ`}ZH9+h%{4 zR^kLX2_S%&fc^l6#;?EsK&pTL{q^hL&)-1T|AVLlN&WsC!*d@f`}fa3pay^dVgYLS z^XKpHUw?lCNw6Z2x?f-t$o}(Zg7`(je_wy{{yg~C5U2qlfPfml0Rvc4oChck)CmlD zkWL^2sNoMV9{$c|wex0wa`2z{-@pGE82$nT5F-OaFayIEq`3SAj@n=l%a5DE9w9oI(Q6o;?Ey zAdrT?A3yTg*!;YE_t&FGSk*xQBO~LVKYsuMhzTgoEGG70+cq{OrGLMF<5CR)KqmnN z5F^kJDrIFqfoA{t^Z)mszkh!J|NR@N^WQHZ-f!>?ZqK&!y&{zFIzP0wn(b{R37FH0BS}Z;-(ZzkW0R z`o;JgO8$qifBy!003d+C8bA*C^$+NzU%!${e*gOW>-S%fvmgwhvw&=%Tb23#oNZ?S z2p~`>{R0^fayL*XP!U2MkOb-c1#;`ZzkmMzW%$Pc5I_(c{;*0)g6#S8SB49$^)FDx zACSQydx0wd{{073{+Hno13&;Vu4Mp{AoLGRCWbOF`~tJSfrb9TxDaUu27mwq0KDvZ UcsT?Vy#N3J07*qoM6N<$f`X&bC;$Ke literal 0 HcmV?d00001 diff --git a/lib/images/flags/pa.png b/lib/images/flags/pa.png new file mode 100644 index 0000000000000000000000000000000000000000..9b2ee9a780955566cc7dc2f59ce175f32d3731a0 GIT binary patch literal 519 zcmV+i0{H!jP)|lVPPN>g8sl5Km-s#EI@faK0YA%?%RKmGG2!N|AD;!zX}Teef|3X z_wWCI{=muCn>GOi5DUcMXP^GBIsf;|&;M~|Oj3M||NsC0d;h_|&!7JP`u*?sum8V( z0aY`}$^xwd2q2IKptK|}gRT_Am!FIf)j$AI2PS_*H2ec11_potVu8EfUYUvEKf`}G z`1lE^`X5*+Sm$r%-@k!200a<=Rv$}~=bu-f|Ns5_|IfewfBrH6Nrpdvs+^pde*a>f6qSrfAZn~Z?Fa+2||AuS*t4lqXH%-ra!^K00G3r z@ax~7e+)2nAoSxWko^y??$?YNza~t8coi7j009Kl08{<<|1U847wF+XP}P60U;n*# z@9*{N{$9Nb{(u|?WHSN*&{SqkP0pSkP;|=6L&63i zfEXEE-vV95@Z%rDuRkCLl>P7efnPxL{(%8d!yj-G00Mvj0{}mHT?%@XEt>!U002ov JPDHLkV1lK4=}rIu literal 0 HcmV?d00001 diff --git a/lib/images/flags/pe.png b/lib/images/flags/pe.png new file mode 100644 index 0000000000000000000000000000000000000000..62a04977fb2b29b96d01ffef3b88b6bf2ff05862 GIT binary patch literal 397 zcmV;80doF{P)@|A6@UbB2E)`X3x9D*gjYK@dOyv49j-R|ARv|Nb!om5Pi12buAo@&A8j1_q}8 z|NqCt{Qv#?|DQiV^2?@8009Kn!0`Y7lcx-S{{qo}h;n3b`}Y4|zksS4Wo3aj00a;V z*zEsM)xUqEs|Es~YOn@|-@kzx00M{wh#7&Zfj0j6!|?mhe@uX+0cadR0D+zK=P$&S z1T_5l12i2VfWS`r`v>f&U-&gJf}I2qKwu{UjsNuvF#Z0+ASnqp<}V}$85tQ7(W#^a2}2+PDh3E3#;-`R r2#VqJ=b;e{^dbb<+Crtk03g5s0zF}bJ8sS=00000NkvXXu0mjfKVzU% literal 0 HcmV?d00001 diff --git a/lib/images/flags/pf.png b/lib/images/flags/pf.png new file mode 100644 index 0000000000000000000000000000000000000000..771a0f652254b4e891fc73910aab38967864da54 GIT binary patch literal 498 zcmV3lobsI zohi_A`bB&J!~)dH$ngL7lczwX3_#UDxxarw>LBRX?|;94{rmL`$Yzn1{l&ll5I~Ht zU%nI;6$RPw9|VBf|1(_vbYnFmA3K-0+yDOt{~_StKSoBzkDopP1Q63dnCt(82%zd$ zpFb}6I_2!oo##J&nDhVtbEpQW0tSEpVuGrMivIupee<8UpWZS`Uj1hH_v_am-&g;K z1CTfW0R#{WvT7jw$rQ2Wy6P|4+kZd)xq2}(*g=aGrk)Yxu73al#Db(Bq?4D0-N;b? z5G()RfB&pB<@s4TkY)e;`2!F@EcYcO{->q=ymt>64xqsK^^5b@FIO-F$h{9?`~e2* zUv?FhqZcm%1P~}#|Nj2NBq_=8`#0mCzd$+0-@loGnqiRuWPl>)F9-k?0|XG`aR!E8 ou!#JF#Q1|6-w+1S#{dBa0Kx%7Vg$%BF8}}l07*qoM6N<$g2}Akn*aa+ literal 0 HcmV?d00001 diff --git a/lib/images/flags/pg.png b/lib/images/flags/pg.png new file mode 100644 index 0000000000000000000000000000000000000000..10d6233496c10e52ead975c5a504459fad68ffb8 GIT binary patch literal 593 zcmV-X0Hv=@BjaQ|F{1AU+wpQ{$Kys{`!CTH>0fVKL!SX0Ad1a`1cQJ=-<7ptZmH9SAnX3 z{Q_yQ`~BbL*ME+m|K)!Dcl`DLKS&U$0U&@t8vg$M`{&P}#F!W*N5{%vzvln`{r&f^ z{||ospYrSf)?fc0{rZ3A*Z(w-2B2bq00L=XVPVP4%$zZO`i8aZ($dmav$E#>{B`Z@ zum6{R{h$5&|A}A!9e(}a_zUO_pbY>4IGm#s06-9cg3a4XeYH!D;D>_*`V5R3;NTtr z%*@^Mq=>M$LXVh`5jChqDeaf800L?F_U+sH_3M8E<^KOyQ&ao$p literal 0 HcmV?d00001 diff --git a/lib/images/flags/ph.png b/lib/images/flags/ph.png new file mode 100644 index 0000000000000000000000000000000000000000..b89e15935d9daf25173f89a36d8111824fda5db5 GIT binary patch literal 538 zcmV+#0_FXQP)N~0_Y@w0Al+04@f;`V3_{@|8#9F=K6XQ9UY*azdwKd1Cc)=8bAo50U&@_7#Kb? zFg*PK|H1$NTnr5Nxw#FRn^&xvtbK0f`#-;cuKxpc)t_H~fDExeq6ZmH0|XFI1NZ;` zGXMXp{AUnj_^>}zDz4B$`$1}#7U0X2MOU=aELU!7sY=Kr&1{QvMCSsj$|2dLpM12Fg)7ytqY zsKMy}yX6c^FZ@4woIyZ63`(G)I*8l(j07*qoM6N<$f~Z~XumAu6 literal 0 HcmV?d00001 diff --git a/lib/images/flags/pk.png b/lib/images/flags/pk.png new file mode 100644 index 0000000000000000000000000000000000000000..e9df70ca4d63a979e6bcea2399263c081ce5eaeb GIT binary patch literal 569 zcmV-90>=G`P)`{xe>ko^7oADI06=l8$gn`UeR2p|@S@&Et-|M&0Ts{jIsi2(+HrUEqpC9EW^)CAOaJl^^9-%lBC8BHP081)#ChQGgo zHUI<=3(zGH+B`^Tu)Z%{q{PpYS&%;j+KluCr=pK*_e;5D)h=t+bKO_wx|Lu6N(?HnJ zN6`lu;-7zgR^V0GaA(7wCwqWF2h;!%KrH_l5Kj8_?>EpHKuhXR);;uSzaAK9KY#yZW@T0p zQ2G1+FVF^n0AhUp{`o&J`0?k5YKbbt8;l4>j(9ExfB*vkhsr>Vq>*li00000NkvXX Hu0mjfu=^7c literal 0 HcmV?d00001 diff --git a/lib/images/flags/pl.png b/lib/images/flags/pl.png new file mode 100644 index 0000000000000000000000000000000000000000..d413d010b5b097c4e0a4604eba86dad79567ed16 GIT binary patch literal 374 zcmV-+0g3*JP)Ab?mv3iQ8Nu5A{|6C_|Nk>HFfjc`0biay0|+1% z2B@O{$c+Ek03##gzdwHf0*Hl3)etG5lK=vU1?W~rxN0!OqXDP`Ab?mH`1u+7`u;zA z_W#cxhChG)!_n{G|9=A+zrl>(AX#bYe+w4^1Q6Is4VEzI_51&? zUm!LT$@u9L&^Z7B1a=Zw2xL66B2?87%l|Mi00a<712fnG3~)u5+Wr7F{AKw27w8;- z00L=X`u&GNQW9*;Uxq&*os3{386YGO{rw9;K*az7#P}5)xp2gQ%0-g`0)PMm0MPYZ UsK>Njp#T5?07*qoM6N<$g4HXSwg3PC literal 0 HcmV?d00001 diff --git a/lib/images/flags/pm.png b/lib/images/flags/pm.png new file mode 100644 index 0000000000000000000000000000000000000000..ba91d2c7a0de26e554979f6351d42a1a4e22de3b GIT binary patch literal 689 zcmV;i0#5yjP)#D@XkmAv!xDMMW8-mEZ&mK%|%B2@pa*J{pUD?(_ahBqlG}*TVt; zF#yj00{;H~{{a8``T70x^5Ww5-{JLFN2dS#-{Io#@$TjE?&8zZ_V@JO>E`A8`2YX_ z`~rx{;oS`3$G61pUY_{!-0$E2{{CbX;QPSJ^3BEStfg-V`n;-q6+;t+Xyw zOy)sS^8$#8OF-b~@87@v{bTs||L?z_Zq~=&zGIaZd&b4_{m<{;|Ns5^`sL5xKflEU zUjXHSP67x3F#yj01nBVe84eEr00I90|NZ{}FelkBB-0BC^O2xB85HWz)f)HsDi#s! zMLEolpK<^Iq5=Rh0M7pb=>Px;h=2d#;^FNBZtPGJ5bKP1n*{>+?(qio_5k|){tF25 z`1Sjqtv%A&PR-7P0st`p&i?}b008M5=kFQg|M&R&{r=?U4x6PnhWa{`B$w z?CApk{rU?E^8f<&008;|hy@rKe}6M^a>=kt2+9et{QJXr>zQ5ua`W#$8JQS={rbi5 z^Ctr{)6XBj7@3%V17i>%fEb@MFnj<<;{gVSbOv{z8Q{qN1r~!u@ISB;HgNQF0R$KT X>6#2<48ze<00000NkvXXu0mjf$fQr4 literal 0 HcmV?d00001 diff --git a/lib/images/flags/pn.png b/lib/images/flags/pn.png new file mode 100644 index 0000000000000000000000000000000000000000..aa9344f575bc92f4c1a5043e6e7d0a8b239daa64 GIT binary patch literal 657 zcmV;C0&e|@P)$VEDzr@CQtS7ytnPF#yj0 z0a0(~eP|Fd7x&oU`XvhO+V>M05dgm54eRCe)!y3s`vCp^_5Az)`uqj_{QRhrlmY-T z0M7pd#W4OILofm6?eh2PFCO>E*7Xbx0@lgN z0st`p&i?}F01o{F1pxvB0QdR->g@pe`}O_>?Enew{R9F2_ajBO3l7@{2K78Gz9u`z z008^~05Jg0{{!Vds4FN77!dx<`5YAi^1B#F4D8&$5I)oT72fOU?&Jm;1k~m5*82ws z?b$fe$;$!&F#yj01PbEP9OVUy$0!>9?*iHF&;9=9{2wXIjNS}D{P+g={1WdM4-6DF z>gCe?_5uI^`T_tk0M7per>)2uHb&;=(#87${QNQl(a`kw{Py}Y1nctu{`UwC>ihis z2n-DS{QU(1_5c9-0*DC|aR2`P{`;Tl?{DV6zkmJy$H?%Xjq&fFKfk|zXRCbma58?r#f z00G1Tv;`<3F2eQa&)+|P|NZ&>@AqGj(m#Ly0)zk56?XydpHmj-@bfY4J_0oTA3y*x rGBBhgM-@1KAF z|M~a-&+mVKfs8*8^zZj?AObQ@tXl^VK#U9w|7)um9zFT5!1JoGnu}M2{r|uJ|AC@F z;y(;9F@d=M{=L6-3m|})KsNsS&&$bh^PO0375Ag3EPt6;7?_!X=sz3*^#j#0Gyh{@ z0SF+Vlm3Z`F-Ar(?BDbM+y#c5od5B%>y$nn=KcNZ|L>nr$AC#T8JS}%RsaMLPy>UR z34^BAe{Qb-hmSD)`~82~jewZHH;sOtVgB{~2T_Lx z^M7~ue_6TzObGu%0nl7VM#g8?t^ouP$PYjMFazDG!uzbThlgL98zlelKgeJZ;~z*Z zSPxJG!?$k$0R+;(`ulr=6P)M00|Ni~>`!`VeZ#eh`fLE8Q){QmQQ=eGY$|NqCtU}^v=1iBd@fS3^8`SJ7r@8ADF ze*C{^(f_{w|JZZ@y#o+HED**2KY#i6{~yEeU;qEJ{Pzp|pOucqNnlF=0*DFdB%s0n ze*I+l{{11(um4^iSXF}z{SS2YKY#!N`GNV*AE2Jys=p_Au>JnK{@0e3zk%WO_xG>A zzkdJw^XDIk{pa6bWqzfjEk^+Y2&CaX+n+VzlIN6JC4s^J?+-}zKcEU=eEj+Q{|`_P zFrfeb|NHmfUxq&n00G3<$-qz^$iN`P!0-!({va{_z!?9)Bm)CLfB^vHpj0t%_B3$- O0000op82)aAGO;3n0AgYI#891D4N?IF|Ns4E{L7&Dm*MXp#y@|U|NLS4 z{rmr)KmTFmmra`h0*Hly38?u0llM=#nEx6H|J4!x{U`A6pVzdvv{Rd?JIrI9L zs`Fos+0`Q4a^C}Q0+k5A1KaQ$>Lf<6lK=vUh2aka(D+|}f9<^YM_B9kC$A?0Z|}3+ z`ptao7t>dSY6f5^0o~2O01!YR8-T_G^}PA>yZ7X8cHUpx=KlJ_{+sC?ST#h$AD{+c zSpNn30U&@_7``$5{_{tYU-I{#-$2g*Lz_YNHw#c5FVJd`!65YaF9ZRd1Q0-s48{x$ s?-&?Px# literal 0 HcmV?d00001 diff --git a/lib/images/flags/pw.png b/lib/images/flags/pw.png new file mode 100644 index 0000000000000000000000000000000000000000..6178b254a5dd2d91eeaa2a2adf124b6dba0af27f GIT binary patch literal 550 zcmV+>0@?kEP)~nkZ zGRMDC%7~XK0S0Tx8Wd7-QG59jKr9SQAk|O4{{Q=*0jSzY^rW5C9>)KFc0aM(`^fh9 z|Np=Kfe=u&EDs~YzkdJ$!~!z=-~YcrJO42FE6xsAYGq`2_Mbt_P-yG_e|4Mhx&31J z|LZSE!|%TgKvw|-5ED@OU$BE2n0|Z9O=M(v1mpqrFfl%gR9?uy{Oi{rkOq*RfB%6# z1PCA|pp${Bfd()#{N!P|4fj41<69Aq$E=K>;Tryc4F(7xpbZRv|AD;q^*8I6-->Vz zfB*5n`o{nM2Peo6f5F}W+3*h_fS7<7;^vxc*?8?`g7w0kCk@cHxaHDByoH$n$~K0fYN5BQR!wAqjL2Kmai^lz(OTgcO%Q oK%!9YKcr{|u^AZn7ytqc0H_5zuk@Q*SpWb407*qoM6N<$f;OS^T>t<8 literal 0 HcmV?d00001 diff --git a/lib/images/flags/py.png b/lib/images/flags/py.png new file mode 100644 index 0000000000000000000000000000000000000000..cb8723c06408828ce68a932ff472daabecc64139 GIT binary patch literal 473 zcmV;~0Ve*5P)@|4`Xj5kLT%`al?B=W5I`&pU%&omV`KRD53KJ$2txq_ zg7fbmh|k3I@68*40Al&@kBy(1nSq%Zss!k?M~{APS@-YvZ#JJG201x|0gQ}qez5@r z5EI0wa6>`h%cteq@9Mue|Ns2{KQdro`19u4 z9*F+^0|+3-w;#WAv9bOIX#?r_2Xj8qX@CF21pWab0}C_Lljko10*H}8@M3d^)Z>@G zf!6*0!vH4#gGo5!|DS*V{{HzdC&9L6!fAj26p=v+03Zy*=I{f8|9_}7o838uP_pBd z=z9{Sra^iHOE|+IC{ z-`~G~{{ZRVfB*dX11A6d`CYbrEkFRVK#Yg0UeQ$d`q2ZhA|Uz&)bIy{egR1#X&Imb zfB<4bR{ihazwp{dkXn!mkfPsU#_wMs1hfID1|Wb~;Esc6TU=EJGWFLlunkbN!Q9_} zL0)432p}e)sSwo=4bd$f5a~a^fBpd(3|0LbOac`E1P}{Q!+)sq|NsB}pI=e{a>g%& z)4?|U{s;0mNCQ9sG5v!Z57O~Jp}QY!5N0Be0)lgG%);U`26kn-@hOg zU%!6+4+cOs(0HIde9xZz`}Onxub&LUB0x(30+2WcIRJn#2ut|?gWYu1Cf+!-K%B8# zdf?1WA}#uZ8oj7u>$I1i0Al&`=O0k%-@icgAIJnM0xA6maSq6BK-ECw|NZ*S`0Lj% z1_pot6puj;05Ax`F!=umqj7^frO?t|3^&I1kxUq9yECc+jQpY84SWH_0#pxl$?v~F z@*hy-KN0|X07U)z`4{NpU%#2aHUI<=%a31wK(7Du52Oc(|3O^?R1IN+RRjI-n*kVB z3=9AP#PZ|EACPLGJ%9cJNh|>9B%spYzZw7h1%?tp0I_@ndg9MNE>313@6R75NcceF zkr51-#U+7;F#`Sf7i0rK0I_`g_NQ&Zji7_t0d_@@ozArL?Su`s;*Q{AKpRQ~TD44PX+*q00taD0I@Lq1k(S2nt`tR{g)9*1H=ZfhCe_Je;NM%1^NLXfPkU&2dGq1gcanC zzsyWb(hLmW7#V^70~+_6f#nZ_(jSmgFakOWAb=Pd7`8Gn`~pjZT=;x%FbfOAzdzu3 l1(F{a{)I#17yR-T)##NTdjqb^wzQ(`1@?t)Ix4MUXz556teM9A7Ic zq_@itH|pv>q+zrjZJ^Hx5bj=fD{5McI3ol<@^-l_@~tZGV7p>1CU&qG~{YccyC-q z$8~P)6sG{nMmQy85K$E6L33rja$x-b9$ literal 0 HcmV?d00001 diff --git a/lib/images/flags/ru.png b/lib/images/flags/ru.png new file mode 100644 index 0000000000000000000000000000000000000000..47da4214fd9edb383687c1d4f84fe8b42a51ceb2 GIT binary patch literal 420 zcmV;V0bBlwP)X|NRSO0LlM<{-BURBqYRGSojej zfLOL~|EH_V_~;P>Nc10*D0|Jxss< zFi1)Q<$$6LU}rIc*dU*QNFV}+9T))>0|XG`SD?F)5CbX~O$rDA0t^5@iDe$xIAIn5 O0000N_~0!B1ZtR02zJmAl3i>|Nr}+@!x-t zvcLa8?7#n*fB$3p|L;$z$Rx)9zm`4EX`B2HAb?mPX21FhQ~^@@2dMNf!=L~E|NQ+A zWdHd6KUK1c=hsc9f8Rnyezh^=0R#{e(Ek5GMIci_s{j0D`2GL?@4p}ozrlKzzsUIh zhw0@n(cNzYfer%*AeP_1{{8vS`0Fp&84w#lmi+$#)ARI~X!Y&+KyeWsW`<9n00M~d z^G^m==F0#79{mS71ZX;t`~_q%fY`tPf!Mzw;*3o4FJA8j2p|?NkT1UdXZrG=;TOYy zh@M|qNhT&CJ~jq`0Ac}pl#vl6#K7 zFA)9u_3syi0VMzY2QmHtx&Qtu@&7&0&HxaAAvs6^7=(cU7?W7&6Z-$piRe`dyDK`^ zN$WO$zWL=wEu!PO?Vu9@iVSM&8cWvf2p~p=WCn&G3_$lI&>tl77dYY}Tp)vm0U*Et X__=7oxWDB`00000NkvXXu0mjfV`BRN literal 0 HcmV?d00001 diff --git a/lib/images/flags/sa.png b/lib/images/flags/sa.png new file mode 100644 index 0000000000000000000000000000000000000000..b4641c7e8b0dd79aafaa73babdb525d3d2dc6a8e GIT binary patch literal 551 zcmV+?0@(eDP)4!1u&@QJ10&`rk^HbMk8Ee|uIe&H zS+;4$DbWCt7$DsBz5oJg0IGiW@flDZ69W^F_wDDmUw?kFvatRB^XvPsAO9KtfBpI8 z%a6}8Lb5=`00G1TbjJVx|9}4ZVWnuJEUfzZ$EVZx<$*voWzTGcp~$d(=+V{_?X+ z3y#kPS_RYq5I`UeU<=TsD9Bk~@o?qi&=DPd(?v86a{(`&&3I*E&g8|Wo?Sn;v*0j086Wc~d66UYT>00&^E24DBZ$$%)DV9SRUYEY{Wn z85tspN%!Z^Q&_X+!-^Gee*b1;`1hkUW~HJ2(d(c7|`w2)m##KhU^#|s1eh2YzMVW-Z(;)C{QJl7?-Rp6DTaSP8U8UK5I_L2Ffe?nu66~hU^Xzg zV`^IR|NmbGhChsd{xGln!xZ`Z|DQkqe?!SHn>GOi5KsdU{eSZ0I}_6%bMu4$|G#2j z_zP0e_xu0e-~WI8{{Q>e|6jj=B8;-KKpOx8hy`TyKZd`5nT(9?%F2RO|M~TQ@}K{E zz)C@?e?v4d{QeEp01!YxcLP=bXJGj0<#nFn|DXSVfvSK1-v%}nhwkOu|GvKejg0<-0ptJwK&1cy1oE`H<`Z?5M+~$7{9gq& zn~(3mv&(;P@Bi|05T(EW{(k!9>4UEid{_Ab1OPDr&i@1e0Q5gX)c>UW0I2)_6d3&w~i*%}NQ0G05Jg0{{#gAwk6j%|K36Wcrx-Z zDBuV5-R-~I;@8;l*yr}=_xShx{`~y_{Td7!{r>#`1^@zxvDKIVAJ?B1c2ZXvZZlkB uU;qZ}2Vg*eW0eWa_yywvNgf7(00RJ0?>)A@UfIF`0000`tbb&P~tyW8d(D~GxMiUp8x`gh2bB=pZ|ZjUUI!&{yK1G;4d%$ zIuA;MS%3cg{`2Rrii*m`ix&X`h=t(`1IH^)u0vdsLXv;@{sQG7;18Jf2Mqqg05F6A i0*HaZmVqPy5MTgGElxU<64PS<0000a|fPuet^$h(7pHv_{jfB<3vn*8q{15ov!pR5qo|Ns4BVf^v!57RHO zo?l?}`yWs<(7C?=0*LYNK?X*pGKOD3v;Q#s|MUOfZxH$qCjb2cBQWFtZ$@_cPkRpn z1P}|u9|n-AAQdnT|9?TXAyk7H4FCQBl>h_~&`AvcLF)bhMS(&{8jwh^2qVzve;5D) zh>=0RIIAq+{+o}$pxEl(3%2T)`P!1-fBt~{@Pp~sA7J?W`}60ovKZgl)=2;X#KQ37 z&mWM7{{H^+4`$e}UqIEMAo>Rk|KALM|1kdh!vsX^3=B^I0*D0|DL|!?{M^6*VPKPH z00z{*-?BnHps)wJ`QKllIe-8D1EGJQNCgNWMh3}bctpOPvlbWzK!=K^+cJPc;};D5 g19O2S13-WQ0NlBGh$rR(5C8xG07*qoM6N<$f_QiWUjP6A literal 0 HcmV?d00001 diff --git a/lib/images/flags/sg.png b/lib/images/flags/sg.png new file mode 100644 index 0000000000000000000000000000000000000000..dd34d6121073fffcb2fcb5b9402b3e6361cded35 GIT binary patch literal 468 zcmV;_0W1EAP)dtOYis{Le*Dj#JuDs`KNc)tl9OYUmifJZ zA4uJ=-~WIA`uFP>kj*SB3$z3vfIu4l|NYA>FaP8D^M5;ba1<8<4f|GC2UPm+H&ER# zkRGsxe?Y{*01!YRC;dKnkj2`X)zkCW_8s5b+Wvn23^5y|0jv~A0#!5q{{4%A0U&@_ zfL8pya^=_l{r?#l8F+XY{;)G~as30ko(ZTFY%s&0Ka9WsFiJ`S6$1niy`;Hnv5 zfRT}r0R;fL{~@sn5I`&p|Ni}W_wFAQ`~gBVzyJ~jk&qMs5MThRyiZo6SsHx+0000< KMNUMnLSTY6dB!#X literal 0 HcmV?d00001 diff --git a/lib/images/flags/sh.png b/lib/images/flags/sh.png new file mode 100644 index 0000000000000000000000000000000000000000..4b1d2a29107be96413eb86e64a75ac7a3ba5793d GIT binary patch literal 645 zcmYL{Z%9*77>Cd9?woAXO+#E-F%m^1b0Xy*Qky9{B^@hJqB6}jOKKPc70u1CS|Ug( z7>SA^1`5-}4+VvY=3G*k2%(8O!OWTIn!4?td(P>GANugV4?p-l@2B^fCONIbD;IAODX_{rV|BCn_NC>%qlWoHrzH=l|0Y^Rhgkwr%>N3 z(d)FjlCqjgyY4&yRH!;rb)|Z-v~HjxIkvar`*JLyzxBc-B?Ix`3*qGz4q3JAd`#LY+Xw^k(ph!n`d2H7`aI`Eh(LrOLs%9g zj93;8ws%s88WHkIqXqnSf?YSjh=@dF-}4L7dS0HFB@iNj8OY*&4>%Dn8t&*i)aXz6 zSX_wQ?~e=9UcwhrAtAf8XLVoTbE5+<^|-KK=D&>)yX6u!zrPCrbEr|4Yi(XyIGTQI zFEDsraAY{)DhUd*DN;Q?!uSxvkoT|31dF#>2L0DGeRcNZNehm>xm~}-9q?gtV@Qz` zv-lB19|m}3LHcg92}TUOb+%v(0bnUhB(5rQI9?ZY)h~Hw=%2Au&~WB@t;^kVE@F0Y z%=8f1ZN}R1MniiNxkJ!a;3!XFerfimE2A;1XJChGXJ=)MAVRubE8WFo1T(1Cmhdfa ztzC{Qms6asjkstFkFp5L#maeek84Y+NtW^Wf=SRytjpC1=BCX4NH^VxnQ`+YXocAv zR?lKskkKZN7D>{S3>4;4+gPYYq0_5iq@jsB^}M0yMT0|p`lM;R_dwbVrBg^4RRbsq Y$WB%-43-yHbAJTXS^1gPjGK@C0`m$%7XSbN literal 0 HcmV?d00001 diff --git a/lib/images/flags/si.png b/lib/images/flags/si.png new file mode 100644 index 0000000000000000000000000000000000000000..bb1476ff5fe8e0d3af4fc6bd11e513d95fd9cccd GIT binary patch literal 510 zcmVm9@#;PEzrU@Gx(rNA|FHo^Mn<3|00G3vEO>ZAhtlWIf1*N!=PZ8p<;&lH z{~7-L`S<7dzu$lU0~x=8==VP$LqeQ==EOq)0mSn6{g=m2e$<)X`O9Zpu5&$Np~P9Kn=gZ0kf<1I-4a zUtk1c`~{K>fBu3(0U&^Y8d(1RW7^4V^6LZG89>!QBmXe{`pfY9FT=0Dj8O6)!|#7g zK*az7#L~(TO=a{vExMP2%`MCSoB^FIcLe_%lf;|~%E5I`(IQNh}3Ao>6Q|DFUXMn*>AqQd`w z|1kXd^B;tM|Njjl{{hM0zwd6?1Q0+hV1xeud-4=Wy?p-%sO`^#2S61Jzk!N?s)6X& zzhA%p|N6}=D+{y%Ab`Lc{sL9~1=0UN4*CD*7s%9KAf+JHKs~=eB-8KTKvw|-5R1&; zzd&a|ob(5%^Z$Q=wHy9p13+aOpFRNu5F>N&`Tk_-7w>=n{RejQzkfh&Kn{rf10?_b z{tFTZibx5v&dxav5I~H7|Ney-|DWN1$%1FyagzUW0464;_wU~W1Q5$TW@eGxtUvee z3vAf*8|igK9~@*rr66bh|NrkNM8z+V zAV?>O@ek;bKfu6d002F*|Nr~{=Pyu%qcHbB24G}l{PX7zKmY(S0M7peLS*D^UKK~y z+6(XH|9gD^r>6bY*OZ>+`2GX^{Qmv@{`~#_{QUm>{r(dW1b1xK0st`p&i@3&%J4-( z6Giy=|7vRh4-WrbUHx`??d0*<@CX3>{QLa=`~Cm?`~Ld;{u~zu0R89!i0SVi2B1U! z{r&fU#+3gbKmA|6l!@v8=U+^J{{8>`mjUR&KfnL~{sUtC1qTg400I5L26X!4i0my} zo;{uZo#CfPX{7DT1DwDAf(-fnkMZ|^ra%9I0mS$d6bftr0mQhUfkCOfiE zM%HqlKU{maemr>kAILSo!3gZ8-+$N@WcKe}3J^dnRtyZx@9+FOdynDWy$P0%j62V; zZC)?>`}hA}zy1SB2;@n0006p>>h67sJD!pI8@uK6+#GPW%ce@CEFZM znTD)%K!F4J_qpc@AQp(ZPk%rA2T{TB=kLG2fBygZ4O9eD_xsnsUl6u5yEM=SfB<5# z6|+@gR}o|u1R4pn+XF1YrQf2oylS zAbS3(sBkhcTmc9mV6grHN=r(zLW3F{=D&YK84x>x_WT70A}|U80*H};VI?9O(a}F7 e1_Utx1Q-B;QgQb4eH!Wj0000PEol7!5I{@}e;EG$`~Mq){{FvoV+so& z6Zek;JYV*``O13q$!wq?2!V|I&+z9TKmf4-@!$W9Km&lr1Ie!(IeUNcyZo#F`{&0p z?&{CqnEw9%50U)~((nf$fIu4l{AK07*qoM6N<$g2hARp#T5? literal 0 HcmV?d00001 diff --git a/lib/images/flags/sn.png b/lib/images/flags/sn.png new file mode 100644 index 0000000000000000000000000000000000000000..eabb71db4e8275a5bfb7b1b8f3a8374d50da95db GIT binary patch literal 532 zcmV+v0_**WP)6{xSen|M~Ox&!2yPfTn)={d@hr-#`EU4p90fz>J~+=oo+i0%`d3@9*!wzk#ZO z2WQUEDXOGe*gO;$t?-?1~^z5 zels!xNuY7SApXOk^arFAjDSu82p~p=WCoxfknArIdOZOgs+`19}IpFa%0{xSUi1L7diFBr+f01$veIX40Tgn<}np4MoMn3N`o$god9 zrkzn;+j{#q5F}xeh49xZuI$05IKi0v3Lq917Le*!UxBJYN`Vr8|1$jj50VD5fvSOw z-(ZF~46zx($8#~-kUKOh9u19TNY0I~dG z`1hBA5y<}g_y4cI3}({*g*gAq^Z#dL_#dnH|JmpNJMaAe2etv|3x;0|00G4G>kr86 zzYquf`+xk=e@^EAQat}9xc>97{@;He<|?3qzo3u+2q2a}APrzwf*tnl_y6c6m z5?7266~G|=0}2mdsDK;{bP_-SF*1~XW%vY(NDyK`u#uw~6h{mUJPZH<1^~BhckWKq{Jk|L6Yw|Nrm*vcLXk{sL#*k)f0!)jRF?KX6FHLLC_7zyJOQ#RJf}AnqSv4E_E0 z_d>^cfB<4-C}v>z1dGUDNRj#r9OZBkNc8hC00bBS^Nnc?6(4BA00000NkvXXu0mjf DM=x{`~^7feaw| z@9%GBrr%pd7ytr@3Fu&;D>$G0;d%9&ckUlP_FsJLznOpkI<);49~%fU|NOOg<1c>p zU%YI;<@gu?0tjRS1JJ?0e*b^_hvDg;|Nnpg`SWY#%HJzjff!!CzZWj}wP?w&U%!5b zMg95nhXEjfKpOu4{R2W=zZm2}8km@V1qJfIu3a z^ZvQT`ny}__wU`%Fad@Sg!~P3A(#OSI%WR9r+OFw0*K`e1H&7RKZ`vj#ee<&!}=E_ z2M*0Ye}N7Llfc;c2aF@2)L(`#3;+SdxR!w-xR`AxVx?>``QKoX4p z{r>$=Qj`^FFF*h>?mzuiS(feBuYdplGyMPm{~rVab^il$89+1;fd$yvm=2wM1rR`t zfB*hvWMl+7=|4yZ16bGpcem@l{$rO?srZisfXY67`UDU_ED+y9gdmKw*T0{<`x@v9 zlkZkl}Tegi}1FC>)y z`~`;fe+5al?K4jS1P}|@5C%z67NEr6KmWj?{{J^f1u*QH|Ne!BH7L;kfnp0FfEXE= rk23safJY>Z`~zeELt=n*00bBSq*!cC{}>3t00000NkvXXu0mjfg_GrH literal 0 HcmV?d00001 diff --git a/lib/images/flags/sy.png b/lib/images/flags/sy.png new file mode 100644 index 0000000000000000000000000000000000000000..f5ce30dcb79b443ebc1615fe4889cc26e2d762b1 GIT binary patch literal 422 zcmV;X0a^ZuP)@|4`Xj5kLT%`al?B=W5I`)SK7Qoo3V-qKd5l^# zgv$taFhBq?zJ2?apPwJU>mjm?jEr~g+yMw6Mj$IKE$!aDd%wZp7Z^YoAQH^_^XK=U zKYvwJR4!h;2oOM^VEz63kEEm|Pzoptl!JgjVAdZn_zMF-#Q*_BG6D!N0MDLEDh$KY Qwg3PC07*qoM6N<$f z|Nj36M1Mf!|33`>e*gaqWCO|HKwFtO#a&sZ0t5gt0M7pel4t!zdFAutyc%F2ByLSib7d z-@iY8{9s{WsjaVha_-{UlG^LGvEO)A^**!$6$1ni3ljqaFhGRYPy6$qf&JG{kKey{ z|N8ae_ixs}{}``bdDhkT?#VOp#VvoBm>H#|fo1~)5aY*A1~#Xrf1jTKgW~`H-wePI z{Ri~aZw6pM{r$!84-_k)u=@Ltg1)Cf2{xiF#iKZ95W~`fDE7~ z|1pDN1{?_>vH!pR*Zxoe2p~qo;+=0k{eVOy5dHe~@Bg1a48OqWACLsaJOfY!7)!uZ dz{3I%U;rfUVNTmRI(Yy9002ovPDHLkV1m_xKPvzL literal 0 HcmV?d00001 diff --git a/lib/images/flags/tc.png b/lib/images/flags/tc.png new file mode 100644 index 0000000000000000000000000000000000000000..8fc1156bec3389e54d3c5bb8339901773a881e68 GIT binary patch literal 624 zcmV-$0+0QPP)Mt z2Fbqp@bUfi_XiXZ_x%As_WHU2H1hfc9TM^w3-JC0{^0Bg`~MgK0Qv%mWs{6kqN+Cc z+b3Uc-enXLWmi^s_2~6APR{Qy8GilxQ)j#p({t5y7`^LQ4&lw9Z0Ra5^`SSP!?%<&3?fU!$2L%N9{QCa@0Qv%mW$D2m zA^~iFet$Uihac>@UpF6ozx?O#ufL4HfBpRUndtzp5U;>@#TUPR{|1KG4}bt-0)`aO z`@jDF|MM3p^6S^{zdwKf{q+mXVfa4fgq7?27ZxvH%|34Sm*EEk!#{ukVgYLS^A{)$ z3^fq>3urc&4I=;kz4MwgW4X`2zkh%J`Om=vauPrQ0X6*k{pY`=2p7%A_P)?P zUwuVdAkKe=-@h3}_C6p$AOxEwQo+UIeHT5%mg3lYGL;@HP(LjqG0$?6F}(Ht8A z0K*^*BsuTDFa|;zm9Mc;PRcq|KMMBO%8|{GkrU*a2x&r-3HS3`xnqW1|R~39RolBu`vAj19S<{HjoWK z4L}tj8-Qm20eTwfuYbROLyY(bwgDi3SQvf*HG+%>>H*pSauQI_zkmNAP67ugNCPlf z{{97O00g6G8FFbZ~XHln?_bqJeH^V)*lb;YTJ&0)m(r7ytqc06HRil3NF`RsaA107*qo IM6N<$g5!7R+W-In literal 0 HcmV?d00001 diff --git a/lib/images/flags/tf.png b/lib/images/flags/tf.png new file mode 100644 index 0000000000000000000000000000000000000000..80529a4361941e01d1def5d581bf2847cf99fef6 GIT binary patch literal 527 zcmV+q0`UEbP)KfiwinSYl|od6I(APxT+{=azr6>87_{|pZw{QvzM zh#vfW|M&NwU%!FG-`~IfN=xzq?EwhD!Wi2C0Dv&)|Bp?Zs+hPi0R-LQn75%cY-O8s zAPsw;Q!9X27=Hcx_y6DDzyCn0!4P6RP{Xg^fBpb%_yyDhbQs7f8-Qku33L4cS@IvK z8OZ(n2kOgTzyGb@ek0IRW9ouaN6$P0x*s5bfH4)06qlIj4>;1{Yyp4(0|4dQTo>gF RMrQy3002ovPDHLkV1fdR=hFZH literal 0 HcmV?d00001 diff --git a/lib/images/flags/tg.png b/lib/images/flags/tg.png new file mode 100644 index 0000000000000000000000000000000000000000..3aa00ad4dface0a9c23744ab451cec0443f187bf GIT binary patch literal 562 zcmV-20?qx2P)@|6mN}b_RwI3=Dr@=ogG+VE_mq7La^(HIVqv%*^=nCj$%1|9}7Uoj(8m`RC6+ zAo~61@1NiQe*Xrt|Nh=Ea}z)Sfi-Y&{FjhmFg0aZxaj}$=L~=U)(L)O`TP6-zu*7= z1Ib@N^zYwqCU)6YF9v`BVgi}{>lcH)J%gU!|J)p)>i@rg^Kt&>WCWsLoQyxgk29dnvBpN5vQb0*LYVQ3gi&tp7jnGyMMp z@*mKbe}4Uk_!#8f-w;8De}5R+mEP<>2M|CkH{LKvi2wQh{WmZi827ytqc0C8?ZF&p#S!~g&Q07*qoM6N<$g49|K A6951J literal 0 HcmV?d00001 diff --git a/lib/images/flags/th.png b/lib/images/flags/th.png new file mode 100644 index 0000000000000000000000000000000000000000..dd8ba91719ba641502bc7ffda16c25dc71b2066c GIT binary patch literal 452 zcmV;#0XzPQP)@|4`Xj5kLTn#2^O%5QJf({+!S7KyMr1NSdb0?wsyYS6cNVdko7wub89?$EL;)x)00Ic8;m6; z*ldXL$Yz5{poPB}7`^}m5DPc2nu@9r4=+1782$pC1a=$HjDKJ@i17#P6G=(#Q>V-T z0*LYF&!5c9%>VxV!xcCX0F(uW(%ZLh0Ro8SA3Hl!NeKhQjeq|#{05SL7=Ql;MhF4{ ujRQ&nZP~jQAb=RZqDCa1IEDa#00RK>mSUL#9?hx%0000(5Af|u+{y|g&!S9Ft%(8imf-XR*|Ns8{XO&`< ztN44b9;zJZ^?&~W0*LYB$B#TbJpUo){|D*(`>^x>w|gKB?9z<#wQ%E^n3(S0zYh>V zEO6uD3`W^f29Wmu3`mZF`w$?27#UO<(rVJ~y}I}N&+p%VfB*XP3y6U1Uw^?QNbuL6 zzrX+d{i`Cbal7Zfib@b53s27mx! mU=U|u;Adc9XCM*)1Q-C-v^a{iiydVE0000+lNu{Qmp=|FW6D0*D1<1Ovm9m%kYQ|7p*Yo3ikU z7~kiESLFZv{{Q#iA0zqwf4<*Xu-*CD8$MYncA&8U0mQ`ckKy0n|9}7f|MB&2MbDkQ z1j{KKBL!IA2(Z7F;(zkuBe#mo9TT;SzkoLU{s(jwKmai@{QdX$=kGt?etVi7(p9*e z(|o73K&5wiaQBkXEB9so{`tH8jIplb^d$ZPi5h|uLD4*o5RnOS|{Qd{@Cr~j!0D)}y0}8T#$FHit{lE#dc*g~k_utsL zxj&Wpto`+k?f2h5mv;mM4gK>M6!-uE1hnA~P_?8O+wWh(`!4wX{Cn2j=z=is`~Uxb zzx=@K_DcEUJ7IZAUZAu8{sn~+Kmai^Fsw$4O9qB73=GeJhA}V*Ffg!yW&gnt6F`6g Y0QOrYft$MNbN~PV07*qoM6N<$f;FEW z@b~ZkKS1)&|37~i{`~p>`}cn&^2?@800G1T)Nta$zvt>t<757@uK4@^{4bCmpb7~3 z1tfp{|Md&VW|Wov$G`v(Kp+kO{{26+>+jbuf7A2+upj>Wf7$Q%RxoV1$N0e}Fas1Q1BW)@@rKJa|xATBWA`D>(WW1JFHv zzy7cP0k+{MTm!^O009K@!>LoJmn~avX#S_9;5YZ-KmTX``u`YaHjD&?*dJiPF#rS* zNW;&cKP?=87yABYZ~OCq-%n(9P{tpi22h9t6$1niNQ1e-pD1xDrvBdy@BT2zfI@>2 zY$OAO1fsuxAqeOsfB<52Wnfst00RHO2+qJn5C9Nh04p0wT74^6IRF3v07*qoM6N<$ Ef~oTCkN^Mx literal 0 HcmV?d00001 diff --git a/lib/images/flags/tm.png b/lib/images/flags/tm.png new file mode 100644 index 0000000000000000000000000000000000000000..828020ecd0f6fc73348373c9e7a235fdced09de7 GIT binary patch literal 593 zcmV-X0VKiqu&g@GZ_kb&V31Gky(*8`UselaloV1SZ886W^4001!n&i@1e004Y* zk0R&!|NaLC5DIk$@CyeC@AU9ebDYiJ)zswL{Qdm<{`>p<{rmm%TMiuO{1voVt6d+$)WVk%^O){nwx0zkdJv^%rQ#Z=eQ%0Ac}Z`19}Y zkI%oqe*ekA`2WvehFzDBOo*xZ{rB(cQ`_&qdGhP`Z=jyvAOx}jAb?nae){+CFDvWc zZ(siLa{c@D=g;LQw^HX+sY@u`d-M3!$G1SGAWQ!Ifj9{ufLMTG0<_`#=U?|Ye)D|< z8pH7G?=PVA*@stt1I-4xpA0e#40jk9 f${7d%fB*vk3(!F(w2U8u00000NkvXXu0mjf+94t7 literal 0 HcmV?d00001 diff --git a/lib/images/flags/tn.png b/lib/images/flags/tn.png new file mode 100644 index 0000000000000000000000000000000000000000..183cdd3dc98c6957bde83f375a431e543a3ce9e4 GIT binary patch literal 495 zcmV@|4`Xj5kLT%gT|L_r@28Q3iff@h;hzaCwplYy<4FCT9KXmB7 zhQ|Nt)Bg(#gN*m^{Qvt8$Of<_K(zn?!~}BDpT8hi0uj&>pxItt|NHv>A2{&e(C|Mm zFGw7s;m;qS=>P!)((wQ9AF!W(0sZ}7M&|#9_5TYB{zpfHZ20g2t^wjCfB*tH2_nSs z8?4R7=Kq6S{f9wP5^T(0hI#XVIvK%6GC)WrB}fdh6SO{nUiXv3iAlW}aH!uJM5J&?vILH{_iZHeP0c!XQ3PuJ7 zfB*t%VEX-sK~fTI%wL8-Af1e0BN-qh5dHlNK|sX-0mS$fH6j^sMDRaYQUC}r0RA0L U-~OCsp8x;=07*qoM6N<$f)6&Rz5oCK literal 0 HcmV?d00001 diff --git a/lib/images/flags/tr.png b/lib/images/flags/tr.png new file mode 100644 index 0000000000000000000000000000000000000000..be32f77e9910c0896c1ee8e7ed4f0edf815a517e GIT binary patch literal 492 zcmV@|4`Xj5kLT%yy% zCxE~j7#aURc>+`lQtjr(@bBOM9XtMi`UFz<>-YcPzyAOF1!ObI$^vZw2q2J#|6qeb zs-vSBOie-Rl$HN?bb!_U0_g#3VEFwTr~x2=m_Y6Zss`GqsL0^t^nd#F|4B*zH*EO- z_3QuT%m4H6g6)A?0#pkSKujPf{rCwIb#eU5`( z{s2t}2q2J#|9}60{Pg58FvR|AYlEDjruP5RC6KEgJ^H_IA4CJhNdN)F0>q49OBog~ z{?Etvzo-c07$As@{Qu?4|3!FoS~(Xu$ujuK&Ki|5;f$7pYF;Nfxh(xqFs zZUMDjzjMbfEbRY>5C0Dx`v3aP|JSeozj_5kj66I)?%V+g05Jg0{{w&k0RJ5w0P^!X zSy|WJ-R9=z(aMV97z{4myy=pj4$^bx3|zy{hYtY)h`Ao9!QA5iyLbPuTmkB_PfP?Vee~$j z!-o&gUAyj)n+wu&>J&%=KmU)%j{yP*q=CWA45Z=rFNTYkfO?!$Q_o+&{s0WlT)E;? zRQUhj|NkdWF!J+%fBF<4fS7B68jOwqzkLe|6QI@S&;S4b-#s()-1Y1C!Qjl5tA6F> zpisYc>&x@!00G2Y!@$5~Xb92(47=Z8{{bD%z~Ggi4>bPny?b}>+&OjWQc!g@0~6Et z-Maw-h`Ac5K~JB7o9jOp7XvpB0}lu>-nqlT$mpA&|LpDCZ{NOs`t<42?c44-IbZwx z0Rjj;B7x{N1H(%OhUW|nPgz+XA3Vr_1a9x%4G>@ep<^{rq?UTJ00000NkvXXu0mjf Doa;3l literal 0 HcmV?d00001 diff --git a/lib/images/flags/tv.png b/lib/images/flags/tv.png new file mode 100644 index 0000000000000000000000000000000000000000..28274c5fb40e5d3bacd7c05d9a1b8017eeaffa6c GIT binary patch literal 536 zcmV+z0_XjSP)mzpv3Mmw05Sgm{~xFtLc$sUu>nR##!sI<0R#{WMEdpj-yJ7j ze)|0V&%b{_!~X#7`1>EofS_N0|E)GoUH&SsFy}2m05O4F@}ffYb$qvjbfSUipMQUU zgY^9U_4m&&5D8KZ)HC5u^uad<48Q&W1P~L@hOIAb7eDp_T4W)^*Xg48{r4ZBJ-_}k z{QCPJq~Q-pPnz693xQJ%zkUG(5aZwHtqd&u|9`*u&+TyOvq{_Ghd=&6oB?#w{~Yv(xYPgr|NRH*haKioowt*& z{dC`3v>70P7=Ql!$;`|Q@(GT>fdHT^FqGcDeG3pkjNS|k>E&sEfzAeo{ckY&=g(gd z`CCrwmxA8!XLtTy-uM6CzrVnM%iVPzAb=R%ks=j>et^j`MFs;Wh8c4i)_^1XKP)u> a1Q-A&>r+tW$-Nl>0000<~s!0-E7R}a|Ns2?4|9|}gs%Dgx1=;`*KrBFO{{8#+``2Fv2B6@-@8AFY{`(K80jdYk13&NH4;SYnOGgJvc0I@K9VW@Vk1}Xmk4~YK$|NH0P z-@pI<0D+Rop8&DnA}oIvEc_iD{O9-Y-=|4+U?1uFgf@9*z_zyJRJ z%fS3QR^zuR^Y0tyerNXndi(YlP_?gzto2+5fB<3vIsj-gQ0X6_*?&Q*d^>boB3^zoi8Kq^tbl{qlR!{9jwQ|Nij< z=(=A?F~8j-MSe1{Hl8Yc@zaXo%Ljk}VgUvb(2HJbe?0kqy?_3vsPXrUmq2rWE6M!I zE@4*I;Mw}vw&7&iFGdC>zW)rr{s9CK3xfnhrsi*1wqMhx{@J=6sPgxpU%z6)f4fBr zzxpd#a3tyYE8}0lKnA+|-+zWbe*glA<)R0}-=}{Pnt#7~1q_Mb;=;f3i~oshNgsS> zIr~z~(_bRL|NZ|1LO_>;A_pLVSoBpHQd9nLa7ao@{lMMx#__lBLe9Cjx?EiU z71{s)`Oon8FXP|;z>s7BItd_v7-5mj(Adb}701wVj$!S*>kNN{fN~5FV)t0eYh-DxnQ(+0I@JIfmA>F`X8wD?>`2h#NWRRzyE`zA&Pzh5tt#% z!^rUCA3y+sZ1@LM1hf`pHc0ia|NsB|1uKPX0CRu;1-SztfLMSo`wOxir1}rsY$VlC z667idh7Sw?0mQ-}a!Q0#;n&}vAb0=!_Zy@WNd5!6=O2ju7s{65Vq=gx0uVrqe;+b1 z$mIY3|KLBvF9x7j{{!v#g_UGtQhI;<6hHv607H@yECdWlR7EJN!LomVp$!l~APvkQ z4p0cL2#YobhQA>6hXEjfKpL3-19eKmL_s!=;22W8vpXP)6RGKQPvx1q)UK1Q6rb{|u}Q zRsa7#{m<~1f#L7}|GzNK{&HxZVEKJ4>jAefr9{u_M=MTegAo-i2ynN}MJ5kZm z42KRel$J95{>|{~*Z<$Y8RdVo9Ap3pAeIsa2H!t_KmPs=bot-kKnMR0GBy2s>sC=w zQFmwO;@`jj{`v(%zkl=p`BTQg01!Yd{Xp;j{qx|@pI^U!0X_En_iwRd$6{h)tX8f( zaOhC?&!0e%U%!3phy1#1%V=eK#YHXK~n$!{#(ib5I~GyfqpU(k2*|8J(R-+sudaynhucHbwAMTnor{mwqO^w7JHzaBsT z{O^B8RYf5+LvDs&KmRKVd78=o{`1#HTiEo_OolaGleS)G+IQ#sUI`b*pv<`1zCJ=H0jd{{2S>p`ri%{LsXJ%FbMS z$#S`6f|?OG!^Jxczkf6Q`UNF{l0Sd`ad7zm>({^EzyAS6{{CgrkluOb3l1A>ZU2~A zK+FZ=zkmP!`TOVhpFbzBzFaPmD2$N3;+$pK?>zdet`f0002ovPDHLkV1gy;I?Vt8 literal 0 HcmV?d00001 diff --git a/lib/images/flags/um.png b/lib/images/flags/um.png new file mode 100644 index 0000000000000000000000000000000000000000..c1dd9654b0705371876d3e3d06f950be02de2a73 GIT binary patch literal 571 zcmV-B0>u4^P)1J@ZrOUii!$=0Ad7ci1(2A^!3kwFaT->5i7Ttz54h6XL$JkA3s3o z=g)t?e>01U3h&zo5I`(I-#Hr#t~u}$WXZu-Kyv1Rm&rE5wcB1YFI@@=0EYkn8G$4- z^Xb{M0Ro8S57@^*QJ}#<$Im$M^4iKw z00a=@`Sa(sw6y;I{R{T)e~6KA2AmBHF`#D(ii!XNh(#nN}rF)(}plRy9vU;su%e@J`J?dSji002ov JPDHLkV1n4Y8}|SJ literal 0 HcmV?d00001 diff --git a/lib/images/flags/us.png b/lib/images/flags/us.png new file mode 100644 index 0000000000000000000000000000000000000000..10f451fe85c41c6c9a06d543a57114ae2f87ecc1 GIT binary patch literal 609 zcmV-n0-pVeP){qW|y?pud`Sa)3|NY&vWd%S0u>b>P!2!lUe;6EF*#G_c zFVXVt@6Q{uX@40W{p0iY2Aa+A^Cu7i8KT+YH}2j52q4BskM2rJ$^k9;2Xxc_|Np=M z&VaLlA*IO5FlECMfB<5VUNC{tBZO(|zW*;@GJN;|bTJ71`0*d;`d`2P!x=ymOA`2> z+y@9C##^^8%gd{MW@Y91_2d742B2~OQNf=-zkmD?Vqkdk_wPTUNeuu2#KPTG{_;O4 v7C%8E5*DLB7#Kb?Fnj}}-(W6879hX?8lYRg`Y`<~00000NkvXXu0mjfD6Jtx literal 0 HcmV?d00001 diff --git a/lib/images/flags/uy.png b/lib/images/flags/uy.png new file mode 100644 index 0000000000000000000000000000000000000000..31d948a067fe02d067a8c2e69f28cca446bc7c57 GIT binary patch literal 532 zcmV+v0_**WP)_vmzq~N}&z08z z0*LYY{pZr+B0$d}2MCnI@DC;m3N;oM#uMkR0R#{ugY)L9Y<*xj0QCR^`!^)W!R$Za z5CobHbl5+T3;%B|S`QFFjQ1Zt|MTw;G#Vi+hCg5i(ELAtfD|ak8UBG;ObiSF0R{lf Wla#5zB1?M!0000JMe1P}`Y1HZufM;3|NZsr4^XwNEI-g5fB<4iWtjhPj`qjL zFGT_P{{Q>;-(R370Ro7T!5$Ws$Po%5A+Zb!3j_cNFaSC{Z(fWD@s$7o002ovPDHLk FV1jsy^u+)G literal 0 HcmV?d00001 diff --git a/lib/images/flags/va.png b/lib/images/flags/va.png new file mode 100644 index 0000000000000000000000000000000000000000..b31eaf225d6fd770e0557c2baf8747c91ce88983 GIT binary patch literal 553 zcmV+^0@nSBP)|05Jg_ z#sD@3Z1&&(|Ni{{_Zx)%v%Gr!NnLzkb;C z@#QWhJ{xI9$+*)bNX$S?E90e{K^EMkYok78VXhR-hjM0*K`g z$j^Tmm_>oEVgxdn{xJOg$-v0L$jHRN$OsH@P9Y&+^ne@=1^@xXcy~X;zaPM$WdOPj ri2i^{AeYDB@IM9-1r;P))4B5XW#s0WPsWLbObPT z00IbN14#96puqp%TKvBf)PA*{`~CO-uM~~n%6z|m{re4Z55!3T0R+GV5`UO(`=kK4te?c|?1P~}#f$jmC10=!0@{8gBFK@Zu z-~WJALqveC|MTzfA7GIDVE_mqkOrW8BqZ2?K4D^#WMJTBVE7%b47BbKBg1c?EHl#| zW&XdQF#ikE01!Zo3=CVrargu%_x5NZPzVyc@Ms2-@*Gr#1lu5DU{kh6%sopXB}uDxAo`@Bt_a*7F+) z{Q{%kjEu5C8vp``Wse8Lf5q7h438n|z~nEOsZga5l7ZnjPy;{!05Jg0{{a91!FF~d z;^O)I`~dv>{`>s@o}L{E2?GEB|Mm6!N=n`P`~Ld+{`>p?A0G$7!M*~B3FM_eAU;q6 zNCH*w+4I@c^Ny?Q?QPpWZQiU1R1HBuWkA0H1P}`l|NYDG=gP=Ihyj(0CItil0R{kn^jdV2 S*Eqib00003_-&c2+@O*Bba;fM%rBo$$qwJnuekcf#0k*RG7MM`2+5Y7dK4k?R% z*@ue~6f;u_A~T0evP6qS=VxXnGS_mt>CSmS&gmG`kLSL)e_Vf_=c&!fKB7`4C;*C(7s2O*P zOs1$U0urzb3<=a`d9ABG4Q$eK<6~5Cg~V%B8`UqrfRSN8f&?QTVICs^VT=&p*?Eut zt4Ur&-BL_ON(Z|Xfgo93lf|gRkT$Mz-7^OQoD^XMF@}g>R?uoU0094KbXv)l?aF0E zh@GXQVr04m@05R(Rjxq*p|CCIRfv;QJmH1kf!hsqX*sha?_l;f%e5i5I~4YG#H4;6sPG2&U~bv( zNr`eMXGIX9?wP^zPQP(6+&$05Jg0{{;N}{t6CR|M}we`P%>f+X)5&j)Fc04NUj< zI`HZ2Woe@k6UF22`V|Qe2MTi(6bb?WF#yj00*Hv<{QLmnFd+P z9@fS%;@9^E|H1b5`Vk8^2@Yw;#}(}C_yUN9iGkt%y>Cxm>T2lO13mifZBc!n`jhHL z!MK>$6Z_d%|GfHMapIVnqod%T-`{|q1_&S~IR%b4Z+;63vi@iI?>jBz=eJjkjQ{>J z{QUQa@gMhBW_GSe5B=V~`@+h~@c%z3lmG&V@$K8U{QUg?|NjRX|KX9x@@rf{MxIY^ z?fG>3gQ&3ruaE-Yw>fW_PfAH~0~Or8dmA8tSRg?T(ZDLQOiOw%6RWM9%$i>kkAMHu z-oH0qLBYb*loP0ck&zJ?LI42-(g0BnBsn<*tTlsx%zxbLe*S!R<%*E3>|Z7(9Y#iG zpdch>0Ro8e`Sa&!arp;m4%k`<1H=Xjf<=G;Aix0Vb{`Xo7A9K&0000@|4`Xj5kLT%B_22*h{r-RE_y1qN|Ns8=|JN^|IHRmA&<212VgZ}|A4N4# z+WpUe-rxU^{Q|504bi~x`!`SnKmf4-F(Xhl(8fQ1fG+vp^85d{-~aW0|NsB{f9tRR zg1`PJA~XO^2M8drlm7gLxRT-bpa1p0|1bLmQVm3Azy5pw{{IQ;B%q-{(*XjA3FM@| zf53hMJK)W)|CK-uK=ku}!>|93eu7kk5yVLV0R(o^Z;+)RSAk6exg_KF|98LtFaPy_ z#c#OrKtum9FaQJ)NCPuC$bbfbRI>n`@$3IHusZAC|2cmD|MKhqAD{+Mr~sV<5I`Ue zOuzpyNJ@f@0s0=KlTj9AB*>SXe;D}wK*A7+fQkVEi190GMB<5K2mlB$03I1qT8uIj Q5C8xG07*qoM6N<$f}XY6qW}N^ literal 0 HcmV?d00001 diff --git a/lib/images/flags/vu.png b/lib/images/flags/vu.png new file mode 100644 index 0000000000000000000000000000000000000000..b3397bc63d718b344e604266259134e653925c9d GIT binary patch literal 604 zcmV-i0;BzjP)7(YpZ_rO%ce~L0mQ<@*ghnz= zZvXM=_iyVze?clB=ogUu_5ar|Ae&KE_8$WSKmaiTHT?Vg|MaE5OE>+VAUAUr;?j4FCZIvLVX%uQ>mocOU*NTK^}%njy93_oP3+fBpUa=kKpye|`ZO zzyE?r`Mc+5Xcyo_v6>E-#|Nl{r(LkAS94bRQz)6 z1Oq?-fi&zp{`>yDUnV+0)eJF{zWfaN_0t9DjNiZhfxY|}ME?2z=O_CghC>Vh0R+`!~0W%8&aG{{H+4 zRPp!M??1nPG5q=k)Wabw3seITKp+kO{xLwc{r>&$?_UrCGJgGL;^k4Qujka#`tk7L zjnovNAkb9+0R(gvNCCu>f4~1QF);xde}DY=^Xr#I=|`5hhp|NZyp>({@(egUPqbabS$v+tIbNu;L>xVSv%=>ggR z5I`*V_U`A@(fj`3!N1?XfHr^}17rYw{OcFcC69Z0BvMmfELgy8V88%&5l9HrLN(5b9xs8l&q^Gm-@&XkD1Q1BW|346ee?wJ+H2_`p`^l3V z+1Wtu|3AMO{`_T8Q2{Cj2q2bUARGR$NlJo(=nv2bFrDDw2U!bb{QV0-KNuJQ0*G-b s1H(6@xcrC2{sj~H2V-zBFaQJ?0G2^Lae{Q+uK)l507*qoM6N<$f;6K8u>b%7 literal 0 HcmV?d00001 diff --git a/lib/images/flags/ws.png b/lib/images/flags/ws.png new file mode 100644 index 0000000000000000000000000000000000000000..c16950802ea95b40a4e024be6cce870b1991f40e GIT binary patch literal 476 zcmV<20VDp2P)>E69JA<-5ee*C|6>(%ey48MQ<`3*E1sOaY}WDP*a00a=wNxxYB{9yb2 zOU?HFZD2h;3gJl2w`NO~f5I`Ue%-|qnfGfh(_6MlpFT>xzKtBKk z5J&^l?>`KZl3-*0GW-GQWCR<@03m_s?_UT4Dh3E3#;>Rm$$$~H$WlN65MTgr(_Ikn S3@&c~00004%P)h=Z!r1m*T3JtfNUmdS)dI70mLHE z+xy?%p5eHez0mS(A>sL-rPOy{yGk_s3 zz{tq>=+Ps90Al&~?;k`pNCN|I|RMxbJV00L=%3E(v!XamT}{{RArWx|9$7Z{pWi2U{IKN}lRCnF;x&=P&!(V3Rv&T;|GP6K500a;d#1A^U zy8js%fB*jT=jRXRU*A|5K#2L*r(ZvQ{P_O!=da%umKG4l0|XG%NkAKznV4BvSbj4y zawHV~fBoj~uiyXJSQwZYIoR0QIXM3O{tc7`Dgy{0# literal 0 HcmV?d00001 diff --git a/lib/images/flags/za.png b/lib/images/flags/za.png new file mode 100644 index 0000000000000000000000000000000000000000..57c58e2119f402072640ca758657798b621f3fb1 GIT binary patch literal 642 zcmV-|0)737P)Cfuwe;F7c=r;qyPX>nX3=Cfx7(O#Fd}LsF&%p4OfdL?Z7#j~W z{9>KL@b8bfkaUokt?1q(EJu$q{Qdp^&mV?AfBydlG2rBvO`8A$h{fmzgIW0J+B07s zK74uV#pQB`MAdI!SdN|k|KJ`--LK#OfB*Xb>lcvCC@cGqfdL=@05Jg0{{a910Lj6A zAt&mC*9zzO1pWQ@b1`Tn1`iV6=KuBe|Nj2}{{8>`{{Q~|0SOB6tE&PCq@k>=Oh@B| zgDu0v2b@p;u)h2C^Y4EK4rY$O|Ni{`3qc?^$?%A8m^2X}fLMSU{`~p7aqHLD@0rW| zzIWc|c>Ry-$DePXKfn0(_xG>AzksTL{re5n#{Tyw!wUw000L?F`}dEV6O*(3zu6Di z9{gne@#pKG|NpqSh1vf81DXBz&mW+Me}8zmL>PD&00Ic4!QY)xLzl7RCikV!EWdtz zoorLj&BXoYF88-DfB*gk`{Eza7yo#;S!C4G00M|*elvr*8B6X-zBgb0FtGkEHc8mM zoOScs_b*;Q0~!ksq<=swfJjA!^Ww!_00G4E&x@hvA~zQkvxU59n3VsHd7Nj?ec|R~ zkmuqAx#JHo0{#K*`TG}00$uYDAb=PdGJ(Ek5Vx?d6PS=4{E7kSFNS|$^b5xL14ayB ck_{lh0N_F{UmK66LjV8(07*qoM6N<$f>aVd=Kufz literal 0 HcmV?d00001 diff --git a/lib/images/flags/zm.png b/lib/images/flags/zm.png new file mode 100644 index 0000000000000000000000000000000000000000..c25b07beef894408ae11c3be294d6e0eeb28c0bb GIT binary patch literal 500 zcmVLz(k0+Rp#|Nr~{@4x^5fB>iy$Oe)U zA3pkg`SAPSuU~)vaR2(F*|!oPfLI`Azxw(Lr25~#KmY#x{rl(7|GyyW-|wp|{||Bf z=)Cuc_0O*fYWnY`7ytr@1!(pEfB(To0uBE22c#NA{{8#+_rKq)zyAFG`zKdY6euFW z2yzlY0I`6SGJqWbGV%`;{r&ytA5hcp-u`P`AAdOg`t|1D?}h2=^+y>10tjRS&?yMj zfBygt2HEouXg1LCzyJLD1w#LR1MLR}1V8|>0KE@nffPa916Bvu_V4#Epof105yNkw zzknJ50tl=DS->P)FK#X6%e&u3i|I74$@9uP0*YE!se={)r{r~?r68Z&3 zzZn^2KYiK`5I`&p3=IF7JHD>uaSofgtUAf*-w!6nU;qF7`S<(x|35&+uYZ4j|Njjl zS;T)|pU40ZKrEjoRWbQ1@P?oGFzcPCjLiCzcU8ZC{rmejNW<@6e}U*1kPT$~=Kk_~ z83O}A05QHjx|ikdd7h}_|NsB_wl9j+&d<}^`}fbEzkmP!1q4tEL@O#P9zA*#Ab?m{ zv`qe9Isj6Ah@Z*IdsTw}WYHgB8-D!*lmGvK*?)d>i2vThzyJ_HEdLn(@uk-N0|t-& z`$Yv&?#y3UfPVP*`ya#a|BS!>G5-DsFR)1c1&eHCHYDzO7ytqc0P0;>l>h9)WB>pF M07*qoM6N<$g71PE`~Uy| literal 0 HcmV?d00001 diff --git a/lib/images/icons/ts3client.ico b/lib/images/icons/ts3client.ico new file mode 100644 index 0000000000000000000000000000000000000000..3b3aef0ef109091c806213a6e332133396965e1d GIT binary patch literal 70333 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

lG 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 literal 0 HcmV?d00001 diff --git a/lib/images/icons/ts3server.ico b/lib/images/icons/ts3server.ico new file mode 100644 index 0000000000000000000000000000000000000000..3d5c2776009e03e7951a6434464909293e5b0a21 GIT binary patch literal 69372 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

iaZ#JzG}=BM-Tqo7w6Y24jx8K*3eOr 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 literal 0 HcmV?d00001 diff --git a/lib/images/viewer/channel_flag_default.png b/lib/images/viewer/channel_flag_default.png new file mode 100644 index 0000000000000000000000000000000000000000..4f90c9e99ee54af244711dc91721baa5cc1adf94 GIT binary patch literal 696 zcmV;p0!RIcP)z@;o?%Qu_W%F@AY({UO#lFTB>(_`g8%^e{{R4h=l}px z2mk>USO5SzmjD14Z`WEMkN^MzE=fc|RCwB?ld(_RKp4e;Hs{1bBt$lW4lqPjWwEd_ z1_=czBMV|+@502Efq$S(sD-})iJ7qj{{c%7Rf9w#fvGEz+DdSJKKnYfSb>U(lWw{1 z-Fx@F_no1&=1og$jpH~tj)UvEpBjzE&~cm&faiI)p6A^H%+1YFsZ^*|tGKR+-kKLjYhndjA@#*S}lgd;cTzh>jSm`h@xok z^78Ua7>0(FvbbOv23l+KJTK0YB%#~w>L`l#00cm@**tb#_w#5pGL%wituaj#r4&jj zq?9}n|MN?)t*spw1oQLrNGW-Id_+o#Qi}Wgd*V0-z_xAb^?LCdr4;pgoq{0CGV(kp zj$_g^MF_$9`8hW?Hvlvm4YsznP)cDK#xs+}%Sd0k4lp$}_39))BQOl3*jbj5rfH!z zS$mD3sN{Lh;^HEuQi&&zCX<-N3V^GtEAH;@h7S)9wI|@D+F&rC-|rW*aD9FKD~h7O exVL`iKLY@G7#?y0rF(Dy0000004&&004{<008|>004nL003F*009yY002DZ000@zy2&Ck0003k zX+uL$P-t&-Z*ypGa3D!TLm+T+Z)Rz1WdHyu&tqU?a_05zrGr z_7{-)bTFHV18fe2Edyegq*j3JWpK_fs4U7%&nQtaw6wHTa7@WhN>vE1EG|jSEmrW% zOU^GU$S+DPNlgK&g}4t41R)ARA*KP;XrakKWdMo?2Ftm z#)SC@Gv-JzF!(QJU|{)!5HsmzU|68Tz`#EhA*N=?z#yQ{z_4!)0K&6R{?;bADF6Tf z32;bRa{vGf5&!@T5&_cPe*6Fc02y>eSaefwW^{L9a%BKeVQFr3E>1;MAa*k@H7+qu z=Q#NQ00GHKL_t(IPpy-`OF~f;$2A&S8wzQYh(buB5?VrNs3oz`Z1DL~v%tg#AwkQ) zp`n^;iNGij9u-MMslBH)6{J)S4bgw$fAH;|OTHg11$E#IhsXDGzTf-qHJSda<~<(8 z3W)n~Knqt_y#Kf<%jOTJ0^->8x)!ErO z%nV>FvhSgn1$A08gL;Nakp z&qG6_e2zw=8o)I;h_{^`)U#Ps7Z(ix5>g4mf&mbTEa?FK1E>iCF0EFam`p0b>73v~ zD%wnQ%Yi70x(F5viX9y|XX1j{tO8=ORW6_yWWO~N(C-&CfV;C3G85mhmfPD^Kr44T zy}?1-+q)@?SP|BlXp^>1o#Z(jqf+3iY(3Ab2he*w6@ zzJer4#`iGW+pCQC^kA&38{(V~f004&&004{<008|>004nL003F*009yY002DZ000@zy2&Ck0003k zX+uL$P-t&-Z*ypGa3D!TLm+T+Z)Rz1WdHyu&tqU?a_05zrGr z_7{-)bTFHV18fe2Edyegq*j3JWpK_fs4U7%&nQtaw6wHTa7@WhN>vE1EG|jSEmrW% zOU^GU$S+DPNlgK&g}4t41R)ARA*KP;XrakKWdMo?2Ftm z#)SC@Gv-JzF!(QJU|{)!5HsmzU|68Tz`#EhA*N=?z#yQ{z_4!)0K&6R{?;bADF6Tf z32;bRa{vGf5&!@T5&_cPe*6Fc02y>eSaefwW^{L9a%BKeVQFr3E>1;MAa*k@H7+qu z=Q#NQ0087kL_t(IPh()9B~VmU4FKW>AT9u61(NInYM2ki|JBvC|J&O+0kQLcAb&j& zCjhYn)L;Xgh5{Ar2N|HMs`=mC-1>i3X5Rk^6Q=xcY-;`A(Ae@nJUj|ypaUTTKu$M+ zdS$+|v-|tzmiGS}Hg1L)fZqk^rUMNUKnfS!nn4;tULYyZu-G<~3;-n(XuN}>4unC8 z=R8qi018=aYy0o*{NJui7fMNi)n`5z9c!D(m0000z@;o?%Qu_W%F@AY({UO#lFTB>(_`g8%^e{{R4h=l}px z2mk>USO5SzmjD14Z`WEMkN^My!%0LzRCwB?lfP?IQ545Nmo$Ua&=ADIL6RX5P)e2H zkR@HRWXO;f$!Kdz9YQODe}aQbO$x7rV_noO|A9LBqlAc?b+HaFJmCeAyyU&~y?0!E zkNkM;(hC>P<=*?b=X=igDiPr#V_|ZklnUc=xxBS<>-Ns&#l`EV?&+@sO?zS(#+%?w z@bE$ub$9pS+wBM2caOgxW11$;czpBS`wy=-H}Bs89!(toFJ%&@_!&twuVX4qI(mmWq@hA~=qNh~WD^x~|i1x3O)T zMx#L@kw7WMr1>HNK|CA|0m$d`0F1}uDHBB+Daas*0bJKbM6hjp%B|;00PuaEN~MD5 zc_Hjv34rdp?lsTz02qx%6bc2DQepbBSPVdq1Q>?#tkdZz@;o?%Qu_W%F@AY({UO#lFTB>(_`g8%^e{{R4h=l}px z2mk>USO5SzmjD14Z`WEMkN^MztVu*cRCwB?)4xv>VF1SQ@AZA}+R`6L0goE1M2(9s z1k^Z?C~`nzj7F-6e*lRKtHi_@gNY8hsT(tcKw>lw)U_lAb*Q6*2^EZ3TJZwC_U_)- zNvo?q(=&aBCwUC5HUAU&t6a(B>3_Lzh39Z+8QF2 z!p`+_@zO=QI=cYq-rLQwW5@BD9zqCwKlo$Brq6Dv#742m_NPzuoH)tH&F?HNEP(;D zv$JF}8Pcf~uIqCB+9b_pqXp>g?^G5R@I8-|VUSF;adzM|Zv6*n$mMb*k_m)}P%fA0 z=*SR;ss)Hf1L=9R0j3a`5y8tBuh@TZA6KtVFg7-ZXv^&Ymo)R02S2O{f&lpDl9t-W>ok zot?DB<5-r(#>NKY`O2M>q?LTmhHlZOu<@#N`aVzC&m>oPbv$o%{~i9~{8u}EKEUkhkTS$G3Z3U~-SPc^qi4>btSFvW zCz(nTF(L#(fYk literal 0 HcmV?d00001 diff --git a/lib/images/viewer/channel_open.png b/lib/images/viewer/channel_open.png new file mode 100644 index 0000000000000000000000000000000000000000..bed4b522c62f8a6251bd3af67b62d796e7367d0c GIT binary patch literal 847 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 literal 0 HcmV?d00001 diff --git a/lib/images/viewer/client_cc_talk.png b/lib/images/viewer/client_cc_talk.png new file mode 100644 index 0000000000000000000000000000000000000000..a5f7f8e391572b0df4344f4ba2aff3dffe1e7de9 GIT binary patch literal 868 zcmV-q1DpJbP)Px#24YJ`L;(K){{a7>y{D4^000SaNLh0L01FcU01FcV0GgZ_00007bV*G`2igV> z3KS!eur!MR00QJmL_t(I%XO1YXk1kk$A9;}J8zyZnVFbOC(&dYjI;@9Dl}vvRnXKH zp}1(F6s$!QSAvS-!c7(~TDmA|mtC}7Rl(3!(WWpUXse+%2DCA$B~r~ylVB&w%w#6X z`Pa z_mvVtB$4*f!~4g~{_X9wq)p0|=}kr(p_Iwar@GmbpW@nB*C4Z%=M*&U=FyJ+p6o2i zrYhd*O~NqRY&ir{BB+u{!Qs8v)bOVr`xLBX1_pjirJKO>YAi2aN1FVvswJ>(=*$37 z^q7KBHY$W|f|Rhh1j<vYQk^Pwuj5PTn8 z7b-4z0T4GGg~7!28w2@+&yF`+7PPfNV*?mQ!}<|!$j9?M7MGw@hPy=|a(`Ajtlko} z#oTm(U47kh$;uC>#x zopM&s+-}rgUQ+t?w=6A0>)G{(1LHnmXlUq8sW> zapgPB2d7_}8^2un==h0uKlELvRwxuu_W_+-x3YiG|9yZX{W#~|%iB>x2<4od#X0Z$KKFf|=e>%(ma=Ln`xKek54nZq#3&X?(+6^YJ@xgQ zah0nj#j$Vfi5YwLvpHst9w!y*L8KYVNlZ?q*5L4w57`=|^q)OzkcEeY z%1@4nRmb)&P;Pqr4j-jhpX70S>rG)rJJ)rX`e266TAO@xFpG&!J0jXi+}a7MO|*#L z-q;bb(>=|xEF~RDtol9-IwDT*j3YeW#VIwYOwbRZwcZ~kzHJS|nB1*HX##o=4>;tR z_-rfO3aM3KJJ8qypp<%pLnbsv&ADYnba~3fBioAvM3bdhUO{-eIJS)~NBwV7zPs}b zlV)g>VnPEZ7W3@Tk@zCoUscKWxN9AuQXQjQ@^BpqseB~fZa1kE$BAJO1Vq78(eJ60 zruRgHWC`}*~7&td#o zy}fcq+<8yFVoU#_jP3m_>i>MGdEl?P&(HGp{kx;O7Xl0bX{J-KN`)Pt00000NkvXX Hu0mjf;GdO) literal 0 HcmV?d00001 diff --git a/lib/images/viewer/client_mic_disabled.png b/lib/images/viewer/client_mic_disabled.png new file mode 100644 index 0000000000000000000000000000000000000000..107b72536ee89d9dc7b13e462da0bc6752c087ab GIT binary patch literal 977 zcmV;?11|iDP)z@;o?%Qu_W%F@AY({UO#lFTB>(_`g8%^e{{R4h=l}px z2mk>USO5SzmjD14Z`WEMkN^M!M@d9MRCwB?lihDqWdO#X_ne-V)_$*LZeg3u;#f9e zNJ=)N7tY#6U?Pcx=><+RF1(s7F+#bKgqbXH23;1EsBxHV3m15?VZ1OSLdpg*8(9L8 zk9OVJV1s_r(~on``<~Ye&G4S*5BTNxJjp{i=Xjc!0N_nR0&lmsPq%b-ZYGi>2$Y(% zN(EpHb^w`dM!lMp!KjXxYip60Wo>+R_O zd%Fi6W-F?^9#l$YEG@}UOJ%5{097e4v)BD(L`o_AlGHE_94VhYYkTq0qwmt&cS4h8 zSS?lz4u64j6BGDq_)AJk#hgrb+n=}CEoGbW0Kvz{by*`stD5z)7d@EnN{QF3arz)y3)_WSKlr`>Ka!wJsG{c<_4$K$g@ zUhn=_o15#_(rHBF@!}?n#r)3lviV;FLd5-nfWX&Q=kBIcy?_0EXV=wOY^$8jHo-7{ zW%UiAk;TOWzr|v*nRD!}t9wS^Tv|8yxW4}Kv2gg6i>VaG63OyfrTAEaAh42G&Q zGv}0xqS;_fFKC*SRMqJPNz@;o?%Qu_W%F@AY({UO#lFTB>(_`g8%^e{{R4h=l}px z2mk>USO5SzmjD14Z`WEMkN^M!07*naRCwB?kX=ZVdjQ6t_tST7>c(CoG94DqzD~@( zr+q9(pXYEyhSq_)=;nAa>$XtL#2~tevhE@Z@pP14@a@RFs`j&X1VJ z-qyQb_y2bhE&90Yxqp8Ao`<27;&;LWKvPo_7={7MvfwxlU!jyzgu~&rX0tV1W-pVc zr>8Ize|xi{!dWi}0$N&Hzyg5LXoSgRf+R^ur_&Gw0SvDpbID7US zQmGU){S)RB2_%*h&dJHipA85hc=)jAf3NpU@o?l79McmxxpfQdM-IRr8h9BS8_z$# z-d?i$)Txn2Lqlu6GoX|r7z{=KId-DB=gDIfhlAL?V+U*-H{zb#y?n00d;6lmmaK9( z@SwiFY1aM7C|+X?xPwi@LgFs6KKSa%m|HRxAGUc=+Mk+V(t$10RNl zU?Btxic**b#N% zBeI;I{U8(yol#YlpPQSBIGwwq9LL?NtEtKN`+Ng4$B*xmw{OSt(h@SN3R_VT?o3UI znx+8&7)mJ`8ylf0%3F@(EQAo&Vzo|qYHBu>cXl!`o3WfsLVy1rnN$j&78XEkHr=;( zuh`bs_GN-3Nf1TRt!Y}Z%jJ@6MMaxecXTl6++67I-eKy+3oto3P@_@MWD>6f0m0PO zrDi{%lww)etLNtD7w+EeAdh{|KE7GE4$l<@qmc+!cs$YE_V)Fr@^bu_NFc_taCp6) z*$J(!tssPe=Xo#;gYNF`)0s@>-X*u&pJOmsdo^ukVPPSvs;c&nT)5z~?Adc`SXJwr go14D?ekY#?08wX9Feo3M2LJ#707*qoM6N<$f<5A(Y5)KL literal 0 HcmV?d00001 diff --git a/lib/images/viewer/client_priority.png b/lib/images/viewer/client_priority.png new file mode 100644 index 0000000000000000000000000000000000000000..b54b7b096807087a8319307bc40011aaf7646456 GIT binary patch literal 1215 zcmV;w1VHKLZ*U+=)p!fv7f#TG` zAxLl%!EgG`&*5<32cu%worY0{L9A7~=}6b}76Isk~1IN~P)K3@?4 z&zpALY4A7Z!>t0&I7qECf*j`WHIYAjW_h^ivJu4lvb8y9VL`DD`rG0ZKvcZ$L@8 zo)6*!Fng}&gE0q~LGCMnsiR8`P)pL0I_sTkS+y)n+TA3GZ*h1dBmd6 zPPMfiz;QhsdzIzoWuA*aAIRqye>DL_1Y~WSi2PgEdpTYm3RO-`O;c56VcRxyb8{35 ze^V2xX*BuY5PaV|nM}TZKC&~y(9jQr!`tx1=i%~0Ow&XVF*Y3)!M5#pPn_sIAAKfH zCUcM7yBo=7r}=AX39U8a`7Gu0Bbx%)w*7Hm-M<2|L+<@JFw1J`wj5{Hi*x;lE5 z_QM_Y_MRkt_YNH$iJ{5K$#%=KL@D)%Tw{&4y`!e)@k32bO zJkO)EtBdZVN3m^t?e&TXd-l8_fyV+F%d&onMx$5Wdi$M1u~-N%%rE4wUmMM6(@e)= zF?`=gDMdv^1?zH@i17Kqh0ek6zq?pvS@_}`rBVr{M2dx#KwVv(?5vCA;_-M(PcoU= zcmpLOH1BU^;lVt?;1*h2+SvQzUY>4fpt5ocf84l1Ds}to-^a#|{5&#Jxe>qw&{|^{ z#-i35t<7`VG{?0z(OPez@;o?%Qu_W%F@AY({UO#lFTB>(_`g8%^e{{R4h=l}px z2mk>USO5SzmjD14Z`WEMkN^Mz`$y-Xp2L90UdR98&fuL8tuwhNY%}) zO`0uB+PJ1Ur^$KAdGR8Q`~iFZfG?j1o<{^hz>Q28U}R*3wzf6^#>dCi!DpVgI@Yg4 zuiKbTgSzYC1Yr3A4Fo1(I#x;?pExMO0Et9`Y&MIks+gwP*V)s}&gX{68zxIGWL7MS zR)ebJbEVcGU$fYj{<$SE41;7cNj{$k2<8eU&MuT#Sgn(}w#pULVcry!|Nawo@if-J zC~e`USOKtY8(r6l$KwF*a=k&`@i?|r=g6YT>0*tmmkR9I@(pAAHzH=gMBco%C77Bz zI_7z<8~A<@i$+DUTIJL8MK0?$s4B<~ZYh7v?%^HyuH@aJ6vy7L0lS-l;kQQjJlOvb z7fKaQoH@tm-+oO+Hvs_+4>G^;_Nx(WN5KmmdXwAv&L0KFnt_>fv;3!M%;d}bk(x$x zOf+W&Rc)tc7~Io0Npize*q)1Qm;7+}1btiIYprlquXFTdntv}ZvuRz5c(hDz;tL{f zeIb^}m@jK8fu z+If_}HcwY>tzcOeLI`}{Z{2|qf@Cs@A5t`TQT^wa19MN;?Nv;>#^gJhA0zqOGO|Mn zYnq0XlCG{UOw()$G)==W4CZsW3;hrGzjS1Bsyse@_9sP%z+4FL+j?i?loC=DDJ4P( zf*`nlbj?7aP{8v%(&_X^1CI>6dHWqbC*!ex3_~Y!Z{+dZ!aNr*UaIQ4ju3+DY5;Mg b@BIG&6kuZVdV(VA00000NkvXXu0mjfAT6MN literal 0 HcmV?d00001 diff --git a/lib/images/viewer/client_snd_disabled.png b/lib/images/viewer/client_snd_disabled.png new file mode 100644 index 0000000000000000000000000000000000000000..d516d267a017d35f0c444870b13d769bb2e05802 GIT binary patch literal 929 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 AaR2}S literal 0 HcmV?d00001 diff --git a/lib/images/viewer/client_talker_request.png b/lib/images/viewer/client_talker_request.png new file mode 100644 index 0000000000000000000000000000000000000000..5c09ada17cbabdfb929d5b159a713c4086140c3a GIT binary patch literal 1065 zcmV+^1lIeBP)KLZ*U+=)p!fv7f#TG` zAxLl%!EgG`&*5<32cu%worY0{L9A7~=}6b}76Isk~1IN~P)K3@?4 z&zpALY4A7Z!>t0&I7qECf*j`WHIYAjW_h^ivJu4lvb8y9VL`DD`rG0ZKvcZ$L@8 zo)6*!Fng}&gE0q~LGCMnsiR8`P)pL0I_sTkS+y)n+TA3G-YOx1wr6YglyY(BuP4l zKp>#7|5P9lPy~+S+yLPB`-=g9BuU^n&Mh#;SivY(j4>t@g0%#aB>k1D&`?-wtd~S7 zg)GYuMG-!qZ&l782?_=B`8=AMn&5J|KqjE1H2da zpS{HFjMC04it;A_h z4y3XQoeyqIeg5$FBnLo^#rlqf!{N%SS1v!-4FfHATSgy+9@i&QmXSzNIKFzczV1Tj z$UH3XA?Q{PnVdZhU~c98>pahQG&kQ_E-5V;1Mu}*qW!VvGy|n zD8F`Xs;bJ48{8QD{ j)lmR5@p%07O8?gY8gymP0A9XN00000NkvXXu0mjfoX+6K literal 0 HcmV?d00001 diff --git a/lib/images/viewer/group_channel.png b/lib/images/viewer/group_channel.png new file mode 100644 index 0000000000000000000000000000000000000000..6696f0791ef24dbd9090da86de83ed5020e58b17 GIT binary patch literal 1309 zcmV+&1>*XNP)KLZ*U+=)p!fv7f#TG` zAxLl%!EgG`&*5<32cu%worY0{L9A7~=}6b}76Isk~1IN~P)K3@?4 z&zpALY4A7Z!>t0&I7qECf*j`WHIYAjW_h^ivJu4lvb8y9VL`DD`rG0ZKvcZ$L@8 zo)6*!Fng}&gE0q~LGCMnsiR8`P)pL0I_sTkS+y)n+TA3Gg9hIJy@)-zWoD5r(+P3X{Dl z_{R2y3ahL_U>Qf_3ROuat9?klw3jrw%m40j|MP`V9NX*9%kP(&ot@q8=;#PomgTCd z3Q-gpP1EdKw=#3OUZ0zpnfWsu4*LlqPkAQu?M=U5y2{MY&+9`&Ly{_tyaUx z$OtwzHl2xy@%e>?g|TQf8uWU-Px;o?4lZ06y~Cx`>5mG9f*?r}1_uYBC<-Ex2$IP& ztYz7W&dyFjQ4}T=3LzekBcIPB5{Y1VcnB=Z9p_!wg(OK>US0;raqxJ(5Cj1L(B0hy zhG7^70cJ(M*~6Ny9ularI6l)|=c*p>~~bzzz&48uSok-*f{)H6;9ad}E9 zve_&ul?n(Ua2yB3G(m_7+qOZei)=OvP16qDvhDxevcXe_!Y~Y!%VoslGB}QfVHj{6 z3QAp2>cB7>P*oMO{4#i+N3mE$Z|_TR0gliAmIupnFbo5xX@OyYrrmT`R#vKtqKK`n zL6K)UFdUE7)m4y21A&$Rip9q?mwQm>gTWw@$s`CNc=BWee!m1w)0{7E-1uy-Tz;HN zzjOPww?_R(W3OO+V;2Vxf5zOW*Kq&-igo?^=U?#y0|Ss{8KNknTCJj1t09$on?Dgd zF?;pnPktHw@S51x(}&_e2QaxRu6%G29*-Ai&kT#PSS-b*)9EXPLP7X{=V&yFldmR( z1M!9aJ;P>qnm(-my^B*)1#g}{33a!GyWjtSP+Kr?_`zXkj|Y;^2dn8|uTF429>CXY zzeAz~6YswcwX}_QGxy+aHZUIR4nJ za0`Jjy;nEJ`iUFUl@fa1J(M+jMyWP~9$17sn8b-nEl`xta|`TK20qdA|?j zSLAxcxo7%s8P^XIa!2N_eyOz8u_x>{AIqdOvn!qJe1!HZ++A~K-A>PK<_5yymw!Yt zd*pT3HkIE}i8A0x5OWJWVB_xnn2q7wPrq9J%Pg_ty55U-`wBnnKc2|XprRNca$4!? zR+dS{(dV-Lc$RsdD%L!`r0~vX{pQEU5rNYJLff}w?wzz-{}PXiwcm!g)Z6oZ|50yD pnNb_?=BT2hLSFr{wFkv3n55<|e|Ob~cLmTF44$rjF6*2UngHbWe;WV* literal 0 HcmV?d00001 diff --git a/lib/images/viewer/group_icon_100.png b/lib/images/viewer/group_icon_100.png new file mode 100644 index 0000000000000000000000000000000000000000..7c948d4845cde7bb80a9e4c60cf0da3cc975d6ea GIT binary patch literal 809 zcmV+^1J?YBP)z@;o?%Qu_W%F@AY({UO#lFTB>(_`g8%^e{{R4h=l}px z2mk>USO5SzmjD14Z`WEMkN^MzpGibPRCwB?lfO?BaTvy*>s?!V2R%p)bbzx0u}l&Q zMMw)K*hxhpF&GE@6Oif&(8w@m>UP7&|}%!}#ARDF|$Z}TJbxo>Ns_5+WfDnSk z#bt2|{0|55 z{KZrF2mA46dK$W3fv#yFgw%R_dk;+jNs^FCr4B)XUq3ex{t$-13-H|YAQD+XIQ$Xa z-CmrYog8*_Najye6a|`Ao+*}!QCg=sI!a>h{TwRB6Mxw4h@6~L1A)M*AP8oFVHjXp7Mq)!6P~*gthNRm zCzCimNy6@M!0#VGVk83-Ha9V~>pI--HcCk8 nT`)MZX0zG;Ya?^pI{zC00DU<`2^Fi$00000NkvXXu0mjfgd$G7 literal 0 HcmV?d00001 diff --git a/lib/images/viewer/group_icon_200.png b/lib/images/viewer/group_icon_200.png new file mode 100644 index 0000000000000000000000000000000000000000..4acadb5e25e656331049d350fde82d0a708b19f1 GIT binary patch literal 781 zcmV+o1M>WdP)PK^VrL?I&zY7gIx6d<%}T`P%%6nr5666E7+4bjWfR zsg#JKdI6Kkgp8bl%Tb^eh$@K7ivm)Yf{isRC>ex&4`T2L3Ys9Yvm%zQgzU^||Zx1qAIU)!mE-s2t zRTc4*6S!R-6pJbhhF?Y#0piga&qs6wsgy8zdKyPsyCX5t-_?asD1?oTO|-YQY3o05 zmOO*eNMUbpXHrMtYxRX=v6$-du*P68h)0hf;auwiq3ZJA!p!sxva(FPQCnJC!a4$$ zWubWxhDQ74^BTrqjKfCTP=CE1qt8b%HT4ROjZHZIb`;jK0v!QKmn>(7gp?306-zic zh+yQ|2y#jRMv4OCsD|A^BfTpPk-a(snx@g+-LrUju%E89X&bdRRyi0j%oQkwb2u0V z9M7fwe*YrLhfaV*)@U?heSN*Z{u&Fjr2>bM2#${;uxgR+=xE2*MyQ{3BA?IeuRw~) z*W25(e9E0XX>M+qV5+MqRcou;?J7x9>ZwM!Y_VAW{u=*v{1jjSH=;nUG5D7B00000 LNkvXXu0mjft88R@ literal 0 HcmV?d00001 diff --git a/lib/images/viewer/group_icon_300.png b/lib/images/viewer/group_icon_300.png new file mode 100644 index 0000000000000000000000000000000000000000..d048e3ef49b75531b02a3a8bbefa000b422057f9 GIT binary patch literal 820 zcmV-41Izr0P)z@;o?%Qu_W%F@AY({UO#lFTB>(_`g8%^e{{R4h=l}px z2mk>USO5SzmjD14Z`WEMkN^Mzs!2paRCwB?lg&@l02s!f(yrY)&5R>k30X1G;cmnM z2?-kqgcylL{D{iYa2Dp33jspBXcQ8S7o!nOjD$ZxE<{2i@}+^m#xTo1*au}R-Dn4N z>*_@gq(|PQoF44ua!2Oig`xNKvLtl;pl098GKrfCQUL#VBF;a-mu$>eU;($cd1 zw6E$^h+Q~LPjVS6<$?K zsHx$Q&lm9S?R!*_6dv5a3!BY`jrC1991aAxHU)!&#>S@2L?QuA)3CC#1iSq*`UB74 z^ZW31dIrB1m!NAE2*Mujba!tW0J5S)a{D=yN@d9M30}T>gH$So=4LO(Mu*_>c#zoL z1!JNi2>THO;NT!Pk>1N7o85=SLc?rkF#T-?1N{LkE-s_9vmKIj0D=UzLt7IDfcJ(s zoJ{U&f{=sTeGPqmPf=ZMhttWy?RFz02>(x-*BTlc!Uh1(^N7b|VG~8*)5l4KLP7NQ zK0)AlKeD+ThKGj1^H&gyMZ+!^Z~R126rm_`pdicNOQjOVMqi+!S5PXcP?RE|6L2`H z5s8EXqA0@PfMr?ueE!+LJKF^-djXnO0Y%avNg7&3hm+%w*-IB%TYa-utJMflRTU&j zVs&-3hp(%JiDnRs$B;`8l0000%VDkn literal 0 HcmV?d00001 diff --git a/lib/images/viewer/group_icon_400.png b/lib/images/viewer/group_icon_400.png new file mode 100644 index 0000000000000000000000000000000000000000..8a44f0e2e943ee7ee64cb84953133679b369f97b GIT binary patch literal 1160 zcmV;31b6$1P)KLZ*U+=)p!fv7f#TG` zAxLl%!EgG`&*5<32cu%worY0{L9A7~=}6b}76Isk~1IN~P)K3@?4 z&zpALY4A7Z!>t0&I7qECf*j`WHIYAjW_h^ivJu4lvb8y9VL`DD`rG0ZKvcZ$L@8 zo)6*!Fng}&gE0q~LGCMnsiR8`P)pL0I_sTkS+y)n+TA3GuzwhmB zzGa-Xev)(e9 zOha0&w!5{pwQ_NB!FPCgWD5p2r>CZ-c6N4lFgZC103c2bj7H;fL&KGt#>U19olalW z+1WuH{C+=3 zl0-6@gkGnI+1#t(IQC*Ry5B5Yfo0jWAjC^No)xexi{abD5YuT;6a|$^g*C4iKkasC zsx@F3M&5xS2#KSkgOa_yU5t*7!sT+o<5>kw)5v5pxc}fD{zdn(`ezL!NuB~u6T>hZ z%knT73?K*s4#y&znwp`l)q)^M_3MB{}%K^2uS~th>g{`e^l$V#GzM&rT^LBJ~T|-O|P_Nfxdpisv zCSd-tNDLLomSilU%at1&n@z}sxLtIaKj&&D=mb2gJDlqxD03jO`k)6;!NK`PE15^>&l a{yzZpPdrNp87Hv-0000Px#24YJ`L;(K){{a7>y{D4^000SaNLh0L01FcU01FcV0GgZ_00007bV*G`2igS& z3ONX$GQ}GJ00N^)L_t(I%cYY~NEBfh#-DFTXZDY>ZvI7d6G==2$wOTP4WqzL3V}o` zCMe=1y$P}?Y?nQB$qsqx;6d09VPKcmPzW@FQgktK-4tm>8{OGlW}QFZeDih5gU!+R z^j_W{&%^sXgmaFoOu@x6F)@Lvsw%8ZPCoJw^4RNgJ?swz+%|yMnM}UO<$8B++iz}7 zO?_4r1(8Su06;DjjFy$j^`cnT>hX}q{(cm7c0vdQz$pbiJcJsLV{2gnS;p)vW0~P} zy5f?8Qb8ykUR)$ZlE6+*V97FURRw1ZYCH~iOAA`->!ELMx_&Gzl{zdOP->c~l$&!7 zy1x&9Z!e7PZ4gO9ML3LKeSIJv4|qP0lxdm|{@uAQ06T^uvuqaD@iC<4X3(P}d>ItJK#$vcG zNobTL6t%a**xd!?9EX&$!qAhX;|sxH5Z^T|d0Ud2K1Cw9#~7+-W>9TeF!%Nl35RjV z>%~`1OV-u~ok>&_1*euZW}TjX)NLCt!eQ6|blXOTF>uatLlm)+&ySTT3LF-^UN0(! zhvRFqoC^p7DCZ~uP)G>5Vy+Q>-U=kqxMrfEVD1iU>v>uxG9hldcXYZ}%y z4Mi>&dIJHx&*i!~=g@WCX+aPK2!ep%z|-aQ!iQ(~i;G{@h$1m<8#mo<{+rU#nt_33 hQ4}w=kzBRTe*v&CLC-*FK^Oo4002ovPDHLkV1fZuQknn& literal 0 HcmV?d00001 diff --git a/lib/images/viewer/group_icon_600.png b/lib/images/viewer/group_icon_600.png new file mode 100644 index 0000000000000000000000000000000000000000..d625f2ae9a51c479565b1ae9b69e9356bf8b016b GIT binary patch literal 757 zcmVPx#24YJ`L;(K){{a7>y{D4^000SaNLh0L01FcU01FcV0GgZ_00007bV*G`2igJ* z6eTpB4_40r00MPML_t(I%dL@1PZMzz#m{tRifsc8_5p1|tBDl}#D!ABLN-8%5iyXs z@l(h*A+R^7_*|5gnn*%~rUaCf2oY?XQmMnEowhTbVIG}-X~$I!QeEj;-FtG+FDJRc zKZ-hUgu}NUFbw<9YGv;Z3=CW_O%u`RirUiB5+Me8ytcj;{Ucy_c!+noyzZ{905vi) zgsa`%u-j}Pgg};LB$7$QVlk+iTGw^G^y2xv7XX+Bz;1WCW@e@-hG8L!WmE}4g#u1b zPf;uu(9z+=wr`nTO3z6o&iM*j}S zagb#hnx?_$>%>tm2SF4tICvXJhes%vCFJ?Md2f7trwO2FYNk{YAP6G1wzlDRyOGUi zp`0k_>+QwMSFb?`0mHCVfiGm50HRo$Jw85!Ae4~FWMLQv{60T|!65WX1)K3rNU{Wm zu~-s`-PuO&*B4e}tErxAJvF~SK^=;`07U@|&7#%mu*eB%>TKq>2C>-c;$Au_+Z=Xing)x722C@l)l9UuwIR>v<>lq& z#lHdoARdoTTnYw2Q8e=TJPHLKG{Ybq?#I{dFB9kQ>GMV|m)q~V-Y0lG7w^~|4$9;4 nA{4q}R;$LNNF?$G|64x+lSwgoDU!|z00000NkvXXu0mjfQ+r5d literal 0 HcmV?d00001 diff --git a/lib/images/viewer/group_server.png b/lib/images/viewer/group_server.png new file mode 100644 index 0000000000000000000000000000000000000000..ee155d63900fa803096cbef1b676fcfdb1e2ba48 GIT binary patch literal 1301 zcmV+w1?u{VP)KLZ*U+=)p!fv7f#TG` zAxLl%!EgG`&*5<32cu%worY0{L9A7~=}6b}76Isk~1IN~P)K3@?4 z&zpALY4A7Z!>t0&I7qECf*j`WHIYAjW_h^ivJu4lvb8y9VL`DD`rG0ZKvcZ$L@8 zo)6*!Fng}&gE0q~LGCMnsiR8`P)pL0I_sTkS+y)n+TA3Gs z;m-QHx4OD^)pgx>Pn>wN?0FuZ=W!V0!o`dF)zhab6bb}EKomv9aZIz>WO{mvih&IsnH91~5&5X_`z- zJS}EtXZv0E!Q|%V=Eu2Qj!Y(l_0-rHXXfT`_x5OpA&HbkQN%$IkftedED^$_T&|GI z<*;pA00i#v1s)YxVc{Gc`4Z z@B0KnK(SaP3`2q-KuSrHD3nszc7{04AY}}IQi?QHSh18e8V#z|DpE?a*({FZVB0pa zlt?Kt3@G3r? zot@NbH8DRwzqP%+eRpML|Y;0^&^{c2Pq2^a`TY_q1pN;!28#_ft(lXCK zJC2M(-g)nR^~I%2)0Rq8>h(I~;}hg^?ezBb63Li~U&E~)aAsq@mES07-_74!I$-v+sXie3xA%sb-6F^V0QIk>ZQjU;YZ z!mWdJZYFEKSQFg7@+rC9&~ z1As|HK~y-6b(4Ke6L%cOzxTWA>(T4AR-nLSOcSvoTQ;ID{y~7unkCCjoMvn+ zZko(x0XFu>$if0~$%dPW3F-xErkP7K5ovT?l(NzxeM6{@LM*hj^uTfN z_Wb!I&nMq+@;n%9(AVD?Dki7xO){zIkVqsV!;wgy2{yk_N=y(&EYN0`*$zYKHu;@R>-o?RA{UsTwvbV_x3VLmwr-KQTf}|!JZ2M0C*Ab z!k)dKhr|}M7EENn*S8b6sz%MVP_~3uc0Wa^}}O_mFZaEqbbLOFL& zgVj*@)Pmi33n4@y)8hDno8n>c$lVZqF$8fwxGQb(Su$*DOhIV`xfD~@*H!^S7!(Qu zuq+2WU)XU-2VzpLm_`#r6U;Q@0fq27)T0By1!AsQu*Ni+O-6wzX)|2Dc1bQlDViby zCooWyNP*+n{FPbYX|*bd7Oj8S;@{?4Z|jF|-0QwGB&;M_0RYN2tAZ3o(fy~-Vg!y| zL4*XhXw^W|N(cpmE&$;99J`eO0El`W#;6yJ8ykjjygJ~U|LgWBQwW4pO)@b+-S%o& z3Hageq~#ky5Rm@J7Y)Rd)hsHNN;j@26Fyu@*H9u{Q(3M8mSth=y0Q1nnbTus+Zwu} z(Z~w=ukf8I?-njwXdy7%r{1L8r7cx~XKprWU*U7dYIDjS7_}oiFjA6uKpZ++s?6m#g2TA}SHyVN< zl=KZ4dfxk>!&9SsO<(jMkE!n`rgYi2(kKy$<8`_^-{E)mMa@(9RexJ;b%{h`Pdpai lG4EaQn2hK903ck<{R?$-n^aiy?%@Cc002ovPDHLkV1ljZ^wR(U literal 0 HcmV?d00001 diff --git a/lib/images/viewer/server_full.png b/lib/images/viewer/server_full.png new file mode 100644 index 0000000000000000000000000000000000000000..bfec600d6c90a3f5939c1d78cc42818b99606065 GIT binary patch literal 774 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 Uqmv#V11e?kboFyt=akR{0M6YbivR!s literal 0 HcmV?d00001 diff --git a/lib/images/viewer/tree_end.gif b/lib/images/viewer/tree_end.gif new file mode 100644 index 0000000000000000000000000000000000000000..b89d56e122324da9072a7061dcf21fe2370e4abf GIT binary patch literal 61 zcmZ?wbhEHb6krfwXkcWR(o_Ba|9{1wER0+Xj0`#qKmd|qU=r!+U&;1*ztkN6OWm{h Oq<{0bJ$fO+U=08Ygc7g- literal 0 HcmV?d00001 diff --git a/lib/images/viewer/tree_line.gif b/lib/images/viewer/tree_line.gif new file mode 100644 index 0000000000000000000000000000000000000000..324204a9843c6101c09e88fa568aebb2b9826113 GIT binary patch literal 63 zcmZ?wbhEHb6krfwXkcWR(o_Ba|9{1wER0+Xj0`#qKmd|qU=r);U&;1*ztkN6OWiuh QsxH5COnA}b$jD#~06MP}1poj5 literal 0 HcmV?d00001 diff --git a/lib/images/viewer/tree_mid.gif b/lib/images/viewer/tree_mid.gif new file mode 100644 index 0000000000000000000000000000000000000000..2c8de45ad09863a82478ff340b0d97e2e43cf18a GIT binary patch literal 64 zcmZ?wbhEHb6krfwXkcWR(o_Ba|9{1wER0+Xj0`#qKmd|qU=r`?U&;1*ztkN6OWm{h Rq^)1aCRp^QJQZQE1^__P6G{L8 literal 0 HcmV?d00001 diff --git a/lib/libraries/TeamSpeak3/Adapter/Abstract.php b/lib/libraries/TeamSpeak3/Adapter/Abstract.php new file mode 100644 index 0000000..943f011 --- /dev/null +++ b/lib/libraries/TeamSpeak3/Adapter/Abstract.php @@ -0,0 +1,160 @@ +. + * + * @package TeamSpeak3 + * @version 1.1.23 + * @author Sven 'ScP' Paulsen + * @copyright Copyright (c) 2010 by Planet TeamSpeak. All rights reserved. + */ + +/** + * @class TeamSpeak3_Adapter_Abstract + * @brief Provides low-level methods for concrete adapters to communicate with a TeamSpeak 3 Server. + */ +abstract class TeamSpeak3_Adapter_Abstract +{ + /** + * Stores user-provided options. + * + * @var array + */ + protected $options = null; + + /** + * Stores an TeamSpeak3_Transport_Abstract object. + * + * @var TeamSpeak3_Transport_Abstract + */ + protected $transport = null; + + /** + * The TeamSpeak3_Adapter_Abstract constructor. + * + * @param array $options + * @return TeamSpeak3_Adapter_Abstract + */ + public function __construct(array $options) + { + $this->options = $options; + + if($this->transport === null) + { + $this->syn(); + } + } + + /** + * The TeamSpeak3_Adapter_Abstract destructor. + * + * @return void + */ + abstract public function __destruct(); + + /** + * Connects the TeamSpeak3_Transport_Abstract object and performs initial actions on the remote + * server. + * + * @throws TeamSpeak3_Adapter_Exception + * @return void + */ + abstract protected function syn(); + + /** + * Commit pending data. + * + * @return array + */ + public function __sleep() + { + return array("options"); + } + + /** + * Reconnects to the remote server. + * + * @return void + */ + public function __wakeup() + { + $this->syn(); + } + + /** + * Returns the profiler timer used for this connection adapter. + * + * @return TeamSpeak3_Helper_Profiler_Timer + */ + public function getProfiler() + { + return TeamSpeak3_Helper_Profiler::get(spl_object_hash($this)); + } + + /** + * Returns the transport object used for this connection adapter. + * + * @return TeamSpeak3_Transport_Abstract + */ + public function getTransport() + { + return $this->transport; + } + + /** + * Loads the transport object object used for the connection adapter and passes a given set + * of options. + * + * @param array $options + * @param string $transport + * @throws TeamSpeak3_Adapter_Exception + * @return void + */ + protected function initTransport($options, $transport = "TeamSpeak3_Transport_TCP") + { + if(!is_array($options)) + { + throw new TeamSpeak3_Adapter_Exception("transport parameters must provided in an array"); + } + + $this->transport = new $transport($options); + } + + /** + * Returns the hostname or IPv4 address the underlying TeamSpeak3_Transport_Abstract object + * is connected to. + * + * @return string + */ + public function getTransportHost() + { + return $this->getTransport()->getConfig("host", "0.0.0.0"); + } + + /** + * Returns the port number of the server the underlying TeamSpeak3_Transport_Abstract object + * is connected to. + * + * @return string + */ + public function getTransportPort() + { + return $this->getTransport()->getConfig("port", "0"); + } +} diff --git a/lib/libraries/TeamSpeak3/Adapter/Blacklist.php b/lib/libraries/TeamSpeak3/Adapter/Blacklist.php new file mode 100644 index 0000000..4054031 --- /dev/null +++ b/lib/libraries/TeamSpeak3/Adapter/Blacklist.php @@ -0,0 +1,119 @@ +. + * + * @package TeamSpeak3 + * @version 1.1.23 + * @author Sven 'ScP' Paulsen + * @copyright Copyright (c) 2010 by Planet TeamSpeak. All rights reserved. + */ + +/** + * @class TeamSpeak3_Adapter_Blacklist + * @brief Provides methods to check if an IP address is currently blacklisted. + */ +class TeamSpeak3_Adapter_Blacklist extends TeamSpeak3_Adapter_Abstract +{ + /** + * The IPv4 address or FQDN of the TeamSpeak Systems update server. + * + * @var string + */ + protected $default_host = "blacklist.teamspeak.com"; + + /** + * The UDP port number of the TeamSpeak Systems update server. + * + * @var integer + */ + protected $default_port = 17385; + + /** + * Stores an array containing the latest build numbers. + * + * @var array + */ + protected $build_numbers = null; + + /** + * Connects the TeamSpeak3_Transport_Abstract object and performs initial actions on the remote + * server. + * + * @return void + */ + public function syn() + { + if(!isset($this->options["host"]) || empty($this->options["host"])) $this->options["host"] = $this->default_host; + if(!isset($this->options["port"]) || empty($this->options["port"])) $this->options["port"] = $this->default_port; + + $this->initTransport($this->options, "TeamSpeak3_Transport_UDP"); + $this->transport->setAdapter($this); + + TeamSpeak3_Helper_Profiler::init(spl_object_hash($this)); + + TeamSpeak3_Helper_Signal::getInstance()->emit("blacklistConnected", $this); + } + + /** + * The TeamSpeak3_Adapter_Blacklist destructor. + * + * @return void + */ + public function __destruct() + { + if($this->getTransport() instanceof TeamSpeak3_Transport_Abstract && $this->getTransport()->isConnected()) + { + $this->getTransport()->disconnect(); + } + } + + /** + * Returns TRUE if a specified $host IP address is currently blacklisted. + * + * @param string $host + * @throws TeamSpeak3_Adapter_Blacklist_Exception + * @return boolean + */ + public function isBlacklisted($host) + { + if(ip2long($host) === FALSE) + { + $addr = gethostbyname($host); + + if($addr == $host) + { + throw new TeamSpeak3_Adapter_Blacklist_Exception("unable to resolve IPv4 address (" . $host . ")"); + } + + $host = $addr; + } + + $this->getTransport()->send("ip4:" . $host); + $repl = $this->getTransport()->read(1); + $this->getTransport()->disconnect(); + + if(!count($repl)) + { + return FALSE; + } + + return ($repl->toInt()) ? FALSE : TRUE; + } +} diff --git a/lib/libraries/TeamSpeak3/Adapter/Blacklist/Exception.php b/lib/libraries/TeamSpeak3/Adapter/Blacklist/Exception.php new file mode 100644 index 0000000..f9b9ef6 --- /dev/null +++ b/lib/libraries/TeamSpeak3/Adapter/Blacklist/Exception.php @@ -0,0 +1,32 @@ +. + * + * @package TeamSpeak3 + * @version 1.1.23 + * @author Sven 'ScP' Paulsen + * @copyright Copyright (c) 2010 by Planet TeamSpeak. All rights reserved. + */ + +/** + * @class TeamSpeak3_Adapter_Blacklist_Exception + * @brief Enhanced exception class for TeamSpeak3_Adapter_Blacklist objects. + */ +class TeamSpeak3_Adapter_Blacklist_Exception extends TeamSpeak3_Adapter_Exception {} diff --git a/lib/libraries/TeamSpeak3/Adapter/Exception.php b/lib/libraries/TeamSpeak3/Adapter/Exception.php new file mode 100644 index 0000000..a6d4f46 --- /dev/null +++ b/lib/libraries/TeamSpeak3/Adapter/Exception.php @@ -0,0 +1,32 @@ +. + * + * @package TeamSpeak3 + * @version 1.1.23 + * @author Sven 'ScP' Paulsen + * @copyright Copyright (c) 2010 by Planet TeamSpeak. All rights reserved. + */ + +/** + * @class TeamSpeak3_Adapter_Exception + * @brief Enhanced exception class for TeamSpeak3_Adapter_Abstract objects. + */ +class TeamSpeak3_Adapter_Exception extends TeamSpeak3_Exception {} diff --git a/lib/libraries/TeamSpeak3/Adapter/FileTransfer.php b/lib/libraries/TeamSpeak3/Adapter/FileTransfer.php new file mode 100644 index 0000000..4c2a7a9 --- /dev/null +++ b/lib/libraries/TeamSpeak3/Adapter/FileTransfer.php @@ -0,0 +1,190 @@ +. + * + * @package TeamSpeak3 + * @version 1.1.23 + * @author Sven 'ScP' Paulsen + * @copyright Copyright (c) 2010 by Planet TeamSpeak. All rights reserved. + */ + +/** + * @class TeamSpeak3_Adapter_FileTransfer + * @brief Provides low-level methods for file transfer communication with a TeamSpeak 3 Server. + */ +class TeamSpeak3_Adapter_FileTransfer extends TeamSpeak3_Adapter_Abstract +{ + /** + * Connects the TeamSpeak3_Transport_Abstract object and performs initial actions on the remote + * server. + * + * @throws TeamSpeak3_Adapter_Exception + * @return void + */ + public function syn() + { + $this->initTransport($this->options); + $this->transport->setAdapter($this); + + TeamSpeak3_Helper_Profiler::init(spl_object_hash($this)); + + TeamSpeak3_Helper_Signal::getInstance()->emit("filetransferConnected", $this); + } + + /** + * The TeamSpeak3_Adapter_FileTransfer destructor. + * + * @return void + */ + public function __destruct() + { + if($this->getTransport() instanceof TeamSpeak3_Transport_Abstract && $this->getTransport()->isConnected()) + { + $this->getTransport()->disconnect(); + } + } + + /** + * Sends a valid file transfer key to the server to initialize the file transfer. + * + * @param string $ftkey + * @throws TeamSpeak3_Adapter_FileTransfer_Exception + * @return void + */ + protected function init($ftkey) + { + if(strlen($ftkey) != 32) + { + throw new TeamSpeak3_Adapter_FileTransfer_Exception("invalid file transfer key format"); + } + + $this->getProfiler()->start(); + $this->getTransport()->send($ftkey); + + TeamSpeak3_Helper_Signal::getInstance()->emit("filetransferHandshake", $this); + } + + /** + * Sends the content of a file to the server. + * + * @param string $ftkey + * @param integer $seek + * @param string $data + * @throws TeamSpeak3_Adapter_FileTransfer_Exception + * @return void + */ + public function upload($ftkey, $seek, $data) + { + $this->init($ftkey); + + $size = strlen($data); + $seek = intval($seek); + $pack = 4096; + + TeamSpeak3_Helper_Signal::getInstance()->emit("filetransferUploadStarted", $ftkey, $seek, $size); + + for(;$seek < $size;) + { + $rest = $size-$seek; + $pack = $rest < $pack ? $rest : $pack; + $buff = substr($data, $seek, $pack); + $seek = $seek+$pack; + + $this->getTransport()->send($buff); + + TeamSpeak3_Helper_Signal::getInstance()->emit("filetransferUploadProgress", $ftkey, $seek, $size); + } + + $this->getProfiler()->stop(); + + TeamSpeak3_Helper_Signal::getInstance()->emit("filetransferUploadFinished", $ftkey, $seek, $size); + + if($seek < $size) + { + throw new TeamSpeak3_Adapter_FileTransfer_Exception("incomplete file upload (" . $seek . " of " . $size . " bytes)"); + } + } + + /** + * Returns the content of a downloaded file as a TeamSpeak3_Helper_String object. + * + * @param string $ftkey + * @param integer $size + * @param boolean $passthru + * @throws TeamSpeak3_Adapter_FileTransfer_Exception + * @return TeamSpeak3_Helper_String + */ + public function download($ftkey, $size, $passthru = FALSE) + { + $this->init($ftkey); + + if($passthru) + { + return $this->passthru($size); + } + + $buff = new TeamSpeak3_Helper_String(""); + $size = intval($size); + $pack = 4096; + + TeamSpeak3_Helper_Signal::getInstance()->emit("filetransferDownloadStarted", $ftkey, count($buff), $size); + + for($seek = 0;$seek < $size;) + { + $rest = $size-$seek; + $pack = $rest < $pack ? $rest : $pack; + $data = $this->getTransport()->read($rest < $pack ? $rest : $pack); + $seek = $seek+$pack; + + $buff->append($data); + + TeamSpeak3_Helper_Signal::getInstance()->emit("filetransferDownloadProgress", $ftkey, count($buff), $size); + } + + $this->getProfiler()->stop(); + + TeamSpeak3_Helper_Signal::getInstance()->emit("filetransferDownloadFinished", $ftkey, count($buff), $size); + + if(strlen($buff) != $size) + { + throw new TeamSpeak3_Adapter_FileTransfer_Exception("incomplete file download (" . count($buff) . " of " . $size . " bytes)"); + } + + return $buff; + } + + /** + * Outputs all remaining data on a TeamSpeak 3 file transfer stream using PHP's fpassthru() + * function. + * + * @param integer $size + * @throws TeamSpeak3_Adapter_FileTransfer_Exception + * @return void + */ + protected function passthru($size) + { + $buff_size = fpassthru($this->getTransport()->getStream()); + + if($buff_size != $size) + { + throw new TeamSpeak3_Adapter_FileTransfer_Exception("incomplete file download (" . intval($buff_size) . " of " . $size . " bytes)"); + } + } +} diff --git a/lib/libraries/TeamSpeak3/Adapter/FileTransfer/Exception.php b/lib/libraries/TeamSpeak3/Adapter/FileTransfer/Exception.php new file mode 100644 index 0000000..0ae9200 --- /dev/null +++ b/lib/libraries/TeamSpeak3/Adapter/FileTransfer/Exception.php @@ -0,0 +1,32 @@ +. + * + * @package TeamSpeak3 + * @version 1.1.23 + * @author Sven 'ScP' Paulsen + * @copyright Copyright (c) 2010 by Planet TeamSpeak. All rights reserved. + */ + +/** + * @class TeamSpeak3_Adapter_FileTransfer_Exception + * @brief Enhanced exception class for TeamSpeak3_Adapter_FileTransfer objects. + */ +class TeamSpeak3_Adapter_FileTransfer_Exception extends TeamSpeak3_Adapter_Exception {} diff --git a/lib/libraries/TeamSpeak3/Adapter/ServerQuery.php b/lib/libraries/TeamSpeak3/Adapter/ServerQuery.php new file mode 100644 index 0000000..2064281 --- /dev/null +++ b/lib/libraries/TeamSpeak3/Adapter/ServerQuery.php @@ -0,0 +1,261 @@ +. + * + * @package TeamSpeak3 + * @version 1.1.23 + * @author Sven 'ScP' Paulsen + * @copyright Copyright (c) 2010 by Planet TeamSpeak. All rights reserved. + */ + +/** + * @class TeamSpeak3_Adapter_ServerQuery + * @brief Provides low-level methods for ServerQuery communication with a TeamSpeak 3 Server. + */ +class TeamSpeak3_Adapter_ServerQuery extends TeamSpeak3_Adapter_Abstract +{ + /** + * Stores a singleton instance of the active TeamSpeak3_Node_Host object. + * + * @var TeamSpeak3_Node_Host + */ + protected $host = null; + + /** + * Stores the timestamp of the last command. + * + * @var integer + */ + protected $timer = null; + + /** + * Number of queries executed on the server. + * + * @var integer + */ + protected $count = 0; + + /** + * Stores an array with unsupported commands. + * + * @var array + */ + protected $block = array("help"); + + /** + * Connects the TeamSpeak3_Transport_Abstract object and performs initial actions on the remote + * server. + * + * @throws TeamSpeak3_Adapter_Exception + * @return void + */ + protected function syn() + { + $this->initTransport($this->options); + $this->transport->setAdapter($this); + + TeamSpeak3_Helper_Profiler::init(spl_object_hash($this)); + + if(!$this->getTransport()->readLine()->startsWith(TeamSpeak3::READY)) + { + throw new TeamSpeak3_Adapter_Exception("invalid reply from the server"); + } + + TeamSpeak3_Helper_Signal::getInstance()->emit("serverqueryConnected", $this); + } + + /** + * The TeamSpeak3_Adapter_ServerQuery destructor. + * + * @return void + */ + public function __destruct() + { + if($this->getTransport() instanceof TeamSpeak3_Transport_Abstract && $this->transport->isConnected()) + { + try + { + $this->request("quit"); + } + catch(Exception $e) + { + return; + } + } + } + + /** + * Sends a prepared command to the server and returns the result. + * + * @param string $cmd + * @param boolean $throw + * @throws TeamSpeak3_Adapter_Exception + * @return TeamSpeak3_Adapter_ServerQuery_Reply + */ + public function request($cmd, $throw = TRUE) + { + $query = TeamSpeak3_Helper_String::factory($cmd)->section(TeamSpeak3::SEPARATOR_CELL); + + if(strstr($cmd, "\r") || strstr($cmd, "\n")) + { + throw new TeamSpeak3_Adapter_Exception("illegal characters in command '" . $query . "'"); + } + elseif(in_array($query, $this->block)) + { + throw new TeamSpeak3_Adapter_ServerQuery_Exception("command not found", 0x100); + } + + TeamSpeak3_Helper_Signal::getInstance()->emit("serverqueryCommandStarted", $cmd); + + $this->getProfiler()->start(); + $this->getTransport()->sendLine($cmd); + $this->timer = time(); + $this->count++; + + $rpl = array(); + + do { + $str = $this->getTransport()->readLine(); + $rpl[] = $str; + } while($str instanceof TeamSpeak3_Helper_String && $str->section(TeamSpeak3::SEPARATOR_CELL) != TeamSpeak3::ERROR); + + $this->getProfiler()->stop(); + + $reply = new TeamSpeak3_Adapter_ServerQuery_Reply($rpl, $cmd, $this->getHost(), $throw); + + TeamSpeak3_Helper_Signal::getInstance()->emit("serverqueryCommandFinished", $cmd, $reply); + + return $reply; + } + + /** + * Waits for the server to send a notification message and returns the result. + * + * @throws TeamSpeak3_Adapter_Exception + * @return TeamSpeak3_Adapter_ServerQuery_Event + */ + public function wait() + { + if($this->getTransport()->getConfig("blocking")) + { + throw new TeamSpeak3_Adapter_Exception("only available in non-blocking mode"); + } + + do { + $evt = $this->getTransport()->readLine(); + } while($evt instanceof TeamSpeak3_Helper_String && !$evt->section(TeamSpeak3::SEPARATOR_CELL)->startsWith(TeamSpeak3::EVENT)); + + return new TeamSpeak3_Adapter_ServerQuery_Event($evt, $this->getHost()); + } + + /** + * Uses given parameters and returns a prepared ServerQuery command. + * + * @param string $cmd + * @param array $params + * @return string + */ + public function prepare($cmd, array $params = array()) + { + $args = array(); + $cells = array(); + + foreach($params as $ident => $value) + { + $ident = is_numeric($ident) ? "" : strtolower($ident) . TeamSpeak3::SEPARATOR_PAIR; + + if(is_array($value)) + { + $value = array_values($value); + + for($i = 0; $i < count($value); $i++) + { + if($value[$i] === null) continue; + elseif($value[$i] === FALSE) $value[$i] = 0x00; + elseif($value[$i] === TRUE) $value[$i] = 0x01; + elseif($value[$i] instanceof TeamSpeak3_Node_Abstract) $value[$i] = $value[$i]->getId(); + + $cells[$i][] = $ident . TeamSpeak3_Helper_String::factory($value[$i])->escape()->toUtf8(); + } + } + else + { + if($value === null) continue; + elseif($value === FALSE) $value = 0x00; + elseif($value === TRUE) $value = 0x01; + elseif($value instanceof TeamSpeak3_Node_Abstract) $value = $value->getId(); + + $args[] = $ident . TeamSpeak3_Helper_String::factory($value)->escape()->toUtf8(); + } + } + + foreach(array_keys($cells) as $ident) $cells[$ident] = implode(TeamSpeak3::SEPARATOR_CELL, $cells[$ident]); + + if(count($args)) $cmd .= " " . implode(TeamSpeak3::SEPARATOR_CELL, $args); + if(count($cells)) $cmd .= " " . implode(TeamSpeak3::SEPARATOR_LIST, $cells); + + return trim($cmd); + } + + /** + * Returns the timestamp of the last command. + * + * @return integer + */ + public function getQueryLastTimestamp() + { + return $this->timer; + } + + /** + * Returns the number of queries executed on the server. + * + * @return integer + */ + public function getQueryCount() + { + return $this->count; + } + + /** + * Returns the total runtime of all queries. + * + * @return mixed + */ + public function getQueryRuntime() + { + return $this->getProfiler()->getRuntime(); + } + + /** + * Returns the TeamSpeak3_Node_Host object of the current connection. + * + * @return TeamSpeak3_Node_Host + */ + public function getHost() + { + if($this->host === null) + { + $this->host = new TeamSpeak3_Node_Host($this); + } + + return $this->host; + } +} diff --git a/lib/libraries/TeamSpeak3/Adapter/ServerQuery/Event.php b/lib/libraries/TeamSpeak3/Adapter/ServerQuery/Event.php new file mode 100644 index 0000000..191b37c --- /dev/null +++ b/lib/libraries/TeamSpeak3/Adapter/ServerQuery/Event.php @@ -0,0 +1,170 @@ +. + * + * @package TeamSpeak3 + * @version 1.1.23 + * @author Sven 'ScP' Paulsen + * @copyright Copyright (c) 2010 by Planet TeamSpeak. All rights reserved. + */ + +/** + * @class TeamSpeak3_Adapter_ServerQuery_Event + * @brief Provides methods to analyze and format a ServerQuery event. + */ +class TeamSpeak3_Adapter_ServerQuery_Event implements ArrayAccess +{ + /** + * Stores the event type. + * + * @var TeamSpeak3_Helper_String + */ + protected $type = null; + + /** + * Stores the event data. + * + * @var array + */ + protected $data = null; + + /** + * Stores the event data as an unparsed string. + * + * @var TeamSpeak3_Helper_String + */ + protected $mesg = null; + + /** + * Creates a new TeamSpeak3_Adapter_ServerQuery_Event object. + * + * @param TeamSpeak3_Helper_String $evt + * @param TeamSpeak3_Node_Host $con + * @throws TeamSpeak3_Adapter_Exception + * @return TeamSpeak3_Adapter_ServerQuery_Event + */ + public function __construct(TeamSpeak3_Helper_String $evt, TeamSpeak3_Node_Host $con = null) + { + if(!$evt->startsWith(TeamSpeak3::EVENT)) + { + throw new TeamSpeak3_Adapter_Exception("invalid notification event format"); + } + + list($type, $data) = $evt->split(TeamSpeak3::SEPARATOR_CELL, 2); + + if(empty($data)) + { + throw new TeamSpeak3_Adapter_Exception("invalid notification event data"); + } + + $fake = new TeamSpeak3_Helper_String(TeamSpeak3::ERROR . TeamSpeak3::SEPARATOR_CELL . "id" . TeamSpeak3::SEPARATOR_PAIR . 0 . TeamSpeak3::SEPARATOR_CELL . "msg" . TeamSpeak3::SEPARATOR_PAIR . "ok"); + $repl = new TeamSpeak3_Adapter_ServerQuery_Reply(array($data, $fake), $type); + + $this->type = $type->substr(strlen(TeamSpeak3::EVENT)); + $this->data = $repl->toList(); + $this->mesg = $data; + + TeamSpeak3_Helper_Signal::getInstance()->emit("notifyEvent", $this, $con); + TeamSpeak3_Helper_Signal::getInstance()->emit("notify" . ucfirst($this->type), $this, $con); + } + + /** + * Returns the event type string. + * + * @return TeamSpeak3_Helper_String + */ + public function getType() + { + return $this->type; + } + + /** + * Returns the event data array. + * + * @return array + */ + public function getData() + { + return $this->data; + } + + /** + * Returns the event data as an unparsed string. + * + * @return TeamSpeak3_Helper_String + */ + public function getMessage() + { + return $this->mesg; + } + + /** + * @ignore + */ + public function offsetExists($offset) + { + return array_key_exists($offset, $this->data) ? TRUE : FALSE; + } + + /** + * @ignore + */ + public function offsetGet($offset) + { + if(!$this->offsetExists($offset)) + { + throw new TeamSpeak3_Adapter_ServerQuery_Exception("invalid parameter", 0x602); + } + + return $this->data[$offset]; + } + + /** + * @ignore + */ + public function offsetSet($offset, $value) + { + throw new TeamSpeak3_Node_Exception("event '" . $this->getType() . "' is read only"); + } + + /** + * @ignore + */ + public function offsetUnset($offset) + { + unset($this->data[$offset]); + } + + /** + * @ignore + */ + public function __get($offset) + { + return $this->offsetGet($offset); + } + + /** + * @ignore + */ + public function __set($offset, $value) + { + $this->offsetSet($offset, $value); + } +} diff --git a/lib/libraries/TeamSpeak3/Adapter/ServerQuery/Exception.php b/lib/libraries/TeamSpeak3/Adapter/ServerQuery/Exception.php new file mode 100644 index 0000000..5886f34 --- /dev/null +++ b/lib/libraries/TeamSpeak3/Adapter/ServerQuery/Exception.php @@ -0,0 +1,32 @@ +. + * + * @package TeamSpeak3 + * @version 1.1.23 + * @author Sven 'ScP' Paulsen + * @copyright Copyright (c) 2010 by Planet TeamSpeak. All rights reserved. + */ + +/** + * @class TeamSpeak3_Adapter_ServerQuery_Exception + * @brief Enhanced exception class for TeamSpeak3_Adapter_ServerQuery objects. + */ +class TeamSpeak3_Adapter_ServerQuery_Exception extends TeamSpeak3_Adapter_Exception {} diff --git a/lib/libraries/TeamSpeak3/Adapter/ServerQuery/Reply.php b/lib/libraries/TeamSpeak3/Adapter/ServerQuery/Reply.php new file mode 100644 index 0000000..cdcdea9 --- /dev/null +++ b/lib/libraries/TeamSpeak3/Adapter/ServerQuery/Reply.php @@ -0,0 +1,346 @@ +. + * + * @package TeamSpeak3 + * @version 1.1.23 + * @author Sven 'ScP' Paulsen + * @copyright Copyright (c) 2010 by Planet TeamSpeak. All rights reserved. + */ + +/** + * @class TeamSpeak3_Adapter_ServerQuery_Reply + * @brief Provides methods to analyze and format a ServerQuery reply. + */ +class TeamSpeak3_Adapter_ServerQuery_Reply +{ + /** + * Stores the command used to get this reply. + * + * @var TeamSpeak3_Helper_String + */ + protected $cmd = null; + + /** + * Stores the servers reply (if available). + * + * @var TeamSpeak3_Helper_String + */ + protected $rpl = null; + + /** + * Stores connected TeamSpeak3_Node_Host object. + * + * @var TeamSpeak3_Node_Host + */ + protected $con = null; + + /** + * Stores an assoc array containing the error info for this reply. + * + * @var array + */ + protected $err = array(); + + /** + * Sotres an array of events that occured before or during this reply. + * + * @var array + */ + protected $evt = array(); + + /** + * Indicates whether exceptions should be thrown or not. + * + * @var boolean + */ + protected $exp = TRUE; + + /** + * Creates a new TeamSpeak3_Adapter_ServerQuery_Reply object. + * + * @param array $rpl + * @param string $cmd + * @param boolean $exp + * @param TeamSpeak3_Node_Host $con + * @return TeamSpeak3_Adapter_ServerQuery_Reply + */ + public function __construct(array $rpl, $cmd = null, TeamSpeak3_Node_Host $con = null, $exp = TRUE) + { + $this->cmd = new TeamSpeak3_Helper_String($cmd); + $this->con = $con; + $this->exp = (bool) $exp; + + $this->fetchError(array_pop($rpl)); + $this->fetchReply($rpl); + } + + /** + * Returns the reply as an TeamSpeak3_Helper_String object. + * + * @return TeamSpeak3_Helper_String + */ + public function toString() + { + return (!func_num_args()) ? $this->rpl->unescape() : $this->rpl; + } + + /** + * Returns the reply as a standard PHP array where each element represents one item. + * + * @return array + */ + public function toLines() + { + if(!count($this->rpl)) return array(); + + $list = $this->toString(0)->split(TeamSpeak3::SEPARATOR_LIST); + + if(!func_num_args()) + { + for($i = 0; $i < count($list); $i++) $list[$i]->unescape(); + } + + return $list; + } + + /** + * Returns the reply as a standard PHP array where each element represents one item in table format. + * + * @return array + */ + public function toTable() + { + $table = array(); + + foreach($this->toLines(0) as $cells) + { + $pairs = $cells->split(TeamSpeak3::SEPARATOR_CELL); + + if(!func_num_args()) + { + for($i = 0; $i < count($pairs); $i++) $pairs[$i]->unescape(); + } + + $table[] = $pairs; + } + + return $table; + } + + /** + * Returns a multi-dimensional array containing the reply splitted in multiple rows and columns. + * + * @return array + */ + public function toArray() + { + $array = array(); + $table = $this->toTable(1); + + for($i = 0; $i < count($table); $i++) + { + foreach($table[$i] as $pair) + { + if(!count($pair)) + { + continue; + } + + if(!$pair->contains(TeamSpeak3::SEPARATOR_PAIR)) + { + $array[$i][$pair->toString()] = null; + } + else + { + list($ident, $value) = $pair->split(TeamSpeak3::SEPARATOR_PAIR, 2); + + $array[$i][$ident->toString()] = $value->isInt() ? $value->toInt() : (!func_num_args() ? $value->unescape() : $value); + } + } + } + + return $array; + } + + /** + * Returns a multi-dimensional assoc array containing the reply splitted in multiple rows and columns. + * The identifier specified by key will be used while indexing the array. + * + * @param $key + * @return array + */ + public function toAssocArray($ident) + { + $nodes = (func_num_args() > 1) ? $this->toArray(1) : $this->toArray(); + $array = array(); + + foreach($nodes as $node) + { + if(array_key_exists($ident, $node)) + { + $array[(is_object($node[$ident])) ? $node[$ident]->toString() : $node[$ident]] = $node; + } + else + { + throw new TeamSpeak3_Adapter_ServerQuery_Exception("invalid parameter", 0x602); + } + } + + return $array; + } + + /** + * Returns an array containing the reply splitted in multiple rows and columns. + * + * @return array + */ + public function toList() + { + $array = func_num_args() ? $this->toArray(1) : $this->toArray(); + + if(count($array) == 1) + { + return array_shift($array); + } + + return $array; + } + + /** + * Returns an array containing stdClass objects. + * + * @return ArrayObject + */ + public function toObjectArray() + { + $array = (func_num_args() > 1) ? $this->toArray(1) : $this->toArray(); + + for($i = 0; $i < count($array); $i++) + { + $array[$i] = (object) $array[$i]; + } + + return $array; + } + + /** + * Returns the command used to get this reply. + * + * @return TeamSpeak3_Helper_String + */ + public function getCommandString() + { + return new TeamSpeak3_Helper_String($this->cmd); + } + + /** + * Returns an array of events that occured before or during this reply. + * + * @return array + */ + public function getNotifyEvents() + { + return $this->evt; + } + + /** + * Returns the value for a specified error property. + * + * @param string $ident + * @param mixed $default + * @return mixed + */ + public function getErrorProperty($ident, $default = null) + { + return (array_key_exists($ident, $this->err)) ? $this->err[$ident] : $default; + } + + /** + * Parses a ServerQuery error and throws a TeamSpeak3_Adapter_ServerQuery_Exception object if + * there's an error. + * + * @param string $err + * @throws TeamSpeak3_Adapter_ServerQuery_Exception + * @return void + */ + protected function fetchError($err) + { + $cells = $err->section(TeamSpeak3::SEPARATOR_CELL, 1, 3); + + foreach($cells->split(TeamSpeak3::SEPARATOR_CELL) as $pair) + { + list($ident, $value) = $pair->split(TeamSpeak3::SEPARATOR_PAIR); + + $this->err[$ident->toString()] = $value->isInt() ? $value->toInt() : $value->unescape(); + } + + TeamSpeak3_Helper_Signal::getInstance()->emit("notifyError", $this); + + if($this->getErrorProperty("id", 0x00) != 0x00 && $this->exp) + { + if($permid = $this->getErrorProperty("failed_permid")) + { + if($permsid = key($this->con->request("permget permid=" . $permid, FALSE)->toAssocArray("permsid"))) + { + $suffix = " (failed on " . $permsid . ")"; + } + else + { + $suffix = " (failed on " . $this->cmd->section(TeamSpeak3::SEPARATOR_CELL) . " " . $permid . "/0x" . strtoupper(dechex($permid)) . ")"; + } + } + elseif($details = $this->getErrorProperty("extra_msg")) + { + $suffix = " (" . trim($details) . ")"; + } + else + { + $suffix = ""; + } + + throw new TeamSpeak3_Adapter_ServerQuery_Exception($this->getErrorProperty("msg") . $suffix, $this->getErrorProperty("id")); + } + } + + /** + * Parses a ServerQuery reply and creates a TeamSpeak3_Helper_String object. + * + * @param string $rpl + * @return void + */ + protected function fetchReply($rpl) + { + foreach($rpl as $key => $val) + { + if($val->startsWith(TeamSpeak3::GREET)) + { + unset($rpl[$key]); + } + elseif($val->startsWith(TeamSpeak3::EVENT)) + { + $this->evt[] = new TeamSpeak3_Adapter_ServerQuery_Event($rpl[$key], $this->con); + unset($rpl[$key]); + } + } + + $this->rpl = new TeamSpeak3_Helper_String(implode(TeamSpeak3::SEPARATOR_LIST, $rpl)); + } +} diff --git a/lib/libraries/TeamSpeak3/Adapter/TSDNS.php b/lib/libraries/TeamSpeak3/Adapter/TSDNS.php new file mode 100644 index 0000000..bbef31b --- /dev/null +++ b/lib/libraries/TeamSpeak3/Adapter/TSDNS.php @@ -0,0 +1,95 @@ +. + * + * @package TeamSpeak3 + * @version 1.1.23 + * @author Sven 'ScP' Paulsen + * @copyright Copyright (c) 2010 by Planet TeamSpeak. All rights reserved. + */ + +/** + * @class TeamSpeak3_Adapter_TSDNS + * @brief Provides methods to query a TSDNS server. + */ +class TeamSpeak3_Adapter_TSDNS extends TeamSpeak3_Adapter_Abstract +{ + /** + * The TCP port number used by any TSDNS server. + * + * @var integer + */ + protected $default_port = 41144; + + /** + * Connects the TeamSpeak3_Transport_Abstract object and performs initial actions on the remote + * server. + * + * @throws TeamSpeak3_Adapter_Exception + * @return void + */ + public function syn() + { + if(!isset($this->options["port"]) || empty($this->options["port"])) $this->options["port"] = $this->default_port; + + $this->initTransport($this->options); + $this->transport->setAdapter($this); + + TeamSpeak3_Helper_Profiler::init(spl_object_hash($this)); + + TeamSpeak3_Helper_Signal::getInstance()->emit("tsdnsConnected", $this); + } + + /** + * The TeamSpeak3_Adapter_FileTransfer destructor. + * + * @return void + */ + public function __destruct() + { + if($this->getTransport() instanceof TeamSpeak3_Transport_Abstract && $this->getTransport()->isConnected()) + { + $this->getTransport()->disconnect(); + } + } + + /** + * Queries the TSDNS server for a specified virtual hostname and returns the result. + * + * @param string $tsdns + * @throws TeamSpeak3_Adapter_TSDNS_Exception + * @return TeamSpeak3_Helper_String + */ + public function resolve($tsdns) + { + $this->getTransport()->sendLine($tsdns); + $repl = $this->getTransport()->readLine(); + $this->getTransport()->disconnect(); + + if($repl->section(":", 0)->toInt() == 404) + { + throw new TeamSpeak3_Adapter_TSDNS_Exception("unable to resolve TSDNS hostname (" . $tsdns . ")"); + } + + TeamSpeak3_Helper_Signal::getInstance()->emit("tsdnsResolved", $tsdns, $repl); + + return $repl; + } +} diff --git a/lib/libraries/TeamSpeak3/Adapter/TSDNS/Exception.php b/lib/libraries/TeamSpeak3/Adapter/TSDNS/Exception.php new file mode 100644 index 0000000..61ace62 --- /dev/null +++ b/lib/libraries/TeamSpeak3/Adapter/TSDNS/Exception.php @@ -0,0 +1,32 @@ +. + * + * @package TeamSpeak3 + * @version 1.1.23 + * @author Sven 'ScP' Paulsen + * @copyright Copyright (c) 2010 by Planet TeamSpeak. All rights reserved. + */ + +/** + * @class TeamSpeak3_Adapter_TSDNS_Exception + * @brief Enhanced exception class for TeamSpeak3_Adapter_TSDNS objects. + */ +class TeamSpeak3_Adapter_TSDNS_Exception extends TeamSpeak3_Adapter_Exception {} diff --git a/lib/libraries/TeamSpeak3/Adapter/Update.php b/lib/libraries/TeamSpeak3/Adapter/Update.php new file mode 100644 index 0000000..3c29937 --- /dev/null +++ b/lib/libraries/TeamSpeak3/Adapter/Update.php @@ -0,0 +1,217 @@ +. + * + * @package TeamSpeak3 + * @version 1.1.23 + * @author Sven 'ScP' Paulsen + * @copyright Copyright (c) 2010 by Planet TeamSpeak. All rights reserved. + */ + +/** + * @class TeamSpeak3_Adapter_Update + * @brief Provides methods to query the latest TeamSpeak 3 build numbers from the master server. + */ +class TeamSpeak3_Adapter_Update extends TeamSpeak3_Adapter_Abstract +{ + /** + * The IPv4 address or FQDN of the TeamSpeak Systems update server. + * + * @var string + */ + protected $default_host = "update.teamspeak.com"; + + /** + * The UDP port number of the TeamSpeak Systems update server. + * + * @var integer + */ + protected $default_port = 17384; + + /** + * Stores an array containing the latest build numbers (integer timestamps). + * + * @var array + */ + protected $build_datetimes = null; + + /** + * Stores an array containing the latest version strings. + * + * @var array + */ + protected $version_strings = null; + + /** + * Connects the TeamSpeak3_Transport_Abstract object and performs initial actions on the remote + * server. + * + * @throws TeamSpeak3_Adapter_Update_Exception + * @return void + */ + public function syn() + { + if(!isset($this->options["host"]) || empty($this->options["host"])) $this->options["host"] = $this->default_host; + if(!isset($this->options["port"]) || empty($this->options["port"])) $this->options["port"] = $this->default_port; + + $this->initTransport($this->options, "TeamSpeak3_Transport_UDP"); + $this->transport->setAdapter($this); + + TeamSpeak3_Helper_Profiler::init(spl_object_hash($this)); + + $this->getTransport()->send(TeamSpeak3_Helper_String::fromHex(33)); + + if(!preg_match_all("/,?(\d+)#([0-9a-zA-Z\._-]+),?/", $this->getTransport()->read(96), $matches) || !isset($matches[1]) || !isset($matches[2])) + { + throw new TeamSpeak3_Adapter_Update_Exception("invalid reply from the server"); + } + + $this->build_datetimes = $matches[1]; + $this->version_strings = $matches[2]; + + TeamSpeak3_Helper_Signal::getInstance()->emit("updateConnected", $this); + } + + /** + * The TeamSpeak3_Adapter_Update destructor. + * + * @return void + */ + public function __destruct() + { + if($this->getTransport() instanceof TeamSpeak3_Transport_Abstract && $this->getTransport()->isConnected()) + { + $this->getTransport()->disconnect(); + } + } + + /** + * Returns the current build number for a specified update channel. Note that since version + * 3.0.0, the build number represents an integer timestamp. $channel must be set to one of + * the following values: + * + * - stable + * - beta + * - alpha + * - server + * + * @param string $channel + * @throws TeamSpeak3_Adapter_Update_Exception + * @return integer + */ + public function getRev($channel = "stable") + { + switch($channel) + { + case "stable": + return isset($this->build_datetimes[0]) ? $this->build_datetimes[0] : null; + + case "beta": + return isset($this->build_datetimes[1]) ? $this->build_datetimes[1] : null; + + case "alpha": + return isset($this->build_datetimes[2]) ? $this->build_datetimes[2] : null; + + case "server": + return isset($this->build_datetimes[3]) ? $this->build_datetimes[3] : null; + + default: + throw new TeamSpeak3_Adapter_Update_Exception("invalid update channel identifier (" . $channel . ")"); + } + } + + /** + * Returns the current version string for a specified update channel. $channel must be set to + * one of the following values: + * + * - stable + * - beta + * - alpha + * - server + * + * @param string $channel + * @throws TeamSpeak3_Adapter_Update_Exception + * @return integer + */ + public function getVersion($channel = "stable") + { + switch($channel) + { + case "stable": + return isset($this->version_strings[0]) ? $this->version_strings[0] : null; + + case "beta": + return isset($this->version_strings[1]) ? $this->version_strings[1] : null; + + case "alpha": + return isset($this->version_strings[2]) ? $this->version_strings[2] : null; + + case "server": + return isset($this->version_strings[3]) ? $this->version_strings[3] : null; + + default: + throw new TeamSpeak3_Adapter_Update_Exception("invalid update channel identifier (" . $channel . ")"); + } + } + + /** + * Alias for getRev() using the 'stable' update channel. + * + * @param string $channel + * @return integer + */ + public function getClientRev() + { + return $this->getRev("stable"); + } + + /** + * Alias for getRev() using the 'server' update channel. + * + * @param string $channel + * @return integer + */ + public function getServerRev() + { + return $this->getRev("server"); + } + + /** + * Alias for getVersion() using the 'stable' update channel. + * + * @param string $channel + * @return integer + */ + public function getClientVersion() + { + return $this->getVersion("stable"); + } + + /** + * Alias for getVersion() using the 'server' update channel. + * + * @param string $channel + * @return integer + */ + public function getServerVersion() + { + return $this->getVersion("server"); + } +} diff --git a/lib/libraries/TeamSpeak3/Adapter/Update/Exception.php b/lib/libraries/TeamSpeak3/Adapter/Update/Exception.php new file mode 100644 index 0000000..ba239ad --- /dev/null +++ b/lib/libraries/TeamSpeak3/Adapter/Update/Exception.php @@ -0,0 +1,32 @@ +. + * + * @package TeamSpeak3 + * @version 1.1.23 + * @author Sven 'ScP' Paulsen + * @copyright Copyright (c) 2010 by Planet TeamSpeak. All rights reserved. + */ + +/** + * @class TeamSpeak3_Adapter_Update_Exception + * @brief Enhanced exception class for TeamSpeak3_Adapter_Update objects. + */ +class TeamSpeak3_Adapter_Update_Exception extends TeamSpeak3_Adapter_Exception {} diff --git a/lib/libraries/TeamSpeak3/Exception.php b/lib/libraries/TeamSpeak3/Exception.php new file mode 100644 index 0000000..680faf8 --- /dev/null +++ b/lib/libraries/TeamSpeak3/Exception.php @@ -0,0 +1,129 @@ +. + * + * @package TeamSpeak3 + * @version 1.1.23 + * @author Sven 'ScP' Paulsen + * @copyright Copyright (c) 2010 by Planet TeamSpeak. All rights reserved. + */ + +/** + * @class TeamSpeak3_Exception + * @brief Enhanced exception class for TeamSpeak3 objects. + */ +class TeamSpeak3_Exception extends Exception +{ + /** + * Stores custom error messages. + * + * @var array + */ + protected static $messages = array(); + + /** + * The TeamSpeak3_Exception constructor. + * + * @param string $mesg + * @param integer $code + * @return TeamSpeak3_Exception + */ + public function __construct($mesg, $code = 0x00) + { + parent::__construct($mesg, $code); + + if(array_key_exists((int) $code, self::$messages)) + { + $this->message = $this->prepareCustomMessage(self::$messages[intval($code)]); + } + + TeamSpeak3_Helper_Signal::getInstance()->emit("errorException", $this); + } + + /** + * Prepares a custom error message by replacing pre-defined signs with given values. + * + * @param TeamSpeak3_Helper_String $mesg + * @return TeamSpeak3_Helper_String + */ + protected function prepareCustomMessage(TeamSpeak3_Helper_String $mesg) + { + $args = array( + "code" => $this->getCode(), + "mesg" => $this->getMessage(), + "line" => $this->getLine(), + "file" => $this->getFile(), + ); + + return $mesg->arg($args)->toString(); + } + + /** + * Registers a custom error message to $code. + * + * @param integer $code + * @param string $mesg + * @throws TeamSpeak3_Exception + * @return void + */ + public static function registerCustomMessage($code, $mesg) + { + if(array_key_exists((int) $code, self::$messages)) + { + throw new self("custom message for code 0x" . strtoupper(dechex($code)) . " is already registered"); + } + + if(!is_string($mesg)) + { + throw new self("custom message for code 0x" . strtoupper(dechex($code)) . " must be a string"); + } + + self::$messages[(int) $code] = new TeamSpeak3_Helper_String($mesg); + } + + /** + * Unregisters a custom error message from $code. + * + * @param integer $code + * @throws TeamSpeak3_Exception + * @return void + */ + public static function unregisterCustomMessage($code) + { + if(!array_key_exists((int) $code, self::$messages)) + { + throw new self("custom message for code 0x" . strtoupper(dechex($code)) . " is not registered"); + } + + unset(self::$messages[intval($code)]); + } + + /** + * Returns the class from which the exception was thrown. + * + * @return string + */ + public function getSender() + { + $trace = $this->getTrace(); + + return (isset($trace[0]["class"])) ? $trace[0]["class"] : "{main}"; + } +} diff --git a/lib/libraries/TeamSpeak3/Helper/Char.php b/lib/libraries/TeamSpeak3/Helper/Char.php new file mode 100644 index 0000000..1159a1a --- /dev/null +++ b/lib/libraries/TeamSpeak3/Helper/Char.php @@ -0,0 +1,269 @@ +. + * + * @package TeamSpeak3 + * @version 1.1.23 + * @author Sven 'ScP' Paulsen + * @copyright Copyright (c) 2010 by Planet TeamSpeak. All rights reserved. + */ + +/** + * @class TeamSpeak3_Helper_Char + * @brief Helper class for char handling. + */ +class TeamSpeak3_Helper_Char +{ + /** + * Stores the original character. + * + * @var string + */ + protected $char = null; + + /** + * The TeamSpeak3_Helper_Char constructor. + * + * @param string $var + * @throws TeamSpeak3_Helper_Exception + * @return TeamSpeak3_Helper_Char + */ + public function __construct($char) + { + if(strlen($char) != 1) + { + throw new TeamSpeak3_Helper_Exception("char parameter may not contain more or less than one character"); + } + + $this->char = strval($char); + } + + /** + * Returns true if the character is a letter. + * + * @return boolean + */ + public function isLetter() + { + return ctype_alpha($this->char); + } + + /** + * Returns true if the character is a decimal digit. + * + * @return boolean + */ + public function isDigit() + { + return ctype_digit($this->char); + } + + /** + * Returns true if the character is a space. + * + * @return boolean + */ + public function isSpace() + { + return ctype_space($this->char); + } + + /** + * Returns true if the character is a mark. + * + * @return boolean + */ + public function isMark() + { + return ctype_punct($this->char); + } + + /** + * Returns true if the character is a control character (i.e. "\t"). + * + * @return boolean + */ + public function isControl() + { + return ctype_cntrl($this->char); + } + + /** + * Returns true if the character is a printable character. + * + * @return boolean + */ + public function isPrintable() + { + return ctype_print($this->char); + } + + /** + * Returns true if the character is the Unicode character 0x0000 ("\0"). + * + * @return boolean + */ + public function isNull() + { + return ($this->char === "\0") ? TRUE : FALSE; + } + + /** + * Returns true if the character is an uppercase letter. + * + * @return boolean + */ + public function isUpper() + { + return ($this->char === strtoupper($this->char)) ? TRUE : FALSE; + } + + /** + * Returns true if the character is a lowercase letter. + * + * @return boolean + */ + public function isLower() + { + return ($this->char === strtolower($this->char)) ? TRUE : FALSE; + } + + /** + * Returns the uppercase equivalent if the character is lowercase. + * + * @return TeamSpeak3_Helper_Char + */ + public function toUpper() + { + return ($this->isUpper()) ? $this : new self(strtoupper($this)); + } + + /** + * Returns the lowercase equivalent if the character is uppercase. + * + * @return TeamSpeak3_Helper_Char + */ + public function toLower() + { + return ($this->isLower()) ? $this : new self(strtolower($this)); + } + + /** + * Returns the ascii value of the character. + * + * @return integer + */ + public function toAscii() + { + return ord($this->char); + } + + /** + * Returns the Unicode value of the character. + * + * @return integer + */ + public function toUnicode() + { + $h = ord($this->char{0}); + + if($h <= 0x7F) + { + return $h; + } + else if($h < 0xC2) + { + return FALSE; + } + else if($h <= 0xDF) + { + return ($h & 0x1F) << 6 | (ord($this->char{1}) & 0x3F); + } + else if($h <= 0xEF) + { + return ($h & 0x0F) << 12 | (ord($this->char{1}) & 0x3F) << 6 | (ord($this->char{2}) & 0x3F); + } + else if($h <= 0xF4) + { + return ($h & 0x0F) << 18 | (ord($this->char{1}) & 0x3F) << 12 | (ord($this->char{2}) & 0x3F) << 6 | (ord($this->char{3}) & 0x3F); + } + else + { + return FALSE; + } + } + + /** + * Returns the hexadecimal value of the char. + * + * @return string + */ + public function toHex() + { + return strtoupper(dechex($this->toAscii())); + } + + /** + * Returns the TeamSpeak3_Helper_Char based on a given hex value. + * + * @param string $hex + * @throws TeamSpeak3_Helper_Exception + * @return TeamSpeak3_Helper_Char + */ + public static function fromHex($hex) + { + if(strlen($hex) != 2) + { + throw new TeamSpeak3_Helper_Exception("given parameter '" . $hex . "' is not a valid hexadecimal number"); + } + + return new self(chr(hexdec($hex))); + } + + /** + * Returns the character as a standard string. + * + * @return string + */ + public function toString() + { + return $this->char; + } + + /** + * Returns the integer value of the character. + * + * @return integer + */ + public function toInt() + { + return intval($this->char); + } + + /** + * Returns the character as a standard string. + * + * @return string + */ + public function __toString() + { + return $this->char; + } +} diff --git a/lib/libraries/TeamSpeak3/Helper/Convert.php b/lib/libraries/TeamSpeak3/Helper/Convert.php new file mode 100644 index 0000000..d1fa21a --- /dev/null +++ b/lib/libraries/TeamSpeak3/Helper/Convert.php @@ -0,0 +1,349 @@ +. + * + * @package TeamSpeak3 + * @version 1.1.23 + * @author Sven 'ScP' Paulsen + * @copyright Copyright (c) 2010 by Planet TeamSpeak. All rights reserved. + */ + +/** + * @class TeamSpeak3_Helper_Convert + * @brief Helper class for data conversion. + */ +class TeamSpeak3_Helper_Convert +{ + /** + * Converts bytes to a human readable value. + * + * @param integer $bytes + * @return string + */ + public static function bytes($bytes) + { + $kbytes = sprintf("%.02f", $bytes/1024); + $mbytes = sprintf("%.02f", $kbytes/1024); + $gbytes = sprintf("%.02f", $mbytes/1024); + $tbytes = sprintf("%.02f", $gbytes/1024); + + if($tbytes >= 1) + return $tbytes . " TB"; + if($gbytes >= 1) + return $gbytes . " GB"; + if($mbytes >= 1) + return $mbytes . " MB"; + if($kbytes >= 1) + return $kbytes . " KB"; + + return $bytes . " B"; + } + + /** + * Converts seconds/milliseconds to a human readable value. + * + * @param integer $seconds + * @param boolean $is_ms + * @param string $format + * @return string + */ + public static function seconds($seconds, $is_ms = FALSE, $format = "%dD %02d:%02d:%02d") + { + if($is_ms) $seconds = $seconds/1000; + + return sprintf($format, $seconds/60/60/24, ($seconds/60/60)%24, ($seconds/60)%60, $seconds%60); + } + + /** + * Converts a given codec ID to a human readable name. + * + * @param integer $codec + * @return string + */ + public static function codec($codec) + { + if($codec == TeamSpeak3::CODEC_SPEEX_NARROWBAND) + return "Speex Narrowband"; + if($codec == TeamSpeak3::CODEC_SPEEX_WIDEBAND) + return "Speex Wideband"; + if($codec == TeamSpeak3::CODEC_SPEEX_ULTRAWIDEBAND) + return "Speex Ultra-Wideband"; + if($codec == TeamSpeak3::CODEC_CELT_MONO) + return "CELT Mono"; + if($codec == TeamSpeak3::CODEC_OPUS_VOICE) + return "Opus Voice"; + if($codec == TeamSpeak3::CODEC_OPUS_MUSIC) + return "Opus Music"; + + return "Unknown"; + } + + /** + * Converts a given group type ID to a human readable name. + * + * @param integer $type + * @return string + */ + public static function groupType($type) + { + if($type == TeamSpeak3::GROUP_DBTYPE_TEMPLATE) + return "Template"; + if($type == TeamSpeak3::GROUP_DBTYPE_REGULAR) + return "Regular"; + if($type == TeamSpeak3::GROUP_DBTYPE_SERVERQUERY) + return "ServerQuery"; + + return "Unknown"; + } + + /** + * Converts a given permission type ID to a human readable name. + * + * @param integer $type + * @return string + */ + public static function permissionType($type) + { + if($type == TeamSpeak3::PERM_TYPE_SERVERGROUP) + return "Server Group"; + if($type == TeamSpeak3::PERM_TYPE_CLIENT) + return "Client"; + if($type == TeamSpeak3::PERM_TYPE_CHANNEL) + return "Channel"; + if($type == TeamSpeak3::PERM_TYPE_CHANNELGROUP) + return "Channel Group"; + if($type == TeamSpeak3::PERM_TYPE_CHANNELCLIENT) + return "Channel Client"; + + return "Unknown"; + } + + /** + * Converts a given permission category value to a human readable name. + * + * @param integer $pcat + * @return string + */ + public static function permissionCategory($pcat) + { + if($pcat == TeamSpeak3::PERM_CAT_GLOBAL) + return "Global"; + if($pcat == TeamSpeak3::PERM_CAT_GLOBAL_INFORMATION) + return "Global / Information"; + if($pcat == TeamSpeak3::PERM_CAT_GLOBAL_SERVER_MGMT) + return "Global / Virtual Server Management"; + if($pcat == TeamSpeak3::PERM_CAT_GLOBAL_ADM_ACTIONS) + return "Global / Administration"; + if($pcat == TeamSpeak3::PERM_CAT_GLOBAL_SETTINGS) + return "Global / Settings"; + if($pcat == TeamSpeak3::PERM_CAT_SERVER) + return "Virtual Server"; + if($pcat == TeamSpeak3::PERM_CAT_SERVER_INFORMATION) + return "Virtual Server / Information"; + if($pcat == TeamSpeak3::PERM_CAT_SERVER_ADM_ACTIONS) + return "Virtual Server / Administration"; + if($pcat == TeamSpeak3::PERM_CAT_SERVER_SETTINGS) + return "Virtual Server / Settings"; + if($pcat == TeamSpeak3::PERM_CAT_CHANNEL) + return "Channel"; + if($pcat == TeamSpeak3::PERM_CAT_CHANNEL_INFORMATION) + return "Channel / Information"; + if($pcat == TeamSpeak3::PERM_CAT_CHANNEL_CREATE) + return "Channel / Create"; + if($pcat == TeamSpeak3::PERM_CAT_CHANNEL_MODIFY) + return "Channel / Modify"; + if($pcat == TeamSpeak3::PERM_CAT_CHANNEL_DELETE) + return "Channel / Delete"; + if($pcat == TeamSpeak3::PERM_CAT_CHANNEL_ACCESS) + return "Channel / Access"; + if($pcat == TeamSpeak3::PERM_CAT_GROUP) + return "Group"; + if($pcat == TeamSpeak3::PERM_CAT_GROUP_INFORMATION) + return "Group / Information"; + if($pcat == TeamSpeak3::PERM_CAT_GROUP_CREATE) + return "Group / Create"; + if($pcat == TeamSpeak3::PERM_CAT_GROUP_MODIFY) + return "Group / Modify"; + if($pcat == TeamSpeak3::PERM_CAT_GROUP_DELETE) + return "Group / Delete"; + if($pcat == TeamSpeak3::PERM_CAT_CLIENT) + return "Client"; + if($pcat == TeamSpeak3::PERM_CAT_CLIENT_INFORMATION) + return "Client / Information"; + if($pcat == TeamSpeak3::PERM_CAT_CLIENT_ADM_ACTIONS) + return "Client / Admin"; + if($pcat == TeamSpeak3::PERM_CAT_CLIENT_BASICS) + return "Client / Basics"; + if($pcat == TeamSpeak3::PERM_CAT_CLIENT_MODIFY) + return "Client / Modify"; + if($pcat == TeamSpeak3::PERM_CAT_FILETRANSFER) + return "File Transfer"; + if($pcat == TeamSpeak3::PERM_CAT_NEEDED_MODIFY_POWER) + return "Grant"; + + return "Unknown"; + } + + /** + * Converts a given log level ID to a human readable name and vice versa. + * + * @param mixed $level + * @return string + */ + public static function logLevel($level) + { + if(is_numeric($level)) + { + if($level == TeamSpeak3::LOGLEVEL_CRITICAL) + return "CRITICAL"; + if($level == TeamSpeak3::LOGLEVEL_ERROR) + return "ERROR"; + if($level == TeamSpeak3::LOGLEVEL_DEBUG) + return "DEBUG"; + if($level == TeamSpeak3::LOGLEVEL_WARNING) + return "WARNING"; + if($level == TeamSpeak3::LOGLEVEL_INFO) + return "INFO"; + + return "DEVELOP"; + } + else + { + if(strtoupper($level) == "CRITICAL") + return TeamSpeak3::LOGLEVEL_CRITICAL; + if(strtoupper($level) == "ERROR") + return TeamSpeak3::LOGLEVEL_ERROR; + if(strtoupper($level) == "DEBUG") + return TeamSpeak3::LOGLEVEL_DEBUG; + if(strtoupper($level) == "WARNING") + return TeamSpeak3::LOGLEVEL_WARNING; + if(strtoupper($level) == "INFO") + return TeamSpeak3::LOGLEVEL_INFO; + + return TeamSpeak3::LOGLEVEL_DEVEL; + } + } + + /** + * Converts a specified log entry string into an array containing the data. + * + * @param string $entry + * @return array + */ + public static function logEntry($entry) + { + $parts = explode("|", $entry, 5); + $array = array(); + + if(count($parts) != 5) + { + $array["timestamp"] = 0; + $array["level"] = TeamSpeak3::LOGLEVEL_ERROR; + $array["channel"] = "ParamParser"; + $array["server_id"] = ""; + $array["msg"] = TeamSpeak3_Helper_String::factory("convert error (" . trim($entry) . ")"); + $array["msg_plain"] = $entry; + $array["malformed"] = TRUE; + } + else + { + $array["timestamp"] = strtotime(trim($parts[0])); + $array["level"] = self::logLevel(trim($parts[1])); + $array["channel"] = trim($parts[2]); + $array["server_id"] = trim($parts[3]); + $array["msg"] = TeamSpeak3_Helper_String::factory(trim($parts[4])); + $array["msg_plain"] = $entry; + $array["malformed"] = FALSE; + } + + return $array; + } + + /** + * Converts a given string to a ServerQuery password hash. + * + * @param string $plain + * @return string + */ + public static function password($plain) + { + return base64_encode(sha1($plain, TRUE)); + } + + /** + * Returns a client-like formatted version of the TeamSpeak 3 version string. + * + * @param string $version + * @param string $format + * @return string + */ + public static function version($version, $format = "Y-m-d h:i:s") + { + if(!$version instanceof TeamSpeak3_Helper_String) + { + $version = new TeamSpeak3_Helper_String($version); + } + + $buildno = $version->section("[", 1)->filterDigits()->toInt(); + + return ($buildno <= 15001) ? $version : $version->section("[")->append("(" . date($format, $buildno) . ")"); + } + + /** + * Returns a client-like short-formatted version of the TeamSpeak 3 version string. + * + * @param string $version + * @return string + */ + public static function versionShort($version) + { + if(!$version instanceof TeamSpeak3_Helper_String) + { + $version = new TeamSpeak3_Helper_String($version); + } + + return $version->section(" ", 0); + } + + /** + * Tries to detect the type of an image by a given string and returns it. + * + * @param string $binary + * @return string + */ + public static function imageMimeType($binary) + { + if(!preg_match('/\A(?:(\xff\xd8\xff)|(GIF8[79]a)|(\x89PNG\x0d\x0a)|(BM)|(\x49\x49(\x2a\x00|\x00\x4a))|(FORM.{4}ILBM))/', $binary, $matches)) + { + return "application/octet-stream"; + } + + $type = array( + 1 => "image/jpeg", + 2 => "image/gif", + 3 => "image/png", + 4 => "image/x-windows-bmp", + 5 => "image/tiff", + 6 => "image/x-ilbm", + ); + + return $type[count($matches)-1]; + } +} diff --git a/lib/libraries/TeamSpeak3/Helper/Crypt.php b/lib/libraries/TeamSpeak3/Helper/Crypt.php new file mode 100644 index 0000000..ad361fb --- /dev/null +++ b/lib/libraries/TeamSpeak3/Helper/Crypt.php @@ -0,0 +1,482 @@ +. + * + * @package TeamSpeak3 + * @version 1.1.23 + * @author Sven 'ScP' Paulsen + * @copyright Copyright (c) 2010 by Planet TeamSpeak. All rights reserved. + */ + +/** + * @class TeamSpeak3_Helper_Crypt + * @brief Helper class for data encryption. + */ +class TeamSpeak3_Helper_Crypt +{ + /** + * Stores the secret passphrase to encrypt or decrypt a given string. + * + * @var string + */ + protected $passphrase = null; + + /** + * Stores an array containing 18 32-bit entries. + * + * @var array + */ + protected $p = array(); + + /** + * Stores an array containing 4 sub-arrays with 256 32-bit entries. + * + * @var array + */ + protected $s = array(); + + /** + * The TeamSpeak3_Helper_Crypt constructor. + * + * @param string $secret + * @return TeamSpeak3_Helper_Crypt + */ + public function __construct($secret) + { + $this->setDefaultKeys(); + $this->setSecretKey($secret); + } + + /** + * Encrypts a given string. + * + * @param string $string + * @return string + */ + public function encrypt($string) + { + $string = trim($string); + $encryp = ""; + $length = strlen($string); + $string .= str_repeat(chr(0), (8-($length%8))%8); + + for($i = 0; $i < $length; $i += 8) + { + list(,$xl,$xr) = unpack("N2", substr($string, $i, 8)); + $this->encipher($xl, $xr); + $encryp .= pack("N2", $xl, $xr); + } + + return base64_encode($encryp); + } + + /** + * Decrypts a given string. + * + * @param string $string + * @return string + */ + public function decrypt($string) + { + $string = base64_decode($string); + $decryp = ""; + $length = strlen($string); + $string .= str_repeat(chr(0), (8-($length%8))%8); + + for($i = 0; $i < $length; $i += 8) + { + list(,$xl,$xr) = unpack("N2", substr($string, $i, 8)); + $this->decipher($xl, $xr); + $decryp .= pack("N2", $xl, $xr); + } + + return trim($decryp); + } + + /** + * Enciphers a single 64-bit block. + * + * @param integer $xl + * @param integer $xr + */ + protected function encipher(&$xl, &$xr) + { + for($i = 0; $i < 16; $i++) + { + $temp = $xl ^ $this->p[$i]; + $xl = ((($this->s[0][($temp>>24) & 255] + $this->s[1][($temp>>16) & 255]) ^ $this->s[2][($temp>>8) & 255]) + $this->s[3][$temp & 255]) ^ $xr; + $xr = $temp; + } + + $xr = $xl ^ $this->p[16]; + $xl = $temp ^ $this->p[17]; + } + + /** + * Deciphers a single 64-bit block + * + * @param integer $xl + * @param integer $xr + * @return void + */ + protected function decipher(&$xl, &$xr) + { + for($i = 17; $i > 1; $i--) + { + $temp = $xl ^ $this->p[$i]; + $xl = ((($this->s[0][($temp>>24) & 255] + $this->s[1][($temp>>16) & 255]) ^ $this->s[2][($temp>>8) & 255]) + $this->s[3][$temp & 255]) ^ $xr; + $xr = $temp; + } + + $xr = $xl ^ $this->p[1]; + $xl = $temp ^ $this->p[0]; + } + + /** + * Sets the secret key using the specified pasphrase. + * + * @param string $passphrase + * @throws Habitat_Exception + * @return void + */ + protected function setSecretKey($passphrase) + { + $length = strlen($passphrase); + + if(strlen($passphrase) < 1 || strlen($passphrase) > 56) + { + throw new TeamSpeak3_Helper_Exception("secret passphrase must contain at least one but less than 56 characters"); + } + + $k = 0; + $data = 0; + $datal = 0; + $datar = 0; + + for($i = 0; $i < 18; $i++) + { + $data = 0; + for($j = 4; $j > 0; $j--) + { + $data = $data << 8 | ord($passphrase{$k}); + $k = ($k+1) % $length; + } + $this->p[$i] ^= $data; + } + + + for($i = 0; $i <= 16; $i += 2) + { + $this->encipher($datal, $datar); + $this->p[$i] = $datal; + $this->p[$i+1] = $datar; + } + + foreach($this->s as $key => $val) + { + for ($i = 0; $i < 256; $i += 2) + { + $this->encipher($datal, $datar); + $this->s[$key][$i] = $datal; + $this->s[$key][$i+1] = $datar; + } + } + } + + /** + * Sets the defult p and s keys. + * + * @return void + */ + protected function setDefaultKeys() + { + $this->p = array( + 0x243F6A88, 0x85A308D3, 0x13198A2E, 0x03707344, 0xA4093822, 0x299F31D0, + 0x082EFA98, 0xEC4E6C89, 0x452821E6, 0x38D01377, 0xBE5466CF, 0x34E90C6C, + 0xC0AC29B7, 0xC97C50DD, 0x3F84D5B5, 0xB5470917, 0x9216D5D9, 0x8979FB1B, + ); + $this->s = array( + array( + 0xD1310BA6, 0x98DFB5AC, 0x2FFD72DB, 0xD01ADFB7, + 0xB8E1AFED, 0x6A267E96, 0xBA7C9045, 0xF12C7F99, + 0x24A19947, 0xB3916CF7, 0x0801F2E2, 0x858EFC16, + 0x636920D8, 0x71574E69, 0xA458FEA3, 0xF4933D7E, + 0x0D95748F, 0x728EB658, 0x718BCD58, 0x82154AEE, + 0x7B54A41D, 0xC25A59B5, 0x9C30D539, 0x2AF26013, + 0xC5D1B023, 0x286085F0, 0xCA417918, 0xB8DB38EF, + 0x8E79DCB0, 0x603A180E, 0x6C9E0E8B, 0xB01E8A3E, + 0xD71577C1, 0xBD314B27, 0x78AF2FDA, 0x55605C60, + 0xE65525F3, 0xAA55AB94, 0x57489862, 0x63E81440, + 0x55CA396A, 0x2AAB10B6, 0xB4CC5C34, 0x1141E8CE, + 0xA15486AF, 0x7C72E993, 0xB3EE1411, 0x636FBC2A, + 0x2BA9C55D, 0x741831F6, 0xCE5C3E16, 0x9B87931E, + 0xAFD6BA33, 0x6C24CF5C, 0x7A325381, 0x28958677, + 0x3B8F4898, 0x6B4BB9AF, 0xC4BFE81B, 0x66282193, + 0x61D809CC, 0xFB21A991, 0x487CAC60, 0x5DEC8032, + 0xEF845D5D, 0xE98575B1, 0xDC262302, 0xEB651B88, + 0x23893E81, 0xD396ACC5, 0x0F6D6FF3, 0x83F44239, + 0x2E0B4482, 0xA4842004, 0x69C8F04A, 0x9E1F9B5E, + 0x21C66842, 0xF6E96C9A, 0x670C9C61, 0xABD388F0, + 0x6A51A0D2, 0xD8542F68, 0x960FA728, 0xAB5133A3, + 0x6EEF0B6C, 0x137A3BE4, 0xBA3BF050, 0x7EFB2A98, + 0xA1F1651D, 0x39AF0176, 0x66CA593E, 0x82430E88, + 0x8CEE8619, 0x456F9FB4, 0x7D84A5C3, 0x3B8B5EBE, + 0xE06F75D8, 0x85C12073, 0x401A449F, 0x56C16AA6, + 0x4ED3AA62, 0x363F7706, 0x1BFEDF72, 0x429B023D, + 0x37D0D724, 0xD00A1248, 0xDB0FEAD3, 0x49F1C09B, + 0x075372C9, 0x80991B7B, 0x25D479D8, 0xF6E8DEF7, + 0xE3FE501A, 0xB6794C3B, 0x976CE0BD, 0x04C006BA, + 0xC1A94FB6, 0x409F60C4, 0x5E5C9EC2, 0x196A2463, + 0x68FB6FAF, 0x3E6C53B5, 0x1339B2EB, 0x3B52EC6F, + 0x6DFC511F, 0x9B30952C, 0xCC814544, 0xAF5EBD09, + 0xBEE3D004, 0xDE334AFD, 0x660F2807, 0x192E4BB3, + 0xC0CBA857, 0x45C8740F, 0xD20B5F39, 0xB9D3FBDB, + 0x5579C0BD, 0x1A60320A, 0xD6A100C6, 0x402C7279, + 0x679F25FE, 0xFB1FA3CC, 0x8EA5E9F8, 0xDB3222F8, + 0x3C7516DF, 0xFD616B15, 0x2F501EC8, 0xAD0552AB, + 0x323DB5FA, 0xFD238760, 0x53317B48, 0x3E00DF82, + 0x9E5C57BB, 0xCA6F8CA0, 0x1A87562E, 0xDF1769DB, + 0xD542A8F6, 0x287EFFC3, 0xAC6732C6, 0x8C4F5573, + 0x695B27B0, 0xBBCA58C8, 0xE1FFA35D, 0xB8F011A0, + 0x10FA3D98, 0xFD2183B8, 0x4AFCB56C, 0x2DD1D35B, + 0x9A53E479, 0xB6F84565, 0xD28E49BC, 0x4BFB9790, + 0xE1DDF2DA, 0xA4CB7E33, 0x62FB1341, 0xCEE4C6E8, + 0xEF20CADA, 0x36774C01, 0xD07E9EFE, 0x2BF11FB4, + 0x95DBDA4D, 0xAE909198, 0xEAAD8E71, 0x6B93D5A0, + 0xD08ED1D0, 0xAFC725E0, 0x8E3C5B2F, 0x8E7594B7, + 0x8FF6E2FB, 0xF2122B64, 0x8888B812, 0x900DF01C, + 0x4FAD5EA0, 0x688FC31C, 0xD1CFF191, 0xB3A8C1AD, + 0x2F2F2218, 0xBE0E1777, 0xEA752DFE, 0x8B021FA1, + 0xE5A0CC0F, 0xB56F74E8, 0x18ACF3D6, 0xCE89E299, + 0xB4A84FE0, 0xFD13E0B7, 0x7CC43B81, 0xD2ADA8D9, + 0x165FA266, 0x80957705, 0x93CC7314, 0x211A1477, + 0xE6AD2065, 0x77B5FA86, 0xC75442F5, 0xFB9D35CF, + 0xEBCDAF0C, 0x7B3E89A0, 0xD6411BD3, 0xAE1E7E49, + 0x00250E2D, 0x2071B35E, 0x226800BB, 0x57B8E0AF, + 0x2464369B, 0xF009B91E, 0x5563911D, 0x59DFA6AA, + 0x78C14389, 0xD95A537F, 0x207D5BA2, 0x02E5B9C5, + 0x83260376, 0x6295CFA9, 0x11C81968, 0x4E734A41, + 0xB3472DCA, 0x7B14A94A, 0x1B510052, 0x9A532915, + 0xD60F573F, 0xBC9BC6E4, 0x2B60A476, 0x81E67400, + 0x08BA6FB5, 0x571BE91F, 0xF296EC6B, 0x2A0DD915, + 0xB6636521, 0xE7B9F9B6, 0xFF34052E, 0xC5855664, + 0x53B02D5D, 0xA99F8FA1, 0x08BA4799, 0x6E85076A + ), + array( + 0x4B7A70E9, 0xB5B32944, 0xDB75092E, 0xC4192623, + 0xAD6EA6B0, 0x49A7DF7D, 0x9CEE60B8, 0x8FEDB266, + 0xECAA8C71, 0x699A17FF, 0x5664526C, 0xC2B19EE1, + 0x193602A5, 0x75094C29, 0xA0591340, 0xE4183A3E, + 0x3F54989A, 0x5B429D65, 0x6B8FE4D6, 0x99F73FD6, + 0xA1D29C07, 0xEFE830F5, 0x4D2D38E6, 0xF0255DC1, + 0x4CDD2086, 0x8470EB26, 0x6382E9C6, 0x021ECC5E, + 0x09686B3F, 0x3EBAEFC9, 0x3C971814, 0x6B6A70A1, + 0x687F3584, 0x52A0E286, 0xB79C5305, 0xAA500737, + 0x3E07841C, 0x7FDEAE5C, 0x8E7D44EC, 0x5716F2B8, + 0xB03ADA37, 0xF0500C0D, 0xF01C1F04, 0x0200B3FF, + 0xAE0CF51A, 0x3CB574B2, 0x25837A58, 0xDC0921BD, + 0xD19113F9, 0x7CA92FF6, 0x94324773, 0x22F54701, + 0x3AE5E581, 0x37C2DADC, 0xC8B57634, 0x9AF3DDA7, + 0xA9446146, 0x0FD0030E, 0xECC8C73E, 0xA4751E41, + 0xE238CD99, 0x3BEA0E2F, 0x3280BBA1, 0x183EB331, + 0x4E548B38, 0x4F6DB908, 0x6F420D03, 0xF60A04BF, + 0x2CB81290, 0x24977C79, 0x5679B072, 0xBCAF89AF, + 0xDE9A771F, 0xD9930810, 0xB38BAE12, 0xDCCF3F2E, + 0x5512721F, 0x2E6B7124, 0x501ADDE6, 0x9F84CD87, + 0x7A584718, 0x7408DA17, 0xBC9F9ABC, 0xE94B7D8C, + 0xEC7AEC3A, 0xDB851DFA, 0x63094366, 0xC464C3D2, + 0xEF1C1847, 0x3215D908, 0xDD433B37, 0x24C2BA16, + 0x12A14D43, 0x2A65C451, 0x50940002, 0x133AE4DD, + 0x71DFF89E, 0x10314E55, 0x81AC77D6, 0x5F11199B, + 0x043556F1, 0xD7A3C76B, 0x3C11183B, 0x5924A509, + 0xF28FE6ED, 0x97F1FBFA, 0x9EBABF2C, 0x1E153C6E, + 0x86E34570, 0xEAE96FB1, 0x860E5E0A, 0x5A3E2AB3, + 0x771FE71C, 0x4E3D06FA, 0x2965DCB9, 0x99E71D0F, + 0x803E89D6, 0x5266C825, 0x2E4CC978, 0x9C10B36A, + 0xC6150EBA, 0x94E2EA78, 0xA5FC3C53, 0x1E0A2DF4, + 0xF2F74EA7, 0x361D2B3D, 0x1939260F, 0x19C27960, + 0x5223A708, 0xF71312B6, 0xEBADFE6E, 0xEAC31F66, + 0xE3BC4595, 0xA67BC883, 0xB17F37D1, 0x018CFF28, + 0xC332DDEF, 0xBE6C5AA5, 0x65582185, 0x68AB9802, + 0xEECEA50F, 0xDB2F953B, 0x2AEF7DAD, 0x5B6E2F84, + 0x1521B628, 0x29076170, 0xECDD4775, 0x619F1510, + 0x13CCA830, 0xEB61BD96, 0x0334FE1E, 0xAA0363CF, + 0xB5735C90, 0x4C70A239, 0xD59E9E0B, 0xCBAADE14, + 0xEECC86BC, 0x60622CA7, 0x9CAB5CAB, 0xB2F3846E, + 0x648B1EAF, 0x19BDF0CA, 0xA02369B9, 0x655ABB50, + 0x40685A32, 0x3C2AB4B3, 0x319EE9D5, 0xC021B8F7, + 0x9B540B19, 0x875FA099, 0x95F7997E, 0x623D7DA8, + 0xF837889A, 0x97E32D77, 0x11ED935F, 0x16681281, + 0x0E358829, 0xC7E61FD6, 0x96DEDFA1, 0x7858BA99, + 0x57F584A5, 0x1B227263, 0x9B83C3FF, 0x1AC24696, + 0xCDB30AEB, 0x532E3054, 0x8FD948E4, 0x6DBC3128, + 0x58EBF2EF, 0x34C6FFEA, 0xFE28ED61, 0xEE7C3C73, + 0x5D4A14D9, 0xE864B7E3, 0x42105D14, 0x203E13E0, + 0x45EEE2B6, 0xA3AAABEA, 0xDB6C4F15, 0xFACB4FD0, + 0xC742F442, 0xEF6ABBB5, 0x654F3B1D, 0x41CD2105, + 0xD81E799E, 0x86854DC7, 0xE44B476A, 0x3D816250, + 0xCF62A1F2, 0x5B8D2646, 0xFC8883A0, 0xC1C7B6A3, + 0x7F1524C3, 0x69CB7492, 0x47848A0B, 0x5692B285, + 0x095BBF00, 0xAD19489D, 0x1462B174, 0x23820E00, + 0x58428D2A, 0x0C55F5EA, 0x1DADF43E, 0x233F7061, + 0x3372F092, 0x8D937E41, 0xD65FECF1, 0x6C223BDB, + 0x7CDE3759, 0xCBEE7460, 0x4085F2A7, 0xCE77326E, + 0xA6078084, 0x19F8509E, 0xE8EFD855, 0x61D99735, + 0xA969A7AA, 0xC50C06C2, 0x5A04ABFC, 0x800BCADC, + 0x9E447A2E, 0xC3453484, 0xFDD56705, 0x0E1E9EC9, + 0xDB73DBD3, 0x105588CD, 0x675FDA79, 0xE3674340, + 0xC5C43465, 0x713E38D8, 0x3D28F89E, 0xF16DFF20, + 0x153E21E7, 0x8FB03D4A, 0xE6E39F2B, 0xDB83ADF7 + ), + array( + 0xE93D5A68, 0x948140F7, 0xF64C261C, 0x94692934, + 0x411520F7, 0x7602D4F7, 0xBCF46B2E, 0xD4A20068, + 0xD4082471, 0x3320F46A, 0x43B7D4B7, 0x500061AF, + 0x1E39F62E, 0x97244546, 0x14214F74, 0xBF8B8840, + 0x4D95FC1D, 0x96B591AF, 0x70F4DDD3, 0x66A02F45, + 0xBFBC09EC, 0x03BD9785, 0x7FAC6DD0, 0x31CB8504, + 0x96EB27B3, 0x55FD3941, 0xDA2547E6, 0xABCA0A9A, + 0x28507825, 0x530429F4, 0x0A2C86DA, 0xE9B66DFB, + 0x68DC1462, 0xD7486900, 0x680EC0A4, 0x27A18DEE, + 0x4F3FFEA2, 0xE887AD8C, 0xB58CE006, 0x7AF4D6B6, + 0xAACE1E7C, 0xD3375FEC, 0xCE78A399, 0x406B2A42, + 0x20FE9E35, 0xD9F385B9, 0xEE39D7AB, 0x3B124E8B, + 0x1DC9FAF7, 0x4B6D1856, 0x26A36631, 0xEAE397B2, + 0x3A6EFA74, 0xDD5B4332, 0x6841E7F7, 0xCA7820FB, + 0xFB0AF54E, 0xD8FEB397, 0x454056AC, 0xBA489527, + 0x55533A3A, 0x20838D87, 0xFE6BA9B7, 0xD096954B, + 0x55A867BC, 0xA1159A58, 0xCCA92963, 0x99E1DB33, + 0xA62A4A56, 0x3F3125F9, 0x5EF47E1C, 0x9029317C, + 0xFDF8E802, 0x04272F70, 0x80BB155C, 0x05282CE3, + 0x95C11548, 0xE4C66D22, 0x48C1133F, 0xC70F86DC, + 0x07F9C9EE, 0x41041F0F, 0x404779A4, 0x5D886E17, + 0x325F51EB, 0xD59BC0D1, 0xF2BCC18F, 0x41113564, + 0x257B7834, 0x602A9C60, 0xDFF8E8A3, 0x1F636C1B, + 0x0E12B4C2, 0x02E1329E, 0xAF664FD1, 0xCAD18115, + 0x6B2395E0, 0x333E92E1, 0x3B240B62, 0xEEBEB922, + 0x85B2A20E, 0xE6BA0D99, 0xDE720C8C, 0x2DA2F728, + 0xD0127845, 0x95B794FD, 0x647D0862, 0xE7CCF5F0, + 0x5449A36F, 0x877D48FA, 0xC39DFD27, 0xF33E8D1E, + 0x0A476341, 0x992EFF74, 0x3A6F6EAB, 0xF4F8FD37, + 0xA812DC60, 0xA1EBDDF8, 0x991BE14C, 0xDB6E6B0D, + 0xC67B5510, 0x6D672C37, 0x2765D43B, 0xDCD0E804, + 0xF1290DC7, 0xCC00FFA3, 0xB5390F92, 0x690FED0B, + 0x667B9FFB, 0xCEDB7D9C, 0xA091CF0B, 0xD9155EA3, + 0xBB132F88, 0x515BAD24, 0x7B9479BF, 0x763BD6EB, + 0x37392EB3, 0xCC115979, 0x8026E297, 0xF42E312D, + 0x6842ADA7, 0xC66A2B3B, 0x12754CCC, 0x782EF11C, + 0x6A124237, 0xB79251E7, 0x06A1BBE6, 0x4BFB6350, + 0x1A6B1018, 0x11CAEDFA, 0x3D25BDD8, 0xE2E1C3C9, + 0x44421659, 0x0A121386, 0xD90CEC6E, 0xD5ABEA2A, + 0x64AF674E, 0xDA86A85F, 0xBEBFE988, 0x64E4C3FE, + 0x9DBC8057, 0xF0F7C086, 0x60787BF8, 0x6003604D, + 0xD1FD8346, 0xF6381FB0, 0x7745AE04, 0xD736FCCC, + 0x83426B33, 0xF01EAB71, 0xB0804187, 0x3C005E5F, + 0x77A057BE, 0xBDE8AE24, 0x55464299, 0xBF582E61, + 0x4E58F48F, 0xF2DDFDA2, 0xF474EF38, 0x8789BDC2, + 0x5366F9C3, 0xC8B38E74, 0xB475F255, 0x46FCD9B9, + 0x7AEB2661, 0x8B1DDF84, 0x846A0E79, 0x915F95E2, + 0x466E598E, 0x20B45770, 0x8CD55591, 0xC902DE4C, + 0xB90BACE1, 0xBB8205D0, 0x11A86248, 0x7574A99E, + 0xB77F19B6, 0xE0A9DC09, 0x662D09A1, 0xC4324633, + 0xE85A1F02, 0x09F0BE8C, 0x4A99A025, 0x1D6EFE10, + 0x1AB93D1D, 0x0BA5A4DF, 0xA186F20F, 0x2868F169, + 0xDCB7DA83, 0x573906FE, 0xA1E2CE9B, 0x4FCD7F52, + 0x50115E01, 0xA70683FA, 0xA002B5C4, 0x0DE6D027, + 0x9AF88C27, 0x773F8641, 0xC3604C06, 0x61A806B5, + 0xF0177A28, 0xC0F586E0, 0x006058AA, 0x30DC7D62, + 0x11E69ED7, 0x2338EA63, 0x53C2DD94, 0xC2C21634, + 0xBBCBEE56, 0x90BCB6DE, 0xEBFC7DA1, 0xCE591D76, + 0x6F05E409, 0x4B7C0188, 0x39720A3D, 0x7C927C24, + 0x86E3725F, 0x724D9DB9, 0x1AC15BB4, 0xD39EB8FC, + 0xED545578, 0x08FCA5B5, 0xD83D7CD3, 0x4DAD0FC4, + 0x1E50EF5E, 0xB161E6F8, 0xA28514D9, 0x6C51133C, + 0x6FD5C7E7, 0x56E14EC4, 0x362ABFCE, 0xDDC6C837, + 0xD79A3234, 0x92638212, 0x670EFA8E, 0x406000E0 + ), + array( + 0x3A39CE37, 0xD3FAF5CF, 0xABC27737, 0x5AC52D1B, + 0x5CB0679E, 0x4FA33742, 0xD3822740, 0x99BC9BBE, + 0xD5118E9D, 0xBF0F7315, 0xD62D1C7E, 0xC700C47B, + 0xB78C1B6B, 0x21A19045, 0xB26EB1BE, 0x6A366EB4, + 0x5748AB2F, 0xBC946E79, 0xC6A376D2, 0x6549C2C8, + 0x530FF8EE, 0x468DDE7D, 0xD5730A1D, 0x4CD04DC6, + 0x2939BBDB, 0xA9BA4650, 0xAC9526E8, 0xBE5EE304, + 0xA1FAD5F0, 0x6A2D519A, 0x63EF8CE2, 0x9A86EE22, + 0xC089C2B8, 0x43242EF6, 0xA51E03AA, 0x9CF2D0A4, + 0x83C061BA, 0x9BE96A4D, 0x8FE51550, 0xBA645BD6, + 0x2826A2F9, 0xA73A3AE1, 0x4BA99586, 0xEF5562E9, + 0xC72FEFD3, 0xF752F7DA, 0x3F046F69, 0x77FA0A59, + 0x80E4A915, 0x87B08601, 0x9B09E6AD, 0x3B3EE593, + 0xE990FD5A, 0x9E34D797, 0x2CF0B7D9, 0x022B8B51, + 0x96D5AC3A, 0x017DA67D, 0xD1CF3ED6, 0x7C7D2D28, + 0x1F9F25CF, 0xADF2B89B, 0x5AD6B472, 0x5A88F54C, + 0xE029AC71, 0xE019A5E6, 0x47B0ACFD, 0xED93FA9B, + 0xE8D3C48D, 0x283B57CC, 0xF8D56629, 0x79132E28, + 0x785F0191, 0xED756055, 0xF7960E44, 0xE3D35E8C, + 0x15056DD4, 0x88F46DBA, 0x03A16125, 0x0564F0BD, + 0xC3EB9E15, 0x3C9057A2, 0x97271AEC, 0xA93A072A, + 0x1B3F6D9B, 0x1E6321F5, 0xF59C66FB, 0x26DCF319, + 0x7533D928, 0xB155FDF5, 0x03563482, 0x8ABA3CBB, + 0x28517711, 0xC20AD9F8, 0xABCC5167, 0xCCAD925F, + 0x4DE81751, 0x3830DC8E, 0x379D5862, 0x9320F991, + 0xEA7A90C2, 0xFB3E7BCE, 0x5121CE64, 0x774FBE32, + 0xA8B6E37E, 0xC3293D46, 0x48DE5369, 0x6413E680, + 0xA2AE0810, 0xDD6DB224, 0x69852DFD, 0x09072166, + 0xB39A460A, 0x6445C0DD, 0x586CDECF, 0x1C20C8AE, + 0x5BBEF7DD, 0x1B588D40, 0xCCD2017F, 0x6BB4E3BB, + 0xDDA26A7E, 0x3A59FF45, 0x3E350A44, 0xBCB4CDD5, + 0x72EACEA8, 0xFA6484BB, 0x8D6612AE, 0xBF3C6F47, + 0xD29BE463, 0x542F5D9E, 0xAEC2771B, 0xF64E6370, + 0x740E0D8D, 0xE75B1357, 0xF8721671, 0xAF537D5D, + 0x4040CB08, 0x4EB4E2CC, 0x34D2466A, 0x0115AF84, + 0xE1B00428, 0x95983A1D, 0x06B89FB4, 0xCE6EA048, + 0x6F3F3B82, 0x3520AB82, 0x011A1D4B, 0x277227F8, + 0x611560B1, 0xE7933FDC, 0xBB3A792B, 0x344525BD, + 0xA08839E1, 0x51CE794B, 0x2F32C9B7, 0xA01FBAC9, + 0xE01CC87E, 0xBCC7D1F6, 0xCF0111C3, 0xA1E8AAC7, + 0x1A908749, 0xD44FBD9A, 0xD0DADECB, 0xD50ADA38, + 0x0339C32A, 0xC6913667, 0x8DF9317C, 0xE0B12B4F, + 0xF79E59B7, 0x43F5BB3A, 0xF2D519FF, 0x27D9459C, + 0xBF97222C, 0x15E6FC2A, 0x0F91FC71, 0x9B941525, + 0xFAE59361, 0xCEB69CEB, 0xC2A86459, 0x12BAA8D1, + 0xB6C1075E, 0xE3056A0C, 0x10D25065, 0xCB03A442, + 0xE0EC6E0E, 0x1698DB3B, 0x4C98A0BE, 0x3278E964, + 0x9F1F9532, 0xE0D392DF, 0xD3A0342B, 0x8971F21E, + 0x1B0A7441, 0x4BA3348C, 0xC5BE7120, 0xC37632D8, + 0xDF359F8D, 0x9B992F2E, 0xE60B6F47, 0x0FE3F11D, + 0xE54CDA54, 0x1EDAD891, 0xCE6279CF, 0xCD3E7E6F, + 0x1618B166, 0xFD2C1D05, 0x848FD2C5, 0xF6FB2299, + 0xF523F357, 0xA6327623, 0x93A83531, 0x56CCCD02, + 0xACF08162, 0x5A75EBB5, 0x6E163697, 0x88D273CC, + 0xDE966292, 0x81B949D0, 0x4C50901B, 0x71C65614, + 0xE6C6C7BD, 0x327A140A, 0x45E1D006, 0xC3F27B9A, + 0xC9AA53FD, 0x62A80F00, 0xBB25BFE2, 0x35BDD2F6, + 0x71126905, 0xB2040222, 0xB6CBCF7C, 0xCD769C2B, + 0x53113EC0, 0x1640E3D3, 0x38ABBD60, 0x2547ADF0, + 0xBA38209C, 0xF746CE76, 0x77AFA1C5, 0x20756060, + 0x85CBFE4E, 0x8AE88DD8, 0x7AAAF9B0, 0x4CF9AA7E, + 0x1948C25C, 0x02FB8A8C, 0x01C36AE4, 0xD6EBE1F9, + 0x90D4F869, 0xA65CDEA0, 0x3F09252D, 0xC208E69F, + 0xB74E6132, 0xCE77E25B, 0x578FDFE3, 0x3AC372E6 + ) + ); + } +} diff --git a/lib/libraries/TeamSpeak3/Helper/Exception.php b/lib/libraries/TeamSpeak3/Helper/Exception.php new file mode 100644 index 0000000..f0a1580 --- /dev/null +++ b/lib/libraries/TeamSpeak3/Helper/Exception.php @@ -0,0 +1,32 @@ +. + * + * @package TeamSpeak3 + * @version 1.1.23 + * @author Sven 'ScP' Paulsen + * @copyright Copyright (c) 2010 by Planet TeamSpeak. All rights reserved. + */ + +/** + * @class TeamSpeak3_Helper_Exception + * @brief Enhanced exception class for TeamSpeak3_Helper_* objects. + */ +class TeamSpeak3_Helper_Exception extends TeamSpeak3_Exception {} diff --git a/lib/libraries/TeamSpeak3/Helper/Profiler.php b/lib/libraries/TeamSpeak3/Helper/Profiler.php new file mode 100644 index 0000000..cd936d8 --- /dev/null +++ b/lib/libraries/TeamSpeak3/Helper/Profiler.php @@ -0,0 +1,101 @@ +. + * + * @package TeamSpeak3 + * @version 1.1.23 + * @author Sven 'ScP' Paulsen + * @copyright Copyright (c) 2010 by Planet TeamSpeak. All rights reserved. + */ + +/** + * @class TeamSpeak3_Helper_Profiler + * @brief Helper class for profiler handling. + */ +class TeamSpeak3_Helper_Profiler +{ + /** + * Stores various timers for code profiling. + * + * @var array + */ + protected static $timers = array(); + + /** + * Inits a timer. + * + * @param string $name + * @return void + */ + public static function init($name = "default") + { + self::$timers[$name] = new TeamSpeak3_Helper_Profiler_Timer($name); + } + + /** + * Starts a timer. + * + * @param string $name + * @return void + */ + public static function start($name = "default") + { + if(array_key_exists($name, self::$timers)) + { + self::$timers[$name]->start(); + } + else + { + self::$timers[$name] = new TeamSpeak3_Helper_Profiler_Timer($name); + } + } + + /** + * Stops a timer. + * + * @param string $name + * @return void + */ + public static function stop($name = "default") + { + if(!array_key_exists($name, self::$timers)) + { + self::init($name); + } + + self::$timers[$name]->stop(); + } + + /** + * Returns a timer. + * + * @param string $name + * @return TeamSpeak3_Helper_Profiler_Timer + */ + public static function get($name = "default") + { + if(!array_key_exists($name, self::$timers)) + { + self::init($name); + } + + return self::$timers[$name]; + } +} diff --git a/lib/libraries/TeamSpeak3/Helper/Profiler/Exception.php b/lib/libraries/TeamSpeak3/Helper/Profiler/Exception.php new file mode 100644 index 0000000..67682c7 --- /dev/null +++ b/lib/libraries/TeamSpeak3/Helper/Profiler/Exception.php @@ -0,0 +1,32 @@ +. + * + * @package TeamSpeak3 + * @version 1.1.23 + * @author Sven 'ScP' Paulsen + * @copyright Copyright (c) 2010 by Planet TeamSpeak. All rights reserved. + */ + +/** + * @class TeamSpeak3_Helper_Profiler_Exception + * @brief Enhanced exception class for TeamSpeak3_Helper_Profiler objects. + */ +class TeamSpeak3_Helper_Profiler_Exception extends TeamSpeak3_Helper_Exception {} diff --git a/lib/libraries/TeamSpeak3/Helper/Profiler/Timer.php b/lib/libraries/TeamSpeak3/Helper/Profiler/Timer.php new file mode 100644 index 0000000..15a8dbb --- /dev/null +++ b/lib/libraries/TeamSpeak3/Helper/Profiler/Timer.php @@ -0,0 +1,154 @@ +. + * + * @package TeamSpeak3 + * @version 1.1.23 + * @author Sven 'ScP' Paulsen + * @copyright Copyright (c) 2010 by Planet TeamSpeak. All rights reserved. + */ + +/** + * @class TeamSpeak3_Helper_Profiler_Timer + * @brief Helper class providing profiler timers. + */ +class TeamSpeak3_Helper_Profiler_Timer +{ + /** + * Indicates wether the timer is running or not. + * + * @var boolean + */ + protected $running = FALSE; + + /** + * Stores the timestamp when the timer was last started. + * + * @var integer + */ + protected $started = 0; + + /** + * Stores the timer name. + * + * @var string + */ + protected $name = null; + + /** + * Stores various information about the server environment. + * + * @var array + */ + protected $data = array(); + + /** + * The TeamSpeak3_Helper_Profiler_Timer constructor. + * + * @param string $name + * @return TeamSpeak3_Helper_Profiler_Timer + */ + public function __construct($name) + { + $this->name = (string) $name; + + $this->data["runtime"] = 0; + $this->data["realmem"] = 0; + $this->data["emalloc"] = 0; + + $this->start(); + } + + /** + * Starts the timer. + * + * @return void + */ + public function start() + { + if($this->isRunning()) return; + + $this->data["realmem_start"] = memory_get_usage(TRUE); + $this->data["emalloc_start"] = memory_get_usage(); + + $this->started = microtime(TRUE); + $this->running = TRUE; + } + + /** + * Stops the timer. + * + * @return void + */ + public function stop() + { + if(!$this->isRunning()) return; + + $this->data["runtime"] += microtime(TRUE) - $this->started; + $this->data["realmem"] += memory_get_usage(TRUE) - $this->data["realmem_start"]; + $this->data["emalloc"] += memory_get_usage() - $this->data["emalloc_start"]; + + $this->started = 0; + $this->running = FALSE; + } + + /** + * Return the timer runtime. + * + * @return mixed + */ + public function getRuntime() + { + if($this->isRunning()) + { + $this->stop(); + $this->start(); + } + + return $this->data["runtime"]; + } + + /** + * Returns the amount of memory allocated to PHP in bytes. + * + * @param boolean $realmem + * @return integer + */ + public function getMemUsage($realmem = FALSE) + { + if($this->isRunning()) + { + $this->stop(); + $this->start(); + } + + return ($realmem !== FALSE) ? $this->data["realmem"] : $this->data["emalloc"]; + } + + /** + * Returns TRUE if the timer is running. + * + * @return boolean + */ + public function isRunning() + { + return $this->running; + } +} diff --git a/lib/libraries/TeamSpeak3/Helper/Signal.php b/lib/libraries/TeamSpeak3/Helper/Signal.php new file mode 100644 index 0000000..0ff372b --- /dev/null +++ b/lib/libraries/TeamSpeak3/Helper/Signal.php @@ -0,0 +1,213 @@ +. + * + * @package TeamSpeak3 + * @version 1.1.23 + * @author Sven 'ScP' Paulsen + * @copyright Copyright (c) 2010 by Planet TeamSpeak. All rights reserved. + */ + +/** + * @class TeamSpeak3_Helper_Signal + * @brief Helper class for signal slots. + */ +class TeamSpeak3_Helper_Signal +{ + /** + * Stores the TeamSpeak3_Helper_Signal object. + * + * @var TeamSpeak3_Helper_Signal + */ + protected static $instance = null; + + /** + * Stores subscribed signals and their slots. + * + * @var array + */ + protected $sigslots = array(); + + /** + * Emits a signal with a given set of parameters. + * + * @param string $signal + * @param mixed $params + * @return mixed + */ + public function emit($signal, $params = null) + { + if(!$this->hasHandlers($signal)) + { + return; + } + + if(!is_array($params)) + { + $params = func_get_args(); + $params = array_slice($params, 1); + } + + foreach($this->sigslots[$signal] as $slot) + { + $return = $slot->call($params); + } + + return $return; + } + + /** + * Generates a MD5 hash based on a given callback. + * + * @param mixed $callback + * @param string + * @return void + */ + public function getCallbackHash($callback) + { + if(!is_callable($callback, TRUE, $callable_name)) + { + throw new TeamSpeak3_Helper_Signal_Exception("invalid callback specified"); + } + + return md5($callable_name); + } + + /** + * Subscribes to a signal and returns the signal handler. + * + * @param string $signal + * @param mixed $callback + * @return TeamSpeak3_Helper_Signal_Handler + */ + public function subscribe($signal, $callback) + { + if(empty($this->sigslots[$signal])) + { + $this->sigslots[$signal] = array(); + } + + $index = $this->getCallbackHash($callback); + + if(!array_key_exists($index, $this->sigslots[$signal])) + { + $this->sigslots[$signal][$index] = new TeamSpeak3_Helper_Signal_Handler($signal, $callback); + } + + return $this->sigslots[$signal][$index]; + } + + /** + * Unsubscribes from a signal. + * + * @param string $signal + * @param mixed $callback + * @return void + */ + public function unsubscribe($signal, $callback = null) + { + if(!$this->hasHandlers($signal)) + { + return; + } + + if($callback !== null) + { + $index = $this->getCallbackHash($callback); + + if(!array_key_exists($index, $this->sigslots[$signal])) + { + return; + } + + unset($this->sigslots[$signal][$index]); + } + else + { + unset($this->sigslots[$signal]); + } + } + + /** + * Returns all registered signals. + * + * @return array + */ + public function getSignals() + { + return array_keys($this->sigslots); + } + + /** + * Returns TRUE there are slots subscribed for a specified signal. + * + * @param string $signal + * @return boolean + */ + public function hasHandlers($signal) + { + return empty($this->sigslots[$signal]) ? FALSE : TRUE; + } + + /** + * Returns all slots for a specified signal. + * + * @param string $signal + * @return array + */ + public function getHandlers($signal) + { + if(!$this->hasHandlers($signal)) + { + return $this->sigslots[$signal]; + } + + return array(); + } + + /** + * Clears all slots for a specified signal. + * + * @param string $signal + * @return void + */ + public function clearHandlers($signal) + { + if(!$this->hasHandlers($signal)) + { + unset($this->sigslots[$signal]); + } + } + + /** + * Returns a singleton instance of TeamSpeak3_Helper_Signal. + * + * @return TeamSpeak3_Helper_Signal + */ + public static function getInstance() + { + if(self::$instance === null) + { + self::$instance = new self(); + } + + return self::$instance; + } +} diff --git a/lib/libraries/TeamSpeak3/Helper/Signal/Exception.php b/lib/libraries/TeamSpeak3/Helper/Signal/Exception.php new file mode 100644 index 0000000..f9b49a9 --- /dev/null +++ b/lib/libraries/TeamSpeak3/Helper/Signal/Exception.php @@ -0,0 +1,32 @@ +. + * + * @package TeamSpeak3 + * @version 1.1.23 + * @author Sven 'ScP' Paulsen + * @copyright Copyright (c) 2010 by Planet TeamSpeak. All rights reserved. + */ + +/** + * @class TeamSpeak3_Helper_Signal_Exception + * @brief Enhanced exception class for TeamSpeak3_Helper_Signal objects. + */ +class TeamSpeak3_Helper_Signal_Exception extends TeamSpeak3_Helper_Exception {} diff --git a/lib/libraries/TeamSpeak3/Helper/Signal/Handler.php b/lib/libraries/TeamSpeak3/Helper/Signal/Handler.php new file mode 100644 index 0000000..8fd31ec --- /dev/null +++ b/lib/libraries/TeamSpeak3/Helper/Signal/Handler.php @@ -0,0 +1,78 @@ +. + * + * @package TeamSpeak3 + * @version 1.1.23 + * @author Sven 'ScP' Paulsen + * @copyright Copyright (c) 2010 by Planet TeamSpeak. All rights reserved. + */ + +/** + * @class TeamSpeak3_Helper_Signal_Handler + * @brief Helper class providing handler functions for signals. + */ +class TeamSpeak3_Helper_Signal_Handler +{ + /** + * Stores the name of the subscribed signal. + * + * @var string + */ + protected $signal = null; + + /** + * Stores the callback function for the subscribed signal. + * + * @var mixed + */ + protected $callback = null; + + /** + * The TeamSpeak3_Helper_Signal_Handler constructor. + * + * @param string $signal + * @param mixed $callback + * @throws TeamSpeak3_Helper_Signal_Exception + * @return TeamSpeak3_Helper_Signal_Handler + */ + public function __construct($signal, $callback) + { + $this->signal = (string) $signal; + + if(!is_callable($callback)) + { + throw new TeamSpeak3_Helper_Signal_Exception("invalid callback specified for signal '" . $signal . "'"); + } + + $this->callback = $callback; + } + + /** + * Invoke the signal handler. + * + * @param array $args + * @return mixed + */ + public function call(array $args = array()) + { + return call_user_func_array($this->callback, $args); + } +} diff --git a/lib/libraries/TeamSpeak3/Helper/Signal/Interface.php b/lib/libraries/TeamSpeak3/Helper/Signal/Interface.php new file mode 100644 index 0000000..11e3c88 --- /dev/null +++ b/lib/libraries/TeamSpeak3/Helper/Signal/Interface.php @@ -0,0 +1,353 @@ +. + * + * @package TeamSpeak3 + * @version 1.1.23 + * @author Sven 'ScP' Paulsen + * @copyright Copyright (c) 2010 by Planet TeamSpeak. All rights reserved. + */ + +/** + * @class TeamSpeak3_Helper_Signal_Interface + * @brief Interface class describing the layout for TeamSpeak3_Helper_Signal callbacks. + */ +interface TeamSpeak3_Helper_Signal_Interface +{ + /** + * Possible callback for 'Connected' signals. + * + * === Examples === + * - TeamSpeak3_Helper_Signal::getInstance()->subscribe("serverqueryConnected", array($object, "onConnect")); + * - TeamSpeak3_Helper_Signal::getInstance()->subscribe("filetransferConnected", array($object, "onConnect")); + * - TeamSpeak3_Helper_Signal::getInstance()->subscribe("blacklistConnected", array($object, "onConnect")); + * - TeamSpeak3_Helper_Signal::getInstance()->subscribe("updateConnected", array($object, "onConnect")); + * + * @param TeamSpeak3_Adapter_Abstract $adapter + * @return void + */ + public function onConnect(TeamSpeak3_Adapter_Abstract $adapter); + + /** + * Possible callback for 'Disconnected' signals. + * + * === Examples === + * - TeamSpeak3_Helper_Signal::getInstance()->subscribe("serverqueryDisconnected", array($object, "onDisconnect")); + * - TeamSpeak3_Helper_Signal::getInstance()->subscribe("filetransferDisconnected", array($object, "onDisconnect")); + * - TeamSpeak3_Helper_Signal::getInstance()->subscribe("blacklistDisconnected", array($object, "onDisconnect")); + * - TeamSpeak3_Helper_Signal::getInstance()->subscribe("updateDisconnected", array($object, "onDisconnect")); + * + * @return void + */ + public function onDisconnect(); + + /** + * Possible callback for 'serverqueryCommandStarted' signals. + * + * === Examples === + * - TeamSpeak3_Helper_Signal::getInstance()->subscribe("serverqueryCommandStarted", array($object, "onCommandStarted")); + * + * @param string $cmd + * @return void + */ + public function onCommandStarted($cmd); + + /** + * Possible callback for 'serverqueryCommandFinished' signals. + * + * === Examples === + * - TeamSpeak3_Helper_Signal::getInstance()->subscribe("serverqueryCommandFinished", array($object, "onCommandFinished")); + * + * @param string $cmd + * @param TeamSpeak3_Adapter_ServerQuery_Reply $reply + * @return void + */ + public function onCommandFinished($cmd, TeamSpeak3_Adapter_ServerQuery_Reply $reply); + + /** + * Possible callback for 'notifyEvent' signals. + * + * === Examples === + * - TeamSpeak3_Helper_Signal::getInstance()->subscribe("notifyEvent", array($object, "onEvent")); + * + * @param TeamSpeak3_Adapter_ServerQuery_Event $event + * @param TeamSpeak3_Node_Host $host + * @return void + */ + public function onEvent(TeamSpeak3_Adapter_ServerQuery_Event $event, TeamSpeak3_Node_Host $host); + + /** + * Possible callback for 'notifyError' signals. + * + * === Examples === + * - TeamSpeak3_Helper_Signal::getInstance()->subscribe("notifyError", array($object, "onError")); + * + * @param TeamSpeak3_Adapter_ServerQuery_Reply $reply + * @return void + */ + public function onError(TeamSpeak3_Adapter_ServerQuery_Reply $reply); + + /** + * Possible callback for 'notifyServerselected' signals. + * + * === Examples === + * - TeamSpeak3_Helper_Signal::getInstance()->subscribe("notifyServerselected", array($object, "onServerselected")); + * + * @param TeamSpeak3_Node_Host $host + * @return void + */ + public function onServerselected(TeamSpeak3_Node_Host $host); + + /** + * Possible callback for 'notifyServercreated' signals. + * + * === Examples === + * - TeamSpeak3_Helper_Signal::getInstance()->subscribe("notifyServercreated", array($object, "onServercreated")); + * + * @param TeamSpeak3_Node_Host $host + * @param integer $sid + * @return void + */ + public function onServercreated(TeamSpeak3_Node_Host $host, $sid); + + /** + * Possible callback for 'notifyServerdeleted' signals. + * + * === Examples === + * - TeamSpeak3_Helper_Signal::getInstance()->subscribe("notifyServerdeleted", array($object, "onServerdeleted")); + * + * @param TeamSpeak3_Node_Host $host + * @param integer $sid + * @return void + */ + public function onServerdeleted(TeamSpeak3_Node_Host $host, $sid); + + /** + * Possible callback for 'notifyServerstarted' signals. + * + * === Examples === + * - TeamSpeak3_Helper_Signal::getInstance()->subscribe("notifyServerstarted", array($object, "onServerstarted")); + * + * @param TeamSpeak3_Node_Host $host + * @param integer $sid + * @return void + */ + public function onServerstarted(TeamSpeak3_Node_Host $host, $sid); + + /** + * Possible callback for 'notifyServerstopped' signals. + * + * === Examples === + * - TeamSpeak3_Helper_Signal::getInstance()->subscribe("notifyServerstopped", array($object, "onServerstopped")); + * + * @param TeamSpeak3_Node_Host $host + * @param integer $sid + * @return void + */ + public function onServerstopped(TeamSpeak3_Node_Host $host, $sid); + + /** + * Possible callback for 'notifyServershutdown' signals. + * + * === Examples === + * - TeamSpeak3_Helper_Signal::getInstance()->subscribe("notifyServershutdown", array($object, "onServershutdown")); + * + * @param TeamSpeak3_Node_Host $host + * @return void + */ + public function onServershutdown(TeamSpeak3_Node_Host $host); + + /** + * Possible callback for 'notifyLogin' signals. + * + * === Examples === + * - TeamSpeak3_Helper_Signal::getInstance()->subscribe("notifyLogin", array($object, "onLogin")); + * + * @param TeamSpeak3_Node_Host $host + * @return void + */ + public function onLogin(TeamSpeak3_Node_Host $host); + + /** + * Possible callback for 'notifyLogout' signals. + * + * === Examples === + * - TeamSpeak3_Helper_Signal::getInstance()->subscribe("notifyLogout", array($object, "onLogout")); + * + * @param TeamSpeak3_Node_Host $host + * @return void + */ + public function onLogout(TeamSpeak3_Node_Host $host); + + /** + * Possible callback for 'notifyTokencreated' signals. + * + * === Examples === + * - TeamSpeak3_Helper_Signal::getInstance()->subscribe("notifyTokencreated", array($object, "onTokencreated")); + * + * @param TeamSpeak3_Node_Server $server + * @param string $token + * @return void + */ + public function onTokencreated(TeamSpeak3_Node_Server $server, $token); + + /** + * Possible callback for 'filetransferHandshake' signals. + * + * === Examples === + * - TeamSpeak3_Helper_Signal::getInstance()->subscribe("filetransferHandshake", array($object, "onFtHandshake")); + * + * @param TeamSpeak3_Adapter_FileTransfer $adapter + * @return void + */ + public function onFtHandshake(TeamSpeak3_Adapter_FileTransfer $adapter); + + /** + * Possible callback for 'filetransferUploadStarted' signals. + * + * === Examples === + * - TeamSpeak3_Helper_Signal::getInstance()->subscribe("filetransferUploadStarted", array($object, "onFtUploadStarted")); + * + * @param string $ftkey + * @param integer $seek + * @param integer $size + * @return void + */ + public function onFtUploadStarted($ftkey, $seek, $size); + + /** + * Possible callback for 'filetransferUploadProgress' signals. + * + * === Examples === + * - TeamSpeak3_Helper_Signal::getInstance()->subscribe("filetransferUploadProgress", array($object, "onFtUploadProgress")); + * + * @param string $ftkey + * @param integer $seek + * @param integer $size + * @return void + */ + public function onFtUploadProgress($ftkey, $seek, $size); + + /** + * Possible callback for 'filetransferUploadFinished' signals. + * + * === Examples === + * - TeamSpeak3_Helper_Signal::getInstance()->subscribe("filetransferUploadFinished", array($object, "onFtUploadFinished")); + * + * @param string $ftkey + * @param integer $seek + * @param integer $size + * @return void + */ + public function onFtUploadFinished($ftkey, $seek, $size); + + /** + * Possible callback for 'filetransferDownloadStarted' signals. + * + * === Examples === + * - TeamSpeak3_Helper_Signal::getInstance()->subscribe("filetransferDownloadStarted", array($object, "onFtDownloadStarted")); + * + * @param string $ftkey + * @param integer $buff + * @param integer $size + * @return void + */ + public function onFtDownloadStarted($ftkey, $buff, $size); + + /** + * Possible callback for 'filetransferDownloadProgress' signals. + * + * === Examples === + * - TeamSpeak3_Helper_Signal::getInstance()->subscribe("filetransferDownloadProgress", array($object, "onFtDownloadProgress")); + * + * @param string $ftkey + * @param integer $buff + * @param integer $size + * @return void + */ + public function onFtDownloadProgress($ftkey, $buff, $size); + + /** + * Possible callback for 'filetransferDownloadFinished' signals. + * + * === Examples === + * - TeamSpeak3_Helper_Signal::getInstance()->subscribe("filetransferDownloadFinished", array($object, "onFtDownloadFinished")); + * + * @param string $ftkey + * @param integer $buff + * @param integer $size + * @return void + */ + public function onFtDownloadFinished($ftkey, $buff, $size); + + /** + * Possible callback for 'DataRead' signals. + * + * === Examples === + * - TeamSpeak3_Helper_Signal::getInstance()->subscribe("serverqueryDataRead", array($object, "onDebugDataRead")); + * - TeamSpeak3_Helper_Signal::getInstance()->subscribe("filetransferDataRead", array($object, "onDebugDataRead")); + * - TeamSpeak3_Helper_Signal::getInstance()->subscribe("blacklistDataRead", array($object, "onDebugDataRead")); + * - TeamSpeak3_Helper_Signal::getInstance()->subscribe("updateDataRead", array($object, "onDebugDataRead")); + * + * @param string $data + * @return void + */ + public function onDebugDataRead($data); + + /** + * Possible callback for 'DataSend' signals. + * + * === Examples === + * - TeamSpeak3_Helper_Signal::getInstance()->subscribe("serverqueryDataSend", array($object, "onDebugDataSend")); + * - TeamSpeak3_Helper_Signal::getInstance()->subscribe("filetransferDataSend", array($object, "onDebugDataSend")); + * - TeamSpeak3_Helper_Signal::getInstance()->subscribe("blacklistDataSend", array($object, "onDebugDataSend")); + * - TeamSpeak3_Helper_Signal::getInstance()->subscribe("updateDataSend", array($object, "onDebugDataSend")); + * + * @param string $data + * @return void + */ + public function onDebugDataSend($data); + + /** + * Possible callback for 'WaitTimeout' signals. + * + * === Examples === + * - TeamSpeak3_Helper_Signal::getInstance()->subscribe("serverqueryWaitTimeout", array($object, "onWaitTimeout")); + * - TeamSpeak3_Helper_Signal::getInstance()->subscribe("filetransferWaitTimeout", array($object, "onWaitTimeout")); + * - TeamSpeak3_Helper_Signal::getInstance()->subscribe("blacklistWaitTimeout", array($object, "onWaitTimeout")); + * - TeamSpeak3_Helper_Signal::getInstance()->subscribe("updateWaitTimeout", array($object, "onWaitTimeout")); + * + * @param integer $time + * @param TeamSpeak3_Adapter_Abstract $adapter + * @return void + */ + public function onWaitTimeout($time, TeamSpeak3_Adapter_Abstract $adapter); + + /** + * Possible callback for 'errorException' signals. + * + * === Examples === + * - TeamSpeak3_Helper_Signal::getInstance()->subscribe("errorException", array($object, "onException")); + * + * @param TeamSpeak3_Exception $e + * @return void + */ + public function onException(TeamSpeak3_Exception $e); +} diff --git a/lib/libraries/TeamSpeak3/Helper/String.php b/lib/libraries/TeamSpeak3/Helper/String.php new file mode 100644 index 0000000..2164b4d --- /dev/null +++ b/lib/libraries/TeamSpeak3/Helper/String.php @@ -0,0 +1,939 @@ +. + * + * @package TeamSpeak3 + * @version 1.1.23 + * @author Sven 'ScP' Paulsen + * @copyright Copyright (c) 2010 by Planet TeamSpeak. All rights reserved. + */ + +/** + * @class TeamSpeak3_Helper_String + * @brief Helper class for string handling. + */ +class TeamSpeak3_Helper_String implements ArrayAccess, Iterator, Countable +{ + /** + * Stores the original string. + * + * @var string + */ + protected $string; + + /** + * @ignore + */ + protected $position = 0; + + /** + * The TeamSpeak3_Helper_String constructor. + * + * @param string $string + * @return TeamSpeak3_Helper_String + */ + public function __construct($string) + { + $this->string = strval($string); + } + + /** + * Returns a TeamSpeak3_Helper_String object for thegiven string. + * + * @param string $string + * @return TeamSpeak3_Helper_String + */ + public static function factory($string) + { + return new self($string); + } + + /** + * Replaces every occurrence of the string $search with the string $replace. + * + * @param string $search + * @param string $replace + * @param boolean $caseSensitivity + * @return TeamSpeak3_Helper_String + */ + public function replace($search, $replace, $caseSensitivity = TRUE) + { + if($caseSensitivity) + { + $this->string = str_replace($search, $replace, $this->string); + } + else + { + $this->string = str_ireplace($search, $replace, $this->string); + } + + return $this; + } + + /** + * This function replaces indexed or associative signs with given values. + * + * @param array $args + * @param string $char + * @return TeamSpeak3_Helper_String + */ + public function arg(array $args, $char = "%") + { + $args = array_reverse($args, TRUE); + + foreach($args as $key => $val) + { + $args[$char . $key] = $val; + unset($args[$key]); + } + + $this->string = strtr($this->string, $args); + + return $this; + } + + /** + * Returns true if the string starts with $pattern. + * + * @param string $pattern + * @return boolean + */ + public function startsWith($pattern) + { + return (substr($this->string, 0, strlen($pattern)) == $pattern) ? TRUE : FALSE; + } + + /** + * Returns true if the string ends with $pattern. + * + * @param string $pattern + * @return boolean + */ + public function endsWith($pattern) + { + return (substr($this->string, strlen($pattern)*-1) == $pattern) ? TRUE : FALSE; + } + + /** + * Returns the position of the first occurrence of a char in a string. + * + * @param string $needle + * @return integer + */ + public function findFirst($needle) + { + return strpos($this->string, $needle); + } + + /** + * Returns the position of the last occurrence of a char in a string. + * + * @param string $needle + * @return integer + */ + public function findLast($needle) + { + return strrpos($this->string, $needle); + } + + /** + * Returns the lowercased string. + * + * @return TeamSpeak3_Helper_String + */ + public function toLower() + { + return new self(strtolower($this->string)); + } + + /** + * Returns the uppercased string. + * + * @return TeamSpeak3_Helper_String + */ + public function toUpper() + { + return new self(strtoupper($this->string)); + } + + /** + * Returns true if the string contains $pattern. + * + * @param string $pattern + * @param booean $regexp + * @return boolean + */ + public function contains($pattern, $regexp = FALSE) + { + if(empty($pattern)) + { + return TRUE; + } + + if($regexp) + { + return (preg_match("/" . $pattern . "/i", $this->string)) ? TRUE : FALSE; + } + else + { + return (stristr($this->string, $pattern) !== FALSE) ? TRUE : FALSE; + } + } + + /** + * Returns part of a string. + * + * @param integer $start + * @param integer $length + * @return TeamSpeak3_Helper_String + */ + public function substr($start, $length = null) + { + $string = ($length !== null) ? substr($this->string, $start, $length) : substr($this->string, $start); + + return new self($string); + } + + /** + * Splits the string into substrings wherever $separator occurs. + * + * @param string $separator + * @param integer $limit + * @return array + */ + public function split($separator, $limit = 0) + { + $parts = explode($separator, $this->string, ($limit) ? intval($limit) : $this->count()); + + foreach($parts as $key => $val) + { + $parts[$key] = new self($val); + } + + return $parts; + } + + /** + * Appends $part to the string. + * + * @param string $part + * @return TeamSpeak3_Helper_String + */ + public function append($part) + { + $this->string = $this->string . strval($part); + + return $this; + } + + /** + * Prepends $part to the string. + * + * @param string $part + * @return TeamSpeak3_Helper_String + */ + public function prepend($part) + { + $this->string = strval($part) . $this->string; + + return $this; + } + + /** + * Returns a section of the string. + * + * @param string $separator + * @param integer $first + * @param integer $last + * @return TeamSpeak3_Helper_String + */ + public function section($separator, $first = 0, $last = 0) + { + $sections = explode($separator, $this->string); + + $total = count($sections); + $first = intval($first); + $last = intval($last); + + if($first > $total) return null; + if($first > $last) $last = $first; + + for($i = 0; $i < $total; $i++) + { + if($i < $first || $i > $last) + { + unset($sections[$i]); + } + } + + $string = implode($separator, $sections); + + return new self($string); + } + + /** + * Sets the size of the string to $size characters. + * + * @param integer $size + * @param string $char + * @return TeamSpeak3_Helper_String + */ + public function resize($size, $char = "\0") + { + $chars = ($size - $this->count()); + + if($chars < 0) + { + $this->string = substr($this->string, 0, $chars); + } + elseif($chars > 0) + { + $this->string = str_pad($this->string, $size, strval($char)); + } + + return $this; + } + + /** + * Strips whitespaces (or other characters) from the beginning and end of the string. + * + * @return TeamSpeak3_Helper_String + */ + public function trim() + { + $this->string = trim($this->string); + + return $this; + } + + /** + * Escapes a string using the TeamSpeak 3 escape patterns. + * + * @return TeamSpeak3_Helper_String + */ + public function escape() + { + foreach(TeamSpeak3::getEscapePatterns() as $search => $replace) + { + $this->string = str_replace($search, $replace, $this->string); + } + + return $this; + } + + /** + * Unescapes a string using the TeamSpeak 3 escape patterns. + * + * @return TeamSpeak3_Helper_String + */ + public function unescape() + { + $this->string = strtr($this->string, array_flip(TeamSpeak3::getEscapePatterns())); + + return $this; + } + + /** + * Removes any non alphanumeric characters from the string. + * + * @return TeamSpeak3_Helper_String + */ + public function filterAlnum() + { + $this->string = preg_replace("/[^[:alnum:]]/", "", $this->string); + + return $this; + } + + /** + * Removes any non alphabetic characters from the string. + * + * @return TeamSpeak3_Helper_String + */ + public function filterAlpha() + { + $this->string = preg_replace("/[^[:alpha:]]/", "", $this->string); + + return $this; + } + + /** + * Removes any non numeric characters from the string. + * + * @return TeamSpeak3_Helper_String + */ + public function filterDigits() + { + $this->string = preg_replace("/[^[:digit:]]/", "", $this->string); + + return $this; + } + + /** + * Returns TRUE if the string is a numeric value. + * + * @return boolean + */ + public function isInt() + { + return (is_numeric($this->string) && !$this->contains(".")) ? TRUE : FALSE; + } + + /** + * Returns the integer value of the string. + * + * @return float + * @return integer + */ + public function toInt() + { + if($this->string == pow(2, 63) || $this->string == pow(2, 64)) + { + return -1; + } + + return ($this->string > pow(2, 31)) ? floatval($this->string) : intval($this->string); + } + + /** + * Calculates and returns the crc32 polynomial of the string. + * + * @return string + */ + public function toCrc32() + { + return crc32($this->string); + } + + /** + * Calculates and returns the md5 checksum of the string. + * + * @return string + */ + public function toMd5() + { + return md5($this->string); + } + + /** + * Calculates and returns the sha1 checksum of the string. + * + * @return string + */ + public function toSha1() + { + return sha1($this->string); + } + + /** + * Returns TRUE if the string is UTF-8 encoded. This method searches for non-ascii multibyte + * sequences in the UTF-8 range. + * + * @return boolean + */ + public function isUtf8() + { + $pattern = array(); + + $pattern[] = "[\xC2-\xDF][\x80-\xBF]"; // non-overlong 2-byte + $pattern[] = "\xE0[\xA0-\xBF][\x80-\xBF]"; // excluding overlongs + $pattern[] = "[\xE1-\xEC\xEE\xEF][\x80-\xBF]{2}"; // straight 3-byte + $pattern[] = "\xED[\x80-\x9F][\x80-\xBF]"; // excluding surrogates + $pattern[] = "\xF0[\x90-\xBF][\x80-\xBF]{2}"; // planes 1-3 + $pattern[] = "[\xF1-\xF3][\x80-\xBF]{3}"; // planes 4-15 + $pattern[] = "\xF4[\x80-\x8F][\x80-\xBF]{2}"; // plane 16 + + return preg_match("%(?:" . implode("|", $pattern) . ")+%xs", $this->string); + } + + /** + * Converts the string to UTF-8. + * + * @return TeamSpeak3_Helper_String + */ + public function toUtf8() + { + if(!$this->isUtf8()) + { + $this->string = utf8_encode($this->string); + } + + return $this; + } + + /** + * Encodes the string with MIME base64 and returns the result. + * + * @return string + */ + public function toBase64() + { + return base64_encode($this->string); + } + + /** + * Decodes the string with MIME base64 and returns the result as an TeamSpeak3_Helper_String + * + * @param string + * @return TeamSpeak3_Helper_String + */ + public static function fromBase64($base64) + { + return new self(base64_decode($base64)); + } + + /** + * Returns the hexadecimal value of the string. + * + * @return string + */ + public function toHex() + { + $hex = ""; + + foreach($this as $char) + { + $hex .= $char->toHex(); + } + + return $hex; + } + + /** + * Returns the TeamSpeak3_Helper_String based on a given hex value. + * + * @param string + * @throws TeamSpeak3_Helper_Exception + * @return TeamSpeak3_Helper_String + */ + public static function fromHex($hex) + { + $string = ""; + + if(strlen($hex)%2 == 1) + { + throw new TeamSpeak3_Helper_Exception("given parameter '" . $hex . "' is not a valid hexadecimal number"); + } + + foreach(str_split($hex, 2) as $chunk) + { + $string .= chr(hexdec($chunk)); + } + + return new self($string); + } + + /** + * Returns the string transliterated from UTF-8 to Latin. + * + * @return TeamSpeak3_Helper_String + */ + public function transliterate() + { + $utf8_accents = array( + "à" => "a", + "ô" => "o", + "Ä?" => "d", + "ḟ" => "f", + "ë" => "e", + "Å¡" => "s", + "Æ¡" => "o", + "ß" => "ss", + "ă" => "a", + "Å™" => "r", + "È›" => "t", + "ň" => "n", + "Ä?" => "a", + "Ä·" => "k", + "Å?" => "s", + "ỳ" => "y", + "ņ" => "n", + "ĺ" => "l", + "ħ" => "h", + "á¹—" => "p", + "ó" => "o", + "ú" => "u", + "Ä›" => "e", + "é" => "e", + "ç" => "c", + "áº?" => "w", + "Ä‹" => "c", + "õ" => "o", + "ṡ" => "s", + "ø" => "o", + "Ä£" => "g", + "ŧ" => "t", + "È™" => "s", + "Ä—" => "e", + "ĉ" => "c", + "Å›" => "s", + "î" => "i", + "ű" => "u", + "ć" => "c", + "Ä™" => "e", + "ŵ" => "w", + "ṫ" => "t", + "Å«" => "u", + "Ä?" => "c", + "ö" => "oe", + "è" => "e", + "Å·" => "y", + "Ä…" => "a", + "Å‚" => "l", + "ų" => "u", + "ů" => "u", + "ÅŸ" => "s", + "ÄŸ" => "g", + "ļ" => "l", + "Æ’" => "f", + "ž" => "z", + "ẃ" => "w", + "ḃ" => "b", + "Ã¥" => "a", + "ì" => "i", + "ï" => "i", + "ḋ" => "d", + "Å¥" => "t", + "Å—" => "r", + "ä" => "ae", + "í" => "i", + "Å•" => "r", + "ê" => "e", + "ü" => "ue", + "ò" => "o", + "Ä“" => "e", + "ñ" => "n", + "Å„" => "n", + "Ä¥" => "h", + "Ä?" => "g", + "Ä‘" => "d", + "ĵ" => "j", + "ÿ" => "y", + "Å©" => "u", + "Å­" => "u", + "ư" => "u", + "Å£" => "t", + "ý" => "y", + "Å‘" => "o", + "â" => "a", + "ľ" => "l", + "ẅ" => "w", + "ż" => "z", + "Ä«" => "i", + "ã" => "a", + "Ä¡" => "g", + "á¹?" => "m", + "Å?" => "o", + "Ä©" => "i", + "ù" => "u", + "į" => "i", + "ź" => "z", + "á" => "a", + "û" => "u", + "þ" => "th", + "ð" => "dh", + "æ" => "ae", + "µ" => "u", + "Ä•" => "e", + "Å“" => "oe", + "À" => "A", + "Ô" => "O", + "ÄŽ" => "D", + "Ḟ" => "F", + "Ë" => "E", + "Å " => "S", + "Æ " => "O", + "Ä‚" => "A", + "Ř" => "R", + "Èš" => "T", + "Ň" => "N", + "Ä€" => "A", + "Ķ" => "K", + "Åœ" => "S", + "Ỳ" => "Y", + "Å…" => "N", + "Ĺ" => "L", + "Ħ" => "H", + "á¹–" => "P", + "Ó" => "O", + "Ú" => "U", + "Äš" => "E", + "É" => "E", + "Ç" => "C", + "Ẁ" => "W", + "ÄŠ" => "C", + "Õ" => "O", + "á¹ " => "S", + "Ø" => "O", + "Ä¢" => "G", + "Ŧ" => "T", + "Ș" => "S", + "Ä–" => "E", + "Ĉ" => "C", + "Åš" => "S", + "ÃŽ" => "I", + "Ű" => "U", + "Ć" => "C", + "Ę" => "E", + "Å´" => "W", + "Ṫ" => "T", + "Ū" => "U", + "ÄŒ" => "C", + "Ö" => "Oe", + "È" => "E", + "Ŷ" => "Y", + "Ä„" => "A", + "Å?" => "L", + "Ų" => "U", + "Å®" => "U", + "Åž" => "S", + "Äž" => "G", + "Ä»" => "L", + "Æ‘" => "F", + "Ž" => "Z", + "Ẃ" => "W", + "Ḃ" => "B", + "Ã…" => "A", + "ÃŒ" => "I", + "Ã?" => "I", + "Ḋ" => "D", + "Ť" => "T", + "Å–" => "R", + "Ä" => "Ae", + "Ã?" => "I", + "Å”" => "R", + "Ê" => "E", + "Ü" => "Ue", + "Ã’" => "O", + "Ä’" => "E", + "Ñ" => "N", + "Ń" => "N", + "Ĥ" => "H", + "Äœ" => "G", + "Ä?" => "D", + "Ä´" => "J", + "Ÿ" => "Y", + "Ũ" => "U", + "Ŭ" => "U", + "Ư" => "U", + "Å¢" => "T", + "Ã?" => "Y", + "Å?" => "O", + "Â" => "A", + "Ľ" => "L", + "Ẅ" => "W", + "Å»" => "Z", + "Ī" => "I", + "Ã" => "A", + "Ä " => "G", + "á¹€" => "M", + "ÅŒ" => "O", + "Ĩ" => "I", + "Ù" => "U", + "Ä®" => "I", + "Ź" => "Z", + "Ã?" => "A", + "Û" => "U", + "Þ" => "Th", + "Ã?" => "Dh", + "Æ" => "Ae", + "Ä”" => "E", + "Å’" => "Oe", + ); + + return new self($this->toUtf8()->replace(array_keys($utf8_accents), array_values($utf8_accents))); + } + + /** + * Processes the string and replaces all accented UTF-8 characters by unaccented ASCII-7 "equivalents", + * whitespaces are replaced by a pre-defined spacer and the string is lowercase. + * + * @param string $spacer + * @return TeamSpeak3_Helper_String + */ + public function uriSafe($spacer = "-") + { + $this->string = str_replace($spacer, " ", $this->string); + $this->string = $this->transliterate(); + $this->string = preg_replace("/(\s|[^A-Za-z0-9\-])+/", $spacer, trim(strtolower($this->string))); + $this->string = trim($this->string, $spacer); + + return new self($this->string); + } + + /** + * Replaces space characters with percent encoded strings. + * + * @return string + */ + public function spaceToPercent() + { + return str_replace(" ", "%20", $this->string); + } + + /** + * Returns the string as a standard string + * + * @return string + */ + public function toString() + { + return $this->string; + } + + /** + * Magical function that allows you to call PHP's built-in string functions on the TeamSpeak3_Helper_String object. + * + * @param string $function + * @param array $args + * @throws TeamSpeak3_Helper_Exception + * @return TeamSpeak3_Helper_String + */ + public function __call($function, $args) + { + if(!function_exists($function)) + { + throw new TeamSpeak3_Helper_Exception("cannot call undefined function '" . $function . "' on this object"); + } + + if(count($args)) + { + if(($key = array_search($this, $args, TRUE)) !== FALSE) + { + $args[$key] = $this->string; + } + else + { + throw new TeamSpeak3_Helper_Exception("cannot call undefined function '" . $function . "' without the " . __CLASS__ . " object parameter"); + } + + $return = call_user_func_array($function, $args); + } + else + { + $return = call_user_func($function, $this->string); + } + + if(is_string($return)) + { + $this->string = $return; + } + else + { + return $return; + } + + return $this; + } + + /** + * Returns the character as a standard string. + * + * @return string + */ + public function __toString() + { + return (string) $this->string; + } + + /** + * @ignore + */ + public function count() + { + return strlen($this->string); + } + + /** + * @ignore + */ + public function rewind() + { + $this->position = 0; + } + + /** + * @ignore + */ + public function valid() + { + return $this->position < $this->count(); + } + + /** + * @ignore + */ + public function key() + { + return $this->position; + } + + /** + * @ignore + */ + public function current() + { + return new TeamSpeak3_Helper_Char($this->string{$this->position}); + } + + /** + * @ignore + */ + public function next() + { + $this->position++; + } + + /** + * @ignore + */ + public function offsetExists($offset) + { + return ($offset < strlen($this->string)) ? TRUE : FALSE; + } + + /** + * @ignore + */ + public function offsetGet($offset) + { + return ($this->offsetExists($offset)) ? new TeamSpeak3_Helper_Char($this->string{$offset}) : null; + } + + /** + * @ignore + */ + public function offsetSet($offset, $value) + { + if(!$this->offsetExists($offset)) return; + + $this->string{$offset} = strval($value); + } + + /** + * @ignore + */ + public function offsetUnset($offset) + { + if(!$this->offsetExists($offset)) return; + + $this->string = substr_replace($this->string, "", $offset, 1); + } +} diff --git a/lib/libraries/TeamSpeak3/Helper/Uri.php b/lib/libraries/TeamSpeak3/Helper/Uri.php new file mode 100644 index 0000000..9abee01 --- /dev/null +++ b/lib/libraries/TeamSpeak3/Helper/Uri.php @@ -0,0 +1,717 @@ +. + * + * @package TeamSpeak3 + * @version 1.1.23 + * @author Sven 'ScP' Paulsen + * @copyright Copyright (c) 2010 by Planet TeamSpeak. All rights reserved. + */ + +/** + * @class TeamSpeak3_Helper_Uri + * @brief Helper class for URI handling. + */ +class TeamSpeak3_Helper_Uri +{ + /** + * Stores the URI scheme. + * + * @var string + */ + protected $scheme = null; + + /** + * Stores the URI username + * + * @var string + */ + protected $user = null; + + /** + * Stores the URI password. + * + * @var string + */ + protected $pass = null; + + /** + * Stores the URI host. + * + * @var string + */ + protected $host = null; + + /** + * Stores the URI port. + * + * @var string + */ + protected $port = null; + + /** + * Stores the URI path. + * + * @var string + */ + protected $path = null; + + /** + * Stores the URI query string. + * + * @var string + */ + protected $query = null; + + /** + * Stores the URI fragment string. + * + * @var string + */ + protected $fragment = null; + + /** + * Stores grammar rules for validation via regex. + * + * @var array + */ + protected $regex = array(); + + /** + * The TeamSpeak3_Helper_Uri constructor. + * + * @param string $uri + * @throws TeamSpeak3_Helper_Exception + * @return TeamSpeak3_Helper_Uri + */ + public function __construct($uri) + { + $uri = explode(":", strval($uri), 2); + + $this->scheme = strtolower($uri[0]); + $uriString = isset($uri[1]) ? $uri[1] : ""; + + if(!ctype_alnum($this->scheme)) + { + throw new TeamSpeak3_Helper_Exception("invalid URI scheme '" . $this->scheme . "' supplied"); + } + + /* grammar rules for validation */ + $this->regex["alphanum"] = "[^\W_]"; + $this->regex["escaped"] = "(?:%[\da-fA-F]{2})"; + $this->regex["mark"] = "[-_.!~*'()\[\]]"; + $this->regex["reserved"] = "[;\/?:@&=+$,]"; + $this->regex["unreserved"] = "(?:" . $this->regex["alphanum"] . "|" . $this->regex["mark"] . ")"; + $this->regex["segment"] = "(?:(?:" . $this->regex["unreserved"] . "|" . $this->regex["escaped"] . "|[:@&=+$,;])*)"; + $this->regex["path"] = "(?:\/" . $this->regex["segment"] . "?)+"; + $this->regex["uric"] = "(?:" . $this->regex["reserved"] . "|" . $this->regex["unreserved"] . "|" . $this->regex["escaped"] . ")"; + + if(strlen($uriString) > 0) + { + $this->parseUri($uriString); + } + + if(!$this->isValid()) + { + throw new TeamSpeak3_Helper_Exception("invalid URI supplied"); + } + } + + /** + * Parses the scheme-specific portion of the URI and place its parts into instance variables. + * + * @throws TeamSpeak3_Helper_Exception + * @return void + */ + protected function parseUri($uriString = '') + { + $status = @preg_match("~^((//)([^/?#]*))([^?#]*)(\?([^#]*))?(#(.*))?$~", $uriString, $matches); + + if($status === FALSE) + { + throw new TeamSpeak3_Helper_Exception("URI scheme-specific decomposition failed"); + } + + if(!$status) return; + + $this->path = (isset($matches[4])) ? $matches[4] : ''; + $this->query = (isset($matches[6])) ? $matches[6] : ''; + $this->fragment = (isset($matches[8])) ? $matches[8] : ''; + + $status = @preg_match("~^(([^:@]*)(:([^@]*))?@)?([^:]+)(:(.*))?$~", (isset($matches[3])) ? $matches[3] : "", $matches); + + if($status === FALSE) + { + throw new TeamSpeak3_Helper_Exception("URI scheme-specific authority decomposition failed"); + } + + if(!$status) return; + + $this->user = isset($matches[2]) ? $matches[2] : ""; + $this->pass = isset($matches[4]) ? $matches[4] : ""; + $this->host = isset($matches[5]) ? $matches[5] : ""; + $this->port = isset($matches[7]) ? $matches[7] : ""; + } + + /** + * Validate the current URI from the instance variables. + * + * @return boolean + */ + public function isValid() + { + return ($this->checkUser() && $this->checkPass() && $this->checkHost() && $this->checkPort() && $this->checkPath() && $this->checkQuery() && $this->checkFragment()); + } + + /** + * Returns TRUE if a given URI is valid. + * + * @param string $uri + * @return boolean + */ + public static function check($uri) + { + try + { + $uri = new self(strval($uri)); + } + catch(Exception $e) + { + return FALSE; + } + + return $uri->valid(); + } + + /** + * Returns TRUE if the URI has a scheme. + * + * @return boolean + */ + public function hasScheme() + { + return strlen($this->scheme) ? TRUE : FALSE; + } + + /** + * Returns the scheme. + * + * @param mixed default + * @return TeamSpeak3_Helper_String + */ + public function getScheme($default = null) + { + return ($this->hasScheme()) ? new TeamSpeak3_Helper_String($this->scheme) : $default; + } + + /** + * Returns TRUE if the username is valid. + * + * @param string $username + * @throws TeamSpeak3_Helper_Exception + * @return boolean + */ + public function checkUser($username = null) + { + if($username === null) + { + $username = $this->user; + } + + if(strlen($username) == 0) + { + return TRUE; + } + + $pattern = "/^(" . $this->regex["alphanum"] . "|" . $this->regex["mark"] . "|" . $this->regex["escaped"] . "|[;:&=+$,])+$/"; + $status = @preg_match($pattern, $username); + + if($status === FALSE) + { + throw new TeamSpeak3_Helper_Exception("URI username validation failed"); + } + + return ($status == 1); + } + + /** + * Returns TRUE if the URI has a username. + * + * @return boolean + */ + public function hasUser() + { + return strlen($this->user) ? TRUE : FALSE; + } + + /** + * Returns the username. + * + * @param mixed default + * @return TeamSpeak3_Helper_String + */ + public function getUser($default = null) + { + return ($this->hasUser()) ? new TeamSpeak3_Helper_String($this->user) : $default; + } + + /** + * Returns TRUE if the password is valid. + * + * @param string $password + * @throws TeamSpeak3_Helper_Exception + * @return boolean + */ + public function checkPass($password = null) + { + if($password === null) { + $password = $this->pass; + } + + if(strlen($password) == 0) + { + return TRUE; + } + + $pattern = "/^(" . $this->regex["alphanum"] . "|" . $this->regex["mark"] . "|" . $this->regex["escaped"] . "|[;:&=+$,])+$/"; + $status = @preg_match($pattern, $password); + + if($status === FALSE) + { + throw new TeamSpeak3_Helper_Exception("URI password validation failed"); + } + + return ($status == 1); + } + + /** + * Returns TRUE if the URI has a password. + * + * @return boolean + */ + public function hasPass() + { + return strlen($this->pass) ? TRUE : FALSE; + } + + /** + * Returns the password. + * + * @param mixed default + * @return TeamSpeak3_Helper_String + */ + public function getPass($default = null) + { + return ($this->hasPass()) ? new TeamSpeak3_Helper_String($this->pass) : $default; + } + + /** + * Returns TRUE if the host is valid. + * + * @param string $host + * @return boolean + */ + public function checkHost($host = null) + { + if($host === null) + { + $host = $this->host; + } + + return TRUE; + } + + /** + * Returns TRUE if the URI has a host. + * + * @return boolean + */ + public function hasHost() + { + return strlen($this->host) ? TRUE : FALSE; + } + + /** + * Returns the host. + * + * @param mixed default + * @return TeamSpeak3_Helper_String + */ + public function getHost($default = null) + { + return ($this->hasHost()) ? new TeamSpeak3_Helper_String($this->host) : $default; + } + + /** + * Returns TRUE if the port is valid. + * + * @param integer $port + * @return boolean + */ + public function checkPort($port = null) + { + if($port === null) + { + $port = $this->port; + } + + return TRUE; + } + + /** + * Returns TRUE if the URI has a port. + * + * @return boolean + */ + public function hasPort() + { + return strlen($this->port) ? TRUE : FALSE; + } + + /** + * Returns the port. + * + * @param mixed default + * @return integer + */ + public function getPort($default = null) + { + return ($this->hasPort()) ? intval($this->port) : $default; + } + + /** + * Returns TRUE if the path is valid. + * + * @param string $path + * @throws TeamSpeak3_Helper_Exception + * @return boolean + */ + public function checkPath($path = null) + { + if($path === null) + { + $path = $this->path; + } + + if(strlen($path) == 0) + { + return TRUE; + } + + $pattern = "/^" . $this->regex["path"] . "$/"; + $status = @preg_match($pattern, $path); + + if($status === FALSE) + { + throw new TeamSpeak3_Helper_Exception("URI path validation failed"); + } + + return ($status == 1); + } + + /** + * Returns TRUE if the URI has a path. + * + * @return boolean + */ + public function hasPath() + { + return strlen($this->path) ? TRUE : FALSE; + } + + /** + * Returns the path. + * + * @param mixed default + * @return TeamSpeak3_Helper_String + */ + public function getPath($default = null) + { + return ($this->hasPath()) ? new TeamSpeak3_Helper_String($this->path) : $default; + } + + /** + * Returns TRUE if the query string is valid. + * + * @param string $query + * @throws TeamSpeak3_Helper_Exception + * @return boolean + */ + public function checkQuery($query = null) + { + if($query === null) + { + $query = $this->query; + } + + if(strlen($query) == 0) + { + return TRUE; + } + + $pattern = "/^" . $this->regex["uric"] . "*$/"; + $status = @preg_match($pattern, $query); + + if($status === FALSE) + { + throw new TeamSpeak3_Helper_Exception("URI query string validation failed"); + } + + return ($status == 1); + } + + /** + * Returns TRUE if the URI has a query string. + * + * @return boolean + */ + public function hasQuery() + { + return strlen($this->query) ? TRUE : FALSE; + } + + /** + * Returns an array containing the query string elements. + * + * @param mixed $default + * @return array + */ + public function getQuery($default = array()) + { + if(!$this->hasQuery()) + { + return $default; + } + + parse_str($this->query, $queryArray); + + return $queryArray; + } + + /** + * Returns TRUE if the URI has a query variable. + * + * @return boolean + */ + public function hasQueryVar($key) + { + if(!$this->hasQuery()) return FALSE; + + parse_str($this->query, $queryArray); + + return array_key_exists($key, $queryArray) ? TRUE : FALSE; + } + + /** + * Returns a single variable from the query string. + * + * @param string $key + * @param mixed $default + * @return mixed + */ + public function getQueryVar($key, $default = null) + { + if(!$this->hasQuery()) return $default; + + parse_str($this->query, $queryArray); + + if(array_key_exists($key, $queryArray)) + { + $val = $queryArray[$key]; + + if(ctype_digit($val)) + { + return intval($val); + } + elseif(is_string($val)) + { + return new TeamSpeak3_Helper_String($val); + } + else + { + return $val; + } + } + + return $default; + } + + /** + * Returns TRUE if the fragment string is valid. + * + * @param string $fragment + * @throws TeamSpeak3_Helper_Exception + * @return boolean + */ + public function checkFragment($fragment = null) + { + if($fragment === null) + { + $fragment = $this->fragment; + } + + if(strlen($fragment) == 0) + { + return TRUE; + } + + $pattern = "/^" . $this->regex["uric"] . "*$/"; + $status = @preg_match($pattern, $fragment); + + if($status === FALSE) + { + throw new TeamSpeak3_Helper_Exception("URI fragment validation failed"); + } + + return ($status == 1); + } + + /** + * Returns TRUE if the URI has a fragment string. + * + * @return boolean + */ + public function hasFragment() + { + return strlen($this->fragment) ? TRUE : FALSE; + } + + /** + * Returns the fragment. + * + * @param mixed default + * @return TeamSpeak3_Helper_String + */ + public function getFragment($default = null) + { + return ($this->hasFragment()) ? new TeamSpeak3_Helper_String($this->fragment) : $default; + } + + /** + * Returns a specified instance parameter from the $_REQUEST array. + * + * @param string $key + * @param mixed $default + * @return mixed + */ + public static function getUserParam($key, $default = null) + { + return (array_key_exists($key, $_REQUEST) && !empty($_REQUEST[$key])) ? self::stripslashesRecursive($_REQUEST[$key]) : $default; + } + + /** + * Returns a specified environment parameter from the $_SERVER array. + * + * @param string $key + * @param mixed $default + * @return mixed + */ + public static function getHostParam($key, $default = null) + { + return (array_key_exists($key, $_SERVER) && !empty($_SERVER[$key])) ? $_SERVER[$key] : $default; + } + + /** + * Returns a specified session parameter from the $_SESSION array. + * + * @param string $key + * @param mixed $default + * @return mixed + */ + public static function getSessParam($key, $default = null) + { + return (array_key_exists($key, $_SESSION) && !empty($_SESSION[$key])) ? $_SESSION[$key] : $default; + } + + /** + * Returns an array containing the three main parts of a FQDN (Fully Qualified Domain Name), including the + * top-level domain, the second-level domains or hostname and the third-level domain. + * + * @param string $hostname + * @return array + */ + public static function getFQDNParts($hostname) + { + if(!preg_match("/^([a-z0-9][a-z0-9-]{0,62}\.)*([a-z0-9][a-z0-9-]{0,62}\.)+([a-z]{2,6})$/i", $hostname, $matches)) + { + return array(); + } + + $parts["tld"] = $matches[3]; + $parts["2nd"] = $matches[2]; + $parts["3rd"] = $matches[1]; + + return $parts; + } + + /** + * Returns the applications host address. + * + * @return TeamSpeak3_Helper_String + */ + public static function getHostUri() + { + $sheme = (self::getHostParam("HTTPS") == "on") ? "https" : "http"; + + $serverName = new TeamSpeak3_Helper_String(self::getHostParam("HTTP_HOST")); + $serverPort = self::getHostParam("SERVER_PORT"); + $serverPort = ($serverPort != 80 && $serverPort != 443) ? ":" . $serverPort : ""; + + if($serverName->endsWith($serverPort)) + { + $serverName = $serverName->replace($serverPort, ""); + } + + return new TeamSpeak3_Helper_String($sheme . "://" . $serverName . $serverPort); + } + + /** + * Returns the applications base address. + * + * @return string + */ + public static function getBaseUri() + { + $scriptPath = new TeamSpeak3_Helper_String(dirname(self::getHostParam("SCRIPT_NAME"))); + + return self::getHostUri()->append(($scriptPath == DIRECTORY_SEPARATOR ? "" : $scriptPath) . "/"); + } + + /** + * Strips slashes from each element of an array using stripslashes(). + * + * @param mixed $var + * @return mixed + */ + protected static function stripslashesRecursive($var) + { + if(!is_array($var)) + { + return stripslashes(strval($var)); + } + + foreach($var as $key => $val) + { + $var[$key] = (is_array($val)) ? stripslashesRecursive($val) : stripslashes(strval($val)); + } + + return $var; + } +} diff --git a/lib/libraries/TeamSpeak3/Node/Abstract.php b/lib/libraries/TeamSpeak3/Node/Abstract.php new file mode 100644 index 0000000..b2ab372 --- /dev/null +++ b/lib/libraries/TeamSpeak3/Node/Abstract.php @@ -0,0 +1,625 @@ +. + * + * @package TeamSpeak3 + * @version 1.1.23 + * @author Sven 'ScP' Paulsen + * @copyright Copyright (c) 2010 by Planet TeamSpeak. All rights reserved. + */ + +/** + * @class TeamSpeak3_Node_Abstract + * @brief Abstract class describing a TeamSpeak 3 node and all it's parameters. + */ +abstract class TeamSpeak3_Node_Abstract implements RecursiveIterator, ArrayAccess, Countable +{ + /** + * @ignore + */ + protected $parent = null; + + /** + * @ignore + */ + protected $server = null; + + /** + * @ignore + */ + protected $nodeId = 0x00; + + /** + * @ignore + */ + protected $nodeList = null; + + /** + * @ignore + */ + protected $nodeInfo = array(); + + /** + * @ignore + */ + protected $storage = array(); + + /** + * Sends a prepared command to the server and returns the result. + * + * @param string $cmd + * @param boolean $throw + * @return TeamSpeak3_Adapter_ServerQuery_Reply + */ + public function request($cmd, $throw = TRUE) + { + return $this->getParent()->request($cmd, $throw); + } + + /** + * Uses given parameters and returns a prepared ServerQuery command. + * + * @param string $cmd + * @param array $params + * @return TeamSpeak3_Helper_String + */ + public function prepare($cmd, array $params = array()) + { + return $this->getParent()->prepare($cmd, $params); + } + + /** + * Prepares and executes a ServerQuery command and returns the result. + * + * @param string $cmd + * @param array $params + * @return TeamSpeak3_Adapter_ServerQuery_Reply + */ + public function execute($cmd, array $params = array()) + { + return $this->request($this->prepare($cmd, $params)); + } + + /** + * Returns the parent object of the current node. + * + * @return TeamSpeak3_Adapter_ServerQuery + * @return TeamSpeak3_Node_Abstract + */ + public function getParent() + { + return $this->parent; + } + + /** + * Returns the primary ID of the current node. + * + * @return integer + */ + public function getId() + { + return $this->nodeId; + } + + /** + * Returns TRUE if the node icon has a local source. + * + * @param string $key + * @return boolean + */ + public function iconIsLocal($key) + { + return ($this[$key] > 0 && $this[$key] < 1000) ? TRUE : FALSE; + } + + /** + * Returns the internal path of the node icon. + * + * @param string $key + * @return TeamSpeak3_Helper_String + */ + public function iconGetName($key) + { + $iconid = ($this[$key] < 0) ? (pow(2, 32))-($this[$key]*-1) : $this[$key]; + + return new TeamSpeak3_Helper_String("/icon_" . $iconid); + } + + /** + * Returns a possible classname for the node which can be used as a HTML property. + * + * @param string $prefix + * @return string + */ + public function getClass($prefix = "ts3_") + { + if($this instanceof TeamSpeak3_Node_Channel && $this->isSpacer()) + { + return $prefix . "spacer"; + } + elseif($this instanceof TeamSpeak3_Node_Client && $this["client_type"]) + { + return $prefix . "query"; + } + + return $prefix . TeamSpeak3_Helper_String::factory(get_class($this))->section("_", 2)->toLower(); + } + + /** + * Returns a unique identifier for the node which can be used as a HTML property. + * + * @return string + */ + abstract public function getUniqueId(); + + /** + * Returns the name of a possible icon to display the node object. + * + * @return string + */ + abstract public function getIcon(); + + /** + * Returns a symbol representing the node. + * + * @return string + */ + abstract public function getSymbol(); + + /** + * Returns the HTML code to display a TeamSpeak 3 viewer. + * + * @param TeamSpeak3_Viewer_Interface $viewer + * @return string + */ + public function getViewer(TeamSpeak3_Viewer_Interface $viewer) + { + $html = $viewer->fetchObject($this); + + $iterator = new RecursiveIteratorIterator($this, RecursiveIteratorIterator::SELF_FIRST); + + foreach($iterator as $node) + { + $siblings = array(); + + for($level = 0; $level < $iterator->getDepth(); $level++) + { + $siblings[] = ($iterator->getSubIterator($level)->hasNext()) ? 1 : 0; + } + + $siblings[] = (!$iterator->getSubIterator($level)->hasNext()) ? 1 : 0; + + $html .= $viewer->fetchObject($node, $siblings); + } + + return $html; + } + + /** + * Filters given node list array using specified filter rules. + * + * @param array $nodes + * @param array $rules + * @return array + */ + protected function filterList(array $nodes = array(), array $rules = array()) + { + if(!empty($rules)) + { + foreach($nodes as $node) + { + if(!$node instanceof TeamSpeak3_Node_Abstract) continue; + + $props = $node->getInfo(FALSE); + $props = array_intersect_key($props, $rules); + $match = TRUE; + + foreach($props as $key => $val) + { + if($val instanceof TeamSpeak3_Helper_String) + { + $match = $val->contains($rules[$key], TRUE); + } + else + { + $match = $val == $rules[$key]; + } + + if($match === FALSE) + { + unset($nodes[$node->getId()]); + } + } + } + } + + return $nodes; + } + + /** + * Returns all information available on this node. If $convert is enabled, some property + * values will be converted to human-readable values. + * + * @param boolean $extend + * @param boolean $convert + * @return array + */ + public function getInfo($extend = TRUE, $convert = FALSE) + { + if($extend) + { + $this->fetchNodeInfo(); + } + + if($convert) + { + $info = $this->nodeInfo; + + foreach($info as $key => $val) + { + $key = TeamSpeak3_Helper_String::factory($key); + + if($key->contains("_bytes_")) + { + $info[$key->toString()] = TeamSpeak3_Helper_Convert::bytes($val); + } + elseif($key->contains("_bandwidth_")) + { + $info[$key->toString()] = TeamSpeak3_Helper_Convert::bytes($val) . "/s"; + } + elseif($key->contains("_packets_")) + { + $info[$key->toString()] = number_format($val, null, null, "."); + } + elseif($key->contains("_packetloss_")) + { + $info[$key->toString()] = sprintf("%01.2f", floatval($val->toString())*100) . "%"; + } + elseif($key->endsWith("_uptime")) + { + $info[$key->toString()] = TeamSpeak3_Helper_Convert::seconds($val); + } + elseif($key->endsWith("_version")) + { + $info[$key->toString()] = TeamSpeak3_Helper_Convert::version($val); + } + elseif($key->endsWith("_icon_id")) + { + $info[$key->toString()] = $this->iconGetName($key)->filterDigits(); + } + } + + return $info; + } + + return $this->nodeInfo; + } + + /** + * Returns the specified property or a pre-defined default value from the node info array. + * + * @param string $property + * @param mixed $default + * @return mixed + */ + public function getProperty($property, $default = null) + { + if(!$this->offsetExists($property)) + { + $this->fetchNodeInfo(); + } + + if(!$this->offsetExists($property)) + { + return $default; + } + + return $this->nodeInfo[(string) $property]; + } + + /** + * Returns a string representation of this node. + * + * @return string + */ + public function __toString() + { + return get_class($this); + } + + /** + * Returns a string representation of this node. + * + * @return string + */ + public function toString() + { + return $this->__toString(); + } + + /** + * Returns an assoc array filled with current node info properties. + * + * @return array + */ + public function toArray() + { + return $this->nodeList; + } + + /** + * Called whenever we're using an unknown method. + * + * @param string $name + * @param array $args + * @throws TeamSpeak3_Node_Exception + * @return mixed + */ + public function __call($name, array $args) + { + if($this->getParent() instanceof TeamSpeak3_Node_Abstract) + { + return call_user_func_array(array($this->getParent(), $name), $args); + } + + throw new TeamSpeak3_Node_Exception("node method '" . $name . "()' does not exist"); + } + + /** + * Writes data to the internal storage array. + * + * @param string $key + * @param mixed $val + * @return void + */ + protected function setStorage($key, $val) + { + $this->storage[$key] = $val; + } + + /** + * Returns data from the internal storage array. + * + * @param string $key + * @param mixed $default + * @return mixed + */ + protected function getStorage($key, $default = null) + { + return (array_key_exists($key, $this->storage) && !empty($this->storage[$key])) ? $this->storage[$key] : $default; + } + + /** + * Deletes data from the internal storage array. + * + * @param string $key + * @return void + */ + protected function delStorage($key) + { + unset($this->storage[$key]); + } + + /** + * Commit pending data. + * + * @return array + */ + public function __sleep() + { + return array("parent", "storage", "nodeId"); + } + + /** + * @ignore + */ + protected function fetchNodeList() + { + $this->nodeList = array(); + } + + /** + * @ignore + */ + protected function fetchNodeInfo() + { + return; + } + + /** + * @ignore + */ + protected function resetNodeInfo() + { + $this->nodeInfo = array(); + } + + /** + * @ignore + */ + protected function verifyNodeList() + { + if($this->nodeList === null) + { + $this->fetchNodeList(); + } + } + + /** + * @ignore + */ + protected function resetNodeList() + { + $this->nodeList = null; + } + + /** + * @ignore + */ + public function count() + { + $this->verifyNodeList(); + + return count($this->nodeList); + } + + /** + * @ignore + */ + public function current() + { + $this->verifyNodeList(); + + return current($this->nodeList); + } + + /** + * @ignore + */ + public function getChildren() + { + $this->verifyNodeList(); + + return $this->current(); + } + + /** + * @ignore + */ + public function hasChildren() + { + $this->verifyNodeList(); + + return $this->current()->count() > 0; + } + + /** + * @ignore + */ + public function hasNext() + { + $this->verifyNodeList(); + + return $this->key()+1 < $this->count(); + } + + /** + * @ignore + */ + public function key() + { + $this->verifyNodeList(); + + return key($this->nodeList); + } + + /** + * @ignore + */ + public function valid() + { + $this->verifyNodeList(); + + return $this->key() !== null; + } + + /** + * @ignore + */ + public function next() + { + $this->verifyNodeList(); + + return next($this->nodeList); + } + + /** + * @ignore + */ + public function rewind() + { + $this->verifyNodeList(); + + return reset($this->nodeList); + } + + /** + * @ignore + */ + public function offsetExists($offset) + { + return array_key_exists((string) $offset, $this->nodeInfo) ? TRUE : FALSE; + } + + /** + * @ignore + */ + public function offsetGet($offset) + { + if(!$this->offsetExists($offset)) + { + $this->fetchNodeInfo(); + } + + if(!$this->offsetExists($offset)) + { + throw new TeamSpeak3_Adapter_ServerQuery_Exception("invalid parameter", 0x602); + } + + return $this->nodeInfo[(string) $offset]; + } + + /** + * @ignore + */ + public function offsetSet($offset, $value) + { + if(method_exists($this, "modify")) + { + return $this->modify(array((string) $offset => $value)); + } + + throw new TeamSpeak3_Node_Exception("node '" . get_class($this) . "' is read only"); + } + + /** + * @ignore + */ + public function offsetUnset($offset) + { + unset($this->nodeInfo[(string) $offset]); + } + + /** + * @ignore + */ + public function __get($offset) + { + return $this->offsetGet($offset); + } + + /** + * @ignore + */ + public function __set($offset, $value) + { + $this->offsetSet($offset, $value); + } +} diff --git a/lib/libraries/TeamSpeak3/Node/Channel.php b/lib/libraries/TeamSpeak3/Node/Channel.php new file mode 100644 index 0000000..9e47bf4 --- /dev/null +++ b/lib/libraries/TeamSpeak3/Node/Channel.php @@ -0,0 +1,588 @@ +. + * + * @package TeamSpeak3 + * @version 1.1.23 + * @author Sven 'ScP' Paulsen + * @copyright Copyright (c) 2010 by Planet TeamSpeak. All rights reserved. + */ + +/** + * @class TeamSpeak3_Node_Channel + * @brief Class describing a TeamSpeak 3 channel and all it's parameters. + */ +class TeamSpeak3_Node_Channel extends TeamSpeak3_Node_Abstract +{ + /** + * The TeamSpeak3_Node_Channel constructor. + * + * @param TeamSpeak3_Node_Server $server + * @param array $info + * @param string $index + * @throws TeamSpeak3_Adapter_ServerQuery_Exception + * @return TeamSpeak3_Node_Channel + */ + public function __construct(TeamSpeak3_Node_Server $server, array $info, $index = "cid") + { + $this->parent = $server; + $this->nodeInfo = $info; + + if(!array_key_exists($index, $this->nodeInfo)) + { + throw new TeamSpeak3_Adapter_ServerQuery_Exception("invalid channelID", 0x300); + } + + $this->nodeId = $this->nodeInfo[$index]; + } + + /** + * Returns an array filled with TeamSpeak3_Node_Channel objects. + * + * @param array $filter + * @return array + */ + public function subChannelList(array $filter = array()) + { + $channels = array(); + + foreach($this->getParent()->channelList() as $channel) + { + if($channel["pid"] == $this->getId()) + { + $channels[$channel->getId()] = $channel; + } + } + + return $this->filterList($channels, $filter); + } + + /** + * Returns the TeamSpeak3_Node_Channel object matching the given ID. + * + * @param integer $cid + * @throws TeamSpeak3_Adapter_ServerQuery_Exception + * @return TeamSpeak3_Node_Channel + */ + public function subChannelGetById($cid) + { + if(!array_key_exists((string) $cid, $this->subChannelList())) + { + throw new TeamSpeak3_Adapter_ServerQuery_Exception("invalid channelID", 0x300); + } + + return $this->channelList[(string) $cid]; + } + + /** + * Returns the TeamSpeak3_Node_Channel object matching the given name. + * + * @param integer $name + * @throws TeamSpeak3_Adapter_ServerQuery_Exception + * @return TeamSpeak3_Node_Channel + */ + public function subChannelGetByName($name) + { + foreach($this->subChannelList() as $channel) + { + if($channel["channel_name"] == $name) return $channel; + } + + throw new TeamSpeak3_Adapter_ServerQuery_Exception("invalid channelID", 0x300); + } + + /** + * Returns an array filled with TeamSpeak3_Node_Client objects. + * + * @param array $filter + * @return array + */ + public function clientList(array $filter = array()) + { + $clients = array(); + + foreach($this->getParent()->clientList() as $client) + { + if($client["cid"] == $this->getId()) + { + $clients[$client->getId()] = $client; + } + } + + return $this->filterList($clients, $filter); + } + + /** + * Returns the TeamSpeak3_Node_Client object matching the given ID. + * + * @param integer $clid + * @throws TeamSpeak3_Adapter_ServerQuery_Exception + * @return TeamSpeak3_Node_Client + */ + public function clientGetById($clid) + { + if(!array_key_exists($clid, $this->clientList())) + { + throw new TeamSpeak3_Adapter_ServerQuery_Exception("invalid clientID", 0x200); + } + + return $this->clientList[intval($clid)]; + } + + /** + * Returns the TeamSpeak3_Node_Client object matching the given name. + * + * @param integer $name + * @throws TeamSpeak3_Adapter_ServerQuery_Exception + * @return TeamSpeak3_Node_Client + */ + public function clientGetByName($name) + { + foreach($this->clientList() as $client) + { + if($client["client_nickname"] == $name) return $client; + } + + throw new TeamSpeak3_Adapter_ServerQuery_Exception("invalid clientID", 0x200); + } + + /** + * Returns a list of permissions defined for a client in the channel. + * + * @param integer $cldbid + * @param boolean $permsid + * @return void + */ + public function clientPermList($cldbid, $permsid = FALSE) + { + return $this->getParent()->channelClientPermList($this->getId(), $cldbid, $permsid); + } + + /** + * Adds a set of specified permissions to a client in a specific channel. Multiple permissions can be added by + * providing the two parameters of each permission. + * + * @param integer $cldbid + * @param integer $permid + * @param integer $permvalue + * @return void + */ + public function clientPermAssign($cldbid, $permid, $permvalue) + { + return $this->getParent()->channelClientPermAssign($this->getId(), $cldbid, $permid, $permvalue); + } + + /** + * Alias for clientPermAssign(). + * + * @deprecated + */ + public function clientPermAssignByName($cldbid, $permname, $permvalue) + { + return $this->clientPermAssign($cldbid, $permname, $permvalue); + } + + /** + * Removes a set of specified permissions from a client in the channel. Multiple permissions can be removed at once. + * + * @param integer $cldbid + * @param integer $permid + * @return void + */ + public function clientPermRemove($cldbid, $permid) + { + return $this->getParent()->channelClientPermRemove($this->getId(), $cldbid, $permid); + } + + /** + * Alias for clientPermRemove(). + * + * @deprecated + */ + public function clientPermRemoveByName($cldbid, $permname) + { + return $this->clientPermRemove($cldbid, $permname); + } + + /** + * Returns a list of permissions defined for the channel. + * + * @param boolean $permsid + * @return array + */ + public function permList($permsid = FALSE) + { + return $this->getParent()->channelPermList($this->getId(), $permsid); + } + + /** + * Adds a set of specified permissions to the channel. Multiple permissions can be added by + * providing the two parameters of each permission. + * + * @param integer $permid + * @param integer $permvalue + * @return void + */ + public function permAssign($permid, $permvalue) + { + return $this->getParent()->channelPermAssign($this->getId(), $permid, $permvalue); + } + + /** + * Alias for permAssign(). + * + * @deprecated + */ + public function permAssignByName($permname, $permvalue) + { + return $this->permAssign($permname, $permvalue); + } + + /** + * Removes a set of specified permissions from the channel. Multiple permissions can be removed at once. + * + * @param integer $permid + * @return void + */ + public function permRemove($permid) + { + return $this->getParent()->channelPermRemove($this->getId(), $permid); + } + + /** + * Alias for permRemove(). + * + * @deprecated + */ + public function permRemoveByName($permname) + { + return $this->permRemove($permname); + } + + /** + * Returns a list of files and directories stored in the channels file repository. + * + * @param string $cpw + * @param string $path + * @param boolean $recursive + * @return void + */ + public function fileList($cpw = "", $path = "/", $recursive = FALSE) + { + return $this->getParent()->channelFileList($this->getId(), $cpw, $path, $recursive); + } + + /** + * Returns detailed information about the specified file stored in the channels file repository. + * + * @param string $cpw + * @param string $name + * @return array + */ + public function fileInfo($cpw = "", $name = "/") + { + return $this->getParent()->channelFileInfo($this->getId(), $cpw, $name); + } + + /** + * Renames a file in the channels file repository. If the two parameters $tcid and $tcpw are specified, the file + * will be moved into another channels file repository. + * + * @param string $cpw + * @param string $oldname + * @param string $newname + * @param integer $tcid + * @param string $tcpw + * @return void + */ + public function fileRename($cpw = "", $oldname = "/", $newname = "/", $tcid = null, $tcpw = null) + { + return $this->getParent()->channelFileRename($this->getId(), $cpw, $oldname, $newname, $tcid, $tcpw); + } + + /** + * Deletes one or more files stored in the channels file repository. + * + * @param string $cpw + * @param string $path + * @return void + */ + public function fileDelete($cpw = "", $name = "/") + { + return $this->getParent()->channelFileDelete($this->getId(), $cpw, $name); + } + + /** + * Creates new directory in a channels file repository. + * + * @param string $cpw + * @param string $dirname + * @return void + */ + public function dirCreate($cpw = "", $dirname = "/") + { + return $this->getParent()->channelDirCreate($this->getId(), $cpw, $dirname); + } + + /** + * Returns the level of the channel. + * + * @return integer + */ + public function getLevel() + { + return $this->getParent()->channelGetLevel($this->getId()); + } + + /** + * Returns the pathway of the channel which can be used as a clients default channel. + * + * @return string + */ + public function getPathway() + { + return $this->getParent()->channelGetPathway($this->getId()); + } + + /** + * Returns the possible spacer type of the channel. + * + * @return integer + */ + public function spacerGetType() + { + return $this->getParent()->channelSpacerGetType($this->getId()); + } + + /** + * Returns the possible spacer alignment of the channel. + * + * @return integer + */ + public function spacerGetAlign() + { + return $this->getParent()->channelSpacerGetAlign($this->getId()); + } + + /** + * Returns TRUE if the channel is a spacer. + * + * @return boolean + */ + public function isSpacer() + { + return $this->getParent()->channelIsSpacer($this); + } + + /** + * Downloads and returns the channels icon file content. + * + * @return TeamSpeak3_Helper_String + */ + public function iconDownload() + { + if($this->iconIsLocal("channel_icon_id") || $this["channel_icon_id"] == 0) return; + + $download = $this->getParent()->transferInitDownload(rand(0x0000, 0xFFFF), 0, $this->iconGetName("channel_icon_id")); + $transfer = TeamSpeak3::factory("filetransfer://" . $download["host"] . ":" . $download["port"]); + + return $transfer->download($download["ftkey"], $download["size"]); + } + + /** + * Changes the channel configuration using given properties. + * + * @param array $properties + * @return void + */ + public function modify(array $properties) + { + $properties["cid"] = $this->getId(); + + $this->execute("channeledit", $properties); + $this->resetNodeInfo(); + } + + /** + * Sends a text message to all clients in the channel. + * + * @param string $msg + * @param string $cpw + * @return void + */ + public function message($msg, $cpw = null) + { + if($this->getId() != $this->getParent()->whoamiGet("client_channel_id")) + { + $this->getParent()->clientMove($this->getParent()->whoamiGet("client_id"), $this->getId(), $cpw); + } + + $this->execute("sendtextmessage", array("msg" => $msg, "target" => $this->getId(), "targetmode" => TeamSpeak3::TEXTMSG_CHANNEL)); + } + + /** + * Deletes the channel. + * + * @param boolean $force + * @return void + */ + public function delete($force = FALSE) + { + $this->getParent()->channelDelete($this->getId(), $force); + + unset($this); + } + + /** + * Moves the channel to the parent channel specified with $pid. + * + * @param integer $pid + * @param integer $order + * @return void + */ + public function move($pid, $order = null) + { + $this->getParent()->channelMove($this->getId(), $pid, $order); + } + + /** + * Sends a plugin command to all clients in the channel. + * + * @param string $plugin + * @param string $data + * @param string $cpw + * @param boolean $subscribed + * @return void + */ + public function sendPluginCmd($plugin, $data, $cpw = null, $subscribed = FALSE) + { + if($this->getId() != $this->getParent()->whoamiGet("client_channel_id")) + { + $this->getParent()->clientMove($this->getParent()->whoamiGet("client_id"), $this->getId(), $cpw); + } + + $this->execute("plugincmd", array("name" => $plugin, "data" => $data, "targetmode" => $subscribed ? TeamSpeak3::PLUGINCMD_CHANNEL_SUBSCRIBED : TeamSpeak3::PLUGINCMD_CHANNEL)); + } + + /** + * @ignore + */ + protected function fetchNodeList() + { + $this->nodeList = array(); + + if($this->getParent()->getLoadClientlistFirst()) + { + foreach($this->clientList() as $client) + { + if($client["cid"] == $this->getId()) + { + $this->nodeList[] = $client; + } + } + + foreach($this->subChannelList() as $channel) + { + if($channel["pid"] == $this->getId()) + { + $this->nodeList[] = $channel; + } + } + } + else + { + foreach($this->subChannelList() as $channel) + { + if($channel["pid"] == $this->getId()) + { + $this->nodeList[] = $channel; + } + } + + foreach($this->clientList() as $client) + { + if($client["cid"] == $this->getId()) + { + $this->nodeList[] = $client; + } + } + } + } + + /** + * @ignore + */ + protected function fetchNodeInfo() + { + $this->nodeInfo = array_merge($this->nodeInfo, $this->execute("channelinfo", array("cid" => $this->getId()))->toList()); + } + + /** + * Returns a unique identifier for the node which can be used as a HTML property. + * + * @return string + */ + public function getUniqueId() + { + return $this->getParent()->getUniqueId() . "_ch" . $this->getId(); + } + + /** + * Returns the name of a possible icon to display the node object. + * + * @return string + */ + public function getIcon() + { + if($this["channel_maxclients"] != -1 && $this["channel_maxclients"] <= $this["total_clients"]) + { + return "channel_full"; + } + elseif($this["channel_flag_password"]) + { + return "channel_pass"; + } + else + { + return "channel_open"; + } + } + + /** + * Returns a symbol representing the node. + * + * @return string + */ + public function getSymbol() + { + return "#"; + } + + /** + * Returns a string representation of this node. + * + * @return string + */ + public function __toString() + { + return (string) $this["channel_name"]; + } +} + diff --git a/lib/libraries/TeamSpeak3/Node/Channelgroup.php b/lib/libraries/TeamSpeak3/Node/Channelgroup.php new file mode 100644 index 0000000..0cd4ca0 --- /dev/null +++ b/lib/libraries/TeamSpeak3/Node/Channelgroup.php @@ -0,0 +1,276 @@ +. + * + * @package TeamSpeak3 + * @version 1.1.23 + * @author Sven 'ScP' Paulsen + * @copyright Copyright (c) 2010 by Planet TeamSpeak. All rights reserved. + */ + +/** + * @class TeamSpeak3_Node_Channelgroup + * @brief Class describing a TeamSpeak 3 channel group and all it's parameters. + */ +class TeamSpeak3_Node_Channelgroup extends TeamSpeak3_Node_Abstract +{ + /** + * The TeamSpeak3_Node_Channelgroup constructor. + * + * @param TeamSpeak3_Node_Server $server + * @param array $info + * @param string $index + * @throws TeamSpeak3_Adapter_ServerQuery_Exception + * @return TeamSpeak3_Node_Channelgroup + */ + public function __construct(TeamSpeak3_Node_Server $server, array $info, $index = "cgid") + { + $this->parent = $server; + $this->nodeInfo = $info; + + if(!array_key_exists($index, $this->nodeInfo)) + { + throw new TeamSpeak3_Adapter_ServerQuery_Exception("invalid groupID", 0xA00); + } + + $this->nodeId = $this->nodeInfo[$index]; + } + + /** + * Renames the channel group specified. + * + * @param string $name + * @return void + */ + public function rename($name) + { + return $this->getParent()->channelGroupRename($this->getId(), $name); + } + + /** + * Deletes the channel group. If $force is set to TRUE, the channel group will be + * deleted even if there are clients within. + * + * @param boolean $force + * @return void + */ + public function delete($force = FALSE) + { + $this->getParent()->channelGroupDelete($this->getId(), $force); + + unset($this); + } + + /** + * Creates a copy of the channel group and returns the new groups ID. + * + * @param string $name + * @param integer $tcgid + * @param integer $type + * @return integer + */ + public function copy($name = null, $tcgid = 0, $type = TeamSpeak3::GROUP_DBTYPE_REGULAR) + { + return $this->getParent()->channelGroupCopy($this->getId(), $name, $tcgid, $type); + } + + /** + * Returns a list of permissions assigned to the channel group. + * + * @param boolean $permsid + * @return array + */ + public function permList($permsid = FALSE) + { + return $this->getParent()->channelGroupPermList($this->getId(), $permsid); + } + + /** + * Adds a set of specified permissions to the channel group. Multiple permissions + * can be added by providing the two parameters of each permission in separate arrays. + * + * @param integer $permid + * @param integer $permvalue + * @return void + */ + public function permAssign($permid, $permvalue) + { + return $this->getParent()->channelGroupPermAssign($this->getId(), $permid, $permvalue); + } + + /** + * Alias for permAssign(). + * + * @deprecated + */ + public function permAssignByName($permname, $permvalue) + { + return $this->permAssign($permname, $permvalue); + } + + /** + * Removes a set of specified permissions from the channel group. Multiple + * permissions can be removed at once. + * + * @param integer $permid + * @return void + */ + public function permRemove($permid) + { + return $this->getParent()->channelGroupPermRemove($this->getId(), $permid); + } + + /** + * Alias for permAssign(). + * + * @deprecated + */ + public function permRemoveByName($permname) + { + return $this->permRemove($permname); + } + + /** + * Returns a list of clients assigned to the server group specified. + * + * @return array + */ + public function clientList() + { + return $this->getParent()->channelGroupClientList($this->getId()); + } + + /** + * Alias for privilegeKeyCreate(). + * + * @deprecated + */ + public function tokenCreate($cid, $description = null, $customset = null) + { + return $this->privilegeKeyCreate($cid, $description, $customset); + } + + /** + * Creates a new privilege key (token) for the channel group and returns the key. + * + * @param integer $cid + * @param string $description + * @param string $customset + * @return TeamSpeak3_Helper_String + */ + public function privilegeKeyCreate($cid, $description = null, $customset = null) + { + return $this->getParent()->privilegeKeyCreate(TeamSpeak3::TOKEN_CHANNELGROUP, $this->getId(), $cid, $description, $customset); + } + + /** + * Sends a text message to all clients residing in the channel group on the virtual server. + * + * @param string $msg + * @return void + */ + public function message($msg) + { + foreach($this as $client) + { + try + { + $this->execute("sendtextmessage", array("msg" => $msg, "target" => $client, "targetmode" => TeamSpeak3::TEXTMSG_CLIENT)); + } + catch(TeamSpeak3_Adapter_ServerQuery_Exception $e) + { + /* ERROR_client_invalid_id */ + if($e->getCode() != 0x0200) throw $e; + } + } + } + + /** + * Downloads and returns the channel groups icon file content. + * + * @return TeamSpeak3_Helper_String + */ + public function iconDownload() + { + if($this->iconIsLocal("iconid") || $this["iconid"] == 0) return; + + $download = $this->getParent()->transferInitDownload(rand(0x0000, 0xFFFF), 0, $this->iconGetName("iconid")); + $transfer = TeamSpeak3::factory("filetransfer://" . $download["host"] . ":" . $download["port"]); + + return $transfer->download($download["ftkey"], $download["size"]); + } + + /** + * @ignore + */ + protected function fetchNodeList() + { + $this->nodeList = array(); + + foreach($this->getParent()->clientList() as $client) + { + if($client["client_channel_group_id"] == $this->getId()) + { + $this->nodeList[] = $client; + } + } + } + + /** + * Returns a unique identifier for the node which can be used as a HTML property. + * + * @return string + */ + public function getUniqueId() + { + return $this->getParent()->getUniqueId() . "_cg" . $this->getId(); + } + + /** + * Returns the name of a possible icon to display the node object. + * + * @return string + */ + public function getIcon() + { + return "group_channel"; + } + + /** + * Returns a symbol representing the node. + * + * @return string + */ + public function getSymbol() + { + return "%"; + } + + /** + * Returns a string representation of this node. + * + * @return string + */ + public function __toString() + { + return (string) $this["name"]; + } +} + diff --git a/lib/libraries/TeamSpeak3/Node/Client.php b/lib/libraries/TeamSpeak3/Node/Client.php new file mode 100644 index 0000000..fa1b84a --- /dev/null +++ b/lib/libraries/TeamSpeak3/Node/Client.php @@ -0,0 +1,441 @@ +. + * + * @package TeamSpeak3 + * @version 1.1.23 + * @author Sven 'ScP' Paulsen + * @copyright Copyright (c) 2010 by Planet TeamSpeak. All rights reserved. + */ + +/** + * @class TeamSpeak3_Node_Client + * @brief Class describing a TeamSpeak 3 client and all it's parameters. + */ +class TeamSpeak3_Node_Client extends TeamSpeak3_Node_Abstract +{ + /** + * The TeamSpeak3_Node_Client constructor. + * + * @param TeamSpeak3_Node_Server $server + * @param array $info + * @param string $index + * @throws TeamSpeak3_Adapter_ServerQuery_Exception + * @return TeamSpeak3_Node_Client + */ + public function __construct(TeamSpeak3_Node_Server $server, array $info, $index = "clid") + { + $this->parent = $server; + $this->nodeInfo = $info; + + if(!array_key_exists($index, $this->nodeInfo)) + { + throw new TeamSpeak3_Adapter_ServerQuery_Exception("invalid clientID", 0x200); + } + + $this->nodeId = $this->nodeInfo[$index]; + } + + /** + * Changes the clients properties using given properties. + * + * @param array $properties + * @return void + */ + public function modify(array $properties) + { + $properties["clid"] = $this->getId(); + + $this->execute("clientedit", $properties); + $this->resetNodeInfo(); + } + + /** + * Changes the clients properties using given properties. + * + * @param array $properties + * @return void + */ + public function modifyDb(array $properties) + { + return $this->getParent()->clientModifyDb($this["client_database_id"], $properties); + } + + /** + * Deletes the clients properties from the database. + * + * @return void + */ + public function deleteDb() + { + return $this->getParent()->clientDeleteDb($this["client_database_id"]); + } + + /** + * Returns a list of properties from the database for the client. + * + * @return array + */ + public function infoDb() + { + return $this->getParent()->clientInfoDb($this["client_database_id"]); + } + + /** + * Sends a text message to the client. + * + * @param string $msg + * @return void + */ + public function message($msg) + { + $this->execute("sendtextmessage", array("msg" => $msg, "target" => $this->getId(), "targetmode" => TeamSpeak3::TEXTMSG_CLIENT)); + } + + /** + * Moves the client to another channel. + * + * @param integer $cid + * @param string $cpw + * @return void + */ + public function move($cid, $cpw = null) + { + return $this->getParent()->clientMove($this->getId(), $cid, $cpw); + } + + /** + * Kicks the client from his currently joined channel or from the server. + * + * @param integer $reasonid + * @param string $reasonmsg + * @return void + */ + public function kick($reasonid = TeamSpeak3::KICK_CHANNEL, $reasonmsg = null) + { + return $this->getParent()->clientKick($this->getId(), $reasonid, $reasonmsg); + } + + /** + * Sends a poke message to the client. + * + * @param string $msg + * @return void + */ + public function poke($msg) + { + return $this->getParent()->clientPoke($this->getId(), $msg); + } + + /** + * Bans the client from the server. Please note that this will create two separate + * ban rules for the targeted clients IP address and his unique identifier. + * + * @param integer $timeseconds + * @param string $reason + * @return array + */ + public function ban($timeseconds = null, $reason = null) + { + return $this->getParent()->clientBan($this->getId(), $timeseconds, $reason); + } + + /** + * Returns a list of custom properties for the client. + * + * @return array + */ + public function customInfo() + { + return $this->getParent()->customInfo($this["client_database_id"]); + } + + /** + * Returns an array containing the permission overview of the client. + * + * @param integer $cid + * @return array + */ + public function permOverview($cid) + { + return $this->execute("permoverview", array("cldbid" => $this["client_database_id"], "cid" => $cid, "permid" => 0))->toArray(); + } + + /** + * Returns a list of permissions defined for the client. + * + * @param boolean $permsid + * @return array + */ + public function permList($permsid = FALSE) + { + return $this->getParent()->clientPermList($this["client_database_id"], $permsid); + } + + /** + * Adds a set of specified permissions to the client. Multiple permissions can be added by providing + * the three parameters of each permission. + * + * @param integer $permid + * @param integer $permvalue + * @param integer $permskip + * @return void + */ + public function permAssign($permid, $permvalue, $permskip = FALSE) + { + return $this->getParent()->clientPermAssign($this["client_database_id"], $permid, $permvalue, $permskip); + } + + /** + * Alias for permAssign(). + * + * @deprecated + */ + public function permAssignByName($permname, $permvalue, $permskip = FALSE) + { + return $this->permAssign($permname, $permvalue, $permskip); + } + + /** + * Removes a set of specified permissions from a client. Multiple permissions can be removed at once. + * + * @param integer $permid + * @return void + */ + public function permRemove($permid) + { + return $this->getParent()->clientPermRemove($this["client_database_id"], $permid); + } + + /** + * Alias for permRemove(). + * + * @deprecated + */ + public function permRemoveByName($permname) + { + return $this->permRemove($permname); + } + + /** + * Sets the channel group of a client to the ID specified. + * + * @param integer $cid + * @param integer $cgid + * @return void + */ + public function setChannelGroup($cid, $cgid) + { + return $this->getParent()->clientSetChannelGroup($this["client_database_id"], $cid, $cgid); + } + + /** + * Adds the client to the server group specified with $sgid. + * + * @param integer $sgid + * @return void + */ + public function addServerGroup($sgid) + { + return $this->getParent()->serverGroupClientAdd($sgid, $this["client_database_id"]); + } + + /** + * Removes the client from the server group specified with $sgid. + * + * @param integer $sgid + * @return void + */ + public function remServerGroup($sgid) + { + return $this->getParent()->serverGroupClientDel($sgid, $this["client_database_id"]); + } + + /** + * Returns the possible name of the clients avatar. + * + * @return TeamSpeak3_Helper_String + */ + public function avatarGetName() + { + return new TeamSpeak3_Helper_String("/avatar_" . $this["client_base64HashClientUID"]); + } + + /** + * Downloads and returns the clients avatar file content. + * + * @return TeamSpeak3_Helper_String + */ + public function avatarDownload() + { + if($this["client_flag_avatar"] == 0) return; + + $download = $this->getParent()->transferInitDownload(rand(0x0000, 0xFFFF), 0, $this->avatarGetName()); + $transfer = TeamSpeak3::factory("filetransfer://" . $download["host"] . ":" . $download["port"]); + + return $transfer->download($download["ftkey"], $download["size"]); + } + + /** + * Returns a list of client connections using the same identity as this client. + * + * @return array + */ + public function getClones() + { + return $this->execute("clientgetids", array("cluid" => $this["client_unique_identifier"]))->toAssocArray("clid"); + } + + /** + * Returns the revision/build number from the clients version string. + * + * @return integer + */ + public function getRev() + { + return $this["client_type"] ? null : $this["client_version"]->section("[", 1)->filterDigits(); + } + + /** + * Returns all server and channel groups the client is currently residing in. + * + * @return array + */ + public function memberOf() + { + $groups = array($this->getParent()->channelGroupGetById($this["client_channel_group_id"])); + + foreach(explode(",", $this["client_servergroups"]) as $sgid) + { + $groups[] = $this->getParent()->serverGroupGetById($sgid); + } + + return $groups; + } + + /** + * Downloads and returns the clients icon file content. + * + * @return TeamSpeak3_Helper_String + */ + public function iconDownload() + { + if($this->iconIsLocal("client_icon_id") || $this["client_icon_id"] == 0) return; + + $download = $this->getParent()->transferInitDownload(rand(0x0000, 0xFFFF), 0, $this->iconGetName("client_icon_id")); + $transfer = TeamSpeak3::factory("filetransfer://" . $download["host"] . ":" . $download["port"]); + + return $transfer->download($download["ftkey"], $download["size"]); + } + + /** + * Sends a plugin command to the client. + * + * @param string $plugin + * @param string $data + * @return void + */ + public function sendPluginCmd($plugin, $data) + { + $this->execute("plugincmd", array("name" => $plugin, "data" => $data, "targetmode" => TeamSpeak3::PLUGINCMD_CLIENT, "target" => $this->getId())); + } + + /** + * @ignore + */ + protected function fetchNodeInfo() + { + if($this["client_type"] == 1) return; + + $this->nodeInfo = array_merge($this->nodeInfo, $this->execute("clientinfo", array("clid" => $this->getId()))->toList()); + } + + /** + * Returns a unique identifier for the node which can be used as a HTML property. + * + * @return string + */ + public function getUniqueId() + { + return $this->getParent()->getUniqueId() . "_cl" . $this->getId(); + } + + /** + * Returns the name of a possible icon to display the node object. + * + * @return string + */ + public function getIcon() + { + if($this["client_type"]) + { + return "client_query"; + } + elseif($this["client_away"]) + { + return "client_away"; + } + elseif(!$this["client_output_hardware"]) + { + return "client_snd_disabled"; + } + elseif($this["client_output_muted"]) + { + return "client_snd_muted"; + } + elseif(!$this["client_input_hardware"]) + { + return "client_mic_disabled"; + } + elseif($this["client_input_muted"]) + { + return "client_mic_muted"; + } + elseif($this["client_is_channel_commander"]) + { + return $this["client_flag_talking"] ? "client_cc_talk" : "client_cc_idle"; + } + else + { + return $this["client_flag_talking"] ? "client_talk" : "client_idle"; + } + } + + /** + * Returns a symbol representing the node. + * + * @return string + */ + public function getSymbol() + { + return "@"; + } + + /** + * Returns a string representation of this node. + * + * @return string + */ + public function __toString() + { + return (string) $this["client_nickname"]; + } +} + diff --git a/lib/libraries/TeamSpeak3/Node/Exception.php b/lib/libraries/TeamSpeak3/Node/Exception.php new file mode 100644 index 0000000..a2a10d0 --- /dev/null +++ b/lib/libraries/TeamSpeak3/Node/Exception.php @@ -0,0 +1,32 @@ +. + * + * @package TeamSpeak3 + * @version 1.1.23 + * @author Sven 'ScP' Paulsen + * @copyright Copyright (c) 2010 by Planet TeamSpeak. All rights reserved. + */ + +/** + * @class TeamSpeak3_Node_Exception + * @brief Enhanced exception class for TeamSpeak3_Node_Abstract objects. + */ +class TeamSpeak3_Node_Exception extends TeamSpeak3_Exception {} diff --git a/lib/libraries/TeamSpeak3/Node/Host.php b/lib/libraries/TeamSpeak3/Node/Host.php new file mode 100644 index 0000000..c12f000 --- /dev/null +++ b/lib/libraries/TeamSpeak3/Node/Host.php @@ -0,0 +1,1193 @@ +. + * + * @package TeamSpeak3 + * @version 1.1.23 + * @author Sven 'ScP' Paulsen + * @copyright Copyright (c) 2010 by Planet TeamSpeak. All rights reserved. + */ + +/** + * @class TeamSpeak3_Node_Host + * @brief Class describing a TeamSpeak 3 server instance and all it's parameters. + */ +class TeamSpeak3_Node_Host extends TeamSpeak3_Node_Abstract +{ + /** + * @ignore + */ + protected $whoami = null; + + /** + * @ignore + */ + protected $version = null; + + /** + * @ignore + */ + protected $serverList = null; + + /** + * @ignore + */ + protected $permissionEnds = null; + + /** + * @ignore + */ + protected $permissionList = null; + + /** + * @ignore + */ + protected $permissionCats = null; + + /** + * @ignore + */ + protected $predefined_query_name = null; + + /** + * @ignore + */ + protected $exclude_query_clients = FALSE; + + /** + * @ignore + */ + protected $start_offline_virtual = FALSE; + + /** + * @ignore + */ + protected $sort_clients_channels = FALSE; + + /** + * The TeamSpeak3_Node_Host constructor. + * + * @param TeamSpeak3_Adapter_ServerQuery $squery + * @return TeamSpeak3_Node_Host + */ + public function __construct(TeamSpeak3_Adapter_ServerQuery $squery) + { + $this->parent = $squery; + } + + /** + * Returns the primary ID of the selected virtual server. + * + * @return integer + */ + public function serverSelectedId() + { + return $this->whoamiGet("virtualserver_id", 0); + } + + /** + * Returns the primary UDP port of the selected virtual server. + * + * @return integer + */ + public function serverSelectedPort() + { + return $this->whoamiGet("virtualserver_port", 0); + } + + /** + * Returns the servers version information including platform and build number. + * + * @param string $ident + * @return mixed + */ + public function version($ident = null) + { + if($this->version === null) + { + $this->version = $this->request("version")->toList(); + } + + return ($ident && array_key_exists($ident, $this->version)) ? $this->version[$ident] : $this->version; + } + + /** + * Selects a virtual server by ID to allow further interaction. + * + * @param integer $sid + * @param boolean $virtual + * @return void + */ + public function serverSelect($sid, $virtual = null) + { + if($this->whoami !== null && $this->serverSelectedId() == $sid) return; + + $virtual = ($virtual !== null) ? $virtual : $this->start_offline_virtual; + $getargs = func_get_args(); + + $this->execute("use", array("sid" => $sid, $virtual ? "-virtual" : null)); + + if($sid != 0 && $this->predefined_query_name !== null) + { + $this->execute("clientupdate", array("client_nickname" => (string) $this->predefined_query_name)); + } + + $this->whoamiReset(); + + $this->setStorage("_server_use", array(__FUNCTION__, $getargs)); + + TeamSpeak3_Helper_Signal::getInstance()->emit("notifyServerselected", $this); + } + + /** + * Alias for serverSelect(). + * + * @param integer $sid + * @param boolean $virtual + * @return void + */ + public function serverSelectById($sid, $virtual = null) + { + $this->serverSelect($sid, $virtual); + } + + /** + * Selects a virtual server by UDP port to allow further interaction. + * + * @param integer $port + * @param boolean $virtual + * @return void + */ + public function serverSelectByPort($port, $virtual = null) + { + if($this->whoami !== null && $this->serverSelectedPort() == $port) return; + + $virtual = ($virtual !== null) ? $virtual : $this->start_offline_virtual; + $getargs = func_get_args(); + + $this->execute("use", array("port" => $port, $virtual ? "-virtual" : null)); + + if($port != 0 && $this->predefined_query_name !== null) + { + $this->execute("clientupdate", array("client_nickname" => (string) $this->predefined_query_name)); + } + + $this->whoamiReset(); + + $this->setStorage("_server_use", array(__FUNCTION__, $getargs)); + + TeamSpeak3_Helper_Signal::getInstance()->emit("notifyServerselected", $this); + } + + /** + * Deselects the active virtual server. + * + * @return void + */ + public function serverDeselect() + { + $this->serverSelect(0); + + $this->delStorage("_server_use"); + } + + /** + * Returns the ID of a virtual server matching the given port. + * + * @param integer $port + * @return integer + */ + public function serverIdGetByPort($port) + { + $sid = $this->execute("serveridgetbyport", array("virtualserver_port" => $port))->toList(); + + return $sid["server_id"]; + } + + /** + * Returns the port of a virtual server matching the given ID. + * + * @param integer $sid + * @return integer + */ + public function serverGetPortById($sid) + { + if(!array_key_exists((string) $sid, $this->serverList())) + { + throw new TeamSpeak3_Adapter_ServerQuery_Exception("invalid serverID", 0x400); + } + + return $this->serverList[intval((string) $sid)]["virtualserver_port"]; + } + + /** + * Returns the TeamSpeak3_Node_Server object matching the currently selected ID. + * + * @return TeamSpeak3_Node_Server + */ + public function serverGetSelected() + { + return $this->serverGetById($this->serverSelectedId()); + } + + /** + * Returns the TeamSpeak3_Node_Server object matching the given ID. + * + * @param integer $sid + * @return TeamSpeak3_Node_Server + */ + public function serverGetById($sid) + { + $this->serverSelectById($sid); + + return new TeamSpeak3_Node_Server($this, array("virtualserver_id" => intval($sid))); + } + + /** + * Returns the TeamSpeak3_Node_Server object matching the given port number. + * + * @param integer $port + * @return TeamSpeak3_Node_Server + */ + public function serverGetByPort($port) + { + $this->serverSelectByPort($port); + + return new TeamSpeak3_Node_Server($this, array("virtualserver_id" => $this->serverSelectedId())); + } + + /** + * Returns the first TeamSpeak3_Node_Server object matching the given name. + * + * @param string $name + * @throws TeamSpeak3_Adapter_ServerQuery_Exception + * @return TeamSpeak3_Node_Server + */ + public function serverGetByName($name) + { + foreach($this->serverList() as $server) + { + if($server["virtualserver_name"] == $name) return $server; + } + + throw new TeamSpeak3_Adapter_ServerQuery_Exception("invalid serverID", 0x400); + } + + /** + * Returns the first TeamSpeak3_Node_Server object matching the given unique identifier. + * + * @param string $uid + * @throws TeamSpeak3_Adapter_ServerQuery_Exception + * @return TeamSpeak3_Node_Server + */ + public function serverGetByUid($uid) + { + foreach($this->serverList() as $server) + { + if($server["virtualserver_unique_identifier"] == $uid) return $server; + } + + throw new TeamSpeak3_Adapter_ServerQuery_Exception("invalid serverID", 0x400); + } + + /** + * Returns the first TeamSpeak3_Node_Server object matching the given TSDNS hostname. Like the + * TeamSpeak 3 Client, this method will start looking for a TSDNS server on the second-level + * domain including a fallback to the third-level domain of the specified $tsdns parameter. + * + * @param string $tsdns + * @throws TeamSpeak3_Adapter_ServerQuery_Exception + * @return TeamSpeak3_Node_Server + */ + public function serverGetByTSDNS($tsdns) + { + $parts = TeamSpeak3_Helper_Uri::getFQDNParts($tsdns); + $query = TeamSpeak3_Helper_String::factory(array_shift($parts)); + + while($part = array_shift($parts)) + { + $query->prepend($part); + + try + { + $port = TeamSpeak3::factory("tsdns://" . $query . "/?timeout=3")->resolve($tsdns)->section(":", 1); + + return $this->serverGetByPort($port == "" ? 9987 : $port); + } + catch(TeamSpeak3_Transport_Exception $e) + { + /* skip "Connection timed out" and "Connection refused" */ + if($e->getCode() != 10060 && $e->getCode() != 10061) throw $e; + } + } + + throw new TeamSpeak3_Adapter_ServerQuery_Exception("invalid serverID", 0x400); + } + + /** + * Creates a new virtual server using given properties and returns an assoc + * array containing the new ID and initial admin token. + * + * @param array $properties + * @return array + */ + public function serverCreate(array $properties = array()) + { + $this->serverListReset(); + + $detail = $this->execute("servercreate", $properties)->toList(); + $server = new TeamSpeak3_Node_Server($this, array("virtualserver_id" => intval($detail["sid"]))); + + TeamSpeak3_Helper_Signal::getInstance()->emit("notifyServercreated", $this, $detail["sid"]); + TeamSpeak3_Helper_Signal::getInstance()->emit("notifyTokencreated", $server, $detail["token"]); + + return $detail; + } + + /** + * Deletes the virtual server specified by ID. + * + * @param integer $sid + * @return void + */ + public function serverDelete($sid) + { + $this->serverListReset(); + + $this->execute("serverdelete", array("sid" => $sid)); + + TeamSpeak3_Helper_Signal::getInstance()->emit("notifyServerdeleted", $this, $sid); + } + + /** + * Starts the virtual server specified by ID. + * + * @param integer $sid + * @return void + */ + public function serverStart($sid) + { + if($sid == $this->serverSelectedId()) + { + $this->serverDeselect(); + } + + $this->execute("serverstart", array("sid" => $sid)); + $this->serverListReset(); + + TeamSpeak3_Helper_Signal::getInstance()->emit("notifyServerstarted", $this, $sid); + } + + /** + * Stops the virtual server specified by ID. + * + * @param integer $sid + * @return void + */ + public function serverStop($sid) + { + if($sid == $this->serverSelectedId()) + { + $this->serverDeselect(); + } + + $this->execute("serverstop", array("sid" => $sid)); + $this->serverListReset(); + + TeamSpeak3_Helper_Signal::getInstance()->emit("notifyServerstopped", $this, $sid); + } + + /** + * Stops the entire TeamSpeak 3 Server instance by shutting down the process. + * + * @return void + */ + public function serverStopProcess() + { + TeamSpeak3_Helper_Signal::getInstance()->emit("notifyServershutdown", $this); + + $this->execute("serverprocessstop"); + } + + /** + * Returns an array filled with TeamSpeak3_Node_Server objects. + * + * @param array $filter + * @return array + */ + public function serverList(array $filter = array()) + { + if($this->serverList === null) + { + $servers = $this->request("serverlist -uid")->toAssocArray("virtualserver_id"); + + $this->serverList = array(); + + foreach($servers as $sid => $server) + { + $this->serverList[$sid] = new TeamSpeak3_Node_Server($this, $server); + } + + $this->resetNodeList(); + } + + return $this->filterList($this->serverList, $filter); + } + + /** + * Resets the list of virtual servers. + * + * @return void + */ + public function serverListReset() + { + $this->resetNodeList(); + $this->serverList = null; + } + + /** + * Returns a list of IP addresses used by the server instance on multi-homed machines. + * + * @return array + */ + public function bindingList() + { + return $this->request("bindinglist")->toArray(); + } + + /** + * Returns a list of permissions available on the server instance. + * + * @return array + */ + public function permissionList() + { + if($this->permissionList === null) + { + $this->fetchPermissionList(); + } + + foreach($this->permissionList as $permname => $permdata) + { + if(isset($permdata["permcatid"]) && $permdata["permgrant"]) + { + continue; + } + + $this->permissionList[$permname]["permcatid"] = $this->permissionGetCategoryById($permdata["permid"]); + $this->permissionList[$permname]["permgrant"] = $this->permissionGetGrantById($permdata["permid"]); + + $grantsid = "i_needed_modify_power_" . substr($permname, 2); + + if(!$permdata["permname"]->startsWith("i_needed_modify_power_") && !isset($this->permissionList[$grantsid])) + { + $this->permissionList[$grantsid]["permid"] = $this->permissionList[$permname]["permgrant"]; + $this->permissionList[$grantsid]["permname"] = TeamSpeak3_Helper_String::factory($grantsid); + $this->permissionList[$grantsid]["permdesc"] = null; + $this->permissionList[$grantsid]["permcatid"] = 0xFF; + $this->permissionList[$grantsid]["permgrant"] = $this->permissionList[$permname]["permgrant"]; + } + } + + return $this->permissionList; + } + + /** + * Returns a list of permission categories available on the server instance. + * + * @return array + */ + public function permissionCats() + { + if($this->permissionCats === null) + { + $this->fetchPermissionCats(); + } + + return $this->permissionCats; + } + + /** + * Returns a list of permission category endings available on the server instance. + * + * @return array + */ + public function permissionEnds() + { + if($this->permissionEnds === null) + { + $this->fetchPermissionList(); + } + + return $this->permissionCats; + } + + /** + * Returns an array filled with all permission categories known to the server including + * their ID, name and parent. + * + * @return array + */ + public function permissionTree() + { + $permtree = array(); + + foreach($this->permissionCats() as $key => $val) + { + $permtree[$val]["permcatid"] = $val; + $permtree[$val]["permcathex"] = "0x" . dechex($val); + $permtree[$val]["permcatname"] = TeamSpeak3_Helper_String::factory(TeamSpeak3_Helper_Convert::permissionCategory($val)); + $permtree[$val]["permcatparent"] = $permtree[$val]["permcathex"]{3} == 0 ? 0 : hexdec($permtree[$val]["permcathex"]{2} . 0); + $permtree[$val]["permcatchilren"] = 0; + $permtree[$val]["permcatcount"] = 0; + + if(isset($permtree[$permtree[$val]["permcatparent"]])) + { + $permtree[$permtree[$val]["permcatparent"]]["permcatchilren"]++; + } + + if($permtree[$val]["permcatname"]->contains("/")) + { + $permtree[$val]["permcatname"] = $permtree[$val]["permcatname"]->section("/", 1)->trim(); + } + + foreach($this->permissionList() as $permission) + { + if($permission["permid"]["permcatid"] == $val) + { + $permtree[$val]["permcatcount"]++; + } + } + } + + return $permtree; + } + + /** + * Returns the IDs of all clients, channels or groups using the permission with the + * specified ID. + * + * @param integer $permid + * @return array + */ + public function permissionFind($permid) + { + if(!is_array($permid)) + { + $permident = (is_numeric($permid)) ? "permid" : "permsid"; + } + else + { + $permident = (is_numeric(current($permid))) ? "permid" : "permsid"; + } + + return $this->execute("permfind", array($permident => $permid))->toArray(); + } + + /** + * Returns the ID of the permission matching the given name. + * + * @param string $name + * @throws TeamSpeak3_Adapter_ServerQuery_Exception + * @return integer + */ + public function permissionGetIdByName($name) + { + if(!array_key_exists((string) $name, $this->permissionList())) + { + throw new TeamSpeak3_Adapter_ServerQuery_Exception("invalid permission ID", 0xA02); + } + + return $this->permissionList[(string) $name]["permid"]; + } + + /** + * Returns the name of the permission matching the given ID. + * + * @param integer $permid + * @throws TeamSpeak3_Adapter_ServerQuery_Exception + * @return TeamSpeak3_Helper_String + */ + public function permissionGetNameById($permid) + { + foreach($this->permissionList() as $name => $perm) + { + if($perm["permid"] == $permid) return new TeamSpeak3_Helper_String($name); + } + + throw new TeamSpeak3_Adapter_ServerQuery_Exception("invalid permission ID", 0xA02); + } + + /** + * Returns the internal category of the permission matching the given ID. + * + * All pre-3.0.7 permission IDs are are 2 bytes wide. The first byte identifies the category while + * the second byte is the permission count within that group. + * + * @param integer $permid + * @return integer + */ + public function permissionGetCategoryById($permid) + { + if(!is_numeric($permid)) + { + $permid = $this->permissionGetIdByName($permid); + } + + if($permid < 0x1000) + { + if($this->permissionEnds === null) + { + $this->fetchPermissionList(); + } + + if($this->permissionCats === null) + { + $this->fetchPermissionCats(); + } + + $catids = array_values($this->permissionCats()); + + foreach($this->permissionEnds as $key => $val) + { + if($val >= $permid && isset($catids[$key])) + { + return $catids[$key]; + } + } + + return 0; + } + else + { + return (int) $permid >> 8; + } + } + + /** + * Returns the internal ID of the i_needed_modify_power_* or grant permission. + * + * Every permission has an associated i_needed_modify_power_* permission, for example b_client_ban_create has an + * associated permission called i_needed_modify_power_client_ban_create. + * + * @param integer $permid + * @return integer + */ + public function permissionGetGrantById($permid) + { + if(!is_numeric($permid)) + { + $permid = $this->permissionGetIdByName($permid); + } + + if($permid < 0x1000) + { + return (int) $permid+0x8000; + } + else + { + return (int) bindec(substr(decbin($permid), -8))+0xFF00; + } + } + + /** + * Adds a set of specified permissions to all regular server groups on all virtual servers. The target groups will + * be identified by the value of their i_group_auto_update_type permission specified with $sgtype. + * + * @param integer $sgtype + * @param integer $permid + * @param integer $permvalue + * @param integer $permnegated + * @param integer $permskip + * @return void + */ + public function serverGroupPermAutoAssign($sgtype, $permid, $permvalue, $permnegated = FALSE, $permskip = FALSE) + { + if(!is_array($permid)) + { + $permident = (is_numeric($permid)) ? "permid" : "permsid"; + } + else + { + $permident = (is_numeric(current($permid))) ? "permid" : "permsid"; + } + + $this->execute("servergroupautoaddperm", array("sgtype" => $sgtype, $permident => $permid, "permvalue" => $permvalue, "permnegated" => $permnegated, "permskip" => $permskip)); + } + + /** + * Removes a set of specified permissions from all regular server groups on all virtual servers. The target groups + * will be identified by the value of their i_group_auto_update_type permission specified with $sgtype. + * + * @param integer $sgtype + * @param integer $permid + * @return void + */ + public function serverGroupPermAutoRemove($sgtype, $permid) + { + if(!is_array($permid)) + { + $permident = (is_numeric($permid)) ? "permid" : "permsid"; + } + else + { + $permident = (is_numeric(current($permid))) ? "permid" : "permsid"; + } + + $this->execute("servergroupautodelperm", array("sgtype" => $sgtype, $permident => $permid)); + } + + /** + * Returns an array containing the value of a specified permission for your own client. + * + * @param integer $permid + * @return array + */ + public function selfPermCheck($permid) + { + if(!is_array($permid)) + { + $permident = (is_numeric($permid)) ? "permid" : "permsid"; + } + else + { + $permident = (is_numeric(current($permid))) ? "permid" : "permsid"; + } + + return $this->execute("permget", array($permident => $permid))->toAssocArray("permsid"); + } + + /** + * Changes the server instance configuration using given properties. + * + * @param array $properties + * @return void + */ + public function modify(array $properties) + { + $this->execute("instanceedit", $properties); + $this->resetNodeInfo(); + } + + /** + * Sends a text message to all clients on all virtual servers in the TeamSpeak 3 Server instance. + * + * @param string $msg + * @return void + */ + public function message($msg) + { + $this->execute("gm", array("msg" => $msg)); + } + + /** + * Displays a specified number of entries (1-100) from the servers log. + * + * @param integer $lines + * @param integer $begin_pos + * @param boolean $reverse + * @param boolean $instance + * @return array + */ + public function logView($lines = 30, $begin_pos = null, $reverse = null, $instance = TRUE) + { + return $this->execute("logview", array("lines" => $lines, "begin_pos" => $begin_pos, "instance" => $instance, "reverse" => $reverse))->toArray(); + } + + /** + * Writes a custom entry into the server instance log. + * + * @param string $logmsg + * @param integer $loglevel + * @return void + */ + public function logAdd($logmsg, $loglevel = TeamSpeak3::LOGLEVEL_INFO) + { + $sid = $this->serverSelectedId(); + + $this->serverDeselect(); + $this->execute("logadd", array("logmsg" => $logmsg, "loglevel" => $loglevel)); + $this->serverSelect($sid); + } + + /** + * Authenticates with the TeamSpeak 3 Server instance using given ServerQuery login credentials. + * + * @param string $username + * @param string $password + * @return void + */ + public function login($username, $password) + { + $this->execute("login", array("client_login_name" => $username, "client_login_password" => $password)); + $this->whoamiReset(); + + $crypt = new TeamSpeak3_Helper_Crypt($username); + + $this->setStorage("_login_user", $username); + $this->setStorage("_login_pass", $crypt->encrypt($password)); + + TeamSpeak3_Helper_Signal::getInstance()->emit("notifyLogin", $this); + } + + /** + * Deselects the active virtual server and logs out from the server instance. + * + * @return void + */ + public function logout() + { + $this->request("logout"); + $this->whoamiReset(); + + $this->delStorage("_login_user"); + $this->delStorage("_login_pass"); + + TeamSpeak3_Helper_Signal::getInstance()->emit("notifyLogout", $this); + } + + /** + * Returns information about your current ServerQuery connection. + * + * @return array + */ + public function whoami() + { + if($this->whoami === null) + { + $this->whoami = $this->request("whoami")->toList(); + } + + return $this->whoami; + } + + /** + * Returns a single value from the current ServerQuery connection info. + * + * @param string $ident + * @param mixed $default + * @return mixed + */ + public function whoamiGet($ident, $default = null) + { + if(array_key_exists($ident, $this->whoami())) + { + return $this->whoami[$ident]; + } + + return $default; + } + + /** + * Sets a single value in the current ServerQuery connection info. + * + * @param string $ident + * @param mixed $value + * @return mixed + */ + public function whoamiSet($ident, $value = null) + { + $this->whoami(); + + $this->whoami[$ident] = (is_numeric($value)) ? intval($value) : TeamSpeak3_Helper_String::factory($value); + } + + /** + * Resets the current ServerQuery connection info. + * + * @return void + */ + public function whoamiReset() + { + $this->whoami = null; + } + + /** + * Returns the hostname or IPv4 address the adapter is connected to. + * + * @return string + */ + public function getAdapterHost() + { + return $this->getParent()->getTransportHost(); + } + + /** + * Returns the network port the adapter is connected to. + * + * @return string + */ + public function getAdapterPort() + { + return $this->getParent()->getTransportPort(); + } + + /** + * @ignore + */ + protected function fetchNodeList() + { + $servers = $this->serverList(); + + foreach($servers as $server) + { + $this->nodeList[] = $server; + } + } + + /** + * @ignore + */ + protected function fetchNodeInfo() + { + $info1 = $this->request("hostinfo")->toList(); + $info2 = $this->request("instanceinfo")->toList(); + + $this->nodeInfo = array_merge($this->nodeInfo, $info1, $info2); + } + + /** + * @ignore + */ + protected function fetchPermissionList() + { + $reply = $this->request("permissionlist -new")->toArray(); + $start = 1; + + $this->permissionEnds = array(); + $this->permissionList = array(); + + foreach($reply as $line) + { + if(array_key_exists("group_id_end", $line)) + { + $this->permissionEnds[] = $line["group_id_end"]; + } + else + { + $this->permissionList[$line["permname"]->toString()] = array_merge(array("permid" => $start++), $line); + } + } + } + + /** + * @ignore + */ + protected function fetchPermissionCats() + { + $permcats = array(); + $reflects = new ReflectionClass("TeamSpeak3"); + + foreach($reflects->getConstants() as $key => $val) + { + if(!TeamSpeak3_Helper_String::factory($key)->startsWith("PERM_CAT") || $val == 0xFF) + { + continue; + } + + $permcats[$key] = $val; + } + + $this->permissionCats = $permcats; + } + + /** + * Sets a pre-defined nickname for ServerQuery clients which will be used automatically + * after selecting a virtual server. + * + * @param string $name + * @return void + */ + public function setPredefinedQueryName($name = null) + { + $this->setStorage("_query_nick", $name); + + $this->predefined_query_name = $name; + } + + /** + * Returns the pre-defined nickname for ServerQuery clients which will be used automatically + * after selecting a virtual server. + * + * @return string + */ + public function getPredefinedQueryName() + { + return $this->predefined_query_name; + } + + /** + * Sets the option to decide whether ServerQuery clients should be excluded from node + * lists or not. + * + * @param boolean $exclude + * @return void + */ + public function setExcludeQueryClients($exclude = FALSE) + { + $this->setStorage("_query_hide", $exclude); + + $this->exclude_query_clients = $exclude; + } + + /** + * Returns the option to decide whether ServerQuery clients should be excluded from node + * lists or not. + * + * @return boolean + */ + public function getExcludeQueryClients() + { + return $this->exclude_query_clients; + } + + /** + * Sets the option to decide whether offline servers will be started in virtual mode + * by default or not. + * + * @param boolean $virtual + * @return void + */ + public function setUseOfflineAsVirtual($virtual = FALSE) + { + $this->setStorage("_do_virtual", $virtual); + + $this->start_offline_virtual = $virtual; + } + + /** + * Returns the option to decide whether offline servers will be started in virtual mode + * by default or not. + * + * @return boolean + */ + public function getUseOfflineAsVirtual() + { + return $this->start_offline_virtual; + } + + /** + * Sets the option to decide whether clients should be sorted before sub-channels to support + * the new TeamSpeak 3 Client display mode or not. + * + * @param boolean $first + * @return void + */ + public function setLoadClientlistFirst($first = FALSE) + { + $this->setStorage("_client_top", $first); + + $this->sort_clients_channels = $first; + } + + /** + * Returns the option to decide whether offline servers will be started in virtual mode + * by default or not. + * + * @return boolean + */ + public function getLoadClientlistFirst() + { + return $this->sort_clients_channels; + } + + /** + * Returns the underlying TeamSpeak3_Adapter_ServerQuery object. + * + * @return TeamSpeak3_Adapter_ServerQuery + */ + public function getAdapter() + { + return $this->getParent(); + } + + /** + * Returns a unique identifier for the node which can be used as a HTML property. + * + * @return string + */ + public function getUniqueId() + { + return "ts3_h"; + } + + /** + * Returns the name of a possible icon to display the node object. + * + * @return string + */ + public function getIcon() + { + return "host"; + } + + /** + * Returns a symbol representing the node. + * + * @return string + */ + public function getSymbol() + { + return "+"; + } + + /** + * Re-authenticates with the TeamSpeak 3 Server instance using given ServerQuery login + * credentials and re-selects a previously selected virtual server. + * + * @return void + */ + public function __wakeup() + { + $username = $this->getStorage("_login_user"); + $password = $this->getStorage("_login_pass"); + + if($username && $password) + { + $crypt = new TeamSpeak3_Helper_Crypt($username); + + $this->login($username, $crypt->decrypt($password)); + } + + $this->predefined_query_name = $this->getStorage("_query_nick"); + $this->exclude_query_clients = $this->getStorage("_query_hide", FALSE); + $this->start_offline_virtual = $this->getStorage("_do_virtual", FALSE); + $this->sort_clients_channels = $this->getStorage("_client_top", FALSE); + + if($server = $this->getStorage("_server_use")) + { + $func = array_shift($server); + $args = array_shift($server); + + call_user_func_array(array($this, $func), $args); + } + } + + /** + * Returns a string representation of this node. + * + * @return string + */ + public function __toString() + { + return (string) $this->getAdapterHost(); + } +} + diff --git a/lib/libraries/TeamSpeak3/Node/Server.php b/lib/libraries/TeamSpeak3/Node/Server.php new file mode 100644 index 0000000..5dae154 --- /dev/null +++ b/lib/libraries/TeamSpeak3/Node/Server.php @@ -0,0 +1,2536 @@ +. + * + * @package TeamSpeak3 + * @version 1.1.23 + * @author Sven 'ScP' Paulsen + * @copyright Copyright (c) 2010 by Planet TeamSpeak. All rights reserved. + */ + +/** + * @class TeamSpeak3_Node_Server + * @brief Class describing a TeamSpeak 3 virtual server and all it's parameters. + */ +class TeamSpeak3_Node_Server extends TeamSpeak3_Node_Abstract +{ + /** + * @ignore + */ + protected $channelList = null; + + /** + * @ignore + */ + protected $clientList = null; + + /** + * @ignore + */ + protected $sgroupList = null; + + /** + * @ignore + */ + protected $cgroupList = null; + + /** + * The TeamSpeak3_Node_Server constructor. + * + * @param TeamSpeak3_Node_Host $host + * @param array $info + * @param string $index + * @throws TeamSpeak3_Adapter_ServerQuery_Exception + * @return TeamSpeak3_Node_Server + */ + public function __construct(TeamSpeak3_Node_Host $host, array $info, $index = "virtualserver_id") + { + $this->parent = $host; + $this->nodeInfo = $info; + + if(!array_key_exists($index, $this->nodeInfo)) + { + throw new TeamSpeak3_Adapter_ServerQuery_Exception("invalid serverID", 0x400); + } + + $this->nodeId = $this->nodeInfo[$index]; + } + + /** + * Sends a prepared command to the server and returns the result. + * + * @param string $cmd + * @param boolean $throw + * @return TeamSpeak3_Adapter_ServerQuery_Reply + */ + public function request($cmd, $throw = TRUE) + { + if($this->getId() != $this->getParent()->serverSelectedId()) + { + $this->getParent()->serverSelect($this->getId()); + } + + return $this->getParent()->request($cmd, $throw); + } + + /** + * Returns an array filled with TeamSpeak3_Node_Channel objects. + * + * @param array $filter + * @return array + */ + public function channelList(array $filter = array()) + { + if($this->channelList === null) + { + $channels = $this->request("channellist -topic -flags -voice -limits -icon")->toAssocArray("cid"); + + $this->channelList = array(); + + foreach($channels as $cid => $channel) + { + $this->channelList[$cid] = new TeamSpeak3_Node_Channel($this, $channel); + } + + $this->resetNodeList(); + } + + return $this->filterList($this->channelList, $filter); + } + + /** + * Resets the list of channels online. + * + * @return void + */ + public function channelListReset() + { + $this->resetNodeList(); + $this->channelList = null; + } + + /** + * Creates a new channel using given properties and returns the new ID. + * + * @param array $properties + * @return integer + */ + public function channelCreate(array $properties) + { + $cid = $this->execute("channelcreate", $properties)->toList(); + $this->channelListReset(); + + if(!isset($properties["client_flag_permanent"]) && !isset($properties["client_flag_semi_permanent"])) + { + $this->getParent()->whoamiSet("client_channel_id", $cid["cid"]); + } + + return $cid["cid"]; + } + + /** + * Deletes the channel specified by $cid. + * + * @param integer $cid + * @param boolean $force + * @return void + */ + public function channelDelete($cid, $force = FALSE) + { + $this->execute("channeldelete", array("cid" => $cid, "force" => $force)); + $this->channelListReset(); + + if(($cid instanceof TeamSpeak3_Node_Abstract ? $cid->getId() : $cid) == $this->whoamiGet("client_channel_id")) + { + $this->getParent()->whoamiReset(); + } + } + + /** + * Moves the channel specified by $cid to the parent channel specified with $pid. + * + * @param integer $cid + * @param integer $pid + * @param integer $order + * @return void + */ + public function channelMove($cid, $pid, $order = null) + { + $this->execute("channelmove", array("cid" => $cid, "cpid" => $pid, "order" => $order)); + $this->channelListReset(); + } + + /** + * Returns TRUE if the given TeamSpeak3_Node_Channel object is a spacer. + * + * @param TeamSpeak3_Node_Channel $channel + * @return boolean + */ + public function channelIsSpacer(TeamSpeak3_Node_Channel $channel) + { + return (preg_match("/\[[^\]]*spacer[^\]]*\]/", $channel) && $channel["channel_flag_permanent"] && !$channel["pid"]) ? TRUE : FALSE; + } + + /** + * Creates a new channel spacer and returns the new ID. The first parameter $ident is used to create a + * unique spacer name on the virtual server. + * + * @param string $ident + * @param mixed $type + * @param integer $align + * @param integer $order + * @param integer $maxclients + * @throws TeamSpeak3_Adapter_ServerQuery_Exception + * @return integer + */ + public function channelSpacerCreate($ident, $type = TeamSpeak3::SPACER_SOLIDLINE, $align = TeamSpeak3::SPACER_ALIGN_REPEAT, $order = null, $maxclients = 0) + { + $properties = array( + "channel_name_phonetic" => "channel spacer", + "channel_codec" => TeamSpeak3::CODEC_OPUS_VOICE, + "channel_codec_quality" => 0x00, + "channel_flag_permanent" => TRUE, + "channel_flag_maxclients_unlimited" => FALSE, + "channel_flag_maxfamilyclients_unlimited" => FALSE, + "channel_flag_maxfamilyclients_inherited" => FALSE, + "channel_maxclients" => $maxclients, + "channel_order" => $order, + ); + + switch($align) + { + case TeamSpeak3::SPACER_ALIGN_REPEAT: + $properties["channel_name"] = "[*spacer" . strval($ident) . "]"; + break; + + case TeamSpeak3::SPACER_ALIGN_LEFT: + $properties["channel_name"] = "[lspacer" . strval($ident) . "]"; + break; + + case TeamSpeak3::SPACER_ALIGN_RIGHT: + $properties["channel_name"] = "[rspacer" . strval($ident) . "]"; + break; + + case TeamSpeak3::SPACER_ALIGN_CENTER: + $properties["channel_name"] = "[cspacer" . strval($ident) . "]"; + break; + + default: + throw new TeamSpeak3_Adapter_ServerQuery_Exception("missing required parameter", 0x606); + break; + } + + switch($type) + { + case (string) TeamSpeak3::SPACER_SOLIDLINE: + $properties["channel_name"] .= "___"; + break; + + case (string) TeamSpeak3::SPACER_DASHLINE: + $properties["channel_name"] .= "---"; + break; + + case (string) TeamSpeak3::SPACER_DOTLINE: + $properties["channel_name"] .= "..."; + break; + + case (string) TeamSpeak3::SPACER_DASHDOTLINE: + $properties["channel_name"] .= "-.-"; + break; + + case (string) TeamSpeak3::SPACER_DASHDOTDOTLINE: + $properties["channel_name"] .= "-.."; + break; + + default: + $properties["channel_name"] .= strval($type); + break; + } + + return $this->channelCreate($properties); + } + + /** + * Returns the possible type of a channel spacer. + * + * @param integer $cid + * @throws TeamSpeak3_Adapter_ServerQuery_Exception + * @return integer + */ + public function channelSpacerGetType($cid) + { + $channel = $this->channelGetById($cid); + + if(!$this->channelIsSpacer($channel)) + { + throw new TeamSpeak3_Adapter_ServerQuery_Exception("invalid channel flags", 0x307); + } + + switch($channel["channel_name"]->section("]", 1)) + { + case "___": + return TeamSpeak3::SPACER_SOLIDLINE; + + case "---": + return TeamSpeak3::SPACER_DASHLINE; + + case "...": + return TeamSpeak3::SPACER_DOTLINE; + + case "-.-": + return TeamSpeak3::SPACER_DASHDOTLINE; + + case "-..": + return TeamSpeak3::SPACER_DASHDOTDOTLINE; + + default: + return TeamSpeak3::SPACER_CUSTOM; + } + } + + /** + * Returns the possible alignment of a channel spacer. + * + * @param integer $cid + * @throws TeamSpeak3_Adapter_ServerQuery_Exception + * @return integer + */ + public function channelSpacerGetAlign($cid) + { + $channel = $this->channelGetById($cid); + + if(!$this->channelIsSpacer($channel) || !preg_match("/\[(.*)spacer.*\]/", $channel, $matches) || !isset($matches[1])) + { + throw new TeamSpeak3_Adapter_ServerQuery_Exception("invalid channel flags", 0x307); + } + + switch($matches[1]) + { + case "*": + return TeamSpeak3::SPACER_ALIGN_REPEAT; + + case "c": + return TeamSpeak3::SPACER_ALIGN_CENTER; + + case "r": + return TeamSpeak3::SPACER_ALIGN_RIGHT; + + default: + return TeamSpeak3::SPACER_ALIGN_LEFT; + } + } + + /** + * Returns a list of permissions defined for a specific channel. + * + * @param integer $cid + * @param boolean $permsid + * @return array + */ + public function channelPermList($cid, $permsid = FALSE) + { + return $this->execute("channelpermlist", array("cid" => $cid, $permsid ? "-permsid" : null))->toAssocArray($permsid ? "permsid" : "permid"); + } + + /** + * Adds a set of specified permissions to a channel. Multiple permissions can be added by + * providing the two parameters of each permission. + * + * @param integer $cid + * @param integer $permid + * @param integer $permvalue + * @return void + */ + public function channelPermAssign($cid, $permid, $permvalue) + { + if(!is_array($permid)) + { + $permident = (is_numeric($permid)) ? "permid" : "permsid"; + } + else + { + $permident = (is_numeric(current($permid))) ? "permid" : "permsid"; + } + + $this->execute("channeladdperm", array("cid" => $cid, $permident => $permid, "permvalue" => $permvalue)); + } + + /** + * Removes a set of specified permissions from a channel. Multiple permissions can be removed at once. + * + * @param integer $cid + * @param integer $permid + * @return void + */ + public function channelPermRemove($cid, $permid) + { + if(!is_array($permid)) + { + $permident = (is_numeric($permid)) ? "permid" : "permsid"; + } + else + { + $permident = (is_numeric(current($permid))) ? "permid" : "permsid"; + } + + $this->execute("channeldelperm", array("cid" => $cid, $permident => $permid)); + } + + /** + * Returns a list of permissions defined for a client in a specific channel. + * + * @param integer $cid + * @param integer $cldbid + * @param boolean $permsid + * @return array + */ + public function channelClientPermList($cid, $cldbid, $permsid = FALSE) + { + return $this->execute("channelclientpermlist", array("cid" => $cid, "cldbid" => $cldbid, $permsid ? "-permsid" : null))->toAssocArray($permsid ? "permsid" : "permid"); + } + + /** + * Adds a set of specified permissions to a client in a specific channel. Multiple permissions can be added by + * providing the two parameters of each permission. + * + * @param integer $cid + * @param integer $cldbid + * @param integer $permid + * @param integer $permvalue + * @return void + */ + public function channelClientPermAssign($cid, $cldbid, $permid, $permvalue) + { + if(!is_array($permid)) + { + $permident = (is_numeric($permid)) ? "permid" : "permsid"; + } + else + { + $permident = (is_numeric(current($permid))) ? "permid" : "permsid"; + } + + $this->execute("channelclientaddperm", array("cid" => $cid, "cldbid" => $cldbid, $permident => $permid, "permvalue" => $permvalue)); + } + + /** + * Removes a set of specified permissions from a client in a specific channel. Multiple permissions can be removed at once. + * + * @param integer $cid + * @param integer $cldbid + * @param integer $permid + * @return void + */ + public function channelClientPermRemove($cid, $cldbid, $permid) + { + if(!is_array($permid)) + { + $permident = (is_numeric($permid)) ? "permid" : "permsid"; + } + else + { + $permident = (is_numeric(current($permid))) ? "permid" : "permsid"; + } + + $this->execute("channelclientdelperm", array("cid" => $cid, "cldbid" => $cldbid, $permident => $permid)); + } + + /** + * Returns a list of files and directories stored in the specified channels file repository. + * + * @param integer $cid + * @param string $cpw + * @param string $path + * @param boolean $recursive + * @return array + */ + public function channelFileList($cid, $cpw = "", $path = "/", $recursive = FALSE) + { + $files = $this->execute("ftgetfilelist", array("cid" => $cid, "cpw" => $cpw, "path" => $path))->toArray(); + $count = count($files); + + for($i = 0; $i < $count; $i++) + { + $files[$i]["sid"] = $this->getId(); + $files[$i]["cid"] = $files[0]["cid"]; + $files[$i]["path"] = $files[0]["path"]; + $files[$i]["src"] = new TeamSpeak3_Helper_String($cid ? $files[$i]["path"] : "/"); + + if(!$files[$i]["src"]->endsWith("/")) + { + $files[$i]["src"]->append("/"); + } + + $files[$i]["src"]->append($files[$i]["name"]); + + if($recursive && $files[$i]["type"] == TeamSpeak3::FILE_TYPE_DIRECTORY) + { + $files = array_merge($files, $this->channelFileList($cid, $cpw, $path . $files[$i]["name"], $recursive)); + } + } + + uasort($files, array(__CLASS__, "sortFileList")); + + return $files; + } + + /** + * Returns detailed information about the specified file stored in a channels file repository. + * + * @param integer $cid + * @param string $cpw + * @param string $name + * @return array + */ + public function channelFileInfo($cid, $cpw = "", $name = "/") + { + return array_pop($this->execute("ftgetfileinfo", array("cid" => $cid, "cpw" => $cpw, "name" => $name))->toArray()); + } + + /** + * Renames a file in a channels file repository. If the two parameters $tcid and $tcpw are specified, the file + * will be moved into another channels file repository. + * + * @param integer $cid + * @param string $cpw + * @param string $oldname + * @param string $newname + * @param integer $tcid + * @param string $tcpw + * @return void + */ + public function channelFileRename($cid, $cpw = "", $oldname = "/", $newname = "/", $tcid = null, $tcpw = null) + { + $this->execute("ftrenamefile", array("cid" => $cid, "cpw" => $cpw, "oldname" => $oldname, "newname" => $newname, "tcid" => $tcid, "tcpw" => $tcpw)); + } + + /** + * Deletes one or more files stored in a channels file repository. + * + * @param integer $cid + * @param string $cpw + * @param string $name + * @return void + */ + public function channelFileDelete($cid, $cpw = "", $name = "/") + { + $this->execute("ftdeletefile", array("cid" => $cid, "cpw" => $cpw, "name" => $name)); + } + + /** + * Creates new directory in a channels file repository. + * + * @param integer $cid + * @param string $cpw + * @param string $dirname + * @return void + */ + public function channelDirCreate($cid, $cpw = "", $dirname = "/") + { + $this->execute("ftcreatedir", array("cid" => $cid, "cpw" => $cpw, "dirname" => $dirname)); + } + + /** + * Returns the level of a channel. + * + * @param integer $cid + * @return integer + */ + public function channelGetLevel($cid) + { + $channel = $this->channelGetById($cid); + $levelno = 0; + + if($channel["pid"]) + { + $levelno = $this->channelGetLevel($channel["pid"])+1; + } + + return $levelno; + } + + /** + * Returns the pathway of a channel which can be used as a clients default channel. + * + * @param integer $cid + * @return string + */ + public function channelGetPathway($cid) + { + $channel = $this->channelGetById($cid); + $pathway = $channel["channel_name"]; + + if($channel["pid"]) + { + $pathway = $this->channelGetPathway($channel["pid"]) . "/" . $channel["channel_name"]; + } + + return $pathway; + } + + /** + * Returns the TeamSpeak3_Node_Channel object matching the given ID. + * + * @param integer $cid + * @throws TeamSpeak3_Adapter_ServerQuery_Exception + * @return TeamSpeak3_Node_Channel + */ + public function channelGetById($cid) + { + if(!array_key_exists((string) $cid, $this->channelList())) + { + throw new TeamSpeak3_Adapter_ServerQuery_Exception("invalid channelID", 0x300); + } + + return $this->channelList[intval((string) $cid)]; + } + + /** + * Returns the TeamSpeak3_Node_Channel object matching the given name. + * + * @param string $name + * @throws TeamSpeak3_Adapter_ServerQuery_Exception + * @return TeamSpeak3_Node_Channel + */ + public function channelGetByName($name) + { + foreach($this->channelList() as $channel) + { + if($channel["channel_name"] == $name) return $channel; + } + + throw new TeamSpeak3_Adapter_ServerQuery_Exception("invalid channelID", 0x300); + } + + /** + * Returns an array filled with TeamSpeak3_Node_Client objects. + * + * @param array $filter + * @return array + */ + public function clientList(array $filter = array()) + { + if($this->clientList === null) + { + $clients = $this->request("clientlist -uid -away -badges -voice -info -times -groups -icon -country -ip")->toAssocArray("clid"); + + $this->clientList = array(); + + foreach($clients as $clid => $client) + { + if($this->getParent()->getExcludeQueryClients() && $client["client_type"]) continue; + + $this->clientList[$clid] = new TeamSpeak3_Node_Client($this, $client); + } + + uasort($this->clientList, array(__CLASS__, "sortClientList")); + + $this->resetNodeList(); + } + + return $this->filterList($this->clientList, $filter); + } + + /** + * Resets the list of clients online. + * + * @return void + */ + public function clientListReset() + { + $this->resetNodeList(); + $this->clientList = null; + } + + /** + * Returns a list of clients matching a given name pattern. + * + * @param string $pattern + * @return array + */ + public function clientFind($pattern) + { + return $this->execute("clientfind", array("pattern" => $pattern))->toAssocArray("clid"); + } + + /** + * Returns a list of client identities known by the virtual server. By default, the server spits out 25 entries + * at once. + * + * @param integer $offset + * @param integer $limit + * @return array + */ + public function clientListDb($offset = null, $limit = null) + { + return $this->execute("clientdblist -count", array("start" => $offset, "duration" => $limit))->toAssocArray("cldbid"); + } + + /** + * Returns the number of client identities known by the virtual server. + * + * @return integer + */ + public function clientCountDb() + { + return current($this->execute("clientdblist -count", array("duration" => 1))->toList("count")); + } + + /** + * Returns a list of properties from the database for the client specified by $cldbid. + * + * @param integer $cldbid + * @return array + */ + public function clientInfoDb($cldbid) + { + return $this->execute("clientdbinfo", array("cldbid" => $cldbid))->toList(); + } + + /** + * Returns a list of client database IDs matching a given pattern. You can either search for a clients + * last known nickname or his unique identity by using the $uid option. + * + * @param string $pattern + * @param boolean $uid + * @return array + */ + public function clientFindDb($pattern, $uid = FALSE) + { + return array_keys($this->execute("clientdbfind", array("pattern" => $pattern, ($uid) ? "-uid" : null))->toAssocArray("cldbid")); + } + + /** + * Returns the number of regular clients online. + * + * @return integer + */ + public function clientCount() + { + if($this->isOffline()) return 0; + + return $this["virtualserver_clientsonline"]-$this["virtualserver_queryclientsonline"]; + } + + /** + * Returns the TeamSpeak3_Node_Client object matching the given ID. + * + * @param integer $clid + * @throws TeamSpeak3_Adapter_ServerQuery_Exception + * @return TeamSpeak3_Node_Client + */ + public function clientGetById($clid) + { + if(!array_key_exists((string) $clid, $this->clientList())) + { + throw new TeamSpeak3_Adapter_ServerQuery_Exception("invalid clientID", 0x200); + } + + return $this->clientList[intval((string) $clid)]; + } + + /** + * Returns the TeamSpeak3_Node_Client object matching the given name. + * + * @param string $name + * @throws TeamSpeak3_Adapter_ServerQuery_Exception + * @return TeamSpeak3_Node_Client + */ + public function clientGetByName($name) + { + foreach($this->clientList() as $client) + { + if($client["client_nickname"] == $name) return $client; + } + + throw new TeamSpeak3_Adapter_ServerQuery_Exception("invalid clientID", 0x200); + } + + /** + * Returns the TeamSpeak3_Node_Client object matching the given unique identifier. + * + * @param string $uid + * @throws TeamSpeak3_Adapter_ServerQuery_Exception + * @return TeamSpeak3_Node_Client + */ + public function clientGetByUid($uid) + { + foreach($this->clientList() as $client) + { + if($client["client_unique_identifier"] == $uid) return $client; + } + + throw new TeamSpeak3_Adapter_ServerQuery_Exception("invalid clientID", 0x200); + } + + /** + * Returns the TeamSpeak3_Node_Client object matching the given database ID. + * + * @param integer $dbid + * @throws TeamSpeak3_Adapter_ServerQuery_Exception + * @return TeamSpeak3_Node_Client + */ + public function clientGetByDbid($dbid) + { + foreach($this->clientList() as $client) + { + if($client["client_database_id"] == $dbid) return $client; + } + + throw new TeamSpeak3_Adapter_ServerQuery_Exception("invalid clientID", 0x200); + } + + /** + * Returns an array containing the last known nickname and the database ID of the client matching + * the unique identifier specified with $cluid. + * + * @param string $cluid + * @return array + */ + public function clientGetNameByUid($cluid) + { + return $this->execute("clientgetnamefromuid", array("cluid" => $cluid))->toList(); + } + + /** + * Returns an array containing a list of active client connections using the unique identifier + * specified with $cluid. + * + * @param string $cluid + * @return array + */ + public function clientGetIdsByUid($cluid) + { + return $this->execute("clientgetids", array("cluid" => $cluid))->toAssocArray("clid"); + } + + /** + * Returns an array containing the last known nickname and the unique identifier of the client + * matching the database ID specified with $cldbid. + * + * @param string $cldbid + * @return array + */ + public function clientGetNameByDbid($cldbid) + { + return $this->execute("clientgetnamefromdbid", array("cldbid" => $cldbid))->toList(); + } + + /** + * Returns an array containing the names and IDs of all server groups the client specified with + * $cldbid is is currently residing in. + * + * @param string $cldbid + * @return array + */ + public function clientGetServerGroupsByDbid($cldbid) + { + return $this->execute("servergroupsbyclientid", array("cldbid" => $cldbid))->toAssocArray("sgid"); + } + + /** + * Moves a client to another channel. + * + * @param integer $clid + * @param integer $cid + * @param string $cpw + * @return void + */ + public function clientMove($clid, $cid, $cpw = null) + { + $this->clientListReset(); + + $this->execute("clientmove", array("clid" => $clid, "cid" => $cid, "cpw" => $cpw)); + + if($clid instanceof TeamSpeak3_Node_Abstract) + { + $clid = $clid->getId(); + } + + if($cid instanceof TeamSpeak3_Node_Abstract) + { + $cid = $cid->getId(); + } + + if(!is_array($clid) && $clid == $this->whoamiGet("client_id")) + { + $this->getParent()->whoamiSet("client_channel_id", $cid); + } + } + + /** + * Kicks one or more clients from their currently joined channel or from the server. + * + * @param integer $clid + * @param integer $reasonid + * @param string $reasonmsg + * @return void + */ + public function clientKick($clid, $reasonid = TeamSpeak3::KICK_CHANNEL, $reasonmsg = null) + { + $this->clientListReset(); + + $this->execute("clientkick", array("clid" => $clid, "reasonid" => $reasonid, "reasonmsg" => $reasonmsg)); + } + + /** + * Sends a poke message to a client. + * + * @param integer $clid + * @param string $msg + * @return void + */ + public function clientPoke($clid, $msg) + { + $this->execute("clientpoke", array("clid" => $clid, "msg" => $msg)); + } + + /** + * Bans the client specified with ID $clid from the server. Please note that this will create two separate + * ban rules for the targeted clients IP address and his unique identifier. + * + * @param integer $clid + * @param integer $timeseconds + * @param string $reason + * @return array + */ + public function clientBan($clid, $timeseconds = null, $reason = null) + { + $this->clientListReset(); + + $bans = $this->execute("banclient", array("clid" => $clid, "time" => $timeseconds, "banreason" => $reason))->toAssocArray("banid"); + + return array_keys($bans); + } + + /** + * Changes the clients properties using given properties. + * + * @param string $cldbid + * @param array $properties + * @return void + */ + public function clientModifyDb($cldbid, array $properties) + { + $properties["cldbid"] = $cldbid; + + $this->execute("clientdbedit", $properties); + } + + /** + * Deletes a clients properties from the database. + * + * @param string $cldbid + * @return void + */ + public function clientDeleteDb($cldbid) + { + $this->execute("clientdbdelete", array("cldbid" => $cldbid)); + } + + /** + * Sets the channel group of a client to the ID specified. + * + * @param integer $cldbid + * @param integer $cid + * @param integer $cgid + * @return void + */ + public function clientSetChannelGroup($cldbid, $cid, $cgid) + { + $this->execute("setclientchannelgroup", array("cldbid" => $cldbid, "cid" => $cid, "cgid" => $cgid)); + } + + /** + * Returns a list of permissions defined for a client. + * + * @param integer $cldbid + * @param boolean $permsid + * @return array + */ + public function clientPermList($cldbid, $permsid = FALSE) + { + $this->clientListReset(); + + return $this->execute("clientpermlist", array("cldbid" => $cldbid, $permsid ? "-permsid" : null))->toAssocArray($permsid ? "permsid" : "permid"); + } + + /** + * Adds a set of specified permissions to a client. Multiple permissions can be added by providing + * the three parameters of each permission. + * + * @param integer $cldbid + * @param integer $permid + * @param integer $permvalue + * @param integer $permskip + * @return void + */ + public function clientPermAssign($cldbid, $permid, $permvalue, $permskip = FALSE) + { + if(!is_array($permid)) + { + $permident = (is_numeric($permid)) ? "permid" : "permsid"; + } + else + { + $permident = (is_numeric(current($permid))) ? "permid" : "permsid"; + } + + $this->execute("clientaddperm", array("cldbid" => $cldbid, $permident => $permid, "permvalue" => $permvalue, "permskip" => $permskip)); + } + + /** + * Removes a set of specified permissions from a client. Multiple permissions can be removed at once. + * + * @param integer $cldbid + * @param integer $permid + * @return void + */ + public function clientPermRemove($cldbid, $permid) + { + if(!is_array($permid)) + { + $permident = (is_numeric($permid)) ? "permid" : "permsid"; + } + else + { + $permident = (is_numeric(current($permid))) ? "permid" : "permsid"; + } + + $this->execute("clientdelperm", array("cldbid" => $cldbid, $permident => $permid)); + } + + /** + * Returns a list of server groups available. + * + * @param filter $filter + * @return array + */ + public function serverGroupList(array $filter = array()) + { + if($this->sgroupList === null) + { + $this->sgroupList = $this->request("servergrouplist")->toAssocArray("sgid"); + + foreach($this->sgroupList as $sgid => $group) + { + $this->sgroupList[$sgid] = new TeamSpeak3_Node_Servergroup($this, $group); + } + + uasort($this->sgroupList, array(__CLASS__, "sortGroupList")); + } + + return $this->filterList($this->sgroupList, $filter); + } + + /** + * Resets the list of server groups. + * + * @return void + */ + public function serverGroupListReset() + { + $this->sgroupList = null; + } + + /** + * Creates a new server group using the name specified with $name and returns its ID. + * + * @param string $name + * @param integer $type + * @return integer + */ + public function serverGroupCreate($name, $type = TeamSpeak3::GROUP_DBTYPE_REGULAR) + { + $this->serverGroupListReset(); + + $sgid = $this->execute("servergroupadd", array("name" => $name, "type" => $type))->toList(); + + return $sgid["sgid"]; + } + + /** + * Creates a copy of an existing server group specified by $ssgid and returns the new groups ID. + * + * @param integer $ssgid + * @param string $name + * @param integer $tsgid + * @param integer $type + * @return integer + */ + public function serverGroupCopy($ssgid, $name = null, $tsgid = 0, $type = TeamSpeak3::GROUP_DBTYPE_REGULAR) + { + $this->serverGroupListReset(); + + $sgid = $this->execute("servergroupcopy", array("ssgid" => $ssgid, "tsgid" => $tsgid, "name" => $name, "type" => $type))->toList(); + + if($tsgid && $name) + { + $this->serverGroupRename($tsgid, $name); + } + + return count($sgid) ? $sgid["sgid"] : intval($tsgid); + } + + /** + * Renames the server group specified with $sgid. + * + * @param integer $sgid + * @param string $name + * @return void + */ + public function serverGroupRename($sgid, $name) + { + $this->serverGroupListReset(); + + $this->execute("servergrouprename", array("sgid" => $sgid, "name" => $name)); + } + + /** + * Deletes the server group specified with $sgid. If $force is set to 1, the server group + * will be deleted even if there are clients within. + * + * @param integer $sgid + * @param boolean $force + * @return void + */ + public function serverGroupDelete($sgid, $force = FALSE) + { + $this->serverGroupListReset(); + + $this->execute("servergroupdel", array("sgid" => $sgid, "force" => $force)); + } + + /** + * Returns the TeamSpeak3_Node_Servergroup object matching the given ID. + * + * @param integer $sgid + * @throws TeamSpeak3_Adapter_ServerQuery_Exception + * @return TeamSpeak3_Node_Servergroup + */ + public function serverGroupGetById($sgid) + { + if(!array_key_exists((string) $sgid, $this->serverGroupList())) + { + throw new TeamSpeak3_Adapter_ServerQuery_Exception("invalid groupID", 0xA00); + } + + return $this->sgroupList[intval((string) $sgid)]; + } + + /** + * Returns the TeamSpeak3_Node_Servergroup object matching the given name. + * + * @param string $name + * @param integer $type + * @throws TeamSpeak3_Adapter_ServerQuery_Exception + * @return TeamSpeak3_Node_Servergroup + */ + public function serverGroupGetByName($name, $type = TeamSpeak3::GROUP_DBTYPE_REGULAR) + { + foreach($this->serverGroupList() as $group) + { + if($group["name"] == $name && $group["type"] == $type) return $group; + } + + throw new TeamSpeak3_Adapter_ServerQuery_Exception("invalid groupID", 0xA00); + } + + /** + * Returns a list of permissions assigned to the server group specified. + * + * @param integer $sgid + * @param boolean $permsid + * @return array + */ + public function serverGroupPermList($sgid, $permsid = FALSE) + { + return $this->execute("servergrouppermlist", array("sgid" => $sgid, $permsid ? "-permsid" : null))->toAssocArray($permsid ? "permsid" : "permid"); + } + + /** + * Adds a set of specified permissions to the server group specified. Multiple permissions + * can be added by providing the four parameters of each permission in separate arrays. + * + * @param integer $sgid + * @param integer $permid + * @param integer $permvalue + * @param integer $permnegated + * @param integer $permskip + * @return void + */ + public function serverGroupPermAssign($sgid, $permid, $permvalue, $permnegated = FALSE, $permskip = FALSE) + { + if(!is_array($permid)) + { + $permident = (is_numeric($permid)) ? "permid" : "permsid"; + } + else + { + $permident = (is_numeric(current($permid))) ? "permid" : "permsid"; + } + + $this->execute("servergroupaddperm", array("sgid" => $sgid, $permident => $permid, "permvalue" => $permvalue, "permnegated" => $permnegated, "permskip" => $permskip)); + } + + /** + * Removes a set of specified permissions from the server group specified with $sgid. Multiple + * permissions can be removed at once. + * + * @param integer $sgid + * @param integer $permid + * @return void + */ + public function serverGroupPermRemove($sgid, $permid) + { + if(!is_array($permid)) + { + $permident = (is_numeric($permid)) ? "permid" : "permsid"; + } + else + { + $permident = (is_numeric(current($permid))) ? "permid" : "permsid"; + } + + $this->execute("servergroupdelperm", array("sgid" => $sgid, $permident => $permid)); + } + + /** + * Returns a list of clients assigned to the server group specified. + * + * @param integer $sgid + * @return array + */ + public function serverGroupClientList($sgid) + { + if($this["virtualserver_default_server_group"] == $sgid) + { + return array(); + } + + return $this->execute("servergroupclientlist", array("sgid" => $sgid, "-names"))->toAssocArray("cldbid"); + } + + /** + * Adds a client to the server group specified. Please note that a client cannot be + * added to default groups or template groups. + * + * @param integer $sgid + * @param integer $cldbid + * @return void + */ + public function serverGroupClientAdd($sgid, $cldbid) + { + $this->clientListReset(); + + $this->execute("servergroupaddclient", array("sgid" => $sgid, "cldbid" => $cldbid)); + } + + /** + * Removes a client from the server group specified. + * + * @param integer $sgid + * @param integer $cldbid + * @return void + */ + public function serverGroupClientDel($sgid, $cldbid) + { + $this->execute("servergroupdelclient", array("sgid" => $sgid, "cldbid" => $cldbid)); + } + + /** + * Returns an ordered array of regular server groups available based on a pre-defined + * set of rules. + * + * @return array + */ + public function serverGroupGetProfiles() + { + $profiles = array(); + + foreach($this->serverGroupList() as $sgid => $sgroup) + { + if($sgroup["type"] != TeamSpeak3::GROUP_DBTYPE_REGULAR) continue; + + $profiles[$sgid] = array( + "b_permission_modify_power_ignore" => 0, + "i_group_needed_member_add_power" => 0, + "i_group_member_add_power" => 0, + "i_group_needed_member_remove_power" => 0, + "i_group_member_remove_power" => 0, + "i_needed_modify_power_count" => 0, + "i_needed_modify_power_total" => 0, + "i_permission_modify_power" => 0, + "i_group_needed_modify_power" => 0, + "i_group_modify_power" => 0, + "i_client_needed_modify_power" => 0, + "i_client_modify_power" => 0, + "b_virtualserver_servergroup_create" => 0, + "b_virtualserver_servergroup_delete" => 0, + "b_client_ignore_bans" => 0, + "b_client_ignore_antiflood" => 0, + "b_group_is_permanent" => 0, + "i_client_needed_ban_power" => 0, + "i_client_needed_kick_power" => 0, + "i_client_needed_move_power" => 0, + "i_client_talk_power" => 0, + "__sgid" => $sgid, + "__name" => $sgroup->toString(), + "__node" => $sgroup, + ); + + try + { + $perms = $this->serverGroupPermList($sgid, TRUE); + $grant = isset($perms["i_permission_modify_power"]) ? $perms["i_permission_modify_power"]["permvalue"] : null; + } + catch(TeamSpeak3_Adapter_ServerQuery_Exception $e) + { + /* ERROR_database_empty_result */ + if($e->getCode() != 0x501) throw $e; + + $perms = array(); + $grant = null; + } + + foreach($perms as $permsid => $perm) + { + if(in_array($permsid, array_keys($profiles[$sgid]))) + { + $profiles[$sgid][$permsid] = $perm["permvalue"]; + } + elseif(TeamSpeak3_Helper_String::factory($permsid)->startsWith("i_needed_modify_power_")) + { + if(!$grant || $perm["permvalue"] > $grant) continue; + + $profiles[$sgid]["i_needed_modify_power_total"] = $profiles[$sgid]["i_needed_modify_power_total"]+$perm["permvalue"]; + $profiles[$sgid]["i_needed_modify_power_count"]++; + } + } + } + + array_multisort($profiles, SORT_DESC); + + return $profiles; + } + + /** + * Tries to identify the post powerful/weakest server group on the virtual server and returns + * the ID. + * + * @param integer $mode + * @return TeamSpeak3_Node_Servergroup + */ + public function serverGroupIdentify($mode = TeamSpeak3::GROUP_IDENTIFIY_STRONGEST) + { + $profiles = $this->serverGroupGetProfiles(); + + $best_guess_profile = ($mode == TeamSpeak3::GROUP_IDENTIFIY_STRONGEST) ? array_shift($profiles) : array_pop($profiles); + + return $this->serverGroupGetById($best_guess_profile["__sgid"]); + } + + /** + * Returns a list of channel groups available. + * + * @param array $filter + * @return array + */ + public function channelGroupList(array $filter = array()) + { + if($this->cgroupList === null) + { + $this->cgroupList = $this->request("channelgrouplist")->toAssocArray("cgid"); + + foreach($this->cgroupList as $cgid => $group) + { + $this->cgroupList[$cgid] = new TeamSpeak3_Node_Channelgroup($this, $group); + } + + uasort($this->cgroupList, array(__CLASS__, "sortGroupList")); + } + + return $this->filterList($this->cgroupList, $filter); + } + + /** + * Resets the list of channel groups. + * + * @return void + */ + public function channelGroupListReset() + { + $this->cgroupList = null; + } + + /** + * Creates a new channel group using the name specified with $name and returns its ID. + * + * @param string $name + * @param integer $type + * @return integer + */ + public function channelGroupCreate($name, $type = TeamSpeak3::GROUP_DBTYPE_REGULAR) + { + $this->channelGroupListReset(); + + $cgid = $this->execute("channelgroupadd", array("name" => $name, "type" => $type))->toList(); + + return $cgid["cgid"]; + } + + /** + * Creates a copy of an existing channel group specified by $scgid and returns the new groups ID. + * + * @param integer $scgid + * @param string $name + * @param integer $tcgid + * @param integer $type + * @return integer + */ + public function channelGroupCopy($scgid, $name = null, $tcgid = 0, $type = TeamSpeak3::GROUP_DBTYPE_REGULAR) + { + $this->channelGroupListReset(); + + $cgid = $this->execute("channelgroupcopy", array("scgid" => $scgid, "tcgid" => $tcgid, "name" => $name, "type" => $type))->toList(); + + if($tcgid && $name) + { + $this->channelGroupRename($tcgid, $name); + } + + return count($cgid) ? $cgid["cgid"] : intval($tcgid); + } + + /** + * Renames the channel group specified with $cgid. + * + * @param integer $cgid + * @param string $name + * @return void + */ + public function channelGroupRename($cgid, $name) + { + $this->channelGroupListReset(); + + $this->execute("channelgrouprename", array("cgid" => $cgid, "name" => $name)); + } + + /** + * Deletes the channel group specified with $cgid. If $force is set to 1, the channel group + * will be deleted even if there are clients within. + * + * @param integer $sgid + * @param boolean $force + * @return void + */ + public function channelGroupDelete($cgid, $force = FALSE) + { + $this->channelGroupListReset(); + + $this->execute("channelgroupdel", array("cgid" => $cgid, "force" => $force)); + } + + /** + * Returns the TeamSpeak3_Node_Channelgroup object matching the given ID. + * + * @param integer $cgid + * @throws TeamSpeak3_Adapter_ServerQuery_Exception + * @return TeamSpeak3_Node_Channelgroup + */ + public function channelGroupGetById($cgid) + { + if(!array_key_exists((string) $cgid, $this->channelGroupList())) + { + throw new TeamSpeak3_Adapter_ServerQuery_Exception("invalid groupID", 0xA00); + } + + return $this->cgroupList[intval((string) $cgid)]; + } + + /** + * Returns the TeamSpeak3_Node_Channelgroup object matching the given name. + * + * @param string $name + * @param integer $type + * @throws TeamSpeak3_Adapter_ServerQuery_Exception + * @return TeamSpeak3_Node_Channelgroup + */ + public function channelGroupGetByName($name, $type = TeamSpeak3::GROUP_DBTYPE_REGULAR) + { + foreach($this->channelGroupList() as $group) + { + if($group["name"] == $name && $group["type"] == $type) return $group; + } + + throw new TeamSpeak3_Adapter_ServerQuery_Exception("invalid groupID", 0xA00); + } + + /** + * Returns a list of permissions assigned to the channel group specified. + * + * @param integer $cgid + * @param boolean $permsid + * @return array + */ + public function channelGroupPermList($cgid, $permsid = FALSE) + { + return $this->execute("channelgrouppermlist", array("cgid" => $cgid, $permsid ? "-permsid" : null))->toAssocArray($permsid ? "permsid" : "permid"); + } + + /** + * Adds a set of specified permissions to the channel group specified. Multiple permissions + * can be added by providing the two parameters of each permission in separate arrays. + * + * @param integer $cgid + * @param integer $permid + * @param integer $permvalue + * @return void + */ + public function channelGroupPermAssign($cgid, $permid, $permvalue) + { + if(!is_array($permid)) + { + $permident = (is_numeric($permid)) ? "permid" : "permsid"; + } + else + { + $permident = (is_numeric(current($permid))) ? "permid" : "permsid"; + } + + $this->execute("channelgroupaddperm", array("cgid" => $cgid, $permident => $permid, "permvalue" => $permvalue)); + } + + /** + * Removes a set of specified permissions from the channel group specified with $cgid. Multiple + * permissions can be removed at once. + * + * @param integer $cgid + * @param integer $permid + * @return void + */ + public function channelGroupPermRemove($cgid, $permid) + { + if(!is_array($permid)) + { + $permident = (is_numeric($permid)) ? "permid" : "permsid"; + } + else + { + $permident = (is_numeric(current($permid))) ? "permid" : "permsid"; + } + + $this->execute("channelgroupdelperm", array("cgid" => $cgid, $permident => $permid)); + } + + /** + * Returns all the client and/or channel IDs currently assigned to channel groups. All three + * parameters are optional so you're free to choose the most suitable combination for your + * requirements. + * + * @param integer $cgid + * @param integer $cid + * @param integer $cldbid + * @return array + */ + public function channelGroupClientList($cgid = null, $cid = null, $cldbid = null) + { + if($this["virtualserver_default_channel_group"] == $cgid) + { + return array(); + } + + return $this->execute("channelgroupclientlist", array("cgid" => $cgid, "cid" => $cid, "cldbid" => $cldbid))->toArray(); + } + + /** + * Restores the default permission settings on the virtual server and returns a new initial + * administrator privilege key. + * + * @return TeamSpeak3_Helper_String + */ + public function permReset() + { + $token = $this->request("permreset")->toList(); + + TeamSpeak3_Helper_Signal::getInstance()->emit("notifyTokencreated", $this, $token["token"]); + + return $token["token"]; + } + + /** + * Removes any assignment of the permission specified with $permid on the selected virtual server + * and returns the number of removed assignments on success. + * + * @param integer $permid + * @return integer + */ + public function permRemoveAny($permid) + { + $assignments = $this->permissionFind($permid); + + foreach($assignments as $assignment) + { + switch($assignment["t"]) + { + case TeamSpeak3::PERM_TYPE_SERVERGROUP: + $this->serverGroupPermRemove($assignment["id1"], $assignment["p"]); + break; + + case TeamSpeak3::PERM_TYPE_CLIENT: + $this->clientPermRemove($assignment["id2"], $assignment["p"]); + break; + + case TeamSpeak3::PERM_TYPE_CHANNEL: + $this->channelPermRemove($assignment["id2"], $assignment["p"]); + break; + + case TeamSpeak3::PERM_TYPE_CHANNELGROUP: + $this->channelGroupPermRemove($assignment["id1"], $assignment["p"]); + break; + + case TeamSpeak3::PERM_TYPE_CHANNELCLIENT: + $this->channelClientPermRemove($assignment["id2"], $assignment["id1"], $assignment["p"]); + break; + + default: + throw new TeamSpeak3_Adapter_ServerQuery_Exception("convert error", 0x604); + } + } + + return count($assignments); + } + + /** + * Initializes a file transfer upload. $clientftfid is an arbitrary ID to identify the file transfer on client-side. + * + * @param integer $clientftfid + * @param integer $cid + * @param string $name + * @param integer $size + * @param string $cpw + * @param boolean $overwrite + * @param boolean $resume + * @throws TeamSpeak3_Adapter_ServerQuery_Exception + * @return array + */ + public function transferInitUpload($clientftfid, $cid, $name, $size, $cpw = "", $overwrite = FALSE, $resume = FALSE) + { + $upload = $this->execute("ftinitupload", array("clientftfid" => $clientftfid, "cid" => $cid, "name" => $name, "cpw" => $cpw, "size" => $size, "overwrite" => $overwrite, "resume" => $resume))->toList(); + + if(array_key_exists("status", $upload) && $upload["status"] != 0x00) + { + throw new TeamSpeak3_Adapter_ServerQuery_Exception($upload["msg"], $upload["status"]); + } + + $upload["cid"] = $cid; + $upload["file"] = $name; + + if(!array_key_exists("ip", $upload) || $upload["ip"]->startsWith("0.0.0.0")) + { + $upload["ip"] = $this->getParent()->getAdapterHost(); + $upload["host"] = $upload["ip"]; + } + else + { + $upload["ip"] = $upload["ip"]->section(","); + $upload["host"] = $upload["ip"]; + } + + TeamSpeak3_Helper_Signal::getInstance()->emit("filetransferUploadInit", $upload["ftkey"], $upload); + + return $upload; + } + + /** + * Initializes a file transfer download. $clientftfid is an arbitrary ID to identify the file transfer on client-side. + * + * @param integer $clientftfid + * @param integer $cid + * @param string $name + * @param string $cpw + * @param integer $seekpos + * @throws TeamSpeak3_Adapter_ServerQuery_Exception + * @return array + */ + public function transferInitDownload($clientftfid, $cid, $name, $cpw = "", $seekpos = 0) + { + $download = $this->execute("ftinitdownload", array("clientftfid" => $clientftfid, "cid" => $cid, "name" => $name, "cpw" => $cpw, "seekpos" => $seekpos))->toList(); + + if(array_key_exists("status", $download) && $download["status"] != 0x00) + { + throw new TeamSpeak3_Adapter_ServerQuery_Exception($download["msg"], $download["status"]); + } + + $download["cid"] = $cid; + $download["file"] = $name; + + if(!array_key_exists("ip", $download) || $download["ip"]->startsWith("0.0.0.0")) + { + $download["ip"] = $this->getParent()->getAdapterHost(); + $download["host"] = $download["ip"]; + } + else + { + $download["ip"] = $download["ip"]->section(","); + $download["host"] = $download["ip"]; + } + + TeamSpeak3_Helper_Signal::getInstance()->emit("filetransferDownloadInit", $download["ftkey"], $download); + + return $download; + } + + /** + * Displays a list of running file transfers on the selected virtual server. The output contains the path to + * which a file is uploaded to, the current transfer rate in bytes per second, etc. + * + * @return array + */ + public function transferList() + { + return $this->request("ftlist")->toAssocArray("serverftfid"); + } + + /** + * Stops the running file transfer with server-side ID $serverftfid. + * + * @param integer $serverftfid + * @param boolean $delete + * @return void + */ + public function transferStop($serverftfid, $delete = FALSE) + { + $this->execute("ftstop", array("serverftfid" => $serverftfid, "delete" => $delete)); + } + + /** + * Downloads and returns the servers icon file content. + * + * @return TeamSpeak3_Helper_String + */ + public function iconDownload() + { + if($this->iconIsLocal("virtualserver_icon_id") || $this["virtualserver_icon_id"] == 0) return; + + $download = $this->transferInitDownload(rand(0x0000, 0xFFFF), 0, $this->iconGetName("virtualserver_icon_id")); + $transfer = TeamSpeak3::factory("filetransfer://" . $download["host"] . ":" . $download["port"]); + + return $transfer->download($download["ftkey"], $download["size"]); + } + + /** + * Uploads a given icon file content to the server and returns the ID of the icon. + * + * @param string $data + * @return integer + */ + public function iconUpload($data) + { + $crc = crc32($data); + $size = strlen($data); + + $upload = $this->transferInitUpload(rand(0x0000, 0xFFFF), 0, "/icon_" . $crc, $size); + $transfer = TeamSpeak3::factory("filetransfer://" . $upload["host"] . ":" . $upload["port"]); + + $transfer->upload($upload["ftkey"], $upload["seekpos"], $data); + + return $crc; + } + + /** + * Changes the virtual server configuration using given properties. + * + * @param array $properties + * @return void + */ + public function modify(array $properties) + { + $this->execute("serveredit", $properties); + $this->resetNodeInfo(); + } + + /** + * Sends a text message to all clients on the virtual server. + * + * @param string $msg + * @return void + */ + public function message($msg) + { + $this->execute("sendtextmessage", array("msg" => $msg, "target" => $this->getId(), "targetmode" => TeamSpeak3::TEXTMSG_SERVER)); + } + + /** + * Returns a list of offline messages you've received. The output contains the senders unique identifier, + * the messages subject, etc. + * + * @return array + */ + public function messageList() + { + return $this->request("messagelist")->toAssocArray("msgid"); + } + + /** + * Sends an offline message to the client specified by $cluid. + * + * @param string $cluid + * @param string $subject + * @param string $message + * @return void + */ + public function messageCreate($cluid, $subject, $message) + { + $this->execute("messageadd", array("cluid" => $cluid, "subject" => $subject, "message" => $message)); + } + + /** + * Deletes an existing offline message with ID $msgid from your inbox. + * + * @param integer $msgid + * @return void + */ + public function messageDelete($msgid) + { + $this->execute("messagedel", array("msgid" => $msgid)); + } + + /** + * Returns an existing offline message with ID $msgid from your inbox. + * + * @param integer $msgid + * @param boolean $flag_read + * @return array + */ + public function messageRead($msgid, $flag_read = TRUE) + { + $msg = $this->execute("messageget", array("msgid" => $msgid))->toList(); + + if($flag_read) + { + $this->execute("messageget", array("msgid" => $msgid, "flag" => $flag_read)); + } + + return $msg; + } + + /** + * Creates and returns snapshot data for the selected virtual server. + * + * @param string $mode + * @return string + */ + public function snapshotCreate($mode = TeamSpeak3::SNAPSHOT_STRING) + { + $snapshot = $this->request("serversnapshotcreate")->toString(FALSE); + + switch($mode) + { + case TeamSpeak3::SNAPSHOT_BASE64: + return $snapshot->toBase64(); + break; + + case TeamSpeak3::SNAPSHOT_HEXDEC: + return $snapshot->toHex(); + break; + + default: + return (string) $snapshot; + break; + } + } + + /** + * Deploys snapshot data on the selected virtual server. If no virtual server is selected (ID 0), + * the data will be used to create a new virtual server from scratch. + * + * @param string $data + * @param string $mode + * @return array + */ + public function snapshotDeploy($data, $mode = TeamSpeak3::SNAPSHOT_STRING) + { + switch($mode) + { + case TeamSpeak3::SNAPSHOT_BASE64: + $data = TeamSpeak3_Helper_String::fromBase64($data); + break; + + case TeamSpeak3::SNAPSHOT_HEXDEC: + $data = TeamSpeak3_Helper_String::fromHex($data); + break; + + default: + $data = TeamSpeak3_Helper_String::factory($data); + break; + } + + $detail = $this->request("serversnapshotdeploy " . $data)->toList(); + + if(array_key_exists("sid", $detail)) + { + TeamSpeak3_Helper_Signal::getInstance()->emit("notifyServercreated", $this->getParent(), $detail["sid"]); + } + + return $detail; + } + + /** + * Registers for a specified category of events on a virtual server to receive notification + * messages. Depending on the notifications you've registered for, the server will send you + * a message on every event. + * + * @param string $event + * @param integer $id + * @return void + */ + public function notifyRegister($event, $id = 0) + { + $this->execute("servernotifyregister", array("event" => $event, "id" => $id)); + } + + /** + * Unregisters all events previously registered with servernotifyregister so you will no + * longer receive notification messages. + * + * @return void + */ + public function notifyUnregister() + { + $this->request("servernotifyunregister"); + } + + /** + * Alias for privilegeKeyList(). + * + * @deprecated + */ + public function tokenList($translate = FALSE) + { + return $this->privilegeKeyList(); + } + + /** + * Returns a list of privilege keys (tokens) available. If $resolve is set to TRUE the values + * of token_id1 and token_id2 will be translated into the appropriate group and/or channel + * names. + * + * @param boolean $resolve + * @return array + */ + public function privilegeKeyList($resolve = FALSE) + { + $tokens = $this->request("privilegekeylist")->toAssocArray("token"); + + if($resolve) + { + foreach($tokens as $token => $array) + { + $func = $array["token_type"] ? "channelGroupGetById" : "serverGroupGetById"; + + try + { + $tokens[$token]["token_id1"] = $this->$func($array["token_id1"])->name; + } + catch(Exception $e) + { + /* ERROR_channel_invalid_id */ + if($e->getCode() != 0xA00) throw $e; + } + + try + { + if($array["token_type"]) $tokens[$token]["token_id2"] = $this->channelGetById($array["token_id2"])->getPathway(); + } + catch(Exception $e) + { + /* ERROR_permission_invalid_group_id */ + if($e->getCode() != 0x300) throw $e; + } + } + } + + return $tokens; + } + + /** + * Alias for privilegeKeyCreate(). + * + * @deprecated + */ + public function tokenCreate($type = TeamSpeak3::TOKEN_SERVERGROUP, $id1, $id2 = 0, $description = null, $customset = null) + { + return $this->privilegeKeyCreate($type, $id1, $id2, $description, $customset); + } + + /** + * Creates a new privilege key (token) and returns the key. + * + * @param integer $type + * @param integer $id1 + * @param integer $id2 + * @param string $description + * @param string $customset + * @return TeamSpeak3_Helper_String + */ + public function privilegeKeyCreate($type = TeamSpeak3::TOKEN_SERVERGROUP, $id1, $id2 = 0, $description = null, $customset = null) + { + $token = $this->execute("privilegekeyadd", array("tokentype" => $type, "tokenid1" => $id1, "tokenid2" => $id2, "tokendescription" => $description, "tokencustomset" => $customset))->toList(); + + TeamSpeak3_Helper_Signal::getInstance()->emit("notifyTokencreated", $this, $token["token"]); + + return $token["token"]; + } + + /** + * Alias for privilegeKeyDelete(). + * + * @deprecated + */ + public function tokenDelete($token) + { + $this->privilegeKeyDelete($token); + } + + /** + * Deletes a token specified by key $token. + * + * @param string $token + * @return void + */ + public function privilegeKeyDelete($token) + { + $this->execute("privilegekeydelete", array("token" => $token)); + } + + /** + * Alias for privilegeKeyUse(). + * + * @deprecated + */ + public function tokenUse($token) + { + $this->privilegeKeyUse($token); + } + + /** + * Use a token key gain access to a server or channel group. Please note that the server will + * automatically delete the token after it has been used. + * + * @param string $token + * @return void + */ + public function privilegeKeyUse($token) + { + $this->execute("privilegekeyuse", array("token" => $token)); + } + + /** + * Returns a list of custom client properties specified by $ident. + * + * @param string $ident + * @param string $pattern + * @return array + */ + public function customSearch($ident, $pattern = "%") + { + return $this->execute("customsearch", array("ident" => $ident, "pattern" => $pattern))->toArray(); + } + + /** + * Returns a list of custom properties for the client specified by $cldbid. + * + * @param integer $cldbid + * @return array + */ + public function customInfo($cldbid) + { + return $this->execute("custominfo", array("cldbid" => $cldbid))->toArray(); + } + + /** + * Returns a list of active bans on the selected virtual server. + * + * @return array + */ + public function banList() + { + return $this->request("banlist")->toAssocArray("banid"); + } + + /** + * Deletes all active ban rules from the server. + * + * @return void + */ + public function banListClear() + { + $this->request("bandelall"); + } + + /** + * Adds a new ban rule on the selected virtual server. All parameters are optional but at least one + * of the following rules must be set: ip, name, or uid. + * + * @param array $rules + * @param integer $timeseconds + * @param string $reason + * @return integer + */ + public function banCreate(array $rules, $timeseconds = null, $reason = null) + { + $rules["time"] = $timeseconds; + $rules["banreason"] = $reason; + + $banid = $this->execute("banadd", $rules)->toList(); + + return $banid["banid"]; + } + + /** + * Deletes the specified ban rule from the server. + * + * @param integer $banid + * @return void + */ + public function banDelete($banid) + { + $this->execute("bandel", array("banid" => $banid)); + } + + /** + * Returns a list of complaints on the selected virtual server. If $tcldbid is specified, only + * complaints about the targeted client will be shown. + * + * @param integer $tcldbid + * @return array + */ + public function complaintList($tcldbid = null) + { + return $this->execute("complainlist", array("tcldbid" => $tcldbid))->toArray(); + } + + /** + * Deletes all active complaints about the client with database ID $tcldbid from the server. + * + * @param integer $tcldbid + * @return void + */ + public function complaintListClear($tcldbid) + { + $this->execute("complaindelall", array("tcldbid" => $tcldbid)); + } + + /** + * Submits a complaint about the client with database ID $tcldbid to the server. + * + * @param integer $tcldbid + * @param string $message + * @return void + */ + public function complaintCreate($tcldbid, $message) + { + $this->execute("complainadd", array("tcldbid" => $tcldbid, "message" => $message)); + } + + /** + * Deletes the complaint about the client with ID $tcldbid submitted by the client with ID $fcldbid from the server. + * + * @param integer $tcldbid + * @param integer $fcldbid + * @return void + */ + public function complaintDelete($tcldbid, $fcldbid) + { + $this->execute("complaindel", array("tcldbid" => $tcldbid, "fcldbid" => $fcldbid)); + } + + /** + * Returns a list of temporary server passwords. + * + * @param boolean $resolve + * @return array + */ + public function tempPasswordList($resolve = FALSE) + { + $passwords = $this->request("servertemppasswordlist")->toAssocArray("pw_clear"); + + if($resolve) + { + foreach($passwords as $password => $array) + { + try + { + $channel = $this->channelGetById($array["tcid"]); + + $passwords[$password]["tcname"] = $channel->toString(); + $passwords[$password]["tcpath"] = $channel->getPathway(); + } + catch(Exception $e) + { + /* ERROR_channel_invalid_id */ + if($e->getCode() != 0xA00) throw $e; + } + } + } + + return $passwords; + } + + /** + * Sets a new temporary server password specified with $pw. The temporary password will be + * valid for the number of seconds specified with $duration. The client connecting with this + * password will automatically join the channel specified with $tcid. If tcid is set to 0, + * the client will join the default channel. + * + * @param string $pw + * @param integer $duration + * @param integer $tcid + * @param string $tcpw + * @param string $desc + * @return void + */ + public function tempPasswordCreate($pw, $duration, $tcid = 0, $tcpw = "", $desc = "") + { + $this->execute("servertemppasswordadd", array("pw" => $pw, "duration" => $duration, "tcid" => $tcid, "tcpw" => $tcpw, "desc" => $desc)); + } + + /** + * Deletes the temporary server password specified with $pw. + * + * @param string $pw + * @return void + */ + public function tempPasswordDelete($pw) + { + $this->execute("servertemppassworddel", array("pw" => $pw)); + } + + /** + * Displays a specified number of entries (1-100) from the servers log. + * + * @param integer $lines + * @param integer $begin_pos + * @param boolean $reverse + * @param boolean $instance + * @return array + */ + public function logView($lines = 30, $begin_pos = null, $reverse = null, $instance = null) + { + return $this->execute("logview", array("lines" => $lines, "begin_pos" => $begin_pos, "instance" => $instance, "reverse" => $reverse))->toArray(); + } + + /** + * Writes a custom entry into the virtual server log. + * + * @param string $logmsg + * @param integer $loglevel + * @return void + */ + public function logAdd($logmsg, $loglevel = TeamSpeak3::LOGLEVEL_INFO) + { + $this->execute("logadd", array("logmsg" => $logmsg, "loglevel" => $loglevel)); + } + + /** + * Returns detailed connection information of the virtual server. + * + * @return array + */ + public function connectionInfo() + { + return $this->request("serverrequestconnectioninfo")->toList(); + } + + /** + * Deletes the virtual server. + * + * @return void + */ + public function delete() + { + $this->getParent()->serverDelete($this->getId()); + + unset($this); + } + + /** + * Starts the virtual server. + * + * @return void + */ + public function start() + { + $this->getParent()->serverStart($this->getId()); + } + + /** + * Stops the virtual server. + * + * @return void + */ + public function stop() + { + $this->getParent()->serverStop($this->getId()); + } + + /** + * Sends a plugin command to all clients connected to the server. + * + * @param string $plugin + * @param string $data + * @return void + */ + public function sendPluginCmd($plugin, $data) + { + $this->execute("plugincmd", array("name" => $plugin, "data" => $data, "targetmode" => TeamSpeak3::PLUGINCMD_SERVER)); + } + + /** + * Changes the properties of your own client connection. + * + * @param array $properties + * @return void + */ + public function selfUpdate(array $properties) + { + $this->execute("clientupdate", $properties); + + foreach($properties as $ident => $value) + { + $this->whoamiSet($ident, $value); + } + } + + /** + * Updates your own ServerQuery login credentials using a specified username. The password + * will be auto-generated. + * + * @param string $username + * @return TeamSpeak3_Helper_String + */ + public function selfUpdateLogin($username) + { + $password = $this->execute("clientsetserverquerylogin", array("client_login_name" => $username))->toList(); + + return $password["client_login_password"]; + } + + /** + * Returns an array containing the permission overview of your own client. + * + * @return array + */ + public function selfPermOverview() + { + return $this->execute("permoverview", array("cldbid" => $this->whoamiGet("client_database_id"), "cid" => $this->whoamiGet("client_channel_id"), "permid" => 0))->toArray(); + } + + /** + * @ignore + */ + protected function fetchNodeList() + { + $this->nodeList = array(); + + foreach($this->channelList() as $channel) + { + if($channel["pid"] == 0) + { + $this->nodeList[] = $channel; + } + } + } + + /** + * @ignore + */ + protected function fetchNodeInfo() + { + $this->nodeInfo = array_merge($this->nodeInfo, $this->request("serverinfo")->toList()); + } + + /** + * Internal callback funtion for sorting of client objects. + * + * @param TeamSpeak3_Node_Client $a + * @param TeamSpeak3_Node_Client $b + * @return integer + */ + protected static function sortClientList(TeamSpeak3_Node_Client $a, TeamSpeak3_Node_Client $b) + { + if(get_class($a) != get_class($b)) + { + return 0; + + /* workaround for PHP bug #50688 */ + throw new TeamSpeak3_Adapter_ServerQuery_Exception("invalid parameter", 0x602); + } + + if(!$a instanceof TeamSpeak3_Node_Client) + { + return 0; + + /* workaround for PHP bug #50688 */ + throw new TeamSpeak3_Adapter_ServerQuery_Exception("convert error", 0x604); + } + + if($a->getProperty("client_talk_power", 0) != $b->getProperty("client_talk_power", 0)) + { + return ($a->getProperty("client_talk_power", 0) > $b->getProperty("client_talk_power", 0)) ? -1 : 1; + } + + if($a->getProperty("client_is_talker", 0) != $b->getProperty("client_is_talker", 0)) + { + return ($a->getProperty("client_is_talker", 0) > $b->getProperty("client_is_talker", 0)) ? -1 : 1; + } + + return strcmp(strtolower($a["client_nickname"]), strtolower($b["client_nickname"])); + } + + /** + * Internal callback funtion for sorting of group objects. + * + * @param TeamSpeak3_Node_Abstract $a + * @param TeamSpeak3_Node_Abstract $b + * @return integer + */ + protected static function sortGroupList(TeamSpeak3_Node_Abstract $a, TeamSpeak3_Node_Abstract $b) + { + if(get_class($a) != get_class($b)) + { + return 0; + + /* workaround for PHP bug #50688 */ + throw new TeamSpeak3_Adapter_ServerQuery_Exception("invalid parameter", 0x602); + } + + if(!$a instanceof TeamSpeak3_Node_Servergroup && !$a instanceof TeamSpeak3_Node_Channelgroup) + { + return 0; + + /* workaround for PHP bug #50688 */ + throw new TeamSpeak3_Adapter_ServerQuery_Exception("convert error", 0x604); + } + + if($a->getProperty("sortid", 0) != $b->getProperty("sortid", 0) && $a->getProperty("sortid", 0) != 0 && $b->getProperty("sortid", 0) != 0) + { + return ($a->getProperty("sortid", 0) < $b->getProperty("sortid", 0)) ? -1 : 1; + } + + return ($a->getId() < $b->getId()) ? -1 : 1; + } + +/** + * Internal callback funtion for sorting of file list items. + * + * @param array $a + * @param array $b + * @return integer + */ + protected static function sortFileList(array $a, array $b) + { + if(!array_key_exists("src", $a) || !array_key_exists("src", $b) || !array_key_exists("type", $a) || !array_key_exists("type", $b)) + { + return 0; + + throw new TeamSpeak3_Adapter_ServerQuery_Exception("invalid parameter", 0x602); + } + + if($a["type"] != $b["type"]) + { + return ($a["type"] < $b["type"]) ? -1 : 1; + } + + return strcmp(strtolower($a["src"]), strtolower($b["src"])); + } + + /** + * Returns TRUE if the virtual server is online. + * + * @return boolean + */ + public function isOnline() + { + return ($this["virtualserver_status"] == "online") ? TRUE : FALSE; + } + + /** + * Returns TRUE if the virtual server is offline. + * + * @return boolean + */ + public function isOffline() + { + return ($this["virtualserver_status"] == "offline") ? TRUE : FALSE; + } + + /** + * Returns a unique identifier for the node which can be used as a HTML property. + * + * @return string + */ + public function getUniqueId() + { + return $this->getParent()->getUniqueId() . "_s" . $this->getId(); + } + + /** + * Returns the name of a possible icon to display the node object. + * + * @return string + */ + public function getIcon() + { + if($this["virtualserver_clientsonline"]-$this["virtualserver_queryclientsonline"] >= $this["virtualserver_maxclients"]) + { + return "server_full"; + } + elseif($this["virtualserver_flag_password"]) + { + return "server_pass"; + } + else + { + return "server_open"; + } + } + + /** + * Returns a symbol representing the node. + * + * @return string + */ + public function getSymbol() + { + return "$"; + } + + /** + * Returns a string representation of this node. + * + * @return string + */ + public function __toString() + { + return (string) $this["virtualserver_name"]; + } +} diff --git a/lib/libraries/TeamSpeak3/Node/Servergroup.php b/lib/libraries/TeamSpeak3/Node/Servergroup.php new file mode 100644 index 0000000..90e36a9 --- /dev/null +++ b/lib/libraries/TeamSpeak3/Node/Servergroup.php @@ -0,0 +1,300 @@ +. + * + * @package TeamSpeak3 + * @version 1.1.23 + * @author Sven 'ScP' Paulsen + * @copyright Copyright (c) 2010 by Planet TeamSpeak. All rights reserved. + */ + +/** + * @class TeamSpeak3_Node_Servergroup + * @brief Class describing a TeamSpeak 3 server group and all it's parameters. + */ +class TeamSpeak3_Node_Servergroup extends TeamSpeak3_Node_Abstract +{ + /** + * The TeamSpeak3_Node_Servergroup constructor. + * + * @param TeamSpeak3_Node_Server $server + * @param array $info + * @param string $index + * @throws TeamSpeak3_Node_Exception + * @return TeamSpeak3_Node_Servergroup + */ + public function __construct(TeamSpeak3_Node_Server $server, array $info, $index = "sgid") + { + $this->parent = $server; + $this->nodeInfo = $info; + + if(!array_key_exists($index, $this->nodeInfo)) + { + throw new TeamSpeak3_Node_Exception("invalid groupID", 0xA00); + } + + $this->nodeId = $this->nodeInfo[$index]; + } + + /** + * Renames the server group specified. + * + * @param string $name + * @return void + */ + public function rename($name) + { + return $this->getParent()->serverGroupRename($this->getId(), $name); + } + + /** + * Deletes the server group. If $force is set to 1, the server group will be + * deleted even if there are clients within. + * + * @param boolean $force + * @return void + */ + public function delete($force = FALSE) + { + $this->getParent()->serverGroupDelete($this->getId(), $force); + + unset($this); + } + + /** + * Creates a copy of the server group and returns the new groups ID. + * + * @param string $name + * @param integer $tsgid + * @param integer $type + * @return integer + */ + public function copy($name = null, $tsgid = 0, $type = TeamSpeak3::GROUP_DBTYPE_REGULAR) + { + return $this->getParent()->serverGroupCopy($this->getId(), $name, $tsgid, $type); + } + + /** + * Returns a list of permissions assigned to the server group. + * + * @param boolean $permsid + * @return array + */ + public function permList($permsid = FALSE) + { + return $this->getParent()->serverGroupPermList($this->getId(), $permsid); + } + + /** + * Adds a set of specified permissions to the server group. Multiple permissions + * can be added by providing the four parameters of each permission in separate arrays. + * + * @param integer $permid + * @param integer $permvalue + * @param integer $permnegated + * @param integer $permskip + * @return void + */ + public function permAssign($permid, $permvalue, $permnegated = FALSE, $permskip = FALSE) + { + return $this->getParent()->serverGroupPermAssign($this->getId(), $permid, $permvalue, $permnegated, $permskip); + } + + /** + * Alias for permAssign(). + * + * @deprecated + */ + public function permAssignByName($permname, $permvalue, $permnegated = FALSE, $permskip = FALSE) + { + return $this->permAssign($permname, $permvalue, $permnegated, $permskip); + } + + /** + * Removes a set of specified permissions from the server group. Multiple + * permissions can be removed at once. + * + * @param integer $permid + * @return void + */ + public function permRemove($permid) + { + return $this->getParent()->serverGroupPermRemove($this->getId(), $permid); + } + + /** + * Alias for permRemove(). + * + * @deprecated + */ + public function permRemoveByName($permname) + { + return $this->permRemove($permname); + } + + /** + * Returns a list of clients assigned to the server group specified. + * + * @return array + */ + public function clientList() + { + return $this->getParent()->serverGroupClientList($this->getId()); + } + + /** + * Adds a client to the server group specified. Please note that a client cannot be + * added to default groups or template groups. + * + * @param integer $cldbid + * @return void + */ + public function clientAdd($cldbid) + { + return $this->getParent()->serverGroupClientAdd($this->getId(), $cldbid); + } + + /** + * Removes a client from the server group. + * + * @param integer $cldbid + * @return void + */ + public function clientDel($cldbid) + { + return $this->getParent()->serverGroupClientDel($this->getId(), $cldbid); + } + + /** + * Alias for privilegeKeyCreate(). + * + * @deprecated + */ + public function tokenCreate($description = null, $customset = null) + { + return $this->privilegeKeyCreate($description, $customset); + } + + /** + * Creates a new privilege key (token) for the server group and returns the key. + * + * @param string $description + * @param string $customset + * @return TeamSpeak3_Helper_String + */ + public function privilegeKeyCreate($description = null, $customset = null) + { + return $this->getParent()->privilegeKeyCreate(TeamSpeak3::TOKEN_SERVERGROUP, $this->getId(), 0, $description, $customset); + } + + /** + * Sends a text message to all clients residing in the server group on the virtual server. + * + * @param string $msg + * @return void + */ + public function message($msg) + { + foreach($this as $client) + { + try + { + $this->execute("sendtextmessage", array("msg" => $msg, "target" => $client, "targetmode" => TeamSpeak3::TEXTMSG_CLIENT)); + } + catch(TeamSpeak3_Adapter_ServerQuery_Exception $e) + { + /* ERROR_client_invalid_id */ + if($e->getCode() != 0x0200) throw $e; + } + } + } + + /** + * Downloads and returns the server groups icon file content. + * + * @return TeamSpeak3_Helper_String + */ + public function iconDownload() + { + if($this->iconIsLocal("iconid") || $this["iconid"] == 0) return; + + $download = $this->getParent()->transferInitDownload(rand(0x0000, 0xFFFF), 0, $this->iconGetName("iconid")); + $transfer = TeamSpeak3::factory("filetransfer://" . $download["host"] . ":" . $download["port"]); + + return $transfer->download($download["ftkey"], $download["size"]); + } + + /** + * @ignore + */ + protected function fetchNodeList() + { + $this->nodeList = array(); + + foreach($this->getParent()->clientList() as $client) + { + if(in_array($this->getId(), explode(",", $client["client_servergroups"]))) + { + $this->nodeList[] = $client; + } + } + } + + /** + * Returns a unique identifier for the node which can be used as a HTML property. + * + * @return string + */ + public function getUniqueId() + { + return $this->getParent()->getUniqueId() . "_sg" . $this->getId(); + } + + /** + * Returns the name of a possible icon to display the node object. + * + * @return string + */ + public function getIcon() + { + return "group_server"; + } + + /** + * Returns a symbol representing the node. + * + * @return string + */ + public function getSymbol() + { + return "%"; + } + + /** + * Returns a string representation of this node. + * + * @return string + */ + public function __toString() + { + return (string) $this["name"]; + } +} + diff --git a/lib/libraries/TeamSpeak3/TeamSpeak3.php b/lib/libraries/TeamSpeak3/TeamSpeak3.php new file mode 100644 index 0000000..48a67fa --- /dev/null +++ b/lib/libraries/TeamSpeak3/TeamSpeak3.php @@ -0,0 +1,981 @@ +. + * + * @package TeamSpeak3 + * @version 1.1.23 + * @author Sven 'ScP' Paulsen + * @copyright Copyright (c) 2010 by Planet TeamSpeak. All rights reserved. + */ + +/** + * @class TeamSpeak3 + * @brief Factory class all for TeamSpeak 3 PHP Framework objects. + */ +class TeamSpeak3 +{ + /** + * TeamSpeak 3 protocol welcome message. + */ + const READY = "TS3"; + + /** + * TeamSpeak 3 protocol greeting message prefix. + */ + const GREET = "Welcome"; + + /** + * TeamSpeak 3 protocol error message prefix. + */ + const ERROR = "error"; + + /** + * TeamSpeak 3 protocol event message prefix. + */ + const EVENT = "notify"; + + /** + * TeamSpeak 3 protocol server connection handler ID prefix. + */ + const SCHID = "selected"; + + /** + * TeamSpeak 3 PHP Framework version. + */ + const LIB_VERSION = "1.1.23"; + + /*@ + * TeamSpeak 3 protocol separators. + */ + const SEPARATOR_LINE = "\n"; //!< protocol line separator + const SEPARATOR_LIST = "|"; //!< protocol list separator + const SEPARATOR_CELL = " "; //!< protocol cell separator + const SEPARATOR_PAIR = "="; //!< protocol pair separator + + /*@ + * TeamSpeak 3 log levels. + */ + const LOGLEVEL_CRITICAL = 0x00; //!< 0: these messages stop the program + const LOGLEVEL_ERROR = 0x01; //!< 1: everything that is really bad + const LOGLEVEL_WARNING = 0x02; //!< 2: everything that might be bad + const LOGLEVEL_DEBUG = 0x03; //!< 3: output that might help find a problem + const LOGLEVEL_INFO = 0x04; //!< 4: informational output + const LOGLEVEL_DEVEL = 0x05; //!< 5: development output + + /*@ + * TeamSpeak 3 token types. + */ + const TOKEN_SERVERGROUP = 0x00; //!< 0: server group token (id1={groupID} id2=0) + const TOKEN_CHANNELGROUP = 0x01; //!< 1: channel group token (id1={groupID} id2={channelID}) + + /*@ + * TeamSpeak 3 codec identifiers. + */ + const CODEC_SPEEX_NARROWBAND = 0x00; //!< 0: speex narrowband (mono, 16bit, 8kHz) + const CODEC_SPEEX_WIDEBAND = 0x01; //!< 1: speex wideband (mono, 16bit, 16kHz) + const CODEC_SPEEX_ULTRAWIDEBAND = 0x02; //!< 2: speex ultra-wideband (mono, 16bit, 32kHz) + const CODEC_CELT_MONO = 0x03; //!< 3: celt mono (mono, 16bit, 48kHz) + const CODEC_OPUS_VOICE = 0x04; //!< 3: opus voice (interactive) + const CODEC_OPUS_MUSIC = 0x05; //!< 3: opus music (interactive) + + /*@ + * TeamSpeak 3 codec encryption modes. + */ + const CODEC_CRYPT_INDIVIDUAL = 0x00; //!< 0: configure per channel + const CODEC_CRYPT_DISABLED = 0x01; //!< 1: globally disabled + const CODEC_CRYPT_ENABLED = 0x02; //!< 2: globally enabled + + /*@ + * TeamSpeak 3 kick reason types. + */ + const KICK_CHANNEL = 0x04; //!< 4: kick client from channel + const KICK_SERVER = 0x05; //!< 5: kick client from server + + /*@ + * TeamSpeak 3 text message target modes. + */ + const TEXTMSG_CLIENT = 0x01; //!< 1: target is a client + const TEXTMSG_CHANNEL = 0x02; //!< 2: target is a channel + const TEXTMSG_SERVER = 0x03; //!< 3: target is a virtual server + + /*@ + * TeamSpeak 3 plugin command target modes. + */ + const PLUGINCMD_CHANNEL = 0x01; //!< 1: send plugincmd to all clients in current channel + const PLUGINCMD_SERVER = 0x02; //!< 2: send plugincmd to all clients on server + const PLUGINCMD_CLIENT = 0x03; //!< 3: send plugincmd to all given client ids + const PLUGINCMD_CHANNEL_SUBSCRIBED = 0x04; //!< 4: send plugincmd to all subscribed clients in current channel + + /*@ + * TeamSpeak 3 host message modes. + */ + const HOSTMSG_NONE = 0x00; //!< 0: display no message + const HOSTMSG_LOG = 0x01; //!< 1: display message in chatlog + const HOSTMSG_MODAL = 0x02; //!< 2: display message in modal dialog + const HOSTMSG_MODALQUIT = 0x03; //!< 3: display message in modal dialog and close connection + + /*@ + * TeamSpeak 3 host banner modes. + */ + const HOSTBANNER_NO_ADJUST = 0x00; //!< 0: do not adjust + const HOSTBANNER_IGNORE_ASPECT = 0x01; //!< 1: adjust but ignore aspect ratio + const HOSTBANNER_KEEP_ASPECT = 0x02; //!< 2: adjust and keep aspect ratio + + /*@ + * TeamSpeak 3 client identification types. + */ + const CLIENT_TYPE_REGULAR = 0x00; //!< 0: regular client + const CLIENT_TYPE_SERVERQUERY = 0x01; //!< 1: query client + + /*@ + * TeamSpeak 3 permission group database types. + */ + const GROUP_DBTYPE_TEMPLATE = 0x00; //!< 0: template group (used for new virtual servers) + const GROUP_DBTYPE_REGULAR = 0x01; //!< 1: regular group (used for regular clients) + const GROUP_DBTYPE_SERVERQUERY = 0x02; //!< 2: global query group (used for ServerQuery clients) + + /*@ + * TeamSpeak 3 permission group name modes. + */ + const GROUP_NAMEMODE_HIDDEN = 0x00; //!< 0: display no name + const GROUP_NAMEMODE_BEFORE = 0x01; //!< 1: display name before client nickname + const GROUP_NAMEMODE_BEHIND = 0x02; //!< 2: display name after client nickname + + /*@ + * TeamSpeak 3 permission group identification types. + */ + const GROUP_IDENTIFIY_STRONGEST = 0x01; //!< 1: identify most powerful group + const GROUP_IDENTIFIY_WEAKEST = 0x02; //!< 2: identify weakest group + + /*@ + * TeamSpeak 3 permission types. + */ + const PERM_TYPE_SERVERGROUP = 0x00; //!< 0: server group permission + const PERM_TYPE_CLIENT = 0x01; //!< 1: client specific permission + const PERM_TYPE_CHANNEL = 0x02; //!< 2: channel specific permission + const PERM_TYPE_CHANNELGROUP = 0x03; //!< 3: channel group permission + const PERM_TYPE_CHANNELCLIENT = 0x04; //!< 4: channel-client specific permission + + /*@ + * TeamSpeak 3 permission categories. + */ + const PERM_CAT_GLOBAL = 0x10; //!< 00010000: global permissions + const PERM_CAT_GLOBAL_INFORMATION = 0x11; //!< 00010001: global permissions -> global information + const PERM_CAT_GLOBAL_SERVER_MGMT = 0x12; //!< 00010010: global permissions -> virtual server management + const PERM_CAT_GLOBAL_ADM_ACTIONS = 0x13; //!< 00010011: global permissions -> global administrative actions + const PERM_CAT_GLOBAL_SETTINGS = 0x14; //!< 00010100: global permissions -> global settings + const PERM_CAT_SERVER = 0x20; //!< 00100000: virtual server permissions + const PERM_CAT_SERVER_INFORMATION = 0x21; //!< 00100001: virtual server permissions -> virtual server information + const PERM_CAT_SERVER_ADM_ACTIONS = 0x22; //!< 00100010: virtual server permissions -> virtual server administrative actions + const PERM_CAT_SERVER_SETTINGS = 0x23; //!< 00100011: virtual server permissions -> virtual server settings + const PERM_CAT_CHANNEL = 0x30; //!< 00110000: channel permissions + const PERM_CAT_CHANNEL_INFORMATION = 0x31; //!< 00110001: channel permissions -> channel information + const PERM_CAT_CHANNEL_CREATE = 0x32; //!< 00110010: channel permissions -> create channels + const PERM_CAT_CHANNEL_MODIFY = 0x33; //!< 00110011: channel permissions -> edit channels + const PERM_CAT_CHANNEL_DELETE = 0x34; //!< 00110100: channel permissions -> delete channels + const PERM_CAT_CHANNEL_ACCESS = 0x35; //!< 00110101: channel permissions -> access channels + const PERM_CAT_GROUP = 0x40; //!< 01000000: group permissions + const PERM_CAT_GROUP_INFORMATION = 0x41; //!< 01000001: group permissions -> group information + const PERM_CAT_GROUP_CREATE = 0x42; //!< 01000010: group permissions -> create groups + const PERM_CAT_GROUP_MODIFY = 0x43; //!< 01000011: group permissions -> edit groups + const PERM_CAT_GROUP_DELETE = 0x44; //!< 01000100: group permissions -> delete groups + const PERM_CAT_CLIENT = 0x50; //!< 01010000: client permissions + const PERM_CAT_CLIENT_INFORMATION = 0x51; //!< 01010001: client permissions -> client information + const PERM_CAT_CLIENT_ADM_ACTIONS = 0x52; //!< 01010010: client permissions -> client administrative actions + const PERM_CAT_CLIENT_BASICS = 0x53; //!< 01010011: client permissions -> client basic communication + const PERM_CAT_CLIENT_MODIFY = 0x54; //!< 01010100: client permissions -> edit clients + const PERM_CAT_FILETRANSFER = 0x60; //!< 01100000: file transfer permissions + const PERM_CAT_NEEDED_MODIFY_POWER = 0xFF; //!< 11111111: needed permission modify power (grant) permissions + + /*@ + * TeamSpeak 3 file types. + */ + const FILE_TYPE_DIRECTORY = 0x00; //!< 0: file is directory + const FILE_TYPE_REGULAR = 0x01; //!< 1: file is regular + + /*@ + * TeamSpeak 3 server snapshot types. + */ + const SNAPSHOT_STRING = 0x00; //!< 0: default string + const SNAPSHOT_BASE64 = 0x01; //!< 1: base64 string + const SNAPSHOT_HEXDEC = 0x02; //!< 2: hexadecimal string + + /*@ + * TeamSpeak 3 channel spacer types. + */ + const SPACER_SOLIDLINE = 0x00; //!< 0: solid line + const SPACER_DASHLINE = 0x01; //!< 1: dash line + const SPACER_DOTLINE = 0x02; //!< 2: dot line + const SPACER_DASHDOTLINE = 0x03; //!< 3: dash dot line + const SPACER_DASHDOTDOTLINE = 0x04; //!< 4: dash dot dot line + const SPACER_CUSTOM = 0x05; //!< 5: custom format + + /*@ + * TeamSpeak 3 channel spacer alignments. + */ + const SPACER_ALIGN_LEFT = 0x00; //!< 0: alignment left + const SPACER_ALIGN_RIGHT = 0x01; //!< 1: alignment right + const SPACER_ALIGN_CENTER = 0x02; //!< 2: alignment center + const SPACER_ALIGN_REPEAT = 0x03; //!< 3: repeat until the whole line is filled + + /*@ + * TeamSpeak 3 reason identifiers. + */ + const REASON_NONE = 0x00; //!< 0: no reason + const REASON_MOVE = 0x01; //!< 1: channel switched or moved + const REASON_SUBSCRIPTION = 0x02; //!< 2: subscription added or removed + const REASON_TIMEOUT = 0x03; //!< 3: client connection timed out + const REASON_CHANNEL_KICK = 0x04; //!< 4: client kicked from channel + const REASON_SERVER_KICK = 0x05; //!< 5: client kicked from server + const REASON_SERVER_BAN = 0x06; //!< 6: client banned from server + const REASON_SERVER_STOP = 0x07; //!< 7: server stopped + const REASON_DISCONNECT = 0x08; //!< 8: client disconnected + const REASON_CHANNEL_UPDATE = 0x09; //!< 9: channel information updated + const REASON_CHANNEL_EDIT = 0x0A; //!< 10: channel information edited + const REASON_DISCONNECT_SHUTDOWN = 0x0B; //!< 11: client disconnected on server shutdown + + /** + * Stores an array containing various chars which need to be escaped while communicating + * with a TeamSpeak 3 Server. + * + * @var array + */ + protected static $escape_patterns = array( + "\\" => "\\\\", // backslash + "/" => "\\/", // slash + " " => "\\s", // whitespace + "|" => "\\p", // pipe + ";" => "\\;", // semicolon + "\a" => "\\a", // bell + "\b" => "\\b", // backspace + "\f" => "\\f", // formfeed + "\n" => "\\n", // newline + "\r" => "\\r", // carriage return + "\t" => "\\t", // horizontal tab + "\v" => "\\v" // vertical tab + ); + + /** + * Factory for TeamSpeak3_Adapter_Abstract classes. $uri must be formatted as + * "://:@:/#". All parameters + * except adapter, host and port are optional. + * + * === Supported Options === + * - timeout + * - blocking + * - nickname + * - no_query_clients + * - use_offline_as_virtual + * - clients_before_channels + * - server_id|server_uid|server_port|server_name|server_tsdns + * - channel_id|channel_name + * - client_id|client_uid|client_name + * + * === Supported Flags (only one per $uri) === + * - no_query_clients + * - use_offline_as_virtual + * - clients_before_channels + * + * === URI Examples === + * - serverquery://127.0.0.1:10011/ + * - serverquery://127.0.0.1:10011/?server_port=9987&channel_id=1 + * - serverquery://127.0.0.1:10011/?server_port=9987&channel_id=1#no_query_clients + * - serverquery://127.0.0.1:10011/?server_port=9987&client_name=ScP + * - filetransfer://127.0.0.1:30011/ + * - blacklist + * - update + * + * @param string $uri + * @return TeamSpeak3_Adapter_Abstract + * @return TeamSpeak3_Node_Abstract + */ + public static function factory($uri) + { + self::init(); + + $uri = new TeamSpeak3_Helper_Uri($uri); + + $adapter = self::getAdapterName($uri->getScheme()); + $options = array("host" => $uri->getHost(), "port" => $uri->getPort(), "timeout" => intval($uri->getQueryVar("timeout", 10)), "blocking" => intval($uri->getQueryVar("blocking", 1))); + + self::loadClass($adapter); + + $object = new $adapter($options); + + if($object instanceof TeamSpeak3_Adapter_ServerQuery) + { + $node = $object->getHost(); + + if($uri->hasUser() && $uri->hasPass()) + { + $node->login($uri->getUser(), $uri->getPass()); + } + + /* option to pre-define nickname */ + if($uri->hasQueryVar("nickname")) + { + $node->setPredefinedQueryName($uri->getQueryVar("nickname")); + } + + /* flag to use offline servers in virtual mode */ + if($uri->getFragment() == "use_offline_as_virtual") + { + $node->setUseOfflineAsVirtual(TRUE); + } + elseif($uri->hasQueryVar("use_offline_as_virtual")) + { + $node->setUseOfflineAsVirtual($uri->getQueryVar("use_offline_as_virtual") ? TRUE : FALSE); + } + + /* flag to fetch clients before sub-channels */ + if($uri->getFragment() == "clients_before_channels") + { + $node->setLoadClientlistFirst(TRUE); + } + elseif($uri->hasQueryVar("clients_before_channels")) + { + $node->setLoadClientlistFirst($uri->getQueryVar("clients_before_channels") ? TRUE : FALSE); + } + + /* flag to hide ServerQuery clients */ + if($uri->getFragment() == "no_query_clients") + { + $node->setExcludeQueryClients(TRUE); + } + elseif($uri->hasQueryVar("no_query_clients")) + { + $node->setExcludeQueryClients($uri->getQueryVar("no_query_clients") ? TRUE : FALSE); + } + + /* access server node object */ + if($uri->hasQueryVar("server_id")) + { + $node = $node->serverGetById($uri->getQueryVar("server_id")); + } + elseif($uri->hasQueryVar("server_uid")) + { + $node = $node->serverGetByUid($uri->getQueryVar("server_uid")); + } + elseif($uri->hasQueryVar("server_port")) + { + $node = $node->serverGetByPort($uri->getQueryVar("server_port")); + } + elseif($uri->hasQueryVar("server_name")) + { + $node = $node->serverGetByName($uri->getQueryVar("server_name")); + } + elseif($uri->hasQueryVar("server_tsdns")) + { + $node = $node->serverGetByTSDNS($uri->getQueryVar("server_tsdns")); + } + + /* direct access to node objects */ + if($node instanceof TeamSpeak3_Node_Server) + { + /* access channel node object */ + if($uri->hasQueryVar("channel_id")) + { + $node = $node->channelGetById($uri->getQueryVar("channel_id")); + } + elseif($uri->hasQueryVar("channel_name")) + { + $node = $node->channelGetByName($uri->getQueryVar("channel_name")); + } + + /* access client node object */ + if($uri->hasQueryVar("client_id")) + { + $node = $node->clientGetById($uri->getQueryVar("client_id")); + } + if($uri->hasQueryVar("client_uid")) + { + $node = $node->clientGetByUid($uri->getQueryVar("client_uid")); + } + elseif($uri->hasQueryVar("client_name")) + { + $node = $node->clientGetByName($uri->getQueryVar("client_name")); + } + } + + return $node; + } + + return $object; + } + + /** + * Loads a class from a PHP file. The filename must be formatted as "$class.php". + * + * include() is not prefixed with the @ operator because if the file is loaded and + * contains a parse error, execution will halt silently and this is difficult to debug. + * + * @param string $class + * @throws LogicException + * @return boolean + */ + protected static function loadClass($class) + { + if(class_exists($class, FALSE) || interface_exists($class, FALSE)) + { + return; + } + + if(preg_match("/[^a-z0-9\\/\\\\_.-]/i", $class)) + { + throw new LogicException("illegal characters in classname '" . $class . "'"); + } + + $file = self::getFilePath($class) . ".php"; + + if(!file_exists($file) || !is_readable($file)) + { + throw new LogicException("file '" . $file . "' does not exist or is not readable"); + } + + if(class_exists($class, FALSE) || interface_exists($class, FALSE)) + { + throw new LogicException("class '" . $class . "' does not exist"); + } + + return include_once($file); + } + + /** + * Generates a possible file path for $name. + * + * @param string $name + * @return string + */ + protected static function getFilePath($name) + { + $path = str_replace("_", DIRECTORY_SEPARATOR, $name); + $path = str_replace(__CLASS__, dirname(__FILE__), $path); + + return $path; + } + + /** + * Returns the name of an adapter class by $name. + * + * @param string $name + * @param string $namespace + * @throws TeamSpeak3_Adapter_Exception + * @return string + */ + protected static function getAdapterName($name, $namespace = "TeamSpeak3_Adapter_") + { + $path = self::getFilePath($namespace); + $scan = scandir($path); + + foreach($scan as $node) + { + $file = TeamSpeak3_Helper_String::factory($node)->toLower(); + + if($file->startsWith($name) && $file->endsWith(".php")) + { + return $namespace . str_replace(".php", "", $node); + } + } + + throw new TeamSpeak3_Adapter_Exception("adapter '" . $name . "' does not exist"); + } + + /** + * spl_autoload() suitable implementation for supporting class autoloading. + * + * @param string $class + * @return boolean + */ + public static function autoload($class) + { + if(substr($class, 0, strlen(__CLASS__)) != __CLASS__) return; + + try + { + self::loadClass($class); + + return TRUE; + } + catch(Exception $e) + { + return FALSE; + } + } + + /** + * Checks for required PHP features, enables autoloading and starts a default profiler. + * + * @throws LogicException + * @return void + */ + public static function init() + { + if(version_compare(phpversion(), "5.2.1") == -1) + { + throw new LogicException("this particular software cannot be used with the installed version of PHP"); + } + + if(!function_exists("stream_socket_client")) + { + throw new LogicException("network functions are not available in this PHP installation"); + } + + if(!function_exists("spl_autoload_register")) + { + throw new LogicException("autoload functions are not available in this PHP installation"); + } + + if(!class_exists("TeamSpeak3_Helper_Profiler")) + { + spl_autoload_register(array(__CLASS__, "autoload")); + } + + TeamSpeak3_Helper_Profiler::start(); + } + + /** + * Returns an assoc array containing all escape patterns available on a TeamSpeak 3 + * Server. + * + * @return array + */ + public static function getEscapePatterns() + { + return self::$escape_patterns; + } + + /** + * Debug helper function. This is a wrapper for var_dump() that adds the pre-format tags, + * cleans up newlines and indents, and runs htmlentities() before output. + * + * @param mixed $var + * @param bool $echo + * @return string + */ + public static function dump($var, $echo = TRUE) + { + ob_start(); + var_dump($var); + + $output = ob_get_clean(); + $output = preg_replace("/\]\=\>\n(\s+)/m", "] => ", $output); + + if(PHP_SAPI == "cli") + { + $output = PHP_EOL . PHP_EOL . $output . PHP_EOL; + } + else + { + $output = "

" . htmlspecialchars($output, ENT_QUOTES) . "
"; + } + + if($echo) echo($output); + + return $output; + } +} + +/*! + * \mainpage API Documentation + * + * \section welcome_sec Introduction + * + * \subsection welcome1 What is the TS3 PHP Framework? + * Initially released in January 2010, the TS3 PHP Framework is a powerful, open source, object-oriented framework + * implemented in PHP 5 and licensed under the GNU General Public License. It's based on simplicity and a rigorously + * tested agile codebase. Extend the functionality of your servers with scripts or create powerful web applications + * to manage all features of your TeamSpeak 3 Server instances. + * + * Tested. Thoroughly. Enterprise-ready and built with agile methods, the TS3 PHP Framework has been unit-tested from + * the start to ensure that all code remains stable and easy for you to extend, re-test with your extensions, and + * further maintain. + * + * \subsection welcome2 Why should I use the TS3 PHP Framework rather than other PHP libraries? + * The TS3 PHP Framework is a is a modern use-at-will framework that provides individual components to communicate + * with the TeamSpeak 3 Server. + * + * There are lots of arguments for the TS3 PHP Framework in comparison with other PHP based libraries. It is the most + * dynamic and feature-rich piece of software in its class. In addition, it's always up-to-date and 100% compatible to + * almost any TeamSpeak 3 Server version available. + * + * \section sysreqs_sec Requirements + * The TS3 PHP Framework currently supports PHP 5.2.1 or later, but we strongly recommend the most current release of + * PHP for critical security and performance enhancements. If you want to create a web application using the TS3 PHP + * Framework, you need a PHP 5 interpreter with a web server configured to handle PHP scripts correctly. + * + * Note that the majority of TS3 PHP Framework development and deployment is done on nginx, so there is more community + * experience and testing performed on nginx than on other web servers. + * + * \section feature_sec Features + * Features of the TS3 PHP Framework include: + * + * - Fully object-oriented PHP 5 and E_STRICT compliant components + * - Access to all TeamSpeak 3 Server features via ServerQuery + * - Integrated full featured and customizable TSViewer interfaces + * - Full support for file transfers to up- and /or download custom icons and other stuff + * - Powerful error handling capablities using exceptions and customizable error messages + * - Query mechanisms for several official services such as the blacklist and auto-update servers + * - Dynamic signal slots for event based scripting + * - ... + * + * \section example_sec Usage Examples + * + * \subsection example1 1. Kick a single Client from a Virtual Server + * @code + * // load framework files + * require_once("libraries/TeamSpeak3/TeamSpeak3.php"); + * + * // connect to local server, authenticate and spawn an object for the virtual server on port 9987 + * $ts3_VirtualServer = TeamSpeak3::factory("serverquery://username:password@127.0.0.1:10011/?server_port=9987"); + * + * // kick the client with ID 123 from the server + * $ts3_VirtualServer->clientKick(123, TeamSpeak3::KICK_SERVER, "evil kick XD"); + * + * // spawn an object for the client by unique identifier and do the kick + * $ts3_VirtualServer->clientGetByUid("FPMPSC6MXqXq751dX7BKV0JniSo=")->kick(TeamSpeak3::KICK_SERVER, "evil kick XD"); + * + * // spawn an object for the client by current nickname and do the kick + * $ts3_VirtualServer->clientGetByName("ScP")->kick(TeamSpeak3::KICK_SERVER, "evil kick XD"); + * @endcode + * + * \subsection example2 2. Kick all Clients from a Virtual Server + * @code + * // load framework files + * require_once("libraries/TeamSpeak3/TeamSpeak3.php"); + * + * // connect to local server, authenticate and spawn an object for the virtual server on port 9987 + * $ts3_VirtualServer = TeamSpeak3::factory("serverquery://username:password@127.0.0.1:10011/?server_port=9987"); + * + * // query clientlist from virtual server + * $arr_ClientList = $ts3_VirtualServer->clientList(); + * + * // kick all clients online with a single command + * $ts3_VirtualServer->clientKick($arr_ClientList, TeamSpeak3::KICK_SERVER, "evil kick XD"); + * @endcode + * + * \subsection example3 3. Print the Nicknames of connected Android Clients + * @code + * // load framework files + * require_once("libraries/TeamSpeak3/TeamSpeak3.php"); + * + * // connect to local server, authenticate and spawn an object for the virtual server on port 9987 + * $ts3_VirtualServer = TeamSpeak3::factory("serverquery://username:password@127.0.0.1:10011/?server_port=9987"); + * + * // query clientlist from virtual server and filter by platform + * $arr_ClientList = $ts3_VirtualServer->clientList(array("client_platform" => "Android")); + * + * // walk through list of clients + * foreach($arr_ClientList as $ts3_Client) + * { + * echo $ts3_Client . " is using " . $ts3_Client["client_platform"] . "
\n"; + * } + * @endcode + * + * \subsection example4 4. Modify the Settings of each Virtual Server + * @code + * // load framework files + * require_once("libraries/TeamSpeak3/TeamSpeak3.php"); + * + * // connect to local server, authenticate and spawn an object for the server instance + * $ts3_ServerInstance = TeamSpeak3::factory("serverquery://username:password@127.0.0.1:10011/"); + * + * // walk through list of virtual servers + * foreach($ts3_ServerInstance as $ts3_VirtualServer) + * { + * // modify the virtual servers hostbanner URL only using the ArrayAccess interface + * $ts3_VirtualServer["virtualserver_hostbanner_gfx_url"] = "http://www.example.com/banners/banner01_468x60.jpg"; + * + * // modify the virtual servers hostbanner URL only using property overloading + * $ts3_VirtualServer->virtualserver_hostbanner_gfx_url = "http://www.example.com/banners/banner01_468x60.jpg"; + * + * // modify multiple virtual server properties at once + * $ts3_VirtualServer->modify(array( + * "virtualserver_hostbutton_tooltip" => "My Company", + * "virtualserver_hostbutton_url" => "http://www.example.com", + * "virtualserver_hostbutton_gfx_url" => "http://www.example.com/buttons/button01_24x24.jpg", + * )); + * } + * @endcode + * + * \subsection example5 5. Create a Privilege Key for a Server Group + * @code + * // load framework files + * require_once("libraries/TeamSpeak3/TeamSpeak3.php"); + * + * // connect to local server, authenticate and spawn an object for the virtual server on port 9987 + * $ts3_VirtualServer = TeamSpeak3::factory("serverquery://username:password@127.0.0.1:10011/?server_port=9987"); + * + * // spawn an object for the group using a specified name + * $arr_ServerGroup = $ts3_VirtualServer->serverGroupGetByName("Admins"); + * + * // create the privilege key + * $ts3_PrivilegeKey = $arr_ServerGroup->privilegeKeyCreate(); + * @endcode + * + * \subsection example6 6. Modify the Permissions of Admins on each Virtual Server + * @code + * // load framework files + * require_once("libraries/TeamSpeak3/TeamSpeak3.php"); + * + * // connect to local server, authenticate and spawn an object for the server instance + * $ts3_ServerInstance = TeamSpeak3::factory("serverquery://username:password@127.0.0.1:10011/"); + * + * // walk through list of virtual servers + * foreach($ts3_ServerInstance as $ts3_VirtualServer) + * { + * // identify the most powerful group on the virtual server + * $ts3_ServerGroup = $ts3_VirtualServer->serverGroupIdentify(); + * + * // assign a new permission + * $ts3_ServerGroup->permAssign("b_virtualserver_modify_hostbanner", TRUE); + * + * // revoke an existing permission + * $ts3_ServerGroup->permRemove("b_virtualserver_modify_maxclients"); + * } + * @endcode + * + * \subsection example7 7. Create a new Virtual Server + * @code + * // load framework files + * require_once("libraries/TeamSpeak3/TeamSpeak3.php"); + * + * // connect to local server, authenticate and spawn an object for the server instance + * $ts3_ServerInstance = TeamSpeak3::factory("serverquery://username:password@127.0.0.1:10011/"); + * + * // create a virtual server and get its ID + * $new_sid = $ts3_ServerInstance->serverCreate(array( + * "virtualserver_name" => "My TeamSpeak 3 Server", + * "virtualserver_maxclients" => 64, + * "virtualserver_hostbutton_tooltip" => "My Company", + * "virtualserver_hostbutton_url" => "http://www.example.com", + * "virtualserver_hostbutton_gfx_url" => "http://www.example.com/buttons/button01_24x24.jpg", + * )); + * @endcode + * + * \subsection example8 8. Create a hierarchical Channel Stucture + * @code + * // load framework files + * require_once("libraries/TeamSpeak3/TeamSpeak3.php"); + * + * // connect to local server, authenticate and spawn an object for the virtual server on port 9987 + * $ts3_VirtualServer = TeamSpeak3::factory("serverquery://username:password@127.0.0.1:10011/?server_port=9987"); + * + * // create a top-level channel and get its ID + * $top_cid = $ts3_VirtualServer->channelCreate(array( + * "channel_name" => "My Channel", + * "channel_topic" => "This is a top-level channel", + * "channel_codec" => TeamSpeak3::CODEC_SPEEX_WIDEBAND, + * "channel_flag_permanent" => TRUE, + * )); + * + * // create a sub-level channel and get its ID + * $sub_cid = $ts3_VirtualServer->channelCreate(array( + * "channel_name" => "My Sub-Channel", + * "channel_topic" => "This is a sub-level channel", + * "channel_codec" => TeamSpeak3::CODEC_SPEEX_NARROWBAND, + * "channel_flag_permanent" => TRUE, + * "cpid" => $top_cid, + * )); + * @endcode + * + * \subsection example9 9. Send a Text Message to outdated Clients + * @code + * // load framework files + * require_once("libraries/TeamSpeak3/TeamSpeak3.php"); + * + * // connect to local server, authenticate and spawn an object for the virtual server on port 9987 + * $ts3_VirtualServer = TeamSpeak3::factory("serverquery://username:password@127.0.0.1:10011/?server_port=9987"); + * + * // connect to default update server + * $ts3_UpdateServer = TeamSpeak3::factory("update"); + * + * // walk through list of clients on virtual server + * foreach($ts3_VirtualServer->clientList() as $ts3_Client) + * { + * // skip query clients + * if($ts3_Client["client_type"]) continue; + * + * // send test message if client build is outdated + * if($ts3_Client->getRev() < $ts3_UpdateServer->getClientRev()) + * { + * $ts3_Client->message("[COLOR=red]your client is [B]outdated[/B]... update to [U]" . $ts3_UpdateServer->getClientVersion() . "[/U] now![/COLOR]"); + * } + * } + * @endcode + * + * \subsection example10 10. Check if the Server Instance is Outdated or Blacklisted + * @code + * // load framework files + * require_once("libraries/TeamSpeak3/TeamSpeak3.php"); + * + * // connect to local server, authenticate and spawn an object for the server instance + * $ts3_ServerInstance = TeamSpeak3::factory("serverquery://username:password@127.0.0.1:10011/"); + * + * // connect to default update server + * $ts3_UpdateServer = TeamSpeak3::factory("update"); + * + * // send global text message if the server is outdated + * if($ts3_ServerInstance->version("build") < $ts3_UpdateServer->getServerRev()) + * { + * $ts3_ServerInstance->message("[COLOR=red]your server is [B]outdated[/B]... update to [U]" . $ts3_UpdateServer->getServerVersion() . "[/U] now![/COLOR]"); + * } + * + * // connect to default blacklist server + * $ts3_BlacklistServer = TeamSpeak3::factory("blacklist"); + * + * // send global text message if the server is blacklisted + * if($ts3_BlacklistServer->isBlacklisted($ts3_ServerInstance)) + * { + * $ts3_ServerInstance->message("[COLOR=red]your server is [B]blacklisted[/B]... disconnect now![/COLOR]"); + * } + * @endcode + * + * \subsection example11 11. Create a simple TSViewer for your Website + * @code + * // load framework files + * require_once("libraries/TeamSpeak3/TeamSpeak3.php"); + * + * // connect to local server, authenticate and spawn an object for the virtual server on port 9987 + * $ts3_VirtualServer = TeamSpeak3::factory("serverquery://username:password@127.0.0.1:10011/?server_port=9987"); + * + * // build and display HTML treeview using custom image paths (remote icons will be embedded using data URI sheme) + * echo $ts3_VirtualServer->getViewer(new TeamSpeak3_Viewer_Html("images/viewericons/", "images/countryflags/", "data:image")); + * @endcode + * + * \subsection example12 12. Update all outdated Audio Codecs to their Opus equivalent + * @code + * // load framework files + * require_once("libraries/TeamSpeak3/TeamSpeak3.php"); + * + * // connect to local server, authenticate and spawn an object for the virtual server on port 9987 + * $ts3_VirtualServer = TeamSpeak3::factory("serverquery://username:password@127.0.0.1:10011/?server_port=9987"); + * + * // walk through list of chanels + * foreach($ts3_VirtualServer->channelList() as $ts3_Channel) + * { + * if($ts3_Channel["channel_codec"] == TeamSpeak3::CODEC_CELT_MONO) + * { + * $ts3_Channel["channel_codec"] = TeamSpeak3::CODEC_OPUS_MUSIC; + * } + * elseif($ts3_Channel["channel_codec"] != TeamSpeak3::CODEC_OPUS_MUSIC) + * { + * $ts3_Channel["channel_codec"] = TeamSpeak3::CODEC_OPUS_VOICE; + * } + * } + * @endcode + * + * \subsection example13 13. Display the Avatar of a connected User + * @code + * // load framework files + * require_once("libraries/TeamSpeak3/TeamSpeak3.php"); + * + * // connect to local server, authenticate and spawn an object for the virtual server on port 9987 + * $ts3_VirtualServer = TeamSpeak3::factory("serverquery://username:password@127.0.0.1:10011/?server_port=9987"); + * + * // spawn an object for the client using a specified nickname + * $ts3_Client = $ts3_VirtualServer->clientGetByName("John Doe"); + * + * // download the clients avatar file + * $avatar = $ts3_Client->avatarDownload(); + * + * // send header and display image + * header("Content-Type: " . TeamSpeak3_Helper_Convert::imageMimeType($avatar)); + * echo $avatar; + * @endcode + * + * \subsection example14 14. Create a Simple Bot waiting for Events + * @code + * // load framework files + * require_once("libraries/TeamSpeak3/TeamSpeak3.php"); + * + * // connect to local server in non-blocking mode, authenticate and spawn an object for the virtual server on port 9987 + * $ts3_VirtualServer = TeamSpeak3::factory("serverquery://username:password@127.0.0.1:10011/?server_port=9987&blocking=0"); + * + * // get notified on incoming private messages + * $ts3_VirtualServer->notifyRegister("textprivate"); + * + * // register a callback for notifyTextmessage events + * TeamSpeak3_Helper_Signal::getInstance()->subscribe("notifyTextmessage", "onTextmessage"); + * + * // wait for events + * while(1) $ts3_VirtualServer->getAdapter()->wait(); + * + * // define a callback function + * function onTextmessage(TeamSpeak3_Adapter_ServerQuery_Event $event, TeamSpeak3_Node_Host $host) + * { + * echo "Client " . $event["invokername"] . " sent textmessage: " . $event["msg"]; + * } + * @endcode + * + * \subsection example15 15. Handle Errors using Exceptions and Custom Error Messages + * @code + * // load framework files + * require_once("libraries/TeamSpeak3/TeamSpeak3.php"); + * + * // register custom error message (supported placeholders are: %file, %line, %code and %mesg) + * TeamSpeak3_Exception::registerCustomMessage(0x300, "The specified channel does not exist; server said: %mesg"); + * + * try + * { + * // connect to local server, authenticate and spawn an object for the virtual server on port 9987 + * $ts3_VirtualServer = TeamSpeak3::factory("serverquery://username:password@127.0.0.1:10011/?server_port=9987"); + * + * // spawn an object for the channel using a specified name + * $ts3_Channel = $ts3_VirtualServer->channelGetByName("I do not exist"); + * } + * catch(TeamSpeak3_Exception $e) + * { + * // print the error message returned by the server + * echo "Error " . $e->getCode() . ": " . $e->getMessage(); + * } + * @endcode + * + * \subsection example16 16. Save Connection State in Persistent Session Variable + * @code + * // load framework files + * require_once("libraries/TeamSpeak3/TeamSpeak3.php"); + * + * // start a PHP session + * session_start(); + * + * // connect to local server, authenticate and spawn an object for the virtual server on port 9987 + * $ts3_VirtualServer = TeamSpeak3::factory("serverquery://username:password@127.0.0.1:10011/?server_port=9987"); + * + * // save connection state (including login and selected virtual server) + * $_SESSION["_TS3"] = serialize($ts3_VirtualServer); + * @endcode + * + * \subsection example17 17. Restore Connection State from Persistent Session Variable + * @code + * // load framework files + * require_once("libraries/TeamSpeak3/TeamSpeak3.php"); + * + * // start a PHP session + * session_start(); + * + * // restore connection state + * $ts3_VirtualServer = unserialize($_SESSION["_TS3"]); + * + * // send a text message to the server + * $ts3_VirtualServer->message("Hello World!"); + * @endcode + * + * Speed up new development and reduce maintenance costs by using the TS3 PHP Framework! + */ diff --git a/lib/libraries/TeamSpeak3/Transport/Abstract.php b/lib/libraries/TeamSpeak3/Transport/Abstract.php new file mode 100644 index 0000000..77f13c5 --- /dev/null +++ b/lib/libraries/TeamSpeak3/Transport/Abstract.php @@ -0,0 +1,268 @@ +. + * + * @package TeamSpeak3 + * @version 1.1.23 + * @author Sven 'ScP' Paulsen + * @copyright Copyright (c) 2010 by Planet TeamSpeak. All rights reserved. + */ + +/** + * @class TeamSpeak3_Transport_Abstract + * @brief Abstract class for connecting to a TeamSpeak 3 Server through different ways of transport. + */ +abstract class TeamSpeak3_Transport_Abstract +{ + /** + * Stores user-provided configuration settings. + * + * @var array + */ + protected $config = null; + + /** + * Stores the stream resource of the connection. + * + * @var resource + */ + protected $stream = null; + + /** + * Stores the TeamSpeak3_Adapter_Abstract object using this transport. + * + * @var TeamSpeak3_Adapter_Abstract + */ + protected $adapter = null; + + /** + * The TeamSpeak3_Transport_Abstract constructor. + * + * @param array $config + * @throws TeamSpeak3_Transport_Exception + * @return TeamSpeak3_Transport_Abstract + */ + public function __construct(array $config) + { + if(!array_key_exists("host", $config)) + { + throw new TeamSpeak3_Transport_Exception("config must have a key for 'host' which specifies the server host name"); + } + + if(!array_key_exists("port", $config)) + { + throw new TeamSpeak3_Transport_Exception("config must have a key for 'port' which specifies the server port number"); + } + + if(!array_key_exists("timeout", $config)) + { + $config["timeout"] = 10; + } + + if(!array_key_exists("blocking", $config)) + { + $config["blocking"] = 1; + } + + $this->config = $config; + } + + /** + * Commit pending data. + * + * @return array + */ + public function __sleep() + { + return array("config"); + } + + /** + * Reconnects to the remote server. + * + * @return void + */ + public function __wakeup() + { + $this->connect(); + } + + /** + * The TeamSpeak3_Transport_Abstract destructor. + * + * @return void + */ + public function __destruct() + { + if($this->adapter instanceof TeamSpeak3_Adapter_Abstract) + { + $this->adapter->__destruct(); + } + + $this->disconnect(); + } + + /** + * Connects to a remote server. + * + * @throws TeamSpeak3_Transport_Exception + * @return void + */ + abstract public function connect(); + + /** + * Disconnects from a remote server. + * + * @return void + */ + abstract public function disconnect(); + + /** + * Reads data from the stream. + * + * @param integer $length + * @throws TeamSpeak3_Transport_Exception + * @return TeamSpeak3_Helper_String + */ + abstract public function read($length = 4096); + + /** + * Writes data to the stream. + * + * @param string $data + * @return void + */ + abstract public function send($data); + + /** + * Returns the underlying stream resource. + * + * @return resource + */ + public function getStream() + { + return $this->stream; + } + + /** + * Returns the configuration variables in this adapter. + * + * @param string $key + * @param mixed $default + * @return array + */ + public function getConfig($key = null, $default = null) + { + if($key !== null) + { + return array_key_exists($key, $this->config) ? $this->config[$key] : $default; + } + + return $this->config; + } + + /** + * Sets the TeamSpeak3_Adapter_Abstract object using this transport. + * + * @param TeamSpeak3_Adapter_Abstract $adapter + * @return void + */ + public function setAdapter(TeamSpeak3_Adapter_Abstract $adapter) + { + $this->adapter = $adapter; + } + + /** + * Returns the TeamSpeak3_Adapter_Abstract object using this transport. + * + * @return TeamSpeak3_Adapter_Abstract + */ + public function getAdapter() + { + return $this->adapter; + } + + /** + * Returns the adapter type. + * + * @return string + */ + public function getAdapterType() + { + if($this->adapter instanceof TeamSpeak3_Adapter_Abstract) + { + $string = TeamSpeak3_Helper_String::factory(get_class($this->adapter)); + + return $string->substr($string->findLast("_"))->replace(array("_", " "), "")->toString(); + } + + return "Unknown"; + } + + /** + * Returns header/meta data from stream pointer. + * + * @throws TeamSpeak3_Transport_Exception + * @return array + */ + public function getMetaData() + { + if($this->stream === null) + { + throw new TeamSpeak3_Transport_Exception("unable to retrieve header/meta data from stream pointer"); + } + + return stream_get_meta_data($this->stream); + } + + /** + * Returns TRUE if the transport is connected. + * + * @return boolean + */ + public function isConnected() + { + return (is_resource($this->stream)) ? TRUE : FALSE; + } + + /** + * Blocks a stream until data is available for reading if the stream is connected + * in non-blocking mode. + * + * @param integer $time + * @return void + */ + protected function waitForReadyRead($time = 0) + { + if(!$this->isConnected() || $this->config["blocking"]) return; + + do { + $read = array($this->stream); + $null = null; + + if($time) + { + TeamSpeak3_Helper_Signal::getInstance()->emit(strtolower($this->getAdapterType()) . "WaitTimeout", $time, $this->getAdapter()); + } + + $time = $time+$this->config["timeout"]; + } while(@stream_select($read, $null, $null, $this->config["timeout"]) == 0); + } +} diff --git a/lib/libraries/TeamSpeak3/Transport/Exception.php b/lib/libraries/TeamSpeak3/Transport/Exception.php new file mode 100644 index 0000000..09cbb1f --- /dev/null +++ b/lib/libraries/TeamSpeak3/Transport/Exception.php @@ -0,0 +1,32 @@ +. + * + * @package TeamSpeak3 + * @version 1.1.23 + * @author Sven 'ScP' Paulsen + * @copyright Copyright (c) 2010 by Planet TeamSpeak. All rights reserved. + */ + +/** + * @class TeamSpeak3_Transport_Exception + * @brief Enhanced exception class for TeamSpeak3_Transport_Abstract objects. + */ +class TeamSpeak3_Transport_Exception extends TeamSpeak3_Exception {} diff --git a/lib/libraries/TeamSpeak3/Transport/TCP.php b/lib/libraries/TeamSpeak3/Transport/TCP.php new file mode 100644 index 0000000..c29e90e --- /dev/null +++ b/lib/libraries/TeamSpeak3/Transport/TCP.php @@ -0,0 +1,179 @@ +. + * + * @package TeamSpeak3 + * @version 1.1.23 + * @author Sven 'ScP' Paulsen + * @copyright Copyright (c) 2010 by Planet TeamSpeak. All rights reserved. + */ + +/** + * @class TeamSpeak3_Transport_TCP + * @brief Class for connecting to a remote server through TCP. + */ +class TeamSpeak3_Transport_TCP extends TeamSpeak3_Transport_Abstract +{ + /** + * Connects to a remote server. + * + * @throws TeamSpeak3_Transport_Exception + * @return void + */ + public function connect() + { + if($this->stream !== null) return; + + $host = strval($this->config["host"]); + $port = strval($this->config["port"]); + + $address = "tcp://" . $host . ":" . $port; + $timeout = intval($this->config["timeout"]); + + $this->stream = @stream_socket_client($address, $errno, $errstr, $timeout); + + if($this->stream === FALSE) + { + throw new TeamSpeak3_Transport_Exception(TeamSpeak3_Helper_String::factory($errstr)->toUtf8()->toString(), $errno); + } + + @stream_set_timeout($this->stream, $timeout); + @stream_set_blocking($this->stream, $this->config["blocking"] ? 1 : 0); + } + + /** + * Disconnects from a remote server. + * + * @return void + */ + public function disconnect() + { + if($this->stream === null) return; + + $this->stream = null; + + TeamSpeak3_Helper_Signal::getInstance()->emit(strtolower($this->getAdapterType()) . "Disconnected"); + } + + /** + * Reads data from the stream. + * + * @param integer $length + * @throws TeamSpeak3_Transport_Exception + * @return TeamSpeak3_Helper_String + */ + public function read($length = 4096) + { + $this->connect(); + $this->waitForReadyRead(); + + $data = @stream_get_contents($this->stream, $length); + + TeamSpeak3_Helper_Signal::getInstance()->emit(strtolower($this->getAdapterType()) . "DataRead", $data); + + if($data === FALSE) + { + throw new TeamSpeak3_Transport_Exception("connection to server '" . $this->config["host"] . ":" . $this->config["port"] . "' lost"); + } + + return new TeamSpeak3_Helper_String($data); + } + + /** + * Reads a single line of data from the stream. + * + * @param string $token + * @throws TeamSpeak3_Transport_Exception + * @return TeamSpeak3_Helper_String + */ + public function readLine($token = "\n") + { + $this->connect(); + + $line = TeamSpeak3_Helper_String::factory(""); + + while(!$line->endsWith($token)) + { + $this->waitForReadyRead(); + + $data = @fgets($this->stream, 4096); + + TeamSpeak3_Helper_Signal::getInstance()->emit(strtolower($this->getAdapterType()) . "DataRead", $data); + + if($data === FALSE) + { + if($line->count()) + { + $line->append($token); + } + else + { + throw new TeamSpeak3_Transport_Exception("connection to server '" . $this->config["host"] . ":" . $this->config["port"] . "' lost"); + } + } + else + { + $line->append($data); + } + } + + return $line->trim(); + } + + /** + * Writes data to the stream. + * + * @param string $data + * @return void + */ + public function send($data) + { + $this->connect(); + + @stream_socket_sendto($this->stream, $data); + + TeamSpeak3_Helper_Signal::getInstance()->emit(strtolower($this->getAdapterType()) . "DataSend", $data); + } + + /** + * Writes a line of data to the stream. + * + * @param string $data + * @param string $separator + * @return void + */ + public function sendLine($data, $separator = "\n") + { + $size = strlen($data); + $pack = 4096; + + for($seek = 0 ;$seek < $size;) + { + $rest = $size-$seek; + $pack = $rest < $pack ? $rest : $pack; + $buff = substr($data, $seek, $pack); + $seek = $seek+$pack; + + if($seek >= $size) $buff .= $separator; + + $this->send($buff); + } + } +} diff --git a/lib/libraries/TeamSpeak3/Transport/UDP.php b/lib/libraries/TeamSpeak3/Transport/UDP.php new file mode 100644 index 0000000..f496dd4 --- /dev/null +++ b/lib/libraries/TeamSpeak3/Transport/UDP.php @@ -0,0 +1,113 @@ +. + * + * @package TeamSpeak3 + * @version 1.1.23 + * @author Sven 'ScP' Paulsen + * @copyright Copyright (c) 2010 by Planet TeamSpeak. All rights reserved. + */ + +/** + * @class TeamSpeak3_Transport_UDP + * @brief Class for connecting to a remote server through UDP. + */ +class TeamSpeak3_Transport_UDP extends TeamSpeak3_Transport_Abstract +{ + /** + * Connects to a remote server. + * + * @throws TeamSpeak3_Transport_Exception + * @return void + */ + public function connect() + { + if($this->stream !== null) return; + + $host = strval($this->config["host"]); + $port = strval($this->config["port"]); + + $address = "udp://" . $host . ":" . $port; + $timeout = intval($this->config["timeout"]); + + $this->stream = @stream_socket_client($address, $errno, $errstr, $timeout); + + if($this->stream === FALSE) + { + throw new TeamSpeak3_Transport_Exception(TeamSpeak3_Helper_String::factory($errstr)->toUtf8()->toString(), $errno); + } + + @stream_set_timeout($this->stream, $timeout); + @stream_set_blocking($this->stream, $this->config["blocking"] ? 1 : 0); + } + + /** + * Disconnects from a remote server. + * + * @return void + */ + public function disconnect() + { + if($this->stream === null) return; + + $this->stream = null; + + TeamSpeak3_Helper_Signal::getInstance()->emit(strtolower($this->getAdapterType()) . "Disconnected"); + } + + /** + * Reads data from the stream. + * + * @param integer $length + * @throws TeamSpeak3_Transport_Exception + * @return TeamSpeak3_Helper_String + */ + public function read($length = 4096) + { + $this->connect(); + $this->waitForReadyRead(); + + $data = @fread($this->stream, $length); + + TeamSpeak3_Helper_Signal::getInstance()->emit(strtolower($this->getAdapterType()) . "DataRead", $data); + + if($data === FALSE) + { + throw new TeamSpeak3_Transport_Exception("connection to server '" . $this->config["host"] . ":" . $this->config["port"] . "' lost"); + } + + return new TeamSpeak3_Helper_String($data); + } + + /** + * Writes data to the stream. + * + * @param string $data + * @return void + */ + public function send($data) + { + $this->connect(); + + @stream_socket_sendto($this->stream, $data); + + TeamSpeak3_Helper_Signal::getInstance()->emit(strtolower($this->getAdapterType()) . "DataSend", $data); + } +} diff --git a/lib/libraries/TeamSpeak3/Viewer/Html.php b/lib/libraries/TeamSpeak3/Viewer/Html.php new file mode 100644 index 0000000..3469361 --- /dev/null +++ b/lib/libraries/TeamSpeak3/Viewer/Html.php @@ -0,0 +1,670 @@ +. + * + * @package TeamSpeak3 + * @version 1.1.23 + * @author Sven 'ScP' Paulsen + * @copyright Copyright (c) 2010 by Planet TeamSpeak. All rights reserved. + */ + +/** + * @class TeamSpeak3_Viewer_Html + * @brief Renders nodes used in HTML-based TeamSpeak 3 viewers. + */ +class TeamSpeak3_Viewer_Html implements TeamSpeak3_Viewer_Interface +{ + /** + * A pre-defined pattern used to display a node in a TeamSpeak 3 viewer. + * + * @var string + */ + protected $pattern = "
%5%8 %9%11%12
\n"; + + /** + * The TeamSpeak3_Node_Abstract object which is currently processed. + * + * @var TeamSpeak3_Node_Abstract + */ + protected $currObj = null; + + /** + * An array filled with siblingsfor the TeamSpeak3_Node_Abstract object which is currently + * processed. + * + * @var array + */ + protected $currSib = null; + + /** + * An internal counter indicating the number of fetched TeamSpeak3_Node_Abstract objects. + * + * @var integer + */ + protected $currNum = 0; + + /** + * The relative URI path where the images used by the viewer can be found. + * + * @var string + */ + protected $iconpath = null; + + /** + * The relative URI path where the country flag icons used by the viewer can be found. + * + * @var string + */ + protected $flagpath = null; + + /** + * The relative path of the file transter client script on the server. + * + * @var string + */ + protected $ftclient = null; + + /** + * Stores an array of local icon IDs. + * + * @var array + */ + protected $cachedIcons = array(100, 200, 300, 400, 500, 600); + + /** + * Stores an array of remote icon IDs. + * + * @var array + */ + protected $remoteIcons = array(); + + /** + * The TeamSpeak3_Viewer_Html constructor. + * + * @param string $iconpath + * @param string $flagpath + * @param string $ftclient + * @param string $pattern + * @return void + */ + public function __construct($iconpath = "images/viewer/", $flagpath = null, $ftclient = null, $pattern = null) + { + $this->iconpath = $iconpath; + $this->flagpath = $flagpath; + $this->ftclient = $ftclient; + + if($pattern) + { + $this->pattern = $pattern; + } + } + + /** + * Returns the code needed to display a node in a TeamSpeak 3 viewer. + * + * @param TeamSpeak3_Node_Abstract $node + * @param array $siblings + * @return string + */ + public function fetchObject(TeamSpeak3_Node_Abstract $node, array $siblings = array()) + { + $this->currObj = $node; + $this->currSib = $siblings; + + $args = array( + $this->getContainerIdent(), + $this->getContainerClass(), + $this->getContainerSummary(), + $this->getRowClass(), + $this->getPrefixClass(), + $this->getPrefix(), + $this->getCorpusClass(), + $this->getCorpusTitle(), + $this->getCorpusIcon(), + $this->getCorpusName(), + $this->getSuffixClass(), + $this->getSuffixIcon(), + $this->getSuffixFlag(), + ); + + return TeamSpeak3_Helper_String::factory($this->pattern)->arg($args); + } + + /** + * Returns a unique identifier for the current node which can be used as a HTML id + * property. + * + * @return string + */ + protected function getContainerIdent() + { + return $this->currObj->getUniqueId(); + } + + /** + * Returns a dynamic string for the current container element which can be used as + * a HTML class property. + * + * @return string + */ + protected function getContainerClass() + { + return "ts3_viewer " . $this->currObj->getClass(null); + } + + /** + * Returns the ID of the current node which will be used as a summary element for + * the container element. + * + * @return integer + */ + protected function getContainerSummary() + { + return $this->currObj->getId(); + } + + /** + * Returns a dynamic string for the current row element which can be used as a HTML + * class property. + * + * @return string + */ + protected function getRowClass() + { + return ++$this->currNum%2 ? "row1" : "row2"; + } + + /** + * Returns a string for the current prefix element which can be used as a HTML class + * property. + * + * @return string + */ + protected function getPrefixClass() + { + return "prefix " . $this->currObj->getClass(null); + } + + /** + * Returns the HTML img tags to display the prefix of the current node. + * + * @return string + */ + protected function getPrefix() + { + $prefix = ""; + + if(count($this->currSib)) + { + $last = array_pop($this->currSib); + + foreach($this->currSib as $sibling) + { + $prefix .= ($sibling) ? $this->getImage("tree_line.gif") : $this->getImage("tree_blank.png"); + } + + $prefix .= ($last) ? $this->getImage("tree_end.gif") : $this->getImage("tree_mid.gif"); + } + + return $prefix; + } + + /** + * Returns a string for the current corpus element which can be used as a HTML class + * property. If the current node is a channel spacer the class string will contain + * additional class names to allow further customization of the content via CSS. + * + * @return string + */ + protected function getCorpusClass() + { + $extras = ""; + + if($this->currObj instanceof TeamSpeak3_Node_Channel && $this->currObj->isSpacer()) + { + switch($this->currObj->spacerGetType()) + { + case (string) TeamSpeak3::SPACER_SOLIDLINE: + $extras .= " solidline"; + break; + + case (string) TeamSpeak3::SPACER_DASHLINE: + $extras .= " dashline"; + break; + + case (string) TeamSpeak3::SPACER_DASHDOTLINE: + $extras .= " dashdotline"; + break; + + case (string) TeamSpeak3::SPACER_DASHDOTDOTLINE: + $extras .= " dashdotdotline"; + break; + + case (string) TeamSpeak3::SPACER_DOTLINE: + $extras .= " dotline"; + break; + } + + switch($this->currObj->spacerGetAlign()) + { + case TeamSpeak3::SPACER_ALIGN_CENTER: + $extras .= " center"; + break; + + case TeamSpeak3::SPACER_ALIGN_RIGHT: + $extras .= " right"; + break; + + case TeamSpeak3::SPACER_ALIGN_LEFT: + $extras .= " left"; + break; + } + } + + return "corpus " . $this->currObj->getClass(null) . $extras; + } + + /** + * Returns the HTML img tags which can be used to display the various icons for a + * TeamSpeak_Node_Abstract object. + * + * @return string + */ + protected function getCorpusTitle() + { + if($this->currObj instanceof TeamSpeak3_Node_Server) + { + return "ID: " . $this->currObj->getId() . " | Clients: " . $this->currObj->clientCount() . "/" . $this->currObj["virtualserver_maxclients"] . " | Uptime: " . TeamSpeak3_Helper_Convert::seconds($this->currObj["virtualserver_uptime"]); + } + elseif($this->currObj instanceof TeamSpeak3_Node_Channel && !$this->currObj->isSpacer()) + { + return "ID: " . $this->currObj->getId() . " | Codec: " . TeamSpeak3_Helper_Convert::codec($this->currObj["channel_codec"]) . " | Quality: " . $this->currObj["channel_codec_quality"]; + } + elseif($this->currObj instanceof TeamSpeak3_Node_Client) + { + return "ID: " . $this->currObj->getId() . " | Version: " . TeamSpeak3_Helper_Convert::versionShort($this->currObj["client_version"]) . " | Platform: " . $this->currObj["client_platform"]; + } + elseif($this->currObj instanceof TeamSpeak3_Node_Servergroup || $this->currObj instanceof TeamSpeak3_Node_Channelgroup) + { + return "ID: " . $this->currObj->getId() . " | Type: " . TeamSpeak3_Helper_Convert::groupType($this->currObj["type"]) . " (" . ($this->currObj["savedb"] ? "Permanent" : "Temporary") . ")"; + } + } + + /** + * Returns a HTML img tag which can be used to display the status icon for a + * TeamSpeak_Node_Abstract object. + * + * @return string + */ + protected function getCorpusIcon() + { + if($this->currObj instanceof TeamSpeak3_Node_Channel && $this->currObj->isSpacer()) return; + + return $this->getImage($this->currObj->getIcon() . ".png"); + } + + /** + * Returns a string for the current corpus element which contains the display name + * for the current TeamSpeak_Node_Abstract object. + * + * @return string + */ + protected function getCorpusName() + { + if($this->currObj instanceof TeamSpeak3_Node_Channel && $this->currObj->isSpacer()) + { + if($this->currObj->spacerGetType() != TeamSpeak3::SPACER_CUSTOM) return; + + $string = $this->currObj["channel_name"]->section("]", 1, 99); + + if($this->currObj->spacerGetAlign() == TeamSpeak3::SPACER_ALIGN_REPEAT) + { + $string->resize(30, $string); + } + + return htmlspecialchars($string); + } + + if($this->currObj instanceof TeamSpeak3_Node_Client) + { + $before = array(); + $behind = array(); + + foreach($this->currObj->memberOf() as $group) + { + if($group->getProperty("namemode") == TeamSpeak3::GROUP_NAMEMODE_BEFORE) + { + $before[] = "[" . htmlspecialchars($group["name"]) . "]"; + } + elseif($group->getProperty("namemode") == TeamSpeak3::GROUP_NAMEMODE_BEHIND) + { + $behind[] = "[" . htmlspecialchars($group["name"]) . "]"; + } + } + + return implode("", $before) . " " . htmlspecialchars($this->currObj) . " " . implode("", $behind); + } + + return htmlspecialchars($this->currObj); + } + + /** + * Returns a string for the current suffix element which can be used as a HTML + * class property. + * + * @return string + */ + protected function getSuffixClass() + { + return "suffix " . $this->currObj->getClass(null); + } + + /** + * Returns the HTML img tags which can be used to display the various icons for a + * TeamSpeak_Node_Abstract object. + * + * @return string + */ + protected function getSuffixIcon() + { + if($this->currObj instanceof TeamSpeak3_Node_Server) + { + return $this->getSuffixIconServer(); + } + elseif($this->currObj instanceof TeamSpeak3_Node_Channel) + { + return $this->getSuffixIconChannel(); + } + elseif($this->currObj instanceof TeamSpeak3_Node_Client) + { + return $this->getSuffixIconClient(); + } + } + + /** + * Returns the HTML img tags which can be used to display the various icons for a + * TeamSpeak_Node_Server object. + * + * @return string + */ + protected function getSuffixIconServer() + { + $html = ""; + + if($this->currObj["virtualserver_icon_id"]) + { + if(!$this->currObj->iconIsLocal("virtualserver_icon_id") && $this->ftclient) + { + if(!isset($this->cacheIcon[$this->currObj["virtualserver_icon_id"]])) + { + $download = $this->currObj->transferInitDownload(rand(0x0000, 0xFFFF), 0, $this->currObj->iconGetName("virtualserver_icon_id")); + + if($this->ftclient == "data:image") + { + $download = TeamSpeak3::factory("filetransfer://" . $download["host"] . ":" . $download["port"])->download($download["ftkey"], $download["size"]); + } + + $this->cacheIcon[$this->currObj["virtualserver_icon_id"]] = $download; + } + else + { + $download = $this->cacheIcon[$this->currObj["virtualserver_icon_id"]]; + } + + if($this->ftclient == "data:image") + { + $html .= $this->getImage("data:" . TeamSpeak3_Helper_Convert::imageMimeType($download) . ";base64," . base64_encode($download), "Server Icon", null, FALSE); + } + else + { + $html .= $this->getImage($this->ftclient . "?ftdata=" . base64_encode(serialize($download)), "Server Icon", null, FALSE); + } + } + elseif(in_array($this->currObj["virtualserver_icon_id"], $this->cachedIcons)) + { + $html .= $this->getImage("group_icon_" . $this->currObj["virtualserver_icon_id"] . ".png", "Server Icon"); + } + } + + return $html; + } + + /** + * Returns the HTML img tags which can be used to display the various icons for a + * TeamSpeak_Node_Channel object. + * + * @return string + */ + protected function getSuffixIconChannel() + { + if($this->currObj instanceof TeamSpeak3_Node_Channel && $this->currObj->isSpacer()) return; + + $html = ""; + + if($this->currObj["channel_flag_default"]) + { + $html .= $this->getImage("channel_flag_default.png", "Default Channel"); + } + + if($this->currObj["channel_flag_password"]) + { + $html .= $this->getImage("channel_flag_password.png", "Password-protected"); + } + + if($this->currObj["channel_codec"] == TeamSpeak3::CODEC_CELT_MONO || $this->currObj["channel_codec"] == TeamSpeak3::CODEC_OPUS_MUSIC) + { + $html .= $this->getImage("channel_flag_music.png", "Music Codec"); + } + + if($this->currObj["channel_needed_talk_power"]) + { + $html .= $this->getImage("channel_flag_moderated.png", "Moderated"); + } + + if($this->currObj["channel_icon_id"]) + { + if(!$this->currObj->iconIsLocal("channel_icon_id") && $this->ftclient) + { + if(!isset($this->cacheIcon[$this->currObj["channel_icon_id"]])) + { + $download = $this->currObj->getParent()->transferInitDownload(rand(0x0000, 0xFFFF), 0, $this->currObj->iconGetName("channel_icon_id")); + + if($this->ftclient == "data:image") + { + $download = TeamSpeak3::factory("filetransfer://" . $download["host"] . ":" . $download["port"])->download($download["ftkey"], $download["size"]); + } + + $this->cacheIcon[$this->currObj["channel_icon_id"]] = $download; + } + else + { + $download = $this->cacheIcon[$this->currObj["channel_icon_id"]]; + } + + if($this->ftclient == "data:image") + { + $html .= $this->getImage("data:" . TeamSpeak3_Helper_Convert::imageMimeType($download) . ";base64," . base64_encode($download), "Channel Icon", null, FALSE); + } + else + { + $html .= $this->getImage($this->ftclient . "?ftdata=" . base64_encode(serialize($download)), "Channel Icon", null, FALSE); + } + } + elseif(in_array($this->currObj["channel_icon_id"], $this->cachedIcons)) + { + $html .= $this->getImage("group_icon_" . $this->currObj["channel_icon_id"] . ".png", "Channel Icon"); + } + } + + return $html; + } + + /** + * Returns the HTML img tags which can be used to display the various icons for a + * TeamSpeak_Node_Client object. + * + * @return string + */ + protected function getSuffixIconClient() + { + $html = ""; + + if($this->currObj["client_is_priority_speaker"]) + { + $html .= $this->getImage("client_priority.png", "Priority Speaker"); + } + + if($this->currObj["client_is_channel_commander"]) + { + $html .= $this->getImage("client_cc.png", "Channel Commander"); + } + + if($this->currObj["client_is_talker"]) + { + $html .= $this->getImage("client_talker.png", "Talk Power granted"); + } + elseif($cntp = $this->currObj->getParent()->channelGetById($this->currObj["cid"])->channel_needed_talk_power) + { + if($cntp > $this->currObj["client_talk_power"]) + { + $html .= $this->getImage("client_mic_muted.png", "Insufficient Talk Power"); + } + } + + foreach($this->currObj->memberOf() as $group) + { + if(!$group["iconid"]) continue; + + $type = ($group instanceof TeamSpeak3_Node_Servergroup) ? "Server Group" : "Channel Group"; + + if(!$group->iconIsLocal("iconid") && $this->ftclient) + { + if(!isset($this->cacheIcon[$group["iconid"]])) + { + $download = $group->getParent()->transferInitDownload(rand(0x0000, 0xFFFF), 0, $group->iconGetName("iconid")); + + if($this->ftclient == "data:image") + { + $download = TeamSpeak3::factory("filetransfer://" . $download["host"] . ":" . $download["port"])->download($download["ftkey"], $download["size"]); + } + + $this->cacheIcon[$group["iconid"]] = $download; + } + else + { + $download = $this->cacheIcon[$group["iconid"]]; + } + + if($this->ftclient == "data:image") + { + $html .= $this->getImage("data:" . TeamSpeak3_Helper_Convert::imageMimeType($download) . ";base64," . base64_encode($download), $group . " [" . $type . "]", null, FALSE); + } + else + { + $html .= $this->getImage($this->ftclient . "?ftdata=" . base64_encode(serialize($download)), $group . " [" . $type . "]", null, FALSE); + } + } + elseif(in_array($group["iconid"], $this->cachedIcons)) + { + $html .= $this->getImage("group_icon_" . $group["iconid"] . ".png", $group . " [" . $type . "]"); + } + } + + if($this->currObj["client_icon_id"]) + { + if(!$this->currObj->iconIsLocal("client_icon_id") && $this->ftclient) + { + if(!isset($this->cacheIcon[$this->currObj["client_icon_id"]])) + { + $download = $this->currObj->getParent()->transferInitDownload(rand(0x0000, 0xFFFF), 0, $this->currObj->iconGetName("client_icon_id")); + + if($this->ftclient == "data:image") + { + $download = TeamSpeak3::factory("filetransfer://" . $download["host"] . ":" . $download["port"])->download($download["ftkey"], $download["size"]); + } + + $this->cacheIcon[$this->currObj["client_icon_id"]] = $download; + } + else + { + $download = $this->cacheIcon[$this->currObj["client_icon_id"]]; + } + + if($this->ftclient == "data:image") + { + $html .= $this->getImage("data:" . TeamSpeak3_Helper_Convert::imageMimeType($download) . ";base64," . base64_encode($download), "Client Icon", null, FALSE); + } + else + { + $html .= $this->getImage($this->ftclient . "?ftdata=" . base64_encode(serialize($download)), "Client Icon", null, FALSE); + } + } + elseif(in_array($this->currObj["client_icon_id"], $this->cachedIcons)) + { + $html .= $this->getImage("group_icon_" . $this->currObj["client_icon_id"] . ".png", "Client Icon"); + } + } + + return $html; + } + + /** + * Returns a HTML img tag which can be used to display the country flag for a + * TeamSpeak_Node_Client object. + * + * @return string + */ + protected function getSuffixFlag() + { + if(!$this->currObj instanceof TeamSpeak3_Node_Client) return; + + if($this->flagpath && $this->currObj["client_country"]) + { + return $this->getImage($this->currObj["client_country"]->toLower() . ".png", $this->currObj["client_country"], null, FALSE, TRUE); + } + } + + /** + * Returns the code to display a custom HTML img tag. + * + * @param string $name + * @param string $text + * @param string $class + * @param boolean $iconpath + * @param boolean $flagpath + * @return string + */ + protected function getImage($name, $text = "", $class = null, $iconpath = TRUE, $flagpath = FALSE) + { + $src = ""; + + if($iconpath) + { + $src = $this->iconpath; + } + + if($flagpath) + { + $src = $this->flagpath; + } + + return ""; + } +} diff --git a/lib/libraries/TeamSpeak3/Viewer/Interface.php b/lib/libraries/TeamSpeak3/Viewer/Interface.php new file mode 100644 index 0000000..df702f9 --- /dev/null +++ b/lib/libraries/TeamSpeak3/Viewer/Interface.php @@ -0,0 +1,42 @@ +. + * + * @package TeamSpeak3 + * @version 1.1.23 + * @author Sven 'ScP' Paulsen + * @copyright Copyright (c) 2010 by Planet TeamSpeak. All rights reserved. + */ + +/** + * @class TeamSpeak3_Viewer_Interface + * @brief Interface class describing a TeamSpeak 3 viewer. + */ +interface TeamSpeak3_Viewer_Interface +{ + /** + * Returns the code needed to display a node in a TeamSpeak 3 viewer. + * + * @param TeamSpeak3_Node_Abstract $node + * @param array $siblings + * @return string + */ + public function fetchObject(TeamSpeak3_Node_Abstract $node, array $siblings = array()); +} diff --git a/lib/libraries/TeamSpeak3/Viewer/Text.php b/lib/libraries/TeamSpeak3/Viewer/Text.php new file mode 100644 index 0000000..c4d2532 --- /dev/null +++ b/lib/libraries/TeamSpeak3/Viewer/Text.php @@ -0,0 +1,107 @@ +. + * + * @package TeamSpeak3 + * @version 1.1.23 + * @author Sven 'ScP' Paulsen + * @copyright Copyright (c) 2010 by Planet TeamSpeak. All rights reserved. + */ + +/** + * @class TeamSpeak3_Viewer_Text + * @brief Renders nodes used in ASCII-based TeamSpeak 3 viewers. + */ +class TeamSpeak3_Viewer_Text implements TeamSpeak3_Viewer_Interface +{ + /** + * A pre-defined pattern used to display a node in a TeamSpeak 3 viewer. + * + * @var string + */ + protected $pattern = "%0%1 %2\n"; + + /** + * Returns the code needed to display a node in a TeamSpeak 3 viewer. + * + * @param TeamSpeak3_Node_Abstract $node + * @param array $siblings + * @return string + */ + public function fetchObject(TeamSpeak3_Node_Abstract $node, array $siblings = array()) + { + $this->currObj = $node; + $this->currSib = $siblings; + + $args = array( + $this->getPrefix(), + $this->getCorpusIcon(), + $this->getCorpusName(), + ); + + return TeamSpeak3_Helper_String::factory($this->pattern)->arg($args); + } + + /** + * Returns the ASCII string to display the prefix of the current node. + * + * @return string + */ + protected function getPrefix() + { + $prefix = ""; + + if(count($this->currSib)) + { + $last = array_pop($this->currSib); + + foreach($this->currSib as $sibling) + { + $prefix .= ($sibling) ? "| " : " "; + } + + $prefix .= ($last) ? "\\-" : "|-"; + } + + return $prefix; + } + + /** + * Returns an ASCII string which can be used to display the status icon for a + * TeamSpeak_Node_Abstract object. + * + * @return string + */ + protected function getCorpusIcon() + { + return $this->currObj->getSymbol(); + } + + /** + * Returns a string for the current corpus element which contains the display name + * for the current TeamSpeak_Node_Abstract object. + * + * @return string + */ + protected function getCorpusName() + { + return $this->currObj; + } +} diff --git a/lib/license.txt b/lib/license.txt new file mode 100644 index 0000000..94a9ed0 --- /dev/null +++ b/lib/license.txt @@ -0,0 +1,674 @@ + GNU GENERAL PUBLIC LICENSE + Version 3, 29 June 2007 + + Copyright (C) 2007 Free Software Foundation, Inc. + Everyone is permitted to copy and distribute verbatim copies + of this license document, but changing it is not allowed. + + Preamble + + The GNU General Public License is a free, copyleft license for +software and other kinds of works. + + The licenses for most software and other practical works are designed +to take away your freedom to share and change the works. By contrast, +the GNU General Public License is intended to guarantee your freedom to +share and change all versions of a program--to make sure it remains free +software for all its users. We, the Free Software Foundation, use the +GNU General Public License for most of our software; it applies also to +any other work released this way by its authors. You can apply it to +your programs, too. + + When we speak of free software, we are referring to freedom, not +price. Our General Public Licenses are designed to make sure that you +have the freedom to distribute copies of free software (and charge for +them if you wish), that you receive source code or can get it if you +want it, that you can change the software or use pieces of it in new +free programs, and that you know you can do these things. + + To protect your rights, we need to prevent others from denying you +these rights or asking you to surrender the rights. Therefore, you have +certain responsibilities if you distribute copies of the software, or if +you modify it: responsibilities to respect the freedom of others. + + For example, if you distribute copies of such a program, whether +gratis or for a fee, you must pass on to the recipients the same +freedoms that you received. You must make sure that they, too, receive +or can get the source code. And you must show them these terms so they +know their rights. + + Developers that use the GNU GPL protect your rights with two steps: +(1) assert copyright on the software, and (2) offer you this License +giving you legal permission to copy, distribute and/or modify it. + + For the developers' and authors' protection, the GPL clearly explains +that there is no warranty for this free software. For both users' and +authors' sake, the GPL requires that modified versions be marked as +changed, so that their problems will not be attributed erroneously to +authors of previous versions. + + Some devices are designed to deny users access to install or run +modified versions of the software inside them, although the manufacturer +can do so. This is fundamentally incompatible with the aim of +protecting users' freedom to change the software. The systematic +pattern of such abuse occurs in the area of products for individuals to +use, which is precisely where it is most unacceptable. Therefore, we +have designed this version of the GPL to prohibit the practice for those +products. If such problems arise substantially in other domains, we +stand ready to extend this provision to those domains in future versions +of the GPL, as needed to protect the freedom of users. + + Finally, every program is threatened constantly by software patents. +States should not allow patents to restrict development and use of +software on general-purpose computers, but in those that do, we wish to +avoid the special danger that patents applied to a free program could +make it effectively proprietary. To prevent this, the GPL assures that +patents cannot be used to render the program non-free. + + The precise terms and conditions for copying, distribution and +modification follow. + + TERMS AND CONDITIONS + + 0. Definitions. + + "This License" refers to version 3 of the GNU General Public License. + + "Copyright" also means copyright-like laws that apply to other kinds of +works, such as semiconductor masks. + + "The Program" refers to any copyrightable work licensed under this +License. Each licensee is addressed as "you". "Licensees" and +"recipients" may be individuals or organizations. + + To "modify" a work means to copy from or adapt all or part of the work +in a fashion requiring copyright permission, other than the making of an +exact copy. The resulting work is called a "modified version" of the +earlier work or a work "based on" the earlier work. + + A "covered work" means either the unmodified Program or a work based +on the Program. + + To "propagate" a work means to do anything with it that, without +permission, would make you directly or secondarily liable for +infringement under applicable copyright law, except executing it on a +computer or modifying a private copy. Propagation includes copying, +distribution (with or without modification), making available to the +public, and in some countries other activities as well. + + To "convey" a work means any kind of propagation that enables other +parties to make or receive copies. Mere interaction with a user through +a computer network, with no transfer of a copy, is not conveying. + + An interactive user interface displays "Appropriate Legal Notices" +to the extent that it includes a convenient and prominently visible +feature that (1) displays an appropriate copyright notice, and (2) +tells the user that there is no warranty for the work (except to the +extent that warranties are provided), that licensees may convey the +work under this License, and how to view a copy of this License. If +the interface presents a list of user commands or options, such as a +menu, a prominent item in the list meets this criterion. + + 1. Source Code. + + The "source code" for a work means the preferred form of the work +for making modifications to it. "Object code" means any non-source +form of a work. + + A "Standard Interface" means an interface that either is an official +standard defined by a recognized standards body, or, in the case of +interfaces specified for a particular programming language, one that +is widely used among developers working in that language. + + The "System Libraries" of an executable work include anything, other +than the work as a whole, that (a) is included in the normal form of +packaging a Major Component, but which is not part of that Major +Component, and (b) serves only to enable use of the work with that +Major Component, or to implement a Standard Interface for which an +implementation is available to the public in source code form. A +"Major Component", in this context, means a major essential component +(kernel, window system, and so on) of the specific operating system +(if any) on which the executable work runs, or a compiler used to +produce the work, or an object code interpreter used to run it. + + The "Corresponding Source" for a work in object code form means all +the source code needed to generate, install, and (for an executable +work) run the object code and to modify the work, including scripts to +control those activities. However, it does not include the work's +System Libraries, or general-purpose tools or generally available free +programs which are used unmodified in performing those activities but +which are not part of the work. For example, Corresponding Source +includes interface definition files associated with source files for +the work, and the source code for shared libraries and dynamically +linked subprograms that the work is specifically designed to require, +such as by intimate data communication or control flow between those +subprograms and other parts of the work. + + The Corresponding Source need not include anything that users +can regenerate automatically from other parts of the Corresponding +Source. + + The Corresponding Source for a work in source code form is that +same work. + + 2. Basic Permissions. + + All rights granted under this License are granted for the term of +copyright on the Program, and are irrevocable provided the stated +conditions are met. This License explicitly affirms your unlimited +permission to run the unmodified Program. The output from running a +covered work is covered by this License only if the output, given its +content, constitutes a covered work. This License acknowledges your +rights of fair use or other equivalent, as provided by copyright law. + + You may make, run and propagate covered works that you do not +convey, without conditions so long as your license otherwise remains +in force. You may convey covered works to others for the sole purpose +of having them make modifications exclusively for you, or provide you +with facilities for running those works, provided that you comply with +the terms of this License in conveying all material for which you do +not control copyright. Those thus making or running the covered works +for you must do so exclusively on your behalf, under your direction +and control, on terms that prohibit them from making any copies of +your copyrighted material outside their relationship with you. + + Conveying under any other circumstances is permitted solely under +the conditions stated below. Sublicensing is not allowed; section 10 +makes it unnecessary. + + 3. Protecting Users' Legal Rights From Anti-Circumvention Law. + + No covered work shall be deemed part of an effective technological +measure under any applicable law fulfilling obligations under article +11 of the WIPO copyright treaty adopted on 20 December 1996, or +similar laws prohibiting or restricting circumvention of such +measures. + + When you convey a covered work, you waive any legal power to forbid +circumvention of technological measures to the extent such circumvention +is effected by exercising rights under this License with respect to +the covered work, and you disclaim any intention to limit operation or +modification of the work as a means of enforcing, against the work's +users, your or third parties' legal rights to forbid circumvention of +technological measures. + + 4. Conveying Verbatim Copies. + + You may convey verbatim copies of the Program's source code as you +receive it, in any medium, provided that you conspicuously and +appropriately publish on each copy an appropriate copyright notice; +keep intact all notices stating that this License and any +non-permissive terms added in accord with section 7 apply to the code; +keep intact all notices of the absence of any warranty; and give all +recipients a copy of this License along with the Program. + + You may charge any price or no price for each copy that you convey, +and you may offer support or warranty protection for a fee. + + 5. Conveying Modified Source Versions. + + You may convey a work based on the Program, or the modifications to +produce it from the Program, in the form of source code under the +terms of section 4, provided that you also meet all of these conditions: + + a) The work must carry prominent notices stating that you modified + it, and giving a relevant date. + + b) The work must carry prominent notices stating that it is + released under this License and any conditions added under section + 7. This requirement modifies the requirement in section 4 to + "keep intact all notices". + + c) You must license the entire work, as a whole, under this + License to anyone who comes into possession of a copy. This + License will therefore apply, along with any applicable section 7 + additional terms, to the whole of the work, and all its parts, + regardless of how they are packaged. This License gives no + permission to license the work in any other way, but it does not + invalidate such permission if you have separately received it. + + d) If the work has interactive user interfaces, each must display + Appropriate Legal Notices; however, if the Program has interactive + interfaces that do not display Appropriate Legal Notices, your + work need not make them do so. + + A compilation of a covered work with other separate and independent +works, which are not by their nature extensions of the covered work, +and which are not combined with it such as to form a larger program, +in or on a volume of a storage or distribution medium, is called an +"aggregate" if the compilation and its resulting copyright are not +used to limit the access or legal rights of the compilation's users +beyond what the individual works permit. Inclusion of a covered work +in an aggregate does not cause this License to apply to the other +parts of the aggregate. + + 6. Conveying Non-Source Forms. + + You may convey a covered work in object code form under the terms +of sections 4 and 5, provided that you also convey the +machine-readable Corresponding Source under the terms of this License, +in one of these ways: + + a) Convey the object code in, or embodied in, a physical product + (including a physical distribution medium), accompanied by the + Corresponding Source fixed on a durable physical medium + customarily used for software interchange. + + b) Convey the object code in, or embodied in, a physical product + (including a physical distribution medium), accompanied by a + written offer, valid for at least three years and valid for as + long as you offer spare parts or customer support for that product + model, to give anyone who possesses the object code either (1) a + copy of the Corresponding Source for all the software in the + product that is covered by this License, on a durable physical + medium customarily used for software interchange, for a price no + more than your reasonable cost of physically performing this + conveying of source, or (2) access to copy the + Corresponding Source from a network server at no charge. + + c) Convey individual copies of the object code with a copy of the + written offer to provide the Corresponding Source. This + alternative is allowed only occasionally and noncommercially, and + only if you received the object code with such an offer, in accord + with subsection 6b. + + d) Convey the object code by offering access from a designated + place (gratis or for a charge), and offer equivalent access to the + Corresponding Source in the same way through the same place at no + further charge. You need not require recipients to copy the + Corresponding Source along with the object code. If the place to + copy the object code is a network server, the Corresponding Source + may be on a different server (operated by you or a third party) + that supports equivalent copying facilities, provided you maintain + clear directions next to the object code saying where to find the + Corresponding Source. Regardless of what server hosts the + Corresponding Source, you remain obligated to ensure that it is + available for as long as needed to satisfy these requirements. + + e) Convey the object code using peer-to-peer transmission, provided + you inform other peers where the object code and Corresponding + Source of the work are being offered to the general public at no + charge under subsection 6d. + + A separable portion of the object code, whose source code is excluded +from the Corresponding Source as a System Library, need not be +included in conveying the object code work. + + A "User Product" is either (1) a "consumer product", which means any +tangible personal property which is normally used for personal, family, +or household purposes, or (2) anything designed or sold for incorporation +into a dwelling. In determining whether a product is a consumer product, +doubtful cases shall be resolved in favor of coverage. For a particular +product received by a particular user, "normally used" refers to a +typical or common use of that class of product, regardless of the status +of the particular user or of the way in which the particular user +actually uses, or expects or is expected to use, the product. A product +is a consumer product regardless of whether the product has substantial +commercial, industrial or non-consumer uses, unless such uses represent +the only significant mode of use of the product. + + "Installation Information" for a User Product means any methods, +procedures, authorization keys, or other information required to install +and execute modified versions of a covered work in that User Product from +a modified version of its Corresponding Source. The information must +suffice to ensure that the continued functioning of the modified object +code is in no case prevented or interfered with solely because +modification has been made. + + If you convey an object code work under this section in, or with, or +specifically for use in, a User Product, and the conveying occurs as +part of a transaction in which the right of possession and use of the +User Product is transferred to the recipient in perpetuity or for a +fixed term (regardless of how the transaction is characterized), the +Corresponding Source conveyed under this section must be accompanied +by the Installation Information. But this requirement does not apply +if neither you nor any third party retains the ability to install +modified object code on the User Product (for example, the work has +been installed in ROM). + + The requirement to provide Installation Information does not include a +requirement to continue to provide support service, warranty, or updates +for a work that has been modified or installed by the recipient, or for +the User Product in which it has been modified or installed. Access to a +network may be denied when the modification itself materially and +adversely affects the operation of the network or violates the rules and +protocols for communication across the network. + + Corresponding Source conveyed, and Installation Information provided, +in accord with this section must be in a format that is publicly +documented (and with an implementation available to the public in +source code form), and must require no special password or key for +unpacking, reading or copying. + + 7. Additional Terms. + + "Additional permissions" are terms that supplement the terms of this +License by making exceptions from one or more of its conditions. +Additional permissions that are applicable to the entire Program shall +be treated as though they were included in this License, to the extent +that they are valid under applicable law. If additional permissions +apply only to part of the Program, that part may be used separately +under those permissions, but the entire Program remains governed by +this License without regard to the additional permissions. + + When you convey a copy of a covered work, you may at your option +remove any additional permissions from that copy, or from any part of +it. (Additional permissions may be written to require their own +removal in certain cases when you modify the work.) You may place +additional permissions on material, added by you to a covered work, +for which you have or can give appropriate copyright permission. + + Notwithstanding any other provision of this License, for material you +add to a covered work, you may (if authorized by the copyright holders of +that material) supplement the terms of this License with terms: + + a) Disclaiming warranty or limiting liability differently from the + terms of sections 15 and 16 of this License; or + + b) Requiring preservation of specified reasonable legal notices or + author attributions in that material or in the Appropriate Legal + Notices displayed by works containing it; or + + c) Prohibiting misrepresentation of the origin of that material, or + requiring that modified versions of such material be marked in + reasonable ways as different from the original version; or + + d) Limiting the use for publicity purposes of names of licensors or + authors of the material; or + + e) Declining to grant rights under trademark law for use of some + trade names, trademarks, or service marks; or + + f) Requiring indemnification of licensors and authors of that + material by anyone who conveys the material (or modified versions of + it) with contractual assumptions of liability to the recipient, for + any liability that these contractual assumptions directly impose on + those licensors and authors. + + All other non-permissive additional terms are considered "further +restrictions" within the meaning of section 10. If the Program as you +received it, or any part of it, contains a notice stating that it is +governed by this License along with a term that is a further +restriction, you may remove that term. If a license document contains +a further restriction but permits relicensing or conveying under this +License, you may add to a covered work material governed by the terms +of that license document, provided that the further restriction does +not survive such relicensing or conveying. + + If you add terms to a covered work in accord with this section, you +must place, in the relevant source files, a statement of the +additional terms that apply to those files, or a notice indicating +where to find the applicable terms. + + Additional terms, permissive or non-permissive, may be stated in the +form of a separately written license, or stated as exceptions; +the above requirements apply either way. + + 8. Termination. + + You may not propagate or modify a covered work except as expressly +provided under this License. Any attempt otherwise to propagate or +modify it is void, and will automatically terminate your rights under +this License (including any patent licenses granted under the third +paragraph of section 11). + + However, if you cease all violation of this License, then your +license from a particular copyright holder is reinstated (a) +provisionally, unless and until the copyright holder explicitly and +finally terminates your license, and (b) permanently, if the copyright +holder fails to notify you of the violation by some reasonable means +prior to 60 days after the cessation. + + Moreover, your license from a particular copyright holder is +reinstated permanently if the copyright holder notifies you of the +violation by some reasonable means, this is the first time you have +received notice of violation of this License (for any work) from that +copyright holder, and you cure the violation prior to 30 days after +your receipt of the notice. + + Termination of your rights under this section does not terminate the +licenses of parties who have received copies or rights from you under +this License. If your rights have been terminated and not permanently +reinstated, you do not qualify to receive new licenses for the same +material under section 10. + + 9. Acceptance Not Required for Having Copies. + + You are not required to accept this License in order to receive or +run a copy of the Program. Ancillary propagation of a covered work +occurring solely as a consequence of using peer-to-peer transmission +to receive a copy likewise does not require acceptance. However, +nothing other than this License grants you permission to propagate or +modify any covered work. These actions infringe copyright if you do +not accept this License. Therefore, by modifying or propagating a +covered work, you indicate your acceptance of this License to do so. + + 10. Automatic Licensing of Downstream Recipients. + + Each time you convey a covered work, the recipient automatically +receives a license from the original licensors, to run, modify and +propagate that work, subject to this License. You are not responsible +for enforcing compliance by third parties with this License. + + An "entity transaction" is a transaction transferring control of an +organization, or substantially all assets of one, or subdividing an +organization, or merging organizations. If propagation of a covered +work results from an entity transaction, each party to that +transaction who receives a copy of the work also receives whatever +licenses to the work the party's predecessor in interest had or could +give under the previous paragraph, plus a right to possession of the +Corresponding Source of the work from the predecessor in interest, if +the predecessor has it or can get it with reasonable efforts. + + You may not impose any further restrictions on the exercise of the +rights granted or affirmed under this License. For example, you may +not impose a license fee, royalty, or other charge for exercise of +rights granted under this License, and you may not initiate litigation +(including a cross-claim or counterclaim in a lawsuit) alleging that +any patent claim is infringed by making, using, selling, offering for +sale, or importing the Program or any portion of it. + + 11. Patents. + + A "contributor" is a copyright holder who authorizes use under this +License of the Program or a work on which the Program is based. The +work thus licensed is called the contributor's "contributor version". + + A contributor's "essential patent claims" are all patent claims +owned or controlled by the contributor, whether already acquired or +hereafter acquired, that would be infringed by some manner, permitted +by this License, of making, using, or selling its contributor version, +but do not include claims that would be infringed only as a +consequence of further modification of the contributor version. For +purposes of this definition, "control" includes the right to grant +patent sublicenses in a manner consistent with the requirements of +this License. + + Each contributor grants you a non-exclusive, worldwide, royalty-free +patent license under the contributor's essential patent claims, to +make, use, sell, offer for sale, import and otherwise run, modify and +propagate the contents of its contributor version. + + In the following three paragraphs, a "patent license" is any express +agreement or commitment, however denominated, not to enforce a patent +(such as an express permission to practice a patent or covenant not to +sue for patent infringement). To "grant" such a patent license to a +party means to make such an agreement or commitment not to enforce a +patent against the party. + + If you convey a covered work, knowingly relying on a patent license, +and the Corresponding Source of the work is not available for anyone +to copy, free of charge and under the terms of this License, through a +publicly available network server or other readily accessible means, +then you must either (1) cause the Corresponding Source to be so +available, or (2) arrange to deprive yourself of the benefit of the +patent license for this particular work, or (3) arrange, in a manner +consistent with the requirements of this License, to extend the patent +license to downstream recipients. "Knowingly relying" means you have +actual knowledge that, but for the patent license, your conveying the +covered work in a country, or your recipient's use of the covered work +in a country, would infringe one or more identifiable patents in that +country that you have reason to believe are valid. + + If, pursuant to or in connection with a single transaction or +arrangement, you convey, or propagate by procuring conveyance of, a +covered work, and grant a patent license to some of the parties +receiving the covered work authorizing them to use, propagate, modify +or convey a specific copy of the covered work, then the patent license +you grant is automatically extended to all recipients of the covered +work and works based on it. + + A patent license is "discriminatory" if it does not include within +the scope of its coverage, prohibits the exercise of, or is +conditioned on the non-exercise of one or more of the rights that are +specifically granted under this License. You may not convey a covered +work if you are a party to an arrangement with a third party that is +in the business of distributing software, under which you make payment +to the third party based on the extent of your activity of conveying +the work, and under which the third party grants, to any of the +parties who would receive the covered work from you, a discriminatory +patent license (a) in connection with copies of the covered work +conveyed by you (or copies made from those copies), or (b) primarily +for and in connection with specific products or compilations that +contain the covered work, unless you entered into that arrangement, +or that patent license was granted, prior to 28 March 2007. + + Nothing in this License shall be construed as excluding or limiting +any implied license or other defenses to infringement that may +otherwise be available to you under applicable patent law. + + 12. No Surrender of Others' Freedom. + + If conditions are imposed on you (whether by court order, agreement or +otherwise) that contradict the conditions of this License, they do not +excuse you from the conditions of this License. If you cannot convey a +covered work so as to satisfy simultaneously your obligations under this +License and any other pertinent obligations, then as a consequence you may +not convey it at all. For example, if you agree to terms that obligate you +to collect a royalty for further conveying from those to whom you convey +the Program, the only way you could satisfy both those terms and this +License would be to refrain entirely from conveying the Program. + + 13. Use with the GNU Affero General Public License. + + Notwithstanding any other provision of this License, you have +permission to link or combine any covered work with a work licensed +under version 3 of the GNU Affero General Public License into a single +combined work, and to convey the resulting work. The terms of this +License will continue to apply to the part which is the covered work, +but the special requirements of the GNU Affero General Public License, +section 13, concerning interaction through a network will apply to the +combination as such. + + 14. Revised Versions of this License. + + The Free Software Foundation may publish revised and/or new versions of +the GNU General Public License from time to time. Such new versions will +be similar in spirit to the present version, but may differ in detail to +address new problems or concerns. + + Each version is given a distinguishing version number. If the +Program specifies that a certain numbered version of the GNU General +Public License "or any later version" applies to it, you have the +option of following the terms and conditions either of that numbered +version or of any later version published by the Free Software +Foundation. If the Program does not specify a version number of the +GNU General Public License, you may choose any version ever published +by the Free Software Foundation. + + If the Program specifies that a proxy can decide which future +versions of the GNU General Public License can be used, that proxy's +public statement of acceptance of a version permanently authorizes you +to choose that version for the Program. + + Later license versions may give you additional or different +permissions. However, no additional obligations are imposed on any +author or copyright holder as a result of your choosing to follow a +later version. + + 15. Disclaimer of Warranty. + + THERE IS NO WARRANTY FOR THE PROGRAM, TO THE EXTENT PERMITTED BY +APPLICABLE LAW. EXCEPT WHEN OTHERWISE STATED IN WRITING THE COPYRIGHT +HOLDERS AND/OR OTHER PARTIES PROVIDE THE PROGRAM "AS IS" WITHOUT WARRANTY +OF ANY KIND, EITHER EXPRESSED OR IMPLIED, INCLUDING, BUT NOT LIMITED TO, +THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR +PURPOSE. THE ENTIRE RISK AS TO THE QUALITY AND PERFORMANCE OF THE PROGRAM +IS WITH YOU. SHOULD THE PROGRAM PROVE DEFECTIVE, YOU ASSUME THE COST OF +ALL NECESSARY SERVICING, REPAIR OR CORRECTION. + + 16. Limitation of Liability. + + IN NO EVENT UNLESS REQUIRED BY APPLICABLE LAW OR AGREED TO IN WRITING +WILL ANY COPYRIGHT HOLDER, OR ANY OTHER PARTY WHO MODIFIES AND/OR CONVEYS +THE PROGRAM AS PERMITTED ABOVE, BE LIABLE TO YOU FOR DAMAGES, INCLUDING ANY +GENERAL, SPECIAL, INCIDENTAL OR CONSEQUENTIAL DAMAGES ARISING OUT OF THE +USE OR INABILITY TO USE THE PROGRAM (INCLUDING BUT NOT LIMITED TO LOSS OF +DATA OR DATA BEING RENDERED INACCURATE OR LOSSES SUSTAINED BY YOU OR THIRD +PARTIES OR A FAILURE OF THE PROGRAM TO OPERATE WITH ANY OTHER PROGRAMS), +EVEN IF SUCH HOLDER OR OTHER PARTY HAS BEEN ADVISED OF THE POSSIBILITY OF +SUCH DAMAGES. + + 17. Interpretation of Sections 15 and 16. + + If the disclaimer of warranty and limitation of liability provided +above cannot be given local legal effect according to their terms, +reviewing courts shall apply local law that most closely approximates +an absolute waiver of all civil liability in connection with the +Program, unless a warranty or assumption of liability accompanies a +copy of the Program in return for a fee. + + END OF TERMS AND CONDITIONS + + How to Apply These Terms to Your New Programs + + If you develop a new program, and you want it to be of the greatest +possible use to the public, the best way to achieve this is to make it +free software which everyone can redistribute and change under these terms. + + To do so, attach the following notices to the program. It is safest +to attach them to the start of each source file to most effectively +state the exclusion of warranty; and each file should have at least +the "copyright" line and a pointer to where the full notice is found. + + + Copyright (C) + + This program is free software: you can redistribute it and/or modify + it under the terms of the GNU General Public License as published by + the Free Software Foundation, either version 3 of the License, or + (at your option) any later version. + + This program is distributed in the hope that it will be useful, + but WITHOUT ANY WARRANTY; without even the implied warranty of + MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + GNU General Public License for more details. + + You should have received a copy of the GNU General Public License + along with this program. If not, see . + +Also add information on how to contact you by electronic and paper mail. + + If the program does terminal interaction, make it output a short +notice like this when it starts in an interactive mode: + + Copyright (C) + This program comes with ABSOLUTELY NO WARRANTY; for details type `show w'. + This is free software, and you are welcome to redistribute it + under certain conditions; type `show c' for details. + +The hypothetical commands `show w' and `show c' should show the appropriate +parts of the General Public License. Of course, your program's commands +might be different; for a GUI interface, you would use an "about box". + + You should also get your employer (if you work as a programmer) or school, +if any, to sign a "copyright disclaimer" for the program, if necessary. +For more information on this, and how to apply and follow the GNU GPL, see +. + + The GNU General Public License does not permit incorporating your program +into proprietary programs. If your program is a subroutine library, you +may consider it more useful to permit linking proprietary applications with +the library. If this is what you want to do, use the GNU Lesser General +Public License instead of this License. But first, please read +. diff --git a/lib_ts3.php b/lib_ts3.php new file mode 100644 index 0000000..c6ebe60 --- /dev/null +++ b/lib_ts3.php @@ -0,0 +1,13 @@ +1.1.23
';} +}