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'));
 }