Exemplo n.º 1
0
 private function getGridShowContent($searchFieldConfig, $showFieldArr, $infoType, $productId, $filterColumn, $whereStr, $isAllBasicField = false)
 {
     $pageSize = CommonService::getPageSize();
     $viewColumnArr = SearchService::getViewColumnArr($searchFieldConfig, $showFieldArr, $infoType, $productId, $filterColumn);
     $totalNum = SqlService::getTotalFoundNum($infoType, $productId, $whereStr, $isAllBasicField);
     $sql = SqlService::getRawDataSql($searchFieldConfig, $infoType, $productId, $this->getSqlSelectFieldArr($infoType, $showFieldArr), $whereStr, $isAllBasicField);
     $dataProvider = new CSqlDataProvider($sql, array('totalItemCount' => $totalNum, 'sort' => array('defaultOrder' => array('id' => true), 'multiSort' => true, 'attributes' => array_merge($showFieldArr, array(Info::MARK))), 'pagination' => array('pageSize' => $pageSize)));
     $sortArr = $dataProvider->getSort()->getDirections();
     Yii::app()->user->setState($productId . '_' . $infoType . '_sortArr', $sortArr);
     $preNextSessionSql = SqlService::getPreNextSql($searchFieldConfig, $infoType, $productId, $whereStr, Yii::app()->user->getState($productId . '_' . $infoType . '_sortArr', $isAllBasicField));
     Yii::app()->user->setState($productId . '_' . $infoType . '_prenextsql', $preNextSessionSql);
     return array('viewColumnArr' => $viewColumnArr, 'dataProvider' => $dataProvider, 'totalNum' => $totalNum);
 }
Exemplo n.º 2
0
 /**
  * check if show field is legal
  *
  * @author                                  youzhao.zxw<*****@*****.**>
  * @param   string      $infoType           bug,case or result
  * @param   array       $searchRowArr       search condition
  * @param   int         $productId          product id
  * @param   array       $showFieldArr       show field array
  * @param   array       $orderArr           order array
  * @param   string      $filterSql          filter sql
  * @param   int         $pageSize           page size
  * @param   int         $currentPageSize    current page size
  * @return  array                           export date result
  */
 public static function getExportData($infoType, $searchRowArr, $productId = null, $showFieldArr = null, $orderArr = null, $filterSql = null, $pageSize = null, $currentPage = null)
 {
     $resultInfo = array();
     if (!empty($productId)) {
         $accessIdArr = Yii::app()->user->getState('visit_product_id');
         if (!in_array($productId, $accessIdArr)) {
             $resultInfo['status'] = CommonService::$ApiResult['FAIL'];
             $resultInfo['detail'] = Yii::t('Product', 'No access right to this product');
             return $resultInfo;
         }
     }
     $searchFieldConfig = SearchService::getSearchableFields($infoType, $productId);
     $checkSearchRowResult = self::checkSearchRowField($searchFieldConfig, $searchRowArr);
     if ('' != $checkSearchRowResult) {
         $resultInfo['status'] = CommonService::$ApiResult['FAIL'];
         $resultInfo['detail'] = $checkSearchRowResult;
         return $resultInfo;
     }
     if (!empty($showFieldArr)) {
         $showFieldCheckResult = self::checkShowField($searchFieldConfig, $showFieldArr);
         if ('' != $showFieldCheckResult) {
             $resultInfo['status'] = CommonService::$ApiResult['FAIL'];
             $resultInfo['detail'] = $showFieldCheckResult;
             return $resultInfo;
         }
     }
     $getSqlResult = SqlService::baseGetGroupQueryStr($searchFieldConfig, $infoType, $searchRowArr);
     if (CommonService::$ApiResult['FAIL'] == $getSqlResult['status']) {
         $resultInfo = $getSqlResult;
         return $resultInfo;
     }
     $whereStr = $getSqlResult['detail'];
     if (!empty($filterSql)) {
         $whereStr .= ' and ' . $filterSql;
     }
     if (empty($showFieldArr)) {
         $showFieldArr = array_keys($searchFieldConfig);
         $showFieldArr = array_diff($showFieldArr, array(Info::MARK));
     }
     $allRelatedFieldArr = array();
     foreach ($searchRowArr as $searchRowTmp) {
         $allRelatedFieldArr[] = $searchRowTmp['field'];
     }
     $isAllBasicField = SearchService::isAllBasicField(SearchService::getBasicFieldArr($infoType), array_merge($showFieldArr, $allRelatedFieldArr));
     $sql = SqlService::getRawDataSql($searchFieldConfig, $infoType, $productId, $showFieldArr, $whereStr, $isAllBasicField);
     $totalNum = SqlService::getTotalFoundNum($infoType, $productId, $whereStr, $isAllBasicField);
     if (empty($pageSize)) {
         $pageSize = $totalNum;
     }
     if ($pageSize > 5000) {
         $resultInfo['status'] = CommonService::$ApiResult['FAIL'];
         $resultInfo['detail'] = 'items can not exceed 5000';
         return $resultInfo;
     }
     if (!isset($currentPage)) {
         $currentPage = 1;
     } else {
         if (0 == $currentPage) {
             $resultInfo['status'] = CommonService::$ApiResult['FAIL'];
             $resultInfo['detail'] = 'page should start from 1';
             return $resultInfo;
         }
         $maxPage = ceil($totalNum / $pageSize);
         if ($currentPage > $maxPage && 0 != $maxPage) {
             $resultInfo['status'] = CommonService::$ApiResult['FAIL'];
             $resultInfo['detail'] = 'current page [' . $currentPage . '] is greater than the max page [' . $maxPage . ']';
             return $resultInfo;
         }
     }
     if (empty($orderArr)) {
         $orderArr = array('{{bug_info_view}}.id' => true);
     }
     $dataProvider = new CSqlDataProvider($sql, array('totalItemCount' => $totalNum, 'sort' => array('defaultOrder' => $orderArr, 'attributes' => array_keys($searchFieldConfig)), 'pagination' => array('pageSize' => $pageSize, 'currentPage' => $currentPage - 1)));
     $rawData = $dataProvider->getData();
     $rawData = SqlService::handleRawData($rawData, $infoType, $searchFieldConfig, $showFieldArr, $productId);
     $rawData = self::getExportComment($infoType, $rawData, $productId);
     $resultInfo['status'] = CommonService::$ApiResult['SUCCESS'];
     $resultInfo['detail'] = $rawData;
     return $resultInfo;
 }