1. Herzlich willkommen bei WPDE.org, dem grössten und ältesten deutschsprachigen Community-Forum rund um das Thema WordPress. Du musst angemeldet oder registriert sein, um Beiträge verfassen zu können.
    Information ausblenden

Problem mit Datumslokalisierung in einem Plugin (date_i18n)

Dieses Thema im Forum "Plugins und Widgets" wurde erstellt von h-u-g-o, 29. Oktober 2009.

  1. h-u-g-o

    h-u-g-o Well-Known Member

    Registriert seit:
    23. November 2008
    Beiträge:
    704
    Zustimmungen:
    0
    Jetzt habe ich noch eine Frage zur Ausgabe der Geburtstage des aktuellen Tages. Mir ist aufgefallen, dass diese auch noch eine gewisse Zeit des folgenden Tages angezeigt werden, und das auch noch mit falschem Datum, nämlich eben dem des Folgetages. Ich nehme mal an, dass der Fehler in folgender Funktion zu finden ist.

    PHP:
    Entschuldige, aber du musst dich registrieren oder anmelden um den Inhalt sehen zu können!
    Mit "INTERVAL 6 HOUR" und den Zahlen 1, 5, 6 und 10 kann ich hier nicht so viel anfangen.
     
  2. Ammaletu

    Ammaletu Well-Known Member
    Ehrenmitglied

    Registriert seit:
    14. Juli 2007
    Beiträge:
    4.696
    Zustimmungen:
    0
    Gehört hab ich davon auch noch nie, aber ich verlinke mal die ergoogelte Doku:
    http://dev.mysql.com/doc/refman/5.1/en/date-and-time-functions.html#function_date-add

    Wenn ich das richtig verstehe, holt die Anweisung das aktuelle Datum und zieht davon sechs Stunden ab. Substring(xxx, 1, 10) ist dann einfach das Rausholen des gewünschten Teiles des Ergebnisstrings, das wird schon stimmen. Aber was das soll, dass statt des aktuellen Datums das aktuelle Datum - 6 Stunden benutzt wird, kann ich Dir auch nicht sagen. Wo stammt der Code denn her? Vielleicht musst Du da mal den Autor fragen?!

    Ich bin ohnehin nicht sicher, was das soll. Verstehe ich das richtig, dass die SQL-Abfragen für $today und $todaymd nur dazu dienen, den Datumsstring zu erhalten? Das würde ich gleich mit PHP machen (date-Funktion?).
     
  3. h-u-g-o

    h-u-g-o Well-Known Member

    Registriert seit:
    23. November 2008
    Beiträge:
    704
    Zustimmungen:
    0
    Ammaletu, vielen Dank für deine Antwort!

    Der Code stammt aus dem Plugin 'Birthday List' von E. J. Knapp. Er ist leider nur ziemlich sporadisch ansprechbar. Da seine Website gerade "under construction" ist und sich das Plugin (vielleicht aus gutem Grund?) nicht im WordPress-Plugin-Verzeichnis befindet, habe ich es mal hochgeladen: Birthday List. ~Link entfernt~

    Das scheint tatsächlich so zu sein. :-?

    [edit]Gehe ich eigentlich recht in der Annahme, dass die Datenbank nur aktualisiert wird, wenn auch am Tag des Geburtstages das PHP-Skript aufgerufen wird?

    PHP:
    Entschuldige, aber du musst dich registrieren oder anmelden um den Inhalt sehen zu können!
    [/edit]
     
    #23 h-u-g-o, 2. November 2009
    Zuletzt bearbeitet: 20. November 2009
  4. Ammaletu

    Ammaletu Well-Known Member
    Ehrenmitglied

    Registriert seit:
    14. Juli 2007
    Beiträge:
    4.696
    Zustimmungen:
    0
    Kann sein, dass es so gedacht war, aber dann müsste dort "==" stehen statt "=". Aber ganz ehrlich, da blicke ich nicht wirklich durch, was da passiert. Wieso muss die DB denn aktualisiert werden? Steht da das Alter tatsächlich als Zahl in der DB? Das macht doch gar keinen Sinn!?!
     
  5. h-u-g-o

    h-u-g-o Well-Known Member

    Registriert seit:
    23. November 2008
    Beiträge:
    704
    Zustimmungen:
    0
    Das mit dem Vergleich war mir noch gar nicht aufgefallen. So macht die if-Abfrage ja überhaupt keinen Sinn.

    Ich blicke da leider auch nicht durch. :(

    Ja, das Alter steht tatsächlich in der DB; vielleicht, um den Zugriff zu vereinfachen. :-?

    Außerdem wird aber auch das Datum des nächsten Geburtstages sowie das Datum, ab wann auf diesen Geburtstag hingewiesen werden soll (7 Tage im Voraus) aktualisiert.

    Kann denn grundsätzlich eine Aktualisierung überhaupt stattfinden, ohne dass ein Skript aufgerufen wird?
     
  6. Ammaletu

    Ammaletu Well-Known Member
    Ehrenmitglied

    Registriert seit:
    14. Juli 2007
    Beiträge:
    4.696
    Zustimmungen:
    0
    Nein. Es muss so oder so eine PHP-Datei aufgerufen werden, sei es indem sich das per internem WP-Cron an einen Aufruf des Blogs hängt oder sei es einfach per cronjob.

    Die Architektur kommt mir suspekt vor. Keine Ahnung, für welche Situation das ursprünglich mal geschrieben wurde, aber es kann doch z.B. keinen nennenswerten Aufwand darstellen, das Alter durch simple Subtraktion von aktuellem Jahr minus Geburtsjahr auszurechnen. Sowas muss doch nicht redundant in der Datenbank stehen.

    Wenn Du Zeit und Spaß dran hast und sich der ursprüngliche Autor nicht mehr meldet, wäre es vermutlich das beste, Du würdest das sinnvoll weiterentwickeln und dann ins WP-Repository stellen. Dann haben auch mehr Leute eine Chance auf den Quelltext zu schauen und Fehler zu beheben.
     
  7. h-u-g-o

    h-u-g-o Well-Known Member

    Registriert seit:
    23. November 2008
    Beiträge:
    704
    Zustimmungen:
    0
    So etwas gibt es, einen internen WP-Cron?

    Ich gehe schon davon aus, dass es tatsächlich für den Zweck geschrieben wurde, für den es jetzt auch zum Einsatz kommt.

    Das stimmt schon. Na ja, ich wäre erst mal froh, wenn es korrekt laufen würde, also ein aktueller Geburstag auch wirklich nur an dem Tag selbst, und zwar von 00:00:00 Uhr bis 23:59:59 Uhr, angezeigt würde. Ich habe schon etwas herumgespielt, leider hat's nicht geklappt.

    Dazu gehört ja nicht nur Zeit und Spaß, sondern auch die Fähigkeit. :roll: :mrgreen:

    Was meinst du denn genau mit WP-Repository?
     
  8. Ammaletu

    Ammaletu Well-Known Member
    Ehrenmitglied

    Registriert seit:
    14. Juli 2007
    Beiträge:
    4.696
    Zustimmungen:
    0
    Ja, siehe Codex:
    http://codex.wordpress.org/Function_Reference/wp_schedule_event

    Man kann damit Funktionen z.B. einmal täglich oder so laufen lassen, aber eben nur wenn das Blog auch regelmäßig aufgerufen wird.


    Ich meinte mehr, ob es z.B. speziell für eine Seite mit sehr hohen Zugriffszahlen geschrieben wurde oder mit sehr vielen Mitgliedern. Wieso sonst sollte man sich z.B. die Berechnung des Alters sparen!? Aber ich vermute mal eher, dass der Autor sich besser mit SQL als mit PHP auskennt und das auch nicht besonders gut. ;)


    Tja, ich nehme halt an, dass man das wirklich mal von grundauf überholen müsste. Der Impuls, das einfach selber zu machen, ist durchaus da, aber ich habe sowas von keine Freizeit, dass das eigentlich nur wieder als Desaster enden kann. :confused: Davon abgesehen müsste man dann schon wenigstens den ursprünglichen Autor fragen, was seine Pläne für das Plugin sind. Ich schaue gerade auf seiner Seite. Viel steht dazu nicht, aber zumindest sollte man ihn darüber kontaktieren können.
    http://www.ejknapp.com/blog/wordpress-plugins/birthday-list/


    http://wordpress.org/extend/plugins/
     
  9. h-u-g-o

    h-u-g-o Well-Known Member

    Registriert seit:
    23. November 2008
    Beiträge:
    704
    Zustimmungen:
    0
    Danke sehr!

    Ach so. Ja, das ist gut möglich.

    Oh, dann lass lieber erst mal die Finger davon, bevor du dich ins Unglück stürzt. :neutral:

    Du meinst, um nichts doppelt zu entwickeln?

    Zumindest ist die Seite wieder online. Kontaktiert habe ich den Autor bereits, aber wie gesagt, er antwortet nur sporadisch, wenn überhaupt. Das letzte Mal ist lang her.

    Ach so, alles klar. Danke!
     
  10. Ammaletu

    Ammaletu Well-Known Member
    Ehrenmitglied

    Registriert seit:
    14. Juli 2007
    Beiträge:
    4.696
    Zustimmungen:
    0
    Naja, auch aus Nettigkeit. Rechtlich gesehen müsste das Plugin unter der GPL stehen und man dürfte es also nach Belieben verändern und neu veröffentlichen, so lange man den Namen des ursprünglichen Autors dran lässt. Aber netter ist es schon, wenn man erstmal fragt, ob das dem Autor Recht ist. ;) Und ja, könnte ja sein, dass er das Ding schon komplett umgeschrieben hat und kurz davor ist, eine neue Version zu veröffentlichen. Glaube ich jetzt nicht direkt, aber könnte ja sein.
     
  11. h-u-g-o

    h-u-g-o Well-Known Member

    Registriert seit:
    23. November 2008
    Beiträge:
    704
    Zustimmungen:
    0
  12. h-u-g-o

    h-u-g-o Well-Known Member

    Registriert seit:
    23. November 2008
    Beiträge:
    704
    Zustimmungen:
    0
    Hat da vielleicht mittlerweile jemand eine Idee zu? :neutral:
     
  13. cinoa

    cinoa Well-Known Member

    Registriert seit:
    7. Mai 2009
    Beiträge:
    111
    Zustimmungen:
    2
    Deutsche Version von BirthdayList

    Mit dem Autor zusammen habe ich das PlugIn lokalisiert - wen's interessiert melde sich bitte hier oder an cschuster.79271.googlemail.com.

    Schönen Gruß
    Cinoa
     
  14. h-u-g-o

    h-u-g-o Well-Known Member

    Registriert seit:
    23. November 2008
    Beiträge:
    704
    Zustimmungen:
    0
  15. majo

    majo New Member

    Registriert seit:
    25. September 2012
    Beiträge:
    1
    Zustimmungen:
    0
    falscher Tag (+1) am eigentlichen Gebrutstag

    Schon etwas her, aber falls jemand noch das Problem mit dem falschen Tag (+1) am eigentlichen Geburtstag hat: Wir sind bei einem Kunden auf das Plugin gestoßen und haben es wie folgt korrigiert. Der HTML-Code ist wohl nicht mehr original, aber die PHP-Snippets könnt ihr euch ja rausnehmen.

    Zeile 439-468, nbday.php
    PHP:
    Entschuldige, aber du musst dich registrieren oder anmelden um den Inhalt sehen zu können!
    Viele Grüße,
    Majo
     
  16. h-u-g-o

    h-u-g-o Well-Known Member

    Registriert seit:
    23. November 2008
    Beiträge:
    704
    Zustimmungen:
    0
    Sehr anständig von dir, dass du dich hier extra registriert hast, um den Bugfix zu posten. Vielen Dank! :)
     
  1. Diese Seite verwendet Cookies, um Inhalte zu personalisieren, diese deiner Erfahrung anzupassen und dich nach der Registrierung angemeldet zu halten.
    Wenn du dich weiterhin auf dieser Seite aufhältst, akzeptierst du unseren Einsatz von Cookies.
    Information ausblenden
  1. Diese Seite verwendet Cookies, um Inhalte zu personalisieren, diese deiner Erfahrung anzupassen und dich nach der Registrierung angemeldet zu halten.
    Wenn du dich weiterhin auf dieser Seite aufhältst, akzeptierst du unseren Einsatz von Cookies.
    Information ausblenden