'5.0.0', 'nonce' => '', )); // var_dump($options); // // validate // if( ! wp_verify_nonce($options['nonce'], 'acf_nonce') ) { // wp_send_json_error(); // } // vars $path = acf_get_path("admin/updates/{$options['version']}.php"); // load version if( !file_exists( $path ) ) { wp_send_json_error(); } // load any errors / feedback from update ob_start(); // include include( $path ); // get feedback $feedback = ob_get_clean(); // update successful update_option('acf_version', $options['version'] ); // check for relevant updates. If none are found, update this to the plugin version $updates = acf_get_updates(); if( empty($updates) ) { update_option('acf_version', acf_get_setting('version')); } // return wp_send_json_success(array( 'feedback' => $feedback )); } /* * admin_menu * * description * * @type function * @date 19/02/2014 * @since 5.0.0 * * @param $post_id (int) * @return $post_id (int) */ function admin_menu() { // bail early if no show_admin if( !acf_get_setting('show_admin') ) { return; } // update admin page $page = add_submenu_page('edit.php?post_type=acf-field-group', __('Upgrade','acf'), __('Upgrade','acf'), 'manage_options','acf-upgrade', array($this,'html') ); // vars $plugin_version = acf_get_setting('version'); $acf_version = get_option('acf_version'); // bail early if a new install if( empty($acf_version) ) { update_option('acf_version', $plugin_version ); return; } // bail early if $acf_version is >= $plugin_version if( version_compare( $acf_version, $plugin_version, '>=') ) { return; } // bail early if no updates available $updates = acf_get_updates(); if( empty($updates) ) { update_option('acf_version', $plugin_version ); return; } // actions add_action( 'admin_notices', array( $this, 'admin_notices'), 1 ); /* // vars $l10n = array( 'h4' => __('Data Upgrade Required', 'acf'), 'p' => sprintf(__('%s %s requires some updates to the database', 'acf'), acf_get_setting('name'), $plugin_version), 'a' => __( 'Run the updater', 'acf' ) ); // add notice $message = '
' . $l10n['p'] . ' ' . $l10n['a'] . '
'; acf_add_admin_notice( $message, 'acf-update-notice', '' ); */ } /* * admin_notices * * This function will render any admin notices * * @type function * @date 17/10/13 * @since 5.0.0 * * @param n/a * @return n/a */ function admin_notices() { // view $view = array( 'updates' => acf_get_updates(), 'version' => acf_get_setting('version'), 'rollback' => get_option('acf_version'), 'pro' => acf_get_setting('pro'), 'basename' => acf_get_setting('basename'), 'addons' => array() ); // add-ons $addons = array( 'acf-flexible-content' => 'Flexible Content Field', 'acf-gallery' => 'Gallery Field', 'acf-options-page' => 'Options Page', 'acf-repeater' => 'Repeater Field', ); // get active plugins $plugins = implode(' ', get_option('active_plugins')); foreach( $addons as $k => $v ) { if( strpos($plugins, $k) !== false ) { $view['addons'][] = $v; } } // load view acf_get_view('update-notice', $view); } /* * html * * description * * @type function * @date 19/02/2014 * @since 5.0.0 * * @param $post_id (int) * @return $post_id (int) */ function html() { // view $view = array( 'updates' => acf_get_updates() ); // load view acf_get_view('update', $view); } /* * inject_downgrade * * description * * @type function * @date 16/01/2014 * @since 5.0.0 * * @param $post_id (int) * @return $post_id (int) */ function inject_downgrade( $transient ) { // bail early if no plugins are being checked if( empty($transient->checked) ) { return $transient; } // bail early if no nonce if( empty($_GET['_acfrollback']) ) { return $transient; } // vars $rollback = get_option('acf_version'); // bail early if nonce is not correct if( !wp_verify_nonce( $_GET['_acfrollback'], 'rollback-acf_' . $rollback ) ) { return $transient; } // create new object for update $obj = new stdClass(); $obj->slug = $_GET['plugin']; $obj->new_version = $rollback; $obj->url = 'https://wordpress.org/plugins/advanced-custom-fields'; $obj->package = 'http://downloads.wordpress.org/plugin/advanced-custom-fields.' . $rollback . '.zip';; // add to transient $transient->response[ $_GET['plugin'] ] = $obj; // return return $transient; } } new acf_update(); ?>