/** * Calculate the weeknumber for an ISO8601 date * based on pear/Date/Calc.php * @return int * @param int $day * @param int $month * @param int $year */ function getWeeknumber($day, $month, $year) { $mnth = array(0, 31, 59, 90, 120, 151, 181, 212, 243, 273, 304, 334); $y_isleap = dateutil::isLeapYear($year); $y_1_isleap = dateutil::isLeapYear($year - 1); $day_of_year_number = $day + $mnth[$month - 1]; if ($y_isleap && $month > 2) { $day_of_year_number++; } // find Jan 1 weekday (monday = 1, sunday = 7) $yy = ($year - 1) % 100; $c = $year - 1 - $yy; $g = $yy + intval($yy / 4); $jan1_weekday = 1 + intval(($c / 100 % 4 * 5 + $g) % 7); // weekday for year-month-day $h = $day_of_year_number + ($jan1_weekday - 1); $weekday = 1 + intval(($h - 1) % 7); // find if Y M D falls in YearNumber Y-1, WeekNumber 52 or if ($day_of_year_number <= 8 - $jan1_weekday && $jan1_weekday > 4) { $yearnumber = $year - 1; if ($jan1_weekday == 5 || $jan1_weekday == 6 && $y_1_isleap) { $weeknumber = 53; } else { $weeknumber = 52; } } else { $yearnumber = $year; } // find if Y M D falls in YearNumber Y+1, WeekNumber 1 if ($yearnumber == $year) { if ($y_isleap) { $i = 366; } else { $i = 365; } if ($i - $day_of_year_number < 4 - $weekday) { $yearnumber++; $weeknumber = 1; } } // find if Y M D falls in YearNumber Y, WeekNumber 1 through 53 if ($yearnumber == $year) { $j = $day_of_year_number + (7 - $weekday) + ($jan1_weekday - 1); $weeknumber = intval($j / 7); if ($jan1_weekday > 4) { $weeknumber--; } } // put it all together if ($weeknumber < 10) { $weeknumber = '0' . $weeknumber; } return $weeknumber; }
$caption .= '[0/' . round($gantphase['planned'] / 60) . ']'; } } } else { $activity[$i]->SetPattern(BAND_RDIAG, "red"); } $activity[$i]->caption->Set($caption); //$graph->Add($activity[$i]); $i++; } atkimport("module.utils.dateutil"); // milestones $milestonenode =& atkGetNode("project.deliverable"); $deliverables = $milestonenode->selectDb("project_id=" . $projectid, "duedate"); for ($i = 0, $_i = count($deliverables); $i < $_i; $i++) { $due = date("Y-m-d", dateutil::arr2stamp($deliverables[$i]["duedate"])); $ms = new MileStone(count($gant) + $i, $deliverables[$i]["name"], $due, $due . " (" . $deliverables[$i]["name"] . ")"); $graph->Add($ms); } // dependencies for ($i = 0, $_i = count($dbrecordsdep); $i < $_i; $i++) { $activity[$reverselookup[$dbrecordsdep[$i]["dependency_phaseid_row"]]]->SetConstrain($reverselookup[$dbrecordsdep[$i]["dependency_phaseid_col"]], CONSTRAIN_ENDSTART); } for ($i = 0, $_i = count($activity); $i < $_i; $i++) { $graph->Add($activity[$i]); } //TO DO: find a good solution for errorhandling //here you can set a subtitle //$graph->subtitle->Set('title'); if (count($gant) == 0) { $graph->SetDateRange(time(), time() + 86400);