From e3858f071015319ca7a5678c55e4ed76d4156564 Mon Sep 17 00:00:00 2001 From: Lai Power Date: Mon, 16 Dec 2024 13:52:00 +0000 Subject: [PATCH] deleted plugin `Companion Auto Update` version 3.9.2 --- .../companion-auto-update/admin/dashboard.php | 577 --------- .../companion-auto-update/admin/log.php | 19 - .../admin/pluginlist.php | 185 --- .../companion-auto-update/admin/rollback.php | 2 - .../companion-auto-update/admin/status.php | 435 ------- .../backend/images/check.svg | 55 - .../backend/images/email.svg | 96 -- .../backend/images/help.svg | 67 - .../backend/images/interval.svg | 69 -- .../backend/images/love.svg | 116 -- .../backend/images/settings.svg | 124 -- .../backend/images/support.svg | 102 -- .../backend/images/update.svg | 91 -- .../backend/images/welcome.svg | 181 --- .../companion-auto-update/backend/style.css | 582 --------- .../backend/warningbar.css | 11 - .../companion-auto-update/cau_emails.php | 526 -------- .../companion-auto-update/cau_functions.php | 1095 ----------------- .../companion-auto-update.php | 420 ------- .../plugins/companion-auto-update/index.php | 2 - .../languages/companion-auto-update.pot | 62 - .../companion-auto-update/languages/index.php | 4 - .../plugins/companion-auto-update/readme.txt | 206 ---- 23 files changed, 5027 deletions(-) delete mode 100644 wp-content/plugins/companion-auto-update/admin/dashboard.php delete mode 100644 wp-content/plugins/companion-auto-update/admin/log.php delete mode 100644 wp-content/plugins/companion-auto-update/admin/pluginlist.php delete mode 100644 wp-content/plugins/companion-auto-update/admin/rollback.php delete mode 100644 wp-content/plugins/companion-auto-update/admin/status.php delete mode 100644 wp-content/plugins/companion-auto-update/backend/images/check.svg delete mode 100644 wp-content/plugins/companion-auto-update/backend/images/email.svg delete mode 100644 wp-content/plugins/companion-auto-update/backend/images/help.svg delete mode 100644 wp-content/plugins/companion-auto-update/backend/images/interval.svg delete mode 100644 wp-content/plugins/companion-auto-update/backend/images/love.svg delete mode 100644 wp-content/plugins/companion-auto-update/backend/images/settings.svg delete mode 100644 wp-content/plugins/companion-auto-update/backend/images/support.svg delete mode 100644 wp-content/plugins/companion-auto-update/backend/images/update.svg delete mode 100644 wp-content/plugins/companion-auto-update/backend/images/welcome.svg delete mode 100644 wp-content/plugins/companion-auto-update/backend/style.css delete mode 100644 wp-content/plugins/companion-auto-update/backend/warningbar.css delete mode 100644 wp-content/plugins/companion-auto-update/cau_emails.php delete mode 100644 wp-content/plugins/companion-auto-update/cau_functions.php delete mode 100644 wp-content/plugins/companion-auto-update/companion-auto-update.php delete mode 100644 wp-content/plugins/companion-auto-update/index.php delete mode 100644 wp-content/plugins/companion-auto-update/languages/companion-auto-update.pot delete mode 100644 wp-content/plugins/companion-auto-update/languages/index.php delete mode 100644 wp-content/plugins/companion-auto-update/readme.txt diff --git a/wp-content/plugins/companion-auto-update/admin/dashboard.php b/wp-content/plugins/companion-auto-update/admin/dashboard.php deleted file mode 100644 index 9a136a13..00000000 --- a/wp-content/plugins/companion-auto-update/admin/dashboard.php +++ /dev/null @@ -1,577 +0,0 @@ -

'.__( 'Companion Auto Update was not able to set the event for sending you emails, please re-activate the plugin in order to set the event', 'companion-auto-update' ).'.

'; -} - -// Database requires an update -if ( cau_incorrectDatabaseVersion() ) { - echo '

'.__( 'Companion Auto Update Database Update', 'companion-auto-update' ).' – - '.__( 'We need you to update to the latest database version', 'companion-auto-update' ).'. '.__( 'Run updater now', 'companion-auto-update' ).'

'; -} - -// Update log DB is empty -if ( cau_updateLogDBisEmpty() ) { - echo '

'.__( 'Companion Auto Update Database Update', 'companion-auto-update' ).' – - '.__( 'We need to add some information to your database', 'companion-auto-update' ).'. '.__( 'Run updater now', 'companion-auto-update' ).'

'; -} - -// Save settings -if( isset( $_POST['submit'] ) ) { - - check_admin_referer( 'cau_save_settings' ); - - global $wpdb; - $table_name = $wpdb->prefix . "auto_updates"; - - // Auto updater - $plugins = isset( $_POST['plugins'] ) ? sanitize_text_field( $_POST['plugins'] ) : ''; - $themes = isset( $_POST['themes'] ) ? sanitize_text_field( $_POST['themes'] ) : ''; - $minor = isset( $_POST['minor'] ) ? sanitize_text_field( $_POST['minor'] ) : ''; - $major = isset( $_POST['major'] ) ? sanitize_text_field( $_POST['major'] ) : ''; - $translations = isset( $_POST['translations'] ) ? sanitize_text_field( $_POST['translations'] ) : ''; - - $wpdb->query( $wpdb->prepare( "UPDATE $table_name SET onoroff = %s WHERE name = 'plugins'", $plugins ) ); - $wpdb->query( $wpdb->prepare( "UPDATE $table_name SET onoroff = %s WHERE name = 'themes'", $themes ) ); - $wpdb->query( $wpdb->prepare( "UPDATE $table_name SET onoroff = %s WHERE name = 'minor'", $minor ) ); - $wpdb->query( $wpdb->prepare( "UPDATE $table_name SET onoroff = %s WHERE name = 'major'", $major ) ); - $wpdb->query( $wpdb->prepare( "UPDATE $table_name SET onoroff = %s WHERE name = 'translations'", $translations ) ); - - // Emails - $send = isset( $_POST['cau_send'] ) ? sanitize_text_field( $_POST['cau_send'] ) : ''; - $sendupdate = isset( $_POST['cau_send_update'] ) ? sanitize_text_field( $_POST['cau_send_update'] ) : ''; - $sendoutdated = isset( $_POST['cau_send_outdated'] ) ? sanitize_text_field( $_POST['cau_send_outdated'] ) : ''; - $wpemails = isset( $_POST['wpemails'] ) ? sanitize_text_field( $_POST['wpemails'] ) : ''; - $email = isset( $_POST['cau_email'] ) ? sanitize_text_field( $_POST['cau_email'] ) : ''; - $html_or_text = isset( $_POST['html_or_text'] ) ? sanitize_text_field( $_POST['html_or_text'] ) : 'html'; - $dbupdateemails = isset( $_POST['dbupdateemails'] ) ? sanitize_text_field( $_POST['dbupdateemails'] ) : ''; - - $wpdb->query( $wpdb->prepare( "UPDATE $table_name SET onoroff = %s WHERE name = 'email'", $email ) ); - $wpdb->query( $wpdb->prepare( "UPDATE $table_name SET onoroff = %s WHERE name = 'send'", $send ) ); - $wpdb->query( $wpdb->prepare( "UPDATE $table_name SET onoroff = %s WHERE name = 'sendupdate'", $sendupdate ) ); - $wpdb->query( $wpdb->prepare( "UPDATE $table_name SET onoroff = %s WHERE name = 'sendoutdated'", $sendoutdated ) ); - $wpdb->query( $wpdb->prepare( "UPDATE $table_name SET onoroff = %s WHERE name = 'wpemails'", $wpemails ) ); - $wpdb->query( $wpdb->prepare( "UPDATE $table_name SET onoroff = %s WHERE name = 'html_or_text'", $html_or_text ) ); - $wpdb->query( $wpdb->prepare( "UPDATE $table_name SET onoroff = %s WHERE name = 'dbupdateemails'", $dbupdateemails ) ); - - // Advanced - $allow_editor = isset( $_POST['allow_editor'] ) ? sanitize_text_field( $_POST['allow_editor'] ) : ''; - $allow_author = isset( $_POST['allow_author'] ) ? sanitize_text_field( $_POST['allow_author'] ) : ''; - $advanced_info_emails = isset( $_POST['advanced_info_emails'] ) ? sanitize_text_field( $_POST['advanced_info_emails'] ) : ''; - $plugin_links_emails = isset( $_POST['plugin_links_emails'] ) ? sanitize_text_field( $_POST['plugin_links_emails'] ) : ''; - - $wpdb->query( $wpdb->prepare( "UPDATE $table_name SET onoroff = %s WHERE name = 'allow_editor'", $allow_editor ) ); - $wpdb->query( $wpdb->prepare( "UPDATE $table_name SET onoroff = %s WHERE name = 'allow_author'", $allow_author ) ); - $wpdb->query( $wpdb->prepare( "UPDATE $table_name SET onoroff = %s WHERE name = 'advanced_info_emails'", $advanced_info_emails ) ); - $wpdb->query( $wpdb->prepare( "UPDATE $table_name SET onoroff = %s WHERE name = 'plugin_links_emails'", $plugin_links_emails ) ); - - // Delay - $update_delay = isset( $_POST['update_delay'] ) ? sanitize_text_field( $_POST['update_delay'] ) : ''; - $update_delay_days = isset( $_POST['update_delay_days'] ) ? sanitize_text_field( $_POST['update_delay_days'] ) : ''; - - $wpdb->query( $wpdb->prepare( "UPDATE $table_name SET onoroff = %s WHERE name = 'update_delay'", $update_delay ) ); - $wpdb->query( $wpdb->prepare( "UPDATE $table_name SET onoroff = %s WHERE name = 'update_delay_days'", $update_delay_days ) ); - - // Intervals - - // Set variables - $plugin_sc = sanitize_text_field( $_POST['plugin_schedule'] ); - $theme_sc = sanitize_text_field( $_POST['theme_schedule'] ); - $core_sc = sanitize_text_field( $_POST['core_schedule'] ); - $schedule_mail = sanitize_text_field( $_POST['update_notifications'] ); - $outdated_notifier = sanitize_text_field( $_POST['outdated_notifier'] ); - - // First clear schedules - wp_clear_scheduled_hook( 'wp_update_plugins' ); - wp_clear_scheduled_hook( 'wp_update_themes' ); - wp_clear_scheduled_hook( 'wp_version_check' ); - wp_clear_scheduled_hook( 'cau_set_schedule_mail' ); - wp_clear_scheduled_hook( 'cau_custom_hooks_plugins' ); - wp_clear_scheduled_hook( 'cau_custom_hooks_themes' ); - wp_clear_scheduled_hook( 'cau_log_updater' ); - wp_clear_scheduled_hook( 'cau_outdated_notifier' ); - - // Then set the new times - - // Plugins - if( $plugin_sc == 'daily' ) { - - $date = date( 'Y-m-d' ); - $hours = sanitize_text_field( $_POST['plugin_schedule-sethour'] ); - $minutes = sanitize_text_field( $_POST['plugin_schedule-setminutes'] ); - $seconds = date( 's' ); - $fullDate = $date.' '.$hours.':'.$minutes.':'.$seconds; - $pluginSetTime = strtotime( $fullDate ); - - wp_schedule_event( $pluginSetTime, $plugin_sc, 'wp_update_plugins' ); - wp_schedule_event( $pluginSetTime, $plugin_sc, 'cau_custom_hooks_plugins' ); - wp_schedule_event( ( $pluginSetTime - 1800 ), $plugin_sc, 'cau_log_updater' ); - - } else { - wp_schedule_event( time(), $plugin_sc, 'wp_update_plugins' ); - wp_schedule_event( time(), $plugin_sc, 'cau_custom_hooks_plugins' ); - wp_schedule_event( ( time() - 1800 ), $plugin_sc, 'cau_log_updater' ); - } - - // Themes - if( $theme_sc == 'daily' ) { - - $dateT = date( 'Y-m-d' ); - $hoursT = sanitize_text_field( $_POST['theme_schedule-sethour'] ); - $minutesT = sanitize_text_field( $_POST['theme_schedule-setminutes'] ); - $secondsT = date( 's' ); - $fullDateT = $dateT.' '.$hoursT.':'.$minutesT.':'.$secondsT; - $themeSetTime = strtotime( $fullDateT ); - - wp_schedule_event( $themeSetTime, $theme_sc, 'wp_update_themes' ); - wp_schedule_event( $themeSetTime, $theme_sc, 'cau_custom_hooks_themes' ); - - } else { - wp_schedule_event( time(), $theme_sc, 'wp_update_themes' ); - wp_schedule_event( time(), $theme_sc, 'cau_custom_hooks_themes' ); - } - - // Core - if( $core_sc == 'daily' ) { - - $dateC = date( 'Y-m-d' ); - $hoursC = sanitize_text_field( $_POST['core_schedule-sethour'] ); - $minutesC = sanitize_text_field( $_POST['core_schedule-setminutes'] ); - $secondsC = date( 's' ); - $fullDateC = $dateC.' '.$hoursC.':'.$minutesC.':'.$secondsC; - $coreSetTime = strtotime( $fullDateC ); - - wp_schedule_event( $coreSetTime, $core_sc, 'wp_version_check' ); - - } else { - wp_schedule_event( time(), $core_sc, 'wp_version_check' ); - } - - // Update notifications - if( $schedule_mail == 'daily' ) { - - $dateT = date( 'Y-m-d' ); - $hoursT = sanitize_text_field( $_POST['update_notifications-sethour'] ); - $minutesT = sanitize_text_field( $_POST['update_notifications-setminutes'] ); - $secondsT = date( 's' ); - $fullDateT = $dateT.' '.$hoursT.':'.$minutesT.':'.$secondsT; - $emailSetTime = strtotime( $fullDateT ); - - wp_schedule_event( $emailSetTime, $schedule_mail, 'cau_set_schedule_mail' ); - - } else { - wp_schedule_event( time(), $schedule_mail, 'cau_set_schedule_mail' ); - } - - // Outdated notifications - if( $outdated_notifier == 'daily' ) { - - $dateT = date( 'Y-m-d' ); - $hoursT = sanitize_text_field( $_POST['outdated_notifier-sethour'] ); - $minutesT = sanitize_text_field( $_POST['outdated_notifier-setminutes'] ); - $secondsT = date( 's' ); - $fullDateT = $dateT.' '.$hoursT.':'.$minutesT.':'.$secondsT; - $emailSetTime = strtotime( $fullDateT ); - - wp_schedule_event( $emailSetTime, $outdated_notifier, 'cau_outdated_notifier' ); - - } else { - wp_schedule_event( time(), $outdated_notifier, 'cau_outdated_notifier' ); - } - - - echo '

'.__( 'Settings saved.' ).'

'; - -} - -// Welcome screen for first time viewers -if( isset( $_GET['welcome'] ) ) { - echo '
-
-
- -

'.__( 'Welcome to Companion Auto Update', 'companion-auto-update' ).'

-
-

'.__( 'You\'re set and ready to go', 'companion-auto-update' ).'

-

'.__( 'The plugin is all set and ready to go with the recommended settings, but if you\'d like you can change them below.' ).'

-
-

'.__( 'Get Started' ).': '.__( 'Update filter', 'companion-auto-update' ).'   |   - '.__( 'More Actions' ).': '.__('Give feedback', 'companion-auto-update').' - '.__( 'Help us translate', 'companion-auto-update' ).'

- -
-
'; -} - -$cs_hooks_p = wp_get_schedule( 'cau_custom_hooks_plugins' ); -$cs_hooks_t = wp_get_schedule( 'cau_custom_hooks_themes' ); - -?> - -
- -
- -
- -

- - - - - -
-
- -

"; - echo "

"; - echo "

"; - echo "

"; - echo "

"; - - ?> - -
-
- -
- - - -
- -

- - "; - echo ""; - echo "

"; - - // Set the time when daily is selected - echo ""; - - } - - ?> - -
- -

- - -
- -
- -

- - -
- -
- -

- - -
- -

- -
- -

- - -
- -
- -

- - -
- -
- -
- -

- - - - - - - - - - - - - - > - - - - -
-

-

-

-
-

-
- -

-

Please note: Delaying updates does not work with WordPress updates yet.

-
- -
- - - -
- -
-
- - - -
- -
- -
-
-

-
    -
  • -
  • -
- -

-
    -
  • -
  • -
  • -
-
-
-

-
    -
  • -
-
-
- -
-
-

-

-

-

-
-
- -
-

-

You get useful software and we get to carry on making it better.', 'companion-auto-update'); ?>

- - - - - - -

-
- -
-

Plugin Promotion

-

Keep your site fast with our Revision Manager

-

Post Revisions are great, but will also slow down your site. Take back control over revisions with Companion Revision Manager!

- Read more -
- -
- - - - \ No newline at end of file diff --git a/wp-content/plugins/companion-auto-update/admin/log.php b/wp-content/plugins/companion-auto-update/admin/log.php deleted file mode 100644 index 8bdf0542..00000000 --- a/wp-content/plugins/companion-auto-update/admin/log.php +++ /dev/null @@ -1,19 +0,0 @@ - - - - -
- - - - - -
- - -
- We've had to (temporarily) disable the theme filter because it was causing issues on some installations. We'll try to get it working again in a future update. -
- - -

- -prefix."auto_updates"; - -// Save list -if( isset( $_POST['submit'] ) ) { - - check_admin_referer( 'cau_save_pluginlist' ); - - $noUpdateList = ''; - $i = 0; - $noUpdateCount = 0; - - if( isset( $_POST['post'] ) ) { - $noUpdateCount = count( $_POST['post'] ); - } - - if( $noUpdateCount > 0 ) { - foreach ( $_POST['post'] as $key ) { - $noUpdateList .= sanitize_text_field( $key ); - $i++; - if( $i != $noUpdateCount ) $noUpdateList .= ', '; - } - } - - $wpdb->query( $wpdb->prepare( "UPDATE $table_name SET onoroff = '%s' WHERE name = '%s'", $noUpdateList, $db_table ) ); - echo '

'.__( 'Succes', 'companion-auto-update' ).' – '.sprintf( esc_html__( '%1$s %2$s have been added to the no-update-list', 'companion-auto-update' ), $noUpdateCount, strtolower( $filter_name ) ).'.

'; -} - - -// Reset list -if( isset( $_POST['reset'] ) ) { - - check_admin_referer( 'cau_save_pluginlist' ); - - $wpdb->query( $wpdb->prepare( "UPDATE $table_name SET onoroff = '%s' WHERE name = %s", "", $db_table ) ); - echo '

'.__( 'Succes', 'companion-auto-update' ).' – '.sprintf( esc_html__( 'The no-update-list has been reset, all %s will be auto-updated from now on', 'companion-auto-update' ), strtolower( $filter_name ) ).'.

'; -} - - -?> - -
- -
- - -
- - - - - - - - - - - - - - $value ) { - - $slug = $key; - $explosion = explode( '/', $slug ); - $actualSlug = array_shift( $explosion ); - $slug_hash = md5( $slug[0] ); - - if( $filter == 'themes' ) { - - $theme = wp_get_theme( $actualSlug ); - $name = $theme->get( 'Name' ); - $description = $theme->get( 'Description' ); - - } else { - - foreach ( $value as $k => $v ) { - - if( $k == "Name" ) $name = $v; - if( $k == "Description" ) $description = $v; - - } - - } - - if( in_array( $actualSlug, donotupdatelist( $filter ) ) ) { - - $class = 'inactive'; - $checked = 'CHECKED'; - $statusicon = 'no'; - $statusName = 'disabled'; - - } else { - - $class = 'active'; - $checked = ''; - $statusicon = 'yes'; - $statusName = 'enabled'; - } - - echo ' - - - - - - - - - - '; - - } - ?> - - -
 
- - -
-
-

'. $name .'

- '.$actualSlug.' -
-

'.__( 'Auto Updater', 'companion-auto-update' ).':

-
-

'.$description.'

-
- - - -
- - -
- -
\ No newline at end of file diff --git a/wp-content/plugins/companion-auto-update/admin/rollback.php b/wp-content/plugins/companion-auto-update/admin/rollback.php deleted file mode 100644 index c0325af9..00000000 --- a/wp-content/plugins/companion-auto-update/admin/rollback.php +++ /dev/null @@ -1,2 +0,0 @@ -prefix . "auto_updates"; - $schedules = wp_get_schedules(); - $interval_names = cau_wp_get_schedules(); - - // Update the database - if( isset( $_GET['run'] ) && $_GET['run'] == 'db_update' ) { - cau_manual_update(); - echo '

'.__( 'Database update completed' ).'

'; - } - - if( isset( $_GET['run'] ) && $_GET['run'] == 'db_info_update' ) { - cau_savePluginInformation(); - echo '

'.__( 'Database information update completed' ).'

'; - } - - if( isset( $_GET['ignore_report'] ) ) { - - $report_to_ignore = sanitize_text_field( $_GET['ignore_report'] ); - $allowedValues = array( 'seo', 'cron' ); - - if( !in_array( $report_to_ignore, $allowedValues ) ) { - - wp_die( 'Trying to cheat eh?' ); - - } else { - - $table_name = $wpdb->prefix . "auto_updates"; - $wpdb->query( $wpdb->prepare( "UPDATE {$table_name} SET onoroff = %s WHERE name = 'ignore_$report_to_ignore'", 'yes' ) ); - $__ignored = __( 'This report will now be ignored', 'companion-auto-update' ); - echo "

$__ignored

"; - - } - - } - -?> - - - -
- - array( - 'name' => __( 'Events', 'companion-auto-update' ), - 'fields' => array( - 'plugins' => __( 'Plugins', 'companion-auto-update' ), - 'themes' => __( 'Themes', 'companion-auto-update' ), - 'minor' => __( 'Core (Minor)', 'companion-auto-update' ), - 'major' => __( 'Core (Major)', 'companion-auto-update' ), - 'send' => __( 'Update available', 'companion-auto-update' ), - 'sendupdate' => __( 'Successful update', 'companion-auto-update' ), - 'wpemails' => __( 'Core notifications', 'companion-auto-update' ), - 'update_delay' => __( 'Log updater', 'companion-auto-update' ), - ), - 'values' => array( - 'plugins' => 'wp_update_plugins', - 'themes' => 'wp_update_themes', - 'minor' => 'wp_version_check', - 'major' => 'wp_version_check', - 'send' => 'cau_set_schedule_mail', - 'sendupdate' => 'cau_set_schedule_mail', - 'wpemails' => 'cau_set_schedule_mail', - 'update_delay' => 'cau_log_updater', - ), - 'explain' => array( - 'plugins' => __('Auto update plugins?', 'companion-auto-update'), - 'themes' => __('Auto update themes?', 'companion-auto-update'), - 'minor' => __('Auto update minor core updates?', 'companion-auto-update'), - 'major' => __('Auto update major core updates?', 'companion-auto-update'), - 'send' => __( 'Will notify you of available updates.', 'companion-auto-update' ), - 'sendupdate' => __( 'Will notify you after successful updates.', 'companion-auto-update' ), - 'wpemails' => __( 'The default WordPress notifications.', 'companion-auto-update' ), - 'update_delay' => __( 'Will keep track of the update log and make sure updates are delayed when needed.', 'companion-auto-update' ), - ) - ), - ); - - $__sta = __( 'Status', 'companion-auto-update' ); - $__int = __( 'Interval', 'companion-auto-update' ); - $__nxt = __( 'Next', 'companion-auto-update' ); - - foreach( $events as $event => $info ) { - - echo " - - - - - - - - - - - "; - - foreach ( $info['fields'] as $key => $value ) { - - $is_on = ( cau_get_db_value( $key ) == 'on' && wp_get_schedule( $info['values'][$key] ) ) ? true : false; - $__status = $is_on ? 'enabled' : 'warning'; - $__icon = $is_on ? 'yes-alt' : 'marker'; - $__text = $is_on ? __( 'Enabled', 'companion-auto-update' ) : __( 'Disabled', 'companion-auto-update' ); - $__interval = $is_on ? $interval_names[wp_get_schedule( $info['values'][$key] )] : '‐'; - $__next = $is_on ? date_i18n( $dateFormat, wp_next_scheduled( $info['values'][$key] ) ) : '‐'; - $__exp = !empty( $info['explain'][$key] ) ? '
'.$info['explain'][$key].'' : ''; - $__nxt = __( 'Next', 'companion-auto-update' ); - - echo " - - - - - - "; - - } - - echo " - -
{$info['name']}{$__sta}{$__int}{$__nxt}
$value$__exp$__text$__interval$__nxt: $__next
"; - - } - - ?> - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - $__text"; - } else { - $__text = __( 'Disabled', 'companion-auto-update' ); - echo ""; - } - ?> - - - - > - - - - - - - - - - - - > - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
-
- - - -
-
$__text
- - - - - -
DISABLE_WP_CRON true - - -
wp_version_check
VCS'>
- - - - - - - - - - - - - - - - - - - > - - - - - - - - > - - - - - - - - - - - - - - - - - -
WordPress
PHP (Required: 5.1.0 or up)
Database (Latest: )
(GMT ) -
- - - - - - - - - - - - $value ) { - if( is_plugin_active( $key ) ) { - echo ' - - - - '; - } - } - - ?> - - -
'.$key.''.$value.''.__( 'How to fix this', 'companion-auto-update' ).'
- - - - - - - - - - - - - - - - - - -
-
- -
- - - - - - - - - - - - - - - prefix}update_log"; - $put_on_hold = $wpdb->get_results( $wpdb->prepare( "SELECT * FROM {$updateLog} WHERE put_on_hold <> '%s'", '0' ) ); - - foreach ( $put_on_hold as $plugin ) { - - $__name = $plugin->slug; - $__poh = $plugin->put_on_hold; - $__udd = ( cau_get_db_value( 'update_delay_days' ) != '' ) ? cau_get_db_value( 'update_delay_days' ) : '2'; - $__date = date_i18n( $dateFormat, strtotime( "+".$__udd." days", $__poh ) ); - - echo " - - - "; - } - - echo empty( $put_on_hold ) ? "" : ""; - - ?> - - -
{$__name}{$__date}
".__( 'No plugins have been put on hold.', 'companion-auto-update' )."
- -
- - $string ) { - - if( strpos( file_get_contents( $conFile ), $string ) !== false) { - $contents = file_get_contents( $conFile ); - $contents = str_replace( $string, $revLine, $contents ); - file_put_contents( $conFile, $contents ); - $melding = __( "We've fixed the error for you", 'companion-auto-update' ).' :)'; - $meldingS = 'updated'; - } - - } - - echo "

$melding

"; - -} diff --git a/wp-content/plugins/companion-auto-update/backend/images/check.svg b/wp-content/plugins/companion-auto-update/backend/images/check.svg deleted file mode 100644 index 10065cf4..00000000 --- a/wp-content/plugins/companion-auto-update/backend/images/check.svg +++ /dev/null @@ -1,55 +0,0 @@ - - - - - - image/svg+xml - - - - - - - - diff --git a/wp-content/plugins/companion-auto-update/backend/images/email.svg b/wp-content/plugins/companion-auto-update/backend/images/email.svg deleted file mode 100644 index 278ffd98..00000000 --- a/wp-content/plugins/companion-auto-update/backend/images/email.svg +++ /dev/null @@ -1,96 +0,0 @@ - - - -image/svg+xml \ No newline at end of file diff --git a/wp-content/plugins/companion-auto-update/backend/images/help.svg b/wp-content/plugins/companion-auto-update/backend/images/help.svg deleted file mode 100644 index b10cc782..00000000 --- a/wp-content/plugins/companion-auto-update/backend/images/help.svg +++ /dev/null @@ -1,67 +0,0 @@ - - - - - - image/svg+xml - - - - - - - - - - diff --git a/wp-content/plugins/companion-auto-update/backend/images/interval.svg b/wp-content/plugins/companion-auto-update/backend/images/interval.svg deleted file mode 100644 index 2219c00f..00000000 --- a/wp-content/plugins/companion-auto-update/backend/images/interval.svg +++ /dev/null @@ -1,69 +0,0 @@ - - - -image/svg+xml \ No newline at end of file diff --git a/wp-content/plugins/companion-auto-update/backend/images/love.svg b/wp-content/plugins/companion-auto-update/backend/images/love.svg deleted file mode 100644 index 8b341634..00000000 --- a/wp-content/plugins/companion-auto-update/backend/images/love.svg +++ /dev/null @@ -1,116 +0,0 @@ - - - - - - image/svg+xml - - - - - - - - - - - - - - - - - - - - - - - - - - - - - diff --git a/wp-content/plugins/companion-auto-update/backend/images/settings.svg b/wp-content/plugins/companion-auto-update/backend/images/settings.svg deleted file mode 100644 index 63020b4b..00000000 --- a/wp-content/plugins/companion-auto-update/backend/images/settings.svg +++ /dev/null @@ -1,124 +0,0 @@ - - - -image/svg+xml \ No newline at end of file diff --git a/wp-content/plugins/companion-auto-update/backend/images/support.svg b/wp-content/plugins/companion-auto-update/backend/images/support.svg deleted file mode 100644 index 8750aa46..00000000 --- a/wp-content/plugins/companion-auto-update/backend/images/support.svg +++ /dev/null @@ -1,102 +0,0 @@ - - - -image/svg+xml \ No newline at end of file diff --git a/wp-content/plugins/companion-auto-update/backend/images/update.svg b/wp-content/plugins/companion-auto-update/backend/images/update.svg deleted file mode 100644 index 059c5215..00000000 --- a/wp-content/plugins/companion-auto-update/backend/images/update.svg +++ /dev/null @@ -1,91 +0,0 @@ - - - -image/svg+xml \ No newline at end of file diff --git a/wp-content/plugins/companion-auto-update/backend/images/welcome.svg b/wp-content/plugins/companion-auto-update/backend/images/welcome.svg deleted file mode 100644 index 77542371..00000000 --- a/wp-content/plugins/companion-auto-update/backend/images/welcome.svg +++ /dev/null @@ -1,181 +0,0 @@ - - - -image/svg+xml \ No newline at end of file diff --git a/wp-content/plugins/companion-auto-update/backend/style.css b/wp-content/plugins/companion-auto-update/backend/style.css deleted file mode 100644 index 72e20a23..00000000 --- a/wp-content/plugins/companion-auto-update/backend/style.css +++ /dev/null @@ -1,582 +0,0 @@ -/* Default Stylings */ -.nowrap { - white-space: nowrap; -} -.cau_spacing { - height: 25px; -} -.cau_support_buttons { - display: inline-block; -} - -/* Welcome screen */ -.welcome-to-cau { - background: #FFF; - border: 1px solid #CCD0D4; - margin: 25px 0; - padding: 30px; - background-size: 140px; - background-position: left bottom; - background-repeat: no-repeat; - box-shadow: 0 1px 1px rgba(0,0,0,.04); -} -.welcome-to-cau .welcome-image { - display: inline-block; - vertical-align: middle; - width: 100px; - height: 100px; - background-image: url('images/welcome.svg'); - background-size: contain; - background-position: center; - box-sizing: border-box; -} -.welcome-to-cau .welcome-content { - display: inline-block; - vertical-align: middle; - width: calc(100% - 100px); - padding-left: 25px; - box-sizing: border-box; -} -.welcome-to-cau .welcome-content strong { - color: #000; -} -.welcome-to-cau .welcome-content p { - margin: 2px 0; -} -.welcome-to-cau.help-bg { - background-image: url('images/help.svg'); -} -.welcome-to-cau.support-bg { - background-image: url('images/support.svg'); -} -.welcome-to-cau.love-bg { - background-image: url('images/love.svg'); -} -.welcome-to-cau.update-bg { - background-image: url('images/update.svg'); -} -.welcome-to-cau.email-bg { - background-image: url('images/email.svg'); -} -.welcome-to-cau.interval-bg { - background-image: url('images/interval.svg'); -} -.welcome-to-cau.advanced-bg { - background-image: url('images/settings.svg'); -} -.welcome-to-cau h2 { - margin: 0; - margin-bottom: 25px; - font-size: 21px; - font-weight: 400; - line-height: 1.2; -} -.welcome-to-cau h2.title { - margin-bottom: 10px; -} -.welcome-to-cau h3 { - font-size: 16px; - margin-top: 0; -} -.welcome-to-cau a { - text-decoration: none; -} -.welcome-to-cau .welcome-column { - display: inline-block; - vertical-align: top; - box-sizing: border-box; -} -.welcome-to-cau.cau-show-love .welcome-column { - vertical-align: middle; -} -.welcome-to-cau .welcome-column.welcome-column-first { - display: block; - width: 100%; -} -.first-column { - padding-left: 140px; -} -.welcome-to-cau .welcome-column.welcome-column-half { - width: 50%; -} -.welcome-to-cau .welcome-column.welcome-column-third { - width: 33%; -} -.welcome-to-cau .welcome-column.welcome-column-quarter { - width: 25%; -} -.welcome-to-cau a.minimal-button { - display: inline-block; - padding: 5px; -} -select.schedule_interval { - max-width: 90%; - width: 225px; -} -.cau_save_button.fixed_button { - background: #FFF; - box-sizing: border-box; - position: fixed; - width: 100%; - right: 0; - bottom: 0; - margin-left: -25px; - z-index: 1001; - padding: 5px; - box-shadow: 0 -8px 16px 0 rgb(85 93 102 / 30%); -} -.cau_save_button.fixed_button p.submit { - display: block; - text-align: center; - font-weight: bold; - margin: 0; - padding: 0; -} -.cau_save_button.fixed_button p.submit input { - width: 100%; - max-width: 250px; - height: 100%; - padding: 5px; -} -.cau_save_button__space { - height: 75px; -} - -/* Overwrite core UI */ -/*.cau_content input[type="checkbox"]:checked::before { - content: ""; - background: url( 'images/check.svg' ); - background-size: contain; - background-position: center center; -}*/ -.cau_content a { - color: #9178B7; -} -.cau_content a.nav-tab { - color: #23282D; -} -.cau_content .button-primary { - background-color: #9178B7!important; - border-color: #9178B7!important; -} -.cau_content .button-alt { - color: #9178B7!important; - border-color: #9178B7!important; -} -.cau_content .button-hero { - font-weight: 500; - padding: 2px 15px!important; -} -#message.cau { - background: #FFF; - border: 1px solid #CCD0D4; - border-left-width: 4px; - border-left-color: #9178B7; - box-shadow: 0 1px 1px rgba(0,0,0,.04); - margin: 25px 0px 5px 0; - padding: 15px; -} -#message.cau a, #message.cau strong { - color: #9178B7; -} - -/* Dashboard */ -.cau-column-wide { - box-sizing: border-box; - display: inline-block; - vertical-align: top; - width: calc(100% - 450px); - padding-right: 25px; -} -.cau-column-small { - display: inline-block; - vertical-align: top; - width: 450px; -} -.cau-dashboard-box { - background-position: right bottom; -} -.cau-column-wide .cau-dashboard-box { - padding-right: 125px; -} -.cau-dashboard-box a { - margin-left: 0px; - margin-top: 10px; -} -.cau-dashboard-box .welcome-column { - padding-right: 25px; -} -.support-sidebar-list { - margin-bottom: 25px; -} -.cau_content .nav-tab { - position: relative; -} -.cau_content .nav-tab .cau_melding { - display: inline-block; - width: 11px; - height: 11px; - border-radius: 10px; - margin-left: 5px; - position: relative; - bottom: -1px; -} -.cau_content .nav-tab .cau_melding.level-okay { - background: #7AD03A; -} -.cau_content .nav-tab .cau_melding.level-low { - background: #FFBA00; -} -.cau_content .nav-tab .cau_melding.level-high { - background: #FF0000; -} - -/* Table Styling */ -.cau_content .widefat td { - vertical-align: middle!important; -} -table.autoupdate th.head-plugin { - min-width: 250px; -} -table.autoupdate th.head-status { - min-width: 150px; -} -table.autoupdate th.check-column { - position: relative; - min-width: 55px; -} -table.autoupdate tr.inactive { - background: #FEF7F1; -} -table.autoupdate tr.active .check-column { - border-left: 3px solid transparent; -} -table.autoupdate tr.inactive .check-column { - border-left: 3px solid #D54E21; -} -table.autoupdate tr.inactive td.column-status p { - color: #BF3D3C; -} -table.autoupdate tr.active td.column-status p { - color: #000; -} -table.autoupdate tr td.column-description p { - overflow: hidden; - max-height: 18px; -} - -/* Update Log */ -table.autoupdatelog { - margin-top: 25px; -} -table.autoupdatelog strong { - color: #000; -} -table.autoupdatelog .dashicons { - color: #00A0D2; -} - -/* Status */ -table.cau_status_list { - margin-top: 25px; -} -table.cau_status_list:not(.no_column_width) th, table.cau_status_list:not(.no_column_width) td { - width: 25%; -} -.cau_enabled { - color: #7AD03A; -} -.cau_disabled { - color: #FF0000; -} -.cau_warning { - color: #FFBA00; -} -.cau_mobile_prefix { - display: none; -} -table.cau_status_list .cau_status_icon { - width: 50px!important; -} -table.cau_status_list .cau_status_icon .dashicons, table.cau_status_list .cau_status_icon .dashicons-before:before { - height: 25px; - font-size: 2em; -} - -/* Rollback list */ -table.rollbacklist { - max-width: 650px; -} -table.rollbacklist td { - vertical-align: middle; -} -table.rollbacklist td a.versionselectbutton { - display: inline-block; - width: 100px; - text-align: center; -} - -/* Plugin list */ -.pluginListButtons { - display: block; - padding: 15px 0; -} -.pluginListButtons p.submit { - display: inline-block; - margin: 0!important; - padding: 0!important; -} -.cau_content #the-list input[type="checkbox"]:not(:checked), .cau_content #the-list input[type="checkbox"]:checked { - width: 45px; - height: 45px; - position: absolute; - top: 0; - bottom: 0; - z-index: 100; - display: block; - opacity: 0; -} -.cau_content #the-list input[type="checkbox"]:not(:checked) + label, .cau_content #the-list input[type="checkbox"]:checked + label { - position: absolute; - top: 15px; - left: 12px; - cursor: pointer; -} -.cau_content #the-list input[type="checkbox"]:not(:checked) + label:before, .cau_content #the-list input[type="checkbox"]:checked + label:before, .cau_content #the-list input[type="checkbox"]:not(:checked) + label:after, .cau_content #the-list input[type="checkbox"]:checked + label:after { - content: ''; - position: absolute; -} -.cau_content #the-list input[type="checkbox"]:not(:checked) + label:before, .cau_content #the-list input[type="checkbox"]:checked + label:before { - left: 0; - top: -3px; - width: 30px; - height: 16px; - background: transparent; - border: 2px solid #9178B7; - border-radius: 15px; - transition: background-color .2s; -} -.cau_content #the-list input[type="checkbox"]:not(:checked) + label:after, .cau_content #the-list input[type="checkbox"]:checked + label:after { - width: 8px; - height: 8px; - transition: all .2s; - border-radius: 500px; - background: transparent; - border: 2px solid #9178B7; - top: 1px; - left: 5px; -} -.cau_content #the-list input[type="checkbox"]:not(:checked) + label:before { - background: #9178B7; - border: 2px solid #9178B7; -} -.cau_content #the-list input[type="checkbox"]:not(:checked) + label:after { - background: #9178B7; - border-color: #FFF; - left: 18px; -} - -/* Scheduling */ -.cau_schedule_input { - display: inline-block; - vertical-align: middle; - width: 50px; - padding-top: 5px; -} -.cau_schedule_input input { - max-width: 100%; - text-align: center; -} -.cau_schedule_input_div { - display: inline-block; - vertical-align: middle; - padding: 0 6px; - font-weight: bold; -} -.cau_shedule_notation { - display: inline-block; - vertical-align: middle; - width: 125px; - padding-left: 5px; -} -.cau_shedule_notation .dashicons { - position: relative; - bottom: -5px; -} - -/* Tooltip */ -.cau_tooltip { - position: relative; -} -.cau_tooltip .cau_tooltip_text { - visibility: hidden; - background-color: rgba(0,0,0,0.7); - color: #FFF; - text-align: left; - font-size: 14px; - padding: 15px; - border-radius: 6px; - position: absolute; - z-index: 1; - width: 240px; - bottom: 100%; - left: 50%; - margin-left: -60px; - margin-bottom: 10px; - opacity: 0; - transition: .3s; - font-weight: normal; -} -.cau_tooltip:hover .cau_tooltip_text { - visibility: visible; - opacity: 1; -} -.cau_tooltip .cau_tooltip_text::after { - content: " "; - position: absolute; - top: 100%; - left: 50%; - margin-left: -75px; - border-width: 5px; - border-style: solid; - border-color: rgba(0,0,0,0.7) transparent transparent transparent; -} - -/* Responsive */ -@media screen and (max-width: 1400px) { - - .cau-column-wide { - width: calc(100% - 350px); - } - .cau-column-small { - width: 350px; - } - .welcome-to-cau .welcome-column.welcome-column-quarter { - width: 50%; - padding-bottom: 35px; - } - .cau-column-small .welcome-to-cau { - background-image: none; - } - -} -@media screen and (max-width: 1150px) { - - .cau-column-wide, .cau-column-small { - width: 100%; - padding: 0; - } - -} -@media screen and (max-width: 1000px) { - - /* Basics */ - .cau_hide_on_mobile, table.autoupdate thead { - display: none!important; - } - .form-table td fieldset p { - display: block; - padding: 5px 0; - } - .form-table td fieldset input[type="checkbox"] { - display: inline-block; - vertical-align: middle; - width: 25px; - } - .form-table td fieldset label { - display: inline-block; - vertical-align: middle; - width: calc(100% - 40px); - box-sizing: border-box; - padding-left: 5px; - } - .cau_content .nav-tab-wrapper { - position: relative; - top: -20px; - border-bottom: 1px solid #CCC!important; - padding-bottom: 15px!important; - margin-bottom: 0px!important; - } - .cau_content .nav-tab { - font-size: 12px; - margin: 5px 5px 0 0!important; - box-sizing: border-box; - text-align: center; - } - - /* Scheduling */ - .cau_schedule_input { - width: 75px; - } - - /* Custom buttons */ - .cau-button { - display: block; - text-align: center; - margin: 5px 0; - } - .cau-button .dashicons { - float: left; - } - - /* Dashboard */ - .welcome-to-cau { - background-position: right bottom; - } - .welcome-to-cau.love-bg { - background-image: none; - } - .welcome-to-cau .welcome-column { - min-width: 100%; - } - .welcome-to-cau .welcome-column.welcome-column-first { - padding-left: 0px; - } - .cau-column-wide .cau-dashboard-box { - padding-right: 30px; - padding-bottom: 125px - } - .majorMinorExplain { - display: none; - } - - /* Status */ - table.cau_status_list .cau_status_name { - display: inline-block; - width: 50%; - box-sizing: border-box; - font-weight: 500; - } - table.cau_status_list .cau_status_interval { - display: none; - } - table.cau_status_list th.cau_status_next { - display: none; - } - table.cau_status_list td.cau_status_next { - display: block; - width: 100%; - } - table.cau_status_list .cau_status_active_state { - display: inline-block; - width: 50%; - box-sizing: border-box; - text-align: right; - } - .cau_mobile_prefix { - display: inline-block; - padding-right: 5px; - } - table.cau_status_list.cau_status_warnings td { - display: block; - width: 100%; - box-sizing: border-box; - } - table.cau_status_list.cau_status_warnings th.cau_plugin_issue_explain, table.cau_status_list.cau_status_warnings th.cau_plugin_issue_fixit { - display: none; - } - table.cau_status_list.cau_status_warnings td.cau_plugin_issue_name { - font-weight: 500; - } - -} \ No newline at end of file diff --git a/wp-content/plugins/companion-auto-update/backend/warningbar.css b/wp-content/plugins/companion-auto-update/backend/warningbar.css deleted file mode 100644 index 88e62556..00000000 --- a/wp-content/plugins/companion-auto-update/backend/warningbar.css +++ /dev/null @@ -1,11 +0,0 @@ -#wpadminbar #wp-admin-bar-cau-has-issues .ab-icon:before { - /*content: "\f463";*/ - content: "\f332"; - top: 3px; -} -#wpadminbar #wp-admin-bar-cau-has-issues .cau-level-low { - /*color: #FFBA00;*/ -} -#wpadminbar #wp-admin-bar-cau-has-issues .cau-level-high { - color: #FF0000; -} \ No newline at end of file diff --git a/wp-content/plugins/companion-auto-update/cau_emails.php b/wp-content/plugins/companion-auto-update/cau_emails.php deleted file mode 100644 index 082458fc..00000000 --- a/wp-content/plugins/companion-auto-update/cau_emails.php +++ /dev/null @@ -1,526 +0,0 @@ - $version ) { - if( $version == '' ) $version = __( "Unknown", "companion-auto-update" ); - $text .= "- ".sprintf( esc_html__( "%s tested up to: %s", "companion-auto-update" ), $plugin, $version )."\n"; - } - - } - - return $text; - -} - -// Set the content for the emails about pending updates -function cau_pending_message( $single, $plural, $list ) { - - // What markup to use - if( cau_is_html() ) $break = '
'; - else $break = "\n"; - - // Base text - $text = sprintf( esc_html__( 'You have pending %1$s updates on your WordPress site at %2$s.', 'companion-auto-update' ), $single, get_site_url() ); - $text .= $break; - - if( !empty( $list ) ) { - - $text .= $break; - $text .= sprintf( esc_html__( 'The following %1$s have new versions available.', 'companion-auto-update' ), $plural ); - $text .= $break; - - if( cau_is_html() ) $text .= "
    "; - foreach ( $list as $key => $value ) { - if( cau_is_html() ) { - $text .= "
  1. $value
  2. "; - } else { - $text .= "-$value\n"; - } - } - if( cau_is_html() ) $text .= "
"; - - $text .= $break; - } - - $text .= __( 'Leaving your site outdated is a security risk so please consider manually updating them.', 'companion-auto-update' ); - $text .= $break; - - // End - $text .= sprintf( esc_html__( 'Head over to %1$s and check the ones you want to update.', 'companion-auto-update' ), get_admin_url().'update-core.php' ); - - return $text; - -} - -// Set the content for the emails about recent updates -function cau_updated_message( $type, $updatedList ) { - - // What markup to use - if( cau_is_html() ) $break = '
'; - else $break = "\n"; - - // The message - $text = sprintf( esc_html__( - 'One or more %1$s on your WordPress site at %2$s have been updated by Companion Auto Update. No further action is needed on your part. -For more info on what is new visit your dashboard and check the changelog.', 'companion-auto-update' - ), $type, get_site_url() ); - - $text .= $break; - $text .= $break; - $text .= sprintf( esc_html__( - 'The following %1$s have been updated:', 'companion-auto-update' - ), $type ); - - $text .= $break; - $text .= $updatedList; - - $text .= $break; - $text .= __( "(You'll also receive this email if you manually updated a plugin or theme)", "companion-auto-update" ); - - return $text; - -} - -// Checks if plugins are out of date -function cau_list_outdated_software() { - - // Check if cau_get_db_value() function exists. - if ( !function_exists( 'cau_get_db_value' ) ) require_once( plugin_dir_path( __FILE__ ) . 'cau_function.php' ); - - // Set up mail - $subject = '['.get_bloginfo( 'name' ).'] ' . __( 'You have outdated plugins on your site.', 'companion-auto-update' ); - $type = __( 'plugin', 'companion-auto-update' ); - $type_plural = __( 'plugins', 'companion-auto-update' ); - $message = cau_outdated_message( $type, $type_plural, cau_list_outdated() ); - - // Send to all addresses - foreach ( cau_set_email() as $key => $value ) { - foreach ( $value as $k => $v ) { - wp_mail( $v, $subject, $message ); - } - break; - } - -} - -// Checks if theme updates are available -function cau_list_theme_updates() { - - global $wpdb; - $table_name = $wpdb->prefix . "auto_updates"; - - $configs = $wpdb->get_results( "SELECT * FROM $table_name WHERE name = 'themes'"); - foreach ( $configs as $config ) { - - if( $config->onoroff != 'on' ) { - - // Check for required files - if ( !function_exists( 'get_theme_updates' ) ) { - require_once ABSPATH . 'wp-admin/includes/update.php'; - } - - // Begin - $themes = get_theme_updates(); - $list = array(); - - if ( !empty( $themes ) ) { - - foreach ( $themes as $stylesheet => $theme ) { - array_push( $list, $theme->get( 'Name' ) ); - } - - $subject = '[' . get_bloginfo( 'name' ) . '] ' . __( 'Theme update available.', 'companion-auto-update' ); - $type = __('theme', 'companion-auto-update'); - $type_plural = __('themes', 'companion-auto-update'); - $message = cau_pending_message( $type, $type_plural, $list ); - - foreach ( cau_set_email() as $key => $value) { - foreach ($value as $k => $v) { - wp_mail( $v, $subject, $message ); - } - break; - } - } - - } - - } - -} - -// Checks if plugin updates are available -function cau_list_plugin_updates() { - - global $wpdb; - $table_name = $wpdb->prefix . "auto_updates"; - - $configs = $wpdb->get_results( "SELECT * FROM $table_name WHERE name = 'plugins'"); - foreach ( $configs as $config ) { - - if( $config->onoroff != 'on' ) { - - require_once ABSPATH . 'wp-admin/includes/plugin-install.php'; - - // Make sure get_plugin_updates() and get_plugins() are defined - if ( !function_exists( 'get_plugin_updates' ) OR !function_exists( 'get_plugins' ) ) { - require_once ABSPATH . 'wp-admin/includes/plugin.php'; - require_once ABSPATH . 'wp-admin/includes/update.php'; - } - - // Begin - $plugins = get_plugin_updates(); - - if ( !empty( $plugins ) ) { - - $list = array(); - foreach ( (array) $plugins as $plugin_file => $plugin_data ) { - $plugin_data = (object) _get_plugin_data_markup_translate( $plugin_file, (array) $plugin_data, false, true ); - $name = $plugin_data->Name; - array_push( $list, $name ); - } - - $subject = '[' . get_bloginfo( 'name' ) . '] ' . __( 'Plugin update available.', 'companion-auto-update' ); - $type = __( 'plugin', 'companion-auto-update' ); - $type_plural = __( 'plugins', 'companion-auto-update' ); - $message = cau_pending_message( $type, $type_plural, $list ); - - foreach ( cau_set_email() as $key => $value) { - foreach ($value as $k => $v) { - wp_mail( $v, $subject, $message ); - } - break; - } - } - - } - - } -} - -// Alerts when plugin has been updated -function cau_plugin_updated() { - - // Check if cau_get_db_value() function exists. - if ( !function_exists( 'cau_get_db_value' ) ) require_once( plugin_dir_path( __FILE__ ) . 'cau_function.php' ); - - // Set the correct timezone for emails - date_default_timezone_set( cau_get_proper_timezone() ); - - // Create arrays - $pluginNames = array(); - $pluginDates = array(); - $pluginVersion = array(); - $pluginSlug = array(); - $pluginTimes = array(); - $themeNames = array(); - $themeDates = array(); - $themeTimes = array(); - - // Where to look for plugins - $plugdir = plugin_dir_path( __DIR__ ); - if ( !function_exists( 'get_plugins' ) ) require_once( ABSPATH . 'wp-admin/includes/plugin.php' ); // Check if get_plugins() function exists. - $allPlugins = get_plugins(); - - // Where to look for themes - $themedir = get_theme_root(); - $allThemes = wp_get_themes(); - - // Mail schedule - $schedule_mail = wp_get_schedule( 'cau_set_schedule_mail' ); - - // Loop trough all plugins - foreach ( $allPlugins as $key => $value ) { - - // Get plugin data - $fullPath = $plugdir.'/'.$key; - $getFile = $path_parts = pathinfo( $fullPath ); - $pluginData = get_plugin_data( $fullPath ); - - // Get the slug - $explosion = explode( '/', $key ); - $actualSlug = array_shift( $explosion ); - - // Get last update date - $fileDate = date ( 'YmdHi', filemtime( $fullPath ) ); - - switch ( $schedule_mail ) { - case 'hourly': - $lastday = date( 'YmdHi', strtotime( '-1 hour', time() ) ); - break; - case 'twicedaily': - $lastday = date( 'YmdHi', strtotime( '-12 hours', time() ) ); - break; - default: - $lastday = date( 'YmdHi', strtotime( '-1 day', time() ) ); - break; - } - - $dateFormat = get_option( 'date_format' ); - $timestamp = date_i18n( $dateFormat, filemtime( $fullPath ) ); - $timestamp .= ' - '.date( 'H:i', filemtime( $fullPath ) ); - - if( $fileDate >= $lastday ) { - - // Get plugin name - foreach ( $pluginData as $dataKey => $dataValue ) { - if( $dataKey == 'Name') { - array_push( $pluginNames , $dataValue ); - } - if( $dataKey == 'Version') { - array_push( $pluginVersion , $dataValue ); - } - } - - array_push( $pluginDates, $fileDate ); - array_push( $pluginSlug, $actualSlug ); - array_push( $pluginTimes, $timestamp ); - } - - } - - // Loop trough all themes - foreach ( $allThemes as $key => $value ) { - - // Get theme data - $fullPath = $themedir.'/'.$key; - $getFile = $path_parts = pathinfo( $fullPath ); - - // Get last update date - $dateFormat = get_option( 'date_format' ); - $fileDate = date ( 'YmdHi', filemtime( $fullPath ) ); - - if( $schedule_mail == 'hourly' ) { - $lastday = date( 'YmdHi', strtotime( '-1 hour', time() ) ); - } elseif( $schedule_mail == 'twicedaily' ) { - $lastday = date( 'YmdHi', strtotime( '-12 hours', time() ) ); - } elseif( $schedule_mail == 'daily' ) { - $lastday = date( 'YmdHi', strtotime( '-1 day', time() ) ); - } - - $dateFormat = get_option( 'date_format' ); - $timestamp = date_i18n( $dateFormat, filemtime( $fullPath ) ); - $timestamp .= ' - '.date( 'H:i', filemtime( $fullPath ) ); - - if( $fileDate >= $lastday ) { - array_push( $themeNames, $path_parts['filename'] ); - array_push( $themeDates, $fileDate ); - array_push( $themeTimes, $timestamp ); - } - - } - - $totalNumP = 0; - $totalNumT = 0; - $updatedListP = ''; - $updatedListT = ''; - - if( cau_get_db_value( 'html_or_text' ) == 'html' ) { - $updatedListP .= '
    '; - $updatedListT .= '
      '; - } - - foreach ( $pluginDates as $key => $value ) { - - // Set up some var - $plugin_name = $pluginNames[$key]; - $plugin_slug = $pluginSlug[$key]; - $to_version = __( "to version", "companion-auto-update" ).' '.$pluginVersion[$key]; - $more_info_arr = array( __( "Time of update", "companion-auto-update" ) => $pluginTimes[$key] ); - - // Plugin links - if( cau_get_db_value( 'plugin_links_emails' ) == 'on' ) { - $more_info_arr[__( "Plugin details", "companion-auto-update" )] = "".__( "Visit", "companion-auto-update" ).""; - $more_info_arr[__( "Release notes", "companion-auto-update" )] = "".__( "Visit", "companion-auto-update" ).""; - $more_info_arr[__( "Support", "companion-auto-update" )] = "".__( "Visit", "companion-auto-update" ).""; - } - - // Email format - $use_html = ( cau_get_db_value( 'html_or_text' ) == 'html' ) ? true : false; - - // Email content - $updatedListP .= $use_html ? "
    1. " : "-"; // Start row - - $updatedListP .= $use_html ? "{$plugin_name} " : "{$plugin_name} "; // Show plugin name - $updatedListP .= $to_version; // To version - - // Get advanced info - if( cau_get_db_value( 'advanced_info_emails' ) == 'on' ) { - foreach( $more_info_arr as $label => $value ) { - $updatedListP .= $use_html ? "
      {$label}: {$value}" : "\n{$label}: {$value}"; - } - } - - $updatedListP .= $use_html ? "
    2. " : "\n"; // End row - - $totalNumP++; - } - - foreach ( $themeNames as $key => $value ) { - - if( cau_get_db_value( 'html_or_text' ) == 'html' ) { - - $more_info = ''; - if( cau_get_db_value( 'advanced_info_emails' ) == 'on' ) $more_info = "
      ".__( "Time of update", "companion-auto-update" ).": ".$themeTimes[$key].""; - $updatedListT .= "
    3. ".$themeNames[$key]."".$more_info."
    4. "; - - } else { - $updatedListT .= "- ".$themeNames[$key]."\n"; - } - - $totalNumT++; - } - - if( cau_get_db_value( 'html_or_text' ) == 'html' ) { - $updatedListP .= '
    '; - $updatedListT .= '
'; - } - - // Set the email content type - if( cau_get_db_value( 'html_or_text' ) == 'html' ) { - function cau_mail_content_type() { - return 'text/html'; - } - add_filter( 'wp_mail_content_type', 'cau_mail_content_type' ); - } - - // If plugins have been updated, send email - if( $totalNumP > 0 ) { - - // E-mail content - $subject = '[' . get_bloginfo( 'name' ) . '] ' . __('One or more plugins have been updated.', 'companion-auto-update'); - $type = __('plugins', 'companion-auto-update'); - $message = cau_updated_message( $type, $updatedListP ); - - // Send to all addresses - foreach ( cau_set_email() as $key => $value) { - foreach ($value as $k => $v) { - wp_mail( $v, $subject, $message ); - } - break; - } - - } - - // If themes have been updated, send email - if( $totalNumT > 0 ) { - - // E-mail content - $subject = '[' . get_bloginfo( 'name' ) . '] ' . __('One or more themes have been updated.', 'companion-auto-update'); - $type = __('themes', 'companion-auto-update'); - $message = cau_updated_message( $type, $updatedListT ); - - // Send to all addresses - foreach ( cau_set_email() as $key => $value) { - foreach ($value as $k => $v) { - wp_mail( $v, $subject, $message ); - } - break; - } - - } - - if( cau_get_db_value( 'html_or_text' ) == 'html' ) remove_filter( 'wp_mail_content_type', 'cau_mail_content_type' ); - - // Prevent duplicate emails by setting the event again - if( $totalNumT > 0 OR $totalNumP > 0 ) { - if( $schedule_mail == 'hourly' ) { - wp_clear_scheduled_hook('cau_set_schedule_mail'); - wp_schedule_event( strtotime( '+1 hour', time() ) , 'hourly', 'cau_set_schedule_mail' ); - } - } - -} - -function cau_notify_outofdate_db() { - - // Check if cau_get_db_value() function exists. - if ( !function_exists( 'cau_get_db_value' ) ) require_once( plugin_dir_path( __FILE__ ) . 'cau_function.php' ); - - // Database requires an update - if ( cau_incorrectDatabaseVersion() ) { - - // Set up mail - $subject = '[' . get_bloginfo( 'name' ) . '] ' . __( 'We need your help with something', 'companion-auto-update' ); - $message = __( 'Hi there! We need your help updating the database of Companion Auto Update to the latest version. No rush, old features will continue to work but some new features might not work until you update the database.', 'companion-auto-update' ); - - // Send to all addresses - foreach ( cau_set_email() as $key => $value ) { - foreach ( $value as $k => $v ) { - wp_mail( $v, $subject, $message ); - } - break; - } - - } - -} diff --git a/wp-content/plugins/companion-auto-update/cau_functions.php b/wp-content/plugins/companion-auto-update/cau_functions.php deleted file mode 100644 index c55dc60c..00000000 --- a/wp-content/plugins/companion-auto-update/cau_functions.php +++ /dev/null @@ -1,1095 +0,0 @@ -prefix.'auto_updates'; - $cau_configs = $wpdb->get_results( "SELECT name, onoroff FROM {$table_name} WHERE name = 'allow_editor' OR name = 'allow_author'" ); - - foreach ( $cau_configs as $config ) { - if( $config->onoroff == 'on' ) $allowed_roles[] = str_replace( "allow_", "", $config->name ); - } - - return $allowed_roles; - -} - -// What user rights can edit plugin settings? TRUE/FALSE -function cau_allowed_user_rights() { - $user = wp_get_current_user(); // Current user - $allowed_roles = cau_allowed_user_rights_array(); // Allow roles - return array_intersect( $allowed_roles, $user->roles ) ? true : false; -} - -// Get database value -function cau_get_db_value( $name, $table = 'auto_updates' ) { - global $wpdb; - $table_name = $wpdb->prefix.$table; - $cau_configs = $wpdb->get_results( $wpdb->prepare( "SELECT onoroff FROM {$table_name} WHERE name = '%s'", $name ) ); - foreach ( $cau_configs as $config ) return $config->onoroff; -} - -// Get database value -function cau_get_plugininfo( $check, $field ) { - global $wpdb; - $table_name = $wpdb->prefix.'update_log'; - $cau_configs = $wpdb->get_results( $wpdb->prepare( "SELECT * FROM {$table_name} WHERE slug = '%s'", $check ) ); - foreach ( $cau_configs as $config ) return $config->$field; -} - -// Get the set timezone -function cau_get_proper_timezone() { - return ( wp_timezone_string() == '+00:00' ) ? 'UTC' : wp_timezone_string(); -} - -// List of incompatible plugins -function cau_incompatiblePluginlist() { - - // Pluginlist, write as Plugin path => Issue - $pluginList = array( - 'better-wp-security/better-wp-security.php' => " May block auto-updating for everything.", - 'updraftplus/updraftplus.php' => " By default this plugin will not be auto-updated. You'll have to do this manually or enable auto-updating in the settings. Causes no issues with other plugins." - ); - - return $pluginList; - -} -function cau_incompatiblePlugins() { - - $return = false; - - foreach ( cau_incompatiblePluginlist() as $key => $value ) { - if( function_exists( 'is_plugin_active' ) && is_plugin_active( $key ) ) { - $return = true; - } - } - - return $return; - -} - -// Check if has issues -function cau_pluginHasIssues() { - return ( cau_pluginIssueCount() > 0 ) ? true : false; -} -function cau_pluginIssueLevels() { - return checkAutomaticUpdaterDisabled() ? 'high' : 'low'; -} -function cau_pluginIssueCount() { - - $count = 0; - - // blog_public check - if( get_option( 'blog_public' ) == 0 ) $count++; - - // checkAutomaticUpdaterDisabled - if( checkAutomaticUpdaterDisabled() ) $count++; - - // checkCronjobsDisabled - if( checkCronjobsDisabled() ) $count++; - - // cau_incorrectDatabaseVersion - if( cau_incorrectDatabaseVersion() ) $count++; - - // cau_incompatiblePlugins - if( cau_incompatiblePlugins() ) { - foreach ( cau_incompatiblePluginlist() as $key => $value ) { - if( function_exists( 'is_plugin_active' ) && is_plugin_active( $key ) ) { - $count++; - } - } - } - - return $count; -} -function cau_incorrectDatabaseVersion() { - return ( get_option( "cau_db_version" ) != cau_db_version() ) ? true : false; -} - -// Run custom hooks on plugin update -function cau_run_custom_hooks_p() { - - // Check if function exists - if ( ! function_exists( 'get_plugins' ) ) { - require_once ABSPATH . 'wp-admin/includes/plugin.php'; - } - - // Create array - $allDates = array(); - - // Where to look for plugins - $dirr = plugin_dir_path( __DIR__ ); - $listOfAll = get_plugins(); - - // Number of updates - $totalNum = 0; - - // Loop trough all plugins - foreach ( $listOfAll as $key => $value ) { - - // Get data - $fullPath = $dirr.'/'.$key; - $fileDate = date ( 'YmdHi', filemtime( $fullPath ) ); - $fileTime = date ( 'Hi', filemtime( $fullPath ) ); - $update_time = wp_next_scheduled( 'wp_update_plugins' ); - $range_start = date( 'Hi', strtotime( '-30 minutes', $update_time ) ); - $range_end = date( 'Hi', strtotime( '+30 minutes', $update_time ) ); - - // Check when the last update was - switch( wp_get_schedule( 'wp_update_plugins' ) ) { - case 'hourly': - $lastday = date( 'YmdHi', strtotime( '-1 hour', time() ) ); - break; - case 'twicedaily': - $lastday = date( 'YmdHi', strtotime( '-12 hour', time() ) ); - break; - case 'daily': - $lastday = date( 'YmdHi', strtotime( '-1 day', time() ) ); - break; - case 'weekly': - $lastday = date( 'YmdHi', strtotime( '-1 week', time() ) ); - break; - case 'monthly': - $lastday = date( 'YmdHi', strtotime( '-1 month', time() ) ); - break; - default: - $lastday = date( 'YmdHi', strtotime( '-1 hour', time() ) ); - break; - } - - if( $fileDate >= $lastday ) { - array_push( $allDates, $fileDate ); - $status = ( $fileTime > $range_start && $fileTime < $range_end ) ? __( 'Automatic', 'companion-auto-update' ) : __( 'Manual', 'companion-auto-update' ); - $totalNum++; - cau_updatePluginInformation( $key, $status ); - } - - } - - // If there have been plugin updates run hook - if( $totalNum >= 1 ) { - do_action( 'cau_after_plugin_update' ); - } - -} - -// Run custom hooks on theme update -function cau_run_custom_hooks_t() { - - $allDates = array(); - $totalNum = 0; - $dirr = get_theme_root(); - $listOfAll = wp_get_themes(); - - // Loop trough all plugins - foreach ( $listOfAll as $key => $value) { - - // Get data - $fullPath = $dirr.'/'.$key; - $fileDate = date ( 'YmdHi', filemtime( $fullPath ) ); - $fileTime = date ( 'Hi', filemtime( $fullPath ) ); - $update_time = wp_next_scheduled( 'wp_update_themes' ); - $range_start = date( 'Hi', strtotime( '-30 minutes', $update_time ) ); - $range_end = date( 'Hi', strtotime( '+30 minutes', $update_time ) ); - - // Check when the last update was - switch( wp_get_schedule( 'wp_update_themes' ) ) { - case 'hourly': - $lastday = date( 'YmdHi', strtotime( '-1 hour', time() ) ); - break; - case 'twicedaily': - $lastday = date( 'YmdHi', strtotime( '-12 hour', time() ) ); - break; - case 'daily': - $lastday = date( 'YmdHi', strtotime( '-1 day', time() ) ); - break; - case 'weekly': - $lastday = date( 'YmdHi', strtotime( '-1 week', time() ) ); - break; - case 'monthly': - $lastday = date( 'YmdHi', strtotime( '-1 month', time() ) ); - break; - default: - $lastday = date( 'YmdHi', strtotime( '-1 hour', time() ) ); - break; - } - - if( $fileDate >= $lastday ) { - array_push( $allDates, $fileDate ); - $status = ( $fileTime > $range_start && $fileTime < $range_end ) ? __( 'Automatic', 'companion-auto-update' ) : __( 'Manual', 'companion-auto-update' ); - $totalNum++; - cau_updatePluginInformation( $key, $status ); - } - - } - - // Count number of updated plugins - foreach ( $allDates as $key => $value ) $totalNum++; - - // If there have been plugin updates run hook - if( $totalNum > 0 ) { - do_action( 'cau_after_theme_update' ); - } - -} - -// Run custom hooks on core update -function cau_run_custom_hooks_c() { - - $totalNum = 0; - $fullPath = ABSPATH.'wp-includes/version.php'; - $fileDate = date ( 'YmdHi', filemtime( $fullPath ) ); - $update_time = wp_next_scheduled( 'wp_version_check' ); - $range_start = date( 'Hi', strtotime( '-30 minutes', $update_time ) ); - $range_end = date( 'Hi', strtotime( '+30 minutes', $update_time ) ); - - // Check when the last update was - switch( wp_get_schedule( 'wp_version_check' ) ) { - case 'hourly': - $lastday = date( 'YmdHi', strtotime( '-1 hour', time() ) ); - break; - case 'twicedaily': - $lastday = date( 'YmdHi', strtotime( '-12 hour', time() ) ); - break; - case 'daily': - $lastday = date( 'YmdHi', strtotime( '-1 day', time() ) ); - break; - case 'weekly': - $lastday = date( 'YmdHi', strtotime( '-1 week', time() ) ); - break; - case 'monthly': - $lastday = date( 'YmdHi', strtotime( '-1 month', time() ) ); - break; - default: - $lastday = date( 'YmdHi', strtotime( '-1 hour', time() ) ); - break; - } - - if( $fileDate >= $lastday ) { - $status = ( $update_time > $range_start && $update_time < $range_end ) ? __( 'Automatic', 'companion-auto-update' ) : __( 'Manual', 'companion-auto-update' ); - $totalNum++; - cau_updatePluginInformation( 'core', $status ); - } - - // If there have been plugin updates run hook - if( $totalNum > 0 ) { - do_action( 'cau_after_core_update' ); - } - -} - -// Check if automatic updating is disabled globally -function checkAutomaticUpdaterDisabled() { - - // I mean, I know this can be done waaaay better but I's quite late and I need to push a fix so take it or leave it untill I decide to fix this :) - if ( defined( 'automatic_updater_disabled' ) ) { - return ( doing_filter( 'automatic_updater_disabled' ) OR in_array( constant( 'automatic_updater_disabled' ), array( 'true', 'minor' ) ) ) ? true : false; - - } else if ( defined( 'AUTOMATIC_UPDATER_DISABLED' ) ) { - return ( doing_filter( 'AUTOMATIC_UPDATER_DISABLED' ) OR in_array( constant( 'AUTOMATIC_UPDATER_DISABLED' ), array( 'true', 'minor' ) ) ) ? true : false; - - } else { - return false; - } - -} - -// Check if cronjobs are disabled -function checkCronjobsDisabled() { - return ( defined( 'DISABLE_WP_CRON' ) && DISABLE_WP_CRON ) ? true : false; -} - -// Menu location -function cau_menloc( $after = '' ) { - return 'tools.php'.$after; -} -function cau_url( $tab = '' ) { - return admin_url( cau_menloc( '?page=cau-settings&tab='.$tab ) ); -} - -// Get the active tab -function active_tab( $page, $identifier = 'tab' ) { - echo _active_tab( $page, $identifier ); -} -function _active_tab( $page, $identifier = 'tab' ) { - $cur_page = !isset( $_GET[ $identifier ] ) ? '' : $_GET[ $identifier ]; - if( $page == $cur_page ) { - return 'nav-tab-active'; - } -} - -// Get the active subtab -function active_subtab( $page, $identifier = 'tab' ) { - $cur_page = !isset( $_GET[ $identifier ] ) ? '' : $_GET[ $identifier ]; - if( $page == $cur_page ) { - echo 'current'; - } -} - -// List of plugins that should not be updated -function donotupdatelist( $filter = 'plugins' ) { - - global $wpdb; - - $db_table = ( $filter == 'themes' ) ? 'notUpdateListTh' : 'notUpdateList'; - $table_name = $wpdb->prefix."auto_updates"; - $config = $wpdb->get_results( "SELECT * FROM {$table_name} WHERE name = '{$db_table}'"); - - $list = explode( ", ", $config[0]->onoroff ); - $returnList = array(); - - foreach ( $list as $key ) array_push( $returnList, $key ); - - return $returnList; - -} -function plugins_donotupdatelist() { - - $array = array(); - - // Filtered plugins - foreach ( donotupdatelist( 'plugins' ) as $filteredplugin ) { - array_push( $array, $filteredplugin ); - } - - // Plugin added to the delay list - foreach ( cau_delayed_updates__formated() as $delayedplugin ) { - array_push( $array, $delayedplugin ); - } - - return $array; - -} -function themes_donotupdatelist() { - return donotupdatelist( 'themes' ); -} - -// Show the update log -function cau_fetch_log( $limiter, $format = 'simple' ) { - - global $wpdb; - - $updateLog = "update_log"; - $updateLogDB = $wpdb->prefix.$updateLog; - $filter = isset( $_GET['filter'] ) ? $_GET['filter'] : 'all'; - $dateFormat = get_option( 'date_format' ); - $dateToday = date ( 'ydm' ); - $log_items = array(); - $limit = ( $limiter != 'all' ) ? $limiter : false; - - $show_plugins = ( in_array( $filter, array( 'plugins', 'all' ) ) ) ? true : false; - $show_themes = ( in_array( $filter, array( 'themes', 'all' ) ) ) ? true : false; - $show_core = ( $filter == 'all' ) ? true : false; - $show_translations = ( $filter == 'translations' ) ? true : false; - - // PLUGINS - if( $show_plugins ) { - - // Make sure some required functions exits - if ( !function_exists( 'get_plugins' ) ) { - require_once ABSPATH . 'wp-admin/includes/plugin.php'; - } - - // Loop trough all plugins - foreach ( get_plugins() as $key => $value ) { - - // Get data - $fullPath = plugin_dir_path( __DIR__ ).'/'.$key; - $pluginData = get_plugin_data( $fullPath ); - $pluginSlug = explode( '/', plugin_basename( $key ) ); - $pluginSlug = $pluginSlug[0]; - - $fileTime = date( 'Hi', filemtime( $fullPath ) ); - $fileDate = date( 'ydm', filemtime( $fullPath ) ); - $fileDateTime = strtotime( $fileDate ); - $updateSched = wp_next_scheduled( 'wp_update_plugins' ); - - if( $dateToday == $fileDate ) { - $method = ( $fileTime > date( 'Hi', strtotime( '-30 minutes', $updateSched ) ) && $fileTime < date( 'Hi', strtotime( '+30 minutes', $updateSched ) ) ) ? __( 'Automatic', 'companion-auto-update' ) : __( 'Manual', 'companion-auto-update' ); - } else { - $method = cau_check_if_exists( $key, 'slug', $updateLog ) ? cau_get_plugininfo( $key, 'method' ) : '-'; - } - - $log_items[$fileDateTime.'_'.$pluginSlug] = array( - 'type' => 'Plugin', - 'slug' => $pluginSlug, - 'name' => $pluginData['Name'], - 'date' => $fileDateTime, - 'version' => $pluginData['Version'], - 'method' => $method, - ); - - } - - } - - // THEMES - if( $show_themes ) { - - // Loop trough all themes - foreach ( wp_get_themes() as $key => $value ) { - - // Get data - $fullPath = get_theme_root().'/'.$key; - $path_parts = pathinfo( $fullPath ); - $theme_data = wp_get_theme( $path_parts['filename'] ); - - $fileTime = date( 'Hi', filemtime( $fullPath ) ); - $fileDate = date( 'ydm', filemtime( $fullPath ) ); - $fileDateTime = strtotime( $fileDate ); - $updateSched = wp_next_scheduled( 'wp_update_themes' ); - - if( $dateToday == $fileDate ) { - $method = ( $fileTime > date( 'Hi', strtotime( '-30 minutes', $updateSched ) ) && $fileTime < date( 'Hi', strtotime( '+30 minutes', $updateSched ) ) ) ? __( 'Automatic', 'companion-auto-update' ) : __( 'Manual', 'companion-auto-update' ); - } else { - $method = cau_check_if_exists( $key, 'slug', $updateLog ) ? cau_get_plugininfo( $key, 'method' ) : '-'; - } - - $log_items[$fileDateTime.'_'.$key] = array( - 'type' => 'Theme', - 'slug' => '', - 'name' => $theme_data->get( 'Name' ), - 'date' => $fileDateTime, - 'version' => $theme_data->get( 'Version' ), - 'method' => $method, - ); - - } - - } - - // TRANSLATIONS - if( $show_translations ) { - - $transFolder = get_home_path() . 'wp-content/languages'; // There is no way (at this time) to check if someone changed this link, so therefore it won't work when it's changed, sorry - if( file_exists( $transFolder ) ) { - - // Plugin translations - $files = glob( $transFolder.'/plugins/*.{mo}', GLOB_BRACE ); - foreach( $files as $file ) { - - $fileDateTime = strtotime( date( 'YmdHi', filemtime( $file ) ) ); - $bn = basename( $file ); - - $log_items[$fileDateTime.'_'.$bn] = array( - 'type' => __( 'Plugin translations', 'companion-auto-update' ), - 'slug' => '', - 'name' => str_replace( ".json", "", str_replace( ".mo", "", str_replace( "-", " ", $bn ) ) ), - 'date' => $fileDateTime, - 'version' => '', - 'method' => '', - ); - - } - - // Theme translations - $files = glob( $transFolder.'/themes/*.{mo}', GLOB_BRACE ); - foreach( $files as $file ) { - - $fileDateTime = strtotime( date( 'YmdHi', filemtime( $file ) ) ); - $bn = basename( $file ); - - $log_items[$fileDateTime.'_'.$bn] = array( - 'type' => __( 'Theme translations', 'companion-auto-update' ), - 'slug' => '', - 'name' => str_replace( ".json", "", str_replace( ".mo", "", str_replace( "-", " ", $bn ) ) ), - 'date' => $fileDateTime, - 'version' => '', - 'method' => '', - ); - - } - - // Core translations - $files = glob( $transFolder.'/*.{mo}', GLOB_BRACE ); - foreach( $files as $file ) { - - $fileDateTime = strtotime( date( 'YmdHi', filemtime( $file ) ) ); - $bn = basename( $file ); - - $log_items[$fileDateTime.'_'.$bn] = array( - 'type' => __( 'Core translations', 'companion-auto-update' ), - 'slug' => '', - 'name' => str_replace( ".json", "", str_replace( ".mo", "", str_replace( "-", " ", $bn ) ) ), - 'date' => $fileDateTime, - 'version' => '', - 'method' => '', - ); - - } - - } - - } - - // CORE - if( $show_core ) { - - $coreFile = ABSPATH . 'wp-includes/version.php'; - if( file_exists( $coreFile ) ) { - - $fileTime = date( 'Hi', filemtime( $coreFile ) ); - $fileDate = date( 'ydm', filemtime( $coreFile ) ); - $fileDateTime = strtotime( $fileDate ); - $updateSched = wp_next_scheduled( 'wp_version_check' ); - - if( $dateToday == $fileDate ) { - $method = ( $fileTime > date( 'Hi', strtotime( '-30 minutes', $updateSched ) ) && $fileTime < date( 'Hi', strtotime( '+30 minutes', $updateSched ) ) ) ? __( 'Automatic', 'companion-auto-update' ) : __( 'Manual', 'companion-auto-update' ); - } else { - $method = cau_check_if_exists( 'core', 'slug', $updateLog ) ? cau_get_plugininfo( 'core', 'method' ) : '-'; - } - - - } else { - $fileDateTime = 'Could not read core date.'; - $method = '-'; - } - - $log_items[$fileDateTime.'_'.$key] = array( - 'type' => 'WordPress', - 'slug' => '', - 'name' => 'WordPress', - 'date' => $fileDateTime, - 'version' => get_bloginfo( 'version' ), - 'method' => $method, - ); - - } - - $listClasses = 'wp-list-table widefat autoupdate autoupdatelog'; - - if( $format == 'table' ) { - $listClasses .= ' autoupdatelog striped'; - } else { - $listClasses .= ' autoupdatewidget'; - } - - echo ''; - - // Show the last updated plugins - if( $format == 'table' ) { - - echo ' - - '; - if( !$show_translations ) echo ''; - echo ' - - - - '; - - } - - echo ''; - - krsort( $log_items ); - $limited_log_items = $limit ? array_slice( $log_items, 0, $limit ) : $log_items; - - foreach ( $limited_log_items as $key => $value ) { - - echo ''; - - $log_item__name = $value['name']; - $log_item__name_f = ( $format != 'table' && strlen( $log_item__name ) > 25 ) ? substr( $log_item__name, 0, 25 ).'...' : $log_item__name; - $log_item__type = $value['type']; - $log_item__slug = $value['slug']; - $log_item__version = $value['version']; - $log_item__date = date_i18n( get_option( 'date_format' ), $value['date'] ); - $log_item__method = $value['method']; - - echo ''; - - if( $format == 'table' ) { - if( !$show_translations ) echo ''; - echo ''; - } - echo ''; - - - if( $format == 'table' ) { - echo ''; - } - - echo ''; - - } - - echo "
'.__( 'Name', 'companion-auto-update' ).''.__( 'To version', 'companion-auto-update' ).''.__( 'Type', 'companion-auto-update' ).''.__( 'Last updated on', 'companion-auto-update' ).''.__( 'Update method', 'companion-auto-update' ).'

'.cau_getChangelogUrl( $log_item__type, $log_item__name_f, $log_item__slug ).'

'.$log_item__version.'

'.$log_item__type.'

'.$log_item__date.'

'.$log_item__method.'

"; - -} - -// Get the proper changelog URL -function cau_getChangelogUrl( $type, $name, $plugslug ) { - - switch( $type ) { - case 'WordPress': - $url = ''; - break; - case 'Plugin': - $url = admin_url( 'plugin-install.php?tab=plugin-information&plugin='.$plugslug.'§ion=changelog&TB_iframe=true&width=772&height=772' ); - break; - case 'Theme': - $url = ''; - break; - } - - return !empty( $url ) ? "{$name}" : $name; - -} - -// Only update plugins which are enabled -function cau_dontUpdatePlugins( $update, $item ) { - return in_array( $item->slug, plugins_donotupdatelist() ) ? false : true; -} -function cau_dontUpdateThemes( $update, $item ) { - return in_array( $item->slug, themes_donotupdatelist() ) ? false : true; -} - -// Get plugin information of repository -function cau_plugin_info( $slug, $what ) { - - $slug = sanitize_title( $slug ); - $cau_transient_name = 'cau' . $slug; - $cau_info = get_transient( $cau_transient_name ); - - if( !function_exists( 'plugins_api' ) ) require_once( ABSPATH.'wp-admin/includes/plugin-install.php' ); - $cau_info = plugins_api( 'plugin_information', array( 'slug' => $slug ) ); - - if ( ! $cau_info or is_wp_error( $cau_info ) ) { - return false; - } - - set_transient( $cau_transient_name, $cau_info, 3600 ); - - switch ( $what ) { - case 'versions': - return $cau_info->versions; - break; - case 'version': - return $cau_info->version; - break; - case 'name': - return $cau_info->name; - break; - case 'slug': - return $cau_info->slug; - break; - } - -} - -// Get list of outdated plugins -function cau_list_outdated() { - - $outdatedList = array(); - - // Check if function exists - if ( ! function_exists( 'get_plugins' ) ) { - require_once ABSPATH . 'wp-admin/includes/plugin.php'; - } - - if( !function_exists( 'plugins_api' ) ) { - require_once( ABSPATH.'wp-admin/includes/plugin-install.php' ); - } - - foreach ( get_plugins() as $key => $value) { - - $slug = $key; - $explosion = explode( '/', $slug ); - $actualSlug = array_shift( $explosion ); - - // Get plugin name - foreach ( $value as $k => $v ) if( $k == "Name" ) $name = $v; - - // Get plugins tested up to version - $api = plugins_api( 'plugin_information', array( 'slug' => wp_unslash( $actualSlug ), 'tested' => true ) ); - - // Version compare - $tested_version = !empty( $api->tested ) ? substr( $api->tested, 0, 3 ) : false; // Format version number - - // Check if "tested up to" version number is set - if( $tested_version ) { - - $current_version = substr( get_bloginfo( 'version' ), 0, 3 ); // Format version number - $version_difference = ( (int)$current_version - (int)$tested_version ); // Get the difference - // $tested_wp = ( empty( $api->tested ) || cau_version_compare( get_bloginfo( 'version' ), $api->tested, '<' ) ); - - if( $version_difference >= '0.3' ) { - $outdatedList[$name] = substr( $api->tested, 0, 3 ); - } - - } else { - $outdatedList[$name] = ''; // We'll catch this when sending the e-mail - } - - } - - return $outdatedList; - -} - -// Better version compare -function cau_version_compare( $ver1, $ver2, $operator = null ) { - $p = '#(\.0+)+($|-)#'; - $ver1 = preg_replace( $p, '', $ver1 ); - $ver2 = preg_replace( $p, '', $ver2 ); - return isset( $operator ) ? version_compare( $ver1, $ver2, $operator ) : version_compare( $ver1, $ver2 ); -} - -// Get plugin information of currently installed plugins -function cau_active_plugin_info( $slug, $what ) { - - // Check if function exists - if ( ! function_exists( 'get_plugins' ) ) { - require_once ABSPATH . 'wp-admin/includes/plugin.php'; - } - - $allPlugins = get_plugins(); - - foreach( $allPlugins as $key => $value ) { - $thisSlug = explode('/', $key); - $thisSlugE = $thisSlug[0]; - if( $thisSlug == $slug ) { - if( $what == 'version' ) return $value['Version']; - } - } - -} - -// Remove update nag when major updates are disabled -function cau_hideUpdateNag() { - if( cau_get_db_value( 'major' ) != 'on' ) { - remove_action( 'admin_notices', 'update_nag', 3 ); - remove_action( 'network_admin_notices', 'maintenance_nag', 10 ); - } -} -add_action( 'admin_head', 'cau_hideUpdateNag', 100 ); - -// Add more intervals to event schedules -function cau_addMoreIntervals( $schedules ) { - - // Add a weekly interval. - $schedules['weekly'] = array( - 'interval' => 604800, - 'display' => __( 'Every week', 'companion-auto-update' ), - ); - - // Add a twice montly interval. - $schedules['twice_monthly'] = array( - 'interval' => 1209600, - 'display' => __( 'Every 2 weeks', 'companion-auto-update' ), - ); - - // Add a montly interval. - $schedules['once_monthly'] = array( - 'interval' => 2419200, - 'display' => __( 'Every 4 weeks', 'companion-auto-update' ), - ); - - return $schedules; - -} -add_filter( 'cron_schedules', 'cau_addMoreIntervals' ); - -// Get only unique schedules -function cau_wp_get_schedules() { - - // Start variables - $availableIntervals = wp_get_schedules(); - $array_unique = array(); - $intervalTimes = array(); - $intervalNames = array(); - $intervalUniques = array(); - $counter = 0; - - // Get all intervals - foreach ( $availableIntervals as $key => $value ) { - - // Do a bunch of checks to format them the right way - foreach ( $value as $display => $interval ) { - - if( $display == 'interval' ) { - - if( $interval == '86400' ) $key = 'daily'; // Force the daily interval to be called daily, required by a bunch of handles of this plugin - - $intervalTimes[$counter] = $key; // Add the backend name (i.e. "once_monthly" or "daily") - $intervalUniques[$counter] = $interval; // Add the unix timestamp of this interval, used to identify unique items - - // Format display name in a proper way - $numOfMinutes = ($interval/60); - $identifier = __( 'minutes', 'companion-auto-update' ); - - // I just know there's an easier way for this, but I can't come up with it and this works so... - if( $interval >= (60*60) ) { - $numOfMinutes = ($numOfMinutes/60); - $identifier = __( 'hours', 'companion-auto-update' ); - } - if( $interval >= (60*60*24) ) { - $numOfMinutes = ($numOfMinutes/24); - $identifier = __( 'days', 'companion-auto-update' ); - } - if( $interval >= (60*60*24*7) ) { - $numOfMinutes = ($numOfMinutes/7); - $identifier = __( 'weeks', 'companion-auto-update' ); - } - if( $interval >= (60*60*24*7*(52/12)) ) { - $numOfMinutes = ($numOfMinutes/(52/12)); - $identifier = __( 'months', 'companion-auto-update' ); - } - - $display = sprintf( esc_html__( 'Every %s %s', 'companion-auto-update' ), round( $numOfMinutes, 2 ), $identifier ); // Translateble - $intervalNames[$counter] = $display; // Add the display name (i.e. "Once a month" or "Once Daily") - - $counter++; // Make sure the next interval gets a new "key" value - } - - } - - } - - // Sort the interval from smallest to largest - asort( $intervalUniques ); - - // Prevent duplicates - foreach ( array_unique( $intervalUniques ) as $key => $value ) { - // $value is the timestamp - // $intervalTimes[$key] is the backend name - // $intervalNames[$key] is the display name - $array_unique[$intervalTimes[$key]] = $intervalNames[$key]; - } - - // Return the array - return $array_unique; - -} - -// Check if the update log db is empty -function cau_updateLogDBisEmpty() { - - global $wpdb; - $updateDB = "update_log"; - $updateLog = $wpdb->prefix.$updateDB; - $row_count = $wpdb->get_var( "SELECT COUNT(*) FROM $updateLog" ); - - return ( $row_count > 0 ) ? false : true; -} - -// Plugin information to DB -function cau_savePluginInformation( $method = 'New' ) { - - // Check if function exists - if ( ! function_exists( 'get_plugins' ) ) { - require_once ABSPATH . 'wp-admin/includes/plugin.php'; - } - - // Set variables - global $wpdb; - $updateDB = "update_log"; - $updateLog = $wpdb->prefix.$updateDB; - $allPlugins = get_plugins(); - $allThemes = wp_get_themes(); - - // Loop trough all themes - foreach ( $allThemes as $key => $value ) { - if( !cau_check_if_exists( $key, 'slug', $updateDB ) ) $wpdb->insert( $updateLog, array( 'slug' => $key, 'oldVersion' => '-', 'method' => $method ) ); - } - - // Loop trough all plugins - foreach ( $allPlugins as $key => $value ) { - if( !cau_check_if_exists( $key, 'slug', $updateDB ) ) $wpdb->insert( $updateLog, array( 'slug' => $key, 'oldVersion' => '-', 'method' => $method ) ); - } - - // Core - if( !cau_check_if_exists( 'core', 'slug', $updateDB ) ) $wpdb->insert( $updateLog, array( 'slug' => 'core', 'oldVersion' => '-', 'method' => $method ) ); - -} - -function cau_updatePluginInformation( $slug, $method = '-', $newVersion = '-' ) { - - global $wpdb; - $updateDB = "update_log"; - $updateLog = $wpdb->prefix.$updateDB; - $wpdb->query( $wpdb->prepare( "UPDATE $updateLog SET newVersion = '%s', method = %s WHERE slug = '%s'", $newVersion, $method, $slug ) ); - -} - -function cau_siteHealthSignature() { - return '

'.__( 'This was reported by the Companion Auto Update plugin', 'companion-auto-update' ).'

'; -} - -function cau_add_siteHealthTest( $tests ) { - $tests['direct']['cau_disabled'] = array( 'label' => __( 'Companion Auto Update', 'companion-auto-update' ), 'test' => 'cau_disabled_test' ); - return $tests; -} -add_filter( 'site_status_tests', 'cau_add_siteHealthTest' ); - -function cau_disabled_test() { - - $result = array( - 'label' => __( 'Auto updating is enabled', 'companion-auto-update' ), - 'status' => 'good', - 'badge' => array( - 'label' => __( 'Security' ), - 'color' => 'blue', - ), - 'description' => sprintf( '

%s

', __( "Automatic updating isn't disabled on this site.", 'companion-auto-update' ) ), - 'actions' => '', - 'test' => 'cau_disabled', - ); - - if ( checkAutomaticUpdaterDisabled() OR !has_filter( 'wp_version_check', 'wp_version_check' ) ) { - $result['status'] = 'critical'; - $result['label'] = __( 'Auto updating is disabled', 'companion-auto-update' ); - $result['description'] = __( 'Automatic updating is disabled on this site by either WordPress, another plugin or your webhost.', 'companion-auto-update' ); - $result['description'] .= ' '.__( 'For more information about this error check the status page.', 'companion-auto-update' ); - $result['actions'] .= sprintf( '

%s', esc_url( cau_url( 'status' ) ), __( 'Check the status page', 'companion-auto-update' ) ); - } - - $result['actions'] .= cau_siteHealthSignature(); - - return $result; -} - -// Check for version control -function cau_test_is_vcs_checkout( $context ) { - - $context_dirs = array( ABSPATH ); - $vcs_dirs = array( '.svn', '.git', '.hg', '.bzr' ); - $check_dirs = array(); - $result = array(); - - foreach ( $context_dirs as $context_dir ) { - // Walk up from $context_dir to the root. - do { - $check_dirs[] = $context_dir; - - // Once we've hit '/' or 'C:\', we need to stop. dirname will keep returning the input here. - if ( $context_dir == dirname( $context_dir ) ) - break; - - // Continue one level at a time. - } while ( $context_dir = dirname( $context_dir ) ); - } - - $check_dirs = array_unique( $check_dirs ); - - // Search all directories we've found for evidence of version control. - foreach ( $vcs_dirs as $vcs_dir ) { - foreach ( $check_dirs as $check_dir ) { - if ( $checkout = @is_dir( rtrim( $check_dir, '\\/' ) . "/$vcs_dir" ) ) { - break 2; - } - } - } - - if ( $checkout && ! apply_filters( 'automatic_updates_is_vcs_checkout', true, $context ) ) { - $result['description'] = sprintf( __( 'The folder %s was detected as being under version control (%s), but the %s filter is allowing updates' , 'companion-auto-update' ), "$check_dir", "automatic_updates_is_vcs_checkout" ); - $result['icon'] = 'warning'; - $result['status'] = 'info'; - } else if ( $checkout ) { - $result['description'] = sprintf( __( 'The folder %s was detected as being under version control (%s)' , 'companion-auto-update' ), "$check_dir", "$vcs_dir" ); - $result['icon'] = 'no'; - $result['status'] = 'disabled'; - } else { - $result['description'] = __( 'No issues detected' , 'companion-auto-update' ); - $result['icon'] = 'yes-alt'; - $result['status'] = 'enabled'; - } - - return $result; -} - -// Check if plugins need to be delayed -function cau_check_delayed() { - if( cau_get_db_value( 'update_delay' ) == 'on' ) { - cau_hold_updates(); - cau_unhold_updates(); - } else { - cau_unhold_all_updates(); - } -} - -// List of all delayed plugins -function cau_delayed_updates() { - - global $wpdb; - $plugin_list = array(); - $updateLog = $wpdb->prefix."update_log"; - $put_on_hold = $wpdb->get_results( $wpdb->prepare( "SELECT * FROM {$updateLog} WHERE put_on_hold <> '%s'", '0' ) ); - foreach ( $put_on_hold as $plugin ) { - array_push( $plugin_list, $plugin->slug ); - } - return $plugin_list; - -} - -// List of all delayed plugins for the update function -function cau_delayed_updates__formated() { - - $plugin_list = array(); - foreach ( cau_delayed_updates() as $plugin ) { - $explosion = explode( '/', $plugin ); - $short_slug = array_shift( $explosion ); - array_push( $plugin_list, $short_slug ); - } - return $plugin_list; - -} - -// Add "put on hold" timestamp to the database if it hasn't been set yet -function cau_hold_updates() { - - if ( !function_exists( 'get_plugin_updates' ) ) require_once ABSPATH . 'wp-admin/includes/update.php'; - $plugins = get_plugin_updates(); - - if ( !empty( $plugins ) ) { - $list = array(); - foreach ( (array)$plugins as $plugin_file => $plugin_data ) { - if( !in_array( $plugin_file, cau_delayed_updates() ) ) { - global $wpdb; - $updateLog = "{$wpdb->prefix}update_log"; - $wpdb->query( $wpdb->prepare( "UPDATE $updateLog SET put_on_hold = '%s' WHERE slug = '%s'", strtotime( "now" ), $plugin_file ) ); - } - } - } -} - -// Remove plugins from "put on hold" after x days -function cau_unhold_updates() { - - - global $wpdb; - - $after_x_days = ( cau_get_db_value( 'update_delay_days' ) != '' ) ? cau_get_db_value( 'update_delay_days' ) : '2'; - $today = strtotime( "now" ); - $updateLog = "{$wpdb->prefix}update_log"; - $put_on_hold = $wpdb->get_results( $wpdb->prepare( "SELECT * FROM {$updateLog} WHERE put_on_hold <> '%s'", '0' ) ); - - foreach ( $put_on_hold as $plugin ) { - - $plugin_file = $plugin->slug; - $put_on_hold_date = $plugin->put_on_hold; - $remove_after = strtotime( '+'.$after_x_days.' days', $put_on_hold_date ); - - if( $remove_after <= $today ) { - $wpdb->query( $wpdb->prepare( "UPDATE {$updateLog} SET put_on_hold = '%s' WHERE slug = '%s'", '0', $plugin_file ) ); - } - - } - -} - -// Remove all plugins from "put on hold" if option is disabled -function cau_unhold_all_updates() { - global $wpdb; - $updateLog = "{$wpdb->prefix}update_log"; - $put_on_hold = $wpdb->get_results( $wpdb->prepare( "SELECT * FROM {$updateLog} WHERE put_on_hold <> '%s'", '0' ) ); - foreach ( $put_on_hold as $plugin ) { - $plugin_file = $plugin->slug; - $wpdb->query( $wpdb->prepare( "UPDATE {$updateLog} SET put_on_hold = '%s' WHERE slug = '%s'", '0', $plugin_file ) ); - } -} diff --git a/wp-content/plugins/companion-auto-update/companion-auto-update.php b/wp-content/plugins/companion-auto-update/companion-auto-update.php deleted file mode 100644 index e1b8155b..00000000 --- a/wp-content/plugins/companion-auto-update/companion-auto-update.php +++ /dev/null @@ -1,420 +0,0 @@ -get_col( "SELECT blog_id FROM $wpdb->blogs" ); - foreach ( $blog_ids as $blog_id ) { - switch_to_blog( $blog_id ); - cau_database_creation(); - restore_current_blog(); - } - } else { - cau_database_creation(); - } - - if (! wp_next_scheduled ( 'cau_set_schedule_mail' )) wp_schedule_event( time(), 'daily', 'cau_set_schedule_mail'); // Set schedule for basic notifcations - if (! wp_next_scheduled ( 'cau_custom_hooks_plugins' )) wp_schedule_event( time(), 'daily', 'cau_custom_hooks_plugins'); // Run custom hooks on plugin updates - if (! wp_next_scheduled ( 'cau_custom_hooks_themes' )) wp_schedule_event( time(), 'daily', 'cau_custom_hooks_themes'); // Run custom hooks on theme updates - if (! wp_next_scheduled ( 'cau_log_updater' )) wp_schedule_event( ( time() - 1800 ), 'daily', 'cau_log_updater'); // Keep the log up to date - if (! wp_next_scheduled ( 'cau_outdated_notifier' )) wp_schedule_event( time(), 'daily', 'cau_outdated_notifier'); // Set schedule for basic notifcations -} - -add_action( 'cau_set_schedule_mail', 'cau_check_updates_mail' ); -add_action( 'cau_outdated_notifier', 'cau_outdated_notifier_mail' ); -add_action( 'wp_update_plugins', 'cau_run_custom_hooks_p' ); -add_action( 'wp_update_themes', 'cau_run_custom_hooks_t' ); -add_action( 'wp_version_check', 'cau_run_custom_hooks_c' ); - -// Hourly event to keep the log up to date -function cau_keep_log_uptodate() { - cau_savePluginInformation(); // Check for new plugins and themes - cau_check_delayed(); // Check for plugin delays -} -add_action( 'cau_log_updater', 'cau_keep_log_uptodate' ); - -// Redirect to welcome screen on activation of plugin -function cau_pluginActivateWelcome() { - add_option( 'cau_redirectToWelcomeScreen', true ); -} -register_activation_hook(__FILE__, 'cau_pluginActivateWelcome'); - -// Redirect to welcome screen on activation of plugin -function cau_pluginRedirectWelcomeScreen() { - if ( get_option( 'cau_redirectToWelcomeScreen', false ) ) { - delete_option( 'cau_redirectToWelcomeScreen' ); - if( !isset( $_GET['activate-multi'] ) ) { - wp_redirect( admin_url( cau_menloc().'?page=cau-settings&welcome=1' ) ); - } - } -} -add_action( 'admin_init', 'cau_pluginRedirectWelcomeScreen' ); - -// Donate url -function cau_donateUrl() { - return 'https://www.paypal.me/dakel/10/'; -} - -// Database version -function cau_db_version() { - return '3.8.3'; -} - -function cau_database_creation() { - - global $wpdb; - - // Plugin db info - $cau_db_version = cau_db_version(); - $autoupdates = $wpdb->prefix."auto_updates"; - $updateLog = $wpdb->prefix."update_log"; - - // WordPress db info - $charset_collate = $wpdb->get_charset_collate(); - - // DB table creation queries - $sql = "CREATE TABLE $autoupdates ( id INT(9) NOT NULL AUTO_INCREMENT, name VARCHAR(255) NOT NULL, onoroff TEXT NOT NULL, UNIQUE KEY id (id) ) $charset_collate;"; - $sql2 = "CREATE TABLE $updateLog ( id INT(9) NOT NULL AUTO_INCREMENT, slug VARCHAR(255) NOT NULL, oldVersion VARCHAR(10) NOT NULL, newVersion VARCHAR(10) NOT NULL, method VARCHAR(10) NOT NULL, put_on_hold VARCHAR(100) DEFAULT '0', UNIQUE KEY id (id) ) $charset_collate;"; - - // Create DB tables - require_once( ABSPATH . 'wp-admin/includes/upgrade.php' ); - dbDelta( $sql ); - dbDelta( $sql2 ); - - // Database version - add_option( "cau_db_version", "$cau_db_version" ); - - // Insert data - cau_install_data(); -} - -// Check if database table exists before creating -function cau_check_if_exists( $whattocheck, $id = 'name', $db_table = 'auto_updates' ) { - - global $wpdb; - - $table_name = $wpdb->prefix.$db_table; - $rows = $wpdb->get_col( "SELECT COUNT(*) as num_rows FROM {$table_name} WHERE {$id} = '{$whattocheck}'" ); - $check = $rows[0]; - - return ( $check > 0 ) ? true : false; - -} - -// Insert date into database -function cau_install_data() { - - global $wpdb; - - $table_name = $wpdb->prefix . "auto_updates"; - $toemail = get_option('admin_email'); - - // Update configs - if( !cau_check_if_exists( 'plugins' ) ) $wpdb->insert( $table_name, array( 'name' => 'plugins', 'onoroff' => 'on' ) ); - if( !cau_check_if_exists( 'themes' ) ) $wpdb->insert( $table_name, array( 'name' => 'themes', 'onoroff' => 'on' ) ); - if( !cau_check_if_exists( 'minor' ) ) $wpdb->insert( $table_name, array( 'name' => 'minor', 'onoroff' => 'on' ) ); - if( !cau_check_if_exists( 'major' ) ) $wpdb->insert( $table_name, array( 'name' => 'major', 'onoroff' => '' ) ); - - // Email configs - if( !cau_check_if_exists( 'email' ) ) $wpdb->insert( $table_name, array( 'name' => 'email', 'onoroff' => '' ) ); - if( !cau_check_if_exists( 'send' ) ) $wpdb->insert( $table_name, array( 'name' => 'send', 'onoroff' => '' ) ); - if( !cau_check_if_exists( 'sendupdate' ) ) $wpdb->insert( $table_name, array( 'name' => 'sendupdate', 'onoroff' => '' ) ); - if( !cau_check_if_exists( 'sendoutdated' ) ) $wpdb->insert( $table_name, array( 'name' => 'sendoutdated', 'onoroff' => '' ) ); - - // Advanced - if( !cau_check_if_exists( 'notUpdateList' ) ) $wpdb->insert( $table_name, array( 'name' => 'notUpdateList', 'onoroff' => '' ) ); - if( !cau_check_if_exists( 'translations' ) ) $wpdb->insert( $table_name, array( 'name' => 'translations', 'onoroff' => 'on' ) ); - if( !cau_check_if_exists( 'wpemails' ) ) $wpdb->insert( $table_name, array( 'name' => 'wpemails', 'onoroff' => 'on' ) ); - if( !cau_check_if_exists( 'notUpdateListTh' ) ) $wpdb->insert( $table_name, array( 'name' => 'notUpdateListTh', 'onoroff' => '' ) ); - - // Stuff - if( !cau_check_if_exists( 'html_or_text' ) ) $wpdb->insert( $table_name, array( 'name' => 'html_or_text', 'onoroff' => 'html' ) ); - if( !cau_check_if_exists( 'dbupdateemails' ) ) $wpdb->insert( $table_name, array( 'name' => 'dbupdateemails', 'onoroff' => '' ) ); - - // Advanced - if( !cau_check_if_exists( 'allow_administrator' ) ) $wpdb->insert( $table_name, array( 'name' => 'allow_administrator', 'onoroff' => 'on' ) ); - if( !cau_check_if_exists( 'allow_editor' ) ) $wpdb->insert( $table_name, array( 'name' => 'allow_editor', 'onoroff' => '' ) ); - if( !cau_check_if_exists( 'allow_author' ) ) $wpdb->insert( $table_name, array( 'name' => 'allow_author', 'onoroff' => '' ) ); - if( !cau_check_if_exists( 'ignore_seo' ) ) $wpdb->insert( $table_name, array( 'name' => 'ignore_seo', 'onoroff' => '' ) ); - if( !cau_check_if_exists( 'ignore_cron' ) ) $wpdb->insert( $table_name, array( 'name' => 'ignore_cron', 'onoroff' => '' ) ); - if( !cau_check_if_exists( 'advanced_info_emails' ) ) $wpdb->insert( $table_name, array( 'name' => 'advanced_info_emails', 'onoroff' => '' ) ); - if( !cau_check_if_exists( 'update_delay' ) ) $wpdb->insert( $table_name, array( 'name' => 'update_delay', 'onoroff' => '' ) ); - if( !cau_check_if_exists( 'update_delay_days' ) ) $wpdb->insert( $table_name, array( 'name' => 'update_delay_days', 'onoroff' => '' ) ); - if( !cau_check_if_exists( 'plugin_links_emails' ) ) $wpdb->insert( $table_name, array( 'name' => 'plugin_links_emails', 'onoroff' => '' ) ); - -} -register_activation_hook( __FILE__, 'cau_install' ); - -// Clear everything on deactivation -function cau_remove() { - - // Delete tables - global $wpdb; - $autoupdates = $wpdb->prefix."auto_updates"; - $updateLog = $wpdb->prefix."update_log"; - $wpdb->query( "DROP TABLE IF EXISTS $autoupdates" ); - $wpdb->query( "DROP TABLE IF EXISTS $updateLog" ); - - // Clear schedules - wp_clear_scheduled_hook( 'cau_set_schedule_mail' ); - wp_clear_scheduled_hook( 'cau_custom_hooks_plugins' ); - wp_clear_scheduled_hook( 'cau_custom_hooks_themes' ); - wp_clear_scheduled_hook( 'cau_log_updater' ); - - // Restore WordPress 5.5 default update functionality - add_filter( 'plugins_auto_update_enabled', '__return_true' ); - add_filter( 'themes_auto_update_enabled', '__return_true' ); - add_filter( 'auto_plugin_update_send_email', '__return_true' ); - add_filter( 'auto_theme_update_send_email', '__return_true' ); - -} -register_deactivation_hook( __FILE__, 'cau_remove' ); - -// Update -function cau_update_db_check() { - - $cau_db_version = cau_db_version(); - - if ( get_site_option( 'cau_db_version' ) != $cau_db_version ) { - - cau_database_creation(); - - // In 3.7.2 we've added $wpdb->get_charset_collate - if( get_site_option( 'cau_db_version' ) < '3.7.2' ) { - - global $wpdb; - $autoupdates = $wpdb->prefix."auto_updates"; - $updateLog = $wpdb->prefix."update_log"; - $db_charset = constant( 'DB_CHARSET' ); - $wpdb->query( "ALTER TABLE $autoupdates CONVERT TO CHARACTER SET $db_charset" ); - $wpdb->query( "ALTER TABLE $updateLog CONVERT TO CHARACTER SET $db_charset" ); - } - update_option( "cau_db_version", $cau_db_version ); - - } - -} - -add_action( 'upgrader_process_complete', 'cau_update_db_check' ); - -// Manual update -function cau_manual_update() { - cau_update_db_check(); -} - -// Load custom functions -require_once( plugin_dir_path( __FILE__ ) . 'cau_functions.php' ); - -// Add plugin to menu -function register_cau_menu_page() { - if( cau_allowed_user_rights() ) add_submenu_page( cau_menloc() , __( 'Auto Updater', 'companion-auto-update' ), __( 'Auto Updater', 'companion-auto-update' ), 'manage_options', 'cau-settings', 'cau_frontend' ); -} -add_action( 'admin_menu', 'register_cau_menu_page' ); - -// Settings page -function cau_frontend() { - - echo "

-

".__( 'Companion Auto Update', 'companion-auto-update' )."

-
"; - - // Make sure the correct timezone is used - date_default_timezone_set( cau_get_proper_timezone() ); - - // Allow only access to these pages - $allowedPages = array( - 'dashboard' => __( 'Dashboard' ), - 'pluginlist' => __( 'Update filter', 'companion-auto-update' ), - 'log' => __( 'Update log', 'companion-auto-update' ), - 'status' => __( 'Status', 'companion-auto-update' ), - ); - - // Show subtabs - echo ""; - - // Show page content - if( !isset( $_GET['tab'] ) ) { - $requestedPage = 'dashboard'; - echo ""; // Set active tab class - } else { - $requestedPage = sanitize_key( $_GET['tab'] ); - } - - if( array_key_exists( $requestedPage, $allowedPages ) ) { - require_once( plugin_dir_path( __FILE__ ) . 'admin/'.$requestedPage.'.php' ); - } else { - wp_die( 'You\'re not allowed to view '.$requestedPage.'.' ); - } - - echo '
'; - -} - -// Add a widget to the dashboard. -function cau_add_widget() { - if ( cau_allowed_user_rights() ) wp_add_dashboard_widget( 'cau-update-log', __('Update log', 'companion-auto-update'), 'cau_widget' ); -} -add_action( 'wp_dashboard_setup', 'cau_add_widget' ); - -// Widget content -function cau_widget() { - echo ''; - echo '

'.__('Below are the last 7 updates ran on this site. Includes plugins and themes, both automatically updated and manually updated.', 'companion-auto-update').'

'; - cau_fetch_log( '7' ); - echo '

'.__( 'View full changelog', 'companion-auto-update' ).' | '.__( 'Settings' ).'

'; -} - -// Load admin styles -function load_cau_global_styles( $hook ) { - wp_enqueue_style( 'cau_admin_styles', plugins_url( 'backend/style.css' , __FILE__ ) ); // Plugin scripts - wp_enqueue_style( 'cau_warning_styles', plugins_url( 'backend/warningbar.css' , __FILE__ ) ); // Check for issues -} -add_action( 'admin_enqueue_scripts', 'load_cau_global_styles', 99 ); - -// Load admin styles -function load_cau_page_styles( $hook ) { - - // Only load on plugins' pages - if( $hook != 'tools_page_cau-settings' && $hook != 'index_page_cau-settings' ) return; - - // WordPress scripts we need - wp_enqueue_style( 'thickbox' ); - wp_enqueue_script( 'thickbox' ); - wp_enqueue_script( 'plugin-install' ); -} -add_action( 'admin_enqueue_scripts', 'load_cau_page_styles', 100 ); - -// Send e-mails -require_once( plugin_dir_path( __FILE__ ) . 'cau_emails.php' ); - -// Add settings link on plugin page -function cau_settings_link( $links ) { - - $settings_link = ''.__( 'Settings' ).''; - $settings_link2 = ''.__( 'Help us translate', 'companion-auto-update' ).''; - $settings_link3 = ''.__( 'Donate to help development', 'companion-auto-update' ).''; - - array_unshift( $links, $settings_link2 ); - array_unshift( $links, $settings_link3 ); - if( cau_allowed_user_rights() ) array_unshift( $links, $settings_link ); - - return $links; - -} -$plugin = plugin_basename(__FILE__); -add_filter( "plugin_action_links_$plugin", "cau_settings_link" ); - -// Auto Update Class -class CAU_auto_update { - - // Enable Update filters - public function __construct() { - add_action( 'plugins_loaded', array( &$this, 'CAU_auto_update_filters' ), 1 ); - } - - public function CAU_auto_update_filters() { - - global $wpdb; - $table_name = $wpdb->prefix . "auto_updates"; - - // Disable WP emails - add_filter( 'auto_plugin_update_send_email', '__return_false' ); // Plugin updates - add_filter( 'auto_theme_update_send_email', '__return_false' ); // Theme updates - - // Enable for major updates - $configs = $wpdb->get_results( "SELECT * FROM {$table_name} WHERE name = 'major'"); - foreach ( $configs as $config ) { - if( $config->onoroff == 'on' ) add_filter( 'allow_major_auto_core_updates', '__return_true', 1 ); // Turn on - else add_filter( 'allow_major_auto_core_updates', '__return_false', 1 ); // Turn off - } - - // Enable for minor updates - $configs = $wpdb->get_results( "SELECT * FROM {$table_name} WHERE name = 'minor'"); - foreach ( $configs as $config ) { - if( $config->onoroff == 'on' ) add_filter( 'allow_minor_auto_core_updates', '__return_true', 1 ); // Turn on - else add_filter( 'allow_minor_auto_core_updates', '__return_false', 1 ); // Turn off - } - - // Enable for plugins - $configs = $wpdb->get_results( "SELECT * FROM {$table_name} WHERE name = 'plugins'"); - foreach ( $configs as $config ) { - if( $config->onoroff == 'on' ) add_filter( 'auto_update_plugin', 'cau_dontUpdatePlugins', 10, 2 ); // Turn on - else add_filter( 'auto_update_plugin', '__return_false', 1 ); // Turn off - } - - // Enable for themes - $configs = $wpdb->get_results( "SELECT * FROM {$table_name} WHERE name = 'themes'"); - foreach ( $configs as $config ) { - if( $config->onoroff == 'on' ) add_filter( 'auto_update_theme', '__return_true' ); // Turn on - else add_filter( 'auto_update_theme', '__return_false', 1 ); // Turn off - } - - // Enable for translation files - $configs = $wpdb->get_results( "SELECT * FROM {$table_name} WHERE name = 'translations'"); - foreach ( $configs as $config ) { - if( $config->onoroff == 'on' ) add_filter( 'auto_update_translation', '__return_true', 1 ); // Turn on - else add_filter( 'auto_update_translation', '__return_false', 1 ); // Turn off - } - - // WP Email Config - $configs = $wpdb->get_results( "SELECT * FROM {$table_name} WHERE name = 'wpemails'"); - foreach ( $configs as $config ) { - if( $config->onoroff == 'on' ) add_filter( 'auto_core_update_send_email', '__return_true', 1 ); // Turn on - else add_filter( 'auto_core_update_send_email', '__return_false', 1 ); // Turn off - } - - } - -} -new CAU_auto_update(); - -// Check for issues -function cau_checkForIssues( $admin_bar ) { - if( cau_pluginHasIssues() && is_admin() && cau_pluginIssueLevels() == 'high' ) { - $admin_bar->add_menu( array( - 'id' => 'cau-has-issues', - 'title' => ''.cau_pluginIssueCount().'', - 'href' => cau_url( 'status' ), - 'meta' => array( - 'target' => '_self', - 'title' => __( 'Companion Auto Update ran into a critical error. View the status log for more info.', 'companion-auto-update' ), - ), - )); - } -} -add_action( 'admin_bar_menu', 'cau_checkForIssues', 150 ); diff --git a/wp-content/plugins/companion-auto-update/index.php b/wp-content/plugins/companion-auto-update/index.php deleted file mode 100644 index ef5b27f6..00000000 --- a/wp-content/plugins/companion-auto-update/index.php +++ /dev/null @@ -1,2 +0,0 @@ -\n" -"Language-Team: LANGUAGE \n" - -#: companion_portfolio.php:96 -msgid "Auto Updater" -msgstr "" - -#: companion_portfolio.php:122 -msgid "Auto update plugins?" -msgstr "" - -#: companion_portfolio.php:122 -msgid "Auto update themes?" -msgstr "" - -#: companion_portfolio.php:122 -msgid "Auto update minor core updates?" -msgstr "" - -#: companion_portfolio.php:122 -msgid "Auto update major core updates?" -msgstr "" - -#: companion_portfolio.php:125 -msgid "Settings saved" -msgstr "" - -#: companion_portfolio.php:125 -msgid "Settings" -msgstr "" - -#. Plugin Name of the plugin/theme -msgid "Companion Auto Update" -msgstr "" - -#. #-#-#-#-# plugin.pot (Companion Auto Update 1.0) #-#-#-#-# -#. Plugin URI of the plugin/theme -#. #-#-#-#-# plugin.pot (Companion Auto Update 1.0) #-#-#-#-# -#. Author URI of the plugin/theme -msgid "https://qreative-web.com" -msgstr "" - -#. Description of the plugin/theme -msgid "" -"This plugin auto updates all plugins, all themes and the wordpress core." -msgstr "" - -#. Author of the plugin/theme -msgid "Qreative-Web" -msgstr "" \ No newline at end of file diff --git a/wp-content/plugins/companion-auto-update/languages/index.php b/wp-content/plugins/companion-auto-update/languages/index.php deleted file mode 100644 index 81a4f1bd..00000000 --- a/wp-content/plugins/companion-auto-update/languages/index.php +++ /dev/null @@ -1,4 +0,0 @@ - Auto Updater - -== Frequently Asked Questions == - -= Check our website for the FAQ = - -[https://codeermeneer.nl/documentation/auto-update/faq-auto-updater/](https://codeermeneer.nl/documentation/auto-update/faq-auto-updater/) - -= What features can I expect to see in the future? = - -Your feedback is what made this plugin what is and what it’ll become so keep the feedback coming! To see what features you've suggested and what we're working on [read our blogpost here](https://codeermeneer.nl/blog/companion-auto-update-and-its-future/) - -= What's the difference between WordPress 5.5 and this plugin? = - -WordPress 5.5 was released recently and it packs tons of new features. One of those features is auto-updates for plugins and themes. Something Companion Auto Update does too. -So obviously, some of you wondered what the difference would be between the default WordPress method and the one offered by Companion Auto Update and I figured I’d quickly write a blog about it, explaining the differences. - -[You can read this blogpost here](https://codeermeneer.nl/blog/wordpress-5-5-versus-companion-auto-update/) - - -== Screenshots == - -1. Full control over what to update and when to recieve notifications -2. Disable auto-updating for certain plugins and/or themes -3. Advanced scheduling options for updating and notifcations -4. Keep track of updates with the update log - -== Changelog == - -= 3.9.2 (June 11, 2024) = -* Fixed some more undefined variables -* Declared support for WP6.5 - -= 3.9.1 (March 8, 2024) = -* Fixed: Undefined variable $totalNum - -= 3.9.0 (February 2, 2024) = -* Fixed: Fatal error during Cron -* Fixed: PHP deprecated error for PHP 8 and up - -= 3.8.9 (January 9, 2024) = -* Fixed error: Call to undefined function is_plugin_active() - -= 3.8.8 (December 19, 2023) = -* Fixed a few minor bugs -* Made some performance improvements -* We now require at least WordPress 5.3 - -= 3.8.7.1 (September 28, 2022) = -* Tweak: Extended function_exists check with get_plugins() for the fatal error when trying to send update emails - -= 3.8.7 (September 12, 2022) = -* Fix: Fatal error when trying to send update emails - -= 3.8.6 (August 11, 2022) = -* Tweak: Code optimization for better performance - -= 3.8.5 (March 17, 2022) = -* New: Added more checks on the status page and added an explanation to some of them. -* New: Added an list of delayed updates on the status page to help with troubleshooting. -* Tweak: Made some improvements to the update delay feature. -* Tweak: Added a notice to explain that update delay does not work with WordPress update currently. -* Tweak: Improved code on the status page to be more reliable. - -= 3.8.4 (February 2, 2022) = -* Tweak: Fixed a few styling errors with WP5.9 - -= 3.8.3 (December 9, 2021) = -* New: Plugin update e-mails now have an option to link to a few important pages -* Fix: Error: Undefined index: dbupdateemails -* Fix: Error: A non-numeric value encountered - -= 3.8.2 (July 1, 2021) = -* Fix: Error: Call to undefined function get_plugin_updates() - -= 3.8.1 (June 4, 2021) = -* New: Be notified when we need your help updating to a new database version [Feature Request](https://wordpress.org/support/topic/feature-request-839/) -* Tweak: Made some under the hood performance improvements - -= 3.8.0 (January 14, 2021) = -* New: Better handling of plugins with an unknown WP version -* New: More intervals for notifications -* Fix: Call to undefined function errors - -= 3.7.1.1 (November 2, 2020) = -* Fix: Type in wp_next_scheduled - -= 3.7.1 (October 30, 2020) = -* Fix: PHP Warning: strtotime() expects parameter 2 to be integer, string given - -= 3.7 (September 8, 2020) = -* New: Delay updates with an x number of days -* New: Be notified of plugins that have not been tested with the latest 3 major releases of WordPress. -* New: Choose to see more info in the emails (like the time at which the update happened) -* Fix: "Contact for support" button will work again -* Fix: Fixed a few PHP errors -* Tweak: Made improvements to the "Fix it" button for the "All automatic updates are disabled" error. -* Tweak: You can now choose to ignore the "Search Engine Visibility" and "Cronjobs" warnings -* Tweak: Reports on the Site Health page will only show a summary and point to the status page for more information and possible fixes -* Tweak: Removed cronjob check and Search Engine Visibility check from site health -* Tweak: E-mails are now fully translatable -* Tweak: Renamed Core notifications to WordPress notifications -* Tweak: WordPress plugin and theme update notifications are now disabled - -Also: Check out what features we're working on at [our blogpost](https://codeermeneer.nl/blog/companion-auto-update-and-its-future/) - -= 3.6 (August 12, 2020) = -* New: Added an "after core update" hook [More info](https://codeermeneer.nl/documentation/codex-auto-updater/) -* New: Select which userroles can access settings. (Defaults to only administrators) -* Tweak: Added Theme and Core update method the log -* Tweak: Few WordPress 5.5 improvements - -= 3.5.5 (August 5, 2020) = -* Fix: Added better multisite support -* Tweak: We've added a bunch more checks to the status page and you can now see more passed checks. -* Support for WordPress 5.5 - -= 3.5.4.1 (June 20, 2020) = -* Fix: Sometimes the hour settings for intervals wouldn't show up - -= 3.5.4 (June 19, 2020) = -* New: See translations in the update log -* New: We've added a few checks to WordPress' Site Health page -* Fix: Error with Companion Auto Update Database Update -* Fix: Schedule interval duplicates - -= 3.5.3 (June 5, 2020) = -* New: We're working on a better update log. You should see the Update method (Manual/Automatic) in the log now. (Only works for Plugins right now) -Please report any issues with this feature over at our sticky post: [Problems with the Update method in the new update log?](https://wordpress.org/support/topic/problems-with-the-update-method-in-the-new-update-log/) -* Fix: Not able to see checks in boxes (reverted back to before it all went wrong) -* Fix: Error date_default_timezone_set(): Timezone ID +00:00 is invalid -* Tweak: The status tab will no longer show turned-off settings as an error -* Tweak: Made some improvements to the "Update pending" emails, you can now see a list of all pending updates and go directly to the update page. - -= 3.5.2 (April 1, 2020) = -* Fix: Not able to see checks in boxes - -= 3.5.1 (March 25, 2020) = -* Tweak: You seem to like the new dashboard, we've fixed a few issues regarding the responsiveness of the design. We've also tweaked the icons to be a bit more transparant. -* Tweak: We've added the release notes link to Plain text emails -* Tweak: Fixed a few typos -* Tweak: Various minor security improvements - -= 3.5.0 (March 5, 2020) = -* New: In version 3.4.6 we've changed to HTML emails rather than plain text, in this version you can opt to change it back to plain text emails -* Fix: We've 'fixed an issue where on occasion nothing would update -* Tweak: Made some improvements to the "Fix it" button for the AUTOMATIC_UPDATER_DISABLED error -* Tweak: We've changed the dashboard, moved both the settings page and de support page to the dashboard. Please let us know if you like this change or not. -* Bug: We've had to (temporarily) disable the theme filter because it was causing issues on some installations. We'll try to get it working again in a future update. - -[View full changelog](https://codeermeneer.nl/stuffs/auto-updater-changelog/) \ No newline at end of file