PostBox.php
21.4 KB
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
189
190
191
192
193
194
195
196
197
198
199
200
201
202
203
204
205
206
207
208
209
210
211
212
213
214
215
216
217
218
219
220
221
222
223
224
225
226
227
228
229
230
231
232
233
234
235
236
237
238
239
240
241
242
243
244
245
246
247
248
249
<?php
class B2S_PostBox {
private $b2sSiteUrl;
private $postLang;
private $userOption;
public function __construct() {
$this->b2sSiteUrl = get_option('siteurl') . ((substr(get_option('siteurl'), -1, 1) == '/') ? '' : '/');
$this->postLang = strtolower(substr(get_locale(), 0, 2));
$this->userOption = new B2S_Options(B2S_PLUGIN_BLOG_USER_ID);
}
public function getPostBox($postId = 0, $postType = 'post', $postStatus = '') {
$isChecked = "";
$lastPost = "";
$autoPostOption = $this->userOption->_getOption('auto_post');
$optionUserTimeZone = $this->userOption->_getOption('user_time_zone');
$userTimeZone = ($optionUserTimeZone !== false) ? $optionUserTimeZone : get_option('timezone_string');
$userTimeZoneOffset = (empty($userTimeZone)) ? get_option('gmt_offset') : B2S_Util::getOffsetToUtcByTimeZone($userTimeZone);
$selectedProfileID = get_option('B2S_PLUGIN_SAVE_META_BOX_AUTO_SHARE_PROFILE_USER_' . B2S_PLUGIN_BLOG_USER_ID);
$b2sHeartbeatFaqLink = '<a target="_blank" href="' . esc_url(B2S_Tools::getSupportLink('system')) . '">' . esc_html__('Please see FAQ', 'blog2social') . '</a>';
$metaSettings = get_option('B2S_PLUGIN_GENERAL_OPTIONS');
$autoPostImport = false;
if (B2S_PLUGIN_USER_VERSION > 0) {
if ($postId > 0) {
global $wpdb;
$lastAutopost = $wpdb->get_results($wpdb->prepare("SELECT publish_date FROM {$wpdb->prefix}b2s_posts WHERE post_id= %d AND blog_user_id= %d AND sched_type = 3 ORDER BY publish_date DESC LIMIT 1", $postId, B2S_PLUGIN_BLOG_USER_ID));
if (!empty($lastAutopost) && isset($lastAutopost[0]) && !empty($lastAutopost[0]->publish_date) && $lastAutopost[0]->publish_date != '0000-00-00 00:00:00') {
$lastPost = '<b>' . esc_html__('last auto-post:', 'blog2social') . '</b> ' . esc_html(B2S_Util::getCustomDateFormat($lastAutopost[0]->publish_date, substr(B2S_LANGUAGE, 0, 2))) . '<br>';
}
}
if ($autoPostOption !== false) {
$state = ($postId == 0) ? 'publish' : (($postStatus != '' && ($postStatus == 'publish' || $postStatus == 'future')) ? 'update' : '');
if (is_array($autoPostOption) && isset($autoPostOption[$state])) {
if (in_array($postType, $autoPostOption[$state])) {
$isChecked = 'checked';
}
}
}
//Auto-Post-Import - Check Conditions - show notice
$autoPostData = $this->userOption->_getOption('auto_post_import');
if ($autoPostData !== false && is_array($autoPostData)) {
if (isset($autoPostData['active']) && (int) $autoPostData['active'] == 1) {
$autoPostImport = true;
if (isset($autoPostData['post_filter']) && (int) $autoPostData['post_filter'] == 1) {
if (isset($autoPostData['post_type']) && is_array($autoPostData['post_type']) && !empty($autoPostData['post_type'])) {
if (isset($autoPostData['post_type_state']) && (int) $autoPostData['post_type_state'] == 0) { //include
if (!in_array($postType, $autoPostData['post_type'])) {
$autoPostImport = false;
}
} else { //exclude
if (in_array($postType, $autoPostData['post_type'])) {
$autoPostImport = false;
}
}
}
}
$autoPostCon = $this->userOption->_getOption('auto_post_import_condition');
if ($autoPostCon !== false && is_array($autoPostCon) && isset($autoPostCon['count'])) {
$con = unserialize(B2S_PLUGIN_AUTO_POST_LIMIT);
if ($autoPostCon['count'] == $con[B2S_PLUGIN_USER_VERSION]) {
$autoPostImport = false;
}
}
}
}
}
$content = '<div class="b2s-post-meta-box">
<div id="b2s-server-connection-fail" class="b2s-info-error"><button class="b2s-btn-close-meta-box b2s-close-icon" data-area-id="b2s-server-connection-fail" title="close notice"></button>' . esc_html__('The connection to the server failed. Try again!', 'blog2social') . '</div>
<div id="b2s-heartbeat-fail" class="b2s-info-error"><button class="b2s-btn-close-meta-box b2s-close-icon" data-area-id="b2s-heartbeat-fail" title="close notice"></button>' . esc_html__('WordPress uses heartbeats by default, Blog2Social as well. Please enable heartbeats for using Blog2Social!', 'blog2social') . $b2sHeartbeatFaqLink . ' </div>
<div id="b2s-post-meta-box-state-no-publish-future-customize" class="b2s-info-error"><button class="b2s-btn-close-meta-box b2s-close-icon" data-area-id="b2s-post-meta-box-state-no-publish-future-customize" title="close notice"></button>' . esc_html__('Your post is still on draft or pending status. Please make sure that your post is published or scheduled to be published on this blog. You can then auto-post or schedule and customize your social media posts with Blog2Social.', 'blog2social') . '</div>
<div id="b2s-post-meta-box-state-no-auth" class="b2s-info-error"><button class="b2s-btn-close-meta-box b2s-close-icon" data-area-id="b2s-post-meta-box-state-no-auth" title="close notice"></button>' . esc_html__('There are no social network accounts assigned to your selected network collection. Please assign at least one social network account or select another network collection.', 'blog2social') . '<a href="' . esc_url($this->b2sSiteUrl . 'wp-admin/admin.php?page=blog2social-network') . '" target="_bank">' . esc_html__('Network settings', 'blog2social') . '</a></div>
<div id="b2s-post-meta-box-state-no-publish-future" class="b2s-info-error"><button class="b2s-btn-close-meta-box b2s-close-icon" data-area-id="b2s-post-meta-box-state-no-publish-future" title="close notice"></button>' . esc_html__('Your post is still on draft or pending status. Please make sure that your post is published or scheduled to be published on this blog. You can then auto-post or schedule and customize your social media posts with Blog2Social.', 'blog2social') . '</div>
<div id="b2s-url-valid-warning" class="b2s-info-warning"><button class="b2s-btn-close-meta-box b2s-close-icon" data-area-id="b2s-url-valid-warning" title="close notice"></button>' . esc_html__('Notice: Please make sure, that your website address is reachable. The Social Networks do not allow postings from local installations.', 'blog2social') . '</div>
<input type="hidden" id="b2s-redirect-url-customize" name="b2s-redirect-url-customize" value="' . esc_attr($this->b2sSiteUrl . 'wp-admin/admin.php?page=blog2social-ship&postId=') . '"/>
<input type="hidden" id="b2s-user-last-selected-profile-id" name="b2s-user-last-selected-profile-id" value="' . esc_attr(($selectedProfileID !== false ? (int) $selectedProfileID : 0)) . '" />
<input type="hidden" id="b2s-home-url" name="b2s-home-url" value="' . esc_attr(get_option('home')) . '"/>
<input type="hidden" id="b2sLang" name="b2s-user-lang" value="' . esc_attr(strtolower(substr(get_locale(), 0, 2))) . '">
<input type="hidden" id="b2sUserLang" name="b2s-user-lang" value="' . esc_attr(strtolower(substr(get_locale(), 0, 2))) . '">
<input type="hidden" id="b2sPostLang" name="b2s-post-lang" value="' . esc_attr(substr($this->postLang, 0, 2)) . '">
<input type="hidden" id="b2sPluginUrl" name="b2s-post-lang" value="' . esc_attr(B2S_PLUGIN_URL) . '">
<input type="hidden" id="b2sBlogUserId" name="b2s-blog-user-id" value="' . esc_attr(B2S_PLUGIN_BLOG_USER_ID) . '">
<input type="hidden" id="b2s-user-timezone" name="b2s-user-timezone" value="' . esc_attr($userTimeZoneOffset) . '"/>
<input type="hidden" id="b2s-post-status" name="b2s-post-status" value="' . esc_attr(trim(strtolower($postStatus))) . '"/>
<input type="hidden" name="b2s-post-meta-box-version" id="b2s-post-meta-box-version" value="' . esc_attr(B2S_PLUGIN_USER_VERSION) . '"/>
<input type="hidden" id="isOgMetaChecked" name="isOgMetaChecked" value="' . esc_attr((isset($metaSettings['og_active']) ? (int) $metaSettings['og_active'] : 0)) . '">
<input type="hidden" id="isCardMetaChecked" name="isCardMetaChecked" value="' . esc_attr((isset($metaSettings['card_active']) ? (int) $metaSettings['card_active'] : 0)) . '">
<input type="hidden" id="b2sAutoPostImportIsActive" name="autoPostImportIsActive" value="' . (($autoPostImport) ? 1 : 0) . '">
<a id="b2s-meta-box-btn-customize" class="b2s-btn b2s-btn-success b2s-btn-sm b2s-center-block b2s-btn-margin-bottom-15" href="#">' . esc_html__('点击分享', 'blog2social') . '</a>
' . $lastPost;
if (B2S_PLUGIN_USER_VERSION == 0) {
$content .= ' <span class="b2s-label b2s-label-success"><a href="#" class="b2s-btn-label-premium b2s-info-btn" data-modal-target="b2sInfoMetaBoxModalAutoPost">' . esc_html__("SMART", "blog2social") . '</a></span>';
}
$content .='<div class="b2s-loading-area" style="display:none">
<br>
<div class="b2s-loader-impulse b2s-loader-impulse-md"></div>
<div class="clearfix"></div>
<small>' . esc_html__('Loading...', 'blog2social') . '</small>
</div>
</div>';
$content .=' <div class="b2s-meta-box-modal" id="b2sInfoMetaBoxModalSched" aria-hidden="true" style="display:none;">
<div class="b2s-meta-box-modal-dialog">
<div class="b2s-meta-box-modal-header">
<a href="#" class="b2s-meta-box-modal-btn-close" data-modal-target="b2sInfoMetaBoxModalSched" aria-hidden="true">×</a>
<h4 class="b2s-meta-box-modal-title">' . esc_html__('Blog2Social: Customize & Schedule Social Media Posts', 'blog2social') . '</h4>
</div>
<div class="b2s-meta-box-modal-body">
<p>' . esc_html__('Customize and schedule your social media posts on the one page preview for all your selected networks: tailor your posts with individual comments, #hashtags or @handles and schedule your posts for the best times to post, for multiple times or re-share recurrently for more visibility and engagement with your community.', 'blog2social') . '</p>
</div>
</div>
</div>';
$content .= '<div class="b2s-meta-box-modal" id="b2sInfoMetaBoxModalAutoPost" aria-hidden="true" style="display:none;">
<div class="b2s-meta-box-modal-dialog">
<div class="b2s-meta-box-modal-header">
<a href="#" class="b2s-meta-box-modal-btn-close" data-modal-target="b2sInfoMetaBoxModalAutoPost" aria-hidden="true">×</a>
<h4 class="b2s-meta-box-modal-title">' . esc_html__('Blog2Social: Social Media Auto-Posting', 'blog2social') . '</h4>
</div>
<div class="b2s-meta-box-modal-body">
<p>
' . esc_html__('Share your blog posts with the Auto Poster: Your blog posts will be shared automatically on your social media channels as soon as you publish or update a new post. You can also choose to autopost scheduled blog posts as soon as they are published.', 'blog2social');
$content .= ' ' . sprintf(__('<a target="_blank" href="%s">Learn how to set up auto posting for your blog posts</a>', 'blog2social'), esc_url(B2S_Tools::getSupportLink('auto_poster_m')));
if (B2S_PLUGIN_USER_VERSION == 0) {
$content .= '<hr>
<h4 class="b2s-meta-box-modal-h4">' . esc_html__('You want to auto-post your blog post?', 'blog2social') . '</h4>
' . esc_html__('With Blog2Social Premium you can:', 'blog2social') . '
<br>
<br>
- ' . esc_html__('Post on pages and groups', 'blog2social') . '<br>
- ' . esc_html__('Share on multiple profiles, pages and groups', 'blog2social') . '<br>
- ' . esc_html__('Auto-post and auto-schedule new and updated blog posts', 'blog2social') . '<br>
- ' . esc_html__('Schedule your posts at the best times on each network', 'blog2social') . '<br>
- ' . esc_html__('Best Time Manager: use predefined best time scheduler to auto-schedule your social media posts', 'blog2social') . '<br>
- ' . esc_html__('Schedule your post for one time, multiple times or recurrently', 'blog2social') . '<br>
- ' . esc_html__('Schedule and re-share old posts', 'blog2social') . '<br>
- ' . esc_html__('Select link format or image format for your posts', 'blog2social') . '<br>
- ' . esc_html__('Select individual images per post', 'blog2social') . '<br>
- ' . esc_html__('Reporting & calendar: keep track of your published and scheduled social media posts', 'blog2social') . '<br>
<br>
<a target="_blank" href="' . esc_url(B2S_Tools::getSupportLink('affiliate')) . '" class="b2s-btn b2s-btn-success b2s-center-block b2s-btn-none-underline">' . esc_html__('Upgrade to SMART and above', 'blog2social') . '</a>
<br>
<center>' . sprintf(__('or <a target="_blank" href="%s">start with free 30-days-trial of Blog2Social Premium</a> (no payment information needed)', 'blog2social'), esc_url('https://service.blog2social.com/trial')) . '</center>';
}
$content .= '</p>
</div>
</div>
</div>
';
return $content;
}
public function getPostBoxAutoHtml($mandant = array(), $auth = array()) {
$authContent = '';
$content = '<br><div class="b2s-meta-box-auto-post-area"><label for="b2s-post-meta-box-profil-dropdown">' . esc_html__('Select network collection:', 'blog2social') . ' <div style="float:right;"><a href="' . esc_url($this->b2sSiteUrl . 'wp-admin/admin.php?page=blog2social-network') . '" target="_blank">' . esc_html__('Network settings', 'blog2social') . '</a></div></label>
<select style="width:100%;" id="b2s-post-meta-box-profil-dropdown" name="b2s-post-meta-box-profil-dropdown">';
foreach ($mandant as $k => $m) {
$content .= '<option value="' . esc_attr($m->id) . '">' . esc_html((($m->id == 0) ? __($m->name, 'blog2social') : $m->name)) . '</option>';
$profilData = (isset($auth->{$m->id}) && isset($auth->{$m->id}[0]) && !empty($auth->{$m->id}[0])) ? json_encode($auth->{$m->id}) : '';
$authContent .= "<input type='hidden' id='b2s-post-meta-box-profil-data-" . esc_attr($m->id) . "' name='b2s-post-meta-box-profil-data-" . esc_attr($m->id) . "' value='" . base64_encode($profilData) . "'/>";
}
$content .= '</select></div>';
$content .= $authContent;
//TOS Twitter 032018 - none multiple Accounts - User select once
$content .='<div class="b2s-meta-box-auto-post-twitter-profile"><label for="b2s-post-meta-box-profil-dropdown-twitter">' . esc_html__('Select Twitter profile:', 'blog2social') . '</div></label> <select style="width:100%;" id="b2s-post-meta-box-profil-dropdown-twitter" name="b2s-post-meta-box-profil-dropdown-twitter">';
foreach ($mandant as $k => $m) {
if ((isset($auth->{$m->id}) && isset($auth->{$m->id}[0]) && !empty($auth->{$m->id}[0]))) {
foreach ($auth->{$m->id} as $key => $value) {
if ($value->networkId == 2) {
$content .= '<option data-mandant-id="' . esc_attr($m->id) . '" value="' . esc_attr($value->networkAuthId) . '">' . esc_html($value->networkUserName) . '</option>';
}
}
}
}
$content .= '</select></div>';
//new V5.1.0 Seeding
$bestTimeType = 0; //0=default(best time), 1= special per account (seeding), 2= per network (old)
$myBestTimeSettings = $this->userOption->_getOption('auth_sched_time');
if (isset($myBestTimeSettings['time'])) {
$bestTimeType = 1;
//old
} else {
global $wpdb;
if ($wpdb->get_var("SHOW TABLES LIKE '{$wpdb->prefix}b2s_post_sched_settings'") == $wpdb->prefix . 'b2s_post_sched_settings') {
$myBestTimeSettings = $wpdb->get_results($wpdb->prepare("SELECT network_id, network_type, sched_time FROM {$wpdb->prefix}b2s_post_sched_settings WHERE blog_user_id= %d", B2S_PLUGIN_BLOG_USER_ID));
if (is_array($myBestTimeSettings) && !empty($myBestTimeSettings)) {
$bestTimeType = 2;
} else {
//default
$myBestTimeSettings = B2S_Tools::getRandomBestTimeSettings();
}
}
}
$content .='<label>' . esc_html__('When do you want to share your post on social media?', 'blog2social') . '</label>';
$content .= '<div class="b2s-post-meta-box-sched-area">';
$content .='<select class="b2s-post-meta-box-sched-select" style="width:100%;" name="b2s-post-meta-box-sched-select">
<option value="0">' . esc_html__('immediately after publishing', 'blog2social') . '</option>
<option value="1">' . esc_html__('at scheduled times', 'blog2social') . '</option>
<option value="2">' . esc_html__('schedule (best times)', 'blog2social') . '</option>
</select>';
$content .='<div id="b2s-post-meta-box-note-premium" class="b2s-info-success"><button class="b2s-btn-close-meta-box b2s-close-icon" data-area-id="b2s-post-meta-box-note-premium" title="close notice"></button><b>' . esc_html__('You want to schedule your blog post with Auto-Poster?', 'blog2social') . '</b><br> <a class="" target="_blank" href="' . esc_url(B2S_Tools::getSupportLink('affiliate')) . '">' . esc_html__('Upgrade to PRO', 'blog2social') . '</a></div>';
$content .='<div class="b2s-post-meta-box-sched-once" style="display:none;">';
//Opt: CustomDatePicker
$dateFormat = (substr(B2S_LANGUAGE, 0, 2) == 'de') ? 'dd.mm.yyyy' : 'yyyy-mm-dd';
$timeFormat = (substr(B2S_LANGUAGE, 0, 2) == 'de') ? 'hh:ii' : 'hh:ii aa';
$content .='<label class="b2s-font-bold">' . esc_html__('Select date:', 'blog2social') . '</label>';
$content .='<a href="#b2s-post-box-calendar-header" id="b2s-post-box-calendar-btn" class="pull-right">' . esc_html__('show calendar', 'blog2social') . '</a>';
$content .='<br><span class="dashicons dashicons-calendar b2s-calendar-icon"></span><input style="width:88%;" id="b2s-post-meta-box-sched-date-picker" name="b2s-post-meta-box-sched-date" value="" readonly data-timepicker="true" data-language="' . esc_attr(substr(B2S_LANGUAGE, 0, 2)) . '" data-time-format="' . esc_attr($timeFormat) . '" data-date-format="' . esc_attr($dateFormat) . '" type="text"><br>';
$content .="</div>";
//Opt: Best Time Settings
if (!empty($myBestTimeSettings) && is_array($myBestTimeSettings)) {
$bestTimeSettings = array('type' => $bestTimeType, 'times' => $myBestTimeSettings);
$content .="<input id='b2s-post-meta-box-best-time-settings' class='post-format' name='b2s-post-meta-box-best-time-settings' value='" . serialize($bestTimeSettings) . "' type='hidden'> ";
$content .="<div class='b2s-post-meta-box-sched-best-time' style='display:none;'>";
$content .="<span class='post-format-icon'>" . esc_html__('change', 'blog2social') . "</span>";
$content .=' <a href="' . esc_attr($this->b2sSiteUrl . 'wp-admin/admin.php?page=blog2social-network') . '" target="_blank">' . esc_html__('best times', 'blog2social') . '</a></label>';
$content .='<br><hr><span>' . esc_html__('Note: If you have not specified your own times, we automatically provide you with the best times to post on the social networks. You can always edit your own times in the settings.', 'blog2social') . '</span>';
$content .="</div>";
}
$content .='</div>';
return $content;
}
}