steffen: server/kolab-resource-handlers/kolab-resource-handlers/freebusy freebusy.php, 1.4, 1.5
cvs at intevation.de
cvs at intevation.de
Sun Jul 11 18:04:13 CEST 2004
Author: steffen
Update of /kolabrepository/server/kolab-resource-handlers/kolab-resource-handlers/freebusy
In directory doto:/tmp/cvs-serv21716/kolab-resource-handlers/freebusy
Modified Files:
freebusy.php
Log Message:
HTTP PUT support for fb upload
Index: freebusy.php
===================================================================
RCS file: /kolabrepository/server/kolab-resource-handlers/kolab-resource-handlers/freebusy/freebusy.php,v
retrieving revision 1.4
retrieving revision 1.5
diff -u -d -r1.4 -r1.5
--- freebusy.php 9 Jul 2004 12:24:26 -0000 1.4
+++ freebusy.php 11 Jul 2004 16:04:11 -0000 1.5
@@ -213,6 +213,18 @@
return $vCal->exportvCalendar();
}
+function store_freebusy( $fbdirname, $fbfilename ,$fbdata )
+{
+ $tmpn = tempnam( $fbdirname,'fb' );
+ $tmpf = fopen( $tmpn, 'w' );
+ fwrite( $tmpf, $fbdata );
+ if( !is_dir( $fbdirname ) ) {
+ mkdir( $fbdirname );
+ }
+ rename( $tmpn, $fbfilename );
+ fclose( $tmpf );
+}
+
// ========================================================================== //
// What is the name of our script
@@ -230,7 +242,7 @@
notFound('No user specified');
}
-$fbdir = $params['kolab_prefix'].'/var/kolab/www/freebusy/'.$user.'/';
+$fbdir = $params['kolab_prefix'].'/var/kolab/www/freebusy/data/';
$fbfilename = $fbdir.$user.($extended?'.xfb':'.ifb');
// Handle the case of 'user' instead of 'user at domain'
@@ -307,10 +319,25 @@
$imapuser = $_SERVER['PHP_AUTH_USER'];
$imappw = $_SERVER['PHP_AUTH_PW'];
+if( $_SERVER['REQUEST_METHOD'] == 'PUT' ) {
+ // We have a file upload, slurp up the data
+ $vfbupload = file_get_contents( 'php://input' );
+
+ trigger_error( "user=$user, $imapuser=$imapuser, method=PUT", E_USER_NOTICE );
+
+ if( $imapuser == $user ) {
+ // Username OK, Apache should have taken care of authentication
+ store_freebusy( $fbdir, $fbfilename, $vfbupload );
+ exit;
+ } else {
+ unauthorized( "You're not allowed to store a freebusy file with that name");
+ }
+}
+
trigger_error( "user=$imapuser, mailbox=$fullmbox, fbfilename=$fbfilename", E_USER_NOTICE );
$vfb = false;
-if( $imapuser || $extended ) {
+if( $_SERVER['REQUEST_METHOD'] != 'PUT' && ($imapuser || $extended) ) {
// Open an IMAP connection to the requested users' calendar
$imap = @imap_open($fullmbox, $imapuser, $imappw);
if ( !$imap ) {
@@ -329,14 +356,7 @@
if( $extended ) {
// Don't cache
} else {
- $tmpn = tempnam( $fbdir,'fb' );
- $tmpf = fopen( $tmpn, 'w' );
- fwrite( $tmpf, $vfb );
- if( !is_dir( $fbdir ) ) {
- mkdir( $fbdir );
- }
- rename( $tmpn, $fbfilename );
- fclose( $tmpf );
+ store_freebusy( $fbdir, $fbfilename, $vfb );
}
}
}
More information about the commits
mailing list