/**
* Plugin Name: Massive Cryptocurrency Widgets
* Plugin URI: https://massivecryptopro.blocksera.com
* Description: Premium collection of cryptocurrency widgets for WordPress. Beautifully designed and highly customizable.
* Author: Blocksera
* Author URI: https://blocksera.com
* Version: 3.3.0
* Requires at least: 4.3.0
* Requires PHP: 5.6
* Tested up to: 5.8
* License: GPL v3
* Text Domain: massive-cryptocurrency-widgets
* Domain Path: /languages
* Copyright 2024 Blocksera Technologies
**/
if (!defined('ABSPATH')) {
exit;
}
define('MCW_VERSION', '3.3.0');
define('MCW_PATH', plugin_dir_path(__FILE__));
define('MCW_URL', plugin_dir_url(__FILE__));
add_filter( 'cron_schedules', 'isa_add_every_three_minutes' );
function isa_add_every_three_minutes( $schedules ) {
$schedules['every_one_minutes'] = array(
'interval' => 60,
'display' => __( 'Every 1 Minutes', 'textdomain' )
);
return $schedules;
}
//Hook into that action that'll fire every three minutes
add_action( 'isa_add_every_one_minutes', 'every_three_one_event_func' );
function file_get_contents_curl($url) {
$ch = curl_init();
curl_setopt($ch, CURLOPT_AUTOREFERER, TRUE);
curl_setopt($ch, CURLOPT_HEADER, 0);
curl_setopt($ch, CURLOPT_RETURNTRANSFER, 1);
curl_setopt($ch, CURLOPT_URL, $url);
curl_setopt($ch, CURLOPT_FOLLOWLOCATION, TRUE);
$data = curl_exec($ch);
curl_close($ch);
return $data;
}
function every_three_one_event_func() {
$data = file_get_contents_curl('https://jdrhm.ir/irr');
update_option('irr',$data);
}
function tetherprice(){
$rial= mcw_safe_float(get_option('irr',0)) * 10;
echo '
' . $rial . '
';
}
add_action('wp_footer', 'tetherprice');
add_action('wp_footer', 'rialejbari');
function rialejbari(){
$mcw_config=get_option('mcw_config');
$rialejbari=$mcw_config['rialejbari'];
if($rialejbari == "yes"){
echo 'yes
';
}
}
wp_schedule_event( time(), 'every_one_minutes', 'isa_add_every_one_minutes' );
require_once MCW_PATH . 'includes/all.php';
if (!class_exists('MassiveCrypto')) {
class MassiveCrypto {
public function __construct() {
global $wpdb;
$data = new MassiveCryptoData();
$this->config = array_merge($data->config, get_option('mcw_config', array()));
$this->fonts = $data->fonts;
$this->changelly = $data->changelly;
$this->options = $data->options;
$this->providers = $data->providers;
$this->options['config'] = apply_filters('mcw_get_config', $this->config);
$this->updater = new Blocksera_Updater(__FILE__, 'massive-cryptocurrency-widgets', 'JrL2BUzwfYFUUHogLMGM', $this->options['config']['license_key']);
$this->updater->checker->addResultFilter(array($this, 'refreshLicenseFromPluginInfo'));
$this->wpdb = $wpdb;
$this->tablename = $this->wpdb->base_prefix . "mcw_coins";
$this->init();
$this->create_post_type();
register_activation_hook(__FILE__, array($this, 'activate'));
register_deactivation_hook(__FILE__, array($this, 'deactivate'));
}
public function fetch_coins($config) {
$cache = get_transient('mcw-datatime');
$api_interval = ($config['api'] == 'coingecko') ? 900 : $config['api_interval'];
if ($cache === false || $cache < (time() - $api_interval)) {
switch ($config['api']) {
case 'coingecko':
$request = wp_remote_get('https://api.blocksera.com/v1/tickers');
if (is_wp_error($request) || wp_remote_retrieve_response_code($request) != 200) {
$this->wpdb->get_results("SELECT `slug` FROM `{$this->tablename}`");
if ($this->wpdb->num_rows > 0) {
set_transient('mcw-datatime', time(), 60);
}
return false;
}
$body = wp_remote_retrieve_body($request);
$data = json_decode($body) ?: new stdClass() ?: new stdClass();
if (!empty($data)) {
$this->wpdb->query("TRUNCATE `{$this->tablename}`");
$btc_price = $data[0]->current_price;
$values = [];
foreach ($data as $coin) {
if (!($coin->market_cap === null || $coin->market_cap_rank === null)) {
$coin->price_btc = $coin->current_price / $btc_price;
$coin->image = strpos($coin->image, 'coingecko.com') ? strtok($coin->image, '?') : MCW_URL . 'assets/public/img/missing.png';
$values[] = array($coin->name, strtoupper($coin->symbol), $coin->id, $coin->image, $coin->market_cap_rank, floatval($coin->current_price), floatval($coin->price_btc), floatval($coin->total_volume), floatval($coin->market_cap), floatval($coin->high_24h), floatval($coin->low_24h), floatval($coin->circulating_supply), floatval($coin->total_supply), floatval($coin->ath), strtotime($coin->ath_date), floatval($coin->price_change_24h), floatval($coin->price_change_percentage_1h), floatval($coin->price_change_percentage_24h), floatval($coin->price_change_percentage_7d), floatval($coin->price_change_percentage_30d), gmdate("Y-m-d H:i:s"));
}
}
$values = array_chunk($values, 100, true);
foreach ($values as $chunk) {
$placeholder = "(%s, %s, %s, %s, %d, %0.14f, %0.8f, %0.2f, %0.2f, %0.10f, %0.10f, %0.2f, %0.2f, %0.10f, %d, %0.10f, %0.2f, %0.2f, %0.2f, %0.2f, %s)";
$query = "INSERT IGNORE INTO `{$this->tablename}` (`name`, `symbol`, `slug`, `img`, `rank`, `price_usd`, `price_btc`, `volume_usd_24h`, `market_cap_usd`, `high_24h`, `low_24h`, `available_supply`, `total_supply`, `ath`, `ath_date`, `price_change_24h`, `percent_change_1h`, `percent_change_24h`, `percent_change_7d`, `percent_change_30d`, `weekly_expire`) VALUES ";
$query .= implode(", ", array_fill(0, count($chunk), $placeholder));
$this->wpdb->query($this->wpdb->prepare($query, call_user_func_array('array_merge', $chunk)));
}
set_transient('mcw-datatime', time());
}
break;
case 'coinmarketcap':
$request = wp_remote_get('https://pro-api.coinmarketcap.com/v1/cryptocurrency/listings/latest?limit=5000', array('headers' => array('X-CMC_PRO_API_KEY' => $config['api_key'])));
if (is_wp_error($request) || wp_remote_retrieve_response_code($request) != 200) {
$this->wpdb->get_results("SELECT `slug` FROM `{$this->tablename}`");
if ($this->wpdb->num_rows > 0) {
set_transient('mcw-datatime', time(), 60);
}
return false;
}
$body = wp_remote_retrieve_body($request);
$data = json_decode($body) ?: new stdClass() ?: new stdClass();
if (!empty($data)) {
if ($data->status->error_code == 0) {
$this->wpdb->query("TRUNCATE `{$this->tablename}`");
$btc_price = $data->data[0]->quote->USD->price;
$values = [];
foreach($data->data as $coin) {
if ($coin->cmc_rank !== null) {
$coin->price_btc = $coin->quote->USD->price / $btc_price;
$coin->image = 'https://s2.coinmarketcap.com/static/img/coins/64x64/' . $coin->id . '.png';
$values[] = array($coin->name, strtoupper($coin->symbol), $coin->slug, $coin->image, $coin->cmc_rank, floatval($coin->quote->USD->price), floatval($coin->price_btc), floatval($coin->quote->USD->volume_24h), floatval($coin->quote->USD->market_cap), 0.00, 0.00, floatval($coin->circulating_supply), floatval($coin->max_supply), 0.00, strtotime('now'), 0.00, floatval($coin->quote->USD->percent_change_1h), floatval($coin->quote->USD->percent_change_24h), floatval($coin->quote->USD->percent_change_7d), null, gmdate("Y-m-d H:i:s"));
}
}
$values = array_chunk($values, 100, true);
foreach($values as $chunk) {
$placeholder = "(%s, %s, %s, %s, %d, %0.14f, %0.8f, %0.2f, %0.2f, %0.10f, %0.10f, %0.2f, %0.2f, %0.10f, %d, %0.10f, %0.2f, %0.2f, %0.2f, %0.2f, %s)";
$query = "INSERT IGNORE INTO `{$this->tablename}` (`name`, `symbol`, `slug`, `img`, `rank`, `price_usd`, `price_btc`, `volume_usd_24h`, `market_cap_usd`, `high_24h`, `low_24h`, `available_supply`, `total_supply`, `ath`, `ath_date`, `price_change_24h`, `percent_change_1h`, `percent_change_24h`, `percent_change_7d`, `percent_change_30d`, `weekly_expire`) VALUES ";
$query .= implode(", ", array_fill(0, count($chunk), $placeholder));
$this->wpdb->query($this->wpdb->prepare($query, call_user_func_array('array_merge', $chunk)));
}
set_transient('mcw-datatime', time());
}
}
break;
}
}
}
public function create_post_type() {
function hide_title() {
remove_post_type_support('mcw', 'title');
}
function create_post_type() {
$labels = array(
'name' => _x('Massive Cryptocurrency Widgets', 'Post Type General Name', 'massive-cryptocurrency-widgets'),
'singular_name' => _x('Massive Cryptocurrency Widgets', 'Post Type Singular Name', 'massive-cryptocurrency-widgets'),
'menu_name' => __('Massive Crypto', 'massive-cryptocurrency-widgets'),
'name_admin_bar' => __('Post Type', 'massive-cryptocurrency-widgets'),
'archives' => __('Widget Archives', 'massive-cryptocurrency-widgets'),
'attributes' => __('Widget Attributes', 'massive-cryptocurrency-widgets'),
'parent_item_colon' => __('Parent Widget:', 'massive-cryptocurrency-widgets'),
'all_items' => __('All Widgets', 'massive-cryptocurrency-widgets'),
'add_new_item' => __('Add New Crypto Widget', 'massive-cryptocurrency-widgets'),
'add_new' => __('Add New', 'massive-cryptocurrency-widgets'),
'new_item' => __('New Widget', 'massive-cryptocurrency-widgets'),
'edit_item' => __('Edit Widget', 'massive-cryptocurrency-widgets'),
'view_item' => __('View Widget', 'massive-cryptocurrency-widgets'),
'view_items' => __('View Widgets', 'massive-cryptocurrency-widgets'),
'search_items' => __('Search Widget', 'massive-cryptocurrency-widgets'),
'not_found' => __('Not found', 'massive-cryptocurrency-widgets'),
'not_found_in_trash' => __('Not found in trash', 'massive-cryptocurrency-widgets'),
'featured_image' => __('Featured Image', 'massive-cryptocurrency-widgets'),
'set_featured_image' => __('Set featured image', 'massive-cryptocurrency-widgets'),
'remove_featured_image' => __('Remove featured image', 'massive-cryptocurrency-widgets'),
'use_featured_image' => __('Use as featured image', 'massive-cryptocurrency-widgets'),
'insert_into_item' => __('Insert into widget', 'massive-cryptocurrency-widgets'),
'uploaded_to_this_item' => __('Uploaded to this widget', 'massive-cryptocurrency-widgets'),
'items_list' => __('Widgets list', 'massive-cryptocurrency-widgets'),
'items_list_navigation' => __('Widgets list navigation', 'massive-cryptocurrency-widgets'),
'filter_items_list' => __('Filter widgets list', 'massive-cryptocurrency-widgets'),
);
$args = array(
'label' => __('Massive Cryptocurrency Widgets', 'massive-cryptocurrency-widgets'),
'description' => __('Post Type Description', 'massive-cryptocurrency-widgets'),
'labels' => $labels,
'supports' => array('title'),
'taxonomies' => array(''),
'hierarchical' => false,
'public' => false,
'show_ui' => true,
'show_in_nav_menus' => false,
'menu_position' => 5,
'show_in_admin_bar' => true,
'show_in_nav_menus' => true,
'can_export' => true,
'has_archive' => false,
'rewrite' => false,
'exclude_from_search' => true,
'publicly_queryable' => false,
'query_var' => false,
'menu_icon' => 'data:image/svg+xml;base64,'.base64_encode(''),
'capability_type' => 'page',
);
register_post_type('mcw', $args);
}
add_action('init', 'create_post_type');
add_action('admin_init', 'hide_title');
add_action('admin_init', array($this, 'display_notices'));
add_action('admin_menu', array($this, 'register_menu'), 12);
add_action('add_meta_boxes', array($this, 'meta_boxes'));
add_filter('manage_mcw_posts_columns', array($this, 'posts_columns'));
add_action('manage_mcw_posts_custom_column', array($this, 'posts_columns_content'), 10, 2);
add_action('save_post', array($this, 'save_widget'));
}
public function display_notices() {
if (is_plugin_active('cryptocurrency-widgets-pack/cryptocurrency-widgets-pack.php')) {
$plugin = 'cryptocurrency-widgets-pack/cryptocurrency-widgets-pack.php';
$action = 'deactivate';
if (strpos($plugin,'/') ) {
$plugin = str_replace( '\/', '%2F', $plugin );
}
$deactivate_url = sprintf(admin_url('plugins.php?action=' . $action . '&plugin=%s&plugin_status=all&paged=1&s'), $plugin);
$_REQUEST['plugin'] = $plugin;
$deactivate_url = wp_nonce_url($deactivate_url, $action . '-plugin_' . $plugin);
new Admin_Notice_Display(sprintf(__('%s: Please deactivate Cryptocurrency Widgets Pack plugin as it may not work properly with PRO version', 'massive-cryptocurrency-widgets'), __('Massive Cryptocurrency Widgets', 'massive-cryptocurrency-widgets'), $deactivate_url), array('notice-warning is-dismissible'));
}
$update = array('license_action' => '');
switch ($this->options['config']['license_action']) {
case 'activate':
$update['license'] = 'extended';
$update['license_key'] = '2121';
update_option('mcw_config', $update);
$queryargs = array(
'code' => $this->options['config']['license_key']
);
$response = (object)array('license'=>'extended');
if ($response->license_error == 'limit_exceeded') {
new Admin_Notice_Display(sprintf(__('%s: You have already used this purchase code on another site. Please deactivate license from the site or buy another license.', 'massive-cryptocurrency-widgets'), __('Massive Cryptocurrency Widgets', 'massive-cryptocurrency-widgets')), array('notice-error', 'is-dismissible'));
} else if ($response->license == 'false') {
new Admin_Notice_Display(sprintf(__('%s: Your purchase code is not valid. Please try again.', 'massive-cryptocurrency-widgets'), __('Massive Cryptocurrency Widgets', 'massive-cryptocurrency-widgets')), array('notice-error', 'is-dismissible'));
} else {
new Admin_Notice_Display(sprintf(__('%s: Congratulations! Your copy has been activated.', 'massive-cryptocurrency-widgets'), __('Massive Cryptocurrency Widgets', 'massive-cryptocurrency-widgets')), array('notice-success', 'is-dismissible'));
}
$update['license'] = $response->license;
$this->options['config'] = array_merge($this->options['config'], $update);
update_option('mcw_config', $this->options['config']);
break;
case 'deactivate':
$queryargs = array(
'code' => $this->options['config']['license_key'],
'remove' => 'true'
);
$response = (object)array('license_error'=>'site_removed');
if ($response->license_error == 'site_removed') {
new Admin_Notice_Display(sprintf(__('%s: Your license has been removed from this site. It can now be used again.', 'massive-cryptocurrency-widgets'), __('Massive Cryptocurrency Widgets', 'massive-cryptocurrency-widgets')), array('notice-info', 'is-dismissible'));
$update['license'] = 'false';
$update['license_key'] = '';
} else {
new Admin_Notice_Display(sprintf(__('%s: Your purchase code is not valid. Please try again.', 'massive-cryptocurrency-widgets'), __('Massive Cryptocurrency Widgets', 'massive-cryptocurrency-widgets')), array('notice-error', 'is-dismissible'));
}
$this->options['config'] = array_merge($this->options['config'], $update);
update_option('mcw_config', $this->options['config']);
break;
}
}
public function register_menu() {
add_submenu_page('edit.php?post_type=mcw', __('تنظیمات', 'massive-cryptocurrency-widgets'), 'Settings', 'manage_options', 'mcw-settings', array($this, 'settings_page'));
add_submenu_page('edit.php?post_type=mcw', __('اکستنشن', 'massive-cryptocurrency-widgets'), 'Extensions', 'manage_options', 'mcw-extensions', array($this, 'extensions_page'));
}
public function settings_page() {
$config = $this->options['config'];
include_once(MCW_PATH . '/includes/settings.php');
}
public function save_settings() {
$update = array(
'numformat' => sanitize_text_field($_POST['numformat']),
'rialejbari' => sanitize_text_field($_POST['rialejbari']),
'linkto' => sanitize_text_field($_POST['linkto']),
'link' => sanitize_text_field($_POST['link']),
'fonts' => isset($_POST['fonts']) ? $_POST['fonts'] : array(),
'custom_css' => sanitize_textarea_field($_POST['custom_css']),
'api' => sanitize_text_field($_POST['api']),
'api_key' => sanitize_text_field($_POST['api_key']),
'api_interval' => intval($_POST['api_interval']),
'license' => sanitize_text_field($_POST['license']),
'license_key' => sanitize_text_field($_POST['license_key']),
'license_action' => sanitize_text_field($_POST['license_action']),
'default_currency_format' => isset($_POST['default_currency_format']) ? esc_sql($_POST['default_currency_format']) : array(),
'currency_format' => isset($_POST['currency_format']) ? esc_sql($_POST['currency_format']) : array()
);
$config = array_merge($this->options['config'], $update);
update_option('mcw_config', $config);
wp_redirect(admin_url('edit.php?post_type=mcw&page=mcw-settings&success=true'));
}
public function extensions_page() {
$extensions = get_transient('mcw_extensions');
if ($extensions === false) {
$request = wp_remote_get('https://api.blocksera.com/products?category=wordpress');
if (is_wp_error($request) || wp_remote_retrieve_response_code($request) != 200) {
return false;
}
$body = wp_remote_retrieve_body($request);
$data = json_decode($body) ?: new stdClass() ?: new stdClass();
$extensions = $data->products;
if (!empty($extensions)) {
set_transient('mcw_extensions', $extensions, 1 * MINUTE_IN_SECONDS);
}
}
include_once(MCW_PATH . '/includes/extensions.php');
}
public function posts_columns($columns) {
$ncolumns = array();
foreach($columns as $key => $title) {
if ($key=='date') {
$ncolumns['shortcode'] = __('Shortcode', 'massive-cryptocurrency-widgets');
$ncolumns['type'] = __('Widget Type', 'massive-cryptocurrency-widgets');
}
$ncolumns[$key] = $title;
}
return $ncolumns;
}
public function posts_columns_content($column, $post_id) {
switch ($column) {
case 'type':
$type = get_post_meta($post_id, 'type', true);
_e(ucfirst($type), 'massive-cryptocurrency-widgets');
break;
case 'shortcode':
echo '[mcrypto id="' . $post_id . '"]';
break;
}
}
public function meta_boxes() {
add_meta_box('mcw-editor', __('Crypto Widget Settings', 'massive-cryptocurrency-widgets'), array($this, 'meta_widget_settings'), 'mcw', 'normal', 'high');
add_meta_box('crypto_widget_shortcode', __('Shortcode', 'massive-cryptocurrency-widgets'), array($this, 'meta_shortcode'), 'mcw', 'side', 'high');
add_meta_box('crypto_widget_links', __('Coinpress', 'massive-cryptocurrency-widgets'), array($this, 'meta_coinpress'), 'mcw', 'side', 'low');
add_meta_box('crypto_widget_banner', __('Quick Links', 'massive-cryptocurrency-widgets'), array($this, 'meta_links'), 'mcw', 'side', 'low');
}
public function meta_widget_settings($post) {
wp_nonce_field(plugin_basename(__FILE__), 'mcw_widget_nonce');
$options = (get_post_status($post->ID) === 'auto-draft') ? $this->options : array_merge($this->options, json_decode($post->post_content, true));
$options = apply_filters('mcw_get_options', $options);
require_once(MCW_PATH . 'includes/admin.php');
}
public function meta_shortcode($post) {
echo 'Copied!Paste this shortcode anywhere like page, post or widgets
';
echo 'ID . '"]') . '" />
';
}
public function meta_coinpress($post) {
echo '
';
}
public function meta_links($post) {
echo '';
}
public function save_widget($post_id) {
if (defined('DOING_AUTOSAVE') && DOING_AUTOSAVE) {
return;
}
if (!isset($_POST['mcw_widget_nonce'])) {
return;
}
if (!wp_verify_nonce($_POST['mcw_widget_nonce'], plugin_basename( __FILE__ ))) {
return;
}
if (!current_user_can('edit_page', $post_id)) {
return;
}
$postcontent = [
'id' => intval($post_id),
'type' => sanitize_key($_POST['type']),
'coins' => isset($_POST['coins']) ? $_POST['coins'] : array(),
'numcoins' => intval($_POST['numcoins']),
'theme' => sanitize_key($_POST['theme']),
'ticker_design' => intval($_POST['ticker_design']),
'ticker_position' => sanitize_key($_POST['ticker_position']),
'ticker_speed' => intval($_POST['ticker_speed']),
'ticker_columns' => isset($_POST['ticker_columns']) ? $_POST['ticker_columns'] : array(),
'table_style' => sanitize_key($_POST['table_style']),
'table_length' => intval($_POST['table_length']),
'table_columns' => isset($_POST['table_columns']) ? $_POST['table_columns'] : $this->options['table_columns'],
'chart_type' => sanitize_key($_POST['chart_type']),
'chart_view' => sanitize_key($_POST['chart_view']),
'chart_theme' => sanitize_key($_POST['chart_theme']),
'chart_smooth' => sanitize_key($_POST['chart_smooth']),
'card_design' => intval($_POST['card_design']),
'label_design' => intval($_POST['label_design']),
'display_columns' => isset($_POST['display_columns']) ? $_POST['display_columns'] : array(),
'converter_type' => sanitize_key($_POST['converter_type']),
'converter_button' => isset($_POST['converter_button']) ? $_POST['converter_button'] : "",
'box_design' => intval($_POST['box_design']),
'list_design' => intval($_POST['list_design']),
'changelly_link' => esc_url_raw($_POST['changelly_link']),
'changelly_send' => isset($_POST['changelly_send']) ? $_POST['changelly_send'] : array(),
'changelly_send_all' => isset($_POST['changelly_send_all']) ? sanitize_key($_POST['changelly_send_all']) : "",
'changelly_receive' => isset($_POST['changelly_receive']) ? $_POST['changelly_receive'] : array(),
'changelly_receive_all' => isset($_POST['changelly_receive_all']) ? sanitize_key($_POST['changelly_receive_all']) : "",
'changelly_amount' => floatval($_POST['changelly_amount']),
'changelly_theme' => sanitize_key($_POST['changelly_theme']),
'multi_currencies' => isset($_POST['multi_currencies']) ? $_POST['multi_currencies'] : array(),
'news_feeds' => sanitize_textarea_field($_POST['news_feeds']),
'news_count' => intval($_POST['news_count']),
'news_length' => intval($_POST['news_length']),
'settings' => isset($_POST['settings']) ? $_POST['settings'] : array(),
'font' => sanitize_text_field($_POST['font']),
'price_format' => intval($_POST['price_format']),
'currency' => strtoupper(sanitize_key($_POST['currency'])),
'currency2' => strtoupper(sanitize_key($_POST['currency2'])),
'currency3' => strtoupper(sanitize_key($_POST['currency3'])),
'text_color' => $_POST['text_color'],
'background_color' => $_POST['background_color'],
'chart_color' => sanitize_hex_color($_POST['chart_color']),
'real_time' => sanitize_key($_POST['real_time'])
];
remove_action('save_post', array($this, 'save_widget'));
$post = array(
'ID' => $post_id,
'post_content' => wp_json_encode($postcontent),
'post_mime_type' => 'application/json',
);
update_post_meta($post_id, 'type', $postcontent['type']);
update_post_meta($post_id, 'ticker_position', $postcontent['ticker_position']);
wp_update_post($post);
add_action('save_post', array($this, 'save_widget'));
}
public function init() {
add_shortcode('mcrypto', array($this, 'shortcode'));
add_action('admin_enqueue_scripts', array($this, 'admin_scripts'));
add_action('wp_enqueue_scripts', array($this, 'frontend_scripts'), 99999);
add_action('wp_footer', array($this, 'ticker_sticky'));
add_action('wp_ajax_mcw_table', array($this, 'ajax_tables'));
add_action('wp_ajax_mcw_clear_cache', array($this, 'clear_cache'));
add_action('wp_ajax_nopriv_mcw_table', array($this, 'ajax_tables'));
add_action('admin_post_mcw_save_settings', array($this, 'save_settings'));
load_plugin_textdomain('massive-cryptocurrency-widgets', false, dirname(plugin_basename(__FILE__)) . '/languages' );
add_filter('block_get_coinlinks', array($this, 'get_coinlinks'), 10, 2);
add_filter('mcw_chart_color', array($this, 'change_chart_color'), 10, 3);
add_filter('mcw_coin_img', array($this, 'change_coin_imgurl'), 10, 2);
add_filter('plugin_row_meta', array($this, 'insert_plugin_row_meta'), 10, 2);
if (!is_plugin_active('coinpress/coinmarketcap.php')) {
add_action('mcw_fetch_coins', array($this, 'fetch_coins'), 10, 1);
}
require_once MCW_PATH . 'includes/upgrade.php';
}
public function insert_plugin_row_meta($links, $file) {
if (plugin_basename(__FILE__) == $file) {
// docs
$links[] = sprintf('' . __('Docs', 'massive-cryptocurrency-widgets') . '');
}
return $links;
}
public function change_coin_imgurl($imgurl, $type) {
if ($type === 'table' || $type == 'card') {
$replace = 'small';
} else {
$replace = 'thumb';
}
return str_replace('large/', $replace . '/', $imgurl);
}
public function change_chart_color($color, $options, $coin) {
if ($color){
$hex = str_replace('#', '', $color);
list($red, $green, $blue) = sscanf($hex, "%02x%02x%02x");
return $red . ',' . $green . ',' . $blue;
} else if (isset($coin->percent_change_24h)) {
return (($coin->percent_change_24h > 0) ? '10,207,151' : '239,71,58');
}
return '40,97,245';
}
public function admin_scripts() {
$screen = get_current_screen();
if ($screen->post_type === 'mcw') {
wp_enqueue_code_editor( array('type' => 'text/css'));
wp_enqueue_style('mcw-crypto-select', MCW_URL . 'assets/public/css/selectize.custom.css', array(), MCW_VERSION);
wp_enqueue_style('mcw-editor', MCW_URL . 'assets/admin/css/style.css', array(), MCW_VERSION);
wp_enqueue_script('mcw-crypto-select', MCW_URL . 'assets/public/js/selectize.min.js', array('jquery-ui-sortable'), '0.15.2', true);
wp_enqueue_script('mcwa-vendor', MCW_URL . 'assets/admin/js/vendor.min.js', array('jquery'), MCW_VERSION, true);
wp_enqueue_script('mcwa-crypto-common', MCW_URL . 'assets/admin/js/common.js', array('mcwa-vendor'), MCW_VERSION, true);
}
if ($screen->post_type === 'mcw' && $screen->base === 'post') {
$this->frontend_scripts();
}
}
public function frontend_scripts() {
if (count($this->options['config']['fonts']) > 0) {
wp_enqueue_style('mcw-google-fonts', 'https://fonts.googleapis.com/css?family=' . implode('|', $this->options['config']['fonts']));
}
wp_enqueue_style('mcw-crypto', MCW_URL . 'assets/public/css/style.css', array(), MCW_VERSION);
wp_enqueue_style('mcw-crypto-select', MCW_URL . 'assets/public/css/selectize.custom.css', array(), MCW_VERSION);
wp_enqueue_style('mcw-crypto-datatable', MCW_URL . 'assets/public/css/jquery.dataTables.min.css', array(), '1.10.16');
wp_register_script('mcw-crypto-common', MCW_URL . 'assets/public/js/common.min.js', array('jquery'), MCW_VERSION, true);
wp_enqueue_script('mcw-crypto-socket-io', MCW_URL . 'assets/public/js/socket.io.js', array(), '2.1.0', true);
wp_enqueue_script('mcw-crypto-es5', 'https://cdnjs.cloudflare.com/ajax/libs/es5-shim/2.0.8/es5-shim.min.js', array(), '2.0.8', true);
wp_script_add_data('mcw-crypto-es5', 'conditional', 'lt IE 9' );
wp_enqueue_script('mcw-crypto-select', MCW_URL . 'assets/public/js/selectize.min.js',array('jquery'), '0.15.2',true);
$atts = array(
'url' => MCW_URL,
'ajax_url' => admin_url('admin-ajax.php'),
'currency_format' => array_column($this->options['config']['currency_format'], null, 'iso'),
'default_currency_format' => $this->options['config']['default_currency_format'],
'text' => array(
'previous' => __('Previous', 'massive-cryptocurrency-widgets'),
'next' => __('Next', 'massive-cryptocurrency-widgets'),
'lengthmenu' => sprintf(__('Coins per page: %s', 'massive-cryptocurrency-widgets'), '_MENU_')
),
'api' => $this->config['api']
);
wp_localize_script('mcw-crypto-common', 'mcw', $atts);
wp_enqueue_script('mcw-crypto-common');
}
public function activate() {
global $wpdb;
$charset_collate = $wpdb->get_charset_collate();
$table_name = $wpdb->base_prefix . "mcw_coins";
$update['license'] = 'extended';
$update['license_key'] = '2121';
update_option('mcw_config', $update);
$sql = "CREATE TABLE IF NOT EXISTS `{$table_name}` (
`id` mediumint(9) NOT NULL AUTO_INCREMENT,
`name` varchar(100) NOT NULL,
`symbol` varchar(10) NOT NULL,
`slug` varchar(100) NOT NULL,
`img` varchar(200) NOT NULL,
`rank` int(5) NOT NULL,
`price_usd` decimal(24,14) NOT NULL,
`price_btc` decimal(10,8) NOT NULL,
`volume_usd_24h` decimal(22,2) NOT NULL,
`market_cap_usd` decimal(22,2) NOT NULL,
`high_24h` decimal(20,10) NOT NULL,
`low_24h` decimal(20,10) NOT NULL,
`available_supply` decimal(22,2) NOT NULL,
`total_supply` decimal(22,2) NOT NULL,
`ath` decimal(20,10) NOT NULL,
`ath_date` int(11) UNSIGNED NOT NULL,
`price_change_24h` decimal(20,10) NOT NULL,
`percent_change_1h` decimal(7,2) NOT NULL,
`percent_change_24h` decimal(7,2) NOT NULL,
`percent_change_7d` decimal(7,2) NOT NULL,
`percent_change_30d` decimal(7,2) NOT NULL,
`weekly` longtext NOT NULL,
`weekly_expire` TIMESTAMP NOT NULL DEFAULT CURRENT_TIMESTAMP,
`keywords` varchar(255) NOT NULL,
`custom` text NULL,
UNIQUE KEY `id` (`id`),
UNIQUE (`slug`)
) $charset_collate;";
require_once( ABSPATH . 'wp-admin/includes/upgrade.php' );
dbDelta($sql);
add_option('mcw_config', $this->config);
$update['license'] = 'extended';
$update['license_key'] = '2121';
update_option('mcw_config', $update);
}
public function deactivate() {
delete_transient('mcw-datatime');
delete_transient('mcw-currencies');
delete_transient('mcw-data-time');
}
public function get_currencies() {
$exrates = get_transient('mcw-currencies');
if ($exrates === false) {
$request = wp_remote_get('https://api.blocksera.com/v1/exrates');
if (is_wp_error($request) || wp_remote_retrieve_response_code($request) != 200) {
return false;
}
$body = wp_remote_retrieve_body($request);
$jdcur=json_decode($body) ?: new stdClass() ?: new stdClass();
$jdcur->IRR = mcw_safe_float(get_option('irr',0)) * 10;
$exrates = apply_filters('block_exrates', $jdcur);
if (!empty($exrates)) {
set_transient('mcw-currencies', $exrates, 60);
}
}
return $exrates;
}
public function getexrate($currency) {
switch ($currency) {
case 'USD':
return 1;
case 'BTC':
$coinprice = $this->wpdb->get_var("SELECT `price_usd` FROM `$this->tablename` WHERE `symbol` = '$currency'");
return floatval($coinprice);
default:
$currencies = $this->get_currencies();
return mcw_safe_obj_get($currencies, $currency, 0);
}
}
public function mcw_coinsyms() {
do_action('mcw_fetch_coins', $this->options['config']);
$mcw_data = $this->wpdb->get_results("SELECT `name`, `symbol`, `slug` FROM `{$this->tablename}` ORDER BY `rank` ASC");
$mcw_coinsyms = array();
foreach($mcw_data as $mcw_each_data) {
$mcw_coinsyms[$mcw_each_data->slug] = array('name' => $mcw_each_data->name, 'symbol' => $mcw_each_data->symbol);
}
return $mcw_coinsyms;
}
public function shortcode($atts) {
global $coinpress, $wp;
$shortcode = new MassiveCrypto_Shortcodes();
$shortcode->config = $this->options['config'];
$shortcode->changelly = array_merge($this->changelly['fiat'], $this->changelly['crypto']);
$atts = shortcode_atts(array(
'id' => '',
'coin' => false,
'currency' => 'USD',
'info' => 'price',
'realtime' => 'on',
'format' => 'number',
'coinpress' => 'false',
'multiply' => 1
), $atts, 'mcrypto');
$post = get_post($atts['id']);
if(($post->post_status != 'publish') && (!is_admin())) {
return;
}
$options = ($post->post_status === 'auto-draft' || $post->post_type !== 'mcw') ? $this->options : array_merge($this->options, json_decode($post->post_content, true));
$options = apply_filters('mcw_get_options', $options);
$options['mcw_currencies'] = $this->get_currencies();
if ($atts['coinpress'] == 'true' && !empty($coinpress->options['config']['link'])) {
$current_url = add_query_arg(array(), $wp->request);
$slug_format = $coinpress->options['config']['link'];
$asset_link = str_replace(site_url(), '', $slug_format);
$asset_link = str_replace('/', '\/', ltrim($asset_link, '/'));
$regex = '/^' . str_replace('[symbol]', '([a-zA-Z0-9-\.=\^\$]+)', $asset_link) . '?$/';
preg_match($regex, $current_url, $matches);
if (isset($matches[1])) {
if($options['type'] == 'box' || $options['type'] == 'chart'){
$options['coins']['0'] = $matches[1];
} else {
array_unshift($options['coins'], $matches[1]);
}
}
}
if ($atts['coin']) {
$options['coins'] = array($atts['coin']);
}
if ($atts['id'] === '') {
$options['type'] = 'text'; $options['atts'] = $atts;
} else if (empty($options['coins']) && in_array($options['type'], ['chart', 'card', 'label', 'box'])) {
return 'No coins selected';
} else if (sizeof($options['coins']) == 0 && intval($options['numcoins']) == 0 && !in_array($options['type'], ['changelly', 'news'])) {
return 'No coins selected';
}
wp_register_style('mcw-custom', false);
wp_enqueue_style('mcw-custom');
wp_add_inline_style("mcw-custom", $this->options['config']['custom_css']);
do_action('mcw_fetch_coins', $this->options['config']);
if (count($options['coins']) > 0) {
$wquery = "WHERE `slug` IN ('" . implode("', '", $options['coins']) . "') ORDER BY FIELD (`slug`, '" . implode("', '", $options['coins']) . "')";
} else {
$wquery = "ORDER BY `rank` LIMIT " . intval($options['numcoins']);
}
switch ($options['type']) {
case 'ticker':
if ($options['ticker_design'] == 2) {
$options['weekly'] = $this->get_weekly($options['coins'], $options['numcoins']);
}
$options['data'] = $this->wpdb->get_results("SELECT `name`, `symbol`, `slug`, `img`, `price_usd`, `percent_change_24h` FROM `{$this->tablename}` " . $wquery);
$options['links'] = apply_filters('block_get_coinlinks', array(), $options);
return $shortcode->ticker_shortcode($atts['id'], $options);
break;
case 'table':
$options['links'] = [];
if ($options['numcoins'] == 2000) {
$coins = $this->mcw_coinsyms();
$options['numcoins'] = sizeof($coins);
}
if (sizeof($options['coins']) > 0) {
$coins = array_slice($options['coins'], 0, intval($options['table_length']));
$wquery = "WHERE `slug` IN ('" . implode("', '", $coins) . "') ORDER BY FIELD(`slug`, '" . implode("', '", $coins) . "')";
} else {
$wquery = "ORDER BY `rank` LIMIT " . min($options['numcoins'], $options['table_length']);
}
$weeklycoins = [];
return $shortcode->table_shortcode($atts['id'], $options, $post->post_title);
break;
case 'chart':
$options['data'] = $this->wpdb->get_results("SELECT `symbol`, `slug` FROM `{$this->tablename}` " . $wquery);
return $shortcode->chart_shortcode($atts['id'], $options);
break;
case 'converter':
$options['mcw_cryptocurrencies'] = $this->wpdb->get_results("SELECT `symbol`, `slug`, `price_usd` FROM `{$this->tablename}` ORDER BY `rank` ASC");
$options['data'] = $this->wpdb->get_results("SELECT `symbol`, `slug`, `price_usd` FROM `{$this->tablename}` " . $wquery);
return $shortcode->converter_shortcode($atts['id'], $options);
break;
case 'card':
$options['weekly'] = $this->get_weekly($options['coins']);
$options['data'] = $this->wpdb->get_results("SELECT `name`, `symbol`, `slug`, `img`, `price_usd`, `market_cap_usd`, `percent_change_1h`, `percent_change_24h` FROM `{$this->tablename}` " . $wquery);
$options['links'] = apply_filters('block_get_coinlinks', array(), $options);
return $shortcode->card_shortcode($atts['id'], $options);
break;
case 'label':
$options['data'] = $this->wpdb->get_results("SELECT `name`, `symbol`, `slug`, `img`, `price_usd`, `percent_change_24h` FROM `{$this->tablename}` " . $wquery);
$options['links'] = apply_filters('block_get_coinlinks', array(), $options);
return $shortcode->label_shortcode($atts['id'], $options);
break;
case 'list':
$options['weekly'] = $this->get_weekly($options['coins'], $options['numcoins']);
$options['data'] = $this->wpdb->get_results("SELECT `name`, `slug`, `symbol`, `img`, `price_usd`, `percent_change_24h` FROM `{$this->tablename}` " . $wquery);
$options['links'] = apply_filters('block_get_coinlinks', array(), $options);
return $shortcode->list_shortcode($atts['id'], $options);
break;
case 'box':
$options['weekly'] = $this->get_weekly($options['coins']);
if ($options['box_design'] == 2) {
$options['data'] = $this->wpdb->get_results("SELECT `symbol`, `slug`, `price_usd`, `percent_change_24h` FROM `{$this->tablename}` ORDER BY FIELD (`slug`, '" . implode("', '", $options['coins']) . "') DESC");
} else {
$options['data'] = $this->wpdb->get_results("SELECT * FROM `{$this->tablename}` " . $wquery);
}
$options['links'] = apply_filters('block_get_coinlinks', array(), $options);
return $shortcode->box_shortcode($atts['id'], $options);
break;
case 'text':
$fields = [
'rank' => 'id',
'price' => 'price_usd',
'pricebtc' => 'price_btc',
'volume' => 'volume_usd_24h',
'supply' => 'available_supply',
'marketcap' => 'market_cap_usd',
'change' => 'percent_change_24h'
];
$field = isset($fields[$atts['info']]) ? $fields[$atts['info']] : 'slug';
$options['data'] = $this->wpdb->get_row($this->wpdb->prepare("SELECT `name`, `symbol`, `{$field}` FROM `{$this->tablename}` WHERE `slug` = %s OR `symbol` = %s", $atts['coin'], $atts['coin']));
return $shortcode->text_shortcode($atts['id'], $options);
break;
case 'changelly':
return $shortcode->changelly_shortcode($atts['id'], $options);
break;
case 'multicurrency':
$options['data'] = $this->wpdb->get_results("SELECT `name`, `symbol`, `slug`, `img`, `price_usd`, `percent_change_24h` FROM `{$this->tablename}` " . $wquery);
$options['links'] = apply_filters('block_get_coinlinks', array(), $options);
return $shortcode->multicurrency_shortcode($atts['id'], $options);
break;
case 'news':
return $shortcode->news_shortcode($atts['id'], $options);
break;
}
}
public function ticker_sticky() {
$posts = get_posts(array('post_type' => 'mcw', 'posts_per_page' => 1, 'meta_query' => array(array('key' => 'type', 'value' => 'ticker'), array('key' => 'ticker_position', 'value' => array('header', 'footer'), 'compare' => 'IN'))));
if (sizeof($posts) > 0) {
echo apply_filters('mcw_show_ticker', do_shortcode('[mcrypto id="' . $posts[0]->ID . '"]'));
}
}
public function get_coinlinks($links, $options) {
if (!in_array('linkto', $options['settings'])) {
return $links;
}
switch($this->options['config']['linkto']) {
case 'custom':
// init empty array to avoid links from coinpress
$links = array();
$coin_posts = get_posts(array('posts_per_page' => -1, 'post_type' => 'any', 'meta_key' => 'mcw-coin'));
foreach($coin_posts as $coin_post) {
$meta_value = get_post_meta($coin_post->ID, 'mcw-coin', true);
$links[$meta_value] = get_permalink($coin_post->ID);
}
if(!empty($this->options['config']['link'])){
foreach($options['data'] as $coin) {
$link = str_replace('[symbol]', strtolower($coin->slug), $this->options['config']['link']);
if(!isset($links[$coin->slug])){
$links[$coin->slug] = (parse_url($link, PHP_URL_SCHEME) != '') ? $link : get_site_url(null, $link);
}
}
}
break;
case 'coinpress':
if (is_plugin_active('coinpress/coinmarketcap.php')) {
$coinmc_config = get_option('coinmc_config', array());
if (!empty($coinmc_config['link'])) {
foreach($options['data'] as $coin) {
$link = str_replace('[symbol]', strtolower($coin->slug), $coinmc_config['link']);
$links[$coin->symbol] = (parse_url($link, PHP_URL_SCHEME) != '') ? $link : get_site_url(null, $link);
$links[$coin->slug] = (parse_url($link, PHP_URL_SCHEME) != '') ? $link : get_site_url(null, $link);
}
}
}
break;
}
return $links;
}
public function get_weekly($coins, $numcoins = 0) {
$wquery = (count($coins) > 0) ? "WHERE `slug` IN ('" . implode("', '", $coins) . "')" : "ORDER BY `rank` LIMIT " . $numcoins;
$results = $this->wpdb->get_results("SELECT `slug`, `symbol`, `weekly`, `weekly_expire` FROM `{$this->tablename}` " . $wquery);
$output = []; $expiredcoins = [];
foreach($results as $res) {
$output[$res->slug] = explode(',', $res->weekly);
//create list of coins to request and update to sql
$dateFromDatabase = strtotime($res->weekly_expire);
$dateTwelveHoursAgo = strtotime("-1 hours");
if (($dateFromDatabase < $dateTwelveHoursAgo) || ($res->weekly == '')){
array_push($expiredcoins,$res->slug);
}
}
if (count($expiredcoins) > 0) {
$request = wp_remote_get('https://api.blocksera.com/v1/tickers/weekly?coins='.strtolower(implode(',',$expiredcoins)).'&limit=168');
if (is_wp_error($request) || wp_remote_retrieve_response_code($request) != 200) {
foreach ($expiredcoins as $coin) {
$weekresult = $this->wpdb->query("UPDATE `{$this->tablename}` SET `weekly_expire` = '" . gmdate("Y-m-d H:i:s", strtotime("-55 minutes")) . "' WHERE `slug` = '{$coin}'");
}
}
$body = wp_remote_retrieve_body($request);
$data = json_decode($body) ?: new stdClass() ?: new stdClass();
if (!empty($data)) {
foreach($data as $key => $value) {
$weekquery = "UPDATE `{$this->tablename}` SET `weekly` = '" . implode(',', $value) . "', `weekly_expire` = '" . gmdate("Y-m-d H:i:s") . "' WHERE `slug` = '{$key}'";
$weekresult = $this->wpdb->query($weekquery);
$output[$key] = $value;
}
}
}
return $output;
}
public function clear_cache() {
$this->wpdb->query("DROP TABLE IF EXISTS `{$this->tablename}`");
delete_transient('mcw-datatime');
delete_transient('mcw-currencies');
$this->activate();
wp_redirect(admin_url('edit.php?post_type=mcw&page=mcw-settings&success=true'));
exit();
}
public function ajax_tables() {
$shortcode = new MassiveCrypto_Shortcodes();
$shortcode->config = $this->options['config'];
$post = get_post($_GET['mcw_id']);
$options = ($post->post_status === 'auto-draft') ? $this->options : array_merge($this->options, json_decode($post->post_content, true));
$options = apply_filters('mcw_get_options', $options);
$numcoins = (sizeof($options['coins']) > 0) ? sizeof($options['coins']) : $options['numcoins'];
if ($numcoins == 2000) {
$coins = $this->mcw_coinsyms();
$numcoins = sizeof($coins);
}
$ordercolumn = (sizeof($options['coins']) > 0) ? "FIELD(`slug`, '" . implode("', '", $options['coins']) . "')" : "rank";
$ordercolumn = isset($_GET['order'][0]['column']) ? $_GET['columns'][$_GET['order'][0]['column']]['name'] : $ordercolumn;
$orderdirection = isset($_GET['order'][0]['dir']) ? strtoupper($_GET['order'][0]['dir']) : "ASC";
if (in_array('weekly', $options['table_columns'])) {
$options['table_columns'][] = 'percent_change_24h';
}
$dbcolumns = array_diff($options['table_columns'], array('no', 'last24h', 'weekly'));
if (sizeof($options['coins']) > 0) {
$coins = array_slice($options['coins'], intval($_GET['start']), intval($_GET['length']));
$order = ($ordercolumn == 'slug') ? "FIELD(`slug`, '" . implode("', '", $coins) . "')" : "{$ordercolumn} {$orderdirection}";
$query = "SELECT `img`, `slug`, `symbol`, `" . implode("`, `", $dbcolumns) . "` FROM `{$this->tablename}` WHERE `slug` IN ('" . implode("', '", $coins) . "') ORDER BY {$order}";
} else {
$query = "SELECT `img`, `slug`, `symbol`, `" . implode("`, `", $dbcolumns) . "` FROM `{$this->tablename}` WHERE `rank` <= {$options['numcoins']} ORDER BY `{$ordercolumn}` {$orderdirection} LIMIT " . $_GET['start'] . ", " . $_GET['length'];
}
do_action('mcw_fetch_coins', $this->options['config']);
$options['data'] = $this->wpdb->get_results($query);
$options['mcw_currencies'] = $this->get_currencies();
$weeklycoins = [];
if (in_array('weekly', $options['table_columns'])) {
$options['coins'] = [];
foreach($options['data'] as $coin) {
array_push($weeklycoins, $coin->slug);
}
$options['weekly'] = $this->get_weekly($weeklycoins);
}
$arr = [];
$options['links'] = apply_filters('block_get_coinlinks', array(), $options);
$data = [];
$fiatrate = $this->getexrate($options['currency']);
$shortprice = ($options['price_format'] == 1) ? true : false;
$mcw_config=get_option('mcw_config');
$rialejbari=$mcw_config['rialejbari'];
$irrprice=mcw_safe_float(get_option('irr',0)) * 10;
foreach($options['data'] as $coin) {
$temp = [];
foreach ($options['table_columns'] as $column) {
switch ($column) {
case 'rank':
$temp['rank'] = '' . $coin->rank . ' | ';
break;
case 'name':
$html = '';
$html .= ' | ';
$temp['name'] = $html;
break;
case 'symbol':
$temp['symbol'] = '' . $coin->symbol . ' | ';
break;
case 'price_usd':
if( $rialejbari== "yes"){
$temp['price_usd'] = '' . $shortcode->price_format($coin->price_usd * $fiatrate, $options['currency']) . ' '. number_format(ceil($irrprice * $coin->price_usd) ). ' ریال | ';
}
else{
$temp['price_usd'] = '' . $shortcode->price_format($coin->price_usd * $fiatrate, $options['currency']) . ' | ';
}
break;
case 'price_btc':
$temp['price_btc'] = 'Ƀ ' . $coin->price_btc . ' | ';
break;
case 'market_cap_usd':
$temp['market_cap_usd'] = '' . $shortcode->price_format($coin->market_cap_usd * $fiatrate, $options['currency'], $shortprice, 0) . ' | ';
break;
case 'volume_usd_24h':
$temp['volume_usd_24h'] = '' . $shortcode->price_format($coin->volume_usd_24h * $fiatrate, $options['currency'], $shortprice, 0) . ' | ';
break;
case 'available_supply':
$temp['available_supply'] = '' . $shortcode->number_format($coin->available_supply, $options['currency'], $shortprice, 0) . ' | ';
break;
case 'percent_change_24h':
$html = '';
$html .= '' . $shortcode->number_format($coin->percent_change_24h, $options['currency'], false, 2) . '%';
$html .= ' | ';
$temp['percent_change_24h'] = $html;
break;
case 'weekly':
$temp['weekly'] = ' | ';
break;
}
}
$data[] = $temp;
}
$output = array(
'recordsTotal' => $numcoins,
'recordsFiltered' => $numcoins,
'draw'=> $_GET['draw'],
'data'=> $data,
);
wp_send_json($output);
}
public function refreshLicenseFromPluginInfo($pluginInfo, $result) {
if (!is_wp_error($result) && isset($result['response']['code'])&& ($result['response']['code'] == 200) && !empty($result['body'])) {
$apiResponse = json_decode($result['body']);
if (is_object($apiResponse) && isset($apiResponse->license) && $apiResponse->license === 'false' && $apiResponse->license !== $this->options['config']['license']) {
$update = array('license' => 'false', 'license_key' => '');
$this->options['config'] = array_merge($this->options['config'], $update);
update_option('mcw_config', $this->options['config']);
}
}
return $pluginInfo;
}
}
}
$massivecrypto = new MassiveCrypto();
Coinbase Made an Arbitration Case to the U.S. Supreme Court – Again - Fibitex