Example #1
0
 function Show()
 {
     global $CCSUseAmp;
     global $Tpl;
     global $FileName;
     $this->EventResult = CCGetEvent($this->CCSEvents, "BeforeShow", $this);
     if (!$this->Visible) {
         return;
     }
     $RemoveFromUrl = array($this->TargetName . "Year", $this->TargetName . "Month", $this->TargetName . "Date");
     $QueryString = CCGetQueryString("QueryString", $RemoveFromUrl);
     $ParentPath = $Tpl->block_path;
     $CalendarNavigatorBlock = "CalendarNavigator " . $this->CalendarNavigatorName;
     $Tpl->block_path = $ParentPath . "/" . $CalendarNavigatorBlock;
     $Tpl->SetBlockVar("", "");
     $Tpl->SetBlockVar("Years", "");
     $Tpl->SetBlockVar("Months", "");
     $Tpl->SetBlockVar("Quarters", "");
     $this->Attributes->Show();
     $Blocks = array("Months", "Quarters", "Years");
     foreach ($Blocks as $Block) {
         if ($Tpl->BlockExists($Block)) {
             if ($Block == "Years") {
                 $this->CurrentProcessingDate = CCDateAdd($this->CurrentDate, "-" . $this->YearsRange . "years");
                 $LastDate = CCDateAdd($this->CurrentDate, "+" . $this->YearsRange . "years");
                 $add = "1year";
                 $name = "Year";
             } elseif ($Block == "Quarters" && $this->CalendarType == "Quarter") {
                 $this->CurrentProcessingDate = CCParseDate(CCFormatDate($this->CurrentDate, array("yyyy", "-01-01 00:00:00")), array("yyyy", "-", "mm", "-", "dd", " ", "HH", ":", "nn", ":", "ss"));
                 $LastDate = CCDateAdd($this->CurrentProcessingDate, "+1year -1sec");
                 $add = "3month";
                 $name = "Quarter";
             } elseif ($this->CalendarType != 12) {
                 $this->CurrentProcessingDate = CCParseDate(CCFormatDate($this->CurrentDate, array("yyyy", "-01-01 00:00:00")), array("yyyy", "-", "mm", "-", "dd", " ", "HH", ":", "nn", ":", "ss"));
                 $LastDate = CCDateAdd($this->CurrentProcessingDate, "+1year -1sec");
                 $add = "1month";
                 $name = "Month";
             } else {
                 continue;
             }
             while (CCCompareValues($this->CurrentProcessingDate, $LastDate, ccsDate) <= 0) {
                 $NextDate = CCDateAdd($this->CurrentProcessingDate, $add);
                 if ($Block == "Years" && $this->CurrentProcessingDate[ccsYear] == $this->CurrentDate[ccsYear] || $Block == "Months" && $this->CurrentProcessingDate[ccsMonth] == $this->CurrentDate[ccsMonth] || $Block == "Quarters" && ceil($this->CurrentProcessingDate[ccsMonth] / 3 + 0.1) == ceil($this->CurrentDate[ccsMonth] / 3)) {
                     $this->ShowBlock($QueryString, $Block . "/Current_" . $name, $Block . "/Regular_" . $name);
                 } else {
                     $this->ShowBlock($QueryString, $Block . "/Regular_" . $name);
                 }
                 $this->CurrentProcessingDate = $NextDate;
             }
             $this->ShowBlock($QueryString, $Block);
         }
     }
     if ($Tpl->BlockExists("Prev_Year")) {
         $this->CurrentProcessingDate = CCDateAdd($this->CurrentDate, "-1year");
         $this->ShowBlock($QueryString, "Prev_Year", "", false);
     }
     if ($Tpl->BlockExists("Next_Year")) {
         $this->CurrentProcessingDate = CCDateAdd($this->CurrentDate, "+1year");
         $this->ShowBlock($QueryString, "Next_Year", "", false);
     }
     if ($this->CalendarType != 12) {
         if ($Tpl->BlockExists("Prev")) {
             $this->CurrentProcessingDate = $this->PrevProcessingDate;
             $this->ShowBlock($QueryString, "Prev", "", false);
         }
         if ($Tpl->BlockExists("Next")) {
             $this->CurrentProcessingDate = $this->NextProcessingDate;
             $this->ShowBlock($QueryString, "Next", "", false);
         }
     }
     $Tpl->block_path = $ParentPath;
     $ActionStr = $FileName . "?" . CCAddParam($QueryString, "ccsForm", $this->TargetName);
     if ($CCSUseAmp) {
         $ActionStr = str_replace('&', '&amp;', $ActionStr);
     }
     $Tpl->SetVar("Action", $ActionStr);
     $Tpl->SetVar("CalendarName", $this->TargetName);
     $this->CurrentProcessingDate = $this->CurrentDate;
     $this->ShowBlock($QueryString, $CalendarNavigatorBlock, "", false);
 }
Example #2
0
function CCDateAdd($date, $value)
{
    if (CCValidateDate($date)) {
        $FormatArray = array("yyyy", "-", "mm", "-", "dd", " ", "HH", ":", "nn", ":", "ss");
        $value = strtolower($value);
        preg_match_all("/([-+]?)(\\d+)\\s*(year(s?)|month(s?)|day(s?)|hour(s?)|minute(s?)|second(s?)|week(s?)|[ymdwhns])/", $value, $pieces);
        for ($i = 0; $i < count($pieces[0]); $i++) {
            $rel = $pieces[1][$i] == "-" ? -$pieces[2][$i] : $pieces[2][$i];
            $BackMonth = false;
            switch ($pieces[3][$i]) {
                case "years":
                case "year":
                case "y":
                    $date[ccsYear] += $rel;
                    $BackMonth = true;
                    break;
                case "months":
                case "month":
                case "m":
                    $date[ccsMonth] += $rel;
                    $BackMonth = true;
                    break;
                case "weeks":
                case "week":
                case "w":
                    $date[ccsDay] += $rel * 7;
                    break;
                case "days":
                case "day":
                case "d":
                    $date[ccsDay] += $rel;
                    break;
                case "hours":
                case "hour":
                case "h":
                    $date[ccsHour] += $rel;
                    break;
                case "minutes":
                case "minute":
                case "min":
                case "n":
                    $date[ccsMinute] += $rel;
                    break;
                case "seconds":
                case "second":
                case "sec":
                case "s":
                    $date[ccsSecond] += $rel;
                    break;
            }
            if ($date[ccsSecond] >= 60) {
                $date[ccsMinute] += floor($date[ccsSecond] / 60);
                $date[ccsSecond] = $date[ccsSecond] % 60;
            } elseif ($date[ccsSecond] < 0) {
                $date[ccsMinute] += floor($date[ccsSecond] / 60);
                $date[ccsSecond] = ($date[ccsSecond] % 60 + 60) % 60;
            }
            if ($date[ccsMinute] >= 60) {
                $date[ccsHour] += floor($date[ccsMinute] / 60);
                $date[ccsMinute] = $date[ccsMinute] % 60;
            } elseif ($date[ccsMinute] < 0) {
                $date[ccsHour] += floor($date[ccsMinute] / 60);
                $date[ccsMinute] = ($date[ccsMinute] % 60 + 60) % 60;
            }
            if ($date[ccsHour] >= 24) {
                $date[ccsDay] += floor($date[ccsHour] / 24);
                $date[ccsHour] = $date[ccsHour] % 24;
            } elseif ($date[ccsHour] < 0) {
                $date[ccsDay] += floor($date[ccsHour] / 24);
                $date[ccsHour] = ($date[ccsHour] % 24 + 24) % 24;
            }
            if ($date[ccsMonth] > 12) {
                $date[ccsYear] += floor(($date[ccsMonth] - 1) / 12);
                $date[ccsMonth] = ($date[ccsMonth] - 1) % 12 + 1;
            } elseif ($date[ccsMonth] < 1) {
                $date[ccsYear] += floor(($date[ccsMonth] - 1) / 12);
                $date[ccsMonth] = (($date[ccsMonth] - 1) % 12 + 12) % 12 + 1;
            }
            $days = CCDaysInMonth($date[ccsYear], $date[ccsMonth]);
            if ($BackMonth && $date[ccsDay] > $days) {
                $date[ccsDay] = $days;
            } else {
                while ($date[ccsDay] > $days) {
                    $date[ccsMonth] += 1;
                    if ($date[ccsMonth] > 12) {
                        $date[ccsYear] += 1;
                        $date[ccsMonth] = 1;
                    }
                    $date[ccsDay] = $date[ccsDay] - $days;
                    $days = CCDaysInMonth($date[ccsYear], $date[ccsMonth]);
                }
            }
            if ($BackMonth && $date[ccsDay] < 1) {
                $date[ccsDay] = 1;
            } else {
                $tmpDate = "";
                while ($date[ccsDay] < 1) {
                    if ($tmpDate == "") {
                        $tmpDate = CCParseDate(CCFormatDate($date, array("yyyy", "-", "mm", "-01")), array("yyyy", "-", "mm", "-", "dd"));
                    }
                    $tmpDate = CCDateAdd($tmpDate, "-1month");
                    $days = CCDaysInMonth($tmpDate[ccsYear], $tmpDate[ccsMonth]);
                    $date[ccsMonth] -= 1;
                    if ($date[ccsMonth] == 0) {
                        $date[ccsYear] -= 1;
                        $date[ccsMonth] = 12;
                    }
                    $date[ccsDay] = $date[ccsDay] + $days;
                }
            }
        }
        $date[ccsTimestamp] = @mktime($date[ccsHour], $date[ccsMinute], $date[ccsSecond], $date[ccsMonth], $date[ccsDay], $date[ccsYear]);
        return $date;
    }
    return false;
}
 function CalculateCalendarPeriod()
 {
     $this->FirstProcessingDate = CCParseDate(CCFormatDate($this->CurrentDate, array("yyyy", "-", "mm", "-01 00:00:00")), array("yyyy", "-", "mm", "-", "dd", " ", "HH", ":", "nn", ":", "ss"));
     $Days = (CCFormatDate($this->FirstProcessingDate, array("w")) - $this->FirstWeekDay + 6) % 7;
     $this->StartDate = CCDateAdd($this->FirstProcessingDate, "-" . $Days . "day");
     $this->LastProcessingDate = CCDateAdd($this->FirstProcessingDate, "1month -1second");
     $Days = ($this->FirstWeekDay - CCFormatDate($this->LastProcessingDate, array("w")) + 7) % 7;
     $this->EndDate = CCDateAdd($this->LastProcessingDate, $Days . "day");
 }