model.php 4.0 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118
  1. <?php
  2. /**
  3. * The model file of ddimension module of ZenTaoPMS.
  4. *
  5. * @copyright Copyright 2009-2023 禅道软件(青岛)有限公司(ZenTao Software (Qingdao) Co., Ltd. www.cnezsoft.com)
  6. * @license ZPL (http://zpl.pub/page/zplv12.html)
  7. * @author Chenxuan Song <songchenxuan@easycorp.ltd>
  8. * @package dimension
  9. * @version $Id: model.php 5086 2022-11-1 10:26:23Z $
  10. * @link https://www.zentao.net
  11. */
  12. class dimensionModel extends model
  13. {
  14. public function __construct()
  15. {
  16. parent::__construct();
  17. }
  18. /**
  19. * 根据 id 获取一个维度对象。
  20. * Get a dimension object by id.
  21. *
  22. * @param int $dimensionID
  23. * @access public
  24. * @return object
  25. */
  26. public function getByID($dimensionID)
  27. {
  28. return $this->dao->select('*')->from(TABLE_DIMENSION)->where('id')->eq($dimensionID)->fetch();
  29. }
  30. /**
  31. * 获取第一个维度对象。
  32. * Get the first dimension object.
  33. *
  34. * @access public
  35. * @return object|false
  36. */
  37. public function getFirst()
  38. {
  39. $viewableObjects = $this->loadModel('bi')->getViewableObject('dimension');
  40. $firstID = current($viewableObjects);
  41. return $this->dao->select('*')->from(TABLE_DIMENSION)->where('id')->eq($firstID)->fetch();
  42. }
  43. /**
  44. * 获取维度对象数组。
  45. * Get dimension object array.
  46. *
  47. * @access public
  48. * @return array
  49. */
  50. public function getList()
  51. {
  52. $viewableObjects = $this->loadModel('bi')->getViewableObject('dimension');
  53. return $this->dao->select('*')->from(TABLE_DIMENSION)->where('id')->in($viewableObjects)->fetchAll('id');
  54. }
  55. /**
  56. * 获取当前的维度 ID 并保存到数据库中。
  57. * Get current dimension ID and save to database.
  58. *
  59. * @param int $dimensionID
  60. * @access public
  61. * @return int
  62. */
  63. public function getDimension($dimensionID = 0)
  64. {
  65. $dimensionID = $this->saveState($dimensionID);
  66. $this->loadModel('setting')->setItem($this->app->user->account . 'common.dimension.lastDimension', $dimensionID);
  67. return $dimensionID;
  68. }
  69. /**
  70. * 把维度 ID 保存到 session 中并返回。
  71. * Save dimension ID to session and return.
  72. *
  73. * @param int $dimensionID
  74. * @access public
  75. * @return int
  76. */
  77. public function saveState($dimensionID)
  78. {
  79. /* 如果维度 ID 为空,尝试从数据库中获取最后一次记录的维度。*/
  80. /* If dimension ID is empty, try to get the last dimension from database. */
  81. if(!$dimensionID && !empty($this->config->dimensions->lastDimension)) $dimensionID = $this->config->dimensions->lastDimension;
  82. /* 如果维度 ID 为空,尝试从 session 中获取维度。*/
  83. /* If dimension ID is empty, try to get dimension from session. */
  84. if(!$dimensionID && $this->session->dimension) $dimensionID = $this->session->dimension;
  85. /* 验证维度是否可见 */
  86. $viewableObjects = $this->loadModel('bi')->getViewableObject('dimension');
  87. if($dimensionID && $viewableObjects && !in_array($dimensionID, $viewableObjects)) $dimensionID = current($viewableObjects);
  88. /* 如果维度 ID 不为空,检查对应的对象是否存在。*/
  89. /* If dimension ID is not empty, check if the object exists. */
  90. if($dimensionID)
  91. {
  92. $dimension = $this->getByID($dimensionID);
  93. if(!$dimension) $dimensionID = 0;
  94. }
  95. /* 如果维度 ID 为空,尝试从数据库中获取第一个维度。*/
  96. /* If dimension ID is empty, try to get the first dimension from database. */
  97. if(!$dimensionID)
  98. {
  99. $dimension = $this->getFirst();
  100. if($dimension) $dimensionID = $dimension->id;
  101. }
  102. /* 把维度 ID 保存到 session 中并返回。*/
  103. /* Save dimension ID to session and return. */
  104. $this->session->set('dimension', (int)$dimensionID, $this->app->tab);
  105. return $this->session->dimension;
  106. }
  107. }