<?php  																														require_once($_SERVER['DOCUMENT_ROOT'] . "/eclipse.org-common/system/app.class.php");	require_once($_SERVER['DOCUMENT_ROOT'] . "/eclipse.org-common/system/nav.class.php"); 	require_once($_SERVER['DOCUMENT_ROOT'] . "/eclipse.org-common/system/menu.class.php"); 	$App 	= new App();	$Nav	= new Nav();	$Menu 	= new Menu();		include("_projectCommon.php");    # All on the same line to unclutter the user's desktop'

    #*****************************************************************************
    #
    # download.php
    #
    # Author:       Denis Roy
    # Date:         2004-11-23
    #
    # Description:  Clean download logs.
    #
    #*****************************************************************************

	# Note: run this from wget
    exit;
	error_reporting(E_ALL); ini_set("display_errors", true);
	header("Content-type: text/plain");
	require_once "/home/data/httpd/eclipse-php-classes/system/dbconnection_rw.class.php";
	require_once "/home/data/httpd/eclipse-php-classes/system/dbconnection.class.php";
	
	$app = new App();
	
	
	$dbc_RW 	= new DBConnectionRW();
	$dbh_RW		= $dbc_RW->connect();
	$dbc_RO 	= new DBConnection();
	$dbh_RO		= $dbc_RO->connect();
	
	# Get the current downloads table
	$SQL = "SELECT key_value FROM SYS_variables WHERE key_name = 'download_table'";
	$rs = mysql_query($SQL, $dbh_RW);
	$myrow = mysql_fetch_assoc($rs);
	$download_table = "downloads" . $myrow['key_value'];
	echo "Using " . $download_table . "\n";

	# HAS TO BE ASCENDING@
	$SQL = "SELECT * FROM download_file_index  ORDER BY file_id  ";
	echo $SQL . "\n";
	$rs 	= mysql_query($SQL, $dbh_RW);
	
	while($myrow = mysql_fetch_assoc($rs)) {
		echo $myrow['file_id'] . " " . $myrow['file_name'];
		
		# Find duplicate files
		$SQL = "SELECT file_id from download_file_index where file_id > " . $myrow['file_id'] . " AND file_name = " . $app->returnQuotedString($myrow['file_name']);
		$rs2 = mysql_query($SQL, $dbh_RW);
		$str_dupes = "";
		while($myrow2 = mysql_fetch_assoc($rs2)) {
			if($str_dupes != "") {
				$str_dupes .= ",";
			}
			$str_dupes .= $myrow2['file_id'];
		}
		
		if($str_dupes != "") {
			echo "--> Dupes: " . $str_dupes . "\n\n";
			# move downloads for the dupes
			$SQL = "UPDATE downloads SET file_id = " . $myrow['file_id'] . " WHERE file_id IN ($str_dupes)";
			echo $SQL . "\n";
			mysql_query($SQL, $dbh_RW);
			$SQL = "UPDATE " . $download_table . " SET file_id = " . $myrow['file_id'] . " WHERE file_id IN ($str_dupes)";
			echo $SQL . "\n";
			mysql_query($SQL, $dbh_RW);
			$SQL = "DELETE FROM download_file_index where file_id IN ($str_dupes)";
			echo $SQL . "\n";
			mysql_query($SQL, $dbh_RW);
		}
				

		$download_count = 0;
		$SQL = "SELECT COUNT(*) AS RecordCount FROM downloads WHERE file_id = " . $myrow['file_id'];
		$rs2 = mysql_query($SQL, $dbh_RO);
		$myrow2 = mysql_fetch_assoc($rs2);
		$download_count += $myrow2['RecordCount'];
		echo " Download count main table: " . $download_count; 

		$SQL = "SELECT COUNT(*) AS RecordCount FROM " . $download_table . " WHERE file_id = " . $myrow['file_id'];
		$rs2 = mysql_query($SQL, $dbh_RW);
		$myrow2 = mysql_fetch_assoc($rs2);
		$download_count += $myrow2['RecordCount'];
		echo "  Download count table $download_table : " . $myrow2['RecordCount'];
		
		echo " TOTAL: " . $download_count . "\n";
		$SQL = "UPDATE download_file_index SET download_count = " . $download_count . " WHERE file_id = " . $myrow['file_id'];
		mysql_query($SQL, $dbh_RW);
		
		
		
		if($download_count == 0) {
			$SQL = "DELETE FROM download_file_index WHERE file_id = " . $myrow['file_id'];
			echo "----->" . $SQL . "\n";
			$rs3 = mysql_query($SQL, $dbh_RW);
		}
	}

	$dbc_RW->disconnect();  # disconnects all pending DB connections
	$rs 	= null;
	$dbh_RW	= null;
	$dbc_RW = null;
?>