Hallo, Gast! (Registrieren)

Letzte Ankündigung: MyBB 1.8.38 veröffentlicht (30.04.24)


Benutzer, die gerade dieses Thema anschauen: 2 Gast/Gäste
Calendar Fehler
#1
Hallo,
ich wollte in meinem Portal einen MiniKalender einfügen, was zwar gut funktioniert, aber dieser zeigt die Tage immer um ein Tag versetzt.

Also heute ist der Samstag der 14.01., der Kalender zeigt aber Sonntag den 14.01.

Könnte mir bitte jemand helfen, wo der Fehler liegt?

PHP-Code:
require_once MYBB_ROOT."inc/functions_calendar.php";
$lang->load("calendar");
$monthnames = array(
    
"offset",
    
$lang->alt_month_1,
    
$lang->alt_month_2,
    
$lang->alt_month_3,
    
$lang->alt_month_4,
    
$lang->alt_month_5,
    
$lang->alt_month_6,
    
$lang->alt_month_7,
    
$lang->alt_month_8,
    
$lang->alt_month_9,
    
$lang->alt_month_10,
    
$lang->alt_month_11,
    
$lang->alt_month_12
);
$year my_date("Y");
$month my_date("n");
$calendarquery $db->simple_select("calendars""*""", array('order_by' => 'disporder''limit' => 1));
$mycalendar $db->fetch_array($calendarquery);

$next_month get_next_month($month$year);
$prev_month get_prev_month($month$year);

$prev_link get_calendar_link($mycalendar['cid'], $prev_month['year'], $prev_month['month']);
$next_link get_calendar_link($mycalendar['cid'], $next_month['year'], $next_month['month']);

// Start constructing the calendar

$weekdays fetch_weekday_structure($mycalendar['startofweek']);

$month_start_weekday gmdate("w"gmmktime(000$month$mycalendar['startofweek']+1$year));

// This is if we have days in the previous month to show
if($month_start_weekday != $weekdays[0] || $mycalendar['startofweek'] != 0)
{
    
$day gmdate("t"gmmktime(000$prev_month['month'], 1$prev_month['year']));
    
$day -= array_search(($month_start_weekday), $weekdays);
    
$day += $mycalendar['startofweek']+1;
    
$calendar_month $prev_month['month'];
    
$calendar_year $prev_month['year'];
}
else
{
    
$day $mycalendar['startofweek']+1;
    
$calendar_month $month;
    
$calendar_year $year;
}

$prev_month_days gmdate("t"gmmktime(000$prev_month['month'], 1$prev_month['year']));

// So now we fetch events for this month (nb, cache events for past month, current month and next month for mini calendars too)
$start_timestamp gmmktime(000$prev_month['month'], $day$prev_month['year']);
$num_days gmdate("t"gmmktime(000$next_month['month'], 1$next_month['year']));
$end_timestamp gmmktime(235959$next_month['month'], $num_days$next_month['year']);

$num_days gmdate("t"gmmktime(000$month1$year));

$events_cache get_events($mycalendar['cid'], $start_timestamp$end_timestamp);
$minicalendar build_mini_calendar($mycalendar$month$year$events_cache);
$search = array(" style=\"width: 180px;\">","<td class=\"thead\" colspan=\"8\">","<tbody>""<td class=\"thead\" colspan=\"8\">""<td class=\"tcat\">&nbsp;</td>");
$replace = array(">","<td class=\"thead\" colspan=\"8\"><div class=\"expcolimage\"><img src=\"{$theme['imgdir']}/{$expcolimage}\" id=\"block_{$result_blocks['id']}_img\" class=\"expander\" alt=\"{$expaltext}\" title=\"{$expaltext}\" /></div>","<tbody style=\"{$expdisplay}\" id=\"block_{$result_blocks['id']}_e\">""<td class=\"thead\" colspan=\"7\">""");
$minicalendar str_replace($search$replace$minicalendar);
$minicalendar preg_replace("/<td class=\"tcat\" align=\"center\" width=\"1\">(.*)&raquo;<\/a><\/td>/"""$minicalendar);
echo 
$minicalendar
Zitieren
#2
Ohne weitere Informationen kann ich dir leider nicht helfen. Ist das ein bestehendes Plugin? Oder hast du dafür ein Template erstellt?

Zitieren
#3
Das ist eine Block_Datei aus dem ProPortal.
Wenn man sich die Datei ansieht, dann erkennt man auch schnell, dass es dazu kein Template gibt.
Zitieren
#4
Weil wir hier doch ein paar PHP Profis haben, schupse ich das Thema noch mal.
Zitieren
#5
Das plugin scheint auf die englische woche ausgelegt (sonntag ist der erste tag) und einfach mithilfe einer verschiebung auf deutsche umgestellt worden.

PHP-Code:
$weekdays fetch_weekday_structure($mycalendar['startofweek']); 
Hab jetzt nichts testen können aber dort fehlt im gegensatz zu allen anderen aufrufen dieses +1. Probier das am besten einfach mal aus^^
Zitieren
#6
Das war es leider nicht, aber schon mal Danke, dass Du Dich dem angenommen hast.
Zitieren
#7
(15.01.2012, 18:29)Jones schrieb: Das plugin scheint auf die englische woche ausgelegt (sonntag ist der erste tag) und einfach mithilfe einer verschiebung auf deutsche umgestellt worden.
PHP-Code:
$weekdays fetch_weekday_structure($mycalendar['startofweek']); 
Hab jetzt nichts testen können aber dort fehlt im gegensatz zu allen anderen aufrufen dieses +1. Probier das am besten einfach mal aus^^
Der MyBB Kalendar ist (standardmässig) auch für die englische Schreibweise ausgelegt (So-Sa). jedoch kann es sein, dass das Plugin auch damit fortfährt.

Greez
Zitieren
#8
Aber beim MyBB kann man es einstellen...
[Bild: banner.png]

Bitte die Foren-Regeln beachten und im Profil die verwendete MyBB-Version angeben.
Zitieren
#9
Ja, man kann es im MyBB einstellen, aber dabei verschieben sich nur die Wochentage.
Wenn ich den Sonntag als Wochenbeginn konfiguriere, dann stimmt alles, aber wenn ich den Montag als Wochenanfang nehme, dann stimmt das Datum nicht mehr um einen Tag.
Zitieren
#10
(18.01.2012, 21:43)tomtom schrieb: Ja, man kann es im MyBB einstellen, aber dabei verschieben sich nur die Wochentage.
Wenn ich den Sonntag als Wochenbeginn konfiguriere, dann stimmt alles, aber wenn ich den Montag als Wochenanfang nehme, dann stimmt das Datum nicht mehr um einen Tag.
Habs grade überprüft. Wenn man den ersten Wochentag ändert, verschiebt sich das Datum um eines, so dass es wiederum stimmt.
Zitieren