File "AutoPost.php"
Full Path: /www/wwwroot/shphe-en.com/wp-content/plugins/blog2social/includes/B2S/AutoPost.php
File size: 19.69 KB
MIME-type: --
Charset: utf-8
<?php
class B2S_AutoPost {
private $title;
private $contentHtml;
private $postId;
private $content;
private $excerpt;
private $url;
private $imageUrl;
private $keywords;
private $blogPostData = array();
private $myTimeSettings = array();
private $current_user_date;
private $setPreFillText;
private $optionPostFormat;
private $allowHashTag;
private $userVersion;
function __construct($postId = 0, $blogPostData = array(), $current_user_date = '0000-00-00 00:00:00', $myTimeSettings = false, $title = '', $content = '', $excerpt = '', $url = '', $imageUrl = '', $keywords = '', $b2sPostLang = 'en', $optionPostFormat = array(), $allowHashTag = true, $userVersion=0) {
$this->postId = $postId;
$this->blogPostData = $blogPostData;
$this->current_user_date = $current_user_date;
$this->myTimeSettings = $myTimeSettings;
$this->title = $title;
$this->content = B2S_Util::prepareContent($postId, $content, $url, false, true, $b2sPostLang);
$this->excerpt = B2S_Util::prepareContent($postId, $excerpt, $url, false, true, $b2sPostLang);
$this->contentHtml = B2S_Util::prepareContent($postId, $content, $url, '<p><h1><h2><br><i><b><a><img>', true, $b2sPostLang);
$this->url = $url;
$this->userVersion = defined("B2S_PLUGIN_USER_VERSION") ? B2S_PLUGIN_USER_VERSION : (int) $userVersion;
$this->imageUrl = $imageUrl;
$this->keywords = $keywords;
$this->optionPostFormat = $optionPostFormat;
$this->allowHashTag = $allowHashTag;
$this->setPreFillText = array(0 => array(6 => 300, 8 => 239, 9 => 200, 10 => 442, 16 => 250, 17 => 442, 18 => 800, 21 => 65000), 1 => array(8 => 1200, 10 => 442, 17 => 442, 19 => 239), 2 => array(8 => 239, 10 => 442, 17 => 442, 19 => 239), 20 => 300);
$this->setPreFillTextLimit = array(0 => array(6 => 400, 8 => 400, 9 => 200, 10 => 500, 18 => 1000, 20 => 400, 16 => false, 21 => 65535), 1 => array(8 => 1200, 10 => 500, 19 => 400), 2 => array(8 => 400, 10 => 500, 19 => 9000));
}
public function prepareShareData($networkAuthId = 0, $networkId = 0, $networkType = 0) {
if ((int) $networkId > 0 && (int) $networkAuthId > 0) {
$postData = array('content' => '', 'custom_title' => '', 'tags' => array(), 'network_auth_id' => (int) $networkAuthId);
if ((int)$this->userVersion < 1 || $this->optionPostFormat == false || !isset($this->optionPostFormat[$networkId][$networkType])) {
$this->optionPostFormat = unserialize(B2S_PLUGIN_NETWORK_SETTINGS_TEMPLATE_DEFAULT);
}
//PostFormat
if (in_array($networkId, array(1, 2, 3, 12, 19))) {
//Get: client settings
if (isset($this->optionPostFormat[$networkId][$networkType]['format']) && ((int) $this->optionPostFormat[$networkId][$networkType]['format'] === 0 || (int) $this->optionPostFormat[$networkId][$networkType]['format'] === 1)) {
$postData['post_format'] = (int) $this->optionPostFormat[$networkId][$networkType]['format'];
} else {
//Set: default settings
$defaultPostFormat = unserialize(B2S_PLUGIN_NETWORK_SETTINGS_TEMPLATE_DEFAULT);
$postData['post_format'] = isset($defaultPostFormat[$networkId][$networkType]['format']) ? (int) $defaultPostFormat[$networkId][$networkType]['format'] : 0;
}
}
//Special
if (in_array($networkId, array(1, 2, 3, 12, 19))) {
if ($networkId == 12 && $this->imageUrl == false) {
return false;
}
$postData['content'] = $this->optionPostFormat[$networkId][$networkType]['content'];
$preContent = addcslashes(B2S_Util::getExcerpt($this->content, (int) $this->optionPostFormat[$networkId][$networkType]['short_text']['range_min'], (int) $this->optionPostFormat[$networkId][$networkType]['short_text']['range_max']),"\\$");
$postData['content'] = preg_replace("/\{CONTENT\}/", $preContent, $postData['content']);
$title = sanitize_text_field($this->title);
$postData['content'] = preg_replace("/\{TITLE\}/", addcslashes($title,"\\$"), $postData['content']);
$defaultSchema = unserialize(B2S_PLUGIN_NETWORK_SETTINGS_TEMPLATE_DEFAULT);
if (!isset($this->optionPostFormat[$networkId][$networkType]['short_text']['excerpt_range_max'])) {
$this->optionPostFormat[$networkId][$networkType]['short_text']['excerpt_range_max'] = $defaultSchema[$networkId][$networkType]['short_text']['excerpt_range_max'];
}
if (!isset($this->optionPostFormat[$networkId][$networkType]['short_text']['excerpt_range_min'])) {
$this->optionPostFormat[$networkId][$networkType]['short_text']['excerpt_range_min'] = $defaultSchema[$networkId][$networkType]['short_text']['excerpt_range_min'];
}
$excerpt = (isset($this->excerpt) && !empty($this->excerpt)) ? addcslashes(B2S_Util::getExcerpt($this->excerpt, (int) $this->optionPostFormat[$networkId][$networkType]['short_text']['excerpt_range_min'], (int) $this->optionPostFormat[$networkId][$networkType]['short_text']['excerpt_range_max']),"\\$") : '';
$postData['content'] = preg_replace("/\{EXCERPT\}/", $excerpt, $postData['content']);
$hashtagcount = substr_count($postData['content'], '#');
if (strpos($postData['content'], "{KEYWORDS}") !== false) {
$hashtags = $this->getHashTagsString("", (($networkId == 12) ? 30-$hashtagcount : -1));
$postData['content'] = preg_replace("/\{KEYWORDS\}/", addcslashes($hashtags,"\\$"), $postData['content']);
} else if ($this->allowHashTag) {
$add = ($networkId != 2) ? "\n\n" : "";
$hashtags = $this->getHashTagsString($add, (($networkId == 12) ? 30-$hashtagcount : -1));
$postData['content'] .= " " . $hashtags;
}
$authorId = get_post_field('post_author', $this->postId);
if (isset($authorId) && !empty($authorId) && (int) $authorId > 0) {
$hook_filter = new B2S_Hook_Filter();
$author_name = $hook_filter->get_wp_user_post_author_display_name((int) $authorId);
$postData['content'] = stripslashes(preg_replace("/\{AUTHOR\}/", addcslashes($author_name, "\\$"), $postData['content']));
} else {
$postData['content'] = preg_replace("/\{AUTHOR\}/", "", $postData['content']);
}
}
if ($networkId == 4) {
$postData['custom_title'] = strip_tags($this->title);
$postData['content'] = $this->contentHtml;
if ($this->allowHashTag) {
if (is_array($this->keywords) && !empty($this->keywords)) {
foreach ($this->keywords as $tag) {
$postData['tags'][] = str_replace(" ", "", $tag->name);
}
}
}
}
if ($networkId == 6 || $networkId == 20) {
if ($this->imageUrl !== false) {
$postData['content'] = (isset($this->setPreFillText[$networkType][$networkId])) ? B2S_Util::getExcerpt($this->content, (int) $this->setPreFillText[$networkType][$networkId], (int) $this->setPreFillTextLimit[$networkType][$networkId]) : $this->content;
if ($this->allowHashTag) {
$postData['content'] .= $this->getHashTagsString();
}
} else {
return false;
}
}
if ($networkId == 7) {
if ($this->imageUrl !== false) {
$postData['custom_title'] = strip_tags($this->title);
} else {
return false;
}
}
if ($networkId == 8) {
$postData['content'] = (isset($this->setPreFillText[$networkType][$networkId])) ? B2S_Util::getExcerpt($this->content, (int) $this->setPreFillText[$networkType][$networkId], (int) $this->setPreFillTextLimit[$networkType][$networkId]) : $this->content;
$postData['custom_title'] = strip_tags($this->title);
}
if ($networkId == 9 || $networkId == 16) {
$postData['custom_title'] = $this->title;
$postData['content'] = (isset($this->setPreFillText[$networkType][$networkId])) ? B2S_Util::getExcerpt($this->content, (int) $this->setPreFillText[$networkType][$networkId], (int) $this->setPreFillTextLimit[$networkType][$networkId]) : $this->content;
if ($this->allowHashTag) {
if (is_array($this->keywords) && !empty($this->keywords)) {
foreach ($this->keywords as $tag) {
$postData['tags'][] = str_replace(" ", "", $tag->name);
}
}
}
}
if ($networkId == 10 || $networkId == 17 || $networkId == 18) {
$postData['content'] = (isset($this->setPreFillText[$networkType][$networkId])) ? B2S_Util::getExcerpt($this->content, (int) $this->setPreFillText[$networkType][$networkId], (isset($this->setPreFillTextLimit[$networkType][$networkId]) ? (int) $this->setPreFillTextLimit[$networkType][$networkId] : false)) : $this->content;
if ($this->allowHashTag) {
$postData['content'] .= $this->getHashTagsString();
}
}
if ($networkId == 11 || $networkId == 14) {
$postData['custom_title'] = strip_tags($this->title);
$postData['content'] = $this->contentHtml;
}
if ($networkId == 11) {
if ($this->allowHashTag) {
if (is_array($this->keywords) && !empty($this->keywords)) {
foreach ($this->keywords as $tag) {
$postData['tags'][] = str_replace(" ", "", $tag->name);
}
}
}
}
if ($networkId == 13 || $networkId == 15) {
$postData['content'] = strip_tags($this->title);
}
if ($networkId == 21) {
if ($this->imageUrl !== false) {
$postData['content'] = (isset($this->setPreFillText[$networkType][$networkId])) ? B2S_Util::getExcerpt($this->content, (int) $this->setPreFillText[$networkType][$networkId], (isset($this->setPreFillTextLimit[$networkType][$networkId]) ? (int) $this->setPreFillTextLimit[$networkType][$networkId] : false)) : $this->content;
$postData['custom_title'] = strip_tags($this->title);
if ($this->allowHashTag) {
if (is_array($this->keywords) && !empty($this->keywords)) {
foreach ($this->keywords as $tag) {
$postData['tags'][] = str_replace(" ", "", $tag->name);
}
}
}
} else {
return false;
}
}
return $postData;
}
return false;
}
private function getHashTagsString($add = "\n\n", $limit = -1) {// limit = -1 => no limit
if($limit != 0){
$hashTags = '';
if (is_array($this->keywords) && !empty($this->keywords)) {
foreach ($this->keywords as $tag) {
$hashTags .= ' #' . str_replace(array(" ", "-", '"', "'", "!", "?", ",", ".", ";", ":"), "", $tag->name);
}
}
if($limit > 0) {
$pos = 0;
$temp_str = $hashTags;
for($i = 0; $i <= $limit; $i++){
$pos = strpos($temp_str, '#');
$temp_str = substr($temp_str, $pos+1);
}
if($pos !== false){
$pos = strpos($hashTags, $temp_str);
$hashTags = substr($hashTags, 0, $pos-1);
}
}
return (!empty($hashTags) ? (!empty($add) ? $add . $hashTags : $hashTags) : '');
} else {
return '';
}
}
public function saveShareData($shareData = array(), $network_id = 0, $network_type = 0, $network_auth_id = 0, $shareApprove = 0, $network_display_name = '') {
if(isset($shareData['image_url']) && !empty($shareData['image_url'])){
$image_data = wp_check_filetype($shareData['image_url']);
if(isset($image_data['ext']) && $image_data['ext'] == 'gif' && in_array($network_id, unserialize(B2S_PLUGIN_NETWORK_NOT_ALLOW_GIF))){
$shareData['image_url'] = '';
}
}
$sched_type = $this->blogPostData['sched_type'];
$sched_date = $this->blogPostData['sched_date'];
$sched_date_utc = $this->blogPostData['sched_date_utc'];
//Scheduling post once with user times
if ($sched_type == 2 && $this->myTimeSettings !== false && is_array($this->myTimeSettings) && isset($this->myTimeSettings['times']) && is_array($this->myTimeSettings['times']) && isset($this->myTimeSettings['type'])) {
//V 5.1.0 Seeding
//0=default(best time), 1= special per account (seeding), 2= per network (old)
//Check My Time Setting in Past
//new
if ($this->myTimeSettings['type'] == 1) {
if (isset($this->myTimeSettings['times']['delay_day'][$network_auth_id]) && isset($this->myTimeSettings['times']['time'][$network_auth_id]) && !empty($this->myTimeSettings['times']['time'][$network_auth_id])) {
$tempSchedDate = date('Y-m-d', strtotime($sched_date));
$networkSchedDate = date('Y-m-d H:i:00', strtotime($tempSchedDate . ' ' . $this->myTimeSettings['times']['time'][$network_auth_id]));
if ($this->myTimeSettings['times']['delay_day'][$network_auth_id] > 0) {
$sched_date = date('Y-m-d H:i:s', strtotime('+' . $this->myTimeSettings['times']['delay_day'][$network_auth_id] . ' days', strtotime($networkSchedDate)));
$sched_date_utc = date('Y-m-d H:i:s', strtotime(B2S_Util::getUTCForDate($sched_date, $this->blogPostData['user_timezone'] * (-1))));
} else {
if ($networkSchedDate >= $sched_date) {
//Scheduling
$sched_date = $networkSchedDate;
$sched_date_utc = date('Y-m-d H:i:s', strtotime(B2S_Util::getUTCForDate($sched_date, $this->blogPostData['user_timezone'] * (-1))));
} else {
//Scheduling on next Day by Past
$sched_date = date('Y-m-d H:i:s', strtotime('+1 days', strtotime($networkSchedDate)));
$sched_date_utc = date('Y-m-d H:i:s', strtotime(B2S_Util::getUTCForDate($sched_date, $this->blogPostData['user_timezone'] * (-1))));
}
}
}
//old or default (best time)
} else {
foreach ($this->myTimeSettings['times'] as $k => $v) {
if ($v->network_id == $network_id && $v->network_type == $network_type) {
if (isset($v->sched_time) && !empty($v->sched_time)) {
$tempSchedDate = date('Y-m-d', strtotime($sched_date));
$networkSchedDate = date('Y-m-d H:i:00', strtotime($tempSchedDate . ' ' . $v->sched_time));
if ($networkSchedDate >= $sched_date) {
//Scheduling
$sched_date = $networkSchedDate;
$sched_date_utc = date('Y-m-d H:i:s', strtotime(B2S_Util::getUTCForDate($sched_date, $this->blogPostData['user_timezone'] * (-1))));
} else {
//Scheduling on next Day by Past
$sched_date = date('Y-m-d H:i:s', strtotime('+1 days', strtotime($networkSchedDate)));
$sched_date_utc = date('Y-m-d H:i:s', strtotime(B2S_Util::getUTCForDate($sched_date, $this->blogPostData['user_timezone'] * (-1))));
}
}
}
}
}
}
global $wpdb;
$networkDetailsId = 0;
$schedDetailsId = 0;
$networkDetailsIdSelect = $wpdb->get_col($wpdb->prepare("SELECT postNetworkDetails.id FROM {$wpdb->prefix}b2s_posts_network_details AS postNetworkDetails WHERE postNetworkDetails.network_auth_id = %s", $network_auth_id));
if (isset($networkDetailsIdSelect[0])) {
$networkDetailsId = (int) $networkDetailsIdSelect[0];
} else {
$wpdb->insert($wpdb->prefix.'b2s_posts_network_details', array(
'network_id' => (int) $network_id,
'network_type' => (int) $network_type,
'network_auth_id' => (int) $network_auth_id,
'network_display_name' => $network_display_name), array('%d', '%d', '%d', '%s'));
$networkDetailsId = $wpdb->insert_id;
}
if ($networkDetailsId > 0) {
//DeprecatedNetwork-8 31 march
if ($network_id == 8 && $sched_date_utc >= '2019-03-30 23:59:59') {
$wpdb->insert($wpdb->prefix.'b2s_posts', array(
'post_id' => $this->postId,
'blog_user_id' => $this->blogPostData['blog_user_id'],
'user_timezone' => $this->blogPostData['user_timezone'],
'publish_date' => date('Y-m-d H:i:s', strtotime(B2S_Util::getUTCForDate(gmdate('Y-m-d H:i:s'), $this->blogPostData['user_timezone'] * (-1)))),
'publish_error_code' => 'DEPRECATED_NETWORK_8',
'network_details_id' => $networkDetailsId), array('%d', '%d', '%s', '%s', '%s', '%d'));
} else {
$wpdb->insert($wpdb->prefix.'b2s_posts_sched_details', array('sched_data' => serialize($shareData), 'image_url' => (isset($shareData['image_url']) ? $shareData['image_url'] : '')), array('%s', '%s'));
$schedDetailsId = $wpdb->insert_id;
$wpdb->insert($wpdb->prefix.'b2s_posts', array(
'post_id' => $this->postId,
'blog_user_id' => $this->blogPostData['blog_user_id'],
'user_timezone' => $this->blogPostData['user_timezone'],
'publish_date' => (($sched_type == 3) ? $sched_date : "0000-00-00 00:00:00"),
'sched_details_id' => $schedDetailsId,
'sched_type' => $sched_type,
'sched_date' => $sched_date,
'sched_date_utc' => $sched_date_utc,
'network_details_id' => $networkDetailsId,
'post_for_approve' => (int) $shareApprove,
'hook_action' => (((int) $shareApprove == 0) ? 1 : 0)), array('%d', '%d', '%s', '%s', '%d', '%d', '%s', '%s', '%d', '%d', '%d'));
B2S_Rating::trigger();
}
}
}
}