PluginProbe
Countdown Timer Block – build urgency for events and launches / 1.2.8
Countdown Timer Block – build urgency for events and launches v1.2.8
1.3.3 trunk 1.0.0 1.0.1 1.0.2 1.0.3 1.0.4 1.0.5 1.0.6 1.0.7 1.0.8 1.0.9 1.1.0 1.1.1 1.1.2 1.1.3 1.1.4 1.1.5 1.1.6 1.1.7 1.2.0 1.2.1 1.2.2 1.2.3 1.2.4 All 32 releases
← All changes | plugin.php +115 -120 1.0.71.2.8 View file →
@@ -1,139 +1,134 @@
1 1 <?php
2 +
2 3 /**
3 - * Plugin Name: Countdown Time
4 + * Plugin Name: Countdown Timer - Block
4 5 * Description: Display your events date into a timer to your visitor with countdown time block
5 - * Version: 1.0.7
6 - * Author: bPlugins LLC
7 - * Author URI: http://bplugins.com
6 + * Version: 1.2.8
7 + * Author: bPlugins
8 + * Author URI: https://bplugins.com
8 9 * License: GPLv3
9 - * License URI: https://www.gnu.org/licenses/gpl-2.0.txt
10 + * License URI: https://www.gnu.org/licenses/gpl-3.0.txt
10 11 * Text Domain: countdown-time
11 12 */
12 -
13 13 // ABS PATH
14 -if ( !defined( 'ABSPATH' ) ) { exit; }
15 -
16 -// Constant
17 -define( 'CTB_PLUGIN_VERSION', 'localhost' === $_SERVER['HTTP_HOST'] ? time() : '1.0.7' );
18 -define( 'CTB_ASSETS_DIR', plugin_dir_url( __FILE__ ) . 'assets/' );
19 -
20 -// Generate Styles
21 -class CTBStyleGenerator {
22 - public static $styles = [];
23 - public static function addStyle( $selector, $styles ){
24 - if( array_key_exists( $selector, self::$styles ) ){
25 - self::$styles[$selector] = wp_parse_args( self::$styles[$selector], $styles );
26 - }else { self::$styles[$selector] = $styles; }
27 - }
28 - public static function renderStyle(){
29 - $output = '';
30 - foreach( self::$styles as $selector => $style ){
31 - $new = '';
32 - foreach( $style as $property => $value ){
33 - if( $value == '' ){ $new .= $property; }else { $new .= " $property: $value;"; }
14 +if ( !defined( 'ABSPATH' ) ) {
15 + exit;
16 +}
17 +if ( function_exists( 'ctb_fs' ) ) {
18 + register_activation_hook( __FILE__, function () {
19 + if ( is_plugin_active( 'countdown-time/plugin.php' ) ) {
20 + deactivate_plugins( 'countdown-time/plugin.php' );
21 + }
22 + if ( is_plugin_active( 'countdown-time-pro/plugin.php' ) ) {
23 + deactivate_plugins( 'countdown-time-pro/plugin.php' );
24 + }
25 + } );
26 +} else {
27 + define( 'CTB_VERSION', ( isset( $_SERVER['HTTP_HOST'] ) && 'localhost' === $_SERVER['HTTP_HOST'] ? time() : '1.2.8' ) );
28 + define( 'CTB_DIR_URL', plugin_dir_url( __FILE__ ) );
29 + define( 'CTB_DIR_PATH', plugin_dir_path( __FILE__ ) );
30 + define( 'CTB_HAS_FREE', 'countdown-time/plugin.php' === plugin_basename( __FILE__ ) );
31 + define( 'CTB_HAS_PRO', 'countdown-time-pro/plugin.php' === plugin_basename( __FILE__ ) );
32 + if ( !function_exists( 'ctb_fs' ) ) {
33 + function ctb_fs() {
34 + global $ctb_fs;
35 + if ( !isset( $ctb_fs ) ) {
36 + $fsStartPath = dirname( __FILE__ ) . '/freemius/start.php';
37 + $bSDKInitPath = dirname( __FILE__ ) . '/bplugins_sdk/init.php';
38 + if ( CTB_HAS_PRO && file_exists( $fsStartPath ) ) {
39 + require_once $fsStartPath;
40 + } else {
41 + if ( CTB_HAS_FREE && file_exists( $bSDKInitPath ) ) {
42 + require_once $bSDKInitPath;
43 + }
44 + }
45 + $ctbConfig = [
46 + 'id' => '14562',
47 + 'slug' => 'countdown-time',
48 + 'premium_slug' => 'countdown-time-pro',
49 + 'type' => 'plugin',
50 + 'public_key' => 'pk_7f62446a2a53154c56c36346db2fa',
51 + 'is_premium' => false,
52 + 'premium_suffix' => 'Pro',
53 + 'has_premium_version' => true,
54 + 'has_addons' => false,
55 + 'has_paid_plans' => true,
56 + 'trial' => [
57 + 'days' => 7,
58 + 'is_require_payment' => true,
59 + ],
60 + 'menu' => [
61 + 'slug' => 'edit.php?post_type=ctb',
62 + 'contact' => false,
63 + 'support' => false,
64 + ],
65 + ];
66 + $ctb_fs = ( CTB_HAS_PRO && file_exists( $fsStartPath ) ? fs_dynamic_init( $ctbConfig ) : fs_lite_dynamic_init( $ctbConfig ) );
34 67 }
35 - $output .= "$selector { $new }";
68 + return $ctb_fs;
36 69 }
37 - return $output;
70 +
71 + ctb_fs();
72 + do_action( 'ctb_fs_loaded' );
38 73 }
39 -}
40 -
41 -// Countdown Time
42 -class CTBCountdownTimeBlock{
43 - protected static $_instance = null;
44 -
45 - function __construct(){
46 - add_action( 'init', [$this, 'register'] );
74 + function ctbIsPremium() {
75 + return ( CTB_HAS_PRO ? ctb_fs()->can_use_premium_code() : false );
47 76 }
48 77
49 - public static function instance(){
50 - if( self::$_instance === null ){
51 - self::$_instance = new self();
78 + require_once CTB_DIR_PATH . '/includes/pattern.php';
79 + require_once CTB_DIR_PATH . '/includes/CustomPost.php';
80 + require_once CTB_DIR_PATH . '/includes/HelpPage.php';
81 + // if( CTB_HAS_FREE ){
82 + // require_once CTB_DIR_PATH . '/includes/UpgradePage.php';
83 + // }
84 + class CTBPlugin {
85 + function __construct() {
86 + add_action( 'init', [$this, 'onInit'] );
87 + add_action( 'wp_ajax_ctbPipeChecker', [$this, 'ctbPipeChecker'] );
88 + add_action( 'wp_ajax_nopriv_ctbPipeChecker', [$this, 'ctbPipeChecker'] );
89 + add_action( 'admin_init', [$this, 'registerSettings'] );
90 + add_action( 'rest_api_init', [$this, 'registerSettings'] );
91 + add_filter( 'block_categories_all', [$this, 'blockCategories'] );
52 92 }
53 - return self::$_instance;
54 - }
55 93
56 - function register() {
57 - wp_register_style( 'ctb-countdown-time-editor-style', plugins_url( 'dist/editor.css', __FILE__ ), [ 'wp-edit-blocks' ], CTB_PLUGIN_VERSION ); // Backend Style
58 - wp_register_style( 'ctb-countdown-time-style', plugins_url( 'dist/style.css', __FILE__ ), [ 'wp-editor' ], CTB_PLUGIN_VERSION ); // Frontend Style
94 + function onInit() {
95 + register_block_type( __DIR__ . '/build' );
96 + }
59 97
60 - register_block_type( __DIR__, [
61 - 'editor_style' => 'ctb-countdown-time-editor-style',
62 - 'style' => 'ctb-countdown-time-style',
63 - 'render_callback' => [$this, 'render']
64 - ] ); // Register Block
65 -
66 - wp_set_script_translations( 'ctb-countdown-time-editor-script', 'countdown-time', plugin_dir_path( __FILE__ ) . 'languages' ); // Translate
67 - }
98 + function ctbPipeChecker() {
99 + $nonce = $_POST['_wpnonce'] ?? null;
100 + if ( !wp_verify_nonce( $nonce, 'wp_ajax' ) ) {
101 + wp_send_json_error( 'Invalid Request' );
102 + }
103 + wp_send_json_success( [
104 + 'isPipe' => ctbIsPremium(),
105 + ] );
106 + }
68 107
69 - function render( $attributes ){
70 - extract( $attributes );
108 + function registerSettings() {
109 + register_setting( 'ctbUtils', 'ctbUtils', [
110 + 'show_in_rest' => [
111 + 'name' => 'ctbUtils',
112 + 'schema' => [
113 + 'type' => 'string',
114 + ],
115 + ],
116 + 'type' => 'string',
117 + 'default' => wp_json_encode( [
118 + 'nonce' => wp_create_nonce( 'wp_ajax' ),
119 + ] ),
120 + 'sanitize_callback' => 'sanitize_text_field',
121 + ] );
122 + }
71 123
72 - $countdownStyle = new CTBStyleGenerator(); // Generate Styles
73 - $countdownStyle::addStyle( "#ctbCountdownTime-$cId", [
74 - 'align-items' => $alignment,
75 - 'justify-content' => $alignment
76 - ] );
77 - $countdownStyle::addStyle( "#ctbCountdownTime-$cId .countdownItems", [
78 - 'width' => '0px' === $width || '0%' === $width || '0em' === $width ? 'auto' : $width,
79 - $background['styles'] ?? 'background-color: #0000;' => '',
80 - 'padding' => $padding['styles'] ?? '10px 15px',
81 - 'box-shadow' => $shadow['styles'] ?? 'none',
82 - 'justify-content' => $boxPosition
83 - ] );
84 - $countdownStyle::addStyle( "#ctbCountdownTime-$cId .countdownItems .countdownItem", [
85 - $boxBG['styles'] ?? 'background-image: linear-gradient(135deg, #4527a4, #8344c5);' => '',
86 - 'width' => $boxWidth,
87 - 'height' => $boxHeight,
88 - 'margin-left' => "calc( $boxSpace / 2 )",
89 - 'margin-right' => "calc( $boxSpace / 2 )",
90 - $boxBorder['styles'] ?? 'border-radius: 5%;' => '',
91 - 'box-shadow' => $boxShadow['styles'] ?? '0 0 0 0 #0000'
92 - ] );
93 - $countdownStyle::addStyle( "#ctbCountdownTime-$cId .countdownItems .separator::before", [
94 - 'content' => "'$sepType'",
95 - 'font-size' => $sepSize . 'px',
96 - 'color' => $sepColor
97 - ] );
98 - $countdownStyle::addStyle( "#ctbCountdownTime-$cId .countdownItems .countdownItem .digit", [
99 - 'color' => $digitColor,
100 - $digitTypo['styles'] ?? 'font-size: 48px;' => ''
101 - ] );
102 - $countdownStyle::addStyle( "#ctbCountdownTime-$cId .countdownItems .countdownItem .label", [
103 - 'color' => $labelColor,
104 - $labelTypo['styles'] ?? 'font-size: 18px;' => ''
105 - ] );
124 + function blockCategories( $categories ) {
125 + return array_merge( [[
126 + 'slug' => 'CTBlock',
127 + 'title' => 'Countdown Time',
128 + ]], $categories );
129 + }
106 130
107 - $boxClass = $boxIsInline ? 'inline' : '';
131 + }
108 132
109 - ob_start(); ?>
110 - <div class='wp-block-ctb-countdown-time <?php echo 'align' . esc_attr( $align ); ?>' id='ctbCountdownTime-<?php echo esc_attr( $cId ) ?>' data-date="<?php echo esc_attr( wp_json_encode( [ 'destDate' => $destDate ] ) ); ?>">
111 - <style>@import url( <?php echo esc_url( $digitTypo['googleFontLink'] ?? '' ); ?> ); @import url( <?php echo esc_url( $labelTypo['googleFontLink'] ?? '' ); ?> ); <?php echo wp_kses( $countdownStyle::renderStyle(), [] ); ?>
112 - @media screen and ( max-width: 575px ) { #ctbCountdownTime-<?php echo esc_html( $cId ); ?> .countdownItems .countdownItem{
113 - margin-top: calc( <?php echo esc_html( $boxSpace ); ?> / 2 ); margin-bottom: calc( <?php echo esc_html( $boxSpace ); ?> / 2 );
114 - } }
115 - </style>
116 -
117 - <div class='countdownItems'>
118 - <?php $this->box( $isDays, "countdownDays $boxClass", $isLabels, $daysLabel ); ?>
119 - <?php echo $isSep && $isDays && ( $isHours || $isMinutes || $isSeconds ) ? "<span class='separator'></span>" : ''; ?>
120 - <?php $this->box( $isHours, "countdownHours $boxClass", $isLabels, $hoursLabel ); ?>
121 - <?php echo $isSep && $isHours && ( $isMinutes || $isSeconds ) ? "<span class='separator'></span>" : ''; ?>
122 - <?php $this->box( $isMinutes, "countdownMinutes $boxClass", $isLabels, $minutesLabel ); ?>
123 - <?php echo $isSep && $isMinutes && $isSeconds ? "<span class='separator'></span>" : ''; ?>
124 - <?php $this->box( $isSeconds, "countdownSeconds $boxClass", $isLabels, $secondsLabel ); ?>
125 - </div>
126 - </div>
127 -
128 - <?php $countdownStyle::$styles = []; // Empty styles
129 - return ob_get_clean();
130 - } // Render
131 -
132 - function box( $is, $boxClass, $isLabels, $label ){
133 - if( $is ){ ?><div class='countdownItem <?php echo esc_attr( $boxClass ) ?>'>
134 - <span class='digit'>00</span>
135 - <?php echo $isLabels ? "<span class='label'>". wp_kses_post( $label ) ."</span>" : ''; ?>
136 - </div><?php }
137 - } // Box
138 -}
139 -CTBCountdownTimeBlock::instance();
133 + new CTBPlugin();
134 +}