PageRenderTime 43ms CodeModel.GetById 21ms RepoModel.GetById 0ms app.codeStats 0ms

/src/applications/conpherence/controller/ConpherenceController.php

https://github.com/navyuginfo/phabricator
PHP | 156 lines | 136 code | 14 blank | 6 comment | 9 complexity | 3ea036318f812bc76c6a48157d92f0a3 MD5 | raw file
Possible License(s): Apache-2.0, LGPL-2.0, LGPL-3.0, MIT, MPL-2.0-no-copyleft-exception, BSD-3-Clause
  1. <?php
  2. /**
  3. * @group conpherence
  4. */
  5. abstract class ConpherenceController extends PhabricatorController {
  6. private $conpherences;
  7. public function buildApplicationMenu() {
  8. $nav = new PHUIListView();
  9. $nav->newLink(
  10. pht('New Message'),
  11. $this->getApplicationURI('new/'));
  12. $nav->addMenuItem(
  13. id(new PHUIListItemView())
  14. ->setName(pht('Add Participants'))
  15. ->setType(PHUIListItemView::TYPE_LINK)
  16. ->setHref('#')
  17. ->addSigil('conpherence-widget-adder')
  18. ->setMetadata(array('widget' => 'widgets-people')));
  19. $nav->addMenuItem(
  20. id(new PHUIListItemView())
  21. ->setName(pht('New Calendar Item'))
  22. ->setType(PHUIListItemView::TYPE_LINK)
  23. ->setHref('/calendar/event/create/')
  24. ->addSigil('conpherence-widget-adder')
  25. ->setMetadata(array('widget' => 'widgets-calendar')));
  26. return $nav;
  27. }
  28. public function buildApplicationCrumbs() {
  29. $crumbs = parent::buildApplicationCrumbs();
  30. $crumbs
  31. ->addAction(
  32. id(new PHUIListItemView())
  33. ->setName(pht('New Message'))
  34. ->setHref($this->getApplicationURI('new/'))
  35. ->setIcon('fa-plus-square')
  36. ->setWorkflow(true))
  37. ->addAction(
  38. id(new PHUIListItemView())
  39. ->setName(pht('Thread'))
  40. ->setHref('#')
  41. ->setIcon('fa-bars')
  42. ->setStyle('display: none;')
  43. ->addClass('device-widgets-selector')
  44. ->addSigil('device-widgets-selector'));
  45. return $crumbs;
  46. }
  47. protected function buildHeaderPaneContent(ConpherenceThread $conpherence) {
  48. $crumbs = $this->buildApplicationCrumbs();
  49. if ($conpherence->getTitle()) {
  50. $title = $conpherence->getTitle();
  51. } else {
  52. $title = pht('[No Title]');
  53. }
  54. $crumbs->addCrumb(
  55. id(new PhabricatorCrumbView())
  56. ->setName($title)
  57. ->setHref($this->getApplicationURI('update/'.$conpherence->getID().'/'))
  58. ->setWorkflow(true));
  59. return hsprintf(
  60. '%s',
  61. array(
  62. phutil_tag(
  63. 'div',
  64. array(
  65. 'class' => 'header-loading-mask'
  66. ),
  67. ''),
  68. $crumbs));
  69. }
  70. protected function renderConpherenceTransactions(
  71. ConpherenceThread $conpherence) {
  72. $user = $this->getRequest()->getUser();
  73. $transactions = $conpherence->getTransactions();
  74. $oldest_transaction_id = 0;
  75. $too_many = ConpherenceThreadQuery::TRANSACTION_LIMIT + 1;
  76. if (count($transactions) == $too_many) {
  77. $last_transaction = end($transactions);
  78. unset($transactions[$last_transaction->getID()]);
  79. $oldest_transaction = end($transactions);
  80. $oldest_transaction_id = $oldest_transaction->getID();
  81. }
  82. $transactions = array_reverse($transactions);
  83. $handles = $conpherence->getHandles();
  84. $rendered_transactions = array();
  85. $engine = id(new PhabricatorMarkupEngine())
  86. ->setViewer($user);
  87. foreach ($transactions as $key => $transaction) {
  88. if ($transaction->shouldHide()) {
  89. unset($transactions[$key]);
  90. continue;
  91. }
  92. if ($transaction->getComment()) {
  93. $engine->addObject(
  94. $transaction->getComment(),
  95. PhabricatorApplicationTransactionComment::MARKUP_FIELD_COMMENT);
  96. }
  97. }
  98. $engine->process();
  99. // we're going to insert a dummy date marker transaction for breaks
  100. // between days. some setup required!
  101. $previous_transaction = null;
  102. $date_marker_transaction = id(new ConpherenceTransaction())
  103. ->setTransactionType(ConpherenceTransactionType::TYPE_DATE_MARKER)
  104. ->makeEphemeral();
  105. $date_marker_transaction_view = id(new ConpherenceTransactionView())
  106. ->setUser($user)
  107. ->setConpherenceTransaction($date_marker_transaction)
  108. ->setHandles($handles)
  109. ->setMarkupEngine($engine);
  110. foreach ($transactions as $transaction) {
  111. if ($previous_transaction) {
  112. $previous_day = phabricator_format_local_time(
  113. $previous_transaction->getDateCreated(),
  114. $user,
  115. 'Ymd');
  116. $current_day = phabricator_format_local_time(
  117. $transaction->getDateCreated(),
  118. $user,
  119. 'Ymd');
  120. // date marker transaction time!
  121. if ($previous_day != $current_day) {
  122. $date_marker_transaction->setDateCreated(
  123. $transaction->getDateCreated());
  124. $rendered_transactions[] = $date_marker_transaction_view->render();
  125. }
  126. }
  127. $rendered_transactions[] = id(new ConpherenceTransactionView())
  128. ->setUser($user)
  129. ->setConpherenceTransaction($transaction)
  130. ->setHandles($handles)
  131. ->setMarkupEngine($engine)
  132. ->render();
  133. $previous_transaction = $transaction;
  134. }
  135. $latest_transaction_id = $transaction->getID();
  136. return array(
  137. 'transactions' => $rendered_transactions,
  138. 'latest_transaction_id' => $latest_transaction_id,
  139. 'oldest_transaction_id' => $oldest_transaction_id
  140. );
  141. }
  142. }