Develop and Download Open Source Software

Browse CVS Repository

Diff of /xoonips/AL/xnpal.cc

Parent Directory Parent Directory | Revision Log Revision Log | View Revision Graph Revision Graph | View Patch Patch

revision 1.41 by aga4096, Tue Jun 14 01:02:20 2005 UTC revision 1.42 by aga4096, Thu Jun 23 07:58:12 2005 UTC
# Line 149  ZEND_FUNCTION(xnp_get_item_count_group_b Line 149  ZEND_FUNCTION(xnp_get_item_count_group_b
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[] =
# Line 247  zend_function_entry xnpalmod_functions[] Line 249  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    
# Line 1283  result_t indexesToZval( const index_t *p Line 1287  result_t indexesToZval( const index_t *p
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    
# Line 3650  ZEND_FUNCTION(xnp_extract_nonbinder_item Line 3698  ZEND_FUNCTION(xnp_extract_nonbinder_item
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, &timestamp, &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    }

Legend:
Removed from v.1.41  
changed lines
  Added in v.1.42

Back to OSDN">Back to OSDN
ViewVC Help
Powered by ViewVC 1.1.26