zen.php 2.4 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758
  1. <?php
  2. /**
  3. * The zen file of message module of ZenTaoPMS.
  4. *
  5. * @copyright Copyright 2009-2023 禅道软件(青岛)有限公司(ZenTao Software (Qingdao) Co., Ltd. www.zentao.net)
  6. * @license ZPL(http://zpl.pub/page/zplv12.html) or AGPL(https://www.gnu.org/licenses/agpl-3.0.en.html)
  7. * @author Yidong Wang <yidong@easysoft.ltd>
  8. * @package message
  9. * @link https://www.zentao.net
  10. */
  11. class messageZen extends message
  12. {
  13. /**
  14. * 设置下拉菜单的相关变量。
  15. * Assign for dropmenu vars.
  16. *
  17. * @param string $active unread|all
  18. * @access public
  19. * @return void
  20. */
  21. public function assignDropmenuVars($active = 'unread')
  22. {
  23. $messages = $this->message->getMessages('all', 'createdDate_desc');
  24. $unreadCount = 0;
  25. $unreadMessages = $allMessages = array();
  26. array_map(function($message) use (&$unreadCount, &$unreadMessages, &$allMessages)
  27. {
  28. $date = substr($message->createdDate, 0, 10);
  29. $secondDiff = time() - strtotime($message->createdDate);
  30. if($secondDiff < 60) $time = sprintf($this->lang->message->timeLabel['minute'], 1);
  31. if($secondDiff >= 60) $time = sprintf($this->lang->message->timeLabel['minute'], ceil($secondDiff / 60));
  32. if($secondDiff >= 3600) $time = $this->lang->message->timeLabel['hour'];
  33. if($secondDiff >= 5400) $time = substr($message->createdDate, 11, 5);
  34. if($secondDiff > 86400) $time = substr($message->createdDate, 5, 11);
  35. $message->showTime = $time;
  36. preg_match_all("/<a href='([^\']+)'/", $message->data, $out);
  37. $link = count($out[1]) ? $out[1][0] : '';
  38. $content = str_replace("<a href='$link'", "<a data-url='{$link}' href='###' onclick='clickMessage(this)'", $message->data);
  39. $content = preg_replace("/data-app='([^\']+)'/", '', $content);
  40. $content = preg_replace("/(\?|\&)onlybody=yes/", '', $content);
  41. $message->data = $content;
  42. $allMessages[$date][] = $message;
  43. if($message->status == 'read') return;
  44. $unreadCount++;
  45. $unreadMessages[$date][] = $message;
  46. }, $messages);
  47. $this->view->allMessages = $allMessages;
  48. $this->view->unreadCount = $unreadCount;
  49. $this->view->unreadMessages = $unreadMessages;
  50. $this->view->active = $active;
  51. }
  52. }