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 ) {