File Editor
Directories:
.. (Back)
EasyDigitalDownloads
Elementor
Integrations
MemberPress
Plugins
Promos
Rules
Shortcodes
WPForms
WooCommerce
Files:
Actions.php
Ajax.php
Api.php
ApiAuth.php
ApiKey.php
AssetLoader.php
BaseRestApi.php
Blocks.php
ClassicEditor.php
ConstantContact.php
Debug.php
EasyDigitalDownloads.php
Elementor.php
Inserter.php
InstallSkin.php
InstallSkinCompat.php
MailPoet.php
MemberPress.php
Menu.php
Notifications.php
OmuApi.php
Output.php
Pages.php
Partners.php
Plugins.php
Promos.php
Refresh.php
RestApi.php
RevenueAttribution.php
Review.php
Rules.php
Save.php
Shortcode.php
Sites.php
Support.php
Type.php
Urls.php
Utils.php
Validate.php
WPForms.php
Welcome.php
Widget.php
WooCommerce.php
Wordfence.php
WpErrorException.php
Create New File
Create
Edit File: Urls.php
<?php /** * Urls class. * * @since 2.2.0 * * @package OMAPI * @author Justin Sternberg */ // Exit if accessed directly. if ( ! defined( 'ABSPATH' ) ) { exit; } /** * Urls class. * * @since 2.2.0 */ class OMAPI_Urls { /** * Get the settings url. * * @since 2.2.0 * * @param array $args Array of query args. * * @return string */ public static function settings( $args = array() ) { return self::om_admin( 'settings', $args ); } /** * Get the campaigns url. * * @since 2.2.0 * * @param array $args Array of query args. * * @return string */ public static function campaigns( $args = array() ) { return self::om_admin( 'campaigns', $args ); } /** * Get the templates url. * * @since 2.2.0 * * @param array $args Array of query args. * * @return string */ public static function templates( $args = array() ) { return self::om_admin( 'templates', $args ); } /** * Get the playbooks url. * * @since 2.12.0 * * @param array $args Array of query args. * * @return string */ public static function playbooks( $args = array() ) { return self::om_admin( 'playbooks', $args ); } /** * Get the OM wizard url. * * @since 2.2.0 * * @param array $args Array of query args. * * @return string */ public static function wizard( $args = array() ) { return self::om_admin( 'onboarding-wizard', $args ); } /** * Get the contextual OM dashboard url. * * @since 2.2.0 * * @param array $args Array of query args. * * @return string */ public static function dashboard( $args = array() ) { return self::om_admin( 'dashboard', $args ); } /** * Get the contextual OM university url. * * @since 2.13.8 * * @param array $args Array of query args. * * @return string */ public static function university( $args = array() ) { return self::om_admin( 'university', $args ); } /** * Get the campaign output settings edit url. * * @since 2.2.0 * * @param string $campaign_slug The campaign slug to edit. * @param array $args Array of query args. * * @return string */ public static function campaign_output_settings( $campaign_slug, $args = array() ) { $args = array_merge( $args, array( 'campaignId' => $campaign_slug ) ); return self::campaigns( $args ); } /** * Get the OM onboarding dashboard url. * * @since 2.2.0 * * @param array $args Array of query args. * * @return string */ public static function onboarding( $args = array() ) { $args = array_merge( $args, array( 'info' => true ) ); return self::dashboard( $args ); } /** * Get a link to an OM admin page. * * @since 2.2.0 * * @param string $page Page shortened slug. * @param array $args Array of query args. * * @return string */ public static function om_admin( $page, $args ) { $defaults = array( 'page' => 'optin-monster-' . $page, ); return self::admin( wp_parse_args( $args, $defaults ) ); } /** * Get an admin page url. * * @since 2.2.0 * * @param array $args Array of query args. * * @return string */ public static function admin( $args = array() ) { $url = add_query_arg( $args, admin_url( 'admin.php' ) ); return esc_url_raw( $url ); } /** * Get app url, with proper query args set to ensure going to correct account, and setting return * query arg to come back (if relevant on the destination page). * * @since 2.2.0 * * @param string $path The path on the app. * @param string $return_url Url to return. Will default to wp_get_referer(). * * @return string The app url. */ public static function om_app( $path, $return_url = '' ) { $app_url = OPTINMONSTER_APP_URL . '/'; $final_destination = $app_url . $path; if ( empty( $return_url ) ) { $return_url = wp_get_referer(); if ( empty( $return_url ) ) { $return_url = self::dashboard(); } } $return_url = rawurlencode( $return_url ); $final_destination = add_query_arg( 'return', $return_url, $final_destination ); $url = add_query_arg( 'redirect_to', rawurlencode( $final_destination ), $app_url ); $account_id = OMAPI::get_instance()->get_option( 'accountUserId' ); if ( ! empty( $account_id ) ) { $url = add_query_arg( 'accountId', $account_id, $url ); } return $url; } /** * Get upgrade url, with utm_medium param and optional feature. * * @since 2.4.0 * * @param string $utm_medium The utm_medium query param. * @param string $feature The feature to pass to the upgrade page. * @param string $return_url Url to return. Will default to wp_get_referer(). * @param array $args Additional query args. * * @return string The upgrade url. */ public static function upgrade( $utm_medium, $feature = 'none', $return_url = '', $args = array() ) { $args = self::upgrade_params( $utm_medium, $feature, $args ); $path = add_query_arg( $args, 'account/wp-upgrade/' ); return self::om_app( $path, $return_url ); } /** * Get the query args for the upgrade url. * * @since 2.15.0 * * @param string $utm_medium The utm_medium query param. * @param string $feature The feature to pass to the upgrade page. * @param array $args Additional query args. * * @return array The query args. */ public static function upgrade_params( $utm_medium, $feature = 'none', $args = array() ) { $defaults = wp_parse_args( self::get_partner_params( OPTINMONSTER_APP_URL . '/account/wp-upgrade/' ), array( 'utm_source' => 'WordPress', 'utm_medium' => $utm_medium, 'utm_campaign' => 'Plugin', 'feature' => $feature, ) ); foreach ( $defaults as $key => $value ) { if ( null === $value ) { unset( $defaults[ $key ] ); } } return wp_parse_args( $args, $defaults ); } /** * Get marketing url, with utm_medium params. * * @since 2.11.0 * * @param string $path The path on the app. * @param array $args Additional query args. * * @return string The marketing url. */ public static function marketing( $path = '', $args = array() ) { $url = sprintf( OPTINMONSTER_URL . '/%1$s', $path ); $defaults = wp_parse_args( self::get_partner_params( $url ), array( 'utm_source' => 'WordPress', 'utm_medium' => '', 'utm_campaign' => 'Plugin', ) ); $args = wp_parse_args( $args, $defaults ); return add_query_arg( $args, $url ); } /** * Returns the API credentials for OptinMonster. * * @since 2.2.0 * * @return string The API url to use for embedding on the page. */ public static function om_api() { $custom_api_url = OMAPI::get_instance()->get_option( 'customApiUrl' ); return ! empty( $custom_api_url ) ? $custom_api_url : OPTINMONSTER_APIJS_URL; } /** * Sets the partner id param if found, and parses the partner url for additional args to set. * * @since 2.15.0 * * @param string $destination_url The destination url to compare against. * * @return array The additional args. */ protected static function get_partner_params( $destination_url = '' ) { $args = array(); // Add the partner id attribution query arg, if it exists. $id = OMAPI_Partners::get_id(); if ( ! empty( $id ) ) { $args['sscid'] = $id; } // Next, let's parse the partner url for additional query args // stuffed on the urllink query arg redirect url. $partner_url = OMAPI_Partners::has_partner_url(); if ( ! $partner_url || false === strpos( $partner_url, 'urllink' ) ) { return $args; } // No params, no problem. $parsed = parse_url( $partner_url ); if ( empty( $parsed['query'] ) ) { return $args; } // No urllink param, do not pass go, do not collect $200. $query = wp_parse_args( $parsed['query'] ); if ( empty( $query['urllink'] ) ) { return $args; } // Normalize the url. $url = urldecode( $query['urllink'] ); $url = false === strpos( $url, 'http' ) ? 'https://' . $url : str_replace( 'http://', 'https://', $url ); // Now let's make sure the url matches the destination url, // before we go attaching its query args. if ( $destination_url && rtrim( $destination_url, '/' ) && 0 !== stripos( $url, $destination_url ) ) { return $args; } // No args, do not pass go, do not collect $200. $bits = parse_url( $url ); if ( empty( $bits['query'] ) ) { return $args; } $query = wp_parse_args( $bits['query'] ); if ( ! empty( $query ) ) { // Ok, let's add the found query args to the args array. $args = wp_parse_args( $query, $args ); } return $args; } }
Save Changes
Rename File
Rename