nicht alle tabellen werden upgedatet

emergence
Beiträge: 10645
Registriert: Mo 28. Jul 2003, 12:49
Wohnort: Austria
Kontaktdaten:

nicht alle tabellen werden upgedatet

Beitrag von emergence » Do 6. Nov 2003, 09:38

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)

timo
Beiträge: 6284
Registriert: Do 15. Mai 2003, 18:32
Wohnort: Da findet ihr mich nie!
Kontaktdaten:

Beitrag von timo » Mo 17. Nov 2003, 11:07

cat_tree wird nun bereinigt. Zu der con_container_conf sowie con_container muß jan (asmo) noch was sagen :)

asmo
Beiträge: 21
Registriert: Fr 20. Sep 2002, 09:29
Kontaktdaten:

Beitrag von asmo » Fr 16. Jan 2004, 11:25

Moin,

dieses "Feature" ist bekannt.. :)

Steht das nicht schon im Bugtracker?

Gruss Jan

timo
Beiträge: 6284
Registriert: Do 15. Mai 2003, 18:32
Wohnort: Da findet ihr mich nie!
Kontaktdaten:

Beitrag von timo » Mi 12. Jan 2005, 14:44

hmm ich weiß jetzt nicht ob das irgendwann mal gelöst wurde...

emergence
Beiträge: 10645
Registriert: Mo 28. Jul 2003, 12:49
Wohnort: Austria
Kontaktdaten:

Beitrag von emergence » Mi 12. Jan 2005, 15:14

wäre möglich... weiss ich jetzt auch nicht mehr...
lass es mal offen
*** make your own tools (wishlist :: thx)

emergence
Beiträge: 10645
Registriert: Mo 28. Jul 2003, 12:49
Wohnort: Austria
Kontaktdaten:

Beitrag von emergence » Mi 19. Jan 2005, 08:35

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....
*** make your own tools (wishlist :: thx)

timo
Beiträge: 6284
Registriert: Do 15. Mai 2003, 18:32
Wohnort: Da findet ihr mich nie!
Kontaktdaten:

Beitrag von timo » Fr 21. Jan 2005, 12:36

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

emergence
Beiträge: 10645
Registriert: Mo 28. Jul 2003, 12:49
Wohnort: Austria
Kontaktdaten:

Beitrag von emergence » Fr 21. Jan 2005, 12:42

bei conDeleteArt glaube ich muss man nur aufpassen das die idtplcfg nicht 0 ist...
sicher bin ich mir da aber nicht...
*** make your own tools (wishlist :: thx)

timo
Beiträge: 6284
Registriert: Do 15. Mai 2003, 18:32
Wohnort: Da findet ihr mich nie!
Kontaktdaten:

Beitrag von timo » Fr 21. Jan 2005, 12:44

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....

emergence
Beiträge: 10645
Registriert: Mo 28. Jul 2003, 12:49
Wohnort: Austria
Kontaktdaten:

Beitrag von emergence » Fr 21. Jan 2005, 12:55

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...
*** make your own tools (wishlist :: thx)

emergence
Beiträge: 10645
Registriert: Mo 28. Jul 2003, 12:49
Wohnort: Austria
Kontaktdaten:

Beitrag von emergence » Fr 21. Jan 2005, 13:05

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

}
*** make your own tools (wishlist :: thx)

timo
Beiträge: 6284
Registriert: Do 15. Mai 2003, 18:32
Wohnort: Da findet ihr mich nie!
Kontaktdaten:

Beitrag von timo » Fr 21. Jan 2005, 13:11

ok, habe ich eingebaut

emergence
Beiträge: 10645
Registriert: Mo 28. Jul 2003, 12:49
Wohnort: Austria
Kontaktdaten:

Beitrag von emergence » Fr 21. Jan 2005, 13:16

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...
Zuletzt geändert von emergence am Fr 21. Jan 2005, 13:20, insgesamt 1-mal geändert.
*** make your own tools (wishlist :: thx)

timo
Beiträge: 6284
Registriert: Do 15. Mai 2003, 18:32
Wohnort: Da findet ihr mich nie!
Kontaktdaten:

Beitrag von timo » Fr 21. Jan 2005, 13:19

ähm kannst du mir den Code schicken? Ich habe nur die Funktion komplett eingebaut ;)

emergence
Beiträge: 10645
Registriert: Mo 28. Jul 2003, 12:49
Wohnort: Austria
Kontaktdaten:

Beitrag von emergence » Fr 21. Jan 2005, 13:21

klar ich schreib die funktion nur um
dauert ein wenig...
*** make your own tools (wishlist :: thx)

Gesperrt