コード例 #1
0
ファイル: dateutil.php プロジェクト: rezaul101/erp32
 /**
  * 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;
 }
コード例 #2
0
ファイル: ganttchart.php プロジェクト: pipporazzo/achievo
                $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);