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

Version Description

  • Fixed issue with mt_rand overflowing
  • Fixed another XSS Vulnerability
  • Fixed some issues with the automatic update process for pro users
  • Made some big security enhancements
  • Fixed some issues with the public link creation widget
  • Fixed an issue with the update database mechanism
  • Removed Keyword Caching from Pro
  • Optimized Keyword Replacement routine in Pro
  • Fixed a small issues with automatic post link creation routines
  • Changed the way slugs are generated and now default to 4 character slugs
Download this release

Release Info

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

Code changes from version 1.5.0 to 1.5.1

Files changed (50) hide show
  1. classes/controllers/PrliAppController.php +6 -16
  2. classes/models/PrliClick.php +4 -2
  3. classes/models/PrliGroup.php +4 -2
  4. classes/models/PrliLink.php +10 -17
  5. classes/models/PrliLinkMeta.php +4 -2
  6. classes/models/PrliOptions.php +4 -2
  7. classes/models/PrliUpdate.php +107 -133
  8. classes/models/PrliUrlUtils.php +4 -2
  9. classes/models/PrliUtils.php +20 -1
  10. classes/models/models.inc.php +27 -22
  11. classes/views/prli-clicks/csv.php +4 -1
  12. classes/views/prli-clicks/csv_download.php +1 -1
  13. classes/views/prli-clicks/head.php +1 -1
  14. classes/views/prli-clicks/list.php +1 -1
  15. classes/views/prli-dashboard-widget/widget.php +1 -1
  16. classes/views/prli-groups/edit.php +6 -1
  17. classes/views/prli-groups/head.php +6 -1
  18. classes/views/prli-groups/list.php +5 -1
  19. classes/views/prli-groups/new.php +6 -1
  20. classes/views/prli-links/bar.php +6 -1
  21. classes/views/prli-links/edit.php +6 -1
  22. classes/views/prli-links/form.php +1 -2
  23. classes/views/prli-links/head.php +6 -1
  24. classes/views/prli-links/list.php +6 -1
  25. classes/views/prli-links/new.php +6 -1
  26. classes/views/prli-links/ultra-cloak.php +6 -1
  27. classes/views/prli-options/form.php +6 -1
  28. classes/views/prli-options/head.php +7 -1
  29. classes/views/prli-options/pro-settings.php +6 -1
  30. classes/views/prli-tools/form.php +6 -1
  31. classes/views/shared/link-table-nav.php +4 -2
  32. classes/views/shared/nav.php +4 -1
  33. i18n/pretty-link.pot +142 -133
  34. pretty-bar.php +1 -1
  35. pretty-link.php +3 -1
  36. prli-add-link.php +4 -2
  37. prli-api.php +4 -3
  38. prli-bookmarklet.php +1 -2
  39. prli-clicks.php +3 -4
  40. prli-config.php +4 -2
  41. prli-dashboard-widget.php +3 -3
  42. prli-groups.php +4 -3
  43. prli-image-lookups.php +4 -3
  44. prli-links.php +4 -4
  45. prli-main.php +2 -0
  46. prli-options.php +4 -3
  47. prli-pro-settings.php +4 -1
  48. prli-tools.php +4 -2
  49. prli-xmlrpc.php +4 -2
  50. readme.txt +16 -1
classes/controllers/PrliAppController.php CHANGED
@@ -1,4 +1,7 @@
1
  <?php
 
 
 
2
  class PrliAppController
3
  {
4
  function PrliAppController()
@@ -57,23 +60,10 @@ class PrliAppController
57
  require_once(ABSPATH . WPINC . '/pluggable.php');
58
 
59
  if( wp_verify_nonce( $_REQUEST['_wpnonce'], "prli-db-upgrade" ) and current_user_can( 'update_core' ) ) {
60
- $old_prli_db_version = get_option('prli_db_version');
61
- $upgrade_db = ( !$old_prli_db_version or ( intval($old_prli_db_version) < $prli_db_version ) );
62
-
63
- if( !$upgrade_db and $prli_update->pro_is_installed_and_authorized()) {
64
- $old_prlipro_db_version = get_option('prlipro_db_version');
65
- $upgrade_db = ( !$old_prlipro_db_version or ( intval($old_prlipro_db_version) < $prlipro_db_version ) );
66
- }
67
-
68
- if( $upgrade_db ) {
69
- prli_install();
70
- wp_redirect("{$prli_blogurl}/wp-admin/admin.php?page=pretty-link/prli-links.php&message=" . urlencode(__('Your Database Has Been Successfully Upgraded.', 'pretty-link')));
71
- }
72
- else
73
- wp_redirect($prli_blogurl);
74
- }
75
  else
76
  wp_redirect($prli_blogurl);
77
  }
78
  }
79
- ?>
1
  <?php
2
+ if(!defined('ABSPATH'))
3
+ die('You are not allowed to call this page directly.');
4
+
5
  class PrliAppController
6
  {
7
  function PrliAppController()
60
  require_once(ABSPATH . WPINC . '/pluggable.php');
61
 
62
  if( wp_verify_nonce( $_REQUEST['_wpnonce'], "prli-db-upgrade" ) and current_user_can( 'update_core' ) ) {
63
+ prli_install();
64
+ wp_redirect("{$prli_blogurl}/wp-admin/admin.php?page=pretty-link/prli-links.php&message=" . urlencode(__('Your Database Has Been Successfully Upgraded.', 'pretty-link')));
65
+ }
 
 
 
 
 
 
 
 
 
 
 
 
66
  else
67
  wp_redirect($prli_blogurl);
68
  }
69
  }
 
classes/models/PrliClick.php CHANGED
@@ -1,4 +1,7 @@
1
  <?php
 
 
 
2
  class PrliClick
3
  {
4
  var $table_name;
@@ -310,5 +313,4 @@ class PrliClick
310
  return $values;
311
  }
312
 
313
- }
314
- ?>
1
  <?php
2
+ if(!defined('ABSPATH'))
3
+ die('You are not allowed to call this page directly.');
4
+
5
  class PrliClick
6
  {
7
  var $table_name;
313
  return $values;
314
  }
315
 
316
+ }
 
classes/models/PrliGroup.php CHANGED
@@ -1,4 +1,7 @@
1
  <?php
 
 
 
2
  class PrliGroup
3
  {
4
  var $table_name;
@@ -120,5 +123,4 @@ class PrliGroup
120
 
121
  return $errors;
122
  }
123
- }
124
- ?>
1
  <?php
2
+ if(!defined('ABSPATH'))
3
+ die('You are not allowed to call this page directly.');
4
+
5
  class PrliGroup
6
  {
7
  var $table_name;
123
 
124
  return $errors;
125
  }
126
+ }
 
classes/models/PrliLink.php CHANGED
@@ -1,4 +1,7 @@
1
  <?php
 
 
 
2
  class PrliLink
3
  {
4
  var $table_name;
@@ -371,28 +374,19 @@ class PrliLink
371
  return $results;
372
  }
373
 
374
- /** I'm generating a slug that is by default 2-3 characters long.
375
- * This gives us a possibility of 36^3 - 37 = 46,619 possible
376
- * random slugs. That should be *more* than enough slugs for
377
- * any website -- if I get any feedback that we need more then
378
- * I can always make a config option to raise the # of chars.
379
- */
380
- function generateValidSlug($num_chars = 3)
381
  {
382
- global $wpdb, $prli_utils;
383
-
384
- // We're doing a base 36 hash which is why we're always doing everything by 36
385
- $max_slug_value = pow(36,$num_chars);
386
- $min_slug_value = 37; // we want to have at least 2 characters in the slug
387
- $slug = base_convert( rand($min_slug_value,$max_slug_value), 10, 36 );
388
 
389
- $query = "SELECT slug FROM " . $this->table_name; // . " WHERE slug='" . $slug . "'";
390
  $slugs = $wpdb->get_col($query,0);
391
 
392
  // It is highly unlikely that we'll ever see 2 identical random slugs
393
  // but just in case, here's some code to prevent collisions
394
- while( in_array($slug,$slugs) or !$prli_utils->slugIsAvailable($slug) )
395
- $slug = base_convert( rand($min_slug_value,$max_slug_value), 10, 36 );
396
 
397
  return $slug;
398
  }
@@ -470,4 +464,3 @@ class PrliLink
470
  return $errors;
471
  }
472
  }
473
- ?>
1
  <?php
2
+ if(!defined('ABSPATH'))
3
+ die('You are not allowed to call this page directly.');
4
+
5
  class PrliLink
6
  {
7
  var $table_name;
374
  return $results;
375
  }
376
 
377
+ public function generateValidSlug($num_chars = 4)
 
 
 
 
 
 
378
  {
379
+ global $wpdb;
380
+
381
+ $slug = PrliUtils::gen_random_string($num_chars);
 
 
 
382
 
383
+ $query = "SELECT slug FROM {$this->table_name}";
384
  $slugs = $wpdb->get_col($query,0);
385
 
386
  // It is highly unlikely that we'll ever see 2 identical random slugs
387
  // but just in case, here's some code to prevent collisions
388
+ while( in_array($slug,$slugs) or !PrliUtils::slugIsAvailable($slug) )
389
+ $slug = PrliUtils::gen_random_string($num_chars);
390
 
391
  return $slug;
392
  }
464
  return $errors;
465
  }
466
  }
 
classes/models/PrliLinkMeta.php CHANGED
@@ -1,4 +1,7 @@
1
  <?php
 
 
 
2
  class PrliLinkMeta
3
  {
4
  var $table_name;
@@ -55,5 +58,4 @@ class PrliLinkMeta
55
  $query = $wpdb->prepare($query_str, $meta_key, $link_id);
56
  return $wpdb->query($query);
57
  }
58
- }
59
- ?>
1
  <?php
2
+ if(!defined('ABSPATH'))
3
+ die('You are not allowed to call this page directly.');
4
+
5
  class PrliLinkMeta
6
  {
7
  var $table_name;
58
  $query = $wpdb->prepare($query_str, $meta_key, $link_id);
59
  return $wpdb->query($query);
60
  }
61
+ }
 
classes/models/PrliOptions.php CHANGED
@@ -1,4 +1,7 @@
1
  <?php
 
 
 
2
  class PrliOptions
3
  {
4
  var $prli_exclude_ips;
@@ -271,5 +274,4 @@ class PrliOptions
271
  if(!isset($this->extended_tracking))
272
  $this->extended_tracking = 'normal';
273
  }
274
- }
275
- ?>
1
  <?php
2
+ if(!defined('ABSPATH'))
3
+ die('You are not allowed to call this page directly.');
4
+
5
  class PrliOptions
6
  {
7
  var $prli_exclude_ips;
274
  if(!isset($this->extended_tracking))
275
  $this->extended_tracking = 'normal';
276
  }
277
+ }
 
classes/models/PrliUpdate.php CHANGED
@@ -1,59 +1,57 @@
1
  <?php
 
2
 
3
  /** Okay, this class is not a pure model -- it contains all the functions
4
- * necessary to successfully provide an update mechanism for PrettyLinkPro!
5
  */
6
  class PrliUpdate
7
  {
8
- var $plugin_name;
9
- var $plugin_slug;
10
- var $plugin_url;
11
- var $pro_script;
12
- var $pro_mothership;
 
13
 
14
- var $pro_cred_store;
15
- var $pro_auth_store;
16
 
17
- var $pro_username_label;
18
- var $pro_password_label;
19
 
20
- var $pro_username_str;
21
- var $pro_password_str;
22
 
23
- var $pro_error_message_str;
24
-
25
- var $pro_check_interval;
26
- var $pro_last_checked_store;
27
-
28
- var $pro_username;
29
- var $pro_password;
30
- var $pro_mothership_xmlrpc_url;
31
-
32
- var $wordpress_version;
33
 
34
- function PrliUpdate()
 
 
 
 
35
  {
36
  // Where all the vitals are defined for this plugin
37
  $this->plugin_name = 'pretty-link/pretty-link.php';
38
  $this->plugin_slug = 'pretty-link';
39
- $this->plugin_url = 'http://blairwilliams.com/pl';
40
  $this->pro_script = PRLI_PATH . '/pro/pretty-link-pro.php';
41
  $this->pro_mothership = 'http://prettylinkpro.com';
 
42
  $this->pro_cred_store = 'prlipro-credentials';
43
  $this->pro_auth_store = 'prlipro_activated';
44
- $this->pro_last_checked_store = 'prlipro_last_checked_update';
45
  $this->pro_username_label = __('Pretty Link Pro Username', 'pretty-link');
46
  $this->pro_password_label = __('Pretty Link Pro Password', 'pretty-link');
47
  $this->pro_error_message_str = __('Your Pretty Link Pro Username or Password was Invalid', 'pretty-link');
 
48
 
49
  // Don't modify these variables
50
- $this->pro_check_interval = 60*15; // Checking every 15 minutes
51
  $this->pro_username_str = 'proplug-username';
52
  $this->pro_password_str = 'proplug-password';
53
  $this->pro_mothership_xmlrpc_url = $this->pro_mothership . '/xmlrpc.php';
54
-
55
- // Get the numerical version of wordpress
56
- $this->wordpress_version = (float)preg_replace( "#^([\d\.]*).*$#", '$1', get_bloginfo('version') );
57
 
58
  // Retrieve Pro Credentials
59
  $creds = get_option($this->pro_cred_store);
@@ -62,26 +60,39 @@ class PrliUpdate
62
  extract($creds);
63
  $this->pro_username = ((isset($username) and !empty($username))?$username:'');
64
  $this->pro_password = ((isset($password) and !empty($password))?$password:'');
65
-
66
- // Plugin Update Actions -- gotta make sure the right url is used with pro ... don't want any downgrades of course
67
- add_action('update_option_update_plugins', array($this, 'check_for_update_now')); // for WordPress 2.7
68
- add_action('update_option__transient_update_plugins', array($this, 'check_for_update_now')); // for WordPress 2.8
69
- add_action("admin_init", array($this, 'periodically_check_for_update'));
70
  }
 
 
 
71
  }
72
-
73
- function pro_is_installed()
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
74
  {
75
  return file_exists($this->pro_script);
76
  }
77
-
78
- function pro_is_authorized($force_check=false)
79
  {
80
  if( !empty($this->pro_username) and
81
  !empty($this->pro_password) )
82
  {
83
  $authorized = get_option($this->pro_auth_store);
84
- if(!$force_check and isset($authorized))
85
  return $authorized;
86
  else
87
  {
@@ -93,13 +104,13 @@ class PrliUpdate
93
 
94
  return false;
95
  }
96
-
97
- function pro_is_installed_and_authorized()
98
  {
99
  return ($this->pro_is_installed() and $this->pro_is_authorized());
100
  }
101
-
102
- function authorize_user($username, $password)
103
  {
104
  include_once( ABSPATH . 'wp-includes/class-IXR.php' );
105
 
@@ -111,7 +122,7 @@ class PrliUpdate
111
  return $client->getResponse();
112
  }
113
 
114
- function user_allowed_to_download()
115
  {
116
  include_once( ABSPATH . 'wp-includes/class-IXR.php' );
117
 
@@ -122,8 +133,8 @@ class PrliUpdate
122
 
123
  return $client->getResponse();
124
  }
125
-
126
- function pro_cred_form()
127
  {
128
  if(isset($_POST) and
129
  isset($_POST['process_cred_form']) and
@@ -138,6 +149,16 @@ class PrliUpdate
138
  ?>
139
  <div id="message" class="updated fade">
140
  <strong><?php printf(__('Your Username & Password was accepted<br/>Now you can %1$sUpgrade Automatically!%2$s', 'pretty-link'), "<a href=\"{$inst_install_url}\">","</a>"); ?></strong>
 
 
 
 
 
 
 
 
 
 
141
  </div>
142
  <?php
143
  }
@@ -156,13 +177,14 @@ class PrliUpdate
156
 
157
  $this->display_pro_cred_form();
158
  }
159
-
160
- function display_pro_cred_form()
161
  {
162
  // Yah, this is the view for the credentials form -- this class isn't a true model
 
163
  extract($this->get_pro_cred_form_vals());
164
  ?>
165
- <form name="cred_form" method="post" action="">
166
  <input type="hidden" name="process_cred_form" value="Y">
167
  <?php wp_nonce_field('cred_form'); ?>
168
 
@@ -186,49 +208,51 @@ class PrliUpdate
186
  </form>
187
  <?php
188
  }
189
-
190
- function process_pro_cred_form()
191
  {
192
  $creds = $this->get_pro_cred_form_vals();
193
  $user_authorized = $this->authorize_user($creds['username'], $creds['password']);
194
-
195
  if(!empty($user_authorized) and $user_authorized)
196
  {
197
  update_option($this->pro_cred_store, $creds);
198
  update_option($this->pro_auth_store, $user_authorized);
199
-
200
  extract($creds);
201
  $this->pro_username = ((isset($username) and !empty($username))?$username:'');
202
  $this->pro_password = ((isset($password) and !empty($password))?$password:'');
203
-
204
- if(!$this->pro_is_installed())
205
- $this->queue_update(true);
 
 
206
  }
207
-
208
  return $user_authorized;
209
  }
210
 
211
- function get_pro_cred_form_vals()
212
  {
213
  $username = ((isset($_POST[$this->pro_username_str]))?$_POST[$this->pro_username_str]:$this->pro_username);
214
  $password = ((isset($_POST[$this->pro_password_str]))?$_POST[$this->pro_password_str]:$this->pro_password);
215
-
216
  return compact('username','password');
217
  }
218
-
219
- function get_download_url($version)
220
  {
221
  include_once( ABSPATH . 'wp-includes/class-IXR.php' );
222
 
223
  $client = new IXR_Client( $this->pro_mothership_xmlrpc_url );
224
 
225
- if( !$client->query( 'proplug.get_encoded_download_url', $this->pro_username, $this->pro_password, $version ) )
226
  return false;
227
 
228
- return base64_decode($client->getResponse());
229
  }
230
-
231
- function get_current_version()
232
  {
233
  include_once( ABSPATH . 'wp-includes/class-IXR.php' );
234
 
@@ -239,92 +263,42 @@ class PrliUpdate
239
 
240
  return $client->getResponse();
241
  }
242
-
243
- function queue_update($force=false)
244
- {
245
- static $already_set_option, $already_set_transient, $already_set_site_transient;
246
-
247
- if(!is_admin())
248
- return;
249
-
250
- // Make sure this method doesn't check back with the mothership too often
251
- if($already_set_option or $already_set_transient or $already_set_site_transient)
252
- return;
253
 
 
 
254
  if($this->pro_is_authorized())
255
  {
256
  // If pro is authorized but not installed then we need to force an upgrade
257
  if(!$this->pro_is_installed())
258
  $force=true;
259
-
260
- if($this->wordpress_version >= 3.0)
261
- $plugin_updates = get_site_transient("update_plugins");
262
- else
263
- {
264
- if(function_exists('get_transient'))
265
- $plugin_updates = get_transient("update_plugins");
266
- else
267
- $plugin_updates = get_option("update_plugins");
268
- }
269
-
270
  $curr_version = $this->get_current_version();
271
- $installed_version = $plugin_updates->checked[$this->plugin_name];
272
-
273
- if( $force or ( $curr_version != $installed_version ) )
274
  {
275
  $download_url = $this->get_download_url($curr_version);
276
 
277
  if(!empty($download_url) and $download_url and $this->user_allowed_to_download())
278
- {
279
- if(isset($plugin_updates->response[$this->plugin_name]))
280
- unset($plugin_updates->response[$this->plugin_name]);
281
 
282
- $plugin_updates->response[$this->plugin_name] = new stdClass();
283
- $plugin_updates->response[$this->plugin_name]->id = '0';
284
- $plugin_updates->response[$this->plugin_name]->slug = $this->plugin_slug;
285
- $plugin_updates->response[$this->plugin_name]->new_version = $curr_version;
286
- $plugin_updates->response[$this->plugin_name]->url = $this->plugin_url;
287
- $plugin_updates->response[$this->plugin_name]->package = $download_url;
288
  }
289
  }
290
  else
291
  {
292
- if(isset($plugin_updates->response[$this->plugin_name]))
293
- unset($plugin_updates->response[$this->plugin_name]);
294
- }
295
-
296
- if( ( $this->wordpress_version >= 3.0 ) and !$already_set_site_transient )
297
- {
298
- $already_set_site_transient = true;
299
- set_site_transient("update_plugins", $plugin_updates); // for WordPress 3.0
300
- }
301
- else if( function_exists('set_transient') and !$already_set_transient )
302
- {
303
- $already_set_transient = true;
304
- set_transient("update_plugins", $plugin_updates); // for WordPress 2.8+
305
- }
306
- else if( !$already_set_option )
307
- {
308
- $already_set_option = true;
309
- update_option("update_plugins", $plugin_updates); // for WordPress 2.7+
310
  }
311
  }
312
- }
313
-
314
- function check_for_update_now()
315
- {
316
- $this->queue_update();
317
- }
318
 
319
- function periodically_check_for_update()
320
- {
321
- $last_checked = get_option($this->pro_last_checked_store);
322
-
323
- if(!$last_checked or ((time() - $last_checked) >= $this->pro_check_interval))
324
- {
325
- $this->queue_update();
326
- update_option($this->pro_last_checked_store, time());
327
- }
328
  }
329
  }
330
- ?>
1
  <?php
2
+ if(!defined('ABSPATH')) die('You are not allowed to call this page directly.');
3
 
4
  /** Okay, this class is not a pure model -- it contains all the functions
5
+ * necessary to successfully provide an update mechanism for Pretty Link Pro
6
  */
7
  class PrliUpdate
8
  {
9
+ public $plugin_name;
10
+ public $plugin_slug;
11
+ public $plugin_url;
12
+ public $pro_script;
13
+ public $pro_mothership;
14
+ public $get_started_page;
15
 
16
+ public $pro_cred_store;
17
+ public $pro_auth_store;
18
 
19
+ public $pro_username_label;
20
+ public $pro_password_label;
21
 
22
+ public $pro_username_str;
23
+ public $pro_password_str;
24
 
25
+ public $pro_error_message_str;
26
+
27
+ public $activation_order;
 
 
 
 
 
 
 
28
 
29
+ public $pro_username;
30
+ public $pro_password;
31
+ public $pro_mothership_xmlrpc_url;
32
+
33
+ function __construct()
34
  {
35
  // Where all the vitals are defined for this plugin
36
  $this->plugin_name = 'pretty-link/pretty-link.php';
37
  $this->plugin_slug = 'pretty-link';
38
+ $this->plugin_url = 'http://prettylinkpro.com';
39
  $this->pro_script = PRLI_PATH . '/pro/pretty-link-pro.php';
40
  $this->pro_mothership = 'http://prettylinkpro.com';
41
+ $this->get_started_page = 'pretty-link/prli-links.php';
42
  $this->pro_cred_store = 'prlipro-credentials';
43
  $this->pro_auth_store = 'prlipro_activated';
 
44
  $this->pro_username_label = __('Pretty Link Pro Username', 'pretty-link');
45
  $this->pro_password_label = __('Pretty Link Pro Password', 'pretty-link');
46
  $this->pro_error_message_str = __('Your Pretty Link Pro Username or Password was Invalid', 'pretty-link');
47
+ $this->activation_order = 'dontcare';
48
 
49
  // Don't modify these variables
 
50
  $this->pro_username_str = 'proplug-username';
51
  $this->pro_password_str = 'proplug-password';
52
  $this->pro_mothership_xmlrpc_url = $this->pro_mothership . '/xmlrpc.php';
53
+
54
+ add_filter( 'pre_set_site_transient_update_plugins', array( &$this, 'queue_update' ) );
 
55
 
56
  // Retrieve Pro Credentials
57
  $creds = get_option($this->pro_cred_store);
60
  extract($creds);
61
  $this->pro_username = ((isset($username) and !empty($username))?$username:'');
62
  $this->pro_password = ((isset($password) and !empty($password))?$password:'');
 
 
 
 
 
63
  }
64
+
65
+ if(isset($this->activation_order) and ($this->activation_order != 'dontcare'))
66
+ add_action("activated_plugin", array(&$this,'reorder_activation'));
67
  }
68
+
69
+ public function reorder_activation() {
70
+ // ensure path to this file is via main wp plugin path
71
+ $this_plugin = plugin_basename(trim($this->pro_script));
72
+ $active_plugins = get_option('active_plugins');
73
+ $this_plugin_key = array_search($this_plugin, $active_plugins);
74
+ array_splice($active_plugins, $this_plugin_key, 1);
75
+
76
+ if($this->activation_order == 'last')
77
+ array_push($active_plugins, $this_plugin);
78
+ else
79
+ array_unshift($active_plugins, $this_plugin);
80
+
81
+ update_option('active_plugins', $active_plugins);
82
+ }
83
+
84
+ public function pro_is_installed()
85
  {
86
  return file_exists($this->pro_script);
87
  }
88
+
89
+ public function pro_is_authorized($force_check=false)
90
  {
91
  if( !empty($this->pro_username) and
92
  !empty($this->pro_password) )
93
  {
94
  $authorized = get_option($this->pro_auth_store);
95
+ if(!$force_check and isset($authorized) and ($authorized===true or $authorized===false))
96
  return $authorized;
97
  else
98
  {
104
 
105
  return false;
106
  }
107
+
108
+ public function pro_is_installed_and_authorized()
109
  {
110
  return ($this->pro_is_installed() and $this->pro_is_authorized());
111
  }
112
+
113
+ public function authorize_user($username, $password)
114
  {
115
  include_once( ABSPATH . 'wp-includes/class-IXR.php' );
116
 
122
  return $client->getResponse();
123
  }
124
 
125
+ public function user_allowed_to_download()
126
  {
127
  include_once( ABSPATH . 'wp-includes/class-IXR.php' );
128
 
133
 
134
  return $client->getResponse();
135
  }
136
+
137
+ public function pro_cred_form()
138
  {
139
  if(isset($_POST) and
140
  isset($_POST['process_cred_form']) and
149
  ?>
150
  <div id="message" class="updated fade">
151
  <strong><?php printf(__('Your Username & Password was accepted<br/>Now you can %1$sUpgrade Automatically!%2$s', 'pretty-link'), "<a href=\"{$inst_install_url}\">","</a>"); ?></strong>
152
+ </div>
153
+ <?php
154
+ }
155
+ else
156
+ {
157
+ $plugin_url = wp_nonce_url("admin.php?page={$this->get_started_page}", "configure-plugin_{$this->get_started_page}");
158
+
159
+ ?>
160
+ <div id="message" class="updated fade">
161
+ <strong><?php printf(__('Your Username & Password was accepted<br/>Now you can %1$sGet Started!%2$s', 'pretty-link'), "<a href=\"{$plugin_url}\">","</a>"); ?></strong>
162
  </div>
163
  <?php
164
  }
177
 
178
  $this->display_pro_cred_form();
179
  }
180
+
181
+ public function display_pro_cred_form()
182
  {
183
  // Yah, this is the view for the credentials form -- this class isn't a true model
184
+ $this_uri = preg_replace('#&.*?$#', '', str_replace( '%7E', '~', $_SERVER['REQUEST_URI']));
185
  extract($this->get_pro_cred_form_vals());
186
  ?>
187
+ <form name="cred_form" method="post" action="<?php echo $this_uri; ?>">
188
  <input type="hidden" name="process_cred_form" value="Y">
189
  <?php wp_nonce_field('cred_form'); ?>
190
 
208
  </form>
209
  <?php
210
  }
211
+
212
+ public function process_pro_cred_form()
213
  {
214
  $creds = $this->get_pro_cred_form_vals();
215
  $user_authorized = $this->authorize_user($creds['username'], $creds['password']);
216
+
217
  if(!empty($user_authorized) and $user_authorized)
218
  {
219
  update_option($this->pro_cred_store, $creds);
220
  update_option($this->pro_auth_store, $user_authorized);
221
+
222
  extract($creds);
223
  $this->pro_username = ((isset($username) and !empty($username))?$username:'');
224
  $this->pro_password = ((isset($password) and !empty($password))?$password:'');
225
+
226
+ if(!$this->pro_is_installed()) {
227
+ $transient = get_site_transient("update_plugins");
228
+ set_site_transient("update_plugins",$this->queue_update($transient, true));
229
+ }
230
  }
231
+
232
  return $user_authorized;
233
  }
234
 
235
+ public function get_pro_cred_form_vals()
236
  {
237
  $username = ((isset($_POST[$this->pro_username_str]))?$_POST[$this->pro_username_str]:$this->pro_username);
238
  $password = ((isset($_POST[$this->pro_password_str]))?$_POST[$this->pro_password_str]:$this->pro_password);
239
+
240
  return compact('username','password');
241
  }
242
+
243
+ public function get_download_url($version)
244
  {
245
  include_once( ABSPATH . 'wp-includes/class-IXR.php' );
246
 
247
  $client = new IXR_Client( $this->pro_mothership_xmlrpc_url );
248
 
249
+ if( !$client->query( 'proplug.get_download_url', $this->pro_username, $this->pro_password, $version ) )
250
  return false;
251
 
252
+ return $client->getResponse();
253
  }
254
+
255
+ public function get_current_version()
256
  {
257
  include_once( ABSPATH . 'wp-includes/class-IXR.php' );
258
 
263
 
264
  return $client->getResponse();
265
  }
 
 
 
 
 
 
 
 
 
 
 
266
 
267
+ public function queue_update($transient, $force=false)
268
+ {
269
  if($this->pro_is_authorized())
270
  {
271
  // If pro is authorized but not installed then we need to force an upgrade
272
  if(!$this->pro_is_installed())
273
  $force=true;
274
+
 
 
 
 
 
 
 
 
 
 
275
  $curr_version = $this->get_current_version();
276
+ $installed_version = $transient->checked[$this->plugin_name];
277
+
278
+ if( $force or version_compare( $curr_version, $installed_version, '>' ) )
279
  {
280
  $download_url = $this->get_download_url($curr_version);
281
 
282
  if(!empty($download_url) and $download_url and $this->user_allowed_to_download())
283
+ {
284
+ if(isset($transient->response[$this->plugin_name]))
285
+ unset($transient->response[$this->plugin_name]);
286
 
287
+ $transient->response[$this->plugin_name] = new stdClass();
288
+ $transient->response[$this->plugin_name]->id = '0';
289
+ $transient->response[$this->plugin_name]->slug = $this->plugin_slug;
290
+ $transient->response[$this->plugin_name]->new_version = $curr_version;
291
+ $transient->response[$this->plugin_name]->url = $this->plugin_url;
292
+ $transient->response[$this->plugin_name]->package = $download_url;
293
  }
294
  }
295
  else
296
  {
297
+ if(isset($transient->response[$this->plugin_name]))
298
+ unset($transient->response[$this->plugin_name]);
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
299
  }
300
  }
 
 
 
 
 
 
301
 
302
+ return $transient;
 
 
 
 
 
 
 
 
303
  }
304
  }
 
classes/models/PrliUrlUtils.php CHANGED
@@ -1,4 +1,7 @@
1
  <?php
 
 
 
2
  class PrliUrlUtils {
3
 
4
  function get_title($url, $slug='')
@@ -160,5 +163,4 @@ class PrliUrlUtils {
160
  else
161
  return trim($contents);
162
  }
163
- }
164
- ?>
1
  <?php
2
+ if(!defined('ABSPATH'))
3
+ die('You are not allowed to call this page directly.');
4
+
5
  class PrliUrlUtils {
6
 
7
  function get_title($url, $slug='')
163
  else
164
  return trim($contents);
165
  }
166
+ }
 
classes/models/PrliUtils.php CHANGED
@@ -1,4 +1,7 @@
1
  <?php
 
 
 
2
  require_once('models.inc.php');
3
 
4
  class PrliUtils
@@ -824,6 +827,12 @@ class PrliUtils
824
  dbDelta($sql);
825
  }
826
 
 
 
 
 
 
 
827
  /***** SAVE DB VERSION *****/
828
  delete_option('prlipro_db_version');
829
  add_option('prlipro_db_version',$prlipro_db_version);
@@ -1174,5 +1183,15 @@ class PrliUtils
1174
  $wpdb->query($query);
1175
  }
1176
  }
 
 
 
 
 
 
 
 
 
 
 
1177
  }
1178
- ?>
1
  <?php
2
+ if(!defined('ABSPATH'))
3
+ die('You are not allowed to call this page directly.');
4
+
5
  require_once('models.inc.php');
6
 
7
  class PrliUtils
827
  dbDelta($sql);
828
  }
829
 
830
+ if($old_pro_db_version < 3) {
831
+ global $prli_keyword;
832
+ // Reset the whole keyword cache for good
833
+ $prli_keyword->deleteContentCache();
834
+ }
835
+
836
  /***** SAVE DB VERSION *****/
837
  delete_option('prlipro_db_version');
838
  add_option('prlipro_db_version',$prlipro_db_version);
1183
  $wpdb->query($query);
1184
  }
1185
  }
1186
+
1187
+ public static function gen_random_string($length = 4)
1188
+ {
1189
+ $characters = '0123456789abcdefghijklmnopqrstuvwxyz';
1190
+ $string = '';
1191
+
1192
+ for($p = 0; $p < $length; $p++)
1193
+ $string .= $characters[mt_rand(0, strlen($characters))];
1194
+
1195
+ return $string;
1196
+ }
1197
  }
 
classes/models/models.inc.php CHANGED
@@ -1,4 +1,7 @@
1
  <?php
 
 
 
2
  require_once(PRLI_MODELS_PATH.'/PrliLink.php');
3
  require_once(PRLI_MODELS_PATH.'/PrliClick.php');
4
  require_once(PRLI_MODELS_PATH.'/PrliGroup.php');
@@ -27,7 +30,7 @@ global $prli_db_version;
27
  global $prlipro_db_version;
28
 
29
  $prli_db_version = 12; // this is the version of the database we're moving to
30
- $prlipro_db_version = 2; // this is the version of the database we're moving to
31
 
32
  // Load Controller(s)
33
  require_once( PRLI_CONTROLLERS_PATH.'/PrliAppController.php');
@@ -36,33 +39,37 @@ global $prli_app_controller;
36
 
37
  $prli_app_controller = new PrliAppController();
38
 
39
- function prli_get_main_message( $message = "Get started by <a href=\"?page=pretty-link/prli-links.php&action=new\">adding a URL</a> that you want to turn into a pretty link.<br/>Come back to see how many times it was clicked.", $expiration=3600) // Get new messages every 1 hour
40
  {
41
- global $prli_update, $wp_version;
42
- include_once(ABSPATH."/wp-includes/class-IXR.php");
43
 
44
- $message_mothership = (($prli_update->pro_is_installed_and_authorized())?'http://prettylinkpro.com/xmlrpc.php':'http://blairwilliams.com/xmlrpc.php');
 
 
 
 
 
45
 
46
- if( version_compare($wp_version, '3.0', '>=') )
47
- $messages = get_site_transient('_prli_messages'); // for WordPress 3.0
48
- else
49
- $messages = get_transient('_prli_messages'); // for WordPress 2.8+
50
 
51
  // if the messages array has expired go back to the mothership
52
- if($messages === false)
53
  {
54
- $client = new IXR_Client($message_mothership);
55
- if ($client->query('prli.get_main_message_array'))
56
- $messages = $client->getResponse();
57
 
58
- // If we're having connection issues on the mothership then store the default message in the transient
59
- if(empty($messages) or !$messages or !is_array($messages))
60
- $messages = array($message);
61
-
62
- if( version_compare($wp_version, '3.0', '>=') )
63
- set_site_transient("_prli_messages", $messages, $expiration); // for WordPress 3.0
 
 
64
  else
65
- set_transient("_prli_messages", $messages, $expiration); // for WordPress 2.8+
 
 
66
  }
67
 
68
  if(empty($messages) or !$messages or !is_array($messages))
@@ -70,5 +77,3 @@ function prli_get_main_message( $message = "Get started by <a href=\"?page=prett
70
  else
71
  return $messages[array_rand($messages)];
72
  }
73
-
74
- ?>
1
  <?php
2
+ if(!defined('ABSPATH'))
3
+ die('You are not allowed to call this page directly.');
4
+
5
  require_once(PRLI_MODELS_PATH.'/PrliLink.php');
6
  require_once(PRLI_MODELS_PATH.'/PrliClick.php');
7
  require_once(PRLI_MODELS_PATH.'/PrliGroup.php');
30
  global $prlipro_db_version;
31
 
32
  $prli_db_version = 12; // this is the version of the database we're moving to
33
+ $prlipro_db_version = 3; // this is the version of the database we're moving to
34
 
35
  // Load Controller(s)
36
  require_once( PRLI_CONTROLLERS_PATH.'/PrliAppController.php');
39
 
40
  $prli_app_controller = new PrliAppController();
41
 
42
+ function prli_get_main_message($message='',$expiration=1800) // Get new messages every 1/2 hour
43
  {
44
+ global $prli_update;
 
45
 
46
+ // Set the default message
47
+ if(empty($message)) {
48
+ $message = __( "Get started by <a href=\"?page=pretty-link/prli-links.php&action=new\">" .
49
+ "adding a URL</a> that you want to turn into a pretty link.<br/>" .
50
+ "Come back to see how many times it was clicked." , 'pretty-link');
51
+ }
52
 
53
+ $messages = get_site_transient('_prli_messages');
 
 
 
54
 
55
  // if the messages array has expired go back to the mothership
56
+ if(!$messages)
57
  {
58
+ $remote_controller = !$prli_update->pro_is_installed_and_authorized() ? 'prlipro' : 'prli';
59
+ $message_mothership = "http://prettylinkpro.com/index.php?controller={$remote_controller}&action=json_messages";
 
60
 
61
+ if( !class_exists( 'WP_Http' ) )
62
+ include_once( ABSPATH . WPINC . '/class-http.php' );
63
+
64
+ $http = new WP_Http;
65
+ $response = $http->request( $message_mothership );
66
+
67
+ if(isset($response) and isset($response['body']) and !empty($response['body']))
68
+ $messages = json_decode($response['body']);
69
  else
70
+ $messages = array($message);
71
+
72
+ set_site_transient("_prli_messages", $messages, $expiration);
73
  }
74
 
75
  if(empty($messages) or !$messages or !is_array($messages))
77
  else
78
  return $messages[array_rand($messages)];
79
  }
 
 
classes/views/prli-clicks/csv.php CHANGED
@@ -1,4 +1,7 @@
1
  <?php
 
 
 
2
  if(is_user_logged_in() and current_user_can('level_10'))
3
  {
4
 
@@ -19,4 +22,4 @@
19
  }
20
  }
21
  else
22
- header("Location: " . $prli_blogurl);
1
  <?php
2
+ if(!defined('ABSPATH'))
3
+ die('You are not allowed to call this page directly.');
4
+
5
  if(is_user_logged_in() and current_user_can('level_10'))
6
  {
7
 
22
  }
23
  }
24
  else
25
+ header("Location: " . $prli_blogurl);
classes/views/prli-clicks/csv_download.php CHANGED
@@ -33,4 +33,4 @@ for($i=$hit_page_count; $i>0; $i--)
33
  }
34
  ?>
35
  </ul>
36
- </div>
33
  }
34
  ?>
35
  </ul>
36
+ </div>
classes/views/prli-clicks/head.php CHANGED
@@ -103,4 +103,4 @@ function moo() {
103
 
104
  var data = <?php echo $prli_click->setupClickLineGraph($start_timestamp,$end_timestamp,$link_id,$type,$group); ?>;
105
 
106
- </script>
103
 
104
  var data = <?php echo $prli_click->setupClickLineGraph($start_timestamp,$end_timestamp,$link_id,$type,$group); ?>;
105
 
106
+ </script>
classes/views/prli-clicks/list.php CHANGED
@@ -167,4 +167,4 @@
167
  require(PRLI_VIEWS_PATH.'/shared/table-nav.php');
168
  ?>
169
 
170
- </div>
167
  require(PRLI_VIEWS_PATH.'/shared/table-nav.php');
168
  ?>
169
 
170
+ </div>
classes/views/prli-dashboard-widget/widget.php CHANGED
@@ -1,6 +1,6 @@
1
  <?php if(!defined('ABSPATH')) {die('You are not allowed to call this page directly.');} ?>
2
  <div class="wrap">
3
- <a href="http://blairwilliams.com/pretty-link"><img style="float: left; border: 0px;" src="<?php echo PRLI_IMAGES_URL . '/prettylink_logo_small.jpg'; ?>"/></a><div style="min-height: 48px;"><div style="min-height: 18px; margin-left: 137px; margin-top: 0px; padding-top: 0px; border: 1px solid #e5e597; background-color: #ffffa0; display: block;"><p style="font-size: 11px; margin:0px; padding: 0px; padding-left: 10px;"><?php echo esc_html($message); ?></p></div></div>
4
 
5
  <form name="form1" method="post" action="?page=<?php echo PRLI_PLUGIN_NAME ?>/prli-links.php">
6
  <input type="hidden" name="action" value="quick-create">
1
  <?php if(!defined('ABSPATH')) {die('You are not allowed to call this page directly.');} ?>
2
  <div class="wrap">
3
+ <a href="http://blairwilliams.com/pretty-link"><img style="float: left; border: 0px;" src="<?php echo PRLI_IMAGES_URL . '/prettylink_logo_small.jpg'; ?>"/></a><div style="min-height: 48px;"><div style="min-height: 18px; margin-left: 137px; margin-top: 0px; padding-top: 0px; border: 1px solid #e5e597; background-color: #ffffa0; display: block;"><p style="font-size: 11px; margin:0px; padding: 0px; padding-left: 10px;"><?php echo prli_get_main_message(__("Add a Pretty Link from your Dashboard:", 'pretty-link')); ?></p></div></div>
4
 
5
  <form name="form1" method="post" action="?page=<?php echo PRLI_PLUGIN_NAME ?>/prli-links.php">
6
  <input type="hidden" name="action" value="quick-create">
classes/views/prli-groups/edit.php CHANGED
@@ -1,3 +1,8 @@
 
 
 
 
 
1
  <div class="wrap">
2
  <h2><img src="<?php echo PRLI_IMAGES_URL.'/pretty-link-med.png'; ?>"/>&nbsp;Pretty Link: Edit Group</h2>
3
 
@@ -55,4 +60,4 @@
55
  </p>
56
 
57
  </form>
58
- </div>
1
+ <?php
2
+ if(!defined('ABSPATH'))
3
+ die('You are not allowed to call this page directly.');
4
+ ?>
5
+
6
  <div class="wrap">
7
  <h2><img src="<?php echo PRLI_IMAGES_URL.'/pretty-link-med.png'; ?>"/>&nbsp;Pretty Link: Edit Group</h2>
8
 
60
  </p>
61
 
62
  </form>
63
+ </div>
classes/views/prli-groups/head.php CHANGED
@@ -1,3 +1,8 @@
 
 
 
 
 
1
  <script type="text/javascript" src="<?php echo PRLI_URL; ?>/includes/jquery/js/jquery-1.3.2.min.js"></script>
2
  <script type="text/javascript">
3
  jQuery(document).ready(function() {
@@ -32,4 +37,4 @@ jQuery(document).ready(function() {
32
  .group_actions {
33
  padding-top: 5px;
34
  }
35
- </style>
1
+ <?php
2
+ if(!defined('ABSPATH'))
3
+ die('You are not allowed to call this page directly.');
4
+ ?>
5
+
6
  <script type="text/javascript" src="<?php echo PRLI_URL; ?>/includes/jquery/js/jquery-1.3.2.min.js"></script>
7
  <script type="text/javascript">
8
  jQuery(document).ready(function() {
37
  .group_actions {
38
  padding-top: 5px;
39
  }
40
+ </style>
classes/views/prli-groups/list.php CHANGED
@@ -1,3 +1,7 @@
 
 
 
 
1
  <div class="wrap">
2
  <?php
3
  require(PRLI_VIEWS_PATH.'/shared/nav.php');
@@ -82,4 +86,4 @@
82
  require(PRLI_VIEWS_PATH.'/shared/table-nav.php');
83
  ?>
84
 
85
- </div>
1
+ <?php
2
+ if(!defined('ABSPATH'))
3
+ die('You are not allowed to call this page directly.');
4
+ ?>
5
  <div class="wrap">
6
  <?php
7
  require(PRLI_VIEWS_PATH.'/shared/nav.php');
86
  require(PRLI_VIEWS_PATH.'/shared/table-nav.php');
87
  ?>
88
 
89
+ </div>
classes/views/prli-groups/new.php CHANGED
@@ -1,3 +1,8 @@
 
 
 
 
 
1
  <div class="wrap">
2
  <h2><img src="<?php echo PRLI_IMAGES_URL.'/pretty-link-med.png'; ?>"/>&nbsp;Pretty Link: Add Group</h2>
3
 
@@ -56,4 +61,4 @@
56
  </p>
57
 
58
  </form>
59
- </div>
1
+ <?php
2
+ if(!defined('ABSPATH'))
3
+ die('You are not allowed to call this page directly.');
4
+ ?>
5
+
6
  <div class="wrap">
7
  <h2><img src="<?php echo PRLI_IMAGES_URL.'/pretty-link-med.png'; ?>"/>&nbsp;Pretty Link: Add Group</h2>
8
 
61
  </p>
62
 
63
  </form>
64
+ </div>
classes/views/prli-links/bar.php CHANGED
@@ -1,3 +1,8 @@
 
 
 
 
 
1
  <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
2
  <html>
3
  <head>
@@ -10,4 +15,4 @@
10
  <frame src="<?php echo $pretty_link_url.$param_string; ?>" frameborder=0 marginwidth=0 marginheight=0>
11
  <noframes>Your browser does not support frames. Click <a href="<?php echo $pretty_link_url.$param_string; ?>">here</a> to view the page.</noframes>
12
  </frameset>
13
- </html>
1
+ <?php
2
+ if(!defined('ABSPATH'))
3
+ die('You are not allowed to call this page directly.');
4
+ ?>
5
+
6
  <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
7
  <html>
8
  <head>
15
  <frame src="<?php echo $pretty_link_url.$param_string; ?>" frameborder=0 marginwidth=0 marginheight=0>
16
  <noframes>Your browser does not support frames. Click <a href="<?php echo $pretty_link_url.$param_string; ?>">here</a> to view the page.</noframes>
17
  </frameset>
18
+ </html>
classes/views/prli-links/edit.php CHANGED
@@ -1,3 +1,8 @@
 
 
 
 
 
1
  <div class="wrap">
2
  <h2><img src="<?php echo PRLI_IMAGES_URL.'/pretty-link-med.png'; ?>"/>&nbsp;Pretty Link: Edit Link</h2>
3
 
@@ -19,4 +24,4 @@
19
  </p>
20
 
21
  </form>
22
- </div>
1
+ <?php
2
+ if(!defined('ABSPATH'))
3
+ die('You are not allowed to call this page directly.');
4
+ ?>
5
+
6
  <div class="wrap">
7
  <h2><img src="<?php echo PRLI_IMAGES_URL.'/pretty-link-med.png'; ?>"/>&nbsp;Pretty Link: Edit Link</h2>
8
 
24
  </p>
25
 
26
  </form>
27
+ </div>
classes/views/prli-links/form.php CHANGED
@@ -95,5 +95,4 @@
95
  </table>
96
  <?php
97
  // Add stuff to the form here
98
- do_action('prli_link_fields',$id);
99
- ?>
95
  </table>
96
  <?php
97
  // Add stuff to the form here
98
+ do_action('prli_link_fields',$id);
 
classes/views/prli-links/head.php CHANGED
@@ -1,3 +1,8 @@
 
 
 
 
 
1
  <script type="text/javascript">
2
  jQuery(document).ready(function() {
3
  jQuery('.link_actions').hide();
@@ -88,4 +93,4 @@ ul.pane li {
88
  .link_actions {
89
  padding-top: 5px;
90
  }
91
- </style>
1
+ <?php
2
+ if(!defined('ABSPATH'))
3
+ die('You are not allowed to call this page directly.');
4
+ ?>
5
+
6
  <script type="text/javascript">
7
  jQuery(document).ready(function() {
8
  jQuery('.link_actions').hide();
93
  .link_actions {
94
  padding-top: 5px;
95
  }
96
+ </style>
classes/views/prli-links/list.php CHANGED
@@ -1,3 +1,8 @@
 
 
 
 
 
1
  <div class="wrap">
2
  <?php
3
  require(PRLI_VIEWS_PATH.'/shared/nav.php');
@@ -188,4 +193,4 @@
188
  <?php $footer = true; require(PRLI_VIEWS_PATH.'/shared/link-table-nav.php'); ?>
189
  </form>
190
 
191
- </div>
1
+ <?php
2
+ if(!defined('ABSPATH'))
3
+ die('You are not allowed to call this page directly.');
4
+ ?>
5
+
6
  <div class="wrap">
7
  <?php
8
  require(PRLI_VIEWS_PATH.'/shared/nav.php');
193
  <?php $footer = true; require(PRLI_VIEWS_PATH.'/shared/link-table-nav.php'); ?>
194
  </form>
195
 
196
+ </div>
classes/views/prli-links/new.php CHANGED
@@ -1,3 +1,8 @@
 
 
 
 
 
1
  <div class="wrap">
2
  <h2><img src="<?php echo PRLI_IMAGES_URL . '/pretty-link-med.png'; ?>"/>&nbsp;Pretty Link: Add Link</h2>
3
 
@@ -19,4 +24,4 @@
19
  </p>
20
 
21
  </form>
22
- </div>
1
+ <?php
2
+ if(!defined('ABSPATH'))
3
+ die('You are not allowed to call this page directly.');
4
+ ?>
5
+
6
  <div class="wrap">
7
  <h2><img src="<?php echo PRLI_IMAGES_URL . '/pretty-link-med.png'; ?>"/>&nbsp;Pretty Link: Add Link</h2>
8
 
24
  </p>
25
 
26
  </form>
27
+ </div>
classes/views/prli-links/ultra-cloak.php CHANGED
@@ -1,3 +1,8 @@
 
 
 
 
 
1
  <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
2
  <html>
3
  <head>
@@ -9,4 +14,4 @@
9
  <frame src="<?php echo $pretty_link_url.$param_string; ?>" frameborder=0 marginwidth=0 marginheight=0>
10
  <noframes>Your browser does not support frames. Click <a href="<?php echo $pretty_link_url.$param_string; ?>">here</a> to view the page.</noframes>
11
  </frameset>
12
- </html>
1
+ <?php
2
+ if(!defined('ABSPATH'))
3
+ die('You are not allowed to call this page directly.');
4
+ ?>
5
+
6
  <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
7
  <html>
8
  <head>
14
  <frame src="<?php echo $pretty_link_url.$param_string; ?>" frameborder=0 marginwidth=0 marginheight=0>
15
  <noframes>Your browser does not support frames. Click <a href="<?php echo $pretty_link_url.$param_string; ?>">here</a> to view the page.</noframes>
16
  </frameset>
17
+ </html>
classes/views/prli-options/form.php CHANGED
@@ -1,3 +1,8 @@
 
 
 
 
 
1
  <div class="wrap">
2
  <div id="icon-options-general" class="icon32"><br /></div>
3
  <h2 id="prli_title">Pretty Link: Options</h2>
@@ -107,4 +112,4 @@ if(!$permalink_structure or empty($permalink_structure))
107
  <br/><span class="description">Seriously, only click this link if you want to delete all the Hit data in your database.</span></p>
108
 
109
  </form>
110
- </div>
1
+ <?php
2
+ if(!defined('ABSPATH'))
3
+ die('You are not allowed to call this page directly.');
4
+ ?>
5
+
6
  <div class="wrap">
7
  <div id="icon-options-general" class="icon32"><br /></div>
8
  <h2 id="prli_title">Pretty Link: Options</h2>
112
  <br/><span class="description">Seriously, only click this link if you want to delete all the Hit data in your database.</span></p>
113
 
114
  </form>
115
+ </div>
classes/views/prli-options/head.php CHANGED
@@ -1,3 +1,8 @@
 
 
 
 
 
1
  <script type="text/javascript">
2
  jQuery(document).ready(function() {
3
  <?php do_action('prli_options_js'); ?>
@@ -44,4 +49,5 @@ jQuery(document).ready(function() {
44
  }
45
  </style>
46
 
47
- <?php do_action('prli-options-head'); ?>
 
1
+ <?php
2
+ if(!defined('ABSPATH'))
3
+ die('You are not allowed to call this page directly.');
4
+ ?>
5
+
6
  <script type="text/javascript">
7
  jQuery(document).ready(function() {
8
  <?php do_action('prli_options_js'); ?>
49
  }
50
  </style>
51
 
52
+ <?php
53
+ do_action('prli-options-head');
classes/views/prli-options/pro-settings.php CHANGED
@@ -1,3 +1,8 @@
 
 
 
 
 
1
  <div class="wrap">
2
  <div id="icon-options-general" class="icon32"><br /></div>
3
  <h2 id="prli_title">Pretty Link: Pro Account Information</h2>
@@ -15,4 +20,4 @@
15
  <a href="http://prettylinkpro.com">Pretty Link Pro</a> will help you automate, share, test and get more clicks &amp; conversions from your Pretty Links!<br/><br/><a href="http://prettylinkpro.com">Learn More &raquo;</a></p>
16
  <?php } ?>
17
 
18
- </div>
1
+ <?php
2
+ if(!defined('ABSPATH'))
3
+ die('You are not allowed to call this page directly.');
4
+ ?>
5
+
6
  <div class="wrap">
7
  <div id="icon-options-general" class="icon32"><br /></div>
8
  <h2 id="prli_title">Pretty Link: Pro Account Information</h2>
20
  <a href="http://prettylinkpro.com">Pretty Link Pro</a> will help you automate, share, test and get more clicks &amp; conversions from your Pretty Links!<br/><br/><a href="http://prettylinkpro.com">Learn More &raquo;</a></p>
21
  <?php } ?>
22
 
23
+ </div>
classes/views/prli-tools/form.php CHANGED
@@ -1,3 +1,8 @@
 
 
 
 
 
1
  <div class="wrap">
2
  <script type="text/javascript">
3
  function toggle_iphone_instructions()
@@ -26,4 +31,4 @@ function toggle_iphone_instructions()
26
  </ol>
27
  </div>
28
  <?php do_action('prli-add-tools'); ?>
29
- </div>
1
+ <?php
2
+ if(!defined('ABSPATH'))
3
+ die('You are not allowed to call this page directly.');
4
+ ?>
5
+
6
  <div class="wrap">
7
  <script type="text/javascript">
8
  function toggle_iphone_instructions()
31
  </ol>
32
  </div>
33
  <?php do_action('prli-add-tools'); ?>
34
+ </div>
classes/views/shared/link-table-nav.php CHANGED
@@ -1,4 +1,7 @@
1
  <?php
 
 
 
2
  // Only show the pager bar if there is more than 1 page
3
  if($page_count > 1)
4
  {
@@ -98,5 +101,4 @@
98
  <?php do_action('prli-link-list-actions', $footer); ?>
99
  </div>
100
  <?php
101
- }
102
- ?>
1
  <?php
2
+ if(!defined('ABSPATH'))
3
+ die('You are not allowed to call this page directly.');
4
+
5
  // Only show the pager bar if there is more than 1 page
6
  if($page_count > 1)
7
  {
101
  <?php do_action('prli-link-list-actions', $footer); ?>
102
  </div>
103
  <?php
104
+ }
 
classes/views/shared/nav.php CHANGED
@@ -1,4 +1,7 @@
1
  <?php
 
 
 
2
  global $prli_update;
3
 
4
  if($prli_update->pro_is_installed_and_authorized())
@@ -6,4 +9,4 @@
6
  else
7
  $support_link = "&nbsp;|&nbsp;<a href=\"http://prettylinkpro.com\">" . __('Upgrade to Pro', 'pretty-link') . '</a>';
8
  ?>
9
- <p style="font-size: 14px; font-weight: bold; float: right; text-align: right; padding-top: 0px; padding-right: 10px;"><?php _e('Connect', 'pretty-link'); ?>:&nbsp;&nbsp;<a href="http://twitter.com/blairwilli"><img src="<?php echo PRLI_IMAGES_URL; ?>/twitter_32.png" style="width: 24px; height: 24px;" /></a>&nbsp;<a href="http://www.facebook.com/pages/Pretty-Link/283252860401"><img src="<?php echo PRLI_IMAGES_URL; ?>/facebook_32.png" style="width: 24px; height: 24px;" /></a><br/><?php _e('Get Help', 'pretty-link'); ?>:&nbsp;&nbsp;<a href="http://blairwilliams.com/xba" target="_blank"><?php _e('Tutorials', 'pretty-link'); ?></a><?php echo $support_link; ?>&nbsp;|&nbsp;<a href="http://blairwilliams.com/work"><?php _e('One on One', 'pretty-link'); ?></a></p>
1
  <?php
2
+ if(!defined('ABSPATH'))
3
+ die('You are not allowed to call this page directly.');
4
+
5
  global $prli_update;
6
 
7
  if($prli_update->pro_is_installed_and_authorized())
9
  else
10
  $support_link = "&nbsp;|&nbsp;<a href=\"http://prettylinkpro.com\">" . __('Upgrade to Pro', 'pretty-link') . '</a>';
11
  ?>
12
+ <p style="font-size: 14px; font-weight: bold; float: right; text-align: right; padding-top: 0px; padding-right: 10px;"><?php _e('Connect', 'pretty-link'); ?>:&nbsp;&nbsp;<a href="http://twitter.com/blairwilli"><img src="<?php echo PRLI_IMAGES_URL; ?>/twitter_32.png" style="width: 24px; height: 24px;" /></a>&nbsp;<a href="http://www.facebook.com/pages/Pretty-Link/283252860401"><img src="<?php echo PRLI_IMAGES_URL; ?>/facebook_32.png" style="width: 24px; height: 24px;" /></a><br/><?php _e('Get Help', 'pretty-link'); ?>:&nbsp;&nbsp;<a href="http://blairwilliams.com/xba" target="_blank"><?php _e('Tutorials', 'pretty-link'); ?></a><?php echo $support_link; ?>&nbsp;|&nbsp;<a href="http://blairwilliams.com/work"><?php _e('One on One', 'pretty-link'); ?></a></p>
i18n/pretty-link.pot CHANGED
@@ -2,9 +2,9 @@
2
  # This file is distributed under the same license as the Pretty Link Lite package.
3
  msgid ""
4
  msgstr ""
5
- "Project-Id-Version: Pretty Link Lite 1.5.0\n"
6
  "Report-Msgid-Bugs-To: http://wordpress.org/tag/pretty-link\n"
7
- "POT-Creation-Date: 2011-10-17 04:06:02+00:00\n"
8
  "MIME-Version: 1.0\n"
9
  "Content-Type: text/plain; charset=UTF-8\n"
10
  "Content-Transfer-Encoding: 8bit\n"
@@ -12,57 +12,57 @@ msgstr ""
12
  "Last-Translator: FULL NAME <EMAIL@ADDRESS>\n"
13
  "Language-Team: LANGUAGE <LL@li.org>\n"
14
 
15
- #: prli-pro-settings.php:22
16
  msgid ""
17
  "You're almost done!<br/>%1$sFinish your Re-Install of Pretty Link Pro%2$s"
18
  msgstr ""
19
 
20
- #: prli-pro-settings.php:30
21
  msgid "Pretty Link Pro Successfully Uninstalled."
22
  msgstr ""
23
 
24
- #: prli-options.php:55 pro/prlipro-options.php:192
25
  msgid "Options saved."
26
  msgstr ""
27
 
28
- #: prli-options.php:62
29
  msgid "Hit Database was Cleared."
30
  msgstr ""
31
 
32
- #: prli-options.php:71
33
  msgid "No hits older than 30 days were found, so nothing was deleted"
34
  msgstr ""
35
 
36
- #: prli-options.php:80
37
  msgid "No hits older than 90 days were found, so nothing was deleted"
38
  msgstr ""
39
 
40
- #: classes/controllers/PrliAppController.php:28
41
  msgid ""
42
  "Database Upgrade is required for Pretty Link to work properly<br/>%1"
43
  "$sAutomatically Upgrade your Database%2$s"
44
  msgstr ""
45
 
46
- #: classes/controllers/PrliAppController.php:70
47
  msgid "Your Database Has Been Successfully Upgraded."
48
  msgstr ""
49
 
50
- #: classes/views/prli-options/form.php:58
51
  msgid "Filter Robots"
52
  msgstr ""
53
 
54
- #: classes/views/prli-options/form.php:59
55
  msgid ""
56
  "Filter known Robots and unidentifiable browser clients from your hit data, "
57
  "stats and reports. <code>IMPORTANT: Any robot hits recorded with any version "
58
  "of Pretty Link before 1.4.22 won't be filtered by this setting.</code>"
59
  msgstr ""
60
 
61
- #: classes/views/prli-options/form.php:62
62
  msgid "Whitelist IP Addresses:"
63
  msgstr ""
64
 
65
- #: classes/views/prli-options/form.php:65
66
  msgid ""
67
  "Enter IP Addresses or IP Ranges you want to always include in your Hit data "
68
  "and Stats even if they are flagged as robots. Each IP Address should be "
@@ -70,337 +70,346 @@ msgid ""
70
  "192.168.*.*</code>"
71
  msgstr ""
72
 
73
- #: classes/views/prli-options/form.php:73
74
  msgid "Tracking Style:"
75
  msgstr ""
76
 
77
- #: classes/views/prli-options/form.php:73
78
  msgid ""
79
  "Note: Changing your tracking style can affect the accuracy of your existing "
80
  "statistics."
81
  msgstr ""
82
 
83
- #: classes/views/prli-options/form.php:77
84
  msgid "Normal Tracking"
85
  msgstr ""
86
 
87
- #: classes/views/prli-options/form.php:80
88
  msgid "Extended Tracking (more stats / slower performance)"
89
  msgstr ""
90
 
91
- #: classes/views/prli-options/form.php:83
92
  msgid "Simple Click Count Tracking (less stats / faster performance)"
93
  msgstr ""
94
 
95
- #: classes/views/prli-options/form.php:92
96
  msgid "Update Options"
97
  msgstr ""
98
 
99
- #: classes/views/prli-tools/form.php:16
100
  msgid "Show iPhone Bookmarklet Instructions"
101
  msgstr ""
102
 
103
- #: classes/views/shared/nav.php:5
 
 
 
 
104
  msgid "Pro Manual"
105
  msgstr ""
106
 
107
- #: classes/views/shared/nav.php:7
108
  msgid "Upgrade to Pro"
109
  msgstr ""
110
 
111
- #: classes/views/shared/nav.php:9
112
  msgid "Connect"
113
  msgstr ""
114
 
115
- #: classes/views/shared/nav.php:9
116
  msgid "Get Help"
117
  msgstr ""
118
 
119
- #: classes/views/shared/nav.php:9
120
  msgid "Tutorials"
121
  msgstr ""
122
 
123
- #: classes/views/shared/nav.php:9
124
  msgid "One on One"
125
  msgstr ""
126
 
127
- #: classes/models/PrliUpdate.php:45
128
  msgid "Pretty Link Pro Username"
129
  msgstr ""
130
 
131
- #: classes/models/PrliUpdate.php:46
132
  msgid "Pretty Link Pro Password"
133
  msgstr ""
134
 
135
- #: classes/models/PrliUpdate.php:47
136
  msgid "Your Pretty Link Pro Username or Password was Invalid"
137
  msgstr ""
138
 
139
- #: classes/models/PrliUpdate.php:140
140
  msgid ""
141
  "Your Username & Password was accepted<br/>Now you can %1$sUpgrade "
142
  "Automatically!%2$s"
143
  msgstr ""
144
 
145
- #: classes/models/PrliUpdate.php:150
146
- msgid "ERROR"
 
147
  msgstr ""
148
 
149
- #: classes/models/PrliUpdate.php:184
150
- #: pro/classes/views/prlipro-options/form.php:439
151
- msgid "Save"
152
  msgstr ""
153
 
154
- #: prli-xmlrpc.php:19 prli-xmlrpc.php:82 prli-xmlrpc.php:130
155
- #: prli-xmlrpc.php:186 prli-xmlrpc.php:216 prli-xmlrpc.php:245
156
- #: prli-xmlrpc.php:279 prli-xmlrpc.php:312
157
- msgid "Sorry, XML-RPC Not enabled for this website"
158
  msgstr ""
159
 
160
  #: prli-xmlrpc.php:22 prli-xmlrpc.php:85 prli-xmlrpc.php:133
161
  #: prli-xmlrpc.php:189 prli-xmlrpc.php:219 prli-xmlrpc.php:248
162
  #: prli-xmlrpc.php:282 prli-xmlrpc.php:315
 
 
 
 
 
 
163
  msgid "Sorry, Login failed"
164
  msgstr ""
165
 
166
- #: prli-xmlrpc.php:28 prli-xmlrpc.php:91 prli-xmlrpc.php:139
167
- #: prli-xmlrpc.php:195 prli-xmlrpc.php:225 prli-xmlrpc.php:254
168
- #: prli-xmlrpc.php:288 prli-xmlrpc.php:321
169
  msgid "Sorry, you must be an administrator to access this resource"
170
  msgstr ""
171
 
172
- #: prli-xmlrpc.php:95
173
  msgid "You must provide a target URL"
174
  msgstr ""
175
 
176
- #: prli-xmlrpc.php:121 prli-xmlrpc.php:170
177
  msgid "There was an error creating your Pretty Link"
178
  msgstr ""
179
 
180
- #: prli-xmlrpc.php:143
181
  msgid "You must provide the id of the link you want to update"
182
  msgstr ""
183
 
184
- #: prli-xmlrpc.php:200
185
  msgid "There was an error fetching the Pretty Link Groups"
186
  msgstr ""
187
 
188
- #: prli-xmlrpc.php:230
189
  msgid "There was an error fetching the Pretty Links"
190
  msgstr ""
191
 
192
- #: prli-xmlrpc.php:257
193
  msgid "Sorry, you must provide a slug to lookup"
194
  msgstr ""
195
 
196
- #: prli-xmlrpc.php:264 prli-xmlrpc.php:298
197
  msgid "There was an error fetching your Pretty Link"
198
  msgstr ""
199
 
200
- #: prli-xmlrpc.php:291 prli-xmlrpc.php:324
201
  msgid "Sorry, you must provide an id to lookup"
202
  msgstr ""
203
 
204
- #: prli-xmlrpc.php:331
205
  msgid "There was an error fetching your Pretty Link URL"
206
  msgstr ""
207
 
208
- #: prli-main.php:353 prli-main.php:372
209
  msgid ""
210
  "Your Pretty Link Pro installation isn't quite complete yet.<br/>%1"
211
  "$sAutomatically Upgrade to Enable Pretty Link Pro%2$s"
212
  msgstr ""
213
 
214
- #: pro/prlipro-options.php:7
215
  msgid "Your Keyword Replacement Cache was successfully deleted"
216
  msgstr ""
217
 
218
- #: pro/prlipro-options.php:34
219
  msgid "Your Duplicate Tweets were Successfully Trimmed"
220
  msgstr ""
221
 
222
- #: pro/pretty-link-pro.php:125
223
  msgid "Disable Keyword Replacements on this post."
224
  msgstr ""
225
 
226
- #: pro/pretty-link-pro.php:161
227
  msgid "Hits"
228
  msgstr ""
229
 
230
- #: pro/pretty-link-pro.php:161
231
  msgid "Uniques"
232
  msgstr ""
233
 
234
- #: pro/pretty-link-pro.php:203
235
  msgid ""
236
  "A Pretty Link hasn't been generated for this entry yet. Click \"Update Post"
237
  "\" to generate."
238
  msgstr ""
239
 
240
- #: pro/pretty-link-pro.php:257
241
  msgid "ERROR: Your Pretty Link was unable to be created"
242
  msgstr ""
243
 
244
- #: pro/pretty-link-pro.php:260
245
  msgid "Unauthorized"
246
  msgstr ""
247
 
248
- #: pro/pretty-link-pro.php:1612
249
  msgid "Alternate Pretty Bar Attribution URL:"
250
  msgstr ""
251
 
252
- #: pro/pretty-link-pro.php:1705
253
  msgid "End-Point URL:"
254
  msgstr ""
255
 
256
- #: pro/pretty-link-pro.php:1706
257
  msgid "This can be used to integrate with your twitter client."
258
  msgstr ""
259
 
260
- #: pro/pretty-link-pro.php:1709
261
  msgid "Show TweetDeck Integration Instructions"
262
  msgstr ""
263
 
264
- #: pro/pretty-link-pro.php:1711 pro/pretty-link-pro.php:1717
265
  msgid "Follow the"
266
  msgstr ""
267
 
268
- #: pro/pretty-link-pro.php:1711
269
  msgid "TweetDeck Custom URL Instructions"
270
  msgstr ""
271
 
272
- #: pro/pretty-link-pro.php:1711
273
  msgid " and add the following URL to TweetDeck"
274
  msgstr ""
275
 
276
- #: pro/pretty-link-pro.php:1715
277
  msgid "Show Twitter for iPhone Integration Instructions"
278
  msgstr ""
279
 
280
- #: pro/pretty-link-pro.php:1717
281
  msgid "Twitter for iPhone Custom URL Instructions"
282
  msgstr ""
283
 
284
- #: pro/pretty-link-pro.php:1717
285
  msgid " and add the following URL to Twitter for iPhone"
286
  msgstr ""
287
 
288
- #: pro/pretty-link-pro.php:1727
289
  msgid "Label:"
290
  msgstr ""
291
 
292
- #: pro/pretty-link-pro.php:1732 pro/prlipro-create-public-link-widget.php:43
293
  msgid "Redirection:"
294
  msgstr ""
295
 
296
- #: pro/pretty-link-pro.php:1743 pro/prlipro-create-public-link-widget.php:54
297
  msgid "Tracking Enabled:"
298
  msgstr ""
299
 
300
- #: pro/pretty-link-pro.php:1752 pro/prlipro-create-public-link-widget.php:63
301
  msgid "Group:"
302
  msgstr ""
303
 
304
- #: pro/pretty-link-pro.php:1854 pro/pretty-link-pro.php:1894
305
  msgid "There was an error saving your Twitter account."
306
  msgstr ""
307
 
308
- #: pro/pretty-link-pro.php:1890
309
  msgid "Your Twitter Account was successfully saved."
310
  msgstr ""
311
 
312
- #: pro/pretty-link-pro.php:1908 pro/pretty-link-pro.php:1946
313
  msgid "Pretty Bar"
314
  msgstr ""
315
 
316
- #: pro/pretty-link-pro.php:1909
317
  msgid "Cloaked"
318
  msgstr ""
319
 
320
- #: pro/pretty-link-pro.php:1910 pro/pretty-link-pro.php:1948
321
  msgid "Pixel"
322
  msgstr ""
323
 
324
- #: pro/pretty-link-pro.php:1947
325
  msgid "Cloak"
326
  msgstr ""
327
 
328
- #: pro/pretty-link-pro.php:1976
329
  msgid "Image URL:"
330
  msgstr ""
331
 
332
- #: pro/pretty-link-pro.php:1979
333
  msgid ""
334
  "If set, this will replace the logo image on the PrettyBar. The image that "
335
  "this URL references should be 48x48 Pixels to fit."
336
  msgstr ""
337
 
338
- #: pro/pretty-link-pro.php:1983
339
  msgid "Background Image URL:"
340
  msgstr ""
341
 
342
- #: pro/pretty-link-pro.php:1986
343
  msgid ""
344
  "If set, this will replace the background image on PrettyBar. The image that "
345
  "this URL references should be 65px tall - this image will be repeated "
346
  "horizontally across the bar."
347
  msgstr ""
348
 
349
- #: pro/pretty-link-pro.php:1990
350
  msgid "Background Color:"
351
  msgstr ""
352
 
353
- #: pro/pretty-link-pro.php:1993
354
  msgid ""
355
  "This will alter the background color of the PrettyBar if you haven't "
356
  "specified a PrettyBar background image."
357
  msgstr ""
358
 
359
- #: pro/pretty-link-pro.php:1997
360
  msgid "Text Color:"
361
  msgstr ""
362
 
363
- #: pro/pretty-link-pro.php:2000
364
  msgid ""
365
  "If not set, this defaults to black (RGB value <code>#000000</code>) but you "
366
  "can change it to whatever color you like."
367
  msgstr ""
368
 
369
- #: pro/pretty-link-pro.php:2004
370
  msgid "Link Color:"
371
  msgstr ""
372
 
373
- #: pro/pretty-link-pro.php:2007
374
  msgid ""
375
  "If not set, this defaults to blue (RGB value <code>#0000ee</code>) but you "
376
  "can change it to whatever color you like."
377
  msgstr ""
378
 
379
- #: pro/pretty-link-pro.php:2011
380
  msgid "Link Hover Color:"
381
  msgstr ""
382
 
383
- #: pro/pretty-link-pro.php:2014
384
  msgid ""
385
  "If not set, this defaults to RGB value <code>#ababab</code> but you can "
386
  "change it to whatever color you like."
387
  msgstr ""
388
 
389
- #: pro/pretty-link-pro.php:2018
390
  msgid "Visited Link Color:"
391
  msgstr ""
392
 
393
- #: pro/pretty-link-pro.php:2021
394
  msgid ""
395
  "If not set, this defaults to RGB value <code>#551a8b</code> but you can "
396
  "change it to whatever color you like."
397
  msgstr ""
398
 
399
- #: pro/pretty-link-pro.php:2025
400
  msgid "Title Char Limit*:"
401
  msgstr ""
402
 
403
- #: pro/pretty-link-pro.php:2028
404
  msgid ""
405
  "If your Website has a long title then you may need to adjust this value so "
406
  "that it will all fit on the PrettyBar. It is recommended that you keep this "
@@ -408,11 +417,11 @@ msgid ""
408
  "good across different browsers and screen resolutions."
409
  msgstr ""
410
 
411
- #: pro/pretty-link-pro.php:2032
412
  msgid "Description Char Limit*:"
413
  msgstr ""
414
 
415
- #: pro/pretty-link-pro.php:2035
416
  msgid ""
417
  "If your Website has a long Description (tagline) then you may need to adjust "
418
  "this value so that it will all fit on the PrettyBar. It is recommended that "
@@ -420,150 +429,150 @@ msgid ""
420
  "format looks good across different browsers and screen resolutions."
421
  msgstr ""
422
 
423
- #: pro/pretty-link-pro.php:2039
424
  msgid "Target URL Char Limit*:"
425
  msgstr ""
426
 
427
- #: pro/pretty-link-pro.php:2042
428
  msgid ""
429
  "If you link to a lot of large Target URLs you may want to adjust this value. "
430
  "It is recommended that you keep this value to <code>40</code> or below so "
431
  "the PrettyBar's format looks good across different browsers and URL sizes"
432
  msgstr ""
433
 
434
- #: pro/pretty-link-pro.php:2047
435
  msgid "Show Pretty Bar Title"
436
  msgstr ""
437
 
438
- #: pro/pretty-link-pro.php:2048
439
  msgid ""
440
  "Make sure this is checked if you want the title of your blog (and link) to "
441
  "show up on the PrettyBar."
442
  msgstr ""
443
 
444
- #: pro/pretty-link-pro.php:2053
445
  msgid "Show Pretty Bar Description"
446
  msgstr ""
447
 
448
- #: pro/pretty-link-pro.php:2054
449
  msgid ""
450
  "Make sure this is checked if you want your site description to show up on "
451
  "the PrettyBar."
452
  msgstr ""
453
 
454
- #: pro/pretty-link-pro.php:2059
455
  msgid "Show Pretty Bar Share Links"
456
  msgstr ""
457
 
458
- #: pro/pretty-link-pro.php:2060
459
  msgid ""
460
  "Make sure this is checked if you want \"share links\" to show up on the "
461
  "PrettyBar."
462
  msgstr ""
463
 
464
- #: pro/pretty-link-pro.php:2065
465
  msgid "Show Pretty Bar Target URL"
466
  msgstr ""
467
 
468
- #: pro/pretty-link-pro.php:2066
469
  msgid ""
470
  "Make sure this is checked if you want a link displaying the Target URL to "
471
  "show up on the PrettyBar."
472
  msgstr ""
473
 
474
- #: pro/pretty-link-pro.php:2096
475
  msgid "Logo Image URL must be a correctly formatted URL"
476
  msgstr ""
477
 
478
- #: pro/pretty-link-pro.php:2099
479
  msgid "Background Image URL must be a correctly formatted URL"
480
  msgstr ""
481
 
482
- #: pro/pretty-link-pro.php:2102
483
  msgid "PrettyBar Background Color must be an actual RGB Value"
484
  msgstr ""
485
 
486
- #: pro/pretty-link-pro.php:2105
487
  msgid "PrettyBar Text Color must be an actual RGB Value"
488
  msgstr ""
489
 
490
- #: pro/pretty-link-pro.php:2108
491
  msgid "PrettyBar Link Color must be an actual RGB Value"
492
  msgstr ""
493
 
494
- #: pro/pretty-link-pro.php:2111 pro/pretty-link-pro.php:2114
495
  msgid "PrettyBar Hover Color must be an actual RGB Value"
496
  msgstr ""
497
 
498
- #: pro/pretty-link-pro.php:2117
499
  msgid "PrettyBar Title Character Limit must not be blank"
500
  msgstr ""
501
 
502
- #: pro/pretty-link-pro.php:2120
503
  msgid "PrettyBar Description Character Limit must not be blank"
504
  msgstr ""
505
 
506
- #: pro/pretty-link-pro.php:2123
507
  msgid "PrettyBar Link Character Limit must not be blank"
508
  msgstr ""
509
 
510
- #: pro/pretty-link-pro.php:2126
511
  msgid "PrettyBar Title Character Limit must be a number"
512
  msgstr ""
513
 
514
- #: pro/pretty-link-pro.php:2129
515
  msgid "PrettyBar Description Character Limit must be a number"
516
  msgstr ""
517
 
518
- #: pro/pretty-link-pro.php:2132
519
  msgid "PrettyBar Link Character Limit must be a number"
520
  msgstr ""
521
 
522
- #: pro/prlipro-create-public-link-widget.php:39
523
  msgid "Label Text:"
524
  msgstr ""
525
 
526
- #: pro/prlipro-create-public-link-widget.php:40
527
  msgid "Button Text:"
528
  msgstr ""
529
 
530
- #: pro/classes/views/prlipro-options/form.php:41
531
  msgid "Maximum Keywords per Page*:"
532
  msgstr ""
533
 
534
- #: pro/classes/views/prlipro-options/form.php:47
535
  msgid "Maximum Replacements per Keyword per Page*:"
536
  msgstr ""
537
 
538
- #: pro/classes/views/prlipro-options/form.php:66
539
  msgid "Custom CSS Styling for your Keyword Replacements:"
540
  msgstr ""
541
 
542
- #: pro/classes/views/prlipro-options/form.php:73
543
  msgid "Custom Hover CSS Styling for your Keyword Replacements:"
544
  msgstr ""
545
 
546
- #: pro/classes/views/prlipro-options/form.php:194
547
  msgid "Twitter Account"
548
  msgstr ""
549
 
550
- #: pro/classes/views/prlipro-options/form.php:239
551
  msgid "Twitter Comments Headline:"
552
  msgstr ""
553
 
554
- #: pro/classes/views/prlipro-options/form.php:246
555
  msgid "Twitter Comments Height:"
556
  msgstr ""
557
 
558
- #: pro/classes/views/prlipro-options/form.php:259
559
  msgid "Main Tweet User:"
560
  msgstr ""
561
 
562
- #: pro/classes/views/prlipro-options/form.php:272
563
  msgid "Tweet Hash Tags:"
564
  msgstr ""
565
 
566
- #: pro/classes/views/prlipro-options/form.php:394
567
  msgid "Social Buttons Display Spacing:"
568
  msgstr ""
569
 
2
  # This file is distributed under the same license as the Pretty Link Lite package.
3
  msgid ""
4
  msgstr ""
5
+ "Project-Id-Version: Pretty Link Lite 1.5.1\n"
6
  "Report-Msgid-Bugs-To: http://wordpress.org/tag/pretty-link\n"
7
+ "POT-Creation-Date: 2011-12-02 02:28:04+00:00\n"
8
  "MIME-Version: 1.0\n"
9
  "Content-Type: text/plain; charset=UTF-8\n"
10
  "Content-Transfer-Encoding: 8bit\n"
12
  "Last-Translator: FULL NAME <EMAIL@ADDRESS>\n"
13
  "Language-Team: LANGUAGE <LL@li.org>\n"
14
 
15
+ #: prli-pro-settings.php:25
16
  msgid ""
17
  "You're almost done!<br/>%1$sFinish your Re-Install of Pretty Link Pro%2$s"
18
  msgstr ""
19
 
20
+ #: prli-pro-settings.php:33
21
  msgid "Pretty Link Pro Successfully Uninstalled."
22
  msgstr ""
23
 
24
+ #: prli-options.php:58 pro/prlipro-options.php:192
25
  msgid "Options saved."
26
  msgstr ""
27
 
28
+ #: prli-options.php:65
29
  msgid "Hit Database was Cleared."
30
  msgstr ""
31
 
32
+ #: prli-options.php:74
33
  msgid "No hits older than 30 days were found, so nothing was deleted"
34
  msgstr ""
35
 
36
+ #: prli-options.php:83
37
  msgid "No hits older than 90 days were found, so nothing was deleted"
38
  msgstr ""
39
 
40
+ #: classes/controllers/PrliAppController.php:31
41
  msgid ""
42
  "Database Upgrade is required for Pretty Link to work properly<br/>%1"
43
  "$sAutomatically Upgrade your Database%2$s"
44
  msgstr ""
45
 
46
+ #: classes/controllers/PrliAppController.php:64
47
  msgid "Your Database Has Been Successfully Upgraded."
48
  msgstr ""
49
 
50
+ #: classes/views/prli-options/form.php:63
51
  msgid "Filter Robots"
52
  msgstr ""
53
 
54
+ #: classes/views/prli-options/form.php:64
55
  msgid ""
56
  "Filter known Robots and unidentifiable browser clients from your hit data, "
57
  "stats and reports. <code>IMPORTANT: Any robot hits recorded with any version "
58
  "of Pretty Link before 1.4.22 won't be filtered by this setting.</code>"
59
  msgstr ""
60
 
61
+ #: classes/views/prli-options/form.php:67
62
  msgid "Whitelist IP Addresses:"
63
  msgstr ""
64
 
65
+ #: classes/views/prli-options/form.php:70
66
  msgid ""
67
  "Enter IP Addresses or IP Ranges you want to always include in your Hit data "
68
  "and Stats even if they are flagged as robots. Each IP Address should be "
70
  "192.168.*.*</code>"
71
  msgstr ""
72
 
73
+ #: classes/views/prli-options/form.php:78
74
  msgid "Tracking Style:"
75
  msgstr ""
76
 
77
+ #: classes/views/prli-options/form.php:78
78
  msgid ""
79
  "Note: Changing your tracking style can affect the accuracy of your existing "
80
  "statistics."
81
  msgstr ""
82
 
83
+ #: classes/views/prli-options/form.php:82
84
  msgid "Normal Tracking"
85
  msgstr ""
86
 
87
+ #: classes/views/prli-options/form.php:85
88
  msgid "Extended Tracking (more stats / slower performance)"
89
  msgstr ""
90
 
91
+ #: classes/views/prli-options/form.php:88
92
  msgid "Simple Click Count Tracking (less stats / faster performance)"
93
  msgstr ""
94
 
95
+ #: classes/views/prli-options/form.php:97
96
  msgid "Update Options"
97
  msgstr ""
98
 
99
+ #: classes/views/prli-tools/form.php:21
100
  msgid "Show iPhone Bookmarklet Instructions"
101
  msgstr ""
102
 
103
+ #: classes/views/prli-dashboard-widget/widget.php:3
104
+ msgid "Add a Pretty Link from your Dashboard:"
105
+ msgstr ""
106
+
107
+ #: classes/views/shared/nav.php:8
108
  msgid "Pro Manual"
109
  msgstr ""
110
 
111
+ #: classes/views/shared/nav.php:10
112
  msgid "Upgrade to Pro"
113
  msgstr ""
114
 
115
+ #: classes/views/shared/nav.php:12
116
  msgid "Connect"
117
  msgstr ""
118
 
119
+ #: classes/views/shared/nav.php:12
120
  msgid "Get Help"
121
  msgstr ""
122
 
123
+ #: classes/views/shared/nav.php:12
124
  msgid "Tutorials"
125
  msgstr ""
126
 
127
+ #: classes/views/shared/nav.php:12
128
  msgid "One on One"
129
  msgstr ""
130
 
131
+ #: classes/models/PrliUpdate.php:44
132
  msgid "Pretty Link Pro Username"
133
  msgstr ""
134
 
135
+ #: classes/models/PrliUpdate.php:45
136
  msgid "Pretty Link Pro Password"
137
  msgstr ""
138
 
139
+ #: classes/models/PrliUpdate.php:46
140
  msgid "Your Pretty Link Pro Username or Password was Invalid"
141
  msgstr ""
142
 
143
+ #: classes/models/PrliUpdate.php:151
144
  msgid ""
145
  "Your Username & Password was accepted<br/>Now you can %1$sUpgrade "
146
  "Automatically!%2$s"
147
  msgstr ""
148
 
149
+ #: classes/models/PrliUpdate.php:161
150
+ msgid ""
151
+ "Your Username & Password was accepted<br/>Now you can %1$sGet Started!%2$s"
152
  msgstr ""
153
 
154
+ #: classes/models/PrliUpdate.php:171
155
+ msgid "ERROR"
 
156
  msgstr ""
157
 
158
+ #: classes/models/PrliUpdate.php:206
159
+ #: pro/classes/views/prlipro-options/form.php:432
160
+ msgid "Save"
 
161
  msgstr ""
162
 
163
  #: prli-xmlrpc.php:22 prli-xmlrpc.php:85 prli-xmlrpc.php:133
164
  #: prli-xmlrpc.php:189 prli-xmlrpc.php:219 prli-xmlrpc.php:248
165
  #: prli-xmlrpc.php:282 prli-xmlrpc.php:315
166
+ msgid "Sorry, XML-RPC Not enabled for this website"
167
+ msgstr ""
168
+
169
+ #: prli-xmlrpc.php:25 prli-xmlrpc.php:88 prli-xmlrpc.php:136
170
+ #: prli-xmlrpc.php:192 prli-xmlrpc.php:222 prli-xmlrpc.php:251
171
+ #: prli-xmlrpc.php:285 prli-xmlrpc.php:318
172
  msgid "Sorry, Login failed"
173
  msgstr ""
174
 
175
+ #: prli-xmlrpc.php:31 prli-xmlrpc.php:94 prli-xmlrpc.php:142
176
+ #: prli-xmlrpc.php:198 prli-xmlrpc.php:228 prli-xmlrpc.php:257
177
+ #: prli-xmlrpc.php:291 prli-xmlrpc.php:324
178
  msgid "Sorry, you must be an administrator to access this resource"
179
  msgstr ""
180
 
181
+ #: prli-xmlrpc.php:98
182
  msgid "You must provide a target URL"
183
  msgstr ""
184
 
185
+ #: prli-xmlrpc.php:124 prli-xmlrpc.php:173
186
  msgid "There was an error creating your Pretty Link"
187
  msgstr ""
188
 
189
+ #: prli-xmlrpc.php:146
190
  msgid "You must provide the id of the link you want to update"
191
  msgstr ""
192
 
193
+ #: prli-xmlrpc.php:203
194
  msgid "There was an error fetching the Pretty Link Groups"
195
  msgstr ""
196
 
197
+ #: prli-xmlrpc.php:233
198
  msgid "There was an error fetching the Pretty Links"
199
  msgstr ""
200
 
201
+ #: prli-xmlrpc.php:260
202
  msgid "Sorry, you must provide a slug to lookup"
203
  msgstr ""
204
 
205
+ #: prli-xmlrpc.php:267 prli-xmlrpc.php:301
206
  msgid "There was an error fetching your Pretty Link"
207
  msgstr ""
208
 
209
+ #: prli-xmlrpc.php:294 prli-xmlrpc.php:327
210
  msgid "Sorry, you must provide an id to lookup"
211
  msgstr ""
212
 
213
+ #: prli-xmlrpc.php:334
214
  msgid "There was an error fetching your Pretty Link URL"
215
  msgstr ""
216
 
217
+ #: prli-main.php:355 prli-main.php:374
218
  msgid ""
219
  "Your Pretty Link Pro installation isn't quite complete yet.<br/>%1"
220
  "$sAutomatically Upgrade to Enable Pretty Link Pro%2$s"
221
  msgstr ""
222
 
223
+ #: pro/prlipro-options.php:9
224
  msgid "Your Keyword Replacement Cache was successfully deleted"
225
  msgstr ""
226
 
227
+ #: pro/prlipro-options.php:36
228
  msgid "Your Duplicate Tweets were Successfully Trimmed"
229
  msgstr ""
230
 
231
+ #: pro/pretty-link-pro.php:128
232
  msgid "Disable Keyword Replacements on this post."
233
  msgstr ""
234
 
235
+ #: pro/pretty-link-pro.php:164
236
  msgid "Hits"
237
  msgstr ""
238
 
239
+ #: pro/pretty-link-pro.php:164
240
  msgid "Uniques"
241
  msgstr ""
242
 
243
+ #: pro/pretty-link-pro.php:206
244
  msgid ""
245
  "A Pretty Link hasn't been generated for this entry yet. Click \"Update Post"
246
  "\" to generate."
247
  msgstr ""
248
 
249
+ #: pro/pretty-link-pro.php:260
250
  msgid "ERROR: Your Pretty Link was unable to be created"
251
  msgstr ""
252
 
253
+ #: pro/pretty-link-pro.php:263
254
  msgid "Unauthorized"
255
  msgstr ""
256
 
257
+ #: pro/pretty-link-pro.php:1581
258
  msgid "Alternate Pretty Bar Attribution URL:"
259
  msgstr ""
260
 
261
+ #: pro/pretty-link-pro.php:1674
262
  msgid "End-Point URL:"
263
  msgstr ""
264
 
265
+ #: pro/pretty-link-pro.php:1675
266
  msgid "This can be used to integrate with your twitter client."
267
  msgstr ""
268
 
269
+ #: pro/pretty-link-pro.php:1678
270
  msgid "Show TweetDeck Integration Instructions"
271
  msgstr ""
272
 
273
+ #: pro/pretty-link-pro.php:1680 pro/pretty-link-pro.php:1686
274
  msgid "Follow the"
275
  msgstr ""
276
 
277
+ #: pro/pretty-link-pro.php:1680
278
  msgid "TweetDeck Custom URL Instructions"
279
  msgstr ""
280
 
281
+ #: pro/pretty-link-pro.php:1680
282
  msgid " and add the following URL to TweetDeck"
283
  msgstr ""
284
 
285
+ #: pro/pretty-link-pro.php:1684
286
  msgid "Show Twitter for iPhone Integration Instructions"
287
  msgstr ""
288
 
289
+ #: pro/pretty-link-pro.php:1686
290
  msgid "Twitter for iPhone Custom URL Instructions"
291
  msgstr ""
292
 
293
+ #: pro/pretty-link-pro.php:1686
294
  msgid " and add the following URL to Twitter for iPhone"
295
  msgstr ""
296
 
297
+ #: pro/pretty-link-pro.php:1696
298
  msgid "Label:"
299
  msgstr ""
300
 
301
+ #: pro/pretty-link-pro.php:1701 pro/prlipro-create-public-link-widget.php:46
302
  msgid "Redirection:"
303
  msgstr ""
304
 
305
+ #: pro/pretty-link-pro.php:1712 pro/prlipro-create-public-link-widget.php:57
306
  msgid "Tracking Enabled:"
307
  msgstr ""
308
 
309
+ #: pro/pretty-link-pro.php:1721 pro/prlipro-create-public-link-widget.php:66
310
  msgid "Group:"
311
  msgstr ""
312
 
313
+ #: pro/pretty-link-pro.php:1823 pro/pretty-link-pro.php:1863
314
  msgid "There was an error saving your Twitter account."
315
  msgstr ""
316
 
317
+ #: pro/pretty-link-pro.php:1859
318
  msgid "Your Twitter Account was successfully saved."
319
  msgstr ""
320
 
321
+ #: pro/pretty-link-pro.php:1877 pro/pretty-link-pro.php:1915
322
  msgid "Pretty Bar"
323
  msgstr ""
324
 
325
+ #: pro/pretty-link-pro.php:1878
326
  msgid "Cloaked"
327
  msgstr ""
328
 
329
+ #: pro/pretty-link-pro.php:1879 pro/pretty-link-pro.php:1917
330
  msgid "Pixel"
331
  msgstr ""
332
 
333
+ #: pro/pretty-link-pro.php:1916
334
  msgid "Cloak"
335
  msgstr ""
336
 
337
+ #: pro/pretty-link-pro.php:1945
338
  msgid "Image URL:"
339
  msgstr ""
340
 
341
+ #: pro/pretty-link-pro.php:1948
342
  msgid ""
343
  "If set, this will replace the logo image on the PrettyBar. The image that "
344
  "this URL references should be 48x48 Pixels to fit."
345
  msgstr ""
346
 
347
+ #: pro/pretty-link-pro.php:1952
348
  msgid "Background Image URL:"
349
  msgstr ""
350
 
351
+ #: pro/pretty-link-pro.php:1955
352
  msgid ""
353
  "If set, this will replace the background image on PrettyBar. The image that "
354
  "this URL references should be 65px tall - this image will be repeated "
355
  "horizontally across the bar."
356
  msgstr ""
357
 
358
+ #: pro/pretty-link-pro.php:1959
359
  msgid "Background Color:"
360
  msgstr ""
361
 
362
+ #: pro/pretty-link-pro.php:1962
363
  msgid ""
364
  "This will alter the background color of the PrettyBar if you haven't "
365
  "specified a PrettyBar background image."
366
  msgstr ""
367
 
368
+ #: pro/pretty-link-pro.php:1966
369
  msgid "Text Color:"
370
  msgstr ""
371
 
372
+ #: pro/pretty-link-pro.php:1969
373
  msgid ""
374
  "If not set, this defaults to black (RGB value <code>#000000</code>) but you "
375
  "can change it to whatever color you like."
376
  msgstr ""
377
 
378
+ #: pro/pretty-link-pro.php:1973
379
  msgid "Link Color:"
380
  msgstr ""
381
 
382
+ #: pro/pretty-link-pro.php:1976
383
  msgid ""
384
  "If not set, this defaults to blue (RGB value <code>#0000ee</code>) but you "
385
  "can change it to whatever color you like."
386
  msgstr ""
387
 
388
+ #: pro/pretty-link-pro.php:1980
389
  msgid "Link Hover Color:"
390
  msgstr ""
391
 
392
+ #: pro/pretty-link-pro.php:1983
393
  msgid ""
394
  "If not set, this defaults to RGB value <code>#ababab</code> but you can "
395
  "change it to whatever color you like."
396
  msgstr ""
397
 
398
+ #: pro/pretty-link-pro.php:1987
399
  msgid "Visited Link Color:"
400
  msgstr ""
401
 
402
+ #: pro/pretty-link-pro.php:1990
403
  msgid ""
404
  "If not set, this defaults to RGB value <code>#551a8b</code> but you can "
405
  "change it to whatever color you like."
406
  msgstr ""
407
 
408
+ #: pro/pretty-link-pro.php:1994
409
  msgid "Title Char Limit*:"
410
  msgstr ""
411
 
412
+ #: pro/pretty-link-pro.php:1997
413
  msgid ""
414
  "If your Website has a long title then you may need to adjust this value so "
415
  "that it will all fit on the PrettyBar. It is recommended that you keep this "
417
  "good across different browsers and screen resolutions."
418
  msgstr ""
419
 
420
+ #: pro/pretty-link-pro.php:2001
421
  msgid "Description Char Limit*:"
422
  msgstr ""
423
 
424
+ #: pro/pretty-link-pro.php:2004
425
  msgid ""
426
  "If your Website has a long Description (tagline) then you may need to adjust "
427
  "this value so that it will all fit on the PrettyBar. It is recommended that "
429
  "format looks good across different browsers and screen resolutions."
430
  msgstr ""
431
 
432
+ #: pro/pretty-link-pro.php:2008
433
  msgid "Target URL Char Limit*:"
434
  msgstr ""
435
 
436
+ #: pro/pretty-link-pro.php:2011
437
  msgid ""
438
  "If you link to a lot of large Target URLs you may want to adjust this value. "
439
  "It is recommended that you keep this value to <code>40</code> or below so "
440
  "the PrettyBar's format looks good across different browsers and URL sizes"
441
  msgstr ""
442
 
443
+ #: pro/pretty-link-pro.php:2016
444
  msgid "Show Pretty Bar Title"
445
  msgstr ""
446
 
447
+ #: pro/pretty-link-pro.php:2017
448
  msgid ""
449
  "Make sure this is checked if you want the title of your blog (and link) to "
450
  "show up on the PrettyBar."
451
  msgstr ""
452
 
453
+ #: pro/pretty-link-pro.php:2022
454
  msgid "Show Pretty Bar Description"
455
  msgstr ""
456
 
457
+ #: pro/pretty-link-pro.php:2023
458
  msgid ""
459
  "Make sure this is checked if you want your site description to show up on "
460
  "the PrettyBar."
461
  msgstr ""
462
 
463
+ #: pro/pretty-link-pro.php:2028
464
  msgid "Show Pretty Bar Share Links"
465
  msgstr ""
466
 
467
+ #: pro/pretty-link-pro.php:2029
468
  msgid ""
469
  "Make sure this is checked if you want \"share links\" to show up on the "
470
  "PrettyBar."
471
  msgstr ""
472
 
473
+ #: pro/pretty-link-pro.php:2034
474
  msgid "Show Pretty Bar Target URL"
475
  msgstr ""
476
 
477
+ #: pro/pretty-link-pro.php:2035
478
  msgid ""
479
  "Make sure this is checked if you want a link displaying the Target URL to "
480
  "show up on the PrettyBar."
481
  msgstr ""
482
 
483
+ #: pro/pretty-link-pro.php:2065
484
  msgid "Logo Image URL must be a correctly formatted URL"
485
  msgstr ""
486
 
487
+ #: pro/pretty-link-pro.php:2068
488
  msgid "Background Image URL must be a correctly formatted URL"
489
  msgstr ""
490
 
491
+ #: pro/pretty-link-pro.php:2071
492
  msgid "PrettyBar Background Color must be an actual RGB Value"
493
  msgstr ""
494
 
495
+ #: pro/pretty-link-pro.php:2074
496
  msgid "PrettyBar Text Color must be an actual RGB Value"
497
  msgstr ""
498
 
499
+ #: pro/pretty-link-pro.php:2077
500
  msgid "PrettyBar Link Color must be an actual RGB Value"
501
  msgstr ""
502
 
503
+ #: pro/pretty-link-pro.php:2080 pro/pretty-link-pro.php:2083
504
  msgid "PrettyBar Hover Color must be an actual RGB Value"
505
  msgstr ""
506
 
507
+ #: pro/pretty-link-pro.php:2086
508
  msgid "PrettyBar Title Character Limit must not be blank"
509
  msgstr ""
510
 
511
+ #: pro/pretty-link-pro.php:2089
512
  msgid "PrettyBar Description Character Limit must not be blank"
513
  msgstr ""
514
 
515
+ #: pro/pretty-link-pro.php:2092
516
  msgid "PrettyBar Link Character Limit must not be blank"
517
  msgstr ""
518
 
519
+ #: pro/pretty-link-pro.php:2095
520
  msgid "PrettyBar Title Character Limit must be a number"
521
  msgstr ""
522
 
523
+ #: pro/pretty-link-pro.php:2098
524
  msgid "PrettyBar Description Character Limit must be a number"
525
  msgstr ""
526
 
527
+ #: pro/pretty-link-pro.php:2101
528
  msgid "PrettyBar Link Character Limit must be a number"
529
  msgstr ""
530
 
531
+ #: pro/prlipro-create-public-link-widget.php:42
532
  msgid "Label Text:"
533
  msgstr ""
534
 
535
+ #: pro/prlipro-create-public-link-widget.php:43
536
  msgid "Button Text:"
537
  msgstr ""
538
 
539
+ #: pro/classes/views/prlipro-options/form.php:34
540
  msgid "Maximum Keywords per Page*:"
541
  msgstr ""
542
 
543
+ #: pro/classes/views/prlipro-options/form.php:40
544
  msgid "Maximum Replacements per Keyword per Page*:"
545
  msgstr ""
546
 
547
+ #: pro/classes/views/prlipro-options/form.php:59
548
  msgid "Custom CSS Styling for your Keyword Replacements:"
549
  msgstr ""
550
 
551
+ #: pro/classes/views/prlipro-options/form.php:66
552
  msgid "Custom Hover CSS Styling for your Keyword Replacements:"
553
  msgstr ""
554
 
555
+ #: pro/classes/views/prlipro-options/form.php:187
556
  msgid "Twitter Account"
557
  msgstr ""
558
 
559
+ #: pro/classes/views/prlipro-options/form.php:232
560
  msgid "Twitter Comments Headline:"
561
  msgstr ""
562
 
563
+ #: pro/classes/views/prlipro-options/form.php:239
564
  msgid "Twitter Comments Height:"
565
  msgstr ""
566
 
567
+ #: pro/classes/views/prlipro-options/form.php:252
568
  msgid "Main Tweet User:"
569
  msgstr ""
570
 
571
+ #: pro/classes/views/prlipro-options/form.php:265
572
  msgid "Tweet Hash Tags:"
573
  msgstr ""
574
 
575
+ #: pro/classes/views/prlipro-options/form.php:387
576
  msgid "Social Buttons Display Spacing:"
577
  msgstr ""
578
 
pretty-bar.php CHANGED
@@ -240,4 +240,4 @@ LINKHTML;
240
  </div>
241
  </div>
242
  </body>
243
- </html>
240
  </div>
241
  </div>
242
  </body>
243
+ </html>
pretty-link.php CHANGED
@@ -3,7 +3,7 @@
3
  Plugin Name: Pretty Link Lite
4
  Plugin URI: http://blairwilliams.com/pretty-link
5
  Description: Shrink, track and share any URL on the Internet from your WordPress website!
6
- Version: 1.5.0
7
  Author: Caseproof
8
  Author URI: http://caseproof.com
9
  Copyright: 2004-2011, Caseproof, LLC
@@ -23,6 +23,8 @@ You should have received a copy of the GNU General Public License
23
  along with this program; if not, write to the Free Software
24
  Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA
25
  */
 
 
26
 
27
  require_once('prli-config.php');
28
  require_once(PRLI_MODELS_PATH . '/models.inc.php');
3
  Plugin Name: Pretty Link Lite
4
  Plugin URI: http://blairwilliams.com/pretty-link
5
  Description: Shrink, track and share any URL on the Internet from your WordPress website!
6
+ Version: 1.5.1
7
  Author: Caseproof
8
  Author URI: http://caseproof.com
9
  Copyright: 2004-2011, Caseproof, LLC
23
  along with this program; if not, write to the Free Software
24
  Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA
25
  */
26
+ if(!defined('ABSPATH'))
27
+ die('You are not allowed to call this page directly.');
28
 
29
  require_once('prli-config.php');
30
  require_once(PRLI_MODELS_PATH . '/models.inc.php');
prli-add-link.php CHANGED
@@ -1,9 +1,11 @@
1
  <?php
 
 
 
2
  require_once 'prli-config.php';
3
  require_once(PRLI_MODELS_PATH . '/models.inc.php');
4
 
5
  $groups = $prli_group->getAll('',' ORDER BY name');
6
  $values = setup_new_vars($groups);
7
 
8
- require_once 'classes/views/prli-links/new.php';
9
- ?>
1
  <?php
2
+ if(!defined('ABSPATH'))
3
+ die('You are not allowed to call this page directly.');
4
+
5
  require_once 'prli-config.php';
6
  require_once(PRLI_MODELS_PATH . '/models.inc.php');
7
 
8
  $groups = $prli_group->getAll('',' ORDER BY name');
9
  $values = setup_new_vars($groups);
10
 
11
+ require_once 'classes/views/prli-links/new.php';
 
prli-api.php CHANGED
@@ -1,4 +1,7 @@
1
  <?php
 
 
 
2
  /**
3
  * Pretty Link WordPress Plugin API
4
  */
@@ -228,6 +231,4 @@ function prli_get_pretty_link_url($id)
228
  return "{$prli_blogurl}".PrliUtils::get_permalink_pre_slug_uri()."{$pretty_link->slug}";
229
 
230
  return false;
231
- }
232
-
233
- ?>
1
  <?php
2
+ if(!defined('ABSPATH'))
3
+ die('You are not allowed to call this page directly.');
4
+
5
  /**
6
  * Pretty Link WordPress Plugin API
7
  */
231
  return "{$prli_blogurl}".PrliUtils::get_permalink_pre_slug_uri()."{$pretty_link->slug}";
232
 
233
  return false;
234
+ }
 
 
prli-bookmarklet.php CHANGED
@@ -90,5 +90,4 @@ else
90
  {
91
  wp_redirect($prli_blogurl);
92
  exit;
93
- }
94
- ?>
90
  {
91
  wp_redirect($prli_blogurl);
92
  exit;
93
+ }
 
prli-clicks.php CHANGED
@@ -1,4 +1,6 @@
1
  <?php
 
 
2
 
3
  require_once 'prli-config.php';
4
  require_once(PRLI_MODELS_PATH . '/models.inc.php');
@@ -285,7 +287,4 @@ function prli_get_click_sort_vars($params,$where_clause = '')
285
  'order_by' => $order_by,
286
  'sort_params' => $sort_params,
287
  'page_params' => $page_params);
288
- }
289
-
290
-
291
- ?>
1
  <?php
2
+ if(!defined('ABSPATH'))
3
+ die('You are not allowed to call this page directly.');
4
 
5
  require_once 'prli-config.php';
6
  require_once(PRLI_MODELS_PATH . '/models.inc.php');
287
  'order_by' => $order_by,
288
  'sort_params' => $sort_params,
289
  'page_params' => $page_params);
290
+ }
 
 
 
prli-config.php CHANGED
@@ -1,4 +1,7 @@
1
  <?php
 
 
 
2
  define('PRLI_PLUGIN_NAME',"pretty-link");
3
  define('PRLI_PATH',WP_PLUGIN_DIR.'/'.PRLI_PLUGIN_NAME);
4
  define('PRLI_MODELS_PATH',PRLI_PATH.'/classes/models');
@@ -130,5 +133,4 @@ function setup_edit_vars($groups,$record)
130
  $values['redirect_type']['pixel'] = (((isset($_REQUEST['redirect_type']) and $_REQUEST['redirect_type'] == 'pixel') or (isset($record->redirect_type) and $record->redirect_type == 'pixel'))?' selected="selected"':'');
131
 
132
  return $values;
133
- }
134
- ?>
1
  <?php
2
+ if(!defined('ABSPATH'))
3
+ die('You are not allowed to call this page directly.');
4
+
5
  define('PRLI_PLUGIN_NAME',"pretty-link");
6
  define('PRLI_PATH',WP_PLUGIN_DIR.'/'.PRLI_PLUGIN_NAME);
7
  define('PRLI_MODELS_PATH',PRLI_PATH.'/classes/models');
133
  $values['redirect_type']['pixel'] = (((isset($_REQUEST['redirect_type']) and $_REQUEST['redirect_type'] == 'pixel') or (isset($record->redirect_type) and $record->redirect_type == 'pixel'))?' selected="selected"':'');
134
 
135
  return $values;
136
+ }
 
prli-dashboard-widget.php CHANGED
@@ -1,13 +1,13 @@
1
  <?php
 
 
 
2
  require_once('prli-config.php');
3
  require_once(PRLI_MODELS_PATH . '/models.inc.php');
4
 
5
- $message = prli_get_main_message("Add a Pretty Link from your Dashboard:");
6
-
7
  global $prli_group,$prli_link,$prli_blogurl;
8
 
9
  $groups = $prli_group->getAll('',' ORDER BY name');
10
  $values = setup_new_vars($groups);
11
 
12
  require_once(PRLI_VIEWS_PATH . "/prli-dashboard-widget/widget.php");
13
- ?>
1
  <?php
2
+ if(!defined('ABSPATH'))
3
+ die('You are not allowed to call this page directly.');
4
+
5
  require_once('prli-config.php');
6
  require_once(PRLI_MODELS_PATH . '/models.inc.php');
7
 
 
 
8
  global $prli_group,$prli_link,$prli_blogurl;
9
 
10
  $groups = $prli_group->getAll('',' ORDER BY name');
11
  $values = setup_new_vars($groups);
12
 
13
  require_once(PRLI_VIEWS_PATH . "/prli-dashboard-widget/widget.php");
 
prli-groups.php CHANGED
@@ -1,4 +1,7 @@
1
  <?php
 
 
 
2
  require_once 'prli-config.php';
3
  require_once(PRLI_MODELS_PATH . '/models.inc.php');
4
 
@@ -170,6 +173,4 @@ function prli_get_group_sort_vars($params,$where_clause = '')
170
  'search_str' => $search_str,
171
  'where_clause' => $where_clause,
172
  'page_params' => $page_params);
173
- }
174
-
175
- ?>
1
  <?php
2
+ if(!defined('ABSPATH'))
3
+ die('You are not allowed to call this page directly.');
4
+
5
  require_once 'prli-config.php';
6
  require_once(PRLI_MODELS_PATH . '/models.inc.php');
7
 
173
  'search_str' => $search_str,
174
  'where_clause' => $where_clause,
175
  'page_params' => $page_params);
176
+ }
 
 
prli-image-lookups.php CHANGED
@@ -1,4 +1,7 @@
1
  <?php
 
 
 
2
  $browser_images = array(
3
  "Akregator" => "akregator.png",
4
  "Amiga" => "amigavoyager.png",
@@ -131,6 +134,4 @@ function prli_os_image($os)
131
  $image = "unknown.png";
132
 
133
  return $image;
134
- }
135
-
136
- ?>
1
  <?php
2
+ if(!defined('ABSPATH'))
3
+ die('You are not allowed to call this page directly.');
4
+
5
  $browser_images = array(
6
  "Akregator" => "akregator.png",
7
  "Amiga" => "amigavoyager.png",
134
  $image = "unknown.png";
135
 
136
  return $image;
137
+ }
 
 
prli-links.php CHANGED
@@ -1,4 +1,7 @@
1
  <?php
 
 
 
2
  require_once 'prli-config.php';
3
  require_once(PRLI_MODELS_PATH . '/models.inc.php');
4
 
@@ -232,7 +235,4 @@ function prli_get_link_sort_vars($params,$where_clause = '')
232
  'search_str' => $search_str,
233
  'where_clause' => $where_clause,
234
  'page_params' => $page_params);
235
- }
236
-
237
-
238
- ?>
1
  <?php
2
+ if(!defined('ABSPATH'))
3
+ die('You are not allowed to call this page directly.');
4
+
5
  require_once 'prli-config.php';
6
  require_once(PRLI_MODELS_PATH . '/models.inc.php');
7
 
235
  'search_str' => $search_str,
236
  'where_clause' => $where_clause,
237
  'page_params' => $page_params);
238
+ }
 
 
 
prli-main.php CHANGED
@@ -1,4 +1,6 @@
1
  <?php
 
 
2
 
3
  // Let's give pretty link plenty of room to work with
4
  $mem = abs(intval(@ini_get('memory_limit')));
1
  <?php
2
+ if(!defined('ABSPATH'))
3
+ die('You are not allowed to call this page directly.');
4
 
5
  // Let's give pretty link plenty of room to work with
6
  $mem = abs(intval(@ini_get('memory_limit')));
prli-options.php CHANGED
@@ -1,4 +1,7 @@
1
  <?php
 
 
 
2
  require_once 'prli-config.php';
3
  require_once(PRLI_MODELS_PATH . '/models.inc.php');
4
 
@@ -87,6 +90,4 @@ if($update_message)
87
  <?php
88
  }
89
 
90
- require_once 'classes/views/prli-options/form.php';
91
-
92
- ?>
1
  <?php
2
+ if(!defined('ABSPATH'))
3
+ die('You are not allowed to call this page directly.');
4
+
5
  require_once 'prli-config.php';
6
  require_once(PRLI_MODELS_PATH . '/models.inc.php');
7
 
90
  <?php
91
  }
92
 
93
+ require_once 'classes/views/prli-options/form.php';
 
 
prli-pro-settings.php CHANGED
@@ -1,4 +1,7 @@
1
  <?php
 
 
 
2
  require_once 'prli-config.php';
3
  require_once(PRLI_MODELS_PATH . '/models.inc.php');
4
 
@@ -31,4 +34,4 @@ if($_GET['action'] == 'pro-uninstall')
31
  <?php
32
  }
33
 
34
- require_once 'classes/views/prli-options/pro-settings.php';
1
  <?php
2
+ if(!defined('ABSPATH'))
3
+ die('You are not allowed to call this page directly.');
4
+
5
  require_once 'prli-config.php';
6
  require_once(PRLI_MODELS_PATH . '/models.inc.php');
7
 
34
  <?php
35
  }
36
 
37
+ require_once 'classes/views/prli-options/pro-settings.php';
prli-tools.php CHANGED
@@ -1,3 +1,5 @@
1
  <?php
2
- require_once PRLI_VIEWS_PATH . '/prli-tools/form.php';
3
- ?>
 
 
1
  <?php
2
+ if(!defined('ABSPATH'))
3
+ die('You are not allowed to call this page directly.');
4
+
5
+ require_once PRLI_VIEWS_PATH . '/prli-tools/form.php';
prli-xmlrpc.php CHANGED
@@ -1,4 +1,7 @@
1
  <?php
 
 
 
2
  /**
3
  * Pretty Link WordPress Plugin API export via XML-RPC
4
  *
@@ -329,5 +332,4 @@ function prli_xmlrpc_get_pretty_link_url($args)
329
  return $url;
330
  else
331
  return new IXR_Error( 401, __( 'There was an error fetching your Pretty Link URL' , 'pretty-link') );
332
- }
333
- ?>
1
  <?php
2
+ if(!defined('ABSPATH'))
3
+ die('You are not allowed to call this page directly.');
4
+
5
  /**
6
  * Pretty Link WordPress Plugin API export via XML-RPC
7
  *
332
  return $url;
333
  else
334
  return new IXR_Error( 401, __( 'There was an error fetching your Pretty Link URL' , 'pretty-link') );
335
+ }
 
readme.txt CHANGED
@@ -4,7 +4,7 @@ Donate link: http://prettylinkpro.com
4
  Tags: links, link, url, urls, affiliate, affiliates, pretty, marketing, redirect, forward, plugin, twitter, tweet, rewrite, shorturl, hoplink, hop, shortlink, short, shorten, 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: 3.0
6
  Tested up to: 3.2.1
7
- Stable tag: 1.5.0
8
 
9
  Shrink, track and share any URL on the Internet from your WordPress website. Create short links suitable for Twitter using your own domain name!
10
 
@@ -67,6 +67,18 @@ http://blairwilliams.com/w7a
67
 
68
  == Changelog ==
69
 
 
 
 
 
 
 
 
 
 
 
 
 
70
  = 1.5.0 =
71
  * Fixed XSS Vulnerabilities
72
  * Added more indexes to Pretty Link tables
@@ -295,6 +307,9 @@ http://blairwilliams.com/w7a
295
 
296
  == Upgrade Notice ==
297
 
 
 
 
298
  = 1.5.0 =
299
  * All users should upgrade to this release since it fixes several security vulnerabilities.
300
 
4
  Tags: links, link, url, urls, affiliate, affiliates, pretty, marketing, redirect, forward, plugin, twitter, tweet, rewrite, shorturl, hoplink, hop, shortlink, short, shorten, 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: 3.0
6
  Tested up to: 3.2.1
7
+ Stable tag: 1.5.1
8
 
9
  Shrink, track and share any URL on the Internet from your WordPress website. Create short links suitable for Twitter using your own domain name!
10
 
67
 
68
  == Changelog ==
69
 
70
+ = 1.5.1 =
71
+ * Fixed issue with mt_rand overflowing
72
+ * Fixed another XSS Vulnerability
73
+ * Fixed some issues with the automatic update process for pro users
74
+ * Made some big security enhancements
75
+ * Fixed some issues with the public link creation widget
76
+ * Fixed an issue with the update database mechanism
77
+ * Removed Keyword Caching from Pro
78
+ * Optimized Keyword Replacement routine in Pro
79
+ * Fixed a small issues with automatic post link creation routines
80
+ * Changed the way slugs are generated and now default to 4 character slugs
81
+
82
  = 1.5.0 =
83
  * Fixed XSS Vulnerabilities
84
  * Added more indexes to Pretty Link tables
307
 
308
  == Upgrade Notice ==
309
 
310
+ = 1.5.1 =
311
+ * This release contains several optimizations and fixes that will benefit most users.
312
+
313
  = 1.5.0 =
314
  * All users should upgrade to this release since it fixes several security vulnerabilities.
315