/** * Resource Assignment * @param array $record */ private function readRecord75(array $record) { // 0 : Record // 1 : ID $idResource = null; if (isset($record[1]) && !empty($record[1])) { $idResource = $record[1]; } // 2 : Units // 3 : Work // 4 : Planned Work // 5 : Actual Work // 6 : Overtime Work // 7 : Cost // 8 : Planned Cost // 9 : Actual Cost // 10 : Start* // 11 : Finish* // 12 : Delay // 13 : Resource Unique ID if (!is_null($idResource) && $this->oPreviousTask instanceof Task) { $oResource = $this->phpProject->getResourceFromIndex($idResource); if (!is_null($oResource)) { $this->oPreviousTask->addResource($oResource); } } }
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()); }
/** * 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); }
/** * 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); } }
/** * Node "Task" * @param XMLReader $oXML * @param \DOMElement $domNode */ private function readNodeTask(XMLReader $oXML, \DOMElement $domNode, Task $oTask) { // Attributes $oTask->setIndex($domNode->getAttribute('id')); $oTask->setName($domNode->getAttribute('name')); $oTask->setStartDate($domNode->getAttribute('start')); $oTask->setDuration($domNode->getAttribute('duration')); $oTask->setProgress($domNode->getAttribute('complete')); // SubNodes $oNodes = $oXML->getElements('*', $domNode); if ($oNodes->length > 0) { foreach ($oNodes as $oNode) { if ($oNode->nodeName == 'task') { $oTaskChild = $oTask->createTask(); $this->readNodeTask($oXML, $oNode, $oTaskChild); } } } }