davidg          Sun Feb 25 11:31:17 2001 EDT

  Modified files:              
    /php4/ext/midgard   article.c midgard.c page.c topic.c 
  Log:
  optimized the mgd_is_in_xxx_tree() functions
  
  
Index: php4/ext/midgard/article.c
diff -u php4/ext/midgard/article.c:1.8 php4/ext/midgard/article.c:1.9
--- php4/ext/midgard/article.c:1.8      Sat Feb 24 05:39:30 2001
+++ php4/ext/midgard/article.c  Sun Feb 25 11:31:17 2001
@@ -1,4 +1,4 @@
-/* $Id: article.c,v 1.8 2001/02/24 13:39:30 davidg Exp $
+/* $Id: article.c,v 1.9 2001/02/25 19:31:17 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]>
@@ -32,7 +32,6 @@
 MGD_FUNCTION(is_article_in_topic_tree)
 {
        zval **root, **article;
-       int *ids, id, i;
 
        RETVAL_FALSE;
        CHECK_MGD;
@@ -57,17 +56,10 @@
                return;
 #endif
 
-       ids = mgd_tree(mgd_handle(), "topic", "up", (*root)->value.lval, 0, NULL);
-       if (ids) {
-               id = mgd_idfield(mgd_handle(), "topic", "article",
-                              (*article)->value.lval);
-               for (i = 0; ids[i]; i++)
-                       if (ids[i] == id) {
-                               free(ids);
-                               RETURN_TRUE;
-                       }
-               free(ids);
-       }
+       if(mgd_is_in_tree(mgd_handle(), "topic", "up", (*root)->value.lval,
+                               mgd_idfield(mgd_handle(), "topic", "article",
+                                               (*article)->value.lval)))
+               RETURN_TRUE;
 }
 
 const char *article_sort(const char *order)
Index: php4/ext/midgard/midgard.c
diff -u php4/ext/midgard/midgard.c:1.17 php4/ext/midgard/midgard.c:1.18
--- php4/ext/midgard/midgard.c:1.17     Sat Feb 24 13:12:11 2001
+++ php4/ext/midgard/midgard.c  Sun Feb 25 11:31:17 2001
@@ -1,4 +1,4 @@
-/* $Id: midgard.c,v 1.17 2001/02/24 21:12:11 davidg Exp $
+/* $Id: midgard.c,v 1.18 2001/02/25 19:31:17 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]>
@@ -374,7 +374,7 @@
        MGDLS_FETCH();
        
        /* set apache log facilities available to the library */
-       // mgd_set_log_debug_func(mgd_log_debug);
+       mgd_set_log_debug_func(mgd_log_debug);
 
        midgard_module = ap_find_linked_module("mod_midgard.c");
        if (!midgard_module) {
@@ -754,7 +754,8 @@
        ALLOC_ZVAL(return_value);       ZVAL_NULL(return_value);
        ALLOC_ZVAL(args[0]);            ZVAL_LONG(args[0], id);
        ALLOC_ZVAL(args[1]);            ZVAL_LONG(args[1], level);
-       args[2] = xp[0];                // DG: is this needed ? -> 
zval_copy_ctor(args[2]);
+       args[2] = xp[0];                // DG: is this needed ? ->
+       zval_copy_ctor(args[2]);
 
        if(call_user_function(CG(function_table), NULL,
                                  xp[1], return_value, 3,
Index: php4/ext/midgard/page.c
diff -u php4/ext/midgard/page.c:1.8 php4/ext/midgard/page.c:1.9
--- php4/ext/midgard/page.c:1.8 Sat Feb 24 05:42:00 2001
+++ php4/ext/midgard/page.c     Sun Feb 25 11:31:17 2001
@@ -1,4 +1,4 @@
-/* $Id: page.c,v 1.8 2001/02/24 13:42:00 davidg Exp $
+/* $Id: page.c,v 1.9 2001/02/25 19:31:17 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]>
@@ -70,7 +70,6 @@
 MGD_FUNCTION(is_in_page_tree)
 {
     zval **root, **page;
-    int *ids, i;
 
     RETVAL_FALSE;
        CHECK_MGD;
@@ -90,15 +89,9 @@
        if(!mgd_exists_id(mgd_handle(), "page", "id=$d", (*root)->value.lval))
                RETURN_FALSE_BECAUSE(MGD_ERR_NOT_EXISTS);
 
-    ids = mgd_tree(mgd_handle(), "page", "up", (*root)->value.lval, 0, NULL);
-       if (ids) {
-               for (i = 0; ids[i]; i++)
-                       if (ids[i] == (*page)->value.lval) {
-                               free(ids);
-                               RETURN_TRUE;
-                       }
-               free(ids);
-       }
+    if(mgd_is_in_tree(mgd_handle(), "page", "up",
+                                                       (*root)->value.lval, 
+(*page)->value.lval))
+               RETURN_TRUE;
 }
 
 MGD_FUNCTION(get_page)
Index: php4/ext/midgard/topic.c
diff -u php4/ext/midgard/topic.c:1.8 php4/ext/midgard/topic.c:1.9
--- php4/ext/midgard/topic.c:1.8        Sat Feb 24 05:39:30 2001
+++ php4/ext/midgard/topic.c    Sun Feb 25 11:31:17 2001
@@ -1,4 +1,4 @@
-/* $Id: topic.c,v 1.8 2001/02/24 13:39:30 davidg Exp $
+/* $Id: topic.c,v 1.9 2001/02/25 19:31:17 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]>
@@ -103,7 +103,7 @@
 MGD_FUNCTION(is_in_topic_tree)
 {
        zval **root, **topic;
-       int *ids, i;
+       int i;
 
        RETVAL_FALSE;
        CHECK_MGD;
@@ -127,15 +127,9 @@
                return;
 #endif
 
-       ids = mgd_tree(mgd_handle(), "topic", "up", (*root)->value.lval, 0, NULL);
-       if (ids) {
-               for (i = 0; ids[i]; i++)
-                       if (ids[i] == (*topic)->value.lval) {
-                               free(ids);
-                               RETURN_TRUE;
-                       }
-               free(ids);
-       }
+       if((i = mgd_is_in_tree(mgd_handle(), "topic", "up",
+                               (*root)->value.lval, (*topic)->value.lval)))
+               RETURN_TRUE;
 }
 
 MGD_FUNCTION(get_topic)
@@ -195,8 +189,8 @@
        zval **up, **name, **description, **extra, **owner, **code;
        zval *self;
 
-       RETVAL_FALSE;
        CHECK_MGD;
+       RETVAL_FALSE;
 
        if ((self = getThis()) != NULL) {
                if (!MGD_PROPFIND(self, "up", up)
@@ -227,7 +221,6 @@
                          (*up)->value.lval, (*name)->value.str.val)) {
                RETURN_FALSE_BECAUSE(MGD_ERR_ACCESS_DENIED);
        }
-
 #if HAVE_MIDGARD_SITEGROUPS
        /* up must be in same SG or be 0 */
        if ((*up)->value.lval != 0 && !mgd_exists_id(mgd_handle(), "topic",



-- 
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