/** * Permits to clean parent task and calculate parent data like total duration, * date start and complete average. * @param PHPProject_Task $oParentTask */ private function sanitizeTaskParent(Task $oParentTask) { $arrTasksChilds = $oParentTask->getTasks(); $iProgress = 0; $tStartDate = null; $tEndDate = null; foreach ($arrTasksChilds as $oTaskChild) { if ($oTaskChild->getTaskCount() == 0) { $this->sanitizeTask($oTaskChild); } else { $this->sanitizeTaskParent($oTaskChild); } $iProgress += $oTaskChild->getProgress(); if (is_null($tStartDate)) { $tStartDate = $oTaskChild->getStartDate(); } elseif ($tStartDate > $oTaskChild->getStartDate()) { $tStartDate = $oTaskChild->getStartDate(); } if (is_null($tEndDate)) { $tEndDate = $oTaskChild->getEndDate(); } elseif ($tEndDate < $oTaskChild->getEndDate()) { $tEndDate = $oTaskChild->getEndDate(); } } $oParentTask->setProgress($iProgress / $oParentTask->getTaskCount()); $oParentTask->setStartDate($tStartDate); $oParentTask->setEndDate($tEndDate); $oParentTask->setDuration(($tEndDate - $tStartDate) / 60 / 60 / 24 + 1); }
public function testTask() { $object = new Task(); $this->assertInstanceOf('PhpOffice\\PhpProject\\Task', $object->createTask()); $this->assertCount(1, $object->getTasks()); $this->assertEquals(1, $object->getTaskCount()); $this->assertInstanceOf('PhpOffice\\PhpProject\\Task', $object->createTask()); $this->assertCount(2, $object->getTasks()); $this->assertEquals(2, $object->getTaskCount()); }
/** * Record "Task" * @param Task $oTask */ private function writeRecord70(Task $oTask) { $this->fileContent[] = '70;' . $oTask->getIndex() . ';' . $oTask->getName() . ';' . $oTask->getDuration() . 'd;' . number_format($oTask->getProgress(), 1) . ';' . date('d/m/Y', $oTask->getStartDate()); foreach ($oTask->getResources() as $oResource) { $this->writeRecord75($oResource); } foreach ($oTask->getTasks() as $oSubTask) { $this->writeRecord70($oSubTask); } }