' . do_shortcode(self::parametro( 'comportamiento' )) . ''; $html = str_replace( '{boton_cerrar}', $boton, $html ); // echo $html; } /** * Añade el enlace de este plugin al panel de admin de wordpress */ static function enlaces_pagina_plugins( $enlaces, $archivo ) { // // Sólo añado enlaces a mi plugin // if( !self::$nombre_plugin ) self::$nombre_plugin = plugin_basename( CDP_COOKIES_DIR_RAIZ . '/plugin.php' ); if( $archivo != self::$nombre_plugin ) return $enlaces; // // Procedo // $enlace = array( sprintf( "%s", admin_url( 'tools.php?page=cdp_cookies' ), __( 'Configuración' ) ) ); return array_merge( $enlace, $enlaces ); } /** * */ static function cargar_archivos_front() { wp_enqueue_style( 'front-estilos', CDP_COOKIES_URL_HTML . 'front/estilos.css', false ); wp_enqueue_script( 'front-principal', CDP_COOKIES_URL_HTML . 'front/principal.js', array( 'jquery' ) ); wp_localize_script ( 'front-principal', 'cdp_cookies_info', array ( 'url_plugin' => CDP_COOKIES_URL_RAIZ . 'plugin.php', 'url_admin_ajax' => admin_url() . 'admin-ajax.php', 'comportamiento' => self::parametro( 'comportamiento' ), 'posicion' => self::parametro( 'posicion' ), 'layout' => self::parametro( 'layout' ) ) ); } /** * Funcion que crea las paginas automaticamente */ static function ajax_crear_paginas() { try { // self::comprobar_usuario_admin(); $pagina_web = cdp_cookies_input::post( 'pagina_web' ); $correo_electronico = cdp_cookies_input::post( 'correo_electronico' ); $razon_social = cdp_cookies_input::post( 'razon_social' ); $direccion = cdp_cookies_input::post( 'direccion' ); $nombre_comercial = cdp_cookies_input::post( 'nombre_comercial' ); $cif = cdp_cookies_input::post( 'cif' ); $telefono = cdp_cookies_input::post( 'telefono' ); // if( !wp_verify_nonce( cdp_cookies_input::post( 'nonce_crear_paginas' ), 'crear_paginas' ) ) throw new cdp_cookies_error_nonce(); // Pág. mas info $pag_info = new cdp_cookies_pagina(); $pag_info->titulo = 'Más información sobre las cookies'; $pag_info->html = file_get_contents( CDP_COOKIES_DIR_HTML . 'front/mas-informacion.html' ); if( !$pag_info->crear() ) throw new cdp_cookies_error( $pag_info->mensaje ); // importante! Guardo la url de la página info que será usada por la política self::parametro( 'enlace_mas_informacion', $pag_info->url ); // Pág. política $pag_pol = new cdp_cookies_pagina(); $pag_pol->titulo = 'Política de cookies'; $pag_pol->html = str_replace ( '{enlace_mas_informacion}', self::parametro( 'enlace_mas_informacion' ), file_get_contents( CDP_COOKIES_DIR_HTML . 'front/politica.html' ) ); if( !$pag_pol->crear() ) throw new cdp_cookies_error( $pag_pol->mensaje ); // Pág. politica privacidad $pag_pol_priv = new cdp_cookies_pagina(); $pag_pol_priv->titulo = 'Politica de Privacidad'; $pag_pol_priv->html = str_replace ( array( '{correo_electronico}', '{razon_social}', '{direccion}' ), array( $correo_electronico, $razon_social, $direccion ), file_get_contents( CDP_COOKIES_DIR_HTML . 'front/politica-privacidad.html' ) ); if( !$pag_pol_priv->crear() ) throw new cdp_cookies_error( $pag_pol_priv->mensaje ); // Pagina aviso legal $pag_aviso_legal = new cdp_cookies_pagina(); $pag_aviso_legal->titulo = 'Aviso Legal'; $pag_aviso_legal->html = str_replace( array( '{pagina_web}','{correo_electronico}', '{razon_social}', '{direccion}', '{nombre_comercial}', '{cif}', '{telefono}'), array( $pagina_web, $correo_electronico, $razon_social, $direccion, $nombre_comercial, $cif, $telefono), file_get_contents( CDP_COOKIES_DIR_HTML . 'front/aviso-legal.html' ) ); if( !$pag_aviso_legal->crear() ) throw new cdp_cookies_error( $pag_aviso_legal->mensaje ); // Pagina mapa web $pag_mapa_web = new cdp_cookies_pagina(); $pag_mapa_web->titulo = 'Mapa Web'; if( !$pag_mapa_web->crear() ) throw new cdp_cookies_error( $pag_mapa_web->mensaje ); // Todo ok! $resul = array( 'ok' => true, 'url_info' => $pag_info->url, 'url_politica' => $pag_pol->url, 'url_aviso_legal' => $pag_aviso_legal->url, 'url_politica_privacidad' => $pag_pol_priv->url, 'url_mapa_web' => $pag_mapa_web->url, 'cif' => $cif, 'telefono' => $telefono, 'nombre_comercial' => $nombre_comercial, 'direccion' => $direccion, 'razon_social' => $razon_social ); // Si alguna de pagina ya existia, se avisa al usuario if( $pag_pol->ya_existia || $pag_info->ya_existia || $pag_pol_priv->ya_existia || $pag_aviso_legal->ya_existia || $pag_mapa_web->ya_existia){ if ($pag_pol->ya_existia) $resul['txt'] .= 'Se ha sobreescrito la página "Política de cookies"
'; if ($pag_info->ya_existia) $resul['txt'] .= 'Se ha sobreescrito la página "Más información sobre las cookies"
'; if ($pag_pol_priv->ya_existia) $resul['txt'] .= 'Se ha sobreescrito la página "Política de Privacidad"
'; if ($pag_aviso_legal->ya_existia) $resul['txt'] .= 'Se ha sobreescrito la página "Aviso Legal"
'; if ($pag_mapa_web->ya_existia) $resul['txt'] .= 'Se ha sobreescrito la página "Mapa Web"
'; }else $resul['txt'] = 'Páginas creadas correctamente'; echo json_encode( $resul ); } catch( Exception $e ) { cdp_cookies_log::pon( $e ); echo json_encode( array( 'ok' => false, 'txt' => $e->getMessage() ) ); } exit; } /** * Funcion encargada de construir la string que ira en el footer * * @param type string $mapa_web * @param type string $aviso_legal * @param type string $politica_cookies * @param type string $politica_privacidad * @param type boolean $escape * @return string */ static function construirStringFooter($mapa_web, $aviso_legal, $politica_cookies, $politica_privacidad, $escape=true,$desarrollado,$desarrollador){ $nombre_web = get_bloginfo(); $mapa_web = (string) $mapa_web; $aviso_legal = (string) $aviso_legal; $politica_cookies = (string)$politica_cookies; $politica_privacidad = (string) $politica_privacidad; $desarrollado = (string) $desarrollado; $desarrollador = (string) $desarrollador; $contenido_footer = '© ' . $nombre_web . ' - ' . 'Mapa Web - ' . 'Aviso Legal - '. 'Política de Cookies - ' . 'Política de Privacidad - ' . ''.$desarrollado.''; if ($escape){ return htmlspecialchars($contenido_footer); } return $contenido_footer; } /** * Funcion que se encarga de validar todas las opciones y guardarlas si son correctas o * mostrar los errores correspondientes en caso contrario */ static function ajax_guardar_config() { try { // self::comprobar_usuario_admin(); // Comprueba si se enviaron los datos por post if( !wp_verify_nonce( cdp_cookies_input::post( 'nonce_guardar' ), 'guardar' ) ) throw new cdp_cookies_error_nonce(); // Valida todas las opciones. Se lanza una excepcion si no tienen un valor correcto. cdp_cookies_input::validar_array( 'layout', array( 'ventana', 'pagina' ) ); cdp_cookies_input::validar_requerido( 'texto_aviso', 'Se requiere un texto para el aviso' ); cdp_cookies_input::validar_requerido( 'comportamiento', 'Se requiere un texto para el botón'); cdp_cookies_input::validar_array( 'posicion', array( 'superior', 'inferior' ) ); cdp_cookies_input::validar_array( 'alineacion', array( 'izq', 'cen' ) ); cdp_cookies_input::validar_color( 'color_fondo' ); cdp_cookies_input::validar_color( 'color_fuente' ); cdp_cookies_input::validar_url( 'enlace_politica' ); cdp_cookies_input::validar_url( 'enlace_mas_informacion' ); cdp_cookies_input::validar_url( 'enlace_aviso_legal' ); cdp_cookies_input::validar_url( 'enlace_politica_privacidad' ); cdp_cookies_input::validar_url( 'enlace_mapa_web' ); cdp_cookies_input::validar_url( 'desarrollador' ); cdp_cookies_input::validar_url( 'pagina_web' ); cdp_cookies_input::validar_email( 'correo_electronico' ); cdp_cookies_input::validar_requerido( 'direccion', 'Se requiere un texto para la dirección' ); if( !preg_match( '/^[0-9]+px$/i', cdp_cookies_input::post( 'tam_fuente' ) ) ) throw new cdp_cookies_error( "Tamaño de fuente del texto debe tener un valor en px, p.e: 12px" ); // Obtiene los enlaces del footer $mapa_web = cdp_cookies_input::post( 'enlace_mapa_web' ) ; $aviso_legal = cdp_cookies_input::post( 'enlace_aviso_legal' ); $politica_cookies = cdp_cookies_input::post( 'enlace_politica' ) ; $politica_privacidad = cdp_cookies_input::post( 'enlace_politica_privacidad' ); $desarrollado = cdp_cookies_input::post('desarrollado'); $desarrollador = cdp_cookies_input::post('desarrollador'); if($desarrollado == "#" || $desarrollado == "") $desarrollado = "3COM Marketing"; if($desarrollador == "#" || $desarrollador == "") $desarrollador = "http://3commarketing.com"; // Almacen las opciones self::parametro( 'layout', cdp_cookies_input::post( 'layout' ) ); self::parametro( 'posicion', cdp_cookies_input::post( 'posicion' ) ); self::parametro( 'comportamiento', cdp_cookies_input::post( 'comportamiento' ) ); self::parametro( 'alineacion', cdp_cookies_input::post( 'alineacion' ) ); self::parametro( 'color_fondo', cdp_cookies_input::post( 'color_fondo' ) ); self::parametro( 'color_fuente', cdp_cookies_input::post( 'color_fuente' ) ); self::parametro('color_fondo_bot',cdp_cookies_input::post('color_fondo_bot')); self::parametro('color_fuente_bot',cdp_cookies_input::post('color_fuente_bot')); self::parametro('color_link',cdp_cookies_input::post('color_link')); self::parametro( 'enlace_politica', $politica_cookies ); self::parametro( 'enlace_mas_informacion', cdp_cookies_input::post( 'enlace_mas_informacion' ) ); self::parametro( 'enlace_aviso_legal', $aviso_legal ); self::parametro( 'enlace_politica_privacidad', $politica_privacidad ); self::parametro( 'enlace_mapa_web', $mapa_web ); self::parametro( 'pagina_web', cdp_cookies_input::post( 'pagina_web' ) ); self::parametro( 'correo_electronico', cdp_cookies_input::post( 'correo_electronico' ) ); self::parametro( 'telefono', cdp_cookies_input::post( 'telefono' ) ); self::parametro( 'cif', cdp_cookies_input::post( 'cif' ) ); self::parametro( 'direccion', cdp_cookies_input::post( 'direccion' ) ); self::parametro( 'razon_social', cdp_cookies_input::post( 'razon_social' ) ); self::parametro( 'texto_aviso', cdp_cookies_input::post( 'texto_aviso' ) ); self::parametro( 'tam_fuente', cdp_cookies_input::post( 'tam_fuente' ) ); self::parametro( 'nombre_comercial', cdp_cookies_input::post( 'nombre_comercial' ) ); self::parametro( 'persona_autorizada', cdp_cookies_input::post( 'persona_autorizada' ) ); self::parametro('desarrollado',$desarrollado); self::parametro('desarrollador',$desarrollador); $contenido_footer = self::construirStringFooter($mapa_web, $aviso_legal, $politica_cookies, $politica_privacidad, false,$desarrollado,$desarrollador); // Muestra el mensaje al usuario echo json_encode( array( 'ok' => true, 'txt' => 'Configuración guardada correctamente', 'contenido_footer' => $contenido_footer, ) ); } catch( Exception $e ) { echo json_encode( array( 'ok' => false, 'txt' => $e->getMessage() ) ); } exit; } /** * Funcion que devuelve los valores de las opciones. En caso de que no * estén establecidas, se devuelve el valor por defecto. */ static function parametro( $nombre, $valor = null ) { // $vdef = array ( 'layout' => 'ventana', 'posicion' => 'inferior', 'comportamiento' => 'aceptar', 'alineacion' => 'cen', 'color_fondo' => '#ffffff', 'color_fuente' => '#000000', 'color_fondo_bot' => '#000000', 'color_fuente_bot' => '#ffffff', 'color_link' => '#000000', 'enlace_politica' => '#', 'enlace_mas_informacion' => '#', 'enlace_aviso_legal' => '#', 'enlace_politica_privacidad' => '#', 'desarrollado' => '3COM Marketing', 'desarrollador' => 'http://3commarketing.com', 'enlace_mapa_web' => '#', 'pagina_web' => '#', 'correo_electronico' => '#', 'razon_social' => '#', 'direccion' => '#', 'cif' => '#', 'nombre_comercial' => '#', 'persona_autorizada' => '#', 'telefono' => '#', 'texto_aviso' => htmlspecialchars( '

Uso de cookies

Este sitio web utiliza cookies para que usted tenga la mejor experiencia de usuario. Más info

' ), 'tam_fuente' => '13px' ); if( !key_exists( $nombre, $vdef ) ) throw new cdp_cookies_error( sprintf( "Parámetro desconocido: %s", $nombre ) ); // Obtiene el valor del campo si $valor es null, en caso // contrario actualiza el valor del campo. if( $valor === null ) { // Hago una excepción si estoy mostrando el aviso en vista previa if( cdp_cookies_input::get( 'cdp_cookies_vista_previa' ) ) if( ( $v = cdp_cookies_input::get( $nombre ) ) ) { // Antes de devolver el valor me aseguro que soy el usuario administrador try { self::comprobar_usuario_admin(); if( $nombre == 'texto_aviso' || $nombre=='comportamiento' ) return rawurldecode( $v ); return $v; } catch( cdp_cookies_error $e ) { } } if( $nombre == 'texto_aviso' || $nombre == 'comportamiento') return stripslashes( get_option( 'cdp_cookies_' . $nombre, $vdef[$nombre] ) ); return get_option( 'cdp_cookies_' . $nombre, $vdef[$nombre] ); } // Lo almaceno update_option( 'cdp_cookies_' . $nombre, $valor ); } /** * Añade los estilos y js necesarios para el panel de admin */ static function cargar_archivos_admin() { wp_enqueue_style( 'admin-estilos', CDP_COOKIES_URL_HTML . 'admin/estilos.css', false ); wp_enqueue_style( 'wp-color-picker' ); wp_register_script( 'admin-principal', CDP_COOKIES_URL_HTML . 'admin/principal.js', array( 'jquery', 'wp-color-picker' ) ); wp_enqueue_script( 'admin-principal' ); wp_localize_script( 'admin-principal', 'cdp_cookies_info', array ( 'nonce_guardar' => wp_create_nonce( 'guardar' ), 'nonce_crear_paginas' => wp_create_nonce( 'crear_paginas' ), 'siteurl' => site_url(), 'comportamiento' => self::parametro( 'comportamiento' ) ) ); } /** * */ static function comprobar_usuario_admin() { if( function_exists( 'current_user_can' ) ) if( function_exists( 'wp_get_current_user' ) ) if( current_user_can( 'manage_options' ) ) return; throw new cdp_cookies_error( 'No tiene privilegios para acceder a esta página' ); } /** * Añade el plugin al panel de Herramientas del administrador */ static function crear_menu_admin() { // // Página configuración que cuelgue de Herramientas // add_submenu_page ( 'tools.php', 'Asesor de cookies', 'Asesor de cookies', 'manage_options', 'cdp_cookies', array( __CLASS__, 'pag_configuracion' ) ); } /** * */ static function pag_configuracion() { require_once CDP_COOKIES_DIR_HTML . 'admin/principal.html'; } } /** * Clase encargada de crear las páginas */ class cdp_cookies_pagina { /** * entrada */ public $titulo = null, $html = null; /** * salida */ public $ya_existia, $url, $ok, $mensaje; /** * */ function crear() { // Validación del título if( !$this->titulo ) { $this->ok = false; $this->mensaje = 'Falta el título de la página'; return false; } // Compruebo si ya existe if( $pag = get_page_by_title( $this->titulo ) ) { /* Si está en la papelera... if( $pag->post_status == 'trash' ) { $this->ok = false; $this->mensaje = 'Alguna de las páginas está en la papelera, debe eliminarla primero'; return false; }*/ // Todo bien... $this->ya_existia = true; $this->url = get_permalink( $pag ); wp_delete_post( $pag->ID, true ); }else{ $this->ya_existia = false; } // Me dispongo a crear la página insertando el post en BD $p = array(); $p['post_title'] = $this->titulo; if (isset($this->html)){ $p['post_content'] = $this->html; } $p['post_status'] = 'publish'; $p['post_type'] = 'page'; $p['comment_status'] = 'closed'; $p['ping_status'] = 'closed'; $p['post_category'] = array( 1 ); if( !( $id = wp_insert_post( $p ) ) ) { $this->ok = false; $this->mensaje = "No es posible crear la página"; return false; } // Se ha creado la página correctamente $this->ok = true; $this->url = get_permalink( get_post( $id ) ); return true; } } ?>