first commit
This commit is contained in:
152
wp-content/plugins/svg-support/svg-support.php
Normal file
152
wp-content/plugins/svg-support/svg-support.php
Normal file
@@ -0,0 +1,152 @@
|
||||
<?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.14
|
||||
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
|
||||
Requires at least: 5.8
|
||||
Requires PHP: 7.4
|
||||
Block: true
|
||||
|
||||
Copyright 2013 and beyond | Benbodhi (email : wp@benbodhi.com)
|
||||
|
||||
*/
|
||||
|
||||
if ( ! defined( 'ABSPATH' ) ) {
|
||||
exit; // Exit if accessed directly
|
||||
}
|
||||
|
||||
/**
|
||||
* Global variables and constants
|
||||
*/
|
||||
global $bodhi_svgs_options;
|
||||
$bodhi_svgs_options = array(); // Defining global array
|
||||
define('BODHI_SVGS_VERSION', get_file_data(__FILE__, array('Version' => 'Version'))['Version']);
|
||||
define('BODHI_SVGS_PLUGIN_FILE', __FILE__); // define the absolute plugin file path
|
||||
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
|
||||
|
||||
// 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( BODHI_SVGS_PLUGIN_PATH . 'functions/meta-cleanup.php' ); // cleanup duplicate meta entries
|
||||
|
||||
// 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' );
|
||||
// }
|
||||
|
||||
/**
|
||||
* Handle version updates and migrations
|
||||
*
|
||||
* Handles version comparisons for all format types:
|
||||
* - Single digit versions (1, 2)
|
||||
* - Zero versions (0, 0.1, 0.5.26)
|
||||
* - Two-digit versions (1.0, 2.1, 2.5)
|
||||
* - Three-digit versions (1.5.17, 2.5.9)
|
||||
* - Fresh installs ('0.0.0')
|
||||
* - Legacy versions (null, empty, invalid)
|
||||
*/
|
||||
function bodhi_svgs_version_updates() {
|
||||
$stored_version = get_option('bodhi_svgs_plugin_version', '0.0.0');
|
||||
|
||||
if (!is_string($stored_version) || empty($stored_version)) {
|
||||
$stored_version = '0.0.0';
|
||||
}
|
||||
|
||||
// Skip if already at current version
|
||||
if ($stored_version === BODHI_SVGS_VERSION) {
|
||||
return;
|
||||
}
|
||||
|
||||
// Store the old version for comparison
|
||||
$old_version = $stored_version;
|
||||
|
||||
// Update to current version
|
||||
update_option('bodhi_svgs_plugin_version', BODHI_SVGS_VERSION);
|
||||
|
||||
// If coming from before 2.5.14, run cleanup
|
||||
if (version_compare($old_version, '2.5.14', '<')) {
|
||||
require_once BODHI_SVGS_PLUGIN_PATH . 'functions/meta-cleanup.php';
|
||||
bodhi_svgs_cleanup_duplicate_meta();
|
||||
}
|
||||
}
|
||||
add_action('admin_init', 'bodhi_svgs_version_updates');
|
||||
|
||||
/**
|
||||
* 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 (no bypass roles)
|
||||
if ( !isset($bodhi_svgs_options['sanitize_on_upload_roles']) ) {
|
||||
$bodhi_svgs_options['sanitize_on_upload_roles'] = array();
|
||||
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');
|
||||
Reference in New Issue
Block a user