<?php
/*
Plugin Name: Storie Plus Plugin
Plugin URI: https://rede.servidortrader.com/
Description: Compartilhe Seus WebStories com sua comunidade e aumente seu tráfego. Juntos somos mais fortes!<br> Autores: <a href="https://www.izalmo.com/">Izalmo Silva</a>, <a href="https://www.ezequielsas.com/">Ezequiel Sas</a>
Version: 6.3
Requires PHP: 7.4
Author: Izalmo Silva
Author URI: https://www.izalmo.com/
*/
// Exit if accessed directly
if ( ! defined( 'ABSPATH' ) ) {
exit;
}
function is_image_link($link) {
$image_extensions = ['.jpg', '.png', '.jpeg', '.bmp', '.gif'];
foreach ($image_extensions as $ext) {
if (mb_strpos($link, $ext) !== false) {
return true;
}
}
return false;
}
// Function to curl html from a url and save it as a ws-share-plugin post
function create_wssharestory($id) {
global $wpdb;
$versao = 60;
$post = get_post($id);
// Gets post content
$html = $post->post_content;
$htmlfiltered = $post->post_content_filtered;
// Gets post meta data
$postmeta = get_post_meta($id, '', true);
// Gets post title
$title = $post->post_title;
$token = get_option('wssharestory_token');
$publicado = get_option('wssharestory_publicado');
// set url to be called
$url = "https://dados.servidortrader.com/guardawebstories.php";
$link = get_permalink($id);
echo '<body style="background-color: #1C1C1C;">';
echo '<div style="background-color: black; text-align: center; padding: 22px; position: fixed; top: 22%; left: 22%; bottom: 10%; right: 22%; margin: auto; border-radius: 10px;">';
echo '<h2 style="color: white;">ENVIANDO WEB STORIES...</h2>';
$resphtml = ws_send_html($url,$token,$link,$html,$htmlfiltered,$title,$versao);
if ($resphtml[1] != 200) {
return [$resphtml[0], $resphtml[1]];
}
else {
add_post_meta($id,'web_stories_enviado','S');
echo '<h2 style="color: white;">WEB STORIES ENVIADO COM SUCESSO!</h2>';
echo '<h2 style="color: white;">Você acabou de receber créditos por compartilhar! <br> Vá em Baixar Stories para baixar webstories do nosso sistema.</h2>';
$msg = '<br> <button onclick="location.href=\''. admin_url('edit.php?post_type=ws-share-plugin&page=wssharestory-download') .'\'" style="display: inline-block; padding: 12px 24px; font-size: 16px; font-weight: bold; text-decoration: none; color: #fff; background-color: #1c1c1c; border: none; border-radius: 4px;" aria-label="Voltar para Web Stories">BAIXAR STORIES</button>';
show_message($msg);
echo '</div></body>';
return [$resphtml[0], $resphtml[1]];
}
}
// Fucntion to curl html from a url using wordpress functions
function ws_send_html($url,$token,$link,$html,$htmlfiltered,$title,$versao){
$response = wp_remote_post( $url , array(
'timeout' => 15,
'method' => 'POST',
'body' => array (
'token' => $token,
'link' => $link,
'html' => $html,
'htmlfiltered' => $htmlfiltered,
'titulo' => $title,
'versao'=>$versao
)
)
);
$resposta = wp_remote_retrieve_body($response);
$resposta = explode('#',$resposta);
if ($resposta[0] == 'N') {
return [$resposta[1],406];
} else {
return [$resposta[1],200];
}
}
function ProcurarImagensNoHTML( $html ) {
// $html = file_get_contents( $link );
$stack = array();
$dom = new DOMDocument();
$dom->loadHTML($html);
$tagsimg = $dom->getElementsByTagName('amp-img');
foreach ($tagsimg as $key=>$value) {
$link = $value->getAttribute('src');
if (is_image_link($link)) {
array_push($stack,$link);
}
$link2 = $value->getAttribute('srcset');
// var_dump($link2);
$linkarray = explode(',',$link2);
if (count($linkarray) > 0) {
foreach($linkarray as $iniciallink) {
//echo 'srcSet: '.$iniciallink.'<br>';
$linkpartes = explode(' ',$iniciallink);
if (count($linkpartes) > 0) {
$link = $linkpartes[0];
} else {
$link = $iniciallink;
}
if (is_image_link($link)) {
// echo 'srcSet: '.$link.'<br>';
array_push($stack,$link);
}
}
}
}
$tagsimg = $dom->getElementsByTagName('link');
foreach ($tagsimg as $key=>$value) {
$link = $value->getAttribute('href');
if (is_image_link($link)) {
#echo $key.' - '.$link.'<br>';
$achou = false;
foreach($stack as $lkexiste) {
if ($lkexiste == $link) {
$achou = true;
}
}
if ($achou == false) {
//$novoar = array($link);
array_push($stack,$link);
}
}
}
$tagsimg = $dom->getElementsByTagName('amp-story');
foreach ($tagsimg as $key=>$value) {
$link = $value->getAttribute('publisher-logo-src');
if (is_image_link($link)) {
#echo $key.' - '.$link.'<br>';
$achou = false;
foreach($stack as $lkexiste) {
if ($lkexiste == $link) {
$achou = true;
}
}
if ($achou == false) {
// $novoar = array($link);
array_push($stack,$link);
}
}
$link = $value->getAttribute('poster-portrait-src');
if (is_image_link($link)) {
#echo $key.' - '.$link.'<br>';
$achou = false;
foreach($stack as $lkexiste) {
if ($lkexiste == $link) {
$achou = true;
}
}
if ($achou == false) {
// $novoar = array($link);
array_push($stack,$link);
}
}
}
return $stack;
}
function uploadRemoteImageAndAttach($image_url,$linksexistentes){ //, $parent_id){
$image = $image_url;
// echo '<br>uploadRemoteImageAndAttach: '. $image.'<br>';
$get = wp_remote_get( $image );
$type = wp_remote_retrieve_header( $get, 'content-type' );
if (!$type)
return [false,false];
$nomebase = basename( $image );
$achou = false;
$mirror = '';
$linksexistentes2 = explode('||',$linksexistentes);
foreach ($linksexistentes2 as $seuslinks) {
// echo $seuslinks.'<br>';
// echo $nomebase.'<br>';
if (str_contains($seuslinks, $nomebase)) {
$achou = true;
$mirror = $seuslinks;
}
}
if ($achou == false ) {
// echo 'passo 1 Sou eu<br>';
$mirror = wp_upload_bits($nomebase , '', wp_remote_retrieve_body( $get ) );
return [$mirror['url'],$mirror['url']];
} else {
// echo 'Achei<br>';
return [$mirror,''];
}
}
function lerjsoninterno2($value,$linksexistentes) {
foreach($value as $key2=> $val2) {
if (is_array($val2)) {
$value[$key2] = lerjsoninterno2($val2,$linksexistentes);
} else {
$link = $val2;
if (mb_strpos($link, 'wp-content') !== false) {
if (is_image_link($link)) {
$superlink = uploadRemoteImageAndAttach($link,$linksexistentes);
$novolink = $superlink[0];
if ($superlink[1] <> '') {
$linksexistentes = $linksexistentes.'||'.$superlink[1];
if ($novolink != false) {
$value[$key2] = $novolink;
}
}
}
}
}
}
return [$value,$linksexistentes];
}
function procuraImagemNoJson($html) {
$json = json_decode($html,true);
$linksexistentes = '';
$json = lerjsoninterno2($json,$linksexistentes);
//return $json;
return json_encode($json);
}
// Add "Preview wssharestory to list of action on post list
add_filter( 'post_row_actions', 'wssharestory_preview', 10, 2 );
function wssharestory_preview( $actions, $post ) {
global $wpdb;
if ( 'web-story' != $post->post_type ) {
return $actions;
}
// Check if post is published
/* if ( 'publish' != $post->post_status ) {
return $actions;
}*/
// verifica se esse post foi recebido
$meuid = get_the_ID();
$results = $wpdb->get_results( $wpdb->prepare("SELECT post_id,meta_id,meta_key,meta_value FROM {$wpdb->prefix}postmeta WHERE meta_key in ('web_stories_idcopiado','web_stories_copiado') and post_id = %d order by post_id asc", $meuid), OBJECT );
$metaid = 0;
$eparaavaliar = false;
$idvalidar = '-1';
$str = '';
foreach($results as $row) {
//if (($metaid == 0) and ($row->post_id == $meuid)) {
if ($row->post_id == $meuid) {
if ($row->meta_key == 'web_stories_copiado') {
$metaid = $row->post_id;
}
if ($row->meta_key == 'web_stories_idcopiado') {
$str = $str.$row->meta_key;
$partes = explode('#',$row->meta_value);
if (count($partes) < 2 ) {
$eparaavaliar = true;
$idvalidar = $row->meta_value;
}
}
}
}
if ( $metaid > 0 ) {
if ($eparaavaliar == true) {
//$actions['wssharestory_share'] = '<a href="https://dados.servidortrader.com/avaliar.php?id='.$idvalidar.'" target="_blank">Avaliar WS</a>';
$actions['wssharestory_share'] = 'WS RECEBIDO | <a href="' . admin_url( 'edit.php?post_type=ws-share-plugin&action=wsshareaval&id='.$meuid.'&idavaliacao=' . $idvalidar ) . '">' . __( 'Avaliar WS', 'wssharestory' ) .'</a>';
} else {
$actions['wssharestory_share'] = 'WS RECEBIDO';
}
} else { // verifica se esse post já foi enviado.
$results = $wpdb->get_results( "SELECT post_id,meta_id FROM {$wpdb->prefix}postmeta WHERE meta_key = 'web_stories_enviado' and post_id = ".$meuid." order by post_id asc", OBJECT );
$metaid = 0;
foreach($results as $row) {
if (($metaid == 0) and ($row->post_id == $meuid)) {
$metaid = $row->post_id;
}
}
if ($metaid > 0) {
$actions['wssharestory_share'] = 'WS COMPARTILHADO';
} else {// wssharestory generator
$actions['wssharestory_share'] = '<a href="' . admin_url( 'post-new.php?post_type=ws-share-plugin&id=' . get_the_ID() ) . '" target="_blank">' . __( 'Compartilhar Postagem', 'wssharestory' ) .'</a>';
}
}
return $actions;
}
// Function to create a new post type called ws-share-plugin
function create_share_post_type() {
register_post_type( 'ws-share-plugin',
array(
'labels' => array(
'name' => __( 'Stories Plus' ),
'singular_name' => __( 'wssharestory' )
),
'public' => true,
'has_archive' => true,
'rewrite' => array('slug' => 'wssharestory'),
'menu_icon' => 'dashicons-format-aside',
'supports' => array('title'),
'show_in_rest' => true,
'rest_base' => 'wssharestory',
'rest_controller_class' => 'WP_REST_Posts_Controller',
'exclude_from_search' => true
)
);
}
add_action( 'init', 'create_share_post_type' );// Flush permalink settings on plugin activation
function wssharestory_flush_rewrite_rules() {
update_option('rewrite_rules', '');
flush_rewrite_rules();
}
register_activation_hook( __FILE__, 'wssharestory_flush_rewrite_rules' );// Hide add new post to ws-share-plugin post type
add_action( 'admin_menu', 'share_hide_add_new_post_link' );
function share_hide_add_new_post_link() {
global $submenu;
unset($submenu['edit.php?post_type=ws-share-plugin'][5]);
unset($submenu['edit.php?post_type=ws-share-plugin'][10]);
}
add_action( 'admin_post_wpseaval_23456', 'wpseaval_23456_avalia',10,5 );
function wpseaval_23456_avalia() {
$idorigem = $_GET['idorigem'];
$iddestino = $_GET['iddestino'];
$avaliacao = $_GET['avaliacao'];
$melhoria = $_GET['melhoria'];
$link = get_permalink($idorigem);
?><body style="background:#f0f0f1">
<?php
echo '<H2>Conectando ao servidor do Storie Plus... </H2><br>';
echo '<H2>Enviando avaliação do Web Stories <br>'.$link.'</H2><br>';
$token = get_option('wssharestory_token');
$url = 'https://dados.servidortrader.com/avaliarstories.php';
$response = wp_remote_post( $url , array(
'timeout' => 15,
'method' => 'POST',
'body' => array (
'token' => $token,
'iddestino' => $iddestino,
'avaliacao' => $avaliacao,
'melhoria' => $melhoria
)
)
);
$resposta = wp_remote_retrieve_body($response);
$partes = explode('#',$resposta);
if ($partes[0] == 'S') {
echo '<H2>Armazenando no servidor do Storie Plus... </H2><br>';
update_post_meta( $idorigem, 'web_stories_idcopiado', $iddestino.'#S');
echo '<H2>AVALIAÇÃO ENVIADA COM SUCESSO! </H2> <br>';
}else {
echo '<H2>Problema ao Enviar Avaliação! </H2><br>';
echo '<H2>Motivo: '.$partes[1].' </H2><br>';
}
?>
<a href="edit.php?post_type=web-story">Voltar </a>
</body>
<?php
}