2 +--------------------------------------------------------------------+
4 +--------------------------------------------------------------------+
5 | Redistribution and use in source and binary forms, with or without |
6 | modification, are permitted provided that the conditions mentioned |
7 | in the accompanying LICENSE file are met. |
8 +--------------------------------------------------------------------+
9 | Copyright (c) 2011, Michael Wallner <mike@php.net> |
10 +--------------------------------------------------------------------+
18 #include <main/php_ini.h>
19 #include <main/php_network.h>
20 #include <ext/standard/php_string.h>
21 #include <ext/standard/info.h>
22 #include <ext/standard/basic_functions.h>
24 #include <Zend/zend.h>
25 #include <Zend/zend_constants.h>
26 #include <Zend/zend_interfaces.h>
29 #include <TSRM/TSRM.h>
32 #include "php_ircclient.h"
36 #include <libircclient.h>
38 PHP_FUNCTION(parse_origin
)
43 if (SUCCESS
== zend_parse_parameters(ZEND_NUM_ARGS() TSRMLS_CC
, "s", &origin_str
, &origin_len
)) {
44 zval
*znick
, *zuser
, *zhost
;
48 MAKE_STD_ZVAL(znick
); ZVAL_NULL(znick
);
49 MAKE_STD_ZVAL(zuser
); ZVAL_NULL(zuser
);
50 MAKE_STD_ZVAL(zhost
); ZVAL_NULL(zhost
);
52 for (ptr
= origin_str
; *ptr
; ptr
+= siz
+ 1) {
53 if ((siz
= strcspn(ptr
, "!@"))) {
56 ZVAL_STRINGL(znick
, ptr
, siz
, 1);
59 ZVAL_STRINGL(zuser
, ptr
, siz
, 1);
62 ZVAL_STRINGL(zhost
, ptr
, siz
, 1);
71 array_init(return_value
);
72 add_assoc_zval_ex(return_value
, ZEND_STRS("nick"), znick
);
73 add_assoc_zval_ex(return_value
, ZEND_STRS("user"), zuser
);
74 add_assoc_zval_ex(return_value
, ZEND_STRS("host"), zhost
);
79 const zend_function_entry php_ircclient_function_entry
[] = {
80 ZEND_NS_FENTRY("irc\\client", parse_origin
, ZEND_FN(parse_origin
), NULL
, 0)
84 PHP_MINIT_FUNCTION(ircclient
);
85 PHP_MINFO_FUNCTION(ircclient
);
87 zend_module_entry ircclient_module_entry
= {
88 STANDARD_MODULE_HEADER
,
90 php_ircclient_function_entry
,
96 PHP_IRCCLIENT_VERSION
,
97 STANDARD_MODULE_PROPERTIES
101 #ifdef COMPILE_DL_IRCCLIENT
102 ZEND_GET_MODULE(ircclient
)
105 static void php_ircclient_event_callback(irc_session_t
*session
, const char *event
, const char *origin
, const char **params
, unsigned int count
);
106 static void php_ircclient_event_code_callback(irc_session_t
*session
, unsigned int event
, const char *origin
, const char **params
, unsigned int count
);
107 static void php_ircclient_event_dcc_chat_callback(irc_session_t
*session
, const char *nick
, const char *addr
, irc_dcc_t dccid
);
108 static void php_ircclient_event_dcc_send_callback(irc_session_t
*session
, const char *nick
, const char *addr
, const char *filename
, unsigned long size
, irc_dcc_t dccid
);
110 static irc_callbacks_t php_ircclient_callbacks
= {
111 .event_connect
= php_ircclient_event_callback
,
112 .event_nick
= php_ircclient_event_callback
,
113 .event_quit
= php_ircclient_event_callback
,
114 .event_join
= php_ircclient_event_callback
,
115 .event_part
= php_ircclient_event_callback
,
116 .event_mode
= php_ircclient_event_callback
,
117 .event_umode
= php_ircclient_event_callback
,
118 .event_topic
= php_ircclient_event_callback
,
119 .event_kick
= php_ircclient_event_callback
,
120 .event_channel
= php_ircclient_event_callback
,
121 .event_privmsg
= php_ircclient_event_callback
,
122 .event_notice
= php_ircclient_event_callback
,
123 #if PHP_IRCCLIENT_HAVE_EVENT_CHANNEL_NOTICE
124 .event_channel_notice
= php_ircclient_event_callback
,
126 .event_invite
= php_ircclient_event_callback
,
127 .event_ctcp_req
= php_ircclient_event_callback
,
128 .event_ctcp_rep
= php_ircclient_event_callback
,
129 .event_ctcp_action
= php_ircclient_event_callback
,
130 .event_unknown
= php_ircclient_event_callback
,
131 .event_numeric
= php_ircclient_event_code_callback
,
132 .event_dcc_chat_req
= php_ircclient_event_dcc_chat_callback
,
133 .event_dcc_send_req
= php_ircclient_event_dcc_send_callback
136 typedef struct php_ircclient_session_callback
{
139 zend_fcall_info_cache fcc
;
140 } php_ircclient_session_callback_t
;
142 typedef struct php_ircclient_session_object
{
144 zend_object_value ov
;
151 } php_ircclient_session_object_t
;
153 zend_class_entry
*php_ircclient_session_class_entry
;
155 void php_ircclient_session_object_free(void *object TSRMLS_DC
)
157 php_ircclient_session_object_t
*o
= (php_ircclient_session_object_t
*) object
;
160 irc_destroy_session(o
->sess
);
163 zend_hash_destroy(&o
->cbc
);
164 zend_object_std_dtor((zend_object
*) o TSRMLS_CC
);
168 static void php_ircclient_session_callback_dtor(void *ptr
)
170 php_ircclient_session_callback_t
*cb
= (php_ircclient_session_callback_t
*) ptr
;
172 zend_fcall_info_args_clear(&cb
->fci
, 1);
173 zval_ptr_dtor(&cb
->zfn
);
176 zend_object_value
php_ircclient_session_object_create(zend_class_entry
*ce TSRMLS_DC
)
178 php_ircclient_session_object_t
*obj
;
180 obj
= ecalloc(1, sizeof(*obj
));
181 #if PHP_VERSION_ID >= 50399
182 zend_object_std_init((zend_object
*) obj
, ce TSRMLS_CC
);
183 object_properties_init((zend_object
*) obj
, ce
);
186 ALLOC_HASHTABLE(obj
->zo
.properties
);
187 zend_hash_init(obj
->zo
.properties
, zend_hash_num_elements(&ce
->default_properties
), NULL
, ZVAL_PTR_DTOR
, 0);
188 zend_hash_copy(obj
->zo
.properties
, &ce
->default_properties
, (copy_ctor_func_t
) zval_add_ref
, NULL
, sizeof(zval
*));
191 obj
->sess
= irc_create_session(&php_ircclient_callbacks
);
192 irc_set_ctx(obj
->sess
, obj
);
193 zend_hash_init(&obj
->cbc
, 10, NULL
, php_ircclient_session_callback_dtor
, 0);
194 TSRMLS_SET_CTX(obj
->ts
);
196 obj
->ov
.handle
= zend_objects_store_put(obj
, NULL
, php_ircclient_session_object_free
, NULL TSRMLS_CC
);
197 obj
->ov
.handlers
= zend_get_std_object_handlers();
202 static php_ircclient_session_callback_t
*php_ircclient_session_get_callback(php_ircclient_session_object_t
*obj
, const char *fn_str
, size_t fn_len
)
205 php_ircclient_session_callback_t cb
, *cbp
= NULL
;
206 TSRMLS_FETCH_FROM_CTX(obj
->ts
);
208 if (SUCCESS
== zend_hash_find(&obj
->cbc
, fn_str
, fn_len
+ 1, (void *) &cbp
)) {
213 Z_TYPE_P(zo
) = IS_OBJECT
;
214 zo
->value
.obj
= obj
->ov
;
215 zend_objects_store_add_ref(zo TSRMLS_CC
);
218 ZVAL_STRINGL(zm
, estrndup(fn_str
, fn_len
), fn_len
, 0);
220 MAKE_STD_ZVAL(cb
.zfn
);
221 array_init_size(cb
.zfn
, 2);
222 add_next_index_zval(cb
.zfn
, zo
);
223 add_next_index_zval(cb
.zfn
, zm
);
225 if (SUCCESS
!= zend_fcall_info_init(cb
.zfn
, IS_CALLABLE_STRICT
, &cb
.fci
, &cb
.fcc
, NULL
, NULL TSRMLS_CC
)) {
226 zval_ptr_dtor(&cb
.zfn
);
230 if (SUCCESS
!= zend_hash_add(&obj
->cbc
, fn_str
, fn_len
+ 1, &cb
, sizeof(cb
), (void *) &cbp
)) {
231 zval_ptr_dtor(&cb
.zfn
);
238 static void php_ircclient_event_callback(irc_session_t
*session
, const char *event
, const char *origin
, const char **params
, unsigned int count
)
242 php_ircclient_session_callback_t
*cb
;
243 php_ircclient_session_object_t
*obj
= irc_get_ctx(session
);
244 TSRMLS_FETCH_FROM_CTX(obj
->ts
);
246 fn_str
= emalloc(strlen(event
) + 2 + 1);
252 fn_str
[fn_len
++] = tolower(*event
);
256 if ((cb
= php_ircclient_session_get_callback(obj
, fn_str
, fn_len
-1))) {
262 ZVAL_STRING(zo
, estrdup(origin
), 0);
269 for (i
= 0; i
< count
; ++i
) {
270 add_next_index_string(zp
, estrdup(params
[i
]), 0);
273 if (SUCCESS
== zend_fcall_info_argn(&cb
->fci TSRMLS_CC
, 2, &zo
, &zp
)) {
274 zend_fcall_info_call(&cb
->fci
, &cb
->fcc
, NULL
, NULL TSRMLS_CC
);
284 static void php_ircclient_event_code_callback(irc_session_t
*session
, unsigned int event
, const char *origin
, const char **params
, unsigned int count
)
286 php_ircclient_session_callback_t
*cb
;
287 php_ircclient_session_object_t
*obj
= irc_get_ctx(session
);
288 TSRMLS_FETCH_FROM_CTX(obj
->ts
);
291 if ((cb
= php_ircclient_session_get_callback(obj
, ZEND_STRL("onNumeric")))) {
297 ZVAL_STRING(zo
, estrdup(origin
), 0);
303 ZVAL_LONG(ze
, event
);
307 for (i
= 0; i
< count
; ++i
) {
308 add_next_index_string(zp
, estrdup(params
[i
]), 0);
311 if (SUCCESS
== zend_fcall_info_argn(&cb
->fci TSRMLS_CC
, 3, &zo
, &ze
, &zp
)) {
312 zend_fcall_info_call(&cb
->fci
, &cb
->fcc
, NULL
, NULL TSRMLS_CC
);
321 static void php_ircclient_event_dcc_chat_callback(irc_session_t
*session
, const char *nick
, const char *addr
, irc_dcc_t dccid
)
323 php_ircclient_session_callback_t
*cb
;
324 php_ircclient_session_object_t
*obj
= irc_get_ctx(session
);
325 TSRMLS_FETCH_FROM_CTX(obj
->ts
);
327 if ((cb
= php_ircclient_session_get_callback(obj
, ZEND_STRL("onDccChatReq")))) {
331 ZVAL_STRING(zn
, estrdup(nick
), 0);
333 ZVAL_STRING(za
, estrdup(addr
), 0);
335 ZVAL_LONG(zd
, dccid
);
337 if (SUCCESS
== zend_fcall_info_argn(&cb
->fci TSRMLS_CC
, 3, &zn
, &za
, &zd
)) {
338 zend_fcall_info_call(&cb
->fci
, &cb
->fcc
, NULL
, NULL TSRMLS_CC
);
347 static void php_ircclient_event_dcc_send_callback(irc_session_t
*session
, const char *nick
, const char *addr
, const char *filename
, unsigned long size
, irc_dcc_t dccid
)
349 php_ircclient_session_callback_t
*cb
;
350 php_ircclient_session_object_t
*obj
= irc_get_ctx(session
);
351 TSRMLS_FETCH_FROM_CTX(obj
->ts
);
353 if ((cb
= php_ircclient_session_get_callback(obj
, ZEND_STRL("onDccChatReq")))) {
354 zval
*zn
, *za
, *zf
, *zs
, *zd
;
357 ZVAL_STRING(zn
, estrdup(nick
), 0);
359 ZVAL_STRING(za
, estrdup(addr
), 0);
361 ZVAL_STRING(zf
, estrdup(filename
), 0);
365 ZVAL_LONG(zd
, dccid
);
367 if (SUCCESS
== zend_fcall_info_argn(&cb
->fci TSRMLS_CC
, 5, &zn
, &za
, &zf
, &zs
, &zd
)) {
368 zend_fcall_info_call(&cb
->fci
, &cb
->fcc
, NULL
, NULL TSRMLS_CC
);
379 ZEND_BEGIN_ARG_INFO_EX(ai_Session___construct
, 0, 0, 0)
380 ZEND_ARG_INFO(0, nick
)
381 ZEND_ARG_INFO(0, user
)
382 ZEND_ARG_INFO(0, real
)
384 /* {{{ proto void Session::__construct([string nick[, string user[, string real]]]) */
385 PHP_METHOD(Session
, __construct
)
387 char *nick_str
= NULL
, *user_str
= NULL
, *real_str
= NULL
;
388 int nick_len
= 0, user_len
= 0, real_len
= 0;
390 if (SUCCESS
== zend_parse_parameters(ZEND_NUM_ARGS() TSRMLS_CC
, "|s!s!s!", &nick_str
, &nick_len
, &user_str
, &user_len
, &real_str
, &real_len
)) {
391 if (nick_str
&& nick_len
) {
392 zend_update_property_stringl(php_ircclient_session_class_entry
, getThis(), ZEND_STRL("nick"), nick_str
, nick_len TSRMLS_CC
);
394 if (nick_str
&& nick_len
) {
395 zend_update_property_stringl(php_ircclient_session_class_entry
, getThis(), ZEND_STRL("nick"), nick_str
, nick_len TSRMLS_CC
);
397 if (real_str
&& real_len
) {
398 zend_update_property_stringl(php_ircclient_session_class_entry
, getThis(), ZEND_STRL("real"), real_str
, real_len TSRMLS_CC
);
404 ZEND_BEGIN_ARG_INFO_EX(ai_Session_doConnect
, 0, 0, 2)
405 ZEND_ARG_INFO(0, ip6
)
406 ZEND_ARG_INFO(0, host
)
407 ZEND_ARG_INFO(0, port
)
408 ZEND_ARG_INFO(0, password
)
410 /* {{{ proto bool Session::doConnect(bool ip6, string host[, int port[, string password]])
411 Returns TRUE when the command was sent successfully. */
412 PHP_METHOD(Session
, doConnect
)
414 char *server_str
, *passwd_str
= NULL
;
415 int server_len
, passwd_len
= 0;
419 if (SUCCESS
== zend_parse_parameters(ZEND_NUM_ARGS() TSRMLS_CC
, "bs|ls!", &ip6
, &server_str
, &server_len
, &port
, &passwd_str
, &passwd_len
)) {
420 php_ircclient_session_object_t
*obj
= zend_object_store_get_object(getThis() TSRMLS_CC
);
421 char *nick
= NULL
, *user
= NULL
, *real
= NULL
;
422 zval
*znick
, *zuser
, *zreal
;
424 znick
= zend_read_property(php_ircclient_session_class_entry
, getThis(), ZEND_STRL("nick"), 0 TSRMLS_CC
);
425 SEPARATE_ARG_IF_REF(znick
);
426 convert_to_string_ex(&znick
);
427 if (Z_STRLEN_P(znick
)) {
428 nick
= Z_STRVAL_P(znick
);
430 zuser
= zend_read_property(php_ircclient_session_class_entry
, getThis(), ZEND_STRL("user"), 0 TSRMLS_CC
);
431 SEPARATE_ARG_IF_REF(zuser
);
432 convert_to_string_ex(&zuser
);
433 if (Z_STRLEN_P(zuser
)) {
434 user
= Z_STRVAL_P(zuser
);
436 zreal
= zend_read_property(php_ircclient_session_class_entry
, getThis(), ZEND_STRL("real"), 0 TSRMLS_CC
);
437 SEPARATE_ARG_IF_REF(zreal
);
438 convert_to_string_ex(&zreal
);
439 if (Z_STRLEN_P(zreal
)) {
440 real
= Z_STRVAL_P(zreal
);
444 if (0 != irc_connect6(obj
->sess
, server_str
, port
, passwd_str
, nick
, user
, real
)) {
445 php_error_docref(NULL TSRMLS_CC
, E_WARNING
, "%s", irc_strerror(irc_errno(obj
->sess
)));
448 } else if (0 != irc_connect(obj
->sess
, server_str
, port
, passwd_str
, nick
, user
, real
)) {
449 php_error_docref(NULL TSRMLS_CC
, E_WARNING
, "%s", irc_strerror(irc_errno(obj
->sess
)));
455 zval_ptr_dtor(&znick
);
456 zval_ptr_dtor(&zuser
);
457 zval_ptr_dtor(&zreal
);
462 /* {{{ proto bool Session::isConnected() */
463 PHP_METHOD(Session
, isConnected
)
465 if (SUCCESS
== zend_parse_parameters_none()) {
466 php_ircclient_session_object_t
*obj
= zend_object_store_get_object(getThis() TSRMLS_CC
);
468 RETURN_BOOL(irc_is_connected(obj
->sess
));
473 /* {{{ proto void Session::disconnect() */
474 PHP_METHOD(Session
, disconnect
)
476 if (SUCCESS
== zend_parse_parameters_none()) {
477 php_ircclient_session_object_t
*obj
= zend_object_store_get_object(getThis() TSRMLS_CC
);
479 irc_disconnect(obj
->sess
);
484 ZEND_BEGIN_ARG_INFO_EX(ai_Session_run
, 0, 0, 0)
485 ZEND_ARG_INFO(0, read_fd_array_for_select
)
486 ZEND_ARG_INFO(0, write_fd_array_for_select
)
487 ZEND_ARG_INFO(0, timeout_seconds
)
489 /* {{{ proto array Session::run([array read_fds_for_select[, array write_fds_for_select[, double timeout = null]]])
490 Returns array(array of readable fds, array of writeable fds) or false on error. */
491 PHP_METHOD(Session
, run
)
493 HashTable
*ifds
= NULL
, *ofds
= NULL
;
494 double to
= php_get_inf();
497 if (SUCCESS
== zend_parse_parameters(ZEND_NUM_ARGS() TSRMLS_CC
, "|H!H!d", &ifds
, &ofds
, &to
)) {
498 php_ircclient_session_object_t
*obj
= zend_object_store_get_object(getThis() TSRMLS_CC
);
501 struct timeval t
, *tp
= NULL
;
504 zval
**zfd
, *zr
, *zw
;
509 if ((connected
= irc_is_connected(obj
->sess
))) {
510 if (0 != irc_add_select_descriptors(obj
->sess
, &i
, &o
, &m
)) {
511 php_error_docref(NULL TSRMLS_CC
, E_WARNING
, "irc_add_select_descriptors: %s", irc_strerror(irc_errno(obj
->sess
)));
516 for ( zend_hash_internal_pointer_reset(ifds
);
517 SUCCESS
== zend_hash_get_current_data(ifds
, (void *) &zfd
);
518 zend_hash_move_forward(ifds
)
520 if (Z_TYPE_PP(zfd
) == IS_RESOURCE
) {
521 php_stream
*s
= NULL
;
524 php_stream_from_zval_no_verify(s
, zfd
);
526 if (!s
|| SUCCESS
!= php_stream_cast(s
, PHP_STREAM_AS_FD_FOR_SELECT
, (void *) &fd
, 1) || fd
== -1) {
527 php_error_docref(NULL TSRMLS_CC
, E_NOTICE
, "invalid resource");
529 PHP_SAFE_FD_SET(fd
, &i
);
538 for ( zend_hash_internal_pointer_reset(ofds
);
539 SUCCESS
== zend_hash_get_current_data(ofds
, (void *) &zfd
);
540 zend_hash_move_forward(ofds
)
542 if (Z_TYPE_PP(zfd
) == IS_RESOURCE
) {
543 php_stream
*s
= NULL
;
546 php_stream_from_zval_no_verify(s
, zfd
);
548 if (!s
|| SUCCESS
!= php_stream_cast(s
, PHP_STREAM_AS_FD_FOR_SELECT
|PHP_STREAM_CAST_INTERNAL
, (void *) &fd
, 1) || fd
== -1) {
549 php_error_docref(NULL TSRMLS_CC
, E_NOTICE
, "invalid resource");
551 PHP_SAFE_FD_SET(fd
, &o
);
560 PHP_SAFE_MAX_FD(m
, m
);
561 array_init(return_value
);
563 if (to
!= php_get_inf()) {
564 t
.tv_sec
= (time_t) to
;
565 t
.tv_usec
= (suseconds_t
) ((to
- t
.tv_sec
) * 1000000.0);
569 if (0 > select(m
+ 1, &i
, &o
, NULL
, tp
)) {
570 if (errno
== EINTR
) {
571 /* interrupt; let userland be able to handle signals etc. */
575 php_error_docref(NULL TSRMLS_CC
, E_WARNING
, "select() error: %s", strerror(errno
));
580 if (0 != irc_process_select_descriptors(obj
->sess
, &i
, &o
)) {
581 int err
= irc_errno(obj
->sess
);
584 php_error_docref(NULL TSRMLS_CC
, E_WARNING
, "irc_process: %s", irc_strerror(err
));
597 for ( zend_hash_internal_pointer_reset(ifds
);
598 SUCCESS
== zend_hash_get_current_data(ifds
, (void *) &zfd
);
599 zend_hash_move_forward(ifds
)
601 if (Z_TYPE_PP(zfd
) == IS_RESOURCE
) {
602 php_stream
*s
= NULL
;
605 php_stream_from_zval_no_verify(s
, zfd
);
607 if (s
&& SUCCESS
== php_stream_cast(s
, PHP_STREAM_AS_FD_FOR_SELECT
|PHP_STREAM_CAST_INTERNAL
, (void *) &fd
, 1) && fd
!= -1) {
608 if (PHP_SAFE_FD_ISSET(fd
, &i
)) {
610 add_next_index_zval(zr
, *zfd
);
617 for ( zend_hash_internal_pointer_reset(ofds
);
618 SUCCESS
== zend_hash_get_current_data(ofds
, (void *) &zfd
);
619 zend_hash_move_forward(ofds
)
621 if (Z_TYPE_PP(zfd
) == IS_RESOURCE
) {
622 php_stream
*s
= NULL
;
625 php_stream_from_zval_no_verify(s
, zfd
);
627 if (s
&& SUCCESS
== php_stream_cast(s
, PHP_STREAM_AS_FD_FOR_SELECT
|PHP_STREAM_CAST_INTERNAL
, (void *) &fd
, 1) && fd
!= -1) {
628 if (PHP_SAFE_FD_ISSET(fd
, &o
)) {
630 add_next_index_zval(zw
, *zfd
);
637 add_next_index_zval(return_value
, zr
);
638 add_next_index_zval(return_value
, zw
);
643 if (0 != irc_run(obj
->sess
)) {
644 int err
= irc_errno(obj
->sess
);
647 php_error_docref(NULL TSRMLS_CC
, E_WARNING
, "irc_run: %s", irc_strerror(err
));
658 ZEND_BEGIN_ARG_INFO_EX(ai_Session_setOption
, 0, 0, 1)
659 ZEND_ARG_INFO(0, option
)
660 ZEND_ARG_INFO(0, enable
)
662 /* {{{ proto void Session::setOption(int option[, bool enable = true]) */
663 PHP_METHOD(Session
, setOption
)
668 if (SUCCESS
== zend_parse_parameters(ZEND_NUM_ARGS() TSRMLS_CC
, "l|b", &opt
, &onoff
)) {
669 php_ircclient_session_object_t
*obj
= zend_object_store_get_object(getThis() TSRMLS_CC
);
673 irc_option_set(obj
->sess
, opt
);
676 irc_option_reset(obj
->sess
, opt
);
682 ZEND_BEGIN_ARG_INFO_EX(ai_Session_doJoin
, 0, 0, 1)
683 ZEND_ARG_INFO(0, channel
)
684 ZEND_ARG_INFO(0, password
)
686 /* {{{ proto bool Session::doJoin(string channel[, string password])
687 Returns TRUE when the command was successfully sent. */
688 PHP_METHOD(Session
, doJoin
)
690 char *chan_str
, *key_str
= NULL
;
691 int chan_len
, key_len
= 0;
693 if (SUCCESS
== zend_parse_parameters(ZEND_NUM_ARGS() TSRMLS_CC
, "s|s!", &chan_str
, &chan_len
, &key_str
, &key_len
)) {
694 php_ircclient_session_object_t
*obj
= zend_object_store_get_object(getThis() TSRMLS_CC
);
696 if (0 != irc_cmd_join(obj
->sess
, chan_str
, key_str
)) {
697 php_error_docref(NULL TSRMLS_CC
, E_WARNING
, "%s", irc_strerror(irc_errno(obj
->sess
)));
706 ZEND_BEGIN_ARG_INFO_EX(ai_Session_doPart
, 0, 0, 1)
707 ZEND_ARG_INFO(0, channel
)
709 /* {{{ proto bool Session::doPart(string channel)
710 Returns TRUE when the command was successfully sent. */
711 PHP_METHOD(Session
, doPart
)
716 if (SUCCESS
== zend_parse_parameters(ZEND_NUM_ARGS() TSRMLS_CC
, "s", &chan_str
, &chan_len
)) {
717 php_ircclient_session_object_t
*obj
= zend_object_store_get_object(getThis() TSRMLS_CC
);
719 if (0 != irc_cmd_part(obj
->sess
, chan_str
)) {
720 php_error_docref(NULL TSRMLS_CC
, E_WARNING
, "%s", irc_strerror(irc_errno(obj
->sess
)));
729 ZEND_BEGIN_ARG_INFO_EX(ai_Session_doInvite
, 0, 0, 2)
730 ZEND_ARG_INFO(0, nick
)
731 ZEND_ARG_INFO(0, channel
)
733 /* {{{ proto bool Session::doInvite(string nick, string channel)
734 Returns TRUE when the command was sent successfully. */
735 PHP_METHOD(Session
, doInvite
)
737 char *chan_str
, *nick_str
;
738 int chan_len
, nick_len
;
740 if (SUCCESS
== zend_parse_parameters(ZEND_NUM_ARGS() TSRMLS_CC
, "ss", &nick_str
, &nick_len
, &chan_str
, &chan_len
)) {
741 php_ircclient_session_object_t
*obj
= zend_object_store_get_object(getThis() TSRMLS_CC
);
743 if (0 != irc_cmd_invite(obj
->sess
, nick_str
, chan_str
)) {
744 php_error_docref(NULL TSRMLS_CC
, E_WARNING
, "%s", irc_strerror(irc_errno(obj
->sess
)));
753 ZEND_BEGIN_ARG_INFO_EX(ai_Session_doNames
, 0, 0, 1)
754 ZEND_ARG_INFO(0, channel
)
756 /* {{{ proto bool Session::doNames(string channel)
757 Returns TRUE when the command was sent successfully. */
758 PHP_METHOD(Session
, doNames
)
763 if (SUCCESS
== zend_parse_parameters(ZEND_NUM_ARGS() TSRMLS_CC
, "s", &chan_str
, &chan_len
)) {
764 php_ircclient_session_object_t
*obj
= zend_object_store_get_object(getThis() TSRMLS_CC
);
766 if (0 != irc_cmd_names(obj
->sess
, chan_str
)) {
767 php_error_docref(NULL TSRMLS_CC
, E_WARNING
, "%s", irc_strerror(irc_errno(obj
->sess
)));
776 ZEND_BEGIN_ARG_INFO_EX(ai_Session_doList
, 0, 0, 1)
777 ZEND_ARG_INFO(0, channel
)
779 /* {{{ proto bool Session::doList(string channel)
780 Returns TRUE when the command was sent successfully. */
781 PHP_METHOD(Session
, doList
)
786 if (SUCCESS
== zend_parse_parameters(ZEND_NUM_ARGS() TSRMLS_CC
, "s", &chan_str
, &chan_len
)) {
787 php_ircclient_session_object_t
*obj
= zend_object_store_get_object(getThis() TSRMLS_CC
);
789 if (0 != irc_cmd_list(obj
->sess
, chan_str
)) {
790 php_error_docref(NULL TSRMLS_CC
, E_WARNING
, "%s", irc_strerror(irc_errno(obj
->sess
)));
799 ZEND_BEGIN_ARG_INFO_EX(ai_Session_doTopic
, 0, 0, 1)
800 ZEND_ARG_INFO(0, channel
)
801 ZEND_ARG_INFO(0, topic
)
803 /* {{{ proto bool Session::doTopic(string channel[, string topic])
804 Returns TRUE when the command was sent successfully. */
805 PHP_METHOD(Session
, doTopic
)
807 char *chan_str
, *topic_str
= NULL
;
808 int chan_len
, topic_len
;
810 if (SUCCESS
== zend_parse_parameters(ZEND_NUM_ARGS() TSRMLS_CC
, "s|s!", &chan_str
, &chan_len
, &topic_str
, &topic_len
)) {
811 php_ircclient_session_object_t
*obj
= zend_object_store_get_object(getThis() TSRMLS_CC
);
813 if (0 != irc_cmd_topic(obj
->sess
, chan_str
, topic_str
)) {
814 php_error_docref(NULL TSRMLS_CC
, E_WARNING
, "%s", irc_strerror(irc_errno(obj
->sess
)));
823 ZEND_BEGIN_ARG_INFO_EX(ai_Session_doChannelMode
, 0, 0, 1)
824 ZEND_ARG_INFO(0, channel
)
825 ZEND_ARG_INFO(0, mode
)
827 /* {{{ proto bool Session::doChannelMode(string channel[, string mode])
828 Returns TRUE when the command was sent successfully. */
829 PHP_METHOD(Session
, doChannelMode
)
831 char *chan_str
, *mode_str
= NULL
;
832 int chan_len
, mode_len
;
834 if (SUCCESS
== zend_parse_parameters(ZEND_NUM_ARGS() TSRMLS_CC
, "s|s!", &chan_str
, &chan_len
, &mode_str
, &mode_len
)) {
835 php_ircclient_session_object_t
*obj
= zend_object_store_get_object(getThis() TSRMLS_CC
);
837 if (0 != irc_cmd_channel_mode(obj
->sess
, chan_str
, mode_str
)) {
838 php_error_docref(NULL TSRMLS_CC
, E_WARNING
, "%s", irc_strerror(irc_errno(obj
->sess
)));
847 ZEND_BEGIN_ARG_INFO_EX(ai_Session_doKick
, 0, 0, 2)
848 ZEND_ARG_INFO(0, nick
)
849 ZEND_ARG_INFO(0, channel
)
850 ZEND_ARG_INFO(0, reason
)
852 /* {{{ proto bool Session::doKick(string nick, string channel[, string reason])
853 Returns TRUE when the command was sent successfully. */
854 PHP_METHOD(Session
, doKick
)
856 char *chan_str
, *nick_str
, *reason_str
= NULL
;
857 int chan_len
, nick_len
, reason_len
;
859 if (SUCCESS
== zend_parse_parameters(ZEND_NUM_ARGS() TSRMLS_CC
, "ss|s!", &nick_str
, &nick_len
, &chan_str
, &chan_len
, &reason_str
, &reason_len
)) {
860 php_ircclient_session_object_t
*obj
= zend_object_store_get_object(getThis() TSRMLS_CC
);
862 if (0 != irc_cmd_kick(obj
->sess
, nick_str
, chan_str
, reason_str
)) {
863 php_error_docref(NULL TSRMLS_CC
, E_WARNING
, "%s", irc_strerror(irc_errno(obj
->sess
)));
872 ZEND_BEGIN_ARG_INFO_EX(ai_Session_doMsg
, 0, 0, 2)
873 ZEND_ARG_INFO(0, destination
)
874 ZEND_ARG_INFO(0, message
)
876 /* {{{ proto bool Session::doMsg(string destination, string message)
877 Returns TRUE when the command was sent successfully. */
878 PHP_METHOD(Session
, doMsg
)
880 char *dest_str
, *msg_str
;
881 int dest_len
, msg_len
;
883 if (SUCCESS
== zend_parse_parameters(ZEND_NUM_ARGS() TSRMLS_CC
, "ss", &dest_str
, &dest_len
, &msg_str
, &msg_len
)) {
884 php_ircclient_session_object_t
*obj
= zend_object_store_get_object(getThis() TSRMLS_CC
);
886 if (0 != irc_cmd_msg(obj
->sess
, dest_str
, msg_str
)) {
887 php_error_docref(NULL TSRMLS_CC
, E_WARNING
, "%s", irc_strerror(irc_errno(obj
->sess
)));
896 ZEND_BEGIN_ARG_INFO_EX(ai_Session_doMe
, 0, 0, 2)
897 ZEND_ARG_INFO(0, destination
)
898 ZEND_ARG_INFO(0, message
)
900 /* {{{ proto bool Session::doMe(string destination, string message)
901 Returns TRUE when the command was sent successfully. */
902 PHP_METHOD(Session
, doMe
)
904 char *dest_str
, *msg_str
;
905 int dest_len
, msg_len
;
907 if (SUCCESS
== zend_parse_parameters(ZEND_NUM_ARGS() TSRMLS_CC
, "ss", &dest_str
, &dest_len
, &msg_str
, &msg_len
)) {
908 php_ircclient_session_object_t
*obj
= zend_object_store_get_object(getThis() TSRMLS_CC
);
910 if (0 != irc_cmd_me(obj
->sess
, dest_str
, msg_str
)) {
911 php_error_docref(NULL TSRMLS_CC
, E_WARNING
, "%s", irc_strerror(irc_errno(obj
->sess
)));
920 ZEND_BEGIN_ARG_INFO_EX(ai_Session_doNotice
, 0, 0, 2)
921 ZEND_ARG_INFO(0, destination
)
922 ZEND_ARG_INFO(0, message
)
924 /* {{{ proto bool Session::doNotice(string destination, string message)
925 Returns TRUE when the command was sent successfully. */
926 PHP_METHOD(Session
, doNotice
)
928 char *dest_str
, *msg_str
;
929 int dest_len
, msg_len
;
931 if (SUCCESS
== zend_parse_parameters(ZEND_NUM_ARGS() TSRMLS_CC
, "ss", &dest_str
, &dest_len
, &msg_str
, &msg_len
)) {
932 php_ircclient_session_object_t
*obj
= zend_object_store_get_object(getThis() TSRMLS_CC
);
934 if (0 != irc_cmd_notice(obj
->sess
, dest_str
, msg_str
)) {
935 php_error_docref(NULL TSRMLS_CC
, E_WARNING
, "%s", irc_strerror(irc_errno(obj
->sess
)));
944 ZEND_BEGIN_ARG_INFO_EX(ai_Session_doQuit
, 0, 0, 0)
945 ZEND_ARG_INFO(0, reason
)
947 /* {{{ proto bool Session::doQuit([string reason])
948 Returns TRUE when the command was sent successfully. */
949 PHP_METHOD(Session
, doQuit
)
951 char *reason_str
= NULL
;
954 if (SUCCESS
== zend_parse_parameters(ZEND_NUM_ARGS() TSRMLS_CC
, "|s!", &reason_str
, &reason_len
)) {
955 php_ircclient_session_object_t
*obj
= zend_object_store_get_object(getThis() TSRMLS_CC
);
957 if (0 != irc_cmd_quit(obj
->sess
, reason_str
)) {
958 php_error_docref(NULL TSRMLS_CC
, E_WARNING
, "%s", irc_strerror(irc_errno(obj
->sess
)));
967 ZEND_BEGIN_ARG_INFO_EX(ai_Session_doUserMode
, 0, 0, 0)
968 ZEND_ARG_INFO(0, mode
)
970 /* {{{ proto bool Session::doUserMode([string mode])
971 Returns TRUE when the command was sent successfully. */
972 PHP_METHOD(Session
, doUserMode
)
974 char *mode_str
= NULL
;
977 if (SUCCESS
== zend_parse_parameters(ZEND_NUM_ARGS() TSRMLS_CC
, "|s!", &mode_str
, &mode_len
)) {
978 php_ircclient_session_object_t
*obj
= zend_object_store_get_object(getThis() TSRMLS_CC
);
980 if (0 != irc_cmd_user_mode(obj
->sess
, mode_str
)) {
981 php_error_docref(NULL TSRMLS_CC
, E_WARNING
, "%s", irc_strerror(irc_errno(obj
->sess
)));
990 ZEND_BEGIN_ARG_INFO_EX(ai_Session_doNick
, 0, 0, 1)
991 ZEND_ARG_INFO(0, nick
)
993 /* {{{ proto bool Session::doNick(string nick)
994 Returns TRUE when the command was sent successfully. */
995 PHP_METHOD(Session
, doNick
)
1000 if (SUCCESS
== zend_parse_parameters(ZEND_NUM_ARGS() TSRMLS_CC
, "s", &nick_str
, &nick_len
)) {
1001 php_ircclient_session_object_t
*obj
= zend_object_store_get_object(getThis() TSRMLS_CC
);
1003 if (0 != irc_cmd_nick(obj
->sess
, nick_str
)) {
1004 php_error_docref(NULL TSRMLS_CC
, E_WARNING
, "%s", irc_strerror(irc_errno(obj
->sess
)));
1013 ZEND_BEGIN_ARG_INFO_EX(ai_Session_doWhois
, 0, 0, 0)
1014 ZEND_ARG_INFO(0, nick
)
1016 /* {{{ proto bool Session::doWhois([string nick])
1017 Returns TRUE when the command was sent successfully. */
1018 PHP_METHOD(Session
, doWhois
)
1020 char *nick_str
= NULL
;
1023 if (SUCCESS
== zend_parse_parameters(ZEND_NUM_ARGS() TSRMLS_CC
, "|s!", &nick_str
, &nick_len
)) {
1024 php_ircclient_session_object_t
*obj
= zend_object_store_get_object(getThis() TSRMLS_CC
);
1026 if (0 != irc_cmd_whois(obj
->sess
, nick_str
)) {
1027 php_error_docref(NULL TSRMLS_CC
, E_WARNING
, "%s", irc_strerror(irc_errno(obj
->sess
)));
1036 ZEND_BEGIN_ARG_INFO_EX(ai_Session_doCtcpReply
, 0, 0, 2)
1037 ZEND_ARG_INFO(0, nick
)
1038 ZEND_ARG_INFO(0, reply
)
1040 /* {{{ proto bool Session::doCtcpReply(string nick, string reply)
1041 Returns TRUE when the command was sent successfully. */
1042 PHP_METHOD(Session
, doCtcpReply
)
1044 char *nick_str
, *reply_str
;
1045 int nick_len
, reply_len
;
1047 if (SUCCESS
== zend_parse_parameters(ZEND_NUM_ARGS() TSRMLS_CC
, "ss", &nick_str
, &nick_len
, &reply_str
, &reply_len
)) {
1048 php_ircclient_session_object_t
*obj
= zend_object_store_get_object(getThis() TSRMLS_CC
);
1050 if (0 != irc_cmd_ctcp_reply(obj
->sess
, nick_str
, reply_str
)) {
1051 php_error_docref(NULL TSRMLS_CC
, E_WARNING
, "%s", irc_strerror(irc_errno(obj
->sess
)));
1060 ZEND_BEGIN_ARG_INFO_EX(ai_Session_doCtcpRequest
, 0, 0, 2)
1061 ZEND_ARG_INFO(0, nick
)
1062 ZEND_ARG_INFO(0, request
)
1064 /* {{{ proto bool Session::doCtcpRequest(string nick, string request)
1065 Returns TRUE when the command was sent successfully. */
1066 PHP_METHOD(Session
, doCtcpRequest
)
1068 char *nick_str
, *request_str
;
1069 int nick_len
, request_len
;
1071 if (SUCCESS
== zend_parse_parameters(ZEND_NUM_ARGS() TSRMLS_CC
, "ss", &nick_str
, &nick_len
, &request_str
, &request_len
)) {
1072 php_ircclient_session_object_t
*obj
= zend_object_store_get_object(getThis() TSRMLS_CC
);
1074 if (0 != irc_cmd_ctcp_request(obj
->sess
, nick_str
, request_str
)) {
1075 php_error_docref(NULL TSRMLS_CC
, E_WARNING
, "%s", irc_strerror(irc_errno(obj
->sess
)));
1084 ZEND_BEGIN_ARG_INFO_EX(ai_Session_doRaw
, 0, 0, 1)
1085 ZEND_ARG_INFO(0, message
)
1087 /* {{{ proto bool Session::doRaw(string message)
1088 Returns TRUE when the command was sent successfully. */
1089 PHP_METHOD(Session
, doRaw
)
1094 if (SUCCESS
== zend_parse_parameters(ZEND_NUM_ARGS() TSRMLS_CC
, "s", &msg_str
, &msg_len
)) {
1095 php_ircclient_session_object_t
*obj
= zend_object_store_get_object(getThis() TSRMLS_CC
);
1097 if (0 != irc_send_raw(obj
->sess
, "%.*s", msg_len
, msg_str
)) {
1098 php_error_docref(NULL TSRMLS_CC
, E_WARNING
, "%s", irc_strerror(irc_errno(obj
->sess
)));
1107 /* {{{ event_callbacks */
1108 ZEND_BEGIN_ARG_INFO_EX(ai_Session_event
, 0, 0, 2)
1109 ZEND_ARG_INFO(0, origin
)
1110 ZEND_ARG_ARRAY_INFO(0, args
, 0)
1112 ZEND_BEGIN_ARG_INFO_EX(ai_Session_event_code
, 0, 0, 3)
1113 ZEND_ARG_INFO(0, origin
)
1114 ZEND_ARG_INFO(0, event
)
1115 ZEND_ARG_ARRAY_INFO(0, args
, 0)
1117 ZEND_BEGIN_ARG_INFO_EX(ai_Session_event_dcc_chat
, 0, 0, 3)
1118 ZEND_ARG_INFO(0, nick
)
1119 ZEND_ARG_INFO(0, remote_addr
)
1120 ZEND_ARG_INFO(0, dccid
)
1122 ZEND_BEGIN_ARG_INFO_EX(ai_Session_event_dcc_send
, 0, 0, 5)
1123 ZEND_ARG_INFO(0, nick
)
1124 ZEND_ARG_INFO(0, remote_addr
)
1125 ZEND_ARG_INFO(0, filename
)
1126 ZEND_ARG_INFO(0, size
)
1127 ZEND_ARG_INFO(0, dccid
)
1130 static void call_closure(INTERNAL_FUNCTION_PARAMETERS
, /* stupid non-const API */ char *prop_str
, size_t prop_len
)
1132 zval
**params
= ecalloc(ZEND_NUM_ARGS(), sizeof(zval
*));
1133 php_ircclient_session_object_t
*obj
= zend_object_store_get_object(getThis() TSRMLS_CC
);
1135 if (obj
->opts
& LIBIRC_OPTION_DEBUG
) {
1141 if (SUCCESS
== zend_copy_parameters_array(ZEND_NUM_ARGS(), &za
)) {
1142 php_printf("ircclient: %s - ", prop_str
);
1143 zend_print_flat_zval_r(&za TSRMLS_CC
);
1149 if (SUCCESS
== zend_get_parameters_array(ZEND_NUM_ARGS(), ZEND_NUM_ARGS(), params
)) {
1150 zval
*prop
= zend_read_property(Z_OBJCE_P(getThis()), getThis(), prop_str
, prop_len
, 0 TSRMLS_CC
);
1152 if (Z_TYPE_P(prop
) != IS_NULL
) {
1153 call_user_function(NULL
, NULL
, prop
, return_value
, ZEND_NUM_ARGS(), params TSRMLS_CC
);
1160 PHP_METHOD(Session
, onConnect
) { call_closure(INTERNAL_FUNCTION_PARAM_PASSTHRU
, ZEND_STRL("onConnect")); }
1161 PHP_METHOD(Session
, onNick
) { call_closure(INTERNAL_FUNCTION_PARAM_PASSTHRU
, ZEND_STRL("onNick")); }
1162 PHP_METHOD(Session
, onQuit
) { call_closure(INTERNAL_FUNCTION_PARAM_PASSTHRU
, ZEND_STRL("onQuit")); }
1163 PHP_METHOD(Session
, onJoin
) { call_closure(INTERNAL_FUNCTION_PARAM_PASSTHRU
, ZEND_STRL("onJoin")); }
1164 PHP_METHOD(Session
, onPart
) { call_closure(INTERNAL_FUNCTION_PARAM_PASSTHRU
, ZEND_STRL("onPart")); }
1165 PHP_METHOD(Session
, onMode
) { call_closure(INTERNAL_FUNCTION_PARAM_PASSTHRU
, ZEND_STRL("onMode")); }
1166 PHP_METHOD(Session
, onUmode
) { call_closure(INTERNAL_FUNCTION_PARAM_PASSTHRU
, ZEND_STRL("onUmode")); }
1167 PHP_METHOD(Session
, onTopic
) { call_closure(INTERNAL_FUNCTION_PARAM_PASSTHRU
, ZEND_STRL("onTopic")); }
1168 PHP_METHOD(Session
, onKick
) { call_closure(INTERNAL_FUNCTION_PARAM_PASSTHRU
, ZEND_STRL("onKick")); }
1169 PHP_METHOD(Session
, onChannel
) { call_closure(INTERNAL_FUNCTION_PARAM_PASSTHRU
, ZEND_STRL("onChannel")); }
1170 PHP_METHOD(Session
, onPrivmsg
) { call_closure(INTERNAL_FUNCTION_PARAM_PASSTHRU
, ZEND_STRL("onPrivmsg")); }
1171 PHP_METHOD(Session
, onNotice
) { call_closure(INTERNAL_FUNCTION_PARAM_PASSTHRU
, ZEND_STRL("onNotice")); }
1172 PHP_METHOD(Session
, onChannelNotice
) { call_closure(INTERNAL_FUNCTION_PARAM_PASSTHRU
, ZEND_STRL("onChannelNotice")); }
1173 PHP_METHOD(Session
, onInvite
) { call_closure(INTERNAL_FUNCTION_PARAM_PASSTHRU
, ZEND_STRL("onInvite")); }
1174 PHP_METHOD(Session
, onCtcpReq
) { call_closure(INTERNAL_FUNCTION_PARAM_PASSTHRU
, ZEND_STRL("onCtcpReq")); }
1175 PHP_METHOD(Session
, onCtcpRep
) { call_closure(INTERNAL_FUNCTION_PARAM_PASSTHRU
, ZEND_STRL("onCtcpRep")); }
1176 PHP_METHOD(Session
, onAction
) { call_closure(INTERNAL_FUNCTION_PARAM_PASSTHRU
, ZEND_STRL("onAction")); }
1177 PHP_METHOD(Session
, onUnknown
) { call_closure(INTERNAL_FUNCTION_PARAM_PASSTHRU
, ZEND_STRL("onUnknown")); }
1178 PHP_METHOD(Session
, onNumeric
) { call_closure(INTERNAL_FUNCTION_PARAM_PASSTHRU
, ZEND_STRL("onNumeric")); }
1179 PHP_METHOD(Session
, onDccChatReq
) { call_closure(INTERNAL_FUNCTION_PARAM_PASSTHRU
, ZEND_STRL("onDccChatReq")); }
1180 PHP_METHOD(Session
, onDccSendReq
) { call_closure(INTERNAL_FUNCTION_PARAM_PASSTHRU
, ZEND_STRL("onDccSendReq")); }
1181 PHP_METHOD(Session
, onError
) { call_closure(INTERNAL_FUNCTION_PARAM_PASSTHRU
, ZEND_STRL("onError")); }
1184 #define ME(m, ai) PHP_ME(Session, m, ai, ZEND_ACC_PUBLIC)
1186 zend_function_entry php_ircclient_session_method_entry
[] = {
1187 ME(__construct
, ai_Session___construct
)
1188 ME(doConnect
, ai_Session_doConnect
)
1189 ME(isConnected
, NULL
)
1190 ME(disconnect
, NULL
)
1191 ME(run
, ai_Session_run
)
1192 ME(setOption
, ai_Session_setOption
)
1194 ME(doJoin
, ai_Session_doJoin
)
1195 ME(doPart
, ai_Session_doPart
)
1196 ME(doInvite
, ai_Session_doInvite
)
1197 ME(doNames
, ai_Session_doNames
)
1198 ME(doList
, ai_Session_doList
)
1199 ME(doTopic
, ai_Session_doTopic
)
1200 ME(doChannelMode
, ai_Session_doChannelMode
)
1201 ME(doKick
, ai_Session_doKick
)
1203 ME(doMsg
, ai_Session_doMsg
)
1204 ME(doMe
, ai_Session_doMe
)
1205 ME(doNotice
, ai_Session_doNotice
)
1207 ME(doQuit
, ai_Session_doQuit
)
1208 ME(doUserMode
, ai_Session_doUserMode
)
1209 ME(doNick
, ai_Session_doNick
)
1210 ME(doWhois
, ai_Session_doWhois
)
1212 ME(doCtcpReply
, ai_Session_doCtcpReply
)
1213 ME(doCtcpRequest
, ai_Session_doCtcpRequest
)
1215 ME(doRaw
, ai_Session_doRaw
)
1217 ME(onConnect
, ai_Session_event
)
1218 ME(onNick
, ai_Session_event
)
1219 ME(onQuit
, ai_Session_event
)
1220 ME(onJoin
, ai_Session_event
)
1221 ME(onPart
, ai_Session_event
)
1222 ME(onMode
, ai_Session_event
)
1223 ME(onUmode
, ai_Session_event
)
1224 ME(onTopic
, ai_Session_event
)
1225 ME(onKick
, ai_Session_event
)
1226 ME(onChannel
, ai_Session_event
)
1227 ME(onPrivmsg
, ai_Session_event
)
1228 ME(onNotice
, ai_Session_event
)
1229 ME(onChannelNotice
, ai_Session_event
)
1230 ME(onInvite
, ai_Session_event
)
1231 ME(onCtcpReq
, ai_Session_event
)
1232 ME(onCtcpRep
, ai_Session_event
)
1233 ME(onAction
, ai_Session_event
)
1234 ME(onUnknown
, ai_Session_event
)
1235 ME(onNumeric
, ai_Session_event_code
)
1236 ME(onDccChatReq
, ai_Session_event_dcc_chat
)
1237 ME(onDccSendReq
, ai_Session_event_dcc_send
)
1238 ME(onError
, ai_Session_event
)
1242 PHP_MINIT_FUNCTION(ircclient
)
1244 zend_class_entry ce
;
1246 memset(&ce
, 0, sizeof(zend_class_entry
));
1247 INIT_NS_CLASS_ENTRY(ce
, "irc\\client", "Session", php_ircclient_session_method_entry
);
1248 ce
.create_object
= php_ircclient_session_object_create
;
1249 php_ircclient_session_class_entry
= zend_register_internal_class_ex(&ce
, NULL
, NULL TSRMLS_CC
);
1251 zend_declare_property_null(php_ircclient_session_class_entry
, ZEND_STRL("nick"), ZEND_ACC_PUBLIC TSRMLS_CC
);
1252 zend_declare_property_null(php_ircclient_session_class_entry
, ZEND_STRL("user"), ZEND_ACC_PUBLIC TSRMLS_CC
);
1253 zend_declare_property_null(php_ircclient_session_class_entry
, ZEND_STRL("real"), ZEND_ACC_PUBLIC TSRMLS_CC
);
1255 zend_declare_property_null(php_ircclient_session_class_entry
, ZEND_STRL("onConnect"), ZEND_ACC_PUBLIC TSRMLS_CC
);
1256 zend_declare_property_null(php_ircclient_session_class_entry
, ZEND_STRL("onNick"), ZEND_ACC_PUBLIC TSRMLS_CC
);
1257 zend_declare_property_null(php_ircclient_session_class_entry
, ZEND_STRL("onQuit"), ZEND_ACC_PUBLIC TSRMLS_CC
);
1258 zend_declare_property_null(php_ircclient_session_class_entry
, ZEND_STRL("onJoin"), ZEND_ACC_PUBLIC TSRMLS_CC
);
1259 zend_declare_property_null(php_ircclient_session_class_entry
, ZEND_STRL("onPart"), ZEND_ACC_PUBLIC TSRMLS_CC
);
1260 zend_declare_property_null(php_ircclient_session_class_entry
, ZEND_STRL("onMode"), ZEND_ACC_PUBLIC TSRMLS_CC
);
1261 zend_declare_property_null(php_ircclient_session_class_entry
, ZEND_STRL("onUmode"), ZEND_ACC_PUBLIC TSRMLS_CC
);
1262 zend_declare_property_null(php_ircclient_session_class_entry
, ZEND_STRL("onTopic"), ZEND_ACC_PUBLIC TSRMLS_CC
);
1263 zend_declare_property_null(php_ircclient_session_class_entry
, ZEND_STRL("onKick"), ZEND_ACC_PUBLIC TSRMLS_CC
);
1264 zend_declare_property_null(php_ircclient_session_class_entry
, ZEND_STRL("onChannel"), ZEND_ACC_PUBLIC TSRMLS_CC
);
1265 zend_declare_property_null(php_ircclient_session_class_entry
, ZEND_STRL("onPrivmsg"), ZEND_ACC_PUBLIC TSRMLS_CC
);
1266 zend_declare_property_null(php_ircclient_session_class_entry
, ZEND_STRL("onNotice"), ZEND_ACC_PUBLIC TSRMLS_CC
);
1267 zend_declare_property_null(php_ircclient_session_class_entry
, ZEND_STRL("onChannelNotice"), ZEND_ACC_PUBLIC TSRMLS_CC
);
1268 zend_declare_property_null(php_ircclient_session_class_entry
, ZEND_STRL("onInvite"), ZEND_ACC_PUBLIC TSRMLS_CC
);
1269 zend_declare_property_null(php_ircclient_session_class_entry
, ZEND_STRL("onCtcpReq"), ZEND_ACC_PUBLIC TSRMLS_CC
);
1270 zend_declare_property_null(php_ircclient_session_class_entry
, ZEND_STRL("onCtcpRep"), ZEND_ACC_PUBLIC TSRMLS_CC
);
1271 zend_declare_property_null(php_ircclient_session_class_entry
, ZEND_STRL("onAction"), ZEND_ACC_PUBLIC TSRMLS_CC
);
1272 zend_declare_property_null(php_ircclient_session_class_entry
, ZEND_STRL("onUnknown"), ZEND_ACC_PUBLIC TSRMLS_CC
);
1273 zend_declare_property_null(php_ircclient_session_class_entry
, ZEND_STRL("onNumeric"), ZEND_ACC_PUBLIC TSRMLS_CC
);
1274 zend_declare_property_null(php_ircclient_session_class_entry
, ZEND_STRL("onDccChatReq"), ZEND_ACC_PUBLIC TSRMLS_CC
);
1275 zend_declare_property_null(php_ircclient_session_class_entry
, ZEND_STRL("onDccSendReq"), ZEND_ACC_PUBLIC TSRMLS_CC
);
1276 zend_declare_property_null(php_ircclient_session_class_entry
, ZEND_STRL("onError"), ZEND_ACC_PUBLIC TSRMLS_CC
);
1278 REGISTER_NS_LONG_CONSTANT("irc\\client", "RPL_WELCOME", 001, CONST_CS
|CONST_PERSISTENT
);
1279 REGISTER_NS_LONG_CONSTANT("irc\\client", "RPL_YOURHOST", 002, CONST_CS
|CONST_PERSISTENT
);
1280 REGISTER_NS_LONG_CONSTANT("irc\\client", "RPL_CREATED", 003, CONST_CS
|CONST_PERSISTENT
);
1281 REGISTER_NS_LONG_CONSTANT("irc\\client", "RPL_MYINFO", 004, CONST_CS
|CONST_PERSISTENT
);
1282 REGISTER_NS_LONG_CONSTANT("irc\\client", "RPL_BOUNCE", 005, CONST_CS
|CONST_PERSISTENT
);
1283 REGISTER_NS_LONG_CONSTANT("irc\\client", "RPL_USERHOST", 302, CONST_CS
|CONST_PERSISTENT
);
1284 REGISTER_NS_LONG_CONSTANT("irc\\client", "RPL_ISON", 303, CONST_CS
|CONST_PERSISTENT
);
1285 REGISTER_NS_LONG_CONSTANT("irc\\client", "RPL_AWAY", 301, CONST_CS
|CONST_PERSISTENT
);
1286 REGISTER_NS_LONG_CONSTANT("irc\\client", "RPL_UNAWAY", 305, CONST_CS
|CONST_PERSISTENT
);
1287 REGISTER_NS_LONG_CONSTANT("irc\\client", "RPL_NOWAWAY", 306, CONST_CS
|CONST_PERSISTENT
);
1288 REGISTER_NS_LONG_CONSTANT("irc\\client", "RPL_WHOISUSER", 311, CONST_CS
|CONST_PERSISTENT
);
1289 REGISTER_NS_LONG_CONSTANT("irc\\client", "RPL_WHOISSERVER", 312, CONST_CS
|CONST_PERSISTENT
);
1290 REGISTER_NS_LONG_CONSTANT("irc\\client", "RPL_WHOISOPERATOR", 313, CONST_CS
|CONST_PERSISTENT
);
1291 REGISTER_NS_LONG_CONSTANT("irc\\client", "RPL_WHOISIDLE", 317, CONST_CS
|CONST_PERSISTENT
);
1292 REGISTER_NS_LONG_CONSTANT("irc\\client", "RPL_ENDOFWHOIS", 318, CONST_CS
|CONST_PERSISTENT
);
1293 REGISTER_NS_LONG_CONSTANT("irc\\client", "RPL_WHOISCHANNELS", 319, CONST_CS
|CONST_PERSISTENT
);
1294 REGISTER_NS_LONG_CONSTANT("irc\\client", "RPL_WHOWASUSER", 314, CONST_CS
|CONST_PERSISTENT
);
1295 REGISTER_NS_LONG_CONSTANT("irc\\client", "RPL_ENDOFWHOWAS", 369, CONST_CS
|CONST_PERSISTENT
);
1296 REGISTER_NS_LONG_CONSTANT("irc\\client", "RPL_LIST", 322, CONST_CS
|CONST_PERSISTENT
);
1297 REGISTER_NS_LONG_CONSTANT("irc\\client", "RPL_LISTEND", 323, CONST_CS
|CONST_PERSISTENT
);
1298 REGISTER_NS_LONG_CONSTANT("irc\\client", "RPL_UNIQOPIS", 325, CONST_CS
|CONST_PERSISTENT
);
1299 REGISTER_NS_LONG_CONSTANT("irc\\client", "RPL_CHANNELMODEIS", 324, CONST_CS
|CONST_PERSISTENT
);
1300 REGISTER_NS_LONG_CONSTANT("irc\\client", "RPL_NOTOPIC", 331, CONST_CS
|CONST_PERSISTENT
);
1301 REGISTER_NS_LONG_CONSTANT("irc\\client", "RPL_TOPIC", 332, CONST_CS
|CONST_PERSISTENT
);
1302 REGISTER_NS_LONG_CONSTANT("irc\\client", "RPL_INVITING", 341, CONST_CS
|CONST_PERSISTENT
);
1303 REGISTER_NS_LONG_CONSTANT("irc\\client", "RPL_SUMMONING", 342, CONST_CS
|CONST_PERSISTENT
);
1304 REGISTER_NS_LONG_CONSTANT("irc\\client", "RPL_INVITELIST", 346, CONST_CS
|CONST_PERSISTENT
);
1305 REGISTER_NS_LONG_CONSTANT("irc\\client", "RPL_ENDOFINVITELIST", 347, CONST_CS
|CONST_PERSISTENT
);
1306 REGISTER_NS_LONG_CONSTANT("irc\\client", "RPL_EXCEPTLIST", 348, CONST_CS
|CONST_PERSISTENT
);
1307 REGISTER_NS_LONG_CONSTANT("irc\\client", "RPL_ENDOFEXCEPTLIST", 349, CONST_CS
|CONST_PERSISTENT
);
1308 REGISTER_NS_LONG_CONSTANT("irc\\client", "RPL_VERSION", 351, CONST_CS
|CONST_PERSISTENT
);
1309 REGISTER_NS_LONG_CONSTANT("irc\\client", "RPL_WHOREPLY", 352, CONST_CS
|CONST_PERSISTENT
);
1310 REGISTER_NS_LONG_CONSTANT("irc\\client", "RPL_ENDOFWHO", 315, CONST_CS
|CONST_PERSISTENT
);
1311 REGISTER_NS_LONG_CONSTANT("irc\\client", "RPL_NAMREPLY", 353, CONST_CS
|CONST_PERSISTENT
);
1312 REGISTER_NS_LONG_CONSTANT("irc\\client", "RPL_ENDOFNAMES", 366, CONST_CS
|CONST_PERSISTENT
);
1313 REGISTER_NS_LONG_CONSTANT("irc\\client", "RPL_LINKS", 364, CONST_CS
|CONST_PERSISTENT
);
1314 REGISTER_NS_LONG_CONSTANT("irc\\client", "RPL_ENDOFLINKS", 365, CONST_CS
|CONST_PERSISTENT
);
1315 REGISTER_NS_LONG_CONSTANT("irc\\client", "RPL_BANLIST", 367, CONST_CS
|CONST_PERSISTENT
);
1316 REGISTER_NS_LONG_CONSTANT("irc\\client", "RPL_ENDOFBANLIST", 368, CONST_CS
|CONST_PERSISTENT
);
1317 REGISTER_NS_LONG_CONSTANT("irc\\client", "RPL_INFO", 371, CONST_CS
|CONST_PERSISTENT
);
1318 REGISTER_NS_LONG_CONSTANT("irc\\client", "RPL_ENDOFINFO", 374, CONST_CS
|CONST_PERSISTENT
);
1319 REGISTER_NS_LONG_CONSTANT("irc\\client", "RPL_MOTDSTART", 375, CONST_CS
|CONST_PERSISTENT
);
1320 REGISTER_NS_LONG_CONSTANT("irc\\client", "RPL_MOTD", 372, CONST_CS
|CONST_PERSISTENT
);
1321 REGISTER_NS_LONG_CONSTANT("irc\\client", "RPL_ENDOFMOTD", 376, CONST_CS
|CONST_PERSISTENT
);
1322 REGISTER_NS_LONG_CONSTANT("irc\\client", "RPL_YOUREOPER", 381, CONST_CS
|CONST_PERSISTENT
);
1323 REGISTER_NS_LONG_CONSTANT("irc\\client", "RPL_REHASHING", 382, CONST_CS
|CONST_PERSISTENT
);
1324 REGISTER_NS_LONG_CONSTANT("irc\\client", "RPL_YOURESERVICE", 383, CONST_CS
|CONST_PERSISTENT
);
1325 REGISTER_NS_LONG_CONSTANT("irc\\client", "RPL_TIME", 391, CONST_CS
|CONST_PERSISTENT
);
1326 REGISTER_NS_LONG_CONSTANT("irc\\client", "RPL_USERSSTART", 392, CONST_CS
|CONST_PERSISTENT
);
1327 REGISTER_NS_LONG_CONSTANT("irc\\client", "RPL_USERS", 393, CONST_CS
|CONST_PERSISTENT
);
1328 REGISTER_NS_LONG_CONSTANT("irc\\client", "RPL_ENDOFUSERS", 394, CONST_CS
|CONST_PERSISTENT
);
1329 REGISTER_NS_LONG_CONSTANT("irc\\client", "RPL_NOUSERS", 395, CONST_CS
|CONST_PERSISTENT
);
1330 REGISTER_NS_LONG_CONSTANT("irc\\client", "RPL_TRACELINK", 200, CONST_CS
|CONST_PERSISTENT
);
1331 REGISTER_NS_LONG_CONSTANT("irc\\client", "RPL_TRACECONNECTING", 201, CONST_CS
|CONST_PERSISTENT
);
1332 REGISTER_NS_LONG_CONSTANT("irc\\client", "RPL_TRACEHANDSHAKE", 202, CONST_CS
|CONST_PERSISTENT
);
1333 REGISTER_NS_LONG_CONSTANT("irc\\client", "RPL_TRACEUNKNOWN", 203, CONST_CS
|CONST_PERSISTENT
);
1334 REGISTER_NS_LONG_CONSTANT("irc\\client", "RPL_TRACEOPERATOR", 204, CONST_CS
|CONST_PERSISTENT
);
1335 REGISTER_NS_LONG_CONSTANT("irc\\client", "RPL_TRACEUSER", 205, CONST_CS
|CONST_PERSISTENT
);
1336 REGISTER_NS_LONG_CONSTANT("irc\\client", "RPL_TRACESERVER", 206, CONST_CS
|CONST_PERSISTENT
);
1337 REGISTER_NS_LONG_CONSTANT("irc\\client", "RPL_TRACESERVICE", 207, CONST_CS
|CONST_PERSISTENT
);
1338 REGISTER_NS_LONG_CONSTANT("irc\\client", "RPL_TRACENEWTYPE", 208, CONST_CS
|CONST_PERSISTENT
);
1339 REGISTER_NS_LONG_CONSTANT("irc\\client", "RPL_TRACECLASS", 209, CONST_CS
|CONST_PERSISTENT
);
1340 REGISTER_NS_LONG_CONSTANT("irc\\client", "RPL_TRACELOG", 261, CONST_CS
|CONST_PERSISTENT
);
1341 REGISTER_NS_LONG_CONSTANT("irc\\client", "RPL_TRACEEND", 262, CONST_CS
|CONST_PERSISTENT
);
1342 REGISTER_NS_LONG_CONSTANT("irc\\client", "RPL_STATSLINKINFO", 211, CONST_CS
|CONST_PERSISTENT
);
1343 REGISTER_NS_LONG_CONSTANT("irc\\client", "RPL_STATSCOMMANDS", 212, CONST_CS
|CONST_PERSISTENT
);
1344 REGISTER_NS_LONG_CONSTANT("irc\\client", "RPL_ENDOFSTATS", 219, CONST_CS
|CONST_PERSISTENT
);
1345 REGISTER_NS_LONG_CONSTANT("irc\\client", "RPL_STATSUPTIME", 242, CONST_CS
|CONST_PERSISTENT
);
1346 REGISTER_NS_LONG_CONSTANT("irc\\client", "RPL_STATSOLINE", 243, CONST_CS
|CONST_PERSISTENT
);
1347 REGISTER_NS_LONG_CONSTANT("irc\\client", "RPL_UMODEIS", 221, CONST_CS
|CONST_PERSISTENT
);
1348 REGISTER_NS_LONG_CONSTANT("irc\\client", "RPL_SERVLIST", 234, CONST_CS
|CONST_PERSISTENT
);
1349 REGISTER_NS_LONG_CONSTANT("irc\\client", "RPL_SERVLISTEND", 235, CONST_CS
|CONST_PERSISTENT
);
1350 REGISTER_NS_LONG_CONSTANT("irc\\client", "RPL_LUSERCLIENT", 251, CONST_CS
|CONST_PERSISTENT
);
1351 REGISTER_NS_LONG_CONSTANT("irc\\client", "RPL_LUSEROP", 252, CONST_CS
|CONST_PERSISTENT
);
1352 REGISTER_NS_LONG_CONSTANT("irc\\client", "RPL_LUSERUNKNOWN", 253, CONST_CS
|CONST_PERSISTENT
);
1353 REGISTER_NS_LONG_CONSTANT("irc\\client", "RPL_LUSERCHANNELS", 254, CONST_CS
|CONST_PERSISTENT
);
1354 REGISTER_NS_LONG_CONSTANT("irc\\client", "RPL_LUSERME", 255, CONST_CS
|CONST_PERSISTENT
);
1355 REGISTER_NS_LONG_CONSTANT("irc\\client", "RPL_ADMINME", 256, CONST_CS
|CONST_PERSISTENT
);
1356 REGISTER_NS_LONG_CONSTANT("irc\\client", "RPL_ADMINLOC1", 257, CONST_CS
|CONST_PERSISTENT
);
1357 REGISTER_NS_LONG_CONSTANT("irc\\client", "RPL_ADMINLOC2", 258, CONST_CS
|CONST_PERSISTENT
);
1358 REGISTER_NS_LONG_CONSTANT("irc\\client", "RPL_ADMINEMAIL", 259, CONST_CS
|CONST_PERSISTENT
);
1359 REGISTER_NS_LONG_CONSTANT("irc\\client", "RPL_TRYAGAIN", 263, CONST_CS
|CONST_PERSISTENT
);
1360 REGISTER_NS_LONG_CONSTANT("irc\\client", "ERR_NOSUCHNICK", 401, CONST_CS
|CONST_PERSISTENT
);
1361 REGISTER_NS_LONG_CONSTANT("irc\\client", "ERR_NOSUCHSERVER", 402, CONST_CS
|CONST_PERSISTENT
);
1362 REGISTER_NS_LONG_CONSTANT("irc\\client", "ERR_NOSUCHCHANNEL", 403, CONST_CS
|CONST_PERSISTENT
);
1363 REGISTER_NS_LONG_CONSTANT("irc\\client", "ERR_CANNOTSENDTOCHAN", 404, CONST_CS
|CONST_PERSISTENT
);
1364 REGISTER_NS_LONG_CONSTANT("irc\\client", "ERR_TOOMANYCHANNELS", 405, CONST_CS
|CONST_PERSISTENT
);
1365 REGISTER_NS_LONG_CONSTANT("irc\\client", "ERR_WASNOSUCHNICK", 406, CONST_CS
|CONST_PERSISTENT
);
1366 REGISTER_NS_LONG_CONSTANT("irc\\client", "ERR_TOOMANYTARGETS", 407, CONST_CS
|CONST_PERSISTENT
);
1367 REGISTER_NS_LONG_CONSTANT("irc\\client", "ERR_NOSUCHSERVICE", 408, CONST_CS
|CONST_PERSISTENT
);
1368 REGISTER_NS_LONG_CONSTANT("irc\\client", "ERR_NOORIGIN", 409, CONST_CS
|CONST_PERSISTENT
);
1369 REGISTER_NS_LONG_CONSTANT("irc\\client", "ERR_NORECIPIENT", 411, CONST_CS
|CONST_PERSISTENT
);
1370 REGISTER_NS_LONG_CONSTANT("irc\\client", "ERR_NOTEXTTOSEND", 412, CONST_CS
|CONST_PERSISTENT
);
1371 REGISTER_NS_LONG_CONSTANT("irc\\client", "ERR_NOTOPLEVEL", 413, CONST_CS
|CONST_PERSISTENT
);
1372 REGISTER_NS_LONG_CONSTANT("irc\\client", "ERR_WILDTOPLEVEL", 414, CONST_CS
|CONST_PERSISTENT
);
1373 REGISTER_NS_LONG_CONSTANT("irc\\client", "ERR_BADMASK", 415, CONST_CS
|CONST_PERSISTENT
);
1374 REGISTER_NS_LONG_CONSTANT("irc\\client", "ERR_UNKNOWNCOMMAND", 421, CONST_CS
|CONST_PERSISTENT
);
1375 REGISTER_NS_LONG_CONSTANT("irc\\client", "ERR_NOMOTD", 422, CONST_CS
|CONST_PERSISTENT
);
1376 REGISTER_NS_LONG_CONSTANT("irc\\client", "ERR_NOADMININFO", 423, CONST_CS
|CONST_PERSISTENT
);
1377 REGISTER_NS_LONG_CONSTANT("irc\\client", "ERR_FILEERROR", 424, CONST_CS
|CONST_PERSISTENT
);
1378 REGISTER_NS_LONG_CONSTANT("irc\\client", "ERR_NONICKNAMEGIVEN", 431, CONST_CS
|CONST_PERSISTENT
);
1379 REGISTER_NS_LONG_CONSTANT("irc\\client", "ERR_ERRONEUSNICKNAME", 432, CONST_CS
|CONST_PERSISTENT
);
1380 REGISTER_NS_LONG_CONSTANT("irc\\client", "ERR_NICKNAMEINUSE", 433, CONST_CS
|CONST_PERSISTENT
);
1381 REGISTER_NS_LONG_CONSTANT("irc\\client", "ERR_NICKCOLLISION", 436, CONST_CS
|CONST_PERSISTENT
);
1382 REGISTER_NS_LONG_CONSTANT("irc\\client", "ERR_UNAVAILRESOURCE", 437, CONST_CS
|CONST_PERSISTENT
);
1383 REGISTER_NS_LONG_CONSTANT("irc\\client", "ERR_USERNOTINCHANNEL", 441, CONST_CS
|CONST_PERSISTENT
);
1384 REGISTER_NS_LONG_CONSTANT("irc\\client", "ERR_NOTONCHANNEL", 442, CONST_CS
|CONST_PERSISTENT
);
1385 REGISTER_NS_LONG_CONSTANT("irc\\client", "ERR_USERONCHANNEL", 443, CONST_CS
|CONST_PERSISTENT
);
1386 REGISTER_NS_LONG_CONSTANT("irc\\client", "ERR_NOLOGIN", 444, CONST_CS
|CONST_PERSISTENT
);
1387 REGISTER_NS_LONG_CONSTANT("irc\\client", "ERR_SUMMONDISABLED", 445, CONST_CS
|CONST_PERSISTENT
);
1388 REGISTER_NS_LONG_CONSTANT("irc\\client", "ERR_USERSDISABLED", 446, CONST_CS
|CONST_PERSISTENT
);
1389 REGISTER_NS_LONG_CONSTANT("irc\\client", "ERR_NOTREGISTERED", 451, CONST_CS
|CONST_PERSISTENT
);
1390 REGISTER_NS_LONG_CONSTANT("irc\\client", "ERR_NEEDMOREPARAMS", 461, CONST_CS
|CONST_PERSISTENT
);
1391 REGISTER_NS_LONG_CONSTANT("irc\\client", "ERR_ALREADYREGISTRED", 462, CONST_CS
|CONST_PERSISTENT
);
1392 REGISTER_NS_LONG_CONSTANT("irc\\client", "ERR_NOPERMFORHOST", 463, CONST_CS
|CONST_PERSISTENT
);
1393 REGISTER_NS_LONG_CONSTANT("irc\\client", "ERR_PASSWDMISMATCH", 464, CONST_CS
|CONST_PERSISTENT
);
1394 REGISTER_NS_LONG_CONSTANT("irc\\client", "ERR_YOUREBANNEDCREEP", 465, CONST_CS
|CONST_PERSISTENT
);
1395 REGISTER_NS_LONG_CONSTANT("irc\\client", "ERR_YOUWILLBEBANNED", 466, CONST_CS
|CONST_PERSISTENT
);
1396 REGISTER_NS_LONG_CONSTANT("irc\\client", "ERR_KEYSET", 467, CONST_CS
|CONST_PERSISTENT
);
1397 REGISTER_NS_LONG_CONSTANT("irc\\client", "ERR_CHANNELISFULL", 471, CONST_CS
|CONST_PERSISTENT
);
1398 REGISTER_NS_LONG_CONSTANT("irc\\client", "ERR_UNKNOWNMODE", 472, CONST_CS
|CONST_PERSISTENT
);
1399 REGISTER_NS_LONG_CONSTANT("irc\\client", "ERR_INVITEONLYCHAN", 473, CONST_CS
|CONST_PERSISTENT
);
1400 REGISTER_NS_LONG_CONSTANT("irc\\client", "ERR_BANNEDFROMCHAN", 474, CONST_CS
|CONST_PERSISTENT
);
1401 REGISTER_NS_LONG_CONSTANT("irc\\client", "ERR_BADCHANNELKEY", 475, CONST_CS
|CONST_PERSISTENT
);
1402 REGISTER_NS_LONG_CONSTANT("irc\\client", "ERR_BADCHANMASK", 476, CONST_CS
|CONST_PERSISTENT
);
1403 REGISTER_NS_LONG_CONSTANT("irc\\client", "ERR_NOCHANMODES", 477, CONST_CS
|CONST_PERSISTENT
);
1404 REGISTER_NS_LONG_CONSTANT("irc\\client", "ERR_BANLISTFULL", 478, CONST_CS
|CONST_PERSISTENT
);
1405 REGISTER_NS_LONG_CONSTANT("irc\\client", "ERR_NOPRIVILEGES", 481, CONST_CS
|CONST_PERSISTENT
);
1406 REGISTER_NS_LONG_CONSTANT("irc\\client", "ERR_CHANOPRIVSNEEDED", 482, CONST_CS
|CONST_PERSISTENT
);
1407 REGISTER_NS_LONG_CONSTANT("irc\\client", "ERR_CANTKILLSERVER", 483, CONST_CS
|CONST_PERSISTENT
);
1408 REGISTER_NS_LONG_CONSTANT("irc\\client", "ERR_RESTRICTED", 484, CONST_CS
|CONST_PERSISTENT
);
1409 REGISTER_NS_LONG_CONSTANT("irc\\client", "ERR_UNIQOPPRIVSNEEDED", 485, CONST_CS
|CONST_PERSISTENT
);
1410 REGISTER_NS_LONG_CONSTANT("irc\\client", "ERR_NOOPERHOST", 491, CONST_CS
|CONST_PERSISTENT
);
1411 REGISTER_NS_LONG_CONSTANT("irc\\client", "ERR_UMODEUNKNOWNFLAG", 501, CONST_CS
|CONST_PERSISTENT
);
1412 REGISTER_NS_LONG_CONSTANT("irc\\client", "ERR_USERSDONTMATCH", 502, CONST_CS
|CONST_PERSISTENT
);
1417 PHP_MINFO_FUNCTION(ircclient
)
1419 unsigned int high
, low
;
1421 char *lt16
= "<=1.6";
1423 irc_get_version(&high
, &low
);
1424 spprintf(&version
[1], 0, "%u.%u", high
, low
);
1425 #if PHP_IPHP_IRCCLIENT_LIBIRCCLIENT_VERSION_HIGH
1426 spprintf(&version
[0], 0, "%u.%u", PHP_IRCCLIENT_LIBIRCCLIENT_VERSION_HIGH
, PHP_IRCCLIENT_LIBIRCCLIENT_VERSION_LOW
);
1428 /* version <= 1.6 doesn't expose its version */
1431 php_info_print_table_start();
1432 php_info_print_table_header(2, "IRC client support", "enabled");
1433 php_info_print_table_row(2, "Version", PHP_IRCCLIENT_VERSION
);
1434 php_info_print_table_end();
1436 php_info_print_table_start();
1437 php_info_print_table_header(3, "Used Library", "compiled", "linked");
1438 php_info_print_table_row(3,
1443 php_info_print_table_end();
1445 if (version
[0] != lt16
) {