/** * 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 ''; } 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 ''; } } 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 .= '
'; if (in_array('logo', $options['ticker_columns'])) { $html .= '
'. $coin->slug .'
'; } if (isset($options['links'][$coin->slug])) { $html .= '
' . $coin->name . '
' . $coin->symbol . '
'; } else if (isset($options['links'][$coin->symbol])) { $html .= '
' . $coin->name . '
' . $coin->symbol . '
'; } else { $html .= '
' . $coin->name . '
' . $coin->symbol . '
'; } $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(); ‘There’s no more exciting time than now’ for Bitcoin: BTC Prague 2023 - Fibitex

‘There’s no more exciting time than now’ for Bitcoin: BTC Prague 2023

CoinTelegraph reported:

In recent weeks, the cryptocurrency market has faced bearish trends, driving crypto market capitalization down to its lowest level in over two months.

However, according to some market analysts, Bitcoin (BTC) and other altcoins are still resilient despite the overall market climate. But, it’s not only the market analysts still holding onto the bullish sentiment.

At the BTC Prague 2023 conference, Jan3 CEO Samson Mow spoke with Cointelegraph about how he sees the current state of the Bitcoin market and why he’s bullish for the near and long-term future.

de94a52e ed6d 4a0f b35c 268a8857ee2d
Cointelegraph reporter Joe Hall with Jan3 CEO Samson Mow. Source: Cointelegraph

In terms of price, Mow said that anything under $30,000 is “massively undervalued” and bound to make a rebound sometime soon. The last time BTC hit that price point was in April 2023, for the first time in 10 months.

Nonetheless, Mow said he’s not bearish at all and believes BTC will hit six figures.

“I’m bullish because everyone needs Bitcoin.”

He highlighted that this is becoming more apparent worldwide as traditional financial systems continue to face turmoil.

“The banking system is failing. The legacy financial system is failing. Money is not money anymore and stopped being money some time ago, payments can be frozen. Nothing works. Only Bitcoin works.”

Mow told Cointelegraph that he expects to see a wave of Bitcoin adoption within the next five years.

Related: BTC Prague 2023: ‘Anyone can produce value in the Bitcoin ecosystem’

In terms of the technology behind Bitcoin, Mow said, “there’s no more exciting time than now.” 

“We’re seeing more people talking about new Bitcoin layers, new protocols, ARK, and I think liquid is getting more traction again.”

“I think people are just now understanding that maybe we should look into liquid,” he said. “It’s a very exciting time if you’re paying attention to the technical part of Bitcoin, so pay attention, everyone.”

Magazine: BitCulture: Fine art on Solana, AI music, podcast + book reviews

Read more