File: /var/www/vhosts/uyarreklam.com.tr/httpdocs/Output.php.tar
var/www/vhosts/uyarreklam.com.tr/httpdocs/wp-content/plugins/optinmonster/OMAPI/Output.php 0000644 00000060434 15154150356 0026125 0 ustar 00 <?php
/**
* Output class.
*
* @since 1.0.0
*
* @package OMAPI
* @author Thomas Griffin
*/
// Exit if accessed directly.
if ( ! defined( 'ABSPATH' ) ) {
exit;
}
/**
* Output class.
*
* @since 1.0.0
*/
class OMAPI_Output {
/**
* Holds the class object.
*
* @since 1.0.0
*
* @var object
*/
public static $instance;
/**
* Path to the file.
*
* @since 1.0.0
*
* @var string
*/
public $file = __FILE__;
/**
* Holds the base class object.
*
* @since 1.0.0
*
* @var object
*/
public $base;
/**
* Holds the meta fields used for checking output statuses.
*
* @since 1.0.0
*
* @var array
*/
public $fields = array();
/**
* Flag for determining if localized JS variable is output.
*
* @since 1.0.0
*
* @var bool
*/
public $localized = false;
/**
* Flag for determining if localized JS variable is output.
*
* @since 1.0.0
*
* @var bool
*/
public $data_output = false;
/**
* Holds JS slugs for maybe parsing shortcodes.
*
* @since 1.0.0
*
* @var array
*/
public $slugs = array();
/**
* Holds shortcode output.
*
* @since 1.0.0
*
* @var array
*/
public $shortcodes = array();
/**
* Whether we are in a live campaign preview.
*
* @since 2.2.0
*
* @var boolean
*/
protected static $live_preview = false;
/**
* Whether we are in a live campaign rules preview.
*
* @since 2.2.0
*
* @var boolean
*/
protected static $live_rules_preview = false;
/**
* Whether we are in a site verification request.
*
* @since 2.2.0
*
* @var boolean
*/
protected static $site_verification = false;
/**
* Primary class constructor.
*
* @since 1.0.0
*/
public function __construct() {
// Set our object.
$this->set();
add_filter( 'optinmonster_pre_campaign_should_output', array( $this, 'enqueue_helper_js_if_applicable' ), 999, 2 );
// If no credentials have been provided, do nothing.
if ( ! $this->base->get_api_credentials() ) {
return;
}
// Add the hook to allow OptinMonster to process.
add_action( 'pre_get_posts', array( $this, 'load_optinmonster_inline' ), 9999 );
add_action( 'wp', array( $this, 'maybe_load_optinmonster' ), 9999 );
}
/**
* Sets our object instance and base class instance.
*
* @since 1.0.0
*/
public function set() {
self::$instance = $this;
$this->base = OMAPI::get_instance();
$rules = new OMAPI_Rules();
if ( OMAPI_Debug::can_output_debug() ) {
add_action( 'wp_footer', array( 'OMAPI_Debug', 'output_general' ), 99 );
}
// Keep these around for back-compat.
$this->fields = $rules->fields;
// phpcs:disable WordPress.Security.NonceVerification.Recommended
self::$live_preview = ! empty( $_GET['om-live-preview'] )
? sanitize_text_field( wp_unslash( $_GET['om-live-preview'] ) )
: false;
self::$live_rules_preview = ! empty( $_GET['om-live-rules-preview'] )
? sanitize_text_field( wp_unslash( $_GET['om-live-rules-preview'] ) )
: false;
self::$site_verification = ! empty( $_GET['om-verify-site'] )
? sanitize_text_field( wp_unslash( $_GET['om-verify-site'] ) )
: false;
// phpcs:enable
}
/**
* Conditionally loads the OptinMonster optin based on the query filter detection.
*
* @since 1.0.0
*/
public function maybe_load_optinmonster() {
/**
* Check if there are any campaigns for the site
*/
$optins = $this->base->get_optins();
if ( empty( $optins ) ) {
return;
}
// Checking if AMP is enabled.
if ( OMAPI_Utils::is_amp_enabled() ) {
return;
}
// Load actions and filters.
add_action( 'wp_enqueue_scripts', array( $this, 'api_script' ) );
add_action( 'wp_footer', array( $this, 'localize' ), 9999 );
add_action( 'wp_footer', array( $this, 'display_rules_data' ), 9999 );
add_action( 'wp_footer', array( $this, 'maybe_parse_shortcodes' ), 11 );
// Add the hook to allow OptinMonster to process.
add_action( 'wp_footer', array( $this, 'load_optinmonster' ) );
if ( self::$live_preview || self::$live_rules_preview ) {
add_filter( 'optin_monster_api_final_output', array( $this, 'load_previews' ), 10, 2 );
add_filter( 'optin_monster_api_empty_output', array( $this, 'load_previews' ), 10, 2 );
}
if ( self::$live_preview || self::$site_verification ) {
add_action( 'wp_footer', array( $this, 'load_global_optinmonster' ) );
}
}
/**
* Enqueues the OptinMonster API script.
*
* @since 1.0.0
*/
public function api_script() {
// A hook to change the API location. Using this hook, we can force to load in header; default location is footer.
$in_footer = apply_filters( 'optin_monster_api_loading_location', true );
wp_enqueue_script(
$this->base->plugin_slug . '-api-script',
OMAPI_Urls::om_api(),
array(),
$this->base->asset_version(),
$in_footer
);
if ( version_compare( get_bloginfo( 'version' ), '4.1.0', '>=' ) ) {
add_filter( 'script_loader_tag', array( $this, 'filter_api_script' ), 10, 2 );
} else {
add_filter( 'clean_url', array( $this, 'filter_api_url' ) );
}
}
/**
* Filters the API script tag to output the JS version embed and to add a custom ID.
*
* @since 1.0.0
*
* @param string $tag The HTML script output.
* @param string $handle The script handle to target.
* @return string $tag Amended HTML script with our ID attribute appended.
*/
public function filter_api_script( $tag, $handle ) {
// If the handle is not ours, do nothing.
if ( $this->base->plugin_slug . '-api-script' !== $handle ) {
return $tag;
}
// Adjust the output to the JS version embed and to add our custom script ID.
return self::om_script_tag(
array(
'id' => 'omapi-script',
)
);
}
/**
* Filters the API script tag to add a custom ID.
*
* @since 1.0.0
*
* @param string $url The URL to filter.
* @return string $url Amended URL with our ID attribute appended.
*/
public function filter_api_url( $url ) {
// If the handle is not ours, do nothing.
if ( false === strpos( $url, str_replace( 'https://', '', OMAPI_Urls::om_api() ) ) ) {
return $url;
}
// Adjust the URL to add our custom script ID.
return "$url' async='async' id='omapi-script";
}
/**
* Loads an inline optin form (sidebar and after post) by checking against the current query.
*
* @since 1.0.0
*
* @param object $query The current main WP query object.
*/
public function load_optinmonster_inline( $query ) {
// If we are not on the main query or if in an rss feed, do nothing.
if ( ! $query->is_main_query() || $query->is_feed() ) {
return;
}
$priority = apply_filters( 'optin_monster_post_priority', 999 ); // Deprecated.
$priority = apply_filters( 'optin_monster_api_post_priority', 999 );
add_filter( 'the_content', array( $this, 'load_optinmonster_inline_content' ), $priority );
}
/**
* Filters the content to output a campaign form.
*
* @since 1.0.0
*
* @param string $content The current HTML string of main content.
* @return string $content Amended content with possibly a campaign.
*/
public function load_optinmonster_inline_content( $content ) {
global $post;
// Checking if AMP is enabled.
if ( OMAPI_Utils::is_amp_enabled() ) {
return $content;
}
// If the global $post is not set or the post status is not published, return early.
if ( empty( $post ) || isset( $post->ID ) && 'publish' !== get_post_status( $post->ID ) ) {
return $content;
}
// Don't do anything for excerpts.
// This prevents the optin accidentally being output when get_the_excerpt() or wp_trim_excerpt() is
// called by a theme or plugin, and there is no excerpt, meaning they call the_content and break us.
if (
doing_filter( 'get_the_excerpt' ) ||
doing_filter( 'wp_trim_excerpt' )
) {
return $content;
}
// Prepare variables.
$post_id = self::current_id();
$optins = $this->base->get_optins();
// If no optins are found, return early.
if ( empty( $optins ) ) {
return $content;
}
// Loop through each optin and optionally output it on the site.
foreach ( $optins as $optin ) {
if ( OMAPI_Rules::check_inline( $optin, $post_id, true ) ) {
$this->set_slug( $optin );
// Prepare the optin campaign.
$prepared = $this->prepare_campaign( $optin );
$position = get_post_meta( $optin->ID, '_omapi_auto_location', true );
$inserter = new OMAPI_Inserter( $content, $prepared );
switch ( $position ) {
case 'paragraphs':
$paragraphs = get_post_meta( $optin->ID, '_omapi_auto_location_paragraphs', true );
$content = $inserter->after_paragraph( absint( $paragraphs ) );
break;
case 'words':
$words = get_post_meta( $optin->ID, '_omapi_auto_location_words', true );
$content = $inserter->after_words( absint( $words ) );
break;
case 'above_post':
$content = $inserter->prepend();
break;
case 'below_post':
default:
$content = $inserter->append();
break;
}
}
}
// Return the content.
return $content;
}
/**
* Possibly loads a campaign on a page.
*
* @since 1.0.0
*/
public function load_optinmonster() {
/**
* Check if there are any campaigns for the site
*/
$optins = $this->base->get_optins();
if ( empty( $optins ) ) {
return;
}
$post_id = self::current_id();
$prevented = is_singular() && $post_id && get_post_meta( $post_id, 'om_disable_all_campaigns', true );
$prevented = apply_filters( 'optinmonster_prevent_all_campaigns', $prevented, $post_id );
if ( $prevented ) {
add_action( 'wp_footer', array( $this, 'prevent_all_campaigns' ), 11 );
}
$optins = $prevented ? array() : $optins;
$campaigns = array();
if ( empty( $optins ) ) {
// If no optins are found, send through filter to potentially add preview data.
$campaigns = apply_filters( 'optin_monster_api_empty_output', $campaigns, $post_id );
} else {
// Loop through each optin and optionally output it on the site.
foreach ( $optins as $campaign ) {
$rules = new OMAPI_Rules( $campaign, $post_id );
if ( $rules->should_output() ) {
$this->set_slug( $campaign );
// Prepare the optin campaign.
$campaigns[ $campaign->post_name ] = $this->prepare_campaign( $campaign );
continue;
}
$fields = $rules->field_values;
// Allow devs to filter the final output for more granular control over optin targeting.
// Devs should return the value for the slug key as false if the conditions are not met.
$campaigns = apply_filters( 'optinmonster_output', $campaigns ); // Deprecated.
$campaigns = apply_filters( 'optin_monster_output', $campaigns, $campaign, $fields, $post_id ); // Deprecated.
$campaigns = apply_filters( 'optin_monster_api_output', $campaigns, $campaign, $fields, $post_id );
}
// Run a final filter for all items.
$campaigns = apply_filters( 'optin_monster_api_final_output', $campaigns, $post_id );
}
// If the init code is empty, do nothing.
if ( empty( $campaigns ) ) {
return;
}
// Load the optins.
foreach ( (array) $campaigns as $campaign ) {
if ( $campaign ) {
// phpcs:ignore WordPress.Security.EscapeOutput.OutputNotEscaped, trusted data from post_content
echo $campaign;
}
}
$is_preview = apply_filters(
'optin_monster_should_set_campaigns_as_preview',
is_preview() || is_customize_preview()
);
if ( $is_preview ) {
remove_action( 'wp_footer', array( $this, 'prevent_all_campaigns' ), 11 );
add_action( 'wp_footer', array( $this, 'set_campaigns_as_preview' ), 99 );
}
}
/**
* Possibly loads a campaign preview on a page.
*
* @since 2.2.0
*
* @param array $campaigns Array of campaign objects to output.
* @param int $post_id The current post id.
*
* @return array Array of campaign objects to output.
*/
public function load_previews( $campaigns, $post_id ) {
if ( self::$live_preview || self::$live_rules_preview ) {
$campaign_id = sanitize_title_with_dashes( self::$live_preview ? self::$live_preview : self::$live_rules_preview );
$embed = self::om_script_tag(
array(
'id' => 'omapi-script-preview-' . $campaign_id,
'campaignId' => $campaign_id,
'accountUserId' => $this->base->get_option( 'accountUserId' ),
)
);
$embed = apply_filters( 'optin_monster_api_preview_output', $embed, $campaign_id, $post_id );
$this->set_preview_slug( $campaign_id );
$campaigns[ $campaign_id ] = $embed;
}
return $campaigns;
}
/**
* Loads the global OM code on this page.
*
* @since 1.8.0
*/
public function load_global_optinmonster() {
$option = $this->base->get_option();
// If we don't have the data we need, return early.
if ( empty( $option['accountUserId'] ) || empty( $option['accountId'] ) ) {
return;
}
$option['id'] = 'omapi-script-global';
// phpcs:ignore WordPress.Security.EscapeOutput.OutputNotEscaped, escaped function.
echo self::om_script_tag( $option );
}
/**
* Sets the slug for possibly parsing shortcodes.
*
* @since 1.0.0
*
* @param object $optin The optin object.
*/
public function set_slug( $optin ) {
$slug = str_replace( '-', '_', $optin->post_name );
// Set the slug.
$this->slugs[ $slug ] = array(
'slug' => $slug,
'mailpoet' => ! empty( $optin->ID ) && (bool) get_post_meta( $optin->ID, '_omapi_mailpoet', true ),
);
// Maybe set shortcode.
if ( ! empty( $optin->ID ) && get_post_meta( $optin->ID, '_omapi_shortcode', true ) ) {
$this->shortcodes[] = get_post_meta( $optin->ID, '_omapi_shortcode_output', true );
}
if ( ! empty( $this->slugs[ $slug ]['mailpoet'] ) ) {
$this->wp_mailpoet();
}
return $this;
}
/**
* Sets the preview slug for possibly parsing shortcodes.
*
* @since 2.2.0
*
* @param object $slug The campaign Id slug.
*/
public function set_preview_slug( $slug ) {
$optin = $this->base->get_optin_by_slug( $slug );
if ( empty( $optin ) ) {
$optin = (object) array(
'post_name' => $slug,
'ID' => 0,
);
}
$this->set_slug( $optin );
// Request the shortcodes from the campaign preview object.
$user_id = $this->base->get_option( 'accountUserId' );
$route = "embed/{$user_id}/{$slug}/preview/shortcodes";
$body = OMAPI_Api::build( 'v2', $route, 'GET' )->request();
if ( ! empty( $body->{$slug} ) ) {
$this->shortcodes[] = OMAPI_Save::get_shortcodes_string( $body->{$slug} );
}
return $this;
}
/**
* Maybe outputs the JS variables to parse shortcodes.
*
* @since 1.0.0
*/
public function maybe_parse_shortcodes() {
// If no slugs have been set, do nothing.
if ( empty( $this->slugs ) ) {
return;
}
// Loop through any shortcodes and output them.
foreach ( $this->shortcodes as $shortcode_string ) {
if ( empty( $shortcode_string ) ) {
continue;
}
if ( strpos( $shortcode_string, '|||' ) !== false ) {
$all_shortcode = explode( '|||', $shortcode_string );
} else { // Backwards compat.
$all_shortcode = explode( ',', $shortcode_string );
}
foreach ( $all_shortcode as $shortcode ) {
if ( empty( $shortcode ) ) {
continue;
}
// phpcs:ignore WordPress.Security.EscapeOutput.OutputNotEscaped
echo '<script type="text/template" class="omapi-shortcode-helper">' . html_entity_decode( $shortcode, ENT_COMPAT, 'UTF-8' ) . '</script>';
// phpcs:ignore WordPress.Security.EscapeOutput.OutputNotEscaped
echo '<script type="text/template" class="omapi-shortcode-parsed omapi-encoded">' . htmlentities( do_shortcode( html_entity_decode( $shortcode, ENT_COMPAT, 'UTF-8' ) ), ENT_COMPAT, 'UTF-8' ) . '</script>';
}
}
// Output the JS variables to signify shortcode parsing is needed.
?>
<script type="text/javascript">
<?php
foreach ( $this->slugs as $slug => $data ) {
// phpcs:ignore WordPress.Security.EscapeOutput.OutputNotEscaped
echo 'var ' . sanitize_title_with_dashes( $slug ) . '_shortcode = true;';
}
?>
</script>
<?php
}
/**
* Sets all OM campaigns to preview mode, which disables their form fields.
*
* @since 2.2.0
*/
public function set_campaigns_as_preview() {
?>
<script type="text/javascript">
// Disable OM analytics.
window._omdisabletracking = true;
document.addEventListener('om.Optin.init', function(evt) {
// Disables form submission.
evt.detail.Optin.preview = true;
} );
</script>
<?php
}
/**
* Prevents any OM campaigns from loading if we're on a singular post
* with the `om_disable_all_campaigns` meta set.
*
* @since 2.3.0
*/
public function prevent_all_campaigns() {
?>
<script type="text/javascript">
document.addEventListener('om.Shutdown.init', function(evt) {
evt.detail.Shutdown.preventAll = true;
});
</script>
<?php
}
/**
* Possibly localizes a JS variable for output use.
*
* @since 1.0.0
*/
public function localize() {
// If no slugs have been set, do nothing.
if ( empty( $this->slugs ) ) {
return;
}
// If already localized, do nothing.
if ( $this->localized ) {
return;
}
// Set flag to true.
$this->localized = true;
// Output JS variable.
?>
<script type="text/javascript">var omapi_localized = {
ajax: '<?php echo esc_url_raw( add_query_arg( 'optin-monster-ajax-route', true, admin_url( 'admin-ajax.php' ) ) ); ?>',
nonce: '<?php echo esc_js( wp_create_nonce( 'omapi' ) ); ?>',
slugs:
<?php
// phpcs:ignore WordPress.Security.EscapeOutput.OutputNotEscaped, method is escaping.
echo OMAPI_Utils::json_encode( $this->slugs );
?>
};</script>
<?php
}
/**
* Enqueues the WP mailpoet script for storing local optins.
*
* @since 1.8.2
*/
public function wp_mailpoet() {
// Only try to use the MailPoet integration if it is active.
if ( $this->base->is_mailpoet_active() ) {
wp_enqueue_script(
$this->base->plugin_slug . '-wp-mailpoet',
$this->base->url . 'assets/js/mailpoet.js',
array( 'jquery' ),
$this->base->asset_version(),
true
);
}
}
/**
* Enqueues the WP helper script for the API.
*
* @since 1.0.0
*/
public function wp_helper() {
wp_enqueue_script(
$this->base->plugin_slug . '-wp-helper',
$this->base->url . 'assets/dist/js/helper.min.js',
array(),
$this->base->asset_version(),
true
);
}
/**
* Outputs a JS variable, in the footer of the site, with information about
* the current page, and the terms in use for the display rules.
*
* @since 1.6.5
*
* @return void
*/
public function display_rules_data() {
global $wp_query;
/**
* Check if there are any campaigns for the site
*/
$optins = $this->base->get_optins();
if ( empty( $optins ) ) {
return;
}
// If already localized, do nothing.
if ( $this->data_output ) {
return;
}
// Set flag to true.
$this->data_output = true;
$tax_terms = array();
$object = get_queried_object();
$object_id = self::current_id();
$object_class = is_object( $object ) ? get_class( $object ) : '';
$object_type = '';
$object_key = '';
$post = null;
if ( 'WP_Post' === $object_class ) {
$post = $object;
$object_type = 'post';
$object_key = $object->post_type;
} elseif ( 'WP_Term' === $object_class ) {
$object_type = 'term';
$object_key = $object->taxonomy;
}
// Get the current object's terms, if applicable. Defaults to public taxonomies only.
if ( ! empty( $post->ID ) && is_singular() || ( $wp_query->is_category() || $wp_query->is_tag() || $wp_query->is_tax() ) ) {
// Should we only check public taxonomies?
$only_public = apply_filters( 'optinmonster_only_check_public_taxonomies', true, $post );
$taxonomies = get_object_taxonomies( $post, false );
if ( ! empty( $taxonomies ) && is_array( $taxonomies ) ) {
foreach ( $taxonomies as $taxonomy ) {
// Private ones should remain private and not output in the JSON blob.
if ( $only_public && ! $taxonomy->public ) {
continue;
}
$terms = get_the_terms( $post, $taxonomy->name );
if ( ! empty( $terms ) && is_array( $terms ) ) {
$tax_terms = array_merge( $tax_terms, wp_list_pluck( $terms, 'term_id' ) );
}
}
$tax_terms = wp_parse_id_list( $tax_terms );
}
}
$output = array(
'object_id' => $object_id,
'object_key' => $object_key,
'object_type' => $object_type,
'term_ids' => $tax_terms,
'wp_json' => untrailingslashit( get_rest_url() ),
'wc_active' => OMAPI_WooCommerce::is_active(),
'edd_active' => OMAPI_EasyDigitalDownloads::is_active(),
'nonce' => wp_create_nonce( 'wp_rest' ),
);
$output = apply_filters( 'optin_monster_display_rules_data_output', $output );
// Output JS variable.
?>
<script type="text/javascript">var omapi_data = <?php echo OMAPI_Utils::json_encode( $output ); // phpcs:ignore WordPress.Security.EscapeOutput.OutputNotEscaped ?>;</script>
<?php
}
/**
* Prepare the optin campaign html.
*
* @since 1.5.0
*
* @param object $optin The optin post object.
*
* @return string The optin campaign html.
*/
public function prepare_campaign( $optin ) {
$optin = $this->base->validate_is_campaign_type( $optin );
$campaign_embed = ! empty( $optin->post_content )
? trim( html_entity_decode( stripslashes( $optin->post_content ), ENT_QUOTES, 'UTF-8' ), '\'' )
: '';
return apply_filters( 'optin_monster_campaign_embed_output', $campaign_embed, $optin );
}
/**
* Enqueues the WP helper script if relevant optin fields are found.
*
* @since 1.5.0
*
* @param bool $should_output Whether it should output.
* @param OMAPI_Rules $rules OMAPI_Rules object.
*
* @return array
*/
public function enqueue_helper_js_if_applicable( $should_output, $rules ) {
// Check to see if we need to load the WP API helper script.
if ( $should_output ) {
if ( ! $rules->field_empty( 'mailpoet' ) ) {
$this->wp_mailpoet();
}
$this->wp_helper();
}
return $should_output;
}
/**
* Get the current page/post's post id.
*
* @since 1.6.9
*
* @return int
*/
public static function current_id() {
$object = get_queried_object();
if ( is_object( $object ) && ! $object instanceof WP_Post ) {
return 0;
}
$post_id = get_queried_object_id();
if ( ! $post_id ) {
if ( 'page' === get_option( 'show_on_front' ) ) {
$post_id = get_option( 'page_for_posts' );
}
}
return $post_id;
}
/**
* AJAX callback for returning WooCommerce cart information.
*
* @since 1.7.0
* @since 2.8.0 All the logic was moved to OMAPI_WooCommerce class.
*
* @deprecated 2.8.0 Use `OMAPI_WooCommerce->get_cart()` instead.
*
* @return array An array of WooCommerce cart data.
*/
public function woocommerce_cart() {
_deprecated_function( __FUNCTION__, '2.8.0', 'OMAPI_WooCommerce->get_cart()' );
return $this->base->woocommerce->get_cart();
}
/**
* Get the OptinMonster embed script JS.
*
* @since 1.9.8
*
* @param array $args Array of arguments for the script, including
* optional user id, account id, and script id.
*
* @return string The embed script JS.
*/
public static function om_script_tag( $args = array() ) {
// Set up the script variables.
$src = OMAPI_Urls::om_api();
$script_id = empty( $args['id'] ) ? '' : $args['id'];
$account_id = empty( $args['accountId'] ) ? '' : $args['accountId'];
$campaign_id = empty( $account_id ) && ! empty( $args['campaignId'] ) ? $args['campaignId'] : '';
$user_id = empty( $args['accountUserId'] ) ? '' : $args['accountUserId'];
$api_cname = OMAPI::get_instance()->get_option( 'apiCname' );
$env = defined( 'OPTINMONSTER_ENV' ) ? OPTINMONSTER_ENV : '';
$tag = '<script>';
$tag .= '(function(d){';
$tag .= 'var s=d.createElement("script");';
$tag .= 's.type="text/javascript";';
$tag .= 's.src="%1$s";';
$tag .= 's.async=true;';
$tag .= empty( $script_id ) ? '' : 's.id="%2$s";';
$tag .= empty( $account_id ) ? '' : 's.dataset.account="%3$s";';
$tag .= empty( $campaign_id ) ? '' : 's.dataset.campaign="%4$s";';
$tag .= empty( $user_id ) ? '' : 's.dataset.user="%5$s";';
$tag .= empty( $api_cname ) ? '' : 's.dataset.api="%6$s";';
$tag .= empty( $env ) ? '' : 's.dataset.env="%7$s";';
$tag .= 'd.getElementsByTagName("head")[0].appendChild(s);';
$tag .= '})(document);';
$tag .= '</script>';
$tag = sprintf(
$tag,
esc_url_raw( $src ),
esc_attr( $script_id ),
esc_attr( $account_id ),
esc_attr( $campaign_id ),
esc_attr( $user_id ),
esc_attr( $api_cname ),
esc_attr( $env )
);
return apply_filters( 'optin_monster_embed_script_tag', $tag, $args );
}
}
uyarreklam.com.tr/httpdocs/wp-content/plugins/all-in-one-seo-pack/app/Common/Social/Output.php 0000644 00000011065 15154503246 0031311 0 ustar 00 var/www/vhosts <?php
namespace AIOSEO\Plugin\Common\Social;
// Exit if accessed directly.
if ( ! defined( 'ABSPATH' ) ) {
exit;
}
use AIOSEO\Plugin\Common\Integrations\BuddyPress as BuddyPressIntegration;
/**
* Outputs our social meta.
*
* @since 4.0.0
*/
class Output {
/**
* Checks if the current page should have social meta.
*
* @since 4.0.0
*
* @return bool Whether or not the page should have social meta.
*/
public function isAllowed() {
if ( BuddyPressIntegration::isComponentPage() ) {
return false;
}
if (
! is_front_page() &&
! is_home() &&
! is_singular() &&
! is_post_type_archive() &&
! aioseo()->helpers->isWooCommerceShopPage()
) {
return false;
}
return true;
}
/**
* Returns the Open Graph meta.
*
* @since 4.0.0
*
* @return array The Open Graph meta.
*/
public function getFacebookMeta() {
if ( ! $this->isAllowed() || ! aioseo()->options->social->facebook->general->enable ) {
return [];
}
$meta = [
'og:locale' => aioseo()->social->facebook->getLocale(),
'og:site_name' => aioseo()->helpers->encodeOutputHtml( aioseo()->social->facebook->getSiteName() ),
'og:type' => aioseo()->social->facebook->getObjectType(),
'og:title' => aioseo()->helpers->encodeOutputHtml( aioseo()->social->facebook->getTitle() ),
'og:description' => aioseo()->helpers->encodeOutputHtml( aioseo()->social->facebook->getDescription() ),
'og:url' => esc_url( aioseo()->helpers->canonicalUrl() ),
'fb:app_id' => aioseo()->options->social->facebook->advanced->appId,
'fb:admins' => implode( ',', array_map( 'trim', explode( ',', aioseo()->options->social->facebook->advanced->adminId ) ) ),
];
$image = aioseo()->social->facebook->getImage();
if ( $image ) {
$image = is_array( $image ) ? $image[0] : $image;
$image = aioseo()->helpers->makeUrlAbsolute( $image );
$image = set_url_scheme( esc_url( $image ) );
$meta += [
'og:image' => $image,
'og:image:secure_url' => is_ssl() ? $image : '',
'og:image:width' => aioseo()->social->facebook->getImageWidth(),
'og:image:height' => aioseo()->social->facebook->getImageHeight(),
];
}
$video = aioseo()->social->facebook->getVideo();
if ( $video ) {
$video = set_url_scheme( esc_url( $video ) );
$meta += [
'og:video' => $video,
'og:video:secure_url' => is_ssl() ? $video : '',
'og:video:width' => aioseo()->social->facebook->getVideoWidth(),
'og:video:height' => aioseo()->social->facebook->getVideoHeight(),
];
}
if ( ! empty( $meta['og:type'] ) && 'article' === $meta['og:type'] ) {
$meta += [
'article:section' => aioseo()->social->facebook->getSection(),
'article:tag' => aioseo()->social->facebook->getArticleTags(),
'article:published_time' => aioseo()->social->facebook->getPublishedTime(),
'article:modified_time' => aioseo()->social->facebook->getModifiedTime(),
'article:publisher' => aioseo()->social->facebook->getPublisher(),
'article:author' => aioseo()->social->facebook->getAuthor()
];
}
return array_filter( apply_filters( 'aioseo_facebook_tags', $meta ) );
}
/**
* Returns the Twitter meta.
*
* @since 4.0.0
*
* @return array The Twitter meta.
*/
public function getTwitterMeta() {
if ( ! $this->isAllowed() || ! aioseo()->options->social->twitter->general->enable ) {
return [];
}
$meta = [
'twitter:card' => aioseo()->social->twitter->getCardType(),
'twitter:site' => aioseo()->social->twitter->prepareUsername( aioseo()->social->twitter->getTwitterUrl() ),
'twitter:title' => aioseo()->helpers->encodeOutputHtml( aioseo()->social->twitter->getTitle() ),
'twitter:description' => aioseo()->helpers->encodeOutputHtml( aioseo()->social->twitter->getDescription() ),
'twitter:creator' => aioseo()->social->twitter->getCreator()
];
$image = aioseo()->social->twitter->getImage();
if ( $image ) {
$image = is_array( $image ) ? $image[0] : $image;
$image = aioseo()->helpers->makeUrlAbsolute( $image );
// Set the twitter image meta.
$meta['twitter:image'] = $image;
}
if ( is_singular() ) {
$additionalData = apply_filters( 'aioseo_social_twitter_additional_data', aioseo()->social->twitter->getAdditionalData() );
if ( $additionalData ) {
$i = 1;
foreach ( $additionalData as $data ) {
$meta[ "twitter:label$i" ] = $data['label'];
$meta[ "twitter:data$i" ] = $data['value'];
$i++;
}
}
}
return array_filter( apply_filters( 'aioseo_twitter_tags', $meta ) );
}
} uyarreklam.com.tr/httpdocs/wp-content/plugins/optinmonster/OMAPI/EasyDigitalDownloads/Output.php 0000644 00000004514 15154513637 0032122 0 ustar 00 var/www/vhosts <?php
/**
* EasyDigitalDownloads Output class.
*
* @since 2.8.0
*
* @package OMAPI
* @author Gabriel Oliveira
*/
// Exit if accessed directly.
if ( ! defined( 'ABSPATH' ) ) {
exit;
}
/**
* EasyDigitalDownloads Output class.
*
* @since 2.8.0
*/
class OMAPI_EasyDigitalDownloads_Output {
/**
* The OMAPI_EasyDigitalDownloads instance.
*
* @since 2.8.0
*
* @var OMAPI_EasyDigitalDownloads
*/
public $edd;
/**
* Constructor
*
* @since 2.13.0
*
* @param OMAPI_EasyDigitalDownloads $edd
*/
public function __construct( OMAPI_EasyDigitalDownloads $edd ) {
$this->edd = $edd;
}
/**
* Returns the payload EDD needs to use in its Display Rules.
*
* @since 2.8.0
*
* @return array The
*/
public function display_rules_data() {
$cart = $this->get_cart();
$user_id = get_current_user_id();
$purchased_products = edd_get_users_purchased_products( $user_id );
$cart['customer'] = null;
if ( ! empty( $purchased_products ) ) {
$customer_products = array_map(
function ( $product ) {
return $product->ID;
},
$purchased_products
);
$cart['customer'] = array(
'products' => $customer_products,
'stats' => edd_get_purchase_stats_by_user( $user_id ),
);
}
return $cart;
}
/**
* Retrieve the cart from EDD
*
* @since 2.8.0.
*
* @return array An array of EDD cart data.
*/
public function get_cart() {
// Bail if EDD isn't currently active.
if ( ! $this->edd->is_active() ) {
return array();
}
// Check if EDD is the minimum version.
if ( ! $this->edd->is_minimum_version() ) {
return array();
}
$edd_cart = EDD()->cart;
$cart = array();
$cart['discounts'] = $edd_cart->get_discounts();
$cart['quantity'] = $edd_cart->get_quantity();
$cart['subtotal'] = $edd_cart->get_subtotal();
$cart['total'] = $edd_cart->get_total();
// Filter out items by leaving only necessary fields
$cart['items'] = array_map(
function ( $edd_item ) {
return array(
'id' => $edd_item['id'],
'quantity' => $edd_item['quantity'],
'discount' => $edd_item['discount'],
'subtotal' => $edd_item['subtotal'],
'price' => $edd_item['price'],
'item_price' => $edd_item['item_price'],
);
},
$edd_cart->get_contents_details()
);
return $cart;
}
}
uyarreklam.com.tr/httpdocs/wp-content/plugins/all-in-one-seo-pack/app/Common/Sitemap/Output.php 0000644 00000011644 15154555374 0031515 0 ustar 00 var/www/vhosts <?php
namespace AIOSEO\Plugin\Common\Sitemap;
// Exit if accessed directly.
if ( ! defined( 'ABSPATH' ) ) {
exit;
}
/**
* Handles outputting the sitemap.
*
* @since 4.0.0
*/
class Output {
/**
* Outputs the sitemap.
*
* @since 4.0.0
*
* @param array $entries The sitemap entries.
* @return void
*/
public function output( $entries ) { // phpcs:ignore VariableAnalysis.CodeAnalysis.VariableAnalysis.UnusedVariable
if ( ! in_array( aioseo()->sitemap->type, [ 'general', 'rss' ], true ) ) {
return;
}
// phpcs:disable VariableAnalysis.CodeAnalysis.VariableAnalysis.UnusedVariable
$entries = aioseo()->sitemap->helpers->decodeSitemapEntries( $entries );
$charset = aioseo()->helpers->getCharset();
$excludeImages = aioseo()->sitemap->helpers->excludeImages();
$generation = ! isset( aioseo()->sitemap->isStatic ) || aioseo()->sitemap->isStatic ? __( 'statically', 'all-in-one-seo-pack' ) : __( 'dynamically', 'all-in-one-seo-pack' );
$version = aioseo()->helpers->getAioseoVersion();
if ( ! empty( $version ) ) {
$version = 'v' . $version;
}
// Clear all output buffers to avoid conflicts.
aioseo()->helpers->clearBuffers();
echo '<?xml version="1.0" encoding="' . esc_attr( $charset ) . "\"?>\r\n";
echo '<!-- ' . sprintf(
// Translators: 1 - "statically" or "dynamically", 2 - The date, 3 - The time, 4 - The plugin name ("All in One SEO"), 5 - Currently installed version.
esc_html__( 'This sitemap was %1$s generated on %2$s at %3$s by %4$s %5$s - the original SEO plugin for WordPress.', 'all-in-one-seo-pack' ),
esc_html( $generation ),
esc_html( date_i18n( get_option( 'date_format' ) ) ),
esc_html( date_i18n( get_option( 'time_format' ) ) ),
esc_html( AIOSEO_PLUGIN_NAME ),
esc_html( $version )
) . ' -->';
if ( 'rss' === aioseo()->sitemap->type ) {
$xslUrl = home_url() . '/default-sitemap.xsl';
if ( ! is_multisite() ) {
$title = get_bloginfo( 'name' );
$description = get_bloginfo( 'blogdescription' );
$link = home_url();
} else {
$title = get_blog_option( get_current_blog_id(), 'blogname' );
$description = get_blog_option( get_current_blog_id(), 'blogdescription' );
$link = get_blog_option( get_current_blog_id(), 'siteurl' );
}
$ttl = apply_filters( 'aioseo_sitemap_rss_ttl', 60 );
echo "\r\n\r\n<?xml-stylesheet type=\"text/xsl\" href=\"" . esc_url( $xslUrl ) . "\"?>\r\n";
include_once AIOSEO_DIR . '/app/Common/Views/sitemap/xml/rss.php';
return;
}
if ( 'root' === aioseo()->sitemap->indexName && aioseo()->sitemap->indexes ) {
$xslUrl = add_query_arg( 'sitemap', aioseo()->sitemap->indexName, home_url() . '/default-sitemap.xsl' );
echo "\r\n\r\n<?xml-stylesheet type=\"text/xsl\" href=\"" . esc_url( $xslUrl ) . "\"?>\r\n";
include AIOSEO_DIR . '/app/Common/Views/sitemap/xml/root.php';
return;
}
$xslUrl = add_query_arg( 'sitemap', aioseo()->sitemap->indexName, home_url() . '/default-sitemap.xsl' );
echo "\r\n\r\n<?xml-stylesheet type=\"text/xsl\" href=\"" . esc_url( $xslUrl ) . "\"?>\r\n";
include AIOSEO_DIR . '/app/Common/Views/sitemap/xml/default.php';
}
/**
* Escapes and echoes the given XML tag value.
*
* @since 4.0.0
*
* @param string $value The tag value.
* @param bool $wrap Whether the value should we wrapped in a CDATA section.
* @return void
*/
public function escapeAndEcho( $value, $wrap = true ) {
$safeText = is_string( $value ) ? wp_check_invalid_utf8( $value, true ) : $value;
$isZero = is_numeric( $value ) ? 0 === (int) $value : false;
if ( ! $safeText && ! $isZero ) {
return;
}
$cdataRegex = '\<\!\[CDATA\[.*?\]\]\>';
$regex = "/(?=.*?{$cdataRegex})(?<non_cdata_followed_by_cdata>(.*?))(?<cdata>({$cdataRegex}))|(?<non_cdata>(.*))/sx";
$safeText = (string) preg_replace_callback(
$regex,
static function( $matches ) {
if ( ! $matches[0] ) {
return '';
}
if ( ! empty( $matches['non_cdata'] ) ) {
// Escape HTML entities in the non-CDATA section.
return _wp_specialchars( $matches['non_cdata'], ENT_XML1 );
}
// Return the CDATA Section unchanged, escape HTML entities in the rest.
return _wp_specialchars( $matches['non_cdata_followed_by_cdata'], ENT_XML1 ) . $matches['cdata'];
},
$safeText
);
$safeText = $safeText ? $safeText : ( $isZero ? $value : '' );
if ( ! $wrap ) {
return print( $safeText ); // phpcs:ignore WordPress.Security.EscapeOutput.OutputNotEscaped
}
printf( '<![CDATA[%1$s]]>', $safeText ); // phpcs:ignore WordPress.Security.EscapeOutput.OutputNotEscaped
}
/**
* Returns the URL for the sitemap stylesheet.
*
* This is needed for compatibility with multilingual plugins such as WPML.
*
* @since 4.0.0
*
* @return string The URL to the sitemap stylesheet.
*/
private function xslUrl() {
return esc_url( apply_filters( 'aioseo_sitemap_xsl_url', aioseo()->helpers->localizedUrl( '/sitemap.xsl' ) ) );
}
} vhosts/uyarreklam.com.tr/httpdocs/wp-content/plugins/so-widgets-bundle/base/inc/lib/Less/Output.php 0000644 00000001355 15155175160 0031131 0 ustar 00 var/www <?php
/**
* Parser output
*
* @package Less
* @subpackage output
*/
class Less_Output{
/**
* Output holder
*
* @var string
*/
protected $strs = array();
/**
* Adds a chunk to the stack
*
* @param string $chunk The chunk to output
* @param Less_FileInfo $fileInfo The file information
* @param integer $index The index
* @param mixed $mapLines
*/
public function add($chunk, $fileInfo = null, $index = 0, $mapLines = null){
$this->strs[] = $chunk;
}
/**
* Is the output empty?
*
* @return boolean
*/
public function isEmpty(){
return count($this->strs) === 0;
}
/**
* Converts the output to string
*
* @return string
*/
public function toString(){
return implode('',$this->strs);
}
}