Untitled

mail@pastecode.io avatar
unknown
php
a year ago
22 kB
0
Indexable
Never
<?php
ini_set('max_execution_time', 0);
$pastaId = get_field('pasta');

define("PASTA_ID", $pastaId);
echo PASTA_ID;

//ID CORTE CARTEGORIAS 26
//ID CORTE DOCUMENTO 12

if ($pastaId):
    $isValid = true;

    // Navega pelos subdiretórios
    if (isset($_GET['sub'])) {
        $tree = explode(':', strip_tags($_GET['sub']));

        // Checa se o caminho de subdiretórios é válido
        foreach($tree as $dir) {
            $sub = new WP_Term_Query(array(
                'taxonomy'      => 'nt_wmc_folder',
                'parent'        => $pastaId,
                'slug'          => $dir,
                'hide_empty'    => false
            ));
            
            if (count($sub->get_terms())) {
                $pastaId = $sub->get_terms()[0]->term_taxonomy_id;
            } else {
                $isValid = false;
            }
        }
        
    } else {
        $sub = new WP_Term_Query(array(
            'taxonomy'      => 'nt_wmc_folder',
            'parent'        => $pastaId,
            'slug'          => $dir,
            'hide_empty'    => false
        ));
    }

    function get_con()
    {
        // $con = new PDO("mysql:host=10.211.0.59;dbname=transparencia", "usrtransparencia", "tDQW7J$53B6j");
        //$con = new PDO("mysql:host=localhost;dbname=transparencia;charset=utf8", "root", "root",array(PDO::MYSQL_ATTR_INIT_COMMAND => "SET NAMES utf8"));
        $con = new PDO("mysql:host=10.0.70.78;dbname=transparencia;charset=utf8","usrtransparencia", "tDQW7J$53B6j",array(PDO::MYSQL_ATTR_INIT_COMMAND => "SET NAMES utf8"));
        $con->setAttribute(PDO::ATTR_ERRMODE, PDO::ERRMODE_EXCEPTION);
        // $con->exec("set names utf8");
            
        return $con;


    }

    function existe_arquivo($importacao_id,$importacao_id_pai)
    {
        $con = get_con();
        $id_pai = get_id_categoria($importacao_id_pai);
        // echo $id_pai;
        // echo $importacao_id;
        $rs = $con->prepare("SELECT id FROM transparencia.documento WHERE importacao_id = ? AND categoria_id = ?");
        $rs->bindParam(1, $importacao_id);
        $rs->bindParam(2, $id_pai);
        if($rs->execute())
        {
            if($rs->rowCount() > 0)
            {
                return true;
            }
        }
        else
        {
            print_r($rs->errorInfo());
        }
        return false;        
    }

    function existe_categoria($importacao_id,$importacao_id_pai)
    {

        $con = get_con();
        $id_pai = get_id_categoria($importacao_id_pai);
        // echo $id_pai;
        // echo $importacao_id;
        $rs = $con->prepare("SELECT id FROM transparencia.categoria WHERE importacao_id = ? AND categoria_id = ?");
        $rs->bindParam(1, $importacao_id);
        $rs->bindParam(2, $id_pai);
        if($rs->execute())
        {
            if($rs->rowCount() > 0)
            {
                return true;
            }
        }
        return false;
    }

    function get_id_categoria($importacao_id)
    {
        $con = get_con();
        $rs = $con->prepare("SELECT id FROM transparencia.categoria WHERE categoria.importacao_id = ?");
        $rs->bindParam(1, $importacao_id);
        if($rs->execute()){
            if($rs->rowCount() > 0){
                while($row = $rs->fetch(PDO::FETCH_OBJ)){
                  return $row->id;
                }
            }
        }
        return null;
    }

    function get_categoria_name_pai($nome,$pai_importacao)
    {
        $con = get_con();
        $nome = html_entity_decode($nome);
        $rs = $con->prepare("SELECT importacao_id FROM transparencia.categoria WHERE categoria.nome = ? and categoria.categoria_id = ?");
        $id_pai = get_id_categoria($pai_importacao);

        $rs->bindParam(1, $nome,PDO::PARAM_STR);
        $rs->bindParam(2,$id_pai);
        // echo '<br>'.$id_pai .'<---->'. $nome;
        if($rs->execute()){
            if($rs->rowCount() > 0){
                while($row = $rs->fetch(PDO::FETCH_OBJ)){
                  return $row->importacao_id;
                }
            }
            else
            {
                echo 'sem registros';
                return null;
            }
        }
        else
        {
            print_r($rs->errorInfo());
        }
        return null;
    }

    function add_arquivo($nome,$arquivo,$ano,$mes,$importacao_id_pai,$importacao_id,$tipo,$create_at,$update_at)
    {
        // echo $importacao_id_pai;
        $de_para = [710,625];
        if(in_array($importacao_id_pai, $de_para))
        {
            $importacao_id_pai = PASTA_ID;
        }
        if (!existe_arquivo($importacao_id,$importacao_id_pai))
        {   
            
            $id_pai = get_id_categoria($importacao_id_pai);
            insert_arquivo($nome,$arquivo,$ano,$mes,$id_pai,$importacao_id,$tipo,$create_at,$update_at);
        }
        return false;
    }

    function insert_arquivo($nome,$arquivo,$ano,$mes,$categoria_id,$importacao_id,$tipo,$create_at,$update_at)
    {
        try {
            ECHO 'TENTOU INSERIR ARQUIVO!';
        $publicado = 1;
        $ordem = 1;
        $usuario_created_id = 2;

        $con = get_con();
        $stmt = $con->prepare("INSERT INTO transparencia.documento (nome, arquivo, ano,mes,categoria_id,importacao_id, tipo,publicado,usuario_created_id,usuario_updated_id,created_at,updated_at) VALUES(?, ?, ?, ?, ?, ?, ?,?,?,?,?,?)");
        $stmt->bindParam(1,$nome);
        $stmt->bindParam(2,$arquivo);
        $stmt->bindParam(3,$ano);
        $stmt->bindParam(4,$mes);
        $stmt->bindParam(5,$categoria_id);
        $stmt->bindParam(6,$importacao_id);
        $stmt->bindParam(7,$tipo);
        $stmt->bindParam(8,$publicado); 
        $stmt->bindParam(9,$usuario_created_id);
        $stmt->bindParam(10,$usuario_created_id); 
        $stmt->bindParam(11,$create_at); 
        $stmt->bindParam(12,$update_at); 
        // $stmt->bindParam(4,1);
        $stmt->execute();
        }
        catch (PDOException $e) {
            echo("Error ao adicionar novo arquivo: ".$nome);
            echo "Insert Error: " . $e->getMessage();   
        }

    }

    function insert_categoria($nome,$categoria_id,$importacao_id,$slug)
    {
        try {
        $ordem = 1;
        $con = get_con();
        $now = date('Y-m-d H:i:s');
        $stmt = $con->prepare("INSERT INTO transparencia.categoria (nome, categoria_id, importacao_id,slug,ordem,created_at,updated_at) VALUES(?, ?,?,?,?,?,?)");
        $stmt->bindParam(1,$nome);
        $stmt->bindParam(2,$categoria_id);
        $stmt->bindParam(3,$importacao_id);
        $stmt->bindParam(4,$slug);
        $stmt->bindParam(5,$ordem);
        $stmt->bindParam(6,$now);
        $stmt->bindParam(7,$now);
        // $stmt->bindParam(4,1);
        
         $stmt->execute();
        }
        catch (PDOException $e) {
            echo("Error ao adicionar nova categoria: ".$nome);
            echo "Insert Error: " . $e->getMessage();
        }

    }

    function add_categoria($nome,$id_importacao,$importacao_id_pai,$slug)
    {
        // echo $importacao_id_pai;
        $de_para = [710,625];
        if(in_array($importacao_id_pai, $de_para))
        {
            $importacao_id_pai = PASTA_ID;
        }
        if (!existe_categoria($id_importacao,$importacao_id_pai))
        {   
            
            $id_pai = get_id_categoria($importacao_id_pai);
            echo $id_pai;
            $nome = html_entity_decode($nome);
            insert_categoria($nome,$id_pai,$id_importacao,$slug);
        }
        return false;
    }

    function get_pasta_object($pasta_id)
    {
        $pastas = new WP_Term_Query(array(
            'taxonomy'      => 'nt_wmc_folder',
            'term_taxonomy_id'         => $pasta_id,
            // 'term_ids'        => 750,
            'hide_empty'    => false,
            'meta_key'      => 'folder_position',
            'orderby'       => 'meta_value_num',
            'order'         => 'ASC'
        ));
         foreach($pastas->get_terms() as $pasta) 
         {
            return $pasta;
         } 
    }

    function get_pasta($pasta_id,$nome_pasta)
    {
         $pasta = get_pasta_object($pasta_id);
         $pai = get_pasta_object($pasta->parent);
        
        

            // var_dump($pasta);
        echo '<li><i class="fas fa-folder mr-2"></i> <a href="?sub='. $pai->term_id .''. $pai->slug .'">'. $pai->name .'(' .$pai->term_id.')</a></li>';
        
        echo '<ul class="pastas">';
        // echo $pasta->name;
        add_categoria($pasta->name,$pasta->term_id,$pai->term_id,$pasta->slug);
        get_files($pasta->term_id,null,$pasta->term_id,null);
        echo '<li><i class="fas fa-folder mr-2" ></i>'. $nome_pasta .'('.$pasta_id.')</li>';
        // exit();
        get_pastas($pasta_id,null,$pai->term_id);
        echo '</ul>';
    }

    function get_query_sub_pastas($pasta_id)
    {
        $pastas = new WP_Term_Query(array(
            'taxonomy'      => 'nt_wmc_folder',
            'parent'        => $pasta_id,
            'hide_empty'    => false,
            'meta_key'      => 'folder_position',
            'orderby'       => 'meta_value_num',
            'order'         => 'ASC'
        ));
        return $pastas;
    }

    function get_files($pasta_id,$periodo_ano=null,$categoria_pai_migracao=null,$new_local=null)
    {
        $meses  = ['janeiro','fevereiro','marco','abril','maio','junho','julho','agosto','setembro','outubro','novembro','dezembro'];
        $comAcentos = array('à', 'á', 'â', 'ã', 'ä', 'å', 'ç', 'è', 'é', 'ê', 'ë', 'ì', 'í', 'î', 'ï', 'ñ', 'ò', 'ó', 'ô', 'õ', 'ö', 'ù', 'ü', 'ú', 'ÿ', 'À', 'Á', 'Â', 'Ã', 'Ä', 'Å', 'Ç', 'È', 'É', 'Ê', 'Ë', 'Ì', 'Í', 'Î', 'Ï', 'Ñ', 'Ò', 'Ó', 'Ô', 'Õ', 'Ö', 'O', 'Ù', 'Ü', 'Ú');
        $semAcentos = array('a', 'a', 'a', 'a', 'a', 'a', 'c', 'e', 'e', 'e', 'e', 'i', 'i', 'i', 'i', 'n', 'o', 'o', 'o', 'o', 'o', 'u', 'u', 'u', 'y', 'A', 'A', 'A', 'A', 'A', 'A', 'C', 'E', 'E', 'E', 'E', 'I', 'I', 'I', 'I', 'N', 'O', 'O', 'O', 'O', 'O', 'O', 'U', 'U', 'U');
        $meses_value  = ['janeiro' => 1,
                        'fevereiro' => 2,
                        'marco' => 3,
                        'abril'=> 4,
                        'maio'=> 5,
                        'junho'=> 6,
                        'julho'=> 7,
                        'agosto'=> 8,
                        'setembro'=> 9,
                        'outubro'=> 10,
                        'novembro'=> 11,
                        'dezembro' => 12];

        $arquivos = new WP_Query(array(
                'post_type'         => 'attachment',
                'post_status'       => 'inherit',
                'posts_per_page'    => 1000000,
        'orderby'       => 'title',
        'order'         => 'DESC',
                'tax_query'         => array(
                        array(
                        'include_children'  => false,
                        'taxonomy'          => 'nt_wmc_folder',
                        'field'             => 'term_taxonomy_id',
                        'terms'             => $pasta_id
                        )
                )
                ));

        if ($arquivos->have_posts())
        {
            echo '<ul class="pastas">';
            while($arquivos->have_posts())
            {
              $arquivos->the_post();
              // print get_the_title();
              $get_the_title = str_replace($comAcentos, $semAcentos, get_the_title());
              $periodo_mes = contains(strtolower($get_the_title),$meses) == false ? null: $meses_value[contains(strtolower($get_the_title),$meses)];
              $url_file = wp_get_attachment_url();

              $parametros = "'".get_the_title()."','".$pasta_id."','".$url_file."','".$periodo_ano."','".$periodo_mes."'";
              
              //adicionando os arquivos!
              $nome = html_entity_decode(get_the_title());
              $base_url = 'http://localhost:8888/portal/';
              $base_url_2 = 'http://localhost/portal/';
              $remote_url = 'https://www.mppi.mp.br/internet/'; 
              $arquivo = str_replace($base_url,$remote_url,wp_get_attachment_url());
              $arquivo = str_replace($base_url_2,$remote_url,$arquivo);
              $extension = pathinfo($arquivo, PATHINFO_EXTENSION);
              
              
                if (preg_match('/\b\d{4}\b/', $nome, $matches)) 
                {
                    $ano = $matches[0];
                }
                else
                {
                    $ano = 1900;
                }
              

              if($ano == null)
              {
                $ano = $periodo_ano;  
              }
              
              $mes = $periodo_mes;
              $categoria_id =  ($new_local != null) ? $new_local : $pasta_id;

              $importacao_id = get_the_ID();
              $tipo = 1;
              if($extension == 'pdf'){
                $tipo = 2;
                }
              $now = date('Y-m-d H:i:s');

              $print  = 'Nome: ->'.$nome;
              $print .= '<br>Arquivo: ->'.$arquivo;
              $print .= '<br>ano: ->'.$ano;
              $print .= '<br>mes: ->'.$mes;
              $print .= '<br>categoria_id: ->'.$categoria_id;
              $print .= '<br>importacao_id: ->'.$importacao_id;
              $print .= '<br>tipo: ->'.$tipo;
              $print .= '<br>now: ->'.$now;

              var_dump($nome);
              echo $print;
              
              // $nome,$arquivo,$ano,$mes,$categoria_id,$importacao_id,$tipo,$create_at,$update_at
              add_arquivo($nome,$arquivo,$ano,$mes,$categoria_id,$importacao_id,$tipo,$now,$now);
              // exit();
              echo '<li onclick="alerta_file('.$parametros.')"><i class="fas fa-file mr-2"></i>'.$periodo_mes.'/'.$periodo_ano.' -> '.get_the_title() .'('.$categoria_pai_migracao.') </li>';
              

            } 
            echo '</ul>';
        }
        
    }

    
    
    
    function contains($str, $arr=null)
    {
        foreach($arr as $a) {
            if (stripos($str,$a) !== false) return $a;
        }
        return false;
    }

    function get_pai_object($id_importacao)
    {
        $pasta = get_pasta_object($id_importacao);
        echo '<br>NOME DA PASTA NO GET PAI ' .$pasta->name;
        $pai = get_pasta_object($pasta->parent);
        echo '<br>NOME DO PAI NO GET PAI ' .$pai->name;
        if(is_numeric($pai->name))
        {
            while(is_numeric($pai->name))
            {
                $pai = get_pasta_object($pai->parent);
            }
        }
        echo '<br>NOME DO PAI RETORNADO NO GET PAI ' .$pai->name;
        return $pai;
    }

    function return_pai_imported($pai_object)
    {   
        $importacao_id_pai = $pai_object->term_id;
        $de_para = [710,625];
        if(in_array($importacao_id_pai, $de_para))
        {
            $importacao_id_pai = PASTA_ID;
        }
        return get_categoria_name_pai($pai_object->name,$importacao_id_pai);
    }

    function get_pastas($pasta_id,$periodo_ano=null,$categoria_pai_migracao=null)
    {
       $pastas = get_query_sub_pastas($pasta_id);

        

        if (count($pastas->get_terms())) 
        {
            

            echo !is_numeric($periodo_ano) ? '<ul class="pastas">' : '';
            foreach($pastas->get_terms() as $pasta) { 
                $pai = return_pai_imported(get_pai_object($pasta->term_id));
                echo '<br>ID  DO PAI RETORNADO PELO NOME ' .$pai;
                // while(is_numeric($pai->name))
                // {
                //     $pai = get_pasta_object($pasta->parent);
                // }
                // $categoria_pai_migracao = is_numeric($pai->name) ? $pai->parent : $pasta_id;
                $categoria_pai_migracao = $pai;

                

                $str_cat = ' ( IDIMPORTACAO : '. $pasta->term_id.') ( IDIMPORTACAO-PAI : '.$categoria_pai_migracao.')( PASTA_ID'.$pasta_id.')';
                echo !is_numeric($pasta->name) ? '<li><i class="fas fa-folder mr-2"></i><a href="?sub='.$pasta->slug .'">'. $pasta->name .$str_cat.'</a>'  : '';
                $periodo_ano = $periodo_ano;
                $periodo_ano = is_numeric($pasta->name) ? intval($pasta->name) : $periodo_ano;
                // $categoria_pai_migracao = $categoria_pai_migracao == null ?  $pasta_id: $categoria_pai_migracao;
                
                $pasta_id_file = $pasta->term_id;
                $new_local = null;
                // echo $pasta->name.'<------>'.$categoria_pai_migracao;
                if(get_categoria_name_pai($pasta->name,$categoria_pai_migracao) == null )
                {
                    
                    if (!is_numeric($pasta->name))
                    {
                        ECHO 'NAO ENTROU NO NEW LOCAL';
                        echo $categoria_pai_migracao.'-'.$pasta->name;
                        add_categoria($pasta->name,$pasta->term_id,$categoria_pai_migracao,$pasta->slug);
                    }
                    else
                    {
                        $new_local = $categoria_pai_migracao;   
                    }
                    
                }
                else 
                {
                //    echo 'ENTROU NO NEWLOCAL';
                    $new_local = get_categoria_name_pai($pasta->name,$categoria_pai_migracao);
                }
                //  if(is_numeric($pasta->name))
                // {
                //     echo 'ENTROU NO NEWLOCAL2';
                //     $new_local = $categoria_pai_migracao;
                // }

                get_files($pasta->term_id,$periodo_ano,$categoria_pai_migracao,$new_local);
                get_pastas($pasta->term_id,$periodo_ano,$categoria_pai_migracao);
                echo !is_numeric($periodo_ano) ? '</li>' : '';
            }


            echo !is_numeric($pasta->name) ? '</ul>' : '';

        }  
    }
    // $nome = 'TESTE IGO ARQUIVO';
    // $arquivo = 'documentos/2023/07/62ef8d942ad82ab1cc290caf57d4f494/doc.odt';
    // $mes = 1;
    // $ano = 2022;
    // $categoria_id = 24;
    // $importacao_id = 10000;
    // $tipo = 3;
    // insert_arquivo($nome,$arquivo,$ano,$mes,$categoria_id,$importacao_id,$tipo);
    // var_dump(existe_categoria(null,'Contato'));
    // echo existe_categoria(1,4);
    // var_dump(the_title());
    get_pasta($pastaId, get_the_title());
    echo 'TUDO TERMINADO';
    // Lista os diretórios
    if ($isValid):
        $pastas = new WP_Term_Query(array(
            'taxonomy'      => 'nt_wmc_folder',
            'parent'        => $pastaId,
            'hide_empty'    => false,
            'meta_key'      => 'folder_position',
            'orderby'       => 'meta_value_num',
            'order'         => 'ASC'
        ));
        $parentSlug = isset($_GET['sub']) ? $_GET['sub'] .':' : '';
        echo '<ul class="pastas">';
        foreach($pastas->get_terms() as $pasta) { 
            echo '<li><i class="fas fa-folder mr-2"></i> <a href="?sub='. $parentSlug .''. $pasta->slug .'">'. $pasta->name .'</a></li>';
        }
        echo '</ul>';

        // if (!count($pastas->get_terms())):
        // Lista os arquivos
    $paged = get_query_var('paged') ? get_query_var('paged') : 1;
    $ordenacao = get_field('ordenacao_de_arquivos');
    if ($ordenacao && $ordenacao == 'nome') {
        $arquivos = new WP_Query(array(
                'post_type'         => 'attachment',
                'post_status'       => 'inherit',
                'posts_per_page'    => 25,
        'paged'             => $paged,
        'orderby'       => 'title',
        'order'         => 'DESC',
                'tax_query'         => array(
                        array(
                        'include_children'  => false,
                        'taxonomy'          => 'nt_wmc_folder',
                        'field'             => 'term_taxonomy_id',
                        'terms'             => $pastaId
                        )
                )
                ));
    } else {
            $arquivos = new WP_Query(array(
                'post_type'         => 'attachment',
                'post_status'       => 'inherit',
                'posts_per_page'    => 25,
                'paged'             => $paged,
                'tax_query'         => array(
                    array(
                        'include_children'  => false,
                        'taxonomy'          => 'nt_wmc_folder',
                        'field'             => 'term_taxonomy_id',
                        'terms'             => $pastaId
                    )
                )
            ));
    }
        ?>
        <ul class="pasta-arquivos">
        <?php if ($arquivos->have_posts()): while($arquivos->have_posts()): $arquivos->the_post(); ?> 
            <li>
                <?php include 'content/content-file.php' ?>
            </li>
        <?php endwhile; endif; ?>
        </ul>
        <?php
            $total = $arquivos->max_num_pages;

            if ($total > 1){
                $current_page = max(1, get_query_var('paged'));
                // Pagination fix
                $temp_query = $wp_query;
                $wp_query   = NULL;
                $wp_query   = $arquivos;
                
                the_posts_pagination(array(
                    'type'      => 'list',
                    'current'   => $current_page,
                    'total'     => $total
                ));

                $wp_query   = NULL;
                $wp_query   = $temp_query;
            }
        ?>
        <?php //endif; ?>
    <?php endif; ?>
<?php endif; ?>

<script>
function alerta_file(nome,categoria_pai_id,url_file,periodo_ano,periodo_mes) {
  alert('nome :' + nome + ' categoria_pai_id :' + categoria_pai_id + ' url_file : ' + url_file + ' periodo_ano : ' + periodo_ano + ' periodo_mes :' + periodo_mes);
}
</script>
<?php exit; ?>