diff --git a/extension/lite/product/ext/model/getpairs.php b/extension/lite/product/ext/model/getpairs.php index 0796a1e0d7..94725eee04 100644 --- a/extension/lite/product/ext/model/getpairs.php +++ b/extension/lite/product/ext/model/getpairs.php @@ -25,7 +25,7 @@ public function getPairs($mode = '', $programID = 0, $append = '', $shadow = 0) ->andWhere('t2.vision')->eq($this->config->vision) ->fetchPairs('id', 'id'); - $products = $this->dao->select('*, IF(INSTR(" closed", status) < 2, 0, 1) AS isClosed') + $products = $this->dao->select("*, IF(INSTR(' closed', status) < 2, 0, 1) AS isClosed") ->from(TABLE_PRODUCT) ->where(1) ->beginIF(strpos($mode, 'all') === false)->andWhere('deleted')->eq(0)->fi() diff --git a/lib/dbh/dbh.class.php b/lib/dbh/dbh.class.php index 49d0d1d22b..7f672291e6 100644 --- a/lib/dbh/dbh.class.php +++ b/lib/dbh/dbh.class.php @@ -45,7 +45,7 @@ class dbh */ public function __construct($config, $setSchema = true) { - $dsn = "{$config->driver}:host={$config->host}:{$config->port}"; + $dsn = "{$config->driver}:host={$config->host};port={$config->port}"; if($setSchema) $dsn .= ";dbname={$config->name}"; $pdo = new PDO($dsn, $config->user, $config->password); diff --git a/module/build/model.php b/module/build/model.php index 383c19ffee..8e1319f005 100644 --- a/module/build/model.php +++ b/module/build/model.php @@ -254,7 +254,7 @@ class buildModel extends model $buildIdList = str_replace('trunk', '0', $buildIdList); $selectedBuilds = $this->dao->select('id, name')->from(TABLE_BUILD) ->where('id')->in($buildIdList) - ->beginIF($products)->andWhere('product')->in($productIdList)->fi() + ->beginIF($products and $products != 'all')->andWhere('product')->in($productIdList)->fi() ->beginIF($objectType === 'execution' and $objectID)->andWhere('execution')->eq($objectID)->fi() ->beginIF($objectType === 'project' and $objectID)->andWhere('project')->eq($objectID)->fi() ->beginIF(strpos($params, 'hasdeleted') === false)->andWhere('deleted')->eq(0)->fi() @@ -274,7 +274,7 @@ class buildModel extends model ->beginIF(strpos($params, 'hasdeleted') === false)->andWhere('t1.deleted')->eq(0)->fi() ->beginIF(strpos($params, 'hasproject') !== false)->andWhere('t1.project')->ne(0)->fi() ->beginIF(strpos($params, 'singled') !== false)->andWhere('t1.execution')->ne(0)->fi() - ->beginIF($products)->andWhere('t1.product')->in($productIdList)->fi() + ->beginIF($products and $products != 'all')->andWhere('t1.product')->in($productIdList)->fi() ->beginIF($objectType === 'execution' and $objectID)->andWhere('t1.execution')->eq($objectID)->fi() ->beginIF($objectType === 'project' and $objectID)->andWhere('t1.project')->eq($objectID)->fi() ->orderBy('t1.date desc, t1.id desc')->fetchAll('id'); diff --git a/module/execution/model.php b/module/execution/model.php index 6895d02cb3..59aeb8470b 100755 --- a/module/execution/model.php +++ b/module/execution/model.php @@ -3319,7 +3319,7 @@ class executionModel extends model $data->branch = $storyList[$storyID]->branch; $data->story = $storyID; $data->version = $versions[$storyID]; - $data->order = ++$lastOrder; + $data->order = (int)++$lastOrder; $this->dao->replace(TABLE_PROJECTSTORY)->data($data)->exec(); $this->story->setStage($storyID); diff --git a/module/pivot/js/bugcreate.js b/module/pivot/js/bugcreate.js index b856ba4ead..b6f828a140 100644 --- a/module/pivot/js/bugcreate.js +++ b/module/pivot/js/bugcreate.js @@ -18,6 +18,6 @@ function changeParams(obj) } var params = window.btoa('begin=' + begin + '&end=' + end + '&product=' + product + '&execution=' + execution); - var link = createLink('pivot', 'preview', 'dimension=' + dimension + '&group=' + group + '&module=pivot&method=bugcreate¶ms=' + params); + var link = createLink('pivot', 'preview', 'dimension=' + dimension + '&group=' + groupID + '&module=pivot&method=bugcreate¶ms=' + params); location.href = link; } diff --git a/module/pivot/js/productsummary.js b/module/pivot/js/productsummary.js index 039a510eed..db3e923c06 100644 --- a/module/pivot/js/productsummary.js +++ b/module/pivot/js/productsummary.js @@ -8,6 +8,6 @@ $('#conditions input:checkbox').change(function() conditions = conditions.substring(0, conditions.length - 1); var params = window.btoa('conditions=' + conditions); - var link = createLink('pivot', 'preview', 'dimension=' + dimension + '&group=' + group + '&module=pivot&method=productSummary¶ms=' + params); + var link = createLink('pivot', 'preview', 'dimension=' + dimension + '&group=' + groupID + '&module=pivot&method=productSummary¶ms=' + params); location.href = link; }) diff --git a/module/pivot/js/projectdeviation.js b/module/pivot/js/projectdeviation.js index f4ff8d4be7..b4ad884ff1 100644 --- a/module/pivot/js/projectdeviation.js +++ b/module/pivot/js/projectdeviation.js @@ -31,6 +31,6 @@ function changeDate(begin, end) } var params = window.btoa('begin=' + begin + '&end=' + end); - var link = createLink('pivot', 'preview', 'dimension=' + dimension + '&group=' + group + '&module=pivot&method=projectdeviation¶ms=' + params); + var link = createLink('pivot', 'preview', 'dimension=' + dimension + '&group=' + groupID + '&module=pivot&method=projectdeviation¶ms=' + params); location.href = link; } diff --git a/module/pivot/js/workload.js b/module/pivot/js/workload.js index 350d3ea035..fb0fb71a2e 100644 --- a/module/pivot/js/workload.js +++ b/module/pivot/js/workload.js @@ -23,7 +23,7 @@ function changeParams(obj) } var params = window.btoa('begin=' + begin + '&end=' + end + '&days=' + days + '&workday=' + workday + '&dept=' + dept + '&assign=' + assign); - var link = createLink('pivot', 'preview', 'dimension=' + dimension + '&group=' + group + '&module=pivot&method=workload¶ms=' + params); + var link = createLink('pivot', 'preview', 'dimension=' + dimension + '&group=' + groupID + '&module=pivot&method=workload¶ms=' + params); location.href = link; } diff --git a/module/pivot/model.php b/module/pivot/model.php index 1dad87cfae..d17cdf3d66 100644 --- a/module/pivot/model.php +++ b/module/pivot/model.php @@ -1390,19 +1390,16 @@ class pivotModel extends model /* Process rows. */ $connectSQL = ''; - if(empty($settings['filterType']) or $settings['filterType'] == 'result') + if(!empty($filters) && !isset($filters[0]['from'])) { - if(!empty($filters)) + $wheres = array(); + foreach($filters as $field => $filter) { - $wheres = array(); - foreach($filters as $field => $filter) - { - $wheres[] = "tt.`$field` {$filter['operator']} {$filter['value']}"; - } - - $whereStr = implode(' and ', $wheres); - $connectSQL .= " where $whereStr"; + $wheres[] = "tt.`$field` {$filter['operator']} {$filter['value']}"; } + + $whereStr = implode(' and ', $wheres); + $connectSQL .= " where $whereStr"; } $groupSQL = " group by $groupList"; @@ -1411,36 +1408,39 @@ class pivotModel extends model $number = 0; $groupsRow = array(); $showColTotal = zget($settings, 'columnTotal', 'noShow'); - foreach($settings['columns'] as $column) + if(isset($settings['columns'])) { - $stat = $column['stat']; - $field = $column['field']; - $slice = zget($column, 'slice', 'noSlice'); - $uuName = $field . $number; - $number ++; - - if($stat == 'distinct') + foreach($settings['columns'] as $column) { - $columnSQL = "count(distinct tt.`$field`) as `$uuName`"; - } - else - { - $columnSQL = "$stat(tt.`$field`) as `$uuName`"; - } + $stat = $column['stat']; + $field = $column['field']; + $slice = zget($column, 'slice', 'noSlice'); + $uuName = $field . $number; + $number ++; - if($slice != 'noSlice') $columnSQL = "select $groupList,`$slice`,$columnSQL from ($sql) tt" . $connectSQL . $groupSQL . ",tt.`$slice`" . $orderSQL . ",tt.`$slice`"; - if($slice == 'noSlice') $columnSQL = "select $groupList,$columnSQL from ($sql) tt" . $connectSQL . $groupSQL . $orderSQL; + if($stat == 'distinct') + { + $columnSQL = "count(distinct tt.`$field`) as `$uuName`"; + } + else + { + $columnSQL = "$stat(tt.`$field`) as `$uuName`"; + } - $columnRows = $this->dao->query($columnSQL)->fetchAll(); + if($slice != 'noSlice') $columnSQL = "select $groupList,`$slice`,$columnSQL from ($sql) tt" . $connectSQL . $groupSQL . ",tt.`$slice`" . $orderSQL . ",tt.`$slice`"; + if($slice == 'noSlice') $columnSQL = "select $groupList,$columnSQL from ($sql) tt" . $connectSQL . $groupSQL . $orderSQL; - $cols = $this->getTableHeader($columnRows, $column, $fields, $cols, $sql, $langs); - if($slice != 'noSlice') $columnRows = $this->processSliceData($columnRows, $groups, $slice, $uuName); - $columnRows = $this->processShowData($columnRows, $groups, $column, $showColTotal, $uuName); + $columnRows = $this->dao->query($columnSQL)->fetchAll(); - foreach($columnRows as $key => $row) - { - if(!isset($groupsRow[$key])) $groupsRow[$key] = new stdclass(); - $groupsRow[$key] = (object)array_merge((array)$groupsRow[$key], (array)$row); + $cols = $this->getTableHeader($columnRows, $column, $fields, $cols, $sql, $langs); + if($slice != 'noSlice') $columnRows = $this->processSliceData($columnRows, $groups, $slice, $uuName); + $columnRows = $this->processShowData($columnRows, $groups, $column, $showColTotal, $uuName); + + foreach($columnRows as $key => $row) + { + if(!isset($groupsRow[$key])) $groupsRow[$key] = new stdclass(); + $groupsRow[$key] = (object)array_merge((array)$groupsRow[$key], (array)$row); + } } } diff --git a/module/product/model.php b/module/product/model.php index aa49c1c194..b810bf1e07 100755 --- a/module/product/model.php +++ b/module/product/model.php @@ -244,6 +244,7 @@ class productModel extends model */ public function getById($productID) { + $productID = (int)$productID; if(defined('TUTORIAL')) return $this->loadModel('tutorial')->getProduct(); $product = $this->dao->findById($productID)->from(TABLE_PRODUCT)->fetch(); if(!$product) return false;