File: /var/www/vhosts/uyarreklam.com.tr/httpdocs/install.php.tar
var/www/vhosts/uyarreklam.com.tr/httpdocs/wp-admin/install.php 0000644 00000042122 15153070031 0020602 0 ustar 00 <?php
/**
* WordPress Installer
*
* @package WordPress
* @subpackage Administration
*/
// Confidence check.
if ( false ) {
?>
<!DOCTYPE html>
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
<title>Error: PHP is not running</title>
</head>
<body class="wp-core-ui">
<p id="logo"><a href="https://wordpress.org/">WordPress</a></p>
<h1>Error: PHP is not running</h1>
<p>WordPress requires that your web server is running PHP. Your server does not have PHP installed, or PHP is turned off.</p>
</body>
</html>
<?php
}
/**
* We are installing WordPress.
*
* @since 1.5.1
* @var bool
*/
define( 'WP_INSTALLING', true );
/** Load WordPress Bootstrap */
require_once dirname( __DIR__ ) . '/wp-load.php';
/** Load WordPress Administration Upgrade API */
require_once ABSPATH . 'wp-admin/includes/upgrade.php';
/** Load WordPress Translation Install API */
require_once ABSPATH . 'wp-admin/includes/translation-install.php';
/** Load wpdb */
require_once ABSPATH . WPINC . '/class-wpdb.php';
nocache_headers();
$step = isset( $_GET['step'] ) ? (int) $_GET['step'] : 0;
/**
* Display installation header.
*
* @since 2.5.0
*
* @param string $body_classes
*/
function display_header( $body_classes = '' ) {
header( 'Content-Type: text/html; charset=utf-8' );
if ( is_rtl() ) {
$body_classes .= 'rtl';
}
if ( $body_classes ) {
$body_classes = ' ' . $body_classes;
}
?>
<!DOCTYPE html>
<html <?php language_attributes(); ?>>
<head>
<meta name="viewport" content="width=device-width" />
<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
<meta name="robots" content="noindex,nofollow" />
<title><?php _e( 'WordPress › Installation' ); ?></title>
<?php wp_admin_css( 'install', true ); ?>
</head>
<body class="wp-core-ui<?php echo $body_classes; ?>">
<p id="logo"><?php _e( 'WordPress' ); ?></p>
<?php
} // End display_header().
/**
* Displays installer setup form.
*
* @since 2.8.0
*
* @global wpdb $wpdb WordPress database abstraction object.
*
* @param string|null $error
*/
function display_setup_form( $error = null ) {
global $wpdb;
$user_table = ( $wpdb->get_var( $wpdb->prepare( 'SHOW TABLES LIKE %s', $wpdb->esc_like( $wpdb->users ) ) ) !== null );
// Ensure that sites appear in search engines by default.
$blog_public = 1;
if ( isset( $_POST['weblog_title'] ) ) {
$blog_public = isset( $_POST['blog_public'] ) ? (int) $_POST['blog_public'] : $blog_public;
}
$weblog_title = isset( $_POST['weblog_title'] ) ? trim( wp_unslash( $_POST['weblog_title'] ) ) : '';
$user_name = isset( $_POST['user_name'] ) ? trim( wp_unslash( $_POST['user_name'] ) ) : '';
$admin_email = isset( $_POST['admin_email'] ) ? trim( wp_unslash( $_POST['admin_email'] ) ) : '';
if ( ! is_null( $error ) ) {
?>
<h1><?php _ex( 'Welcome', 'Howdy' ); ?></h1>
<p class="message"><?php echo $error; ?></p>
<?php } ?>
<form id="setup" method="post" action="install.php?step=2" novalidate="novalidate">
<table class="form-table" role="presentation">
<tr>
<th scope="row"><label for="weblog_title"><?php _e( 'Site Title' ); ?></label></th>
<td><input name="weblog_title" type="text" id="weblog_title" size="25" value="<?php echo esc_attr( $weblog_title ); ?>" /></td>
</tr>
<tr>
<th scope="row"><label for="user_login"><?php _e( 'Username' ); ?></label></th>
<td>
<?php
if ( $user_table ) {
_e( 'User(s) already exists.' );
echo '<input name="user_name" type="hidden" value="admin" />';
} else {
?>
<input name="user_name" type="text" id="user_login" size="25" aria-describedby="user-name-desc" value="<?php echo esc_attr( sanitize_user( $user_name, true ) ); ?>" />
<p id="user-name-desc"><?php _e( 'Usernames can have only alphanumeric characters, spaces, underscores, hyphens, periods, and the @ symbol.' ); ?></p>
<?php
}
?>
</td>
</tr>
<?php if ( ! $user_table ) : ?>
<tr class="form-field form-required user-pass1-wrap">
<th scope="row">
<label for="pass1">
<?php _e( 'Password' ); ?>
</label>
</th>
<td>
<div class="wp-pwd">
<?php $initial_password = isset( $_POST['admin_password'] ) ? stripslashes( $_POST['admin_password'] ) : wp_generate_password( 18 ); ?>
<div class="password-input-wrapper">
<input type="password" name="admin_password" id="pass1" class="regular-text" autocomplete="new-password" spellcheck="false" data-reveal="1" data-pw="<?php echo esc_attr( $initial_password ); ?>" aria-describedby="pass-strength-result admin-password-desc" />
<div id="pass-strength-result" aria-live="polite"></div>
</div>
<button type="button" class="button wp-hide-pw hide-if-no-js" data-start-masked="<?php echo (int) isset( $_POST['admin_password'] ); ?>" data-toggle="0" aria-label="<?php esc_attr_e( 'Hide password' ); ?>">
<span class="dashicons dashicons-hidden"></span>
<span class="text"><?php _e( 'Hide' ); ?></span>
</button>
</div>
<p id="admin-password-desc"><span class="description important hide-if-no-js">
<strong><?php _e( 'Important:' ); ?></strong>
<?php /* translators: The non-breaking space prevents 1Password from thinking the text "log in" should trigger a password save prompt. */ ?>
<?php _e( 'You will need this password to log in. Please store it in a secure location.' ); ?></span></p>
</td>
</tr>
<tr class="form-field form-required user-pass2-wrap hide-if-js">
<th scope="row">
<label for="pass2"><?php _e( 'Repeat Password' ); ?>
<span class="description"><?php _e( '(required)' ); ?></span>
</label>
</th>
<td>
<input type="password" name="admin_password2" id="pass2" autocomplete="new-password" spellcheck="false" />
</td>
</tr>
<tr class="pw-weak">
<th scope="row"><?php _e( 'Confirm Password' ); ?></th>
<td>
<label>
<input type="checkbox" name="pw_weak" class="pw-checkbox" />
<?php _e( 'Confirm use of weak password' ); ?>
</label>
</td>
</tr>
<?php endif; ?>
<tr>
<th scope="row"><label for="admin_email"><?php _e( 'Your Email' ); ?></label></th>
<td><input name="admin_email" type="email" id="admin_email" size="25" aria-describedby="admin-email-desc" value="<?php echo esc_attr( $admin_email ); ?>" />
<p id="admin-email-desc"><?php _e( 'Double-check your email address before continuing.' ); ?></p></td>
</tr>
<tr>
<th scope="row"><?php has_action( 'blog_privacy_selector' ) ? _e( 'Site visibility' ) : _e( 'Search engine visibility' ); ?></th>
<td>
<fieldset>
<legend class="screen-reader-text"><span>
<?php
has_action( 'blog_privacy_selector' )
/* translators: Hidden accessibility text. */
? _e( 'Site visibility' )
/* translators: Hidden accessibility text. */
: _e( 'Search engine visibility' );
?>
</span></legend>
<?php
if ( has_action( 'blog_privacy_selector' ) ) {
?>
<input id="blog-public" type="radio" name="blog_public" value="1" <?php checked( 1, $blog_public ); ?> />
<label for="blog-public"><?php _e( 'Allow search engines to index this site' ); ?></label><br />
<input id="blog-norobots" type="radio" name="blog_public" aria-describedby="public-desc" value="0" <?php checked( 0, $blog_public ); ?> />
<label for="blog-norobots"><?php _e( 'Discourage search engines from indexing this site' ); ?></label>
<p id="public-desc" class="description"><?php _e( 'Note: Discouraging search engines does not block access to your site — it is up to search engines to honor your request.' ); ?></p>
<?php
/** This action is documented in wp-admin/options-reading.php */
do_action( 'blog_privacy_selector' );
} else {
?>
<label for="blog_public"><input name="blog_public" type="checkbox" id="blog_public" aria-describedby="privacy-desc" value="0" <?php checked( 0, $blog_public ); ?> />
<?php _e( 'Discourage search engines from indexing this site' ); ?></label>
<p id="privacy-desc" class="description"><?php _e( 'It is up to search engines to honor this request.' ); ?></p>
<?php } ?>
</fieldset>
</td>
</tr>
</table>
<p class="step"><?php submit_button( __( 'Install WordPress' ), 'large', 'Submit', false, array( 'id' => 'submit' ) ); ?></p>
<input type="hidden" name="language" value="<?php echo isset( $_REQUEST['language'] ) ? esc_attr( $_REQUEST['language'] ) : ''; ?>" />
</form>
<?php
} // End display_setup_form().
// Let's check to make sure WP isn't already installed.
if ( is_blog_installed() ) {
display_header();
die(
'<h1>' . __( 'Already Installed' ) . '</h1>' .
'<p>' . __( 'You appear to have already installed WordPress. To reinstall please clear your old database tables first.' ) . '</p>' .
'<p class="step"><a href="' . esc_url( wp_login_url() ) . '">' . __( 'Log In' ) . '</a></p>' .
'</body></html>'
);
}
/**
* @global string $wp_version The WordPress version string.
* @global string $required_php_version The required PHP version string.
* @global string $required_mysql_version The required MySQL version string.
* @global wpdb $wpdb WordPress database abstraction object.
*/
global $wp_version, $required_php_version, $required_mysql_version, $wpdb;
$php_version = PHP_VERSION;
$mysql_version = $wpdb->db_version();
$php_compat = version_compare( $php_version, $required_php_version, '>=' );
$mysql_compat = version_compare( $mysql_version, $required_mysql_version, '>=' ) || file_exists( WP_CONTENT_DIR . '/db.php' );
$version_url = sprintf(
/* translators: %s: WordPress version. */
esc_url( __( 'https://wordpress.org/documentation/wordpress-version/version-%s/' ) ),
sanitize_title( $wp_version )
);
$php_update_message = '</p><p>' . sprintf(
/* translators: %s: URL to Update PHP page. */
__( '<a href="%s">Learn more about updating PHP</a>.' ),
esc_url( wp_get_update_php_url() )
);
$annotation = wp_get_update_php_annotation();
if ( $annotation ) {
$php_update_message .= '</p><p><em>' . $annotation . '</em>';
}
if ( ! $mysql_compat && ! $php_compat ) {
$compat = sprintf(
/* translators: 1: URL to WordPress release notes, 2: WordPress version number, 3: Minimum required PHP version number, 4: Minimum required MySQL version number, 5: Current PHP version number, 6: Current MySQL version number. */
__( 'You cannot install because <a href="%1$s">WordPress %2$s</a> requires PHP version %3$s or higher and MySQL version %4$s or higher. You are running PHP version %5$s and MySQL version %6$s.' ),
$version_url,
$wp_version,
$required_php_version,
$required_mysql_version,
$php_version,
$mysql_version
) . $php_update_message;
} elseif ( ! $php_compat ) {
$compat = sprintf(
/* translators: 1: URL to WordPress release notes, 2: WordPress version number, 3: Minimum required PHP version number, 4: Current PHP version number. */
__( 'You cannot install because <a href="%1$s">WordPress %2$s</a> requires PHP version %3$s or higher. You are running version %4$s.' ),
$version_url,
$wp_version,
$required_php_version,
$php_version
) . $php_update_message;
} elseif ( ! $mysql_compat ) {
$compat = sprintf(
/* translators: 1: URL to WordPress release notes, 2: WordPress version number, 3: Minimum required MySQL version number, 4: Current MySQL version number. */
__( 'You cannot install because <a href="%1$s">WordPress %2$s</a> requires MySQL version %3$s or higher. You are running version %4$s.' ),
$version_url,
$wp_version,
$required_mysql_version,
$mysql_version
);
}
if ( ! $mysql_compat || ! $php_compat ) {
display_header();
die( '<h1>' . __( 'Requirements Not Met' ) . '</h1><p>' . $compat . '</p></body></html>' );
}
if ( ! is_string( $wpdb->base_prefix ) || '' === $wpdb->base_prefix ) {
display_header();
die(
'<h1>' . __( 'Configuration Error' ) . '</h1>' .
'<p>' . sprintf(
/* translators: %s: wp-config.php */
__( 'Your %s file has an empty database table prefix, which is not supported.' ),
'<code>wp-config.php</code>'
) . '</p></body></html>'
);
}
// Set error message if DO_NOT_UPGRADE_GLOBAL_TABLES isn't set as it will break install.
if ( defined( 'DO_NOT_UPGRADE_GLOBAL_TABLES' ) ) {
display_header();
die(
'<h1>' . __( 'Configuration Error' ) . '</h1>' .
'<p>' . sprintf(
/* translators: %s: DO_NOT_UPGRADE_GLOBAL_TABLES */
__( 'The constant %s cannot be defined when installing WordPress.' ),
'<code>DO_NOT_UPGRADE_GLOBAL_TABLES</code>'
) . '</p></body></html>'
);
}
/**
* @global string $wp_local_package Locale code of the package.
* @global WP_Locale $wp_locale WordPress date and time locale object.
*/
$language = '';
if ( ! empty( $_REQUEST['language'] ) ) {
$language = sanitize_locale_name( $_REQUEST['language'] );
} elseif ( isset( $GLOBALS['wp_local_package'] ) ) {
$language = $GLOBALS['wp_local_package'];
}
$scripts_to_print = array( 'jquery' );
switch ( $step ) {
case 0: // Step 0.
if ( wp_can_install_language_pack() && empty( $language ) ) {
$languages = wp_get_available_translations();
if ( $languages ) {
$scripts_to_print[] = 'language-chooser';
display_header( 'language-chooser' );
echo '<form id="setup" method="post" action="?step=1">';
wp_install_language_form( $languages );
echo '</form>';
break;
}
}
// Deliberately fall through if we can't reach the translations API.
case 1: // Step 1, direct link or from language chooser.
if ( ! empty( $language ) ) {
$loaded_language = wp_download_language_pack( $language );
if ( $loaded_language ) {
load_default_textdomain( $loaded_language );
$GLOBALS['wp_locale'] = new WP_Locale();
}
}
$scripts_to_print[] = 'user-profile';
display_header();
?>
<h1><?php _ex( 'Welcome', 'Howdy' ); ?></h1>
<p><?php _e( 'Welcome to the famous five-minute WordPress installation process! Just fill in the information below and you’ll be on your way to using the most extendable and powerful personal publishing platform in the world.' ); ?></p>
<h2><?php _e( 'Information needed' ); ?></h2>
<p><?php _e( 'Please provide the following information. Do not worry, you can always change these settings later.' ); ?></p>
<?php
display_setup_form();
break;
case 2:
if ( ! empty( $language ) && load_default_textdomain( $language ) ) {
$loaded_language = $language;
$GLOBALS['wp_locale'] = new WP_Locale();
} else {
$loaded_language = 'en_US';
}
if ( ! empty( $wpdb->error ) ) {
wp_die( $wpdb->error->get_error_message() );
}
$scripts_to_print[] = 'user-profile';
display_header();
// Fill in the data we gathered.
$weblog_title = isset( $_POST['weblog_title'] ) ? trim( wp_unslash( $_POST['weblog_title'] ) ) : '';
$user_name = isset( $_POST['user_name'] ) ? trim( wp_unslash( $_POST['user_name'] ) ) : '';
$admin_password = isset( $_POST['admin_password'] ) ? wp_unslash( $_POST['admin_password'] ) : '';
$admin_password_check = isset( $_POST['admin_password2'] ) ? wp_unslash( $_POST['admin_password2'] ) : '';
$admin_email = isset( $_POST['admin_email'] ) ? trim( wp_unslash( $_POST['admin_email'] ) ) : '';
$public = isset( $_POST['blog_public'] ) ? (int) $_POST['blog_public'] : 1;
// Check email address.
$error = false;
if ( empty( $user_name ) ) {
// TODO: Poka-yoke.
display_setup_form( __( 'Please provide a valid username.' ) );
$error = true;
} elseif ( sanitize_user( $user_name, true ) !== $user_name ) {
display_setup_form( __( 'The username you provided has invalid characters.' ) );
$error = true;
} elseif ( $admin_password !== $admin_password_check ) {
// TODO: Poka-yoke.
display_setup_form( __( 'Your passwords do not match. Please try again.' ) );
$error = true;
} elseif ( empty( $admin_email ) ) {
// TODO: Poka-yoke.
display_setup_form( __( 'You must provide an email address.' ) );
$error = true;
} elseif ( ! is_email( $admin_email ) ) {
// TODO: Poka-yoke.
display_setup_form( __( 'Sorry, that is not a valid email address. Email addresses look like <code>username@example.com</code>.' ) );
$error = true;
}
if ( false === $error ) {
$wpdb->show_errors();
$result = wp_install( $weblog_title, $user_name, $admin_email, $public, '', wp_slash( $admin_password ), $loaded_language );
?>
<h1><?php _e( 'Success!' ); ?></h1>
<p><?php _e( 'WordPress has been installed. Thank you, and enjoy!' ); ?></p>
<table class="form-table install-success">
<tr>
<th><?php _e( 'Username' ); ?></th>
<td><?php echo esc_html( sanitize_user( $user_name, true ) ); ?></td>
</tr>
<tr>
<th><?php _e( 'Password' ); ?></th>
<td>
<?php if ( ! empty( $result['password'] ) && empty( $admin_password_check ) ) : ?>
<code><?php echo esc_html( $result['password'] ); ?></code><br />
<?php endif; ?>
<p><?php echo $result['password_message']; ?></p>
</td>
</tr>
</table>
<p class="step"><a href="<?php echo esc_url( wp_login_url() ); ?>"><?php _e( 'Log In' ); ?></a></p>
<?php
}
break;
}
if ( ! wp_is_mobile() ) {
?>
<script type="text/javascript">var t = document.getElementById('weblog_title'); if (t){ t.focus(); }</script>
<?php
}
wp_print_scripts( $scripts_to_print );
?>
<script type="text/javascript">
jQuery( function( $ ) {
$( '.hide-if-no-js' ).removeClass( 'hide-if-no-js' );
} );
</script>
</body>
</html>
uyarreklam.com.tr/httpdocs/wp-content/plugins/google-analytics-for-wordpress/includes/install.php 0000644 00000066706 15154032266 0032476 0 ustar 00 var/www/vhosts <?php
/**
* MonsterInsights Installation and Automatic Upgrades.
*
* This file handles setting up new
* MonsterInsights installs as well as performing
* behind the scene upgrades between
* MonsterInsights versions.
*
* @package MonsterInsights
* @subpackage Install/Upgrade
* @since 6.0.0
*/
// Exit if accessed directly
if ( ! defined( 'ABSPATH' ) ) {
exit;
}
/**
* MonsterInsights Install.
*
* This class handles a new MI install
* as well as automatic (non-user initiated)
* upgrade routines.
*
* @since 6.0.0
* @access public
*/
class MonsterInsights_Install {
/**
* MI Settings.
*
* @since 6.0.0
* @access public
* @var array $new_settings When the init() function starts, initially
* contains the original settings. At the end
* of init() contains the settings to save.
*/
public $new_settings = array();
/**
* Install/Upgrade routine.
*
* This function is what is called to actually install MI data on new installs and to do
* behind the scenes upgrades on MI upgrades. If this function contains a bug, the results
* can be catastrophic. This function gets the highest priority in all of MI for unit tests.
*
* @return void
* @since 6.0.0
* @access public
*
*/
public function init() {
// Get a copy of the current MI settings.
$this->new_settings = get_option( monsterinsights_get_option_name() );
$version = get_option( 'monsterinsights_current_version', false );
$cachec = false; // have we forced an object cache to be cleared already (so we don't clear it unnecessarily)
// if new install or Yoast Era instal
if ( ! $version ) {
// See if from Yoast
$yoast = get_option( 'yst_ga', false );
// In case from Yoast, start from scratch
delete_option( 'yoast-ga-access_token' );
delete_option( 'yoast-ga-refresh_token' );
delete_option( 'yst_ga' );
delete_option( 'yst_ga_api' );
$this->new_install();
// set db version (Do not increment! See below large comment)
update_option( 'monsterinsights_db_version', '7.4.0' );
// Remove Yoast hook if present
if ( wp_next_scheduled( 'yst_ga_aggregate_data' ) ) {
wp_clear_scheduled_hook( 'yst_ga_aggregate_data' );
}
// Clear cache since coming from Yoast
if ( ! $cachec && ! empty( $yoast ) ) {
wp_cache_flush();
$cachec = true;
}
} else { // if existing install
if ( version_compare( $version, '6.0.11', '<' ) ) {
if ( ! $cachec ) {
wp_cache_flush();
$cachec = true;
}
}
if ( version_compare( $version, '7.0.0', '<' ) ) {
$this->v700_upgrades();
}
if ( version_compare( $version, '7.4.0', '<' ) ) {
$this->v740_upgrades();
// Do not increment! See below large comment
update_option( 'monsterinsights_db_version', '7.4.0' );
}
if ( version_compare( $version, '7.5.0', '<' ) ) {
$this->v750_upgrades();
}
if ( version_compare( $version, '7.6.0', '<' ) ) {
$this->v760_upgrades();
}
if ( version_compare( $version, '7.7.1', '<' ) ) {
$this->v771_upgrades();
}
if ( version_compare( $version, '7.8.0', '<' ) ) {
$this->v780_upgrades();
}
if ( version_compare( $version, '7.9.0', '<' ) ) {
$this->v790_upgrades();
}
if ( version_compare( $version, '7.10.0', '<' ) ) {
$this->v7100_upgrades();
}
if ( version_compare( $version, '7.11.0', '<' ) ) {
$this->v7110_upgrades();
}
if ( version_compare( $version, '7.12.0', '<' ) ) {
$this->v7120_upgrades();
}
if ( version_compare( $version, '7.13.0', '<' ) ) {
$this->v7130_upgrades();
}
if ( version_compare( $version, '7.13.1', '<' ) ) {
$this->v7131_upgrades();
}
if ( version_compare( $version, '7.14.0', '<' ) ) {
$this->v7140_upgrades();
}
if ( version_compare( $version, '7.15.0', '<' ) ) {
$this->v7150_upgrades();
}
// Do not use. See monsterinsights_after_install_routine comment below.
do_action( 'monsterinsights_after_existing_upgrade_routine', $version );
$version = get_option( 'monsterinsights_current_version', $version );
update_option( 'monsterinsights_version_upgraded_from', $version );
}
// This hook is used primarily by the Pro version to run some Pro
// specific install stuff. Please do not use this hook. It is not
// considered a public hook by MI's dev team and can/will be removed,
// relocated, and/or altered without warning at any time. You've been warned.
// As this hook is not for public use, we've intentionally not docbloc'd this
// hook to avoid developers seeing it future public dev docs.
do_action( 'monsterinsights_after_install_routine', $version );
// This is the version of MI installed
update_option( 'monsterinsights_current_version', MONSTERINSIGHTS_VERSION );
// This is where we save MI settings
update_option( monsterinsights_get_option_name(), $this->new_settings );
// There's no code for this function below this. Just an explanation
// of the MI core options.
/**
* Explanation of MonsterInsights core options
*
* By now your head is probably spinning trying to figure
* out what all of these version options are for. Note, I've abbreviated
* "monsterinsights" to "mi" in the options names to make this table easier
* to read.
*
* Here's a basic rundown:
*
* mi_current_version: This starts with the actual version MI was
* installed on. We use this version to
* determine whether or not a site needs
* to run one of the behind the scenes
* MI upgrade routines. This version is updated
* every time a minor or major background upgrade
* routine is run. Generally lags behind the
* MONSTERINSIGHTS_VERSION constant by at most a couple minor
* versions. Never lags behind by 1 major version
* or more generally.
*
* mi_db_version: This is different from mi_current_version.
* Unlike the former, this is used to determine
* if a site needs to run a *user* initiated
* upgrade routine (incremented in MI_Upgrade class). This
* value is only update when a user initiated
* upgrade routine is done. Because we do very
* few user initiated upgrades compared to
* automatic ones, this version can lag behind by
* 2 or even 3 major versions. Generally contains
* the current major version.
*
* mi_settings: Returned by monsterinsights_get_option_name(), this
* is actually "monsterinsights_settings" for both pro
* and lite version. However we use a helper function to
* retrieve the option name in case we ever decide down the
* road to maintain seperate options for the Lite and Pro versions.
* If you need to access MI's settings directly, (as opposed to our
* monsterinsights_get_option helper which uses the option name helper
* automatically), you should use this function to get the
* name of the option to retrieve.
*
* Therefore you should never increment mi_db_version in this file and always increment mi_current_version.
*/
}
/**
* New MonsterInsights Install routine.
*
* This function installs all of the default
* things on new MI installs. Flight 5476 with
* non-stop service to a whole world of
* possibilities is now boarding.
*
* @return void
* @since 6.0.0
* @access public
*
*/
public function new_install() {
$this->new_settings = $this->get_monsterinsights_default_values();
$this->maybe_import_thirstyaffiliates_options();
$data = array(
'installed_version' => MONSTERINSIGHTS_VERSION,
'installed_date' => time(),
'installed_pro' => monsterinsights_is_pro_version() ? time() : false,
'installed_lite' => monsterinsights_is_pro_version() ? false : time(),
);
update_option( 'monsterinsights_over_time', $data, false );
// Let addons + MI Pro/Lite hook in here. @todo: doc as nonpublic
do_action( 'monsterinsights_after_new_install_routine', MONSTERINSIGHTS_VERSION );
}
public function get_monsterinsights_default_values() {
$admin_email = get_option( 'admin_email' );
$admin_email_array = array(
array(
'email' => $admin_email,
),
);
return array(
'enable_affiliate_links' => true,
'affiliate_links' => array(
array(
'path' => '/go/',
'label' => 'affiliate',
),
array(
'path' => '/recommend/',
'label' => 'affiliate',
)
),
'demographics' => 1,
'ignore_users' => array( 'administrator', 'editor' ),
'dashboards_disabled' => 0,
'anonymize_ips' => 0,
'extensions_of_files' => 'doc,pdf,ppt,zip,xls,docx,pptx,xlsx',
'subdomain_tracking' => '',
'link_attribution' => true,
'tag_links_in_rss' => true,
'allow_anchor' => 0,
'add_allow_linker' => 0,
'save_settings' => array( 'administrator' ),
'view_reports' => array( 'administrator', 'editor' ),
'events_mode' => 'js',
'tracking_mode' => 'gtag', // Default new users to gtag.
'email_summaries' => 'on',
'summaries_html_template' => 'yes',
'summaries_email_addresses' => $admin_email_array,
'exception_alert_email_addresses' => $admin_email_array,
'automatic_updates' => 'all',
'anonymous_data' => 0,
'verified_automatic' => 0,
'popular_posts_inline_theme' => 'alpha',
'popular_posts_widget_theme' => 'alpha',
'popular_posts_products_theme' => 'alpha',
'popular_posts_inline_placement' => 'manual',
'popular_posts_widget_theme_columns' => '2',
'popular_posts_products_theme_columns' => '2',
'popular_posts_widget_count' => '4',
'popular_posts_products_count' => '4',
'popular_posts_widget_theme_meta_author' => 'on',
'popular_posts_widget_theme_meta_date' => 'on',
'popular_posts_widget_theme_meta_comments' => 'on',
'popular_posts_products_theme_meta_price' => 'on',
'popular_posts_products_theme_meta_rating' => 'on',
'popular_posts_products_theme_meta_image' => 'on',
'popular_posts_inline_after_count' => '150',
'popular_posts_inline_multiple_number' => '3',
'popular_posts_inline_multiple_distance' => '250',
'popular_posts_inline_multiple_min_words' => '100',
'popular_posts_inline_post_types' => array( 'post' ),
'popular_posts_widget_post_types' => array( 'post' ),
);
}
/**
* Check if ThirstyAffiliates plugin is installed and use the link prefix value in the affiliate settings.
*
* @return void
*/
public function maybe_import_thirstyaffiliates_options() {
// Check if ThirstyAffiliates is installed.
if ( ! function_exists( 'ThirstyAffiliates' ) ) {
return;
}
$link_prefix = get_option( 'ta_link_prefix', 'recommends' );
if ( $link_prefix === 'custom' ) {
$link_prefix = get_option( 'ta_link_prefix_custom', 'recommends' );
}
if ( ! empty( $link_prefix ) ) {
// Check if prefix exists.
$prefix_set = false;
foreach ( $this->new_settings['affiliate_links'] as $affiliate_link ) {
if ( $link_prefix === trim( $affiliate_link['path'], '/' ) ) {
$prefix_set = true;
break;
}
}
if ( ! $prefix_set ) {
$this->new_settings['affiliate_links'][] = array(
'path' => '/' . $link_prefix . '/',
'label' => 'affiliate',
);
}
}
}
/**
* MonsterInsights Version 7.0 upgrades.
*
* This function does the
* upgrade routine from MonsterInsights 6.2->7.0.
*
* @return void
* @since 7.0.0
* @access public
*
*/
public function v700_upgrades() {
// 1. Default all event tracking and tracking to GA + JS respectively
// 3a Set tracking_mode to use analytics.js
$this->new_settings['tracking_mode'] = 'analytics';
// 3b Set events mode to use JS if the events mode is not set explicitly to none
if ( empty( $this->new_settings['events_mode'] ) || $this->new_settings['events_mode'] !== 'none' ) {
$this->new_settings['events_mode'] = 'js';
}
// 2. Migrate manual UA codes
// 2a Manual UA has the lowest priority
if ( ! empty( $this->new_settings['manual_ua_code'] ) ) {
// Set as manual UA code
is_network_admin() ? update_site_option( 'monsterinsights_network_profile', array( 'manual' => $this->new_settings['manual_ua_code'] ) ) : update_option( 'monsterinsights_site_profile', array( 'manual' => $this->new_settings['manual_ua_code'] ) );
}
// 2b Then try the oAuth UA code
if ( ! empty( $this->new_settings['analytics_profile_code'] ) ) {
// Set as manual UA code
is_network_admin() ? update_site_option( 'monsterinsights_network_profile', array( 'manual' => $this->new_settings['analytics_profile_code'] ) ) : update_option( 'monsterinsights_site_profile', array( 'manual' => $this->new_settings['analytics_profile_code'] ) );
}
// 3. Migrate License keys
if ( is_multisite() ) {
$ms_license = get_site_option( 'monsterinsights_license', '' );
if ( $ms_license ) {
update_site_option( 'monsterinsights_network_license_updates', get_site_option( 'monsterinsights_license_updates', '' ) );
update_site_option( 'monsterinsights_network_license', $ms_license );
}
}
}
/**
* Upgrade routine for the new settings panel, onboarding wizard, and the internal-as-outbound v2 settings system.
*/
public function v740_upgrades() {
// 1. Settings Conversions:
// Convert affiliate field to repeater format
if ( ! empty( $this->new_settings['track_internal_as_outbound'] ) ) {
$affiliate_old_paths = $this->new_settings['track_internal_as_outbound'];
$affiliate_old_label = isset( $this->new_settings['track_internal_as_label'] ) ? $this->new_settings['track_internal_as_label'] : '';
$new_paths = explode( ',', $affiliate_old_paths );
$this->new_settings['affiliate_links'] = array();
if ( ! empty( $new_paths ) ) {
$this->new_settings['enable_affiliate_links'] = true;
foreach ( $new_paths as $new_path ) {
$this->new_settings['affiliate_links'][] = array(
'path' => $new_path,
'label' => $affiliate_old_label,
);
}
}
$settings = array(
'track_internal_as_outbound',
'track_internal_as_label',
);
foreach ( $settings as $setting ) {
if ( ! empty( $this->new_settings[ $setting ] ) ) {
unset( $this->new_settings[ $setting ] );
}
}
}
// Update option to disable just reports or also the dashboard widget.
if ( isset( $this->new_settings['dashboards_disabled'] ) && $this->new_settings['dashboards_disabled'] ) {
$this->new_settings['dashboards_disabled'] = 'disabled';
}
$this->new_settings['tracking_mode'] = 'analytics';
$this->new_settings['events_mode'] = 'js';
// If opted in during allow_tracking era, move that over
if ( ! empty( $this->new_settings['allow_tracking'] ) ) {
$this->new_settings['anonymous_data'] = 1;
}
// 2. Remove Yoast stuff
delete_option( 'yoast-ga-access_token' );
delete_option( 'yoast-ga-refresh_token' );
delete_option( 'yst_ga' );
delete_option( 'yst_ga_api' );
// 3. Remove fake settings from other plugins using our key for some reason and old settings of ours
$settings = array(
'debug_mode',
'track_download_as',
'analytics_profile',
'analytics_profile_code',
'analytics_profile_name',
'manual_ua_code',
'track_outbound',
'track_download_as',
'enhanced_link_attribution',
'oauth_version',
'monsterinsights_oauth_status',
'firebug_lite',
'google_auth_code',
'allow_tracking',
);
foreach ( $settings as $setting ) {
if ( ! empty( $this->new_settings[ $setting ] ) ) {
unset( $this->new_settings[ $setting ] );
}
}
$settings = array(
'_repeated',
'ajax',
'asmselect0',
'bawac_force_nonce',
'icl_post_language',
'saved_values',
'mlcf_email',
'mlcf_name',
'cron_failed',
'undefined',
'cf_email',
'cf_message',
'cf_name',
'cf_number',
'cf_phone',
'cf_subject',
'content',
'credentials',
'cron_failed',
'cron_last_run',
'global-css',
'grids',
'page',
'punch-fonts',
'return_tab',
'skins',
'navigation-skins',
'title',
'type',
'wpcf_email',
'wpcf_your_name',
);
foreach ( $settings as $setting ) {
if ( ! empty( $this->new_settings[ $setting ] ) ) {
unset( $this->new_settings[ $setting ] );
}
}
// 4. Remove old crons
if ( wp_next_scheduled( 'monsterinsights_daily_cron' ) ) {
wp_clear_scheduled_hook( 'monsterinsights_daily_cron' );
}
if ( wp_next_scheduled( 'monsterinsights_send_tracking_data' ) ) {
wp_clear_scheduled_hook( 'monsterinsights_send_tracking_data' );
}
if ( wp_next_scheduled( 'monsterinsights_send_tracking_checkin' ) ) {
wp_clear_scheduled_hook( 'monsterinsights_send_tracking_checkin' );
}
if ( wp_next_scheduled( 'monsterinsights_weekly_cron' ) ) {
wp_clear_scheduled_hook( 'monsterinsights_weekly_cron' );
}
if ( wp_next_scheduled( 'yst_ga_aggregate_data' ) ) {
wp_clear_scheduled_hook( 'yst_ga_aggregate_data' );
}
delete_option( 'monsterinsights_tracking_last_send' );
delete_option( 'mi_tracking_last_send' );
// 5. Remove old option
delete_option( 'monsterinsights_settings_version' );
}
/**
* Upgrade routine
*/
public function v750_upgrades() {
// 1. One time re-prompt for anonymous data (due to migration bug now fixed)
// if ( ! monsterinsights_is_pro_version() ) {
// if ( empty( $this->new_settings[ 'anonymous_data' ] ) ) {
// update_option( 'monsterinsights_tracking_notice', 0 );
// }
// }
//
// 2. Clear old settings ( 'tracking_mode','events_mode',)
// 3. Attempt to extract the cross-domain settings from the Custom Code area and use in the new option.
$custom_code = isset( $this->new_settings['custom_code'] ) ? $this->new_settings['custom_code'] : '';
if ( ! empty( $custom_code ) ) {
$pattern = '/(?:\'linker:autoLink\', )(?:\[)(.*)(?:\])/m';
preg_match_all( $pattern, $custom_code, $matches, PREG_SET_ORDER, 0 );
if ( ! empty( $matches ) && isset( $matches[0] ) && isset( $matches[0][1] ) ) {
$cross_domains = array();
$domains = explode( ',', $matches[0][1] );
foreach ( $domains as $key => $domain ) {
$domain = trim( $domain );
$cross_domains[] = array(
'domain' => trim( $domain, '\'\"' ),
);
}
$this->new_settings['add_allow_linker'] = true;
$this->new_settings['cross_domains'] = $cross_domains;
$notices = get_option( 'monsterinsights_notices' );
if ( ! is_array( $notices ) ) {
$notices = array();
}
$notices['monsterinsights_cross_domains_extracted'] = false;
update_option( 'monsterinsights_notices', $notices );
}
}
}
/**
* Upgrade routine for version 7.6.0
*/
public function v760_upgrades() {
$cross_domains = isset( $this->new_settings['cross_domains'] ) ? $this->new_settings['cross_domains'] : array();
if ( ! empty( $cross_domains ) && is_array( $cross_domains ) ) {
$current_domain = wp_parse_url( home_url() );
$current_domain = isset( $current_domain['host'] ) ? $current_domain['host'] : '';
if ( ! empty( $current_domain ) ) {
$regex = '/^(?:' . $current_domain . '|(?:.+)\.' . $current_domain . ')$/m';
foreach ( $cross_domains as $key => $cross_domain ) {
if ( ! isset( $cross_domain['domain'] ) ) {
continue;
}
preg_match( $regex, $cross_domain['domain'], $matches );
if ( count( $matches ) > 0 ) {
unset( $this->new_settings['cross_domains'][ $key ] );
}
}
}
}
}
/**
* Upgrade routine for version 7.7.1
*/
public function v771_upgrades() {
if ( ! monsterinsights_is_pro_version() ) {
// We only need to run this for the Pro version.
return;
}
include_once( ABSPATH . 'wp-admin/includes/plugin.php' );
$plugin = 'wp-scroll-depth/wp-scroll-depth.php';
// Check if wp-scroll-depth is active and deactivate to avoid conflicts with the pro scroll tracking feature.
if ( is_plugin_active( $plugin ) ) {
deactivate_plugins( $plugin );
}
}
/**
* Upgrade routine for version 7.8.0
*/
public function v780_upgrades() {
if ( monsterinsights_get_v4_id() ) {
// If we have a UA, don't show the first run notice.
monsterinsights_update_option( 'monsterinsights_first_run_notice', true );
// If they are already tracking when they upgrade, mark connected time as now.
$over_time = get_option( 'monsterinsights_over_time', array() );
if ( empty( $over_time['connected_date'] ) ) {
$over_time['connected_date'] = time();
update_option( 'monsterinsights_over_time', $over_time, false );
}
}
}
/**
* Upgrade routine for version 7.9.0
*/
public function v790_upgrades() {
// If they are already tracking, don't show the notice.
if ( monsterinsights_get_v4_id() ) {
update_option( 'monsterinsights_frontend_tracking_notice_viewed', true );
// If they are already tracking when they upgrade & not already marked mark connected time as now.
// Adding this here again as 7.8.0 upgrade didn't run for all users.
$over_time = get_option( 'monsterinsights_over_time', array() );
if ( empty( $over_time['connected_date'] ) ) {
$over_time['connected_date'] = time();
update_option( 'monsterinsights_over_time', $over_time, false );
}
}
}
/**
* Upgrade routine for version 8.0.0
*/
public function v7100_upgrades() {
// Remove exe js and tgz from file downloads tracking.
$current_downloads = isset( $this->new_settings['extensions_of_files'] ) ? $this->new_settings['extensions_of_files'] : array();
if ( ! empty( $current_downloads ) ) {
$extensions_to_remove = array(
'exe',
'js',
'tgz'
);
$extensions_to_add = array(
'docx',
'pptx',
'xlsx',
);
$extensions = explode( ',', $current_downloads );
$updated_extensions = array();
if ( ! empty( $extensions ) && is_array( $extensions ) ) {
foreach ( $extensions as $extension ) {
if ( ! in_array( $extension, $extensions_to_remove ) ) {
$updated_extensions[] = $extension;
}
}
}
foreach ( $extensions_to_add as $extension_to_add ) {
if ( ! in_array( $extension_to_add, $updated_extensions ) ) {
$updated_extensions[] = $extension_to_add;
}
}
} else {
$updated_extensions = array(
'pdf',
'doc',
'ppt',
'xls',
'zip',
'docx',
'pptx',
'xlsx',
);
}
$updated_extensions = implode( ',', $updated_extensions );
$this->new_settings['extensions_of_files'] = $updated_extensions;
}
/**
* Upgrade routine for version 7.11.0
*/
public function v7110_upgrades() {
if ( empty( $this->new_settings['email_summaries'] ) ) {
$admin_email = get_option( 'admin_email' );
$admin_email_array = array(
array(
'email' => $admin_email,
),
);
$this->new_settings['email_summaries'] = 'on';
$this->new_settings['summaries_html_template'] = 'yes';
$this->new_settings['summaries_email_addresses'] = $admin_email_array; // Not using wp_json_encode for backwards compatibility.
}
}
/**
* Upgrade routine for version 7.12.0
*/
public function v7120_upgrades() {
// Make sure the default for automatic updates is reflected correctly in the settings.
if ( empty( $this->new_settings['automatic_updates'] ) ) {
$this->new_settings['automatic_updates'] = 'none';
}
}
/**
* Upgrade routine for version 7.13.0
*/
public function v7130_upgrades() {
// Set default values for popular posts.
$popular_posts_defaults = array(
'popular_posts_inline_theme' => 'alpha',
'popular_posts_widget_theme' => 'alpha',
'popular_posts_products_theme' => 'alpha',
'popular_posts_inline_placement' => 'manual',
'popular_posts_widget_theme_columns' => '2',
'popular_posts_products_theme_columns' => '2',
'popular_posts_widget_count' => '4',
'popular_posts_products_count' => '4',
'popular_posts_widget_theme_meta_author' => 'on',
'popular_posts_widget_theme_meta_date' => 'on',
'popular_posts_widget_theme_meta_comments' => 'on',
'popular_posts_products_theme_meta_price' => 'on',
'popular_posts_products_theme_meta_rating' => 'on',
'popular_posts_products_theme_meta_image' => 'on',
'popular_posts_inline_after_count' => '150',
'popular_posts_inline_multiple_number' => '3',
'popular_posts_inline_multiple_distance' => '250',
'popular_posts_inline_multiple_min_words' => '100',
'popular_posts_inline_post_types' => array( 'post' ),
'popular_posts_widget_post_types' => array( 'post' ),
);
foreach ( $popular_posts_defaults as $key => $value ) {
if ( empty( $this->new_settings[ $key ] ) ) {
$this->new_settings[ $key ] = $value;
}
}
// Contextual education cleanup.
$option_name = 'monsterinsights_notifications';
$notifications = get_option( $option_name, array() );
$dismissed_notifications = isset( $notifications['dismissed'] ) ? $notifications['dismissed'] : array();
if ( is_array( $dismissed_notifications ) && ! empty( $dismissed_notifications ) ) {
foreach ( $dismissed_notifications as $key => $dismiss_notification ) {
$title = isset( $dismiss_notification['title'] ) ? $dismiss_notification['title'] : '';
$content = isset( $dismiss_notification['content'] ) ? $dismiss_notification['content'] : '';
if ( empty( $title ) || empty( $content ) ) {
unset( $dismissed_notifications[ $key ] );
}
}
update_option(
$option_name,
array(
'update' => $notifications['update'],
'feed' => $notifications['feed'],
'events' => $notifications['events'],
'dismissed' => $dismissed_notifications,
)
);
}
}
/**
* Upgrade routine for version 7.13.1
*/
public function v7131_upgrades() {
// Delete transient for GA data with wrong expiration date.
delete_transient( 'monsterinsights_popular_posts_ga_data' );
}
/**
* Upgrade routine for version 7.14.0
*/
public function v7140_upgrades() {
// Clear notification cron events no longer used.
$cron = get_option( 'cron' );
foreach ( $cron as $timestamp => $cron_array ) {
if ( ! is_array( $cron_array ) ) {
continue;
}
foreach ( $cron_array as $cron_key => $cron_data ) {
if ( 0 === strpos( $cron_key, 'monsterinsights_notification_' ) ) {
wp_unschedule_event( $timestamp, $cron_key, array() );
}
}
}
// Delete existing year in review report option.
delete_option( 'monsterinsights_report_data_yearinreview' );
}
/**
* Upgrade routine for version 7.15.0
*/
public function v7150_upgrades() {
// Enable gtag compatibility mode by default.
if ( empty( $this->new_settings['gtagtracker_compatibility_mode'] ) ) {
$this->new_settings['gtagtracker_compatibility_mode'] = true;
}
}
}