Compare commits

...

2 Commits

Author SHA1 Message Date
shiyangyangwork@yahoo.cn
74a9d9dd1a * fix bugs for 3.0.beta1 2012-01-11 08:28:25 +00:00
shiyangyangwork@yahoo.cn
d4e58c1d6f + add 3.0.beta1 2012-01-04 07:52:58 +00:00
6 changed files with 15 additions and 8 deletions

View File

@@ -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;

View File

@@ -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";
}

View File

@@ -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. */

View File

@@ -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();
}
}

View File

@@ -21,9 +21,11 @@
<th><?php echo $lang->team->hours;?></th>
</tr>
<?php foreach($members as $key => $member):?>
<?php $realname = substr($users[$member->account], 2);?>
<?php unset($users[$member->account]);?>
<tr>
<td><input type='text' name='accounts[]' id='account<?php echo $key;?>' value='<?php echo $member->account;?>' readonly class='text-2' /></td>
<td><input type='text' name='realnames[]' id='account<?php echo $key;?>' value='<?php echo $realname;?>' readonly class='text-2' /></td>
<td class='hidden'><input type='text' name='accounts[]' id='account<?php echo $key;?>' value='<?php echo $member->account;?>' readonly class='text-2' /></td>
<td><input type='text' name='roles[]' id='role<?php echo $key;?>' value='<?php echo $member->role;?>' class='text-2' /></td>
<td><input type='text' name='days[] ' id='days<?php echo $key;?>' value='<?php echo $member->days;?>' class='text-2' /></td>
<td>

View File

@@ -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.
*