public static function run($dataDir = null)
 {
     $one_sec = 10000000;
     # microsecond * 10
     $one_min = 60 * $one_sec;
     $one_hour = 60 * $one_min;
     # Instantiate project object
     $project = new Project($dataDir . 'test_tasks.mpp');
     $tsk = new Tsk();
     $prj = new Prj();
     # Add tasks
     $task1 = $project->getRootTask()->getChildren()->add("1");
     $timeUnitType = new TimeUnitType();
     $task1->set($tsk->DURATION, $project->getDuration(8, $timeUnitType->Hour));
     $task1->set($tsk->START, $project->get($prj->START_DATE));
     $task1->set($tsk->FINISH, $project->get($prj->CALENDAR)->getTaskFinishDateFromDuration($task1, (double) (string) $task1->get($tsk->DURATION)));
     //.toDouble()
     $task2 = $project->getRootTask()->getChildren()->add("2");
     $task2->set($tsk->DURATION, $project->getDuration(8, $timeUnitType->Hour));
     $task2->set($tsk->START, $project->get($prj->START_DATE));
     $task2->set($tsk->FINISH, $project->get($prj->CALENDAR)->getTaskFinishDateFromDuration($task2, (double) (string) $task2->get($tsk->DURATION)));
     //.toDouble()
     $project->getRootTask()->getChildren()->add($task1);
     $project->getRootTask()->getChildren()->add($task2);
     # Add four TaskLinks with different TaskLinkTypes
     $taskLinkType = new TaskLinkType();
     $link1 = $project->getTaskLinks()->add($task1, $task2, $taskLinkType->StartToStart);
     # Save the Project
     $saveFileFormat = new SaveFileFormat();
     $project->save($dataDir . "TaskLinks.mpp", $saveFileFormat->MPP);
     print "Saved task links data." . PHP_EOL;
 }
 public static function run($dataDir = null)
 {
     # Instantiate project object
     $project = new Project();
     print $project->getCalculationMode();
     $task = $project->getRootTask()->getChildren()->add("Task");
     $tsk = new Tsk();
     $task->set($tsk->DURATION, $project->getDuration(2));
     $task->set($tsk->PERCENT_COMPLETE, 50);
     print "Changed progress of task." . PHP_EOL;
 }
 public static function run($dataDir = null)
 {
     # Instantiate project object
     $project = new Project();
     $prj = new Prj();
     $tsk = new Tsk();
     # Get a standard calendar
     $calendar = $project->get($prj->CALENDAR);
     # Set project's calendar settings
     $cal = new Calendar();
     $cal = $cal->getInstance();
     $cal->set(2011, 3, 15, 8, 0, 0);
     $project->set($prj->START_DATE, $cal->getTime());
     $cal->set(2011, 3, 21, 17, 0, 0);
     $project->set($prj->FINISH_DATE, $cal->getTime());
     # root task
     $rootTask = $project->getRootTask();
     $rootTask->set($tsk->NAME, "Root");
     # Add a new task
     $taskToSplit = $rootTask->getChildren()->add("Task1");
     $taskToSplit->set($tsk->DURATION, $project->getDuration(3));
     # Create a new resource assignment
     $splitResourceAssignment = $project->getResourceAssignments()->add($taskToSplit, null);
     # Generate resource assignment timephased data
     $splitResourceAssignment->timephasedDataFromTaskDuration($calendar);
     # Split the task into 3 parts.
     # Provide start date and finish date arguments to SplitTask method
     # These dates will be used for split
     # Set project's calendar settings
     $cal = new Calendar();
     $cal = $cal->getInstance();
     $cal2 = new Calendar();
     $cal2 = $cal2->getInstance();
     $cal->set(2011, 3, 16, 8, 0, 0);
     $cal2->set(2011, 3, 16, 17, 0, 0);
     $splitResourceAssignment->splitTask($cal->getTime(), $cal2->getTime(), $calendar);
     $cal->set(2011, 3, 18, 8, 0, 0);
     $cal2->set(2011, 3, 18, 17, 0, 0);
     $splitResourceAssignment->splitTask($cal->getTime(), $cal2->getTime(), $calendar);
     $asn = new Asn();
     $workContourType = new WorkContourType();
     $splitResourceAssignment->set($asn->WORK_CONTOUR, $workContourType->Contoured);
     # Save the Project
     $saveFileFormat = new SaveFileFormat();
     $project->save($dataDir . "SplitTasks.xml", $saveFileFormat->XML);
 }
 public static function run($dataDir = null)
 {
     # Instantiate project object
     $project = new Project($dataDir . 'test_tasks.mpp');
     $prj = new Prj();
     $tsk = new Tsk();
     $cal = new Calendar();
     $cal = $cal->getInstance();
     $cal->set(2013, 7, 17, 8, 0, 0);
     $project->set($prj->START_DATE, $cal->getTime());
     $project->set($prj->NEW_TASKS_ARE_MANUAL, new NullableBool(false));
     $task = $project->getRootTask()->getChildren()->add("Task");
     $rsc = $project->getResources()->add("Rsc");
     $rscc = new Rsc();
     $bigDecimal = new BigDecimal();
     $rsc->set($rscc->STANDARD_RATE, $bigDecimal->valueOf(10));
     $rsc->set($rscc->OVERTIME_RATE, $bigDecimal->valueOf(15));
     # 6 days duration
     $task->set($tsk->DURATION, $project->getDuration(6));
     $assn = $project->getResourceAssignments()->add($task, $rsc);
     $d = new Date(0);
     $asnn = new Asn();
     $assn->set($asnn->STOP, new Date(0));
     $assn->set($asnn->RESUME, new Date(0));
     # backloaded contour increases task duration from 6 to 10 days
     $workContourType = new WorkContourType();
     $assn->set($asnn->WORK_CONTOUR, $workContourType->BackLoaded);
     $baselineType = new BaselineType();
     $project->setBaseline($baselineType->Baseline);
     $task->set($tsk->PERCENT_COMPLETE, 50);
     $timephasedDataType = new TimephasedDataType();
     $td = $assn->getTimephasedData($assn->get($asnn->START), $assn->get($asnn->FINISH), $timephasedDataType->AssignmentRemainingWork)->toList();
     print "Size: " . (string) $td->size() . PHP_EOL;
     //.to_s
     print "Value: " . (string) $td->get(0)->getValue() . PHP_EOL;
     //.to_s
 }