135 lines
5.6 KiB
PHP
135 lines
5.6 KiB
PHP
<?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');
|