<?php
#############################################################
# Project:      bCounter                                    #
# File:         admin.php                                   #
# Decription:   bCounter administration
#                                                           #
# Copyright (c) Alexander Bondar (http://bondar.de/)        #
#############################################################

    require_once("./inc/inc.php");

    $strDebugString = "";
    $strTitle .= ' | Administration';

    $strDivBody .= '<h2>Von Erfassung durch bCounter ausschlie&szlig;en</h2>
<div class="table">'."\n";

    if ( $_COOKIE['bCounter_ignore_me'] == "true" && isset( $_POST["ignore-cookie"] ) && $_POST["ignore-cookie"] == "unset" ) {
        # cookie is set AND has to get unset
        if ( setcookie("bCounter_ignore_me", "", 1, "/") ) {
            $strDivBody .= "Erfassung vom bCounter wurde <i>aktiviert</i>.";
        }else{
            $strDivBody .= "Erfassung vom bCounter konnte <b>nicht</b> <i>deaktiviert</i> werden.";
        }
    }elseif ( isset( $_POST["ignore-cookie"] ) && $_POST["ignore-cookie"] == "set" ) {
        # set the cookie
        $iTimestamp = time();
        $iTimestamp += 10*365*86400; # ignoriere für ca. 10 Jahre...
        if (setcookie("bCounter_ignore_me", "true", $iTimestamp, "/")) {
            $strDivBody .= "Erfassung vom bCounter wurde bis zum ".date("d.m.Y H:i:s", $iTimestamp)." <i>deaktiviert</i>.";
            $bCounterIgnoreCookieSet = true;
        }else{
            $strDivBody .= "Erfassung vom bCounter konnte <b>nicht</b> <i>aktiviert</i> werden.";
        }
    }else{

    $strDivBody .= '<form action="'.$_SERVER["REQUEST_URI"].'" method="post">'."\n";
    if ( $_COOKIE['bCounter_ignore_me'] == "true" || $bCounterIgnoreCookieSet ) {
        $strDivBody .= '<p>Die Erfassung durch bCounter ist inaktiv.</p>';
        $strDivBody .= '
<input type="hidden" name="ignore-cookie" value="unset" />
<input type="submit" value="Erfassung aktivieren" class="button" /> (Cookie wird gel&ouml;scht)
';
    }else{
        $strDivBody .= '<p>Die Erfassung durch bCounter ist aktiv.</p>';
        $strDivBody .= '
<input type="hidden" name="ignore-cookie" value="set" />
<input type="submit" value="Erfassung deaktivieren" class="button" /> (Cookie wird gesetzt)
';
    }

    $strDivBody .= '</form>'."\n";
}
    $strDivBody .= '</div>'."\n";

    $strDivBody .= '
<h2>Daten neu berechnen</h2>

<div class="table">
<p>Sollten Sie Unregelm&auml;&szlig;igkeiten feststellen, k&ouml;nnen Sie die Tabellen aus den vorhanden Daten generieren lassen.</p>

<form action="?load=admin" method="post">

<p><input type="hidden" name="step" value="2" />Eintr&auml;ge ab inkl. <input type="text" name="start" /> bis inkl. <input type="text" name="end" /> ber&uuml;cksichtigen (keine IDs!).</p>
<p><input type="checkbox" name="reset" /> vorhandene Daten l&ouml;schen</p>


<h2>Best&auml;tigung</h2>

<p>Bitte mit Passwort best&auml;tigen: <input type="password" name="password" /> (siehe <b>settings.php</b>)</p>
<p><input type="submit" value="Daten neu berechnen" class="button" /> (kann <b>sehr lange</b> dauern!)</p>
</form>
</div>
';
    if ( isset($_POST["password"]) && md5($_POST["password"]) == $bCounter_admin_password_md5 ) {
        $strDivBody .= '
<h2>Ausgabe</h2>
<div class="table">';
        if ( isset($_POST["step"]) && $_POST["step"] == 2 ) {
            # Daten wurden abgeschickt
            $strDivBody .= "<pre>";
            $strDivBody .= "\nAbfragen: ".$bCounterDB->get_queries_count()."\n";

            $iStart = $_POST["start"]+0;
            $iEnd   = $_POST["end"]+0;
            
            if ( $iStart > 0 && $iEnd > 0 ) {
            # updaten
                if ( isset($_POST["reset"]) ) {
                    if ( $bCounterDB->query("TRUNCATE TABLE ".$bCounter_dbPrefix."visits") )
                        $strDivBody .= "Tabelle <b>".$bCounter_dbPrefix."visits</b> wurde zur&uuml;ckgesetzt\n";
                    else
                        $strDivBody .= "Tabelle <b>".$bCounter_dbPrefix."visits</b> konnte <b>nicht zur&uuml;ckgesetzt</b> werden\n";

                    if ( $bCounterDB->query("TRUNCATE TABLE ".$bCounter_dbPrefix."referer") )
                        $strDivBody .= "Tabelle <b>".$bCounter_dbPrefix."referer</b> wurde zur&uuml;ckgesetzt\n";
                    else
                        $strDivBody .= "Tabelle <b>".$bCounter_dbPrefix."referer</b> konnte <b>nicht zur&uuml;ckgesetzt</b> werden\n";

                    if ( $bCounterDB->query("TRUNCATE TABLE ".$bCounter_dbPrefix."suchbegriffe") )
                        $strDivBody .= "Tabelle <b>".$bCounter_dbPrefix."suchbegriffe</b> wurde zur&uuml;ckgesetzt\n";
                    else
                        $strDivBody .= "Tabelle <b>".$bCounter_dbPrefix."suchbegriffe</b> konnte <b>nicht zur&uuml;ckgesetzt</b> werden\n";

                    if ( $bCounterDB->query("TRUNCATE TABLE ".$bCounter_dbPrefix."visits_per_day") )
                        $strDivBody .= "Tabelle <b>".$bCounter_dbPrefix."visits_per_day</b> wurde zur&uuml;ckgesetzt\n";
                    else
                        $strDivBody .= "Tabelle <b>".$bCounter_dbPrefix."visits_per_day</b> konnte <b>nicht zur&uuml;ckgesetzt</b> werden\n";
                }

                $strDivBody .= "\n";

                @set_time_limit(0); # make it run unlimited (doesn't work in safe mode)
                $iStarttime  = time();
                $iStarttimeM = microtime(TRUE);

                $strSQLstring = "SELECT * FROM ".$bCounter_dbPrefix."data";
                $SQLresult = $bCounterDB->query($strSQLstring);

                for ( $i = $iStart-1; $i <= $iEnd-1 && $i < mysql_num_rows($SQLresult); $i++ ) {
                    $iQueries_prev = $bCounterDB->get_queries_count();
                    $IP = mysql_result($SQLresult, $i, "remote_addr");
                    $iTimestamp = (int) mysql_result($SQLresult, $i, "timestamp");
                    $strUserData = mysql_result($SQLresult, $i, "user_agent");
                    $strReferer = mysql_result($SQLresult, $i, "referer");

#                    $iStarttimeM2 = microtime(TRUE);
#                    $strDivBody .= "\n===\nEintrag ".($i+1).": ID ".mysql_result($SQLresult, $i, "id")."\n";
                    updateVisits( $IP, mysql_result($SQLresult, $i, "host"), $iTimestamp, $strUserData, $strReferer );
#                    $iEndtimeM2 = microtime(TRUE);

#                    $strDivBody .= number_format(($iEndtimeM2 - $iStarttimeM2+0), 20, ",", ".")."\n";

#                    $iQueries_now = $bCounterDB->get_queries_count();
#                    $strDivBody .= 
#echo
#                    "<b>Abfragen: ".$iQueries_now." (".($iQueries_now-$iQueries_prev).")</b><br />"."\n";
                }
                $iEndtime  = time();
                $iEndtimeM = microtime(TRUE);
/*
echo "<pre>";
echo $strDebugString;
echo "</pre>";
#*/
                $strDivBody .= "\n";
                $strDivBody .= ($iEndtime - $iStarttime+0);
                $strDivBody .= " Sekunden (";

                $fDiff = ($iEndtimeM - $iStarttimeM+0);
                $strDivBody .= number_format( $fDiff, 20, ",", "." );
                $strDivBody .= ")";

                $strDivBody .= "\n".number_format( $fDiff/($iEnd-$iStart), 20, ",", "." );
                $strDivBody .= " im Schnitt";
                $strDivBody .= "\nAbfragen: ".$bCounterDB->get_queries_count()."\n";
            }else{
                $strDivBody .= 'Bitte die Eingabe korrigieren!';
            }
            $strDivBody .= "</pre>";
            $strDivBody .= '<div class="clear"></div>';
        }
        $strDivBody .= '</div>';
    }elseif( isset($_POST["password"]) && md5($_POST["password"]) != $bCounter_admin_password_md5 ){
        $strDivBody .= '<h2>Fehler</h2>';
        $strDivBody .= '<div class="table">';
        $strDivBody .= '<p>Das Passwort ist ung&uuml;ltig!</p>';
        $strDivBody .= '</div>';
    }
?>