--- midgard-php4-1.4.2-1/calendar.c.orig	Mon Oct 15 09:44:49 2001
+++ midgard-php4-1.4.2-1/calendar.c	Mon Oct 15 09:44:49 2001
@@ -99,20 +99,32 @@
 	    if (typev == -1)
 		    php_midgard_select(&MidgardArticle, return_value,
 						   ARTICLE_SELECT "," ARTICLE_CALENDAR, ARTICLE_FROM,
-						   "article.topic IN $D AND author=person.id"
-						   " AND article.up=0 AND Unix_Timestamp(calstart)>=$d"
-						   " AND 24*60*60-1+Unix_timestamp("
-						   "     Date_Add(calstart, INTERVAL caldays DAY))<=$d",
-						   sortv, topics, startv, stopv);
+						   "article.topic IN $D AND author = person.id"
+						   " AND article.up=0 AND("
+							 " (Unix_Timestamp(calstart)>=$d"
+							 "  AND Unix_Timestamp(calstart)<=$d)"
+							 " OR"
+							 " (24*60*60-1+Unix_Timestamp(Date_Add(calstart, INTERVAL caldays DAY))>=$d"
+							 "  AND 24*60*60-1+Unix_Timestamp(Date_Add(calstart, INTERVAL caldays DAY))<=$d)"
+							 " OR"
+							 " (Unix_Timestamp(calstart)<=$d"
+							 "  AND 24*60*60-1+Unix_Timestamp(Date_Add(calstart, INTERVAL caldays DAY))>=$d))",
+						   sortv, topics, startv, stopv, startv, stopv, startv, stopv);
 	    else
 		    php_midgard_select(&MidgardArticle, return_value,
 						   ARTICLE_SELECT "," ARTICLE_CALENDAR, ARTICLE_FROM,
 						   "article.type=$d AND article.topic IN $D"
 						   " AND author=person.id"
-						   " AND article.up=0 AND Unix_Timestamp(calstart)>=$d"
-						   " AND 24*60*60-1+Unix_timestamp("
-						   "     Date_Add(calstart, INTERVAL caldays DAY))<=$d",
-						   sortv, typev, topics, startv, stopv);
+						   " AND article.up=0 AND("
+							 " (Unix_Timestamp(calstart)>=$d"
+							 "  AND Unix_Timestamp(calstart)<=$d)"
+							 " OR"
+							 " (24*60*60-1+Unix_Timestamp(Date_Add(calstart, INTERVAL caldays DAY))>=$d"
+							 "  AND 24*60*60-1+Unix_Timestamp(Date_Add(calstart, INTERVAL caldays DAY))<=$d)"
+							 " OR"
+							 " (Unix_Timestamp(calstart)<=$d"
+							 "  AND 24*60*60-1+Unix_Timestamp(Date_Add(calstart, INTERVAL caldays DAY))>=$d))",
+						   sortv, typev, topics, startv, stopv, startv, stopv, startv, stopv);
 		free(topics);
 	}
 }
@@ -195,19 +207,31 @@
 						   ARTICLE_SELECT_FAST "," ARTICLE_CALENDAR,
 						   ARTICLE_FROM_FAST,
 						   "article.topic IN $D"
-						   " AND article.up=0 AND Unix_Timestamp(calstart)>=$d"
-						   " AND 24*60*60-1+Unix_timestamp("
-						   "     Date_Add(calstart, INTERVAL caldays DAY))<=$d",
-						   sortv, topics, startv, stopv);
+						   " AND article.up=0 AND("
+							 " (Unix_Timestamp(calstart)>=$d"
+							 "  AND Unix_Timestamp(calstart)<=$d)"
+							 " OR"
+							 " (24*60*60-1+Unix_Timestamp(Date_Add(calstart, INTERVAL caldays DAY))>=$d"
+							 "  AND 24*60*60-1+Unix_Timestamp(Date_Add(calstart, INTERVAL caldays DAY))<=$d)"
+							 " OR"
+							 " (Unix_Timestamp(calstart)<=$d"
+							 "  AND 24*60*60-1+Unix_Timestamp(Date_Add(calstart, INTERVAL caldays DAY))>=$d))",
+						   sortv, topics, startv, stopv, startv, stopv, startv, stopv);
 		else
 			    php_midgard_select(&MidgardArticle, return_value,
 						   ARTICLE_SELECT_FAST "," ARTICLE_CALENDAR,
 						   ARTICLE_FROM_FAST,
 						   "article.type=$d AND article.topic IN $D"
-						   " AND article.up=0 AND Unix_Timestamp(calstart)>=$d"
-						   " AND 24*60*60-1+Unix_timestamp("
-						   "     Date_Add(calstart, INTERVAL caldays DAY))<=$d",
-						   sortv, typev, topics, startv, stopv);
+						   " AND article.up=0 AND("
+							 " (Unix_Timestamp(calstart)>=$d"
+							 "  AND Unix_Timestamp(calstart)<=$d)"
+							 " OR"
+							 " (24*60*60-1+Unix_Timestamp(Date_Add(calstart, INTERVAL caldays DAY))>=$d"
+							 "  AND 24*60*60-1+Unix_Timestamp(Date_Add(calstart, INTERVAL caldays DAY))<=$d)"
+							 " OR"
+							 " (Unix_Timestamp(calstart)<$d"
+							 "  AND 24*60*60-1+Unix_Timestamp(Date_Add(calstart, INTERVAL caldays DAY))>$d))",
+						   sortv, typev, topics, startv, stopv, startv, stopv, startv, stopv);
 		free(topics);
 	}
 }

