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  1f5534ca30bf70ea66eddfa062c8b788ed6051de (commit)
       via  62bdc5e05f3907274be20bac949bd172f13b3d34 (commit)
      from  670d68828a0eee1931dc5ac50b1aef580e70fd8d (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=1f5534ca30bf70ea66eddfa062c8b788ed6051de

commit 1f5534ca30bf70ea66eddfa062c8b788ed6051de
Merge: 670d688 62bdc5e
Author: Franck Villaume <[email protected]>
Date:   Fri Jan 20 18:14:31 2017 +0100

    Merge remote-tracking branch 'bredt/master'


https://scm.fusionforge.org/anonscm/gitweb/?p=fusionforge/fusionforge.git;a=commitdiff;h=62bdc5e05f3907274be20bac949bd172f13b3d34

commit 62bdc5e05f3907274be20bac949bd172f13b3d34
Author: Stéphane-Eymeric Bredthauer <[email protected]>
Date:   Fri Jan 20 14:29:54 2017 +0100

    Tracker: fix update efforts after unit definition modification

diff --git a/src/common/tracker/EffortUnit.class.php 
b/src/common/tracker/EffortUnit.class.php
index 007d301..3556a4a 100644
--- a/src/common/tracker/EffortUnit.class.php
+++ b/src/common/tracker/EffortUnit.class.php
@@ -319,7 +319,6 @@ class EffortUnit extends FFError {
                        $this->setError(sprintf(_('Unit name %s already 
exist'),$name));
                        return false;
                }
-               $old_conversion_factor = $this->getConversionFactor();
                db_begin();
                if(array_key_exists('user', $importData)){
                        $user = $importData['user'];
@@ -331,16 +330,24 @@ class EffortUnit extends FFError {
                } else {
                        $time = time();
                }
-
+               // get conversion factor for base unit before update
+               $old_factor = $this->getConversionFactorForBaseUnit();
+               // get depenfing units before update
+               $units = array_merge(array($this), 
$this->getUnitsDependingOn());
                $res = db_query_params('UPDATE effort_unit SET unit_name=$1, 
conversion_factor=$2, to_unit=$3, modified_date=$4, modified_by=$5 WHERE 
unit_id=$6',
                                array(htmlspecialchars($name), 
$conversion_factor, $to_unit, $time, $user, $this->getID()));
                if (!$res || db_affected_rows($res) < 1) {
-                       $this->setError(_('Error')._(':').' '._('Cannot update 
Effort Unit1')._(':').' '.db_error());
+                       $this->setError(_('Error')._(':').' '._('Cannot update 
Effort Unit')._(':').' '.db_error());
+                       db_rollback();
+                       return false;
+               }
+               if (!$this->fetchData($this->getID())) {
                        db_rollback();
                        return false;
                }
-               if ($old_conversion_factor != $conversion_factor) {
-                       $units = array_merge(array($this), 
$this->getUnitsDependingOn());
+               // get conversion factor for base unit after update
+               $new_factor = $this->getConversionFactorForBaseUnit();
+               if ($old_factor != $new_factor) {
                        foreach ($units as $unit) {
                                $res = db_query_params('WITH t AS (
                                                                                
SELECT data_id
@@ -356,18 +363,36 @@ class EffortUnit extends FFError {
                                                                        SET 
field_data = (CAST(SUBSTRING(field_data FROM \'#"%#"U%\' FOR \'#\') AS 
INTEGER)*$4)/$5 || \'U\' || $6
                                                                        FROM t
                                                                        WHERE 
d.data_id = t.data_id',
-                                               
array(ARTIFACT_EXTRAFIELDTYPE_EFFORT,'%U'.$unit->getID(), 
$this->EffortUnitSet->getID(), $conversion_factor, $old_conversion_factor, 
$unit->getID()));
+                                               
array(ARTIFACT_EXTRAFIELDTYPE_EFFORT,'%U'.$unit->getID(), 
$this->EffortUnitSet->getID(), $new_factor, $old_factor, $unit->getID()));
                                if (!$res) {
-                                       $this->setError(_('Error')._(':').' 
'._('Cannot update Effort Unit2')._(':').' '.db_error());
+                                       $this->setError(_('Error')._(':').' 
'._('Cannot update Effort Unit (artifacts data update)')._(':').' '.db_error());
                                        db_rollback();
+                                       $this->fetchData($this->getID());
+                                       return false;
+                               }
+                               $res = db_query_params('WITH t AS (
+                                                                               
SELECT default_id
+                                                                               
        FROM artifact_extra_field_default
+                                                                               
        INNER JOIN artifact_extra_field_list USING (extra_field_id)
+                                                                               
        INNER JOIN artifact_group_list USING (group_artifact_id)
+                                                                               
WHERE
+                                                                               
        field_type = $1 AND
+                                                                               
        default_value like $2 AND
+                                                                               
        unit_set_id = $3
+                                                                               
)
+                                                                       UPDATE 
artifact_extra_field_default AS d
+                                                                       SET 
default_value = (CAST(SUBSTRING(default_value FROM \'#"%#"U%\' FOR \'#\') AS 
INTEGER)*$4)/$5 || \'U\' || $6
+                                                                       FROM t
+                                                                       WHERE 
d.default_id = t.default_id',
+                                               
array(ARTIFACT_EXTRAFIELDTYPE_EFFORT,'%U'.$unit->getID(), 
$this->EffortUnitSet->getID(), $new_factor, $old_factor, $unit->getID()));
+                               if (!$res) {
+                                       $this->setError(_('Error')._(':').' 
'._('Cannot update Effort Unit (default value update)')._(':').' '.db_error());
+                                       db_rollback();
+                                       $this->fetchData($this->getID());
                                        return false;
                                }
                        }
                }
-               if (!$this->fetchData($this->getID())) {
-                       db_rollback();
-                       return false;
-               }
                db_commit();
                return true;
        }

-----------------------------------------------------------------------

Summary of changes:
 src/common/tracker/EffortUnit.class.php | 47 +++++++++++++++++++++++++--------
 1 file changed, 36 insertions(+), 11 deletions(-)


hooks/post-receive
-- 
FusionForge

_______________________________________________
Fusionforge-commits mailing list
[email protected]
http://lists.fusionforge.org/cgi-bin/mailman/listinfo/fusionforge-commits

Reply via email to