Version Description
- Tweak! Update Freemius SDK
Download this release
Release Info
Developer | KingYes |
Plugin | Activity Log |
Version | 2.2.8 |
Comparing to | |
See all releases |
Code changes from version 2.2.7 to 2.2.8
- aryo-activity-log.php +1 -1
- classes/freemius/README.md +245 -0
- classes/freemius/assets/css/admin/account.css +1 -1
- classes/freemius/assets/css/admin/common.css +1 -1
- classes/freemius/assets/img/icon.svg +0 -78
- classes/freemius/assets/scss/admin/account.scss +19 -3
- classes/freemius/assets/scss/admin/common.scss +18 -5
- classes/freemius/composer.json +10 -0
- classes/freemius/includes/class-freemius-abstract.php +13 -1
- classes/freemius/includes/class-freemius.php +349 -255
- classes/freemius/includes/class-fs-plugin-updater.php +1 -1
- classes/freemius/includes/fs-core-functions.php +2 -124
- classes/freemius/includes/fs-essential-functions.php +339 -0
- classes/freemius/includes/fs-plugin-functions.php +11 -9
- classes/freemius/includes/i18n.php +43 -4
- classes/freemius/start.php +233 -2
- classes/freemius/templates/account.php +66 -57
- classes/freemius/templates/add-ons.php +3 -3
- classes/freemius/templates/admin-notice.php +4 -2
- classes/freemius/templates/connect.php +43 -16
- classes/freemius/templates/deactivation-feedback-modal.php +5 -5
- classes/freemius/templates/debug.php +105 -11
- classes/freemius/templates/pending-activation.php +23 -12
- classes/freemius/templates/plugin-icon.php +18 -5
- classes/freemius/templates/plugin-info/description.php +4 -3
- classes/freemius/templates/plugin-info/features.php +7 -2
- classes/freemius/templates/plugin-info/screenshots.php +4 -1
- language/aryo-activity-log.pot +346 -250
- readme.txt +4 -1
aryo-activity-log.php
CHANGED
@@ -5,7 +5,7 @@ Plugin URI: http://wordpress.org/plugins/aryo-activity-log/
|
|
5 |
Description: Get aware of any activities that are taking place on your dashboard! Imagine it like a black-box for your WordPress site. e.g. post was deleted, plugin was activated, user logged in or logged out - it's all these for you to see.
|
6 |
Author: Yakir Sitbon, Maor Chasen, Ariel Klikstein
|
7 |
Author URI: http://pojo.me/
|
8 |
-
Version: 2.2.
|
9 |
Text Domain: aryo-activity-log
|
10 |
Domain Path: /language/
|
11 |
License: GPLv2 or later
|
5 |
Description: Get aware of any activities that are taking place on your dashboard! Imagine it like a black-box for your WordPress site. e.g. post was deleted, plugin was activated, user logged in or logged out - it's all these for you to see.
|
6 |
Author: Yakir Sitbon, Maor Chasen, Ariel Klikstein
|
7 |
Author URI: http://pojo.me/
|
8 |
+
Version: 2.2.8
|
9 |
Text Domain: aryo-activity-log
|
10 |
Domain Path: /language/
|
11 |
License: GPLv2 or later
|
classes/freemius/README.md
ADDED
@@ -0,0 +1,245 @@
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
1 |
+
Freemius WordPress SDK
|
2 |
+
======================
|
3 |
+
|
4 |
+
Freemius is an [analytics](https://freemius.com/wordpress/insights/) & [monetization](https://freemius.com/wordpress/) platform for plugin developers. Freemius empower developers with advanced real-time analytics and helps turning any plugin into a commercial product in less than 10 min.
|
5 |
+
|
6 |
+
The platform is fully functional and running in production. Having said that, the monetization platform is still in closed beta.
|
7 |
+
If you are a WordPress plugin developer and you are interested to monetize with Freemius [apply to our closed beta here](http://bit.ly/freemius-beta):
|
8 |
+
|
9 |
+
http://bit.ly/freemius-beta
|
10 |
+
|
11 |
+
**Below you'll find the integration instructions for our WordPress SDK.**
|
12 |
+
|
13 |
+
## Initializing the SDK
|
14 |
+
|
15 |
+
Copy the code below and paste it into the top of your main plugin's PHP file, right after the plugin's header comment:
|
16 |
+
|
17 |
+
```php
|
18 |
+
<?php
|
19 |
+
// Create a helper function for easy SDK access.
|
20 |
+
function my_prefix_fs() {
|
21 |
+
global $my_prefix_fs;
|
22 |
+
if ( ! isset( $my_prefix_fs ) ) {
|
23 |
+
// Include Freemius SDK.
|
24 |
+
require_once dirname(__FILE__) . '/freemius/start.php';
|
25 |
+
|
26 |
+
$my_prefix_fs = fs_dynamic_init( array(
|
27 |
+
'id' => '1234',
|
28 |
+
'slug' => 'my-plugin-slug',
|
29 |
+
'menu_slug' => 'my_menu_slug', // You can also use __FILE__
|
30 |
+
'public_key' => 'pk_MY_PUBLIC_KEY',
|
31 |
+
'is_live' => true,
|
32 |
+
'is_premium' => true,
|
33 |
+
'has_addons' => false,
|
34 |
+
'has_paid_plans' => false,
|
35 |
+
// Set the SDK to work in a sandbox mode (for development & testing).
|
36 |
+
// IMPORTANT: MAKE SURE TO REMOVE SECRET KEY BEFORE DEPLOYMENT.
|
37 |
+
'secret_key' => 'sk_MY_SECRET_KEY',
|
38 |
+
) );
|
39 |
+
}
|
40 |
+
|
41 |
+
return $my_prefix_fs;
|
42 |
+
}
|
43 |
+
|
44 |
+
// Init Freemius.
|
45 |
+
my_prefix_fs();
|
46 |
+
?>
|
47 |
+
```
|
48 |
+
|
49 |
+
- **1234** - Replace with your plugin's ID.
|
50 |
+
- **pk_MY_PUBLIC_KEY** - Replace with your plugin's public key.
|
51 |
+
- **sk_MY_SECRET_KEY** - Replace with your plugin's secret key.
|
52 |
+
- **my-plugin-slug** - Replace with your plugin's WordPress.org slug.
|
53 |
+
- **my_menu_slug** - Replace with your admin dashboard settings menu slug.
|
54 |
+
|
55 |
+
|
56 |
+
## Usage example
|
57 |
+
|
58 |
+
You can call the SDK by using the shortcode function:
|
59 |
+
|
60 |
+
```php
|
61 |
+
<?php my_prefix_fs()->get_upgrade_url(); ?>
|
62 |
+
```
|
63 |
+
|
64 |
+
Or when calling Freemius multiple times in a scope, it's recommended to use it with the global variable:
|
65 |
+
|
66 |
+
```php
|
67 |
+
<?php
|
68 |
+
global $my_prefix_fs;
|
69 |
+
$my_prefix_fs->get_account_url();
|
70 |
+
?>
|
71 |
+
```
|
72 |
+
|
73 |
+
## Adding license based logic examples
|
74 |
+
|
75 |
+
Add marketing content to encourage your users to upgrade for your paid version:
|
76 |
+
|
77 |
+
```php
|
78 |
+
<?php
|
79 |
+
if ( my_prefix_fs()->is_not_paying() ) {
|
80 |
+
echo '<section><h1>' . __('Awesome Premium Features', 'my-plugin-slug') . '</h1>';
|
81 |
+
echo '<a href="' . my_prefix_fs()->get_upgrade_url() . '">' .
|
82 |
+
__('Upgrade Now!', 'my-plugin-slug') .
|
83 |
+
'</a>';
|
84 |
+
echo '</section>';
|
85 |
+
}
|
86 |
+
?>
|
87 |
+
```
|
88 |
+
|
89 |
+
Add logic which will only be available in your premium plugin version:
|
90 |
+
|
91 |
+
```php
|
92 |
+
<?php
|
93 |
+
// This "if" block will be auto removed from the Free version.
|
94 |
+
if ( my_prefix_fs()->is__premium_only() ) {
|
95 |
+
|
96 |
+
// ... premium only logic ...
|
97 |
+
|
98 |
+
}
|
99 |
+
?>
|
100 |
+
```
|
101 |
+
|
102 |
+
To add a function which will only be available in your premium plugin version, simply add __premium_only as the suffix of the function name. Just make sure that all lines that call that method directly or by hooks, are also wrapped in premium only logic:
|
103 |
+
|
104 |
+
```php
|
105 |
+
<?php
|
106 |
+
class My_Plugin {
|
107 |
+
function init() {
|
108 |
+
...
|
109 |
+
|
110 |
+
// This "if" block will be auto removed from the free version.
|
111 |
+
if ( my_prefix_fs()->is__premium_only() ) {
|
112 |
+
// Init premium version.
|
113 |
+
$this->admin_init__premium_only();
|
114 |
+
|
115 |
+
add_action( 'admin_init', array( &$this, 'admin_init_hook__premium_only' );
|
116 |
+
}
|
117 |
+
|
118 |
+
...
|
119 |
+
}
|
120 |
+
|
121 |
+
// This method will be only included in the premium version.
|
122 |
+
function admin_init__premium_only() {
|
123 |
+
...
|
124 |
+
}
|
125 |
+
|
126 |
+
// This method will be only included in the premium version.
|
127 |
+
function admin_init_hook__premium_only() {
|
128 |
+
...
|
129 |
+
}
|
130 |
+
}
|
131 |
+
?>
|
132 |
+
```
|
133 |
+
|
134 |
+
Add logic which will only be executed for customers in your 'professional' plan:
|
135 |
+
|
136 |
+
```php
|
137 |
+
<?php
|
138 |
+
if ( my_prefix_fs()->is_plan('professional', true) ) {
|
139 |
+
// .. logic related to Professional plan only ...
|
140 |
+
}
|
141 |
+
?>
|
142 |
+
```
|
143 |
+
|
144 |
+
Add logic which will only be executed for customers in your 'professional' plan or higher plans:
|
145 |
+
|
146 |
+
```php
|
147 |
+
<?php
|
148 |
+
if ( my_prefix_fs()->is_plan('professional') ) {
|
149 |
+
// ... logic related to Professional plan and higher plans ...
|
150 |
+
}
|
151 |
+
?>
|
152 |
+
```
|
153 |
+
|
154 |
+
Add logic which will only be available in your premium plugin version AND will only be executed for customers in your 'professional' plan (and higher plans):
|
155 |
+
|
156 |
+
```php
|
157 |
+
<?php
|
158 |
+
// This "if" block will be auto removed from the Free version.
|
159 |
+
if ( my_prefix_fs()->is_plan__premium_only('professional') ) {
|
160 |
+
// ... logic related to Professional plan and higher plans ...
|
161 |
+
}
|
162 |
+
?>
|
163 |
+
```
|
164 |
+
|
165 |
+
Add logic only for users in trial:
|
166 |
+
|
167 |
+
```php
|
168 |
+
<?php
|
169 |
+
if ( my_prefix_fs()->is_trial() ) {
|
170 |
+
// ... logic for users in trial ...
|
171 |
+
}
|
172 |
+
?>
|
173 |
+
```
|
174 |
+
|
175 |
+
Add logic for specified paid plan:
|
176 |
+
|
177 |
+
```php
|
178 |
+
<?php
|
179 |
+
// This "if" block will be auto removed from the Free version.
|
180 |
+
if ( my_prefix_fs()->is__premium_only() ) {
|
181 |
+
if ( my_prefix_fs()->is_plan( 'professional', true ) ) {
|
182 |
+
|
183 |
+
// ... logic related to Professional plan only ...
|
184 |
+
|
185 |
+
} else if ( my_prefix_fs()->is_plan( 'business' ) ) {
|
186 |
+
|
187 |
+
// ... logic related to Business plan and higher plans ...
|
188 |
+
|
189 |
+
}
|
190 |
+
}
|
191 |
+
?>
|
192 |
+
```
|
193 |
+
|
194 |
+
## Excluding files and folders from the free plugin version
|
195 |
+
There are two ways to exclude files from your free version.
|
196 |
+
|
197 |
+
1. Add `__premium_only` just before the file extension. For example, functions__premium_only.php will be only included in the premium plugin version. This works for all type of files, not only PHP.
|
198 |
+
2. Add `@fs_premium_only` a sepcial meta tag to the plugin's main PHP file header. Example:
|
199 |
+
```php
|
200 |
+
<?php
|
201 |
+
/**
|
202 |
+
* Plugin Name: My Very Awesome Plugin
|
203 |
+
* Plugin URI: http://my-awesome-plugin.com
|
204 |
+
* Description: Create and manage Awesomeness right in WordPress.
|
205 |
+
* Version: 1.0.0
|
206 |
+
* Author: Awesomattic
|
207 |
+
* Author URI: http://my-awesome-plugin.com/me/
|
208 |
+
* License: GPLv2
|
209 |
+
* Text Domain: myplugin
|
210 |
+
* Domain Path: /langs
|
211 |
+
*
|
212 |
+
* @fs_premium_only /lib/functions.php, /premium-files/
|
213 |
+
*/
|
214 |
+
|
215 |
+
if ( ! defined( 'ABSPATH' ) ) {
|
216 |
+
exit;
|
217 |
+
}
|
218 |
+
|
219 |
+
// ... my code ...
|
220 |
+
?>
|
221 |
+
```
|
222 |
+
The file `/lib/functions.php` and the directory `/premium-files/` will be removed from the free plugin version.
|
223 |
+
|
224 |
+
# WordPress.org Compliance
|
225 |
+
Based on [WordPress.org Guidelines](https://wordpress.org/plugins/about/guidelines/) you are not allowed to submit a plugin that has premium code in it:
|
226 |
+
> All code hosted by WordPress.org servers must be free and fully-functional. If you want to sell advanced features for a plugin (such as a "pro" version), then you must sell and serve that code from your own site, we will not host it on our servers.
|
227 |
+
|
228 |
+
Therefore, if you want to deploy your free plugin's version to WordPress.org, make sure you wrap all your premium code with `if ( my_prefix_fs()->{{ method }}__premium_only() )` or the other methods provided to exclude premium features & files from the free version.
|
229 |
+
|
230 |
+
## Deployment
|
231 |
+
Zip your plugin's root folder and upload it in the Deployment section in the *Freemius Developer's Dashboard*.
|
232 |
+
The plugin will be scanned and processed by a custom developed *PHP Processor* which will auto-generate two versions of your plugin:
|
233 |
+
|
234 |
+
1. **Premium version**: Identical to your uploaded version, including all code (except your `secret_key`). Will be enabled for download ONLY for your paying or in trial customers.
|
235 |
+
2. **Free version**: The code stripped from all your paid features (based on the logic added wrapped in `{ method }__premium_only()`).
|
236 |
+
|
237 |
+
The free version is the one that you should give your users to download. Therefore, download the free generated version and upload to your site. Or, if your plugin was WordPress.org complaint and you made sure to exclude all your premium code with the different provided techniques, you can deploy the downloaded free version to the .org repo.
|
238 |
+
|
239 |
+
## Reporting Bugs
|
240 |
+
Email dev [at] freemius [dot] com
|
241 |
+
|
242 |
+
## FAQ
|
243 |
+
|
244 |
+
## Copyright
|
245 |
+
Freemius, Inc.
|
classes/freemius/assets/css/admin/account.css
CHANGED
@@ -1 +1 @@
|
|
1 |
-
#fs_account .postbox,#fs_account .widefat{max-width:700px}#fs_account .fs-header-actions{position:absolute;top:
|
1 |
+
#fs_account .postbox,#fs_account .widefat{max-width:700px}#fs_account h3{font-size:1.3em;padding:12px 12px 12px 15px;margin:0 0 12px 0;line-height:1.4;border-bottom:1px solid #F1F1F1}#fs_account i.dashicons{font-size:1.2em;height:1.2em;width:1.2em}#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}.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 td label{background:orange;color:#fff;display:inline-block;border-radius:3px;padding:5px;font-size:11px;line-height:11px;vertical-align:baseline}.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 var,.fs-key-value-table code{color:#0073AA;font-size:16px;background:none}#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}
|
classes/freemius/assets/css/admin/common.css
CHANGED
@@ -1 +1 @@
|
|
1 |
-
.fs-notice{position:relative}.fs-notice.fs-has-title{margin-bottom:30px !important}.fs-notice.success{color:green}.fs-notice.promotion{border-color:#00a0d2 !important;background-color:#f2fcff !important}.fs-notice .fs-close{position:absolute;top:
|
1 |
+
.fs-notice{position:relative}.fs-notice.fs-has-title{margin-bottom:30px !important}.fs-notice.success{color:green}.fs-notice.promotion{border-color:#00a0d2 !important;background-color:#f2fcff !important}.fs-notice .fs-close{position:absolute;top:2px;bottom:2px;right:2px;cursor:pointer;color:#aaa;min-width:100px;text-align:center;padding-right:2px}.fs-notice .fs-close:hover{color:#fff;background:#A9A9A9}.fs-notice .fs-close>*{margin-top:7px;display:inline-block}.fs-notice label.fs-plugin-title{background:rgba(0,0,0,0.3);color:#fff;padding:2px 10px;position:absolute;bottom:-22px;top:auto;right:auto;-moz-border-radius:0 0 3px 3px;-webkit-border-radius:0 0 3px 3px;border-radius:0 0 3px 3px;left:10px;font-size:12px;font-weight:bold;cursor:auto}.rtl .fs-notice .fs-close{left:2px;right:auto;padding-right:0;padding-left:2px}.fs-secure-notice{position:fixed;top:32px;left:160px;right:0;background:#ebfdeb;padding:10px 20px;color:green;z-index:9999;box-shadow:0px 2px 2px rgba(6,113,6,0.3);opacity:0.95;filter:alpha(opacity=95)}.fs-secure-notice:hover{opacity:1;filter:alpha(opacity=100)}@media screen and (max-width: 960px){.fs-secure-notice{left:36px}}@media screen and (max-width: 782px){.fs-secure-notice{left:0;top:46px;text-align:center}}span.fs-submenu-item.fs-sub:before{content:'\21B3';padding:0 5px}.rtl span.fs-submenu-item.fs-sub:before{content:'\21B2'}
|
classes/freemius/assets/img/icon.svg
DELETED
@@ -1,78 +0,0 @@
|
|
1 |
-
<?xml version="1.0" encoding="utf-8"?>
|
2 |
-
<!-- Generator: Adobe Illustrator 16.0.0, SVG Export Plug-In . SVG Version: 6.00 Build 0) -->
|
3 |
-
<!DOCTYPE svg PUBLIC "-//W3C//DTD SVG 1.1//EN" "http://www.w3.org/Graphics/SVG/1.1/DTD/svg11.dtd">
|
4 |
-
<svg version="1.1" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" x="0px" y="0px" width="256px"
|
5 |
-
height="256px" viewBox="0 0 256 256" enable-background="new 0 0 256 256" xml:space="preserve">
|
6 |
-
<g id="Layer_2">
|
7 |
-
<rect fill="#C91E60" width="256" height="256"/>
|
8 |
-
</g>
|
9 |
-
<g id="Layer_5">
|
10 |
-
<text transform="matrix(1 0 0 1 64.1411 78.187)"><tspan x="0" y="0" fill="#FFFFFF" font-family="'Helvetica-Light'" font-size="39.6274">Activity</tspan><tspan x="29.72" y="47.553" fill="#FFFFFF" font-family="'Helvetica-Light'" font-size="39.6274">Log</tspan></text>
|
11 |
-
</g>
|
12 |
-
<g id="Layer_4">
|
13 |
-
<g>
|
14 |
-
<path fill="none" d="M153.006,225.923c-13.807,0-25-11.193-25-25s11.193-25,25-25H256V0H0v256h256v-30.077H153.006z"/>
|
15 |
-
<path fill="#FFFFFF" d="M128.006,200.923c0,13.807,11.193,25,25,25H256v-50H153.006
|
16 |
-
C139.199,175.923,128.006,187.116,128.006,200.923z"/>
|
17 |
-
</g>
|
18 |
-
</g>
|
19 |
-
<g id="Layer_6">
|
20 |
-
<g>
|
21 |
-
<path fill="#C91E60" d="M166.129,200.071c0,1.251-0.235,2.424-0.707,3.52c-0.472,1.099-1.121,2.059-1.946,2.885
|
22 |
-
c-0.826,0.825-1.786,1.473-2.883,1.945c-1.098,0.471-2.27,0.707-3.521,0.707c-1.085,0-2.104-0.178-3.06-0.53
|
23 |
-
c-0.956-0.354-1.821-0.837-2.601-1.45v7.075c0,0.472-0.165,0.871-0.495,1.202c-0.33,0.33-0.73,0.496-1.202,0.496
|
24 |
-
c-0.473,0-0.873-0.166-1.203-0.496c-0.331-0.331-0.493-0.73-0.493-1.202v-14.151c0-1.251,0.234-2.424,0.705-3.52
|
25 |
-
c0.472-1.097,1.118-2.058,1.946-2.884c0.826-0.826,1.786-1.474,2.884-1.946c1.096-0.471,2.269-0.706,3.519-0.706
|
26 |
-
c1.251,0,2.423,0.235,3.521,0.706c1.097,0.473,2.057,1.12,2.883,1.946c0.825,0.826,1.475,1.787,1.946,2.884
|
27 |
-
C165.894,197.647,166.129,198.82,166.129,200.071 M162.733,200.071c0-0.779-0.148-1.51-0.442-2.192
|
28 |
-
c-0.297-0.685-0.702-1.286-1.221-1.805c-0.519-0.52-1.12-0.926-1.805-1.22c-0.685-0.296-1.416-0.443-2.193-0.443
|
29 |
-
c-0.778,0-1.509,0.147-2.193,0.443c-0.685,0.294-1.285,0.7-1.805,1.22c-0.519,0.519-0.926,1.12-1.22,1.805
|
30 |
-
c-0.295,0.683-0.442,1.413-0.442,2.192c0,0.778,0.147,1.51,0.442,2.193c0.294,0.684,0.701,1.286,1.22,1.805
|
31 |
-
c0.52,0.519,1.12,0.926,1.805,1.22c0.685,0.298,1.415,0.442,2.193,0.442c0.777,0,1.509-0.145,2.193-0.442
|
32 |
-
c0.685-0.294,1.286-0.701,1.805-1.22s0.924-1.121,1.221-1.805C162.585,201.581,162.733,200.85,162.733,200.071"/>
|
33 |
-
<path fill="#C91E60" d="M167.827,200.071c0-1.251,0.236-2.424,0.707-3.52c0.472-1.097,1.121-2.058,1.947-2.884
|
34 |
-
c0.824-0.826,1.785-1.474,2.882-1.946c1.098-0.471,2.271-0.706,3.521-0.706c1.249,0,2.424,0.235,3.519,0.706
|
35 |
-
c1.097,0.473,2.058,1.12,2.884,1.946c0.825,0.826,1.474,1.787,1.946,2.884c0.471,1.096,0.707,2.269,0.707,3.52
|
36 |
-
s-0.236,2.424-0.707,3.52c-0.473,1.099-1.121,2.059-1.946,2.885c-0.826,0.825-1.787,1.473-2.884,1.945
|
37 |
-
c-1.095,0.471-2.27,0.707-3.519,0.707c-1.251,0-2.424-0.236-3.521-0.707c-1.097-0.473-2.058-1.12-2.882-1.945
|
38 |
-
c-0.826-0.826-1.476-1.786-1.947-2.885C168.063,202.495,167.827,201.322,167.827,200.071 M171.224,200.071
|
39 |
-
c0,0.778,0.146,1.51,0.441,2.193c0.297,0.684,0.702,1.286,1.221,1.805s1.121,0.926,1.805,1.22
|
40 |
-
c0.684,0.298,1.415,0.442,2.194,0.442c0.776,0,1.508-0.145,2.191-0.442c0.686-0.294,1.286-0.701,1.806-1.22
|
41 |
-
c0.518-0.519,0.925-1.121,1.22-1.805c0.296-0.684,0.443-1.415,0.443-2.193c0-0.779-0.147-1.51-0.443-2.192
|
42 |
-
c-0.295-0.685-0.702-1.286-1.22-1.805c-0.52-0.52-1.12-0.926-1.806-1.22c-0.684-0.296-1.415-0.443-2.191-0.443
|
43 |
-
c-0.779,0-1.511,0.147-2.194,0.443c-0.684,0.294-1.286,0.7-1.805,1.22c-0.519,0.519-0.924,1.12-1.221,1.805
|
44 |
-
C171.37,198.562,171.224,199.292,171.224,200.071"/>
|
45 |
-
<path fill="#C91E60" d="M185.092,215.921c-0.472,0-0.873-0.166-1.204-0.496c-0.328-0.331-0.494-0.73-0.494-1.202
|
46 |
-
s0.166-0.873,0.494-1.203c0.331-0.331,0.732-0.495,1.204-0.495c0.944,0,1.746-0.33,2.405-0.99c0.66-0.662,0.991-1.463,0.991-2.406
|
47 |
-
v-16.415c0-0.471,0.164-0.871,0.496-1.202c0.327-0.33,0.729-0.495,1.201-0.495s0.875,0.165,1.204,0.495
|
48 |
-
c0.33,0.331,0.494,0.731,0.494,1.202v16.415c0,0.943-0.177,1.827-0.529,2.653c-0.354,0.825-0.838,1.545-1.452,2.157
|
49 |
-
c-0.613,0.613-1.332,1.099-2.157,1.451C186.919,215.743,186.036,215.921,185.092,215.921 M188.205,187.901
|
50 |
-
c0-0.542,0.195-1.008,0.583-1.396c0.389-0.39,0.854-0.584,1.397-0.584s1.008,0.194,1.397,0.584
|
51 |
-
c0.388,0.389,0.584,0.854,0.584,1.396c0,0.543-0.196,1.01-0.584,1.398c-0.39,0.388-0.854,0.583-1.397,0.583
|
52 |
-
s-1.009-0.195-1.397-0.583C188.4,188.911,188.205,188.444,188.205,187.901"/>
|
53 |
-
<path fill="#C91E60" d="M194.431,200.071c0-1.251,0.235-2.424,0.707-3.52c0.473-1.097,1.119-2.058,1.947-2.884
|
54 |
-
c0.824-0.826,1.783-1.474,2.883-1.946c1.097-0.471,2.27-0.706,3.519-0.706c1.25,0,2.425,0.235,3.522,0.706
|
55 |
-
c1.096,0.473,2.056,1.12,2.883,1.946c0.825,0.826,1.473,1.787,1.944,2.884c0.472,1.096,0.708,2.269,0.708,3.52
|
56 |
-
s-0.236,2.424-0.708,3.52c-0.472,1.099-1.119,2.059-1.944,2.885c-0.827,0.825-1.787,1.473-2.883,1.945
|
57 |
-
c-1.098,0.471-2.272,0.707-3.522,0.707c-1.249,0-2.422-0.236-3.519-0.707c-1.1-0.473-2.059-1.12-2.883-1.945
|
58 |
-
c-0.828-0.826-1.475-1.786-1.947-2.885C194.666,202.495,194.431,201.322,194.431,200.071 M197.827,200.071
|
59 |
-
c0,0.778,0.146,1.51,0.442,2.193c0.295,0.684,0.701,1.286,1.22,1.805c0.52,0.519,1.12,0.926,1.805,1.22
|
60 |
-
c0.684,0.298,1.415,0.442,2.192,0.442c0.779,0,1.511-0.145,2.194-0.442c0.684-0.294,1.284-0.701,1.803-1.22
|
61 |
-
s0.926-1.121,1.224-1.805c0.294-0.684,0.439-1.415,0.439-2.193c0-0.779-0.146-1.51-0.439-2.192
|
62 |
-
c-0.298-0.685-0.705-1.286-1.224-1.805c-0.519-0.52-1.119-0.926-1.803-1.22c-0.684-0.296-1.415-0.443-2.194-0.443
|
63 |
-
c-0.777,0-1.509,0.147-2.192,0.443c-0.685,0.294-1.285,0.7-1.805,1.22c-0.519,0.519-0.925,1.12-1.22,1.805
|
64 |
-
C197.974,198.562,197.827,199.292,197.827,200.071"/>
|
65 |
-
<path fill="#353E44" d="M213.941,207.714c0.389,0,0.706,0.317,0.706,0.707s-0.317,0.707-0.706,0.707
|
66 |
-
c-0.39,0-0.709-0.317-0.709-0.707S213.552,207.714,213.941,207.714"/>
|
67 |
-
<path fill="#353E44" d="M223.845,208.562c0,0.318-0.246,0.565-0.564,0.565c-0.319,0-0.568-0.247-0.568-0.565v-4.528
|
68 |
-
c0-1.556-1.272-2.83-2.828-2.83c-1.559,0-2.83,1.274-2.83,2.83v4.528c0,0.318-0.247,0.565-0.565,0.565
|
69 |
-
c-0.319,0-0.566-0.247-0.566-0.565v-4.528c0-2.192,1.77-3.962,3.962-3.962c1.433,0,2.705,0.778,3.396,1.929
|
70 |
-
c0.688-1.15,1.944-1.929,3.396-1.929c2.192,0,3.963,1.77,3.963,3.962v4.528c0,0.318-0.25,0.565-0.567,0.565
|
71 |
-
c-0.318,0-0.565-0.247-0.565-0.565v-4.528c0-1.556-1.274-2.83-2.83-2.83c-1.558,0-2.831,1.274-2.831,2.83V208.562z"/>
|
72 |
-
<path fill="#353E44" d="M236.441,209.128c-2.494,0-4.528-2.034-4.528-4.527s2.034-4.528,4.528-4.528
|
73 |
-
c2.492,0,4.525,2.035,4.525,4.528c0,0.318-0.248,0.565-0.563,0.565h-7.325c0.285,1.609,1.682,2.83,3.363,2.83h1.131
|
74 |
-
c0.317,0,0.567,0.248,0.567,0.566s-0.25,0.565-0.567,0.565H236.441z M233.078,204.034h6.705c-0.266-1.592-1.663-2.83-3.342-2.83
|
75 |
-
C234.76,201.204,233.363,202.442,233.078,204.034"/>
|
76 |
-
</g>
|
77 |
-
</g>
|
78 |
-
</svg>
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
classes/freemius/assets/scss/admin/account.scss
CHANGED
@@ -6,11 +6,27 @@
|
|
6 |
max-width: 700px;
|
7 |
}
|
8 |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
9 |
.fs-header-actions
|
10 |
{
|
11 |
position: absolute;
|
12 |
-
top:
|
13 |
-
right:
|
14 |
font-size: 0.9em;
|
15 |
|
16 |
ul
|
@@ -36,7 +52,7 @@
|
|
36 |
|
37 |
.rtl #fs_account .fs-header-actions
|
38 |
{
|
39 |
-
left:
|
40 |
right: auto;
|
41 |
}
|
42 |
|
6 |
max-width: 700px;
|
7 |
}
|
8 |
|
9 |
+
h3
|
10 |
+
{
|
11 |
+
font-size: 1.3em;
|
12 |
+
padding: 12px 12px 12px 15px;
|
13 |
+
margin: 0 0 12px 0;
|
14 |
+
line-height: 1.4;
|
15 |
+
border-bottom: 1px solid #F1F1F1;
|
16 |
+
}
|
17 |
+
|
18 |
+
i.dashicons
|
19 |
+
{
|
20 |
+
font-size: 1.2em;
|
21 |
+
height: 1.2em;
|
22 |
+
width: 1.2em;
|
23 |
+
}
|
24 |
+
|
25 |
.fs-header-actions
|
26 |
{
|
27 |
position: absolute;
|
28 |
+
top: 17px;
|
29 |
+
right: 15px;
|
30 |
font-size: 0.9em;
|
31 |
|
32 |
ul
|
52 |
|
53 |
.rtl #fs_account .fs-header-actions
|
54 |
{
|
55 |
+
left: 15px;
|
56 |
right: auto;
|
57 |
}
|
58 |
|
classes/freemius/assets/scss/admin/common.scss
CHANGED
@@ -24,14 +24,25 @@
|
|
24 |
.fs-close
|
25 |
{
|
26 |
position: absolute;
|
27 |
-
top:
|
28 |
-
|
|
|
29 |
cursor: pointer;
|
30 |
-
color: #
|
|
|
|
|
|
|
31 |
|
32 |
&:hover
|
33 |
{
|
34 |
-
color: #
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
35 |
}
|
36 |
}
|
37 |
|
@@ -54,8 +65,10 @@
|
|
54 |
|
55 |
.rtl .fs-notice .fs-close
|
56 |
{
|
57 |
-
left:
|
58 |
right: auto;
|
|
|
|
|
59 |
}
|
60 |
|
61 |
.fs-secure-notice
|
24 |
.fs-close
|
25 |
{
|
26 |
position: absolute;
|
27 |
+
top: 2px;
|
28 |
+
bottom: 2px;
|
29 |
+
right: 2px;
|
30 |
cursor: pointer;
|
31 |
+
color: #aaa;
|
32 |
+
min-width: 100px;
|
33 |
+
text-align: center;
|
34 |
+
padding-right: 2px;
|
35 |
|
36 |
&:hover
|
37 |
{
|
38 |
+
color: #fff;
|
39 |
+
background: #A9A9A9;
|
40 |
+
}
|
41 |
+
|
42 |
+
> *
|
43 |
+
{
|
44 |
+
margin-top: 7px;
|
45 |
+
display: inline-block;
|
46 |
}
|
47 |
}
|
48 |
|
65 |
|
66 |
.rtl .fs-notice .fs-close
|
67 |
{
|
68 |
+
left: 2px;
|
69 |
right: auto;
|
70 |
+
padding-right: 0;
|
71 |
+
padding-left: 2px;
|
72 |
}
|
73 |
|
74 |
.fs-secure-notice
|
classes/freemius/composer.json
ADDED
@@ -0,0 +1,10 @@
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
1 |
+
{
|
2 |
+
"name": "freemius/wordpress-sdk",
|
3 |
+
"description": "Freemius WordPress SDK",
|
4 |
+
"keywords": ["freemius", "wordpress", "plugin", "sdk"],
|
5 |
+
"homepage": "https://freemius.com",
|
6 |
+
"license": "GPL-2.0+",
|
7 |
+
"require": {
|
8 |
+
"php": ">=5.2"
|
9 |
+
}
|
10 |
+
}
|
classes/freemius/includes/class-freemius-abstract.php
CHANGED
@@ -344,7 +344,19 @@
|
|
344 |
*
|
345 |
* @return bool
|
346 |
*/
|
347 |
-
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
348 |
|
349 |
#region Marketing ------------------------------------------------------------------
|
350 |
|
344 |
*
|
345 |
* @return bool
|
346 |
*/
|
347 |
+
function is_plugin_update() {
|
348 |
+
return ! $this->is_plugin_new_install();
|
349 |
+
}
|
350 |
+
|
351 |
+
/**
|
352 |
+
* Check if Freemius was part of the plugin when the user installed it first.
|
353 |
+
*
|
354 |
+
* @author Vova Feldman (@svovaf)
|
355 |
+
* @since 1.1.5
|
356 |
+
*
|
357 |
+
* @return bool
|
358 |
+
*/
|
359 |
+
abstract function is_plugin_new_install();
|
360 |
|
361 |
#region Marketing ------------------------------------------------------------------
|
362 |
|
classes/freemius/includes/class-freemius.php
CHANGED
@@ -16,7 +16,7 @@
|
|
16 |
*
|
17 |
* @var string
|
18 |
*/
|
19 |
-
public $version =
|
20 |
|
21 |
#region Plugin Info
|
22 |
|
@@ -114,6 +114,12 @@
|
|
114 |
*/
|
115 |
private $_has_addons;
|
116 |
|
|
|
|
|
|
|
|
|
|
|
|
|
117 |
/**
|
118 |
* @var FS_Key_Value_Storage
|
119 |
*/
|
@@ -311,9 +317,9 @@
|
|
311 |
* @param string $sdk_prev_version
|
312 |
* @param string $sdk_version
|
313 |
*/
|
314 |
-
function _data_migration($sdk_prev_version, $sdk_version) {
|
315 |
-
if ( version_compare($sdk_prev_version, '1.1.5', '<' )
|
316 |
-
version_compare($sdk_version, '1.1.5', '>=')
|
317 |
) {
|
318 |
// On version 1.1.5 merged connectivity and is_on data.
|
319 |
if ( isset( $this->_storage->connectivity_test ) ) {
|
@@ -364,7 +370,7 @@
|
|
364 |
|
365 |
$this->add_action( 'after_plans_sync', array( &$this, '_check_for_trial_plans' ) );
|
366 |
|
367 |
-
$this->add_action('sdk_version_update', array(&$this, '_data_migration'), WP_FS__DEFAULT_PRIORITY, 2);
|
368 |
}
|
369 |
|
370 |
/**
|
@@ -466,14 +472,14 @@
|
|
466 |
function _get_uninstall_reasons( $user_type = 'long-term' ) {
|
467 |
$reason_found_better_plugin = array(
|
468 |
'id' => 2,
|
469 |
-
'text' => __fs( 'reason-found-a-better-plugin' ),
|
470 |
'input_type' => 'textfield',
|
471 |
-
'input_placeholder' => __fs( 'placeholder-plugin-name' )
|
472 |
);
|
473 |
|
474 |
$reason_other = array(
|
475 |
'id' => 7,
|
476 |
-
'text' => __fs( 'reason-other' ),
|
477 |
'input_type' => 'textfield',
|
478 |
'input_placeholder' => ''
|
479 |
);
|
@@ -481,26 +487,26 @@
|
|
481 |
$long_term_user_reasons = array(
|
482 |
array(
|
483 |
'id' => 1,
|
484 |
-
'text' => __fs( 'reason-no-longer-needed' ),
|
485 |
'input_type' => '',
|
486 |
'input_placeholder' => ''
|
487 |
),
|
488 |
$reason_found_better_plugin,
|
489 |
array(
|
490 |
'id' => 3,
|
491 |
-
'text' => __fs( 'reason-needed-for-a-short-period' ),
|
492 |
'input_type' => '',
|
493 |
'input_placeholder' => ''
|
494 |
),
|
495 |
array(
|
496 |
'id' => 4,
|
497 |
-
'text' => __fs( 'reason-broke-my-site' ),
|
498 |
'input_type' => '',
|
499 |
'input_placeholder' => ''
|
500 |
),
|
501 |
array(
|
502 |
'id' => 5,
|
503 |
-
'text' => __fs( 'reason-suddenly-stopped-working' ),
|
504 |
'input_type' => '',
|
505 |
'input_placeholder' => ''
|
506 |
)
|
@@ -509,9 +515,9 @@
|
|
509 |
if ( $this->is_paying() ) {
|
510 |
$long_term_user_reasons[] = array(
|
511 |
'id' => 6,
|
512 |
-
'text' => __fs( 'reason-cant-pay-anymore' ),
|
513 |
'input_type' => 'textfield',
|
514 |
-
'input_placeholder' => __fs( 'placeholder-comfortable-price' )
|
515 |
);
|
516 |
}
|
517 |
|
@@ -522,13 +528,13 @@
|
|
522 |
'non-registered-and-non-anonymous-short-term' => array(
|
523 |
array(
|
524 |
'id' => 8,
|
525 |
-
'text' => __fs( 'reason-didnt-work' ),
|
526 |
'input_type' => '',
|
527 |
'input_placeholder' => ''
|
528 |
),
|
529 |
array(
|
530 |
'id' => 9,
|
531 |
-
'text' => __fs( 'reason-dont-like-to-share-my-information' ),
|
532 |
'input_type' => '',
|
533 |
'input_placeholder' => ''
|
534 |
),
|
@@ -538,34 +544,34 @@
|
|
538 |
'short-term' => array(
|
539 |
array(
|
540 |
'id' => 10,
|
541 |
-
'text' => __fs( 'reason-couldnt-make-it-work' ),
|
542 |
'input_type' => '',
|
543 |
'input_placeholder' => ''
|
544 |
),
|
545 |
$reason_found_better_plugin,
|
546 |
array(
|
547 |
'id' => 11,
|
548 |
-
'text' => __fs( 'reason-great-but-need-specific-feature' ),
|
549 |
'input_type' => 'textarea',
|
550 |
-
'input_placeholder' => __fs( 'placeholder-feature' )
|
551 |
),
|
552 |
array(
|
553 |
'id' => 12,
|
554 |
-
'text' => __fs( 'reason-not-working' ),
|
555 |
'input_type' => 'textarea',
|
556 |
-
'input_placeholder' => __fs( 'placeholder-share-what-didnt-work' )
|
557 |
),
|
558 |
array(
|
559 |
'id' => 13,
|
560 |
-
'text' => __fs( 'reason-not-what-i-was-looking-for' ),
|
561 |
'input_type' => 'textarea',
|
562 |
-
'input_placeholder' => __fs( 'placeholder-what-youve-been-looking-for' )
|
563 |
),
|
564 |
array(
|
565 |
'id' => 14,
|
566 |
-
'text' => __fs( 'reason-didnt-work-as-expected' ),
|
567 |
'input_type' => 'textarea',
|
568 |
-
'input_placeholder' => __fs( 'placeholder-what-did-you-expect' )
|
569 |
),
|
570 |
$reason_other
|
571 |
)
|
@@ -608,11 +614,10 @@
|
|
608 |
* @since 1.0.6
|
609 |
*
|
610 |
* @return string
|
|
|
|
|
611 |
*/
|
612 |
private function _find_caller_plugin_file() {
|
613 |
-
$bt = debug_backtrace();
|
614 |
-
$backtrace_entries_count = count( $bt );
|
615 |
-
|
616 |
// Try to load the cached value of the file path.
|
617 |
if ( isset( $this->_storage->plugin_main_file ) ) {
|
618 |
if ( file_exists( $this->_storage->plugin_main_file->path ) ) {
|
@@ -620,33 +625,7 @@
|
|
620 |
}
|
621 |
}
|
622 |
|
623 |
-
|
624 |
-
* All the code below will be executed once on activation.
|
625 |
-
* If the user changes the main plugin's file name, the file_exists()
|
626 |
-
* will catch it.
|
627 |
-
*/
|
628 |
-
self::require_plugin_essentials();
|
629 |
-
|
630 |
-
$all_plugins = get_plugins();
|
631 |
-
$all_plugins_paths = array();
|
632 |
-
|
633 |
-
// Get active plugin's main files real full names (might be symlinks).
|
634 |
-
foreach ( $all_plugins as $relative_path => &$data ) {
|
635 |
-
$all_plugins_paths[] = fs_normalize_path( realpath( WP_PLUGIN_DIR . '/' . $relative_path ) );
|
636 |
-
}
|
637 |
-
|
638 |
-
$plugin_file = null;
|
639 |
-
for ( $i = 1; $i < $backtrace_entries_count; $i ++ ) {
|
640 |
-
if ( in_array( fs_normalize_path( $bt[ $i ]['file'] ), $all_plugins_paths ) ) {
|
641 |
-
$plugin_file = $bt[ $i ]['file'];
|
642 |
-
break;
|
643 |
-
}
|
644 |
-
}
|
645 |
-
|
646 |
-
if ( is_null( $plugin_file ) ) {
|
647 |
-
// Throw an error to the developer in case of some edge case dev environment.
|
648 |
-
wp_die( __fs( 'failed-finding-main-path' ), __fs( 'error' ), array( 'back_link' => true ) );
|
649 |
-
}
|
650 |
|
651 |
$this->_storage->plugin_main_file = (object) array(
|
652 |
'path' => fs_normalize_path( $plugin_file ),
|
@@ -821,9 +800,7 @@
|
|
821 |
// Configure which Freemius powered plugins should be auto updated.
|
822 |
// add_filter( 'auto_update_plugin', '_include_plugins_in_auto_update', 10, 2 );
|
823 |
|
824 |
-
|
825 |
-
add_action( 'admin_menu', array( 'Freemius', 'add_debug_page' ) );
|
826 |
-
}
|
827 |
|
828 |
self::$_statics_loaded = true;
|
829 |
}
|
@@ -837,13 +814,28 @@
|
|
837 |
static function add_debug_page() {
|
838 |
self::$_static_logger->entrance();
|
839 |
|
840 |
-
$
|
841 |
-
|
842 |
-
|
843 |
-
|
844 |
-
|
845 |
-
|
846 |
-
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
847 |
|
848 |
add_action( "load-$hook", array( 'Freemius', '_debug_page_actions' ) );
|
849 |
}
|
@@ -853,6 +845,8 @@
|
|
853 |
* @since 1.0.8
|
854 |
*/
|
855 |
static function _debug_page_actions() {
|
|
|
|
|
856 |
if ( fs_request_is_action( 'delete_all_accounts' ) ) {
|
857 |
check_admin_referer( 'delete_all_accounts' );
|
858 |
|
@@ -893,12 +887,15 @@
|
|
893 |
/**
|
894 |
* Check if Freemius should be turned on for the current plugin install.
|
895 |
*
|
|
|
|
|
|
|
896 |
* @author Vova Feldman (@svovaf)
|
897 |
* @since 1.0.9
|
898 |
*
|
899 |
* @return bool
|
900 |
*/
|
901 |
-
|
902 |
self::$_static_logger->entrance();
|
903 |
|
904 |
if ( isset( $this->_is_on ) ) {
|
@@ -908,9 +905,10 @@
|
|
908 |
// If already installed or pending then sure it's on :)
|
909 |
if ( $this->is_registered() || $this->is_pending_activation() ) {
|
910 |
$this->_is_on = true;
|
911 |
-
|
912 |
-
return $this->_is_on;
|
913 |
}
|
|
|
|
|
914 |
}
|
915 |
|
916 |
/**
|
@@ -923,8 +921,8 @@
|
|
923 |
*
|
924 |
* @return bool
|
925 |
*/
|
926 |
-
|
927 |
-
if (
|
928 |
return $this->_has_api_connection;
|
929 |
}
|
930 |
|
@@ -937,17 +935,17 @@
|
|
937 |
unset( $this->_storage->connectivity_test );
|
938 |
}
|
939 |
|
940 |
-
if (isset( $this->_storage->connectivity_test ) ) {
|
941 |
if ( $_SERVER['HTTP_HOST'] == $this->_storage->connectivity_test['host'] &&
|
942 |
fs_get_ip() == $this->_storage->connectivity_test['server_ip']
|
943 |
) {
|
944 |
if ( ( $this->_storage->connectivity_test['is_connected'] &&
|
945 |
$this->_storage->connectivity_test['is_active'] ) ||
|
946 |
-
(
|
947 |
-
|
948 |
) {
|
949 |
$this->_has_api_connection = $this->_storage->connectivity_test['is_connected'];
|
950 |
-
$this->_is_on = $this->_storage->connectivity_test['is_active'];
|
951 |
|
952 |
return $this->_has_api_connection;
|
953 |
}
|
@@ -990,7 +988,7 @@
|
|
990 |
);
|
991 |
|
992 |
$this->_has_api_connection = $is_connected;
|
993 |
-
$this->_is_on = $is_active;
|
994 |
|
995 |
return $this->_has_api_connection;
|
996 |
}
|
@@ -1049,133 +1047,133 @@
|
|
1049 |
switch ( $api_result->error->code ) {
|
1050 |
case 'curl_missing':
|
1051 |
$message = sprintf(
|
1052 |
-
__fs( 'x-requires-access-to-api',
|
1053 |
-
__fs( 'curl-missing-message' ) . ' ' .
|
1054 |
' %s',
|
1055 |
'<b>' . $this->get_plugin_name() . '</b>',
|
1056 |
sprintf(
|
1057 |
'<ol id="fs_firewall_issue_options"><li>%s</li><li>%s</li><li>%s</li></ol>',
|
1058 |
sprintf(
|
1059 |
'<a class="fs-resolve" data-type="curl" href="#"><b>%s</b></a>%s',
|
1060 |
-
__fs( 'curl-missing-no-clue-title' ),
|
1061 |
' - ' . sprintf(
|
1062 |
-
__fs( 'curl-missing-no-clue-desc' ),
|
1063 |
'<a href="mailto:' . $admin_email . '">' . $admin_email . '</a>'
|
1064 |
)
|
1065 |
),
|
1066 |
sprintf(
|
1067 |
'<b>%s</b> - %s',
|
1068 |
-
__fs( 'sysadmin-title' ),
|
1069 |
-
__fs( 'curl-missing-sysadmin-desc' )
|
1070 |
),
|
1071 |
sprintf(
|
1072 |
'<a href="%s"><b>%s</b></a>%s',
|
1073 |
wp_nonce_url( 'plugins.php?action=deactivate&plugin=' . $this->_plugin_basename . '&plugin_status=' . 'all' . '&paged=' . '1' . '&s=' . '', 'deactivate-plugin_' . $this->_plugin_basename ),
|
1074 |
-
__fs( 'deactivate-plugin-title' ),
|
1075 |
-
' - ' . __fs( 'deactivate-plugin-desc', 'freemius' )
|
1076 |
)
|
1077 |
)
|
1078 |
);
|
1079 |
break;
|
1080 |
case 'cloudflare_ddos_protection':
|
1081 |
$message = sprintf(
|
1082 |
-
__fs( 'x-requires-access-to-api',
|
1083 |
-
__fs( 'cloudflare-blocks-connection-message' ) . ' ' .
|
1084 |
-
__fs( 'happy-to-resolve-issue-asap' ) .
|
1085 |
' %s',
|
1086 |
'<b>' . $this->get_plugin_name() . '</b>',
|
1087 |
sprintf(
|
1088 |
'<ol id="fs_firewall_issue_options"><li>%s</li><li>%s</li><li>%s</li></ol>',
|
1089 |
sprintf(
|
1090 |
'<a class="fs-resolve" data-type="cloudflare" href="#"><b>%s</b></a>%s',
|
1091 |
-
__fs( 'fix-issue-title' ),
|
1092 |
' - ' . sprintf(
|
1093 |
-
__fs( 'fix-issue-desc' ),
|
1094 |
'<a href="mailto:' . $admin_email . '">' . $admin_email . '</a>'
|
1095 |
)
|
1096 |
),
|
1097 |
sprintf(
|
1098 |
'<a href="%s" target="_blank"><b>%s</b></a>%s',
|
1099 |
sprintf( 'https://wordpress.org/plugins/%s/download/', $this->_slug ),
|
1100 |
-
__fs( 'install-previous-title' ),
|
1101 |
-
' - ' . __fs( 'install-previous-desc' )
|
1102 |
),
|
1103 |
sprintf(
|
1104 |
'<a href="%s"><b>%s</b></a>%s',
|
1105 |
wp_nonce_url( 'plugins.php?action=deactivate&plugin=' . $this->_plugin_basename . '&plugin_status=' . 'all' . '&paged=' . '1' . '&s=' . '', 'deactivate-plugin_' . $this->_plugin_basename ),
|
1106 |
-
__fs( 'deactivate-plugin-title' ),
|
1107 |
-
' - ' . __fs( 'deactivate-plugin-desc',
|
1108 |
)
|
1109 |
)
|
1110 |
);
|
1111 |
break;
|
1112 |
case 'squid_cache_block':
|
1113 |
$message = sprintf(
|
1114 |
-
__fs( 'x-requires-access-to-api',
|
1115 |
-
__fs( 'squid-blocks-connection-message' ) .
|
1116 |
' %s',
|
1117 |
'<b>' . $this->get_plugin_name() . '</b>',
|
1118 |
sprintf(
|
1119 |
'<ol id="fs_firewall_issue_options"><li>%s</li><li>%s</li><li>%s</li></ol>',
|
1120 |
sprintf(
|
1121 |
'<a class="fs-resolve" data-type="squid" href="#"><b>%s</b></a>%s',
|
1122 |
-
__fs( 'squid-no-clue-title' ),
|
1123 |
' - ' . sprintf(
|
1124 |
-
__fs( 'squid-no-clue-desc' ),
|
1125 |
'<a href="mailto:' . $admin_email . '">' . $admin_email . '</a>'
|
1126 |
)
|
1127 |
),
|
1128 |
sprintf(
|
1129 |
'<b>%s</b> - %s',
|
1130 |
-
__fs( 'sysadmin-title' ),
|
1131 |
sprintf(
|
1132 |
-
__fs( 'squid-sysadmin-desc' ),
|
1133 |
// We use a filter since the plugin might require additional API connectivity.
|
1134 |
'<b>' . implode( ', ', $this->apply_filters( 'api_domains', array( 'api.freemius.com' ) ) ) . '</b>' )
|
1135 |
),
|
1136 |
sprintf(
|
1137 |
'<a href="%s"><b>%s</b></a>%s',
|
1138 |
wp_nonce_url( 'plugins.php?action=deactivate&plugin=' . $this->_plugin_basename . '&plugin_status=' . 'all' . '&paged=' . '1' . '&s=' . '', 'deactivate-plugin_' . $this->_plugin_basename ),
|
1139 |
-
__fs( 'deactivate-plugin-title' ),
|
1140 |
-
' - ' . __fs( 'deactivate-plugin-desc',
|
1141 |
)
|
1142 |
)
|
1143 |
);
|
1144 |
break;
|
1145 |
default:
|
1146 |
-
$message = __fs( 'connectivity-test-fails-message' );
|
1147 |
break;
|
1148 |
}
|
1149 |
}
|
1150 |
|
1151 |
if ( false === $message ) {
|
1152 |
$message = sprintf(
|
1153 |
-
__fs( 'x-requires-access-to-api',
|
1154 |
-
__fs( 'connectivity-test-fails-message' ) . ' ' .
|
1155 |
-
__fs( 'happy-to-resolve-issue-asap' ) .
|
1156 |
' %s',
|
1157 |
'<b>' . $this->get_plugin_name() . '</b>',
|
1158 |
sprintf(
|
1159 |
'<ol id="fs_firewall_issue_options"><li>%s</li><li>%s</li><li>%s</li></ol>',
|
1160 |
sprintf(
|
1161 |
'<a class="fs-resolve" data-type="general" href="#"><b>%s</b></a>%s',
|
1162 |
-
__fs( 'fix-issue-title' ),
|
1163 |
' - ' . sprintf(
|
1164 |
-
__fs( 'fix-issue-desc' ),
|
1165 |
'<a href="mailto:' . $admin_email . '">' . $admin_email . '</a>'
|
1166 |
)
|
1167 |
),
|
1168 |
sprintf(
|
1169 |
'<a href="%s" target="_blank"><b>%s</b></a>%s',
|
1170 |
sprintf( 'https://wordpress.org/plugins/%s/download/', $this->_slug ),
|
1171 |
-
__fs( 'install-previous-title' ),
|
1172 |
-
' - ' . __fs( 'install-previous-desc' )
|
1173 |
),
|
1174 |
sprintf(
|
1175 |
'<a href="%s"><b>%s</b></a>%s',
|
1176 |
wp_nonce_url( 'plugins.php?action=deactivate&plugin=' . $this->_plugin_basename . '&plugin_status=' . 'all' . '&paged=' . '1' . '&s=' . '', 'deactivate-plugin_' . $this->_plugin_basename ),
|
1177 |
-
__fs( 'deactivate-plugin-title' ),
|
1178 |
-
' - ' . __fs( 'deactivate-plugin-desc',
|
1179 |
)
|
1180 |
)
|
1181 |
);
|
@@ -1184,7 +1182,7 @@
|
|
1184 |
$this->_admin_notices->add_sticky(
|
1185 |
$message,
|
1186 |
'failed_connect_api',
|
1187 |
-
__fs( 'oops' ) . '...',
|
1188 |
'error'
|
1189 |
);
|
1190 |
}
|
@@ -1272,7 +1270,7 @@
|
|
1272 |
|
1273 |
$this->_admin_notices->add_sticky(
|
1274 |
sprintf(
|
1275 |
-
__fs( 'fix-request-sent-message' ),
|
1276 |
'<a href="mailto:' . $admin_email . '">' . $admin_email . '</a>'
|
1277 |
),
|
1278 |
'server_details_sent'
|
@@ -1467,6 +1465,13 @@
|
|
1467 |
) );
|
1468 |
}
|
1469 |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
1470 |
private function _get_option( &$options, $key, $default = false ) {
|
1471 |
return ! empty( $options[ $key ] ) ? $options[ $key ] : $default;
|
1472 |
}
|
@@ -1552,6 +1557,7 @@
|
|
1552 |
$this->_has_paid_plans = $this->_get_bool_option( $plugin_info, 'has_paid_plans', true );
|
1553 |
$this->_is_org_compliant = $this->_get_bool_option( $plugin_info, 'is_org_compliant', true );
|
1554 |
$this->_enable_anonymous = $this->_get_bool_option( $plugin_info, 'enable_anonymous', true );
|
|
|
1555 |
|
1556 |
if ( ! $this->is_registered() ) {
|
1557 |
if ( ! $this->has_api_connectivity() ) {
|
@@ -1609,10 +1615,10 @@
|
|
1609 |
if ( ! $this->is_parent_plugin_installed() ) {
|
1610 |
$this->_admin_notices->add(
|
1611 |
( is_string( $parent_name ) ?
|
1612 |
-
sprintf( __fs( 'addon-cannot-run-without-x' ), $this->get_plugin_name(), $parent_name ) :
|
1613 |
-
sprintf( __fs( 'addon-x-cannot-run-without-parent' ), $this->get_plugin_name() )
|
1614 |
),
|
1615 |
-
__fs( 'oops' ) . '...',
|
1616 |
'error'
|
1617 |
);
|
1618 |
|
@@ -1645,7 +1651,10 @@
|
|
1645 |
add_action( 'install_plugins_pre_plugin-information', 'fs_install_plugin_information' );
|
1646 |
|
1647 |
// Override request for plugin information for Add-ons.
|
1648 |
-
add_filter( 'fs_plugins_api', array(
|
|
|
|
|
|
|
1649 |
} else {
|
1650 |
if ( $this->is_paying() || $this->_has_addons() ) {
|
1651 |
new FS_Plugin_Updater( $this );
|
@@ -1720,9 +1729,9 @@
|
|
1720 |
) );
|
1721 |
|
1722 |
$this->_admin_notices->add_sticky(
|
1723 |
-
__fs( 'premium-activated-message' ),
|
1724 |
'premium_activated',
|
1725 |
-
__fs( 'woot' ) . '!'
|
1726 |
);
|
1727 |
} else {
|
1728 |
// Activated free code (after had the premium before).
|
@@ -1731,14 +1740,14 @@
|
|
1731 |
if ( $this->is_paying() && ! $this->is_premium() ) {
|
1732 |
$this->_admin_notices->add_sticky(
|
1733 |
sprintf(
|
1734 |
-
__fs( 'you-have-x-license' ),
|
1735 |
$this->_site->plan->title
|
1736 |
) . ' ' . $this->_get_latest_download_link( sprintf(
|
1737 |
-
__fs( 'download-x-version-now' ),
|
1738 |
$this->_site->plan->title
|
1739 |
) ),
|
1740 |
'plan_upgraded',
|
1741 |
-
__fs( 'yee-haw' ) . '!'
|
1742 |
);
|
1743 |
}
|
1744 |
}
|
@@ -1818,7 +1827,10 @@
|
|
1818 |
}
|
1819 |
|
1820 |
if ( ! empty( $selected_addon->info->screenshots ) ) {
|
1821 |
-
$view_vars = array(
|
|
|
|
|
|
|
1822 |
$data->sections['screenshots'] = fs_get_template( '/plugin-info/screenshots.php', $view_vars );
|
1823 |
}
|
1824 |
|
@@ -1876,7 +1888,10 @@
|
|
1876 |
$data->plans = $plans;
|
1877 |
|
1878 |
if ( $has_features ) {
|
1879 |
-
$view_vars = array(
|
|
|
|
|
|
|
1880 |
$data->sections['features'] = fs_get_template( '/plugin-info/features.php', $view_vars );
|
1881 |
}
|
1882 |
}
|
@@ -2169,7 +2184,7 @@
|
|
2169 |
|
2170 |
$this->_admin_notices->add_sticky(
|
2171 |
sprintf(
|
2172 |
-
__fs( 'pending-activation-message' ),
|
2173 |
'<b>' . $this->get_plugin_name() . '</b>',
|
2174 |
'<b>' . $email . '</b>'
|
2175 |
),
|
@@ -2223,10 +2238,10 @@
|
|
2223 |
// Show notice for new plugin installations.
|
2224 |
$this->_admin_notices->add(
|
2225 |
sprintf(
|
2226 |
-
__fs( 'you-are-step-away' ),
|
2227 |
sprintf( '<b><a href="%s">%s</a></b>',
|
2228 |
$this->get_activation_url(),
|
2229 |
-
sprintf( __fs( 'activate-x-now' ), $this->get_plugin_name() )
|
2230 |
)
|
2231 |
),
|
2232 |
'',
|
@@ -2239,10 +2254,10 @@
|
|
2239 |
// Show notice for new plugin installations.
|
2240 |
$this->_admin_notices->add_sticky(
|
2241 |
sprintf(
|
2242 |
-
__fs( 'few-plugin-tweaks' ),
|
2243 |
sprintf( '<b><a href="%s">%s</a></b>',
|
2244 |
$this->get_activation_url(),
|
2245 |
-
sprintf( __fs( 'optin-x-now' ), $this->get_plugin_name() )
|
2246 |
)
|
2247 |
),
|
2248 |
'connect_account',
|
@@ -2374,25 +2389,16 @@
|
|
2374 |
}
|
2375 |
|
2376 |
/**
|
2377 |
-
*
|
2378 |
-
* @since 1.1.5
|
2379 |
*
|
2380 |
-
* @return bool
|
2381 |
-
*/
|
2382 |
-
private function is_plugin_new_install()
|
2383 |
-
{
|
2384 |
-
return isset($this->_storage->is_plugin_new_install) &&
|
2385 |
-
$this->_storage->is_plugin_new_install;
|
2386 |
-
}
|
2387 |
-
|
2388 |
-
/**
|
2389 |
* @author Vova Feldman (@svovaf)
|
2390 |
* @since 1.1.5
|
2391 |
*
|
2392 |
* @return bool
|
2393 |
*/
|
2394 |
-
function
|
2395 |
-
return
|
|
|
2396 |
}
|
2397 |
|
2398 |
/**
|
@@ -2425,8 +2431,8 @@
|
|
2425 |
deactivate_plugins( $this->_free_plugin_basename );
|
2426 |
|
2427 |
$this->_admin_notices->add(
|
2428 |
-
sprintf( __fs( 'successful-version-upgrade-message' ), sprintf( '<b>%s</b>', $this->_plugin->title ) ),
|
2429 |
-
__fs( 'woot' ) . '!'
|
2430 |
);
|
2431 |
}
|
2432 |
} else if ( $this->is_anonymous() ) {
|
@@ -2460,7 +2466,7 @@
|
|
2460 |
$this->_storage->is_plugin_new_install = empty( $this->_storage->plugin_last_version );
|
2461 |
}
|
2462 |
|
2463 |
-
if ( $this->has_api_connectivity(true) ) {
|
2464 |
// Store hint that the plugin was just activated to enable auto-redirection to settings.
|
2465 |
add_option( "fs_{$this->_slug}_activated", true );
|
2466 |
}
|
@@ -2525,13 +2531,16 @@
|
|
2525 |
}
|
2526 |
|
2527 |
$this->_admin_notices->clear_all_sticky();
|
|
|
|
|
|
|
2528 |
|
2529 |
if ( ! $this->has_api_connectivity() ) {
|
2530 |
// Reset connectivity test cache.
|
2531 |
unset( $this->_storage->connectivity_test );
|
2532 |
}
|
2533 |
|
2534 |
-
if (!isset($this->_storage->is_plugin_new_install)) {
|
2535 |
// Remember that plugin was already installed.
|
2536 |
$this->_storage->is_plugin_new_install = false;
|
2537 |
}
|
@@ -2545,6 +2554,25 @@
|
|
2545 |
|
2546 |
// Clear API cache on deactivation.
|
2547 |
FS_Api::clear_cache();
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
2548 |
}
|
2549 |
|
2550 |
/**
|
@@ -4127,7 +4155,7 @@
|
|
4127 |
return;
|
4128 |
}
|
4129 |
|
4130 |
-
|
4131 |
|
4132 |
if ( fs_request_is_action( 'activate' ) && fs_request_is_post() ) {
|
4133 |
// check_admin_referer( 'activate_' . $this->_plugin->public_key );
|
@@ -4331,7 +4359,7 @@
|
|
4331 |
|
4332 |
if ( ! $this->is_paying() ) {
|
4333 |
$this->_admin_notices->add_sticky(
|
4334 |
-
sprintf( __fs( 'plugin-x-activation-message' ), '<b>' . $this->get_plugin_name() . '</b>' ),
|
4335 |
'activation_complete'
|
4336 |
);
|
4337 |
}
|
@@ -4340,14 +4368,14 @@
|
|
4340 |
if ( $this->is_paying() && ! $this->is_premium() ) {
|
4341 |
$this->_admin_notices->add_sticky(
|
4342 |
sprintf(
|
4343 |
-
__fs( 'activation-with-plan-x-message' ),
|
4344 |
$this->_site->plan->title
|
4345 |
) . ' ' . $this->_get_latest_download_link( sprintf(
|
4346 |
-
__fs( 'download-latest-x-version' ),
|
4347 |
$this->_site->plan->title
|
4348 |
) ),
|
4349 |
'plan_upgraded',
|
4350 |
-
__fs( 'yee-haw' ) . '!'
|
4351 |
);
|
4352 |
}
|
4353 |
|
@@ -4388,6 +4416,8 @@
|
|
4388 |
* @since 1.0.7
|
4389 |
*/
|
4390 |
function _install_with_new_user() {
|
|
|
|
|
4391 |
if ( $this->is_registered() ) {
|
4392 |
return;
|
4393 |
}
|
@@ -4440,6 +4470,8 @@
|
|
4440 |
* @since 1.0.7
|
4441 |
*/
|
4442 |
function _install_with_current_user() {
|
|
|
|
|
4443 |
if ( $this->is_registered() ) {
|
4444 |
return;
|
4445 |
}
|
@@ -4469,9 +4501,9 @@
|
|
4469 |
|
4470 |
if ( isset( $install->error ) ) {
|
4471 |
$this->_admin_notices->add(
|
4472 |
-
sprintf( __fs( 'could-not-activate-x' ), $this->get_plugin_name() ) . ' ' .
|
4473 |
-
__fs( 'contact-us-with-error-message' ) . ' ' . '<b>' . $install->error->message . '</b>',
|
4474 |
-
__fs( 'oops' ) . '...',
|
4475 |
'error'
|
4476 |
);
|
4477 |
|
@@ -4514,9 +4546,9 @@
|
|
4514 |
|
4515 |
if ( isset( $addon_install->error ) ) {
|
4516 |
$this->_admin_notices->add(
|
4517 |
-
sprintf( __fs( 'could-not-activate-x' ), $this->get_plugin_name() ) . ' ' .
|
4518 |
-
__fs( 'contact-us-with-error-message' ) . ' ' . '<b>' . $addon_install->error->message . '</b>',
|
4519 |
-
__fs( 'oops' ) . '...',
|
4520 |
'error'
|
4521 |
);
|
4522 |
|
@@ -4694,7 +4726,7 @@
|
|
4694 |
|
4695 |
if ( $this->_menu->is_activation_page() ) {
|
4696 |
// Clean admin page from distracting content.
|
4697 |
-
|
4698 |
}
|
4699 |
|
4700 |
if ( false !== $hook ) {
|
@@ -4734,9 +4766,9 @@
|
|
4734 |
if ( $this->is_registered() ) {
|
4735 |
// Add user account page.
|
4736 |
$this->add_submenu_item(
|
4737 |
-
__fs( 'account' ),
|
4738 |
array( &$this, '_account_page_render' ),
|
4739 |
-
$this->get_plugin_name() . ' – ' . __fs( 'account' ),
|
4740 |
'manage_options',
|
4741 |
'account',
|
4742 |
array( &$this, '_account_page_load' ),
|
@@ -4747,21 +4779,21 @@
|
|
4747 |
|
4748 |
// Add contact page.
|
4749 |
$this->add_submenu_item(
|
4750 |
-
__fs( 'contact-us' ),
|
4751 |
array( &$this, '_contact_page_render' ),
|
4752 |
-
$this->get_plugin_name() . ' – ' . __fs( 'contact-us' ),
|
4753 |
'manage_options',
|
4754 |
'contact',
|
4755 |
-
|
4756 |
WP_FS__DEFAULT_PRIORITY,
|
4757 |
$this->_menu->is_submenu_item_visible( 'contact' )
|
4758 |
);
|
4759 |
|
4760 |
if ( $this->_has_addons() ) {
|
4761 |
$this->add_submenu_item(
|
4762 |
-
__fs( 'add-ons' ),
|
4763 |
array( &$this, '_addons_page_render' ),
|
4764 |
-
$this->get_plugin_name() . ' – ' . __fs( 'add-ons' ),
|
4765 |
'manage_options',
|
4766 |
'addons',
|
4767 |
array( &$this, '_addons_page_load' ),
|
@@ -4770,19 +4802,19 @@
|
|
4770 |
);
|
4771 |
}
|
4772 |
|
4773 |
-
$show_pricing = ($this->has_paid_plan() && $this->_menu->is_submenu_item_visible( 'pricing' ));
|
4774 |
// If user don't have paid plans, add pricing page
|
4775 |
// to support add-ons checkout but don't add the submenu item.
|
4776 |
// || (isset( $_GET['page'] ) && $this->_menu->get_slug( 'pricing' ) == $_GET['page']);
|
4777 |
|
4778 |
// Add upgrade/pricing page.
|
4779 |
$this->add_submenu_item(
|
4780 |
-
( $this->is_paying() ? __fs( 'pricing' ) : __fs( 'upgrade' ) . ' ➤' ),
|
4781 |
array( &$this, '_pricing_page_render' ),
|
4782 |
-
$this->get_plugin_name() . ' – ' . __fs( 'pricing' ),
|
4783 |
'manage_options',
|
4784 |
'pricing',
|
4785 |
-
|
4786 |
WP_FS__LOWEST_PRIORITY,
|
4787 |
$show_pricing
|
4788 |
);
|
@@ -4901,7 +4933,7 @@
|
|
4901 |
if ( $this->is_registered() ) {
|
4902 |
if ( $this->_menu->is_submenu_item_visible( 'support' ) ) {
|
4903 |
$this->add_submenu_link_item(
|
4904 |
-
$this->apply_filters( 'support_forum_submenu', __fs( 'support-forum' ) ),
|
4905 |
$this->apply_filters( 'support_forum_url', 'https://wordpress.org/support/plugin/' . $this->_slug ),
|
4906 |
'wp-support-forum',
|
4907 |
'read',
|
@@ -5118,6 +5150,10 @@
|
|
5118 |
*
|
5119 |
* @param string $tag
|
5120 |
* @param callable|bool $function_to_check Optional. The callback to check for. Default false.
|
|
|
|
|
|
|
|
|
5121 |
*/
|
5122 |
function has_filter( $tag, $function_to_check = false ) {
|
5123 |
$this->_logger->entrance( $tag );
|
@@ -5125,6 +5161,20 @@
|
|
5125 |
return has_filter( 'fs_' . $tag . '_' . $this->_slug, $function_to_check );
|
5126 |
}
|
5127 |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
5128 |
/* Account Page
|
5129 |
------------------------------------------------------------------------------------------------------------------*/
|
5130 |
/**
|
@@ -5335,14 +5385,26 @@
|
|
5335 |
$this->_user->last = $user->last;
|
5336 |
$this->_user->email = $user->email;
|
5337 |
|
5338 |
-
|
5339 |
-
|
|
|
|
|
|
|
|
|
5340 |
|
5341 |
$this->do_action( 'account_email_verified', $user->email );
|
5342 |
|
5343 |
$this->_admin_notices->add(
|
5344 |
-
__fs( 'email-verified-message' ),
|
5345 |
-
__fs( 'right-on' ) . '!'
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
5346 |
);
|
5347 |
}
|
5348 |
|
@@ -5350,6 +5412,20 @@
|
|
5350 |
$this->_store_user();
|
5351 |
|
5352 |
$this->do_action( 'after_account_user_sync', $user );
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
5353 |
}
|
5354 |
}
|
5355 |
|
@@ -5723,22 +5799,22 @@
|
|
5723 |
$this->_admin_notices->add_sticky(
|
5724 |
FS_Plan_Manager::instance()->has_free_plan( $plans ) ?
|
5725 |
sprintf(
|
5726 |
-
__fs( 'addon-successfully-upgraded-message' ),
|
5727 |
$addon->title
|
5728 |
) . ' ' . $this->_get_latest_download_link(
|
5729 |
-
__fs( 'download-latest-version' ),
|
5730 |
$addon_id
|
5731 |
)
|
5732 |
:
|
5733 |
sprintf(
|
5734 |
-
__fs( 'addon-successfully-purchased-message' ),
|
5735 |
$addon->title
|
5736 |
) . ' ' . $this->_get_latest_download_link(
|
5737 |
-
__fs( 'download-latest-version' ),
|
5738 |
$addon_id
|
5739 |
),
|
5740 |
'addon_plan_upgraded_' . $addon->slug,
|
5741 |
-
__fs( 'yee-haw' ) . '!'
|
5742 |
);
|
5743 |
}
|
5744 |
}
|
@@ -5771,19 +5847,19 @@
|
|
5771 |
// Failed to ping API - blocked!
|
5772 |
$this->_admin_notices->add(
|
5773 |
sprintf(
|
5774 |
-
__fs( 'server-blocking-access' ),
|
5775 |
$this->get_plugin_name(),
|
5776 |
'<a href="' . $api->get_url() . '" target="_blank">' . $api->get_url() . '</a>'
|
5777 |
-
) . '<br> ' . __fs( 'server-error-message' ) . var_export( $site->error, true ),
|
5778 |
-
__fs( 'oops' ) . '...',
|
5779 |
'error',
|
5780 |
$background
|
5781 |
);
|
5782 |
} else {
|
5783 |
// Authentication params are broken.
|
5784 |
$this->_admin_notices->add(
|
5785 |
-
__fs( 'wrong-authentication-param-message' ),
|
5786 |
-
__fs( 'oops' ) . '...',
|
5787 |
'error'
|
5788 |
);
|
5789 |
}
|
@@ -5867,19 +5943,19 @@
|
|
5867 |
if ( ! $background && is_admin() ) {
|
5868 |
$this->_admin_notices->add(
|
5869 |
sprintf(
|
5870 |
-
__fs( 'plan-did-not-change-message' ) . ' ' .
|
5871 |
sprintf(
|
5872 |
'<a href="%s">%s</a>',
|
5873 |
$this->contact_url(
|
5874 |
'bug',
|
5875 |
-
sprintf( __fs( 'plan-did-not-change-email-message',
|
5876 |
strtoupper( $this->_site->plan->name )
|
5877 |
)
|
5878 |
),
|
5879 |
-
__fs( 'contact-us-here' )
|
5880 |
)
|
5881 |
),
|
5882 |
-
__fs( 'hmm' ) . '...',
|
5883 |
'error'
|
5884 |
);
|
5885 |
}
|
@@ -5887,15 +5963,15 @@
|
|
5887 |
case 'upgraded':
|
5888 |
$this->_admin_notices->add_sticky(
|
5889 |
sprintf(
|
5890 |
-
__fs( 'plan-upgraded-message' ),
|
5891 |
'<i>' . $this->get_plugin_name() . '</i>'
|
5892 |
) . ( $this->is_premium() ? '' : ' ' . $this->_get_latest_download_link( sprintf(
|
5893 |
-
__fs( 'download-latest-x-version' ),
|
5894 |
$this->_site->plan->title
|
5895 |
) )
|
5896 |
),
|
5897 |
'plan_upgraded',
|
5898 |
-
__fs( 'yee-haw' ) . '!'
|
5899 |
);
|
5900 |
|
5901 |
$this->_admin_notices->remove_sticky( array(
|
@@ -5908,7 +5984,7 @@
|
|
5908 |
case 'changed':
|
5909 |
$this->_admin_notices->add_sticky(
|
5910 |
sprintf(
|
5911 |
-
__fs( 'plan-changed-to-x-message' ),
|
5912 |
$this->_site->plan->title
|
5913 |
),
|
5914 |
'plan_changed'
|
@@ -5923,31 +5999,31 @@
|
|
5923 |
break;
|
5924 |
case 'downgraded':
|
5925 |
$this->_admin_notices->add_sticky(
|
5926 |
-
sprintf( __fs( 'license-expired-blocking-message' ) ),
|
5927 |
'license_expired',
|
5928 |
-
__fs( 'hmm' ) . '...'
|
5929 |
);
|
5930 |
$this->_admin_notices->remove_sticky( 'plan_upgraded' );
|
5931 |
break;
|
5932 |
case 'expired':
|
5933 |
$this->_admin_notices->add_sticky(
|
5934 |
-
sprintf( __fs( 'license-expired-non-blocking-message' ), $this->_site->plan->title ),
|
5935 |
'license_expired',
|
5936 |
-
__fs( 'hmm' ) . '...'
|
5937 |
);
|
5938 |
$this->_admin_notices->remove_sticky( 'plan_upgraded' );
|
5939 |
break;
|
5940 |
case 'trial_started':
|
5941 |
$this->_admin_notices->add_sticky(
|
5942 |
sprintf(
|
5943 |
-
__fs( 'trial-started-message' ),
|
5944 |
'<i>' . $this->get_plugin_name() . '</i>'
|
5945 |
) . ( $this->is_premium() ? '' : ' ' . $this->_get_latest_download_link( sprintf(
|
5946 |
-
__fs( 'download-latest-x-version' ),
|
5947 |
$this->_storage->trial_plan->title
|
5948 |
) ) ),
|
5949 |
'trial_started',
|
5950 |
-
__fs( 'yee-haw' ) . '!'
|
5951 |
);
|
5952 |
|
5953 |
$this->_admin_notices->remove_sticky( array(
|
@@ -5956,9 +6032,9 @@
|
|
5956 |
break;
|
5957 |
case 'trial_expired':
|
5958 |
$this->_admin_notices->add_sticky(
|
5959 |
-
__fs( 'trial-expired-message' ),
|
5960 |
'trial_expired',
|
5961 |
-
__fs( 'hmm' ) . '...'
|
5962 |
);
|
5963 |
$this->_admin_notices->remove_sticky( array(
|
5964 |
'trial_started',
|
@@ -5994,9 +6070,9 @@
|
|
5994 |
if ( isset( $license->error ) ) {
|
5995 |
if ( ! $background ) {
|
5996 |
$this->_admin_notices->add(
|
5997 |
-
__fs( 'license-activation-failed-message' ) . '<br> ' .
|
5998 |
-
__fs( 'server-error-message' ) . ' ' . var_export( $license->error, true ),
|
5999 |
-
__fs( 'hmm' ) . '...',
|
6000 |
'error'
|
6001 |
);
|
6002 |
}
|
@@ -6015,13 +6091,13 @@
|
|
6015 |
|
6016 |
if ( ! $background ) {
|
6017 |
$this->_admin_notices->add_sticky(
|
6018 |
-
__fs( 'license-activated-message' ) .
|
6019 |
( $this->is_premium() ? '' : ' ' . $this->_get_latest_download_link( sprintf(
|
6020 |
-
__fs( 'download-latest-x-version' ),
|
6021 |
$this->_site->plan->title
|
6022 |
) ) ),
|
6023 |
'license_activated',
|
6024 |
-
__fs( 'yee-haw' ) . '!'
|
6025 |
);
|
6026 |
}
|
6027 |
|
@@ -6042,8 +6118,8 @@
|
|
6042 |
|
6043 |
if ( ! is_object( $this->_license ) ) {
|
6044 |
$this->_admin_notices->add(
|
6045 |
-
sprintf( __fs( 'no-active-license-message' ), $this->_site->plan->title ),
|
6046 |
-
__fs( 'hmm' ) . '...'
|
6047 |
);
|
6048 |
|
6049 |
return;
|
@@ -6054,9 +6130,9 @@
|
|
6054 |
|
6055 |
if ( isset( $license->error ) ) {
|
6056 |
$this->_admin_notices->add(
|
6057 |
-
__fs( 'license-deactivation-failed-message' ) . '<br> ' .
|
6058 |
-
__fs( 'server-error-message' ) . ' ' . var_export( $license->error, true ),
|
6059 |
-
__fs( 'hmm' ) . '...',
|
6060 |
'error'
|
6061 |
);
|
6062 |
|
@@ -6081,8 +6157,8 @@
|
|
6081 |
|
6082 |
if ( $show_notice ) {
|
6083 |
$this->_admin_notices->add(
|
6084 |
-
sprintf( __fs( 'license-deactivation-message' ), $this->_site->plan->title ),
|
6085 |
-
__fs( 'ok' )
|
6086 |
);
|
6087 |
}
|
6088 |
|
@@ -6130,7 +6206,7 @@
|
|
6130 |
$this->_admin_notices->remove_sticky( 'plan_upgraded' );
|
6131 |
|
6132 |
$this->_admin_notices->add(
|
6133 |
-
sprintf( __fs( 'plan-x-downgraded-message' ),
|
6134 |
$plan->title,
|
6135 |
human_time_diff( time(), strtotime( $this->_license->expiration ) )
|
6136 |
)
|
@@ -6140,8 +6216,8 @@
|
|
6140 |
$this->_store_site();
|
6141 |
} else {
|
6142 |
$this->_admin_notices->add(
|
6143 |
-
__fs( 'plan-downgraded-failure-message' ),
|
6144 |
-
__fs( 'oops' ) . '...',
|
6145 |
'error'
|
6146 |
);
|
6147 |
}
|
@@ -6160,8 +6236,8 @@
|
|
6160 |
|
6161 |
if ( ! $this->is_trial() ) {
|
6162 |
$this->_admin_notices->add(
|
6163 |
-
__fs( 'trial-cancel-no-trial-message' ),
|
6164 |
-
__fs( 'oops' ) . '...',
|
6165 |
'error'
|
6166 |
);
|
6167 |
|
@@ -6190,7 +6266,7 @@
|
|
6190 |
$this->_admin_notices->remove_sticky( 'plan_upgraded' );
|
6191 |
|
6192 |
$this->_admin_notices->add(
|
6193 |
-
sprintf( __fs( 'trial-cancel-message' ), $this->_storage->trial_plan->title )
|
6194 |
);
|
6195 |
|
6196 |
$this->_admin_notices->remove_sticky( array(
|
@@ -6206,8 +6282,8 @@
|
|
6206 |
unset( $this->_storage->trial_plan );
|
6207 |
} else {
|
6208 |
$this->_admin_notices->add(
|
6209 |
-
__fs( 'trial-cancel-failure-message' ),
|
6210 |
-
__fs( 'oops' ) . '...',
|
6211 |
'error'
|
6212 |
);
|
6213 |
}
|
@@ -6431,21 +6507,21 @@
|
|
6431 |
if ( ! $background ) {
|
6432 |
$this->_admin_notices->add(
|
6433 |
sprintf(
|
6434 |
-
__fs( 'version-x-released' ) . ' ' .
|
6435 |
$update->version,
|
6436 |
sprintf(
|
6437 |
'<a href="%s" target="_blank">%s</a>',
|
6438 |
$this->get_account_url( 'download_latest' ),
|
6439 |
-
sprintf( __fs( 'latest-x-version' ), $this->_site->plan->title )
|
6440 |
)
|
6441 |
),
|
6442 |
-
__fs( 'new' ) . '!'
|
6443 |
);
|
6444 |
}
|
6445 |
} else if ( false === $new_version && ! $background ) {
|
6446 |
$this->_admin_notices->add(
|
6447 |
-
__fs( 'you-have-latest' ),
|
6448 |
-
__fs( 'you-are-good' )
|
6449 |
);
|
6450 |
}
|
6451 |
|
@@ -6643,7 +6719,7 @@
|
|
6643 |
|
6644 |
if ( ! isset( $result->error ) ) {
|
6645 |
$this->_admin_notices->add( sprintf(
|
6646 |
-
__fs( 'verification-email-sent-message' ),
|
6647 |
sprintf( '<a href="mailto:%1s">%2s</a>', esc_url( $this->_user->email ), $this->_user->email )
|
6648 |
) );
|
6649 |
} else {
|
@@ -6770,20 +6846,20 @@
|
|
6770 |
$candidate_email = fs_request_get( 'candidate_email', '' );
|
6771 |
|
6772 |
if ( $this->init_change_owner( $candidate_email ) ) {
|
6773 |
-
$this->_admin_notices->add( sprintf( __fs( 'change-owner-request-sent-x' ), '<b>' . $this->_user->email . '</b>' ) );
|
6774 |
}
|
6775 |
break;
|
6776 |
case 'owner_confirmed':
|
6777 |
$candidate_email = fs_request_get( 'candidate_email', '' );
|
6778 |
|
6779 |
-
$this->_admin_notices->add( sprintf( __fs( 'change-owner-request_owner-confirmed' ), '<b>' . $candidate_email . '</b>' ) );
|
6780 |
break;
|
6781 |
case 'candidate_confirmed':
|
6782 |
if ( $this->complete_change_owner() ) {
|
6783 |
$this->_admin_notices->add_sticky(
|
6784 |
-
sprintf( __fs( 'change-owner-request_candidate-confirmed' ), '<b>' . $this->_user->email . '</b>' ),
|
6785 |
'ownership_changed',
|
6786 |
-
__fs( 'congrats' ) . '!'
|
6787 |
);
|
6788 |
} else {
|
6789 |
// @todo Handle failed ownership change message.
|
@@ -6803,23 +6879,23 @@
|
|
6803 |
switch ( $result->error->code ) {
|
6804 |
case 'user_exist':
|
6805 |
$this->_admin_notices->add(
|
6806 |
-
__fs( 'user-exist-message' ) . ' ' .
|
6807 |
-
sprintf( __fs( 'user-exist-message_ownership' ), '<b>' . $new_email . '</b>' ) .
|
6808 |
sprintf(
|
6809 |
'<a style="margin-left: 10px;" href="%s"><button class="button button-primary">%s ➜</button></a>',
|
6810 |
$this->get_account_url( 'change_owner', array(
|
6811 |
'state' => 'init',
|
6812 |
'candidate_email' => $new_email
|
6813 |
) ),
|
6814 |
-
__fs( 'change-ownership' )
|
6815 |
),
|
6816 |
-
__fs( 'oops' ) . '...',
|
6817 |
'error'
|
6818 |
);
|
6819 |
break;
|
6820 |
}
|
6821 |
} else {
|
6822 |
-
$this->_admin_notices->add( __fs( 'email-updated-message' ) );
|
6823 |
}
|
6824 |
|
6825 |
return;
|
@@ -6831,12 +6907,12 @@
|
|
6831 |
|
6832 |
if ( isset( $result->error ) ) {
|
6833 |
$this->_admin_notices->add(
|
6834 |
-
__fs( 'name-update-failed-message' ),
|
6835 |
-
__fs( 'oops' ) . '...',
|
6836 |
'error'
|
6837 |
);
|
6838 |
} else {
|
6839 |
-
$this->_admin_notices->add( __fs( 'name-updated-message' ) );
|
6840 |
}
|
6841 |
|
6842 |
return;
|
@@ -6889,7 +6965,7 @@
|
|
6889 |
$this->do_action( 'account_property_edit', 'site', $site_property, $site_property_value );
|
6890 |
|
6891 |
$this->_admin_notices->add( sprintf(
|
6892 |
-
__fs( 'x-updated' ),
|
6893 |
'<b>' . str_replace( '_', ' ', $p ) . '</b>' ) );
|
6894 |
|
6895 |
return;
|
@@ -6983,8 +7059,8 @@
|
|
6983 |
|
6984 |
if ( ! $this->is_registered() && $this->is_org_repo_compliant() ) {
|
6985 |
$this->_admin_notices->add(
|
6986 |
-
sprintf( __fs( 'addons-info-external-message' ), '<b>' . $this->get_plugin_name() . '</b>' ),
|
6987 |
-
__fs( 'heads-up' ),
|
6988 |
'update-nag'
|
6989 |
);
|
6990 |
}
|
@@ -7048,15 +7124,15 @@
|
|
7048 |
*
|
7049 |
* @uses remove_all_actions()
|
7050 |
*/
|
7051 |
-
function _hide_admin_notices() {
|
7052 |
remove_all_actions( 'admin_notices' );
|
7053 |
remove_all_actions( 'network_admin_notices' );
|
7054 |
remove_all_actions( 'all_admin_notices' );
|
7055 |
remove_all_actions( 'user_admin_notices' );
|
7056 |
}
|
7057 |
|
7058 |
-
function _clean_admin_content_section_hook() {
|
7059 |
-
|
7060 |
|
7061 |
// Hide footer.
|
7062 |
echo '<style>#wpfooter { display: none !important; }</style>';
|
@@ -7068,8 +7144,8 @@
|
|
7068 |
* @author Vova Feldman (@svovaf)
|
7069 |
* @since 1.0.3
|
7070 |
*/
|
7071 |
-
function _clean_admin_content_section() {
|
7072 |
-
add_action( 'admin_head',
|
7073 |
}
|
7074 |
|
7075 |
/* CSS & JavaScript
|
@@ -7223,8 +7299,8 @@
|
|
7223 |
$require_subscription = $paid_plan->is_require_subscription;
|
7224 |
$upgrade_url = $this->get_trial_url();
|
7225 |
$cc_string = $require_subscription ?
|
7226 |
-
sprintf( __fs( 'no-commitment-for-x-days' ), $paid_plan->trial_period ) :
|
7227 |
-
__fs( 'no-cc-required' ) . '!';
|
7228 |
|
7229 |
|
7230 |
$total_paid_plans = count( $this->_plans ) - ( FS_Plan_Manager::instance()->has_free_plan( $this->_plans ) ? 1 : 0 );
|
@@ -7232,9 +7308,9 @@
|
|
7232 |
if ( $total_paid_plans === $trial_plans_count ) {
|
7233 |
// All paid plans have trials.
|
7234 |
$message = sprintf(
|
7235 |
-
__fs( 'hey' ) . '! ' . __fs( 'trial-x-promotion-message' ),
|
7236 |
sprintf( '<b>%s</b>', $this->get_plugin_name() ),
|
7237 |
-
strtolower( __fs( 'awesome' ) ),
|
7238 |
$paid_plan->trial_period
|
7239 |
);
|
7240 |
} else {
|
@@ -7251,7 +7327,7 @@
|
|
7251 |
|
7252 |
// Not all paid plans have trials.
|
7253 |
$message = sprintf(
|
7254 |
-
__fs( 'hey' ) . '! ' . __fs( 'trial-x-promotion-message' ),
|
7255 |
sprintf( '<b>%s</b>', $this->get_plugin_name() ),
|
7256 |
$plans_string,
|
7257 |
$paid_plan->trial_period
|
@@ -7264,7 +7340,7 @@
|
|
7264 |
$message .= ' ' . sprintf(
|
7265 |
'<a style="margin-left: 10px;" href="%s"><button class="button button-primary">%s ➜</button></a>',
|
7266 |
$upgrade_url,
|
7267 |
-
__fs( 'start-free-trial' )
|
7268 |
);
|
7269 |
|
7270 |
$this->_admin_notices->add_sticky(
|
@@ -7361,7 +7437,7 @@
|
|
7361 |
if ( $this->is_registered() ) {
|
7362 |
if ( ! $this->is_paying() && $this->has_paid_plan() ) {
|
7363 |
$this->add_plugin_action_link(
|
7364 |
-
__fs( 'upgrade' ),
|
7365 |
$this->get_upgrade_url(),
|
7366 |
false,
|
7367 |
20,
|
@@ -7371,7 +7447,7 @@
|
|
7371 |
|
7372 |
if ( $this->_has_addons() ) {
|
7373 |
$this->add_plugin_action_link(
|
7374 |
-
__fs( 'add-ons' ),
|
7375 |
$this->_get_admin_page_url( 'addons' ),
|
7376 |
false,
|
7377 |
WP_FS__DEFAULT_PRIORITY,
|
@@ -7594,6 +7670,24 @@
|
|
7594 |
|
7595 |
#endregion ------------------------------------------------------------------
|
7596 |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
7597 |
#region Marketing ------------------------------------------------------------------
|
7598 |
|
7599 |
/**
|
16 |
*
|
17 |
* @var string
|
18 |
*/
|
19 |
+
public $version = WP_FS__SDK_VERSION;
|
20 |
|
21 |
#region Plugin Info
|
22 |
|
114 |
*/
|
115 |
private $_has_addons;
|
116 |
|
117 |
+
/**
|
118 |
+
* @since 1.1.6
|
119 |
+
* @var string[]bool.
|
120 |
+
*/
|
121 |
+
private $_permissions;
|
122 |
+
|
123 |
/**
|
124 |
* @var FS_Key_Value_Storage
|
125 |
*/
|
317 |
* @param string $sdk_prev_version
|
318 |
* @param string $sdk_version
|
319 |
*/
|
320 |
+
function _data_migration( $sdk_prev_version, $sdk_version ) {
|
321 |
+
if ( version_compare( $sdk_prev_version, '1.1.5', '<' ) &&
|
322 |
+
version_compare( $sdk_version, '1.1.5', '>=' )
|
323 |
) {
|
324 |
// On version 1.1.5 merged connectivity and is_on data.
|
325 |
if ( isset( $this->_storage->connectivity_test ) ) {
|
370 |
|
371 |
$this->add_action( 'after_plans_sync', array( &$this, '_check_for_trial_plans' ) );
|
372 |
|
373 |
+
$this->add_action( 'sdk_version_update', array( &$this, '_data_migration' ), WP_FS__DEFAULT_PRIORITY, 2 );
|
374 |
}
|
375 |
|
376 |
/**
|
472 |
function _get_uninstall_reasons( $user_type = 'long-term' ) {
|
473 |
$reason_found_better_plugin = array(
|
474 |
'id' => 2,
|
475 |
+
'text' => __fs( 'reason-found-a-better-plugin', $this->_slug ),
|
476 |
'input_type' => 'textfield',
|
477 |
+
'input_placeholder' => __fs( 'placeholder-plugin-name', $this->_slug )
|
478 |
);
|
479 |
|
480 |
$reason_other = array(
|
481 |
'id' => 7,
|
482 |
+
'text' => __fs( 'reason-other', $this->_slug ),
|
483 |
'input_type' => 'textfield',
|
484 |
'input_placeholder' => ''
|
485 |
);
|
487 |
$long_term_user_reasons = array(
|
488 |
array(
|
489 |
'id' => 1,
|
490 |
+
'text' => __fs( 'reason-no-longer-needed', $this->_slug ),
|
491 |
'input_type' => '',
|
492 |
'input_placeholder' => ''
|
493 |
),
|
494 |
$reason_found_better_plugin,
|
495 |
array(
|
496 |
'id' => 3,
|
497 |
+
'text' => __fs( 'reason-needed-for-a-short-period', $this->_slug ),
|
498 |
'input_type' => '',
|
499 |
'input_placeholder' => ''
|
500 |
),
|
501 |
array(
|
502 |
'id' => 4,
|
503 |
+
'text' => __fs( 'reason-broke-my-site', $this->_slug ),
|
504 |
'input_type' => '',
|
505 |
'input_placeholder' => ''
|
506 |
),
|
507 |
array(
|
508 |
'id' => 5,
|
509 |
+
'text' => __fs( 'reason-suddenly-stopped-working', $this->_slug ),
|
510 |
'input_type' => '',
|
511 |
'input_placeholder' => ''
|
512 |
)
|
515 |
if ( $this->is_paying() ) {
|
516 |
$long_term_user_reasons[] = array(
|
517 |
'id' => 6,
|
518 |
+
'text' => __fs( 'reason-cant-pay-anymore', $this->_slug ),
|
519 |
'input_type' => 'textfield',
|
520 |
+
'input_placeholder' => __fs( 'placeholder-comfortable-price', $this->_slug )
|
521 |
);
|
522 |
}
|
523 |
|
528 |
'non-registered-and-non-anonymous-short-term' => array(
|
529 |
array(
|
530 |
'id' => 8,
|
531 |
+
'text' => __fs( 'reason-didnt-work', $this->_slug ),
|
532 |
'input_type' => '',
|
533 |
'input_placeholder' => ''
|
534 |
),
|
535 |
array(
|
536 |
'id' => 9,
|
537 |
+
'text' => __fs( 'reason-dont-like-to-share-my-information', $this->_slug ),
|
538 |
'input_type' => '',
|
539 |
'input_placeholder' => ''
|
540 |
),
|
544 |
'short-term' => array(
|
545 |
array(
|
546 |
'id' => 10,
|
547 |
+
'text' => __fs( 'reason-couldnt-make-it-work', $this->_slug ),
|
548 |
'input_type' => '',
|
549 |
'input_placeholder' => ''
|
550 |
),
|
551 |
$reason_found_better_plugin,
|
552 |
array(
|
553 |
'id' => 11,
|
554 |
+
'text' => __fs( 'reason-great-but-need-specific-feature', $this->_slug ),
|
555 |
'input_type' => 'textarea',
|
556 |
+
'input_placeholder' => __fs( 'placeholder-feature', $this->_slug )
|
557 |
),
|
558 |
array(
|
559 |
'id' => 12,
|
560 |
+
'text' => __fs( 'reason-not-working', $this->_slug ),
|
561 |
'input_type' => 'textarea',
|
562 |
+
'input_placeholder' => __fs( 'placeholder-share-what-didnt-work', $this->_slug )
|
563 |
),
|
564 |
array(
|
565 |
'id' => 13,
|
566 |
+
'text' => __fs( 'reason-not-what-i-was-looking-for', $this->_slug ),
|
567 |
'input_type' => 'textarea',
|
568 |
+
'input_placeholder' => __fs( 'placeholder-what-youve-been-looking-for', $this->_slug )
|
569 |
),
|
570 |
array(
|
571 |
'id' => 14,
|
572 |
+
'text' => __fs( 'reason-didnt-work-as-expected', $this->_slug ),
|
573 |
'input_type' => 'textarea',
|
574 |
+
'input_placeholder' => __fs( 'placeholder-what-did-you-expect', $this->_slug )
|
575 |
),
|
576 |
$reason_other
|
577 |
)
|
614 |
* @since 1.0.6
|
615 |
*
|
616 |
* @return string
|
617 |
+
*
|
618 |
+
* @uses fs_find_caller_plugin_file
|
619 |
*/
|
620 |
private function _find_caller_plugin_file() {
|
|
|
|
|
|
|
621 |
// Try to load the cached value of the file path.
|
622 |
if ( isset( $this->_storage->plugin_main_file ) ) {
|
623 |
if ( file_exists( $this->_storage->plugin_main_file->path ) ) {
|
625 |
}
|
626 |
}
|
627 |
|
628 |
+
$plugin_file = fs_find_caller_plugin_file();
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
629 |
|
630 |
$this->_storage->plugin_main_file = (object) array(
|
631 |
'path' => fs_normalize_path( $plugin_file ),
|
800 |
// Configure which Freemius powered plugins should be auto updated.
|
801 |
// add_filter( 'auto_update_plugin', '_include_plugins_in_auto_update', 10, 2 );
|
802 |
|
803 |
+
add_action( 'admin_menu', array( 'Freemius', 'add_debug_page' ) );
|
|
|
|
|
804 |
|
805 |
self::$_statics_loaded = true;
|
806 |
}
|
814 |
static function add_debug_page() {
|
815 |
self::$_static_logger->entrance();
|
816 |
|
817 |
+
$title = sprintf( '%s [v.%s]', __fs( 'freemius-debug' ), WP_FS__SDK_VERSION );
|
818 |
+
|
819 |
+
if ( WP_FS__DEV_MODE ) {
|
820 |
+
// Add top-level debug menu item.
|
821 |
+
$hook = add_object_page(
|
822 |
+
$title,
|
823 |
+
$title,
|
824 |
+
'manage_options',
|
825 |
+
'freemius',
|
826 |
+
array( 'Freemius', '_debug_page_render' )
|
827 |
+
);
|
828 |
+
} else {
|
829 |
+
// Add hidden debug page.
|
830 |
+
$hook = add_submenu_page(
|
831 |
+
null,
|
832 |
+
$title,
|
833 |
+
$title,
|
834 |
+
'manage_options',
|
835 |
+
'freemius',
|
836 |
+
array( 'Freemius', '_debug_page_render' )
|
837 |
+
);
|
838 |
+
}
|
839 |
|
840 |
add_action( "load-$hook", array( 'Freemius', '_debug_page_actions' ) );
|
841 |
}
|
845 |
* @since 1.0.8
|
846 |
*/
|
847 |
static function _debug_page_actions() {
|
848 |
+
self::_clean_admin_content_section();
|
849 |
+
|
850 |
if ( fs_request_is_action( 'delete_all_accounts' ) ) {
|
851 |
check_admin_referer( 'delete_all_accounts' );
|
852 |
|
887 |
/**
|
888 |
* Check if Freemius should be turned on for the current plugin install.
|
889 |
*
|
890 |
+
* Note:
|
891 |
+
* $this->_is_on is updated in has_api_connectivity()
|
892 |
+
*
|
893 |
* @author Vova Feldman (@svovaf)
|
894 |
* @since 1.0.9
|
895 |
*
|
896 |
* @return bool
|
897 |
*/
|
898 |
+
function is_on() {
|
899 |
self::$_static_logger->entrance();
|
900 |
|
901 |
if ( isset( $this->_is_on ) ) {
|
905 |
// If already installed or pending then sure it's on :)
|
906 |
if ( $this->is_registered() || $this->is_pending_activation() ) {
|
907 |
$this->_is_on = true;
|
908 |
+
return true;
|
|
|
909 |
}
|
910 |
+
|
911 |
+
return false;
|
912 |
}
|
913 |
|
914 |
/**
|
921 |
*
|
922 |
* @return bool
|
923 |
*/
|
924 |
+
function has_api_connectivity( $flush = false ) {
|
925 |
+
if ( ! $flush && isset( $this->_has_api_connection ) ) {
|
926 |
return $this->_has_api_connection;
|
927 |
}
|
928 |
|
935 |
unset( $this->_storage->connectivity_test );
|
936 |
}
|
937 |
|
938 |
+
if ( isset( $this->_storage->connectivity_test ) ) {
|
939 |
if ( $_SERVER['HTTP_HOST'] == $this->_storage->connectivity_test['host'] &&
|
940 |
fs_get_ip() == $this->_storage->connectivity_test['server_ip']
|
941 |
) {
|
942 |
if ( ( $this->_storage->connectivity_test['is_connected'] &&
|
943 |
$this->_storage->connectivity_test['is_active'] ) ||
|
944 |
+
( ! $flush &&
|
945 |
+
$version == $this->_storage->connectivity_test['version'] )
|
946 |
) {
|
947 |
$this->_has_api_connection = $this->_storage->connectivity_test['is_connected'];
|
948 |
+
$this->_is_on = $this->_storage->connectivity_test['is_active'] || (WP_FS__DEV_MODE && $this->_has_api_connection);
|
949 |
|
950 |
return $this->_has_api_connection;
|
951 |
}
|
988 |
);
|
989 |
|
990 |
$this->_has_api_connection = $is_connected;
|
991 |
+
$this->_is_on = $is_active || (WP_FS__DEV_MODE && $is_connected);
|
992 |
|
993 |
return $this->_has_api_connection;
|
994 |
}
|
1047 |
switch ( $api_result->error->code ) {
|
1048 |
case 'curl_missing':
|
1049 |
$message = sprintf(
|
1050 |
+
__fs( 'x-requires-access-to-api', $this->_slug ) . ' ' .
|
1051 |
+
__fs( 'curl-missing-message', $this->_slug ) . ' ' .
|
1052 |
' %s',
|
1053 |
'<b>' . $this->get_plugin_name() . '</b>',
|
1054 |
sprintf(
|
1055 |
'<ol id="fs_firewall_issue_options"><li>%s</li><li>%s</li><li>%s</li></ol>',
|
1056 |
sprintf(
|
1057 |
'<a class="fs-resolve" data-type="curl" href="#"><b>%s</b></a>%s',
|
1058 |
+
__fs( 'curl-missing-no-clue-title', $this->_slug ),
|
1059 |
' - ' . sprintf(
|
1060 |
+
__fs( 'curl-missing-no-clue-desc', $this->_slug ),
|
1061 |
'<a href="mailto:' . $admin_email . '">' . $admin_email . '</a>'
|
1062 |
)
|
1063 |
),
|
1064 |
sprintf(
|
1065 |
'<b>%s</b> - %s',
|
1066 |
+
__fs( 'sysadmin-title', $this->_slug ),
|
1067 |
+
__fs( 'curl-missing-sysadmin-desc', $this->_slug )
|
1068 |
),
|
1069 |
sprintf(
|
1070 |
'<a href="%s"><b>%s</b></a>%s',
|
1071 |
wp_nonce_url( 'plugins.php?action=deactivate&plugin=' . $this->_plugin_basename . '&plugin_status=' . 'all' . '&paged=' . '1' . '&s=' . '', 'deactivate-plugin_' . $this->_plugin_basename ),
|
1072 |
+
__fs( 'deactivate-plugin-title', $this->_slug ),
|
1073 |
+
' - ' . __fs( 'deactivate-plugin-desc', 'freemius', $this->_slug )
|
1074 |
)
|
1075 |
)
|
1076 |
);
|
1077 |
break;
|
1078 |
case 'cloudflare_ddos_protection':
|
1079 |
$message = sprintf(
|
1080 |
+
__fs( 'x-requires-access-to-api', $this->_slug ) . ' ' .
|
1081 |
+
__fs( 'cloudflare-blocks-connection-message', $this->_slug ) . ' ' .
|
1082 |
+
__fs( 'happy-to-resolve-issue-asap', $this->_slug ) .
|
1083 |
' %s',
|
1084 |
'<b>' . $this->get_plugin_name() . '</b>',
|
1085 |
sprintf(
|
1086 |
'<ol id="fs_firewall_issue_options"><li>%s</li><li>%s</li><li>%s</li></ol>',
|
1087 |
sprintf(
|
1088 |
'<a class="fs-resolve" data-type="cloudflare" href="#"><b>%s</b></a>%s',
|
1089 |
+
__fs( 'fix-issue-title', $this->_slug ),
|
1090 |
' - ' . sprintf(
|
1091 |
+
__fs( 'fix-issue-desc', $this->_slug ),
|
1092 |
'<a href="mailto:' . $admin_email . '">' . $admin_email . '</a>'
|
1093 |
)
|
1094 |
),
|
1095 |
sprintf(
|
1096 |
'<a href="%s" target="_blank"><b>%s</b></a>%s',
|
1097 |
sprintf( 'https://wordpress.org/plugins/%s/download/', $this->_slug ),
|
1098 |
+
__fs( 'install-previous-title', $this->_slug ),
|
1099 |
+
' - ' . __fs( 'install-previous-desc', $this->_slug )
|
1100 |
),
|
1101 |
sprintf(
|
1102 |
'<a href="%s"><b>%s</b></a>%s',
|
1103 |
wp_nonce_url( 'plugins.php?action=deactivate&plugin=' . $this->_plugin_basename . '&plugin_status=' . 'all' . '&paged=' . '1' . '&s=' . '', 'deactivate-plugin_' . $this->_plugin_basename ),
|
1104 |
+
__fs( 'deactivate-plugin-title', $this->_slug ),
|
1105 |
+
' - ' . __fs( 'deactivate-plugin-desc', $this->_slug )
|
1106 |
)
|
1107 |
)
|
1108 |
);
|
1109 |
break;
|
1110 |
case 'squid_cache_block':
|
1111 |
$message = sprintf(
|
1112 |
+
__fs( 'x-requires-access-to-api', $this->_slug ) . ' ' .
|
1113 |
+
__fs( 'squid-blocks-connection-message', $this->_slug ) .
|
1114 |
' %s',
|
1115 |
'<b>' . $this->get_plugin_name() . '</b>',
|
1116 |
sprintf(
|
1117 |
'<ol id="fs_firewall_issue_options"><li>%s</li><li>%s</li><li>%s</li></ol>',
|
1118 |
sprintf(
|
1119 |
'<a class="fs-resolve" data-type="squid" href="#"><b>%s</b></a>%s',
|
1120 |
+
__fs( 'squid-no-clue-title', $this->_slug ),
|
1121 |
' - ' . sprintf(
|
1122 |
+
__fs( 'squid-no-clue-desc', $this->_slug ),
|
1123 |
'<a href="mailto:' . $admin_email . '">' . $admin_email . '</a>'
|
1124 |
)
|
1125 |
),
|
1126 |
sprintf(
|
1127 |
'<b>%s</b> - %s',
|
1128 |
+
__fs( 'sysadmin-title', $this->_slug ),
|
1129 |
sprintf(
|
1130 |
+
__fs( 'squid-sysadmin-desc', $this->_slug ),
|
1131 |
// We use a filter since the plugin might require additional API connectivity.
|
1132 |
'<b>' . implode( ', ', $this->apply_filters( 'api_domains', array( 'api.freemius.com' ) ) ) . '</b>' )
|
1133 |
),
|
1134 |
sprintf(
|
1135 |
'<a href="%s"><b>%s</b></a>%s',
|
1136 |
wp_nonce_url( 'plugins.php?action=deactivate&plugin=' . $this->_plugin_basename . '&plugin_status=' . 'all' . '&paged=' . '1' . '&s=' . '', 'deactivate-plugin_' . $this->_plugin_basename ),
|
1137 |
+
__fs( 'deactivate-plugin-title', $this->_slug ),
|
1138 |
+
' - ' . __fs( 'deactivate-plugin-desc', $this->_slug )
|
1139 |
)
|
1140 |
)
|
1141 |
);
|
1142 |
break;
|
1143 |
default:
|
1144 |
+
$message = __fs( 'connectivity-test-fails-message', $this->_slug );
|
1145 |
break;
|
1146 |
}
|
1147 |
}
|
1148 |
|
1149 |
if ( false === $message ) {
|
1150 |
$message = sprintf(
|
1151 |
+
__fs( 'x-requires-access-to-api', $this->_slug ) . ' ' .
|
1152 |
+
__fs( 'connectivity-test-fails-message', $this->_slug ) . ' ' .
|
1153 |
+
__fs( 'happy-to-resolve-issue-asap', $this->_slug ) .
|
1154 |
' %s',
|
1155 |
'<b>' . $this->get_plugin_name() . '</b>',
|
1156 |
sprintf(
|
1157 |
'<ol id="fs_firewall_issue_options"><li>%s</li><li>%s</li><li>%s</li></ol>',
|
1158 |
sprintf(
|
1159 |
'<a class="fs-resolve" data-type="general" href="#"><b>%s</b></a>%s',
|
1160 |
+
__fs( 'fix-issue-title', $this->_slug ),
|
1161 |
' - ' . sprintf(
|
1162 |
+
__fs( 'fix-issue-desc', $this->_slug ),
|
1163 |
'<a href="mailto:' . $admin_email . '">' . $admin_email . '</a>'
|
1164 |
)
|
1165 |
),
|
1166 |
sprintf(
|
1167 |
'<a href="%s" target="_blank"><b>%s</b></a>%s',
|
1168 |
sprintf( 'https://wordpress.org/plugins/%s/download/', $this->_slug ),
|
1169 |
+
__fs( 'install-previous-title', $this->_slug ),
|
1170 |
+
' - ' . __fs( 'install-previous-desc', $this->_slug )
|
1171 |
),
|
1172 |
sprintf(
|
1173 |
'<a href="%s"><b>%s</b></a>%s',
|
1174 |
wp_nonce_url( 'plugins.php?action=deactivate&plugin=' . $this->_plugin_basename . '&plugin_status=' . 'all' . '&paged=' . '1' . '&s=' . '', 'deactivate-plugin_' . $this->_plugin_basename ),
|
1175 |
+
__fs( 'deactivate-plugin-title', $this->_slug ),
|
1176 |
+
' - ' . __fs( 'deactivate-plugin-desc', $this->_slug )
|
1177 |
)
|
1178 |
)
|
1179 |
);
|
1182 |
$this->_admin_notices->add_sticky(
|
1183 |
$message,
|
1184 |
'failed_connect_api',
|
1185 |
+
__fs( 'oops', $this->_slug ) . '...',
|
1186 |
'error'
|
1187 |
);
|
1188 |
}
|
1270 |
|
1271 |
$this->_admin_notices->add_sticky(
|
1272 |
sprintf(
|
1273 |
+
__fs( 'fix-request-sent-message', $this->_slug ),
|
1274 |
'<a href="mailto:' . $admin_email . '">' . $admin_email . '</a>'
|
1275 |
),
|
1276 |
'server_details_sent'
|
1465 |
) );
|
1466 |
}
|
1467 |
|
1468 |
+
/**
|
1469 |
+
* @param string[] $options
|
1470 |
+
* @param string $key
|
1471 |
+
* @param mixed $default
|
1472 |
+
*
|
1473 |
+
* @return bool
|
1474 |
+
*/
|
1475 |
private function _get_option( &$options, $key, $default = false ) {
|
1476 |
return ! empty( $options[ $key ] ) ? $options[ $key ] : $default;
|
1477 |
}
|
1557 |
$this->_has_paid_plans = $this->_get_bool_option( $plugin_info, 'has_paid_plans', true );
|
1558 |
$this->_is_org_compliant = $this->_get_bool_option( $plugin_info, 'is_org_compliant', true );
|
1559 |
$this->_enable_anonymous = $this->_get_bool_option( $plugin_info, 'enable_anonymous', true );
|
1560 |
+
$this->_permissions = $this->_get_option( $plugin_info, 'permissions', array() );
|
1561 |
|
1562 |
if ( ! $this->is_registered() ) {
|
1563 |
if ( ! $this->has_api_connectivity() ) {
|
1615 |
if ( ! $this->is_parent_plugin_installed() ) {
|
1616 |
$this->_admin_notices->add(
|
1617 |
( is_string( $parent_name ) ?
|
1618 |
+
sprintf( __fs( 'addon-cannot-run-without-x', $this->_slug ), $this->get_plugin_name(), $parent_name ) :
|
1619 |
+
sprintf( __fs( 'addon-x-cannot-run-without-parent', $this->_slug ), $this->get_plugin_name() )
|
1620 |
),
|
1621 |
+
__fs( 'oops', $this->_slug ) . '...',
|
1622 |
'error'
|
1623 |
);
|
1624 |
|
1651 |
add_action( 'install_plugins_pre_plugin-information', 'fs_install_plugin_information' );
|
1652 |
|
1653 |
// Override request for plugin information for Add-ons.
|
1654 |
+
add_filter( 'fs_plugins_api', array(
|
1655 |
+
&$this,
|
1656 |
+
'_get_addon_info_filter'
|
1657 |
+
), WP_FS__DEFAULT_PRIORITY, 3 );
|
1658 |
} else {
|
1659 |
if ( $this->is_paying() || $this->_has_addons() ) {
|
1660 |
new FS_Plugin_Updater( $this );
|
1729 |
) );
|
1730 |
|
1731 |
$this->_admin_notices->add_sticky(
|
1732 |
+
__fs( 'premium-activated-message', $this->_slug ),
|
1733 |
'premium_activated',
|
1734 |
+
__fs( 'woot', $this->_slug ) . '!'
|
1735 |
);
|
1736 |
} else {
|
1737 |
// Activated free code (after had the premium before).
|
1740 |
if ( $this->is_paying() && ! $this->is_premium() ) {
|
1741 |
$this->_admin_notices->add_sticky(
|
1742 |
sprintf(
|
1743 |
+
__fs( 'you-have-x-license', $this->_slug ),
|
1744 |
$this->_site->plan->title
|
1745 |
) . ' ' . $this->_get_latest_download_link( sprintf(
|
1746 |
+
__fs( 'download-x-version-now', $this->_slug ),
|
1747 |
$this->_site->plan->title
|
1748 |
) ),
|
1749 |
'plan_upgraded',
|
1750 |
+
__fs( 'yee-haw', $this->_slug ) . '!'
|
1751 |
);
|
1752 |
}
|
1753 |
}
|
1827 |
}
|
1828 |
|
1829 |
if ( ! empty( $selected_addon->info->screenshots ) ) {
|
1830 |
+
$view_vars = array(
|
1831 |
+
'screenshots' => $selected_addon->info->screenshots,
|
1832 |
+
'plugin' => $selected_addon,
|
1833 |
+
);
|
1834 |
$data->sections['screenshots'] = fs_get_template( '/plugin-info/screenshots.php', $view_vars );
|
1835 |
}
|
1836 |
|
1888 |
$data->plans = $plans;
|
1889 |
|
1890 |
if ( $has_features ) {
|
1891 |
+
$view_vars = array(
|
1892 |
+
'plans' => $plans,
|
1893 |
+
'plugin' => $selected_addon,
|
1894 |
+
);
|
1895 |
$data->sections['features'] = fs_get_template( '/plugin-info/features.php', $view_vars );
|
1896 |
}
|
1897 |
}
|
2184 |
|
2185 |
$this->_admin_notices->add_sticky(
|
2186 |
sprintf(
|
2187 |
+
__fs( 'pending-activation-message', $this->_slug ),
|
2188 |
'<b>' . $this->get_plugin_name() . '</b>',
|
2189 |
'<b>' . $email . '</b>'
|
2190 |
),
|
2238 |
// Show notice for new plugin installations.
|
2239 |
$this->_admin_notices->add(
|
2240 |
sprintf(
|
2241 |
+
__fs( 'you-are-step-away', $this->_slug ),
|
2242 |
sprintf( '<b><a href="%s">%s</a></b>',
|
2243 |
$this->get_activation_url(),
|
2244 |
+
sprintf( __fs( 'activate-x-now', $this->_slug ), $this->get_plugin_name() )
|
2245 |
)
|
2246 |
),
|
2247 |
'',
|
2254 |
// Show notice for new plugin installations.
|
2255 |
$this->_admin_notices->add_sticky(
|
2256 |
sprintf(
|
2257 |
+
__fs( 'few-plugin-tweaks', $this->_slug ),
|
2258 |
sprintf( '<b><a href="%s">%s</a></b>',
|
2259 |
$this->get_activation_url(),
|
2260 |
+
sprintf( __fs( 'optin-x-now', $this->_slug ), $this->get_plugin_name() )
|
2261 |
)
|
2262 |
),
|
2263 |
'connect_account',
|
2389 |
}
|
2390 |
|
2391 |
/**
|
2392 |
+
* Check if Freemius was added on new plugin installation.
|
|
|
2393 |
*
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
2394 |
* @author Vova Feldman (@svovaf)
|
2395 |
* @since 1.1.5
|
2396 |
*
|
2397 |
* @return bool
|
2398 |
*/
|
2399 |
+
function is_plugin_new_install() {
|
2400 |
+
return isset( $this->_storage->is_plugin_new_install ) &&
|
2401 |
+
$this->_storage->is_plugin_new_install;
|
2402 |
}
|
2403 |
|
2404 |
/**
|
2431 |
deactivate_plugins( $this->_free_plugin_basename );
|
2432 |
|
2433 |
$this->_admin_notices->add(
|
2434 |
+
sprintf( __fs( 'successful-version-upgrade-message', $this->_slug ), sprintf( '<b>%s</b>', $this->_plugin->title ) ),
|
2435 |
+
__fs( 'woot', $this->_slug ) . '!'
|
2436 |
);
|
2437 |
}
|
2438 |
} else if ( $this->is_anonymous() ) {
|
2466 |
$this->_storage->is_plugin_new_install = empty( $this->_storage->plugin_last_version );
|
2467 |
}
|
2468 |
|
2469 |
+
if ( $this->has_api_connectivity( true ) ) {
|
2470 |
// Store hint that the plugin was just activated to enable auto-redirection to settings.
|
2471 |
add_option( "fs_{$this->_slug}_activated", true );
|
2472 |
}
|
2531 |
}
|
2532 |
|
2533 |
$this->_admin_notices->clear_all_sticky();
|
2534 |
+
if ( isset( $this->_storage->sticky_optin_added ) ) {
|
2535 |
+
unset( $this->_storage->sticky_optin_added );
|
2536 |
+
}
|
2537 |
|
2538 |
if ( ! $this->has_api_connectivity() ) {
|
2539 |
// Reset connectivity test cache.
|
2540 |
unset( $this->_storage->connectivity_test );
|
2541 |
}
|
2542 |
|
2543 |
+
if ( ! isset( $this->_storage->is_plugin_new_install ) ) {
|
2544 |
// Remember that plugin was already installed.
|
2545 |
$this->_storage->is_plugin_new_install = false;
|
2546 |
}
|
2554 |
|
2555 |
// Clear API cache on deactivation.
|
2556 |
FS_Api::clear_cache();
|
2557 |
+
|
2558 |
+
$this->remove_sdk_reference();
|
2559 |
+
}
|
2560 |
+
|
2561 |
+
/**
|
2562 |
+
* @author Vova Feldman (@svovaf)
|
2563 |
+
* @since 1.1.6
|
2564 |
+
*/
|
2565 |
+
private function remove_sdk_reference() {
|
2566 |
+
global $fs_active_plugins;
|
2567 |
+
|
2568 |
+
foreach ( $fs_active_plugins->plugins as $sdk_path => &$data ) {
|
2569 |
+
if ( $this->_plugin_basename == $data->plugin_path ) {
|
2570 |
+
unset( $fs_active_plugins->plugins[ $sdk_path ] );
|
2571 |
+
break;
|
2572 |
+
}
|
2573 |
+
}
|
2574 |
+
|
2575 |
+
fs_fallback_to_newest_active_sdk();
|
2576 |
}
|
2577 |
|
2578 |
/**
|
4155 |
return;
|
4156 |
}
|
4157 |
|
4158 |
+
self::_clean_admin_content_section();
|
4159 |
|
4160 |
if ( fs_request_is_action( 'activate' ) && fs_request_is_post() ) {
|
4161 |
// check_admin_referer( 'activate_' . $this->_plugin->public_key );
|
4359 |
|
4360 |
if ( ! $this->is_paying() ) {
|
4361 |
$this->_admin_notices->add_sticky(
|
4362 |
+
sprintf( __fs( 'plugin-x-activation-message', $this->_slug ), '<b>' . $this->get_plugin_name() . '</b>' ),
|
4363 |
'activation_complete'
|
4364 |
);
|
4365 |
}
|
4368 |
if ( $this->is_paying() && ! $this->is_premium() ) {
|
4369 |
$this->_admin_notices->add_sticky(
|
4370 |
sprintf(
|
4371 |
+
__fs( 'activation-with-plan-x-message', $this->_slug ),
|
4372 |
$this->_site->plan->title
|
4373 |
) . ' ' . $this->_get_latest_download_link( sprintf(
|
4374 |
+
__fs( 'download-latest-x-version', $this->_slug ),
|
4375 |
$this->_site->plan->title
|
4376 |
) ),
|
4377 |
'plan_upgraded',
|
4378 |
+
__fs( 'yee-haw', $this->_slug ) . '!'
|
4379 |
);
|
4380 |
}
|
4381 |
|
4416 |
* @since 1.0.7
|
4417 |
*/
|
4418 |
function _install_with_new_user() {
|
4419 |
+
$this->_logger->entrance();
|
4420 |
+
|
4421 |
if ( $this->is_registered() ) {
|
4422 |
return;
|
4423 |
}
|
4470 |
* @since 1.0.7
|
4471 |
*/
|
4472 |
function _install_with_current_user() {
|
4473 |
+
$this->_logger->entrance();
|
4474 |
+
|
4475 |
if ( $this->is_registered() ) {
|
4476 |
return;
|
4477 |
}
|
4501 |
|
4502 |
if ( isset( $install->error ) ) {
|
4503 |
$this->_admin_notices->add(
|
4504 |
+
sprintf( __fs( 'could-not-activate-x', $this->_slug ), $this->get_plugin_name() ) . ' ' .
|
4505 |
+
__fs( 'contact-us-with-error-message', $this->_slug ) . ' ' . '<b>' . $install->error->message . '</b>',
|
4506 |
+
__fs( 'oops', $this->_slug ) . '...',
|
4507 |
'error'
|
4508 |
);
|
4509 |
|
4546 |
|
4547 |
if ( isset( $addon_install->error ) ) {
|
4548 |
$this->_admin_notices->add(
|
4549 |
+
sprintf( __fs( 'could-not-activate-x', $this->_slug ), $this->get_plugin_name() ) . ' ' .
|
4550 |
+
__fs( 'contact-us-with-error-message', $this->_slug ) . ' ' . '<b>' . $addon_install->error->message . '</b>',
|
4551 |
+
__fs( 'oops', $this->_slug ) . '...',
|
4552 |
'error'
|
4553 |
);
|
4554 |
|
4726 |
|
4727 |
if ( $this->_menu->is_activation_page() ) {
|
4728 |
// Clean admin page from distracting content.
|
4729 |
+
self::_clean_admin_content_section();
|
4730 |
}
|
4731 |
|
4732 |
if ( false !== $hook ) {
|
4766 |
if ( $this->is_registered() ) {
|
4767 |
// Add user account page.
|
4768 |
$this->add_submenu_item(
|
4769 |
+
__fs( 'account', $this->_slug ),
|
4770 |
array( &$this, '_account_page_render' ),
|
4771 |
+
$this->get_plugin_name() . ' – ' . __fs( 'account', $this->_slug ),
|
4772 |
'manage_options',
|
4773 |
'account',
|
4774 |
array( &$this, '_account_page_load' ),
|
4779 |
|
4780 |
// Add contact page.
|
4781 |
$this->add_submenu_item(
|
4782 |
+
__fs( 'contact-us', $this->_slug ),
|
4783 |
array( &$this, '_contact_page_render' ),
|
4784 |
+
$this->get_plugin_name() . ' – ' . __fs( 'contact-us', $this->_slug ),
|
4785 |
'manage_options',
|
4786 |
'contact',
|
4787 |
+
'Freemius::_clean_admin_content_section',
|
4788 |
WP_FS__DEFAULT_PRIORITY,
|
4789 |
$this->_menu->is_submenu_item_visible( 'contact' )
|
4790 |
);
|
4791 |
|
4792 |
if ( $this->_has_addons() ) {
|
4793 |
$this->add_submenu_item(
|
4794 |
+
__fs( 'add-ons', $this->_slug ),
|
4795 |
array( &$this, '_addons_page_render' ),
|
4796 |
+
$this->get_plugin_name() . ' – ' . __fs( 'add-ons', $this->_slug ),
|
4797 |
'manage_options',
|
4798 |
'addons',
|
4799 |
array( &$this, '_addons_page_load' ),
|
4802 |
);
|
4803 |
}
|
4804 |
|
4805 |
+
$show_pricing = ( $this->has_paid_plan() && $this->_menu->is_submenu_item_visible( 'pricing' ) );
|
4806 |
// If user don't have paid plans, add pricing page
|
4807 |
// to support add-ons checkout but don't add the submenu item.
|
4808 |
// || (isset( $_GET['page'] ) && $this->_menu->get_slug( 'pricing' ) == $_GET['page']);
|
4809 |
|
4810 |
// Add upgrade/pricing page.
|
4811 |
$this->add_submenu_item(
|
4812 |
+
( $this->is_paying() ? __fs( 'pricing', $this->_slug ) : __fs( 'upgrade', $this->_slug ) . ' ➤' ),
|
4813 |
array( &$this, '_pricing_page_render' ),
|
4814 |
+
$this->get_plugin_name() . ' – ' . __fs( 'pricing', $this->_slug ),
|
4815 |
'manage_options',
|
4816 |
'pricing',
|
4817 |
+
'Freemius::_clean_admin_content_section',
|
4818 |
WP_FS__LOWEST_PRIORITY,
|
4819 |
$show_pricing
|
4820 |
);
|
4933 |
if ( $this->is_registered() ) {
|
4934 |
if ( $this->_menu->is_submenu_item_visible( 'support' ) ) {
|
4935 |
$this->add_submenu_link_item(
|
4936 |
+
$this->apply_filters( 'support_forum_submenu', __fs( 'support-forum', $this->_slug ) ),
|
4937 |
$this->apply_filters( 'support_forum_url', 'https://wordpress.org/support/plugin/' . $this->_slug ),
|
4938 |
'wp-support-forum',
|
4939 |
'read',
|
5150 |
*
|
5151 |
* @param string $tag
|
5152 |
* @param callable|bool $function_to_check Optional. The callback to check for. Default false.
|
5153 |
+
*
|
5154 |
+
* @return false|int
|
5155 |
+
*
|
5156 |
+
* @uses has_filter()
|
5157 |
*/
|
5158 |
function has_filter( $tag, $function_to_check = false ) {
|
5159 |
$this->_logger->entrance( $tag );
|
5161 |
return has_filter( 'fs_' . $tag . '_' . $this->_slug, $function_to_check );
|
5162 |
}
|
5163 |
|
5164 |
+
/**
|
5165 |
+
* Override default i18n text phrases.
|
5166 |
+
*
|
5167 |
+
* @author Vova Feldman (@svovaf)
|
5168 |
+
* @since 1.1.6
|
5169 |
+
*
|
5170 |
+
* @param string[] string $key_value
|
5171 |
+
*
|
5172 |
+
* @uses fs_override_i18n()
|
5173 |
+
*/
|
5174 |
+
function override_i18n( $key_value ) {
|
5175 |
+
fs_override_i18n( $key_value, $this->_slug );
|
5176 |
+
}
|
5177 |
+
|
5178 |
/* Account Page
|
5179 |
------------------------------------------------------------------------------------------------------------------*/
|
5180 |
/**
|
5385 |
$this->_user->last = $user->last;
|
5386 |
$this->_user->email = $user->email;
|
5387 |
|
5388 |
+
$is_menu_item_account_visible = $this->_menu->is_submenu_item_visible( 'account' );
|
5389 |
+
|
5390 |
+
if ( $user->is_verified &&
|
5391 |
+
( ! isset( $this->_user->is_verified ) || false === $this->_user->is_verified )
|
5392 |
+
) {
|
5393 |
+
$this->_user->is_verified = true;
|
5394 |
|
5395 |
$this->do_action( 'account_email_verified', $user->email );
|
5396 |
|
5397 |
$this->_admin_notices->add(
|
5398 |
+
__fs( 'email-verified-message', $this->_slug ),
|
5399 |
+
__fs( 'right-on', $this->_slug ) . '!',
|
5400 |
+
'success',
|
5401 |
+
// Make admin sticky if account menu item is invisible,
|
5402 |
+
// since the page will be auto redirected to the plugin's
|
5403 |
+
// main settings page, and the non-sticky message
|
5404 |
+
// will disappear.
|
5405 |
+
! $is_menu_item_account_visible,
|
5406 |
+
false,
|
5407 |
+
'email_verified'
|
5408 |
);
|
5409 |
}
|
5410 |
|
5412 |
$this->_store_user();
|
5413 |
|
5414 |
$this->do_action( 'after_account_user_sync', $user );
|
5415 |
+
|
5416 |
+
/**
|
5417 |
+
* If account menu item is hidden, redirect to plugin's main settings page.
|
5418 |
+
*
|
5419 |
+
* @author Vova Feldman (@svovaf)
|
5420 |
+
* @since 1.1.6
|
5421 |
+
*
|
5422 |
+
* @link https://github.com/Freemius/wordpress-sdk/issues/6
|
5423 |
+
*/
|
5424 |
+
if ( ! $is_menu_item_account_visible ) {
|
5425 |
+
if ( fs_redirect( $this->_get_admin_page_url() ) ) {
|
5426 |
+
exit();
|
5427 |
+
}
|
5428 |
+
}
|
5429 |
}
|
5430 |
}
|
5431 |
|
5799 |
$this->_admin_notices->add_sticky(
|
5800 |
FS_Plan_Manager::instance()->has_free_plan( $plans ) ?
|
5801 |
sprintf(
|
5802 |
+
__fs( 'addon-successfully-upgraded-message', $this->_slug ),
|
5803 |
$addon->title
|
5804 |
) . ' ' . $this->_get_latest_download_link(
|
5805 |
+
__fs( 'download-latest-version', $this->_slug ),
|
5806 |
$addon_id
|
5807 |
)
|
5808 |
:
|
5809 |
sprintf(
|
5810 |
+
__fs( 'addon-successfully-purchased-message', $this->_slug ),
|
5811 |
$addon->title
|
5812 |
) . ' ' . $this->_get_latest_download_link(
|
5813 |
+
__fs( 'download-latest-version', $this->_slug ),
|
5814 |
$addon_id
|
5815 |
),
|
5816 |
'addon_plan_upgraded_' . $addon->slug,
|
5817 |
+
__fs( 'yee-haw', $this->_slug ) . '!'
|
5818 |
);
|
5819 |
}
|
5820 |
}
|
5847 |
// Failed to ping API - blocked!
|
5848 |
$this->_admin_notices->add(
|
5849 |
sprintf(
|
5850 |
+
__fs( 'server-blocking-access', $this->_slug ),
|
5851 |
$this->get_plugin_name(),
|
5852 |
'<a href="' . $api->get_url() . '" target="_blank">' . $api->get_url() . '</a>'
|
5853 |
+
) . '<br> ' . __fs( 'server-error-message', $this->_slug ) . var_export( $site->error, true ),
|
5854 |
+
__fs( 'oops', $this->_slug ) . '...',
|
5855 |
'error',
|
5856 |
$background
|
5857 |
);
|
5858 |
} else {
|
5859 |
// Authentication params are broken.
|
5860 |
$this->_admin_notices->add(
|
5861 |
+
__fs( 'wrong-authentication-param-message', $this->_slug ),
|
5862 |
+
__fs( 'oops', $this->_slug ) . '...',
|
5863 |
'error'
|
5864 |
);
|
5865 |
}
|
5943 |
if ( ! $background && is_admin() ) {
|
5944 |
$this->_admin_notices->add(
|
5945 |
sprintf(
|
5946 |
+
__fs( 'plan-did-not-change-message', $this->_slug ) . ' ' .
|
5947 |
sprintf(
|
5948 |
'<a href="%s">%s</a>',
|
5949 |
$this->contact_url(
|
5950 |
'bug',
|
5951 |
+
sprintf( __fs( 'plan-did-not-change-email-message', $this->_slug ),
|
5952 |
strtoupper( $this->_site->plan->name )
|
5953 |
)
|
5954 |
),
|
5955 |
+
__fs( 'contact-us-here', $this->_slug )
|
5956 |
)
|
5957 |
),
|
5958 |
+
__fs( 'hmm', $this->_slug ) . '...',
|
5959 |
'error'
|
5960 |
);
|
5961 |
}
|
5963 |
case 'upgraded':
|
5964 |
$this->_admin_notices->add_sticky(
|
5965 |
sprintf(
|
5966 |
+
__fs( 'plan-upgraded-message', $this->_slug ),
|
5967 |
'<i>' . $this->get_plugin_name() . '</i>'
|
5968 |
) . ( $this->is_premium() ? '' : ' ' . $this->_get_latest_download_link( sprintf(
|
5969 |
+
__fs( 'download-latest-x-version', $this->_slug ),
|
5970 |
$this->_site->plan->title
|
5971 |
) )
|
5972 |
),
|
5973 |
'plan_upgraded',
|
5974 |
+
__fs( 'yee-haw', $this->_slug ) . '!'
|
5975 |
);
|
5976 |
|
5977 |
$this->_admin_notices->remove_sticky( array(
|
5984 |
case 'changed':
|
5985 |
$this->_admin_notices->add_sticky(
|
5986 |
sprintf(
|
5987 |
+
__fs( 'plan-changed-to-x-message', $this->_slug ),
|
5988 |
$this->_site->plan->title
|
5989 |
),
|
5990 |
'plan_changed'
|
5999 |
break;
|
6000 |
case 'downgraded':
|
6001 |
$this->_admin_notices->add_sticky(
|
6002 |
+
sprintf( __fs( 'license-expired-blocking-message', $this->_slug ) ),
|
6003 |
'license_expired',
|
6004 |
+
__fs( 'hmm', $this->_slug ) . '...'
|
6005 |
);
|
6006 |
$this->_admin_notices->remove_sticky( 'plan_upgraded' );
|
6007 |
break;
|
6008 |
case 'expired':
|
6009 |
$this->_admin_notices->add_sticky(
|
6010 |
+
sprintf( __fs( 'license-expired-non-blocking-message', $this->_slug ), $this->_site->plan->title ),
|
6011 |
'license_expired',
|
6012 |
+
__fs( 'hmm', $this->_slug ) . '...'
|
6013 |
);
|
6014 |
$this->_admin_notices->remove_sticky( 'plan_upgraded' );
|
6015 |
break;
|
6016 |
case 'trial_started':
|
6017 |
$this->_admin_notices->add_sticky(
|
6018 |
sprintf(
|
6019 |
+
__fs( 'trial-started-message', $this->_slug ),
|
6020 |
'<i>' . $this->get_plugin_name() . '</i>'
|
6021 |
) . ( $this->is_premium() ? '' : ' ' . $this->_get_latest_download_link( sprintf(
|
6022 |
+
__fs( 'download-latest-x-version', $this->_slug ),
|
6023 |
$this->_storage->trial_plan->title
|
6024 |
) ) ),
|
6025 |
'trial_started',
|
6026 |
+
__fs( 'yee-haw', $this->_slug ) . '!'
|
6027 |
);
|
6028 |
|
6029 |
$this->_admin_notices->remove_sticky( array(
|
6032 |
break;
|
6033 |
case 'trial_expired':
|
6034 |
$this->_admin_notices->add_sticky(
|
6035 |
+
__fs( 'trial-expired-message', $this->_slug ),
|
6036 |
'trial_expired',
|
6037 |
+
__fs( 'hmm', $this->_slug ) . '...'
|
6038 |
);
|
6039 |
$this->_admin_notices->remove_sticky( array(
|
6040 |
'trial_started',
|
6070 |
if ( isset( $license->error ) ) {
|
6071 |
if ( ! $background ) {
|
6072 |
$this->_admin_notices->add(
|
6073 |
+
__fs( 'license-activation-failed-message', $this->_slug ) . '<br> ' .
|
6074 |
+
__fs( 'server-error-message', $this->_slug ) . ' ' . var_export( $license->error, true ),
|
6075 |
+
__fs( 'hmm', $this->_slug ) . '...',
|
6076 |
'error'
|
6077 |
);
|
6078 |
}
|
6091 |
|
6092 |
if ( ! $background ) {
|
6093 |
$this->_admin_notices->add_sticky(
|
6094 |
+
__fs( 'license-activated-message', $this->_slug ) .
|
6095 |
( $this->is_premium() ? '' : ' ' . $this->_get_latest_download_link( sprintf(
|
6096 |
+
__fs( 'download-latest-x-version', $this->_slug ),
|
6097 |
$this->_site->plan->title
|
6098 |
) ) ),
|
6099 |
'license_activated',
|
6100 |
+
__fs( 'yee-haw', $this->_slug ) . '!'
|
6101 |
);
|
6102 |
}
|
6103 |
|
6118 |
|
6119 |
if ( ! is_object( $this->_license ) ) {
|
6120 |
$this->_admin_notices->add(
|
6121 |
+
sprintf( __fs( 'no-active-license-message', $this->_slug ), $this->_site->plan->title ),
|
6122 |
+
__fs( 'hmm', $this->_slug ) . '...'
|
6123 |
);
|
6124 |
|
6125 |
return;
|
6130 |
|
6131 |
if ( isset( $license->error ) ) {
|
6132 |
$this->_admin_notices->add(
|
6133 |
+
__fs( 'license-deactivation-failed-message', $this->_slug ) . '<br> ' .
|
6134 |
+
__fs( 'server-error-message', $this->_slug ) . ' ' . var_export( $license->error, true ),
|
6135 |
+
__fs( 'hmm', $this->_slug ) . '...',
|
6136 |
'error'
|
6137 |
);
|
6138 |
|
6157 |
|
6158 |
if ( $show_notice ) {
|
6159 |
$this->_admin_notices->add(
|
6160 |
+
sprintf( __fs( 'license-deactivation-message', $this->_slug ), $this->_site->plan->title ),
|
6161 |
+
__fs( 'ok', $this->_slug )
|
6162 |
);
|
6163 |
}
|
6164 |
|
6206 |
$this->_admin_notices->remove_sticky( 'plan_upgraded' );
|
6207 |
|
6208 |
$this->_admin_notices->add(
|
6209 |
+
sprintf( __fs( 'plan-x-downgraded-message', $this->_slug ),
|
6210 |
$plan->title,
|
6211 |
human_time_diff( time(), strtotime( $this->_license->expiration ) )
|
6212 |
)
|
6216 |
$this->_store_site();
|
6217 |
} else {
|
6218 |
$this->_admin_notices->add(
|
6219 |
+
__fs( 'plan-downgraded-failure-message', $this->_slug ),
|
6220 |
+
__fs( 'oops', $this->_slug ) . '...',
|
6221 |
'error'
|
6222 |
);
|
6223 |
}
|
6236 |
|
6237 |
if ( ! $this->is_trial() ) {
|
6238 |
$this->_admin_notices->add(
|
6239 |
+
__fs( 'trial-cancel-no-trial-message', $this->_slug ),
|
6240 |
+
__fs( 'oops', $this->_slug ) . '...',
|
6241 |
'error'
|
6242 |
);
|
6243 |
|
6266 |
$this->_admin_notices->remove_sticky( 'plan_upgraded' );
|
6267 |
|
6268 |
$this->_admin_notices->add(
|
6269 |
+
sprintf( __fs( 'trial-cancel-message', $this->_slug ), $this->_storage->trial_plan->title )
|
6270 |
);
|
6271 |
|
6272 |
$this->_admin_notices->remove_sticky( array(
|
6282 |
unset( $this->_storage->trial_plan );
|
6283 |
} else {
|
6284 |
$this->_admin_notices->add(
|
6285 |
+
__fs( 'trial-cancel-failure-message', $this->_slug ),
|
6286 |
+
__fs( 'oops', $this->_slug ) . '...',
|
6287 |
'error'
|
6288 |
);
|
6289 |
}
|
6507 |
if ( ! $background ) {
|
6508 |
$this->_admin_notices->add(
|
6509 |
sprintf(
|
6510 |
+
__fs( 'version-x-released', $this->_slug ) . ' ' . __fs( 'please-download-x', $this->_slug ),
|
6511 |
$update->version,
|
6512 |
sprintf(
|
6513 |
'<a href="%s" target="_blank">%s</a>',
|
6514 |
$this->get_account_url( 'download_latest' ),
|
6515 |
+
sprintf( __fs( 'latest-x-version', $this->_slug ), $this->_site->plan->title )
|
6516 |
)
|
6517 |
),
|
6518 |
+
__fs( 'new', $this->_slug ) . '!'
|
6519 |
);
|
6520 |
}
|
6521 |
} else if ( false === $new_version && ! $background ) {
|
6522 |
$this->_admin_notices->add(
|
6523 |
+
__fs( 'you-have-latest', $this->_slug ),
|
6524 |
+
__fs( 'you-are-good', $this->_slug )
|
6525 |
);
|
6526 |
}
|
6527 |
|
6719 |
|
6720 |
if ( ! isset( $result->error ) ) {
|
6721 |
$this->_admin_notices->add( sprintf(
|
6722 |
+
__fs( 'verification-email-sent-message', $this->_slug ),
|
6723 |
sprintf( '<a href="mailto:%1s">%2s</a>', esc_url( $this->_user->email ), $this->_user->email )
|
6724 |
) );
|
6725 |
} else {
|
6846 |
$candidate_email = fs_request_get( 'candidate_email', '' );
|
6847 |
|
6848 |
if ( $this->init_change_owner( $candidate_email ) ) {
|
6849 |
+
$this->_admin_notices->add( sprintf( __fs( 'change-owner-request-sent-x', $this->_slug ), '<b>' . $this->_user->email . '</b>' ) );
|
6850 |
}
|
6851 |
break;
|
6852 |
case 'owner_confirmed':
|
6853 |
$candidate_email = fs_request_get( 'candidate_email', '' );
|
6854 |
|
6855 |
+
$this->_admin_notices->add( sprintf( __fs( 'change-owner-request_owner-confirmed', $this->_slug ), '<b>' . $candidate_email . '</b>' ) );
|
6856 |
break;
|
6857 |
case 'candidate_confirmed':
|
6858 |
if ( $this->complete_change_owner() ) {
|
6859 |
$this->_admin_notices->add_sticky(
|
6860 |
+
sprintf( __fs( 'change-owner-request_candidate-confirmed', $this->_slug ), '<b>' . $this->_user->email . '</b>' ),
|
6861 |
'ownership_changed',
|
6862 |
+
__fs( 'congrats', $this->_slug ) . '!'
|
6863 |
);
|
6864 |
} else {
|
6865 |
// @todo Handle failed ownership change message.
|
6879 |
switch ( $result->error->code ) {
|
6880 |
case 'user_exist':
|
6881 |
$this->_admin_notices->add(
|
6882 |
+
__fs( 'user-exist-message', $this->_slug ) . ' ' .
|
6883 |
+
sprintf( __fs( 'user-exist-message_ownership', $this->_slug ), '<b>' . $new_email . '</b>' ) .
|
6884 |
sprintf(
|
6885 |
'<a style="margin-left: 10px;" href="%s"><button class="button button-primary">%s ➜</button></a>',
|
6886 |
$this->get_account_url( 'change_owner', array(
|
6887 |
'state' => 'init',
|
6888 |
'candidate_email' => $new_email
|
6889 |
) ),
|
6890 |
+
__fs( 'change-ownership', $this->_slug )
|
6891 |
),
|
6892 |
+
__fs( 'oops', $this->_slug ) . '...',
|
6893 |
'error'
|
6894 |
);
|
6895 |
break;
|
6896 |
}
|
6897 |
} else {
|
6898 |
+
$this->_admin_notices->add( __fs( 'email-updated-message', $this->_slug ) );
|
6899 |
}
|
6900 |
|
6901 |
return;
|
6907 |
|
6908 |
if ( isset( $result->error ) ) {
|
6909 |
$this->_admin_notices->add(
|
6910 |
+
__fs( 'name-update-failed-message', $this->_slug ),
|
6911 |
+
__fs( 'oops', $this->_slug ) . '...',
|
6912 |
'error'
|
6913 |
);
|
6914 |
} else {
|
6915 |
+
$this->_admin_notices->add( __fs( 'name-updated-message', $this->_slug ) );
|
6916 |
}
|
6917 |
|
6918 |
return;
|
6965 |
$this->do_action( 'account_property_edit', 'site', $site_property, $site_property_value );
|
6966 |
|
6967 |
$this->_admin_notices->add( sprintf(
|
6968 |
+
__fs( 'x-updated', $this->_slug ),
|
6969 |
'<b>' . str_replace( '_', ' ', $p ) . '</b>' ) );
|
6970 |
|
6971 |
return;
|
7059 |
|
7060 |
if ( ! $this->is_registered() && $this->is_org_repo_compliant() ) {
|
7061 |
$this->_admin_notices->add(
|
7062 |
+
sprintf( __fs( 'addons-info-external-message', $this->_slug ), '<b>' . $this->get_plugin_name() . '</b>' ),
|
7063 |
+
__fs( 'heads-up', $this->_slug ),
|
7064 |
'update-nag'
|
7065 |
);
|
7066 |
}
|
7124 |
*
|
7125 |
* @uses remove_all_actions()
|
7126 |
*/
|
7127 |
+
private static function _hide_admin_notices() {
|
7128 |
remove_all_actions( 'admin_notices' );
|
7129 |
remove_all_actions( 'network_admin_notices' );
|
7130 |
remove_all_actions( 'all_admin_notices' );
|
7131 |
remove_all_actions( 'user_admin_notices' );
|
7132 |
}
|
7133 |
|
7134 |
+
static function _clean_admin_content_section_hook() {
|
7135 |
+
self::_hide_admin_notices();
|
7136 |
|
7137 |
// Hide footer.
|
7138 |
echo '<style>#wpfooter { display: none !important; }</style>';
|
7144 |
* @author Vova Feldman (@svovaf)
|
7145 |
* @since 1.0.3
|
7146 |
*/
|
7147 |
+
static function _clean_admin_content_section() {
|
7148 |
+
add_action( 'admin_head', 'Freemius::_clean_admin_content_section_hook' );
|
7149 |
}
|
7150 |
|
7151 |
/* CSS & JavaScript
|
7299 |
$require_subscription = $paid_plan->is_require_subscription;
|
7300 |
$upgrade_url = $this->get_trial_url();
|
7301 |
$cc_string = $require_subscription ?
|
7302 |
+
sprintf( __fs( 'no-commitment-for-x-days', $this->_slug ), $paid_plan->trial_period ) :
|
7303 |
+
__fs( 'no-cc-required', $this->_slug ) . '!';
|
7304 |
|
7305 |
|
7306 |
$total_paid_plans = count( $this->_plans ) - ( FS_Plan_Manager::instance()->has_free_plan( $this->_plans ) ? 1 : 0 );
|
7308 |
if ( $total_paid_plans === $trial_plans_count ) {
|
7309 |
// All paid plans have trials.
|
7310 |
$message = sprintf(
|
7311 |
+
__fs( 'hey', $this->_slug ) . '! ' . __fs( 'trial-x-promotion-message', $this->_slug ),
|
7312 |
sprintf( '<b>%s</b>', $this->get_plugin_name() ),
|
7313 |
+
strtolower( __fs( 'awesome', $this->_slug ) ),
|
7314 |
$paid_plan->trial_period
|
7315 |
);
|
7316 |
} else {
|
7327 |
|
7328 |
// Not all paid plans have trials.
|
7329 |
$message = sprintf(
|
7330 |
+
__fs( 'hey', $this->_slug ) . '! ' . __fs( 'trial-x-promotion-message', $this->_slug ),
|
7331 |
sprintf( '<b>%s</b>', $this->get_plugin_name() ),
|
7332 |
$plans_string,
|
7333 |
$paid_plan->trial_period
|
7340 |
$message .= ' ' . sprintf(
|
7341 |
'<a style="margin-left: 10px;" href="%s"><button class="button button-primary">%s ➜</button></a>',
|
7342 |
$upgrade_url,
|
7343 |
+
__fs( 'start-free-trial', $this->_slug )
|
7344 |
);
|
7345 |
|
7346 |
$this->_admin_notices->add_sticky(
|
7437 |
if ( $this->is_registered() ) {
|
7438 |
if ( ! $this->is_paying() && $this->has_paid_plan() ) {
|
7439 |
$this->add_plugin_action_link(
|
7440 |
+
__fs( 'upgrade', $this->_slug ),
|
7441 |
$this->get_upgrade_url(),
|
7442 |
false,
|
7443 |
20,
|
7447 |
|
7448 |
if ( $this->_has_addons() ) {
|
7449 |
$this->add_plugin_action_link(
|
7450 |
+
__fs( 'add-ons', $this->_slug ),
|
7451 |
$this->_get_admin_page_url( 'addons' ),
|
7452 |
false,
|
7453 |
WP_FS__DEFAULT_PRIORITY,
|
7670 |
|
7671 |
#endregion ------------------------------------------------------------------
|
7672 |
|
7673 |
+
#region Permissions ------------------------------------------------------------------
|
7674 |
+
|
7675 |
+
/**
|
7676 |
+
* Check if specific permission requested.
|
7677 |
+
*
|
7678 |
+
* @author Vova Feldman (@svovaf)
|
7679 |
+
* @since 1.1.6
|
7680 |
+
*
|
7681 |
+
* @param string $permission
|
7682 |
+
*
|
7683 |
+
* @return bool
|
7684 |
+
*/
|
7685 |
+
function is_permission_requested( $permission ) {
|
7686 |
+
return isset( $this->_permissions[ $permission ] ) && ( true === $this->_permissions[ $permission ] );
|
7687 |
+
}
|
7688 |
+
|
7689 |
+
#endregion Permissions ------------------------------------------------------------------
|
7690 |
+
|
7691 |
#region Marketing ------------------------------------------------------------------
|
7692 |
|
7693 |
/**
|
classes/freemius/includes/class-fs-plugin-updater.php
CHANGED
@@ -233,7 +233,7 @@ if ( !isset($info->error) ) {
|
|
233 |
$new_version = $this->_fs->_fetch_latest_version( $is_addon ? $addon->id : false );
|
234 |
|
235 |
if ( $is_addon ) {
|
236 |
-
$data->name = $addon->title . ' ' . __fs( 'addon' );
|
237 |
$data->slug = $addon->slug;
|
238 |
$data->url = WP_FS__ADDRESS;
|
239 |
$data->package = $new_version->url;
|
233 |
$new_version = $this->_fs->_fetch_latest_version( $is_addon ? $addon->id : false );
|
234 |
|
235 |
if ( $is_addon ) {
|
236 |
+
$data->name = $addon->title . ' ' . __fs( 'addon', $this->_fs->get_slug() );
|
237 |
$data->slug = $addon->slug;
|
238 |
$data->url = WP_FS__ADDRESS;
|
239 |
$data->package = $new_version->url;
|
classes/freemius/includes/fs-core-functions.php
CHANGED
@@ -58,20 +58,6 @@
|
|
58 |
return ob_get_clean();
|
59 |
}
|
60 |
|
61 |
-
function __fs( $key ) {
|
62 |
-
global $fs_text;
|
63 |
-
|
64 |
-
if ( ! isset( $fs_text ) ) {
|
65 |
-
require_once( dirname( __FILE__ ) . '/i18n.php' );
|
66 |
-
}
|
67 |
-
|
68 |
-
return isset( $fs_text[ $key ] ) ? $fs_text[ $key ] : $key;
|
69 |
-
}
|
70 |
-
|
71 |
-
function _efs( $key ) {
|
72 |
-
echo __fs( $key );
|
73 |
-
}
|
74 |
-
|
75 |
/* Scripts and styles including.
|
76 |
--------------------------------------------------------------------------------------------*/
|
77 |
function fs_enqueue_local_style( $handle, $path, $deps = array(), $ver = false, $media = 'all' ) {
|
@@ -96,8 +82,8 @@
|
|
96 |
wp_enqueue_script( $handle, plugins_url( plugin_basename( WP_FS__DIR_JS . '/' . trim( $path, '/' ) ) ), $deps, $ver, $in_footer );
|
97 |
}
|
98 |
|
99 |
-
function fs_img_url( $path ) {
|
100 |
-
return plugins_url( plugin_basename(
|
101 |
}
|
102 |
|
103 |
/* Request handlers.
|
@@ -194,91 +180,6 @@
|
|
194 |
href="<?php echo wp_nonce_url( freemius( $slug )->_get_admin_page_url( $page, array_merge( $params, array( 'fs_action' => $action ) ) ), $action ) ?>"><?php echo $title ?></a><?php
|
195 |
}
|
196 |
|
197 |
-
/* Core Redirect (copied from BuddyPress).
|
198 |
-
--------------------------------------------------------------------------------------------*/
|
199 |
-
/**
|
200 |
-
* Redirects to another page, with a workaround for the IIS Set-Cookie bug.
|
201 |
-
*
|
202 |
-
* @link http://support.microsoft.com/kb/q176113/
|
203 |
-
* @since 1.5.1
|
204 |
-
* @uses apply_filters() Calls 'wp_redirect' hook on $location and $status.
|
205 |
-
*
|
206 |
-
* @param string $location The path to redirect to
|
207 |
-
* @param int $status Status code to use
|
208 |
-
*
|
209 |
-
* @return bool False if $location is not set
|
210 |
-
*/
|
211 |
-
function fs_redirect( $location, $status = 302 ) {
|
212 |
-
global $is_IIS;
|
213 |
-
|
214 |
-
if ( headers_sent() ) {
|
215 |
-
return false;
|
216 |
-
}
|
217 |
-
|
218 |
-
if ( ! $location ) // allows the wp_redirect filter to cancel a redirect
|
219 |
-
{
|
220 |
-
return false;
|
221 |
-
}
|
222 |
-
|
223 |
-
$location = fs_sanitize_redirect( $location );
|
224 |
-
|
225 |
-
if ( $is_IIS ) {
|
226 |
-
header( "Refresh: 0;url=$location" );
|
227 |
-
} else {
|
228 |
-
if ( php_sapi_name() != 'cgi-fcgi' ) {
|
229 |
-
status_header( $status );
|
230 |
-
} // This causes problems on IIS and some FastCGI setups
|
231 |
-
header( "Location: $location" );
|
232 |
-
}
|
233 |
-
|
234 |
-
return true;
|
235 |
-
}
|
236 |
-
|
237 |
-
/**
|
238 |
-
* Sanitizes a URL for use in a redirect.
|
239 |
-
*
|
240 |
-
* @since 2.3
|
241 |
-
*
|
242 |
-
* @param string $location
|
243 |
-
*
|
244 |
-
* @return string redirect-sanitized URL
|
245 |
-
*/
|
246 |
-
function fs_sanitize_redirect( $location ) {
|
247 |
-
$location = preg_replace( '|[^a-z0-9-~+_.?#=&;,/:%!]|i', '', $location );
|
248 |
-
$location = fs_kses_no_null( $location );
|
249 |
-
|
250 |
-
// remove %0d and %0a from location
|
251 |
-
$strip = array( '%0d', '%0a' );
|
252 |
-
$found = true;
|
253 |
-
while ( $found ) {
|
254 |
-
$found = false;
|
255 |
-
foreach ( (array) $strip as $val ) {
|
256 |
-
while ( strpos( $location, $val ) !== false ) {
|
257 |
-
$found = true;
|
258 |
-
$location = str_replace( $val, '', $location );
|
259 |
-
}
|
260 |
-
}
|
261 |
-
}
|
262 |
-
|
263 |
-
return $location;
|
264 |
-
}
|
265 |
-
|
266 |
-
/**
|
267 |
-
* Removes any NULL characters in $string.
|
268 |
-
*
|
269 |
-
* @since 1.0.0
|
270 |
-
*
|
271 |
-
* @param string $string
|
272 |
-
*
|
273 |
-
* @return string
|
274 |
-
*/
|
275 |
-
function fs_kses_no_null( $string ) {
|
276 |
-
$string = preg_replace( '/\0+/', '', $string );
|
277 |
-
$string = preg_replace( '/(\\\\0)+/', '', $string );
|
278 |
-
|
279 |
-
return $string;
|
280 |
-
}
|
281 |
-
|
282 |
/*function fs_error_handler($errno, $errstr, $errfile, $errline)
|
283 |
{
|
284 |
if (false === strpos($errfile, 'freemius/'))
|
@@ -302,29 +203,6 @@
|
|
302 |
|
303 |
set_error_handler('fs_error_handler');*/
|
304 |
|
305 |
-
if ( function_exists( 'wp_normalize_path' ) ) {
|
306 |
-
/**
|
307 |
-
* Normalize a filesystem path.
|
308 |
-
*
|
309 |
-
* Replaces backslashes with forward slashes for Windows systems, and ensures
|
310 |
-
* no duplicate slashes exist.
|
311 |
-
*
|
312 |
-
* @param string $path Path to normalize.
|
313 |
-
*
|
314 |
-
* @return string Normalized path.
|
315 |
-
*/
|
316 |
-
function fs_normalize_path( $path ) {
|
317 |
-
return wp_normalize_path( $path );
|
318 |
-
}
|
319 |
-
} else {
|
320 |
-
function fs_normalize_path( $path ) {
|
321 |
-
$path = str_replace( '\\', '/', $path );
|
322 |
-
$path = preg_replace( '|/+|', '/', $path );
|
323 |
-
|
324 |
-
return $path;
|
325 |
-
}
|
326 |
-
}
|
327 |
-
|
328 |
function fs_nonce_url( $actionurl, $action = - 1, $name = '_wpnonce' ) {
|
329 |
// $actionurl = str_replace( '&', '&', $actionurl );
|
330 |
return add_query_arg( $name, wp_create_nonce( $action ), $actionurl );
|
58 |
return ob_get_clean();
|
59 |
}
|
60 |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
61 |
/* Scripts and styles including.
|
62 |
--------------------------------------------------------------------------------------------*/
|
63 |
function fs_enqueue_local_style( $handle, $path, $deps = array(), $ver = false, $media = 'all' ) {
|
82 |
wp_enqueue_script( $handle, plugins_url( plugin_basename( WP_FS__DIR_JS . '/' . trim( $path, '/' ) ) ), $deps, $ver, $in_footer );
|
83 |
}
|
84 |
|
85 |
+
function fs_img_url( $path, $img_dir = WP_FS__DIR_IMG ) {
|
86 |
+
return plugins_url( plugin_basename( $img_dir . '/' . trim( $path, '/' ) ) );
|
87 |
}
|
88 |
|
89 |
/* Request handlers.
|
180 |
href="<?php echo wp_nonce_url( freemius( $slug )->_get_admin_page_url( $page, array_merge( $params, array( 'fs_action' => $action ) ) ), $action ) ?>"><?php echo $title ?></a><?php
|
181 |
}
|
182 |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
183 |
/*function fs_error_handler($errno, $errstr, $errfile, $errline)
|
184 |
{
|
185 |
if (false === strpos($errfile, 'freemius/'))
|
203 |
|
204 |
set_error_handler('fs_error_handler');*/
|
205 |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
206 |
function fs_nonce_url( $actionurl, $action = - 1, $name = '_wpnonce' ) {
|
207 |
// $actionurl = str_replace( '&', '&', $actionurl );
|
208 |
return add_query_arg( $name, wp_create_nonce( $action ), $actionurl );
|
classes/freemius/includes/fs-essential-functions.php
ADDED
@@ -0,0 +1,339 @@
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
1 |
+
<?php
|
2 |
+
/**
|
3 |
+
* @package Freemius
|
4 |
+
* @copyright Copyright (c) 2015, Freemius, Inc.
|
5 |
+
* @license http://opensource.org/licenses/gpl-2.0.php GNU Public License
|
6 |
+
* @since 1.1.5
|
7 |
+
*/
|
8 |
+
|
9 |
+
if ( ! function_exists( 'fs_normalize_path' ) ) {
|
10 |
+
if ( function_exists( 'wp_normalize_path' ) ) {
|
11 |
+
/**
|
12 |
+
* Normalize a filesystem path.
|
13 |
+
*
|
14 |
+
* Replaces backslashes with forward slashes for Windows systems, and ensures
|
15 |
+
* no duplicate slashes exist.
|
16 |
+
*
|
17 |
+
* @param string $path Path to normalize.
|
18 |
+
*
|
19 |
+
* @return string Normalized path.
|
20 |
+
*/
|
21 |
+
function fs_normalize_path( $path ) {
|
22 |
+
return wp_normalize_path( $path );
|
23 |
+
}
|
24 |
+
} else {
|
25 |
+
function fs_normalize_path( $path ) {
|
26 |
+
$path = str_replace( '\\', '/', $path );
|
27 |
+
$path = preg_replace( '|/+|', '/', $path );
|
28 |
+
|
29 |
+
return $path;
|
30 |
+
}
|
31 |
+
}
|
32 |
+
}
|
33 |
+
|
34 |
+
#region Core Redirect (copied from BuddyPress) -----------------------------------------
|
35 |
+
|
36 |
+
if ( ! function_exists( 'fs_redirect' ) ) {
|
37 |
+
/**
|
38 |
+
* Redirects to another page, with a workaround for the IIS Set-Cookie bug.
|
39 |
+
*
|
40 |
+
* @link http://support.microsoft.com/kb/q176113/
|
41 |
+
* @since 1.5.1
|
42 |
+
* @uses apply_filters() Calls 'wp_redirect' hook on $location and $status.
|
43 |
+
*
|
44 |
+
* @param string $location The path to redirect to
|
45 |
+
* @param int $status Status code to use
|
46 |
+
*
|
47 |
+
* @return bool False if $location is not set
|
48 |
+
*/
|
49 |
+
function fs_redirect( $location, $status = 302 ) {
|
50 |
+
global $is_IIS;
|
51 |
+
|
52 |
+
if ( headers_sent() ) {
|
53 |
+
return false;
|
54 |
+
}
|
55 |
+
|
56 |
+
if ( ! $location ) // allows the wp_redirect filter to cancel a redirect
|
57 |
+
{
|
58 |
+
return false;
|
59 |
+
}
|
60 |
+
|
61 |
+
$location = fs_sanitize_redirect( $location );
|
62 |
+
|
63 |
+
if ( $is_IIS ) {
|
64 |
+
header( "Refresh: 0;url=$location" );
|
65 |
+
} else {
|
66 |
+
if ( php_sapi_name() != 'cgi-fcgi' ) {
|
67 |
+
status_header( $status );
|
68 |
+
} // This causes problems on IIS and some FastCGI setups
|
69 |
+
header( "Location: $location" );
|
70 |
+
}
|
71 |
+
|
72 |
+
return true;
|
73 |
+
}
|
74 |
+
|
75 |
+
/**
|
76 |
+
* Sanitizes a URL for use in a redirect.
|
77 |
+
*
|
78 |
+
* @since 2.3
|
79 |
+
*
|
80 |
+
* @param string $location
|
81 |
+
*
|
82 |
+
* @return string redirect-sanitized URL
|
83 |
+
*/
|
84 |
+
function fs_sanitize_redirect( $location ) {
|
85 |
+
$location = preg_replace( '|[^a-z0-9-~+_.?#=&;,/:%!]|i', '', $location );
|
86 |
+
$location = fs_kses_no_null( $location );
|
87 |
+
|
88 |
+
// remove %0d and %0a from location
|
89 |
+
$strip = array( '%0d', '%0a' );
|
90 |
+
$found = true;
|
91 |
+
while ( $found ) {
|
92 |
+
$found = false;
|
93 |
+
foreach ( (array) $strip as $val ) {
|
94 |
+
while ( strpos( $location, $val ) !== false ) {
|
95 |
+
$found = true;
|
96 |
+
$location = str_replace( $val, '', $location );
|
97 |
+
}
|
98 |
+
}
|
99 |
+
}
|
100 |
+
|
101 |
+
return $location;
|
102 |
+
}
|
103 |
+
|
104 |
+
/**
|
105 |
+
* Removes any NULL characters in $string.
|
106 |
+
*
|
107 |
+
* @since 1.0.0
|
108 |
+
*
|
109 |
+
* @param string $string
|
110 |
+
*
|
111 |
+
* @return string
|
112 |
+
*/
|
113 |
+
function fs_kses_no_null( $string ) {
|
114 |
+
$string = preg_replace( '/\0+/', '', $string );
|
115 |
+
$string = preg_replace( '/(\\\\0)+/', '', $string );
|
116 |
+
|
117 |
+
return $string;
|
118 |
+
}
|
119 |
+
}
|
120 |
+
|
121 |
+
#endregion Core Redirect (copied from BuddyPress) -----------------------------------------
|
122 |
+
|
123 |
+
#region
|
124 |
+
|
125 |
+
if ( ! function_exists( '__fs' ) ) {
|
126 |
+
global $fs_text_overrides;
|
127 |
+
|
128 |
+
if ( ! isset( $fs_text_overrides ) ) {
|
129 |
+
$fs_text_overrides = array();
|
130 |
+
}
|
131 |
+
|
132 |
+
/**
|
133 |
+
* Retrieve a translated text by key.
|
134 |
+
*
|
135 |
+
* @author Vova Feldman (@svovaf)
|
136 |
+
* @since 1.1.4
|
137 |
+
*
|
138 |
+
* @param string $key
|
139 |
+
* @param string $slug
|
140 |
+
*
|
141 |
+
* @return string
|
142 |
+
*
|
143 |
+
* @global $fs_text , $fs_text_overrides
|
144 |
+
*/
|
145 |
+
function __fs( $key, $slug = 'freemius' ) {
|
146 |
+
global $fs_text, $fs_text_overrides;
|
147 |
+
|
148 |
+
if ( ! isset( $fs_text ) ) {
|
149 |
+
require_once( dirname( __FILE__ ) . '/i18n.php' );
|
150 |
+
}
|
151 |
+
|
152 |
+
if ( isset( $fs_text_overrides[ $slug ] ) &&
|
153 |
+
isset( $fs_text_overrides[ $slug ][ $key ] )
|
154 |
+
) {
|
155 |
+
return $fs_text_overrides[ $slug ][ $key ];
|
156 |
+
}
|
157 |
+
|
158 |
+
return isset( $fs_text[ $key ] ) ?
|
159 |
+
$fs_text[ $key ] :
|
160 |
+
$key;
|
161 |
+
}
|
162 |
+
|
163 |
+
/**
|
164 |
+
* Display a translated text by key.
|
165 |
+
*
|
166 |
+
* @author Vova Feldman (@svovaf)
|
167 |
+
* @since 1.1.4
|
168 |
+
*
|
169 |
+
* @param string $key
|
170 |
+
* @param string $slug
|
171 |
+
*/
|
172 |
+
function _efs( $key, $slug = 'freemius' ) {
|
173 |
+
echo __fs( $key, $slug );
|
174 |
+
}
|
175 |
+
|
176 |
+
/**
|
177 |
+
* Override default i18n text phrases.
|
178 |
+
*
|
179 |
+
* @author Vova Feldman (@svovaf)
|
180 |
+
* @since 1.1.6
|
181 |
+
*
|
182 |
+
* @param string[] $key_value
|
183 |
+
* @param string $slug
|
184 |
+
*
|
185 |
+
* @global $fs_text_overrides
|
186 |
+
*/
|
187 |
+
function fs_override_i18n( array $key_value, $slug = 'freemius' ) {
|
188 |
+
global $fs_text_overrides;
|
189 |
+
|
190 |
+
if ( ! isset( $fs_text_overrides[ $slug ] ) ) {
|
191 |
+
$fs_text_overrides[ $slug ] = array();
|
192 |
+
}
|
193 |
+
|
194 |
+
foreach ( $key_value as $key => $value ) {
|
195 |
+
$fs_text_overrides[ $slug ][ $key ] = $value;
|
196 |
+
}
|
197 |
+
}
|
198 |
+
}
|
199 |
+
|
200 |
+
/**
|
201 |
+
* Leverage backtrace to find caller plugin file path.
|
202 |
+
*
|
203 |
+
* @author Vova Feldman (@svovaf)
|
204 |
+
* @since 1.0.6
|
205 |
+
*
|
206 |
+
* @return string
|
207 |
+
*/
|
208 |
+
function fs_find_caller_plugin_file() {
|
209 |
+
/**
|
210 |
+
* All the code below will be executed once on activation.
|
211 |
+
* If the user changes the main plugin's file name, the file_exists()
|
212 |
+
* will catch it.
|
213 |
+
*/
|
214 |
+
if ( ! function_exists( 'get_plugins' ) ) {
|
215 |
+
require_once( ABSPATH . 'wp-admin/includes/plugin.php' );
|
216 |
+
}
|
217 |
+
|
218 |
+
$all_plugins = get_plugins();
|
219 |
+
$all_plugins_paths = array();
|
220 |
+
|
221 |
+
// Get active plugin's main files real full names (might be symlinks).
|
222 |
+
foreach ( $all_plugins as $relative_path => &$data ) {
|
223 |
+
$all_plugins_paths[] = fs_normalize_path( realpath( WP_PLUGIN_DIR . '/' . $relative_path ) );
|
224 |
+
}
|
225 |
+
|
226 |
+
$plugin_file = null;
|
227 |
+
for ( $i = 1, $bt = debug_backtrace(), $len = count( $bt ); $i < $len; $i ++ ) {
|
228 |
+
if ( in_array( fs_normalize_path( $bt[ $i ]['file'] ), $all_plugins_paths ) ) {
|
229 |
+
$plugin_file = $bt[ $i ]['file'];
|
230 |
+
break;
|
231 |
+
}
|
232 |
+
}
|
233 |
+
|
234 |
+
if ( is_null( $plugin_file ) ) {
|
235 |
+
// Throw an error to the developer in case of some edge case dev environment.
|
236 |
+
wp_die( __fs( 'failed-finding-main-path' ), __fs( 'error' ), array( 'back_link' => true ) );
|
237 |
+
}
|
238 |
+
|
239 |
+
return $plugin_file;
|
240 |
+
}
|
241 |
+
|
242 |
+
/**
|
243 |
+
* Update SDK newest version reference.
|
244 |
+
*
|
245 |
+
* @author Vova Feldman (@svovaf)
|
246 |
+
* @since 1.1.6
|
247 |
+
*
|
248 |
+
* @param string $sdk_relative_path
|
249 |
+
* @param string|bool $plugin_file
|
250 |
+
*
|
251 |
+
* @global $fs_active_plugins
|
252 |
+
*/
|
253 |
+
function fs_update_sdk_newest_version( $sdk_relative_path, $plugin_file = false ) {
|
254 |
+
global $fs_active_plugins;
|
255 |
+
|
256 |
+
if ( ! is_string( $plugin_file ) ) {
|
257 |
+
$plugin_file = plugin_basename( fs_find_caller_plugin_file() );
|
258 |
+
}
|
259 |
+
|
260 |
+
$fs_active_plugins->newest = (object) array(
|
261 |
+
'plugin_path' => $plugin_file,
|
262 |
+
'sdk_path' => $sdk_relative_path,
|
263 |
+
'version' => $fs_active_plugins->plugins[ $sdk_relative_path ]->version,
|
264 |
+
'in_activation' => ! is_plugin_active( $plugin_file ),
|
265 |
+
'timestamp' => time(),
|
266 |
+
);
|
267 |
+
|
268 |
+
// Update DB with latest SDK version and path.
|
269 |
+
update_option( 'fs_active_plugins', $fs_active_plugins );
|
270 |
+
}
|
271 |
+
|
272 |
+
/**
|
273 |
+
* Reorder the plugins load order so the plugin with the newest Freemius SDK is loaded first.
|
274 |
+
*
|
275 |
+
* @author Vova Feldman (@svovaf)
|
276 |
+
* @since 1.1.6
|
277 |
+
*
|
278 |
+
* @return bool Was plugin order changed. Return false if plugin was loaded first anyways.
|
279 |
+
*
|
280 |
+
* @global $fs_active_plugins
|
281 |
+
*/
|
282 |
+
function fs_newest_sdk_plugin_first() {
|
283 |
+
global $fs_active_plugins;
|
284 |
+
|
285 |
+
$active_plugins = get_option( 'active_plugins' );
|
286 |
+
$newest_sdk_plugin_key = array_search( $fs_active_plugins->newest->plugin_path, $active_plugins );
|
287 |
+
if ( 0 == $newest_sdk_plugin_key ) {
|
288 |
+
// if it's 0 it's the first plugin already, no need to continue
|
289 |
+
return false;
|
290 |
+
}
|
291 |
+
|
292 |
+
array_splice( $active_plugins, $newest_sdk_plugin_key, 1 );
|
293 |
+
array_unshift( $active_plugins, $fs_active_plugins->newest->plugin_path );
|
294 |
+
update_option( 'active_plugins', $active_plugins );
|
295 |
+
|
296 |
+
return true;
|
297 |
+
}
|
298 |
+
|
299 |
+
/**
|
300 |
+
* Go over all Freemius SDKs in the system and find and "remember"
|
301 |
+
* the newest SDK which is associated with an active plugin.
|
302 |
+
*
|
303 |
+
* @author Vova Feldman (@svovaf)
|
304 |
+
* @since 1.1.6
|
305 |
+
*
|
306 |
+
* @global $fs_active_plugins
|
307 |
+
*/
|
308 |
+
function fs_fallback_to_newest_active_sdk() {
|
309 |
+
global $fs_active_plugins;
|
310 |
+
|
311 |
+
$newest_sdk_data = null;
|
312 |
+
$newest_sdk_path = null;
|
313 |
+
|
314 |
+
foreach ( $fs_active_plugins->plugins as $sdk_relative_path => $data ) {
|
315 |
+
if ( is_null( $newest_sdk_data ) || version_compare( $data->version, $newest_sdk_data->version, '>' )
|
316 |
+
) {
|
317 |
+
// If plugin inactive or SDK starter file doesn't exist, remove SDK reference.
|
318 |
+
if ( ! is_plugin_active( $data->plugin_path ) ||
|
319 |
+
! file_exists( fs_normalize_path( WP_PLUGIN_DIR . '/' . $sdk_relative_path . '/start.php' ) )
|
320 |
+
) {
|
321 |
+
unset( $fs_active_plugins->plugins[ $sdk_relative_path ] );
|
322 |
+
|
323 |
+
// No need to store the data since it will be stored in fs_update_sdk_newest_version()
|
324 |
+
// or explicitly with update_option().
|
325 |
+
} else {
|
326 |
+
$newest_sdk_data = $data;
|
327 |
+
$newest_sdk_path = $sdk_relative_path;
|
328 |
+
}
|
329 |
+
}
|
330 |
+
}
|
331 |
+
|
332 |
+
if ( is_null( $newest_sdk_data ) ) {
|
333 |
+
// Couldn't find any SDK reference.
|
334 |
+
$fs_active_plugins = new stdClass();
|
335 |
+
update_option( 'fs_active_plugins', $fs_active_plugins );
|
336 |
+
} else {
|
337 |
+
fs_update_sdk_newest_version( $newest_sdk_path, $newest_sdk_data->plugin_path );
|
338 |
+
}
|
339 |
+
}
|
classes/freemius/includes/fs-plugin-functions.php
CHANGED
@@ -91,7 +91,6 @@
|
|
91 |
'changelog' => _x( 'Changelog', 'Plugin installer section title' ),
|
92 |
'reviews' => _x( 'Reviews', 'Plugin installer section title' ),
|
93 |
'other_notes' => _x( 'Other Notes', 'Plugin installer section title' ),
|
94 |
-
'features' => __fs( 'features-and-pricing' ),
|
95 |
);
|
96 |
|
97 |
// Sanitize HTML
|
@@ -105,6 +104,9 @@
|
|
105 |
}
|
106 |
}
|
107 |
|
|
|
|
|
|
|
108 |
$_tab = esc_attr( $tab );
|
109 |
|
110 |
$section = isset( $_REQUEST['section'] ) ? wp_unslash( $_REQUEST['section'] ) : 'description'; // Default to the Description tab, Do not translate, API returns English.
|
@@ -170,12 +172,12 @@
|
|
170 |
<?php if ( isset( $api->plans ) ) : ?>
|
171 |
<div class="plugin-information-pricing">
|
172 |
<?php foreach ($api->plans as $plan) : ?>
|
173 |
-
<h3 data-plan="<?php echo $plan->id ?>"><?php printf( __fs( 'x-plan' ), $plan->title ) ?></h3>
|
174 |
<ul>
|
175 |
<?php $billing_cycle = 'annual' ?>
|
176 |
<?php if ( 1 === count( $plan->pricing ) && 1 == $plan->pricing[0]->licenses ) : ?>
|
177 |
<?php $pricing = $plan->pricing[0] ?>
|
178 |
-
<li><label><?php _efs( 'price' ) ?>: $<?php
|
179 |
if ( isset( $pricing->annual_price ) ) {
|
180 |
echo $pricing->annual_price . ( $plan->is_block_features ? ' / year' : '' );
|
181 |
$billing_cycle = 'annual';
|
@@ -194,13 +196,13 @@
|
|
194 |
value="<?php echo $pricing->id ?>"<?php checked( $first, true ) ?>><?php
|
195 |
switch ( $pricing->licenses ) {
|
196 |
case '1':
|
197 |
-
_efs( 'license-single-site' );
|
198 |
break;
|
199 |
case null:
|
200 |
-
_efs( 'license-unlimited' );
|
201 |
break;
|
202 |
default:
|
203 |
-
printf( __fs( 'license-x-sites' ), $pricing->licenses );
|
204 |
break;
|
205 |
}
|
206 |
?> - $<?php
|
@@ -223,7 +225,7 @@
|
|
223 |
'plan_id' => $plan->id,
|
224 |
'pricing_id' => $plan->pricing[0]->id,
|
225 |
'billing_cycle' => $billing_cycle,
|
226 |
-
), $api->checkout_link ) ) . '" target="_parent">' . __fs( 'purchase' ) . '</a>' ?>
|
227 |
</div>
|
228 |
<?php endforeach ?>
|
229 |
<?php wp_enqueue_script( 'jquery' ); ?>
|
@@ -243,7 +245,7 @@
|
|
243 |
</script>
|
244 |
<?php endif ?>
|
245 |
<div>
|
246 |
-
<h3><?php _efs( 'details' ) ?></h3>
|
247 |
<ul>
|
248 |
<?php if ( ! empty( $api->version ) ) { ?>
|
249 |
<li><strong><?php _e( 'Version:' ); ?></strong> <?php echo $api->version; ?></li>
|
@@ -377,7 +379,7 @@
|
|
377 |
'plan_id' => $plan->id,
|
378 |
'pricing_id' => $plan->pricing[0]->id,
|
379 |
'billing_cycle' => $billing_cycle,
|
380 |
-
), $api->checkout_link ) ) . '" target="_parent">' . __fs( 'purchase' ) . '</a>';
|
381 |
|
382 |
// @todo Add Cart concept.
|
383 |
// echo ' <a class="button right" href="' . $status['url'] . '" target="_parent">' . __( 'Add to Cart' ) . '</a>';
|
91 |
'changelog' => _x( 'Changelog', 'Plugin installer section title' ),
|
92 |
'reviews' => _x( 'Reviews', 'Plugin installer section title' ),
|
93 |
'other_notes' => _x( 'Other Notes', 'Plugin installer section title' ),
|
|
|
94 |
);
|
95 |
|
96 |
// Sanitize HTML
|
104 |
}
|
105 |
}
|
106 |
|
107 |
+
// Add after $api->slug is ready.
|
108 |
+
$plugins_section_titles['features'] = __fs( 'features-and-pricing', $api->slug );
|
109 |
+
|
110 |
$_tab = esc_attr( $tab );
|
111 |
|
112 |
$section = isset( $_REQUEST['section'] ) ? wp_unslash( $_REQUEST['section'] ) : 'description'; // Default to the Description tab, Do not translate, API returns English.
|
172 |
<?php if ( isset( $api->plans ) ) : ?>
|
173 |
<div class="plugin-information-pricing">
|
174 |
<?php foreach ($api->plans as $plan) : ?>
|
175 |
+
<h3 data-plan="<?php echo $plan->id ?>"><?php printf( __fs( 'x-plan', $api->slug ), $plan->title ) ?></h3>
|
176 |
<ul>
|
177 |
<?php $billing_cycle = 'annual' ?>
|
178 |
<?php if ( 1 === count( $plan->pricing ) && 1 == $plan->pricing[0]->licenses ) : ?>
|
179 |
<?php $pricing = $plan->pricing[0] ?>
|
180 |
+
<li><label><?php _efs( 'price', $api->slug ) ?>: $<?php
|
181 |
if ( isset( $pricing->annual_price ) ) {
|
182 |
echo $pricing->annual_price . ( $plan->is_block_features ? ' / year' : '' );
|
183 |
$billing_cycle = 'annual';
|
196 |
value="<?php echo $pricing->id ?>"<?php checked( $first, true ) ?>><?php
|
197 |
switch ( $pricing->licenses ) {
|
198 |
case '1':
|
199 |
+
_efs( 'license-single-site', $api->slug );
|
200 |
break;
|
201 |
case null:
|
202 |
+
_efs( 'license-unlimited', $api->slug );
|
203 |
break;
|
204 |
default:
|
205 |
+
printf( __fs( 'license-x-sites', $api->slug ), $pricing->licenses );
|
206 |
break;
|
207 |
}
|
208 |
?> - $<?php
|
225 |
'plan_id' => $plan->id,
|
226 |
'pricing_id' => $plan->pricing[0]->id,
|
227 |
'billing_cycle' => $billing_cycle,
|
228 |
+
), $api->checkout_link ) ) . '" target="_parent">' . __fs( 'purchase', $api->slug ) . '</a>' ?>
|
229 |
</div>
|
230 |
<?php endforeach ?>
|
231 |
<?php wp_enqueue_script( 'jquery' ); ?>
|
245 |
</script>
|
246 |
<?php endif ?>
|
247 |
<div>
|
248 |
+
<h3><?php _efs( 'details', $api->slug ) ?></h3>
|
249 |
<ul>
|
250 |
<?php if ( ! empty( $api->version ) ) { ?>
|
251 |
<li><strong><?php _e( 'Version:' ); ?></strong> <?php echo $api->version; ?></li>
|
379 |
'plan_id' => $plan->id,
|
380 |
'pricing_id' => $plan->pricing[0]->id,
|
381 |
'billing_cycle' => $billing_cycle,
|
382 |
+
), $api->checkout_link ) ) . '" target="_parent">' . __fs( 'purchase', $api->slug ) . '</a>';
|
383 |
|
384 |
// @todo Add Cart concept.
|
385 |
// echo ' <a class="button right" href="' . $status['url'] . '" target="_parent">' . __( 'Add to Cart' ) . '</a>';
|
classes/freemius/includes/i18n.php
CHANGED
@@ -1,4 +1,23 @@
|
|
1 |
<?php
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
2 |
global $fs_text;
|
3 |
|
4 |
$fs_text = array(
|
@@ -38,7 +57,7 @@
|
|
38 |
'you-are-step-away' => __( 'You are just one step away - %s', 'freemius' ),
|
39 |
'activate-x-now' => _x( 'Complete "%s" Activation Now', '%s - plugin name. As complete "Jetpack" activation now', 'freemius' ),
|
40 |
'few-plugin-tweaks' => __( 'We made a few tweaks to the plugin, %s', 'freemius' ),
|
41 |
-
'optin-x-now'
|
42 |
'error' => __( 'Error', 'freemius' ),
|
43 |
'failed-finding-main-path' => __( 'Freemius SDK couldn\'t find the plugin\'s main file. Please contact sdk@freemius.com with the current error.', 'freemius' ),
|
44 |
#region Account
|
@@ -56,6 +75,8 @@
|
|
56 |
'email' => __( 'Email', 'freemius' ),
|
57 |
'verified' => __( 'Verified', 'freemius' ),
|
58 |
'plugin' => __( 'Plugin', 'freemius' ),
|
|
|
|
|
59 |
'title' => __( 'Title', 'freemius' ),
|
60 |
'slug' => _x( 'Slug', 'as WP plugin slug', 'freemius' ),
|
61 |
'id' => __( 'ID', 'freemius' ),
|
@@ -69,10 +90,12 @@
|
|
69 |
'no-secret' => _x( 'No Secret', 'as secret encryption key missing', 'freemius' ),
|
70 |
'no-id' => __( 'No ID', 'freemius' ),
|
71 |
'sync-license' => _x( 'Sync License', 'as synchronize license', 'freemius' ),
|
|
|
72 |
'deactivate-license' => __( 'Deactivate License', 'freemius' ),
|
73 |
'activate' => __( 'Activate', 'freemius' ),
|
74 |
'deactivate' => __( 'Deactivate', 'freemius' ),
|
75 |
'active' => _x( 'Active', 'active mode', 'freemius' ),
|
|
|
76 |
'install-now' => __( 'Install Now', 'freemius' ),
|
77 |
'install-update-now' => __( 'Install Update Now', 'freemius' ),
|
78 |
'more-information-about-x' => __( 'More information about %s', 'freemius' ),
|
@@ -122,14 +145,17 @@
|
|
122 |
'hey-x' => _x( 'Hey %s,', 'greeting', 'freemius' ),
|
123 |
'thanks-x' => _x( 'Thanks %s!', 'a greeting. E.g. Thanks John!', 'freemius' ),
|
124 |
'connect-message' => __( 'In order to enjoy all our features and functionality, %s needs to connect your user, %s at %s, to %s', 'freemius' ),
|
|
|
125 |
'pending-activation-message' => __( '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 complete the install.', 'freemius' ),
|
126 |
'what-permissions' => __( 'What permissions are being granted?', 'freemius' ),
|
127 |
'permissions-profile' => __( 'Your Profile Overview', 'freemius' ),
|
128 |
'permissions-profile_desc' => __( 'Name and email address', 'freemius' ),
|
129 |
'permissions-site' => __( 'Your Site Overview', 'freemius' ),
|
130 |
-
'permissions-site_desc' => __( 'Site address
|
131 |
-
'permissions-events' => __( '
|
132 |
'permissions-events_desc' => __( 'Activation, deactivation and uninstall', 'freemius' ),
|
|
|
|
|
133 |
'privacy-policy' => __( 'Privacy Policy', 'freemius' ),
|
134 |
'tos' => __( 'Terms of Service', 'freemius' ),
|
135 |
'activating' => _x( 'Activating', 'as activating plugin', 'freemius' ),
|
@@ -144,9 +170,23 @@
|
|
144 |
#endregion Screenshots
|
145 |
|
146 |
#region Debug
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
147 |
'addons-of-x' => __( 'Add Ons of Plugin %s', 'freemius' ),
|
148 |
'delete-all-confirm' => __( 'Are you sure you want to delete the all Freemius data?', 'freemius' ),
|
|
|
149 |
'delete-all-accounts' => __( 'Delete All Accounts', 'freemius' ),
|
|
|
|
|
150 |
#endregion Debug
|
151 |
|
152 |
#region Expressions
|
@@ -239,7 +279,6 @@
|
|
239 |
'change-owner-request_owner-confirmed' => __( 'Thanks for confirming the ownership change. An email was just sent to %s for final approval.', 'freemius' ),
|
240 |
'change-owner-request_candidate-confirmed' => __( '%s is the new owner of the account.', 'freemius' ),
|
241 |
#endregion Change Owner
|
242 |
-
'freemius-debug' => __( 'Freemius Debug', 'freemius' ),
|
243 |
'addon-x-cannot-run-without-y' => _x( '%s cannot run without %s.', 'addonX cannot run without pluginY', 'freemius' ),
|
244 |
'addon-x-cannot-run-without-parent' => _x( '%s cannot run without the plugin.', 'addonX cannot run...', 'freemius' ),
|
245 |
'plugin-x-activation-message' => _x( '%s activation was successfully completed.', 'pluginX activation was successfully...', 'freemius' ),
|
1 |
<?php
|
2 |
+
/**
|
3 |
+
* All strings can now be overridden.
|
4 |
+
*
|
5 |
+
* For example, if we want to override:
|
6 |
+
* 'you-are-step-away' => 'You are just one step away - %s',
|
7 |
+
*
|
8 |
+
* We can use the filter:
|
9 |
+
* fs_override_i18n( array(
|
10 |
+
* 'opt-in-connect' => __( "Yes - I'm in!", '{your-text_domain}' ),
|
11 |
+
* 'skip' => __( 'Not today', '{your-text_domain}' ),
|
12 |
+
* ), '{plugin_slug}' );
|
13 |
+
*
|
14 |
+
* Or with the Freemius instance:
|
15 |
+
*
|
16 |
+
* my_freemius->override_i18n( array(
|
17 |
+
* 'opt-in-connect' => __( "Yes - I'm in!", '{your-text_domain}' ),
|
18 |
+
* 'skip' => __( 'Not today', '{your-text_domain}' ),
|
19 |
+
* );
|
20 |
+
*/
|
21 |
global $fs_text;
|
22 |
|
23 |
$fs_text = array(
|
57 |
'you-are-step-away' => __( 'You are just one step away - %s', 'freemius' ),
|
58 |
'activate-x-now' => _x( 'Complete "%s" Activation Now', '%s - plugin name. As complete "Jetpack" activation now', 'freemius' ),
|
59 |
'few-plugin-tweaks' => __( 'We made a few tweaks to the plugin, %s', 'freemius' ),
|
60 |
+
'optin-x-now' => __( 'Opt-in to make "%s" Better!', 'freemius' ),
|
61 |
'error' => __( 'Error', 'freemius' ),
|
62 |
'failed-finding-main-path' => __( 'Freemius SDK couldn\'t find the plugin\'s main file. Please contact sdk@freemius.com with the current error.', 'freemius' ),
|
63 |
#region Account
|
75 |
'email' => __( 'Email', 'freemius' ),
|
76 |
'verified' => __( 'Verified', 'freemius' ),
|
77 |
'plugin' => __( 'Plugin', 'freemius' ),
|
78 |
+
'plugins' => __( 'Plugins', 'freemius' ),
|
79 |
+
'path' => _x( 'Path', 'as file/folder path', 'freemius' ),
|
80 |
'title' => __( 'Title', 'freemius' ),
|
81 |
'slug' => _x( 'Slug', 'as WP plugin slug', 'freemius' ),
|
82 |
'id' => __( 'ID', 'freemius' ),
|
90 |
'no-secret' => _x( 'No Secret', 'as secret encryption key missing', 'freemius' ),
|
91 |
'no-id' => __( 'No ID', 'freemius' ),
|
92 |
'sync-license' => _x( 'Sync License', 'as synchronize license', 'freemius' ),
|
93 |
+
'sync' => _x( 'Sync', 'as synchronize', 'freemius' ),
|
94 |
'deactivate-license' => __( 'Deactivate License', 'freemius' ),
|
95 |
'activate' => __( 'Activate', 'freemius' ),
|
96 |
'deactivate' => __( 'Deactivate', 'freemius' ),
|
97 |
'active' => _x( 'Active', 'active mode', 'freemius' ),
|
98 |
+
'is-active' => _x( 'Is Active', 'is active mode?', 'freemius' ),
|
99 |
'install-now' => __( 'Install Now', 'freemius' ),
|
100 |
'install-update-now' => __( 'Install Update Now', 'freemius' ),
|
101 |
'more-information-about-x' => __( 'More information about %s', 'freemius' ),
|
145 |
'hey-x' => _x( 'Hey %s,', 'greeting', 'freemius' ),
|
146 |
'thanks-x' => _x( 'Thanks %s!', 'a greeting. E.g. Thanks John!', 'freemius' ),
|
147 |
'connect-message' => __( 'In order to enjoy all our features and functionality, %s needs to connect your user, %s at %s, to %s', 'freemius' ),
|
148 |
+
'connect-message_on-update' => __( 'Please help us improve %2$s! If you opt-in, some data about your usage of %2$s will be sent to %5$s. If you skip this, that\'s okay! %2$s will still work just fine.', 'freemius' ),
|
149 |
'pending-activation-message' => __( '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 complete the install.', 'freemius' ),
|
150 |
'what-permissions' => __( 'What permissions are being granted?', 'freemius' ),
|
151 |
'permissions-profile' => __( 'Your Profile Overview', 'freemius' ),
|
152 |
'permissions-profile_desc' => __( 'Name and email address', 'freemius' ),
|
153 |
'permissions-site' => __( 'Your Site Overview', 'freemius' ),
|
154 |
+
'permissions-site_desc' => __( 'Site address, WordPress version, PHP Version', 'freemius' ),
|
155 |
+
'permissions-events' => __( 'Plugin Events', 'freemius' ),
|
156 |
'permissions-events_desc' => __( 'Activation, deactivation and uninstall', 'freemius' ),
|
157 |
+
'permissions-newsletter' => __( 'Newsletter', 'freemius' ),
|
158 |
+
'permissions-newsletter_desc' => __( 'Updates, announcements, marketing, no spam', 'freemius' ),
|
159 |
'privacy-policy' => __( 'Privacy Policy', 'freemius' ),
|
160 |
'tos' => __( 'Terms of Service', 'freemius' ),
|
161 |
'activating' => _x( 'Activating', 'as activating plugin', 'freemius' ),
|
170 |
#endregion Screenshots
|
171 |
|
172 |
#region Debug
|
173 |
+
'freemius-debug' => __( 'Freemius Debug', 'freemius' ),
|
174 |
+
'on' => _x( 'On', 'as turned on', 'freemius' ),
|
175 |
+
'off' => _x( 'Off', 'as turned off', 'freemius' ),
|
176 |
+
'freemius-state' => __( 'Freemius State', 'freemius' ),
|
177 |
+
'connected' => _x( 'Connected', 'as connection was successful', 'freemius' ),
|
178 |
+
'blocked' => _x( 'Blocked', 'as connection blocked', 'freemius' ),
|
179 |
+
'api' => _x( 'API', 'as application program interface', 'freemius' ),
|
180 |
+
'sdk' => _x( 'SDK', 'as software development kit versions', 'freemius' ),
|
181 |
+
'sdk-versions' => _x( 'SDK Versions', 'as software development kit versions', 'freemius' ),
|
182 |
+
'plugin-path' => _x( 'Plugin Path', 'as plugin folder path', 'freemius' ),
|
183 |
+
'sdk-path' => _x( 'SDK Path', 'as sdk path', 'freemius' ),
|
184 |
'addons-of-x' => __( 'Add Ons of Plugin %s', 'freemius' ),
|
185 |
'delete-all-confirm' => __( 'Are you sure you want to delete the all Freemius data?', 'freemius' ),
|
186 |
+
'actions' => __( 'Actions', 'freemius' ),
|
187 |
'delete-all-accounts' => __( 'Delete All Accounts', 'freemius' ),
|
188 |
+
'clear-api-cache' => __( 'Clear API Cache', 'freemius' ),
|
189 |
+
'sync-data-from-server' => __( 'Sync Data From Server', 'freemius' ),
|
190 |
#endregion Debug
|
191 |
|
192 |
#region Expressions
|
279 |
'change-owner-request_owner-confirmed' => __( 'Thanks for confirming the ownership change. An email was just sent to %s for final approval.', 'freemius' ),
|
280 |
'change-owner-request_candidate-confirmed' => __( '%s is the new owner of the account.', 'freemius' ),
|
281 |
#endregion Change Owner
|
|
|
282 |
'addon-x-cannot-run-without-y' => _x( '%s cannot run without %s.', 'addonX cannot run without pluginY', 'freemius' ),
|
283 |
'addon-x-cannot-run-without-parent' => _x( '%s cannot run without the plugin.', 'addonX cannot run...', 'freemius' ),
|
284 |
'plugin-x-activation-message' => _x( '%s activation was successfully completed.', 'pluginX activation was successfully...', 'freemius' ),
|
classes/freemius/start.php
CHANGED
@@ -10,13 +10,244 @@
|
|
10 |
exit;
|
11 |
}
|
12 |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
13 |
/**
|
14 |
-
* Freemius hooks
|
15 |
-
*
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
16 |
*/
|
17 |
|
|
|
|
|
18 |
if ( ! class_exists( 'Freemius' ) ) {
|
19 |
|
|
|
|
|
|
|
|
|
20 |
// Configuration should be loaded first.
|
21 |
require_once dirname( __FILE__ ) . '/config.php';
|
22 |
|
10 |
exit;
|
11 |
}
|
12 |
|
13 |
+
$this_sdk_version = '1.1.6.2';
|
14 |
+
|
15 |
+
#region SDK Selection Logic --------------------------------------------------------------------
|
16 |
+
|
17 |
+
/**
|
18 |
+
* Special logic added on 1.1.6 to make sure that every Freemius powered plugin
|
19 |
+
* will ALWAYS be loaded with the newest SDK from the active Freemius powered plugins.
|
20 |
+
*
|
21 |
+
* Since Freemius SDK is backward compatible, this will make sure that all Freemius powered
|
22 |
+
* plugins will run correctly.
|
23 |
+
*
|
24 |
+
* @since 1.1.6
|
25 |
+
*/
|
26 |
+
|
27 |
+
global $fs_active_plugins;
|
28 |
+
|
29 |
+
$this_sdk_relative_path = plugin_basename( dirname( __FILE__ ) );
|
30 |
+
|
31 |
+
if ( ! isset( $fs_active_plugins ) ) {
|
32 |
+
// Require SDK essentials.
|
33 |
+
require_once dirname( __FILE__ ) . '/includes/fs-essential-functions.php';
|
34 |
+
|
35 |
+
// Load all Freemius powered active plugins.
|
36 |
+
$fs_active_plugins = get_option( 'fs_active_plugins', new stdClass() );
|
37 |
+
|
38 |
+
if ( ! isset( $fs_active_plugins->plugins ) ) {
|
39 |
+
$fs_active_plugins->plugins = array();
|
40 |
+
}
|
41 |
+
}
|
42 |
+
|
43 |
+
// Update current SDK info based on the SDK path.
|
44 |
+
if ( ! isset( $fs_active_plugins->plugins[ $this_sdk_relative_path ] ) ||
|
45 |
+
$this_sdk_version != $fs_active_plugins->plugins[ $this_sdk_relative_path ]->version
|
46 |
+
) {
|
47 |
+
$fs_active_plugins->plugins[ $this_sdk_relative_path ] = (object) array(
|
48 |
+
'version' => $this_sdk_version,
|
49 |
+
'timestamp' => time(),
|
50 |
+
'plugin_path' => plugin_basename( fs_find_caller_plugin_file() ),
|
51 |
+
);
|
52 |
+
}
|
53 |
+
|
54 |
+
$is_current_sdk_newest = isset( $fs_active_plugins->newest ) && ( $this_sdk_relative_path == $fs_active_plugins->newest->sdk_path );
|
55 |
+
|
56 |
+
if ( ! isset( $fs_active_plugins->newest ) ) {
|
57 |
+
/**
|
58 |
+
* This will be executed only once, for the first time a Freemius powered plugin is activated.
|
59 |
+
*/
|
60 |
+
fs_update_sdk_newest_version( $this_sdk_relative_path );
|
61 |
+
|
62 |
+
$is_current_sdk_newest = true;
|
63 |
+
} else if ( version_compare( $fs_active_plugins->newest->version, $this_sdk_version, '<' ) ) {
|
64 |
+
/**
|
65 |
+
* Current SDK is newer than the newest stored SDK.
|
66 |
+
*/
|
67 |
+
fs_update_sdk_newest_version( $this_sdk_relative_path );
|
68 |
+
|
69 |
+
if ( class_exists( 'Freemius' ) ) {
|
70 |
+
// Older SDK version was already loaded.
|
71 |
+
|
72 |
+
if ( ! $fs_active_plugins->newest->in_activation ) {
|
73 |
+
// Re-order plugins to load this plugin first.
|
74 |
+
fs_newest_sdk_plugin_first();
|
75 |
+
}
|
76 |
+
|
77 |
+
// Refresh page.
|
78 |
+
if ( fs_redirect( $_SERVER['REQUEST_URI'] ) ) {
|
79 |
+
exit();
|
80 |
+
}
|
81 |
+
}
|
82 |
+
} else {
|
83 |
+
if ( ! function_exists( 'get_plugins' ) ) {
|
84 |
+
require_once( ABSPATH . 'wp-admin/includes/plugin.php' );
|
85 |
+
}
|
86 |
+
|
87 |
+
$is_newest_sdk_plugin_activate = is_plugin_active( $fs_active_plugins->newest->plugin_path );
|
88 |
+
|
89 |
+
if ( $is_current_sdk_newest &&
|
90 |
+
! $is_newest_sdk_plugin_activate &&
|
91 |
+
! $fs_active_plugins->newest->in_activation
|
92 |
+
) {
|
93 |
+
// If current SDK is the newest and the plugin is NOT active, it means
|
94 |
+
// that the current plugin in activation mode.
|
95 |
+
$fs_active_plugins->newest->in_activation = true;
|
96 |
+
update_option( 'fs_active_plugins', $fs_active_plugins );
|
97 |
+
}
|
98 |
+
|
99 |
+
$is_newest_sdk_path_valid = ( $is_newest_sdk_plugin_activate || $fs_active_plugins->newest->in_activation ) && file_exists( fs_normalize_path( WP_PLUGIN_DIR . '/' . $this_sdk_relative_path . '/start.php' ) );
|
100 |
+
|
101 |
+
if ( ! $is_newest_sdk_path_valid && ! $is_current_sdk_newest ) {
|
102 |
+
// Plugin with newest SDK is no longer active, or SDK was moved to a different location.
|
103 |
+
unset( $fs_active_plugins->plugins[ $fs_active_plugins->newest->sdk_path ] );
|
104 |
+
}
|
105 |
+
|
106 |
+
if ( ! ( $is_newest_sdk_plugin_activate || $fs_active_plugins->newest->in_activation ) ||
|
107 |
+
! $is_newest_sdk_path_valid ||
|
108 |
+
// Is newest SDK downgraded.
|
109 |
+
( $this_sdk_relative_path == $fs_active_plugins->newest->sdk_path &&
|
110 |
+
version_compare( $fs_active_plugins->newest->version, $this_sdk_version, '>' ) )
|
111 |
+
) {
|
112 |
+
/**
|
113 |
+
* Plugin with newest SDK is no longer active.
|
114 |
+
* OR
|
115 |
+
* The newest SDK was in the current plugin. BUT, seems like the version of
|
116 |
+
* the SDK was downgraded to a lower SDK.
|
117 |
+
*/
|
118 |
+
// Find the active plugin with the newest SDK version and update the newest reference.
|
119 |
+
fs_fallback_to_newest_active_sdk();
|
120 |
+
} else {
|
121 |
+
if ( $is_newest_sdk_plugin_activate &&
|
122 |
+
$this_sdk_relative_path == $fs_active_plugins->newest->sdk_path &&
|
123 |
+
( $fs_active_plugins->newest->in_activation ||
|
124 |
+
( class_exists( 'Freemius' ) && ( ! defined( 'WP_FS__SDK_VERSION' ) || version_compare( WP_FS__SDK_VERSION, $this_sdk_version, '<' ) ) )
|
125 |
+
)
|
126 |
+
|
127 |
+
) {
|
128 |
+
if ( $fs_active_plugins->newest->in_activation ) {
|
129 |
+
// Plugin no more in activation.
|
130 |
+
$fs_active_plugins->newest->in_activation = false;
|
131 |
+
update_option( 'fs_active_plugins', $fs_active_plugins );
|
132 |
+
}
|
133 |
+
|
134 |
+
// Reorder plugins to load plugin with newest SDK first.
|
135 |
+
if ( fs_newest_sdk_plugin_first() ) {
|
136 |
+
// Refresh page after re-order to make sure activated plugin loads newest SDK.
|
137 |
+
if ( class_exists( 'Freemius' ) ) {
|
138 |
+
if ( fs_redirect( $_SERVER['REQUEST_URI'] ) ) {
|
139 |
+
exit();
|
140 |
+
}
|
141 |
+
}
|
142 |
+
}
|
143 |
+
}
|
144 |
+
}
|
145 |
+
}
|
146 |
+
|
147 |
+
if ( class_exists( 'Freemius' ) ) {
|
148 |
+
// SDK was already loaded.
|
149 |
+
return;
|
150 |
+
}
|
151 |
+
|
152 |
+
if ( version_compare( $this_sdk_version, $fs_active_plugins->newest->version, '<' ) ) {
|
153 |
+
$newest_sdk_starter = fs_normalize_path( WP_PLUGIN_DIR . '/' . $fs_active_plugins->newest->sdk_path . '/start.php' );
|
154 |
+
|
155 |
+
if ( file_exists( $newest_sdk_starter ) ) {
|
156 |
+
// Reorder plugins to load plugin with newest SDK first.
|
157 |
+
fs_newest_sdk_plugin_first();
|
158 |
+
|
159 |
+
// There's a newer SDK version, load it instead of the current one!
|
160 |
+
require_once $newest_sdk_starter;
|
161 |
+
|
162 |
+
return;
|
163 |
+
}
|
164 |
+
}
|
165 |
+
|
166 |
+
#endregion SDK Selection Logic --------------------------------------------------------------------
|
167 |
+
|
168 |
+
#region Hooks & Filters Collection --------------------------------------------------------------------
|
169 |
+
|
170 |
/**
|
171 |
+
* Freemius hooks (actions & filters) tags structure:
|
172 |
+
*
|
173 |
+
* fs_{filter/action_name}_{plugin_slug}
|
174 |
+
*
|
175 |
+
* --------------------------------------------------------
|
176 |
+
*
|
177 |
+
* Usage with WordPress' add_action() / add_filter():
|
178 |
+
*
|
179 |
+
* add_action('fs_{filter/action_name}_{plugin_slug}', $callable);
|
180 |
+
*
|
181 |
+
* --------------------------------------------------------
|
182 |
+
*
|
183 |
+
* Usage with Freemius' instance add_action() / add_filter():
|
184 |
+
*
|
185 |
+
* // No need to add 'fs_' prefix nor '_{plugin_slug}' suffix.
|
186 |
+
* my_freemius()->add_action('{action_name}', $callable);
|
187 |
+
*
|
188 |
+
* --------------------------------------------------------
|
189 |
+
*
|
190 |
+
* Freemius filters collection:
|
191 |
+
*
|
192 |
+
* fs_connect_url_{plugin_slug}
|
193 |
+
* fs_trial_promotion_message_{plugin_slug}
|
194 |
+
* fs_is_long_term_user_{plugin_slug}
|
195 |
+
* fs_uninstall_reasons_{plugin_slug}
|
196 |
+
* fs_is_plugin_update_{plugin_slug}
|
197 |
+
* fs_api_domains_{plugin_slug}
|
198 |
+
* fs_email_template_sections_{plugin_slug}
|
199 |
+
* fs_support_forum_submenu_{plugin_slug}
|
200 |
+
* fs_support_forum_url_{plugin_slug}
|
201 |
+
* fs_connect_message_{plugin_slug}
|
202 |
+
* fs_connect_message_on_update_{plugin_slug}
|
203 |
+
* fs_uninstall_confirmation_message_{plugin_slug}
|
204 |
+
* fs_pending_activation_message_{plugin_slug}
|
205 |
+
*
|
206 |
+
* --------------------------------------------------------
|
207 |
+
*
|
208 |
+
* Freemius actions collection:
|
209 |
+
*
|
210 |
+
* fs_after_license_loaded_{plugin_slug}
|
211 |
+
* fs_after_license_change_{plugin_slug}
|
212 |
+
* fs_after_plans_sync_{plugin_slug}
|
213 |
+
*
|
214 |
+
* fs_after_account_details_{plugin_slug}
|
215 |
+
* fs_after_account_user_sync_{plugin_slug}
|
216 |
+
* fs_after_account_plan_sync_{plugin_slug}
|
217 |
+
* fs_before_account_load_{plugin_slug}
|
218 |
+
* fs_after_account_connection_{plugin_slug}
|
219 |
+
* fs_account_property_edit_{plugin_slug}
|
220 |
+
* fs_account_email_verified_{plugin_slug}
|
221 |
+
* fs_account_page_load_before_departure_{plugin_slug}
|
222 |
+
* fs_before_account_delete_{plugin_slug}
|
223 |
+
* fs_after_account_delete_{plugin_slug}
|
224 |
+
*
|
225 |
+
* fs_sdk_version_update_{plugin_slug}
|
226 |
+
* fs_plugin_version_update_{plugin_slug}
|
227 |
+
*
|
228 |
+
* fs_initiated_{plugin_slug}
|
229 |
+
* fs_after_init_plugin_registered_{plugin_slug}
|
230 |
+
* fs_after_init_plugin_anonymous_{plugin_slug}
|
231 |
+
* fs_after_init_plugin_pending_activations_{plugin_slug}
|
232 |
+
* fs_after_init_addon_registered_{plugin_slug}
|
233 |
+
* fs_after_init_addon_anonymous_{plugin_slug}
|
234 |
+
* fs_after_init_addon_pending_activations_{plugin_slug}
|
235 |
+
*
|
236 |
+
* fs_after_premium_version_activation_{plugin_slug}
|
237 |
+
* fs_after_free_version_reactivation_{plugin_slug}
|
238 |
+
*
|
239 |
+
* fs_after_uninstall_{plugin_slug}
|
240 |
+
* fs_before_admin_menu_init_{plugin_slug}
|
241 |
*/
|
242 |
|
243 |
+
#endregion Hooks & Filters Collection --------------------------------------------------------------------
|
244 |
+
|
245 |
if ( ! class_exists( 'Freemius' ) ) {
|
246 |
|
247 |
+
if ( ! defined( 'WP_FS__SDK_VERSION' ) ) {
|
248 |
+
define( 'WP_FS__SDK_VERSION', $this_sdk_version );
|
249 |
+
}
|
250 |
+
|
251 |
// Configuration should be loaded first.
|
252 |
require_once dirname( __FILE__ ) . '/config.php';
|
253 |
|
classes/freemius/templates/account.php
CHANGED
@@ -29,14 +29,15 @@
|
|
29 |
|
30 |
<div class="wrap">
|
31 |
<h2 class="nav-tab-wrapper">
|
32 |
-
<a href="<?php $fs->get_account_url() ?>" class="nav-tab nav-tab-active"><?php _efs( 'account' ) ?></a>
|
33 |
<?php if ( $fs->_has_addons() ) : ?>
|
34 |
-
<a href="<?php echo $fs->_get_admin_page_url( 'addons' ) ?>"
|
|
|
35 |
<?php endif ?>
|
36 |
<?php if ( $fs->is_not_paying() && $fs->has_paid_plan() ) : ?>
|
37 |
-
<a href="<?php echo $fs->get_upgrade_url() ?>" class="nav-tab"><?php _efs( 'upgrade' ) ?></a>
|
38 |
<?php if ( ! $fs->is_trial_utilized() && $fs->has_trial_plan() ) : ?>
|
39 |
-
<a href="<?php echo $fs->get_trial_url() ?>" class="nav-tab"><?php _efs( 'free-trial' ) ?></a>
|
40 |
<?php endif ?>
|
41 |
<?php endif ?>
|
42 |
</h2>
|
@@ -46,7 +47,7 @@
|
|
46 |
<div class="has-sidebar has-right-sidebar">
|
47 |
<div class="has-sidebar-content">
|
48 |
<div class="postbox">
|
49 |
-
<h3><?php _efs( 'account-details' ) ?></h3>
|
50 |
|
51 |
<div class="fs-header-actions">
|
52 |
<ul>
|
@@ -56,11 +57,19 @@
|
|
56 |
<?php wp_nonce_field( 'delete_account' ) ?>
|
57 |
<a href="#" onclick="if (confirm('<?php
|
58 |
if ( $is_active_subscription ) {
|
59 |
-
echo esc_attr( sprintf( __fs( 'delete-account-x-confirm' ), $plan->title ) );
|
60 |
} else {
|
61 |
-
_efs( 'delete-account-confirm' );
|
62 |
}
|
63 |
-
?>')) this.parentNode.submit(); return false;"
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
64 |
</form>
|
65 |
</li>
|
66 |
<?php if ( $is_paying ) : ?>
|
@@ -70,7 +79,7 @@
|
|
70 |
<input type="hidden" name="fs_action" value="deactivate_license">
|
71 |
<?php wp_nonce_field( 'deactivate_license' ) ?>
|
72 |
<a href="#"
|
73 |
-
onclick="if (confirm('<?php _efs( 'deactivate-license-confirm' ) ?>')) this.parentNode.submit(); return false;"
|
74 |
</form>
|
75 |
</li>
|
76 |
<?php if ( ! $license->is_lifetime() &&
|
@@ -82,17 +91,17 @@
|
|
82 |
<input type="hidden" name="fs_action" value="downgrade_account">
|
83 |
<?php wp_nonce_field( 'downgrade_account' ) ?>
|
84 |
<a href="#"
|
85 |
-
onclick="if (confirm('<?php printf( __fs( 'downgrade-x-confirm' ), $plan->title, human_time_diff( time(), strtotime( $license->expiration ) ) ) ?> <?php if ( ! $license->is_block_features ) {
|
86 |
-
printf( __fs( 'after-downgrade-non-blocking' ), $plan->title );
|
87 |
} else {
|
88 |
-
printf( __fs( 'after-downgrade-blocking' ), $plan->title );
|
89 |
-
}?> <?php _efs( 'proceed-confirmation' ) ?>')) this.parentNode.submit(); return false;"
|
90 |
</form>
|
91 |
</li>
|
92 |
<?php endif ?>
|
93 |
<li>
|
94 |
•
|
95 |
-
<a href="<?php echo $fs->get_upgrade_url() ?>"
|
96 |
</li>
|
97 |
<?php endif ?>
|
98 |
</ul>
|
@@ -103,43 +112,43 @@
|
|
103 |
$profile = array();
|
104 |
$profile[] = array(
|
105 |
'id' => 'user_name',
|
106 |
-
'title' => __fs( 'name' ),
|
107 |
'value' => $name
|
108 |
);
|
109 |
// if (isset($user->email) && false !== strpos($user->email, '@'))
|
110 |
$profile[] = array(
|
111 |
'id' => 'email',
|
112 |
-
'title' => __fs( 'email' ),
|
113 |
'value' => $user->email
|
114 |
);
|
115 |
if ( is_numeric( $user->id ) ) {
|
116 |
$profile[] = array(
|
117 |
'id' => 'user_id',
|
118 |
-
'title' => __fs( 'user-id' ),
|
119 |
'value' => $user->id
|
120 |
);
|
121 |
}
|
122 |
|
123 |
$profile[] = array(
|
124 |
'id' => 'site_id',
|
125 |
-
'title' => __fs( 'site-id' ),
|
126 |
'value' => is_string( $site->id ) ?
|
127 |
$site->id :
|
128 |
-
__fs( 'no-id' )
|
129 |
);
|
130 |
|
131 |
$profile[] = array(
|
132 |
'id' => 'site_public_key',
|
133 |
-
'title' => __fs( 'public-key' ),
|
134 |
'value' => $site->public_key
|
135 |
);
|
136 |
|
137 |
$profile[] = array(
|
138 |
'id' => 'site_secret_key',
|
139 |
-
'title' => __fs( 'secret-key' ),
|
140 |
'value' => ( ( is_string( $site->secret_key ) ) ?
|
141 |
$site->secret_key :
|
142 |
-
__fs( 'no-secret' )
|
143 |
)
|
144 |
);
|
145 |
|
@@ -148,24 +157,24 @@
|
|
148 |
|
149 |
$profile[] = array(
|
150 |
'id' => 'plan',
|
151 |
-
'title' => __fs( 'plan' ),
|
152 |
'value' => ( is_string( $trial_plan->name ) ?
|
153 |
strtoupper( $trial_plan->title ) . ' ' :
|
154 |
-
'' ) . strtoupper( __fs( 'trial' ) )
|
155 |
);
|
156 |
} else {
|
157 |
$profile[] = array(
|
158 |
'id' => 'plan',
|
159 |
-
'title' => __fs( 'plan' ),
|
160 |
'value' => is_string( $site->plan->name ) ?
|
161 |
strtoupper( $site->plan->title ) :
|
162 |
-
strtoupper( __fs( 'free' ) )
|
163 |
);
|
164 |
}
|
165 |
|
166 |
$profile[] = array(
|
167 |
'id' => 'version',
|
168 |
-
'title' => __fs( 'version' ),
|
169 |
'value' => $fs->get_plugin_version()
|
170 |
);
|
171 |
?>
|
@@ -185,16 +194,16 @@
|
|
185 |
<td>
|
186 |
<code><?php echo htmlspecialchars( $p['value'] ) ?></code>
|
187 |
<?php if ( 'email' === $p['id'] && ! $user->is_verified() ) : ?>
|
188 |
-
<label><?php _efs( 'not-verified' ) ?></label>
|
189 |
<?php endif ?>
|
190 |
<?php if ( 'plan' === $p['id'] ) : ?>
|
191 |
<?php if ( $fs->is_trial() ) : ?>
|
192 |
-
<label><?php printf( __fs( 'expires-in' ), human_time_diff( time(), strtotime( $site->trial_ends ) ) ) ?></label>
|
193 |
<?php elseif ( is_object( $license ) && ! $license->is_lifetime() ) : ?>
|
194 |
<?php if ( ! $is_active_subscription && ! $license->is_first_payment_pending() ) : ?>
|
195 |
-
<label><?php printf( __fs( 'expires-in' ), human_time_diff( time(), strtotime( $license->expiration ) ) ) ?></label>
|
196 |
<?php elseif ( $is_active_subscription && ! $subscription->is_first_payment_pending() ) : ?>
|
197 |
-
<label><?php printf( __fs( 'renews-in' ), human_time_diff( time(), strtotime( $subscription->next_payment ) ) ) ?></label>
|
198 |
<?php endif ?>
|
199 |
<?php endif ?>
|
200 |
<?php endif ?>
|
@@ -206,7 +215,7 @@
|
|
206 |
<input type="hidden" name="fs_action" value="verify_email">
|
207 |
<?php wp_nonce_field( 'verify_email' ) ?>
|
208 |
<input type="submit" class="button button-small"
|
209 |
-
value="<?php _efs( 'verify-email' ) ?>">
|
210 |
</form>
|
211 |
<?php endif ?>
|
212 |
<?php if ( 'plan' === $p['id'] ) : ?>
|
@@ -220,10 +229,10 @@
|
|
220 |
<?php wp_nonce_field( 'activate_license' ) ?>
|
221 |
<input type="submit" class="button button-primary"
|
222 |
value="<?php printf(
|
223 |
-
__fs( 'activate-x-plan' ),
|
224 |
$premium_plan->title,
|
225 |
( $site->is_localhost() && $license->is_free_localhost ) ?
|
226 |
-
'[' . __fs( 'localhost' ) . ']' :
|
227 |
( 1 < $license->left() ? $license->left() . ' left' : '' )
|
228 |
) ?> ">
|
229 |
</form>
|
@@ -231,7 +240,7 @@
|
|
231 |
<form action="<?php echo $fs->_get_admin_page_url( 'account' ) ?>"
|
232 |
method="POST" class="button-group">
|
233 |
<input type="submit" class="button"
|
234 |
-
value="<?php _efs( 'sync-license' ) ?>">
|
235 |
<input type="hidden" name="fs_action"
|
236 |
value="<?php echo $slug ?>_sync_license">
|
237 |
<?php wp_nonce_field( $slug . '_sync_license' ) ?>
|
@@ -239,8 +248,8 @@
|
|
239 |
class="button<?php if ( ! $is_paying ) {
|
240 |
echo ' button-primary';
|
241 |
} ?> button-upgrade"><?php ( ! $is_paying ) ?
|
242 |
-
_efs( 'upgrade' ) :
|
243 |
-
_efs( 'change-plan' )
|
244 |
?></a>
|
245 |
</form>
|
246 |
<?php endif ?>
|
@@ -250,10 +259,10 @@
|
|
250 |
<?php if ( $is_paying || $fs->is_trial() ) : ?>
|
251 |
<?php if ( ! $fs->is_allowed_to_install() ) : ?>
|
252 |
<a target="_blank" class="button button-primary"
|
253 |
-
href="<?php echo $fs->_get_latest_download_local_url() ?>"><?php echo sprintf( __fs( 'download-x-version' ), $site->plan->title ) . ( is_object( $update ) ? ' [' . $update->version . ']' : '' ) ?></a>
|
254 |
<?php elseif ( is_object( $update ) ) : ?>
|
255 |
<a class="button button-primary"
|
256 |
-
href="<?php echo wp_nonce_url( self_admin_url( 'update.php?action=upgrade-plugin&plugin=' . $fs->get_plugin_basename() ), 'upgrade-plugin_' . $fs->get_plugin_basename() ) ?>"><?php echo __fs( 'install-update-now' ) . ' [' . $update->version . ']' ?></a>
|
257 |
<?php endif ?>
|
258 |
<?php endif; ?>
|
259 |
</div>
|
@@ -265,7 +274,7 @@
|
|
265 |
) ) )
|
266 |
) : ?>
|
267 |
<form action="<?php echo $fs->_get_admin_page_url( 'account' ) ?>" method="POST"
|
268 |
-
onsubmit="var val = prompt('<?php printf( __fs( 'what-is-your-x' ), $p['title'] ) ?>', '<?php echo $p['value'] ?>'); if (null == val || '' === val) return false; jQuery('input[name=fs_<?php echo $p['id'] ?>_<?php echo $slug ?>]').val(val); return true;">
|
269 |
<input type="hidden" name="fs_action" value="update_<?php echo $p['id'] ?>">
|
270 |
<input type="hidden" name="fs_<?php echo $p['id'] ?>_<?php echo $slug ?>"
|
271 |
value="">
|
@@ -300,9 +309,9 @@
|
|
300 |
<thead>
|
301 |
<tr>
|
302 |
<th></th>
|
303 |
-
<th><?php _efs( 'version' ) ?></th>
|
304 |
-
<th><?php _efs( 'plan' ) ?></th>
|
305 |
-
<th><?php _efs( 'expiration' ) ?></th>
|
306 |
<th></th>
|
307 |
<?php if ( defined( 'WP_FS__DEV_MODE' ) && WP_FS__DEV_MODE ) : ?>
|
308 |
<th></th>
|
@@ -332,7 +341,7 @@
|
|
332 |
?>
|
333 |
<?php if ( $fs_addon->is_not_paying() ) : ?>
|
334 |
<?php if ( $is_current_license_expired ) : ?>
|
335 |
-
<td><?php _efs( 'expired' ) ?></td>
|
336 |
<?php endif ?>
|
337 |
<?php $premium_license = $fs_addon->_get_available_premium_license() ?>
|
338 |
<td<?php if ( ! $is_current_license_expired ) {
|
@@ -343,7 +352,7 @@
|
|
343 |
<?php fs_ui_action_button(
|
344 |
$slug, 'account',
|
345 |
'activate_license',
|
346 |
-
sprintf( __fs( 'activate-x-plan' ), $fs_addon->get_plan_title(), ( $site->is_localhost() && $premium_license->is_free_localhost ) ? '[localhost]' : ( 1 < $premium_license->left() ? $premium_license->left() . ' left' : '' ) ),
|
347 |
array( 'plugin_id' => $addon_id )
|
348 |
) ?>
|
349 |
<?php else : ?>
|
@@ -351,16 +360,16 @@
|
|
351 |
<?php fs_ui_action_button(
|
352 |
$slug, 'account',
|
353 |
$slug . '_sync_license',
|
354 |
-
__fs( 'sync-license' ),
|
355 |
array( 'plugin_id' => $addon_id ),
|
356 |
false
|
357 |
) ?>
|
358 |
<?php echo sprintf( '<a href="%s" class="thickbox button button-primary" aria-label="%s" data-title="%s">%s</a>',
|
359 |
esc_url( network_admin_url( 'plugin-install.php?tab=plugin-information&parent_plugin_id=' . $fs->get_id() . '&plugin=' . $addon->slug .
|
360 |
'&TB_iframe=true&width=600&height=550' ) ),
|
361 |
-
esc_attr( sprintf( __fs( 'more-information-about-x' ), $addon->title ) ),
|
362 |
esc_attr( $addon->title ),
|
363 |
-
__fs( 'upgrade' )
|
364 |
) ?>
|
365 |
</div>
|
366 |
<?php endif ?>
|
@@ -369,12 +378,12 @@
|
|
369 |
<?php if ( is_object( $current_license ) ) : ?>
|
370 |
<td><?php
|
371 |
if ( $current_license->is_lifetime() ) {
|
372 |
-
_efs( 'no-expiration' );
|
373 |
} else if ( $current_license->is_expired() ) {
|
374 |
-
_efs( 'expired' );
|
375 |
} else {
|
376 |
echo sprintf(
|
377 |
-
__fs( 'in-x' ),
|
378 |
human_time_diff( time(), strtotime( $current_license->expiration ) )
|
379 |
);
|
380 |
}
|
@@ -383,7 +392,7 @@
|
|
383 |
<?php fs_ui_action_button(
|
384 |
$slug, 'account',
|
385 |
'deactivate_license',
|
386 |
-
__fs( 'deactivate-license' ),
|
387 |
array( 'plugin_id' => $addon_id ),
|
388 |
false
|
389 |
) ?>
|
@@ -398,15 +407,15 @@
|
|
398 |
<?php $addon_file = $fs->get_addon_basename( $addon->slug ) ?>
|
399 |
<a class="button button-primary"
|
400 |
href="<?php echo wp_nonce_url( 'plugins.php?action=activate&plugin=' . $addon_file, 'activate-plugin_' . $addon_file ) ?>"
|
401 |
-
title="<?php esc_attr( __fs( 'activate-this-addon' ) ) ?>"
|
402 |
-
class="edit"><?php _efs( 'activate' ) ?></a>
|
403 |
<?php else : ?>
|
404 |
<?php if ( $fs->is_allowed_to_install() ) : ?>
|
405 |
<a class="button button-primary"
|
406 |
-
href="<?php echo wp_nonce_url( self_admin_url( 'update.php?action=install-plugin&plugin=' . $addon->slug ), 'install-plugin_' . $addon->slug ) ?>"><?php _efs( 'install-now' ) ?></a>
|
407 |
<?php else : ?>
|
408 |
<a target="_blank" class="button button-primary"
|
409 |
-
href="<?php echo $fs->_get_latest_download_local_url( $addon_id ) ?>"><?php _efs( 'download-latest' ) ?></a>
|
410 |
<?php endif ?>
|
411 |
<?php endif ?>
|
412 |
</td>
|
@@ -418,7 +427,7 @@
|
|
418 |
fs_ui_action_button(
|
419 |
$slug, 'account',
|
420 |
'delete_account',
|
421 |
-
__fs( 'delete' ),
|
422 |
array( 'plugin_id' => $addon_id ),
|
423 |
false
|
424 |
);
|
29 |
|
30 |
<div class="wrap">
|
31 |
<h2 class="nav-tab-wrapper">
|
32 |
+
<a href="<?php $fs->get_account_url() ?>" class="nav-tab nav-tab-active"><?php _efs( 'account', $slug ) ?></a>
|
33 |
<?php if ( $fs->_has_addons() ) : ?>
|
34 |
+
<a href="<?php echo $fs->_get_admin_page_url( 'addons' ) ?>"
|
35 |
+
class="nav-tab"><?php _efs( 'add-ons', $slug ) ?></a>
|
36 |
<?php endif ?>
|
37 |
<?php if ( $fs->is_not_paying() && $fs->has_paid_plan() ) : ?>
|
38 |
+
<a href="<?php echo $fs->get_upgrade_url() ?>" class="nav-tab"><?php _efs( 'upgrade', $slug ) ?></a>
|
39 |
<?php if ( ! $fs->is_trial_utilized() && $fs->has_trial_plan() ) : ?>
|
40 |
+
<a href="<?php echo $fs->get_trial_url() ?>" class="nav-tab"><?php _efs( 'free-trial', $slug ) ?></a>
|
41 |
<?php endif ?>
|
42 |
<?php endif ?>
|
43 |
</h2>
|
47 |
<div class="has-sidebar has-right-sidebar">
|
48 |
<div class="has-sidebar-content">
|
49 |
<div class="postbox">
|
50 |
+
<h3><?php _efs( 'account-details', $slug ) ?></h3>
|
51 |
|
52 |
<div class="fs-header-actions">
|
53 |
<ul>
|
57 |
<?php wp_nonce_field( 'delete_account' ) ?>
|
58 |
<a href="#" onclick="if (confirm('<?php
|
59 |
if ( $is_active_subscription ) {
|
60 |
+
echo esc_attr( sprintf( __fs( 'delete-account-x-confirm', $slug ), $plan->title ) );
|
61 |
} else {
|
62 |
+
_efs( 'delete-account-confirm', $slug );
|
63 |
}
|
64 |
+
?>')) this.parentNode.submit(); return false;"><i class="dashicons dashicons-no"></i> <?php _efs( 'delete-account', $slug ) ?></a>
|
65 |
+
</form>
|
66 |
+
</li>
|
67 |
+
<li>
|
68 |
+
•
|
69 |
+
<form action="<?php echo $fs->_get_admin_page_url( 'account' ) ?>" method="POST">
|
70 |
+
<input type="hidden" name="fs_action" value="<?php echo $slug ?>_sync_license">
|
71 |
+
<?php wp_nonce_field( $slug . '_sync_license' ) ?>
|
72 |
+
<a href="#" onclick="this.parentNode.submit(); return false;"><i class="dashicons dashicons-image-rotate"></i> <?php _efs( 'sync', $slug ) ?></a>
|
73 |
</form>
|
74 |
</li>
|
75 |
<?php if ( $is_paying ) : ?>
|
79 |
<input type="hidden" name="fs_action" value="deactivate_license">
|
80 |
<?php wp_nonce_field( 'deactivate_license' ) ?>
|
81 |
<a href="#"
|
82 |
+
onclick="if (confirm('<?php _efs( 'deactivate-license-confirm', $slug ) ?>')) this.parentNode.submit(); return false;"><i class="dashicons dashicons-admin-network"></i> <?php _efs( 'deactivate-license', $slug ) ?></a>
|
83 |
</form>
|
84 |
</li>
|
85 |
<?php if ( ! $license->is_lifetime() &&
|
91 |
<input type="hidden" name="fs_action" value="downgrade_account">
|
92 |
<?php wp_nonce_field( 'downgrade_account' ) ?>
|
93 |
<a href="#"
|
94 |
+
onclick="if (confirm('<?php printf( __fs( 'downgrade-x-confirm', $slug ), $plan->title, human_time_diff( time(), strtotime( $license->expiration ) ) ) ?> <?php if ( ! $license->is_block_features ) {
|
95 |
+
printf( __fs( 'after-downgrade-non-blocking', $slug ), $plan->title );
|
96 |
} else {
|
97 |
+
printf( __fs( 'after-downgrade-blocking', $slug ), $plan->title );
|
98 |
+
}?> <?php _efs( 'proceed-confirmation', $slug ) ?>')) this.parentNode.submit(); return false;"><i class="dashicons dashicons-download"></i> <?php _efs( 'downgrade', $slug ) ?></a>
|
99 |
</form>
|
100 |
</li>
|
101 |
<?php endif ?>
|
102 |
<li>
|
103 |
•
|
104 |
+
<a href="<?php echo $fs->get_upgrade_url() ?>"><i class="dashicons dashicons-grid-view"></i> <?php _efs( 'change-plan', $slug ) ?></a>
|
105 |
</li>
|
106 |
<?php endif ?>
|
107 |
</ul>
|
112 |
$profile = array();
|
113 |
$profile[] = array(
|
114 |
'id' => 'user_name',
|
115 |
+
'title' => __fs( 'name', $slug ),
|
116 |
'value' => $name
|
117 |
);
|
118 |
// if (isset($user->email) && false !== strpos($user->email, '@'))
|
119 |
$profile[] = array(
|
120 |
'id' => 'email',
|
121 |
+
'title' => __fs( 'email', $slug ),
|
122 |
'value' => $user->email
|
123 |
);
|
124 |
if ( is_numeric( $user->id ) ) {
|
125 |
$profile[] = array(
|
126 |
'id' => 'user_id',
|
127 |
+
'title' => __fs( 'user-id', $slug ),
|
128 |
'value' => $user->id
|
129 |
);
|
130 |
}
|
131 |
|
132 |
$profile[] = array(
|
133 |
'id' => 'site_id',
|
134 |
+
'title' => __fs( 'site-id', $slug ),
|
135 |
'value' => is_string( $site->id ) ?
|
136 |
$site->id :
|
137 |
+
__fs( 'no-id', $slug )
|
138 |
);
|
139 |
|
140 |
$profile[] = array(
|
141 |
'id' => 'site_public_key',
|
142 |
+
'title' => __fs( 'public-key', $slug ),
|
143 |
'value' => $site->public_key
|
144 |
);
|
145 |
|
146 |
$profile[] = array(
|
147 |
'id' => 'site_secret_key',
|
148 |
+
'title' => __fs( 'secret-key', $slug ),
|
149 |
'value' => ( ( is_string( $site->secret_key ) ) ?
|
150 |
$site->secret_key :
|
151 |
+
__fs( 'no-secret', $slug )
|
152 |
)
|
153 |
);
|
154 |
|
157 |
|
158 |
$profile[] = array(
|
159 |
'id' => 'plan',
|
160 |
+
'title' => __fs( 'plan', $slug ),
|
161 |
'value' => ( is_string( $trial_plan->name ) ?
|
162 |
strtoupper( $trial_plan->title ) . ' ' :
|
163 |
+
'' ) . strtoupper( __fs( 'trial', $slug ) )
|
164 |
);
|
165 |
} else {
|
166 |
$profile[] = array(
|
167 |
'id' => 'plan',
|
168 |
+
'title' => __fs( 'plan', $slug ),
|
169 |
'value' => is_string( $site->plan->name ) ?
|
170 |
strtoupper( $site->plan->title ) :
|
171 |
+
strtoupper( __fs( 'free', $slug ) )
|
172 |
);
|
173 |
}
|
174 |
|
175 |
$profile[] = array(
|
176 |
'id' => 'version',
|
177 |
+
'title' => __fs( 'version', $slug ),
|
178 |
'value' => $fs->get_plugin_version()
|
179 |
);
|
180 |
?>
|
194 |
<td>
|
195 |
<code><?php echo htmlspecialchars( $p['value'] ) ?></code>
|
196 |
<?php if ( 'email' === $p['id'] && ! $user->is_verified() ) : ?>
|
197 |
+
<label><?php _efs( 'not-verified', $slug ) ?></label>
|
198 |
<?php endif ?>
|
199 |
<?php if ( 'plan' === $p['id'] ) : ?>
|
200 |
<?php if ( $fs->is_trial() ) : ?>
|
201 |
+
<label><?php printf( __fs( 'expires-in', $slug ), human_time_diff( time(), strtotime( $site->trial_ends ) ) ) ?></label>
|
202 |
<?php elseif ( is_object( $license ) && ! $license->is_lifetime() ) : ?>
|
203 |
<?php if ( ! $is_active_subscription && ! $license->is_first_payment_pending() ) : ?>
|
204 |
+
<label><?php printf( __fs( 'expires-in', $slug ), human_time_diff( time(), strtotime( $license->expiration ) ) ) ?></label>
|
205 |
<?php elseif ( $is_active_subscription && ! $subscription->is_first_payment_pending() ) : ?>
|
206 |
+
<label><?php printf( __fs( 'renews-in', $slug ), human_time_diff( time(), strtotime( $subscription->next_payment ) ) ) ?></label>
|
207 |
<?php endif ?>
|
208 |
<?php endif ?>
|
209 |
<?php endif ?>
|
215 |
<input type="hidden" name="fs_action" value="verify_email">
|
216 |
<?php wp_nonce_field( 'verify_email' ) ?>
|
217 |
<input type="submit" class="button button-small"
|
218 |
+
value="<?php _efs( 'verify-email', $slug ) ?>">
|
219 |
</form>
|
220 |
<?php endif ?>
|
221 |
<?php if ( 'plan' === $p['id'] ) : ?>
|
229 |
<?php wp_nonce_field( 'activate_license' ) ?>
|
230 |
<input type="submit" class="button button-primary"
|
231 |
value="<?php printf(
|
232 |
+
__fs( 'activate-x-plan', $slug ),
|
233 |
$premium_plan->title,
|
234 |
( $site->is_localhost() && $license->is_free_localhost ) ?
|
235 |
+
'[' . __fs( 'localhost', $slug ) . ']' :
|
236 |
( 1 < $license->left() ? $license->left() . ' left' : '' )
|
237 |
) ?> ">
|
238 |
</form>
|
240 |
<form action="<?php echo $fs->_get_admin_page_url( 'account' ) ?>"
|
241 |
method="POST" class="button-group">
|
242 |
<input type="submit" class="button"
|
243 |
+
value="<?php _efs( 'sync-license', $slug ) ?>">
|
244 |
<input type="hidden" name="fs_action"
|
245 |
value="<?php echo $slug ?>_sync_license">
|
246 |
<?php wp_nonce_field( $slug . '_sync_license' ) ?>
|
248 |
class="button<?php if ( ! $is_paying ) {
|
249 |
echo ' button-primary';
|
250 |
} ?> button-upgrade"><?php ( ! $is_paying ) ?
|
251 |
+
_efs( 'upgrade', $slug ) :
|
252 |
+
_efs( 'change-plan', $slug )
|
253 |
?></a>
|
254 |
</form>
|
255 |
<?php endif ?>
|
259 |
<?php if ( $is_paying || $fs->is_trial() ) : ?>
|
260 |
<?php if ( ! $fs->is_allowed_to_install() ) : ?>
|
261 |
<a target="_blank" class="button button-primary"
|
262 |
+
href="<?php echo $fs->_get_latest_download_local_url() ?>"><?php echo sprintf( __fs( 'download-x-version', $slug ), $site->plan->title ) . ( is_object( $update ) ? ' [' . $update->version . ']' : '' ) ?></a>
|
263 |
<?php elseif ( is_object( $update ) ) : ?>
|
264 |
<a class="button button-primary"
|
265 |
+
href="<?php echo wp_nonce_url( self_admin_url( 'update.php?action=upgrade-plugin&plugin=' . $fs->get_plugin_basename() ), 'upgrade-plugin_' . $fs->get_plugin_basename() ) ?>"><?php echo __fs( 'install-update-now', $slug ) . ' [' . $update->version . ']' ?></a>
|
266 |
<?php endif ?>
|
267 |
<?php endif; ?>
|
268 |
</div>
|
274 |
) ) )
|
275 |
) : ?>
|
276 |
<form action="<?php echo $fs->_get_admin_page_url( 'account' ) ?>" method="POST"
|
277 |
+
onsubmit="var val = prompt('<?php printf( __fs( 'what-is-your-x', $slug ), $p['title'] ) ?>', '<?php echo $p['value'] ?>'); if (null == val || '' === val) return false; jQuery('input[name=fs_<?php echo $p['id'] ?>_<?php echo $slug ?>]').val(val); return true;">
|
278 |
<input type="hidden" name="fs_action" value="update_<?php echo $p['id'] ?>">
|
279 |
<input type="hidden" name="fs_<?php echo $p['id'] ?>_<?php echo $slug ?>"
|
280 |
value="">
|
309 |
<thead>
|
310 |
<tr>
|
311 |
<th></th>
|
312 |
+
<th><?php _efs( 'version', $slug ) ?></th>
|
313 |
+
<th><?php _efs( 'plan', $slug ) ?></th>
|
314 |
+
<th><?php _efs( 'expiration', $slug ) ?></th>
|
315 |
<th></th>
|
316 |
<?php if ( defined( 'WP_FS__DEV_MODE' ) && WP_FS__DEV_MODE ) : ?>
|
317 |
<th></th>
|
341 |
?>
|
342 |
<?php if ( $fs_addon->is_not_paying() ) : ?>
|
343 |
<?php if ( $is_current_license_expired ) : ?>
|
344 |
+
<td><?php _efs( 'expired', $slug ) ?></td>
|
345 |
<?php endif ?>
|
346 |
<?php $premium_license = $fs_addon->_get_available_premium_license() ?>
|
347 |
<td<?php if ( ! $is_current_license_expired ) {
|
352 |
<?php fs_ui_action_button(
|
353 |
$slug, 'account',
|
354 |
'activate_license',
|
355 |
+
sprintf( __fs( 'activate-x-plan', $slug ), $fs_addon->get_plan_title(), ( $site->is_localhost() && $premium_license->is_free_localhost ) ? '[localhost]' : ( 1 < $premium_license->left() ? $premium_license->left() . ' left' : '' ) ),
|
356 |
array( 'plugin_id' => $addon_id )
|
357 |
) ?>
|
358 |
<?php else : ?>
|
360 |
<?php fs_ui_action_button(
|
361 |
$slug, 'account',
|
362 |
$slug . '_sync_license',
|
363 |
+
__fs( 'sync-license', $slug ),
|
364 |
array( 'plugin_id' => $addon_id ),
|
365 |
false
|
366 |
) ?>
|
367 |
<?php echo sprintf( '<a href="%s" class="thickbox button button-primary" aria-label="%s" data-title="%s">%s</a>',
|
368 |
esc_url( network_admin_url( 'plugin-install.php?tab=plugin-information&parent_plugin_id=' . $fs->get_id() . '&plugin=' . $addon->slug .
|
369 |
'&TB_iframe=true&width=600&height=550' ) ),
|
370 |
+
esc_attr( sprintf( __fs( 'more-information-about-x', $slug ), $addon->title ) ),
|
371 |
esc_attr( $addon->title ),
|
372 |
+
__fs( 'upgrade', $slug )
|
373 |
) ?>
|
374 |
</div>
|
375 |
<?php endif ?>
|
378 |
<?php if ( is_object( $current_license ) ) : ?>
|
379 |
<td><?php
|
380 |
if ( $current_license->is_lifetime() ) {
|
381 |
+
_efs( 'no-expiration', $slug );
|
382 |
} else if ( $current_license->is_expired() ) {
|
383 |
+
_efs( 'expired', $slug );
|
384 |
} else {
|
385 |
echo sprintf(
|
386 |
+
__fs( 'in-x', $slug ),
|
387 |
human_time_diff( time(), strtotime( $current_license->expiration ) )
|
388 |
);
|
389 |
}
|
392 |
<?php fs_ui_action_button(
|
393 |
$slug, 'account',
|
394 |
'deactivate_license',
|
395 |
+
__fs( 'deactivate-license', $slug ),
|
396 |
array( 'plugin_id' => $addon_id ),
|
397 |
false
|
398 |
) ?>
|
407 |
<?php $addon_file = $fs->get_addon_basename( $addon->slug ) ?>
|
408 |
<a class="button button-primary"
|
409 |
href="<?php echo wp_nonce_url( 'plugins.php?action=activate&plugin=' . $addon_file, 'activate-plugin_' . $addon_file ) ?>"
|
410 |
+
title="<?php esc_attr( __fs( 'activate-this-addon', $slug ) ) ?>"
|
411 |
+
class="edit"><?php _efs( 'activate', $slug ) ?></a>
|
412 |
<?php else : ?>
|
413 |
<?php if ( $fs->is_allowed_to_install() ) : ?>
|
414 |
<a class="button button-primary"
|
415 |
+
href="<?php echo wp_nonce_url( self_admin_url( 'update.php?action=install-plugin&plugin=' . $addon->slug ), 'install-plugin_' . $addon->slug ) ?>"><?php _efs( 'install-now', $slug ) ?></a>
|
416 |
<?php else : ?>
|
417 |
<a target="_blank" class="button button-primary"
|
418 |
+
href="<?php echo $fs->_get_latest_download_local_url( $addon_id ) ?>"><?php _efs( 'download-latest', $slug ) ?></a>
|
419 |
<?php endif ?>
|
420 |
<?php endif ?>
|
421 |
</td>
|
427 |
fs_ui_action_button(
|
428 |
$slug, 'account',
|
429 |
'delete_account',
|
430 |
+
__fs( 'delete', $slug ),
|
431 |
array( 'plugin_id' => $addon_id ),
|
432 |
false
|
433 |
);
|
classes/freemius/templates/add-ons.php
CHANGED
@@ -22,7 +22,7 @@
|
|
22 |
$addons = $fs->get_addons();
|
23 |
?>
|
24 |
<div id="fs_addons" class="wrap">
|
25 |
-
<h2><?php printf( __fs( 'add-ons-for-x' ), $fs->get_plugin_name() ) ?></h2>
|
26 |
|
27 |
<div id="poststuff">
|
28 |
<ul class="fs-cards-list">
|
@@ -64,7 +64,7 @@
|
|
64 |
echo sprintf( '<a href="%s" class="thickbox fs-overlay" aria-label="%s" data-title="%s"></a>',
|
65 |
esc_url( network_admin_url( 'plugin-install.php?tab=plugin-information&parent_plugin_id=' . $fs->get_id() . '&plugin=' . $addon->slug .
|
66 |
'&TB_iframe=true&width=600&height=550' ) ),
|
67 |
-
esc_attr( sprintf( __fs( 'more-information-about-x' ), $addon->title ) ),
|
68 |
esc_attr( $addon->title )
|
69 |
);
|
70 |
?>
|
@@ -86,7 +86,7 @@
|
|
86 |
<li class="fs-title"><?php echo $addon->title ?></li>
|
87 |
<li class="fs-offer">
|
88 |
<span
|
89 |
-
class="fs-price"><?php echo ( 0 == $price ) ? __fs( 'free' ) : '$' . number_format( $price, 2 ) ?></span>
|
90 |
</li>
|
91 |
<li class="fs-description"><?php echo ! empty( $addon->info->short_description ) ? $addon->info->short_description : 'SHORT DESCRIPTION' ?></li>
|
92 |
</ul>
|
22 |
$addons = $fs->get_addons();
|
23 |
?>
|
24 |
<div id="fs_addons" class="wrap">
|
25 |
+
<h2><?php printf( __fs( 'add-ons-for-x', $slug ), $fs->get_plugin_name() ) ?></h2>
|
26 |
|
27 |
<div id="poststuff">
|
28 |
<ul class="fs-cards-list">
|
64 |
echo sprintf( '<a href="%s" class="thickbox fs-overlay" aria-label="%s" data-title="%s"></a>',
|
65 |
esc_url( network_admin_url( 'plugin-install.php?tab=plugin-information&parent_plugin_id=' . $fs->get_id() . '&plugin=' . $addon->slug .
|
66 |
'&TB_iframe=true&width=600&height=550' ) ),
|
67 |
+
esc_attr( sprintf( __fs( 'more-information-about-x', $slug ), $addon->title ) ),
|
68 |
esc_attr( $addon->title )
|
69 |
);
|
70 |
?>
|
86 |
<li class="fs-title"><?php echo $addon->title ?></li>
|
87 |
<li class="fs-offer">
|
88 |
<span
|
89 |
+
class="fs-price"><?php echo ( 0 == $price ) ? __fs( 'free', $slug ) : '$' . number_format( $price, 2 ) ?></span>
|
90 |
</li>
|
91 |
<li class="fs-description"><?php echo ! empty( $addon->info->short_description ) ? $addon->info->short_description : 'SHORT DESCRIPTION' ?></li>
|
92 |
</ul>
|
classes/freemius/templates/admin-notice.php
CHANGED
@@ -30,5 +30,7 @@
|
|
30 |
class="fs-plugin-title"><?php echo $VARS['plugin'] ?></label><?php endif ?><p>
|
31 |
<?php if ( ! empty( $VARS['title'] ) ) : ?><b><?php echo $VARS['title'] ?></b> <?php endif ?>
|
32 |
<?php echo $VARS['message'] ?>
|
33 |
-
</p><?php if ( $VARS['sticky'] ) :
|
34 |
-
|
|
|
|
30 |
class="fs-plugin-title"><?php echo $VARS['plugin'] ?></label><?php endif ?><p>
|
31 |
<?php if ( ! empty( $VARS['title'] ) ) : ?><b><?php echo $VARS['title'] ?></b> <?php endif ?>
|
32 |
<?php echo $VARS['message'] ?>
|
33 |
+
</p><?php if ( $VARS['sticky'] ) : ?>
|
34 |
+
<div class="fs-close"><i class="dashicons dashicons-no"
|
35 |
+
title="<?php _efs( 'dismiss' ) ?>"></i> <span><?php _efs( 'dismiss' ) ?></span>
|
36 |
+
</div><?php endif ?></div>
|
classes/freemius/templates/connect.php
CHANGED
@@ -44,10 +44,26 @@
|
|
44 |
</div>
|
45 |
<div class="fs-content">
|
46 |
<p><?php
|
47 |
-
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
48 |
sprintf(
|
49 |
-
__fs( 'hey-x' ) . '<br>' .
|
50 |
-
__fs(
|
51 |
$first_name,
|
52 |
'<b>' . $fs->get_plugin_name() . '</b>',
|
53 |
'<b>' . $current_user->user_login . '</b>',
|
@@ -65,7 +81,7 @@
|
|
65 |
<div class="fs-actions">
|
66 |
<?php if ( $fs->enable_anonymous() ) : ?>
|
67 |
<a href="<?php echo wp_nonce_url( $fs->_get_admin_page_url( '', array( 'fs_action' => $slug . '_skip_activation' ) ), $slug . '_skip_activation' ) ?>"
|
68 |
-
class="button button-secondary" tabindex="2"><?php _efs( 'skip' ) ?></a>
|
69 |
<?php endif ?>
|
70 |
<?php $fs_user = Freemius::_get_user_by_email( $current_user->user_email ) ?>
|
71 |
<?php if ( is_object( $fs_user ) ) : ?>
|
@@ -73,7 +89,7 @@
|
|
73 |
<input type="hidden" name="fs_action" value="<?php echo $slug ?>_activate_existing">
|
74 |
<?php wp_nonce_field( 'activate_existing_' . $fs->get_public_key() ) ?>
|
75 |
<button class="button button-primary" tabindex="1"
|
76 |
-
type="submit"><?php _efs( 'opt-in-connect' ) ?></button>
|
77 |
</form>
|
78 |
<?php else : ?>
|
79 |
<form method="post" action="<?php echo WP_FS__ADDRESS ?>/action/service/user/install/">
|
@@ -124,46 +140,57 @@
|
|
124 |
<input type="hidden" name="<?php echo $name ?>" value="<?php echo esc_attr( $value ) ?>">
|
125 |
<?php endforeach ?>
|
126 |
<button class="button button-primary" tabindex="1"
|
127 |
-
type="submit"><?php _efs( 'opt-in-connect' ) ?></button>
|
128 |
</form>
|
129 |
<?php endif ?>
|
130 |
</div>
|
131 |
<div class="fs-permissions">
|
132 |
-
<a class="fs-trigger" href="#"><?php _efs( 'what-permissions' ) ?></a>
|
133 |
<ul>
|
134 |
<li>
|
135 |
<i class="dashicons dashicons-admin-users"></i>
|
136 |
|
137 |
<div>
|
138 |
-
<span><?php _efs( 'permissions-profile' ) ?></span>
|
139 |
|
140 |
-
<p><?php _efs( 'permissions-profile_desc' ) ?></p>
|
141 |
</div>
|
142 |
</li>
|
143 |
<li>
|
144 |
<i class="dashicons dashicons-wordpress"></i>
|
145 |
|
146 |
<div>
|
147 |
-
<span><?php _efs( 'permissions-site' ) ?></span>
|
148 |
|
149 |
-
<p><?php _efs( 'permissions-site_desc' ) ?></p>
|
150 |
</div>
|
151 |
</li>
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
152 |
<li>
|
153 |
<i class="dashicons dashicons-admin-plugins"></i>
|
154 |
|
155 |
<div>
|
156 |
-
<span><?php _efs( 'permissions-events' ) ?></span>
|
157 |
|
158 |
-
<p><?php _efs( 'permissions-events_desc' ) ?></p>
|
159 |
</div>
|
160 |
</li>
|
161 |
</ul>
|
162 |
</div>
|
163 |
<div class="fs-terms">
|
164 |
-
<a href="https://freemius.com/privacy/" target="_blank"><?php _efs( 'privacy-policy' ) ?></a>
|
165 |
-
|
166 |
-
<a href="https://freemius.com/terms/" target="_blank"><?php _efs( 'tos' ) ?></a>
|
167 |
</div>
|
168 |
</div>
|
169 |
<script type="text/javascript">
|
@@ -173,7 +200,7 @@
|
|
173 |
$(document.body).css({'cursor': 'wait'});
|
174 |
});
|
175 |
$('.button.button-primary').on('click', function () {
|
176 |
-
$(this).html('<?php _efs(
|
177 |
});
|
178 |
$('.fs-permissions .fs-trigger').on('click', function () {
|
179 |
$('.fs-permissions').toggleClass('fs-open');
|
44 |
</div>
|
45 |
<div class="fs-content">
|
46 |
<p><?php
|
47 |
+
$filter = 'connect_message';
|
48 |
+
$default_optin_message = 'connect-message';
|
49 |
+
|
50 |
+
if ( $fs->is_plugin_update() ) {
|
51 |
+
// If Freemius was added on a plugin update, set different
|
52 |
+
// opt-in message.
|
53 |
+
$default_optin_message = 'connect-message_on-update';
|
54 |
+
|
55 |
+
// If user customized the opt-in message on update, use
|
56 |
+
// that message. Otherwise, fallback to regular opt-in
|
57 |
+
// custom message if exist.
|
58 |
+
if ( $fs->has_filter( 'connect_message_on_update' ) ) {
|
59 |
+
$filter = 'connect_message_on_update';
|
60 |
+
}
|
61 |
+
}
|
62 |
+
|
63 |
+
echo $fs->apply_filters( $filter,
|
64 |
sprintf(
|
65 |
+
__fs( 'hey-x', $slug ) . '<br>' .
|
66 |
+
__fs( $default_optin_message, $slug ),
|
67 |
$first_name,
|
68 |
'<b>' . $fs->get_plugin_name() . '</b>',
|
69 |
'<b>' . $current_user->user_login . '</b>',
|
81 |
<div class="fs-actions">
|
82 |
<?php if ( $fs->enable_anonymous() ) : ?>
|
83 |
<a href="<?php echo wp_nonce_url( $fs->_get_admin_page_url( '', array( 'fs_action' => $slug . '_skip_activation' ) ), $slug . '_skip_activation' ) ?>"
|
84 |
+
class="button button-secondary" tabindex="2"><?php _efs( 'skip', $slug ) ?></a>
|
85 |
<?php endif ?>
|
86 |
<?php $fs_user = Freemius::_get_user_by_email( $current_user->user_email ) ?>
|
87 |
<?php if ( is_object( $fs_user ) ) : ?>
|
89 |
<input type="hidden" name="fs_action" value="<?php echo $slug ?>_activate_existing">
|
90 |
<?php wp_nonce_field( 'activate_existing_' . $fs->get_public_key() ) ?>
|
91 |
<button class="button button-primary" tabindex="1"
|
92 |
+
type="submit"><?php _efs( 'opt-in-connect', $slug ) ?></button>
|
93 |
</form>
|
94 |
<?php else : ?>
|
95 |
<form method="post" action="<?php echo WP_FS__ADDRESS ?>/action/service/user/install/">
|
140 |
<input type="hidden" name="<?php echo $name ?>" value="<?php echo esc_attr( $value ) ?>">
|
141 |
<?php endforeach ?>
|
142 |
<button class="button button-primary" tabindex="1"
|
143 |
+
type="submit"><?php _efs( 'opt-in-connect', $slug ) ?></button>
|
144 |
</form>
|
145 |
<?php endif ?>
|
146 |
</div>
|
147 |
<div class="fs-permissions">
|
148 |
+
<a class="fs-trigger" href="#"><?php _efs( 'what-permissions', $slug ) ?></a>
|
149 |
<ul>
|
150 |
<li>
|
151 |
<i class="dashicons dashicons-admin-users"></i>
|
152 |
|
153 |
<div>
|
154 |
+
<span><?php _efs( 'permissions-profile', $slug ) ?></span>
|
155 |
|
156 |
+
<p><?php _efs( 'permissions-profile_desc', $slug ) ?></p>
|
157 |
</div>
|
158 |
</li>
|
159 |
<li>
|
160 |
<i class="dashicons dashicons-wordpress"></i>
|
161 |
|
162 |
<div>
|
163 |
+
<span><?php _efs( 'permissions-site', $slug ) ?></span>
|
164 |
|
165 |
+
<p><?php _efs( 'permissions-site_desc', $slug ) ?></p>
|
166 |
</div>
|
167 |
</li>
|
168 |
+
<?php if ( $fs->is_permission_requested( 'newsletter' ) ) : ?>
|
169 |
+
<li>
|
170 |
+
<i class="dashicons dashicons-email-alt"></i>
|
171 |
+
|
172 |
+
<div>
|
173 |
+
<span><?php _efs( 'permissions-newsletter', $slug ) ?></span>
|
174 |
+
|
175 |
+
<p><?php _efs( 'permissions-newsletter_desc', $slug ) ?></p>
|
176 |
+
</div>
|
177 |
+
</li>
|
178 |
+
<?php endif ?>
|
179 |
<li>
|
180 |
<i class="dashicons dashicons-admin-plugins"></i>
|
181 |
|
182 |
<div>
|
183 |
+
<span><?php _efs( 'permissions-events', $slug ) ?></span>
|
184 |
|
185 |
+
<p><?php _efs( 'permissions-events_desc', $slug ) ?></p>
|
186 |
</div>
|
187 |
</li>
|
188 |
</ul>
|
189 |
</div>
|
190 |
<div class="fs-terms">
|
191 |
+
<a href="https://freemius.com/privacy/" target="_blank"><?php _efs( 'privacy-policy', $slug ) ?></a>
|
192 |
-
|
193 |
+
<a href="https://freemius.com/terms/" target="_blank"><?php _efs( 'tos', $slug ) ?></a>
|
194 |
</div>
|
195 |
</div>
|
196 |
<script type="text/javascript">
|
200 |
$(document.body).css({'cursor': 'wait'});
|
201 |
});
|
202 |
$('.button.button-primary').on('click', function () {
|
203 |
+
$(this).html('<?php _efs( 'activating' , $slug ) ?>...').css({'cursor': 'wait'});
|
204 |
});
|
205 |
$('.fs-permissions .fs-trigger').on('click', function () {
|
206 |
$('.fs-permissions').toggleClass('fs-open');
|
classes/freemius/templates/deactivation-feedback-modal.php
CHANGED
@@ -27,11 +27,11 @@
|
|
27 |
+ ' <div class="fs-modal-dialog">'
|
28 |
+ ' <div class="fs-modal-body">'
|
29 |
+ ' <div class="fs-modal-panel" data-panel-id="confirm"><p><?php echo $confirmation_message; ?></p></div>'
|
30 |
-
+ ' <div class="fs-modal-panel active" data-panel-id="reasons"><h3><strong><?php printf( __fs(
|
31 |
+ ' </div>'
|
32 |
+ ' <div class="fs-modal-footer">'
|
33 |
+ ' <a href="#" class="button button-secondary button-deactivate"></a>'
|
34 |
-
+ ' <a href="#" class="button button-primary button-close"><?php printf( __fs(
|
35 |
+ ' </div>'
|
36 |
+ ' </div>'
|
37 |
+ '</div>',
|
@@ -100,7 +100,7 @@
|
|
100 |
var _parent = $( this ).parents( 'li:first' );
|
101 |
|
102 |
$modal.find( '.reason-input' ).remove();
|
103 |
-
$modal.find( '.button-deactivate').text( '<?php printf( __fs(
|
104 |
|
105 |
if ( _parent.hasClass( 'has-input' ) ) {
|
106 |
var inputType = _parent.data( 'input-type' ),
|
@@ -183,9 +183,9 @@
|
|
183 |
|
184 |
// Reset the deactivate button's text.
|
185 |
if ( 'confirm' === getCurrentPanel() ) {
|
186 |
-
$deactivateButton.text( '<?php printf( __fs(
|
187 |
} else {
|
188 |
-
$deactivateButton.text( '<?php printf( __fs(
|
189 |
}
|
190 |
}
|
191 |
|
27 |
+ ' <div class="fs-modal-dialog">'
|
28 |
+ ' <div class="fs-modal-body">'
|
29 |
+ ' <div class="fs-modal-panel" data-panel-id="confirm"><p><?php echo $confirmation_message; ?></p></div>'
|
30 |
+
+ ' <div class="fs-modal-panel active" data-panel-id="reasons"><h3><strong><?php printf( __fs( 'deactivation-share-reason' , $slug ) ); ?>:</strong></h3><ul id="reasons-list">' + reasonsHtml + '</ul></div>'
|
31 |
+ ' </div>'
|
32 |
+ ' <div class="fs-modal-footer">'
|
33 |
+ ' <a href="#" class="button button-secondary button-deactivate"></a>'
|
34 |
+
+ ' <a href="#" class="button button-primary button-close"><?php printf( __fs( 'deactivation-modal-button-cancel' , $slug ) ); ?></a>'
|
35 |
+ ' </div>'
|
36 |
+ ' </div>'
|
37 |
+ '</div>',
|
100 |
var _parent = $( this ).parents( 'li:first' );
|
101 |
|
102 |
$modal.find( '.reason-input' ).remove();
|
103 |
+
$modal.find( '.button-deactivate').text( '<?php printf( __fs( 'deactivation-modal-button-submit' , $slug ) ); ?>' );
|
104 |
|
105 |
if ( _parent.hasClass( 'has-input' ) ) {
|
106 |
var inputType = _parent.data( 'input-type' ),
|
183 |
|
184 |
// Reset the deactivate button's text.
|
185 |
if ( 'confirm' === getCurrentPanel() ) {
|
186 |
+
$deactivateButton.text( '<?php printf( __fs( 'deactivation-modal-button-confirm' , $slug ) ); ?>' );
|
187 |
} else {
|
188 |
+
$deactivateButton.text( '<?php printf( __fs( 'deactivation-modal-button-deactivate' , $slug ) ); ?>' );
|
189 |
}
|
190 |
}
|
191 |
|
classes/freemius/templates/debug.php
CHANGED
@@ -1,3 +1,106 @@
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
1 |
<h2><?php _efs( 'plugin-installs' ) ?> / <?php _efs( 'sites' ) ?></h2>
|
2 |
<?php
|
3 |
/**
|
@@ -9,17 +112,15 @@
|
|
9 |
<thead>
|
10 |
<tr>
|
11 |
<th><?php _efs( 'id' ) ?></th>
|
12 |
-
<th><?php _efs( 'plugin' ) ?></th>
|
13 |
<th><?php _efs( 'plan' ) ?></th>
|
14 |
<th><?php _efs( 'public-key' ) ?></th>
|
15 |
<th><?php _efs( 'secret-key' ) ?></th>
|
16 |
</tr>
|
17 |
</thead>
|
18 |
<tbody>
|
19 |
-
<?php foreach ( $sites as $
|
20 |
<tr>
|
21 |
<td><?php echo $site->id ?></td>
|
22 |
-
<td><?php echo dirname( $plugin_basename ) ?></td>
|
23 |
<td><?php
|
24 |
echo is_object( $site->plan ) ? $site->plan->name : ''
|
25 |
?></td>
|
@@ -93,11 +194,4 @@
|
|
93 |
</tr>
|
94 |
<?php endforeach ?>
|
95 |
</tbody>
|
96 |
-
</table>
|
97 |
-
<br><br>
|
98 |
-
<form action="" method="POST">
|
99 |
-
<input type="hidden" name="fs_action" value="delete_all_accounts">
|
100 |
-
<?php wp_nonce_field( 'delete_all_accounts' ) ?>
|
101 |
-
<button class="button button-primary"
|
102 |
-
onclick="if (confirm('<?php _efs( 'delete-all-confirm' ) ?>')) this.parentNode.submit(); return false;"><?php _efs( 'delete-all-accounts' ) ?></button>
|
103 |
-
</form>
|
1 |
+
<?php
|
2 |
+
global $fs_active_plugins;
|
3 |
+
|
4 |
+
$fs_options = FS_Option_Manager::get_manager( WP_FS__ACCOUNTS_OPTION_NAME, true );
|
5 |
+
?>
|
6 |
+
<h1><?php echo __fs( 'Freemius Debug' ) . ' - ' . __fs( 'SDK' ) . ' v.' . $fs_active_plugins->newest->version ?></h1>
|
7 |
+
<h2><?php _efs( 'actions' ) ?></h2>
|
8 |
+
<table>
|
9 |
+
<tbody>
|
10 |
+
<tr>
|
11 |
+
<td>
|
12 |
+
<!-- Delete All Accounts -->
|
13 |
+
<form action="" method="POST">
|
14 |
+
<input type="hidden" name="fs_action" value="delete_all_accounts">
|
15 |
+
<?php wp_nonce_field( 'delete_all_accounts' ) ?>
|
16 |
+
<button class="button button-primary"
|
17 |
+
onclick="if (confirm('<?php _efs( 'delete-all-confirm' ) ?>')) this.parentNode.submit(); return false;"><?php _efs( 'delete-all-accounts' ) ?></button>
|
18 |
+
</form>
|
19 |
+
</td>
|
20 |
+
<td>
|
21 |
+
<!-- Clear API Cache -->
|
22 |
+
<form action="" method="POST">
|
23 |
+
<input type="hidden" name="fs_clear_api_cache" value="true">
|
24 |
+
<button class="button button-primary"><?php _efs( 'clear-api-cache' ) ?></button>
|
25 |
+
</form>
|
26 |
+
</td>
|
27 |
+
<td>
|
28 |
+
<!-- Sync Data with Server -->
|
29 |
+
<form action="" method="POST">
|
30 |
+
<input type="hidden" name="background_sync" value="true">
|
31 |
+
<button class="button button-primary"><?php _efs( 'sync-data-from-server' ) ?></button>
|
32 |
+
</form>
|
33 |
+
</td>
|
34 |
+
</tr>
|
35 |
+
</tbody>
|
36 |
+
</table>
|
37 |
+
<h2><?php _efs( 'sdk-versions' ) ?></h2>
|
38 |
+
<table id="fs_sdks" class="widefat">
|
39 |
+
<thead>
|
40 |
+
<tr>
|
41 |
+
<th><?php _efs( 'version' ) ?></th>
|
42 |
+
<th><?php _efs( 'sdk-path' ) ?></th>
|
43 |
+
<th><?php _efs( 'plugin-path' ) ?></th>
|
44 |
+
<th><?php _efs( 'is-active' ) ?></th>
|
45 |
+
</tr>
|
46 |
+
</thead>
|
47 |
+
<tbody>
|
48 |
+
<?php foreach ( $fs_active_plugins->plugins as $sdk_path => &$data ) : ?>
|
49 |
+
<?php $is_active = ( WP_FS__SDK_VERSION == $data->version ) ?>
|
50 |
+
<tr<?php if ( $is_active ) {
|
51 |
+
echo ' style="background: #E6FFE6; font-weight: bold"';
|
52 |
+
} ?>>
|
53 |
+
<td><?php echo $data->version ?></td>
|
54 |
+
<td><?php echo $sdk_path ?></td>
|
55 |
+
<td><?php echo $data->plugin_path ?></td>
|
56 |
+
<td><?php echo ( $is_active ) ? 'Active' : 'Inactive' ?></td>
|
57 |
+
</tr>
|
58 |
+
<?php endforeach ?>
|
59 |
+
</tbody>
|
60 |
+
</table>
|
61 |
+
<h2><?php _efs( 'plugins' ) ?></h2>
|
62 |
+
<table id="fs_plugins" class="widefat">
|
63 |
+
<thead>
|
64 |
+
<tr>
|
65 |
+
<th><?php _efs( 'id' ) ?></th>
|
66 |
+
<th><?php _efs( 'slug' ) ?></th>
|
67 |
+
<th><?php _efs( 'version' ) ?></th>
|
68 |
+
<th><?php _efs( 'title' ) ?></th>
|
69 |
+
<th><?php _efs( 'api' ) ?></th>
|
70 |
+
<th><?php _efs( 'freemius-state' ) ?></th>
|
71 |
+
<th><?php _efs( 'plugin-path' ) ?></th>
|
72 |
+
<th><?php _efs( 'public-key' ) ?></th>
|
73 |
+
</tr>
|
74 |
+
</thead>
|
75 |
+
<tbody>
|
76 |
+
<?php $plugins = $fs_options->get_option( 'plugins' ) ?>
|
77 |
+
<?php foreach ( $plugins as $slug => $data ) : ?>
|
78 |
+
<?php $is_active = is_plugin_active( $data->file ) ?>
|
79 |
+
<?php $fs = $is_active ? freemius( $slug ) : null ?>
|
80 |
+
<tr<?php if ( $is_active ) {
|
81 |
+
echo ' style="background: #E6FFE6; font-weight: bold"';
|
82 |
+
} ?>>
|
83 |
+
<td><?php echo $data->id ?></td>
|
84 |
+
<td><?php echo $slug ?></td>
|
85 |
+
<td><?php echo $data->version ?></td>
|
86 |
+
<td><?php echo $data->title ?></td>
|
87 |
+
<td><?php if ( $is_active ) {
|
88 |
+
echo $fs->has_api_connectivity() ?
|
89 |
+
__fs( 'connected' ) :
|
90 |
+
__fs( 'blocked' );
|
91 |
+
} ?></td>
|
92 |
+
<td><?php if ( $is_active ) {
|
93 |
+
echo $fs->is_on() ?
|
94 |
+
__fs( 'on' ) :
|
95 |
+
__fs( 'off' );
|
96 |
+
} ?></td>
|
97 |
+
<td><?php echo $data->file ?></td>
|
98 |
+
<td><?php echo $data->public_key ?></td>
|
99 |
+
</tr>
|
100 |
+
<?php endforeach ?>
|
101 |
+
</tbody>
|
102 |
+
</table>
|
103 |
+
|
104 |
<h2><?php _efs( 'plugin-installs' ) ?> / <?php _efs( 'sites' ) ?></h2>
|
105 |
<?php
|
106 |
/**
|
112 |
<thead>
|
113 |
<tr>
|
114 |
<th><?php _efs( 'id' ) ?></th>
|
|
|
115 |
<th><?php _efs( 'plan' ) ?></th>
|
116 |
<th><?php _efs( 'public-key' ) ?></th>
|
117 |
<th><?php _efs( 'secret-key' ) ?></th>
|
118 |
</tr>
|
119 |
</thead>
|
120 |
<tbody>
|
121 |
+
<?php foreach ( $sites as $slug => $site ) : ?>
|
122 |
<tr>
|
123 |
<td><?php echo $site->id ?></td>
|
|
|
124 |
<td><?php
|
125 |
echo is_object( $site->plan ) ? $site->plan->name : ''
|
126 |
?></td>
|
194 |
</tr>
|
195 |
<?php endforeach ?>
|
196 |
</tbody>
|
197 |
+
</table>
|
|
|
|
|
|
|
|
|
|
|
|
|
|
classes/freemius/templates/pending-activation.php
CHANGED
@@ -52,8 +52,8 @@
|
|
52 |
<div class="fs-content">
|
53 |
<p><?php
|
54 |
echo $fs->apply_filters( 'pending_activation_message', sprintf(
|
55 |
-
__fs( 'thanks-x' ) . '<br>' .
|
56 |
-
__fs( 'pending-activation-message' ),
|
57 |
$first_name,
|
58 |
'<b>' . $fs->get_plugin_name() . '</b>',
|
59 |
'<b>' . $current_user->user_email . '</b>'
|
@@ -92,45 +92,56 @@
|
|
92 |
<input type="hidden" name="<?php echo $name ?>" value="<?php echo esc_attr( $value ) ?>">
|
93 |
<?php endforeach ?>
|
94 |
<button class="button button-primary" tabindex="1"
|
95 |
-
type="submit"><?php _efs( 'resend-activation-email' ) ?></button>
|
96 |
</form>
|
97 |
</div>
|
98 |
<div class="fs-permissions">
|
99 |
-
<a class="fs-trigger" href="#"><?php _efs( 'what-permissions' ) ?></a>
|
100 |
<ul>
|
101 |
<li>
|
102 |
<i class="dashicons dashicons-admin-users"></i>
|
103 |
|
104 |
<div>
|
105 |
-
<span><?php _efs( 'permissions-profile' ) ?></span>
|
106 |
|
107 |
-
<p><?php _efs( 'permissions-profile_desc' ) ?></p>
|
108 |
</div>
|
109 |
</li>
|
110 |
<li>
|
111 |
<i class="dashicons dashicons-wordpress"></i>
|
112 |
|
113 |
<div>
|
114 |
-
<span><?php _efs( 'permissions-site' ) ?></span>
|
115 |
|
116 |
-
<p><?php _efs( 'permissions-site_desc' ) ?></p>
|
117 |
</div>
|
118 |
</li>
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
119 |
<li>
|
120 |
<i class="dashicons dashicons-admin-plugins"></i>
|
121 |
|
122 |
<div>
|
123 |
-
<span><?php _efs( 'permissions-events' ) ?></span>
|
124 |
|
125 |
-
<p><?php _efs( 'permissions-events_desc' ) ?></p>
|
126 |
</div>
|
127 |
</li>
|
128 |
</ul>
|
129 |
</div>
|
130 |
<div class="fs-terms">
|
131 |
-
<a href="https://freemius.com/privacy/" target="_blank"><?php _efs( 'privacy-policy' ) ?></a>
|
132 |
-
|
133 |
-
<a href="https://freemius.com/terms/" target="_blank"><?php _efs( 'tos' ) ?></a>
|
134 |
</div>
|
135 |
</div>
|
136 |
<script type="text/javascript">
|
52 |
<div class="fs-content">
|
53 |
<p><?php
|
54 |
echo $fs->apply_filters( 'pending_activation_message', sprintf(
|
55 |
+
__fs( 'thanks-x', $slug ) . '<br>' .
|
56 |
+
__fs( 'pending-activation-message', $slug ),
|
57 |
$first_name,
|
58 |
'<b>' . $fs->get_plugin_name() . '</b>',
|
59 |
'<b>' . $current_user->user_email . '</b>'
|
92 |
<input type="hidden" name="<?php echo $name ?>" value="<?php echo esc_attr( $value ) ?>">
|
93 |
<?php endforeach ?>
|
94 |
<button class="button button-primary" tabindex="1"
|
95 |
+
type="submit"><?php _efs( 'resend-activation-email', $slug ) ?></button>
|
96 |
</form>
|
97 |
</div>
|
98 |
<div class="fs-permissions">
|
99 |
+
<a class="fs-trigger" href="#"><?php _efs( 'what-permissions', $slug ) ?></a>
|
100 |
<ul>
|
101 |
<li>
|
102 |
<i class="dashicons dashicons-admin-users"></i>
|
103 |
|
104 |
<div>
|
105 |
+
<span><?php _efs( 'permissions-profile', $slug ) ?></span>
|
106 |
|
107 |
+
<p><?php _efs( 'permissions-profile_desc', $slug ) ?></p>
|
108 |
</div>
|
109 |
</li>
|
110 |
<li>
|
111 |
<i class="dashicons dashicons-wordpress"></i>
|
112 |
|
113 |
<div>
|
114 |
+
<span><?php _efs( 'permissions-site', $slug ) ?></span>
|
115 |
|
116 |
+
<p><?php _efs( 'permissions-site_desc', $slug ) ?></p>
|
117 |
</div>
|
118 |
</li>
|
119 |
+
<?php if ( $fs->is_permission_requested( 'newsletter' ) ) : ?>
|
120 |
+
<li>
|
121 |
+
<i class="dashicons dashicons-email-alt"></i>
|
122 |
+
|
123 |
+
<div>
|
124 |
+
<span><?php _efs( 'permissions-newsletter', $slug ) ?></span>
|
125 |
+
|
126 |
+
<p><?php _efs( 'permissions-newsletter_desc', $slug ) ?></p>
|
127 |
+
</div>
|
128 |
+
</li>
|
129 |
+
<?php endif ?>
|
130 |
<li>
|
131 |
<i class="dashicons dashicons-admin-plugins"></i>
|
132 |
|
133 |
<div>
|
134 |
+
<span><?php _efs( 'permissions-events', $slug ) ?></span>
|
135 |
|
136 |
+
<p><?php _efs( 'permissions-events_desc', $slug ) ?></p>
|
137 |
</div>
|
138 |
</li>
|
139 |
</ul>
|
140 |
</div>
|
141 |
<div class="fs-terms">
|
142 |
+
<a href="https://freemius.com/privacy/" target="_blank"><?php _efs( 'privacy-policy', $slug ) ?></a>
|
143 |
-
|
144 |
+
<a href="https://freemius.com/terms/" target="_blank"><?php _efs( 'tos', $slug ) ?></a>
|
145 |
</div>
|
146 |
</div>
|
147 |
<script type="text/javascript">
|
classes/freemius/templates/plugin-icon.php
CHANGED
@@ -8,10 +8,23 @@
|
|
8 |
$slug = $VARS['slug'];
|
9 |
$fs = freemius( $slug );
|
10 |
|
11 |
-
$
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
12 |
if ( ! is_array( $icons ) || 0 === count( $icons ) ) {
|
13 |
$icon_found = false;
|
14 |
-
$local_path = fs_normalize_path(
|
15 |
|
16 |
if ( WP_FS__IS_LOCALHOST && $fs->is_org_repo_compliant() ) {
|
17 |
/**
|
@@ -35,7 +48,7 @@
|
|
35 |
foreach ( $suffixes as $s ) {
|
36 |
$headers = get_headers( $base_url . $s );
|
37 |
if ( strpos( $headers[0], '200' ) ) {
|
38 |
-
$local_path = fs_normalize_path(
|
39 |
fs_download_image( $base_url . $s, $local_path );
|
40 |
$icon_found = true;
|
41 |
break;
|
@@ -45,13 +58,13 @@
|
|
45 |
|
46 |
if ( ! $icon_found ) {
|
47 |
// No icons found, fallback to default icon.
|
48 |
-
copy( fs_normalize_path(
|
49 |
}
|
50 |
|
51 |
$icons = array( $local_path );
|
52 |
}
|
53 |
|
54 |
-
$relative_url = fs_img_url( substr( $icons[0], strlen( fs_normalize_path(
|
55 |
?>
|
56 |
<div class="fs-plugin-icon">
|
57 |
<img src="<?php echo $relative_url ?>"/>
|
8 |
$slug = $VARS['slug'];
|
9 |
$fs = freemius( $slug );
|
10 |
|
11 |
+
global $fs_active_plugins;
|
12 |
+
|
13 |
+
$img_dir = WP_FS__DIR_IMG;
|
14 |
+
|
15 |
+
if ( 1 < count( $fs_active_plugins->plugins ) ) {
|
16 |
+
foreach ( $fs_active_plugins->plugins as $sdk_path => &$data ) {
|
17 |
+
if ( $data->plugin_path == $fs->get_plugin_basename() ) {
|
18 |
+
$img_dir = WP_PLUGIN_DIR . '/' . $sdk_path . '/assets/img';
|
19 |
+
break;
|
20 |
+
}
|
21 |
+
}
|
22 |
+
}
|
23 |
+
|
24 |
+
$icons = glob( fs_normalize_path( $img_dir . '/icon.*' ) );
|
25 |
if ( ! is_array( $icons ) || 0 === count( $icons ) ) {
|
26 |
$icon_found = false;
|
27 |
+
$local_path = fs_normalize_path( $img_dir . '/icon.png' );
|
28 |
|
29 |
if ( WP_FS__IS_LOCALHOST && $fs->is_org_repo_compliant() ) {
|
30 |
/**
|
48 |
foreach ( $suffixes as $s ) {
|
49 |
$headers = get_headers( $base_url . $s );
|
50 |
if ( strpos( $headers[0], '200' ) ) {
|
51 |
+
$local_path = fs_normalize_path( $img_dir . '/icon.' . substr( $s, strpos( $s, '.' ) + 1 ) );
|
52 |
fs_download_image( $base_url . $s, $local_path );
|
53 |
$icon_found = true;
|
54 |
break;
|
58 |
|
59 |
if ( ! $icon_found ) {
|
60 |
// No icons found, fallback to default icon.
|
61 |
+
copy( fs_normalize_path( $img_dir . '/plugin-icon.png' ), $local_path );
|
62 |
}
|
63 |
|
64 |
$icons = array( $local_path );
|
65 |
}
|
66 |
|
67 |
+
$relative_url = fs_img_url( substr( $icons[0], strlen( fs_normalize_path( $img_dir ) ) ), $img_dir );
|
68 |
?>
|
69 |
<div class="fs-plugin-icon">
|
70 |
<img src="<?php echo $relative_url ?>"/>
|
classes/freemius/templates/plugin-info/description.php
CHANGED
@@ -39,7 +39,7 @@
|
|
39 |
<?php if ( ! empty( $plugin->info->screenshots ) ) : ?>
|
40 |
<?php $screenshots = $plugin->info->screenshots ?>
|
41 |
<div class="fs-screenshots clearfix">
|
42 |
-
<h2><?php _efs( 'screenshots' ) ?></h2>
|
43 |
<ul>
|
44 |
<?php $i = 0;
|
45 |
foreach ( $screenshots as $s => $url ) : ?>
|
@@ -49,12 +49,13 @@
|
|
49 |
$url = 'http' . ( WP_FS__IS_HTTPS ? 's' : '' ) . ':' . $url; ?>
|
50 |
<li class="<?php echo ( 0 === $i % 2 ) ? 'odd' : 'even' ?>">
|
51 |
<style>
|
52 |
-
#section-description .fs-screenshots .fs-screenshot
|
53 |
{
|
54 |
background-image: url('<?php echo $url ?>');
|
55 |
}
|
56 |
</style>
|
57 |
-
<a href="<?php echo $url ?>"
|
|
|
58 |
class="fs-screenshot-<?php echo $i ?>"></a>
|
59 |
</li>
|
60 |
<?php $i ++; endforeach ?>
|
39 |
<?php if ( ! empty( $plugin->info->screenshots ) ) : ?>
|
40 |
<?php $screenshots = $plugin->info->screenshots ?>
|
41 |
<div class="fs-screenshots clearfix">
|
42 |
+
<h2><?php _efs( 'screenshots', $plugin->slug ) ?></h2>
|
43 |
<ul>
|
44 |
<?php $i = 0;
|
45 |
foreach ( $screenshots as $s => $url ) : ?>
|
49 |
$url = 'http' . ( WP_FS__IS_HTTPS ? 's' : '' ) . ':' . $url; ?>
|
50 |
<li class="<?php echo ( 0 === $i % 2 ) ? 'odd' : 'even' ?>">
|
51 |
<style>
|
52 |
+
#section-description .fs-screenshots <?php echo ".fs-screenshot-{$i}" ?>
|
53 |
{
|
54 |
background-image: url('<?php echo $url ?>');
|
55 |
}
|
56 |
</style>
|
57 |
+
<a href="<?php echo $url ?>"
|
58 |
+
title="<?php printf( __fs( 'view-full-size-x', $plugin->slug ), $i ) ?>"
|
59 |
class="fs-screenshot-<?php echo $i ?>"></a>
|
60 |
</li>
|
61 |
<?php $i ++; endforeach ?>
|
classes/freemius/templates/plugin-info/features.php
CHANGED
@@ -1,4 +1,9 @@
|
|
1 |
<?php
|
|
|
|
|
|
|
|
|
|
|
2 |
$plans = $VARS['plans'];
|
3 |
|
4 |
$features_plan_map = array();
|
@@ -20,7 +25,7 @@
|
|
20 |
if ( ! isset( $features_plan_map['support'] ) ) {
|
21 |
$support_feature = new stdClass();
|
22 |
$support_feature->id = 'support';
|
23 |
-
$support_feature->title = __fs( 'Support' );
|
24 |
$features_plan_map[ $support_feature->id ] = array( 'feature' => $support_feature, 'plans' => array() );
|
25 |
} else {
|
26 |
$support_feature = $features_plan_map['support'];
|
@@ -33,7 +38,7 @@
|
|
33 |
// Add updates as a feature for all plans.
|
34 |
$updates_feature = new stdClass();
|
35 |
$updates_feature->id = 'updates';
|
36 |
-
$updates_feature->title = __fs( 'unlimited-updates' );
|
37 |
$features_plan_map[ $updates_feature->id ] = array( 'feature' => $updates_feature, 'plans' => array() );
|
38 |
foreach ( $plans as $plan ) {
|
39 |
$features_plan_map[ $updates_feature->id ]['plans'][ $plan->id ] = $updates_feature;
|
1 |
<?php
|
2 |
+
/**
|
3 |
+
* @var FS_Plugin $plugin
|
4 |
+
*/
|
5 |
+
$plugin = $VARS['plugin'];
|
6 |
+
|
7 |
$plans = $VARS['plans'];
|
8 |
|
9 |
$features_plan_map = array();
|
25 |
if ( ! isset( $features_plan_map['support'] ) ) {
|
26 |
$support_feature = new stdClass();
|
27 |
$support_feature->id = 'support';
|
28 |
+
$support_feature->title = __fs( 'Support', $plugin->slug );
|
29 |
$features_plan_map[ $support_feature->id ] = array( 'feature' => $support_feature, 'plans' => array() );
|
30 |
} else {
|
31 |
$support_feature = $features_plan_map['support'];
|
38 |
// Add updates as a feature for all plans.
|
39 |
$updates_feature = new stdClass();
|
40 |
$updates_feature->id = 'updates';
|
41 |
+
$updates_feature->title = __fs( 'unlimited-updates', $plugin->slug );
|
42 |
$features_plan_map[ $updates_feature->id ] = array( 'feature' => $updates_feature, 'plans' => array() );
|
43 |
foreach ( $plans as $plan ) {
|
44 |
$features_plan_map[ $updates_feature->id ]['plans'][ $plan->id ] = $updates_feature;
|
classes/freemius/templates/plugin-info/screenshots.php
CHANGED
@@ -2,6 +2,8 @@
|
|
2 |
/**
|
3 |
* @var FS_Plugin $plugin
|
4 |
*/
|
|
|
|
|
5 |
$screenshots = $VARS['screenshots'];
|
6 |
?>
|
7 |
<ol>
|
@@ -12,7 +14,8 @@
|
|
12 |
// therefore we need to set absolute URLs.
|
13 |
$url = 'http' . ( WP_FS__IS_HTTPS ? 's' : '' ) . ':' . $url; ?>
|
14 |
<li>
|
15 |
-
<a href="<?php echo $url ?>"
|
|
|
16 |
src="<?php echo $url ?>"></a>
|
17 |
</li>
|
18 |
<?php $i ++; endforeach ?>
|
2 |
/**
|
3 |
* @var FS_Plugin $plugin
|
4 |
*/
|
5 |
+
$plugin = $VARS['plugin'];
|
6 |
+
|
7 |
$screenshots = $VARS['screenshots'];
|
8 |
?>
|
9 |
<ol>
|
14 |
// therefore we need to set absolute URLs.
|
15 |
$url = 'http' . ( WP_FS__IS_HTTPS ? 's' : '' ) . ':' . $url; ?>
|
16 |
<li>
|
17 |
+
<a href="<?php echo $url ?>"
|
18 |
+
title="<?php printf( __fs( 'view-full-size-x', $plugin->slug ), $i ) ?>"><img
|
19 |
src="<?php echo $url ?>"></a>
|
20 |
</li>
|
21 |
<?php $i ++; endforeach ?>
|
language/aryo-activity-log.pot
CHANGED
@@ -6,9 +6,9 @@
|
|
6 |
#, fuzzy
|
7 |
msgid ""
|
8 |
msgstr ""
|
9 |
-
"Project-Id-Version: aryo-activity-log 2.2.
|
10 |
"Report-Msgid-Bugs-To: \n"
|
11 |
-
"POT-Creation-Date: 2016-01-
|
12 |
"PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n"
|
13 |
"Last-Translator: FULL NAME <EMAIL@ADDRESS>\n"
|
14 |
"Language-Team: LANGUAGE <LL@li.org>\n"
|
@@ -65,7 +65,7 @@ msgid "Description"
|
|
65 |
msgstr ""
|
66 |
|
67 |
#: classes/class-aal-activity-log-list-table.php:142
|
68 |
-
#: classes/freemius/includes/fs-plugin-functions.php:
|
69 |
#, php-format
|
70 |
msgid "%s ago"
|
71 |
msgstr ""
|
@@ -303,468 +303,487 @@ msgctxt "Plugin installer section title"
|
|
303 |
msgid "Other Notes"
|
304 |
msgstr ""
|
305 |
|
306 |
-
#: classes/freemius/includes/fs-plugin-functions.php:
|
307 |
msgid "Plugin Install"
|
308 |
msgstr ""
|
309 |
|
310 |
-
#: classes/freemius/includes/fs-plugin-functions.php:
|
311 |
msgid "Version:"
|
312 |
msgstr ""
|
313 |
|
314 |
-
#: classes/freemius/includes/fs-plugin-functions.php:
|
315 |
msgid "Author:"
|
316 |
msgstr ""
|
317 |
|
318 |
-
#: classes/freemius/includes/fs-plugin-functions.php:
|
319 |
msgid "Last Updated:"
|
320 |
msgstr ""
|
321 |
|
322 |
-
#: classes/freemius/includes/fs-plugin-functions.php:
|
323 |
msgid "Requires WordPress Version:"
|
324 |
msgstr ""
|
325 |
|
326 |
-
#: classes/freemius/includes/fs-plugin-functions.php:
|
327 |
#, php-format
|
328 |
msgid "%s or higher"
|
329 |
msgstr ""
|
330 |
|
331 |
-
#: classes/freemius/includes/fs-plugin-functions.php:
|
332 |
msgid "Compatible up to:"
|
333 |
msgstr ""
|
334 |
|
335 |
-
#: classes/freemius/includes/fs-plugin-functions.php:
|
336 |
msgid "Downloaded:"
|
337 |
msgstr ""
|
338 |
|
339 |
-
#: classes/freemius/includes/fs-plugin-functions.php:
|
340 |
#, php-format
|
341 |
msgid "%s time"
|
342 |
msgid_plural "%s times"
|
343 |
msgstr[0] ""
|
344 |
msgstr[1] ""
|
345 |
|
346 |
-
#: classes/freemius/includes/fs-plugin-functions.php:
|
347 |
msgid "WordPress.org Plugin Page »"
|
348 |
msgstr ""
|
349 |
|
350 |
-
#: classes/freemius/includes/fs-plugin-functions.php:
|
351 |
msgid "Plugin Homepage »"
|
352 |
msgstr ""
|
353 |
|
354 |
-
#: classes/freemius/includes/fs-plugin-functions.php:
|
355 |
-
#: classes/freemius/includes/fs-plugin-functions.php:
|
356 |
msgid "Donate to this plugin »"
|
357 |
msgstr ""
|
358 |
|
359 |
-
#: classes/freemius/includes/fs-plugin-functions.php:
|
360 |
msgid "Average Rating"
|
361 |
msgstr ""
|
362 |
|
363 |
-
#: classes/freemius/includes/fs-plugin-functions.php:
|
364 |
#, php-format
|
365 |
msgid "(based on %s rating)"
|
366 |
msgid_plural "(based on %s ratings)"
|
367 |
msgstr[0] ""
|
368 |
msgstr[1] ""
|
369 |
|
370 |
-
#: classes/freemius/includes/fs-plugin-functions.php:
|
371 |
#, php-format
|
372 |
msgid "Click to see reviews that provided a rating of %d star"
|
373 |
msgid_plural "Click to see reviews that provided a rating of %d stars"
|
374 |
msgstr[0] ""
|
375 |
msgstr[1] ""
|
376 |
|
377 |
-
#: classes/freemius/includes/fs-plugin-functions.php:
|
378 |
#, php-format
|
379 |
msgid "%d star"
|
380 |
msgid_plural "%d stars"
|
381 |
msgstr[0] ""
|
382 |
msgstr[1] ""
|
383 |
|
384 |
-
#: classes/freemius/includes/fs-plugin-functions.php:
|
385 |
msgid "Contributors"
|
386 |
msgstr ""
|
387 |
|
388 |
-
#: classes/freemius/includes/fs-plugin-functions.php:351
|
389 |
#: classes/freemius/includes/fs-plugin-functions.php:353
|
|
|
390 |
msgid "Warning:"
|
391 |
msgstr ""
|
392 |
|
393 |
-
#: classes/freemius/includes/fs-plugin-functions.php:
|
394 |
msgid "This plugin has not been tested with your current version of WordPress."
|
395 |
msgstr ""
|
396 |
|
397 |
-
#: classes/freemius/includes/fs-plugin-functions.php:
|
398 |
msgid ""
|
399 |
"This plugin has not been marked as compatible with your version of WordPress."
|
400 |
msgstr ""
|
401 |
|
402 |
-
#: classes/freemius/includes/fs-plugin-functions.php:
|
403 |
-
#: classes/freemius/includes/i18n.php:
|
404 |
msgid "Install Now"
|
405 |
msgstr ""
|
406 |
|
407 |
-
#: classes/freemius/includes/fs-plugin-functions.php:
|
408 |
-
#: classes/freemius/includes/i18n.php:
|
409 |
msgid "Install Update Now"
|
410 |
msgstr ""
|
411 |
|
412 |
-
#: classes/freemius/includes/fs-plugin-functions.php:
|
413 |
#, php-format
|
414 |
msgid "Newer Version (%s) Installed"
|
415 |
msgstr ""
|
416 |
|
417 |
-
#: classes/freemius/includes/fs-plugin-functions.php:
|
418 |
msgid "Latest Version Installed"
|
419 |
msgstr ""
|
420 |
|
421 |
-
#: classes/freemius/includes/i18n.php:
|
422 |
msgid "Account"
|
423 |
msgstr ""
|
424 |
|
425 |
-
#: classes/freemius/includes/i18n.php:
|
426 |
msgid "Add On"
|
427 |
msgstr ""
|
428 |
|
429 |
-
#: classes/freemius/includes/i18n.php:
|
430 |
msgid "Contact Us"
|
431 |
msgstr ""
|
432 |
|
433 |
-
#: classes/freemius/includes/i18n.php:
|
434 |
msgid "Change Ownership"
|
435 |
msgstr ""
|
436 |
|
437 |
-
#: classes/freemius/includes/i18n.php:
|
438 |
msgid "Support"
|
439 |
msgstr ""
|
440 |
|
441 |
-
#: classes/freemius/includes/i18n.php:
|
442 |
msgid "Support Forum"
|
443 |
msgstr ""
|
444 |
|
445 |
-
#: classes/freemius/includes/i18n.php:
|
446 |
msgid "Add Ons"
|
447 |
msgstr ""
|
448 |
|
449 |
-
#: classes/freemius/includes/i18n.php:
|
450 |
msgctxt "verb"
|
451 |
msgid "Upgrade"
|
452 |
msgstr ""
|
453 |
|
454 |
-
#: classes/freemius/includes/i18n.php:
|
455 |
msgid "Awesome"
|
456 |
msgstr ""
|
457 |
|
458 |
-
#: classes/freemius/includes/i18n.php:
|
459 |
msgctxt "noun"
|
460 |
msgid "Pricing"
|
461 |
msgstr ""
|
462 |
|
463 |
-
#: classes/freemius/includes/i18n.php:
|
464 |
msgctxt "noun"
|
465 |
msgid "Price"
|
466 |
msgstr ""
|
467 |
|
468 |
-
#: classes/freemius/includes/i18n.php:
|
469 |
msgid "Unlimited Updates"
|
470 |
msgstr ""
|
471 |
|
472 |
-
#: classes/freemius/includes/i18n.php:
|
473 |
msgctxt "verb"
|
474 |
msgid "Downgrade"
|
475 |
msgstr ""
|
476 |
|
477 |
-
#: classes/freemius/includes/i18n.php:
|
478 |
msgid "Free Trial"
|
479 |
msgstr ""
|
480 |
|
481 |
-
#: classes/freemius/includes/i18n.php:
|
482 |
msgid "Details"
|
483 |
msgstr ""
|
484 |
|
485 |
-
#: classes/freemius/includes/i18n.php:
|
486 |
msgid "Account Details"
|
487 |
msgstr ""
|
488 |
|
489 |
-
#: classes/freemius/includes/i18n.php:
|
490 |
msgctxt "verb"
|
491 |
msgid "Delete"
|
492 |
msgstr ""
|
493 |
|
494 |
-
#: classes/freemius/includes/i18n.php:
|
495 |
msgid "Delete Account"
|
496 |
msgstr ""
|
497 |
|
498 |
-
#: classes/freemius/includes/i18n.php:
|
499 |
msgctxt "as close a window"
|
500 |
msgid "Dismiss"
|
501 |
msgstr ""
|
502 |
|
503 |
-
#: classes/freemius/includes/i18n.php:
|
504 |
msgctxt "as product pricing plan"
|
505 |
msgid "Plan"
|
506 |
msgstr ""
|
507 |
|
508 |
-
#: classes/freemius/includes/i18n.php:
|
509 |
msgid "Change Plan"
|
510 |
msgstr ""
|
511 |
|
512 |
-
#: classes/freemius/includes/i18n.php:
|
513 |
#, php-format
|
514 |
msgctxt "as download professional version"
|
515 |
msgid "Download %s Version"
|
516 |
msgstr ""
|
517 |
|
518 |
-
#: classes/freemius/includes/i18n.php:
|
519 |
#, php-format
|
520 |
msgctxt "as download professional version now"
|
521 |
msgid "Download %s version now"
|
522 |
msgstr ""
|
523 |
|
524 |
-
#: classes/freemius/includes/i18n.php:
|
525 |
msgctxt "as download latest version"
|
526 |
msgid "Download Latest"
|
527 |
msgstr ""
|
528 |
|
529 |
-
#: classes/freemius/includes/i18n.php:
|
530 |
#, php-format
|
531 |
msgctxt "E.g. you have a professional license."
|
532 |
msgid "You have a %s license."
|
533 |
msgstr ""
|
534 |
|
535 |
-
#: classes/freemius/includes/i18n.php:
|
536 |
msgid "New"
|
537 |
msgstr ""
|
538 |
|
539 |
-
#: classes/freemius/includes/i18n.php:
|
540 |
msgid "Free"
|
541 |
msgstr ""
|
542 |
|
543 |
-
#: classes/freemius/includes/i18n.php:
|
544 |
msgctxt "as trial plan"
|
545 |
msgid "Trial"
|
546 |
msgstr ""
|
547 |
|
548 |
-
#: classes/freemius/includes/i18n.php:
|
549 |
msgctxt "verb"
|
550 |
msgid "Purchase"
|
551 |
msgstr ""
|
552 |
|
553 |
-
#: classes/freemius/includes/i18n.php:
|
554 |
msgid "Single Site License"
|
555 |
msgstr ""
|
556 |
|
557 |
-
#: classes/freemius/includes/i18n.php:
|
558 |
msgid "Unlimited Licenses"
|
559 |
msgstr ""
|
560 |
|
561 |
-
#: classes/freemius/includes/i18n.php:
|
562 |
#, php-format
|
563 |
msgid "Up to %s Sites"
|
564 |
msgstr ""
|
565 |
|
566 |
-
#: classes/freemius/includes/i18n.php:
|
567 |
#, php-format
|
568 |
msgctxt "e.g. Professional Plan"
|
569 |
msgid "%s Plan"
|
570 |
msgstr ""
|
571 |
|
572 |
-
#: classes/freemius/includes/i18n.php:
|
573 |
#, php-format
|
574 |
msgid "You are just one step away - %s"
|
575 |
msgstr ""
|
576 |
|
577 |
-
#: classes/freemius/includes/i18n.php:
|
578 |
#, php-format
|
579 |
msgctxt "%s - plugin name. As complete \"Jetpack\" activation now"
|
580 |
msgid "Complete \"%s\" Activation Now"
|
581 |
msgstr ""
|
582 |
|
583 |
-
#: classes/freemius/includes/i18n.php:
|
584 |
#, php-format
|
585 |
msgid "We made a few tweaks to the plugin, %s"
|
586 |
msgstr ""
|
587 |
|
588 |
-
#: classes/freemius/includes/i18n.php:
|
589 |
#, php-format
|
590 |
msgid "Opt-in to make \"%s\" Better!"
|
591 |
msgstr ""
|
592 |
|
593 |
-
#: classes/freemius/includes/i18n.php:
|
594 |
msgid "Error"
|
595 |
msgstr ""
|
596 |
|
597 |
-
#: classes/freemius/includes/i18n.php:
|
598 |
msgid ""
|
599 |
"Freemius SDK couldn't find the plugin's main file. Please contact "
|
600 |
"sdk@freemius.com with the current error."
|
601 |
msgstr ""
|
602 |
|
603 |
-
#: classes/freemius/includes/i18n.php:
|
604 |
msgctxt "as expiration date"
|
605 |
msgid "Expiration"
|
606 |
msgstr ""
|
607 |
|
608 |
-
#: classes/freemius/includes/i18n.php:
|
609 |
msgid "not verified"
|
610 |
msgstr ""
|
611 |
|
612 |
-
#: classes/freemius/includes/i18n.php:
|
613 |
msgid "Verify Email"
|
614 |
msgstr ""
|
615 |
|
616 |
-
#: classes/freemius/includes/i18n.php:
|
617 |
#, php-format
|
618 |
msgctxt "e.g. expires in 2 months"
|
619 |
msgid "Expires in %s"
|
620 |
msgstr ""
|
621 |
|
622 |
-
#: classes/freemius/includes/i18n.php:
|
623 |
#, php-format
|
624 |
msgctxt "e.g. auto renews in 2 months"
|
625 |
msgid "Auto renews in %s"
|
626 |
msgstr ""
|
627 |
|
628 |
-
#: classes/freemius/includes/i18n.php:
|
629 |
msgid "No expiration"
|
630 |
msgstr ""
|
631 |
|
632 |
-
#: classes/freemius/includes/i18n.php:
|
633 |
msgid "Expired"
|
634 |
msgstr ""
|
635 |
|
636 |
-
#: classes/freemius/includes/i18n.php:
|
637 |
#, php-format
|
638 |
msgid "In %s"
|
639 |
msgstr ""
|
640 |
|
641 |
-
#: classes/freemius/includes/i18n.php:
|
642 |
msgctxt "as plugin version"
|
643 |
msgid "Version"
|
644 |
msgstr ""
|
645 |
|
646 |
-
#: classes/freemius/includes/i18n.php:
|
647 |
msgid "Name"
|
648 |
msgstr ""
|
649 |
|
650 |
-
#: classes/freemius/includes/i18n.php:
|
651 |
#: notifications/class-aal-notification-email.php:15
|
652 |
msgid "Email"
|
653 |
msgstr ""
|
654 |
|
655 |
-
#: classes/freemius/includes/i18n.php:
|
656 |
msgid "Verified"
|
657 |
msgstr ""
|
658 |
|
659 |
-
#: classes/freemius/includes/i18n.php:
|
660 |
msgid "Plugin"
|
661 |
msgstr ""
|
662 |
|
663 |
-
#: classes/freemius/includes/i18n.php:
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
664 |
msgid "Title"
|
665 |
msgstr ""
|
666 |
|
667 |
-
#: classes/freemius/includes/i18n.php:
|
668 |
msgctxt "as WP plugin slug"
|
669 |
msgid "Slug"
|
670 |
msgstr ""
|
671 |
|
672 |
-
#: classes/freemius/includes/i18n.php:
|
673 |
msgid "ID"
|
674 |
msgstr ""
|
675 |
|
676 |
-
#: classes/freemius/includes/i18n.php:
|
677 |
msgid "Users"
|
678 |
msgstr ""
|
679 |
|
680 |
-
#: classes/freemius/includes/i18n.php:
|
681 |
msgid "Plugin Installs"
|
682 |
msgstr ""
|
683 |
|
684 |
-
#: classes/freemius/includes/i18n.php:
|
685 |
msgctxt "like websites"
|
686 |
msgid "Sites"
|
687 |
msgstr ""
|
688 |
|
689 |
-
#: classes/freemius/includes/i18n.php:
|
690 |
msgid "User ID"
|
691 |
msgstr ""
|
692 |
|
693 |
-
#: classes/freemius/includes/i18n.php:
|
694 |
msgid "Site ID"
|
695 |
msgstr ""
|
696 |
|
697 |
-
#: classes/freemius/includes/i18n.php:
|
698 |
msgid "Public Key"
|
699 |
msgstr ""
|
700 |
|
701 |
-
#: classes/freemius/includes/i18n.php:
|
702 |
msgid "Secret Key"
|
703 |
msgstr ""
|
704 |
|
705 |
-
#: classes/freemius/includes/i18n.php:
|
706 |
msgctxt "as secret encryption key missing"
|
707 |
msgid "No Secret"
|
708 |
msgstr ""
|
709 |
|
710 |
-
#: classes/freemius/includes/i18n.php:
|
711 |
msgid "No ID"
|
712 |
msgstr ""
|
713 |
|
714 |
-
#: classes/freemius/includes/i18n.php:
|
715 |
msgctxt "as synchronize license"
|
716 |
msgid "Sync License"
|
717 |
msgstr ""
|
718 |
|
719 |
-
#: classes/freemius/includes/i18n.php:
|
|
|
|
|
|
|
|
|
|
|
720 |
msgid "Deactivate License"
|
721 |
msgstr ""
|
722 |
|
723 |
-
#: classes/freemius/includes/i18n.php:
|
724 |
msgid "Activate"
|
725 |
msgstr ""
|
726 |
|
727 |
-
#: classes/freemius/includes/i18n.php:
|
728 |
msgid "Deactivate"
|
729 |
msgstr ""
|
730 |
|
731 |
-
#: classes/freemius/includes/i18n.php:
|
732 |
msgctxt "active mode"
|
733 |
msgid "Active"
|
734 |
msgstr ""
|
735 |
|
736 |
-
#: classes/freemius/includes/i18n.php:
|
|
|
|
|
|
|
|
|
|
|
737 |
#, php-format
|
738 |
msgid "More information about %s"
|
739 |
msgstr ""
|
740 |
|
741 |
-
#: classes/freemius/includes/i18n.php:
|
742 |
msgid "Localhost"
|
743 |
msgstr ""
|
744 |
|
745 |
-
#: classes/freemius/includes/i18n.php:
|
746 |
#, php-format
|
747 |
msgctxt "as activate Professional plan"
|
748 |
msgid "Activate %s Plan"
|
749 |
msgstr ""
|
750 |
|
751 |
-
#: classes/freemius/includes/i18n.php:
|
752 |
#, php-format
|
753 |
msgid "What is your %s?"
|
754 |
msgstr ""
|
755 |
|
756 |
-
#: classes/freemius/includes/i18n.php:
|
757 |
msgid "Activate this add-on"
|
758 |
msgstr ""
|
759 |
|
760 |
-
#: classes/freemius/includes/i18n.php:
|
761 |
msgid ""
|
762 |
"Deactivating your license will block all premium features, but will enable "
|
763 |
"you to activate the license on another site. Are you sure you want to "
|
764 |
"proceed?"
|
765 |
msgstr ""
|
766 |
|
767 |
-
#: classes/freemius/includes/i18n.php:
|
768 |
#, php-format
|
769 |
msgid ""
|
770 |
"Deleting the account will automatically deactivate your %s plan license so "
|
@@ -773,162 +792,170 @@ msgid ""
|
|
773 |
"account. Are you sure you would like to continue with the deletion?"
|
774 |
msgstr ""
|
775 |
|
776 |
-
#: classes/freemius/includes/i18n.php:
|
777 |
msgid ""
|
778 |
"Deletion is not temporary. Only delete if you no longer want to use this "
|
779 |
"plugin anymore. Are you sure you would like to continue with the deletion?"
|
780 |
msgstr ""
|
781 |
|
782 |
-
#: classes/freemius/includes/i18n.php:
|
783 |
#, php-format
|
784 |
msgid ""
|
785 |
"Downgrading your plan will immediately stop all future recurring payments "
|
786 |
"and your %s plan license will expire in %s."
|
787 |
msgstr ""
|
788 |
|
789 |
-
#: classes/freemius/includes/i18n.php:
|
790 |
#, php-format
|
791 |
msgid ""
|
792 |
"You can still enjoy all %s features but you will not have access to plugin "
|
793 |
"updates and support."
|
794 |
msgstr ""
|
795 |
|
796 |
-
#: classes/freemius/includes/i18n.php:
|
797 |
#, php-format
|
798 |
msgid ""
|
799 |
"Once your license expire you can still use the Free version but you will NOT "
|
800 |
"have access to the %s features."
|
801 |
msgstr ""
|
802 |
|
803 |
-
#: classes/freemius/includes/i18n.php:
|
804 |
msgid "Are you sure you want to proceed?"
|
805 |
msgstr ""
|
806 |
|
807 |
-
#: classes/freemius/includes/i18n.php:
|
808 |
#, php-format
|
809 |
msgid "Add Ons for %s"
|
810 |
msgstr ""
|
811 |
|
812 |
-
#: classes/freemius/includes/i18n.php:
|
813 |
msgid "If you have a moment, please let us know why you are deactivating"
|
814 |
msgstr ""
|
815 |
|
816 |
-
#: classes/freemius/includes/i18n.php:
|
817 |
msgid "Yes - Deactivate"
|
818 |
msgstr ""
|
819 |
|
820 |
-
#: classes/freemius/includes/i18n.php:
|
821 |
msgid "Submit & Deactivate"
|
822 |
msgstr ""
|
823 |
|
824 |
-
#: classes/freemius/includes/i18n.php:
|
825 |
msgctxt "the text of the cancel button of the plugin deactivation dialog box."
|
826 |
msgid "Cancel"
|
827 |
msgstr ""
|
828 |
|
829 |
-
#: classes/freemius/includes/i18n.php:
|
830 |
msgid "I no longer need the plugin"
|
831 |
msgstr ""
|
832 |
|
833 |
-
#: classes/freemius/includes/i18n.php:
|
834 |
msgid "I found a better plugin"
|
835 |
msgstr ""
|
836 |
|
837 |
-
#: classes/freemius/includes/i18n.php:
|
838 |
msgid "I only needed the plugin for a short period"
|
839 |
msgstr ""
|
840 |
|
841 |
-
#: classes/freemius/includes/i18n.php:
|
842 |
msgid "The plugin broke my site"
|
843 |
msgstr ""
|
844 |
|
845 |
-
#: classes/freemius/includes/i18n.php:
|
846 |
msgid "The plugin suddenly stopped working"
|
847 |
msgstr ""
|
848 |
|
849 |
-
#: classes/freemius/includes/i18n.php:
|
850 |
msgid "I can't pay for it anymore"
|
851 |
msgstr ""
|
852 |
|
853 |
-
#: classes/freemius/includes/i18n.php:
|
854 |
msgctxt ""
|
855 |
"the text of the \"other\" reason for deactivating the plugin that is shown "
|
856 |
"in the modal box."
|
857 |
msgid "Other"
|
858 |
msgstr ""
|
859 |
|
860 |
-
#: classes/freemius/includes/i18n.php:
|
861 |
msgid "What's the plugin's name?"
|
862 |
msgstr ""
|
863 |
|
864 |
-
#: classes/freemius/includes/i18n.php:
|
865 |
msgid "What price would you feel comfortable paying?"
|
866 |
msgstr ""
|
867 |
|
868 |
-
#: classes/freemius/includes/i18n.php:
|
869 |
msgid "I couldn't understand how to make it work"
|
870 |
msgstr ""
|
871 |
|
872 |
-
#: classes/freemius/includes/i18n.php:
|
873 |
msgid "The plugin is great, but I need specific feature that you don't support"
|
874 |
msgstr ""
|
875 |
|
876 |
-
#: classes/freemius/includes/i18n.php:
|
877 |
msgid "The plugin is not working"
|
878 |
msgstr ""
|
879 |
|
880 |
-
#: classes/freemius/includes/i18n.php:
|
881 |
msgid "It's not what I was looking for"
|
882 |
msgstr ""
|
883 |
|
884 |
-
#: classes/freemius/includes/i18n.php:
|
885 |
msgid "The plugin didn't work as expected"
|
886 |
msgstr ""
|
887 |
|
888 |
-
#: classes/freemius/includes/i18n.php:
|
889 |
msgid "What feature?"
|
890 |
msgstr ""
|
891 |
|
892 |
-
#: classes/freemius/includes/i18n.php:
|
893 |
msgid "Kindly share what didn't work so we can fix it for future users..."
|
894 |
msgstr ""
|
895 |
|
896 |
-
#: classes/freemius/includes/i18n.php:
|
897 |
msgid "What you've been looking for?"
|
898 |
msgstr ""
|
899 |
|
900 |
-
#: classes/freemius/includes/i18n.php:
|
901 |
msgid "What did you expect?"
|
902 |
msgstr ""
|
903 |
|
904 |
-
#: classes/freemius/includes/i18n.php:
|
905 |
msgid "The plugin didn't work"
|
906 |
msgstr ""
|
907 |
|
908 |
-
#: classes/freemius/includes/i18n.php:
|
909 |
msgid "I don't like to share my information with you"
|
910 |
msgstr ""
|
911 |
|
912 |
-
#: classes/freemius/includes/i18n.php:
|
913 |
#, php-format
|
914 |
msgctxt "greeting"
|
915 |
msgid "Hey %s,"
|
916 |
msgstr ""
|
917 |
|
918 |
-
#: classes/freemius/includes/i18n.php:
|
919 |
#, php-format
|
920 |
msgctxt "a greeting. E.g. Thanks John!"
|
921 |
msgid "Thanks %s!"
|
922 |
msgstr ""
|
923 |
|
924 |
-
#: classes/freemius/includes/i18n.php:
|
925 |
#, php-format
|
926 |
msgid ""
|
927 |
"In order to enjoy all our features and functionality, %s needs to connect "
|
928 |
"your user, %s at %s, to %s"
|
929 |
msgstr ""
|
930 |
|
931 |
-
#: classes/freemius/includes/i18n.php:
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
932 |
#, php-format
|
933 |
msgid ""
|
934 |
"You should receive an activation email for %s to your mailbox at %s. Please "
|
@@ -936,341 +963,414 @@ msgid ""
|
|
936 |
"install."
|
937 |
msgstr ""
|
938 |
|
939 |
-
#: classes/freemius/includes/i18n.php:
|
940 |
msgid "What permissions are being granted?"
|
941 |
msgstr ""
|
942 |
|
943 |
-
#: classes/freemius/includes/i18n.php:
|
944 |
msgid "Your Profile Overview"
|
945 |
msgstr ""
|
946 |
|
947 |
-
#: classes/freemius/includes/i18n.php:
|
948 |
msgid "Name and email address"
|
949 |
msgstr ""
|
950 |
|
951 |
-
#: classes/freemius/includes/i18n.php:
|
952 |
msgid "Your Site Overview"
|
953 |
msgstr ""
|
954 |
|
955 |
-
#: classes/freemius/includes/i18n.php:
|
956 |
-
msgid "Site address
|
957 |
msgstr ""
|
958 |
|
959 |
-
#: classes/freemius/includes/i18n.php:
|
960 |
-
msgid "
|
961 |
msgstr ""
|
962 |
|
963 |
-
#: classes/freemius/includes/i18n.php:
|
964 |
msgid "Activation, deactivation and uninstall"
|
965 |
msgstr ""
|
966 |
|
967 |
-
#: classes/freemius/includes/i18n.php:
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
968 |
msgid "Privacy Policy"
|
969 |
msgstr ""
|
970 |
|
971 |
-
#: classes/freemius/includes/i18n.php:
|
972 |
msgid "Terms of Service"
|
973 |
msgstr ""
|
974 |
|
975 |
-
#: classes/freemius/includes/i18n.php:
|
976 |
msgctxt "as activating plugin"
|
977 |
msgid "Activating"
|
978 |
msgstr ""
|
979 |
|
980 |
-
#: classes/freemius/includes/i18n.php:
|
981 |
msgctxt "button label"
|
982 |
msgid "Allow & Continue"
|
983 |
msgstr ""
|
984 |
|
985 |
-
#: classes/freemius/includes/i18n.php:
|
986 |
msgctxt "verb"
|
987 |
msgid "Skip"
|
988 |
msgstr ""
|
989 |
|
990 |
-
#: classes/freemius/includes/i18n.php:
|
991 |
msgid "Re-send activation email"
|
992 |
msgstr ""
|
993 |
|
994 |
-
#: classes/freemius/includes/i18n.php:
|
995 |
msgid "Screenshots"
|
996 |
msgstr ""
|
997 |
|
998 |
-
#: classes/freemius/includes/i18n.php:
|
999 |
#, php-format
|
1000 |
msgid "Click to view full-size screenshot %d"
|
1001 |
msgstr ""
|
1002 |
|
1003 |
-
#: classes/freemius/includes/i18n.php:
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
1004 |
#, php-format
|
1005 |
msgid "Add Ons of Plugin %s"
|
1006 |
msgstr ""
|
1007 |
|
1008 |
-
#: classes/freemius/includes/i18n.php:
|
1009 |
msgid "Are you sure you want to delete the all Freemius data?"
|
1010 |
msgstr ""
|
1011 |
|
1012 |
-
#: classes/freemius/includes/i18n.php:
|
|
|
|
|
|
|
|
|
1013 |
msgid "Delete All Accounts"
|
1014 |
msgstr ""
|
1015 |
|
1016 |
-
#: classes/freemius/includes/i18n.php:
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
1017 |
msgctxt "as congratulations"
|
1018 |
msgid "Congrats"
|
1019 |
msgstr ""
|
1020 |
|
1021 |
-
#: classes/freemius/includes/i18n.php:
|
1022 |
msgctxt "exclamation"
|
1023 |
msgid "Oops"
|
1024 |
msgstr ""
|
1025 |
|
1026 |
-
#: classes/freemius/includes/i18n.php:
|
1027 |
msgctxt "interjection expressing joy or exuberance"
|
1028 |
msgid "Yee-haw"
|
1029 |
msgstr ""
|
1030 |
|
1031 |
-
#: classes/freemius/includes/i18n.php:
|
1032 |
msgctxt ""
|
1033 |
"(especially in electronic communication) used to express elation, "
|
1034 |
"enthusiasm, or triumph."
|
1035 |
msgid "W00t"
|
1036 |
msgstr ""
|
1037 |
|
1038 |
-
#: classes/freemius/includes/i18n.php:
|
1039 |
msgctxt "a positive response"
|
1040 |
msgid "Right on"
|
1041 |
msgstr ""
|
1042 |
|
1043 |
-
#: classes/freemius/includes/i18n.php:
|
1044 |
msgctxt ""
|
1045 |
"something somebody says when they are thinking about what you have just "
|
1046 |
"said. "
|
1047 |
msgid "Hmm"
|
1048 |
msgstr ""
|
1049 |
|
1050 |
-
#: classes/freemius/includes/i18n.php:
|
1051 |
msgid "O.K"
|
1052 |
msgstr ""
|
1053 |
|
1054 |
-
#: classes/freemius/includes/i18n.php:
|
1055 |
msgctxt "exclamation"
|
1056 |
msgid "Hey"
|
1057 |
msgstr ""
|
1058 |
|
1059 |
-
#: classes/freemius/includes/i18n.php:
|
1060 |
msgctxt "advance notice of something that will need attention."
|
1061 |
msgid "Heads up"
|
1062 |
msgstr ""
|
1063 |
|
1064 |
-
#: classes/freemius/includes/i18n.php:
|
1065 |
msgid "Seems like you got the latest release."
|
1066 |
msgstr ""
|
1067 |
|
1068 |
-
#: classes/freemius/includes/i18n.php:
|
1069 |
msgid "You are all good!"
|
1070 |
msgstr ""
|
1071 |
|
1072 |
-
#: classes/freemius/includes/i18n.php:
|
1073 |
msgid ""
|
1074 |
"Sorry, we could not complete the email update. Another user with the same "
|
1075 |
"email is already registered."
|
1076 |
msgstr ""
|
1077 |
|
1078 |
-
#: classes/freemius/includes/i18n.php:
|
1079 |
#, php-format
|
1080 |
msgid ""
|
1081 |
"If you would like to give up the ownership of the plugin's account to %s "
|
1082 |
"click the Change Ownership button."
|
1083 |
msgstr ""
|
1084 |
|
1085 |
-
#: classes/freemius/includes/i18n.php:
|
1086 |
msgid ""
|
1087 |
"Your email was successfully updated. You should receive an email with "
|
1088 |
"confirmation instructions in few moments."
|
1089 |
msgstr ""
|
1090 |
|
1091 |
-
#: classes/freemius/includes/i18n.php:
|
1092 |
msgid "Your name was successfully updated."
|
1093 |
msgstr ""
|
1094 |
|
1095 |
-
#: classes/freemius/includes/i18n.php:
|
1096 |
#, php-format
|
1097 |
msgid "You have successfully updated your %s."
|
1098 |
msgstr ""
|
1099 |
|
1100 |
-
#: classes/freemius/includes/i18n.php:
|
1101 |
msgid "Please provide your full name."
|
1102 |
msgstr ""
|
1103 |
|
1104 |
-
#: classes/freemius/includes/i18n.php:
|
1105 |
#, php-format
|
1106 |
msgid ""
|
1107 |
"Verification mail was just sent to %s. If you can't find it after 5 min, "
|
1108 |
"please check your spam box."
|
1109 |
msgstr ""
|
1110 |
|
1111 |
-
#: classes/freemius/includes/i18n.php:
|
1112 |
#, php-format
|
1113 |
msgid ""
|
1114 |
"Just letting you know that the add-ons information of %s is being pulled "
|
1115 |
"from external server."
|
1116 |
msgstr ""
|
1117 |
|
1118 |
-
#: classes/freemius/includes/i18n.php:
|
1119 |
msgid "No credit card required"
|
1120 |
msgstr ""
|
1121 |
|
1122 |
-
#: classes/freemius/includes/i18n.php:
|
1123 |
msgid "Premium plugin version was successfully activated."
|
1124 |
msgstr ""
|
1125 |
|
1126 |
-
#: classes/freemius/includes/i18n.php:
|
1127 |
#, php-format
|
1128 |
msgid "The upgrade of %s was successfully completed."
|
1129 |
msgstr ""
|
1130 |
|
1131 |
-
#: classes/freemius/includes/i18n.php:
|
1132 |
#, php-format
|
1133 |
msgid "Your account was successfully activated with the %s plan."
|
1134 |
msgstr ""
|
1135 |
|
1136 |
-
#: classes/freemius/includes/i18n.php:
|
1137 |
#, php-format
|
1138 |
msgid "Download the latest %s version now"
|
1139 |
msgstr ""
|
1140 |
|
1141 |
-
#: classes/freemius/includes/i18n.php:
|
1142 |
msgid "Download the latest version now"
|
1143 |
msgstr ""
|
1144 |
|
1145 |
-
#: classes/freemius/includes/i18n.php:
|
1146 |
#, php-format
|
1147 |
msgctxt "%s - product name, e.g. Facebook add-on was successfully..."
|
1148 |
msgid "%s Add-on was successfully purchased."
|
1149 |
msgstr ""
|
1150 |
|
1151 |
-
#: classes/freemius/includes/i18n.php:
|
1152 |
#, php-format
|
1153 |
msgid "Your %s Add-on plan was successfully upgraded."
|
1154 |
msgstr ""
|
1155 |
|
1156 |
-
#: classes/freemius/includes/i18n.php:
|
1157 |
msgid "Your email has been successfully verified - you are AWESOME!"
|
1158 |
msgstr ""
|
1159 |
|
1160 |
-
#: classes/freemius/includes/i18n.php:
|
1161 |
msgid "Your plan was successfully upgraded."
|
1162 |
msgstr ""
|
1163 |
|
1164 |
-
#: classes/freemius/includes/i18n.php:
|
1165 |
#, php-format
|
1166 |
msgid "Your plan was successfully changed to %s."
|
1167 |
msgstr ""
|
1168 |
|
1169 |
-
#: classes/freemius/includes/i18n.php:
|
1170 |
msgid ""
|
1171 |
"Your license has expired. You can still continue using the free plugin "
|
1172 |
"forever."
|
1173 |
msgstr ""
|
1174 |
|
1175 |
-
#: classes/freemius/includes/i18n.php:
|
1176 |
msgid "Your trial has been successfully started."
|
1177 |
msgstr ""
|
1178 |
|
1179 |
-
#: classes/freemius/includes/i18n.php:
|
1180 |
msgid "Your license was successfully activated."
|
1181 |
msgstr ""
|
1182 |
|
1183 |
-
#: classes/freemius/includes/i18n.php:
|
1184 |
msgid "It looks like your site currently don't have an active license."
|
1185 |
msgstr ""
|
1186 |
|
1187 |
-
#: classes/freemius/includes/i18n.php:
|
1188 |
#, php-format
|
1189 |
msgid "Your license was successfully deactivated, you are back to the %s plan."
|
1190 |
msgstr ""
|
1191 |
|
1192 |
-
#: classes/freemius/includes/i18n.php:
|
1193 |
msgid "It looks like the license deactivation failed."
|
1194 |
msgstr ""
|
1195 |
|
1196 |
-
#: classes/freemius/includes/i18n.php:
|
1197 |
msgid "It looks like the license could not be activated."
|
1198 |
msgstr ""
|
1199 |
|
1200 |
-
#: classes/freemius/includes/i18n.php:
|
1201 |
msgid "Error received from the server:"
|
1202 |
msgstr ""
|
1203 |
|
1204 |
-
#: classes/freemius/includes/i18n.php:
|
1205 |
msgid ""
|
1206 |
"Your trial has expired. You can still continue using all our free features."
|
1207 |
msgstr ""
|
1208 |
|
1209 |
-
#: classes/freemius/includes/i18n.php:
|
1210 |
#, php-format
|
1211 |
msgid ""
|
1212 |
"Your plan was successfully downgraded. Your %s plan license will expire in "
|
1213 |
"%s."
|
1214 |
msgstr ""
|
1215 |
|
1216 |
-
#: classes/freemius/includes/i18n.php:
|
1217 |
msgid ""
|
1218 |
"Seems like we are having some temporary issue with your plan downgrade. "
|
1219 |
"Please try again in few minutes."
|
1220 |
msgstr ""
|
1221 |
|
1222 |
-
#: classes/freemius/includes/i18n.php:
|
1223 |
msgid ""
|
1224 |
"It looks like you are not in trial mode anymore so there's nothing to "
|
1225 |
"cancel :)"
|
1226 |
msgstr ""
|
1227 |
|
1228 |
-
#: classes/freemius/includes/i18n.php:
|
1229 |
#, php-format
|
1230 |
msgid "Your %s Plan trial was successfully cancelled."
|
1231 |
msgstr ""
|
1232 |
|
1233 |
-
#: classes/freemius/includes/i18n.php:
|
1234 |
#, php-format
|
1235 |
msgctxt "%s - numeric version number"
|
1236 |
msgid "Version %s was released."
|
1237 |
msgstr ""
|
1238 |
|
1239 |
-
#: classes/freemius/includes/i18n.php:
|
1240 |
#, php-format
|
1241 |
msgid "Please download %s."
|
1242 |
msgstr ""
|
1243 |
|
1244 |
-
#: classes/freemius/includes/i18n.php:
|
1245 |
#, php-format
|
1246 |
msgctxt "%s - plan name, as the latest professional version here"
|
1247 |
msgid "the latest %s version here"
|
1248 |
msgstr ""
|
1249 |
|
1250 |
-
#: classes/freemius/includes/i18n.php:
|
1251 |
#, php-format
|
1252 |
msgid ""
|
1253 |
"How do you like %s so far? Test all our %s premium features with a %d-day "
|
1254 |
"free trial."
|
1255 |
msgstr ""
|
1256 |
|
1257 |
-
#: classes/freemius/includes/i18n.php:
|
1258 |
msgctxt "call to action"
|
1259 |
msgid "Start free trial"
|
1260 |
msgstr ""
|
1261 |
|
1262 |
-
#: classes/freemius/includes/i18n.php:
|
1263 |
msgid ""
|
1264 |
"Seems like we are having some temporary issue with your trial cancellation. "
|
1265 |
"Please try again in few minutes."
|
1266 |
msgstr ""
|
1267 |
|
1268 |
-
#: classes/freemius/includes/i18n.php:
|
1269 |
#, php-format
|
1270 |
msgid "No commitment for %s days - cancel anytime!"
|
1271 |
msgstr ""
|
1272 |
|
1273 |
-
#: classes/freemius/includes/i18n.php:
|
1274 |
#, php-format
|
1275 |
msgid ""
|
1276 |
"Your license has expired. You can still continue using all the %s features, "
|
@@ -1278,130 +1378,130 @@ msgid ""
|
|
1278 |
"support."
|
1279 |
msgstr ""
|
1280 |
|
1281 |
-
#: classes/freemius/includes/i18n.php:
|
1282 |
#, php-format
|
1283 |
msgid "Couldn't activate %s."
|
1284 |
msgstr ""
|
1285 |
|
1286 |
-
#: classes/freemius/includes/i18n.php:
|
1287 |
msgid "Please contact us with the following message:"
|
1288 |
msgstr ""
|
1289 |
|
1290 |
-
#: classes/freemius/includes/i18n.php:
|
1291 |
msgid ""
|
1292 |
"It looks like your plan did't change. If you did upgrade, it's probably an "
|
1293 |
"issue on our side - sorry."
|
1294 |
msgstr ""
|
1295 |
|
1296 |
-
#: classes/freemius/includes/i18n.php:
|
1297 |
msgid "Please contact us here"
|
1298 |
msgstr ""
|
1299 |
|
1300 |
-
#: classes/freemius/includes/i18n.php:
|
1301 |
#, php-format
|
1302 |
msgid ""
|
1303 |
"I have upgraded my account but when I try to Sync the License, the plan "
|
1304 |
"remains %s."
|
1305 |
msgstr ""
|
1306 |
|
1307 |
-
#: classes/freemius/includes/i18n.php:
|
1308 |
msgid "From unknown reason, the API connectivity test fails."
|
1309 |
msgstr ""
|
1310 |
|
1311 |
-
#: classes/freemius/includes/i18n.php:
|
1312 |
msgid ""
|
1313 |
"We use PHP cURL library for the API calls, which is a very common library "
|
1314 |
"and usually installed out of the box. Unfortunately, cURL is not installed "
|
1315 |
"on your server."
|
1316 |
msgstr ""
|
1317 |
|
1318 |
-
#: classes/freemius/includes/i18n.php:
|
1319 |
msgid ""
|
1320 |
"From unknown reason, CloudFlare, the firewall we use, blocks the connection."
|
1321 |
msgstr ""
|
1322 |
|
1323 |
-
#: classes/freemius/includes/i18n.php:
|
1324 |
#, php-format
|
1325 |
msgctxt "as pluginX requires an access to our API"
|
1326 |
msgid "%s requires an access to our API."
|
1327 |
msgstr ""
|
1328 |
|
1329 |
-
#: classes/freemius/includes/i18n.php:
|
1330 |
msgid ""
|
1331 |
"It looks like your server is using Squid ACL (access control lists), which "
|
1332 |
"blocks the connection."
|
1333 |
msgstr ""
|
1334 |
|
1335 |
-
#: classes/freemius/includes/i18n.php:
|
1336 |
msgid "I don't know what is Squid or ACL, help me!"
|
1337 |
msgstr ""
|
1338 |
|
1339 |
-
#: classes/freemius/includes/i18n.php:
|
1340 |
-
#: classes/freemius/includes/i18n.php:
|
1341 |
#, php-format
|
1342 |
msgid ""
|
1343 |
"We'll make sure to contact your hosting company and resolve the issue. You "
|
1344 |
"will get a follow-up email to %s once we have an update."
|
1345 |
msgstr ""
|
1346 |
|
1347 |
-
#: classes/freemius/includes/i18n.php:
|
1348 |
msgid "I'm a system administrator"
|
1349 |
msgstr ""
|
1350 |
|
1351 |
-
#: classes/freemius/includes/i18n.php:
|
1352 |
#, php-format
|
1353 |
msgid ""
|
1354 |
"Great, please whitelist the following domains: %s. Once you done, deactivate "
|
1355 |
"the plugin and activate it again."
|
1356 |
msgstr ""
|
1357 |
|
1358 |
-
#: classes/freemius/includes/i18n.php:
|
1359 |
msgid "I don't know what is cURL or how to install it, help me!"
|
1360 |
msgstr ""
|
1361 |
|
1362 |
-
#: classes/freemius/includes/i18n.php:
|
1363 |
msgid ""
|
1364 |
"Great, please install cURL and enable it in your php.ini file. To make sure "
|
1365 |
"it was successfully activated, use 'phpinfo()'. Once activated, deactivate "
|
1366 |
"the plugin and reactivate it back again."
|
1367 |
msgstr ""
|
1368 |
|
1369 |
-
#: classes/freemius/includes/i18n.php:
|
1370 |
msgid ""
|
1371 |
"We are sure it's an issue on our side and more than happy to resolve it for "
|
1372 |
"you ASAP if you give us a chance."
|
1373 |
msgstr ""
|
1374 |
|
1375 |
-
#: classes/freemius/includes/i18n.php:
|
1376 |
msgid "Yes - I'm giving you a chance to fix it"
|
1377 |
msgstr ""
|
1378 |
|
1379 |
-
#: classes/freemius/includes/i18n.php:
|
1380 |
#, php-format
|
1381 |
msgid ""
|
1382 |
"We will do our best to whitelist your server and resolve this issue ASAP. "
|
1383 |
"You will get a follow-up email to %s once we have an update."
|
1384 |
msgstr ""
|
1385 |
|
1386 |
-
#: classes/freemius/includes/i18n.php:
|
1387 |
msgid "Let's try your previous version"
|
1388 |
msgstr ""
|
1389 |
|
1390 |
-
#: classes/freemius/includes/i18n.php:
|
1391 |
msgid "Uninstall this version and install the previous one."
|
1392 |
msgstr ""
|
1393 |
|
1394 |
-
#: classes/freemius/includes/i18n.php:
|
1395 |
msgid "That's exhausting, please deactivate"
|
1396 |
msgstr ""
|
1397 |
|
1398 |
-
#: classes/freemius/includes/i18n.php:
|
1399 |
msgid ""
|
1400 |
"We feel your frustration and sincerely apologize for the inconvenience. Hope "
|
1401 |
"to see you again in the future."
|
1402 |
msgstr ""
|
1403 |
|
1404 |
-
#: classes/freemius/includes/i18n.php:
|
1405 |
#, php-format
|
1406 |
msgid ""
|
1407 |
"Thank for giving us the chance to fix it! A message was just sent to our "
|
@@ -1409,7 +1509,7 @@ msgid ""
|
|
1409 |
"Appreciate your patience."
|
1410 |
msgstr ""
|
1411 |
|
1412 |
-
#: classes/freemius/includes/i18n.php:
|
1413 |
#, php-format
|
1414 |
msgctxt "%1s - plugin title, %2s - API domain"
|
1415 |
msgid ""
|
@@ -1417,13 +1517,13 @@ msgid ""
|
|
1417 |
"%1s license synchronization. Please contact your host to whitelist %2s"
|
1418 |
msgstr ""
|
1419 |
|
1420 |
-
#: classes/freemius/includes/i18n.php:
|
1421 |
msgid ""
|
1422 |
"It seems like one of the authentication parameters is wrong. Update your "
|
1423 |
"Public Key, Secret Key & User ID, and try again."
|
1424 |
msgstr ""
|
1425 |
|
1426 |
-
#: classes/freemius/includes/i18n.php:
|
1427 |
#, php-format
|
1428 |
msgid ""
|
1429 |
"Please check your mailbox, you should receive an email via %s to confirm the "
|
@@ -1431,46 +1531,42 @@ msgid ""
|
|
1431 |
"the next 15 min. If you cannot find the email, please check your spam folder."
|
1432 |
msgstr ""
|
1433 |
|
1434 |
-
#: classes/freemius/includes/i18n.php:
|
1435 |
#, php-format
|
1436 |
msgid ""
|
1437 |
"Thanks for confirming the ownership change. An email was just sent to %s for "
|
1438 |
"final approval."
|
1439 |
msgstr ""
|
1440 |
|
1441 |
-
#: classes/freemius/includes/i18n.php:
|
1442 |
#, php-format
|
1443 |
msgid "%s is the new owner of the account."
|
1444 |
msgstr ""
|
1445 |
|
1446 |
-
#: classes/freemius/includes/i18n.php:
|
1447 |
-
msgid "Freemius Debug"
|
1448 |
-
msgstr ""
|
1449 |
-
|
1450 |
-
#: classes/freemius/includes/i18n.php:243
|
1451 |
#, php-format
|
1452 |
msgctxt "addonX cannot run without pluginY"
|
1453 |
msgid "%s cannot run without %s."
|
1454 |
msgstr ""
|
1455 |
|
1456 |
-
#: classes/freemius/includes/i18n.php:
|
1457 |
#, php-format
|
1458 |
msgctxt "addonX cannot run..."
|
1459 |
msgid "%s cannot run without the plugin."
|
1460 |
msgstr ""
|
1461 |
|
1462 |
-
#: classes/freemius/includes/i18n.php:
|
1463 |
#, php-format
|
1464 |
msgctxt "pluginX activation was successfully..."
|
1465 |
msgid "%s activation was successfully completed."
|
1466 |
msgstr ""
|
1467 |
|
1468 |
-
#: classes/freemius/includes/i18n.php:
|
1469 |
msgctxt "Plugin installer section title"
|
1470 |
msgid "Features & Pricing"
|
1471 |
msgstr ""
|
1472 |
|
1473 |
-
#: classes/freemius/templates/account.php:
|
1474 |
msgctxt "verb"
|
1475 |
msgid "Edit"
|
1476 |
msgstr ""
|
6 |
#, fuzzy
|
7 |
msgid ""
|
8 |
msgstr ""
|
9 |
+
"Project-Id-Version: aryo-activity-log 2.2.8\n"
|
10 |
"Report-Msgid-Bugs-To: \n"
|
11 |
+
"POT-Creation-Date: 2016-01-17 16:31+0200\n"
|
12 |
"PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n"
|
13 |
"Last-Translator: FULL NAME <EMAIL@ADDRESS>\n"
|
14 |
"Language-Team: LANGUAGE <LL@li.org>\n"
|
65 |
msgstr ""
|
66 |
|
67 |
#: classes/class-aal-activity-log-list-table.php:142
|
68 |
+
#: classes/freemius/includes/fs-plugin-functions.php:261
|
69 |
#, php-format
|
70 |
msgid "%s ago"
|
71 |
msgstr ""
|
303 |
msgid "Other Notes"
|
304 |
msgstr ""
|
305 |
|
306 |
+
#: classes/freemius/includes/fs-plugin-functions.php:118
|
307 |
msgid "Plugin Install"
|
308 |
msgstr ""
|
309 |
|
310 |
+
#: classes/freemius/includes/fs-plugin-functions.php:251
|
311 |
msgid "Version:"
|
312 |
msgstr ""
|
313 |
|
314 |
+
#: classes/freemius/includes/fs-plugin-functions.php:255
|
315 |
msgid "Author:"
|
316 |
msgstr ""
|
317 |
|
318 |
+
#: classes/freemius/includes/fs-plugin-functions.php:259
|
319 |
msgid "Last Updated:"
|
320 |
msgstr ""
|
321 |
|
322 |
+
#: classes/freemius/includes/fs-plugin-functions.php:266
|
323 |
msgid "Requires WordPress Version:"
|
324 |
msgstr ""
|
325 |
|
326 |
+
#: classes/freemius/includes/fs-plugin-functions.php:266
|
327 |
#, php-format
|
328 |
msgid "%s or higher"
|
329 |
msgstr ""
|
330 |
|
331 |
+
#: classes/freemius/includes/fs-plugin-functions.php:270
|
332 |
msgid "Compatible up to:"
|
333 |
msgstr ""
|
334 |
|
335 |
+
#: classes/freemius/includes/fs-plugin-functions.php:274
|
336 |
msgid "Downloaded:"
|
337 |
msgstr ""
|
338 |
|
339 |
+
#: classes/freemius/includes/fs-plugin-functions.php:274
|
340 |
#, php-format
|
341 |
msgid "%s time"
|
342 |
msgid_plural "%s times"
|
343 |
msgstr[0] ""
|
344 |
msgstr[1] ""
|
345 |
|
346 |
+
#: classes/freemius/includes/fs-plugin-functions.php:279
|
347 |
msgid "WordPress.org Plugin Page »"
|
348 |
msgstr ""
|
349 |
|
350 |
+
#: classes/freemius/includes/fs-plugin-functions.php:284
|
351 |
msgid "Plugin Homepage »"
|
352 |
msgstr ""
|
353 |
|
354 |
+
#: classes/freemius/includes/fs-plugin-functions.php:289
|
355 |
+
#: classes/freemius/includes/fs-plugin-functions.php:346
|
356 |
msgid "Donate to this plugin »"
|
357 |
msgstr ""
|
358 |
|
359 |
+
#: classes/freemius/includes/fs-plugin-functions.php:295
|
360 |
msgid "Average Rating"
|
361 |
msgstr ""
|
362 |
|
363 |
+
#: classes/freemius/includes/fs-plugin-functions.php:301
|
364 |
#, php-format
|
365 |
msgid "(based on %s rating)"
|
366 |
msgid_plural "(based on %s ratings)"
|
367 |
msgstr[0] ""
|
368 |
msgstr[1] ""
|
369 |
|
370 |
+
#: classes/freemius/includes/fs-plugin-functions.php:314
|
371 |
#, php-format
|
372 |
msgid "Click to see reviews that provided a rating of %d star"
|
373 |
msgid_plural "Click to see reviews that provided a rating of %d stars"
|
374 |
msgstr[0] ""
|
375 |
msgstr[1] ""
|
376 |
|
377 |
+
#: classes/freemius/includes/fs-plugin-functions.php:314
|
378 |
#, php-format
|
379 |
msgid "%d star"
|
380 |
msgid_plural "%d stars"
|
381 |
msgstr[0] ""
|
382 |
msgstr[1] ""
|
383 |
|
384 |
+
#: classes/freemius/includes/fs-plugin-functions.php:325
|
385 |
msgid "Contributors"
|
386 |
msgstr ""
|
387 |
|
|
|
388 |
#: classes/freemius/includes/fs-plugin-functions.php:353
|
389 |
+
#: classes/freemius/includes/fs-plugin-functions.php:355
|
390 |
msgid "Warning:"
|
391 |
msgstr ""
|
392 |
|
393 |
+
#: classes/freemius/includes/fs-plugin-functions.php:353
|
394 |
msgid "This plugin has not been tested with your current version of WordPress."
|
395 |
msgstr ""
|
396 |
|
397 |
+
#: classes/freemius/includes/fs-plugin-functions.php:355
|
398 |
msgid ""
|
399 |
"This plugin has not been marked as compatible with your version of WordPress."
|
400 |
msgstr ""
|
401 |
|
402 |
+
#: classes/freemius/includes/fs-plugin-functions.php:392
|
403 |
+
#: classes/freemius/includes/i18n.php:99
|
404 |
msgid "Install Now"
|
405 |
msgstr ""
|
406 |
|
407 |
+
#: classes/freemius/includes/fs-plugin-functions.php:397
|
408 |
+
#: classes/freemius/includes/i18n.php:100
|
409 |
msgid "Install Update Now"
|
410 |
msgstr ""
|
411 |
|
412 |
+
#: classes/freemius/includes/fs-plugin-functions.php:401
|
413 |
#, php-format
|
414 |
msgid "Newer Version (%s) Installed"
|
415 |
msgstr ""
|
416 |
|
417 |
+
#: classes/freemius/includes/fs-plugin-functions.php:404
|
418 |
msgid "Latest Version Installed"
|
419 |
msgstr ""
|
420 |
|
421 |
+
#: classes/freemius/includes/i18n.php:24
|
422 |
msgid "Account"
|
423 |
msgstr ""
|
424 |
|
425 |
+
#: classes/freemius/includes/i18n.php:25
|
426 |
msgid "Add On"
|
427 |
msgstr ""
|
428 |
|
429 |
+
#: classes/freemius/includes/i18n.php:26
|
430 |
msgid "Contact Us"
|
431 |
msgstr ""
|
432 |
|
433 |
+
#: classes/freemius/includes/i18n.php:27
|
434 |
msgid "Change Ownership"
|
435 |
msgstr ""
|
436 |
|
437 |
+
#: classes/freemius/includes/i18n.php:28
|
438 |
msgid "Support"
|
439 |
msgstr ""
|
440 |
|
441 |
+
#: classes/freemius/includes/i18n.php:29
|
442 |
msgid "Support Forum"
|
443 |
msgstr ""
|
444 |
|
445 |
+
#: classes/freemius/includes/i18n.php:30
|
446 |
msgid "Add Ons"
|
447 |
msgstr ""
|
448 |
|
449 |
+
#: classes/freemius/includes/i18n.php:31
|
450 |
msgctxt "verb"
|
451 |
msgid "Upgrade"
|
452 |
msgstr ""
|
453 |
|
454 |
+
#: classes/freemius/includes/i18n.php:32
|
455 |
msgid "Awesome"
|
456 |
msgstr ""
|
457 |
|
458 |
+
#: classes/freemius/includes/i18n.php:33
|
459 |
msgctxt "noun"
|
460 |
msgid "Pricing"
|
461 |
msgstr ""
|
462 |
|
463 |
+
#: classes/freemius/includes/i18n.php:34
|
464 |
msgctxt "noun"
|
465 |
msgid "Price"
|
466 |
msgstr ""
|
467 |
|
468 |
+
#: classes/freemius/includes/i18n.php:35
|
469 |
msgid "Unlimited Updates"
|
470 |
msgstr ""
|
471 |
|
472 |
+
#: classes/freemius/includes/i18n.php:36
|
473 |
msgctxt "verb"
|
474 |
msgid "Downgrade"
|
475 |
msgstr ""
|
476 |
|
477 |
+
#: classes/freemius/includes/i18n.php:37
|
478 |
msgid "Free Trial"
|
479 |
msgstr ""
|
480 |
|
481 |
+
#: classes/freemius/includes/i18n.php:38
|
482 |
msgid "Details"
|
483 |
msgstr ""
|
484 |
|
485 |
+
#: classes/freemius/includes/i18n.php:39
|
486 |
msgid "Account Details"
|
487 |
msgstr ""
|
488 |
|
489 |
+
#: classes/freemius/includes/i18n.php:40
|
490 |
msgctxt "verb"
|
491 |
msgid "Delete"
|
492 |
msgstr ""
|
493 |
|
494 |
+
#: classes/freemius/includes/i18n.php:41
|
495 |
msgid "Delete Account"
|
496 |
msgstr ""
|
497 |
|
498 |
+
#: classes/freemius/includes/i18n.php:42
|
499 |
msgctxt "as close a window"
|
500 |
msgid "Dismiss"
|
501 |
msgstr ""
|
502 |
|
503 |
+
#: classes/freemius/includes/i18n.php:43
|
504 |
msgctxt "as product pricing plan"
|
505 |
msgid "Plan"
|
506 |
msgstr ""
|
507 |
|
508 |
+
#: classes/freemius/includes/i18n.php:44
|
509 |
msgid "Change Plan"
|
510 |
msgstr ""
|
511 |
|
512 |
+
#: classes/freemius/includes/i18n.php:45
|
513 |
#, php-format
|
514 |
msgctxt "as download professional version"
|
515 |
msgid "Download %s Version"
|
516 |
msgstr ""
|
517 |
|
518 |
+
#: classes/freemius/includes/i18n.php:46
|
519 |
#, php-format
|
520 |
msgctxt "as download professional version now"
|
521 |
msgid "Download %s version now"
|
522 |
msgstr ""
|
523 |
|
524 |
+
#: classes/freemius/includes/i18n.php:47
|
525 |
msgctxt "as download latest version"
|
526 |
msgid "Download Latest"
|
527 |
msgstr ""
|
528 |
|
529 |
+
#: classes/freemius/includes/i18n.php:48
|
530 |
#, php-format
|
531 |
msgctxt "E.g. you have a professional license."
|
532 |
msgid "You have a %s license."
|
533 |
msgstr ""
|
534 |
|
535 |
+
#: classes/freemius/includes/i18n.php:49
|
536 |
msgid "New"
|
537 |
msgstr ""
|
538 |
|
539 |
+
#: classes/freemius/includes/i18n.php:50
|
540 |
msgid "Free"
|
541 |
msgstr ""
|
542 |
|
543 |
+
#: classes/freemius/includes/i18n.php:51
|
544 |
msgctxt "as trial plan"
|
545 |
msgid "Trial"
|
546 |
msgstr ""
|
547 |
|
548 |
+
#: classes/freemius/includes/i18n.php:52
|
549 |
msgctxt "verb"
|
550 |
msgid "Purchase"
|
551 |
msgstr ""
|
552 |
|
553 |
+
#: classes/freemius/includes/i18n.php:53
|
554 |
msgid "Single Site License"
|
555 |
msgstr ""
|
556 |
|
557 |
+
#: classes/freemius/includes/i18n.php:54
|
558 |
msgid "Unlimited Licenses"
|
559 |
msgstr ""
|
560 |
|
561 |
+
#: classes/freemius/includes/i18n.php:55
|
562 |
#, php-format
|
563 |
msgid "Up to %s Sites"
|
564 |
msgstr ""
|
565 |
|
566 |
+
#: classes/freemius/includes/i18n.php:56
|
567 |
#, php-format
|
568 |
msgctxt "e.g. Professional Plan"
|
569 |
msgid "%s Plan"
|
570 |
msgstr ""
|
571 |
|
572 |
+
#: classes/freemius/includes/i18n.php:57
|
573 |
#, php-format
|
574 |
msgid "You are just one step away - %s"
|
575 |
msgstr ""
|
576 |
|
577 |
+
#: classes/freemius/includes/i18n.php:58
|
578 |
#, php-format
|
579 |
msgctxt "%s - plugin name. As complete \"Jetpack\" activation now"
|
580 |
msgid "Complete \"%s\" Activation Now"
|
581 |
msgstr ""
|
582 |
|
583 |
+
#: classes/freemius/includes/i18n.php:59
|
584 |
#, php-format
|
585 |
msgid "We made a few tweaks to the plugin, %s"
|
586 |
msgstr ""
|
587 |
|
588 |
+
#: classes/freemius/includes/i18n.php:60
|
589 |
#, php-format
|
590 |
msgid "Opt-in to make \"%s\" Better!"
|
591 |
msgstr ""
|
592 |
|
593 |
+
#: classes/freemius/includes/i18n.php:61
|
594 |
msgid "Error"
|
595 |
msgstr ""
|
596 |
|
597 |
+
#: classes/freemius/includes/i18n.php:62
|
598 |
msgid ""
|
599 |
"Freemius SDK couldn't find the plugin's main file. Please contact "
|
600 |
"sdk@freemius.com with the current error."
|
601 |
msgstr ""
|
602 |
|
603 |
+
#: classes/freemius/includes/i18n.php:65
|
604 |
msgctxt "as expiration date"
|
605 |
msgid "Expiration"
|
606 |
msgstr ""
|
607 |
|
608 |
+
#: classes/freemius/includes/i18n.php:66
|
609 |
msgid "not verified"
|
610 |
msgstr ""
|
611 |
|
612 |
+
#: classes/freemius/includes/i18n.php:67
|
613 |
msgid "Verify Email"
|
614 |
msgstr ""
|
615 |
|
616 |
+
#: classes/freemius/includes/i18n.php:68
|
617 |
#, php-format
|
618 |
msgctxt "e.g. expires in 2 months"
|
619 |
msgid "Expires in %s"
|
620 |
msgstr ""
|
621 |
|
622 |
+
#: classes/freemius/includes/i18n.php:69
|
623 |
#, php-format
|
624 |
msgctxt "e.g. auto renews in 2 months"
|
625 |
msgid "Auto renews in %s"
|
626 |
msgstr ""
|
627 |
|
628 |
+
#: classes/freemius/includes/i18n.php:70
|
629 |
msgid "No expiration"
|
630 |
msgstr ""
|
631 |
|
632 |
+
#: classes/freemius/includes/i18n.php:71
|
633 |
msgid "Expired"
|
634 |
msgstr ""
|
635 |
|
636 |
+
#: classes/freemius/includes/i18n.php:72
|
637 |
#, php-format
|
638 |
msgid "In %s"
|
639 |
msgstr ""
|
640 |
|
641 |
+
#: classes/freemius/includes/i18n.php:73
|
642 |
msgctxt "as plugin version"
|
643 |
msgid "Version"
|
644 |
msgstr ""
|
645 |
|
646 |
+
#: classes/freemius/includes/i18n.php:74
|
647 |
msgid "Name"
|
648 |
msgstr ""
|
649 |
|
650 |
+
#: classes/freemius/includes/i18n.php:75
|
651 |
#: notifications/class-aal-notification-email.php:15
|
652 |
msgid "Email"
|
653 |
msgstr ""
|
654 |
|
655 |
+
#: classes/freemius/includes/i18n.php:76
|
656 |
msgid "Verified"
|
657 |
msgstr ""
|
658 |
|
659 |
+
#: classes/freemius/includes/i18n.php:77 language/strings.php:29
|
660 |
msgid "Plugin"
|
661 |
msgstr ""
|
662 |
|
663 |
+
#: classes/freemius/includes/i18n.php:78
|
664 |
+
msgid "Plugins"
|
665 |
+
msgstr ""
|
666 |
+
|
667 |
+
#: classes/freemius/includes/i18n.php:79
|
668 |
+
msgctxt "as file/folder path"
|
669 |
+
msgid "Path"
|
670 |
+
msgstr ""
|
671 |
+
|
672 |
+
#: classes/freemius/includes/i18n.php:80
|
673 |
msgid "Title"
|
674 |
msgstr ""
|
675 |
|
676 |
+
#: classes/freemius/includes/i18n.php:81
|
677 |
msgctxt "as WP plugin slug"
|
678 |
msgid "Slug"
|
679 |
msgstr ""
|
680 |
|
681 |
+
#: classes/freemius/includes/i18n.php:82
|
682 |
msgid "ID"
|
683 |
msgstr ""
|
684 |
|
685 |
+
#: classes/freemius/includes/i18n.php:83
|
686 |
msgid "Users"
|
687 |
msgstr ""
|
688 |
|
689 |
+
#: classes/freemius/includes/i18n.php:84
|
690 |
msgid "Plugin Installs"
|
691 |
msgstr ""
|
692 |
|
693 |
+
#: classes/freemius/includes/i18n.php:85
|
694 |
msgctxt "like websites"
|
695 |
msgid "Sites"
|
696 |
msgstr ""
|
697 |
|
698 |
+
#: classes/freemius/includes/i18n.php:86
|
699 |
msgid "User ID"
|
700 |
msgstr ""
|
701 |
|
702 |
+
#: classes/freemius/includes/i18n.php:87
|
703 |
msgid "Site ID"
|
704 |
msgstr ""
|
705 |
|
706 |
+
#: classes/freemius/includes/i18n.php:88
|
707 |
msgid "Public Key"
|
708 |
msgstr ""
|
709 |
|
710 |
+
#: classes/freemius/includes/i18n.php:89
|
711 |
msgid "Secret Key"
|
712 |
msgstr ""
|
713 |
|
714 |
+
#: classes/freemius/includes/i18n.php:90
|
715 |
msgctxt "as secret encryption key missing"
|
716 |
msgid "No Secret"
|
717 |
msgstr ""
|
718 |
|
719 |
+
#: classes/freemius/includes/i18n.php:91
|
720 |
msgid "No ID"
|
721 |
msgstr ""
|
722 |
|
723 |
+
#: classes/freemius/includes/i18n.php:92
|
724 |
msgctxt "as synchronize license"
|
725 |
msgid "Sync License"
|
726 |
msgstr ""
|
727 |
|
728 |
+
#: classes/freemius/includes/i18n.php:93
|
729 |
+
msgctxt "as synchronize"
|
730 |
+
msgid "Sync"
|
731 |
+
msgstr ""
|
732 |
+
|
733 |
+
#: classes/freemius/includes/i18n.php:94
|
734 |
msgid "Deactivate License"
|
735 |
msgstr ""
|
736 |
|
737 |
+
#: classes/freemius/includes/i18n.php:95
|
738 |
msgid "Activate"
|
739 |
msgstr ""
|
740 |
|
741 |
+
#: classes/freemius/includes/i18n.php:96 classes/freemius/includes/i18n.php:118
|
742 |
msgid "Deactivate"
|
743 |
msgstr ""
|
744 |
|
745 |
+
#: classes/freemius/includes/i18n.php:97
|
746 |
msgctxt "active mode"
|
747 |
msgid "Active"
|
748 |
msgstr ""
|
749 |
|
750 |
+
#: classes/freemius/includes/i18n.php:98
|
751 |
+
msgctxt "is active mode?"
|
752 |
+
msgid "Is Active"
|
753 |
+
msgstr ""
|
754 |
+
|
755 |
+
#: classes/freemius/includes/i18n.php:101
|
756 |
#, php-format
|
757 |
msgid "More information about %s"
|
758 |
msgstr ""
|
759 |
|
760 |
+
#: classes/freemius/includes/i18n.php:102
|
761 |
msgid "Localhost"
|
762 |
msgstr ""
|
763 |
|
764 |
+
#: classes/freemius/includes/i18n.php:103
|
765 |
#, php-format
|
766 |
msgctxt "as activate Professional plan"
|
767 |
msgid "Activate %s Plan"
|
768 |
msgstr ""
|
769 |
|
770 |
+
#: classes/freemius/includes/i18n.php:104
|
771 |
#, php-format
|
772 |
msgid "What is your %s?"
|
773 |
msgstr ""
|
774 |
|
775 |
+
#: classes/freemius/includes/i18n.php:105
|
776 |
msgid "Activate this add-on"
|
777 |
msgstr ""
|
778 |
|
779 |
+
#: classes/freemius/includes/i18n.php:106
|
780 |
msgid ""
|
781 |
"Deactivating your license will block all premium features, but will enable "
|
782 |
"you to activate the license on another site. Are you sure you want to "
|
783 |
"proceed?"
|
784 |
msgstr ""
|
785 |
|
786 |
+
#: classes/freemius/includes/i18n.php:107
|
787 |
#, php-format
|
788 |
msgid ""
|
789 |
"Deleting the account will automatically deactivate your %s plan license so "
|
792 |
"account. Are you sure you would like to continue with the deletion?"
|
793 |
msgstr ""
|
794 |
|
795 |
+
#: classes/freemius/includes/i18n.php:108
|
796 |
msgid ""
|
797 |
"Deletion is not temporary. Only delete if you no longer want to use this "
|
798 |
"plugin anymore. Are you sure you would like to continue with the deletion?"
|
799 |
msgstr ""
|
800 |
|
801 |
+
#: classes/freemius/includes/i18n.php:109
|
802 |
#, php-format
|
803 |
msgid ""
|
804 |
"Downgrading your plan will immediately stop all future recurring payments "
|
805 |
"and your %s plan license will expire in %s."
|
806 |
msgstr ""
|
807 |
|
808 |
+
#: classes/freemius/includes/i18n.php:110
|
809 |
#, php-format
|
810 |
msgid ""
|
811 |
"You can still enjoy all %s features but you will not have access to plugin "
|
812 |
"updates and support."
|
813 |
msgstr ""
|
814 |
|
815 |
+
#: classes/freemius/includes/i18n.php:111
|
816 |
#, php-format
|
817 |
msgid ""
|
818 |
"Once your license expire you can still use the Free version but you will NOT "
|
819 |
"have access to the %s features."
|
820 |
msgstr ""
|
821 |
|
822 |
+
#: classes/freemius/includes/i18n.php:112
|
823 |
msgid "Are you sure you want to proceed?"
|
824 |
msgstr ""
|
825 |
|
826 |
+
#: classes/freemius/includes/i18n.php:115
|
827 |
#, php-format
|
828 |
msgid "Add Ons for %s"
|
829 |
msgstr ""
|
830 |
|
831 |
+
#: classes/freemius/includes/i18n.php:117
|
832 |
msgid "If you have a moment, please let us know why you are deactivating"
|
833 |
msgstr ""
|
834 |
|
835 |
+
#: classes/freemius/includes/i18n.php:119
|
836 |
msgid "Yes - Deactivate"
|
837 |
msgstr ""
|
838 |
|
839 |
+
#: classes/freemius/includes/i18n.php:120
|
840 |
msgid "Submit & Deactivate"
|
841 |
msgstr ""
|
842 |
|
843 |
+
#: classes/freemius/includes/i18n.php:121
|
844 |
msgctxt "the text of the cancel button of the plugin deactivation dialog box."
|
845 |
msgid "Cancel"
|
846 |
msgstr ""
|
847 |
|
848 |
+
#: classes/freemius/includes/i18n.php:122
|
849 |
msgid "I no longer need the plugin"
|
850 |
msgstr ""
|
851 |
|
852 |
+
#: classes/freemius/includes/i18n.php:123
|
853 |
msgid "I found a better plugin"
|
854 |
msgstr ""
|
855 |
|
856 |
+
#: classes/freemius/includes/i18n.php:124
|
857 |
msgid "I only needed the plugin for a short period"
|
858 |
msgstr ""
|
859 |
|
860 |
+
#: classes/freemius/includes/i18n.php:125
|
861 |
msgid "The plugin broke my site"
|
862 |
msgstr ""
|
863 |
|
864 |
+
#: classes/freemius/includes/i18n.php:126
|
865 |
msgid "The plugin suddenly stopped working"
|
866 |
msgstr ""
|
867 |
|
868 |
+
#: classes/freemius/includes/i18n.php:127
|
869 |
msgid "I can't pay for it anymore"
|
870 |
msgstr ""
|
871 |
|
872 |
+
#: classes/freemius/includes/i18n.php:128
|
873 |
msgctxt ""
|
874 |
"the text of the \"other\" reason for deactivating the plugin that is shown "
|
875 |
"in the modal box."
|
876 |
msgid "Other"
|
877 |
msgstr ""
|
878 |
|
879 |
+
#: classes/freemius/includes/i18n.php:129
|
880 |
msgid "What's the plugin's name?"
|
881 |
msgstr ""
|
882 |
|
883 |
+
#: classes/freemius/includes/i18n.php:130
|
884 |
msgid "What price would you feel comfortable paying?"
|
885 |
msgstr ""
|
886 |
|
887 |
+
#: classes/freemius/includes/i18n.php:131
|
888 |
msgid "I couldn't understand how to make it work"
|
889 |
msgstr ""
|
890 |
|
891 |
+
#: classes/freemius/includes/i18n.php:132
|
892 |
msgid "The plugin is great, but I need specific feature that you don't support"
|
893 |
msgstr ""
|
894 |
|
895 |
+
#: classes/freemius/includes/i18n.php:133
|
896 |
msgid "The plugin is not working"
|
897 |
msgstr ""
|
898 |
|
899 |
+
#: classes/freemius/includes/i18n.php:134
|
900 |
msgid "It's not what I was looking for"
|
901 |
msgstr ""
|
902 |
|
903 |
+
#: classes/freemius/includes/i18n.php:135
|
904 |
msgid "The plugin didn't work as expected"
|
905 |
msgstr ""
|
906 |
|
907 |
+
#: classes/freemius/includes/i18n.php:136
|
908 |
msgid "What feature?"
|
909 |
msgstr ""
|
910 |
|
911 |
+
#: classes/freemius/includes/i18n.php:137
|
912 |
msgid "Kindly share what didn't work so we can fix it for future users..."
|
913 |
msgstr ""
|
914 |
|
915 |
+
#: classes/freemius/includes/i18n.php:138
|
916 |
msgid "What you've been looking for?"
|
917 |
msgstr ""
|
918 |
|
919 |
+
#: classes/freemius/includes/i18n.php:139
|
920 |
msgid "What did you expect?"
|
921 |
msgstr ""
|
922 |
|
923 |
+
#: classes/freemius/includes/i18n.php:140
|
924 |
msgid "The plugin didn't work"
|
925 |
msgstr ""
|
926 |
|
927 |
+
#: classes/freemius/includes/i18n.php:141
|
928 |
msgid "I don't like to share my information with you"
|
929 |
msgstr ""
|
930 |
|
931 |
+
#: classes/freemius/includes/i18n.php:145
|
932 |
#, php-format
|
933 |
msgctxt "greeting"
|
934 |
msgid "Hey %s,"
|
935 |
msgstr ""
|
936 |
|
937 |
+
#: classes/freemius/includes/i18n.php:146
|
938 |
#, php-format
|
939 |
msgctxt "a greeting. E.g. Thanks John!"
|
940 |
msgid "Thanks %s!"
|
941 |
msgstr ""
|
942 |
|
943 |
+
#: classes/freemius/includes/i18n.php:147
|
944 |
#, php-format
|
945 |
msgid ""
|
946 |
"In order to enjoy all our features and functionality, %s needs to connect "
|
947 |
"your user, %s at %s, to %s"
|
948 |
msgstr ""
|
949 |
|
950 |
+
#: classes/freemius/includes/i18n.php:148
|
951 |
+
#, php-format
|
952 |
+
msgid ""
|
953 |
+
"Please help us improve %2$s! If you opt-in, some data about your usage of "
|
954 |
+
"%2$s will be sent to %5$s. If you skip this, that's okay! %2$s will still "
|
955 |
+
"work just fine."
|
956 |
+
msgstr ""
|
957 |
+
|
958 |
+
#: classes/freemius/includes/i18n.php:149
|
959 |
#, php-format
|
960 |
msgid ""
|
961 |
"You should receive an activation email for %s to your mailbox at %s. Please "
|
963 |
"install."
|
964 |
msgstr ""
|
965 |
|
966 |
+
#: classes/freemius/includes/i18n.php:150
|
967 |
msgid "What permissions are being granted?"
|
968 |
msgstr ""
|
969 |
|
970 |
+
#: classes/freemius/includes/i18n.php:151
|
971 |
msgid "Your Profile Overview"
|
972 |
msgstr ""
|
973 |
|
974 |
+
#: classes/freemius/includes/i18n.php:152
|
975 |
msgid "Name and email address"
|
976 |
msgstr ""
|
977 |
|
978 |
+
#: classes/freemius/includes/i18n.php:153
|
979 |
msgid "Your Site Overview"
|
980 |
msgstr ""
|
981 |
|
982 |
+
#: classes/freemius/includes/i18n.php:154
|
983 |
+
msgid "Site address, WordPress version, PHP Version"
|
984 |
msgstr ""
|
985 |
|
986 |
+
#: classes/freemius/includes/i18n.php:155
|
987 |
+
msgid "Plugin Events"
|
988 |
msgstr ""
|
989 |
|
990 |
+
#: classes/freemius/includes/i18n.php:156
|
991 |
msgid "Activation, deactivation and uninstall"
|
992 |
msgstr ""
|
993 |
|
994 |
+
#: classes/freemius/includes/i18n.php:157
|
995 |
+
msgid "Newsletter"
|
996 |
+
msgstr ""
|
997 |
+
|
998 |
+
#: classes/freemius/includes/i18n.php:158
|
999 |
+
msgid "Updates, announcements, marketing, no spam"
|
1000 |
+
msgstr ""
|
1001 |
+
|
1002 |
+
#: classes/freemius/includes/i18n.php:159
|
1003 |
msgid "Privacy Policy"
|
1004 |
msgstr ""
|
1005 |
|
1006 |
+
#: classes/freemius/includes/i18n.php:160
|
1007 |
msgid "Terms of Service"
|
1008 |
msgstr ""
|
1009 |
|
1010 |
+
#: classes/freemius/includes/i18n.php:161
|
1011 |
msgctxt "as activating plugin"
|
1012 |
msgid "Activating"
|
1013 |
msgstr ""
|
1014 |
|
1015 |
+
#: classes/freemius/includes/i18n.php:162
|
1016 |
msgctxt "button label"
|
1017 |
msgid "Allow & Continue"
|
1018 |
msgstr ""
|
1019 |
|
1020 |
+
#: classes/freemius/includes/i18n.php:163
|
1021 |
msgctxt "verb"
|
1022 |
msgid "Skip"
|
1023 |
msgstr ""
|
1024 |
|
1025 |
+
#: classes/freemius/includes/i18n.php:164
|
1026 |
msgid "Re-send activation email"
|
1027 |
msgstr ""
|
1028 |
|
1029 |
+
#: classes/freemius/includes/i18n.php:168
|
1030 |
msgid "Screenshots"
|
1031 |
msgstr ""
|
1032 |
|
1033 |
+
#: classes/freemius/includes/i18n.php:169
|
1034 |
#, php-format
|
1035 |
msgid "Click to view full-size screenshot %d"
|
1036 |
msgstr ""
|
1037 |
|
1038 |
+
#: classes/freemius/includes/i18n.php:173
|
1039 |
+
msgid "Freemius Debug"
|
1040 |
+
msgstr ""
|
1041 |
+
|
1042 |
+
#: classes/freemius/includes/i18n.php:174
|
1043 |
+
msgctxt "as turned on"
|
1044 |
+
msgid "On"
|
1045 |
+
msgstr ""
|
1046 |
+
|
1047 |
+
#: classes/freemius/includes/i18n.php:175
|
1048 |
+
msgctxt "as turned off"
|
1049 |
+
msgid "Off"
|
1050 |
+
msgstr ""
|
1051 |
+
|
1052 |
+
#: classes/freemius/includes/i18n.php:176
|
1053 |
+
msgid "Freemius State"
|
1054 |
+
msgstr ""
|
1055 |
+
|
1056 |
+
#: classes/freemius/includes/i18n.php:177
|
1057 |
+
msgctxt "as connection was successful"
|
1058 |
+
msgid "Connected"
|
1059 |
+
msgstr ""
|
1060 |
+
|
1061 |
+
#: classes/freemius/includes/i18n.php:178
|
1062 |
+
msgctxt "as connection blocked"
|
1063 |
+
msgid "Blocked"
|
1064 |
+
msgstr ""
|
1065 |
+
|
1066 |
+
#: classes/freemius/includes/i18n.php:179
|
1067 |
+
msgctxt "as application program interface"
|
1068 |
+
msgid "API"
|
1069 |
+
msgstr ""
|
1070 |
+
|
1071 |
+
#: classes/freemius/includes/i18n.php:180
|
1072 |
+
msgctxt "as software development kit versions"
|
1073 |
+
msgid "SDK"
|
1074 |
+
msgstr ""
|
1075 |
+
|
1076 |
+
#: classes/freemius/includes/i18n.php:181
|
1077 |
+
msgctxt "as software development kit versions"
|
1078 |
+
msgid "SDK Versions"
|
1079 |
+
msgstr ""
|
1080 |
+
|
1081 |
+
#: classes/freemius/includes/i18n.php:182
|
1082 |
+
msgctxt "as plugin folder path"
|
1083 |
+
msgid "Plugin Path"
|
1084 |
+
msgstr ""
|
1085 |
+
|
1086 |
+
#: classes/freemius/includes/i18n.php:183
|
1087 |
+
msgctxt "as sdk path"
|
1088 |
+
msgid "SDK Path"
|
1089 |
+
msgstr ""
|
1090 |
+
|
1091 |
+
#: classes/freemius/includes/i18n.php:184
|
1092 |
#, php-format
|
1093 |
msgid "Add Ons of Plugin %s"
|
1094 |
msgstr ""
|
1095 |
|
1096 |
+
#: classes/freemius/includes/i18n.php:185
|
1097 |
msgid "Are you sure you want to delete the all Freemius data?"
|
1098 |
msgstr ""
|
1099 |
|
1100 |
+
#: classes/freemius/includes/i18n.php:186
|
1101 |
+
msgid "Actions"
|
1102 |
+
msgstr ""
|
1103 |
+
|
1104 |
+
#: classes/freemius/includes/i18n.php:187
|
1105 |
msgid "Delete All Accounts"
|
1106 |
msgstr ""
|
1107 |
|
1108 |
+
#: classes/freemius/includes/i18n.php:188
|
1109 |
+
msgid "Clear API Cache"
|
1110 |
+
msgstr ""
|
1111 |
+
|
1112 |
+
#: classes/freemius/includes/i18n.php:189
|
1113 |
+
msgid "Sync Data From Server"
|
1114 |
+
msgstr ""
|
1115 |
+
|
1116 |
+
#: classes/freemius/includes/i18n.php:193
|
1117 |
msgctxt "as congratulations"
|
1118 |
msgid "Congrats"
|
1119 |
msgstr ""
|
1120 |
|
1121 |
+
#: classes/freemius/includes/i18n.php:194
|
1122 |
msgctxt "exclamation"
|
1123 |
msgid "Oops"
|
1124 |
msgstr ""
|
1125 |
|
1126 |
+
#: classes/freemius/includes/i18n.php:195
|
1127 |
msgctxt "interjection expressing joy or exuberance"
|
1128 |
msgid "Yee-haw"
|
1129 |
msgstr ""
|
1130 |
|
1131 |
+
#: classes/freemius/includes/i18n.php:196
|
1132 |
msgctxt ""
|
1133 |
"(especially in electronic communication) used to express elation, "
|
1134 |
"enthusiasm, or triumph."
|
1135 |
msgid "W00t"
|
1136 |
msgstr ""
|
1137 |
|
1138 |
+
#: classes/freemius/includes/i18n.php:197
|
1139 |
msgctxt "a positive response"
|
1140 |
msgid "Right on"
|
1141 |
msgstr ""
|
1142 |
|
1143 |
+
#: classes/freemius/includes/i18n.php:198
|
1144 |
msgctxt ""
|
1145 |
"something somebody says when they are thinking about what you have just "
|
1146 |
"said. "
|
1147 |
msgid "Hmm"
|
1148 |
msgstr ""
|
1149 |
|
1150 |
+
#: classes/freemius/includes/i18n.php:199
|
1151 |
msgid "O.K"
|
1152 |
msgstr ""
|
1153 |
|
1154 |
+
#: classes/freemius/includes/i18n.php:200
|
1155 |
msgctxt "exclamation"
|
1156 |
msgid "Hey"
|
1157 |
msgstr ""
|
1158 |
|
1159 |
+
#: classes/freemius/includes/i18n.php:201
|
1160 |
msgctxt "advance notice of something that will need attention."
|
1161 |
msgid "Heads up"
|
1162 |
msgstr ""
|
1163 |
|
1164 |
+
#: classes/freemius/includes/i18n.php:205
|
1165 |
msgid "Seems like you got the latest release."
|
1166 |
msgstr ""
|
1167 |
|
1168 |
+
#: classes/freemius/includes/i18n.php:206
|
1169 |
msgid "You are all good!"
|
1170 |
msgstr ""
|
1171 |
|
1172 |
+
#: classes/freemius/includes/i18n.php:207
|
1173 |
msgid ""
|
1174 |
"Sorry, we could not complete the email update. Another user with the same "
|
1175 |
"email is already registered."
|
1176 |
msgstr ""
|
1177 |
|
1178 |
+
#: classes/freemius/includes/i18n.php:208
|
1179 |
#, php-format
|
1180 |
msgid ""
|
1181 |
"If you would like to give up the ownership of the plugin's account to %s "
|
1182 |
"click the Change Ownership button."
|
1183 |
msgstr ""
|
1184 |
|
1185 |
+
#: classes/freemius/includes/i18n.php:209
|
1186 |
msgid ""
|
1187 |
"Your email was successfully updated. You should receive an email with "
|
1188 |
"confirmation instructions in few moments."
|
1189 |
msgstr ""
|
1190 |
|
1191 |
+
#: classes/freemius/includes/i18n.php:210
|
1192 |
msgid "Your name was successfully updated."
|
1193 |
msgstr ""
|
1194 |
|
1195 |
+
#: classes/freemius/includes/i18n.php:211
|
1196 |
#, php-format
|
1197 |
msgid "You have successfully updated your %s."
|
1198 |
msgstr ""
|
1199 |
|
1200 |
+
#: classes/freemius/includes/i18n.php:212
|
1201 |
msgid "Please provide your full name."
|
1202 |
msgstr ""
|
1203 |
|
1204 |
+
#: classes/freemius/includes/i18n.php:213
|
1205 |
#, php-format
|
1206 |
msgid ""
|
1207 |
"Verification mail was just sent to %s. If you can't find it after 5 min, "
|
1208 |
"please check your spam box."
|
1209 |
msgstr ""
|
1210 |
|
1211 |
+
#: classes/freemius/includes/i18n.php:214
|
1212 |
#, php-format
|
1213 |
msgid ""
|
1214 |
"Just letting you know that the add-ons information of %s is being pulled "
|
1215 |
"from external server."
|
1216 |
msgstr ""
|
1217 |
|
1218 |
+
#: classes/freemius/includes/i18n.php:215
|
1219 |
msgid "No credit card required"
|
1220 |
msgstr ""
|
1221 |
|
1222 |
+
#: classes/freemius/includes/i18n.php:216
|
1223 |
msgid "Premium plugin version was successfully activated."
|
1224 |
msgstr ""
|
1225 |
|
1226 |
+
#: classes/freemius/includes/i18n.php:217
|
1227 |
#, php-format
|
1228 |
msgid "The upgrade of %s was successfully completed."
|
1229 |
msgstr ""
|
1230 |
|
1231 |
+
#: classes/freemius/includes/i18n.php:218
|
1232 |
#, php-format
|
1233 |
msgid "Your account was successfully activated with the %s plan."
|
1234 |
msgstr ""
|
1235 |
|
1236 |
+
#: classes/freemius/includes/i18n.php:219
|
1237 |
#, php-format
|
1238 |
msgid "Download the latest %s version now"
|
1239 |
msgstr ""
|
1240 |
|
1241 |
+
#: classes/freemius/includes/i18n.php:220
|
1242 |
msgid "Download the latest version now"
|
1243 |
msgstr ""
|
1244 |
|
1245 |
+
#: classes/freemius/includes/i18n.php:221
|
1246 |
#, php-format
|
1247 |
msgctxt "%s - product name, e.g. Facebook add-on was successfully..."
|
1248 |
msgid "%s Add-on was successfully purchased."
|
1249 |
msgstr ""
|
1250 |
|
1251 |
+
#: classes/freemius/includes/i18n.php:222
|
1252 |
#, php-format
|
1253 |
msgid "Your %s Add-on plan was successfully upgraded."
|
1254 |
msgstr ""
|
1255 |
|
1256 |
+
#: classes/freemius/includes/i18n.php:223
|
1257 |
msgid "Your email has been successfully verified - you are AWESOME!"
|
1258 |
msgstr ""
|
1259 |
|
1260 |
+
#: classes/freemius/includes/i18n.php:224
|
1261 |
msgid "Your plan was successfully upgraded."
|
1262 |
msgstr ""
|
1263 |
|
1264 |
+
#: classes/freemius/includes/i18n.php:225
|
1265 |
#, php-format
|
1266 |
msgid "Your plan was successfully changed to %s."
|
1267 |
msgstr ""
|
1268 |
|
1269 |
+
#: classes/freemius/includes/i18n.php:226
|
1270 |
msgid ""
|
1271 |
"Your license has expired. You can still continue using the free plugin "
|
1272 |
"forever."
|
1273 |
msgstr ""
|
1274 |
|
1275 |
+
#: classes/freemius/includes/i18n.php:227
|
1276 |
msgid "Your trial has been successfully started."
|
1277 |
msgstr ""
|
1278 |
|
1279 |
+
#: classes/freemius/includes/i18n.php:228
|
1280 |
msgid "Your license was successfully activated."
|
1281 |
msgstr ""
|
1282 |
|
1283 |
+
#: classes/freemius/includes/i18n.php:229
|
1284 |
msgid "It looks like your site currently don't have an active license."
|
1285 |
msgstr ""
|
1286 |
|
1287 |
+
#: classes/freemius/includes/i18n.php:230
|
1288 |
#, php-format
|
1289 |
msgid "Your license was successfully deactivated, you are back to the %s plan."
|
1290 |
msgstr ""
|
1291 |
|
1292 |
+
#: classes/freemius/includes/i18n.php:231
|
1293 |
msgid "It looks like the license deactivation failed."
|
1294 |
msgstr ""
|
1295 |
|
1296 |
+
#: classes/freemius/includes/i18n.php:232
|
1297 |
msgid "It looks like the license could not be activated."
|
1298 |
msgstr ""
|
1299 |
|
1300 |
+
#: classes/freemius/includes/i18n.php:233
|
1301 |
msgid "Error received from the server:"
|
1302 |
msgstr ""
|
1303 |
|
1304 |
+
#: classes/freemius/includes/i18n.php:234
|
1305 |
msgid ""
|
1306 |
"Your trial has expired. You can still continue using all our free features."
|
1307 |
msgstr ""
|
1308 |
|
1309 |
+
#: classes/freemius/includes/i18n.php:235
|
1310 |
#, php-format
|
1311 |
msgid ""
|
1312 |
"Your plan was successfully downgraded. Your %s plan license will expire in "
|
1313 |
"%s."
|
1314 |
msgstr ""
|
1315 |
|
1316 |
+
#: classes/freemius/includes/i18n.php:236
|
1317 |
msgid ""
|
1318 |
"Seems like we are having some temporary issue with your plan downgrade. "
|
1319 |
"Please try again in few minutes."
|
1320 |
msgstr ""
|
1321 |
|
1322 |
+
#: classes/freemius/includes/i18n.php:237
|
1323 |
msgid ""
|
1324 |
"It looks like you are not in trial mode anymore so there's nothing to "
|
1325 |
"cancel :)"
|
1326 |
msgstr ""
|
1327 |
|
1328 |
+
#: classes/freemius/includes/i18n.php:238
|
1329 |
#, php-format
|
1330 |
msgid "Your %s Plan trial was successfully cancelled."
|
1331 |
msgstr ""
|
1332 |
|
1333 |
+
#: classes/freemius/includes/i18n.php:239
|
1334 |
#, php-format
|
1335 |
msgctxt "%s - numeric version number"
|
1336 |
msgid "Version %s was released."
|
1337 |
msgstr ""
|
1338 |
|
1339 |
+
#: classes/freemius/includes/i18n.php:240
|
1340 |
#, php-format
|
1341 |
msgid "Please download %s."
|
1342 |
msgstr ""
|
1343 |
|
1344 |
+
#: classes/freemius/includes/i18n.php:241
|
1345 |
#, php-format
|
1346 |
msgctxt "%s - plan name, as the latest professional version here"
|
1347 |
msgid "the latest %s version here"
|
1348 |
msgstr ""
|
1349 |
|
1350 |
+
#: classes/freemius/includes/i18n.php:242
|
1351 |
#, php-format
|
1352 |
msgid ""
|
1353 |
"How do you like %s so far? Test all our %s premium features with a %d-day "
|
1354 |
"free trial."
|
1355 |
msgstr ""
|
1356 |
|
1357 |
+
#: classes/freemius/includes/i18n.php:243
|
1358 |
msgctxt "call to action"
|
1359 |
msgid "Start free trial"
|
1360 |
msgstr ""
|
1361 |
|
1362 |
+
#: classes/freemius/includes/i18n.php:244
|
1363 |
msgid ""
|
1364 |
"Seems like we are having some temporary issue with your trial cancellation. "
|
1365 |
"Please try again in few minutes."
|
1366 |
msgstr ""
|
1367 |
|
1368 |
+
#: classes/freemius/includes/i18n.php:245
|
1369 |
#, php-format
|
1370 |
msgid "No commitment for %s days - cancel anytime!"
|
1371 |
msgstr ""
|
1372 |
|
1373 |
+
#: classes/freemius/includes/i18n.php:246
|
1374 |
#, php-format
|
1375 |
msgid ""
|
1376 |
"Your license has expired. You can still continue using all the %s features, "
|
1378 |
"support."
|
1379 |
msgstr ""
|
1380 |
|
1381 |
+
#: classes/freemius/includes/i18n.php:247
|
1382 |
#, php-format
|
1383 |
msgid "Couldn't activate %s."
|
1384 |
msgstr ""
|
1385 |
|
1386 |
+
#: classes/freemius/includes/i18n.php:248
|
1387 |
msgid "Please contact us with the following message:"
|
1388 |
msgstr ""
|
1389 |
|
1390 |
+
#: classes/freemius/includes/i18n.php:249
|
1391 |
msgid ""
|
1392 |
"It looks like your plan did't change. If you did upgrade, it's probably an "
|
1393 |
"issue on our side - sorry."
|
1394 |
msgstr ""
|
1395 |
|
1396 |
+
#: classes/freemius/includes/i18n.php:250
|
1397 |
msgid "Please contact us here"
|
1398 |
msgstr ""
|
1399 |
|
1400 |
+
#: classes/freemius/includes/i18n.php:251
|
1401 |
#, php-format
|
1402 |
msgid ""
|
1403 |
"I have upgraded my account but when I try to Sync the License, the plan "
|
1404 |
"remains %s."
|
1405 |
msgstr ""
|
1406 |
|
1407 |
+
#: classes/freemius/includes/i18n.php:254
|
1408 |
msgid "From unknown reason, the API connectivity test fails."
|
1409 |
msgstr ""
|
1410 |
|
1411 |
+
#: classes/freemius/includes/i18n.php:255
|
1412 |
msgid ""
|
1413 |
"We use PHP cURL library for the API calls, which is a very common library "
|
1414 |
"and usually installed out of the box. Unfortunately, cURL is not installed "
|
1415 |
"on your server."
|
1416 |
msgstr ""
|
1417 |
|
1418 |
+
#: classes/freemius/includes/i18n.php:256
|
1419 |
msgid ""
|
1420 |
"From unknown reason, CloudFlare, the firewall we use, blocks the connection."
|
1421 |
msgstr ""
|
1422 |
|
1423 |
+
#: classes/freemius/includes/i18n.php:257
|
1424 |
#, php-format
|
1425 |
msgctxt "as pluginX requires an access to our API"
|
1426 |
msgid "%s requires an access to our API."
|
1427 |
msgstr ""
|
1428 |
|
1429 |
+
#: classes/freemius/includes/i18n.php:258
|
1430 |
msgid ""
|
1431 |
"It looks like your server is using Squid ACL (access control lists), which "
|
1432 |
"blocks the connection."
|
1433 |
msgstr ""
|
1434 |
|
1435 |
+
#: classes/freemius/includes/i18n.php:259
|
1436 |
msgid "I don't know what is Squid or ACL, help me!"
|
1437 |
msgstr ""
|
1438 |
|
1439 |
+
#: classes/freemius/includes/i18n.php:260
|
1440 |
+
#: classes/freemius/includes/i18n.php:264
|
1441 |
#, php-format
|
1442 |
msgid ""
|
1443 |
"We'll make sure to contact your hosting company and resolve the issue. You "
|
1444 |
"will get a follow-up email to %s once we have an update."
|
1445 |
msgstr ""
|
1446 |
|
1447 |
+
#: classes/freemius/includes/i18n.php:261
|
1448 |
msgid "I'm a system administrator"
|
1449 |
msgstr ""
|
1450 |
|
1451 |
+
#: classes/freemius/includes/i18n.php:262
|
1452 |
#, php-format
|
1453 |
msgid ""
|
1454 |
"Great, please whitelist the following domains: %s. Once you done, deactivate "
|
1455 |
"the plugin and activate it again."
|
1456 |
msgstr ""
|
1457 |
|
1458 |
+
#: classes/freemius/includes/i18n.php:263
|
1459 |
msgid "I don't know what is cURL or how to install it, help me!"
|
1460 |
msgstr ""
|
1461 |
|
1462 |
+
#: classes/freemius/includes/i18n.php:265
|
1463 |
msgid ""
|
1464 |
"Great, please install cURL and enable it in your php.ini file. To make sure "
|
1465 |
"it was successfully activated, use 'phpinfo()'. Once activated, deactivate "
|
1466 |
"the plugin and reactivate it back again."
|
1467 |
msgstr ""
|
1468 |
|
1469 |
+
#: classes/freemius/includes/i18n.php:266
|
1470 |
msgid ""
|
1471 |
"We are sure it's an issue on our side and more than happy to resolve it for "
|
1472 |
"you ASAP if you give us a chance."
|
1473 |
msgstr ""
|
1474 |
|
1475 |
+
#: classes/freemius/includes/i18n.php:267
|
1476 |
msgid "Yes - I'm giving you a chance to fix it"
|
1477 |
msgstr ""
|
1478 |
|
1479 |
+
#: classes/freemius/includes/i18n.php:268
|
1480 |
#, php-format
|
1481 |
msgid ""
|
1482 |
"We will do our best to whitelist your server and resolve this issue ASAP. "
|
1483 |
"You will get a follow-up email to %s once we have an update."
|
1484 |
msgstr ""
|
1485 |
|
1486 |
+
#: classes/freemius/includes/i18n.php:269
|
1487 |
msgid "Let's try your previous version"
|
1488 |
msgstr ""
|
1489 |
|
1490 |
+
#: classes/freemius/includes/i18n.php:270
|
1491 |
msgid "Uninstall this version and install the previous one."
|
1492 |
msgstr ""
|
1493 |
|
1494 |
+
#: classes/freemius/includes/i18n.php:271
|
1495 |
msgid "That's exhausting, please deactivate"
|
1496 |
msgstr ""
|
1497 |
|
1498 |
+
#: classes/freemius/includes/i18n.php:272
|
1499 |
msgid ""
|
1500 |
"We feel your frustration and sincerely apologize for the inconvenience. Hope "
|
1501 |
"to see you again in the future."
|
1502 |
msgstr ""
|
1503 |
|
1504 |
+
#: classes/freemius/includes/i18n.php:273
|
1505 |
#, php-format
|
1506 |
msgid ""
|
1507 |
"Thank for giving us the chance to fix it! A message was just sent to our "
|
1509 |
"Appreciate your patience."
|
1510 |
msgstr ""
|
1511 |
|
1512 |
+
#: classes/freemius/includes/i18n.php:274
|
1513 |
#, php-format
|
1514 |
msgctxt "%1s - plugin title, %2s - API domain"
|
1515 |
msgid ""
|
1517 |
"%1s license synchronization. Please contact your host to whitelist %2s"
|
1518 |
msgstr ""
|
1519 |
|
1520 |
+
#: classes/freemius/includes/i18n.php:275
|
1521 |
msgid ""
|
1522 |
"It seems like one of the authentication parameters is wrong. Update your "
|
1523 |
"Public Key, Secret Key & User ID, and try again."
|
1524 |
msgstr ""
|
1525 |
|
1526 |
+
#: classes/freemius/includes/i18n.php:278
|
1527 |
#, php-format
|
1528 |
msgid ""
|
1529 |
"Please check your mailbox, you should receive an email via %s to confirm the "
|
1531 |
"the next 15 min. If you cannot find the email, please check your spam folder."
|
1532 |
msgstr ""
|
1533 |
|
1534 |
+
#: classes/freemius/includes/i18n.php:279
|
1535 |
#, php-format
|
1536 |
msgid ""
|
1537 |
"Thanks for confirming the ownership change. An email was just sent to %s for "
|
1538 |
"final approval."
|
1539 |
msgstr ""
|
1540 |
|
1541 |
+
#: classes/freemius/includes/i18n.php:280
|
1542 |
#, php-format
|
1543 |
msgid "%s is the new owner of the account."
|
1544 |
msgstr ""
|
1545 |
|
1546 |
+
#: classes/freemius/includes/i18n.php:282
|
|
|
|
|
|
|
|
|
1547 |
#, php-format
|
1548 |
msgctxt "addonX cannot run without pluginY"
|
1549 |
msgid "%s cannot run without %s."
|
1550 |
msgstr ""
|
1551 |
|
1552 |
+
#: classes/freemius/includes/i18n.php:283
|
1553 |
#, php-format
|
1554 |
msgctxt "addonX cannot run..."
|
1555 |
msgid "%s cannot run without the plugin."
|
1556 |
msgstr ""
|
1557 |
|
1558 |
+
#: classes/freemius/includes/i18n.php:284
|
1559 |
#, php-format
|
1560 |
msgctxt "pluginX activation was successfully..."
|
1561 |
msgid "%s activation was successfully completed."
|
1562 |
msgstr ""
|
1563 |
|
1564 |
+
#: classes/freemius/includes/i18n.php:285
|
1565 |
msgctxt "Plugin installer section title"
|
1566 |
msgid "Features & Pricing"
|
1567 |
msgstr ""
|
1568 |
|
1569 |
+
#: classes/freemius/templates/account.php:283
|
1570 |
msgctxt "verb"
|
1571 |
msgid "Edit"
|
1572 |
msgstr ""
|
readme.txt
CHANGED
@@ -3,7 +3,7 @@ Contributors: pojo.me, KingYes, ariel.k, maor, freemius
|
|
3 |
Tags: actions, activity, Activity Log, activity logs, admin, admin actions, administration, analytics, audit, audit log, audit logs, bbPress, change, changes, dashboard, email notifications, event, event log, log, logger, Logs, monitor, multi-users, multisite, notifications, security, security audit trail, security event log, stats, stream, tracking, troubleshooting, user activity report, user tracking, woocommerce, woocommerce log, woocommerce monitor, woocommerce monitoring, woocommrece security, wordpress activity log, WordPress Admin, wordpress admin monitoring, wordpress audit, wordpress email alerts, wordpress log, wordpress monitor, wordpress monitoring, wordpress multisite, wordpress security, wordpress security alerts, wordpress security audit log, wordpress security monitor, wordpress security plugin, wordpress user tracking
|
4 |
Requires at least: 3.5
|
5 |
Tested up to: 4.4
|
6 |
-
Stable tag: 2.2.
|
7 |
License: GPLv2 or later
|
8 |
|
9 |
Get aware of any activities that are taking place on your dashboard! Imagine it like a black-box for your WordPress site.
|
@@ -96,6 +96,9 @@ Would you like to like to contribute to Activity Log? You are more than welcome
|
|
96 |
|
97 |
== Changelog ==
|
98 |
|
|
|
|
|
|
|
99 |
= 2.2.7 =
|
100 |
* Added! - Freemius Insights platform to improve plugin UX
|
101 |
* Tweak! Update translate: Russian (ru_RU) - Thanks to Oleg Reznikov
|
3 |
Tags: actions, activity, Activity Log, activity logs, admin, admin actions, administration, analytics, audit, audit log, audit logs, bbPress, change, changes, dashboard, email notifications, event, event log, log, logger, Logs, monitor, multi-users, multisite, notifications, security, security audit trail, security event log, stats, stream, tracking, troubleshooting, user activity report, user tracking, woocommerce, woocommerce log, woocommerce monitor, woocommerce monitoring, woocommrece security, wordpress activity log, WordPress Admin, wordpress admin monitoring, wordpress audit, wordpress email alerts, wordpress log, wordpress monitor, wordpress monitoring, wordpress multisite, wordpress security, wordpress security alerts, wordpress security audit log, wordpress security monitor, wordpress security plugin, wordpress user tracking
|
4 |
Requires at least: 3.5
|
5 |
Tested up to: 4.4
|
6 |
+
Stable tag: 2.2.8
|
7 |
License: GPLv2 or later
|
8 |
|
9 |
Get aware of any activities that are taking place on your dashboard! Imagine it like a black-box for your WordPress site.
|
96 |
|
97 |
== Changelog ==
|
98 |
|
99 |
+
= 2.2.8 =
|
100 |
+
* Tweak! Update Freemius SDK
|
101 |
+
|
102 |
= 2.2.7 =
|
103 |
* Added! - Freemius Insights platform to improve plugin UX
|
104 |
* Tweak! Update translate: Russian (ru_RU) - Thanks to Oleg Reznikov
|