Files
wordpress-preseed/wp-content/plugins/shariff/updates.php
2019-10-24 00:12:05 +02:00

344 lines
11 KiB
PHP

<?php
/**
* Will be included by shariff3uu_update() only if needed.
* Put all update task here. Make sure that all "older" updates are checked first.
* At least you must set $shariff3uu['version'] = [YOUR VERSION]; to avoid includes later on.
*
* @package WordPress
*/
// Prevent direct calls.
if ( ! class_exists( 'WP' ) ) {
die();
}
/**
* Migration < 2.3
* Split options in database according to new setting tabs.
* Delete old cache directory.
*/
if ( isset( $shariff3uu['version'] ) && -1 === version_compare( $shariff3uu['version'], '2.2.5' ) ) {
// Basic options.
if ( isset( $shariff3uu['version'] ) ) {
$shariff3uu_basic['version'] = $shariff3uu['version'];
}
if ( isset( $shariff3uu['services'] ) ) {
$shariff3uu_basic['services'] = $shariff3uu['services'];
}
if ( isset( $shariff3uu['add_after_all_posts'] ) ) {
$shariff3uu_basic['add_after']['posts'] = $shariff3uu['add_after_all_posts'];
}
if ( isset( $shariff3uu['add_after_all_overview'] ) ) {
$shariff3uu_basic['add_after']['posts_blogpage'] = $shariff3uu['add_after_all_overview'];
}
if ( isset( $shariff3uu['add_after_all_pages'] ) ) {
$shariff3uu_basic['add_after']['pages'] = $shariff3uu['add_after_all_pages'];
}
if ( isset( $shariff3uu['add_after_all_custom_type'] ) ) {
$shariff3uu_basic['add_after']['custom_type'] = $shariff3uu['add_after_all_custom_type'];
}
if ( isset( $shariff3uu['add_before_all_posts'] ) ) {
$shariff3uu_basic['add_before']['posts'] = $shariff3uu['add_before_all_posts'];
}
if ( isset( $shariff3uu['add_before_all_overview'] ) ) {
$shariff3uu_basic['add_before']['posts_blogpage'] = $shariff3uu['add_before_all_overview'];
}
if ( isset( $shariff3uu['add_before_all_pages'] ) ) {
$shariff3uu_basic['add_before']['pages'] = $shariff3uu['add_before_all_pages'];
}
if ( isset( $shariff3uu['disable_on_protected'] ) ) {
$shariff3uu_basic['disable_on_protected'] = $shariff3uu['disable_on_protected'];
}
if ( isset( $shariff3uu['backend'] ) ) {
$shariff3uu_basic['backend'] = $shariff3uu['backend'];
}
// Design options.
if ( isset( $shariff3uu['language'] ) ) {
$shariff3uu_design['language'] = $shariff3uu['language'];
}
if ( isset( $shariff3uu['theme'] ) ) {
$shariff3uu_design['theme'] = $shariff3uu['theme'];
}
if ( isset( $shariff3uu['buttonsize'] ) ) {
$shariff3uu_design['buttonsize'] = $shariff3uu['buttonsize'];
}
if ( isset( $shariff3uu['vertical'] ) ) {
$shariff3uu_design['vertical'] = $shariff3uu['vertical'];
}
if ( isset( $shariff3uu['align'] ) ) {
$shariff3uu_design['align'] = $shariff3uu['align'];
}
if ( isset( $shariff3uu['align_widget'] ) ) {
$shariff3uu_design['align_widget'] = $shariff3uu['align_widget'];
}
if ( isset( $shariff3uu['style'] ) ) {
$shariff3uu_design['style'] = $shariff3uu['style'];
}
// Advanced options.
if ( isset( $shariff3uu['info_url'] ) ) {
$shariff3uu_advanced['info_url'] = $shariff3uu['info_url'];
}
if ( isset( $shariff3uu['twitter_via'] ) ) {
$shariff3uu_advanced['twitter_via'] = $shariff3uu['twitter_via'];
}
if ( isset( $shariff3uu['flattruser'] ) ) {
$shariff3uu_advanced['flattruser'] = $shariff3uu['flattruser'];
}
if ( isset( $shariff3uu['default_pinterest'] ) ) {
$shariff3uu_advanced['default_pinterest'] = $shariff3uu['default_pinterest'];
}
// Mailform options.
if ( isset( $shariff3uu['mail_add_post_content'] ) ) {
$GLOBALS['shariff3UU_mailform']['mail_add_post_content'] = $shariff3uu['mail_add_post_content'];
}
if ( isset( $shariff3uu['mail_sender_name'] ) ) {
$GLOBALS['shariff3UU_mailform']['mail_sender_name'] = $shariff3uu['mail_sender_name'];
}
if ( isset( $shariff3uu['mail_sender_from'] ) ) {
$GLOBALS['shariff3UU_mailform']['mail_sender_from'] = $shariff3uu['mail_sender_from'];
}
// Default options should be as save as possible, same reason the statistics are disabled by default.
$GLOBALS['shariff3UU_mailform']['require_sender'] = 1;
// Update global.
$shariff3uu = array_merge( $shariff3uu_basic, $shariff3uu_design, $shariff3uu_advanced, $GLOBALS['shariff3UU_mailform'] );
// Update version.
$shariff3uu['version'] = '2.3.0';
}
/**
* Migration < 3.3
* Update options that were moved.
* Delete old cache directory and db entry.
*/
if ( isset( $shariff3uu['version'] ) && -1 === version_compare( $shariff3uu['version'], '3.3.0' ) ) {
// Update options that were moved.
if ( isset( $shariff3uu['backend'] ) ) {
$shariff3uu_statistic['backend'] = $shariff3uu['backend'];
}
if ( isset( $shariff3uu['fb_id'] ) ) {
$shariff3uu_statistic['fb_id'] = $shariff3uu['fb_id'];
}
if ( isset( $shariff3uu['fb_secret'] ) ) {
$shariff3uu_statistic['fb_secret'] = $shariff3uu['fb_secret'];
}
if ( isset( $shariff3uu['ttl'] ) ) {
$shariff3uu_statistic['ttl'] = $shariff3uu['ttl'];
}
if ( isset( $shariff3uu['disable'] ) ) {
$shariff3uu_statistic['disable'] = $shariff3uu['disable'];
}
// Delete old cache directory and db entry.
if ( is_multisite() ) {
global $wpdb;
// phpcs:ignore
$blogs = $wpdb->get_results( "SELECT blog_id FROM {$wpdb->blogs}", ARRAY_A );
if ( $blogs ) {
foreach ( $blogs as $blog ) {
// Switch to each blog.
switch_to_blog( $blog['blog_id'] );
// Delete cache dir.
shariff_removeoldcachedir();
// Delete old db entry.
delete_option( 'shariff3UU' );
// Switch back to main.
restore_current_blog();
}
}
} else {
// Delete cache dir.
shariff_removeoldcachedir();
// Delete old db entry.
delete_option( 'shariff3UU' );
}
// Disable Twitter backend due to new service OpenShareCount.com.
$shariff3uu_statistic['disable']['twitter'] = 1;
// Update version.
$shariff3uu['version'] = '3.3.0';
}
/**
* Helper function to delete old cache directory.
*/
function shariff_removeoldcachedir() {
$upload_dir = wp_upload_dir();
$cache_dir = $upload_dir['basedir'] . '/1970/01';
$cache_dir2 = $upload_dir['basedir'] . '/1970';
shariff_removeoldfiles( $cache_dir );
// Remove /1970/01 and /1970 if they are empty.
rmdir( $cache_dir );
rmdir( $cache_dir2 );
}
/**
* Helper function to delete old .dat files that begin with 'Shariff' and empty folders that also start with 'Shariff'.
*
* @param string $directory Path to Shariff cache directory.
*/
function shariff_removeoldfiles( $directory ) {
foreach ( glob( '{$directory}/Shariff* ' ) as $file ) {
if ( is_dir( $file ) ) {
shariff_removeoldfiles( $file );
} elseif ( substr( $file, -4 ) === '.dat' ) {
unlink( $file );
}
}
rmdir( $directory );
}
/**
* Migration < 4.0
*/
if ( isset( $shariff3uu['version'] ) && -1 === version_compare( $shariff3uu['version'], '4.0.0' ) ) {
// Set new option share counts, if statistic is enabled.
if ( isset( $shariff3uu_statistic['backend'] ) ) {
$shariff3uu_statistic['sharecounts'] = 1;
}
// Disable share counts if WP version < 4.4.
if ( version_compare( get_bloginfo( 'version' ), '4.4.0' ) < 1 ) {
unset( $shariff3uu_statistic['backend'] );
}
// Change button language to WordPress language, if it is set to auto and http_negotiate_language is not available (auto will not work without it).
if ( ! isset( $shariff3uu_design['lang'] ) && ! function_exists( 'http_negotiate_language' ) ) {
$shariff3uu_design['lang'] = substr( get_bloginfo( 'language' ), 0, 2 );
}
// Update version.
$shariff3uu['version'] = '4.0.0';
}
/**
* Migration < 4.2
*/
if ( isset( $shariff3uu['version'] ) && -1 === version_compare( $shariff3uu['version'], '4.2.0' ) ) {
// Make sure we have the $wpdb class ready.
global $wpdb;
// Delete user meta entry shariff3UU_ignore_notice to display update message again after an update (check for multisite).
if ( is_multisite() ) {
// phpcs:ignore
$blogs = $wpdb->get_results( "SELECT blog_id FROM {$wpdb->blogs}", ARRAY_A );
if ( $blogs ) {
foreach ( $blogs as $blog ) {
// Switch to each blog.
switch_to_blog( $blog['blog_id'] );
// Delete user meta entry shariff3UU_ignore_notice.
$users = get_users( 'role=administrator' );
foreach ( $users as $user ) {
if ( get_user_meta( $user->ID, 'shariff3UU_ignore_notice', true ) ) {
delete_user_meta( $user->ID, 'shariff3UU_ignore_notice' );
}
}
// Switch back to main.
restore_current_blog();
}
}
} else {
// Delete user meta entry shariff3UU_ignore_notice.
$users = get_users( 'role=administrator' );
foreach ( $users as $user ) {
if ( get_user_meta( $user->ID, 'shariff3UU_ignore_notice', true ) ) {
delete_user_meta( $user->ID, 'shariff3UU_ignore_notice' );
}
}
}
}
/**
* Migration < 4.5
*/
if ( isset( $shariff3uu['version'] ) && -1 === version_compare( $shariff3uu['version'], '4.5.0' ) ) {
// Update language settings.
if ( ! isset( $shariff3uu_design['lang'] ) ) {
$shariff3uu_design['autolang'] = 1;
$shariff3uu_design['lang'] = substr( get_locale(), 0, 2 );
}
// Update version.
$shariff3uu['version'] = '4.5.0';
}
/**
* General tasks we do on every update, like clean up transients and so on.
*/
// Purge transients (check for multisite).
if ( is_multisite() ) {
global $wpdb;
// phpcs:ignore
$blogs = $wpdb->get_results( "SELECT blog_id FROM {$wpdb->blogs}", ARRAY_A );
if ( $blogs ) {
foreach ( $blogs as $blog ) {
// Switch to each blog.
switch_to_blog( $blog['blog_id'] );
// Purge transients.
shariff3uu_purge_transients();
// Switch back to main.
restore_current_blog();
}
}
} else {
// Purge transients.
shariff3uu_purge_transients();
}
/**
* Helper function to purge all the transients associated with our plugin.
*/
function shariff3uu_purge_transients() {
// Make sure we have the $wpdb class ready.
if ( ! isset( $wpdb ) ) {
global $wpdb;
}
// Delete transients.
// phpcs:disable
$wpdb->query( 'DELETE FROM ' . $wpdb->options . ' WHERE option_name LIKE "_transient_timeout_shariff%"' );
$wpdb->query( 'DELETE FROM ' . $wpdb->options . ' WHERE option_name LIKE "_transient_shariff%"' );
// phpcs:enable
// Clear object cache.
wp_cache_flush();
}
// Set new version.
$shariff3uu['version'] = $code_version;
$shariff3uu_basic['version'] = $code_version;
/**
* Remove empty elements and save to options table. We had a mix up with shariff3uu and shariff3UU in the past and update_option is not case senitive. Therefore we actually need to delete and recreate it.
*/
// Basic.
delete_option( 'shariff3uu_basic' );
$shariff3uu_basic = array_filter( $shariff3uu_basic );
update_option( 'shariff3uu_basic', $shariff3uu_basic );
// Design.
delete_option( 'shariff3uu_design' );
$shariff3uu_design = array_filter( $shariff3uu_design );
update_option( 'shariff3uu_design', $shariff3uu_design );
// Advanced.
delete_option( 'shariff3uu_advanced' );
$shariff3uu_advanced = array_filter( $shariff3uu_advanced );
update_option( 'shariff3uu_advanced', $shariff3uu_advanced );
// Statistic.
delete_option( 'shariff3uu_statistic' );
$shariff3uu_statistic = array_filter( $shariff3uu_statistic );
update_option( 'shariff3uu_statistic', $shariff3uu_statistic );
// Remove old settings.
delete_option( 'shariff3UU_mailform' );
delete_option( 'shariff3UU_hide_update_notice' );
// Remove Shariff cron job and add it again, if wanted.
wp_clear_scheduled_hook( 'shariff3uu_fill_cache' );
do_action( 'shariff3uu_save_statistic_options' );