Blog2Social: Social Media Auto Post & Scheduler - Version 6.9.14

Version Description

Optimize Auto-Poster & Re-Poster

Download this release

Release Info

Developer PR-Gateway
Plugin Icon 128x128 Blog2Social: Social Media Auto Post & Scheduler
Version 6.9.14
Comparing to
See all releases

Code changes from version 6.9.13 to 6.9.14

assets/js/b2s/metrics.js CHANGED
@@ -5,6 +5,7 @@ var filterDates = [];
5
  if (typeof wp.heartbeat !== "undefined") {
6
  jQuery(document).on('heartbeat-send', function (e, data) {
7
  data['b2s_heartbeat'] = 'b2s_listener';
 
8
  });
9
  wp.heartbeat.connectNow();
10
  }
5
  if (typeof wp.heartbeat !== "undefined") {
6
  jQuery(document).on('heartbeat-send', function (e, data) {
7
  data['b2s_heartbeat'] = 'b2s_listener';
8
+ data['b2s_heartbeat_action'] = 'b2s_metrics';
9
  });
10
  wp.heartbeat.connectNow();
11
  }
blog2social.php CHANGED
@@ -6,7 +6,7 @@
6
  * Author: Blog2Social, Adenion
7
  * Text Domain: blog2social
8
  * Domain Path: /languages
9
- * Version: 6.9.13
10
  * Author URI: https://www.blog2social.com
11
  * License: GPL2+
12
  */
6
  * Author: Blog2Social, Adenion
7
  * Text Domain: blog2social
8
  * Domain Path: /languages
9
+ * Version: 6.9.14
10
  * Author URI: https://www.blog2social.com
11
  * License: GPL2+
12
  */
includes/B2S/AutoPost.php CHANGED
@@ -300,15 +300,6 @@ class B2S_AutoPost {
300
  }
301
  }
302
 
303
- if ((int) $this->userVersion < 1 || !isset($this->optionPostFormat[$network_id][$network_type])) {
304
- $tempOptionPostFormat = $this->default_template;
305
- } else {
306
- $tempOptionPostFormat = $this->optionPostFormat;
307
- }
308
- if(isset($tempOptionPostFormat[$network_id][$network_type]['addLink']) && $tempOptionPostFormat[$network_id][$network_type]['addLink'] == false) {
309
- $shareData['url'] = '';
310
- }
311
-
312
  if (isset($shareData['image_url']) && !empty($shareData['image_url']) && function_exists('wp_check_filetype') && defined('B2S_PLUGIN_NETWORK_NOT_ALLOW_GIF')) {
313
  $image_data = wp_check_filetype($shareData['image_url']);
314
  $not_allow_gif = json_decode(B2S_PLUGIN_NETWORK_NOT_ALLOW_GIF, true);
300
  }
301
  }
302
 
 
 
 
 
 
 
 
 
 
303
  if (isset($shareData['image_url']) && !empty($shareData['image_url']) && function_exists('wp_check_filetype') && defined('B2S_PLUGIN_NETWORK_NOT_ALLOW_GIF')) {
304
  $image_data = wp_check_filetype($shareData['image_url']);
305
  $not_allow_gif = json_decode(B2S_PLUGIN_NETWORK_NOT_ALLOW_GIF, true);
includes/B2S/Heartbeat.php CHANGED
@@ -25,8 +25,11 @@ class B2S_Heartbeat {
25
  $this->updateUserSchedPost();
26
  $this->deleteUserPublishPost();
27
  $this->getSchedResultFromServer();
 
 
28
  $this->updateInsights();
29
  }
 
30
  $response['b2s-trigger'] = true;
31
  }
32
  return $response;
@@ -356,7 +359,7 @@ class B2S_Heartbeat {
356
  $sendData = $wpdb->get_results($wpdb->prepare($sql, 1, date('Y-m-d H:i:s', strtotime(date('Y-m-d H:i:s') . ' -1 day'))), ARRAY_A);
357
  if (is_array($sendData) && !empty($sendData) && isset($sendData[0])) {
358
  $tempData = array('action' => 'updateInsights', 'data' => $sendData);
359
- $result = json_decode(B2S_Api_Post::post(B2S_PLUGIN_API_ENDPOINT, $tempData, 90), true);
360
  if (isset($result['data']) && !empty($result['data'])) {
361
  foreach ($result['data'] as $k => $value) {
362
  $insights = $value;
25
  $this->updateUserSchedPost();
26
  $this->deleteUserPublishPost();
27
  $this->getSchedResultFromServer();
28
+ }
29
+ if (isset($data['b2s_heartbeat_action']) && $data['b2s_heartbeat_action'] == 'b2s_metrics') {
30
  $this->updateInsights();
31
  }
32
+
33
  $response['b2s-trigger'] = true;
34
  }
35
  return $response;
359
  $sendData = $wpdb->get_results($wpdb->prepare($sql, 1, date('Y-m-d H:i:s', strtotime(date('Y-m-d H:i:s') . ' -1 day'))), ARRAY_A);
360
  if (is_array($sendData) && !empty($sendData) && isset($sendData[0])) {
361
  $tempData = array('action' => 'updateInsights', 'data' => $sendData);
362
+ $result = json_decode(B2S_Api_Post::post(B2S_PLUGIN_API_ENDPOINT, $tempData, 45), true);
363
  if (isset($result['data']) && !empty($result['data'])) {
364
  foreach ($result['data'] as $k => $value) {
365
  $insights = $value;
includes/B2S/RePost/Save.php CHANGED
@@ -99,12 +99,13 @@ class B2S_RePost_Save {
99
  if ($schedData !== false && is_array($schedData)) {
100
  $schedData = array_merge($schedData, $defaultPostData);
101
  }
102
- if (((int) $value->networkId == 12 && isset($this->optionPostFormat[12][0]['addLink']) && $this->optionPostFormat[12][0]['addLink'] === false) || ((int) $value->networkId == 24 && isset($this->optionPostFormat[24][0]['format']) && $this->optionPostFormat[24][0]['format'] == 1 && isset($this->optionPostFormat[24][0]['addLink']) && $this->optionPostFormat[24][0]['addLink'] === false)) {
 
103
  $schedData['url'] = '';
104
- }
105
- if (((int) $value->networkId == 1 || (int) $value->networkId == 2) && isset($this->optionPostFormat[1][$value->networkType]['format']) && $this->optionPostFormat[1][$value->networkType]['format'] == 1 && isset($this->optionPostFormat[1][$value->networkType]['addLink']) && $this->optionPostFormat[1][$value->networkType]['addLink'] === false) {
106
  $schedData['url'] = '';
107
  }
 
108
  $this->saveShareData($schedData, $value->networkId, $value->networkType, $value->networkAuthId, $shareApprove, strip_tags($value->networkUserName), $schedDate, $schedDateUtc);
109
  }
110
  }
99
  if ($schedData !== false && is_array($schedData)) {
100
  $schedData = array_merge($schedData, $defaultPostData);
101
  }
102
+
103
+ if (((int) $value->networkId == 12) && isset($this->optionPostFormat[$value->networkId][$value->networkType]['addLink']) && $this->optionPostFormat[$value->networkId][$value->networkType]['addLink'] == false) {
104
  $schedData['url'] = '';
105
+ } else if (((int) $value->networkId == 1 || (int) $value->networkId == 2 || (int) $value->networkId == 24) && isset($this->optionPostFormat[$value->networkId][$value->networkType]['format']) && (int) $this->optionPostFormat[$value->networkId][$value->networkType]['format'] == 1 && isset($this->optionPostFormat[$value->networkId][$value->networkType]['addLink']) && $this->optionPostFormat[$value->networkId][$value->networkType]['addLink'] == false) {
 
106
  $schedData['url'] = '';
107
  }
108
+
109
  $this->saveShareData($schedData, $value->networkId, $value->networkType, $value->networkAuthId, $shareApprove, strip_tags($value->networkUserName), $schedDate, $schedDateUtc);
110
  }
111
  }
includes/Loader.php CHANGED
@@ -338,7 +338,7 @@ class B2S_Loader {
338
  $excerpt = (isset($post->post_excerpt) && !empty($post->post_excerpt)) ? trim($post->post_excerpt) : '';
339
  $images_urls = $hook_filter->get_wp_post_image((int) $post->ID, true, $content);
340
  $image_url = ((!empty($images_urls) && isset(array_values($images_urls)[0][0])) ? array_values($images_urls)[0][0] : false);
341
- $delay = (isset($autoPostData['ship_state']) && (int) $autoPostData['ship_state'] = 0) ? 0 : (isset($autoPostData['ship_delay_time']) ? (int) $autoPostData['ship_delay_time'] : 0);
342
  $current_user_datetime = date('Y-m-d H:i:s', strtotime(B2S_Util::getUTCForDate($current_utc_datetime, $userTimeZoneOffset)));
343
 
344
  //ShareNow
@@ -597,7 +597,7 @@ class B2S_Loader {
597
  $meta->updateMeta((int) $_POST['post_ID']);
598
  }
599
 
600
- if (isset($_POST['post_ID']) && isset($_POST['user_ID']) && (int) $_POST['post_ID'] > 0 && (int) $_POST['user_ID'] > 0 && !defined("B2S_SAVE_META_BOX_AUTO_SHARE") && !wp_is_post_autosave((int) $_POST['post_ID']) && isset($_POST['b2s-meta-box-nonce']) && wp_verify_nonce(sanitize_text_field(wp_unslash($_POST['b2s-meta-box-nonce'])), 'b2s-meta-box-nonce-post-area') && isset($_POST['post_status'])) {
601
  $ship = false;
602
  if (isset($_POST['b2s-enable-auto-post'])) {
603
  if ((int) $_POST['b2s-enable-auto-post'] == 1) {
@@ -678,7 +678,7 @@ class B2S_Loader {
678
  $images_urls = $hook_filter->get_wp_post_image((int) $_POST['post_ID'], true, $content);
679
  $image_url = ((!empty($images_urls) && isset(array_values($images_urls)[0][0])) ? array_values($images_urls)[0][0] : false);
680
 
681
- $options = new B2S_Options((int) $_POST['user_ID']);
682
  $optionPostFormat = $options->_getOption('post_template');
683
 
684
  $defaultPostData = array('default_titel' => $title,
@@ -687,12 +687,12 @@ class B2S_Loader {
687
  'no_cache' => 0, //default inactive , 1=active 0=not
688
  'board' => '', 'group' => '', 'url' => $url, 'user_timezone' => $user_timezone); // 'publish_date' => $sched_date, OLD FOR Share Now?
689
 
690
- $defaultBlogPostData = array('post_id' => (int) $_POST['post_ID'], 'blog_user_id' => (int) $_POST['user_ID'], 'user_timezone' => $user_timezone, 'sched_type' => $sched_type, 'sched_date' => $sched_date, 'sched_date_utc' => $sched_date_utc);
691
 
692
  $autoShare = new B2S_AutoPost((int) $_POST['post_ID'], $defaultBlogPostData, $current_user_date, $myTimeSettings, $title, $content, $excerpt, $url, $image_url, $keywords, $b2sPostLang, $optionPostFormat);
693
  define('B2S_SAVE_META_BOX_AUTO_SHARE', (int) $_POST['post_ID']);
694
  if (isset($_POST['b2s-user-last-selected-profile-id']) && (int) $_POST['b2s-user-last-selected-profile-id'] != (int) $_POST['b2s-post-meta-box-profil-dropdown'] && (int) $_POST['b2s-post-meta-box-profil-dropdown'] != 0) {
695
- update_option('B2S_PLUGIN_SAVE_META_BOX_AUTO_SHARE_PROFILE_USER_' . (int) $_POST['user_ID'], (int) $_POST['b2s-post-meta-box-profil-dropdown'], false);
696
  }
697
 
698
  $metaOg = false;
@@ -722,7 +722,7 @@ class B2S_Loader {
722
  foreach ($networkData as $k => $value) {
723
  $initialTwitterPost = false;
724
  if ((int) $value->networkId == 1 || (int) $value->networkId == 3 || (int) $value->networkId == 19) {
725
- $linkNoCache = B2S_Tools::getNoCacheData((int) $_POST['user_ID']);
726
  if (is_array($linkNoCache) && isset($linkNoCache[$value->networkId]) && (int) $linkNoCache[$value->networkId] > 0) {
727
  $defaultPostData['no_cache'] = $linkNoCache[$value->networkId];
728
  }
@@ -746,10 +746,9 @@ class B2S_Loader {
746
  if ($res !== false && is_array($res)) {
747
  $ship = true;
748
  $res = array_merge($res, $defaultPostData);
749
- if (((int) $value->networkId == 12 && isset($optionPostFormat[12][0]['addLink']) && $optionPostFormat[12][0]['addLink'] === false) || ((int) $value->networkId == 24 && isset($optionPostFormat[24][0]['addLink']) && $optionPostFormat[24][0]['addLink'] === false)) {
750
  $res['url'] = '';
751
- }
752
- if (((int) $value->networkId == 1 || (int) $value->networkId == 2) && isset($optionPostFormat[1][$value->networkType]['format']) && $optionPostFormat[1][$value->networkType]['format'] == 1 && isset($optionPostFormat[1][$value->networkType]['addLink']) && $optionPostFormat[1][$value->networkType]['addLink'] === false) {
753
  $res['url'] = '';
754
  }
755
  $shareApprove = (isset($value->instant_sharing) && (int) $value->instant_sharing == 1) ? 1 : 0;
338
  $excerpt = (isset($post->post_excerpt) && !empty($post->post_excerpt)) ? trim($post->post_excerpt) : '';
339
  $images_urls = $hook_filter->get_wp_post_image((int) $post->ID, true, $content);
340
  $image_url = ((!empty($images_urls) && isset(array_values($images_urls)[0][0])) ? array_values($images_urls)[0][0] : false);
341
+ $delay = (isset($autoPostData['ship_state']) && (int) $autoPostData['ship_state'] == 0) ? 0 : (isset($autoPostData['ship_delay_time']) ? (int) $autoPostData['ship_delay_time'] : 0);
342
  $current_user_datetime = date('Y-m-d H:i:s', strtotime(B2S_Util::getUTCForDate($current_utc_datetime, $userTimeZoneOffset)));
343
 
344
  //ShareNow
597
  $meta->updateMeta((int) $_POST['post_ID']);
598
  }
599
 
600
+ if (isset($_POST['post_ID']) && isset($_POST['user_ID']) && (int) $_POST['post_ID'] > 0 && (int) $_POST['user_ID'] > 0 && (int)$_POST['user_ID'] == B2S_PLUGIN_BLOG_USER_ID && !defined("B2S_SAVE_META_BOX_AUTO_SHARE") && !wp_is_post_autosave((int) $_POST['post_ID']) && isset($_POST['b2s-meta-box-nonce']) && wp_verify_nonce(sanitize_text_field(wp_unslash($_POST['b2s-meta-box-nonce'])), 'b2s-meta-box-nonce-post-area') && isset($_POST['post_status'])) {
601
  $ship = false;
602
  if (isset($_POST['b2s-enable-auto-post'])) {
603
  if ((int) $_POST['b2s-enable-auto-post'] == 1) {
678
  $images_urls = $hook_filter->get_wp_post_image((int) $_POST['post_ID'], true, $content);
679
  $image_url = ((!empty($images_urls) && isset(array_values($images_urls)[0][0])) ? array_values($images_urls)[0][0] : false);
680
 
681
+ $options = new B2S_Options(B2S_PLUGIN_BLOG_USER_ID);
682
  $optionPostFormat = $options->_getOption('post_template');
683
 
684
  $defaultPostData = array('default_titel' => $title,
687
  'no_cache' => 0, //default inactive , 1=active 0=not
688
  'board' => '', 'group' => '', 'url' => $url, 'user_timezone' => $user_timezone); // 'publish_date' => $sched_date, OLD FOR Share Now?
689
 
690
+ $defaultBlogPostData = array('post_id' => (int) $_POST['post_ID'], 'blog_user_id' => B2S_PLUGIN_BLOG_USER_ID, 'user_timezone' => $user_timezone, 'sched_type' => $sched_type, 'sched_date' => $sched_date, 'sched_date_utc' => $sched_date_utc);
691
 
692
  $autoShare = new B2S_AutoPost((int) $_POST['post_ID'], $defaultBlogPostData, $current_user_date, $myTimeSettings, $title, $content, $excerpt, $url, $image_url, $keywords, $b2sPostLang, $optionPostFormat);
693
  define('B2S_SAVE_META_BOX_AUTO_SHARE', (int) $_POST['post_ID']);
694
  if (isset($_POST['b2s-user-last-selected-profile-id']) && (int) $_POST['b2s-user-last-selected-profile-id'] != (int) $_POST['b2s-post-meta-box-profil-dropdown'] && (int) $_POST['b2s-post-meta-box-profil-dropdown'] != 0) {
695
+ update_option('B2S_PLUGIN_SAVE_META_BOX_AUTO_SHARE_PROFILE_USER_' .B2S_PLUGIN_BLOG_USER_ID, (int) $_POST['b2s-post-meta-box-profil-dropdown'], false);
696
  }
697
 
698
  $metaOg = false;
722
  foreach ($networkData as $k => $value) {
723
  $initialTwitterPost = false;
724
  if ((int) $value->networkId == 1 || (int) $value->networkId == 3 || (int) $value->networkId == 19) {
725
+ $linkNoCache = B2S_Tools::getNoCacheData(B2S_PLUGIN_BLOG_USER_ID);
726
  if (is_array($linkNoCache) && isset($linkNoCache[$value->networkId]) && (int) $linkNoCache[$value->networkId] > 0) {
727
  $defaultPostData['no_cache'] = $linkNoCache[$value->networkId];
728
  }
746
  if ($res !== false && is_array($res)) {
747
  $ship = true;
748
  $res = array_merge($res, $defaultPostData);
749
+ if (((int) $value->networkId == 12) && isset($optionPostFormat[$value->networkId][$value->networkType]['addLink']) && $optionPostFormat[$value->networkId][$value->networkType]['addLink'] == false) {
750
  $res['url'] = '';
751
+ } else if (((int) $value->networkId == 1 || (int) $value->networkId == 2 || (int) $value->networkId == 24) && isset($optionPostFormat[$value->networkId][$value->networkType]['format']) && (int) $optionPostFormat[$value->networkId][$value->networkType]['format'] == 1 && isset($optionPostFormat[$value->networkId][$value->networkType]['addLink']) && $optionPostFormat[$value->networkId][$value->networkType]['addLink'] == false) {
 
752
  $res['url'] = '';
753
  }
754
  $shareApprove = (isset($value->instant_sharing) && (int) $value->instant_sharing == 1) ? 1 : 0;
includes/Util.php CHANGED
@@ -374,7 +374,7 @@ class B2S_Util {
374
  public static function getFullContent($postId = 0, $postContent = '', $postUrl = '', $postLang = 'en') {
375
  $postLang = ($postLang === false) ? 'en' : trim(strtolower($postLang));
376
  //isset settings allow shortcode
377
- if (get_option('B2S_PLUGIN_USER_ALLOW_SHORTCODE_' . B2S_PLUGIN_BLOG_USER_ID) !== false) {
378
  //check is shortcode in content
379
  if (preg_match('/\[(.*?)\]/s', $postContent)) {
380
  //check has crawled content from frontend
374
  public static function getFullContent($postId = 0, $postContent = '', $postUrl = '', $postLang = 'en') {
375
  $postLang = ($postLang === false) ? 'en' : trim(strtolower($postLang));
376
  //isset settings allow shortcode
377
+ if (get_option('B2S_PLUGIN_USER_ALLOW_SHORTCODE_' . get_current_user_id()) !== false) {
378
  //check is shortcode in content
379
  if (preg_match('/\[(.*?)\]/s', $postContent)) {
380
  //check has crawled content from frontend
readme.txt CHANGED
@@ -4,8 +4,8 @@ Requires PHP: 5.5.3
4
  Tags: auto post, auto publish, social media scheduling, social media calendar, social media automation, social media share, auto-publish, scheduling, social media post, social url share, social network share, share tweet, share links, share this, share text posts, share images, share video links, social tools, admin, api, auto share to, autopost, auto-Posting, auto-schedule, auto-schedule social media posts, automatic social sharing plugin, blog marketing, blog2social, blogger, buffer, crossposting, cross-promotion, cross-promoting, bloglovin, bloglovin auto post, facebook, facebook auto post, facebook pages, google auto post, instagram business, instagram auto post, jetpack, jetpack sharing, linkedin, linkedin auto post, medium, medium auto post, multiposting, pinterest, re-post, scheduling plugin, social media, social media auto publish, social media button, social media manager, social media plugin, social media publishing, social media scheduling tool, social media sharing, social media tool, social network auto publish, social network icon, social network widget, socialmedia, timing, torial, torial auto post, tumblr, twitter, twitter auto post, xing, xing auto post, xing groups, xing gruppen, xing personal profiles, xing company profiles, xing business pages, xing pages, xing seiten,instagram business, auto post scheduler, repost, social media management, facebook fan page auto post, facebook profile auto post, social auto post, social autoposting, flickr, flickr auto posting, linkedin, linkedin auto posting, linkedin profile, facebook group, facebook gruppen, reddit, reddit auto posting, reddit auto post, social media calendar, editorial calendar, calendar plugin, Social Media Automatisierung, Social Media Management, Kalender, Planungs Kalender, Social Media Kalender, Content Marketing, Revive, Revive posts, Revive old posts, old posts, Reshare, Re-Share, automatically re-post, automatically reshare, auto repost, auto republish, recycle posts, bulk schedule, Google My Business, Google posts, imgur, vk, vkontakte, Vkontakte.ru, vk.com. Telegram, Telegram channels, Telegram groups, share multiple images, image gallery, blogger.com, ravelry, instapaper, Social Media Metrics, Twitter Threads
5
  Donate link: https://paypal.me/adenion
6
  Requires at least: 4.7.0
7
- Tested up to: 6.0
8
- Stable tag: 6.9.13
9
  License: GPLv3
10
  License URI: http://www.gnu.org/licenses/gpl-2.0.html
11
 
@@ -234,6 +234,8 @@ To get started with the basics of Blog2Social and maybe find some useful tips an
234
  7. Keep track of your shared posts and scheduling plan with the Social Media Calendar.
235
 
236
  == Changelog ==
 
 
237
  = 6.9.13 =
238
  Optimize Social Media Metrics & Usability Optimization
239
  = 6.9.12 =
@@ -334,6 +336,8 @@ Usability Optimization, Rebrandly integration, url parameter settings
334
  New Image Posts, Imgur, Animated Gifs and Emojis
335
 
336
  == Upgrade Notice ==
 
 
337
  = 6.9.13 =
338
  Optimize Social Media Metrics & Usability Optimization
339
  = 6.9.12 =
4
  Tags: auto post, auto publish, social media scheduling, social media calendar, social media automation, social media share, auto-publish, scheduling, social media post, social url share, social network share, share tweet, share links, share this, share text posts, share images, share video links, social tools, admin, api, auto share to, autopost, auto-Posting, auto-schedule, auto-schedule social media posts, automatic social sharing plugin, blog marketing, blog2social, blogger, buffer, crossposting, cross-promotion, cross-promoting, bloglovin, bloglovin auto post, facebook, facebook auto post, facebook pages, google auto post, instagram business, instagram auto post, jetpack, jetpack sharing, linkedin, linkedin auto post, medium, medium auto post, multiposting, pinterest, re-post, scheduling plugin, social media, social media auto publish, social media button, social media manager, social media plugin, social media publishing, social media scheduling tool, social media sharing, social media tool, social network auto publish, social network icon, social network widget, socialmedia, timing, torial, torial auto post, tumblr, twitter, twitter auto post, xing, xing auto post, xing groups, xing gruppen, xing personal profiles, xing company profiles, xing business pages, xing pages, xing seiten,instagram business, auto post scheduler, repost, social media management, facebook fan page auto post, facebook profile auto post, social auto post, social autoposting, flickr, flickr auto posting, linkedin, linkedin auto posting, linkedin profile, facebook group, facebook gruppen, reddit, reddit auto posting, reddit auto post, social media calendar, editorial calendar, calendar plugin, Social Media Automatisierung, Social Media Management, Kalender, Planungs Kalender, Social Media Kalender, Content Marketing, Revive, Revive posts, Revive old posts, old posts, Reshare, Re-Share, automatically re-post, automatically reshare, auto repost, auto republish, recycle posts, bulk schedule, Google My Business, Google posts, imgur, vk, vkontakte, Vkontakte.ru, vk.com. Telegram, Telegram channels, Telegram groups, share multiple images, image gallery, blogger.com, ravelry, instapaper, Social Media Metrics, Twitter Threads
5
  Donate link: https://paypal.me/adenion
6
  Requires at least: 4.7.0
7
+ Tested up to: 6.1
8
+ Stable tag: 6.9.14
9
  License: GPLv3
10
  License URI: http://www.gnu.org/licenses/gpl-2.0.html
11
 
234
  7. Keep track of your shared posts and scheduling plan with the Social Media Calendar.
235
 
236
  == Changelog ==
237
+ = 6.9.14 =
238
+ Optimize Auto-Poster & Re-Poster
239
  = 6.9.13 =
240
  Optimize Social Media Metrics & Usability Optimization
241
  = 6.9.12 =
336
  New Image Posts, Imgur, Animated Gifs and Emojis
337
 
338
  == Upgrade Notice ==
339
+ = 6.9.14 =
340
+ Optimize Auto-Poster & Re-Poster
341
  = 6.9.13 =
342
  Optimize Social Media Metrics & Usability Optimization
343
  = 6.9.12 =