/**
  * Render Meta Box content.
  * @param WP_Post $post The post object.
  */
 public function render_valores_padrao_meta_box($post)
 {
     $postId = $post->ID;
     // Organizador
     $organizadores = Organizadores::getInstance()->getAll();
     $organizadores = Plib::array_to_key_value(Plib::object_to_array($organizadores), 'id', 'titulo');
     $organizadores[''] = "";
     echo input_select($postId, 'valor_id_organizador', 'Organizador:', $organizadores);
     // Confirmação
     echo input_select($postId, 'valor_confirmacao', 'Confirmação da Inscrição:', array('' => '', 'preinscricao' => 'Pré-inscrição', 'imediata' => 'Imediata', 'pagamento' => 'Após Confirmação do Pagamento', 'posterior' => 'Posteriormente pelo Organizador'));
     // Tipo de inscrição
     //echo input_select($postId, 'pago', 'Tipo de Inscrição:', array(''=>'','pago' => 'Paga', 'gratuito' => 'Gratuita'));
     // Add an nonce field so we can check for it later.
     wp_nonce_field('myplugin_inner_custom_box', 'myplugin_inner_custom_box_nonce');
 }
 /**
  * Workaround que retorna todos os extras de todos os eventos, divididos por tipo
  */
 public function getExtrasTitulosTipos()
 {
     if (self::$_extrasTitulosTipo != null) {
         return self::$_extrasTitulosTipo;
     }
     $return = null;
     $sql = "SELECT meta_value AS extra FROM wp_postmeta WHERE meta_key='campos_extras' ORDER BY meta_id";
     $result = $this->wpdb()->get_results($sql);
     if ($result && count($result) > 0) {
         $return = array();
         foreach ($result as $extras) {
             $extras = explode("\r\n", PLib::unicode_to_utf8($extras->extra));
             foreach ($extras as $extra) {
                 $chave = substr($extra, 0, strpos($extra, '/'));
                 $titulo = str_replace($chave . '/', '', $extra);
                 if (strpos($titulo, '[ ]') > 0) {
                     $tipo = "bool";
                 } else {
                     if (strpos($titulo, '[file]') > 0) {
                         $tipo = "file";
                     } else {
                         $tipo = 'string';
                     }
                 }
                 if (strpos($titulo, ' [') > 0) {
                     $titulo = substr($titulo, 0, strpos($titulo, ' ['));
                 }
                 if ($chave != null && $titulo != null) {
                     $return[$chave] = json_decode(json_encode(array('Chave' => $chave, 'Titulo' => $titulo, 'Tipo' => $tipo)));
                 }
                 //              var_dump($extra);
                 //              var_dump($chave);
                 //              $titulo
             }
         }
         //            \TiagoGouvea\PLib::var_dump($return);
         //            die();
     }
     self::$_extrasTitulosTipo = $return;
     return $return;
 }
    public function render_meta_box_descricoes($post)
    {
        $postId = $post->ID;
        $this->post_id = $postId;
        if ($postId != null) {
            $this->evento = Eventos::getInstance()->getById($postId, false);
        }
        ?>
        <div id="tabs">
            <ul class="tabs">
                <li><a href="#tabs-descricao">Descrição</a></li>
                <li><a href="#tabs-realizacao">Realização</a></li>
                <li><a href="#tabs-inscricao">Inscrição</a></li>
                <?php 
        if ($this->templateExibir('campos_extras')) {
            ?>
                    <li><a href="#tabs-dados">Dados Formulário</a></li>
                <?php 
        }
        ?>
                <?php 
        if ($this->evento->pago == 'pago') {
            ?>
                    <li><a href="#tabs-treinamento">Treinamento</a></li>
                <?php 
        }
        ?>
                <!--                <li><a href="#tabs-mensagens">Mensagens</a></li>-->
                <?php 
        if ($this->templateExibir('secoes_extras')) {
            ?>
                    <li><a href="#tabs-sessoesextras">Sessões Extras</a></li>
                <?php 
        }
        ?>
            </ul>
            <div id="tabs-descricao">
                <?php 
        if (TGO_EVENTO_EVENTO_PAI === true) {
            echo "<div class=fields>";
            echo "<h3>Herdar Configurações</h3>";
            $eventos = Eventos::getInstance()->getEventosOrfaos($postId);
            $eventos = PLib::object_to_array($eventos);
            $eventos = Plib::array_to_key_value($eventos, 'id', 'titulo');
            echo input_select($postId, 'id_evento_pai', 'Evento Pai:', $eventos, null, get_post_meta($postId, 'id_evento_pai', true), 'class=ajustes_visuais');
            echo "</div>";
        }
        echo "<div class=fields>";
        echo "<h3>Chamadas Curtas</h3>";
        if ($this->templateExibir('descricao_1')) {
            echo input_texto($postId, 'descricao_1', 'Descrição Curtíssima', 100);
        }
        if ($this->templateExibir('descricao_2')) {
            echo input_textarea($postId, 'descricao_2', 'Descrição Breve', 3);
        }
        echo "</div>";
        echo "<div class=fields>";
        echo "<h3>Apresentação completa</h3>";
        if ($this->templateExibir('descricao_3')) {
            $value = get_post_meta($postId, 'descricao_3', true);
            wp_editor($value, 'descricao_3', array('textarea_rows' => get_option('default_post_edit_rows', 20)));
        }
        echo "</div>";
        ?>
            </div>
            <div id="tabs-realizacao">
                <?php 
        // Organizador
        $organizadores = Plib::object_to_array(Organizadores::getInstance()->getAll());
        $organizadores = Plib::array_to_key_value($organizadores, 'id', 'titulo');
        if (count($organizadores) > 1) {
            echo "<div class=fields>";
            echo "<h3>Organização</h3>";
            if ($this->templateExibir('id_organizador')) {
                echo input_select($postId, 'id_organizador', 'Organizador:', $organizadores, null, $this->templateValorPadrao('id_organizador'));
            } else {
                if ($this->templateValorPadrao('id_organizador') != null) {
                    echo input_hidden($postId, 'id_organizador', $this->templateValorPadrao('id_organizador'));
                } else {
                    $organizadores = array_keys($organizadores);
                    echo input_hidden($postId, 'id_organizador', $organizadores[0]);
                }
            }
            echo "</div>";
        }
        // Instrutor
        if ($this->templateExibir('id_instrutor')) {
            $instrutores = Instrutores::getInstance()->getTodosArray();
            echo input_select($postId, 'id_instrutor', 'Instrutor/Coordenador:', $instrutores);
        }
        echo "<div class=fields>";
        echo "<h3>Data e Local</h3>";
        echo input_data($postId, 'data', 'Data do Evento:');
        echo input_hora($postId, 'hora', 'Hora de Inicio:');
        if ($this->templateExibir('data_fim')) {
            echo input_data($postId, 'data_fim', 'Data Término:');
        }
        echo input_hora($postId, 'hora_fim', 'Hora Término:');
        if ($this->templateExibir('id_local')) {
            Locais::getInstance()->init();
            $locais = Plib::object_to_array(Locais::getInstance()->getAll());
            $locais = Plib::array_to_key_value($locais, 'id', 'titulo');
            echo input_select($postId, 'id_local', 'Local:', $locais);
        }
        echo "</div>";
        echo "<div class=fields>";
        echo "<h3>Medidores de Conversão</h3>";
        echo input_texto($postId, 'fb_conversion_track', 'Facebook Conversion Track:', 20);
        echo input_texto($postId, 'tw_conversion_track', 'Twitter Conversion Track:', 20);
        echo "</div>";
        ?>
            </div>
            <div id="tabs-inscricao">
                <?php 
        // Data Inicio Inscrições
        echo "<div class=fields>";
        echo "<h3>Inscrições</h3>";
        echo input_data($postId, 'data_inicio_inscricoes', 'Inicio das Inscrições:');
        echo input_data($postId, 'data_fim_inscricoes', 'Fim das Inscrições:');
        // Pago ou Gratuito
        if ($this->templateExibir('pago')) {
            echo input_select($postId, 'pago', 'Tipo de Inscrição:', array('pago' => 'Paga', 'gratuito' => 'Gratuita'), null, null, 'class=ajustes_visuais');
        } else {
            if ($this->templateValorPadrao('pago') != null) {
                echo input_hidden($postId, 'pago', $this->templateValorPadrao('pago'));
            }
        }
        if ($this->templateExibir('confirmacao')) {
            echo input_select($postId, 'confirmacao', 'Confirmação da Inscrição:', array('preinscricao' => 'Pré-inscrição', 'imediata' => 'Imediata', 'pagamento' => 'Após Confirmação do Pagamento', 'posterior' => 'Posteriormente pelo Organizador'), null);
        } else {
            if ($this->templateValorPadrao('confirmacao') != null) {
                echo input_hidden($postId, 'confirmacao', $this->templateValorPadrao('confirmacao'));
            }
        }
        if ($this->templateExibir('validacao_pessoa')) {
            echo input_select($postId, 'validacao_pessoa', 'Localizar Cadastro do Inscrito:', array('email' => 'Email', 'cpf' => 'CPF'), null, 'email');
        }
        echo "</div>";
        // Vagas
        if ($this->templateExibir('vagas')) {
            echo "<div class=fields>";
            echo "<h3>Vagas</h3>";
            echo input_numero($postId, 'vagas', 'Vagas Disponíveis:');
            echo input_checkbox($postId, 'fila_espera', 'Fila de Espera');
            echo "</div>";
        }
        // Formas de pagamento
        echo "<div id=formas_pagamento class=fields>";
        echo "<h3>Pagamento</h3>";
        // Integração PagSeguro
        if (Integracoes::getInstance()->hasByServico('PagSeguro')) {
            echo input_checkbox($postId, 'pago_pagseguro', 'PagSeguro');
            $integracoes = Plib::object_to_array(Integracoes::getInstance()->getByServico('PagSeguro'));
            $integracoes = Plib::array_to_key_value($integracoes, 'id', 'titulo');
            echo input_select($postId, 'id_integracao_pagseguro', 'Integração PagSeguro:', $integracoes);
        }
        // Integração Cielo
        if (Integracoes::getInstance()->hasByServico('Cielo')) {
            echo input_checkbox($postId, 'pago_cielo', 'Cielo');
            $integracoes = Plib::object_to_array(Integracoes::getInstance()->getByServico('Cielo'));
            $integracoes = Plib::array_to_key_value($integracoes, 'id', 'titulo');
            echo input_select($postId, 'id_integracao_cielo', 'Integração Cielo:', $integracoes);
        }
        // Local de pagamento
        echo input_checkbox($postId, 'pago_dinheiro', 'Dinheiro');
        $locais = Plib::object_to_array(Locais::getInstance()->getAll());
        $locais = Plib::array_to_key_value($locais, 'id', 'titulo');
        echo input_select($postId, 'id_local_pagamento', 'Local pagamenho Dinheiro:', $locais);
        echo input_checkbox($postId, 'pago_deposito', 'Depósito Bancário');
        echo "</div>";
        // Beta
        if ($this->templateExibir('beta')) {
            echo input_checkbox($postId, 'beta', 'Beta:');
        }
        // Confirmação da Inscrição:
        //var_dump($this->evento->confirmacao);
        //                $meta = get_post_meta($postId, 'confirmacao', true);
        //                echo "'$meta'<br>";
        //die();
        ?>
            </div>
            <div id="tabs-dados">
                <?php 
        // Campo chave de validação da pessoa
        // Campos Extra
        if ($this->templateExibir('campos_extras')) {
            echo "<div class=fields>";
            echo "<h3>Campos Extras</h3>";
            echo input_textarea($postId, 'campos_extras', 'Campos Extras:', 10, "Utilizar:<br>nome_unico/Titulo do campo<br>Exemplo:<br>empresa/Empresa em que trabalha");
            echo "</div>";
        }
        if ($this->templateExibir('avaliacao')) {
            $questionarios = Plib::object_to_array(Questionarios::getInstance()->getAll());
            $questionarios = Plib::array_to_key_value($questionarios, 'id', 'titulo');
            echo input_select($postId, 'id_questionario', 'Questionário de Feedback:', $questionarios);
        }
        ?>
            </div>
            <!--            <div id="tabs-mensagens">-->
            <!--                --><?php 
        //                if ($this->evento){
        //                    // Incluir formulário parcial de mensagens
        //                    Mensagens::getInstance()->setEvento($this->evento->id);
        //                    require_once PLUGINPATH. '/view/mensagens/partial_mensagens.php';
        //                }
        //
        ?>
            <!--            </div>-->
            <?php 
        if ($this->evento->pago == 'pago') {
            ?>
                <div id="tabs-treinamento">
                    <?php 
            echo "<div class=fields>";
            echo "<h3>Treinamento</h3>";
            // Publico Alvo
            if ($this->templateExibir('publico_alvo')) {
                echo input_textarea($postId, 'publico_alvo', 'Público Alvo', 2);
            }
            // Material Didático
            if ($this->templateExibir('material')) {
                echo input_textarea($postId, 'material', 'Material Didático oferecido:', 2);
            }
            // Certificado
            if ($this->templateExibir('certificado')) {
                echo input_textarea($postId, 'certificado', 'Certificado:', 1);
            }
            // Duração
            if ($this->templateExibir('duracao')) {
                echo input_textarea($postId, 'duracao', 'Duração:', 1);
            }
            if ($this->templateExibir('horarios')) {
                echo input_textarea($postId, 'horarios', 'Horários:', 1);
            }
            if ($this->templateExibir('requisitos')) {
                echo input_textarea($postId, 'requisitos', 'Pré-Requisitos:', 1);
            }
            // Valor
            //                if ($this->templateExibir('valor'))
            //                    echo input_numero($postId, 'valor', 'Valor:');
            echo "</div>";
            echo "<div class=fields>";
            echo "<h3>Conteúdo</h3>";
            // Tópicos
            if ($this->templateExibir('topicos')) {
                echo input_textarea($postId, 'topicos', 'Tópicos:', 10, "Utilizar um tópico por linha. Identar com 3 espaços.<br>[v] Video, [a] Arquivo");
            }
            // FAQ
            if ($this->templateExibir('faq')) {
                echo input_textarea($postId, 'faq', 'Perguntas Frequentes.:', 10, "Utilizar:<br>- Pergunta<Br>Resposta");
            }
            echo "</div>";
            ?>
                </div>
            <?php 
        }
        ?>
            <?php 
        if ($this->templateExibir('secoes_extras')) {
            ?>
                <div id="tabs-sessoesextras">
                    <?php 
            $postId = $post->ID;
            // Cada secão
            if ($this->evento) {
                $secoes = $this->evento->getSecoesExtras();
                if ($secoes != null) {
                    foreach ($secoes as $secao => $titulo) {
                        //                var_dump($secoes);
                        echo "<label for='secao_{$secao}'><div><p>{$titulo}</p></div></label>";
                        $value = get_post_meta($postId, 'secao_' . $secao, true);
                        wp_editor($value, 'secao_' . $secao, array('textarea_rows' => get_option('default_post_edit_rows', 10)));
                    }
                }
            }
            // Secões
            echo input_textarea($postId, 'secoes_extras', 'Secoes Extras:', 7, "Utilizar:<br>nome_unico/Titulo da seção");
            ?>
                </div>
            <?php 
        }
        ?>
        </div>
        <script>
            function ajustesVisuais(){
                console.log(this);
                console.log();
                if (jQuery("#pago").val() == "pago") {
                    jQuery("#formas_pagamento").css("display","block");
                } else {
                    jQuery("#formas_pagamento").css("display","none");
                }
            };

            jQuery(function ($) {
                $(document ).ready(function() {
                    $("#tabs").tabs();
                    $(".ajustes_visuais").on("change", function () {
                        ajustesVisuais();
                    });
                    ajustesVisuais();
                });
            });


        </script>

        <?php 
    }
 public function getExtrasArray($retornarChaveArray = true)
 {
     $titulosTipos = Organizadores::getInstance()->getExtrasTitulosTipos();
     $return = array();
     if ($this->extras == null) {
         return;
     }
     $extras = $this->getExtras();
     //        var_dump($extras);
     if ($extras == null) {
         return;
     }
     //        var_dump($extras);
     foreach ($extras as $key => $extra) {
         if ($extra['valor'] == '') {
             continue;
         }
         // Tentar obter o extra pelo titulo.....
         if (strpos($extra['titulo'], ' [ ') > 0) {
             $titulo = substr($extra['titulo'], 0, strpos($extra['titulo'], ' [ '));
         } else {
             $titulo = $extra['titulo'];
         }
         $tituloTipo = null;
         if ($titulosTipos) {
             foreach ($titulosTipos as $titTip) {
                 //                echo trim(strtolower($titulo)).'=='.(trim(strtolower($titTip->Titulo))).'<br>';
                 if (trim(strtolower($titTip->Titulo)) == trim(strtolower($titulo))) {
                     $tituloTipo = $titTip;
                     break;
                 }
             }
         }
         if ($tituloTipo) {
             //                echo "<pre>";
             //                var_dump($extra);
             //                echo "</pre>";
             //                var_dump($tituloTipo);
             $nExtra = $tituloTipo;
             if ($tituloTipo->Tipo == 'bool') {
                 $nExtra->Valor = $extra['valor'] == '1' ? 'Sim' : 'Não';
             } else {
                 if ($tituloTipo->Tipo == 'file') {
                     if ($extra['arquivo']) {
                         $arquivo = get_stylesheet_directory() . "/../../uploads/eventos/" . $extra['arquivo'];
                         $arquivo = '/' . $this->get_absolute_path($arquivo);
                         //                        var_dump($arquivo);
                         if (file_exists($arquivo)) {
                             $nExtra->Valor = $arquivo;
                         } else {
                             $nExtra->Valor = null;
                         }
                     }
                 } else {
                     $nExtra->Valor = $extra['valor'];
                 }
             }
             $chave = $titTip->Chave;
             //                echo "<pre>";
             ////                var_dump($nExtra);
             //                echo "</pre>";
         } else {
             $nExtra = json_decode(json_encode(array('Tipo' => 'string')));
             $nExtra->Valor = $extra['valor'];
             $nExtra->Titulo = $extra['titulo'];
             $chave = $nExtra->Titulo;
             //                var_dump($nExtra);
         }
         if ($retornarChaveArray) {
             $return[$key] = $nExtra;
         } else {
             $return[] = $nExtra;
         }
         //            } else if ($extra['arquivo']){
         //                $extra['tipo']="file";
         //                $arquivo = get_stylesheet_directory()."/../../uploads/eventos/".$extra['arquivo'];
         //                if (file_exists($arquivo)){
         //                    $extra['valor'] = get_stylesheet_uri()."/../../../uploads/eventos/".$extra['arquivo'];
         //                } else {
         //                    $extra['valor'] = "";
         //                }
         //            }
         //            if (strpos($extra['titulo'], ' [ ') > 0)
         //                $extra['titulo'] = substr($extra['titulo'],0,strpos($extra['titulo'], ' [ '));
         //            $return[]=$extra;
     }
     return $return;
 }
 public static function recuperarSenha()
 {
     // Recebendo post de autenticação?
     $email = filter_var($_POST['email'], FILTER_SANITIZE_EMAIL);
     $pessoa = Pessoas::getInstance()->getByEmail($email);
     if ($pessoa) {
         // Enviar email
         /* @var $organizador Organizador */
         $organizadores = Organizadores::getInstance()->getAll();
         $organizador = $organizadores[0];
         $mensagem = Mensagens::getInstance()->get('email_lembrete_senha', null, $pessoa);
         $organizador->enviarEmail($pessoa->email, "Lembrete de Senha", $mensagem);
         setFlash("Acabamos de lhe enviar um email com seu lembrete de senha. Se isso não for o suficiente entre em contato conosco.");
     } else {
         setFlashError("Nenhum usuário encontrado com este email.");
         return false;
     }
 }
 /**
  * Retorna objeto do organizador
  * @return Organizador
  */
 function organizador()
 {
     if (TGO_EVENTO_SINGLE_ORGANIZER === true) {
         $organizador = Organizadores::getInstance()->getAll();
         if ($organizador == null) {
             throw new Exception("SINGLE_ORGANIZER sem organizador");
         }
         return $organizador[0];
     } else {
         if ($this->id_organizador) {
             return Organizadores::getInstance()->getById($this->id_organizador);
         } else {
             if (Organizadores::getInstance()->getCountAll() == 1) {
                 $organizador = Organizadores::getInstance()->getAll();
                 return $organizador[0];
             } else {
                 // Ops!
                 throw new Exception("Não foi possível encontrar uma definição de organizador para um evento");
             }
         }
     }
 }
function exportarInscritosOrganizadorCsv()
{
    //$id_organizador = $_GET['id'];
    //$organizador = Organizador::obterPorId($id_organizador);
    $inscritos = Organizadores::getInstance()->getTodosInscritos();
    $nInscritos = array();
    foreach ($inscritos as $inscrito) {
        if ($inscrito->email != null) {
            $nInscritos[$inscrito->email] = $inscrito;
        }
    }
    $cabecalho = array();
    foreach ($nInscritos[$inscrito->email] as $campo => $valor) {
        $cabecalho[0][$campo] = $campo;
    }
    $nInscritos = array_merge($cabecalho, $nInscritos);
    //var_dump($inscritos);die();
    Plib::array_to_csv_download($nInscritos, 'Inscritos.csv');
    die;
}
 public static function showList()
 {
     require_once PLUGINPATH . '/view/organizadores/list.php';
     $organizadores = Organizadores::getInstance()->getAll();
     ListTableOrganizadores($organizadores, "Organizadores");
 }