????

Your IP : 216.73.216.152


Current Path : /home2/morganrand/www/wp-content-bkp/plugins/optimizely/
Upload File :
Current File : /home2/morganrand/www/wp-content-bkp/plugins/optimizely/edit.php

<?php
/**
 * When users go to write their posts, they'll see a new section for A/B testing headlines. 
 * This section will include inputs for users to write alternate headlines and a button to create the experiment.
 * We also use several hidden input fields to store data about the project and experiment.
 * These are used in edit.js to send AJAX requests to the Optimizely API.
 */
/**
 * Return the full permalink of the current post.
 * @return string
 */
function get_full_permalink() {
	$permalinkArray = get_sample_permalink( $post->ID );
	$permalinkTemplate = array_values( $permalinkArray );
	$permalinkSlug = array_values( $permalinkArray );
	
	return str_replace( '%postname%', $permalinkSlug[1], $permalinkTemplate[0] );
}
/**
 * Add the meta box for title variations.
 */
function optimizely_title_variations_add() {
	// Only add the module if the current post type is one the user selected in the admin tab
	if ( optimizely_is_post_type_enabled( get_post_type() ) ) {
		add_meta_box( 'optimizely-headlines', 'A/B Test Headlines', 'optimizely_title_variations_render', get_post_type(), 'side', 'high' );
	}
    
}
add_action( 'add_meta_boxes', 'optimizely_title_variations_add' );
/**
 * Render the meta box to add title variations.
 * @param WP_Post $post
 */
function optimizely_title_variations_render( $post ) {
	// Check if we can create experiments
	if ( ! optimizely_can_create_experiments() ) {
		?>
		<p><?php sprintf(
			'%s <a href="%s">%s</a>',
			esc_html__( 'Please configure your API credentials in the', 'optimizely' ),
			esc_url( menu_page_url( 'optimizely-config', false ) ),
			esc_html__( 'Optimizely settings page', 'optimizely' )
		); ?>.</p>
		<?php
		return;
	}
	$titles = array();
	$contents = '';
	$num_variations = get_option( 'optimizely_num_variations', OPTIMIZELY_NUM_VARIATIONS );
	for ( $i = 1; $i <= $num_variations; $i++ ) {
		$meta_key = optimizely_meta_key( $i );
		$titles[ $i ] = get_post_meta( $post->ID, $meta_key, true );
		echo '<p>';
		echo sprintf(
			'<label for="%s">%s #%u</label><br>',
			esc_attr( $meta_key ),
			esc_html__( 'Variation', 'optimizely' ),
			absint( $i )
		);
		echo sprintf(
			'<input type="text" name="%s" id="%s" class="optimizely_variation" placeholder="%s %u" value="%s">',
			esc_attr( $meta_key ),
			esc_attr( $meta_key ),
			esc_html__( 'Title', 'optimizely' ),
			absint( $i ),
			esc_attr( $titles[ $i ] )
		);
		echo '</p>';
	}
	?>

	<input type="hidden" id="optimizely_token" value="<?php echo esc_attr( get_option( 'optimizely_token' ) )?>" />
	<input type="hidden" id="optimizely_project_id" value="<?php echo esc_attr( get_option('optimizely_project_id') ) ?>" />
	<input type="hidden" id="optimizely_experiment_id" name="optimizely_experiment_id" value="<?php echo esc_attr( get_post_meta( $post->ID, 'optimizely_experiment_id', true ) ) ?>" />
	<input type="hidden" id="optimizely_experiment_status" name="optimizely_experiment_status" value="<?php echo esc_attr( get_post_meta( $post->ID, 'optimizely_experiment_status', true ) ) ?>" />
	<input type="hidden" id="optimizely_experiment_url" name="optimizely_experiment_url" value="<?php echo esc_url( get_full_permalink() ) ?>" />
	<input type="hidden" id="optimizely_url_targeting" name="optimizely_url_targeting" value="<?php echo esc_attr( get_option( 'optimizely_url_targeting' ) ) ?>" />
	<input type="hidden" id="optimizely_url_targeting_type" name="optimizely_url_targeting_type" value="<?php echo esc_attr( get_option( 'optimizely_url_targeting_type' ) ) ?>" />
	<input type="hidden" id="optimizely_activation_mode" name="optimizely_activation_mode" value="<?php echo esc_attr( get_option( 'optimizely_activation_mode' ) ) ?>" />
	<textarea id="optimizely_variation_template" style="display: none"><?php echo esc_attr( get_option( 'optimizely_variation_template' ) ) ?></textarea>
	<textarea id="optimizely_conditional_activation_code" style="display: none"><?php echo esc_attr( get_option( 'optimizely_conditional_activation_code' ) ) ?></textarea>

	<?php if(get_post_status($post->ID) == 'publish'): ?>
		<div id="optimizely_not_created">
			<a id="optimizely_create" class="button-primary"><?php esc_html_e( 'Create Experiment', 'optimizely' ) ?></a>
		</div>
		<div id="optimizely_created">
			<a id="optimizely_toggle_running" class="button-primary"><?php esc_html_e( 'Start Experiment', 'optimizely' ) ?></a>	
			<p></p>
			<a id="optimizely_view" class="button" target="_blank"><?php esc_html_e( 'View on Optimizely', 'optimizely' ) ?></a>
			<p><?php esc_html_e( 'Status', 'optimizely' ) ?>: <b id="optimizely_experiment_status_text"><?php echo esc_html( get_post_meta( $post->ID, 'optimizely_experiment_status', true ) ) ?></b>
			<br />
			<?php esc_html_e( 'Results', 'optimizely' ) ?>: <a href="<?php echo esc_url( menu_page_url( 'optimizely-config', false ) ) ?>" id="optimizely_results" target="_blank"><?php esc_html_e( 'View Results', 'optimizely' ) ?></a></p>
		</div>
	<?php else:	?>
		<p><?php esc_html_e( 'You must first publish this post before creating the experiment on Optimizely', 'optimizely' ) ?></p>
	<?php endif; ?>

	<?php
}
/**
 * Save the title variations.
 * @param int $post_id
 */
function optimizely_title_variations_save( $post_id ) {
	// Ensure the current user can save posts
	if ( ! optimizely_is_post_type_enabled( get_post_type( $post_id ) ) ) {
		return;
	}
	// Save the variations
	$num_variations = get_option( 'optimizely_num_variations', OPTIMIZELY_NUM_VARIATIONS );
	for ( $i = 1; $i <= $num_variations; $i++ ) {
		$meta_key = optimizely_meta_key( $i );
		if ( isset( $_POST[ $meta_key ] ) ) {
			// Save titles
			$new_title = sanitize_text_field( $_POST[ $meta_key ] );
			update_post_meta( $post_id, $meta_key, $new_title );
		}
	}
	if ( isset( $_POST['optimizely_experiment_id'] ) ) {	
		update_post_meta( $post_id, 'optimizely_experiment_id', sanitize_text_field( $_POST['optimizely_experiment_id'] ) );
		update_post_meta( $post_id, 'optimizely_experiment_status', sanitize_text_field( $_POST['optimizely_experiment_status'] ) );
	}
}
add_action( 'save_post', 'optimizely_title_variations_save' );
/**
 * Update experiment meta on an AJAX request.
 * @param int $post_id
 */
function optimizely_update_experiment_meta() {
	if ( isset( $_POST['post_id'] ) ) {
		optimizely_title_variations_save( absint( $_POST['post_id'] ) );
	}
	
	exit;
}
add_action( 'wp_ajax_update_experiment_meta', 'optimizely_update_experiment_meta' );
/**
 * Update the post title on an AJAX request for the winner of the test.
 * @param int $post_id
 */
function optimizely_update_post_title() {
	if ( isset( $_POST['post_id'] ) && isset( $_POST['title'] ) ) {
		$post_id = absint( $_POST['post_id'] );
		$winning_var_title = sanitize_text_field( $_POST['title'] );
		wp_update_post( array(
			'ID' => $post_id,
			'post_title' => $winning_var_title
		) );
	}
	
	exit;
}
add_action( 'wp_ajax_update_post_title', 'optimizely_update_post_title' );
/**
 * Check if this is a post type that uses Optimizely.
 * @param string $post_type
 * @return boolean
 */
function optimizely_is_post_type_enabled( $post_type ) {
	$selected_post_types = explode( ',', get_option( 'optimizely_post_types' ) );
	if ( ! empty( $selected_post_types ) && in_array( $post_type, $selected_post_types ) ) {
		return true;
	} else {
		return false;
	}
}
/**
 * Return the meta key format used for all post title variations.
 * @param int $i
 * @return string
 */
function optimizely_meta_key( $i ) {
	return 'post_title' . absint( $i );
}
?>