From 74a9d9dd1a03186e37d1977e4d6b2a1488f49a3e Mon Sep 17 00:00:00 2001 From: "shiyangyangwork@yahoo.cn" Date: Wed, 11 Jan 2012 08:28:25 +0000 Subject: [PATCH] * fix bugs for 3.0.beta1 --- lib/file/file.class.php | 1 + module/extension/model.php | 7 ++++--- module/project/control.php | 3 +-- module/project/model.php | 5 ++++- module/project/view/managemembers.html.php | 4 +++- module/story/model.php | 3 ++- 6 files changed, 15 insertions(+), 8 deletions(-) diff --git a/lib/file/file.class.php b/lib/file/file.class.php index b25fda0987..92aedc24ec 100644 --- a/lib/file/file.class.php +++ b/lib/file/file.class.php @@ -58,6 +58,7 @@ class file public function removeDir($dir) { $dir = realpath($dir) . '/'; + if($dir == '/') return false; if(!is_writable($dir)) return false; if(!is_dir($dir)) return true; diff --git a/module/extension/model.php b/module/extension/model.php index 9dee2a8c64..464f998b71 100644 --- a/module/extension/model.php +++ b/module/extension/model.php @@ -508,7 +508,8 @@ class extensionModel extends model $return->error = ''; /* try remove pre extracted files. */ - $this->classFile->removeDir("ext/$extension"); + $extensionPath = "ext/$extension"; + if(is_dir($extensionPath)) $this->classFile->removeDir($extensionPath); /* Extract files. */ $packageFile = $this->getPackageFile($extension); @@ -516,7 +517,7 @@ class extensionModel extends model $zip = new pclzip($packageFile); $files = $zip->listContent(); $removePath = $files[0]['filename']; - if($zip->extract(PCLZIP_OPT_PATH, "ext/$extension", PCLZIP_OPT_REMOVE_PATH, $removePath) == 0) + if($zip->extract(PCLZIP_OPT_PATH, $extensionPath, PCLZIP_OPT_REMOVE_PATH, $removePath) == 0) { $return->result = 'fail'; $return->error = $zip->errorInfo(true); @@ -636,7 +637,7 @@ class extensionModel extends model /* Remove the extracted files. */ $extractedDir = realpath("ext/$extension"); - if(!$this->classFile->removeDir($extractedDir)) + if($extractedDir != '/' and !$this->classFile->removeDir($extractedDir)) { $removeCommands[] = PHP_OS == 'Linux' ? "rm -fr $extractedDir" : "rmdir $extractedDir /s"; } diff --git a/module/project/control.php b/module/project/control.php index 0d2d9b7af0..7d0454f7f6 100644 --- a/module/project/control.php +++ b/module/project/control.php @@ -1012,10 +1012,9 @@ class project extends control $members = $this->project->getTeamMembers($projectID); /* The deleted members. */ - foreach($members as $member) + foreach($members as $account => $member) { if(!@$users[$member->account]) $member->account .= $this->lang->user->deleted; - if(isset($users[$member->account])) $member->account = substr($users[$member->account], 2); } /* Set menu. */ diff --git a/module/project/model.php b/module/project/model.php index c8080a8d10..283908ef14 100644 --- a/module/project/model.php +++ b/module/project/model.php @@ -791,6 +791,7 @@ class projectModel extends model { extract($_POST); + $accounts = array_unique($accounts); foreach($accounts as $key => $account) { if(empty($account)) continue; @@ -1027,11 +1028,13 @@ class projectModel extends model */ public function getResolvedBugs($projectID) { - $project = $this->getById($projectID); + $project = $this->getById($projectID); + $products = $this->dao->select('product')->from(TABLE_PROJECTPRODUCT)->where('project')->eq($projectID)->fetchPairs('product'); return $this->dao->select('id, title, status')->from(TABLE_BUG) ->where('status')->eq('resolved') ->andWhere('resolvedDate')->ge($project->begin) ->andWhere('resolution')->eq('fixed') + ->andWhere('product')->in($products) ->fetchAll(); } } diff --git a/module/project/view/managemembers.html.php b/module/project/view/managemembers.html.php index 03e571c633..e640242593 100644 --- a/module/project/view/managemembers.html.php +++ b/module/project/view/managemembers.html.php @@ -21,9 +21,11 @@ team->hours;?> $member):?> + account], 2);?> account]);?> - + + diff --git a/module/story/model.php b/module/story/model.php index 00ca145f8e..ee93d505c6 100644 --- a/module/story/model.php +++ b/module/story/model.php @@ -153,7 +153,7 @@ class storyModel extends model $bug->closedBy = $this->app->user->account; $bug->closedDate = $now; $bug->assignedTo = 'closed'; - $this->dao->update(TABLE_BUG)->data($bug)->exec(); + $this->dao->update(TABLE_BUG)->data($bug)->where('id')->eq($bugID)->exec(); $this->loadModel('action')->create('bug', $bugID, 'ToStory', '', $storyID); $this->action->create('bug', $bugID, 'Closed'); @@ -178,6 +178,7 @@ class storyModel extends model } return false; } + /** * Create a batch stories. *