diff --git a/addressbook/inc/class.contacts_ldap.inc.php b/addressbook/inc/class.contacts_ldap.inc.php
index 674546a193..6e930f6259 100644
--- a/addressbook/inc/class.contacts_ldap.inc.php
+++ b/addressbook/inc/class.contacts_ldap.inc.php
@@ -65,26 +65,26 @@
'fn' => 'cn', // 'prefix given middle family suffix'
'n_given' => 'givenname', // firstname
'n_family' => 'sn', // lastname
- 'n_middle' => 'middlename',
- 'n_prefix' => 'prefix',
- 'n_suffix' => 'suffix',
- 'sound' => 'audio',
- 'bday' => 'birthday',
+ 'n_middle' => 'phpgwmiddlename',
+ 'n_prefix' => 'phpgwprefix',
+ 'n_suffix' => 'phpgwsuffix',
+ 'sound' => 'phpgwaudio',
+ 'bday' => 'phpgwbirthday',
'note' => 'description',
- 'tz' => 'tz',
- 'geo' => 'geo',
- 'url' => 'url',
- 'pubkey' => 'publickey',
+ 'tz' => 'phpgwtz',
+ 'geo' => 'phpgwgeo',
+ 'url' => 'phpgwurl',
+ 'pubkey' => 'phpgwpublickey',
'org_name' => 'o', // company
'org_unit' => 'ou', // division
'title' => 'title',
- 'adr_one_street' => 'streetaddress',
- 'adr_one_locality' => 'locality',
+ 'adr_one_street' => 'street',
+ 'adr_one_locality' => 'l',
'adr_one_region' => 'st',
'adr_one_postalcode' => 'postalcode',
- 'adr_one_countryname' => 'countryname',
+ 'adr_one_countryname' => 'co',
'adr_one_type' => 'phpgwadronetype', // address is domestic/intl/postal/parcel/work/home
'label' => 'phpgwaddresslabel', // address label
@@ -97,30 +97,30 @@
'tel_work' => 'telephonenumber',
'tel_home' => 'homephone',
- 'tel_voice' => 'voicetelephonenumber',
+ 'tel_voice' => 'phpgwvoicetelephonenumber',
'tel_fax' => 'facsimiletelephonenumber',
- 'tel_msg' => 'msgtelephonenumber',
- 'tel_cell' => 'cellphone',
- 'tel_pager' => 'pagertelephonenumber',
- 'tel_bbs' => 'bbstelephonenumber',
- 'tel_modem' => 'modemtelephonenumber',
- 'tel_car' => 'mobiletelephonenumber',
- 'tel_isdn' => 'isdnphonenumber',
- 'tel_video' => 'videophonenumber',
- 'tel_prefer' => 'preferphone', // home, work, voice, etc
+ 'tel_msg' => 'phpgwmsgtelephonenumber',
+ 'tel_cell' => 'phpgwcelltelephonenumber',
+ 'tel_pager' => 'phpgwpagertelephonenumber',
+ 'tel_bbs' => 'phpgwbbstelephonenumber',
+ 'tel_modem' => 'phpgwmodemtelephonenumber',
+ 'tel_car' => 'phpgwmobiletelephonenumber',
+ 'tel_isdn' => 'phpgwisdnphonenumber',
+ 'tel_video' => 'phpgwvideophonenumber',
+ 'tel_prefer' => 'phpgwpreferphone', // home, work, voice, etc
'email' => 'mail',
- 'email_type' => 'mailtype', //'INTERNET','CompuServe',etc...
- 'email_home' => 'mailhome',
- 'email_home_type' => 'mailhometype' //'INTERNET','CompuServe',etc...
+ 'email_type' => 'phpgwmailtype', //'INTERNET','CompuServe',etc...
+ 'email_home' => 'phpgwmailhome',
+ 'email_home_type' => 'phpgwmailhometype' //'INTERNET','CompuServe',etc...
);
$this->non_contact_fields = array(
'id' => 'uidnumber',
'lid' => 'uid',
- 'tid' => 'phpgwtypeid',
- 'cat_id' => 'phpgwcatid',
- 'access' => 'phpgwaccess',
- 'owner' => 'phpgwowner'
+ 'tid' => 'phpgwcontacttypeid',
+ 'cat_id' => 'phpgwcontactcatid',
+ 'access' => 'phpgwcontactaccess',
+ 'owner' => 'phpgwcontactowner'
);
/* Used to flag an address as being:
@@ -192,11 +192,10 @@
$return_fields[0]['id'] = $ldap_fields[0]['uidnumber'][0];
$return_fields[0]['lid'] = $ldap_fields[0]['uid'][0];
- $return_fields[0]['tid'] = $ldap_fields[0]['phpgwtypeid'][0];
- $return_fields[0]['owner'] = $ldap_fields[0]['phpgwowner'][0];
- $return_fields[0]['access'] = $ldap_fields[0]['phpgwaccess'][0];
- $return_fields[0]['cat_id'] = $ldap_fields[0]['phpgwcatid'][0];
-
+ $return_fields[0]['tid'] = $ldap_fields[0]['phpgwcontacttypeid'][0];
+ $return_fields[0]['owner'] = $ldap_fields[0]['phpgwcontactowner'][0];
+ $return_fields[0]['access'] = $ldap_fields[0]['phpgwcontactaccess'][0];
+ $return_fields[0]['cat_id'] = $ldap_fields[0]['phpgwcontactcatid'][0];
if (gettype($stock_fieldnames) == 'array')
{
while(list($name,$value)=each($stock_fieldnames))
@@ -263,10 +262,10 @@
$return_fields[0]['id'] = $ldap_fields[0]['uidnumber'][0];
$return_fields[0]['lid'] = $ldap_fields[0]['uid'][0];
- $return_fields[0]['tid'] = $ldap_fields[0]['phpgwtypeid'][0];
- $return_fields[0]['owner'] = $ldap_fields[0]['phpgwowner'][0];
- $return_fields[0]['access'] = $ldap_fields[0]['phpgwaccess'][0];
- $return_fields[0]['cat_id'] = $ldap_fields[0]['phpgwcatid'][0];
+ $return_fields[0]['tid'] = $ldap_fields[0]['phpgwcontacttypeid'][0];
+ $return_fields[0]['owner'] = $ldap_fields[0]['phpgwcontactowner'][0];
+ $return_fields[0]['access'] = $ldap_fields[0]['phpgwcontactaccess'][0];
+ $return_fields[0]['cat_id'] = $ldap_fields[0]['phpgwcontactcatid'][0];
if (gettype($stock_fieldnames) == 'array')
{
@@ -351,18 +350,18 @@
}
else
{
- $filterfields += array('phpgwtypeid' => 'n');
+ $filterfields += array('phpgwcontacttypeid' => 'n');
if ($DEBUG) { echo "
DEBUG - Filter strings: #phpgwtypeid=n#"; }
}
if (is_array($this->grants))
{
- $filterfields += array('phpgwaccess' => 'public');
+ $filterfields += array('phpgwcontactaccess' => 'public');
$grants = $this->grants;
while (list($user) = each($grants))
{
if ($DEBUG) { echo "
DEBUG - Grant from owner: ".$user; }
- $filterfields += array('phpgwowner' => $user);
+ $filterfields += array('phpgwcontactowner' => $user);
}
}
//if ($DEBUG) {
@@ -441,7 +440,7 @@
}
else
{
- $sri = ldap_search($this->ldap, $phpgw_info['server']['ldap_contact_context'], 'phpgwowner=*');
+ $sri = ldap_search($this->ldap, $phpgw_info['server']['ldap_contact_context'], 'phpgwcontactowner=*');
$ldap_fields = ldap_get_entries($this->ldap, $sri);
$this->total_records = ldap_count_entries($this->ldap, $sri);
@@ -483,15 +482,21 @@
if ($i<$this->total_records && $ldap_fields[$i]['uid'][0])
{
//echo '
j:'.$j;
+ //echo '
i:'.$i;
// unique id, lid for group/account records,
// type id (g/u) for groups/accounts, and
// id of owner/parent for the record
$return_fields[$j]['id'] = $ldap_fields[$i]['uidnumber'][0];
$return_fields[$j]['lid'] = $ldap_fields[$i]['uid'][0];
- $return_fields[$j]['tid'] = $ldap_fields[$i]['phpgwtypeid'][0];
- $return_fields[$j]['owner'] = $ldap_fields[$i]['phpgwowner'][0];
- $return_fields[$j]['access'] = $ldap_fields[$i]['phpgwaccess'][0];
- $return_fields[$j]['cat_id'] = $ldap_fields[$i]['phpgwcatid'][0];
+ $return_fields[$j]['tid'] = $ldap_fields[$i]['phpgwcontacttypeid'][0];
+ $return_fields[$j]['owner'] = $ldap_fields[$i]['phpgwcontactowner'][0];
+ $return_fields[$j]['access'] = $ldap_fields[$i]['phpgwcontactaccess'][0];
+ $return_fields[$j]['cat_id'] = $ldap_fields[$i]['phpgwcontactcatId'][0];
+ //echo '
uidnumber: "'.$ldap_fields[$i]['uidnumber'][0].'"';
+ //echo '
tid: "'.$ldap_fields[$i]['phpgwcontacttypeid'][0].'"';
+ //echo '
owner: "'.$ldap_fields[$i]['phpgwcontactowner'][0].'"';
+ //echo '
access: "'.$ldap_fields[$i]['phpgwcontactaccess'][0].'"';
+ //echo '
catid: "'.$ldap_fields[$i]['phpgwcontactcatid'][0].'"';
if (gettype($stock_fieldnames) == 'array')
{
@@ -553,30 +558,36 @@
{
while(list($name,$value)=each($stock_fieldnames))
{
- $ldap_fields[$value] = $stock_fields[$name];
+ if ($stock_fields[$name] != '')
+ {
+ $ldap_fields[$value] = $stock_fields[$name];
+ }
}
}
$time = gettimeofday();
$ldap_fields['uid'] = time().$time['usec'].':'.$ldap_fields['givenname'];
-
- $dn = 'uid=' . $ldap_fields['uid'].',' . $phpgw_info['server']['ldap_contact_context'];
- $ldap_fields['phpgwtypeid'] = $tid;
- $ldap_fields['phpgwowner'] = $owner;
- $ldap_fields['phpgwaccess'] = $access;
- $ldap_fields['phpgwcatid'] = $cat_id;
- $ldap_fields['uidnumber'] = $this->nextid;
- $ldap_fields['objectclass'][0] = 'person';
- $ldap_fields['objectclass'][1] = 'organizationalPerson';
- $ldap_fields['objectclass'][2] = 'inetOrgPerson';
- $ldap_fields['objectclass'][3] = 'phpgwContact';
- /*
+ $dn = 'uid=' . $ldap_fields['uid'].',' . $phpgw_info['server']['ldap_contact_context'];
+ $ldap_fields['phpgwcontacttypeid'] = $tid;
+ $ldap_fields['phpgwcontactowner'] = $owner;
+ $ldap_fields['phpgwcontactaccess'] = $access;
+ $ldap_fields['phpgwcontactcatid'] = $cat_id;
+ $ldap_fields['uidnumber'] = $this->nextid;
+ //$ldap_fields['objectclass'][0] = 'person';
+ $ldap_fields['objectclass'][0] = 'organizationalPerson';
+ $ldap_fields['objectclass'][1] = 'inetOrgPerson';
+ $ldap_fields['objectclass'][2] = 'phpgwContact';
+/*
+ @reset($ldap_fields);
while (list($name,$value) = each($ldap_fields) ) {
- echo '
fieldname ="'.$name.'", value ="'.$value.'"';
+ if ($value)
+ {
+ echo '
fieldname ="'.$name.'", value ="'.$value.'"';
+ }
}
exit;
- */
+*/
$err = ldap_add($this->ldap, $dn, $ldap_fields);
//$this->db->unlock();
@@ -659,79 +670,90 @@
// Verify objectclasses are there
if (empty($ldap_fields[0]['objectclass']))
{
- $stock_fields['objectclass'][0] = 'person';
- $stock_fields['objectclass'][1] = 'organizationalPerson';
- $stock_fields['objectclass'][2] = 'inetOrgPerson';
- $stock_fields['objectclass'][3] = 'phpgwContact';
+ //$stock_fields['objectclass'][0] = 'person';
+ $stock_fields['objectclass'][0] = 'organizationalPerson';
+ $stock_fields['objectclass'][1] = 'inetOrgPerson';
+ $stock_fields['objectclass'][2] = 'phpgwContact';
$err = ldap_modify($this->ldap,$dn,array('objectclass' => $stock_fields['objectclass']));
}
elseif (!$ldap_fields[0]['objectclass'])
{
- $stock_fields['objectclass'][0] = 'person';
- $stock_fields['objectclass'][1] = 'organizationalPerson';
- $stock_fields['objectclass'][2] = 'inetOrgPerson';
- $stock_fields['objectclass'][3] = 'phpgwContact';
+ //$stock_fields['objectclass'][0] = 'person';
+ $stock_fields['objectclass'][0] = 'organizationalPerson';
+ $stock_fields['objectclass'][1] = 'inetOrgPerson';
+ $stock_fields['objectclass'][2] = 'phpgwContact';
$err = ldap_mod_add($this->ldap,$dn,array('objectclass' => $stock_fields['objectclass']));
}
// Verify owner
$stock_fields['owner'] = $owner;
- if (empty($ldap_fields[0]['phpgwowner']))
+ if (empty($ldap_fields[0]['phpgwcontactowner']))
{
- $err = ldap_modify($this->ldap,$dn,array('phpgwowner' => $stock_fields['owner']));
+ $err = ldap_modify($this->ldap,$dn,array('phpgwcontactowner' => $stock_fields['owner']));
}
- elseif (!$ldap_fields[0]['phpgwowner'])
+ elseif (!$ldap_fields[0]['phpgwcontactowner'])
{
- $err = ldap_mod_add($this->ldap,$dn,array('phpgwowner' => $stock_fields['owner']));
+ $err = ldap_mod_add($this->ldap,$dn,array('phpgwcontactowner' => $stock_fields['owner']));
}
// Verify access
$stock_fields['access'] = $access;
- if (empty($ldap_fields[0]['phpgwaccess']))
+ if (empty($ldap_fields[0]['phpgwcontactaccess']))
{
- $err = ldap_modify($this->ldap,$dn,array('phpgwaccess' => $stock_fields['access']));
+ $err = ldap_modify($this->ldap,$dn,array('phpgwcontactaccess' => $stock_fields['access']));
}
- elseif (!$ldap_fields[0]['phpgwaccess'])
+ elseif (!$ldap_fields[0]['phpgwcontactaccess'])
{
- $err = ldap_mod_add($this->ldap,$dn,array('phpgwaccess' => $stock_fields['access']));
+ $err = ldap_mod_add($this->ldap,$dn,array('phpgwcontactaccess' => $stock_fields['access']));
}
// Verify cat_id
$stock_fields['cat_id'] = $cat_id;
- if (empty($ldap_fields[0]['phpgwcatid']))
+ if (empty($ldap_fields[0]['phpgwcontactcatid']))
{
- $err = ldap_modify($this->ldap,$dn,array('phpgwcatid' => $stock_fields['cat_id']));
+ $err = ldap_modify($this->ldap,$dn,array('phpgwcontactcatid' => $stock_fields['cat_id']));
}
- elseif (!$ldap_fields[0]['phpgwcatid'])
+ elseif (!$ldap_fields[0]['phpgwcontactcatid'])
{
- $err = ldap_mod_add($this->ldap,$dn,array('phpgwcatid' => $stock_fields['cat_id']));
+ $err = ldap_mod_add($this->ldap,$dn,array('phpgwcontactcatid' => $stock_fields['cat_id']));
}
// Verify tid
$stock_fields['tid'] = $tid;
- if (empty($ldap_fields[0]['phpgwtypeid']))
+ if (empty($ldap_fields[0]['phpgwcontacttypeid']))
{
- $err = ldap_modify($this->ldap,$dn,array('phpgwtypeid' => $stock_fields['tid']));
+ $err = ldap_modify($this->ldap,$dn,array('phpgwcontacttypeid' => $stock_fields['tid']));
}
- elseif (!$ldap_fields[0]['phpgwtypeid'])
+ elseif (!$ldap_fields[0]['phpgwcontacttypeid'])
{
- $err = ldap_mod_add($this->ldap,$dn,array('phpgwtypeid' => $stock_fields['tid']));
+ $err = ldap_mod_add($this->ldap,$dn,array('phpgwcontacttypeid' => $stock_fields['tid']));
}
// OK, just mod the data already
$allfields = $stock_fieldnames + $nonfields;
while ( list($fname,$fvalue) = each($allfields) )
{
- if ($ldap_fields[0][$fvalue])
+ //if ($ldap_fields[0][$fvalue])
+ if ($ldap_fields[0][$fvalue] && $stock_fields[$fname] && $ldap_fields[0][$fvalue][0] != $stock_fields[$fname] )
{
//echo "
".$fname." => ".$fvalue." was there";
$err = ldap_modify($this->ldap,$dn,array($fvalue => $stock_fields[$fname]));
}
- elseif (!$ldap_fields[0][$fvalue])
+ //elseif (!$ldap_fields[0][$fvalue])
+ elseif (!$ldap_fields[0][$fvalue] && $stock_fields[$fname])
{
- //echo "
".$fname." not there";
+ //echo "
".$fname." not there - '".$fvalue."'";
$err = ldap_mod_add($this->ldap,$dn,array($fvalue => $stock_fields[$fname]));
}
+ elseif ($ldap_fields[0][$fvalue] && !$stock_fields[$fname])
+ {
+ //echo "
".$fname." gone... deleting - '".$fvalue."'";
+ // NOTE: we use the ldap_fields because we need to send the
+ // _ORIGINAL_ contents as the value. see:
+ // http://www.php.net/manual/en/function.ldap-mod-del.php
+ $err = ldap_mod_del($this->ldap,$dn,array($fvalue => $ldap_fields[0][$fvalue][0]));
+ }
+ // Else we have nothing to do.
}
}
@@ -770,13 +792,13 @@
return False;
}
- $sri = ldap_search($this->ldap, $phpgw_info['server']['ldap_contact_context'], 'phpgwowner='.$old_owner);
+ $sri = ldap_search($this->ldap, $phpgw_info['server']['ldap_contact_context'], 'phpgwcontactowner='.$old_owner);
$ldap_fields = ldap_get_entries($this->ldap, $sri);
$entry = "";
- while (list($null,$entry) = each($ldap_fields))
+ while (list($null,$entry) = each($ldap_fields))
{
- $err = ldap_modify($this->ldap,$dn,array('phpgwowner' => $new_owner));
+ $err = ldap_modify($this->ldap,$dn,array('phpgwcontactowner' => $new_owner));
}
$this->db->query("update $this->ext_table set contact_owner='$new_owner' WHERE contact_owner=$owner",__LINE__,__FILE__);
@@ -820,7 +842,7 @@
if ($owner)
{
- $sri = ldap_search($this->ldap, $phpgw_info['server']['ldap_contact_context'], 'phpgwowner='.$owner);
+ $sri = ldap_search($this->ldap, $phpgw_info['server']['ldap_contact_context'], 'phpgwcontactowner='.$owner);
$ldap_fields = ldap_get_entries($this->ldap, $sri);
$entry = '';