Version Description
- Tweak! Update Freemius SDK
Download this release
Release Info
Developer | KingYes |
Plugin | Activity Log |
Version | 2.2.9 |
Comparing to | |
See all releases |
Code changes from version 2.2.8 to 2.2.9
- aryo-activity-log.php +1 -1
- classes/freemius/assets/css/admin/common.css +1 -1
- classes/freemius/assets/css/admin/connect.css +1 -1
- classes/freemius/assets/scss/admin/common.scss +57 -45
- classes/freemius/assets/scss/admin/connect.scss +16 -0
- classes/freemius/config.php +21 -11
- classes/freemius/includes/class-freemius.php +157 -54
- classes/freemius/includes/class-fs-api.php +169 -69
- classes/freemius/includes/class-fs-plugin-updater.php +61 -0
- classes/freemius/includes/fs-core-functions.php +32 -28
- classes/freemius/includes/fs-essential-functions.php +69 -5
- classes/freemius/includes/i18n.php +14 -1
- classes/freemius/includes/managers/class-fs-admin-menu-manager.php +7 -2
- classes/freemius/includes/managers/class-fs-cache-manager.php +211 -0
- classes/freemius/includes/sdk/Exceptions/ArgumentNotExistException.php +4 -0
- classes/freemius/includes/sdk/Exceptions/EmptyArgumentException.php +4 -0
- classes/freemius/includes/sdk/Exceptions/InvalidArgumentException.php +4 -0
- classes/freemius/includes/sdk/Exceptions/OAuthException.php +4 -0
- classes/freemius/includes/sdk/Freemius.php +196 -66
- classes/freemius/includes/sdk/FreemiusBase.php +13 -52
- classes/freemius/includes/supplements/fs-essential-functions-1.1.7.1.php +45 -0
- classes/freemius/start.php +10 -4
- classes/freemius/templates/account.php +4 -0
- classes/freemius/templates/add-ons.php +4 -0
- classes/freemius/templates/admin-notice.php +11 -5
- classes/freemius/templates/all-admin-notice.php +4 -0
- classes/freemius/templates/checkout.php +4 -0
- classes/freemius/templates/connect.php +112 -79
- classes/freemius/templates/contact.php +5 -0
- classes/freemius/templates/deactivation-feedback-modal.php +6 -1
- classes/freemius/templates/debug.php +156 -140
- classes/freemius/templates/email.php +4 -0
- classes/freemius/templates/firewall-issues-js.php +4 -0
- classes/freemius/templates/pending-activation.php +0 -157
- classes/freemius/templates/plugin-icon.php +5 -0
- classes/freemius/templates/plugin-info/description.php +11 -0
- classes/freemius/templates/plugin-info/features.php +11 -0
- classes/freemius/templates/plugin-info/screenshots.php +11 -0
- classes/freemius/templates/powered-by.php +5 -1
- classes/freemius/templates/pricing.php +4 -0
- classes/freemius/templates/sticky-admin-notice-js.php +4 -0
- language/aryo-activity-log.pot +252 -241
- 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.9
|
9 |
Text Domain: aryo-activity-log
|
10 |
Domain Path: /language/
|
11 |
License: GPLv2 or later
|
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-
|
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-notice-body{margin:.5em 0;padding:2px}.fs-notice .fs-close{cursor:pointer;color:#aaa;float:right}.fs-notice .fs-close:hover{color:#666}.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{float:left}.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/css/admin/connect.css
CHANGED
@@ -1 +1 @@
|
|
1 |
-
#fs_connect{width:480px;-moz-box-shadow:0px 1px 2px rgba(0,0,0,0.3);-webkit-box-shadow:0px 1px 2px rgba(0,0,0,0.3);box-shadow:0px 1px 2px rgba(0,0,0,0.3);margin:20px 0}@media screen and (max-width: 479px){#fs_connect{-moz-box-shadow:none;-webkit-box-shadow:none;box-shadow:none;width:auto;margin:0 0 0 -10px}}#fs_connect .fs-content{background:#fff;padding:15px 20px}#fs_connect .fs-content p{margin:0;padding:0;font-size:1.2em}#fs_connect .fs-actions{padding:10px 20px;background:#C0C7CA}#fs_connect .fs-actions .button{padding:0 10px 1px;line-height:35px;height:37px;font-size:16px;margin-bottom:0}#fs_connect .fs-actions .button .dashicons{font-size:37px;margin-left:-8px;margin-right:12px}#fs_connect .fs-actions .button.button-primary{padding-right:15px;padding-left:15px}#fs_connect .fs-actions .button.button-primary:after{content:' \279C'}#fs_connect .fs-actions .button.button-secondary{float:right}#fs_connect.fs-anonymous-disabled .fs-actions .button.button-primary{width:100%}#fs_connect .fs-permissions{padding:10px 20px;background:#FEFEFE;-moz-transition:background 0.5s ease;-o-transition:background 0.5s ease;-ms-transition:background 0.5s ease;-webkit-transition:background 0.5s ease;transition:background 0.5s ease}#fs_connect .fs-permissions .fs-trigger{font-size:0.9em;text-decoration:none;text-align:center;display:block}#fs_connect .fs-permissions ul{height:0;overflow:hidden;margin:0}#fs_connect .fs-permissions ul li{margin-bottom:12px}#fs_connect .fs-permissions ul li:last-child{margin-bottom:0}#fs_connect .fs-permissions ul li i.dashicons{float:left;font-size:40px;width:40px;height:40px}#fs_connect .fs-permissions ul li div{margin-left:55px}#fs_connect .fs-permissions ul li div span{font-weight:bold;text-transform:uppercase;color:#23282d}#fs_connect .fs-permissions ul li div p{margin:2px 0 0 0}#fs_connect .fs-permissions.fs-open{background:#fff}#fs_connect .fs-permissions.fs-open ul{height:auto;margin:20px 20px 10px 20px}@media screen and (max-width: 479px){#fs_connect .fs-permissions{background:#fff}#fs_connect .fs-permissions .fs-trigger{display:none}#fs_connect .fs-permissions ul{height:auto;margin:20px}}#fs_connect .fs-visual{padding:12px;line-height:0;background:#fafafa;height:80px;position:relative}#fs_connect .fs-visual .fs-site-icon{position:absolute;left:20px;top:10px}#fs_connect .fs-visual .fs-connect-logo{position:absolute;right:20px;top:10px}#fs_connect .fs-visual .fs-plugin-icon{position:absolute;top:10px;left:50%;margin-left:-40px}#fs_connect .fs-visual .fs-plugin-icon,#fs_connect .fs-visual .fs-site-icon,#fs_connect .fs-visual img,#fs_connect .fs-visual object{width:80px;height:80px}#fs_connect .fs-visual .dashicons-wordpress{font-size:64px;background:#01749a;color:#fff;width:64px;height:64px;padding:8px}#fs_connect .fs-visual .dashicons-plus{position:absolute;top:50%;font-size:30px;margin-top:-10px;color:#bbb}#fs_connect .fs-visual .dashicons-plus.fs-first{left:28%}#fs_connect .fs-visual .dashicons-plus.fs-second{left:65%}#fs_connect .fs-visual .fs-plugin-icon,#fs_connect .fs-visual .fs-connect-logo,#fs_connect .fs-visual .fs-site-icon{border:1px solid #ccc;padding:1px;background:#fff}#fs_connect .fs-terms{text-align:center;font-size:0.85em;padding:5px;background:rgba(0,0,0,0.05)}#fs_connect .fs-terms,#fs_connect .fs-terms a{color:#999}#fs_connect .fs-terms a{text-decoration:none}.rtl #fs_connect .fs-actions{padding:10px 20px;background:#C0C7CA}.rtl #fs_connect .fs-actions .button .dashicons{font-size:37px;margin-left:-8px;margin-right:12px}.rtl #fs_connect .fs-actions .button.button-primary:after{content:' \000bb'}.rtl #fs_connect .fs-actions .button.button-secondary{float:left}.rtl #fs_connect .fs-permissions ul li div{margin-right:55px;margin-left:0}.rtl #fs_connect .fs-permissions ul li i.dashicons{float:right}.rtl #fs_connect .fs-visual .fs-site-icon{right:20px;left:auto}.rtl #fs_connect .fs-visual .fs-connect-logo{right:auto;left:20px}.wp-pointer-content #fs_connect{margin:0;-moz-box-shadow:none;-webkit-box-shadow:none;box-shadow:none}.fs-opt-in-pointer .wp-pointer-content{padding:0}.fs-opt-in-pointer.wp-pointer-top .wp-pointer-arrow{border-bottom-color:#dfdfdf}.fs-opt-in-pointer.wp-pointer-top .wp-pointer-arrow-inner{border-bottom-color:#fafafa}.fs-opt-in-pointer.wp-pointer-bottom .wp-pointer-arrow{border-top-color:#dfdfdf}.fs-opt-in-pointer.wp-pointer-bottom .wp-pointer-arrow-inner{border-top-color:#fafafa}.fs-opt-in-pointer.wp-pointer-left .wp-pointer-arrow{border-right-color:#dfdfdf}.fs-opt-in-pointer.wp-pointer-left .wp-pointer-arrow-inner{border-right-color:#fafafa}.fs-opt-in-pointer.wp-pointer-right .wp-pointer-arrow{border-left-color:#dfdfdf}.fs-opt-in-pointer.wp-pointer-right .wp-pointer-arrow-inner{border-left-color:#fafafa}
|
1 |
+
#fs_connect{width:480px;-moz-box-shadow:0px 1px 2px rgba(0,0,0,0.3);-webkit-box-shadow:0px 1px 2px rgba(0,0,0,0.3);box-shadow:0px 1px 2px rgba(0,0,0,0.3);margin:20px 0}@media screen and (max-width: 479px){#fs_connect{-moz-box-shadow:none;-webkit-box-shadow:none;box-shadow:none;width:auto;margin:0 0 0 -10px}}#fs_connect .fs-content{background:#fff;padding:15px 20px}#fs_connect .fs-content p{margin:0;padding:0;font-size:1.2em}#fs_connect .fs-actions{padding:10px 20px;background:#C0C7CA}#fs_connect .fs-actions .button{padding:0 10px 1px;line-height:35px;height:37px;font-size:16px;margin-bottom:0}#fs_connect .fs-actions .button .dashicons{font-size:37px;margin-left:-8px;margin-right:12px}#fs_connect .fs-actions .button.button-primary{padding-right:15px;padding-left:15px}#fs_connect .fs-actions .button.button-primary:after{content:' \279C'}#fs_connect .fs-actions .button.button-primary.fs-loading:after{content:''}#fs_connect .fs-actions .button.button-secondary{float:right}#fs_connect.fs-anonymous-disabled .fs-actions .button.button-primary{width:100%}#fs_connect .fs-permissions{padding:10px 20px;background:#FEFEFE;-moz-transition:background 0.5s ease;-o-transition:background 0.5s ease;-ms-transition:background 0.5s ease;-webkit-transition:background 0.5s ease;transition:background 0.5s ease}#fs_connect .fs-permissions .fs-trigger{font-size:0.9em;text-decoration:none;text-align:center;display:block}#fs_connect .fs-permissions ul{height:0;overflow:hidden;margin:0}#fs_connect .fs-permissions ul li{margin-bottom:12px}#fs_connect .fs-permissions ul li:last-child{margin-bottom:0}#fs_connect .fs-permissions ul li i.dashicons{float:left;font-size:40px;width:40px;height:40px}#fs_connect .fs-permissions ul li div{margin-left:55px}#fs_connect .fs-permissions ul li div span{font-weight:bold;text-transform:uppercase;color:#23282d}#fs_connect .fs-permissions ul li div p{margin:2px 0 0 0}#fs_connect .fs-permissions.fs-open{background:#fff}#fs_connect .fs-permissions.fs-open ul{height:auto;margin:20px 20px 10px 20px}@media screen and (max-width: 479px){#fs_connect .fs-permissions{background:#fff}#fs_connect .fs-permissions .fs-trigger{display:none}#fs_connect .fs-permissions ul{height:auto;margin:20px}}#fs_connect .fs-visual{padding:12px;line-height:0;background:#fafafa;height:80px;position:relative}#fs_connect .fs-visual .fs-site-icon{position:absolute;left:20px;top:10px}#fs_connect .fs-visual .fs-connect-logo{position:absolute;right:20px;top:10px}#fs_connect .fs-visual .fs-plugin-icon{position:absolute;top:10px;left:50%;margin-left:-40px}#fs_connect .fs-visual .fs-plugin-icon,#fs_connect .fs-visual .fs-site-icon,#fs_connect .fs-visual img,#fs_connect .fs-visual object{width:80px;height:80px}#fs_connect .fs-visual .dashicons-wordpress{font-size:64px;background:#01749a;color:#fff;width:64px;height:64px;padding:8px}#fs_connect .fs-visual .dashicons-plus{position:absolute;top:50%;font-size:30px;margin-top:-10px;color:#bbb}#fs_connect .fs-visual .dashicons-plus.fs-first{left:28%}#fs_connect .fs-visual .dashicons-plus.fs-second{left:65%}#fs_connect .fs-visual .fs-plugin-icon,#fs_connect .fs-visual .fs-connect-logo,#fs_connect .fs-visual .fs-site-icon{border:1px solid #ccc;padding:1px;background:#fff}#fs_connect .fs-terms{text-align:center;font-size:0.85em;padding:5px;background:rgba(0,0,0,0.05)}#fs_connect .fs-terms,#fs_connect .fs-terms a{color:#999}#fs_connect .fs-terms a{text-decoration:none}.rtl #fs_connect .fs-actions{padding:10px 20px;background:#C0C7CA}.rtl #fs_connect .fs-actions .button .dashicons{font-size:37px;margin-left:-8px;margin-right:12px}.rtl #fs_connect .fs-actions .button.button-primary:after{content:' \000bb'}.rtl #fs_connect .fs-actions .button.button-primary.fs-loading:after{content:''}.rtl #fs_connect .fs-actions .button.button-secondary{float:left}.rtl #fs_connect .fs-permissions ul li div{margin-right:55px;margin-left:0}.rtl #fs_connect .fs-permissions ul li i.dashicons{float:right}.rtl #fs_connect .fs-visual .fs-site-icon{right:20px;left:auto}.rtl #fs_connect .fs-visual .fs-connect-logo{right:auto;left:20px}.wp-pointer-content #fs_connect{margin:0;-moz-box-shadow:none;-webkit-box-shadow:none;box-shadow:none}.fs-opt-in-pointer .wp-pointer-content{padding:0}.fs-opt-in-pointer.wp-pointer-top .wp-pointer-arrow{border-bottom-color:#dfdfdf}.fs-opt-in-pointer.wp-pointer-top .wp-pointer-arrow-inner{border-bottom-color:#fafafa}.fs-opt-in-pointer.wp-pointer-bottom .wp-pointer-arrow{border-top-color:#dfdfdf}.fs-opt-in-pointer.wp-pointer-bottom .wp-pointer-arrow-inner{border-top-color:#fafafa}.fs-opt-in-pointer.wp-pointer-left .wp-pointer-arrow{border-right-color:#dfdfdf}.fs-opt-in-pointer.wp-pointer-left .wp-pointer-arrow-inner{border-right-color:#fafafa}.fs-opt-in-pointer.wp-pointer-right .wp-pointer-arrow{border-left-color:#dfdfdf}.fs-opt-in-pointer.wp-pointer-right .wp-pointer-arrow-inner{border-left-color:#fafafa}
|
classes/freemius/assets/scss/admin/common.scss
CHANGED
@@ -11,76 +11,87 @@
|
|
11 |
|
12 |
&.success
|
13 |
{
|
14 |
-
color:
|
15 |
-
// font-weight: normal;
|
16 |
}
|
17 |
|
18 |
&.promotion
|
19 |
{
|
20 |
-
border-color:
|
21 |
background-color: $fs-notice-promotion-bkg !important;
|
22 |
}
|
23 |
|
|
|
|
|
|
|
|
|
|
|
|
|
24 |
.fs-close
|
25 |
{
|
26 |
-
position:
|
27 |
-
top:
|
28 |
-
bottom:
|
29 |
-
right:
|
|
|
|
|
|
|
30 |
cursor: pointer;
|
31 |
-
color:
|
32 |
-
|
33 |
-
text-align: center;
|
34 |
-
padding-right: 2px;
|
35 |
|
36 |
&:hover
|
37 |
{
|
38 |
-
color: #
|
39 |
-
background: #A9A9A9;
|
40 |
}
|
41 |
|
42 |
> *
|
43 |
{
|
44 |
margin-top: 7px;
|
45 |
-
display:
|
46 |
}
|
47 |
}
|
48 |
|
49 |
label.fs-plugin-title
|
50 |
{
|
51 |
-
background:
|
52 |
-
color:
|
53 |
-
padding:
|
54 |
-
position:
|
55 |
-
bottom:
|
56 |
-
top:
|
57 |
-
right:
|
58 |
@include border-radius(0 0 3px 3px);
|
59 |
-
left:
|
60 |
-
font-size:
|
61 |
font-weight: bold;
|
62 |
-
cursor:
|
63 |
}
|
64 |
}
|
65 |
|
66 |
-
.rtl .fs-notice
|
67 |
{
|
68 |
-
|
69 |
-
|
70 |
-
|
71 |
-
|
|
|
|
|
|
|
|
|
72 |
}
|
73 |
|
74 |
.fs-secure-notice
|
75 |
{
|
76 |
-
position:
|
77 |
-
top:
|
78 |
-
left:
|
79 |
-
right:
|
80 |
background: rgb(235, 253, 235);
|
81 |
-
padding:
|
82 |
-
color:
|
83 |
-
z-index:
|
84 |
box-shadow: 0px 2px 2px rgba(6, 113, 6, 0.3);
|
85 |
@include opacity(0.95);
|
86 |
|
@@ -90,32 +101,33 @@
|
|
90 |
}
|
91 |
}
|
92 |
|
93 |
-
@media screen and (max-width: 960px)
|
94 |
-
{
|
95 |
.fs-secure-notice
|
96 |
{
|
97 |
left: 36px;
|
98 |
}
|
99 |
}
|
100 |
|
101 |
-
@media screen and (max-width: 782px)
|
102 |
-
{
|
103 |
.fs-secure-notice
|
104 |
{
|
105 |
-
left:
|
106 |
-
top:
|
107 |
text-align: center;
|
108 |
}
|
109 |
}
|
110 |
|
111 |
-
span.fs-submenu-item.fs-sub:before
|
|
|
112 |
// Add small arrow.
|
113 |
content: '\21B3';
|
114 |
padding: 0 5px;
|
115 |
}
|
116 |
|
117 |
-
.rtl
|
118 |
-
|
|
|
|
|
119 |
// Add small RTL arrow.
|
120 |
content: '\21B2';
|
121 |
}
|
11 |
|
12 |
&.success
|
13 |
{
|
14 |
+
color: green;
|
15 |
+
// font-weight: normal;
|
16 |
}
|
17 |
|
18 |
&.promotion
|
19 |
{
|
20 |
+
border-color: $fs-notice-promotion-border-color !important;
|
21 |
background-color: $fs-notice-promotion-bkg !important;
|
22 |
}
|
23 |
|
24 |
+
.fs-notice-body
|
25 |
+
{
|
26 |
+
margin: .5em 0;
|
27 |
+
padding: 2px;
|
28 |
+
}
|
29 |
+
|
30 |
.fs-close
|
31 |
{
|
32 |
+
// position: absolute;
|
33 |
+
// top: 2px;
|
34 |
+
// bottom: 2px;
|
35 |
+
// right: 2px;
|
36 |
+
// min-width: 100px;
|
37 |
+
// text-align: center;
|
38 |
+
// padding-right: 2px;
|
39 |
cursor: pointer;
|
40 |
+
color: #aaa;
|
41 |
+
float: right;
|
|
|
|
|
42 |
|
43 |
&:hover
|
44 |
{
|
45 |
+
color: #666;
|
46 |
+
// background: #A9A9A9;
|
47 |
}
|
48 |
|
49 |
> *
|
50 |
{
|
51 |
margin-top: 7px;
|
52 |
+
display: inline-block;
|
53 |
}
|
54 |
}
|
55 |
|
56 |
label.fs-plugin-title
|
57 |
{
|
58 |
+
background: rgba(0, 0, 0, 0.3);
|
59 |
+
color: #fff;
|
60 |
+
padding: 2px 10px;
|
61 |
+
position: absolute;
|
62 |
+
bottom: -22px;
|
63 |
+
top: auto;
|
64 |
+
right: auto;
|
65 |
@include border-radius(0 0 3px 3px);
|
66 |
+
left: 10px;
|
67 |
+
font-size: 12px;
|
68 |
font-weight: bold;
|
69 |
+
cursor: auto;
|
70 |
}
|
71 |
}
|
72 |
|
73 |
+
.rtl .fs-notice
|
74 |
{
|
75 |
+
.fs-close
|
76 |
+
{
|
77 |
+
// left: 2px;
|
78 |
+
// right: auto;
|
79 |
+
// padding-right: 0;
|
80 |
+
// padding-left: 2px;
|
81 |
+
float: left;
|
82 |
+
}
|
83 |
}
|
84 |
|
85 |
.fs-secure-notice
|
86 |
{
|
87 |
+
position: fixed;
|
88 |
+
top: 32px;
|
89 |
+
left: 160px;
|
90 |
+
right: 0;
|
91 |
background: rgb(235, 253, 235);
|
92 |
+
padding: 10px 20px;
|
93 |
+
color: green;
|
94 |
+
z-index: 9999;
|
95 |
box-shadow: 0px 2px 2px rgba(6, 113, 6, 0.3);
|
96 |
@include opacity(0.95);
|
97 |
|
101 |
}
|
102 |
}
|
103 |
|
104 |
+
@media screen and (max-width: 960px) {
|
|
|
105 |
.fs-secure-notice
|
106 |
{
|
107 |
left: 36px;
|
108 |
}
|
109 |
}
|
110 |
|
111 |
+
@media screen and (max-width: 782px) {
|
|
|
112 |
.fs-secure-notice
|
113 |
{
|
114 |
+
left: 0;
|
115 |
+
top: 46px;
|
116 |
text-align: center;
|
117 |
}
|
118 |
}
|
119 |
|
120 |
+
span.fs-submenu-item.fs-sub:before
|
121 |
+
{
|
122 |
// Add small arrow.
|
123 |
content: '\21B3';
|
124 |
padding: 0 5px;
|
125 |
}
|
126 |
|
127 |
+
.rtl
|
128 |
+
{
|
129 |
+
span.fs-submenu-item.fs-sub:before
|
130 |
+
{
|
131 |
// Add small RTL arrow.
|
132 |
content: '\21B2';
|
133 |
}
|
classes/freemius/assets/scss/admin/connect.scss
CHANGED
@@ -56,6 +56,14 @@ $form_width: 480px;
|
|
56 |
{
|
57 |
content: ' \279C';
|
58 |
}
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
59 |
}
|
60 |
|
61 |
&.button-secondary
|
@@ -292,6 +300,14 @@ $form_width: 480px;
|
|
292 |
{
|
293 |
content: ' \000bb';
|
294 |
}
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
295 |
}
|
296 |
|
297 |
&.button-secondary
|
56 |
{
|
57 |
content: ' \279C';
|
58 |
}
|
59 |
+
|
60 |
+
&.fs-loading
|
61 |
+
{
|
62 |
+
&:after
|
63 |
+
{
|
64 |
+
content: '';
|
65 |
+
}
|
66 |
+
}
|
67 |
}
|
68 |
|
69 |
&.button-secondary
|
300 |
{
|
301 |
content: ' \000bb';
|
302 |
}
|
303 |
+
|
304 |
+
&.fs-loading
|
305 |
+
{
|
306 |
+
&:after
|
307 |
+
{
|
308 |
+
content: '';
|
309 |
+
}
|
310 |
+
}
|
311 |
}
|
312 |
|
313 |
&.button-secondary
|
classes/freemius/config.php
CHANGED
@@ -39,7 +39,7 @@
|
|
39 |
*/
|
40 |
if ( ! defined( 'WP_FS__LOCALHOST_IP' ) ) {
|
41 |
// VVV default public network IP.
|
42 |
-
define( 'WP_FS__VVV_DEFAULT_PUBLIC_IP', '192.168.50.
|
43 |
|
44 |
// define( 'WP_FS__LOCALHOST_IP', WP_FS__VVV_DEFAULT_PUBLIC_IP );
|
45 |
}
|
@@ -56,8 +56,9 @@
|
|
56 |
* THEREFORE, MAKE SURE THAT WHEN USING THIS PARAMETER,YOUR TESTING ENVIRONMENT'S
|
57 |
* CLOCK IS SYNCED.
|
58 |
*/
|
59 |
-
|
60 |
-
|
|
|
61 |
|
62 |
/**
|
63 |
* Directories
|
@@ -81,17 +82,25 @@
|
|
81 |
define( 'WP_FS__ADDRESS_LOCALHOST', 'http://' . WP_FS__DOMAIN_LOCALHOST . ':8080' );
|
82 |
define( 'WP_FS__ADDRESS_PRODUCTION', 'https://' . WP_FS__DOMAIN_PRODUCTION );
|
83 |
|
|
|
|
|
|
|
84 |
define( 'WP_FS__IS_PRODUCTION_MODE', ! defined( 'WP_FS__DEV_MODE' ) || ! WP_FS__DEV_MODE || ( WP_FS__TESTING_DOMAIN !== $_SERVER['HTTP_HOST'] ) );
|
85 |
|
86 |
define( 'WP_FS__ADDRESS', ( WP_FS__IS_PRODUCTION_MODE ? WP_FS__ADDRESS_PRODUCTION : WP_FS__ADDRESS_LOCALHOST ) );
|
87 |
|
88 |
if ( defined( 'WP_FS__LOCALHOST_IP' ) ) {
|
89 |
-
define( 'WP_FS__IS_LOCALHOST', ( WP_FS__LOCALHOST_IP
|
90 |
} else {
|
91 |
-
define( 'WP_FS__IS_LOCALHOST',
|
|
|
|
|
|
|
|
|
92 |
}
|
93 |
|
94 |
-
define( 'WP_FS__IS_LOCALHOST_FOR_SERVER', (
|
|
|
95 |
|
96 |
// Set API address for local testing.
|
97 |
if ( ! WP_FS__IS_PRODUCTION_MODE ) {
|
@@ -109,7 +118,7 @@
|
|
109 |
}
|
110 |
define( 'WP_FS__OPTIONS_OPTION_NAME', WP_FS___OPTION_PREFIX . 'options' );
|
111 |
|
112 |
-
define( 'WP_FS__IS_HTTPS', (
|
113 |
// Checks if CloudFlare's HTTPS (Flexible SSL support)
|
114 |
isset( $_SERVER['HTTP_X_FORWARDED_PROTO'] ) && 'https' === strtolower( $_SERVER['HTTP_X_FORWARDED_PROTO'] ) ) ||
|
115 |
// Check if HTTPS request.
|
@@ -117,7 +126,8 @@
|
|
117 |
( isset( $_SERVER['SERVER_PORT'] ) && 443 == $_SERVER['SERVER_PORT'] )
|
118 |
);
|
119 |
|
120 |
-
define( 'WP_FS__IS_POST_REQUEST', (
|
|
|
121 |
|
122 |
/**
|
123 |
* Billing Frequencies
|
@@ -136,7 +146,7 @@
|
|
136 |
/**
|
137 |
* Times in seconds
|
138 |
*/
|
139 |
-
|
140 |
define( 'WP_FS__TIME_10_MIN_IN_SEC', 600 );
|
141 |
// define( 'WP_FS__TIME_15_MIN_IN_SEC', 900 );
|
142 |
define( 'WP_FS__TIME_24_HOURS_IN_SEC', 86400 );
|
@@ -144,8 +154,8 @@
|
|
144 |
/**
|
145 |
* Debugging
|
146 |
*/
|
147 |
-
define( 'WP_FS__DEBUG_SDK', ! empty( $_GET['fs_dbg'] ) );
|
148 |
-
define( 'WP_FS__ECHO_DEBUG_SDK', ! empty( $_GET['fs_dbg_echo'] ) );
|
149 |
define( 'WP_FS__LOG_DATETIME_FORMAT', 'Y-n-d H:i:s' );
|
150 |
|
151 |
if ( WP_FS__ECHO_DEBUG_SDK ) {
|
39 |
*/
|
40 |
if ( ! defined( 'WP_FS__LOCALHOST_IP' ) ) {
|
41 |
// VVV default public network IP.
|
42 |
+
define( 'WP_FS__VVV_DEFAULT_PUBLIC_IP', '192.168.50.4' );
|
43 |
|
44 |
// define( 'WP_FS__LOCALHOST_IP', WP_FS__VVV_DEFAULT_PUBLIC_IP );
|
45 |
}
|
56 |
* THEREFORE, MAKE SURE THAT WHEN USING THIS PARAMETER,YOUR TESTING ENVIRONMENT'S
|
57 |
* CLOCK IS SYNCED.
|
58 |
*/
|
59 |
+
if ( ! defined( 'WP_FS__SKIP_EMAIL_ACTIVATION' ) ) {
|
60 |
+
define( 'WP_FS__SKIP_EMAIL_ACTIVATION', false );
|
61 |
+
}
|
62 |
|
63 |
/**
|
64 |
* Directories
|
82 |
define( 'WP_FS__ADDRESS_LOCALHOST', 'http://' . WP_FS__DOMAIN_LOCALHOST . ':8080' );
|
83 |
define( 'WP_FS__ADDRESS_PRODUCTION', 'https://' . WP_FS__DOMAIN_PRODUCTION );
|
84 |
|
85 |
+
define( 'WP_FS__IS_HTTP_REQUEST', isset( $_SERVER['HTTP_HOST'] ) );
|
86 |
+
define( 'WP_FS__REMOTE_ADDR', fs_get_ip() );
|
87 |
+
|
88 |
define( 'WP_FS__IS_PRODUCTION_MODE', ! defined( 'WP_FS__DEV_MODE' ) || ! WP_FS__DEV_MODE || ( WP_FS__TESTING_DOMAIN !== $_SERVER['HTTP_HOST'] ) );
|
89 |
|
90 |
define( 'WP_FS__ADDRESS', ( WP_FS__IS_PRODUCTION_MODE ? WP_FS__ADDRESS_PRODUCTION : WP_FS__ADDRESS_LOCALHOST ) );
|
91 |
|
92 |
if ( defined( 'WP_FS__LOCALHOST_IP' ) ) {
|
93 |
+
define( 'WP_FS__IS_LOCALHOST', ( WP_FS__LOCALHOST_IP === WP_FS__REMOTE_ADDR ) );
|
94 |
} else {
|
95 |
+
define( 'WP_FS__IS_LOCALHOST', WP_FS__IS_HTTP_REQUEST &&
|
96 |
+
is_string( WP_FS__REMOTE_ADDR ) &&
|
97 |
+
( substr( WP_FS__REMOTE_ADDR, 0, 4 ) == '127.' ||
|
98 |
+
WP_FS__REMOTE_ADDR == '::1' )
|
99 |
+
);
|
100 |
}
|
101 |
|
102 |
+
define( 'WP_FS__IS_LOCALHOST_FOR_SERVER', ( ! WP_FS__IS_HTTP_REQUEST ||
|
103 |
+
false !== strpos( $_SERVER['HTTP_HOST'], 'localhost' ) ) );
|
104 |
|
105 |
// Set API address for local testing.
|
106 |
if ( ! WP_FS__IS_PRODUCTION_MODE ) {
|
118 |
}
|
119 |
define( 'WP_FS__OPTIONS_OPTION_NAME', WP_FS___OPTION_PREFIX . 'options' );
|
120 |
|
121 |
+
define( 'WP_FS__IS_HTTPS', ( WP_FS__IS_HTTP_REQUEST &&
|
122 |
// Checks if CloudFlare's HTTPS (Flexible SSL support)
|
123 |
isset( $_SERVER['HTTP_X_FORWARDED_PROTO'] ) && 'https' === strtolower( $_SERVER['HTTP_X_FORWARDED_PROTO'] ) ) ||
|
124 |
// Check if HTTPS request.
|
126 |
( isset( $_SERVER['SERVER_PORT'] ) && 443 == $_SERVER['SERVER_PORT'] )
|
127 |
);
|
128 |
|
129 |
+
define( 'WP_FS__IS_POST_REQUEST', ( WP_FS__IS_HTTP_REQUEST &&
|
130 |
+
strtoupper( $_SERVER['REQUEST_METHOD'] ) == 'POST' ) );
|
131 |
|
132 |
/**
|
133 |
* Billing Frequencies
|
146 |
/**
|
147 |
* Times in seconds
|
148 |
*/
|
149 |
+
define( 'WP_FS__TIME_5_MIN_IN_SEC', 300 );
|
150 |
define( 'WP_FS__TIME_10_MIN_IN_SEC', 600 );
|
151 |
// define( 'WP_FS__TIME_15_MIN_IN_SEC', 900 );
|
152 |
define( 'WP_FS__TIME_24_HOURS_IN_SEC', 86400 );
|
154 |
/**
|
155 |
* Debugging
|
156 |
*/
|
157 |
+
define( 'WP_FS__DEBUG_SDK', WP_FS__DEV_MODE && ! empty( $_GET['fs_dbg'] ) );
|
158 |
+
define( 'WP_FS__ECHO_DEBUG_SDK', WP_FS__DEV_MODE && ! empty( $_GET['fs_dbg_echo'] ) );
|
159 |
define( 'WP_FS__LOG_DATETIME_FORMAT', 'Y-n-d H:i:s' );
|
160 |
|
161 |
if ( WP_FS__ECHO_DEBUG_SDK ) {
|
classes/freemius/includes/class-freemius.php
CHANGED
@@ -191,6 +191,13 @@
|
|
191 |
*/
|
192 |
private $_admin_notices;
|
193 |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
194 |
/**
|
195 |
* @var FS_Logger
|
196 |
* @since 1.0.0
|
@@ -458,7 +465,10 @@
|
|
458 |
'slug' => $this->_slug
|
459 |
);
|
460 |
|
461 |
-
|
|
|
|
|
|
|
462 |
}
|
463 |
|
464 |
/**
|
@@ -797,6 +807,8 @@
|
|
797 |
|
798 |
self::$_accounts = FS_Option_Manager::get_manager( WP_FS__ACCOUNTS_OPTION_NAME, true );
|
799 |
|
|
|
|
|
800 |
// Configure which Freemius powered plugins should be auto updated.
|
801 |
// add_filter( 'auto_update_plugin', '_include_plugins_in_auto_update', 10, 2 );
|
802 |
|
@@ -812,6 +824,10 @@
|
|
812 |
* @since 1.0.8
|
813 |
*/
|
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 );
|
@@ -905,6 +921,7 @@
|
|
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 |
|
@@ -936,8 +953,9 @@
|
|
936 |
}
|
937 |
|
938 |
if ( isset( $this->_storage->connectivity_test ) ) {
|
939 |
-
if (
|
940 |
-
|
|
|
941 |
) {
|
942 |
if ( ( $this->_storage->connectivity_test['is_connected'] &&
|
943 |
$this->_storage->connectivity_test['is_active'] ) ||
|
@@ -945,7 +963,7 @@
|
|
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 |
}
|
@@ -980,7 +998,7 @@
|
|
980 |
$this->_storage->connectivity_test = array(
|
981 |
'is_connected' => $is_connected,
|
982 |
'host' => $_SERVER['HTTP_HOST'],
|
983 |
-
'server_ip' =>
|
984 |
'is_active' => $is_active,
|
985 |
'timestamp' => WP_FS__SCRIPT_START_TIME,
|
986 |
// Last version with connectivity attempt.
|
@@ -988,7 +1006,7 @@
|
|
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 |
}
|
@@ -1385,7 +1403,7 @@
|
|
1385 |
);
|
1386 |
}
|
1387 |
|
1388 |
-
$server_ip =
|
1389 |
|
1390 |
// Generate the default email sections.
|
1391 |
$sections = array(
|
@@ -1560,6 +1578,19 @@
|
|
1560 |
$this->_permissions = $this->_get_option( $plugin_info, 'permissions', array() );
|
1561 |
|
1562 |
if ( ! $this->is_registered() ) {
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
1563 |
if ( ! $this->has_api_connectivity() ) {
|
1564 |
if ( is_admin() && $this->_admin_notices->has_sticky( 'failed_connect_api' ) ) {
|
1565 |
if ( ! $this->_enable_anonymous ) {
|
@@ -1655,13 +1686,13 @@
|
|
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 );
|
1661 |
-
}
|
1662 |
}
|
1663 |
}
|
1664 |
|
|
|
|
|
|
|
|
|
1665 |
// if ( $this->is_registered() ||
|
1666 |
// $this->is_anonymous() ||
|
1667 |
// $this->is_pending_activation()
|
@@ -2131,6 +2162,11 @@
|
|
2131 |
return false;
|
2132 |
}
|
2133 |
|
|
|
|
|
|
|
|
|
|
|
2134 |
$sync_timestamp = $this->_storage->get( 'sync_timestamp' );
|
2135 |
|
2136 |
if ( ! is_numeric( $sync_timestamp ) || $sync_timestamp >= time() ) {
|
@@ -2147,8 +2183,10 @@
|
|
2147 |
// Initiate background plan sync.
|
2148 |
$this->_sync_license( true );
|
2149 |
|
2150 |
-
|
2151 |
-
|
|
|
|
|
2152 |
}
|
2153 |
|
2154 |
if ( ! $this->is_addon() ) {
|
@@ -2213,12 +2251,19 @@
|
|
2213 |
* @since 1.0.7
|
2214 |
*/
|
2215 |
function _admin_init_action() {
|
2216 |
-
|
|
|
|
|
|
|
|
|
2217 |
if ( $this->is_plugin_activation() ) {
|
2218 |
delete_option( "fs_{$this->_slug}_activated" );
|
2219 |
-
$this->_redirect_on_activation_hook();
|
2220 |
|
2221 |
-
|
|
|
|
|
|
|
|
|
2222 |
}
|
2223 |
|
2224 |
if ( fs_request_is_action( $this->_slug . '_skip_activation' ) ) {
|
@@ -2602,6 +2647,24 @@
|
|
2602 |
unset( $this->_storage->is_anonymous );
|
2603 |
}
|
2604 |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
2605 |
/**
|
2606 |
* Skip account connect, and set anonymous mode.
|
2607 |
*
|
@@ -2631,16 +2694,16 @@
|
|
2631 |
private function update_plugin_version_event() {
|
2632 |
$this->_logger->entrance( 'slug = ' . $this->_slug );
|
2633 |
|
2634 |
-
$this->_site->version = $this->get_plugin_version();
|
2635 |
-
|
2636 |
// Send update event.
|
2637 |
$site = $this->send_install_update( array(), true );
|
2638 |
|
2639 |
if ( false !== $site && ! $this->is_api_error( $site ) ) {
|
2640 |
$this->_site = new FS_Site( $site );
|
2641 |
$this->_site->plan = $this->_get_plan_by_id( $site->plan_id );
|
2642 |
-
$this->_store_site( true );
|
2643 |
}
|
|
|
|
|
|
|
2644 |
}
|
2645 |
|
2646 |
/**
|
@@ -3245,6 +3308,21 @@
|
|
3245 |
return $addons[ $this->_plugin->id ];
|
3246 |
}
|
3247 |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
3248 |
/**
|
3249 |
* Get add-on by ID (from local data).
|
3250 |
*
|
@@ -4334,10 +4412,12 @@
|
|
4334 |
function setup_account( FS_User $user, FS_Site $site, $redirect = true ) {
|
4335 |
$this->_user = $user;
|
4336 |
$this->_site = $site;
|
|
|
|
|
|
|
4337 |
$this->_enrich_site_plan( false );
|
4338 |
|
4339 |
$this->_set_account( $user, $site );
|
4340 |
-
$this->_sync_plans();
|
4341 |
|
4342 |
if ( $this->is_trial() ) {
|
4343 |
// Store trial plan information.
|
@@ -4915,7 +4995,7 @@
|
|
4915 |
$this->embed_submenu_items();
|
4916 |
|
4917 |
// Start with specially high number to make sure it's appended.
|
4918 |
-
$i = 10000;
|
4919 |
foreach ( $all_submenu_items_after as $meta ) {
|
4920 |
$top_level_menu[ $i ] = $meta;
|
4921 |
$i ++;
|
@@ -4925,12 +5005,26 @@
|
|
4925 |
ksort( $top_level_menu );
|
4926 |
}
|
4927 |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
4928 |
function _add_default_submenu_items() {
|
4929 |
if ( ! $this->is_on() ) {
|
4930 |
return;
|
4931 |
}
|
4932 |
|
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 ) ),
|
@@ -5116,11 +5210,9 @@
|
|
5116 |
$this->_logger->entrance( $tag );
|
5117 |
|
5118 |
$args = func_get_args();
|
|
|
5119 |
|
5120 |
-
return call_user_func_array( '
|
5121 |
-
array( 'fs_' . $tag . '_' . $this->_slug ),
|
5122 |
-
array_slice( $args, 1 ) )
|
5123 |
-
);
|
5124 |
}
|
5125 |
|
5126 |
/**
|
@@ -5840,30 +5932,45 @@
|
|
5840 |
$plan_change = 'none';
|
5841 |
|
5842 |
if ( $this->is_api_error( $site ) ) {
|
5843 |
-
|
5844 |
-
|
5845 |
-
|
5846 |
-
|
5847 |
-
|
5848 |
-
|
5849 |
-
|
5850 |
-
|
5851 |
-
|
5852 |
-
|
5853 |
-
|
5854 |
-
|
5855 |
-
'
|
5856 |
-
|
5857 |
-
|
5858 |
-
|
5859 |
-
|
5860 |
-
|
5861 |
-
|
5862 |
-
|
5863 |
-
|
5864 |
-
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
5865 |
}
|
5866 |
} else {
|
|
|
|
|
|
|
5867 |
$site = new FS_Site( $site );
|
5868 |
|
5869 |
// Sync licenses.
|
@@ -7028,11 +7135,7 @@
|
|
7028 |
$this->_logger->entrance();
|
7029 |
|
7030 |
$vars = array( 'slug' => $this->_slug );
|
7031 |
-
|
7032 |
-
fs_require_once_template( 'pending-activation.php', $vars );
|
7033 |
-
} else {
|
7034 |
-
fs_require_once_template( 'connect.php', $vars );
|
7035 |
-
}
|
7036 |
}
|
7037 |
|
7038 |
/**
|
@@ -7338,7 +7441,7 @@
|
|
7338 |
|
7339 |
// Add start trial button.
|
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 |
);
|
191 |
*/
|
192 |
private $_admin_notices;
|
193 |
|
194 |
+
/**
|
195 |
+
* @since 1.1.6
|
196 |
+
*
|
197 |
+
* @var FS_Admin_Notice_Manager
|
198 |
+
*/
|
199 |
+
private static $_global_admin_notices;
|
200 |
+
|
201 |
/**
|
202 |
* @var FS_Logger
|
203 |
* @since 1.0.0
|
465 |
'slug' => $this->_slug
|
466 |
);
|
467 |
|
468 |
+
/**
|
469 |
+
* @todo Deactivation form core functions should be loaded only once! Otherwise, when there are multiple Freemius powered plugins the same code is loaded multiple times. The only thing that should be loaded differently is the various deactivation reasons object based on the state of the plugin.
|
470 |
+
*/
|
471 |
+
fs_require_template( 'deactivation-feedback-modal.php', $vars );
|
472 |
}
|
473 |
|
474 |
/**
|
807 |
|
808 |
self::$_accounts = FS_Option_Manager::get_manager( WP_FS__ACCOUNTS_OPTION_NAME, true );
|
809 |
|
810 |
+
self::$_global_admin_notices = FS_Admin_Notice_Manager::instance( 'global' );
|
811 |
+
|
812 |
// Configure which Freemius powered plugins should be auto updated.
|
813 |
// add_filter( 'auto_update_plugin', '_include_plugins_in_auto_update', 10, 2 );
|
814 |
|
824 |
* @since 1.0.8
|
825 |
*/
|
826 |
static function add_debug_page() {
|
827 |
+
if ( ! current_user_can( 'activate_plugins' ) ) {
|
828 |
+
return;
|
829 |
+
}
|
830 |
+
|
831 |
self::$_static_logger->entrance();
|
832 |
|
833 |
$title = sprintf( '%s [v.%s]', __fs( 'freemius-debug' ), WP_FS__SDK_VERSION );
|
921 |
// If already installed or pending then sure it's on :)
|
922 |
if ( $this->is_registered() || $this->is_pending_activation() ) {
|
923 |
$this->_is_on = true;
|
924 |
+
|
925 |
return true;
|
926 |
}
|
927 |
|
953 |
}
|
954 |
|
955 |
if ( isset( $this->_storage->connectivity_test ) ) {
|
956 |
+
if ( ! WP_FS__IS_HTTP_REQUEST ||
|
957 |
+
( $_SERVER['HTTP_HOST'] == $this->_storage->connectivity_test['host'] &&
|
958 |
+
WP_FS__REMOTE_ADDR == $this->_storage->connectivity_test['server_ip'] )
|
959 |
) {
|
960 |
if ( ( $this->_storage->connectivity_test['is_connected'] &&
|
961 |
$this->_storage->connectivity_test['is_active'] ) ||
|
963 |
$version == $this->_storage->connectivity_test['version'] )
|
964 |
) {
|
965 |
$this->_has_api_connection = $this->_storage->connectivity_test['is_connected'];
|
966 |
+
$this->_is_on = $this->_storage->connectivity_test['is_active'] || ( WP_FS__DEV_MODE && $this->_has_api_connection );
|
967 |
|
968 |
return $this->_has_api_connection;
|
969 |
}
|
998 |
$this->_storage->connectivity_test = array(
|
999 |
'is_connected' => $is_connected,
|
1000 |
'host' => $_SERVER['HTTP_HOST'],
|
1001 |
+
'server_ip' => WP_FS__REMOTE_ADDR,
|
1002 |
'is_active' => $is_active,
|
1003 |
'timestamp' => WP_FS__SCRIPT_START_TIME,
|
1004 |
// Last version with connectivity attempt.
|
1006 |
);
|
1007 |
|
1008 |
$this->_has_api_connection = $is_connected;
|
1009 |
+
$this->_is_on = $is_active || ( WP_FS__DEV_MODE && $is_connected );
|
1010 |
|
1011 |
return $this->_has_api_connection;
|
1012 |
}
|
1403 |
);
|
1404 |
}
|
1405 |
|
1406 |
+
$server_ip = WP_FS__REMOTE_ADDR;
|
1407 |
|
1408 |
// Generate the default email sections.
|
1409 |
$sections = array(
|
1578 |
$this->_permissions = $this->_get_option( $plugin_info, 'permissions', array() );
|
1579 |
|
1580 |
if ( ! $this->is_registered() ) {
|
1581 |
+
if ( ! WP_FS__IS_HTTP_REQUEST ) {
|
1582 |
+
/**
|
1583 |
+
* If not registered and executed without HTTP context (e.g. CLI, Cronjob),
|
1584 |
+
* then don't start Freemius.
|
1585 |
+
*
|
1586 |
+
* @author Vova Feldman (@svovaf)
|
1587 |
+
* @since 1.1.6.3
|
1588 |
+
*
|
1589 |
+
* @link https://wordpress.org/support/topic/errors-in-the-freemius-class-when-running-in-wordpress-in-cli
|
1590 |
+
*/
|
1591 |
+
return;
|
1592 |
+
}
|
1593 |
+
|
1594 |
if ( ! $this->has_api_connectivity() ) {
|
1595 |
if ( is_admin() && $this->_admin_notices->has_sticky( 'failed_connect_api' ) ) {
|
1596 |
if ( ! $this->_enable_anonymous ) {
|
1686 |
&$this,
|
1687 |
'_get_addon_info_filter'
|
1688 |
), WP_FS__DEFAULT_PRIORITY, 3 );
|
|
|
|
|
|
|
|
|
1689 |
}
|
1690 |
}
|
1691 |
|
1692 |
+
if ( $this->is_premium() ) {
|
1693 |
+
new FS_Plugin_Updater( $this );
|
1694 |
+
}
|
1695 |
+
|
1696 |
// if ( $this->is_registered() ||
|
1697 |
// $this->is_anonymous() ||
|
1698 |
// $this->is_pending_activation()
|
2162 |
return false;
|
2163 |
}
|
2164 |
|
2165 |
+
// Check if API is not down.
|
2166 |
+
if ( FS_Api::is_temporary_down() ) {
|
2167 |
+
return false;
|
2168 |
+
}
|
2169 |
+
|
2170 |
$sync_timestamp = $this->_storage->get( 'sync_timestamp' );
|
2171 |
|
2172 |
if ( ! is_numeric( $sync_timestamp ) || $sync_timestamp >= time() ) {
|
2183 |
// Initiate background plan sync.
|
2184 |
$this->_sync_license( true );
|
2185 |
|
2186 |
+
if ( $this->is_paying() ) {
|
2187 |
+
// Check for plugin updates.
|
2188 |
+
$this->_check_updates( true );
|
2189 |
+
}
|
2190 |
}
|
2191 |
|
2192 |
if ( ! $this->is_addon() ) {
|
2251 |
* @since 1.0.7
|
2252 |
*/
|
2253 |
function _admin_init_action() {
|
2254 |
+
/**
|
2255 |
+
* Automatically redirect to connect/activation page after plugin activation.
|
2256 |
+
*
|
2257 |
+
* @since 1.1.7 Do NOT redirect to opt-in when running in network admin mode.
|
2258 |
+
*/
|
2259 |
if ( $this->is_plugin_activation() ) {
|
2260 |
delete_option( "fs_{$this->_slug}_activated" );
|
|
|
2261 |
|
2262 |
+
if ( ! function_exists( 'is_network_admin' ) || ! is_network_admin() ) {
|
2263 |
+
$this->_redirect_on_activation_hook();
|
2264 |
+
|
2265 |
+
return;
|
2266 |
+
}
|
2267 |
}
|
2268 |
|
2269 |
if ( fs_request_is_action( $this->_slug . '_skip_activation' ) ) {
|
2647 |
unset( $this->_storage->is_anonymous );
|
2648 |
}
|
2649 |
|
2650 |
+
/**
|
2651 |
+
* Clears the anonymous mode and redirects to the opt-in screen.
|
2652 |
+
*
|
2653 |
+
* @author Vova Feldman (@svovaf)
|
2654 |
+
* @since 1.1.7
|
2655 |
+
*/
|
2656 |
+
function connect_again() {
|
2657 |
+
if ( ! $this->is_anonymous() ) {
|
2658 |
+
return;
|
2659 |
+
}
|
2660 |
+
|
2661 |
+
$this->reset_anonymous_mode();
|
2662 |
+
|
2663 |
+
if ( fs_redirect( $this->get_activation_url() ) ) {
|
2664 |
+
exit();
|
2665 |
+
}
|
2666 |
+
}
|
2667 |
+
|
2668 |
/**
|
2669 |
* Skip account connect, and set anonymous mode.
|
2670 |
*
|
2694 |
private function update_plugin_version_event() {
|
2695 |
$this->_logger->entrance( 'slug = ' . $this->_slug );
|
2696 |
|
|
|
|
|
2697 |
// Send update event.
|
2698 |
$site = $this->send_install_update( array(), true );
|
2699 |
|
2700 |
if ( false !== $site && ! $this->is_api_error( $site ) ) {
|
2701 |
$this->_site = new FS_Site( $site );
|
2702 |
$this->_site->plan = $this->_get_plan_by_id( $site->plan_id );
|
|
|
2703 |
}
|
2704 |
+
|
2705 |
+
$this->_site->version = $this->get_plugin_version();
|
2706 |
+
$this->_store_site( true );
|
2707 |
}
|
2708 |
|
2709 |
/**
|
3308 |
return $addons[ $this->_plugin->id ];
|
3309 |
}
|
3310 |
|
3311 |
+
/**
|
3312 |
+
* Check if user has any
|
3313 |
+
*
|
3314 |
+
* @author Vova Feldman (@svovaf)
|
3315 |
+
* @since 1.1.6
|
3316 |
+
*
|
3317 |
+
* @return bool
|
3318 |
+
*/
|
3319 |
+
function has_account_addons() {
|
3320 |
+
$addons = $this->get_account_addons();
|
3321 |
+
|
3322 |
+
return is_array( $addons ) && ( 0 < count( $addons ) );
|
3323 |
+
}
|
3324 |
+
|
3325 |
+
|
3326 |
/**
|
3327 |
* Get add-on by ID (from local data).
|
3328 |
*
|
4412 |
function setup_account( FS_User $user, FS_Site $site, $redirect = true ) {
|
4413 |
$this->_user = $user;
|
4414 |
$this->_site = $site;
|
4415 |
+
|
4416 |
+
$this->_sync_plans();
|
4417 |
+
|
4418 |
$this->_enrich_site_plan( false );
|
4419 |
|
4420 |
$this->_set_account( $user, $site );
|
|
|
4421 |
|
4422 |
if ( $this->is_trial() ) {
|
4423 |
// Store trial plan information.
|
4995 |
$this->embed_submenu_items();
|
4996 |
|
4997 |
// Start with specially high number to make sure it's appended.
|
4998 |
+
$i = max( 10000, max( array_keys( $top_level_menu ) ) + 1 );
|
4999 |
foreach ( $all_submenu_items_after as $meta ) {
|
5000 |
$top_level_menu[ $i ] = $meta;
|
5001 |
$i ++;
|
5005 |
ksort( $top_level_menu );
|
5006 |
}
|
5007 |
|
5008 |
+
/**
|
5009 |
+
* Displays the Support Forum link when enabled.
|
5010 |
+
*
|
5011 |
+
* Can be filtered like so:
|
5012 |
+
*
|
5013 |
+
* function _fs_show_support_menu( $is_visible, $menu_id ) {
|
5014 |
+
* if ( 'support' === $menu_id ) {
|
5015 |
+
* return _fs->is_registered();
|
5016 |
+
* }
|
5017 |
+
* return $is_visible;
|
5018 |
+
* }
|
5019 |
+
* _fs()->add_filter('is_submenu_visible', '_fs_show_support_menu', 10, 2);
|
5020 |
+
*
|
5021 |
+
*/
|
5022 |
function _add_default_submenu_items() {
|
5023 |
if ( ! $this->is_on() ) {
|
5024 |
return;
|
5025 |
}
|
5026 |
|
5027 |
+
if ( $this->is_registered() || $this->is_anonymous() ) {
|
5028 |
if ( $this->_menu->is_submenu_item_visible( 'support' ) ) {
|
5029 |
$this->add_submenu_link_item(
|
5030 |
$this->apply_filters( 'support_forum_submenu', __fs( 'support-forum', $this->_slug ) ),
|
5210 |
$this->_logger->entrance( $tag );
|
5211 |
|
5212 |
$args = func_get_args();
|
5213 |
+
array_unshift($args, $this->_slug);
|
5214 |
|
5215 |
+
return call_user_func_array( 'fs_apply_filter', $args);
|
|
|
|
|
|
|
5216 |
}
|
5217 |
|
5218 |
/**
|
5932 |
$plan_change = 'none';
|
5933 |
|
5934 |
if ( $this->is_api_error( $site ) ) {
|
5935 |
+
// Show API messages only if not background sync or if paying customer.
|
5936 |
+
if ( ! $background || $this->is_paying() ) {
|
5937 |
+
// Try to ping API to see if not blocked.
|
5938 |
+
if ( ! FS_Api::test() ) {
|
5939 |
+
/**
|
5940 |
+
* Failed to ping API - blocked!
|
5941 |
+
*
|
5942 |
+
* @author Vova Feldman (@svovaf)
|
5943 |
+
* @since 1.1.6 Only show message related to one of the Freemius powered plugins. Once it will be resolved it will fix the issue for all plugins anyways. There's no point to scare users with multiple error messages.
|
5944 |
+
*/
|
5945 |
+
$api = $this->get_api_site_scope();
|
5946 |
+
|
5947 |
+
if ( ! self::$_global_admin_notices->has_sticky( 'api_blocked' ) ) {
|
5948 |
+
self::$_global_admin_notices->add(
|
5949 |
+
sprintf(
|
5950 |
+
__fs( 'server-blocking-access', $this->_slug ),
|
5951 |
+
$this->get_plugin_name(),
|
5952 |
+
'<a href="' . $api->get_url() . '" target="_blank">' . $api->get_url() . '</a>'
|
5953 |
+
) . '<br> ' . __fs( 'server-error-message', $this->_slug ) . var_export( $site->error, true ),
|
5954 |
+
__fs( 'oops', $this->_slug ) . '...',
|
5955 |
+
'error',
|
5956 |
+
$background,
|
5957 |
+
false,
|
5958 |
+
'api_blocked'
|
5959 |
+
);
|
5960 |
+
}
|
5961 |
+
} else {
|
5962 |
+
// Authentication params are broken.
|
5963 |
+
$this->_admin_notices->add(
|
5964 |
+
__fs( 'wrong-authentication-param-message', $this->_slug ),
|
5965 |
+
__fs( 'oops', $this->_slug ) . '...',
|
5966 |
+
'error'
|
5967 |
+
);
|
5968 |
+
}
|
5969 |
}
|
5970 |
} else {
|
5971 |
+
// Remove sticky API connectivity message.
|
5972 |
+
self::$_global_admin_notices->remove_sticky('api_blocked');
|
5973 |
+
|
5974 |
$site = new FS_Site( $site );
|
5975 |
|
5976 |
// Sync licenses.
|
7135 |
$this->_logger->entrance();
|
7136 |
|
7137 |
$vars = array( 'slug' => $this->_slug );
|
7138 |
+
fs_require_once_template( 'connect.php', $vars );
|
|
|
|
|
|
|
|
|
7139 |
}
|
7140 |
|
7141 |
/**
|
7441 |
|
7442 |
// Add start trial button.
|
7443 |
$message .= ' ' . sprintf(
|
7444 |
+
'<a style="margin-left: 10px; vertical-align: super;" href="%s"><button class="button button-primary">%s ➜</button></a>',
|
7445 |
$upgrade_url,
|
7446 |
__fs( 'start-free-trial', $this->_slug )
|
7447 |
);
|
classes/freemius/includes/class-fs-api.php
CHANGED
@@ -31,7 +31,7 @@
|
|
31 |
private static $_options;
|
32 |
|
33 |
/**
|
34 |
-
* @var
|
35 |
*/
|
36 |
private static $_cache;
|
37 |
|
@@ -70,9 +70,7 @@
|
|
70 |
$identifier = md5( $slug . $scope . $id . $public_key . ( is_string( $secret_key ) ? $secret_key : '' ) . json_encode( $is_sandbox ) );
|
71 |
|
72 |
if ( ! isset( self::$_instances[ $identifier ] ) ) {
|
73 |
-
|
74 |
-
self::_init();
|
75 |
-
}
|
76 |
|
77 |
self::$_instances[ $identifier ] = new FS_Api( $slug, $scope, $id, $public_key, $secret_key, $is_sandbox );
|
78 |
}
|
@@ -81,12 +79,16 @@
|
|
81 |
}
|
82 |
|
83 |
private static function _init() {
|
|
|
|
|
|
|
|
|
84 |
if ( ! class_exists( 'Freemius_Api' ) ) {
|
85 |
require_once( WP_FS__DIR_SDK . '/Freemius.php' );
|
86 |
}
|
87 |
|
88 |
self::$_options = FS_Option_Manager::get_manager( WP_FS__OPTIONS_OPTION_NAME, true );
|
89 |
-
self::$_cache =
|
90 |
|
91 |
self::$_clock_diff = self::$_options->get_option( 'api_clock_diff', 0 );
|
92 |
Freemius_Api::SetClockDiff( self::$_clock_diff );
|
@@ -123,7 +125,7 @@
|
|
123 |
|
124 |
// Sync clock and store.
|
125 |
$new_clock_diff = ( false === $diff ) ?
|
126 |
-
|
127 |
$diff;
|
128 |
|
129 |
if ( $new_clock_diff === self::$_clock_diff ) {
|
@@ -133,7 +135,7 @@
|
|
133 |
self::$_clock_diff = $new_clock_diff;
|
134 |
|
135 |
// Update API clock's diff.
|
136 |
-
|
137 |
|
138 |
// Store new clock diff in storage.
|
139 |
self::$_options->set_option( 'api_clock_diff', self::$_clock_diff, true );
|
@@ -154,26 +156,31 @@
|
|
154 |
private function _call( $path, $method = 'GET', $params = array(), $retry = false ) {
|
155 |
$this->_logger->entrance();
|
156 |
|
157 |
-
|
158 |
-
|
159 |
-
|
160 |
-
|
161 |
-
|
162 |
-
|
163 |
-
|
164 |
-
|
165 |
-
|
166 |
-
|
167 |
-
|
168 |
-
|
169 |
-
|
170 |
-
|
171 |
-
|
|
|
|
|
|
|
|
|
|
|
172 |
}
|
173 |
}
|
174 |
}
|
175 |
|
176 |
-
if ( null !== $result && isset( $result->error ) ) {
|
177 |
// Log API errors.
|
178 |
$this->_logger->error( $result->error->message );
|
179 |
}
|
@@ -214,6 +221,8 @@
|
|
214 |
* @return stdClass|mixed
|
215 |
*/
|
216 |
function get( $path = '/', $flush = false, $expiration = WP_FS__TIME_24_HOURS_IN_SEC ) {
|
|
|
|
|
217 |
$cache_key = $this->get_cache_key( $path );
|
218 |
|
219 |
// Always flush during development.
|
@@ -221,30 +230,19 @@
|
|
221 |
$flush = true;
|
222 |
}
|
223 |
|
224 |
-
|
225 |
-
$cache_entry = self::$_cache->get_option( $cache_key, false );
|
226 |
-
|
227 |
-
$fetch = false;
|
228 |
-
if ( $flush ||
|
229 |
-
false === $cache_entry ||
|
230 |
-
! isset( $cache_entry->timestamp ) ||
|
231 |
-
! is_numeric( $cache_entry->timestamp ) ||
|
232 |
-
$cache_entry->timestamp < WP_FS__SCRIPT_START_TIME
|
233 |
-
) {
|
234 |
-
$fetch = true;
|
235 |
-
}
|
236 |
|
237 |
-
if ( $
|
238 |
$result = $this->call( $path );
|
239 |
|
240 |
if ( ! is_object( $result ) || isset( $result->error ) ) {
|
241 |
-
|
242 |
-
|
243 |
-
! isset( $
|
244 |
) {
|
245 |
// If there was an error during a newer data fetch,
|
246 |
// fallback to older data version.
|
247 |
-
$result = $
|
248 |
} else {
|
249 |
// If no older data version, return result without
|
250 |
// caching the error.
|
@@ -252,13 +250,12 @@
|
|
252 |
}
|
253 |
}
|
254 |
|
255 |
-
$
|
256 |
-
|
257 |
-
$
|
258 |
-
self::$_cache->set_option( $cache_key, $cache_entry, true );
|
259 |
}
|
260 |
|
261 |
-
return $
|
262 |
}
|
263 |
|
264 |
private function get_cache_key( $path, $method = 'GET', $params = array() ) {
|
@@ -271,38 +268,81 @@
|
|
271 |
/**
|
272 |
* Test API connectivity.
|
273 |
*
|
|
|
274 |
* @since 1.0.9 If fails, try to fallback to HTTP.
|
275 |
-
*
|
276 |
-
*
|
277 |
*
|
278 |
* @return bool True if successful connectivity to the API.
|
279 |
*/
|
280 |
-
function test(
|
281 |
-
|
282 |
|
283 |
-
|
284 |
-
// cUrl extension is not active.
|
285 |
-
return false;
|
286 |
-
}
|
287 |
|
288 |
-
$test =
|
289 |
-
$this->_api->Test() :
|
290 |
-
$this->_api->Test( $this->_call( 'ping.json?uid=' . $unique_anonymous_id ) );
|
291 |
|
292 |
-
if (
|
293 |
-
|
294 |
-
$this->_api->SetHttp();
|
295 |
|
296 |
-
|
|
|
|
|
|
|
|
|
297 |
|
298 |
-
|
299 |
-
|
300 |
-
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
301 |
}
|
302 |
|
303 |
return $test;
|
304 |
}
|
305 |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
306 |
/**
|
307 |
* Ping API for connectivity test, and return result object.
|
308 |
*
|
@@ -315,12 +355,70 @@
|
|
315 |
* @return object
|
316 |
*/
|
317 |
function ping( $unique_anonymous_id = null, $is_update = false ) {
|
318 |
-
|
319 |
-
|
|
|
|
|
|
|
|
|
|
|
|
|
320 |
$this->_call( 'ping.json?' . http_build_query( array(
|
321 |
'uid' => $unique_anonymous_id,
|
322 |
'is_update' => $is_update,
|
323 |
) ) );
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
324 |
}
|
325 |
|
326 |
/**
|
@@ -334,11 +432,11 @@
|
|
334 |
* @return bool
|
335 |
*/
|
336 |
function is_valid_ping( $pong ) {
|
337 |
-
return
|
338 |
}
|
339 |
|
340 |
function get_url( $path = '' ) {
|
341 |
-
return $this->_api->
|
342 |
}
|
343 |
|
344 |
/**
|
@@ -348,7 +446,9 @@
|
|
348 |
* @since 1.0.9
|
349 |
*/
|
350 |
static function clear_cache() {
|
351 |
-
self
|
352 |
-
|
|
|
|
|
353 |
}
|
354 |
}
|
31 |
private static $_options;
|
32 |
|
33 |
/**
|
34 |
+
* @var FS_Cache_Manager API Caching layer
|
35 |
*/
|
36 |
private static $_cache;
|
37 |
|
70 |
$identifier = md5( $slug . $scope . $id . $public_key . ( is_string( $secret_key ) ? $secret_key : '' ) . json_encode( $is_sandbox ) );
|
71 |
|
72 |
if ( ! isset( self::$_instances[ $identifier ] ) ) {
|
73 |
+
self::_init();
|
|
|
|
|
74 |
|
75 |
self::$_instances[ $identifier ] = new FS_Api( $slug, $scope, $id, $public_key, $secret_key, $is_sandbox );
|
76 |
}
|
79 |
}
|
80 |
|
81 |
private static function _init() {
|
82 |
+
if ( isset( self::$_options ) ) {
|
83 |
+
return;
|
84 |
+
}
|
85 |
+
|
86 |
if ( ! class_exists( 'Freemius_Api' ) ) {
|
87 |
require_once( WP_FS__DIR_SDK . '/Freemius.php' );
|
88 |
}
|
89 |
|
90 |
self::$_options = FS_Option_Manager::get_manager( WP_FS__OPTIONS_OPTION_NAME, true );
|
91 |
+
self::$_cache = FS_Cache_Manager::get_manager( WP_FS__API_CACHE_OPTION_NAME );
|
92 |
|
93 |
self::$_clock_diff = self::$_options->get_option( 'api_clock_diff', 0 );
|
94 |
Freemius_Api::SetClockDiff( self::$_clock_diff );
|
125 |
|
126 |
// Sync clock and store.
|
127 |
$new_clock_diff = ( false === $diff ) ?
|
128 |
+
Freemius_Api::FindClockDiff() :
|
129 |
$diff;
|
130 |
|
131 |
if ( $new_clock_diff === self::$_clock_diff ) {
|
135 |
self::$_clock_diff = $new_clock_diff;
|
136 |
|
137 |
// Update API clock's diff.
|
138 |
+
Freemius_Api::SetClockDiff( self::$_clock_diff );
|
139 |
|
140 |
// Store new clock diff in storage.
|
141 |
self::$_options->set_option( 'api_clock_diff', self::$_clock_diff, true );
|
156 |
private function _call( $path, $method = 'GET', $params = array(), $retry = false ) {
|
157 |
$this->_logger->entrance();
|
158 |
|
159 |
+
if ( self::is_temporary_down() ) {
|
160 |
+
$result = $this->get_temporary_unavailable_error();
|
161 |
+
} else {
|
162 |
+
$result = $this->_api->Api( $path, $method, $params );
|
163 |
+
|
164 |
+
if ( null !== $result &&
|
165 |
+
isset( $result->error ) &&
|
166 |
+
isset( $result->error->code ) &&
|
167 |
+
'request_expired' === $result->error->code
|
168 |
+
) {
|
169 |
+
if ( ! $retry ) {
|
170 |
+
$diff = isset( $result->error->timestamp ) ?
|
171 |
+
( time() - strtotime( $result->error->timestamp ) ) :
|
172 |
+
false;
|
173 |
+
|
174 |
+
// Try to sync clock diff.
|
175 |
+
if ( false !== $this->_sync_clock_diff( $diff ) ) {
|
176 |
+
// Retry call with new synced clock.
|
177 |
+
return $this->_call( $path, $method, $params, true );
|
178 |
+
}
|
179 |
}
|
180 |
}
|
181 |
}
|
182 |
|
183 |
+
if ( null !== $result && isset( $result->error ) && isset( $result->error->message ) ) {
|
184 |
// Log API errors.
|
185 |
$this->_logger->error( $result->error->message );
|
186 |
}
|
221 |
* @return stdClass|mixed
|
222 |
*/
|
223 |
function get( $path = '/', $flush = false, $expiration = WP_FS__TIME_24_HOURS_IN_SEC ) {
|
224 |
+
$this->_logger->entrance();
|
225 |
+
|
226 |
$cache_key = $this->get_cache_key( $path );
|
227 |
|
228 |
// Always flush during development.
|
230 |
$flush = true;
|
231 |
}
|
232 |
|
233 |
+
$cached_result = self::$_cache->get( $cache_key );
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
234 |
|
235 |
+
if ( $flush || ! self::$_cache->has_valid( $cache_key ) ) {
|
236 |
$result = $this->call( $path );
|
237 |
|
238 |
if ( ! is_object( $result ) || isset( $result->error ) ) {
|
239 |
+
// Api returned an error.
|
240 |
+
if ( is_object( $cached_result ) &&
|
241 |
+
! isset( $cached_result )
|
242 |
) {
|
243 |
// If there was an error during a newer data fetch,
|
244 |
// fallback to older data version.
|
245 |
+
$result = $cached_result;
|
246 |
} else {
|
247 |
// If no older data version, return result without
|
248 |
// caching the error.
|
250 |
}
|
251 |
}
|
252 |
|
253 |
+
self::$_cache->set( $cache_key, $result, $expiration );
|
254 |
+
|
255 |
+
$cached_result = $result;
|
|
|
256 |
}
|
257 |
|
258 |
+
return $cached_result;
|
259 |
}
|
260 |
|
261 |
private function get_cache_key( $path, $method = 'GET', $params = array() ) {
|
268 |
/**
|
269 |
* Test API connectivity.
|
270 |
*
|
271 |
+
* @author Vova Feldman (@svovaf)
|
272 |
* @since 1.0.9 If fails, try to fallback to HTTP.
|
273 |
+
* @since 1.1.6 Added a 5-min caching mechanism, to prevent from overloading the server if the API if
|
274 |
+
* temporary down.
|
275 |
*
|
276 |
* @return bool True if successful connectivity to the API.
|
277 |
*/
|
278 |
+
static function test() {
|
279 |
+
self::_init();
|
280 |
|
281 |
+
$cache_key = 'ping_test';
|
|
|
|
|
|
|
282 |
|
283 |
+
$test = self::$_cache->get_valid( $cache_key, null );
|
|
|
|
|
284 |
|
285 |
+
if ( is_null( $test ) ) {
|
286 |
+
$test = Freemius_Api::Test();
|
|
|
287 |
|
288 |
+
if ( false === $test && Freemius_Api::IsHttps() ) {
|
289 |
+
// Fallback to HTTP, since HTTPS fails.
|
290 |
+
Freemius_Api::SetHttp();
|
291 |
+
|
292 |
+
self::$_options->set_option( 'api_force_http', true, true );
|
293 |
|
294 |
+
$test = Freemius_Api::Test();
|
295 |
+
|
296 |
+
if ( false === $test ) {
|
297 |
+
/**
|
298 |
+
* API connectivity test fail also in HTTP request, therefore,
|
299 |
+
* fallback to HTTPS to keep connection secure.
|
300 |
+
*
|
301 |
+
* @since 1.1.6
|
302 |
+
*/
|
303 |
+
self::$_options->set_option( 'api_force_http', false, true );
|
304 |
+
}
|
305 |
+
}
|
306 |
+
|
307 |
+
self::$_cache->set( $cache_key, $test, WP_FS__TIME_5_MIN_IN_SEC );
|
308 |
}
|
309 |
|
310 |
return $test;
|
311 |
}
|
312 |
|
313 |
+
/**
|
314 |
+
* Check if API is temporary down.
|
315 |
+
*
|
316 |
+
* @author Vova Feldman (@svovaf)
|
317 |
+
* @since 1.1.6
|
318 |
+
*
|
319 |
+
* @return bool
|
320 |
+
*/
|
321 |
+
static function is_temporary_down() {
|
322 |
+
self::_init();
|
323 |
+
|
324 |
+
$test = self::$_cache->get_valid( 'ping_test', null );
|
325 |
+
|
326 |
+
return ( false === $test );
|
327 |
+
}
|
328 |
+
|
329 |
+
/**
|
330 |
+
* @author Vova Feldman (@svovaf)
|
331 |
+
* @since 1.1.6
|
332 |
+
*
|
333 |
+
* @return object
|
334 |
+
*/
|
335 |
+
private function get_temporary_unavailable_error() {
|
336 |
+
return (object) array(
|
337 |
+
'error' => array(
|
338 |
+
'type' => 'TemporaryUnavailable',
|
339 |
+
'message' => 'API is temporary unavailable.',
|
340 |
+
'code' => 'temporary_unavailable',
|
341 |
+
'http' => 503
|
342 |
+
)
|
343 |
+
);
|
344 |
+
}
|
345 |
+
|
346 |
/**
|
347 |
* Ping API for connectivity test, and return result object.
|
348 |
*
|
355 |
* @return object
|
356 |
*/
|
357 |
function ping( $unique_anonymous_id = null, $is_update = false ) {
|
358 |
+
$this->_logger->entrance();
|
359 |
+
|
360 |
+
if ( self::is_temporary_down() ) {
|
361 |
+
return $this->get_temporary_unavailable_error();
|
362 |
+
}
|
363 |
+
|
364 |
+
$pong = is_null( $unique_anonymous_id ) ?
|
365 |
+
Freemius_Api::Ping() :
|
366 |
$this->_call( 'ping.json?' . http_build_query( array(
|
367 |
'uid' => $unique_anonymous_id,
|
368 |
'is_update' => $is_update,
|
369 |
) ) );
|
370 |
+
|
371 |
+
if ( $this->is_valid_ping( $pong ) ) {
|
372 |
+
return $pong;
|
373 |
+
}
|
374 |
+
|
375 |
+
if ( self::should_try_with_http( $pong ) ) {
|
376 |
+
// Fallback to HTTP, since HTTPS fails.
|
377 |
+
Freemius_Api::SetHttp();
|
378 |
+
|
379 |
+
self::$_options->set_option( 'api_force_http', true, true );
|
380 |
+
|
381 |
+
$pong = is_null( $unique_anonymous_id ) ?
|
382 |
+
Freemius_Api::Ping() :
|
383 |
+
$this->_call( 'ping.json?' . http_build_query( array(
|
384 |
+
'uid' => $unique_anonymous_id,
|
385 |
+
'is_update' => $is_update,
|
386 |
+
) ) );
|
387 |
+
|
388 |
+
if ( ! $this->is_valid_ping( $pong ) ) {
|
389 |
+
self::$_options->set_option( 'api_force_http', false, true );
|
390 |
+
}
|
391 |
+
}
|
392 |
+
|
393 |
+
return $pong;
|
394 |
+
}
|
395 |
+
|
396 |
+
/**
|
397 |
+
* Check if based on the API result we should try
|
398 |
+
* to re-run the same request with HTTP instead of HTTPS.
|
399 |
+
*
|
400 |
+
* @author Vova Feldman (@svovaf)
|
401 |
+
* @since 1.1.6
|
402 |
+
*
|
403 |
+
* @param $result
|
404 |
+
*
|
405 |
+
* @return bool
|
406 |
+
*/
|
407 |
+
private static function should_try_with_http($result) {
|
408 |
+
if ( ! Freemius_Api::IsHttps() ) {
|
409 |
+
return false;
|
410 |
+
}
|
411 |
+
|
412 |
+
return ( ! is_object( $result ) ||
|
413 |
+
! isset( $result->error ) ||
|
414 |
+
! isset( $result->error->code ) ||
|
415 |
+
! in_array( $result->error->code, array(
|
416 |
+
'curl_missing',
|
417 |
+
'cloudflare_ddos_protection',
|
418 |
+
'squid_cache_block',
|
419 |
+
'too_many_requests',
|
420 |
+
) ) );
|
421 |
+
|
422 |
}
|
423 |
|
424 |
/**
|
432 |
* @return bool
|
433 |
*/
|
434 |
function is_valid_ping( $pong ) {
|
435 |
+
return Freemius_Api::Test( $pong );
|
436 |
}
|
437 |
|
438 |
function get_url( $path = '' ) {
|
439 |
+
return Freemius_Api::GetUrl( $path, $this->_api->IsSandbox() );
|
440 |
}
|
441 |
|
442 |
/**
|
446 |
* @since 1.0.9
|
447 |
*/
|
448 |
static function clear_cache() {
|
449 |
+
self::_init();
|
450 |
+
|
451 |
+
self::$_cache = FS_Cache_Manager::get_manager( WP_FS__API_CACHE_OPTION_NAME );
|
452 |
+
self::$_cache->clear();
|
453 |
}
|
454 |
}
|
classes/freemius/includes/class-fs-plugin-updater.php
CHANGED
@@ -52,6 +52,26 @@
|
|
52 |
'pre_set_site_transient_update_plugins_filter'
|
53 |
) );
|
54 |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
55 |
if ( ! WP_FS__IS_PRODUCTION_MODE ) {
|
56 |
add_filter( 'http_request_host_is_external', array(
|
57 |
$this,
|
@@ -60,6 +80,47 @@
|
|
60 |
}
|
61 |
}
|
62 |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
63 |
/**
|
64 |
* Since WP version 3.6, a new security feature was added that denies access to repository with a local ip.
|
65 |
* During development mode we want to be able updating plugin versions via our localhost repository. This
|
52 |
'pre_set_site_transient_update_plugins_filter'
|
53 |
) );
|
54 |
|
55 |
+
if ( ! $this->_fs->has_active_license() ) {
|
56 |
+
/**
|
57 |
+
* If user has the premium plugin's code but do NOT have an active license,
|
58 |
+
* encourage him to upgrade by showing that there's a new release, but instead
|
59 |
+
* of showing an update link, show upgrade link to the pricing page.
|
60 |
+
*
|
61 |
+
* @since 1.1.6
|
62 |
+
*
|
63 |
+
*/
|
64 |
+
// WP 2.9+
|
65 |
+
add_action( "after_plugin_row_{$this->_fs->get_plugin_basename()}", array(
|
66 |
+
&$this,
|
67 |
+
'catch_plugin_update_row'
|
68 |
+
), 9 );
|
69 |
+
add_action( "after_plugin_row_{$this->_fs->get_plugin_basename()}", array(
|
70 |
+
&$this,
|
71 |
+
'edit_and_echo_plugin_update_row'
|
72 |
+
), 11, 2 );
|
73 |
+
}
|
74 |
+
|
75 |
if ( ! WP_FS__IS_PRODUCTION_MODE ) {
|
76 |
add_filter( 'http_request_host_is_external', array(
|
77 |
$this,
|
80 |
}
|
81 |
}
|
82 |
|
83 |
+
/**
|
84 |
+
* Capture plugin update row by turning output buffering.
|
85 |
+
*
|
86 |
+
* @author Vova Feldman (@svovaf)
|
87 |
+
* @since 1.1.6
|
88 |
+
*/
|
89 |
+
function catch_plugin_update_row() {
|
90 |
+
ob_start();
|
91 |
+
}
|
92 |
+
|
93 |
+
/**
|
94 |
+
* Overrides default update message format with "renew your license" message.
|
95 |
+
*
|
96 |
+
* @author Vova Feldman (@svovaf)
|
97 |
+
* @since 1.1.6
|
98 |
+
*/
|
99 |
+
function edit_and_echo_plugin_update_row( $file, $plugin_data ) {
|
100 |
+
$plugin_update_row = ob_get_clean();
|
101 |
+
|
102 |
+
$current = get_site_transient( 'update_plugins' );
|
103 |
+
if ( ! isset( $current->response[ $file ] ) ) {
|
104 |
+
echo $plugin_update_row;
|
105 |
+
|
106 |
+
return false;
|
107 |
+
}
|
108 |
+
|
109 |
+
$r = $current->response[ $file ];
|
110 |
+
|
111 |
+
$plugin_update_row = preg_replace(
|
112 |
+
'/(\<div.+>)(.+)(\<a.+\<a.+)\<\/div\>/is',
|
113 |
+
'$1 $2 ' . sprintf(
|
114 |
+
__fs( 'renew-license-now' ),
|
115 |
+
'<a href="' . $this->_fs->pricing_url() . '">', '</a>',
|
116 |
+
$r->new_version ) .
|
117 |
+
'$4',
|
118 |
+
$plugin_update_row
|
119 |
+
);
|
120 |
+
|
121 |
+
echo $plugin_update_row;
|
122 |
+
}
|
123 |
+
|
124 |
/**
|
125 |
* Since WP version 3.6, a new security feature was added that denies access to repository with a local ip.
|
126 |
* During development mode we want to be able updating plugin versions via our localhost repository. This
|
classes/freemius/includes/fs-core-functions.php
CHANGED
@@ -138,34 +138,6 @@
|
|
138 |
return ( is_admin() && $_REQUEST['page'] === $menu_slug );
|
139 |
}
|
140 |
|
141 |
-
/**
|
142 |
-
* Get client IP.
|
143 |
-
*
|
144 |
-
* @author Vova Feldman (@svovaf)
|
145 |
-
* @since 1.1.2
|
146 |
-
*
|
147 |
-
* @return string|null
|
148 |
-
*/
|
149 |
-
function fs_get_ip() {
|
150 |
-
$fields = array(
|
151 |
-
'HTTP_CF_CONNECTING_IP',
|
152 |
-
'HTTP_CLIENT_IP',
|
153 |
-
'HTTP_X_FORWARDED_FOR',
|
154 |
-
'HTTP_X_FORWARDED',
|
155 |
-
'HTTP_FORWARDED_FOR',
|
156 |
-
'HTTP_FORWARDED',
|
157 |
-
'REMOTE_ADDR',
|
158 |
-
);
|
159 |
-
|
160 |
-
foreach ( $fields as $ip_field ) {
|
161 |
-
if ( ! empty( $_SERVER[ $ip_field ] ) ) {
|
162 |
-
return $_SERVER[ $ip_field ];
|
163 |
-
}
|
164 |
-
}
|
165 |
-
|
166 |
-
return null;
|
167 |
-
}
|
168 |
-
|
169 |
/* Core UI.
|
170 |
--------------------------------------------------------------------------------------------*/
|
171 |
function fs_ui_action_button( $slug, $page, $action, $title, $params = array(), $is_primary = true ) {
|
@@ -336,4 +308,36 @@
|
|
336 |
fclose( $fp );
|
337 |
}
|
338 |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
339 |
|
138 |
return ( is_admin() && $_REQUEST['page'] === $menu_slug );
|
139 |
}
|
140 |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
141 |
/* Core UI.
|
142 |
--------------------------------------------------------------------------------------------*/
|
143 |
function fs_ui_action_button( $slug, $page, $action, $title, $params = array(), $is_primary = true ) {
|
308 |
fclose( $fp );
|
309 |
}
|
310 |
|
311 |
+
/* General Utilities
|
312 |
+
--------------------------------------------------------------------------------------------*/
|
313 |
+
|
314 |
+
/**
|
315 |
+
* Sorts an array by the value of the priority key.
|
316 |
+
*
|
317 |
+
* @author Daniel Iser (@danieliser)
|
318 |
+
* @since 1.1.7
|
319 |
+
*
|
320 |
+
* @param $a
|
321 |
+
* @param $b
|
322 |
+
*
|
323 |
+
* @return int
|
324 |
+
*/
|
325 |
+
function fs_sort_by_priority( $a, $b ) {
|
326 |
+
|
327 |
+
// If b has a priority and a does not, b wins.
|
328 |
+
if ( ! isset( $a['priority'] ) && isset( $b['priority'] ) ) {
|
329 |
+
return 1;
|
330 |
+
}
|
331 |
+
// If b has a priority and a does not, b wins.
|
332 |
+
elseif ( isset( $a['priority'] ) && ! isset( $b['priority'] ) ) {
|
333 |
+
return -1;
|
334 |
+
}
|
335 |
+
// If neither has a priority or both priorities are equal its a tie.
|
336 |
+
elseif ( ( ! isset( $a['priority'] ) && ! isset( $b['priority'] ) ) || $a['priority'] === $b['priority'] ) {
|
337 |
+
return 0;
|
338 |
+
}
|
339 |
+
|
340 |
+
// If both have priority return the winner.
|
341 |
+
return ( $a['priority'] < $b['priority'] ) ? - 1 : 1;
|
342 |
+
}
|
343 |
|
classes/freemius/includes/fs-essential-functions.php
CHANGED
@@ -120,8 +120,6 @@
|
|
120 |
|
121 |
#endregion Core Redirect (copied from BuddyPress) -----------------------------------------
|
122 |
|
123 |
-
#region
|
124 |
-
|
125 |
if ( ! function_exists( '__fs' ) ) {
|
126 |
global $fs_text_overrides;
|
127 |
|
@@ -146,7 +144,7 @@
|
|
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 ] ) &&
|
@@ -197,8 +195,38 @@
|
|
197 |
}
|
198 |
}
|
199 |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
200 |
/**
|
201 |
-
* Leverage backtrace to find caller plugin file path.
|
202 |
*
|
203 |
* @author Vova Feldman (@svovaf)
|
204 |
* @since 1.0.6
|
@@ -239,6 +267,8 @@
|
|
239 |
return $plugin_file;
|
240 |
}
|
241 |
|
|
|
|
|
242 |
/**
|
243 |
* Update SDK newest version reference.
|
244 |
*
|
@@ -282,6 +312,13 @@
|
|
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 ) {
|
@@ -336,4 +373,31 @@
|
|
336 |
} else {
|
337 |
fs_update_sdk_newest_version( $newest_sdk_path, $newest_sdk_data->plugin_path );
|
338 |
}
|
339 |
-
}
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
120 |
|
121 |
#endregion Core Redirect (copied from BuddyPress) -----------------------------------------
|
122 |
|
|
|
|
|
123 |
if ( ! function_exists( '__fs' ) ) {
|
124 |
global $fs_text_overrides;
|
125 |
|
144 |
global $fs_text, $fs_text_overrides;
|
145 |
|
146 |
if ( ! isset( $fs_text ) ) {
|
147 |
+
require_once( ( defined( 'WP_FS__DIR_INCLUDES' ) ? WP_FS__DIR_INCLUDES : dirname( __FILE__ ) ) . '/i18n.php' );
|
148 |
}
|
149 |
|
150 |
if ( isset( $fs_text_overrides[ $slug ] ) &&
|
195 |
}
|
196 |
}
|
197 |
|
198 |
+
if ( ! function_exists( 'fs_get_ip' ) ) {
|
199 |
+
/**
|
200 |
+
* Get client IP.
|
201 |
+
*
|
202 |
+
* @author Vova Feldman (@svovaf)
|
203 |
+
* @since 1.1.2
|
204 |
+
*
|
205 |
+
* @return string|null
|
206 |
+
*/
|
207 |
+
function fs_get_ip() {
|
208 |
+
$fields = array(
|
209 |
+
'HTTP_CF_CONNECTING_IP',
|
210 |
+
'HTTP_CLIENT_IP',
|
211 |
+
'HTTP_X_FORWARDED_FOR',
|
212 |
+
'HTTP_X_FORWARDED',
|
213 |
+
'HTTP_FORWARDED_FOR',
|
214 |
+
'HTTP_FORWARDED',
|
215 |
+
'REMOTE_ADDR',
|
216 |
+
);
|
217 |
+
|
218 |
+
foreach ( $fields as $ip_field ) {
|
219 |
+
if ( ! empty( $_SERVER[ $ip_field ] ) ) {
|
220 |
+
return $_SERVER[ $ip_field ];
|
221 |
+
}
|
222 |
+
}
|
223 |
+
|
224 |
+
return null;
|
225 |
+
}
|
226 |
+
}
|
227 |
+
|
228 |
/**
|
229 |
+
* Leverage backtrace to find caller plugin main file path.
|
230 |
*
|
231 |
* @author Vova Feldman (@svovaf)
|
232 |
* @since 1.0.6
|
267 |
return $plugin_file;
|
268 |
}
|
269 |
|
270 |
+
require_once dirname( __FILE__ ) . '/supplements/fs-essential-functions-1.1.7.1.php';
|
271 |
+
|
272 |
/**
|
273 |
* Update SDK newest version reference.
|
274 |
*
|
312 |
function fs_newest_sdk_plugin_first() {
|
313 |
global $fs_active_plugins;
|
314 |
|
315 |
+
/**
|
316 |
+
* @todo Multi-site network activated plugin are always loaded prior to site plugins so if there's a a plugin activated in the network mode that has an older version of the SDK of another plugin which is site activated that has new SDK version, the fs-essential-functions.php will be loaded from the older SDK. Same thing about MU plugins (loaded even before network activated plugins).
|
317 |
+
*
|
318 |
+
* @link https://github.com/Freemius/wordpress-sdk/issues/26
|
319 |
+
*/
|
320 |
+
// $active_sitewide_plugins = get_site_option( 'active_sitewide_plugins' );
|
321 |
+
|
322 |
$active_plugins = get_option( 'active_plugins' );
|
323 |
$newest_sdk_plugin_key = array_search( $fs_active_plugins->newest->plugin_path, $active_plugins );
|
324 |
if ( 0 == $newest_sdk_plugin_key ) {
|
373 |
} else {
|
374 |
fs_update_sdk_newest_version( $newest_sdk_path, $newest_sdk_data->plugin_path );
|
375 |
}
|
376 |
+
}
|
377 |
+
|
378 |
+
#region Actions / Filters -----------------------------------------
|
379 |
+
|
380 |
+
/**
|
381 |
+
* Apply filter for specific plugin.
|
382 |
+
*
|
383 |
+
* @author Vova Feldman (@svovaf)
|
384 |
+
* @since 1.0.9
|
385 |
+
*
|
386 |
+
* @param string $slug Plugin slug
|
387 |
+
* @param string $tag The name of the filter hook.
|
388 |
+
* @param mixed $value The value on which the filters hooked to `$tag` are applied on.
|
389 |
+
*
|
390 |
+
* @return mixed The filtered value after all hooked functions are applied to it.
|
391 |
+
*
|
392 |
+
* @uses apply_filters()
|
393 |
+
*/
|
394 |
+
function fs_apply_filter( $slug, $tag, $value ) {
|
395 |
+
$args = func_get_args();
|
396 |
+
|
397 |
+
return call_user_func_array( 'apply_filters', array_merge(
|
398 |
+
array( 'fs_' . $tag . '_' . $slug ),
|
399 |
+
array_slice( $args, 2 ) )
|
400 |
+
);
|
401 |
+
}
|
402 |
+
|
403 |
+
#endregion Actions / Filters -----------------------------------------
|
classes/freemius/includes/i18n.php
CHANGED
@@ -1,4 +1,15 @@
|
|
1 |
<?php
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
2 |
/**
|
3 |
* All strings can now be overridden.
|
4 |
*
|
@@ -53,6 +64,7 @@
|
|
53 |
'license-single-site' => __( 'Single Site License', 'freemius' ),
|
54 |
'license-unlimited' => __( 'Unlimited Licenses', 'freemius' ),
|
55 |
'license-x-sites' => __( 'Up to %s Sites', 'freemius' ),
|
|
|
56 |
'x-plan' => _x( '%s Plan', 'e.g. Professional Plan', 'freemius' ),
|
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' ),
|
@@ -159,6 +171,7 @@
|
|
159 |
'privacy-policy' => __( 'Privacy Policy', 'freemius' ),
|
160 |
'tos' => __( 'Terms of Service', 'freemius' ),
|
161 |
'activating' => _x( 'Activating', 'as activating plugin', 'freemius' ),
|
|
|
162 |
'opt-in-connect' => _x( 'Allow & Continue', 'button label', 'freemius' ),
|
163 |
'skip' => _x( 'Skip', 'verb', 'freemius' ),
|
164 |
'resend-activation-email' => __( 'Re-send activation email', 'freemius' ),
|
@@ -271,7 +284,7 @@
|
|
271 |
'deactivate-plugin-title' => __( 'That\'s exhausting, please deactivate', 'freemius' ),
|
272 |
'deactivate-plugin-desc' => __( 'We feel your frustration and sincerely apologize for the inconvenience. Hope to see you again in the future.', 'freemius' ),
|
273 |
'fix-request-sent-message' => __( 'Thank for giving us the chance to fix it! A message was just sent to our technical staff. We will get back to you as soon as we have an update to %s. Appreciate your patience.', 'freemius' ),
|
274 |
-
'server-blocking-access' => _x( 'Your server is blocking the access to Freemius\' API, which is crucial for %1s
|
275 |
'wrong-authentication-param-message' => __( 'It seems like one of the authentication parameters is wrong. Update your Public Key, Secret Key & User ID, and try again.', 'freemius' ),
|
276 |
#endregion Connectivity Issues
|
277 |
#region Change Owner
|
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.4
|
7 |
+
*/
|
8 |
+
|
9 |
+
if ( ! defined( 'ABSPATH' ) ) {
|
10 |
+
exit;
|
11 |
+
}
|
12 |
+
|
13 |
/**
|
14 |
* All strings can now be overridden.
|
15 |
*
|
64 |
'license-single-site' => __( 'Single Site License', 'freemius' ),
|
65 |
'license-unlimited' => __( 'Unlimited Licenses', 'freemius' ),
|
66 |
'license-x-sites' => __( 'Up to %s Sites', 'freemius' ),
|
67 |
+
'renew-license-now' => __( '%sRenew your license now%s to access version %s features and support.', 'freemius' ),
|
68 |
'x-plan' => _x( '%s Plan', 'e.g. Professional Plan', 'freemius' ),
|
69 |
'you-are-step-away' => __( 'You are just one step away - %s', 'freemius' ),
|
70 |
'activate-x-now' => _x( 'Complete "%s" Activation Now', '%s - plugin name. As complete "Jetpack" activation now', 'freemius' ),
|
171 |
'privacy-policy' => __( 'Privacy Policy', 'freemius' ),
|
172 |
'tos' => __( 'Terms of Service', 'freemius' ),
|
173 |
'activating' => _x( 'Activating', 'as activating plugin', 'freemius' ),
|
174 |
+
'sending-email' => _x( 'Sending email', 'as in the process of sending an email', 'freemius' ),
|
175 |
'opt-in-connect' => _x( 'Allow & Continue', 'button label', 'freemius' ),
|
176 |
'skip' => _x( 'Skip', 'verb', 'freemius' ),
|
177 |
'resend-activation-email' => __( 'Re-send activation email', 'freemius' ),
|
284 |
'deactivate-plugin-title' => __( 'That\'s exhausting, please deactivate', 'freemius' ),
|
285 |
'deactivate-plugin-desc' => __( 'We feel your frustration and sincerely apologize for the inconvenience. Hope to see you again in the future.', 'freemius' ),
|
286 |
'fix-request-sent-message' => __( 'Thank for giving us the chance to fix it! A message was just sent to our technical staff. We will get back to you as soon as we have an update to %s. Appreciate your patience.', 'freemius' ),
|
287 |
+
'server-blocking-access' => _x( 'Your server is blocking the access to Freemius\' API, which is crucial for %1s synchronization. Please contact your host to whitelist %2s', '%1s - plugin title, %2s - API domain', 'freemius' ),
|
288 |
'wrong-authentication-param-message' => __( 'It seems like one of the authentication parameters is wrong. Update your Public Key, Secret Key & User ID, and try again.', 'freemius' ),
|
289 |
#endregion Connectivity Issues
|
290 |
#region Change Owner
|
classes/freemius/includes/managers/class-fs-admin-menu-manager.php
CHANGED
@@ -110,7 +110,7 @@
|
|
110 |
}
|
111 |
|
112 |
private function get_bool_option( &$options, $key, $default = false ) {
|
113 |
-
return isset( $options[ $key ] ) &&
|
114 |
}
|
115 |
|
116 |
#endregion Helpers
|
@@ -239,7 +239,12 @@
|
|
239 |
* @return bool
|
240 |
*/
|
241 |
function is_submenu_item_visible( $id, $default = true ) {
|
242 |
-
return
|
|
|
|
|
|
|
|
|
|
|
243 |
}
|
244 |
|
245 |
/**
|
110 |
}
|
111 |
|
112 |
private function get_bool_option( &$options, $key, $default = false ) {
|
113 |
+
return isset( $options[ $key ] ) &&is_bool( $options[ $key ] ) ? $options[ $key ] : $default;
|
114 |
}
|
115 |
|
116 |
#endregion Helpers
|
239 |
* @return bool
|
240 |
*/
|
241 |
function is_submenu_item_visible( $id, $default = true ) {
|
242 |
+
return fs_apply_filter(
|
243 |
+
$this->_plugin_slug,
|
244 |
+
'is_submenu_visible',
|
245 |
+
$this->get_bool_option( $this->_default_submenu_items, $id, $default ),
|
246 |
+
$id
|
247 |
+
);
|
248 |
}
|
249 |
|
250 |
/**
|
classes/freemius/includes/managers/class-fs-cache-manager.php
ADDED
@@ -0,0 +1,211 @@
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
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.6
|
7 |
+
*/
|
8 |
+
|
9 |
+
if ( ! defined( 'ABSPATH' ) ) {
|
10 |
+
exit;
|
11 |
+
}
|
12 |
+
|
13 |
+
class FS_Cache_Manager {
|
14 |
+
/**
|
15 |
+
* @var FS_Option_Manager
|
16 |
+
*/
|
17 |
+
private $_options;
|
18 |
+
/**
|
19 |
+
* @var FS_Logger
|
20 |
+
*/
|
21 |
+
private $_logger;
|
22 |
+
|
23 |
+
/**
|
24 |
+
* @var FS_Cache_Manager[]
|
25 |
+
*/
|
26 |
+
private static $_MANAGERS = array();
|
27 |
+
|
28 |
+
/**
|
29 |
+
* @author Vova Feldman (@svovaf)
|
30 |
+
* @since 1.1.3
|
31 |
+
*
|
32 |
+
* @param string $id
|
33 |
+
*/
|
34 |
+
private function __construct( $id ) {
|
35 |
+
$this->_logger = FS_Logger::get_logger( WP_FS__SLUG . '_cach_mngr_' . $id, WP_FS__DEBUG_SDK, WP_FS__ECHO_DEBUG_SDK );
|
36 |
+
|
37 |
+
$this->_logger->entrance();
|
38 |
+
$this->_logger->log( 'id = ' . $id );
|
39 |
+
|
40 |
+
$this->_options = FS_Option_Manager::get_manager( $id, true );
|
41 |
+
}
|
42 |
+
|
43 |
+
/**
|
44 |
+
* @author Vova Feldman (@svovaf)
|
45 |
+
* @since 1.1.6
|
46 |
+
*
|
47 |
+
* @param $id
|
48 |
+
*
|
49 |
+
* @return FS_Cache_Manager
|
50 |
+
*/
|
51 |
+
static function get_manager( $id ) {
|
52 |
+
$id = strtolower( $id );
|
53 |
+
|
54 |
+
if ( ! isset( self::$_MANAGERS[ $id ] ) ) {
|
55 |
+
self::$_MANAGERS[ $id ] = new FS_Cache_Manager( $id );
|
56 |
+
}
|
57 |
+
|
58 |
+
return self::$_MANAGERS[ $id ];
|
59 |
+
}
|
60 |
+
|
61 |
+
/**
|
62 |
+
* @author Vova Feldman (@svovaf)
|
63 |
+
* @since 1.1.6
|
64 |
+
*
|
65 |
+
* @return bool
|
66 |
+
*/
|
67 |
+
function is_empty() {
|
68 |
+
$this->_logger->entrance();
|
69 |
+
|
70 |
+
return $this->_options->is_empty();
|
71 |
+
}
|
72 |
+
|
73 |
+
/**
|
74 |
+
* @author Vova Feldman (@svovaf)
|
75 |
+
* @since 1.1.6
|
76 |
+
*/
|
77 |
+
function clear() {
|
78 |
+
$this->_logger->entrance();
|
79 |
+
|
80 |
+
$this->_options->clear( true );
|
81 |
+
}
|
82 |
+
|
83 |
+
/**
|
84 |
+
* Delete cache manager from DB.
|
85 |
+
*
|
86 |
+
* @author Vova Feldman (@svovaf)
|
87 |
+
* @since 1.0.9
|
88 |
+
*/
|
89 |
+
function delete() {
|
90 |
+
$this->_options->delete();
|
91 |
+
}
|
92 |
+
|
93 |
+
/**
|
94 |
+
* Check if there's a cached item.
|
95 |
+
*
|
96 |
+
* @author Vova Feldman (@svovaf)
|
97 |
+
* @since 1.1.6
|
98 |
+
*
|
99 |
+
* @param string $key
|
100 |
+
*
|
101 |
+
* @return bool
|
102 |
+
*/
|
103 |
+
function has( $key ) {
|
104 |
+
$cache_entry = $this->_options->get_option( $key, false );
|
105 |
+
|
106 |
+
return ( is_object( $cache_entry ) &&
|
107 |
+
isset( $cache_entry->timestamp ) &&
|
108 |
+
is_numeric( $cache_entry->timestamp )
|
109 |
+
);
|
110 |
+
}
|
111 |
+
|
112 |
+
/**
|
113 |
+
* Check if there's a valid cached item.
|
114 |
+
*
|
115 |
+
* @author Vova Feldman (@svovaf)
|
116 |
+
* @since 1.1.6
|
117 |
+
*
|
118 |
+
* @param string $key
|
119 |
+
*
|
120 |
+
* @return bool
|
121 |
+
*/
|
122 |
+
function has_valid( $key ) {
|
123 |
+
$cache_entry = $this->_options->get_option( $key, false );
|
124 |
+
|
125 |
+
return ( is_object( $cache_entry ) &&
|
126 |
+
isset( $cache_entry->timestamp ) &&
|
127 |
+
is_numeric( $cache_entry->timestamp ) &&
|
128 |
+
$cache_entry->timestamp > WP_FS__SCRIPT_START_TIME
|
129 |
+
);
|
130 |
+
}
|
131 |
+
|
132 |
+
/**
|
133 |
+
* @author Vova Feldman (@svovaf)
|
134 |
+
* @since 1.1.6
|
135 |
+
*
|
136 |
+
* @param string $key
|
137 |
+
* @param mixed $default
|
138 |
+
*
|
139 |
+
* @return mixed
|
140 |
+
*/
|
141 |
+
function get( $key, $default = null ) {
|
142 |
+
$this->_logger->entrance( 'key = ' . $key );
|
143 |
+
|
144 |
+
$cache_entry = $this->_options->get_option( $key, false );
|
145 |
+
|
146 |
+
if ( is_object( $cache_entry ) &&
|
147 |
+
isset( $cache_entry->timestamp ) &&
|
148 |
+
is_numeric( $cache_entry->timestamp )
|
149 |
+
) {
|
150 |
+
return $cache_entry->result;
|
151 |
+
}
|
152 |
+
|
153 |
+
return $default;
|
154 |
+
}
|
155 |
+
|
156 |
+
/**
|
157 |
+
* @author Vova Feldman (@svovaf)
|
158 |
+
* @since 1.1.6
|
159 |
+
*
|
160 |
+
* @param string $key
|
161 |
+
* @param mixed $default
|
162 |
+
*
|
163 |
+
* @return mixed
|
164 |
+
*/
|
165 |
+
function get_valid( $key, $default = null ) {
|
166 |
+
$this->_logger->entrance( 'key = ' . $key );
|
167 |
+
|
168 |
+
$cache_entry = $this->_options->get_option( $key, false );
|
169 |
+
|
170 |
+
if ( is_object( $cache_entry ) &&
|
171 |
+
isset( $cache_entry->timestamp ) &&
|
172 |
+
is_numeric( $cache_entry->timestamp ) &&
|
173 |
+
$cache_entry->timestamp > WP_FS__SCRIPT_START_TIME
|
174 |
+
) {
|
175 |
+
return $cache_entry->result;
|
176 |
+
}
|
177 |
+
|
178 |
+
return $default;
|
179 |
+
}
|
180 |
+
|
181 |
+
/**
|
182 |
+
* @author Vova Feldman (@svovaf)
|
183 |
+
* @since 1.1.6
|
184 |
+
*
|
185 |
+
* @param string $key
|
186 |
+
* @param mixed $value
|
187 |
+
* @param int $expiration
|
188 |
+
*/
|
189 |
+
function set( $key, $value, $expiration = WP_FS__TIME_24_HOURS_IN_SEC ) {
|
190 |
+
$this->_logger->entrance( 'key = ' . $key );
|
191 |
+
|
192 |
+
$cache_entry = new stdClass();
|
193 |
+
$cache_entry->result = $value;
|
194 |
+
$cache_entry->timestamp = WP_FS__SCRIPT_START_TIME + $expiration;
|
195 |
+
$this->_options->set_option( $key, $cache_entry, true );
|
196 |
+
}
|
197 |
+
|
198 |
+
/**
|
199 |
+
* Purge cached item.
|
200 |
+
*
|
201 |
+
* @author Vova Feldman (@svovaf)
|
202 |
+
* @since 1.1.6
|
203 |
+
*
|
204 |
+
* @param string $key
|
205 |
+
*/
|
206 |
+
function purge( $key ) {
|
207 |
+
$this->_logger->entrance( 'key = ' . $key );
|
208 |
+
|
209 |
+
$this->_options->unset_option( $key, true );
|
210 |
+
}
|
211 |
+
}
|
classes/freemius/includes/sdk/Exceptions/ArgumentNotExistException.php
CHANGED
@@ -1,2 +1,6 @@
|
|
1 |
<?php
|
|
|
|
|
|
|
|
|
2 |
class Freemius_ArgumentNotExistException extends Freemius_InvalidArgumentException { }
|
1 |
<?php
|
2 |
+
if ( ! class_exists( 'Freemius_InvalidArgumentException' ) ) {
|
3 |
+
exit;
|
4 |
+
}
|
5 |
+
|
6 |
class Freemius_ArgumentNotExistException extends Freemius_InvalidArgumentException { }
|
classes/freemius/includes/sdk/Exceptions/EmptyArgumentException.php
CHANGED
@@ -1,2 +1,6 @@
|
|
1 |
<?php
|
|
|
|
|
|
|
|
|
2 |
class Freemius_EmptyArgumentException extends Freemius_InvalidArgumentException { }
|
1 |
<?php
|
2 |
+
if ( ! class_exists( 'Freemius_InvalidArgumentException' ) ) {
|
3 |
+
exit;
|
4 |
+
}
|
5 |
+
|
6 |
class Freemius_EmptyArgumentException extends Freemius_InvalidArgumentException { }
|
classes/freemius/includes/sdk/Exceptions/InvalidArgumentException.php
CHANGED
@@ -1,2 +1,6 @@
|
|
1 |
<?php
|
|
|
|
|
|
|
|
|
2 |
class Freemius_InvalidArgumentException extends Freemius_Exception { }
|
1 |
<?php
|
2 |
+
if ( ! class_exists( 'Freemius_Exception' ) ) {
|
3 |
+
exit;
|
4 |
+
}
|
5 |
+
|
6 |
class Freemius_InvalidArgumentException extends Freemius_Exception { }
|
classes/freemius/includes/sdk/Exceptions/OAuthException.php
CHANGED
@@ -1,4 +1,8 @@
|
|
1 |
<?php
|
|
|
|
|
|
|
|
|
2 |
class Freemius_OAuthException extends Freemius_Exception
|
3 |
{
|
4 |
public function __construct($pResult)
|
1 |
<?php
|
2 |
+
if ( ! class_exists( 'Freemius_Exception' ) ) {
|
3 |
+
exit;
|
4 |
+
}
|
5 |
+
|
6 |
class Freemius_OAuthException extends Freemius_Exception
|
7 |
{
|
8 |
public function __construct($pResult)
|
classes/freemius/includes/sdk/Freemius.php
CHANGED
@@ -75,8 +75,8 @@
|
|
75 |
parent::Init( $pScope, $pID, $pPublic, $pSecret, $pSandbox );
|
76 |
}
|
77 |
|
78 |
-
public function GetUrl( $pCanonizedPath = '' ) {
|
79 |
-
$address = ( $
|
80 |
|
81 |
if ( ':' === $address[0] ) {
|
82 |
$address = self::$_protocol . $address;
|
@@ -85,6 +85,8 @@
|
|
85 |
return $address . $pCanonizedPath;
|
86 |
}
|
87 |
|
|
|
|
|
88 |
/**
|
89 |
* @var int Clock diff in seconds between current server to API server.
|
90 |
*/
|
@@ -101,6 +103,21 @@
|
|
101 |
self::$_clock_diff = $pSeconds;
|
102 |
}
|
103 |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
104 |
/**
|
105 |
* @var string http or https
|
106 |
*/
|
@@ -132,25 +149,27 @@
|
|
132 |
* {scope_entity_secret_key}))
|
133 |
*
|
134 |
* @param string $pResourceUrl
|
135 |
-
* @param array $
|
|
|
|
|
136 |
*/
|
137 |
-
|
138 |
$eol = "\n";
|
139 |
$content_md5 = '';
|
140 |
$now = ( time() - self::$_clock_diff );
|
141 |
$date = date( 'r', $now );
|
142 |
$content_type = '';
|
143 |
|
144 |
-
if ( isset( $
|
145 |
-
$content_md5
|
146 |
-
$
|
147 |
-
$content_type
|
148 |
}
|
149 |
|
150 |
-
$
|
151 |
|
152 |
$string_to_sign = implode( $eol, array(
|
153 |
-
$
|
154 |
$content_md5,
|
155 |
$content_type,
|
156 |
$date,
|
@@ -162,13 +181,15 @@
|
|
162 |
$auth_type = ( $this->_secret !== $this->_public ) ? 'FS' : 'FSP';
|
163 |
|
164 |
// Add authorization header.
|
165 |
-
$
|
166 |
-
|
167 |
-
|
168 |
-
|
169 |
-
|
170 |
-
|
171 |
-
|
|
|
|
|
172 |
}
|
173 |
|
174 |
/**
|
@@ -202,7 +223,7 @@
|
|
202 |
// the signature uses public key hash encoding.
|
203 |
$auth_type = ( $this->_secret !== $this->_public ) ? 'FS' : 'FSP';
|
204 |
|
205 |
-
return
|
206 |
$pResourceUrl . '?' .
|
207 |
( 1 < count( $resource ) && ! empty( $resource[1] ) ? $resource[1] . '&' : '' ) .
|
208 |
http_build_query( array(
|
@@ -212,37 +233,42 @@
|
|
212 |
self::Base64UrlEncode( hash_hmac(
|
213 |
'sha256', $string_to_sign, $this->_secret
|
214 |
) )
|
215 |
-
) ) );
|
216 |
}
|
217 |
|
218 |
/**
|
219 |
-
*
|
220 |
-
*
|
221 |
-
*
|
222 |
-
*
|
223 |
-
* @param
|
224 |
-
* @param
|
225 |
-
* @param array $params The parameters to use for the POST body
|
226 |
-
* @param null|resource $ch Initialized curl handle
|
227 |
*
|
228 |
* @return object[]|object|null
|
229 |
*
|
230 |
-
* @throws Freemius_Exception
|
231 |
*/
|
232 |
-
|
233 |
-
|
234 |
-
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
235 |
}
|
236 |
|
237 |
// Connectivity errors simulation.
|
238 |
if ( FS_SDK__SIMULATE_NO_API_CONNECTIVITY_CLOUDFLARE ) {
|
239 |
-
|
240 |
} else if ( FS_SDK__SIMULATE_NO_API_CONNECTIVITY_SQUID_ACL ) {
|
241 |
-
|
242 |
}
|
243 |
|
244 |
-
if ( ! $
|
245 |
-
$
|
246 |
}
|
247 |
|
248 |
$opts = self::$CURL_OPTS;
|
@@ -252,25 +278,20 @@
|
|
252 |
}
|
253 |
|
254 |
if ( 'POST' === $pMethod || 'PUT' === $pMethod ) {
|
255 |
-
if ( is_array( $
|
256 |
$opts[ CURLOPT_HTTPHEADER ][] = 'Content-Type: application/json';
|
257 |
-
$opts[ CURLOPT_POST ] = count( $
|
258 |
-
$opts[ CURLOPT_POSTFIELDS ] = json_encode( $
|
259 |
}
|
260 |
|
261 |
$opts[ CURLOPT_RETURNTRANSFER ] = true;
|
262 |
}
|
263 |
|
264 |
-
$opts[ CURLOPT_URL ] =
|
265 |
$opts[ CURLOPT_CUSTOMREQUEST ] = $pMethod;
|
266 |
|
267 |
$resource = explode( '?', $pCanonizedPath );
|
268 |
|
269 |
-
// Only sign request if not ping.json connectivity test.
|
270 |
-
if ( '/v1/ping.json' !== strtolower( substr( $resource[0], - strlen( '/v1/ping.json' ) ) ) ) {
|
271 |
-
$this->SignRequest( $resource[0], $opts );
|
272 |
-
}
|
273 |
-
|
274 |
// disable the 'Expect: 100-continue' behaviour. This causes CURL to wait
|
275 |
// for 2 seconds if the server does not support this header.
|
276 |
$opts[ CURLOPT_HTTPHEADER ][] = 'Expect:';
|
@@ -280,8 +301,14 @@
|
|
280 |
$opts[ CURLOPT_SSL_VERIFYPEER ] = false;
|
281 |
}
|
282 |
|
283 |
-
|
284 |
-
|
|
|
|
|
|
|
|
|
|
|
|
|
285 |
|
286 |
/*if (curl_errno($ch) == 60) // CURLE_SSL_CACERT
|
287 |
{
|
@@ -299,33 +326,25 @@
|
|
299 |
if ( false === $result && empty( $opts[ CURLOPT_IPRESOLVE ] ) ) {
|
300 |
$matches = array();
|
301 |
$regex = '/Failed to connect to ([^:].*): Network is unreachable/';
|
302 |
-
if ( preg_match( $regex, curl_error( $
|
303 |
if ( strlen( @inet_pton( $matches[1] ) ) === 16 ) {
|
304 |
// self::errorLog('Invalid IPv6 configuration on server, Please disable or get native IPv6 on your server.');
|
305 |
self::$CURL_OPTS[ CURLOPT_IPRESOLVE ] = CURL_IPRESOLVE_V4;
|
306 |
-
curl_setopt( $
|
307 |
-
$result = curl_exec( $
|
308 |
}
|
309 |
}
|
310 |
}
|
311 |
|
312 |
if ( $result === false ) {
|
313 |
-
$
|
314 |
-
'error' => array(
|
315 |
-
'code' => curl_errno( $ch ),
|
316 |
-
'message' => curl_error( $ch ),
|
317 |
-
'type' => 'CurlException',
|
318 |
-
),
|
319 |
-
) );
|
320 |
-
|
321 |
-
curl_close( $ch );
|
322 |
-
throw $e;
|
323 |
}
|
324 |
|
325 |
-
curl_close( $
|
326 |
|
327 |
-
if (empty($result))
|
328 |
return null;
|
|
|
329 |
|
330 |
$decoded = json_decode( $result );
|
331 |
|
@@ -333,11 +352,11 @@
|
|
333 |
if ( preg_match( '/Please turn JavaScript on/i', $result ) &&
|
334 |
preg_match( '/text\/javascript/', $result )
|
335 |
) {
|
336 |
-
|
337 |
} else if ( preg_match( '/Access control configuration prevents your request from being allowed at this time. Please contact your service provider if you feel this is incorrect./', $result ) &&
|
338 |
preg_match( '/squid/', $result )
|
339 |
) {
|
340 |
-
|
341 |
} else {
|
342 |
$decoded = (object) array(
|
343 |
'error' => (object) array(
|
@@ -353,12 +372,121 @@
|
|
353 |
return $decoded;
|
354 |
}
|
355 |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
356 |
/**
|
357 |
* @param string $pResult
|
358 |
*
|
359 |
* @throws Freemius_Exception
|
360 |
*/
|
361 |
-
private function ThrowNoCurlException( $pResult = '' ) {
|
362 |
throw new Freemius_Exception( array(
|
363 |
'error' => (object) array(
|
364 |
'type' => 'cUrlMissing',
|
@@ -374,7 +502,7 @@
|
|
374 |
*
|
375 |
* @throws Freemius_Exception
|
376 |
*/
|
377 |
-
private function ThrowCloudFlareDDoSException( $pResult = '' ) {
|
378 |
throw new Freemius_Exception( array(
|
379 |
'error' => (object) array(
|
380 |
'type' => 'CloudFlareDDoSProtection',
|
@@ -390,7 +518,7 @@
|
|
390 |
*
|
391 |
* @throws Freemius_Exception
|
392 |
*/
|
393 |
-
private function ThrowSquidAclException( $pResult = '' ) {
|
394 |
throw new Freemius_Exception( array(
|
395 |
'error' => (object) array(
|
396 |
'type' => 'SquidCacheBlock',
|
@@ -400,4 +528,6 @@
|
|
400 |
)
|
401 |
) );
|
402 |
}
|
|
|
|
|
403 |
}
|
75 |
parent::Init( $pScope, $pID, $pPublic, $pSecret, $pSandbox );
|
76 |
}
|
77 |
|
78 |
+
public static function GetUrl( $pCanonizedPath = '', $pIsSandbox = false ) {
|
79 |
+
$address = ( $pIsSandbox ? FS_API__SANDBOX_ADDRESS : FS_API__ADDRESS );
|
80 |
|
81 |
if ( ':' === $address[0] ) {
|
82 |
$address = self::$_protocol . $address;
|
85 |
return $address . $pCanonizedPath;
|
86 |
}
|
87 |
|
88 |
+
#region Servers Clock Diff ------------------------------------------------------
|
89 |
+
|
90 |
/**
|
91 |
* @var int Clock diff in seconds between current server to API server.
|
92 |
*/
|
103 |
self::$_clock_diff = $pSeconds;
|
104 |
}
|
105 |
|
106 |
+
/**
|
107 |
+
* Find clock diff between current server to API server.
|
108 |
+
*
|
109 |
+
* @since 1.0.2
|
110 |
+
* @return int Clock diff in seconds.
|
111 |
+
*/
|
112 |
+
public static function FindClockDiff() {
|
113 |
+
$time = time();
|
114 |
+
$pong = self::Ping();
|
115 |
+
|
116 |
+
return ( $time - strtotime( $pong->timestamp ) );
|
117 |
+
}
|
118 |
+
|
119 |
+
#endregion Servers Clock Diff ------------------------------------------------------
|
120 |
+
|
121 |
/**
|
122 |
* @var string http or https
|
123 |
*/
|
149 |
* {scope_entity_secret_key}))
|
150 |
*
|
151 |
* @param string $pResourceUrl
|
152 |
+
* @param array $pCurlOptions
|
153 |
+
*
|
154 |
+
* @return array
|
155 |
*/
|
156 |
+
function SignRequest( $pResourceUrl, $pCurlOptions ) {
|
157 |
$eol = "\n";
|
158 |
$content_md5 = '';
|
159 |
$now = ( time() - self::$_clock_diff );
|
160 |
$date = date( 'r', $now );
|
161 |
$content_type = '';
|
162 |
|
163 |
+
if ( isset( $pCurlOptions[ CURLOPT_POST ] ) && 0 < $pCurlOptions[ CURLOPT_POST ] ) {
|
164 |
+
$content_md5 = md5( $pCurlOptions[ CURLOPT_POSTFIELDS ] );
|
165 |
+
$pCurlOptions[ CURLOPT_HTTPHEADER ][] = 'Content-MD5: ' . $content_md5;
|
166 |
+
$content_type = 'application/json';
|
167 |
}
|
168 |
|
169 |
+
$pCurlOptions[ CURLOPT_HTTPHEADER ][] = 'Date: ' . $date;
|
170 |
|
171 |
$string_to_sign = implode( $eol, array(
|
172 |
+
$pCurlOptions[ CURLOPT_CUSTOMREQUEST ],
|
173 |
$content_md5,
|
174 |
$content_type,
|
175 |
$date,
|
181 |
$auth_type = ( $this->_secret !== $this->_public ) ? 'FS' : 'FSP';
|
182 |
|
183 |
// Add authorization header.
|
184 |
+
$pCurlOptions[ CURLOPT_HTTPHEADER ][] = 'Authorization: ' .
|
185 |
+
$auth_type . ' ' .
|
186 |
+
$this->_id . ':' .
|
187 |
+
$this->_public . ':' .
|
188 |
+
self::Base64UrlEncode(
|
189 |
+
hash_hmac( 'sha256', $string_to_sign, $this->_secret )
|
190 |
+
);
|
191 |
+
|
192 |
+
return $pCurlOptions;
|
193 |
}
|
194 |
|
195 |
/**
|
223 |
// the signature uses public key hash encoding.
|
224 |
$auth_type = ( $this->_secret !== $this->_public ) ? 'FS' : 'FSP';
|
225 |
|
226 |
+
return Freemius_Api::GetUrl(
|
227 |
$pResourceUrl . '?' .
|
228 |
( 1 < count( $resource ) && ! empty( $resource[1] ) ? $resource[1] . '&' : '' ) .
|
229 |
http_build_query( array(
|
233 |
self::Base64UrlEncode( hash_hmac(
|
234 |
'sha256', $string_to_sign, $this->_secret
|
235 |
) )
|
236 |
+
) ), $this->_isSandbox );
|
237 |
}
|
238 |
|
239 |
/**
|
240 |
+
* @param string $pCanonizedPath
|
241 |
+
* @param string $pMethod
|
242 |
+
* @param array $pParams
|
243 |
+
* @param null|resource $pCurlHandler
|
244 |
+
* @param bool $pIsSandbox
|
245 |
+
* @param null|callable $pBeforeExecutionFunction
|
|
|
|
|
246 |
*
|
247 |
* @return object[]|object|null
|
248 |
*
|
249 |
+
* @throws \Freemius_Exception
|
250 |
*/
|
251 |
+
private static function MakeStaticRequest(
|
252 |
+
$pCanonizedPath,
|
253 |
+
$pMethod = 'GET',
|
254 |
+
$pParams = array(),
|
255 |
+
$pCurlHandler = null,
|
256 |
+
$pIsSandbox = false,
|
257 |
+
$pBeforeExecutionFunction = null
|
258 |
+
) {
|
259 |
+
if ( ! FS_SDK__HAS_CURL ) {
|
260 |
+
self::ThrowNoCurlException();
|
261 |
}
|
262 |
|
263 |
// Connectivity errors simulation.
|
264 |
if ( FS_SDK__SIMULATE_NO_API_CONNECTIVITY_CLOUDFLARE ) {
|
265 |
+
self::ThrowCloudFlareDDoSException();
|
266 |
} else if ( FS_SDK__SIMULATE_NO_API_CONNECTIVITY_SQUID_ACL ) {
|
267 |
+
self::ThrowSquidAclException();
|
268 |
}
|
269 |
|
270 |
+
if ( ! $pCurlHandler ) {
|
271 |
+
$pCurlHandler = curl_init();
|
272 |
}
|
273 |
|
274 |
$opts = self::$CURL_OPTS;
|
278 |
}
|
279 |
|
280 |
if ( 'POST' === $pMethod || 'PUT' === $pMethod ) {
|
281 |
+
if ( is_array( $pParams ) && 0 < count( $pParams ) ) {
|
282 |
$opts[ CURLOPT_HTTPHEADER ][] = 'Content-Type: application/json';
|
283 |
+
$opts[ CURLOPT_POST ] = count( $pParams );
|
284 |
+
$opts[ CURLOPT_POSTFIELDS ] = json_encode( $pParams );
|
285 |
}
|
286 |
|
287 |
$opts[ CURLOPT_RETURNTRANSFER ] = true;
|
288 |
}
|
289 |
|
290 |
+
$opts[ CURLOPT_URL ] = Freemius_Api::GetUrl( $pCanonizedPath, $pIsSandbox );
|
291 |
$opts[ CURLOPT_CUSTOMREQUEST ] = $pMethod;
|
292 |
|
293 |
$resource = explode( '?', $pCanonizedPath );
|
294 |
|
|
|
|
|
|
|
|
|
|
|
295 |
// disable the 'Expect: 100-continue' behaviour. This causes CURL to wait
|
296 |
// for 2 seconds if the server does not support this header.
|
297 |
$opts[ CURLOPT_HTTPHEADER ][] = 'Expect:';
|
301 |
$opts[ CURLOPT_SSL_VERIFYPEER ] = false;
|
302 |
}
|
303 |
|
304 |
+
if ( false !== $pBeforeExecutionFunction &&
|
305 |
+
is_callable( $pBeforeExecutionFunction )
|
306 |
+
) {
|
307 |
+
$opts = call_user_func( $pBeforeExecutionFunction, $resource[0], $opts );
|
308 |
+
}
|
309 |
+
|
310 |
+
curl_setopt_array( $pCurlHandler, $opts );
|
311 |
+
$result = curl_exec( $pCurlHandler );
|
312 |
|
313 |
/*if (curl_errno($ch) == 60) // CURLE_SSL_CACERT
|
314 |
{
|
326 |
if ( false === $result && empty( $opts[ CURLOPT_IPRESOLVE ] ) ) {
|
327 |
$matches = array();
|
328 |
$regex = '/Failed to connect to ([^:].*): Network is unreachable/';
|
329 |
+
if ( preg_match( $regex, curl_error( $pCurlHandler ), $matches ) ) {
|
330 |
if ( strlen( @inet_pton( $matches[1] ) ) === 16 ) {
|
331 |
// self::errorLog('Invalid IPv6 configuration on server, Please disable or get native IPv6 on your server.');
|
332 |
self::$CURL_OPTS[ CURLOPT_IPRESOLVE ] = CURL_IPRESOLVE_V4;
|
333 |
+
curl_setopt( $pCurlHandler, CURLOPT_IPRESOLVE, CURL_IPRESOLVE_V4 );
|
334 |
+
$result = curl_exec( $pCurlHandler );
|
335 |
}
|
336 |
}
|
337 |
}
|
338 |
|
339 |
if ( $result === false ) {
|
340 |
+
self::ThrowCurlException( $pCurlHandler );
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
341 |
}
|
342 |
|
343 |
+
curl_close( $pCurlHandler );
|
344 |
|
345 |
+
if ( empty( $result ) ) {
|
346 |
return null;
|
347 |
+
}
|
348 |
|
349 |
$decoded = json_decode( $result );
|
350 |
|
352 |
if ( preg_match( '/Please turn JavaScript on/i', $result ) &&
|
353 |
preg_match( '/text\/javascript/', $result )
|
354 |
) {
|
355 |
+
self::ThrowCloudFlareDDoSException( $result );
|
356 |
} else if ( preg_match( '/Access control configuration prevents your request from being allowed at this time. Please contact your service provider if you feel this is incorrect./', $result ) &&
|
357 |
preg_match( '/squid/', $result )
|
358 |
) {
|
359 |
+
self::ThrowSquidAclException( $result );
|
360 |
} else {
|
361 |
$decoded = (object) array(
|
362 |
'error' => (object) array(
|
372 |
return $decoded;
|
373 |
}
|
374 |
|
375 |
+
|
376 |
+
/**
|
377 |
+
* Makes an HTTP request. This method can be overridden by subclasses if
|
378 |
+
* developers want to do fancier things or use something other than curl to
|
379 |
+
* make the request.
|
380 |
+
*
|
381 |
+
* @param string $pCanonizedPath The URL to make the request to
|
382 |
+
* @param string $pMethod HTTP method
|
383 |
+
* @param array $pParams The parameters to use for the POST body
|
384 |
+
* @param null|resource $pCurlHandler Initialized curl handle
|
385 |
+
*
|
386 |
+
* @return object[]|object|null
|
387 |
+
*
|
388 |
+
* @throws Freemius_Exception
|
389 |
+
*/
|
390 |
+
public function MakeRequest(
|
391 |
+
$pCanonizedPath,
|
392 |
+
$pMethod = 'GET',
|
393 |
+
$pParams = array(),
|
394 |
+
$pCurlHandler = null
|
395 |
+
) {
|
396 |
+
$resource = explode( '?', $pCanonizedPath );
|
397 |
+
|
398 |
+
// Only sign request if not ping.json connectivity test.
|
399 |
+
$sign_request = ( '/v1/ping.json' !== strtolower( substr( $resource[0], - strlen( '/v1/ping.json' ) ) ) );
|
400 |
+
|
401 |
+
return self::MakeStaticRequest(
|
402 |
+
$pCanonizedPath,
|
403 |
+
$pMethod,
|
404 |
+
$pParams,
|
405 |
+
$pCurlHandler,
|
406 |
+
$this->_isSandbox,
|
407 |
+
$sign_request ? array( &$this, 'SignRequest' ) : null
|
408 |
+
);
|
409 |
+
}
|
410 |
+
|
411 |
+
#region Connectivity Test ------------------------------------------------------
|
412 |
+
|
413 |
+
/**
|
414 |
+
* If successful connectivity to the API endpoint using ping.json endpoint.
|
415 |
+
*
|
416 |
+
* - OR -
|
417 |
+
*
|
418 |
+
* Validate if ping result object is valid.
|
419 |
+
*
|
420 |
+
* @param mixed $pPong
|
421 |
+
*
|
422 |
+
* @return bool
|
423 |
+
*/
|
424 |
+
public static function Test( $pPong = null ) {
|
425 |
+
$pong = is_null( $pPong ) ?
|
426 |
+
self::Ping() :
|
427 |
+
$pPong;
|
428 |
+
|
429 |
+
return (
|
430 |
+
is_object( $pong ) &&
|
431 |
+
isset( $pong->api ) &&
|
432 |
+
'pong' === $pong->api
|
433 |
+
);
|
434 |
+
}
|
435 |
+
|
436 |
+
/**
|
437 |
+
* Ping API to test connectivity.
|
438 |
+
*
|
439 |
+
* @return object
|
440 |
+
*/
|
441 |
+
public static function Ping() {
|
442 |
+
try {
|
443 |
+
$result = self::MakeStaticRequest( '/v' . FS_API__VERSION . '/ping.json' );
|
444 |
+
} catch ( Freemius_Exception $e ) {
|
445 |
+
// Map to error object.
|
446 |
+
$result = (object) $e->getResult();
|
447 |
+
} catch ( Exception $e ) {
|
448 |
+
// Map to error object.
|
449 |
+
$result = (object) array(
|
450 |
+
'error' => array(
|
451 |
+
'type' => 'Unknown',
|
452 |
+
'message' => $e->getMessage() . ' (' . $e->getFile() . ': ' . $e->getLine() . ')',
|
453 |
+
'code' => 'unknown',
|
454 |
+
'http' => 402
|
455 |
+
)
|
456 |
+
);
|
457 |
+
}
|
458 |
+
|
459 |
+
return $result;
|
460 |
+
}
|
461 |
+
|
462 |
+
#endregion Connectivity Test ------------------------------------------------------
|
463 |
+
|
464 |
+
#region Connectivity Exceptions ------------------------------------------------------
|
465 |
+
|
466 |
+
/**
|
467 |
+
* @param resource $pCurlHandler
|
468 |
+
*
|
469 |
+
* @throws Freemius_Exception
|
470 |
+
*/
|
471 |
+
private static function ThrowCurlException( $pCurlHandler ) {
|
472 |
+
$e = new Freemius_Exception( array(
|
473 |
+
'error' => array(
|
474 |
+
'code' => curl_errno( $pCurlHandler ),
|
475 |
+
'message' => curl_error( $pCurlHandler ),
|
476 |
+
'type' => 'CurlException',
|
477 |
+
),
|
478 |
+
) );
|
479 |
+
|
480 |
+
curl_close( $pCurlHandler );
|
481 |
+
throw $e;
|
482 |
+
}
|
483 |
+
|
484 |
/**
|
485 |
* @param string $pResult
|
486 |
*
|
487 |
* @throws Freemius_Exception
|
488 |
*/
|
489 |
+
private static function ThrowNoCurlException( $pResult = '' ) {
|
490 |
throw new Freemius_Exception( array(
|
491 |
'error' => (object) array(
|
492 |
'type' => 'cUrlMissing',
|
502 |
*
|
503 |
* @throws Freemius_Exception
|
504 |
*/
|
505 |
+
private static function ThrowCloudFlareDDoSException( $pResult = '' ) {
|
506 |
throw new Freemius_Exception( array(
|
507 |
'error' => (object) array(
|
508 |
'type' => 'CloudFlareDDoSProtection',
|
518 |
*
|
519 |
* @throws Freemius_Exception
|
520 |
*/
|
521 |
+
private static function ThrowSquidAclException( $pResult = '' ) {
|
522 |
throw new Freemius_Exception( array(
|
523 |
'error' => (object) array(
|
524 |
'type' => 'SquidCacheBlock',
|
528 |
)
|
529 |
) );
|
530 |
}
|
531 |
+
|
532 |
+
#endregion Connectivity Exceptions ------------------------------------------------------
|
533 |
}
|
classes/freemius/includes/sdk/FreemiusBase.php
CHANGED
@@ -44,25 +44,25 @@
|
|
44 |
protected $_public;
|
45 |
protected $_secret;
|
46 |
protected $_scope;
|
47 |
-
protected $
|
48 |
|
49 |
/**
|
50 |
-
* @param string $pScope
|
51 |
-
* @param number $pID
|
52 |
-
* @param string $pPublic
|
53 |
-
* @param string $pSecret
|
54 |
-
* @param bool $
|
55 |
*/
|
56 |
-
public function Init( $pScope, $pID, $pPublic, $pSecret, $
|
57 |
-
$this->_id
|
58 |
-
$this->_public
|
59 |
-
$this->_secret
|
60 |
-
$this->_scope
|
61 |
-
$this->
|
62 |
}
|
63 |
|
64 |
public function IsSandbox() {
|
65 |
-
return $this->
|
66 |
}
|
67 |
|
68 |
function CanonizePath( $pPath ) {
|
@@ -139,45 +139,6 @@
|
|
139 |
return $result;
|
140 |
}
|
141 |
|
142 |
-
/**
|
143 |
-
* If successful connectivity to the API endpoint using ping.json endpoint.
|
144 |
-
*
|
145 |
-
* - OR -
|
146 |
-
*
|
147 |
-
* Validate if ping result object is valid.
|
148 |
-
*
|
149 |
-
* @param mixed $pPong
|
150 |
-
*
|
151 |
-
* @return bool
|
152 |
-
*/
|
153 |
-
public function Test( $pPong = null ) {
|
154 |
-
$pong = is_null( $pPong ) ? $this->Ping() : $pPong;
|
155 |
-
|
156 |
-
return ( is_object( $pong ) && isset( $pong->api ) && 'pong' === $pong->api );
|
157 |
-
}
|
158 |
-
|
159 |
-
/**
|
160 |
-
* Ping API to test connectivity.
|
161 |
-
*
|
162 |
-
* @return object
|
163 |
-
*/
|
164 |
-
public function Ping() {
|
165 |
-
return $this->_Api( '/v' . FS_API__VERSION . '/ping.json' );
|
166 |
-
}
|
167 |
-
|
168 |
-
/**
|
169 |
-
* Find clock diff between current server to API server.
|
170 |
-
*
|
171 |
-
* @since 1.0.2
|
172 |
-
* @return int Clock diff in seconds.
|
173 |
-
*/
|
174 |
-
public function FindClockDiff() {
|
175 |
-
$time = time();
|
176 |
-
$pong = $this->_Api( '/v' . FS_API__VERSION . '/ping.json' );
|
177 |
-
|
178 |
-
return ( $time - strtotime( $pong->timestamp ) );
|
179 |
-
}
|
180 |
-
|
181 |
public function Api( $pPath, $pMethod = 'GET', $pParams = array() ) {
|
182 |
return $this->_Api( $this->CanonizePath( $pPath ), $pMethod, $pParams );
|
183 |
}
|
44 |
protected $_public;
|
45 |
protected $_secret;
|
46 |
protected $_scope;
|
47 |
+
protected $_isSandbox;
|
48 |
|
49 |
/**
|
50 |
+
* @param string $pScope 'app', 'developer', 'user' or 'install'.
|
51 |
+
* @param number $pID Element's id.
|
52 |
+
* @param string $pPublic Public key.
|
53 |
+
* @param string $pSecret Element's secret key.
|
54 |
+
* @param bool $pIsSandbox Whether or not to run API in sandbox mode.
|
55 |
*/
|
56 |
+
public function Init( $pScope, $pID, $pPublic, $pSecret, $pIsSandbox = false ) {
|
57 |
+
$this->_id = $pID;
|
58 |
+
$this->_public = $pPublic;
|
59 |
+
$this->_secret = $pSecret;
|
60 |
+
$this->_scope = $pScope;
|
61 |
+
$this->_isSandbox = $pIsSandbox;
|
62 |
}
|
63 |
|
64 |
public function IsSandbox() {
|
65 |
+
return $this->_isSandbox;
|
66 |
}
|
67 |
|
68 |
function CanonizePath( $pPath ) {
|
139 |
return $result;
|
140 |
}
|
141 |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
142 |
public function Api( $pPath, $pMethod = 'GET', $pParams = array() ) {
|
143 |
return $this->_Api( $this->CanonizePath( $pPath ), $pMethod, $pParams );
|
144 |
}
|
classes/freemius/includes/supplements/fs-essential-functions-1.1.7.1.php
ADDED
@@ -0,0 +1,45 @@
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
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.7
|
7 |
+
*/
|
8 |
+
|
9 |
+
if ( ! defined( 'ABSPATH' ) ) {
|
10 |
+
exit;
|
11 |
+
}
|
12 |
+
|
13 |
+
/**
|
14 |
+
* Find the plugin main file path based on any give file inside the plugin's folder.
|
15 |
+
*
|
16 |
+
* @author Vova Feldman (@svovaf)
|
17 |
+
* @since 1.1.7.1
|
18 |
+
*
|
19 |
+
* @param string $file Absolute path to a file inside a plugin's folder.
|
20 |
+
*
|
21 |
+
* @return string
|
22 |
+
*/
|
23 |
+
function fs_find_direct_caller_plugin_file( $file ) {
|
24 |
+
/**
|
25 |
+
* All the code below will be executed once on activation.
|
26 |
+
* If the user changes the main plugin's file name, the file_exists()
|
27 |
+
* will catch it.
|
28 |
+
*/
|
29 |
+
if ( ! function_exists( 'get_plugins' ) ) {
|
30 |
+
require_once( ABSPATH . 'wp-admin/includes/plugin.php' );
|
31 |
+
}
|
32 |
+
|
33 |
+
$all_plugins = get_plugins();
|
34 |
+
|
35 |
+
$file_real_path = fs_normalize_path( realpath( $file ) );
|
36 |
+
|
37 |
+
// Get active plugin's main files real full names (might be symlinks).
|
38 |
+
foreach ( $all_plugins as $relative_path => &$data ) {
|
39 |
+
if ( 0 === strpos( $file_real_path, fs_normalize_path( dirname( realpath( WP_PLUGIN_DIR . '/' . $relative_path ) ) ) ) ) {
|
40 |
+
return $relative_path;
|
41 |
+
}
|
42 |
+
}
|
43 |
+
|
44 |
+
return null;
|
45 |
+
}
|
classes/freemius/start.php
CHANGED
@@ -10,7 +10,7 @@
|
|
10 |
exit;
|
11 |
}
|
12 |
|
13 |
-
$this_sdk_version = '1.1.
|
14 |
|
15 |
#region SDK Selection Logic --------------------------------------------------------------------
|
16 |
|
@@ -40,6 +40,10 @@
|
|
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
|
@@ -47,7 +51,7 @@
|
|
47 |
$fs_active_plugins->plugins[ $this_sdk_relative_path ] = (object) array(
|
48 |
'version' => $this_sdk_version,
|
49 |
'timestamp' => time(),
|
50 |
-
'plugin_path' => plugin_basename(
|
51 |
);
|
52 |
}
|
53 |
|
@@ -57,14 +61,14 @@
|
|
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.
|
@@ -202,6 +206,7 @@
|
|
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 |
*
|
@@ -257,6 +262,7 @@
|
|
257 |
require_once WP_FS__DIR_INCLUDES . '/fs-core-functions.php';
|
258 |
// require_once WP_FS__DIR_INCLUDES . '/managers/class-fs-abstract-manager.php';
|
259 |
require_once WP_FS__DIR_INCLUDES . '/managers/class-fs-option-manager.php';
|
|
|
260 |
require_once WP_FS__DIR_INCLUDES . '/managers/class-fs-admin-notice-manager.php';
|
261 |
require_once WP_FS__DIR_INCLUDES . '/managers/class-fs-admin-menu-manager.php';
|
262 |
require_once WP_FS__DIR_INCLUDES . '/managers/class-fs-key-value-storage.php';
|
10 |
exit;
|
11 |
}
|
12 |
|
13 |
+
$this_sdk_version = '1.1.7.1';
|
14 |
|
15 |
#region SDK Selection Logic --------------------------------------------------------------------
|
16 |
|
40 |
}
|
41 |
}
|
42 |
|
43 |
+
if ( ! function_exists( 'fs_find_direct_caller_plugin_file' ) ) {
|
44 |
+
require_once dirname( __FILE__ ) . '/includes/supplements/fs-essential-functions-1.1.7.1.php';
|
45 |
+
}
|
46 |
+
|
47 |
// Update current SDK info based on the SDK path.
|
48 |
if ( ! isset( $fs_active_plugins->plugins[ $this_sdk_relative_path ] ) ||
|
49 |
$this_sdk_version != $fs_active_plugins->plugins[ $this_sdk_relative_path ]->version
|
51 |
$fs_active_plugins->plugins[ $this_sdk_relative_path ] = (object) array(
|
52 |
'version' => $this_sdk_version,
|
53 |
'timestamp' => time(),
|
54 |
+
'plugin_path' => plugin_basename( fs_find_direct_caller_plugin_file( __FILE__ ) ),
|
55 |
);
|
56 |
}
|
57 |
|
61 |
/**
|
62 |
* This will be executed only once, for the first time a Freemius powered plugin is activated.
|
63 |
*/
|
64 |
+
fs_update_sdk_newest_version( $this_sdk_relative_path, $fs_active_plugins->plugins[ $this_sdk_relative_path ]->plugin_path );
|
65 |
|
66 |
$is_current_sdk_newest = true;
|
67 |
} else if ( version_compare( $fs_active_plugins->newest->version, $this_sdk_version, '<' ) ) {
|
68 |
/**
|
69 |
* Current SDK is newer than the newest stored SDK.
|
70 |
*/
|
71 |
+
fs_update_sdk_newest_version( $this_sdk_relative_path, $fs_active_plugins->plugins[ $this_sdk_relative_path ]->plugin_path );
|
72 |
|
73 |
if ( class_exists( 'Freemius' ) ) {
|
74 |
// Older SDK version was already loaded.
|
206 |
* fs_connect_message_on_update_{plugin_slug}
|
207 |
* fs_uninstall_confirmation_message_{plugin_slug}
|
208 |
* fs_pending_activation_message_{plugin_slug}
|
209 |
+
* fs_is_submenu_visible_{plugin_slug}
|
210 |
*
|
211 |
* --------------------------------------------------------
|
212 |
*
|
262 |
require_once WP_FS__DIR_INCLUDES . '/fs-core-functions.php';
|
263 |
// require_once WP_FS__DIR_INCLUDES . '/managers/class-fs-abstract-manager.php';
|
264 |
require_once WP_FS__DIR_INCLUDES . '/managers/class-fs-option-manager.php';
|
265 |
+
require_once WP_FS__DIR_INCLUDES . '/managers/class-fs-cache-manager.php';
|
266 |
require_once WP_FS__DIR_INCLUDES . '/managers/class-fs-admin-notice-manager.php';
|
267 |
require_once WP_FS__DIR_INCLUDES . '/managers/class-fs-admin-menu-manager.php';
|
268 |
require_once WP_FS__DIR_INCLUDES . '/managers/class-fs-key-value-storage.php';
|
classes/freemius/templates/account.php
CHANGED
@@ -6,6 +6,10 @@
|
|
6 |
* @since 1.0.3
|
7 |
*/
|
8 |
|
|
|
|
|
|
|
|
|
9 |
$slug = $VARS['slug'];
|
10 |
/**
|
11 |
* @var Freemius $fs
|
6 |
* @since 1.0.3
|
7 |
*/
|
8 |
|
9 |
+
if ( ! defined( 'ABSPATH' ) ) {
|
10 |
+
exit;
|
11 |
+
}
|
12 |
+
|
13 |
$slug = $VARS['slug'];
|
14 |
/**
|
15 |
* @var Freemius $fs
|
classes/freemius/templates/add-ons.php
CHANGED
@@ -6,6 +6,10 @@
|
|
6 |
* @since 1.0.3
|
7 |
*/
|
8 |
|
|
|
|
|
|
|
|
|
9 |
$slug = $VARS['slug'];
|
10 |
/**
|
11 |
* @var Freemius
|
6 |
* @since 1.0.3
|
7 |
*/
|
8 |
|
9 |
+
if ( ! defined( 'ABSPATH' ) ) {
|
10 |
+
exit;
|
11 |
+
}
|
12 |
+
|
13 |
$slug = $VARS['slug'];
|
14 |
/**
|
15 |
* @var Freemius
|
classes/freemius/templates/admin-notice.php
CHANGED
@@ -5,6 +5,10 @@
|
|
5 |
* @license http://opensource.org/licenses/gpl-2.0.php GNU Public License
|
6 |
* @since 1.0.3
|
7 |
*/
|
|
|
|
|
|
|
|
|
8 |
?>
|
9 |
<div data-id="<?php echo $VARS['id'] ?>" data-slug="<?php echo $VARS['slug'] ?>" class="<?php
|
10 |
switch ( $VARS['type'] ) {
|
@@ -27,10 +31,12 @@
|
|
27 |
} ?><?php if ( ! empty( $VARS['plugin'] ) ) {
|
28 |
echo ' fs-has-title';
|
29 |
} ?>"><?php if ( ! empty( $VARS['plugin'] ) ) : ?><label
|
30 |
-
class="fs-plugin-title"><?php echo $VARS['plugin'] ?></label><?php endif
|
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
|
|
|
|
|
|
|
|
|
|
5 |
* @license http://opensource.org/licenses/gpl-2.0.php GNU Public License
|
6 |
* @since 1.0.3
|
7 |
*/
|
8 |
+
|
9 |
+
if ( ! defined( 'ABSPATH' ) ) {
|
10 |
+
exit;
|
11 |
+
}
|
12 |
?>
|
13 |
<div data-id="<?php echo $VARS['id'] ?>" data-slug="<?php echo $VARS['slug'] ?>" class="<?php
|
14 |
switch ( $VARS['type'] ) {
|
31 |
} ?><?php if ( ! empty( $VARS['plugin'] ) ) {
|
32 |
echo ' fs-has-title';
|
33 |
} ?>"><?php if ( ! empty( $VARS['plugin'] ) ) : ?><label
|
34 |
+
class="fs-plugin-title"><?php echo $VARS['plugin'] ?></label><?php endif ?><?php if ( $VARS['sticky'] ) : ?>
|
|
|
|
|
|
|
35 |
<div class="fs-close"><i class="dashicons dashicons-no"
|
36 |
title="<?php _efs( 'dismiss' ) ?>"></i> <span><?php _efs( 'dismiss' ) ?></span>
|
37 |
+
</div><?php endif ?>
|
38 |
+
<div class="fs-notice-body">
|
39 |
+
<?php if ( ! empty( $VARS['title'] ) ) : ?><b><?php echo $VARS['title'] ?></b> <?php endif ?>
|
40 |
+
<?php echo $VARS['message'] ?>
|
41 |
+
</div>
|
42 |
+
</div>
|
classes/freemius/templates/all-admin-notice.php
CHANGED
@@ -5,6 +5,10 @@
|
|
5 |
* @license http://opensource.org/licenses/gpl-2.0.php GNU Public License
|
6 |
* @since 1.0.3
|
7 |
*/
|
|
|
|
|
|
|
|
|
8 |
?>
|
9 |
<div class="<?php
|
10 |
switch ($VARS['type']) {
|
5 |
* @license http://opensource.org/licenses/gpl-2.0.php GNU Public License
|
6 |
* @since 1.0.3
|
7 |
*/
|
8 |
+
|
9 |
+
if ( ! defined( 'ABSPATH' ) ) {
|
10 |
+
exit;
|
11 |
+
}
|
12 |
?>
|
13 |
<div class="<?php
|
14 |
switch ($VARS['type']) {
|
classes/freemius/templates/checkout.php
CHANGED
@@ -6,6 +6,10 @@
|
|
6 |
* @since 1.0.3
|
7 |
*/
|
8 |
|
|
|
|
|
|
|
|
|
9 |
wp_enqueue_script( 'jquery' );
|
10 |
wp_enqueue_script( 'json2' );
|
11 |
fs_enqueue_local_script( 'postmessage', 'nojquery.ba-postmessage.min.js' );
|
6 |
* @since 1.0.3
|
7 |
*/
|
8 |
|
9 |
+
if ( ! defined( 'ABSPATH' ) ) {
|
10 |
+
exit;
|
11 |
+
}
|
12 |
+
|
13 |
wp_enqueue_script( 'jquery' );
|
14 |
wp_enqueue_script( 'json2' );
|
15 |
fs_enqueue_local_script( 'postmessage', 'nojquery.ba-postmessage.min.js' );
|
classes/freemius/templates/connect.php
CHANGED
@@ -6,8 +6,13 @@
|
|
6 |
* @since 1.0.7
|
7 |
*/
|
8 |
|
9 |
-
|
10 |
-
|
|
|
|
|
|
|
|
|
|
|
11 |
|
12 |
$fs->_enqueue_connect_essentials();
|
13 |
|
@@ -29,7 +34,7 @@
|
|
29 |
// Insights platform information.
|
30 |
'https://freemius.com/wordpress/insights/';
|
31 |
?>
|
32 |
-
<div id="fs_connect" class="wrap<?php if ( ! $fs->enable_anonymous() ) {
|
33 |
echo ' fs-anonymous-disabled';
|
34 |
} ?>">
|
35 |
<div class="fs-visual">
|
@@ -44,47 +49,58 @@
|
|
44 |
</div>
|
45 |
<div class="fs-content">
|
46 |
<p><?php
|
47 |
-
$
|
48 |
-
|
49 |
-
|
50 |
-
|
51 |
-
|
52 |
-
|
53 |
-
|
54 |
-
|
55 |
-
|
56 |
-
|
57 |
-
|
58 |
-
|
59 |
-
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
60 |
}
|
61 |
-
}
|
62 |
|
63 |
-
|
64 |
-
|
65 |
-
|
66 |
-
|
|
|
|
|
|
|
|
|
|
|
|
|
67 |
$first_name,
|
68 |
-
|
69 |
-
|
70 |
'<a href="' . $site_url . '" target="_blank">' . $site_url . '</a>',
|
71 |
'<a href="' . $freemius_site_url . '" target="_blank">freemius.com</a>'
|
72 |
-
)
|
73 |
-
|
74 |
-
$fs->get_plugin_name(),
|
75 |
-
$current_user->user_login,
|
76 |
-
'<a href="' . $site_url . '" target="_blank">' . $site_url . '</a>',
|
77 |
-
'<a href="' . $freemius_site_url . '" target="_blank">freemius.com</a>'
|
78 |
-
);
|
79 |
?></p>
|
80 |
</div>
|
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 ) ) : ?>
|
88 |
<form action="" method="POST">
|
89 |
<input type="hidden" name="fs_action" value="<?php echo $slug ?>_activate_existing">
|
90 |
<?php wp_nonce_field( 'activate_existing_' . $fs->get_public_key() ) ?>
|
@@ -99,7 +115,7 @@
|
|
99 |
'user_lastname' => $current_user->user_lastname,
|
100 |
'user_nickname' => $current_user->user_nicename,
|
101 |
'user_email' => $current_user->user_email,
|
102 |
-
'user_ip' =>
|
103 |
'plugin_slug' => $slug,
|
104 |
'plugin_id' => $fs->get_id(),
|
105 |
'plugin_public_key' => $fs->get_public_key(),
|
@@ -140,53 +156,69 @@
|
|
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 |
-
|
148 |
-
|
149 |
-
|
150 |
-
|
151 |
-
|
152 |
-
|
153 |
-
|
154 |
-
|
155 |
-
|
156 |
-
|
157 |
-
|
158 |
-
|
159 |
-
|
160 |
-
|
161 |
-
|
162 |
-
|
163 |
-
|
164 |
-
|
165 |
-
|
166 |
-
|
167 |
-
|
168 |
-
|
169 |
-
|
170 |
-
|
171 |
-
|
172 |
-
|
173 |
-
|
174 |
-
|
175 |
-
|
176 |
-
|
177 |
-
|
178 |
-
|
179 |
-
|
180 |
-
|
181 |
-
|
182 |
-
|
183 |
-
|
184 |
-
|
185 |
-
|
186 |
-
|
187 |
-
|
188 |
-
|
189 |
-
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
190 |
<div class="fs-terms">
|
191 |
<a href="https://freemius.com/privacy/" target="_blank"><?php _efs( 'privacy-policy', $slug ) ?></a>
|
192 |
-
|
@@ -200,7 +232,8 @@
|
|
200 |
$(document.body).css({'cursor': 'wait'});
|
201 |
});
|
202 |
$('.button.button-primary').on('click', function () {
|
203 |
-
$(this).
|
|
|
204 |
});
|
205 |
$('.fs-permissions .fs-trigger').on('click', function () {
|
206 |
$('.fs-permissions').toggleClass('fs-open');
|
6 |
* @since 1.0.7
|
7 |
*/
|
8 |
|
9 |
+
if ( ! defined( 'ABSPATH' ) ) {
|
10 |
+
exit;
|
11 |
+
}
|
12 |
+
|
13 |
+
$slug = $VARS['slug'];
|
14 |
+
$fs = freemius( $slug );
|
15 |
+
$is_pending_activation = $fs->is_pending_activation();
|
16 |
|
17 |
$fs->_enqueue_connect_essentials();
|
18 |
|
34 |
// Insights platform information.
|
35 |
'https://freemius.com/wordpress/insights/';
|
36 |
?>
|
37 |
+
<div id="fs_connect" class="wrap<?php if ( ! $fs->enable_anonymous() || $is_pending_activation ) {
|
38 |
echo ' fs-anonymous-disabled';
|
39 |
} ?>">
|
40 |
<div class="fs-visual">
|
49 |
</div>
|
50 |
<div class="fs-content">
|
51 |
<p><?php
|
52 |
+
if ( $is_pending_activation ) {
|
53 |
+
echo $fs->apply_filters( 'pending_activation_message', sprintf(
|
54 |
+
__fs( 'thanks-x', $slug ) . '<br>' .
|
55 |
+
__fs( 'pending-activation-message', $slug ),
|
56 |
+
$first_name,
|
57 |
+
'<b>' . $fs->get_plugin_name() . '</b>',
|
58 |
+
'<b>' . $current_user->user_email . '</b>'
|
59 |
+
) );
|
60 |
+
} else {
|
61 |
+
$filter = 'connect_message';
|
62 |
+
$default_optin_message = 'connect-message';
|
63 |
+
|
64 |
+
if ( $fs->is_plugin_update() ) {
|
65 |
+
// If Freemius was added on a plugin update, set different
|
66 |
+
// opt-in message.
|
67 |
+
$default_optin_message = 'connect-message_on-update';
|
68 |
+
|
69 |
+
// If user customized the opt-in message on update, use
|
70 |
+
// that message. Otherwise, fallback to regular opt-in
|
71 |
+
// custom message if exist.
|
72 |
+
if ( $fs->has_filter( 'connect_message_on_update' ) ) {
|
73 |
+
$filter = 'connect_message_on_update';
|
74 |
+
}
|
75 |
}
|
|
|
76 |
|
77 |
+
echo $fs->apply_filters( $filter,
|
78 |
+
sprintf(
|
79 |
+
__fs( 'hey-x', $slug ) . '<br>' .
|
80 |
+
__fs( $default_optin_message, $slug ),
|
81 |
+
$first_name,
|
82 |
+
'<b>' . $fs->get_plugin_name() . '</b>',
|
83 |
+
'<b>' . $current_user->user_login . '</b>',
|
84 |
+
'<a href="' . $site_url . '" target="_blank">' . $site_url . '</a>',
|
85 |
+
'<a href="' . $freemius_site_url . '" target="_blank">freemius.com</a>'
|
86 |
+
),
|
87 |
$first_name,
|
88 |
+
$fs->get_plugin_name(),
|
89 |
+
$current_user->user_login,
|
90 |
'<a href="' . $site_url . '" target="_blank">' . $site_url . '</a>',
|
91 |
'<a href="' . $freemius_site_url . '" target="_blank">freemius.com</a>'
|
92 |
+
);
|
93 |
+
}
|
|
|
|
|
|
|
|
|
|
|
94 |
?></p>
|
95 |
</div>
|
96 |
<div class="fs-actions">
|
97 |
+
<?php if ( $fs->enable_anonymous() && ! $is_pending_activation ) : ?>
|
98 |
<a href="<?php echo wp_nonce_url( $fs->_get_admin_page_url( '', array( 'fs_action' => $slug . '_skip_activation' ) ), $slug . '_skip_activation' ) ?>"
|
99 |
class="button button-secondary" tabindex="2"><?php _efs( 'skip', $slug ) ?></a>
|
100 |
<?php endif ?>
|
101 |
+
|
102 |
<?php $fs_user = Freemius::_get_user_by_email( $current_user->user_email ) ?>
|
103 |
+
<?php if ( is_object( $fs_user ) && ! $is_pending_activation ) : ?>
|
104 |
<form action="" method="POST">
|
105 |
<input type="hidden" name="fs_action" value="<?php echo $slug ?>_activate_existing">
|
106 |
<?php wp_nonce_field( 'activate_existing_' . $fs->get_public_key() ) ?>
|
115 |
'user_lastname' => $current_user->user_lastname,
|
116 |
'user_nickname' => $current_user->user_nicename,
|
117 |
'user_email' => $current_user->user_email,
|
118 |
+
'user_ip' => WP_FS__REMOTE_ADDR,
|
119 |
'plugin_slug' => $slug,
|
120 |
'plugin_id' => $fs->get_id(),
|
121 |
'plugin_public_key' => $fs->get_public_key(),
|
156 |
<input type="hidden" name="<?php echo $name ?>" value="<?php echo esc_attr( $value ) ?>">
|
157 |
<?php endforeach ?>
|
158 |
<button class="button button-primary" tabindex="1"
|
159 |
+
type="submit"><?php _efs( $is_pending_activation ? 'resend-activation-email' : 'opt-in-connect', $slug ) ?></button>
|
160 |
</form>
|
161 |
<?php endif ?>
|
162 |
+
</div><?php
|
163 |
+
|
164 |
+
// Set core permission list items.
|
165 |
+
$permissions = array(
|
166 |
+
'profile' => array(
|
167 |
+
'icon-class' => 'dashicons dashicons-admin-users',
|
168 |
+
'label' => __fs( 'permissions-profile' ),
|
169 |
+
'desc' => __fs( 'permissions-profile_desc' ),
|
170 |
+
'priority' => 5,
|
171 |
+
),
|
172 |
+
'site' => array(
|
173 |
+
'icon-class' => 'dashicons dashicons-wordpress',
|
174 |
+
'label' => __fs( 'permissions-site' ),
|
175 |
+
'desc' => __fs( 'permissions-site_desc' ),
|
176 |
+
'priority' => 10,
|
177 |
+
),
|
178 |
+
'events' => array(
|
179 |
+
'icon-class' => 'dashicons dashicons-admin-plugins',
|
180 |
+
'label' => __fs( 'permissions-events' ),
|
181 |
+
'desc' => __fs( 'permissions-events_desc' ),
|
182 |
+
'priority' => 20,
|
183 |
+
),
|
184 |
+
);
|
185 |
+
|
186 |
+
// Add newsletter permissions if enabled.
|
187 |
+
if ( $fs->is_permission_requested( 'newsletter' ) ) {
|
188 |
+
$permissions['newsletter'] = array(
|
189 |
+
'icon-class' => 'dashicons dashicons-email-alt',
|
190 |
+
'label' => __fs( 'permissions-newsletter' ),
|
191 |
+
'desc' => __fs( 'permissions-newsletter_desc' ),
|
192 |
+
'priority' => 15,
|
193 |
+
);
|
194 |
+
}
|
195 |
+
|
196 |
+
// Allow filtering of the permissions list.
|
197 |
+
$permissions = $fs->apply_filters( 'permission_list', $permissions );
|
198 |
+
|
199 |
+
// Sort by priority.
|
200 |
+
uasort( $permissions, 'fs_sort_by_priority' );
|
201 |
+
|
202 |
+
if ( ! empty( $permissions ) ) : ?>
|
203 |
+
<div class="fs-permissions">
|
204 |
+
<a class="fs-trigger" href="#"><?php _efs( 'what-permissions', $slug ) ?></a>
|
205 |
+
<ul><?php
|
206 |
+
foreach ( $permissions as $id => $permission ) : ?>
|
207 |
+
<li id="fs-permission-<?php esc_attr_e( $id ); ?>"
|
208 |
+
class="fs-permission fs-<?php esc_attr_e( $id ); ?>">
|
209 |
+
<i class="<?php esc_attr_e( $permission['icon-class'] ); ?>"></i>
|
210 |
+
|
211 |
+
<div>
|
212 |
+
<span><?php esc_html_e( $permission['label'] ); ?></span>
|
213 |
+
|
214 |
+
<p><?php esc_html_e( $permission['desc'] ); ?></p>
|
215 |
+
</div>
|
216 |
+
</li>
|
217 |
+
<?php endforeach; ?>
|
218 |
+
</ul>
|
219 |
+
</div>
|
220 |
+
<?php endif; ?>
|
221 |
+
|
222 |
<div class="fs-terms">
|
223 |
<a href="https://freemius.com/privacy/" target="_blank"><?php _efs( 'privacy-policy', $slug ) ?></a>
|
224 |
-
|
232 |
$(document.body).css({'cursor': 'wait'});
|
233 |
});
|
234 |
$('.button.button-primary').on('click', function () {
|
235 |
+
$(this).addClass('fs-loading');
|
236 |
+
$(this).html('<?php _efs( $is_pending_activation ? 'sending-email' : 'activating' , $slug ) ?>...').css({'cursor': 'wait'});
|
237 |
});
|
238 |
$('.fs-permissions .fs-trigger').on('click', function () {
|
239 |
$('.fs-permissions').toggleClass('fs-open');
|
classes/freemius/templates/contact.php
CHANGED
@@ -6,6 +6,10 @@
|
|
6 |
* @since 1.0.3
|
7 |
*/
|
8 |
|
|
|
|
|
|
|
|
|
9 |
wp_enqueue_script( 'jquery' );
|
10 |
wp_enqueue_script( 'json2' );
|
11 |
fs_enqueue_local_script( 'postmessage', 'nojquery.ba-postmessage.min.js' );
|
@@ -34,6 +38,7 @@
|
|
34 |
$query_params = array_merge( $_GET, array_merge( $context_params, array(
|
35 |
'plugin_version' => $fs->get_plugin_version(),
|
36 |
'wp_login_url' => wp_login_url(),
|
|
|
37 |
// 'wp_admin_css' => get_bloginfo('wpurl') . "/wp-admin/load-styles.php?c=1&load=buttons,wp-admin,dashicons",
|
38 |
) ) );
|
39 |
?>
|
6 |
* @since 1.0.3
|
7 |
*/
|
8 |
|
9 |
+
if ( ! defined( 'ABSPATH' ) ) {
|
10 |
+
exit;
|
11 |
+
}
|
12 |
+
|
13 |
wp_enqueue_script( 'jquery' );
|
14 |
wp_enqueue_script( 'json2' );
|
15 |
fs_enqueue_local_script( 'postmessage', 'nojquery.ba-postmessage.min.js' );
|
38 |
$query_params = array_merge( $_GET, array_merge( $context_params, array(
|
39 |
'plugin_version' => $fs->get_plugin_version(),
|
40 |
'wp_login_url' => wp_login_url(),
|
41 |
+
'site_url' => get_site_url(),
|
42 |
// 'wp_admin_css' => get_bloginfo('wpurl') . "/wp-admin/load-styles.php?c=1&load=buttons,wp-admin,dashicons",
|
43 |
) ) );
|
44 |
?>
|
classes/freemius/templates/deactivation-feedback-modal.php
CHANGED
@@ -5,6 +5,11 @@
|
|
5 |
* @license http://opensource.org/licenses/gpl-2.0.php GNU Public License
|
6 |
* @since 1.1.2
|
7 |
*/
|
|
|
|
|
|
|
|
|
|
|
8 |
$slug = $VARS['slug'];
|
9 |
$fs = freemius( $slug );
|
10 |
|
@@ -19,7 +24,7 @@
|
|
19 |
$reasons_list_items_html .= '<li class="' . $list_item_classes . '" data-input-type="' . $reason['input_type'] . '" data-input-placeholder="' . $reason['input_placeholder'] . '"><label><span><input type="radio" name="selected-reason" value="' . $reason['id'] . '"/></span><span>' . $reason['text'] . '</span></label></li>';
|
20 |
}
|
21 |
?>
|
22 |
-
<script>
|
23 |
(function( $ ) {
|
24 |
var reasonsHtml = <?php echo json_encode( $reasons_list_items_html ); ?>,
|
25 |
modalHtml =
|
5 |
* @license http://opensource.org/licenses/gpl-2.0.php GNU Public License
|
6 |
* @since 1.1.2
|
7 |
*/
|
8 |
+
|
9 |
+
if ( ! defined( 'ABSPATH' ) ) {
|
10 |
+
exit;
|
11 |
+
}
|
12 |
+
|
13 |
$slug = $VARS['slug'];
|
14 |
$fs = freemius( $slug );
|
15 |
|
24 |
$reasons_list_items_html .= '<li class="' . $list_item_classes . '" data-input-type="' . $reason['input_type'] . '" data-input-placeholder="' . $reason['input_placeholder'] . '"><label><span><input type="radio" name="selected-reason" value="' . $reason['id'] . '"/></span><span>' . $reason['text'] . '</span></label></li>';
|
25 |
}
|
26 |
?>
|
27 |
+
<script type="text/javascript">
|
28 |
(function( $ ) {
|
29 |
var reasonsHtml = <?php echo json_encode( $reasons_list_items_html ); ?>,
|
30 |
modalHtml =
|
classes/freemius/templates/debug.php
CHANGED
@@ -1,135 +1,149 @@
|
|
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 |
-
|
10 |
-
|
11 |
-
|
12 |
-
|
13 |
-
|
14 |
-
|
15 |
-
|
16 |
-
|
17 |
-
|
18 |
-
|
19 |
-
|
20 |
-
|
21 |
-
|
22 |
-
|
23 |
-
|
24 |
-
|
25 |
-
|
26 |
-
|
27 |
-
|
28 |
-
|
29 |
-
|
30 |
-
|
31 |
-
|
32 |
-
|
33 |
-
|
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 |
-
|
59 |
-
</
|
60 |
-
|
61 |
-
<
|
62 |
-
<
|
63 |
-
|
64 |
-
|
65 |
-
|
66 |
-
|
67 |
-
|
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 |
-
|
101 |
-
|
102 |
-
|
103 |
-
|
104 |
-
<
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
105 |
<?php
|
106 |
/**
|
107 |
* @var FS_Site[] $sites
|
108 |
*/
|
109 |
$sites = $VARS['sites'];
|
110 |
?>
|
111 |
-
<
|
112 |
-
<
|
113 |
-
<
|
114 |
-
<
|
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 |
-
<
|
124 |
-
<
|
125 |
-
|
126 |
-
|
127 |
-
<td><?php echo $site->public_key ?></td>
|
128 |
-
<td><?php echo $site->secret_key ?></td>
|
129 |
</tr>
|
130 |
-
|
131 |
-
|
132 |
-
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
133 |
<?php
|
134 |
$addons = $VARS['addons'];
|
135 |
?>
|
@@ -164,34 +178,36 @@
|
|
164 |
</tbody>
|
165 |
</table>
|
166 |
<?php endforeach ?>
|
167 |
-
<h2><?php _efs( 'users' ) ?></h2>
|
168 |
<?php
|
169 |
/**
|
170 |
* @var FS_User[] $users
|
171 |
*/
|
172 |
$users = $VARS['users'];
|
173 |
?>
|
174 |
-
<
|
175 |
-
<
|
176 |
-
<
|
177 |
-
<
|
178 |
-
<th><?php _efs( 'name' ) ?></th>
|
179 |
-
<th><?php _efs( 'email' ) ?></th>
|
180 |
-
<th><?php _efs( 'verified' ) ?></th>
|
181 |
-
<th><?php _efs( 'public-key' ) ?></th>
|
182 |
-
<th><?php _efs( 'secret-key' ) ?></th>
|
183 |
-
</tr>
|
184 |
-
</thead>
|
185 |
-
<tbody>
|
186 |
-
<?php foreach ( $users as $user_id => $user ) : ?>
|
187 |
<tr>
|
188 |
-
<
|
189 |
-
<
|
190 |
-
<
|
191 |
-
<
|
192 |
-
<
|
193 |
-
<
|
194 |
</tr>
|
195 |
-
|
196 |
-
|
197 |
-
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
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.1
|
7 |
+
*/
|
8 |
+
|
9 |
+
if ( ! defined( 'ABSPATH' ) ) {
|
10 |
+
exit;
|
11 |
+
}
|
12 |
+
|
13 |
global $fs_active_plugins;
|
14 |
|
15 |
$fs_options = FS_Option_Manager::get_manager( WP_FS__ACCOUNTS_OPTION_NAME, true );
|
16 |
?>
|
17 |
+
<h1><?php echo __fs( 'Freemius Debug' ) . ' - ' . __fs( 'SDK' ) . ' v.' . $fs_active_plugins->newest->version ?></h1>
|
18 |
+
<h2><?php _efs( 'actions' ) ?></h2>
|
19 |
+
<table>
|
20 |
+
<tbody>
|
21 |
+
<tr>
|
22 |
+
<td>
|
23 |
+
<!-- Delete All Accounts -->
|
24 |
+
<form action="" method="POST">
|
25 |
+
<input type="hidden" name="fs_action" value="delete_all_accounts">
|
26 |
+
<?php wp_nonce_field( 'delete_all_accounts' ) ?>
|
27 |
+
<button class="button button-primary"
|
28 |
+
onclick="if (confirm('<?php _efs( 'delete-all-confirm' ) ?>')) this.parentNode.submit(); return false;"><?php _efs( 'delete-all-accounts' ) ?></button>
|
29 |
+
</form>
|
30 |
+
</td>
|
31 |
+
<td>
|
32 |
+
<!-- Clear API Cache -->
|
33 |
+
<form action="" method="POST">
|
34 |
+
<input type="hidden" name="fs_clear_api_cache" value="true">
|
35 |
+
<button class="button button-primary"><?php _efs( 'clear-api-cache' ) ?></button>
|
36 |
+
</form>
|
37 |
+
</td>
|
38 |
+
<td>
|
39 |
+
<!-- Sync Data with Server -->
|
40 |
+
<form action="" method="POST">
|
41 |
+
<input type="hidden" name="background_sync" value="true">
|
42 |
+
<button class="button button-primary"><?php _efs( 'sync-data-from-server' ) ?></button>
|
43 |
+
</form>
|
44 |
+
</td>
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
45 |
</tr>
|
46 |
+
</tbody>
|
47 |
+
</table>
|
48 |
+
<h2><?php _efs( 'sdk-versions' ) ?></h2>
|
49 |
+
<table id="fs_sdks" class="widefat">
|
50 |
+
<thead>
|
51 |
+
<tr>
|
52 |
+
<th><?php _efs( 'version' ) ?></th>
|
53 |
+
<th><?php _efs( 'sdk-path' ) ?></th>
|
54 |
+
<th><?php _efs( 'plugin-path' ) ?></th>
|
55 |
+
<th><?php _efs( 'is-active' ) ?></th>
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
56 |
</tr>
|
57 |
+
</thead>
|
58 |
+
<tbody>
|
59 |
+
<?php foreach ( $fs_active_plugins->plugins as $sdk_path => &$data ) : ?>
|
60 |
+
<?php $is_active = ( WP_FS__SDK_VERSION == $data->version ) ?>
|
61 |
+
<tr<?php if ( $is_active ) {
|
62 |
+
echo ' style="background: #E6FFE6; font-weight: bold"';
|
63 |
+
} ?>>
|
64 |
+
<td><?php echo $data->version ?></td>
|
65 |
+
<td><?php echo $sdk_path ?></td>
|
66 |
+
<td><?php echo $data->plugin_path ?></td>
|
67 |
+
<td><?php echo ( $is_active ) ? 'Active' : 'Inactive' ?></td>
|
68 |
+
</tr>
|
69 |
+
<?php endforeach ?>
|
70 |
+
</tbody>
|
71 |
+
</table>
|
72 |
+
<?php $plugins = $fs_options->get_option( 'plugins' ) ?>
|
73 |
+
<?php if ( is_array( $plugins ) && 0 < count( $plugins ) ) : ?>
|
74 |
+
<h2><?php _efs( 'plugins' ) ?></h2>
|
75 |
+
<table id="fs_plugins" class="widefat">
|
76 |
+
<thead>
|
77 |
+
<tr>
|
78 |
+
<th><?php _efs( 'id' ) ?></th>
|
79 |
+
<th><?php _efs( 'slug' ) ?></th>
|
80 |
+
<th><?php _efs( 'version' ) ?></th>
|
81 |
+
<th><?php _efs( 'title' ) ?></th>
|
82 |
+
<th><?php _efs( 'api' ) ?></th>
|
83 |
+
<th><?php _efs( 'freemius-state' ) ?></th>
|
84 |
+
<th><?php _efs( 'plugin-path' ) ?></th>
|
85 |
+
<th><?php _efs( 'public-key' ) ?></th>
|
86 |
+
</tr>
|
87 |
+
</thead>
|
88 |
+
<tbody>
|
89 |
+
<?php foreach ( $plugins as $slug => $data ) : ?>
|
90 |
+
<?php $is_active = is_plugin_active( $data->file ) ?>
|
91 |
+
<?php $fs = $is_active ? freemius( $slug ) : null ?>
|
92 |
+
<tr<?php if ( $is_active ) {
|
93 |
+
echo ' style="background: #E6FFE6; font-weight: bold"';
|
94 |
+
} ?>>
|
95 |
+
<td><?php echo $data->id ?></td>
|
96 |
+
<td><?php echo $slug ?></td>
|
97 |
+
<td><?php echo $data->version ?></td>
|
98 |
+
<td><?php echo $data->title ?></td>
|
99 |
+
<td><?php if ( $is_active ) {
|
100 |
+
echo $fs->has_api_connectivity() ?
|
101 |
+
__fs( 'connected' ) :
|
102 |
+
__fs( 'blocked' );
|
103 |
+
} ?></td>
|
104 |
+
<td><?php if ( $is_active ) {
|
105 |
+
echo $fs->is_on() ?
|
106 |
+
__fs( 'on' ) :
|
107 |
+
__fs( 'off' );
|
108 |
+
} ?></td>
|
109 |
+
<td><?php echo $data->file ?></td>
|
110 |
+
<td><?php echo $data->public_key ?></td>
|
111 |
+
</tr>
|
112 |
+
<?php endforeach ?>
|
113 |
+
</tbody>
|
114 |
+
</table>
|
115 |
+
<?php endif ?>
|
116 |
<?php
|
117 |
/**
|
118 |
* @var FS_Site[] $sites
|
119 |
*/
|
120 |
$sites = $VARS['sites'];
|
121 |
?>
|
122 |
+
<?php if ( is_array( $sites ) && 0 < count( $sites ) ) : ?>
|
123 |
+
<h2><?php _efs( 'plugin-installs' ) ?> / <?php _efs( 'sites' ) ?></h2>
|
124 |
+
<table id="fs_installs" class="widefat">
|
125 |
+
<thead>
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
126 |
<tr>
|
127 |
+
<th><?php _efs( 'id' ) ?></th>
|
128 |
+
<th><?php _efs( 'plan' ) ?></th>
|
129 |
+
<th><?php _efs( 'public-key' ) ?></th>
|
130 |
+
<th><?php _efs( 'secret-key' ) ?></th>
|
|
|
|
|
131 |
</tr>
|
132 |
+
</thead>
|
133 |
+
<tbody>
|
134 |
+
<?php foreach ( $sites as $slug => $site ) : ?>
|
135 |
+
<tr>
|
136 |
+
<td><?php echo $site->id ?></td>
|
137 |
+
<td><?php
|
138 |
+
echo is_object( $site->plan ) ? $site->plan->name : ''
|
139 |
+
?></td>
|
140 |
+
<td><?php echo $site->public_key ?></td>
|
141 |
+
<td><?php echo $site->secret_key ?></td>
|
142 |
+
</tr>
|
143 |
+
<?php endforeach ?>
|
144 |
+
</tbody>
|
145 |
+
</table>
|
146 |
+
<?php endif ?>
|
147 |
<?php
|
148 |
$addons = $VARS['addons'];
|
149 |
?>
|
178 |
</tbody>
|
179 |
</table>
|
180 |
<?php endforeach ?>
|
|
|
181 |
<?php
|
182 |
/**
|
183 |
* @var FS_User[] $users
|
184 |
*/
|
185 |
$users = $VARS['users'];
|
186 |
?>
|
187 |
+
<?php if ( is_array( $users ) && 0 < count( $users ) ) : ?>
|
188 |
+
<h2><?php _efs( 'users' ) ?></h2>
|
189 |
+
<table id="fs_users" class="widefat">
|
190 |
+
<thead>
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
191 |
<tr>
|
192 |
+
<th><?php _efs( 'id' ) ?></th>
|
193 |
+
<th><?php _efs( 'name' ) ?></th>
|
194 |
+
<th><?php _efs( 'email' ) ?></th>
|
195 |
+
<th><?php _efs( 'verified' ) ?></th>
|
196 |
+
<th><?php _efs( 'public-key' ) ?></th>
|
197 |
+
<th><?php _efs( 'secret-key' ) ?></th>
|
198 |
</tr>
|
199 |
+
</thead>
|
200 |
+
<tbody>
|
201 |
+
<?php foreach ( $users as $user_id => $user ) : ?>
|
202 |
+
<tr>
|
203 |
+
<td><?php echo $user->id ?></td>
|
204 |
+
<td><?php echo $user->get_name() ?></td>
|
205 |
+
<td><?php echo $user->email ?></td>
|
206 |
+
<td><?php echo json_encode( $user->is_verified ) ?></td>
|
207 |
+
<td><?php echo $user->public_key ?></td>
|
208 |
+
<td><?php echo $user->secret_key ?></td>
|
209 |
+
</tr>
|
210 |
+
<?php endforeach ?>
|
211 |
+
</tbody>
|
212 |
+
</table>
|
213 |
+
<?php endif ?>
|
classes/freemius/templates/email.php
CHANGED
@@ -6,6 +6,10 @@
|
|
6 |
* @since 1.1.1
|
7 |
*/
|
8 |
|
|
|
|
|
|
|
|
|
9 |
$sections = $VARS['sections'];
|
10 |
?>
|
11 |
<table>
|
6 |
* @since 1.1.1
|
7 |
*/
|
8 |
|
9 |
+
if ( ! defined( 'ABSPATH' ) ) {
|
10 |
+
exit;
|
11 |
+
}
|
12 |
+
|
13 |
$sections = $VARS['sections'];
|
14 |
?>
|
15 |
<table>
|
classes/freemius/templates/firewall-issues-js.php
CHANGED
@@ -9,6 +9,10 @@
|
|
9 |
* @license http://opensource.org/licenses/gpl-2.0.php GNU Public License
|
10 |
* @since 1.0.9
|
11 |
*/
|
|
|
|
|
|
|
|
|
12 |
?>
|
13 |
<script type="text/javascript">
|
14 |
jQuery(document).ready(function ($) {
|
9 |
* @license http://opensource.org/licenses/gpl-2.0.php GNU Public License
|
10 |
* @since 1.0.9
|
11 |
*/
|
12 |
+
|
13 |
+
if ( ! defined( 'ABSPATH' ) ) {
|
14 |
+
exit;
|
15 |
+
}
|
16 |
?>
|
17 |
<script type="text/javascript">
|
18 |
jQuery(document).ready(function ($) {
|
classes/freemius/templates/pending-activation.php
DELETED
@@ -1,157 +0,0 @@
|
|
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.0.9
|
7 |
-
*/
|
8 |
-
|
9 |
-
wp_enqueue_script( 'jquery' );
|
10 |
-
wp_enqueue_script( 'json2' );
|
11 |
-
fs_enqueue_local_script( 'postmessage', 'nojquery.ba-postmessage.min.js' );
|
12 |
-
fs_enqueue_local_script( 'fs-postmessage', 'postmessage.js' );
|
13 |
-
|
14 |
-
fs_enqueue_local_style( 'fs_connect', '/admin/connect.css' );
|
15 |
-
|
16 |
-
$slug = $VARS['slug'];
|
17 |
-
$fs = freemius( $slug );
|
18 |
-
$current_user = wp_get_current_user();
|
19 |
-
|
20 |
-
$first_name = $current_user->user_firstname;
|
21 |
-
if ( empty( $first_name ) ) {
|
22 |
-
$first_name = $current_user->nickname;
|
23 |
-
}
|
24 |
-
|
25 |
-
$site_url = get_site_url();
|
26 |
-
$protocol_pos = strpos( $site_url, '://' );
|
27 |
-
if ( false !== $protocol_pos ) {
|
28 |
-
$site_url = substr( $site_url, $protocol_pos + 3 );
|
29 |
-
}
|
30 |
-
?>
|
31 |
-
<div id="fs_connect" class="wrap fs-anonymous-disabled">
|
32 |
-
<div class="fs-visual">
|
33 |
-
<b class="fs-site-icon"><i class="dashicons dashicons-wordpress"></i></b>
|
34 |
-
<i class="dashicons dashicons-plus fs-first"></i>
|
35 |
-
|
36 |
-
<div class="fs-plugin-icon">
|
37 |
-
<object data="//plugins.svn.wordpress.org/<?php echo $slug ?>/assets/icon-128x128.png" type="image/png">
|
38 |
-
<object data="//plugins.svn.wordpress.org/<?php echo $slug ?>/assets/icon-128x128.jpg" type="image/png">
|
39 |
-
<object data="//plugins.svn.wordpress.org/<?php echo $slug ?>/assets/icon-256x256.png"
|
40 |
-
type="image/png">
|
41 |
-
<object data="//plugins.svn.wordpress.org/<?php echo $slug ?>/assets/icon-256x256.jpg"
|
42 |
-
type="image/png">
|
43 |
-
<img src="//wimg.freemius.com/plugin-icon.png"/>
|
44 |
-
</object>
|
45 |
-
</object>
|
46 |
-
</object>
|
47 |
-
</object>
|
48 |
-
</div>
|
49 |
-
<i class="dashicons dashicons-plus fs-second"></i>
|
50 |
-
<img class="fs-connect-logo" width="80" height="80" src="//img.freemius.com/connect-logo.png"/>
|
51 |
-
</div>
|
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>'
|
60 |
-
) )
|
61 |
-
?></p>
|
62 |
-
</div>
|
63 |
-
<div class="fs-actions">
|
64 |
-
<?php $fs_user = Freemius::_get_user_by_email( $current_user->user_email ) ?>
|
65 |
-
<form method="post" action="<?php echo WP_FS__ADDRESS ?>/action/service/user/install/">
|
66 |
-
<?php
|
67 |
-
$params = array(
|
68 |
-
'user_firstname' => $current_user->user_firstname,
|
69 |
-
'user_lastname' => $current_user->user_lastname,
|
70 |
-
'user_nickname' => $current_user->user_nicename,
|
71 |
-
'user_email' => $current_user->user_email,
|
72 |
-
'plugin_slug' => $slug,
|
73 |
-
'plugin_id' => $fs->get_id(),
|
74 |
-
'plugin_public_key' => $fs->get_public_key(),
|
75 |
-
'plugin_version' => $fs->get_plugin_version(),
|
76 |
-
'return_url' => wp_nonce_url( $fs->_get_admin_page_url(
|
77 |
-
'',
|
78 |
-
array( 'fs_action' => $slug . '_activate_new' )
|
79 |
-
), $slug . '_activate_new' ),
|
80 |
-
'account_url' => wp_nonce_url( $fs->_get_admin_page_url(
|
81 |
-
'account',
|
82 |
-
array( 'fs_action' => 'sync_user' )
|
83 |
-
), 'sync_user' ),
|
84 |
-
'site_url' => get_site_url(),
|
85 |
-
'site_name' => get_bloginfo( 'name' ),
|
86 |
-
'platform_version' => get_bloginfo( 'version' ),
|
87 |
-
'language' => get_bloginfo( 'language' ),
|
88 |
-
'charset' => get_bloginfo( 'charset' ),
|
89 |
-
);
|
90 |
-
?>
|
91 |
-
<?php foreach ( $params as $name => $value ) : ?>
|
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">
|
148 |
-
(function ($) {
|
149 |
-
$('.button.button-primary').on('click', function () {
|
150 |
-
$(document.body).css({'cursor': 'wait'});
|
151 |
-
$(this).html('Sending email...').css({'cursor': 'wait'});
|
152 |
-
});
|
153 |
-
$('.fs-permissions .fs-trigger').on('click', function () {
|
154 |
-
$('.fs-permissions').toggleClass('fs-open');
|
155 |
-
});
|
156 |
-
})(jQuery);
|
157 |
-
</script>
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
classes/freemius/templates/plugin-icon.php
CHANGED
@@ -5,6 +5,11 @@
|
|
5 |
* @license http://opensource.org/licenses/gpl-2.0.php GNU Public License
|
6 |
* @since 1.1.4
|
7 |
*/
|
|
|
|
|
|
|
|
|
|
|
8 |
$slug = $VARS['slug'];
|
9 |
$fs = freemius( $slug );
|
10 |
|
5 |
* @license http://opensource.org/licenses/gpl-2.0.php GNU Public License
|
6 |
* @since 1.1.4
|
7 |
*/
|
8 |
+
|
9 |
+
if ( ! defined( 'ABSPATH' ) ) {
|
10 |
+
exit;
|
11 |
+
}
|
12 |
+
|
13 |
$slug = $VARS['slug'];
|
14 |
$fs = freemius( $slug );
|
15 |
|
classes/freemius/templates/plugin-info/description.php
CHANGED
@@ -1,4 +1,15 @@
|
|
1 |
<?php
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
2 |
/**
|
3 |
* @var FS_Plugin $plugin
|
4 |
*/
|
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.0.6
|
7 |
+
*/
|
8 |
+
|
9 |
+
if ( ! defined( 'ABSPATH' ) ) {
|
10 |
+
exit;
|
11 |
+
}
|
12 |
+
|
13 |
/**
|
14 |
* @var FS_Plugin $plugin
|
15 |
*/
|
classes/freemius/templates/plugin-info/features.php
CHANGED
@@ -1,4 +1,15 @@
|
|
1 |
<?php
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
2 |
/**
|
3 |
* @var FS_Plugin $plugin
|
4 |
*/
|
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.0.6
|
7 |
+
*/
|
8 |
+
|
9 |
+
if ( ! defined( 'ABSPATH' ) ) {
|
10 |
+
exit;
|
11 |
+
}
|
12 |
+
|
13 |
/**
|
14 |
* @var FS_Plugin $plugin
|
15 |
*/
|
classes/freemius/templates/plugin-info/screenshots.php
CHANGED
@@ -1,4 +1,15 @@
|
|
1 |
<?php
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
2 |
/**
|
3 |
* @var FS_Plugin $plugin
|
4 |
*/
|
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.0.6
|
7 |
+
*/
|
8 |
+
|
9 |
+
if ( ! defined( 'ABSPATH' ) ) {
|
10 |
+
exit;
|
11 |
+
}
|
12 |
+
|
13 |
/**
|
14 |
* @var FS_Plugin $plugin
|
15 |
*/
|
classes/freemius/templates/powered-by.php
CHANGED
@@ -6,8 +6,12 @@
|
|
6 |
* @since 1.0.5
|
7 |
*/
|
8 |
|
|
|
|
|
|
|
|
|
9 |
/**
|
10 |
-
* KEEP THE POWERED BY TAB AND GET ADDITIONAL -
|
11 |
*/
|
12 |
|
13 |
wp_enqueue_script( 'jquery' );
|
6 |
* @since 1.0.5
|
7 |
*/
|
8 |
|
9 |
+
if ( ! defined( 'ABSPATH' ) ) {
|
10 |
+
exit;
|
11 |
+
}
|
12 |
+
|
13 |
/**
|
14 |
+
* KEEP THE POWERED BY TAB AND GET ADDITIONAL - 1% - OFF THE COMMISSION
|
15 |
*/
|
16 |
|
17 |
wp_enqueue_script( 'jquery' );
|
classes/freemius/templates/pricing.php
CHANGED
@@ -6,6 +6,10 @@
|
|
6 |
* @since 1.0.3
|
7 |
*/
|
8 |
|
|
|
|
|
|
|
|
|
9 |
wp_enqueue_script( 'jquery' );
|
10 |
wp_enqueue_script( 'json2' );
|
11 |
fs_enqueue_local_script( 'postmessage', 'nojquery.ba-postmessage.min.js' );
|
6 |
* @since 1.0.3
|
7 |
*/
|
8 |
|
9 |
+
if ( ! defined( 'ABSPATH' ) ) {
|
10 |
+
exit;
|
11 |
+
}
|
12 |
+
|
13 |
wp_enqueue_script( 'jquery' );
|
14 |
wp_enqueue_script( 'json2' );
|
15 |
fs_enqueue_local_script( 'postmessage', 'nojquery.ba-postmessage.min.js' );
|
classes/freemius/templates/sticky-admin-notice-js.php
CHANGED
@@ -8,6 +8,10 @@
|
|
8 |
* @license http://opensource.org/licenses/gpl-2.0.php GNU Public License
|
9 |
* @since 1.0.7
|
10 |
*/
|
|
|
|
|
|
|
|
|
11 |
?>
|
12 |
<script type="text/javascript" >
|
13 |
jQuery(document).ready(function($) {
|
8 |
* @license http://opensource.org/licenses/gpl-2.0.php GNU Public License
|
9 |
* @since 1.0.7
|
10 |
*/
|
11 |
+
|
12 |
+
if ( ! defined( 'ABSPATH' ) ) {
|
13 |
+
exit;
|
14 |
+
}
|
15 |
?>
|
16 |
<script type="text/javascript" >
|
17 |
jQuery(document).ready(function($) {
|
language/aryo-activity-log.pot
CHANGED
@@ -1,14 +1,14 @@
|
|
1 |
# SOME DESCRIPTIVE TITLE.
|
2 |
# Copyright (C) YEAR THE PACKAGE'S COPYRIGHT HOLDER
|
3 |
-
# This file is distributed under the same license as the
|
4 |
# FIRST AUTHOR <EMAIL@ADDRESS>, YEAR.
|
5 |
#
|
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-
|
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"
|
@@ -400,12 +400,12 @@ msgid ""
|
|
400 |
msgstr ""
|
401 |
|
402 |
#: classes/freemius/includes/fs-plugin-functions.php:392
|
403 |
-
#: classes/freemius/includes/i18n.php:
|
404 |
msgid "Install Now"
|
405 |
msgstr ""
|
406 |
|
407 |
#: classes/freemius/includes/fs-plugin-functions.php:397
|
408 |
-
#: classes/freemius/includes/i18n.php:
|
409 |
msgid "Install Update Now"
|
410 |
msgstr ""
|
411 |
|
@@ -418,372 +418,378 @@ msgstr ""
|
|
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 "Plugins"
|
665 |
msgstr ""
|
666 |
|
667 |
-
#: classes/freemius/includes/i18n.php:
|
668 |
msgctxt "as file/folder path"
|
669 |
msgid "Path"
|
670 |
msgstr ""
|
671 |
|
672 |
-
#: classes/freemius/includes/i18n.php:
|
673 |
msgid "Title"
|
674 |
msgstr ""
|
675 |
|
676 |
-
#: classes/freemius/includes/i18n.php:
|
677 |
msgctxt "as WP plugin slug"
|
678 |
msgid "Slug"
|
679 |
msgstr ""
|
680 |
|
681 |
-
#: classes/freemius/includes/i18n.php:
|
682 |
msgid "ID"
|
683 |
msgstr ""
|
684 |
|
685 |
-
#: classes/freemius/includes/i18n.php:
|
686 |
msgid "Users"
|
687 |
msgstr ""
|
688 |
|
689 |
-
#: classes/freemius/includes/i18n.php:
|
690 |
msgid "Plugin Installs"
|
691 |
msgstr ""
|
692 |
|
693 |
-
#: classes/freemius/includes/i18n.php:
|
694 |
msgctxt "like websites"
|
695 |
msgid "Sites"
|
696 |
msgstr ""
|
697 |
|
698 |
-
#: classes/freemius/includes/i18n.php:
|
699 |
msgid "User ID"
|
700 |
msgstr ""
|
701 |
|
702 |
-
#: classes/freemius/includes/i18n.php:
|
703 |
msgid "Site ID"
|
704 |
msgstr ""
|
705 |
|
706 |
-
#: classes/freemius/includes/i18n.php:
|
707 |
msgid "Public Key"
|
708 |
msgstr ""
|
709 |
|
710 |
-
#: classes/freemius/includes/i18n.php:
|
711 |
msgid "Secret Key"
|
712 |
msgstr ""
|
713 |
|
714 |
-
#: classes/freemius/includes/i18n.php:
|
715 |
msgctxt "as secret encryption key missing"
|
716 |
msgid "No Secret"
|
717 |
msgstr ""
|
718 |
|
719 |
-
#: classes/freemius/includes/i18n.php:
|
720 |
msgid "No ID"
|
721 |
msgstr ""
|
722 |
|
723 |
-
#: classes/freemius/includes/i18n.php:
|
724 |
msgctxt "as synchronize license"
|
725 |
msgid "Sync License"
|
726 |
msgstr ""
|
727 |
|
728 |
-
#: classes/freemius/includes/i18n.php:
|
729 |
msgctxt "as synchronize"
|
730 |
msgid "Sync"
|
731 |
msgstr ""
|
732 |
|
733 |
-
#: classes/freemius/includes/i18n.php:
|
734 |
msgid "Deactivate License"
|
735 |
msgstr ""
|
736 |
|
737 |
-
#: classes/freemius/includes/i18n.php:
|
738 |
msgid "Activate"
|
739 |
msgstr ""
|
740 |
|
741 |
-
#: classes/freemius/includes/i18n.php:
|
|
|
742 |
msgid "Deactivate"
|
743 |
msgstr ""
|
744 |
|
745 |
-
#: classes/freemius/includes/i18n.php:
|
746 |
msgctxt "active mode"
|
747 |
msgid "Active"
|
748 |
msgstr ""
|
749 |
|
750 |
-
#: classes/freemius/includes/i18n.php:
|
751 |
msgctxt "is active mode?"
|
752 |
msgid "Is Active"
|
753 |
msgstr ""
|
754 |
|
755 |
-
#: classes/freemius/includes/i18n.php:
|
756 |
#, php-format
|
757 |
msgid "More information about %s"
|
758 |
msgstr ""
|
759 |
|
760 |
-
#: classes/freemius/includes/i18n.php:
|
761 |
msgid "Localhost"
|
762 |
msgstr ""
|
763 |
|
764 |
-
#: classes/freemius/includes/i18n.php:
|
765 |
#, php-format
|
766 |
msgctxt "as activate Professional plan"
|
767 |
msgid "Activate %s Plan"
|
768 |
msgstr ""
|
769 |
|
770 |
-
#: classes/freemius/includes/i18n.php:
|
771 |
#, php-format
|
772 |
msgid "What is your %s?"
|
773 |
msgstr ""
|
774 |
|
775 |
-
#: classes/freemius/includes/i18n.php:
|
776 |
msgid "Activate this add-on"
|
777 |
msgstr ""
|
778 |
|
779 |
-
#: classes/freemius/includes/i18n.php:
|
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:
|
787 |
#, php-format
|
788 |
msgid ""
|
789 |
"Deleting the account will automatically deactivate your %s plan license so "
|
@@ -792,162 +798,162 @@ msgid ""
|
|
792 |
"account. Are you sure you would like to continue with the deletion?"
|
793 |
msgstr ""
|
794 |
|
795 |
-
#: classes/freemius/includes/i18n.php:
|
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:
|
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:
|
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:
|
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:
|
823 |
msgid "Are you sure you want to proceed?"
|
824 |
msgstr ""
|
825 |
|
826 |
-
#: classes/freemius/includes/i18n.php:
|
827 |
#, php-format
|
828 |
msgid "Add Ons for %s"
|
829 |
msgstr ""
|
830 |
|
831 |
-
#: classes/freemius/includes/i18n.php:
|
832 |
msgid "If you have a moment, please let us know why you are deactivating"
|
833 |
msgstr ""
|
834 |
|
835 |
-
#: classes/freemius/includes/i18n.php:
|
836 |
msgid "Yes - Deactivate"
|
837 |
msgstr ""
|
838 |
|
839 |
-
#: classes/freemius/includes/i18n.php:
|
840 |
msgid "Submit & Deactivate"
|
841 |
msgstr ""
|
842 |
|
843 |
-
#: classes/freemius/includes/i18n.php:
|
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:
|
849 |
msgid "I no longer need the plugin"
|
850 |
msgstr ""
|
851 |
|
852 |
-
#: classes/freemius/includes/i18n.php:
|
853 |
msgid "I found a better plugin"
|
854 |
msgstr ""
|
855 |
|
856 |
-
#: classes/freemius/includes/i18n.php:
|
857 |
msgid "I only needed the plugin for a short period"
|
858 |
msgstr ""
|
859 |
|
860 |
-
#: classes/freemius/includes/i18n.php:
|
861 |
msgid "The plugin broke my site"
|
862 |
msgstr ""
|
863 |
|
864 |
-
#: classes/freemius/includes/i18n.php:
|
865 |
msgid "The plugin suddenly stopped working"
|
866 |
msgstr ""
|
867 |
|
868 |
-
#: classes/freemius/includes/i18n.php:
|
869 |
msgid "I can't pay for it anymore"
|
870 |
msgstr ""
|
871 |
|
872 |
-
#: classes/freemius/includes/i18n.php:
|
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:
|
880 |
msgid "What's the plugin's name?"
|
881 |
msgstr ""
|
882 |
|
883 |
-
#: classes/freemius/includes/i18n.php:
|
884 |
msgid "What price would you feel comfortable paying?"
|
885 |
msgstr ""
|
886 |
|
887 |
-
#: classes/freemius/includes/i18n.php:
|
888 |
msgid "I couldn't understand how to make it work"
|
889 |
msgstr ""
|
890 |
|
891 |
-
#: classes/freemius/includes/i18n.php:
|
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:
|
896 |
msgid "The plugin is not working"
|
897 |
msgstr ""
|
898 |
|
899 |
-
#: classes/freemius/includes/i18n.php:
|
900 |
msgid "It's not what I was looking for"
|
901 |
msgstr ""
|
902 |
|
903 |
-
#: classes/freemius/includes/i18n.php:
|
904 |
msgid "The plugin didn't work as expected"
|
905 |
msgstr ""
|
906 |
|
907 |
-
#: classes/freemius/includes/i18n.php:
|
908 |
msgid "What feature?"
|
909 |
msgstr ""
|
910 |
|
911 |
-
#: classes/freemius/includes/i18n.php:
|
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:
|
916 |
msgid "What you've been looking for?"
|
917 |
msgstr ""
|
918 |
|
919 |
-
#: classes/freemius/includes/i18n.php:
|
920 |
msgid "What did you expect?"
|
921 |
msgstr ""
|
922 |
|
923 |
-
#: classes/freemius/includes/i18n.php:
|
924 |
msgid "The plugin didn't work"
|
925 |
msgstr ""
|
926 |
|
927 |
-
#: classes/freemius/includes/i18n.php:
|
928 |
msgid "I don't like to share my information with you"
|
929 |
msgstr ""
|
930 |
|
931 |
-
#: classes/freemius/includes/i18n.php:
|
932 |
#, php-format
|
933 |
msgctxt "greeting"
|
934 |
msgid "Hey %s,"
|
935 |
msgstr ""
|
936 |
|
937 |
-
#: classes/freemius/includes/i18n.php:
|
938 |
#, php-format
|
939 |
msgctxt "a greeting. E.g. Thanks John!"
|
940 |
msgid "Thanks %s!"
|
941 |
msgstr ""
|
942 |
|
943 |
-
#: classes/freemius/includes/i18n.php:
|
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:
|
951 |
#, php-format
|
952 |
msgid ""
|
953 |
"Please help us improve %2$s! If you opt-in, some data about your usage of "
|
@@ -955,7 +961,7 @@ msgid ""
|
|
955 |
"work just fine."
|
956 |
msgstr ""
|
957 |
|
958 |
-
#: classes/freemius/includes/i18n.php:
|
959 |
#, php-format
|
960 |
msgid ""
|
961 |
"You should receive an activation email for %s to your mailbox at %s. Please "
|
@@ -963,414 +969,419 @@ msgid ""
|
|
963 |
"install."
|
964 |
msgstr ""
|
965 |
|
966 |
-
#: classes/freemius/includes/i18n.php:
|
967 |
msgid "What permissions are being granted?"
|
968 |
msgstr ""
|
969 |
|
970 |
-
#: classes/freemius/includes/i18n.php:
|
971 |
msgid "Your Profile Overview"
|
972 |
msgstr ""
|
973 |
|
974 |
-
#: classes/freemius/includes/i18n.php:
|
975 |
msgid "Name and email address"
|
976 |
msgstr ""
|
977 |
|
978 |
-
#: classes/freemius/includes/i18n.php:
|
979 |
msgid "Your Site Overview"
|
980 |
msgstr ""
|
981 |
|
982 |
-
#: classes/freemius/includes/i18n.php:
|
983 |
msgid "Site address, WordPress version, PHP Version"
|
984 |
msgstr ""
|
985 |
|
986 |
-
#: classes/freemius/includes/i18n.php:
|
987 |
msgid "Plugin Events"
|
988 |
msgstr ""
|
989 |
|
990 |
-
#: classes/freemius/includes/i18n.php:
|
991 |
msgid "Activation, deactivation and uninstall"
|
992 |
msgstr ""
|
993 |
|
994 |
-
#: classes/freemius/includes/i18n.php:
|
995 |
msgid "Newsletter"
|
996 |
msgstr ""
|
997 |
|
998 |
-
#: classes/freemius/includes/i18n.php:
|
999 |
msgid "Updates, announcements, marketing, no spam"
|
1000 |
msgstr ""
|
1001 |
|
1002 |
-
#: classes/freemius/includes/i18n.php:
|
1003 |
msgid "Privacy Policy"
|
1004 |
msgstr ""
|
1005 |
|
1006 |
-
#: classes/freemius/includes/i18n.php:
|
1007 |
msgid "Terms of Service"
|
1008 |
msgstr ""
|
1009 |
|
1010 |
-
#: classes/freemius/includes/i18n.php:
|
1011 |
msgctxt "as activating plugin"
|
1012 |
msgid "Activating"
|
1013 |
msgstr ""
|
1014 |
|
1015 |
-
#: classes/freemius/includes/i18n.php:
|
|
|
|
|
|
|
|
|
|
|
1016 |
msgctxt "button label"
|
1017 |
msgid "Allow & Continue"
|
1018 |
msgstr ""
|
1019 |
|
1020 |
-
#: classes/freemius/includes/i18n.php:
|
1021 |
msgctxt "verb"
|
1022 |
msgid "Skip"
|
1023 |
msgstr ""
|
1024 |
|
1025 |
-
#: classes/freemius/includes/i18n.php:
|
1026 |
msgid "Re-send activation email"
|
1027 |
msgstr ""
|
1028 |
|
1029 |
-
#: classes/freemius/includes/i18n.php:
|
1030 |
msgid "Screenshots"
|
1031 |
msgstr ""
|
1032 |
|
1033 |
-
#: classes/freemius/includes/i18n.php:
|
1034 |
#, php-format
|
1035 |
msgid "Click to view full-size screenshot %d"
|
1036 |
msgstr ""
|
1037 |
|
1038 |
-
#: classes/freemius/includes/i18n.php:
|
1039 |
msgid "Freemius Debug"
|
1040 |
msgstr ""
|
1041 |
|
1042 |
-
#: classes/freemius/includes/i18n.php:
|
1043 |
msgctxt "as turned on"
|
1044 |
msgid "On"
|
1045 |
msgstr ""
|
1046 |
|
1047 |
-
#: classes/freemius/includes/i18n.php:
|
1048 |
msgctxt "as turned off"
|
1049 |
msgid "Off"
|
1050 |
msgstr ""
|
1051 |
|
1052 |
-
#: classes/freemius/includes/i18n.php:
|
1053 |
msgid "Freemius State"
|
1054 |
msgstr ""
|
1055 |
|
1056 |
-
#: classes/freemius/includes/i18n.php:
|
1057 |
msgctxt "as connection was successful"
|
1058 |
msgid "Connected"
|
1059 |
msgstr ""
|
1060 |
|
1061 |
-
#: classes/freemius/includes/i18n.php:
|
1062 |
msgctxt "as connection blocked"
|
1063 |
msgid "Blocked"
|
1064 |
msgstr ""
|
1065 |
|
1066 |
-
#: classes/freemius/includes/i18n.php:
|
1067 |
msgctxt "as application program interface"
|
1068 |
msgid "API"
|
1069 |
msgstr ""
|
1070 |
|
1071 |
-
#: classes/freemius/includes/i18n.php:
|
1072 |
msgctxt "as software development kit versions"
|
1073 |
msgid "SDK"
|
1074 |
msgstr ""
|
1075 |
|
1076 |
-
#: classes/freemius/includes/i18n.php:
|
1077 |
msgctxt "as software development kit versions"
|
1078 |
msgid "SDK Versions"
|
1079 |
msgstr ""
|
1080 |
|
1081 |
-
#: classes/freemius/includes/i18n.php:
|
1082 |
msgctxt "as plugin folder path"
|
1083 |
msgid "Plugin Path"
|
1084 |
msgstr ""
|
1085 |
|
1086 |
-
#: classes/freemius/includes/i18n.php:
|
1087 |
msgctxt "as sdk path"
|
1088 |
msgid "SDK Path"
|
1089 |
msgstr ""
|
1090 |
|
1091 |
-
#: classes/freemius/includes/i18n.php:
|
1092 |
#, php-format
|
1093 |
msgid "Add Ons of Plugin %s"
|
1094 |
msgstr ""
|
1095 |
|
1096 |
-
#: classes/freemius/includes/i18n.php:
|
1097 |
msgid "Are you sure you want to delete the all Freemius data?"
|
1098 |
msgstr ""
|
1099 |
|
1100 |
-
#: classes/freemius/includes/i18n.php:
|
1101 |
msgid "Actions"
|
1102 |
msgstr ""
|
1103 |
|
1104 |
-
#: classes/freemius/includes/i18n.php:
|
1105 |
msgid "Delete All Accounts"
|
1106 |
msgstr ""
|
1107 |
|
1108 |
-
#: classes/freemius/includes/i18n.php:
|
1109 |
msgid "Clear API Cache"
|
1110 |
msgstr ""
|
1111 |
|
1112 |
-
#: classes/freemius/includes/i18n.php:
|
1113 |
msgid "Sync Data From Server"
|
1114 |
msgstr ""
|
1115 |
|
1116 |
-
#: classes/freemius/includes/i18n.php:
|
1117 |
msgctxt "as congratulations"
|
1118 |
msgid "Congrats"
|
1119 |
msgstr ""
|
1120 |
|
1121 |
-
#: classes/freemius/includes/i18n.php:
|
1122 |
msgctxt "exclamation"
|
1123 |
msgid "Oops"
|
1124 |
msgstr ""
|
1125 |
|
1126 |
-
#: classes/freemius/includes/i18n.php:
|
1127 |
msgctxt "interjection expressing joy or exuberance"
|
1128 |
msgid "Yee-haw"
|
1129 |
msgstr ""
|
1130 |
|
1131 |
-
#: classes/freemius/includes/i18n.php:
|
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:
|
1139 |
msgctxt "a positive response"
|
1140 |
msgid "Right on"
|
1141 |
msgstr ""
|
1142 |
|
1143 |
-
#: classes/freemius/includes/i18n.php:
|
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:
|
1151 |
msgid "O.K"
|
1152 |
msgstr ""
|
1153 |
|
1154 |
-
#: classes/freemius/includes/i18n.php:
|
1155 |
msgctxt "exclamation"
|
1156 |
msgid "Hey"
|
1157 |
msgstr ""
|
1158 |
|
1159 |
-
#: classes/freemius/includes/i18n.php:
|
1160 |
msgctxt "advance notice of something that will need attention."
|
1161 |
msgid "Heads up"
|
1162 |
msgstr ""
|
1163 |
|
1164 |
-
#: classes/freemius/includes/i18n.php:
|
1165 |
msgid "Seems like you got the latest release."
|
1166 |
msgstr ""
|
1167 |
|
1168 |
-
#: classes/freemius/includes/i18n.php:
|
1169 |
msgid "You are all good!"
|
1170 |
msgstr ""
|
1171 |
|
1172 |
-
#: classes/freemius/includes/i18n.php:
|
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:
|
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:
|
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:
|
1192 |
msgid "Your name was successfully updated."
|
1193 |
msgstr ""
|
1194 |
|
1195 |
-
#: classes/freemius/includes/i18n.php:
|
1196 |
#, php-format
|
1197 |
msgid "You have successfully updated your %s."
|
1198 |
msgstr ""
|
1199 |
|
1200 |
-
#: classes/freemius/includes/i18n.php:
|
1201 |
msgid "Please provide your full name."
|
1202 |
msgstr ""
|
1203 |
|
1204 |
-
#: classes/freemius/includes/i18n.php:
|
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:
|
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:
|
1219 |
msgid "No credit card required"
|
1220 |
msgstr ""
|
1221 |
|
1222 |
-
#: classes/freemius/includes/i18n.php:
|
1223 |
msgid "Premium plugin version was successfully activated."
|
1224 |
msgstr ""
|
1225 |
|
1226 |
-
#: classes/freemius/includes/i18n.php:
|
1227 |
#, php-format
|
1228 |
msgid "The upgrade of %s was successfully completed."
|
1229 |
msgstr ""
|
1230 |
|
1231 |
-
#: classes/freemius/includes/i18n.php:
|
1232 |
#, php-format
|
1233 |
msgid "Your account was successfully activated with the %s plan."
|
1234 |
msgstr ""
|
1235 |
|
1236 |
-
#: classes/freemius/includes/i18n.php:
|
1237 |
#, php-format
|
1238 |
msgid "Download the latest %s version now"
|
1239 |
msgstr ""
|
1240 |
|
1241 |
-
#: classes/freemius/includes/i18n.php:
|
1242 |
msgid "Download the latest version now"
|
1243 |
msgstr ""
|
1244 |
|
1245 |
-
#: classes/freemius/includes/i18n.php:
|
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:
|
1252 |
#, php-format
|
1253 |
msgid "Your %s Add-on plan was successfully upgraded."
|
1254 |
msgstr ""
|
1255 |
|
1256 |
-
#: classes/freemius/includes/i18n.php:
|
1257 |
msgid "Your email has been successfully verified - you are AWESOME!"
|
1258 |
msgstr ""
|
1259 |
|
1260 |
-
#: classes/freemius/includes/i18n.php:
|
1261 |
msgid "Your plan was successfully upgraded."
|
1262 |
msgstr ""
|
1263 |
|
1264 |
-
#: classes/freemius/includes/i18n.php:
|
1265 |
#, php-format
|
1266 |
msgid "Your plan was successfully changed to %s."
|
1267 |
msgstr ""
|
1268 |
|
1269 |
-
#: classes/freemius/includes/i18n.php:
|
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:
|
1276 |
msgid "Your trial has been successfully started."
|
1277 |
msgstr ""
|
1278 |
|
1279 |
-
#: classes/freemius/includes/i18n.php:
|
1280 |
msgid "Your license was successfully activated."
|
1281 |
msgstr ""
|
1282 |
|
1283 |
-
#: classes/freemius/includes/i18n.php:
|
1284 |
msgid "It looks like your site currently don't have an active license."
|
1285 |
msgstr ""
|
1286 |
|
1287 |
-
#: classes/freemius/includes/i18n.php:
|
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:
|
1293 |
msgid "It looks like the license deactivation failed."
|
1294 |
msgstr ""
|
1295 |
|
1296 |
-
#: classes/freemius/includes/i18n.php:
|
1297 |
msgid "It looks like the license could not be activated."
|
1298 |
msgstr ""
|
1299 |
|
1300 |
-
#: classes/freemius/includes/i18n.php:
|
1301 |
msgid "Error received from the server:"
|
1302 |
msgstr ""
|
1303 |
|
1304 |
-
#: classes/freemius/includes/i18n.php:
|
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:
|
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:
|
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:
|
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:
|
1329 |
#, php-format
|
1330 |
msgid "Your %s Plan trial was successfully cancelled."
|
1331 |
msgstr ""
|
1332 |
|
1333 |
-
#: classes/freemius/includes/i18n.php:
|
1334 |
#, php-format
|
1335 |
msgctxt "%s - numeric version number"
|
1336 |
msgid "Version %s was released."
|
1337 |
msgstr ""
|
1338 |
|
1339 |
-
#: classes/freemius/includes/i18n.php:
|
1340 |
#, php-format
|
1341 |
msgid "Please download %s."
|
1342 |
msgstr ""
|
1343 |
|
1344 |
-
#: classes/freemius/includes/i18n.php:
|
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:
|
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:
|
1358 |
msgctxt "call to action"
|
1359 |
msgid "Start free trial"
|
1360 |
msgstr ""
|
1361 |
|
1362 |
-
#: classes/freemius/includes/i18n.php:
|
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:
|
1369 |
#, php-format
|
1370 |
msgid "No commitment for %s days - cancel anytime!"
|
1371 |
msgstr ""
|
1372 |
|
1373 |
-
#: classes/freemius/includes/i18n.php:
|
1374 |
#, php-format
|
1375 |
msgid ""
|
1376 |
"Your license has expired. You can still continue using all the %s features, "
|
@@ -1378,130 +1389,130 @@ msgid ""
|
|
1378 |
"support."
|
1379 |
msgstr ""
|
1380 |
|
1381 |
-
#: classes/freemius/includes/i18n.php:
|
1382 |
#, php-format
|
1383 |
msgid "Couldn't activate %s."
|
1384 |
msgstr ""
|
1385 |
|
1386 |
-
#: classes/freemius/includes/i18n.php:
|
1387 |
msgid "Please contact us with the following message:"
|
1388 |
msgstr ""
|
1389 |
|
1390 |
-
#: classes/freemius/includes/i18n.php:
|
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:
|
1397 |
msgid "Please contact us here"
|
1398 |
msgstr ""
|
1399 |
|
1400 |
-
#: classes/freemius/includes/i18n.php:
|
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:
|
1408 |
msgid "From unknown reason, the API connectivity test fails."
|
1409 |
msgstr ""
|
1410 |
|
1411 |
-
#: classes/freemius/includes/i18n.php:
|
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:
|
1419 |
msgid ""
|
1420 |
"From unknown reason, CloudFlare, the firewall we use, blocks the connection."
|
1421 |
msgstr ""
|
1422 |
|
1423 |
-
#: classes/freemius/includes/i18n.php:
|
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:
|
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:
|
1436 |
msgid "I don't know what is Squid or ACL, help me!"
|
1437 |
msgstr ""
|
1438 |
|
1439 |
-
#: classes/freemius/includes/i18n.php:
|
1440 |
-
#: classes/freemius/includes/i18n.php:
|
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:
|
1448 |
msgid "I'm a system administrator"
|
1449 |
msgstr ""
|
1450 |
|
1451 |
-
#: classes/freemius/includes/i18n.php:
|
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:
|
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:
|
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:
|
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:
|
1476 |
msgid "Yes - I'm giving you a chance to fix it"
|
1477 |
msgstr ""
|
1478 |
|
1479 |
-
#: classes/freemius/includes/i18n.php:
|
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:
|
1487 |
msgid "Let's try your previous version"
|
1488 |
msgstr ""
|
1489 |
|
1490 |
-
#: classes/freemius/includes/i18n.php:
|
1491 |
msgid "Uninstall this version and install the previous one."
|
1492 |
msgstr ""
|
1493 |
|
1494 |
-
#: classes/freemius/includes/i18n.php:
|
1495 |
msgid "That's exhausting, please deactivate"
|
1496 |
msgstr ""
|
1497 |
|
1498 |
-
#: classes/freemius/includes/i18n.php:
|
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:
|
1505 |
#, php-format
|
1506 |
msgid ""
|
1507 |
"Thank for giving us the chance to fix it! A message was just sent to our "
|
@@ -1509,21 +1520,21 @@ msgid ""
|
|
1509 |
"Appreciate your patience."
|
1510 |
msgstr ""
|
1511 |
|
1512 |
-
#: classes/freemius/includes/i18n.php:
|
1513 |
#, php-format
|
1514 |
msgctxt "%1s - plugin title, %2s - API domain"
|
1515 |
msgid ""
|
1516 |
"Your server is blocking the access to Freemius' API, which is crucial for "
|
1517 |
-
"%1s
|
1518 |
msgstr ""
|
1519 |
|
1520 |
-
#: classes/freemius/includes/i18n.php:
|
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:
|
1527 |
#, php-format
|
1528 |
msgid ""
|
1529 |
"Please check your mailbox, you should receive an email via %s to confirm the "
|
@@ -1531,42 +1542,42 @@ msgid ""
|
|
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:
|
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:
|
1542 |
#, php-format
|
1543 |
msgid "%s is the new owner of the account."
|
1544 |
msgstr ""
|
1545 |
|
1546 |
-
#: classes/freemius/includes/i18n.php:
|
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:
|
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:
|
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:
|
1565 |
msgctxt "Plugin installer section title"
|
1566 |
msgid "Features & Pricing"
|
1567 |
msgstr ""
|
1568 |
|
1569 |
-
#: classes/freemius/templates/account.php:
|
1570 |
msgctxt "verb"
|
1571 |
msgid "Edit"
|
1572 |
msgstr ""
|
1 |
# SOME DESCRIPTIVE TITLE.
|
2 |
# Copyright (C) YEAR THE PACKAGE'S COPYRIGHT HOLDER
|
3 |
+
# This file is distributed under the same license as the PACKAGE package.
|
4 |
# FIRST AUTHOR <EMAIL@ADDRESS>, YEAR.
|
5 |
#
|
6 |
#, fuzzy
|
7 |
msgid ""
|
8 |
msgstr ""
|
9 |
+
"Project-Id-Version: aryo-activity-log 2.2.9\n"
|
10 |
"Report-Msgid-Bugs-To: \n"
|
11 |
+
"POT-Creation-Date: 2016-02-04 15:08+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"
|
400 |
msgstr ""
|
401 |
|
402 |
#: classes/freemius/includes/fs-plugin-functions.php:392
|
403 |
+
#: classes/freemius/includes/i18n.php:111
|
404 |
msgid "Install Now"
|
405 |
msgstr ""
|
406 |
|
407 |
#: classes/freemius/includes/fs-plugin-functions.php:397
|
408 |
+
#: classes/freemius/includes/i18n.php:112
|
409 |
msgid "Install Update Now"
|
410 |
msgstr ""
|
411 |
|
418 |
msgid "Latest Version Installed"
|
419 |
msgstr ""
|
420 |
|
421 |
+
#: classes/freemius/includes/i18n.php:35
|
422 |
msgid "Account"
|
423 |
msgstr ""
|
424 |
|
425 |
+
#: classes/freemius/includes/i18n.php:36
|
426 |
msgid "Add On"
|
427 |
msgstr ""
|
428 |
|
429 |
+
#: classes/freemius/includes/i18n.php:37
|
430 |
msgid "Contact Us"
|
431 |
msgstr ""
|
432 |
|
433 |
+
#: classes/freemius/includes/i18n.php:38
|
434 |
msgid "Change Ownership"
|
435 |
msgstr ""
|
436 |
|
437 |
+
#: classes/freemius/includes/i18n.php:39
|
438 |
msgid "Support"
|
439 |
msgstr ""
|
440 |
|
441 |
+
#: classes/freemius/includes/i18n.php:40
|
442 |
msgid "Support Forum"
|
443 |
msgstr ""
|
444 |
|
445 |
+
#: classes/freemius/includes/i18n.php:41
|
446 |
msgid "Add Ons"
|
447 |
msgstr ""
|
448 |
|
449 |
+
#: classes/freemius/includes/i18n.php:42
|
450 |
msgctxt "verb"
|
451 |
msgid "Upgrade"
|
452 |
msgstr ""
|
453 |
|
454 |
+
#: classes/freemius/includes/i18n.php:43
|
455 |
msgid "Awesome"
|
456 |
msgstr ""
|
457 |
|
458 |
+
#: classes/freemius/includes/i18n.php:44
|
459 |
msgctxt "noun"
|
460 |
msgid "Pricing"
|
461 |
msgstr ""
|
462 |
|
463 |
+
#: classes/freemius/includes/i18n.php:45
|
464 |
msgctxt "noun"
|
465 |
msgid "Price"
|
466 |
msgstr ""
|
467 |
|
468 |
+
#: classes/freemius/includes/i18n.php:46
|
469 |
msgid "Unlimited Updates"
|
470 |
msgstr ""
|
471 |
|
472 |
+
#: classes/freemius/includes/i18n.php:47
|
473 |
msgctxt "verb"
|
474 |
msgid "Downgrade"
|
475 |
msgstr ""
|
476 |
|
477 |
+
#: classes/freemius/includes/i18n.php:48
|
478 |
msgid "Free Trial"
|
479 |
msgstr ""
|
480 |
|
481 |
+
#: classes/freemius/includes/i18n.php:49
|
482 |
msgid "Details"
|
483 |
msgstr ""
|
484 |
|
485 |
+
#: classes/freemius/includes/i18n.php:50
|
486 |
msgid "Account Details"
|
487 |
msgstr ""
|
488 |
|
489 |
+
#: classes/freemius/includes/i18n.php:51
|
490 |
msgctxt "verb"
|
491 |
msgid "Delete"
|
492 |
msgstr ""
|
493 |
|
494 |
+
#: classes/freemius/includes/i18n.php:52
|
495 |
msgid "Delete Account"
|
496 |
msgstr ""
|
497 |
|
498 |
+
#: classes/freemius/includes/i18n.php:53
|
499 |
msgctxt "as close a window"
|
500 |
msgid "Dismiss"
|
501 |
msgstr ""
|
502 |
|
503 |
+
#: classes/freemius/includes/i18n.php:54
|
504 |
msgctxt "as product pricing plan"
|
505 |
msgid "Plan"
|
506 |
msgstr ""
|
507 |
|
508 |
+
#: classes/freemius/includes/i18n.php:55
|
509 |
msgid "Change Plan"
|
510 |
msgstr ""
|
511 |
|
512 |
+
#: classes/freemius/includes/i18n.php:56
|
513 |
#, php-format
|
514 |
msgctxt "as download professional version"
|
515 |
msgid "Download %s Version"
|
516 |
msgstr ""
|
517 |
|
518 |
+
#: classes/freemius/includes/i18n.php:57
|
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:58
|
525 |
msgctxt "as download latest version"
|
526 |
msgid "Download Latest"
|
527 |
msgstr ""
|
528 |
|
529 |
+
#: classes/freemius/includes/i18n.php:59
|
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:60
|
536 |
msgid "New"
|
537 |
msgstr ""
|
538 |
|
539 |
+
#: classes/freemius/includes/i18n.php:61
|
540 |
msgid "Free"
|
541 |
msgstr ""
|
542 |
|
543 |
+
#: classes/freemius/includes/i18n.php:62
|
544 |
msgctxt "as trial plan"
|
545 |
msgid "Trial"
|
546 |
msgstr ""
|
547 |
|
548 |
+
#: classes/freemius/includes/i18n.php:63
|
549 |
msgctxt "verb"
|
550 |
msgid "Purchase"
|
551 |
msgstr ""
|
552 |
|
553 |
+
#: classes/freemius/includes/i18n.php:64
|
554 |
msgid "Single Site License"
|
555 |
msgstr ""
|
556 |
|
557 |
+
#: classes/freemius/includes/i18n.php:65
|
558 |
msgid "Unlimited Licenses"
|
559 |
msgstr ""
|
560 |
|
561 |
+
#: classes/freemius/includes/i18n.php:66
|
562 |
#, php-format
|
563 |
msgid "Up to %s Sites"
|
564 |
msgstr ""
|
565 |
|
566 |
+
#: classes/freemius/includes/i18n.php:67
|
567 |
+
#, php-format
|
568 |
+
msgid "%sRenew your license now%s to access version %s features and support."
|
569 |
+
msgstr ""
|
570 |
+
|
571 |
+
#: classes/freemius/includes/i18n.php:68
|
572 |
#, php-format
|
573 |
msgctxt "e.g. Professional Plan"
|
574 |
msgid "%s Plan"
|
575 |
msgstr ""
|
576 |
|
577 |
+
#: classes/freemius/includes/i18n.php:69
|
578 |
#, php-format
|
579 |
msgid "You are just one step away - %s"
|
580 |
msgstr ""
|
581 |
|
582 |
+
#: classes/freemius/includes/i18n.php:70
|
583 |
#, php-format
|
584 |
msgctxt "%s - plugin name. As complete \"Jetpack\" activation now"
|
585 |
msgid "Complete \"%s\" Activation Now"
|
586 |
msgstr ""
|
587 |
|
588 |
+
#: classes/freemius/includes/i18n.php:71
|
589 |
#, php-format
|
590 |
msgid "We made a few tweaks to the plugin, %s"
|
591 |
msgstr ""
|
592 |
|
593 |
+
#: classes/freemius/includes/i18n.php:72
|
594 |
#, php-format
|
595 |
msgid "Opt-in to make \"%s\" Better!"
|
596 |
msgstr ""
|
597 |
|
598 |
+
#: classes/freemius/includes/i18n.php:73
|
599 |
msgid "Error"
|
600 |
msgstr ""
|
601 |
|
602 |
+
#: classes/freemius/includes/i18n.php:74
|
603 |
msgid ""
|
604 |
"Freemius SDK couldn't find the plugin's main file. Please contact "
|
605 |
"sdk@freemius.com with the current error."
|
606 |
msgstr ""
|
607 |
|
608 |
+
#: classes/freemius/includes/i18n.php:77
|
609 |
msgctxt "as expiration date"
|
610 |
msgid "Expiration"
|
611 |
msgstr ""
|
612 |
|
613 |
+
#: classes/freemius/includes/i18n.php:78
|
614 |
msgid "not verified"
|
615 |
msgstr ""
|
616 |
|
617 |
+
#: classes/freemius/includes/i18n.php:79
|
618 |
msgid "Verify Email"
|
619 |
msgstr ""
|
620 |
|
621 |
+
#: classes/freemius/includes/i18n.php:80
|
622 |
#, php-format
|
623 |
msgctxt "e.g. expires in 2 months"
|
624 |
msgid "Expires in %s"
|
625 |
msgstr ""
|
626 |
|
627 |
+
#: classes/freemius/includes/i18n.php:81
|
628 |
#, php-format
|
629 |
msgctxt "e.g. auto renews in 2 months"
|
630 |
msgid "Auto renews in %s"
|
631 |
msgstr ""
|
632 |
|
633 |
+
#: classes/freemius/includes/i18n.php:82
|
634 |
msgid "No expiration"
|
635 |
msgstr ""
|
636 |
|
637 |
+
#: classes/freemius/includes/i18n.php:83
|
638 |
msgid "Expired"
|
639 |
msgstr ""
|
640 |
|
641 |
+
#: classes/freemius/includes/i18n.php:84
|
642 |
#, php-format
|
643 |
msgid "In %s"
|
644 |
msgstr ""
|
645 |
|
646 |
+
#: classes/freemius/includes/i18n.php:85
|
647 |
msgctxt "as plugin version"
|
648 |
msgid "Version"
|
649 |
msgstr ""
|
650 |
|
651 |
+
#: classes/freemius/includes/i18n.php:86
|
652 |
msgid "Name"
|
653 |
msgstr ""
|
654 |
|
655 |
+
#: classes/freemius/includes/i18n.php:87
|
656 |
#: notifications/class-aal-notification-email.php:15
|
657 |
msgid "Email"
|
658 |
msgstr ""
|
659 |
|
660 |
+
#: classes/freemius/includes/i18n.php:88
|
661 |
msgid "Verified"
|
662 |
msgstr ""
|
663 |
|
664 |
+
#: classes/freemius/includes/i18n.php:89 language/strings.php:29
|
665 |
msgid "Plugin"
|
666 |
msgstr ""
|
667 |
|
668 |
+
#: classes/freemius/includes/i18n.php:90
|
669 |
msgid "Plugins"
|
670 |
msgstr ""
|
671 |
|
672 |
+
#: classes/freemius/includes/i18n.php:91
|
673 |
msgctxt "as file/folder path"
|
674 |
msgid "Path"
|
675 |
msgstr ""
|
676 |
|
677 |
+
#: classes/freemius/includes/i18n.php:92
|
678 |
msgid "Title"
|
679 |
msgstr ""
|
680 |
|
681 |
+
#: classes/freemius/includes/i18n.php:93
|
682 |
msgctxt "as WP plugin slug"
|
683 |
msgid "Slug"
|
684 |
msgstr ""
|
685 |
|
686 |
+
#: classes/freemius/includes/i18n.php:94
|
687 |
msgid "ID"
|
688 |
msgstr ""
|
689 |
|
690 |
+
#: classes/freemius/includes/i18n.php:95
|
691 |
msgid "Users"
|
692 |
msgstr ""
|
693 |
|
694 |
+
#: classes/freemius/includes/i18n.php:96
|
695 |
msgid "Plugin Installs"
|
696 |
msgstr ""
|
697 |
|
698 |
+
#: classes/freemius/includes/i18n.php:97
|
699 |
msgctxt "like websites"
|
700 |
msgid "Sites"
|
701 |
msgstr ""
|
702 |
|
703 |
+
#: classes/freemius/includes/i18n.php:98
|
704 |
msgid "User ID"
|
705 |
msgstr ""
|
706 |
|
707 |
+
#: classes/freemius/includes/i18n.php:99
|
708 |
msgid "Site ID"
|
709 |
msgstr ""
|
710 |
|
711 |
+
#: classes/freemius/includes/i18n.php:100
|
712 |
msgid "Public Key"
|
713 |
msgstr ""
|
714 |
|
715 |
+
#: classes/freemius/includes/i18n.php:101
|
716 |
msgid "Secret Key"
|
717 |
msgstr ""
|
718 |
|
719 |
+
#: classes/freemius/includes/i18n.php:102
|
720 |
msgctxt "as secret encryption key missing"
|
721 |
msgid "No Secret"
|
722 |
msgstr ""
|
723 |
|
724 |
+
#: classes/freemius/includes/i18n.php:103
|
725 |
msgid "No ID"
|
726 |
msgstr ""
|
727 |
|
728 |
+
#: classes/freemius/includes/i18n.php:104
|
729 |
msgctxt "as synchronize license"
|
730 |
msgid "Sync License"
|
731 |
msgstr ""
|
732 |
|
733 |
+
#: classes/freemius/includes/i18n.php:105
|
734 |
msgctxt "as synchronize"
|
735 |
msgid "Sync"
|
736 |
msgstr ""
|
737 |
|
738 |
+
#: classes/freemius/includes/i18n.php:106
|
739 |
msgid "Deactivate License"
|
740 |
msgstr ""
|
741 |
|
742 |
+
#: classes/freemius/includes/i18n.php:107
|
743 |
msgid "Activate"
|
744 |
msgstr ""
|
745 |
|
746 |
+
#: classes/freemius/includes/i18n.php:108
|
747 |
+
#: classes/freemius/includes/i18n.php:130
|
748 |
msgid "Deactivate"
|
749 |
msgstr ""
|
750 |
|
751 |
+
#: classes/freemius/includes/i18n.php:109
|
752 |
msgctxt "active mode"
|
753 |
msgid "Active"
|
754 |
msgstr ""
|
755 |
|
756 |
+
#: classes/freemius/includes/i18n.php:110
|
757 |
msgctxt "is active mode?"
|
758 |
msgid "Is Active"
|
759 |
msgstr ""
|
760 |
|
761 |
+
#: classes/freemius/includes/i18n.php:113
|
762 |
#, php-format
|
763 |
msgid "More information about %s"
|
764 |
msgstr ""
|
765 |
|
766 |
+
#: classes/freemius/includes/i18n.php:114
|
767 |
msgid "Localhost"
|
768 |
msgstr ""
|
769 |
|
770 |
+
#: classes/freemius/includes/i18n.php:115
|
771 |
#, php-format
|
772 |
msgctxt "as activate Professional plan"
|
773 |
msgid "Activate %s Plan"
|
774 |
msgstr ""
|
775 |
|
776 |
+
#: classes/freemius/includes/i18n.php:116
|
777 |
#, php-format
|
778 |
msgid "What is your %s?"
|
779 |
msgstr ""
|
780 |
|
781 |
+
#: classes/freemius/includes/i18n.php:117
|
782 |
msgid "Activate this add-on"
|
783 |
msgstr ""
|
784 |
|
785 |
+
#: classes/freemius/includes/i18n.php:118
|
786 |
msgid ""
|
787 |
"Deactivating your license will block all premium features, but will enable "
|
788 |
"you to activate the license on another site. Are you sure you want to "
|
789 |
"proceed?"
|
790 |
msgstr ""
|
791 |
|
792 |
+
#: classes/freemius/includes/i18n.php:119
|
793 |
#, php-format
|
794 |
msgid ""
|
795 |
"Deleting the account will automatically deactivate your %s plan license so "
|
798 |
"account. Are you sure you would like to continue with the deletion?"
|
799 |
msgstr ""
|
800 |
|
801 |
+
#: classes/freemius/includes/i18n.php:120
|
802 |
msgid ""
|
803 |
"Deletion is not temporary. Only delete if you no longer want to use this "
|
804 |
"plugin anymore. Are you sure you would like to continue with the deletion?"
|
805 |
msgstr ""
|
806 |
|
807 |
+
#: classes/freemius/includes/i18n.php:121
|
808 |
#, php-format
|
809 |
msgid ""
|
810 |
"Downgrading your plan will immediately stop all future recurring payments "
|
811 |
"and your %s plan license will expire in %s."
|
812 |
msgstr ""
|
813 |
|
814 |
+
#: classes/freemius/includes/i18n.php:122
|
815 |
#, php-format
|
816 |
msgid ""
|
817 |
"You can still enjoy all %s features but you will not have access to plugin "
|
818 |
"updates and support."
|
819 |
msgstr ""
|
820 |
|
821 |
+
#: classes/freemius/includes/i18n.php:123
|
822 |
#, php-format
|
823 |
msgid ""
|
824 |
"Once your license expire you can still use the Free version but you will NOT "
|
825 |
"have access to the %s features."
|
826 |
msgstr ""
|
827 |
|
828 |
+
#: classes/freemius/includes/i18n.php:124
|
829 |
msgid "Are you sure you want to proceed?"
|
830 |
msgstr ""
|
831 |
|
832 |
+
#: classes/freemius/includes/i18n.php:127
|
833 |
#, php-format
|
834 |
msgid "Add Ons for %s"
|
835 |
msgstr ""
|
836 |
|
837 |
+
#: classes/freemius/includes/i18n.php:129
|
838 |
msgid "If you have a moment, please let us know why you are deactivating"
|
839 |
msgstr ""
|
840 |
|
841 |
+
#: classes/freemius/includes/i18n.php:131
|
842 |
msgid "Yes - Deactivate"
|
843 |
msgstr ""
|
844 |
|
845 |
+
#: classes/freemius/includes/i18n.php:132
|
846 |
msgid "Submit & Deactivate"
|
847 |
msgstr ""
|
848 |
|
849 |
+
#: classes/freemius/includes/i18n.php:133
|
850 |
msgctxt "the text of the cancel button of the plugin deactivation dialog box."
|
851 |
msgid "Cancel"
|
852 |
msgstr ""
|
853 |
|
854 |
+
#: classes/freemius/includes/i18n.php:134
|
855 |
msgid "I no longer need the plugin"
|
856 |
msgstr ""
|
857 |
|
858 |
+
#: classes/freemius/includes/i18n.php:135
|
859 |
msgid "I found a better plugin"
|
860 |
msgstr ""
|
861 |
|
862 |
+
#: classes/freemius/includes/i18n.php:136
|
863 |
msgid "I only needed the plugin for a short period"
|
864 |
msgstr ""
|
865 |
|
866 |
+
#: classes/freemius/includes/i18n.php:137
|
867 |
msgid "The plugin broke my site"
|
868 |
msgstr ""
|
869 |
|
870 |
+
#: classes/freemius/includes/i18n.php:138
|
871 |
msgid "The plugin suddenly stopped working"
|
872 |
msgstr ""
|
873 |
|
874 |
+
#: classes/freemius/includes/i18n.php:139
|
875 |
msgid "I can't pay for it anymore"
|
876 |
msgstr ""
|
877 |
|
878 |
+
#: classes/freemius/includes/i18n.php:140
|
879 |
msgctxt ""
|
880 |
"the text of the \"other\" reason for deactivating the plugin that is shown "
|
881 |
"in the modal box."
|
882 |
msgid "Other"
|
883 |
msgstr ""
|
884 |
|
885 |
+
#: classes/freemius/includes/i18n.php:141
|
886 |
msgid "What's the plugin's name?"
|
887 |
msgstr ""
|
888 |
|
889 |
+
#: classes/freemius/includes/i18n.php:142
|
890 |
msgid "What price would you feel comfortable paying?"
|
891 |
msgstr ""
|
892 |
|
893 |
+
#: classes/freemius/includes/i18n.php:143
|
894 |
msgid "I couldn't understand how to make it work"
|
895 |
msgstr ""
|
896 |
|
897 |
+
#: classes/freemius/includes/i18n.php:144
|
898 |
msgid "The plugin is great, but I need specific feature that you don't support"
|
899 |
msgstr ""
|
900 |
|
901 |
+
#: classes/freemius/includes/i18n.php:145
|
902 |
msgid "The plugin is not working"
|
903 |
msgstr ""
|
904 |
|
905 |
+
#: classes/freemius/includes/i18n.php:146
|
906 |
msgid "It's not what I was looking for"
|
907 |
msgstr ""
|
908 |
|
909 |
+
#: classes/freemius/includes/i18n.php:147
|
910 |
msgid "The plugin didn't work as expected"
|
911 |
msgstr ""
|
912 |
|
913 |
+
#: classes/freemius/includes/i18n.php:148
|
914 |
msgid "What feature?"
|
915 |
msgstr ""
|
916 |
|
917 |
+
#: classes/freemius/includes/i18n.php:149
|
918 |
msgid "Kindly share what didn't work so we can fix it for future users..."
|
919 |
msgstr ""
|
920 |
|
921 |
+
#: classes/freemius/includes/i18n.php:150
|
922 |
msgid "What you've been looking for?"
|
923 |
msgstr ""
|
924 |
|
925 |
+
#: classes/freemius/includes/i18n.php:151
|
926 |
msgid "What did you expect?"
|
927 |
msgstr ""
|
928 |
|
929 |
+
#: classes/freemius/includes/i18n.php:152
|
930 |
msgid "The plugin didn't work"
|
931 |
msgstr ""
|
932 |
|
933 |
+
#: classes/freemius/includes/i18n.php:153
|
934 |
msgid "I don't like to share my information with you"
|
935 |
msgstr ""
|
936 |
|
937 |
+
#: classes/freemius/includes/i18n.php:157
|
938 |
#, php-format
|
939 |
msgctxt "greeting"
|
940 |
msgid "Hey %s,"
|
941 |
msgstr ""
|
942 |
|
943 |
+
#: classes/freemius/includes/i18n.php:158
|
944 |
#, php-format
|
945 |
msgctxt "a greeting. E.g. Thanks John!"
|
946 |
msgid "Thanks %s!"
|
947 |
msgstr ""
|
948 |
|
949 |
+
#: classes/freemius/includes/i18n.php:159
|
950 |
#, php-format
|
951 |
msgid ""
|
952 |
"In order to enjoy all our features and functionality, %s needs to connect "
|
953 |
"your user, %s at %s, to %s"
|
954 |
msgstr ""
|
955 |
|
956 |
+
#: classes/freemius/includes/i18n.php:160
|
957 |
#, php-format
|
958 |
msgid ""
|
959 |
"Please help us improve %2$s! If you opt-in, some data about your usage of "
|
961 |
"work just fine."
|
962 |
msgstr ""
|
963 |
|
964 |
+
#: classes/freemius/includes/i18n.php:161
|
965 |
#, php-format
|
966 |
msgid ""
|
967 |
"You should receive an activation email for %s to your mailbox at %s. Please "
|
969 |
"install."
|
970 |
msgstr ""
|
971 |
|
972 |
+
#: classes/freemius/includes/i18n.php:162
|
973 |
msgid "What permissions are being granted?"
|
974 |
msgstr ""
|
975 |
|
976 |
+
#: classes/freemius/includes/i18n.php:163
|
977 |
msgid "Your Profile Overview"
|
978 |
msgstr ""
|
979 |
|
980 |
+
#: classes/freemius/includes/i18n.php:164
|
981 |
msgid "Name and email address"
|
982 |
msgstr ""
|
983 |
|
984 |
+
#: classes/freemius/includes/i18n.php:165
|
985 |
msgid "Your Site Overview"
|
986 |
msgstr ""
|
987 |
|
988 |
+
#: classes/freemius/includes/i18n.php:166
|
989 |
msgid "Site address, WordPress version, PHP Version"
|
990 |
msgstr ""
|
991 |
|
992 |
+
#: classes/freemius/includes/i18n.php:167
|
993 |
msgid "Plugin Events"
|
994 |
msgstr ""
|
995 |
|
996 |
+
#: classes/freemius/includes/i18n.php:168
|
997 |
msgid "Activation, deactivation and uninstall"
|
998 |
msgstr ""
|
999 |
|
1000 |
+
#: classes/freemius/includes/i18n.php:169
|
1001 |
msgid "Newsletter"
|
1002 |
msgstr ""
|
1003 |
|
1004 |
+
#: classes/freemius/includes/i18n.php:170
|
1005 |
msgid "Updates, announcements, marketing, no spam"
|
1006 |
msgstr ""
|
1007 |
|
1008 |
+
#: classes/freemius/includes/i18n.php:171
|
1009 |
msgid "Privacy Policy"
|
1010 |
msgstr ""
|
1011 |
|
1012 |
+
#: classes/freemius/includes/i18n.php:172
|
1013 |
msgid "Terms of Service"
|
1014 |
msgstr ""
|
1015 |
|
1016 |
+
#: classes/freemius/includes/i18n.php:173
|
1017 |
msgctxt "as activating plugin"
|
1018 |
msgid "Activating"
|
1019 |
msgstr ""
|
1020 |
|
1021 |
+
#: classes/freemius/includes/i18n.php:174
|
1022 |
+
msgctxt "as in the process of sending an email"
|
1023 |
+
msgid "Sending email"
|
1024 |
+
msgstr ""
|
1025 |
+
|
1026 |
+
#: classes/freemius/includes/i18n.php:175
|
1027 |
msgctxt "button label"
|
1028 |
msgid "Allow & Continue"
|
1029 |
msgstr ""
|
1030 |
|
1031 |
+
#: classes/freemius/includes/i18n.php:176
|
1032 |
msgctxt "verb"
|
1033 |
msgid "Skip"
|
1034 |
msgstr ""
|
1035 |
|
1036 |
+
#: classes/freemius/includes/i18n.php:177
|
1037 |
msgid "Re-send activation email"
|
1038 |
msgstr ""
|
1039 |
|
1040 |
+
#: classes/freemius/includes/i18n.php:181
|
1041 |
msgid "Screenshots"
|
1042 |
msgstr ""
|
1043 |
|
1044 |
+
#: classes/freemius/includes/i18n.php:182
|
1045 |
#, php-format
|
1046 |
msgid "Click to view full-size screenshot %d"
|
1047 |
msgstr ""
|
1048 |
|
1049 |
+
#: classes/freemius/includes/i18n.php:186
|
1050 |
msgid "Freemius Debug"
|
1051 |
msgstr ""
|
1052 |
|
1053 |
+
#: classes/freemius/includes/i18n.php:187
|
1054 |
msgctxt "as turned on"
|
1055 |
msgid "On"
|
1056 |
msgstr ""
|
1057 |
|
1058 |
+
#: classes/freemius/includes/i18n.php:188
|
1059 |
msgctxt "as turned off"
|
1060 |
msgid "Off"
|
1061 |
msgstr ""
|
1062 |
|
1063 |
+
#: classes/freemius/includes/i18n.php:189
|
1064 |
msgid "Freemius State"
|
1065 |
msgstr ""
|
1066 |
|
1067 |
+
#: classes/freemius/includes/i18n.php:190
|
1068 |
msgctxt "as connection was successful"
|
1069 |
msgid "Connected"
|
1070 |
msgstr ""
|
1071 |
|
1072 |
+
#: classes/freemius/includes/i18n.php:191
|
1073 |
msgctxt "as connection blocked"
|
1074 |
msgid "Blocked"
|
1075 |
msgstr ""
|
1076 |
|
1077 |
+
#: classes/freemius/includes/i18n.php:192
|
1078 |
msgctxt "as application program interface"
|
1079 |
msgid "API"
|
1080 |
msgstr ""
|
1081 |
|
1082 |
+
#: classes/freemius/includes/i18n.php:193
|
1083 |
msgctxt "as software development kit versions"
|
1084 |
msgid "SDK"
|
1085 |
msgstr ""
|
1086 |
|
1087 |
+
#: classes/freemius/includes/i18n.php:194
|
1088 |
msgctxt "as software development kit versions"
|
1089 |
msgid "SDK Versions"
|
1090 |
msgstr ""
|
1091 |
|
1092 |
+
#: classes/freemius/includes/i18n.php:195
|
1093 |
msgctxt "as plugin folder path"
|
1094 |
msgid "Plugin Path"
|
1095 |
msgstr ""
|
1096 |
|
1097 |
+
#: classes/freemius/includes/i18n.php:196
|
1098 |
msgctxt "as sdk path"
|
1099 |
msgid "SDK Path"
|
1100 |
msgstr ""
|
1101 |
|
1102 |
+
#: classes/freemius/includes/i18n.php:197
|
1103 |
#, php-format
|
1104 |
msgid "Add Ons of Plugin %s"
|
1105 |
msgstr ""
|
1106 |
|
1107 |
+
#: classes/freemius/includes/i18n.php:198
|
1108 |
msgid "Are you sure you want to delete the all Freemius data?"
|
1109 |
msgstr ""
|
1110 |
|
1111 |
+
#: classes/freemius/includes/i18n.php:199
|
1112 |
msgid "Actions"
|
1113 |
msgstr ""
|
1114 |
|
1115 |
+
#: classes/freemius/includes/i18n.php:200
|
1116 |
msgid "Delete All Accounts"
|
1117 |
msgstr ""
|
1118 |
|
1119 |
+
#: classes/freemius/includes/i18n.php:201
|
1120 |
msgid "Clear API Cache"
|
1121 |
msgstr ""
|
1122 |
|
1123 |
+
#: classes/freemius/includes/i18n.php:202
|
1124 |
msgid "Sync Data From Server"
|
1125 |
msgstr ""
|
1126 |
|
1127 |
+
#: classes/freemius/includes/i18n.php:206
|
1128 |
msgctxt "as congratulations"
|
1129 |
msgid "Congrats"
|
1130 |
msgstr ""
|
1131 |
|
1132 |
+
#: classes/freemius/includes/i18n.php:207
|
1133 |
msgctxt "exclamation"
|
1134 |
msgid "Oops"
|
1135 |
msgstr ""
|
1136 |
|
1137 |
+
#: classes/freemius/includes/i18n.php:208
|
1138 |
msgctxt "interjection expressing joy or exuberance"
|
1139 |
msgid "Yee-haw"
|
1140 |
msgstr ""
|
1141 |
|
1142 |
+
#: classes/freemius/includes/i18n.php:209
|
1143 |
msgctxt ""
|
1144 |
"(especially in electronic communication) used to express elation, "
|
1145 |
"enthusiasm, or triumph."
|
1146 |
msgid "W00t"
|
1147 |
msgstr ""
|
1148 |
|
1149 |
+
#: classes/freemius/includes/i18n.php:210
|
1150 |
msgctxt "a positive response"
|
1151 |
msgid "Right on"
|
1152 |
msgstr ""
|
1153 |
|
1154 |
+
#: classes/freemius/includes/i18n.php:211
|
1155 |
msgctxt ""
|
1156 |
"something somebody says when they are thinking about what you have just "
|
1157 |
"said. "
|
1158 |
msgid "Hmm"
|
1159 |
msgstr ""
|
1160 |
|
1161 |
+
#: classes/freemius/includes/i18n.php:212
|
1162 |
msgid "O.K"
|
1163 |
msgstr ""
|
1164 |
|
1165 |
+
#: classes/freemius/includes/i18n.php:213
|
1166 |
msgctxt "exclamation"
|
1167 |
msgid "Hey"
|
1168 |
msgstr ""
|
1169 |
|
1170 |
+
#: classes/freemius/includes/i18n.php:214
|
1171 |
msgctxt "advance notice of something that will need attention."
|
1172 |
msgid "Heads up"
|
1173 |
msgstr ""
|
1174 |
|
1175 |
+
#: classes/freemius/includes/i18n.php:218
|
1176 |
msgid "Seems like you got the latest release."
|
1177 |
msgstr ""
|
1178 |
|
1179 |
+
#: classes/freemius/includes/i18n.php:219
|
1180 |
msgid "You are all good!"
|
1181 |
msgstr ""
|
1182 |
|
1183 |
+
#: classes/freemius/includes/i18n.php:220
|
1184 |
msgid ""
|
1185 |
"Sorry, we could not complete the email update. Another user with the same "
|
1186 |
"email is already registered."
|
1187 |
msgstr ""
|
1188 |
|
1189 |
+
#: classes/freemius/includes/i18n.php:221
|
1190 |
#, php-format
|
1191 |
msgid ""
|
1192 |
"If you would like to give up the ownership of the plugin's account to %s "
|
1193 |
"click the Change Ownership button."
|
1194 |
msgstr ""
|
1195 |
|
1196 |
+
#: classes/freemius/includes/i18n.php:222
|
1197 |
msgid ""
|
1198 |
"Your email was successfully updated. You should receive an email with "
|
1199 |
"confirmation instructions in few moments."
|
1200 |
msgstr ""
|
1201 |
|
1202 |
+
#: classes/freemius/includes/i18n.php:223
|
1203 |
msgid "Your name was successfully updated."
|
1204 |
msgstr ""
|
1205 |
|
1206 |
+
#: classes/freemius/includes/i18n.php:224
|
1207 |
#, php-format
|
1208 |
msgid "You have successfully updated your %s."
|
1209 |
msgstr ""
|
1210 |
|
1211 |
+
#: classes/freemius/includes/i18n.php:225
|
1212 |
msgid "Please provide your full name."
|
1213 |
msgstr ""
|
1214 |
|
1215 |
+
#: classes/freemius/includes/i18n.php:226
|
1216 |
#, php-format
|
1217 |
msgid ""
|
1218 |
"Verification mail was just sent to %s. If you can't find it after 5 min, "
|
1219 |
"please check your spam box."
|
1220 |
msgstr ""
|
1221 |
|
1222 |
+
#: classes/freemius/includes/i18n.php:227
|
1223 |
#, php-format
|
1224 |
msgid ""
|
1225 |
"Just letting you know that the add-ons information of %s is being pulled "
|
1226 |
"from external server."
|
1227 |
msgstr ""
|
1228 |
|
1229 |
+
#: classes/freemius/includes/i18n.php:228
|
1230 |
msgid "No credit card required"
|
1231 |
msgstr ""
|
1232 |
|
1233 |
+
#: classes/freemius/includes/i18n.php:229
|
1234 |
msgid "Premium plugin version was successfully activated."
|
1235 |
msgstr ""
|
1236 |
|
1237 |
+
#: classes/freemius/includes/i18n.php:230
|
1238 |
#, php-format
|
1239 |
msgid "The upgrade of %s was successfully completed."
|
1240 |
msgstr ""
|
1241 |
|
1242 |
+
#: classes/freemius/includes/i18n.php:231
|
1243 |
#, php-format
|
1244 |
msgid "Your account was successfully activated with the %s plan."
|
1245 |
msgstr ""
|
1246 |
|
1247 |
+
#: classes/freemius/includes/i18n.php:232
|
1248 |
#, php-format
|
1249 |
msgid "Download the latest %s version now"
|
1250 |
msgstr ""
|
1251 |
|
1252 |
+
#: classes/freemius/includes/i18n.php:233
|
1253 |
msgid "Download the latest version now"
|
1254 |
msgstr ""
|
1255 |
|
1256 |
+
#: classes/freemius/includes/i18n.php:234
|
1257 |
#, php-format
|
1258 |
msgctxt "%s - product name, e.g. Facebook add-on was successfully..."
|
1259 |
msgid "%s Add-on was successfully purchased."
|
1260 |
msgstr ""
|
1261 |
|
1262 |
+
#: classes/freemius/includes/i18n.php:235
|
1263 |
#, php-format
|
1264 |
msgid "Your %s Add-on plan was successfully upgraded."
|
1265 |
msgstr ""
|
1266 |
|
1267 |
+
#: classes/freemius/includes/i18n.php:236
|
1268 |
msgid "Your email has been successfully verified - you are AWESOME!"
|
1269 |
msgstr ""
|
1270 |
|
1271 |
+
#: classes/freemius/includes/i18n.php:237
|
1272 |
msgid "Your plan was successfully upgraded."
|
1273 |
msgstr ""
|
1274 |
|
1275 |
+
#: classes/freemius/includes/i18n.php:238
|
1276 |
#, php-format
|
1277 |
msgid "Your plan was successfully changed to %s."
|
1278 |
msgstr ""
|
1279 |
|
1280 |
+
#: classes/freemius/includes/i18n.php:239
|
1281 |
msgid ""
|
1282 |
"Your license has expired. You can still continue using the free plugin "
|
1283 |
"forever."
|
1284 |
msgstr ""
|
1285 |
|
1286 |
+
#: classes/freemius/includes/i18n.php:240
|
1287 |
msgid "Your trial has been successfully started."
|
1288 |
msgstr ""
|
1289 |
|
1290 |
+
#: classes/freemius/includes/i18n.php:241
|
1291 |
msgid "Your license was successfully activated."
|
1292 |
msgstr ""
|
1293 |
|
1294 |
+
#: classes/freemius/includes/i18n.php:242
|
1295 |
msgid "It looks like your site currently don't have an active license."
|
1296 |
msgstr ""
|
1297 |
|
1298 |
+
#: classes/freemius/includes/i18n.php:243
|
1299 |
#, php-format
|
1300 |
msgid "Your license was successfully deactivated, you are back to the %s plan."
|
1301 |
msgstr ""
|
1302 |
|
1303 |
+
#: classes/freemius/includes/i18n.php:244
|
1304 |
msgid "It looks like the license deactivation failed."
|
1305 |
msgstr ""
|
1306 |
|
1307 |
+
#: classes/freemius/includes/i18n.php:245
|
1308 |
msgid "It looks like the license could not be activated."
|
1309 |
msgstr ""
|
1310 |
|
1311 |
+
#: classes/freemius/includes/i18n.php:246
|
1312 |
msgid "Error received from the server:"
|
1313 |
msgstr ""
|
1314 |
|
1315 |
+
#: classes/freemius/includes/i18n.php:247
|
1316 |
msgid ""
|
1317 |
"Your trial has expired. You can still continue using all our free features."
|
1318 |
msgstr ""
|
1319 |
|
1320 |
+
#: classes/freemius/includes/i18n.php:248
|
1321 |
#, php-format
|
1322 |
msgid ""
|
1323 |
"Your plan was successfully downgraded. Your %s plan license will expire in "
|
1324 |
"%s."
|
1325 |
msgstr ""
|
1326 |
|
1327 |
+
#: classes/freemius/includes/i18n.php:249
|
1328 |
msgid ""
|
1329 |
"Seems like we are having some temporary issue with your plan downgrade. "
|
1330 |
"Please try again in few minutes."
|
1331 |
msgstr ""
|
1332 |
|
1333 |
+
#: classes/freemius/includes/i18n.php:250
|
1334 |
msgid ""
|
1335 |
"It looks like you are not in trial mode anymore so there's nothing to "
|
1336 |
"cancel :)"
|
1337 |
msgstr ""
|
1338 |
|
1339 |
+
#: classes/freemius/includes/i18n.php:251
|
1340 |
#, php-format
|
1341 |
msgid "Your %s Plan trial was successfully cancelled."
|
1342 |
msgstr ""
|
1343 |
|
1344 |
+
#: classes/freemius/includes/i18n.php:252
|
1345 |
#, php-format
|
1346 |
msgctxt "%s - numeric version number"
|
1347 |
msgid "Version %s was released."
|
1348 |
msgstr ""
|
1349 |
|
1350 |
+
#: classes/freemius/includes/i18n.php:253
|
1351 |
#, php-format
|
1352 |
msgid "Please download %s."
|
1353 |
msgstr ""
|
1354 |
|
1355 |
+
#: classes/freemius/includes/i18n.php:254
|
1356 |
#, php-format
|
1357 |
msgctxt "%s - plan name, as the latest professional version here"
|
1358 |
msgid "the latest %s version here"
|
1359 |
msgstr ""
|
1360 |
|
1361 |
+
#: classes/freemius/includes/i18n.php:255
|
1362 |
#, php-format
|
1363 |
msgid ""
|
1364 |
"How do you like %s so far? Test all our %s premium features with a %d-day "
|
1365 |
"free trial."
|
1366 |
msgstr ""
|
1367 |
|
1368 |
+
#: classes/freemius/includes/i18n.php:256
|
1369 |
msgctxt "call to action"
|
1370 |
msgid "Start free trial"
|
1371 |
msgstr ""
|
1372 |
|
1373 |
+
#: classes/freemius/includes/i18n.php:257
|
1374 |
msgid ""
|
1375 |
"Seems like we are having some temporary issue with your trial cancellation. "
|
1376 |
"Please try again in few minutes."
|
1377 |
msgstr ""
|
1378 |
|
1379 |
+
#: classes/freemius/includes/i18n.php:258
|
1380 |
#, php-format
|
1381 |
msgid "No commitment for %s days - cancel anytime!"
|
1382 |
msgstr ""
|
1383 |
|
1384 |
+
#: classes/freemius/includes/i18n.php:259
|
1385 |
#, php-format
|
1386 |
msgid ""
|
1387 |
"Your license has expired. You can still continue using all the %s features, "
|
1389 |
"support."
|
1390 |
msgstr ""
|
1391 |
|
1392 |
+
#: classes/freemius/includes/i18n.php:260
|
1393 |
#, php-format
|
1394 |
msgid "Couldn't activate %s."
|
1395 |
msgstr ""
|
1396 |
|
1397 |
+
#: classes/freemius/includes/i18n.php:261
|
1398 |
msgid "Please contact us with the following message:"
|
1399 |
msgstr ""
|
1400 |
|
1401 |
+
#: classes/freemius/includes/i18n.php:262
|
1402 |
msgid ""
|
1403 |
"It looks like your plan did't change. If you did upgrade, it's probably an "
|
1404 |
"issue on our side - sorry."
|
1405 |
msgstr ""
|
1406 |
|
1407 |
+
#: classes/freemius/includes/i18n.php:263
|
1408 |
msgid "Please contact us here"
|
1409 |
msgstr ""
|
1410 |
|
1411 |
+
#: classes/freemius/includes/i18n.php:264
|
1412 |
#, php-format
|
1413 |
msgid ""
|
1414 |
"I have upgraded my account but when I try to Sync the License, the plan "
|
1415 |
"remains %s."
|
1416 |
msgstr ""
|
1417 |
|
1418 |
+
#: classes/freemius/includes/i18n.php:267
|
1419 |
msgid "From unknown reason, the API connectivity test fails."
|
1420 |
msgstr ""
|
1421 |
|
1422 |
+
#: classes/freemius/includes/i18n.php:268
|
1423 |
msgid ""
|
1424 |
"We use PHP cURL library for the API calls, which is a very common library "
|
1425 |
"and usually installed out of the box. Unfortunately, cURL is not installed "
|
1426 |
"on your server."
|
1427 |
msgstr ""
|
1428 |
|
1429 |
+
#: classes/freemius/includes/i18n.php:269
|
1430 |
msgid ""
|
1431 |
"From unknown reason, CloudFlare, the firewall we use, blocks the connection."
|
1432 |
msgstr ""
|
1433 |
|
1434 |
+
#: classes/freemius/includes/i18n.php:270
|
1435 |
#, php-format
|
1436 |
msgctxt "as pluginX requires an access to our API"
|
1437 |
msgid "%s requires an access to our API."
|
1438 |
msgstr ""
|
1439 |
|
1440 |
+
#: classes/freemius/includes/i18n.php:271
|
1441 |
msgid ""
|
1442 |
"It looks like your server is using Squid ACL (access control lists), which "
|
1443 |
"blocks the connection."
|
1444 |
msgstr ""
|
1445 |
|
1446 |
+
#: classes/freemius/includes/i18n.php:272
|
1447 |
msgid "I don't know what is Squid or ACL, help me!"
|
1448 |
msgstr ""
|
1449 |
|
1450 |
+
#: classes/freemius/includes/i18n.php:273
|
1451 |
+
#: classes/freemius/includes/i18n.php:277
|
1452 |
#, php-format
|
1453 |
msgid ""
|
1454 |
"We'll make sure to contact your hosting company and resolve the issue. You "
|
1455 |
"will get a follow-up email to %s once we have an update."
|
1456 |
msgstr ""
|
1457 |
|
1458 |
+
#: classes/freemius/includes/i18n.php:274
|
1459 |
msgid "I'm a system administrator"
|
1460 |
msgstr ""
|
1461 |
|
1462 |
+
#: classes/freemius/includes/i18n.php:275
|
1463 |
#, php-format
|
1464 |
msgid ""
|
1465 |
"Great, please whitelist the following domains: %s. Once you done, deactivate "
|
1466 |
"the plugin and activate it again."
|
1467 |
msgstr ""
|
1468 |
|
1469 |
+
#: classes/freemius/includes/i18n.php:276
|
1470 |
msgid "I don't know what is cURL or how to install it, help me!"
|
1471 |
msgstr ""
|
1472 |
|
1473 |
+
#: classes/freemius/includes/i18n.php:278
|
1474 |
msgid ""
|
1475 |
"Great, please install cURL and enable it in your php.ini file. To make sure "
|
1476 |
"it was successfully activated, use 'phpinfo()'. Once activated, deactivate "
|
1477 |
"the plugin and reactivate it back again."
|
1478 |
msgstr ""
|
1479 |
|
1480 |
+
#: classes/freemius/includes/i18n.php:279
|
1481 |
msgid ""
|
1482 |
"We are sure it's an issue on our side and more than happy to resolve it for "
|
1483 |
"you ASAP if you give us a chance."
|
1484 |
msgstr ""
|
1485 |
|
1486 |
+
#: classes/freemius/includes/i18n.php:280
|
1487 |
msgid "Yes - I'm giving you a chance to fix it"
|
1488 |
msgstr ""
|
1489 |
|
1490 |
+
#: classes/freemius/includes/i18n.php:281
|
1491 |
#, php-format
|
1492 |
msgid ""
|
1493 |
"We will do our best to whitelist your server and resolve this issue ASAP. "
|
1494 |
"You will get a follow-up email to %s once we have an update."
|
1495 |
msgstr ""
|
1496 |
|
1497 |
+
#: classes/freemius/includes/i18n.php:282
|
1498 |
msgid "Let's try your previous version"
|
1499 |
msgstr ""
|
1500 |
|
1501 |
+
#: classes/freemius/includes/i18n.php:283
|
1502 |
msgid "Uninstall this version and install the previous one."
|
1503 |
msgstr ""
|
1504 |
|
1505 |
+
#: classes/freemius/includes/i18n.php:284
|
1506 |
msgid "That's exhausting, please deactivate"
|
1507 |
msgstr ""
|
1508 |
|
1509 |
+
#: classes/freemius/includes/i18n.php:285
|
1510 |
msgid ""
|
1511 |
"We feel your frustration and sincerely apologize for the inconvenience. Hope "
|
1512 |
"to see you again in the future."
|
1513 |
msgstr ""
|
1514 |
|
1515 |
+
#: classes/freemius/includes/i18n.php:286
|
1516 |
#, php-format
|
1517 |
msgid ""
|
1518 |
"Thank for giving us the chance to fix it! A message was just sent to our "
|
1520 |
"Appreciate your patience."
|
1521 |
msgstr ""
|
1522 |
|
1523 |
+
#: classes/freemius/includes/i18n.php:287
|
1524 |
#, php-format
|
1525 |
msgctxt "%1s - plugin title, %2s - API domain"
|
1526 |
msgid ""
|
1527 |
"Your server is blocking the access to Freemius' API, which is crucial for "
|
1528 |
+
"%1s synchronization. Please contact your host to whitelist %2s"
|
1529 |
msgstr ""
|
1530 |
|
1531 |
+
#: classes/freemius/includes/i18n.php:288
|
1532 |
msgid ""
|
1533 |
"It seems like one of the authentication parameters is wrong. Update your "
|
1534 |
"Public Key, Secret Key & User ID, and try again."
|
1535 |
msgstr ""
|
1536 |
|
1537 |
+
#: classes/freemius/includes/i18n.php:291
|
1538 |
#, php-format
|
1539 |
msgid ""
|
1540 |
"Please check your mailbox, you should receive an email via %s to confirm the "
|
1542 |
"the next 15 min. If you cannot find the email, please check your spam folder."
|
1543 |
msgstr ""
|
1544 |
|
1545 |
+
#: classes/freemius/includes/i18n.php:292
|
1546 |
#, php-format
|
1547 |
msgid ""
|
1548 |
"Thanks for confirming the ownership change. An email was just sent to %s for "
|
1549 |
"final approval."
|
1550 |
msgstr ""
|
1551 |
|
1552 |
+
#: classes/freemius/includes/i18n.php:293
|
1553 |
#, php-format
|
1554 |
msgid "%s is the new owner of the account."
|
1555 |
msgstr ""
|
1556 |
|
1557 |
+
#: classes/freemius/includes/i18n.php:295
|
1558 |
#, php-format
|
1559 |
msgctxt "addonX cannot run without pluginY"
|
1560 |
msgid "%s cannot run without %s."
|
1561 |
msgstr ""
|
1562 |
|
1563 |
+
#: classes/freemius/includes/i18n.php:296
|
1564 |
#, php-format
|
1565 |
msgctxt "addonX cannot run..."
|
1566 |
msgid "%s cannot run without the plugin."
|
1567 |
msgstr ""
|
1568 |
|
1569 |
+
#: classes/freemius/includes/i18n.php:297
|
1570 |
#, php-format
|
1571 |
msgctxt "pluginX activation was successfully..."
|
1572 |
msgid "%s activation was successfully completed."
|
1573 |
msgstr ""
|
1574 |
|
1575 |
+
#: classes/freemius/includes/i18n.php:298
|
1576 |
msgctxt "Plugin installer section title"
|
1577 |
msgid "Features & Pricing"
|
1578 |
msgstr ""
|
1579 |
|
1580 |
+
#: classes/freemius/templates/account.php:287
|
1581 |
msgctxt "verb"
|
1582 |
msgid "Edit"
|
1583 |
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.8 =
|
100 |
* Tweak! Update Freemius SDK
|
101 |
|
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.9
|
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.9 =
|
100 |
+
* Tweak! Update Freemius SDK
|
101 |
+
|
102 |
= 2.2.8 =
|
103 |
* Tweak! Update Freemius SDK
|
104 |
|