Countdown, Coming Soon – Countdown & Clock - Version 1.7.0

Version Description

  • Save Duration For Each User (new)
  • Admin Side Is Expired Bug Fixed
  • Circle Countdown Popup Saving Issue Fixed
  • Bug Fixed Related To Schedule Countdown
Download this release

Release Info

Developer adamskaat
Plugin Icon 128x128 Countdown, Coming Soon – Countdown & Clock
Version 1.7.0
Comparing to
See all releases

Code changes from version 1.6.9 to 1.7.0

CountdownInit.php CHANGED
@@ -23,6 +23,7 @@ class CountdownInit {
23
 
24
  public function init() {
25
  register_activation_hook(YCD_PREFIX, array($this, 'activate'));
 
26
  $this->includeData();
27
  $this->actions();
28
  $this->filters();
@@ -33,6 +34,7 @@ class CountdownInit {
33
  require_once YCD_HELPERS_PATH.'AdminHelperPro.php';
34
  require_once YCD_HELPERS_PATH.'CheckerPro.php';
35
  require_once YCD_BLOCKS_PATH.'ProgressBar.php';
 
36
  }
37
  require_once(YCD_HELPERS_PATH.'ShowReviewNotice.php');
38
  require_once YCD_HELPERS_PATH.'HelperFunctions.php';
@@ -58,10 +60,12 @@ class CountdownInit {
58
  require_once YCD_CLASSES_PATH.'Installer.php';
59
  require_once YCD_COUNTDOWNS_PATH.'ComingSoon.php';
60
  if (YCD_PKG_VERSION > YCD_FREE_VERSION) {
 
61
  require_once YCD_CLASSES_PATH.'Subscription.php';
62
  require_once YCD_CLASSES_PATH.'AjaxPro.php';
63
  require_once YCD_CLASSES_PATH.'ActionsPro.php';
64
  require_once YCD_CLASSES_PATH.'FiltersPro.php';
 
65
  }
66
  }
67
 
@@ -74,8 +78,32 @@ class CountdownInit {
74
  }
75
 
76
  public function activate() {
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
77
  Installer::install();
78
  }
 
 
 
 
 
 
 
79
  }
80
 
81
  CountdownInit::getInstance();
23
 
24
  public function init() {
25
  register_activation_hook(YCD_PREFIX, array($this, 'activate'));
26
+ register_deactivation_hook(YCD_PREFIX, array($this, 'deactivate'));
27
  $this->includeData();
28
  $this->actions();
29
  $this->filters();
34
  require_once YCD_HELPERS_PATH.'AdminHelperPro.php';
35
  require_once YCD_HELPERS_PATH.'CheckerPro.php';
36
  require_once YCD_BLOCKS_PATH.'ProgressBar.php';
37
+ require_once(YCD_HELPERS_PATH.'ExtensionRegister.php');
38
  }
39
  require_once(YCD_HELPERS_PATH.'ShowReviewNotice.php');
40
  require_once YCD_HELPERS_PATH.'HelperFunctions.php';
60
  require_once YCD_CLASSES_PATH.'Installer.php';
61
  require_once YCD_COUNTDOWNS_PATH.'ComingSoon.php';
62
  if (YCD_PKG_VERSION > YCD_FREE_VERSION) {
63
+ require_once YCD_CLASSES_PATH.'Updates.php';
64
  require_once YCD_CLASSES_PATH.'Subscription.php';
65
  require_once YCD_CLASSES_PATH.'AjaxPro.php';
66
  require_once YCD_CLASSES_PATH.'ActionsPro.php';
67
  require_once YCD_CLASSES_PATH.'FiltersPro.php';
68
+ require_once(YCD_HELPERS_PATH.'ExtensionRegister.php');
69
  }
70
  }
71
 
78
  }
79
 
80
  public function activate() {
81
+
82
+ if (YCD_PKG_VERSION > YCD_FREE_VERSION) {
83
+ $pluginName = YCD_FILE_NAME;
84
+
85
+ $options = array(
86
+ 'licence' => array(
87
+ 'key' => YCD_PRO_KEY,
88
+ 'storeURL' => YCD_STORE_URL,
89
+ 'file' => YCD_FILE_NAME,
90
+ 'itemId' => YCD_VERSION_ITEM_ID,
91
+ 'itemName' => __(YCD_COUNTDOWN_ITEM_LABEL, YCD_TEXT_DOMAIN),
92
+ 'author' => 'Adam',
93
+ 'boxLabel' => __('Countdown pro version license', YCD_TEXT_DOMAIN)
94
+ )
95
+ );
96
+ ExtensionRegister::register($pluginName, $options);
97
+ }
98
  Installer::install();
99
  }
100
+
101
+ public function deactivate() {
102
+ if (YCD_PKG_VERSION > YCD_FREE_VERSION) {
103
+ $pluginName = YCD_FILE_NAME;
104
+ ExtensionRegister::remove($pluginName);
105
+ }
106
+ }
107
  }
108
 
109
  CountdownInit::getInstance();
assets/css/Css.php CHANGED
@@ -39,6 +39,10 @@ class Css {
39
  public function getNewsletterPageKey() {
40
  return YCD_COUNTDOWN_POST_TYPE.'_page_'.YCD_COUNTDOWN_NEWSLETTER;
41
  }
 
 
 
 
42
 
43
  public function enqueueStyles($hook) {
44
 
@@ -56,6 +60,7 @@ class Css {
56
  $morePlugins = $this->getMorePluginsPage();
57
  $comingSoonPage = $this->getComingSoonPage();
58
  $comingSoonMenuPage = $this->getComingSoonMenuPage();
 
59
  $allowedPages = array(
60
  $settingsKey,
61
  $supportKey,
@@ -64,6 +69,7 @@ class Css {
64
  $morePlugins,
65
  $comingSoonPage,
66
  $comingSoonMenuPage,
 
67
  'ycdcountdown_page_ycdcountdown',
68
  );
69
  if(in_array($hook, $allowedPages) || get_post_type(@$_GET['post']) == YCD_COUNTDOWN_POST_TYPE) {
39
  public function getNewsletterPageKey() {
40
  return YCD_COUNTDOWN_POST_TYPE.'_page_'.YCD_COUNTDOWN_NEWSLETTER;
41
  }
42
+
43
+ public function getLicensePageKey() {
44
+ return YCD_COUNTDOWN_POST_TYPE.'_page_'.YCD_COUNTDOWN_LICENSE;
45
+ }
46
 
47
  public function enqueueStyles($hook) {
48
 
60
  $morePlugins = $this->getMorePluginsPage();
61
  $comingSoonPage = $this->getComingSoonPage();
62
  $comingSoonMenuPage = $this->getComingSoonMenuPage();
63
+ $licensePageKey = $this->getLicensePageKey();
64
  $allowedPages = array(
65
  $settingsKey,
66
  $supportKey,
69
  $morePlugins,
70
  $comingSoonPage,
71
  $comingSoonMenuPage,
72
+ $licensePageKey,
73
  'ycdcountdown_page_ycdcountdown',
74
  );
75
  if(in_array($hook, $allowedPages) || get_post_type(@$_GET['post']) == YCD_COUNTDOWN_POST_TYPE) {
assets/css/admin.css CHANGED
@@ -148,8 +148,8 @@
148
  -ms-transform: rotate(7deg);
149
  /* -webkit-transform: rotate(7deg); */
150
  transform: rotate(36deg);
151
- top: 28px;
152
- right: -13px;
153
  position: absolute;
154
  }
155
 
@@ -704,4 +704,8 @@ div.ycd-tabs-text-header > div.ycd-toggle-icon-open {
704
 
705
  .savae-changes-label {
706
  padding-top: 6px;
 
 
 
 
707
  }
148
  -ms-transform: rotate(7deg);
149
  /* -webkit-transform: rotate(7deg); */
150
  transform: rotate(36deg);
151
+ top: 32px;
152
+ right: -14px;
153
  position: absolute;
154
  }
155
 
704
 
705
  .savae-changes-label {
706
  padding-top: 6px;
707
+ }
708
+
709
+ .ycd-postbox-container {
710
+ width: 100%;
711
  }
assets/img/countdownButton.png DELETED
Binary file
assets/js/Countdown.js CHANGED
@@ -771,7 +771,15 @@ YcdCountdown.prototype.addTimeToClock = function(options, countDown) {
771
  var seconds = hours*60*60 + minutes*60 + secondsSaved;
772
 
773
  if (options['ycd-countdown-save-duration']) {
774
- seconds = countDown.data('timer');
 
 
 
 
 
 
 
 
775
  }
776
  }
777
  countDown.data('expired', false);
771
  var seconds = hours*60*60 + minutes*60 + secondsSaved;
772
 
773
  if (options['ycd-countdown-save-duration']) {
774
+
775
+ if (options['ycd-countdown-save-duration-each-user']) {
776
+ var allOptions = jQuery(countDown).data('all-options');
777
+ var id = allOptions['id'];
778
+ seconds = YcdCountdownProFunctionality.durationSeconds(seconds, options, id);
779
+ }
780
+ else {
781
+ seconds = countDown.data('timer');
782
+ }
783
  }
784
  }
785
  countDown.data('expired', false);
assets/views/generalOptions.php CHANGED
@@ -1,6 +1,12 @@
1
  <?php
2
  use ycd\MultipleChoiceButton;
3
  use ycd\AdminHelper;
 
 
 
 
 
 
4
  $defaultData = AdminHelper::defaultData();
5
  $dueDate = $this->getOptionValue('ycd-date-time-picker');
6
  ?>
@@ -38,11 +44,24 @@ $dueDate = $this->getOptionValue('ycd-date-time-picker');
38
  </div>
39
  <div class="col-md-6">
40
  <label class="ycd-switch">
41
- <input type="checkbox" id="ycd-countdown-save-duration" name="ycd-countdown-save-duration" <?php echo $this->getOptionValue('ycd-countdown-save-duration'); ?>>
42
  <span class="ycd-slider ycd-round"></span>
43
  </label>
44
  </div>
45
  </div>
 
 
 
 
 
 
 
 
 
 
 
 
 
46
  <div class="row form-group">
47
  <div class="col-md-6">
48
  </div>
1
  <?php
2
  use ycd\MultipleChoiceButton;
3
  use ycd\AdminHelper;
4
+ $proSpan = '';
5
+ $isPro = '';
6
+ if(YCD_PKG_VERSION == YCD_FREE_VERSION) {
7
+ $isPro = '-pro';
8
+ $proSpan = '<span class="ycd-pro-span">'.__('pro', YCD_TEXT_DOMAIN).'</span>';
9
+ }
10
  $defaultData = AdminHelper::defaultData();
11
  $dueDate = $this->getOptionValue('ycd-date-time-picker');
12
  ?>
44
  </div>
45
  <div class="col-md-6">
46
  <label class="ycd-switch">
47
+ <input type="checkbox" id="ycd-countdown-save-duration" class="ycd-accordion-checkbox" name="ycd-countdown-save-duration" <?php echo $this->getOptionValue('ycd-countdown-save-duration'); ?>>
48
  <span class="ycd-slider ycd-round"></span>
49
  </label>
50
  </div>
51
  </div>
52
+ <div class="ycd-accordion-content ycd-hide-content">
53
+ <div class="row">
54
+ <div class="col-md-6">
55
+ <label for="ycd-countdown-save-duration-each-user" class="ycd-label-of-switch"><?php _e('Save For Each User', YCD_TEXT_DOMAIN); echo $proSpan; ?></label>
56
+ </div>
57
+ <div class="col-md-6 ycd-option-wrapper<?php echo $isPro; ?>">
58
+ <label class="ycd-switch">
59
+ <input type="checkbox" id="ycd-countdown-save-duration-each-user" class="ycd-accordion-checkbox" name="ycd-countdown-save-duration-each-user" <?php echo $this->getOptionValue('ycd-countdown-save-duration-each-user'); ?>>
60
+ <span class="ycd-slider ycd-round"></span>
61
+ </label>
62
+ </div>
63
+ </div>
64
+ </div>
65
  <div class="row form-group">
66
  <div class="col-md-6">
67
  </div>
classes/Actions.php CHANGED
@@ -125,6 +125,10 @@ class Actions {
125
  if ($currentPostType == YCD_COUNTDOWN_POST_TYPE) {
126
  YcdCountdownConfig::displaySettings();
127
  }
 
 
 
 
128
  }
129
 
130
  private function revieNotice() {
125
  if ($currentPostType == YCD_COUNTDOWN_POST_TYPE) {
126
  YcdCountdownConfig::displaySettings();
127
  }
128
+
129
+ if (YCD_PKG_VERSION != YCD_FREE_VERSION) {
130
+ new Updates();
131
+ }
132
  }
133
 
134
  private function revieNotice() {
classes/Filters.php CHANGED
@@ -25,8 +25,24 @@ class Filters {
25
  add_filter('YcdComingSoonPageBeforeMessage', array($this, 'beforeMessage'), 10, 2);
26
  add_filter('YcdComingSoonPageMessage', array($this, 'pageMessage'), 10, 2);
27
  add_filter('YcdComingSoonPageAfterMessage', array($this, 'afterPageMessage'), 10, 2);
 
28
  }
29
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
30
  public function beforeHeader($content, $obj) {
31
  $content .= $this->comingSoonCountdown($obj, 'YcdComingSoonPageBeforeHeader');
32
  return $content;
25
  add_filter('YcdComingSoonPageBeforeMessage', array($this, 'beforeMessage'), 10, 2);
26
  add_filter('YcdComingSoonPageMessage', array($this, 'pageMessage'), 10, 2);
27
  add_filter('YcdComingSoonPageAfterMessage', array($this, 'afterPageMessage'), 10, 2);
28
+ add_filter('upgrader_pre_download', array($this, 'ycdShortenEddFilename'), 10, 4);
29
  }
30
 
31
+ public function ycdShortenEddFilename($return, $package)
32
+ {
33
+ if (strpos($package, YCD_STORE_URL) !== false) {
34
+ add_filter('wp_unique_filename', array($this, 'shortenEddFilename'), 100, 2);
35
+ }
36
+ return $return;
37
+ }
38
+
39
+ public function shortenEddFilename($filename, $ext)
40
+ {
41
+ $filename = substr($filename, 0, 20).$ext;
42
+ remove_filter('wp_unique_filename', array($this, 'shortenEddFilename'), 10);
43
+ return $filename;
44
+ }
45
+
46
  public function beforeHeader($content, $obj) {
47
  $content .= $this->comingSoonCountdown($obj, 'YcdComingSoonPageBeforeHeader');
48
  return $content;
classes/countdown/CircleCountdown.php CHANGED
@@ -172,7 +172,7 @@ class CircleCountdown extends Countdown {
172
  }
173
 
174
  public function addToContent() {
175
- add_filter('the_content', array($this, 'getTheContentFilter'),1, 1);
176
  }
177
 
178
  public function getViewContent() {
172
  }
173
 
174
  public function addToContent() {
175
+ add_filter('the_content', array($this, 'getTheContentFilter'),99999999, 1);
176
  }
177
 
178
  public function getViewContent() {
classes/countdown/Countdown.php CHANGED
@@ -779,21 +779,10 @@ abstract class Countdown {
779
  }
780
 
781
  public function isExpired() {
782
- $dateType = $this->getOptionValue('ycd-countdown-date-type');
783
-
784
- $timezone = $this->getOptionValue('ycd-circle-time-zone');
785
- $dueDate = $this->getOptionValue('ycd-date-time-picker');
786
- $dueDate .= ':00';
787
- $timeDate = new DateTime('now', new DateTimeZone($timezone));
788
- $timeNow = strtotime($timeDate->format('Y-m-d H:i:s'));
789
- $seconds = strtotime($dueDate)-$timeNow;
790
-
791
- if($dateType == 'schedule') {
792
- $seconds = $this->getCircleSeconds();
793
- return !$seconds->expireSeconds;
794
- }
795
-
796
- return ($seconds < 0);
797
  }
798
 
799
  public function getExpireDate() {
@@ -801,20 +790,13 @@ abstract class Countdown {
801
 
802
  $timezone = $this->getOptionValue('ycd-circle-time-zone');
803
  $current = new DateTime('now', new \DateTimeZone($timezone));
804
- $dueDate = $this->getOptionValue('ycd-date-time-picker');
805
  $currentDate = $current->format('Y-m-d H:i:s');
806
- if($dateType == 'schedule') {
807
- $timezone = $this->getOptionValue('ycd-schedule-time-zone');
808
-
809
- $current = new DateTime('now', new DateTimeZone($timezone));
810
- $currentDate = $current->format('Y-m-d H:i:s');
811
-
812
- $endTo = $this->getOptionValue('ycd-schedule-end-day');
813
- $endTimeClock = $this->getOptionValue('ycd-schedule-end-to');
814
- $endDateObj = AdminHelperPro::getSheduleDate($endTo, $endTimeClock, $timezone);
815
- $dueDate = $endDateObj->format('Y-m-d H:i:s');
816
- }
817
- $dateString = human_time_diff(strtotime($dueDate), strtotime($currentDate));
818
 
819
  return $dateString;
820
  }
@@ -824,6 +806,13 @@ abstract class Countdown {
824
 
825
  return $isAllow;
826
  }
 
 
 
 
 
 
 
827
 
828
  public function getCircleSeconds() {
829
  $seconds = 0;
@@ -959,6 +948,7 @@ abstract class Countdown {
959
  $options['ycd-countdown-duration-minutes'] = $this->getOptionValue('ycd-countdown-duration-minutes');
960
  $options['ycd-countdown-duration-seconds'] = $this->getOptionValue('ycd-countdown-duration-seconds');
961
  $options['ycd-countdown-save-duration'] = $this->getOptionValue('ycd-countdown-save-duration');
 
962
 
963
  return $options;
964
  }
@@ -966,6 +956,7 @@ abstract class Countdown {
966
  public function getFlipClockOptionsData() {
967
  $options = array();
968
 
 
969
  $options['id'] = $this->getId();
970
  $modifiedObj = $this->getCircleSeconds();
971
  $modifiedSavedData = $modifiedObj->datesNumber;
@@ -974,6 +965,7 @@ abstract class Countdown {
974
 
975
  $options += $this->generalOptionsData();
976
 
 
977
  $options['ycd-flip-date-time-picker'] = $this->getOptionValue('ycd-date-time-picker');
978
  $options['ycd-flip-time-zone'] = $this->getOptionValue('ycd-circle-time-zone');
979
  $options['output-format'] = $this->getOutputFormats();
@@ -1013,6 +1005,8 @@ abstract class Countdown {
1013
 
1014
  public function getCircleOptionsData() {
1015
  $options = array();
 
 
1016
  $modifiedObj = $this->getCircleSeconds();
1017
  $modifiedSavedData = $modifiedObj->datesNumber;
1018
  $options['ycd-seconds'] = $modifiedObj->expireSeconds;
@@ -1020,6 +1014,7 @@ abstract class Countdown {
1020
 
1021
  $options += $this->generalOptionsData();
1022
 
 
1023
  $options['animation'] = $this->getOptionValue('ycd-circle-animation');
1024
  $options['direction'] = $this->getOptionValue('ycd-countdown-direction');
1025
  $options['fg_width'] = $this->getOptionValue('ycd-circle-width');
779
  }
780
 
781
  public function isExpired() {
782
+ $obj = $this->getCircleSeconds();
783
+ $seconds = $obj->expireSeconds;
784
+
785
+ return ($seconds <= 0);
 
 
 
 
 
 
 
 
 
 
 
786
  }
787
 
788
  public function getExpireDate() {
790
 
791
  $timezone = $this->getOptionValue('ycd-circle-time-zone');
792
  $current = new DateTime('now', new \DateTimeZone($timezone));
 
793
  $currentDate = $current->format('Y-m-d H:i:s');
794
+
795
+ $obj = $this->getCircleSeconds();
796
+ $seconds = $obj->expireSeconds;
797
+ $date = strtotime("+$seconds seconds", strtotime($currentDate));
798
+
799
+ $dateString = human_time_diff($date, strtotime($currentDate));
 
 
 
 
 
 
800
 
801
  return $dateString;
802
  }
806
 
807
  return $isAllow;
808
  }
809
+
810
+ public function getSecondsFromObj() {
811
+ $secondsObj = $this->getCircleSeconds();
812
+ $seconds = $secondsObj->expireSeconds;
813
+
814
+ return $seconds;
815
+ }
816
 
817
  public function getCircleSeconds() {
818
  $seconds = 0;
948
  $options['ycd-countdown-duration-minutes'] = $this->getOptionValue('ycd-countdown-duration-minutes');
949
  $options['ycd-countdown-duration-seconds'] = $this->getOptionValue('ycd-countdown-duration-seconds');
950
  $options['ycd-countdown-save-duration'] = $this->getOptionValue('ycd-countdown-save-duration');
951
+ $options['ycd-countdown-save-duration-each-user'] = $this->getOptionValue('ycd-countdown-save-duration-each-user');
952
 
953
  return $options;
954
  }
956
  public function getFlipClockOptionsData() {
957
  $options = array();
958
 
959
+ $isExpired = $this->isExpired();
960
  $options['id'] = $this->getId();
961
  $modifiedObj = $this->getCircleSeconds();
962
  $modifiedSavedData = $modifiedObj->datesNumber;
965
 
966
  $options += $this->generalOptionsData();
967
 
968
+ $options['isExpired'] = $isExpired;
969
  $options['ycd-flip-date-time-picker'] = $this->getOptionValue('ycd-date-time-picker');
970
  $options['ycd-flip-time-zone'] = $this->getOptionValue('ycd-circle-time-zone');
971
  $options['output-format'] = $this->getOutputFormats();
1005
 
1006
  public function getCircleOptionsData() {
1007
  $options = array();
1008
+ $isExpired = $this->isExpired();
1009
+
1010
  $modifiedObj = $this->getCircleSeconds();
1011
  $modifiedSavedData = $modifiedObj->datesNumber;
1012
  $options['ycd-seconds'] = $modifiedObj->expireSeconds;
1014
 
1015
  $options += $this->generalOptionsData();
1016
 
1017
+ $options['isExpired'] = $isExpired;
1018
  $options['animation'] = $this->getOptionValue('ycd-circle-animation');
1019
  $options['direction'] = $this->getOptionValue('ycd-countdown-direction');
1020
  $options['fg_width'] = $this->getOptionValue('ycd-circle-width');
config/config.php CHANGED
@@ -46,10 +46,13 @@ class YcdCountdownConfig {
46
  self::addDefine('YCD_COUNTDOWN_TUTORIALS', 'ycdTutorials');
47
  self::addDefine('YCD_COUNTDOWN_NEWSLETTER', 'ycdNewsletter');
48
  self::addDefine('YCD_COUNTDOWN_SUBSCRIBERS', 'ycdSubscribers');
 
49
  self::addDefine('YCD_POSTS_TABLE_NAME', 'posts');
50
  self::addDefine('YCD_COUNTDOWN_SUBSCRIBERS_TABLE', 'ycd_subscribers');
51
  self::addDefine('YCD_COUNTDOWN_WIDGET', 'ycd_countdown_widget');
52
  self::addDefine('YCD_TEXT_DOMAIN', 'ycdCountdown');
 
 
53
  self::addDefine('YCD_COUNTDOWN_PRO_URL', 'https://edmonsoft.com/countdown');
54
  self::addDefine('YCD_COUNTDOWN_BUTTON_URL', 'https://edmonsoft.com/countdown/#yrm-analytics');
55
  self::addDefine('YCD_COUNTDOWN_REVIEW_URL', 'https://wordpress.org/support/plugin/countdown-builder/reviews/?filter=5');
@@ -63,8 +66,8 @@ class YcdCountdownConfig {
63
  self::addDefine('YCD_CRON_REPEAT_INTERVAL', 1);
64
  self::addDefine('YCD_AJAX_SUCCESS', 1);
65
  self::addDefine('YCD_TABLE_LIMIT', 15);
66
- self::addDefine('YCD_VERSION_PRO', 1.55);
67
- self::addDefine('YCD_VERSION', 1.69);
68
  self::addDefine('YCD_FREE_VERSION', 1);
69
  self::addDefine('YCD_SILVER_VERSION', 2);
70
  self::addDefine('YCD_GOLD_VERSION', 3);
46
  self::addDefine('YCD_COUNTDOWN_TUTORIALS', 'ycdTutorials');
47
  self::addDefine('YCD_COUNTDOWN_NEWSLETTER', 'ycdNewsletter');
48
  self::addDefine('YCD_COUNTDOWN_SUBSCRIBERS', 'ycdSubscribers');
49
+ self::addDefine('YCD_COUNTDOWN_LICENSE', 'ycdLicense');
50
  self::addDefine('YCD_POSTS_TABLE_NAME', 'posts');
51
  self::addDefine('YCD_COUNTDOWN_SUBSCRIBERS_TABLE', 'ycd_subscribers');
52
  self::addDefine('YCD_COUNTDOWN_WIDGET', 'ycd_countdown_widget');
53
  self::addDefine('YCD_TEXT_DOMAIN', 'ycdCountdown');
54
+ self::addDefine('YCD_STORE_URL', 'https://edmonsoft.com/countdown/');
55
+ self::addDefine('YCD_PRO_KEY', 'ycdProVersion');
56
  self::addDefine('YCD_COUNTDOWN_PRO_URL', 'https://edmonsoft.com/countdown');
57
  self::addDefine('YCD_COUNTDOWN_BUTTON_URL', 'https://edmonsoft.com/countdown/#yrm-analytics');
58
  self::addDefine('YCD_COUNTDOWN_REVIEW_URL', 'https://wordpress.org/support/plugin/countdown-builder/reviews/?filter=5');
66
  self::addDefine('YCD_CRON_REPEAT_INTERVAL', 1);
67
  self::addDefine('YCD_AJAX_SUCCESS', 1);
68
  self::addDefine('YCD_TABLE_LIMIT', 15);
69
+ self::addDefine('YCD_VERSION_PRO', 1.56);
70
+ self::addDefine('YCD_VERSION', 1.70);
71
  self::addDefine('YCD_FREE_VERSION', 1);
72
  self::addDefine('YCD_SILVER_VERSION', 2);
73
  self::addDefine('YCD_GOLD_VERSION', 3);
config/optionsConfig.php CHANGED
@@ -163,6 +163,7 @@ class YcdCountdownOptionsConfig {
163
 
164
  // timer clock
165
  $options[] = array('name' => 'ycd-countdown-save-duration', 'type' => 'checkbox', 'defaultValue' => '');
 
166
  $options[] = array('name' => 'ycd-timer-hours', 'type' => 'number', 'defaultValue' => 0);
167
  $options[] = array('name' => 'ycd-timer-minutes', 'type' => 'number', 'defaultValue' => 0);
168
  $options[] = array('name' => 'ycd-timer-seconds', 'type' => 'number', 'defaultValue' => 30);
163
 
164
  // timer clock
165
  $options[] = array('name' => 'ycd-countdown-save-duration', 'type' => 'checkbox', 'defaultValue' => '');
166
+ $options[] = array('name' => 'ycd-countdown-save-duration-each-user', 'type' => 'checkbox', 'defaultValue' => '');
167
  $options[] = array('name' => 'ycd-timer-hours', 'type' => 'number', 'defaultValue' => 0);
168
  $options[] = array('name' => 'ycd-timer-minutes', 'type' => 'number', 'defaultValue' => 0);
169
  $options[] = array('name' => 'ycd-timer-seconds', 'type' => 'number', 'defaultValue' => 30);
config/proOptionsConfig.php DELETED
@@ -1,108 +0,0 @@
1
- <?php
2
-
3
- class proOptionsConfig {
4
- public function __construct() {
5
- add_filter('ycdCountdownDefaultOptions', array($this, 'defaultOptions'), 1, 1);
6
- }
7
-
8
- public function defaultOptions($defaults) {
9
- // flip clock
10
- $defaults[] = array('name' => 'ycd-flip-countdown-alignment', 'type' => 'text', 'defaultValue' => 'left');
11
- $defaults[] = array('name' => 'ycd-flip-countdown-year', 'type' => 'checkbox', 'defaultValue' => '');
12
- $defaults[] = array('name' => 'ycd-flip-countdown-year-text', 'type' => 'text', 'defaultValue' => __('YEARS', YCD_TEXT_DOMAIN));
13
- $defaults[] = array('name' => 'ycd-flip-countdown-week', 'type' => 'checkbox', 'defaultValue' => '');
14
- $defaults[] = array('name' => 'ycd-flip-countdown-week-text', 'type' => 'text', 'defaultValue' => __('WEEKS', YCD_TEXT_DOMAIN));
15
- $defaults[] = array('name' => 'ycd-flip-countdown-days', 'type' => 'checkbox', 'defaultValue' => 'on');
16
- $defaults[] = array('name' => 'ycd-flip-countdown-days-text', 'type' => 'text', 'defaultValue' => __('DAYS', YCD_TEXT_DOMAIN));
17
- $defaults[] = array('name' => 'ycd-flip-countdown-hours', 'type' => 'checkbox', 'defaultValue' => 'on');
18
- $defaults[] = array('name' => 'ycd-flip-countdown-hours-text', 'type' => 'text', 'defaultValue' => __('HOURS', YCD_TEXT_DOMAIN));
19
- $defaults[] = array('name' => 'ycd-flip-countdown-minutes', 'type' => 'checkbox', 'defaultValue' => 'on');
20
- $defaults[] = array('name' => 'ycd-flip-countdown-minutes-text', 'type' => 'text', 'defaultValue' => __('MINUTES', YCD_TEXT_DOMAIN));
21
- $defaults[] = array('name' => 'ycd-flip-countdown-seconds', 'type' => 'checkbox', 'defaultValue' => 'on');
22
- $defaults[] = array('name' => 'ycd-flip-countdown-seconds-text', 'type' => 'text', 'defaultValue' => __('SECONDS', YCD_TEXT_DOMAIN));
23
- $defaults[] = array('name' => 'ycd-flip-countdown-expire-behavior', 'type' => 'text', 'defaultValue' => 'hideCountdown');
24
- $defaults[] = array('name' => 'ycd-flip-expire-text', 'type' => 'html', 'defaultValue' => '');
25
- $defaults[] = array('name' => 'ycd-flipclock-column-size', 'type' => 'html', 'defaultValue' => '1');
26
-
27
- $defaults[] = array('name' => 'ycd-woo-countdown-position', 'type' => 'text', 'defaultValue' => 'woocommerce_single_product_summary');
28
- $defaults[] = array('name' => 'ycd-woo-countdown-text-color', 'type' => 'text', 'defaultValue' => '#ffffff');
29
- $defaults[] = array('name' => 'ycd-woo-countdown-font-size', 'type' => 'text', 'defaultValue' => '25');
30
- $defaults[] = array('name' => 'ycd-woo-show-products', 'type' => 'text', 'defaultValue' => 'showOnAll');
31
- $defaults[] = array('name' => 'ycd-woo-enable-to-products', 'type' => 'checkbox', 'defaultValue' => '');
32
- $defaults[] = array('name' => 'ycd-woo-selected-products', 'type' => 'html', 'defaultValue' => '');
33
- $defaults[] = array('name' => 'ycd-woo-countdown-after-countdown', 'type' => 'html', 'defaultValue' => '');
34
- $defaults[] = array('name' => 'ycd-woo-countdown-before-countdown', 'type' => 'html', 'defaultValue' => '');
35
-
36
- $defaults[] = array('name' => 'ycd-schedule-start-from', 'type' => 'html', 'defaultValue' => '10:00');
37
- $defaults[] = array('name' => 'ycd-schedule-end-to', 'type' => 'html', 'defaultValue' => '18:00');
38
- $defaults[] = array('name' => 'ycd-schedule-time-zone', 'type' => 'html', 'defaultValue' => 'Europe/London');
39
-
40
- $defaults[] = array('name' => 'ycd-progress-main-color', 'type' => 'html', 'defaultValue' => '#0A5F44');
41
- $defaults[] = array('name' => 'ycd-progress-color', 'type' => 'html', 'defaultValue' => '#CBEA00');
42
- $defaults[] = array('name' => 'ycd-progress-text-color', 'type' => 'html', 'defaultValue' => '#ffffff');
43
- $defaults[] = array('name' => 'ycd-progress-width', 'type' => 'html', 'defaultValue' => '90%');
44
- $defaults[] = array('name' => 'ycd-progress-height', 'type' => 'html', 'defaultValue' => '22px');
45
- $defaults[] = array('name' => 'ycd-progress-height', 'type' => 'html', 'defaultValue' => '22px');
46
-
47
- $defaults[] = array('name' => 'ycd-clock-mode', 'type' => 'html', 'defaultValue' => '24');
48
- $defaults[] = array('name' => 'ycd-clock1-indicate-color', 'type' => 'html', 'defaultValue' => '#222');
49
- $defaults[] = array('name' => 'ycd-clock1-dial1-color', 'type' => 'html', 'defaultValue' => '#666600');
50
- $defaults[] = array('name' => 'ycd-clock1-dial2-color', 'type' => 'html', 'defaultValue' => '#81812e');
51
- $defaults[] = array('name' => 'ycd-clock1-dial3-color', 'type' => 'html', 'defaultValue' => '#9d9d5c');
52
- $defaults[] = array('name' => 'ycd-clock1-date-color', 'type' => 'html', 'defaultValue' => '#999');
53
- $defaults[] = array('name' => 'ycd-clock1-time-color', 'type' => 'html', 'defaultValue' => '#333');
54
-
55
- $defaults[] = array('name' => 'ycd-clock2-indicate-color', 'type' => 'html', 'defaultValue' => '#222');
56
- $defaults[] = array('name' => 'ycd-clock2-dial1-color', 'type' => 'html', 'defaultValue' => '#666600');
57
- $defaults[] = array('name' => 'ycd-clock2-dial2-color', 'type' => 'html', 'defaultValue' => '#81812e');
58
- $defaults[] = array('name' => 'ycd-clock2-dial3-color', 'type' => 'html', 'defaultValue' => '#9d9d5c');
59
- $defaults[] = array('name' => 'ycd-clock2-date-color', 'type' => 'html', 'defaultValue' => '#999');
60
- $defaults[] = array('name' => 'ycd-clock2-time-color', 'type' => 'html', 'defaultValue' => '#333');
61
-
62
- $defaults[] = array('name' => 'ycd-clock3-indicate-color', 'type' => 'html', 'defaultValue' => '#222');
63
- $defaults[] = array('name' => 'ycd-clock3-dial1-color', 'type' => 'html', 'defaultValue' => '#666600');
64
- $defaults[] = array('name' => 'ycd-clock3-dial2-color', 'type' => 'html', 'defaultValue' => '#81812e');
65
- $defaults[] = array('name' => 'ycd-clock3-dial3-color', 'type' => 'html', 'defaultValue' => '#9d9d5c');
66
- $defaults[] = array('name' => 'ycd-clock3-date-color', 'type' => 'html', 'defaultValue' => '#999');
67
- $defaults[] = array('name' => 'ycd-clock3-time-color', 'type' => 'html', 'defaultValue' => '#333');
68
-
69
- $defaults[] = array('name' => 'ycd-clock4-indicate-color', 'type' => 'html', 'defaultValue' => '#222');
70
- $defaults[] = array('name' => 'ycd-clock4-dial1-color', 'type' => 'html', 'defaultValue' => '#666600');
71
- $defaults[] = array('name' => 'ycd-clock4-dial2-color', 'type' => 'html', 'defaultValue' => '#81812e');
72
- $defaults[] = array('name' => 'ycd-clock4-dial4-color', 'type' => 'html', 'defaultValue' => '#9d9d5c');
73
- $defaults[] = array('name' => 'ycd-clock4-date-color', 'type' => 'html', 'defaultValue' => '#999');
74
- $defaults[] = array('name' => 'ycd-clock4-time-color', 'type' => 'html', 'defaultValue' => '#333');
75
-
76
- $defaults[] = array('name' => 'ycd-clock5-indicate-color', 'type' => 'html', 'defaultValue' => '#222');
77
- $defaults[] = array('name' => 'ycd-clock5-dial1-color', 'type' => 'html', 'defaultValue' => '#666600');
78
- $defaults[] = array('name' => 'ycd-clock5-dial2-color', 'type' => 'html', 'defaultValue' => '#81812e');
79
- $defaults[] = array('name' => 'ycd-clock5-dial3-color', 'type' => 'html', 'defaultValue' => '#333333');
80
- $defaults[] = array('name' => 'ycd-clock5-dial4-color', 'type' => 'html', 'defaultValue' => '#9d9d5c');
81
- $defaults[] = array('name' => 'ycd-clock5-date-color', 'type' => 'html', 'defaultValue' => '#999');
82
- $defaults[] = array('name' => 'ycd-clock5-time-color', 'type' => 'html', 'defaultValue' => '#ccc');
83
-
84
-
85
- $defaults[] = array('name' => 'ycd-clock6-indicate-color', 'type' => 'html', 'defaultValue' => '#222');
86
- $defaults[] = array('name' => 'ycd-clock6-dial1-color', 'type' => 'html', 'defaultValue' => '#666600');
87
- $defaults[] = array('name' => 'ycd-clock6-dial2-color', 'type' => 'html', 'defaultValue' => '#81812e');
88
- $defaults[] = array('name' => 'ycd-clock6-dial3-color', 'type' => 'html', 'defaultValue' => '#9d9d5c');
89
- $defaults[] = array('name' => 'ycd-clock6-dial4-color', 'type' => 'html', 'defaultValue' => '#9d9d5c');
90
- $defaults[] = array('name' => 'ycd-clock6-date-color', 'type' => 'html', 'defaultValue' => '#999');
91
- $defaults[] = array('name' => 'ycd-clock6-time-color', 'type' => 'html', 'defaultValue' => '#ccc');
92
-
93
- $defaults[] = array('name' => 'ycd-clock7-indicate-color', 'type' => 'html', 'defaultValue' => '#222');
94
- $defaults[] = array('name' => 'ycd-clock7-dial1-color', 'type' => 'html', 'defaultValue' => '#666600');
95
- $defaults[] = array('name' => 'ycd-clock7-dial2-color', 'type' => 'html', 'defaultValue' => '#81812e');
96
- $defaults[] = array('name' => 'ycd-clock7-dial3-color', 'type' => 'html', 'defaultValue' => '#9d9d5c');
97
- $defaults[] = array('name' => 'ycd-clock7-dial4-color', 'type' => 'html', 'defaultValue' => '#9d9d5c');
98
- $defaults[] = array('name' => 'ycd-clock7-date-color', 'type' => 'html', 'defaultValue' => '#999');
99
- $defaults[] = array('name' => 'ycd-clock7-time-color', 'type' => 'html', 'defaultValue' => '#ccc');
100
-
101
- $defaults[] = array('name' => 'ycd-countdown-enable-progress', 'type' => 'checkbox', 'defaultValue' => '');
102
- $defaults[] = array('name' => 'ycd-countdown-bg-video', 'type' => 'checkbox', 'defaultValue' => '');
103
-
104
- return $defaults;
105
- }
106
- }
107
-
108
- new proOptionsConfig();
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
countdown-builder.php CHANGED
@@ -2,7 +2,7 @@
2
  /**
3
  * Plugin Name: Countdown builder
4
  * Description: The best countdown plugin
5
- * Version: 1.6.9
6
  * Author: Adam Skaat
7
  * Author URI: https://edmonsoft.com/countdown
8
  * License: GPLv2
2
  /**
3
  * Plugin Name: Countdown builder
4
  * Description: The best countdown plugin
5
+ * Version: 1.7.0
6
  * Author: Adam Skaat
7
  * Author URI: https://edmonsoft.com/countdown
8
  * License: GPLv2
helpers/AdminHelper.php CHANGED
@@ -1265,4 +1265,39 @@ class AdminHelper {
1265
  }
1266
  return 'https://www.youtube.com/embed/' . $youtube_id ;
1267
  }
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1268
  }
1265
  }
1266
  return 'https://www.youtube.com/embed/' . $youtube_id ;
1267
  }
1268
+
1269
+ /**
1270
+ * Update options
1271
+ *
1272
+ * @since 1.6.9
1273
+ *
1274
+ * @return void
1275
+ */
1276
+ public static function updateOption($optionKey, $optionValue)
1277
+ {
1278
+ if (is_multisite()) {
1279
+ update_site_option($optionKey, $optionValue);
1280
+ }
1281
+ else {
1282
+ update_option($optionKey, $optionValue);
1283
+ }
1284
+ }
1285
+
1286
+ public static function getOption($optionKey)
1287
+ {
1288
+ if (is_multisite()) {
1289
+ return get_site_option($optionKey);
1290
+ }
1291
+ return get_option($optionKey);
1292
+ }
1293
+
1294
+ public static function deleteOption($optionKey)
1295
+ {
1296
+ if (is_multisite()) {
1297
+ delete_site_option($optionKey);
1298
+ }
1299
+ else {
1300
+ delete_option($optionKey);
1301
+ }
1302
+ }
1303
  }
readme.txt CHANGED
@@ -3,7 +3,7 @@ Contributors: adamskaat
3
  Tags: countdown, timer, countdown timer
4
  Requires at least: 3.8
5
  Tested up to: 5.3.2
6
- Stable tag: 1.6.9
7
  Requires PHP: 5.3
8
  License: GPLv2 or later
9
  License URI: https://www.gnu.org/licenses/gpl-2.0.html
@@ -64,6 +64,12 @@ Yes you can, we have Circle and Flipclock countdown popups.
64
  You need to select the .zip file, there is no need to extract the zip file, just upload it.
65
 
66
  == Changelog ==
 
 
 
 
 
 
67
  = 1.6.9 =
68
  * Save Duration (new)
69
  * Code optimization
3
  Tags: countdown, timer, countdown timer
4
  Requires at least: 3.8
5
  Tested up to: 5.3.2
6
+ Stable tag: 1.7.0
7
  Requires PHP: 5.3
8
  License: GPLv2 or later
9
  License URI: https://www.gnu.org/licenses/gpl-2.0.html
64
  You need to select the .zip file, there is no need to extract the zip file, just upload it.
65
 
66
  == Changelog ==
67
+ = 1.7.0 =
68
+ * Save Duration For Each User (new)
69
+ * Admin Side Is Expired Bug Fixed
70
+ * Circle Countdown Popup Saving Issue Fixed
71
+ * Bug Fixed Related To Schedule Countdown
72
+
73
  = 1.6.9 =
74
  * Save Duration (new)
75
  * Code optimization