Version Description
- Fixed numerous bugs
Download this release
Release Info
Developer | supercleanse |
Plugin | Shortlinks by Pretty Links – Best WordPress Link Tracking Plugin |
Version | 2.0.5 |
Comparing to | |
See all releases |
Code changes from version 2.0.4 to 2.0.5
- app/controllers/PrliAppController.php +46 -13
- app/controllers/PrliPopupController.php +242 -0
- app/models/PrliClick.php +29 -0
- app/models/PrliLink.php +18 -6
- app/models/PrliUtils.php +98 -3
- app/views/admin/popups/rating.php +20 -0
- app/views/admin/popups/upgrade.php +29 -0
- css/admin_popup.css +9 -0
- i18n/pretty-link.pot +117 -25
- js/admin_popup.js +73 -0
- pretty-link.php +1 -1
- readme.txt +6 -0
app/controllers/PrliAppController.php
CHANGED
@@ -149,20 +149,47 @@ class PrliAppController extends PrliBaseController {
|
|
149 |
$ui = $wp_scripts->query('jquery-ui-core');
|
150 |
$url = "//ajax.googleapis.com/ajax/libs/jqueryui/{$ui->ver}/themes/smoothness/jquery-ui.css";
|
151 |
|
152 |
-
if(strstr($hook, 'pretty') !== false) {
|
153 |
-
|
154 |
-
|
155 |
-
|
156 |
-
|
157 |
-
|
158 |
-
|
159 |
-
|
|
|
|
|
|
|
|
|
|
|
|
|
160 |
|
161 |
-
wp_enqueue_script('prli-tooltip', PRLI_JS_URL.'/tooltip.js', array('jquery', 'wp-pointer'), PRLI_VERSION);
|
162 |
-
wp_localize_script('prli-tooltip', 'PrliTooltip', array( 'show_about_notice' => $this->show_about_notice(),
|
163 |
-
'about_notice' => $this->about_notice() ));
|
164 |
|
165 |
-
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
166 |
}
|
167 |
|
168 |
if( in_array( $hook, array( 'toplevel_page_pretty-link', 'pretty-link_page_add-new-pretty-link' ) ) ) {
|
@@ -308,9 +335,15 @@ class PrliAppController extends PrliBaseController {
|
|
308 |
|
309 |
// Create the function use in the action hook
|
310 |
public function add_dashboard_widgets() {
|
|
|
311 |
$current_user = PrliUtils::get_currentuserinfo();
|
312 |
|
313 |
-
|
|
|
|
|
|
|
|
|
|
|
314 |
wp_add_dashboard_widget('prli_dashboard_widget', __('Pretty Link Quick Add', 'pretty-link'), array($this,'dashboard_widget_function'));
|
315 |
|
316 |
// Globalize the metaboxes array, this holds all the widgets for wp-admin
|
149 |
$ui = $wp_scripts->query('jquery-ui-core');
|
150 |
$url = "//ajax.googleapis.com/ajax/libs/jqueryui/{$ui->ver}/themes/smoothness/jquery-ui.css";
|
151 |
|
152 |
+
if(strstr($hook, 'pretty-link') !== false) {
|
153 |
+
wp_register_style('pl-ui-smoothness', $url);
|
154 |
+
wp_register_style('prli-simplegrid', PRLI_CSS_URL.'/simplegrid.css', array(), PRLI_VERSION);
|
155 |
+
wp_register_style('prli-social', PRLI_CSS_URL.'/social_buttons.css', array(), PRLI_VERSION);
|
156 |
+
wp_enqueue_style(
|
157 |
+
'prli-admin-shared',
|
158 |
+
PRLI_CSS_URL.'/admin_shared.css',
|
159 |
+
array(
|
160 |
+
'wp-pointer',
|
161 |
+
'prli-simplegrid',
|
162 |
+
'prli-social',
|
163 |
+
),
|
164 |
+
PRLI_VERSION
|
165 |
+
);
|
166 |
|
|
|
|
|
|
|
167 |
|
168 |
+
wp_register_script(
|
169 |
+
'prli-tooltip',
|
170 |
+
PRLI_JS_URL.'/tooltip.js',
|
171 |
+
array('jquery', 'wp-pointer'),
|
172 |
+
PRLI_VERSION
|
173 |
+
);
|
174 |
+
wp_localize_script(
|
175 |
+
'prli-tooltip',
|
176 |
+
'PrliTooltip',
|
177 |
+
array(
|
178 |
+
'show_about_notice' => $this->show_about_notice(),
|
179 |
+
'about_notice' => $this->about_notice()
|
180 |
+
)
|
181 |
+
);
|
182 |
+
wp_enqueue_script(
|
183 |
+
'prli-admin-shared',
|
184 |
+
PRLI_JS_URL.'/admin_shared.js',
|
185 |
+
array(
|
186 |
+
'jquery',
|
187 |
+
'jquery-ui-datepicker',
|
188 |
+
'jquery-ui-sortable',
|
189 |
+
'prli-tooltip'
|
190 |
+
),
|
191 |
+
PRLI_VERSION
|
192 |
+
);
|
193 |
}
|
194 |
|
195 |
if( in_array( $hook, array( 'toplevel_page_pretty-link', 'pretty-link_page_add-new-pretty-link' ) ) ) {
|
335 |
|
336 |
// Create the function use in the action hook
|
337 |
public function add_dashboard_widgets() {
|
338 |
+
global $plp_options;
|
339 |
$current_user = PrliUtils::get_currentuserinfo();
|
340 |
|
341 |
+
$role = 'administrator';
|
342 |
+
if(isset($plp_options->min_role)) {
|
343 |
+
$role = $plp_options->min_role;
|
344 |
+
}
|
345 |
+
|
346 |
+
if(current_user_can($role)) {
|
347 |
wp_add_dashboard_widget('prli_dashboard_widget', __('Pretty Link Quick Add', 'pretty-link'), array($this,'dashboard_widget_function'));
|
348 |
|
349 |
// Globalize the metaboxes array, this holds all the widgets for wp-admin
|
app/controllers/PrliPopupController.php
ADDED
@@ -0,0 +1,242 @@
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
1 |
+
<?php if(!defined('ABSPATH')) { die('You are not allowed to call this page directly.'); }
|
2 |
+
|
3 |
+
class PrliPopupController extends PrliBaseController {
|
4 |
+
public $popup_css, $popup_js, $popups;
|
5 |
+
|
6 |
+
public function __construct() {
|
7 |
+
$cdn_base = 'https://cdnjs.cloudflare.com/ajax/libs/magnific-popup.js/1.1.0/';
|
8 |
+
$this->popup_css = "{$cdn_base}/magnific-popup.min.css";
|
9 |
+
$this->popup_js = "{$cdn_base}/jquery.magnific-popup.min.js";
|
10 |
+
|
11 |
+
// This is an array of the currently defined popups ...
|
12 |
+
// used to validate that the popup specified actually exists
|
13 |
+
$this->popups = array(
|
14 |
+
'upgrade' => array(
|
15 |
+
'after_usage' => true,
|
16 |
+
'user_popup' => true,
|
17 |
+
'lite_only_popup' => true,
|
18 |
+
'delay' => MONTH_IN_SECONDS,
|
19 |
+
'delay_after_last_popup' => WEEK_IN_SECONDS,
|
20 |
+
),
|
21 |
+
'rating' => array(
|
22 |
+
'after_usage' => true,
|
23 |
+
'user_popup' => true,
|
24 |
+
'lite_only_popup' => true,
|
25 |
+
'delay' => MONTH_IN_SECONDS,
|
26 |
+
'delay_after_last_popup' => WEEK_IN_SECONDS,
|
27 |
+
),
|
28 |
+
);
|
29 |
+
}
|
30 |
+
|
31 |
+
public function load_hooks() {
|
32 |
+
// This is a hidden option to help support in case
|
33 |
+
// there's a problem stopping or delaying a popup
|
34 |
+
$dap = get_option('prli_disable_all_popups');
|
35 |
+
if($dap) { return; }
|
36 |
+
|
37 |
+
add_action('admin_enqueue_scripts', array($this, 'enqueue_admin_scripts'));
|
38 |
+
add_action('wp_ajax_prli_stop_popup', array($this, 'ajax_stop_or_delay_popup'));
|
39 |
+
add_action('wp_ajax_prli_delay_popup', array($this, 'ajax_stop_or_delay_popup'));
|
40 |
+
add_action('admin_notices', array($this,'display_popups'));
|
41 |
+
}
|
42 |
+
|
43 |
+
public function enqueue_admin_scripts($hook) {
|
44 |
+
if(strstr($hook, 'pretty-link') !== false) {
|
45 |
+
wp_register_style('prli-magnific-popup', $this->popup_css);
|
46 |
+
wp_enqueue_style(
|
47 |
+
'prli-admin-popup',
|
48 |
+
PRLI_CSS_URL.'/admin_popup.css',
|
49 |
+
array('prli-magnific-popup'),
|
50 |
+
PRLI_VERSION
|
51 |
+
);
|
52 |
+
|
53 |
+
wp_register_script('prli-magnific-popup', $this->popup_js, array('jquery'));
|
54 |
+
wp_enqueue_script(
|
55 |
+
'prli-admin-popup',
|
56 |
+
PRLI_JS_URL.'/admin_popup.js',
|
57 |
+
array('jquery','prli-magnific-popup'),
|
58 |
+
PRLI_VERSION
|
59 |
+
);
|
60 |
+
$loc = array(
|
61 |
+
'security' => wp_create_nonce('prli-admin-popup'),
|
62 |
+
'error' => __('An unknown error occurred.', 'pretty-link')
|
63 |
+
);
|
64 |
+
wp_localize_script('prli-admin-popup','PrliPopup', $loc);
|
65 |
+
}
|
66 |
+
}
|
67 |
+
|
68 |
+
public function display_popups() {
|
69 |
+
// If this isn't a Pretty Link authorized user then bail
|
70 |
+
if(!PrliUtils::is_authorized()) { return; }
|
71 |
+
|
72 |
+
foreach($this->popups as $popup => $settings) {
|
73 |
+
$this->maybe_show_popup($popup);
|
74 |
+
}
|
75 |
+
}
|
76 |
+
|
77 |
+
public function ajax_stop_or_delay_popup() {
|
78 |
+
PrliUtils::check_ajax_referer('prli-admin-popup','security');
|
79 |
+
|
80 |
+
// If this isn't a Pretty Link authorized user then bail
|
81 |
+
if(!PrliUtils::is_authorized()) {
|
82 |
+
PrliUtils::exit_with_status(403,json_encode(array('error'=>__('Forbidden', 'pretty-link'))));
|
83 |
+
}
|
84 |
+
|
85 |
+
if(!isset($_POST['popup'])) {
|
86 |
+
PrliUtils::exit_with_status(400,json_encode(array('error'=>__('Must specify a popup', 'pretty-link'))));
|
87 |
+
}
|
88 |
+
|
89 |
+
$popup = sanitize_text_field($_POST['popup']);
|
90 |
+
|
91 |
+
if(!$this->is_valid_popup($popup)) {
|
92 |
+
PrliUtils::exit_with_status(400,json_encode(array('error'=>__('Invalid popup', 'pretty-link'))));
|
93 |
+
}
|
94 |
+
|
95 |
+
if($_POST['action']=='prli_delay_popup') {
|
96 |
+
$this->delay_popup($popup);
|
97 |
+
$message = __('The popup was successfully delayed', 'pretty-link');
|
98 |
+
}
|
99 |
+
else {
|
100 |
+
$this->stop_popup($popup); // TODO: Error handling
|
101 |
+
$message = __('The popup was successfully stopped', 'pretty-link');
|
102 |
+
}
|
103 |
+
|
104 |
+
PrliUtils::exit_with_status(200,json_encode(compact('message')));
|
105 |
+
}
|
106 |
+
|
107 |
+
private function is_valid_popup($popup) {
|
108 |
+
return in_array($popup,array_keys($this->popups));
|
109 |
+
}
|
110 |
+
|
111 |
+
private function stop_popup($popup) {
|
112 |
+
// TODO: Should we add some error handling?
|
113 |
+
if(!$this->is_valid_popup($popup)) { return; }
|
114 |
+
|
115 |
+
if($this->popups[$popup]['user_popup']) {
|
116 |
+
$user_id = PrliUtils::get_current_user_id();
|
117 |
+
update_user_meta($user_id, $this->popup_stop_key($popup), 1);
|
118 |
+
}
|
119 |
+
else {
|
120 |
+
update_option($this->popup_stop_key($popup), 1);
|
121 |
+
}
|
122 |
+
}
|
123 |
+
|
124 |
+
private function delay_popup($popup) {
|
125 |
+
// TODO: Should we add some error handling?
|
126 |
+
if(!$this->is_valid_popup($popup)) { return; }
|
127 |
+
set_transient(
|
128 |
+
$this->popup_delay_key($popup,$this->popups[$popup]['user_popup']),
|
129 |
+
1,
|
130 |
+
$this->popups[$popup]['delay']
|
131 |
+
);
|
132 |
+
}
|
133 |
+
|
134 |
+
private function is_popup_delayed($popup) {
|
135 |
+
if(!$this->is_valid_popup($popup)) { $return; }
|
136 |
+
|
137 |
+
if($this->popups[$popup]['user_popup']) {
|
138 |
+
// check if it's been delayed or stopped
|
139 |
+
$user_id = PrliUtils::get_current_user_id();
|
140 |
+
return get_transient($this->popup_delay_key($popup));
|
141 |
+
}
|
142 |
+
|
143 |
+
return get_transient($this->popup_delay_key($popup));
|
144 |
+
}
|
145 |
+
|
146 |
+
private function is_popup_stopped($popup) {
|
147 |
+
if(!$this->is_valid_popup($popup)) { $return; }
|
148 |
+
|
149 |
+
if($this->popups[$popup]['user_popup']) {
|
150 |
+
$user_id = PrliUtils::get_current_user_id();
|
151 |
+
return get_user_meta($user_id, $this->popup_stop_key($popup), true);
|
152 |
+
}
|
153 |
+
|
154 |
+
return get_option($this->popup_stop_key($popup));
|
155 |
+
}
|
156 |
+
|
157 |
+
private function set_popup_last_viewed_timestamp($popup) {
|
158 |
+
$timestamp = time();
|
159 |
+
return update_option('prli-popup-last-viewed', compact('popup','timestamp'));
|
160 |
+
}
|
161 |
+
|
162 |
+
private function get_popup_last_viewed_timestamp() {
|
163 |
+
$default = array('popup'=>false,'timestamp'=>false);
|
164 |
+
return get_option('prli-popup-last-viewed',$default);
|
165 |
+
}
|
166 |
+
|
167 |
+
private function maybe_show_popup($popup) {
|
168 |
+
if($this->popup_visible($popup)) {
|
169 |
+
$this->increment_popup_display_count($popup);
|
170 |
+
$this->set_popup_last_viewed_timestamp($popup);
|
171 |
+
require(PRLI_VIEWS_PATH."/admin/popups/{$popup}.php");
|
172 |
+
}
|
173 |
+
}
|
174 |
+
|
175 |
+
private function popup_visible($popup) {
|
176 |
+
// ensure popup only shows up in lite
|
177 |
+
$prli_update = new PrliUpdateController();
|
178 |
+
if( ( $this->popups[$popup]['lite_only_popup'] &&
|
179 |
+
$prli_update->is_installed_and_activated()) ||
|
180 |
+
!$this->is_valid_popup($popup)) {
|
181 |
+
return false;
|
182 |
+
}
|
183 |
+
|
184 |
+
if($this->popups[$popup]['after_usage']) {
|
185 |
+
$click_count = PrliClick::get_count();
|
186 |
+
$first_click_date = PrliClick::get_first_date();
|
187 |
+
$link_count = PrliLink::get_count();
|
188 |
+
$first_link_date = PrliClick::get_first_date();
|
189 |
+
|
190 |
+
// Make sure user has been using Pretty Link for at least a month
|
191 |
+
$month_ago = time() - MONTH_IN_SECONDS;
|
192 |
+
|
193 |
+
if( $click_count < 10 ||
|
194 |
+
($first_click_date!==false && strtotime($first_click_date) > $month_ago) ||
|
195 |
+
$link_count < 3 ||
|
196 |
+
strtotime($first_link_date) > $month_ago ) {
|
197 |
+
return false;
|
198 |
+
}
|
199 |
+
}
|
200 |
+
|
201 |
+
// If we're not yet past the delay threshold for the last viewed popup then don't show it
|
202 |
+
$last_viewed = $this->get_popup_last_viewed_timestamp();
|
203 |
+
if( !empty($last_viewed) &&
|
204 |
+
$last_viewed['popup']!=$popup &&
|
205 |
+
((int)$last_viewed['timestamp'] + (int)$this->popups[$popup]['delay_after_last_popup']) > time() ) {
|
206 |
+
return false;
|
207 |
+
}
|
208 |
+
|
209 |
+
// This is for popups that should be displayed and resolved for each individual admin user
|
210 |
+
$delayed = $this->is_popup_delayed($popup);
|
211 |
+
|
212 |
+
// Popups displayed and resolved for any admin user in the system
|
213 |
+
$stopped = $this->is_popup_stopped($popup);
|
214 |
+
|
215 |
+
return (!$delayed && !$stopped);
|
216 |
+
}
|
217 |
+
|
218 |
+
private function increment_popup_display_count($popup) {
|
219 |
+
$user_id = PrliUtils::get_current_user_id();
|
220 |
+
$count = (int)get_user_meta($user_id, $this->popup_display_count_key($popup), true);
|
221 |
+
update_user_meta($user_id, $this->popup_display_count_key($popup), ++$count);
|
222 |
+
}
|
223 |
+
|
224 |
+
private function popup_display_count_key($popup) {
|
225 |
+
return "prli-{$popup}-popup-display-count";
|
226 |
+
}
|
227 |
+
|
228 |
+
private function popup_delay_key($popup) {
|
229 |
+
if($this->is_valid_popup($popup) && $this->popups[$popup]['user_popup']) {
|
230 |
+
$user_id = PrliUtils::get_current_user_id();
|
231 |
+
return "prli-delay-{$popup}-popup-for-{$user_id}";
|
232 |
+
}
|
233 |
+
else {
|
234 |
+
return "prli-delay-{$popup}-popup";
|
235 |
+
}
|
236 |
+
}
|
237 |
+
|
238 |
+
private function popup_stop_key($popup) {
|
239 |
+
return "prli-stop-{$popup}-popup";
|
240 |
+
}
|
241 |
+
}
|
242 |
+
|
app/models/PrliClick.php
CHANGED
@@ -10,6 +10,35 @@ class PrliClick {
|
|
10 |
$this->table_name = "{$wpdb->prefix}prli_clicks";
|
11 |
}
|
12 |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
13 |
public function get_exclude_where_clause( $where = '', $abbr = 'cl') {
|
14 |
global $prli_options;
|
15 |
$exclude_list = trim($prli_options->prli_exclude_ips);
|
10 |
$this->table_name = "{$wpdb->prefix}prli_clicks";
|
11 |
}
|
12 |
|
13 |
+
public static function get_count() {
|
14 |
+
global $wpdb, $prli_options, $prli_click;
|
15 |
+
|
16 |
+
if($prli_options->extended_tracking != 'count') {
|
17 |
+
$q = "SELECT COUNT(*) FROM {$prli_click->table_name}";
|
18 |
+
}
|
19 |
+
else {
|
20 |
+
$q = "
|
21 |
+
SELECT SUM(CAST(meta_value AS SIGNED))
|
22 |
+
FROM {$wpdb->prefix}prli_link_metas
|
23 |
+
WHERE meta_key='static-clicks'
|
24 |
+
";
|
25 |
+
}
|
26 |
+
|
27 |
+
return $wpdb->get_var($q);
|
28 |
+
}
|
29 |
+
|
30 |
+
public static function get_first_date() {
|
31 |
+
global $wpdb, $prli_options, $prli_click;
|
32 |
+
|
33 |
+
if($prli_options->extended_tracking != 'count') {
|
34 |
+
$q = "SELECT min(created_at) FROM {$prli_click->table_name}";
|
35 |
+
return $wpdb->get_var($q);
|
36 |
+
}
|
37 |
+
else {
|
38 |
+
return false;
|
39 |
+
}
|
40 |
+
}
|
41 |
+
|
42 |
public function get_exclude_where_clause( $where = '', $abbr = 'cl') {
|
43 |
global $prli_options;
|
44 |
$exclude_list = trim($prli_options->prli_exclude_ips);
|
app/models/PrliLink.php
CHANGED
@@ -2,12 +2,24 @@
|
|
2 |
if(!defined('ABSPATH')) { die('You are not allowed to call this page directly.'); }
|
3 |
|
4 |
class PrliLink {
|
5 |
-
|
6 |
-
|
7 |
-
|
8 |
-
|
9 |
-
|
10 |
-
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
11 |
|
12 |
public function create( $values ) {
|
13 |
global $wpdb, $prli_link_meta;
|
2 |
if(!defined('ABSPATH')) { die('You are not allowed to call this page directly.'); }
|
3 |
|
4 |
class PrliLink {
|
5 |
+
public $table_name;
|
6 |
+
|
7 |
+
public function __construct() {
|
8 |
+
global $wpdb;
|
9 |
+
$this->table_name = "{$wpdb->prefix}prli_links";
|
10 |
+
}
|
11 |
+
|
12 |
+
public static function get_count() {
|
13 |
+
global $wpdb, $prli_link;
|
14 |
+
$q = "SELECT COUNT(*) FROM {$prli_link->table_name}";
|
15 |
+
return $wpdb->get_var($q);
|
16 |
+
}
|
17 |
+
|
18 |
+
public static function get_first_date() {
|
19 |
+
global $wpdb, $prli_link;
|
20 |
+
$q = "SELECT min(created_at) FROM {$prli_link->table_name}";
|
21 |
+
return $wpdb->get_var($q);
|
22 |
+
}
|
23 |
|
24 |
public function create( $values ) {
|
25 |
global $wpdb, $prli_link_meta;
|
app/models/PrliUtils.php
CHANGED
@@ -1159,11 +1159,25 @@ class PrliUtils {
|
|
1159 |
}
|
1160 |
|
1161 |
public static function is_admin() {
|
1162 |
-
return current_user_can('
|
1163 |
}
|
1164 |
|
1165 |
public static function is_subscriber() {
|
1166 |
-
return (current_user_can('subscriber'));
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
1167 |
}
|
1168 |
|
1169 |
/* PLUGGABLE FUNCTIONS AS TO NOT STEP ON OTHER PLUGINS' CODE */
|
@@ -1178,6 +1192,11 @@ class PrliUtils {
|
|
1178 |
return is_user_logged_in();
|
1179 |
}
|
1180 |
|
|
|
|
|
|
|
|
|
|
|
1181 |
public static function get_currentuserinfo() {
|
1182 |
self::include_pluggables('wp_get_current_user');
|
1183 |
$current_user = wp_get_current_user();
|
@@ -1190,6 +1209,16 @@ class PrliUtils {
|
|
1190 |
}
|
1191 |
}
|
1192 |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
1193 |
// Get new messages every 1/2 hour
|
1194 |
public static function get_main_message($message = '',$expiration = 43200) { //43200 = 12 hours
|
1195 |
global $plp_update;
|
@@ -1260,11 +1289,77 @@ class PrliUtils {
|
|
1260 |
$prli_cap = 'install_plugins';
|
1261 |
|
1262 |
if(empty($user_id)) {
|
1263 |
-
return current_user_can($prli_cap);
|
1264 |
}
|
1265 |
else {
|
1266 |
return user_can($user_id, $prli_cap);
|
1267 |
}
|
1268 |
}
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
1269 |
}
|
1270 |
|
1159 |
}
|
1160 |
|
1161 |
public static function is_admin() {
|
1162 |
+
return self::current_user_can('add_users');
|
1163 |
}
|
1164 |
|
1165 |
public static function is_subscriber() {
|
1166 |
+
return (self::current_user_can('subscriber'));
|
1167 |
+
}
|
1168 |
+
|
1169 |
+
// Checks to see that the user is authorized to use Pretty Link based on the minimum role
|
1170 |
+
public static function is_authorized() {
|
1171 |
+
global $plp_options;
|
1172 |
+
|
1173 |
+
$prli_update = new PrliUpdateController();
|
1174 |
+
|
1175 |
+
$role = 'add_users';
|
1176 |
+
if($prli_update->is_installed_and_activated() && isset($plp_options) && isset($plp_options->min_role)) {
|
1177 |
+
$role = $plp_options->min_role;
|
1178 |
+
}
|
1179 |
+
|
1180 |
+
return self::current_user_can($role);
|
1181 |
}
|
1182 |
|
1183 |
/* PLUGGABLE FUNCTIONS AS TO NOT STEP ON OTHER PLUGINS' CODE */
|
1192 |
return is_user_logged_in();
|
1193 |
}
|
1194 |
|
1195 |
+
public static function check_ajax_referer($slug,$param) {
|
1196 |
+
self::include_pluggables('check_ajax_referer');
|
1197 |
+
return check_ajax_referer($slug,$param);
|
1198 |
+
}
|
1199 |
+
|
1200 |
public static function get_currentuserinfo() {
|
1201 |
self::include_pluggables('wp_get_current_user');
|
1202 |
$current_user = wp_get_current_user();
|
1209 |
}
|
1210 |
}
|
1211 |
|
1212 |
+
public static function get_current_user_id() {
|
1213 |
+
self::include_pluggables('wp_get_current_user');
|
1214 |
+
return get_current_user_id();
|
1215 |
+
}
|
1216 |
+
|
1217 |
+
public static function current_user_can($role) {
|
1218 |
+
self::include_pluggables('wp_get_current_user');
|
1219 |
+
return current_user_can($role);
|
1220 |
+
}
|
1221 |
+
|
1222 |
// Get new messages every 1/2 hour
|
1223 |
public static function get_main_message($message = '',$expiration = 43200) { //43200 = 12 hours
|
1224 |
global $plp_update;
|
1289 |
$prli_cap = 'install_plugins';
|
1290 |
|
1291 |
if(empty($user_id)) {
|
1292 |
+
return self::current_user_can($prli_cap);
|
1293 |
}
|
1294 |
else {
|
1295 |
return user_can($user_id, $prli_cap);
|
1296 |
}
|
1297 |
}
|
1298 |
+
|
1299 |
+
public static function http_status_codes() {
|
1300 |
+
return array(
|
1301 |
+
100 => 'Continue',
|
1302 |
+
101 => 'Switching Protocols',
|
1303 |
+
102 => 'Processing',
|
1304 |
+
200 => 'OK',
|
1305 |
+
201 => 'Created',
|
1306 |
+
202 => 'Accepted',
|
1307 |
+
203 => 'Non-Authoritative Information',
|
1308 |
+
204 => 'No Content',
|
1309 |
+
205 => 'Reset Content',
|
1310 |
+
206 => 'Partial Content',
|
1311 |
+
207 => 'Multi-Status',
|
1312 |
+
300 => 'Multiple Choices',
|
1313 |
+
301 => 'Moved Permanently',
|
1314 |
+
302 => 'Found',
|
1315 |
+
303 => 'See Other',
|
1316 |
+
304 => 'Not Modified',
|
1317 |
+
305 => 'Use Proxy',
|
1318 |
+
306 => 'Switch Proxy',
|
1319 |
+
307 => 'Temporary Redirect',
|
1320 |
+
400 => 'Bad Request',
|
1321 |
+
401 => 'Unauthorized',
|
1322 |
+
402 => 'Payment Required',
|
1323 |
+
403 => 'Forbidden',
|
1324 |
+
404 => 'Not Found',
|
1325 |
+
405 => 'Method Not Allowed',
|
1326 |
+
406 => 'Not Acceptable',
|
1327 |
+
407 => 'Proxy Authentication Required',
|
1328 |
+
408 => 'Request Timeout',
|
1329 |
+
409 => 'Conflict',
|
1330 |
+
410 => 'Gone',
|
1331 |
+
411 => 'Length Required',
|
1332 |
+
412 => 'Precondition Failed',
|
1333 |
+
413 => 'Request Entity Too Large',
|
1334 |
+
414 => 'Request-URI Too Long',
|
1335 |
+
415 => 'Unsupported Media Type',
|
1336 |
+
416 => 'Requested Range Not Satisfiable',
|
1337 |
+
417 => 'Expectation Failed',
|
1338 |
+
418 => 'I\'m a teapot',
|
1339 |
+
422 => 'Unprocessable Entity',
|
1340 |
+
423 => 'Locked',
|
1341 |
+
424 => 'Failed Dependency',
|
1342 |
+
425 => 'Unordered Collection',
|
1343 |
+
426 => 'Upgrade Required',
|
1344 |
+
449 => 'Retry With',
|
1345 |
+
450 => 'Blocked by Windows Parental Controls',
|
1346 |
+
500 => 'Internal Server Error',
|
1347 |
+
501 => 'Not Implemented',
|
1348 |
+
502 => 'Bad Gateway',
|
1349 |
+
503 => 'Service Unavailable',
|
1350 |
+
504 => 'Gateway Timeout',
|
1351 |
+
505 => 'HTTP Version Not Supported',
|
1352 |
+
506 => 'Variant Also Negotiates',
|
1353 |
+
507 => 'Insufficient Storage',
|
1354 |
+
509 => 'Bandwidth Limit Exceeded',
|
1355 |
+
510 => 'Not Extended'
|
1356 |
+
);
|
1357 |
+
}
|
1358 |
+
|
1359 |
+
public static function exit_with_status($status,$message='') {
|
1360 |
+
$codes = self::http_status_codes();
|
1361 |
+
header("HTTP/1.1 {$status} {$codes[$status]}", true, $status);
|
1362 |
+
exit($message);
|
1363 |
+
}
|
1364 |
}
|
1365 |
|
app/views/admin/popups/rating.php
ADDED
@@ -0,0 +1,20 @@
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
1 |
+
<?php if(!defined('ABSPATH')) {die('You are not allowed to call this page directly.');} ?>
|
2 |
+
|
3 |
+
<div id="prli-rating-popup" class="mfp-hide prli-popup prli-auto-open">
|
4 |
+
<p><img src="<?php echo PRLI_IMAGES_URL . '/pl-logo-horiz-RGB.svg'; ?>" width="200" height="32" /></p>
|
5 |
+
<div> </div>
|
6 |
+
<h2><?php _e('Rate Pretty Link', 'pretty-link'); ?></h2>
|
7 |
+
<p><?php _e('If you enjoy using Pretty Link would you mind taking a moment to rate it on WordPress.org? It won\'t take more than a minute.', 'pretty-link'); ?></p>
|
8 |
+
<p><?php _e('Thanks for your support!', 'pretty-link'); ?></p>
|
9 |
+
<div> </div>
|
10 |
+
<div> </div>
|
11 |
+
|
12 |
+
<center>
|
13 |
+
<button data-popup="rating" class="prli-delay-popup button"><?php _e('Remind Me Later', 'pretty-link'); ?></button>
|
14 |
+
<button data-popup="rating" data-href="https://wordpress.org/plugins/pretty-link/" class="prli-delay-popup button-primary"><?php _e('Review Pretty Link', 'pretty-link'); ?></button>
|
15 |
+
<div> </div>
|
16 |
+
<a href="" data-popup="rating" class="prli-stop-popup"><?php _e('Never Remind Me Again', 'pretty-link'); ?></a>
|
17 |
+
</center>
|
18 |
+
|
19 |
+
</div>
|
20 |
+
|
app/views/admin/popups/upgrade.php
ADDED
@@ -0,0 +1,29 @@
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
1 |
+
<?php if(!defined('ABSPATH')) {die('You are not allowed to call this page directly.');} ?>
|
2 |
+
|
3 |
+
<div id="prli-upgrade-popup" class="mfp-hide prli-popup prli-auto-open">
|
4 |
+
<p><img src="<?php echo PRLI_IMAGES_URL . '/pl-logo-horiz-RGB.svg'; ?>" width="200" height="32" /></p>
|
5 |
+
<div> </div>
|
6 |
+
<h2><?php _e('Upgrade Pretty Link PRO', 'pretty-link'); ?></h2>
|
7 |
+
<p><?php _e('Upgrading will enable you to:', 'pretty-link'); ?><br/>
|
8 |
+
<ul>
|
9 |
+
<li> • <?php _e('Cloak links', 'pretty-link'); ?></li>
|
10 |
+
<li> • <?php _e('Redirect based on location', 'pretty-link'); ?></li>
|
11 |
+
<li> • <?php _e('Auto-prettylink your Pages & Posts', 'pretty-link'); ?></li>
|
12 |
+
<li> • <?php _e('Auto-replace links throughout your site with Pretty Links', 'pretty-link'); ?></li>
|
13 |
+
<li> • <?php _e('And much, much more!', 'pretty-link'); ?></li>
|
14 |
+
</ul>
|
15 |
+
</p>
|
16 |
+
<p><?php _e('Plus, upgrading is fast, easy and won\'t disrupt any of your existing links or data. And there\'s even a 14 day money back guarantee.', 'pretty-link'); ?></p>
|
17 |
+
<p><?php _e('We think you\'ll love it!', 'pretty-link'); ?></p>
|
18 |
+
<div> </div>
|
19 |
+
<div> </div>
|
20 |
+
|
21 |
+
<center>
|
22 |
+
<button data-popup="upgrade" class="prli-delay-popup button"><?php _e('Remind Me Later', 'pretty-link'); ?></button>
|
23 |
+
<button data-popup="upgrade" data-href="https://prettylinkpro.com/pricing/plans/" class="prli-delay-popup button-primary"><?php _e('Upgrade to Pretty Link Pro', 'pretty-link'); ?></button>
|
24 |
+
<div> </div>
|
25 |
+
<a href="" data-popup="upgrade" class="prli-stop-popup"><?php _e('Never Remind Me Again', 'pretty-link'); ?></a>
|
26 |
+
</center>
|
27 |
+
|
28 |
+
</div>
|
29 |
+
|
css/admin_popup.css
ADDED
@@ -0,0 +1,9 @@
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
1 |
+
.prli-popup {
|
2 |
+
position: relative;
|
3 |
+
background: #FFF;
|
4 |
+
padding: 20px;
|
5 |
+
width: auto;
|
6 |
+
max-width: 500px;
|
7 |
+
margin: 20px auto;
|
8 |
+
}
|
9 |
+
|
i18n/pretty-link.pot
CHANGED
@@ -2,9 +2,9 @@
|
|
2 |
# This file is distributed under the same license as the Pretty Link package.
|
3 |
msgid ""
|
4 |
msgstr ""
|
5 |
-
"Project-Id-Version: Pretty Link 2.0.
|
6 |
"Report-Msgid-Bugs-To: https://wordpress.org/support/plugin/pretty-link\n"
|
7 |
-
"POT-Creation-Date: 2017-02-
|
8 |
"MIME-Version: 1.0\n"
|
9 |
"Content-Type: text/plain; charset=UTF-8\n"
|
10 |
"Content-Transfer-Encoding: 8bit\n"
|
@@ -17,7 +17,7 @@ msgstr ""
|
|
17 |
msgid "Pretty Link | Manage Pretty Links"
|
18 |
msgstr ""
|
19 |
|
20 |
-
#. #-#-#-#-# pretty-link.pot (Pretty Link 2.0.
|
21 |
#. Plugin Name of the plugin/theme
|
22 |
#: app/controllers/PrliAppController.php:37
|
23 |
#: app/controllers/PrliAppController.php:46 app/views/links/form.php:47
|
@@ -46,7 +46,7 @@ msgstr ""
|
|
46 |
msgid "Pretty Link | Clicks"
|
47 |
msgstr ""
|
48 |
|
49 |
-
#: app/controllers/PrliAppController.php:73 app/models/PrliClick.php:
|
50 |
#: app/views/clicks/list.php:4 app/views/groups/list.php:69
|
51 |
#: pro/app/helpers/PlpPostsHelper.php:61 pro/app/views/links/form.php:36
|
52 |
#: pro/app/views/links/form.php:48 pro/app/views/reports/custom-report.php:31
|
@@ -98,21 +98,21 @@ msgstr ""
|
|
98 |
msgid "Buy"
|
99 |
msgstr ""
|
100 |
|
101 |
-
#: app/controllers/PrliAppController.php:
|
102 |
msgid ""
|
103 |
"You're almost done!<br/>%1$sFinish your Re-Install of Pretty Link Pro%2$s"
|
104 |
msgstr ""
|
105 |
|
106 |
-
#: app/controllers/PrliAppController.php:
|
107 |
msgid "Pretty Link Pro Successfully Uninstalled."
|
108 |
msgstr ""
|
109 |
|
110 |
-
#: app/controllers/PrliAppController.php:
|
111 |
msgid "Pretty Link Quick Add"
|
112 |
msgstr ""
|
113 |
|
114 |
-
#: app/controllers/PrliAppController.php:
|
115 |
-
#: app/controllers/PrliAppController.php:
|
116 |
msgid ""
|
117 |
"Your Pretty Link Pro installation isn't quite complete yet.<br/>"
|
118 |
"%1$sAutomatically Upgrade to Enable Pretty Link Pro%2$s"
|
@@ -225,6 +225,30 @@ msgid ""
|
|
225 |
"addresses or ranges."
|
226 |
msgstr ""
|
227 |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
228 |
#: app/controllers/PrliToolsController.php:89
|
229 |
msgid "Click Database was Cleared."
|
230 |
msgstr ""
|
@@ -468,71 +492,71 @@ msgstr ""
|
|
468 |
msgid "Send %s in an Email"
|
469 |
msgstr ""
|
470 |
|
471 |
-
#: app/models/PrliClick.php:
|
472 |
msgid "group: '%s'"
|
473 |
msgstr ""
|
474 |
|
475 |
-
#: app/models/PrliClick.php:
|
476 |
msgid "all links"
|
477 |
msgstr ""
|
478 |
|
479 |
-
#: app/models/PrliClick.php:
|
480 |
msgid "All clicks"
|
481 |
msgstr ""
|
482 |
|
483 |
-
#: app/models/PrliClick.php:
|
484 |
msgid "Unique hits"
|
485 |
msgstr ""
|
486 |
|
487 |
-
#: app/models/PrliClick.php:
|
488 |
msgid "Pretty Link:"
|
489 |
msgstr ""
|
490 |
|
491 |
-
#: app/models/PrliClick.php:
|
492 |
msgid "on"
|
493 |
msgstr ""
|
494 |
|
495 |
-
#: app/models/PrliClick.php:
|
496 |
msgid "between"
|
497 |
msgstr ""
|
498 |
|
499 |
-
#: app/models/PrliClick.php:
|
500 |
#: pro/app/models/PlpReport.php:385
|
501 |
msgid "and"
|
502 |
msgstr ""
|
503 |
|
504 |
-
#: app/models/PrliClick.php:
|
505 |
#: pro/app/views/links/form.php:68
|
506 |
msgid "Date"
|
507 |
msgstr ""
|
508 |
|
509 |
-
#: app/models/PrliLink.php:
|
510 |
msgid "Target URL can't be blank"
|
511 |
msgstr ""
|
512 |
|
513 |
-
#: app/models/PrliLink.php:
|
514 |
msgid "Pretty Link can't be blank"
|
515 |
msgstr ""
|
516 |
|
517 |
-
#: app/models/PrliLink.php:
|
518 |
msgid "Target URL must be different than the Pretty Link"
|
519 |
msgstr ""
|
520 |
|
521 |
-
#: app/models/PrliLink.php:
|
522 |
msgid "Link URL must be a correctly formatted url"
|
523 |
msgstr ""
|
524 |
|
525 |
-
#: app/models/PrliLink.php:
|
526 |
msgid ""
|
527 |
"Pretty Link slugs must not contain question marks, ampersands or number "
|
528 |
"signs."
|
529 |
msgstr ""
|
530 |
|
531 |
-
#: app/models/PrliLink.php:
|
532 |
msgid "Pretty Link slugs must not end with a slash (\"/\")"
|
533 |
msgstr ""
|
534 |
|
535 |
-
#: app/models/PrliLink.php:
|
536 |
msgid ""
|
537 |
"This Pretty Link Slug is already taken. Check to make sure it isn't being "
|
538 |
"used by another pretty link, post, page, category or tag slug. If none of "
|
@@ -548,6 +572,74 @@ msgstr ""
|
|
548 |
msgid "ERROR"
|
549 |
msgstr ""
|
550 |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
551 |
#: app/views/admin/update/activation_warning.php:4
|
552 |
msgid "Error with PRETTYLINK_LICENSE_KEY: %s"
|
553 |
msgstr ""
|
2 |
# This file is distributed under the same license as the Pretty Link package.
|
3 |
msgid ""
|
4 |
msgstr ""
|
5 |
+
"Project-Id-Version: Pretty Link 2.0.5\n"
|
6 |
"Report-Msgid-Bugs-To: https://wordpress.org/support/plugin/pretty-link\n"
|
7 |
+
"POT-Creation-Date: 2017-02-23 04:02:01+00:00\n"
|
8 |
"MIME-Version: 1.0\n"
|
9 |
"Content-Type: text/plain; charset=UTF-8\n"
|
10 |
"Content-Transfer-Encoding: 8bit\n"
|
17 |
msgid "Pretty Link | Manage Pretty Links"
|
18 |
msgstr ""
|
19 |
|
20 |
+
#. #-#-#-#-# pretty-link.pot (Pretty Link 2.0.5) #-#-#-#-#
|
21 |
#. Plugin Name of the plugin/theme
|
22 |
#: app/controllers/PrliAppController.php:37
|
23 |
#: app/controllers/PrliAppController.php:46 app/views/links/form.php:47
|
46 |
msgid "Pretty Link | Clicks"
|
47 |
msgstr ""
|
48 |
|
49 |
+
#: app/controllers/PrliAppController.php:73 app/models/PrliClick.php:259
|
50 |
#: app/views/clicks/list.php:4 app/views/groups/list.php:69
|
51 |
#: pro/app/helpers/PlpPostsHelper.php:61 pro/app/views/links/form.php:36
|
52 |
#: pro/app/views/links/form.php:48 pro/app/views/reports/custom-report.php:31
|
98 |
msgid "Buy"
|
99 |
msgstr ""
|
100 |
|
101 |
+
#: app/controllers/PrliAppController.php:279
|
102 |
msgid ""
|
103 |
"You're almost done!<br/>%1$sFinish your Re-Install of Pretty Link Pro%2$s"
|
104 |
msgstr ""
|
105 |
|
106 |
+
#: app/controllers/PrliAppController.php:286
|
107 |
msgid "Pretty Link Pro Successfully Uninstalled."
|
108 |
msgstr ""
|
109 |
|
110 |
+
#: app/controllers/PrliAppController.php:347
|
111 |
msgid "Pretty Link Quick Add"
|
112 |
msgstr ""
|
113 |
|
114 |
+
#: app/controllers/PrliAppController.php:385
|
115 |
+
#: app/controllers/PrliAppController.php:404
|
116 |
msgid ""
|
117 |
"Your Pretty Link Pro installation isn't quite complete yet.<br/>"
|
118 |
"%1$sAutomatically Upgrade to Enable Pretty Link Pro%2$s"
|
225 |
"addresses or ranges."
|
226 |
msgstr ""
|
227 |
|
228 |
+
#: app/controllers/PrliPopupController.php:62
|
229 |
+
msgid "An unknown error occurred."
|
230 |
+
msgstr ""
|
231 |
+
|
232 |
+
#: app/controllers/PrliPopupController.php:82
|
233 |
+
msgid "Forbidden"
|
234 |
+
msgstr ""
|
235 |
+
|
236 |
+
#: app/controllers/PrliPopupController.php:86
|
237 |
+
msgid "Must specify a popup"
|
238 |
+
msgstr ""
|
239 |
+
|
240 |
+
#: app/controllers/PrliPopupController.php:92
|
241 |
+
msgid "Invalid popup"
|
242 |
+
msgstr ""
|
243 |
+
|
244 |
+
#: app/controllers/PrliPopupController.php:97
|
245 |
+
msgid "The popup was successfully delayed"
|
246 |
+
msgstr ""
|
247 |
+
|
248 |
+
#: app/controllers/PrliPopupController.php:101
|
249 |
+
msgid "The popup was successfully stopped"
|
250 |
+
msgstr ""
|
251 |
+
|
252 |
#: app/controllers/PrliToolsController.php:89
|
253 |
msgid "Click Database was Cleared."
|
254 |
msgstr ""
|
492 |
msgid "Send %s in an Email"
|
493 |
msgstr ""
|
494 |
|
495 |
+
#: app/models/PrliClick.php:237
|
496 |
msgid "group: '%s'"
|
497 |
msgstr ""
|
498 |
|
499 |
+
#: app/models/PrliClick.php:240
|
500 |
msgid "all links"
|
501 |
msgstr ""
|
502 |
|
503 |
+
#: app/models/PrliClick.php:247
|
504 |
msgid "All clicks"
|
505 |
msgstr ""
|
506 |
|
507 |
+
#: app/models/PrliClick.php:250
|
508 |
msgid "Unique hits"
|
509 |
msgstr ""
|
510 |
|
511 |
+
#: app/models/PrliClick.php:254 pro/app/helpers/PlpPostsHelper.php:66
|
512 |
msgid "Pretty Link:"
|
513 |
msgstr ""
|
514 |
|
515 |
+
#: app/models/PrliClick.php:254
|
516 |
msgid "on"
|
517 |
msgstr ""
|
518 |
|
519 |
+
#: app/models/PrliClick.php:254 pro/app/models/PlpReport.php:385
|
520 |
msgid "between"
|
521 |
msgstr ""
|
522 |
|
523 |
+
#: app/models/PrliClick.php:254 pro/app/models/PlpReport.php:244
|
524 |
#: pro/app/models/PlpReport.php:385
|
525 |
msgid "and"
|
526 |
msgstr ""
|
527 |
|
528 |
+
#: app/models/PrliClick.php:259 pro/app/views/links/form.php:35
|
529 |
#: pro/app/views/links/form.php:68
|
530 |
msgid "Date"
|
531 |
msgstr ""
|
532 |
|
533 |
+
#: app/models/PrliLink.php:550
|
534 |
msgid "Target URL can't be blank"
|
535 |
msgstr ""
|
536 |
|
537 |
+
#: app/models/PrliLink.php:554
|
538 |
msgid "Pretty Link can't be blank"
|
539 |
msgstr ""
|
540 |
|
541 |
+
#: app/models/PrliLink.php:558
|
542 |
msgid "Target URL must be different than the Pretty Link"
|
543 |
msgstr ""
|
544 |
|
545 |
+
#: app/models/PrliLink.php:562
|
546 |
msgid "Link URL must be a correctly formatted url"
|
547 |
msgstr ""
|
548 |
|
549 |
+
#: app/models/PrliLink.php:566
|
550 |
msgid ""
|
551 |
"Pretty Link slugs must not contain question marks, ampersands or number "
|
552 |
"signs."
|
553 |
msgstr ""
|
554 |
|
555 |
+
#: app/models/PrliLink.php:570
|
556 |
msgid "Pretty Link slugs must not end with a slash (\"/\")"
|
557 |
msgstr ""
|
558 |
|
559 |
+
#: app/models/PrliLink.php:575
|
560 |
msgid ""
|
561 |
"This Pretty Link Slug is already taken. Check to make sure it isn't being "
|
562 |
"used by another pretty link, post, page, category or tag slug. If none of "
|
572 |
msgid "ERROR"
|
573 |
msgstr ""
|
574 |
|
575 |
+
#: app/views/admin/popups/rating.php:6
|
576 |
+
msgid "Rate Pretty Link"
|
577 |
+
msgstr ""
|
578 |
+
|
579 |
+
#: app/views/admin/popups/rating.php:7
|
580 |
+
msgid ""
|
581 |
+
"If you enjoy using Pretty Link would you mind taking a moment to rate it on "
|
582 |
+
"WordPress.org? It won't take more than a minute."
|
583 |
+
msgstr ""
|
584 |
+
|
585 |
+
#: app/views/admin/popups/rating.php:8
|
586 |
+
msgid "Thanks for your support!"
|
587 |
+
msgstr ""
|
588 |
+
|
589 |
+
#: app/views/admin/popups/rating.php:13 app/views/admin/popups/upgrade.php:22
|
590 |
+
msgid "Remind Me Later"
|
591 |
+
msgstr ""
|
592 |
+
|
593 |
+
#: app/views/admin/popups/rating.php:14
|
594 |
+
msgid "Review Pretty Link"
|
595 |
+
msgstr ""
|
596 |
+
|
597 |
+
#: app/views/admin/popups/rating.php:16 app/views/admin/popups/upgrade.php:25
|
598 |
+
msgid "Never Remind Me Again"
|
599 |
+
msgstr ""
|
600 |
+
|
601 |
+
#: app/views/admin/popups/upgrade.php:6
|
602 |
+
msgid "Upgrade Pretty Link PRO"
|
603 |
+
msgstr ""
|
604 |
+
|
605 |
+
#: app/views/admin/popups/upgrade.php:7
|
606 |
+
msgid "Upgrading will enable you to:"
|
607 |
+
msgstr ""
|
608 |
+
|
609 |
+
#: app/views/admin/popups/upgrade.php:9
|
610 |
+
msgid "Cloak links"
|
611 |
+
msgstr ""
|
612 |
+
|
613 |
+
#: app/views/admin/popups/upgrade.php:10
|
614 |
+
msgid "Redirect based on location"
|
615 |
+
msgstr ""
|
616 |
+
|
617 |
+
#: app/views/admin/popups/upgrade.php:11
|
618 |
+
msgid "Auto-prettylink your Pages & Posts"
|
619 |
+
msgstr ""
|
620 |
+
|
621 |
+
#: app/views/admin/popups/upgrade.php:12
|
622 |
+
msgid "Auto-replace links throughout your site with Pretty Links"
|
623 |
+
msgstr ""
|
624 |
+
|
625 |
+
#: app/views/admin/popups/upgrade.php:13
|
626 |
+
msgid "And much, much more!"
|
627 |
+
msgstr ""
|
628 |
+
|
629 |
+
#: app/views/admin/popups/upgrade.php:16
|
630 |
+
msgid ""
|
631 |
+
"Plus, upgrading is fast, easy and won't disrupt any of your existing links "
|
632 |
+
"or data. And there's even a 14 day money back guarantee."
|
633 |
+
msgstr ""
|
634 |
+
|
635 |
+
#: app/views/admin/popups/upgrade.php:17
|
636 |
+
msgid "We think you'll love it!"
|
637 |
+
msgstr ""
|
638 |
+
|
639 |
+
#: app/views/admin/popups/upgrade.php:23
|
640 |
+
msgid "Upgrade to Pretty Link Pro"
|
641 |
+
msgstr ""
|
642 |
+
|
643 |
#: app/views/admin/update/activation_warning.php:4
|
644 |
msgid "Error with PRETTYLINK_LICENSE_KEY: %s"
|
645 |
msgstr ""
|
js/admin_popup.js
ADDED
@@ -0,0 +1,73 @@
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
1 |
+
jQuery(document).ready(function($) {
|
2 |
+
$('.prli-popup.prli-auto-open').each( function() {
|
3 |
+
var _this = this;
|
4 |
+
|
5 |
+
$.magnificPopup.open({
|
6 |
+
items: {
|
7 |
+
src: _this,
|
8 |
+
type: 'inline'
|
9 |
+
},
|
10 |
+
closeOnBgClick: false,
|
11 |
+
closeBtnInside: false
|
12 |
+
});
|
13 |
+
});
|
14 |
+
|
15 |
+
var prli_stop_popup = function(popup, cb) {
|
16 |
+
var args = {
|
17 |
+
action: 'prli_stop_popup',
|
18 |
+
security: PrliPopup.security,
|
19 |
+
popup: popup,
|
20 |
+
};
|
21 |
+
|
22 |
+
$.post(ajaxurl, args, cb, 'json')
|
23 |
+
.fail(function(response) {
|
24 |
+
alert(PrliPopup.error);
|
25 |
+
$.magnificPopup.close();
|
26 |
+
});
|
27 |
+
};
|
28 |
+
|
29 |
+
$('.prli-stop-popup').on('click', function(e) {
|
30 |
+
e.preventDefault();
|
31 |
+
|
32 |
+
var _this = this;
|
33 |
+
var popup = $(this).data('popup');
|
34 |
+
|
35 |
+
prli_stop_popup(popup, function(response) {
|
36 |
+
$(_this).trigger('prli-popup-stopped',[popup]);
|
37 |
+
$.magnificPopup.close();
|
38 |
+
if(typeof $(_this).data('href') !== 'undefined') {
|
39 |
+
window.location.href = $(_this).data('href');
|
40 |
+
}
|
41 |
+
});
|
42 |
+
});
|
43 |
+
|
44 |
+
var prli_delay_popup = function(popup, cb) {
|
45 |
+
var args = {
|
46 |
+
action: 'prli_delay_popup',
|
47 |
+
security: PrliPopup.security,
|
48 |
+
popup: popup
|
49 |
+
};
|
50 |
+
|
51 |
+
$.post(ajaxurl, args, cb, 'json')
|
52 |
+
.fail(function(response) {
|
53 |
+
alert(PrliPopup.error);
|
54 |
+
$.magnificPopup.close();
|
55 |
+
});
|
56 |
+
};
|
57 |
+
|
58 |
+
$('.prli-delay-popup').on('click', function(e) {
|
59 |
+
e.preventDefault();
|
60 |
+
|
61 |
+
var _this = this;
|
62 |
+
var popup = $(this).data('popup');
|
63 |
+
|
64 |
+
prli_delay_popup(popup, function(response) {
|
65 |
+
$(_this).trigger('prli-popup-delayed',[popup]);
|
66 |
+
$.magnificPopup.close();
|
67 |
+
if(typeof $(_this).data('href') !== 'undefined') {
|
68 |
+
window.location.href = $(_this).data('href');
|
69 |
+
}
|
70 |
+
});
|
71 |
+
});
|
72 |
+
});
|
73 |
+
|
pretty-link.php
CHANGED
@@ -3,7 +3,7 @@
|
|
3 |
Plugin Name: Pretty Link
|
4 |
Plugin URI: http://prettylinkpro.com
|
5 |
Description: Shrink, track and share any URL on the Internet from your WordPress website!
|
6 |
-
Version: 2.0.
|
7 |
Author: Blair Williams
|
8 |
Author URI: http://blairwilliams.com
|
9 |
Text Domain: pretty-link
|
3 |
Plugin Name: Pretty Link
|
4 |
Plugin URI: http://prettylinkpro.com
|
5 |
Description: Shrink, track and share any URL on the Internet from your WordPress website!
|
6 |
+
Version: 2.0.5
|
7 |
Author: Blair Williams
|
8 |
Author URI: http://blairwilliams.com
|
9 |
Text Domain: pretty-link
|
readme.txt
CHANGED
@@ -66,6 +66,9 @@ http://blairwilliams.com/w7a
|
|
66 |
|
67 |
== Changelog ==
|
68 |
|
|
|
|
|
|
|
69 |
= 2.0.4 =
|
70 |
* Fix URI params not sticking
|
71 |
* PRO Fix apostrophe in keywords
|
@@ -154,6 +157,9 @@ http://blairwilliams.com/w7a
|
|
154 |
|
155 |
== Upgrade Notice ==
|
156 |
|
|
|
|
|
|
|
157 |
= 2.0.3 =
|
158 |
* Important performance fix ... every user should upgrade.
|
159 |
|
66 |
|
67 |
== Changelog ==
|
68 |
|
69 |
+
= 2.0.5 =
|
70 |
+
* Fixed numerous bugs
|
71 |
+
|
72 |
= 2.0.4 =
|
73 |
* Fix URI params not sticking
|
74 |
* PRO Fix apostrophe in keywords
|
157 |
|
158 |
== Upgrade Notice ==
|
159 |
|
160 |
+
= 2.0.5 =
|
161 |
+
* Important bug fixes, every user should upgrade.
|
162 |
+
|
163 |
= 2.0.3 =
|
164 |
* Important performance fix ... every user should upgrade.
|
165 |
|