: str_replace(): Passing null to parameter #2 ($replace) of type array|string is deprecated in
plugins_url($plgName) . '/' . $plgScriptPathRelative,
public function enqueueLisenceScripts()
EMBEDPRESS_URL_ASSETS . 'js/license.js',
['jquery', 'wp-i18n', 'wp-url'],
wp_localize_script('embedpress-lisence', 'wpdeveloperLicenseManagerNonce', array('embedpress_lisence_nonce' => wp_create_nonce('wpdeveloper_sl_' . EMBEDPRESS_SL_ITEM_ID . '_nonce')));
* Method that register all stylesheets for the admin area.
public static function enqueueStyles()
if (isset($_GET['page']) && 'embedpress' === $_GET['page']) {
wp_enqueue_style('embedpress-admin', plugins_url('embedpress/assets/css/admin.css'));
* Method that receive a string via AJAX and return the decoded-shortcoded-version of that string.
public function doShortcodeReceivedViaAjax()
$subject = isset($_POST['subject']) ? $_POST['subject'] : "";
'data' => Shortcode::parseContent($subject, true),
header('Content-Type:application/json;charset=UTF-8');
echo json_encode($response);
* Method that receive an url via AJAX and return the info about that url/embed.
public function getUrlInfoViaAjax()
$url = isset($_GET['url']) ? trim($_GET['url']) : "";
'canBeResponsive' => false,
if (!!strlen($response['url'])) {
$additionalServiceProviders = Core::getAdditionalServiceProviders();
if (!empty($additionalServiceProviders)) {
foreach ($additionalServiceProviders as $serviceProviderClassName => $serviceProviderUrls) {
Shortcode::addServiceProvider($serviceProviderClassName, $serviceProviderUrls);
$embera = new Embera([], Shortcode::get_collection());
$urlInfo = $embera->getUrlData($response['url']);
if (isset($urlInfo[$response['url']]) && $urlInfo[$response['url']]['provider_name']) {
$response['canBeResponsive'] = Core::canServiceProviderBeResponsive(strtolower($urlInfo[$response['url']]['provider_name']));
header('Content-Type:application/json;charset=UTF-8');
echo json_encode($response);
* Returns a list of supported URL schemes for the preview script
public function getUrlSchemes()
'*.polldaddy.com/poll/*',
'*.polldaddy.com/ratings/*',
'polldaddy.com/ratings/*',
'reddit.com/r/[^/]+/comments/*',
'i*.photobucket.com/albums/*',
'gi*.photobucket.com/groups/*',
// YouTube (http://www.youtube.com/)
'youtube.com/playlist\\?*',
'youtube.com/(\w+)[^?\/]*$',
'opensea.io/collection/*',
// Flickr (http://www.flickr.com/)
// Viddler (http://www.viddler.com/)
// Hulu (http://www.hulu.com/)
// Vimeo (http://vimeo.com/)
'vimeo.com/groups/*/videos/*',
// CollegeHumor (http://www.collegehumor.com/)
'collegehumor.com/video/*',
// Deviantart.com (http://www.deviantart.com)
'*.deviantart.com/art/*',
'*.deviantart.com/*#/d*',
// SlideShare (http://www.slideshare.net/)
// chirbit.com (http://www.chirbit.com/)
// nfb.ca (http://www.nfb.ca/)
// Scribd (http://www.scribd.com/)
'*.scribd.com/document/*',
// Dotsub (http://dotsub.com/)
// Animoto (http://animoto.com/)
// Rdio (http://rdio.com/)
// MixCloud (http://mixcloud.com/)
// FunnyOrDie (http://www.funnyordie.com/)
'funnyordie.com/videos/*',
// Sapo Videos (http://videos.sapo.pt)
// Official FM (http://official.fm)
'official.fm/playlists/*',
// HuffDuffer (http://huffduffer.com)
// Shoudio (http://shoudio.com)
// Moby Picture (http://www.mobypicture.com)
'mobypicture.com/user/*/view/*',
// 23HQ (http://www.23hq.com)
// Cacoo (https://cacoo.com)
// Dipity (http://www.dipity.com)
// Roomshare (http://roomshare.jp)
'roomshare.jp/en/post/*',
// Dailymotion (http://www.dailymotion.com)
'dailymotion.com/video/*',
// Crowd Ranking (http://crowdranking.com)
// CircuitLab (https://www.circuitlab.com/)
'circuitlab.com/circuit/*',
// Coub (http://coub.com/)
// SpeakerDeck (https://speakerdeck.com)
// Instagram (https://instagram.com)
// SoundCloud (http://soundcloud.com/)
// Kickstarter (http://www.kickstarter.com)
'kickstarter.com/projects/*',
// Ustream (http://www.ustream.tv)
// Daily Mile (http://www.dailymile.com)
'dailymile.com/people/*/entries/*',
// Sketchfab (http://sketchfab.com)
'sketchfab.com/models/*',
'sketchfab.com/*/folders/*',
// Meetup (http://www.meetup.com)
// AudioSnaps (http://audiosnaps.com)
// RapidEngage (https://rapidengage.com)
// Getty Images (http://www.gettyimages.com/)
'gettyimages.com/detail/photo/*',
// amCharts Live Editor (http://live.amcharts.com/)
// Infogram (https://infogr.am/)
// ChartBlocks (http://www.chartblocks.com/)
'public.chartblocks.com/c/*',
// ReleaseWire (http://www.releasewire.com/)
// ShortNote (https://www.shortnote.jp/)
'shortnote.jp/view/notes/*',
// EgliseInfo (http://egliseinfo.catholique.fr/)
'egliseinfo.catholique.fr/*',
// Silk (http://www.silk.co/)
'twitter.com/*/status/*',
'twitter.com/i/moments/*',
'twitter.com/*/timelines/*',
// https://gist.github.com
// https://portfolium.com
// https://www.reverbnation.com
// http://www.videojug.com
'docs.google.com/presentation/*',
'docs.google.com/document/*',
'docs.google.com/spreadsheets/*',
'docs.google.com/forms/*',
'docs.google.com/drawings/*',
'fast.wistia.com/embed/medias/*.jsonp',
// Boomplay (http://boomplay.com/)
'datawrapper.dwcdn.net/*',
'edumedia-sciences.com/*',
'public.flourish.studio/*',
public function delete_instagram_account()
if (!current_user_can('manage_options')) {
wp_send_json_error(array('message' => 'You do not have sufficient permissions to access this functionality.'));
if (isset($_POST['_nonce']) && wp_verify_nonce($_POST['_nonce'], 'embedpress_elements_action')) {
$user_id = isset($_POST['user_id']) ? $_POST['user_id'] : '';
$account_type = isset($_POST['account_type']) ? $_POST['account_type'] : '';
$account_data = get_option('ep_instagram_account_data');
$data = array_filter($account_data, function ($item) use ($user_id) {
return $item['user_id'] !== $user_id;
$data = array_values($data);
update_option('ep_instagram_account_data', $data);
wp_die('Nonce verification failed.');
* Update admin notice view status
public static function embedpress_notice_dismiss()
check_ajax_referer('embedpress', 'security');
update_option('embedpress_social_dismiss_notice', true);