#!/usr/bin/perl

# -------------------------------COMENTARIO GLOBAL---------------
# ---------------------------------------------------------------
# PROPOSITO.
# -----------
# Reemplaza el id autoinc de los artículos y los deja todos
# monotonamente crecientes
# ---------------------------------------------------------------
# MAIN.
# ---------------------------------------------------------------

use strict;
use utf8;

BEGIN {
	use FindBin qw($Bin);
	unshift(@INC,$Bin); # Para dejar disponibles las librerias
	my $pathLibsProntus = $Bin;
	$pathLibsProntus =~ s/\/[^\/]+\/?$//;
	unshift(@INC,$pathLibsProntus);
}

use prontus_varglb;
&prontus_varglb::init();
use lib_prontus;

my $IDCOUNTER = 1;
main:{
	$prontus_varglb::PRONTUS_ID = $ARGV[0];

	if ($prontus_varglb::PRONTUS_ID eq '') {
		print STDOUT "[error] Debe indicar en nombre del Prontus\n";
		exit;
	}

	# Carga variables de configuracion.
	my $msg_load = &lib_prontus::load_config_by_id($prontus_varglb::PRONTUS_ID);
	if ($msg_load ne '') {
		print STDERR "Error: $msg_load\n";
		exit;
	}

	my $dirprontus = "$prontus_varglb::DIR_SERVER$prontus_varglb::CONFIG{$prontus_varglb::PRONTUS_ID}{'DIR_SITE'}$prontus_varglb::DIR_ARTIC";
	print $dirprontus ,"\n";
	if (!-d $dirprontus) {
		print STDOUT "[error] Directorio no valido: dirprontus[$dirprontus]\n";
		exit;
	}

	&procesa_dir($dirprontus);
}

#-----------------------------------------------------------------------#
sub procesa_dir {
	my $input = $_[0];
	unless(-d $input) {
		die "El directorio $input no existe.";
	}
	unless($input !~ /_unused$/) {
		print  "Directorio $input no se procesa.\n";
		return;
	}

	$input = $input . '/' unless ($input =~ /\/$/);

	my @entries = glib_fildir_03::lee_dir($input);
	foreach my $k (@entries) {
		next if($k eq '.' || $k eq '..');
		if (-f $input . $k) {
			&procesa_file($k, $input);
		} elsif (-d $input . $k) {
			&procesa_dir($input . $k);
		}
	}
}

#-----------------------------------------------------------------------#
sub procesa_file {
	my($filename, $path) = ($_[0], $_[1]);
	my $filepath = $path . $filename;

	if ($filepath !~ /\d{14}\.(xml)$/) {
		return;
	}

	if(-f $filepath) {
		my $file = glib_fildir_03::read_file($filepath);
		if ($file =~ m/(<_art_autoinc>(\d*)<\/_art_autoinc>)/i) {
			print $filepath , " ->\t $2 -> $IDCOUNTER\n";
			$file =~ s/<_art_autoinc>\d*<\/_art_autoinc>/<_art_autoinc>$IDCOUNTER<\/_art_autoinc>/i;
			$IDCOUNTER++;

			glib_fildir_03::write_file($filepath, $file);
		}
	}
}
