WBCE CMS Forum

WBCE CMS – Way Better Content Editing.

Du bist nicht angemeldet.

#1 15.12.2018 16:45:22

bastie
Mitglied

Beispiel-Topics löchen

Hallo zusammen,

folgendes Problem:

Ich habe eine Topics-Seite angelegt, dann auf der Startseite einen Topics-Abschnitt als Master-Topic. Danach die Beispiel-Topics gelöscht.

Nur die gelöschten Beispiele tauchen auf der Startseite immer noch auf. Wie werde ich die denn endgültig los?

Gruß
Bastie

Beitrag geändert von bastie (15.12.2018 16:54:36)


Wer Rechtschreibfehler findet, darf sie gerne herunterladen, kopieren, weiterverwenden und weiterverbreiten. Ich beanspruche in keiner Weise ein Urheberrecht. Meine Rechtschreibfehler stehen unter der MIT-Lizenz.

Offline

#2 15.12.2018 18:05:35

florian
Administrator

Re: Beispiel-Topics löchen

welche Topics/WBCE-Version? Ggf. updaten, es gab früher mal so einen Bug, siehe https://forum.wbce.org/viewtopic.php?id=332 -  aber der ist eigentlich inzwischen gefixt


Code allein macht nicht glücklich. Jetzt spenden!

Offline

#3 15.12.2018 18:14:00

bastie
Mitglied

Re: Beispiel-Topics löchen

Topics 0.9.4.4
WBCE 1.3.2

Die Seite läuft noch lokal


Wer Rechtschreibfehler findet, darf sie gerne herunterladen, kopieren, weiterverwenden und weiterverbreiten. Ich beanspruche in keiner Weise ein Urheberrecht. Meine Rechtschreibfehler stehen unter der MIT-Lizenz.

Offline

#4 15.12.2018 20:23:25

florian
Administrator

Re: Beispiel-Topics löchen

Ich kanns nicht reproduzieren, weder lokal mit WBCEportable noch auf einer Testwebsite auf einem echten Webserver.

Du kannst sonst den Adminer als Admintool installieren und dann direkt in der Datenbanktabelle (deinprefix)_mod_topics die Zombie-Einträge, erkennbar an der negativen Section, vernichten.


Code allein macht nicht glücklich. Jetzt spenden!

Offline

#5 16.12.2018 23:13:26

grindmobil
Gast

Re: Beispiel-Topics löchen

Hmm..
Beim Löschen werden topics nicht wirklich gelöscht, sondern bekommen eine negative section-id.
Dass es in topics so grobe Fehler gibt (auch negative section-id listen) , wäre aber wohl schon aufgefallen.

#6 28.01.2019 01:57:56

mrbaseman
Developer

Re: Beispiel-Topics löchen

Hallo,

ich habe die Beispieleinträge aus einer Topics-Section gelöscht. Nun fand ich das Thema Topics-Master spannend, habe also eine Topics section angelegt, die selbst keine Einträge enthät- und schwupps sind die Beispieleinträge dort wieder aufgetaucht.

Gibt es eine Möglichkeit, die auf einfache Weise komplett los zu werden? Oder muss ich da "von Hand" an die Datenbank ran?

Martin

Offline

#7 28.01.2019 07:59:38

florian
Administrator

Re: Beispiel-Topics löchen

Das Problem scheint nur unter sehr speziellen (lokalen?) Bedingungen aufzutreten - siehe https://forum.wbce.org/viewtopic.php?id=2509


Code allein macht nicht glücklich. Jetzt spenden!

Offline

#8 28.01.2019 22:43:08

mrbaseman
Developer

Re: Beispiel-Topics löchen

konnte ich mit WBCE 1.3.3 und Topics 0.9.4.4  reproduzieren. Auch bei mir sind negative Section IDs. Das passiert in delete_topic.php L.32ff:

$hascontent = $row['hascontent'];
if ($hascontent < 2) {
	// Delete topic
	$database->query("DELETE FROM ".TABLE_PREFIX."mod_".$tablename." WHERE topic_id = '$topic_id' LIMIT 1");
	$database->query("DELETE FROM ".TABLE_PREFIX."mod_".$tablename."_comments WHERE topic_id = '$topic_id'");
} else {
	//hide topic
	$hide_it = 0 - $section_id;
	$theq = "UPDATE ".TABLE_PREFIX."mod_".$tablename." SET section_id = '$hide_it' WHERE topic_id = '$topic_id'";
	$database->query($theq);
}

also, wenn $hascontent >= 2 und das sehen wir in save_topic.php L.110 ff.:

$hascontent = 1;
if (strlen($long.$extra) < 7) {$hascontent = 0;}
if (strlen($long.$extra) > 400) {$hascontent = 2;}
$query_comments = $database->query("SELECT * FROM ".TABLE_PREFIX."mod_".$tablename."_comments WHERE topic_id = '$topic_id'");
if($query_comments->numRows() > 0) {$hascontent = 3;}

also wenn $long und $extra in Summe länger als 400 Zeichen ist oder Kommentare zu dem Topic vorhanden sind. Mit $hascontent =2 sind dann wohl auch die Beispieleinträge mit von der Partie. Warum das bisher nicht aufgefallen ist, ist mir noch nicht klar - vielleicht weil man meistens viele Einträge hat, so dass die Beispieleinträge recht weit nach unten rutschen?

Offline

#9 28.01.2019 22:45:21

mrbaseman
Developer

Re: Beispiel-Topics löchen

Bingo: Negative Section-IDs um die zu löschenden Beiträge zu verstecken sind dafür verantwortlich - siehe https://forum.wbce.org/viewtopic.php?pid=21713#p21713

Offline

#10 29.01.2019 08:15:54

florian
Administrator

Re: Beispiel-Topics löchen

Ich habe die beiden Threads zum Thema Beispieltopics mal zusammengeführt.

Das Problem tritt auf, wenn die Topics-Seite, die die Beispieltopics generiert hat, gelöscht wird. Werden nur die Beispieltopics selbst gelöscht (über die Schaltfläche "Löschen" in der Topics-Beitragsansicht unten rechts), erscheinen sie auch nicht mehr im Master.

Um das Problem zu beheben, muss in der view.list.php die Zeile

$theq = "SELECT * FROM ".TABLE_PREFIX."mod_".$tablename." WHERE ".$sectionquery." AND ". $qactive.$query_extra." ORDER BY ".$sort_topics_by.$limit_sql;

geändert werden zu

$theq = "SELECT * FROM ".TABLE_PREFIX."mod_".$tablename." WHERE ".$sectionquery." AND ". $qactive.$query_extra." AND section_id > 0 ORDER BY ".$sort_topics_by.$limit_sql;

Dass die gelöschten Topics eine negative ID erhalten, ist beabsichtigt, um so einen "Rettungsanker" zu haben, falls ein Topic versehentlich gelöscht worden ist.


Code allein macht nicht glücklich. Jetzt spenden!

Offline

#11 29.01.2019 23:57:00

mrbaseman
Developer

Re: Beispiel-Topics löchen

florian schrieb:

Das Problem tritt auf, wenn die Topics-Seite, die die Beispieltopics generiert hat, gelöscht wird. Werden nur die Beispieltopics selbst gelöscht (über die Schaltfläche "Löschen" in der Topics-Beitragsansicht unten rechts), erscheinen sie auch nicht mehr im Master.

hmm... über die Schaltfläche wird doch genauso die delete_topic.php aufgerufen. Ich denke der Punkt ist, dass im Master nicht explizit bestimmte Sections oder ein bestimmtes picture directory gesetzt ist, sondern das im Master und in den Beispieltopics auf dem Standard 'same picture dir' belassen wird.

Um das Problem zu beheben, muss in der view.list.php die Zeile

$theq = "SELECT * FROM ".TABLE_PREFIX."mod_".$tablename." WHERE ".$sectionquery." AND ". $qactive.$query_extra." ORDER BY ".$sort_topics_by.$limit_sql;

geändert werden zu

$theq = "SELECT * FROM ".TABLE_PREFIX."mod_".$tablename." WHERE ".$sectionquery." AND ". $qactive.$query_extra." AND section_id > 0 ORDER BY ".$sort_topics_by.$limit_sql;

Dass die gelöschten Topics eine negative ID erhalten, ist beabsichtigt, um so einen "Rettungsanker" zu haben, falls ein Topic versehentlich gelöscht worden ist.

super. Das hilft dann auch nicht nur bei den Beispieltopics sondern auch bei selbst erstellten Beiträgen. Wenn die lang genug sind, dass sie mit dem Rettungsanker nur versteckt werden, dann sind sie ohne die neue Prüfung auch im Master noch sichtbar, wenn die Einträge über das picture directory gesucht werden. In dem Fall ist ja die section_id nicht explizit angefordert, sondern auch alle Beiträge aller Sections (ob mit positiver oder negativer ID) bei denen das pichture directory passt

Den Fix sollten wir ins Github Repo übernehmen. Wer pflegt denn Topics derzeit federführend? Wäre gut, wenn der Fix auch upstream aufgenommen werden würde, damit wir ihn nicht mit dem nächsten Topics-Update wieder verlieren.

Offline

#12 30.01.2019 00:16:09

mrbaseman
Developer

Re: Beispiel-Topics löchen

ich seh gerade, dass bei

 $theq = "SELECT * FROM ".TABLE_PREFIX."mod_".$tablename." WHERE ".$sectionquery." AND ".$qactive.$query_extra; 

in der gleichen Datei vermutlich die gleiche Zusatzbedingung gebraucht wird, damit die Anzahl der aktiven Beiträge korrekt ermittelt wird.

Offline

#13 30.01.2019 00:45:39

mrbaseman
Developer

Re: Beispiel-Topics löchen

ich hab mal Pull request #378 zu den aktuellen Themen rund um Topics aufgemacht

Offline

#14 30.01.2019 09:27:01

florian
Administrator

Re: Beispiel-Topics löchen

Danke, ich habs mal gemerged und auch im Master nachgezogen.


Code allein macht nicht glücklich. Jetzt spenden!

Offline

#15 30.01.2019 12:32:09

mrbaseman
Developer

Re: Beispiel-Topics löchen

Super, vielen Dank.

Jetzt müsste man mal durchgehen, ob die negativen Section IDs noch an anderen Stellen eventuell unerwünschte Effekte bereiten könnten, aber das ist leider nicht mal so geschwind gemacht, zumindest nicht wenn man sich wie ich gerade erst anfängt mit dem Modul auseinanderzusetzen.

Pflegt Chio das Modul aktiv, sprich ist die Angabe im info.php noch aktuell? "Started by..." kingt allerdings so als hätten es ohnehin schon ein paar andere Leute erweitert. Colinax zum Beispiel hat Changelog Einträge hinzugefügt (das hab ich in meinem Pull Request vergessen).

Offline

#16 30.01.2019 12:56:33

grindbatzn
Gast

Re: Beispiel-Topics löchen

mrbaseman schrieb:

Super, vielen Dank.

Jetzt müsste man mal durchgehen, ob die negativen Section IDs noch an anderen Stellen eventuell unerwünschte Effekte bereiten könnten, aber das ist leider nicht mal so geschwind gemacht, zumindest nicht wenn man sich wie ich gerade erst anfängt mit dem Modul auseinanderzusetzen.

Pflegt Chio das Modul aktiv, sprich ist die Angabe im info.php noch aktuell? "Started by..." kingt allerdings so als hätten es ohnehin schon ein paar andere Leute erweitert. Colinax zum Beispiel hat Changelog Einträge hinzugefügt (das hab ich in meinem Pull Request vergessen).

Ich denke, dass sonst überall nach konkreten section_ids gefragt wird, und die können niemals < 0 sein.

Topics gehört mittlerweile zum Core - und da mische ich mich nicht ein. Neue Features sind nicht geplant; vielleicht mal die Erweiterung um die Autoren vervollständigen, aber das interessiert eh keinen wirklich und ist nur mehr drin, um es für spezielle Kundenwünsche bereit zu haben.

Naja: EIn Leichen-Aufräum-Tool vielleicht. Manche schaffen es, 50 Untitled in der Liste zu haben. Wie das geht, weiß ich nicht.

Beitrag geändert von grindbatzn (30.01.2019 12:57:06)

Fußzeile des Forums

up