Welcome to the LimeSurvey Community Forum

Ask the community, share ideas, and connect with other LimeSurvey users!

Abstimmung einmal täglich erlauben

More
1 year 6 months ago - 1 year 6 months ago #256196 by mv_alex
Tja, das ist ein bisschen seltsam...

Es ist natürlich kein Problem, die 3600 Sekunden aufzuaddieren. Ich hab bloß Sorge, dass mir das dann bei der Umstellung auf Sommerzeit wieder verloren geht.

Wenn ich aber die Serverzeit ausgeben lasse über
Code:
// Aktuelle Zeit des Servers
$aktuelleZeit = date("Y-m-d H:i:s");
// Zeitzone des Servers
$serverZeitzone = date_default_timezone_get();
wird mir die Zeitzone Europe/Berlin angezeigt und die gleiche Uhrzeit wie auf meinem Client.

Trotzdem wirft mir Dein Beispiel als Ablaufzeit den Folgetag um 3 Uhr aus, nicht 4 Uhr. Und das versteh ich ehrlicherweise nicht.

Gruß Alex
Last edit: 1 year 6 months ago by mv_alex.

Please Log in to join the conversation.

More
1 year 6 months ago - 1 year 6 months ago #256198 by Joffm
Ich habe einmal dieses script 
Code:
<?php
$aktuelleZeit = date("d.m.Y H:i:s");
$serverZeitzone = date_default_timezone_get();
echo "Aktuelle Zeit des Servers: ".$aktuelleZeit."<br/>";
echo "Zeitzone des Servers: ".$serverZeitzone."<br/>";
 
echo date("d.m.Y H:i",mktime(0,0,0,2,22,2024)) . "<br>";
echo date("d.m.Y H:i",mktime(4,0,0,5,16,2024)) . "<br>";
 
$day = date("j");
$month = date("m");
$year = date("Y");
$newtime = mktime(4, 0, 0, $month, $day+1, $year);
echo "Soll 4:00 Uhr morgen früh sein: ".date("d.m.Y H:i",$newtime);
?>


bei W3Schools
 
und auf meinem Server 
 
laufen lassen.

Ergebnis:
Zwei verschiedene Zeitzonen, zwei verschiedene aktuelle Uhrzeiten.
Aber mktime ist dies natürlich völlig wurscht. Dort werden die Parameter ja unabhängig davon eingegeben.

Jetzt gäbe es noch die Möglichkeit, dass es bei Eurem Server eine Zeitkorrektur gibt, ähnlich der, die man in den "Globalen Einstellungen" in LimeSurvey einstellen kann.
Dies ist dann ganz praktisch, wenn der Server in Deutschland steht, Du aber eine Umfrage in Uruguay durchführen willst. Ansonsten würde ein Datepicker anfänglich immer die deutsche Zeit anzeigen.

Soll heißen, diese Geschichte musst Du bei Euch suchen.
Ehrlich gesagt, ist es doch in der Praxis schnurzpiepegal, ob das Cookie um 0:00 Uhr oder um 1:00 Uhr endet. Es bleibt ja bei der Bedingung: Einmal in 24 Stunden.

Joffm

Volunteers are not paid.
Not because they are worthless, but because they are priceless
Last edit: 1 year 6 months ago by Joffm.

Please Log in to join the conversation.

More
1 year 6 months ago #256753 by mv_alex
Auf meinem Server bekomme ich die gleiche Ausgabe wie Du (mal von den Umlauten abgesehen  ):
 

Aber Du hast Recht - praktisch ist es eigentlich völlig egal, ob das Cookie um 23 Uhr, Mitternacht oder 01:00 abläuft. Hauptsache, es kann nur einmal in 24 Stunden abgestimmt werden.

Ich poste das Snippet zum Einfügen in application/helpers/SurveyRuntimeHelper.php ab Zeile 1295 hier noch einmal vollständig, falls noch jemand nach dieser Lösung sucht: 
Code:
            // Cookies
            // Determine current date
            $currentday = date("j");
            $currentmonth = date("m");
            $currentyear = date("Y");
           
            // Generate new value with desired time and day increased by 1
            $midnight = mktime(1, 0, 0, $currentmonth, $currentday+1, $currentyear);
            if ($surveyActive &amp;&amp; $this->aSurveyInfo['usecookie'] == "Y") {
                if (!$oSurvey->getHasTokensTable()) {
                    setcookie("LS_" . $this->iSurveyid . "_STATUS", "COMPLETE", $midnight); //Cookie will expire at midnight
                }
            }

Jetzt muss ich nur noch dran denken, das beim nächsten Update nicht gleich wieder zu überschreiben ... 

Vielen Dank für Deine Unterstützung!

Gruß Alex

Please Log in to join the conversation.

Moderators: holchJoffmtpartner

Lime-years ahead

Online-surveys for every purse and purpose