Seite 1 von 2
nicht alle tabellen werden upgedatet
Verfasst: Do 6. Nov 2003, 09:38
von emergence
contenido 4.4.1
mir ist aufgefallen das beim löschen einzelner kategorien die tabelle
con_cat_tree die nicht mehr benötigten werte weiterhin speichert...
das selbe gilt an sich beim löschen der artikel, dass die entsprechenden einträge in
con_container
con_container_conf
beibehalten werden...
(das würde für mich nur den sinn ergeben, wenn es eine art papierkorb funktion geben würde)
Verfasst: Mo 17. Nov 2003, 11:07
von timo
cat_tree wird nun bereinigt. Zu der con_container_conf sowie con_container muß jan (asmo) noch was sagen

Verfasst: Fr 16. Jan 2004, 11:25
von asmo
Moin,
dieses "Feature" ist bekannt..
Steht das nicht schon im Bugtracker?
Gruss Jan
Verfasst: Mi 12. Jan 2005, 14:44
von timo
hmm ich weiß jetzt nicht ob das irgendwann mal gelöst wurde...
Verfasst: Mi 12. Jan 2005, 15:14
von emergence
wäre möglich... weiss ich jetzt auch nicht mehr...
lass es mal offen
Verfasst: Mi 19. Jan 2005, 08:35
von emergence
hab das gerade mit dem cvs_head kontrolliert
problem besteht noch immer
wenn eine kategorie(oder artikel) ein template zugewiesen hat und man löscht diese, beleiben die einträge con_container_conf erhalten....
Verfasst: Fr 21. Jan 2005, 12:36
von timo
so, ich habe mir das mal etwas genauer angesehen
meiner Meinung nach müsste folgendes in der Funktion conDeleteArt angefügt werden:
Code: Alles auswählen
$sql = "DELETE FROM ".$cfg["tab"]["container_conf"]." WHERE idtplcfg = '".$tmp_idtplcfg."'";
$db->query($sql);
Für die Funktion strDeleteCategory ersetzen:
Code: Alles auswählen
$sql = "SELECT idtplcfg FROM ".$cfg["tab"]["cat_lang"]." WHERE idcat='$idcat'";
$db->query($sql);
while ($db->next_record()) {
////// delete entry in 'tpl_conf'-table
$sql = "DELETE FROM ".$cfg["tab"]["tpl_conf"]." WHERE idtplcfg='".$db->f("idtplcfg")."'";
$db->query($sql);
}
wird zu
Code: Alles auswählen
$db2 = new DB_Contenido;
$sql = "SELECT idtplcfg FROM ".$cfg["tab"]["cat_lang"]." WHERE idcat='$idcat'";
$db->query($sql);
while ($db->next_record()) {
////// delete entry in 'tpl_conf'-table
$sql = "DELETE FROM ".$cfg["tab"]["tpl_conf"]." WHERE idtplcfg='".$db->f("idtplcfg")."'";
$db2->query($sql);
$sql = "DELETE FROM ".$cfg["tab"]["container_conf"]." WHERE idtplcfg = '".$db->f("idtplcfg")."'";
$db2->query($sql);
}
Verfasst: Fr 21. Jan 2005, 12:42
von emergence
bei conDeleteArt glaube ich muss man nur aufpassen das die idtplcfg nicht 0 ist...
sicher bin ich mir da aber nicht...
Verfasst: Fr 21. Jan 2005, 12:44
von timo
emergence hat geschrieben:bei conDeleteArt glaube ich muss man nur aufpassen das die idtplcfg nicht 0 ist...
sicher bin ich mir da aber nicht...
Naja eine idtplcfg 0 dürfte es nicht geben...wenn doch, ist was anderes am System defekt....
Verfasst: Fr 21. Jan 2005, 12:55
von emergence
nein anders
in con_art_lang steht zeitweise bei idtplcfg 0 drinnen
dann wird die konfiguration der kategorie verwendet...
ich hab nur gemeint wenn 0 drinnen steht ist ein löschen nicht nötig...
Verfasst: Fr 21. Jan 2005, 13:05
von emergence
hab mir den code des cvs angesehen...
ja ist mir schon klar warum die einträge erhalten bleiben...
hier die gefixte version
Code: Alles auswählen
/**
* Delete an Article
*
* @param int $idart Article Id
*
* @author Olaf Niemann <olaf.niemann@4fb-de>
* Jan Lengowski <jan.lengowski@4fb.de>
*
* @copyright four for business AG <www.4fb.de>
*/
function conDeleteart($idart)
{
global $db, $cfg, $lang;
/* Delete current language */
$sql = "SELECT idartlang, idtplcfg FROM ".$cfg["tab"]["art_lang"]." WHERE idart = '$idart' AND idlang='$lang'";
$db->query($sql);
$db->next_record();
$idartlang = $db->f("idartlang");
$idtplcfg = $db->f("idtplcfg");
/* Fetch idcat */
$sql = "SELECT idcat FROM ".$cfg["tab"]["cat_art"]." WHERE idart = '$idart'";
$db->query($sql);
$db->next_record();
$idcat = $db->f("idcat");
/* Remove startidartlang */
if (isStartArticle($idartlang, $idcat, $lang))
{
$sql = "UPDATE ".$cfg["tab"]["cat_lang"]." SET startidartlang='0' WHERE idcat='$idcat' AND idlang='$lang'";
$db->query($sql);
}
$sql = "DELETE FROM ".$cfg["tab"]["content"]." WHERE idartlang = '".$idartlang."'";
$db->query($sql);
$sql = "DELETE FROM ".$cfg["tab"]["art_lang"]." WHERE idartlang = '".$idartlang."'";
$db->query($sql);
if ($idtplcfg != "0") {
$sql = "DELETE FROM ".$cfg["tab"]["container_conf"]." WHERE idtplcfg = '".$idtplcfg."'";
$db->query($sql);
$sql = "DELETE FROM ".$cfg["tab"]["tpl_conf"]." WHERE idtplcfg = '".$idtplcfg."'";
$db->query($sql);
}
/* Check if there are remaining languages */
$sql = "SELECT idartlang FROM ".$cfg["tab"]["art_lang"]." WHERE idart = '$idart'";
$db->query($sql);
if ($db->num_rows() > 0)
{
return;
}
$sql = "SELECT * FROM ".$cfg["tab"]["cat_art"]." WHERE idart = '".$idart."'";
$db->query($sql);
while ( $db->next_record() ) {
$idcatart[] = $db->f("idcatart");
}
##################################################
# set keywords
$keycode[1][1]="";
saveKeywordsForArt($keycode,$idart,"auto",$lang);
saveKeywordsForArt($keycode,$idart,"self",$lang);
if ( is_array($idcatart) ) {
foreach ($idcatart AS $value) {
//********* delete from code table **********
$sql = "DELETE FROM ".$cfg["tab"]["code"]." WHERE idcatart = '".$value."'";
$db->query($sql);
//****** delete from 'stat'-table ************
$sql = "DELETE FROM ".$cfg["tab"]["stat"]." WHERE idcatart = '".$value."'";
$db->query($sql);
}
}
$sql = "SELECT * FROM ".$cfg["tab"]["art_lang"]." WHERE idart = '".$idart."'";
$db->query($sql);
while ( $db->next_record() ) {
$idartlang[] = $db->f("idartlang");
}
if ( is_array($idartlang) ) {
foreach ($idartlang AS $value) {
$sql = "UPDATE ".$cfg["tab"]["cat_lang"]." SET startidartlang='0' WHERE startidartlang ='$value'";
$db->query($sql);
//********* delete from content table **********
$sql = "DELETE FROM ".$cfg["tab"]["content"]." WHERE idartlang = '".$value."'";
$db->query($sql);
}
}
$sql = "DELETE FROM ".$cfg["tab"]["cat_art"]." WHERE idart = '".$idart."'";
$db->query($sql);
$sql = "DELETE FROM ".$cfg["tab"]["art"]." WHERE idart = '".$idart."'";
$db->query($sql);
$sql = "DELETE FROM ".$cfg["tab"]["art_lang"]." WHERE idart = '".$idart."'";
$db->query($sql);
}
Verfasst: Fr 21. Jan 2005, 13:11
von timo
ok, habe ich eingebaut
Verfasst: Fr 21. Jan 2005, 13:16
von emergence
bei strDeleteCategory
kommt etwas weiter oben nochmal das selbe vor nur mit $lang parameter berücksichtigung...
ach jetzt sehe ich das erst
zuerst wird folgender code ausgeführt...
Code: Alles auswählen
////// delete entry in 'cat_lang'-table
$sql = "DELETE FROM ".$cfg["tab"]["cat_lang"]." WHERE idcat='$idcat'";
$db->query($sql);
und etwas weiter unten wird folgendes versucht
Code: Alles auswählen
$sql = "SELECT idtplcfg FROM ".$cfg["tab"]["cat_lang"]." WHERE idcat='$idcat'";
$db->query($sql);
das kann nicht gehen...
Verfasst: Fr 21. Jan 2005, 13:19
von timo
ähm kannst du mir den Code schicken? Ich habe nur die Funktion komplett eingebaut

Verfasst: Fr 21. Jan 2005, 13:21
von emergence
klar ich schreib die funktion nur um
dauert ein wenig...