zen.php 6.1 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181
  1. <?php
  2. class searchZen extends search
  3. {
  4. /**
  5. * 设置列表 session,方便返回。
  6. * Set list in session, for come back search index page.
  7. *
  8. * @param string $uri
  9. * @param string $words
  10. * @param string $type
  11. * @access protected
  12. * @return void
  13. */
  14. protected function setSessionForIndex($uri, $words, $type)
  15. {
  16. /* 设置列表 session. */
  17. /* Set session. */
  18. $this->session->set('bugList', $uri, 'qa');
  19. $this->session->set('buildList', $uri, 'execution');
  20. $this->session->set('caseList', $uri, 'qa');
  21. $this->session->set('docList', $uri, 'doc');
  22. $this->session->set('productList', $uri, 'product');
  23. $this->session->set('productPlanList', $uri, 'product');
  24. $this->session->set('programList', $uri, 'program');
  25. $this->session->set('projectList', $uri, 'project');
  26. $this->session->set('executionList', $uri, 'execution');
  27. $this->session->set('releaseList', $uri, 'product');
  28. $this->session->set('storyList', $uri, 'product');
  29. $this->session->set('taskList', $uri, 'execution');
  30. $this->session->set('testtaskList', $uri, 'qa');
  31. $this->session->set('todoList', $uri, 'my');
  32. $this->session->set('effortList', $uri, 'my');
  33. $this->session->set('reportList', $uri, 'qa');
  34. $this->session->set('testsuiteList', $uri, 'qa');
  35. $this->session->set('issueList', $uri, 'project');
  36. $this->session->set('riskList', $uri, 'project');
  37. $this->session->set('opportunityList', $uri, 'project');
  38. $this->session->set('trainplanList', $uri, 'project');
  39. $this->session->set('caselibList', $uri, 'qa');
  40. $this->session->set('searchIngWord', $words);
  41. $this->session->set('searchIngType', $type);
  42. if(isset($this->server->http_referer) && strpos($this->server->http_referer, 'search') === false) $this->session->set('referer', $this->server->http_referer);
  43. }
  44. /**
  45. * 获取所有类型列表。
  46. * Get type list.
  47. *
  48. * @access protected
  49. * @return array
  50. */
  51. protected function getTypeList()
  52. {
  53. $typeCount = $this->search->getListCount();
  54. $typeList = array('all' => $this->lang->search->modules['all']);
  55. foreach($typeCount as $objectType => $count)
  56. {
  57. if(!isset($this->lang->search->modules[$objectType])) continue;
  58. if($this->config->systemMode == 'light' && $objectType == 'program') continue;
  59. if(!helper::hasFeature('devops') && in_array($objectType, array('deploy', 'service', 'deploystep'))) continue;
  60. $typeList[$objectType] = $this->lang->search->modules[$objectType];
  61. }
  62. return $typeList;
  63. }
  64. /**
  65. * 设置搜索字段。
  66. * Set option fields.
  67. *
  68. * @param array $fields
  69. * @param array $fieldParams
  70. * @access private
  71. * @return array
  72. */
  73. private function setOptionFields($fields, $fieldParams)
  74. {
  75. $optionFields = array();
  76. foreach($fieldParams as $field => $param)
  77. {
  78. $data = new stdclass();
  79. $data->label = $fields[$field];
  80. $data->name = $field;
  81. $data->control = $param['control'];
  82. $data->operator = $param['operator'];
  83. if($field == 'id') $data->placeholder = $this->lang->search->queryTips;
  84. if(!empty($param['values']) && is_array($param['values'])) $data->values = $param['values'];
  85. $opitonFields[] = $data;
  86. }
  87. return $optionFields;
  88. }
  89. /**
  90. * 设置搜索表单的操作符。
  91. * Set option operators.
  92. *
  93. * @access private
  94. * @return array
  95. */
  96. private function setOptionOperators()
  97. {
  98. $operators = array();
  99. foreach($this->lang->search->operators as $value => $title)
  100. {
  101. $operator = new stdclass();
  102. $operator->value = $value;
  103. $operator->title = $title;
  104. $operators[] = $operator;
  105. }
  106. return $operators;
  107. }
  108. /**
  109. * 设置搜索表单组之间的逻辑关系。
  110. * Set option andOr.
  111. *
  112. * @access private
  113. * @return array
  114. */
  115. private function setOptionAndOr()
  116. {
  117. $andOrs = array();
  118. foreach($this->lang->search->andor as $value => $title)
  119. {
  120. $andOr = new stdclass();
  121. $andOr->value = $value;
  122. $andOr->title = $title;
  123. $andOrs[] = $andOr;
  124. }
  125. return $andOrs;
  126. }
  127. /**
  128. * 设置搜索表单选项。
  129. * Set search form options.
  130. *
  131. * @param array $fields
  132. * @param array $fieldParams
  133. * @param array $queries
  134. * @access public
  135. * @return object
  136. */
  137. protected function setOptions($fields, $fieldParams, $queries = array())
  138. {
  139. $options = new stdclass();
  140. $options->fields = $this->setOptionFields($fields, $fieldParams);
  141. $options->operators = $this->setOptionOperators();
  142. $options->andOr = $this->setOptionAndOr();
  143. $options->savedQueryTitle = $this->lang->search->savedQuery;
  144. $options->groupName = array($this->lang->search->group1, $this->lang->search->group2);
  145. $options->searchBtnText = $this->lang->search->common;
  146. $options->resetBtnText = $this->lang->search->reset;
  147. $options->saveSearchBtnText = $this->lang->search->saveCondition;
  148. $savedQuery = array();
  149. foreach($queries as $query)
  150. {
  151. if(empty($query->id)) continue;
  152. $savedQuery[] = $query;
  153. }
  154. if(!empty($savedQuery)) $options->savedQuery = $savedQuery;
  155. $options->formConfig = new stdclass();
  156. $options->formConfig->method = 'post';
  157. $options->formConfig->action = helper::createLink('search', 'buildQuery');
  158. $options->formConfig->target = 'hiddenwin';
  159. $options->saveSearch = new stdclass();
  160. $options->saveSearch->text = $this->lang->search->saveCondition;
  161. return $options;
  162. }
  163. }