This is an automated email from the git hooks/post-receive script. It was
generated because a ref change was pushed to the repository containing
the project "FusionForge".
The branch, master has been updated
via cf094976f1ad3dc836579416afbdb472913f2705 (commit)
from e24d8a99b898698706f91bb9db34d3c2bbc3183b (commit)
Those revisions listed above that are new to this repository have
not appeared on any other notification email; so we list those
revisions in full, below.
- Log -----------------------------------------------------------------
https://scm.fusionforge.org/anonscm/gitweb/?p=fusionforge/fusionforge.git;a=commitdiff;h=cf094976f1ad3dc836579416afbdb472913f2705
commit cf094976f1ad3dc836579416afbdb472913f2705
Author: Stéphane-Eymeric Bredthauer <[email protected]>
Date: Mon Jan 16 21:51:43 2017 +0100
Tracker: Update artifact on a effort unit set copy
diff --git a/src/common/tracker/EffortUnit.class.php
b/src/common/tracker/EffortUnit.class.php
index 4b25d0c..4b64164 100644
--- a/src/common/tracker/EffortUnit.class.php
+++ b/src/common/tracker/EffortUnit.class.php
@@ -113,7 +113,7 @@ class EffortUnit extends FFError {
$this->setError(_('An Unit name is required'));
return false;
}
- $res = db_query_params('SELECT 1 FROM effort_unit WHERE
unit_name = $1 AND unit_set_id = $2', array(htmlspecialchars($name),
$this->EffortUnitSet->GetID()));
+ $res = db_query_params('SELECT 1 FROM effort_unit WHERE
is_deleted <> 1 AND unit_name = $1 AND unit_set_id = $2',
array(htmlspecialchars($name), $this->EffortUnitSet->GetID()));
if (db_numrows($res) > 0) {
$this->setError(sprintf(_('Unit name %s already
exist'),$name));
return false;
@@ -140,7 +140,7 @@ class EffortUnit extends FFError {
if (db_numrows($res) > 0) {
$unit_position = db_result($res, 0,
'max_position') + 1;
} else {
- return 0;
+ $unit_position = 0;
}
}
$res = db_query_params('INSERT INTO effort_unit(unit_set_id,
unit_name, conversion_factor, to_unit, unit_position, is_base_unit,
created_date, created_by, modified_date, modified_by) VALUES($1, $2, $3, $4,
$5, $6, $7, $8, $9, $10)',
@@ -290,8 +290,8 @@ class EffortUnit extends FFError {
unit_set_id = $3
)
UPDATE
artifact_extra_field_data AS d
- SET field_data
= $4*CAST(SUBSTRING(field_data FROM \'#"%#"U%\' FOR \'#\') AS INTEGER) || \'U\'
|| $5
- FROM t
+ SET field_data
= $4*CAST(SUBSTRING(field_data FROM \'#"%#"U%\' FOR \'#\') AS INTEGER) || \'U\'
|| $5
+ FROM t
WHERE d.data_id
= t.data_id',
array(ARTIFACT_EXTRAFIELDTYPE_EFFORT,'%U'.$this->getID(),
$this->getEffortUnitSet()->getID(),
$this->getConversionFactor(),$this->getToUnit()));
if (!$res) {
@@ -314,7 +314,7 @@ class EffortUnit extends FFError {
$this->setError(_('An Unit name is required'));
return false;
}
- $res = db_query_params('SELECT 1 FROM effort_unit WHERE
unit_name = $1 AND unit_set_id = $2', array(htmlspecialchars($name),
$this->EffortUnitSet->GetID()));
+ $res = db_query_params('SELECT 1 FROM effort_unit WHERE
is_deleted <> 1 AND unit_name = $1 AND unit_id <> $2 AND unit_set_id = $3',
array(htmlspecialchars($name), $this->getID(), $this->EffortUnitSet->GetID()));
if (db_numrows($res) > 0) {
$this->setError(sprintf(_('Unit name %s already
exist'),$name));
return false;
@@ -404,7 +404,7 @@ class EffortUnit extends FFError {
} else {
$to_unit_id = 1;
}
- if (!$this->create($name, $conversion_factor, $to_unit_id,
$position, $is_base_unit)) {
- }
+ $id = $this->create($name, $conversion_factor, $to_unit_id,
$position, $is_base_unit);
+ return $id;
}
}
diff --git a/src/common/tracker/EffortUnitSet.class.php
b/src/common/tracker/EffortUnitSet.class.php
index 00d23ac..cf60fb3 100644
--- a/src/common/tracker/EffortUnitSet.class.php
+++ b/src/common/tracker/EffortUnitSet.class.php
@@ -126,7 +126,7 @@ class EffortUnitSet extends FFError {
return false;
}
if (db_numrows($res)>0) {
- $this->setError(sprintf(_('Effort Unit
Set already exist for tracker $s'),$this->ArtifactType->getName()));
+ $this->setError(sprintf(_('Effort Unit
Set already exist for tracker %s'),$this->ArtifactType->getName()));
db_rollback();
return false;
}
@@ -142,7 +142,7 @@ class EffortUnitSet extends FFError {
return false;
}
if (db_numrows($res)>0) {
- $this->setError(sprintf(_('Effort Unit
Set already exist for project $s'),$this->Group->getPublicName()));
+ $this->setError(sprintf(_('Effort Unit
Set already exist for project %s'),$this->Group->getPublicName()));
db_rollback();
return false;
}
@@ -173,11 +173,13 @@ class EffortUnitSet extends FFError {
}
function copy($from_unit_set){
+ db_begin();
$unit_set_id = $this->create();
$from_unit_factory = new EffortUnitFactory($from_unit_set);
$from_baseUnit = $from_unit_factory->getBaseUnit();
- //$from_baseUnit_id = $from_baseUnit->getID();
+
if (!$this->_recursive_copy($from_baseUnit)) {
+ db_rollback();
return false;
}
switch ($this->objectLevel) {
@@ -188,20 +190,57 @@ class EffortUnitSet extends FFError {
$this->ArtifactType->setEffortUnitSet($this->getID());
break;
}
+ db_commit();
return true;
}
function _recursive_copy($from_unit) {
+ db_begin();
$new_unit = new EffortUnit($this);
+ if (!$new_unit) {
+ $this->setError(_('Error coping Effort Unit').'
'.$from_unit->getName());
+ db_rollback();
+ return false;
+ }
$new_unit_id = $new_unit->copy($from_unit);
+ if (!$new_unit_id || $new_unit->isError()) {
+ $this->setError(_('Error coping Effort Unit').'
'.$from_unit->getName()._(':').' '.$new_unit->getErrorMessage());
+ db_rollback();
+ return false;
+ }
+ // Update artifacts data
+ $res = db_query_params('WITH t AS (
+ SELECT
data_id
+
FROM artifact_extra_field_data
+
INNER JOIN artifact_extra_field_list USING (extra_field_id)
+
INNER JOIN artifact_group_list USING (group_artifact_id)
+ WHERE
+
field_type = $1 AND
+
field_data like $2 AND
+
unit_set_id = $3
+ )
+ UPDATE
artifact_extra_field_data AS d
+ SET field_data
= CAST(SUBSTRING(field_data FROM \'#"%#"U%\' FOR \'#\') AS INTEGER) || \'U\' ||
$4
+ FROM t
+ WHERE d.data_id
= t.data_id',
+
array(ARTIFACT_EXTRAFIELDTYPE_EFFORT,'%U'.$from_unit->getID(),
$from_unit->getEffortUnitSet()->getID(), $new_unit_id));
+ if (!$res) {
+ $this->setError(_('Error coping Effort Unit')._(':
').db_error());
+ db_rollback();
+ return false;
+ }
$from_unit_set = $from_unit->getEffortUnitSet();
$from_unit_factory = new EffortUnitFactory($from_unit_set);
$units = $from_unit_factory->getUnits();
foreach ($units as $unit) {
if ($unit->getToUnit()==$from_unit->getID() &&
$unit->getID()!=$from_unit->getID()) {
- $this->_recursive_copy($unit);
+ if (!$this->_recursive_copy($unit)) {
+ db_rollback();
+ return false;
+ }
}
}
+ db_commit();
return true;
}
diff --git a/src/common/tracker/actions/effort_units.php
b/src/common/tracker/actions/effort_units.php
index 282cf2f..d4c8085 100644
--- a/src/common/tracker/actions/effort_units.php
+++ b/src/common/tracker/actions/effort_units.php
@@ -504,7 +504,7 @@ function postcopy_set(&$effortUnitSet) {
$object = $effortUnitSet->getObject();
$newEffortUnitSet = new EffortUnitSet($object);
if (!$newEffortUnitSet->copy($effortUnitSet)) {
- echo $HTML->error_msg('Error coping Effort Unit Set');
+ echo $HTML->error_msg(_('Error coping Effort Unit
Set')._(':').' '.$newEffortUnitSet->getErrorMessage());
return false;
}
if ($newEffortUnitSet->isError()) {
-----------------------------------------------------------------------
Summary of changes:
src/common/tracker/EffortUnit.class.php | 14 ++++-----
src/common/tracker/EffortUnitSet.class.php | 47 ++++++++++++++++++++++++++---
src/common/tracker/actions/effort_units.php | 2 +-
3 files changed, 51 insertions(+), 12 deletions(-)
hooks/post-receive
--
FusionForge
_______________________________________________
Fusionforge-commits mailing list
[email protected]
http://lists.fusionforge.org/cgi-bin/mailman/listinfo/fusionforge-commits