Subversion-Projekte lars-tiefland.content-management

Revision

Blame | Letzte Änderung | Log anzeigen | RSS feed

<?php

    /**
     * @package   Content-management
     * @author    Lars Tiefland <tiefland@weban.de>
     * @copyright 2009 Webagentur Niewerth
     * @license   propietary
     * @version   $Rev: 3938 $
     * @filesource
     * 
     */

    /**
     * 
     * @package   Content-management
     * @author    Lars Tiefland <tiefland@weban.de>
     * @copyright 2009 Webagentur Niewerth
     */

    // SVN: $Id: clean-shop_log.php 3938 2011-09-19 09:54:33Z tiefland $

    require_once "Config.php";
    require_once "MDB2.php";
    define( "XML_FILE", "config.xml" );
    $datum = date( "Y-m-d", strtotime( "-1day" ) ) . "%";
    if ( file_exists( XML_FILE ) )
    {
        $cfg = new Config();
        $cfg = $cfg->parseConfig( XML_FILE, "xml" );
        if ( PEAR::isError( $cfg ) )
        {
            die( $cfg->getUserInfo() );
        }
        $conf = $cfg->toArray();
        $conf = $conf["root"]["conf"];
        if ( isset( $conf["servers"]["server"]["name"] ) )
        {
            $server = $conf["servers"]["server"];
            unset( $conf["servers"]["server"] );
            $conf["servers"]["server"][0] = $server;
        }
        foreach ( $conf["servers"]["server"] as $server_id => $server )
        {
            if ( !is_array( $server["db"] ) )
            {
                $db = $server["db"];
                unset( $conf["servers"]["server"][$server_id]["db"] );
                $conf["servers"]["server"][$server_id]["db"][0] = $db;
            }
        }
        if ( isset( $conf["ip_ranges"]["ip_range"]["from"] ) )
        {
            $ip = $conf["ip_ranges"]["ip_range"];
            unset( $conf["ip_ranges"]["ip_range"] );
            $conf["ip_ranges"]["ip_range"][0] = $ip;
        }
        if ( isset( $conf["ips"]["ip"]["address"] ) )
        {
            $ip = $conf["ips"]["ip"];
            unset( $conf["ips"]["ip"] );
            $conf["ips"]["ip"][0] = $ip;
        }

        foreach ( $conf["servers"]["server"] as $server )
        {
            $server_name = $server["name"];
            echo $server_name . "\n";
            foreach ( $server["db"] as $db_id => $db_name )
            {
                $user = $conf["global"]["user"];
                $pass = $conf["global"]["pass"];
                if ( $server["user"] )
                {
                    $user = $server["user"];
                }
                if ( $server["pass"] )
                {
                    $pass = $server["pass"];
                }
                $dsn = "mysqli://$user:$pass@$server_name/$db_name";
                $db = MDB2::connect( $dsn );
                $db->setfetchMode( MDB2_FETCHMODE_ASSOC );
                if ( PEAR::isError( $db ) )
                {
                    die( $db->getUserInfo() . "\n$dsn\n" );
                }
                $sql_d = "DELETE FROM
            shop_log
        WHERE
            eintrag4=:ip
        AND
            erstellt_am LIKE :datum
    ";
                $sql_sth = $db->prepare( $sql_d, array( "text", "text",
                    MDB2_PREPARE_MANIP ) );
                if ( PEAR::isError( $sql_sth ) )
                {
                    die( $sql_sth->getUserInfo() );
                }
                if ( is_array( $conf["ips"]["ip"] ) )
                {
                    foreach ( $conf["ips"]["ip"] as $ip )
                    {
                        $address = $ip["address"];
                        $name = ( $ip["name"] ) ? $ip["name"] : $ip["address"];
                        $sql = "
                            DELETE FROM 
                                shop_log 
                            WHERE 
                                erstellt_von='(Preisagentur)' 
                            AND 
                                eintrag4='" . $address . "'
                        ";
                        $res = $db->exec( $sql );
                        echo "$name ==> ";
                        if ( PEAR::isError( $res ) )
                        {
                            die( $res->getUserInfo() );
                        }
                        echo $res . " Zeilen betroffen\n";
                    }
                }
                if ( is_array( $conf["ip_ranges"]["ip_range"] ) )
                {
                    foreach ( $conf["ip_ranges"]["ip_range"] as $ip )
                    {
                        $sql = "
                            DELETE FROM 
                                shop_log 
                            WHERE 
                                erstellt_von='(Preisagentur)' 
                            AND 
                                eintrag4
                                    BETWEEN '" . $ip["from"] . "'
                                AND '" . $ip["to"] . "'
                        ";
                        $res = $db->exec( $sql );
                        echo "von " . $ip["from"] . " bis " . $ip["to"] .
                            " ==> ";
                        if ( PEAR::isError( $res ) )
                        {
                            die( $res->getUserInfo() );
                        }
                        echo $res . " Zeilen betroffen " . $ip["name"] . " \n";
                    }
                }
                $sql = "SELECT
                        eintrag4,
                        COUNT(*) AS anzahl
                    FROM
                        shop_log
                    WHERE
                        erstellt_von='(Preisagentur)'
                    AND
                        erstellt_am LIKE '" . $datum . "'
                    GROUP BY
                        eintrag4
                    HAVING
                        anzahl >=2
                    ORDER BY
                        anzahl,
                        eintrag4
                ";
                $res = $db->query( $sql );
                if ( PEAR::isError( $res ) )
                {
                    die( $res->getUserInfo() );
                }
                $rows = $res->fetchAll();
                foreach ( $rows as $row )
                {
                    $daten = array( "datum" => $datum, "ip" => $row["eintrag4"] );
                    $res = $sql_sth->execute( $daten );
                    if ( PEAR::isError( $res ) )
                    {
                        var_dump( $daten, $row, $sql_d, $sql_sth );
                        die( $res->getUserInfo() );
                    }
                    echo "IP " . $daten["ip"] . " ==> " . $row["anzahl"] .
                        " Zeilen betroffen\n";
                }
            }
        }
    }
    else
    {
        echo "Konfigurationsdatei " . XML_FILE . " nicht gefunden!\n";
        exit( 200 );
    }
?>