protected function _detachSubscriber(CakeEventListener $subscriber, $eventKey = null)
{
$events = (array) $subscriber->implementedEvents();
if (!empty($eventKey) && empty($events[$eventKey])) {
return;
} elseif (!empty($eventKey)) {
$events = array($eventKey => $events[$eventKey]);
}
foreach ($events as $key => $function) {
if (is_array($function)) {
if (is_numeric(key($function))) {
foreach ($function as $handler) {
$handler = isset($handler['callable']) ? $handler['callable'] : $handler;
$this->detach(array($subscriber, $handler), $key);
}
continue;
}
$function = $function['callable'];
}
$this->detach(array($subscriber, $function), $key);
}
}