Vordatierung

Hier können Probleme und alles andere in Deutscher Sprache gelöst werden.
Post Reply
Farlion
Regular
Posts: 200
Joined: Sun Nov 05, 2006 3:27 pm
Contact:

Vordatierung

Post 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? :)
Mit S9Y erstellt:
Nichts mehr.
Timbalu
Regular
Posts: 4598
Joined: Sun May 02, 2004 3:04 pm

Re: Vordatierung

Post 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
Farlion
Regular
Posts: 200
Joined: Sun Nov 05, 2006 3:27 pm
Contact:

Re: Vordatierung

Post 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 ;)
Mit S9Y erstellt:
Nichts mehr.
Timbalu
Regular
Posts: 4598
Joined: Sun May 02, 2004 3:04 pm

Re: Vordatierung

Post 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....# :roll:

Ian
Farlion
Regular
Posts: 200
Joined: Sun Nov 05, 2006 3:27 pm
Contact:

Re: Vordatierung

Post 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 :)
Mit S9Y erstellt:
Nichts mehr.
garvinhicking
Core Developer
Posts: 30022
Joined: Tue Sep 16, 2003 9:45 pm
Location: Cologne, Germany
Contact:

Re: Vordatierung

Post 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
# Garvin Hicking (s9y Developer)
# Did I help you? Consider making me happy: http://wishes.garv.in/
# or use my PayPal account "paypal {at} supergarv (dot) de"
# My "other" hobby: http://flickr.garv.in/
Timbalu
Regular
Posts: 4598
Joined: Sun May 02, 2004 3:04 pm

Re: Vordatierung

Post 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...!? :wink:
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
Farlion
Regular
Posts: 200
Joined: Sun Nov 05, 2006 3:27 pm
Contact:

Re: Vordatierung

Post 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.
Mit S9Y erstellt:
Nichts mehr.
garvinhicking
Core Developer
Posts: 30022
Joined: Tue Sep 16, 2003 9:45 pm
Location: Cologne, Germany
Contact:

Re: Vordatierung

Post 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
# Garvin Hicking (s9y Developer)
# Did I help you? Consider making me happy: http://wishes.garv.in/
# or use my PayPal account "paypal {at} supergarv (dot) de"
# My "other" hobby: http://flickr.garv.in/
Farlion
Regular
Posts: 200
Joined: Sun Nov 05, 2006 3:27 pm
Contact:

Re: Vordatierung

Post 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
Mit S9Y erstellt:
Nichts mehr.
Farlion
Regular
Posts: 200
Joined: Sun Nov 05, 2006 3:27 pm
Contact:

Re: Vordatierung

Post 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 :)
Mit S9Y erstellt:
Nichts mehr.
Timbalu
Regular
Posts: 4598
Joined: Sun May 02, 2004 3:04 pm

Re: Vordatierung

Post by Timbalu »

sachichdoch...! ;-)
so, und jetzt probier mal 175316 Stunden +- in der Zeitzonen"-Einstellung.
upps das waren 20 Jahre
10 sind ~87658
Regards,
Ian

Serendipity Styx Edition and additional_plugins @ https://ophian.github.io/ @ https://github.com/ophian
Farlion
Regular
Posts: 200
Joined: Sun Nov 05, 2006 3:27 pm
Contact:

Re: Vordatierung

Post 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.
Mit S9Y erstellt:
Nichts mehr.
Post Reply