private function renderCommentForm(PhabricatorFile $file)
 {
     $viewer = $this->getViewer();
     if (!$viewer->isLoggedIn()) {
         $login_href = id(new PhutilURI('/auth/start/'))->setQueryParam('next', '/' . $file->getMonogram());
         return id(new PHUIFormLayoutView())->addClass('phui-comment-panel-empty')->appendChild(id(new PHUIButtonView())->setTag('a')->setText(pht('Login to Comment'))->setHref((string) $login_href));
     }
     $draft = PhabricatorDraft::newFromUserAndKey($viewer, $file->getPHID());
     $post_uri = $this->getApplicationURI('thread/' . $file->getPHID() . '/');
     $form = id(new AphrontFormView())->setUser($viewer)->setAction($post_uri)->addSigil('lightbox-comment-form')->addClass('lightbox-comment-form')->setWorkflow(true)->appendChild(id(new PhabricatorRemarkupControl())->setUser($viewer)->setName('comment')->setValue($draft->getDraft()))->appendChild(id(new AphrontFormSubmitControl())->setValue(pht('Comment')));
     $view = phutil_tag_div('phui-comment-panel', $form);
     return $view;
 }
 private function writeChunk(PhabricatorFile $file, PhabricatorFileStorageEngine $engine)
 {
     $offset = $this->getTotalBytesWritten();
     $max_length = $engine->getChunkSize();
     $rope = $this->getRope();
     $data = $rope->getPrefixBytes($max_length);
     $actual_length = strlen($data);
     $rope->removeBytesFromHead($actual_length);
     $chunk_data = PhabricatorFile::newFromFileData($data, array('name' => $file->getMonogram() . '.chunk-' . $offset, 'viewPolicy' => PhabricatorPolicies::POLICY_NOONE));
     $chunk = PhabricatorFileChunk::initializeNewChunk($file->getStorageHandle(), $offset, $offset + $actual_length);
     $chunk->setDataFilePHID($chunk_data->getPHID())->save();
     $this->setTotalBytesWritten($offset + $actual_length);
     return $chunk;
 }
 private function renderFileLink(PhabricatorFile $file, PhabricatorObjectHandle $handle, array $options)
 {
     return id(new PhabricatorFileLinkView())->setFilePHID($file->getPHID())->setFileName($this->assertFlatText($options['name']))->setFileDownloadURI($file->getDownloadURI())->setFileViewURI($file->getBestURI())->setFileViewable((bool) $options['viewable'])->setFileMonogram($file->getMonogram());
 }