<?php
use Franky\Filesystem\File;
ini_set('memory_limit', '-1');

$archivos_actualizados = 0;

$path =$MyConfigure->getServerUploadDir()."/upgrade/";

$File = new File;

$files = $File->mkdir($path);

echo shellFontColor("Descargando actualizaciones...","verde")."\n";

$url = "https://codeload.github.com/frankyframework/franky-skeleton-application/zip/refs/heads/2.0";
$destination = $path.'/2.0.zip';
$fp = fopen ($destination, 'w+');
$ch = curl_init();
curl_setopt( $ch, CURLOPT_URL, $url );
curl_setopt( $ch, CURLOPT_BINARYTRANSFER, true );
curl_setopt( $ch, CURLOPT_RETURNTRANSFER, false );
curl_setopt( $ch, CURLOPT_SSL_VERIFYPEER, false );
curl_setopt( $ch, CURLOPT_CONNECTTIMEOUT, 10 );
curl_setopt( $ch, CURLOPT_FILE, $fp );
curl_exec( $ch );
curl_close( $ch );
fclose( $fp );

$zip = new ZipArchive;
if ($zip->open($destination) === TRUE) {
    $zip->extractTo($path);
    $zip->close();



    $modulos = getModulos("DESC");

    $fullmkdir = array(
        "/bin",
        "/public/css",
        "/public/images",
        "/public/less",
        "/public/js",
        "/public/jquery",
        "/public/jquery-ui"
    );

    $path =  $path.'franky-skeleton-application-2.0';

    foreach($fullmkdir as $file)
    {



        $files = $File->getAllFiles($path.$file);



        foreach($files['dir'] as $_file)
        {

            if(file_exists($_file) && !file_exists(str_replace($path,PROJECT_DIR,$_file)))
            {
                $File->mkdir(str_replace($path,PROJECT_DIR,$_file));
                echo shellFontColor("[mkdir] ".str_replace($path,PROJECT_DIR,$_file),"verde")."\n";

            }
        }


        foreach($files['file'] as $_file)
        {
            if(!file_exists(str_replace($path,PROJECT_DIR,$_file)) || md5_file($_file) !== md5_file(str_replace($path,PROJECT_DIR,$_file)))
            {
                rename($_file,str_replace($path,PROJECT_DIR,$_file));
                echo shellFontColor("[descargado] ".str_replace($path,PROJECT_DIR,$_file),"verde")."\n";
                $archivos_actualizados++;
            }
        }

      }

      $archivos = array(
                    $path."/index.php",
                    $path."/public/ajax/ajax.js",
                    $path."/public/ajax/ajax.php",);


    foreach($archivos as $_file)
    {
        if(!file_exists(str_replace($path,PROJECT_DIR,$_file)) || md5_file($_file) !== md5_file(str_replace($path,PROJECT_DIR,$_file)))
        {
            if(file_exists($_file))
            {
                rename($_file,str_replace($path,PROJECT_DIR,$_file));
                echo shellFontColor(str_replace($path,PROJECT_DIR,$_file),"verde")."\n";
                $archivos_actualizados++;
            }
        }
    }

}

unlink($destination);
$files = $File->getAllFiles($path);
if(!empty($files))
{

    foreach ($files['file'] as $file) {
      unlink($file);
    }
    krsort($files['dir']);
    foreach ($files['dir'] as $dir) {
      rmdir($dir);
    }
}
rmdir($path);
echo shellFontColor("Se descargaron $archivos_actualizados archivos","verde")."\n";
?>
