| 149 |
|
|
| 150 |
ZEND_FUNCTION(xnp_extract_public_item_id); |
ZEND_FUNCTION(xnp_extract_public_item_id); |
| 151 |
ZEND_FUNCTION(xnp_extract_nonbinder_item_id); |
ZEND_FUNCTION(xnp_extract_nonbinder_item_id); |
| 152 |
|
ZEND_FUNCTION(xnp_insert_event); |
| 153 |
|
ZEND_FUNCTION(xnp_get_events); |
| 154 |
}; |
}; |
| 155 |
/* compiled function list so Zend knows what's in this module */ |
/* compiled function list so Zend knows what's in this module */ |
| 156 |
zend_function_entry xnpalmod_functions[] = |
zend_function_entry xnpalmod_functions[] = |
| 249 |
ZEND_FE(xnp_get_item_count ,NULL) |
ZEND_FE(xnp_get_item_count ,NULL) |
| 250 |
ZEND_FE(xnp_get_item_count_group_by_index ,NULL) |
ZEND_FE(xnp_get_item_count_group_by_index ,NULL) |
| 251 |
|
|
| 252 |
ZEND_FE(xnp_extract_public_item_id,NULL) |
ZEND_FE(xnp_extract_public_item_id ,NULL) |
| 253 |
ZEND_FE(xnp_extract_nonbinder_item_id,NULL) |
ZEND_FE(xnp_extract_nonbinder_item_id,NULL) |
| 254 |
|
ZEND_FE(xnp_insert_event ,NULL) |
| 255 |
|
ZEND_FE(xnp_get_events ,NULL) |
| 256 |
{NULL, NULL, NULL} |
{NULL, NULL, NULL} |
| 257 |
}; |
}; |
| 258 |
|
|
| 1287 |
return RES_OK; |
return RES_OK; |
| 1288 |
} |
} |
| 1289 |
|
|
| 1290 |
|
/** |
| 1291 |
|
* |
| 1292 |
|
* event_tの内容をPHPの配列に変換する |
| 1293 |
|
* @param pevent 変換元のevent_t* |
| 1294 |
|
* @param z 変換結果を書き込む配列(初期化済みであること) |
| 1295 |
|
* @return RES_OK |
| 1296 |
|
* |
| 1297 |
|
*/ |
| 1298 |
|
result_t eventToZval( const event_t *pEvent, zval *z ) |
| 1299 |
|
{ |
| 1300 |
|
zend_hash_clean( z -> value.ht ); |
| 1301 |
|
|
| 1302 |
|
add_assoc_long ( z, "event_id" , pEvent -> getEventID() ); |
| 1303 |
|
add_assoc_long ( z, "event_type_id" , pEvent -> getEventTypeID() ); |
| 1304 |
|
|
| 1305 |
|
if ( pEvent->isValidTimestamp () ) add_assoc_long ( z, "timestamp" , pEvent -> getTimestamp() ); |
| 1306 |
|
if ( pEvent->isValidExecUID () ) add_assoc_long ( z, "exec_uid" , pEvent -> getExecUID() ); |
| 1307 |
|
if ( pEvent->isValidIndexID () ) add_assoc_long ( z, "index_id" , pEvent -> getIndexID() ); |
| 1308 |
|
if ( pEvent->isValidItemID () ) add_assoc_long ( z, "item_id" , pEvent -> getItemID() ); |
| 1309 |
|
if ( pEvent->isValidFileID () ) add_assoc_long ( z, "file_id" , pEvent -> getFileID() ); |
| 1310 |
|
if ( pEvent->isValidUID () ) add_assoc_long ( z, "uid" , pEvent -> getUID() ); |
| 1311 |
|
if ( pEvent->isValidGID () ) add_assoc_long ( z, "gid" , pEvent -> getGID() ); |
| 1312 |
|
if ( pEvent->isValidRemoteHost () ) add_assoc_string( z, "remote_host" , (char*)pEvent -> getRemoteHost() , 1 ); |
| 1313 |
|
if ( pEvent->isValidSearchKeyword() ) add_assoc_string( z, "search_keyword", (char*)pEvent -> getSearchKeyword(), 1 ); |
| 1314 |
|
if ( pEvent->isValidLoginName () ) add_assoc_string( z, "login_name" , (char*)pEvent -> getLoginName() , 1 ); |
| 1315 |
|
|
| 1316 |
|
return RES_OK; |
| 1317 |
|
} |
| 1318 |
|
|
| 1319 |
|
result_t eventsToZval( const event_t *pevents, int eventsLen, zval *z ) |
| 1320 |
|
{ |
| 1321 |
|
zend_hash_clean( z -> value.ht ); |
| 1322 |
|
for( int i = 0; i < eventsLen; i++ ){ |
| 1323 |
|
zval *new_array; |
| 1324 |
|
MAKE_STD_ZVAL(new_array); |
| 1325 |
|
if(array_init(new_array) != SUCCESS){ |
| 1326 |
|
return RES_ERROR; |
| 1327 |
|
} |
| 1328 |
|
add_index_zval( z, i, new_array ); |
| 1329 |
|
eventToZval( &pevents[ i ], new_array ); |
| 1330 |
|
} |
| 1331 |
|
return RES_OK; |
| 1332 |
|
} |
| 1333 |
|
|
| 1334 |
|
|
| 1335 |
|
|
| 1336 |
|
|
| 3698 |
|
|
| 3699 |
RETURN_LONG( result ); |
RETURN_LONG( result ); |
| 3700 |
} |
} |
| 3701 |
|
|
| 3702 |
|
/** |
| 3703 |
|
* イベントを記録する |
| 3704 |
|
* |
| 3705 |
|
* int xnp_insert_event( int sid, int event_type_id, int timestamp, |
| 3706 |
|
* int exec_uid, string remote_host, array params ) |
| 3707 |
|
* @param sid セッションID |
| 3708 |
|
* @param event_type_id イベントタイプID |
| 3709 |
|
* @param timestamp イベント発生日時 time_t |
| 3710 |
|
* @param exec_uid イベント発生者uid |
| 3711 |
|
* @param remote_host remote host |
| 3712 |
|
* @param params 以下のキーを持つ連想配列: index_id, item_id, file_id, uid, gid, search_keyword, login_name |
| 3713 |
|
* @return RES_OK |
| 3714 |
|
* |
| 3715 |
|
*/ |
| 3716 |
|
ZEND_FUNCTION(xnp_insert_event) |
| 3717 |
|
{ |
| 3718 |
|
long sid; |
| 3719 |
|
long eventTypeID; |
| 3720 |
|
long timestamp; |
| 3721 |
|
long execUID; |
| 3722 |
|
char* remoteHost; |
| 3723 |
|
int remoteHostLen; |
| 3724 |
|
|
| 3725 |
|
zval *zparams; |
| 3726 |
|
result_t result = RES_ERROR; |
| 3727 |
|
|
| 3728 |
|
if (zend_parse_parameters(ZEND_NUM_ARGS() TSRMLS_CC, "llllsa", |
| 3729 |
|
&sid, &eventTypeID, ×tamp, &execUID, &remoteHost, &remoteHostLen, &zparams ) == FAILURE) { |
| 3730 |
|
fprintf( stderr, "error occured " ); |
| 3731 |
|
return; |
| 3732 |
|
} |
| 3733 |
|
|
| 3734 |
|
long indexID=0, itemID=0, fileID=0, uid=0, gid=0; |
| 3735 |
|
char* searchKeyword = 0; |
| 3736 |
|
char* loginName = 0; |
| 3737 |
|
HashTable *h = Z_ARRVAL_P(zparams); |
| 3738 |
|
hashGetLong( h, "index_id", &indexID ); |
| 3739 |
|
hashGetLong( h, "item_id" , &itemID ); |
| 3740 |
|
hashGetLong( h, "file_id" , &fileID ); |
| 3741 |
|
hashGetLong( h, "uid" , &uid ); |
| 3742 |
|
hashGetLong( h, "gid" , &gid ); |
| 3743 |
|
hashGetString( h, "search_keyword" , &searchKeyword ); |
| 3744 |
|
hashGetString( h, "login_name" , &loginName ); |
| 3745 |
|
|
| 3746 |
|
event_t ev; |
| 3747 |
|
ev.setEventTypeID ( eventTypeID ); |
| 3748 |
|
ev.setTimestamp ( timestamp ); |
| 3749 |
|
ev.setExecUID ( execUID ); |
| 3750 |
|
ev.setIndexID ( indexID ); |
| 3751 |
|
ev.setItemID ( itemID ); |
| 3752 |
|
ev.setFileID ( fileID ); |
| 3753 |
|
ev.setUID ( uid ); |
| 3754 |
|
ev.setGID ( gid ); |
| 3755 |
|
ev.setRemoteHost ( remoteHost ); |
| 3756 |
|
ev.setSearchKeyword( searchKeyword ); |
| 3757 |
|
ev.setLoginName ( loginName ); |
| 3758 |
|
|
| 3759 |
|
result = insertEvent( sid, &ev ); |
| 3760 |
|
|
| 3761 |
|
RETURN_LONG( result ); |
| 3762 |
|
} |
| 3763 |
|
|
| 3764 |
|
/** |
| 3765 |
|
* イベントを取得する |
| 3766 |
|
* |
| 3767 |
|
* int xnp_get_events( int sid, array events, int starttime=0, int endtime=0 ) |
| 3768 |
|
* @param sid セッションID |
| 3769 |
|
* @param events イベントの配列を受け取る変数 |
| 3770 |
|
* @param starttime 取得範囲 |
| 3771 |
|
* @param endtime 取得範囲 |
| 3772 |
|
* @return RES_OK |
| 3773 |
|
* |
| 3774 |
|
*/ |
| 3775 |
|
ZEND_FUNCTION(xnp_get_events) |
| 3776 |
|
{ |
| 3777 |
|
zval **parameters[4]; |
| 3778 |
|
long sid; |
| 3779 |
|
long startTime = 0; |
| 3780 |
|
long endTime = 0; |
| 3781 |
|
zval *zevents; |
| 3782 |
|
result_t result = RES_ERROR; |
| 3783 |
|
|
| 3784 |
|
int argNum = ZEND_NUM_ARGS(); |
| 3785 |
|
if ( argNum < 2 || 4 < argNum ) |
| 3786 |
|
WRONG_PARAM_COUNT; |
| 3787 |
|
|
| 3788 |
|
if(zend_get_parameters_array_ex(argNum, parameters) != SUCCESS) |
| 3789 |
|
WRONG_PARAM_COUNT; |
| 3790 |
|
|
| 3791 |
|
sid = getZvalInt( parameters[0] ); |
| 3792 |
|
zevents = *(parameters[1]); |
| 3793 |
|
if ( Z_TYPE_P(zevents) != IS_ARRAY ){ |
| 3794 |
|
zend_error(E_WARNING, "2nd parameter wasn't an array"); |
| 3795 |
|
RETURN_LONG( RES_ERROR ); |
| 3796 |
|
} |
| 3797 |
|
if ( argNum >= 3 ) startTime = getZvalInt( parameters[2] ); |
| 3798 |
|
if ( argNum >= 4 ) endTime = getZvalInt( parameters[3] ); |
| 3799 |
|
|
| 3800 |
|
event *events = 0; |
| 3801 |
|
int eventsLen = 0; |
| 3802 |
|
result = getEvents( sid, &events, &eventsLen, startTime, endTime ); |
| 3803 |
|
if ( result == RES_OK ){ |
| 3804 |
|
result = eventsToZval( events, eventsLen, zevents ); |
| 3805 |
|
delete[] events; |
| 3806 |
|
} |
| 3807 |
|
|
| 3808 |
|
RETURN_LONG( result ); |
| 3809 |
|
} |