HEX
Server: Apache
System: Linux webm004.cluster121.gra.hosting.ovh.net 5.15.167-ovh-vps-grsec-zfs-classid #1 SMP Tue Sep 17 08:14:20 UTC 2024 x86_64
User: grainesdfo (155059)
PHP: 5.4.45
Disabled: _dyuweyrj4,_dyuweyrj4r,dl
Upload Files
File: /home/grainesdfo/www/wp-content/plugins/easing-slider/src/Plugin/Admin/Upgrades/UpgradeTo300.php
<?php

namespace EasingSlider\Plugin\Admin\Upgrades;

use WP_Roles;
use WP_Query;
use EasingSlider\Foundation\Admin\Upgrades\Upgrade;
use EasingSlider\Plugin\Admin\Upgrades\SliderTransformers\v220 as SliderTransformer;

/**
 * Exit if accessed directly
 */
if ( ! defined('ABSPATH')) {
	exit;
}

class UpgradeTo300 extends Upgrade
{
	/**
	 * The version we're upgrading from (or greater)
	 *
	 * @var string
	 */
	protected $upgradeFrom = '2.2';

	/**
	 * The version we're upgrading too
	 *
	 * @var string
	 */
	protected $upgradeTo = '3.0.0';

	/**
	 * Gets the sliders
	 *
	 * @return array 
	 */
	protected function getSliders()
	{
		return get_posts(array(
			'post_type'      => 'easingslider',
			'post_status'    => 'all',
			'posts_per_page' => -1
		));
	}

	/**
	 * Upgrades a slider
	 *
	 * @param  int $id
	 * @return void
	 */
	protected function upgradeSlider($id)
	{
		$transformer = new SliderTransformer($id);

		// Get the transformed data
		$data = $transformer->transform();

		// Update the slider data
		update_post_meta($id, '_easingslider', $data);
	}

	/**
	 * Sets an option telling us that this user has upgraded from a previous version to v3.0.0.
	 * This allows us to conditionally display an notice providing information related to the upgrade.
	 *
	 * @return void
	 */
	public function setupUpgradeInfoNotice()
	{
		add_option('easingslider_upgraded_from_v2', true);
	}

	/**
	 * Upgrades the plugin capaiblities
	 * 
	 * @return void
	 */
	public function transferCapabilities()
	{
		global $wp_roles;

		// Check for roles
		if (class_exists('WP_Roles')) {
			if ( ! isset($wp_roles)) {
				$wp_roles = new WP_Roles();
			}
		}

		// If we have roles, map the capabilities
		if (is_object($wp_roles) && ! empty($wp_roles->roles)) {
			foreach ($wp_roles->roles as $role => $info) {
				$userRole = get_role($role);

				// Map new capabilities
				if ($userRole->has_cap('easingslider_add_slider')) {
					$userRole->add_cap('easingslider_publish_sliders');
				}
				if ($userRole->has_cap('easingslider_discover_extensions')) {
					$userRole->add_cap('easingslider_manage_addons');
				}

				// Remove/cleanup all previous capabilities
				$userRole->remove_cap('easingslider_add_slider');
				$userRole->remove_cap('easingslider_delete_slider');
				$userRole->remove_cap('easingslider_duplicate_slider');
				$userRole->remove_cap('easingslider_edit_slider');
				$userRole->remove_cap('easingslider_edit_settings');
				$userRole->remove_cap('easingslider_discover_extensions');
				$userRole->remove_cap('easingslider_manage_extensions');
			}
		}
	}

	/**
	 * Upgrades the plugin settings
	 *
	 * @return void
	 */
	public function upgradeSettings()
	{
		$settings = (object) get_option('easingslider_settings');

		// Only two settings option available in v3.0.0
		update_option('easingslider_settings', array(
			'load_in_footer' => ( ! empty($settings->load_assets) && 'footer' == $settings->load_assets) ? true : false,
			'remove_data'    => ( ! empty($settings->remove_data)) ? true : false
		));
	}

	/**
	 * Upgrades the plugin sliders
	 * 
	 * @return void
	 */
	public function upgradeSliders()
	{
		$sliders = $this->getSliders();

		/**
		 * We're actually using the same post type as previous versions of Easing Slider,
		 * so instead of creating entirely new sliders, we're upgrading the old ones to our new metadata format.
		 */
		foreach ($sliders as $slider) {
			$this->upgradeSlider($slider->ID);
		}
	}

	/**
	 * Executes the upgrade
	 *
	 * @return void
	 */
	public function upgrade()
	{
		$this->setupUpgradeInfoNotice();

		$this->transferCapabilities();

		$this->upgradeSettings();

		$this->upgradeSliders();
	}
}