Version Description
Download this release
Release Info
Developer | layotte |
Plugin | iThemes Sync |
Version | 2.0.9 |
Comparing to | |
See all releases |
Code changes from version 2.0.4 to 2.0.9
- admin.php +25 -7
- client-dashboard.php +20 -4
- duplicator.php +1 -1
- history.txt +10 -0
- init.php +2 -2
- lang/ithemes-sync.pot +27 -13
- load-translations.php +3 -3
- load.php +5 -1
- notice-handler.php +1 -1
- notices.php +12 -6
- readme.txt +14 -2
- server.php +1 -1
- settings-page.php +30 -30
- settings.php +2 -2
- social.php +4 -4
- verbs/db-optimization.php +2 -2
admin.php
CHANGED
@@ -26,6 +26,7 @@ class Ithemes_Sync_Admin {
|
|
26 |
public function __construct() {
|
27 |
add_action( 'init', array( $this, 'init' ) );
|
28 |
add_action( 'wp_ajax_ithemes_sync_hide_notice', array( $this, 'hide_authenticate_notice' ) );
|
|
|
29 |
}
|
30 |
|
31 |
public function modify_plugins_page() {
|
@@ -115,7 +116,7 @@ class Ithemes_Sync_Admin {
|
|
115 |
|
116 |
?>
|
117 |
<div class="updated" id="ithemes-sync-notice">
|
118 |
-
<?php printf( __( 'iThemes Sync is active. <a class="ithemes-sync-notice-button" href="%s">Manage Sync</a> <a class="ithemes-sync-notice-dismiss" href="#">×</a>', '
|
119 |
</div>
|
120 |
<?php
|
121 |
|
@@ -129,7 +130,7 @@ class Ithemes_Sync_Admin {
|
|
129 |
|
130 |
?>
|
131 |
<div class="updated" id="ithemes-sync-notice">
|
132 |
-
<?php printf( __( 'iThemes Sync is almost ready. <a class="ithemes-sync-notice-button" href="%s">Set Up Sync</a> <a class="ithemes-sync-notice-hide" href="#">×</a>', '
|
133 |
</div>
|
134 |
<?php
|
135 |
|
@@ -144,7 +145,7 @@ class Ithemes_Sync_Admin {
|
|
144 |
|
145 |
?>
|
146 |
<div class="updated">
|
147 |
-
<p><?php printf( __( 'iThemes Sync will show for your user for the next %1$s. Click <a href="%2$s">here</a> to hide iThemes Sync again.', '
|
148 |
</div>
|
149 |
<?php
|
150 |
|
@@ -154,7 +155,7 @@ class Ithemes_Sync_Admin {
|
|
154 |
|
155 |
?>
|
156 |
<div class="updated">
|
157 |
-
<p><?php _e( 'iThemes Sync is now hidden from your user again.', '
|
158 |
</div>
|
159 |
<?php
|
160 |
|
@@ -165,13 +166,13 @@ class Ithemes_Sync_Admin {
|
|
165 |
}
|
166 |
|
167 |
public function add_admin_pages() {
|
168 |
-
$this->page_ref = add_options_page( __( 'iThemes Sync', '
|
169 |
|
170 |
add_action( "load-{$this->page_ref}", array( $this, 'load_settings_page' ) );
|
171 |
}
|
172 |
|
173 |
public function add_network_admin_pages() {
|
174 |
-
$this->page_ref = add_submenu_page( 'settings.php', __( 'iThemes Sync', '
|
175 |
|
176 |
add_action( "load-{$this->page_ref}", array( $this, 'load_settings_page' ) );
|
177 |
}
|
@@ -199,7 +200,7 @@ class Ithemes_Sync_Admin {
|
|
199 |
return;
|
200 |
|
201 |
$url = admin_url( 'options-general.php' ) . "?page={$this->page_name}";
|
202 |
-
$this->registration_link = sprintf( '<a href="%1$s" title="%2$s">%3$s</a>', $url, __( 'Manage iThemes product licenses to receive automatic upgrade support', '
|
203 |
}
|
204 |
|
205 |
public function filter_plugin_action_links( $actions, $plugin_file, $plugin_data, $context ) {
|
@@ -228,6 +229,23 @@ class Ithemes_Sync_Admin {
|
|
228 |
|
229 |
return $actions;
|
230 |
}
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
231 |
}
|
232 |
|
233 |
new Ithemes_Sync_Admin();
|
26 |
public function __construct() {
|
27 |
add_action( 'init', array( $this, 'init' ) );
|
28 |
add_action( 'wp_ajax_ithemes_sync_hide_notice', array( $this, 'hide_authenticate_notice' ) );
|
29 |
+
add_action( 'admin_init', array( $this, 'add_privacy_content' ) );
|
30 |
}
|
31 |
|
32 |
public function modify_plugins_page() {
|
116 |
|
117 |
?>
|
118 |
<div class="updated" id="ithemes-sync-notice">
|
119 |
+
<?php printf( __( 'iThemes Sync is active. <a class="ithemes-sync-notice-button" href="%s">Manage Sync</a> <a class="ithemes-sync-notice-dismiss" href="#">×</a>', 'it-l10n-ithemes-sync' ), $url ); ?>
|
120 |
</div>
|
121 |
<?php
|
122 |
|
130 |
|
131 |
?>
|
132 |
<div class="updated" id="ithemes-sync-notice">
|
133 |
+
<?php printf( __( 'iThemes Sync is almost ready. <a class="ithemes-sync-notice-button" href="%s">Set Up Sync</a> <a class="ithemes-sync-notice-hide" href="#">×</a>', 'it-l10n-ithemes-sync' ), $url ); ?>
|
134 |
</div>
|
135 |
<?php
|
136 |
|
145 |
|
146 |
?>
|
147 |
<div class="updated">
|
148 |
+
<p><?php printf( __( 'iThemes Sync will show for your user for the next %1$s. Click <a href="%2$s">here</a> to hide iThemes Sync again.', 'it-l10n-ithemes-sync' ), $time_diff, $url ); ?></p>
|
149 |
</div>
|
150 |
<?php
|
151 |
|
155 |
|
156 |
?>
|
157 |
<div class="updated">
|
158 |
+
<p><?php _e( 'iThemes Sync is now hidden from your user again.', 'it-l10n-ithemes-sync' ); ?></p>
|
159 |
</div>
|
160 |
<?php
|
161 |
|
166 |
}
|
167 |
|
168 |
public function add_admin_pages() {
|
169 |
+
$this->page_ref = add_options_page( __( 'iThemes Sync', 'it-l10n-ithemes-sync' ), __( 'iThemes Sync', 'it-l10n-ithemes-sync' ), 'manage_options', $this->page_name, array( $this, 'settings_index' ) );
|
170 |
|
171 |
add_action( "load-{$this->page_ref}", array( $this, 'load_settings_page' ) );
|
172 |
}
|
173 |
|
174 |
public function add_network_admin_pages() {
|
175 |
+
$this->page_ref = add_submenu_page( 'settings.php', __( 'iThemes Sync', 'it-l10n-ithemes-sync' ), __( 'iThemes Sync', 'it-l10n-ithemes-sync' ), 'manage_options', $this->page_name, array( $this, 'settings_index' ) );
|
176 |
|
177 |
add_action( "load-{$this->page_ref}", array( $this, 'load_settings_page' ) );
|
178 |
}
|
200 |
return;
|
201 |
|
202 |
$url = admin_url( 'options-general.php' ) . "?page={$this->page_name}";
|
203 |
+
$this->registration_link = sprintf( '<a href="%1$s" title="%2$s">%3$s</a>', $url, __( 'Manage iThemes product licenses to receive automatic upgrade support', 'it-l10n-ithemes-sync' ), __( 'License', 'it-l10n-ithemes-sync' ) );
|
204 |
}
|
205 |
|
206 |
public function filter_plugin_action_links( $actions, $plugin_file, $plugin_data, $context ) {
|
229 |
|
230 |
return $actions;
|
231 |
}
|
232 |
+
|
233 |
+
/**
|
234 |
+
* Adds privacy content to wp-admin/tools.php?wp-privacy-policy-guide
|
235 |
+
*
|
236 |
+
* @since 2.0.9
|
237 |
+
* @return void
|
238 |
+
*/
|
239 |
+
function add_privacy_content() {
|
240 |
+
if ( ! function_exists( 'wp_add_privacy_policy_content' ) ) {
|
241 |
+
return;
|
242 |
+
}
|
243 |
+
|
244 |
+
$content = '<div class="wp-suggested-text"><h2>' . __( 'Where we send your data', 'it-l10n-ithemes-sync' ) . '</h2>';
|
245 |
+
$content .= sprintf( __( "%s%sSuggested text:%s This web site uses a third party service to manage administrative tasks. If you leave a comment, submit personal information via a contact form, or otherwise exchange personal details with us, it is possible that we may use this service to manage that data. Please visit the %siThemes Privacy Policy%s for more information regarding the way they handle their data.%s%s", 'it-l10n-ithemes-sync' ), '<p>', '<strong class="privacy-policy-tutorial">', '</strong>', '<a href="https://ithemes.com/privacy-policy/">', '</a>', '</p>', '</div>' );
|
246 |
+
|
247 |
+
wp_add_privacy_policy_content( 'iThemes Sync', wp_kses_post( wpautop( $content, false ) ) );
|
248 |
+
}
|
249 |
}
|
250 |
|
251 |
new Ithemes_Sync_Admin();
|
client-dashboard.php
CHANGED
@@ -14,14 +14,18 @@ class Ithemes_Sync_Client_Dashboard {
|
|
14 |
}
|
15 |
|
16 |
public function init() {
|
|
|
|
|
|
|
17 |
// If this user is supposed to see the client dashboard
|
18 |
-
if ( get_user_meta(
|
19 |
-
|
|
|
20 |
// Enqueue our admin scripts and styles
|
21 |
-
add_action( 'admin_enqueue_scripts', array( $this, 'enqueue_dashboard_scripts' ) );
|
22 |
}
|
23 |
|
24 |
-
if ( get_user_meta(
|
25 |
add_action( 'network_admin_notices', array( $this, 'admin_notices_start' ), 1 );
|
26 |
add_action( 'user_admin_notices', array( $this, 'admin_notices_start' ), 1 );
|
27 |
add_action( 'admin_notices', array( $this, 'admin_notices_start' ), 1 );
|
@@ -43,6 +47,12 @@ class Ithemes_Sync_Client_Dashboard {
|
|
43 |
|
44 |
// Filter welcome panel
|
45 |
add_filter( 'show_welcome_panel', array( $this, 'show_welcome_panel' ) );
|
|
|
|
|
|
|
|
|
|
|
|
|
46 |
}
|
47 |
|
48 |
add_action( 'admin_menu', array( $this, 'admin_menu' ), 999999 ); //We want to be last!
|
@@ -206,6 +216,7 @@ class Ithemes_Sync_Client_Dashboard {
|
|
206 |
'new-content',
|
207 |
'new-post',
|
208 |
'new-page',
|
|
|
209 |
'top-secondary',
|
210 |
'my-account',
|
211 |
'user-actions',
|
@@ -247,6 +258,7 @@ class Ithemes_Sync_Client_Dashboard {
|
|
247 |
$iterations = 0;
|
248 |
while ( ! empty( $admin_bar_nodes ) && ++$iterations <= 100 ) {
|
249 |
foreach ( $admin_bar_nodes as $key => $current_node ) {
|
|
|
250 |
if ( in_array( $current_node->id, $this->_admin_bar_ignored_items ) ) {
|
251 |
// Don't send ignored items
|
252 |
unset( $admin_bar_nodes[ $key ] );
|
@@ -260,6 +272,10 @@ class Ithemes_Sync_Client_Dashboard {
|
|
260 |
}
|
261 |
}
|
262 |
|
|
|
|
|
|
|
|
|
263 |
/**
|
264 |
* If we haven't parsed any elements out since the last time through
|
265 |
* the loop, break out to avoid an infinite loop. This only happens
|
14 |
}
|
15 |
|
16 |
public function init() {
|
17 |
+
$user_id = get_current_user_id();
|
18 |
+
$refresh_cd = get_user_meta( $user_id, 'it-sync-refresh-cd' );
|
19 |
+
|
20 |
// If this user is supposed to see the client dashboard
|
21 |
+
if ( get_user_meta( $user_id, 'ithemes-sync-client-dashboard', true ) && empty( $refresh_cd ) ) {
|
22 |
+
|
23 |
+
if ( ! get_user_meta( $user_id, 'ithemes-sync-client-dashboard-no-css', true ) ) {
|
24 |
// Enqueue our admin scripts and styles
|
25 |
+
//add_action( 'admin_enqueue_scripts', array( $this, 'enqueue_dashboard_scripts' ) );
|
26 |
}
|
27 |
|
28 |
+
if ( get_user_meta( $user_id, 'ithemes-sync-suppress-admin-notices', true ) ) {
|
29 |
add_action( 'network_admin_notices', array( $this, 'admin_notices_start' ), 1 );
|
30 |
add_action( 'user_admin_notices', array( $this, 'admin_notices_start' ), 1 );
|
31 |
add_action( 'admin_notices', array( $this, 'admin_notices_start' ), 1 );
|
47 |
|
48 |
// Filter welcome panel
|
49 |
add_filter( 'show_welcome_panel', array( $this, 'show_welcome_panel' ) );
|
50 |
+
} else {
|
51 |
+
// If this is a call from the Edit User screen in sync, clear the cache.
|
52 |
+
if ( ! empty( $refresh_cd ) ) {
|
53 |
+
delete_user_meta( $user_id, 'it-sync-refresh-cd' );
|
54 |
+
$this->clear_cache();
|
55 |
+
}
|
56 |
}
|
57 |
|
58 |
add_action( 'admin_menu', array( $this, 'admin_menu' ), 999999 ); //We want to be last!
|
216 |
'new-content',
|
217 |
'new-post',
|
218 |
'new-page',
|
219 |
+
'edit',
|
220 |
'top-secondary',
|
221 |
'my-account',
|
222 |
'user-actions',
|
258 |
$iterations = 0;
|
259 |
while ( ! empty( $admin_bar_nodes ) && ++$iterations <= 100 ) {
|
260 |
foreach ( $admin_bar_nodes as $key => $current_node ) {
|
261 |
+
$edit_found = $current_node->id == 'edit';
|
262 |
if ( in_array( $current_node->id, $this->_admin_bar_ignored_items ) ) {
|
263 |
// Don't send ignored items
|
264 |
unset( $admin_bar_nodes[ $key ] );
|
272 |
}
|
273 |
}
|
274 |
|
275 |
+
if ( ! $edit_found && ( current_user_can( 'edit_published_pages' ) || current_user_can( 'edit_published_posts' ) ) ) {
|
276 |
+
$admin_bar['edit'] = array( 'id' => 'edit', 'title' => '<span class="ab-icon"></span><span class="ab-label">Edit Post/ Page</span>', 'parent' => false, 'type' => 'item', 'children' => false );
|
277 |
+
}
|
278 |
+
|
279 |
/**
|
280 |
* If we haven't parsed any elements out since the last time through
|
281 |
* the loop, break out to avoid an infinite loop. This only happens
|
duplicator.php
CHANGED
@@ -28,7 +28,7 @@ function ithemes_sync_duplicate_post_addon_get_duplicating_url( $post ) {
|
|
28 |
*/
|
29 |
function ithemes_sync_duplicate_post_addon_add_duplicate_post_function( $actions, $post ) {
|
30 |
$url = ithemes_sync_duplicate_post_addon_get_duplicating_url( $post );
|
31 |
-
$actions['ithemes_sync_duplicate'] = '<a class="sync_duplicate_post" id="sync-post-' . $post->ID . '" title="' . __( 'Duplicate Post', '
|
32 |
|
33 |
return $actions;
|
34 |
}
|
28 |
*/
|
29 |
function ithemes_sync_duplicate_post_addon_add_duplicate_post_function( $actions, $post ) {
|
30 |
$url = ithemes_sync_duplicate_post_addon_get_duplicating_url( $post );
|
31 |
+
$actions['ithemes_sync_duplicate'] = '<a class="sync_duplicate_post" id="sync-post-' . $post->ID . '" title="' . __( 'Duplicate Post', 'it-l10n-ithemes-sync' ) . '" href="' . $url . '">Duplicate</a>';
|
32 |
|
33 |
return $actions;
|
34 |
}
|
history.txt
CHANGED
@@ -188,3 +188,13 @@
|
|
188 |
Improvement: Refactored verbs to improve add-site function from Sync Dashboard.
|
189 |
2.0.4 - 2017-12-21 - Lew Ayotte
|
190 |
Bug Fix: Ignored Language Pack Updates when updating Core/Plugins/Themes, for now
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
188 |
Improvement: Refactored verbs to improve add-site function from Sync Dashboard.
|
189 |
2.0.4 - 2017-12-21 - Lew Ayotte
|
190 |
Bug Fix: Ignored Language Pack Updates when updating Core/Plugins/Themes, for now
|
191 |
+
2.0.5 - 2018-01-19 - Glenn Ansley
|
192 |
+
Bug Fix: Fixing Multiple issues with Client Dashboard
|
193 |
+
2.0.6 - 2018-01-26 - Glenn Ansley
|
194 |
+
Enhancement: Add ability to filter Edit Page/Post Link in frontend Admin Bar
|
195 |
+
2.0.7 - 2018-02-01 - Glenn Ansley
|
196 |
+
Bug Fix: Fix redirect bug effecting Remote Login from Sync on some hosting providers.
|
197 |
+
2.0.8 - 2018-03-20 - Lew Ayotte
|
198 |
+
Enhancement: Updating ITSEC Notifications to handle ITSEC's new notification logger
|
199 |
+
2.0.9 - 2018-05-25 - Glenn Ansley
|
200 |
+
Enhancement: Adding GDPR Policy Content Suggestions
|
init.php
CHANGED
@@ -4,7 +4,7 @@ Plugin Name: iThemes Sync
|
|
4 |
Plugin URI: http://ithemes.com/sync
|
5 |
Description: Manage updates to your WordPress sites easily in one place.
|
6 |
Author: iThemes
|
7 |
-
Version: 2.0.
|
8 |
Author URI: http://ithemes.com/
|
9 |
Domain Path: /lang/
|
10 |
iThemes Package: ithemes-sync
|
@@ -16,7 +16,7 @@ if ( ! empty( $GLOBALS['ithemes_sync_path'] ) ) {
|
|
16 |
|
17 |
if ( $active_plugin_path != $this_plugin_path ) {
|
18 |
$function = 'echo \'<div class="error"><p>';
|
19 |
-
$function .= sprintf( __( 'Only one iThemes Sync plugin can be active at a time. The plugin at <code>%1$s</code> is running while the plugin at <code>%2$s</code> was skipped in order to prevent errors. Please deactivate the plugin that you do not wish to use.', '
|
20 |
$function .= '</p></div>\';';
|
21 |
|
22 |
$function_ref = create_function( '', $function );
|
4 |
Plugin URI: http://ithemes.com/sync
|
5 |
Description: Manage updates to your WordPress sites easily in one place.
|
6 |
Author: iThemes
|
7 |
+
Version: 2.0.9
|
8 |
Author URI: http://ithemes.com/
|
9 |
Domain Path: /lang/
|
10 |
iThemes Package: ithemes-sync
|
16 |
|
17 |
if ( $active_plugin_path != $this_plugin_path ) {
|
18 |
$function = 'echo \'<div class="error"><p>';
|
19 |
+
$function .= sprintf( __( 'Only one iThemes Sync plugin can be active at a time. The plugin at <code>%1$s</code> is running while the plugin at <code>%2$s</code> was skipped in order to prevent errors. Please deactivate the plugin that you do not wish to use.', 'it-l10n-ithemes-sync' ), $active_plugin_path, $this_plugin_path );
|
20 |
$function .= '</p></div>\';';
|
21 |
|
22 |
$function_ref = create_function( '', $function );
|
lang/ithemes-sync.pot
CHANGED
@@ -1,11 +1,11 @@
|
|
1 |
-
# Copyright (C)
|
2 |
# This file is distributed under the same license as the iThemes Sync package.
|
3 |
msgid ""
|
4 |
msgstr ""
|
5 |
-
"Project-Id-Version: iThemes Sync 2.0.
|
6 |
"Report-Msgid-Bugs-To: http://ithemes.com/support/\n"
|
7 |
-
"POT-Creation-Date:
|
8 |
-
"PO-Revision-Date:
|
9 |
"MIME-Version: 1.0\n"
|
10 |
"Content-Type: text/plain; charset=UTF-8\n"
|
11 |
"Content-Transfer-Encoding: 8bit\n"
|
@@ -13,43 +13,57 @@ msgstr ""
|
|
13 |
"Last-Translator: FULL NAME <EMAIL@ADDRESS>\n"
|
14 |
"Language-Team: LANGUAGE <LL@li.org>\n"
|
15 |
|
16 |
-
#: admin.php:
|
17 |
msgid ""
|
18 |
"iThemes Sync is active. <a class=\"ithemes-sync-notice-button\" href=\"%s"
|
19 |
"\">Manage Sync</a> <a class=\"ithemes-sync-notice-dismiss\" href=\"#\">×</a>"
|
20 |
msgstr ""
|
21 |
|
22 |
-
#: admin.php:
|
23 |
msgid ""
|
24 |
"iThemes Sync is almost ready. <a class=\"ithemes-sync-notice-button\" href="
|
25 |
"\"%s\">Set Up Sync</a> <a class=\"ithemes-sync-notice-hide\" href=\"#\">×</a>"
|
26 |
msgstr ""
|
27 |
|
28 |
-
#: admin.php:
|
29 |
msgid ""
|
30 |
"iThemes Sync will show for your user for the next %1$s. Click <a href=\"%2$s"
|
31 |
"\">here</a> to hide iThemes Sync again."
|
32 |
msgstr ""
|
33 |
|
34 |
-
#: admin.php:
|
35 |
msgid "iThemes Sync is now hidden from your user again."
|
36 |
msgstr ""
|
37 |
|
38 |
-
#. #-#-#-#-# ithemes-sync.pot (iThemes Sync 2.0.
|
39 |
#. Plugin Name of the plugin/theme
|
40 |
-
#: admin.php:
|
41 |
msgid "iThemes Sync"
|
42 |
msgstr ""
|
43 |
|
44 |
-
#: admin.php:
|
45 |
msgid "Manage iThemes product licenses to receive automatic upgrade support"
|
46 |
msgstr ""
|
47 |
|
48 |
-
#: admin.php:
|
49 |
msgid "License"
|
50 |
msgstr ""
|
51 |
|
52 |
-
#:
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
53 |
msgctxt "Welcome panel"
|
54 |
msgid "Welcome"
|
55 |
msgstr ""
|
1 |
+
# Copyright (C) 2018 iThemes Sync
|
2 |
# This file is distributed under the same license as the iThemes Sync package.
|
3 |
msgid ""
|
4 |
msgstr ""
|
5 |
+
"Project-Id-Version: iThemes Sync 2.0.9\n"
|
6 |
"Report-Msgid-Bugs-To: http://ithemes.com/support/\n"
|
7 |
+
"POT-Creation-Date: 2018-05-25 12:42:02+00:00\n"
|
8 |
+
"PO-Revision-Date: 2018-MO-DA HO:MI+ZONE\n"
|
9 |
"MIME-Version: 1.0\n"
|
10 |
"Content-Type: text/plain; charset=UTF-8\n"
|
11 |
"Content-Transfer-Encoding: 8bit\n"
|
13 |
"Last-Translator: FULL NAME <EMAIL@ADDRESS>\n"
|
14 |
"Language-Team: LANGUAGE <LL@li.org>\n"
|
15 |
|
16 |
+
#: admin.php:119
|
17 |
msgid ""
|
18 |
"iThemes Sync is active. <a class=\"ithemes-sync-notice-button\" href=\"%s"
|
19 |
"\">Manage Sync</a> <a class=\"ithemes-sync-notice-dismiss\" href=\"#\">×</a>"
|
20 |
msgstr ""
|
21 |
|
22 |
+
#: admin.php:133
|
23 |
msgid ""
|
24 |
"iThemes Sync is almost ready. <a class=\"ithemes-sync-notice-button\" href="
|
25 |
"\"%s\">Set Up Sync</a> <a class=\"ithemes-sync-notice-hide\" href=\"#\">×</a>"
|
26 |
msgstr ""
|
27 |
|
28 |
+
#: admin.php:148
|
29 |
msgid ""
|
30 |
"iThemes Sync will show for your user for the next %1$s. Click <a href=\"%2$s"
|
31 |
"\">here</a> to hide iThemes Sync again."
|
32 |
msgstr ""
|
33 |
|
34 |
+
#: admin.php:158
|
35 |
msgid "iThemes Sync is now hidden from your user again."
|
36 |
msgstr ""
|
37 |
|
38 |
+
#. #-#-#-#-# ithemes-sync.pot (iThemes Sync 2.0.9) #-#-#-#-#
|
39 |
#. Plugin Name of the plugin/theme
|
40 |
+
#: admin.php:169 admin.php:175 settings-page.php:268
|
41 |
msgid "iThemes Sync"
|
42 |
msgstr ""
|
43 |
|
44 |
+
#: admin.php:203 lib/updater/admin.php:181
|
45 |
msgid "Manage iThemes product licenses to receive automatic upgrade support"
|
46 |
msgstr ""
|
47 |
|
48 |
+
#: admin.php:203 lib/updater/admin.php:181
|
49 |
msgid "License"
|
50 |
msgstr ""
|
51 |
|
52 |
+
#: admin.php:244
|
53 |
+
msgid "Where we send your data"
|
54 |
+
msgstr ""
|
55 |
+
|
56 |
+
#: admin.php:245
|
57 |
+
msgid ""
|
58 |
+
"%s%sSuggested text:%s This web site uses a third party service to manage "
|
59 |
+
"administrative tasks. If you leave a comment, submit personal information "
|
60 |
+
"via a contact form, or otherwise exchange personal details with us, it is "
|
61 |
+
"possible that we may use this service to manage that data. Please visit the "
|
62 |
+
"%siThemes Privacy Policy%s for more information regarding the way they "
|
63 |
+
"handle their data.%s%s"
|
64 |
+
msgstr ""
|
65 |
+
|
66 |
+
#: client-dashboard.php:366
|
67 |
msgctxt "Welcome panel"
|
68 |
msgid "Welcome"
|
69 |
msgstr ""
|
load-translations.php
CHANGED
@@ -15,7 +15,7 @@ Version History
|
|
15 |
|
16 |
|
17 |
$ithemes_sync_plugin_dir = basename( $GLOBALS['ithemes_sync_path'] );
|
18 |
-
$ithemes_sync_locale = apply_filters( 'plugin_locale', get_locale(), '
|
19 |
|
20 |
-
load_textdomain( '
|
21 |
-
load_plugin_textdomain( '
|
15 |
|
16 |
|
17 |
$ithemes_sync_plugin_dir = basename( $GLOBALS['ithemes_sync_path'] );
|
18 |
+
$ithemes_sync_locale = apply_filters( 'plugin_locale', get_locale(), 'it-l10n-ithemes-sync' );
|
19 |
|
20 |
+
load_textdomain( 'it-l10n-ithemes-sync', WP_LANG_DIR . "/plugins/ithemes-sync/it-l10n-ithemes-sync-$ithemes_sync_locale.mo" );
|
21 |
+
load_plugin_textdomain( 'it-l10n-ithemes-sync', false, "$ithemes_sync_plugin_dir/lang/" );
|
load.php
CHANGED
@@ -141,14 +141,18 @@ function ithemes_sync_login() {
|
|
141 |
case 'addpage':
|
142 |
$path = 'post-new.php?post_type=page';
|
143 |
break;
|
|
|
|
|
|
|
|
|
144 |
default:
|
145 |
$path = '';
|
146 |
}
|
147 |
} else {
|
148 |
$path = '';
|
149 |
}
|
150 |
-
|
151 |
wp_redirect( admin_url( $path ) );
|
|
|
152 |
}
|
153 |
return false;
|
154 |
}
|
141 |
case 'addpage':
|
142 |
$path = 'post-new.php?post_type=page';
|
143 |
break;
|
144 |
+
case 'cd':
|
145 |
+
$path = '';
|
146 |
+
add_user_meta( $option['user_id'], 'it-sync-refresh-cd', true );
|
147 |
+
break;
|
148 |
default:
|
149 |
$path = '';
|
150 |
}
|
151 |
} else {
|
152 |
$path = '';
|
153 |
}
|
|
|
154 |
wp_redirect( admin_url( $path ) );
|
155 |
+
die();
|
156 |
}
|
157 |
return false;
|
158 |
}
|
notice-handler.php
CHANGED
@@ -86,7 +86,7 @@ class Ithemes_Sync_Notice_Handler {
|
|
86 |
return true;
|
87 |
}
|
88 |
|
89 |
-
return new WP_Error( 'unknown-response', __( 'The Sync server returned an unknown response.', '
|
90 |
}
|
91 |
|
92 |
public function get_urgent_notices() {
|
86 |
return true;
|
87 |
}
|
88 |
|
89 |
+
return new WP_Error( 'unknown-response', __( 'The Sync server returned an unknown response.', 'it-l10n-ithemes-sync' ) );
|
90 |
}
|
91 |
|
92 |
public function get_urgent_notices() {
|
notices.php
CHANGED
@@ -25,7 +25,7 @@ class Ithemes_Sync_Notices {
|
|
25 |
add_action( 'backupbuddy_run_remote_snapshot_response', array( $this, 'backupbuddy_run_remote_snapshot_response' ) );
|
26 |
|
27 |
/* iThemes Security */
|
28 |
-
add_action( '
|
29 |
}
|
30 |
}
|
31 |
|
@@ -43,12 +43,18 @@ class Ithemes_Sync_Notices {
|
|
43 |
}
|
44 |
}
|
45 |
|
46 |
-
function
|
47 |
-
if ( !empty( $data )
|
48 |
-
|
49 |
-
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
50 |
}
|
51 |
-
ithemes_sync_send_urgent_notice( 'ithemes-security', 'report', 'iThemes Security', 'iThemes Security', $data );
|
52 |
}
|
53 |
}
|
54 |
|
25 |
add_action( 'backupbuddy_run_remote_snapshot_response', array( $this, 'backupbuddy_run_remote_snapshot_response' ) );
|
26 |
|
27 |
/* iThemes Security */
|
28 |
+
add_action( 'itsec_log_add', array( $this, 'itsec_log_add' ), 10, 3 );
|
29 |
}
|
30 |
}
|
31 |
|
43 |
}
|
44 |
}
|
45 |
|
46 |
+
function itsec_log_add( $data, $id, $log_type ) {
|
47 |
+
if ( !empty( $data ) && is_array( $data ) ) {
|
48 |
+
switch( $data['type'] ) {
|
49 |
+
case 'notice':
|
50 |
+
ithemes_sync_send_urgent_notice( 'ithemes-security', 'report', 'iThemes Security', 'iThemes Security', $data );
|
51 |
+
break;
|
52 |
+
case 'debug':
|
53 |
+
case 'process-start':
|
54 |
+
case 'process-update':
|
55 |
+
case 'process-stop':
|
56 |
+
return;
|
57 |
}
|
|
|
58 |
}
|
59 |
}
|
60 |
|
readme.txt
CHANGED
@@ -2,8 +2,8 @@
|
|
2 |
Contributors: ithemes, layotte, blepoxp
|
3 |
Tags: manage multiple Sites, backup, security, migrate, SEO, manage updates, administration, update manager, reports, sync, google analytics, optimize, uptime, ithemes, customize dashboard, client sites, maintenance, management, google webmaster tools, reporting
|
4 |
Requires at least: 4.5
|
5 |
-
Tested up to: 4.9
|
6 |
-
Stable tag: 2.0.
|
7 |
License: GPLv3 or later
|
8 |
License URI: http://www.gnu.org/licenses/quick-guide-gplv3.html
|
9 |
|
@@ -86,6 +86,18 @@ Make steady, reliable income for WordPress maintenance with iThemes Sync Pro’s
|
|
86 |
|
87 |
== Changelog ==
|
88 |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
89 |
= 2.0.4 =
|
90 |
* Ignored Language Pack Updates when updating Core/Plugins/Themes, for now
|
91 |
|
2 |
Contributors: ithemes, layotte, blepoxp
|
3 |
Tags: manage multiple Sites, backup, security, migrate, SEO, manage updates, administration, update manager, reports, sync, google analytics, optimize, uptime, ithemes, customize dashboard, client sites, maintenance, management, google webmaster tools, reporting
|
4 |
Requires at least: 4.5
|
5 |
+
Tested up to: 4.9.6
|
6 |
+
Stable tag: 2.0.9
|
7 |
License: GPLv3 or later
|
8 |
License URI: http://www.gnu.org/licenses/quick-guide-gplv3.html
|
9 |
|
86 |
|
87 |
== Changelog ==
|
88 |
|
89 |
+
= 2.0.8 =
|
90 |
+
* Enhancement: Updating ITSEC Notifications to handle ITSEC's new notification logger
|
91 |
+
|
92 |
+
= 2.0.7 =
|
93 |
+
* Bug Fix: Fix redirect bug effecting Remote Login from Sync on some hosting providers.
|
94 |
+
|
95 |
+
= 2.0.6 =
|
96 |
+
* Enhancement: Add ability to filter Edit Page/Post Link in frontend Admin Bar
|
97 |
+
|
98 |
+
= 2.0.5 =
|
99 |
+
* Bug Fix: Fixing Multiple issues with Client Dashboard
|
100 |
+
|
101 |
= 2.0.4 =
|
102 |
* Ignored Language Pack Updates when updating Core/Plugins/Themes, for now
|
103 |
|
server.php
CHANGED
@@ -185,7 +185,7 @@ class Ithemes_Sync_Server {
|
|
185 |
$body = json_decode( $response['body'], true );
|
186 |
|
187 |
if ( ! is_array( $body ) ) {
|
188 |
-
return new WP_Error( 'ithemes-sync-server-unknown-response', __( 'An unrecognized server response format was received from the iThemes Sync server.', '
|
189 |
}
|
190 |
|
191 |
if ( ! empty( $body['error'] ) ) {
|
185 |
$body = json_decode( $response['body'], true );
|
186 |
|
187 |
if ( ! is_array( $body ) ) {
|
188 |
+
return new WP_Error( 'ithemes-sync-server-unknown-response', __( 'An unrecognized server response format was received from the iThemes Sync server.', 'it-l10n-ithemes-sync' ) );
|
189 |
}
|
190 |
|
191 |
if ( ! empty( $body['error'] ) ) {
|
settings-page.php
CHANGED
@@ -51,7 +51,7 @@ class Ithemes_Sync_Settings_Page {
|
|
51 |
$var = 'ithemes-updater-settings-page-script';
|
52 |
|
53 |
$translations = array(
|
54 |
-
'confirm_dialog_text' => __( 'Are you sure that you wish to unsync this user?', '
|
55 |
);
|
56 |
|
57 |
wp_enqueue_script( $var, "{$this->path_url}/js/settings-page.js", array( 'jquery' ) );
|
@@ -88,14 +88,14 @@ class Ithemes_Sync_Settings_Page {
|
|
88 |
$result = Ithemes_Sync_Server::authenticate( $data['username'], $data['password'] );
|
89 |
|
90 |
if ( is_wp_error( $result ) ) {
|
91 |
-
$heading = __( 'The user could not be synced.', '
|
92 |
|
93 |
$code = $result->get_error_code();
|
94 |
|
95 |
if ( 'http_request_failed' == $code )
|
96 |
-
$message = sprintf( __( '<p>The iThemes Sync server was unable to be contacted. WordPress returned the following error when trying to contact the server:</p><p>%1$s</p><p>If you continue to experience problems, please contact <a target="_blank" href="%2$s">iThemes support</a>.</p>', '
|
97 |
else if ( 'ithemes-sync-server-failed-request' == $code )
|
98 |
-
$message = sprintf( __( '<p>The iThemes Sync server was unable to process the request at this time. Please try again in a few minutes.</p><p>If you continue to experience problems, please contact <a target="_blank" href="%s">iThemes support</a>.</p>', '
|
99 |
else
|
100 |
$message = $result->get_error_message();
|
101 |
|
@@ -105,8 +105,8 @@ class Ithemes_Sync_Settings_Page {
|
|
105 |
}
|
106 |
|
107 |
if ( empty( $result['key'] ) ) {
|
108 |
-
$heading = __( 'The user could not be synced.', '
|
109 |
-
$message = __( 'The sync request failed due to a server communication error. The server sent a response that did not include a authentication key.', '
|
110 |
|
111 |
$this->add_error_message( $heading, $message );
|
112 |
|
@@ -114,8 +114,8 @@ class Ithemes_Sync_Settings_Page {
|
|
114 |
}
|
115 |
|
116 |
if ( empty( $result['user_id'] ) ) {
|
117 |
-
$heading = __( 'The user could not be synced.', '
|
118 |
-
$message = __( 'The sync request failed due to a server communication error. The server sent a response that did not include a user ID.', '
|
119 |
|
120 |
$this->add_error_message( $heading, $message );
|
121 |
|
@@ -126,7 +126,7 @@ class Ithemes_Sync_Settings_Page {
|
|
126 |
$add_result = $GLOBALS['ithemes-sync-settings']->add_authentication( $result['user_id'], $data['username'], $result['key'] );
|
127 |
|
128 |
if ( is_wp_error( $add_result ) ) {
|
129 |
-
$heading = __( 'The user could not be synced.', '
|
130 |
$message = $add_result->get_error_message();
|
131 |
|
132 |
$this->add_error_message( $heading, $message );
|
@@ -135,13 +135,13 @@ class Ithemes_Sync_Settings_Page {
|
|
135 |
}
|
136 |
|
137 |
|
138 |
-
$heading = __( 'Woohoo! Your site has been synced.', '
|
139 |
$messages = array();
|
140 |
|
141 |
if ( 0 == $result['quota']['available'] )
|
142 |
-
$messages[] = sprintf( __( 'Your user has now used all of the sites available to be added to Sync. More information can be found on the <a href="%s" target="_blank">iThemes membership panel</a>.', '
|
143 |
else
|
144 |
-
$messages[] = sprintf( _n( 'Your user can Sync 1 additional site.', 'Your user can sync %d additional sites.', $result['quota']['available'], '
|
145 |
|
146 |
$this->add_success_message( $heading, $messages );
|
147 |
}
|
@@ -157,7 +157,7 @@ class Ithemes_Sync_Settings_Page {
|
|
157 |
$result = Ithemes_Sync_Server::deauthenticate( $data['user'], $user_details['username'], $user_details['key'] );
|
158 |
|
159 |
if ( is_wp_error( $result ) && ( 'authentication' != $result->get_error_code() ) ) {
|
160 |
-
$heading = __( 'The user could not be unsynced.', '
|
161 |
$message = $result->get_error_message();
|
162 |
|
163 |
$this->add_error_message( $heading, $message );
|
@@ -169,7 +169,7 @@ class Ithemes_Sync_Settings_Page {
|
|
169 |
$result = $GLOBALS['ithemes-sync-settings']->remove_authentication( $data['user'], $user_details['username'] );
|
170 |
|
171 |
if ( is_wp_error( $result ) ) {
|
172 |
-
$heading = __( 'The user could not be unsynced.', '
|
173 |
$message = $result->get_error_message();
|
174 |
|
175 |
$this->add_error_message( $heading, $message );
|
@@ -178,7 +178,7 @@ class Ithemes_Sync_Settings_Page {
|
|
178 |
}
|
179 |
|
180 |
|
181 |
-
$heading = __( 'The user was successfully unsynced.', '
|
182 |
|
183 |
$this->add_success_message( $heading );
|
184 |
}
|
@@ -236,7 +236,7 @@ class Ithemes_Sync_Settings_Page {
|
|
236 |
|
237 |
$GLOBALS['ithemes-sync-settings']->update_options( $settings );
|
238 |
|
239 |
-
$this->messages[] = __( 'Settings saved', '
|
240 |
}
|
241 |
|
242 |
public function show_settings() {
|
@@ -263,9 +263,9 @@ class Ithemes_Sync_Settings_Page {
|
|
263 |
?>
|
264 |
<div class="ithemes-sync-wrapper wrap">
|
265 |
<?php if ( empty( $this->options['authentications'] ) ) : ?>
|
266 |
-
<h2><?php _e( 'Sync This Site', '
|
267 |
<?php else : ?>
|
268 |
-
<h2><?php _e( 'iThemes Sync', '
|
269 |
<?php endif; ?>
|
270 |
|
271 |
|
@@ -273,16 +273,16 @@ class Ithemes_Sync_Settings_Page {
|
|
273 |
|
274 |
|
275 |
<?php if ( ! empty( $this->options['authentications'] ) ) : ?>
|
276 |
-
<a class="ithemes-sync-button" href="<?php echo $this->sync_dashboard_url; ?>" target="_blank"><?php _e( 'Go Manage Your Synced Sites', '
|
277 |
|
278 |
<div class="ithemes-sync-section ithemes-sync-manage-users">
|
279 |
-
<h3><?php _e( 'Manage Synced Users', '
|
280 |
|
281 |
-
<p><?php _e( 'Sync allows you to sync your site with multiple users.<br>View the list of synced users below, unsync users if needed, or add additional users below.', '
|
282 |
|
283 |
<?php if ( ! empty( $valid_users ) ) : ?>
|
284 |
<div class="ithemes-sync-users ithemes-sync-valid-users">
|
285 |
-
<h4><?php _e( 'Synced Users', '
|
286 |
|
287 |
<ul>
|
288 |
<?php foreach ( $valid_users as $user_id ) : ?>
|
@@ -297,9 +297,9 @@ class Ithemes_Sync_Settings_Page {
|
|
297 |
|
298 |
<?php if ( ! empty( $invalid_users ) ) : ?>
|
299 |
<div class="ithemes-sync-users ithemes-sync-invalid-users">
|
300 |
-
<h4><?php _e( 'Invalid Users', '
|
301 |
|
302 |
-
<p><?php _e( 'The following users were not recognized by the server. Unsync them and resync them again to fix this error.', '
|
303 |
|
304 |
<ul>
|
305 |
<?php foreach ( $invalid_users as $user_id ) : ?>
|
@@ -317,20 +317,20 @@ class Ithemes_Sync_Settings_Page {
|
|
317 |
|
318 |
<div class="ithemes-sync-section ithemes-sync-authorize">
|
319 |
<?php if ( empty( $this->options['authentications'] ) ) : ?>
|
320 |
-
<p><?php _e( 'Enter your iThemes username & password to sync this site.', '
|
321 |
<?php else : ?>
|
322 |
-
<h3><?php _e( 'Add Users', '
|
323 |
-
<p><?php _e( 'Add additional users if more than one person will be managing updates for this site.<br>To sync an additional user, enter their iThemes username and password below.', '
|
324 |
<?php endif; ?>
|
325 |
|
326 |
<form id="ithemes-sync-authenticate" enctype="multipart/form-data" method="post" action="<?php echo $this->self_url; ?>">
|
327 |
-
<label for="username"><?php _e( 'Username', '
|
328 |
<input type="text" id="username" name="username" value="<?php if ( $this->had_error ) echo esc_attr( $post_data['username'] ); ?>">
|
329 |
|
330 |
-
<label for="password"><?php _e( 'Password', '
|
331 |
<input type="password" id="password" name="password" value="<?php if ( $this->had_error ) echo esc_attr( $post_data['password'] ); ?>">
|
332 |
|
333 |
-
<input type="submit" id="submit" value="<?php _e( 'Sync', '
|
334 |
<input type="hidden" name="action" value="authenticate">
|
335 |
|
336 |
<?php wp_nonce_field( 'authenticate-user' ); ?>
|
51 |
$var = 'ithemes-updater-settings-page-script';
|
52 |
|
53 |
$translations = array(
|
54 |
+
'confirm_dialog_text' => __( 'Are you sure that you wish to unsync this user?', 'it-l10n-ithemes-sync' ),
|
55 |
);
|
56 |
|
57 |
wp_enqueue_script( $var, "{$this->path_url}/js/settings-page.js", array( 'jquery' ) );
|
88 |
$result = Ithemes_Sync_Server::authenticate( $data['username'], $data['password'] );
|
89 |
|
90 |
if ( is_wp_error( $result ) ) {
|
91 |
+
$heading = __( 'The user could not be synced.', 'it-l10n-ithemes-sync' );
|
92 |
|
93 |
$code = $result->get_error_code();
|
94 |
|
95 |
if ( 'http_request_failed' == $code )
|
96 |
+
$message = sprintf( __( '<p>The iThemes Sync server was unable to be contacted. WordPress returned the following error when trying to contact the server:</p><p>%1$s</p><p>If you continue to experience problems, please contact <a target="_blank" href="%2$s">iThemes support</a>.</p>', 'it-l10n-ithemes-sync' ), $result->get_error_message(), 'http://ithemes.com/support/' );
|
97 |
else if ( 'ithemes-sync-server-failed-request' == $code )
|
98 |
+
$message = sprintf( __( '<p>The iThemes Sync server was unable to process the request at this time. Please try again in a few minutes.</p><p>If you continue to experience problems, please contact <a target="_blank" href="%s">iThemes support</a>.</p>', 'it-l10n-ithemes-sync' ), 'http://ithemes.com/support/' );
|
99 |
else
|
100 |
$message = $result->get_error_message();
|
101 |
|
105 |
}
|
106 |
|
107 |
if ( empty( $result['key'] ) ) {
|
108 |
+
$heading = __( 'The user could not be synced.', 'it-l10n-ithemes-sync' );
|
109 |
+
$message = __( 'The sync request failed due to a server communication error. The server sent a response that did not include a authentication key.', 'it-l10n-ithemes-sync' );
|
110 |
|
111 |
$this->add_error_message( $heading, $message );
|
112 |
|
114 |
}
|
115 |
|
116 |
if ( empty( $result['user_id'] ) ) {
|
117 |
+
$heading = __( 'The user could not be synced.', 'it-l10n-ithemes-sync' );
|
118 |
+
$message = __( 'The sync request failed due to a server communication error. The server sent a response that did not include a user ID.', 'it-l10n-ithemes-sync' );
|
119 |
|
120 |
$this->add_error_message( $heading, $message );
|
121 |
|
126 |
$add_result = $GLOBALS['ithemes-sync-settings']->add_authentication( $result['user_id'], $data['username'], $result['key'] );
|
127 |
|
128 |
if ( is_wp_error( $add_result ) ) {
|
129 |
+
$heading = __( 'The user could not be synced.', 'it-l10n-ithemes-sync' );
|
130 |
$message = $add_result->get_error_message();
|
131 |
|
132 |
$this->add_error_message( $heading, $message );
|
135 |
}
|
136 |
|
137 |
|
138 |
+
$heading = __( 'Woohoo! Your site has been synced.', 'it-l10n-ithemes-sync' );
|
139 |
$messages = array();
|
140 |
|
141 |
if ( 0 == $result['quota']['available'] )
|
142 |
+
$messages[] = sprintf( __( 'Your user has now used all of the sites available to be added to Sync. More information can be found on the <a href="%s" target="_blank">iThemes membership panel</a>.', 'it-l10n-ithemes-sync' ), $this->sync_dashboard_url );
|
143 |
else
|
144 |
+
$messages[] = sprintf( _n( 'Your user can Sync 1 additional site.', 'Your user can sync %d additional sites.', $result['quota']['available'], 'it-l10n-ithemes-sync' ), $result['quota']['available'] );
|
145 |
|
146 |
$this->add_success_message( $heading, $messages );
|
147 |
}
|
157 |
$result = Ithemes_Sync_Server::deauthenticate( $data['user'], $user_details['username'], $user_details['key'] );
|
158 |
|
159 |
if ( is_wp_error( $result ) && ( 'authentication' != $result->get_error_code() ) ) {
|
160 |
+
$heading = __( 'The user could not be unsynced.', 'it-l10n-ithemes-sync' );
|
161 |
$message = $result->get_error_message();
|
162 |
|
163 |
$this->add_error_message( $heading, $message );
|
169 |
$result = $GLOBALS['ithemes-sync-settings']->remove_authentication( $data['user'], $user_details['username'] );
|
170 |
|
171 |
if ( is_wp_error( $result ) ) {
|
172 |
+
$heading = __( 'The user could not be unsynced.', 'it-l10n-ithemes-sync' );
|
173 |
$message = $result->get_error_message();
|
174 |
|
175 |
$this->add_error_message( $heading, $message );
|
178 |
}
|
179 |
|
180 |
|
181 |
+
$heading = __( 'The user was successfully unsynced.', 'it-l10n-ithemes-sync' );
|
182 |
|
183 |
$this->add_success_message( $heading );
|
184 |
}
|
236 |
|
237 |
$GLOBALS['ithemes-sync-settings']->update_options( $settings );
|
238 |
|
239 |
+
$this->messages[] = __( 'Settings saved', 'it-l10n-ithemes-sync' );
|
240 |
}
|
241 |
|
242 |
public function show_settings() {
|
263 |
?>
|
264 |
<div class="ithemes-sync-wrapper wrap">
|
265 |
<?php if ( empty( $this->options['authentications'] ) ) : ?>
|
266 |
+
<h2><?php _e( 'Sync This Site', 'it-l10n-ithemes-sync' ); ?></h2>
|
267 |
<?php else : ?>
|
268 |
+
<h2><?php _e( 'iThemes Sync', 'it-l10n-ithemes-sync' ); ?></h2>
|
269 |
<?php endif; ?>
|
270 |
|
271 |
|
273 |
|
274 |
|
275 |
<?php if ( ! empty( $this->options['authentications'] ) ) : ?>
|
276 |
+
<a class="ithemes-sync-button" href="<?php echo $this->sync_dashboard_url; ?>" target="_blank"><?php _e( 'Go Manage Your Synced Sites', 'it-l10n-ithemes-sync' ); ?></a>
|
277 |
|
278 |
<div class="ithemes-sync-section ithemes-sync-manage-users">
|
279 |
+
<h3><?php _e( 'Manage Synced Users', 'it-l10n-ithemes-sync' ); ?></h3>
|
280 |
|
281 |
+
<p><?php _e( 'Sync allows you to sync your site with multiple users.<br>View the list of synced users below, unsync users if needed, or add additional users below.', 'it-l10n-ithemes-sync' ); ?></p>
|
282 |
|
283 |
<?php if ( ! empty( $valid_users ) ) : ?>
|
284 |
<div class="ithemes-sync-users ithemes-sync-valid-users">
|
285 |
+
<h4><?php _e( 'Synced Users', 'it-l10n-ithemes-sync' ); ?></h4>
|
286 |
|
287 |
<ul>
|
288 |
<?php foreach ( $valid_users as $user_id ) : ?>
|
297 |
|
298 |
<?php if ( ! empty( $invalid_users ) ) : ?>
|
299 |
<div class="ithemes-sync-users ithemes-sync-invalid-users">
|
300 |
+
<h4><?php _e( 'Invalid Users', 'it-l10n-ithemes-sync' ); ?></h4>
|
301 |
|
302 |
+
<p><?php _e( 'The following users were not recognized by the server. Unsync them and resync them again to fix this error.', 'it-l10n-ithemes-sync' ); ?></p>
|
303 |
|
304 |
<ul>
|
305 |
<?php foreach ( $invalid_users as $user_id ) : ?>
|
317 |
|
318 |
<div class="ithemes-sync-section ithemes-sync-authorize">
|
319 |
<?php if ( empty( $this->options['authentications'] ) ) : ?>
|
320 |
+
<p><?php _e( 'Enter your iThemes username & password to sync this site.', 'it-l10n-ithemes-sync' ); ?></p>
|
321 |
<?php else : ?>
|
322 |
+
<h3><?php _e( 'Add Users', 'it-l10n-ithemes-sync' ); ?></h3>
|
323 |
+
<p><?php _e( 'Add additional users if more than one person will be managing updates for this site.<br>To sync an additional user, enter their iThemes username and password below.', 'it-l10n-ithemes-sync' ); ?></p>
|
324 |
<?php endif; ?>
|
325 |
|
326 |
<form id="ithemes-sync-authenticate" enctype="multipart/form-data" method="post" action="<?php echo $this->self_url; ?>">
|
327 |
+
<label for="username"><?php _e( 'Username', 'it-l10n-ithemes-sync' ); ?></label><br>
|
328 |
<input type="text" id="username" name="username" value="<?php if ( $this->had_error ) echo esc_attr( $post_data['username'] ); ?>">
|
329 |
|
330 |
+
<label for="password"><?php _e( 'Password', 'it-l10n-ithemes-sync' ); ?></label><br>
|
331 |
<input type="password" id="password" name="password" value="<?php if ( $this->had_error ) echo esc_attr( $post_data['password'] ); ?>">
|
332 |
|
333 |
+
<input type="submit" id="submit" value="<?php _e( 'Sync', 'it-l10n-ithemes-sync' ); ?>">
|
334 |
<input type="hidden" name="action" value="authenticate">
|
335 |
|
336 |
<?php wp_nonce_field( 'authenticate-user' ); ?>
|
settings.php
CHANGED
@@ -130,7 +130,7 @@ class Ithemes_Sync_Settings {
|
|
130 |
}
|
131 |
|
132 |
if ( ! isset( $this->options['authentications'][$user_id] ) ) {
|
133 |
-
return new WP_Error( 'unauthenticated-user', __( 'The user is not authenticated. Could not remove authentication for the user.', '
|
134 |
}
|
135 |
|
136 |
|
@@ -196,7 +196,7 @@ class Ithemes_Sync_Settings {
|
|
196 |
$authentication = $this->get_authentication_details( $user_id );
|
197 |
|
198 |
if ( empty( $authentication ) ) {
|
199 |
-
return new WP_Error( 'ithemes-sync-invalid-user', __( 'A valid user was unable to be found. A valid user is required in order to do a successful ping.', '
|
200 |
}
|
201 |
|
202 |
|
130 |
}
|
131 |
|
132 |
if ( ! isset( $this->options['authentications'][$user_id] ) ) {
|
133 |
+
return new WP_Error( 'unauthenticated-user', __( 'The user is not authenticated. Could not remove authentication for the user.', 'it-l10n-ithemes-sync' ) );
|
134 |
}
|
135 |
|
136 |
|
196 |
$authentication = $this->get_authentication_details( $user_id );
|
197 |
|
198 |
if ( empty( $authentication ) ) {
|
199 |
+
return new WP_Error( 'ithemes-sync-invalid-user', __( 'A valid user was unable to be found. A valid user is required in order to do a successful ping.', 'it-l10n-ithemes-sync' ) );
|
200 |
}
|
201 |
|
202 |
|
social.php
CHANGED
@@ -83,7 +83,7 @@ class Ithemes_Sync_Social {
|
|
83 |
?>
|
84 |
<div id="ithemes-social" class="misc-pub-section">
|
85 |
<div class="ithemes-social-header">
|
86 |
-
<h3><?php _e('Social', '
|
87 |
</div>
|
88 |
<?php
|
89 |
if ( 'publish' === $post->post_status ) {
|
@@ -99,7 +99,7 @@ class Ithemes_Sync_Social {
|
|
99 |
|
100 |
private function _post_submitbox_content_published() {
|
101 |
?>
|
102 |
-
<p class="it-social-notice"><?php _e('This post is already published.', '
|
103 |
<?php
|
104 |
}
|
105 |
|
@@ -116,11 +116,11 @@ class Ithemes_Sync_Social {
|
|
116 |
<li class="test">
|
117 |
<input type="checkbox" name="ithemes-social[twitter][<?php echo esc_attr( $twitter_id ) ?>][send]" id="ithemes-social-twitter-<?php echo esc_attr( $twitter_id ) ?>" value="true"<?php echo $checked; ?>>
|
118 |
<label for="ithemes-social-twitter-<?php echo esc_attr( $twitter_id ) ?>">Twitter: <em>@<?php echo esc_html( $twitter_name ) ?></em></label>
|
119 |
-
<a class="ithemes-social-edit-content"><?php _e('Edit', '
|
120 |
<div class="ithemes-social-account-content hidden">
|
121 |
<textarea class="widefat" name="ithemes-social[twitter][<?php echo esc_attr( $twitter_id ) ?>][content]"><?php echo esc_textarea( $default_content['twitter'] ); ?></textarea>
|
122 |
<div class="ithemes-social-template-tags">
|
123 |
-
<?php _e('Template Tags', '
|
124 |
{post_title} {post_url} {post_author}
|
125 |
</div>
|
126 |
<div class="ithemes-social-char-count"></div>
|
83 |
?>
|
84 |
<div id="ithemes-social" class="misc-pub-section">
|
85 |
<div class="ithemes-social-header">
|
86 |
+
<h3><?php _e('Social', 'it-l10n-ithemes-sync'); ?></h3>
|
87 |
</div>
|
88 |
<?php
|
89 |
if ( 'publish' === $post->post_status ) {
|
99 |
|
100 |
private function _post_submitbox_content_published() {
|
101 |
?>
|
102 |
+
<p class="it-social-notice"><?php _e('This post is already published.', 'it-l10n-ithemes-sync'); ?></p>
|
103 |
<?php
|
104 |
}
|
105 |
|
116 |
<li class="test">
|
117 |
<input type="checkbox" name="ithemes-social[twitter][<?php echo esc_attr( $twitter_id ) ?>][send]" id="ithemes-social-twitter-<?php echo esc_attr( $twitter_id ) ?>" value="true"<?php echo $checked; ?>>
|
118 |
<label for="ithemes-social-twitter-<?php echo esc_attr( $twitter_id ) ?>">Twitter: <em>@<?php echo esc_html( $twitter_name ) ?></em></label>
|
119 |
+
<a class="ithemes-social-edit-content"><?php _e('Edit', 'it-l10n-ithemes-sync'); ?></a>
|
120 |
<div class="ithemes-social-account-content hidden">
|
121 |
<textarea class="widefat" name="ithemes-social[twitter][<?php echo esc_attr( $twitter_id ) ?>][content]"><?php echo esc_textarea( $default_content['twitter'] ); ?></textarea>
|
122 |
<div class="ithemes-social-template-tags">
|
123 |
+
<?php _e('Template Tags', 'it-l10n-ithemes-sync'); ?>: <br />
|
124 |
{post_title} {post_url} {post_author}
|
125 |
</div>
|
126 |
<div class="ithemes-social-char-count"></div>
|
verbs/db-optimization.php
CHANGED
@@ -94,7 +94,7 @@ class Ithemes_Sync_Verb_DB_Optimization extends Ithemes_Sync_Verb {
|
|
94 |
|
95 |
return array(
|
96 |
'title' => __( 'Delete Trackback URLs' ),
|
97 |
-
'description' => esc_attr__( 'Deletes URLs added to the "pinged" and "to_ping" columns in your posts table.', '
|
98 |
'action' => 'delete-trackback-urls',
|
99 |
'applies_to' => empty( $applies ) ? '0 items' : $applies . ' items',
|
100 |
'has_items' => ! empty( $applies ),
|
@@ -379,7 +379,7 @@ class Ithemes_Sync_Verb_DB_Optimization extends Ithemes_Sync_Verb {
|
|
379 |
|
380 |
|
381 |
private function get_last_run( $optimization_slug ) {
|
382 |
-
return empty( $this->optimize_options[$optimization_slug]['last_run'] ) ? __( 'Never', '
|
383 |
}
|
384 |
|
385 |
private function update_last_run_var( $optimization_slug ) {
|
94 |
|
95 |
return array(
|
96 |
'title' => __( 'Delete Trackback URLs' ),
|
97 |
+
'description' => esc_attr__( 'Deletes URLs added to the "pinged" and "to_ping" columns in your posts table.', 'it-l10n-ithemes-sync' ),
|
98 |
'action' => 'delete-trackback-urls',
|
99 |
'applies_to' => empty( $applies ) ? '0 items' : $applies . ' items',
|
100 |
'has_items' => ! empty( $applies ),
|
379 |
|
380 |
|
381 |
private function get_last_run( $optimization_slug ) {
|
382 |
+
return empty( $this->optimize_options[$optimization_slug]['last_run'] ) ? __( 'Never', 'it-l10n-ithemes-sync' ) : $this->optimize_options[$optimization_slug]['last_run'];
|
383 |
}
|
384 |
|
385 |
private function update_last_run_var( $optimization_slug ) {
|