davidg Tue Feb 20 16:24:56 2001 EDT Removed files: /php4/ext/midgard mgd_midgard.h Modified files: /php4/ext/midgard article.c mgd_article.h mgd_internal.h mgd_page.h mgd_snippetdir.h mgd_style.h mgd_topic.h midgard.c page.c snippetdir.c style.c topic.c Log: mgd_walk_xxx_tree() functions implemented.
Index: php4/ext/midgard/article.c diff -u php4/ext/midgard/article.c:1.4 php4/ext/midgard/article.c:1.5 --- php4/ext/midgard/article.c:1.4 Mon Feb 19 07:50:20 2001 +++ php4/ext/midgard/article.c Tue Feb 20 16:24:56 2001 @@ -1,4 +1,4 @@ -/* $Id: article.c,v 1.4 2001/02/19 15:50:20 davidg Exp $ +/* $Id: article.c,v 1.5 2001/02/21 00:24:56 davidg Exp $ Copyright (C) 1999 Jukka Zitting <[EMAIL PROTECTED]> Copyright (C) 2000 The Midgard Project ry Copyright (C) 2000 Emile Heyns, Aurora SA <[EMAIL PROTECTED]> @@ -991,6 +991,8 @@ MGD_MOVE_FUNCTION(article, topic, article, topic) MGD_MOVE_FUNCTION(article, article, reply, up) + +MGD_WALK_FUNCTION(article) MidgardProperty MidgardArticleProperties [] = { { IS_LONG, "up" }, Index: php4/ext/midgard/mgd_article.h diff -u php4/ext/midgard/mgd_article.h:1.3 php4/ext/midgard/mgd_article.h:1.4 --- php4/ext/midgard/mgd_article.h:1.3 Sat Feb 17 15:21:50 2001 +++ php4/ext/midgard/mgd_article.h Tue Feb 20 16:24:56 2001 @@ -1,4 +1,4 @@ -/* $Id: mgd_article.h,v 1.3 2001/02/17 23:21:50 emile Exp $ +/* $Id: mgd_article.h,v 1.4 2001/02/21 00:24:56 davidg Exp $ Copyright (C) 1999 Jukka Zitting <[EMAIL PROTECTED]> Copyright (C) 2000 The Midgard Project ry Copyright (C) 2000 Emile Heyns, Aurora SA <[EMAIL PROTECTED]> @@ -45,5 +45,6 @@ extern MGD_FUNCTION(copy_reply); extern MGD_FUNCTION(move_reply); extern MGD_FUNCTION(delete_article_tree); +extern MGD_FUNCTION(walk_article_tree); #endif Index: php4/ext/midgard/mgd_internal.h diff -u php4/ext/midgard/mgd_internal.h:1.3 php4/ext/midgard/mgd_internal.h:1.4 --- php4/ext/midgard/mgd_internal.h:1.3 Sat Feb 17 15:21:50 2001 +++ php4/ext/midgard/mgd_internal.h Tue Feb 20 16:24:56 2001 @@ -1,4 +1,4 @@ -/* $Id: mgd_internal.h,v 1.3 2001/02/17 23:21:50 emile Exp $ +/* $Id: mgd_internal.h,v 1.4 2001/02/21 00:24:56 davidg Exp $ Copyright (C) 1999 Jukka Zitting <[EMAIL PROTECTED]> Copyright (C) 2000 The Midgard Project ry Copyright (C) 2000 Emile Heyns, Aurora SA <[EMAIL PROTECTED]> @@ -112,67 +112,49 @@ PHP_UPDATE_REPLIGARD(#roottable, (*root)->value.lval); \ } +void midgard_user_call_func(midgard *mgd, int id, int level, void * xparam); + #define MGD_WALK_FUNCTION(table) \ /* {{{ proto void walk_ ## table ## _tree(string func, id, level, xparam[, order]) \ */ \ MGD_FUNCTION(walk_ ## table ## _tree) \ { \ - zval **id, **level, **xparam, **order; \ - zval **old_user_func; \ - midgard_tree *tree; int mlevel, i; \ - TLS_VARS; \ + zval **id, **level, **xparam, *xp[2], **order; \ + zval **midgard_user_call_func_name; \ + CHECK_MGD; \ \ - old_user_func = midgard_user_call_func_name; \ switch (ZEND_NUM_ARGS()) { \ case 5: \ if (zend_get_parameters_ex(5, &midgard_user_call_func_name, &id, \ &level, &xparam, &order) == FAILURE) { \ - midgard_user_call_func_name = old_user_func; \ WRONG_PARAM_COUNT; \ } \ break; \ case 4: \ if (zend_get_parameters_ex(4, &midgard_user_call_func_name, &id, \ &level, &xparam) == FAILURE) { \ - midgard_user_call_func_name = old_user_func; \ WRONG_PARAM_COUNT; \ } else { \ order = NULL; \ } \ break; \ default: \ - midgard_user_call_func_name = old_user_func; \ WRONG_PARAM_COUNT; \ break; \ }\ \ - convert_to_string_ex(midgard_user_call_func_name); \ + 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); \ -\ - tree = mgd_tree_build(mgd_handle(), #table, &mlevel, NULL); \ \ - if (!tree) { \ - RETURN_FALSE_BECAUSE(MGD_ERR_ERROR); \ - } \ - /* Be aware of top level trees */ \ - if ((*id)->value.lval == 0) { \ - i = 0; \ - while (tree[i].id) { \ - walktree(tree, order ? (*order)->value.lval : 1, i, 0, \ - (*level)->value.lval ? (*level)->value.lval : mlevel, xparam); \ - i += tree[i].cn; \ - } \ - } else { \ - /* Traverse regular sub tree */ \ - i = mgd_tree_find(tree, id->value.lval); \ - if (i != -1) \ - walktree(tree, order ? (*order)->value.lval : 1, i, tree[i].lv-1, \ - (*level)->value.lval ? (*level)->value.lval : mlevel, xparam); \ - } \ - free(tree); \ - midgard_user_call_func_name = old_user_func; \ + xp[0] = (*xparam); \ + xp[1] = (*midgard_user_call_func_name); \ + mgd_walk_table_tree(mgd_handle(), #table, (*id)->value.lval, \ + +(*level)->value.lval, \ + order ? +(*order)->value.lval : 1, \ + (void *)xp, +\ + +midgard_user_call_func); \ RETURN_TRUE; \ } \ \ Index: php4/ext/midgard/mgd_page.h diff -u php4/ext/midgard/mgd_page.h:1.3 php4/ext/midgard/mgd_page.h:1.4 --- php4/ext/midgard/mgd_page.h:1.3 Sat Feb 17 15:21:50 2001 +++ php4/ext/midgard/mgd_page.h Tue Feb 20 16:24:56 2001 @@ -1,4 +1,4 @@ -/* $Id: mgd_page.h,v 1.3 2001/02/17 23:21:50 emile Exp $ +/* $Id: mgd_page.h,v 1.4 2001/02/21 00:24:56 davidg Exp $ Copyright (C) 1999 Jukka Zitting <[EMAIL PROTECTED]> Copyright (C) 2000 The Midgard Project ry Copyright (C) 2000 Emile Heyns, Aurora SA <[EMAIL PROTECTED]> @@ -33,5 +33,6 @@ extern MGD_FUNCTION(delete_page); extern MGD_FUNCTION(page_has_children); extern MGD_FUNCTION(delete_page_tree); +extern MGD_FUNCTION(walk_page_tree); #endif Index: php4/ext/midgard/mgd_snippetdir.h diff -u php4/ext/midgard/mgd_snippetdir.h:1.3 php4/ext/midgard/mgd_snippetdir.h:1.4 --- php4/ext/midgard/mgd_snippetdir.h:1.3 Sat Feb 17 15:21:50 2001 +++ php4/ext/midgard/mgd_snippetdir.h Tue Feb 20 16:24:56 2001 @@ -1,4 +1,4 @@ -/* $Id: mgd_snippetdir.h,v 1.3 2001/02/17 23:21:50 emile Exp $ +/* $Id: mgd_snippetdir.h,v 1.4 2001/02/21 00:24:56 davidg Exp $ Copyright (C) 1999 Jukka Zitting <[EMAIL PROTECTED]> Copyright (C) 2000 The Midgard Project ry Copyright (C) 2000 Emile Heyns, Aurora SA <[EMAIL PROTECTED]> @@ -29,6 +29,7 @@ extern MGD_FUNCTION(update_snippetdir); extern MGD_FUNCTION(delete_snippetdir); extern MGD_FUNCTION(delete_snippetdir_tree); +extern MGD_FUNCTION(walk_snippetdir_tree); extern MGD_FUNCTION(copy_snippetdir); extern MGD_FUNCTION(move_snippetdir); Index: php4/ext/midgard/mgd_style.h diff -u php4/ext/midgard/mgd_style.h:1.3 php4/ext/midgard/mgd_style.h:1.4 --- php4/ext/midgard/mgd_style.h:1.3 Sat Feb 17 15:21:50 2001 +++ php4/ext/midgard/mgd_style.h Tue Feb 20 16:24:56 2001 @@ -1,4 +1,4 @@ -/* $Id: mgd_style.h,v 1.3 2001/02/17 23:21:50 emile Exp $ +/* $Id: mgd_style.h,v 1.4 2001/02/21 00:24:56 davidg Exp $ Copyright (C) 1999 Jukka Zitting <[EMAIL PROTECTED]> Copyright (C) 2000 The Midgard Project ry Copyright (C) 2000 Emile Heyns, Aurora SA <[EMAIL PROTECTED]> @@ -21,6 +21,7 @@ #ifndef MGD_STYLE_H #define MGD_STYLE_H +extern MGD_FUNCTION(walk_style_tree); extern MGD_FUNCTION(is_style_owner); extern MGD_FUNCTION(list_styles); extern MGD_FUNCTION(get_style); Index: php4/ext/midgard/mgd_topic.h diff -u php4/ext/midgard/mgd_topic.h:1.3 php4/ext/midgard/mgd_topic.h:1.4 --- php4/ext/midgard/mgd_topic.h:1.3 Sat Feb 17 15:21:50 2001 +++ php4/ext/midgard/mgd_topic.h Tue Feb 20 16:24:56 2001 @@ -1,4 +1,4 @@ -/* $Id: mgd_topic.h,v 1.3 2001/02/17 23:21:50 emile Exp $ +/* $Id: mgd_topic.h,v 1.4 2001/02/21 00:24:56 davidg Exp $ Copyright (C) 1999 Jukka Zitting <[EMAIL PROTECTED]> Copyright (C) 2000 The Midgard Project ry Copyright (C) 2000 Emile Heyns, Aurora SA <[EMAIL PROTECTED]> @@ -33,5 +33,6 @@ extern MGD_FUNCTION(copy_topic); extern MGD_FUNCTION(move_topic); extern MGD_FUNCTION(delete_topic_tree); +extern MGD_FUNCTION(walk_topic_tree); #endif Index: php4/ext/midgard/midgard.c diff -u php4/ext/midgard/midgard.c:1.7 php4/ext/midgard/midgard.c:1.8 --- php4/ext/midgard/midgard.c:1.7 Tue Feb 20 15:54:05 2001 +++ php4/ext/midgard/midgard.c Tue Feb 20 16:24:56 2001 @@ -1,4 +1,4 @@ -/* $Id: midgard.c,v 1.7 2001/02/20 23:54:05 emile Exp $ +/* $Id: midgard.c,v 1.8 2001/02/21 00:24:56 davidg Exp $ Copyright (C) 1999 Jukka Zitting <[EMAIL PROTECTED]> Copyright (C) 2000 The Midgard Project ry Copyright (C) 2000 Emile Heyns, Aurora SA <[EMAIL PROTECTED]> @@ -268,6 +268,11 @@ MGD_FE(delete_snippetdir_tree, NULL) MGD_FE(copy_snippetdir, NULL) MGD_FE(move_snippetdir, NULL) +MGD_FE(walk_style_tree, NULL) +MGD_FE(walk_topic_tree, NULL) +MGD_FE(walk_article_tree, NULL) +MGD_FE(walk_page_tree, NULL) +MGD_FE(walk_snippetdir_tree, NULL) MGD_FE(is_style_owner, NULL) MGD_FE(list_styles, NULL) MGD_FE(get_style, NULL) @@ -700,6 +705,25 @@ } } +void midgard_user_call_func(midgard *mgd, int id, int level, void *xparam) +{ + zval arg1, arg2, arg3, *args[3]={&arg1,&arg2,&arg3}; + zval ** xp = (zval **)xparam; + zval retval, *return_value = &retval; //just to make sure + + ZVAL_LONG(args[0], id); + ZVAL_LONG(args[1], level); + args[2] = xp[0]; + + if(call_user_function(CG(function_table), NULL, + xp[1], return_value, 3, + args) != SUCCESS) { + php_error(E_WARNING,"Unable to call %s() - function does not exist", + (xp[1])->value.str.val); + return; + } + +} #endif /* HAVE_MIDGARD */ Index: php4/ext/midgard/page.c diff -u php4/ext/midgard/page.c:1.4 php4/ext/midgard/page.c:1.5 --- php4/ext/midgard/page.c:1.4 Mon Feb 19 07:50:20 2001 +++ php4/ext/midgard/page.c Tue Feb 20 16:24:56 2001 @@ -1,4 +1,4 @@ -/* $Id: page.c,v 1.4 2001/02/19 15:50:20 davidg Exp $ +/* $Id: page.c,v 1.5 2001/02/21 00:24:56 davidg Exp $ Copyright (C) 1999 Jukka Zitting <[EMAIL PROTECTED]> Copyright (C) 2000 The Midgard Project ry Copyright (C) 2000 Emile Heyns, Aurora SA <[EMAIL PROTECTED]> @@ -329,6 +329,8 @@ } MGD_MOVE_FUNCTION(page,page,page,up) + +MGD_WALK_FUNCTION(page) MidgardProperty MidgardPageProperties [] = { { IS_LONG, "up" }, Index: php4/ext/midgard/snippetdir.c diff -u php4/ext/midgard/snippetdir.c:1.3 php4/ext/midgard/snippetdir.c:1.4 --- php4/ext/midgard/snippetdir.c:1.3 Sat Feb 17 15:21:50 2001 +++ php4/ext/midgard/snippetdir.c Tue Feb 20 16:24:56 2001 @@ -1,4 +1,4 @@ -/* $Id: snippetdir.c,v 1.3 2001/02/17 23:21:50 emile Exp $ +/* $Id: snippetdir.c,v 1.4 2001/02/21 00:24:56 davidg Exp $ Copyright (C) 1999 Jukka Zitting <[EMAIL PROTECTED]> Copyright (C) 2000 The Midgard Project ry Copyright (C) 2000 Emile Heyns, Aurora SA <[EMAIL PROTECTED]> @@ -311,6 +311,8 @@ } MGD_MOVE_FUNCTION(snippetdir,snippetdir,snippetdir,up); + +MGD_WALK_FUNCTION(snippetdir) MidgardProperty MidgardSnippetdirProperties [] = { { IS_LONG, "up" }, Index: php4/ext/midgard/style.c diff -u php4/ext/midgard/style.c:1.3 php4/ext/midgard/style.c:1.4 --- php4/ext/midgard/style.c:1.3 Sat Feb 17 15:21:50 2001 +++ php4/ext/midgard/style.c Tue Feb 20 16:24:56 2001 @@ -1,4 +1,4 @@ -/* $Id: style.c,v 1.3 2001/02/17 23:21:50 emile Exp $ +/* $Id: style.c,v 1.4 2001/02/21 00:24:56 davidg Exp $ Copyright (C) 1999 Jukka Zitting <[EMAIL PROTECTED]> Copyright (C) 2000 The Midgard Project ry Copyright (C) 2000 Emile Heyns, Aurora SA <[EMAIL PROTECTED]> @@ -204,7 +204,6 @@ PHP_DELETE_REPLIGARD("style", id); } - MGD_FUNCTION(copy_style) { IDINIT; @@ -227,6 +226,8 @@ } MGD_MOVE_FUNCTION(style,style,style,up) + +MGD_WALK_FUNCTION(style) MidgardProperty MidgardStyleProperties [] = { { IS_LONG, "up" }, Index: php4/ext/midgard/topic.c diff -u php4/ext/midgard/topic.c:1.4 php4/ext/midgard/topic.c:1.5 --- php4/ext/midgard/topic.c:1.4 Mon Feb 19 07:50:20 2001 +++ php4/ext/midgard/topic.c Tue Feb 20 16:24:56 2001 @@ -1,4 +1,4 @@ -/* $Id: topic.c,v 1.4 2001/02/19 15:50:20 davidg Exp $ +/* $Id: topic.c,v 1.5 2001/02/21 00:24:56 davidg Exp $ Copyright (C) 1999 Jukka Zitting <[EMAIL PROTECTED]> Copyright (C) 2000 The Midgard Project ry Copyright (C) 2000 Emile Heyns, Aurora SA <[EMAIL PROTECTED]> @@ -429,6 +429,8 @@ } MGD_MOVE_FUNCTION(topic, topic, topic, up) + +MGD_WALK_FUNCTION(topic) MidgardProperty MidgardTopicProperties [] = { { IS_LONG, "up" },
-- PHP CVS Mailing List (http://www.php.net/) To unsubscribe, e-mail: [EMAIL PROTECTED] For additional commands, e-mail: [EMAIL PROTECTED] To contact the list administrators, e-mail: [EMAIL PROTECTED]