cvs: php4 /ext/midgard midgard.c

From: Date: Fri, 23 Feb 2001 09:22:09 +0000
Subject: cvs: php4 /ext/midgard midgard.c
Groups: php.cvs 
Request: Send a blank email to php-cvs+get-4229@lists.php.net to get a copy of this message
davidg Fri Feb 23 01:22:09 2001 EDT Modified files: /php4/ext/midgard midgard.c Log: Removed constants registration, added a conversion table $midgard->types[$objtype] try var_dump($midgard) for more details Index: php4/ext/midgard/midgard.c diff -u php4/ext/midgard/midgard.c:1.14 php4/ext/midgard/midgard.c:1.15 --- php4/ext/midgard/midgard.c:1.14 Thu Feb 22 12:32:20 2001 +++ php4/ext/midgard/midgard.c Fri Feb 23 01:22:08 2001 @@ -1,4 +1,4 @@ -/* $Id: midgard.c,v 1.14 2001/02/22 20:32:20 davidg Exp $ +/* $Id: midgard.c,v 1.15 2001/02/23 09:22:08 davidg Exp $ Copyright (C) 1999 Jukka Zitting <jukka.zitting@iki.fi> Copyright (C) 2000 The Midgard Project ry Copyright (C) 2000 Emile Heyns, Aurora SA <emile@iris-advies.com> @@ -72,6 +72,9 @@ MGD_FUNCTION(version); MGD_FUNCTION(get_midgard); MGD_FUNCTION(auth_midgard); +#if YOU_WANT_TO_TEST +MGD_FUNCTION(walk_tree); +#endif /* Every user visible function must have an entry in midgard_functions[]. */ @@ -292,6 +295,9 @@ MGD_FE(snippet, NULL) MGD_FE(eval, NULL) MGD_FE(register_filter, NULL) +#if YOU_WANT_TO_TEST +MGD_FE(walk_tree, NULL) +#endif {NULL, NULL, NULL} /* Must be the last line in midgard_functions[] */ }; @@ -362,11 +368,9 @@ return SUCCESS; } -#define MGD_REGISTER_LONG_CONSTANT(name,lval,flags) zend_register_long_constant((name),strlen(name)+1,(lval),(flags),module_number ELS_CC) /* Remove if there's nothing to do at request start */ PHP_RINIT_FUNCTION(midgard) { - int i; request_rec *r; module *midgard_module; @@ -406,13 +410,6 @@ return SUCCESS; } - /* register Midgard constants */ - for(i = 1; i < MIDGARD_OBJECT_COUNT; i++) { - MGD_REGISTER_LONG_CONSTANT((char *)mgd_table_label[i], i, - CONST_CS | CONST_PERSISTENT); - - } - MGDG(mgd) = MGDG(rcfg)->mgd; ALLOC_INIT_ZVAL(MGDG(udf)); if(MGDG(udf)) array_init(MGDG(udf)); @@ -568,9 +565,9 @@ MGD_FUNCTION(get_midgard) { int i; - zval *argv; + zval *argv, *types; char **mm_argv; - long mm_argc; + long mm_argc; midgard *mgd = mgd_handle(); midgard_request_config *rcfg = mgd_rcfg(); @@ -607,6 +604,8 @@ /* EEH {HACK ALERT}: We add this property with hash_update manually since Zend doesn't offer a add_property_array. + DG {END HACK ALERT} TODO: replace by the following line in PHP 4.0.5 + add_property_zval(return_value, "argv", argv); */ zend_hash_update(return_value->value.obj.properties, "argv", 5, &argv, sizeof(argv), NULL); @@ -615,6 +614,16 @@ add_property_stringl(return_value, "self", rcfg->req->uri, rcfg->self_len, 1); + + MAKE_STD_ZVAL(types); + array_init(types); + for (i = 1; i < MIDGARD_OBJECT_COUNT; i++) { + add_assoc_long(types, (char *)mgd_table_extname[i], i); + } + + //add_property_zval(return_value, "types", types); + zend_hash_update(return_value->value.obj.properties, "types", 6, + &types, sizeof(types), NULL); } MGD_FUNCTION(auth_midgard) @@ -740,6 +749,68 @@ zval_dtor(args[1]); } +#if YOU_WANT_TO_TEST +MGD_FUNCTION(walk_tree) +{ + zval **id, **level, **xparam, *xp[2], **order; + zval **midgard_user_call_func_name, **sort = NULL; + zval **tableid, **upfield; + CHECK_MGD; + + switch (ZEND_NUM_ARGS()) { + case 8: + if (zend_get_parameters_ex(8, &tableid, &upfield, + &midgard_user_call_func_name, &id, + &level, &xparam, &order, &sort) == FAILURE) { + WRONG_PARAM_COUNT; + } + break; + case 7: + if (zend_get_parameters_ex(7, &tableid, &upfield, + &midgard_user_call_func_name, &id, + &level, &xparam, &order) == FAILURE) { + WRONG_PARAM_COUNT; + } else { + sort = NULL; + } + break; + case 6: + if (zend_get_parameters_ex(6, &tableid, &upfield, + &midgard_user_call_func_name, &id, + &level, &xparam) == FAILURE) { + WRONG_PARAM_COUNT; + } else { + order = NULL; + sort = NULL; + } + break; + default: + WRONG_PARAM_COUNT; + break; + } + + convert_to_long_ex(tableid); + if(!(*tableid)->value.lval) RETURN_FALSE; + convert_to_string_ex(upfield); + convert_to_string_ex(midgard_user_call_func_name); + convert_to_long_ex(level); + if (order) convert_to_long_ex(order); + convert_to_long_ex(id); + if(sort) convert_to_string_ex(sort); + + xp[0] = (*xparam); + xp[1] = (*midgard_user_call_func_name); + mgd_walk_table_tree(mgd_handle(), mgd_table_name[(*tableid)->value.lval], + (*upfield)->value.str.val, + (*id)->value.lval, + (*level)->value.lval, + order ? (*order)->value.lval : 1, + (void *)xp, + midgard_user_call_func, + sort ? (*sort)->value.str.val : NULL); + RETURN_TRUE; +} +#endif /* YOU_WANT_TO_TEST */ #endif /* HAVE_MIDGARD */

« previous php.cvs (#4229) next »