Version Description
- Ignored Language Pack Updates when updating Core/Plugins/Themes, for now
Download this release
Release Info
Developer | layotte |
Plugin | iThemes Sync |
Version | 2.0.4 |
Comparing to | |
See all releases |
Code changes from version 2.0.3 to 2.0.4
- admin.php +7 -7
- duplicator.php +1 -1
- history.txt +2 -0
- images/sync-icon.png +0 -0
- init.php +2 -2
- load-translations.php +3 -3
- notice-handler.php +1 -1
- readme.txt +5 -2
- server.php +1 -1
- settings-page.php +30 -30
- settings.php +2 -2
- social.php +4 -4
- verbs/db-optimization.php +2 -2
- verbs/do-update.php +7 -2
admin.php
CHANGED
@@ -115,7 +115,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 +129,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 +144,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 +154,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 +165,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 +199,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 ) {
|
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>', 'LION' ), $url ); ?>
|
119 |
</div>
|
120 |
<?php
|
121 |
|
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>', 'LION' ), $url ); ?>
|
133 |
</div>
|
134 |
<?php
|
135 |
|
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.', 'LION' ), $time_diff, $url ); ?></p>
|
148 |
</div>
|
149 |
<?php
|
150 |
|
154 |
|
155 |
?>
|
156 |
<div class="updated">
|
157 |
+
<p><?php _e( 'iThemes Sync is now hidden from your user again.', 'LION' ); ?></p>
|
158 |
</div>
|
159 |
<?php
|
160 |
|
165 |
}
|
166 |
|
167 |
public function add_admin_pages() {
|
168 |
+
$this->page_ref = add_options_page( __( 'iThemes Sync', 'LION' ), __( 'iThemes Sync', 'LION' ), 'manage_options', $this->page_name, array( $this, 'settings_index' ) );
|
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', 'LION' ), __( 'iThemes Sync', 'LION' ), 'manage_options', $this->page_name, array( $this, 'settings_index' ) );
|
175 |
|
176 |
add_action( "load-{$this->page_ref}", array( $this, 'load_settings_page' ) );
|
177 |
}
|
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', 'LION' ), __( 'License', 'LION' ) );
|
203 |
}
|
204 |
|
205 |
public function filter_plugin_action_links( $actions, $plugin_file, $plugin_data, $context ) {
|
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', 'LION' ) . '" href="' . $url . '">Duplicate</a>';
|
32 |
|
33 |
return $actions;
|
34 |
}
|
history.txt
CHANGED
@@ -186,3 +186,5 @@
|
|
186 |
Bug Fix: Adding code to get-authentication-token verb to set the scheme to https by default if it should be
|
187 |
2.0.3 - 2017-09-26 - Glenn Ansley
|
188 |
Improvement: Refactored verbs to improve add-site function from Sync Dashboard.
|
|
|
|
186 |
Bug Fix: Adding code to get-authentication-token verb to set the scheme to https by default if it should be
|
187 |
2.0.3 - 2017-09-26 - Glenn Ansley
|
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
|
images/sync-icon.png
ADDED
Binary file
|
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.4
|
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.', 'LION' ), $active_plugin_path, $this_plugin_path );
|
20 |
$function .= '</p></div>\';';
|
21 |
|
22 |
$function_ref = create_function( '', $function );
|
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(), 'LION' );
|
19 |
|
20 |
+
load_textdomain( 'LION', WP_LANG_DIR . "/plugins/ithemes-sync/it-l10n-ithemes-sync-$ithemes_sync_locale.mo" );
|
21 |
+
load_plugin_textdomain( 'LION', false, "$ithemes_sync_plugin_dir/lang/" );
|
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.', 'LION' ) );
|
90 |
}
|
91 |
|
92 |
public function get_urgent_notices() {
|
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.
|
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,9 @@ Make steady, reliable income for WordPress maintenance with iThemes Sync Pro’s
|
|
86 |
|
87 |
== Changelog ==
|
88 |
|
|
|
|
|
|
|
89 |
= 2.0.3 =
|
90 |
* Refactored verbs to improve add-site function from Sync Dashboard
|
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 |
+
Stable tag: 2.0.4
|
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.4 =
|
90 |
+
* Ignored Language Pack Updates when updating Core/Plugins/Themes, for now
|
91 |
+
|
92 |
= 2.0.3 =
|
93 |
* Refactored verbs to improve add-site function from Sync Dashboard
|
94 |
|
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.', 'LION' ) );
|
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?', 'LION' ),
|
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.', 'LION' );
|
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>', 'LION' ), $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>', 'LION' ), '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.', 'LION' );
|
109 |
+
$message = __( 'The sync request failed due to a server communication error. The server sent a response that did not include a authentication key.', 'LION' );
|
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.', 'LION' );
|
118 |
+
$message = __( 'The sync request failed due to a server communication error. The server sent a response that did not include a user ID.', 'LION' );
|
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.', 'LION' );
|
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.', 'LION' );
|
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>.', 'LION' ), $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'], 'LION' ), $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.', 'LION' );
|
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.', 'LION' );
|
173 |
$message = $result->get_error_message();
|
174 |
|
175 |
$this->add_error_message( $heading, $message );
|
178 |
}
|
179 |
|
180 |
|
181 |
+
$heading = __( 'The user was successfully unsynced.', 'LION' );
|
182 |
|
183 |
$this->add_success_message( $heading );
|
184 |
}
|
236 |
|
237 |
$GLOBALS['ithemes-sync-settings']->update_options( $settings );
|
238 |
|
239 |
+
$this->messages[] = __( 'Settings saved', 'LION' );
|
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', 'LION' ); ?></h2>
|
267 |
<?php else : ?>
|
268 |
+
<h2><?php _e( 'iThemes Sync', 'LION' ); ?></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', 'LION' ); ?></a>
|
277 |
|
278 |
<div class="ithemes-sync-section ithemes-sync-manage-users">
|
279 |
+
<h3><?php _e( 'Manage Synced Users', 'LION' ); ?></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.', 'LION' ); ?></p>
|
282 |
|
283 |
<?php if ( ! empty( $valid_users ) ) : ?>
|
284 |
<div class="ithemes-sync-users ithemes-sync-valid-users">
|
285 |
+
<h4><?php _e( 'Synced Users', 'LION' ); ?></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', 'LION' ); ?></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.', 'LION' ); ?></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.', 'LION' ); ?></p>
|
321 |
<?php else : ?>
|
322 |
+
<h3><?php _e( 'Add Users', 'LION' ); ?></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.', 'LION' ); ?></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', 'LION' ); ?></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', 'LION' ); ?></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', 'LION' ); ?>">
|
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.', 'LION' ) );
|
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.', 'LION' ) );
|
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', 'LION'); ?></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.', 'LION'); ?></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', 'LION'); ?></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', 'LION'); ?>: <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.', 'LION' ),
|
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', 'LION' ) : $this->optimize_options[$optimization_slug]['last_run'];
|
383 |
}
|
384 |
|
385 |
private function update_last_run_var( $optimization_slug ) {
|
verbs/do-update.php
CHANGED
@@ -39,8 +39,9 @@ class Ithemes_Sync_Verb_Do_Update extends Ithemes_Sync_Verb {
|
|
39 |
|
40 |
|
41 |
$this->original_update_details = Ithemes_Sync_Functions::get_update_details( array( 'verbose' => true, 'force_refresh' => true ) );
|
42 |
-
|
43 |
-
|
|
|
44 |
$response = array();
|
45 |
|
46 |
if ( ! empty( $arguments['plugin'] ) ) {
|
@@ -57,6 +58,10 @@ class Ithemes_Sync_Verb_Do_Update extends Ithemes_Sync_Verb {
|
|
57 |
return $response;
|
58 |
}
|
59 |
|
|
|
|
|
|
|
|
|
60 |
public function do_core_upgrade( $params ) {
|
61 |
$required_fields = array(
|
62 |
'upgrade_id',
|
39 |
|
40 |
|
41 |
$this->original_update_details = Ithemes_Sync_Functions::get_update_details( array( 'verbose' => true, 'force_refresh' => true ) );
|
42 |
+
|
43 |
+
add_action( 'upgrader_process_complete', array( $this, 'disable_language_pack_upgrades' ), 5 );
|
44 |
+
|
45 |
$response = array();
|
46 |
|
47 |
if ( ! empty( $arguments['plugin'] ) ) {
|
58 |
return $response;
|
59 |
}
|
60 |
|
61 |
+
public function disable_language_pack_upgrades() {
|
62 |
+
remove_action( 'upgrader_process_complete', array( 'Language_Pack_Upgrader', 'async_upgrade' ), 20 );
|
63 |
+
}
|
64 |
+
|
65 |
public function do_core_upgrade( $params ) {
|
66 |
$required_fields = array(
|
67 |
'upgrade_id',
|