WBCE CMS Forum

WBCE CMS – Way Better Content Editing.

Du bist nicht angemeldet.

#1 07.11.2023 13:04:24

mrbaseman
Developer

fehlende Access-Files

Hallo,

mir ist aufgefallen dass bei NWI die zeitgesteuerte Veröffentlichung von Beiträgen nicht mehr richtig funktioniert. Die Kurzversion erscheint zwar zum eingestellten Datum, aber wenn man auf den Weiterlesen-Link klickt, dann fehlt das zugehörige Access file, sofern beim Speichern des Beitrags das Published-When-Datum in der Zukunft lag.

Ist der Beitrag mal öffentlich (also dieses Published-When-Datum erreicht), dann reicht es, den Beitrag im Backend zu öffnen und einfach nochmal auf Speichern klicken. - Aber das ist natürlich nicht wirklich praktikabel für eine zeitgesteuerte Veröffentlichung.

Ich vermute, das Problem liegt an dieser Änderung. Ich seh da nicht, wie es angedacht war, dass das Accessfile dann geschrieben wird, wenn die Zeit der Veröffentlichung erreicht ist. Ich hab auch schon auf den aktuellen Stand vom main-Branch vom NWI aktualisiert, aber das Problem besteht auch dort.

Viele Grüße,
Martin

Offline

#2 07.11.2023 13:49:02

mrbaseman
Developer

Re: fehlende Access-Files

ich hab mal versucht, die Fallunterscheidung auszukommentieren. Dann wird zwar das Access-File wieder geschrieben, aber das hat zur Folge, dass man auch unveröffentlichte Beiträge aufrufen kann, wenn man den Post-Link kennt. Ich vermute die Intention war, genau das zu unterbinden.

Dann müsste man aber das Access-File immer dann schreiben, wenn ein Weiterlesen-Link ausgegeben wird (auch aus NWI heraus getriggert) - vielleicht ist das bei mir die Besonderheit.

Oder man schreibt immer das Access-File, und prüft in mod_nwi_post_show neben dem aktiv/inaktiv-Flag auch noch das Datum, so wie derzeit in save_post

Offline

#3 07.11.2023 14:01:42

florian
Administrator

Re: fehlende Access-Files

Ich dachte, ich hätte das behoben; siehe https://forum.wbce.org/viewtopic.php?pid=42308#p42308


Code allein macht nicht glücklich. Jetzt spenden!

Offline

#4 07.11.2023 17:20:11

mrbaseman
Developer

Re: fehlende Access-Files

Hallo Florian,

hast recht, in der aktuellen NWI-Version aus dem Git-Repository besteht das Problem nicht mehr.

Ich hatte NWI noch auf Version 5.0.21, hab dann herum experimentiert, bis ich die Zeilen in save_post gefunden habe, bei denen das Access-File gelöscht worden ist. In 5.0.22 (bzw. main branch) ist das Problem behoben, aber was mich irritiert hat: es wird nach wie vor das Access-File gelöscht, wenn die Publish time beim Speichern in der Zukunft liegt. Ich hatte nicht getestet, dass ich abwarte, bis diese Zeit erreicht ist, um dann den Beitrag nochmal aufzurufen. Den Mechanismus um das Accessfile anzulegen habe ich auch in 5.0.21 vergeblich gesucht. Nun ja, die commit message hätte mich vielleicht schon darauf stoßen können, dass genau damit das Problem behoben wird, das ich auch sehe smile

Ich hab gerade nochmal getestet, mit 5.0.22 funktioniert das Anlegen der Access-files wie es sein sollte.

Offline

Liked by:

florian

#5 07.11.2023 23:42:10

hpzaun
Mitglied

Re: fehlende Access-Files

Hallo,
Hier wird hier von Version 5.0.22 geredet.
Auf dem AOR steht aber noch die Version 5.0.21 und der Download-Link geht auch noch auf Git-Version 5.0.21

Muss die Version  v5.0.22 - 2023/06/17 noch im Git freigeschaltet werden?
https://github.com/WBCE/News-with-Image … 2e44b26b0b

Ich habe auch den Droplets-Fehler mit getNewsItems abgeschnitten nach NWI Update .
Wird er mit dem Update auf v5.0.22 automatisch behoben oder muss ich den Code händisch einfügen?
Schönen Abend.

Offline

#6 10.11.2023 15:48:22

florian
Administrator

Re: fehlende Access-Files

Ich würde schauen, ob sich das Sortierproblem in den Griff bekommen lässt, und das dann gesammelt als Version .23 rausbringen.


Code allein macht nicht glücklich. Jetzt spenden!

Offline

#7 11.11.2023 00:50:34

mrbaseman
Developer

Re: fehlende Access-Files

ich hab gerade noch gefunden, warum sich die Zeitstempel der Access-Files bei jedem Aufruf ändern, obwohl das eigentlich ja verhindert werden sollte und den Mechanismus entsprechend korrigiert

Offline

#8 11.11.2023 10:17:40

florian
Administrator

Re: fehlende Access-Files

Danke. Ich war irgendwie der Meinung, in $filename stände wirklich nur der Dateiname und nicht auch der Pfad und die Extension. Eigenartig. Mir war noch aufgefallen, dass zwischen "pages" und "posts" ein Slash zu viel ist. (Geändert mit e3b8a41)


Code allein macht nicht glücklich. Jetzt spenden!

Offline

#9 12.11.2023 00:15:07

mrbaseman
Developer

Re: fehlende Access-Files

das mit dem $iflename war die eine Sache (aber der touch() ging dann ja nur auf $filename), und dann war da ja noch die Prüfung mit isset(), was auch für den Leerstring immer true zurückgeliefert hat, denn gesetzt ist er ja, nur eben leer...

Offline

#10 27.11.2023 01:36:19

mrbaseman
Developer

Re: fehlende Access-Files

Ich bin nochmal auf einen Bug im Zusammenhang mit den Access-Files gestoßen, von dem ich nicht so genau weiß, wie man den am besten fixt. Und zwar werden für die vor- und zurück-Links ja auch Access-Files angelegt wo nötig, allerdings wird dafür die $post_id verwendet, von dem Beitrag der gerade aufgerufen wird (und nicht mit der vorausgehenden oder nachfolgenden ID). Das hat zur Folge, dass manche Access-Files dann eine  zu hohe oder zu niedrige $post_id enthalten und demzufolge der falsche Beitrag angezeigt wird, wenn man auf den Weiterlesen-Link klickt. In function mod_nwi_post_get() in functions.inc.php müsste man daher ändern:

    $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
    );

in

     $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 `post_id` FROM `%smod_news_img_posts` AS `t2b` WHERE `t2b`.`$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_id`, ".
        "  (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`, " .
        "  (SELECT `post_id` FROM `%smod_news_img_posts` AS `t3b` WHERE `t3b`.`$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_id` " .
        "FROM `%smod_news_img_posts` AS `t1` " .
        "WHERE `post_id`=%d",
        TABLE_PREFIX, TABLE_PREFIX, TABLE_PREFIX, TABLE_PREFIX, TABLE_PREFIX, $post_id
    );

(hier bin ich mir nicht sicher, ob man die Aliase t2 und t3 in den Sub-Queries für die post_id recyceln kann)
oder vielleicht kompakter geschrieben sowas in der Art wie

    $sql = sprintf(
        "SELECT `t1`.*, " .
        "  (SELECT `link`,`post_id` 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`,`prev_id`), ".
        "  (SELECT `link`,`post_id` 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`,`next_id`) " .
        "FROM `%smod_news_img_posts` AS `t1` " .
        "WHERE `post_id`=%d",
        TABLE_PREFIX, TABLE_PREFIX, TABLE_PREFIX, $post_id
    );

(wobei ich mir nicht sicher bin, ob und wie man mehrere Aliase auf das Sub-Query korrekt ausdrückt - irgendwie möchte man ja die zwei Spalten link und post_id auch zwei Aliasen zuordnen...)

und dann eben beim Erzeugen der Access-Files:

		$filename_next = WB_PATH.PAGES_DIRECTORY.'/'.$post['next_link'].PAGE_EXTENSION;
		if ($post['next_link']!=='' && !file_exists($filename_next)) {
			mod_nwi_create_file($filename_next, '', $post['post_id'], $post['section_id'], $this_page_id);
		}
		$filename_prev = WB_PATH.PAGES_DIRECTORY.'/'.$post['prev_link'].PAGE_EXTENSION;
		if ($post['prev_link']!=='' && !file_exists($filename_prev)) {
			mod_nwi_create_file($filename_prev, '', $post['post_id'], $post['section_id'], $this_page_id);
		}

in

		$filename_next = WB_PATH.PAGES_DIRECTORY.'/'.$post['next_link'].PAGE_EXTENSION;
		if ($post['next_link']!=='' && !file_exists($filename_next)) {
			mod_nwi_create_file($filename_next, '', $post['next_id'], $post['section_id'], $this_page_id);
		}
		$filename_prev = WB_PATH.PAGES_DIRECTORY.'/'.$post['prev_link'].PAGE_EXTENSION;
		if ($post['prev_link']!=='' && !file_exists($filename_prev)) {
			mod_nwi_create_file($filename_prev, '', $post['prev_id'], $post['section_id'], $this_page_id);
		}

ändern

Offline

#11 27.11.2023 09:23:56

florian
Administrator

Re: fehlende Access-Files

Danke für den Hinweis, bitte in Repo committen


Code allein macht nicht glücklich. Jetzt spenden!

Offline

#12 27.11.2023 23:01:34

mrbaseman
Developer

Re: fehlende Access-Files

Ich hab die längliche Variante erfolgreich getestet und committed. Vielleicht könnte man es eleganter schreiben, aber da komm ich an die Grenzen meiner SQL-Kenntnisse  neutral

Offline

Liked by:

florian

Fußzeile des Forums

up