Page 1 of 1
Vordatierung
Posted: Sun Feb 13, 2011 9:51 pm
by Farlion
Hallo zusammen,
ich melde mich mal wieder mit einer etwas ausgefallenen Frage:
Für ein Funprojekt wäre es bei mir nötig, dass das Datum der Einträge exakt auf 10 Jahre in der Zukunft stehen würden. D.h., wenn ich bspw. heute einen Artikel schreibe, sollte im Blog automatisch der 13.02.2021 stehen.
Weiß zufällig jemand, welchen Code ich dazu ändern muss und vor allem: was müsste da stehen?

Re: Vordatierung
Posted: Mon Feb 14, 2011 10:19 am
by Timbalu
Da du ja wahrscheinlich nicht die Serverzeit verstellen willst, könnte ich mir vorstellen dies über Smarty in den templates selbst zu machen und den Ausgabe Jahren jeweils 10 Jahre hinzuzuaddieren.
Wie das geht, hängt sicherlich vom jeweiligen Ausgabeformat an der präzisen Stelle ab. So müsstest du selbst ein wenig suchen, das Format untersuchen und den den entsprechenden modifier in der Smarty Dokumentation nachschlagen.
Ian
Re: Vordatierung
Posted: Mon Feb 14, 2011 10:31 am
by Farlion
Von Smarty habe ich absolut keine Ahnung, aber wenn ich Dich richtig verstehe, würde das nur die Ausgabe im entsprechenden Template modifizieren. Da ich diese Zeit allerdings auch gern in den Kommentaren und im Feed hätte wäre es günstiger, wenn das Datum auch entsprechend in der DB stehen würde.
Vor etlich vielen Jahren (1998 oder so) hatte ich eine ähnliche Sache schonmal in einem System unter Perl, da ließ es sich relativ einfach lösen. Bei php scheint es doch etwas komplexer zu sein. Die Serverzeit kann ich leider nicht verstellen, dann wäre es einfacher

Re: Vordatierung
Posted: Mon Feb 14, 2011 11:14 am
by Timbalu
Ja man müsste alle Ausgaben die man wünscht so per smarty modifier modifizieren.
Alles nicht so einfach und optimal....
Mit PHP ist das eigentlich sehr einfach, siehe $year = (date("Y")+10); oder so ähnlich.
Die Frage ist nur, ob du Serendipity durchpflügen willst und die Ein- und Ausgabe Formate so verändern willst, dass sie in der Zukunft liegen und dennoch heute erscheinen. Das wäre mehr als nur eine Korrektur in der DB des Eintrags.
Außer natürlich Garvin hätte soetwas irgendwo konfigurabel vorgesehen.
Man könnte ja auch rumspinnen und versuchen einer Serendipity fun Installation eine Art Server-Future-Sandbox vorzugaukeln....#
Ian
Re: Vordatierung
Posted: Mon Feb 14, 2011 1:31 pm
by Farlion
Genau die "$year=" Methode wäre es wohl

Ich werde jetzt mal die ganzen Programmdateien durchforsten und schauen, ob ich die passenden Stellen finde

Re: Vordatierung
Posted: Mon Feb 14, 2011 1:53 pm
by garvinhicking
Hi!
Eigentlich gibt es in s9y ja schon diese "Zeitzonen"-Einstellung mit der man einen Offset vergeben kann. Eigentlich müsste das nicht nur mit 2 Stunden sondern auch 10 Jahren funktionieren können, probier das mal aus.
Ansonsten kann man die serendipity_formatTime() Funktion relativ easy patchen.
Grüße,
Garvin
Re: Vordatierung
Posted: Mon Feb 14, 2011 2:03 pm
by Timbalu
Farlion wrote:Ich werde jetzt mal die ganzen Programmdateien durchforsten und schauen, ob ich die passenden Stellen finde

garvinhicking wrote:Ansonsten kann man die serendipity_formatTime() Funktion relativ easy patchen.
Na dann viel Spaß damit. Ich merke nur an, dass ich das für großen Käse halte, da die Ausgabe Logik doch bestimmt auch noch mitspielt, oder...!?
garvinhicking wrote:Eigentlich gibt es in s9y ja schon diese "Zeitzonen"-Einstellung mit der man einen Offset vergeben kann. Eigentlich müsste das nicht nur mit 2 Stunden sondern auch 10 Jahren funktionieren können, probier das mal aus.
Daran habe ich schon mal kurz gedacht. Das könnte eine echte Möglichkeit sein.
Ian
Re: Vordatierung
Posted: Mon Feb 14, 2011 2:17 pm
by Farlion
garvinhicking wrote:Hi!
Eigentlich gibt es in s9y ja schon diese "Zeitzonen"-Einstellung mit der man einen Offset vergeben kann. Eigentlich müsste das nicht nur mit 2 Stunden sondern auch 10 Jahren funktionieren können, probier das mal aus.
Ansonsten kann man die serendipity_formatTime() Funktion relativ easy patchen.
Grüße,
Garvin
Hi Garvin,
danke für die Vorschläge.
also die Zeitzonen-Einstellung wäre etwas kompliziert, da ich dort die 10 Jahre in Stunden eingeben müsste.
Wo und wie müsste ich serendipity_formatTime() denn patchen?
Gruß,
Farli
@Timbalu
Die "$year="-Option funktionierte so leider nicht.
Re: Vordatierung
Posted: Mon Feb 14, 2011 2:26 pm
by garvinhicking
Hi!
Ok, das komplizierte daran meinst du vermutlich in Form von Schaltjahren und so?
serenipity_formatTime() ist in der include/functions.inc.php. Ich sehe aber gerade, wichtiger wäre die serendipity_strftime() Funktion in derselben Datei
Da wird $timestamp übermittelt. Da siehst du auch wie es an die serendipit_serverOffsetHour() übermittelt wird. Am einfachsten wäre es daher, wenn du serendipity_serverOffsetHour (selbe Datei) patchst:
Code: Select all
function serendipity_serverOffsetHour($timestamp = null, $negative = false) {
global $serendipity;
if ($timestamp == null) {
$timestamp = time();
}
$year = date('Y', $timestamp);
$month = date('m', $timestamp);
$day = date('d', $timestamp);
$hour = date('H', $timestamp);
$minute = date('i', $timestamp);
$second = date('s', $timestamp);
return mktime($hour, $minute, $second, $month, $day, $year + 10);
}
Grüße,
Garvin
Re: Vordatierung
Posted: Mon Feb 14, 2011 2:32 pm
by Farlion
Danke, werde ich gleich mal testen.
Die Schaltjahre vertusche ich mal, indem ich bei der Ausgabe zwar das Datum, nicht aber den Wochentag ausgeben lasse

Ich melde mich gleich mit dem Ergebnis wieder:)
Update:
Super gelöst, Garvin

Mit dem gepatchten "serendipity_serverOffsetHour" funktioniert es und sogar die Schaltjahre werden korrekt errechnet
Einzig den Kalender kann ich nicht nutzen, da der erstaunlicherweise 20 Jahre in die Zukunft zeigt. Aber den wollte ich eh nicht einsetzen.
Saubere Arbeit, bedanke mich vielmals.
Gruß,
Farli
Re: Vordatierung
Posted: Wed Feb 16, 2011 3:58 pm
by Farlion
Ok, funktioniert jetzt doch nicht. Zum einen werden neu geschriebene Beiträge jetzt automatisch auf "zeitgesteuert" gesetzt und lassen sich nicht veröffentlichen, zum anderen habe ich jetzt teilweise Daten im Backend, die 40-50 Jahre in die Zukunft zeigen

Re: Vordatierung
Posted: Wed Feb 16, 2011 5:09 pm
by Timbalu
sachichdoch...!

so, und jetzt probier mal 175316 Stunden +- in der Zeitzonen"-Einstellung.
upps das waren 20 Jahre
10 sind ~87658
Re: Vordatierung
Posted: Wed Feb 16, 2011 9:19 pm
by Farlion
Werd ich mal testen, danke
Update:
Hab noch 14 Stunden drangehängt, die fehlten irgendwie. Aber es scheint zumindest für die Artikel zu passen. Der Kalender lebt zwar im Heute, Artikel und Kommentare zeigen allerdings das vorgesehene Datum.