* * @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 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") )); // 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->aviso_legal(); }); add_shortcode('argpd_politica-cookies', function(){ return $this->politica_cookies(); }); add_shortcode('argpd_politica-privacidad', function(){ return $this->politica_privacidad(); }); add_shortcode('argpd_consentimiento', function(){ return $this->consentimiento_view(); }); add_shortcode('argpd_deber_de_informar', function(){ return $this->deber_de_informar_view(); }); // filter legal pages add_filter('the_content', function($content){ $page_id= get_the_ID(); $settings= $this->plugin->argpd_settings->get_settings(); switch (get_the_ID()){ case $settings['avisolegalID']: $content= $this->aviso_legal().$content; break; case $settings['privacidadID']: $content= $this->politica_privacidad().$content; break; case $settings['cookiesID']: $content= $this->politica_cookies().$content; break; default: break; } return $content; }); } /** * Create Legal Pages * * @since 0.0.0 */ public function create_all(){ $id= $this->create_page("Aviso Legal"); ($id != 0) && $this->plugin->argpd_settings->update_setting('avisolegalID', $id); $id= $this->create_page("Política de Privacidad"); ($id != 0) && $this->plugin->argpd_settings->update_setting('privacidadID', $id); $id= $this->create_page("Política de Cookies"); ($id != 0) && $this->plugin->argpd_settings->update_setting('cookiesID', $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; } /** * Render "Aviso Legal" Page * * @since 0.0.0 * @return string */ public function aviso_legal(){ $settings= $this->plugin->argpd_settings->get_settings(); return $this->compiler->render('aviso-legal', $settings ); } /** * Render Disclaimer Page * * @since 0.0.0 * @return string */ public function disclaimer(){ return $this->compiler->render('disclaimer', null ); } /** * Render "Politica de cookies" Page * * @since 0.0.0 * @return string */ public function politica_cookies(){ $settings= $this->plugin->argpd_settings->get_settings(); return $this->compiler->render('politica-cookies', $settings ); } /** * Render "Politica de privacidad" Page * * @since 0.0.0 * @return string */ public function politica_privacidad(){ $settings= $this->plugin->argpd_settings->get_settings(); return $this->compiler->render('politica-privacidad', $settings ); } /** * Render "consentimiento" View * * @since 0.0.0 * @return string */ public function consentimiento_view(){ $settings= $this->plugin->argpd_settings->get_settings(); return $this->compiler->render('consentimiento', $settings ); } /** * Render "Deber de informar" View * * @since 0.0.0 * @return string */ public function deber_de_informar_view(){ $settings= $this->plugin->argpd_settings->get_settings(); return $this->compiler->render('deber-de-informar', $settings ); } /** * Render Help Page * * @since 0.0.0 * @return string */ public function ayuda_view(){ $settings= array( 'url' => $this->plugin->url, ); return $this->compiler->render('ayuda', $settings ); } /** * Render cookies banner * * @since 0.0.0 * @return string */ public function cookiesbanner_view(){ $settings= $this->plugin->argpd_settings->get_settings(); return $this->compiler->render('cookies-banner', $settings ); } /** * Render footer links * * @since 1.0.0 * @return string */ public function footer_links_view(){ $settings= $this->plugin->argpd_settings->get_settings(); return $this->compiler->render('pie-de-pagina-legal', $settings ); } }