<?php
error_reporting(E_ALL);
ini_set("display_errors", 1);
ini_set("memory_limit", "1024M");
ini_set("max_execution_time", 3600);
ini_set("date.timezone","America/Sao_Paulo");

require_once("/home/painel/public_html/admin/inc/conecta.php");

// Script para baixar os programetes e programas e depois renomea-los e organliza-los

// Funções 

// Função para baixar arquivos
function download($url, $file) {

shell_exec("/usr/bin/wget --no-check-certificate --no-cache --no-cookies -q -O ".$file." ".$url."");

}

// Função para formatar texto retirando acentos e caracteres especiais
function remover_caracteres_especiais($text) {
    $utf8 = array(
        '/[áàâãªä]/u'   =>   'a',
        '/[ÁÀÂÃÄ]/u'    =>   'A',
        '/[ÍÌÎÏ]/u'     =>   'I',
        '/[íìîï]/u'     =>   'i',
        '/[éèêë]/u'     =>   'e',
        '/[ÉÈÊË]/u'     =>   'E',
        '/[óòôõºö]/u'   =>   'o',
        '/[ÓÒÔÕÖ]/u'    =>   'O',
        '/[úùûü]/u'     =>   'u',
        '/[ÚÙÛÜ]/u'     =>   'U',
        '/ç/'           =>   'c',
        '/Ç/'           =>   'C',
        '/ñ/'           =>   'n',
        '/Ñ/'           =>   'N',
		'/#/'           =>   'Hashtag'
    );
    return preg_replace(array_keys($utf8), array_values($utf8), $text);
}

function remover_datas($text) {
    $utf8 = array(
		'/'.date("d m Y").'/'           =>   '',
		'/'.date("d-m-Y").'/'           =>   '',
		'/'.date("d-m-y").'/'           =>   '',
		'/'.date("d_m_Y").'/'           =>   '',
		
		'/'.date("d m Y",mktime (0, 0, 0, date("m")  , date("d")+1, date("Y"))).'/'           =>   '',
		'/'.date("d-m-Y",mktime (0, 0, 0, date("m")  , date("d")+1, date("Y"))).'/'           =>   '',
		'/'.date("d-m-y",mktime (0, 0, 0, date("m")  , date("d")+1, date("Y"))).'/'           =>   '',
		'/'.date("d_m_Y",mktime (0, 0, 0, date("m")  , date("d")+1, date("Y"))).'/'           =>   '',
		
		'/'.date("d m Y",mktime (0, 0, 0, date("m")  , date("d")+2, date("Y"))).'/'           =>   '',
		'/'.date("d-m-Y",mktime (0, 0, 0, date("m")  , date("d")+2, date("Y"))).'/'           =>   '',
		'/'.date("d-m-y",mktime (0, 0, 0, date("m")  , date("d")+2, date("Y"))).'/'           =>   '',
		'/'.date("d_m_Y",mktime (0, 0, 0, date("m")  , date("d")+2, date("Y"))).'/'           =>   '',
		
		'/'.date("d m Y",mktime (0, 0, 0, date("m")  , date("d")+3, date("Y"))).'/'           =>   '',
		'/'.date("d-m-Y",mktime (0, 0, 0, date("m")  , date("d")+3, date("Y"))).'/'           =>   '',
		'/'.date("d-m-y",mktime (0, 0, 0, date("m")  , date("d")+3, date("Y"))).'/'           =>   '',
		'/'.date("d_m_Y",mktime (0, 0, 0, date("m")  , date("d")+3, date("Y"))).'/'           =>   '',
		
		'/'.date("d m Y",mktime (0, 0, 0, date("m")  , date("d")+4, date("Y"))).'/'           =>   '',
		'/'.date("d-m-Y",mktime (0, 0, 0, date("m")  , date("d")+4, date("Y"))).'/'           =>   '',
		'/'.date("d-m-y",mktime (0, 0, 0, date("m")  , date("d")+4, date("Y"))).'/'           =>   '',
		'/'.date("d_m_Y",mktime (0, 0, 0, date("m")  , date("d")+4, date("Y"))).'/'           =>   '',
		
		'/'.date("d m Y",mktime (0, 0, 0, date("m")  , date("d")+5, date("Y"))).'/'           =>   '',
		'/'.date("d-m-Y",mktime (0, 0, 0, date("m")  , date("d")+5, date("Y"))).'/'           =>   '',
		'/'.date("d-m-y",mktime (0, 0, 0, date("m")  , date("d")+5, date("Y"))).'/'           =>   '',
		'/'.date("d_m_Y",mktime (0, 0, 0, date("m")  , date("d")+5, date("Y"))).'/'           =>   '',
		
		'/'.date("d m Y",mktime (0, 0, 0, date("m")  , date("d")-1, date("Y"))).'/'           =>   '',
		'/'.date("d-m-Y",mktime (0, 0, 0, date("m")  , date("d")-1, date("Y"))).'/'           =>   '',
		'/'.date("d-m-y",mktime (0, 0, 0, date("m")  , date("d")-1, date("Y"))).'/'           =>   '',
		'/'.date("d_m_Y",mktime (0, 0, 0, date("m")  , date("d")-1, date("Y"))).'/'           =>   '',
		
		'/'.date("d m Y",mktime (0, 0, 0, date("m")  , date("d")-2, date("Y"))).'/'           =>   '',
		'/'.date("d-m-Y",mktime (0, 0, 0, date("m")  , date("d")-2, date("Y"))).'/'           =>   '',
		'/'.date("d-m-y",mktime (0, 0, 0, date("m")  , date("d")-2, date("Y"))).'/'           =>   '',
		'/'.date("d_m_Y",mktime (0, 0, 0, date("m")  , date("d")-2, date("Y"))).'/'           =>   '',
		
		'/'.date("d m Y",mktime (0, 0, 0, date("m")  , date("d")-3, date("Y"))).'/'           =>   '',
		'/'.date("d-m-Y",mktime (0, 0, 0, date("m")  , date("d")-3, date("Y"))).'/'           =>   '',
		'/'.date("d-m-y",mktime (0, 0, 0, date("m")  , date("d")-3, date("Y"))).'/'           =>   '',
		'/'.date("d_m_Y",mktime (0, 0, 0, date("m")  , date("d")-3, date("Y"))).'/'           =>   '',
		
		'/'.date("d m Y",mktime (0, 0, 0, date("m")  , date("d")-4, date("Y"))).'/'           =>   '',
		'/'.date("d-m-Y",mktime (0, 0, 0, date("m")  , date("d")-4, date("Y"))).'/'           =>   '',
		'/'.date("d-m-y",mktime (0, 0, 0, date("m")  , date("d")-4, date("Y"))).'/'           =>   '',
		'/'.date("d_m_Y",mktime (0, 0, 0, date("m")  , date("d")-4, date("Y"))).'/'           =>   '',
		
		'/'.date("d m Y",mktime (0, 0, 0, date("m")  , date("d")-5, date("Y"))).'/'           =>   '',
		'/'.date("d-m-Y",mktime (0, 0, 0, date("m")  , date("d")-5, date("Y"))).'/'           =>   '',
		'/'.date("d-m-y",mktime (0, 0, 0, date("m")  , date("d")-5, date("Y"))).'/'           =>   '',
		'/'.date("d_m_Y",mktime (0, 0, 0, date("m")  , date("d")-5, date("Y"))).'/'           =>   '',
		
		'/'.date("d m Y",mktime (0, 0, 0, date("m")  , date("d")-6, date("Y"))).'/'           =>   '',
		'/'.date("d-m-Y",mktime (0, 0, 0, date("m")  , date("d")-6, date("Y"))).'/'           =>   '',
		'/'.date("d-m-y",mktime (0, 0, 0, date("m")  , date("d")-6, date("Y"))).'/'           =>   '',
		'/'.date("d_m_Y",mktime (0, 0, 0, date("m")  , date("d")-6, date("Y"))).'/'           =>   '',
		
		'/'.date("d m Y",mktime (0, 0, 0, date("m")  , date("d")-7, date("Y"))).'/'           =>   '',
		'/'.date("d-m-Y",mktime (0, 0, 0, date("m")  , date("d")-7, date("Y"))).'/'           =>   '',
		'/'.date("d-m-y",mktime (0, 0, 0, date("m")  , date("d")-7, date("Y"))).'/'           =>   '',
		'/'.date("d_m_Y",mktime (0, 0, 0, date("m")  , date("d")-7, date("Y"))).'/'           =>   '',
		
		'/'.date("d m ").'/'           =>   '',
		'/'.date("d-m-").'/'           =>   '',
		'/'.date("d-m-").'/'           =>   '',
		'/'.date("d_m_").'/'           =>   ''
		
    );
    return preg_replace(array_keys($utf8), array_values($utf8), $text);
}


// Função para renomear pastas
function renomear_pasta($dir) {

    foreach (new DirectoryIterator($dir) as $fileInfo) {
        if (!$fileInfo->isDot()) {
            
			if ($fileInfo->isDir()) {
			
			$nome_atual = $fileInfo->getFilename();
			$nome_novo = remover_caracteres_especiais($nome_atual);
			$nome_novo = remover_datas($nome_novo);
			$nome_novo = ucwords(strtolower($nome_novo));
			$nome_novo = str_replace("  ", "_",$nome_novo);
			$nome_novo = str_replace(" ", "_",$nome_novo);
			$nome_novo = str_replace("/_", "/",$nome_novo);
			$nome_novo = str_replace("___", "_",$nome_novo);
			$nome_novo = str_replace("_-_", "_",$nome_novo);
			$nome_novo = str_replace("-_", "",$nome_novo);
			
			rename($fileInfo->getPath()."/".$nome_atual,$fileInfo->getPath()."/".$nome_novo);
            }
        }
    }

}

// Função para renomear arquivos
function renomear_arquivo($dir) {

    foreach (new DirectoryIterator($dir) as $fileInfo) {
        if (!$fileInfo->isDot()) {
            
			if ($fileInfo->isFile()) {
			
			$nome_atual = $fileInfo->getFilename();
			$nome_novo = remover_caracteres_especiais($nome_atual);
			$nome_novo = remover_datas($nome_novo);
			$nome_novo = ucwords(strtolower($nome_novo));
			$nome_novo = str_replace(" - ", "_",$nome_novo);
			$nome_novo = str_replace("  ", "_",$nome_novo);
			$nome_novo = str_replace(" ", "_",$nome_novo);
			$nome_novo = str_replace("/_", "/",$nome_novo);
			$nome_novo = str_replace("_-_", "_",$nome_novo);
			$nome_novo = str_replace("-_", "",$nome_novo);
			$nome_novo = str_replace("___", "_",$nome_novo);
			$nome_novo = str_replace(")", "",$nome_novo);
			$nome_novo = str_replace("(", "",$nome_novo);
			$nome_novo = remover_datas($nome_novo);
			$nome_novo = ltrim($nome_novo, '_');
			
			rename($fileInfo->getPath()."/".$nome_atual,$fileInfo->getPath()."/".$nome_novo);
            }
			
			if ($fileInfo->isDir()) {
                renomear_arquivo($fileInfo->getPathname());
            }

        }
    }

}

// Função para remover pastas e arquivos
function remover_pastas_arquivos($dir) {

$di = new RecursiveDirectoryIterator($dir, FilesystemIterator::SKIP_DOTS);
$ri = new RecursiveIteratorIterator($di, RecursiveIteratorIterator::CHILD_FIRST);
foreach ( $ri as $file ) {
    $file->isDir() ?  rmdir($file) : unlink($file);
}

}

///////////////////////////////////////////////////////

// Remove antigos
remover_pastas_arquivos("/home/painel/programas/");
remover_pastas_arquivos("/home/painel/programetes/");

// Dia da semana atual
$dia_semana = date("w");

// Carrega os links de programetes e programas
$sql = mysqli_query($conexao,"SELECT * FROM programetes_programas_links ORDER by codigo ASC");
while ($dados_link = mysqli_fetch_array($sql)) {

if(preg_match('/'.$dia_semana.'/i',$dados_link["dias"]) || isset($argv[1])) {

$arquivo_zip_download = md5($dados_link["pasta"]);

echo "[".$dados_link["pasta"]."] Fazendo download do link...\n";

// Download do link
download($dados_link["link"],"/home/painel/".$dados_link["tipo"]."/".$arquivo_zip_download.".zip");

// Cria a pasta do programete/programa
mkdir("/home/painel/".$dados_link["tipo"]."/".$dados_link["pasta"]."");

echo "[".$dados_link["pasta"]."] Descompactando audios...\n";

// Descompactação
shell_exec("/usr/bin/unzip -o /home/painel/".$dados_link["tipo"]."/".$arquivo_zip_download.".zip -x / -d /home/painel/".$dados_link["tipo"]."/".$dados_link["pasta"]."/");

// Remove o arquivo ZIP
unlink("/home/painel/".$dados_link["tipo"]."/".$arquivo_zip_download.".zip");

}

}

echo "\n\n";
echo "Downloads finalizados...\n\n";
echo "Renomenando audios...\n";

// Renomeia removendo acentos e espaços em branco e organizar os programas
renomear_arquivo('/home/painel/programas'); 
renomear_arquivo('/home/painel/programetes');

echo "Processo finalizado som sucesso...\n";
?>