public function enviarSms($celular, $mensagem)
 {
     $from = "#gdgjf";
     require_once PLUGINPATH . '/vendor/human_gateway_client_api/HumanClientMain.php';
     $humanSimpleSend = new HumanSimpleSend(TGO_EVENTO_HUMAN_ACCOUNT, TGO_EVENTO_HUMAN_TOKEN);
     // Certificar que pessoa e celular estejam ok
     $celular = PLib::only_numbers($celular);
     if ($celular == null || $celular == '' || strlen($celular) < 8) {
         return false;
     }
     $celular = substr($celular, -10);
     if (strlen($celular) == 8) {
         $celular = '32' . $celular;
     }
     $celular = '55' . $celular;
     //        $celular="553288735683";
     // Criar objeto e enviar
     $message = new HumanSimpleMessage($mensagem, $celular, $from);
     try {
         $status = $humanSimpleSend->sendMessage($message);
     } catch (Exception $e) {
         echo "<br>Erro no envio - Exception<br>";
     }
     if ($status->getCode() == "000") {
         return true;
     } else {
         echo "<br>Erro: {$pessoa->nome} - {$celular} - code:" . $status->getCode() . " - message:" . $status->getMessage() . "<br>";
         return false;
     }
 }
 function column_default($item, $column_name)
 {
     /* @var $preco Preco */
     $preco = $this->itemsObj[$item['id']];
     switch ($column_name) {
         case 'categoria':
             return $item['titulo'];
             break;
         case 'valor':
             return PLib::format_cash($item['valor']);
             break;
         case 'inscritos':
             return $preco->getQtdInscritos() . '/' . $preco->getQtdConfirmados();
             break;
         case 'vagas':
             return $preco->vagas . '/' . $preco->getVagasRestantes();
             break;
         case 'status':
             return $item['encerrado'] == '1' ? "Encerrado" : "Atual";
             break;
         default:
             return $item[$column_name];
             //return print_r($item,true); //Show the whole array for troubleshooting purposes
     }
 }
 /**
  * Porção visível do widget
  * Exibir eventos atuais e numeros
  */
 public static function widget()
 {
     $eventos = Eventos::getInstance()->getFuturos();
     foreach ($eventos as $evento) {
         /* @var $evento Evento */
         echo "<span style='font-size: 15px;'><a href='admin.php?page=Eventos&action=view&id={$evento->id}'>{$evento->titulo}</a></span><br>";
         if ($evento->data) {
             echo "<span style='font-size: 11px;'><i>" . PLib::days_between_dates($evento->data) . " dias para o evento</i></span><br>";
         }
         // Pré-inscritos
         $pre = $evento->qtdPreInscritos();
         // Inscritos
         $ins = $evento->qtdInscritos();
         // Confirmados
         $con = $evento->qtdConfirmados();
         if ($con != null && $con > 0) {
             echo "<b>Confirmados: {$con} - {$evento->conversaoInscritosConfirmados}</b><br>";
         }
         if ($ins != null && $ins > 0) {
             echo "Inscritos: {$ins} - {$evento->conversaoVisitantesInscritos}<br>";
         }
         if ($pre != null && $pre > 0) {
             echo "Pré-inscritos: {$pre}<br>";
         }
         echo "<br>";
     }
 }
/**
 * @param $evento Evento
 * @param $pessoa Pessoa
 * @param $inscricao Inscricao
 */
function etapaConteudo($evento, $pessoa, $inscricao)
{
    $categorias = $evento->getCategorias($pessoa);
    //    PLib::var_dump($categorias);
    /** @var $categoria Categoria */
    foreach ($categorias as $categoria) {
        echo input_radio_padrao("categoria", $categoria->id, "&nbsp;&nbsp;" . $categoria->titulo . " - " . PLib::format_cash($categoria->getPreco()->valor), null, $categoria->_permiteInscricao === false ? "disabled" : "") . "<br><br>";
    }
}
 public static function getUrlCielo(Evento $evento, Pessoa $pessoa, Inscricao $inscricao, $urlRetorno = null)
 {
     $integracao = $evento->getIntegracaoCielo();
     $valor = number_format($inscricao->valor_inscricao, 2, '', '');
     $order = new stdClass();
     $order->OrderNumber = $inscricao->id;
     $order->SoftDescriptor = $evento->organizador()->titulo;
     $order->Cart = new stdClass();
     $order->Cart->Items = array();
     $order->Cart->Items[0] = new stdClass();
     $order->Cart->Items[0]->Name = $evento->titulo;
     $order->Cart->Items[0]->Description = 'Inscrição em ' . $evento->titulo;
     $order->Cart->Items[0]->UnitPrice = $valor;
     $order->Cart->Items[0]->Quantity = 1;
     $order->Cart->Items[0]->Type = 'Service';
     $order->Shipping = new stdClass();
     $order->Shipping->Type = 'WithoutShipping';
     $order->Payment = new stdClass();
     $order->Payment->BoletoDiscount = 5;
     $order->Payment->DebitDiscount = 5;
     $order->Customer = new stdClass();
     $order->Customer->Identity = $pessoa->cpf;
     $order->Customer->FullName = $pessoa->nome;
     $order->Customer->Email = $pessoa->email;
     $order->Customer->Phone = PLib::only_numbers($pessoa->celular);
     //$order->Options = new stdClass();
     //$order->Options->AntifraudEnabled = false;
     //        var_dump($order);
     //
     $curl = curl_init();
     curl_setopt($curl, CURLOPT_URL, 'https://cieloecommerce.cielo.com.br/api/public/v1/orders');
     curl_setopt($curl, CURLOPT_SSL_VERIFYPEER, false);
     curl_setopt($curl, CURLOPT_RETURNTRANSFER, true);
     curl_setopt($curl, CURLOPT_POST, true);
     curl_setopt($curl, CURLOPT_POSTFIELDS, json_encode($order));
     curl_setopt($curl, CURLOPT_HTTPHEADER, array('MerchantId: ' . $integracao->token, 'Content-Type: application/json'));
     $response = curl_exec($curl);
     curl_close($curl);
     //        var_dump($response);die("a");
     //        PLib::var_dump($response,'response');
     if ($response != null && strlen($response) > 1) {
         $json = json_decode($response);
         if ($json != false) {
             //                PLib::var_dump($json,'json');
             //                die();
             // Url de checkout
             if ($json->settings != null && $json->settings->checkoutUrl) {
                 return $json->settings->checkoutUrl;
             }
         } else {
             die('erro no json decode cielo?');
         }
     } else {
     }
     return false;
 }
 function column_title($item)
 {
     /* @var $pessoa Pessoa */
     $pessoa = $this->itemsObj[$item['id']];
     $title = '<div class=list_pessoa_title>
                 <a href="admin.php?page=Pessoas&action=view&id=' . $item[id] . '">' . PLib::truncate_words(Plib::capitalize_name($pessoa->nome, 3), 30) . '</a><br>
                 <img src="' . $pessoa->getPictureUrl(80) . '" style="width:80px; margin-right: 8px;"><br>
                 ' . $pessoa->getExtrasExibicao(null, true) . '
             </div>';
     $actions = array();
     //        if ($pessoa->get PLib::coalesce($inscricao->confirmado,0) == 0 )
     //            $actions['delete'] = '<a href="admin.php?page=Inscricoes&action=delete&id=' . $item['id'] . '&id_evento=' . $item['id_evento'] . '">Excluir</a>';
     return $title . $this->row_actions($actions);
 }
 function column_default($item, $column_name)
 {
     /* @var $desconto Desconto */
     $desconto = $this->itemsObj[$item['id']];
     switch ($column_name) {
         case 'desconto':
             if ($item['desconto_por'] == 'percentual') {
                 return $item['desconto'] . '%';
             } else {
                 return PLib::format_cash($item['desconto']);
             }
             break;
         case 'inscritos':
             $inscritos = $desconto->getQtdInscritos();
             if ($inscritos > 0) {
                 $inscritos = "<span style='color:blue;'>" . $inscritos . "</span>";
             }
             $confirmados = PLib::coalesce($desconto->getQtdConfirmados(), 0);
             $restantes = $desconto->getQuantidadeRestante();
             if ($confirmados > 0 && $restantes == 0) {
                 $confirmados = "<span style='color:green;'>" . $confirmados . "</span>";
             } else {
                 if ($confirmados > 0) {
                     $confirmados = "<span style='color:blue;'>" . $confirmados . "</span>";
                 }
             }
             return $inscritos . '/' . $confirmados;
             break;
         case 'pessoa':
             return '<a href="admin.php?page=Pessoas&action=view&id=' . $desconto->id_pessoa . '">' . $desconto->pessoa()->nome . '</a>';
             break;
         case 'validade':
             return PLib::date_relative($desconto->data_validade);
             break;
         case 'vagas':
             $restantes = $desconto->getQuantidadeRestante();
             if ($restantes == 0) {
                 $restantes = "<span style='color:green;'>" . $restantes . "</span>";
             }
             return $desconto->quantidade . '/' . $restantes;
             break;
         default:
             return $item[$column_name];
             //return print_r($item,true); //Show the whole array for troubleshooting purposes
     }
 }
 function column_title($item)
 {
     /* @var $inscricao Inscricao */
     $inscricao = $this->itemsObj[$item['id']];
     $link = $inscricao->getLinkPagamento();
     if ($inscricao->pessoa() == null) {
         return "Inscrição sem pessoa?";
     }
     // Começar retorno
     $return = '<a href="admin.php?page=Pessoas&action=view&id=' . $item['id_pessoa'] . '">' . PLib::capitalize_name($inscricao->pessoa->nome, 35) . '</a><br>
     <img src="' . $inscricao->pessoa()->getPictureUrl(80) . '" style="width:80px; margin-right: 8px; float:left;">';
     $return .= '</b> ';
     // Ações
     $actions = array('link' => '<a href="' . $link . '" target=_blank>Link Wizard</a>', 'edit' => '<a href="admin.php?page=Inscricoes&action=edit&id=' . $item['id'] . '">Editar</a>');
     if (PLib::coalesce($inscricao->confirmado, 0) == 0) {
         $actions['delete'] = '<a href="admin.php?page=Inscricoes&action=delete&id=' . $item['id'] . '&id_evento=' . $item['id_evento'] . '">Excluir</a>';
     }
     // Contar inscrições
     $inscricoes = count(Inscricoes::getInstance()->getByPessoa($item['id_pessoa']));
     if ($inscricoes == 1) {
         $inscricoes = "*";
     } else {
         $inscricoes = "({$inscricoes})";
     }
     $return .= $inscricoes . '<br>Ticket: ' . $item['id'];
     $return .= '<br>Inscrição: ' . Plib::date_relative($item['data_inscricao'], true) . " (" . PLib::days_between_dates($item['data_inscricao']) . " dias)";
     if ($item['id_preco'] != "") {
         $return .= '<br>Categoria: ' . $inscricao->categoria()->titulo;
     }
     if ($item['id_preco'] != "") {
         $return .= '<br>Lote: ' . $inscricao->preco()->titulo;
     }
     if ($inscricao->valor_inscricao) {
         $return .= '<br>Valor Inscrição: ' . PLib::format_cash($inscricao->valor_inscricao);
     }
     //        if ($item['codigo_gateway']){
     //$return.= '<br>'.$item['codigo_gateway'];
     //        }
     $return = '<div class=list_inscricoes_title>' . $return . '</div>';
     $return .= ' ' . $this->row_actions($actions);
     return $return;
 }
 /**
  * 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;
 }
 function column_default($item, $column_name)
 {
     /* @var $desconto Desconto */
     $desconto = $this->itemsObj[$item['id']];
     switch ($column_name) {
         case 'desconto':
             if ($item['desconto_por'] == 'percentual') {
                 return $item['desconto'] . '%';
             } else {
                 return PLib::format_cash($item['desconto']);
             }
             break;
         case 'inscritos':
             return $desconto->getQtdInscritos() . '/' . $desconto->getQtdConfirmados();
             break;
         case 'vagas':
             return $desconto->quantidade . '/' . $desconto->getQuantidadeRestante();
             break;
         default:
             return $item[$column_name];
             //return print_r($item,true); //Show the whole array for troubleshooting purposes
     }
 }
            if ($evento->pago == 'gratuito') {
                ?>
                                    <p>Evento gratuito e aberto ao público, necessário apenas realizar a inscrição!</p>
                                <?php 
            } else {
                ?>
                                    <p><?php 
                $precos = PrecoEvento::obterPorEvento($evento->id);
                /* @var $preco Preco */
                foreach ($precos as $preco) {
                    if ($preco->encerrado == 1) {
                        echo "<del>";
                        echo $preco->titulo . ' - encerrado!<Br>';
                        echo "</del>";
                    } else {
                        echo $preco->titulo . ' - ' . PLib::format_cash($preco->valor) . '<Br>';
                        break;
                    }
                }
                ?>
</p>
                                <?php 
            }
            ?>
                                <br>
                                <p><a  href="<?php 
            echo the_permalink() . "?inscricao=1";
            ?>
" class="button_blue">Realizar Inscrição!</a></p>
                            <?php 
        } else {
 public static function getPessoa($idPessoa, $falharSeNaoEncontrada = true)
 {
     /* @var $pessoa Pessoa */
     if (ctype_digit($idPessoa)) {
         $pessoa = Pessoas::getInstance()->getById($idPessoa);
     } else {
         $idPessoa = urldecode($idPessoa);
         if (filter_var($idPessoa, FILTER_VALIDATE_EMAIL) || PLib::validade_cpf($idPessoa) || PLib::is_valid_md5($idPessoa)) {
             $pessoa = Pessoas::getInstance()->getByMd5($idPessoa);
         } else {
             echo json_encode(array('erro' => 'Valor não aceito'));
             die;
         }
     }
     if ($pessoa == null && $falharSeNaoEncontrada) {
         echo json_encode(array('erro' => 'Pessoa não localizada na base de dados (' . $idPessoa . ')'));
     } else {
         return $pessoa;
     }
 }
                            </thead>
                            <?php 
    if (count($inscricoes) > 0) {
        foreach ($inscricoes as $inscricao) {
            ?>
                                    <tr>
                                        <td><?php 
            echo $inscricao->id;
            ?>
</td>
                                        <td><?php 
            echo $inscricao->evento()->titulo;
            ?>
</td>
                                        <td><?php 
            echo PLib::date_relative($inscricao->data_inscricao);
            ?>
</td>
                                        <td><?php 
            echo $inscricao->getSituacaoString() . $inscricao->getSituacaoAcoes(true);
            ?>
</td>
                                    </tr>
                                <?php 
        }
    }
    ?>
                        </table>
                    </div>
                </div>
            </div>
 public function substituirVariaveis($mensagem, Evento $evento = null, Pessoa $pessoa = null, Inscricao $inscricao = null)
 {
     // Evento
     if ($evento != null) {
         $mensagem = str_replace('%evento_titulo%', $evento->titulo, $mensagem);
         $mensagem = str_replace('%evento_data_hora%', mb_strtolower(PLib::date_relative($evento->data . " " . $evento->hora, true, false)), $mensagem);
         if (function_exists('get_permalink')) {
             $mensagem = str_replace('%link_evento%', get_permalink($evento->id), $mensagem);
         }
         // Evento Local
         if ($evento->id_local != null) {
             $mensagem = str_replace('%evento_local%', $evento->local()->titulo, $mensagem);
             $mensagem = str_replace('%evento_local_endereco%', $evento->getLocal()->endereco, $mensagem);
             $mensagem = str_replace('%evento_local_telefone%', $evento->getLocal()->telefone, $mensagem);
         }
     }
     // Pessoa
     if ($pessoa != null) {
         $mensagem = str_replace('%pessoa_nome%', mb_convert_case(mb_strtolower($pessoa->nome), MB_CASE_TITLE, "UTF-8"), $mensagem);
         $mensagem = str_replace('%pessoa_primeiro_nome%', $pessoa->primeiro_nome(), $mensagem);
         $mensagem = str_replace('%pessoa_celular%', $pessoa->celular, $mensagem);
         $mensagem = str_replace('%pessoa_email%', $pessoa->email, $mensagem);
         $mensagem = str_replace('%pessoa_password%', $pessoa->getPassword(), $mensagem);
         if (strpos($mensagem, 'pessoa_extras') !== false) {
             $mensagem = str_replace('%pessoa_extras%', $pessoa->getExtrasExibicao(), $mensagem);
         }
         if (strpos($mensagem, 'pessoa_extras_social') !== false) {
             $mensagem = str_replace('%pessoa_extras_social%', $pessoa->getExtrasExibicao(null, true, false), $mensagem);
         }
     }
     // Inscrição
     if ($inscricao != null) {
         $mensagem = str_replace('%id_inscricao%', $inscricao->id, $mensagem);
         $mensagem = str_replace('%ticket%', $inscricao->id * 13, $mensagem);
         $mensagem = str_replace('%data_confirmacao%', $inscricao->data_confirmacao, $mensagem);
         $mensagem = str_replace('%valor_inscricao%', PLib::format_cash($inscricao->valor_inscricao), $mensagem);
         $mensagem = str_replace('%valor_pago%', PLib::format_cash($inscricao->valor_pago), $mensagem);
         $mensagem = str_replace('%forma_pagamento%', PagSeguroUtil::getFormaPagamentoTituloString($inscricao->forma_pagamento_gateway), $mensagem);
         $mensagem = str_replace('%meio_pagamento%', $inscricao->meio_pagamento, $mensagem);
         if (function_exists('get_permalink')) {
             $mensagem = str_replace('%link_pagamento%', $inscricao->getLinkPagamento(), $mensagem);
             $mensagem = str_replace('%link_avaliacao%', $inscricao->getLinkAvaliacao(), $mensagem);
             $mensagem = str_replace('%link_inscrito%', $inscricao->getLinkPagamento(), $mensagem);
             $mensagem = str_replace('%link_certificado%', $inscricao->getLinkCertificado(), $mensagem);
         }
         $mensagem = str_replace('%link_qrcode%', $inscricao->getLinkQrCode(), $mensagem);
         $mensagem = str_replace('%resumo_inscricoes%', 'Inscritos: ' . $inscricao->evento()->qtdInscritos() . ' - Confirmados: ' . $inscricao->evento()->qtdConfirmados(), $mensagem);
     }
     return $mensagem;
 }
                            <Td>
                                <?php 
$momento;
if ($evento->noFuturo) {
    $momento = "No futuro";
} else {
    if ($evento->acontecendo) {
        $momento = "Acontencendo agora";
    } else {
        $momento = "Já realizado";
    }
}
?>

                                Data Evento: <b><?php 
echo PLib::date_relative($evento->data . " " . $evento->hora, true, false);
?>
</b><br>
                                Momento Evento: <b><?php 
echo $momento;
?>
</b><br>
                                Aceitando Inscrições: <b><?php 
echo $evento->inscricaoAberta ? "Sim" : "Não";
?>
</b><br>
                            </Td>
                        </tr>
                    </table>
                </div>
            </div>
 public function aplicarTicket(Evento $evento, $ticket)
 {
     $ticket = sanitize_text_field($ticket);
     $desconto = Descontos::getInstance()->getByEventoTicket($evento->id, $ticket);
     if ($desconto == null) {
         $desconto = Descontos::getInstance()->getByTicket($ticket);
     }
     $dados = $ticket != null && $desconto != null;
     if ($dados) {
         if ($desconto->getQuantidadeRestante() <= 0) {
             $erro = "Este ticket de desconto já foi utilizado...";
         } else {
             $_SESSION['ticket'] = $ticket;
             $_SESSION['Evento_' . $evento->id]['descontos'][$desconto->ticket] = $desconto;
             if (count($_SESSION['Evento_' . $evento->id]['descontos']) == 1) {
                 setFlash("Muito bom! Você aplicou o ticket <b>{$desconto->ticket}</b> com <b>" . ($desconto->desconto_por == 'percentual' ? $desconto->desconto . '%' : PLib::format_cash($desconto->desconto)) . "</b> de desconto, e agora seu invesimento será de apenas " . PLib::format_cash($evento->getValorAtual()) . "!");
             } else {
                 setFlash("Você aplicou mais um desconto de <b>{$desconto->desconto}%</b>, agora terá o invesimento de apenas " . PLib::format_cash($evento->getValorAtual()) . "!");
             }
             return true;
         }
     } else {
         if (!$ticket) {
             $erro = "Informe um ticket de desconto";
         } else {
             if (!$desconto) {
                 $erro = "Ticket de desconto inválido ({$ticket}). Confira se digitou corretamente ou entre em contato com a Inspirar Digital.";
             }
         }
     }
     return $erro;
 }
 function column_default($item, $column_name)
 {
     $idEvento = $item['id'];
     /* @var $evento Evento */
     $evento = $this->itemsObj[$idEvento];
     //        var_dump($evento);
     //        var_dump($item);
     switch ($column_name) {
         // Obter total de visitantes
         case 'inscritos':
             global $wpdb;
             $return = null;
             $qtd = $evento->qtdPreInscritos();
             if ($qtd > 0) {
                 $return = 'Pré-inscritos: ' . $qtd . '<br>';
             }
             $return .= $evento->qtdInscritos() . " / " . $evento->qtdConfirmados() . '<br>';
             if ($evento->pago == 'pago') {
                 $return .= "Visitantes Inscritos: <b>{$evento->conversaoVisitantesInscritos}</b><br>";
                 if (!$evento->preInscricao()) {
                     $return .= "Inscritos Confirmados: <b>{$evento->conversaoInscritosConfirmados}</b><br>";
                 }
             }
             return $return;
             break;
             // Obter total de visitantes e pageviews
         // Obter total de visitantes e pageviews
         case 'visitas':
             global $wpdb;
             // Visitantes unicos
             $qtd = getVisitantesEvento($idEvento);
             // PageView
             $qtd2 = getPageViewsEvento($idEvento);
             return $qtd . " / " . $qtd2;
             break;
         case 'data':
             if ($item['data'] == null) {
                 return null;
             }
             $data = PLib::date_relative($item['data'] . " " . $item['hora'], false, false);
             if (strtotime($item['data']) > time()) {
                 $dias = PLib::days_between_dates($item['data']);
                 if ($dias > 0) {
                     $data .= "<br>" . $dias . " dias restantes";
                 }
             }
             return $data;
             break;
         case 'algomais':
             $return = null;
             if ($evento->noFuturo()) {
                 if ($evento->beta) {
                     $return = '[BETA]<br>';
                 }
                 if ($evento->preInscricao()) {
                     $return .= '[PRÉ-INSCRIÇÃO]<BR>';
                 }
                 if ($evento->pago == 'pago' && !$evento->preInscricao()) {
                     $preco = $evento->getPrecoAtual();
                     if ($preco != null) {
                         $vagasRestantes = $preco->getVagasRestantes();
                         if ($vagasRestantes <= 2) {
                             $vagasRestantes = "<span style='color:orangered;'>{$vagasRestantes}</span>";
                         }
                         if ($vagasRestantes <= 0) {
                             $vagasRestantes = "<span style='color:red;'>{$vagasRestantes}</span>";
                         }
                         $return .= "<b>Lote:</b> " . $preco->titulo . ' - ' . PLib::format_cash($evento->valor()) . ' - Vagas Restantes Lote: ' . $vagasRestantes . '<br>';
                     }
                 }
                 if ($evento->noFuturo() && !$evento->preInscricao()) {
                     $vagasDisponiveis = $evento->vagasDisponiveis();
                     if ($vagasDisponiveis <= 2) {
                         $vagasDisponiveis = "<span style='color:orangered;'>{$vagasDisponiveis}</span>";
                     }
                     if ($vagasDisponiveis <= 0) {
                         $vagasDisponiveis = "<span style='color:red;'>{$vagasDisponiveis}</span>";
                     }
                     $return .= "<b>Vagas Disponíveis Evento:</b> " . $vagasDisponiveis;
                 }
                 $erros = $evento->getErros();
                 if (count($erros['error']) > 0) {
                     $return .= '<br><span style="color:red;"><b>Erros: </b>' . count($erros['error']) . '</span>';
                 }
             } else {
                 if ($evento->hasAvaliacao()) {
                     $avaliacao1 = $evento->getAvaliacaoMediaPergunta(1);
                     $avaliacao2 = $evento->getAvaliacaoMediaPergunta(2);
                     $avaliacao3 = $evento->getAvaliacaoMediaPergunta(3);
                     $avaliacao = ($avaliacao1 + $avaliacao2 + $avaliacao3) / 3;
                     $avaliacao = number_format(round(($avaliacao1 + $avaliacao2 + $avaliacao3) / 3, 1), 1, '.', '');
                     $return .= 'Avaliação<br><div id="score_' . $evento->id . '"></div>';
                     $return .= "\n                            <script>\n                                jQuery(document).ready(function () {\n                                    jQuery('#score_{$evento->id}').raty({\n                                        score: {$avaliacao},\n                                        readOnly: true,\n                                        starHalf : 'star-half-big.png',\n                                        starOff : 'star-off-big.png',\n                                        starOn  : 'star-on-big.png',\n                                        path: '" . plugins_url('/Eventos/public/img/') . "'\n                                    });\n                                });\n                            </script>";
                 }
             }
             return $return;
             break;
         default:
             return $item[$column_name];
             //return print_r($item,true); //Show the whole array for troubleshooting purposes
     }
 }
    ?>
        <?php 
    if ($pergunta->tip_pergunta == 'star') {
        ?>
        $('#rate_<?php 
        echo $pergunta->id;
        ?>
').raty(
            {
                number: 5,
                scoreName: 'input_<?php 
        echo $pergunta->id;
        ?>
',
                score: <?php 
        echo \TiagoGouvea\PLib::coalesce($_POST['input_' . $pergunta->id], 0);
        ?>
,
                target: '#div_<?php 
        echo $pergunta->id;
        ?>
',
                hints: ['Ruim', 'Regular', 'Bom', 'Ótimo', 'Excelente']
            });
        <?php 
    }
    ?>
        <?php 
}
?>
    </script>
 public function getStructuredDataJs()
 {
     $place = null;
     if ($this->id_local) {
         $local = $this->getLocal();
         $place = '
          "location" : {
             "@type" : "Place",
             "name" : "' . $local->titulo . '",
             "address" : "' . str_replace("\r\n", " ", $local->endereco) . '",
             "telephone" : "' . $local->telefone . '" ';
         if ($local->latitude) {
             $place .= ',
             "geo": {
                 "@type": "GeoCoordinates",
                 "latitude": "' . $local->latitude . '",
                 "longitude": "' . $local->longitude . '"
               }
             ';
         }
         $place .= '
           }
         ';
     }
     $offers = null;
     if ($this->isPago() && $this->noFuturo()) {
         $val = number_format($this->getValorAtual(), 2, '.', '');
         $offers = '
         "offers" :{
             "price" : "' . $val . '",
             "priceCurrency" : "BRL",
             "url" : "' . $this->permalink() . '"
         }
         ';
     }
     //        var_dump($this->data);
     //        var_dump($this->hora);
     //        var_dump($this->inicio());
     return '
     <script type="application/ld+json">
         {
           "@context": "http://schema.org",
           "@type": "Event",
           "name": "' . $this->titulo . '",
           "startDate" : "' . PLib::date_iso8601($this->inicio()) . '",
            "url" : "' . $this->permalink() . '"
           ' . ($place ? ',' . $place : '') . '
           ' . ($offers ? ',' . $offers : '') . '
         }
     </script>';
 }
    if (count($data) > 0) {
        foreach ($data as $dado) {
            echo $dado->forma_pagamento . ' - Confirmados: ' . $dado->qtd . ' - Recebido: ' . PLib::format_cash($dado->valor_pago) . ' - Valor Líquido: ' . PLib::format_cash($dado->valor_liquido) . '<br>';
        }
    }
    ?>
<br>
                            <b>Recebido:</b><br>
                            <?php 
    // Obter total
    global $wpdb;
    $sql = "select coalesce(sum(ev_inscricoes.valor_pago),0) as valor_pago, coalesce(sum(coalesce(ev_inscricoes.valor_liquido,ev_inscricoes.valor_pago)),0) as valor_liquido\n                                    from ev_inscricoes\n                                    where ev_inscricoes.id_evento={$evento->id} and ev_inscricoes.confirmado=1";
    $data = $wpdb->get_results($sql);
    if ($data) {
        echo "Total: " . PLib::format_cash($data[0]->valor_pago) . "<br>";
        echo "Liquido: " . PLib::format_cash($data[0]->valor_liquido) . "<br>";
    }
    ?>
                        </td>
                    <?php 
}
?>
                </tr>
            </table>

            <!--            <div class="inside">-->
            <!--                <table width="100%">-->
            <!--                    <thead>-->
            <!--                    <th width="300">Ação</th>-->
            <!--                    <th>Detalhes</th>-->
            <!--                    </thead>-->
 private static function editCertificado(Evento $evento)
 {
     //        var_dump($evento->certificado_arquivo);
     //        die();
     $file = wp_upload_dir();
     $file = $file['path'];
     //        var_dump($file);
     if ($_POST) {
         //            var_dump($_FILES);
         // Nova imagem
         if ($_FILES['arquivo']) {
             //                var_dump($_FILES);
             $name = strtolower($_FILES['arquivo']['name']);
             $name = str_replace(' ', '_', $name);
             if (strpos($name, '.png') === false) {
                 die("O arquivo deve ser .PNG");
             }
             $file .= "/" . $name;
             //                var_dump($file);
             // Ajustar nome do arquivo
             // Mover
             move_uploaded_file($_FILES['arquivo']['tmp_name'], $file);
             //                var_dump(file_exists($file));
             // Ajustar tamanho
             PLib::smart_resize_image($file, null, 1280, 0, true, 'file', $file, false);
             // Atualizar evento
             update_post_meta($evento->id, 'certificado_arquivo', $file);
             update_post_meta($evento->id, 'certificado_incluir_evento', $_POST['evento'] == 1);
             update_post_meta($evento->id, 'certificado_incluir_nome', $_POST['nome'] == 1);
             $evento->certificado_arquivo = $file;
             $evento->certificado_incluir_evento = $_POST['evento'] == 1;
             $evento->certificado_incluir_nome = $_POST['nome'] == 1;
         }
         // Demais configurações
         $altura_nome = $_POST['altura_nome'];
         if ($altura_nome) {
             update_post_meta($evento->id, 'certificado_altura_nome', $altura_nome);
             $evento->certificado_altura_nome = $altura_nome;
         }
         require_once PLUGINPATH . '/view/eventos/view_certificado.php';
     } else {
         //            echo "<pre>";
         //            var_dump($evento);
         //            echo "</pre>";
         if ($evento->hasCertificadoArquivo()) {
             require_once PLUGINPATH . '/view/eventos/view_certificado.php';
         }
         require_once PLUGINPATH . '/view/eventos/form_certificado.php';
     }
 }
                            <h3 class="hndle"><span><?php 
echo $titulo;
?>
</span></h3>
                            <input type="hidden" name="id" value="<?php 
echo $evento->id;
?>
">
                            <div class="inside">
                                <?php 
$assunto = stripslashes(PLib::coalesce($_POST['assunto'], $evento->post_title));
if ($subAction == 'confirmados') {
    $mensagem = PLib::coalesce($_POST['mensagem'], $evento->organizador()->email_confirmacao);
} else {
    if ($subAction == 'naoConfirmados') {
        $mensagem = PLib::coalesce($_POST['mensagem'], $evento->organizador()->email_semvagas);
    }
}
$mensagem = stripslashes(str_replace("<br />", "", $mensagem));
echo label('assunto', 'Assunto', input_texto_simples('assunto', 'Assunto', 80, $assunto));
echo label('mensagem', 'Mensagem', input_textarea_simples('mensagem', 20, $mensagem), "Variáveis disponíveis para utilização:<br>" . getVariaveis($event) . '<br><br>Ao final do email irá uma linha simples de assinatura contendo: ' . $evento->organizador()->titulo);
?>
                            </div>

                            <div id="major-publishing-actions">
                                <div id="publishing-action">
                                    <input type="hidden" name="preview" id="preview" value="">
                                    <input type="button" class="button button-primary button-large" value="Pré-visualizar" onclick="javascript:document.getElementById('preview').value='1';document.getElementById('form_email').submit();">
                                    <input type="submit" class="button button-primary button-large" value="Enviar"  onclick="javascript:document.getElementById('preview').value='';document.getElementById('form_email').submit();"></div>
                                <div class="clear"></div>
                            </div>
 private static function importarCsv($evento)
 {
     if (count($_POST) > 0) {
         $confirmar = $_POST['confirmar'] == 1;
         $presente = $_POST['presente'] == 1;
         $novasPessoas = 0;
         $inscricoes = 0;
         // Subir arquivo
         if ($_FILES['arquivo']) {
             $file = $_FILES['arquivo']['tmp_name'];
             $row = 1;
             $handle = fopen($file, "r");
             while (($data = fgetcsv($handle, 1000, ",")) !== FALSE) {
                 //                    echo "<hr>";
                 //                    var_dump($data);
                 //                    echo "<hr>";
                 $dados = explode(";", $data[0]);
                 //                    var_dump($dados);
                 //                    echo "<hr>";
                 if ($dados) {
                     $nome = trim(ucfirst(utf8_encode($dados[0])));
                     $email = trim(strtolower($dados[1]));
                     $cpf = trim($dados[2]);
                     $celular = trim($dados[3]);
                     //                        echo "$nome $email $cpf $celular<br>";
                     if ($nome != null && (filter_var($email, FILTER_VALIDATE_EMAIL) != false || PLib::validade_cpf($cpf))) {
                         if ($email) {
                             $valor = $email;
                         } else {
                             $valor = $cpf;
                         }
                         // Certificar pessoa
                         $pessoa = Pessoas::getInstance()->getByMd5($valor);
                         if ($pessoa == null) {
                             $pessoa = new Pessoa();
                             $pessoa->nome = $nome;
                             $pessoa->email = $email;
                             $pessoa->cpf = $cpf;
                             $pessoa->celular = $celular;
                             $pessoa = Pessoas::getInstance()->insert($pessoa);
                             $novasPessoas++;
                         }
                         $inscricoes++;
                         //                            var_dump($pessoa);echo "<hr>";
                         // Certificar inscrição
                         $inscricao = Inscricoes::getInstance()->getByEventoPessoa($evento->id, $pessoa->id);
                         if ($inscricao == null) {
                             $inscricao = Inscricoes::getInstance()->certificarInscricao($evento, $pessoa);
                         }
                         //                            var_dump($inscricao);
                         if ($confirmar) {
                             $inscricao->confirmar();
                         }
                         if ($presente) {
                             $inscricao->presenca();
                         }
                     } else {
                         echo "<hr>Sem dados suficientes em um registro para importação:";
                         echo "<pre>";
                         var_dump($dados);
                         echo "</pre>";
                         echo "<b>Inscrição não importada.</b><br>";
                     }
                 }
             }
             fclose($handle);
         }
         // Abrir
         // Percorrer contatos
         //            var_dump($_POST);
         //            var_dump($_FILES);
         //confirmar presente
         //            setFlash("Inscrições importadas: ".$inscricoes.  "<br>Novas pessoas importadas: ".$novasPessoas);
         echo "<br><h2>Resultado da Importação</h2></h2><hr>Inscrições importadas: " . $inscricoes . "<br>Novas pessoas importadas: " . $novasPessoas;
         //            self::showList($evento);
     }
     //        } else {
     require_once PLUGINPATH . '/view/inscricoes/importar_csv.php';
     //        }
 }
 public static function processarTransacoes($integracao, PagSeguroTransactionSearchResult $transacoes)
 {
     //PLib::var_dump(count($transacoes->getTransactions()));
     if (count($transacoes->getTransactions()) > 0) {
         $results = Inscricoes::getInstance()->processarTransacoes($integracao->servico, $transacoes->getTransactions());
         if (count($results['inscricoes']) > 0) {
             echo "<h2>Inscrições</h2>";
             echo "<table>\n                        <thead>\n                            <th>Codigo<br>Gateway</th>\n                            <th>Ticket</th>\n                            <th>Evento</th>\n                            <th>Pessoa</th>\n                            <th>Forma<br>Pagamento</th>\n                            <th>Status<br>Transação</th>\n                            <th>Ultima<br>Atualização</th>\n                            <th>Pagamento</th>\n                            <th>Valor<br>Pago</th>\n                            <th>Sincronização<br>atual</th>\n                        </thead>";
             /** @var $inscricao Inscricao */
             foreach ($results['inscricoes'] as $inscricao) {
                 echo "<tr>\n                            <td>" . $inscricao->codigo_gateway . "</td>\n                            <td>" . $inscricao->id . "</td>\n                            <td><a href='admin.php?page=Eventos&action=view&id='" . $inscricao->id_evento . "'>" . $inscricao->evento()->titulo . "</a></td>\n                            <td><a href='admin.php?page=Pessoas&action=view&id='" . $inscricao->id_pessoa . "'>" . $inscricao->pessoa()->primeiro_nome() . "</a></td>\n                            <td>" . PagSeguroUtil::getFormaPagamentoTituloString($inscricao->forma_pagamento_gateway) . "</td>\n                            <td>" . $inscricao->_status_gateway . "</td>\n                            <td>" . PLib::date_relative($inscricao->data_atualizacao_gateway, true) . "</td>\n                            <td>" . PLib::date_relative($inscricao->data_pagamento, true) . "</td>\n                            <td>" . ($inscricao->valor_pago > 0 ? PLib::format_cash($inscricao->valor_pago) : '') . "</td>\n                            <td>" . $inscricao->_observacao . "</td>\n                          </tr>";
                 //                            var_dump($inscricao);
             }
             echo "</table>";
         }
         if (count($results['falhas']) > 0) {
             echo "<h2>Falhas</h2>";
             foreach ($results['falhas'] as $falha) {
                 echo $falha . '<br>';
             }
         }
     } else {
         echo "Sem transações no período<br>";
     }
 }
    ?>
            </h4>
            <p><?php 
    if (get_the_excerpt() != null) {
        the_excerpt();
    } else {
        echo $evento->descricao_2;
    }
    ?>
</p>
        <?php 
} else {
    ?>
            <h4>
                <?php 
    echo "Evento realizado " . PLib::date_relative($evento->data, false, false);
    if ($evento->local()) {
        echo " no " . $evento->local()->titulo;
    }
    ?>
            </h4>

            <p>
                <?php 
    $release = strip_tags($evento->release);
    $limit = 230;
    if (strlen($release) > $limit) {
        $release = substr($release, 0, strrpos(substr($release, 0, $limit), ' ')) . '...';
        $release .= " <a href='" . get_permalink($evento->id) . "'>continuar lendo</a>";
    }
    echo $release;
function add_menus()
{
    // Se for author, deixo apenas confirmar inscrições
    if (get_user_role() == 'author') {
        add_menu_page('Inscrições', 'Inscrições', 'read', 'Inscricoes', array('ControllerEventos', 'inscricoes'), 'dashicons-index-card', 6);
    } else {
        add_menu_page('Eventos', 'Eventos', 'edit_pages', 'Eventos', array('ControllerEventos', 'dispatcher'), 'dashicons-calendar-alt', 5);
        // Incluir já eventos no menu
        $eventos = Eventos::getInstance()->getAtuaisERecentes();
        if ($eventos) {
            foreach ($eventos as $evento) {
                add_submenu_page('Eventos', PLib::date_relative($evento->data) . ' - ' . $evento->titulo, PLib::date_relative($evento->data) . ' - ' . $evento->titulo, 'edit_pages', 'Eventos&action=view&id=' . $evento->id, 'AdminPresenca');
            }
        }
        add_menu_page('Inscrições', 'Inscrições', 'read', 'Inscricoes', array('ControllerEventos', 'inscricoes'), 'dashicons-index-card', 6);
        add_menu_page('Pessoas', 'Pessoas', 'edit_pages', 'Pessoas', array('ControllerPessoas', 'dispatcher'), 'dashicons-groups', 7);
        if (TGO_EVENTO_GAMIFICATION === true) {
            add_menu_page('Gamification', 'Gamification', 'edit_pages', 'Gamification', array('ControllerGamification', 'dispatcher'), 'dashicons-smiley', 8);
            add_submenu_page('Gamification', 'Importar Eventos', 'Importar Eventos', 'edit_pages', 'GamificationGDGJF', array('ControllerGamification', 'import'));
            add_submenu_page('Gamification', 'Badges', 'Badges', 'edit_pages', 'badges', array('ControllerGamification', 'dispatcher'));
            add_submenu_page('Gamification', 'Eventos', 'Eventos', 'edit_pages', 'eventos', array('ControllerGamification', 'dispatcher'));
        }
        add_menu_page('Apoio', 'Apoio', 'edit_pages', 'AdminApoio', 'AdminApoio', 'dashicons-nametag', 9);
        add_submenu_page('AdminApoio', 'Tickets de Desconto', 'Tickets de Desconto', 'edit_pages', 'TicketsDesconto', array('ControllerDescontos', 'dispatcher'));
        add_submenu_page('AdminApoio', 'Locais', 'Locais', 'edit_pages', 'Locais', array('ControllerLocais', 'dispatcher'));
        add_submenu_page('AdminApoio', 'Organizadores', 'Organizadores', 'manage_options', 'Organizadores', array('ControllerOrganizadores', 'dispatcher'));
        add_submenu_page('AdminApoio', 'Templates', 'Templates', 'manage_options', 'edit.php?post_type=tgo_template');
        add_submenu_page('AdminApoio', 'Mensagens', 'Mensagens', 'manage_options', 'Mensagens', array('ControllerMensagens', 'dispatcher'));
        add_submenu_page('AdminApoio', 'Integrações', 'Integrações', 'manage_options', 'Integracoes', array('ControllerIntegracoes', 'dispatcher'));
        //    add_submenu_page('AdminApoio', 'Migrar Dados', 'Migrar Dados', 'manage_options', 'MenuConfig', array('AdminConfig', 'adminConfigHome'));
        add_submenu_page('AdminApoio', 'Sincronizar Gateways', 'Sincronizar Gateways', 'manage_options', 'Sincronizar', array('ControllerInscricoes', 'sincronizarGateways'));
    }
    // Actions sem menu
    add_submenu_page(null, 'Categorias', 'Categorias', 'read', 'Categorias', array('ControllerCategorias', 'dispatcher'));
    add_submenu_page(null, 'Inscrições', 'Inscrições', 'read', 'Inscricoes', array('ControllerInscricoes', 'dispatcher'));
    add_submenu_page(null, 'Comunicação', 'Comunicação', 'read', 'Comunicacao', array('ControllerComunicacao', 'dispatcher'));
    add_submenu_page(null, 'Preços', 'Preços', 'read', 'Precos', array('ControllerPrecos', 'dispatcher'));
    add_submenu_page(null, 'Descontos', 'Descontos', 'read', 'Descontos', array('ControllerDescontos', 'dispatcher'));
    add_submenu_page(null, 'Pessoas', 'Pessoas', 'read', 'Pessoas', array('ControllerPessoas', 'dispatcher'));
}
 public function validarEtapaDadosPessoais()
 {
     // Validar dados
     $nome = sanitize_text_field(trim($_POST['nome']));
     $celular = ltrim(PLib::only_numbers(sanitize_text_field(trim($_POST['celular'])), '0'));
     $email = sanitize_text_field(trim($_POST['email']));
     //        PLib::var_dump($_POST);
     // Quais outros dados são obrigatórios??
     if (!$nome) {
         $this->erro = "Informe seu nome.";
     }
     if (strpos($nome, " ") === false) {
         $this->erro = "Informe ao menos nome e sobrenome.";
     }
     if (!$celular) {
         $this->erro = "Informe seu telefone celular.";
     }
     if (!filter_var($email, FILTER_VALIDATE_EMAIL)) {
         $this->erro = "Informe um endereço de email válido.";
     }
     // Validar telefone celular e formatar
     if ($this->erro == null) {
         $len = strlen($celular);
         if ($len < 10 || $len > 12) {
             $this->erro = "Informe o celular com o prefixo.";
         } else {
             if ($len == 10) {
                 $_POST['celular'] = PLib::str_mask($celular, "(##)####-####");
             } else {
                 $_POST['celular'] = PLib::str_mask($celular, "(##)#####-####");
             }
         }
     }
     if ($this->erro == null) {
         // Temos todos os dados da pessoa
         $this->valorChave = $_SESSION['inscricao_chave'];
         $extras = array();
         $this->pessoa = new Pessoa();
         // Já tinhamos a pessoa? Obter os extras para merge com extras novos
         if ($_SESSION['id_pessoa'] != null) {
             $this->pessoa = Pessoas::getInstance()->getById($_SESSION['id_pessoa']);
             $pessoaExtras = $this->pessoa->getExtras();
         }
         $this->pessoa = Pessoas::getInstance()->populate($_POST, $this->pessoa);
         //            if ($debug)
         //                PLib::var_dump($this->pessoa,"Pessoa 1");
         // Existem campos extras?
         if ($this->evento->campos_extras != null) {
             foreach ($this->evento->getCamposExtras() as $extraIndice => $extraTitulo) {
                 if (isset($_POST[$extraIndice]) || isset($_FILES[$extraIndice])) {
                     // Zerar valor
                     $extraValor = null;
                     $extraTituloClean = $extraTitulo;
                     // Clean no titulo
                     if (strpos($extraTitulo, '[') !== false && strpos($extraTitulo, ']') !== false) {
                         $opcoes = substr($extraTitulo, strpos($extraTitulo, '['));
                         $extraTituloClean = str_replace($opcoes, "", $extraTitulo);
                     }
                     if (strpos($extraTitulo, '( )') !== false) {
                         $opcoes = substr($extraTitulo, strpos($extraTitulo, '('));
                         $extraTituloClean = trim(str_replace($opcoes, "", $extraTitulo));
                     }
                     if (isset($_POST[$extraIndice])) {
                         $extraValor = sanitize_text_field($_POST[$extraIndice]);
                     }
                     $extras[$extraIndice] = array();
                     $extras[$extraIndice]['titulo'] = $extraTituloClean;
                     $extras[$extraIndice]['valor'] = $extraValor;
                     //var_dump($extras[$extraIndice]);
                     // File upload
                     if (strpos($extraTitulo, '[file]') !== false && isset($_FILES[$extraIndice])) {
                         $tmpFile = $_FILES[$extraIndice]["tmp_name"];
                         $tmpName = $_FILES[$extraIndice]["name"];
                         //                            var_dump($tmpFile);
                         //                            var_dump($_FILES[$extraIndice]['error']);
                         $target_dir = WP_CONTENT_DIR . "/uploads/eventos/";
                         $target_file = $target_dir . basename($tmpName);
                         //                            var_dump($target_file);
                         $uploadOk = 1;
                         $imageFileType = pathinfo($target_file, PATHINFO_EXTENSION);
                         if (file_exists($target_file)) {
                             unlink($target_file);
                         }
                         // Allow certain file formats
                         if ($imageFileType != "jpg" && $imageFileType != "png" && $imageFileType != "jpeg" && $imageFileType != "gif" && $imageFileType != "pdf" && $imageFileType != "doc" && $imageFileType != "bmp") {
                             $erro = "Apenas arquivos JPG, JPEG, PNG, GIF, BMP, PDF e DOC são aceitos no campo \"{$extraTituloClean}\".";
                             $uploadOk = 0;
                         }
                         if ($uploadOk == 1) {
                             //                                error_reporting(E_ALL);
                             //                                echo "<br><br>mover $tmpFile para $target_file<br>";
                             if (!move_uploaded_file($tmpFile, $target_file)) {
                                 $erro = "Não foi possível fazer upload dos arquivos.";
                                 //                                    print_r(error_get_last());
                                 //                                    die("Sorry, there was an error uploading your file.");
                             }
                             $extras[$extraIndice]['arquivo'] = basename($tmpName);
                         }
                     }
                 }
             }
             if (count($extras) > 0) {
                 $this->pessoa->setExtras($extras);
             }
         }
         //            if ($debug)
         //                PLib::var_dump($this->pessoa,"Pessoa 2");
         if ($this->erro == null) {
             // Salvar pessoa, certificar que esteja registrada
             $this->certificarPessoa();
             //                die("aaa");
             // Verificar se pessoa já está inscrita e confirmada
             $inscricao = Inscricoes::getInstance()->getByEventoPessoaConfirmado($this->evento->id, $this->pessoa->id);
             //                var_dump($inscricao);die();
             if ($inscricao != null) {
                 $this->erro = "Você já está inscrito e confirmado para este evento!";
             }
         }
         //            var_dump($this->erro);
         //            die("aass");
         if ($this->erro == null) {
             $this->avancar = true;
             if ($this->evento->pago == "pago") {
                 // Obter Preço atual
                 $preco = Precos::getInstance()->getByEventoAtual($this->evento->id);
                 if ($preco != null) {
                     $id_preco = $preco->id;
                 }
             }
             // Já salvar registro de inscrição
             $this->inscricao = Inscricoes::getInstance()->certificarInscricao($this->evento, $this->pessoa, $this->evento->confirmacao == "preinscricao", $id_preco, null, $_POST['c_utmz']);
             $_SESSION['id_inscricao'] = $this->inscricao->id;
             // Existe arquivos?
             if (count($extras) > 0) {
                 $extrasModificados = false;
                 foreach ($extras as $extraIndice => $extra) {
                     if ($extra['arquivo']) {
                         //                            var_dump($extra['arquivo']);
                         $target_dir = WP_CONTENT_DIR . "/uploads/eventos/";
                         $target_file = $target_dir . $extra['arquivo'];
                         //                            var_dump($target_file);
                         $imageFileType = pathinfo($target_file, PATHINFO_EXTENSION);
                         // Rename file
                         $target_file_new = $target_dir . 'inscricao_' . $this->inscricao->id . '_' . $extraIndice . '.' . $imageFileType;
                         rename($target_file, $target_file_new);
                         //                            var_dump($target_file_new);
                         $extras[$extraIndice]['arquivo'] = basename($target_file_new);
                         $extrasModificados = true;
                     }
                 }
                 if ($extrasModificados) {
                     $this->pessoa->extras = json_encode($extras);
                     $this->pessoa = Pessoas::getInstance()->save($this->pessoa->id, $this->pessoa);
                 }
             }
             //
         }
     }
     //            PLib::var_dump($this->pessoa,"Pessoa final");
     //        PLib::var_dump($this->erro,"Erro");
 }
 /**
  * Retorna as ações para a inscrição
  * @param $ajax
  * @return null|string
  */
 public function getSituacaoAcoes($ajax)
 {
     $return = null;
     $actions = null;
     $evento = $this->evento();
     if ($ajax) {
         if (!$evento->realizado() && PLib::coalesce($this->confirmado, 0) == 0) {
             if (PLib::coalesce($this->valor_inscricao, 0) > 0) {
                 $actions = "\n                    <a href='#' onclick='javascript:confirmarInscricao(" . $this->id . ", \"" . $this->valor_inscricao . "\",\"Dinheiro\");return false;'>Confirmar (dinheiro)</a><br>\n                    <a href='#' onclick='javascript:confirmarInscricao(" . $this->id . ", \"" . $this->valor_inscricao . "\",\"Depósito\");return false;'>Confirmar (depósito)</a><br>";
             } else {
                 $actions = "\n                    <a href='#' onclick='javascript:confirmarInscricao(" . $this->id . ");return false;'>Confirmar Inscrição</a><br>";
             }
         }
         if (!$evento->realizado() || $evento->acontecendo()) {
             $actions .= "<a href='#' onclick='javascript:cancelarInscricao(" . $this->id . ");return false;'>Cancelar</a>";
         }
         if (!$evento->realizado() && $this->confirmado == 1 && $this->evento()->pago == 'pago' && PLib::coalesce($this->valor_pago, 0) == 0) {
             $actions .= "<a href='#' onclick='javascript:informarValorPagoInscricao(" . $this->id . ",'" . $this->valor_inscricao . "','Dinheiro');return false;'>Informar Valor Pago</a>";
         }
         if (($evento->acontecendo() || $evento->realizado()) && $this->presente == null) {
             $actions .= "<a href='#' onclick='javascript:marcarPresenca(" . $this->id . ");return false;'>Marca Presença</a>";
         }
         if ($evento->realizado() && $this->presente == 1 && $evento->hasCertificadoArquivo()) {
             $actions .= "<a href='" . $this->getLinkCertificado() . "' target=_blank>Certificado</a>";
         }
     } else {
         if (!$evento->realizado() && PLib::coalesce($this->confirmado, 0) == 0) {
             $actions = "<a href='?confirmarInscricao={$this->id}'>Confirmar</a>";
         }
     }
     $return = "<div class='row-actions'>\n                <span class='view'>" . $actions . "</span>\n            </div>";
     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 showUserLog()
 {
     $logs = self::$gamification->getUserLog();
     if ($logs) {
         echo "<h4>Log</h4>";
         echo "<table><Tr><th>Data</th><th>Alias</th><th>Evento</th><th>Pontuou</th><th>Badge</th><th>Novo Nível</th></Tr>";
         foreach ($logs as $log) {
             $event = self::$gamification->getEventById($log->getIdEvent());
             if ($log->getIdBadge()) {
                 $badge = self::$gamification->getBadge($log->getIdBadge())->getTitle();
             } else {
                 $badge = null;
             }
             echo "<tr><td>" . PLib::date_relative($log->getEventDate()) . "</td><td>" . $event->getAlias() . " </td><td>" . $event->getDescription() . "</td><td>" . $log->getPoints() . "</td><td> " . $badge . "</td><td>" . $log->getIdLevel() . "</td></tr>";
         }
         echo "</table>";
     }
 }