emile           Wed Feb 21 14:18:55 2001 EDT

  Modified files:              
    /php4/ext/midgard   Makefile.in article.c attachment.c element.c 
                        event.c eventmember.c file.c group.c host.c 
                        image.c member.c mgd_oop.h midgard.c oop.c page.c 
                        pageelement.c pagelink.c person.c preferences.c 
                        sitegroup.c snippet.c snippetdir.c style.c 
                        topic.c 
  Log:
  Centralized object fetching for get_object_by_guid
  
  
Index: php4/ext/midgard/Makefile.in
diff -u php4/ext/midgard/Makefile.in:1.3 php4/ext/midgard/Makefile.in:1.4
--- php4/ext/midgard/Makefile.in:1.3    Sat Feb 17 15:21:49 2001
+++ php4/ext/midgard/Makefile.in        Wed Feb 21 14:18:54 2001
@@ -1,4 +1,4 @@
-# $Id: Makefile.in,v 1.3 2001/02/17 23:21:49 emile Exp $
+# $Id: Makefile.in,v 1.4 2001/02/21 22:18:54 emile Exp $
 #
 #   Copyright (C) 1999 Jukka Zitting <[EMAIL PROTECTED]>
 #   Copyright (C) 2000 The Midgard Project ry
@@ -29,6 +29,7 @@
                         snippetdir.c style.c sitegroup.c \
                         preparser-parser.c preparser-scanner.c \
                         preparser.c
+
 LTLIBRARY_SHARED_NAME = midgard.la
 LTLIBRARY_SHARED_LIBADD  = $(MIDGARD_SHARED_LIBADD)
 
Index: php4/ext/midgard/article.c
diff -u php4/ext/midgard/article.c:1.5 php4/ext/midgard/article.c:1.6
--- php4/ext/midgard/article.c:1.5      Tue Feb 20 16:24:56 2001
+++ php4/ext/midgard/article.c  Wed Feb 21 14:18:54 2001
@@ -1,4 +1,4 @@
-/* $Id: article.c,v 1.5 2001/02/21 00:24:56 davidg Exp $
+/* $Id: article.c,v 1.6 2001/02/21 22:18:54 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]>
@@ -396,18 +396,7 @@
                        WRONG_PARAM_COUNT;
        }
 
-       php_midgard_get(&MidgardArticle, return_value,
-                       "id,up,topic,name,title,abstract,content,author,"
-                       "Date_format(created,'%d.%m.%Y') AS date,"
-                       "Date_format(created,'%D %b. %Y') AS adate,"
-                       "Date_format(created,'%D %M %Y') AS aldate,"
-                       "extra1,extra2,extra3,article.score,type,"
-                       "Unix_Timestamp(created) AS created,creator,"
-                       "Unix_Timestamp(revised) AS revised,revisor,revision,"
-                       "Unix_Timestamp(approved) AS approved,approver,"
-                       "Unix_Timestamp(locked) AS locked,locker,"
-                       "url,icon,view,print,"
-                       CALENDAR_FIELDS, "article", (*id)->value.lval);
+   php_midgard_get_object(return_value, MIDGARD_OBJECT_ARTICLE, (*id)->value.lval);
 }
 
 MGD_FUNCTION(get_article_by_name)
Index: php4/ext/midgard/attachment.c
diff -u php4/ext/midgard/attachment.c:1.4 php4/ext/midgard/attachment.c:1.5
--- php4/ext/midgard/attachment.c:1.4   Mon Feb 19 08:39:19 2001
+++ php4/ext/midgard/attachment.c       Wed Feb 21 14:18:54 2001
@@ -1,4 +1,4 @@
-/* $Id: attachment.c,v 1.4 2001/02/19 16:39:19 davidg Exp $
+/* $Id: attachment.c,v 1.5 2001/02/21 22:18:54 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]>
@@ -356,9 +356,7 @@
    else if (aid == MGD_ERR_INVALID_NAME) { WRONG_PARAM_COUNT; }
    else if (aid < 0) { RETURN_FALSE_BECAUSE(aid); }
 
-       php_midgard_get(&MidgardAttachment, return_value,
-                       "id,name,title,mimetype,score,author,created,ptable,pid",
-                       "blobs", aid);
+   php_midgard_get_object(return_value, MIDGARD_OBJECT_BLOBS, aid);
 }
 
 MGD_FUNCTION(serve_attachment)
Index: php4/ext/midgard/element.c
diff -u php4/ext/midgard/element.c:1.3 php4/ext/midgard/element.c:1.4
--- php4/ext/midgard/element.c:1.3      Sat Feb 17 15:21:49 2001
+++ php4/ext/midgard/element.c  Wed Feb 21 14:18:54 2001
@@ -1,4 +1,4 @@
-/* $Id: element.c,v 1.3 2001/02/17 23:21:49 emile Exp $
+/* $Id: element.c,v 1.4 2001/02/21 22:18:54 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]>
@@ -48,10 +48,7 @@
                        }
                        convert_to_long_ex(id);
 
-                       php_midgard_get(&MidgardElement,
-                                       return_value,
-                                       "id,style,name,value",
-                                       "element", (*id)->value.lval);
+         php_midgard_get_object(return_value, MIDGARD_OBJECT_ELEMENT, 
+(*id)->value.lval);
                        break;
                case 2:
                        if (zend_get_parameters_ex(2, &style, &name) != SUCCESS) {
Index: php4/ext/midgard/event.c
diff -u php4/ext/midgard/event.c:1.3 php4/ext/midgard/event.c:1.4
--- php4/ext/midgard/event.c:1.3        Sat Feb 17 15:21:49 2001
+++ php4/ext/midgard/event.c    Wed Feb 21 14:18:54 2001
@@ -1,4 +1,4 @@
-/* $Id: event.c,v 1.3 2001/02/17 23:21:49 emile Exp $
+/* $Id: event.c,v 1.4 2001/02/21 22:18:54 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]>
@@ -234,9 +234,7 @@
                WRONG_PARAM_COUNT;
        }
 
-    php_midgard_get(&MidgardEvent, return_value, "id,up,start,end,title,description,"
-                       
"type,extra,owner,creator,created,revisor,revised,revision,busy", 
-                                       "event", (*id)->value.lval);
+   php_midgard_get_object(return_value, MIDGARD_OBJECT_EVENT, (*id)->value.lval);
 }
 
 static const char *event_sort(const char *order)
Index: php4/ext/midgard/eventmember.c
diff -u php4/ext/midgard/eventmember.c:1.3 php4/ext/midgard/eventmember.c:1.4
--- php4/ext/midgard/eventmember.c:1.3  Sat Feb 17 15:21:50 2001
+++ php4/ext/midgard/eventmember.c      Wed Feb 21 14:18:54 2001
@@ -1,4 +1,4 @@
-/* $Id: eventmember.c,v 1.3 2001/02/17 23:21:50 emile Exp $
+/* $Id: eventmember.c,v 1.4 2001/02/21 22:18:54 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]>
@@ -188,8 +188,7 @@
                WRONG_PARAM_COUNT;
        }
 
-    php_midgard_get(&MidgardEventMember, return_value, "id,eid,uid,extra",
-                                       "eventmember", (*id)->value.lval);
+   php_midgard_get_object(return_value, MIDGARD_OBJECT_EVENTMEMBER, 
+(*id)->value.lval);
 }
 
 static const char *eventmember_sort(const char *order)
Index: php4/ext/midgard/file.c
diff -u php4/ext/midgard/file.c:1.3 php4/ext/midgard/file.c:1.4
--- php4/ext/midgard/file.c:1.3 Sat Feb 17 15:21:50 2001
+++ php4/ext/midgard/file.c     Wed Feb 21 14:18:54 2001
@@ -1,4 +1,4 @@
-/* $Id: file.c,v 1.3 2001/02/17 23:21:50 emile Exp $
+/* $Id: file.c,v 1.4 2001/02/21 22:18:54 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]>
@@ -46,7 +46,8 @@
        default:
                WRONG_PARAM_COUNT;
        }
-       php_midgard_get(&MidgardFile, return_value, 
"id,article,type,name,content,size,md5", "file", (*id)->value.lval);
+
+   php_midgard_get_object(return_value, MIDGARD_OBJECT_FILE, (*id)->value.lval);
 }
 
 MGD_FUNCTION(create_file)
Index: php4/ext/midgard/group.c
diff -u php4/ext/midgard/group.c:1.3 php4/ext/midgard/group.c:1.4
--- php4/ext/midgard/group.c:1.3        Sat Feb 17 15:21:50 2001
+++ php4/ext/midgard/group.c    Wed Feb 21 14:18:54 2001
@@ -1,4 +1,4 @@
-/* $Id: group.c,v 1.3 2001/02/17 23:21:50 emile Exp $
+/* $Id: group.c,v 1.4 2001/02/21 22:18:54 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]>
@@ -72,9 +72,7 @@
                WRONG_PARAM_COUNT;
        }
 
-    php_midgard_get(&MidgardGroup, return_value, "id,name,official," ADDRESS_FIELDS 
","
-                                       GROUP_HOMEPAGE_FIELDS "," GROUP_EMAIL_FIELDS 
","
-                                       "extra,owner", "grp", (*id)->value.lval);
+   php_midgard_get_object(return_value, MIDGARD_OBJECT_GRP, (*id)->value.lval);
 }
 
 MGD_FUNCTION(get_group_by_name)
@@ -96,9 +94,8 @@
                        convert_to_string_ex(name);
                        
if(!(gid=mgd_exists_id(mgd_handle(),"grp","name=$q",(*name)->value.str.val)))
                            RETURN_FALSE_BECAUSE(MGD_ERR_NOT_EXISTS);
-            php_midgard_get(&MidgardGroup, return_value, "id,name,official," 
ADDRESS_FIELDS ","
-                                       GROUP_HOMEPAGE_FIELDS "," GROUP_EMAIL_FIELDS 
","
-                                       "extra,owner", "grp", gid);
+
+            php_midgard_get_object(return_value, MIDGARD_OBJECT_GRP, gid);
                        break;
                } 
        case 2:
Index: php4/ext/midgard/host.c
diff -u php4/ext/midgard/host.c:1.3 php4/ext/midgard/host.c:1.4
--- php4/ext/midgard/host.c:1.3 Sat Feb 17 15:21:50 2001
+++ php4/ext/midgard/host.c     Wed Feb 21 14:18:54 2001
@@ -1,4 +1,4 @@
-/* $Id: host.c,v 1.3 2001/02/17 23:21:50 emile Exp $
+/* $Id: host.c,v 1.4 2001/02/21 22:18:54 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]>
@@ -70,9 +70,8 @@
        default:
                WRONG_PARAM_COUNT;
        }
-       php_midgard_get(&MidgardHost, return_value,
-                               "id,name,port,online,root,style,info&1 AS 
auth,owner,prefix," HOSTNAME_FIELD,
-                               "host", (*id)->value.lval);
+
+   php_midgard_get_object(return_value, MIDGARD_OBJECT_HOST, (*id)->value.lval);
 }
 
 MGD_FUNCTION(get_host_by_name)
Index: php4/ext/midgard/image.c
diff -u php4/ext/midgard/image.c:1.3 php4/ext/midgard/image.c:1.4
--- php4/ext/midgard/image.c:1.3        Sat Feb 17 15:21:50 2001
+++ php4/ext/midgard/image.c    Wed Feb 21 14:18:54 2001
@@ -1,4 +1,4 @@
-/* $Id: image.c,v 1.3 2001/02/17 23:21:50 emile Exp $
+/* $Id: image.c,v 1.4 2001/02/21 22:18:54 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]>
@@ -96,11 +96,8 @@
        default:
                WRONG_PARAM_COUNT;
        }
-    php_midgard_get(&MidgardImage, return_value,
-                "id,src,x,y,info&1=1 AS offline,"
-                "If(info&1,Concat('<img src=\"/img/',src,"
-                "'\" width=\"',x,'\" height=\"',y,'\">'),'') AS img",
-                "image", (*id)->value.lval);
+
+   php_midgard_get_object(return_value, MIDGARD_OBJECT_IMAGE, (*id)->value.lval);
 }
 
 
Index: php4/ext/midgard/member.c
diff -u php4/ext/midgard/member.c:1.3 php4/ext/midgard/member.c:1.4
--- php4/ext/midgard/member.c:1.3       Sat Feb 17 15:21:50 2001
+++ php4/ext/midgard/member.c   Wed Feb 21 14:18:54 2001
@@ -1,4 +1,4 @@
-/* $Id: member.c,v 1.3 2001/02/17 23:21:50 emile Exp $
+/* $Id: member.c,v 1.4 2001/02/21 22:18:54 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]>
@@ -65,8 +65,8 @@
 
     if (!isgroupowner(mgd_idfield(mgd_handle(), "gid", "member", (*id)->value.lval)))
                RETURN_FALSE_BECAUSE(MGD_ERR_ACCESS_DENIED);
-    php_midgard_get(&MidgardMember, return_value,
-                                       "id,gid,uid,extra", "member", 
(*id)->value.lval);
+
+   php_midgard_get_object(return_value, MIDGARD_OBJECT_MEMBER, (*id)->value.lval);
 }
 
 MGD_FUNCTION(create_member)
Index: php4/ext/midgard/mgd_oop.h
diff -u php4/ext/midgard/mgd_oop.h:1.3 php4/ext/midgard/mgd_oop.h:1.4
--- php4/ext/midgard/mgd_oop.h:1.3      Sat Feb 17 15:21:50 2001
+++ php4/ext/midgard/mgd_oop.h  Wed Feb 21 14:18:54 2001
@@ -1,4 +1,4 @@
-/* $Id: mgd_oop.h,v 1.3 2001/02/17 23:21:50 emile Exp $
+/* $Id: mgd_oop.h,v 1.4 2001/02/21 22:18:54 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]>
@@ -22,6 +22,7 @@
 #define MGD_OOP_H
 
 #include <zend.h>
+#include <midgard/tablenames.h>
 
 MGD_FUNCTION(oop_parameter);
 MGD_FUNCTION(oop_parameter_list);
@@ -124,6 +125,8 @@
 MGD_FUNCTION(delete_snippet);
 MGD_FUNCTION(update_snippet);
 
+MGD_FUNCTION(get_object_by_guid);
+
 typedef struct {
        int type;
        char * name;
@@ -180,6 +183,8 @@
 zval _midgard_getset_property(MidgardClass *Class,
                zend_property_reference *property_reference,
                                                zval *value);
+
+void php_midgard_get_object(zval *return_value, int table, int id);
 
 extern MidgardClass MidgardArticle;
 extern MidgardClass MidgardAttachment;
Index: php4/ext/midgard/midgard.c
diff -u php4/ext/midgard/midgard.c:1.10 php4/ext/midgard/midgard.c:1.11
--- php4/ext/midgard/midgard.c:1.10     Wed Feb 21 04:21:01 2001
+++ php4/ext/midgard/midgard.c  Wed Feb 21 14:18:54 2001
@@ -1,4 +1,4 @@
-/* $Id: midgard.c,v 1.10 2001/02/21 12:21:01 davidg Exp $
+/* $Id: midgard.c,v 1.11 2001/02/21 22:18:54 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]>
@@ -283,6 +283,7 @@
 MGD_FE(copy_style, NULL)
 MGD_FE(move_style, NULL)
 MGD_FE(delete_style_tree, NULL)
+MGD_FE(get_object_by_guid, NULL)
 /* preparser functions */
 MGD_FE(template, NULL)
 MGD_FE(variable, NULL)
Index: php4/ext/midgard/oop.c
diff -u php4/ext/midgard/oop.c:1.4 php4/ext/midgard/oop.c:1.5
--- php4/ext/midgard/oop.c:1.4  Mon Feb 19 23:27:40 2001
+++ php4/ext/midgard/oop.c      Wed Feb 21 14:18:54 2001
@@ -1,4 +1,4 @@
-/* $Id: oop.c,v 1.4 2001/02/20 07:27:40 davidg Exp $
+/* $Id: oop.c,v 1.5 2001/02/21 22:18:54 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]>
@@ -472,6 +472,208 @@
 
       RETURN_FALSE_BECAUSE(MGD_ERR_NOT_EXISTS);
    }
+}
+
+void php_midgard_get_object(zval *return_value, int table, int id)
+{
+   switch (table) {
+      case MIDGARD_OBJECT_ARTICLE:
+         php_midgard_get(&MidgardArticle, return_value,
+            "id,up,topic,name,title,abstract,content,author,"
+               "Date_format(created,'%d.%m.%Y') AS date,"
+               "Date_format(created,'%D %b. %Y') AS adate,"
+               "Date_format(created,'%D %M %Y') AS aldate,"
+               "extra1,extra2,extra3,article.score,type,"
+               "Unix_Timestamp(created) AS created,creator,"
+               "Unix_Timestamp(revised) AS revised,revisor,revision,"
+               "Unix_Timestamp(approved) AS approved,approver,"
+               "Unix_Timestamp(locked) AS locked,locker,"
+               "url,icon,view,print,"
+               CALENDAR_FIELDS,
+            "article", id);
+         break;
+
+      case MIDGARD_OBJECT_BLOBS:
+         php_midgard_get(&MidgardAttachment, return_value,
+            "id,name,title,mimetype,score,author,created,ptable,pid",
+                          "blobs", id);
+         break;
+
+      case MIDGARD_OBJECT_ELEMENT:
+         php_midgard_get(&MidgardElement, return_value,
+            "id,style,name,value",
+            "element", id);
+         break;
+
+      case MIDGARD_OBJECT_EVENT:
+         php_midgard_get(&MidgardEvent, return_value,
+            "id,up,start,end,title,description,"
+               "type,extra,owner,creator,created,revisor,revised,revision,busy", 
+            "event", id);
+         break;
+
+      case MIDGARD_OBJECT_EVENTMEMBER:
+         php_midgard_get(&MidgardEventMember, return_value, "id,eid,uid,extra",
+            "eventmember", id);
+         break;
+
+      case MIDGARD_OBJECT_FILE:
+         php_midgard_get(&MidgardFile, return_value,
+            "id,article,type,name,content,size,md5",
+            "file", id);
+         break;
+
+      case MIDGARD_OBJECT_GRP:
+         php_midgard_get(&MidgardGroup, return_value, 
+            "id,name,official," ADDRESS_FIELDS ","
+               GROUP_HOMEPAGE_FIELDS "," GROUP_EMAIL_FIELDS ","
+                                       "extra,owner",
+            "grp", id);
+         break;
+
+      case MIDGARD_OBJECT_HOST:
+         php_midgard_get(&MidgardHost, return_value,
+                               "id,name,port,online,root,style,info&1 AS 
+auth,owner,prefix,"
+               HOSTNAME_FIELD,
+                               "host", id);
+         break;
+
+      case MIDGARD_OBJECT_IMAGE:
+         php_midgard_get(&MidgardImage, return_value,
+            "id,src,x,y,info&1=1 AS offline,"
+               "If(info&1,Concat('<img src=\"/img/',src,"
+               "'\" width=\"',x,'\" height=\"',y,'\">'),'') AS img",
+               "image", id);
+         break;
+
+      case MIDGARD_OBJECT_MEMBER:
+         php_midgard_get(&MidgardMember, return_value,
+            "id,gid,uid,extra", "member", id);
+         break;
+
+      case MIDGARD_OBJECT_PAGE:
+         php_midgard_get(&MidgardPage, return_value,
+            "id,up,name,style,title,changed,content,author,"
+               "info&1=1 AS auth,info&2=2 AS active",
+            "page", id);
+         break;
+
+      case MIDGARD_OBJECT_PAGEELEMENT:
+         php_midgard_get(&MidgardPageElement, return_value,
+            "id,page,name,value,info&1 AS inherit",
+            "pageelement", id);
+         break;
+
+#if HAVE_MIDGARD_PAGELINKS
+      case MIDGARD_OBJECT_PAGELINK:
+         php_midgard_get(&MidgardPagelink, return_value,
+            "id,up,name,target,grp,owner",
+            "pagelink", id);
+         break;
+#endif
+
+      case MIDGARD_OBJECT_PERSON:
+         if (isuserowner(id))
+            php_midgard_get(&MidgardPerson, return_value,
+               "id," NAME_FIELDS ","
+                  "If(Left(password,2)='**',Substring(password,3),'')"
+                  " AS password,"
+                  ADDRESS_FIELDS "," PHONE_FIELDS ","
+                  HOMEPAGE_FIELDS "," EMAIL_FIELDS ","
+                  "Date_format(birthdate,'%d.%m.%Y') AS birthdate,extra,"
+                  "img,topic,department,office,pgpkey," PUBLIC_FIELDS,
+               "person", id);
+         else
+            php_midgard_get(&MidgardPerson, return_value,
+               "id," NAME_FIELDS ",'' AS password,"
+                  "If(info&2," ADDRESS_FIELD ",'') AS address,"
+                  PUBLIC_FIELD(2,street) ","
+                  PUBLIC_FIELD(2,postcode) ","
+                  PUBLIC_FIELD(2,city) ","
+                  "If(info&4," PHONE_FIELD ",'') AS phone,"
+                  PUBLIC_FIELD(4,handphone) ","
+                  PUBLIC_FIELD(4,homephone) ","
+                  PUBLIC_FIELD(4,workphone) ","
+                  "If(info&8," HOMEPAGE_FIELD ",'') AS homepagelink,"
+                  PUBLIC_FIELD(8,homepage) ","
+                  "If(info&16," EMAIL_FIELD ",'') AS emaillink,"
+                  PUBLIC_FIELD(16,email) ","
+                  "'' AS birthdate," PUBLIC_FIELD(32,extra) ","
+                  PUBLIC_FIELD(32,img) ",topic,department,office,pgpkey,"
+                  PUBLIC_FIELDS, "person", id);
+         break;
+
+      case MIDGARD_OBJECT_PREFERENCE:
+         php_midgard_get(&MidgardPreferences, return_value,
+            "id,uid,domain,name,value", "preference", id);
+         break;
+
+#if HAVE_MIDGARD_SITEGROUPS
+      case MIDGARD_OBJECT_SITEGROUP:
+         php_midgard_sitegroup_get(&MidgardSitegroup, return_value, 0, "*",
+            "sitegroup", id);
+         break;
+#endif
+
+      case MIDGARD_OBJECT_SNIPPET:
+         php_midgard_get(&MidgardSnippet, return_value,
+            "id,up,name,code,doc,author,creator,created,revisor,"
+               "revised,revision",
+            "snippet", id);
+         break;
+
+      case MIDGARD_OBJECT_SNIPPETDIR:
+         php_midgard_get(&MidgardSnippetdir, return_value, 
+"id,up,name,description,owner",
+            "snippetdir", id);
+         break;
+
+      case MIDGARD_OBJECT_STYLE:
+         php_midgard_get(&MidgardStyle, return_value, "id,up,name,owner", "style", 
+id);
+         break;
+
+      case MIDGARD_OBJECT_TOPIC:
+         php_midgard_get(&MidgardTopic, return_value,
+            "id,up,score,name,description,extra,owner,code,"
+               "creator,Unix_timestamp(created) as created,"
+               "revisor,Unix_timestamp(revised) as revised,revision",
+            "topic", id);
+         break;
+
+      /* EEH: These are not handled */
+      case MIDGARD_OBJECT_REPLIGARD:
+      case MIDGARD_OBJECT_RECORD_EXTENSION:
+      case MIDGARD_OBJECT_HISTORY:
+      default:
+         RETURN_FALSE_BECAUSE(MGD_ERR_INTERNAL);
+   }
+}
+
+MGD_FUNCTION(get_object_by_guid)
+{
+   zval **guid;
+   midgard_res *res;
+   long table, id;
+
+   if (ZEND_NUM_ARGS() != 1 || zend_get_parameters_ex(ht, 1, &guid) != SUCCESS) {
+      WRONG_PARAM_COUNT;
+   }
+
+   if ((*guid)->type != IS_STRING) { RETURN_FALSE_BECAUSE(MGD_ERR_NOT_EXISTS); }
+
+   res = mgd_sitegroup_select(mgd_handle(), "realm,id" "repligard",
+            "guid=$q", NULL, (*guid)->value.str.val);
+
+   if (!res || !mgd_fetch(res)) {
+      if (res) mgd_release(res);
+      RETURN_FALSE_BECAUSE(MGD_ERR_NOT_EXISTS);
+   }
+
+   table = mgd_lookup_table_id(mgd_colvalue(res, 0));
+   id = atoi(mgd_colvalue(res, 1));
+
+   mgd_release(res);
+
+   php_midgard_get_object(return_value, table, id);
 }
 
 MidgardClassPtr MidgardClasses [] = {
Index: php4/ext/midgard/page.c
diff -u php4/ext/midgard/page.c:1.5 php4/ext/midgard/page.c:1.6
--- php4/ext/midgard/page.c:1.5 Tue Feb 20 16:24:56 2001
+++ php4/ext/midgard/page.c     Wed Feb 21 14:18:54 2001
@@ -1,4 +1,4 @@
-/* $Id: page.c,v 1.5 2001/02/21 00:24:56 davidg Exp $
+/* $Id: page.c,v 1.6 2001/02/21 22:18:54 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]>
@@ -115,9 +115,7 @@
                        WRONG_PARAM_COUNT;
        }
 
-    php_midgard_get(&MidgardPage, return_value, 
"id,up,name,style,title,changed,content,author,"
-           "info&1=1 AS auth,info&2=2 AS active",
-           "page", (*id)->value.lval);
+   php_midgard_get_object(return_value, MIDGARD_OBJECT_PAGE, (*id)->value.lval);
 }
 
 MGD_FUNCTION(get_page_by_name)
Index: php4/ext/midgard/pageelement.c
diff -u php4/ext/midgard/pageelement.c:1.3 php4/ext/midgard/pageelement.c:1.4
--- php4/ext/midgard/pageelement.c:1.3  Sat Feb 17 15:21:50 2001
+++ php4/ext/midgard/pageelement.c      Wed Feb 21 14:18:54 2001
@@ -1,4 +1,4 @@
-/* $Id: pageelement.c,v 1.3 2001/02/17 23:21:50 emile Exp $
+/* $Id: pageelement.c,v 1.4 2001/02/21 22:18:54 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]>
@@ -46,8 +46,8 @@
        default:
                WRONG_PARAM_COUNT;
        }
-    php_midgard_get(&MidgardPageElement, return_value, "id,page,name,value,info&1 AS 
inherit",
-           "pageelement", (*id)->value.lval);
+
+   php_midgard_get_object(return_value, MIDGARD_OBJECT_PAGEELEMENT, 
+(*id)->value.lval);
 }
 
 MGD_FUNCTION(get_page_element_by_name)
Index: php4/ext/midgard/pagelink.c
diff -u php4/ext/midgard/pagelink.c:1.3 php4/ext/midgard/pagelink.c:1.4
--- php4/ext/midgard/pagelink.c:1.3     Sat Feb 17 15:21:50 2001
+++ php4/ext/midgard/pagelink.c Wed Feb 21 14:18:54 2001
@@ -1,4 +1,4 @@
-/* $Id: pagelink.c,v 1.3 2001/02/17 23:21:50 emile Exp $
+/* $Id: pagelink.c,v 1.4 2001/02/21 22:18:54 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]>
@@ -101,8 +101,8 @@
        default:
                WRONG_PARAM_COUNT;
        }
-    php_midgard_get(&MidgardPagelink, return_value, "id,up,name,target,grp,owner",
-           "pagelink", (*id)->value.lval);
+
+   php_midgard_get_object(return_value, MIDGARD_OBJECT_PAGELINK, (*id)->value.lval);
 }
 
 MGD_FUNCTION(get_pagelink_by_name)
Index: php4/ext/midgard/person.c
diff -u php4/ext/midgard/person.c:1.3 php4/ext/midgard/person.c:1.4
--- php4/ext/midgard/person.c:1.3       Sat Feb 17 15:21:50 2001
+++ php4/ext/midgard/person.c   Wed Feb 21 14:18:54 2001
@@ -1,4 +1,4 @@
-/* $Id: person.c,v 1.3 2001/02/17 23:21:50 emile Exp $
+/* $Id: person.c,v 1.4 2001/02/21 22:18:54 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]>
@@ -204,32 +204,7 @@
                WRONG_PARAM_COUNT;
        }
 
-       if (isuserowner((*id)->value.lval))
-               php_midgard_get(&MidgardPerson, return_value, "id," NAME_FIELDS ","
-                                               
"If(Left(password,2)='**',Substring(password,3),'')"
-                                               " AS password,"
-                                               ADDRESS_FIELDS "," PHONE_FIELDS ","
-                                               HOMEPAGE_FIELDS "," EMAIL_FIELDS ","
-                                               "Date_format(birthdate,'%d.%m.%Y') AS 
birthdate,extra,"
-                                               "img,topic,department,office,pgpkey," 
PUBLIC_FIELDS,
-                                               "person", (*id)->value.lval);
-       else
-               php_midgard_get(&MidgardPerson, return_value, "id," NAME_FIELDS ",'' 
AS password,"
-                                               "If(info&2," ADDRESS_FIELD ",'') AS 
address,"
-                                               PUBLIC_FIELD(2,street) ","
-                                               PUBLIC_FIELD(2,postcode) ","
-                                               PUBLIC_FIELD(2,city) ","
-                                               "If(info&4," PHONE_FIELD ",'') AS 
phone,"
-                                               PUBLIC_FIELD(4,handphone) ","
-                                               PUBLIC_FIELD(4,homephone) ","
-                                               PUBLIC_FIELD(4,workphone) ","
-                                               "If(info&8," HOMEPAGE_FIELD ",'') AS 
homepagelink,"
-                                               PUBLIC_FIELD(8,homepage) ","
-                                               "If(info&16," EMAIL_FIELD ",'') AS 
emaillink,"
-                                               PUBLIC_FIELD(16,email) ","
-                                               "'' AS birthdate," 
PUBLIC_FIELD(32,extra) ","
-                                               PUBLIC_FIELD(32,img) 
",topic,department,office,pgpkey,"
-                                               PUBLIC_FIELDS, "person", 
(*id)->value.lval);
+   php_midgard_get_object(return_value, MIDGARD_OBJECT_PERSON, (*id)->value.lval);
 }
 
 MGD_FUNCTION(create_person)
Index: php4/ext/midgard/preferences.c
diff -u php4/ext/midgard/preferences.c:1.3 php4/ext/midgard/preferences.c:1.4
--- php4/ext/midgard/preferences.c:1.3  Sat Feb 17 15:21:50 2001
+++ php4/ext/midgard/preferences.c      Wed Feb 21 14:18:54 2001
@@ -1,4 +1,4 @@
-/* $Id: preferences.c,v 1.3 2001/02/17 23:21:50 emile Exp $
+/* $Id: preferences.c,v 1.4 2001/02/21 22:18:54 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]>
@@ -113,8 +113,8 @@
        if (!mgd_isadmin(mgd_handle()) &&
                mgd_user(mgd_handle()) != mgd_idfield(mgd_handle(), "uid", 
"preference", id))
                RETURN_FALSE_BECAUSE(MGD_ERR_ACCESS_DENIED);
-       php_midgard_get(&MidgardPreferences, return_value,
-                                       "id,uid,domain,name,value", "preference", id);
+
+   php_midgard_get_object(return_value, MIDGARD_OBJECT_PREFERENCE, id);
 }
 
 MGD_FUNCTION(create_preference)
Index: php4/ext/midgard/sitegroup.c
diff -u php4/ext/midgard/sitegroup.c:1.4 php4/ext/midgard/sitegroup.c:1.5
--- php4/ext/midgard/sitegroup.c:1.4    Mon Feb 19 23:27:40 2001
+++ php4/ext/midgard/sitegroup.c        Wed Feb 21 14:18:54 2001
@@ -1,4 +1,4 @@
-/* $Id: sitegroup.c,v 1.4 2001/02/20 07:27:40 davidg Exp $
+/* $Id: sitegroup.c,v 1.5 2001/02/21 22:18:54 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]>
@@ -98,7 +98,7 @@
                WRONG_PARAM_COUNT;
        }
 
-    php_midgard_sitegroup_get(&MidgardSitegroup, return_value, 0, "*", "sitegroup", 
(*id)->value.lval);
+   php_midgard_get_object(return_value, MIDGARD_OBJECT_SITEGROUP, (*id)->value.lval);
 }
 
 MGD_FUNCTION(update_sitegroup)
Index: php4/ext/midgard/snippet.c
diff -u php4/ext/midgard/snippet.c:1.3 php4/ext/midgard/snippet.c:1.4
--- php4/ext/midgard/snippet.c:1.3      Sat Feb 17 15:21:50 2001
+++ php4/ext/midgard/snippet.c  Wed Feb 21 14:18:54 2001
@@ -1,4 +1,4 @@
-/* $Id: snippet.c,v 1.3 2001/02/17 23:21:50 emile Exp $
+/* $Id: snippet.c,v 1.4 2001/02/21 22:18:54 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]>
@@ -70,7 +70,8 @@
        }
        if(!(*id)->value.lval)
                RETURN_FALSE_BECAUSE(MGD_ERR_NOT_EXISTS);
-    php_midgard_get(&MidgardSnippet, return_value, 
"id,up,name,code,doc,author,creator,created,revisor,revised,revision", "snippet", 
(*id)->value.lval);
+
+    php_midgard_get_object(return_value, MIDGARD_OBJECT_SNIPPET, (*id)->value.lval);
 }
 
 MGD_FUNCTION(get_snippet_by_name)
Index: php4/ext/midgard/snippetdir.c
diff -u php4/ext/midgard/snippetdir.c:1.4 php4/ext/midgard/snippetdir.c:1.5
--- php4/ext/midgard/snippetdir.c:1.4   Tue Feb 20 16:24:56 2001
+++ php4/ext/midgard/snippetdir.c       Wed Feb 21 14:18:54 2001
@@ -1,4 +1,4 @@
-/* $Id: snippetdir.c,v 1.4 2001/02/21 00:24:56 davidg Exp $
+/* $Id: snippetdir.c,v 1.5 2001/02/21 22:18:54 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]>
@@ -61,7 +61,7 @@
                WRONG_PARAM_COUNT;
        }
 
-    php_midgard_get(&MidgardSnippetdir, return_value, "id,up,name,description,owner", 
 "snippetdir", (*id)->value.lval);
+   php_midgard_get_object(return_value, MIDGARD_OBJECT_SNIPPETDIR, (*id)->value.lval);
 }
 
 MGD_FUNCTION(get_snippetdir_by_path)
@@ -83,7 +83,7 @@
                WRONG_PARAM_COUNT;
        }
     if(!MGD_PARSE_COMMON_PATH(mgd_handle(), (*path)->value.str.val, "snippetdir", 
"snippetdir", &id, &up)) {
-        php_midgard_get(&MidgardSnippetdir, return_value, 
"id,up,name,description,owner", "snippetdir", id);
+         php_midgard_get_object(return_value, MIDGARD_OBJECT_SNIPPETDIR, id);
        return;
     }
 }
Index: php4/ext/midgard/style.c
diff -u php4/ext/midgard/style.c:1.4 php4/ext/midgard/style.c:1.5
--- php4/ext/midgard/style.c:1.4        Tue Feb 20 16:24:56 2001
+++ php4/ext/midgard/style.c    Wed Feb 21 14:18:54 2001
@@ -1,4 +1,4 @@
-/* $Id: style.c,v 1.4 2001/02/21 00:24:56 davidg Exp $
+/* $Id: style.c,v 1.5 2001/02/21 22:18:54 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]>
@@ -67,7 +67,8 @@
        default:
                WRONG_PARAM_COUNT;
        }
-    php_midgard_get(&MidgardStyle, return_value, "id,up,name,owner", "style", 
(*id)->value.lval);
+
+   php_midgard_get_object(return_value, MIDGARD_OBJECT_STYLE, (*id)->value.lval);
 }
 
 MGD_FUNCTION(get_style_by_name)
Index: php4/ext/midgard/topic.c
diff -u php4/ext/midgard/topic.c:1.5 php4/ext/midgard/topic.c:1.6
--- php4/ext/midgard/topic.c:1.5        Tue Feb 20 16:24:56 2001
+++ php4/ext/midgard/topic.c    Wed Feb 21 14:18:54 2001
@@ -1,4 +1,4 @@
-/* $Id: topic.c,v 1.5 2001/02/21 00:24:56 davidg Exp $
+/* $Id: topic.c,v 1.6 2001/02/21 22:18:54 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]>
@@ -152,12 +152,8 @@
                case 1:
                        if (zend_get_parameters_ex(1, &id) == SUCCESS) {
                                convert_to_long_ex(id);
-                               php_midgard_get(&MidgardTopic,
-                                               return_value,
-                                               
"id,up,score,name,description,extra,owner,code,"
-                                               "creator,Unix_timestamp(created) as 
created,"
-                                               "revisor,Unix_timestamp(revised) as 
revised,revision",
-                                               "topic", (*id)->value.lval);
+            php_midgard_get_object(return_value, MIDGARD_OBJECT_TOPIC,
+               (*id)->value.lval);
                        }
                        else {
                                WRONG_PARAM_COUNT;

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