| 123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118 |
- <?php
- /**
- * The model file of ddimension module of ZenTaoPMS.
- *
- * @copyright Copyright 2009-2023 禅道软件(青岛)有限公司(ZenTao Software (Qingdao) Co., Ltd. www.cnezsoft.com)
- * @license ZPL (http://zpl.pub/page/zplv12.html)
- * @author Chenxuan Song <songchenxuan@easycorp.ltd>
- * @package dimension
- * @version $Id: model.php 5086 2022-11-1 10:26:23Z $
- * @link https://www.zentao.net
- */
- class dimensionModel extends model
- {
- public function __construct()
- {
- parent::__construct();
- }
- /**
- * 根据 id 获取一个维度对象。
- * Get a dimension object by id.
- *
- * @param int $dimensionID
- * @access public
- * @return object
- */
- public function getByID($dimensionID)
- {
- return $this->dao->select('*')->from(TABLE_DIMENSION)->where('id')->eq($dimensionID)->fetch();
- }
- /**
- * 获取第一个维度对象。
- * Get the first dimension object.
- *
- * @access public
- * @return object|false
- */
- public function getFirst()
- {
- $viewableObjects = $this->loadModel('bi')->getViewableObject('dimension');
- $firstID = current($viewableObjects);
- return $this->dao->select('*')->from(TABLE_DIMENSION)->where('id')->eq($firstID)->fetch();
- }
- /**
- * 获取维度对象数组。
- * Get dimension object array.
- *
- * @access public
- * @return array
- */
- public function getList()
- {
- $viewableObjects = $this->loadModel('bi')->getViewableObject('dimension');
- return $this->dao->select('*')->from(TABLE_DIMENSION)->where('id')->in($viewableObjects)->fetchAll('id');
- }
- /**
- * 获取当前的维度 ID 并保存到数据库中。
- * Get current dimension ID and save to database.
- *
- * @param int $dimensionID
- * @access public
- * @return int
- */
- public function getDimension($dimensionID = 0)
- {
- $dimensionID = $this->saveState($dimensionID);
- $this->loadModel('setting')->setItem($this->app->user->account . 'common.dimension.lastDimension', $dimensionID);
- return $dimensionID;
- }
- /**
- * 把维度 ID 保存到 session 中并返回。
- * Save dimension ID to session and return.
- *
- * @param int $dimensionID
- * @access public
- * @return int
- */
- public function saveState($dimensionID)
- {
- /* 如果维度 ID 为空,尝试从数据库中获取最后一次记录的维度。*/
- /* If dimension ID is empty, try to get the last dimension from database. */
- if(!$dimensionID && !empty($this->config->dimensions->lastDimension)) $dimensionID = $this->config->dimensions->lastDimension;
- /* 如果维度 ID 为空,尝试从 session 中获取维度。*/
- /* If dimension ID is empty, try to get dimension from session. */
- if(!$dimensionID && $this->session->dimension) $dimensionID = $this->session->dimension;
- /* 验证维度是否可见 */
- $viewableObjects = $this->loadModel('bi')->getViewableObject('dimension');
- if($dimensionID && $viewableObjects && !in_array($dimensionID, $viewableObjects)) $dimensionID = current($viewableObjects);
- /* 如果维度 ID 不为空,检查对应的对象是否存在。*/
- /* If dimension ID is not empty, check if the object exists. */
- if($dimensionID)
- {
- $dimension = $this->getByID($dimensionID);
- if(!$dimension) $dimensionID = 0;
- }
- /* 如果维度 ID 为空,尝试从数据库中获取第一个维度。*/
- /* If dimension ID is empty, try to get the first dimension from database. */
- if(!$dimensionID)
- {
- $dimension = $this->getFirst();
- if($dimension) $dimensionID = $dimension->id;
- }
- /* 把维度 ID 保存到 session 中并返回。*/
- /* Save dimension ID to session and return. */
- $this->session->set('dimension', (int)$dimensionID, $this->app->tab);
- return $this->session->dimension;
- }
- }
|