| 123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223 |
- <?php
- /**
- * Custom CSS and JS
- *
- */
- if ( ! defined( 'ABSPATH' ) ) {
- exit; // Exit if accessed directly
- }
- /**
- * CustomCSSandJS_Notices
- */
- class CustomCSSandJS_Notices {
- var $prefix = 'ccj_';
- var $activation_time = '';
- var $version = '';
- var $dismiss_notice = '';
- var $expiration_days = 2;
- /**
- * Constructor
- */
- public function __construct() {
- $this->set_variables();
- if ( $this->dismiss_notice == 1 ) {
- return;
- }
- $p = $this->prefix;
- add_action( 'admin_notices', array( $this, 'admin_notices' ) );
- add_action( 'wp_ajax_'.$p.'_notice_dismiss', array( $this, 'notice_dismiss' ) );
- }
- /**
- * Hooked from 'admin_notices'
- */
- public function admin_notices() {
- $screen = get_current_screen();
- if ( !isset($screen->post_type) || $screen->post_type !== 'custom-css-js' )
- return;
- if ( ! $notice = $this->choose_notice() )
- return;
- if ( time() - $this->activation_time <= 3600 )
- return;
- $message = $this->get_message( $notice );
- $this->print_message( $notice, $message );
-
- }
- /**
- * Get the options from the database or set them on install or upgrade
- */
- public function set_variables() {
- $now = time();
- $p = $this->prefix;
- $this->activation_time = get_option( $p . '_activation_time', '' );
- $this->version = get_option( $p.'_version', '' );
- $this->dismiss_notice = get_option( $p.'_dismiss_notice', false );
- if ( empty( $this->activation_time ) || version_compare( $this->version, CCJ_VERSION, '<' ) ) {
- $this->activation_time = $now;
- update_option( $p.'_activation_time', $now );
- update_option( $p.'_version', CCJ_VERSION );
- update_option( $p.'_dismiss_notice', false );
- }
- }
- /**
- * Choose which notice to be shown
- */
- public function choose_notice() {
- $now = time();
- $days_passed = ceil( ( $now - $this->activation_time ) / 86400 );
- switch ( $days_passed ) {
- case 0 : return '1_day';
- case 1 : return '2_day';
- case 2 : break; //return '3_day';
- case 3 : break;
- case 4 : break;
- case 5 : break;
- case 6 : break; // return '7_day';
- case 7 : break;
- case 8 : break;
- case 9 : break;
- case 10 : break;
- case 11 : break; //return '12_day';
- }
- }
- /**
- * Get the text of the message
- */
- public function get_message( $notice ) {
- $message = '';
- $percentage = '30';
- $product_name = 'Simple Custom CSS and JS PRO';
- $expiration_date = $this->activation_time + ( $this->expiration_days * 86400 );
- $expiration_date = date( get_option( 'date_format') , $expiration_date );
- $expiration_period = date('j M', $this->activation_time - 3*86400 ) . ' - ' . date('j M', $this->activation_time + 2*86400 );
- if ( $notice == '12_days' ) {
- $link = 'https://www.silkypress.com/simple-custom-css-js-pro/?utm_source=wordpress&utm_campaign=ccj_free&utm_medium=banner';
- } else {
- $link = 'https://www.silkypress.com/simple-custom-css-js-pro/?a=' . $this->convert_numbers_letters( $this->activation_time ) . '&utm_source=wordpress&utm_campaign=ccj_free&utm_medium=banner';
- }
- $lower_part = sprintf( '<div style="margin-top: 7px;"><a href="%s" target="_blank">%s</a> | <a href="#" class="dismiss_notice" target="_parent">%s</a></div>', $link, __('Get your discount now', 'custom-css-js'), __('Dismiss this notice', 'custom-css-js') );
- switch ( $notice ) {
- case '1_day' :
- $message = '<div>Only between '. $expiration_period .': <b>'.$percentage.'% Off from <a href="'.$link.'" target="_blank">'.$product_name.'</a></b> for our WordPress.org users.</div>' . $lower_part;
- break;
- case '2_day' :
- $message = '<div><b>Limited offer ending today</b>. '.$percentage.'% Off from <a href="'.$link.'" target="_blank">'.$product_name.'</a> for our WordPress.org users. </div>' . $lower_part;
- break;
- case '3_day' :
- $message = '<div><b>Limited offer ending today</b>. '.$percentage.'% Off from '.$product_name.' for our WordPress.org users. </div>' . $lower_part;
- break;
- case '7_day' :
- $message = '';
- break;
- case '12_day' :
- $message = '<div><b>Special Offer</b>: 30% Off from '.$product_name.' for our WordPress.org users.</div>' . $lower_part;
- break;
- }
- return $message;
- }
- /**
- * Print the message
- */
- public function print_message( $option_name = '', $message = '' ) {
- if ( empty( $message ) || empty( $option_name ) )
- return;
- $p = $this->prefix;
- ?>
- <style type="text/css">
- .<?php echo $p; ?>_note{ color: #bc1117; }
- #<?php echo $p; ?>_notice { display: block; padding: }
- #<?php echo $p; ?>_notice b { color: #bc1117; }
- #<?php echo $p; ?>_notice a { text-decoration: none; font-weight: bold; }
- #<?php echo $p; ?>_notice a.dismiss_notice { font-weight: normal; }
- </style>
- <script type='text/javascript'>
- jQuery(function($){
- $(document).on( 'click', '.<?php echo $p; ?>_notice .dismiss_notice', function() {
- var data = {
- action: '<?php echo $p; ?>_notice_dismiss',
- option: '<?php echo $option_name; ?>',
- nonce: $(this).parent().parent().data('nonce'),
- };
- $.post(ajaxurl, data, function(response ) {
- $('#<?php echo $p; ?>_notice').fadeOut('slow');
- });
- });
- });
- </script>
- <div id="<?php echo $p; ?>_notice" class="updated notice <?php echo $p; ?>_notice is-dismissible" data-nonce="<?php echo wp_create_nonce( $this->prefix .'_notice'); ?>">
- <p><?php echo $message ?></p>
- <button type="button" class="notice-dismiss">
- <span class="screen-reader-text"><?php _e('Dismiss this notice'); ?></span>
- </button>
- </div>
- <?php
- }
- function convert_numbers_letters( $text, $from = 'numbers' ) {
- $alphabet = str_split('abcdefghij');
- $numbers = str_split('0123456789');
- if ( $from == 'numbers' ) {
- return str_replace( $numbers, $alphabet, $text );
- } else {
- return str_replace( $alphabet, $numbers, $text );
- }
- }
- /**
- * Ajax response for `notice_dismiss` action
- */
- function notice_dismiss() {
- $p = $this->prefix;
- check_ajax_referer( $p . '_notice', 'nonce' );
- update_option( $p.'_dismiss_notice', 1 );
- wp_die();
- }
- }
- return new CustomCSSandJS_Notices();
|