first
This commit is contained in:
218
wp-content/plugins/wp-asset-clean-up/classes/BulkChanges.php
Normal file
218
wp-content/plugins/wp-asset-clean-up/classes/BulkChanges.php
Normal file
@ -0,0 +1,218 @@
|
||||
<?php
|
||||
namespace WpAssetCleanUp;
|
||||
|
||||
/**
|
||||
*
|
||||
* Class BulkChanges
|
||||
* @package WpAssetCleanUp
|
||||
*/
|
||||
class BulkChanges
|
||||
{
|
||||
/**
|
||||
* @var string
|
||||
*/
|
||||
public $wpacuFor = 'everywhere';
|
||||
|
||||
/**
|
||||
* @var string
|
||||
*/
|
||||
public $wpacuPostType = 'post';
|
||||
|
||||
/**
|
||||
* @var array
|
||||
*/
|
||||
public $data = array();
|
||||
|
||||
/**
|
||||
* Includes bulk unload rules, RegEx unloads & load exceptions
|
||||
*
|
||||
* BulkChanges constructor.
|
||||
*/
|
||||
public function __construct()
|
||||
{
|
||||
$this->wpacuFor = sanitize_text_field(Misc::getVar('request', 'wpacu_for', $this->wpacuFor));
|
||||
$this->wpacuPostType = sanitize_text_field(Misc::getVar('request', 'wpacu_post_type', $this->wpacuPostType));
|
||||
|
||||
if (Misc::getVar('request', 'wpacu_update') == 1) {
|
||||
$this->update();
|
||||
}
|
||||
}
|
||||
|
||||
/**
|
||||
* @return array
|
||||
*/
|
||||
public function getCount()
|
||||
{
|
||||
$values = array();
|
||||
|
||||
if ($this->wpacuFor === 'everywhere') {
|
||||
$values = Main::instance()->getGlobalUnload();
|
||||
} elseif ($this->wpacuFor === 'post_types') {
|
||||
$values = Main::instance()->getBulkUnload('post_type', $this->wpacuPostType);
|
||||
}
|
||||
|
||||
if (isset($values['styles']) && ! empty($values['styles'])) {
|
||||
sort($values['styles']);
|
||||
}
|
||||
|
||||
if (isset($values['scripts']) && ! empty($values['scripts'])) {
|
||||
sort($values['scripts']);
|
||||
}
|
||||
|
||||
return $values;
|
||||
}
|
||||
|
||||
/**
|
||||
*
|
||||
*/
|
||||
public function pageBulkUnloads()
|
||||
{
|
||||
$this->data['assets_info'] = Main::getHandlesInfo();
|
||||
$this->data['for'] = $this->wpacuFor;
|
||||
|
||||
if ($this->wpacuFor === 'post_types') {
|
||||
$this->data['post_type'] = $this->wpacuPostType;
|
||||
|
||||
// Get All Post Types
|
||||
$postTypes = get_post_types(array('public' => true));
|
||||
$this->data['post_types_list'] = Misc::filterPostTypesList( $postTypes );
|
||||
}
|
||||
|
||||
$this->data['values'] = $this->getCount();
|
||||
|
||||
$this->data['nonce_name'] = Update::NONCE_FIELD_NAME;
|
||||
$this->data['nonce_action'] = Update::NONCE_ACTION_NAME;
|
||||
|
||||
$this->data['plugin_settings'] = Main::instance()->settings;
|
||||
|
||||
Main::instance()->parseTemplate('admin-page-settings-bulk-changes', $this->data, true);
|
||||
}
|
||||
|
||||
/**
|
||||
* @param $postTypes
|
||||
*
|
||||
* @return mixed
|
||||
*/
|
||||
public function filterPostTypesList($postTypes)
|
||||
{
|
||||
foreach ($postTypes as $postTypeKey => $postTypeValue) {
|
||||
// Exclude irrelevant custom post types
|
||||
if (in_array($postTypeKey, MetaBoxes::$noMetaBoxesForPostTypes)) {
|
||||
unset($postTypes[$postTypeKey]);
|
||||
}
|
||||
|
||||
// Polish existing values
|
||||
if ($postTypeKey === 'product' && Misc::isPluginActive('woocommerce/woocommerce.php')) {
|
||||
$postTypes[$postTypeKey] = 'product ⟶ WooCommerce';
|
||||
}
|
||||
}
|
||||
|
||||
return $postTypes;
|
||||
}
|
||||
|
||||
/**
|
||||
* @param $postTypesList
|
||||
* @param $currentPostType
|
||||
*/
|
||||
public static function buildPostTypesListDd($postTypesList, $currentPostType)
|
||||
{
|
||||
$ddList = array();
|
||||
|
||||
foreach ($postTypesList as $postTypeKey => $postTypeValue) {
|
||||
if (in_array($postTypeKey, array('post', 'page', 'attachment'))) {
|
||||
$ddList['WordPress (default)'][$postTypeKey] = $postTypeValue;
|
||||
} else {
|
||||
$ddList['Custom Post Types (Singular pages)'][$postTypeKey] = $postTypeValue;
|
||||
|
||||
$list = Main::instance()->getBulkUnload('custom_post_type_archive_'.$postTypeKey);
|
||||
|
||||
// At least one of the buckets ('styles' or 'scripts') needs to contain something
|
||||
if (! empty($list['styles']) || ! empty($list['scripts'])) {
|
||||
$ddList['Custom Post Types (Archive pages)'][ 'wpacu_custom_post_type_archive_'.$postTypeKey ] = $postTypeValue. ' (archive page)';
|
||||
}
|
||||
}
|
||||
}
|
||||
?>
|
||||
<select id="wpacu_post_type_select" name="wpacu_post_type">
|
||||
<?php
|
||||
foreach ($ddList as $groupLabel => $groupPostTypesList) {
|
||||
echo '<optgroup label="'.$groupLabel.'">';
|
||||
|
||||
foreach ($groupPostTypesList as $postTypeKey => $postTypeValue) {
|
||||
?>
|
||||
<option <?php if ($currentPostType === $postTypeKey) { echo 'selected="selected"'; } ?> value="<?php echo esc_attr($postTypeKey); ?>"><?php echo esc_html($postTypeValue); ?></option>
|
||||
<?php
|
||||
}
|
||||
|
||||
echo '</optgroup>';
|
||||
}
|
||||
?>
|
||||
</select>
|
||||
<?php
|
||||
}
|
||||
|
||||
/**
|
||||
*
|
||||
*/
|
||||
public function update()
|
||||
{
|
||||
if ( ! Misc::getVar('post', 'wpacu_bulk_unloads_update_nonce') ) {
|
||||
return;
|
||||
}
|
||||
|
||||
check_admin_referer('wpacu_bulk_unloads_update', 'wpacu_bulk_unloads_update_nonce');
|
||||
|
||||
$wpacuUpdate = new Update;
|
||||
|
||||
if ($this->wpacuFor === 'everywhere') {
|
||||
$removed = $wpacuUpdate->removeEverywhereUnloads(array(), array(), 'post');
|
||||
|
||||
if ($removed) {
|
||||
add_action('wpacu_admin_notices', array($this, 'noticeGlobalsRemoved'));
|
||||
}
|
||||
}
|
||||
|
||||
if ($this->wpacuFor === 'post_types') {
|
||||
$removed = $wpacuUpdate->removeBulkUnloads($this->wpacuPostType);
|
||||
|
||||
if ($removed) {
|
||||
add_action('wpacu_admin_notices', array($this, 'noticePostTypesRemoved'));
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
/**
|
||||
*
|
||||
*/
|
||||
public function noticeGlobalsRemoved()
|
||||
{
|
||||
?>
|
||||
<div class="updated notice wpacu-notice is-dismissible">
|
||||
<p><span class="dashicons dashicons-yes"></span>
|
||||
<?php
|
||||
_e('The selected styles/scripts were removed from the global unload list and they will now load in the pages/posts, unless you have other rules that would prevent them from loading.', 'wp-asset-clean-up');
|
||||
?>
|
||||
</p>
|
||||
</div>
|
||||
<?php
|
||||
}
|
||||
|
||||
/**
|
||||
*
|
||||
*/
|
||||
public function noticePostTypesRemoved()
|
||||
{
|
||||
?>
|
||||
<div class="updated notice wpacu-notice is-dismissible">
|
||||
<p><span class="dashicons dashicons-yes"></span>
|
||||
<?php
|
||||
echo sprintf(
|
||||
__('The selected styles/scripts were removed from the unload list for <strong><u>%s</u></strong> post type and they will now load in the pages/posts, unless you have other rules that would prevent them from loading.', 'wp-asset-clean-up'),
|
||||
$this->wpacuPostType
|
||||
);
|
||||
?>
|
||||
</p>
|
||||
</div>
|
||||
<?php
|
||||
}
|
||||
}
|
Reference in New Issue
Block a user