public function destroyObject(PhabricatorDestructibleInterface $object) { $log = id(new PhabricatorSystemDestructionLog())->setEpoch(time())->setObjectClass(get_class($object)); if ($this->rootLogID) { $log->setRootLogID($this->rootLogID); } $object_phid = $this->getObjectPHID($object); if ($object_phid) { $log->setObjectPHID($object_phid); } if (method_exists($object, 'getMonogram')) { try { $log->setObjectMonogram($object->getMonogram()); } catch (Exception $ex) { // Ignore. } } $log->save(); if (!$this->rootLogID) { $this->rootLogID = $log->getID(); } $object->destroyObjectPermanently($this); if ($object_phid) { $extensions = PhabricatorDestructionEngineExtension::getAllExtensions(); foreach ($extensions as $key => $extension) { if (!$extension->canDestroyObject($this, $object)) { unset($extensions[$key]); continue; } } foreach ($extensions as $key => $extension) { $extension->destroyObject($this, $object); } } }
public function renderModuleStatus(AphrontRequest $request) { $viewer = $request->getViewer(); $extensions = PhabricatorDestructionEngineExtension::getAllExtensions(); $rows = array(); foreach ($extensions as $extension) { $rows[] = array(get_class($extension), $extension->getExtensionName()); } return id(new AphrontTableView($rows))->setHeaders(array(pht('Class'), pht('Name')))->setColumnClasses(array(null, 'wide pri')); }