/** * get reports * * @param string $infoType * @param integer $productId * @param string $where * @param array $selected * @return array */ public function getReports($infoType, $productId, $selected = array()) { $reports = array(); $productIds = Yii::app()->user->getState('visit_product_id'); $condition = 'product_id IN (' . join(',', $productIds) . ')'; if (isset($productId)) { $condition .= ' AND product_id = ' . $productId; } $searchRowArr = Yii::app()->user->getState($productId . '_' . $infoType . '_search'); if (null == $searchRowArr) { $searchRowArr = array(); } $searchFieldConfig = SearchService::getSearchableFields($infoType, $productId); $result = SqlService::baseGetGroupQueryStr($searchFieldConfig, $infoType, $searchRowArr); if (CommonService::$ApiResult['SUCCESS'] == $result['status']) { $condition .= ' AND ' . $result['detail']; } $reportDatas = $this->getReportData($infoType, $productId, $condition, $selected); foreach ($reportDatas as $key => $data) { $show = false; if (!empty($selected) && in_array($key, $selected)) { $show = true; } $reports[] = new Report($infoType, $productId, $data['type'], $condition, $data, $show); } return $reports; }
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); }
<?php require 'SQL/sql_controller.php'; require 'objects/car.php'; $t = new Car('admin', 'KIY7364', 'Wolks', 'Voyage G2'); $s = serialize($t); $query = "insert into s \n (user, object)\n values \n ('admin','{$s}');"; $go = mysql_query($query); if ($go) { echo "ma"; } else { echo "mu"; } $query = SqlService::BuildSelecFromWhere('object', 's', 'user', 'admin'); $go = SqlService::mySqlResult($query); $us = unserialize($go); echo $us->getIdUser() . "<br>"; echo $us->getMark(); /*$write = fopen('sql.txt', 'w'); fwrite($write, $s); fclose($write); $open = fopen('sql.txt', 'r'); $string2 = fread($open, filesize('sql.txt')); */
public function createService(ServiceLocatorInterface $services) { $service = new SqlService(); $service->setDbAdapter($services->get('DbAdapter')); return $service; }
/** * 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; }