Version Description
- NEW FEATURE: is now possible delete overall rating data in Yet Another Stars Rating -> Stats -> Overall Rating
- FIXED: Schema title come with rating string if "Enable stars next to the title?" is enabled
- TWEAKED: all rankings functions has been rewritten to work with REST API. Documentation will come soon.
- TWEAKED: a lot of minor changes.
Download this release
Release Info
Developer | Dudo |
Plugin | Yasr – Yet Another Stars Rating |
Version | 2.5.2 |
Comparing to | |
See all releases |
Code changes from version 2.5.1 to 2.5.2
- admin/settings/classes/YasrStats.php +308 -0
- admin/settings/yasr-stats-page.php +37 -11
- freemius/assets/css/admin/account.css +1 -1
- freemius/config.php +4 -1
- freemius/includes/class-freemius.php +108 -6
- freemius/includes/class-fs-plugin-updater.php +49 -6
- freemius/includes/fs-plugin-info-dialog.php +15 -9
- freemius/includes/i18n.php +2 -0
- freemius/includes/sdk/FreemiusWordPress.php +5 -1
- freemius/languages/freemius-cs_CZ.mo +0 -0
- freemius/languages/freemius-da_DK.mo +0 -0
- freemius/languages/freemius-en.mo +0 -0
- freemius/languages/freemius-es_ES.mo +0 -0
- freemius/languages/freemius-fr_FR.mo +0 -0
- freemius/languages/freemius-he_IL.mo +0 -0
- freemius/languages/freemius-hu_HU.mo +0 -0
- freemius/languages/freemius-it_IT.mo +0 -0
- freemius/languages/freemius-ja.mo +0 -0
- freemius/languages/freemius-nl_NL.mo +0 -0
- freemius/languages/freemius-ru_RU.mo +0 -0
- freemius/languages/freemius-ta.mo +0 -0
- freemius/languages/freemius-zh_CN.mo +0 -0
- freemius/languages/freemius.pot +304 -272
- freemius/start.php +1 -1
- freemius/templates/account.php +23 -0
- freemius/templates/forms/affiliation.php +2 -0
- includes/classes/YasrDatabaseRatings.php +39 -0
- includes/classes/YasrMultiSetData.php +18 -3
- includes/classes/YasrRankingData.php +124 -0
- includes/rest/classes/YasrCustomEndpoint.php +182 -36
- includes/rest/classes/YasrCustomFields.php +1 -1
- includes/shortcodes/classes/YasrOverallRating.php +1 -1
- includes/shortcodes/classes/YasrRankings.php +72 -91
- includes/shortcodes/classes/YasrVisitorMultiSet.php +1 -0
- includes/shortcodes/classes/YasrVisitorVotes.php +58 -55
- includes/shortcodes/yasr-shortcode-ajax.php +4 -0
- includes/yasr-includes-functions.php +1 -1
- includes/yasr-includes-init.php +3 -3
- public/classes/YasrPublicFilters.php +93 -62
- public/yasr-public-init.php +3 -2
- readme.txt +7 -1
- yet-another-stars-rating.php +2 -2
admin/settings/classes/YasrStats.php
ADDED
@@ -0,0 +1,308 @@
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
1 |
+
<?php
|
2 |
+
|
3 |
+
/*
|
4 |
+
|
5 |
+
Copyright 2014 Dario Curvino (email : d.curvino@tiscali.it)
|
6 |
+
|
7 |
+
This program is free software: you can redistribute it and/or modify
|
8 |
+
it under the terms of the GNU General Public License as published by
|
9 |
+
the Free Software Foundation, either version 2 of the License, or
|
10 |
+
(at your option) any later version.
|
11 |
+
|
12 |
+
This program is distributed in the hope that it will be useful,
|
13 |
+
but WITHOUT ANY WARRANTY; without even the implied warranty of
|
14 |
+
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
|
15 |
+
GNU General Public License for more details.
|
16 |
+
|
17 |
+
You should have received a copy of the GNU General Public License
|
18 |
+
along with this program. If not, see <http://www.gnu.org/licenses/>
|
19 |
+
*/
|
20 |
+
|
21 |
+
if ( ! defined( 'ABSPATH' ) ) {
|
22 |
+
exit( 'You\'re not allowed to see this page' );
|
23 |
+
} // Exit if accessed directly
|
24 |
+
|
25 |
+
/**
|
26 |
+
* Create a new table class that will extend the WP_List_Table
|
27 |
+
*/
|
28 |
+
class YasrStats extends YASR_WP_List_Table {
|
29 |
+
|
30 |
+
private $active_tab;
|
31 |
+
|
32 |
+
function __construct($active_tab) {
|
33 |
+
parent::__construct();
|
34 |
+
$this->active_tab = $active_tab;
|
35 |
+
}
|
36 |
+
/**
|
37 |
+
* Prepare the items for the table to process
|
38 |
+
*
|
39 |
+
* @return Void
|
40 |
+
*/
|
41 |
+
public function prepare_items() {
|
42 |
+
$columns = $this->get_columns();
|
43 |
+
$hidden = $this->get_hidden_columns();
|
44 |
+
$sortable = $this->get_sortable_columns();
|
45 |
+
|
46 |
+
//print bulk_Actions
|
47 |
+
$this->get_bulk_actions();
|
48 |
+
$this->process_bulk_action();
|
49 |
+
|
50 |
+
if ($this->active_tab === 'logs' || $this->active_tab === '') {
|
51 |
+
$data = YasrDatabaseRatings::getAllVisitorVotes();
|
52 |
+
}
|
53 |
+
else if($this->active_tab === 'logs_multi') {
|
54 |
+
$data = YasrMultiSetData::returnAllLogMulti();
|
55 |
+
}
|
56 |
+
else if($this->active_tab === 'overall') {
|
57 |
+
$data = YasrDatabaseRatings::getAllOverallRatings();
|
58 |
+
}
|
59 |
+
|
60 |
+
usort($data, array( $this, 'sort_data' ));
|
61 |
+
|
62 |
+
$perPage = 25;
|
63 |
+
$currentPage = $this->get_pagenum();
|
64 |
+
$totalItems = count($data);
|
65 |
+
|
66 |
+
$this->set_pagination_args(
|
67 |
+
array(
|
68 |
+
'total_items' => $totalItems,
|
69 |
+
'per_page' => $perPage
|
70 |
+
)
|
71 |
+
);
|
72 |
+
|
73 |
+
$data = array_slice($data, (( $currentPage - 1 ) * $perPage ), $perPage);
|
74 |
+
|
75 |
+
$this->_column_headers = array( $columns, $hidden, $sortable );
|
76 |
+
$this->items = $data;
|
77 |
+
|
78 |
+
}
|
79 |
+
|
80 |
+
/**
|
81 |
+
* Override the parent columns method. Defines the columns to use in your listing table
|
82 |
+
*
|
83 |
+
* @return Array
|
84 |
+
*/
|
85 |
+
public function get_columns() {
|
86 |
+
|
87 |
+
$columns = array(
|
88 |
+
'cb' => '<input type="checkbox" />',
|
89 |
+
'id' => 'ID',
|
90 |
+
'post_id' => 'Title',
|
91 |
+
'vote' => 'Vote',
|
92 |
+
'user_id' => 'User ID',
|
93 |
+
'date' => 'Date'
|
94 |
+
);
|
95 |
+
|
96 |
+
if($this->active_tab === 'logs_multi') {
|
97 |
+
//insert multiset and field name
|
98 |
+
$columns = array_slice($columns, 0, 3, true) +
|
99 |
+
array('set_type' => 'MultiSet', 'field_id' => 'Field Name') +
|
100 |
+
array_slice($columns, 3, count($columns) - 1, true) ;
|
101 |
+
}
|
102 |
+
|
103 |
+
if (YASR_ENABLE_IP === 'yes') {
|
104 |
+
$columns['ip'] = 'IP';
|
105 |
+
}
|
106 |
+
return $columns;
|
107 |
+
}
|
108 |
+
|
109 |
+
/**
|
110 |
+
* Define which columns are hidden
|
111 |
+
*
|
112 |
+
* @return Array
|
113 |
+
*/
|
114 |
+
public function get_hidden_columns() {
|
115 |
+
return array('id');
|
116 |
+
}
|
117 |
+
|
118 |
+
/**
|
119 |
+
* Define the sortable columns
|
120 |
+
*
|
121 |
+
* @return Array
|
122 |
+
*/
|
123 |
+
public function get_sortable_columns() {
|
124 |
+
|
125 |
+
$sortable_columns = array(
|
126 |
+
'post_id' => array('post_id', false),
|
127 |
+
'user_id' => array('user_id', false),
|
128 |
+
'vote' => array('vote', false),
|
129 |
+
'date' => array('date', false),
|
130 |
+
'ip' => array('ip', false)
|
131 |
+
);
|
132 |
+
|
133 |
+
if($this->active_tab === 'logs_multi') {
|
134 |
+
$sortable_columns['set_type'] = array('set_type', false);
|
135 |
+
$sortable_columns['field_id'] = array('field_id', false);
|
136 |
+
}
|
137 |
+
|
138 |
+
return $sortable_columns;
|
139 |
+
}
|
140 |
+
|
141 |
+
/**
|
142 |
+
* Define what data to show on each column of the table
|
143 |
+
*
|
144 |
+
* @param Array $item Data
|
145 |
+
* @param String $column_name - Current column name
|
146 |
+
*
|
147 |
+
* @return Mixed|void
|
148 |
+
*/
|
149 |
+
protected function column_default( $item, $column_name ) {
|
150 |
+
|
151 |
+
global $wpdb;
|
152 |
+
|
153 |
+
if (isset($item['set_type'])) {
|
154 |
+
$set_id = (int)$item['set_type'];
|
155 |
+
}
|
156 |
+
|
157 |
+
switch ($column_name) {
|
158 |
+
case 'post_id':
|
159 |
+
$post_id = $item[$column_name];
|
160 |
+
|
161 |
+
$title_post = wp_strip_all_tags(get_the_title($post_id));
|
162 |
+
$link = get_permalink($post_id);
|
163 |
+
|
164 |
+
return '<a href="' . $link . '">' . $title_post . '</a>';
|
165 |
+
|
166 |
+
case 'user_id':
|
167 |
+
$user_id = $item[$column_name];
|
168 |
+
|
169 |
+
$user = get_user_by('id', $user_id);
|
170 |
+
|
171 |
+
//If !user means that the vote are anonymous
|
172 |
+
if ($user === false) {
|
173 |
+
$user = (object) array( 'user_login' );
|
174 |
+
$user->user_login = __('anonymous', 'yet-another-stars-rating');
|
175 |
+
}
|
176 |
+
|
177 |
+
return $user->user_login;
|
178 |
+
|
179 |
+
case 'set_type':
|
180 |
+
$data = $wpdb->get_results(
|
181 |
+
$wpdb->prepare(
|
182 |
+
"SELECT set_name
|
183 |
+
FROM " . YASR_MULTI_SET_NAME_TABLE . "
|
184 |
+
WHERE set_id = %d", $set_id),
|
185 |
+
ARRAY_A);
|
186 |
+
|
187 |
+
if(!empty($data)) {
|
188 |
+
return $data[0]['set_name'];
|
189 |
+
}
|
190 |
+
|
191 |
+
return __('Multi Set doesn\'t exists', 'yet-another-stars-rating');
|
192 |
+
|
193 |
+
case 'field_id':
|
194 |
+
$field_id = $item[$column_name];
|
195 |
+
$data = $wpdb->get_results(
|
196 |
+
$wpdb->prepare(
|
197 |
+
"SELECT field_name
|
198 |
+
FROM " . YASR_MULTI_SET_FIELDS_TABLE . "
|
199 |
+
WHERE parent_set_id = %d
|
200 |
+
AND field_id = %d",
|
201 |
+
$set_id, $field_id),
|
202 |
+
ARRAY_A);
|
203 |
+
|
204 |
+
if(!empty($data)) {
|
205 |
+
return $data[0]['field_name'];
|
206 |
+
}
|
207 |
+
|
208 |
+
return __('Field doesn\'t exists', 'yet-another-stars-rating');
|
209 |
+
|
210 |
+
case 'date':
|
211 |
+
$date = $item[$column_name];
|
212 |
+
if($item[$column_name] === '0000-00-00 00:00:00') {
|
213 |
+
$date = __('Imported Data', 'yet-another-stars-rating');
|
214 |
+
}
|
215 |
+
return $date;
|
216 |
+
|
217 |
+
//All other columns must return their content
|
218 |
+
case 'vote':
|
219 |
+
case 'ip':
|
220 |
+
return $item[$column_name];
|
221 |
+
}
|
222 |
+
return;
|
223 |
+
}
|
224 |
+
|
225 |
+
/**
|
226 |
+
* Allows you to sort the data by the variables set in the $_GET
|
227 |
+
*
|
228 |
+
* @return Mixed
|
229 |
+
*/
|
230 |
+
protected function sort_data( $a, $b ) {
|
231 |
+
|
232 |
+
// Set defaults (just need to avoid undefined variable at first load,
|
233 |
+
// it is already ordered with the query
|
234 |
+
$orderby = 'date';
|
235 |
+
$order = 'desc';
|
236 |
+
|
237 |
+
// If orderby is set, use this as the sort column
|
238 |
+
if (!empty($_GET['orderby'])) {
|
239 |
+
$orderby = $_GET['orderby'];
|
240 |
+
}
|
241 |
+
|
242 |
+
// If order is set use this as the order
|
243 |
+
if (!empty($_GET['order'])) {
|
244 |
+
$order = $_GET['order'];
|
245 |
+
}
|
246 |
+
|
247 |
+
$result = strcmp($a[ $orderby ], $b[ $orderby ]);
|
248 |
+
|
249 |
+
if ($order === 'asc') {
|
250 |
+
return $result;
|
251 |
+
}
|
252 |
+
|
253 |
+
return - $result;
|
254 |
+
}
|
255 |
+
|
256 |
+
|
257 |
+
protected function get_bulk_actions() {
|
258 |
+
$actions = array(
|
259 |
+
'delete' => 'Delete'
|
260 |
+
);
|
261 |
+
return $actions;
|
262 |
+
}
|
263 |
+
|
264 |
+
protected function column_cb($item) {
|
265 |
+
|
266 |
+
return sprintf(
|
267 |
+
"<input type='checkbox' name='yasr_logs_votes_to_delete[]' id='{$item['id']}' value='{$item['id']}' />"
|
268 |
+
);
|
269 |
+
}
|
270 |
+
|
271 |
+
//process bulk action
|
272 |
+
protected function process_bulk_action() {
|
273 |
+
if ($this->current_action() === 'delete') {
|
274 |
+
check_admin_referer( 'yasr-delete-stats-logs', 'yasr-nonce-delete-stats-logs' );
|
275 |
+
|
276 |
+
global $wpdb;
|
277 |
+
|
278 |
+
$table = YASR_LOG_TABLE;
|
279 |
+
|
280 |
+
if($this->active_tab === 'logs_multi') {
|
281 |
+
$table = YASR_LOG_MULTI_SET;
|
282 |
+
}
|
283 |
+
|
284 |
+
foreach ($_POST['yasr_logs_votes_to_delete'] as $log_id) {
|
285 |
+
//force to be an int
|
286 |
+
$log_id = (int)$log_id;
|
287 |
+
|
288 |
+
//If user is deleting an overall rating value, use delete_meta and return
|
289 |
+
if($this->active_tab === 'overall') {
|
290 |
+
delete_meta($log_id);
|
291 |
+
return;
|
292 |
+
}
|
293 |
+
|
294 |
+
//delete the log id
|
295 |
+
$wpdb->delete(
|
296 |
+
$table,
|
297 |
+
array(
|
298 |
+
'id' => $log_id
|
299 |
+
),
|
300 |
+
array( '%d' )
|
301 |
+
);
|
302 |
+
|
303 |
+
}
|
304 |
+
}
|
305 |
+
|
306 |
+
}
|
307 |
+
|
308 |
+
}
|
admin/settings/yasr-stats-page.php
CHANGED
@@ -42,14 +42,6 @@ if (!current_user_can('manage_options')) {
|
|
42 |
|
43 |
<h2 class="nav-tab-wrapper yasr-no-underline">
|
44 |
|
45 |
-
<?php /*
|
46 |
-
<a href="?page=yasr_stats_page&tab=logs_overall" class="nav-tab
|
47 |
-
<?php echo ($active_tab === 'logs_overall') ? 'nav-tab-active' : ''; ?>"
|
48 |
-
>
|
49 |
-
<?php _e("Overall Rating", 'yet-another-stars-rating'); ?>
|
50 |
-
</a>
|
51 |
-
*/ ?>
|
52 |
-
|
53 |
<a href="?page=yasr_stats_page&tab=logs" class="nav-tab
|
54 |
<?php echo ($active_tab === 'logs') ? 'nav-tab-active' : ''; ?>"
|
55 |
>
|
@@ -62,7 +54,16 @@ if (!current_user_can('manage_options')) {
|
|
62 |
<?php _e("MultiSet", 'yet-another-stars-rating'); ?>
|
63 |
</a>
|
64 |
|
65 |
-
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
66 |
|
67 |
<a href="?page=yasr_settings_page-pricing" class="nav-tab">
|
68 |
<?php _e("Upgrade", 'yet-another-stars-rating'); ?>
|
@@ -79,7 +80,7 @@ if (!current_user_can('manage_options')) {
|
|
79 |
<form action="#" id="" method="POST">
|
80 |
<?php
|
81 |
wp_nonce_field('yasr-delete-stats-logs', 'yasr-nonce-delete-stats-logs');
|
82 |
-
$yasr_stats_log_table = new
|
83 |
$yasr_stats_log_table->prepare_items();
|
84 |
$yasr_stats_log_table->display();
|
85 |
?>
|
@@ -104,7 +105,7 @@ if (!current_user_can('manage_options')) {
|
|
104 |
<form action="#" id="" method="POST">
|
105 |
<?php
|
106 |
wp_nonce_field('yasr-delete-stats-logs', 'yasr-nonce-delete-stats-logs');
|
107 |
-
$yasr_stats_log_table = new
|
108 |
$yasr_stats_log_table->prepare_items();
|
109 |
$yasr_stats_log_table->display();
|
110 |
?>
|
@@ -122,6 +123,31 @@ if (!current_user_can('manage_options')) {
|
|
122 |
|
123 |
} //End if tab 'general_settings'
|
124 |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
125 |
do_action('yasr_settings_check_active_tab', $active_tab);
|
126 |
yasr_right_settings_panel('bottom');
|
127 |
?>
|
42 |
|
43 |
<h2 class="nav-tab-wrapper yasr-no-underline">
|
44 |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
45 |
<a href="?page=yasr_stats_page&tab=logs" class="nav-tab
|
46 |
<?php echo ($active_tab === 'logs') ? 'nav-tab-active' : ''; ?>"
|
47 |
>
|
54 |
<?php _e("MultiSet", 'yet-another-stars-rating'); ?>
|
55 |
</a>
|
56 |
|
57 |
+
<a href="?page=yasr_stats_page&tab=overall" class="nav-tab
|
58 |
+
<?php echo ($active_tab === 'overall') ? 'nav-tab-active' : ''; ?>"
|
59 |
+
>
|
60 |
+
<?php _e("Overall Rating", 'yet-another-stars-rating'); ?>
|
61 |
+
</a>
|
62 |
+
|
63 |
+
<?php
|
64 |
+
//Use this hooks to add tabs in the stats page
|
65 |
+
do_action('yasr_add_stats_tab', $active_tab);
|
66 |
+
?>
|
67 |
|
68 |
<a href="?page=yasr_settings_page-pricing" class="nav-tab">
|
69 |
<?php _e("Upgrade", 'yet-another-stars-rating'); ?>
|
80 |
<form action="#" id="" method="POST">
|
81 |
<?php
|
82 |
wp_nonce_field('yasr-delete-stats-logs', 'yasr-nonce-delete-stats-logs');
|
83 |
+
$yasr_stats_log_table = new YasrStats($active_tab);
|
84 |
$yasr_stats_log_table->prepare_items();
|
85 |
$yasr_stats_log_table->display();
|
86 |
?>
|
105 |
<form action="#" id="" method="POST">
|
106 |
<?php
|
107 |
wp_nonce_field('yasr-delete-stats-logs', 'yasr-nonce-delete-stats-logs');
|
108 |
+
$yasr_stats_log_table = new YasrStats($active_tab);
|
109 |
$yasr_stats_log_table->prepare_items();
|
110 |
$yasr_stats_log_table->display();
|
111 |
?>
|
123 |
|
124 |
} //End if tab 'general_settings'
|
125 |
|
126 |
+
if ($active_tab === 'overall') {
|
127 |
+
?>
|
128 |
+
|
129 |
+
<div class="yasr-settingsdiv">
|
130 |
+
<form action="#" id="" method="POST">
|
131 |
+
<?php
|
132 |
+
wp_nonce_field('yasr-delete-stats-logs', 'yasr-nonce-delete-stats-logs');
|
133 |
+
$yasr_stats_log_table = new YasrStats($active_tab);
|
134 |
+
$yasr_stats_log_table->prepare_items();
|
135 |
+
$yasr_stats_log_table->display();
|
136 |
+
?>
|
137 |
+
</form>
|
138 |
+
</div>
|
139 |
+
|
140 |
+
<?php
|
141 |
+
yasr_right_settings_panel();
|
142 |
+
?>
|
143 |
+
|
144 |
+
<div class="yasr-space-settings-div">
|
145 |
+
</div>
|
146 |
+
|
147 |
+
<?php
|
148 |
+
|
149 |
+
} //End if tab 'overall'
|
150 |
+
|
151 |
do_action('yasr_settings_check_active_tab', $active_tab);
|
152 |
yasr_right_settings_panel('bottom');
|
153 |
?>
|
freemius/assets/css/admin/account.css
CHANGED
@@ -1 +1 @@
|
|
1 |
-
label.fs-tag,span.fs-tag{background:#ffba00;color:#fff;display:inline-block;border-radius:3px;padding:5px;font-size:11px;line-height:11px;vertical-align:baseline}label.fs-tag.fs-warn,span.fs-tag.fs-warn{background:#ffba00}label.fs-tag.fs-info,span.fs-tag.fs-info{background:#00a0d2}label.fs-tag.fs-success,span.fs-tag.fs-success{background:#46b450}label.fs-tag.fs-error,span.fs-tag.fs-error{background:#dc3232}#fs_account .postbox,#fs_account .widefat{max-width:800px}#fs_account h3{font-size:1.3em;padding:12px 15px;margin:0 0 12px 0;line-height:1.4;border-bottom:1px solid #F1F1F1}#fs_account h3 .dashicons{width:26px;height:26px;font-size:1.3em}#fs_account i.dashicons{font-size:1.2em;height:1.2em;width:1.2em}#fs_account .dashicons{vertical-align:middle}#fs_account .fs-header-actions{position:absolute;top:17px;right:15px;font-size:0.9em}#fs_account .fs-header-actions ul{margin:0}#fs_account .fs-header-actions li{float:left}#fs_account .fs-header-actions li form{display:inline-block}#fs_account .fs-header-actions li a{text-decoration:none}#fs_account_details .button-group{float:right}.rtl #fs_account .fs-header-actions{left:15px;right:auto}.fs-key-value-table{width:100%}.fs-key-value-table form{display:inline-block}.fs-key-value-table tr td:first-child{text-align:right}.fs-key-value-table tr td:first-child nobr{font-weight:bold}.fs-key-value-table tr td:first-child form{display:block}.fs-key-value-table tr td.fs-right{text-align:right}.fs-key-value-table tr.fs-odd{background:#ebebeb}.fs-key-value-table td,.fs-key-value-table th{padding:10px}.fs-key-value-table code{line-height:28px}.fs-key-value-table var,.fs-key-value-table code,.fs-key-value-table input[type="text"]{color:#0073AA;font-size:16px;background:none}.fs-key-value-table input[type="text"]{width:100%;font-weight:bold}.fs-field-beta_program label{margin-left:7px}label.fs-tag{background:#ffba00;color:#fff;display:inline-block;border-radius:3px;padding:5px;font-size:11px;line-height:11px;vertical-align:baseline}label.fs-tag.fs-warn{background:#ffba00}label.fs-tag.fs-success{background:#46b450}label.fs-tag.fs-error{background:#dc3232}#fs_sites .fs-scrollable-table .fs-table-body{max-height:200px;overflow:auto;border:1px solid #e5e5e5}#fs_sites .fs-scrollable-table .fs-table-body>table.widefat{border:none !important}#fs_sites .fs-scrollable-table .fs-main-column{width:100%}#fs_sites .fs-scrollable-table .fs-site-details td:first-of-type{text-align:right;color:grey;width:1px}#fs_sites .fs-scrollable-table .fs-site-details td:last-of-type{text-align:right}#fs_sites .fs-scrollable-table .fs-install-details table tr td{width:1px;white-space:nowrap}#fs_sites .fs-scrollable-table .fs-install-details table tr td:last-of-type{width:auto}#fs_addons h3{border:none;margin-bottom:0;padding:4px 5px}#fs_addons td{vertical-align:middle}#fs_addons thead{white-space:nowrap}#fs_addons td:first-child,#fs_addons th:first-child{text-align:left;font-weight:bold}#fs_addons td:last-child,#fs_addons th:last-child{text-align:right}#fs_addons th{font-weight:bold}#fs_billing_address{width:100%}#fs_billing_address tr td{width:50%;padding:5px}#fs_billing_address tr:first-of-type td{padding-top:0}#fs_billing_address span{font-weight:bold}#fs_billing_address input,#fs_billing_address select{display:block;width:100%;margin-top:5px}#fs_billing_address input::-moz-placeholder,#fs_billing_address select::-moz-placeholder{color:transparent;opacity:1}#fs_billing_address input:-ms-input-placeholder,#fs_billing_address select:-ms-input-placeholder{color:transparent}#fs_billing_address input::-webkit-input-placeholder,#fs_billing_address select::-webkit-input-placeholder{color:transparent}#fs_billing_address input.fs-read-mode,#fs_billing_address select.fs-read-mode{border-color:transparent;color:#777;border-bottom:1px dashed #ccc;padding-left:0;background:none}#fs_billing_address.fs-read-mode td span{display:none}#fs_billing_address.fs-read-mode input,#fs_billing_address.fs-read-mode select{border-color:transparent;color:#777;border-bottom:1px dashed #ccc;padding-left:0;background:none}#fs_billing_address.fs-read-mode input::-moz-placeholder,#fs_billing_address.fs-read-mode select::-moz-placeholder{color:#ccc;opacity:1}#fs_billing_address.fs-read-mode input:-ms-input-placeholder,#fs_billing_address.fs-read-mode select:-ms-input-placeholder{color:#ccc}#fs_billing_address.fs-read-mode input::-webkit-input-placeholder,#fs_billing_address.fs-read-mode select::-webkit-input-placeholder{color:#ccc}#fs_billing_address button{display:block;width:100%}
|
1 |
+
label.fs-tag,span.fs-tag{background:#ffba00;color:#fff;display:inline-block;border-radius:3px;padding:5px;font-size:11px;line-height:11px;vertical-align:baseline}label.fs-tag.fs-warn,span.fs-tag.fs-warn{background:#ffba00}label.fs-tag.fs-info,span.fs-tag.fs-info{background:#00a0d2}label.fs-tag.fs-success,span.fs-tag.fs-success{background:#46b450}label.fs-tag.fs-error,span.fs-tag.fs-error{background:#dc3232}.fs-notice[data-id="license_not_whitelabeled"].success,.fs-notice[data-id="license_whitelabeled"].success{color:inherit;border-left-color:#00a0d2}.fs-notice[data-id="license_not_whitelabeled"].success label.fs-plugin-title,.fs-notice[data-id="license_whitelabeled"].success label.fs-plugin-title{display:none}#fs_account .postbox,#fs_account .widefat{max-width:800px}#fs_account h3{font-size:1.3em;padding:12px 15px;margin:0 0 12px 0;line-height:1.4;border-bottom:1px solid #F1F1F1}#fs_account h3 .dashicons{width:26px;height:26px;font-size:1.3em}#fs_account i.dashicons{font-size:1.2em;height:1.2em;width:1.2em}#fs_account .dashicons{vertical-align:middle}#fs_account .fs-header-actions{position:absolute;top:17px;right:15px;font-size:0.9em}#fs_account .fs-header-actions ul{margin:0}#fs_account .fs-header-actions li{float:left}#fs_account .fs-header-actions li form{display:inline-block}#fs_account .fs-header-actions li a{text-decoration:none}#fs_account_details .button-group{float:right}.rtl #fs_account .fs-header-actions{left:15px;right:auto}.fs-key-value-table{width:100%}.fs-key-value-table form{display:inline-block}.fs-key-value-table tr td:first-child{text-align:right}.fs-key-value-table tr td:first-child nobr{font-weight:bold}.fs-key-value-table tr td:first-child form{display:block}.fs-key-value-table tr td.fs-right{text-align:right}.fs-key-value-table tr.fs-odd{background:#ebebeb}.fs-key-value-table td,.fs-key-value-table th{padding:10px}.fs-key-value-table code{line-height:28px}.fs-key-value-table var,.fs-key-value-table code,.fs-key-value-table input[type="text"]{color:#0073AA;font-size:16px;background:none}.fs-key-value-table input[type="text"]{width:100%;font-weight:bold}.fs-field-beta_program label{margin-left:7px}label.fs-tag{background:#ffba00;color:#fff;display:inline-block;border-radius:3px;padding:5px;font-size:11px;line-height:11px;vertical-align:baseline}label.fs-tag.fs-warn{background:#ffba00}label.fs-tag.fs-success{background:#46b450}label.fs-tag.fs-error{background:#dc3232}#fs_sites .fs-scrollable-table .fs-table-body{max-height:200px;overflow:auto;border:1px solid #e5e5e5}#fs_sites .fs-scrollable-table .fs-table-body>table.widefat{border:none !important}#fs_sites .fs-scrollable-table .fs-main-column{width:100%}#fs_sites .fs-scrollable-table .fs-site-details td:first-of-type{text-align:right;color:grey;width:1px}#fs_sites .fs-scrollable-table .fs-site-details td:last-of-type{text-align:right}#fs_sites .fs-scrollable-table .fs-install-details table tr td{width:1px;white-space:nowrap}#fs_sites .fs-scrollable-table .fs-install-details table tr td:last-of-type{width:auto}#fs_addons h3{border:none;margin-bottom:0;padding:4px 5px}#fs_addons td{vertical-align:middle}#fs_addons thead{white-space:nowrap}#fs_addons td:first-child,#fs_addons th:first-child{text-align:left;font-weight:bold}#fs_addons td:last-child,#fs_addons th:last-child{text-align:right}#fs_addons th{font-weight:bold}#fs_billing_address{width:100%}#fs_billing_address tr td{width:50%;padding:5px}#fs_billing_address tr:first-of-type td{padding-top:0}#fs_billing_address span{font-weight:bold}#fs_billing_address input,#fs_billing_address select{display:block;width:100%;margin-top:5px}#fs_billing_address input::-moz-placeholder,#fs_billing_address select::-moz-placeholder{color:transparent;opacity:1}#fs_billing_address input:-ms-input-placeholder,#fs_billing_address select:-ms-input-placeholder{color:transparent}#fs_billing_address input::-webkit-input-placeholder,#fs_billing_address select::-webkit-input-placeholder{color:transparent}#fs_billing_address input.fs-read-mode,#fs_billing_address select.fs-read-mode{border-color:transparent;color:#777;border-bottom:1px dashed #ccc;padding-left:0;background:none}#fs_billing_address.fs-read-mode td span{display:none}#fs_billing_address.fs-read-mode input,#fs_billing_address.fs-read-mode select{border-color:transparent;color:#777;border-bottom:1px dashed #ccc;padding-left:0;background:none}#fs_billing_address.fs-read-mode input::-moz-placeholder,#fs_billing_address.fs-read-mode select::-moz-placeholder{color:#ccc;opacity:1}#fs_billing_address.fs-read-mode input:-ms-input-placeholder,#fs_billing_address.fs-read-mode select:-ms-input-placeholder{color:#ccc}#fs_billing_address.fs-read-mode input::-webkit-input-placeholder,#fs_billing_address.fs-read-mode select::-webkit-input-placeholder{color:#ccc}#fs_billing_address button{display:block;width:100%}
|
freemius/config.php
CHANGED
@@ -385,4 +385,7 @@
|
|
385 |
|
386 |
if ( ! defined( 'WP_FS__DEMO_MODE' ) ) {
|
387 |
define( 'WP_FS__DEMO_MODE', false );
|
388 |
-
}
|
|
|
|
|
|
385 |
|
386 |
if ( ! defined( 'WP_FS__DEMO_MODE' ) ) {
|
387 |
define( 'WP_FS__DEMO_MODE', false );
|
388 |
+
}
|
389 |
+
if ( ! defined( 'FS_SDK__SSLVERIFY' ) ) {
|
390 |
+
define( 'FS_SDK__SSLVERIFY', false );
|
391 |
+
}
|
freemius/includes/class-freemius.php
CHANGED
@@ -1645,6 +1645,7 @@
|
|
1645 |
add_action( 'deactivate_blog', array( $this, '_after_site_deactivated_callback' ) );
|
1646 |
add_action( 'archive_blog', array( $this, '_after_site_deactivated_callback' ) );
|
1647 |
add_action( 'make_spam_blog', array( $this, '_after_site_deactivated_callback' ) );
|
|
|
1648 |
//call the deprecated version if wp_version < 5.1
|
1649 |
if ( version_compare($GLOBALS['wp_version'],'5.1') === -1) {
|
1650 |
add_action( 'deleted_blog', array( $this, '_after_site_deleted_callback' ), 10, 2);
|
@@ -1679,6 +1680,7 @@
|
|
1679 |
$this->add_ajax_action( 'update_billing', array( $this, '_update_billing_ajax_action' ) );
|
1680 |
$this->add_ajax_action( 'start_trial', array( $this, '_start_trial_ajax_action' ) );
|
1681 |
$this->add_ajax_action( 'set_data_debug_mode', array( $this, '_set_data_debug_mode' ) );
|
|
|
1682 |
|
1683 |
if ( $this->_is_network_active && fs_is_network_admin() ) {
|
1684 |
$this->add_ajax_action( 'network_activate', array( $this, '_network_activate_ajax_action' ) );
|
@@ -7741,7 +7743,10 @@
|
|
7741 |
* @author Leo Fajardo (@leorw)
|
7742 |
* @since 1.2.2
|
7743 |
*/
|
7744 |
-
if (
|
|
|
|
|
|
|
7745 |
deactivate_plugins( $other_version_basename );
|
7746 |
}
|
7747 |
}
|
@@ -9026,12 +9031,25 @@
|
|
9026 |
'is_uninstalled' => false,
|
9027 |
);
|
9028 |
|
9029 |
-
$plugins_update_data[] = $new_plugin;
|
9030 |
$network_plugins_cache->plugins[ $basename ] = $new_plugin;
|
9031 |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
9032 |
if ( isset( $site_active_plugins[ $basename ] ) ) {
|
9033 |
$site_active_plugins_cache->plugins[ $basename ] = $new_plugin;
|
9034 |
-
$site_active_plugins_cache->plugins[ $basename ]['is_active'] =
|
9035 |
}
|
9036 |
}
|
9037 |
}
|
@@ -13135,6 +13153,61 @@
|
|
13135 |
}
|
13136 |
}
|
13137 |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
13138 |
/**
|
13139 |
* @author Leo Fajardo (@leorw)
|
13140 |
* @since 2.3.0
|
@@ -20715,6 +20788,13 @@
|
|
20715 |
}
|
20716 |
|
20717 |
if ( 'none' !== $plan_change ) {
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
20718 |
$this->do_action( 'after_license_change', $plan_change, $this->get_plan() );
|
20719 |
}
|
20720 |
}
|
@@ -22329,6 +22409,26 @@
|
|
22329 |
|
22330 |
$this->_handle_account_edits();
|
22331 |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
22332 |
$this->do_action( 'account_page_load_before_departure' );
|
22333 |
}
|
22334 |
|
@@ -23489,10 +23589,12 @@
|
|
23489 |
* @since 1.0.3
|
23490 |
*/
|
23491 |
function _redirect_on_activation_hook() {
|
23492 |
-
|
|
|
23493 |
|
23494 |
-
|
23495 |
-
|
|
|
23496 |
}
|
23497 |
}
|
23498 |
|
1645 |
add_action( 'deactivate_blog', array( $this, '_after_site_deactivated_callback' ) );
|
1646 |
add_action( 'archive_blog', array( $this, '_after_site_deactivated_callback' ) );
|
1647 |
add_action( 'make_spam_blog', array( $this, '_after_site_deactivated_callback' ) );
|
1648 |
+
|
1649 |
//call the deprecated version if wp_version < 5.1
|
1650 |
if ( version_compare($GLOBALS['wp_version'],'5.1') === -1) {
|
1651 |
add_action( 'deleted_blog', array( $this, '_after_site_deleted_callback' ), 10, 2);
|
1680 |
$this->add_ajax_action( 'update_billing', array( $this, '_update_billing_ajax_action' ) );
|
1681 |
$this->add_ajax_action( 'start_trial', array( $this, '_start_trial_ajax_action' ) );
|
1682 |
$this->add_ajax_action( 'set_data_debug_mode', array( $this, '_set_data_debug_mode' ) );
|
1683 |
+
$this->add_ajax_action( 'toggle_whitelabel_mode', array( $this, '_toggle_whitelabel_mode_ajax_handler' ) );
|
1684 |
|
1685 |
if ( $this->_is_network_active && fs_is_network_admin() ) {
|
1686 |
$this->add_ajax_action( 'network_activate', array( $this, '_network_activate_ajax_action' ) );
|
7743 |
* @author Leo Fajardo (@leorw)
|
7744 |
* @since 1.2.2
|
7745 |
*/
|
7746 |
+
if (
|
7747 |
+
is_plugin_active( $other_version_basename ) &&
|
7748 |
+
$this->apply_filters( 'deactivate_on_activation', true )
|
7749 |
+
) {
|
7750 |
deactivate_plugins( $other_version_basename );
|
7751 |
}
|
7752 |
}
|
9031 |
'is_uninstalled' => false,
|
9032 |
);
|
9033 |
|
|
|
9034 |
$network_plugins_cache->plugins[ $basename ] = $new_plugin;
|
9035 |
|
9036 |
+
$is_site_level_active = (
|
9037 |
+
isset( $site_active_plugins[ $basename ] ) &&
|
9038 |
+
$site_active_plugins[ $basename ]['is_active']
|
9039 |
+
);
|
9040 |
+
|
9041 |
+
/**
|
9042 |
+
* If not network active, set the activity status based on the site-level plugin status.
|
9043 |
+
*/
|
9044 |
+
if ( ! $new_plugin['is_active'] ) {
|
9045 |
+
$new_plugin['is_active'] = $is_site_level_active;
|
9046 |
+
}
|
9047 |
+
|
9048 |
+
$plugins_update_data[] = $new_plugin;
|
9049 |
+
|
9050 |
if ( isset( $site_active_plugins[ $basename ] ) ) {
|
9051 |
$site_active_plugins_cache->plugins[ $basename ] = $new_plugin;
|
9052 |
+
$site_active_plugins_cache->plugins[ $basename ]['is_active'] = $is_site_level_active;
|
9053 |
}
|
9054 |
}
|
9055 |
}
|
13153 |
}
|
13154 |
}
|
13155 |
|
13156 |
+
/**
|
13157 |
+
* @author Edgar Melkonyan
|
13158 |
+
* @since 2.4.1
|
13159 |
+
*
|
13160 |
+
* @throws Freemius_Exception
|
13161 |
+
*/
|
13162 |
+
function _toggle_whitelabel_mode_ajax_handler() {
|
13163 |
+
$this->_logger->entrance();
|
13164 |
+
|
13165 |
+
$this->check_ajax_referer( 'toggle_whitelabel_mode' );
|
13166 |
+
|
13167 |
+
if ( ! $this->is_user_admin() ) {
|
13168 |
+
// Only for admins.
|
13169 |
+
self::shoot_ajax_failure();
|
13170 |
+
}
|
13171 |
+
|
13172 |
+
$license = $this->get_api_user_scope()->call(
|
13173 |
+
"/licenses/{$this->_site->license_id}.json",
|
13174 |
+
'put',
|
13175 |
+
array( 'is_whitelabeled' => ! $this->_license->is_whitelabeled )
|
13176 |
+
);
|
13177 |
+
|
13178 |
+
if ( ! $this->is_api_result_entity( $license ) ) {
|
13179 |
+
self::shoot_ajax_failure(
|
13180 |
+
FS_Api::is_api_error_object( $license ) ?
|
13181 |
+
$license->error->message :
|
13182 |
+
fs_text_inline( "An unknown error has occurred while trying to toggle the license's white-label mode.", 'unknown-error-occurred', $this->get_slug() )
|
13183 |
+
);
|
13184 |
+
}
|
13185 |
+
|
13186 |
+
$this->_license->is_whitelabeled = $license->is_whitelabeled;
|
13187 |
+
$this->_store_licenses();
|
13188 |
+
|
13189 |
+
$this->_sync_license();
|
13190 |
+
|
13191 |
+
if ( ! $license->is_whitelabeled ) {
|
13192 |
+
$this->_admin_notices->remove_sticky( 'license_whitelabeled' );
|
13193 |
+
} else {
|
13194 |
+
$this->_admin_notices->add_sticky(
|
13195 |
+
sprintf(
|
13196 |
+
$this->get_text_inline(
|
13197 |
+
'Your %s license was flagged as white-labeled to hide sensitive information from the WP Admin (e.g. your email, license key, prices, billing address & invoices). If you ever wish to revert it back, you can easily do it through your %s. If this was a mistake you can also %s.',
|
13198 |
+
'license_whitelabeled'
|
13199 |
+
),
|
13200 |
+
"<strong>{$this->get_plugin_title()}</strong>",
|
13201 |
+
sprintf( '<a href="https://users.freemius.com" target="_blank">%s</a>', $this->get_text_inline( 'User Dashboard', 'user-dashboard' ) ),
|
13202 |
+
sprintf( '<a href="#" class="fs-toggle-whitelabel-mode">%s</a>', $this->get_text_inline( 'revert it now', 'revert-it-now' ) )
|
13203 |
+
),
|
13204 |
+
'license_whitelabeled'
|
13205 |
+
);
|
13206 |
+
}
|
13207 |
+
|
13208 |
+
self::shoot_ajax_response( array( 'success' => true ) );
|
13209 |
+
}
|
13210 |
+
|
13211 |
/**
|
13212 |
* @author Leo Fajardo (@leorw)
|
13213 |
* @since 2.3.0
|
20788 |
}
|
20789 |
|
20790 |
if ( 'none' !== $plan_change ) {
|
20791 |
+
if (
|
20792 |
+
! is_object( $this->_license ) ||
|
20793 |
+
! $this->_license->is_whitelabeled
|
20794 |
+
) {
|
20795 |
+
$this->_admin_notices->remove_sticky( 'license_whitelabeled' );
|
20796 |
+
}
|
20797 |
+
|
20798 |
$this->do_action( 'after_license_change', $plan_change, $this->get_plan() );
|
20799 |
}
|
20800 |
}
|
22409 |
|
22410 |
$this->_handle_account_edits();
|
22411 |
|
22412 |
+
if (
|
22413 |
+
is_object( $this->_license ) &&
|
22414 |
+
$this->_license->user_id == $this->_user->id &&
|
22415 |
+
! $this->is_whitelabeled( true )
|
22416 |
+
) {
|
22417 |
+
$this->_admin_notices->add(
|
22418 |
+
sprintf(
|
22419 |
+
$this->get_text_inline( "Is this your client's site? %s if you wish to hide sensitive info like your email, license key, prices, billing address & invoices from the WP Admin.", 'license_not_whitelabeled' ),
|
22420 |
+
sprintf(
|
22421 |
+
'<a href="#" class="fs-toggle-whitelabel-mode">%s</a>',
|
22422 |
+
$this->get_text_inline( 'Click here', 'click-here' )
|
22423 |
+
)
|
22424 |
+
),
|
22425 |
+
'',
|
22426 |
+
'success',
|
22427 |
+
false,
|
22428 |
+
'license_not_whitelabeled'
|
22429 |
+
);
|
22430 |
+
}
|
22431 |
+
|
22432 |
$this->do_action( 'account_page_load_before_departure' );
|
22433 |
}
|
22434 |
|
23589 |
* @since 1.0.3
|
23590 |
*/
|
23591 |
function _redirect_on_activation_hook() {
|
23592 |
+
if ( $this->apply_filters( 'redirect_on_activation', true ) ) {
|
23593 |
+
$url = $this->get_after_plugin_activation_redirect_url();
|
23594 |
|
23595 |
+
if ( is_string( $url ) ) {
|
23596 |
+
fs_redirect( $url );
|
23597 |
+
}
|
23598 |
}
|
23599 |
}
|
23600 |
|
freemius/includes/class-fs-plugin-updater.php
CHANGED
@@ -542,23 +542,66 @@
|
|
542 |
}
|
543 |
}
|
544 |
|
|
|
|
|
|
|
545 |
if ( is_object( $this->_update_details ) ) {
|
|
|
|
|
|
|
|
|
546 |
if ( ! isset( $transient_data->response ) ) {
|
547 |
$transient_data->response = array();
|
548 |
}
|
549 |
|
550 |
// Add plugin to transient data.
|
551 |
-
$transient_data->response[ $
|
552 |
$this->_update_details :
|
553 |
(array) $this->_update_details;
|
554 |
-
} else
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
555 |
/**
|
556 |
-
*
|
557 |
*
|
558 |
-
* @
|
559 |
-
* @
|
560 |
*/
|
561 |
-
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
562 |
}
|
563 |
|
564 |
$slug = $this->_fs->get_slug();
|
542 |
}
|
543 |
}
|
544 |
|
545 |
+
// Alias.
|
546 |
+
$basename = $this->_fs->premium_plugin_basename();
|
547 |
+
|
548 |
if ( is_object( $this->_update_details ) ) {
|
549 |
+
if ( isset( $transient_data->no_update ) ) {
|
550 |
+
unset( $transient_data->no_update[ $basename ] );
|
551 |
+
}
|
552 |
+
|
553 |
if ( ! isset( $transient_data->response ) ) {
|
554 |
$transient_data->response = array();
|
555 |
}
|
556 |
|
557 |
// Add plugin to transient data.
|
558 |
+
$transient_data->response[ $basename ] = $this->_fs->is_plugin() ?
|
559 |
$this->_update_details :
|
560 |
(array) $this->_update_details;
|
561 |
+
} else {
|
562 |
+
if ( isset( $transient_data->response ) ) {
|
563 |
+
/**
|
564 |
+
* Ensure that there's no update data for the plugin to prevent upgrading the premium version to the latest free version.
|
565 |
+
*
|
566 |
+
* @author Leo Fajardo (@leorw)
|
567 |
+
* @since 2.3.0
|
568 |
+
*/
|
569 |
+
unset( $transient_data->response[ $basename ] );
|
570 |
+
}
|
571 |
+
|
572 |
+
if ( ! isset( $transient_data->no_update ) ) {
|
573 |
+
$transient_data->no_update = array();
|
574 |
+
}
|
575 |
+
|
576 |
/**
|
577 |
+
* Add product to no_update transient data to properly integrate with WP 5.5 auto-updates UI.
|
578 |
*
|
579 |
+
* @since 2.4.1
|
580 |
+
* @link https://make.wordpress.org/core/2020/07/30/recommended-usage-of-the-updates-api-to-support-the-auto-updates-ui-for-plugins-and-themes-in-wordpress-5-5/
|
581 |
*/
|
582 |
+
$transient_data->no_update[ $basename ] = $this->_fs->is_plugin() ?
|
583 |
+
(object) array(
|
584 |
+
'id' => $basename,
|
585 |
+
'slug' => $this->_fs->get_slug(),
|
586 |
+
'plugin' => $basename,
|
587 |
+
'new_version' => $this->_fs->get_plugin_version(),
|
588 |
+
'url' => '',
|
589 |
+
'package' => '',
|
590 |
+
'icons' => array(),
|
591 |
+
'banners' => array(),
|
592 |
+
'banners_rtl' => array(),
|
593 |
+
'tested' => '',
|
594 |
+
'requires_php' => '',
|
595 |
+
'compatibility' => new stdClass(),
|
596 |
+
) :
|
597 |
+
array(
|
598 |
+
'theme' => $basename,
|
599 |
+
'new_version' => $this->_fs->get_plugin_version(),
|
600 |
+
'url' => '',
|
601 |
+
'package' => '',
|
602 |
+
'requires' => '',
|
603 |
+
'requires_php' => '',
|
604 |
+
);
|
605 |
}
|
606 |
|
607 |
$slug = $this->_fs->get_slug();
|
freemius/includes/fs-plugin-info-dialog.php
CHANGED
@@ -260,14 +260,20 @@
|
|
260 |
if ( $has_valid_blog_id ) {
|
261 |
restore_current_blog();
|
262 |
}
|
|
|
263 |
|
264 |
-
|
265 |
-
|
266 |
-
|
267 |
-
|
268 |
-
|
269 |
-
|
270 |
-
|
|
|
|
|
|
|
|
|
|
|
271 |
}
|
272 |
}
|
273 |
|
@@ -577,7 +583,7 @@
|
|
577 |
|
578 |
$has_installed_version = ( 'install' !== $this->status['status'] );
|
579 |
|
580 |
-
if ( ! $api->has_paid_plan ) {
|
581 |
/**
|
582 |
* Free-only add-on.
|
583 |
*
|
@@ -1635,4 +1641,4 @@
|
|
1635 |
iframe_footer();
|
1636 |
exit;
|
1637 |
}
|
1638 |
-
}
|
260 |
if ( $has_valid_blog_id ) {
|
261 |
restore_current_blog();
|
262 |
}
|
263 |
+
}
|
264 |
|
265 |
+
/**
|
266 |
+
* Check if there's a purchased license in case the add-on can only be installed/downloaded as part of a purchased bundle.
|
267 |
+
*
|
268 |
+
* @author Leo Fajardo (@leorw)
|
269 |
+
* @since 2.4.1
|
270 |
+
*/
|
271 |
+
if ( is_object( $fs_addon ) ) {
|
272 |
+
$data->has_purchased_license = $fs_addon->has_active_valid_license();
|
273 |
+
} else {
|
274 |
+
$account_addons = $this->_fs->get_account_addons();
|
275 |
+
if ( ! empty( $account_addons ) && in_array( $selected_addon->id, $account_addons ) ) {
|
276 |
+
$data->has_purchased_license = true;
|
277 |
}
|
278 |
}
|
279 |
|
583 |
|
584 |
$has_installed_version = ( 'install' !== $this->status['status'] );
|
585 |
|
586 |
+
if ( ! $api->has_paid_plan && ! $api->has_purchased_license ) {
|
587 |
/**
|
588 |
* Free-only add-on.
|
589 |
*
|
1641 |
iframe_footer();
|
1642 |
exit;
|
1643 |
}
|
1644 |
+
}
|
freemius/includes/i18n.php
CHANGED
@@ -98,6 +98,8 @@
|
|
98 |
'error' => _fs_text( 'Error' ),
|
99 |
'failed-finding-main-path' => _fs_text( 'Freemius SDK couldn\'t find the plugin\'s main file. Please contact sdk@freemius.com with the current error.' ),
|
100 |
'learn-more' => _fs_text( 'Learn more' ),
|
|
|
|
|
101 |
|
102 |
#region Affiliation
|
103 |
'affiliation' => _fs_text( 'Affiliation' ),
|
98 |
'error' => _fs_text( 'Error' ),
|
99 |
'failed-finding-main-path' => _fs_text( 'Freemius SDK couldn\'t find the plugin\'s main file. Please contact sdk@freemius.com with the current error.' ),
|
100 |
'learn-more' => _fs_text( 'Learn more' ),
|
101 |
+
'license_not_whitelabeled' => _fs_text( "Is this your client's site? %s if you wish to hide sensitive info like your billing address and invoices from the WP Admin."),
|
102 |
+
'license_whitelabeled' => _fs_text( 'Your %s license was flagged as white-labeled to hide sensitive information from the WP Admin (e.g. your billing address and invoices). If you ever wish to revert it back, you can easily do it through your %s. If this was a mistake you can also %s.'),
|
103 |
|
104 |
#region Affiliation
|
105 |
'affiliation' => _fs_text( 'Affiliation' ),
|
freemius/includes/sdk/FreemiusWordPress.php
CHANGED
@@ -59,6 +59,10 @@
|
|
59 |
}
|
60 |
}
|
61 |
|
|
|
|
|
|
|
|
|
62 |
$curl_version = FS_SDK__HAS_CURL ?
|
63 |
curl_version() :
|
64 |
array( 'version' => '7.37' );
|
@@ -401,7 +405,7 @@
|
|
401 |
}
|
402 |
|
403 |
if ( 'https' === substr( strtolower( $request_url ), 0, 5 ) ) {
|
404 |
-
$pWPRemoteArgs['sslverify'] =
|
405 |
}
|
406 |
|
407 |
if ( false !== $pBeforeExecutionFunction &&
|
59 |
}
|
60 |
}
|
61 |
|
62 |
+
if ( ! defined( 'FS_SDK__SSLVERIFY' ) ) {
|
63 |
+
define( 'FS_SDK__SSLVERIFY', false );
|
64 |
+
}
|
65 |
+
|
66 |
$curl_version = FS_SDK__HAS_CURL ?
|
67 |
curl_version() :
|
68 |
array( 'version' => '7.37' );
|
405 |
}
|
406 |
|
407 |
if ( 'https' === substr( strtolower( $request_url ), 0, 5 ) ) {
|
408 |
+
$pWPRemoteArgs['sslverify'] = FS_SDK__SSLVERIFY;
|
409 |
}
|
410 |
|
411 |
if ( false !== $pBeforeExecutionFunction &&
|
freemius/languages/freemius-cs_CZ.mo
CHANGED
Binary file
|
freemius/languages/freemius-da_DK.mo
CHANGED
Binary file
|
freemius/languages/freemius-en.mo
CHANGED
Binary file
|
freemius/languages/freemius-es_ES.mo
CHANGED
Binary file
|
freemius/languages/freemius-fr_FR.mo
CHANGED
Binary file
|
freemius/languages/freemius-he_IL.mo
CHANGED
Binary file
|
freemius/languages/freemius-hu_HU.mo
CHANGED
Binary file
|
freemius/languages/freemius-it_IT.mo
CHANGED
Binary file
|
freemius/languages/freemius-ja.mo
CHANGED
Binary file
|
freemius/languages/freemius-nl_NL.mo
CHANGED
Binary file
|
freemius/languages/freemius-ru_RU.mo
CHANGED
Binary file
|
freemius/languages/freemius-ta.mo
CHANGED
Binary file
|
freemius/languages/freemius-zh_CN.mo
CHANGED
Binary file
|
freemius/languages/freemius.pot
CHANGED
@@ -16,771 +16,795 @@ msgstr ""
|
|
16 |
"X-Poedit-SourceCharset: UTF-8\n"
|
17 |
"Plural-Forms: nplurals=2; plural=(n != 1);\n"
|
18 |
|
19 |
-
#: includes/class-freemius.php:
|
20 |
msgid "An update to a Beta version will replace your installed version of %s with the latest Beta release - use with caution, and not on production sites. You have been warned."
|
21 |
msgstr ""
|
22 |
|
23 |
-
#: includes/class-freemius.php:
|
24 |
msgid "Would you like to proceed with the update?"
|
25 |
msgstr ""
|
26 |
|
27 |
-
#: includes/class-freemius.php:
|
28 |
msgid "Freemius SDK couldn't find the plugin's main file. Please contact sdk@freemius.com with the current error."
|
29 |
msgstr ""
|
30 |
|
31 |
-
#: includes/class-freemius.php:
|
32 |
msgid "Error"
|
33 |
msgstr ""
|
34 |
|
35 |
-
#: includes/class-freemius.php:
|
36 |
msgid "I found a better %s"
|
37 |
msgstr ""
|
38 |
|
39 |
-
#: includes/class-freemius.php:
|
40 |
msgid "What's the %s's name?"
|
41 |
msgstr ""
|
42 |
|
43 |
-
#: includes/class-freemius.php:
|
44 |
msgid "It's a temporary %s. I'm just debugging an issue."
|
45 |
msgstr ""
|
46 |
|
47 |
-
#: includes/class-freemius.php:
|
48 |
msgid "Deactivation"
|
49 |
msgstr ""
|
50 |
|
51 |
-
#: includes/class-freemius.php:
|
52 |
msgid "Theme Switch"
|
53 |
msgstr ""
|
54 |
|
55 |
-
#: includes/class-freemius.php:
|
56 |
msgid "Other"
|
57 |
msgstr ""
|
58 |
|
59 |
-
#: includes/class-freemius.php:
|
60 |
msgid "I no longer need the %s"
|
61 |
msgstr ""
|
62 |
|
63 |
-
#: includes/class-freemius.php:
|
64 |
msgid "I only needed the %s for a short period"
|
65 |
msgstr ""
|
66 |
|
67 |
-
#: includes/class-freemius.php:
|
68 |
msgid "The %s broke my site"
|
69 |
msgstr ""
|
70 |
|
71 |
-
#: includes/class-freemius.php:
|
72 |
msgid "The %s suddenly stopped working"
|
73 |
msgstr ""
|
74 |
|
75 |
-
#: includes/class-freemius.php:
|
76 |
msgid "I can't pay for it anymore"
|
77 |
msgstr ""
|
78 |
|
79 |
-
#: includes/class-freemius.php:
|
80 |
msgid "What price would you feel comfortable paying?"
|
81 |
msgstr ""
|
82 |
|
83 |
-
#: includes/class-freemius.php:
|
84 |
msgid "I don't like to share my information with you"
|
85 |
msgstr ""
|
86 |
|
87 |
-
#: includes/class-freemius.php:
|
88 |
msgid "The %s didn't work"
|
89 |
msgstr ""
|
90 |
|
91 |
-
#: includes/class-freemius.php:
|
92 |
msgid "I couldn't understand how to make it work"
|
93 |
msgstr ""
|
94 |
|
95 |
-
#: includes/class-freemius.php:
|
96 |
msgid "The %s is great, but I need specific feature that you don't support"
|
97 |
msgstr ""
|
98 |
|
99 |
-
#: includes/class-freemius.php:
|
100 |
msgid "What feature?"
|
101 |
msgstr ""
|
102 |
|
103 |
-
#: includes/class-freemius.php:
|
104 |
msgid "The %s is not working"
|
105 |
msgstr ""
|
106 |
|
107 |
-
#: includes/class-freemius.php:
|
108 |
msgid "Kindly share what didn't work so we can fix it for future users..."
|
109 |
msgstr ""
|
110 |
|
111 |
-
#: includes/class-freemius.php:
|
112 |
msgid "It's not what I was looking for"
|
113 |
msgstr ""
|
114 |
|
115 |
-
#: includes/class-freemius.php:
|
116 |
msgid "What you've been looking for?"
|
117 |
msgstr ""
|
118 |
|
119 |
-
#: includes/class-freemius.php:
|
120 |
msgid "The %s didn't work as expected"
|
121 |
msgstr ""
|
122 |
|
123 |
-
#: includes/class-freemius.php:
|
124 |
msgid "What did you expect?"
|
125 |
msgstr ""
|
126 |
|
127 |
-
#: includes/class-freemius.php:
|
128 |
msgid "Freemius Debug"
|
129 |
msgstr ""
|
130 |
|
131 |
-
#: includes/class-freemius.php:
|
132 |
msgid "I don't know what is cURL or how to install it, help me!"
|
133 |
msgstr ""
|
134 |
|
135 |
-
#: includes/class-freemius.php:
|
136 |
msgid "We'll make sure to contact your hosting company and resolve the issue. You will get a follow-up email to %s once we have an update."
|
137 |
msgstr ""
|
138 |
|
139 |
-
#: includes/class-freemius.php:
|
140 |
msgid "Great, please install cURL and enable it in your php.ini file. In addition, search for the 'disable_functions' directive in your php.ini file and remove any disabled methods starting with 'curl_'. To make sure it was successfully activated, use 'phpinfo()'. Once activated, deactivate the %s and reactivate it back again."
|
141 |
msgstr ""
|
142 |
|
143 |
-
#: includes/class-freemius.php:
|
144 |
msgid "Yes - do your thing"
|
145 |
msgstr ""
|
146 |
|
147 |
-
#: includes/class-freemius.php:
|
148 |
msgid "No - just deactivate"
|
149 |
msgstr ""
|
150 |
|
151 |
-
#: includes/class-freemius.php:
|
152 |
msgctxt "exclamation"
|
153 |
msgid "Oops"
|
154 |
msgstr ""
|
155 |
|
156 |
-
#: includes/class-freemius.php:
|
157 |
msgid "Thank for giving us the chance to fix it! A message was just sent to our technical staff. We will get back to you as soon as we have an update to %s. Appreciate your patience."
|
158 |
msgstr ""
|
159 |
|
160 |
-
#: includes/class-freemius.php:
|
161 |
msgctxt "addonX cannot run without pluginY"
|
162 |
msgid "%s cannot run without %s."
|
163 |
msgstr ""
|
164 |
|
165 |
-
#: includes/class-freemius.php:
|
166 |
msgctxt "addonX cannot run..."
|
167 |
msgid "%s cannot run without the plugin."
|
168 |
msgstr ""
|
169 |
|
170 |
-
#: includes/class-freemius.php:
|
171 |
msgid "Unexpected API error. Please contact the %s's author with the following error."
|
172 |
msgstr ""
|
173 |
|
174 |
-
#: includes/class-freemius.php:
|
175 |
msgid "Premium %s version was successfully activated."
|
176 |
msgstr ""
|
177 |
|
178 |
-
#: includes/class-freemius.php:
|
179 |
msgctxt "Used to express elation, enthusiasm, or triumph (especially in electronic communication)."
|
180 |
msgid "W00t"
|
181 |
msgstr ""
|
182 |
|
183 |
-
#: includes/class-freemius.php:
|
184 |
msgid "You have a %s license."
|
185 |
msgstr ""
|
186 |
|
187 |
-
#: includes/class-freemius.php:
|
188 |
msgctxt "interjection expressing joy or exuberance"
|
189 |
msgid "Yee-haw"
|
190 |
msgstr ""
|
191 |
|
192 |
-
#: includes/class-freemius.php:
|
193 |
msgid "%s free trial was successfully cancelled. Since the add-on is premium only it was automatically deactivated. If you like to use it in the future, you'll have to purchase a license."
|
194 |
msgstr ""
|
195 |
|
196 |
-
#: includes/class-freemius.php:
|
197 |
msgid "%s is a premium only add-on. You have to purchase a license first before activating the plugin."
|
198 |
msgstr ""
|
199 |
|
200 |
-
#: includes/class-freemius.php:
|
201 |
msgid "More information about %s"
|
202 |
msgstr ""
|
203 |
|
204 |
-
#: includes/class-freemius.php:
|
205 |
msgid "Purchase License"
|
206 |
msgstr ""
|
207 |
|
208 |
-
#: includes/class-freemius.php:
|
209 |
msgid "You should receive an activation email for %s to your mailbox at %s. Please make sure you click the activation button in that email to %s."
|
210 |
msgstr ""
|
211 |
|
212 |
-
#: includes/class-freemius.php:
|
213 |
msgid "start the trial"
|
214 |
msgstr ""
|
215 |
|
216 |
-
#: includes/class-freemius.php:
|
217 |
msgid "complete the install"
|
218 |
msgstr ""
|
219 |
|
220 |
-
#: includes/class-freemius.php:
|
221 |
msgid "You are just one step away - %s"
|
222 |
msgstr ""
|
223 |
|
224 |
-
#: includes/class-freemius.php:
|
225 |
msgctxt "%s - plugin name. As complete \"PluginX\" activation now"
|
226 |
msgid "Complete \"%s\" Activation Now"
|
227 |
msgstr ""
|
228 |
|
229 |
-
#: includes/class-freemius.php:
|
230 |
msgid "We made a few tweaks to the %s, %s"
|
231 |
msgstr ""
|
232 |
|
233 |
-
#: includes/class-freemius.php:
|
234 |
msgid "Opt in to make \"%s\" better!"
|
235 |
msgstr ""
|
236 |
|
237 |
-
#: includes/class-freemius.php:
|
238 |
msgid "The upgrade of %s was successfully completed."
|
239 |
msgstr ""
|
240 |
|
241 |
-
#: includes/class-freemius.php:
|
242 |
msgid "Add-On"
|
243 |
msgstr ""
|
244 |
|
245 |
-
#: includes/class-freemius.php:
|
246 |
msgid "Plugin"
|
247 |
msgstr ""
|
248 |
|
249 |
-
#: includes/class-freemius.php:
|
250 |
msgid "Theme"
|
251 |
msgstr ""
|
252 |
|
253 |
-
#: includes/class-freemius.php:
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
254 |
msgid "An unknown error has occurred while trying to set the user's beta mode."
|
255 |
msgstr ""
|
256 |
|
257 |
-
#: includes/class-freemius.php:
|
258 |
msgid "Invalid new user ID or email address."
|
259 |
msgstr ""
|
260 |
|
261 |
-
#: includes/class-freemius.php:
|
262 |
msgid "Sorry, we could not complete the email update. Another user with the same email is already registered."
|
263 |
msgstr ""
|
264 |
|
265 |
-
#: includes/class-freemius.php:
|
266 |
msgid "If you would like to give up the ownership of the %s's account to %s click the Change Ownership button."
|
267 |
msgstr ""
|
268 |
|
269 |
-
#: includes/class-freemius.php:
|
270 |
msgid "Change Ownership"
|
271 |
msgstr ""
|
272 |
|
273 |
-
#: includes/class-freemius.php:
|
274 |
msgid "Invalid site details collection."
|
275 |
msgstr ""
|
276 |
|
277 |
-
#: includes/class-freemius.php:
|
278 |
msgid "We couldn't find your email address in the system, are you sure it's the right address?"
|
279 |
msgstr ""
|
280 |
|
281 |
-
#: includes/class-freemius.php:
|
282 |
msgid "We can't see any active licenses associated with that email address, are you sure it's the right address?"
|
283 |
msgstr ""
|
284 |
|
285 |
-
#: includes/class-freemius.php:
|
286 |
msgid "Account is pending activation."
|
287 |
msgstr ""
|
288 |
|
289 |
-
#: includes/class-freemius.php:
|
290 |
msgid "Buy a license now"
|
291 |
msgstr ""
|
292 |
|
293 |
-
#: includes/class-freemius.php:
|
294 |
msgid "Renew your license now"
|
295 |
msgstr ""
|
296 |
|
297 |
-
#: includes/class-freemius.php:
|
298 |
msgid "%s to access version %s security & feature updates, and support."
|
299 |
msgstr ""
|
300 |
|
301 |
-
#: includes/class-freemius.php:
|
302 |
msgid "%s activation was successfully completed."
|
303 |
msgstr ""
|
304 |
|
305 |
-
#: includes/class-freemius.php:
|
306 |
msgid "Your account was successfully activated with the %s plan."
|
307 |
msgstr ""
|
308 |
|
309 |
-
#: includes/class-freemius.php:
|
310 |
msgid "Your trial has been successfully started."
|
311 |
msgstr ""
|
312 |
|
313 |
-
#: includes/class-freemius.php:
|
314 |
msgid "Couldn't activate %s."
|
315 |
msgstr ""
|
316 |
|
317 |
-
#: includes/class-freemius.php:
|
318 |
msgid "Please contact us with the following message:"
|
319 |
msgstr ""
|
320 |
|
321 |
-
#: includes/class-freemius.php:
|
322 |
msgid "An unknown error has occurred."
|
323 |
msgstr ""
|
324 |
|
325 |
-
#: includes/class-freemius.php:
|
326 |
msgid "Upgrade"
|
327 |
msgstr ""
|
328 |
|
329 |
-
#: includes/class-freemius.php:
|
330 |
msgid "Start Trial"
|
331 |
msgstr ""
|
332 |
|
333 |
-
#: includes/class-freemius.php:
|
334 |
msgid "Pricing"
|
335 |
msgstr ""
|
336 |
|
337 |
-
#: includes/class-freemius.php:
|
338 |
msgid "Affiliation"
|
339 |
msgstr ""
|
340 |
|
341 |
-
#: includes/class-freemius.php:
|
342 |
msgid "Account"
|
343 |
msgstr ""
|
344 |
|
345 |
-
#: includes/class-freemius.php:
|
346 |
msgid "Contact Us"
|
347 |
msgstr ""
|
348 |
|
349 |
-
#: includes/class-freemius.php:
|
350 |
msgid "Add-Ons"
|
351 |
msgstr ""
|
352 |
|
353 |
-
#: includes/class-freemius.php:
|
354 |
msgctxt "ASCII arrow left icon"
|
355 |
msgid "←"
|
356 |
msgstr ""
|
357 |
|
358 |
-
#: includes/class-freemius.php:
|
359 |
msgctxt "ASCII arrow right icon"
|
360 |
msgid "➤"
|
361 |
msgstr ""
|
362 |
|
363 |
-
#: includes/class-freemius.php:
|
364 |
msgctxt "noun"
|
365 |
msgid "Pricing"
|
366 |
msgstr ""
|
367 |
|
368 |
-
#: includes/class-freemius.php:
|
369 |
msgid "Support Forum"
|
370 |
msgstr ""
|
371 |
|
372 |
-
#: includes/class-freemius.php:
|
373 |
msgid "Your email has been successfully verified - you are AWESOME!"
|
374 |
msgstr ""
|
375 |
|
376 |
-
#: includes/class-freemius.php:
|
377 |
msgctxt "a positive response"
|
378 |
msgid "Right on"
|
379 |
msgstr ""
|
380 |
|
381 |
-
#: includes/class-freemius.php:
|
382 |
msgid "seems like the key you entered doesn't match our records."
|
383 |
msgstr ""
|
384 |
|
385 |
-
#: includes/class-freemius.php:
|
386 |
msgid "Debug mode was successfully enabled and will be automatically disabled in 60 min. You can also disable it earlier by clicking the \"Stop Debug\" link."
|
387 |
msgstr ""
|
388 |
|
389 |
-
#: includes/class-freemius.php:
|
390 |
msgid "Your %s Add-on plan was successfully upgraded."
|
391 |
msgstr ""
|
392 |
|
393 |
-
#: includes/class-freemius.php:
|
394 |
msgid "%s Add-on was successfully purchased."
|
395 |
msgstr ""
|
396 |
|
397 |
-
#: includes/class-freemius.php:
|
398 |
msgid "Download the latest version"
|
399 |
msgstr ""
|
400 |
|
401 |
-
#: includes/class-freemius.php:
|
402 |
msgid "Your server is blocking the access to Freemius' API, which is crucial for %1$s synchronization. Please contact your host to whitelist %2$s"
|
403 |
msgstr ""
|
404 |
|
405 |
-
#: includes/class-freemius.php:
|
406 |
msgid "Error received from the server:"
|
407 |
msgstr ""
|
408 |
|
409 |
-
#: includes/class-freemius.php:
|
410 |
msgid "It seems like one of the authentication parameters is wrong. Update your Public Key, Secret Key & User ID, and try again."
|
411 |
msgstr ""
|
412 |
|
413 |
-
#: includes/class-freemius.php:
|
414 |
msgctxt "something somebody says when they are thinking about what you have just said."
|
415 |
msgid "Hmm"
|
416 |
msgstr ""
|
417 |
|
418 |
-
#: includes/class-freemius.php:
|
419 |
msgid "It looks like you are still on the %s plan. If you did upgrade or change your plan, it's probably an issue on our side - sorry."
|
420 |
msgstr ""
|
421 |
|
422 |
-
#: includes/class-freemius.php:
|
423 |
msgctxt "trial period"
|
424 |
msgid "Trial"
|
425 |
msgstr ""
|
426 |
|
427 |
-
#: includes/class-freemius.php:
|
428 |
msgid "I have upgraded my account but when I try to Sync the License, the plan remains %s."
|
429 |
msgstr ""
|
430 |
|
431 |
-
#: includes/class-freemius.php:
|
432 |
msgid "Please contact us here"
|
433 |
msgstr ""
|
434 |
|
435 |
-
#: includes/class-freemius.php:
|
436 |
msgid "Your plan was successfully activated."
|
437 |
msgstr ""
|
438 |
|
439 |
-
#: includes/class-freemius.php:
|
440 |
msgid "Your plan was successfully upgraded."
|
441 |
msgstr ""
|
442 |
|
443 |
-
#: includes/class-freemius.php:
|
444 |
msgid "Your plan was successfully changed to %s."
|
445 |
msgstr ""
|
446 |
|
447 |
-
#: includes/class-freemius.php:
|
448 |
msgid "Your license has expired. You can still continue using the free %s forever."
|
449 |
msgstr ""
|
450 |
|
451 |
-
#: includes/class-freemius.php:
|
452 |
msgid "Your license has expired. %1$sUpgrade now%2$s to continue using the %3$s without interruptions."
|
453 |
msgstr ""
|
454 |
|
455 |
-
#: includes/class-freemius.php:
|
456 |
msgid "Your license has been cancelled. If you think it's a mistake, please contact support."
|
457 |
msgstr ""
|
458 |
|
459 |
-
#: includes/class-freemius.php:
|
460 |
msgid "Your license has expired. You can still continue using all the %s features, but you'll need to renew your license to continue getting updates and support."
|
461 |
msgstr ""
|
462 |
|
463 |
-
#: includes/class-freemius.php:
|
464 |
msgid "Your free trial has expired. You can still continue using all our free features."
|
465 |
msgstr ""
|
466 |
|
467 |
-
#: includes/class-freemius.php:
|
468 |
msgid "Your free trial has expired. %1$sUpgrade now%2$s to continue using the %3$s without interruptions."
|
469 |
msgstr ""
|
470 |
|
471 |
-
#: includes/class-freemius.php:
|
472 |
msgid "It looks like the license could not be activated."
|
473 |
msgstr ""
|
474 |
|
475 |
-
#: includes/class-freemius.php:
|
476 |
msgid "Your license was successfully activated."
|
477 |
msgstr ""
|
478 |
|
479 |
-
#: includes/class-freemius.php:
|
480 |
msgid "It looks like your site currently doesn't have an active license."
|
481 |
msgstr ""
|
482 |
|
483 |
-
#: includes/class-freemius.php:
|
484 |
msgid "It looks like the license deactivation failed."
|
485 |
msgstr ""
|
486 |
|
487 |
-
#: includes/class-freemius.php:
|
488 |
msgid "Your %s license was successfully deactivated."
|
489 |
msgstr ""
|
490 |
|
491 |
-
#: includes/class-freemius.php:
|
492 |
msgid "Your license was successfully deactivated, you are back to the %s plan."
|
493 |
msgstr ""
|
494 |
|
495 |
-
#: includes/class-freemius.php:
|
496 |
msgid "O.K"
|
497 |
msgstr ""
|
498 |
|
499 |
-
#: includes/class-freemius.php:
|
500 |
msgid "Seems like we are having some temporary issue with your subscription cancellation. Please try again in few minutes."
|
501 |
msgstr ""
|
502 |
|
503 |
-
#: includes/class-freemius.php:
|
504 |
msgid "Your subscription was successfully cancelled. Your %s plan license will expire in %s."
|
505 |
msgstr ""
|
506 |
|
507 |
-
#: includes/class-freemius.php:
|
508 |
msgid "You are already running the %s in a trial mode."
|
509 |
msgstr ""
|
510 |
|
511 |
-
#: includes/class-freemius.php:
|
512 |
msgid "You already utilized a trial before."
|
513 |
msgstr ""
|
514 |
|
515 |
-
#: includes/class-freemius.php:
|
516 |
msgid "Plan %s do not exist, therefore, can't start a trial."
|
517 |
msgstr ""
|
518 |
|
519 |
-
#: includes/class-freemius.php:
|
520 |
msgid "Plan %s does not support a trial period."
|
521 |
msgstr ""
|
522 |
|
523 |
-
#: includes/class-freemius.php:
|
524 |
msgid "None of the %s's plans supports a trial period."
|
525 |
msgstr ""
|
526 |
|
527 |
-
#: includes/class-freemius.php:
|
528 |
msgid "It looks like you are not in trial mode anymore so there's nothing to cancel :)"
|
529 |
msgstr ""
|
530 |
|
531 |
-
#: includes/class-freemius.php:
|
532 |
msgid "Seems like we are having some temporary issue with your trial cancellation. Please try again in few minutes."
|
533 |
msgstr ""
|
534 |
|
535 |
-
#: includes/class-freemius.php:
|
536 |
msgid "Your %s free trial was successfully cancelled."
|
537 |
msgstr ""
|
538 |
|
539 |
-
#: includes/class-freemius.php:
|
540 |
msgid "Version %s was released."
|
541 |
msgstr ""
|
542 |
|
543 |
-
#: includes/class-freemius.php:
|
544 |
msgid "Please download %s."
|
545 |
msgstr ""
|
546 |
|
547 |
-
#: includes/class-freemius.php:
|
548 |
msgid "the latest %s version here"
|
549 |
msgstr ""
|
550 |
|
551 |
-
#: includes/class-freemius.php:
|
552 |
msgid "New"
|
553 |
msgstr ""
|
554 |
|
555 |
-
#: includes/class-freemius.php:
|
556 |
msgid "Seems like you got the latest release."
|
557 |
msgstr ""
|
558 |
|
559 |
-
#: includes/class-freemius.php:
|
560 |
msgid "You are all good!"
|
561 |
msgstr ""
|
562 |
|
563 |
-
#: includes/class-freemius.php:
|
564 |
msgid "Verification mail was just sent to %s. If you can't find it after 5 min, please check your spam box."
|
565 |
msgstr ""
|
566 |
|
567 |
-
#: includes/class-freemius.php:
|
568 |
msgid "Site successfully opted in."
|
569 |
msgstr ""
|
570 |
|
571 |
-
#: includes/class-freemius.php:
|
572 |
msgid "Awesome"
|
573 |
msgstr ""
|
574 |
|
575 |
-
#: includes/class-freemius.php:
|
576 |
msgid "We appreciate your help in making the %s better by letting us track some usage data."
|
577 |
msgstr ""
|
578 |
|
579 |
-
#: includes/class-freemius.php:
|
580 |
msgid "Thank you!"
|
581 |
msgstr ""
|
582 |
|
583 |
-
#: includes/class-freemius.php:
|
584 |
msgid "We will no longer be sending any usage data of %s on %s to %s."
|
585 |
msgstr ""
|
586 |
|
587 |
-
#: includes/class-freemius.php:
|
588 |
msgid "Please check your mailbox, you should receive an email via %s to confirm the ownership change. From security reasons, you must confirm the change within the next 15 min. If you cannot find the email, please check your spam folder."
|
589 |
msgstr ""
|
590 |
|
591 |
-
#: includes/class-freemius.php:
|
592 |
msgid "Thanks for confirming the ownership change. An email was just sent to %s for final approval."
|
593 |
msgstr ""
|
594 |
|
595 |
-
#: includes/class-freemius.php:
|
596 |
msgid "%s is the new owner of the account."
|
597 |
msgstr ""
|
598 |
|
599 |
-
#: includes/class-freemius.php:
|
600 |
msgctxt "as congratulations"
|
601 |
msgid "Congrats"
|
602 |
msgstr ""
|
603 |
|
604 |
-
#: includes/class-freemius.php:
|
605 |
msgid "Your email was successfully updated. You should receive an email with confirmation instructions in few moments."
|
606 |
msgstr ""
|
607 |
|
608 |
-
#: includes/class-freemius.php:
|
609 |
msgid "Please provide your full name."
|
610 |
msgstr ""
|
611 |
|
612 |
-
#: includes/class-freemius.php:
|
613 |
msgid "Your name was successfully updated."
|
614 |
msgstr ""
|
615 |
|
616 |
-
#: includes/class-freemius.php:
|
617 |
msgid "You have successfully updated your %s."
|
618 |
msgstr ""
|
619 |
|
620 |
-
#: includes/class-freemius.php:
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
621 |
msgid "Just letting you know that the add-ons information of %s is being pulled from an external server."
|
622 |
msgstr ""
|
623 |
|
624 |
-
#: includes/class-freemius.php:
|
625 |
msgctxt "advance notice of something that will need attention."
|
626 |
msgid "Heads up"
|
627 |
msgstr ""
|
628 |
|
629 |
-
#: includes/class-freemius.php:
|
630 |
msgctxt "exclamation"
|
631 |
msgid "Hey"
|
632 |
msgstr ""
|
633 |
|
634 |
-
#: includes/class-freemius.php:
|
635 |
msgid "How do you like %s so far? Test all our %s premium features with a %d-day free trial."
|
636 |
msgstr ""
|
637 |
|
638 |
-
#: includes/class-freemius.php:
|
639 |
msgid "No commitment for %s days - cancel anytime!"
|
640 |
msgstr ""
|
641 |
|
642 |
-
#: includes/class-freemius.php:
|
643 |
msgid "No credit card required"
|
644 |
msgstr ""
|
645 |
|
646 |
-
#: includes/class-freemius.php:
|
647 |
msgctxt "call to action"
|
648 |
msgid "Start free trial"
|
649 |
msgstr ""
|
650 |
|
651 |
-
#: includes/class-freemius.php:
|
652 |
msgid "Hey there, did you know that %s has an affiliate program? If you like the %s you can become our ambassador and earn some cash!"
|
653 |
msgstr ""
|
654 |
|
655 |
-
#: includes/class-freemius.php:
|
656 |
msgid "Learn more"
|
657 |
msgstr ""
|
658 |
|
659 |
-
#: includes/class-freemius.php:
|
660 |
msgid "Activate License"
|
661 |
msgstr ""
|
662 |
|
663 |
-
#: includes/class-freemius.php:
|
664 |
msgid "Change License"
|
665 |
msgstr ""
|
666 |
|
667 |
-
#: includes/class-freemius.php:
|
668 |
msgid "Opt Out"
|
669 |
msgstr ""
|
670 |
|
671 |
-
#: includes/class-freemius.php:
|
672 |
msgid "Opt In"
|
673 |
msgstr ""
|
674 |
|
675 |
-
#: includes/class-freemius.php:
|
676 |
msgid " The paid version of %1$s is already installed. Please activate it to start benefiting the %2$s features. %3$s"
|
677 |
msgstr ""
|
678 |
|
679 |
-
#: includes/class-freemius.php:
|
680 |
msgid "Activate %s features"
|
681 |
msgstr ""
|
682 |
|
683 |
-
#: includes/class-freemius.php:
|
684 |
msgid "Please follow these steps to complete the upgrade"
|
685 |
msgstr ""
|
686 |
|
687 |
-
#: includes/class-freemius.php:
|
688 |
msgid "Download the latest %s version"
|
689 |
msgstr ""
|
690 |
|
691 |
-
#: includes/class-freemius.php:
|
692 |
msgid "Upload and activate the downloaded version"
|
693 |
msgstr ""
|
694 |
|
695 |
-
#: includes/class-freemius.php:
|
696 |
msgid "How to upload and activate?"
|
697 |
msgstr ""
|
698 |
|
699 |
-
#: includes/class-freemius.php:
|
700 |
msgid "%sClick here%s to choose the sites where you'd like to activate the license on."
|
701 |
msgstr ""
|
702 |
|
703 |
-
#: includes/class-freemius.php:
|
704 |
msgid "Auto installation only works for opted-in users."
|
705 |
msgstr ""
|
706 |
|
707 |
-
#: includes/class-freemius.php:
|
708 |
msgid "Invalid module ID."
|
709 |
msgstr ""
|
710 |
|
711 |
-
#: includes/class-freemius.php:
|
712 |
msgid "Premium version already active."
|
713 |
msgstr ""
|
714 |
|
715 |
-
#: includes/class-freemius.php:
|
716 |
msgid "You do not have a valid license to access the premium version."
|
717 |
msgstr ""
|
718 |
|
719 |
-
#: includes/class-freemius.php:
|
720 |
msgid "Plugin is a \"Serviceware\" which means it does not have a premium code version."
|
721 |
msgstr ""
|
722 |
|
723 |
-
#: includes/class-freemius.php:
|
724 |
msgid "Premium add-on version already installed."
|
725 |
msgstr ""
|
726 |
|
727 |
-
#: includes/class-freemius.php:
|
728 |
msgid "View paid features"
|
729 |
msgstr ""
|
730 |
|
731 |
-
#: includes/class-freemius.php:
|
732 |
msgid "Thank you so much for using %s and its add-ons!"
|
733 |
msgstr ""
|
734 |
|
735 |
-
#: includes/class-freemius.php:
|
736 |
msgid "Thank you so much for using %s!"
|
737 |
msgstr ""
|
738 |
|
739 |
-
#: includes/class-freemius.php:
|
740 |
msgid "You've already opted-in to our usage-tracking, which helps us keep improving the %s."
|
741 |
msgstr ""
|
742 |
|
743 |
-
#: includes/class-freemius.php:
|
744 |
msgid "Thank you so much for using our products!"
|
745 |
msgstr ""
|
746 |
|
747 |
-
#: includes/class-freemius.php:
|
748 |
msgid "You've already opted-in to our usage-tracking, which helps us keep improving them."
|
749 |
msgstr ""
|
750 |
|
751 |
-
#: includes/class-freemius.php:
|
752 |
msgid "%s and its add-ons"
|
753 |
msgstr ""
|
754 |
|
755 |
-
#: includes/class-freemius.php:
|
756 |
msgid "Products"
|
757 |
msgstr ""
|
758 |
|
759 |
-
#: includes/class-freemius.php:
|
760 |
msgid "Yes"
|
761 |
msgstr ""
|
762 |
|
763 |
-
#: includes/class-freemius.php:
|
764 |
msgid "send me security & feature updates, educational content and offers."
|
765 |
msgstr ""
|
766 |
|
767 |
-
#: includes/class-freemius.php:
|
768 |
msgid "No"
|
769 |
msgstr ""
|
770 |
|
771 |
-
#: includes/class-freemius.php:
|
772 |
msgid "do %sNOT%s send me security & feature updates, educational content and offers."
|
773 |
msgstr ""
|
774 |
|
775 |
-
#: includes/class-freemius.php:
|
776 |
msgid "Due to the new %sEU General Data Protection Regulation (GDPR)%s compliance requirements it is required that you provide your explicit consent, again, confirming that you are onboard :-)"
|
777 |
msgstr ""
|
778 |
|
779 |
-
#: includes/class-freemius.php:
|
780 |
msgid "Please let us know if you'd like us to contact you for security & feature updates, educational content, and occasional offers:"
|
781 |
msgstr ""
|
782 |
|
783 |
-
#: includes/class-freemius.php:
|
784 |
msgid "License key is empty."
|
785 |
msgstr ""
|
786 |
|
@@ -808,314 +832,314 @@ msgstr ""
|
|
808 |
msgid "Important Upgrade Notice:"
|
809 |
msgstr ""
|
810 |
|
811 |
-
#: includes/class-fs-plugin-updater.php:
|
812 |
msgid "Installing plugin: %s"
|
813 |
msgstr ""
|
814 |
|
815 |
-
#: includes/class-fs-plugin-updater.php:
|
816 |
msgid "Unable to connect to the filesystem. Please confirm your credentials."
|
817 |
msgstr ""
|
818 |
|
819 |
-
#: includes/class-fs-plugin-updater.php:
|
820 |
msgid "The remote plugin package does not contain a folder with the desired slug and renaming did not work."
|
821 |
msgstr ""
|
822 |
|
823 |
-
#: includes/fs-plugin-info-dialog.php:
|
824 |
msgid "Purchase More"
|
825 |
msgstr ""
|
826 |
|
827 |
-
#: includes/fs-plugin-info-dialog.php:
|
828 |
msgctxt "verb"
|
829 |
msgid "Purchase"
|
830 |
msgstr ""
|
831 |
|
832 |
-
#: includes/fs-plugin-info-dialog.php:
|
833 |
msgid "Start my free %s"
|
834 |
msgstr ""
|
835 |
|
836 |
-
#: includes/fs-plugin-info-dialog.php:
|
837 |
msgid "Install Free Version Update Now"
|
838 |
msgstr ""
|
839 |
|
840 |
-
#: includes/fs-plugin-info-dialog.php:
|
841 |
msgid "Install Update Now"
|
842 |
msgstr ""
|
843 |
|
844 |
-
#: includes/fs-plugin-info-dialog.php:
|
845 |
msgid "Install Free Version Now"
|
846 |
msgstr ""
|
847 |
|
848 |
-
#: includes/fs-plugin-info-dialog.php:
|
849 |
msgid "Install Now"
|
850 |
msgstr ""
|
851 |
|
852 |
-
#: includes/fs-plugin-info-dialog.php:
|
853 |
msgctxt "as download latest version"
|
854 |
msgid "Download Latest Free Version"
|
855 |
msgstr ""
|
856 |
|
857 |
-
#: includes/fs-plugin-info-dialog.php:
|
858 |
msgctxt "as download latest version"
|
859 |
msgid "Download Latest"
|
860 |
msgstr ""
|
861 |
|
862 |
-
#: includes/fs-plugin-info-dialog.php:
|
863 |
msgid "Activate this add-on"
|
864 |
msgstr ""
|
865 |
|
866 |
-
#: includes/fs-plugin-info-dialog.php:
|
867 |
msgid "Activate Free Version"
|
868 |
msgstr ""
|
869 |
|
870 |
-
#: includes/fs-plugin-info-dialog.php:
|
871 |
msgid "Activate"
|
872 |
msgstr ""
|
873 |
|
874 |
-
#: includes/fs-plugin-info-dialog.php:
|
875 |
msgctxt "Plugin installer section title"
|
876 |
msgid "Description"
|
877 |
msgstr ""
|
878 |
|
879 |
-
#: includes/fs-plugin-info-dialog.php:
|
880 |
msgctxt "Plugin installer section title"
|
881 |
msgid "Installation"
|
882 |
msgstr ""
|
883 |
|
884 |
-
#: includes/fs-plugin-info-dialog.php:
|
885 |
msgctxt "Plugin installer section title"
|
886 |
msgid "FAQ"
|
887 |
msgstr ""
|
888 |
|
889 |
-
#: includes/fs-plugin-info-dialog.php:
|
890 |
msgid "Screenshots"
|
891 |
msgstr ""
|
892 |
|
893 |
-
#: includes/fs-plugin-info-dialog.php:
|
894 |
msgctxt "Plugin installer section title"
|
895 |
msgid "Changelog"
|
896 |
msgstr ""
|
897 |
|
898 |
-
#: includes/fs-plugin-info-dialog.php:
|
899 |
msgctxt "Plugin installer section title"
|
900 |
msgid "Reviews"
|
901 |
msgstr ""
|
902 |
|
903 |
-
#: includes/fs-plugin-info-dialog.php:
|
904 |
msgctxt "Plugin installer section title"
|
905 |
msgid "Other Notes"
|
906 |
msgstr ""
|
907 |
|
908 |
-
#: includes/fs-plugin-info-dialog.php:
|
909 |
msgctxt "Plugin installer section title"
|
910 |
msgid "Features & Pricing"
|
911 |
msgstr ""
|
912 |
|
913 |
-
#: includes/fs-plugin-info-dialog.php:
|
914 |
msgid "Plugin Install"
|
915 |
msgstr ""
|
916 |
|
917 |
-
#: includes/fs-plugin-info-dialog.php:
|
918 |
msgctxt "e.g. Professional Plan"
|
919 |
msgid "%s Plan"
|
920 |
msgstr ""
|
921 |
|
922 |
-
#: includes/fs-plugin-info-dialog.php:
|
923 |
msgctxt "e.g. the best product"
|
924 |
msgid "Best"
|
925 |
msgstr ""
|
926 |
|
927 |
-
#: includes/fs-plugin-info-dialog.php:
|
928 |
msgctxt "as every month"
|
929 |
msgid "Monthly"
|
930 |
msgstr ""
|
931 |
|
932 |
-
#: includes/fs-plugin-info-dialog.php:
|
933 |
msgctxt "as once a year"
|
934 |
msgid "Annual"
|
935 |
msgstr ""
|
936 |
|
937 |
-
#: includes/fs-plugin-info-dialog.php:
|
938 |
msgid "Lifetime"
|
939 |
msgstr ""
|
940 |
|
941 |
-
#: includes/fs-plugin-info-dialog.php:
|
942 |
msgctxt "e.g. billed monthly"
|
943 |
msgid "Billed %s"
|
944 |
msgstr ""
|
945 |
|
946 |
-
#: includes/fs-plugin-info-dialog.php:
|
947 |
msgctxt "as once a year"
|
948 |
msgid "Annually"
|
949 |
msgstr ""
|
950 |
|
951 |
-
#: includes/fs-plugin-info-dialog.php:
|
952 |
msgctxt "as once a year"
|
953 |
msgid "Once"
|
954 |
msgstr ""
|
955 |
|
956 |
-
#: includes/fs-plugin-info-dialog.php:
|
957 |
msgid "Single Site License"
|
958 |
msgstr ""
|
959 |
|
960 |
-
#: includes/fs-plugin-info-dialog.php:
|
961 |
msgid "Unlimited Licenses"
|
962 |
msgstr ""
|
963 |
|
964 |
-
#: includes/fs-plugin-info-dialog.php:
|
965 |
msgid "Up to %s Sites"
|
966 |
msgstr ""
|
967 |
|
968 |
-
#: includes/fs-plugin-info-dialog.php:
|
969 |
msgctxt "as monthly period"
|
970 |
msgid "mo"
|
971 |
msgstr ""
|
972 |
|
973 |
-
#: includes/fs-plugin-info-dialog.php:
|
974 |
msgctxt "as annual period"
|
975 |
msgid "year"
|
976 |
msgstr ""
|
977 |
|
978 |
-
#: includes/fs-plugin-info-dialog.php:
|
979 |
msgctxt "noun"
|
980 |
msgid "Price"
|
981 |
msgstr ""
|
982 |
|
983 |
-
#: includes/fs-plugin-info-dialog.php:
|
984 |
msgid "Save %s"
|
985 |
msgstr ""
|
986 |
|
987 |
-
#: includes/fs-plugin-info-dialog.php:
|
988 |
msgid "No commitment for %s - cancel anytime"
|
989 |
msgstr ""
|
990 |
|
991 |
-
#: includes/fs-plugin-info-dialog.php:
|
992 |
msgid "After your free %s, pay as little as %s"
|
993 |
msgstr ""
|
994 |
|
995 |
-
#: includes/fs-plugin-info-dialog.php:
|
996 |
msgid "Details"
|
997 |
msgstr ""
|
998 |
|
999 |
-
#: includes/fs-plugin-info-dialog.php:
|
1000 |
msgctxt "product version"
|
1001 |
msgid "Version"
|
1002 |
msgstr ""
|
1003 |
|
1004 |
-
#: includes/fs-plugin-info-dialog.php:
|
1005 |
msgctxt "as the plugin author"
|
1006 |
msgid "Author"
|
1007 |
msgstr ""
|
1008 |
|
1009 |
-
#: includes/fs-plugin-info-dialog.php:
|
1010 |
msgid "Last Updated"
|
1011 |
msgstr ""
|
1012 |
|
1013 |
-
#: includes/fs-plugin-info-dialog.php:
|
1014 |
msgctxt "x-ago"
|
1015 |
msgid "%s ago"
|
1016 |
msgstr ""
|
1017 |
|
1018 |
-
#: includes/fs-plugin-info-dialog.php:
|
1019 |
msgid "Requires WordPress Version"
|
1020 |
msgstr ""
|
1021 |
|
1022 |
-
#: includes/fs-plugin-info-dialog.php:
|
1023 |
msgid "%s or higher"
|
1024 |
msgstr ""
|
1025 |
|
1026 |
-
#: includes/fs-plugin-info-dialog.php:
|
1027 |
msgid "Compatible up to"
|
1028 |
msgstr ""
|
1029 |
|
1030 |
-
#: includes/fs-plugin-info-dialog.php:
|
1031 |
msgid "Downloaded"
|
1032 |
msgstr ""
|
1033 |
|
1034 |
-
#: includes/fs-plugin-info-dialog.php:
|
1035 |
msgid "%s time"
|
1036 |
msgstr ""
|
1037 |
|
1038 |
-
#: includes/fs-plugin-info-dialog.php:
|
1039 |
msgid "%s times"
|
1040 |
msgstr ""
|
1041 |
|
1042 |
-
#: includes/fs-plugin-info-dialog.php:
|
1043 |
msgid "WordPress.org Plugin Page"
|
1044 |
msgstr ""
|
1045 |
|
1046 |
-
#: includes/fs-plugin-info-dialog.php:
|
1047 |
msgid "Plugin Homepage"
|
1048 |
msgstr ""
|
1049 |
|
1050 |
-
#: includes/fs-plugin-info-dialog.php:
|
1051 |
msgid "Donate to this plugin"
|
1052 |
msgstr ""
|
1053 |
|
1054 |
-
#: includes/fs-plugin-info-dialog.php:
|
1055 |
msgid "Average Rating"
|
1056 |
msgstr ""
|
1057 |
|
1058 |
-
#: includes/fs-plugin-info-dialog.php:
|
1059 |
msgid "based on %s"
|
1060 |
msgstr ""
|
1061 |
|
1062 |
-
#: includes/fs-plugin-info-dialog.php:
|
1063 |
msgid "%s rating"
|
1064 |
msgstr ""
|
1065 |
|
1066 |
-
#: includes/fs-plugin-info-dialog.php:
|
1067 |
msgid "%s ratings"
|
1068 |
msgstr ""
|
1069 |
|
1070 |
-
#: includes/fs-plugin-info-dialog.php:
|
1071 |
msgid "%s star"
|
1072 |
msgstr ""
|
1073 |
|
1074 |
-
#: includes/fs-plugin-info-dialog.php:
|
1075 |
msgid "%s stars"
|
1076 |
msgstr ""
|
1077 |
|
1078 |
-
#: includes/fs-plugin-info-dialog.php:
|
1079 |
msgid "Click to see reviews that provided a rating of %s"
|
1080 |
msgstr ""
|
1081 |
|
1082 |
-
#: includes/fs-plugin-info-dialog.php:
|
1083 |
msgid "Contributors"
|
1084 |
msgstr ""
|
1085 |
|
1086 |
-
#: includes/fs-plugin-info-dialog.php:
|
1087 |
msgid "Warning"
|
1088 |
msgstr ""
|
1089 |
|
1090 |
-
#: includes/fs-plugin-info-dialog.php:
|
1091 |
msgid "This plugin has not been tested with your current version of WordPress."
|
1092 |
msgstr ""
|
1093 |
|
1094 |
-
#: includes/fs-plugin-info-dialog.php:
|
1095 |
msgid "This plugin has not been marked as compatible with your version of WordPress."
|
1096 |
msgstr ""
|
1097 |
|
1098 |
-
#: includes/fs-plugin-info-dialog.php:
|
1099 |
msgid "Paid add-on must be deployed to Freemius."
|
1100 |
msgstr ""
|
1101 |
|
1102 |
-
#: includes/fs-plugin-info-dialog.php:
|
1103 |
msgid "Add-on must be deployed to WordPress.org or Freemius."
|
1104 |
msgstr ""
|
1105 |
|
1106 |
-
#: includes/fs-plugin-info-dialog.php:
|
1107 |
msgid "Newer Version (%s) Installed"
|
1108 |
msgstr ""
|
1109 |
|
1110 |
-
#: includes/fs-plugin-info-dialog.php:
|
1111 |
msgid "Newer Free Version (%s) Installed"
|
1112 |
msgstr ""
|
1113 |
|
1114 |
-
#: includes/fs-plugin-info-dialog.php:
|
1115 |
msgid "Latest Version Installed"
|
1116 |
msgstr ""
|
1117 |
|
1118 |
-
#: includes/fs-plugin-info-dialog.php:
|
1119 |
msgid "Latest Free Version Installed"
|
1120 |
msgstr ""
|
1121 |
|
@@ -1401,6 +1425,14 @@ msgstr ""
|
|
1401 |
msgid "Deactivating your license will block all premium features, but will enable activating the license on another site. Are you sure you want to proceed?"
|
1402 |
msgstr ""
|
1403 |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
1404 |
#: templates/add-ons.php:38
|
1405 |
msgid "View details"
|
1406 |
msgstr ""
|
@@ -1530,7 +1562,7 @@ msgstr ""
|
|
1530 |
msgid "Can't find your license key?"
|
1531 |
msgstr ""
|
1532 |
|
1533 |
-
#: templates/connect.php:323, templates/connect.php:
|
1534 |
msgctxt "verb"
|
1535 |
msgid "Skip"
|
1536 |
msgstr ""
|
@@ -1587,40 +1619,40 @@ msgstr ""
|
|
1587 |
msgid "Title, slug, version, and is active"
|
1588 |
msgstr ""
|
1589 |
|
1590 |
-
#: templates/connect.php:
|
1591 |
msgid "The %1$s will be periodically sending data to %2$s to check for security and feature updates, and verify the validity of your license."
|
1592 |
msgstr ""
|
1593 |
|
1594 |
-
#: templates/connect.php:
|
1595 |
msgid "What permissions are being granted?"
|
1596 |
msgstr ""
|
1597 |
|
1598 |
-
#: templates/connect.php:
|
1599 |
msgid "Don't have a license key?"
|
1600 |
msgstr ""
|
1601 |
|
1602 |
-
#: templates/connect.php:
|
1603 |
msgid "Have a license key?"
|
1604 |
msgstr ""
|
1605 |
|
1606 |
-
#: templates/connect.php:
|
1607 |
msgid "Privacy Policy"
|
1608 |
msgstr ""
|
1609 |
|
1610 |
-
#: templates/connect.php:
|
1611 |
msgid "License Agreement"
|
1612 |
msgstr ""
|
1613 |
|
1614 |
-
#: templates/connect.php:
|
1615 |
msgid "Terms of Service"
|
1616 |
msgstr ""
|
1617 |
|
1618 |
-
#: templates/connect.php:
|
1619 |
msgctxt "as in the process of sending an email"
|
1620 |
msgid "Sending email"
|
1621 |
msgstr ""
|
1622 |
|
1623 |
-
#: templates/connect.php:
|
1624 |
msgctxt "as activating plugin"
|
1625 |
msgid "Activating"
|
1626 |
msgstr ""
|
@@ -2177,11 +2209,11 @@ msgstr ""
|
|
2177 |
msgid "Please provide details on how you intend to promote %s (please be as specific as possible)."
|
2178 |
msgstr ""
|
2179 |
|
2180 |
-
#: templates/forms/affiliation.php:
|
2181 |
msgid "Cancel"
|
2182 |
msgstr ""
|
2183 |
|
2184 |
-
#: templates/forms/affiliation.php:
|
2185 |
msgid "Become an affiliate"
|
2186 |
msgstr ""
|
2187 |
|
16 |
"X-Poedit-SourceCharset: UTF-8\n"
|
17 |
"Plural-Forms: nplurals=2; plural=(n != 1);\n"
|
18 |
|
19 |
+
#: includes/class-freemius.php:1912, templates/account.php:910
|
20 |
msgid "An update to a Beta version will replace your installed version of %s with the latest Beta release - use with caution, and not on production sites. You have been warned."
|
21 |
msgstr ""
|
22 |
|
23 |
+
#: includes/class-freemius.php:1919
|
24 |
msgid "Would you like to proceed with the update?"
|
25 |
msgstr ""
|
26 |
|
27 |
+
#: includes/class-freemius.php:2131
|
28 |
msgid "Freemius SDK couldn't find the plugin's main file. Please contact sdk@freemius.com with the current error."
|
29 |
msgstr ""
|
30 |
|
31 |
+
#: includes/class-freemius.php:2133
|
32 |
msgid "Error"
|
33 |
msgstr ""
|
34 |
|
35 |
+
#: includes/class-freemius.php:2533
|
36 |
msgid "I found a better %s"
|
37 |
msgstr ""
|
38 |
|
39 |
+
#: includes/class-freemius.php:2535
|
40 |
msgid "What's the %s's name?"
|
41 |
msgstr ""
|
42 |
|
43 |
+
#: includes/class-freemius.php:2541
|
44 |
msgid "It's a temporary %s. I'm just debugging an issue."
|
45 |
msgstr ""
|
46 |
|
47 |
+
#: includes/class-freemius.php:2543
|
48 |
msgid "Deactivation"
|
49 |
msgstr ""
|
50 |
|
51 |
+
#: includes/class-freemius.php:2544
|
52 |
msgid "Theme Switch"
|
53 |
msgstr ""
|
54 |
|
55 |
+
#: includes/class-freemius.php:2553, templates/forms/resend-key.php:24, templates/forms/user-change.php:29
|
56 |
msgid "Other"
|
57 |
msgstr ""
|
58 |
|
59 |
+
#: includes/class-freemius.php:2561
|
60 |
msgid "I no longer need the %s"
|
61 |
msgstr ""
|
62 |
|
63 |
+
#: includes/class-freemius.php:2568
|
64 |
msgid "I only needed the %s for a short period"
|
65 |
msgstr ""
|
66 |
|
67 |
+
#: includes/class-freemius.php:2574
|
68 |
msgid "The %s broke my site"
|
69 |
msgstr ""
|
70 |
|
71 |
+
#: includes/class-freemius.php:2581
|
72 |
msgid "The %s suddenly stopped working"
|
73 |
msgstr ""
|
74 |
|
75 |
+
#: includes/class-freemius.php:2591
|
76 |
msgid "I can't pay for it anymore"
|
77 |
msgstr ""
|
78 |
|
79 |
+
#: includes/class-freemius.php:2593
|
80 |
msgid "What price would you feel comfortable paying?"
|
81 |
msgstr ""
|
82 |
|
83 |
+
#: includes/class-freemius.php:2599
|
84 |
msgid "I don't like to share my information with you"
|
85 |
msgstr ""
|
86 |
|
87 |
+
#: includes/class-freemius.php:2620
|
88 |
msgid "The %s didn't work"
|
89 |
msgstr ""
|
90 |
|
91 |
+
#: includes/class-freemius.php:2630
|
92 |
msgid "I couldn't understand how to make it work"
|
93 |
msgstr ""
|
94 |
|
95 |
+
#: includes/class-freemius.php:2638
|
96 |
msgid "The %s is great, but I need specific feature that you don't support"
|
97 |
msgstr ""
|
98 |
|
99 |
+
#: includes/class-freemius.php:2640
|
100 |
msgid "What feature?"
|
101 |
msgstr ""
|
102 |
|
103 |
+
#: includes/class-freemius.php:2644
|
104 |
msgid "The %s is not working"
|
105 |
msgstr ""
|
106 |
|
107 |
+
#: includes/class-freemius.php:2646
|
108 |
msgid "Kindly share what didn't work so we can fix it for future users..."
|
109 |
msgstr ""
|
110 |
|
111 |
+
#: includes/class-freemius.php:2650
|
112 |
msgid "It's not what I was looking for"
|
113 |
msgstr ""
|
114 |
|
115 |
+
#: includes/class-freemius.php:2652
|
116 |
msgid "What you've been looking for?"
|
117 |
msgstr ""
|
118 |
|
119 |
+
#: includes/class-freemius.php:2656
|
120 |
msgid "The %s didn't work as expected"
|
121 |
msgstr ""
|
122 |
|
123 |
+
#: includes/class-freemius.php:2658
|
124 |
msgid "What did you expect?"
|
125 |
msgstr ""
|
126 |
|
127 |
+
#: includes/class-freemius.php:3513, templates/debug.php:20
|
128 |
msgid "Freemius Debug"
|
129 |
msgstr ""
|
130 |
|
131 |
+
#: includes/class-freemius.php:4265
|
132 |
msgid "I don't know what is cURL or how to install it, help me!"
|
133 |
msgstr ""
|
134 |
|
135 |
+
#: includes/class-freemius.php:4267
|
136 |
msgid "We'll make sure to contact your hosting company and resolve the issue. You will get a follow-up email to %s once we have an update."
|
137 |
msgstr ""
|
138 |
|
139 |
+
#: includes/class-freemius.php:4274
|
140 |
msgid "Great, please install cURL and enable it in your php.ini file. In addition, search for the 'disable_functions' directive in your php.ini file and remove any disabled methods starting with 'curl_'. To make sure it was successfully activated, use 'phpinfo()'. Once activated, deactivate the %s and reactivate it back again."
|
141 |
msgstr ""
|
142 |
|
143 |
+
#: includes/class-freemius.php:4379
|
144 |
msgid "Yes - do your thing"
|
145 |
msgstr ""
|
146 |
|
147 |
+
#: includes/class-freemius.php:4384
|
148 |
msgid "No - just deactivate"
|
149 |
msgstr ""
|
150 |
|
151 |
+
#: includes/class-freemius.php:4429, includes/class-freemius.php:4923, includes/class-freemius.php:6182, includes/class-freemius.php:13357, includes/class-freemius.php:14075, includes/class-freemius.php:17526, includes/class-freemius.php:17631, includes/class-freemius.php:17806, includes/class-freemius.php:20040, includes/class-freemius.php:20398, includes/class-freemius.php:20408, includes/class-freemius.php:21079, includes/class-freemius.php:21985, includes/class-freemius.php:22118, includes/class-freemius.php:22274, templates/add-ons.php:57
|
152 |
msgctxt "exclamation"
|
153 |
msgid "Oops"
|
154 |
msgstr ""
|
155 |
|
156 |
+
#: includes/class-freemius.php:4498
|
157 |
msgid "Thank for giving us the chance to fix it! A message was just sent to our technical staff. We will get back to you as soon as we have an update to %s. Appreciate your patience."
|
158 |
msgstr ""
|
159 |
|
160 |
+
#: includes/class-freemius.php:4920
|
161 |
msgctxt "addonX cannot run without pluginY"
|
162 |
msgid "%s cannot run without %s."
|
163 |
msgstr ""
|
164 |
|
165 |
+
#: includes/class-freemius.php:4921
|
166 |
msgctxt "addonX cannot run..."
|
167 |
msgid "%s cannot run without the plugin."
|
168 |
msgstr ""
|
169 |
|
170 |
+
#: includes/class-freemius.php:5120, includes/class-freemius.php:5145, includes/class-freemius.php:21150
|
171 |
msgid "Unexpected API error. Please contact the %s's author with the following error."
|
172 |
msgstr ""
|
173 |
|
174 |
+
#: includes/class-freemius.php:5848
|
175 |
msgid "Premium %s version was successfully activated."
|
176 |
msgstr ""
|
177 |
|
178 |
+
#: includes/class-freemius.php:5860, includes/class-freemius.php:7762
|
179 |
msgctxt "Used to express elation, enthusiasm, or triumph (especially in electronic communication)."
|
180 |
msgid "W00t"
|
181 |
msgstr ""
|
182 |
|
183 |
+
#: includes/class-freemius.php:5875
|
184 |
msgid "You have a %s license."
|
185 |
msgstr ""
|
186 |
|
187 |
+
#: includes/class-freemius.php:5879, includes/class-freemius.php:16925, includes/class-freemius.php:16936, includes/class-freemius.php:20309, includes/class-freemius.php:20659, includes/class-freemius.php:20728, includes/class-freemius.php:20900
|
188 |
msgctxt "interjection expressing joy or exuberance"
|
189 |
msgid "Yee-haw"
|
190 |
msgstr ""
|
191 |
|
192 |
+
#: includes/class-freemius.php:6165
|
193 |
msgid "%s free trial was successfully cancelled. Since the add-on is premium only it was automatically deactivated. If you like to use it in the future, you'll have to purchase a license."
|
194 |
msgstr ""
|
195 |
|
196 |
+
#: includes/class-freemius.php:6169
|
197 |
msgid "%s is a premium only add-on. You have to purchase a license first before activating the plugin."
|
198 |
msgstr ""
|
199 |
|
200 |
+
#: includes/class-freemius.php:6178, templates/add-ons.php:186, templates/account/partials/addon.php:381
|
201 |
msgid "More information about %s"
|
202 |
msgstr ""
|
203 |
|
204 |
+
#: includes/class-freemius.php:6179
|
205 |
msgid "Purchase License"
|
206 |
msgstr ""
|
207 |
|
208 |
+
#: includes/class-freemius.php:7118, templates/connect.php:171
|
209 |
msgid "You should receive an activation email for %s to your mailbox at %s. Please make sure you click the activation button in that email to %s."
|
210 |
msgstr ""
|
211 |
|
212 |
+
#: includes/class-freemius.php:7122
|
213 |
msgid "start the trial"
|
214 |
msgstr ""
|
215 |
|
216 |
+
#: includes/class-freemius.php:7123, templates/connect.php:175
|
217 |
msgid "complete the install"
|
218 |
msgstr ""
|
219 |
|
220 |
+
#: includes/class-freemius.php:7241
|
221 |
msgid "You are just one step away - %s"
|
222 |
msgstr ""
|
223 |
|
224 |
+
#: includes/class-freemius.php:7244
|
225 |
msgctxt "%s - plugin name. As complete \"PluginX\" activation now"
|
226 |
msgid "Complete \"%s\" Activation Now"
|
227 |
msgstr ""
|
228 |
|
229 |
+
#: includes/class-freemius.php:7322
|
230 |
msgid "We made a few tweaks to the %s, %s"
|
231 |
msgstr ""
|
232 |
|
233 |
+
#: includes/class-freemius.php:7326
|
234 |
msgid "Opt in to make \"%s\" better!"
|
235 |
msgstr ""
|
236 |
|
237 |
+
#: includes/class-freemius.php:7761
|
238 |
msgid "The upgrade of %s was successfully completed."
|
239 |
msgstr ""
|
240 |
|
241 |
+
#: includes/class-freemius.php:10243, includes/class-fs-plugin-updater.php:1099, includes/class-fs-plugin-updater.php:1294, includes/class-fs-plugin-updater.php:1301, templates/auto-installation.php:32
|
242 |
msgid "Add-On"
|
243 |
msgstr ""
|
244 |
|
245 |
+
#: includes/class-freemius.php:10245, templates/account.php:392, templates/account.php:400, templates/debug.php:358, templates/debug.php:549
|
246 |
msgid "Plugin"
|
247 |
msgstr ""
|
248 |
|
249 |
+
#: includes/class-freemius.php:10246, templates/account.php:393, templates/account.php:401, templates/debug.php:358, templates/debug.php:549, templates/forms/deactivation/form.php:71
|
250 |
msgid "Theme"
|
251 |
msgstr ""
|
252 |
|
253 |
+
#: includes/class-freemius.php:13176
|
254 |
+
msgid "An unknown error has occurred while trying to toggle the license's white-label mode."
|
255 |
+
msgstr ""
|
256 |
+
|
257 |
+
#: includes/class-freemius.php:13190
|
258 |
+
msgid "Your %s license was flagged as white-labeled to hide sensitive information from the WP Admin (e.g. your email, license key, prices, billing address & invoices). If you ever wish to revert it back, you can easily do it through your %s. If this was a mistake you can also %s."
|
259 |
+
msgstr ""
|
260 |
+
|
261 |
+
#: includes/class-freemius.php:13195
|
262 |
+
msgid "User Dashboard"
|
263 |
+
msgstr ""
|
264 |
+
|
265 |
+
#: includes/class-freemius.php:13196
|
266 |
+
msgid "revert it now"
|
267 |
+
msgstr ""
|
268 |
+
|
269 |
+
#: includes/class-freemius.php:13255
|
270 |
msgid "An unknown error has occurred while trying to set the user's beta mode."
|
271 |
msgstr ""
|
272 |
|
273 |
+
#: includes/class-freemius.php:13328
|
274 |
msgid "Invalid new user ID or email address."
|
275 |
msgstr ""
|
276 |
|
277 |
+
#: includes/class-freemius.php:13358, includes/class-freemius.php:22229
|
278 |
msgid "Sorry, we could not complete the email update. Another user with the same email is already registered."
|
279 |
msgstr ""
|
280 |
|
281 |
+
#: includes/class-freemius.php:13359, includes/class-freemius.php:22230
|
282 |
msgid "If you would like to give up the ownership of the %s's account to %s click the Change Ownership button."
|
283 |
msgstr ""
|
284 |
|
285 |
+
#: includes/class-freemius.php:13366, includes/class-freemius.php:22237
|
286 |
msgid "Change Ownership"
|
287 |
msgstr ""
|
288 |
|
289 |
+
#: includes/class-freemius.php:13942
|
290 |
msgid "Invalid site details collection."
|
291 |
msgstr ""
|
292 |
|
293 |
+
#: includes/class-freemius.php:14062
|
294 |
msgid "We couldn't find your email address in the system, are you sure it's the right address?"
|
295 |
msgstr ""
|
296 |
|
297 |
+
#: includes/class-freemius.php:14064
|
298 |
msgid "We can't see any active licenses associated with that email address, are you sure it's the right address?"
|
299 |
msgstr ""
|
300 |
|
301 |
+
#: includes/class-freemius.php:14338
|
302 |
msgid "Account is pending activation."
|
303 |
msgstr ""
|
304 |
|
305 |
+
#: includes/class-freemius.php:14450, templates/forms/premium-versions-upgrade-handler.php:47
|
306 |
msgid "Buy a license now"
|
307 |
msgstr ""
|
308 |
|
309 |
+
#: includes/class-freemius.php:14462, templates/forms/premium-versions-upgrade-handler.php:46
|
310 |
msgid "Renew your license now"
|
311 |
msgstr ""
|
312 |
|
313 |
+
#: includes/class-freemius.php:14466
|
314 |
msgid "%s to access version %s security & feature updates, and support."
|
315 |
msgstr ""
|
316 |
|
317 |
+
#: includes/class-freemius.php:16907
|
318 |
msgid "%s activation was successfully completed."
|
319 |
msgstr ""
|
320 |
|
321 |
+
#: includes/class-freemius.php:16921
|
322 |
msgid "Your account was successfully activated with the %s plan."
|
323 |
msgstr ""
|
324 |
|
325 |
+
#: includes/class-freemius.php:16932, includes/class-freemius.php:20724
|
326 |
msgid "Your trial has been successfully started."
|
327 |
msgstr ""
|
328 |
|
329 |
+
#: includes/class-freemius.php:17524, includes/class-freemius.php:17629, includes/class-freemius.php:17804
|
330 |
msgid "Couldn't activate %s."
|
331 |
msgstr ""
|
332 |
|
333 |
+
#: includes/class-freemius.php:17525, includes/class-freemius.php:17630, includes/class-freemius.php:17805
|
334 |
msgid "Please contact us with the following message:"
|
335 |
msgstr ""
|
336 |
|
337 |
+
#: includes/class-freemius.php:17626, templates/forms/data-debug-mode.php:162
|
338 |
msgid "An unknown error has occurred."
|
339 |
msgstr ""
|
340 |
|
341 |
+
#: includes/class-freemius.php:18162, includes/class-freemius.php:23310
|
342 |
msgid "Upgrade"
|
343 |
msgstr ""
|
344 |
|
345 |
+
#: includes/class-freemius.php:18168
|
346 |
msgid "Start Trial"
|
347 |
msgstr ""
|
348 |
|
349 |
+
#: includes/class-freemius.php:18170
|
350 |
msgid "Pricing"
|
351 |
msgstr ""
|
352 |
|
353 |
+
#: includes/class-freemius.php:18250, includes/class-freemius.php:18252
|
354 |
msgid "Affiliation"
|
355 |
msgstr ""
|
356 |
|
357 |
+
#: includes/class-freemius.php:18280, includes/class-freemius.php:18282, templates/account.php:240, templates/debug.php:324
|
358 |
msgid "Account"
|
359 |
msgstr ""
|
360 |
|
361 |
+
#: includes/class-freemius.php:18296, includes/class-freemius.php:18298, includes/customizer/class-fs-customizer-support-section.php:60
|
362 |
msgid "Contact Us"
|
363 |
msgstr ""
|
364 |
|
365 |
+
#: includes/class-freemius.php:18309, includes/class-freemius.php:18311, includes/class-freemius.php:23324, templates/account.php:119, templates/account/partials/addon.php:44
|
366 |
msgid "Add-Ons"
|
367 |
msgstr ""
|
368 |
|
369 |
+
#: includes/class-freemius.php:18345
|
370 |
msgctxt "ASCII arrow left icon"
|
371 |
msgid "←"
|
372 |
msgstr ""
|
373 |
|
374 |
+
#: includes/class-freemius.php:18345
|
375 |
msgctxt "ASCII arrow right icon"
|
376 |
msgid "➤"
|
377 |
msgstr ""
|
378 |
|
379 |
+
#: includes/class-freemius.php:18347, templates/pricing.php:109
|
380 |
msgctxt "noun"
|
381 |
msgid "Pricing"
|
382 |
msgstr ""
|
383 |
|
384 |
+
#: includes/class-freemius.php:18560, includes/customizer/class-fs-customizer-support-section.php:67
|
385 |
msgid "Support Forum"
|
386 |
msgstr ""
|
387 |
|
388 |
+
#: includes/class-freemius.php:19534
|
389 |
msgid "Your email has been successfully verified - you are AWESOME!"
|
390 |
msgstr ""
|
391 |
|
392 |
+
#: includes/class-freemius.php:19535
|
393 |
msgctxt "a positive response"
|
394 |
msgid "Right on"
|
395 |
msgstr ""
|
396 |
|
397 |
+
#: includes/class-freemius.php:20041
|
398 |
msgid "seems like the key you entered doesn't match our records."
|
399 |
msgstr ""
|
400 |
|
401 |
+
#: includes/class-freemius.php:20065
|
402 |
msgid "Debug mode was successfully enabled and will be automatically disabled in 60 min. You can also disable it earlier by clicking the \"Stop Debug\" link."
|
403 |
msgstr ""
|
404 |
|
405 |
+
#: includes/class-freemius.php:20300
|
406 |
msgid "Your %s Add-on plan was successfully upgraded."
|
407 |
msgstr ""
|
408 |
|
409 |
+
#: includes/class-freemius.php:20302
|
410 |
msgid "%s Add-on was successfully purchased."
|
411 |
msgstr ""
|
412 |
|
413 |
+
#: includes/class-freemius.php:20305
|
414 |
msgid "Download the latest version"
|
415 |
msgstr ""
|
416 |
|
417 |
+
#: includes/class-freemius.php:20391
|
418 |
msgid "Your server is blocking the access to Freemius' API, which is crucial for %1$s synchronization. Please contact your host to whitelist %2$s"
|
419 |
msgstr ""
|
420 |
|
421 |
+
#: includes/class-freemius.php:20397, includes/class-freemius.php:20407, includes/class-freemius.php:20859, includes/class-freemius.php:20948
|
422 |
msgid "Error received from the server:"
|
423 |
msgstr ""
|
424 |
|
425 |
+
#: includes/class-freemius.php:20407
|
426 |
msgid "It seems like one of the authentication parameters is wrong. Update your Public Key, Secret Key & User ID, and try again."
|
427 |
msgstr ""
|
428 |
|
429 |
+
#: includes/class-freemius.php:20621, includes/class-freemius.php:20864, includes/class-freemius.php:20919, includes/class-freemius.php:21026
|
430 |
msgctxt "something somebody says when they are thinking about what you have just said."
|
431 |
msgid "Hmm"
|
432 |
msgstr ""
|
433 |
|
434 |
+
#: includes/class-freemius.php:20634
|
435 |
msgid "It looks like you are still on the %s plan. If you did upgrade or change your plan, it's probably an issue on our side - sorry."
|
436 |
msgstr ""
|
437 |
|
438 |
+
#: includes/class-freemius.php:20635, templates/account.php:121, templates/add-ons.php:250, templates/account/partials/addon.php:46
|
439 |
msgctxt "trial period"
|
440 |
msgid "Trial"
|
441 |
msgstr ""
|
442 |
|
443 |
+
#: includes/class-freemius.php:20640
|
444 |
msgid "I have upgraded my account but when I try to Sync the License, the plan remains %s."
|
445 |
msgstr ""
|
446 |
|
447 |
+
#: includes/class-freemius.php:20644, includes/class-freemius.php:20703
|
448 |
msgid "Please contact us here"
|
449 |
msgstr ""
|
450 |
|
451 |
+
#: includes/class-freemius.php:20655
|
452 |
msgid "Your plan was successfully activated."
|
453 |
msgstr ""
|
454 |
|
455 |
+
#: includes/class-freemius.php:20656
|
456 |
msgid "Your plan was successfully upgraded."
|
457 |
msgstr ""
|
458 |
|
459 |
+
#: includes/class-freemius.php:20673
|
460 |
msgid "Your plan was successfully changed to %s."
|
461 |
msgstr ""
|
462 |
|
463 |
+
#: includes/class-freemius.php:20689
|
464 |
msgid "Your license has expired. You can still continue using the free %s forever."
|
465 |
msgstr ""
|
466 |
|
467 |
+
#: includes/class-freemius.php:20691
|
468 |
msgid "Your license has expired. %1$sUpgrade now%2$s to continue using the %3$s without interruptions."
|
469 |
msgstr ""
|
470 |
|
471 |
+
#: includes/class-freemius.php:20699
|
472 |
msgid "Your license has been cancelled. If you think it's a mistake, please contact support."
|
473 |
msgstr ""
|
474 |
|
475 |
+
#: includes/class-freemius.php:20712
|
476 |
msgid "Your license has expired. You can still continue using all the %s features, but you'll need to renew your license to continue getting updates and support."
|
477 |
msgstr ""
|
478 |
|
479 |
+
#: includes/class-freemius.php:20738
|
480 |
msgid "Your free trial has expired. You can still continue using all our free features."
|
481 |
msgstr ""
|
482 |
|
483 |
+
#: includes/class-freemius.php:20740
|
484 |
msgid "Your free trial has expired. %1$sUpgrade now%2$s to continue using the %3$s without interruptions."
|
485 |
msgstr ""
|
486 |
|
487 |
+
#: includes/class-freemius.php:20855
|
488 |
msgid "It looks like the license could not be activated."
|
489 |
msgstr ""
|
490 |
|
491 |
+
#: includes/class-freemius.php:20897
|
492 |
msgid "Your license was successfully activated."
|
493 |
msgstr ""
|
494 |
|
495 |
+
#: includes/class-freemius.php:20923
|
496 |
msgid "It looks like your site currently doesn't have an active license."
|
497 |
msgstr ""
|
498 |
|
499 |
+
#: includes/class-freemius.php:20947
|
500 |
msgid "It looks like the license deactivation failed."
|
501 |
msgstr ""
|
502 |
|
503 |
+
#: includes/class-freemius.php:20976
|
504 |
msgid "Your %s license was successfully deactivated."
|
505 |
msgstr ""
|
506 |
|
507 |
+
#: includes/class-freemius.php:20977
|
508 |
msgid "Your license was successfully deactivated, you are back to the %s plan."
|
509 |
msgstr ""
|
510 |
|
511 |
+
#: includes/class-freemius.php:20980
|
512 |
msgid "O.K"
|
513 |
msgstr ""
|
514 |
|
515 |
+
#: includes/class-freemius.php:21033
|
516 |
msgid "Seems like we are having some temporary issue with your subscription cancellation. Please try again in few minutes."
|
517 |
msgstr ""
|
518 |
|
519 |
+
#: includes/class-freemius.php:21042
|
520 |
msgid "Your subscription was successfully cancelled. Your %s plan license will expire in %s."
|
521 |
msgstr ""
|
522 |
|
523 |
+
#: includes/class-freemius.php:21084
|
524 |
msgid "You are already running the %s in a trial mode."
|
525 |
msgstr ""
|
526 |
|
527 |
+
#: includes/class-freemius.php:21095
|
528 |
msgid "You already utilized a trial before."
|
529 |
msgstr ""
|
530 |
|
531 |
+
#: includes/class-freemius.php:21109
|
532 |
msgid "Plan %s do not exist, therefore, can't start a trial."
|
533 |
msgstr ""
|
534 |
|
535 |
+
#: includes/class-freemius.php:21120
|
536 |
msgid "Plan %s does not support a trial period."
|
537 |
msgstr ""
|
538 |
|
539 |
+
#: includes/class-freemius.php:21131
|
540 |
msgid "None of the %s's plans supports a trial period."
|
541 |
msgstr ""
|
542 |
|
543 |
+
#: includes/class-freemius.php:21181
|
544 |
msgid "It looks like you are not in trial mode anymore so there's nothing to cancel :)"
|
545 |
msgstr ""
|
546 |
|
547 |
+
#: includes/class-freemius.php:21217
|
548 |
msgid "Seems like we are having some temporary issue with your trial cancellation. Please try again in few minutes."
|
549 |
msgstr ""
|
550 |
|
551 |
+
#: includes/class-freemius.php:21236
|
552 |
msgid "Your %s free trial was successfully cancelled."
|
553 |
msgstr ""
|
554 |
|
555 |
+
#: includes/class-freemius.php:21552
|
556 |
msgid "Version %s was released."
|
557 |
msgstr ""
|
558 |
|
559 |
+
#: includes/class-freemius.php:21552
|
560 |
msgid "Please download %s."
|
561 |
msgstr ""
|
562 |
|
563 |
+
#: includes/class-freemius.php:21559
|
564 |
msgid "the latest %s version here"
|
565 |
msgstr ""
|
566 |
|
567 |
+
#: includes/class-freemius.php:21564
|
568 |
msgid "New"
|
569 |
msgstr ""
|
570 |
|
571 |
+
#: includes/class-freemius.php:21569
|
572 |
msgid "Seems like you got the latest release."
|
573 |
msgstr ""
|
574 |
|
575 |
+
#: includes/class-freemius.php:21570
|
576 |
msgid "You are all good!"
|
577 |
msgstr ""
|
578 |
|
579 |
+
#: includes/class-freemius.php:21873
|
580 |
msgid "Verification mail was just sent to %s. If you can't find it after 5 min, please check your spam box."
|
581 |
msgstr ""
|
582 |
|
583 |
+
#: includes/class-freemius.php:22013
|
584 |
msgid "Site successfully opted in."
|
585 |
msgstr ""
|
586 |
|
587 |
+
#: includes/class-freemius.php:22014, includes/class-freemius.php:23020
|
588 |
msgid "Awesome"
|
589 |
msgstr ""
|
590 |
|
591 |
+
#: includes/class-freemius.php:22030, templates/forms/optout.php:41
|
592 |
msgid "We appreciate your help in making the %s better by letting us track some usage data."
|
593 |
msgstr ""
|
594 |
|
595 |
+
#: includes/class-freemius.php:22031
|
596 |
msgid "Thank you!"
|
597 |
msgstr ""
|
598 |
|
599 |
+
#: includes/class-freemius.php:22038
|
600 |
msgid "We will no longer be sending any usage data of %s on %s to %s."
|
601 |
msgstr ""
|
602 |
|
603 |
+
#: includes/class-freemius.php:22196
|
604 |
msgid "Please check your mailbox, you should receive an email via %s to confirm the ownership change. From security reasons, you must confirm the change within the next 15 min. If you cannot find the email, please check your spam folder."
|
605 |
msgstr ""
|
606 |
|
607 |
+
#: includes/class-freemius.php:22202
|
608 |
msgid "Thanks for confirming the ownership change. An email was just sent to %s for final approval."
|
609 |
msgstr ""
|
610 |
|
611 |
+
#: includes/class-freemius.php:22207
|
612 |
msgid "%s is the new owner of the account."
|
613 |
msgstr ""
|
614 |
|
615 |
+
#: includes/class-freemius.php:22209
|
616 |
msgctxt "as congratulations"
|
617 |
msgid "Congrats"
|
618 |
msgstr ""
|
619 |
|
620 |
+
#: includes/class-freemius.php:22245
|
621 |
msgid "Your email was successfully updated. You should receive an email with confirmation instructions in few moments."
|
622 |
msgstr ""
|
623 |
|
624 |
+
#: includes/class-freemius.php:22257
|
625 |
msgid "Please provide your full name."
|
626 |
msgstr ""
|
627 |
|
628 |
+
#: includes/class-freemius.php:22262
|
629 |
msgid "Your name was successfully updated."
|
630 |
msgstr ""
|
631 |
|
632 |
+
#: includes/class-freemius.php:22323
|
633 |
msgid "You have successfully updated your %s."
|
634 |
msgstr ""
|
635 |
|
636 |
+
#: includes/class-freemius.php:22382
|
637 |
+
msgid "Is this your client's site? %s if you wish to hide sensitive info like your email, license key, prices, billing address & invoices from the WP Admin."
|
638 |
+
msgstr ""
|
639 |
+
|
640 |
+
#: includes/class-freemius.php:22385
|
641 |
+
msgid "Click here"
|
642 |
+
msgstr ""
|
643 |
+
|
644 |
+
#: includes/class-freemius.php:22483
|
645 |
msgid "Just letting you know that the add-ons information of %s is being pulled from an external server."
|
646 |
msgstr ""
|
647 |
|
648 |
+
#: includes/class-freemius.php:22484
|
649 |
msgctxt "advance notice of something that will need attention."
|
650 |
msgid "Heads up"
|
651 |
msgstr ""
|
652 |
|
653 |
+
#: includes/class-freemius.php:23060
|
654 |
msgctxt "exclamation"
|
655 |
msgid "Hey"
|
656 |
msgstr ""
|
657 |
|
658 |
+
#: includes/class-freemius.php:23060
|
659 |
msgid "How do you like %s so far? Test all our %s premium features with a %d-day free trial."
|
660 |
msgstr ""
|
661 |
|
662 |
+
#: includes/class-freemius.php:23068
|
663 |
msgid "No commitment for %s days - cancel anytime!"
|
664 |
msgstr ""
|
665 |
|
666 |
+
#: includes/class-freemius.php:23069
|
667 |
msgid "No credit card required"
|
668 |
msgstr ""
|
669 |
|
670 |
+
#: includes/class-freemius.php:23076, templates/forms/trial-start.php:53
|
671 |
msgctxt "call to action"
|
672 |
msgid "Start free trial"
|
673 |
msgstr ""
|
674 |
|
675 |
+
#: includes/class-freemius.php:23153
|
676 |
msgid "Hey there, did you know that %s has an affiliate program? If you like the %s you can become our ambassador and earn some cash!"
|
677 |
msgstr ""
|
678 |
|
679 |
+
#: includes/class-freemius.php:23162
|
680 |
msgid "Learn more"
|
681 |
msgstr ""
|
682 |
|
683 |
+
#: includes/class-freemius.php:23348, templates/account.php:556, templates/account.php:706, templates/connect.php:179, templates/connect.php:456, templates/forms/license-activation.php:27, templates/account/partials/addon.php:321
|
684 |
msgid "Activate License"
|
685 |
msgstr ""
|
686 |
|
687 |
+
#: includes/class-freemius.php:23349, templates/account.php:650, templates/account.php:705, templates/account/partials/addon.php:322, templates/account/partials/site.php:271
|
688 |
msgid "Change License"
|
689 |
msgstr ""
|
690 |
|
691 |
+
#: includes/class-freemius.php:23462, templates/account/partials/site.php:169
|
692 |
msgid "Opt Out"
|
693 |
msgstr ""
|
694 |
|
695 |
+
#: includes/class-freemius.php:23464, includes/class-freemius.php:23470, templates/account/partials/site.php:49, templates/account/partials/site.php:169
|
696 |
msgid "Opt In"
|
697 |
msgstr ""
|
698 |
|
699 |
+
#: includes/class-freemius.php:23700
|
700 |
msgid " The paid version of %1$s is already installed. Please activate it to start benefiting the %2$s features. %3$s"
|
701 |
msgstr ""
|
702 |
|
703 |
+
#: includes/class-freemius.php:23708
|
704 |
msgid "Activate %s features"
|
705 |
msgstr ""
|
706 |
|
707 |
+
#: includes/class-freemius.php:23721
|
708 |
msgid "Please follow these steps to complete the upgrade"
|
709 |
msgstr ""
|
710 |
|
711 |
+
#: includes/class-freemius.php:23725
|
712 |
msgid "Download the latest %s version"
|
713 |
msgstr ""
|
714 |
|
715 |
+
#: includes/class-freemius.php:23729
|
716 |
msgid "Upload and activate the downloaded version"
|
717 |
msgstr ""
|
718 |
|
719 |
+
#: includes/class-freemius.php:23731
|
720 |
msgid "How to upload and activate?"
|
721 |
msgstr ""
|
722 |
|
723 |
+
#: includes/class-freemius.php:23865
|
724 |
msgid "%sClick here%s to choose the sites where you'd like to activate the license on."
|
725 |
msgstr ""
|
726 |
|
727 |
+
#: includes/class-freemius.php:24034
|
728 |
msgid "Auto installation only works for opted-in users."
|
729 |
msgstr ""
|
730 |
|
731 |
+
#: includes/class-freemius.php:24044, includes/class-freemius.php:24077, includes/class-fs-plugin-updater.php:1273, includes/class-fs-plugin-updater.php:1287
|
732 |
msgid "Invalid module ID."
|
733 |
msgstr ""
|
734 |
|
735 |
+
#: includes/class-freemius.php:24053, includes/class-fs-plugin-updater.php:1309
|
736 |
msgid "Premium version already active."
|
737 |
msgstr ""
|
738 |
|
739 |
+
#: includes/class-freemius.php:24060
|
740 |
msgid "You do not have a valid license to access the premium version."
|
741 |
msgstr ""
|
742 |
|
743 |
+
#: includes/class-freemius.php:24067
|
744 |
msgid "Plugin is a \"Serviceware\" which means it does not have a premium code version."
|
745 |
msgstr ""
|
746 |
|
747 |
+
#: includes/class-freemius.php:24085, includes/class-fs-plugin-updater.php:1308
|
748 |
msgid "Premium add-on version already installed."
|
749 |
msgstr ""
|
750 |
|
751 |
+
#: includes/class-freemius.php:24435
|
752 |
msgid "View paid features"
|
753 |
msgstr ""
|
754 |
|
755 |
+
#: includes/class-freemius.php:24757
|
756 |
msgid "Thank you so much for using %s and its add-ons!"
|
757 |
msgstr ""
|
758 |
|
759 |
+
#: includes/class-freemius.php:24758
|
760 |
msgid "Thank you so much for using %s!"
|
761 |
msgstr ""
|
762 |
|
763 |
+
#: includes/class-freemius.php:24764
|
764 |
msgid "You've already opted-in to our usage-tracking, which helps us keep improving the %s."
|
765 |
msgstr ""
|
766 |
|
767 |
+
#: includes/class-freemius.php:24768
|
768 |
msgid "Thank you so much for using our products!"
|
769 |
msgstr ""
|
770 |
|
771 |
+
#: includes/class-freemius.php:24769
|
772 |
msgid "You've already opted-in to our usage-tracking, which helps us keep improving them."
|
773 |
msgstr ""
|
774 |
|
775 |
+
#: includes/class-freemius.php:24788
|
776 |
msgid "%s and its add-ons"
|
777 |
msgstr ""
|
778 |
|
779 |
+
#: includes/class-freemius.php:24797
|
780 |
msgid "Products"
|
781 |
msgstr ""
|
782 |
|
783 |
+
#: includes/class-freemius.php:24804, templates/connect.php:280
|
784 |
msgid "Yes"
|
785 |
msgstr ""
|
786 |
|
787 |
+
#: includes/class-freemius.php:24805, templates/connect.php:281
|
788 |
msgid "send me security & feature updates, educational content and offers."
|
789 |
msgstr ""
|
790 |
|
791 |
+
#: includes/class-freemius.php:24806, templates/connect.php:286
|
792 |
msgid "No"
|
793 |
msgstr ""
|
794 |
|
795 |
+
#: includes/class-freemius.php:24808, templates/connect.php:288
|
796 |
msgid "do %sNOT%s send me security & feature updates, educational content and offers."
|
797 |
msgstr ""
|
798 |
|
799 |
+
#: includes/class-freemius.php:24818
|
800 |
msgid "Due to the new %sEU General Data Protection Regulation (GDPR)%s compliance requirements it is required that you provide your explicit consent, again, confirming that you are onboard :-)"
|
801 |
msgstr ""
|
802 |
|
803 |
+
#: includes/class-freemius.php:24820, templates/connect.php:295
|
804 |
msgid "Please let us know if you'd like us to contact you for security & feature updates, educational content, and occasional offers:"
|
805 |
msgstr ""
|
806 |
|
807 |
+
#: includes/class-freemius.php:25102
|
808 |
msgid "License key is empty."
|
809 |
msgstr ""
|
810 |
|
832 |
msgid "Important Upgrade Notice:"
|
833 |
msgstr ""
|
834 |
|
835 |
+
#: includes/class-fs-plugin-updater.php:1338
|
836 |
msgid "Installing plugin: %s"
|
837 |
msgstr ""
|
838 |
|
839 |
+
#: includes/class-fs-plugin-updater.php:1379
|
840 |
msgid "Unable to connect to the filesystem. Please confirm your credentials."
|
841 |
msgstr ""
|
842 |
|
843 |
+
#: includes/class-fs-plugin-updater.php:1561
|
844 |
msgid "The remote plugin package does not contain a folder with the desired slug and renaming did not work."
|
845 |
msgstr ""
|
846 |
|
847 |
+
#: includes/fs-plugin-info-dialog.php:541
|
848 |
msgid "Purchase More"
|
849 |
msgstr ""
|
850 |
|
851 |
+
#: includes/fs-plugin-info-dialog.php:542, templates/account/partials/addon.php:385
|
852 |
msgctxt "verb"
|
853 |
msgid "Purchase"
|
854 |
msgstr ""
|
855 |
|
856 |
+
#: includes/fs-plugin-info-dialog.php:546
|
857 |
msgid "Start my free %s"
|
858 |
msgstr ""
|
859 |
|
860 |
+
#: includes/fs-plugin-info-dialog.php:744
|
861 |
msgid "Install Free Version Update Now"
|
862 |
msgstr ""
|
863 |
|
864 |
+
#: includes/fs-plugin-info-dialog.php:745, templates/account.php:639
|
865 |
msgid "Install Update Now"
|
866 |
msgstr ""
|
867 |
|
868 |
+
#: includes/fs-plugin-info-dialog.php:754
|
869 |
msgid "Install Free Version Now"
|
870 |
msgstr ""
|
871 |
|
872 |
+
#: includes/fs-plugin-info-dialog.php:755, templates/add-ons.php:323, templates/auto-installation.php:111, templates/account/partials/addon.php:365, templates/account/partials/addon.php:418
|
873 |
msgid "Install Now"
|
874 |
msgstr ""
|
875 |
|
876 |
+
#: includes/fs-plugin-info-dialog.php:771
|
877 |
msgctxt "as download latest version"
|
878 |
msgid "Download Latest Free Version"
|
879 |
msgstr ""
|
880 |
|
881 |
+
#: includes/fs-plugin-info-dialog.php:772, templates/account.php:99, templates/add-ons.php:37, templates/account/partials/addon.php:25
|
882 |
msgctxt "as download latest version"
|
883 |
msgid "Download Latest"
|
884 |
msgstr ""
|
885 |
|
886 |
+
#: includes/fs-plugin-info-dialog.php:787, templates/add-ons.php:329, templates/account/partials/addon.php:356, templates/account/partials/addon.php:412
|
887 |
msgid "Activate this add-on"
|
888 |
msgstr ""
|
889 |
|
890 |
+
#: includes/fs-plugin-info-dialog.php:789, templates/connect.php:453
|
891 |
msgid "Activate Free Version"
|
892 |
msgstr ""
|
893 |
|
894 |
+
#: includes/fs-plugin-info-dialog.php:790, templates/account.php:123, templates/add-ons.php:330, templates/account/partials/addon.php:48
|
895 |
msgid "Activate"
|
896 |
msgstr ""
|
897 |
|
898 |
+
#: includes/fs-plugin-info-dialog.php:1002
|
899 |
msgctxt "Plugin installer section title"
|
900 |
msgid "Description"
|
901 |
msgstr ""
|
902 |
|
903 |
+
#: includes/fs-plugin-info-dialog.php:1003
|
904 |
msgctxt "Plugin installer section title"
|
905 |
msgid "Installation"
|
906 |
msgstr ""
|
907 |
|
908 |
+
#: includes/fs-plugin-info-dialog.php:1004
|
909 |
msgctxt "Plugin installer section title"
|
910 |
msgid "FAQ"
|
911 |
msgstr ""
|
912 |
|
913 |
+
#: includes/fs-plugin-info-dialog.php:1005, templates/plugin-info/description.php:55
|
914 |
msgid "Screenshots"
|
915 |
msgstr ""
|
916 |
|
917 |
+
#: includes/fs-plugin-info-dialog.php:1006
|
918 |
msgctxt "Plugin installer section title"
|
919 |
msgid "Changelog"
|
920 |
msgstr ""
|
921 |
|
922 |
+
#: includes/fs-plugin-info-dialog.php:1007
|
923 |
msgctxt "Plugin installer section title"
|
924 |
msgid "Reviews"
|
925 |
msgstr ""
|
926 |
|
927 |
+
#: includes/fs-plugin-info-dialog.php:1008
|
928 |
msgctxt "Plugin installer section title"
|
929 |
msgid "Other Notes"
|
930 |
msgstr ""
|
931 |
|
932 |
+
#: includes/fs-plugin-info-dialog.php:1023
|
933 |
msgctxt "Plugin installer section title"
|
934 |
msgid "Features & Pricing"
|
935 |
msgstr ""
|
936 |
|
937 |
+
#: includes/fs-plugin-info-dialog.php:1033
|
938 |
msgid "Plugin Install"
|
939 |
msgstr ""
|
940 |
|
941 |
+
#: includes/fs-plugin-info-dialog.php:1105
|
942 |
msgctxt "e.g. Professional Plan"
|
943 |
msgid "%s Plan"
|
944 |
msgstr ""
|
945 |
|
946 |
+
#: includes/fs-plugin-info-dialog.php:1131
|
947 |
msgctxt "e.g. the best product"
|
948 |
msgid "Best"
|
949 |
msgstr ""
|
950 |
|
951 |
+
#: includes/fs-plugin-info-dialog.php:1137, includes/fs-plugin-info-dialog.php:1157
|
952 |
msgctxt "as every month"
|
953 |
msgid "Monthly"
|
954 |
msgstr ""
|
955 |
|
956 |
+
#: includes/fs-plugin-info-dialog.php:1140
|
957 |
msgctxt "as once a year"
|
958 |
msgid "Annual"
|
959 |
msgstr ""
|
960 |
|
961 |
+
#: includes/fs-plugin-info-dialog.php:1143
|
962 |
msgid "Lifetime"
|
963 |
msgstr ""
|
964 |
|
965 |
+
#: includes/fs-plugin-info-dialog.php:1157, includes/fs-plugin-info-dialog.php:1159, includes/fs-plugin-info-dialog.php:1161
|
966 |
msgctxt "e.g. billed monthly"
|
967 |
msgid "Billed %s"
|
968 |
msgstr ""
|
969 |
|
970 |
+
#: includes/fs-plugin-info-dialog.php:1159
|
971 |
msgctxt "as once a year"
|
972 |
msgid "Annually"
|
973 |
msgstr ""
|
974 |
|
975 |
+
#: includes/fs-plugin-info-dialog.php:1161
|
976 |
msgctxt "as once a year"
|
977 |
msgid "Once"
|
978 |
msgstr ""
|
979 |
|
980 |
+
#: includes/fs-plugin-info-dialog.php:1167
|
981 |
msgid "Single Site License"
|
982 |
msgstr ""
|
983 |
|
984 |
+
#: includes/fs-plugin-info-dialog.php:1169
|
985 |
msgid "Unlimited Licenses"
|
986 |
msgstr ""
|
987 |
|
988 |
+
#: includes/fs-plugin-info-dialog.php:1171
|
989 |
msgid "Up to %s Sites"
|
990 |
msgstr ""
|
991 |
|
992 |
+
#: includes/fs-plugin-info-dialog.php:1181, templates/plugin-info/features.php:82
|
993 |
msgctxt "as monthly period"
|
994 |
msgid "mo"
|
995 |
msgstr ""
|
996 |
|
997 |
+
#: includes/fs-plugin-info-dialog.php:1188, templates/plugin-info/features.php:80
|
998 |
msgctxt "as annual period"
|
999 |
msgid "year"
|
1000 |
msgstr ""
|
1001 |
|
1002 |
+
#: includes/fs-plugin-info-dialog.php:1242
|
1003 |
msgctxt "noun"
|
1004 |
msgid "Price"
|
1005 |
msgstr ""
|
1006 |
|
1007 |
+
#: includes/fs-plugin-info-dialog.php:1290
|
1008 |
msgid "Save %s"
|
1009 |
msgstr ""
|
1010 |
|
1011 |
+
#: includes/fs-plugin-info-dialog.php:1300
|
1012 |
msgid "No commitment for %s - cancel anytime"
|
1013 |
msgstr ""
|
1014 |
|
1015 |
+
#: includes/fs-plugin-info-dialog.php:1303
|
1016 |
msgid "After your free %s, pay as little as %s"
|
1017 |
msgstr ""
|
1018 |
|
1019 |
+
#: includes/fs-plugin-info-dialog.php:1314
|
1020 |
msgid "Details"
|
1021 |
msgstr ""
|
1022 |
|
1023 |
+
#: includes/fs-plugin-info-dialog.php:1318, templates/account.php:110, templates/debug.php:201, templates/debug.php:238, templates/debug.php:455, templates/account/partials/addon.php:36
|
1024 |
msgctxt "product version"
|
1025 |
msgid "Version"
|
1026 |
msgstr ""
|
1027 |
|
1028 |
+
#: includes/fs-plugin-info-dialog.php:1325
|
1029 |
msgctxt "as the plugin author"
|
1030 |
msgid "Author"
|
1031 |
msgstr ""
|
1032 |
|
1033 |
+
#: includes/fs-plugin-info-dialog.php:1332
|
1034 |
msgid "Last Updated"
|
1035 |
msgstr ""
|
1036 |
|
1037 |
+
#: includes/fs-plugin-info-dialog.php:1337, templates/account.php:525
|
1038 |
msgctxt "x-ago"
|
1039 |
msgid "%s ago"
|
1040 |
msgstr ""
|
1041 |
|
1042 |
+
#: includes/fs-plugin-info-dialog.php:1346
|
1043 |
msgid "Requires WordPress Version"
|
1044 |
msgstr ""
|
1045 |
|
1046 |
+
#: includes/fs-plugin-info-dialog.php:1347
|
1047 |
msgid "%s or higher"
|
1048 |
msgstr ""
|
1049 |
|
1050 |
+
#: includes/fs-plugin-info-dialog.php:1354
|
1051 |
msgid "Compatible up to"
|
1052 |
msgstr ""
|
1053 |
|
1054 |
+
#: includes/fs-plugin-info-dialog.php:1362
|
1055 |
msgid "Downloaded"
|
1056 |
msgstr ""
|
1057 |
|
1058 |
+
#: includes/fs-plugin-info-dialog.php:1366
|
1059 |
msgid "%s time"
|
1060 |
msgstr ""
|
1061 |
|
1062 |
+
#: includes/fs-plugin-info-dialog.php:1368
|
1063 |
msgid "%s times"
|
1064 |
msgstr ""
|
1065 |
|
1066 |
+
#: includes/fs-plugin-info-dialog.php:1379
|
1067 |
msgid "WordPress.org Plugin Page"
|
1068 |
msgstr ""
|
1069 |
|
1070 |
+
#: includes/fs-plugin-info-dialog.php:1388
|
1071 |
msgid "Plugin Homepage"
|
1072 |
msgstr ""
|
1073 |
|
1074 |
+
#: includes/fs-plugin-info-dialog.php:1397, includes/fs-plugin-info-dialog.php:1481
|
1075 |
msgid "Donate to this plugin"
|
1076 |
msgstr ""
|
1077 |
|
1078 |
+
#: includes/fs-plugin-info-dialog.php:1404
|
1079 |
msgid "Average Rating"
|
1080 |
msgstr ""
|
1081 |
|
1082 |
+
#: includes/fs-plugin-info-dialog.php:1411
|
1083 |
msgid "based on %s"
|
1084 |
msgstr ""
|
1085 |
|
1086 |
+
#: includes/fs-plugin-info-dialog.php:1415
|
1087 |
msgid "%s rating"
|
1088 |
msgstr ""
|
1089 |
|
1090 |
+
#: includes/fs-plugin-info-dialog.php:1417
|
1091 |
msgid "%s ratings"
|
1092 |
msgstr ""
|
1093 |
|
1094 |
+
#: includes/fs-plugin-info-dialog.php:1432
|
1095 |
msgid "%s star"
|
1096 |
msgstr ""
|
1097 |
|
1098 |
+
#: includes/fs-plugin-info-dialog.php:1434
|
1099 |
msgid "%s stars"
|
1100 |
msgstr ""
|
1101 |
|
1102 |
+
#: includes/fs-plugin-info-dialog.php:1446
|
1103 |
msgid "Click to see reviews that provided a rating of %s"
|
1104 |
msgstr ""
|
1105 |
|
1106 |
+
#: includes/fs-plugin-info-dialog.php:1459
|
1107 |
msgid "Contributors"
|
1108 |
msgstr ""
|
1109 |
|
1110 |
+
#: includes/fs-plugin-info-dialog.php:1489, includes/fs-plugin-info-dialog.php:1491
|
1111 |
msgid "Warning"
|
1112 |
msgstr ""
|
1113 |
|
1114 |
+
#: includes/fs-plugin-info-dialog.php:1489
|
1115 |
msgid "This plugin has not been tested with your current version of WordPress."
|
1116 |
msgstr ""
|
1117 |
|
1118 |
+
#: includes/fs-plugin-info-dialog.php:1491
|
1119 |
msgid "This plugin has not been marked as compatible with your version of WordPress."
|
1120 |
msgstr ""
|
1121 |
|
1122 |
+
#: includes/fs-plugin-info-dialog.php:1510
|
1123 |
msgid "Paid add-on must be deployed to Freemius."
|
1124 |
msgstr ""
|
1125 |
|
1126 |
+
#: includes/fs-plugin-info-dialog.php:1511
|
1127 |
msgid "Add-on must be deployed to WordPress.org or Freemius."
|
1128 |
msgstr ""
|
1129 |
|
1130 |
+
#: includes/fs-plugin-info-dialog.php:1532
|
1131 |
msgid "Newer Version (%s) Installed"
|
1132 |
msgstr ""
|
1133 |
|
1134 |
+
#: includes/fs-plugin-info-dialog.php:1533
|
1135 |
msgid "Newer Free Version (%s) Installed"
|
1136 |
msgstr ""
|
1137 |
|
1138 |
+
#: includes/fs-plugin-info-dialog.php:1540
|
1139 |
msgid "Latest Version Installed"
|
1140 |
msgstr ""
|
1141 |
|
1142 |
+
#: includes/fs-plugin-info-dialog.php:1541
|
1143 |
msgid "Latest Free Version Installed"
|
1144 |
msgstr ""
|
1145 |
|
1425 |
msgid "Deactivating your license will block all premium features, but will enable activating the license on another site. Are you sure you want to proceed?"
|
1426 |
msgstr ""
|
1427 |
|
1428 |
+
#: templates/account.php:1073
|
1429 |
+
msgid "Disabling white-label mode"
|
1430 |
+
msgstr ""
|
1431 |
+
|
1432 |
+
#: templates/account.php:1074
|
1433 |
+
msgid "Enabling white-label mode"
|
1434 |
+
msgstr ""
|
1435 |
+
|
1436 |
#: templates/add-ons.php:38
|
1437 |
msgid "View details"
|
1438 |
msgstr ""
|
1562 |
msgid "Can't find your license key?"
|
1563 |
msgstr ""
|
1564 |
|
1565 |
+
#: templates/connect.php:323, templates/connect.php:695, templates/forms/deactivation/retry-skip.php:20
|
1566 |
msgctxt "verb"
|
1567 |
msgid "Skip"
|
1568 |
msgstr ""
|
1619 |
msgid "Title, slug, version, and is active"
|
1620 |
msgstr ""
|
1621 |
|
1622 |
+
#: templates/connect.php:421, templates/forms/license-activation.php:41
|
1623 |
msgid "The %1$s will be periodically sending data to %2$s to check for security and feature updates, and verify the validity of your license."
|
1624 |
msgstr ""
|
1625 |
|
1626 |
+
#: templates/connect.php:426
|
1627 |
msgid "What permissions are being granted?"
|
1628 |
msgstr ""
|
1629 |
|
1630 |
+
#: templates/connect.php:452
|
1631 |
msgid "Don't have a license key?"
|
1632 |
msgstr ""
|
1633 |
|
1634 |
+
#: templates/connect.php:455
|
1635 |
msgid "Have a license key?"
|
1636 |
msgstr ""
|
1637 |
|
1638 |
+
#: templates/connect.php:463
|
1639 |
msgid "Privacy Policy"
|
1640 |
msgstr ""
|
1641 |
|
1642 |
+
#: templates/connect.php:465
|
1643 |
msgid "License Agreement"
|
1644 |
msgstr ""
|
1645 |
|
1646 |
+
#: templates/connect.php:465
|
1647 |
msgid "Terms of Service"
|
1648 |
msgstr ""
|
1649 |
|
1650 |
+
#: templates/connect.php:854
|
1651 |
msgctxt "as in the process of sending an email"
|
1652 |
msgid "Sending email"
|
1653 |
msgstr ""
|
1654 |
|
1655 |
+
#: templates/connect.php:855
|
1656 |
msgctxt "as activating plugin"
|
1657 |
msgid "Activating"
|
1658 |
msgstr ""
|
2209 |
msgid "Please provide details on how you intend to promote %s (please be as specific as possible)."
|
2210 |
msgstr ""
|
2211 |
|
2212 |
+
#: templates/forms/affiliation.php:232, templates/forms/resend-key.php:22
|
2213 |
msgid "Cancel"
|
2214 |
msgstr ""
|
2215 |
|
2216 |
+
#: templates/forms/affiliation.php:234
|
2217 |
msgid "Become an affiliate"
|
2218 |
msgstr ""
|
2219 |
|
freemius/start.php
CHANGED
@@ -15,7 +15,7 @@
|
|
15 |
*
|
16 |
* @var string
|
17 |
*/
|
18 |
-
$this_sdk_version = '2.4.
|
19 |
|
20 |
#region SDK Selection Logic --------------------------------------------------------------------
|
21 |
|
15 |
*
|
16 |
* @var string
|
17 |
*/
|
18 |
+
$this_sdk_version = '2.4.1';
|
19 |
|
20 |
#region SDK Selection Logic --------------------------------------------------------------------
|
21 |
|
freemius/templates/account.php
CHANGED
@@ -1056,6 +1056,29 @@
|
|
1056 |
});
|
1057 |
});
|
1058 |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
1059 |
})(jQuery);
|
1060 |
</script>
|
1061 |
<?php
|
1056 |
});
|
1057 |
});
|
1058 |
|
1059 |
+
$( '.fs-toggle-whitelabel-mode' ).click( function () {
|
1060 |
+
var $toggleLink = $( this );
|
1061 |
+
|
1062 |
+
$.ajax( {
|
1063 |
+
url : ajaxurl,
|
1064 |
+
method: 'POST',
|
1065 |
+
data : {
|
1066 |
+
action : '<?php echo $fs->get_ajax_action( 'toggle_whitelabel_mode' ) ?>',
|
1067 |
+
security : '<?php echo $fs->get_ajax_security( 'toggle_whitelabel_mode' ) ?>',
|
1068 |
+
module_id: <?php echo $fs->get_id() ?>
|
1069 |
+
},
|
1070 |
+
beforeSend: function () {
|
1071 |
+
$toggleLink.parent().text( '<?php
|
1072 |
+
$is_whitelabeled ?
|
1073 |
+
fs_esc_html_echo_inline( 'Disabling white-label mode', 'disabling-whitelabel-mode' ) :
|
1074 |
+
fs_esc_html_echo_inline( 'Enabling white-label mode', 'enabling-whitelabel-mode' )
|
1075 |
+
?>' + '...' );
|
1076 |
+
},
|
1077 |
+
complete: function () {
|
1078 |
+
location.reload();
|
1079 |
+
}
|
1080 |
+
} );
|
1081 |
+
});
|
1082 |
})(jQuery);
|
1083 |
</script>
|
1084 |
<?php
|
freemius/templates/forms/affiliation.php
CHANGED
@@ -220,10 +220,12 @@
|
|
220 |
<p class="description"><?php echo esc_html( sprintf( fs_text_inline( 'Please provide details on how you intend to promote %s (please be as specific as possible).', 'promotion-method-desc-field-desc', $slug ), $plugin_title ) ) ?></p>
|
221 |
<?php endif ?>
|
222 |
</div>
|
|
|
223 |
<div>
|
224 |
<input type="checkbox" id="legal_consent_checkbox">
|
225 |
<label for="legal_consent_checkbox">I agree to the <a href="<?php echo $affiliate_program_terms_url ?>" target="_blank" rel="noopener">Referrer Program</a>'s terms & conditions.</label>
|
226 |
</div>
|
|
|
227 |
</form>
|
228 |
</div>
|
229 |
<?php if ( ! $is_affiliate ) : ?>
|
220 |
<p class="description"><?php echo esc_html( sprintf( fs_text_inline( 'Please provide details on how you intend to promote %s (please be as specific as possible).', 'promotion-method-desc-field-desc', $slug ), $plugin_title ) ) ?></p>
|
221 |
<?php endif ?>
|
222 |
</div>
|
223 |
+
<?php if ( ! $is_affiliate ) : ?>
|
224 |
<div>
|
225 |
<input type="checkbox" id="legal_consent_checkbox">
|
226 |
<label for="legal_consent_checkbox">I agree to the <a href="<?php echo $affiliate_program_terms_url ?>" target="_blank" rel="noopener">Referrer Program</a>'s terms & conditions.</label>
|
227 |
</div>
|
228 |
+
<?php endif ?>
|
229 |
</form>
|
230 |
</div>
|
231 |
<?php if ( ! $is_affiliate ) : ?>
|
includes/classes/YasrDatabaseRatings.php
CHANGED
@@ -30,6 +30,8 @@ if (!defined('ABSPATH')) {
|
|
30 |
class YasrDatabaseRatings {
|
31 |
|
32 |
/**
|
|
|
|
|
33 |
* @param $post_id void|bool|int
|
34 |
*
|
35 |
* @return mixed|null
|
@@ -52,7 +54,27 @@ class YasrDatabaseRatings {
|
|
52 |
return $overall_rating;
|
53 |
}
|
54 |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
55 |
/**
|
|
|
|
|
56 |
* @param bool|integer $post_id
|
57 |
*
|
58 |
* @return array|bool|mixed|object|null
|
@@ -90,6 +112,23 @@ class YasrDatabaseRatings {
|
|
90 |
return $array_to_return;
|
91 |
}
|
92 |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
93 |
/**
|
94 |
* Check if an user has already rated, and if so, return the rating, or false otherwise
|
95 |
*
|
30 |
class YasrDatabaseRatings {
|
31 |
|
32 |
/**
|
33 |
+
* Returns overall rating for single post or page
|
34 |
+
*
|
35 |
* @param $post_id void|bool|int
|
36 |
*
|
37 |
* @return mixed|null
|
54 |
return $overall_rating;
|
55 |
}
|
56 |
|
57 |
+
|
58 |
+
public static function getAllOverallRatings() {
|
59 |
+
global $wpdb;
|
60 |
+
|
61 |
+
$query = "SELECT pm.post_id,
|
62 |
+
pm.meta_value as vote,
|
63 |
+
pm.meta_id as id,
|
64 |
+
p.post_author as user_id,
|
65 |
+
p.post_modified as date
|
66 |
+
FROM $wpdb->postmeta as pm,
|
67 |
+
$wpdb->posts as p
|
68 |
+
WHERE pm.meta_key = 'yasr_overall_rating'
|
69 |
+
AND p.ID = pm.post_id";
|
70 |
+
|
71 |
+
return $wpdb->get_results($query, ARRAY_A);
|
72 |
+
|
73 |
+
}
|
74 |
+
|
75 |
/**
|
76 |
+
* Return Visitor Votes for a single post or page
|
77 |
+
*
|
78 |
* @param bool|integer $post_id
|
79 |
*
|
80 |
* @return array|bool|mixed|object|null
|
112 |
return $array_to_return;
|
113 |
}
|
114 |
|
115 |
+
/**
|
116 |
+
* Returns *ALL* visitor votes in YASR_LOG_TABLE
|
117 |
+
* used in stats page
|
118 |
+
*
|
119 |
+
* @author Dario Curvino <@dudo>
|
120 |
+
* @since 2.5.2
|
121 |
+
*
|
122 |
+
* @return array|object|null
|
123 |
+
*/
|
124 |
+
public static function getAllVisitorVotes() {
|
125 |
+
global $wpdb;
|
126 |
+
|
127 |
+
$query = 'SELECT * FROM ' .YASR_LOG_TABLE. ' ORDER BY date';
|
128 |
+
|
129 |
+
return $wpdb->get_results($query, ARRAY_A);
|
130 |
+
}
|
131 |
+
|
132 |
/**
|
133 |
* Check if an user has already rated, and if so, return the rating, or false otherwise
|
134 |
*
|
includes/classes/YasrMultiSetData.php
CHANGED
@@ -103,9 +103,7 @@ class YasrMultiSetData {
|
|
103 |
return false;
|
104 |
}
|
105 |
|
106 |
-
|
107 |
-
|
108 |
-
return $multiset_content;
|
109 |
}
|
110 |
|
111 |
/** This functions returns an array with all the value to print the multiset
|
@@ -240,4 +238,21 @@ class YasrMultiSetData {
|
|
240 |
return round( $multiset_vote_sum / $multiset_rows_number, 1);
|
241 |
}
|
242 |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
243 |
}
|
103 |
return false;
|
104 |
}
|
105 |
|
106 |
+
return self::returnArrayFieldsRatings($set_id, $set_fields, $post_id);
|
|
|
|
|
107 |
}
|
108 |
|
109 |
/** This functions returns an array with all the value to print the multiset
|
238 |
return round( $multiset_vote_sum / $multiset_rows_number, 1);
|
239 |
}
|
240 |
|
241 |
+
/**
|
242 |
+
* Returns *ALL* multiset votes in YASR_LOG_MULTI_SET
|
243 |
+
* used in stats page
|
244 |
+
*
|
245 |
+
* @author Dario Curvino <@dudo>
|
246 |
+
* @since 2.5.2
|
247 |
+
*
|
248 |
+
* @return array|object|null
|
249 |
+
*/
|
250 |
+
public static function returnAllLogMulti() {
|
251 |
+
global $wpdb;
|
252 |
+
|
253 |
+
$query = 'SELECT * FROM ' .YASR_LOG_MULTI_SET. ' ORDER BY date, set_type, post_id DESC';
|
254 |
+
|
255 |
+
return $wpdb->get_results($query, ARRAY_A);
|
256 |
+
}
|
257 |
+
|
258 |
}
|
includes/classes/YasrRankingData.php
ADDED
@@ -0,0 +1,124 @@
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
1 |
+
<?php
|
2 |
+
|
3 |
+
/*
|
4 |
+
|
5 |
+
Copyright 2014 Dario Curvino (email : d.curvino@tiscali.it)
|
6 |
+
|
7 |
+
This program is free software: you can redistribute it and/or modify
|
8 |
+
it under the terms of the GNU General Public License as published by
|
9 |
+
the Free Software Foundation, either version 2 of the License, or
|
10 |
+
(at your option) any later version.
|
11 |
+
|
12 |
+
This program is distributed in the hope that it will be useful,
|
13 |
+
but WITHOUT ANY WARRANTY; without even the implied warranty of
|
14 |
+
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
|
15 |
+
GNU General Public License for more details.
|
16 |
+
|
17 |
+
You should have received a copy of the GNU General Public License
|
18 |
+
along with this program. If not, see <http://www.gnu.org/licenses/>
|
19 |
+
*/
|
20 |
+
|
21 |
+
if (!defined('ABSPATH')) {
|
22 |
+
exit('You\'re not allowed to see this page');
|
23 |
+
} // Exit if accessed directly
|
24 |
+
|
25 |
+
class YasrRankingData {
|
26 |
+
|
27 |
+
/**
|
28 |
+
* Run $wpdb->get_results for overall Rating
|
29 |
+
*
|
30 |
+
* @author Dario Curvino <@dudo>
|
31 |
+
* @since 2.5.2
|
32 |
+
*
|
33 |
+
* @param bool|array $attributes
|
34 |
+
*
|
35 |
+
* @return array|false|object|void
|
36 |
+
*/
|
37 |
+
public static function rankingOverallGetResults($attributes = false) {
|
38 |
+
global $wpdb;
|
39 |
+
|
40 |
+
//use this hook to adds query params
|
41 |
+
$sql_params = apply_filters('yasr_set_query_attributes', $attributes);
|
42 |
+
|
43 |
+
//do a custom query here
|
44 |
+
//must returns rating and post_id
|
45 |
+
$query = apply_filters('yasr_rankings_query_ov', $sql_params);
|
46 |
+
|
47 |
+
//if query === $sql_params means that filters doesn't exists
|
48 |
+
if($query === $sql_params) {
|
49 |
+
//default query
|
50 |
+
$query = "SELECT pm.meta_value AS rating,
|
51 |
+
pm.post_id AS post_id
|
52 |
+
FROM $wpdb->postmeta AS pm,
|
53 |
+
$wpdb->posts AS p
|
54 |
+
WHERE pm.post_id = p.ID
|
55 |
+
AND p.post_status = 'publish'
|
56 |
+
AND pm.meta_key = 'yasr_overall_rating'
|
57 |
+
AND pm.meta_value > 0
|
58 |
+
ORDER BY pm.meta_value DESC,
|
59 |
+
pm.post_id
|
60 |
+
LIMIT 10";
|
61 |
+
}
|
62 |
+
|
63 |
+
$query_result = $wpdb->get_results($query);
|
64 |
+
|
65 |
+
if ($query_result) {
|
66 |
+
return $query_result;
|
67 |
+
}
|
68 |
+
return false;
|
69 |
+
}
|
70 |
+
|
71 |
+
/**
|
72 |
+
* Run $wpdb->get_results for VV
|
73 |
+
*
|
74 |
+
* @author Dario Curvino <@dudo>
|
75 |
+
* @since 2.5.2
|
76 |
+
*
|
77 |
+
* @param bool|array $attributes
|
78 |
+
* @param $ranking
|
79 |
+
* @param bool $required_votes
|
80 |
+
*
|
81 |
+
* @return array|false|object|void
|
82 |
+
*/
|
83 |
+
|
84 |
+
public static function rankingVVGetResults($attributes, $ranking, $required_votes=false) {
|
85 |
+
global $wpdb;
|
86 |
+
|
87 |
+
if($required_votes !== false) {
|
88 |
+
$attributes['required_votes'] = $required_votes;
|
89 |
+
}
|
90 |
+
|
91 |
+
$sql_params = apply_filters('yasr_set_query_attributes', $attributes);
|
92 |
+
|
93 |
+
//This filter is used to filter the query
|
94 |
+
$query = apply_filters('yasr_rankings_query_vv', $sql_params, $ranking);
|
95 |
+
|
96 |
+
//if no custom query is hooked
|
97 |
+
if($query === $sql_params) {
|
98 |
+
|
99 |
+
$common_query = "SELECT post_id,
|
100 |
+
COUNT(post_id) AS number_of_votes,
|
101 |
+
(SUM(vote) / COUNT(post_id)) AS rating
|
102 |
+
FROM " . YASR_LOG_TABLE . ",
|
103 |
+
$wpdb->posts AS p
|
104 |
+
WHERE post_id = p.ID
|
105 |
+
AND p.post_status = 'publish'
|
106 |
+
GROUP BY post_id
|
107 |
+
HAVING number_of_votes > 1
|
108 |
+
";
|
109 |
+
|
110 |
+
if ($ranking === 'highest') {
|
111 |
+
$order_by = ' ORDER BY rating DESC, number_of_votes DESC';
|
112 |
+
}
|
113 |
+
else {
|
114 |
+
$order_by = ' ORDER BY number_of_votes DESC, rating DESC, post_id DESC';
|
115 |
+
}
|
116 |
+
|
117 |
+
$limit = ' LIMIT 10';
|
118 |
+
$query = $common_query . $order_by . $limit;
|
119 |
+
|
120 |
+
}
|
121 |
+
|
122 |
+
return $wpdb->get_results($query);
|
123 |
+
}
|
124 |
+
}
|
includes/rest/classes/YasrCustomEndpoint.php
CHANGED
@@ -6,66 +6,84 @@ if (!defined('ABSPATH')) {
|
|
6 |
|
7 |
class YasrCustomEndpoint extends WP_REST_Controller {
|
8 |
|
|
|
|
|
|
|
9 |
/**
|
10 |
-
*
|
11 |
*/
|
12 |
public function restApiInit() {
|
13 |
-
add_action('rest_api_init', array(
|
14 |
}
|
15 |
|
16 |
|
17 |
/**
|
18 |
-
*
|
19 |
*/
|
20 |
public function customEndpoint () {
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
21 |
/*
|
22 |
* Param for this route must be
|
23 |
-
* YOURSITE/wp-json/yet-another-stars-rating/v1/yasr-multiset
|
24 |
* OPTIONAL &visitor=1
|
25 |
*
|
26 |
*/
|
27 |
-
|
28 |
-
$version = 'v1/';
|
29 |
$base = 'yasr-multiset';
|
30 |
|
31 |
-
|
32 |
-
|
33 |
-
'(
|
34 |
-
array(
|
35 |
-
'
|
36 |
-
|
37 |
-
|
38 |
-
|
39 |
-
|
40 |
-
|
41 |
-
)
|
42 |
-
|
43 |
-
|
44 |
-
|
45 |
-
|
46 |
-
'
|
47 |
-
'default' => 0,
|
48 |
-
'required' => false,
|
49 |
-
'sanitize_callback' => array($this, 'sanitizeInput')
|
50 |
-
),
|
51 |
),
|
52 |
-
|
53 |
-
|
54 |
-
|
55 |
-
|
|
|
|
|
|
|
|
|
|
|
|
|
56 |
);
|
57 |
}
|
58 |
|
59 |
/**
|
60 |
*
|
61 |
-
* Returns
|
62 |
* must be public
|
63 |
*
|
64 |
* @param WP_REST_Request $request
|
65 |
*
|
66 |
* @return WP_Error|WP_REST_Response
|
67 |
*/
|
68 |
-
public function
|
69 |
/*
|
70 |
* Get cleaned params
|
71 |
*/
|
@@ -106,6 +124,116 @@ class YasrCustomEndpoint extends WP_REST_Controller {
|
|
106 |
return $response;
|
107 |
}
|
108 |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
109 |
/**
|
110 |
* Sanitizie input, must be public
|
111 |
*
|
@@ -116,9 +244,6 @@ class YasrCustomEndpoint extends WP_REST_Controller {
|
|
116 |
* @return int|void|WP_Error
|
117 |
*/
|
118 |
public function sanitizeInput ($param, $request, $key) {
|
119 |
-
if($key === 'set_id') {
|
120 |
-
return (int)$param;
|
121 |
-
}
|
122 |
|
123 |
if($key === 'post_id') {
|
124 |
$post_id = (int)$param;
|
@@ -146,9 +271,30 @@ class YasrCustomEndpoint extends WP_REST_Controller {
|
|
146 |
return $post_id;
|
147 |
}
|
148 |
|
|
|
|
|
|
|
|
|
149 |
if($key === 'visitor') {
|
150 |
return (int)$param;
|
151 |
}
|
152 |
-
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
153 |
}
|
154 |
}
|
6 |
|
7 |
class YasrCustomEndpoint extends WP_REST_Controller {
|
8 |
|
9 |
+
protected $namespace;
|
10 |
+
protected $version;
|
11 |
+
|
12 |
/**
|
13 |
+
* hook into rest_api_init
|
14 |
*/
|
15 |
public function restApiInit() {
|
16 |
+
add_action('rest_api_init', array($this, 'customEndpoint'));
|
17 |
}
|
18 |
|
19 |
|
20 |
/**
|
21 |
+
* Load all register_rest_route
|
22 |
*/
|
23 |
public function customEndpoint () {
|
24 |
+
$this->namespace = 'yet-another-stars-rating/';
|
25 |
+
$this->version = 'v1/';
|
26 |
+
|
27 |
+
$this->multisetEndpoint();
|
28 |
+
$this->rankingEndpoint();
|
29 |
+
}
|
30 |
+
|
31 |
+
/**
|
32 |
+
* This function will register base yasr-multiset
|
33 |
+
*
|
34 |
+
* @author Dario Curvino <@dudo>
|
35 |
+
* @since 2.5.2
|
36 |
+
*/
|
37 |
+
public function multisetEndpoint () {
|
38 |
/*
|
39 |
* Param for this route must be
|
40 |
+
* YOURSITE/wp-json/yet-another-stars-rating/v1/yasr-multiset/?set_id&post_id=<ID>
|
41 |
* OPTIONAL &visitor=1
|
42 |
*
|
43 |
*/
|
44 |
+
|
|
|
45 |
$base = 'yasr-multiset';
|
46 |
|
47 |
+
$args = array(
|
48 |
+
'methods' => WP_REST_Server::READABLE,
|
49 |
+
'callback' => array($this, 'multiSet'),
|
50 |
+
'args' => array(
|
51 |
+
'set_id' => array(
|
52 |
+
'required' => true,
|
53 |
+
'sanitize_callback' => array($this, 'sanitizeInput')
|
54 |
+
),
|
55 |
+
'post_id' => array(
|
56 |
+
'required' => true,
|
57 |
+
'sanitize_callback' => array($this, 'sanitizeInput')
|
58 |
+
),
|
59 |
+
'visitor' => array(
|
60 |
+
'default' => 0,
|
61 |
+
'required' => false,
|
62 |
+
'sanitize_callback' => array($this, 'sanitizeInput')
|
|
|
|
|
|
|
|
|
63 |
),
|
64 |
+
),
|
65 |
+
'permission_callback' => static function () {
|
66 |
+
return true;
|
67 |
+
}
|
68 |
+
);
|
69 |
+
|
70 |
+
register_rest_route(
|
71 |
+
$this->namespace . $this->version,
|
72 |
+
$base,
|
73 |
+
$args
|
74 |
);
|
75 |
}
|
76 |
|
77 |
/**
|
78 |
*
|
79 |
+
* Returns Multi Set
|
80 |
* must be public
|
81 |
*
|
82 |
* @param WP_REST_Request $request
|
83 |
*
|
84 |
* @return WP_Error|WP_REST_Response
|
85 |
*/
|
86 |
+
public function multiSet ($request) {
|
87 |
/*
|
88 |
* Get cleaned params
|
89 |
*/
|
124 |
return $response;
|
125 |
}
|
126 |
|
127 |
+
/**
|
128 |
+
* This function will register base yasr-multiset
|
129 |
+
* @author Dario Curvino <@dudo>
|
130 |
+
* @since 2.5.2
|
131 |
+
*/
|
132 |
+
public function rankingEndpoint () {
|
133 |
+
/*
|
134 |
+
* Param for this route must be
|
135 |
+
*
|
136 |
+
* source can be:
|
137 |
+
* overall_rating
|
138 |
+
* visitor_votes
|
139 |
+
*
|
140 |
+
* YOURSITE/wp-json/yet-another-stars-rating/v1/yasr-rankings/?source
|
141 |
+
*
|
142 |
+
*/
|
143 |
+
$base = 'yasr-rankings';
|
144 |
+
|
145 |
+
$args = array(
|
146 |
+
'source' => array(
|
147 |
+
'required' => true,
|
148 |
+
'sanitize_callback' => array($this, 'sanitizeInput')
|
149 |
+
),
|
150 |
+
'show' => array(
|
151 |
+
'required' => false,
|
152 |
+
'sanitize_callback' => array($this, 'sanitizeInput')
|
153 |
+
),
|
154 |
+
);
|
155 |
+
|
156 |
+
//This hooks will adds params to query
|
157 |
+
$args = apply_filters('yasr_rest_rankings_args', $args);
|
158 |
+
|
159 |
+
$options = array(
|
160 |
+
'methods' => WP_REST_Server::READABLE,
|
161 |
+
'callback' => array($this, 'ranking'),
|
162 |
+
'args' => $args,
|
163 |
+
'permission_callback' => static function () {
|
164 |
+
return true;
|
165 |
+
}
|
166 |
+
);
|
167 |
+
|
168 |
+
register_rest_route(
|
169 |
+
$this->namespace . $this->version,
|
170 |
+
$base,
|
171 |
+
$options
|
172 |
+
);
|
173 |
+
}
|
174 |
+
|
175 |
+
/**
|
176 |
+
* @author Dario Curvino <@dudo>
|
177 |
+
* @since 2.5.2
|
178 |
+
*
|
179 |
+
* @param $request
|
180 |
+
*
|
181 |
+
* @return WP_Error|WP_REST_Response
|
182 |
+
*/
|
183 |
+
public function ranking($request){
|
184 |
+
/*
|
185 |
+
* Get cleaned params
|
186 |
+
*/
|
187 |
+
$source = $request['source'];
|
188 |
+
$sql_params = false;
|
189 |
+
|
190 |
+
$sql_params = apply_filters('yasr_rest_filter_ranking_request', $sql_params, $request);
|
191 |
+
|
192 |
+
$data_to_return = array(
|
193 |
+
'source' => $source
|
194 |
+
);
|
195 |
+
|
196 |
+
$no_data = false;
|
197 |
+
|
198 |
+
if($source === 'overall_rating') {
|
199 |
+
$overall_data = YasrRankingData::rankingOverallGetResults($sql_params);
|
200 |
+
if($overall_data === false){
|
201 |
+
$no_data = true;
|
202 |
+
}
|
203 |
+
else {
|
204 |
+
$data_to_return['data_overall'] = YasrRankings::rankingData($overall_data);
|
205 |
+
}
|
206 |
+
}
|
207 |
+
|
208 |
+
if($source === 'visitor_votes') {
|
209 |
+
$ranking = ($request['show'] === 'highest') ? $request['show'] : 'most';
|
210 |
+
$data_to_return['show'] = $ranking;
|
211 |
+
|
212 |
+
$vv_data = YasrRankingData::rankingVVGetResults($sql_params, $ranking);
|
213 |
+
if($vv_data === false){
|
214 |
+
$no_data = true;
|
215 |
+
}
|
216 |
+
else {
|
217 |
+
$data_to_return['data_vv'] = YasrRankings::rankingData($vv_data);
|
218 |
+
}
|
219 |
+
}
|
220 |
+
|
221 |
+
|
222 |
+
if ($no_data === true) {
|
223 |
+
return new WP_Error(
|
224 |
+
'no_overall_data',
|
225 |
+
__('No posts with overall ratings found.', 'yet-another-stars-rating'),
|
226 |
+
400
|
227 |
+
);
|
228 |
+
}
|
229 |
+
|
230 |
+
$response = new WP_REST_Response($data_to_return);
|
231 |
+
$response->set_status(200);
|
232 |
+
|
233 |
+
return $response;
|
234 |
+
}
|
235 |
+
|
236 |
+
|
237 |
/**
|
238 |
* Sanitizie input, must be public
|
239 |
*
|
244 |
* @return int|void|WP_Error
|
245 |
*/
|
246 |
public function sanitizeInput ($param, $request, $key) {
|
|
|
|
|
|
|
247 |
|
248 |
if($key === 'post_id') {
|
249 |
$post_id = (int)$param;
|
271 |
return $post_id;
|
272 |
}
|
273 |
|
274 |
+
if($key === 'set_id') {
|
275 |
+
return (int)$param;
|
276 |
+
}
|
277 |
+
|
278 |
if($key === 'visitor') {
|
279 |
return (int)$param;
|
280 |
}
|
281 |
+
|
282 |
+
if($key === 'source') {
|
283 |
+
if($param === 'overall_rating' || $param === 'visitor_votes') {
|
284 |
+
return trim($param);
|
285 |
+
}
|
286 |
+
}
|
287 |
+
|
288 |
+
if($key === 'show') {
|
289 |
+
if($param === 'highest') {
|
290 |
+
return $param;
|
291 |
+
}
|
292 |
+
return 'most';
|
293 |
+
}
|
294 |
+
|
295 |
+
$param = apply_filters('yasr_rest_sanitize', $key, $param);
|
296 |
+
|
297 |
+
return $param;
|
298 |
+
|
299 |
}
|
300 |
}
|
includes/rest/classes/YasrCustomFields.php
CHANGED
@@ -127,7 +127,7 @@ class YasrCustomFields extends WP_REST_Controller {
|
|
127 |
$post_types,
|
128 |
'yasr_all_itemtypes',
|
129 |
array(
|
130 |
-
'get_callback' => function() {return json_decode(
|
131 |
'update_callback' => null,
|
132 |
'schema' => $yasr_itemtype_schema
|
133 |
)
|
127 |
$post_types,
|
128 |
'yasr_all_itemtypes',
|
129 |
array(
|
130 |
+
'get_callback' => static function() {return json_decode(YASR_SUPPORTED_SCHEMA_TYPES, true); },
|
131 |
'update_callback' => null,
|
132 |
'schema' => $yasr_itemtype_schema
|
133 |
)
|
includes/shortcodes/classes/YasrOverallRating.php
CHANGED
@@ -130,7 +130,7 @@ class YasrOverallRating extends YasrShortcode {
|
|
130 |
*
|
131 |
*/
|
132 |
protected function customTextBefore() {
|
133 |
-
if (
|
134 |
//Get overall Rating
|
135 |
$this->overall_rating = YasrDatabaseRatings::getOverallRating();
|
136 |
|
130 |
*
|
131 |
*/
|
132 |
protected function customTextBefore() {
|
133 |
+
if (YASR_STARS_CUSTOM_TEXT === 1 && YASR_TEXT_BEFORE_OVERALL !== '') {
|
134 |
//Get overall Rating
|
135 |
$this->overall_rating = YasrDatabaseRatings::getOverallRating();
|
136 |
|
includes/shortcodes/classes/YasrRankings.php
CHANGED
@@ -32,56 +32,48 @@ class YasrRankings extends YasrShortcode {
|
|
32 |
protected $vv_highest_rated_table;
|
33 |
protected $vv_most_rated_table;
|
34 |
|
35 |
-
|
36 |
-
*
|
37 |
* */
|
38 |
public function returnHighestRatedOverall () {
|
39 |
$this->shortcode_html = '<!-- Yasr Most Or Highest Rated Shortcode-->';
|
40 |
-
|
41 |
-
|
42 |
-
|
43 |
-
$this->query_highest_rated_overall = $wpdb->get_results("
|
44 |
-
SELECT pm.meta_value AS overall_rating,
|
45 |
-
pm.post_id AS post_id
|
46 |
-
FROM $wpdb->postmeta AS pm,
|
47 |
-
$wpdb->posts AS p
|
48 |
-
WHERE pm.post_id = p.ID
|
49 |
-
AND p.post_status = 'publish'
|
50 |
-
AND pm.meta_key = 'yasr_overall_rating'
|
51 |
-
ORDER BY pm.meta_value DESC,
|
52 |
-
pm.post_id
|
53 |
-
LIMIT 10"
|
54 |
-
);
|
55 |
-
|
56 |
-
$this->loopHighestRatedOverall();
|
57 |
-
|
58 |
$this->shortcode_html .= '<!--End Yasr Top 10 highest Rated Shortcode-->';
|
59 |
-
return $this->shortcode_html;
|
60 |
|
|
|
61 |
}
|
62 |
|
63 |
-
|
|
|
|
|
|
|
|
|
|
|
|
|
64 |
if ($this->query_highest_rated_overall) {
|
|
|
65 |
$this->shortcode_html .= "<table class='yasr-table-chart'>";
|
66 |
|
67 |
-
|
68 |
-
|
69 |
-
|
70 |
$yasr_top_ten_html_id = 'yasr-highest_rated-' . str_shuffle(uniqid());
|
71 |
|
72 |
$this->returnTableRows(
|
73 |
-
$result
|
74 |
-
$result
|
75 |
null,
|
76 |
-
$post_title,
|
77 |
-
$link,
|
78 |
-
|
|
|
79 |
|
80 |
} //End foreach
|
81 |
$this->shortcode_html .= "</table>";
|
82 |
}
|
83 |
else {
|
84 |
-
_e("
|
85 |
}
|
86 |
|
87 |
}
|
@@ -96,40 +88,8 @@ class YasrRankings extends YasrShortcode {
|
|
96 |
public function vvReturnMostHighestRatedPost() {
|
97 |
$this->shortcode_html = '<!-- Yasr Most Or Highest Rated Shortcode-->';
|
98 |
|
99 |
-
|
100 |
-
|
101 |
-
$this->query_result_most_rated_visitor = $wpdb->get_results(
|
102 |
-
"SELECT post_id,
|
103 |
-
COUNT(post_id) AS number_of_votes,
|
104 |
-
SUM(vote) AS sum_votes
|
105 |
-
FROM " . YASR_LOG_TABLE . ",
|
106 |
-
$wpdb->posts AS p
|
107 |
-
WHERE post_id = p.ID
|
108 |
-
AND p.post_status = 'publish'
|
109 |
-
GROUP BY post_id
|
110 |
-
HAVING number_of_votes > 1
|
111 |
-
ORDER BY number_of_votes DESC,
|
112 |
-
post_id DESC
|
113 |
-
LIMIT 10"
|
114 |
-
);
|
115 |
-
|
116 |
-
//count run twice but access data only once: tested with query monitor and asked
|
117 |
-
//here http://stackoverflow.com/questions/39201235/does-count-run-twice/39201492
|
118 |
-
$this->query_result_highest_rated_visitor = $wpdb->get_results(
|
119 |
-
"SELECT post_id,
|
120 |
-
COUNT(post_id) AS number_of_votes,
|
121 |
-
(SUM(vote) / COUNT(post_id)) AS result
|
122 |
-
FROM " . YASR_LOG_TABLE . " ,
|
123 |
-
$wpdb->posts AS p
|
124 |
-
WHERE post_id = p.ID
|
125 |
-
AND p.post_status = 'publish'
|
126 |
-
GROUP BY post_id
|
127 |
-
HAVING COUNT(post_id) >= 2
|
128 |
-
ORDER BY result DESC,
|
129 |
-
number_of_votes DESC
|
130 |
-
LIMIT 10"
|
131 |
-
);
|
132 |
-
|
133 |
|
134 |
$this->vv_most_rated_table = "<table class='yasr-table-chart' id='yasr-most-rated-posts'>
|
135 |
<tr class='yasr-visitor-votes-title'>
|
@@ -162,8 +122,6 @@ class YasrRankings extends YasrShortcode {
|
|
162 |
</th>
|
163 |
</tr>";
|
164 |
|
165 |
-
|
166 |
-
|
167 |
$this->vvMostRated();
|
168 |
$this->vvHighestRated();
|
169 |
|
@@ -178,24 +136,20 @@ class YasrRankings extends YasrShortcode {
|
|
178 |
*/
|
179 |
protected function vvMostRated() {
|
180 |
if ($this->query_result_most_rated_visitor) {
|
181 |
-
|
182 |
$this->shortcode_html .= $this->vv_most_rated_table;
|
|
|
183 |
|
184 |
-
foreach ($
|
185 |
-
$rating = round($result->sum_votes / $result->number_of_votes, 1);
|
186 |
-
$post_title = wp_strip_all_tags(get_the_title($result->post_id));
|
187 |
-
$link = get_permalink($result->post_id); //Get permalink from post id
|
188 |
$yasr_top_ten_html_id = 'yasr-10-most-rated-' . str_shuffle(uniqid());
|
189 |
-
|
190 |
//print the rows
|
191 |
-
$this->returnTableRows(
|
192 |
-
$
|
193 |
-
$result
|
194 |
-
$
|
195 |
-
$
|
|
|
196 |
$yasr_top_ten_html_id
|
197 |
);
|
198 |
-
|
199 |
} //End foreach
|
200 |
$this->shortcode_html .= "</table>" ;
|
201 |
|
@@ -211,24 +165,20 @@ class YasrRankings extends YasrShortcode {
|
|
211 |
*/
|
212 |
protected function vvHighestRated () {
|
213 |
if ($this->query_result_highest_rated_visitor) {
|
214 |
-
|
215 |
$this->shortcode_html .= $this->vv_highest_rated_table;
|
|
|
216 |
|
217 |
-
foreach ($
|
218 |
-
$rating = round($result->result, 1);
|
219 |
-
$post_title = wp_strip_all_tags(get_the_title($result->post_id));
|
220 |
-
$link = get_permalink($result->post_id); //Get permalink from post id
|
221 |
$yasr_top_ten_html_id = 'yasr-10-highest-rater-' . str_shuffle(uniqid());
|
222 |
-
|
223 |
//print the rows
|
224 |
-
$this->returnTableRows(
|
225 |
-
$
|
226 |
-
$result
|
227 |
-
$
|
228 |
-
$
|
|
|
229 |
$yasr_top_ten_html_id
|
230 |
);
|
231 |
-
|
232 |
} //End foreach
|
233 |
|
234 |
$this->shortcode_html .= "</table>";
|
@@ -301,4 +251,35 @@ class YasrRankings extends YasrShortcode {
|
|
301 |
}
|
302 |
} //end function returnTableRows
|
303 |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
304 |
}
|
32 |
protected $vv_highest_rated_table;
|
33 |
protected $vv_most_rated_table;
|
34 |
|
35 |
+
/**
|
36 |
+
* Returns the shortcode for yasr_top_ten_highest_rated
|
37 |
* */
|
38 |
public function returnHighestRatedOverall () {
|
39 |
$this->shortcode_html = '<!-- Yasr Most Or Highest Rated Shortcode-->';
|
40 |
+
$this->query_highest_rated_overall = YasrRankingData::rankingOverallGetResults();
|
41 |
+
$this->returnTableOverall();
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
42 |
$this->shortcode_html .= '<!--End Yasr Top 10 highest Rated Shortcode-->';
|
|
|
43 |
|
44 |
+
return $this->shortcode_html;
|
45 |
}
|
46 |
|
47 |
+
/**
|
48 |
+
* @author Dario Curvino <@dudo>
|
49 |
+
*
|
50 |
+
* @param false $text_position
|
51 |
+
* @param false $text
|
52 |
+
*/
|
53 |
+
protected function returnTableOverall($text_position=false, $text=false) {
|
54 |
if ($this->query_highest_rated_overall) {
|
55 |
+
|
56 |
$this->shortcode_html .= "<table class='yasr-table-chart'>";
|
57 |
|
58 |
+
$array_with_title = self::rankingData($this->query_highest_rated_overall);
|
59 |
+
|
60 |
+
foreach ($array_with_title as $result) {
|
61 |
$yasr_top_ten_html_id = 'yasr-highest_rated-' . str_shuffle(uniqid());
|
62 |
|
63 |
$this->returnTableRows(
|
64 |
+
$result['post_id'],
|
65 |
+
$result['rating'],
|
66 |
null,
|
67 |
+
$result['post_title'],
|
68 |
+
$result['link'],
|
69 |
+
$yasr_top_ten_html_id
|
70 |
+
);
|
71 |
|
72 |
} //End foreach
|
73 |
$this->shortcode_html .= "</table>";
|
74 |
}
|
75 |
else {
|
76 |
+
_e("No data found", 'yet-another-stars-rating');
|
77 |
}
|
78 |
|
79 |
}
|
88 |
public function vvReturnMostHighestRatedPost() {
|
89 |
$this->shortcode_html = '<!-- Yasr Most Or Highest Rated Shortcode-->';
|
90 |
|
91 |
+
$this->query_result_most_rated_visitor = YasrRankingData::rankingVVGetResults(false, 'most');
|
92 |
+
$this->query_result_highest_rated_visitor = YasrRankingData::rankingVVGetResults(false, 'highest');
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
93 |
|
94 |
$this->vv_most_rated_table = "<table class='yasr-table-chart' id='yasr-most-rated-posts'>
|
95 |
<tr class='yasr-visitor-votes-title'>
|
122 |
</th>
|
123 |
</tr>";
|
124 |
|
|
|
|
|
125 |
$this->vvMostRated();
|
126 |
$this->vvHighestRated();
|
127 |
|
136 |
*/
|
137 |
protected function vvMostRated() {
|
138 |
if ($this->query_result_most_rated_visitor) {
|
|
|
139 |
$this->shortcode_html .= $this->vv_most_rated_table;
|
140 |
+
$array_with_title = self::rankingData($this->query_result_most_rated_visitor);
|
141 |
|
142 |
+
foreach ($array_with_title as $result) {
|
|
|
|
|
|
|
143 |
$yasr_top_ten_html_id = 'yasr-10-most-rated-' . str_shuffle(uniqid());
|
|
|
144 |
//print the rows
|
145 |
+
$this->returnTableRows(
|
146 |
+
$result['post_id'],
|
147 |
+
$result['rating'],
|
148 |
+
$result['number_of_votes'],
|
149 |
+
$result['post_title'],
|
150 |
+
$result['link'],
|
151 |
$yasr_top_ten_html_id
|
152 |
);
|
|
|
153 |
} //End foreach
|
154 |
$this->shortcode_html .= "</table>" ;
|
155 |
|
165 |
*/
|
166 |
protected function vvHighestRated () {
|
167 |
if ($this->query_result_highest_rated_visitor) {
|
|
|
168 |
$this->shortcode_html .= $this->vv_highest_rated_table;
|
169 |
+
$array_with_title = self::rankingData($this->query_result_highest_rated_visitor);
|
170 |
|
171 |
+
foreach ($array_with_title as $result) {
|
|
|
|
|
|
|
172 |
$yasr_top_ten_html_id = 'yasr-10-highest-rater-' . str_shuffle(uniqid());
|
|
|
173 |
//print the rows
|
174 |
+
$this->returnTableRows(
|
175 |
+
$result['post_id'],
|
176 |
+
$result['rating'],
|
177 |
+
$result['number_of_votes'],
|
178 |
+
$result['post_title'],
|
179 |
+
$result['link'],
|
180 |
$yasr_top_ten_html_id
|
181 |
);
|
|
|
182 |
} //End foreach
|
183 |
|
184 |
$this->shortcode_html .= "</table>";
|
251 |
}
|
252 |
} //end function returnTableRows
|
253 |
|
254 |
+
/**
|
255 |
+
* Returns an array with post titles and links
|
256 |
+
*
|
257 |
+
* @author Dario Curvino <@dudo>
|
258 |
+
* @since 2.5.2
|
259 |
+
*
|
260 |
+
* @param $query_result array to loop; MUST have:
|
261 |
+
* post_id
|
262 |
+
* rating
|
263 |
+
* (optional) number_of_votes
|
264 |
+
*
|
265 |
+
* @return array
|
266 |
+
*/
|
267 |
+
public static function rankingData($query_result) {
|
268 |
+
$data_array = array();
|
269 |
+
|
270 |
+
$i=0;
|
271 |
+
foreach ($query_result as $result) {
|
272 |
+
$data_array[$i]['post_id'] = (int)$result->post_id;
|
273 |
+
$data_array[$i]['rating'] = round($result->rating,1);
|
274 |
+
if(isset($result->number_of_votes)){
|
275 |
+
$data_array[$i]['number_of_votes'] = (int)$result->number_of_votes;
|
276 |
+
}
|
277 |
+
$data_array[$i]['post_title'] = wp_strip_all_tags(get_the_title($result->post_id));
|
278 |
+
$data_array[$i]['link'] = get_permalink($result->post_id); //Get permalink from post id
|
279 |
+
$i++;
|
280 |
+
} //End foreach
|
281 |
+
|
282 |
+
return $data_array;
|
283 |
+
}
|
284 |
+
|
285 |
}
|
includes/shortcodes/classes/YasrVisitorMultiSet.php
CHANGED
@@ -104,6 +104,7 @@ class YasrVisitorMultiSet extends YasrMultiSet {
|
|
104 |
}
|
105 |
|
106 |
public function checkCookie() {
|
|
|
107 |
$yasr_cookiename = apply_filters('yasr_mv_cookie', 'yasr_multi_visitor_cookie');
|
108 |
|
109 |
//Check cookie and if voting is allowed only to logged in users
|
104 |
}
|
105 |
|
106 |
public function checkCookie() {
|
107 |
+
//custommize cookie name for yasr_multi_visitor_cookie
|
108 |
$yasr_cookiename = apply_filters('yasr_mv_cookie', 'yasr_multi_visitor_cookie');
|
109 |
|
110 |
//Check cookie and if voting is allowed only to logged in users
|
includes/shortcodes/classes/YasrVisitorVotes.php
CHANGED
@@ -106,7 +106,7 @@ class YasrVisitorVotes extends YasrShortcode {
|
|
106 |
} else {
|
107 |
$this->readonly = 'true';
|
108 |
}
|
109 |
-
|
110 |
$this->textBeforeAfterStars($number_of_votes, $average_rating);
|
111 |
|
112 |
$this->shortcode_html .= "<div id='$htmlid'
|
@@ -198,7 +198,7 @@ class YasrVisitorVotes extends YasrShortcode {
|
|
198 |
//If user has already rated
|
199 |
if ($vote_if_user_already_rated) {
|
200 |
$span_bottom_line_content = "<span class='yasr-already-voted-text'>";
|
201 |
-
if (
|
202 |
$span_bottom_line_content .= YASR_CUSTOM_TEXT_USER_VOTED;
|
203 |
} else {
|
204 |
$span_bottom_line_content .=
|
@@ -210,7 +210,7 @@ class YasrVisitorVotes extends YasrShortcode {
|
|
210 |
|
211 |
elseif ($stars_enabled === 'false_already_voted') {
|
212 |
$span_bottom_line_content = "<span class='yasr-already-voted-text'>";
|
213 |
-
if (
|
214 |
$span_bottom_line_content .= YASR_CUSTOM_TEXT_USER_VOTED;
|
215 |
} else {
|
216 |
$span_bottom_line_content .=
|
@@ -232,7 +232,7 @@ class YasrVisitorVotes extends YasrShortcode {
|
|
232 |
}
|
233 |
|
234 |
if($span_bottom_line_content !== false) {
|
235 |
-
$span_bottom_line
|
236 |
$span_bottom_line .= $span_bottom_line_content;
|
237 |
$span_bottom_line .= '</span>';
|
238 |
}
|
@@ -269,9 +269,12 @@ class YasrVisitorVotes extends YasrShortcode {
|
|
269 |
$this->number_of_votes_container = '<span id="yasr-vv-votes-number-container-'. $this->unique_id .'">';
|
270 |
$this->average_rating_container = '<span id="yasr-vv-average-container-'. $this->unique_id .'">';
|
271 |
|
272 |
-
|
273 |
-
|
|
|
|
|
274 |
|
|
|
275 |
|
276 |
$this->span_text_after_stars .= '</span>';
|
277 |
|
@@ -289,28 +292,25 @@ class YasrVisitorVotes extends YasrShortcode {
|
|
289 |
*/
|
290 |
protected function textBeforeStars($number_of_votes, $average_rating) {
|
291 |
//default value
|
292 |
-
$shortcode_html = false;
|
293 |
|
294 |
-
|
295 |
-
|
296 |
-
|
297 |
-
|
298 |
-
|
299 |
-
|
300 |
-
|
301 |
-
|
302 |
-
|
303 |
-
|
304 |
-
|
305 |
-
);
|
306 |
|
307 |
-
|
308 |
|
309 |
-
|
310 |
-
|
311 |
-
|
312 |
|
313 |
-
}
|
314 |
|
315 |
//if filters doesn't exists, put $shortcode_html inside $this->shortcode_html
|
316 |
$this->shortcode_html .= apply_filters('yasr_vv_txt_before', $shortcode_html);
|
@@ -340,7 +340,7 @@ class YasrVisitorVotes extends YasrShortcode {
|
|
340 |
. '</span>'
|
341 |
. '/5]';
|
342 |
|
343 |
-
if (
|
344 |
$text_after_star = str_replace(
|
345 |
array(
|
346 |
'%total_count%',
|
@@ -356,6 +356,7 @@ class YasrVisitorVotes extends YasrShortcode {
|
|
356 |
$span_text_after_stars = $text_after_star;
|
357 |
}
|
358 |
|
|
|
359 |
$this->span_text_after_stars .= apply_filters('yasr_vv_txt_after', $span_text_after_stars);
|
360 |
}
|
361 |
|
@@ -367,42 +368,38 @@ class YasrVisitorVotes extends YasrShortcode {
|
|
367 |
*
|
368 |
* @return string
|
369 |
*/
|
370 |
-
|
371 |
-
|
372 |
-
global $yasr_plugin_imported;
|
373 |
|
374 |
-
|
375 |
-
|
376 |
-
|
377 |
|
378 |
-
|
379 |
-
|
380 |
-
|
381 |
-
|
382 |
-
|
383 |
|
384 |
-
|
385 |
-
|
386 |
-
|
387 |
|
388 |
-
|
389 |
-
|
390 |
-
|
391 |
|
392 |
-
|
393 |
-
|
394 |
|
395 |
-
|
|
|
|
|
|
|
|
|
|
|
|
|
396 |
|
397 |
-
//if one of these plugin has been imported and post is older then import, hide stats
|
398 |
-
if ($post_date < $plugin_import_date) {
|
399 |
-
$span_dashicon = "";
|
400 |
-
}
|
401 |
-
} //End if $yasr_plugin_imported
|
402 |
-
} else {
|
403 |
-
//Yasr_visitor_stats are disabled
|
404 |
-
$span_dashicon = "";
|
405 |
-
}
|
406 |
return $span_dashicon;
|
407 |
}
|
408 |
|
@@ -410,6 +407,8 @@ class YasrVisitorVotes extends YasrShortcode {
|
|
410 |
* Return Yasr Visitor Votes
|
411 |
*
|
412 |
* @param $cookie_value int|bool
|
|
|
|
|
413 |
* @return string
|
414 |
*/
|
415 |
protected function returnYasrVisitorVotes ($cookie_value, $post_id) {
|
@@ -417,7 +416,11 @@ class YasrVisitorVotes extends YasrShortcode {
|
|
417 |
class='yasr-visitor-votes-after-stars'>";
|
418 |
|
419 |
$this->shortcode_html .= $span_container_after_stars;
|
420 |
-
|
|
|
|
|
|
|
|
|
421 |
$this->shortcode_html .= $this->span_text_after_stars;
|
422 |
if(YASR_ENABLE_AJAX !== 'yes') {
|
423 |
$this->shortcode_html .= self::showTextBelowStars($cookie_value, $post_id);
|
106 |
} else {
|
107 |
$this->readonly = 'true';
|
108 |
}
|
109 |
+
|
110 |
$this->textBeforeAfterStars($number_of_votes, $average_rating);
|
111 |
|
112 |
$this->shortcode_html .= "<div id='$htmlid'
|
198 |
//If user has already rated
|
199 |
if ($vote_if_user_already_rated) {
|
200 |
$span_bottom_line_content = "<span class='yasr-already-voted-text'>";
|
201 |
+
if (YASR_STARS_CUSTOM_TEXT === 1 && YASR_CUSTOM_TEXT_USER_VOTED !== '') {
|
202 |
$span_bottom_line_content .= YASR_CUSTOM_TEXT_USER_VOTED;
|
203 |
} else {
|
204 |
$span_bottom_line_content .=
|
210 |
|
211 |
elseif ($stars_enabled === 'false_already_voted') {
|
212 |
$span_bottom_line_content = "<span class='yasr-already-voted-text'>";
|
213 |
+
if (YASR_STARS_CUSTOM_TEXT === 1 && YASR_CUSTOM_TEXT_USER_VOTED !== '') {
|
214 |
$span_bottom_line_content .= YASR_CUSTOM_TEXT_USER_VOTED;
|
215 |
} else {
|
216 |
$span_bottom_line_content .=
|
232 |
}
|
233 |
|
234 |
if($span_bottom_line_content !== false) {
|
235 |
+
$span_bottom_line = "<span class='yasr-small-block-bold'>";
|
236 |
$span_bottom_line .= $span_bottom_line_content;
|
237 |
$span_bottom_line .= '</span>';
|
238 |
}
|
269 |
$this->number_of_votes_container = '<span id="yasr-vv-votes-number-container-'. $this->unique_id .'">';
|
270 |
$this->average_rating_container = '<span id="yasr-vv-average-container-'. $this->unique_id .'">';
|
271 |
|
272 |
+
//this should run only if settings is enabled
|
273 |
+
if (YASR_STARS_CUSTOM_TEXT === 1 && YASR_TEXT_BEFORE_VISITOR_RATING !== '') {
|
274 |
+
$this->textBeforeStars($number_of_votes, $average_rating);
|
275 |
+
}
|
276 |
|
277 |
+
$this->textAfterStars($number_of_votes, $average_rating);
|
278 |
|
279 |
$this->span_text_after_stars .= '</span>';
|
280 |
|
292 |
*/
|
293 |
protected function textBeforeStars($number_of_votes, $average_rating) {
|
294 |
//default value
|
|
|
295 |
|
296 |
+
$text_before_star = str_replace(
|
297 |
+
array(
|
298 |
+
'%total_count%',
|
299 |
+
'%average%'
|
300 |
+
),
|
301 |
+
array(
|
302 |
+
$this->number_of_votes_container . $number_of_votes . '</span>',
|
303 |
+
$this->average_rating_container . $average_rating . '</span>'
|
304 |
+
),
|
305 |
+
YASR_TEXT_BEFORE_VISITOR_RATING
|
306 |
+
);
|
|
|
307 |
|
308 |
+
$class_text_before = 'yasr-custom-text-vv-before yasr-custom-text-vv-before-'.$this->post_id;
|
309 |
|
310 |
+
$shortcode_html = '<div class="'.$class_text_before.'">'
|
311 |
+
. $text_before_star .
|
312 |
+
'</div>';
|
313 |
|
|
|
314 |
|
315 |
//if filters doesn't exists, put $shortcode_html inside $this->shortcode_html
|
316 |
$this->shortcode_html .= apply_filters('yasr_vv_txt_before', $shortcode_html);
|
340 |
. '</span>'
|
341 |
. '/5]';
|
342 |
|
343 |
+
if (YASR_STARS_CUSTOM_TEXT === 1 && YASR_TEXT_AFTER_VISITOR_RATING !== '') {
|
344 |
$text_after_star = str_replace(
|
345 |
array(
|
346 |
'%total_count%',
|
356 |
$span_text_after_stars = $text_after_star;
|
357 |
}
|
358 |
|
359 |
+
//use this to costumize text after stars
|
360 |
$this->span_text_after_stars .= apply_filters('yasr_vv_txt_after', $span_text_after_stars);
|
361 |
}
|
362 |
|
368 |
*
|
369 |
* @return string
|
370 |
*/
|
371 |
+
public function visitorStats () {
|
372 |
+
global $yasr_plugin_imported;
|
|
|
373 |
|
374 |
+
//default
|
375 |
+
$span_dashicon = "<span class='dashicons dashicons-chart-bar yasr-dashicons-visitor-stats'
|
376 |
+
data-postid='$this->post_id' id='yasr-total-average-dashicon-$this->post_id'></span>";
|
377 |
|
378 |
+
if (is_array($yasr_plugin_imported)) {
|
379 |
+
$plugin_import_date = null; //avoid undefined
|
380 |
+
if (array_key_exists('wppr', $yasr_plugin_imported)) {
|
381 |
+
$plugin_import_date = $yasr_plugin_imported['wppr']['date'];
|
382 |
+
}
|
383 |
|
384 |
+
if (array_key_exists('kksr', $yasr_plugin_imported)) {
|
385 |
+
$plugin_import_date = $yasr_plugin_imported['kksr']['date'];
|
386 |
+
}
|
387 |
|
388 |
+
if (array_key_exists('mr', $yasr_plugin_imported)) {
|
389 |
+
$plugin_import_date = $yasr_plugin_imported['mr']['date'];
|
390 |
+
}
|
391 |
|
392 |
+
//remove hour from date
|
393 |
+
$plugin_import_date=strtok($plugin_import_date,' ');
|
394 |
|
395 |
+
$post_date = get_the_date('Y-m-d', $this->post_id);
|
396 |
+
|
397 |
+
//if one of these plugin has been imported and post is older then import, hide stats
|
398 |
+
if ($post_date < $plugin_import_date) {
|
399 |
+
$span_dashicon = "";
|
400 |
+
}
|
401 |
+
} //End if $yasr_plugin_imported
|
402 |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
403 |
return $span_dashicon;
|
404 |
}
|
405 |
|
407 |
* Return Yasr Visitor Votes
|
408 |
*
|
409 |
* @param $cookie_value int|bool
|
410 |
+
* @param $post_id
|
411 |
+
*
|
412 |
* @return string
|
413 |
*/
|
414 |
protected function returnYasrVisitorVotes ($cookie_value, $post_id) {
|
416 |
class='yasr-visitor-votes-after-stars'>";
|
417 |
|
418 |
$this->shortcode_html .= $span_container_after_stars;
|
419 |
+
|
420 |
+
if (YASR_VISITORS_STATS === 'yes') {
|
421 |
+
$this->shortcode_html .= $this->visitorStats();
|
422 |
+
}
|
423 |
+
|
424 |
$this->shortcode_html .= $this->span_text_after_stars;
|
425 |
if(YASR_ENABLE_AJAX !== 'yes') {
|
426 |
$this->shortcode_html .= self::showTextBelowStars($cookie_value, $post_id);
|
includes/shortcodes/yasr-shortcode-ajax.php
CHANGED
@@ -127,6 +127,7 @@ function yasr_insert_visitor_votes_callback() {
|
|
127 |
$user_votes_sum = $row_exists['sum_votes'];
|
128 |
$number_of_votes = $row_exists['number_of_votes'];
|
129 |
|
|
|
130 |
$cookiename = apply_filters('yasr_vv_cookie', 'yasr_visitor_vote_cookie');
|
131 |
|
132 |
$data_to_save = array(
|
@@ -139,7 +140,10 @@ function yasr_insert_visitor_votes_callback() {
|
|
139 |
$total_rating = ($user_votes_sum / $number_of_votes);
|
140 |
$medium_rating = round($total_rating, 1);
|
141 |
|
|
|
142 |
$rating_saved_text = __('Rating Saved', 'yet-another-stars-rating');
|
|
|
|
|
143 |
$rating_saved_text = apply_filters('yasr_vv_saved_text', $rating_saved_text);
|
144 |
|
145 |
$html_to_return = '<span class="yasr-total-average-text"> ['
|
127 |
$user_votes_sum = $row_exists['sum_votes'];
|
128 |
$number_of_votes = $row_exists['number_of_votes'];
|
129 |
|
130 |
+
//customize visitor_votes cookie name
|
131 |
$cookiename = apply_filters('yasr_vv_cookie', 'yasr_visitor_vote_cookie');
|
132 |
|
133 |
$data_to_save = array(
|
140 |
$total_rating = ($user_votes_sum / $number_of_votes);
|
141 |
$medium_rating = round($total_rating, 1);
|
142 |
|
143 |
+
//Default text when rating is saved
|
144 |
$rating_saved_text = __('Rating Saved', 'yet-another-stars-rating');
|
145 |
+
|
146 |
+
//Customize it
|
147 |
$rating_saved_text = apply_filters('yasr_vv_saved_text', $rating_saved_text);
|
148 |
|
149 |
$html_to_return = '<span class="yasr-total-average-text"> ['
|
includes/yasr-includes-functions.php
CHANGED
@@ -196,7 +196,7 @@ function yasr_setcookie($cookiename, $data_to_save) {
|
|
196 |
$domain = COOKIE_DOMAIN;
|
197 |
|
198 |
//this is for multisite support
|
199 |
-
if(defined(DOMAIN_CURRENT_SITE)) {
|
200 |
$domain = DOMAIN_CURRENT_SITE;
|
201 |
}
|
202 |
|
196 |
$domain = COOKIE_DOMAIN;
|
197 |
|
198 |
//this is for multisite support
|
199 |
+
if(defined('DOMAIN_CURRENT_SITE')) {
|
200 |
$domain = DOMAIN_CURRENT_SITE;
|
201 |
}
|
202 |
|
includes/yasr-includes-init.php
CHANGED
@@ -116,12 +116,12 @@ if(isset($yasr_stored_options['show_visitor_votes_in_loop'])) {
|
|
116 |
}
|
117 |
|
118 |
if(isset($yasr_stored_options['text_before_stars'])) {
|
119 |
-
define('
|
120 |
} else {
|
121 |
-
define('
|
122 |
}
|
123 |
|
124 |
-
if (
|
125 |
define(
|
126 |
'YASR_TEXT_BEFORE_OVERALL',
|
127 |
htmlspecialchars_decode($yasr_stored_options['text_before_overall'])
|
116 |
}
|
117 |
|
118 |
if(isset($yasr_stored_options['text_before_stars'])) {
|
119 |
+
define('YASR_STARS_CUSTOM_TEXT', (int)$yasr_stored_options['text_before_stars']);
|
120 |
} else {
|
121 |
+
define('YASR_STARS_CUSTOM_TEXT', null);
|
122 |
}
|
123 |
|
124 |
+
if (YASR_STARS_CUSTOM_TEXT === 1) {
|
125 |
define(
|
126 |
'YASR_TEXT_BEFORE_OVERALL',
|
127 |
htmlspecialchars_decode($yasr_stored_options['text_before_overall'])
|
public/classes/YasrPublicFilters.php
CHANGED
@@ -12,18 +12,21 @@ if ( ! defined( 'ABSPATH' ) ) {
|
|
12 |
* Class YasrPublicFilters
|
13 |
*/
|
14 |
class YasrPublicFilters {
|
15 |
-
|
|
|
16 |
|
17 |
// Auto insert overall rating and visitor rating
|
18 |
if (YASR_AUTO_INSERT_ENABLED === 1) {
|
19 |
-
add_filter('the_content', '
|
20 |
}
|
21 |
|
22 |
-
add_filter('the_content', '
|
23 |
|
24 |
//stars next to the title
|
25 |
if (YASR_STARS_TITLE === 'yes') {
|
26 |
-
add_filter('the_title', '
|
|
|
|
|
27 |
}
|
28 |
}
|
29 |
|
@@ -50,16 +53,16 @@ class YasrPublicFilters {
|
|
50 |
$excluded_cpt = apply_filters('yasr_auto_insert_exclude_cpt', $excluded_cpt);
|
51 |
|
52 |
//Excluded_cpt must be an array
|
53 |
-
if(is_array($excluded_cpt) && !empty($excluded_cpt)){
|
54 |
|
55 |
//sanitize
|
56 |
-
$excluded_cpt = filter_var_array($excluded_cpt,FILTER_SANITIZE_STRING);
|
57 |
|
58 |
$post_type = get_post_type();
|
59 |
|
60 |
//if one element in the array is found, return content
|
61 |
-
foreach($excluded_cpt as $cpt) {
|
62 |
-
if($cpt === $post_type) {
|
63 |
return $content;
|
64 |
}
|
65 |
}
|
@@ -73,13 +76,15 @@ class YasrPublicFilters {
|
|
73 |
$shortcode_align = 'center';
|
74 |
}
|
75 |
|
76 |
-
$container_div_overall='<div style="text-align:'
|
77 |
-
$container_div_visitor='<div style="text-align:'
|
78 |
-
$closing_div
|
79 |
|
80 |
$auto_insert_shortcode = null; //To avoid undefined variable notice outside the loop (if (is_singular) )
|
81 |
-
$overall_rating_code
|
82 |
-
|
|
|
|
|
83 |
|
84 |
//avoid undefined
|
85 |
$content_and_stars = false;
|
@@ -94,7 +99,8 @@ class YasrPublicFilters {
|
|
94 |
$content_and_stars = $content . $overall_rating_code;
|
95 |
break;
|
96 |
} //End Switch
|
97 |
-
}
|
|
|
98 |
switch (YASR_AUTO_INSERT_WHERE) {
|
99 |
case 'top':
|
100 |
$content_and_stars = $visitor_votes_code . $content;
|
@@ -104,7 +110,8 @@ class YasrPublicFilters {
|
|
104 |
$content_and_stars = $content . $visitor_votes_code;
|
105 |
break;
|
106 |
} //End Switch
|
107 |
-
}
|
|
|
108 |
switch (YASR_AUTO_INSERT_WHERE) {
|
109 |
case 'top':
|
110 |
$content_and_stars = $overall_rating_code . $visitor_votes_code . $content;
|
@@ -160,21 +167,22 @@ class YasrPublicFilters {
|
|
160 |
return $content;
|
161 |
}
|
162 |
|
|
|
163 |
$overall_rating = YasrDatabaseRatings::getOverallRating();
|
164 |
-
$visitor_votes
|
165 |
|
166 |
if (!$overall_rating && !$visitor_votes['number_of_votes'] && !$visitor_votes['sum_votes']) {
|
167 |
return $content;
|
168 |
}
|
169 |
|
170 |
//can't be between 0.1 and 1
|
171 |
-
if($overall_rating > 0 && $overall_rating < 1) {
|
172 |
$overall_rating = 1;
|
173 |
}
|
174 |
|
175 |
-
$is_post_a_review = get_post_meta(
|
176 |
|
177 |
-
$script_type
|
178 |
$end_script_type = '</script>';
|
179 |
|
180 |
$review_choosen = yasr_get_itemType();
|
@@ -197,9 +205,9 @@ class YasrPublicFilters {
|
|
197 |
$author = get_the_author();
|
198 |
|
199 |
//use this hook to change the itemType name
|
200 |
-
$review_name = wp_strip_all_tags(apply_filters('yasr_filter_schema_title',
|
201 |
|
202 |
-
$date
|
203 |
$date_modified = get_the_modified_date('c');
|
204 |
|
205 |
$post_image_url = ''; //avoid undefined
|
@@ -213,7 +221,8 @@ class YasrPublicFilters {
|
|
213 |
|
214 |
$post_image_size = @getimagesize($logo_image_url_absolute); //the @ should be useless, just to be safe
|
215 |
$logo_image_size = @getimagesize($logo_image_url_absolute); //the @ should be useless, just to be safe
|
216 |
-
}
|
|
|
217 |
$post_image_size[0] = 0;
|
218 |
$post_image_size[1] = 0;
|
219 |
$logo_image_size[0] = 0;
|
@@ -222,18 +231,20 @@ class YasrPublicFilters {
|
|
222 |
|
223 |
//if exists featuread image get the url and overwrite the variable
|
224 |
if (has_post_thumbnail()) {
|
225 |
-
$post_image_url
|
226 |
$post_image_url_absolute = $_SERVER['DOCUMENT_ROOT'] . parse_url($post_image_url, PHP_URL_PATH);
|
227 |
-
$post_image_size
|
|
|
|
|
228 |
}
|
229 |
|
230 |
$rich_snippet['@type'] = $review_choosen;
|
231 |
$rich_snippet['name'] = $review_name;
|
232 |
-
$cleaned_content
|
233 |
|
234 |
-
$rich_snippet['description'] = wp_trim_words(
|
235 |
|
236 |
-
$rich_snippet['image']
|
237 |
'@type' => 'ImageObject',
|
238 |
'url' => $post_image_url,
|
239 |
'width' => $post_image_size[0],
|
@@ -241,15 +252,11 @@ class YasrPublicFilters {
|
|
241 |
);
|
242 |
|
243 |
$publisher_image_index = 'logo';
|
244 |
-
if(YASR_PUBLISHER_TYPE === 'Person') {
|
245 |
$publisher_image_index = 'image';
|
246 |
}
|
247 |
|
248 |
-
|
249 |
-
$rich_snippet['@type'] = 'LocalBusiness';
|
250 |
-
}
|
251 |
-
|
252 |
-
elseif ($review_choosen === 'Other' || $review_choosen === 'BlogPosting') {
|
253 |
$rich_snippet['datePublished'] = $date;
|
254 |
$rich_snippet['headline'] = $review_name;
|
255 |
$rich_snippet['mainEntityOfPage'] = array(
|
@@ -262,7 +269,8 @@ class YasrPublicFilters {
|
|
262 |
);
|
263 |
$rich_snippet['publisher'] = array(
|
264 |
'@type' => 'Organization',
|
265 |
-
'name' => wp_strip_all_tags(YASR_PUBLISHER_NAME),
|
|
|
266 |
'logo' => array(
|
267 |
'@type' => 'ImageObject',
|
268 |
'url' => $logo_image_url,
|
@@ -282,8 +290,8 @@ class YasrPublicFilters {
|
|
282 |
|
283 |
}
|
284 |
|
285 |
-
//
|
286 |
-
if ($review_choosen !== '
|
287 |
if ($overall_rating) {
|
288 |
$rich_snippet['Review'] = array(
|
289 |
'@type' => 'Review',
|
@@ -293,9 +301,9 @@ class YasrPublicFilters {
|
|
293 |
'@type' => 'Person',
|
294 |
'name' => $author
|
295 |
),
|
296 |
-
'datePublished'
|
297 |
-
'dateModified'
|
298 |
-
'reviewRating'
|
299 |
'@type' => 'Rating',
|
300 |
'ratingValue' => $overall_rating,
|
301 |
'bestRating' => 5,
|
@@ -306,7 +314,7 @@ class YasrPublicFilters {
|
|
306 |
|
307 |
//if both are included, google will index AggregateRating instead of Review.
|
308 |
//So, is post is selected as review, exclude AggregateRating
|
309 |
-
if($is_post_a_review !== 'yes') {
|
310 |
if ($visitor_votes) {
|
311 |
if ($visitor_votes['sum_votes'] !== 0 && $visitor_votes['number_of_votes'] !== 0) {
|
312 |
$average_rating = $visitor_votes['sum_votes'] / $visitor_votes['number_of_votes'];
|
@@ -324,10 +332,11 @@ class YasrPublicFilters {
|
|
324 |
}
|
325 |
}
|
326 |
|
327 |
-
if(isset($rich_snippet['Review']) || $review_choosen === '
|
328 |
$publisher = array(
|
329 |
'@type' => YASR_PUBLISHER_TYPE,
|
330 |
-
'name' => wp_strip_all_tags(
|
|
|
331 |
$publisher_image_index => array(
|
332 |
'@type' => 'ImageObject',
|
333 |
'url' => $logo_image_url,
|
@@ -337,9 +346,10 @@ class YasrPublicFilters {
|
|
337 |
);
|
338 |
|
339 |
/** @noinspection NotOptimalIfConditionsInspection */
|
340 |
-
if(isset($rich_snippet['Review'])) {
|
341 |
$rich_snippet['Review']['publisher'] = $publisher;
|
342 |
-
}
|
|
|
343 |
$rich_snippet['publisher'] = $publisher;
|
344 |
}
|
345 |
}
|
@@ -362,19 +372,18 @@ class YasrPublicFilters {
|
|
362 |
|
363 |
/**
|
364 |
* @since 2.4.3
|
365 |
-
*
|
366 |
* Filter the_title to show stars next it
|
367 |
*
|
368 |
* @param $title
|
369 |
*
|
370 |
* @return string
|
371 |
*/
|
372 |
-
public
|
373 |
|
374 |
-
if(in_the_loop()) {
|
375 |
$post_id = get_the_ID();
|
376 |
|
377 |
-
if(YASR_STARS_TITLE_EXCLUDE_PAGES === 'yes' && get_post_type($post_id) === 'page') {
|
378 |
return $title;
|
379 |
}
|
380 |
|
@@ -385,9 +394,10 @@ class YasrPublicFilters {
|
|
385 |
$stored_votes = YasrDatabaseRatings::getVisitorVotes();
|
386 |
|
387 |
$number_of_votes = $stored_votes['number_of_votes'];
|
388 |
-
if (
|
389 |
$average_rating = $stored_votes['sum_votes'] / $number_of_votes;
|
390 |
-
}
|
|
|
391 |
$average_rating = 0;
|
392 |
}
|
393 |
|
@@ -409,25 +419,27 @@ class YasrPublicFilters {
|
|
409 |
|
410 |
$vv_widget .= "<span class='yasr-stars-title-average'>$average_rating ($number_of_votes)</span>";
|
411 |
|
412 |
-
//Use this hook to customize widget
|
413 |
//if doesn't exists a filter for yasr_title_vv_widget, put $vv_widget into $content_after_title
|
414 |
$content_after_title = apply_filters('yasr_title_vv_widget', $vv_widget, $stored_votes);
|
415 |
}
|
416 |
|
417 |
if (YASR_STARS_TITLE_WHAT === 'overall_rating') {
|
418 |
-
$overall_rating
|
419 |
|
420 |
//first, overall widget contains overall rating
|
421 |
$overall_widget = $overall_rating;
|
422 |
|
423 |
//only if overall rating > 0
|
424 |
-
if($overall_rating > 0) {
|
425 |
$overall_rating_obj = new YasrOverallRating(false, false);
|
426 |
-
$overall_attributes = $overall_rating_obj->returnAttributes(
|
|
|
|
|
427 |
|
428 |
-
$overall_widget
|
429 |
-
$overall_widget
|
430 |
-
$overall_widget
|
431 |
}
|
432 |
|
433 |
//Use this hook to customize widget overall
|
@@ -436,17 +448,17 @@ class YasrPublicFilters {
|
|
436 |
}
|
437 |
|
438 |
//if only in archive pages
|
439 |
-
if (
|
440 |
-
if (
|
441 |
return $title . $content_after_title;
|
442 |
}
|
443 |
} //if only in single posts/pages
|
444 |
-
elseif (
|
445 |
-
if (
|
446 |
return $title . $content_after_title;
|
447 |
}
|
448 |
} //always return in both
|
449 |
-
elseif (
|
450 |
return $title . $content_after_title;
|
451 |
} //else return just the title (should never happens)
|
452 |
else {
|
@@ -457,4 +469,23 @@ class YasrPublicFilters {
|
|
457 |
//if not in the loop
|
458 |
return $title;
|
459 |
}
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
460 |
}
|
12 |
* Class YasrPublicFilters
|
13 |
*/
|
14 |
class YasrPublicFilters {
|
15 |
+
|
16 |
+
public function addFilters() {
|
17 |
|
18 |
// Auto insert overall rating and visitor rating
|
19 |
if (YASR_AUTO_INSERT_ENABLED === 1) {
|
20 |
+
add_filter('the_content', array($this, 'autoInsert'));
|
21 |
}
|
22 |
|
23 |
+
add_filter('the_content', array($this, 'addSchema'));
|
24 |
|
25 |
//stars next to the title
|
26 |
if (YASR_STARS_TITLE === 'yes') {
|
27 |
+
add_filter('the_title', array($this, 'filterTitle'));
|
28 |
+
|
29 |
+
add_filter('yasr_filter_schema_title', array($this, 'removeWidgetFromTitle'));
|
30 |
}
|
31 |
}
|
32 |
|
53 |
$excluded_cpt = apply_filters('yasr_auto_insert_exclude_cpt', $excluded_cpt);
|
54 |
|
55 |
//Excluded_cpt must be an array
|
56 |
+
if (is_array($excluded_cpt) && !empty($excluded_cpt)) {
|
57 |
|
58 |
//sanitize
|
59 |
+
$excluded_cpt = filter_var_array($excluded_cpt, FILTER_SANITIZE_STRING);
|
60 |
|
61 |
$post_type = get_post_type();
|
62 |
|
63 |
//if one element in the array is found, return content
|
64 |
+
foreach ($excluded_cpt as $cpt) {
|
65 |
+
if ($cpt === $post_type) {
|
66 |
return $content;
|
67 |
}
|
68 |
}
|
76 |
$shortcode_align = 'center';
|
77 |
}
|
78 |
|
79 |
+
$container_div_overall = '<div style="text-align:' . $shortcode_align . '" class="yasr-auto-insert-overall">';
|
80 |
+
$container_div_visitor = '<div style="text-align:' . $shortcode_align . '" class="yasr-auto-insert-visitor">';
|
81 |
+
$closing_div = '</div>';
|
82 |
|
83 |
$auto_insert_shortcode = null; //To avoid undefined variable notice outside the loop (if (is_singular) )
|
84 |
+
$overall_rating_code = $container_div_overall . '[yasr_overall_rating size="' . YASR_AUTO_INSERT_SIZE . '"]'
|
85 |
+
. $closing_div;
|
86 |
+
$visitor_votes_code = $container_div_visitor . '[yasr_visitor_votes size="' . YASR_AUTO_INSERT_SIZE . '"]'
|
87 |
+
. $closing_div;
|
88 |
|
89 |
//avoid undefined
|
90 |
$content_and_stars = false;
|
99 |
$content_and_stars = $content . $overall_rating_code;
|
100 |
break;
|
101 |
} //End Switch
|
102 |
+
}
|
103 |
+
elseif (YASR_AUTO_INSERT_WHAT === 'visitor_rating') {
|
104 |
switch (YASR_AUTO_INSERT_WHERE) {
|
105 |
case 'top':
|
106 |
$content_and_stars = $visitor_votes_code . $content;
|
110 |
$content_and_stars = $content . $visitor_votes_code;
|
111 |
break;
|
112 |
} //End Switch
|
113 |
+
}
|
114 |
+
elseif (YASR_AUTO_INSERT_WHAT === 'both') {
|
115 |
switch (YASR_AUTO_INSERT_WHERE) {
|
116 |
case 'top':
|
117 |
$content_and_stars = $overall_rating_code . $visitor_votes_code . $content;
|
167 |
return $content;
|
168 |
}
|
169 |
|
170 |
+
$post_id = get_the_ID();
|
171 |
$overall_rating = YasrDatabaseRatings::getOverallRating();
|
172 |
+
$visitor_votes = YasrDatabaseRatings::getVisitorVotes(false);
|
173 |
|
174 |
if (!$overall_rating && !$visitor_votes['number_of_votes'] && !$visitor_votes['sum_votes']) {
|
175 |
return $content;
|
176 |
}
|
177 |
|
178 |
//can't be between 0.1 and 1
|
179 |
+
if ($overall_rating > 0 && $overall_rating < 1) {
|
180 |
$overall_rating = 1;
|
181 |
}
|
182 |
|
183 |
+
$is_post_a_review = get_post_meta($post_id, 'yasr_post_is_review', true);
|
184 |
|
185 |
+
$script_type = '<script type="application/ld+json">';
|
186 |
$end_script_type = '</script>';
|
187 |
|
188 |
$review_choosen = yasr_get_itemType();
|
205 |
$author = get_the_author();
|
206 |
|
207 |
//use this hook to change the itemType name
|
208 |
+
$review_name = wp_strip_all_tags(apply_filters('yasr_filter_schema_title', $post_id));
|
209 |
|
210 |
+
$date = get_the_date('c');
|
211 |
$date_modified = get_the_modified_date('c');
|
212 |
|
213 |
$post_image_url = ''; //avoid undefined
|
221 |
|
222 |
$post_image_size = @getimagesize($logo_image_url_absolute); //the @ should be useless, just to be safe
|
223 |
$logo_image_size = @getimagesize($logo_image_url_absolute); //the @ should be useless, just to be safe
|
224 |
+
}
|
225 |
+
else {
|
226 |
$post_image_size[0] = 0;
|
227 |
$post_image_size[1] = 0;
|
228 |
$logo_image_size[0] = 0;
|
231 |
|
232 |
//if exists featuread image get the url and overwrite the variable
|
233 |
if (has_post_thumbnail()) {
|
234 |
+
$post_image_url = wp_get_attachment_url(get_post_thumbnail_id());
|
235 |
$post_image_url_absolute = $_SERVER['DOCUMENT_ROOT'] . parse_url($post_image_url, PHP_URL_PATH);
|
236 |
+
$post_image_size = @getimagesize(
|
237 |
+
$post_image_url_absolute
|
238 |
+
); //the @ should be useless, just to be safe
|
239 |
}
|
240 |
|
241 |
$rich_snippet['@type'] = $review_choosen;
|
242 |
$rich_snippet['name'] = $review_name;
|
243 |
+
$cleaned_content = wp_strip_all_tags(strip_shortcodes($content));
|
244 |
|
245 |
+
$rich_snippet['description'] = wp_trim_words($cleaned_content, 55, '...');
|
246 |
|
247 |
+
$rich_snippet['image'] = array(
|
248 |
'@type' => 'ImageObject',
|
249 |
'url' => $post_image_url,
|
250 |
'width' => $post_image_size[0],
|
252 |
);
|
253 |
|
254 |
$publisher_image_index = 'logo';
|
255 |
+
if (YASR_PUBLISHER_TYPE === 'Person') {
|
256 |
$publisher_image_index = 'image';
|
257 |
}
|
258 |
|
259 |
+
elseif ($review_choosen === 'BlogPosting') {
|
|
|
|
|
|
|
|
|
260 |
$rich_snippet['datePublished'] = $date;
|
261 |
$rich_snippet['headline'] = $review_name;
|
262 |
$rich_snippet['mainEntityOfPage'] = array(
|
269 |
);
|
270 |
$rich_snippet['publisher'] = array(
|
271 |
'@type' => 'Organization',
|
272 |
+
'name' => wp_strip_all_tags(YASR_PUBLISHER_NAME),
|
273 |
+
//already sanitized in the settings, just to be safe
|
274 |
'logo' => array(
|
275 |
'@type' => 'ImageObject',
|
276 |
'url' => $logo_image_url,
|
290 |
|
291 |
}
|
292 |
|
293 |
+
//Add everywhere except for blogPosting
|
294 |
+
if ($review_choosen !== 'BlogPosting') {
|
295 |
if ($overall_rating) {
|
296 |
$rich_snippet['Review'] = array(
|
297 |
'@type' => 'Review',
|
301 |
'@type' => 'Person',
|
302 |
'name' => $author
|
303 |
),
|
304 |
+
'datePublished' => $date,
|
305 |
+
'dateModified' => $date_modified,
|
306 |
+
'reviewRating' => array(
|
307 |
'@type' => 'Rating',
|
308 |
'ratingValue' => $overall_rating,
|
309 |
'bestRating' => 5,
|
314 |
|
315 |
//if both are included, google will index AggregateRating instead of Review.
|
316 |
//So, is post is selected as review, exclude AggregateRating
|
317 |
+
if ($is_post_a_review !== 'yes') {
|
318 |
if ($visitor_votes) {
|
319 |
if ($visitor_votes['sum_votes'] !== 0 && $visitor_votes['number_of_votes'] !== 0) {
|
320 |
$average_rating = $visitor_votes['sum_votes'] / $visitor_votes['number_of_votes'];
|
332 |
}
|
333 |
}
|
334 |
|
335 |
+
if (isset($rich_snippet['Review']) || $review_choosen === 'BlogPosting') {
|
336 |
$publisher = array(
|
337 |
'@type' => YASR_PUBLISHER_TYPE,
|
338 |
+
'name' => wp_strip_all_tags(YASR_PUBLISHER_NAME),
|
339 |
+
//already sanitized in the settings, just to be safe
|
340 |
$publisher_image_index => array(
|
341 |
'@type' => 'ImageObject',
|
342 |
'url' => $logo_image_url,
|
346 |
);
|
347 |
|
348 |
/** @noinspection NotOptimalIfConditionsInspection */
|
349 |
+
if (isset($rich_snippet['Review'])) {
|
350 |
$rich_snippet['Review']['publisher'] = $publisher;
|
351 |
+
}
|
352 |
+
else {
|
353 |
$rich_snippet['publisher'] = $publisher;
|
354 |
}
|
355 |
}
|
372 |
|
373 |
/**
|
374 |
* @since 2.4.3
|
|
|
375 |
* Filter the_title to show stars next it
|
376 |
*
|
377 |
* @param $title
|
378 |
*
|
379 |
* @return string
|
380 |
*/
|
381 |
+
public function filterTitle($title) {
|
382 |
|
383 |
+
if (in_the_loop()) {
|
384 |
$post_id = get_the_ID();
|
385 |
|
386 |
+
if (YASR_STARS_TITLE_EXCLUDE_PAGES === 'yes' && get_post_type($post_id) === 'page') {
|
387 |
return $title;
|
388 |
}
|
389 |
|
394 |
$stored_votes = YasrDatabaseRatings::getVisitorVotes();
|
395 |
|
396 |
$number_of_votes = $stored_votes['number_of_votes'];
|
397 |
+
if ($number_of_votes > 0) {
|
398 |
$average_rating = $stored_votes['sum_votes'] / $number_of_votes;
|
399 |
+
}
|
400 |
+
else {
|
401 |
$average_rating = 0;
|
402 |
}
|
403 |
|
419 |
|
420 |
$vv_widget .= "<span class='yasr-stars-title-average'>$average_rating ($number_of_votes)</span>";
|
421 |
|
422 |
+
//Use this hook to customize widget
|
423 |
//if doesn't exists a filter for yasr_title_vv_widget, put $vv_widget into $content_after_title
|
424 |
$content_after_title = apply_filters('yasr_title_vv_widget', $vv_widget, $stored_votes);
|
425 |
}
|
426 |
|
427 |
if (YASR_STARS_TITLE_WHAT === 'overall_rating') {
|
428 |
+
$overall_rating = YasrDatabaseRatings::getOverallRating($post_id);
|
429 |
|
430 |
//first, overall widget contains overall rating
|
431 |
$overall_widget = $overall_rating;
|
432 |
|
433 |
//only if overall rating > 0
|
434 |
+
if ($overall_rating > 0) {
|
435 |
$overall_rating_obj = new YasrOverallRating(false, false);
|
436 |
+
$overall_attributes = $overall_rating_obj->returnAttributes(
|
437 |
+
16, $post_id, 'yasr-stars-title', $overall_rating
|
438 |
+
);
|
439 |
|
440 |
+
$overall_widget = "<span class='yasr-stars-title-average'>";
|
441 |
+
$overall_widget .= $overall_attributes['html_stars'];
|
442 |
+
$overall_widget .= "</span>";
|
443 |
}
|
444 |
|
445 |
//Use this hook to customize widget overall
|
448 |
}
|
449 |
|
450 |
//if only in archive pages
|
451 |
+
if (YASR_STARS_TITLE_WHERE === 'archive') {
|
452 |
+
if (is_archive() || is_home()) {
|
453 |
return $title . $content_after_title;
|
454 |
}
|
455 |
} //if only in single posts/pages
|
456 |
+
elseif (YASR_STARS_TITLE_WHERE === 'single') {
|
457 |
+
if (is_singular()) {
|
458 |
return $title . $content_after_title;
|
459 |
}
|
460 |
} //always return in both
|
461 |
+
elseif (YASR_STARS_TITLE_WHERE === 'both') {
|
462 |
return $title . $content_after_title;
|
463 |
} //else return just the title (should never happens)
|
464 |
else {
|
469 |
//if not in the loop
|
470 |
return $title;
|
471 |
}
|
472 |
+
|
473 |
+
|
474 |
+
/**
|
475 |
+
* Hooks to yasr_filter_schema_title only if YASR_STARS_TITLE is enabled,
|
476 |
+
* and remove the widget from the title, otherwise it will appear in snippets
|
477 |
+
*
|
478 |
+
* @author Dario Curvino <@dudo>
|
479 |
+
* @since 2.5.2
|
480 |
+
*
|
481 |
+
* @param $post_id
|
482 |
+
*
|
483 |
+
* @return string
|
484 |
+
*/
|
485 |
+
public function removeWidgetFromTitle($post_id) {
|
486 |
+
remove_filter('the_title', array($this, 'filterTitle'));
|
487 |
+
|
488 |
+
return get_the_title($post_id);
|
489 |
+
}
|
490 |
+
|
491 |
}
|
public/yasr-public-init.php
CHANGED
@@ -53,8 +53,9 @@ function yasr_autoload_public_classes($class) {
|
|
53 |
//AutoLoad Yasr Shortcode Classes, only when a object is created
|
54 |
spl_autoload_register('yasr_autoload_public_classes');
|
55 |
|
|
|
|
|
|
|
56 |
//filter yasr rich snippet
|
57 |
$yasr_additional_rich_fields = new YasrRichSnippetAdditionalFields;
|
58 |
$yasr_additional_rich_fields->addFilters();
|
59 |
-
|
60 |
-
YasrPublicFilters::addFilters();
|
53 |
//AutoLoad Yasr Shortcode Classes, only when a object is created
|
54 |
spl_autoload_register('yasr_autoload_public_classes');
|
55 |
|
56 |
+
$yasr_public_filters = new YasrPublicFilters();
|
57 |
+
$yasr_public_filters->addFilters();
|
58 |
+
|
59 |
//filter yasr rich snippet
|
60 |
$yasr_additional_rich_fields = new YasrRichSnippetAdditionalFields;
|
61 |
$yasr_additional_rich_fields->addFilters();
|
|
|
|
readme.txt
CHANGED
@@ -5,7 +5,7 @@ Requires at least: 4.9.0
|
|
5 |
Contributors: Dudo
|
6 |
Tested up to: 5.5.2
|
7 |
Requires PHP: 5.3
|
8 |
-
Stable tag: 2.5.
|
9 |
License URI: http://www.gnu.org/licenses/gpl-2.0.html
|
10 |
|
11 |
Boost the way people interact with your site with an easy WordPress stars rating system! With schema.org rich snippets YASR will improve your SEO
|
@@ -181,6 +181,12 @@ If doesn't, you should work on your seo reputation.
|
|
181 |
|
182 |
The full changelog can be found in the plugin's directory. Recent entries:
|
183 |
|
|
|
|
|
|
|
|
|
|
|
|
|
184 |
= 2.5.1 =
|
185 |
* TWEAKED: added new hooks: yasr_vv_shortcode, yasr_vv_ro_shortcode and yasr_overall_shortcode. These hooks can
|
186 |
be used to customize the shortcodes.
|
5 |
Contributors: Dudo
|
6 |
Tested up to: 5.5.2
|
7 |
Requires PHP: 5.3
|
8 |
+
Stable tag: 2.5.2
|
9 |
License URI: http://www.gnu.org/licenses/gpl-2.0.html
|
10 |
|
11 |
Boost the way people interact with your site with an easy WordPress stars rating system! With schema.org rich snippets YASR will improve your SEO
|
181 |
|
182 |
The full changelog can be found in the plugin's directory. Recent entries:
|
183 |
|
184 |
+
= 2.5.2 =
|
185 |
+
* NEW FEATURE: is now possible delete overall rating data in Yet Another Stars Rating -> Stats -> Overall Rating
|
186 |
+
* FIXED: Schema title come with rating string if "Enable stars next to the title?" is enabled
|
187 |
+
* TWEAKED: all rankings functions has been rewritten to work with REST API. Documentation will come soon.
|
188 |
+
* TWEAKED: a lot of minor changes.
|
189 |
+
|
190 |
= 2.5.1 =
|
191 |
* TWEAKED: added new hooks: yasr_vv_shortcode, yasr_vv_ro_shortcode and yasr_overall_shortcode. These hooks can
|
192 |
be used to customize the shortcodes.
|
yet-another-stars-rating.php
CHANGED
@@ -4,7 +4,7 @@
|
|
4 |
* Plugin Name: Yet Another Stars Rating
|
5 |
* Plugin URI: http://wordpress.org/plugins/yet-another-stars-rating/
|
6 |
* Description: Boost the way people interact with your site with an easy WordPress stars rating system! With schema.org rich snippets YASR will improve your SEO
|
7 |
-
* Version: 2.5.
|
8 |
* Author: Dario Curvino
|
9 |
* Author URI: https://dariocurvino.it/
|
10 |
* Text Domain: yet-another-stars-rating
|
@@ -76,7 +76,7 @@ if ( !function_exists( 'yasr_fs' ) ) {
|
|
76 |
yasr_fs();
|
77 |
// Signal that SDK was initiated.
|
78 |
do_action( 'yasr_fs_loaded' );
|
79 |
-
define( 'YASR_VERSION_NUM', '2.5.
|
80 |
//Plugin absolute path
|
81 |
//e.g. /var/www/html/plugin_development/wp-content/plugins/yet-another-stars-rating
|
82 |
define( 'YASR_ABSOLUTE_PATH', __DIR__ );
|
4 |
* Plugin Name: Yet Another Stars Rating
|
5 |
* Plugin URI: http://wordpress.org/plugins/yet-another-stars-rating/
|
6 |
* Description: Boost the way people interact with your site with an easy WordPress stars rating system! With schema.org rich snippets YASR will improve your SEO
|
7 |
+
* Version: 2.5.2
|
8 |
* Author: Dario Curvino
|
9 |
* Author URI: https://dariocurvino.it/
|
10 |
* Text Domain: yet-another-stars-rating
|
76 |
yasr_fs();
|
77 |
// Signal that SDK was initiated.
|
78 |
do_action( 'yasr_fs_loaded' );
|
79 |
+
define( 'YASR_VERSION_NUM', '2.5.2' );
|
80 |
//Plugin absolute path
|
81 |
//e.g. /var/www/html/plugin_development/wp-content/plugins/yet-another-stars-rating
|
82 |
define( 'YASR_ABSOLUTE_PATH', __DIR__ );
|