2 +----------------------------------------------------------------------+
4 +----------------------------------------------------------------------+
5 | Copyright (c) 1997-2011 The PHP Group |
6 +----------------------------------------------------------------------+
7 | This source file is subject to version 3.01 of the PHP license, |
8 | that is bundled with this package in the file LICENSE, and is |
9 | available through the world-wide-web at the following url: |
10 | http://www.php.net/license/3_01.txt |
11 | If you did not receive a copy of the PHP license and are unable to |
12 | obtain it through the world-wide-web, please send a note to |
13 | license@php.net so we can mail you a copy immediately. |
14 +----------------------------------------------------------------------+
16 +----------------------------------------------------------------------+
19 /* $Id: header 310447 2011-04-23 21:14:10Z bjori $ */
27 #include "ext/standard/php_string.h"
28 #include "ext/standard/info.h"
30 #include "zend_interfaces.h"
32 #include "php_ircclient.h"
35 #include <libircclient/libircclient.h>
37 PHP_FUNCTION(parse_origin
)
42 if (SUCCESS
== zend_parse_parameters(ZEND_NUM_ARGS() TSRMLS_CC
, "s", &origin_str
, &origin_len
)) {
43 zval
*znick
, *zuser
, *zhost
;
47 MAKE_STD_ZVAL(znick
); ZVAL_NULL(znick
);
48 MAKE_STD_ZVAL(zuser
); ZVAL_NULL(zuser
);
49 MAKE_STD_ZVAL(zhost
); ZVAL_NULL(zhost
);
51 for (ptr
= origin_str
; *ptr
; ptr
+= siz
+ 1) {
52 if ((siz
= strcspn(ptr
, "!@"))) {
55 ZVAL_STRINGL(znick
, ptr
, siz
, 1);
58 ZVAL_STRINGL(zuser
, ptr
, siz
, 1);
61 ZVAL_STRINGL(zhost
, ptr
, siz
, 1);
70 array_init(return_value
);
71 add_assoc_zval_ex(return_value
, ZEND_STRS("nick"), znick
);
72 add_assoc_zval_ex(return_value
, ZEND_STRS("user"), zuser
);
73 add_assoc_zval_ex(return_value
, ZEND_STRS("host"), zhost
);
78 const zend_function_entry php_ircclient_function_entry
[] = {
79 ZEND_NS_FENTRY("irc\\client", parse_origin
, ZEND_FN(parse_origin
), NULL
, 0)
83 zend_module_entry ircclient_module_entry
= {
84 STANDARD_MODULE_HEADER
,
86 php_ircclient_function_entry
,
88 PHP_MSHUTDOWN(ircclient
),
90 PHP_RSHUTDOWN(ircclient
),
93 STANDARD_MODULE_PROPERTIES
97 #ifdef COMPILE_DL_IRCCLIENT
98 ZEND_GET_MODULE(ircclient
)
101 static void php_ircclient_event_callback(irc_session_t
*session
, const char *event
, const char *origin
, const char **params
, unsigned int count
);
102 static void php_ircclient_event_code_callback(irc_session_t
*session
, unsigned int event
, const char *origin
, const char **params
, unsigned int count
);
103 static void php_ircclient_event_dcc_chat_callback(irc_session_t
*session
, const char *nick
, const char *addr
, irc_dcc_t dccid
);
104 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
);
106 static irc_callbacks_t php_ircclient_callbacks
= {
107 .event_connect
= php_ircclient_event_callback
,
108 .event_nick
= php_ircclient_event_callback
,
109 .event_quit
= php_ircclient_event_callback
,
110 .event_join
= php_ircclient_event_callback
,
111 .event_part
= php_ircclient_event_callback
,
112 .event_mode
= php_ircclient_event_callback
,
113 .event_umode
= php_ircclient_event_callback
,
114 .event_topic
= php_ircclient_event_callback
,
115 .event_kick
= php_ircclient_event_callback
,
116 .event_channel
= php_ircclient_event_callback
,
117 .event_privmsg
= php_ircclient_event_callback
,
118 .event_notice
= php_ircclient_event_callback
,
119 /* .event_channel_notice = php_ircclient_event_callback, */
120 .event_invite
= php_ircclient_event_callback
,
121 .event_ctcp_req
= php_ircclient_event_callback
,
122 .event_ctcp_rep
= php_ircclient_event_callback
,
123 .event_ctcp_action
= php_ircclient_event_callback
,
124 .event_unknown
= php_ircclient_event_callback
,
125 .event_numeric
= php_ircclient_event_code_callback
,
126 .event_dcc_chat_req
= php_ircclient_event_dcc_chat_callback
,
127 .event_dcc_send_req
= php_ircclient_event_dcc_send_callback
130 typedef struct php_ircclient_session_object
{
132 zend_object_value ov
;
137 } php_ircclient_session_object_t
;
139 zend_class_entry
*php_ircclient_session_class_entry
;
141 void php_ircclient_session_object_free(void *object TSRMLS_DC
)
143 php_ircclient_session_object_t
*o
= (php_ircclient_session_object_t
*) object
;
146 irc_destroy_session(o
->sess
);
149 zend_object_std_dtor((zend_object
*) o TSRMLS_CC
);
153 zend_object_value
php_ircclient_session_object_create(zend_class_entry
*ce TSRMLS_DC
)
155 php_ircclient_session_object_t
*obj
;
157 obj
= ecalloc(1, sizeof(*obj
));
158 #ifdef ZEND_ENGINE_2_4
159 zend_object_std_init((zend_object
*) obj
, ce TSRMLS_CC
);
160 object_properties_init((zend_object
*) obj
, ce
);
163 ALLOC_HASHTABLE(obj
->zo
.properties
);
164 zend_hash_init(obj
->zo
.properties
, zend_hash_num_elements(&ce
->default_properties
), NULL
, ZVAL_PTR_DTOR
, 0);
165 zend_hash_copy(obj
->zo
.properties
, &ce
->default_properties
, (copy_ctor_func_t
) zval_add_ref
, NULL
, sizeof(zval
*));
168 obj
->sess
= irc_create_session(&php_ircclient_callbacks
);
169 irc_set_ctx(obj
->sess
, obj
);
170 TSRMLS_SET_CTX(obj
->ts
);
172 obj
->ov
.handle
= zend_objects_store_put(obj
, NULL
, php_ircclient_session_object_free
, NULL TSRMLS_CC
);
173 obj
->ov
.handlers
= zend_get_std_object_handlers();
178 static void php_ircclient_event_callback(irc_session_t
*session
, const char *event
, const char *origin
, const char **params
, unsigned int count
)
183 php_ircclient_session_object_t
*obj
= irc_get_ctx(session
);
184 TSRMLS_FETCH_FROM_CTX(obj
->ts
);
186 fn_str
= emalloc(strlen(event
) + 2 + 1);
192 fn_str
[fn_len
++] = tolower(*event
);
197 Z_TYPE_P(zo
) = IS_OBJECT
;
198 zo
->value
.obj
= obj
->ov
;
199 zend_objects_store_add_ref(zo TSRMLS_CC
);
203 ZVAL_STRING(zr
, estrdup(origin
), 0);
210 for (i
= 0; i
< count
; ++i
) {
211 add_next_index_string(za
, estrdup(params
[i
]), 0);
214 zend_call_method(&zo
, NULL
, NULL
, fn_str
, fn_len
- 1, NULL
, 2, zr
, za TSRMLS_CC
);
223 static void php_ircclient_event_code_callback(irc_session_t
*session
, unsigned int event
, const char *origin
, const char **params
, unsigned int count
)
226 zval
*zo
, *zr
, *zp
, *za
;
227 php_ircclient_session_object_t
*obj
= irc_get_ctx(session
);
228 TSRMLS_FETCH_FROM_CTX(obj
->ts
);
231 Z_TYPE_P(zo
) = IS_OBJECT
;
232 zo
->value
.obj
= obj
->ov
;
233 zend_objects_store_add_ref(zo TSRMLS_CC
);
237 ZVAL_STRING(zr
, estrdup(origin
), 0);
244 add_assoc_long_ex(za
, ZEND_STRS("event"), event
);
248 for (i
= 0; i
< count
; ++i
) {
249 add_next_index_string(zp
, estrdup(params
[i
]), 0);
251 add_assoc_zval_ex(za
, ZEND_STRS("params"), zp
);
253 zend_call_method(&zo
, NULL
, NULL
, ZEND_STRL("onnumeric"), NULL
, 2, zr
, za TSRMLS_CC
);
262 static void php_ircclient_event_dcc_chat_callback(irc_session_t
*session
, const char *nick
, const char *addr
, irc_dcc_t dccid
)
265 php_ircclient_session_object_t
*obj
= irc_get_ctx(session
);
266 TSRMLS_FETCH_FROM_CTX(obj
->ts
);
269 Z_TYPE_P(zo
) = IS_OBJECT
;
270 zo
->value
.obj
= obj
->ov
;
271 zend_objects_store_add_ref(zo TSRMLS_CC
);
275 add_assoc_string_ex(zp
, ZEND_STRS("nick"), estrdup(nick
), 0);
276 add_assoc_string_ex(zp
, ZEND_STRS("remote_addr"), estrdup(addr
), 0);
277 add_assoc_long_ex(zp
, ZEND_STRS("dccid"), dccid
);
279 zend_call_method(&zo
, NULL
, NULL
, ZEND_STRS("ondccchatreq"), NULL
, 1, zp
, NULL TSRMLS_CC
);
285 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
)
288 php_ircclient_session_object_t
*obj
= irc_get_ctx(session
);
289 TSRMLS_FETCH_FROM_CTX(obj
->ts
);
292 Z_TYPE_P(zo
) = IS_OBJECT
;
293 zo
->value
.obj
= obj
->ov
;
294 zend_objects_store_add_ref(zo TSRMLS_CC
);
298 add_assoc_string_ex(zp
, ZEND_STRS("nick"), estrdup(nick
), 0);
299 add_assoc_string_ex(zp
, ZEND_STRS("remote_addr"), estrdup(addr
), 0);
300 add_assoc_string_ex(zp
, ZEND_STRS("filename"), estrdup(filename
), 0);
301 add_assoc_long_ex(zp
, ZEND_STRS("filesize"), size
);
302 add_assoc_long_ex(zp
, ZEND_STRS("dccid"), dccid
);
304 zend_call_method(&zo
, NULL
, NULL
, ZEND_STRL("ondccsendreq"), NULL
, 1, zp
, NULL TSRMLS_CC
);
310 PHP_METHOD(Session
, __construct
)
312 char *nick_str
= NULL
, *user_str
= NULL
, *real_str
= NULL
;
313 int nick_len
= 0, user_len
= 0, real_len
= 0;
315 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
)) {
316 if (nick_str
&& nick_len
) {
317 zend_update_property_stringl(php_ircclient_session_class_entry
, getThis(), ZEND_STRL("nick"), nick_str
, nick_len TSRMLS_CC
);
319 if (nick_str
&& nick_len
) {
320 zend_update_property_stringl(php_ircclient_session_class_entry
, getThis(), ZEND_STRL("nick"), nick_str
, nick_len TSRMLS_CC
);
322 if (real_str
&& real_len
) {
323 zend_update_property_stringl(php_ircclient_session_class_entry
, getThis(), ZEND_STRL("real"), real_str
, real_len TSRMLS_CC
);
328 PHP_METHOD(Session
, doConnect
)
330 char *server_str
, *passwd_str
= NULL
;
331 int server_len
, passwd_len
= 0;
335 if (SUCCESS
== zend_parse_parameters(ZEND_NUM_ARGS() TSRMLS_CC
, "bs|ls!", &ip6
, &server_str
, &server_len
, &port
, &passwd_str
, &passwd_len
)) {
336 php_ircclient_session_object_t
*obj
= zend_object_store_get_object(getThis() TSRMLS_CC
);
337 char *nick
= NULL
, *user
= NULL
, *real
= NULL
;
338 zval
*znick
, *zuser
, *zreal
, *tmp
;
340 znick
= zend_read_property(php_ircclient_session_class_entry
, getThis(), ZEND_STRL("nick"), 0 TSRMLS_CC
);
341 SEPARATE_ARG_IF_REF(znick
);
342 convert_to_string_ex(&znick
);
343 if (Z_STRLEN_P(znick
)) {
344 nick
= Z_STRVAL_P(znick
);
346 zuser
= zend_read_property(php_ircclient_session_class_entry
, getThis(), ZEND_STRL("user"), 0 TSRMLS_CC
);
347 SEPARATE_ARG_IF_REF(zuser
);
348 convert_to_string_ex(&zuser
);
349 if (Z_STRLEN_P(zuser
)) {
350 user
= Z_STRVAL_P(zuser
);
352 zreal
= zend_read_property(php_ircclient_session_class_entry
, getThis(), ZEND_STRL("real"), 0 TSRMLS_CC
);
353 SEPARATE_ARG_IF_REF(zreal
);
354 convert_to_string_ex(&zreal
);
355 if (Z_STRLEN_P(zreal
)) {
356 real
= Z_STRVAL_P(zreal
);
360 if (0 != irc_connect6(obj
->sess
, server_str
, port
, passwd_str
, nick
, user
, real
)) {
361 php_error_docref(NULL TSRMLS_CC
, E_WARNING
, "%s", irc_strerror(irc_errno(obj
->sess
)));
364 } else if (0 != irc_connect(obj
->sess
, server_str
, port
, passwd_str
, nick
, user
, real
)) {
365 php_error_docref(NULL TSRMLS_CC
, E_WARNING
, "%s", irc_strerror(irc_errno(obj
->sess
)));
371 zval_ptr_dtor(&znick
);
372 zval_ptr_dtor(&zuser
);
373 zval_ptr_dtor(&zreal
);
377 PHP_METHOD(Session
, isConnected
)
379 if (SUCCESS
== zend_parse_parameters_none()) {
380 php_ircclient_session_object_t
*obj
= zend_object_store_get_object(getThis() TSRMLS_CC
);
382 RETURN_BOOL(irc_is_connected(obj
->sess
));
386 PHP_METHOD(Session
, disconnect
)
388 if (SUCCESS
== zend_parse_parameters_none()) {
389 php_ircclient_session_object_t
*obj
= zend_object_store_get_object(getThis() TSRMLS_CC
);
391 irc_disconnect(obj
->sess
);
395 PHP_METHOD(Session
, run
)
397 if (SUCCESS
== zend_parse_parameters_none()) {
398 php_ircclient_session_object_t
*obj
= zend_object_store_get_object(getThis() TSRMLS_CC
);
400 if (0 != irc_run(obj
->sess
)) {
401 int err
= irc_errno(obj
->sess
);
404 php_error_docref(NULL TSRMLS_CC
, E_WARNING
, "%s", irc_strerror(err
));
410 PHP_METHOD(Session
, setOption
)
415 if (SUCCESS
== zend_parse_parameters(ZEND_NUM_ARGS() TSRMLS_CC
, "l|b", &opt
, &onoff
)) {
416 php_ircclient_session_object_t
*obj
= zend_object_store_get_object(getThis() TSRMLS_CC
);
419 irc_option_set(obj
->sess
, opt
);
421 irc_option_reset(obj
->sess
, opt
);
426 PHP_METHOD(Session
, doJoin
)
428 char *chan_str
, *key_str
= NULL
;
429 int chan_len
, key_len
= 0;
431 if (SUCCESS
== zend_parse_parameters(ZEND_NUM_ARGS() TSRMLS_CC
, "s|s!", &chan_str
, &chan_len
, &key_str
, &key_len
)) {
432 php_ircclient_session_object_t
*obj
= zend_object_store_get_object(getThis() TSRMLS_CC
);
434 if (0 != irc_cmd_join(obj
->sess
, chan_str
, key_str
)) {
435 php_error_docref(NULL TSRMLS_CC
, E_WARNING
, "%s", irc_strerror(irc_errno(obj
->sess
)));
443 PHP_METHOD(Session
, doPart
)
448 if (SUCCESS
== zend_parse_parameters(ZEND_NUM_ARGS() TSRMLS_CC
, "s", &chan_str
, &chan_len
)) {
449 php_ircclient_session_object_t
*obj
= zend_object_store_get_object(getThis() TSRMLS_CC
);
451 if (0 != irc_cmd_part(obj
->sess
, chan_str
)) {
452 php_error_docref(NULL TSRMLS_CC
, E_WARNING
, "%s", irc_strerror(irc_errno(obj
->sess
)));
460 PHP_METHOD(Session
, doInvite
)
462 char *chan_str
, *nick_str
;
463 int chan_len
, nick_len
;
465 if (SUCCESS
== zend_parse_parameters(ZEND_NUM_ARGS() TSRMLS_CC
, "ss", &nick_str
, &nick_len
, &chan_str
, &chan_len
)) {
466 php_ircclient_session_object_t
*obj
= zend_object_store_get_object(getThis() TSRMLS_CC
);
468 if (0 != irc_cmd_invite(obj
->sess
, nick_str
, chan_str
)) {
469 php_error_docref(NULL TSRMLS_CC
, E_WARNING
, "%s", irc_strerror(irc_errno(obj
->sess
)));
477 PHP_METHOD(Session
, doNames
)
482 if (SUCCESS
== zend_parse_parameters(ZEND_NUM_ARGS() TSRMLS_CC
, "s", &chan_str
, &chan_len
)) {
483 php_ircclient_session_object_t
*obj
= zend_object_store_get_object(getThis() TSRMLS_CC
);
485 if (0 != irc_cmd_names(obj
->sess
, chan_str
)) {
486 php_error_docref(NULL TSRMLS_CC
, E_WARNING
, "%s", irc_strerror(irc_errno(obj
->sess
)));
494 PHP_METHOD(Session
, doList
)
499 if (SUCCESS
== zend_parse_parameters(ZEND_NUM_ARGS() TSRMLS_CC
, "s", &chan_str
, &chan_len
)) {
500 php_ircclient_session_object_t
*obj
= zend_object_store_get_object(getThis() TSRMLS_CC
);
502 if (0 != irc_cmd_list(obj
->sess
, chan_str
)) {
503 php_error_docref(NULL TSRMLS_CC
, E_WARNING
, "%s", irc_strerror(irc_errno(obj
->sess
)));
511 PHP_METHOD(Session
, doTopic
)
513 char *chan_str
, *topic_str
= NULL
;
514 int chan_len
, topic_len
;
516 if (SUCCESS
== zend_parse_parameters(ZEND_NUM_ARGS() TSRMLS_CC
, "s|s!", &chan_str
, &chan_len
, &topic_str
, &topic_len
)) {
517 php_ircclient_session_object_t
*obj
= zend_object_store_get_object(getThis() TSRMLS_CC
);
519 if (0 != irc_cmd_topic(obj
->sess
, chan_str
, topic_str
)) {
520 php_error_docref(NULL TSRMLS_CC
, E_WARNING
, "%s", irc_strerror(irc_errno(obj
->sess
)));
528 PHP_METHOD(Session
, doChannelMode
)
530 char *chan_str
, *mode_str
= NULL
;
531 int chan_len
, mode_len
;
533 if (SUCCESS
== zend_parse_parameters(ZEND_NUM_ARGS() TSRMLS_CC
, "s|s!", &chan_str
, &chan_len
, &mode_str
, &mode_len
)) {
534 php_ircclient_session_object_t
*obj
= zend_object_store_get_object(getThis() TSRMLS_CC
);
536 if (0 != irc_cmd_topic(obj
->sess
, chan_str
, mode_str
)) {
537 php_error_docref(NULL TSRMLS_CC
, E_WARNING
, "%s", irc_strerror(irc_errno(obj
->sess
)));
545 PHP_METHOD(Session
, doKick
)
547 char *chan_str
, *nick_str
, *reason_str
= NULL
;
548 int chan_len
, nick_len
, reason_len
;
550 if (SUCCESS
== zend_parse_parameters(ZEND_NUM_ARGS() TSRMLS_CC
, "ss|s!", &nick_str
, &nick_len
, &chan_str
, &chan_len
, &reason_str
, &reason_len
)) {
551 php_ircclient_session_object_t
*obj
= zend_object_store_get_object(getThis() TSRMLS_CC
);
553 if (0 != irc_cmd_kick(obj
->sess
, nick_str
, chan_str
, reason_str
)) {
554 php_error_docref(NULL TSRMLS_CC
, E_WARNING
, "%s", irc_strerror(irc_errno(obj
->sess
)));
562 PHP_METHOD(Session
, doMsg
)
564 char *dest_str
, *msg_str
;
565 int dest_len
, msg_len
;
567 if (SUCCESS
== zend_parse_parameters(ZEND_NUM_ARGS() TSRMLS_CC
, "ss", &dest_str
, &dest_len
, &msg_str
, &msg_len
)) {
568 php_ircclient_session_object_t
*obj
= zend_object_store_get_object(getThis() TSRMLS_CC
);
570 if (0 != irc_cmd_msg(obj
->sess
, dest_str
, msg_str
)) {
571 php_error_docref(NULL TSRMLS_CC
, E_WARNING
, "%s", irc_strerror(irc_errno(obj
->sess
)));
579 PHP_METHOD(Session
, doMe
)
581 char *dest_str
, *msg_str
;
582 int dest_len
, msg_len
;
584 if (SUCCESS
== zend_parse_parameters(ZEND_NUM_ARGS() TSRMLS_CC
, "ss", &dest_str
, &dest_len
, &msg_str
, &msg_len
)) {
585 php_ircclient_session_object_t
*obj
= zend_object_store_get_object(getThis() TSRMLS_CC
);
587 if (0 != irc_cmd_me(obj
->sess
, dest_str
, msg_str
)) {
588 php_error_docref(NULL TSRMLS_CC
, E_WARNING
, "%s", irc_strerror(irc_errno(obj
->sess
)));
596 PHP_METHOD(Session
, doNotice
)
598 char *dest_str
, *msg_str
;
599 int dest_len
, msg_len
;
601 if (SUCCESS
== zend_parse_parameters(ZEND_NUM_ARGS() TSRMLS_CC
, "ss", &dest_str
, &dest_len
, &msg_str
, &msg_len
)) {
602 php_ircclient_session_object_t
*obj
= zend_object_store_get_object(getThis() TSRMLS_CC
);
604 if (0 != irc_cmd_notice(obj
->sess
, dest_str
, msg_str
)) {
605 php_error_docref(NULL TSRMLS_CC
, E_WARNING
, "%s", irc_strerror(irc_errno(obj
->sess
)));
613 PHP_METHOD(Session
, doQuit
)
615 char *reason_str
= NULL
;
618 if (SUCCESS
== zend_parse_parameters(ZEND_NUM_ARGS() TSRMLS_CC
, "|s!", &reason_str
, &reason_len
)) {
619 php_ircclient_session_object_t
*obj
= zend_object_store_get_object(getThis() TSRMLS_CC
);
621 if (0 != irc_cmd_quit(obj
->sess
, reason_str
)) {
622 php_error_docref(NULL TSRMLS_CC
, E_WARNING
, "%s", irc_strerror(irc_errno(obj
->sess
)));
630 PHP_METHOD(Session
, doUserMode
)
632 char *mode_str
= NULL
;
635 if (SUCCESS
== zend_parse_parameters(ZEND_NUM_ARGS() TSRMLS_CC
, "|s!", &mode_str
, &mode_len
)) {
636 php_ircclient_session_object_t
*obj
= zend_object_store_get_object(getThis() TSRMLS_CC
);
638 if (0 != irc_cmd_user_mode(obj
->sess
, mode_str
)) {
639 php_error_docref(NULL TSRMLS_CC
, E_WARNING
, "%s", irc_strerror(irc_errno(obj
->sess
)));
647 PHP_METHOD(Session
, doNick
)
652 if (SUCCESS
== zend_parse_parameters(ZEND_NUM_ARGS() TSRMLS_CC
, "s", &nick_str
, &nick_len
)) {
653 php_ircclient_session_object_t
*obj
= zend_object_store_get_object(getThis() TSRMLS_CC
);
655 if (0 != irc_cmd_nick(obj
->sess
, nick_str
)) {
656 php_error_docref(NULL TSRMLS_CC
, E_WARNING
, "%s", irc_strerror(irc_errno(obj
->sess
)));
664 PHP_METHOD(Session
, doWhois
)
666 char *nick_str
= NULL
;
669 if (SUCCESS
== zend_parse_parameters(ZEND_NUM_ARGS() TSRMLS_CC
, "|s!", &nick_str
, &nick_len
)) {
670 php_ircclient_session_object_t
*obj
= zend_object_store_get_object(getThis() TSRMLS_CC
);
672 if (0 != irc_cmd_whois(obj
->sess
, nick_str
)) {
673 php_error_docref(NULL TSRMLS_CC
, E_WARNING
, "%s", irc_strerror(irc_errno(obj
->sess
)));
681 PHP_METHOD(Session
, doCtcpReply
)
683 char *nick_str
, *reply_str
;
684 int nick_len
, reply_len
;
686 if (SUCCESS
== zend_parse_parameters(ZEND_NUM_ARGS() TSRMLS_CC
, "ss", &nick_str
, &nick_len
, &reply_str
, &reply_len
)) {
687 php_ircclient_session_object_t
*obj
= zend_object_store_get_object(getThis() TSRMLS_CC
);
689 if (0 != irc_cmd_ctcp_reply(obj
->sess
, nick_str
, reply_str
)) {
690 php_error_docref(NULL TSRMLS_CC
, E_WARNING
, "%s", irc_strerror(irc_errno(obj
->sess
)));
698 PHP_METHOD(Session
, doCtcpRequest
)
700 char *nick_str
, *request_str
;
701 int nick_len
, request_len
;
703 if (SUCCESS
== zend_parse_parameters(ZEND_NUM_ARGS() TSRMLS_CC
, "ss", &nick_str
, &nick_len
, &request_str
, &request_len
)) {
704 php_ircclient_session_object_t
*obj
= zend_object_store_get_object(getThis() TSRMLS_CC
);
706 if (0 != irc_cmd_ctcp_request(obj
->sess
, nick_str
, request_str
)) {
707 php_error_docref(NULL TSRMLS_CC
, E_WARNING
, "%s", irc_strerror(irc_errno(obj
->sess
)));
717 PHP_METHOD(Session
, onConnect
) {}
718 PHP_METHOD(Session
, onNick
) {}
719 PHP_METHOD(Session
, onQuit
) {}
720 PHP_METHOD(Session
, onJoin
) {}
721 PHP_METHOD(Session
, onPart
) {}
722 PHP_METHOD(Session
, onMode
) {}
723 PHP_METHOD(Session
, onUmode
) {}
724 PHP_METHOD(Session
, onTopic
) {}
725 PHP_METHOD(Session
, onKick
) {}
726 PHP_METHOD(Session
, onChannel
) {}
727 PHP_METHOD(Session
, onPrivmsg
) {}
728 PHP_METHOD(Session
, onNotice
) {}
729 PHP_METHOD(Session
, onChannelNotice
) {}
730 PHP_METHOD(Session
, onInvite
) {}
731 PHP_METHOD(Session
, onCtcpReq
) {}
732 PHP_METHOD(Session
, onCtcpRep
) {}
733 PHP_METHOD(Session
, onAction
) {}
734 PHP_METHOD(Session
, onUnknown
) {}
735 PHP_METHOD(Session
, onNumeric
) {}
736 PHP_METHOD(Session
, onDccChatReq
) {}
737 PHP_METHOD(Session
, onDccSendReq
) {}
739 #define ME(m) PHP_ME(Session, m, NULL, ZEND_ACC_PUBLIC)
741 zend_function_entry php_ircclient_session_method_entry
[] = {
794 PHP_MINIT_FUNCTION(ircclient
)
798 memset(&ce
, 0, sizeof(zend_class_entry
));
799 INIT_NS_CLASS_ENTRY(ce
, "irc\\client", "Session", php_ircclient_session_method_entry
);
800 ce
.create_object
= php_ircclient_session_object_create
;
801 php_ircclient_session_class_entry
= zend_register_internal_class_ex(&ce
, NULL
, NULL TSRMLS_CC
);
803 zend_declare_property_null(php_ircclient_session_class_entry
, ZEND_STRL("nick"), ZEND_ACC_PUBLIC TSRMLS_CC
);
804 zend_declare_property_null(php_ircclient_session_class_entry
, ZEND_STRL("user"), ZEND_ACC_PUBLIC TSRMLS_CC
);
805 zend_declare_property_null(php_ircclient_session_class_entry
, ZEND_STRL("real"), ZEND_ACC_PUBLIC TSRMLS_CC
);
811 PHP_MSHUTDOWN_FUNCTION(ircclient
)
818 PHP_RINIT_FUNCTION(ircclient
)
825 PHP_RSHUTDOWN_FUNCTION(ircclient
)
831 PHP_MINFO_FUNCTION(ircclient
)
833 php_info_print_table_start();
834 php_info_print_table_header(2, "ircclient support", "enabled");
835 php_info_print_table_end();