summaryrefslogtreecommitdiff
path: root/ext/mcal
diff options
context:
space:
mode:
authorMark Musone <musone@php.net>1999-09-01 20:30:27 +0000
committerMark Musone <musone@php.net>1999-09-01 20:30:27 +0000
commited74428ca12c42592fda035bfc1c1160f99cc1e7 (patch)
tree45abca64927bbc443fdace01e468d382ddbdf82f /ext/mcal
parentb6789ae332cd1677dcdac29bc24fe16006f4d383 (diff)
downloadphp-git-ed74428ca12c42592fda035bfc1c1160f99cc1e7.tar.gz
Added mcal module
Diffstat (limited to 'ext/mcal')
-rw-r--r--ext/mcal/Makefile.am6
-rw-r--r--ext/mcal/Makefile.in330
-rw-r--r--ext/mcal/config.h.stub2
-rw-r--r--ext/mcal/config.m425
-rw-r--r--ext/mcal/php3_mcal.c955
-rw-r--r--ext/mcal/php3_mcal.h57
6 files changed, 1375 insertions, 0 deletions
diff --git a/ext/mcal/Makefile.am b/ext/mcal/Makefile.am
new file mode 100644
index 0000000000..3ee9cdd58f
--- /dev/null
+++ b/ext/mcal/Makefile.am
@@ -0,0 +1,6 @@
+# $Id$
+
+INCLUDES=@INCLUDES@ -I@top_srcdir@ -I@top_srcdir@/libzend
+noinst_LIBRARIES=libphpext_mcal.a
+libphpext_mcal_a_SOURCES=php3_mcal.c
+
diff --git a/ext/mcal/Makefile.in b/ext/mcal/Makefile.in
new file mode 100644
index 0000000000..b051174755
--- /dev/null
+++ b/ext/mcal/Makefile.in
@@ -0,0 +1,330 @@
+# Makefile.in generated automatically by automake 1.4 from Makefile.am
+
+# Copyright (C) 1994, 1995-8, 1999 Free Software Foundation, Inc.
+# This Makefile.in is free software; the Free Software Foundation
+# gives unlimited permission to copy and/or distribute it,
+# with or without modifications, as long as this notice is preserved.
+
+# This program is distributed in the hope that it will be useful,
+# but WITHOUT ANY WARRANTY, to the extent permitted by law; without
+# even the implied warranty of MERCHANTABILITY or FITNESS FOR A
+# PARTICULAR PURPOSE.
+
+# $Id$
+
+
+SHELL = @SHELL@
+
+srcdir = @srcdir@
+top_srcdir = @top_srcdir@
+VPATH = @srcdir@
+prefix = @prefix@
+exec_prefix = @exec_prefix@
+
+bindir = @bindir@
+sbindir = @sbindir@
+libexecdir = @libexecdir@
+datadir = @datadir@
+sysconfdir = @sysconfdir@
+sharedstatedir = @sharedstatedir@
+localstatedir = @localstatedir@
+libdir = @libdir@
+infodir = @infodir@
+mandir = @mandir@
+includedir = @includedir@
+oldincludedir = /usr/include
+
+DESTDIR =
+
+pkgdatadir = $(datadir)/@PACKAGE@
+pkglibdir = $(libdir)/@PACKAGE@
+pkgincludedir = $(includedir)/@PACKAGE@
+
+top_builddir = ../..
+
+ACLOCAL = @ACLOCAL@
+AUTOCONF = @AUTOCONF@
+AUTOMAKE = @AUTOMAKE@
+AUTOHEADER = @AUTOHEADER@
+
+INSTALL = @INSTALL@
+INSTALL_PROGRAM = @INSTALL_PROGRAM@ $(AM_INSTALL_PROGRAM_FLAGS)
+INSTALL_DATA = @INSTALL_DATA@
+INSTALL_SCRIPT = @INSTALL_SCRIPT@
+transform = @program_transform_name@
+
+NORMAL_INSTALL = :
+PRE_INSTALL = :
+POST_INSTALL = :
+NORMAL_UNINSTALL = :
+PRE_UNINSTALL = :
+POST_UNINSTALL = :
+host_alias = @host_alias@
+host_triplet = @host@
+APACHE_INCLUDE = @APACHE_INCLUDE@
+APACHE_TARGET = @APACHE_TARGET@
+APXS = @APXS@
+APXS_EXP = @APXS_EXP@
+APXS_LDFLAGS = @APXS_LDFLAGS@
+AS = @AS@
+BINNAME = @BINNAME@
+CC = @CC@
+CFLAGS = @CFLAGS@
+CFLAGS_SHLIB = @CFLAGS_SHLIB@
+DEBUG_CFLAGS = @DEBUG_CFLAGS@
+DLLTOOL = @DLLTOOL@
+EXTINFO_DEPS = @EXTINFO_DEPS@
+EXTRA_LIBS = @EXTRA_LIBS@
+EXT_LIBS = @EXT_LIBS@
+EXT_SHARED = @EXT_SHARED@
+EXT_STATIC = @EXT_STATIC@
+EXT_SUBDIRS = @EXT_SUBDIRS@
+FHTTPD_LIB = @FHTTPD_LIB@
+FHTTPD_TARGET = @FHTTPD_TARGET@
+HSREGEX = @HSREGEX@
+INSTALL_IT = @INSTALL_IT@
+LD = @LD@
+LDFLAGS_SHLIB = @LDFLAGS_SHLIB@
+LDFLAGS_SHLIB_EXPORT = @LDFLAGS_SHLIB_EXPORT@
+LEX_CFLAGS = @LEX_CFLAGS@
+LIBTOOL = @LIBTOOL@
+LN_S = @LN_S@
+MAINT = @MAINT@
+MAKEINFO = @MAKEINFO@
+NM = @NM@
+OBJDUMP = @OBJDUMP@
+PACKAGE = @PACKAGE@
+PERL_PATH = @PERL_PATH@
+PHP_BUILD_DATE = @PHP_BUILD_DATE@
+PHP_DEBUG = @PHP_DEBUG@
+PHP_LIBS = @PHP_LIBS@
+PHP_VERSION = @PHP_VERSION@
+PROG_SENDMAIL = @PROG_SENDMAIL@
+RANLIB = @RANLIB@
+RDYNAMIC_LFLAGS = @RDYNAMIC_LFLAGS@
+REGEX_LIB = @REGEX_LIB@
+RPATHS = @RPATHS@
+STRONGHOLD = @STRONGHOLD@
+TSRM_DIR = @TSRM_DIR@
+TSRM_LIB = @TSRM_LIB@
+VERSION = @VERSION@
+WARNING_LEVEL = @WARNING_LEVEL@
+YACC = @YACC@
+abs_builddir = @abs_builddir@
+abs_srcdir = @abs_srcdir@
+
+INCLUDES = @INCLUDES@ -I@top_srcdir@ -I@top_srcdir@/libzend
+noinst_LIBRARIES = libphpext_mcal.a
+libphpext_mcal_a_SOURCES = php3_mcal.c
+mkinstalldirs = $(SHELL) $(top_srcdir)/mkinstalldirs
+CONFIG_HEADER = ../../php_config.h
+CONFIG_CLEAN_FILES =
+LIBRARIES = $(noinst_LIBRARIES)
+
+
+DEFS = @DEFS@ -I. -I$(srcdir) -I../..
+CPPFLAGS = @CPPFLAGS@
+LDFLAGS = @LDFLAGS@
+LIBS = @LIBS@
+libphpext_mcal_a_LIBADD =
+libphpext_mcal_a_OBJECTS = php3_mcal.o
+AR = ar
+COMPILE = $(CC) $(DEFS) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS)
+LTCOMPILE = $(LIBTOOL) --mode=compile $(CC) $(DEFS) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS)
+CCLD = $(CC)
+LINK = $(LIBTOOL) --mode=link $(CCLD) $(AM_CFLAGS) $(CFLAGS) $(LDFLAGS) -o $@
+DIST_COMMON = Makefile.am Makefile.in
+
+
+DISTFILES = $(DIST_COMMON) $(SOURCES) $(HEADERS) $(TEXINFOS) $(EXTRA_DIST)
+
+TAR = tar
+GZIP_ENV = --best
+SOURCES = $(libphpext_mcal_a_SOURCES)
+OBJECTS = $(libphpext_mcal_a_OBJECTS)
+
+all: all-redirect
+.SUFFIXES:
+.SUFFIXES: .S .c .lo .o .s
+$(srcdir)/Makefile.in: @MAINTAINER_MODE_TRUE@ Makefile.am $(top_srcdir)/configure.in $(ACLOCAL_M4)
+ cd $(top_srcdir) && $(AUTOMAKE) --gnu --include-deps ext/mcal/Makefile
+
+Makefile: $(srcdir)/Makefile.in $(top_builddir)/config.status
+ cd $(top_builddir) \
+ && CONFIG_FILES=$(subdir)/$@ CONFIG_HEADERS= $(SHELL) ./config.status
+
+
+mostlyclean-noinstLIBRARIES:
+
+clean-noinstLIBRARIES:
+ -test -z "$(noinst_LIBRARIES)" || rm -f $(noinst_LIBRARIES)
+
+distclean-noinstLIBRARIES:
+
+maintainer-clean-noinstLIBRARIES:
+
+.c.o:
+ $(COMPILE) -c $<
+
+.s.o:
+ $(COMPILE) -c $<
+
+.S.o:
+ $(COMPILE) -c $<
+
+mostlyclean-compile:
+ -rm -f *.o core *.core
+
+clean-compile:
+
+distclean-compile:
+ -rm -f *.tab.c
+
+maintainer-clean-compile:
+
+.c.lo:
+ $(LIBTOOL) --mode=compile $(COMPILE) -c $<
+
+.s.lo:
+ $(LIBTOOL) --mode=compile $(COMPILE) -c $<
+
+.S.lo:
+ $(LIBTOOL) --mode=compile $(COMPILE) -c $<
+
+mostlyclean-libtool:
+ -rm -f *.lo
+
+clean-libtool:
+ -rm -rf .libs _libs
+
+distclean-libtool:
+
+maintainer-clean-libtool:
+
+libphpext_mcal.a: $(libphpext_mcal_a_OBJECTS) $(libphpext_mcal_a_DEPENDENCIES)
+ -rm -f libphpext_mcal.a
+ $(AR) cru libphpext_mcal.a $(libphpext_mcal_a_OBJECTS) $(libphpext_mcal_a_LIBADD)
+ $(RANLIB) libphpext_mcal.a
+
+tags: TAGS
+
+ID: $(HEADERS) $(SOURCES) $(LISP)
+ list='$(SOURCES) $(HEADERS)'; \
+ unique=`for i in $$list; do echo $$i; done | \
+ awk ' { files[$$0] = 1; } \
+ END { for (i in files) print i; }'`; \
+ here=`pwd` && cd $(srcdir) \
+ && mkid -f$$here/ID $$unique $(LISP)
+
+TAGS: $(HEADERS) $(SOURCES) $(TAGS_DEPENDENCIES) $(LISP)
+ tags=; \
+ here=`pwd`; \
+ list='$(SOURCES) $(HEADERS)'; \
+ unique=`for i in $$list; do echo $$i; done | \
+ awk ' { files[$$0] = 1; } \
+ END { for (i in files) print i; }'`; \
+ test -z "$(ETAGS_ARGS)$$unique$(LISP)$$tags" \
+ || (cd $(srcdir) && etags $(ETAGS_ARGS) $$tags $$unique $(LISP) -o $$here/TAGS)
+
+mostlyclean-tags:
+
+clean-tags:
+
+distclean-tags:
+ -rm -f TAGS ID
+
+maintainer-clean-tags:
+
+distdir = $(top_builddir)/$(PACKAGE)-$(VERSION)/$(subdir)
+
+subdir = ext/mcal
+
+distdir: $(DISTFILES)
+ @for file in $(DISTFILES); do \
+ d=$(srcdir); \
+ if test -d $$d/$$file; then \
+ cp -pr $$/$$file $(distdir)/$$file; \
+ else \
+ test -f $(distdir)/$$file \
+ || ln $$d/$$file $(distdir)/$$file 2> /dev/null \
+ || cp -p $$d/$$file $(distdir)/$$file || :; \
+ fi; \
+ done
+info-am:
+info: info-am
+dvi-am:
+dvi: dvi-am
+check-am: all-am
+check: check-am
+installcheck-am:
+installcheck: installcheck-am
+install-exec-am:
+install-exec: install-exec-am
+
+install-data-am:
+install-data: install-data-am
+
+install-am: all-am
+ @$(MAKE) $(AM_MAKEFLAGS) install-exec-am install-data-am
+install: install-am
+uninstall-am:
+uninstall: uninstall-am
+all-am: Makefile $(LIBRARIES)
+all-redirect: all-am
+install-strip:
+ $(MAKE) $(AM_MAKEFLAGS) AM_INSTALL_PROGRAM_FLAGS=-s install
+installdirs:
+
+
+mostlyclean-generic:
+
+clean-generic:
+
+distclean-generic:
+ -rm -f Makefile $(CONFIG_CLEAN_FILES)
+ -rm -f config.cache config.log stamp-h stamp-h[0-9]*
+
+maintainer-clean-generic:
+mostlyclean-am: mostlyclean-noinstLIBRARIES mostlyclean-compile \
+ mostlyclean-libtool mostlyclean-tags \
+ mostlyclean-generic
+
+mostlyclean: mostlyclean-am
+
+clean-am: clean-noinstLIBRARIES clean-compile clean-libtool clean-tags \
+ clean-generic mostlyclean-am
+
+clean: clean-am
+
+distclean-am: distclean-noinstLIBRARIES distclean-compile \
+ distclean-libtool distclean-tags distclean-generic \
+ clean-am
+ -rm -f libtool
+
+distclean: distclean-am
+
+maintainer-clean-am: maintainer-clean-noinstLIBRARIES \
+ maintainer-clean-compile maintainer-clean-libtool \
+ maintainer-clean-tags maintainer-clean-generic \
+ distclean-am
+ @echo "This command is intended for maintainers to use;"
+ @echo "it deletes files that may require special tools to rebuild."
+
+maintainer-clean: maintainer-clean-am
+
+.PHONY: mostlyclean-noinstLIBRARIES distclean-noinstLIBRARIES \
+clean-noinstLIBRARIES maintainer-clean-noinstLIBRARIES \
+mostlyclean-compile distclean-compile clean-compile \
+maintainer-clean-compile mostlyclean-libtool distclean-libtool \
+clean-libtool maintainer-clean-libtool tags mostlyclean-tags \
+distclean-tags clean-tags maintainer-clean-tags distdir info-am info \
+dvi-am dvi check check-am installcheck-am installcheck install-exec-am \
+install-exec install-data-am install-data install-am install \
+uninstall-am uninstall all-redirect all-am all installdirs \
+mostlyclean-generic distclean-generic clean-generic \
+maintainer-clean-generic clean mostlyclean distclean maintainer-clean
+
+
+# Tell versions [3.59,3.63) of GNU make to not export all variables.
+# Otherwise a system limit (for SysV at least) may be exceeded.
+.NOEXPORT:
diff --git a/ext/mcal/config.h.stub b/ext/mcal/config.h.stub
new file mode 100644
index 0000000000..fb51531c78
--- /dev/null
+++ b/ext/mcal/config.h.stub
@@ -0,0 +1,2 @@
+/* Define if you want the MCAL extension */
+#define HAVE_MCAL 0
diff --git a/ext/mcal/config.m4 b/ext/mcal/config.m4
new file mode 100644
index 0000000000..1036c185ec
--- /dev/null
+++ b/ext/mcal/config.m4
@@ -0,0 +1,25 @@
+dnl $Id$
+
+AC_MSG_CHECKING(for MCAL support)
+AC_ARG_WITH(mcal,
+[ --with-mcal[=DIR] Include MCAL support.],
+[
+ if test "$withval" != "no"; then
+ if test "$withval" = "yes"; then
+ MCAL_DIR=/usr/local
+ else
+ MCAL_DIR=$withval
+ fi
+
+ AC_ADD_INCLUDE($MCAL_DIR)
+ AC_ADD_LIBRARY_WITH_PATH(mcal, $MCAL_DIR)
+ AC_DEFINE(HAVE_MCAL)
+ PHP_EXTENSION(mcal)
+ AC_MSG_RESULT(yes)
+ else
+ AC_MSG_ERROR(no)
+ fi
+],[
+ AC_MSG_RESULT(no)
+])
+
diff --git a/ext/mcal/php3_mcal.c b/ext/mcal/php3_mcal.c
new file mode 100644
index 0000000000..ff22aa4fac
--- /dev/null
+++ b/ext/mcal/php3_mcal.c
@@ -0,0 +1,955 @@
+/*
+ +----------------------------------------------------------------------+
+ | PHP HTML Embedded Scripting Language Version 3.0 |
+ +----------------------------------------------------------------------+
+ | Copyright (c) 1997-1999 PHP Development Team (See Credits file) |
+ +----------------------------------------------------------------------+
+ | This program is free software; you can redistribute it and/or modify |
+ | it under the terms of one of the following licenses: |
+ | |
+ | A) the GNU General Public License as published by the Free Software |
+ | Foundation; either version 2 of the License, or (at your option) |
+ | any later version. |
+ | |
+ | B) the PHP License as published by the PHP Development Team and |
+ | included in the distribution in the file: LICENSE |
+ | |
+ | 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 both licenses referred to here. |
+ | If you did not, or have any questions about PHP licensing, please |
+ | contact core@php.net. |
+ +----------------------------------------------------------------------+
+ | Authors: |
+ | Mark Musone <musone@chek.com> |
+ +----------------------------------------------------------------------+
+ */
+
+#define MCAL1
+
+#ifdef ERROR
+#undef ERROR
+#endif
+
+#include "php.h"
+
+#if COMPILE_DL
+#include "dl/phpdl.h"
+#endif
+
+#if HAVE_MCAL
+
+#include <time.h>
+#include <stdio.h>
+#include <ctype.h>
+#include <signal.h>
+#include <stdarg.h>
+#include "mcal.h"
+#include "php3_mcal.h"
+#include "modules.h"
+#if (WIN32|WINNT)
+#include "winsock.h"
+#endif
+CALSTREAM *cal_open();
+CALSTREAM *cal_close_it ();
+CALSTREAM *cal_close_full ();
+
+
+typedef struct php3_mcal_le_struct {
+ CALSTREAM *mcal_stream;
+ long flags;
+} pils;
+
+
+typedef struct cal_list
+{
+u_int32_t uid;
+struct cal_list *next;
+} cal_list_t;
+
+static cal_list_t *g_cal_list=NULL;
+static cal_list_t *g_cal_list_end=NULL;
+/*
+ * this array should be set up as:
+ * {"PHPScriptFunctionName",dllFunctionName,1}
+ */
+
+function_entry mcal_functions[] = {
+ {"mcal_open", php3_mcal_open, NULL},
+ {"mcal_popen", php3_mcal_popen, NULL},
+ {"mcal_reopen", php3_mcal_reopen, NULL},
+ {"mcal_fetch_event", php3_mcal_fetch_event, NULL},
+ {"mcal_list_events", php3_mcal_list_events, NULL},
+ {"mcal_list_alarms", php3_mcal_list_alarms, NULL},
+ {"mcal_create_calendar", php3_mcal_create_calendar, NULL},
+ {"mcal_rename_calendar", php3_mcal_rename_calendar, NULL},
+ {"mcal_delete_calendar", php3_mcal_delete_calendar, NULL},
+ {"mcal_delete_event", php3_mcal_delete_event, NULL},
+ {"mcal_store_event", php3_mcal_store_event, NULL},
+ {"mcal_snooze", php3_mcal_snooze, NULL},
+ {NULL, NULL, NULL}
+};
+
+
+php3_module_entry php3_mcal_module_entry = {
+ CALVER, mcal_functions, PHP_MINIT(mcal), NULL, NULL, NULL, PHP_MINFO(mcal), 0, 0, 0, NULL
+};
+
+
+#if COMPILE_DL
+DLEXPORT php3_module_entry *get_module(void) { return &php3_mcal_module_entry; }
+#endif
+
+/*
+ I believe since this global is used ONLY within this module,
+ and nothing will link to this module, we can use the simple
+ thread local_ storage
+*/
+int le_mcal;
+#ifdef OP_RELOGIN
+/* AJS: persistent connection type */
+int le_pmcal;
+#endif
+char mcal_user[80]="";
+char mcal_password[80]="";
+
+CALSTREAM *cal_close_it (pils *mcal_le_struct)
+{
+ CALSTREAM *ret;
+ ret = cal_close (mcal_le_struct->mcal_stream,0);
+ efree(mcal_le_struct);
+ return ret;
+}
+
+
+PHP_MINFO_FUNCTION(mcal)
+{
+ php3_printf("Mcal Support enabled<br>");
+ php3_printf("<table>");
+ php3_printf("<tr><td>Mcal Version:</td>");
+ php3_printf("<td>%s</td>",CALVER);
+ php3_printf("</tr></table>");
+}
+
+PHP_MINIT_FUNCTION(mcal)
+{
+
+ le_mcal = register_list_destructors(cal_close_it,NULL);
+
+ return SUCCESS;
+}
+
+
+static int add_assoc_object(pval *arg, char *key, pval *tmp)
+{
+ HashTable *symtable;
+
+ if (arg->type == IS_OBJECT) {
+ symtable = arg->value.obj.properties;
+ } else {
+ symtable = arg->value.ht;
+ }
+ return zend_hash_update(symtable, key, strlen(key)+1, (void *) &tmp, sizeof(pval *), NULL);
+}
+
+
+void php3_mcal_do_open(INTERNAL_FUNCTION_PARAMETERS, int persistent)
+{
+ pval *calendar;
+ pval *user;
+ pval *passwd;
+ pval *options;
+ CALSTREAM *mcal_stream;
+ pils *mcal_le_struct;
+ long flags=0;
+ long cl_flags=0;
+ int ind;
+ int myargc=ARG_COUNT(ht);
+
+
+ if (myargc <3 || myargc >4 || getParameters(ht, myargc, &calendar,&user,&passwd,&options) == FAILURE) {
+ WRONG_PARAM_COUNT;
+ }
+
+ convert_to_string(calendar);
+ convert_to_string(user);
+ convert_to_string(passwd);
+ strcpy(mcal_user,user->value.str.val);
+ strcpy(mcal_password,passwd->value.str.val);
+ if(myargc ==4) {
+ convert_to_long(options);
+ flags=options->value.lval;
+ }
+ mcal_stream = cal_open(NULL,calendar->value.str.val,0);
+ if (!mcal_stream) {
+ php3_error(E_WARNING,"Couldn't open stream %s\n",calendar->value.str.val);
+ RETURN_FALSE;
+ }
+
+ mcal_le_struct = emalloc(sizeof(pils));
+ mcal_le_struct->mcal_stream = mcal_stream;
+ mcal_le_struct->flags = 0;
+ ind = php3_list_insert(mcal_le_struct, le_mcal);
+ RETURN_LONG(ind);
+}
+
+
+
+
+/* {{{ proto int mcal_close(int stream_id [, int options])
+ Close an MCAL stream */
+void php3_mcal_close(INTERNAL_FUNCTION_PARAMETERS)
+{
+ pval *options, *streamind;
+ int ind, ind_type;
+ pils *mcal_le_struct=NULL;
+ int myargcount=ARG_COUNT(ht);
+ long flags = 0;
+
+ if (myargcount < 1 || myargcount > 2 || getParameters(ht, myargcount, &streamind, &options) == FAILURE) {
+ WRONG_PARAM_COUNT;
+ }
+ convert_to_long(streamind);
+ ind = streamind->value.lval;
+ mcal_le_struct = (pils *)php3_list_find(ind, &ind_type);
+ if (!mcal_le_struct ) {
+ php3_error(E_WARNING, "Unable to find stream pointer");
+ RETURN_FALSE;
+ }
+ if(myargcount==2) {
+ convert_to_long(options);
+ flags = options->value.lval;
+ mcal_le_struct->flags = flags;
+ }
+ php3_list_delete(ind);
+ RETURN_TRUE;
+}
+/* }}} */
+
+
+
+
+
+
+
+
+/* {{{ proto int mcal_open(string calendar, string user, string password [, int options])
+ Open an MCAL stream to a calendar */
+void php3_mcal_open(INTERNAL_FUNCTION_PARAMETERS)
+{
+ php3_mcal_do_open(INTERNAL_FUNCTION_PARAM_PASSTHRU, 0);
+}
+/* }}} */
+
+
+/* {{{ proto int mcal_reopen(int stream_id, string calendar [, int options])
+ Reopen MCAL stream to new calendar */
+void php3_mcal_reopen(INTERNAL_FUNCTION_PARAMETERS)
+{
+ pval *streamind;
+ pval *calendar;
+ pval *options;
+ CALSTREAM *mcal_stream;
+ pils *mcal_le_struct;
+ int ind, ind_type;
+ long flags=0;
+ long cl_flags=0;
+ int myargc=ARG_COUNT(ht);
+
+ if (myargc<2 || myargc>3 || getParameters(ht,myargc,&streamind, &calendar, &options) == FAILURE) {
+ WRONG_PARAM_COUNT;
+ }
+
+ convert_to_long(streamind);
+ ind = streamind->value.lval;
+ mcal_le_struct = (pils *)php3_list_find(ind, &ind_type);
+ if (!mcal_le_struct ) {
+ php3_error(E_WARNING, "Unable to find stream pointer");
+ RETURN_FALSE;
+ }
+
+ convert_to_string(calendar);
+ if(myargc == 3) {
+ convert_to_long(options);
+ flags = options->value.lval;
+ mcal_le_struct->flags = cl_flags;
+ }
+ // mcal_stream = cal_connect(calendar->value.str.val);
+ // cal_login(mcal_stream, calendar->value.str.val);
+ if (mcal_stream == NULL) {
+ php3_error(E_WARNING,"Couldn't re-open stream\n");
+ RETURN_FALSE;
+ }
+ RETURN_TRUE;
+}
+/* }}} */
+
+
+/* {{{ proto int mcal_expunge(int stream_id)
+ Delete all messages marked for deletion */
+void php3_mcal_expunge(INTERNAL_FUNCTION_PARAMETERS)
+{
+ pval *streamind;
+ int ind, ind_type;
+ pval *start,*end;
+ pils *mcal_le_struct;
+
+ if (ARG_COUNT(ht) != 1 || getParameters(ht, 1, &streamind) == FAILURE) {
+ WRONG_PARAM_COUNT;
+ }
+
+ convert_to_long(streamind);
+
+ ind = streamind->value.lval;
+
+ mcal_le_struct = (pils *)php3_list_find(ind, &ind_type);
+
+ if (!mcal_le_struct ) {
+ php3_error(E_WARNING, "Unable to find stream pointer");
+ RETURN_FALSE;
+ }
+
+/* cal_expunge (mcal_le_struct->mcal_stream);
+*/
+ RETURN_TRUE;
+}
+/* }}} */
+
+/* {{{ proto int mcal_fetch_event(int stream_id,int eventid, [int options])
+ Fetch an event*/
+void php3_mcal_fetch_event(INTERNAL_FUNCTION_PARAMETERS)
+{
+ pval *streamind,*eventid,*start,*end,*options=NULL;
+ int ind, ind_type;
+ pils *mcal_le_struct=NULL;
+ CALEVENT *myevent;
+ int myargcount=ARG_COUNT(ht);
+
+ if (myargcount < 1 || myargcount > 3 || getParameters(ht, myargcount, &streamind, &eventid,&options) == FAILURE) {
+ WRONG_PARAM_COUNT;
+ }
+ convert_to_long(streamind);
+ convert_to_long(eventid);
+ ind = streamind->value.lval;
+ mcal_le_struct = (pils *)php3_list_find(ind, &ind_type);
+ if (!mcal_le_struct ) {
+ php3_error(E_WARNING, "Unable to find stream pointer");
+ RETURN_FALSE;
+ }
+ if(myargcount==3) {
+ convert_to_long(options);
+ }
+ cal_fetch(mcal_le_struct->mcal_stream,eventid->value.lval,&myevent);
+
+ object_init(return_value);
+ add_property_long(return_value,"id",myevent->id);
+ add_property_long(return_value,"public",myevent->public);
+ MAKE_STD_ZVAL(start);
+ object_init(start);
+ if(myevent->start.has_date)
+ {
+ add_property_long(start,"year",myevent->start.year);
+ add_property_long(start,"month",myevent->start.mon);
+ add_property_long(start,"mday",myevent->start.mday);
+ }
+ if(myevent->start.has_time)
+ {
+ add_property_long(start,"hour",myevent->start.hour);
+ add_property_long(start,"min",myevent->start.min);
+ add_property_long(start,"sec",myevent->start.sec);
+ }
+ add_assoc_object(return_value, "start",start);
+
+ MAKE_STD_ZVAL(end);
+ object_init(end);
+ if(myevent->end.has_date)
+ {
+ add_property_long(end,"year",myevent->end.year);
+ add_property_long(end,"month",myevent->end.mon);
+ add_property_long(end,"mday",myevent->end.mday);
+ }
+ if(myevent->end.has_time)
+ {
+ add_property_long(end,"hour",myevent->end.hour);
+ add_property_long(end,"min",myevent->end.min);
+ add_property_long(end,"sec",myevent->end.sec);
+ }
+ add_assoc_object(return_value, "end",end);
+
+ add_property_string(return_value,"category",myevent->category,1);
+ add_property_string(return_value,"title",myevent->title,1);
+ add_property_string(return_value,"description",myevent->description,1);
+ add_property_long(return_value,"alarm",myevent->alarm);
+}
+/* }}} */
+
+/* {{{ proto array mcal_list_events(int stream_id,int begindate, [int enddate])
+ Returns list of UIDs for that day or range of days */
+void php3_mcal_list_events(INTERNAL_FUNCTION_PARAMETERS)
+{
+ pval *streamind,*begindate,*enddate;
+ pval **pvalue;
+ int ind, ind_type;
+ unsigned long i;
+ char *t;
+ int mcal_folders=0;
+ unsigned int msgno;
+ pils *mcal_le_struct;
+ cal_list_t *my_cal_list;
+ datetime_t begincal,endcal;
+ int myargc;
+ myargc=ARG_COUNT(ht);
+ if (myargc <2 || myargc > 3 || getParameters(ht,myargc,&streamind,&begindate,&enddate) == FAILURE) {
+ WRONG_PARAM_COUNT;
+ }
+
+ convert_to_long(streamind);
+ convert_to_array(begindate);
+ if(myargc == 3) convert_to_array(enddate);
+ ind = streamind->value.lval;
+
+ mcal_le_struct = (pils *)php3_list_find(ind, &ind_type);
+
+ if (!mcal_le_struct ) {
+ php3_error(E_WARNING, "Unable to find stream pointer");
+ RETURN_FALSE;
+ }
+
+ /* Initialize return array */
+ if (array_init(return_value) == FAILURE) {
+ RETURN_FALSE;
+ }
+ begincal.has_time=0;
+ endcal.has_time=0;
+ if(_php3_hash_find(begindate->value.ht,"year",sizeof("year"),(void **) &pvalue)== SUCCESS){
+ SEPARATE_ZVAL(pvalue);
+ convert_to_long(*pvalue);
+ begincal.year=(*pvalue)->value.lval;
+ }
+ if(_php3_hash_find(begindate->value.ht,"month",sizeof("month"),(void **) &pvalue)== SUCCESS){
+ SEPARATE_ZVAL(pvalue);
+ convert_to_long(*pvalue);
+ begincal.mon=(*pvalue)->value.lval;
+ }
+ if(_php3_hash_find(begindate->value.ht,"day",sizeof("day"),(void **) &pvalue)== SUCCESS){
+ SEPARATE_ZVAL(pvalue);
+ convert_to_long(*pvalue);
+ begincal.mday=(*pvalue)->value.lval;
+ }
+if(myargc == 3)
+ {
+ if(_php3_hash_find(enddate->value.ht,"year",sizeof("year"),(void **) &pvalue)== SUCCESS){
+ SEPARATE_ZVAL(pvalue);
+ convert_to_long(*pvalue);
+ endcal.year=(*pvalue)->value.lval;
+ }
+ if(_php3_hash_find(enddate->value.ht,"month",sizeof("month"),(void **) &pvalue)== SUCCESS){
+ SEPARATE_ZVAL(pvalue);
+ convert_to_long(*pvalue);
+ endcal.mon=(*pvalue)->value.lval;
+ }
+ if(_php3_hash_find(enddate->value.ht,"day",sizeof("day"),(void **) &pvalue)== SUCCESS){
+ SEPARATE_ZVAL(pvalue);
+ convert_to_long(*pvalue);
+ endcal.mday=(*pvalue)->value.lval;
+ }
+ }
+
+
+g_cal_list=NULL;
+ cal_search_range(mcal_le_struct->mcal_stream,&begincal,&endcal);
+ my_cal_list=g_cal_list;
+ while(my_cal_list != NULL)
+ {
+ add_next_index_long(return_value,my_cal_list->uid);
+ my_cal_list=my_cal_list->next;
+ free(g_cal_list);
+ g_cal_list=my_cal_list;
+ }
+}
+/* }}} */
+
+
+/* {{{ proto string mcal_create_calendar(int stream_id, string calendar)
+ Create a new calendar*/
+
+void php3_mcal_create_calendar(INTERNAL_FUNCTION_PARAMETERS)
+{
+ pval *streamind, *calendar;
+ int ind, ind_type;
+ pils *mcal_le_struct;
+ int myargc=ARG_COUNT(ht);
+ if (myargc <1 || myargc > 2 || getParameters(ht,myargc,&streamind,&calendar) == FAILURE) {
+ WRONG_PARAM_COUNT;
+ }
+
+ convert_to_long(streamind);
+ convert_to_string(calendar);
+ ind = streamind->value.lval;
+
+ mcal_le_struct = (pils *)php3_list_find(ind, &ind_type);
+ if (!mcal_le_struct ) {
+ php3_error(E_WARNING, "Unable to find stream pointer");
+ RETURN_FALSE;
+ }
+/*
+ if (mcal_create(mcal_le_struct->mcal_stream,calendar->value.str.val))
+ {
+ RETURN_TRUE;
+ }
+ else
+ {
+ RETURN_FALSE;
+ }
+*/
+}
+/* }}} */
+
+
+/* {{{ proto string mcal_rename(int stream_id, string src_calendar, string dest_calendar)
+ Rename a calendar*/
+void php3_mcal_rename_calendar(INTERNAL_FUNCTION_PARAMETERS)
+{
+ pval *streamind, *src_calendar,*dest_calendar;
+ int ind, ind_type;
+ pils *mcal_le_struct;
+ int myargc=ARG_COUNT(ht);
+ if (myargc <2 || myargc > 3 || getParameters(ht,myargc,&streamind,&src_calendar,&dest_calendar) == FAILURE) {
+ WRONG_PARAM_COUNT;
+ }
+
+ convert_to_long(streamind);
+ convert_to_string(src_calendar);
+ convert_to_string(dest_calendar);
+ ind = streamind->value.lval;
+
+ mcal_le_struct = (pils *)php3_list_find(ind, &ind_type);
+ if (!mcal_le_struct ) {
+ php3_error(E_WARNING, "Unable to find stream pointer");
+ RETURN_FALSE;
+ }
+/*
+ if(mcal_rename(mcal_le_struct->mcal_stream,src_calendar->value.str.val,dest_calendar->value.str.val)) {RETURN_TRUE;}
+ else {RETURN_FALSE; }
+*/
+}
+/* }}} */
+
+
+
+
+/* {{{ proto int mcal_reopen(int stream_id, array date, array time)
+ list alarms for a given time */
+void php3_mcal_list_alarms(INTERNAL_FUNCTION_PARAMETERS)
+{
+ pval *streamind, *date,*time;
+ pval **pvalue;
+ datetime_t mydate;
+ int ind, ind_type;
+ pils *mcal_le_struct;
+ int mcal_folders=0;
+ unsigned int msgno;
+ cal_list_t *my_cal_list;
+
+ int myargc=ARG_COUNT(ht);
+ if (myargc != 3 || getParameters(ht,myargc,&streamind,&date,&time) == FAILURE) {
+ WRONG_PARAM_COUNT;
+ }
+
+ convert_to_long(streamind);
+ convert_to_array(date);
+ convert_to_array(time);
+ ind = streamind->value.lval;
+
+ mcal_le_struct = (pils *)php3_list_find(ind, &ind_type);
+ if (!mcal_le_struct ) {
+ php3_error(E_WARNING, "Unable to find stream pointer");
+ RETURN_FALSE;
+ }
+
+ if (array_init(return_value) == FAILURE) {
+ RETURN_FALSE;
+ }
+ mydate.has_date=1;
+ mydate.has_time=1;
+ if(_php3_hash_find(date->value.ht,"year",sizeof("year"),(void **) &pvalue)== SUCCESS){
+ SEPARATE_ZVAL(pvalue);
+ convert_to_long(*pvalue);
+ mydate.year=(*pvalue)->value.lval;
+ }
+ if(_php3_hash_find(date->value.ht,"month",sizeof("month"),(void **) &pvalue)== SUCCESS){
+ SEPARATE_ZVAL(pvalue);
+ convert_to_long(*pvalue);
+ mydate.mon=(*pvalue)->value.lval;
+ }
+ if(_php3_hash_find(date->value.ht,"day",sizeof("day"),(void **) &pvalue)== SUCCESS){
+ SEPARATE_ZVAL(pvalue);
+ convert_to_long(*pvalue);
+ mydate.mday=(*pvalue)->value.lval;
+ }
+
+ if(_php3_hash_find(time->value.ht,"hour",sizeof("hour"),(void **) &pvalue)== SUCCESS){
+ SEPARATE_ZVAL(pvalue);
+ convert_to_long(*pvalue);
+ mydate.hour=(*pvalue)->value.lval;
+ }
+ if(_php3_hash_find(time->value.ht,"minute",sizeof("minute"),(void **) &pvalue)== SUCCESS){
+ SEPARATE_ZVAL(pvalue);
+ convert_to_long(*pvalue);
+ mydate.min=(*pvalue)->value.lval;
+ }
+ mydate.sec=0;
+ g_cal_list=NULL;
+ cal_search_alarm(mcal_le_struct->mcal_stream,&mydate);
+ my_cal_list=g_cal_list;
+ while(my_cal_list != NULL)
+ {
+ add_next_index_long(return_value,my_cal_list->uid);
+ my_cal_list=my_cal_list->next;
+ free(g_cal_list);
+ g_cal_list=my_cal_list;
+ }
+
+
+}
+/* }}} */
+
+
+/* {{{ proto string mcal_delete_calendar(int stream_id, string calendar)
+ Delete calendar*/
+void php3_mcal_delete_calendar(INTERNAL_FUNCTION_PARAMETERS)
+{
+ pval *streamind, *calendar;
+ int ind, ind_type;
+ pils *mcal_le_struct;
+ int myargc=ARG_COUNT(ht);
+ if (myargc <1 || myargc > 2 || getParameters(ht,myargc,&streamind,&calendar) == FAILURE) {
+ WRONG_PARAM_COUNT;
+ }
+
+ convert_to_long(streamind);
+ convert_to_string(calendar);
+ ind = streamind->value.lval;
+
+ mcal_le_struct = (pils *)php3_list_find(ind, &ind_type);
+ if (!mcal_le_struct ) {
+ php3_error(E_WARNING, "Unable to find stream pointer");
+ RETURN_FALSE;
+ }
+
+ if (mcal_delete_calendar(mcal_le_struct->mcal_stream,calendar->value.str.val))
+ {
+ RETURN_TRUE;
+ }
+ else
+ {
+ RETURN_FALSE;
+ }
+
+}
+/* }}} */
+
+
+/* {{{ proto string mcal_delete_event(int stream_id, int uid)
+ Delete event*/
+void php3_mcal_delete_event(INTERNAL_FUNCTION_PARAMETERS)
+{
+ pval *streamind, *uid;
+ int ind, ind_type;
+ pils *mcal_le_struct;
+ int myargc=ARG_COUNT(ht);
+ if (myargc <1 || myargc > 2 || getParameters(ht,myargc,&streamind,&uid) == FAILURE) {
+ WRONG_PARAM_COUNT;
+ }
+
+ convert_to_long(streamind);
+ convert_to_long(uid);
+ ind = streamind->value.lval;
+
+ mcal_le_struct = (pils *)php3_list_find(ind, &ind_type);
+ if (!mcal_le_struct ) {
+ php3_error(E_WARNING, "Unable to find stream pointer");
+ RETURN_FALSE;
+ }
+ if (cal_remove(mcal_le_struct->mcal_stream,uid->value.lval))
+ {
+ RETURN_TRUE;
+ }
+ else
+ {
+ RETURN_FALSE;
+ }
+}
+/* }}} */
+
+/* {{{ proto string mcal_delete_calendar(int stream_id, int uid)
+ Delete event*/
+mcal_delete_calendar(){
+ return 1;
+}
+/* }}} */
+
+void php3_mcal_popen(INTERNAL_FUNCTION_PARAMETERS){
+}
+
+
+/* {{{ proto string mcal_store_event(int stream_id, object event)
+ Store an event*/
+void php3_mcal_store_event(INTERNAL_FUNCTION_PARAMETERS)
+{
+ pval *streamind,*storeobject;
+ int ind, ind_type;
+ unsigned long i;
+ char *t;
+ int mcal_folders=0;
+ unsigned int msgno;
+ pils *mcal_le_struct;
+ pval **pvalue,**temppvalue;
+ cal_list_t *my_cal_list;
+ int myargc;
+ unsigned long uid;
+ CALEVENT *myevent;
+ myargc=ARG_COUNT(ht);
+ if (myargc !=2 || getParameters(ht,myargc,&streamind,&storeobject) == FAILURE) {
+ WRONG_PARAM_COUNT;
+ }
+
+ convert_to_long(streamind);
+ convert_to_array(storeobject);
+
+ ind = streamind->value.lval;
+
+ mcal_le_struct = (pils *)php3_list_find(ind, &ind_type);
+
+ if (!mcal_le_struct ) {
+ php3_error(E_WARNING, "Unable to find stream pointer");
+ RETURN_FALSE;
+ }
+
+ /* Initialize return array */
+ if (array_init(return_value) == FAILURE) {
+ RETURN_FALSE;
+ }
+ myevent=calevent_new();
+ if(_php3_hash_find(storeobject->value.ht,"uid",sizeof("uid"),(void **) &pvalue)== SUCCESS){
+ SEPARATE_ZVAL(pvalue);
+ convert_to_long(*pvalue);
+ myevent->id=(*pvalue)->value.lval;
+ }
+ if(_php3_hash_find(storeobject->value.ht,"public",sizeof("public"),(void **) &pvalue)== SUCCESS){
+ SEPARATE_ZVAL(pvalue);
+ convert_to_long(*pvalue);
+ myevent->public=(*pvalue)->value.lval;
+ }
+ if(_php3_hash_find(storeobject->value.ht,"category",sizeof("category"),(void **) &pvalue)== SUCCESS){
+ SEPARATE_ZVAL(pvalue);
+ convert_to_string(*pvalue);
+ myevent->category=strdup((*pvalue)->value.str.val);
+ }
+ if(_php3_hash_find(storeobject->value.ht,"title",sizeof("title"),(void **) &pvalue)== SUCCESS){
+ SEPARATE_ZVAL(pvalue);
+ convert_to_string(*pvalue);
+ myevent->title=strdup((*pvalue)->value.str.val);
+ }
+ if(_php3_hash_find(storeobject->value.ht,"description",sizeof("description"),(void **) &pvalue)== SUCCESS){
+ SEPARATE_ZVAL(pvalue);
+ convert_to_string(*pvalue);
+ myevent->description=strdup((*pvalue)->value.str.val);
+ }
+
+ if(_php3_hash_find(storeobject->value.ht,"alarm",sizeof("alarm"),(void **) &pvalue)== SUCCESS){
+ SEPARATE_ZVAL(pvalue);
+ convert_to_long(*pvalue);
+ myevent->alarm=(*pvalue)->value.lval;
+ }
+
+
+ if(_php3_hash_find(storeobject->value.ht,"start",sizeof("start"),(void **) &temppvalue)== SUCCESS){
+ SEPARATE_ZVAL(temppvalue);
+ convert_to_array(*temppvalue);
+
+ if(_php3_hash_find((*temppvalue)->value.ht,"year",sizeof("year"),(void **) &pvalue)== SUCCESS){
+ SEPARATE_ZVAL(pvalue);
+ convert_to_long(*pvalue);
+ myevent->start.year=(*pvalue)->value.lval;
+ }
+ if(_php3_hash_find((*temppvalue)->value.ht,"month",sizeof("month"),(void **) &pvalue)== SUCCESS){
+ SEPARATE_ZVAL(pvalue);
+ convert_to_long(*pvalue);
+ myevent->start.mon=(*pvalue)->value.lval;
+ }
+ if(_php3_hash_find((*temppvalue)->value.ht,"mday",sizeof("mday"),(void **) &pvalue)== SUCCESS){
+ SEPARATE_ZVAL(pvalue);
+ convert_to_long(*pvalue);
+ myevent->start.mday=(*pvalue)->value.lval;
+ }
+ if(_php3_hash_find((*temppvalue)->value.ht,"hour",sizeof("hour"),(void **) &pvalue)== SUCCESS){
+ SEPARATE_ZVAL(pvalue);
+ convert_to_long(*pvalue);
+ myevent->start.hour=(*pvalue)->value.lval;
+ }
+ if(_php3_hash_find((*temppvalue)->value.ht,"min",sizeof("min"),(void **) &pvalue)== SUCCESS){
+ SEPARATE_ZVAL(pvalue);
+ convert_to_long(*pvalue);
+ myevent->start.min=(*pvalue)->value.lval;
+ }
+ if(_php3_hash_find((*temppvalue)->value.ht,"sec",sizeof("sec"),(void **) &pvalue)== SUCCESS){
+ SEPARATE_ZVAL(pvalue);
+ convert_to_long(*pvalue);
+ myevent->start.sec=(*pvalue)->value.lval;
+ }
+ myevent->start.has_date=true;
+ }
+
+ if(_php3_hash_find(storeobject->value.ht,"end",sizeof("end"),(void **) &temppvalue)== SUCCESS){
+ SEPARATE_ZVAL(temppvalue);
+ convert_to_array(*temppvalue);
+
+ if(_php3_hash_find((*temppvalue)->value.ht,"year",sizeof("year"),(void **) &pvalue)== SUCCESS){
+ SEPARATE_ZVAL(pvalue);
+ convert_to_long(*pvalue);
+ myevent->end.year=(*pvalue)->value.lval;
+ }
+ if(_php3_hash_find((*temppvalue)->value.ht,"month",sizeof("month"),(void **) &pvalue)== SUCCESS){
+ SEPARATE_ZVAL(pvalue);
+ convert_to_long(*pvalue);
+ myevent->end.mon=(*pvalue)->value.lval;
+ }
+ if(_php3_hash_find((*temppvalue)->value.ht,"mday",sizeof("mday"),(void **) &pvalue)== SUCCESS){
+ SEPARATE_ZVAL(pvalue);
+ convert_to_long(*pvalue);
+ myevent->end.mday=(*pvalue)->value.lval;
+ }
+ if(_php3_hash_find((*temppvalue)->value.ht,"hour",sizeof("hour"),(void **) &pvalue)== SUCCESS){
+ SEPARATE_ZVAL(pvalue);
+ convert_to_long(*pvalue);
+ myevent->end.hour=(*pvalue)->value.lval;
+ }
+ if(_php3_hash_find((*temppvalue)->value.ht,"min",sizeof("min"),(void **) &pvalue)== SUCCESS){
+ SEPARATE_ZVAL(pvalue);
+ convert_to_long(*pvalue);
+ myevent->end.min=(*pvalue)->value.lval;
+ }
+ if(_php3_hash_find((*temppvalue)->value.ht,"sec",sizeof("sec"),(void **) &pvalue)== SUCCESS){
+ SEPARATE_ZVAL(pvalue);
+ convert_to_long(*pvalue);
+ myevent->end.sec=(*pvalue)->value.lval;
+ }
+ myevent->end.has_date=true;
+ }
+
+ cal_append(mcal_le_struct->mcal_stream,"INBOX",&uid,myevent);
+ calevent_free(myevent);
+ RETURN_LONG(uid);
+}
+/* }}} */
+
+
+/* {{{ proto string mcal_snooze(int stream_id, int uid)
+ Snooze an alarm*/
+void php3_mcal_snooze(INTERNAL_FUNCTION_PARAMETERS)
+{
+ pval *streamind,*uid;
+ int ind, ind_type;
+ pils *mcal_le_struct;
+ pval **pvalue;
+ int myargc;
+ myargc=ARG_COUNT(ht);
+ if (myargc !=2 || getParameters(ht,myargc,&streamind,&uid) == FAILURE) {
+ WRONG_PARAM_COUNT;
+ }
+
+ convert_to_long(streamind);
+ convert_to_long(uid);
+
+ ind = streamind->value.lval;
+
+ mcal_le_struct = (pils *)php3_list_find(ind, &ind_type);
+
+ if (!mcal_le_struct ) {
+ php3_error(E_WARNING, "Unable to find stream pointer");
+ RETURN_FALSE;
+ }
+
+ if(cal_snooze(mcal_le_struct->mcal_stream,uid->value.lval))
+ {
+ RETURN_TRUE;
+ }
+ else
+ {
+ RETURN_FALSE;
+ }
+
+
+}
+/* }}} */
+
+
+/* Interfaces to callbacks */
+
+
+void cc_searched (unsigned long cal_uid)
+{
+
+ if(g_cal_list==NULL)
+ {
+ g_cal_list=malloc(sizeof(struct cal_list));
+ g_cal_list->uid=cal_uid;
+ g_cal_list->next=NULL;
+ g_cal_list_end=g_cal_list;
+ }
+ else
+ {
+ g_cal_list_end->next=malloc(sizeof(struct cal_list));
+ g_cal_list_end=g_cal_list_end->next;
+ g_cal_list_end->uid=cal_uid;
+ g_cal_list_end->next=NULL;
+ }
+}
+
+
+
+
+
+
+void cc_appended(u_int32_t uid)
+{
+
+}
+
+
+void cc_fetched(const CALEVENT *event)
+{
+
+}
+
+
+void cc_login(const char **user, const char **pwd)
+{
+
+*user=mcal_user;
+*pwd=mcal_password;
+}
+
+
+void cc_vlog(const char *fmt,va_list ap)
+{
+}
+void cc_vdlog(const char *fmt,va_list ap)
+{
+}
+
+#endif
+
+
+/*
+ * Local_ variables:
+ * tab-width: 4
+ * c-basic-offset: 4
+ * End:
+ */
+
+
diff --git a/ext/mcal/php3_mcal.h b/ext/mcal/php3_mcal.h
new file mode 100644
index 0000000000..2a4a72eb8e
--- /dev/null
+++ b/ext/mcal/php3_mcal.h
@@ -0,0 +1,57 @@
+/* $Id$ */
+
+#ifndef _INCLUDED_MCAL_H
+#define _INCLUDED_MCAL_H
+
+#if COMPILE_DL
+#undef HAVE_MCAL
+#define HAVE_MCAL 1
+#endif
+
+#if HAVE_MCAL
+
+#ifdef THREAD_SAFE
+#include "tls.h"
+#endif
+#ifndef MSVC5
+#include "build-defs.h"
+#endif
+
+extern PHP_MINIT_FUNCTION(mcal);
+PHP_MINFO_FUNCTION(mcal);
+
+/* Functions accessable to PHP */
+extern php3_module_entry php3_mcal_module_entry;
+#define php3_mcal_module_ptr &php3_mcal_module_entry
+#define phpext_mcal_ptr php3_mcal_module_ptr
+
+extern int mcal_init_request(INIT_FUNC_ARGS);
+extern int mcal_end_request(void);
+void php3_mcal_open(INTERNAL_FUNCTION_PARAMETERS);
+void php3_mcal_popen(INTERNAL_FUNCTION_PARAMETERS);
+void php3_mcal_reopen(INTERNAL_FUNCTION_PARAMETERS);
+void php3_mcal_close(INTERNAL_FUNCTION_PARAMETERS);
+void php3_mcal_fetch_event(INTERNAL_FUNCTION_PARAMETERS);
+void php3_mcal_list_events(INTERNAL_FUNCTION_PARAMETERS);
+void php3_mcal_create_calendar(INTERNAL_FUNCTION_PARAMETERS);
+void php3_mcal_rename_calendar(INTERNAL_FUNCTION_PARAMETERS);
+void php3_mcal_delete_calendar(INTERNAL_FUNCTION_PARAMETERS);
+void php3_mcal_store_event(INTERNAL_FUNCTION_PARAMETERS);
+void php3_mcal_delete_event(INTERNAL_FUNCTION_PARAMETERS);
+void php3_mcal_snooze(INTERNAL_FUNCTION_PARAMETERS);
+void php3_mcal_list_alarms(INTERNAL_FUNCTION_PARAMETERS);
+
+
+
+
+
+#else
+#define php3_mcal_module_ptr NULL
+#endif /* HAVE_MCAL */
+
+
+#endif
+
+
+
+