2012-03-06 09:58:01 +01:00
|
|
|
<?php
|
|
|
|
|
|
|
|
|
|
|
|
class kolab_format_distributionlist extends kolab_format
|
|
|
|
{
|
|
|
|
public $CTYPE = 'application/vcard+xml';
|
|
|
|
|
|
|
|
function __construct()
|
|
|
|
{
|
2012-03-08 21:22:09 +01:00
|
|
|
$this->obj = new DistList;
|
2012-03-06 09:58:01 +01:00
|
|
|
}
|
|
|
|
|
|
|
|
/**
|
|
|
|
* Load Kolab object data from the given XML block
|
|
|
|
*
|
|
|
|
* @param string XML data
|
|
|
|
*/
|
|
|
|
public function load($xml)
|
|
|
|
{
|
|
|
|
$this->obj = kolabformat::readDistlist($xml, false);
|
|
|
|
}
|
|
|
|
|
|
|
|
/**
|
|
|
|
* Write object data to XML format
|
|
|
|
*
|
|
|
|
* @return string XML data
|
|
|
|
*/
|
|
|
|
public function write()
|
|
|
|
{
|
2012-03-14 18:51:38 +01:00
|
|
|
$xml = kolabformat::writeDistlist($this->obj);
|
|
|
|
parent::update_uid();
|
|
|
|
return $xml;
|
2012-03-06 09:58:01 +01:00
|
|
|
}
|
|
|
|
|
|
|
|
public function set(&$object)
|
|
|
|
{
|
2012-03-08 21:22:09 +01:00
|
|
|
// set some automatic values if missing
|
2012-03-14 18:51:38 +01:00
|
|
|
if (!empty($object['uid']))
|
|
|
|
$this->obj->setUid($object['uid']);
|
2012-03-08 21:22:09 +01:00
|
|
|
|
|
|
|
$this->obj->setName($object['name']);
|
|
|
|
|
|
|
|
$members = new vectormember;
|
|
|
|
foreach ($object['member'] as $member) {
|
|
|
|
$m = new Member;
|
|
|
|
$m->setName($member['name']);
|
|
|
|
$m->setEmail($member['mailto']);
|
|
|
|
$m->setUid($member['uid']);
|
|
|
|
$members->push($m);
|
|
|
|
}
|
|
|
|
$this->obj->setMembers($members);
|
2012-03-06 09:58:01 +01:00
|
|
|
}
|
|
|
|
|
|
|
|
public function is_valid()
|
|
|
|
{
|
2012-03-08 21:22:09 +01:00
|
|
|
return $this->data || (is_object($this->obj) && $this->obj->isValid());
|
2012-03-06 09:58:01 +01:00
|
|
|
}
|
|
|
|
|
|
|
|
/**
|
|
|
|
* Load data from old Kolab2 format
|
|
|
|
*/
|
|
|
|
public function fromkolab2($record)
|
|
|
|
{
|
|
|
|
$object = array(
|
|
|
|
'uid' => $record['uid'],
|
|
|
|
'changed' => $record['last-modification-date'],
|
|
|
|
'name' => $record['last-name'],
|
|
|
|
'member' => array(),
|
|
|
|
);
|
|
|
|
|
|
|
|
foreach ($record['member'] as $member) {
|
|
|
|
$object['member'][] = array(
|
|
|
|
'mailto' => $member['smtp-address'],
|
|
|
|
'name' => $member['display-name'],
|
|
|
|
'uid' => $member['uid'],
|
|
|
|
);
|
|
|
|
}
|
|
|
|
|
|
|
|
$this->data = $object;
|
|
|
|
}
|
|
|
|
|
|
|
|
/**
|
|
|
|
* Convert the Distlist object into a hash array data structure
|
|
|
|
*
|
|
|
|
* @return array Distribution list data as hash array
|
|
|
|
*/
|
|
|
|
public function to_array()
|
|
|
|
{
|
|
|
|
// return cached result
|
|
|
|
if (!empty($this->data))
|
|
|
|
return $this->data;
|
|
|
|
|
|
|
|
// read object properties
|
|
|
|
$object = array(
|
|
|
|
'uid' => $this->obj->uid(),
|
|
|
|
# 'changed' => $this->obj->lastModified(),
|
|
|
|
'name' => $this->obj->name(),
|
|
|
|
'member' => array(),
|
|
|
|
);
|
|
|
|
|
|
|
|
$members = $this->obj->members();
|
|
|
|
for ($i=0; $i < $members->size(); $i++) {
|
2012-03-08 21:22:09 +01:00
|
|
|
$member = $members->get($i);
|
|
|
|
if ($mailto = $member->email())
|
2012-03-06 09:58:01 +01:00
|
|
|
$object['member'][] = array(
|
2012-03-08 21:22:09 +01:00
|
|
|
'mailto' => $mailto,
|
|
|
|
'name' => $member->name(),
|
|
|
|
'uid' => $member->uid(),
|
2012-03-06 09:58:01 +01:00
|
|
|
);
|
|
|
|
}
|
|
|
|
|
2012-03-08 21:22:09 +01:00
|
|
|
$this->data = $object;
|
2012-03-06 09:58:01 +01:00
|
|
|
return $this->data;
|
|
|
|
}
|
|
|
|
|
|
|
|
}
|