[evolvis-commits] r18094: small-fixes pending merges:↵ Thorsten Glaser 2012-02-01 [#2400] PM unbreak CSV import with header lines

mirabilos at evolvis.org mirabilos at evolvis.org
Wed Feb 1 17:27:51 CET 2012


Author: mirabilos
Date: 2012-02-01 17:27:51 +0100 (Wed, 01 Feb 2012)
New Revision: 18094

Modified:
   trunk/gforge_base/evolvisforge-5.1/src/common/pm/ProjectTask.class.php
   trunk/gforge_base/evolvisforge-5.1/src/common/pm/import_utils.php
   trunk/gforge_base/evolvisforge-5.1/src/debian/changelog
   trunk/gforge_base/evolvisforge-5.1/src/www/pm/postuploadcsv.php
Log:
small-fixes pending merges:
  Thorsten Glaser 2012-02-01 [#2400] PM unbreak CSV import with header lines


Modified: trunk/gforge_base/evolvisforge-5.1/src/common/pm/ProjectTask.class.php
===================================================================
--- trunk/gforge_base/evolvisforge-5.1/src/common/pm/ProjectTask.class.php	2012-02-01 16:27:44 UTC (rev 18093)
+++ trunk/gforge_base/evolvisforge-5.1/src/common/pm/ProjectTask.class.php	2012-02-01 16:27:51 UTC (rev 18094)
@@ -405,6 +405,11 @@
 	 *	an id, for example an ID generated by MS Project, which needs to be restored later
 	 */
 	function setExternalID($id) {
+		if (!$id && $id !== 0) {
+			/* easy skip */
+			return;
+		}
+
 		$res = db_query_params ('UPDATE project_task_external_order SET external_id=$1
 			WHERE project_task_id=$2',
 					array ($id,

Modified: trunk/gforge_base/evolvisforge-5.1/src/common/pm/import_utils.php
===================================================================
--- trunk/gforge_base/evolvisforge-5.1/src/common/pm/import_utils.php	2012-02-01 16:27:44 UTC (rev 18093)
+++ trunk/gforge_base/evolvisforge-5.1/src/common/pm/import_utils.php	2012-02-01 16:27:51 UTC (rev 18094)
@@ -76,6 +76,7 @@
 		//
 		//  Create a linked list based on the msproj_id
 		//
+		$msprojid = array();
 		for ($i=0; $i<$count; $i++) {
 			$msprojid[$tasks[$i]['msproj_id']] =& $tasks[$i];
 			$resrc = $tasks[$i]['resources'];
@@ -173,8 +174,8 @@
 						}
 
 						if (!$pt->create(
-							addslashes($tasks[$i]['name']),
-							addslashes($tasks[$i]['notes']),
+							$tasks[$i]['name'],
+							$tasks[$i]['notes'],
 							$priority,
 							$hours,
 							strtotime($tasks[$i]['start_date']),
@@ -258,9 +259,10 @@
 							$category_id = $pt->getCategoryID();
 						}
 
+						$pdo = $pt->getDependentOn();
 						if (!$pt->update(
-							addslashes($tasks[$i]['name']),
-							addslashes($tasks[$i]['notes']),
+							$tasks[$i]['name'],
+							$tasks[$i]['notes'],
 							$priority,
 							$hours,
 							strtotime($tasks[$i]['start_date']),
@@ -269,7 +271,7 @@
 							$category_id,
 							$percent_complete,
 							$assignees,
-							$pt->getDependentOn(),
+							$pdo,
 							$pg->getID(),
 							$tasks[$i]['duration'],
 							$tasks[$i]['parent_id'])) {

Modified: trunk/gforge_base/evolvisforge-5.1/src/debian/changelog
===================================================================
--- trunk/gforge_base/evolvisforge-5.1/src/debian/changelog	2012-02-01 16:27:44 UTC (rev 18093)
+++ trunk/gforge_base/evolvisforge-5.1/src/debian/changelog	2012-02-01 16:27:51 UTC (rev 18094)
@@ -21,8 +21,9 @@
   * Tracker: allow changing "Allow non-logged-in postings" flag later
   * [#2569] fix another addslashes() remnant
   * [#2602] install missing evolvis-improvetasks.ini file
+  * [#2400] PM unbreak CSV import with header lines
 
- -- Thorsten Glaser <t.glaser at tarent.de>  Wed, 01 Feb 2012 15:00:50 +0100
+ -- Thorsten Glaser <t.glaser at tarent.de>  Wed, 01 Feb 2012 15:39:08 +0100
 
 fusionforge (5.1.1+evolvis41) unstable; urgency=low
 

Modified: trunk/gforge_base/evolvisforge-5.1/src/www/pm/postuploadcsv.php
===================================================================
--- trunk/gforge_base/evolvisforge-5.1/src/www/pm/postuploadcsv.php	2012-02-01 16:27:44 UTC (rev 18093)
+++ trunk/gforge_base/evolvisforge-5.1/src/www/pm/postuploadcsv.php	2012-02-01 16:27:51 UTC (rev 18094)
@@ -62,15 +62,48 @@
 	fseek($handle, 0);
 	
 	if ($headers) {
+		$hdrmap = array(
+			'project_task_id' => 'id',
+			'title' => 'name',
+			'external_task_id' => 'msproj_id',
+			'external_parent_id' => 'parent_msproj_id',
+		    );
+
 		// Headers are given in the file (first line).
 		$headers = array_flip(fgetcsv($handle, 4096, $sep));
 		while (($values = fgetcsv($handle, 4096, $sep)) !== false) {
 			$task = array();
-			foreach($headers as $name => $id) {
-				if ($name == 'project_task_id') $name = 'id';
-				if ($name == 'title') $name = 'name';
-				$task[$name] = $values[$id];
+			foreach ($headers as $name => $id) {
+				$task[util_ifsetor($hdrmap[$name], $name)] =
+				     $values[$id];
 			}
+
+			$task['resources'] = array();
+			for ($i = 1; $i <= 5; ++$i) {
+				$field = "resource" . $i . "_unixname";
+				if (util_ifsetor($task[$field])) {
+					$task['resources'][] = array(
+						'user_name' => $task[$field],
+					    );
+				}
+			}
+
+			$task['dependenton'] = array();
+			for ($i = 1; $i <= 5; ++$i) {
+				$field = "dependenton" . $i . "_";
+				$fptid = $field . "project_task_id";
+				$fetid = $field . "external_task_id";
+				$flink = $field . "linktype";
+				if (util_ifsetor($task[$fptid])) {
+					$task['dependenton'][] = array(
+						'task_id' => $task[$fptid],
+						'msproj_id' => $task[$fetid],
+						'task_name' => '',
+						'link_type' => $task[$flink],
+					    );
+				}
+			}
+
 			$tasks[] = $task;
 		}
 	} else {



More information about the evolvis-commits mailing list