<?php /* Plugin Name: SVG Support Plugin URI: http://wordpress.org/plugins/svg-support/ Description: Upload SVG files to the Media Library and render SVG files inline for direct styling/animation of an SVG's internal elements using CSS/JS. Version: 2.5.8 Author: Benbodhi Author URI: https://benbodhi.com Text Domain: svg-support Domain Path: /languages License: GPLv2 or later License URI: http://www.gnu.org/licenses/gpl-2.0.html Copyright 2013 and beyond | Benbodhi (email : wp@benbodhi.com) */ if ( ! defined( 'ABSPATH' ) ) { exit; // Exit if accessed directly } /** * Global variables */ global $bodhi_svgs_options; $bodhi_svgs_options = array(); // Defining global array $svgs_plugin_version = '2.5.8'; // for use on admin pages $plugin_file = plugin_basename(__FILE__); // plugin file for reference define( 'BODHI_SVGS_PLUGIN_PATH', plugin_dir_path( __FILE__ ) ); // define the absolute plugin path for includes define( 'BODHI_SVGS_PLUGIN_URL', plugin_dir_url( __FILE__ ) ); // define the plugin url for use in enqueue $bodhi_svgs_options = get_option('bodhi_svgs_settings', array()); // Retrieve our plugin settings from the options table, ensure it's an array // ensure $bodhi_svgs_options is always an array if (!is_array($bodhi_svgs_options)) { $bodhi_svgs_options = []; update_option('bodhi_svgs_settings', $bodhi_svgs_options); } /** * SVG Sanitizer class */ // init svg sanitizer for usage use enshrined\svgSanitize\Sanitizer; // svg sanitizer include( BODHI_SVGS_PLUGIN_PATH . 'vendor/autoload.php' ); // interfaces to enable custom whitelisting of svg tags and attributes include( BODHI_SVGS_PLUGIN_PATH . 'includes/svg-tags.php' ); include( BODHI_SVGS_PLUGIN_PATH . 'includes/svg-attributes.php' ); // initialize sanitizer $sanitizer = new Sanitizer(); /** * Includes - keeping it modular */ include( BODHI_SVGS_PLUGIN_PATH . 'admin/admin-init.php' ); // initialize admin menu & settings page include( BODHI_SVGS_PLUGIN_PATH . 'admin/plugin-action-meta-links.php' ); // add links to the plugin on the plugins page include( BODHI_SVGS_PLUGIN_PATH . 'functions/mime-types.php' ); // setup mime types support for SVG (with fix for WP 4.7.1 - 4.7.2) include( BODHI_SVGS_PLUGIN_PATH . 'functions/thumbnail-display.php' ); // make SVG thumbnails display correctly in media library include( BODHI_SVGS_PLUGIN_PATH . 'functions/attachment.php' ); // make SVG thumbnails display correctly in attachment modals and generate attachment sizes include( BODHI_SVGS_PLUGIN_PATH . 'functions/enqueue.php' ); // enqueue js & css for inline replacement & admin include( BODHI_SVGS_PLUGIN_PATH . 'functions/localization.php' ); // setup localization & languages include( BODHI_SVGS_PLUGIN_PATH . 'functions/attribute-control.php' ); // auto set SVG class & remove dimensions during insertion include( BODHI_SVGS_PLUGIN_PATH . 'functions/featured-image.php' ); // allow inline SVG for featured images // Include WP All Import integration only if WP All Import is active // if ( defined( 'PMXI_VERSION' ) ) { // include( BODHI_SVGS_PLUGIN_PATH . 'integrations/wp-all-import.php' ); // } /** * Version based conditional / Check for stored plugin version * * Versions prior to 2.3 did not store the version number, * If no version number is stored, store current plugin version number. * If there is a version number stored, update it with the new version number. */ // get the stored plugin version $svgs_plugin_version_stored = get_option( 'bodhi_svgs_plugin_version' ); // only run this if there is no stored version number (have never stored the number in previous versions) if ( empty( $svgs_plugin_version_stored ) ) { // add plugin version number to options table update_option( 'bodhi_svgs_plugin_version', $svgs_plugin_version ); } else { // update plugin version number in options table update_option( 'bodhi_svgs_plugin_version', $svgs_plugin_version ); } /** * Defaults for better security in versions >= 2.5 */ // Enable 'sanitize_svg_front_end' by default if ( !isset($bodhi_svgs_options['sanitize_svg_front_end']) ) { $bodhi_svgs_options['sanitize_svg_front_end'] = 'on'; update_option( 'bodhi_svgs_settings', $bodhi_svgs_options ); } // Allow only admins to upload SVGs by default if ( !isset($bodhi_svgs_options['restrict']) || $bodhi_svgs_options['restrict'] == "on" ) { $bodhi_svgs_options['restrict'] = array('administrator'); update_option( 'bodhi_svgs_settings', $bodhi_svgs_options ); } elseif (isset($bodhi_svgs_options['restrict']) && $bodhi_svgs_options['restrict'] == "none" ) { $bodhi_svgs_options['restrict'] = array("none"); update_option( 'bodhi_svgs_settings', $bodhi_svgs_options ); } // By default sanitize on upload for everyone except administrator and editor roles if ( !isset($bodhi_svgs_options['sanitize_on_upload_roles']) ) { $bodhi_svgs_options['sanitize_on_upload_roles'] = array('administrator', 'editor'); update_option( 'bodhi_svgs_settings', $bodhi_svgs_options ); } elseif ( isset($bodhi_svgs_options['sanitize_on_upload_roles']) && $bodhi_svgs_options['sanitize_on_upload_roles'] == "none") { $bodhi_svgs_options['sanitize_on_upload_roles'] = array("none"); update_option( 'bodhi_svgs_settings', $bodhi_svgs_options ); } /** * Register activation and deactivation hooks */ // Activation Hook function bodhi_svgs_plugin_activation() { bodhi_svgs_remove_old_sanitize_setting(); } register_activation_hook(__FILE__, 'bodhi_svgs_plugin_activation'); // Deactivation Hook function bodhi_svgs_plugin_deactivation() { bodhi_svgs_remove_old_sanitize_setting(); } register_deactivation_hook(__FILE__, 'bodhi_svgs_plugin_deactivation');