Uji Countdown - Version 2.0.7

Version Description

  • Fixed Secured from XSS vulnerability with admin logged credentials (Thanks to Yorick)
  • Fixed Google font link issue
  • Fixed widget compatibility with PHP7+
Download this release

Release Info

Developer ujimoto
Plugin Icon 128x128 Uji Countdown
Version 2.0.7
Comparing to
See all releases

Code changes from version 2.0.6 to 2.0.7

Files changed (90) hide show
  1. README.txt +7 -2
  2. assets/banner-1544x500.png +0 -0
  3. assets/banner-772x250.png +0 -0
  4. assets/css/admin.css +0 -0
  5. assets/css/jquery-ui-custom.css +0 -0
  6. assets/css/jquery-ui.min.css +0 -0
  7. assets/css/pink.css +0 -0
  8. assets/css/pink.png +0 -0
  9. assets/css/pink@2x.png +0 -0
  10. assets/css/uji-box-bg.png +0 -0
  11. assets/css/ujic-style.css +0 -0
  12. assets/googlefonts.php +0 -0
  13. assets/images/align-center.png +0 -0
  14. assets/images/align-left.png +0 -0
  15. assets/images/align-none.png +0 -0
  16. assets/images/align-right.png +0 -0
  17. assets/images/back.jpg +0 -0
  18. assets/images/classic.png +0 -0
  19. assets/images/classic@2.png +0 -0
  20. assets/images/custom.png +0 -0
  21. assets/images/custom@2.png +0 -0
  22. assets/images/data-picker.png +0 -0
  23. assets/images/data-picker@2.png +0 -0
  24. assets/images/icon-custom.png +0 -0
  25. assets/images/icon-email.png +0 -0
  26. assets/images/icon-font.png +0 -0
  27. assets/images/icon-glob.png +0 -0
  28. assets/images/icon-mob.png +0 -0
  29. assets/images/icon-rec.png +0 -0
  30. assets/images/icon-rtl.png +0 -0
  31. assets/images/icon-wp.png +0 -0
  32. assets/images/jq_UI/ui-bg_flat_0_aaaaaa_40x100.png +0 -0
  33. assets/images/jq_UI/ui-bg_flat_75_ffffff_40x100.png +0 -0
  34. assets/images/jq_UI/ui-bg_glass_55_fbf9ee_1x400.png +0 -0
  35. assets/images/jq_UI/ui-bg_glass_65_ffffff_1x400.png +0 -0
  36. assets/images/jq_UI/ui-bg_glass_75_dadada_1x400.png +0 -0
  37. assets/images/jq_UI/ui-bg_glass_75_e6e6e6_1x400.png +0 -0
  38. assets/images/jq_UI/ui-bg_glass_95_fef1ec_1x400.png +0 -0
  39. assets/images/jq_UI/ui-bg_highlight-soft_75_cccccc_1x100.png +0 -0
  40. assets/images/jq_UI/ui-icons_222222_256x240.png +0 -0
  41. assets/images/jq_UI/ui-icons_2e83ff_256x240.png +0 -0
  42. assets/images/jq_UI/ui-icons_454545_256x240.png +0 -0
  43. assets/images/jq_UI/ui-icons_888888_256x240.png +0 -0
  44. assets/images/jq_UI/ui-icons_cd0a0a_256x240.png +0 -0
  45. assets/images/slider-control.png +0 -0
  46. assets/images/ucount-icon.png +0 -0
  47. assets/images/ucount-icon@x2.png +0 -0
  48. assets/images/ujic-ps.jpg +0 -0
  49. assets/images/ujic-ps2.jpg +0 -0
  50. assets/images/ujic-ps3.png +0 -0
  51. assets/index.php +0 -0
  52. assets/js/admin.js +0 -0
  53. assets/js/jquery.icheck.min.js +0 -0
  54. assets/js/ujic-popup-button.js +0 -0
  55. assets/js/widget.js +0 -0
  56. classes/UjiSubscriptionsTable.php +0 -0
  57. classes/class-uji-countdown-admin.php +28 -5
  58. classes/class-uji-countdown-front.php +0 -0
  59. classes/class-uji-countdown.php +9 -3
  60. classes/class-uji-widget.php +40 -30
  61. css/uji-countdown.css +0 -0
  62. js/jquery.countdown.js +0 -0
  63. js/uji-countdown.js +1 -1
  64. js/uji-newsletter.js +0 -0
  65. lang/index.php +0 -0
  66. lang/uji-countdown-de_DE.mo +0 -0
  67. lang/uji-countdown-de_DE.po +0 -0
  68. lang/uji-countdown-en_EN.mo +0 -0
  69. lang/uji-countdown-en_EN.po +0 -0
  70. lang/uji-countdown-en_US.mo +0 -0
  71. lang/uji-countdown-en_US.pot +0 -0
  72. lang/uji-countdown-es_ES.mo +0 -0
  73. lang/uji-countdown-es_ES.po +0 -0
  74. lang/uji-countdown-fr_FR.mo +0 -0
  75. lang/uji-countdown-fr_FR.po +0 -0
  76. lang/uji-countdown-hu_HU.mo +0 -0
  77. lang/uji-countdown-hu_HU.po +0 -0
  78. lang/uji-countdown-it_IT.mo +0 -0
  79. lang/uji-countdown-it_IT.po +0 -0
  80. lang/uji-countdown-nl_NL.mo +0 -0
  81. lang/uji-countdown-nl_NL.po +0 -0
  82. lang/uji-countdown-ro_RO.mo +0 -0
  83. lang/uji-countdown-ro_RO.po +0 -0
  84. lang/uji-countdown-ru_RU.mo +0 -0
  85. lang/uji-countdown-ru_RU.po +0 -0
  86. ujicountdown.php +2 -2
  87. uninstall.php +0 -0
  88. views/admin.php +0 -0
  89. views/index.php +0 -0
  90. views/public.php +0 -0
README.txt CHANGED
@@ -3,8 +3,8 @@ Contributors: ujimoto
3
  Donate link: http://www.wpmanage.com/uji-countdown
4
  Tags: countdown, counter, html5 countdown, animated countdown, countdown timer, count down, countdown clock, jQuery countdown, clock, timer, recurring timer
5
  Requires at least: 3.0
6
- Tested up to: 4.4
7
- Stable tag: 2.0.6
8
 
9
  Uji Countdown - HTML5 Customizable Countdown Timer
10
 
@@ -51,6 +51,11 @@ Please feel free to visit our [demo site](http://wpmanage.com/project/ujicountdo
51
 
52
  == Changelog ==
53
 
 
 
 
 
 
54
  = 2.0.6 =
55
  * Fixed datapicker arrows to switch month
56
  * Fixed https URL redirection
3
  Donate link: http://www.wpmanage.com/uji-countdown
4
  Tags: countdown, counter, html5 countdown, animated countdown, countdown timer, count down, countdown clock, jQuery countdown, clock, timer, recurring timer
5
  Requires at least: 3.0
6
+ Tested up to: 4.5.3
7
+ Stable tag: 2.0.7
8
 
9
  Uji Countdown - HTML5 Customizable Countdown Timer
10
 
51
 
52
  == Changelog ==
53
 
54
+ = 2.0.7 =
55
+ * Fixed Secured from XSS vulnerability with admin logged credentials (Thanks to Yorick)
56
+ * Fixed Google font link issue
57
+ * Fixed widget compatibility with PHP7+
58
+
59
  = 2.0.6 =
60
  * Fixed datapicker arrows to switch month
61
  * Fixed https URL redirection
assets/banner-1544x500.png CHANGED
File without changes
assets/banner-772x250.png CHANGED
File without changes
assets/css/admin.css CHANGED
File without changes
assets/css/jquery-ui-custom.css CHANGED
File without changes
assets/css/jquery-ui.min.css CHANGED
File without changes
assets/css/pink.css CHANGED
File without changes
assets/css/pink.png CHANGED
File without changes
assets/css/pink@2x.png CHANGED
File without changes
assets/css/uji-box-bg.png CHANGED
File without changes
assets/css/ujic-style.css CHANGED
File without changes
assets/googlefonts.php CHANGED
File without changes
assets/images/align-center.png CHANGED
File without changes
assets/images/align-left.png CHANGED
File without changes
assets/images/align-none.png CHANGED
File without changes
assets/images/align-right.png CHANGED
File without changes
assets/images/back.jpg CHANGED
File without changes
assets/images/classic.png CHANGED
File without changes
assets/images/classic@2.png CHANGED
File without changes
assets/images/custom.png CHANGED
File without changes
assets/images/custom@2.png CHANGED
File without changes
assets/images/data-picker.png CHANGED
File without changes
assets/images/data-picker@2.png CHANGED
File without changes
assets/images/icon-custom.png CHANGED
File without changes
assets/images/icon-email.png CHANGED
File without changes
assets/images/icon-font.png CHANGED
File without changes
assets/images/icon-glob.png CHANGED
File without changes
assets/images/icon-mob.png CHANGED
File without changes
assets/images/icon-rec.png CHANGED
File without changes
assets/images/icon-rtl.png CHANGED
File without changes
assets/images/icon-wp.png CHANGED
File without changes
assets/images/jq_UI/ui-bg_flat_0_aaaaaa_40x100.png CHANGED
File without changes
assets/images/jq_UI/ui-bg_flat_75_ffffff_40x100.png CHANGED
File without changes
assets/images/jq_UI/ui-bg_glass_55_fbf9ee_1x400.png CHANGED
File without changes
assets/images/jq_UI/ui-bg_glass_65_ffffff_1x400.png CHANGED
File without changes
assets/images/jq_UI/ui-bg_glass_75_dadada_1x400.png CHANGED
File without changes
assets/images/jq_UI/ui-bg_glass_75_e6e6e6_1x400.png CHANGED
File without changes
assets/images/jq_UI/ui-bg_glass_95_fef1ec_1x400.png CHANGED
File without changes
assets/images/jq_UI/ui-bg_highlight-soft_75_cccccc_1x100.png CHANGED
File without changes
assets/images/jq_UI/ui-icons_222222_256x240.png CHANGED
File without changes
assets/images/jq_UI/ui-icons_2e83ff_256x240.png CHANGED
File without changes
assets/images/jq_UI/ui-icons_454545_256x240.png CHANGED
File without changes
assets/images/jq_UI/ui-icons_888888_256x240.png CHANGED
File without changes
assets/images/jq_UI/ui-icons_cd0a0a_256x240.png CHANGED
File without changes
assets/images/slider-control.png CHANGED
File without changes
assets/images/ucount-icon.png CHANGED
File without changes
assets/images/ucount-icon@x2.png CHANGED
File without changes
assets/images/ujic-ps.jpg CHANGED
File without changes
assets/images/ujic-ps2.jpg CHANGED
File without changes
assets/images/ujic-ps3.png CHANGED
File without changes
assets/index.php CHANGED
File without changes
assets/js/admin.js CHANGED
File without changes
assets/js/jquery.icheck.min.js CHANGED
File without changes
assets/js/ujic-popup-button.js CHANGED
File without changes
assets/js/widget.js CHANGED
File without changes
classes/UjiSubscriptionsTable.php CHANGED
File without changes
classes/class-uji-countdown-admin.php CHANGED
@@ -218,6 +218,8 @@ class Uji_Countdown_Admin {
218
  $cnt .= $this->cform_input( __( 'Error Message', $this->plugin_slug ), 'ujic_subscrFrmErrorMessage', $vars['ujic_subscrFrmErrorMessage'] );
219
 
220
  $cnt .= $this->cform_buttons();
 
 
221
 
222
  $cnt .= '</form>';
223
 
@@ -568,14 +570,14 @@ class Uji_Countdown_Admin {
568
  if ( $this->cform_is_create() ) {
569
  if ( $this->cform_errors() ) {
570
  $this->ins_ujic_db( $_POST );
571
- $this->ujic_message( __( "Your Timer Style Was Created", $this->plugin_slug ) );
572
  echo '<script type="text/javascript"> ujic_admin_home(); </script>';
573
  }
574
  }
575
  if ( isset( $_POST ) && !empty( $_POST ) && $this->cform_is_edit() ) {
576
  if ( $this->cform_errors() ) {
577
  $this->upd_ujic_db( $_POST, $_GET['edit'] );
578
- $this->ujic_message( __( "Your Timer Style Was Updated", $this->plugin_slug ) );
579
  }
580
  }
581
  }
@@ -636,10 +638,13 @@ class Uji_Countdown_Admin {
636
  * @since 2.0
637
  */
638
  public function cform_is_create() {
639
- if ( isset( $_POST ) && !empty( $_POST ) && isset( $_GET['save'] ) && !empty( $_GET['save'] ) && $_GET['save'] == 'true' )
 
 
640
  return true;
641
- else
642
  return false;
 
643
  }
644
 
645
  /**
@@ -734,6 +739,8 @@ class Uji_Countdown_Admin {
734
  }
735
  $cnt .= get_submit_button( __( "Save Changes", $this->plugin_slug ), 'primary', 'submit_ujic', true );
736
 
 
 
737
  $cnt .= '</form>';
738
 
739
  echo $this->custom_metabox( __( "Timer Settings", $this->plugin_slug ), $cnt, 'ujic-create ujic-settings' );
@@ -746,7 +753,10 @@ class Uji_Countdown_Admin {
746
  */
747
  public function save_timerset() {
748
  if ( isset( $_POST ) && !empty( $_POST ) && isset( $_GET['saveset'] ) && !empty( $_GET['saveset'] ) && $_GET['saveset'] == 'true' ){
749
- $settings = $_POST;
 
 
 
750
  unset($settings['submit_ujic']);
751
  update_option('ujic_set', $settings);
752
  $this->ujic_message( __("Settings saved.", $this->plugin_slug ) );
@@ -788,5 +798,18 @@ class Uji_Countdown_Admin {
788
  echo $this->custom_metabox( __( 'Subscribers List', $this->plugin_slug ), $htmlContent , 'ujic-create ujic-subscribers' );
789
 
790
  }
 
 
 
 
 
 
 
 
 
 
 
 
 
791
 
792
  }
218
  $cnt .= $this->cform_input( __( 'Error Message', $this->plugin_slug ), 'ujic_subscrFrmErrorMessage', $vars['ujic_subscrFrmErrorMessage'] );
219
 
220
  $cnt .= $this->cform_buttons();
221
+
222
+ $cnt .= wp_nonce_field( 'ujic_secure', 'ujic_secure_form', true, false );
223
 
224
  $cnt .= '</form>';
225
 
570
  if ( $this->cform_is_create() ) {
571
  if ( $this->cform_errors() ) {
572
  $this->ins_ujic_db( $_POST );
573
+ $this->ujic_message( __( "Your Timer Style Has Been Created", $this->plugin_slug ) );
574
  echo '<script type="text/javascript"> ujic_admin_home(); </script>';
575
  }
576
  }
577
  if ( isset( $_POST ) && !empty( $_POST ) && $this->cform_is_edit() ) {
578
  if ( $this->cform_errors() ) {
579
  $this->upd_ujic_db( $_POST, $_GET['edit'] );
580
+ $this->ujic_message( __( "Your Timer Has Been Updated", $this->plugin_slug ) );
581
  }
582
  }
583
  }
638
  * @since 2.0
639
  */
640
  public function cform_is_create() {
641
+ if ( isset( $_POST ) && !empty( $_POST ) && isset( $_GET['save'] ) && !empty( $_GET['save'] ) && $_GET['save'] == 'true' ){
642
+ //2.0.7 Fix Cross-Site Request Forgery attacks
643
+ self::ujic_secure( 'ujic_secure', 'ujic_secure_form', $_POST );
644
  return true;
645
+ }else{
646
  return false;
647
+ }
648
  }
649
 
650
  /**
739
  }
740
  $cnt .= get_submit_button( __( "Save Changes", $this->plugin_slug ), 'primary', 'submit_ujic', true );
741
 
742
+ $cnt .= wp_nonce_field( 'ujic_secureset', 'ujic_secureset_form', true, false );
743
+
744
  $cnt .= '</form>';
745
 
746
  echo $this->custom_metabox( __( "Timer Settings", $this->plugin_slug ), $cnt, 'ujic-create ujic-settings' );
753
  */
754
  public function save_timerset() {
755
  if ( isset( $_POST ) && !empty( $_POST ) && isset( $_GET['saveset'] ) && !empty( $_GET['saveset'] ) && $_GET['saveset'] == 'true' ){
756
+ //2.0.7 Fix Cross-Site Request Forgery attacks
757
+ self::ujic_secure( 'ujic_secureset', 'ujic_secureset_form', $_POST );
758
+
759
+ $settings = wp_kses_allowed_html( $_POST );
760
  unset($settings['submit_ujic']);
761
  update_option('ujic_set', $settings);
762
  $this->ujic_message( __("Settings saved.", $this->plugin_slug ) );
798
  echo $this->custom_metabox( __( 'Subscribers List', $this->plugin_slug ), $htmlContent , 'ujic-create ujic-subscribers' );
799
 
800
  }
801
+
802
+ /**
803
+ * Secure against Cross-Site Request Forgery
804
+ *
805
+ * @since 2.0.7
806
+ */
807
+ public function ujic_secure( $secure, $secure_filed, $posts ) {
808
+ if ( ! isset( $posts[$secure_filed] )
809
+ || ! wp_verify_nonce( $posts[$secure_filed], $secure )
810
+ ) {
811
+ wp_die( __( 'Cheatin&#8217; huh?', 'ujicountdown' ) );
812
+ }
813
+ }
814
 
815
  }
classes/class-uji-countdown-front.php CHANGED
File without changes
classes/class-uji-countdown.php CHANGED
@@ -361,11 +361,14 @@ class Uji_Countdown extends Uji_Countdown_Admin
361
  */
362
  public function ins_ujic_db( $posts ) {
363
  global $wpdb;
364
-
 
 
 
365
  $options = array();
366
  $default = $this->ujic_option();
367
  foreach ( $posts as $name => $val ) {
368
- $options[$name] = (!empty( $val ) ) ? $val : $default[$name];
369
  }
370
  $title = $options['ujic_name'];
371
  $style = $options['ujic_style'];
@@ -383,11 +386,14 @@ class Uji_Countdown extends Uji_Countdown_Admin
383
  */
384
  public function upd_ujic_db( $posts, $id ) {
385
  global $wpdb;
 
 
 
386
 
387
  $options = array();
388
  $default = $this->ujic_option();
389
  foreach ( $posts as $name => $val ) {
390
- $options[$name] = (!empty( $val ) ) ? $val : $default[$name];
391
  }
392
  $title = $options['ujic_name'];
393
  $style = $options['ujic_style'];
361
  */
362
  public function ins_ujic_db( $posts ) {
363
  global $wpdb;
364
+
365
+ //2.0.7 Fix Cross-Site Request Forgery attacks
366
+ self::ujic_secure( 'ujic_secure', 'ujic_secure_form', $posts );
367
+
368
  $options = array();
369
  $default = $this->ujic_option();
370
  foreach ( $posts as $name => $val ) {
371
+ $options[$name] = (!empty( $val ) ) ? esc_attr($val) : $default[$name];
372
  }
373
  $title = $options['ujic_name'];
374
  $style = $options['ujic_style'];
386
  */
387
  public function upd_ujic_db( $posts, $id ) {
388
  global $wpdb;
389
+
390
+ //2.0.7 Fix Cross-Site Request Forgery attacks
391
+ self::ujic_secure( 'ujic_secure', 'ujic_secure_form', $posts );
392
 
393
  $options = array();
394
  $default = $this->ujic_option();
395
  foreach ( $posts as $name => $val ) {
396
+ $options[$name] = (!empty( $val ) ) ? esc_attr($val) : $default[$name];
397
  }
398
  $title = $options['ujic_name'];
399
  $style = $options['ujic_style'];
classes/class-uji-widget.php CHANGED
@@ -1,18 +1,20 @@
1
  <?php
2
  /**
 
3
  *
4
- * Plugin Name: Uji Countdown Premium 2.0
5
- * Plugin URI: http://www.wpmanage.com/uji-countdown/
6
- * Description: HTML5 Countdown.
7
- * Version: 2.0
8
- * Author: WPmanage <info@wpmanage.com>
9
- * Author URI: http://www.wpmanage.com
10
  */
11
 
12
- class ujic_Widget extends WP_Widget {
 
 
13
 
14
- protected $plugin_slug = 'uji-countdown';
15
-
16
  /**
17
  * Uji Countdown Init
18
  *
@@ -20,12 +22,13 @@ class ujic_Widget extends WP_Widget {
20
  *
21
  * @var string
22
  */
23
- public function ujic_Widget() {
24
  $widget_ops = array(
25
  'classname' => 'uji_Widget',
26
  'description' => 'Uji Countdown widget.'
27
  );
28
- $this->WP_Widget( 'uji_Widget', 'Uji Countdown', $widget_ops );
 
29
 
30
  //actions
31
  add_action( 'plugins_loaded', array( &$this, 'load_textdomain' ) );
@@ -202,10 +205,17 @@ class ujic_Widget extends WP_Widget {
202
  );
203
 
204
  $instance = wp_parse_args( (array) $instance, $defaults );
205
- ?>
 
 
 
 
 
 
 
206
  <!-- Widget Title: Text Input -->
207
  <p>
208
- <label for="<?php echo $this->get_field_id( 'UJI_title' ); ?>"><?php _e( 'Title (optional):', $this->plugin_slug ); ?></label>
209
  <input type="text" name="<?php echo $this->get_field_name( 'UJI_title' ); ?>" value="<?php echo $instance['UJI_title']; ?>" class="widefat" id="<?php echo $this->get_field_id( 'UJI_title' ); ?>" />
210
  </p>
211
 
@@ -214,7 +224,7 @@ class ujic_Widget extends WP_Widget {
214
 
215
  <?php if ( $this->ujic_forms() ): ?>
216
 
217
- <label for="<?php echo $this->get_field_id( 'UJI_style' ); ?>"><?php _e( 'Select a Style:', $this->plugin_slug ); ?></label>
218
  <select name="<?php echo $this->get_field_name( 'UJI_style' ); ?>" class="widefat" id="<?php echo $this->get_field_id( 'UJI_style' ); ?>">
219
  <?php
220
  echo $this->ujic_forms( $instance['UJI_style'] );
@@ -223,7 +233,7 @@ class ujic_Widget extends WP_Widget {
223
 
224
  <?php else: ?>
225
 
226
- <h4 style="color: firebrick"><?php _e( 'Please create new timer style first.', $this->plugin_slug ); ?></h4>
227
 
228
  <?php endif; ?>
229
 
@@ -231,16 +241,16 @@ class ujic_Widget extends WP_Widget {
231
 
232
  <!-- Widget Date: Text Input -->
233
  <p>
234
- <label for="<?php echo $this->get_field_id( 'UJI_date' ); ?>"><?php _e( 'Expire Date:', $this->plugin_slug ); ?></label>
235
- <input type="text" name="<?php echo $this->get_field_name( 'UJI_date' ); ?>" value="<?php echo $instance['UJI_date']; ?>" style="background: url('<?php echo UJICOUNTDOWN_URL ?>/assets/tinymce/images/data-picker.png') no-repeat scroll right top; display:block; height: 26px; width: 180px;" class="widefat ujic_date" id="<?php echo $this->get_field_id( 'UJI_date' ); ?>" />
236
  </p>
237
 
238
  <!-- Widget Select Time: Select Input -->
239
  <p>
240
- <label><?php _e( 'Select the Time:', $this->plugin_slug ); ?></label>
241
  <div style="display: block;">
242
  <div style="display: inline-block; margin: 0 5px 0 5px">
243
- <h4 style="margin:0"><?php _e( 'Hour:', $this->plugin_slug ); ?> </h4>
244
  <select name="<?php echo $this->get_field_name( 'UJI_hours' ); ?>" style="width:50px;" id="<?php echo $this->get_field_id( 'UJI_hours' ); ?>">
245
  <?php
246
  echo $this->ujic_sel_datetime( 23, $instance['UJI_hours'] );
@@ -249,7 +259,7 @@ class ujic_Widget extends WP_Widget {
249
  </div>
250
  :
251
  <div style="display: inline-block; margin: 0 5px 0 5px">
252
- <h4 style="margin:0"><?php _e( 'Minute:', $this->plugin_slug ); ?> </h4>
253
  <select name="<?php echo $this->get_field_name( 'UJI_minutes' ); ?>" style="width:50px;" id="<?php echo $this->get_field_id( 'UJI_minutes' ); ?>">
254
  <?php
255
  echo $this->ujic_sel_datetime( 59, $instance['UJI_minutes'] );
@@ -258,40 +268,40 @@ class ujic_Widget extends WP_Widget {
258
  </div>
259
  </div>
260
  </p>
261
- <h4><?php _e( 'After Expiry:', $this->plugin_slug ); ?> </h4>
262
  <!-- Widget Hide: Checkbox Input -->
263
  <p>
264
- <label for="<?php echo $this->get_field_id( 'UJI_hide' ); ?>"><?php _e( 'Hide Countdown:', $this->plugin_slug ); ?></label>
265
  <input class="ujic_exp" id="<?php echo $this->get_field_id( 'UJI_hide' ); ?>" name="<?php echo $this->get_field_name( 'UJI_hide' ); ?>" type="checkbox" value="hide" <?php checked( $instance['UJI_hide'], 'hide' ) ?> />
266
  </p>
267
 
268
  <!-- Widget Go to Link: Select Input -->
269
  <p>
270
- <label for="<?php echo $this->get_field_id( 'UJI_url' ); ?>"><?php _e( 'Or go to this link:', $this->plugin_slug ); ?></label><br />
271
- <small><?php _e( 'Select URL to send after expire', $this->plugin_slug ); ?></small>
272
  <input class="widefat ujic_link" id="<?php echo $this->get_field_id( 'UJI_url' ); ?>" name="<?php echo $this->get_field_name( 'UJI_url' ); ?>" type="text" value="<?php echo $instance['UJI_url']; ?>" />
273
  </p>
274
 
275
  <!-- Widget Select Reccuring Time -->
276
- <h4><?php _e( 'Reccuring Time:', $this->plugin_slug ); ?> </h4>
277
 
278
  <p style="display:block; float: none;">
279
- <span style="float:left; display: block; line-height: 28px; min-width: 55px; margin-right: 4px;">Every: </span><input class="small-text" style="float:left; padding: 3px 5px;" id="<?php echo $this->get_field_id( 'UJI_recurring' ); ?>" name="<?php echo $this->get_field_name( 'UJI_recurring' ); ?>" type="text" value="<?php echo $instance['UJI_recurring']; ?>" />
280
  <select name="<?php echo $this->get_field_name( 'UJI_rectype' ); ?>" id="<?php echo $this->get_field_id( 'UJI_rectype' ); ?>">
281
  <?php
282
  echo $this->ujic_times($instance['UJI_rectype']);
283
  ?>
284
  </select>
285
  <div style="display:block; float: none;">
286
- <span style="float:left; display: block; line-height: 28px; min-width: 55px; margin-right: 4px;">Repeats: </span><input class="small-text" style="float:left; padding: 3px 5px;" id="<?php echo $this->get_field_id( 'UJI_repeats' ); ?>" name="<?php echo $this->get_field_name( 'UJI_repeats' ); ?>" type="text" value="<?php echo $instance['UJI_repeats']; ?>" />
287
- <span style="display: inline-block; line-height: 28px; margin-left: 4px;"> leave it empty for unlimited </span>
288
  </div>
289
  </p>
290
 
291
  <!-- Widget Campaign name -->
292
- <h4><?php _e( 'Subscription:', $this->plugin_slug ); ?> </h4>
293
  <p>
294
- <label for="<?php echo $this->get_field_id( 'UJI_subscr' ); ?>"><?php _e( 'Campaign Name:', $this->plugin_slug ); ?></label><br />
295
  <input class="widefat ujic_subscr" id="<?php echo $this->get_field_id( 'UJI_subscr' ); ?>" name="<?php echo $this->get_field_name( 'UJI_subscr' ); ?>" type="text" value="<?php echo $instance['UJI_subscr']; ?>" />
296
  </p>
297
 
1
  <?php
2
  /**
3
+ * Uji Countdown Widget
4
  *
5
+ * Handles front-end/shorcodes Widgets
6
+ *
7
+ * @author WPmanage
8
+ * @category Widget
9
+ * @package Uji-Countdown/Classes
10
+ * @version 2.0
11
  */
12
 
13
+ if ( ! defined( 'ABSPATH' ) ) {
14
+ exit;
15
+ }
16
 
17
+ class ujic_Widget extends WP_Widget {
 
18
  /**
19
  * Uji Countdown Init
20
  *
22
  *
23
  * @var string
24
  */
25
+ public function __construct() {
26
  $widget_ops = array(
27
  'classname' => 'uji_Widget',
28
  'description' => 'Uji Countdown widget.'
29
  );
30
+ //WP 4.3.0
31
+ parent::__construct( 'uji_Widget', 'Uji Countdown', $widget_ops );
32
 
33
  //actions
34
  add_action( 'plugins_loaded', array( &$this, 'load_textdomain' ) );
205
  );
206
 
207
  $instance = wp_parse_args( (array) $instance, $defaults );
208
+
209
+ ?>
210
+
211
+ <p style="font-size:11px">
212
+ <strong>Only one timer on page is allowed. </strong><br>Check the <a href="http://www.wpmanage.com/uji-countdown" target="_blank">Pro version</a> for multiple countdown timers on the same page.
213
+ <p>
214
+
215
+
216
  <!-- Widget Title: Text Input -->
217
  <p>
218
+ <label for="<?php echo $this->get_field_id( 'UJI_title' ); ?>"><?php _e( 'Title (optional):', 'ujicountdown' ); ?></label>
219
  <input type="text" name="<?php echo $this->get_field_name( 'UJI_title' ); ?>" value="<?php echo $instance['UJI_title']; ?>" class="widefat" id="<?php echo $this->get_field_id( 'UJI_title' ); ?>" />
220
  </p>
221
 
224
 
225
  <?php if ( $this->ujic_forms() ): ?>
226
 
227
+ <label for="<?php echo $this->get_field_id( 'UJI_style' ); ?>"><?php _e( 'Select a Style:', 'ujicountdown' ); ?></label>
228
  <select name="<?php echo $this->get_field_name( 'UJI_style' ); ?>" class="widefat" id="<?php echo $this->get_field_id( 'UJI_style' ); ?>">
229
  <?php
230
  echo $this->ujic_forms( $instance['UJI_style'] );
233
 
234
  <?php else: ?>
235
 
236
+ <h4 style="color: firebrick"><?php _e( 'Please create new timer style first.', 'ujicountdown' ); ?></h4>
237
 
238
  <?php endif; ?>
239
 
241
 
242
  <!-- Widget Date: Text Input -->
243
  <p>
244
+ <label for="<?php echo $this->get_field_id( 'UJI_date' ); ?>"><?php _e( 'Expire Date:', 'ujicountdown' ); ?></label>
245
+ <input type="text" name="<?php echo $this->get_field_name( 'UJI_date' ); ?>" value="<?php echo $instance['UJI_date']; ?>" style="background: url('<?php echo UJICOUNTDOWN_URL ?>/assets/images/data-picker.png') no-repeat scroll right top; display:block; height: 26px; width: 180px;" class="widefat ujic_date" id="<?php echo $this->get_field_id( 'UJI_date' ); ?>" />
246
  </p>
247
 
248
  <!-- Widget Select Time: Select Input -->
249
  <p>
250
+ <label><?php _e( 'Select the Time:', 'ujicountdown' ); ?></label>
251
  <div style="display: block;">
252
  <div style="display: inline-block; margin: 0 5px 0 5px">
253
+ <h4 style="margin:0"><?php _e( 'Hour:', 'ujicountdown' ); ?> </h4>
254
  <select name="<?php echo $this->get_field_name( 'UJI_hours' ); ?>" style="width:50px;" id="<?php echo $this->get_field_id( 'UJI_hours' ); ?>">
255
  <?php
256
  echo $this->ujic_sel_datetime( 23, $instance['UJI_hours'] );
259
  </div>
260
  :
261
  <div style="display: inline-block; margin: 0 5px 0 5px">
262
+ <h4 style="margin:0"><?php _e( 'Minute:', 'ujicountdown' ); ?> </h4>
263
  <select name="<?php echo $this->get_field_name( 'UJI_minutes' ); ?>" style="width:50px;" id="<?php echo $this->get_field_id( 'UJI_minutes' ); ?>">
264
  <?php
265
  echo $this->ujic_sel_datetime( 59, $instance['UJI_minutes'] );
268
  </div>
269
  </div>
270
  </p>
271
+ <h4><?php _e( 'After Expiry:', 'ujicountdown' ); ?> </h4>
272
  <!-- Widget Hide: Checkbox Input -->
273
  <p>
274
+ <label for="<?php echo $this->get_field_id( 'UJI_hide' ); ?>"><?php _e( 'Hide Countdown:', 'ujicountdown' ); ?></label>
275
  <input class="ujic_exp" id="<?php echo $this->get_field_id( 'UJI_hide' ); ?>" name="<?php echo $this->get_field_name( 'UJI_hide' ); ?>" type="checkbox" value="hide" <?php checked( $instance['UJI_hide'], 'hide' ) ?> />
276
  </p>
277
 
278
  <!-- Widget Go to Link: Select Input -->
279
  <p>
280
+ <label for="<?php echo $this->get_field_id( 'UJI_url' ); ?>"><?php _e( 'Or go to this link:', 'ujicountdown' ); ?></label><br />
281
+ <small><?php _e( 'Select URL to send after expire', 'ujicountdown' ); ?></small>
282
  <input class="widefat ujic_link" id="<?php echo $this->get_field_id( 'UJI_url' ); ?>" name="<?php echo $this->get_field_name( 'UJI_url' ); ?>" type="text" value="<?php echo $instance['UJI_url']; ?>" />
283
  </p>
284
 
285
  <!-- Widget Select Reccuring Time -->
286
+ <h4><?php _e( 'Reccuring Time:', 'ujicountdown' ); ?> </h4>
287
 
288
  <p style="display:block; float: none;">
289
+ <span style="float:left; display: block; line-height: 28px; min-width: 55px; margin-right: 4px;"><?php _e( 'Every:', 'ujicountdown' ); ?> </span><input class="small-text" style="float:left; padding: 3px 5px;" id="<?php echo $this->get_field_id( 'UJI_recurring' ); ?>" name="<?php echo $this->get_field_name( 'UJI_recurring' ); ?>" type="text" value="<?php echo $instance['UJI_recurring']; ?>" />
290
  <select name="<?php echo $this->get_field_name( 'UJI_rectype' ); ?>" id="<?php echo $this->get_field_id( 'UJI_rectype' ); ?>">
291
  <?php
292
  echo $this->ujic_times($instance['UJI_rectype']);
293
  ?>
294
  </select>
295
  <div style="display:block; float: none;">
296
+ <span style="float:left; display: block; line-height: 28px; min-width: 55px; margin-right: 4px;"><?php _e( 'Repeats:', 'ujicountdown' ); ?> </span><input class="small-text" style="float:left; padding: 3px 5px;" id="<?php echo $this->get_field_id( 'UJI_repeats' ); ?>" name="<?php echo $this->get_field_name( 'UJI_repeats' ); ?>" type="text" value="<?php echo $instance['UJI_repeats']; ?>" />
297
+ <span style="display: inline-block; line-height: 28px; margin-left: 4px;"> <?php _e( 'leave it empty for unlimited', 'ujicountdown' ); ?> </span>
298
  </div>
299
  </p>
300
 
301
  <!-- Widget Campaign name -->
302
+ <h4><?php _e( 'Subscription:', 'ujicountdown' ); ?> </h4>
303
  <p>
304
+ <label for="<?php echo $this->get_field_id( 'UJI_subscr' ); ?>"><?php _e( 'Campaign Name:', 'ujicountdown' ); ?></label><br />
305
  <input class="widefat ujic_subscr" id="<?php echo $this->get_field_id( 'UJI_subscr' ); ?>" name="<?php echo $this->get_field_name( 'UJI_subscr' ); ?>" type="text" value="<?php echo $instance['UJI_subscr']; ?>" />
306
  </p>
307
 
css/uji-countdown.css CHANGED
File without changes
js/jquery.countdown.js CHANGED
File without changes
js/uji-countdown.js CHANGED
@@ -1 +1 @@
1
- (function(a){a(function(){var V=window.ujiCount;var G=V.uji_style;var K=V.uji_plugin;var s="ujiCountdown";var I=V.expire;var d=V.exp_days;var p=V.Years;var R=V.Months;var H=V.Weeks;var X=V.Days;var N=V.Hours;var z=V.Minutes;var f=V.Seconds;var W=V.Year;var E=V.Month;var Q=V.Week;var e=V.Day;var i=V.Hour;var x=V.Minute;var b=V.Second;var m=V.ujic_txt_size;var U=V.ujic_col_dw;var q=V.ujic_col_up;var M=V.ujic_col_txt;var c=V.ujic_col_sw;var r=V.ujic_col_lab;var o=V.ujic_lab_sz;var A=V.ujic_y;var J=V.ujic_o;var C=V.ujic_w;var S=V.ujic_d;var P=V.ujic_h;var L=V.ujic_m;var D=V.ujic_s;var h=V.ujic_thick;var y=(V.ujic_txt=="true")?true:false;var g=(V.ujic_ani=="true")?true:false;var v=(V.ujic_url)?((V.ujic_url.substr(0,7)!=="http://"&&V.ujic_url.substr(0,8)!=="https://")?"http://"+V.ujic_url:V.ujic_url):"";var w=(v!="")?true:false;var u=V.ujic_goof;var O=V.uji_center;var n=V.uji_time;var k=V.uji_hide;var j=(V.ujic_rtl=="true")?true:false;var T=new Date(""+I+"");var F="";F+=(A=="true")?"Y":"";F+=(J=="true")?"O":"";F+=(C=="true")?"W":"";F+=(S=="true")?"D":"";F+=(P=="true")?"H":"";F+=(L=="true")?"M":"";F+=(D=="true")?"S":"";var t=[];if(A=="true"){t.push("uji_year")}if(J=="true"){t.push("uji_mont")}if(C=="true"){t.push("uji_week")}if(S=="true"){t.push("uji_days")}if(P=="true"){t.push("uji_hour")}if(L=="true"){t.push("uji_minu")}if(D=="true"){t.push("uji_secu")}a.countdown.regionalOptions.uji={labels:[""+p+"",""+R+"",""+H+"",""+X+"",""+N+"",""+z+"",""+f+""],labels1:[""+W+"",""+E+"",""+Q+"",""+e+"",""+i+"",""+x+"",""+b+""],compactLabels:["A","L","S","Z"],format:F,whichLabels:null,timeSeparator:":",isRTL:false};a.countdown.setDefaults(a.countdown.regionalOptions.uji);if(u){var l=u.replace(/\s+/g,"+");a("head").append('<link href="http://fonts.googleapis.com/css?family='+l+'" rel="stylesheet" type="text/css">')}a("#"+s).countdown({until:T,ujic_id:""+s+"",serverSync:B,isRTL:j,text_size:""+m+"",color_down:""+U+"",color_up:""+q+"",color_txt:""+M+"",color_sw:""+c+"",color_lab:""+r+"",lab_sz:""+o+"",ujic_txt:y,animate_sec:g,ujic_hide:k,alwaysExpire:w,expiryUrl:v,ujic_goof:""+u+""});function B(){var Z=null;Z=new Date(n);var Y=new Date(Z.getUTCFullYear(),Z.getUTCMonth(),Z.getUTCDate(),Z.getUTCHours(),Z.getUTCMinutes(),Z.getUTCSeconds());Z=Y;return Z}})}(jQuery));
1
+ (function(a){a(function(){var V=window.ujiCount;var G=V.uji_style;var K=V.uji_plugin;var s="ujiCountdown";var I=V.expire;var d=V.exp_days;var p=V.Years;var R=V.Months;var H=V.Weeks;var X=V.Days;var N=V.Hours;var z=V.Minutes;var f=V.Seconds;var W=V.Year;var E=V.Month;var Q=V.Week;var e=V.Day;var i=V.Hour;var x=V.Minute;var b=V.Second;var m=V.ujic_txt_size;var U=V.ujic_col_dw;var q=V.ujic_col_up;var M=V.ujic_col_txt;var c=V.ujic_col_sw;var r=V.ujic_col_lab;var o=V.ujic_lab_sz;var A=V.ujic_y;var J=V.ujic_o;var C=V.ujic_w;var S=V.ujic_d;var P=V.ujic_h;var L=V.ujic_m;var D=V.ujic_s;var h=V.ujic_thick;var y=(V.ujic_txt=="true")?true:false;var g=(V.ujic_ani=="true")?true:false;var v=(V.ujic_url)?((V.ujic_url.substr(0,7)!=="http://"&&V.ujic_url.substr(0,8)!=="https://")?"http://"+V.ujic_url:V.ujic_url):"";var w=(v!="")?true:false;var u=V.ujic_goof;var O=V.uji_center;var n=V.uji_time;var k=V.uji_hide;var j=(V.ujic_rtl=="true")?true:false;var T=new Date(""+I+"");var F="";F+=(A=="true")?"Y":"";F+=(J=="true")?"O":"";F+=(C=="true")?"W":"";F+=(S=="true")?"D":"";F+=(P=="true")?"H":"";F+=(L=="true")?"M":"";F+=(D=="true")?"S":"";var t=[];if(A=="true"){t.push("uji_year")}if(J=="true"){t.push("uji_mont")}if(C=="true"){t.push("uji_week")}if(S=="true"){t.push("uji_days")}if(P=="true"){t.push("uji_hour")}if(L=="true"){t.push("uji_minu")}if(D=="true"){t.push("uji_secu")}a.countdown.regionalOptions.uji={labels:[""+p+"",""+R+"",""+H+"",""+X+"",""+N+"",""+z+"",""+f+""],labels1:[""+W+"",""+E+"",""+Q+"",""+e+"",""+i+"",""+x+"",""+b+""],compactLabels:["A","L","S","Z"],format:F,whichLabels:null,timeSeparator:":",isRTL:false};a.countdown.setDefaults(a.countdown.regionalOptions.uji);if(u){var l=u.replace(/\s+/g,"+");a("head").append('<link href="https://fonts.googleapis.com/css?family='+l+'" rel="stylesheet" type="text/css">')}a("#"+s).countdown({until:T,ujic_id:""+s+"",serverSync:B,isRTL:j,text_size:""+m+"",color_down:""+U+"",color_up:""+q+"",color_txt:""+M+"",color_sw:""+c+"",color_lab:""+r+"",lab_sz:""+o+"",ujic_txt:y,animate_sec:g,ujic_hide:k,alwaysExpire:w,expiryUrl:v,ujic_goof:""+u+""});function B(){var Z=null;Z=new Date(n);var Y=new Date(Z.getUTCFullYear(),Z.getUTCMonth(),Z.getUTCDate(),Z.getUTCHours(),Z.getUTCMinutes(),Z.getUTCSeconds());Z=Y;return Z}})}(jQuery));
js/uji-newsletter.js CHANGED
File without changes
lang/index.php CHANGED
File without changes
lang/uji-countdown-de_DE.mo CHANGED
File without changes
lang/uji-countdown-de_DE.po CHANGED
File without changes
lang/uji-countdown-en_EN.mo CHANGED
File without changes
lang/uji-countdown-en_EN.po CHANGED
File without changes
lang/uji-countdown-en_US.mo CHANGED
File without changes
lang/uji-countdown-en_US.pot CHANGED
File without changes
lang/uji-countdown-es_ES.mo CHANGED
File without changes
lang/uji-countdown-es_ES.po CHANGED
File without changes
lang/uji-countdown-fr_FR.mo CHANGED
File without changes
lang/uji-countdown-fr_FR.po CHANGED
File without changes
lang/uji-countdown-hu_HU.mo CHANGED
File without changes
lang/uji-countdown-hu_HU.po CHANGED
File without changes
lang/uji-countdown-it_IT.mo CHANGED
File without changes
lang/uji-countdown-it_IT.po CHANGED
File without changes
lang/uji-countdown-nl_NL.mo CHANGED
File without changes
lang/uji-countdown-nl_NL.po CHANGED
File without changes
lang/uji-countdown-ro_RO.mo CHANGED
File without changes
lang/uji-countdown-ro_RO.po CHANGED
File without changes
lang/uji-countdown-ru_RU.mo CHANGED
File without changes
lang/uji-countdown-ru_RU.po CHANGED
File without changes
ujicountdown.php CHANGED
@@ -3,7 +3,7 @@
3
  Plugin Name: Uji&#32;Countdown
4
  Plugin URI: http://www.wpmanage.com/uji-countdown
5
  Description: HTML5 Customizable Countdown.
6
- Version: 2.0.6
7
  Text Domain: uji-countdown
8
  Domain Path: /lang
9
  Author: Wpmanage.com
@@ -16,7 +16,7 @@ Copyright 2016 WPmanage (email : info@wpmanage.com)
16
  defined( 'WPINC' ) || exit;
17
 
18
  define( 'UJIC_NAME', 'Uji Countdown' );
19
- define( 'UJIC_VERS', '2.0.6' );
20
  define( 'UJIC_FOLD', 'uji-countdown' );
21
  define( 'UJICOUNTDOWN', trailingslashit( dirname(__FILE__) ) );
22
  define( 'UJICOUNTDOWN_URL', plugin_dir_url( __FILE__ ) );
3
  Plugin Name: Uji&#32;Countdown
4
  Plugin URI: http://www.wpmanage.com/uji-countdown
5
  Description: HTML5 Customizable Countdown.
6
+ Version: 2.0.7
7
  Text Domain: uji-countdown
8
  Domain Path: /lang
9
  Author: Wpmanage.com
16
  defined( 'WPINC' ) || exit;
17
 
18
  define( 'UJIC_NAME', 'Uji Countdown' );
19
+ define( 'UJIC_VERS', '2.0.7' );
20
  define( 'UJIC_FOLD', 'uji-countdown' );
21
  define( 'UJICOUNTDOWN', trailingslashit( dirname(__FILE__) ) );
22
  define( 'UJICOUNTDOWN_URL', plugin_dir_url( __FILE__ ) );
uninstall.php CHANGED
File without changes
views/admin.php CHANGED
File without changes
views/index.php CHANGED
File without changes
views/public.php CHANGED
File without changes