Current File : /home/resuelf/www/wp-content/plugins/adapta-rgpd/includes/class-pages.php |
<?php
if ( ! defined( 'ABSPATH' ) ) {
exit;
}
/**
* @package ARGPD
* @subpackage Pages
* @since 0.0.0
*
* @author César Maeso <[email protected]>
*
* @copyright (c) 2018, César Maeso (https://superadmin.es)
*/
/**
* Pages class.
*
* @since 0.0.0
*/
class ARGPD_Pages {
/**
* Parent plugin class.
*
* @var string
* @since 0.0.0
*/
protected $plugin = null;
/**
* Parent plugin class.
*
* @var class
* @since 0.0.0
*/
protected $compiler = null;
/**
* Constructor.
*
* @since 0.0.0
*
* @param string $plugin Main plugin object.
*/
public function __construct( $plugin ) {
// set parent plugin.
$this->plugin = $plugin;
// Init mustache.
if ( ! class_exists( 'Mustache_Autoloader' ) ) {
require_once dirname( __FILE__ ) . '/../lib/vendor/Mustache/Autoloader.php';
Mustache_autoloader::register();
}
// Init template engine.
$this->compiler = new Mustache_Engine(
array(
'loader' => new Mustache_Loader_FilesystemLoader( dirname( __FILE__ ) . '/../views' ),
'helpers' => [
'__' => function($text){
return esc_html__($text, 'argpd');
},
],
)
);
// initiate our hooks.
$this->hooks();
}
/**
* Initiate our hooks.
*
* @since 0.0.0
*/
public function hooks() {
// create shortcodes for main views.
add_shortcode(
'argpd_aviso-legal',
function() {
return $this->render_legal_notice_page(true);
}
);
add_shortcode(
'argpd_politica-cookies',
function() {
return $this->politica_cookies(true);
}
);
add_shortcode(
'argpd_politica-privacidad',
function() {
return $this->politica_privacidad(true);
}
);
add_shortcode(
'argpd_preferencias-cookies',
function() {
return $this->custom_cookies_page_render(true);
}
);
add_shortcode(
'argpd_consentimiento',
function() {
return $this->consentimiento_view();
}
);
add_shortcode(
'argpd_deber_de_informar',
function( $atts = [] ) {
$purpose = isset( $atts['finalidad'] ) ? $atts['finalidad'] : null;
$communication = isset( $atts['destinatarios'] ) ? $atts['destinatarios'] : null;
$legitimacy = isset( $atts['legitimacion'] ) ? $atts['legitimacion'] : null;
return $this->first_layer_privacy_view( $purpose, $communication, $legitimacy );
}
);
// filter legal pages.
add_filter(
'the_content',
function( $content ) {
$page_id = get_the_ID();
if ( 0 == $page_id ) {
return $content;
}
$settings = $this->plugin->argpd_settings->get_settings();
switch ( $page_id ) {
case $settings['avisolegalID']:
$content = $this->render_legal_notice_page() . $content;
break;
case $settings['privacidadID']:
$content = $this->politica_privacidad() . $content;
break;
case $settings['cookiesID']:
$content = $this->politica_cookies() . $content;
break;
case $settings['custom-cookies-page-id']:
$content = $this->custom_cookies_page_render() . $content;
break;
default:
break;
}
return $content;
}
);
}
/**
* Create Legal Pages
*
* @since 0.0.0
*/
public function create_all() {
$this->create_legal_page();
$this->create_privacy_page();
$this->create_cookies_page();
$this->create_custom_cookies_page();
}
/**
* Create legal page
*
* @since 1.0.1
*/
public function create_legal_page() {
$id = $this->create_page( 'Aviso Legal' );
( 0 != $id ) && $this->plugin->argpd_settings->update_setting( 'avisolegalID', $id );
return $id;
}
/**
* Create privacy page
*
* @since 1.0.1
*/
public function create_privacy_page() {
$id = $this->create_page( 'Política de Privacidad' );
( 0 != $id ) && $this->plugin->argpd_settings->update_setting( 'privacidadID', $id );
return $id;
}
/**
* Create cookies page
*
* @since 1.0.1
*/
public function create_cookies_page() {
$id = $this->create_page( 'Política de Cookies' );
( 0 != $id ) && $this->plugin->argpd_settings->update_setting( 'cookiesID', $id );
return $id;
}
/**
* Crear la página para personalizar cookies.
*
* @since 1.3
*/
public function create_custom_cookies_page() {
$id = $this->create_page( 'Personalizar Cookies' );
( 0 != $id ) && $this->plugin->argpd_settings->update_setting( 'custom-cookies-page-id', $id );
return $id;
}
/**
* Create Page by Name
*
* @param string $name page title.
*
* @return int the page_id if created else 0
*/
public function create_page( $name ) {
if ( ! get_page_by_title( $name ) ) {
$page = array(
'post_content' => '',
'post_title' => $name,
'post_status' => 'publish',
'post_parent' => 0,
'post_type' => 'page',
);
return wp_insert_post( $page );
}
return 0;
}
/**
* Echo "Aviso Legal" page
*
* @since 0.0.0
* @return string
*/
public function render_legal_notice_page($check_disabled=false) {
$settings = $this->plugin->argpd_settings->get_settings();
$settings['site-url'] = get_site_url();
if ( $check_disabled || ! $settings['avisolegal-disabled'] ) {
return $this->compiler->render( 'page-legal-notice', $settings );
}
}
/**
* Echo Disclaimer page
*
* @since 0.0.0
* @return string
*/
public function disclaimer() {
return $this->compiler->render( 'tab-disclaimer', null );
}
/**
* Echo "Politica de cookies" page
*
* @since 0.0.0
* @return string
*/
public function politica_cookies($check_disabled=false) {
$settings = $this->plugin->argpd_settings->get_settings();
if ( $check_disabled || ! $settings['cookies-disabled'] ) {
//$settings['cookies-html'] = nl2br ( esc_textarea( $settings[ 'lista-cookies'] ) );
$settings['cookies-html'] = nl2br ( $settings[ 'lista-cookies'] );
return $this->compiler->render( 'page-cookies-policy', $settings );
}
}
/**
* Echo "Politica de privacidad" page
*
* @since 0.0.0
* @return string
*/
public function politica_privacidad($check_disabled=false){
$settings = $this->plugin->argpd_settings->get_settings();
// controles utilizados en el template.
$settings['procedimientosderecogida-control'] = (
$settings['option-forms'] ||
$settings['option-comments'] ||
$settings['thirdparty-mailchimp'] ||
$settings['thirdparty-sendinblue'] ||
$settings['thirdparty-mailpoet'] ||
$settings['thirdparty-activecampaign'] ||
$settings['thirdparty-mailerlite'] );
if ( $check_disabled || ! $settings['privacidad-disabled'] ) {
return $this->compiler->render( 'page-privacy-policy', $settings );
}
}
/**
* Crea el contenido de la página de personalización de cookies.
*
* @since 1.3
* @return string
*/
public function custom_cookies_page_render($check_disabled=false) {
$settings = $this->plugin->argpd_settings->get_settings();
if (isset($_COOKIE["argpd_consentUUID"])) {
$consent_uuid = sanitize_text_field($_COOKIE["argpd_consentUUID"]);
$settings['uuid'] = $consent_uuid;
// NOT IMPLEMENTED YET. Request API stored consents.
}
if ( isset( $_COOKIE['hasConsents'] ) ) {
$has_consents = wp_kses_data( $_COOKIE['hasConsents'] );
$consents = explode( " ", $has_consents );
if ( in_array("ANLTCS", $consents) ){
$settings['consent-analytics'] = true;
}
if ( in_array("SCLS", $consents) ){
$settings['consent-social'] = true;
}
}
if ( $check_disabled || ! $settings['custom-cookies-page-disabled'] ) {
return $this->compiler->render( 'page-custom-cookies', $settings );
}
}
/**
* Echo "consentimiento" View
*
* @since 0.0.0
* @return string
*/
public function consentimiento_view() {
$settings = $this->plugin->argpd_settings->get_settings();
return $this->compiler->render( 'statement-consent-privacy', $settings );
}
/**
* Echo "Deber de informar" View
*
* @since 0.0.0
* @param string $purpose valor personalizado para el campo finalidad.
* @param string $communication valor personalizado para el campo destinatarios.
* @param string $legitimacy valor personalizado para el campo base legal de legitimación.
* @return string
*/
public function first_layer_privacy_view( $purpose = null, $communication = null, $legitimacy = null ) {
$settings = $this->plugin->argpd_settings->get_settings();
if ( isset( $purpose ) ) {
$settings['purpose'] = trim( sanitize_text_field( $purpose ) );
}
if ( isset( $communication ) ) {
$settings['communication'] = trim( sanitize_text_field( $communication ) );
}
if ( isset( $legitimacy ) ) {
$settings['legitimacy'] = trim( sanitize_text_field( $legitimacy ) );
}
return $this->compiler->render( 'statement-first-layer-privacy', $settings );
}
/**
* Render Help Page
*
* @since 0.0.0
* @return string
*/
public function help_tab_view() {
$settings = array(
'url' => $this->plugin->url,
);
return $this->compiler->render( 'tab-help', $settings );
}
/**
* Echo cookies banner
*
* @since 0.0.0
* @return string
*/
public function cookiesbanner_view() {
$settings = $this->plugin->argpd_settings->get_settings();
return $this->compiler->render( 'statement-cookie-consent', $settings );
}
/**
* Echo footer links
*
* @since 1.0.0
* @return string
*/
public function footer_links_view() {
$settings = $this->plugin->argpd_settings->get_settings();
return $this->compiler->render( 'statement-footer', $settings );
}
}