public function detach($callable, $eventKey = null)
{
if ($callable instanceof CakeEventListener) {
return $this->_detachSubscriber($callable, $eventKey);
}
if (empty($eventKey)) {
foreach (array_keys($this->_listeners) as $eventKey) {
$this->detach($callable, $eventKey);
}
return;
}
if (empty($this->_listeners[$eventKey])) {
return;
}
foreach ($this->_listeners[$eventKey] as $priority => $callables) {
foreach ($callables as $k => $callback) {
if ($callback['callable'] === $callable) {
unset($this->_listeners[$eventKey][$priority][$k]);
break;
}
}
}
}