steffen: server/kolab-resource-handlers/kolab-resource-handlers/freebusy freebusy.class.php, 1.8, 1.9 freebusyldap.class.php, 1.3, 1.4 pfb.php, 1.5, 1.6
cvs at intevation.de
cvs at intevation.de
Thu Oct 21 12:12:51 CEST 2004
Author: steffen
Update of /kolabrepository/server/kolab-resource-handlers/kolab-resource-handlers/freebusy
In directory doto:/tmp/cvs-serv8746/kolab-resource-handlers/freebusy
Modified Files:
freebusy.class.php freebusyldap.class.php pfb.php
Log Message:
read fb time span from ldap
Index: freebusy.class.php
===================================================================
RCS file: /kolabrepository/server/kolab-resource-handlers/kolab-resource-handlers/freebusy/freebusy.class.php,v
retrieving revision 1.8
retrieving revision 1.9
diff -u -d -r1.8 -r1.9
--- freebusy.class.php 20 Oct 2004 12:31:33 -0000 1.8
+++ freebusy.class.php 21 Oct 2004 10:12:49 -0000 1.9
@@ -3,10 +3,14 @@
class FreeBusy {
function FreeBusy( $username,
$password,
- $imaphost ) {
+ $imaphost,
+ $fbfuture=60,
+ $fbpast=0 ) {
$this->username = $username;
$this->password = $password;
$this->imaphost = $imaphost;
+ $this->fbfuture = $fbfuture;
+ $this->fbpast = $fbpast;
}
function imapConnect() {
@@ -50,16 +54,12 @@
$year = date('Y');
$day = date('j');
- $startstamp = mktime(0, 0, 0, $month, $day, $year);
+ $startstamp = strtotime( '-'.$this->fbpast.' days', mktime(0, 0, 0, $month, $day, $year) );
}
// Default the end date to the start date + freebusy_days.
if (is_null($endstamp) || $endstamp < $startstamp) {
- $month = date('n', $startstamp);
- $year = date('Y', $startstamp);
- $day = date('j', $startstamp);
-
- $endstamp = mktime(0, 0, 0, $month, $day + $this->freebusy_days, $year);
+ $endstamp = strtotime( '+'.$this->fbfuture.' days', $startstamp );
}
myLog("Creating pfb from $startstamp to $endstamp", RM_LOG_DEBUG);
@@ -361,7 +361,8 @@
var $foldername;
// Settings
- var $freebusy_days = 60;
+ var $fbfuture;
+ var $fbpast;
var $default_domain = 'foo';
var $week_starts_on_sunday = false;
Index: freebusyldap.class.php
===================================================================
RCS file: /kolabrepository/server/kolab-resource-handlers/kolab-resource-handlers/freebusy/freebusyldap.class.php,v
retrieving revision 1.3
retrieving revision 1.4
diff -u -d -r1.3 -r1.4
--- freebusyldap.class.php 5 Oct 2004 09:13:41 -0000 1.3
+++ freebusyldap.class.php 21 Oct 2004 10:12:49 -0000 1.4
@@ -23,6 +23,43 @@
else return $this->is_bound = ldap_bind( $this->connection);
}
+ function freeBusyPast() {
+ $result = ldap_read( $this->connection, $this->base,
+ '(&(objectClass=kolab)(k=kolab))',
+ array( 'kolabFreeBusyPast' ) );
+ if( $result ) {
+ $entries = ldap_get_entries( $this->connection, $result );
+ if( $entries['count'] > 0 && !empty($entries[0]['kolabfreebusypast'][0]) ) {
+ ldap_free_result($result);
+ return $entries[0]['kolabfreebusypast'][0];
+ }
+ }
+ return 0; // Default
+ }
+
+ // Return a hash of info about a user
+ function userInfo( $uid ) {
+ $result = ldap_search( $this->connection, $this->base,
+ '(&(objectClass=kolabInetOrgPerson)(|(uid='.
+ $this->escape($uid).')(mail='.$this->escape($uid).')))',
+ array( 'dn','mail','uid','kolabHomeServer', 'kolabFreeBusyFuture' ) );
+ if( $result ) {
+ $entries = ldap_get_entries( $this->connection, $result );
+ if( $entries['count'] > 0 && !empty($entries[0]['mail'][0]) ) {
+ $hash = array();
+ $hash['DN'] = $this->readLdapAttr( $entries[0], 'dn' );
+ $hash['UID'] = $this->readLdapAttr( $entries[0], 'uid' );
+ $hash['MAIL'] = $this->readLdapAttr( $entries[0], 'mail', $uid );
+ $hash['HOMESERVER'] = $this->readLdapAttr( $entries[0], 'kolabhomeserver' );
+ $hash['FBFUTURE'] = (int)($this->readLdapAttr( $entries[0], 'kolabfreebusyfuture', 60 ));
+ ldap_free_result( $result );
+ return $hash;
+ }
+ ldap_free_result( $result );
+ }
+ return false;
+ }
+
function mailForUid( $uid ) {
$result = ldap_search( $this->connection, $this->base, '(&(objectClass=kolabInetOrgPerson)(uid='.$uid.'))',
array( 'mail' ) );
@@ -101,6 +138,18 @@
$str = str_replace( ')', '\\29', $str );
$str = str_replace( '\0', '\\00', $str );
return $str;
+ }
+
+ function readLdapAttr( $entry, $attrname, $default = false ) {
+ $val = $default;
+ if( !array_key_exists( $attrname, $entry ) ) return $default;
+ else if( is_array( $entry[$attrname] ) ) {
+ $val = $entry[$attrname][0];
+ } else {
+ $val = $entry[$attrname];
+ }
+ if( $val == '' ) $val = $default;
+ return $val;
}
var $connection;
Index: pfb.php
===================================================================
RCS file: /kolabrepository/server/kolab-resource-handlers/kolab-resource-handlers/freebusy/pfb.php,v
retrieving revision 1.5
retrieving revision 1.6
diff -u -d -r1.5 -r1.6
--- pfb.php 14 Oct 2004 02:28:29 -0000 1.5
+++ pfb.php 21 Oct 2004 10:12:49 -0000 1.6
@@ -21,8 +21,11 @@
exit;
}
-$imapuser = $ldap->mailForUid( $imapuser );
-$homeserver = $ldap->homeServer( $imapuser );
+$userinfo = $ldap->userInfo( $imapuser );
+if( $userinfo ) {
+ $imapuser = $userinfo['MAIL'];
+ $homeserver = $userinfo['HOMESERVER'];
+}
if( $homeserver != $params['server'] ) {
$redirect = 'https://'.$homeserver . $_SERVER['REQUEST_URI'];
@@ -55,7 +58,7 @@
}
if( $acl && $req_extended ) {
// Check access
- $distlists = $ldap->distlists( $ldap->dn($imapuser));
+ $distlists = $ldap->distlists( $userinfo['DN'] );
if( $distlists === false ) unauthorized( $req_folder.($req_extended?'.xpfb':'.pfb' ) );
for( $i = 0; $i < count($distlists); $i++ ) {
$distlists[$i] = $distlists[$i].'@'.$params['email_domain'];
@@ -80,7 +83,8 @@
$owner = $folder[0];
unset($folder[0]);
$folder = join('/', $folder);
- $fb =& new FreeBusy( $imapuser, $imappw, 'localhost' );
+ $fbpast = $ldap->freeBusyPast();
+ $fb =& new FreeBusy( $imapuser, $imappw, 'localhost', $userinfo['FBFUTURE'], $fbpast );
$fb->freebusy_days = $params['freebusy_days'];
$fb->default_domain = $params['email_domain'];
$rc = $fb->imapConnect();
More information about the commits
mailing list