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  724c4f9785d7749bd23decc18308ee87dd033d5b (commit)
       via  320333e95ba85337e99664af8bc3581ee5d9d803 (commit)
      from  f5df0edb16a0cfe6ed8b2dd2370dd60b31cedeee (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=724c4f9785d7749bd23decc18308ee87dd033d5b

commit 724c4f9785d7749bd23decc18308ee87dd033d5b
Merge: f5df0ed 320333e
Author: Franck Villaume <franck.villa...@trivialdev.com>
Date:   Wed Oct 12 20:26:35 2016 +0200

    Merge remote-tracking branch 'bredt/master'


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

commit 320333e95ba85337e99664af8bc3581ee5d9d803
Author: Stéphane-Eymeric Bredthauer <sebredtha...@gmail.com>
Date:   Wed Oct 12 17:15:20 2016 +0200

    Tracker: Import improvement

diff --git a/src/common/tracker/Artifact.class.php 
b/src/common/tracker/Artifact.class.php
index 130ab47..990c4f6 100644
--- a/src/common/tracker/Artifact.class.php
+++ b/src/common/tracker/Artifact.class.php
@@ -181,7 +181,7 @@ class Artifact extends FFError {
         * @param       int     $priority       The artifacts priority.
         * @param       array   $extra_fields   Array of extra fields like: 
array(15=>'foobar',22=>'1');
         * @param       array   $importData     Array of data to change 
submitter and time of submit like:
-        *                                              array('user' => 127, 
'time' => 1234556789)
+        *                                              array('user' => 127, 
'time' => 1234556789, 'nopermcheck' => true, 'nonotice' => true)
         * @return      bool    id on success / false on failure.
         */
        function create($summary, $details, $assigned_to=100, $priority=3, 
$extra_fields=array(), $importData = array()) {
@@ -189,6 +189,12 @@ class Artifact extends FFError {
                //      make sure this person has permission to add artifacts
                //
 
+               if (isset($importData['nonotice']) && $importData['nonotice']) {
+                       $sendNotice = false;
+               } else {
+                       $sendNotice = true;
+               }
+
                //
                //      get the user_id
                //
@@ -282,7 +288,9 @@ class Artifact extends FFError {
                        //
                        //      now send an email if appropriate
                        //
-                       $this->mailFollowupEx(0, 1);
+                       if ($sendNotice) {
+                               $this->mailFollowupEx(0, 1);
+                       }
                        db_commit();
 
                        return $artifact_id;
@@ -759,7 +767,7 @@ class Artifact extends FFError {
         * @param       bool    $by             Email $string address of 
message creator.
         * @param       bool    $send_followup  Whether $bool to email out a 
followup.
         * @param       array   $importData     Array of data to change 
submitter and time of submit like:
-        *                                              array('user' => 127, 
'time' => 1234556789)
+        *                                              array('user' => 127, 
'time' => 1234556789, 'nopermcheck' => true, 'nonotice' => true)
         *
         * @return      bool    success.
         */
@@ -773,6 +781,12 @@ class Artifact extends FFError {
                        return false;
                }
 
+               if (isset($importData['nonotice']) && $importData['nonotice']) {
+                       $sendNotice = false;
+               } else {
+                       $sendNotice = true;
+               }
+
                if(array_key_exists('user', $importData)){
                                $user_id = $importData['user'];
                                $user = user_get_object($user_id);
@@ -814,7 +828,7 @@ class Artifact extends FFError {
 
                $this->updateLastModifiedDate($importData);
 
-               if ($send_followup) {
+               if ($send_followup && $sendNotice) {
                        $this->mailFollowupEx($time, 2, false);
                }
                return $res;
@@ -826,7 +840,7 @@ class Artifact extends FFError {
         * @param       string  $field_name     The name of the field in the 
database being modified.
         * @param       string  $old_value      The former value of this field.
         * @param       array   $importData     Array of data to change 
submitter and time of submit like:
-        *                                              array('user' => 127, 
'time' => 1234556789)
+        *                                              array('user' => 127, 
'time' => 1234556789, 'nopermcheck' => true, 'nonotice' => true)
         * @access      private
         * @return      boolean success.
         */
@@ -898,7 +912,7 @@ class Artifact extends FFError {
         * @param       array   $extra_fields           Array of extra fields 
like: array(15=>'foobar',22=>'1');
         * @param       string  $description            The description.
         * @param       array   $importData     Array of data to change 
submitter and time of submit like:
-        *                                              array('user' => 127, 
'time' => 1234556789)
+        *                                              array('user' => 127, 
'time' => 1234556789, 'nopermcheck' => true, 'nonotice' => true)
         * @return      boolean success.
         */
        function update($priority,$status_id,
@@ -908,15 +922,21 @@ class Artifact extends FFError {
                if (array_key_exists('user', $importData)){
                        $user = $importData['user'];
                }
-               if (empty($importData)) {
-                       $isAnImport = false;
+               if (isset($importData['nopermcheck']) && 
$importData['nopermcheck']) {
+                       $permCheck = false;
+               } else {
+                       $permCheck = true;
+               }
+
+               if (isset($importData['nonotice']) && $importData['nonotice']) {
+                       $sendNotice = false;
                } else {
-                       $isAnImport = true;
+                       $sendNotice = true;
                }
                /*
                        Field-level permission checking
                */
-               if (!$isAnImport) {
+               if ($permCheck) {
                        if (!forge_check_perm ('tracker', 
$this->ArtifactType->getID(), 'manager')) {
                                // Non-managers cannot modify these fields
                                $priority=$this->getPriority();
@@ -980,7 +1000,7 @@ class Artifact extends FFError {
                }
 
                // Check that assigned_to is a tech for the tracker
-               if ($assigned_to != 100 && !$isAnImport) {
+               if ($assigned_to != 100 && $permCheck) {
                        if (!forge_check_perm_for_user ($assigned_to, 
'tracker', $this->ArtifactType->getID(), 'tech')) {
                                $this->setError(_("Invalid assigned person: 
must be a technician"));
                                return false;
@@ -1010,7 +1030,7 @@ class Artifact extends FFError {
                                return false;
                        }
                        //      do they have perms for new ArtifactType?
-                       if (!forge_check_perm ('tracker', 
$newArtifactType->getID(), 'manager') && !$isAnImport) {
+                       if (!forge_check_perm ('tracker', 
$newArtifactType->getID(), 'manager') && $permCheck) {
                                $this->setPermissionDeniedError();
                                db_rollback();
                                return false;
@@ -1097,7 +1117,7 @@ class Artifact extends FFError {
                        }
 
                        // Check that assigned_to is a tech in the new tracker
-                       if ($assigned_to != 100 && !$isAnImport) {
+                       if ($assigned_to != 100 && $permCheck) {
                                if (!forge_check_perm ('tracker', 
$newArtifactType->getID(), 'tech')) {
                                        $assigned_to = 100;
                                }
@@ -1224,7 +1244,7 @@ class Artifact extends FFError {
                }
 
                if ($update || $send_message){
-                       if (!empty($changes)) {
+                       if (!empty($changes) && $sendNotice) {
                                // Send the email with changes
                                $this->mailFollowupEx($time, 2, false, 
$changes);
                        }
@@ -1307,10 +1327,10 @@ class Artifact extends FFError {
                                skip it and continue to next item
 
 */
-               if (empty($importData)) {
-                       $isAnImport = false;
+               if (isset($importData['nopermcheck']) && 
$importData['nopermcheck']) {
+                       $permCheck = false;
                } else {
-                       $isAnImport = true;
+                       $permCheck = true;
                }
                $update = false;
 
@@ -1326,7 +1346,7 @@ class Artifact extends FFError {
 
                // If there is a status field, then check against the workflow.
                // Unless if we change type.
-               if ((!isset($changes['Type']) || !$changes['Type']) && 
!$isAnImport) {
+               if ((!isset($changes['Type']) || !$changes['Type']) && 
$permCheck) {
                        for ($i=0; $i<count($efk); $i++) {
                                $efid=$efk[$i];
                                $type=$ef[$efid]['field_type'];
@@ -1364,7 +1384,7 @@ class Artifact extends FFError {
                        $type=$ef[$efid]['field_type'];
 
                        // check required fields
-                       if (($ef[$efid]['is_required'] || in_array($efid, $rf)) 
&& !$isAnImport) {
+                       if (($ef[$efid]['is_required'] || in_array($efid, $rf)) 
&& $permCheck) {
                                if (!array_key_exists($efid, $extra_fields)) {
                                        if ($type == 
ARTIFACT_EXTRAFIELDTYPE_STATUS) {
                                                $this->setError(_('Status 
Custom Field Must Be Set'));
@@ -1404,7 +1424,7 @@ class Artifact extends FFError {
                                        $type == 
ARTIFACT_EXTRAFIELDTYPE_MULTISELECT ||
                                        $type == ARTIFACT_EXTRAFIELDTYPE_RADIO 
||
                                        $type == 
ARTIFACT_EXTRAFIELDTYPE_CHECKBOX)
-                                       && !$isAnImport) {
+                                       && $permCheck) {
                                $allowed = false;
                                if (!is_null($ef[$efid]['parent']) && 
!empty($ef[$efid]['parent']) && $ef[$efid]['parent']!='100') {
                                        $aefParentId = $ef[$efid]['parent'];
@@ -1442,7 +1462,7 @@ class Artifact extends FFError {
                                        !empty($ef[$efid]['pattern']) &&
                                        !empty($extra_fields[$efid]) &&
                                        
!preg_match('/'.$ef[$efid]['pattern'].'/', $extra_fields[$efid]) &&
-                                       !$isAnImport) {
+                                       $permCheck) {
                                $this->setError(sprintf(_("Field %s doesn't 
match the pattern."), $ef[$efid]['field_name']));
                                return false;
                        }
@@ -1493,7 +1513,7 @@ class Artifact extends FFError {
                                                        
$changes["extra_fields"][$efid] = 1;
                                                }
 
-                                               $this->addHistory($field_name, 
$this->ArtifactType->getElementName(array_reverse($old_values)));
+                                               $this->addHistory($field_name, 
$this->ArtifactType->getElementName(array_reverse($old_values)),$importData);
                                                $update = true;
 
                                                db_query_params ('DELETE FROM 
artifact_extra_field_data WHERE   artifact_id=$1 AND extra_field_id=$2',
@@ -1517,9 +1537,9 @@ class Artifact extends FFError {
 
                                        // Adding history with previous value.
                                        if (($type == 
ARTIFACT_EXTRAFIELDTYPE_SELECT) || ($type == ARTIFACT_EXTRAFIELDTYPE_RADIO) || 
($type == ARTIFACT_EXTRAFIELDTYPE_STATUS)) {
-                                               
$this->addHistory($field_name,$this->ArtifactType->getElementName(db_result($resd,0,'field_data')));
+                                               
$this->addHistory($field_name,$this->ArtifactType->getElementName(db_result($resd,0,'field_data')),$importData);
                                        } else {
-                                               $this->addHistory($field_name, 
db_result($resd,0,'field_data'));
+                                               $this->addHistory($field_name, 
db_result($resd,0,'field_data'),$importData);
                                        }
                                        $update = true;
                                }

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

Summary of changes:
 src/common/tracker/Artifact.class.php | 68 ++++++++++++++++++++++-------------
 1 file changed, 44 insertions(+), 24 deletions(-)


hooks/post-receive
-- 
FusionForge

_______________________________________________
Fusionforge-commits mailing list
Fusionforge-commits@lists.fusionforge.org
http://lists.fusionforge.org/cgi-bin/mailman/listinfo/fusionforge-commits

Reply via email to