Skip to content

Commit 128bac3

Browse files
committed
#3 : Reader GanttProject
1 parent 7b5955c commit 128bac3

File tree

15 files changed

+724
-48
lines changed

15 files changed

+724
-48
lines changed

.gitignore

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -6,3 +6,4 @@ unitTests/codeCoverage
66
/build/coverage
77
/build/logs
88
vendor
9+
/samples/results

CHANGELOG.md

Lines changed: 3 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -1,11 +1,12 @@
11
# Changelog
22

3-
## 0.1.0 - Not Released
3+
## 0.1.0 - 2014-08-08
44

55
### Features
6-
- GanttProject Writer - @Progi1984 GH-1
76
- Support of Composer - @Progi1984 GH-7 GH-9
87
- Support of namespaces - @Progi1984 GH-12
8+
- GanttProject Writer - @Progi1984 GH-1
9+
- GanttProject Reader - @Progi1984 GH-3
910

1011
### Bugfix
1112

samples/.gitignore

Lines changed: 0 additions & 2 deletions
This file was deleted.

samples/Sample_02_ReadGanttProject.php

Lines changed: 25 additions & 28 deletions
Original file line numberDiff line numberDiff line change
@@ -8,62 +8,59 @@
88
// Create new PHPProject object
99
echo date('H:i:s') . ' Create new PHPProject object'.EOL;
1010
$objReader = IOFactory::createReader('GanttProject');
11-
$objPHPProject = $objReader->load('02file.gan');
11+
$objPHPProject = $objReader->load(__DIR__ .DIRECTORY_SEPARATOR.'resources'.DIRECTORY_SEPARATOR.'Sample_02.gan');
1212

1313
// Set properties
14-
echo date('H:i:s') . ' Set properties'.EOL;
15-
echo 'Creator >'.$objPHPProject->getProperties()->getCreator().EOL;
16-
echo 'LastModifiedBy >'.$objPHPProject->getProperties()->getLastModifiedBy().EOL;
17-
echo 'Title >'.$objPHPProject->getProperties()->getTitle().EOL;
18-
echo 'Subject >'.$objPHPProject->getProperties()->getSubject().EOL;
19-
echo 'Description >'.$objPHPProject->getProperties()->getDescription().EOL;
14+
echo date('H:i:s') . ' Get properties'.EOL;
15+
echo 'Creator > '.$objPHPProject->getProperties()->getCreator().EOL;
16+
echo 'LastModifiedBy > '.$objPHPProject->getProperties()->getLastModifiedBy().EOL;
17+
echo 'Title > '.$objPHPProject->getProperties()->getTitle().EOL;
18+
echo 'Subject > '.$objPHPProject->getProperties()->getSubject().EOL;
19+
echo 'Description > '.$objPHPProject->getProperties()->getDescription().EOL;
2020
echo EOL;
2121

2222
// Add some data
2323
echo date('H:i:s') . ' Get some data'.EOL;
24-
echo 'StartDate >'.$objPHPProject->getInformations()->getStartDate().EOL;
25-
echo 'EndDate >'.$objPHPProject->getInformations()->getEndDate().EOL;
24+
echo 'StartDate > '.$objPHPProject->getInformations()->getStartDate().EOL;
25+
echo 'EndDate > '.$objPHPProject->getInformations()->getEndDate().EOL;
2626
echo EOL;
2727

2828
// Ressources
2929
echo date('H:i:s') . ' Get ressources'.EOL;
3030
$oResources = $objPHPProject->getAllResources();
3131
foreach ($oResources as $item){
32-
echo 'Resource :'.$item->getTitle().EOL;
32+
echo 'Resource : '.$item->getTitle().EOL;
3333
}
3434
echo EOL;
3535

3636
// Tasks
3737
echo date('H:i:s') . ' Get tasks'.EOL;
3838
$oTasks = $objPHPProject->getAllTasks();
3939
foreach ($oTasks as $item){
40-
echo 'Task :'.$item->getName().EOL;
41-
echo ' >> Duration :'.$item->getDuration().EOL;
42-
echo ' >> StartDate :'.$item->getStartDate().EOL;
43-
echo ' >> EndDate :'.$item->getEndDate().EOL;
44-
echo ' >> Progress :'.$item->getProgress().EOL;
45-
echo ' >> Resources :'.EOL;
40+
echo 'Task : '.$item->getName().EOL;
41+
echo ' >> Duration : '.$item->getDuration().EOL;
42+
echo ' >> StartDate : '.date('Y-m-d', $item->getStartDate()).EOL;
43+
echo ' >> Progress : '.$item->getProgress().EOL;
44+
echo ' >> Resources : '.EOL;
4645
$oTaskResources = $item->getResources();
4746
if(!empty($oTaskResources)){
4847
foreach ($oTaskResources as $itemRes){
49-
echo ' >>>> Resource :'.$objPHPProject->getResource($itemRes)->getTitle().EOL;
48+
echo ' >>>> Resource : '.$objPHPProject->getResource($itemRes)->getTitle().EOL;
5049
}
5150
}
5251

53-
echo ' >> SubTasks :'.EOL;
54-
$oSubTasks = $item->getTasks();
55-
if(!empty($oSubTasks)){
56-
foreach ($oSubTasks as $itemSub){
57-
echo ' >>>> Task :'.$itemSub->getName().EOL;
58-
echo ' >>>>>> Duration :'.$itemSub->getDuration().EOL;
59-
echo ' >>>>>> StartDate :'.$itemSub->getStartDate().EOL;
60-
echo ' >>>>>> EndDate :'.$itemSub->getEndDate().EOL;
61-
echo ' >>>>>> Progress :'.$itemSub->getProgress().EOL;
62-
echo ' >>>>>> Resources :'.EOL;
52+
echo ' >> SubTasks : '.EOL;
53+
if($item->getTaskCount() > 0){
54+
foreach ($item->getTasks() as $itemSub){
55+
echo ' >>>> Task : '.$itemSub->getName().EOL;
56+
echo ' >>>>>> Duration : '.$itemSub->getDuration().EOL;
57+
echo ' >>>>>> StartDate : '.date('Y-m-d', $itemSub->getStartDate()).EOL;
58+
echo ' >>>>>> Progress : '.$itemSub->getProgress().EOL;
59+
echo ' >>>>>> Resources : '.EOL;
6360
$oTaskResources = $itemSub->getResources();
6461
if(!empty($oTaskResources)){
6562
foreach ($oTaskResources as $itemRes){
66-
echo ' >>>>>>>> Resource :'.$objPHPProject->getResource($itemRes)->getTitle().EOL;
63+
echo ' >>>>>>>> Resource : '.$objPHPProject->getResource($itemRes)->getTitle().EOL;
6764
}
6865
}
6966
}

samples/Sample_Header.php

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -56,7 +56,7 @@ function write($phpPowerPoint, $filename, $writers)
5656
$result .= date('H:i:s') . " Write to {$writer} format";
5757
if (!is_null($extension)) {
5858
$xmlWriter = IOFactory::createWriter($phpPowerPoint, $writer);
59-
$xmlWriter->save(__DIR__ . "/{$filename}.{$extension}");
59+
$xmlWriter->save(__DIR__ . DIRECTORY_SEPARATOR."{$filename}.{$extension}");
6060
rename(__DIR__ . "/{$filename}.{$extension}", __DIR__ . "/results/{$filename}.{$extension}");
6161
} else {
6262
$result .= ' ... NOT DONE!';

samples/resources/Sample_02.gan

Lines changed: 58 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,58 @@
1+
<?xml version="1.0" encoding="UTF-8"?>
2+
<project name="Untitled Gantt Project" company="" webLink="http://" view-date="2010-06-26" view-index="0" gantt-divider-location="414" resource-divider-location="300" version="2.0">
3+
<description/>
4+
<view zooming-state="default:2" id="gantt-chart"/>
5+
<view id="resource-table">
6+
<field id="0" name="Name" width="55" order="0"/>
7+
<field id="1" name="Default role" width="44" order="1"/>
8+
</view>
9+
<!-- -->
10+
<calendars>
11+
<day-types>
12+
<day-type id="0"/>
13+
<day-type id="1"/>
14+
<calendar id="1" name="default">
15+
<default-week sun="1" mon="0" tue="0" wed="0" thu="0" fri="0" sat="1"/>
16+
<overriden-day-types/>
17+
<days/>
18+
</calendar>
19+
</day-types>
20+
</calendars>
21+
<tasks color="#8cb6ce">
22+
<taskproperties>
23+
<taskproperty id="tpd0" name="type" type="default" valuetype="icon"/>
24+
<taskproperty id="tpd1" name="priority" type="default" valuetype="icon"/>
25+
<taskproperty id="tpd2" name="info" type="default" valuetype="icon"/>
26+
<taskproperty id="tpd3" name="name" type="default" valuetype="text"/>
27+
<taskproperty id="tpd4" name="begindate" type="default" valuetype="date"/>
28+
<taskproperty id="tpd5" name="enddate" type="default" valuetype="date"/>
29+
<taskproperty id="tpd6" name="duration" type="default" valuetype="int"/>
30+
<taskproperty id="tpd7" name="completion" type="default" valuetype="int"/>
31+
<taskproperty id="tpd8" name="coordinator" type="default" valuetype="text"/>
32+
<taskproperty id="tpd9" name="predecessorsr" type="default" valuetype="text"/>
33+
</taskproperties>
34+
<task id="2" name="cbednarek" color="#8cb6ce" meeting="false" start="2010-06-29" duration="19" complete="0" priority="1" expand="true">
35+
<task id="0" name="Projet 1" color="#8cb6ce" meeting="false" start="2010-06-29" duration="10" complete="0" priority="1" expand="true"/>
36+
<task id="1" name="Projet 2" color="#8cb6ce" meeting="false" start="2010-07-15" duration="7" complete="0" priority="1" expand="true"/>
37+
</task>
38+
<task id="3" name="jpreira" color="#8cb6ce" meeting="false" start="2010-07-12" duration="6" complete="0" priority="1" expand="true">
39+
<task id="4" name="Projet 3" color="#8cb6ce" meeting="false" start="2010-07-12" duration="6" complete="0" priority="1" expand="true"/>
40+
</task>
41+
</tasks>
42+
<resources>
43+
<resource id="0" name="cbednarek" function="Default:0" contacts="" phone=""/>
44+
</resources>
45+
<allocations>
46+
<allocation task-id="0" resource-id="0" function="Default:0" responsible="true" load="50.0"/>
47+
<allocation task-id="1" resource-id="0" function="Default:0" responsible="true" load="100.0"/>
48+
</allocations>
49+
<vacations/>
50+
<taskdisplaycolumns>
51+
<displaycolumn property-id="tpd3" order="0" width="107"/>
52+
<displaycolumn property-id="tpd4" order="1" width="59"/>
53+
<displaycolumn property-id="tpd5" order="2" width="55"/>
54+
<displaycolumn property-id="tpd6" order="3" width="54"/>
55+
</taskdisplaycolumns>
56+
<previous/>
57+
<roles roleset-name="Default"/>
58+
</project>

src/PhpProject/PhpProject.php

Lines changed: 42 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -194,6 +194,21 @@ public function getResource($pIndex = 0)
194194
}
195195
}
196196

197+
/**
198+
* Get resource from index
199+
*
200+
* @return Resource|null
201+
*/
202+
public function getResourceFromIndex($pIndex)
203+
{
204+
foreach ($this->resourceCollection as $oResource){
205+
if($oResource->getIndex() == $pIndex) {
206+
return $oResource;
207+
}
208+
}
209+
return null;
210+
}
211+
197212
//===============================================
198213
// Tasks
199214
//===============================================
@@ -260,6 +275,33 @@ public function getTask($pIndex = 0)
260275
return $this->taskCollection[$pIndex];
261276
}
262277
}
278+
279+
/**
280+
* Get task from index
281+
*
282+
* @return Task|null
283+
*/
284+
public function getTaskFromIndex($pIndex, Task $oTaskParent = null)
285+
{
286+
if(is_null($oTaskParent)){
287+
$arrayTask = $this->taskCollection;
288+
} else {
289+
$arrayTask = $oTaskParent->getTasks();
290+
}
291+
foreach ($arrayTask as $oTask){
292+
if($oTask->getIndex() == $pIndex) {
293+
return $oTask;
294+
} else {
295+
if($oTask->getTaskCount() > 0) {
296+
$return = $this->getTaskFromIndex($pIndex, $oTask);
297+
if($return instanceof Task) {
298+
return $return;
299+
}
300+
}
301+
}
302+
}
303+
return null;
304+
}
263305

264306
/**
265307
* Remove task by index

0 commit comments

Comments
 (0)