Path: blob/master/src/applications/console/plugin/DarkConsoleEventPlugin.php
13402 views
<?php12final class DarkConsoleEventPlugin extends DarkConsolePlugin {34public function getName() {5return pht('Events');6}78public function getDescription() {9return pht('Information about events and event listeners.');10}1112public function generateData() {13$listeners = PhutilEventEngine::getInstance()->getAllListeners();14foreach ($listeners as $key => $listener) {15$listeners[$key] = array(16'id' => $listener->getListenerID(),17'class' => get_class($listener),18);19}2021$events = DarkConsoleEventPluginAPI::getEvents();22foreach ($events as $key => $event) {23$events[$key] = array(24'type' => $event->getType(),25'stopped' => $event->isStopped(),26);27}2829return array(30'listeners' => $listeners,31'events' => $events,32);33}3435public function renderPanel() {36$data = $this->getData();3738$out = array();3940$out[] = phutil_tag(41'div',42array('class' => 'dark-console-panel-header'),43phutil_tag('h1', array(), pht('Registered Event Listeners')));4445$rows = array();46foreach ($data['listeners'] as $listener) {47$rows[] = array($listener['id'], $listener['class']);48}4950$table = new AphrontTableView($rows);51$table->setHeaders(52array(53pht('Internal ID'),54pht('Listener Class'),55));56$table->setColumnClasses(57array(58'',59'wide',60));6162$out[] = $table->render();6364$out[] = phutil_tag(65'div',66array('class' => 'dark-console-panel-header'),67phutil_tag('h1', array(), pht('Event Log')));6869$rows = array();70foreach ($data['events'] as $event) {71$rows[] = array(72$event['type'],73$event['stopped'] ? pht('STOPPED') : null,74);75}7677$table = new AphrontTableView($rows);78$table->setColumnClasses(79array(80'wide',81));82$table->setHeaders(83array(84pht('Event Type'),85pht('Stopped'),86));8788$out[] = $table->render();899091return phutil_implode_html("\n", $out);92}9394}959697