Subversion-Projekte lars-tiefland.content-management

Revision

Blame | Letzte Änderung | Log anzeigen | RSS feed

<?
        //error_reporting(E_ALL);

        // forget about any script timeouts
        set_time_limit(0);
        
        mysql_connect("localhost","content_managem","k-dp-u");
        
        function message($msg,$line=false,$debug=false)
        {
                if ($debug == true)
                {
                        printf("%4u: %s\n",$line,$msg);
                        echo "<br>";
                }
        }
        
        $Datenbanken=array
        (
                "zeltdepot_de",
                "reitsportdepot_de",
                "bootdepot_de",
                "pieper_golf_de",
                "wirbelsaeule_com",
                "pieper_shop_de",
                "blsb_bochum_de",
                "pq_media_de"
        );

        foreach($Datenbanken as $DB)
        {
                // Datenbank anwählen
                message("use $DB",__LINE__,true);
                mysql_query ("use $DB") or die (mysql_errno().": ".mysql_error());
                 
                /* ######################################################################################################## */
                /* #    Tabellen füllen                                                                                   # */
                /* ######################################################################################################## */  

                foreach(array("such_woerter","such_quelle_to_such_woerter",) as $tab)
                {
                        message("delete from $tab",__LINE__);
                        if(!mysql_query("delete from $tab"))
                        {
                                echo mysql_error();
                                echo "<br>";
                        }
                }
                if(!mysql_query("ALTER TABLE such_woerter AUTO_INCREMENT=0"))
                {
                        echo mysql_error();
                        echo "<br>";
                }

                $query_such_quelle="select * from such_quelle where rang > 3";
                $result_such_quelle = mysql_query ($query_such_quelle) or die (mysql_errno().": ".mysql_error()."<hr>".$query_such_quelle."<hr>");
                message($query_such_quelle,__LINE__);

                while($such_quelle=mysql_fetch_assoc($result_such_quelle))
                {
                        $query_such_index="select ".implode(", ",getKeys($DB.".".$such_quelle["quelle_tab"])).",".$such_quelle["quelle_feldname"]." from ".$such_quelle["quelle_tab"]." ".$such_quelle["quelle_bedingung"];
                        message($query_such_index,__LINE__);

                        $result_such_index = mysql_query ($query_such_index) or die (mysql_errno().": ".mysql_error()."<hr>".$query_such_index."<hr>");

                        while($such_index=mysql_fetch_assoc($result_such_index))                
                        {
                                /*
                                        Hier wird der Inhalt eines Feldes in seine Bestandteile zerlegt.
                                        Wenn nicht exakt gearbeitet wird, sieht das Ergebnis schlecht aus.
                                */
                                
                                $such_index[$such_quelle["quelle_feldname"]] = preg_replace
                                                                                                                                (
                                                                                                                                        array
                                                                                                                                        (
                                                                                                                                                "/<.*?>/",
                                                                                                                                                "/&#(\d+);/e"
                                                                                                                                        ),
                                                                                                                                        array
                                                                                                                                        (
                                                                                                                                                " ",
                                                                                                                                                "chr(\\1)"
                                                                                                                                        ),
                                                                                                                                        $such_index[$such_quelle["quelle_feldname"]]
                                                                                                                                );

                                foreach(preg_split ('/\s+/', $such_index[$such_quelle["quelle_feldname"]]) as $raw_keyword)
                                {

                                        $keyword = preg_replace
                                                                (
                                                                        array
                                                                        (
                                                                                "/[^A-Za-zÄÖÜäöüß0-9,]/"
                                                                        ),
                                                                        array
                                                                        (
                                                                                ""
                                                                        ),
                                                                        $raw_keyword,
                                                                        -1
                                                                );

                                        if (strlen($keyword) > 1)
                                        {
                                                $query_such_woerter="insert into such_woerter (wort) values ('$keyword')";
                                                $result_such_woerter = mysql_query ($query_such_woerter);
                                                if(!$result_such_woerter)
                                                {
                                                        echo mysql_error();
                                                        echo "<br>";
                                                }
                                                if($result_such_woerter)
                                                {
                                                        message(str_pad("insert $keyword",40).implode("-",array_keys(count_chars($keyword,1))),__LINE__);
                                                        $such_wort_ID=mysql_insert_id();
                                                }
                                                else
                                                {
                                                        $query_such_wort="select ID from such_woerter where wort = '".addslashes($keyword)."'";
                                                        $result_such_wort = mysql_query ($query_such_wort) or die (mysql_errno().": ".mysql_error()."<hr>".$query_such_wort."<hr>");
                                                        $such_wort=mysql_fetch_assoc($result_such_wort);
                                                        $such_wort_ID=$such_wort["ID"];                                         
                                                }
                                                if(!mysql_query("insert into such_quelle_to_such_woerter values(".$such_quelle["ID"].", ".$such_wort_ID.", ".$such_index["ID"].", '".$such_index["Language"]."')"))
                                                {
                                                        echo mysql_error();
                                                        echo "<br>";
                                                }
                                        }
                                }
                        }
                }

                /* ######################################################################################################## */
                /* #    ungültige Einträge entfernen                                                                                                                                          */
                /* ######################################################################################################## */  

                $query="
                        select
                        distinct 
                                such_quelle.quelle_tab,
                                such_quelle_to_such_woerter.such_quelle_ID,
                                such_quelle_to_such_woerter.quelle_ID,
                                such_quelle_to_such_woerter.quelle_language
                        from
                                such_quelle,
                                such_quelle_to_such_woerter     
                        where 
                                such_quelle.ID = such_quelle_to_such_woerter.such_quelle_ID
                ";
                $result = mysql_query ($query) or die (mysql_errno().": ".mysql_error()."<hr>".$query."<hr>");

                while($zeile=mysql_fetch_assoc($result))
                {
                        switch ($zeile["quelle_tab"])
                        {
                                case "directory":
                                                $buffer=rootDir($zeile["quelle_ID"],$zeile["quelle_language"]);
                                                if (($buffer["Father"] == -1) && ($buffer["status"] == 0))
                                                {$zeile["Status"]=0;}   else {$zeile["Status"]=1;}
                                        break;
                                case "artikel":
                                                $zeile["Status"]=artikelStatus($zeile["quelle_ID"],$zeile["quelle_language"]);
                                        break;
                                default:
                                        $zeile["Status"]=0;
                                        break;
                        }
                        
                        if ($zeile["Status"] == 1)
                        {
                                $query=
                                "delete from
                                                such_quelle_to_such_woerter
                                        where
                                                such_quelle_ID = '".$zeile["such_quelle_ID"]."'
                                        and quelle_ID = '".$zeile["quelle_ID"]."'
                                        and quelle_language = '".$zeile["quelle_language"]."'";
                                $zeile["query"] = $query;
                                mysql_query ($query) or die (mysql_errno().": ".mysql_error()."<hr>".$query."<hr>");
                        }
                }
        }

                /* ######################################################################################################## */
                /* #    Serviveroutinen allgemein                                                                                                                                                       */
                /* ######################################################################################################## */  

                function getKeys($target)
                {
                        $buffer=array();
                        $query="show keys from $target";
                        $result = mysql_query ($query) or die (mysql_errno().": ".mysql_error()."<hr>".$query."<hr>");
                        while($zeile=mysql_fetch_assoc($result))
                        {
                                if ($zeile["Key_name"] == "PRIMARY")
                                {
                                        $buffer[]=$zeile["Column_name"];
                                }
                        }
                        return $buffer;
                }


                /* ######################################################################################################## */
                /* #    Serviveroutinen die für den check benötigt werden                                                                                                     */
                /* ######################################################################################################## */  

                function rootDir($ID,$language)
                {
                        $query="select ID,Father,status from directory where ID=$ID and language='$language' and Father > 0 and status=0 and Father != ID";
                        message($query,__LINE__);
                        $result = mysql_query ($query) or die (mysql_errno().": ".mysql_error()."<hr>".$query."<hr>");
                        if ($zeile=mysql_fetch_assoc($result))
                        {
                                $zeile=rootDir($zeile["Father"],$language);
                        }

                        return $zeile;
                }
        
                function artikelStatus($ID,$language)
                {
                        $query="select * from artikel where ID=$ID and language='$language'";
                        $result = mysql_query ($query) or die (mysql_errno().": ".mysql_error()."<hr>".$query."<hr>");
                        $zeile=mysql_fetch_assoc($result);
                
                        if
                        (
                                ($zeile["status"] == 0)
                                &&
                                ($zeile["Father"] > -2)
                        )
                        {// Artikel selbst ist OK, Pfad überprüfen
                                $buffer=rootDir($zeile["Father"],$zeile["Language"]);
                                if
                                (
                                        ($buffer["Father"] == -1)
                                        &&
                                        ($buffer["status"] == 0)
                                )
                                {// Artikel OK, Pfad OK
                                        return 0;
                                }
                                else
                                {// Artikel OK, Pfad nicht OK
                                        return 1;
                                }
                        }
                        else
                        {       // Artikel ist nicht OK
                                return 1;
                        }
                }

?>