iThemes Sync - Version 2.0.9

Version Description

Download this release

Release Info

Developer layotte
Plugin Icon 128x128 iThemes Sync
Version 2.0.9
Comparing to
See all releases

Code changes from version 2.0.4 to 2.0.9

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>', 'LION' ), $url ); ?>
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>', 'LION' ), $url ); ?>
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.', 'LION' ), $time_diff, $url ); ?></p>
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.', 'LION' ); ?></p>
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', '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,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', 'LION' ), __( 'License', 'LION' ) );
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( get_current_user_id(), 'ithemes-sync-client-dashboard', true ) ) {
19
- if ( ! get_user_meta( get_current_user_id(), 'ithemes-sync-client-dashboard-no-css', true ) ) {
 
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( get_current_user_id(), 'ithemes-sync-suppress-admin-notices', true ) ) {
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', 'LION' ) . '" href="' . $url . '">Duplicate</a>';
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.4
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.', 'LION' ), $active_plugin_path, $this_plugin_path );
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) 2017 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.3\n"
6
  "Report-Msgid-Bugs-To: http://ithemes.com/support/\n"
7
- "POT-Creation-Date: 2017-09-26 14:04:28+00:00\n"
8
- "PO-Revision-Date: 2017-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,43 +13,57 @@ msgstr ""
13
  "Last-Translator: FULL NAME <EMAIL@ADDRESS>\n"
14
  "Language-Team: LANGUAGE <LL@li.org>\n"
15
 
16
- #: admin.php:118
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:132
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:147
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:157
35
  msgid "iThemes Sync is now hidden from your user again."
36
  msgstr ""
37
 
38
- #. #-#-#-#-# ithemes-sync.pot (iThemes Sync 2.0.3) #-#-#-#-#
39
  #. Plugin Name of the plugin/theme
40
- #: admin.php:168 admin.php:174 settings-page.php:268
41
  msgid "iThemes Sync"
42
  msgstr ""
43
 
44
- #: admin.php:202 lib/updater/admin.php:181
45
  msgid "Manage iThemes product licenses to receive automatic upgrade support"
46
  msgstr ""
47
 
48
- #: admin.php:202 lib/updater/admin.php:181
49
  msgid "License"
50
  msgstr ""
51
 
52
- #: client-dashboard.php:350
 
 
 
 
 
 
 
 
 
 
 
 
 
 
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(), '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/" );
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.', 'LION' ) );
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( 'itsec_log_event', array( $this, 'itsec_log_event' ), 10, 8 );
29
  }
30
  }
31
 
@@ -43,12 +43,18 @@ class Ithemes_Sync_Notices {
43
  }
44
  }
45
 
46
- function itsec_log_event( $module, $priority, $data, $host, $username, $user, $url, $referrer ) {
47
- if ( !empty( $data ) && is_array( $data ) ) {
48
- if ( isset( $data['query_string'] ) && empty( $data['query_string'] ) ) {
49
- return;
 
 
 
 
 
 
 
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.4
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.', 'LION' ) );
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?', 'LION' ),
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.', '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,8 +105,8 @@ class Ithemes_Sync_Settings_Page {
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,8 +114,8 @@ class Ithemes_Sync_Settings_Page {
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,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.', 'LION' );
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.', '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,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.', 'LION' );
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.', 'LION' );
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.', 'LION' );
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', 'LION' );
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', 'LION' ); ?></h2>
267
  <?php else : ?>
268
- <h2><?php _e( 'iThemes Sync', 'LION' ); ?></h2>
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', '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,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', '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,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.', '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' ); ?>
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.', 'LION' ) );
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.', 'LION' ) );
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', 'LION'); ?></h3>
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.', 'LION'); ?></p>
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', '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>
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.', 'LION' ),
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', 'LION' ) : $this->optimize_options[$optimization_slug]['last_run'];
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 ) {