/** The time the object was created */
const ATTRIBUTE_CREATIONDATE = 'createTimestamp';
+ /** The time the object was last modified */
+ const ATTRIBUTE_MODIFICATIONDATE = 'modifyTimestamp';
+
+ /** The time the object was created */
+ const ATTRDATE_CREATIONDATE = 'createTimestampDate';
+
+ /** The time the object was last modified */
+ const ATTRDATE_MODIFICATIONDATE = 'modifyTimestampDate';
+
/** Access rules for this object */
const ATTRIBUTE_ACI = 'OpenLDAPaci';
'defined' => array(
self::ATTRIBUTE_OC,
self::ATTRIBUTE_CREATIONDATE,
+ self::ATTRIBUTE_MODIFICATIONDATE,
self::ATTRIBUTE_ACI,
),
/**
self::ATTRIBUTE_ID => array(
'method' => 'getId',
),
+ self::ATTRDATE_CREATIONDATE => array(
+ 'method' => 'getDate',
+ 'args' => array(
+ self::ATTRIBUTE_CREATIONDATE,
+ ),
+ ),
+ self::ATTRDATE_MODIFICATIONDATE => array(
+ 'method' => 'getDate',
+ 'args' => array(
+ self::ATTRIBUTE_MODIFICATIONDATE,
+ ),
+ ),
),
/**
* Attributes that are written using the information from several other
}
/**
+ * Get a derived attribute date by converting it into a Horde_Date object.
+ *
+ * @param string $key Name of the attribute that holds the
+ * date.
+ *
+ * @return mixed A Horde_Date object or false if the date was not
+ * converted successfully.
+ */
+ protected function getDate($key)
+ {
+ $date = $this->_get($key);
+ if (empty($date) || !class_exists('Horde_Date')) {
+ return false;
+ }
+
+ $result = new Horde_Date($date);
+ return $result;
+ }
+
+ /**
* Set a collapsed attribute value.
*
* @param string $key The attribute to collapse into.
}
}
- $changes['attributes'] = array_unique($changes['attributes']);
+ if (!empty($changes['attributes'])) {
+ $changes['attributes'] = array_unique($changes['attributes']);
+ }
return $changes;
}
/** The date of birth */
const ATTRIBUTE_DATEOFBIRTH = 'apple-birthday';
+ /** The date of birth as Horde_Date */
+ const ATTRDATE_DATEOFBIRTH = 'apple-birthdayDate';
+
/** The place of birth */
const ATTRIBUTE_PLACEOFBIRTH = 'birthPlace';
'locked' => array(
self::ATTRIBUTE_MAIL,
),
+ /**
+ * Derived attributes are calculated based on other attribute values.
+ */
+ 'derived' => array(
+ self::ATTRDATE_DATEOFBIRTH => array(
+ 'method' => 'getDate',
+ 'args' => array(
+ self::ATTRIBUTE_DATEOFBIRTH,
+ ),
+ ),
+ ),
'object_classes' => array(
self::OBJECTCLASS_KOLABINETORGPERSON,
),
<channel>pear.horde.org</channel>
</package>
<package>
+ <name>Date</name>
+ <channel>pear.horde.org</channel>
+ </package>
+ <package>
<name>PHPUnit</name>
<channel>pear.phpunit.de</channel>
</package>
Horde_Kolab_Server_Object_Person::ATTRIBUTE_SN => 'Kolab_Server_PersonTest_123456',
Horde_Kolab_Server_Object_Person::ATTRIBUTE_USERPASSWORD => 'Kolab_Server_PersonTest_123456',
),
+ /* Person with a creation date*/
+ array(
+ 'type' => 'Horde_Kolab_Server_Object_Person',
+ Horde_Kolab_Server_Object_Person::ATTRIBUTE_CN => 'Kolab_Server_PersonTest_123456',
+ Horde_Kolab_Server_Object_Person::ATTRIBUTE_SN => 'Kolab_Server_PersonTest_123456',
+ Horde_Kolab_Server_Object_Person::ATTRIBUTE_USERPASSWORD => 'Kolab_Server_PersonTest_123456',
+ Horde_Kolab_Server_Object_Person::ATTRIBUTE_CREATIONDATE => '191008030000Z',
+ ),
);
/**
Horde_Kolab_Server_Object_Person::ATTRIBUTE_TELNO,
array('123456789', '+1234567890', array('1', '2'), null, '0'), true);
}
+
+ /**
+ * Test retrrieving a date.
+ *
+ * @dataProvider provideServers
+ *
+ * @return NULL
+ */
+ public function testGetDate($server)
+ {
+ $person = $this->assertAdd($server, $this->objects[8],
+ array(Horde_Kolab_Server_Object_Person::ATTRIBUTE_TELNO => ''));
+ $cdate = $person->get(Horde_Kolab_Server_Object_Person::ATTRDATE_CREATIONDATE);
+ $this->assertEquals('Horde_Date', get_class($cdate));
+ $this->assertEquals('1910-08-03 01:00:00', (string) $cdate);
+ }
}