translatable_fields)) { ${$new_option}[$new_key] = array( 'default' => $old_settings[$old_option][$old_key] ); } else { ${$new_option}[$new_key] = $old_settings[$old_option][$old_key]; } } } // auto enable invoice & packing slip $enabled = array( 'wpo_wcpdf_documents_settings_invoice', 'wpo_wcpdf_documents_settings_packing-slip' ); if ( in_array( $new_option, $enabled ) ) { ${$new_option}['enabled'] = 1; } // merge with existing settings ${$new_option."_old"} = get_option( $new_option, ${$new_option} ); // second argument loads new as default in case the settings did not exist yet ${$new_option} = (array) ${$new_option} + (array) ${$new_option."_old"}; // duplicate options take new options as default // store new option values update_option( $new_option, ${$new_option} ); } } // 2.0-beta-2 update: copy next number to separate db store if ( version_compare( $installed_version, '2.0-beta-2', '<' ) ) { $next_number = get_option( 'wpo_wcpdf_next_invoice_number' ); if ( ! empty( $next_number ) ) { $number_store = new \WPO\WC\PDF_Invoices\Documents\Sequential_Number_Store( 'invoice_number' ); $number_store->set_next( (int) $next_number ); } // we're not deleting this option yet to make downgrading possible // delete_option( 'wpo_wcpdf_next_invoice_number' ); // clean up after ourselves } // 2.1.9: set cleanup defaults if ( $installed_version == 'versionless' || version_compare( $installed_version, '2.1.9', '<' ) ) { $debug_settings = get_option( 'wpo_wcpdf_settings_debug', array() ); $debug_settings['enable_cleanup'] = 1; $debug_settings['cleanup_days'] = 7; update_option( 'wpo_wcpdf_settings_debug', $debug_settings ); } // 2.10.0-dev: migrate template path to template ID // 2.11.5: improvements to the migration procedure if ( version_compare( $installed_version, '2.11.5', '<' ) ) { if ( ! empty( WPO_WCPDF()->settings ) && is_callable( array( WPO_WCPDF()->settings, 'maybe_migrate_template_paths' ) ) ) { WPO_WCPDF()->settings->maybe_migrate_template_paths(); } } // 2.11.2: remove the obsolete .dist font cache file and mustRead.html from local fonts folder if ( version_compare( $installed_version, '2.11.2', '<' ) ) { @unlink( trailingslashit( $font_path ) . 'dompdf_font_family_cache.dist.php' ); @unlink( trailingslashit( $font_path ) . 'mustRead.html' ); } // 2.12.2-dev-1: change 'date' database table default value to '1000-01-01 00:00:00' if ( version_compare( $installed_version, '2.12.2-dev-1', '<' ) ) { global $wpdb; $documents = WPO_WCPDF()->documents->get_documents( 'all' ); foreach ( $documents as $document ) { $store_name = "{$document->slug}_number"; $method = WPO_WCPDF()->settings->get_sequential_number_store_method(); $table_name = apply_filters( "wpo_wcpdf_number_store_table_name", "{$wpdb->prefix}wcpdf_{$store_name}", $store_name, $method ); if ( $wpdb->get_var( "SHOW TABLES LIKE '{$table_name}'" ) != $table_name ) { continue; } if ( is_callable( array( $document, 'get_sequential_number_store' ) ) ) { $number_store = $document->get_sequential_number_store(); if ( ! empty( $number_store ) ) { $column_name = 'date'; $query = $wpdb->query( "ALTER TABLE {$number_store->table_name} ALTER {$column_name} SET DEFAULT '1000-01-01 00:00:00'" ); if ( $query ) { wcpdf_log_error( "Default value changed for 'date' column to '1000-01-01 00:00:00' on database table: {$number_store->table_name}", 'info' ); } else { wcpdf_log_error( "An error occurred! The default value for 'date' column couldn't be changed to '1000-01-01 00:00:00' on database table: {$number_store->table_name}", 'critical' ); } } } } } // 3.0.0-dev-1: remove saved option 'use_html5_parser' if ( version_compare( $installed_version, '3.0.0-dev-1', '<' ) ) { // removes 'HTML5 parser' setting value $debug_settings = get_option( 'wpo_wcpdf_settings_debug', array() ); if ( ! empty( $debug_settings['use_html5_parser'] ) ) { unset( $debug_settings['use_html5_parser'] ); update_option( 'wpo_wcpdf_settings_debug', $debug_settings ); } } // 3.3.0-dev-1: schedule the yearly reset number action if ( version_compare( $installed_version, '3.3.0-dev-1', '<' ) ) { if ( ! empty( WPO_WCPDF()->settings ) && is_callable( array( WPO_WCPDF()->settings, 'schedule_yearly_reset_numbers' ) ) ) { WPO_WCPDF()->settings->schedule_yearly_reset_numbers(); } } // 3.5.7-dev-1: migrate 'guest_access' setting to 'document_link_access_type' if ( version_compare( $installed_version, '3.5.7-dev-1', '<' ) ) { $debug_settings = get_option( 'wpo_wcpdf_settings_debug', array() ); if ( ! empty( $debug_settings['guest_access'] ) ) { unset( $debug_settings['guest_access'] ); $debug_settings['document_link_access_type'] = 'guest'; update_option( 'wpo_wcpdf_settings_debug', $debug_settings ); } } // 3.6.3-dev-1: check if 'legacy_mode' is enabled, and disable it if ( version_compare( $installed_version, '3.6.3-dev-1', '<' ) ) { $debug_settings = get_option( 'wpo_wcpdf_settings_debug', array() ); $update = false; if ( ! empty( $debug_settings['legacy_mode'] ) ) { unset( $debug_settings['legacy_mode'] ); $update = true; } if ( ! empty( $debug_settings['legacy_textdomain'] ) ) { unset( $debug_settings['legacy_textdomain'] ); $update = true; } if ( $update ) { update_option( 'wpo_wcpdf_settings_debug', $debug_settings ); } } } /** * Plugin downgrade method. Perform any required downgrades here * * * @param string $installed_version the currently installed ('old') version (actually higher since this is a downgrade) */ protected function downgrade( $installed_version ) { // make sure fonts match with version: copy from plugin folder $tmp_base = WPO_WCPDF()->main->get_tmp_base(); // make sure we have the fonts directory $font_path = WPO_WCPDF()->main->get_tmp_path( 'fonts' ); // don't continue if we don't have an upload dir if ($tmp_base === false) { return false; } // check if tmp folder exists => if not, initialize if ( ! @is_dir( $tmp_base ) || ! wp_is_writable( $tmp_base ) || ! @is_dir( $font_path ) || ! wp_is_writable( $font_path ) ) { WPO_WCPDF()->main->init_tmp(); } else { WPO_WCPDF()->main->copy_fonts( $font_path ); } } } endif; // class_exists