| 46 |
ZEND_FUNCTION(vp_get_groups_by_uid ); |
ZEND_FUNCTION(vp_get_groups_by_uid ); |
| 47 |
ZEND_FUNCTION(vp_is_group_admin ); |
ZEND_FUNCTION(vp_is_group_admin ); |
| 48 |
ZEND_FUNCTION(vp_dump_gids ); |
ZEND_FUNCTION(vp_dump_gids ); |
|
/* |
|
| 49 |
ZEND_FUNCTION(vp_dump_group_admins ); |
ZEND_FUNCTION(vp_dump_group_admins ); |
| 50 |
|
/* |
| 51 |
ZEND_FUNCTION(vp_delete_member ); |
ZEND_FUNCTION(vp_delete_member ); |
| 52 |
ZEND_FUNCTION(vp_insert_member ); |
ZEND_FUNCTION(vp_insert_member ); |
| 53 |
ZEND_FUNCTION(vp_get_members ); |
ZEND_FUNCTION(vp_get_members ); |
| 85 |
ZEND_FE(vp_get_groups_by_uid ,NULL) |
ZEND_FE(vp_get_groups_by_uid ,NULL) |
| 86 |
ZEND_FE(vp_is_group_admin ,NULL) |
ZEND_FE(vp_is_group_admin ,NULL) |
| 87 |
ZEND_FE(vp_dump_gids ,NULL) |
ZEND_FE(vp_dump_gids ,NULL) |
|
/* |
|
| 88 |
ZEND_FE(vp_dump_group_admins ,NULL) |
ZEND_FE(vp_dump_group_admins ,NULL) |
| 89 |
|
/* |
| 90 |
ZEND_FE(vp_delete_member ,NULL) |
ZEND_FE(vp_delete_member ,NULL) |
| 91 |
ZEND_FE(vp_insert_member ,NULL) |
ZEND_FE(vp_insert_member ,NULL) |
| 92 |
ZEND_FE(vp_get_members ,NULL) |
ZEND_FE(vp_get_members ,NULL) |
| 373 |
} |
} |
| 374 |
}; |
}; |
| 375 |
|
|
| 376 |
/** uids_t → zval |
/** |
| 377 |
*/ |
* |
| 378 |
|
* uids_tの配列をPHPの配列に変換する |
| 379 |
|
* |
| 380 |
|
* @param pUID 変換もとのuserid_tの配列 |
| 381 |
|
* @param len pUIDの配列の長さ |
| 382 |
|
* @param pz 変換結果を書き込む配列(初期化済みであること) |
| 383 |
|
* @return RES_OK |
| 384 |
|
* |
| 385 |
|
*/ |
| 386 |
result_t uidsToZval( userid_t *pUID, int len, zval **ppz ) |
result_t uidsToZval( userid_t *pUID, int len, zval **ppz ) |
| 387 |
{ |
{ |
| 388 |
zval *pz; |
zend_hash_clean( Z_ARRVAL_PP(ppz) ); |
|
|
|
|
// create new array |
|
|
MAKE_STD_ZVAL(pz); |
|
|
array_init(pz); |
|
| 389 |
|
|
| 390 |
// add UIDs |
// add UIDs |
| 391 |
for ( int i = 0; i < len; i++ ){ |
for ( int i = 0; i < len; i++ ){ |
| 392 |
add_next_index_long(pz, (long)(pUID[i]) ); |
add_next_index_long(*ppz, (long)(pUID[i]) ); |
| 393 |
} |
} |
| 394 |
|
|
|
// return array |
|
|
*ppz = pz; |
|
| 395 |
return RES_OK; |
return RES_OK; |
| 396 |
} |
} |
| 397 |
/** uids_t → zval |
/** groupid_t → zval |
| 398 |
*/ |
*/ |
| 399 |
result_t gidsToZval( groupid_t *pGID, int len, zval **ppz ) |
result_t gidsToZval( groupid_t *pGID, int len, zval **ppz ) |
| 400 |
{ |
{ |
| 401 |
zval *pz; |
zend_hash_clean( Z_ARRVAL_PP(ppz) ); |
|
|
|
|
// create new array |
|
|
MAKE_STD_ZVAL(pz); |
|
|
array_init(pz); |
|
| 402 |
|
|
| 403 |
// add GIDs |
// add GIDs |
| 404 |
for ( int i = 0; i < len; i++ ){ |
for ( int i = 0; i < len; i++ ){ |
| 405 |
add_next_index_long(pz, (long)(pGID[i]) ); |
add_next_index_long(*ppz, (long)(pGID[i]) ); |
| 406 |
} |
} |
| 407 |
|
|
|
// return array |
|
|
*ppz = pz; |
|
| 408 |
return RES_OK; |
return RES_OK; |
| 409 |
} |
} |
| 410 |
|
|
| 1200 |
RETURN_LONG(result); |
RETURN_LONG(result); |
| 1201 |
} |
} |
| 1202 |
|
|
| 1203 |
|
/** gidで指定したグループの管理者で、かつ条件に一致するグループ管理者のuidの一覧を得る。<br> |
| 1204 |
|
int vp_dump_group_admins(int sid, int group_id, array criteria, array uids ) |
| 1205 |
|
@param sid セッションID |
| 1206 |
|
@param group_id VPグループID |
| 1207 |
|
@param criteria 条件 |
| 1208 |
|
@param uids uidの一覧を受け取る配列 |
| 1209 |
|
@return 0 success |
| 1210 |
|
*/ |
| 1211 |
|
|
| 1212 |
|
ZEND_FUNCTION(vp_dump_group_admins) |
| 1213 |
|
{ |
| 1214 |
|
long sid, gid; |
| 1215 |
|
zval *zcriteria; |
| 1216 |
|
zval *zuids; |
| 1217 |
|
|
| 1218 |
|
if (zend_parse_parameters(ZEND_NUM_ARGS() TSRMLS_CC, "llaa", |
| 1219 |
|
&sid, &gid, &zcriteria, &zuids) == FAILURE) { |
| 1220 |
|
return; |
| 1221 |
|
} |
| 1222 |
|
|
| 1223 |
|
zCriteria_t zcri(zcriteria); |
| 1224 |
|
result_t result = zcri.getResult(); |
| 1225 |
|
if ( result == RES_OK ){ |
| 1226 |
|
userid_t *uids; |
| 1227 |
|
int uidsLen; |
| 1228 |
|
result = dumpGroupAdmins( sid, gid, &zcri, &uids, &uidsLen ); |
| 1229 |
|
if ( result == RES_OK ){ |
| 1230 |
|
uidsToZval( uids, uidsLen, &zuids ); |
| 1231 |
|
freeResult( uids ); |
| 1232 |
|
} |
| 1233 |
|
} |
| 1234 |
|
RETURN_LONG( result ); |
| 1235 |
|
} |
| 1236 |
|
|
| 1237 |
|
|
| 1238 |
/** グループ情報を変更する。<br> |
/** グループ情報を変更する。<br> |
| 1239 |
int vp_update_group(int sid, array group ) |
int vp_update_group(int sid, array group ) |
| 1240 |
@param sid セッションID |
@param sid セッションID |