Jump to content
Gniusplay

Enviar formulario só se tiver X pontos no Banco de Dados

Recommended Posts

Olá pessoal, eu tenho um sistema de comentários que quando um "player" preenche esse comentário, ele vai direto para pagina inicial, funciona como um feedback, só que ele pode usar isso várias e várias vezes, eu queria que ele usasse apenas uma vez e não pudesse mais utilizar, sendo assim só seria possível usar uma vez.
Ou q só poderia usar se tivesse x quantidades de pontos no banco de dados(eu tenho uma coluna com pontos) e a cada vez que ele usasse esse formulário(comentário), ele perderia 1 ponto,e  quando não tivesse mais pontos, ele não poderia comentar.

Alguém tem alguma ideia de como posso fazer isso? e qual funções utilizar?

VALEUU!!!

Share this post


Link to post
Share on other sites

Olá! 

 

Baseando-se nesta parte da sua questão:

 

Quote

...só poderia usar se tivesse x quantidades de pontos no banco de dados(eu tenho uma coluna com pontos) e a cada vez que ele usasse esse formulário(comentário), ele perderia 1 ponto,e  quando não tivesse mais pontos, ele não poderia comentar.

 

Você pode usar PHP e MySql como solução montando um script para debitar o ponto a cada vez que usuário realizar um submit no formulário. No caso, partindo que você já tem um sistema de login de usuário, você pode criar um script php que ao ser chamado atualiza a coluna "pontos" no MySql.

 

Abaixo segue um script básico com função de atualizar a coluna pontos quando o botão submit do formulário "comentários" for clicado. Repare que no início do mesmo contém um "session_start()" que tem como função armazenar o id do usuário durante o seu login. Esse número ID é usado para selecionar dados relativos a ele :

<?php
// Initialize the session
session_start();

if(isset($_POST['submit'])){

include 'pdo_connection.php';
        
$sth = $db->prepare("SELECT pontos FROM users WHERE id = ".$_SESSION["id"]."");
$sth->execute();
$result = $sth->fetchColumn();

$pontos = $result - 1;

$st = $db->prepare("UPDATE users SET pontos = $pontos WHERE id = ".$_SESSION["id"]."");
$st->execute();

$db = null;

}
?>

E abaixo, o script que inseri o comentário, por exemplo. Nesse script php, o comentário é inserido na coluna "comentario" do MySql onde ao mesmo tempo ele chama o script php (update-pontos.php) acima onde atualiza a pontuação depois do comentário ter sido inserido:

<?php
// Initialize the session
session_start();

$link = mysqli_connect("localhost", "root", "", "system");

// Check connection
if($link === false){
    die("ERROR: Could not connect. " . mysqli_connect_error());
}
 
// Escape user inputs for security
$comentario = mysqli_real_escape_string($link, $_REQUEST['comentario']);

// Attempt insert query execution

$sql = "INSERT INTO comentarios (comentario, usuarioFK) VALUES ('$comentario',".$_SESSION["id"].")";

if(mysqli_query($link, $sql)){
    
    include_once 'update-pontos.php';
    
header("location: comentario-inserido-com-sucesso.php");

} else{
    
    echo "ERROR: Could not able to execute $sql. " . mysqli_error($link);
}

?>

Criei um sistema bem básico como forma de demonstração. Dê uma olhada e se possível baixe os arquivos para testar. No caso do banco de dados criei uma tabela para armazenar os comentários e uma tabela para armazenar usuários e seus pontos.

 

Link para o sistema básico de testes

Share this post


Link to post
Share on other sites
2 horas atrás, michelmir disse:

Olá! 

 

Baseando-se nesta parte da sua questão:

 

 

Você pode usar PHP e MySql como solução montando um script para debitar o ponto a cada vez que usuário realizar um submit no formulário. No caso, partindo que você já tem um sistema de login de usuário, você pode criar um script php que ao ser chamado atualiza a coluna "pontos" no MySql.

 

Abaixo segue um script básico com função de atualizar a coluna pontos quando o botão submit do formulário "comentários" for clicado. Repare que no início do mesmo contém um "session_start()" que tem como função armazenar o id do usuário durante o seu login. Esse número ID é usado para selecionar dados relativos a ele :


<?php
// Initialize the session
session_start();

if(isset($_POST['submit'])){

include 'pdo_connection.php';
        
$sth = $db->prepare("SELECT pontos FROM users WHERE id = ".$_SESSION["id"]."");
$sth->execute();
$result = $sth->fetchColumn();

$pontos = $result - 1;

$st = $db->prepare("UPDATE users SET pontos = $pontos WHERE id = ".$_SESSION["id"]."");
$st->execute();

$db = null;

}
?>

E abaixo, o script que inseri o comentário, por exemplo. Nesse script php, o comentário é inserido na coluna "comentario" do MySql onde ao mesmo tempo ele chama o script php (update-pontos.php) acima onde atualiza a pontuação depois do comentário ter sido inserido:


<?php
// Initialize the session
session_start();

$link = mysqli_connect("localhost", "root", "", "system");

// Check connection
if($link === false){
    die("ERROR: Could not connect. " . mysqli_connect_error());
}
 
// Escape user inputs for security
$comentario = mysqli_real_escape_string($link, $_REQUEST['comentario']);

// Attempt insert query execution

$sql = "INSERT INTO comentarios (comentario, usuarioFK) VALUES ('$comentario',".$_SESSION["id"].")";

if(mysqli_query($link, $sql)){
    
    include_once 'update-pontos.php';
    
header("location: comentario-inserido-com-sucesso.php");

} else{
    
    echo "ERROR: Could not able to execute $sql. " . mysqli_error($link);
}

?>

Criei um sistema bem básico como forma de demonstração. Dê uma olhada e se possível baixe os arquivos para testar. No caso do banco de dados criei uma tabela para armazenar os comentários e uma tabela para armazenar usuários e seus pontos.

 

Link para o sistema básico de testes

Então, eu já tenho tudo feito, só quero implementar essa função para remover x pontos e também só dar submit se tiver esses pontos!
No caso a parte onde a pessoa envia o formulário"comentário" é essa abaixo:

Citar

<?php

global $config;

require("config.php");

$ots = POT::getInstance();

$ots->connect(POT::DB_MYSQL, connection());

$SQL = $ots->getDBHandle();

$ide = new IDE;

$ide->requireLogin();

if($ide->isLogged()){

$accountName = $_SESSION['nickname'];

//$SQL->query('SELECT * FROM accounts WHERE name="'.$accountName.'"')->fetch();
}
?>


<br>


<br>        <form method="POST" action="/comentarios.php">
                <div class="wrap-login100">
                                </span>
                        <span class="login100-form-title p-b-34 p-t-27">
                        COMENTÁRIO/FEEDBACK
                    </span>
                <center><h4><b>Deixe seu comentário contando sua experiência com o jogo</b></h4></center><br>
                <div class="wrap-input100 validate-input" data-validate = "Enter username">
<input type="text" value="<? echo $accountName; ?>" class="input100" name="nome" placeholder="Nome" required />
                        <span class="focus-input100" data-placeholder="&#xf207;"></span>
                    </div>
                    


                                <div class="wrap-input100 validate-input" data-validate = "Enter username">    <h1><font color="white">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;Comente sua experiência com o jogo no campo abaixo:</h1>
            <textarea type="mensagem" class="input100" name="mensagem" maxlength="110" placeholder="Digite aqui sua observação" required /> </textarea>
                        <span class="focus-input100" data-placeholder="&#xf222;"></span>
</div>
                            
<div class="wrap-input100 validate-input" data-validate = "Enter username">
<span class="focus-input100" data-placeholder="&#xf32f;"></span>
<h2><font color="white">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
<select name="sendo" class="buttonseelct" required />
<?php

date_default_timezone_set("America/Sao_paulo");
$ano = date ('Y');
$mes = date ('m');
$dia =date ('d');


  print '<option value="'.date('Y-m-d').'">'.$dia.'/'.$mes.'/'.$ano.' </option>';
?>
</div>
</font></select>
</h2></div>
<div class="container-login100-form-btn">
                        <button type="submit" class="login100-form-btn">
                        Enviar
                        </button>
                    </div>
                    <br>
                            <div class="container-login100-form-btn">
                        <button type="reset" class="login100-form-btn">
                        Limpar Campos
                        </button>
                </div>
            

</form>
 

Agora abaixo é pra poder acessar a informação do banco de dados:

Citar

<?php
$servidor = "localhost";
$usuario = "root";
$senha = "";
$dbname = "comentario";

//Criar a conexao
$conn = mysqli_connect($servidor, $usuario, $senha, $dbname);

E abaixo é quando o formulário é enviado

Citar

<?php
session_start();
include_once("comentario.php");

$nome = filter_input(INPUT_POST, 'nome', FILTER_SANITIZE_STRING);
$mensagem = filter_input(INPUT_POST, 'mensagem', FILTER_SANITIZE_STRING);
$sendo = filter_input(INPUT_POST, 'sendo', FILTER_SANITIZE_STRING);


//echo "Nome: $nome <br>";
//echo "E-mail: $email <br>";

$result_usuario = "INSERT INTO comentario (nome, mensagem, sendo, created) VALUES ('$nome', '$mensagem', '$sendo', NOW())";
$resultado_usuario = mysqli_query($conn, $result_usuario);

if(mysqli_insert_id($conn)){
    $_SESSION['msg'] = "<p style='color:green;'>Comentário enviado com sucesso, obrigado por enviar o seu feedback.</p>";
    header("Location:/index.php/p/v/sucesso2");
}else{
    $_SESSION['msg'] = "<p style='color:red;'>Comentário não enviado, tente novamente</p>";
    header("Location:/index.php/p/v/fail2");
}
 

 

Share this post


Link to post
Share on other sites

 

14 hours ago, Gniusplay said:

Então, eu já tenho tudo feito, só quero implementar essa função para remover x pontos e também só dar submit se tiver esses pontos!
No caso a parte onde a pessoa envia o formulário"comentário" é essa abaixo:

Agora abaixo é pra poder acessar a informação do banco de dados:

E abaixo é quando o formulário é enviado

 

 

O script comentario.php contém uma tabela chamada comentário com colunas nome, mensagem, sendo e created. No caso, qual tabela esta a coluna pontos? Se puder, me diga o nome da tabela onde esta a coluna pontos e suas respectivas colunas pra eu poder adaptar o script que atualizará os pontos pra você. 

Share this post


Link to post
Share on other sites
5 horas atrás, michelmir disse:

 

 

O script comentario.php contém uma tabela chamada comentário com colunas nome, mensagem, sendo e created. No caso, qual tabela esta a coluna pontos? Se puder, me diga o nome da tabela onde esta a coluna pontos e suas respectivas colunas pra eu poder adaptar o script que atualizará os pontos pra você. 

A tabela pontos está em outro banco de dados(no banco de dados da conta de cada pessoa que criou a conta)

Fica no banco de dados awvenda2>accounts>premium_points

a imagem abaixo mostra onde tá:

d08670f3-4501-4826-9aac-3d9735915f5e.thumb.jpg.189296de615f0634d6fc83e52c7a9a44.jpg

Share this post


Link to post
Share on other sites

Então, basicamente você deverá criar um script php que tenha a função de atualizar os pontos do usuário quando o mesmo clicar no botão 'enviar comentário'. Pelo que entendi, você mencionou que existem outros bancos de dados que estão conectados entre-si neste projeto, correto? ou seria apenas um banco de dados com todas as tabelas nele? 

 

De qualquer forma, ambas as situações você deverá se atentar na forma como o script se conecta a esses banco de dados configurando o script de conexão conforme as suas configurações bem como a query SELECT e UPDATE. 

 

Abaixo, segue um script que atualiza a pontuação 'premium_points' da tabela 'accounts':

 

Nome: update-pontos.php

<?php
// Initialize the session
session_start();

$db = new PDO('mysql:host=localhost;dbname=', 'user', 'pass');
        
$sth = $db->prepare("SELECT premium_points FROM accounts WHERE userFK = ".$_SESSION["nickname"]."");
$sth->execute();
$result = $sth->fetchColumn();

$pontos = $result - 1;

$st = $db->prepare("UPDATE accounts SET premium_points = $pontos WHERE userFK = ".$_SESSION["nickname"]."");
$st->execute();

$db = null;

?>

Repare que na query 'WHERE userFK' você deve sustituir o 'userFK' pelo nome da coluna que armazena o id do usuário correspondente dentro dessa tabela 'accounts', ou seja, seria uma foreing key (FK) dentro da tabela 'accounts', pois na imagem que você postou não dá pra ver como se chama a coluna do ID do usuário nesta tabela.

 

Outro ponto é o $_SESSION. No caso reparei que existe um '$_SESSION['nickname']'. O $_SESSION deve estar relacionado com o ID do usuário que esta logado pois dessa forma a query SELECT retornará corretamente os resultados relacionados ao usuário logado.

 

Após ter criado o script 'update-pontos.php', abra o script que envia os dados do formulário para a tabela 'comentários' e inclua um 'include' na seguinte parte:

if(mysqli_insert_id($conn)){

	include_once 'update-pontos.php';

	$_SESSION['msg'] = "<p style='color:green;'>Comentário enviado com sucesso, obrigado por enviar o seu feedback.</p>";
	header("Location:/index.php/p/v/sucesso2");

}

Dessa forma, caso a mensagem seja enviada corretamente, este script também chama e executa o script 'update-pontos.php' que atualiza a coluna 'premium_points' atualizando os dados relativos a mesma.

 

Dê uma olhada neste exemplo que criei. Quando você inserir um comentário no campo e clicar no botão enviar comentário, a mensagem é inserida na tabela 'comentários' e ao mesmo tempo, com o sucesso da mensagem enviada, o campo 'premium_points' é atualizado em uma outra tabela chamada 'accounts'.

 

Por fim, basicamente a lógica é mais ou menos essa. Uns também criam funções para executar este tipo de tarefa outros preferem utilizar métodos simples desde que o script seja criado evitando sql injection

 

Tente adaptar ao seu projeto, lembrando de configurar a conexão conforme os dados do seu banco de dados, usuário e senha do mesmo.

 

Caso alguém deseje acrescentar alguma melhoria, fique a vontade.

Share this post


Link to post
Share on other sites
9 horas atrás, michelmir disse:

Então, basicamente você deverá criar um script php que tenha a função de atualizar os pontos do usuário quando o mesmo clicar no botão 'enviar comentário'. Pelo que entendi, você mencionou que existem outros bancos de dados que estão conectados entre-si neste projeto, correto? ou seria apenas um banco de dados com todas as tabelas nele? 

 

De qualquer forma, ambas as situações você deverá se atentar na forma como o script se conecta a esses banco de dados configurando o script de conexão conforme as suas configurações bem como a query SELECT e UPDATE. 

 

Abaixo, segue um script que atualiza a pontuação 'premium_points' da tabela 'accounts':

 

Nome: update-pontos.php


<?php
// Initialize the session
session_start();

$db = new PDO('mysql:host=localhost;dbname=', 'user', 'pass');
        
$sth = $db->prepare("SELECT premium_points FROM accounts WHERE userFK = ".$_SESSION["nickname"]."");
$sth->execute();
$result = $sth->fetchColumn();

$pontos = $result - 1;

$st = $db->prepare("UPDATE accounts SET premium_points = $pontos WHERE userFK = ".$_SESSION["nickname"]."");
$st->execute();

$db = null;

?>

Repare que na query 'WHERE userFK' você deve sustituir o 'userFK' pelo nome da coluna que armazena o id do usuário correspondente dentro dessa tabela 'accounts', ou seja, seria uma foreing key (FK) dentro da tabela 'accounts', pois na imagem que você postou não dá pra ver como se chama a coluna do ID do usuário nesta tabela.

 

Outro ponto é o $_SESSION. No caso reparei que existe um '$_SESSION['nickname']'. O $_SESSION deve estar relacionado com o ID do usuário que esta logado pois dessa forma a query SELECT retornará corretamente os resultados relacionados ao usuário logado.

 

Após ter criado o script 'update-pontos.php', abra o script que envia os dados do formulário para a tabela 'comentários' e inclua um 'include' na seguinte parte:


if(mysqli_insert_id($conn)){

	include_once 'update-pontos.php';

	$_SESSION['msg'] = "<p style='color:green;'>Comentário enviado com sucesso, obrigado por enviar o seu feedback.</p>";
	header("Location:/index.php/p/v/sucesso2");

}

Dessa forma, caso a mensagem seja enviada corretamente, este script também chama e executa o script 'update-pontos.php' que atualiza a coluna 'premium_points' atualizando os dados relativos a mesma.

 

Dê uma olhada neste exemplo que criei. Quando você inserir um comentário no campo e clicar no botão enviar comentário, a mensagem é inserida na tabela 'comentários' e ao mesmo tempo, com o sucesso da mensagem enviada, o campo 'premium_points' é atualizado em uma outra tabela chamada 'accounts'.

 

Por fim, basicamente a lógica é mais ou menos essa. Uns também criam funções para executar este tipo de tarefa outros preferem utilizar métodos simples desde que o script seja criado evitando sql injection

 

Tente adaptar ao seu projeto, lembrando de configurar a conexão conforme os dados do seu banco de dados, usuário e senha do mesmo.

 

Caso alguém deseje acrescentar alguma melhoria, fique a vontade.

ótimo, eu entendi, obrigado!

Só mais uma duvida, e como faço pra não enviar o comentário caso a tabela de pontos esteja em 0?

Share this post


Link to post
Share on other sites

Tente fazer o seguinte:

 

Selecione exatamente a parte do código do formulário contato abaixo:

<div class="container-login100-form-btn">
                        <button type="submit" class="login100-form-btn">
                        Enviar
                        </button>
                    </div>
                    <br>
                            <div class="container-login100-form-btn">
                        <button type="reset" class="login100-form-btn">
                        Limpar Campos
                        </button>
                </div>

Em seguida, por cima dessa seleção que você fez, cole o script abaixo:

<?php 

$db = new PDO('mysql:host=localhost;dbname=sistema', 'user', 'pass');

$sth = $db->prepare("SELECT premium_points FROM accounts WHERE userFK = ".$_SESSION["nickname"]."");
$sth->execute();
$result = $sth->fetchColumn();
    
if ($result < 1): ?>

<h6>Você não possui pontos suficientes para comentar</h6>

<div class="container-login100-form-btn">
   <button type="submit" class="login100-form-btn" disabled>Enviar</button>
</div>

<br>

<div class="container-login100-form-btn">
   <button type="reset" class="login100-form-btn" disabled>Limpar Campos</button>
</div>

<?php else: ?>

<div class="container-login100-form-btn">
   <button type="submit" class="login100-form-btn" >Enviar</button>
</div>

<br>

<div class="container-login100-form-btn">
   <button type="reset" class="login100-form-btn" >Limpar Campos</button>
</div>

<?php endif ?> 

O script acima desabilitará os botões "Enviar" e "Limpar Campos" caso o usuário tenha zero premium_points, caso contrário os botões "Enviar" e "Limpar Campos" estarão habilitados.

 

Lembrando que você deve inserir as informações de conexão do banco de dados bem como se atentar para a parte da query "WHERE userFK" ser exatamente o nome da coluna da tabela "accounts" que armazena o ID do usuário cadastrado bem como o "$_SESSION["nickname"]" estar relacionado ao ID do usuário também. Dessa forma o resultado retornado estará relacionado ao usuário logado :thumbsup:

Share this post


Link to post
Share on other sites
1 hora atrás, michelmir disse:

Tente fazer o seguinte:

 

Selecione exatamente a parte do código do formulário contato abaixo:


<div class="container-login100-form-btn">
                        <button type="submit" class="login100-form-btn">
                        Enviar
                        </button>
                    </div>
                    <br>
                            <div class="container-login100-form-btn">
                        <button type="reset" class="login100-form-btn">
                        Limpar Campos
                        </button>
                </div>

Em seguida, por cima dessa seleção que você fez, cole o script abaixo:


<?php 

$db = new PDO('mysql:host=localhost;dbname=sistema', 'user', 'pass');

$sth = $db->prepare("SELECT premium_points FROM accounts WHERE userFK = ".$_SESSION["nickname"]."");
$sth->execute();
$result = $sth->fetchColumn();
    
if ($result < 1): ?>

<h6>Você não possui pontos suficientes para comentar</h6>

<div class="container-login100-form-btn">
   <button type="submit" class="login100-form-btn" disabled>Enviar</button>
</div>

<br>

<div class="container-login100-form-btn">
   <button type="reset" class="login100-form-btn" disabled>Limpar Campos</button>
</div>

<?php else: ?>

<div class="container-login100-form-btn">
   <button type="submit" class="login100-form-btn" >Enviar</button>
</div>

<br>

<div class="container-login100-form-btn">
   <button type="reset" class="login100-form-btn" >Limpar Campos</button>
</div>

<?php endif ?> 

O script acima desabilitará os botões "Enviar" e "Limpar Campos" caso o usuário tenha zero premium_points, caso contrário os botões "Enviar" e "Limpar Campos" estarão habilitados.

 

Lembrando que você deve inserir as informações de conexão do banco de dados bem como se atentar para a parte da query "WHERE userFK" ser exatamente o nome da coluna da tabela "accounts" que armazena o ID do usuário cadastrado bem como o "$_SESSION["nickname"]" estar relacionado ao ID do usuário também. Dessa forma o resultado retornado estará relacionado ao usuário logado :thumbsup:

maxresdefault-590x332.thumb.jpg.f9eed9e0af02c405514f0dbc28a231c7.jpgA tabela de contas são essas ai, e a "$_SESSION["nickname"]" deve ser "$_SESSION["name"]"
Eu alterei porém fala que não tenho ponto, mesmo tendo, sendo assim não consigo enviar o formulário

E alterei a linha para:

 

$sth = $db->prepare("SELECT premium_points FROM accounts WHERE name = ".$_SESSION["name"]."");
 

Share this post


Link to post
Share on other sites

Quais são as colunas após a coluna "premium_points?

 

Quanto a $_session['   '], dentro da mesma deverá conter algum nome que deve estar relacionado a algum valor dentro da tabela accounts. Normalmente é uma foreingKey. Outro ponto é verificar se o usuário logado contém pontos. Observei que na primeira imagem que você enviou, alguns usuários estão com a pontuação zerada. No caso você esta logado com alguma conta que possui pontos? Por fim, vamos testando as possibilidades baseando-se no que falamos aqui :thumbsup:

Share this post


Link to post
Share on other sites
9 horas atrás, michelmir disse:

Quais são as colunas após a coluna "premium_points?

 

Quanto a $_session['   '], dentro da mesma deverá conter algum nome que deve estar relacionado a algum valor dentro da tabela accounts. Normalmente é uma foreingKey. Outro ponto é verificar se o usuário logado contém pontos. Observei que na primeira imagem que você enviou, alguns usuários estão com a pontuação zerada. No caso você esta logado com alguma conta que possui pontos? Por fim, vamos testando as possibilidades baseando-se no que falamos aqui :thumbsup:

A conta que estou logado tem pontos, e mesmo alterando o ponto pra 0 ou pra 1, o site fica do mesmo jeito, não consegue enviar o formulário.

 $_session['   '] é name, que no caso é o login (conta) da pessoa(deixei $_session['name'])

As colunas estão na seguinte forma:

id name, password, premdays, lastday, email, key, blocked, warnings, group_id, page_acess, page_lastday, email_new_time, rlname, location, created, email_code, next_email, premium_points, nickname, avatar, about_me, language

Share this post


Link to post
Share on other sites

Depois de um tempo tentando, consegui fazer, só vai enviar caso ele esteja com um ou mais pontos, caso contrário os botão de enviar e limpar campo não aparece, e quando ele envia um comentário, os pontos vão para 0, no caso ele só poderá enviar uma vez!

Obrigado, você me ajudou demais.

O Código caso alguém esteja precisando também:

 

<?php 

$db = new PDO('mysql:host=localhost;dbname=awvenda2', 'root', '');
$sth = $db->prepare("SELECT `premium_points` FROM `accounts` WHERE `id` = ".$_SESSION['account_id']."");
$sth->execute();
$result = $sth->fetchColumn();
    
if ($result == 0): ?>

<h1>Você não possui pontos suficientes para comentar</h1>


<?php else: ?>

<div class="container-login100-form-btn">
<?php
$sth = $db->prepare("UPDATE `accounts` SET `premium_points` = '0' WHERE `accounts`.`id` = ".$_SESSION['account_id']."");
$sth->execute();
?>
   <button type="submit" class="login100-form-btn" >Enviar</button>
</div>

<br>

<div class="container-login100-form-btn">
   <button type="reset" class="login100-form-btn" >Limpar Campos</button>
</div>

<?php endif ?> 

 

Share this post


Link to post
Share on other sites

Create an account or sign in to comment

You need to be a member in order to leave a comment

Create an account

Sign up for a new account in our community. It's easy!

Register a new account

Sign in

Already have an account? Sign in here.

Sign In Now

  • Similar Content

    • By albuquerque.paulo1992
      <!DOCTYPE html> <html lang="en">   <head>     <meta charset="UTF-8">     <meta name="viewport" content="width=device-width, initial-scale=1.0">     <title>Document</title> </head>   <body>     <div class="row">         <div class="col-md-6">             <div class="form-group">                 <label><i class="fas fa-university"></i> Unidade</label require>                 <select type="text" name="unidade" class="form-control" id="unidade" onclick="formatar()">                     <option selected disabled>Escolha Unidade</option required>                     <?php                     include_once("conexao.php");                     $consult = "SELECT * FROM tb_unidades WHERE cnes ORDER BY nome_da_unidade";                     $consulta = mysqli_query($conn, $consult);                     while ($row_cat_post = mysqli_fetch_assoc($consulta)) {                         echo '<option value="' . $row_cat_post['nome_da_unidade'] . '"> ' . $row_cat_post['nome_da_unidade'] . '</option>';                     }                     ?>                 </select>             </div>         </div>         <div class="col-md-6">             <div class="form-group">                 <label><i class="fas fa-fingerprint"></i> CNES</label>                 <input type="text" name="cnes" class="form-control" id="cnes"                     placeholder="Cadastro Nacional de Estabelecimentos de Saúde">             </div>         </div>     </div> </body>   </html>
    • By wellingtonmelo
      Olá pessoal, beleza?!! Espero que sim!
      Vou tentar explicar bem meu problema para ver se aparece um anjo na minha vida e me ajuda com isso!
       
      Tenho um projeto quiz para facebook. Todo o tráfego é gerado pelos próprios usuários que fazem o teste, aparece a foto do usuário e ele compartilha em seu facebook.
       
      Porém a taxa de compartilhamento está muito baixa, percebi que não esta exibindo a  imagem certa dentro da janela de share do facebook.
       
      Acredito que quem conhece php e/ou javascript consegue ler o código e ver qual código é responsável por puxar a imagem do resultado dentro da janela de share.
       
      É exibida a imagem de "capa", mas não a imagem do resultado.
       
      Por favor, veja o funcionamento, basta logar com facebook e para iniciar o teste: https://testesdivertidos.com/qual-seu-status-de-relacionamento-para-este-ano/
       
      Após aparecer o resultado, clique em COMPARTILHAR, verá que a imagem da capa aparece no share, ao invés da imagem do resultado.
       
      Bom, os arquivos responsáveis acredito serem 3.
       
      wp-quiz-pro.php
      inc/class-fb-quiz.php
      inc/class-wp-quiz-pro.php
       
      Obs: "class-fb-quiz.php" e "class-wp-quiz-pro.php" estão dentro da pasta inc
       
      Segue código, wp-quiz-pro.php:
      <?php /** * Plugin Name: Testes Pop * Plugin URI: https://testespop.com.br * Description: O TestesPop permite que você adicione facilmente testes para o facebook, ágeis e modernos ao seu site ou blog! Aumente o engajamento e os compartilhamentos enquanto fatura continuamente. * Version: 4122 * Author: TestesPop * Author URI: http://testespop.com.br * * Text Domain: testes-pop * Domain Path: /languages/ */ if ( ! defined( 'ABSPATH' ) ) { exit; // disable direct access } if ( ! class_exists( 'WP_Quiz_Pro_Plugin' ) ) : /** * Register the plugin. * * Display the administration panel, insert JavaScript etc. */ class WP_Quiz_Pro_Plugin { /** * Hold plugin version * * @var string */ public $version = '4122'; /** * Hold an instance of WP_Quiz_Pro_Plugin class. * * @var WP_Quiz_Pro_Plugin */ protected static $instance = null; /** * Hold the current quiz instance * * @var WP_Quiz_Pro */ public $quiz = null; /** * Plugin url. * @var string */ private $plugin_url = null; /** * Plugin path. * @var string */ private $plugin_dir = null; /** * Main WP_Quiz_Pro_Plugin instance. * @return WP_Quiz_Pro_Plugin - Main instance. */ public static function get_instance() { if ( is_null( self::$instance ) ) { self::$instance = new WP_Quiz_Pro_Plugin; } return self::$instance; } /** * You cannot clone this class. */ public function __clone() { _doing_it_wrong( __FUNCTION__, __( 'Cheatin&#8217; huh?', 'wp-quiz-pro' ), $this->version ); } /** * You cannot unserialize instances of this class. */ public function __wakeup() { _doing_it_wrong( __FUNCTION__, __( 'Cheatin&#8217; huh?', 'wp-quiz-pro' ), $this->version ); } /** * The Constructor */ private function __construct() { $this->includes(); $this->hooks(); $this->setup_shortcode(); } /** * Load required classes */ private function includes() { // Auto loader spl_autoload_register( array( $this, 'autoloader' ) ); new WP_Quiz_Pro_Admin; } /** * Autoload classes */ public function autoloader( $class ) { $dir = $this->plugin_dir() . 'inc' . DIRECTORY_SEPARATOR; $class_file_name = 'class-' . str_replace( array( 'wp_quiz_pro_', '_' ), array( '', '-' ), strtolower( $class ) ) . '.php'; if ( file_exists( $dir . $class_file_name ) ) { require $dir . $class_file_name; } } /** * Register the [wp_quiz_pro] shortcode. */ private function setup_shortcode() { add_shortcode( 'wp_quiz_pro', array( $this, 'register_shortcode' ) ); add_shortcode( 'wp_quiz_listing', array( $this, 'quiz_listing' ) ); } /** * Hook WP Quiz into WordPress */ private function hooks() { // Common add_action( 'init', array( $this, 'load_plugin_textdomain' ) ); add_action( 'init', array( $this, 'register_post_type' ) ); add_action( 'init', array( $this, 'embeded_output' ) ); // Frontend add_action( 'wp_head', array( $this, 'inline_script' ), 1 ); add_filter( 'the_content', array( $this, 'create_quiz_page' ) ); // Ajax add_action( 'wp_ajax_wq_quizResults', array( $this, 'save_quiz_results' ) ); add_action( 'wp_ajax_nopriv_wq_quizResults', array( $this, 'save_quiz_results' ) ); add_action( 'wp_ajax_wq_submitInfo', array( $this, 'save_quiz_user_info' ) ); add_action( 'wp_ajax_nopriv_wq_submitInfo', array( $this, 'save_quiz_user_info' ) ); add_action( 'wp_ajax_wq_submitFbInfo', array( $this, 'save_quiz_fb_user_info' ) ); add_action( 'wp_ajax_nopriv_wq_submitFbInfo', array( $this, 'save_quiz_fb_user_info' ) ); add_action( 'wp_ajax_check_image_file', array( $this, 'check_image_file' ) ); add_action( 'wp_ajax_check_video_file', array( $this, 'check_video_file' ) ); add_action( 'wp_ajax_dismiss_imagick_notice', array( $this, 'dismiss_imagick_notice' ) ); add_action( 'wp_ajax_dismiss_gdlibrary_notice', array( $this, 'dismiss_gdlibrary_notice' ) ); add_action( 'wp_ajax_wpquiz_get_debug_log', array( $this, 'wp_quiz_pro_get_debug_log' ) ); add_action( 'wp_ajax_connect_aweber', array( $this, 'connect_aweber' ) ); // FB SDK version 2.9 fix if ( isset( $_GET['fbs'] ) && ! empty( $_GET['fbs'] ) ) { add_action( 'template_redirect', array( $this, 'fb_share_fix' ) ); } } /** * Initialise translations */ public function load_plugin_textdomain() { load_plugin_textdomain( 'wp-quiz-pro', false, dirname( plugin_basename( __FILE__ ) ) . '/languages/' ); } /** * Register Quiz post type */ public function register_post_type() { $labels = array( 'name' => __( 'Testes Pop', 'wp-quiz-pro' ), 'menu_name' => __( 'Testes Pop', 'wp-quiz-pro' ), 'singular_name' => __( 'Testes Pop', 'wp-quiz-pro' ), 'name_admin_bar' => _x( 'Testes Pop', 'name admin bar', 'wp-quiz-pro' ), 'all_items' => __( 'Todos os testes', 'wp-quiz-pro' ), 'search_items' => __( 'Procurar teste', 'wp-quiz-pro' ), 'add_new' => _x( 'Adicionar novo', 'quiz', 'wp-quiz-pro' ), 'add_new_item' => __( 'Adicionar novo teste', 'wp-quiz-pro' ), 'new_item' => __( 'Adicionar novo', 'wp-quiz-pro' ), 'view_item' => __( 'Ver teste', 'wp-quiz-pro' ), 'edit_item' => __( 'Editar teste', 'wp-quiz-pro' ), 'not_found' => __( 'Nenhum teste encontrado.', 'wp-quiz-pro' ), 'not_found_in_trash' => __( 'Nenhum teste na lixeira.', 'wp-quiz-pro' ), 'parent_item_colon' => __( 'Teste pai', 'wp-quiz-pro' ), ); $args = array( 'labels' => $labels, 'description' => __( 'Mantém os testes e seus dados.', 'wp-quiz-pro' ), 'menu_position' => 5, 'menu_icon' => 'dashicons-editor-help', 'public' => true, 'publicly_queryable' => true, 'show_ui' => true, 'show_in_menu' => true, 'query_var' => true, 'capability_type' => 'post', 'has_archive' => true, 'hierarchical' => false, 'supports' => array( 'title', 'author', 'thumbnail', 'excerpt' ), ); register_post_type( 'wp_quiz', $args ); if ( false === get_option( 'wp_quiz_pro_version' ) ) { flush_rewrite_rules(); update_option( 'wp_quiz_pro_version', $this->version ); } } public function quiz_listing( $atts = array() ) { extract( shortcode_atts( array( 'num' => 30 ), $atts ) ); $args = array( 'post_type' => 'wp_quiz', 'post_status' => 'publish', 'posts_per_page' => $num, 'no_found_rows' => true, 'update_post_term_cache' => false ); $the_query = new WP_Query( $args ); if ( ! $the_query->have_posts() ) { return ''; } wp_enqueue_style( 'wp-quiz-listing', $this->plugin_url() . 'assets/css/listing.css', null, null ); ob_start(); include_once 'tmpl-quiz-listing.php'; $out = ob_get_clean(); wp_reset_query(); return $out; } /** * Shortcode used to display quiz * * @return string HTML output of the shortcode */ public function register_shortcode( $atts ) { if ( ! isset( $atts['id'] ) ) { return false; } // we have an ID to work with $quiz = get_post( $atts['id'] ); // check if ID is correct if ( ! $quiz || 'wp_quiz' !== $quiz->post_type ) { return "<!-- wp_quiz {$atts['id']} not found -->"; } // lets go $this->set_quiz( $atts['id'] ); $this->quiz->enqueue_scripts(); return $this->quiz->render_public_quiz(); } /** * Set the current quiz */ public function set_quiz( $id ) { $quiz_type = get_post_meta( $id, 'quiz_type', true ); $quiz_type = str_replace( '_quiz', '', $quiz_type ); $quiz_type = 'WP_Quiz_Pro_' . ucwords( $quiz_type ) . '_Quiz'; $this->quiz = new $quiz_type( $id ); } /** * [create_quiz_page description] * @param [type] $content [description] * @return [type] [description] */ public function create_quiz_page( $content ) { global $post; if ( 'wp_quiz' !== $post->post_type ) { return $content; } if ( ! is_single() ) { return $content; } $quiz_html = $this->register_shortcode( array( 'id' => $post->ID ) ); return $quiz_html . $content; } /** * [save_quiz_results description] * @return [type] [description] */ public function save_quiz_results() { if ( ! wp_verify_nonce( $_POST['_nonce'], 'ajax-quiz-content' ) ) { return; } $correct = isset( $_POST['correct'] ) ? absint( $_POST['correct'] ) : 0; $rid = isset( $_POST['rid'] ) ? $_POST['rid'] : ''; $pid = absint( $_POST['pid'] ); $type = sanitize_text_field( $_POST['type'] ); $user_ip = $this->get_ip(); $user_id = get_current_user_id(); $user_info = get_userdata( $user_id ); $username = is_user_logged_in() ? $user_info->user_login : 'Guest'; $result = ''; $results = get_post_meta( $pid, 'results', true ); if ( 'trivia' === $type ) { $rid = ''; foreach ( $results as $result ) { if ( $result['min'] <= $correct && $result['max'] >= $correct ) { $result = $result['title']; break; } } } elseif ( 'personality' === $type ) { for ( $i = 0; $i < count( $results ); $i++ ) { if ( $i == $rid ) { $result = $results[ $i ]['title']; break; } } } elseif ( 'swiper' === $type ) { $results = $_POST['results']; $questions = get_post_meta( $pid, 'questions', true ); foreach ( $questions as $q_key => $question ) { foreach ( $results as $key => $result ) { if ( $question['uid'] == $key ) { if ( '0' == $result ) { $questions[ $q_key ]['votesDown'] = $question['votesDown'] + 1; } else { $questions[ $q_key ]['votesUp'] = $question['votesUp'] + 1; } } } } update_post_meta( $pid, 'questions', $questions ); $result = ''; } // Save Result $settings = get_option( 'wp_quiz_pro_default_settings' ); if ( isset( $settings['players_tracking'] ) && 1 === $settings['players_tracking'] ) { global $wpdb; $wpdb->insert( $wpdb->prefix . 'wp_quiz_players', array( 'pid' => $pid, 'date' => date( 'Y-m-d', time() ), 'user_ip' => $user_ip, 'username' => $username, 'correct_answered' => $correct, 'result' => $result, 'quiz_type' => $type, ), array( '%d', '%s', '%s', '%s', '%d', '%s', '%s' ) ); } die( 'SUCCESS!' ); } /** * [save_quiz_user_info description] * @return [type] [description] */ public function save_quiz_user_info() { if ( ! wp_verify_nonce( $_POST['_nonce'], 'ajax-quiz-content' ) ) { return; } $output = array( 'status' => 1 ); if ( is_email( $_POST['email'] ) ) { global $wpdb; $username = sanitize_text_field( $_POST['username'] ); $email = sanitize_email( $_POST['email'] ); $pid = absint( $_POST['pid'] ); $this->subscribe_user( $pid, $username, $email ); $result = $wpdb->get_results( "SELECT * FROM {$wpdb->prefix}wp_quiz_emails WHERE email = '" . $email . "'" ); if ( ! $result ) { //Save info $wpdb->insert( $wpdb->prefix . 'wp_quiz_emails', array( 'pid' => $pid, 'username' => $username, 'email' => $email, 'date' => date( 'Y-m-d', time() ), ), array( '%d', '%s', '%s', '%s' ) ); } $output['status'] = 2; } wp_send_json( $output ); } /** * [save_quiz_fb_user_info description] * @return [type] [description] */ public function save_quiz_fb_user_info() { if ( ! wp_verify_nonce( $_POST['_nonce'], 'ajax-quiz-content' ) ) { return; } $output = array( 'status' => 1 ); if ( ! empty( $_POST['user'] ) ) { global $wpdb; $user = $_POST['user']; $result = $wpdb->get_row( "SELECT * FROM {$wpdb->prefix}wp_quiz_fb_users WHERE uid = '" . $user['id'] . "'" ); if ( ! $result ) { $wpdb->insert( $wpdb->prefix . 'wp_quiz_fb_users', array( 'uid' => absint( $user['id'] ), 'email' => isset( $user['email'] ) ? $user['email'] : '', 'first_name' => $user['first_name'], 'last_name' => $user['last_name'], 'gender' => isset( $user['gender'] ) ? $user['gender'] : '', 'picture' => isset( $user['picture'] ) ? $user['picture'] : '', 'friends' => isset( $user['friends'] ) ? serialize( $user['friends'] ) : '', 'created_at' => date( 'Y-m-d', time() ), 'updated_at' => date( 'Y-m-d', time() ), ), array( '%d', '%s', '%s', '%s', '%s', '%s', '%s', '%s', '%s' ) ); $user['insert_id'] = $wpdb->insert_id; } else { $user['insert_id'] = $result->id; } if ( 'user' === $_POST['profile'] ) { $return = $this->generate_result_user_image( $_POST['pid'], $user ); } else { $return = $this->generate_result_friend_image( $_POST['pid'], $user ); } if ( ! empty( $return['src'] ) ) { $output['src'] = $return['src']; $output['desc'] = $return['desc']; $output['key'] = $return['key']; $output['status'] = 2; } else { $output['error'] = $return['error']; } } wp_send_json( $output ); } /** * [generate_result_user_image description] * @param [type] $post_id [description] * @param [type] $user [description] * @return [type] [description] */ public function generate_result_user_image( $post_id, $user ) { global $wpdb; $return = array(); $results = get_post_meta( $post_id, 'results', true ); if ( extension_loaded( 'imagick' ) && ! empty( $results ) ) { $index = array_rand( $results ); $result = $results[ $index ]; $result['key'] = $index; $play = $wpdb->get_row( "SELECT * FROM {$wpdb->prefix}wp_quiz_fb_plays WHERE user_id = '" . $user['insert_id'] . "' AND pid = '" . $post_id . "'" ); if ( ! $play ) { $wpdb->insert( $wpdb->prefix . 'wp_quiz_fb_plays', array( 'user_id' => absint( $user['insert_id'] ), 'pid' => absint( $post_id ), ), array( '%d', '%d' ) ); } $names = array( 'user_first_name' => $user['first_name'], 'user_last_name' => $user['last_name'], 'friend_first_name' => '', 'friend_last_name' => '', ); $profile = 'https://graph.facebook.com/' . $user['id'] . '/picture?width=320&height=320'; $profile = $this->get_redirect_url( $profile ); $data = $this->generate_fb_result( $post_id, $result, $profile, $names ); $return = $data; } return $return; } public function generate_result_friend_image( $post_id, $user ) { global $wpdb; $return = array(); $results = get_post_meta( $post_id, 'results', true ); if ( extension_loaded( 'imagick' ) && ! empty( $results ) && ! empty( $user['friends'] ) ) { $index = array_rand( $results ); $result = $results[ $index ]; $result['key'] = $index; $index_2 = array_rand( $user['friends'] ); $friend = $user['friends'][ $index_2 ]; $play = $wpdb->get_row( "SELECT * FROM {$wpdb->prefix}wp_quiz_fb_plays WHERE user_id = '" . $user['insert_id'] . "' AND pid = '" . $post_id . "'" ); if ( ! $play ) { $wpdb->insert( $wpdb->prefix . 'wp_quiz_fb_plays', array( 'user_id' => absint( $user['insert_id'] ), 'pid' => absint( $post_id ), ), array( '%d', '%d' ) ); } $profile = 'https://graph.facebook.com/' . $friend['id'] . '/picture?width=320&height=320'; $profile = $this->get_redirect_url( $profile ); $friend_name = explode( ' ', $friend['name'] ); $names = array( 'user_first_name' => $user['first_name'], 'user_last_name' => $user['last_name'], 'friend_first_name' => $friend_name[0], 'friend_last_name' => $friend_name[1], ); $data = $this->generate_fb_result( $post_id, $result, $profile, $names ); $return = $data; } return $return; } public function generate_fb_result( $post_id, $result, $profile, $names ) { $return = array( 'src' => '', 'desc' => '', 'error' => '', ); $profile_tmp = null; $output = null; $draw = null; try { $options = get_option( 'wp_quiz_pro_default_settings' ); $settings = get_post_meta( $post_id, 'settings', true ); $find = array( '%%nomeusuario%%', '%%sobrenome%%', '%%nomeamigo%%', '%%sobrenomeamigo%%' ); $replace = array( $names['user_first_name'], $names['user_last_name'], $names['friend_first_name'], $names['friend_last_name'] ); $title = str_replace( $find, $replace, $result['title'] ); $desc = str_replace( $find, $replace, $result['desc'] ); $upload_dir = wp_upload_dir(); // Load images $profile_tmp = download_url( $profile ); $profile = new Imagick( $profile_tmp ); $profile->resizeImage( $result['proImageWidth'], $result['proImageHeight'], imagick::FILTER_LANCZOS, 0.9 ); $profile->roundCorners( $result['imageRadius'], $result['imageRadius'] ); // Create new image from result $output = new Imagick( str_replace( $upload_dir['baseurl'], $upload_dir['basedir'], $result['image'] ) ); $output->compositeImage( $profile, Imagick::COMPOSITE_DEFAULT, $result['pos_x'], $result['pos_y'] ); // Annotate it if ( ! empty( $title ) ) { $draw = new ImagickDraw(); $draw->setFillColor( $settings['title_color'] ); $draw->setGravity( 1 ); $draw->setFontSize( $settings['title_size'] ); if ( isset( $options['defaults']['external_font'] ) && ! empty( $options['defaults']['external_font'] ) ) { $external_font = str_replace( home_url( '/' ), '', $options['defaults']['external_font'] ); $draw->setFont( '../' . $external_font ); } else { $draw->setFontFamily( $settings['title_font'] ); } list( $lines, $line_height ) = $this->word_wrap_annotation( $output, $draw, $title, $result['titleImageWidth'] ); for ( $i = 0; $i < count( $lines ); $i++ ) { $output->annotateImage( $draw, $result['pos_title_x'], $result['pos_title_y'] + $i * $line_height, 0, $lines[ $i ] ); } } // Save to new image $upload_dir['basedir'] = $upload_dir['basedir'] . '/wp_quiz-result-images'; $upload_dir['baseurl'] = $upload_dir['baseurl'] . '/wp_quiz-result-images'; $output_name = 'image-' . rand( 0, 100000 ) . '.png'; $output->writeImage( $upload_dir['basedir'] . '/' . $output_name ); $return['src'] = $upload_dir['baseurl'] . '/' . $output_name; $return['desc'] = $desc; $return['key'] = $result['key']; } catch ( Exception $ex ) { $return['error'] = $ex->getMessage(); } // Clean up if ( ! is_null( $profile ) && is_a( $profile, 'Imagick' ) ) { $profile->clear(); } if ( ! is_null( $output ) && is_a( $output, 'Imagick' ) ) { $output->clear(); } if ( ! is_null( $draw ) && is_a( $draw, 'ImagickDraw' ) ) { $draw->clear(); } if ( ! is_null( $profile_tmp ) ) { @unlink( $profile_tmp ); } return $return; } public function get_redirect_url( $url ) { $response = wp_remote_head( $url ); $redirect_url = wp_remote_retrieve_header( $response, 'location' ); return $redirect_url ? $redirect_url : $url; } public function word_wrap_annotation( $image, $draw, $text, $max_width ) { $words = preg_split( '%\s%', $text, -1, PREG_SPLIT_NO_EMPTY ); $lines = array(); $i = 0; $line_height = 0; while ( count( $words ) > 0 ) { $metrics = $image->queryFontMetrics( $draw, implode( ' ', array_slice( $words, 0, ++$i ) ) ); $line_height = max( $metrics['textHeight'], $line_height ); if ( $metrics['textWidth'] > $max_width || count( $words ) < $i ) { if ( 1 === $i ) { $i++; } $lines[] = implode( ' ', array_slice( $words, 0, --$i ) ); $words = array_slice( $words, $i ); $i = 0; } } return array( $lines, $line_height ); } public function subscribe_user( $id, $name, $email ) { $settings = get_post_meta( $id, 'settings', true ); $options = get_option( 'wp_quiz_pro_default_settings' ); if ( '1' === $settings['force_action'] ) { if ( '1' === $options['mail_service'] ) { $this->subscribe_mailchimp( $options, $name, $email ); } elseif ( '2' === $options['mail_service'] ) { $this->subscribe_getresponse( $options, $name, $email ); } elseif ( '3' === $options['mail_service'] ) { $this->subscribe_aweber( $options, $name, $email ); } } } private function subscribe_aweber( $options, $name, $email ) { // check for valid data if ( empty( $email ) ) { wp_send_json( array( 'success' => false, 'error' => esc_html__( 'No email address found.', 'wp-quiz-pro' ), ) ); } if ( ! filter_var( $email, FILTER_VALIDATE_EMAIL ) ) { wp_send_json( array( 'success' => false, 'error' => esc_html__( 'Not a valid email address.', 'wp-quiz-pro' ), ) ); } // Call service subscription method try { $service = new WP_Quiz_Pro_Subscription_Aweber(); $list_id = $options['aweber']['listid']; $status = $service->subscribe( $name, $email, $list_id ); wp_send_json(array( 'success' => true, 'status' => $status['status'], )); } catch ( Exception $e ) { wp_send_json(array( 'success' => false, 'error' => $e->getMessage(), )); } } private function subscribe_mailchimp( $options, $name, $email ) { $mc_api_key = $options['mailchimp']['api_key']; $mc_list_id = $options['mailchimp']['list_id']; $double_optin = apply_filters( 'wp_quiz_mailchimp_double_notification', false ); $vendor_path = $this->get_vendor_path(); if ( $email && null !== $mc_api_key && null !== $mc_list_id ) { try { if ( ! class_exists( 'Mailchimp' ) ) { require_once( $vendor_path . '/Mailchimp.php' ); } $list = new Mailchimp_Lists( new Mailchimp( $mc_api_key ) ); $merge_vars = null; if ( $name ) { $fname = $name; $lname = ''; if ( $space_pos = strpos( $name, ' ' ) ) { $fname = substr( $name, 0, $space_pos ); $lname = substr( $name, $space_pos ); } $merge_vars = array( 'FNAME' => $fname, 'LNAME' => $lname, ); } $list->subscribe( $mc_list_id, array( 'email' => $email ), $merge_vars, 'html', (bool) $double_optin, true ); } catch ( Exception $ex ) { } } } private function subscribe_getresponse( $options, $name, $email ) { $gr_api_key = $options['getresponse']['api_key']; $gr_list_id = $options['getresponse']['campaign_name']; $vendor_path = $this->get_vendor_path(); if ( $email && null !== $gr_api_key && null !== $gr_list_id ) { try { if ( ! class_exists( 'GetResponse' ) ) { require_once( $vendor_path . '/getresponse.php' ); } $api = new GetResponse( $gr_api_key ); $campaign_ame = $gr_list_id; $subscriber_name = $name; $subscriber_email = $email; $result = $api->getCampaigns( 'EQUALS', $campaign_ame ); $campaigns = array_keys( (array) $result ); $campaign_id = array_pop( $campaigns ); $api->addContact( $campaign_id, $subscriber_name, $subscriber_email ); } catch ( Exception $ex ) { } } } public function get_vendor_path() { return plugin_dir_path( __FILE__ ) . 'vendor'; } public function check_image_file() { $output = array( 'status' => 1 ); $check = false; if ( @getimagesize( $_POST['url'] ) ) { $check = true; } $output['check'] = $check; wp_send_json( $output ); } public function check_video_file() { $output = array( 'status' => 1 ); $check = false; $id = $_POST['video_id']; $url = "//www.youtube.com/oembed?url=http://www.youtube.com/watch?v=$id&format=json"; $headers = get_headers( $url ); if ( '404' !== substr( $headers[0], 9, 3 ) ) { $check = true; } $output['check'] = $check; wp_send_json( $output ); } public static function activate_plugin() { // Don't activate on anything less than PHP 5.4.0 or WordPress 3.4 if ( version_compare( PHP_VERSION, '5.4.0', '<' ) || version_compare( get_bloginfo( 'version' ), '3.4', '<' ) || ! function_exists( 'spl_autoload_register' ) ) { require_once ABSPATH . 'wp-admin/includes/plugin.php'; deactivate_plugins( basename( __FILE__ ) ); wp_die( __( 'O Testes Pop requer o PHP na versão 5.4.0 com extensão spl ou superior e o WordPress 3.4 ou superior.', 'wp-quiz-pro' ) ); } //Dont't activate if wp quiz is active if ( defined( 'WP_QUIZ_VERSION' ) ) { deactivate_plugins( basename( __FILE__ ) ); wp_die( __( 'Por favor, desative o plugin Testes Pop primeiro para usar os recursos Premium!', 'wp-quiz-pro' ) ); } include( 'inc/activate-plugin.php' ); } public function get_ip() { //Just get the headers if we can or else use the SERVER global if ( function_exists( 'apache_request_headers' ) ) { $headers = apache_request_headers(); } else { $headers = $_SERVER; } //Get the forwarded IP if it exists if ( array_key_exists( 'X-Forwarded-For', $headers ) && filter_var( $headers['X-Forwarded-For'], FILTER_VALIDATE_IP, FILTER_FLAG_IPV4 ) ) { $the_ip = $headers['X-Forwarded-For']; } elseif ( array_key_exists( 'HTTP_X_FORWARDED_FOR', $headers ) && filter_var( $headers['HTTP_X_FORWARDED_FOR'], FILTER_VALIDATE_IP, FILTER_FLAG_IPV4 ) ) { $the_ip = $headers['HTTP_X_FORWARDED_FOR']; } else { $the_ip = filter_var( $_SERVER['REMOTE_ADDR'], FILTER_VALIDATE_IP, FILTER_FLAG_IPV4 ); } return $the_ip; } public function dismiss_imagick_notice() { add_option( 'wp_dismiss_imagick_notice', 'true' ); } public function dismiss_gdlibrary_notice() { add_option( 'wp_dismiss_gdlibrary_notice', 'true' ); } public function wp_quiz_pro_get_debug_log() { $page = new WP_Quiz_Pro_Page_Support(); $page->get_debug_log(); } public function fb_share_fix() { $data = array_map( 'urldecode', $_GET ); $result = get_post_meta( $data['id'], 'results', true ); $result = isset( $result[ $data['rid'] ] ) ? $result[ $data['rid'] ] : array(); // Picture if(isset($data['img_url']) && $data['img_url'] !== '') { $data['source'] = $data['img_url']; } else if ( 'r' === $data['pic'] ) { $data['source'] = $result['image']; } elseif ( 'f' === $data['pic'] ) { $data['source'] = wp_get_attachment_url( get_post_thumbnail_id( $data['id'] ) ); } elseif ( ( substr( $data['pic'], 0, 6 ) === 'image-' ) ) { $upload_dir = wp_upload_dir(); $upload_dir['baseurl'] = $upload_dir['baseurl'] . '/wp_quiz-result-images'; $data['source'] = $upload_dir['baseurl'] . '/' . $data['pic'] . '.png'; } else { $data['source'] = false; } // Description if(isset($data['desc_text']) && $data['desc_text'] !== '') { $data['description'] = $data['desc_text']; } elseif ( 'r' === $data['desc'] ) { $data['description'] = $result['desc']; } elseif ( 'e' === $data['desc'] ) { $data['description'] = get_post_field( 'post_excerpt', $data['id'] ); } else { $data['description'] = false; } if ( $data['description'] ) { $first = array( '%%nomeusuario%%', '%%nomeamigo%%' ); $last = array( '%%sobrenome%%', '%%sobrenomeamigo%%' ); $data['description'] = str_replace( $first, $data['nf'], $data['description'] ); $data['description'] = str_replace( $last, $data['nl'], $data['description'] ); } $settings = get_option( 'wp_quiz_pro_default_settings' ); $url = ( is_ssl() ? 'https' : 'http' ) . "://$_SERVER[HTTP_HOST]$_SERVER[REQUEST_URI]"; global $post; $pid = $post ? $post->ID : $data['id']; $original_url = get_permalink( $pid ); ?> <html> <head> <title><?php wp_title( '' ); ?></title> <meta property="fb:app_id" content="<?php echo $settings['defaults']['fb_app_id'] ?>"> <meta property="og:type" content="website"> <meta name="twitter:card" content="summary_large_image"> <meta property="og:url" content="<?php echo esc_url( $url ); ?>"> <?php if ( ! empty( $data['text'] ) ) : $title = get_the_title( $pid ); $text = esc_attr( $data['text'] ); $title = $title === $text ? $title : $title . ' - ' . $text; ?> <meta property="og:title" content="<?php echo $title ?>"> <meta property="twitter:title" content="<?php echo $title ?>"> <?php endif; ?> <?php if ( ! empty( $data['source'] ) ) : ?> <meta property="og:image" content="<?php echo esc_url( $data['source'] ); ?>"> <meta property="twitter:image" content="<?php echo esc_url( $data['source'] ); ?>"> <?php list( $img_width, $img_height ) = getimagesize( $data['source'] ); ?> <?php if ( isset( $img_width ) && $img_width ) : ?> <meta property="og:image:width" content="<?php echo $img_width ?>"> <?php else: ?> <meta property="og:image:width" content="600"> <?php endif; ?> <?php if ( isset( $img_height ) && $img_height ) : ?> <meta property="og:image:height" content="<?php echo $img_height ?>"> <?php else: ?> <meta property="og:image:height" content="400"> <?php endif; ?> <?php endif; ?> <?php if ( ! empty( $data['description'] ) ) : ?> <meta property="og:description" content="<?php echo esc_attr( $data['description'] ); ?>"> <meta property="twitter:description" content="<?php echo esc_attr( $data['description'] ); ?>"> <?php endif; ?> <meta http-equiv="refresh" content="0;url=<?php echo esc_url( $original_url ); ?>"> </head> <body> Redirecionando, por favor aguarde.... </body> </html> <?php exit; } /* ////////////////////////////////////// ALTEREI AQUI //////////////////////////////////// */ protected static $url_facebook = null; public static function get_url_facebook() { return self::$url_facebook; } public function set_url_facebook($url) { self::$url_facebook = $url; } /* ////////////////////////////////////// ALTEREI AQUI //////////////////////////////////// */ /** * [inline_script description] * @return [type] [description] */ public function inline_script() { $settings = get_option( 'wp_quiz_pro_default_settings' ); /* ////////////////////////////////////// ALTEREI AQUI //////////////////////////////////// */ $this->set_url_facebook($settings['defaults']['fb_app_id2']); /* ////////////////////////////////////// ALTEREI AQUI //////////////////////////////////// */ ?> <script> var quizSiteUrl = '<?php echo home_url( '/' ) ?>'; <?php if ( ! empty( $settings['analytics']['tracking_id'] ) ) { ?> (function(i,s,o,g,r,a,m) {i['GoogleAnalyticsObject']=r;i[r]=i[r]||function() { (i[r].q=i[r].q||[]).push(arguments)},i[r].l=1*new Date();a=s.createElement(o), m=s.getElementsByTagName(o)[0];a.async=1;a.src=g;m.parentNode.insertBefore(a,m) })(window,document,'script','//www.google-analytics.com/analytics.js','ga'); ga('create', '<?php echo $settings['analytics']['tracking_id'] ?>', 'auto'); ga('send', 'pageview'); <?php } ?> <?php if ( ! empty( $settings['defaults']['fb_app_id'] ) ) { ?> window.fbAsyncInit = function() { FB.init({ appId : '<?php echo $settings['defaults']['fb_app_id'] ?>', xfbml : true, version : 'v2.9' }); FB.getLoginStatus(function( response ) { getLogin( response ); }); }; (function(d, s, id) { var js, fjs = d.getElementsByTagName(s)[0]; if (d.getElementById(id)) {return;} js = d.createElement(s); js.id = id; js.src = "//connect.facebook.net/pt_BR/sdk.js"; fjs.parentNode.insertBefore(js, fjs); }(document, 'script', 'facebook-jssdk')); <?php } ?> </script> <?php if ( is_singular( array( 'wp_quiz' ) ) && isset( $settings['defaults']['share_meta'] ) && 1 === $settings['defaults']['share_meta'] ) { global $post, $wpseo_og; $twitter_desc = $og_desc = str_replace( array( "\r", "\n" ), '', strip_tags( $post->post_excerpt ) ); if ( defined( 'WPSEO_VERSION' ) ) { remove_action( 'wpseo_head', array( $wpseo_og, 'opengraph' ), 30 ); remove_action( 'wpseo_head', array( 'WPSEO_Twitter', 'get_instance' ), 40 ); //use description from yoast $twitter_desc = get_post_meta( $post->ID, '_yoast_wpseo_twitter-description', true ); $og_desc = get_post_meta( $post->ID, '_yoast_wpseo_opengraph-description', true ); } ?> <meta name="twitter:title" content="<?php echo get_the_title(); ?>"> <meta name="twitter:description" content="<?php echo $twitter_desc; ?>"> <meta name="twitter:domain" content="<?php echo esc_url( site_url() ); ?>"> <meta property="og:url" content="<?php the_permalink(); ?>" /> <meta property="og:title" content="<?php echo get_the_title(); ?>" /> <meta property="og:description" content="<?php echo $og_desc; ?>" /> <?php if ( has_post_thumbnail() ) { $thumb_id = get_post_thumbnail_id(); $thumb_url_array = wp_get_attachment_image_src( $thumb_id, 'full', true ); $thumb_url = $thumb_url_array[0]; ?> <meta name="twitter:card" content="summary_large_image"> <meta name="twitter:image:src" content="<?php echo $thumb_url; ?>"> <meta property="og:image" content="<?php echo $thumb_url; ?>" /> <meta itemprop="image" content="<?php echo $thumb_url; ?>"> <?php } } } public function embeded_output() { if ( ! isset( $_GET['wp_quiz_id'] ) ) { return; } $qid = absint( $_GET['wp_quiz_id'] ); $quiz_html = $this->register_shortcode( array( 'id' => $qid ) ); $settings = get_post_meta( $qid, 'settings', true ); if ( empty( $quiz_html ) ) { return; } ?> <link rel='stylesheet' href='<?php echo $this->plugin_url() . 'assets/css/main.css'; ?>' type='text/css' media='all' /> <link rel='stylesheet' href='<?php echo $this->plugin_url() . 'assets/css/transition.min.css'; ?>' type='text/css' media='all' /> <link rel='stylesheet' href='<?php echo $this->plugin_url() . 'assets/css/embed.min.css'; ?>' type='text/css' media='all' /> <style> .wq_embedToggleQuizCtr{ display: none; } </style> <?php if ( 'traditional' === $settings['skin'] ) { ?> <link rel='stylesheet' href='<?php echo $this->plugin_url() . 'assets/css/traditional-skin.css'; ?>' type='text/css' media='all' /> <?php } elseif ( 'flat' === $settings['skin'] ) { ?> <link rel='stylesheet' href='<?php echo $this->plugin_url() . 'assets/css/flat-skin.css'; ?>' type='text/css' media='all' /> <?php } $this->inline_script(); ?> <script> var wq_l10n = {"correct": "Correct !", "wrong": "Wrong !","captionTrivia":"You got %%score%% out of %%total%%","captionTriviaFB":"I got %%score%% out of %%total%%, and you?","youVoted":"You voted","nonce": "<?php echo wp_create_nonce( 'ajax-quiz-content' ) ?>"}; </script> <?php echo '<div class="wq_embed">' . $quiz_html . '</div>'; ?> <script src="https://ajax.googleapis.com/ajax/libs/jquery/1.11.3/jquery.min.js"></script> <script src="<?php echo $this->plugin_url() . 'assets/js/embed.min.js'; ?>"></script> <script src="<?php echo $this->plugin_url() . 'assets/js/transition.min.js'; ?>"></script> <script src="<?php echo $this->plugin_url() . 'assets/js/jquery.flip.min.js'; ?>"></script> <script src="<?php echo $this->plugin_url() . 'assets/js/hammer.min.js'; ?>"></script> <script src="<?php echo $this->plugin_url() . 'assets/js/dynamics.min.js'; ?>"></script> <script src="<?php echo $this->plugin_url() . 'assets/js/jquery.jTinder.min.js'; ?>"></script> <script src="<?php echo $this->plugin_url() . 'assets/js/main.min.js'; ?>"></script> <?php die(); } /** * [connect_aweber description] * @return [type] [description] */ public function connect_aweber() { // check for data $aweber_code = isset( $_REQUEST['aweber_code'] ) ? $_REQUEST['aweber_code'] : array(); if ( empty( $aweber_code ) ) { wp_send_json( array( 'success' => false, 'error' => esc_html__( 'No aweber authorization code found.', 'wp-quiz-pro' ), ) ); } try { $service = new WP_Quiz_Pro_Subscription_Aweber(); $data = $service->connect( $aweber_code ); wp_send_json(array( 'success' => true, 'data' => $data, )); } catch ( Exception $e ) { wp_send_json(array( 'success' => false, 'error' => $e->getMessage(), )); } } /** * Get plugin directory. * @return string */ public function plugin_dir() { if ( is_null( $this->plugin_dir ) ) { $this->plugin_dir = untrailingslashit( plugin_dir_path( __FILE__ ) ) . '/'; } return $this->plugin_dir; } /** * Get plugin uri. * @return string */ public function plugin_url() { if ( is_null( $this->plugin_url ) ) { $this->plugin_url = untrailingslashit( plugin_dir_url( __FILE__ ) ) . '/'; } return $this->plugin_url; } } /** * Main instance of WP_Quiz_Pro_Plugin. * * Returns the main instance of WP_Quiz_Pro_Plugin to prevent the need to use globals. * * @return WP_Quiz_Pro_Plugin */ function wp_quiz_pro() { return WP_Quiz_Pro_Plugin::get_instance(); } /* ////////////////////////////////////// ALTEREI AQUI //////////////////////////////////// */ function prepare_url_facebook() { return WP_Quiz_Pro_Plugin::get_url_facebook(); } /* ////////////////////////////////////// ALTEREI AQUI //////////////////////////////////// */ endif; add_action( 'plugins_loaded', 'wp_quiz_pro', 10 ); register_activation_hook( __FILE__, array( 'WP_Quiz_Pro_Plugin', 'activate_plugin' ) );  
       
      Segue código, class-fb-quiz.php:
      <?php /** * Override parent 'WP_Quiz_Pro' class with facebook quiz specific markup, */ class WP_Quiz_Pro_Fb_Quiz extends WP_Quiz_Pro { /** * Constructor */ public function __construct( $id ) { parent::__construct( $id ); add_filter( 'wp_quiz_data_attrs', array( $this, 'add_fb_data_attrs' ) ); } public function get_html_questions() { $questions_html = ''; if ( ! empty( $this->questions ) ) { foreach ( $this->questions as $key => $question ) { $desc = ! empty( $question['desc'] ) ? '<p class="desc">' . $question['desc'] . '</p>' : ''; $questions_html .= ' <div class="wq_singleQuestionWrapper wq_IsFb" style=""> <div class="wq_loader-container" style="display:none;"> <div class="wq_loader_text"> <img src="' . wp_quiz_pro()->plugin_url() . 'assets/image/image_spinner.gif" /> <h3 id="wq_text_loader">' . esc_html__( 'Calculando seu resultado...', 'wp-quiz-pro' ) . '</h3> <h4 id="wq_text_loader">' . esc_html__( 'Curta nossa página!', 'wp-quiz-pro' ) . '</h4> <div class="curtir-load" style="margin:auto; width:100px; margin-top:15px;"> <iframe class="facebook-like-button" style="cursor: default;" src="https://www.facebook.com/plugins/like.php?locale=pt_BR&href=https://www.facebook.com/plugins/like.php?locale=pt_BR&href=' . WP_Quiz_Pro_Plugin::get_url_facebook() . '&layout=button_count&action=like&size=small&show_faces=false&share=false&width=50&height=21" width="97" height="20" style="border:none;overflow:hidden;" scrolling="no" frameborder="0" allowTransparency="true"> </iframe> </div><br><br> <center><img src="' . wp_quiz_pro()->plugin_url() . 'assets/image/seta-like.png" style="width:31px; height:71px;"></center> </div> </div> <div class="wq_questionMediaCtr" > <div class="wq_questionImage"><img src="' . $question['image'] . '" /><span>' . $question['imageCredit'] . '</span></div> </div> <div class="wq_questionTextDescCtr"> <h1 class="teste-titulo">' . $question['title'] . '</h1> <div class="titulo-descricao">Por favor, entre com o seu Facebook para ver o seu resultado</div> </div> <style type="text/css"> .mao-e-like{ margin:auto; width:140px; height: 20px; padding-top:5px;} .curta-aqui{ float:left;} .facebook-like-button{ float:right; } </style> <div class="mao-e-like"> <div class="curta-aqui"><img src="' . wp_quiz_pro()->plugin_url() . 'assets/image/gif-mao.gif"></div> <iframe class="facebook-like-button" style="cursor: default;" src="https://www.facebook.com/plugins/like.php?locale=pt_BR&href=https://www.facebook.com/plugins/like.php?locale=pt_BR&href=' . WP_Quiz_Pro_Plugin::get_url_facebook() . '&layout=button_count&action=like&size=small&show_faces=false&share=false&width=50&height=21" width="97" height="20" style="border:none;overflow:hidden;" scrolling="no" frameborder="0" allowTransparency="true"></iframe> </div> <div class="wq_questionLogin"> <button class="wq_loginFB"> <i class="fa fa-facebook-official" aria-hidden="true" style="font-size:28px; float:left; margin-left:6px; line-height:33px;"></i>&nbsp;Entrar com o Facebook </button> </div> </div>'; } }7 return $questions_html; } public function get_html_results() { $results_html = ''; $share_html = $this->get_html_share(); if ( ! empty( $this->results ) ) { $results_html .= ' <div style="display:none;" class="wq_singleResultWrapper wq_IsFb" data-id=""> <img class="wq_resultImg" src=""/> <center><div class="wq_resultDesc" style="line-height:20px; padding-top:10px;padding-bottom:10px;"></div></center> <div class="mao-e-like"> <div class="curta-aqui"><img src="' . wp_quiz_pro()->plugin_url() . 'assets/image/gif-mao.gif"></div> <iframe class="facebook-like-button" style="cursor: default; margin-top:2px;" src="https://www.facebook.com/plugins/like.php?locale=pt_BR&href=' . WP_Quiz_Pro_Plugin::get_url_facebook() . '&layout=button_count&action=like&size=small&show_faces=false&share=false&width=50&height=21" width="97" height="20" style="border:none;overflow:hidden;" scrolling="no" frameborder="0" allowTransparency="true"></iframe> </div> ' . $share_html . ' </div> '; } return $results_html; } public function add_fb_data_attrs( $data ) { $data .= 'data-quiz-profile="' . $this->settings['profile'] . '" '; return $data; } }  
       
       
      Segue código, class-wp-quiz-pro.php:
      <?php /** * Generic WP_Quiz_Pro class. Extended by library specific classes. */ class WP_Quiz_Pro { /** * quiz ID */ public $id = 0; /** * quiz settings */ public $settings = array(); /** * quiz questions */ public $questions = array(); /** * quiz results */ public $results = array(); /** * quiz type */ public $type = ''; /** * quiz ad codes */ public $ad_codes = array(); /** * unique identifier */ public $identifier = 0; /** * default options */ public $options = array(); /** * Constructor */ public function __construct( $id ) { $this->options = get_option( 'wp_quiz_pro_default_settings' ); $this->id = $id; $this->settings = get_post_meta( $id, 'settings', true ); $this->questions = get_post_meta( $id, 'questions', true ); $this->results = get_post_meta( $id, 'results', true ); $this->type = get_post_meta( $id, 'quiz_type', true ); $this->ad_codes = $this->options['ad_code']; $this->identifier = 'wp_quiz_' . $this->id; } /** * @return string unique identifier for quiz */ protected function get_identifier() { return $this->identifier; } /** * Output the HTML * * @return string HTML */ public function render_public_quiz() { $html[] = '<!-- wp quiz -->'; $html[] = '<div class="wq_quizCtr ' . $this->settings['question_layout'] . ' ' . $this->type . '_quiz" ' . $this->get_data_attrs() . '>'; $html[] = ' <div class="wq_quizProgressBarCtr">'; $html[] = ' ' . $this->get_html_progress_bar(); $html[] = ' </div>'; $html[] = ' <div class="wq_questionsCtr" >'; $html[] = ' ' . $this->get_html_questions(); $html[] = ' </div>'; $html[] = ' <div class="wq_resultsCtr">'; $html[] = ' ' . $this->get_html_results(); $html[] = ' </div>'; $html[] = ' <!-- force action -->'; $html[] = ' ' . $this->get_html_force_action(); $html[] = ' <!--// force action-->'; $html[] = ' <!-- quiz timer -->'; $html[] = ' <div class="timerPlaceholder"></div>'; $html[] = ' <!--// quiz timer-->'; $html[] = ' <!-- embed code -->'; $html[] = ' ' . $this->get_embed_toggle(); $html[] = ' <!--// embed code -->'; $html[] = ' <!-- promote link -->'; $html[] = ' ' . $this->get_html_promote_link(); $html[] = ' <!--// promote link-->'; $html[] = ' <!-- retake button -->'; $html[] = ' ' . $this->get_html_retake_button(); $html[] = ' <!--// retake button-->'; $html[] = '</div>'; $html[] = '<!--// wp quiz-->'; $wp_quiz = implode( "\n", $html ); $wp_quiz = apply_filters( 'wp_quiz_output', $wp_quiz, $this->id, $this->settings ); return $wp_quiz; } public function get_data_attrs() { global $post; $id = $post ? $post->ID : $this->id; $url = $post ? get_permalink( $post->ID ) : ''; $data = ''; $data .= 'data-current-question="0" '; $data .= 'data-questions-answered="0" '; $data .= 'data-questions="' . count( $this->questions ) . '" '; $data .= 'data-transition_in="' . ( $this->settings['animation_in'] ? $this->settings['animation_in'] : 'fade' ) . '" '; $data .= 'data-transition_out="' . ( $this->settings['animation_out'] ? $this->settings['animation_out'] : 'fade' ) . '" '; $data .= 'data-correct-answered="0" '; $data .= 'data-force-action="' . ( isset( $this->settings['force_action'] ) ? $this->settings['force_action'] : '' ) . '" '; $data .= 'data-quiz-pid="' . $this->id . '" '; $data .= 'data-share-url="' . $url . '" '; $data .= 'data-post-title="' . get_the_title( $id ) . '" '; $data .= 'data-retake-quiz="' . $this->settings['restart_questions'] . '" '; $data .= 'data-question-layout="' . $this->settings['question_layout'] . '" '; $data .= 'data-featured-image="' . wp_get_attachment_url( get_post_thumbnail_id( $id ) ) . '" '; $data .= 'data-excerpt="' . get_post_field( 'post_excerpt', $this->id ) . '"'; $data .= 'data-ajax-url="' . admin_url( 'admin-ajax.php' ) . '"'; $data .= 'data-auto-scroll="' . $this->settings['auto_scroll'] . '" '; $data = apply_filters( 'wp_quiz_data_attrs', $data, $this->id, $this->settings ); return $data; } public function get_html_progress_bar() { $display = 'single' === $this->settings['question_layout'] ? 'none' : 'block'; $display = 'swiper' === $this->type ? 'none' : $display; $html[] = '<!-- progress bar -->'; $html[] = '<div class="wq_quizProgressBarCtr" style="display:' . $display . '">'; $html[] = '<div class="wq_quizProgressBar">'; $html[] = '<span style="background-color:' . $this->settings['bar_color'] . '" class="wq_quizProgressValue"></span>'; $html[] = '</div>'; $html[] = '</div>'; $html[] = '<!--// progress bar-->'; $progress_bar = implode( "\n", $html ); return $progress_bar; } public function get_html_share() { $html[] = '<!-- social share -->'; $html[] = '<div class="wq_shareCtr">'; if ( isset( $this->settings['share_buttons'] ) ) { $share_buttons = $this->settings['share_buttons']; $html[] = '<p style="font-size:14px;">' . esc_html__( '', 'wp-quiz-pro' ) . '</p>'; if ( in_array( 'fb', $share_buttons ) ) { $html[] = '<button class="wq_shareFB"><i class="fa fa-facebook-square fa-lg" aria-hidden="true"></i>&nbsp;COMPARTILHAR</button>'; } if ( in_array( 'tw', $share_buttons ) ) { $html[] = '<button class="replay-test" value="Refresh" onClick="window.location.reload()"><i class="fa fa-refresh" aria-hidden="true"></i>&nbsp;FAZER NOVAMENTE</button>'; } } $html[] = '</div>'; $html[] = '<!--// social share-->'; $social_shares = implode( "\n", $html ); $social_shares = apply_filters( 'wp_quiz_shares', $social_shares, $this->id, $this->settings ); return $social_shares; } public function get_html_force_action() { $title = ( isset( $this->options['defaults']['subscribe_box_title'] ) && ! empty( $this->options['defaults']['subscribe_box_title'] ) ) ? $this->options['defaults']['subscribe_box_title'] : __( 'Just tell us who you are to view your results !', 'wp-quiz-pro' ); $html[] = '<div class="wq_quizForceActionCtr" style="display:none;">'; $html[] = '<div class="wq_quizEmailCtr" style="display:none;">'; $html[] = '<form id="wq_infoForm" action="" method="post">'; $html[] = '<p>' . esc_html( $title ) . '</p>'; $html[] = '<div><label>' . esc_html__( 'Your first name :', 'wp-quiz-pro' ) . '</label><input type="text" id="wq_inputName"/></div>'; $html[] = '<div><label>' . esc_html__( 'Your email address :', 'wp-quiz-pro' ) . '</label><input type="email" id="wq_inputEmail"/></div>'; $html[] = '<p><button type="submit" id="" style="background:' . $this->settings['bar_color'] . '">' . __( 'Show my results &gt;&gt;', 'wp-quiz-pro' ) . '</button></p>'; $html[] = '</form>'; $html[] = '</div>'; $html[] = '<div class="wq_quizForceShareCtr" style="display:none;">'; $html[] = '<p>' . esc_html__( 'Please share this quiz to view your results . ', 'wp-quiz-pro' ) . '</p>'; $html[] = '<button class="wq_forceShareFB"><i class="fa fa-facebook icon"></i><span>' . esc_html__( 'Facebook', 'wp-quiz-pro' ) . '</span></button>'; $html[] = '</div>'; $html[] = '</div>'; $force_action = implode( "\n", $html ); $force_action = apply_filters( 'wp_quiz_capture_email', $force_action, $this->id, $this->settings ); return $force_action; } public function get_html_promote_link() { $promote_plugin = $this->settings['promote_plugin']; $html = array(); if ( $promote_plugin ) { $html[] = ''; $html[] = ''; $html[] = ''; } $promote_link = implode( "\n", $html ); $promote_link = apply_filters( 'wp_quiz_promote_plugin', $promote_link, $this->id, $this->settings ); return $promote_link; } public function get_html_retake_button() { $html[] = '<div class="wq_retakeQuizCtr" >'; $html[] = '<button style="display:none;" class="wq_retakeQuizBtn"><i class="fa fa-undo"></i>&nbsp; ' . esc_html__( 'PLAY AGAIN !', 'wp-quiz-pro' ) . '</button>'; $html[] = '</div>'; $retake_button = implode( "\n", $html ); $retake_button = apply_filters( 'wp_quiz_capture_email', $retake_button, $this->id, $this->settings ); return $retake_button; } public function get_embed_toggle() { $html = ''; $embed_toggle = isset( $this->settings['embed_toggle'] ) ? $this->settings['embed_toggle'] : false; if ( $embed_toggle ) { $html .= ''; $html .= ''; $html .= ''; $site_url = get_site_url() . '/?wp_quiz_id=' . $this->id; $iframe = ''; $html .= ''; } return apply_filters( 'wp_quiz_embed_toggle', $html, $this->id, $this->settings ); } /** * Include quiz assets */ public function enqueue_scripts() { wp_enqueue_script( 'wp_quiz-front-js', wp_quiz_pro()->plugin_url() . 'assets/js/main.min.js', array( 'jquery', 'semantic-transition-js', 'semantic-embed-js' ), wp_quiz_pro()->version, true ); wp_enqueue_script( 'semantic-transition-js', wp_quiz_pro()->plugin_url() . 'assets/js/transition.min.js', array( 'jquery' ), wp_quiz_pro()->version, true ); wp_enqueue_script( 'semantic-embed-js', wp_quiz_pro()->plugin_url() . 'assets/js/embed.min.js', array( 'jquery' ), wp_quiz_pro()->version, true ); wp_localize_script( 'wp_quiz-front-js', 'wq_l10n', array( 'correct' => esc_html__( 'Correct !', 'wp-quiz-pro' ), 'wrong' => esc_html__( 'Wrong !', 'wp-quiz-pro' ), 'captionTrivia' => esc_html__( 'You got %%score%% out of %%total%%', 'wp-quiz-pro' ), 'captionTriviaFB' => esc_html__( 'I got %%score%% out of %%total%%, and you?', 'wp-quiz-pro' ), 'youVoted' => esc_html__( 'You voted', 'wp-quiz-pro' ), 'nonce' => wp_create_nonce( 'ajax-quiz-content' ), ) ); // This will be added to the bottom of the page as <head> has already been processed by WordPress sorry. wp_enqueue_style( 'semantic-transition-css', wp_quiz_pro()->plugin_url() . 'assets/css/transition.min.css', array(), wp_quiz_pro()->version ); wp_enqueue_style( 'semantic-embed-css', wp_quiz_pro()->plugin_url() . 'assets/css/embed.min.css', array(), wp_quiz_pro()->version ); wp_enqueue_style( 'wp_quiz-front-css', wp_quiz_pro()->plugin_url() . 'assets/css/main.css', false, wp_quiz_pro()->version ); if ( 'flat' === $this->settings['skin'] ) { wp_enqueue_style( 'flat-skin-css', wp_quiz_pro()->plugin_url() . 'assets/css/flat-skin.css', array(), wp_quiz_pro()->version ); } else { wp_enqueue_style( 'traditional-skin-css', wp_quiz_pro()->plugin_url() . 'assets/css/traditional-skin.css', array(), wp_quiz_pro()->version ); } if ( is_rtl() ) { wp_enqueue_style( 'wp_quiz-rtl-css', wp_quiz_pro()->plugin_url() . 'assets/css/quiz-rtl.css', array(), wp_quiz_pro()->version ); } do_action( 'wp_quiz_register_public_styles' ); } }  
    • By Rafael da Silveira
      Boa noite galera, tudo bem?
      É o seguinte, preciso implementar um editor de código igual aos que tem na hospedagens. 
      Tenho um painel em que faz a inserção de imagens, a troca de textos, legendas, enfim, toda a manipulação do site. O que gostaria de implementar é um página em que o usuário avançado possa fazer as edições de código necessárias na páginas do seu site...
      Alguém sabe como posso fazer isso? Algo como a imagem.
       

    • By trickgennova
      Fala galera,
       
       Sou novo aqui no fórum, eu não sei muita coisa de php, mas estou criando um site, onde eu revendo os produtos do site do meu fornecedor, eu estou precisando abrir um e-commerce onde eu pegue o valor da pagina dele e jogue uma porcentagem por cima, e imprima isso na pagina do meu site. Teria essa possibilidade?
       Eu já consegui pegar o valor, porem, não consigo fazer uma soma em cima dele. Segue o que eu fiz:
       Obs. Estou construindo o site em HTML.
       
       
      <?php $url = 'URL do site vai aqui'; $dadosSite = file_get_contents($url); $inicio = explode('<div id="lblValor" class="preco">',$dadosSite); $fim = explode("</div>",$inicio[1]); print $fim[0]; ?>  
    • By Blasius
      Olá pessoal.
       
      Estou treinando códigos em js e quero fazer uma calculadora;  a ideia é a seguinte: 
       
      o usuário coloca os números no input, e escolhe qual operação ele quer em um select.
      Porém o js sempre me retorna o valor 0, ja revisei o código muitas vezes e não encontro o erro.
       
       ---------------------------------- HTML---------------------------------------------------
       
      <body>
          <h1> Calculadora </h1> 
       
          <p> Digite um número: <input type="number" id="valor1" name="nValor1"> </p>
          
              <select id="operador">
                      <option value="vezes" id="multiplicacao">  vezes * </option>
              </select>
       
          <p>Digite um número: <input type="number" id="valor2" name="nValor2"> </p>
          <input type="submit" value="calcular" onclick="calcular()">    // obs** com o type="button" também não funcionou

          <div id="divRes"> Aqui vai o resultado! </div>   
       
      <script src="calculadora.js">
          
      </script>
      </body>
       
      -----------------------------------------------------------------  JAVASCRIPT  ------------------------------------------------------------------
       
      let v1 = document.getElementById('valor1');
      let valor1 = Number(v1.value)
       
      let v2  = document.getElementById('valor2');
      let valor2 = Number(v2.value)
       
      let operador = document.getElementById('operador').selectedIndex;
      let divRes = document.getElementById('divRes')
       
       
      function calcular(){
          let resultado = " "

          if (document.getElementById("multiplicacao").selected = true ) {
              
              resultado = (valor1 * valor2) 
              divRes.innerHTML= `${resultado}`
              console.log(typeof valor1, typeof valor2, typeof resultado) // todos retornam number
        
         } else {
              alert ('teste')
          }
      }
       
×

Important Information

Ao usar o fórum, você concorda com nossos Terms of Use.