/** * Renders the localized version of the date-time value. * If the culture is not specified, the default application * culture will be used. * This method overrides parent's implementation. */ protected function getFormattedDate() { $value = $this->getValue(); $defaultText = $this->getDefaultText(); if (empty($value) && !empty($defaultText)) { return $this->getDefaultText(); } $app = $this->getApplication()->getGlobalization(); //initialized the default class wide formatter if (self::$formatter === null) { self::$formatter = new DateFormat($app->getCulture()); } $culture = $this->getCulture(); //return the specific cultural formatted date time if (strlen($culture) && $app->getCulture() !== $culture) { $formatter = new DateFormat($culture); return $formatter->format($value, $this->getPattern(), $this->getCharset()); } //return the application wide culture formatted date time. $result = self::$formatter->format($value, $this->getPattern(), $this->getCharset()); return $result; }
protected function onPrint() { $from = $this->Session[$this->getApplication()->getService()->getRequestedPagePath() . 'Start']; $to = $this->Session[$this->getApplication()->getService()->getRequestedPagePath() . 'End']; $event = $this->getData($from, $to); //print_r($event); exit; parent::onPrint(); $data = array(); $header = array(Prado::localize('Mon'), Prado::localize('Tue'), Prado::localize('Wed'), Prado::localize('Thu'), Prado::localize('Fri'), Prado::localize('Sat'), Prado::localize('Sun')); $this->pdf->AddPage('L'); $this->pdf->SetFillColor(255, 255, 255); $this->pdf->SetTextColor(0, 0, 0); $this->pdf->SetDrawColor(0, 0, 0); $this->pdf->SetLineWidth(0.3); $this->pdf->SetFont('', 'B'); $this->pdf->SetFontSize(10); //En-tête $this->pdf->Ln(); $w = array(39.5, 39.5, 39.5, 39.5, 39.5, 39.5, 39.5); for ($i = 0; $i < count($header); $i++) { $this->pdf->Cell($w[$i], 4, $header[$i], 1, 0, 'C', 1); } $this->pdf->Ln(); //Restauration des couleurs et de la police $this->pdf->SetTextColor(0); $this->pdf->SetFont(''); $from = strtotime($from); $to = strtotime($to); $from_default = $from; $x = 46; $y = 37; $this->pdf->SetFontSize(8); $startMonth = false; $from = $from_default; $eventPerLine = array(0, 0, 0, 0, 0, 0); $eventPerDay = array(); $i = 1; while ($from < $to) { $eventPerDay[$i] = 0; foreach ($event as $e) { $eventDateStart = strtotime($e['start']); $eventDateEnd = strtotime($e['end']); if ($eventDateStart <= $from && $from <= $eventDateEnd) { $eventPerDay[$i] = $eventPerDay[$i] + 1; } } $i++; $from = strtotime("+1 day", $from); } $line = 1; $i = 1; foreach ($eventPerDay as $k => $v) { if ($v > $eventPerLine[$line - 1]) { $eventPerLine[$line - 1] = $v; } if ($i % 7 == 0) { $line++; } $i++; } $line = 1; $i = 1; $from = $from_default; while ($from < $to) { $height = $eventPerLine[$line - 1] * 3.4 + 6; $this->pdf->SetFontSize(10); $this->pdf->Cell($w[$i % 7], $height, '', 1, 0, 'C', 0); $this->pdf->SetFontSize(8); $day = date("j", $from); if (!$startMonth) { $this->pdf->SetTextColor(179, 179, 179); } if ($startMonth && $day == 1) { $startMonth = false; $this->pdf->SetTextColor(179, 179, 179); } else { if ($i >= 1 && $day == 1) { $startMonth = true; $month = new TDateFormat(); $month->setValue(date("d-n-Y", $from)); $month->Pattern = "MMM yyyy"; $this->pdf->SetFontSize(12); $this->pdf->SetTextColor(0, 0, 0); $this->pdf->Text(10, 26, utf8_decode($month->FormattedDate)); $this->pdf->SetFontSize(8); $this->pdf->SetTextColor(255, 255, 255); } if ($startMonth) { $this->pdf->SetTextColor(0, 0, 0); } } $this->pdf->Text($x, $y, $day); $x += 39.5; if ($i % 7 == 0) { $this->pdf->Ln(); $y += $eventPerLine[$line - 1] * 3.4 + 6; $x = 46; $line++; } $i++; $from = strtotime("+1 day", $from); } $eventIndex = 0; $eventPerLine2 = array(1 => array(), 2 => array(), 3 => array(), 4 => array(), 5 => array(), 6 => array()); $eventIndexPerLine = array(0, 0, 0, 0, 0, 0); $this->pdf->SetTextColor(255, 255, 255); $this->pdf->SetFontSize(8); foreach ($event as $e) { $y = 38; $colorR = hexdec(substr($e['color'], 1, 2)); $colorG = hexdec(substr($e['color'], 3, 2)); $colorB = hexdec(substr($e['color'], 5, 2)); $this->pdf->SetFillColor($colorR, $colorG, $colorB); $x = 10.1; $eventDateStart = strtotime($e['start']); $eventDateEnd = strtotime($e['end']); $from = $from_default; $fromStart = 0; $i = 1; $line = 1; $eventStart = false; $countEvent = false; $j = 0; while ($from < $to) { if (!isset($eventPerLine2[$line][$from])) { $eventPerLine2[$line][$from] = 0; } if ($eventDateStart == $from && !$eventStart) { $eventStart = true; $countEvent = true; $eventIndexPerLine[$line - 1]++; $fromStart = $from; if ($eventDateEnd == $from) { $y += $eventPerLine2[$line][$from] * 3.4; $this->pdf->RoundedRect($x + $j * 39.5 + 1, $y, 37, 3, 0.5, '1234', 'F'); $eventPerLine2[$line][$from]++; } else { if ($i % 7 == 0) { $y += $eventPerLine2[$line][$from] * 3.4; $this->pdf->RoundedRect($x + $j * 39.5 + 1, $y, 39, 3, 0.5, '14', 'F'); $eventPerLine2[$line][$from]++; } else { $y += $eventPerLine2[$line][$from] * 3.4; $this->pdf->RoundedRect($x + $j * 39.5 + 1, $y, 39, 3, 0.5, '14', 'F'); $eventPerLine2[$line][$from]++; } } } if ($eventDateStart < $from && !$eventStart) { $eventStart = true; $eventIndexPerLine[$line - 1]++; $countEvent = true; $fromStart = $from; if ($eventDateEnd == $from) { $y += $eventPerLine2[$line][$from] * 3.4; $this->pdf->RoundedRect($x + $j * 39.5, $y, 39.5, 3, 0.5, '23', 'F'); $eventPerLine2[$line][$from]++; } else { $y += $eventPerLine2[$line][$from] * 3.4; $this->pdf->RoundedRect($x + $j * 39.5, $y, 40, 3, 0.5, '', 'F'); $eventPerLine2[$line][$from]++; } } if ($eventDateEnd == $from && $eventStart && $eventDateEnd != $fromStart) { if (!$countEvent) { $y += $eventPerLine2[$line][$from] * 3.4; $countEvent = true; $eventIndexPerLine[$line - 1]++; } $this->pdf->RoundedRect($x + $j * 39.5, $y, 38.5, 3, 0.5, '23', 'F'); $eventPerLine2[$line][$from]++; } if ($eventDateEnd > $from && $eventStart && $from > $fromStart) { if (!$countEvent) { $y += $eventPerLine2[$line][$from] * 3.4; $countEvent = true; $eventIndexPerLine[$line - 1]++; } $this->pdf->RoundedRect($x + $j * 39.5, $y, 39.5, 3, 0.5, '', 'F'); $eventPerLine2[$line][$from]++; } $j++; if ($i % 7 == 0) { //next line $y = 38; $y += $eventPerLine[$line - 1] * 3.4 + 6; for ($k = 1; $k < $line; $k++) { $y += $eventPerLine[$k - 1] * 3.4 + 6; } $countEvent = false; $line++; $j = 0; } $from = strtotime("+1 day", $from); $i++; } $eventIndex++; } // text $eventIndex = 0; $eventPerLine2 = array(1 => array(), 2 => array(), 3 => array(), 4 => array(), 5 => array(), 6 => array()); $eventIndexPerLine = array(0, 0, 0, 0, 0, 0); foreach ($event as $e) { $y = 38; $x = 10.1; $eventDateStart = strtotime($e['start']); $eventDateEnd = strtotime($e['end']); $from = $from_default; $fromStart = 0; $i = 1; $line = 1; $eventStart = false; $countEvent = false; $j = 0; while ($from < $to) { if (!isset($eventPerLine2[$line][$from])) { $eventPerLine2[$line][$from] = 0; } if ($eventDateStart == $eventDateEnd) { $width = $this->pdf->GetStringWidth(utf8_decode($e["title"])); $fontSize = 8; if ($width > 35) { while ($this->pdf->GetStringWidth(utf8_decode($e["title"])) > 35) { $fontSize -= 0.1; $this->pdf->SetFontSize($fontSize); } } } else { $this->pdf->SetFontSize(8); } if ($eventDateStart == $from && !$eventStart) { $eventStart = true; $countEvent = true; $eventIndexPerLine[$line - 1]++; $fromStart = $from; if ($eventDateEnd == $from) { $y += $eventPerLine2[$line][$from] * 3.4; $this->pdf->Text($x + $j * 39.5 + 1 + 1, $y + 2.4, utf8_decode($e["title"])); $eventPerLine2[$line][$from]++; } else { if ($i % 7 == 0) { $y += $eventPerLine2[$line][$from] * 3.4; $this->pdf->Text($x + $j * 39.5 + 1 + 1, $y + 2.4, utf8_decode($e["title"])); $eventPerLine2[$line][$from]++; } else { $y += $eventPerLine2[$line][$from] * 3.4; $this->pdf->Text($x + $j * 39.5 + 1 + 1, $y + 2.4, utf8_decode($e["title"])); $eventPerLine2[$line][$from]++; } } } if ($eventDateStart < $from && !$eventStart) { $eventStart = true; $eventIndexPerLine[$line - 1]++; $countEvent = true; $fromStart = $from; if ($eventDateEnd == $from) { $y += $eventPerLine2[$line][$from] * 3.4; $eventPerLine2[$line][$from]++; $this->pdf->Text($x + $j * 39.5 + 1 + 1, $y + 2.4, utf8_decode($e["title"])); } else { $y += $eventPerLine2[$line][$from] * 3.4; $eventPerLine2[$line][$from]++; $this->pdf->Text($x + $j * 39.5 + 1 + 1, $y + 2.4, utf8_decode($e["title"])); } } if ($eventDateEnd == $from && $eventStart && $eventDateEnd != $fromStart) { if (!$countEvent) { $y += $eventPerLine2[$line][$from] * 3.4; $countEvent = true; $eventIndexPerLine[$line - 1]++; } $eventPerLine2[$line][$from]++; } if ($eventDateEnd > $from && $eventStart && $from > $fromStart) { if (!$countEvent) { $y += $eventPerLine2[$line][$from] * 3.4; $countEvent = true; $eventIndexPerLine[$line - 1]++; $this->pdf->Text($x + $j * 39.5 + 1 + 1, $y + 2.4, utf8_decode($e["title"])); } $eventPerLine2[$line][$from]++; } $j++; if ($i % 7 == 0) { //next line $y = 38; $y += $eventPerLine[$line - 1] * 3.4 + 6; for ($k = 1; $k < $line; $k++) { $y += $eventPerLine[$k - 1] * 3.4 + 6; } $countEvent = false; $line++; $j = 0; } $from = strtotime("+1 day", $from); $i++; } $eventIndex++; } $this->pdf->SetTextColor(0, 0, 0); //$this->pdf->Cell(array_sum($w),0,'','T'); $this->pdf->render(); }
/** * Renders the localized version of the date-time value. * If the culture is not specified, the default application * culture will be used. * This method overrides parent's implementation. */ protected function renderBody() { $app = $this->Application->getGlobalization(); //initialized the default class wide formatter if (is_null(self::$formatter)) { self::$formatter = new DateFormat($app->Culture); } $culture = $this->getCulture(); $value = $this->getValue(); //return the specific cultural formatted date time if (strlen($culture) && $app->Culture !== $culture) { $formatter = new DateFormat($culture); return $formatter->format($value, $this->getPattern()); } $charset = $this->getCharset(); if (empty($charset)) { $charset = 'UTF-8'; } //return the application wide culture formatted date time. return self::$formatter->format($value, $this->getPattern(), $charset); }