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]

Reply via email to