[PHP-CVS] cvs: php4 /ext/midgard article.c element.c page.c pageelement.c topic.c

2001-03-22 Thread Emiliano Heyns

emile   Thu Mar 22 07:11:41 2001 EDT

  Modified files:  
/php4/ext/midgard   article.c element.c page.c pageelement.c topic.c 
  Log:
  Added update duplicate checks
  
  
Index: php4/ext/midgard/article.c
diff -u php4/ext/midgard/article.c:1.18 php4/ext/midgard/article.c:1.19
--- php4/ext/midgard/article.c:1.18 Wed Mar 21 06:53:28 2001
+++ php4/ext/midgard/article.c  Thu Mar 22 07:11:40 2001
@@ -1,4 +1,4 @@
-/* $Id: article.c,v 1.18 2001/03/21 14:53:28 emile Exp $
+/* $Id: article.c,v 1.19 2001/03/22 15:11:40 emile Exp $
 Copyright (C) 1999 Jukka Zitting <[EMAIL PROTECTED]>
 Copyright (C) 2000 The Midgard Project ry
 Copyright (C) 2000 Emile Heyns, Aurora SA <[EMAIL PROTECTED]>
@@ -556,7 +556,8 @@
RETURN_FALSE_BECAUSE(MGD_ERR_ACCESS_DENIED);
}
 
-   if (mgd_exists_id(mgd_handle(), "article", "topic=$d AND name=$q",
+   /* skip duplicate check for empty names because the name isn't mandatory */
+   if ((*name)->value.str.len && mgd_exists_id(mgd_handle(), "article", "topic=$d AND 
+name=$q",
  (*topic)->value.lval, (*name)->value.str.val)) {
   RETURN_FALSE_BECAUSE(MGD_ERR_DUPLICATE);
}
@@ -864,7 +865,8 @@
  RETURN_FALSE_BECAUSE(MGD_ERR_NOT_EXISTS);
}
 
-   if (mgd_exists_id(mgd_handle(), "article", "topic=$d AND name=$q AND id<>$d",
+   /* skip duplicate check for empty names because the name isn't mandatory */
+   if ((*name)->value.str.len && mgd_exists_id(mgd_handle(), "article", "topic=$d AND 
+name=$q AND id<>$d",
  (*topic)->value.lval, (*name)->value.str.val, (*id)->value.lval)) {
   RETURN_FALSE_BECAUSE(MGD_ERR_DUPLICATE);
}
Index: php4/ext/midgard/element.c
diff -u php4/ext/midgard/element.c:1.7 php4/ext/midgard/element.c:1.8
--- php4/ext/midgard/element.c:1.7  Sat Mar 10 14:43:10 2001
+++ php4/ext/midgard/element.c  Thu Mar 22 07:11:40 2001
@@ -1,4 +1,4 @@
-/* $Id: element.c,v 1.7 2001/03/10 22:43:10 emile Exp $
+/* $Id: element.c,v 1.8 2001/03/22 15:11:40 emile Exp $
 Copyright (C) 1999 Jukka Zitting <[EMAIL PROTECTED]>
 Copyright (C) 2000 The Midgard Project ry
 Copyright (C) 2000 Emile Heyns, Aurora SA <[EMAIL PROTECTED]>
@@ -146,6 +146,11 @@
if (!isstyleowner(mgd_idfield(mgd_handle(), "style", "element",
  (*id)->value.lval)))
   RETURN_FALSE_BECAUSE(MGD_ERR_ACCESS_DENIED);
+
+   if (mgd_exists_id(mgd_handle(), "element", "style=$d AND name=$q AND id<>$d",
+ mgd_idfield(mgd_handle(), "style", "element", (*id)->value.lval),
+ (*name)->value.str.val, (*id)->value.lval))
+  RETURN_FALSE_BECAUSE(MGD_ERR_DUPLICATE);
 
php_midgard_update(return_value, "element", "name=$q,value=$q",
   (*id)->value.lval,
Index: php4/ext/midgard/page.c
diff -u php4/ext/midgard/page.c:1.12 php4/ext/midgard/page.c:1.13
--- php4/ext/midgard/page.c:1.12Sat Mar 10 14:43:10 2001
+++ php4/ext/midgard/page.c Thu Mar 22 07:11:40 2001
@@ -1,4 +1,4 @@
-/* $Id: page.c,v 1.12 2001/03/10 22:43:10 emile Exp $
+/* $Id: page.c,v 1.13 2001/03/22 15:11:40 emile Exp $
 Copyright (C) 1999 Jukka Zitting <[EMAIL PROTECTED]>
 Copyright (C) 2000 The Midgard Project ry
 Copyright (C) 2000 Emile Heyns, Aurora SA <[EMAIL PROTECTED]>
@@ -255,6 +255,11 @@

if (!mgd_exists_id(mgd_handle(), "person", "id=$d", (*author)->value.lval))
   RETURN_FALSE_BECAUSE(MGD_ERR_NOT_EXISTS);
+
+   if (mgd_exists_id(mgd_handle(), "page", "up=$d AND name=$q AND id<>$d",
+ mgd_idfield(mgd_handle(), "up", "page", (*id)->value.lval),
+ (*name)->value.str.val, (*id)->value.lval))
+  RETURN_FALSE_BECAUSE(MGD_ERR_DUPLICATE);
 
php_midgard_update(return_value, "page",
   "name=$q,style=$d,title=$q,changed=Curdate(),"
Index: php4/ext/midgard/pageelement.c
diff -u php4/ext/midgard/pageelement.c:1.7 php4/ext/midgard/pageelement.c:1.8
--- php4/ext/midgard/pageelement.c:1.7  Sat Mar 10 14:43:10 2001
+++ php4/ext/midgard/pageelement.c  Thu Mar 22 07:11:40 2001
@@ -1,4 +1,4 @@
-/* $Id: pageelement.c,v 1.7 2001/03/10 22:43:10 emile Exp $
+/* $Id: pageelement.c,v 1.8 2001/03/22 15:11:40 emile Exp $
 Copyright (C) 1999 Jukka Zitting <[EMAIL PROTECTED]>
 Copyright (C) 2000 The Midgard Project ry
 Copyright (C) 2000 Emile Heyns, Aurora SA <[EMAIL PROTECTED]>
@@ -145,6 +145,11 @@
if (!ispageowner(mgd_idfield(mgd_handle(), "page", "pageelement",
 (*id)->value.lval)))
   RETURN_FALSE_BECAUSE(MGD_ERR_ACCESS_DENIED);
+
+   if (mgd_exists_id(mgd_handle(), "pageelement", "page=$d AND name=$q AND id<>$d",
+ mgd_idfield(mgd_handle(), "page", "pageelement", (*id)->value.lval),
+ (*name)->value.str.val, (*id)->value.lval))
+  RETURN_FALSE_BECAUSE(MGD_ERR_DUPLICATE);
 
php_midgard_update(return_value, "pageelement",
   "name=$q,value=$q,info=$d", (*id)->value.lval,
Index: php4/ext/midgard/top

[PHP-CVS] cvs: php4 /ext/midgard article.c

2001-03-21 Thread Emiliano Heyns

emile   Wed Mar 21 06:53:29 2001 EDT

  Modified files:  
/php4/ext/midgard   article.c 
  Log:
  Disallow duplicate article names under one parent
  
  
Index: php4/ext/midgard/article.c
diff -u php4/ext/midgard/article.c:1.17 php4/ext/midgard/article.c:1.18
--- php4/ext/midgard/article.c:1.17 Fri Mar 16 07:01:35 2001
+++ php4/ext/midgard/article.c  Wed Mar 21 06:53:28 2001
@@ -1,4 +1,4 @@
-/* $Id: article.c,v 1.17 2001/03/16 15:01:35 emile Exp $
+/* $Id: article.c,v 1.18 2001/03/21 14:53:28 emile Exp $
 Copyright (C) 1999 Jukka Zitting <[EMAIL PROTECTED]>
 Copyright (C) 2000 The Midgard Project ry
 Copyright (C) 2000 Emile Heyns, Aurora SA <[EMAIL PROTECTED]>
@@ -556,6 +556,11 @@
RETURN_FALSE_BECAUSE(MGD_ERR_ACCESS_DENIED);
}
 
+   if (mgd_exists_id(mgd_handle(), "article", "topic=$d AND name=$q",
+ (*topic)->value.lval, (*name)->value.str.val)) {
+  RETURN_FALSE_BECAUSE(MGD_ERR_DUPLICATE);
+   }
+
php_midgard_create(return_value, "article",
   "up,topic,name,title,abstract,content,author,"
   "url,calstart,caldays,icon,view,print,"
@@ -857,6 +862,11 @@
   upval = atol((*up)->value.str.val);
   if (upval != 0 && !mgd_exists_id(mgd_handle(), "article", "id=$d", upval))
  RETURN_FALSE_BECAUSE(MGD_ERR_NOT_EXISTS);
+   }
+
+   if (mgd_exists_id(mgd_handle(), "article", "topic=$d AND name=$q AND id<>$d",
+ (*topic)->value.lval, (*name)->value.str.val, (*id)->value.lval)) {
+  RETURN_FALSE_BECAUSE(MGD_ERR_DUPLICATE);
}
 
if (!istopicowner((*topic)->value.lval)) {



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




[PHP-CVS] cvs: php4 /ext/midgard article.c

2001-03-16 Thread Emiliano Heyns

emile   Fri Mar 16 07:01:35 2001 EDT

  Modified files:  
/php4/ext/midgard   article.c 
  Log:
  String used as long.
  
  
Index: php4/ext/midgard/article.c
diff -u php4/ext/midgard/article.c:1.16 php4/ext/midgard/article.c:1.17
--- php4/ext/midgard/article.c:1.16 Tue Mar 13 23:57:46 2001
+++ php4/ext/midgard/article.c  Fri Mar 16 07:01:35 2001
@@ -1,4 +1,4 @@
-/* $Id: article.c,v 1.16 2001/03/14 07:57:46 emile Exp $
+/* $Id: article.c,v 1.17 2001/03/16 15:01:35 emile Exp $
 Copyright (C) 1999 Jukka Zitting <[EMAIL PROTECTED]>
 Copyright (C) 2000 The Midgard Project ry
 Copyright (C) 2000 Emile Heyns, Aurora SA <[EMAIL PROTECTED]>
@@ -780,6 +780,7 @@
zval **url, **calstart, **caldays, **icon, **view, **print;
zval **extra1, **extra2, **extra3;
zval **type, **score, **up, *self;
+   long upval;
 
RETVAL_FALSE;
CHECK_MGD;
@@ -852,8 +853,11 @@
if (!mgd_exists_id(mgd_handle(), "topic", "id=$d", (*topic)->value.lval))
RETURN_FALSE_BECAUSE(MGD_ERR_NOT_EXISTS);
 
-   if (up && (*up)->value.lval != 0 && !mgd_exists_id(mgd_handle(), "article", 
"id=$d", (*up)->value.lval))
-   RETURN_FALSE_BECAUSE(MGD_ERR_NOT_EXISTS);
+   if (up) {
+  upval = atol((*up)->value.str.val);
+  if (upval != 0 && !mgd_exists_id(mgd_handle(), "article", "id=$d", upval))
+ RETURN_FALSE_BECAUSE(MGD_ERR_NOT_EXISTS);
+   }
 
if (!istopicowner((*topic)->value.lval)) {
RETURN_FALSE_BECAUSE(MGD_ERR_ACCESS_DENIED);



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




[PHP-CVS] cvs: php4 /ext/midgard article.c

2001-03-13 Thread Emiliano Heyns

emile   Tue Mar 13 23:57:46 2001 EDT

  Modified files:  
/php4/ext/midgard   article.c 
  Log:
  Test parameter for existance before use.
  
  
Index: php4/ext/midgard/article.c
diff -u php4/ext/midgard/article.c:1.15 php4/ext/midgard/article.c:1.16
--- php4/ext/midgard/article.c:1.15 Mon Mar 12 02:19:37 2001
+++ php4/ext/midgard/article.c  Tue Mar 13 23:57:46 2001
@@ -1,4 +1,4 @@
-/* $Id: article.c,v 1.15 2001/03/12 10:19:37 davidg Exp $
+/* $Id: article.c,v 1.16 2001/03/14 07:57:46 emile Exp $
 Copyright (C) 1999 Jukka Zitting <[EMAIL PROTECTED]>
 Copyright (C) 2000 The Midgard Project ry
 Copyright (C) 2000 Emile Heyns, Aurora SA <[EMAIL PROTECTED]>
@@ -852,7 +852,7 @@
if (!mgd_exists_id(mgd_handle(), "topic", "id=$d", (*topic)->value.lval))
RETURN_FALSE_BECAUSE(MGD_ERR_NOT_EXISTS);
 
-   if ((*up)->value.lval != 0 && !mgd_exists_id(mgd_handle(), "article", "id=$d", 
(*up)->value.lval))
+   if (up && (*up)->value.lval != 0 && !mgd_exists_id(mgd_handle(), "article", 
+"id=$d", (*up)->value.lval))
RETURN_FALSE_BECAUSE(MGD_ERR_NOT_EXISTS);
 
if (!istopicowner((*topic)->value.lval)) {



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




[PHP-CVS] cvs: php4 /ext/midgard article.c

2001-03-12 Thread David Guerizec

davidg  Mon Mar 12 02:19:37 2001 EDT

  Modified files:  
/php4/ext/midgard   article.c 
  Log:
  added NULL-check
  
  
Index: php4/ext/midgard/article.c
diff -u php4/ext/midgard/article.c:1.14 php4/ext/midgard/article.c:1.15
--- php4/ext/midgard/article.c:1.14 Fri Mar  9 04:16:57 2001
+++ php4/ext/midgard/article.c  Mon Mar 12 02:19:37 2001
@@ -1,4 +1,4 @@
-/* $Id: article.c,v 1.14 2001/03/09 12:16:57 davidg Exp $
+/* $Id: article.c,v 1.15 2001/03/12 10:19:37 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]>
@@ -645,7 +645,7 @@
convert_to_long_ex(id);
convert_to_long_ex(up);
 
-   if ((*up)->value.lval != 0) {
+   if (up && ((*up)->value.lval != 0)) {
 #if HAVE_MIDGARD_SITEGROUPS
if (!mgd_exists_bool(mgd_handle(), "article src, article tgt",

"src.id=$d AND tgt.id=$d"



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




[PHP-CVS] cvs: php4 /ext/midgard article.c

2001-03-09 Thread David Guerizec

davidg  Fri Mar  9 04:16:58 2001 EDT

  Modified files:  
/php4/ext/midgard   article.c 
  Log:
  still a typo
  
  
Index: php4/ext/midgard/article.c
diff -u php4/ext/midgard/article.c:1.13 php4/ext/midgard/article.c:1.14
--- php4/ext/midgard/article.c:1.13 Fri Mar  9 04:06:26 2001
+++ php4/ext/midgard/article.c  Fri Mar  9 04:16:57 2001
@@ -1,4 +1,4 @@
-/* $Id: article.c,v 1.13 2001/03/09 12:06:26 davidg Exp $
+/* $Id: article.c,v 1.14 2001/03/09 12:16:57 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]>
@@ -480,7 +480,7 @@
 
 MGD_FUNCTION(int, create_article, (int up, int topic, string name,
string title, 
string abstract,
-   string 
content, string author,
+   string 
+content, int author,
string url, 
string calstart,
int caldays, 
int icon, int view,
int print, 
string extra1, string extra2,



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




[PHP-CVS] cvs: php4 /ext/midgard article.c

2001-03-09 Thread David Guerizec

davidg  Fri Mar  9 04:06:27 2001 EDT

  Modified files:  
/php4/ext/midgard   article.c 
  Log:
  Fixed typo.
  
  
Index: php4/ext/midgard/article.c
diff -u php4/ext/midgard/article.c:1.12 php4/ext/midgard/article.c:1.13
--- php4/ext/midgard/article.c:1.12 Thu Mar  8 02:25:15 2001
+++ php4/ext/midgard/article.c  Fri Mar  9 04:06:26 2001
@@ -1,4 +1,4 @@
-/* $Id: article.c,v 1.12 2001/03/08 10:25:15 davidg Exp $
+/* $Id: article.c,v 1.13 2001/03/09 12:06:26 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]>
@@ -543,13 +543,13 @@
convert_to_string_ex(extra3);
convert_to_long_ex(type);
 
-   if (!mgd_exists_id(mgd_handle(), "person", "id=$id", (*author)->value.lval))
+   if (!mgd_exists_id(mgd_handle(), "person", "id=$d", (*author)->value.lval))
RETURN_FALSE_BECAUSE(MGD_ERR_NOT_EXISTS);
 
-   if (!mgd_exists_id(mgd_handle(), "topic", "id=$id", (*topic)->value.lval))
+   if (!mgd_exists_id(mgd_handle(), "topic", "id=$d", (*topic)->value.lval))
RETURN_FALSE_BECAUSE(MGD_ERR_NOT_EXISTS);
 
-   if ((*up)->value.lval != 0 && !mgd_exists_id(mgd_handle(), "article", "id=$id", 
(*up)->value.lval))
+   if ((*up)->value.lval != 0 && !mgd_exists_id(mgd_handle(), "article", "id=$d", 
+(*up)->value.lval))
RETURN_FALSE_BECAUSE(MGD_ERR_NOT_EXISTS);
 
if (!istopicowner((*topic)->value.lval)) {
@@ -846,13 +846,13 @@
RETURN_FALSE_BECAUSE(MGD_ERR_ACCESS_DENIED);
}
 
-   if (!mgd_exists_id(mgd_handle(), "person", "id=$id", (*author)->value.lval))
+   if (!mgd_exists_id(mgd_handle(), "person", "id=$d", (*author)->value.lval))
RETURN_FALSE_BECAUSE(MGD_ERR_NOT_EXISTS);
 
-   if (!mgd_exists_id(mgd_handle(), "topic", "id=$id", (*topic)->value.lval))
+   if (!mgd_exists_id(mgd_handle(), "topic", "id=$d", (*topic)->value.lval))
RETURN_FALSE_BECAUSE(MGD_ERR_NOT_EXISTS);
 
-   if ((*up)->value.lval != 0 && !mgd_exists_id(mgd_handle(), "article", "id=$id", 
(*up)->value.lval))
+   if ((*up)->value.lval != 0 && !mgd_exists_id(mgd_handle(), "article", "id=$d", 
+(*up)->value.lval))
RETURN_FALSE_BECAUSE(MGD_ERR_NOT_EXISTS);
 
if (!istopicowner((*topic)->value.lval)) {



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




[PHP-CVS] cvs: php4 /ext/midgard article.c mgd_session.h session.c session.sql

2001-03-08 Thread David Guerizec

davidg  Thu Mar  8 02:25:15 2001 EDT

  Added files: 
/php4/ext/midgard   session.c mgd_session.h session.sql 

  Modified files:  
/php4/ext/midgard   article.c 
  Log:
  Session management (experimental code)
  
  
Index: php4/ext/midgard/article.c
diff -u php4/ext/midgard/article.c:1.11 php4/ext/midgard/article.c:1.12
--- php4/ext/midgard/article.c:1.11 Tue Mar  6 02:35:02 2001
+++ php4/ext/midgard/article.c  Thu Mar  8 02:25:15 2001
@@ -1,4 +1,4 @@
-/* $Id: article.c,v 1.11 2001/03/06 10:35:02 emile Exp $
+/* $Id: article.c,v 1.12 2001/03/08 10:25:15 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]>
@@ -770,7 +770,7 @@
 
 MGD_FUNCTION(bool, update_article, (int id, int topic, string name,
string title, 
string abstract,
-   string 
content, string author,
+   string 
+content, int author,
string url, 
string calstart,
int caldays, 
int icon, int view,
int print, 
string extra1, string extra2,

Index: php4/ext/midgard/session.c
+++ php4/ext/midgard/session.c
/* $Id: session.c,v 1.1 2001/03/08 10:25:15 davidg Exp $
Copyright (C) 1999 Jukka Zitting <[EMAIL PROTECTED]>
Copyright (C) 2000 The Midgard Project ry
Copyright (C) 2001 David Guerizec, Aurora SA <[EMAIL PROTECTED]>

This program is free software; you can redistribute it and/or modify it
under the terms of the GNU Lesser General Public License as published
by the Free Software Foundation; either version 2 of the License, or
(at your option) any later version.

This program is distributed in the hope that it will be useful,
but WITHOUT ANY WARRANTY; without even the implied warranty of
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
GNU General Public License for more details.

You should have received a copy of the GNU General Public License
along with this program; if not, write to the Free Software
Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA  02111-1307  USA
*/

#include "php_midgard.h"

#if HAVE_MIDGARD
#if HAVE_MIDGARD_SESSION
#include "php.h"


#include "../session/php_session.h"
#include "mgd_session.h"

#define GET_MGD midgard * mgd = mgd_handle();

typedef struct {
int id;
int ready;
} ps_midgard;

ps_module ps_mod_midgard = {
PS_MOD(midgard)
};

static int ps_midgard_valid_key(const char *key)
{
size_t len;
const char *p;
char c;
int ret = 1;

for (p = key; (c = *p); p++) {
/* valid characters are a..z,A..Z,0..9 */
if (!((c >= 'a' && c <= 'z') ||
(c >= 'A' && c <= 'Z') ||
(c >= '0' && c <= '9'))) {
ret = 0;
break;
}
}

len = p - key;

if (len == 0)
ret = 0;

return ret;
}

static int ps_midgard_write(ps_midgard * data, const char * key, const char * val)
{
GET_MGD;

if(!data->ready)
return FAILURE;
if(data->id) {
if(mgd_update(mgd, "session", data->id, 
"sess_data='$s', "
"expire=UNIX_TIMESTAMP() + 3600, "
"changed=UNIX_TIMESTAMP()",
val))
return SUCCESS;
assert(0);
} else {
if((data->id = mgd_create(mgd, "session",
"sess_key, sess_data, person, expire, 
changed",
"$q, $q, $d, UNIX_TIMESTAMP() + 3600, 
UNIX_TIMESTAMP()",
key, val, mgd_user(mgd
return SUCCESS;
assert(0);
}
return FAILURE;
}

static void ps_midgard_open(ps_midgard *data, const char *key)
{
GET_MGD;

if(data->id) {
php_error(E_WARNING, "Called twice ??");
}

data->id = 0;
if(!mgd) {
php_error(E_WARNING, "Midgard is not ready yet for session management,"
" please come back later...");
return;
}
if(!ps_midgard_valid_key(key))
return;

data->id = mgd_exists_id(mgd, "session", 
  

[PHP-CVS] cvs: php4 /ext/midgard article.c element.c event.c eventmember.c file.c group.c host.c page.c pageelement.c preferences.c snippet.c snippetdir.c style.c topic.c

2001-03-06 Thread Emiliano Heyns

emile   Tue Mar  6 02:35:03 2001 EDT

  Modified files:  
/php4/ext/midgard   article.c element.c event.c eventmember.c file.c 
group.c host.c page.c pageelement.c preferences.c 
snippet.c snippetdir.c style.c topic.c 
  Log:
  Object integrity checks cleanup
  
  

Index: php4/ext/midgard/article.c
diff -u php4/ext/midgard/article.c:1.10 php4/ext/midgard/article.c:1.11
--- php4/ext/midgard/article.c:1.10 Tue Feb 27 17:00:31 2001
+++ php4/ext/midgard/article.c  Tue Mar  6 02:35:02 2001
@@ -1,4 +1,4 @@
-/* $Id: article.c,v 1.10 2001/02/28 01:00:31 davidg Exp $
+/* $Id: article.c,v 1.11 2001/03/06 10:35:02 emile Exp $
 Copyright (C) 1999 Jukka Zitting <[EMAIL PROTECTED]>
 Copyright (C) 2000 The Midgard Project ry
 Copyright (C) 2000 Emile Heyns, Aurora SA <[EMAIL PROTECTED]>
@@ -543,39 +543,18 @@
convert_to_string_ex(extra3);
convert_to_long_ex(type);
 
-   /* author must NOT be 0 */
-   if (!(*author)->value.lval)
-  RETURN_FALSE_BECAUSE(MGD_ERR_NOT_EXISTS);
+   if (!mgd_exists_id(mgd_handle(), "person", "id=$id", (*author)->value.lval))
+   RETURN_FALSE_BECAUSE(MGD_ERR_NOT_EXISTS);
 
-   if (!istopicowner((*topic)->value.lval)) {
-   RETURN_FALSE_BECAUSE(MGD_ERR_ACCESS_DENIED);
-   }
+   if (!mgd_exists_id(mgd_handle(), "topic", "id=$id", (*topic)->value.lval))
+   RETURN_FALSE_BECAUSE(MGD_ERR_NOT_EXISTS);
 
-#if HAVE_MIDGARD_SITEGROUPS
-   /* up must be in same SG or be 0 */
-   if ((*up)->value.lval != 0 && !mgd_exists_id(mgd_handle(), "article",
- "id=$d AND sitegroup IN (0,$d)",
- (*up)->value.lval,
- mgd_sitegroup(mgd_handle( {
-   RETURN_FALSE_BECAUSE(MGD_ERR_SITEGROUP_VIOLATION);
-   }
+   if ((*up)->value.lval != 0 && !mgd_exists_id(mgd_handle(), "article", "id=$id", 
+(*up)->value.lval))
+   RETURN_FALSE_BECAUSE(MGD_ERR_NOT_EXISTS);
 
-   /* topic must be in same SG or be 0 */
-   if ((*topic)->value.lval != 0 && !mgd_exists_id(mgd_handle(), "topic",
-"id=$d AND sitegroup IN (0,$d)",
-(*topic)->value.lval,
-mgd_sitegroup(mgd_handle
-  ( {
-  RETURN_FALSE_BECAUSE(MGD_ERR_SITEGROUP_VIOLATION);
-   }
-   /* author must be in same SG */
-   if (!mgd_exists_id(mgd_handle(), "person",
- "id=$d AND sitegroup IN (0,$d)",
- (*author)->value.lval,
- mgd_sitegroup(mgd_handle( {
-  RETURN_FALSE_BECAUSE(MGD_ERR_SITEGROUP_VIOLATION);
+   if (!istopicowner((*topic)->value.lval)) {
+   RETURN_FALSE_BECAUSE(MGD_ERR_ACCESS_DENIED);
}
-#endif
 
php_midgard_create(return_value, "article",
   "up,topic,name,title,abstract,content,author,"
@@ -655,9 +634,7 @@
 MGD_FUNCTION(bool, update_article_replyto, (int id, int up))
 {
zval **id, **up;
-#if HAVE_MIDGARD_SITEGROUPS
int parent_topic;
-#endif
RETVAL_FALSE;
CHECK_MGD;
 
@@ -668,33 +645,32 @@
convert_to_long_ex(id);
convert_to_long_ex(up);
 
+   if ((*up)->value.lval != 0) {
 #if HAVE_MIDGARD_SITEGROUPS
-   parent_topic =
-  mgd_idfield(mgd_handle(), "topic", "article", (*up)->value.lval);
-   /* up must be in same SG or be 0 */
-   if ((*up)->value.lval != 0
-   && !mgd_exists_bool(mgd_handle(), "article src, article tgt",
-  "src.id=$d AND tgt.id=$d"
-  " AND (src.sitegroup=tgt.sitegroup"
-  " OR src.sitegroup=0" " OR tgt.sitegroup=0)",
-  (*id)->value.lval, (*up)->value.lval)) {
-   RETURN_FALSE_BECAUSE(MGD_ERR_SITEGROUP_VIOLATION);
+   if (!mgd_exists_bool(mgd_handle(), "article src, article tgt",
+   
+"src.id=$d AND tgt.id=$d"
+   " AND 
+(src.sitegroup=tgt.sitegroup"
+  
+ " OR src.sitegroup=0"
+  
+ " OR tgt.sitegroup=0)",
+   
+(*id)->value.lval, (*up)->value.lval)) {
+  RETURN_FALSE_BECAUSE(MGD_ERR_SITEGROUP_VIOLATION);
}
+#else
+   if (!mgd_exists_id(mgd_handle(), "article", "id=$d", (*up)->value.lval))
+

[PHP-CVS] cvs: php4 /ext/midgard article.c attachment.c calendar.c element.c event.c eventmember.c file.c group.c host.c image.c mail.c member.c mgd_article.h mgd_attachment.h mgd_calendar.h mgd_element.h mgd_event.h mgd_eventmember.h mgd_file.h mgd_group.h mgd_host.h mgd_image.h mgd_internal.h mgd_mail.h mgd_member.h mgd_oop.h mgd_page.h mgd_pageelement.h mgd_pagelink.h mgd_person.h mgd_preferences.h mgd_preparser.h mgd_sitegroup.h mgd_snippet.h mgd_snippetdir.h mgd_style.h mgd_topic.h midgard.c oop.c page.c pageelement.c pagelink.c parameter.c person.c preferences.c preparser.c sitegroup.c snippet.c snippetdir.c style.c topic.c

2001-02-27 Thread David Guerizec

davidg  Tue Feb 27 17:00:40 2001 EDT

  Modified files:  
/php4/ext/midgard   article.c attachment.c calendar.c element.c 
event.c eventmember.c file.c group.c host.c 
image.c mail.c member.c mgd_article.h 
mgd_attachment.h mgd_calendar.h mgd_element.h 
mgd_event.h mgd_eventmember.h mgd_file.h 
mgd_group.h mgd_host.h mgd_image.h mgd_internal.h 
mgd_mail.h mgd_member.h mgd_oop.h mgd_page.h 
mgd_pageelement.h mgd_pagelink.h mgd_person.h 
mgd_preferences.h mgd_preparser.h mgd_sitegroup.h 
mgd_snippet.h mgd_snippetdir.h mgd_style.h 
mgd_topic.h midgard.c oop.c page.c pageelement.c 
pagelink.c parameter.c person.c preferences.c 
preparser.c sitegroup.c snippet.c snippetdir.c 
style.c topic.c 
  Log:
  First step towards automatic documentation
  
  

Index: php4/ext/midgard/article.c
diff -u php4/ext/midgard/article.c:1.9 php4/ext/midgard/article.c:1.10
--- php4/ext/midgard/article.c:1.9  Sun Feb 25 11:31:17 2001
+++ php4/ext/midgard/article.c  Tue Feb 27 17:00:31 2001
@@ -1,4 +1,4 @@
-/* $Id: article.c,v 1.9 2001/02/25 19:31:17 davidg Exp $
+/* $Id: article.c,v 1.10 2001/02/28 01:00:31 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]>
@@ -22,14 +22,14 @@
 #include "mgd_oop.h"
 #include "mgd_article.h"
 
-MGD_FUNCTION(is_article_owner)
+MGD_FUNCTION(bool, is_article_owner, (int id))
 {
IDINIT;
CHECK_MGD;
RETVAL_LONG(isarticleowner(id));
 }
 
-MGD_FUNCTION(is_article_in_topic_tree)
+MGD_FUNCTION(bool, is_article_in_topic_tree, (int topic_root, int id))
 {
zval **root, **article;
 
@@ -103,7 +103,7 @@
return sort[i].sort;
 }
 
-MGD_FUNCTION(list_topic_articles)
+MGD_FUNCTION(mixed, list_topic_articles, (int id, [string sort, [int type, [int 
+up]]]))
 {
const char *sortv = NULL;
int typev = 0;
@@ -177,7 +177,7 @@
   up_wild);
 }
 
-MGD_FUNCTION(list_reply_articles)
+MGD_FUNCTION(mixed, list_reply_articles, (int id))
 {
IDINIT;
CHECK_MGD;
@@ -187,7 +187,7 @@
   "article.created DESC", id);
 }
 
-MGD_FUNCTION(list_topic_articles_all)
+MGD_FUNCTION(mixed, list_topic_articles_all, (int id, [string sort, [int type, [int 
+up]]]))
 {
int *topics;
const char *sortv = NULL;
@@ -268,7 +268,7 @@
}
 }
 
-MGD_FUNCTION(list_topic_articles_all_fast)
+MGD_FUNCTION(mixed, list_topic_articles_all_fast, (int id, [string sort, [int type, 
+[int up]]]))
 {
int *topics;
const char *sortv = NULL;
@@ -347,7 +347,7 @@
}
 }
 
-MGD_FUNCTION(list_topic_articles_all_of_person)
+MGD_FUNCTION(mixed, list_topic_articles_all_of_person, (int topic, int person))
 {
int *topics;
zval **topic, **person;
@@ -373,7 +373,7 @@
}
 }
 
-MGD_FUNCTION(get_article)
+MGD_FUNCTION(mixed, get_article, ([int id]))
 {
zval **id;
CHECK_MGD;
@@ -403,7 +403,7 @@
php_midgard_get_object(return_value, MIDGARD_OBJECT_ARTICLE, (*id)->value.lval);
 }
 
-MGD_FUNCTION(get_article_by_name)
+MGD_FUNCTION(mixed, get_article_by_name, ([int topic, string name]))
 {
zval **id, **name;
CHECK_MGD;
@@ -446,7 +446,7 @@
(*id)->value.lval, (*name)->value.str.val);
 }
 
-MGD_FUNCTION(get_reply_by_name)
+MGD_FUNCTION(mixed, get_reply_by_name, ([int article, string name]))
 {
zval **id, **name;
CHECK_MGD;
@@ -478,7 +478,13 @@
(*id)->value.lval, (*name)->value.str.val);
 }
 
-MGD_FUNCTION(create_article)
+MGD_FUNCTION(int, create_article, (int up, int topic, string name,
+   string title, 
+string abstract,
+   string 
+content, string author,
+   string url, 
+string calstart,
+   int caldays, 
+int icon, int view,
+   int print, 
+string extra1, string extra2,
+   string extra3, 
+int type))
 {
zval **up, **topic, **name, **title, **abstract, **content, **author;
zval **url, **calstart, **caldays, **icon, **view, **print;
@@ -592,7 +598,7 @@
PHP_CREATE_REPLIGARD("article", return_value->value.lval);
 }
 
-MGD_FUNCTION(update_article_score)
+MGD_FUNCTION(bool, update_article_score, (int id, int scor

[PHP-CVS] cvs: php4 /ext/midgard article.c midgard.c page.c topic.c

2001-02-25 Thread David Guerizec

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.8Sat Feb 24 05:39:30 2001
+++ php4/ext/midgard/topic.cSun 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, **topi

[PHP-CVS] cvs: php4 /ext/midgard article.c calendar.c event.c person.c topic.c

2001-02-24 Thread David Guerizec

davidg  Sat Feb 24 05:39:30 2001 EDT

  Modified files:  
/php4/ext/midgard   article.c calendar.c event.c person.c topic.c 
  Log:
  fixed some possible memory leaks.
  
  

Index: php4/ext/midgard/article.c
diff -u php4/ext/midgard/article.c:1.7 php4/ext/midgard/article.c:1.8
--- php4/ext/midgard/article.c:1.7  Thu Feb 22 09:39:37 2001
+++ php4/ext/midgard/article.c  Sat Feb 24 05:39:30 2001
@@ -1,4 +1,4 @@
-/* $Id: article.c,v 1.7 2001/02/22 17:39:37 davidg Exp $
+/* $Id: article.c,v 1.8 2001/02/24 13:39:30 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]>
@@ -59,12 +59,14 @@
 
ids = mgd_tree(mgd_handle(), "topic", "up", (*root)->value.lval, 0, NULL);
if (ids) {
-   id =
-  mgd_idfield(mgd_handle(), "topic", "article",
+   id = mgd_idfield(mgd_handle(), "topic", "article",
   (*article)->value.lval);
for (i = 0; ids[i]; i++)
-   if (ids[i] == id)
+   if (ids[i] == id) {
+   free(ids);
RETURN_TRUE;
+   }
+   free(ids);
}
 }
 
@@ -254,21 +256,24 @@
 
topics = mgd_tree(mgd_handle(), "topic", "up", (*id)->value.lval, 0, NULL);
 
-   if (typev == -1)
-   php_midgard_select(&MidgardArticle, return_value,
-   ARTICLE_SELECT,
-  ARTICLE_FROM,
-  "article.topic IN $D AND author=person.id"
-  " AND (article.up=$d OR 1=$d)",
-  sortv, topics, up, up_wild);
-   else
-   php_midgard_select(&MidgardArticle, return_value,
-   ARTICLE_SELECT,
-  ARTICLE_FROM,
-  "article.type=$d AND article.topic IN $D"
-  " AND (article.up=$d OR 1=$d)"
-  " AND author=person.id",
-  sortv, typev, topics, up, up_wild);
+   if(topics) {
+   if (typev == -1)
+   php_midgard_select(&MidgardArticle, return_value,
+  ARTICLE_SELECT,
+  ARTICLE_FROM,
+  "article.topic IN $D AND author=person.id"
+  " AND (article.up=$d OR 1=$d)",
+  sortv, topics, up, up_wild);
+   else
+   php_midgard_select(&MidgardArticle, return_value,
+  ARTICLE_SELECT,
+  ARTICLE_FROM,
+  "article.type=$d AND article.topic IN $D"
+  " AND (article.up=$d OR 1=$d)"
+  " AND author=person.id",
+  sortv, typev, topics, up, up_wild);
+   free(topics);
+   }
 }
 
 MGD_FUNCTION(list_topic_articles_all_fast)
@@ -331,20 +336,23 @@
 
topics = mgd_tree(mgd_handle(), "topic", "up", (*id)->value.lval, 0, NULL);
 
-   if (typev == -1)
-   php_midgard_select(&MidgardArticle, return_value,
-  ARTICLE_SELECT_FAST,
-  ARTICLE_FROM_FAST,
-  "article.topic IN $D"
-  " AND (article.up=$d OR 1=$d)",
-  sortv, topics, up, up_wild);
-   else
-   php_midgard_select(&MidgardArticle, return_value,
-  ARTICLE_SELECT_FAST,
-  ARTICLE_FROM_FAST,
-  "article.type=$d AND article.topic IN $D"
-  " AND (article.up=$d OR 1=$d)",
-  sortv, typev, topics, up, up_wild);
+   if(topics) {
+   if (typev == -1)
+   php_midgard_select(&MidgardArticle, return_value,
+  ARTICLE_SELECT_FAST,
+  ARTICLE_FROM_FAST,
+  "article.topic IN $D"
+  " AND (article.up=$d OR 1=$d)",
+  sortv, topics, up, up_wild);
+   else
+   php_midgard_select(&MidgardArticle, return_value,
+  ARTICLE_SELECT_FAST,
+  ARTICLE_FROM_FAST,
+  "article.type=$d AND article.topic IN $D"
+ 

[PHP-CVS] cvs: php4 /ext/midgard article.c calendar.c event.c group.c mgd_group.h mgd_internal.h midgard.c page.c person.c topic.c

2001-02-22 Thread David Guerizec

davidg  Thu Feb 22 09:39:38 2001 EDT

  Modified files:  
/php4/ext/midgard   article.c calendar.c event.c group.c mgd_group.h 
mgd_internal.h midgard.c page.c person.c topic.c 
  Log:
  Added mgd_walk_group_tree() function
  
  

Index: php4/ext/midgard/article.c
diff -u php4/ext/midgard/article.c:1.6 php4/ext/midgard/article.c:1.7
--- php4/ext/midgard/article.c:1.6  Wed Feb 21 14:18:54 2001
+++ php4/ext/midgard/article.c  Thu Feb 22 09:39:37 2001
@@ -1,4 +1,4 @@
-/* $Id: article.c,v 1.6 2001/02/21 22:18:54 emile Exp $
+/* $Id: article.c,v 1.7 2001/02/22 17:39:37 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]>
@@ -57,7 +57,7 @@
return;
 #endif
 
-   ids = mgd_tree(mgd_handle(), "topic", (*root)->value.lval, 0, NULL);
+   ids = mgd_tree(mgd_handle(), "topic", "up", (*root)->value.lval, 0, NULL);
if (ids) {
id =
   mgd_idfield(mgd_handle(), "topic", "article",
@@ -252,7 +252,7 @@
wrong_param_count();
}
 
-   topics = mgd_tree(mgd_handle(), "topic", (*id)->value.lval, 0, NULL);
+   topics = mgd_tree(mgd_handle(), "topic", "up", (*id)->value.lval, 0, NULL);
 
if (typev == -1)
php_midgard_select(&MidgardArticle, return_value,
@@ -329,7 +329,7 @@
wrong_param_count();
}
 
-   topics = mgd_tree(mgd_handle(), "topic", (*id)->value.lval, 0, NULL);
+   topics = mgd_tree(mgd_handle(), "topic", "up", (*id)->value.lval, 0, NULL);
 
if (typev == -1)
php_midgard_select(&MidgardArticle, return_value,
@@ -360,7 +360,7 @@
convert_to_long_ex(person);
 
topics =
-  mgd_tree(mgd_handle(), "topic", (*topic)->value.lval, 0, NULL);
+  mgd_tree(mgd_handle(), "topic", "up", (*topic)->value.lval, 0, NULL);
 
php_midgard_select(&MidgardArticle, return_value,
 ARTICLE_SELECT, ARTICLE_FROM,
Index: php4/ext/midgard/calendar.c
diff -u php4/ext/midgard/calendar.c:1.3 php4/ext/midgard/calendar.c:1.4
--- php4/ext/midgard/calendar.c:1.3 Sat Feb 17 15:21:49 2001
+++ php4/ext/midgard/calendar.c Thu Feb 22 09:39:37 2001
@@ -1,4 +1,4 @@
-/* $Id: calendar.c,v 1.3 2001/02/17 23:21:49 emile Exp $
+/* $Id: calendar.c,v 1.4 2001/02/22 17:39:37 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]>
@@ -93,7 +93,7 @@
wrong_param_count();
 }

-topics = mgd_tree(mgd_handle(), "topic", (*id)->value.lval, 0, NULL);
+topics = mgd_tree(mgd_handle(), "topic", "up", (*id)->value.lval, 0, NULL);

 if (typev == -1)
php_midgard_select(&MidgardArticle, return_value,
@@ -184,7 +184,7 @@
wrong_param_count();
 }

-topics = mgd_tree(mgd_handle(), "topic", (*id)->value.lval, 0, NULL);
+topics = mgd_tree(mgd_handle(), "topic", "up", (*id)->value.lval, 0, NULL);

 if (typev == -1)
php_midgard_select(&MidgardArticle, return_value, ARTICLE_SELECT_FAST "," 
ARTICLE_CALENDAR,
Index: php4/ext/midgard/event.c
diff -u php4/ext/midgard/event.c:1.5 php4/ext/midgard/event.c:1.6
--- php4/ext/midgard/event.c:1.5Thu Feb 22 06:26:31 2001
+++ php4/ext/midgard/event.cThu Feb 22 09:39:37 2001
@@ -1,4 +1,4 @@
-/* $Id: event.c,v 1.5 2001/02/22 14:26:31 davidg Exp $
+/* $Id: event.c,v 1.6 2001/02/22 17:39:37 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]>
@@ -418,7 +418,8 @@
 }
 
if((*id)->value.lval) {
-   if(!(events = mgd_tree(mgd_handle(), "event", (*id)->value.lval, 0, 
NULL)))
+   if(!(events = mgd_tree(mgd_handle(), "event", "up",
+   
+(*id)->value.lval, 0, NULL)))
RETURN_FALSE_BECAUSE(MGD_ERR_ERROR);
if (typev == -1)
php_midgard_select(&MidgardEvent, return_value, 
"id,up,start,end,title,"
@@ -493,7 +494,8 @@
 }
 
if((*id)->value.lval) {
-   if(!(events = mgd_tree(mgd_handle(), "event", (*id)->value.lval, 0, 
NULL)))
+   if(!(events = mgd_tree(mgd_handle(), "event", "up",
+   
+(*id)->value.lval, 0, NULL)))
RETURN_FALSE_BECAUSE(MGD_ERR_ERROR);
if (typev == -1)
php_midgard_select(&MidgardEvent, return_value, 
"id,up,start,end,title,"
Index: php4/ext/midgard/group.c
diff -u php4/ext/midgard/group.c:1.4 php4/ext/midgard/group.c:1.5
--- php4/ext/midgard/group.c:1.4Wed Fe

[PHP-CVS] cvs: php4 /ext/midgard article.c mgd_article.h mgd_internal.h mgd_midgard.h mgd_page.h mgd_snippetdir.h mgd_style.h mgd_topic.h midgard.c page.c snippetdir.c style.c topic.c

2001-02-20 Thread David Guerizec

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

[PHP-CVS] cvs: php4 /ext/midgard article.c page.c topic.c

2001-02-19 Thread David Guerizec

davidg  Mon Feb 19 07:50:20 2001 EDT

  Modified files:  
/php4/ext/midgard   article.c page.c topic.c 
  Log:
  fixed bug #81, for more details, see:
  http://www.midgard-project.org/bugs/?id=81
  
  
  
Index: php4/ext/midgard/article.c
diff -u php4/ext/midgard/article.c:1.3 php4/ext/midgard/article.c:1.4
--- php4/ext/midgard/article.c:1.3  Sat Feb 17 15:21:49 2001
+++ php4/ext/midgard/article.c  Mon Feb 19 07:50:20 2001
@@ -1,4 +1,4 @@
-/* $Id: article.c,v 1.3 2001/02/17 23:21:49 emile Exp $
+/* $Id: article.c,v 1.4 2001/02/19 15:50:20 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]>
@@ -42,6 +42,16 @@
convert_to_long_ex(root);
convert_to_long_ex(article);
 
+   if((*article)->value.lval == 0 || /* useless to waste time if article=0 */
+   !mgd_exists_id(mgd_handle(),
+   "article", "id=$d",
+   (*article)->value.lval))
+   RETURN_FALSE_BECAUSE(MGD_ERR_NOT_EXISTS);
+   if ((*root)->value.lval == 0)
+   RETURN_TRUE; /* always true if topic = 0 */
+   if(!mgd_exists_id(mgd_handle(), "topic", "id=$d", (*root)->value.lval))
+   RETURN_FALSE_BECAUSE(MGD_ERR_NOT_EXISTS);
+
 #if 0
if (!isarticlereader((*article)->value.lval))
return;
@@ -534,6 +544,10 @@
convert_to_string_ex(extra3);
convert_to_long_ex(type);
 
+   /* author must NOT be 0 */
+   if (!(*author)->value.lval)
+  RETURN_FALSE_BECAUSE(MGD_ERR_NOT_EXISTS);
+
if (!istopicowner((*topic)->value.lval)) {
RETURN_FALSE_BECAUSE(MGD_ERR_ACCESS_DENIED);
}
@@ -555,12 +569,11 @@
   ( {
   RETURN_FALSE_BECAUSE(MGD_ERR_SITEGROUP_VIOLATION);
}
-   /* author must be in same SG or be 0 */
-   if ((*author)->value.lval != 0 && !mgd_exists_id(mgd_handle(), "person",
+   /* author must be in same SG */
+   if (!mgd_exists_id(mgd_handle(), "person",
  "id=$d AND sitegroup IN (0,$d)",
  (*author)->value.lval,
- mgd_sitegroup(mgd_handle
-   ( {
+ mgd_sitegroup(mgd_handle( {
   RETURN_FALSE_BECAUSE(MGD_ERR_SITEGROUP_VIOLATION);
}
 #endif
@@ -840,6 +853,10 @@
convert_to_string_ex(extra2);
convert_to_string_ex(extra3);
 
+   /* author must NOT be 0 */
+   if (!(*author)->value.lval)
+  RETURN_FALSE_BECAUSE(MGD_ERR_NOT_EXISTS);
+   
/* EEH: conversion to string is intentional, see update code */
if (type)
convert_to_string_ex(type);
@@ -865,9 +882,8 @@
RETURN_FALSE_BECAUSE(MGD_ERR_SITEGROUP_VIOLATION);
}
 
-   /* author must be in same SG or be 0 */
-   if ((*author)->value.lval != 0
-   && !mgd_exists_bool(mgd_handle(), "article,person",
+   /* author must be in same SG */
+   if (!mgd_exists_bool(mgd_handle(), "article,person",
   "article.id=$d AND person.id=$d"
   " AND (article.sitegroup=person.sitegroup"
   " OR article.sitegroup=0" " OR person.sitegroup=0)",
Index: php4/ext/midgard/page.c
diff -u php4/ext/midgard/page.c:1.3 php4/ext/midgard/page.c:1.4
--- php4/ext/midgard/page.c:1.3 Sat Feb 17 15:21:50 2001
+++ php4/ext/midgard/page.c Mon Feb 19 07:50:20 2001
@@ -1,4 +1,4 @@
-/* $Id: page.c,v 1.3 2001/02/17 23:21:50 emile Exp $
+/* $Id: page.c,v 1.4 2001/02/19 15:50:20 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]>
@@ -79,6 +79,16 @@
WRONG_PARAM_COUNT;
 convert_to_long_ex(root);
 convert_to_long_ex(page);
+
+   if((*page)->value.lval == 0 || /* useless to waste time if page=0 */
+   !mgd_exists_id(mgd_handle(),
+   "page", "id=$d",
+   (*page)->value.lval))
+   RETURN_FALSE_BECAUSE(MGD_ERR_NOT_EXISTS);
+   if ((*root)->value.lval == 0)
+   RETURN_TRUE; /* always true if root=0 */
+   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", (*root)->value.lval, 0, NULL);
if (ids)
Index: php4/ext/midgard/topic.c
diff -u php4/ext/midgard/topic.c:1.3 php4/ext/midgard/topic.c:1.4
--- php4/ext/midgard/topi