function youtube_next_dir($dir)
{
    $unix = new unix();
    $countDefile = $unix->COUNT_FILES($dir);
    youtube_events("{$dir} -> {$countDefile} files on Line: ", __LINE__);
    if ($countDefile == 0) {
        youtube_events("youtube_next_dir():: {$dir}: no files... remove... ", __LINE__);
        @rmdir($dir);
        return;
    }
    $FINAL = array();
    if (!($handle = opendir($dir))) {
        youtube_events("youtube_next_dir():: Fatal: {$dir} no such directory", __LINE__);
        ufdbguard_admin_events("Fatal: {$dir} no such directory", __FUNCTION__, __FILE__, __LINE__, "stats");
        return;
    }
    $c = 0;
    while (false !== ($filename = readdir($handle))) {
        if ($filename == ".") {
            continue;
        }
        if ($filename == "..") {
            continue;
        }
        $targetFile = "{$dir}/{$filename}";
        $arrayFile = unserialize(@file_get_contents($targetFile));
        if (!is_array($arrayFile)) {
            youtube_events("youtube_next_dir()::{$targetFile} not an array, aborting", __LINE__);
            @unlink($targetFile);
            continue;
        }
        if ($GLOBALS["VERBOSE"]) {
            print_r($arrayFile);
        }
        while (list($index, $RTTSIZEARRAY) = each($arrayFile)) {
            $NewArray = youtube_array_to_sql($RTTSIZEARRAY);
            if (!is_array($NewArray)) {
                youtube_events("youtube_next_dir():: youtube_array_to_sql() return not an array for {$targetFile}", __LINE__);
                @unlink($targetFile);
                continue;
            }
            youtube_events("youtube_next_dir():: {$NewArray[0]} -> {$NewArray[1]}", __LINE__);
            $FINAL[$NewArray[0]][] = $NewArray[1];
        }
        $c++;
        @unlink($targetFile);
    }
    youtube_events("youtube_inject() " . count($FINAL) . " elements for {$c} scanned files...", __LINE__);
    youtube_inject($FINAL);
    if ($c > 0) {
        events("youtube_next_dir():: {$c} deleted files...");
    }
}
function ParseSubDir($dir)
{
    $unix = new unix();
    $q = new mysql_squid_builder();
    $countDefile = $unix->COUNT_FILES($dir);
    events("{$dir} -> {$countDefile} files on Line: ", __LINE__);
    if ($countDefile == 0) {
        events("ParseSubDir():: {$dir}: no files... remove... ", __LINE__);
        @rmdir($dir);
        return;
    }
    $FINAL = array();
    if (!($handle = opendir($dir))) {
        events("ParseSubDir():: Fatal: {$dir} no such directory", __LINE__);
        return;
    }
    $DUSTBIN["mx.yahoo.com"] = true;
    $DUSTBIN["row.bc.yahoo.com"] = true;
    $DUSTBIN["us.bc.yahoo.com"] = true;
    $DUSTBIN["xiti.com"] = true;
    $c = 0;
    while (false !== ($filename = readdir($handle))) {
        if ($filename == ".") {
            continue;
        }
        if ($filename == "..") {
            continue;
        }
        $targetFile = "{$dir}/{$filename}";
        $arrayFile = unserialize(@file_get_contents($targetFile));
        if (!is_array($arrayFile)) {
            @unlink($targetFile);
            continue;
        }
        if ($GLOBALS["VERBOSE"]) {
            echo "{$targetFile}\n";
        }
        while (list($index, $array) = each($arrayFile)) {
            $words = mysql_escape_string2(trim($array["WORDS"]));
            if ($words == null) {
                continue;
            }
            $sitename = $array["SITENAME"];
            $familysite = $q->GetFamilySites($sitename);
            if (isset($DUSTBIN[$sitename])) {
                continue;
            }
            if (isset($DUSTBIN[$familysite])) {
                continue;
            }
            $ipaddr = $array["ipaddr"];
            $zDate = $array["date"];
            $uid = mysql_escape_string2($array["uid"]);
            $MAC = mysql_escape_string2($array["mac"]);
            $hostname = mysql_escape_string2($array["hostname"]);
            $time = strtotime($zDate);
            $prefix = date("YmdH", $time);
            $zmd5 = md5(serialize($array));
            $account = 0;
            $line = "('{$zmd5}','{$sitename}','{$zDate}','{$ipaddr}','{$hostname}','{$uid}','{$MAC}','{$account}','{$familysite}','{$words}')";
            if ($GLOBALS["VERBOSE"]) {
                echo "{$prefix} -> {$line}\n";
            }
            $f[$prefix][] = $line;
        }
        @unlink($targetFile);
    }
    if (count($f) > 0) {
        inject_array($f);
    }
}
function ParseRTTSizeDir($dir)
{
    $pidtime = "/etc/artica-postfix/pids/" . basename(__FILE__) . ".ParseQueue.time";
    $unix = new unix();
    events("ParseRTTSizeDir():: count files on {$dir} Line: " . __LINE__);
    $countDefile = $unix->COUNT_FILES($dir);
    events("ParseRTTSizeDir():: {$dir}  {$countDefile} files on Line: " . __LINE__);
    if ($countDefile == 0) {
        events("ParseRTTSizeDir():: {$dir}:  remove... on Line: " . __LINE__);
        @rmdir($dir);
        return;
    }
    events("ParseRTTSizeDir(): scanning {$dir}");
    $q = new mysql_squid_builder();
    $q->CreateUserSizeRTTTable();
    if (!$q->TABLE_EXISTS("UserSizeRTT")) {
        events("ParseRTTSizeDir():: Fatal UserSizeRTT no such table, die()");
        ufdbguard_admin_events("Fatal UserSizeRTT no such table, die();", __FUNCTION__, __FILE__, __LINE__, "stats");
        return;
    }
    if (!($handle = opendir($dir))) {
        ufdbguard_admin_events("Fatal: {$dir} no such directory", __FUNCTION__, __FILE__, __LINE__, "stats");
        return;
    }
    $c = 0;
    $d = 0;
    $D = 0;
    while (false !== ($filename = readdir($handle))) {
        if ($filename == ".") {
            continue;
        }
        if ($filename == "..") {
            continue;
        }
        $targetFile = "{$dir}/{$filename}";
        $arrayFile = unserialize(@file_get_contents($targetFile));
        $countDeArrayFile = count($arrayFile);
        if (!is_array($arrayFile)) {
            @unlink($targetFile);
            continue;
        }
        while (list($index, $RTTSIZEARRAY) = each($arrayFile)) {
            $d++;
            $D++;
            if ($d > 500) {
                events("RTTSizeArray():: {$countDeArrayFile}/{$D} items...(" . basename($targetFile) . ")");
                $d = 0;
            }
            RTTSizeArray($RTTSIZEARRAY, "{$countDeArrayFile}/{$D}");
            @file_put_contents($pidtime, time());
            usleep(100);
        }
        if (!RTTSizeInjectArray()) {
            continue;
        }
        $c++;
        $D = 0;
        @unlink($targetFile);
    }
    if ($c > 0) {
        events("ParseRTTSizeDir({$dir}):: {$c} deleted files...");
    }
}
function loadavg_logs()
{
    include_once dirname(__FILE__) . '/ressources/class.mysql.inc';
    $unix = new unix();
    $pidfile = "/etc/artica-postfix/pids/" . basename(__FILE__) . "." . __FUNCTION__ . ".pid";
    $pid = @file_get_contents($pidfile);
    if ($unix->process_exists($pid)) {
        echo "Already running pid {$pid}\n";
        return;
    }
    $q = new mysql();
    if (!$q->DATABASE_EXISTS("artica_events")) {
        if ($GLOBALS["VERBOSE"]) {
            echo "Stop !\n";
        }
        events_Loadavg("loadavg_logs:: artica_events database does not exists... try to build one" . __LINE__);
        $q->BuildTables();
    }
    if (!$q->DATABASE_EXISTS("artica_events")) {
        if ($GLOBALS["VERBOSE"]) {
            echo "Stop !\n";
        }
        events_Loadavg("loadavg_logs:: artica_events database cannot continue" . __LINE__);
        return;
    }
    if ($GLOBALS["VERBOSE"]) {
        echo "Scan {$GLOBALS["ARTICALOGDIR"]}/loadavg/*\n";
    }
    $COUNT = $unix->COUNT_FILES("{$GLOBALS["ARTICALOGDIR"]}/loadavg");
    if ($COUNT > 5000) {
        if (!($handle = opendir("{$GLOBALS["ARTICALOGDIR"]}/loadavg"))) {
            return;
        }
        while (false !== ($filename = readdir($handle))) {
            if ($filename == ".") {
                continue;
            }
            if ($filename == "..") {
                continue;
            }
            $filename = "{$GLOBALS["ARTICALOGDIR"]}/loadavg/{$filename}";
            @unlink($filename);
        }
        return;
    }
    if (!($handle = opendir("{$GLOBALS["ARTICALOGDIR"]}/loadavg"))) {
        @mkdir("{$GLOBALS["ARTICALOGDIR"]}/loadavg", 0755, true);
        return;
    }
    while (false !== ($filename = readdir($handle))) {
        if ($filename == ".") {
            continue;
        }
        if ($filename == "..") {
            continue;
        }
        $filename = "{$GLOBALS["ARTICALOGDIR"]}/loadavg/{$filename}";
        if ($unix->file_time_min($filename) > 240) {
            @unlink($filename);
            continue;
        }
        $time = basename($filename);
        $load = @file_get_contents($filename);
        $date = date('Y-m-d H:i:s', $time);
        $sql = "INSERT IGNORE INTO loadavg (`stime`,`load`) VALUES ('{$date}','{$load}');";
        $q->QUERY_SQL($sql, "artica_events");
        if (!$q->ok) {
            events_Loadavg("loadavg_logs:: {$q->mysql_error} line:" . __LINE__);
            continue;
        }
        events_Loadavg("loadavg_logs:: success {$filename}" . __LINE__);
        @unlink($filename);
    }
}
function count_tables_hours()
{
    $dir = "/var/lib/mysql/postfixlog";
    $unix = new unix();
    return $unix->COUNT_FILES($dir);
}
function thumbnail_parse_dir($directory)
{
    $unix = new unix();
    $countDefile = $unix->COUNT_FILES($directory);
    $sock = new sockets();
    $DisableLocalStatisticsTasks = $sock->GET_INFO("DisableLocalStatisticsTasks");
    if (!is_numeric($DisableLocalStatisticsTasks)) {
        $DisableLocalStatisticsTasks = 0;
    }
    events_tail("{$directory}  {$countDefile} files on Line: " . __LINE__);
    if ($countDefile == 0) {
        events("thumbnail_parse_dir():: {$directory}:  remove... on Line: " . __LINE__);
        @rmdir($directory);
        return;
    }
    if (!($handle = opendir($directory))) {
        ufdbguard_admin_events("Fatal: {$directory} no such directory", __FUNCTION__, __FILE__, __LINE__, "stats");
        return;
    }
    $c = 0;
    $d = 0;
    while (false !== ($filename = readdir($handle))) {
        if ($filename == ".") {
            continue;
        }
        if ($filename == "..") {
            continue;
        }
        $targetFile = "{$directory}/{$filename}";
        $d++;
        if ($DisableLocalStatisticsTasks == 1) {
            @unlink($targetFile);
            continue;
        }
        $arrayFile = unserialize(@file_get_contents($targetFile));
        if (!is_array($arrayFile)) {
            @unlink($targetFile);
            continue;
        }
        while (list($sitename, $RTTSIZEARRAY) = each($arrayFile)) {
            thumbnail_site($sitename);
        }
        $c++;
        @unlink($targetFile);
        if ($d > 100) {
            if (SquidStatisticsTasksOverTime()) {
                stats_admin_events(1, "Statistics overtime... Aborting", null, __FILE__, __LINE__);
                return;
            }
            $d = 0;
        }
    }
}