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 c94004b0dd15c825a18c81b4691a7047aae95123 (commit)
from 2acd58ca729368012f2dd051e298237a95250ccd (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=c94004b0dd15c825a18c81b4691a7047aae95123
commit c94004b0dd15c825a18c81b4691a7047aae95123
Author: Franck Villaume <[email protected]>
Date: Sun Sep 18 18:14:40 2016 +0200
template project: clone tracker, support workflow
diff --git a/src/common/include/Group.class.php
b/src/common/include/Group.class.php
index b9b9a27..d858827 100644
--- a/src/common/include/Group.class.php
+++ b/src/common/include/Group.class.php
@@ -2676,7 +2676,7 @@ class Group extends FFError {
foreach ($oldatf->getArtifactTypes() as
$o) {
$t =
artifactType_get_object($id_mappings['tracker'][$o->getID()]);
$id_mappings['tracker'][$o->getID()] = $t->getID();
-
$t->cloneFieldsFrom($o->getID(), $o->Group->getID());
+
$t->cloneFieldsFrom($o->getID(), $o->Group->getID(), $id_mappings);
}
}
}
diff --git a/src/common/tracker/ArtifactType.class.php
b/src/common/tracker/ArtifactType.class.php
index 4069a65..b8be8db 100644
--- a/src/common/tracker/ArtifactType.class.php
+++ b/src/common/tracker/ArtifactType.class.php
@@ -655,9 +655,10 @@ class ArtifactType extends FFError {
*
* @param int $clone_tracker_id id of the cloned tracker
* @param int $group_id id of the project
template to use.
+ * @param array $id_mappings array mapping between
template objects and new project objects
* @return boolean true/false on success
*/
- function cloneFieldsFrom($clone_tracker_id, $group_id = null) {
+ function cloneFieldsFrom($clone_tracker_id, $group_id = null,
$id_mappings = array()) {
if ($group_id) {
$g = group_get_object($group_id);
} else {
@@ -733,9 +734,9 @@ class ArtifactType extends FFError {
}
}
- foreach ($newEFIds as $oldEFId=>$newEFId) {
+ foreach ($newEFIds as $oldEFId => $newEFId) {
$oef = new ArtifactExtraField($at, $oldEFId);
- $nef = new ArtifactExtraField($this,$newEFId);
+ $nef = new ArtifactExtraField($this, $newEFId);
// update Dependency between extrafield
if ($oef->getParent() != 100) {
if (!$nef->update($nef->getName(),
$nef->getAttribute1(), $nef->getAttribute2(), $nef->isRequired(),
$nef->getAlias(), $nef->getShow100(), $nef->getShow100label(),
$nef->getDescription(), $nef->getPattern(), $newEFIds[$oef->getParent()],
$nef->isAutoAssign(), $nef->is_hidden_on_submit(), $nef->is_disabled())) {
@@ -744,7 +745,7 @@ class ArtifactType extends FFError {
return false;
}
- foreach ($newEFElIds[$oldEFId] as
$oldEFElId=>$newEFElId) {
+ foreach ($newEFElIds[$oldEFId] as $oldEFElId =>
$newEFElId) {
$oel = new
ArtifactExtraFieldElement($oef,$oldEFElId);
if ($oel->isError()) {
db_rollback();
@@ -782,13 +783,35 @@ class ArtifactType extends FFError {
$naivs[] = $newEFElIds[$oldEFId][$oaiv];
}
$natw->saveNextNodes('100', $naivs);
- //TODO implement the rest of the workflow...
+
+ //implement role based of the workflow
+ if (sizeof($id_mappings) &&
isset($id_mappings['role'])) {
+ $oefelements =
$at->getExtraFieldElements($oldEFId);
+ foreach ($oefelements as $oefelement) {
+ // retrieve the allowed values
for the old element
+ $onexts =
$oatw->getNextNodes($oefelement['element_id']);
+ $naivs = array();
+ foreach ($onexts as $onext) {
+ $naivs[] =
$newEFElIds[$oldEFId][$onext];
+ //retrieve the allowed
old roles from old element to old next value
+ $oars =
$oatw->getAllowedRoles($oefelement['element_id'], $onext);
+ //map old roles into
new roles id
+ $nar = array();
+ foreach ($oars as $oar)
{
+ if
(array_key_exists($oar, $id_mappings['role'])) {
+ $nar[]
= $id_mappings['role'][$oar];
+ }
+ }
+
$natw->saveAllowedRoles($newEFElIds[$oldEFId][$oefelement['element_id']],
$newEFElIds[$oldEFId][$onext], $nar);
+ }
+
$natw->saveNextNodes($newEFElIds[$oldEFId][$oefelement['element_id']], $naivs);
+ }
+ }
}
}
db_commit();
return true;
-
}
/**
diff --git a/src/common/tracker/ArtifactWorkflow.class.php
b/src/common/tracker/ArtifactWorkflow.class.php
index d4fced5..0a26d3f 100644
--- a/src/common/tracker/ArtifactWorkflow.class.php
+++ b/src/common/tracker/ArtifactWorkflow.class.php
@@ -102,6 +102,8 @@ class ArtifactWorkflow extends FFError {
* When a new element is created, add all the new events in the
workflow.
*/
function addNode($element_id) {
+ // reset the cache!
+ $this->ath->fetchData($this->ath->getID());
$elearray = $this->ath->getExtraFieldElements($this->field_id);
foreach ($elearray as $e) {
if ($element_id !== $e['element_id']) {
-----------------------------------------------------------------------
Summary of changes:
src/common/include/Group.class.php | 2 +-
src/common/tracker/ArtifactType.class.php | 35 ++++++++++++++++++++++-----
src/common/tracker/ArtifactWorkflow.class.php | 2 ++
3 files changed, 32 insertions(+), 7 deletions(-)
hooks/post-receive
--
FusionForge
_______________________________________________
Fusionforge-commits mailing list
[email protected]
http://lists.fusionforge.org/cgi-bin/mailman/listinfo/fusionforge-commits