public function enable($capability, $enable = true)
{
$capability = Horde_String::upper($capability);
$enabled = $this->isEnabled($capability);
if ($enable && !$enabled) {
switch ($capability) {
case 'QRESYNC':
/* RFC 7162 [3.2.3] - Enabling QRESYNC also implies enabling
* of CONDSTORE. */
$this->enable('CONDSTORE');
break;
}
$this->_enabled[] = $capability;
$this->notify();
} elseif (!$enable && $enabled) {
$this->_enabled = array_diff($this->_enabled, array($capability));
$this->notify();
}
}
public function testSerialize() { $c = new Horde_Imap_Client_Data_Capability_Imap(); $c->add('FOO', 'A'); $c->add('FOO', 'B'); $c->add('BAR'); $c->enable('BAR'); $mock = $this->getMock('SplObserver'); $mock->expects($this->never())->method('update')->with($this->equalTo($c)); $c->attach($mock); $c_copy = unserialize(serialize($c)); $this->assertTrue($c_copy->query('FOO', 'A')); $this->assertTrue($c_copy->query('FOO', 'B')); $this->assertTrue($c_copy->query('BAR')); $this->assertFalse($c_copy->isEnabled('BAR')); $c_copy->add('BAZ'); }