I know it is a shame that I use linux since 6-7 years and never posted a
patch, but that's the fact. :-/

So, here are the diffs which can patch the jan.15. cvs, but I didn't
make it that you can patch it from the CVS rootdir.

The access.c should be patched in lib/src/, the others should be patched
in php4/.

Anyway, nowadays I face with signs like win*: ordinary programs do nasty
things, and I can't find the problem's origin. For example, the
php4/mgd_event.h file was patched without a word, without creating .orig
file, although the patch looks like the other patches, and the command I
patched with was the same. :-O

(Another, offtopic: When I tried to copy the access.c.diff from one
linux to the other linux through smbfs for emailing it, the 'cp' said an
error message 'cannot create regular file'. If I copied to the same dir,
but on another name, and renamed on the dest host, after that trying
'cp' again was successful. :-O )

Fery
--- access.c    Wed Jun  6 16:49:55 2001
+++ access.c.new        Wed Jun  6 17:56:20 2001
@@ -145,6 +145,16 @@
 #if HAVE_MIDGARD_SITEGROUPS
                        ,mgd->current_user->sitegroup
 #endif
+                )
+           || mgd_exists_bool(mgd, "person",
+                         "id=$d AND creator=$d AND username=''"
+#if HAVE_MIDGARD_SITEGROUPS
+                         " AND sitegroup IN (0,$d)"
+#endif
+                         , uid, mgd->current_user->id
+#if HAVE_MIDGARD_SITEGROUPS
+                        ,mgd->current_user->sitegroup
+#endif
                );
 }

--- midgard.c   Tue May 15 16:01:02 2001
+++ midgard.c.new       Tue May 15 16:15:39 2001
@@ -180,6 +180,11 @@
 MGD_FE(get_event, NULL)
 MGD_FE(list_events, NULL)
 MGD_FE(list_events_between, NULL)
+MGD_FE(list_events_by_group, NULL)
+MGD_FE(list_events_between_by_group, NULL)
+MGD_FE(list_events_by_person, NULL)
+MGD_FE(list_events_between_by_person, NULL)
+MGD_FE(list_events_between_by_member, NULL)
 MGD_FE(list_events_all, NULL)
 MGD_FE(list_events_all_between, NULL)
 MGD_FE(count_events_in_period, NULL)
--- person.c    Wed Jun  6 16:50:26 2001
+++ person.c.new        Wed Jun  6 17:50:31 2001
@@ -265,7 +265,7 @@
     convert_to_long_ex(office);
     convert_to_string_ex(extra);
 
-       if (!isowner()) RETURN_FALSE_BECAUSE(MGD_ERR_ACCESS_DENIED);
+//     if (!isowner()) RETURN_FALSE_BECAUSE(MGD_ERR_ACCESS_DENIED);
 
     php_midgard_create(return_value, self, "person", "firstname,lastname,"
                                   "birthdate,street,postcode,city,handphone,"
--- event.c     Tue May 15 16:01:02 2001
+++ event.c.new Tue May 15 16:14:37 2001
@@ -358,6 +358,310 @@
                                                   
(*start)->value.lval,(*end)->value.lval);
 }
 
+MGD_FUNCTION(ret_type, list_events_by_group, (type param))
+{
+    const char *sortv;
+    int typev;
+    zval **id, **sortn, **typen;
+
+    RETVAL_FALSE;
+        CHECK_MGD;
+    switch (ZEND_NUM_ARGS()) {
+    case 3:
+        if (zend_get_parameters_ex(3, &id, &sortn, &typen) == SUCCESS) {
+            convert_to_long_ex(id);
+            convert_to_string_ex(sortn);
+            convert_to_long_ex(typen);
+            sortv = event_sort((*sortn)->value.str.val);
+            typev = (*typen)->value.lval;
+            break;
+        }
+    case 2:
+        if (zend_get_parameters_ex(2, &id, &sortn) == SUCCESS) {
+            convert_to_long_ex(id);
+            convert_to_string_ex(sortn);
+            sortv = event_sort((*sortn)->value.str.val);
+            typev = -1;
+            break;
+        }
+    case 1:
+        if (zend_get_parameters_ex(1, &id) == SUCCESS) {
+            convert_to_long_ex(id);
+            sortv = "event.id DESC";
+            typev = -1;
+            break;
+        }
+    default:
+        WRONG_PARAM_COUNT;
+    }
+
+    if (typev == -1)
+            php_midgard_select(&MidgardEvent, return_value, "id,up,start,end,title,"
+                                   "description,type,extra,owner,busy" 
+SITEGROUP_SELECT,
+                                                   "event", "event.owner=$d",
+                                       sortv, (*id)->value.lval);
+    else
+            php_midgard_select(&MidgardEvent, return_value, "id,up,start,end,title,"
+                                   "description,type,extra,owner,busy" 
+SITEGROUP_SELECT,
+                                                   "event",
+                                       "event.type=$d AND event.owner=$d",
+                                       sortv, typev, (*id)->value.lval);
+}
+
+MGD_FUNCTION(ret_type, list_events_between_by_group, (type param))
+{
+    const char *sortv;
+    int typev;
+    zval **id, **sortn, **typen;
+    zval **start, **end;
+
+    RETVAL_FALSE;
+        CHECK_MGD;
+    switch (ZEND_NUM_ARGS()) {
+    case 5:
+        if (zend_get_parameters_ex(5, &id, &start, &end, &sortn, &typen) == SUCCESS) {
+            convert_to_long_ex(id);
+            convert_to_long_ex(start);
+            convert_to_long_ex(end);
+            convert_to_string_ex(sortn);
+            convert_to_long_ex(typen);
+            sortv = event_sort((*sortn)->value.str.val);
+            typev = (*typen)->value.lval;
+            break;
+        }
+    case 4:
+        if (zend_get_parameters_ex(4, &id, &start, &end, &sortn) == SUCCESS) {
+            convert_to_long_ex(id);
+            convert_to_long_ex(start);
+            convert_to_long_ex(end);
+            convert_to_string_ex(sortn);
+            sortv = event_sort((*sortn)->value.str.val);
+            typev = -1;
+            break;
+        }
+    case 3:
+        if (zend_get_parameters_ex(3, &id, &start, &end) == SUCCESS) {
+            convert_to_long_ex(id);
+            convert_to_long_ex(start);
+            convert_to_long_ex(end);
+            sortv = "event.id DESC";
+            typev = -1;
+            break;
+        }
+    default:
+        WRONG_PARAM_COUNT;
+    }
+    if (typev == -1)
+            php_midgard_select(&MidgardEvent, return_value, "id,up,start,end,title,"
+                                   "description,type,extra,owner,busy" 
+SITEGROUP_SELECT,
+                                                   "event", "event.owner=$d AND "
+                                                   "((event.start>=$d AND 
+event.start<=$d) OR "
+                                                   "(event.start<=$d AND 
+event.end>=$d) OR "
+                                                   "(event.end>=$d AND 
+event.end<=$d))",
+                                       sortv, (*id)->value.lval,
+                                                   
+(*start)->value.lval,(*end)->value.lval,
+                                                   
+(*start)->value.lval,(*end)->value.lval,
+                                                   
+(*start)->value.lval,(*end)->value.lval);
+    else
+            php_midgard_select(&MidgardEvent, return_value, "id,up,start,end,title,"
+                                   "description,type,extra,owner,busy" 
+SITEGROUP_SELECT,
+                                                   "event",
+                                       "event.type=$d AND event.owner=$d AND "
+                                                   "((event.start>=$d AND 
+event.start<=$d) OR "
+                                                   "(event.start<=$d AND 
+event.end>=$d) OR "
+                                                   "(event.end>=$d AND 
+event.end<=$d))",
+                                       sortv, typev, (*id)->value.lval,
+                                                   
+(*start)->value.lval,(*end)->value.lval,
+                                                   
+(*start)->value.lval,(*end)->value.lval,
+                                                   
+(*start)->value.lval,(*end)->value.lval);
+}
+
+MGD_FUNCTION(ret_type, list_events_by_person, (type param))
+{
+    const char *sortv;
+    int typev;
+    zval **id, **sortn, **typen;
+
+    RETVAL_FALSE;
+        CHECK_MGD;
+    switch (ZEND_NUM_ARGS()) {
+    case 3:
+        if (zend_get_parameters_ex(3, &id, &sortn, &typen) == SUCCESS) {
+            convert_to_long_ex(id);
+            convert_to_string_ex(sortn);
+            convert_to_long_ex(typen);
+            sortv = event_sort((*sortn)->value.str.val);
+            typev = (*typen)->value.lval;
+            break;
+        }
+    case 2:
+        if (zend_get_parameters_ex(2, &id, &sortn) == SUCCESS) {
+            convert_to_long_ex(id);
+            convert_to_string_ex(sortn);
+            sortv = event_sort((*sortn)->value.str.val);
+            typev = -1;
+            break;
+        }
+    case 1:
+        if (zend_get_parameters_ex(1, &id) == SUCCESS) {
+            convert_to_long_ex(id);
+            sortv = "event.id DESC";
+            typev = -1;
+            break;
+        }
+    default:
+        WRONG_PARAM_COUNT;
+    }
+
+    if (typev == -1)
+            php_midgard_select(&MidgardEvent, return_value, "id,up,start,end,title,"
+                                   "description,type,extra,owner,busy" 
+SITEGROUP_SELECT,
+                                                   "event", "event.creator=$d",
+                                       sortv, (*id)->value.lval);
+    else
+            php_midgard_select(&MidgardEvent, return_value, "id,up,start,end,title,"
+                                   "description,type,extra,owner,busy" 
+SITEGROUP_SELECT,
+                                                   "event",
+                                       "event.type=$d AND event.creator=$d",
+                                       sortv, typev, (*id)->value.lval);
+}
+
+MGD_FUNCTION(ret_type, list_events_between_by_person, (type param))
+{
+    const char *sortv;
+    int typev;
+    zval **id, **sortn, **typen;
+    zval **start, **end;
+
+    RETVAL_FALSE;
+        CHECK_MGD;
+    switch (ZEND_NUM_ARGS()) {
+    case 5:
+        if (zend_get_parameters_ex(5, &id, &start, &end, &sortn, &typen) == SUCCESS) {
+            convert_to_long_ex(id);
+            convert_to_long_ex(start);
+            convert_to_long_ex(end);
+            convert_to_string_ex(sortn);
+            convert_to_long_ex(typen);
+            sortv = event_sort((*sortn)->value.str.val);
+            typev = (*typen)->value.lval;
+            break;
+        }
+    case 4:
+        if (zend_get_parameters_ex(4, &id, &start, &end, &sortn) == SUCCESS) {
+            convert_to_long_ex(id);
+            convert_to_long_ex(start);
+            convert_to_long_ex(end);
+            convert_to_string_ex(sortn);
+            sortv = event_sort((*sortn)->value.str.val);
+            typev = -1;
+            break;
+        }
+    case 3:
+        if (zend_get_parameters_ex(3, &id, &start, &end) == SUCCESS) {
+            convert_to_long_ex(id);
+            convert_to_long_ex(start);
+            convert_to_long_ex(end);
+            sortv = "event.id DESC";
+            typev = -1;
+            break;
+        }
+    default:
+        WRONG_PARAM_COUNT;
+    }
+    if (typev == -1)
+            php_midgard_select(&MidgardEvent, return_value, "id,up,start,end,title,"
+                                   "description,type,extra,owner,busy" 
+SITEGROUP_SELECT,
+                                                   "event", "event.creator=$d AND "
+                                                   "((event.start>=$d AND 
+event.start<=$d) OR "
+                                                   "(event.start<=$d AND 
+event.end>=$d) OR "
+                                                   "(event.end>=$d AND 
+event.end<=$d))",
+                                       sortv, (*id)->value.lval,
+                                                   
+(*start)->value.lval,(*end)->value.lval,
+                                                   
+(*start)->value.lval,(*end)->value.lval,
+                                                   
+(*start)->value.lval,(*end)->value.lval);
+    else
+            php_midgard_select(&MidgardEvent, return_value, "id,up,start,end,title,"
+                                   "description,type,extra,owner,busy" 
+SITEGROUP_SELECT,
+                                                   "event",
+                                       "event.type=$d AND event.creator=$d AND "
+                                                   "((event.start>=$d AND 
+event.start<=$d) OR "
+                                                   "(event.start<=$d AND 
+event.end>=$d) OR "
+                                                   "(event.end>=$d AND 
+event.end<=$d))",
+                                       sortv, typev, (*id)->value.lval,
+                                                   
+(*start)->value.lval,(*end)->value.lval,
+                                                   
+(*start)->value.lval,(*end)->value.lval,
+                                                   
+(*start)->value.lval,(*end)->value.lval);
+}
+
+MGD_FUNCTION(ret_type, list_events_between_by_member, (type param))
+{
+    const char *sortv;
+    int typev;
+    zval **id, **sortn, **typen;
+    zval **start, **end;
+
+    RETVAL_FALSE;
+        CHECK_MGD;
+    switch (ZEND_NUM_ARGS()) {
+    case 5:
+        if (zend_get_parameters_ex(5, &id, &start, &end, &sortn, &typen) == SUCCESS) {
+            convert_to_long_ex(id);
+            convert_to_long_ex(start);
+            convert_to_long_ex(end);
+            convert_to_string_ex(sortn);
+            convert_to_long_ex(typen);
+            sortv = event_sort((*sortn)->value.str.val);
+            typev = (*typen)->value.lval;
+            break;
+        }
+    case 4:
+        if (zend_get_parameters_ex(4, &id, &start, &end, &sortn) == SUCCESS) {
+            convert_to_long_ex(id);
+            convert_to_long_ex(start);
+            convert_to_long_ex(end);
+            convert_to_string_ex(sortn);
+            sortv = event_sort((*sortn)->value.str.val);
+            typev = -1;
+            break;
+        }
+    case 3:
+        if (zend_get_parameters_ex(3, &id, &start, &end) == SUCCESS) {
+            convert_to_long_ex(id);
+            convert_to_long_ex(start);
+            convert_to_long_ex(end);
+            sortv = "event.id DESC";
+            typev = -1;
+            break;
+        }
+    default:
+        WRONG_PARAM_COUNT;
+    }
+    if (typev == -1)
+            php_midgard_select(&MidgardEvent, return_value, "event.id AS 
+id,up,start,end,title,"
+                                   "description,type,event.extra AS extra,owner,busy",
+                                                   "event,eventmember", 
+"eventmember.uid=$d AND event.id=eventmember.eid AND "
+                                                   "((event.start>=$d AND 
+event.start<=$d) OR "
+                                                   "(event.start<=$d AND 
+event.end>=$d) OR "
+                                                   "(event.end>=$d AND 
+event.end<=$d))",
+                                       sortv, (*id)->value.lval,
+                                                   
+(*start)->value.lval,(*end)->value.lval,
+                                                   
+(*start)->value.lval,(*end)->value.lval,
+                                                   
+(*start)->value.lval,(*end)->value.lval);
+    else
+            php_midgard_select(&MidgardEvent, return_value, "event.id AS 
+id,up,start,end,title,"
+                                   "description,type,event.extra AS extra,owner,busy",
+                                                   "event,eventmember",
+                                       "event.type=$d AND eventmember.uid=$d AND 
+event.id=eventmember.eid AND "
+                                                   "((event.start>=$d AND 
+event.start<=$d) OR "
+                                                   "(event.start<=$d AND 
+event.end>=$d) OR "
+                                                   "(event.end>=$d AND 
+event.end<=$d))",
+                                       sortv, typev, (*id)->value.lval,
+                                                   
+(*start)->value.lval,(*end)->value.lval,
+                                                   
+(*start)->value.lval,(*end)->value.lval,
+                                                   
+(*start)->value.lval,(*end)->value.lval);
+}
+
 MGD_FUNCTION(ret_type, list_events_all, (type param))
 {
     int *events;
--- mgd_event.h Tue May 15 16:01:02 2001
+++ mgd_event.h.new     Tue May 15 16:16:39 2001
@@ -30,6 +30,11 @@
 extern MGD_FUNCTION(ret_type, get_event, (type param));
 extern MGD_FUNCTION(ret_type, list_events, (type param));
 extern MGD_FUNCTION(ret_type, list_events_between, (type param));
+extern MGD_FUNCTION(ret_type, list_events_by_group, (type param));
+extern MGD_FUNCTION(ret_type, list_events_between_by_group, (type param));
+extern MGD_FUNCTION(ret_type, list_events_by_person, (type param));
+extern MGD_FUNCTION(ret_type, list_events_between_by_person, (type param));
+extern MGD_FUNCTION(ret_type, list_events_between_by_member, (type param));
 extern MGD_FUNCTION(ret_type, list_events_all, (type param));
 extern MGD_FUNCTION(ret_type, list_events_all_between, (type param));
 extern MGD_FUNCTION(ret_type, count_events_in_period, (type param));

---------------------------------------------------------------------
To unsubscribe, e-mail: [EMAIL PROTECTED]
For additional commands, e-mail: [EMAIL PROTECTED]

Reply via email to