Shortlinks by Pretty Links – Best WordPress Link Tracking Plugin - Version 3.0.1

Version Description

  • Fix issues when accessing the plugin as a non-administrator
  • Simplify the checks in is_slug_available
  • Add slug and url as searchable fields in the links list
  • Fix for high CPU issues and huge log sizes
  • Fix layout issue on the update page
  • Fix category migration not running
  • Fix errors when dates are null
  • Call wp_cache_delete after update/delete_option
  • Only redirect if delete succeeds, redirect status code 307
  • Fix failed category/cpt migrations
Download this release

Release Info

Developer cartpauj
Plugin Icon 128x128 Shortlinks by Pretty Links – Best WordPress Link Tracking Plugin
Version 3.0.1
Comparing to
See all releases

Code changes from version 3.0.0 to 3.0.1

app/controllers/PrliAppController.php CHANGED
@@ -71,10 +71,7 @@ class PrliAppController extends PrliBaseController {
71
 
72
  $this->admin_separator();
73
 
74
- $role = 'manage_options';
75
- if(isset($plp_options->min_role)) {
76
- $role = $plp_options->min_role;
77
- }
78
 
79
  $pl_link_cpt = PrliLink::$cpt;
80
 
@@ -149,7 +146,7 @@ class PrliAppController extends PrliBaseController {
149
  global $menu;
150
 
151
  // Prevent duplicate separators when no core menu items exist
152
- if(!PrliUtils::is_admin()) { return; }
153
 
154
  $menu[] = array('', 'read', 'separator-pretty-link', '', 'wp-menu-separator pretty-link');
155
  }
@@ -649,6 +646,7 @@ class PrliAppController extends PrliBaseController {
649
 
650
  public static function close_about_notice() {
651
  update_option('prli_about_notice_version',PRLI_VERSION);
 
652
  }
653
 
654
  /**
71
 
72
  $this->admin_separator();
73
 
74
+ $role = PrliUtils::get_minimum_role();
 
 
 
75
 
76
  $pl_link_cpt = PrliLink::$cpt;
77
 
146
  global $menu;
147
 
148
  // Prevent duplicate separators when no core menu items exist
149
+ if(!PrliUtils::is_authorized()) { return; }
150
 
151
  $menu[] = array('', 'read', 'separator-pretty-link', '', 'wp-menu-separator pretty-link');
152
  }
646
 
647
  public static function close_about_notice() {
648
  update_option('prli_about_notice_version',PRLI_VERSION);
649
+ wp_cache_delete('alloptions', 'options');
650
  }
651
 
652
  /**
app/controllers/PrliClicksController.php CHANGED
@@ -39,6 +39,7 @@ class PrliClicksController extends PrliBaseController {
39
  if(($now - $last_run) > 86400) {
40
  $prli_click->clear_clicks_by_age_in_days(90);
41
  update_option('prli_auto_trim_clicks_last_run', time());
 
42
  }
43
  }
44
  }
39
  if(($now - $last_run) > 86400) {
40
  $prli_click->clear_clicks_by_age_in_days(90);
41
  update_option('prli_auto_trim_clicks_last_run', time());
42
+ wp_cache_delete('alloptions', 'options');
43
  }
44
  }
45
  }
app/controllers/PrliLinksController.php CHANGED
@@ -15,6 +15,9 @@ class PrliLinksController extends PrliBaseController {
15
  add_action( 'wp_ajax_reset_pretty_link', array($this,'ajax_reset_pretty_link') );
16
  add_action( 'wp_ajax_prli_quick_create', array($this, 'ajax_quick_create'));
17
 
 
 
 
18
  // Legacy Groups Filter
19
  add_action( 'restrict_manage_posts', array($this,'filter_links_by_legacy_groups') );
20
  add_filter( 'posts_join', array($this,'join_links_to_posts') );
@@ -38,6 +41,8 @@ class PrliLinksController extends PrliBaseController {
38
  }
39
 
40
  public function register_post_type() {
 
 
41
  $args = array(
42
  'labels' => array(
43
  'name' => esc_html__('Pretty Links', 'pretty-link'),
@@ -57,7 +62,23 @@ class PrliLinksController extends PrliBaseController {
57
  'show_in_admin_bar' => true,
58
  'exclude_from_search' => true,
59
  'can_export' => false,
60
- 'capability_type' => 'page',
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
61
  'hierarchical' => false,
62
  'register_meta_box_cb' => array($this, 'add_meta_boxes'),
63
  'rewrite' => false,
@@ -212,7 +233,7 @@ class PrliLinksController extends PrliBaseController {
212
  }
213
 
214
  # Skip non-post requests & non-admin requests
215
- if(!PrliUtils::is_post_request() || !PrliUtils::is_admin()) {
216
  return $post_id;
217
  }
218
 
@@ -640,19 +661,28 @@ class PrliLinksController extends PrliBaseController {
640
  }
641
  }
642
 
643
- // Join for searching link groups
644
  public function join_links_to_posts($join) {
645
- global $wp_query, $wpdb, $typenow;
646
 
647
- if( $typenow == PrliLink::$cpt &&
648
- ( ( isset($_GET['orderby']) && isset($_GET['order']) ) ||
649
- empty($wp_query->query_vars['s']) ) ) {
650
  $join .= "JOIN {$wpdb->prefix}prli_links AS li ON {$wpdb->posts}.ID = li.link_cpt_id ";
651
  }
652
 
653
  return $join;
654
  }
655
 
 
 
 
 
 
 
 
 
 
 
 
656
  // Where clause for searching link groups
657
  public function where_links_belong_to_legacy_group( $where ) {
658
  global $wp_query, $wpdb, $typenow;
15
  add_action( 'wp_ajax_reset_pretty_link', array($this,'ajax_reset_pretty_link') );
16
  add_action( 'wp_ajax_prli_quick_create', array($this, 'ajax_quick_create'));
17
 
18
+ // Add slug and URL to search
19
+ add_filter( 'posts_search', array($this, 'search_links_table') );
20
+
21
  // Legacy Groups Filter
22
  add_action( 'restrict_manage_posts', array($this,'filter_links_by_legacy_groups') );
23
  add_filter( 'posts_join', array($this,'join_links_to_posts') );
41
  }
42
 
43
  public function register_post_type() {
44
+ $role = PrliUtils::get_minimum_role();
45
+
46
  $args = array(
47
  'labels' => array(
48
  'name' => esc_html__('Pretty Links', 'pretty-link'),
62
  'show_in_admin_bar' => true,
63
  'exclude_from_search' => true,
64
  'can_export' => false,
65
+ 'capabilities' => array(
66
+ 'edit_post' => $role,
67
+ 'read_post' => $role,
68
+ 'delete_post' => $role,
69
+ 'create_posts' => $role,
70
+ 'edit_posts' => $role,
71
+ 'edit_others_posts' => $role,
72
+ 'publish_posts' => $role,
73
+ 'read_private_posts' => $role,
74
+ 'read' => 'read',
75
+ 'delete_posts' => $role,
76
+ 'delete_private_posts' => $role,
77
+ 'delete_published_posts' => $role,
78
+ 'delete_others_posts' => $role,
79
+ 'edit_private_posts' => $role,
80
+ 'edit_published_posts' => $role
81
+ ),
82
  'hierarchical' => false,
83
  'register_meta_box_cb' => array($this, 'add_meta_boxes'),
84
  'rewrite' => false,
233
  }
234
 
235
  # Skip non-post requests & non-admin requests
236
+ if(!PrliUtils::is_post_request() || !PrliUtils::is_authorized()) {
237
  return $post_id;
238
  }
239
 
661
  }
662
  }
663
 
664
+ // Join for searching
665
  public function join_links_to_posts($join) {
666
+ global $wpdb, $typenow;
667
 
668
+ if( $typenow == PrliLink::$cpt ) {
 
 
669
  $join .= "JOIN {$wpdb->prefix}prli_links AS li ON {$wpdb->posts}.ID = li.link_cpt_id ";
670
  }
671
 
672
  return $join;
673
  }
674
 
675
+ public function search_links_table($where) {
676
+ global $wp_query, $wpdb, $typenow;
677
+
678
+ if( $typenow == PrliLink::$cpt && !empty($wp_query->query_vars['s']) ) {
679
+ $search = '%' . $wpdb->esc_like($wp_query->query_vars['s']) . '%';
680
+ $where .= $wpdb->prepare("OR (li.url LIKE %s OR li.slug LIKE %s) ", $search, $search);
681
+ }
682
+
683
+ return $where;
684
+ }
685
+
686
  // Where clause for searching link groups
687
  public function where_links_belong_to_legacy_group( $where ) {
688
  global $wp_query, $wpdb, $typenow;
app/controllers/PrliOnboardingController.php CHANGED
@@ -19,13 +19,16 @@ class PrliOnboardingController extends PrliBaseController {
19
  // existing install
20
  if ($this->is_major_update()) {
21
  update_option('prli_onboard', 'update');
 
22
  }
23
  } else {
24
  // fresh install
25
  update_option('prli_onboard', 'welcome');
 
26
  }
27
 
28
  update_option('prli_version', PRLI_VERSION);
 
29
  }
30
 
31
  protected function is_major_update() {
@@ -45,9 +48,11 @@ class PrliOnboardingController extends PrliBaseController {
45
  $onboard = get_option('prli_onboard');
46
 
47
  if ($onboard == 'welcome' || $onboard == 'update') {
48
- delete_option('prli_onboard');
49
- wp_redirect(admin_url("admin.php?page=pretty-link-{$onboard}"));
50
- exit;
 
 
51
  }
52
  }
53
 
19
  // existing install
20
  if ($this->is_major_update()) {
21
  update_option('prli_onboard', 'update');
22
+ wp_cache_delete('alloptions', 'options');
23
  }
24
  } else {
25
  // fresh install
26
  update_option('prli_onboard', 'welcome');
27
+ wp_cache_delete('alloptions', 'options');
28
  }
29
 
30
  update_option('prli_version', PRLI_VERSION);
31
+ wp_cache_delete('alloptions', 'options');
32
  }
33
 
34
  protected function is_major_update() {
48
  $onboard = get_option('prli_onboard');
49
 
50
  if ($onboard == 'welcome' || $onboard == 'update') {
51
+ if (delete_option('prli_onboard')) {
52
+ wp_cache_delete('alloptions', 'options');
53
+ wp_redirect(admin_url("admin.php?page=pretty-link-{$onboard}"), 307);
54
+ exit;
55
+ }
56
  }
57
  }
58
 
app/controllers/PrliPopupController.php CHANGED
@@ -129,6 +129,7 @@ class PrliPopupController extends PrliBaseController {
129
  }
130
  else {
131
  update_option($this->popup_stop_key($popup), 1);
 
132
  }
133
  }
134
 
@@ -167,7 +168,8 @@ class PrliPopupController extends PrliBaseController {
167
 
168
  private function set_popup_last_viewed_timestamp($popup) {
169
  $timestamp = time();
170
- return update_option('prli-popup-last-viewed', compact('popup','timestamp'));
 
171
  }
172
 
173
  private function get_popup_last_viewed_timestamp() {
129
  }
130
  else {
131
  update_option($this->popup_stop_key($popup), 1);
132
+ wp_cache_delete('alloptions', 'options');
133
  }
134
  }
135
 
168
 
169
  private function set_popup_last_viewed_timestamp($popup) {
170
  $timestamp = time();
171
+ update_option('prli-popup-last-viewed', compact('popup','timestamp'));
172
+ wp_cache_delete('alloptions', 'options');
173
  }
174
 
175
  private function get_popup_last_viewed_timestamp() {
app/controllers/PrliUpdateController.php CHANGED
@@ -47,11 +47,13 @@ class PrliUpdateController {
47
 
48
  public function set_edge_updates($updates) {
49
  update_option('plp_edge_updates', $updates);
 
50
  $this->edge_updates = $updates;
51
  }
52
 
53
  public function set_mothership_license($license) {
54
  update_option('plp_mothership_license', $license);
 
55
  $this->mothership_license = $license;
56
  }
57
 
@@ -86,6 +88,7 @@ class PrliUpdateController {
86
  $args = compact('domain');
87
  $act = $this->send_mothership_request("/license_keys/activate/{$this->mothership_license}", $args, 'post');
88
  update_option('prli_activated', true); // if we get here we're activated
 
89
  $this->manually_queue_update();
90
  $message = $act['message'];
91
 
@@ -126,7 +129,11 @@ class PrliUpdateController {
126
  public function check_license_activation() {
127
  $aov = get_option('prli_activation_override');
128
 
129
- if(!empty($aov)) { return update_option('prli_activated', true); }
 
 
 
 
130
 
131
  $domain = urlencode(PrliUtils::site_domain());
132
 
@@ -138,6 +145,7 @@ class PrliUpdateController {
138
 
139
  if(!empty($act) && is_array($act) && isset($act['status'])) {
140
  update_option('prli_activated', ($act['status']=='enabled'));
 
141
  }
142
  }
143
  catch(Exception $e) {
@@ -153,6 +161,7 @@ class PrliUpdateController {
153
  $errors = array();
154
  $this->mothership_license = stripslashes(PRETTYLINK_LICENSE_KEY);
155
  update_option($this->mothership_license_str, PRETTYLINK_LICENSE_KEY);
 
156
  $domain = urlencode(PrliUtils::site_domain());
157
 
158
  try {
@@ -165,6 +174,7 @@ class PrliUpdateController {
165
 
166
  $act = $this->send_mothership_request("/license_keys/activate/".PRETTYLINK_LICENSE_KEY, $args, 'post');
167
  update_option('prli_activated', true); // if we get here we're activated
 
168
 
169
  $this->manually_queue_update();
170
 
@@ -197,12 +207,15 @@ class PrliUpdateController {
197
 
198
  // Don't need to check the mothership for this one ... we just deactivated
199
  update_option('prli_activated', false);
 
200
 
201
  $message = $act['message'];
202
  }
203
  catch(Exception $e) {
204
  update_option('prli_activated', false);
 
205
  update_option($this->mothership_license_str, '');
 
206
  $errors[] = $e->getMessage();
207
  }
208
 
47
 
48
  public function set_edge_updates($updates) {
49
  update_option('plp_edge_updates', $updates);
50
+ wp_cache_delete('alloptions', 'options');
51
  $this->edge_updates = $updates;
52
  }
53
 
54
  public function set_mothership_license($license) {
55
  update_option('plp_mothership_license', $license);
56
+ wp_cache_delete('alloptions', 'options');
57
  $this->mothership_license = $license;
58
  }
59
 
88
  $args = compact('domain');
89
  $act = $this->send_mothership_request("/license_keys/activate/{$this->mothership_license}", $args, 'post');
90
  update_option('prli_activated', true); // if we get here we're activated
91
+ wp_cache_delete('alloptions', 'options');
92
  $this->manually_queue_update();
93
  $message = $act['message'];
94
 
129
  public function check_license_activation() {
130
  $aov = get_option('prli_activation_override');
131
 
132
+ if(!empty($aov)) {
133
+ update_option('prli_activated', true);
134
+ wp_cache_delete('alloptions', 'options');
135
+ return true;
136
+ }
137
 
138
  $domain = urlencode(PrliUtils::site_domain());
139
 
145
 
146
  if(!empty($act) && is_array($act) && isset($act['status'])) {
147
  update_option('prli_activated', ($act['status']=='enabled'));
148
+ wp_cache_delete('alloptions', 'options');
149
  }
150
  }
151
  catch(Exception $e) {
161
  $errors = array();
162
  $this->mothership_license = stripslashes(PRETTYLINK_LICENSE_KEY);
163
  update_option($this->mothership_license_str, PRETTYLINK_LICENSE_KEY);
164
+ wp_cache_delete('alloptions', 'options');
165
  $domain = urlencode(PrliUtils::site_domain());
166
 
167
  try {
174
 
175
  $act = $this->send_mothership_request("/license_keys/activate/".PRETTYLINK_LICENSE_KEY, $args, 'post');
176
  update_option('prli_activated', true); // if we get here we're activated
177
+ wp_cache_delete('alloptions', 'options');
178
 
179
  $this->manually_queue_update();
180
 
207
 
208
  // Don't need to check the mothership for this one ... we just deactivated
209
  update_option('prli_activated', false);
210
+ wp_cache_delete('alloptions', 'options');
211
 
212
  $message = $act['message'];
213
  }
214
  catch(Exception $e) {
215
  update_option('prli_activated', false);
216
+ wp_cache_delete('alloptions', 'options');
217
  update_option($this->mothership_license_str, '');
218
+ wp_cache_delete('alloptions', 'options');
219
  $errors[] = $e->getMessage();
220
  }
221
 
app/models/PrliDb.php CHANGED
@@ -143,6 +143,7 @@ class PrliDb {
143
 
144
  /***** SAVE DB VERSION *****/
145
  update_option('prli_db_version', $prli_db_version);
 
146
  }
147
 
148
  public function table_exists($table) {
143
 
144
  /***** SAVE DB VERSION *****/
145
  update_option('prli_db_version', $prli_db_version);
146
+ wp_cache_delete('alloptions', 'options');
147
  }
148
 
149
  public function table_exists($table) {
app/models/PrliLink.php CHANGED
@@ -638,6 +638,14 @@ class PrliLink {
638
  public function create_cpt_for_link($title, $created_at, $updated_at) {
639
  global $wpdb;
640
 
 
 
 
 
 
 
 
 
641
  $inserted = $wpdb->insert(
642
  $wpdb->posts,
643
  array(
638
  public function create_cpt_for_link($title, $created_at, $updated_at) {
639
  global $wpdb;
640
 
641
+ if (empty($created_at)) {
642
+ $created_at = current_time('mysql');
643
+ }
644
+
645
+ if (empty($updated_at)) {
646
+ $updated_at = current_time('mysql');
647
+ }
648
+
649
  $inserted = $wpdb->insert(
650
  $wpdb->posts,
651
  array(
app/models/PrliOptions.php CHANGED
@@ -70,6 +70,7 @@ class PrliOptions
70
  if($var = get_option( $prettybar_show_title )) {
71
  $this->prettybar_show_title = $var;
72
  delete_option( $prettybar_show_title );
 
73
  }
74
  else
75
  $this->prettybar_show_title = '1';
@@ -79,6 +80,7 @@ class PrliOptions
79
  if($var = get_option( $prettybar_show_description )) {
80
  $this->prettybar_show_description = $var;
81
  delete_option( $prettybar_show_description );
 
82
  }
83
  else
84
  $this->prettybar_show_description = '1';
@@ -88,6 +90,7 @@ class PrliOptions
88
  if($var = get_option( $prettybar_show_share_links )) {
89
  $this->prettybar_show_share_links = $var;
90
  delete_option( $prettybar_show_share_links );
 
91
  }
92
  else
93
  $this->prettybar_show_share_links = '1';
@@ -97,6 +100,7 @@ class PrliOptions
97
  if($var = get_option( $prettybar_show_target_url_link )) {
98
  $this->prettybar_show_target_url_link = $var;
99
  delete_option( $prettybar_show_target_url_link );
 
100
  }
101
  else
102
  $this->prettybar_show_target_url_link = '1';
@@ -106,6 +110,7 @@ class PrliOptions
106
  if($var = get_option( $link_track_me )) {
107
  $this->link_track_me = $var;
108
  delete_option( $link_track_me );
 
109
  }
110
  else
111
  $this->link_track_me = '1';
@@ -123,6 +128,7 @@ class PrliOptions
123
  if($var = get_option( $link_nofollow )) {
124
  $this->link_nofollow = $var;
125
  delete_option( $link_nofollow );
 
126
  }
127
  else
128
  $this->link_nofollow = '1';
@@ -132,30 +138,46 @@ class PrliOptions
132
  if($var = get_option( $link_track_as_pixel )) {
133
  $this->link_redirect_type = 'pixel';
134
  delete_option( $link_show_prettybar );
 
135
  delete_option( $link_ultra_cloak );
 
136
  delete_option( $link_track_as_pixel );
 
137
  delete_option( $link_redirect_type );
 
138
  }
139
  if($var = get_option( $link_show_prettybar )) {
140
  $this->link_redirect_type = 'prettybar';
141
  delete_option( $link_show_prettybar );
 
142
  delete_option( $link_ultra_cloak );
 
143
  delete_option( $link_track_as_pixel );
 
144
  delete_option( $link_redirect_type );
 
145
  }
146
  if($var = get_option( $link_ultra_cloak )) {
147
  $this->link_redirect_type = 'cloak';
148
  delete_option( $link_show_prettybar );
 
149
  delete_option( $link_ultra_cloak );
 
150
  delete_option( $link_track_as_pixel );
 
151
  delete_option( $link_redirect_type );
 
152
  }
153
  if($var = get_option( $link_redirect_type )) {
154
  $this->link_redirect_type = $var;
155
  delete_option( $link_show_prettybar );
 
156
  delete_option( $link_ultra_cloak );
 
157
  delete_option( $link_track_as_pixel );
 
158
  delete_option( $link_redirect_type );
 
159
  }
160
  else
161
  $this->link_redirect_type = '307';
@@ -165,6 +187,7 @@ class PrliOptions
165
  if($var = get_option( $prli_exclude_ips )) {
166
  $this->prli_exclude_ips = $var;
167
  delete_option( $prli_exclude_ips );
 
168
  }
169
  else
170
  $this->prli_exclude_ips = '';
@@ -174,6 +197,7 @@ class PrliOptions
174
  if($var = get_option( $prettybar_image_url )) {
175
  $this->prettybar_image_url = $var;
176
  delete_option( $prettybar_image_url );
 
177
  }
178
  else
179
  $this->prettybar_image_url = PRLI_IMAGES_URL . '/pretty-link-48x48.png';
@@ -183,6 +207,7 @@ class PrliOptions
183
  if($var = get_option( $prettybar_background_image_url )) {
184
  $this->prettybar_background_image_url = $var;
185
  delete_option( $prettybar_background_image_url );
 
186
  }
187
  else
188
  $this->prettybar_background_image_url = PRLI_IMAGES_URL . '/bar_background.png';
@@ -192,6 +217,7 @@ class PrliOptions
192
  if($var = get_option( $prettybar_color )) {
193
  $this->prettybar_color = $var;
194
  delete_option( $prettybar_color );
 
195
  }
196
  else
197
  $this->prettybar_color = '';
@@ -204,6 +230,7 @@ class PrliOptions
204
  if($var = get_option( $prettybar_text_color )) {
205
  $this->prettybar_text_color = $var;
206
  delete_option( $prettybar_text_color );
 
207
  }
208
  else
209
  $this->prettybar_text_color = '000000';
@@ -216,6 +243,7 @@ class PrliOptions
216
  if($var = get_option( $prettybar_link_color )) {
217
  $this->prettybar_link_color = $var;
218
  delete_option( $prettybar_link_color );
 
219
  }
220
  else
221
  $this->prettybar_link_color = '0000ee';
@@ -228,6 +256,7 @@ class PrliOptions
228
  if($var = get_option( $prettybar_hover_color )) {
229
  $this->prettybar_hover_color = $var;
230
  delete_option( $prettybar_hover_color );
 
231
  }
232
  else
233
  $this->prettybar_hover_color = 'ababab';
@@ -240,6 +269,7 @@ class PrliOptions
240
  if($var = get_option( $prettybar_visited_color )) {
241
  $this->prettybar_visited_color = $var;
242
  delete_option( $prettybar_visited_color );
 
243
  }
244
  else
245
  $this->prettybar_visited_color = '551a8b';
@@ -252,6 +282,7 @@ class PrliOptions
252
  if($var = get_option( $prettybar_title_limit )) {
253
  $this->prettybar_title_limit = $var;
254
  delete_option( $prettybar_title_limit );
 
255
  }
256
  else
257
  $this->prettybar_title_limit = '25';
@@ -261,6 +292,7 @@ class PrliOptions
261
  if($var = get_option( $prettybar_desc_limit )) {
262
  $this->prettybar_desc_limit = $var;
263
  delete_option( $prettybar_desc_limit );
 
264
  }
265
  else
266
  $this->prettybar_desc_limit = '30';
@@ -270,6 +302,7 @@ class PrliOptions
270
  if($var = get_option( $prettybar_link_limit )) {
271
  $this->prettybar_link_limit = $var;
272
  delete_option( $prettybar_link_limit );
 
273
  }
274
  else
275
  $this->prettybar_link_limit = '30';
@@ -295,6 +328,7 @@ class PrliOptions
295
  public function store() {
296
  $storage_array = (array)$this;
297
  update_option( 'prli_options', $storage_array );
 
298
  }
299
 
300
  public static function get_options() {
70
  if($var = get_option( $prettybar_show_title )) {
71
  $this->prettybar_show_title = $var;
72
  delete_option( $prettybar_show_title );
73
+ wp_cache_delete('alloptions', 'options');
74
  }
75
  else
76
  $this->prettybar_show_title = '1';
80
  if($var = get_option( $prettybar_show_description )) {
81
  $this->prettybar_show_description = $var;
82
  delete_option( $prettybar_show_description );
83
+ wp_cache_delete('alloptions', 'options');
84
  }
85
  else
86
  $this->prettybar_show_description = '1';
90
  if($var = get_option( $prettybar_show_share_links )) {
91
  $this->prettybar_show_share_links = $var;
92
  delete_option( $prettybar_show_share_links );
93
+ wp_cache_delete('alloptions', 'options');
94
  }
95
  else
96
  $this->prettybar_show_share_links = '1';
100
  if($var = get_option( $prettybar_show_target_url_link )) {
101
  $this->prettybar_show_target_url_link = $var;
102
  delete_option( $prettybar_show_target_url_link );
103
+ wp_cache_delete('alloptions', 'options');
104
  }
105
  else
106
  $this->prettybar_show_target_url_link = '1';
110
  if($var = get_option( $link_track_me )) {
111
  $this->link_track_me = $var;
112
  delete_option( $link_track_me );
113
+ wp_cache_delete('alloptions', 'options');
114
  }
115
  else
116
  $this->link_track_me = '1';
128
  if($var = get_option( $link_nofollow )) {
129
  $this->link_nofollow = $var;
130
  delete_option( $link_nofollow );
131
+ wp_cache_delete('alloptions', 'options');
132
  }
133
  else
134
  $this->link_nofollow = '1';
138
  if($var = get_option( $link_track_as_pixel )) {
139
  $this->link_redirect_type = 'pixel';
140
  delete_option( $link_show_prettybar );
141
+ wp_cache_delete('alloptions', 'options');
142
  delete_option( $link_ultra_cloak );
143
+ wp_cache_delete('alloptions', 'options');
144
  delete_option( $link_track_as_pixel );
145
+ wp_cache_delete('alloptions', 'options');
146
  delete_option( $link_redirect_type );
147
+ wp_cache_delete('alloptions', 'options');
148
  }
149
  if($var = get_option( $link_show_prettybar )) {
150
  $this->link_redirect_type = 'prettybar';
151
  delete_option( $link_show_prettybar );
152
+ wp_cache_delete('alloptions', 'options');
153
  delete_option( $link_ultra_cloak );
154
+ wp_cache_delete('alloptions', 'options');
155
  delete_option( $link_track_as_pixel );
156
+ wp_cache_delete('alloptions', 'options');
157
  delete_option( $link_redirect_type );
158
+ wp_cache_delete('alloptions', 'options');
159
  }
160
  if($var = get_option( $link_ultra_cloak )) {
161
  $this->link_redirect_type = 'cloak';
162
  delete_option( $link_show_prettybar );
163
+ wp_cache_delete('alloptions', 'options');
164
  delete_option( $link_ultra_cloak );
165
+ wp_cache_delete('alloptions', 'options');
166
  delete_option( $link_track_as_pixel );
167
+ wp_cache_delete('alloptions', 'options');
168
  delete_option( $link_redirect_type );
169
+ wp_cache_delete('alloptions', 'options');
170
  }
171
  if($var = get_option( $link_redirect_type )) {
172
  $this->link_redirect_type = $var;
173
  delete_option( $link_show_prettybar );
174
+ wp_cache_delete('alloptions', 'options');
175
  delete_option( $link_ultra_cloak );
176
+ wp_cache_delete('alloptions', 'options');
177
  delete_option( $link_track_as_pixel );
178
+ wp_cache_delete('alloptions', 'options');
179
  delete_option( $link_redirect_type );
180
+ wp_cache_delete('alloptions', 'options');
181
  }
182
  else
183
  $this->link_redirect_type = '307';
187
  if($var = get_option( $prli_exclude_ips )) {
188
  $this->prli_exclude_ips = $var;
189
  delete_option( $prli_exclude_ips );
190
+ wp_cache_delete('alloptions', 'options');
191
  }
192
  else
193
  $this->prli_exclude_ips = '';
197
  if($var = get_option( $prettybar_image_url )) {
198
  $this->prettybar_image_url = $var;
199
  delete_option( $prettybar_image_url );
200
+ wp_cache_delete('alloptions', 'options');
201
  }
202
  else
203
  $this->prettybar_image_url = PRLI_IMAGES_URL . '/pretty-link-48x48.png';
207
  if($var = get_option( $prettybar_background_image_url )) {
208
  $this->prettybar_background_image_url = $var;
209
  delete_option( $prettybar_background_image_url );
210
+ wp_cache_delete('alloptions', 'options');
211
  }
212
  else
213
  $this->prettybar_background_image_url = PRLI_IMAGES_URL . '/bar_background.png';
217
  if($var = get_option( $prettybar_color )) {
218
  $this->prettybar_color = $var;
219
  delete_option( $prettybar_color );
220
+ wp_cache_delete('alloptions', 'options');
221
  }
222
  else
223
  $this->prettybar_color = '';
230
  if($var = get_option( $prettybar_text_color )) {
231
  $this->prettybar_text_color = $var;
232
  delete_option( $prettybar_text_color );
233
+ wp_cache_delete('alloptions', 'options');
234
  }
235
  else
236
  $this->prettybar_text_color = '000000';
243
  if($var = get_option( $prettybar_link_color )) {
244
  $this->prettybar_link_color = $var;
245
  delete_option( $prettybar_link_color );
246
+ wp_cache_delete('alloptions', 'options');
247
  }
248
  else
249
  $this->prettybar_link_color = '0000ee';
256
  if($var = get_option( $prettybar_hover_color )) {
257
  $this->prettybar_hover_color = $var;
258
  delete_option( $prettybar_hover_color );
259
+ wp_cache_delete('alloptions', 'options');
260
  }
261
  else
262
  $this->prettybar_hover_color = 'ababab';
269
  if($var = get_option( $prettybar_visited_color )) {
270
  $this->prettybar_visited_color = $var;
271
  delete_option( $prettybar_visited_color );
272
+ wp_cache_delete('alloptions', 'options');
273
  }
274
  else
275
  $this->prettybar_visited_color = '551a8b';
282
  if($var = get_option( $prettybar_title_limit )) {
283
  $this->prettybar_title_limit = $var;
284
  delete_option( $prettybar_title_limit );
285
+ wp_cache_delete('alloptions', 'options');
286
  }
287
  else
288
  $this->prettybar_title_limit = '25';
292
  if($var = get_option( $prettybar_desc_limit )) {
293
  $this->prettybar_desc_limit = $var;
294
  delete_option( $prettybar_desc_limit );
295
+ wp_cache_delete('alloptions', 'options');
296
  }
297
  else
298
  $this->prettybar_desc_limit = '30';
302
  if($var = get_option( $prettybar_link_limit )) {
303
  $this->prettybar_link_limit = $var;
304
  delete_option( $prettybar_link_limit );
305
+ wp_cache_delete('alloptions', 'options');
306
  }
307
  else
308
  $this->prettybar_link_limit = '30';
328
  public function store() {
329
  $storage_array = (array)$this;
330
  update_option( 'prli_options', $storage_array );
331
+ wp_cache_delete('alloptions', 'options');
332
  }
333
 
334
  public static function get_options() {
app/models/PrliUtils.php CHANGED
@@ -90,60 +90,20 @@ class PrliUtils {
90
  }
91
 
92
  public static function is_slug_available( $slug, $id = '' ) {
93
- self::debug_log("*** In Slug is available for {$slug} & id=[{$id}]");
94
- global $wp_rewrite, $prli_link;
95
- $url = self::get_pretty_link_url($slug);
96
 
97
  if(empty($slug)) {
98
  $error = __('The Slug can\'t be empty', 'pretty-link');
99
- self::debug_log("slug_empty: {$error}");
100
  return new WP_Error('slug_empty', $error);
101
  }
102
 
103
- // Check Filepaths
104
- $filepath = ABSPATH . $slug;
105
- if( file_exists($filepath) ) {
106
- $error = sprintf(__('There\'s a file this slug conflicts with: %s', 'pretty-link'), $filepath);
107
- self::debug_log("slug_not_available: {$error}");
108
- return new WP_Error('slug_not_available', $error);
109
- }
110
-
111
  // Check other Pretty Links
112
  $slug_link = $prli_link->getOneFromSlug( $slug );
113
- self::debug_log(print_r($slug_link,true));
114
  if(!empty($slug_link) && ($id != $slug_link->id)) {
115
  $error = sprintf(__('This Pretty Link Slug is already taken. There\'s already another pretty link with this slug: %s', 'pretty-link'), $slug);
116
- self::debug_log("slug_not_available: {$error}");
117
  return new WP_Error('slug_not_available', $error);
118
  }
119
 
120
- // Check any other URLs
121
- $resp = wp_remote_head($url);
122
-
123
- self::debug_log("****** wp_remote_head returned: " . print_r($resp, true));
124
-
125
- if(!is_wp_error($resp)) {
126
- if($resp['headers'] instanceof Requests_Utility_CaseInsensitiveDictionary) {
127
- $resp_headers = $resp['headers']->getAll();
128
- }
129
- else {
130
- $resp_headers = $resp['headers'];
131
- }
132
- if($resp['response']['code'] == 200) {
133
- $error = sprintf(__('This Pretty Link Slug is already taken. The path resolved to URL: %s', 'pretty-link'), $url);
134
- }
135
- else if(in_array($resp['response']['code'], array(301,302,307)) &&
136
- isset($resp_headers['location']) &&
137
- preg_match('!^' . preg_quote($url,'!') . '/?$!', $resp_headers['location'])) {
138
- $error = sprintf(__('This Pretty Link Slug is already taken. The path redirected to URL: %s', 'pretty-link'), $resp_headers['location']);
139
- }
140
-
141
- if(isset($error)) {
142
- self::debug_log("slug_not_available: {$error}");
143
- return new WP_Error('slug_not_available', $error);
144
- }
145
- }
146
-
147
  return true;
148
  }
149
 
@@ -516,9 +476,13 @@ class PrliUtils {
516
  $this->delete_dir($plp_path);
517
 
518
  delete_option( 'prlipro_activated' );
 
519
  delete_option( 'prlipro_username' );
 
520
  delete_option( 'prlipro_password' );
 
521
  delete_option( 'prlipro-credentials' );
 
522
 
523
  // Yah- I just leave the pro database tables & data hanging
524
  // around in case you want to re-install it at some point
@@ -651,6 +615,7 @@ class PrliUtils {
651
  $creds = array('username' => $plp_username,
652
  'password' => $plp_password);
653
  update_option('prlipro-credentials', $creds);
 
654
  }
655
  }
656
 
@@ -698,7 +663,7 @@ class PrliUtils {
698
  $results = $wpdb->query($query);
699
  }
700
 
701
- if($db_version && $db_version < 19) {
702
  // Get 1000 links at a time
703
  $q = "
704
  SELECT *
@@ -729,12 +694,10 @@ class PrliUtils {
729
 
730
  $cpt_id = $prli_link->create_cpt_for_link($link->name, $link->created_at, $link->updated_at);
731
 
732
- if($cpt_id == false) {
733
- PrliUtils::debug_log("Unable to create CPT Post for Link (Migration)");
 
734
  }
735
-
736
- // update the link db record with the Link CPT ID
737
- $prli_link->update_link_cpt($link->id, $cpt_id);
738
  }
739
  }
740
  }
@@ -1029,19 +992,23 @@ class PrliUtils {
1029
  return self::current_user_can('subscriber');
1030
  }
1031
 
1032
- // Checks to see that the user is authorized to use Pretty Link based on the minimum role
1033
- public static function is_authorized() {
1034
  global $plp_options;
1035
 
1036
  $prli_update = new PrliUpdateController();
1037
 
1038
  $role = 'manage_options';
1039
 
1040
- if($prli_update->is_installed_and_activated() && isset($plp_options) && isset($plp_options->min_role)) {
1041
  $role = $plp_options->min_role;
1042
  }
1043
 
1044
- return self::current_user_can($role);
 
 
 
 
 
1045
  }
1046
 
1047
  public static function full_request_url() {
90
  }
91
 
92
  public static function is_slug_available( $slug, $id = '' ) {
93
+ global $prli_link;
 
 
94
 
95
  if(empty($slug)) {
96
  $error = __('The Slug can\'t be empty', 'pretty-link');
 
97
  return new WP_Error('slug_empty', $error);
98
  }
99
 
 
 
 
 
 
 
 
 
100
  // Check other Pretty Links
101
  $slug_link = $prli_link->getOneFromSlug( $slug );
 
102
  if(!empty($slug_link) && ($id != $slug_link->id)) {
103
  $error = sprintf(__('This Pretty Link Slug is already taken. There\'s already another pretty link with this slug: %s', 'pretty-link'), $slug);
 
104
  return new WP_Error('slug_not_available', $error);
105
  }
106
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
107
  return true;
108
  }
109
 
476
  $this->delete_dir($plp_path);
477
 
478
  delete_option( 'prlipro_activated' );
479
+ wp_cache_delete('alloptions', 'options');
480
  delete_option( 'prlipro_username' );
481
+ wp_cache_delete('alloptions', 'options');
482
  delete_option( 'prlipro_password' );
483
+ wp_cache_delete('alloptions', 'options');
484
  delete_option( 'prlipro-credentials' );
485
+ wp_cache_delete('alloptions', 'options');
486
 
487
  // Yah- I just leave the pro database tables & data hanging
488
  // around in case you want to re-install it at some point
615
  $creds = array('username' => $plp_username,
616
  'password' => $plp_password);
617
  update_option('prlipro-credentials', $creds);
618
+ wp_cache_delete('alloptions', 'options');
619
  }
620
  }
621
 
663
  $results = $wpdb->query($query);
664
  }
665
 
666
+ if($db_version && $db_version < 22) {
667
  // Get 1000 links at a time
668
  $q = "
669
  SELECT *
694
 
695
  $cpt_id = $prli_link->create_cpt_for_link($link->name, $link->created_at, $link->updated_at);
696
 
697
+ if($cpt_id) {
698
+ // update the link db record with the Link CPT ID
699
+ $prli_link->update_link_cpt($link->id, $cpt_id);
700
  }
 
 
 
701
  }
702
  }
703
  }
992
  return self::current_user_can('subscriber');
993
  }
994
 
995
+ public static function get_minimum_role() {
 
996
  global $plp_options;
997
 
998
  $prli_update = new PrliUpdateController();
999
 
1000
  $role = 'manage_options';
1001
 
1002
+ if($prli_update->is_installed() && isset($plp_options) && isset($plp_options->min_role)) {
1003
  $role = $plp_options->min_role;
1004
  }
1005
 
1006
+ return $role;
1007
+ }
1008
+
1009
+ // Checks to see that the user is authorized to use Pretty Link based on the minimum role
1010
+ public static function is_authorized() {
1011
+ return self::current_user_can(self::get_minimum_role());
1012
  }
1013
 
1014
  public static function full_request_url() {
app/views/admin/onboarding/update.php CHANGED
@@ -125,9 +125,7 @@
125
  </a>
126
  </div>
127
  </div>
128
- </div>
129
- </div>
130
-
131
  </ul>
132
 
133
  <h2><?php esc_html_e('Tons of Fixes and Enhancements', 'pretty-link'); ?></h2>
125
  </a>
126
  </div>
127
  </div>
128
+ </li>
 
 
129
  </ul>
130
 
131
  <h2><?php esc_html_e('Tons of Fixes and Enhancements', 'pretty-link'); ?></h2>
i18n/pretty-link.pot CHANGED
@@ -2,22 +2,22 @@
2
  # This file is distributed under the same license as the Pretty Links plugin.
3
  msgid ""
4
  msgstr ""
5
- "Project-Id-Version: Pretty Links 3.0.0\n"
6
  "Report-Msgid-Bugs-To: https://wordpress.org/support/plugin/pretty-link\n"
7
  "Last-Translator: FULL NAME <EMAIL@ADDRESS>\n"
8
  "Language-Team: LANGUAGE <LL@li.org>\n"
9
  "MIME-Version: 1.0\n"
10
  "Content-Type: text/plain; charset=UTF-8\n"
11
  "Content-Transfer-Encoding: 8bit\n"
12
- "POT-Creation-Date: 2019-07-16T13:21:15-06:00\n"
13
  "PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n"
14
  "X-Generator: WP-CLI 2.2.0\n"
15
  "X-Domain: pretty-link\n"
16
 
17
  #. Plugin Name of the plugin
18
  #: pro/app/views/links/prettybar.php:68
19
- #: app/controllers/PrliLinksController.php:43
20
- #: app/controllers/PrliLinksController.php:411
21
  msgid "Pretty Links"
22
  msgstr ""
23
 
@@ -64,8 +64,8 @@ msgstr ""
64
  #: app/models/PrliClick.php:256
65
  #: app/views/groups/list.php:81
66
  #: app/views/clicks/list.php:4
67
- #: app/controllers/PrliLinksController.php:409
68
- #: app/controllers/PrliAppController.php:118
69
  msgid "Clicks"
70
  msgstr ""
71
 
@@ -160,7 +160,7 @@ msgid "Digg"
160
  msgstr ""
161
 
162
  #: pro/app/models/PlpOptions.php:155
163
- #: app/controllers/PrliLinksController.php:506
164
  msgid "Email"
165
  msgstr ""
166
 
@@ -338,7 +338,7 @@ msgstr ""
338
  #: pro/app/views/links/form.php:38
339
  #: pro/app/views/links/form.php:73
340
  #: app/models/PrliClick.php:256
341
- #: app/controllers/PrliLinksController.php:410
342
  msgid "Date"
343
  msgstr ""
344
 
@@ -387,7 +387,7 @@ msgstr ""
387
 
388
  #: pro/app/views/links/form.php:133
389
  #: app/views/links/form_pro.php:30
390
- #: app/controllers/PrliLinksController.php:372
391
  msgid "Keywords"
392
  msgstr ""
393
 
@@ -828,7 +828,7 @@ msgstr ""
828
  #: pro/app/views/reports/edit.php:66
829
  #: app/views/options/form.php:999
830
  #: app/views/groups/edit.php:72
831
- #: app/controllers/PrliAppController.php:377
832
  msgid "Update"
833
  msgstr ""
834
 
@@ -859,7 +859,7 @@ msgstr ""
859
  #: pro/app/views/reports/list.php:20
860
  #: app/views/groups/list.php:24
861
  #: app/views/clicks/list.php:64
862
- #: app/controllers/PrliLinksController.php:502
863
  msgid "Reset"
864
  msgstr ""
865
 
@@ -2079,50 +2079,50 @@ msgstr ""
2079
  msgid "Pretty Link Post Build Index"
2080
  msgstr ""
2081
 
2082
- #: pro/app/controllers/PlpLinkCategoriesController.php:13
2083
  msgctxt "taxonomy general name"
2084
  msgid "Link Categories"
2085
  msgstr ""
2086
 
2087
- #: pro/app/controllers/PlpLinkCategoriesController.php:14
2088
  msgctxt "taxonomy singular name"
2089
  msgid "Link Category"
2090
  msgstr ""
2091
 
2092
- #: pro/app/controllers/PlpLinkCategoriesController.php:15
2093
  msgid "Search Link Categories"
2094
  msgstr ""
2095
 
2096
- #: pro/app/controllers/PlpLinkCategoriesController.php:16
2097
  msgid "All Link Categories"
2098
  msgstr ""
2099
 
2100
- #: pro/app/controllers/PlpLinkCategoriesController.php:17
2101
  msgid "Parent Link Category"
2102
  msgstr ""
2103
 
2104
- #: pro/app/controllers/PlpLinkCategoriesController.php:18
2105
  msgid "Parent Link Category:"
2106
  msgstr ""
2107
 
2108
- #: pro/app/controllers/PlpLinkCategoriesController.php:19
2109
  msgid "Edit Link Category"
2110
  msgstr ""
2111
 
2112
- #: pro/app/controllers/PlpLinkCategoriesController.php:20
2113
  msgid "Update Link Category"
2114
  msgstr ""
2115
 
2116
- #: pro/app/controllers/PlpLinkCategoriesController.php:21
2117
  msgid "Add New Link Category"
2118
  msgstr ""
2119
 
2120
- #: pro/app/controllers/PlpLinkCategoriesController.php:22
2121
  msgid "New Link Category Name"
2122
  msgstr ""
2123
 
2124
- #: pro/app/controllers/PlpLinkCategoriesController.php:23
2125
- #: app/controllers/PrliLinksController.php:370
2126
  msgid "Categories"
2127
  msgstr ""
2128
 
@@ -2185,8 +2185,7 @@ msgstr ""
2185
 
2186
  #: pro/app/controllers/PlpPostsController.php:139
2187
  #: pro/app/controllers/PlpPostsController.php:155
2188
- #: pro/app/controllers/PlpPostsController.php:236
2189
- #: pro/app/controllers/PlpPostsController.php:249
2190
  msgid "Untitled"
2191
  msgstr ""
2192
 
@@ -2219,62 +2218,62 @@ msgid "Unauthorized"
2219
  msgstr ""
2220
 
2221
  #: pro/app/controllers/PlpPublicLinksController.php:37
2222
- #: app/controllers/PrliLinksController.php:572
2223
  msgid "Security check failed"
2224
  msgstr ""
2225
 
2226
- #: pro/app/controllers/PlpLinkTagsController.php:13
2227
  msgctxt "taxonomy general name"
2228
  msgid "Link Tags"
2229
  msgstr ""
2230
 
2231
- #: pro/app/controllers/PlpLinkTagsController.php:14
2232
  msgctxt "taxonomy singular name"
2233
  msgid "Link Tag"
2234
  msgstr ""
2235
 
2236
- #: pro/app/controllers/PlpLinkTagsController.php:15
2237
  msgid "Search Link Tags"
2238
  msgstr ""
2239
 
2240
- #: pro/app/controllers/PlpLinkTagsController.php:16
2241
  msgid "All Link Tags"
2242
  msgstr ""
2243
 
2244
- #: pro/app/controllers/PlpLinkTagsController.php:19
2245
  msgid "Edit Link Tag"
2246
  msgstr ""
2247
 
2248
- #: pro/app/controllers/PlpLinkTagsController.php:20
2249
  msgid "Update Link Tag"
2250
  msgstr ""
2251
 
2252
- #: pro/app/controllers/PlpLinkTagsController.php:21
2253
  msgid "Add New Link Tag"
2254
  msgstr ""
2255
 
2256
- #: pro/app/controllers/PlpLinkTagsController.php:22
2257
  msgid "New Link Tag Name"
2258
  msgstr ""
2259
 
2260
- #: pro/app/controllers/PlpLinkTagsController.php:23
2261
  msgid "Separate Link Tags with commas"
2262
  msgstr ""
2263
 
2264
- #: pro/app/controllers/PlpLinkTagsController.php:24
2265
  msgid "Add or remove Link Tags"
2266
  msgstr ""
2267
 
2268
- #: pro/app/controllers/PlpLinkTagsController.php:25
2269
  msgid "Choose from the most used Link Tags"
2270
  msgstr ""
2271
 
2272
- #: pro/app/controllers/PlpLinkTagsController.php:26
2273
  msgid "No Link Tags found."
2274
  msgstr ""
2275
 
2276
- #: pro/app/controllers/PlpLinkTagsController.php:27
2277
- #: app/controllers/PrliLinksController.php:371
2278
  msgid "Tags"
2279
  msgstr ""
2280
 
@@ -3328,9 +3327,9 @@ msgstr ""
3328
 
3329
  #: app/helpers/PrliAppHelper.php:20
3330
  #: app/views/links/form.php:30
3331
- #: app/controllers/PrliLinksController.php:383
3332
- #: app/controllers/PrliLinksController.php:389
3333
- #: app/controllers/PrliLinksController.php:395
3334
  msgid "Pro"
3335
  msgstr ""
3336
 
@@ -3450,7 +3449,7 @@ msgstr ""
3450
  #: app/views/links/form_basic.php:48
3451
  #: app/views/shared/tinymce_form_popup.php:78
3452
  #: app/views/widgets/widget.php:15
3453
- #: app/controllers/PrliLinksController.php:44
3454
  msgid "Pretty Link"
3455
  msgstr ""
3456
 
@@ -3458,28 +3457,16 @@ msgstr ""
3458
  msgid "*** Pretty Links Debug: %s"
3459
  msgstr ""
3460
 
3461
- #: app/models/PrliUtils.php:98
3462
  msgid "The Slug can't be empty"
3463
  msgstr ""
3464
 
3465
- #: app/models/PrliUtils.php:106
3466
- msgid "There's a file this slug conflicts with: %s"
3467
- msgstr ""
3468
-
3469
- #: app/models/PrliUtils.php:115
3470
  msgid "This Pretty Link Slug is already taken. There's already another pretty link with this slug: %s"
3471
  msgstr ""
3472
 
3473
- #: app/models/PrliUtils.php:133
3474
- msgid "This Pretty Link Slug is already taken. The path resolved to URL: %s"
3475
- msgstr ""
3476
-
3477
- #: app/models/PrliUtils.php:138
3478
- msgid "This Pretty Link Slug is already taken. The path redirected to URL: %s"
3479
- msgstr ""
3480
-
3481
  #. translators: %1$s: open link tag, %2$s: close link tag, %3$s: br tag
3482
- #: app/models/PrliUtils.php:1107
3483
  msgid "Get started by %1$sadding a URL%2$s that you want to turn into a pretty link.%3$sCome back to see how many times it was clicked."
3484
  msgstr ""
3485
 
@@ -3653,7 +3640,7 @@ msgstr ""
3653
  #: app/views/shared/nav.php:9
3654
  #: app/views/admin/update/license.php:39
3655
  #: app/views/admin/onboarding/welcome.php:116
3656
- #: app/controllers/PrliAppController.php:276
3657
  msgid "Upgrade to Pro"
3658
  msgstr ""
3659
 
@@ -4282,21 +4269,21 @@ msgstr ""
4282
  msgid "Gutenberg Block Link Integration"
4283
  msgstr ""
4284
 
4285
- #: app/views/admin/onboarding/update.php:133
4286
  msgid "Tons of Fixes and Enhancements"
4287
  msgstr ""
4288
 
4289
- #: app/views/admin/onboarding/update.php:135
4290
  msgid "In addition to these streamlined, new features we’ve made hundreds of enhancements and numerous small fixes. Pretty Links Quick Wins is going to make your link experience easier, faster, more secure and more capable than ever before!"
4291
  msgstr ""
4292
 
4293
  #. translators: %1$s: open strong tag, %2$s: close strong tag
4294
- #: app/views/admin/onboarding/update.php:141
4295
  msgid "We're excited for you to start winning more today with %1$sPretty Link Quick Wins!%2$s"
4296
  msgstr ""
4297
 
4298
  #: app/views/options/form.php:3
4299
- #: app/controllers/PrliAppController.php:125
4300
  msgid "Options"
4301
  msgstr ""
4302
 
@@ -4550,7 +4537,7 @@ msgid "New Group"
4550
  msgstr ""
4551
 
4552
  #: app/views/tools/form.php:3
4553
- #: app/controllers/PrliAppController.php:122
4554
  msgid "Tools"
4555
  msgstr ""
4556
 
@@ -4760,27 +4747,27 @@ msgstr ""
4760
  msgid "Clicks %d-%d (%d Records)"
4761
  msgstr ""
4762
 
4763
- #: app/controllers/PrliUpdateController.php:72
4764
  msgid "Why you creepin'?"
4765
  msgstr ""
4766
 
4767
- #: app/controllers/PrliUpdateController.php:305
4768
  msgid "Check for Update"
4769
  msgstr ""
4770
 
4771
- #: app/controllers/PrliUpdateController.php:374
4772
  msgid "You had an HTTP error connecting to Caseproof's Mothership API"
4773
  msgstr ""
4774
 
4775
- #: app/controllers/PrliUpdateController.php:386
4776
  msgid "Your License Key was invalid"
4777
  msgstr ""
4778
 
4779
- #: app/controllers/PrliUpdateController.php:412
4780
  msgid "You do not have access."
4781
  msgstr ""
4782
 
4783
- #: app/controllers/PrliUpdateController.php:416
4784
  msgid "Edge updates couldn't be updated."
4785
  msgstr ""
4786
 
@@ -4796,15 +4783,15 @@ msgstr ""
4796
  msgid "No clicks older than %1$d days were found, so nothing was deleted"
4797
  msgstr ""
4798
 
4799
- #: app/controllers/PrliClicksController.php:89
4800
  msgid "IP Address: "
4801
  msgstr ""
4802
 
4803
- #: app/controllers/PrliClicksController.php:94
4804
  msgid "Visitor: "
4805
  msgstr ""
4806
 
4807
- #: app/controllers/PrliClicksController.php:99
4808
  msgid "All Links"
4809
  msgstr ""
4810
 
@@ -4897,8 +4884,8 @@ msgid "An unknown error occurred."
4897
  msgstr ""
4898
 
4899
  #: app/controllers/PrliPopupController.php:93
4900
- #: app/controllers/PrliLinksController.php:338
4901
- #: app/controllers/PrliLinksController.php:550
4902
  msgid "Forbidden"
4903
  msgstr ""
4904
 
@@ -4927,224 +4914,224 @@ msgstr ""
4927
  msgid "Pretty Link ID must be set for successful update."
4928
  msgstr ""
4929
 
4930
- #: app/controllers/PrliLinksController.php:45
4931
  msgid "Add New Pretty Link"
4932
  msgstr ""
4933
 
4934
- #: app/controllers/PrliLinksController.php:46
4935
  msgid "Edit Pretty Link"
4936
  msgstr ""
4937
 
4938
- #: app/controllers/PrliLinksController.php:47
4939
  #: js/editor/components/link-editor/index.js:324
4940
  #: js/editor.js:12
4941
  msgid "New Pretty Link"
4942
  msgstr ""
4943
 
4944
- #: app/controllers/PrliLinksController.php:48
4945
  msgid "View Pretty Link"
4946
  msgstr ""
4947
 
4948
- #: app/controllers/PrliLinksController.php:49
4949
  msgid "Search Pretty Links"
4950
  msgstr ""
4951
 
4952
- #: app/controllers/PrliLinksController.php:50
4953
  msgid "No Pretty Links found"
4954
  msgstr ""
4955
 
4956
- #: app/controllers/PrliLinksController.php:51
4957
  msgid "No Pretty Links found in Trash"
4958
  msgstr ""
4959
 
4960
- #: app/controllers/PrliLinksController.php:52
4961
  msgid "Parent Pretty Link:"
4962
  msgstr ""
4963
 
4964
- #: app/controllers/PrliLinksController.php:97
4965
  msgid "Pretty Link Settings"
4966
  msgstr ""
4967
 
4968
- #: app/controllers/PrliLinksController.php:326
4969
  msgid "Pretty Link Cleanup Visitor Locks"
4970
  msgstr ""
4971
 
4972
- #: app/controllers/PrliLinksController.php:346
4973
  msgid "Success!"
4974
  msgstr ""
4975
 
4976
- #: app/controllers/PrliLinksController.php:348
4977
  msgid "Fix the following errors:"
4978
  msgstr ""
4979
 
4980
- #: app/controllers/PrliLinksController.php:384
4981
  msgid "Upgrade to a Pretty Links premium plan to get Link Categories"
4982
  msgstr ""
4983
 
4984
- #: app/controllers/PrliLinksController.php:390
4985
  msgid "Upgrade to a Pretty Links premium plan to get Link Tags"
4986
  msgstr ""
4987
 
4988
- #: app/controllers/PrliLinksController.php:396
4989
  msgid "Upgrade to a Pretty Links premium plan to get Keyword Replacements"
4990
  msgstr ""
4991
 
4992
- #: app/controllers/PrliLinksController.php:402
4993
  msgid "Settings"
4994
  msgstr ""
4995
 
4996
- #: app/controllers/PrliLinksController.php:403
4997
  msgid "Link Title"
4998
  msgstr ""
4999
 
5000
- #: app/controllers/PrliLinksController.php:505
5001
  msgid "Tweet"
5002
  msgstr ""
5003
 
5004
- #: app/controllers/PrliLinksController.php:507
5005
  msgid "Target &raquo;"
5006
  msgstr ""
5007
 
5008
- #: app/controllers/PrliLinksController.php:508
5009
  msgid "Pretty Link &raquo;"
5010
  msgstr ""
5011
 
5012
- #: app/controllers/PrliLinksController.php:530
5013
- #: app/controllers/PrliLinksController.php:531
5014
  msgid "View Split Test Report"
5015
  msgstr ""
5016
 
5017
- #: app/controllers/PrliLinksController.php:556
5018
  msgid "Your Pretty Link was Successfully Reset"
5019
  msgstr ""
5020
 
5021
- #: app/controllers/PrliLinksController.php:564
5022
  msgid "Bad request"
5023
  msgstr ""
5024
 
5025
- #: app/controllers/PrliLinksController.php:568
5026
  msgid "Insufficient permissions"
5027
  msgstr ""
5028
 
5029
- #: app/controllers/PrliLinksController.php:597
5030
  msgid "An error occurred creating the link"
5031
  msgstr ""
5032
 
5033
- #: app/controllers/PrliLinksController.php:629
5034
  msgid "All Groups (Legacy)"
5035
  msgstr ""
5036
 
5037
- #: app/controllers/PrliAppController.php:84
5038
  msgid "Link Categories [Pro Only]"
5039
  msgstr ""
5040
 
5041
- #: app/controllers/PrliAppController.php:85
5042
  msgid "Categories [Pro]"
5043
  msgstr ""
5044
 
5045
- #: app/controllers/PrliAppController.php:92
5046
  msgid "Link Tags [Pro Only]"
5047
  msgstr ""
5048
 
5049
- #: app/controllers/PrliAppController.php:93
5050
  msgid "Tags [Pro]"
5051
  msgstr ""
5052
 
5053
- #: app/controllers/PrliAppController.php:100
5054
  msgid "Link Reports [Pro Only]"
5055
  msgstr ""
5056
 
5057
- #: app/controllers/PrliAppController.php:101
5058
  msgid "Reports [Pro]"
5059
  msgstr ""
5060
 
5061
- #: app/controllers/PrliAppController.php:108
5062
  msgid "Import / Export [Pro Only]"
5063
  msgstr ""
5064
 
5065
- #: app/controllers/PrliAppController.php:109
5066
  msgid "Import / Export [Pro]"
5067
  msgstr ""
5068
 
5069
- #: app/controllers/PrliAppController.php:118
5070
  msgid "Pretty Links | Clicks"
5071
  msgstr ""
5072
 
5073
- #: app/controllers/PrliAppController.php:122
5074
  msgid "Pretty Links | Tools"
5075
  msgstr ""
5076
 
5077
- #: app/controllers/PrliAppController.php:125
5078
  msgid "Pretty Links | Options"
5079
  msgstr ""
5080
 
 
5081
  #: app/controllers/PrliAppController.php:129
5082
- #: app/controllers/PrliAppController.php:132
5083
- #: app/controllers/PrliAppController.php:268
5084
  msgid "Activate"
5085
  msgstr ""
5086
 
5087
- #: app/controllers/PrliAppController.php:135
5088
  msgid "Upgrade"
5089
  msgstr ""
5090
 
5091
- #: app/controllers/PrliAppController.php:140
5092
  msgid "Welcome"
5093
  msgstr ""
5094
 
5095
- #: app/controllers/PrliAppController.php:141
5096
  msgid "What's New"
5097
  msgstr ""
5098
 
5099
- #: app/controllers/PrliAppController.php:267
5100
- #: app/controllers/PrliAppController.php:273
5101
- #: app/controllers/PrliAppController.php:278
5102
  msgid "Docs"
5103
  msgstr ""
5104
 
5105
- #: app/controllers/PrliAppController.php:271
5106
- #: app/controllers/PrliAppController.php:277
5107
  msgid "Activate Pro License"
5108
  msgstr ""
5109
 
5110
- #: app/controllers/PrliAppController.php:272
5111
  msgid "Buy"
5112
  msgstr ""
5113
 
5114
- #: app/controllers/PrliAppController.php:397
5115
  msgid "Are you sure you want to reset your Pretty Link? This will delete all of the statistical data about this Pretty Link in your database."
5116
  msgstr ""
5117
 
5118
  #. translators: %1$s: br tag, %2$s: open link tag, %3$s: close link tag
5119
- #: app/controllers/PrliAppController.php:483
5120
  msgid "You're almost done!%1$s%2$sFinish your Re-Install of Pretty Links Pro%3$s"
5121
  msgstr ""
5122
 
5123
- #: app/controllers/PrliAppController.php:498
5124
  msgid "Pretty Links Pro Successfully Uninstalled."
5125
  msgstr ""
5126
 
5127
- #: app/controllers/PrliAppController.php:547
5128
  msgid "Invalid server response"
5129
  msgstr ""
5130
 
5131
- #: app/controllers/PrliAppController.php:548
5132
  msgid "Ajax error"
5133
  msgstr ""
5134
 
5135
- #: app/controllers/PrliAppController.php:565
5136
  msgid "Pretty Link Quick Add"
5137
  msgstr ""
5138
 
5139
- #: app/controllers/PrliAppController.php:604
5140
  msgid "Your Pretty Links Pro installation isn't quite complete yet. %1$sAutomatically Upgrade to Enable Pretty Links Pro%2$s"
5141
  msgstr ""
5142
 
5143
- #: app/controllers/PrliAppController.php:625
5144
  msgid "Your Pretty Links Pro installation isn't quite complete yet.<br/>%1$sAutomatically Upgrade to Enable Pretty Links Pro%2$s"
5145
  msgstr ""
5146
 
5147
  #. translators: $1$s - Pretty Links plugin name; $2$s - WP.org review link; $3$s - WP.org review link.
5148
- #: app/controllers/PrliAppController.php:672
5149
  msgid "Enjoying %1$s? Please rate <a href=\"%2$s\" target=\"_blank\" rel=\"noopener noreferrer\">&#9733;&#9733;&#9733;&#9733;&#9733;</a> on <a href=\"%3$s\" target=\"_blank\" rel=\"noopener\">WordPress.org</a> to help us spread the word. Thanks from the Pretty Links team!"
5150
  msgstr ""
2
  # This file is distributed under the same license as the Pretty Links plugin.
3
  msgid ""
4
  msgstr ""
5
+ "Project-Id-Version: Pretty Links 3.0.1\n"
6
  "Report-Msgid-Bugs-To: https://wordpress.org/support/plugin/pretty-link\n"
7
  "Last-Translator: FULL NAME <EMAIL@ADDRESS>\n"
8
  "Language-Team: LANGUAGE <LL@li.org>\n"
9
  "MIME-Version: 1.0\n"
10
  "Content-Type: text/plain; charset=UTF-8\n"
11
  "Content-Transfer-Encoding: 8bit\n"
12
+ "POT-Creation-Date: 2019-07-17T17:24:03-06:00\n"
13
  "PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n"
14
  "X-Generator: WP-CLI 2.2.0\n"
15
  "X-Domain: pretty-link\n"
16
 
17
  #. Plugin Name of the plugin
18
  #: pro/app/views/links/prettybar.php:68
19
+ #: app/controllers/PrliLinksController.php:48
20
+ #: app/controllers/PrliLinksController.php:432
21
  msgid "Pretty Links"
22
  msgstr ""
23
 
64
  #: app/models/PrliClick.php:256
65
  #: app/views/groups/list.php:81
66
  #: app/views/clicks/list.php:4
67
+ #: app/controllers/PrliLinksController.php:430
68
+ #: app/controllers/PrliAppController.php:115
69
  msgid "Clicks"
70
  msgstr ""
71
 
160
  msgstr ""
161
 
162
  #: pro/app/models/PlpOptions.php:155
163
+ #: app/controllers/PrliLinksController.php:527
164
  msgid "Email"
165
  msgstr ""
166
 
338
  #: pro/app/views/links/form.php:38
339
  #: pro/app/views/links/form.php:73
340
  #: app/models/PrliClick.php:256
341
+ #: app/controllers/PrliLinksController.php:431
342
  msgid "Date"
343
  msgstr ""
344
 
387
 
388
  #: pro/app/views/links/form.php:133
389
  #: app/views/links/form_pro.php:30
390
+ #: app/controllers/PrliLinksController.php:393
391
  msgid "Keywords"
392
  msgstr ""
393
 
828
  #: pro/app/views/reports/edit.php:66
829
  #: app/views/options/form.php:999
830
  #: app/views/groups/edit.php:72
831
+ #: app/controllers/PrliAppController.php:374
832
  msgid "Update"
833
  msgstr ""
834
 
859
  #: pro/app/views/reports/list.php:20
860
  #: app/views/groups/list.php:24
861
  #: app/views/clicks/list.php:64
862
+ #: app/controllers/PrliLinksController.php:523
863
  msgid "Reset"
864
  msgstr ""
865
 
2079
  msgid "Pretty Link Post Build Index"
2080
  msgstr ""
2081
 
2082
+ #: pro/app/controllers/PlpLinkCategoriesController.php:15
2083
  msgctxt "taxonomy general name"
2084
  msgid "Link Categories"
2085
  msgstr ""
2086
 
2087
+ #: pro/app/controllers/PlpLinkCategoriesController.php:16
2088
  msgctxt "taxonomy singular name"
2089
  msgid "Link Category"
2090
  msgstr ""
2091
 
2092
+ #: pro/app/controllers/PlpLinkCategoriesController.php:17
2093
  msgid "Search Link Categories"
2094
  msgstr ""
2095
 
2096
+ #: pro/app/controllers/PlpLinkCategoriesController.php:18
2097
  msgid "All Link Categories"
2098
  msgstr ""
2099
 
2100
+ #: pro/app/controllers/PlpLinkCategoriesController.php:19
2101
  msgid "Parent Link Category"
2102
  msgstr ""
2103
 
2104
+ #: pro/app/controllers/PlpLinkCategoriesController.php:20
2105
  msgid "Parent Link Category:"
2106
  msgstr ""
2107
 
2108
+ #: pro/app/controllers/PlpLinkCategoriesController.php:21
2109
  msgid "Edit Link Category"
2110
  msgstr ""
2111
 
2112
+ #: pro/app/controllers/PlpLinkCategoriesController.php:22
2113
  msgid "Update Link Category"
2114
  msgstr ""
2115
 
2116
+ #: pro/app/controllers/PlpLinkCategoriesController.php:23
2117
  msgid "Add New Link Category"
2118
  msgstr ""
2119
 
2120
+ #: pro/app/controllers/PlpLinkCategoriesController.php:24
2121
  msgid "New Link Category Name"
2122
  msgstr ""
2123
 
2124
+ #: pro/app/controllers/PlpLinkCategoriesController.php:25
2125
+ #: app/controllers/PrliLinksController.php:391
2126
  msgid "Categories"
2127
  msgstr ""
2128
 
2185
 
2186
  #: pro/app/controllers/PlpPostsController.php:139
2187
  #: pro/app/controllers/PlpPostsController.php:155
2188
+ #: pro/app/controllers/PlpPostsController.php:237
 
2189
  msgid "Untitled"
2190
  msgstr ""
2191
 
2218
  msgstr ""
2219
 
2220
  #: pro/app/controllers/PlpPublicLinksController.php:37
2221
+ #: app/controllers/PrliLinksController.php:593
2222
  msgid "Security check failed"
2223
  msgstr ""
2224
 
2225
+ #: pro/app/controllers/PlpLinkTagsController.php:15
2226
  msgctxt "taxonomy general name"
2227
  msgid "Link Tags"
2228
  msgstr ""
2229
 
2230
+ #: pro/app/controllers/PlpLinkTagsController.php:16
2231
  msgctxt "taxonomy singular name"
2232
  msgid "Link Tag"
2233
  msgstr ""
2234
 
2235
+ #: pro/app/controllers/PlpLinkTagsController.php:17
2236
  msgid "Search Link Tags"
2237
  msgstr ""
2238
 
2239
+ #: pro/app/controllers/PlpLinkTagsController.php:18
2240
  msgid "All Link Tags"
2241
  msgstr ""
2242
 
2243
+ #: pro/app/controllers/PlpLinkTagsController.php:21
2244
  msgid "Edit Link Tag"
2245
  msgstr ""
2246
 
2247
+ #: pro/app/controllers/PlpLinkTagsController.php:22
2248
  msgid "Update Link Tag"
2249
  msgstr ""
2250
 
2251
+ #: pro/app/controllers/PlpLinkTagsController.php:23
2252
  msgid "Add New Link Tag"
2253
  msgstr ""
2254
 
2255
+ #: pro/app/controllers/PlpLinkTagsController.php:24
2256
  msgid "New Link Tag Name"
2257
  msgstr ""
2258
 
2259
+ #: pro/app/controllers/PlpLinkTagsController.php:25
2260
  msgid "Separate Link Tags with commas"
2261
  msgstr ""
2262
 
2263
+ #: pro/app/controllers/PlpLinkTagsController.php:26
2264
  msgid "Add or remove Link Tags"
2265
  msgstr ""
2266
 
2267
+ #: pro/app/controllers/PlpLinkTagsController.php:27
2268
  msgid "Choose from the most used Link Tags"
2269
  msgstr ""
2270
 
2271
+ #: pro/app/controllers/PlpLinkTagsController.php:28
2272
  msgid "No Link Tags found."
2273
  msgstr ""
2274
 
2275
+ #: pro/app/controllers/PlpLinkTagsController.php:29
2276
+ #: app/controllers/PrliLinksController.php:392
2277
  msgid "Tags"
2278
  msgstr ""
2279
 
3327
 
3328
  #: app/helpers/PrliAppHelper.php:20
3329
  #: app/views/links/form.php:30
3330
+ #: app/controllers/PrliLinksController.php:404
3331
+ #: app/controllers/PrliLinksController.php:410
3332
+ #: app/controllers/PrliLinksController.php:416
3333
  msgid "Pro"
3334
  msgstr ""
3335
 
3449
  #: app/views/links/form_basic.php:48
3450
  #: app/views/shared/tinymce_form_popup.php:78
3451
  #: app/views/widgets/widget.php:15
3452
+ #: app/controllers/PrliLinksController.php:49
3453
  msgid "Pretty Link"
3454
  msgstr ""
3455
 
3457
  msgid "*** Pretty Links Debug: %s"
3458
  msgstr ""
3459
 
3460
+ #: app/models/PrliUtils.php:96
3461
  msgid "The Slug can't be empty"
3462
  msgstr ""
3463
 
3464
+ #: app/models/PrliUtils.php:103
 
 
 
 
3465
  msgid "This Pretty Link Slug is already taken. There's already another pretty link with this slug: %s"
3466
  msgstr ""
3467
 
 
 
 
 
 
 
 
 
3468
  #. translators: %1$s: open link tag, %2$s: close link tag, %3$s: br tag
3469
+ #: app/models/PrliUtils.php:1074
3470
  msgid "Get started by %1$sadding a URL%2$s that you want to turn into a pretty link.%3$sCome back to see how many times it was clicked."
3471
  msgstr ""
3472
 
3640
  #: app/views/shared/nav.php:9
3641
  #: app/views/admin/update/license.php:39
3642
  #: app/views/admin/onboarding/welcome.php:116
3643
+ #: app/controllers/PrliAppController.php:273
3644
  msgid "Upgrade to Pro"
3645
  msgstr ""
3646
 
4269
  msgid "Gutenberg Block Link Integration"
4270
  msgstr ""
4271
 
4272
+ #: app/views/admin/onboarding/update.php:131
4273
  msgid "Tons of Fixes and Enhancements"
4274
  msgstr ""
4275
 
4276
+ #: app/views/admin/onboarding/update.php:133
4277
  msgid "In addition to these streamlined, new features we’ve made hundreds of enhancements and numerous small fixes. Pretty Links Quick Wins is going to make your link experience easier, faster, more secure and more capable than ever before!"
4278
  msgstr ""
4279
 
4280
  #. translators: %1$s: open strong tag, %2$s: close strong tag
4281
+ #: app/views/admin/onboarding/update.php:139
4282
  msgid "We're excited for you to start winning more today with %1$sPretty Link Quick Wins!%2$s"
4283
  msgstr ""
4284
 
4285
  #: app/views/options/form.php:3
4286
+ #: app/controllers/PrliAppController.php:122
4287
  msgid "Options"
4288
  msgstr ""
4289
 
4537
  msgstr ""
4538
 
4539
  #: app/views/tools/form.php:3
4540
+ #: app/controllers/PrliAppController.php:119
4541
  msgid "Tools"
4542
  msgstr ""
4543
 
4747
  msgid "Clicks %d-%d (%d Records)"
4748
  msgstr ""
4749
 
4750
+ #: app/controllers/PrliUpdateController.php:74
4751
  msgid "Why you creepin'?"
4752
  msgstr ""
4753
 
4754
+ #: app/controllers/PrliUpdateController.php:318
4755
  msgid "Check for Update"
4756
  msgstr ""
4757
 
4758
+ #: app/controllers/PrliUpdateController.php:387
4759
  msgid "You had an HTTP error connecting to Caseproof's Mothership API"
4760
  msgstr ""
4761
 
4762
+ #: app/controllers/PrliUpdateController.php:399
4763
  msgid "Your License Key was invalid"
4764
  msgstr ""
4765
 
4766
+ #: app/controllers/PrliUpdateController.php:425
4767
  msgid "You do not have access."
4768
  msgstr ""
4769
 
4770
+ #: app/controllers/PrliUpdateController.php:429
4771
  msgid "Edge updates couldn't be updated."
4772
  msgstr ""
4773
 
4783
  msgid "No clicks older than %1$d days were found, so nothing was deleted"
4784
  msgstr ""
4785
 
4786
+ #: app/controllers/PrliClicksController.php:90
4787
  msgid "IP Address: "
4788
  msgstr ""
4789
 
4790
+ #: app/controllers/PrliClicksController.php:95
4791
  msgid "Visitor: "
4792
  msgstr ""
4793
 
4794
+ #: app/controllers/PrliClicksController.php:100
4795
  msgid "All Links"
4796
  msgstr ""
4797
 
4884
  msgstr ""
4885
 
4886
  #: app/controllers/PrliPopupController.php:93
4887
+ #: app/controllers/PrliLinksController.php:359
4888
+ #: app/controllers/PrliLinksController.php:571
4889
  msgid "Forbidden"
4890
  msgstr ""
4891
 
4914
  msgid "Pretty Link ID must be set for successful update."
4915
  msgstr ""
4916
 
4917
+ #: app/controllers/PrliLinksController.php:50
4918
  msgid "Add New Pretty Link"
4919
  msgstr ""
4920
 
4921
+ #: app/controllers/PrliLinksController.php:51
4922
  msgid "Edit Pretty Link"
4923
  msgstr ""
4924
 
4925
+ #: app/controllers/PrliLinksController.php:52
4926
  #: js/editor/components/link-editor/index.js:324
4927
  #: js/editor.js:12
4928
  msgid "New Pretty Link"
4929
  msgstr ""
4930
 
4931
+ #: app/controllers/PrliLinksController.php:53
4932
  msgid "View Pretty Link"
4933
  msgstr ""
4934
 
4935
+ #: app/controllers/PrliLinksController.php:54
4936
  msgid "Search Pretty Links"
4937
  msgstr ""
4938
 
4939
+ #: app/controllers/PrliLinksController.php:55
4940
  msgid "No Pretty Links found"
4941
  msgstr ""
4942
 
4943
+ #: app/controllers/PrliLinksController.php:56
4944
  msgid "No Pretty Links found in Trash"
4945
  msgstr ""
4946
 
4947
+ #: app/controllers/PrliLinksController.php:57
4948
  msgid "Parent Pretty Link:"
4949
  msgstr ""
4950
 
4951
+ #: app/controllers/PrliLinksController.php:118
4952
  msgid "Pretty Link Settings"
4953
  msgstr ""
4954
 
4955
+ #: app/controllers/PrliLinksController.php:347
4956
  msgid "Pretty Link Cleanup Visitor Locks"
4957
  msgstr ""
4958
 
4959
+ #: app/controllers/PrliLinksController.php:367
4960
  msgid "Success!"
4961
  msgstr ""
4962
 
4963
+ #: app/controllers/PrliLinksController.php:369
4964
  msgid "Fix the following errors:"
4965
  msgstr ""
4966
 
4967
+ #: app/controllers/PrliLinksController.php:405
4968
  msgid "Upgrade to a Pretty Links premium plan to get Link Categories"
4969
  msgstr ""
4970
 
4971
+ #: app/controllers/PrliLinksController.php:411
4972
  msgid "Upgrade to a Pretty Links premium plan to get Link Tags"
4973
  msgstr ""
4974
 
4975
+ #: app/controllers/PrliLinksController.php:417
4976
  msgid "Upgrade to a Pretty Links premium plan to get Keyword Replacements"
4977
  msgstr ""
4978
 
4979
+ #: app/controllers/PrliLinksController.php:423
4980
  msgid "Settings"
4981
  msgstr ""
4982
 
4983
+ #: app/controllers/PrliLinksController.php:424
4984
  msgid "Link Title"
4985
  msgstr ""
4986
 
4987
+ #: app/controllers/PrliLinksController.php:526
4988
  msgid "Tweet"
4989
  msgstr ""
4990
 
4991
+ #: app/controllers/PrliLinksController.php:528
4992
  msgid "Target &raquo;"
4993
  msgstr ""
4994
 
4995
+ #: app/controllers/PrliLinksController.php:529
4996
  msgid "Pretty Link &raquo;"
4997
  msgstr ""
4998
 
4999
+ #: app/controllers/PrliLinksController.php:551
5000
+ #: app/controllers/PrliLinksController.php:552
5001
  msgid "View Split Test Report"
5002
  msgstr ""
5003
 
5004
+ #: app/controllers/PrliLinksController.php:577
5005
  msgid "Your Pretty Link was Successfully Reset"
5006
  msgstr ""
5007
 
5008
+ #: app/controllers/PrliLinksController.php:585
5009
  msgid "Bad request"
5010
  msgstr ""
5011
 
5012
+ #: app/controllers/PrliLinksController.php:589
5013
  msgid "Insufficient permissions"
5014
  msgstr ""
5015
 
5016
+ #: app/controllers/PrliLinksController.php:618
5017
  msgid "An error occurred creating the link"
5018
  msgstr ""
5019
 
5020
+ #: app/controllers/PrliLinksController.php:650
5021
  msgid "All Groups (Legacy)"
5022
  msgstr ""
5023
 
5024
+ #: app/controllers/PrliAppController.php:81
5025
  msgid "Link Categories [Pro Only]"
5026
  msgstr ""
5027
 
5028
+ #: app/controllers/PrliAppController.php:82
5029
  msgid "Categories [Pro]"
5030
  msgstr ""
5031
 
5032
+ #: app/controllers/PrliAppController.php:89
5033
  msgid "Link Tags [Pro Only]"
5034
  msgstr ""
5035
 
5036
+ #: app/controllers/PrliAppController.php:90
5037
  msgid "Tags [Pro]"
5038
  msgstr ""
5039
 
5040
+ #: app/controllers/PrliAppController.php:97
5041
  msgid "Link Reports [Pro Only]"
5042
  msgstr ""
5043
 
5044
+ #: app/controllers/PrliAppController.php:98
5045
  msgid "Reports [Pro]"
5046
  msgstr ""
5047
 
5048
+ #: app/controllers/PrliAppController.php:105
5049
  msgid "Import / Export [Pro Only]"
5050
  msgstr ""
5051
 
5052
+ #: app/controllers/PrliAppController.php:106
5053
  msgid "Import / Export [Pro]"
5054
  msgstr ""
5055
 
5056
+ #: app/controllers/PrliAppController.php:115
5057
  msgid "Pretty Links | Clicks"
5058
  msgstr ""
5059
 
5060
+ #: app/controllers/PrliAppController.php:119
5061
  msgid "Pretty Links | Tools"
5062
  msgstr ""
5063
 
5064
+ #: app/controllers/PrliAppController.php:122
5065
  msgid "Pretty Links | Options"
5066
  msgstr ""
5067
 
5068
+ #: app/controllers/PrliAppController.php:126
5069
  #: app/controllers/PrliAppController.php:129
5070
+ #: app/controllers/PrliAppController.php:265
 
5071
  msgid "Activate"
5072
  msgstr ""
5073
 
5074
+ #: app/controllers/PrliAppController.php:132
5075
  msgid "Upgrade"
5076
  msgstr ""
5077
 
5078
+ #: app/controllers/PrliAppController.php:137
5079
  msgid "Welcome"
5080
  msgstr ""
5081
 
5082
+ #: app/controllers/PrliAppController.php:138
5083
  msgid "What's New"
5084
  msgstr ""
5085
 
5086
+ #: app/controllers/PrliAppController.php:264
5087
+ #: app/controllers/PrliAppController.php:270
5088
+ #: app/controllers/PrliAppController.php:275
5089
  msgid "Docs"
5090
  msgstr ""
5091
 
5092
+ #: app/controllers/PrliAppController.php:268
5093
+ #: app/controllers/PrliAppController.php:274
5094
  msgid "Activate Pro License"
5095
  msgstr ""
5096
 
5097
+ #: app/controllers/PrliAppController.php:269
5098
  msgid "Buy"
5099
  msgstr ""
5100
 
5101
+ #: app/controllers/PrliAppController.php:394
5102
  msgid "Are you sure you want to reset your Pretty Link? This will delete all of the statistical data about this Pretty Link in your database."
5103
  msgstr ""
5104
 
5105
  #. translators: %1$s: br tag, %2$s: open link tag, %3$s: close link tag
5106
+ #: app/controllers/PrliAppController.php:480
5107
  msgid "You're almost done!%1$s%2$sFinish your Re-Install of Pretty Links Pro%3$s"
5108
  msgstr ""
5109
 
5110
+ #: app/controllers/PrliAppController.php:495
5111
  msgid "Pretty Links Pro Successfully Uninstalled."
5112
  msgstr ""
5113
 
5114
+ #: app/controllers/PrliAppController.php:544
5115
  msgid "Invalid server response"
5116
  msgstr ""
5117
 
5118
+ #: app/controllers/PrliAppController.php:545
5119
  msgid "Ajax error"
5120
  msgstr ""
5121
 
5122
+ #: app/controllers/PrliAppController.php:562
5123
  msgid "Pretty Link Quick Add"
5124
  msgstr ""
5125
 
5126
+ #: app/controllers/PrliAppController.php:601
5127
  msgid "Your Pretty Links Pro installation isn't quite complete yet. %1$sAutomatically Upgrade to Enable Pretty Links Pro%2$s"
5128
  msgstr ""
5129
 
5130
+ #: app/controllers/PrliAppController.php:622
5131
  msgid "Your Pretty Links Pro installation isn't quite complete yet.<br/>%1$sAutomatically Upgrade to Enable Pretty Links Pro%2$s"
5132
  msgstr ""
5133
 
5134
  #. translators: $1$s - Pretty Links plugin name; $2$s - WP.org review link; $3$s - WP.org review link.
5135
+ #: app/controllers/PrliAppController.php:670
5136
  msgid "Enjoying %1$s? Please rate <a href=\"%2$s\" target=\"_blank\" rel=\"noopener noreferrer\">&#9733;&#9733;&#9733;&#9733;&#9733;</a> on <a href=\"%3$s\" target=\"_blank\" rel=\"noopener\">WordPress.org</a> to help us spread the word. Thanks from the Pretty Links team!"
5137
  msgstr ""
pretty-link.php CHANGED
@@ -3,7 +3,7 @@
3
  Plugin Name: Pretty Links
4
  Plugin URI: https://prettylinks.com/pl/plugin-uri
5
  Description: Shrink, track and share any URL on the Internet from your WordPress website!
6
- Version: 3.0.0
7
  Author: Blair Williams
8
  Author URI: http://blairwilliams.com
9
  Text Domain: pretty-link
@@ -167,8 +167,8 @@ $prli_utils = new PrliUtils();
167
 
168
  global $prli_db_version, $plp_db_version;
169
 
170
- $prli_db_version = 21; // this is the version of the database we're moving to
171
- $plp_db_version = 9; // this is the version of the database we're moving to
172
 
173
  global $prli_app_controller;
174
 
3
  Plugin Name: Pretty Links
4
  Plugin URI: https://prettylinks.com/pl/plugin-uri
5
  Description: Shrink, track and share any URL on the Internet from your WordPress website!
6
+ Version: 3.0.1
7
  Author: Blair Williams
8
  Author URI: http://blairwilliams.com
9
  Text Domain: pretty-link
167
 
168
  global $prli_db_version, $plp_db_version;
169
 
170
+ $prli_db_version = 22; // this is the version of the database we're moving to
171
+ $plp_db_version = 10; // this is the version of the database we're moving to
172
 
173
  global $prli_app_controller;
174
 
readme.txt CHANGED
@@ -4,7 +4,7 @@ Donate link: https://prettylinks.com
4
  Tags: links, link, url, urls, affiliate, affiliates, pretty, marketing, redirect, redirection, forward, plugin, twitter, tweet, rewrite, shorturl, hoplink, hop, shortlink, short, shorten, shortening, click, clicks, track, tracking, tiny, tinyurl, budurl, shrinking, domain, shrink, mask, masking, cloak, cloaking, slug, slugs, admin, administration, stats, statistics, stat, statistic, email, ajax, javascript, ui, csv, download, page, post, pages, posts, shortcode, seo, automation, widget, widgets, dashboard
5
  Requires at least: 5.1
6
  Tested up to: 5.2.2
7
- Stable tag: 3.0.0
8
 
9
  Shrink, beautify, track, manage and share any URL on or off of your WordPress website. Create links that look how you want using your own domain name!
10
 
@@ -64,6 +64,18 @@ http://blairwilliams.com/w7a
64
  3. Make sure you have changed your permalink Common Settings in Settings -> Permalinks away from "Default" to something else. I prefer using custom and then "/%year%/%month%/%postname%/" for the simplest possible URL slugs with the best performance.
65
 
66
  == Changelog ==
 
 
 
 
 
 
 
 
 
 
 
 
67
  = 3.0.0 =
68
  * Re-designed Admin UI especially the Admin Links UI including links listing, adding new links and editing links
69
  * Added an Insert Pretty Link button for Gutenberg Paragraph Blocks
4
  Tags: links, link, url, urls, affiliate, affiliates, pretty, marketing, redirect, redirection, forward, plugin, twitter, tweet, rewrite, shorturl, hoplink, hop, shortlink, short, shorten, shortening, click, clicks, track, tracking, tiny, tinyurl, budurl, shrinking, domain, shrink, mask, masking, cloak, cloaking, slug, slugs, admin, administration, stats, statistics, stat, statistic, email, ajax, javascript, ui, csv, download, page, post, pages, posts, shortcode, seo, automation, widget, widgets, dashboard
5
  Requires at least: 5.1
6
  Tested up to: 5.2.2
7
+ Stable tag: 3.0.1
8
 
9
  Shrink, beautify, track, manage and share any URL on or off of your WordPress website. Create links that look how you want using your own domain name!
10
 
64
  3. Make sure you have changed your permalink Common Settings in Settings -> Permalinks away from "Default" to something else. I prefer using custom and then "/%year%/%month%/%postname%/" for the simplest possible URL slugs with the best performance.
65
 
66
  == Changelog ==
67
+ = 3.0.1 =
68
+ * Fix issues when accessing the plugin as a non-administrator
69
+ * Simplify the checks in is_slug_available
70
+ * Add slug and url as searchable fields in the links list
71
+ * Fix for high CPU issues and huge log sizes
72
+ * Fix layout issue on the update page
73
+ * Fix category migration not running
74
+ * Fix errors when dates are null
75
+ * Call wp_cache_delete after update/delete_option
76
+ * Only redirect if delete succeeds, redirect status code 307
77
+ * Fix failed category/cpt migrations
78
+
79
  = 3.0.0 =
80
  * Re-designed Admin UI especially the Admin Links UI including links listing, adding new links and editing links
81
  * Added an Insert Pretty Link button for Gutenberg Paragraph Blocks