WBCE CMS Forum

WBCE CMS – Way Better Content Editing.

You are not logged in.

#1 09.06.2023 16:29:23

giz
Member

Funktion Start-Ablaufdatum

Hallo zusammen,

vielleicht verstehe ich die Funktionen bei der Beitragserstellung ja falsch.
Ich habe dort ja die Möglichkeit einem Beitrag ein Startdatum zuzuordnen, sodass er zum angegebenen Datum sichtbar in der Übersicht wird.
Soweit so gut; leider wird der Beitrag (als Link) aber schon über "nächster Beitrag" in der Next|Last -Leiste am unteren Ende angezeigt, was mit Klick darauf dann natürlich in einem 404 endet. Gleiches Verhalten (404) zeigt sich auch, wenn das Startdatum erreicht wird;
ich lasse zB eine Übersicht in einer seperaten Seite via NIA anzeigen, dort wird der Beitrag dann bei eintretendem Startdatum angezeigt, führt aber in einen 404; erst wenn ich diesen Beitrag erneut speichere ist der 404 weg....
oder muss ich gleichzeitig den Beitrag als "Aktiv: Nein" kennzeichnen? Und aktiviert er sich dann zum angegebenen Startdatum selbst?? roll  Spekulatius: Greifen da die "Zugriffs-, Ansichtsrechte" nicht, oder nicht komplett??


WBCE 1.6.1 - Fraggy 2.7.1 - PHP 8.2.13- All-inkl
Ein Leben ohne Hund ist möglich, aber sinnlos

Offline

#2 10.06.2023 10:14:18

florian
Administrator

Re: Funktion Start-Ablaufdatum

Das ist ein Bug.
Ändere in der functions.php, Zeile 869-865 (SQL-Query in der function mod_nwi_post_get) zu

$t = time();
$sql = sprintf(
        "SELECT `t1`.*, " .
        "  (SELECT `link` FROM `%smod_news_img_posts` AS `t2` WHERE `t2`.`$order_by` > `t1`.`$order_by` AND `section_id`=$section_id AND (`published_when` = '0' OR `published_when` <= $t) AND (`published_until` = '0' OR `published_until` >= $t) AND `active`=1 $query_group ORDER BY `$order_by` $prev_dir LIMIT 1 ) as `prev_link`, ".
        "  (SELECT `link` FROM `%smod_news_img_posts` AS `t3` WHERE `t3`.`$order_by` < `t1`.`$order_by` AND `section_id`=$section_id AND (`published_when` = '0' OR `published_when` <= $t) AND (`published_until` = '0' OR `published_until` >= $t) AND `active`=1 $query_group ORDER BY `$order_by` $direction LIMIT 1 ) as `next_link` " .
        "FROM `%smod_news_img_posts` AS `t1` " .
        "WHERE `post_id`=%d",
        TABLE_PREFIX, TABLE_PREFIX, TABLE_PREFIX, $post_id
    );

Das behebt das Problem sowohl in NWI als auch NWIA

Last edited by florian (10.06.2023 10:15:20)


Code allein macht nicht glücklich. Jetzt spenden!

Offline

#3 10.06.2023 12:16:43

giz
Member

Re: Funktion Start-Ablaufdatum

ok,
die zeitgesteuerte Anzeige(sowohl Ein-, als auch Ausblenden) des Links funktioniert jetzt richtig. thumb_up
dennoch führt es zum 404 bei klick auf den Link, muss also den Beitrag erneut abspeichern...


WBCE 1.6.1 - Fraggy 2.7.1 - PHP 8.2.13- All-inkl
Ein Leben ohne Hund ist möglich, aber sinnlos

Offline

#4 15.06.2023 08:10:39

giz
Member

Re: Funktion Start-Ablaufdatum

giz wrote:

ok,
die zeitgesteuerte Anzeige(sowohl Ein-, als auch Ausblenden) des Links funktioniert jetzt richtig. thumb_up
dennoch führt es zum 404 bei klick auf den Link, muss also den Beitrag erneut abspeichern...

noch irgendwelche Ideen, oder Lösungsvorschläge dazu?

Vielleicht hatte ich mich ja auch etwas misverständlich ausgedrückt;
-ich schreibe einen Beitrag
-ich setze ein veröffentlichungsdatum, das in der Zukunft liegt
-in NIA und der Übersichtsseite von NWI wird der Link zur angegebenen Zeit angezeigt (danke Florian)
-klick auf den Link führt zu 404
-muss den Beitrag erneut abspeichern, dann korrekte Anzeige

Danke für die Unterstützung
btw: die functions.php heißt functions.inc.php (Hinweis, falls das andere Änderungswillige nicht finden)


WBCE 1.6.1 - Fraggy 2.7.1 - PHP 8.2.13- All-inkl
Ein Leben ohne Hund ist möglich, aber sinnlos

Offline

#5 15.06.2023 17:28:28

bernd
Developer

Re: Funktion Start-Ablaufdatum

Soweit ich das rekonstruieren kann, wird bei Beiträgen mit Veröffentlichungsdatum in der Zukunft das Acces-File in /pages/posts (noch) nicht angelegt, was dann natürlich zu einem 404 führt.
Bei erneutem Abspeichern nach erreichen des Datums wird das File dann angelegt.
Das Verhalten ist natürlich sehr "unglücklich" und wohl ein Bug.
Ich sehe nur noch nicht wirklich wo es da genau klemmt  roll

Edit:
bin ein Stück weiter:
in der save_post.php wird ab Zeile 210 (nachdem bereits Accessfile und Datenbankeintrag angelegt wurden), nochmal $active manipuliert und auf 0 gesetzt wenn $publishedwhen in der Zukunft liegt.
Daraufhin wird bei $active != 1 das (bereits angelegte) Accessfile gelöscht.

Ob das nur ein "Überbleibsel" aus irgendwelchen älteren Versionen ist und einfach übersehen wurde, oder ob das einen tieferen Sinn hat, kann ich nicht wirklich sagen, da müsste mal jemand ran der sich in den NWI-Interna besser auskennt ...

Wenn du ganz mutig bist  devil könntest du mal in der save_post.php den Bereich von Zeile 210 bis einschließlich 221 auskommentieren und gucken ob das irgendwelche Nebenwirkungen hat ...

Last edited by bernd (15.06.2023 17:55:03)


... nein in Europa verwenden wir beim Programmieren nicht € statt $ ...

Offline

Liked by:

giz

#6 15.06.2023 18:19:33

florian
Administrator

Re: Funktion Start-Ablaufdatum

Das war ich beim letzten Update, weil es mich störte, dass depublizierte Beiträge trotzdem noch ein Accessfile hatten. Nur hatte ich nicht bedacht, dass sich die Accessfiles ja nicht von selbst generieren, wenn das Startdatum erreicht ist.
In die Funktion mod_nwi_posts_getall (~ Zeile 1141) und mod_nwi_post_get (~ Zeile 870) muss noch ein Check, ob die jeweilige (Access-)Datei vorhanden ist, und wenn nicht, muss diese generiert werden.
Ungefähr so:

$filename = WB_PATH.PAGES_DIRECTORY.'/'.$post['link'].PAGE_EXTENSION;
if (!file_exists($filename)) {
    mod_nwi_create_file($filename, '', $post['post_id'], $post['section_id'], 'xxx page_id xxx');
}

Rot markiert: Gibt es eine einfache Möglichkeit, an die page_id ranzukommen, wenn die Konstante PAGE_ID nicht gesetzt ist, oder muss ich da noch einen SQL-Abfragerattenschwanz reinbauen, der anhand der section_id dann aus der sections-Tabelle dann die page_id liefert?

Last edited by florian (15.06.2023 18:20:56)


Code allein macht nicht glücklich. Jetzt spenden!

Offline

Liked by:

giz

#7 15.06.2023 19:16:59

bernd
Developer

Re: Funktion Start-Ablaufdatum

Dann müßte man doch  eigentlich nur die Zeile 210 ($publishedwhen) rausschmeißen?
Das $publisheduntil in 211 macht ja durchaus Sinn nicht mehr benötigte Accessfiles aufzuräumen.
Selbst wenn man einen abgelaufenen Beitrag nochmal benötigen sollte, muss man ihn ohnehin editieren wodurch das Accessfile neu angelegt wird.


... nein in Europa verwenden wir beim Programmieren nicht € statt $ ...

Offline

Liked by:

giz

#8 16.06.2023 07:37:23

giz
Member

Re: Funktion Start-Ablaufdatum

Danke euch beiden für das Eruieren und Bemühen den Käfer zu vertreiben.
thumb_up


WBCE 1.6.1 - Fraggy 2.7.1 - PHP 8.2.13- All-inkl
Ein Leben ohne Hund ist möglich, aber sinnlos

Offline

#9 16.06.2023 11:23:47

giz
Member

Re: Funktion Start-Ablaufdatum

bernd wrote:

...
Wenn du ganz mutig bist  devil könntest du mal in der save_post.php den Bereich von Zeile 210 bis einschließlich 221 auskommentieren und gucken ob das irgendwelche Nebenwirkungen hat ...

War ich dann mal und hab's ausprobiert wink
also:
-Beitrag erstellt mit start- und ablaufdatum
-Anzeige in Übersicht korrekt
-Link funktioniert (!), kein 404
-Wenn man allerdings den kompletten Link zu dieser Seite kennt (https://www.tld.de/posts/linkzurseite-1232123.php), kann man sie auch nach dem Ablaufdatum abrufen, somit also eher kontraproduktiv.
Sonst bisher keine anderen Sideeffects gemerkt....
ich werde diese Änderung wieder rückgängig machen, danke für die Idee!


WBCE 1.6.1 - Fraggy 2.7.1 - PHP 8.2.13- All-inkl
Ein Leben ohne Hund ist möglich, aber sinnlos

Offline

#10 16.06.2023 11:30:39

bernd
Developer

Re: Funktion Start-Ablaufdatum

Temporärer Würgaround um den 404 zu vermeiden (bis wir da eine bessere Lösung zusammengeklöppelt haben) wäre,
nur die Zeile 210 auskommentieren, dann wird das Accessfile für einen künftigen Beiträge nicht gelöscht.


... nein in Europa verwenden wir beim Programmieren nicht € statt $ ...

Offline

#11 16.06.2023 12:35:46

giz
Member

Re: Funktion Start-Ablaufdatum

Ich würge, danke lol


WBCE 1.6.1 - Fraggy 2.7.1 - PHP 8.2.13- All-inkl
Ein Leben ohne Hund ist möglich, aber sinnlos

Offline

#12 17.06.2023 07:43:38

florian
Administrator

Re: Funktion Start-Ablaufdatum

Tausche mal die functions.inc.php durch die hier angefügte aus (zurück in .php umbenennen).
Den Würgaround braucht es dann (hoffentlich angel ) nicht mehr.

Eine Anmerkung: Das ganze Erzeugen/Entfernen von Accessfiles passiert nur beim (neu) Laden von Beiträgen oder Übersichtsseiten.
Das heißt z.B., wenn Du einen zeitgesteuerten Beitrag auf 8:30 stellst und um 8:31 ins Dateisystem oder auf die Übersichtsseite oder einen vorheriger/nächster-Beitrag-Link schaust, ohne die jeweilige Seite im Frontend neu zu laden, hat sich (auch) bei den Accessfiles noch nichts getan.


Code allein macht nicht glücklich. Jetzt spenden!

Offline

Liked by:

giz

#13 18.06.2023 08:03:24

giz
Member

Re: Funktion Start-Ablaufdatum

So, ausgewürgt.
Danke für's Coden,
Start- Ablauf, inkl. korrekter Anzeige in Links/Übersicht passt jetzt.
keine erkennbaren Sideeffects
keine Fehler im errorlog

Eine Anmerkung: Das ganze Erzeugen/Entfernen von Accessfiles passiert nur beim (neu) Laden von Beiträgen oder Übersichtsseiten. Das heißt z.B.,........ohne die jeweilige Seite im Frontend neu zu laden, hat sich (auch) bei den Accessfiles noch nichts getan.

Und deshalb kann man auf die Beiträge (wenn man den kompletten Link dazu hat) auch zugreifen, wenn sie nach dem Ablauf(datum) wieder versteckt werden? Verstehe... Und mit Neu-Laden meinst Du Neu-Speichern, oder? Denn sonst würde sich ja nix ändern, nur wenn ich die Seite neu lade....

das bedeutet also, wenn die suchmaschinenbots in der "sichtbaren" Zeit der Seite diese im Index listen, bleibt sie jederzeit auffindbar und auch abrufbar, bis ich diese nochmals abspeichere...OK, habe ja keine Staatsgeheimnisse die ich temporär anzeigen lasse lol

Danke Dir/Euch für die Arbeit und schönen Sonntag noch! thumb_up


WBCE 1.6.1 - Fraggy 2.7.1 - PHP 8.2.13- All-inkl
Ein Leben ohne Hund ist möglich, aber sinnlos

Offline

#14 18.06.2023 15:04:01

florian
Administrator

Re: Funktion Start-Ablaufdatum

Nein, das ist nicht ganz korrekt.

Mit Neuladen meine ich Neuladen der Seite im Frontend, also durch Klick auf "Aktualisieren" oder F5 bzw. einfach den Aufruf der Seite.
Das heißt, wenn ein Bot oder Besuchy eine Übersichtsseite aufruft, werden im Hintergrund fehlende Accessfiles von gerade online gegangenen Beiträgen erzeugt und von gerade abgelaufenen gelöscht.

Last edited by florian (18.06.2023 15:05:10)


Code allein macht nicht glücklich. Jetzt spenden!

Offline

#15 18.06.2023 16:44:26

giz
Member

Re: Funktion Start-Ablaufdatum

ok, got it, danke;
ändert aber nichts an der Möglichkeit des direkten Zugriffs, wenn man den Link kennt. Passt für mich aber.


WBCE 1.6.1 - Fraggy 2.7.1 - PHP 8.2.13- All-inkl
Ein Leben ohne Hund ist möglich, aber sinnlos

Offline

Board footer

up