[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